From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chanwoo Choi Subject: Re: [v13.1 PATCH 2/5] phy: Add USB Type-C PHY driver for rk3399 Date: Tue, 23 Aug 2016 14:44:54 +0900 Message-ID: <57BBE2D6.8050102@samsung.com> References: <1471928576-12941-1-git-send-email-zyw@rock-chips.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-reply-to: <1471928576-12941-1-git-send-email-zyw-TNX95d0MmH7DzftRWevZcw@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Linux-rockchip" Errors-To: linux-rockchip-bounces+glpar-linux-rockchip=m.gmane.org-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org To: Chris Zhong , groeck-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org, =?UTF-8?B?SGVpa28=?= =?UTF-8?B?IFN0w7xibmVy?= , kishon-l0cyMroinI0@public.gmane.org Cc: dianders-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org, yzq-TNX95d0MmH7DzftRWevZcw@public.gmane.org, briannorris-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org, linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, tfiga-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org, kever.yang-TNX95d0MmH7DzftRWevZcw@public.gmane.org, linux-rockchip-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org, "cpgs (cpgs-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org)" , wulf-TNX95d0MmH7DzftRWevZcw@public.gmane.org, groeck-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org, marcheu-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org List-Id: linux-rockchip.vger.kernel.org SGkgQ2hyaXMsCgpUaGUgbmFtZSBvZiAnU3VwZXJTcGVlZCcgcHJvcGVydHkgaXMgY2hhbmdlZApm cm9tIEVYVENPTl9QUk9QX1VTQl9TVVBFUlNQRUVEIHRvIEVYVENPTl9QUk9QX1VTQl9TUy4KClRo ZSBuYW1lIGNoYW5nZSB3YXMgZGlzY3Vzc2VkIG9uIG1haWwgdGhyZWFkWzFdLgoKQWxzbywgdGhp cyBkcml2ZXIgZGVwZW5kIG9uIHRoZSBleHRjb24gZ2l0IHJlcG9zaXRvcnkuClNvLCBJIGNyZWF0 ZWQgdGhlIGltbXV0YWJsZSBicmFuY2goaWItZXh0Y29uLXBoeS00LjkpWzJdIGZvciBwaHkgZnJh bWV3b3JrCnRvIHByZXZlbnQgdGhlIGJ1aWxkIGVycm9yIGJlZm9yZSBtZXJnaW5nIHRoZSBMaW51 cyBnaXQgcmVwb3NpdG9yeS4KClsxXSBodHRwczovL2xrbWwub3JnL2xrbWwvMjAxNi84LzE3LzYy MgpbMl0gZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L2NoYW53 b28vZXh0Y29uLmdpdCBpYi1leHRjb24tcGh5LTQuOQoKUmVnYXJkcywKQ2hhbndvbyBDaG9pCgpP biAyMDE264WEIDA47JuUIDIz7J28IDE0OjAyLCBDaHJpcyBaaG9uZyB3cm90ZToKPiBBZGQgYSBQ SFkgcHJvdmlkZXIgZHJpdmVyIGZvciB0aGUgcmszMzk5IFNvQyBUeXBlLWMgUEhZLiBUaGUgVVNC Cj4gVHlwZS1DIFBIWSBpcyBkZXNpZ25lZCB0byBzdXBwb3J0IHRoZSBVU0IzIGFuZCBEUCBhcHBs aWNhdGlvbnMuCj4gVGhlIFVTQjMgb3BlcmF0ZXMgaW4gU3VwZXJTcGVlZCBtb2RlIGFuZCB0aGUg RFAgY2FuIG9wZXJhdGUgYXQgUkJSLAo+IEhCUiBhbmQgSEJSMiBkYXRhIHJhdGVzLiBUaGlzIGRy aXZlciBjcmVhdGUgMiBQSFkgZGV2aWNlcyBzZXBhcmF0ZWx5Cj4gZm9yIFVTQjMgYW5kIERpc3Bs eVBvcnQsIGFuZCByZWdpc3RlcnMgdGhlbSB1bmRlciB0aGUgY2hpbGQgbm9kZS4KPiAKPiBTaWdu ZWQtb2ZmLWJ5OiBDaHJpcyBaaG9uZyA8enl3QHJvY2stY2hpcHMuY29tPgo+IFNpZ25lZC1vZmYt Ynk6IEtldmVyIFlhbmcgPGtldmVyLnlhbmdAcm9jay1jaGlwcy5jb20+Cj4gUmV2aWV3ZWQtYnk6 IEd1ZW50ZXIgUm9lY2sgPGdyb2Vja0BjaHJvbWl1bS5vcmc+Cj4gVGVzdGVkLWJ5OiBHdWVudGVy IFJvZWNrIDxncm9lY2tAY2hyb21pdW0ub3JnPgo+IAo+IC0tLQo+IAo+IENoYW5nZXMgaW4gdjEz LjE6Cj4gLSBhZGQgc29tZSBkZXNjcmlwdGlvbiBpbiBmcm9udCBvZiBkcml2ZXIKPiAtIGNoYW5n ZSBuYW1lIG9mIHVzYiB0byB1c2IzCj4gLSBhZGQgYSBVU0IzIFJYIHJlZ2lzdGVyIGNvbmZpZ3Vy YXRpb24KPiAKPiBDaGFuZ2VzIGluIHYxMzoKPiAtIGRvIG5vdCByZXR1cm4gZXJyIGlmIG5vdGhp bmcgY29ubmVjdGVkIHdpdGggVHlwZS1DLCB3aGVuIHVzYiBwaHkgcG93ZXIgb24sCj4gICBzaW5j ZSB0aGUgVVNCIGNvcmUgZHJpdmVyIHdpbGwgY2FsbCBwaHkgcG93ZXIgd2l0aG91dCBVU0IzIGRl dmljZSBjb25uZWN0ZWQuCj4gCj4gQ2hhbmdlcyBpbiB2MTI6Cj4gLSBlbmFibGUgRFArVVNCMyBt b2RlLCBvbmx5IHdoZW4gRVhUQ09OX1BST1BfVVNCX1NVUEVSU1BFRUQgZXF1YWwgMQo+ICAgYW5k IERQIGlzIGF0dGFjaGVkCj4gCj4gQ2hhbmdlcyBpbiB2MTE6Cj4gLSBtYWtlIGEgY2xlYXJlciBk ZW1hcmNhdGlvbiBiZXR3ZWVuIHVzYiBwaHkgYW5kIGRwIHBoeS4KPiAKPiBDaGFuZ2VzIGluIHYx MDoKPiAtIGRvIG5vdCBjb250cm9sIGRwIHNlbGVjdCBhbmQgaHBkIGNvbmZpZyBpbiBwaHkgZHJp dmVyCj4gCj4gQ2hhbmdlcyBpbiB2OToKPiAtIHRoZSBuZXdfbW9kZSBzaG91bGQgYmUgaW50IG5v dCB1OAo+IC0gbW92ZSBtdXRleF9sb2NrKCZ0Y3BoeS0+bG9jayk7IHRvIGVhcmxpZXIgcGxhY2Uu IGluCj4gICByb2NrY2hpcF91c2IzX3BoeV9wb3dlcl9vZmYKPiAtIGJldHRlciBtdXRleCBsb2Nr IGZvciBwaHkgbW9kZSBhbmQgZmxpcAo+IC0gc3BsaXQgdGhlIFR5cGUtQyBQSFkgaW50byB0d28g UEhZczogVVNCMyBhbmQgRFAKPiAKPiBDaGFuZ2VzIGluIHY4Ogo+IC0gc2V0IHRoZSBkZWZhdWx0 IGNhYmxlIGlkIHRvIEVYVENPTl9VU0JfSE9TVAo+IC0gb3B0aW1pemF0aW9uIEVycm9yIGxvZwo+ IAo+IENoYW5nZXMgaW4gdjc6Cj4gLSBzdXBwb3J0IG5ldyBBUEkgb2YgZXh0Y29uCj4gCj4gQ2hh bmdlcyBpbiB2NjoKPiAtIGRlbGV0ZSB0aGUgc3VwcG9ydCBvZiBQSU5fQVNTSUdOX0EvQgo+IC0g c2V0IHRoZSBkZWZhdWx0IG1vZGUgdG8gTU9ERV9ERlBfVVNCCj4gLSBkaXNhYmxlIERQIFBMTCBh dCBVU0IzIG9ubHkgbW9kZQo+IAo+IENoYW5nZXMgaW4gdjU6Cj4gLSBzdXBwb3J0IGdldCBwcm9w ZXJ0eSBmcm9tIGV4dGNvbgo+IC0gcmVtb3ZlIFBJTiBBU1NJR04gQS9CIHN1cHBvcnQKPiAKPiBD aGFuZ2VzIGluIHY0Ogo+IC0gc2VsZWN0IEVYVENPTgo+IC0gdXNlIHBoeSBmcmFtZXdvcmsgdG8g Y29udHJvbCB0aGUgVVNCMyBhbmQgRFAgZnVuY3Rpb24KPiAtIHJlbmFtZSBQSU5fTUFQXyB0byBQ SU5fQVNTSUdOXwo+IAo+IENoYW5nZXMgaW4gdjM6Cj4gLSByZW1vdmUgdGhlIHBoeSBmcmFtZXdv cmsoS2lzaG9uIFZpamF5IEFicmFoYW0gSSkKPiAtIGFkZCBwYXJlbnRoZXNlcyBhcm91bmQgdGhl IG1hY3JvCj4gLSB1c2UgYSBzaW5nbGUgc3BhY2UgYmV0d2VlbiB0eXBlIGFuZCBuYW1lCj4gLSBh ZGQgc3BhY2VzIGFmdGVyIG9wZW5pbmcgYW5kIGJlZm9yZSBjbG9zaW5nIGJyYWNlcy4KPiAtIHVz ZSB1MTYgZm9yIHJlZ2lzdGVyIHZhbHVlCj4gLSByZW1vdmUgdHlwZS1jIHBoeSBoZWFkZXIgZmls ZQo+IC0gQ29kaW5nU3R5bGUgb3B0aW1pemF0aW9uCj4gLSB1c2Ugc29tZSBjYWJsZSBleHRjb24g dG8gZ2V0IHR5cGUtYyBwb3J0IGluZm9ybWF0aW9uCj4gLSBhZGQgYSBleHRjb24gdG8gbm90aWZ5 IERpc3BsYXkgUG9ydAo+IAo+IENoYW5nZXMgaW4gdjI6Cj4gLSBzZWxlY3QgUkVTRVRfQ09OVFJP TExFUgo+IC0gYWxwaGFiZXRpYyBvcmRlcgo+IC0gbW9kaWZ5IHNvbWUgc3BlbGxpbmcgbWlzdGFr ZXMKPiAtIG1ha2UgbW9kZSBjbGVhbmVyCj4gLSB1c2UgYm9vbCBmb3IgZW5hYmxlL2Rpc2FibGUK PiAtIGNoZWNrIGFsbCBvZiB0aGUgcmV0dXJuIHZhbHVlCj4gLSByZXR1cm4gYSBiZXR0ZXIgZXJy IG51bWJlcgo+IC0gdXNlIG1vcmUgcmVhZHhfcG9sbF90aW1lb3V0KCkKPiAtIGNsa19kaXNhYmxl X3VucHJlcGFyZSh0Y3BoeS0+Y2xrX3JlZik7Cj4gLSByZW1vdmUgdW51c2UgZnVuY3Rpb25zLCBy b2NrY2hpcF90eXBlY19waHlfcG93ZXJfb24vb2ZmCj4gLSByZW1vdmUgdW5uZWNlc3NhcnkgdHlw ZWNhc3QgZnJvbSB2b2lkICoKPiAtIHVzZSBkdHMgbm9kZSB0byBkaXN0aW5ndWlzaCBiZXR3ZWVu IHBoeXMuCj4gCj4gQ2hhbmdlcyBpbiB2MToKPiAtIHVwZGF0ZSB0aGUgbGljZW5jZSBub3RlCj4g LSBpbml0IGNvcmUgY2xvY2sgdG8gNTBNSHoKPiAtIHVzZSBleHRjb24gQVBJCj4gLSByZW1vdmUg dW51c2VkIGdsb2JhbAo+IC0gYWRkIHNvbWUgY29tbWVudHMgZm9yIG1hZ2ljIG51bQo+IC0gY2hh bmdlIHVzbGVlcF9yYW5nZSgxMDAwLCAyMDAwKSB0b3VzbGVlcF9yYW5nZSgxMDAwLCAxMDUwKQo+ IC0gcmVtb3ZlIF9fZnVuY19fIGZyb20gZGV2X2Vycgo+IC0gcmV0dXJuIGVyciBudW1iZXIgd2hl biBnZXQgY2xrIGZhaWxlZAo+IC0gcmVtb3ZlIEFERFJfQURKIGRlZmluZQo+IC0gdXNlIGRldm1f Y2xrX2dldCgmcGRldi0+ZGV2LCAidGNwZGNvcmUiKQo+IAo+ICBkcml2ZXJzL3BoeS9LY29uZmln ICAgICAgICAgICAgICB8ICAgIDkgKwo+ICBkcml2ZXJzL3BoeS9NYWtlZmlsZSAgICAgICAgICAg ICB8ICAgIDEgKwo+ICBkcml2ZXJzL3BoeS9waHktcm9ja2NoaXAtdHlwZWMuYyB8IDEwMTMgKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiAgMyBmaWxlcyBjaGFuZ2VkLCAx MDIzIGluc2VydGlvbnMoKykKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvcGh5L3BoeS1y b2NrY2hpcC10eXBlYy5jCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGh5L0tjb25maWcgYi9k cml2ZXJzL3BoeS9LY29uZmlnCj4gaW5kZXggNDJmM2UzMC4uYzc3NWZkNyAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL3BoeS9LY29uZmlnCj4gKysrIGIvZHJpdmVycy9waHkvS2NvbmZpZwo+IEBAIC0z NDgsNiArMzQ4LDE1IEBAIGNvbmZpZyBQSFlfUk9DS0NISVBfUENJRQo+ICAJaGVscAo+ICAJICBF bmFibGUgdGhpcyB0byBzdXBwb3J0IHRoZSBSb2NrY2hpcCBQQ0llIFBIWS4KPiAgCj4gK2NvbmZp ZyBQSFlfUk9DS0NISVBfVFlQRUMKPiArCXRyaXN0YXRlICJSb2NrY2hpcCBUWVBFQyBQSFkgRHJp dmVyIgo+ICsJZGVwZW5kcyBvbiBPRiAmJiAoQVJDSF9ST0NLQ0hJUCB8fCBDT01QSUxFX1RFU1Qp Cj4gKwlzZWxlY3QgRVhUQ09OCj4gKwlzZWxlY3QgR0VORVJJQ19QSFkKPiArCXNlbGVjdCBSRVNF VF9DT05UUk9MTEVSCj4gKwloZWxwCj4gKwkgIEVuYWJsZSB0aGlzIHRvIHN1cHBvcnQgdGhlIFJv Y2tjaGlwIFVTQiBUWVBFQyBQSFkuCj4gKwo+ICBjb25maWcgUEhZX1NUX1NQRUFSMTMxMF9NSVBI WQo+ICAJdHJpc3RhdGUgIlNUIFNQRUFSMTMxMC1NSVBIWSBkcml2ZXIiCj4gIAlzZWxlY3QgR0VO RVJJQ19QSFkKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9waHkvTWFrZWZpbGUgYi9kcml2ZXJzL3Bo eS9NYWtlZmlsZQo+IGluZGV4IGZiYjkxZTcuLjVkNThiNjMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9waHkvTWFrZWZpbGUKPiArKysgYi9kcml2ZXJzL3BoeS9NYWtlZmlsZQo+IEBAIC0zOSw2ICsz OSw3IEBAIG9iai0kKENPTkZJR19QSFlfUk9DS0NISVBfSU5OT19VU0IyKQkrPSBwaHktcm9ja2No aXAtaW5uby11c2IyLm8KPiAgb2JqLSQoQ09ORklHX1BIWV9ST0NLQ0hJUF9FTU1DKSArPSBwaHkt cm9ja2NoaXAtZW1tYy5vCj4gIG9iai0kKENPTkZJR19QSFlfUk9DS0NISVBfUENJRSkgKz0gcGh5 LXJvY2tjaGlwLXBjaWUubwo+ICBvYmotJChDT05GSUdfUEhZX1JPQ0tDSElQX0RQKQkJKz0gcGh5 LXJvY2tjaGlwLWRwLm8KPiArb2JqLSQoQ09ORklHX1BIWV9ST0NLQ0hJUF9UWVBFQykgKz0gcGh5 LXJvY2tjaGlwLXR5cGVjLm8KPiAgb2JqLSQoQ09ORklHX1BIWV9RQ09NX0lQUTgwNlhfU0FUQSkJ Kz0gcGh5LXFjb20taXBxODA2eC1zYXRhLm8KPiAgb2JqLSQoQ09ORklHX1BIWV9TVF9TUEVBUjEz MTBfTUlQSFkpCSs9IHBoeS1zcGVhcjEzMTAtbWlwaHkubwo+ICBvYmotJChDT05GSUdfUEhZX1NU X1NQRUFSMTM0MF9NSVBIWSkJKz0gcGh5LXNwZWFyMTM0MC1taXBoeS5vCj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvcGh5L3BoeS1yb2NrY2hpcC10eXBlYy5jIGIvZHJpdmVycy9waHkvcGh5LXJvY2tj aGlwLXR5cGVjLmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLmZmZjFi MjcKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZHJpdmVycy9waHkvcGh5LXJvY2tjaGlwLXR5cGVj LmMKPiBAQCAtMCwwICsxLDEwMTMgQEAKPiArLyoKPiArICogQ29weXJpZ2h0IChDKSBGdXpob3Ug Um9ja2NoaXAgRWxlY3Ryb25pY3MgQ28uTHRkCj4gKyAqIEF1dGhvcjogQ2hyaXMgWmhvbmcgPHp5 d0Byb2NrLWNoaXBzLmNvbT4KPiArICogICAgICAgICBLZXZlciBZYW5nIDxrZXZlci55YW5nQHJv Y2stY2hpcHMuY29tPgo+ICsgKgo+ICsgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljCj4gKyAqIExpY2Vuc2UgdmVyc2lv biAyLCBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgYW5kCj4g KyAqIG1heSBiZSBjb3BpZWQsIGRpc3RyaWJ1dGVkLCBhbmQgbW9kaWZpZWQgdW5kZXIgdGhvc2Ug dGVybXMuCj4gKyAqCj4gKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAo+ICsgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7 IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgo+ICsgKiBNRVJDSEFOVEFCSUxJ VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCj4gKyAqIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCj4gKyAqCj4gKyAqIFRo ZSBST0NLQ0hJUCBUeXBlLUMgUEhZIGhhcyB0d28gUExMIGNsb2Nrcy4gVGhlIGZpcnN0IFBMTCBj bG9jawo+ICsgKiBpcyB1c2VkIGZvciBVU0IzLCB0aGUgc2Vjb25kIFBMTCBjbG9jayBpcyB1c2Vk IGZvciBEUC4gVGhpcyBUeXBlLUMgUEhZIGhhcwo+ICsgKiAzIHdvcmtpbmcgbW9kZXM6IFVTQjMg b25seSBtb2RlLCBEUCBvbmx5IG1vZGUsIGFuZCBVU0IzK0RQIG1vZGUuCj4gKyAqIEF0IFVTQjMg b25seSBtb2RlLCBib3RoIFBMTCBjbG9ja3MgbmVlZCB0byBiZSBpbml0aWFsaXplZCwgdGhpcyBh bGxvd3MgdGhlCj4gKyAqIFBIWSB0byBzd2l0Y2ggbW9kZSBiZXR3ZWVuIFVTQjMgYW5kIFVTQjMr RFAsIHdpdGhvdXQgZGlzY29ubmVjdGluZyB0aGUgVVNCCj4gKyAqIGRldmljZS4KPiArICogSW4g VGhlIERQIG9ubHkgbW9kZSwgb25seSB0aGUgRFAgUExMIG5lZWRzIHRvIGJlIHBvd2VyZWQgb24s IGFuZCB0aGUgNCBsYW5lcwo+ICsgKiBhcmUgYWxsIHVzZWQgZm9yIERQLgo+ICsgKgo+ICsgKiBU aGlzIGRyaXZlciBnZXRzIGV4dGNvbiBjYWJsZSBzdGF0ZSBhbmQgcHJvcGVydHksIHRoZW4gZGVj aWRlcyB3aGljaCBtb2RlIHRvCj4gKyAqIHNlbGVjdDoKPiArICoKPiArICogMS4gVVNCMyBvbmx5 IG1vZGU6Cj4gKyAqICAgIEVYVENPTl9VU0Igb3IgRVhUQ09OX1VTQl9IT1NUIHN0YXRlIGlzIHRy dWUsIGFuZAo+ICsgKiAgICBFWFRDT05fUFJPUF9VU0JfU1VQRVJTUEVFRCBwcm9wZXJ0eSBpcyB0 cnVlLgo+ICsgKiAgICBFWFRDT05fRElTUF9EUCBzdGF0ZSBpcyBmYWxzZS4KPiArICoKPiArICog Mi4gRFAgb25seSBtb2RlOgo+ICsgKiAgICBFWFRDT05fRElTUF9EUCBzdGF0ZSBpcyB0cnVlLCBh bmQKPiArICogICAgRVhUQ09OX1BST1BfVVNCX1NVUEVSU1BFRUQgcHJvcGVydHkgaXMgZmFsc2Uu Cj4gKyAqICAgIElmIEVYVENPTl9VU0JfSE9TVCBzdGF0ZSBpcyB0cnVlLCBpdCBpcyBEUCArIFVT QjIgbW9kZSwgc2luY2UgdGhlIFVTQjIgcGh5Cj4gKyAqICAgIGlzIGEgc2VwYXJhdGUgcGh5LCBz byB0aGlzIGNhc2UgaXMgc3RpbGwgRFAgb25seSBtb2RlLgo+ICsgKgo+ICsgKiAzLiBVU0IzK0RQ IG1vZGU6Cj4gKyAqICAgIEVYVENPTl9VU0JfSE9TVCBhbmQgRVhUQ09OX0RJU1BfRFAgYXJlIGJv dGggdHJ1ZSwgYW5kCj4gKyAqICAgIEVYVENPTl9QUk9QX1VTQl9TVVBFUlNQRUVEIHByb3BlcnR5 IGlzIHRydWUuCj4gKyAqCj4gKyAqIFRoaXMgVHlwZS1DIFBIWSBkcml2ZXIgc3VwcG9ydHMgbm9y bWFsIGFuZCBmbGlwIG9yaWVudGF0aW9uLiBUaGUgb3JpZW50YXRpb24KPiArICogaXMgcmVwb3J0 ZWQgYnkgdGhlIEVYVENPTl9QUk9QX1VTQl9UWVBFQ19QT0xBUklUWSBwcm9wZXJ0eTogdHJ1ZSBp cyBmbGlwCj4gKyAqIG9yaWVudGF0aW9uLCBmYWxzZSBpcyBub3JtYWwgb3JpZW50YXRpb24uCj4g KyAqCj4gKyAqLwo+ICsKPiArI2luY2x1ZGUgPGxpbnV4L2Nsay5oPgo+ICsjaW5jbHVkZSA8bGlu dXgvY2xrLXByb3ZpZGVyLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9kZWxheS5oPgo+ICsjaW5jbHVk ZSA8bGludXgvZXh0Y29uLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9pby5oPgo+ICsjaW5jbHVkZSA8 bGludXgvaW9wb2xsLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KPiArI2luY2x1ZGUg PGxpbnV4L21vZHVsZS5oPgo+ICsjaW5jbHVkZSA8bGludXgvbXV0ZXguaD4KPiArI2luY2x1ZGUg PGxpbnV4L29mLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9vZl9hZGRyZXNzLmg+Cj4gKyNpbmNsdWRl IDxsaW51eC9vZl9wbGF0Zm9ybS5oPgo+ICsjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNl Lmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9yZWdtYXAuaD4KPiArI2luY2x1ZGUgPGxpbnV4L3Jlc2V0 Lmg+Cj4gKwo+ICsjaW5jbHVkZSA8bGludXgvbWZkL3N5c2Nvbi5oPgo+ICsjaW5jbHVkZSA8bGlu dXgvcGh5L3BoeS5oPgo+ICsKPiArI2RlZmluZSBDTU5fU1NNX0JBTkRHQVAJCQkoMHgyMSA8PCAy KQo+ICsjZGVmaW5lIENNTl9TU01fQklBUwkJCSgweDIyIDw8IDIpCj4gKyNkZWZpbmUgQ01OX1BM TFNNMF9QTExFTgkJKDB4MjkgPDwgMikKPiArI2RlZmluZSBDTU5fUExMU00wX1BMTFBSRQkJKDB4 MmEgPDwgMikKPiArI2RlZmluZSBDTU5fUExMU00wX1BMTFZSRUYJCSgweDJiIDw8IDIpCj4gKyNk ZWZpbmUgQ01OX1BMTFNNMF9QTExMT0NLCQkoMHgyYyA8PCAyKQo+ICsjZGVmaW5lIENNTl9QTExT TTFfUExMRU4JCSgweDMxIDw8IDIpCj4gKyNkZWZpbmUgQ01OX1BMTFNNMV9QTExQUkUJCSgweDMy IDw8IDIpCj4gKyNkZWZpbmUgQ01OX1BMTFNNMV9QTExWUkVGCQkoMHgzMyA8PCAyKQo+ICsjZGVm aW5lIENNTl9QTExTTTFfUExMTE9DSwkJKDB4MzQgPDwgMikKPiArI2RlZmluZSBDTU5fUExMU00x X1VTRVJfREVGX0NUUkwJKDB4MzcgPDwgMikKPiArI2RlZmluZSBDTU5fSUNBTF9PVlJECQkJKDB4 YzEgPDwgMikKPiArI2RlZmluZSBDTU5fUExMMF9WQ09DQUxfT1ZSRAkJKDB4ODMgPDwgMikKPiAr I2RlZmluZSBDTU5fUExMMF9WQ09DQUxfSU5JVAkJKDB4ODQgPDwgMikKPiArI2RlZmluZSBDTU5f UExMMF9WQ09DQUxfSVRFUgkJKDB4ODUgPDwgMikKPiArI2RlZmluZSBDTU5fUExMMF9MT0NLX1JF RkNOVF9TVEFSVAkoMHg5MCA8PCAyKQo+ICsjZGVmaW5lIENNTl9QTEwwX0xPQ0tfUExMQ05UX1NU QVJUCSgweDkyIDw8IDIpCj4gKyNkZWZpbmUgQ01OX1BMTDBfTE9DS19QTExDTlRfVEhSCSgweDkz IDw8IDIpCj4gKyNkZWZpbmUgQ01OX1BMTDBfSU5URElWCQkJKDB4OTQgPDwgMikKPiArI2RlZmlu ZSBDTU5fUExMMF9GUkFDRElWCQkoMHg5NSA8PCAyKQo+ICsjZGVmaW5lIENNTl9QTEwwX0hJR0hf VEhSCQkoMHg5NiA8PCAyKQo+ICsjZGVmaW5lIENNTl9QTEwwX0RTTV9ESUFHCQkoMHg5NyA8PCAy KQo+ICsjZGVmaW5lIENNTl9QTEwwX1NTX0NUUkwxCQkoMHg5OCA8PCAyKQo+ICsjZGVmaW5lIENN Tl9QTEwwX1NTX0NUUkwyCQkoMHg5OSA8PCAyKQo+ICsjZGVmaW5lIENNTl9QTEwxX1ZDT0NBTF9T VEFSVAkJKDB4YTEgPDwgMikKPiArI2RlZmluZSBDTU5fUExMMV9WQ09DQUxfT1ZSRAkJKDB4YTMg PDwgMikKPiArI2RlZmluZSBDTU5fUExMMV9WQ09DQUxfSU5JVAkJKDB4YTQgPDwgMikKPiArI2Rl ZmluZSBDTU5fUExMMV9WQ09DQUxfSVRFUgkJKDB4YTUgPDwgMikKPiArI2RlZmluZSBDTU5fUExM MV9MT0NLX1JFRkNOVF9TVEFSVAkoMHhiMCA8PCAyKQo+ICsjZGVmaW5lIENNTl9QTEwxX0xPQ0tf UExMQ05UX1NUQVJUCSgweGIyIDw8IDIpCj4gKyNkZWZpbmUgQ01OX1BMTDFfTE9DS19QTExDTlRf VEhSCSgweGIzIDw8IDIpCj4gKyNkZWZpbmUgQ01OX1BMTDFfSU5URElWCQkJKDB4YjQgPDwgMikK PiArI2RlZmluZSBDTU5fUExMMV9GUkFDRElWCQkoMHhiNSA8PCAyKQo+ICsjZGVmaW5lIENNTl9Q TEwxX0hJR0hfVEhSCQkoMHhiNiA8PCAyKQo+ICsjZGVmaW5lIENNTl9QTEwxX0RTTV9ESUFHCQko MHhiNyA8PCAyKQo+ICsjZGVmaW5lIENNTl9QTEwxX1NTX0NUUkwxCQkoMHhiOCA8PCAyKQo+ICsj ZGVmaW5lIENNTl9QTEwxX1NTX0NUUkwyCQkoMHhiOSA8PCAyKQo+ICsjZGVmaW5lIENNTl9SWENB TF9PVlJECQkJKDB4ZDEgPDwgMikKPiArI2RlZmluZSBDTU5fVFhQVUNBTF9DVFJMCQkoMHhlMCA8 PCAyKQo+ICsjZGVmaW5lIENNTl9UWFBVQ0FMX09WUkQJCSgweGUxIDw8IDIpCj4gKyNkZWZpbmUg Q01OX1RYUERDQUxfT1ZSRAkJKDB4ZjEgPDwgMikKPiArI2RlZmluZSBDTU5fRElBR19QTEwwX0ZC SF9PVlJECQkoMHgxYzAgPDwgMikKPiArI2RlZmluZSBDTU5fRElBR19QTEwwX0ZCTF9PVlJECQko MHgxYzEgPDwgMikKPiArI2RlZmluZSBDTU5fRElBR19QTEwwX09WUkQJCSgweDFjMiA8PCAyKQo+ ICsjZGVmaW5lIENNTl9ESUFHX1BMTDBfVjJJX1RVTkUJCSgweDFjNSA8PCAyKQo+ICsjZGVmaW5l IENNTl9ESUFHX1BMTDBfQ1BfVFVORQkJKDB4MWM2IDw8IDIpCj4gKyNkZWZpbmUgQ01OX0RJQUdf UExMMF9MRl9QUk9HCQkoMHgxYzcgPDwgMikKPiArI2RlZmluZSBDTU5fRElBR19QTEwxX0ZCSF9P VlJECQkoMHgxZDAgPDwgMikKPiArI2RlZmluZSBDTU5fRElBR19QTEwxX0ZCTF9PVlJECQkoMHgx ZDEgPDwgMikKPiArI2RlZmluZSBDTU5fRElBR19QTEwxX09WUkQJCSgweDFkMiA8PCAyKQo+ICsj ZGVmaW5lIENNTl9ESUFHX1BMTDFfVjJJX1RVTkUJCSgweDFkNSA8PCAyKQo+ICsjZGVmaW5lIENN Tl9ESUFHX1BMTDFfQ1BfVFVORQkJKDB4MWQ2IDw8IDIpCj4gKyNkZWZpbmUgQ01OX0RJQUdfUExM MV9MRl9QUk9HCQkoMHgxZDcgPDwgMikKPiArI2RlZmluZSBDTU5fRElBR19QTEwxX1BUQVRJU19U VU5FMQkoMHgxZDggPDwgMikKPiArI2RlZmluZSBDTU5fRElBR19QTEwxX1BUQVRJU19UVU5FMgko MHgxZDkgPDwgMikKPiArI2RlZmluZSBDTU5fRElBR19QTEwxX0lOQ0xLX0NUUkwJKDB4MWRhIDw8 IDIpCj4gKyNkZWZpbmUgQ01OX0RJQUdfSFNDTEtfU0VMCQkoMHgxZTAgPDwgMikKPiArCj4gKyNk ZWZpbmUgWENWUl9QU01fUkNUUkwobikJCSgoMHg0MDAxIHwgKChuKSA8PCA5KSkgPDwgMikKPiAr I2RlZmluZSBYQ1ZSX1BTTV9DQUxfVE1SKG4pCQkoKDB4NDAwMiB8ICgobikgPDwgOSkpIDw8IDIp Cj4gKyNkZWZpbmUgWENWUl9QU01fQTBJTl9UTVIobikJCSgoMHg0MDAzIHwgKChuKSA8PCA5KSkg PDwgMikKPiArI2RlZmluZSBUWF9UWENDX0NBTF9TQ0xSX01VTFQobikJKCgweDQwNDcgfCAoKG4p IDw8IDkpKSA8PCAyKQo+ICsjZGVmaW5lIFRYX1RYQ0NfQ1BPU1RfTVVMVF8wMChuKQkoKDB4NDA0 YyB8ICgobikgPDwgOSkpIDw8IDIpCj4gKyNkZWZpbmUgVFhfVFhDQ19DUE9TVF9NVUxUXzAxKG4p CSgoMHg0MDRkIHwgKChuKSA8PCA5KSkgPDwgMikKPiArI2RlZmluZSBUWF9UWENDX0NQT1NUX01V TFRfMTAobikJKCgweDQwNGUgfCAoKG4pIDw8IDkpKSA8PCAyKQo+ICsjZGVmaW5lIFRYX1RYQ0Nf Q1BPU1RfTVVMVF8xMShuKQkoKDB4NDA0ZiB8ICgobikgPDwgOSkpIDw8IDIpCj4gKyNkZWZpbmUg VFhfVFhDQ19NR05GU19NVUxUXzAwMChuKQkoKDB4NDA1MCB8ICgobikgPDwgOSkpIDw8IDIpCj4g KyNkZWZpbmUgVFhfVFhDQ19NR05GU19NVUxUXzAwMShuKQkoKDB4NDA1MSB8ICgobikgPDwgOSkp IDw8IDIpCj4gKyNkZWZpbmUgVFhfVFhDQ19NR05GU19NVUxUXzAxMChuKQkoKDB4NDA1MiB8ICgo bikgPDwgOSkpIDw8IDIpCj4gKyNkZWZpbmUgVFhfVFhDQ19NR05GU19NVUxUXzAxMShuKQkoKDB4 NDA1MyB8ICgobikgPDwgOSkpIDw8IDIpCj4gKyNkZWZpbmUgVFhfVFhDQ19NR05GU19NVUxUXzEw MChuKQkoKDB4NDA1NCB8ICgobikgPDwgOSkpIDw8IDIpCj4gKyNkZWZpbmUgVFhfVFhDQ19NR05G U19NVUxUXzEwMShuKQkoKDB4NDA1NSB8ICgobikgPDwgOSkpIDw8IDIpCj4gKyNkZWZpbmUgVFhf VFhDQ19NR05GU19NVUxUXzExMChuKQkoKDB4NDA1NiB8ICgobikgPDwgOSkpIDw8IDIpCj4gKyNk ZWZpbmUgVFhfVFhDQ19NR05GU19NVUxUXzExMShuKQkoKDB4NDA1NyB8ICgobikgPDwgOSkpIDw8 IDIpCj4gKyNkZWZpbmUgWENWUl9ESUFHX1BMTERSQ19DVFJMKG4pCSgoMHg0MGUwIHwgKChuKSA8 PCA5KSkgPDwgMikKPiArI2RlZmluZSBYQ1ZSX0RJQUdfQklESV9DVFJMKG4pCQkoKDB4NDBlOCB8 ICgobikgPDwgOSkpIDw8IDIpCj4gKyNkZWZpbmUgWENWUl9ESUFHX0xBTkVfRkNNX0VOX01HTihu KQkoKDB4NDBmMiB8ICgobikgPDwgOSkpIDw8IDIpCj4gKyNkZWZpbmUgVFhfUFNDX0EwKG4pCQkJ KCgweDQxMDAgfCAoKG4pIDw8IDkpKSA8PCAyKQo+ICsjZGVmaW5lIFRYX1BTQ19BMShuKQkJCSgo MHg0MTAxIHwgKChuKSA8PCA5KSkgPDwgMikKPiArI2RlZmluZSBUWF9QU0NfQTIobikJCQkoKDB4 NDEwMiB8ICgobikgPDwgOSkpIDw8IDIpCj4gKyNkZWZpbmUgVFhfUFNDX0EzKG4pCQkJKCgweDQx MDMgfCAoKG4pIDw8IDkpKSA8PCAyKQo+ICsjZGVmaW5lIFRYX1JDVkRFVF9DVFJMKG4pCQkoKDB4 NDEyMCB8ICgobikgPDwgOSkpIDw8IDIpCj4gKyNkZWZpbmUgVFhfUkNWREVUX0VOX1RNUihuKQkJ KCgweDQxMjIgfCAoKG4pIDw8IDkpKSA8PCAyKQo+ICsjZGVmaW5lIFRYX1JDVkRFVF9TVF9UTVIo bikJCSgoMHg0MTIzIHwgKChuKSA8PCA5KSkgPDwgMikKPiArI2RlZmluZSBUWF9ESUFHX1RYX0RS VihuKQkJKCgweDQxZTEgfCAoKG4pIDw8IDkpKSA8PCAyKQo+ICsjZGVmaW5lIFRYX0RJQUdfQkdS RUZfUFJFRFJWX0RFTEFZCSgweDQxZTcgPDwgMikKPiArI2RlZmluZSBUWF9BTkFfQ1RSTF9SRUdf MQkJKDB4NTAyMCA8PCAyKQo+ICsjZGVmaW5lIFRYX0FOQV9DVFJMX1JFR18yCQkoMHg1MDIxIDw8 IDIpCj4gKyNkZWZpbmUgVFhEQV9DT0VGRl9DQUxDX0NUUkwJCSgweDUwMjIgPDwgMikKPiArI2Rl ZmluZSBUWF9ESUdfQ1RSTF9SRUdfMgkJKDB4NTAyNCA8PCAyKQo+ICsjZGVmaW5lIFRYREFfQ1lB X0FVWERBX0NZQQkJKDB4NTAyNSA8PCAyKQo+ICsjZGVmaW5lIFRYX0FOQV9DVFJMX1JFR18zCQko MHg1MDI2IDw8IDIpCj4gKyNkZWZpbmUgVFhfQU5BX0NUUkxfUkVHXzQJCSgweDUwMjcgPDwgMikK PiArI2RlZmluZSBUWF9BTkFfQ1RSTF9SRUdfNQkJKDB4NTAyOSA8PCAyKQo+ICsKPiArI2RlZmlu ZSBSWF9QU0NfQTAobikJCQkoKDB4ODAwMCB8ICgobikgPDwgOSkpIDw8IDIpCj4gKyNkZWZpbmUg UlhfUFNDX0ExKG4pCQkJKCgweDgwMDEgfCAoKG4pIDw8IDkpKSA8PCAyKQo+ICsjZGVmaW5lIFJY X1BTQ19BMihuKQkJCSgoMHg4MDAyIHwgKChuKSA8PCA5KSkgPDwgMikKPiArI2RlZmluZSBSWF9Q U0NfQTMobikJCQkoKDB4ODAwMyB8ICgobikgPDwgOSkpIDw8IDIpCj4gKyNkZWZpbmUgUlhfUFND X0NBTChuKQkJCSgoMHg4MDA2IHwgKChuKSA8PCA5KSkgPDwgMikKPiArI2RlZmluZSBSWF9QU0Nf UkRZKG4pCQkJKCgweDgwMDcgfCAoKG4pIDw8IDkpKSA8PCAyKQo+ICsjZGVmaW5lIFJYX0lRUElf SUxMX0NBTF9PVlJECQkoMHg4MDIzIDw8IDIpCj4gKyNkZWZpbmUgUlhfRVBJX0lMTF9DQUxfT1ZS RAkJKDB4ODAzMyA8PCAyKQo+ICsjZGVmaW5lIFJYX1NEQ0FMMF9PVlJECQkJKDB4ODA0MSA8PCAy KQo+ICsjZGVmaW5lIFJYX1NEQ0FMMV9PVlJECQkJKDB4ODA0OSA8PCAyKQo+ICsjZGVmaW5lIFJY X1NMQ19JTklUCQkJKDB4ODA2ZCA8PCAyKQo+ICsjZGVmaW5lIFJYX1NMQ19SVU4JCQkoMHg4MDZl IDw8IDIpCj4gKyNkZWZpbmUgUlhfQ0RSTEZfQ05GRzIJCQkoMHg4MDgxIDw8IDIpCj4gKyNkZWZp bmUgUlhfU0lHREVUX0hMX0ZJTFRfVE1SKG4pCSgoMHg4MDkwIHwgKChuKSA8PCA5KSkgPDwgMikK PiArI2RlZmluZSBSWF9TTENfSU9QMF9PVlJECQkoMHg4MTAxIDw8IDIpCj4gKyNkZWZpbmUgUlhf U0xDX0lPUDFfT1ZSRAkJKDB4ODEwNSA8PCAyKQo+ICsjZGVmaW5lIFJYX1NMQ19RT1AwX09WUkQJ CSgweDgxMDkgPDwgMikKPiArI2RlZmluZSBSWF9TTENfUU9QMV9PVlJECQkoMHg4MTBkIDw8IDIp Cj4gKyNkZWZpbmUgUlhfU0xDX0VPUDBfT1ZSRAkJKDB4ODExMSA8PCAyKQo+ICsjZGVmaW5lIFJY X1NMQ19FT1AxX09WUkQJCSgweDgxMTUgPDwgMikKPiArI2RlZmluZSBSWF9TTENfSU9OMF9PVlJE CQkoMHg4MTE5IDw8IDIpCj4gKyNkZWZpbmUgUlhfU0xDX0lPTjFfT1ZSRAkJKDB4ODExZCA8PCAy KQo+ICsjZGVmaW5lIFJYX1NMQ19RT04wX09WUkQJCSgweDgxMjEgPDwgMikKPiArI2RlZmluZSBS WF9TTENfUU9OMV9PVlJECQkoMHg4MTI1IDw8IDIpCj4gKyNkZWZpbmUgUlhfU0xDX0VPTjBfT1ZS RAkJKDB4ODEyOSA8PCAyKQo+ICsjZGVmaW5lIFJYX1NMQ19FT04xX09WUkQJCSgweDgxMmQgPDwg MikKPiArI2RlZmluZSBSWF9TTENfSUVQMF9PVlJECQkoMHg4MTMxIDw8IDIpCj4gKyNkZWZpbmUg UlhfU0xDX0lFUDFfT1ZSRAkJKDB4ODEzNSA8PCAyKQo+ICsjZGVmaW5lIFJYX1NMQ19RRVAwX09W UkQJCSgweDgxMzkgPDwgMikKPiArI2RlZmluZSBSWF9TTENfUUVQMV9PVlJECQkoMHg4MTNkIDw8 IDIpCj4gKyNkZWZpbmUgUlhfU0xDX0VFUDBfT1ZSRAkJKDB4ODE0MSA8PCAyKQo+ICsjZGVmaW5l IFJYX1NMQ19FRVAxX09WUkQJCSgweDgxNDUgPDwgMikKPiArI2RlZmluZSBSWF9TTENfSUVOMF9P VlJECQkoMHg4MTQ5IDw8IDIpCj4gKyNkZWZpbmUgUlhfU0xDX0lFTjFfT1ZSRAkJKDB4ODE0ZCA8 PCAyKQo+ICsjZGVmaW5lIFJYX1NMQ19RRU4wX09WUkQJCSgweDgxNTEgPDwgMikKPiArI2RlZmlu ZSBSWF9TTENfUUVOMV9PVlJECQkoMHg4MTU1IDw8IDIpCj4gKyNkZWZpbmUgUlhfU0xDX0VFTjBf T1ZSRAkJKDB4ODE1OSA8PCAyKQo+ICsjZGVmaW5lIFJYX1NMQ19FRU4xX09WUkQJCSgweDgxNWQg PDwgMikKPiArI2RlZmluZSBSWF9SRUVfQ1RSTF9EQVRBX01BU0sobikJKCgweDgxYmIgfCAoKG4p IDw8IDkpKSA8PCAyKQo+ICsjZGVmaW5lIFJYX0RJQUdfU0lHREVUX1RVTkUobikJCSgoMHg4MWRj IHwgKChuKSA8PCA5KSkgPDwgMikKPiArI2RlZmluZSBSWF9ESUFHX1NDMkNfREVMQVkJCSgweDgx ZTEgPDwgMikKPiArCj4gKyNkZWZpbmUgUE1BX0xBTkVfQ0ZHCQkJKDB4YzAwMCA8PCAyKQo+ICsj ZGVmaW5lIFBJUEVfQ01OX0NUUkwxCQkJKDB4YzAwMSA8PCAyKQo+ICsjZGVmaW5lIFBJUEVfQ01O X0NUUkwyCQkJKDB4YzAwMiA8PCAyKQo+ICsjZGVmaW5lIFBJUEVfQ09NX0xPQ0tfQ0ZHMQkJKDB4 YzAwMyA8PCAyKQo+ICsjZGVmaW5lIFBJUEVfQ09NX0xPQ0tfQ0ZHMgkJKDB4YzAwNCA8PCAyKQo+ ICsjZGVmaW5lIFBJUEVfUkNWX0RFVF9JTkgJCSgweGMwMDUgPDwgMikKPiArI2RlZmluZSBEUF9N T0RFX0NUTAkJCSgweGMwMDggPDwgMikKPiArI2RlZmluZSBEUF9DTEtfQ1RMCQkJKDB4YzAwOSA8 PCAyKQo+ICsjZGVmaW5lIFNUUwkJCQkoMHhjMDBGIDw8IDIpCj4gKyNkZWZpbmUgUEhZX0lTT19D TU5fQ1RSTAkJKDB4YzAxMCA8PCAyKQo+ICsjZGVmaW5lIFBIWV9EUF9UWF9DVEwJCQkoMHhjNDA4 IDw8IDIpCj4gKyNkZWZpbmUgUE1BX0NNTl9DVFJMMQkJCSgweGM4MDAgPDwgMikKPiArI2RlZmlu ZSBQSFlfUE1BX0lTT19DTU5fQ1RSTAkJKDB4YzgxMCA8PCAyKQo+ICsjZGVmaW5lIFBIWV9JU09M QVRJT05fQ1RSTAkJKDB4YzgxZiA8PCAyKQo+ICsjZGVmaW5lIFBIWV9QTUFfSVNPX1hDVlJfQ1RS TChuKQkoKDB4Y2MxMSB8ICgobikgPDwgNikpIDw8IDIpCj4gKyNkZWZpbmUgUEhZX1BNQV9JU09f TElOS19NT0RFKG4pCSgoMHhjYzEyIHwgKChuKSA8PCA2KSkgPDwgMikKPiArI2RlZmluZSBQSFlf UE1BX0lTT19QV1JTVF9DVFJMKG4pCSgoMHhjYzEzIHwgKChuKSA8PCA2KSkgPDwgMikKPiArI2Rl ZmluZSBQSFlfUE1BX0lTT19UWF9EQVRBX0xPKG4pCSgoMHhjYzE0IHwgKChuKSA8PCA2KSkgPDwg MikKPiArI2RlZmluZSBQSFlfUE1BX0lTT19UWF9EQVRBX0hJKG4pCSgoMHhjYzE1IHwgKChuKSA8 PCA2KSkgPDwgMikKPiArI2RlZmluZSBQSFlfUE1BX0lTT19SWF9EQVRBX0xPKG4pCSgoMHhjYzE2 IHwgKChuKSA8PCA2KSkgPDwgMikKPiArI2RlZmluZSBQSFlfUE1BX0lTT19SWF9EQVRBX0hJKG4p CSgoMHhjYzE3IHwgKChuKSA8PCA2KSkgPDwgMikKPiArI2RlZmluZSBUWF9CSVNUX0NUUkwobikJ CQkoKDB4NDE0MCB8ICgobikgPDwgOSkpIDw8IDIpCj4gKyNkZWZpbmUgVFhfQklTVF9VRERXUihu KQkJKCgweDQxNDEgfCAoKG4pIDw8IDkpKSA8PCAyKQo+ICsKPiArLyoKPiArICogU2VsZWN0cyB3 aGljaCBQTEwgY2xvY2sgd2lsbCBiZSBkcml2ZW4gb24gdGhlIGFuYWxvZyBoaWdoIHNwZWVkCj4g KyAqIGNsb2NrIDA6IFBMTCAwIGRpdiAxCj4gKyAqIGNsb2NrIDE6IFBMTCAxIGRpdiAyCj4gKyAq Lwo+ICsjZGVmaW5lIENMS19QTExfQ09ORklHCQkJMFgzMAo+ICsjZGVmaW5lIENMS19QTExfTUFT SwkJCTB4MzMKPiArCj4gKyNkZWZpbmUgQ01OX1JFQURZCQkJQklUKDApCj4gKwo+ICsjZGVmaW5l IERQX1BMTF9DTE9DS19FTkFCTEUJCUJJVCgyKQo+ICsjZGVmaW5lIERQX1BMTF9FTkFCTEUJCQlC SVQoMCkKPiArI2RlZmluZSBEUF9QTExfREFUQV9SQVRFX1JCUgkJKCgyIDw8IDEyKSB8ICg0IDw8 IDgpKQo+ICsjZGVmaW5lIERQX1BMTF9EQVRBX1JBVEVfSEJSCQkoKDIgPDwgMTIpIHwgKDQgPDwg OCkpCj4gKyNkZWZpbmUgRFBfUExMX0RBVEFfUkFURV9IQlIyCQkoKDEgPDwgMTIpIHwgKDIgPDwg OCkpCj4gKwo+ICsjZGVmaW5lIERQX01PREVfQTAJCQlCSVQoNCkKPiArI2RlZmluZSBEUF9NT0RF X0EyCQkJQklUKDYpCj4gKyNkZWZpbmUgRFBfTU9ERV9FTlRFUl9BMAkJMHhjMTAxCj4gKyNkZWZp bmUgRFBfTU9ERV9FTlRFUl9BMgkJMHhjMTA0Cj4gKwo+ICsjZGVmaW5lIFBIWV9NT0RFX1NFVF9U SU1FT1VUCQkxMDAwMDAKPiArCj4gKyNkZWZpbmUgUElOX0FTU0lHTl9DX0UJCQkweDUxZDkKPiAr I2RlZmluZSBQSU5fQVNTSUdOX0RfRgkJCTB4NTEwMAo+ICsKPiArI2RlZmluZSBNT0RFX0RJU0NP Tk5FQ1QJCQkwCj4gKyNkZWZpbmUgTU9ERV9VRlBfVVNCCQkJQklUKDApCj4gKyNkZWZpbmUgTU9E RV9ERlBfVVNCCQkJQklUKDEpCj4gKyNkZWZpbmUgTU9ERV9ERlBfRFAJCQlCSVQoMikKPiArCj4g K3N0cnVjdCB1c2IzcGh5X3JlZyB7Cj4gKwl1MzIgb2Zmc2V0Owo+ICsJdTMyIGVuYWJsZV9iaXQ7 Cj4gKwl1MzIgd3JpdGVfZW5hYmxlOwo+ICt9Owo+ICsKPiArc3RydWN0IHJvY2tjaGlwX3VzYjNw aHlfcG9ydF9jZmcgewo+ICsJc3RydWN0IHVzYjNwaHlfcmVnIHR5cGVjX2Nvbm5fZGlyOwo+ICsJ c3RydWN0IHVzYjNwaHlfcmVnIHVzYjN0b3VzYjJfZW47Cj4gKwlzdHJ1Y3QgdXNiM3BoeV9yZWcg ZXh0ZXJuYWxfcHNtOwo+ICsJc3RydWN0IHVzYjNwaHlfcmVnIHBpcGVfc3RhdHVzOwo+ICt9Owo+ ICsKPiArc3RydWN0IHJvY2tjaGlwX3R5cGVjX3BoeSB7Cj4gKwlzdHJ1Y3QgZGV2aWNlICpkZXY7 Cj4gKwl2b2lkIF9faW9tZW0gKmJhc2U7Cj4gKwlzdHJ1Y3QgZXh0Y29uX2RldiAqZXh0Y29uOwo+ ICsJc3RydWN0IHJlZ21hcCAqZ3JmX3JlZ3M7Cj4gKwlzdHJ1Y3QgY2xrICpjbGtfY29yZTsKPiAr CXN0cnVjdCBjbGsgKmNsa19yZWY7Cj4gKwlzdHJ1Y3QgcmVzZXRfY29udHJvbCAqdXBoeV9yc3Q7 Cj4gKwlzdHJ1Y3QgcmVzZXRfY29udHJvbCAqcGlwZV9yc3Q7Cj4gKwlzdHJ1Y3QgcmVzZXRfY29u dHJvbCAqdGNwaHlfcnN0Owo+ICsJc3RydWN0IHJvY2tjaGlwX3VzYjNwaHlfcG9ydF9jZmcgcG9y dF9jZmdzOwo+ICsJLyogbXV0ZXggdG8gcHJvdGVjdCBhY2Nlc3MgdG8gaW5kaXZpZHVhbCBQSFlz ICovCj4gKwlzdHJ1Y3QgbXV0ZXggbG9jazsKPiArCj4gKwlib29sIGZsaXA7Cj4gKwl1OCBtb2Rl Owo+ICt9Owo+ICsKPiArc3RydWN0IHBoeV9yZWcgewo+ICsJdTE2IHZhbHVlOwo+ICsJdTMyIGFk ZHI7Cj4gK307Cj4gKwo+ICtzdHJ1Y3QgcGh5X3JlZyB1c2IzX3BsbF9jZmdbXSA9IHsKPiArCXsg MHhmMCwJCUNNTl9QTEwwX1ZDT0NBTF9JTklUIH0sCj4gKwl7IDB4MTgsCQlDTU5fUExMMF9WQ09D QUxfSVRFUiB9LAo+ICsJeyAweGQwLAkJQ01OX1BMTDBfSU5URElWIH0sCj4gKwl7IDB4NGE0YSwJ Q01OX1BMTDBfRlJBQ0RJViB9LAo+ICsJeyAweDM0LAkJQ01OX1BMTDBfSElHSF9USFIgfSwKPiAr CXsgMHgxZWUsCUNNTl9QTEwwX1NTX0NUUkwxIH0sCj4gKwl7IDB4N2YwMywJQ01OX1BMTDBfU1Nf Q1RSTDIgfSwKPiArCXsgMHgyMCwJCUNNTl9QTEwwX0RTTV9ESUFHIH0sCj4gKwl7IDAsCQlDTU5f RElBR19QTEwwX09WUkQgfSwKPiArCXsgMCwJCUNNTl9ESUFHX1BMTDBfRkJIX09WUkQgfSwKPiAr CXsgMCwJCUNNTl9ESUFHX1BMTDBfRkJMX09WUkQgfSwKPiArCXsgMHg3LAkJQ01OX0RJQUdfUExM MF9WMklfVFVORSB9LAo+ICsJeyAweDQ1LAkJQ01OX0RJQUdfUExMMF9DUF9UVU5FIH0sCj4gKwl7 IDB4OCwJCUNNTl9ESUFHX1BMTDBfTEZfUFJPRyB9LAo+ICt9Owo+ICsKPiArc3RydWN0IHBoeV9y ZWcgZHBfcGxsX2NmZ1tdID0gewo+ICsJeyAweGYwLAkJQ01OX1BMTDFfVkNPQ0FMX0lOSVQgfSwK PiArCXsgMHgxOCwJCUNNTl9QTEwxX1ZDT0NBTF9JVEVSIH0sCj4gKwl7IDB4MzBiOSwJQ01OX1BM TDFfVkNPQ0FMX1NUQVJUIH0sCj4gKwl7IDB4MjFjLAlDTU5fUExMMV9JTlRESVYgfSwKPiArCXsg MCwJCUNNTl9QTEwxX0ZSQUNESVYgfSwKPiArCXsgMHg1LAkJQ01OX1BMTDFfSElHSF9USFIgfSwK PiArCXsgMHgzNSwJCUNNTl9QTEwxX1NTX0NUUkwxIH0sCj4gKwl7IDB4N2YxZSwJQ01OX1BMTDFf U1NfQ1RSTDIgfSwKPiArCXsgMHgyMCwJCUNNTl9QTEwxX0RTTV9ESUFHIH0sCj4gKwl7IDAsCQlD TU5fUExMU00xX1VTRVJfREVGX0NUUkwgfSwKPiArCXsgMCwJCUNNTl9ESUFHX1BMTDFfT1ZSRCB9 LAo+ICsJeyAwLAkJQ01OX0RJQUdfUExMMV9GQkhfT1ZSRCB9LAo+ICsJeyAwLAkJQ01OX0RJQUdf UExMMV9GQkxfT1ZSRCB9LAo+ICsJeyAweDYsCQlDTU5fRElBR19QTEwxX1YySV9UVU5FIH0sCj4g Kwl7IDB4NDUsCQlDTU5fRElBR19QTEwxX0NQX1RVTkUgfSwKPiArCXsgMHg4LAkJQ01OX0RJQUdf UExMMV9MRl9QUk9HIH0sCj4gKwl7IDB4MTAwLAlDTU5fRElBR19QTEwxX1BUQVRJU19UVU5FMSB9 LAo+ICsJeyAweDcsCQlDTU5fRElBR19QTEwxX1BUQVRJU19UVU5FMiB9LAo+ICsJeyAweDQsCQlD TU5fRElBR19QTEwxX0lOQ0xLX0NUUkwgfSwKPiArfTsKPiArCj4gK3N0YXRpYyB2b2lkIHRjcGh5 X2NmZ18yNG0oc3RydWN0IHJvY2tjaGlwX3R5cGVjX3BoeSAqdGNwaHkpCj4gK3sKPiArCXUzMiBp LCByZGF0YTsKPiArCj4gKwkvKgo+ICsJICogY21uX3JlZl9jbGtfc2VsID0gMywgc2VsZWN0IHRo ZSAyNE1oeiBmb3IgY2xrIHBhcmVudAo+ICsJICogY21uX3BzbV9jbGtfZGlnX2RpdiA9IDIsIHNl dCB0aGUgY2xrIGRpdmlzaW9uIHRvIDIKPiArCSAqLwo+ICsJd3JpdGVsKDB4ODMwLCB0Y3BoeS0+ YmFzZSArIFBNQV9DTU5fQ1RSTDEpOwo+ICsJZm9yIChpID0gMDsgaSA8IDQ7IGkrKykgewo+ICsJ CS8qCj4gKwkJICogVGhlIGZvbGxvd2luZyBQSFkgY29uZmlndXJhdGlvbiBhc3N1bWVzIGEgMjQg TUh6IHJlZmVyZW5jZQo+ICsJCSAqIGNsb2NrLgo+ICsJCSAqLwo+ICsJCXdyaXRlbCgweDkwLCB0 Y3BoeS0+YmFzZSArIFhDVlJfRElBR19MQU5FX0ZDTV9FTl9NR04oaSkpOwo+ICsJCXdyaXRlbCgw eDk2MCwgdGNwaHktPmJhc2UgKyBUWF9SQ1ZERVRfRU5fVE1SKGkpKTsKPiArCQl3cml0ZWwoMHgz MCwgdGNwaHktPmJhc2UgKyBUWF9SQ1ZERVRfU1RfVE1SKGkpKTsKPiArCX0KPiArCj4gKwlyZGF0 YSA9IHJlYWRsKHRjcGh5LT5iYXNlICsgQ01OX0RJQUdfSFNDTEtfU0VMKTsKPiArCXJkYXRhICY9 IH5DTEtfUExMX01BU0s7Cj4gKwlyZGF0YSB8PSBDTEtfUExMX0NPTkZJRzsKPiArCXdyaXRlbChy ZGF0YSwgdGNwaHktPmJhc2UgKyBDTU5fRElBR19IU0NMS19TRUwpOwo+ICt9Cj4gKwo+ICtzdGF0 aWMgdm9pZCB0Y3BoeV9jZmdfdXNiM19wbGwoc3RydWN0IHJvY2tjaGlwX3R5cGVjX3BoeSAqdGNw aHkpCj4gK3sKPiArCXUzMiBpOwo+ICsKPiArCS8qIGxvYWQgdGhlIGNvbmZpZ3VyYXRpb24gb2Yg UExMMCAqLwo+ICsJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUodXNiM19wbGxfY2ZnKTsgaSsr KQo+ICsJCXdyaXRlbCh1c2IzX3BsbF9jZmdbaV0udmFsdWUsCj4gKwkJICAgICAgIHRjcGh5LT5i YXNlICsgdXNiM19wbGxfY2ZnW2ldLmFkZHIpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCB0Y3Bo eV9jZmdfZHBfcGxsKHN0cnVjdCByb2NrY2hpcF90eXBlY19waHkgKnRjcGh5KQo+ICt7Cj4gKwl1 MzIgaTsKPiArCj4gKwkvKiBzZXQgdGhlIGRlZmF1bHQgbW9kZSB0byBSQlIgKi8KPiArCXdyaXRl bChEUF9QTExfQ0xPQ0tfRU5BQkxFIHwgRFBfUExMX0VOQUJMRSB8IERQX1BMTF9EQVRBX1JBVEVf UkJSLAo+ICsJICAgICAgIHRjcGh5LT5iYXNlICsgRFBfQ0xLX0NUTCk7Cj4gKwo+ICsJLyogbG9h ZCB0aGUgY29uZmlndXJhdGlvbiBvZiBQTEwxICovCj4gKwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlf U0laRShkcF9wbGxfY2ZnKTsgaSsrKQo+ICsJCXdyaXRlbChkcF9wbGxfY2ZnW2ldLnZhbHVlLCB0 Y3BoeS0+YmFzZSArIGRwX3BsbF9jZmdbaV0uYWRkcik7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lk IHRjcGh5X3R4X3VzYjNfY2ZnX2xhbmUoc3RydWN0IHJvY2tjaGlwX3R5cGVjX3BoeSAqdGNwaHks IHUzMiBsYW5lKQo+ICt7Cj4gKwl3cml0ZWwoMHg3Nzk5LCB0Y3BoeS0+YmFzZSArIFRYX1BTQ19B MChsYW5lKSk7Cj4gKwl3cml0ZWwoMHg3Nzk4LCB0Y3BoeS0+YmFzZSArIFRYX1BTQ19BMShsYW5l KSk7Cj4gKwl3cml0ZWwoMHg1MDk4LCB0Y3BoeS0+YmFzZSArIFRYX1BTQ19BMihsYW5lKSk7Cj4g Kwl3cml0ZWwoMHg1MDk4LCB0Y3BoeS0+YmFzZSArIFRYX1BTQ19BMyhsYW5lKSk7Cj4gKwl3cml0 ZWwoMCwgdGNwaHktPmJhc2UgKyBUWF9UWENDX01HTkZTX01VTFRfMDAwKGxhbmUpKTsKPiArCXdy aXRlbCgweGJmLCB0Y3BoeS0+YmFzZSArIFhDVlJfRElBR19CSURJX0NUUkwobGFuZSkpOwo+ICt9 Cj4gKwo+ICtzdGF0aWMgdm9pZCB0Y3BoeV9yeF91c2IzX2NmZ19sYW5lKHN0cnVjdCByb2NrY2hp cF90eXBlY19waHkgKnRjcGh5LCB1MzIgbGFuZSkKPiArewo+ICsJd3JpdGVsKDB4YTZmZCwgdGNw aHktPmJhc2UgKyBSWF9QU0NfQTAobGFuZSkpOwo+ICsJd3JpdGVsKDB4YTZmZCwgdGNwaHktPmJh c2UgKyBSWF9QU0NfQTEobGFuZSkpOwo+ICsJd3JpdGVsKDB4YTQxMCwgdGNwaHktPmJhc2UgKyBS WF9QU0NfQTIobGFuZSkpOwo+ICsJd3JpdGVsKDB4MjQxMCwgdGNwaHktPmJhc2UgKyBSWF9QU0Nf QTMobGFuZSkpOwo+ICsJd3JpdGVsKDB4MjNmZiwgdGNwaHktPmJhc2UgKyBSWF9QU0NfQ0FMKGxh bmUpKTsKPiArCXdyaXRlbCgweDEzLCB0Y3BoeS0+YmFzZSArIFJYX1NJR0RFVF9ITF9GSUxUX1RN UihsYW5lKSk7Cj4gKwl3cml0ZWwoMHgwM2U3LCB0Y3BoeS0+YmFzZSArIFJYX1JFRV9DVFJMX0RB VEFfTUFTSyhsYW5lKSk7Cj4gKwl3cml0ZWwoMHgxMDA0LCB0Y3BoeS0+YmFzZSArIFJYX0RJQUdf U0lHREVUX1RVTkUobGFuZSkpOwo+ICsJd3JpdGVsKDB4MjAxMCwgdGNwaHktPmJhc2UgKyBSWF9Q U0NfUkRZKGxhbmUpKTsKPiArCXdyaXRlbCgweGZiLCB0Y3BoeS0+YmFzZSArIFhDVlJfRElBR19C SURJX0NUUkwobGFuZSkpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCB0Y3BoeV9kcF9jZmdfbGFu ZShzdHJ1Y3Qgcm9ja2NoaXBfdHlwZWNfcGh5ICp0Y3BoeSwgdTMyIGxhbmUpCj4gK3sKPiArCXUx NiByZGF0YTsKPiArCj4gKwl3cml0ZWwoMHhiZWZjLCB0Y3BoeS0+YmFzZSArIFhDVlJfUFNNX1JD VFJMKGxhbmUpKTsKPiArCXdyaXRlbCgweDY3OTksIHRjcGh5LT5iYXNlICsgVFhfUFNDX0EwKGxh bmUpKTsKPiArCXdyaXRlbCgweDY3OTgsIHRjcGh5LT5iYXNlICsgVFhfUFNDX0ExKGxhbmUpKTsK PiArCXdyaXRlbCgweDk4LCB0Y3BoeS0+YmFzZSArIFRYX1BTQ19BMihsYW5lKSk7Cj4gKwl3cml0 ZWwoMHg5OCwgdGNwaHktPmJhc2UgKyBUWF9QU0NfQTMobGFuZSkpOwo+ICsKPiArCXdyaXRlbCgw LCB0Y3BoeS0+YmFzZSArIFRYX1RYQ0NfTUdORlNfTVVMVF8wMDAobGFuZSkpOwo+ICsJd3JpdGVs KDAsIHRjcGh5LT5iYXNlICsgVFhfVFhDQ19NR05GU19NVUxUXzAwMShsYW5lKSk7Cj4gKwl3cml0 ZWwoMCwgdGNwaHktPmJhc2UgKyBUWF9UWENDX01HTkZTX01VTFRfMDEwKGxhbmUpKTsKPiArCXdy aXRlbCgwLCB0Y3BoeS0+YmFzZSArIFRYX1RYQ0NfTUdORlNfTVVMVF8wMTEobGFuZSkpOwo+ICsJ d3JpdGVsKDAsIHRjcGh5LT5iYXNlICsgVFhfVFhDQ19NR05GU19NVUxUXzEwMChsYW5lKSk7Cj4g Kwl3cml0ZWwoMCwgdGNwaHktPmJhc2UgKyBUWF9UWENDX01HTkZTX01VTFRfMTAxKGxhbmUpKTsK PiArCXdyaXRlbCgwLCB0Y3BoeS0+YmFzZSArIFRYX1RYQ0NfTUdORlNfTVVMVF8xMTAobGFuZSkp Owo+ICsJd3JpdGVsKDAsIHRjcGh5LT5iYXNlICsgVFhfVFhDQ19NR05GU19NVUxUXzExMShsYW5l KSk7Cj4gKwl3cml0ZWwoMCwgdGNwaHktPmJhc2UgKyBUWF9UWENDX0NQT1NUX01VTFRfMTAobGFu ZSkpOwo+ICsJd3JpdGVsKDAsIHRjcGh5LT5iYXNlICsgVFhfVFhDQ19DUE9TVF9NVUxUXzAxKGxh bmUpKTsKPiArCXdyaXRlbCgwLCB0Y3BoeS0+YmFzZSArIFRYX1RYQ0NfQ1BPU1RfTVVMVF8wMChs YW5lKSk7Cj4gKwl3cml0ZWwoMCwgdGNwaHktPmJhc2UgKyBUWF9UWENDX0NQT1NUX01VTFRfMTEo bGFuZSkpOwo+ICsKPiArCXdyaXRlbCgweDEyOCwgdGNwaHktPmJhc2UgKyBUWF9UWENDX0NBTF9T Q0xSX01VTFQobGFuZSkpOwo+ICsJd3JpdGVsKDB4NDAwLCB0Y3BoeS0+YmFzZSArIFRYX0RJQUdf VFhfRFJWKGxhbmUpKTsKPiArCj4gKwlyZGF0YSA9IHJlYWRsKHRjcGh5LT5iYXNlICsgWENWUl9E SUFHX1BMTERSQ19DVFJMKGxhbmUpKTsKPiArCXJkYXRhID0gKHJkYXRhICYgMHg4ZmZmKSB8IDB4 NjAwMDsKPiArCXdyaXRlbChyZGF0YSwgdGNwaHktPmJhc2UgKyBYQ1ZSX0RJQUdfUExMRFJDX0NU UkwobGFuZSkpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW5saW5lIGludCBwcm9wZXJ0eV9lbmFibGUo c3RydWN0IHJvY2tjaGlwX3R5cGVjX3BoeSAqdGNwaHksCj4gKwkJCQkgIGNvbnN0IHN0cnVjdCB1 c2IzcGh5X3JlZyAqcmVnLCBib29sIGVuKQo+ICt7Cj4gKwl1MzIgbWFzayA9IDEgPDwgcmVnLT53 cml0ZV9lbmFibGU7Cj4gKwl1MzIgdmFsID0gZW4gPDwgcmVnLT5lbmFibGVfYml0Owo+ICsKPiAr CXJldHVybiByZWdtYXBfd3JpdGUodGNwaHktPmdyZl9yZWdzLCByZWctPm9mZnNldCwgdmFsIHwg bWFzayk7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIHRjcGh5X2RwX2F1eF9jYWxpYnJhdGlvbihz dHJ1Y3Qgcm9ja2NoaXBfdHlwZWNfcGh5ICp0Y3BoeSkKPiArewo+ICsJdTE2IHJkYXRhLCByZGF0 YTIsIHZhbDsKPiArCj4gKwkvKiBkaXNhYmxlIHR4ZGFfY2FsX2xhdGNoX2VuIGZvciByZXdyaXRl IHRoZSBjYWxpYnJhdGlvbiB2YWx1ZXMgKi8KPiArCXJkYXRhID0gcmVhZGwodGNwaHktPmJhc2Ug KyBUWF9BTkFfQ1RSTF9SRUdfMSk7Cj4gKwl2YWwgPSByZGF0YSAmIDB4ZGZmZjsKPiArCXdyaXRl bCh2YWwsIHRjcGh5LT5iYXNlICsgVFhfQU5BX0NUUkxfUkVHXzEpOwo+ICsKPiArCS8qCj4gKwkg KiByZWFkIGEgcmVzaXN0b3IgY2FsaWJyYXRpb24gY29kZSBmcm9tIENNTl9UWFBVQ0FMX0NUUkxb NjowXSBhbmQKPiArCSAqIHdyaXRlIGl0IHRvIFRYX0RJR19DVFJMX1JFR18yWzY6MF0sIGFuZCBk ZWxheSAxbXMgdG8gbWFrZSBzdXJlIGl0Cj4gKwkgKiB3b3Jrcy4KPiArCSAqLwo+ICsJcmRhdGEg PSByZWFkbCh0Y3BoeS0+YmFzZSArIFRYX0RJR19DVFJMX1JFR18yKTsKPiArCXJkYXRhID0gcmRh dGEgJiAweGZmYzA7Cj4gKwo+ICsJcmRhdGEyID0gcmVhZGwodGNwaHktPmJhc2UgKyBDTU5fVFhQ VUNBTF9DVFJMKTsKPiArCXJkYXRhMiA9IHJkYXRhMiAmIDB4M2Y7Cj4gKwo+ICsJdmFsID0gcmRh dGEgfCByZGF0YTI7Cj4gKwl3cml0ZWwodmFsLCB0Y3BoeS0+YmFzZSArIFRYX0RJR19DVFJMX1JF R18yKTsKPiArCXVzbGVlcF9yYW5nZSgxMDAwLCAxMDUwKTsKPiArCj4gKwkvKgo+ICsJICogRW5h YmxlIHNpZ25hbCBmb3IgbGF0Y2ggdGhhdCBzYW1wbGUgYW5kIGhvbGRzIGNhbGlicmF0aW9uIHZh bHVlcy4KPiArCSAqIEFjdGl2YXRlIHRoaXMgc2lnbmFsIGZvciAxIGNsb2NrIGN5Y2xlIHRvIHNh bXBsZSBuZXcgY2FsaWJyYXRpb24KPiArCSAqIHZhbHVlcy4KPiArCSAqLwo+ICsJcmRhdGEgPSBy ZWFkbCh0Y3BoeS0+YmFzZSArIFRYX0FOQV9DVFJMX1JFR18xKTsKPiArCXZhbCA9IHJkYXRhIHwg MHgyMDAwOwo+ICsJd3JpdGVsKHZhbCwgdGNwaHktPmJhc2UgKyBUWF9BTkFfQ1RSTF9SRUdfMSk7 Cj4gKwl1c2xlZXBfcmFuZ2UoMTUwLCAyMDApOwo+ICsKPiArCS8qIHNldCBUWCBWb2x0YWdlIExl dmVsIGFuZCBUWCBEZWVtcGhhc2lzIHRvIDAgKi8KPiArCXdyaXRlbCgwLCB0Y3BoeS0+YmFzZSAr IFBIWV9EUF9UWF9DVEwpOwo+ICsJLyogcmUtZW5hYmxlIGRlY2FwICovCj4gKwl3cml0ZWwoMHgx MDAsIHRjcGh5LT5iYXNlICsgVFhfQU5BX0NUUkxfUkVHXzIpOwo+ICsJd3JpdGVsKDB4MzAwLCB0 Y3BoeS0+YmFzZSArIFRYX0FOQV9DVFJMX1JFR18yKTsKPiArCXdyaXRlbCgweDIwMDgsIHRjcGh5 LT5iYXNlICsgVFhfQU5BX0NUUkxfUkVHXzEpOwo+ICsJd3JpdGVsKDB4MjAxOCwgdGNwaHktPmJh c2UgKyBUWF9BTkFfQ1RSTF9SRUdfMSk7Cj4gKwo+ICsJd3JpdGVsKDAsIHRjcGh5LT5iYXNlICsg VFhfQU5BX0NUUkxfUkVHXzUpOwo+ICsKPiArCS8qCj4gKwkgKiBQcm9ncmFtcyB0eGRhX2Rydl9s ZG9fcHJvZ1sxNTowXSwgU2V0cyBkcml2ZXIgTERPCj4gKwkgKiB2b2x0YWdlIDE2J2gxMDAxIGZv ciBEUC1BVVgtVFggYW5kIFJYCj4gKwkgKi8KPiArCXdyaXRlbCgweDEwMDEsIHRjcGh5LT5iYXNl ICsgVFhfQU5BX0NUUkxfUkVHXzQpOwo+ICsKPiArCS8qIHJlLWVuYWJsZXMgQmFuZGdhcCByZWZl cmVuY2UgZm9yIExETyAqLwo+ICsJd3JpdGVsKDB4MjA5OCwgdGNwaHktPmJhc2UgKyBUWF9BTkFf Q1RSTF9SRUdfMSk7Cj4gKwl3cml0ZWwoMHgyMTk4LCB0Y3BoeS0+YmFzZSArIFRYX0FOQV9DVFJM X1JFR18xKTsKPiArCj4gKwkvKgo+ICsJICogcmUtZW5hYmxlcyB0aGUgdHJhbnNtaXR0ZXIgcHJl LWRyaXZlciwgZHJpdmVyIGRhdGEgc2VsZWN0aW9uIE1VWCwKPiArCSAqIGFuZCByZWNlaXZlciBk ZXRlY3QgY2lyY3VpdHMuCj4gKwkgKi8KPiArCXdyaXRlbCgweDMwMSwgdGNwaHktPmJhc2UgKyBU WF9BTkFfQ1RSTF9SRUdfMik7Cj4gKwl3cml0ZWwoMHgzMDMsIHRjcGh5LT5iYXNlICsgVFhfQU5B X0NUUkxfUkVHXzIpOwo+ICsKPiArCS8qCj4gKwkgKiBCSVQgMTI6IENvbnRyb2xzIGF1eGRhX3Bv bGFyaXR5LCB3aGljaCBzZWxlY3RzIHRoZSBwb2xhcml0eSBvZiB0aGUKPiArCSAqIHhjdnI6Cj4g KwkgKiAxLCBSZXZlcnNlcyB0aGUgcG9sYXJpdHkgKElmIFRZUEVDLCBQdWxscyB1cHMgYXV4X3Ag YW5kIHB1bGwKPiArCSAqIGRvd24gYXV4X20pCj4gKwkgKiAwLCBOb3JtYWwgcG9sYXJpdHkgKGlm IFRZUEVfQywgcHVsbHMgdXAgYXV4X20gYW5kIHB1bGxzIGRvd24KPiArCSAqIGF1eF9wKQo+ICsJ ICovCj4gKwl2YWwgPSAweGEwNzg7Cj4gKwlpZiAoIXRjcGh5LT5mbGlwKQo+ICsJCXZhbCB8PSBC SVQoMTIpOwo+ICsJd3JpdGVsKHZhbCwgdGNwaHktPmJhc2UgKyBUWF9BTkFfQ1RSTF9SRUdfMSk7 Cj4gKwo+ICsJd3JpdGVsKDAsIHRjcGh5LT5iYXNlICsgVFhfQU5BX0NUUkxfUkVHXzMpOwo+ICsJ d3JpdGVsKDAsIHRjcGh5LT5iYXNlICsgVFhfQU5BX0NUUkxfUkVHXzQpOwo+ICsJd3JpdGVsKDAs IHRjcGh5LT5iYXNlICsgVFhfQU5BX0NUUkxfUkVHXzUpOwo+ICsKPiArCS8qCj4gKwkgKiBDb250 cm9scyBsb3dfcG93ZXJfc3dpbmdfZW4sIHNldCB0aGUgdm9sdGFnZSBzd2luZyBvZiB0aGUgZHJp dmVyCj4gKwkgKiB0byA0MDBtdi4gVGhlIHZhbHVlcwliZWxvdyBhcmUgcGVhayB0byBwZWFrIChk aWZmZXJlbnRpYWwpIHZhbHVlcy4KPiArCSAqLwo+ICsJd3JpdGVsKDQsIHRjcGh5LT5iYXNlICsg VFhEQV9DT0VGRl9DQUxDX0NUUkwpOwo+ICsJd3JpdGVsKDAsIHRjcGh5LT5iYXNlICsgVFhEQV9D WUFfQVVYREFfQ1lBKTsKPiArCj4gKwkvKiBDb250cm9scyB0eF9oaWdoX3pfdG1fZW4gKi8KPiAr CXZhbCA9IHJlYWRsKHRjcGh5LT5iYXNlICsgVFhfRElHX0NUUkxfUkVHXzIpOwo+ICsJdmFsIHw9 IEJJVCgxNSk7Cj4gKwl3cml0ZWwodmFsLCB0Y3BoeS0+YmFzZSArIFRYX0RJR19DVFJMX1JFR18y KTsKPiArfQo+ICsKPiArc3RhdGljIGludCB0Y3BoeV9waHlfaW5pdChzdHJ1Y3Qgcm9ja2NoaXBf dHlwZWNfcGh5ICp0Y3BoeSwgdTggbW9kZSkKPiArewo+ICsJc3RydWN0IHJvY2tjaGlwX3VzYjNw aHlfcG9ydF9jZmcgKmNmZyA9ICZ0Y3BoeS0+cG9ydF9jZmdzOwo+ICsJaW50IHJldCwgaTsKPiAr CXUzMiB2YWw7Cj4gKwo+ICsJcmV0ID0gY2xrX3ByZXBhcmVfZW5hYmxlKHRjcGh5LT5jbGtfY29y ZSk7Cj4gKwlpZiAocmV0KSB7Cj4gKwkJZGV2X2Vycih0Y3BoeS0+ZGV2LCAiRmFpbGVkIHRvIHBy ZXBhcmVfZW5hYmxlIGNvcmUgY2xvY2tcbiIpOwo+ICsJCXJldHVybiByZXQ7Cj4gKwl9Cj4gKwo+ ICsJcmV0ID0gY2xrX3ByZXBhcmVfZW5hYmxlKHRjcGh5LT5jbGtfcmVmKTsKPiArCWlmIChyZXQp IHsKPiArCQlkZXZfZXJyKHRjcGh5LT5kZXYsICJGYWlsZWQgdG8gcHJlcGFyZV9lbmFibGUgcmVm IGNsb2NrXG4iKTsKPiArCQlnb3RvIGVycl9jbGtfY29yZTsKPiArCX0KPiArCj4gKwlyZXNldF9j b250cm9sX2RlYXNzZXJ0KHRjcGh5LT50Y3BoeV9yc3QpOwo+ICsKPiArCXByb3BlcnR5X2VuYWJs ZSh0Y3BoeSwgJmNmZy0+dHlwZWNfY29ubl9kaXIsIHRjcGh5LT5mbGlwKTsKPiArCj4gKwl0Y3Bo eV9jZmdfMjRtKHRjcGh5KTsKPiArCj4gKwlpZiAobW9kZSA9PSBNT0RFX0RGUF9EUCkgewo+ICsJ CXRjcGh5X2NmZ19kcF9wbGwodGNwaHkpOwo+ICsJCWZvciAoaSA9IDA7IGkgPCA0OyBpKyspCj4g KwkJCXRjcGh5X2RwX2NmZ19sYW5lKHRjcGh5LCBpKTsKPiArCj4gKwkJd3JpdGVsKFBJTl9BU1NJ R05fQ19FLCB0Y3BoeS0+YmFzZSArIFBNQV9MQU5FX0NGRyk7Cj4gKwl9IGVsc2Ugewo+ICsJCXRj cGh5X2NmZ191c2IzX3BsbCh0Y3BoeSk7Cj4gKwkJdGNwaHlfY2ZnX2RwX3BsbCh0Y3BoeSk7Cj4g KwkJaWYgKHRjcGh5LT5mbGlwKSB7Cj4gKwkJCXRjcGh5X3R4X3VzYjNfY2ZnX2xhbmUodGNwaHks IDMpOwo+ICsJCQl0Y3BoeV9yeF91c2IzX2NmZ19sYW5lKHRjcGh5LCAyKTsKPiArCQkJdGNwaHlf ZHBfY2ZnX2xhbmUodGNwaHksIDApOwo+ICsJCQl0Y3BoeV9kcF9jZmdfbGFuZSh0Y3BoeSwgMSk7 Cj4gKwkJfSBlbHNlIHsKPiArCQkJdGNwaHlfdHhfdXNiM19jZmdfbGFuZSh0Y3BoeSwgMCk7Cj4g KwkJCXRjcGh5X3J4X3VzYjNfY2ZnX2xhbmUodGNwaHksIDEpOwo+ICsJCQl0Y3BoeV9kcF9jZmdf bGFuZSh0Y3BoeSwgMik7Cj4gKwkJCXRjcGh5X2RwX2NmZ19sYW5lKHRjcGh5LCAzKTsKPiArCQl9 Cj4gKwo+ICsJCXdyaXRlbChQSU5fQVNTSUdOX0RfRiwgdGNwaHktPmJhc2UgKyBQTUFfTEFORV9D RkcpOwo+ICsJfQo+ICsKPiArCXdyaXRlbChEUF9NT0RFX0VOVEVSX0EyLCB0Y3BoeS0+YmFzZSAr IERQX01PREVfQ1RMKTsKPiArCj4gKwlyZXNldF9jb250cm9sX2RlYXNzZXJ0KHRjcGh5LT51cGh5 X3JzdCk7Cj4gKwo+ICsJcmV0ID0gcmVhZHhfcG9sbF90aW1lb3V0KHJlYWRsLCB0Y3BoeS0+YmFz ZSArIFBNQV9DTU5fQ1RSTDEsCj4gKwkJCQkgdmFsLCB2YWwgJiBDTU5fUkVBRFksIDEwLAo+ICsJ CQkJIFBIWV9NT0RFX1NFVF9USU1FT1VUKTsKPiArCWlmIChyZXQgPCAwKSB7Cj4gKwkJZGV2X2Vy cih0Y3BoeS0+ZGV2LCAid2FpdCBwbWEgcmVhZHkgdGltZW91dFxuIik7Cj4gKwkJcmV0ID0gLUVU SU1FRE9VVDsKPiArCQlnb3RvIGVycl93YWl0X3BtYTsKPiArCX0KPiArCj4gKwlyZXNldF9jb250 cm9sX2RlYXNzZXJ0KHRjcGh5LT5waXBlX3JzdCk7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gKwo+ICtl cnJfd2FpdF9wbWE6Cj4gKwlyZXNldF9jb250cm9sX2Fzc2VydCh0Y3BoeS0+dXBoeV9yc3QpOwo+ ICsJcmVzZXRfY29udHJvbF9hc3NlcnQodGNwaHktPnRjcGh5X3JzdCk7Cj4gKwljbGtfZGlzYWJs ZV91bnByZXBhcmUodGNwaHktPmNsa19yZWYpOwo+ICtlcnJfY2xrX2NvcmU6Cj4gKwljbGtfZGlz YWJsZV91bnByZXBhcmUodGNwaHktPmNsa19jb3JlKTsKPiArCXJldHVybiByZXQ7Cj4gK30KPiAr Cj4gK3N0YXRpYyB2b2lkIHRjcGh5X3BoeV9kZWluaXQoc3RydWN0IHJvY2tjaGlwX3R5cGVjX3Bo eSAqdGNwaHkpCj4gK3sKPiArCXJlc2V0X2NvbnRyb2xfYXNzZXJ0KHRjcGh5LT50Y3BoeV9yc3Qp Owo+ICsJcmVzZXRfY29udHJvbF9hc3NlcnQodGNwaHktPnVwaHlfcnN0KTsKPiArCXJlc2V0X2Nv bnRyb2xfYXNzZXJ0KHRjcGh5LT5waXBlX3JzdCk7Cj4gKwljbGtfZGlzYWJsZV91bnByZXBhcmUo dGNwaHktPmNsa19jb3JlKTsKPiArCWNsa19kaXNhYmxlX3VucHJlcGFyZSh0Y3BoeS0+Y2xrX3Jl Zik7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgdGNwaHlfZ2V0X21vZGUoc3RydWN0IHJvY2tjaGlw X3R5cGVjX3BoeSAqdGNwaHkpCj4gK3sKPiArCXN0cnVjdCBleHRjb25fZGV2ICplZGV2ID0gdGNw aHktPmV4dGNvbjsKPiArCXVuaW9uIGV4dGNvbl9wcm9wZXJ0eV92YWx1ZSBwcm9wZXJ0eTsKPiAr CXVuc2lnbmVkIGludCBpZDsKPiArCWJvb2wgZGZwLCB1ZnAsIGRwOwo+ICsJdTggbW9kZTsKPiAr CWludCByZXQ7Cj4gKwo+ICsJdWZwID0gZXh0Y29uX2dldF9zdGF0ZShlZGV2LCBFWFRDT05fVVNC KTsKPiArCWRmcCA9IGV4dGNvbl9nZXRfc3RhdGUoZWRldiwgRVhUQ09OX1VTQl9IT1NUKTsKPiAr CWRwID0gZXh0Y29uX2dldF9zdGF0ZShlZGV2LCBFWFRDT05fRElTUF9EUCk7Cj4gKwo+ICsJbW9k ZSA9IE1PREVfREZQX1VTQjsKPiArCWlkID0gRVhUQ09OX1VTQl9IT1NUOwo+ICsKPiArCWlmICh1 ZnApIHsKPiArCQltb2RlID0gTU9ERV9VRlBfVVNCOwo+ICsJCWlkID0gRVhUQ09OX1VTQjsKPiAr CX0gZWxzZSBpZiAoZHApIHsKPiArCQltb2RlID0gTU9ERV9ERlBfRFA7Cj4gKwkJaWQgPSBFWFRD T05fRElTUF9EUDsKPiArCj4gKwkJcmV0ID0gZXh0Y29uX2dldF9wcm9wZXJ0eShlZGV2LCBpZCwg RVhUQ09OX1BST1BfVVNCX1NVUEVSU1BFRUQsCj4gKwkJCQkJICAmcHJvcGVydHkpOwo+ICsJCWlm IChyZXQpIHsKPiArCQkJZGV2X2Vycih0Y3BoeS0+ZGV2LCAiZ2V0IHN1cGVyc3BlZWQgcHJvcGVy dHkgZmFpbGVkXG4iKTsKPiArCQkJcmV0dXJuIHJldDsKPiArCQl9Cj4gKwo+ICsJCWlmIChwcm9w ZXJ0eS5pbnR2YWwpCj4gKwkJCW1vZGUgfD0gTU9ERV9ERlBfVVNCOwo+ICsJfQo+ICsKPiArCXJl dCA9IGV4dGNvbl9nZXRfcHJvcGVydHkoZWRldiwgaWQsIEVYVENPTl9QUk9QX1VTQl9UWVBFQ19Q T0xBUklUWSwKPiArCQkJCSAgJnByb3BlcnR5KTsKPiArCWlmIChyZXQpIHsKPiArCQlkZXZfZXJy KHRjcGh5LT5kZXYsICJnZXQgcG9sYXJpdHkgcHJvcGVydHkgZmFpbGVkXG4iKTsKPiArCQlyZXR1 cm4gcmV0Owo+ICsJfQo+ICsKPiArCXRjcGh5LT5mbGlwID0gcHJvcGVydHkuaW50dmFsID8gMSA6 IDA7Cj4gKwo+ICsJcmV0dXJuIG1vZGU7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgcm9ja2NoaXBf dXNiM19waHlfcG93ZXJfb24oc3RydWN0IHBoeSAqcGh5KQo+ICt7Cj4gKwlzdHJ1Y3Qgcm9ja2No aXBfdHlwZWNfcGh5ICp0Y3BoeSA9IHBoeV9nZXRfZHJ2ZGF0YShwaHkpOwo+ICsJc3RydWN0IHJv Y2tjaGlwX3VzYjNwaHlfcG9ydF9jZmcgKmNmZyA9ICZ0Y3BoeS0+cG9ydF9jZmdzOwo+ICsJY29u c3Qgc3RydWN0IHVzYjNwaHlfcmVnICpyZWcgPSAmY2ZnLT5waXBlX3N0YXR1czsKPiArCWludCB0 aW1lb3V0LCBuZXdfbW9kZSwgcmV0ID0gMDsKPiArCXUzMiB2YWw7Cj4gKwo+ICsJbXV0ZXhfbG9j aygmdGNwaHktPmxvY2spOwo+ICsKPiArCW5ld19tb2RlID0gdGNwaHlfZ2V0X21vZGUodGNwaHkp Owo+ICsJaWYgKG5ld19tb2RlIDwgMCkgewo+ICsJCXJldCA9IG5ld19tb2RlOwo+ICsJCWdvdG8g dW5sb2NrX3JldDsKPiArCX0KPiArCj4gKwkvKiBEUC1vbmx5IG1vZGU7IGZhbGwgYmFjayB0byBV U0IyICovCj4gKwlpZiAoIShuZXdfbW9kZSAmIChNT0RFX0RGUF9VU0IgfCBNT0RFX1VGUF9VU0Ip KSkKPiArCQlnb3RvIHVubG9ja19yZXQ7Cj4gKwo+ICsJaWYgKHRjcGh5LT5tb2RlID09IG5ld19t b2RlKQo+ICsJCWdvdG8gdW5sb2NrX3JldDsKPiArCj4gKwlpZiAodGNwaHktPm1vZGUgPT0gTU9E RV9ESVNDT05ORUNUKQo+ICsJCXRjcGh5X3BoeV9pbml0KHRjcGh5LCBuZXdfbW9kZSk7Cj4gKwo+ ICsJLyogd2FpdCBUQ1BIWSBmb3IgcGlwZSByZWFkeSAqLwo+ICsJZm9yICh0aW1lb3V0ID0gMDsg dGltZW91dCA8IDEwMDsgdGltZW91dCsrKSB7Cj4gKwkJcmVnbWFwX3JlYWQodGNwaHktPmdyZl9y ZWdzLCByZWctPm9mZnNldCwgJnZhbCk7Cj4gKwkJaWYgKCEodmFsICYgQklUKHJlZy0+ZW5hYmxl X2JpdCkpKSB7Cj4gKwkJCXRjcGh5LT5tb2RlIHw9IG5ld19tb2RlICYgKE1PREVfREZQX1VTQiB8 IE1PREVfVUZQX1VTQik7Cj4gKwkJCWdvdG8gdW5sb2NrX3JldDsKPiArCQl9Cj4gKwkJdXNsZWVw X3JhbmdlKDEwLCAyMCk7Cj4gKwl9Cj4gKwo+ICsJaWYgKHRjcGh5LT5tb2RlID09IE1PREVfRElT Q09OTkVDVCkKPiArCQl0Y3BoeV9waHlfZGVpbml0KHRjcGh5KTsKPiArCj4gKwlyZXQgPSAtRVRJ TUVET1VUOwo+ICsKPiArdW5sb2NrX3JldDoKPiArCW11dGV4X3VubG9jaygmdGNwaHktPmxvY2sp Owo+ICsJcmV0dXJuIHJldDsKPiArfQo+ICsKPiArc3RhdGljIGludCByb2NrY2hpcF91c2IzX3Bo eV9wb3dlcl9vZmYoc3RydWN0IHBoeSAqcGh5KQo+ICt7Cj4gKwlzdHJ1Y3Qgcm9ja2NoaXBfdHlw ZWNfcGh5ICp0Y3BoeSA9IHBoeV9nZXRfZHJ2ZGF0YShwaHkpOwo+ICsKPiArCW11dGV4X2xvY2so JnRjcGh5LT5sb2NrKTsKPiArCj4gKwlpZiAodGNwaHktPm1vZGUgPT0gTU9ERV9ESVNDT05ORUNU KQo+ICsJCWdvdG8gdW5sb2NrOwo+ICsKPiArCXRjcGh5LT5tb2RlICY9IH4oTU9ERV9VRlBfVVNC IHwgTU9ERV9ERlBfVVNCKTsKPiArCWlmICh0Y3BoeS0+bW9kZSA9PSBNT0RFX0RJU0NPTk5FQ1Qp Cj4gKwkJdGNwaHlfcGh5X2RlaW5pdCh0Y3BoeSk7Cj4gKwo+ICt1bmxvY2s6Cj4gKwltdXRleF91 bmxvY2soJnRjcGh5LT5sb2NrKTsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgY29u c3Qgc3RydWN0IHBoeV9vcHMgcm9ja2NoaXBfdXNiM19waHlfb3BzID0gewo+ICsJLnBvd2VyX29u CT0gcm9ja2NoaXBfdXNiM19waHlfcG93ZXJfb24sCj4gKwkucG93ZXJfb2ZmCT0gcm9ja2NoaXBf dXNiM19waHlfcG93ZXJfb2ZmLAo+ICsJLm93bmVyCQk9IFRISVNfTU9EVUxFLAo+ICt9Owo+ICsK PiArc3RhdGljIGludCByb2NrY2hpcF9kcF9waHlfcG93ZXJfb24oc3RydWN0IHBoeSAqcGh5KQo+ ICt7Cj4gKwlzdHJ1Y3Qgcm9ja2NoaXBfdHlwZWNfcGh5ICp0Y3BoeSA9IHBoeV9nZXRfZHJ2ZGF0 YShwaHkpOwo+ICsJaW50IG5ld19tb2RlLCByZXQgPSAwOwo+ICsJdTMyIHZhbDsKPiArCj4gKwlt dXRleF9sb2NrKCZ0Y3BoeS0+bG9jayk7Cj4gKwo+ICsJbmV3X21vZGUgPSB0Y3BoeV9nZXRfbW9k ZSh0Y3BoeSk7Cj4gKwlpZiAobmV3X21vZGUgPCAwKSB7Cj4gKwkJcmV0ID0gbmV3X21vZGU7Cj4g KwkJZ290byB1bmxvY2tfcmV0Owo+ICsJfQo+ICsKPiArCWlmICghKG5ld19tb2RlICYgTU9ERV9E RlBfRFApKSB7Cj4gKwkJcmV0ID0gLUVOT0RFVjsKPiArCQlnb3RvIHVubG9ja19yZXQ7Cj4gKwl9 Cj4gKwo+ICsJaWYgKHRjcGh5LT5tb2RlID09IG5ld19tb2RlKQo+ICsJCWdvdG8gdW5sb2NrX3Jl dDsKPiArCj4gKwkvKgo+ICsJICogSWYgdGhlIFBIWSBoYXMgYmVlbiBwb3dlciBvbiwgYnV0IHRo ZSBtb2RlIGlzIG5vdCBEUCBvbmx5IG1vZGUsCj4gKwkgKiByZS1pbml0IHRoZSBQSFkgZm9yIHNl dHRpbmcgYWxsIG9mIDQgbGFuZXMgdG8gRFAuCj4gKwkgKi8KPiArCWlmIChuZXdfbW9kZSA9PSBN T0RFX0RGUF9EUCAmJiB0Y3BoeS0+bW9kZSAhPSBNT0RFX0RJU0NPTk5FQ1QpIHsKPiArCQl0Y3Bo eV9waHlfZGVpbml0KHRjcGh5KTsKPiArCQl0Y3BoeV9waHlfaW5pdCh0Y3BoeSwgbmV3X21vZGUp Owo+ICsJfSBlbHNlIGlmICh0Y3BoeS0+bW9kZSA9PSBNT0RFX0RJU0NPTk5FQ1QpIHsKPiArCQl0 Y3BoeV9waHlfaW5pdCh0Y3BoeSwgbmV3X21vZGUpOwo+ICsJfQo+ICsKPiArCXJldCA9IHJlYWR4 X3BvbGxfdGltZW91dChyZWFkbCwgdGNwaHktPmJhc2UgKyBEUF9NT0RFX0NUTCwKPiArCQkJCSB2 YWwsIHZhbCAmIERQX01PREVfQTIsIDEwMDAsCj4gKwkJCQkgUEhZX01PREVfU0VUX1RJTUVPVVQp Owo+ICsJaWYgKHJldCA8IDApIHsKPiArCQlkZXZfZXJyKHRjcGh5LT5kZXYsICJmYWlsZWQgdG8g d2FpdCBUQ1BIWSBlbnRlciBBMlxuIik7Cj4gKwkJZ290byBwb3dlcl9vbl9maW5pc2g7Cj4gKwl9 Cj4gKwo+ICsJdGNwaHlfZHBfYXV4X2NhbGlicmF0aW9uKHRjcGh5KTsKPiArCj4gKwl3cml0ZWwo RFBfTU9ERV9FTlRFUl9BMCwgdGNwaHktPmJhc2UgKyBEUF9NT0RFX0NUTCk7Cj4gKwo+ICsJcmV0 ID0gcmVhZHhfcG9sbF90aW1lb3V0KHJlYWRsLCB0Y3BoeS0+YmFzZSArIERQX01PREVfQ1RMLAo+ ICsJCQkJIHZhbCwgdmFsICYgRFBfTU9ERV9BMCwgMTAwMCwKPiArCQkJCSBQSFlfTU9ERV9TRVRf VElNRU9VVCk7Cj4gKwlpZiAocmV0IDwgMCkgewo+ICsJCXdyaXRlbChEUF9NT0RFX0VOVEVSX0Ey LCB0Y3BoeS0+YmFzZSArIERQX01PREVfQ1RMKTsKPiArCQlkZXZfZXJyKHRjcGh5LT5kZXYsICJm YWlsZWQgdG8gd2FpdCBUQ1BIWSBlbnRlciBBMFxuIik7Cj4gKwkJZ290byBwb3dlcl9vbl9maW5p c2g7Cj4gKwl9Cj4gKwo+ICsJdGNwaHktPm1vZGUgfD0gTU9ERV9ERlBfRFA7Cj4gKwo+ICtwb3dl cl9vbl9maW5pc2g6Cj4gKwlpZiAodGNwaHktPm1vZGUgPT0gTU9ERV9ESVNDT05ORUNUKQo+ICsJ CXRjcGh5X3BoeV9kZWluaXQodGNwaHkpOwo+ICt1bmxvY2tfcmV0Ogo+ICsJbXV0ZXhfdW5sb2Nr KCZ0Y3BoeS0+bG9jayk7Cj4gKwlyZXR1cm4gcmV0Owo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IHJv Y2tjaGlwX2RwX3BoeV9wb3dlcl9vZmYoc3RydWN0IHBoeSAqcGh5KQo+ICt7Cj4gKwlzdHJ1Y3Qg cm9ja2NoaXBfdHlwZWNfcGh5ICp0Y3BoeSA9IHBoeV9nZXRfZHJ2ZGF0YShwaHkpOwo+ICsKPiAr CW11dGV4X2xvY2soJnRjcGh5LT5sb2NrKTsKPiArCj4gKwlpZiAodGNwaHktPm1vZGUgPT0gTU9E RV9ESVNDT05ORUNUKQo+ICsJCWdvdG8gdW5sb2NrOwo+ICsKPiArCXRjcGh5LT5tb2RlICY9IH5N T0RFX0RGUF9EUDsKPiArCj4gKwl3cml0ZWwoRFBfTU9ERV9FTlRFUl9BMiwgdGNwaHktPmJhc2Ug KyBEUF9NT0RFX0NUTCk7Cj4gKwo+ICsJaWYgKHRjcGh5LT5tb2RlID09IE1PREVfRElTQ09OTkVD VCkKPiArCQl0Y3BoeV9waHlfZGVpbml0KHRjcGh5KTsKPiArCj4gK3VubG9jazoKPiArCW11dGV4 X3VubG9jaygmdGNwaHktPmxvY2spOwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBj b25zdCBzdHJ1Y3QgcGh5X29wcyByb2NrY2hpcF9kcF9waHlfb3BzID0gewo+ICsJLnBvd2VyX29u CT0gcm9ja2NoaXBfZHBfcGh5X3Bvd2VyX29uLAo+ICsJLnBvd2VyX29mZgk9IHJvY2tjaGlwX2Rw X3BoeV9wb3dlcl9vZmYsCj4gKwkub3duZXIJCT0gVEhJU19NT0RVTEUsCj4gK307Cj4gKwo+ICtz dGF0aWMgaW50IHRjcGh5X2dldF9wYXJhbShzdHJ1Y3QgZGV2aWNlICpkZXYsCj4gKwkJCSAgIHN0 cnVjdCB1c2IzcGh5X3JlZyAqcmVnLAo+ICsJCQkgICBjb25zdCBjaGFyICpuYW1lKQo+ICt7Cj4g Kwl1MzIgYnVmZmVyWzNdOwo+ICsJaW50IHJldDsKPiArCj4gKwlyZXQgPSBvZl9wcm9wZXJ0eV9y ZWFkX3UzMl9hcnJheShkZXYtPm9mX25vZGUsIG5hbWUsIGJ1ZmZlciwgMyk7Cj4gKwlpZiAocmV0 KSB7Cj4gKwkJZGV2X2VycihkZXYsICJDYW4gbm90IHBhcnNlICVzXG4iLCBuYW1lKTsKPiArCQly ZXR1cm4gcmV0Owo+ICsJfQo+ICsKPiArCXJlZy0+b2Zmc2V0ID0gYnVmZmVyWzBdOwo+ICsJcmVn LT5lbmFibGVfYml0ID0gYnVmZmVyWzFdOwo+ICsJcmVnLT53cml0ZV9lbmFibGUgPSBidWZmZXJb Ml07Cj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGludCB0Y3BoeV9wYXJzZV9kdChz dHJ1Y3Qgcm9ja2NoaXBfdHlwZWNfcGh5ICp0Y3BoeSwKPiArCQkJICBzdHJ1Y3QgZGV2aWNlICpk ZXYpCj4gK3sKPiArCXN0cnVjdCByb2NrY2hpcF91c2IzcGh5X3BvcnRfY2ZnICpjZmcgPSAmdGNw aHktPnBvcnRfY2ZnczsKPiArCWludCByZXQ7Cj4gKwo+ICsJcmV0ID0gdGNwaHlfZ2V0X3BhcmFt KGRldiwgJmNmZy0+dHlwZWNfY29ubl9kaXIsCj4gKwkJCSAgICAgICJyb2NrY2hpcCx0eXBlYy1j b25uLWRpciIpOwo+ICsJaWYgKHJldCkKPiArCQlyZXR1cm4gcmV0Owo+ICsKPiArCXJldCA9IHRj cGh5X2dldF9wYXJhbShkZXYsICZjZmctPnVzYjN0b3VzYjJfZW4sCj4gKwkJCSAgICAgICJyb2Nr Y2hpcCx1c2IzdG91c2IyLWVuIik7Cj4gKwlpZiAocmV0KQo+ICsJCXJldHVybiByZXQ7Cj4gKwo+ ICsJcmV0ID0gdGNwaHlfZ2V0X3BhcmFtKGRldiwgJmNmZy0+ZXh0ZXJuYWxfcHNtLAo+ICsJCQkg ICAgICAicm9ja2NoaXAsZXh0ZXJuYWwtcHNtIik7Cj4gKwlpZiAocmV0KQo+ICsJCXJldHVybiBy ZXQ7Cj4gKwo+ICsJcmV0ID0gdGNwaHlfZ2V0X3BhcmFtKGRldiwgJmNmZy0+cGlwZV9zdGF0dXMs Cj4gKwkJCSAgICAgICJyb2NrY2hpcCxwaXBlLXN0YXR1cyIpOwo+ICsJaWYgKHJldCkKPiArCQly ZXR1cm4gcmV0Owo+ICsKPiArCXRjcGh5LT5ncmZfcmVncyA9IHN5c2Nvbl9yZWdtYXBfbG9va3Vw X2J5X3BoYW5kbGUoZGV2LT5vZl9ub2RlLAo+ICsJCQkJCQkJICAicm9ja2NoaXAsZ3JmIik7Cj4g KwlpZiAoSVNfRVJSKHRjcGh5LT5ncmZfcmVncykpIHsKPiArCQlkZXZfZXJyKGRldiwgImNvdWxk IG5vdCBmaW5kIGdyZiBkdCBub2RlXG4iKTsKPiArCQlyZXR1cm4gUFRSX0VSUih0Y3BoeS0+Z3Jm X3JlZ3MpOwo+ICsJfQo+ICsKPiArCXRjcGh5LT5jbGtfY29yZSA9IGRldm1fY2xrX2dldChkZXYs ICJ0Y3BkY29yZSIpOwo+ICsJaWYgKElTX0VSUih0Y3BoeS0+Y2xrX2NvcmUpKSB7Cj4gKwkJZGV2 X2VycihkZXYsICJjb3VsZCBub3QgZ2V0IHVwaHkgY29yZSBjbG9ja1xuIik7Cj4gKwkJcmV0dXJu IFBUUl9FUlIodGNwaHktPmNsa19jb3JlKTsKPiArCX0KPiArCj4gKwl0Y3BoeS0+Y2xrX3JlZiA9 IGRldm1fY2xrX2dldChkZXYsICJ0Y3BkcGh5LXJlZiIpOwo+ICsJaWYgKElTX0VSUih0Y3BoeS0+ Y2xrX3JlZikpIHsKPiArCQlkZXZfZXJyKGRldiwgImNvdWxkIG5vdCBnZXQgdXBoeSByZWYgY2xv Y2tcbiIpOwo+ICsJCXJldHVybiBQVFJfRVJSKHRjcGh5LT5jbGtfcmVmKTsKPiArCX0KPiArCj4g Kwl0Y3BoeS0+dXBoeV9yc3QgPSBkZXZtX3Jlc2V0X2NvbnRyb2xfZ2V0KGRldiwgInVwaHkiKTsK PiArCWlmIChJU19FUlIodGNwaHktPnVwaHlfcnN0KSkgewo+ICsJCWRldl9lcnIoZGV2LCAibm8g dXBoeV9yc3QgcmVzZXQgY29udHJvbCBmb3VuZFxuIik7Cj4gKwkJcmV0dXJuIFBUUl9FUlIodGNw aHktPnVwaHlfcnN0KTsKPiArCX0KPiArCj4gKwl0Y3BoeS0+cGlwZV9yc3QgPSBkZXZtX3Jlc2V0 X2NvbnRyb2xfZ2V0KGRldiwgInVwaHktcGlwZSIpOwo+ICsJaWYgKElTX0VSUih0Y3BoeS0+cGlw ZV9yc3QpKSB7Cj4gKwkJZGV2X2VycihkZXYsICJubyBwaXBlX3JzdCByZXNldCBjb250cm9sIGZv dW5kXG4iKTsKPiArCQlyZXR1cm4gUFRSX0VSUih0Y3BoeS0+cGlwZV9yc3QpOwo+ICsJfQo+ICsK PiArCXRjcGh5LT50Y3BoeV9yc3QgPSBkZXZtX3Jlc2V0X2NvbnRyb2xfZ2V0KGRldiwgInVwaHkt dGNwaHkiKTsKPiArCWlmIChJU19FUlIodGNwaHktPnRjcGh5X3JzdCkpIHsKPiArCQlkZXZfZXJy KGRldiwgIm5vIHRjcGh5X3JzdCByZXNldCBjb250cm9sIGZvdW5kXG4iKTsKPiArCQlyZXR1cm4g UFRSX0VSUih0Y3BoeS0+dGNwaHlfcnN0KTsKPiArCX0KPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ ICsKPiArc3RhdGljIHZvaWQgdHlwZWNfcGh5X3ByZV9pbml0KHN0cnVjdCByb2NrY2hpcF90eXBl Y19waHkgKnRjcGh5KQo+ICt7Cj4gKwlzdHJ1Y3Qgcm9ja2NoaXBfdXNiM3BoeV9wb3J0X2NmZyAq Y2ZnID0gJnRjcGh5LT5wb3J0X2NmZ3M7Cj4gKwo+ICsJcmVzZXRfY29udHJvbF9hc3NlcnQodGNw aHktPnRjcGh5X3JzdCk7Cj4gKwlyZXNldF9jb250cm9sX2Fzc2VydCh0Y3BoeS0+dXBoeV9yc3Qp Owo+ICsJcmVzZXRfY29udHJvbF9hc3NlcnQodGNwaHktPnBpcGVfcnN0KTsKPiArCj4gKwkvKiBz ZWxlY3QgZXh0ZXJuYWwgcHNtIGNsb2NrICovCj4gKwlwcm9wZXJ0eV9lbmFibGUodGNwaHksICZj ZmctPmV4dGVybmFsX3BzbSwgMSk7Cj4gKwlwcm9wZXJ0eV9lbmFibGUodGNwaHksICZjZmctPnVz YjN0b3VzYjJfZW4sIDApOwo+ICsKPiArCXRjcGh5LT5tb2RlID0gTU9ERV9ESVNDT05ORUNUOwo+ ICt9Cj4gKwo+ICtzdGF0aWMgaW50IHJvY2tjaGlwX3R5cGVjX3BoeV9wcm9iZShzdHJ1Y3QgcGxh dGZvcm1fZGV2aWNlICpwZGV2KQo+ICt7Cj4gKwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmcGRldi0+ ZGV2Owo+ICsJc3RydWN0IGRldmljZV9ub2RlICpucCA9IGRldi0+b2Zfbm9kZTsKPiArCXN0cnVj dCBkZXZpY2Vfbm9kZSAqY2hpbGRfbnA7Cj4gKwlzdHJ1Y3Qgcm9ja2NoaXBfdHlwZWNfcGh5ICp0 Y3BoeTsKPiArCXN0cnVjdCBwaHlfcHJvdmlkZXIgKnBoeV9wcm92aWRlcjsKPiArCXN0cnVjdCBy ZXNvdXJjZSAqcmVzOwo+ICsJaW50IHJldDsKPiArCj4gKwl0Y3BoeSA9IGRldm1fa3phbGxvYyhk ZXYsIHNpemVvZigqdGNwaHkpLCBHRlBfS0VSTkVMKTsKPiArCWlmICghdGNwaHkpCj4gKwkJcmV0 dXJuIC1FTk9NRU07Cj4gKwo+ICsJcmVzID0gcGxhdGZvcm1fZ2V0X3Jlc291cmNlKHBkZXYsIElP UkVTT1VSQ0VfTUVNLCAwKTsKPiArCXRjcGh5LT5iYXNlID0gZGV2bV9pb3JlbWFwX3Jlc291cmNl KGRldiwgcmVzKTsKPiArCWlmIChJU19FUlIodGNwaHktPmJhc2UpKQo+ICsJCXJldHVybiBQVFJf RVJSKHRjcGh5LT5iYXNlKTsKPiArCj4gKwlyZXQgPSB0Y3BoeV9wYXJzZV9kdCh0Y3BoeSwgZGV2 KTsKPiArCWlmIChyZXQpCj4gKwkJcmV0dXJuIHJldDsKPiArCj4gKwl0Y3BoeS0+ZGV2ID0gZGV2 Owo+ICsJcGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwgdGNwaHkpOwo+ICsJbXV0ZXhfaW5pdCgm dGNwaHktPmxvY2spOwo+ICsKPiArCXR5cGVjX3BoeV9wcmVfaW5pdCh0Y3BoeSk7Cj4gKwo+ICsJ dGNwaHktPmV4dGNvbiA9IGV4dGNvbl9nZXRfZWRldl9ieV9waGFuZGxlKGRldiwgMCk7Cj4gKwlp ZiAoSVNfRVJSKHRjcGh5LT5leHRjb24pKSB7Cj4gKwkJaWYgKFBUUl9FUlIodGNwaHktPmV4dGNv bikgIT0gLUVQUk9CRV9ERUZFUikKPiArCQkJZGV2X2VycihkZXYsICJJbnZhbGlkIG9yIG1pc3Np bmcgZXh0Y29uXG4iKTsKPiArCQlyZXR1cm4gUFRSX0VSUih0Y3BoeS0+ZXh0Y29uKTsKPiArCX0K PiArCj4gKwlmb3JfZWFjaF9hdmFpbGFibGVfY2hpbGRfb2Zfbm9kZShucCwgY2hpbGRfbnApIHsK PiArCQlzdHJ1Y3QgcGh5ICpwaHk7Cj4gKwo+ICsJCWlmICghb2Zfbm9kZV9jbXAoY2hpbGRfbnAt Pm5hbWUsICJkcC1wb3J0IikpCj4gKwkJCXBoeSA9IGRldm1fcGh5X2NyZWF0ZShkZXYsIGNoaWxk X25wLAo+ICsJCQkJCSAgICAgICZyb2NrY2hpcF9kcF9waHlfb3BzKTsKPiArCQllbHNlIGlmICgh b2Zfbm9kZV9jbXAoY2hpbGRfbnAtPm5hbWUsICJ1c2IzLXBvcnQiKSkKPiArCQkJcGh5ID0gZGV2 bV9waHlfY3JlYXRlKGRldiwgY2hpbGRfbnAsCj4gKwkJCQkJICAgICAgJnJvY2tjaGlwX3VzYjNf cGh5X29wcyk7Cj4gKwkJZWxzZQo+ICsJCQljb250aW51ZTsKPiArCj4gKwkJaWYgKElTX0VSUihw aHkpKSB7Cj4gKwkJCWRldl9lcnIoZGV2LCAiZmFpbGVkIHRvIGNyZWF0ZSBwaHk6ICVzXG4iLAo+ ICsJCQkJY2hpbGRfbnAtPm5hbWUpOwo+ICsJCQlyZXR1cm4gUFRSX0VSUihwaHkpOwo+ICsJCX0K PiArCj4gKwkJcGh5X3NldF9kcnZkYXRhKHBoeSwgdGNwaHkpOwo+ICsJfQo+ICsKPiArCXBoeV9w cm92aWRlciA9IGRldm1fb2ZfcGh5X3Byb3ZpZGVyX3JlZ2lzdGVyKGRldiwgb2ZfcGh5X3NpbXBs ZV94bGF0ZSk7Cj4gKwlpZiAoSVNfRVJSKHBoeV9wcm92aWRlcikpIHsKPiArCQlkZXZfZXJyKGRl diwgIkZhaWxlZCB0byByZWdpc3RlciBwaHkgcHJvdmlkZXJcbiIpOwo+ICsJCXJldHVybiBQVFJf RVJSKHBoeV9wcm92aWRlcik7Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0 YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHJvY2tjaGlwX3R5cGVjX3BoeV9kdF9pZHNb XSA9IHsKPiArCXsgLmNvbXBhdGlibGUgPSAicm9ja2NoaXAscmszMzk5LXR5cGVjLXBoeSIgfSwK PiArCXt9Cj4gK307Cj4gKwo+ICtNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCByb2NrY2hpcF90eXBl Y19waHlfZHRfaWRzKTsKPiArCj4gK3N0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHJvY2tj aGlwX3R5cGVjX3BoeV9kcml2ZXIgPSB7Cj4gKwkucHJvYmUJCT0gcm9ja2NoaXBfdHlwZWNfcGh5 X3Byb2JlLAo+ICsJLmRyaXZlcgkJPSB7Cj4gKwkJLm5hbWUJPSAicm9ja2NoaXAtdHlwZWMtcGh5 IiwKPiArCQkub2ZfbWF0Y2hfdGFibGUgPSByb2NrY2hpcF90eXBlY19waHlfZHRfaWRzLAo+ICsJ fSwKPiArfTsKPiArCj4gK21vZHVsZV9wbGF0Zm9ybV9kcml2ZXIocm9ja2NoaXBfdHlwZWNfcGh5 X2RyaXZlcik7Cj4gKwo+ICtNT0RVTEVfQVVUSE9SKCJDaHJpcyBaaG9uZyA8enl3QHJvY2stY2hp cHMuY29tPiIpOwo+ICtNT0RVTEVfQVVUSE9SKCJLZXZlciBZYW5nIDxrZXZlci55YW5nQHJvY2st Y2hpcHMuY29tPiIpOwo+ICtNT0RVTEVfREVTQ1JJUFRJT04oIlJvY2tjaGlwIFVTQiBUWVBFLUMg UEhZIGRyaXZlciIpOwo+ICtNT0RVTEVfTElDRU5TRSgiR1BMIHYyIik7Cj4gCgoKLS0gCkJlc3Qg UmVnYXJkcywKQ2hhbndvbyBDaG9pCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpMaW51eC1yb2NrY2hpcCBtYWlsaW5nIGxpc3QKTGludXgtcm9ja2NoaXBA bGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2xpbnV4LXJvY2tjaGlwCg==