From mboxrd@z Thu Jan 1 00:00:00 1970 From: Icenowy Zheng Subject: Re: [PATCH 3/8] pinctrl: sunxi: Add A64 R_PIO controller support Date: Tue, 14 Feb 2017 00:57:16 +0800 Message-ID: <20170213195735.vTIuMNfQ@smtp3h.mail.yandex.net> Reply-To: icenowy-ymACFijhrKM@public.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: base64 Return-path: Sender: linux-sunxi-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org List-Post: , List-Help: , List-Archive: , List-Unsubscribe: , To: Chen-Yu Tsai Cc: linux-arm-kernel , linux-sunxi , " linux-gpio-u79uwXL29TY76Z2rM5mHXA@public.gmane.org" , Rob Herring , linux-kernel , Linus Walleij , devicetree , Maxime Ripard , Catalin Marinas , Will Deacon List-Id: linux-gpio@vger.kernel.org CjIwMTflubQy5pyIMTPml6UgMjM6MDnkuo4gQ2hlbi1ZdSBUc2FpIDx3ZW5zQGNzaWUub3JnPuWG memBk++8mgo+Cj4gT24gV2VkLCBGZWIgOCwgMjAxNyBhdCA2OjAwIFBNLCBJY2Vub3d5IFpoZW5n IDxpY2Vub3d5QGFvc2MueHl6PiB3cm90ZTogCj4gPiBUaGUgQTY0IGhhcyBhIFJfUElPIHBpbiBj b250cm9sbGVyLCBzaW1pbGFyIHRvIHRoZSBvbmUgZm91bmQgb24gdGhlIEgzIFNvQy4gCj4gPiBB ZGQgc3VwcG9ydCBmb3IgdGhlIHBpbnMgY29udHJvbGxlZCBieSB0aGUgUl9QSU8gY29udHJvbGxl ci4gCj4gPiAKPiA+IFNpZ25lZC1vZmYtYnk6IEljZW5vd3kgWmhlbmcgPGljZW5vd3lAYW9zYy54 eXo+IAo+ID4gLS0tIAo+ID7CoCBkcml2ZXJzL3BpbmN0cmwvc3VueGkvS2NvbmZpZ8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqDCoCA1ICsgCj4gPsKgIGRyaXZlcnMvcGluY3RybC9z dW54aS9NYWtlZmlsZcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqAgMSArIAo+ID7C oCBkcml2ZXJzL3BpbmN0cmwvc3VueGkvcGluY3RybC1zdW41MGktYTY0LXIuYyB8IDE0MyArKysr KysrKysrKysrKysrKysrKysrKysrKysgCj4gPsKgIDMgZmlsZXMgY2hhbmdlZCwgMTQ5IGluc2Vy dGlvbnMoKykgCj4gPsKgIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL3BpbmN0cmwvc3VueGkv cGluY3RybC1zdW41MGktYTY0LXIuYyAKPiA+IAo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGlu Y3RybC9zdW54aS9LY29uZmlnIGIvZHJpdmVycy9waW5jdHJsL3N1bnhpL0tjb25maWcgCj4gPiBp bmRleCA5MmQ4NDU4Mjc1NzcuLmRmNTA4OTg0MWM2ZSAxMDA2NDQgCj4gPiAtLS0gYS9kcml2ZXJz L3BpbmN0cmwvc3VueGkvS2NvbmZpZyAKPiA+ICsrKyBiL2RyaXZlcnMvcGluY3RybC9zdW54aS9L Y29uZmlnIAo+ID4gQEAgLTcyLDYgKzcyLDExIEBAIGNvbmZpZyBQSU5DVFJMX1NVTjUwSV9BNjQg Cj4gPsKgwqDCoMKgwqDCoMKgwqAgYm9vbCAKPiA+wqDCoMKgwqDCoMKgwqDCoCBzZWxlY3QgUElO Q1RSTF9TVU5YSSAKPiA+IAo+ID4gK2NvbmZpZyBQSU5DVFJMX1NVTjUwSV9BNjRfUiAKPiA+ICvC oMKgwqDCoMKgwqAgYm9vbCAKPiA+ICvCoMKgwqDCoMKgwqAgZGVwZW5kcyBvbiBSRVNFVF9DT05U Uk9MTEVSIAo+ID4gK8KgwqDCoMKgwqDCoCBzZWxlY3QgUElOQ1RSTF9TVU5YSSAKPiA+ICsgCj4g PsKgIGNvbmZpZyBQSU5DVFJMX1NVTjUwSV9INSAKPiA+wqDCoMKgwqDCoMKgwqDCoCBib29sIAo+ ID7CoMKgwqDCoMKgwqDCoMKgIHNlbGVjdCBQSU5DVFJMX1NVTlhJIAo+ID4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvcGluY3RybC9zdW54aS9NYWtlZmlsZSBiL2RyaXZlcnMvcGluY3RybC9zdW54aS9N YWtlZmlsZSAKPiA+IGluZGV4IGY5YTM4NTVjNDJmMS4uY2U5NTYyNThjYzM5IDEwMDY0NCAKPiA+ IC0tLSBhL2RyaXZlcnMvcGluY3RybC9zdW54aS9NYWtlZmlsZSAKPiA+ICsrKyBiL2RyaXZlcnMv cGluY3RybC9zdW54aS9NYWtlZmlsZSAKPiA+IEBAIC0xMiw2ICsxMiw3IEBAIG9iai0kKENPTkZJ R19QSU5DVFJMX1NVTjhJX0EyMynCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICs9IHBpbmN0 cmwtc3VuOGktYTIzLm8gCj4gPsKgIG9iai0kKENPTkZJR19QSU5DVFJMX1NVTjhJX0EyM19SKcKg wqDCoMKgwqAgKz0gcGluY3RybC1zdW44aS1hMjMtci5vIAo+ID7CoCBvYmotJChDT05GSUdfUElO Q1RSTF9TVU44SV9BMzMpwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICs9IHBpbmN0cmwt c3VuOGktYTMzLm8gCj4gPsKgIG9iai0kKENPTkZJR19QSU5DVFJMX1NVTjUwSV9BNjQpwqDCoMKg wqDCoMKgICs9IHBpbmN0cmwtc3VuNTBpLWE2NC5vIAo+ID4gK29iai0kKENPTkZJR19QSU5DVFJM X1NVTjUwSV9BNjRfUinCoMKgwqDCoCArPSBwaW5jdHJsLXN1bjUwaS1hNjQtci5vIAo+ID7CoCBv YmotJChDT05GSUdfUElOQ1RSTF9TVU44SV9BODNUKcKgwqDCoMKgwqDCoCArPSBwaW5jdHJsLXN1 bjhpLWE4M3QubyAKPiA+wqAgb2JqLSQoQ09ORklHX1BJTkNUUkxfU1VOOElfSDMpwqDCoMKgwqDC oMKgwqDCoCArPSBwaW5jdHJsLXN1bjhpLWgzLm8gCj4gPsKgIG9iai0kKENPTkZJR19QSU5DVFJM X1NVTjhJX0gzX1IpwqDCoMKgwqDCoMKgICs9IHBpbmN0cmwtc3VuOGktaDMtci5vIAo+ID4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvcGluY3RybC9zdW54aS9waW5jdHJsLXN1bjUwaS1hNjQtci5jIGIv ZHJpdmVycy9waW5jdHJsL3N1bnhpL3BpbmN0cmwtc3VuNTBpLWE2NC1yLmMgCj4gPiBuZXcgZmls ZSBtb2RlIDEwMDY0NCAKPiA+IGluZGV4IDAwMDAwMDAwMDAwMC4uOTA5OTZhNjM2ODliIAo+ID4g LS0tIC9kZXYvbnVsbCAKPiA+ICsrKyBiL2RyaXZlcnMvcGluY3RybC9zdW54aS9waW5jdHJsLXN1 bjUwaS1hNjQtci5jIAo+ID4gQEAgLTAsMCArMSwxNDMgQEAgCj4gPiArLyogCj4gPiArICogQWxs d2lubmVyIEE2NCBTb0NzIHNwZWNpYWwgcGlucyBwaW5jdHJsIGRyaXZlci4gCj4gPiArICogCj4g PiArICogQmFzZWQgb24gcGluY3RybC1zdW44aS1hMjMtci5jIAo+ID4gKyAqIAo+ID4gKyAqIENv cHlyaWdodCAoQykgMjAxNiBJY2Vub3d5IFpoZW5nIAo+ID4gKyAqIEljZW5vd3kgWmhlbmcgPGlj ZW5vd3lAYW9zYy54eXo+IAo+ID4gKyAqIAo+ID4gKyAqIENvcHlyaWdodCAoQykgMjAxNCBDaGVu LVl1IFRzYWkgCj4gPiArICogQ2hlbi1ZdSBUc2FpIDx3ZW5zQGNzaWUub3JnPiAKPiA+ICsgKiAK PiA+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQm9yaXMgQnJlemlsbG9uIAo+ID4gKyAqIEJvcmlz IEJyZXppbGxvbiA8Ym9yaXMuYnJlemlsbG9uQGZyZWUtZWxlY3Ryb25zLmNvbT4gCj4gPiArICog Cj4gPiArICogQ29weXJpZ2h0IChDKSAyMDE0IE1heGltZSBSaXBhcmQgCj4gPiArICogTWF4aW1l IFJpcGFyZCA8bWF4aW1lLnJpcGFyZEBmcmVlLWVsZWN0cm9ucy5jb20+IAo+ID4gKyAqIAo+ID4g KyAqIFRoaXMgZmlsZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyAKPiA+ICsgKiBMaWNlbnNlIHZlcnNpb24gMi7CoCBUaGlzIHByb2dyYW0gaXMg bGljZW5zZWQgImFzIGlzIiB3aXRob3V0IGFueSAKPiA+ICsgKiB3YXJyYW50eSBvZiBhbnkga2lu ZCwgd2hldGhlciBleHByZXNzIG9yIGltcGxpZWQuIAo+ID4gKyAqLyAKPiA+ICsgCj4gPiArI2lu Y2x1ZGUgPGxpbnV4L29mLmg+IAo+ID4gKyNpbmNsdWRlIDxsaW51eC9vZl9kZXZpY2UuaD4gCj4g PiArI2luY2x1ZGUgPGxpbnV4L3BpbmN0cmwvcGluY3RybC5oPiAKPiA+ICsjaW5jbHVkZSA8bGlu dXgvcGxhdGZvcm1fZGV2aWNlLmg+IAo+ID4gKyNpbmNsdWRlIDxsaW51eC9yZXNldC5oPiAKPiA+ ICsgCj4gPiArI2luY2x1ZGUgInBpbmN0cmwtc3VueGkuaCIgCj4gPiArIAo+ID4gK3N0YXRpYyBj b25zdCBzdHJ1Y3Qgc3VueGlfZGVzY19waW4gc3VuNTBpX2E2NF9yX3BpbnNbXSA9IHsgCj4gPiAr wqDCoMKgwqDCoMKgIFNVTlhJX1BJTihTVU5YSV9QSU5DVFJMX1BJTihMLCAwKSwgCj4gPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgU1VOWElfRlVOQ1RJT04oMHgwLCAiZ3Bpb19p biIpLCAKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBTVU5YSV9GVU5DVElP TigweDEsICJncGlvX291dCIpLCAKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBTVU5YSV9GVU5DVElPTigweDIsICJzX3JzYiIpLMKgwqDCoMKgwqDCoMKgwqAgLyogU0NLICov IAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFNVTlhJX0ZVTkNUSU9OKDB4 MywgInNfaTJjIikswqDCoMKgwqDCoMKgwqDCoCAvKiBTQ0sgKi8gCj4gPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgU1VOWElfRlVOQ1RJT05fSVJRX0JBTksoMHg2LCAwLCAwKSks wqAgLyogUExfRUlOVDAgKi8gCj4gPiArwqDCoMKgwqDCoMKgIFNVTlhJX1BJTihTVU5YSV9QSU5D VFJMX1BJTihMLCAxKSwgCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgU1VO WElfRlVOQ1RJT04oMHgwLCAiZ3Bpb19pbiIpLCAKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBTVU5YSV9GVU5DVElPTigweDEsICJncGlvX291dCIpLCAKPiA+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBTVU5YSV9GVU5DVElPTigweDIsICJzX3JzYiIpLMKg wqDCoMKgwqDCoMKgwqAgLyogU0RBICovIAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIFNVTlhJX0ZVTkNUSU9OKDB4MywgInNfaTJjIikswqDCoMKgwqDCoMKgwqDCoCAvKiBT REEgKi8gCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgU1VOWElfRlVOQ1RJ T05fSVJRX0JBTksoMHg2LCAwLCAxKSkswqAgLyogUExfRUlOVDEgKi8gCj4gPiArwqDCoMKgwqDC oMKgIFNVTlhJX1BJTihTVU5YSV9QSU5DVFJMX1BJTihMLCAyKSwgCj4gPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgU1VOWElfRlVOQ1RJT04oMHgwLCAiZ3Bpb19pbiIpLCAKPiA+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBTVU5YSV9GVU5DVElPTigweDEsICJn cGlvX291dCIpLCAKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBTVU5YSV9G VU5DVElPTigweDIsICJzX3VhcnQiKSzCoMKgwqDCoMKgwqDCoCAvKiBUWCAqLyAKPiA+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBTVU5YSV9GVU5DVElPTl9JUlFfQkFOSygweDYs IDAsIDIpKSzCoCAvKiBQTF9FSU5UMiAqLyAKPiA+ICvCoMKgwqDCoMKgwqAgU1VOWElfUElOKFNV TlhJX1BJTkNUUkxfUElOKEwsIDMpLCAKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBTVU5YSV9GVU5DVElPTigweDAsICJncGlvX2luIiksIAo+ID4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIFNVTlhJX0ZVTkNUSU9OKDB4MSwgImdwaW9fb3V0IiksIAo+ID4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFNVTlhJX0ZVTkNUSU9OKDB4MiwgInNf dWFydCIpLMKgwqDCoMKgwqDCoMKgIC8qIFJYICovIAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIFNVTlhJX0ZVTkNUSU9OX0lSUV9CQU5LKDB4NiwgMCwgMykpLMKgIC8qIFBM X0VJTlQzICovIAo+ID4gK8KgwqDCoMKgwqDCoCBTVU5YSV9QSU4oU1VOWElfUElOQ1RSTF9QSU4o TCwgNCksIAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFNVTlhJX0ZVTkNU SU9OKDB4MCwgImdwaW9faW4iKSwgCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgU1VOWElfRlVOQ1RJT04oMHgxLCAiZ3Bpb19vdXQiKSwgCj4gPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgU1VOWElfRlVOQ1RJT04oMHgzLCAic19qdGFnIikswqDCoMKgwqDC oMKgwqAgLyogTVMgKi8gCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgU1VO WElfRlVOQ1RJT05fSVJRX0JBTksoMHg2LCAwLCA0KSkswqAgLyogUExfRUlOVDQgKi8gCj4gPiAr wqDCoMKgwqDCoMKgIFNVTlhJX1BJTihTVU5YSV9QSU5DVFJMX1BJTihMLCA1KSwgCj4gPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgU1VOWElfRlVOQ1RJT04oMHgwLCAiZ3Bpb19p biIpLCAKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBTVU5YSV9GVU5DVElP TigweDEsICJncGlvX291dCIpLCAKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBTVU5YSV9GVU5DVElPTigweDMsICJzX2p0YWciKSzCoMKgwqDCoMKgwqDCoCAvKiBDSyAqLyAK PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBTVU5YSV9GVU5DVElPTl9JUlFf QkFOSygweDYsIDAsIDUpKSzCoCAvKiBQTF9FSU5UNSAqLyAKPiA+ICvCoMKgwqDCoMKgwqAgU1VO WElfUElOKFNVTlhJX1BJTkNUUkxfUElOKEwsIDYpLCAKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBTVU5YSV9GVU5DVElPTigweDAsICJncGlvX2luIiksIAo+ID4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFNVTlhJX0ZVTkNUSU9OKDB4MSwgImdwaW9fb3V0 IiksIAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFNVTlhJX0ZVTkNUSU9O KDB4MywgInNfanRhZyIpLMKgwqDCoMKgwqDCoMKgIC8qIERPICovIAo+ID4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIFNVTlhJX0ZVTkNUSU9OX0lSUV9CQU5LKDB4NiwgMCwgNikp LMKgIC8qIFBMX0VJTlQ2ICovIAo+ID4gK8KgwqDCoMKgwqDCoCBTVU5YSV9QSU4oU1VOWElfUElO Q1RSTF9QSU4oTCwgNyksIAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFNV TlhJX0ZVTkNUSU9OKDB4MCwgImdwaW9faW4iKSwgCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgU1VOWElfRlVOQ1RJT04oMHgxLCAiZ3Bpb19vdXQiKSwgCj4gPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgU1VOWElfRlVOQ1RJT04oMHgzLCAic19qdGFnIiks wqDCoMKgwqDCoMKgwqAgLyogREkgKi8gCj4KPiBUaGUgZnVuY3Rpb24gSUQgZm9yIEpUQUcgb24g cGlucyBQTDQgfiBQTDcgc2hvdWxkIGJlIDB4Miwgbm90IDB4My4gCj4KPiBPdGhlcndpc2UsIAo+ Cj4gQWNrZWQtYnk6IENoZW4tWXUgVHNhaSA8d2Vuc0Bjc2llLm9yZz4gCj4KClRoYW5rcyEKCkxp bnVzLCBzaG91bGQgSSByZXNlbmQgb25lIG5ldyB2ZXJzaW9uIGFzIHNvb24gYXMgcG9zc2libGU/ Cgo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFNVTlhJX0ZVTkNUSU9OX0lS UV9CQU5LKDB4NiwgMCwgNykpLMKgIC8qIFBMX0VJTlQ3ICovIAo+ID4gK8KgwqDCoMKgwqDCoCBT VU5YSV9QSU4oU1VOWElfUElOQ1RSTF9QSU4oTCwgOCksIAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIFNVTlhJX0ZVTkNUSU9OKDB4MCwgImdwaW9faW4iKSwgCj4gPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgU1VOWElfRlVOQ1RJT04oMHgxLCAiZ3Bpb19v dXQiKSwgCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgU1VOWElfRlVOQ1RJ T04oMHgyLCAic19pMmMiKSzCoMKgwqDCoMKgwqDCoMKgIC8qIFNDSyAqLyAKPiA+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBTVU5YSV9GVU5DVElPTl9JUlFfQkFOSygweDYsIDAs IDgpKSzCoCAvKiBQTF9FSU5UOCAqLyAKPiA+ICvCoMKgwqDCoMKgwqAgU1VOWElfUElOKFNVTlhJ X1BJTkNUUkxfUElOKEwsIDkpLCAKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBTVU5YSV9GVU5DVElPTigweDAsICJncGlvX2luIiksIAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIFNVTlhJX0ZVTkNUSU9OKDB4MSwgImdwaW9fb3V0IiksIAo+ID4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFNVTlhJX0ZVTkNUSU9OKDB4MiwgInNfaTJj IikswqDCoMKgwqDCoMKgwqDCoCAvKiBTREEgKi8gCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgU1VOWElfRlVOQ1RJT05fSVJRX0JBTksoMHg2LCAwLCA5KSkswqAgLyogUExf RUlOVDkgKi8gCj4gPiArwqDCoMKgwqDCoMKgIFNVTlhJX1BJTihTVU5YSV9QSU5DVFJMX1BJTihM LCAxMCksIAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFNVTlhJX0ZVTkNU SU9OKDB4MCwgImdwaW9faW4iKSwgCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgU1VOWElfRlVOQ1RJT04oMHgxLCAiZ3Bpb19vdXQiKSwgCj4gPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgU1VOWElfRlVOQ1RJT04oMHgyLCAic19wd20iKSwgCj4gPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgU1VOWElfRlVOQ1RJT05fSVJRX0JBTksoMHg2 LCAwLCAxMCkpLCAvKiBQTF9FSU5UMTAgKi8gCj4gPiArwqDCoMKgwqDCoMKgIFNVTlhJX1BJTihT VU5YSV9QSU5DVFJMX1BJTihMLCAxMSksIAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIFNVTlhJX0ZVTkNUSU9OKDB4MCwgImdwaW9faW4iKSwgCj4gPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgU1VOWElfRlVOQ1RJT04oMHgxLCAiZ3Bpb19vdXQiKSwgCj4g PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgU1VOWElfRlVOQ1RJT04oMHgyLCAi c19jaXJfcngiKSwgCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgU1VOWElf RlVOQ1RJT05fSVJRX0JBTksoMHg2LCAwLCAxMSkpLCAvKiBQTF9FSU5UMTEgKi8gCj4gPiArwqDC oMKgwqDCoMKgIFNVTlhJX1BJTihTVU5YSV9QSU5DVFJMX1BJTihMLCAxMiksIAo+ID4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFNVTlhJX0ZVTkNUSU9OKDB4MCwgImdwaW9faW4i KSwgCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgU1VOWElfRlVOQ1RJT04o MHgxLCAiZ3Bpb19vdXQiKSwgCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg U1VOWElfRlVOQ1RJT05fSVJRX0JBTksoMHg2LCAwLCAxMikpLCAvKiBQTF9FSU5UMTIgKi8gCj4g PiArfTsgCj4gPiArIAo+ID4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgc3VueGlfcGluY3RybF9kZXNj IHN1bjUwaV9hNjRfcl9waW5jdHJsX2RhdGEgPSB7IAo+ID4gK8KgwqDCoMKgwqDCoCAucGlucyA9 IHN1bjUwaV9hNjRfcl9waW5zLCAKPiA+ICvCoMKgwqDCoMKgwqAgLm5waW5zID0gQVJSQVlfU0la RShzdW41MGlfYTY0X3JfcGlucyksIAo+ID4gK8KgwqDCoMKgwqDCoCAucGluX2Jhc2UgPSBQTF9C QVNFLCAKPiA+ICvCoMKgwqDCoMKgwqAgLmlycV9iYW5rcyA9IDEsIAo+ID4gK307IAo+ID4gKyAK PiA+ICtzdGF0aWMgaW50IHN1bjUwaV9hNjRfcl9waW5jdHJsX3Byb2JlKHN0cnVjdCBwbGF0Zm9y bV9kZXZpY2UgKnBkZXYpIAo+ID4gK3sgCj4gPiArwqDCoMKgwqDCoMKgIHN0cnVjdCByZXNldF9j b250cm9sICpyc3RjOyAKPiA+ICvCoMKgwqDCoMKgwqAgaW50IHJldDsgCj4gPiArIAo+ID4gK8Kg wqDCoMKgwqDCoCByc3RjID0gZGV2bV9yZXNldF9jb250cm9sX2dldCgmcGRldi0+ZGV2LCBOVUxM KTsgCj4gPiArwqDCoMKgwqDCoMKgIGlmIChJU19FUlIocnN0YykpIHsgCj4gPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBkZXZfZXJyKCZwZGV2LT5kZXYsICJSZXNldCBjb250cm9sbGVy IG1pc3NpbmdcbiIpOyAKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiBQ VFJfRVJSKHJzdGMpOyAKPiA+ICvCoMKgwqDCoMKgwqAgfSAKPiA+ICsgCj4gPiArwqDCoMKgwqDC oMKgIHJldCA9IHJlc2V0X2NvbnRyb2xfZGVhc3NlcnQocnN0Yyk7IAo+ID4gK8KgwqDCoMKgwqDC oCBpZiAocmV0KSAKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiByZXQ7 IAo+ID4gKyAKPiA+ICvCoMKgwqDCoMKgwqAgcmV0ID0gc3VueGlfcGluY3RybF9pbml0KHBkZXYs IAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgICZzdW41MGlfYTY0X3JfcGluY3RybF9kYXRhKTsgCj4gPiArIAo+ID4gK8Kg wqDCoMKgwqDCoCBpZiAocmV0KSAKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJl c2V0X2NvbnRyb2xfYXNzZXJ0KHJzdGMpOyAKPiA+ICsgCj4gPiArwqDCoMKgwqDCoMKgIHJldHVy biByZXQ7IAo+ID4gK30gCj4gPiArIAo+ID4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNl X2lkIHN1bjUwaV9hNjRfcl9waW5jdHJsX21hdGNoW10gPSB7IAo+ID4gK8KgwqDCoMKgwqDCoCB7 IC5jb21wYXRpYmxlID0gImFsbHdpbm5lcixzdW41MGktYTY0LXItcGluY3RybCIsIH0sIAo+ID4g K8KgwqDCoMKgwqDCoCB7fSAKPiA+ICt9OyAKPiA+ICsgCj4gPiArc3RhdGljIHN0cnVjdCBwbGF0 Zm9ybV9kcml2ZXIgc3VuNTBpX2E2NF9yX3BpbmN0cmxfZHJpdmVyID0geyAKPiA+ICvCoMKgwqDC oMKgwqAgLnByb2JlwqAgPSBzdW41MGlfYTY0X3JfcGluY3RybF9wcm9iZSwgCj4gPiArwqDCoMKg wqDCoMKgIC5kcml2ZXIgPSB7IAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLm5h bWXCoMKgwqDCoMKgwqDCoMKgwqDCoCA9ICJzdW41MGktYTY0LXItcGluY3RybCIsIAo+ID4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLm9mX21hdGNoX3RhYmxlID0gc3VuNTBpX2E2NF9y X3BpbmN0cmxfbWF0Y2gsIAo+ID4gK8KgwqDCoMKgwqDCoCB9LCAKPiA+ICt9OyAKPiA+ICtidWls dGluX3BsYXRmb3JtX2RyaXZlcihzdW41MGlfYTY0X3JfcGluY3RybF9kcml2ZXIpOyAKPiA+IC0t IAo+ID4gMi4xMS4wIAo+ID4gCj4gPiAtLSAKPiA+IFlvdSByZWNlaXZlZCB0aGlzIG1lc3NhZ2Ug YmVjYXVzZSB5b3UgYXJlIHN1YnNjcmliZWQgdG8gdGhlIEdvb2dsZSBHcm91cHMgImxpbnV4LXN1 bnhpIiBncm91cC4gCj4gPiBUbyB1bnN1YnNjcmliZSBmcm9tIHRoaXMgZ3JvdXAgYW5kIHN0b3Ag cmVjZWl2aW5nIGVtYWlscyBmcm9tIGl0LCBzZW5kIGFuIGVtYWlsIHRvIGxpbnV4LXN1bnhpK3Vu c3Vic2NyaWJlQGdvb2dsZWdyb3Vwcy5jb20uIAo+ID4gRm9yIG1vcmUgb3B0aW9ucywgdmlzaXQg aHR0cHM6Ly9ncm91cHMuZ29vZ2xlLmNvbS9kL29wdG91dC4gCg0KLS0gCllvdSByZWNlaXZlZCB0 aGlzIG1lc3NhZ2UgYmVjYXVzZSB5b3UgYXJlIHN1YnNjcmliZWQgdG8gdGhlIEdvb2dsZSBHcm91 cHMgImxpbnV4LXN1bnhpIiBncm91cC4KVG8gdW5zdWJzY3JpYmUgZnJvbSB0aGlzIGdyb3VwIGFu ZCBzdG9wIHJlY2VpdmluZyBlbWFpbHMgZnJvbSBpdCwgc2VuZCBhbiBlbWFpbCB0byBsaW51eC1z dW54aSt1bnN1YnNjcmliZUBnb29nbGVncm91cHMuY29tLgpGb3IgbW9yZSBvcHRpb25zLCB2aXNp dCBodHRwczovL2dyb3Vwcy5nb29nbGUuY29tL2Qvb3B0b3V0Lgo=