From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Subject: [v3,8/8] usb: dwc3: Add Amlogic G12A DWC3 glue From: Neil Armstrong Message-Id: <703e82ad-5e1e-a03d-796c-dc1ddde7d2dc@baylibre.com> Date: Tue, 19 Mar 2019 09:15:27 +0100 To: Chunfeng Yun Cc: gregkh@linuxfoundation.org, hminas@synopsys.com, balbi@kernel.org, kishon@ti.com, linux-amlogic@lists.infradead.org, linux-usb@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org List-ID: SGksCgpPbiAxOS8wMy8yMDE5IDAyOjU3LCBDaHVuZmVuZyBZdW4gd3JvdGU6Cj4gSGkgTmVpbCwK PiBPbiBNb24sIDIwMTktMDMtMTggYXQgMTE6MTEgKzAxMDAsIE5laWwgQXJtc3Ryb25nIHdyb3Rl Ogo+PiBBZGRzIHN1cHBvcnQgZm9yIEFtbG9naWMgRzEyQSBVU0IgQ29udHJvbCBHbHVlIEhXLgo+ Pgo+PiBUaGUgQW1sb2dpYyBHMTJBIFNvQyBGYW1pbHkgZW1iZWRzIDIgVVNCIENvbnRyb2xsZXJz IDoKPj4gLSBhIERXQzMgSVAgY29uZmlndXJlZCBhcyBIb3N0IGZvciBVU0IyIGFuZCBVU0IzCj4+ IC0gYSBEV0MyIElQIGNvbmZpZ3VyZWQgYXMgUGVyaXBoZXJhbCBVU0IyIE9ubHkKPj4KPj4gQSBn bHVlIGNvbm5lY3RzIHRoZXNlIGJvdGggY29udHJvbGxlcnMgdG8gMiBVU0IyIFBIWXMsIGFuZCBv cHRpb25uYWxseQo+PiB0byBhbiBVU0IzK1BDSUUgQ29tYm8gUEhZIHNoYXJlZCB3aXRoIHRoZSBQ Q0lFIGNvbnRyb2xsZXIuCj4+Cj4+IFRoZSBHbHVlIGNvbmZpZ3VyZXMgdGhlIFVUTUkgOGJpdCBp bnRlcmZhY2VzIGZvciB0aGUgVVNCMiBQSFlzLCBpbmNsdWRpbmcKPj4gcm91dGluZyBvZiB0aGUg T1RHIFBIWSBiZXR3ZWVuIHRoZSBEV0MzIGFuZCBEV0MyIGNvbnRyb2xsZXJzLCBhbmQKPj4gc2V0 dXBzIHRoZSBvbi1jaGlwIE9URyBtb2RlIHNlbGVjdGlvbiBmb3IgdGhpcyBQSFkuCj4+Cj4+IFRo aXMgZHJpdmVycyBzdXBwb3J0cyB0aGUgb24tcHJvYmUgc2V0dXAgb2YgdGhlIE9URyBtb2RlLCBh bmQgbWFudWFsbHkKPj4gdmlhIGEgZGVidWdmcyBpbnRlcmZhY2UuIFRoZSBJUlEgbW9kZSBjaGFu Z2UgZGV0ZWN0IGlzIHlldCB0byBiZSBhZGRlZAo+PiBpbiBhIGZ1dHVyZSBwYXRjaHNldCwgbWFp bmx5IGR1ZSB0byBsYWNrIG9mIGhhcmR3YXJlIHRvIHZhbGlkYXRlIG9uLgo+Pgo+PiBTaWduZWQt b2ZmLWJ5OiBOZWlsIEFybXN0cm9uZyA8bmFybXN0cm9uZ0BiYXlsaWJyZS5jb20+Cj4+IC0tLQo+ PiAgZHJpdmVycy91c2IvZHdjMy9LY29uZmlnICAgICAgICAgICB8ICAxMCArCj4+ICBkcml2ZXJz L3VzYi9kd2MzL01ha2VmaWxlICAgICAgICAgIHwgICAxICsKPj4gIGRyaXZlcnMvdXNiL2R3YzMv ZHdjMy1tZXNvbi1nMTJhLmMgfCA2MDIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPj4g IDMgZmlsZXMgY2hhbmdlZCwgNjEzIGluc2VydGlvbnMoKykKPj4gIGNyZWF0ZSBtb2RlIDEwMDY0 NCBkcml2ZXJzL3VzYi9kd2MzL2R3YzMtbWVzb24tZzEyYS5jCj4+Cj4+IGRpZmYgLS1naXQgYS9k cml2ZXJzL3VzYi9kd2MzL0tjb25maWcgYi9kcml2ZXJzL3VzYi9kd2MzL0tjb25maWcKPj4gaW5k ZXggMmIxNDk0NDYwZDBjLi5kMmVhOTY3MDU2M2MgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvdXNi L2R3YzMvS2NvbmZpZwo+PiArKysgYi9kcml2ZXJzL3VzYi9kd2MzL0tjb25maWcKPj4gQEAgLTk1 LDYgKzk1LDE2IEBAIGNvbmZpZyBVU0JfRFdDM19LRVlTVE9ORQo+PiAgCSAgU3VwcG9ydCBvZiBV U0IyLzMgZnVuY3Rpb25hbGl0eSBpbiBUSSBLZXlzdG9uZTIgYW5kIEFNNjU0IHBsYXRmb3Jtcy4K Pj4gIAkgIFNheSAnWScgb3IgJ00nIGhlcmUgaWYgeW91IGhhdmUgb25lIHN1Y2ggZGV2aWNlCj4+ ICAKPj4gK2NvbmZpZyBVU0JfRFdDM19NRVNPTl9HMTJBCj4+ICsgICAgICAgdHJpc3RhdGUgIkFt bG9naWMgTWVzb24gRzEyQSBQbGF0Zm9ybXMiCj4+ICsgICAgICAgZGVwZW5kcyBvbiBPRiAmJiBD T01NT05fQ0xLCj4+ICsgICAgICAgZGVwZW5kcyBvbiBBUkNIX01FU09OIHx8IENPTVBJTEVfVEVT VAo+PiArICAgICAgIGRlZmF1bHQgVVNCX0RXQzMKPj4gKyAgICAgICBzZWxlY3QgVVNCX1JPTEVf U1dJVENICj4+ICsgICAgICAgaGVscAo+PiArICAgICAgICAgU3VwcG9ydCBVU0IyLzMgZnVuY3Rp b25hbGl0eSBpbiBBbWxvZ2ljIEcxMkEgcGxhdGZvcm1zLgo+PiArCSBTYXkgJ1knIG9yICdNJyBp ZiB5b3UgaGF2ZSBvbmUgc3VjaCBkZXZpY2UuCj4+ICsKPj4gIGNvbmZpZyBVU0JfRFdDM19PRl9T SU1QTEUKPj4gICAgICAgICB0cmlzdGF0ZSAiR2VuZXJpYyBPRiBTaW1wbGUgR2x1ZSBMYXllciIK Pj4gICAgICAgICBkZXBlbmRzIG9uIE9GICYmIENPTU1PTl9DTEsKPj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvdXNiL2R3YzMvTWFrZWZpbGUgYi9kcml2ZXJzL3VzYi9kd2MzL01ha2VmaWxlCj4+IGlu ZGV4IDZlM2VmNjE0NGU1ZC4uYWU4NmRhMGRjNWJkIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL3Vz Yi9kd2MzL01ha2VmaWxlCj4+ICsrKyBiL2RyaXZlcnMvdXNiL2R3YzMvTWFrZWZpbGUKPj4gQEAg LTQ3LDYgKzQ3LDcgQEAgb2JqLSQoQ09ORklHX1VTQl9EV0MzX0VYWU5PUykJCSs9IGR3YzMtZXh5 bm9zLm8KPj4gIG9iai0kKENPTkZJR19VU0JfRFdDM19QQ0kpCQkrPSBkd2MzLXBjaS5vCj4+ICBv YmotJChDT05GSUdfVVNCX0RXQzNfSEFQUykJCSs9IGR3YzMtaGFwcy5vCj4+ICBvYmotJChDT05G SUdfVVNCX0RXQzNfS0VZU1RPTkUpCQkrPSBkd2MzLWtleXN0b25lLm8KPj4gK29iai0kKENPTkZJ R19VU0JfRFdDM19NRVNPTl9HMTJBKQkrPSBkd2MzLW1lc29uLWcxMmEubwo+PiAgb2JqLSQoQ09O RklHX1VTQl9EV0MzX09GX1NJTVBMRSkJKz0gZHdjMy1vZi1zaW1wbGUubwo+PiAgb2JqLSQoQ09O RklHX1VTQl9EV0MzX1NUKQkJKz0gZHdjMy1zdC5vCj4+ICBvYmotJChDT05GSUdfVVNCX0RXQzNf UUNPTSkJCSs9IGR3YzMtcWNvbS5vCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9kd2MzL2R3 YzMtbWVzb24tZzEyYS5jIGIvZHJpdmVycy91c2IvZHdjMy9kd2MzLW1lc29uLWcxMmEuYwo+PiBu ZXcgZmlsZSBtb2RlIDEwMDY0NAo+PiBpbmRleCAwMDAwMDAwMDAwMDAuLjlmNDU1NGU4ZTZlNwo+ PiAtLS0gL2Rldi9udWxsCj4+ICsrKyBiL2RyaXZlcnMvdXNiL2R3YzMvZHdjMy1tZXNvbi1nMTJh LmMKPj4gQEAgLTAsMCArMSw2MDIgQEAKPj4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBH UEwtMi4wCj4+ICsvKgo+PiArICogVVNCIEdsdWUgZm9yIEFtbG9naWMgRzEyQSBTb0NzCj4+ICsg Kgo+PiArICogQ29weXJpZ2h0IChjKSAyMDE5IEJheUxpYnJlLCBTQVMKPj4gKyAqIEF1dGhvcjog TmVpbCBBcm1zdHJvbmcgPG5hcm1zdHJvbmdAYmF5bGlicmUuY29tPgo+PiArICovCj4+ICsKPj4g Ky8qCj4+ICsgKiBUaGUgVVNCIGlzIG9yZ2FuaXplZCB3aXRoIGEgZ2x1ZSBhcm91bmQgdGhlIERX QzMgQ29udHJvbGxlciBJUCBhcyA6Cj4+ICsgKiAtIENvbnRyb2wgcmVnaXN0ZXJzIGZvciBlYWNo IFVTQjIgUG9ydHMKPj4gKyAqIC0gQ29udHJvbCByZWdpc3RlcnMgZm9yIHRoZSBVU0IgUEhZIGxh eWVyCj4+ICsgKiAtIFN1cGVyU3BlZWQgUEhZIGNhbiBiZSBlbmFibGVkIG9ubHkgaWYgcG9ydCBp cyB1c2VkCj4+ICsgKgo+PiArICogVE9GSVg6Cj4+ICsgKiAtIEFkZCBkeW5hbWljIE9URyBzd2l0 Y2hpbmcgd2l0aCBJRCBjaGFuZ2UgaW50ZXJydXB0Cj4+ICsgKi8KPj4gKwoKWy4uXQoKPj4gKwo+ PiArCXJldCA9IG9mX3BsYXRmb3JtX3BvcHVsYXRlKG5wLCBOVUxMLCBOVUxMLCBkZXYpOwo+PiAr CWlmIChyZXQpIHsKPj4gKwkJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKHByaXYtPmNsayk7Cj4+ICsJ CWNsa19wdXQocHJpdi0+Y2xrKTsKPiBObyBuZWVkIGNsa19wdXQoKQoKRXhhY3QKCj4+ICsKPj4g KwkJZ290byBlcnJfcGh5c19leGl0Owo+PiArCX0KPj4gKwo+PiArCS8qIFNldHVwIE9URyBtb2Rl IGNvcnJlc3BvbmRpbmcgdG8gdGhlIElEIHBpbiAqLwo+PiArCWlmIChwcml2LT5vdGdfbW9kZSA9 PSBVU0JfRFJfTU9ERV9PVEcpIHsKPj4gKwkJLyogVE9GSVggSGFuZGxlIElEIG1vZGUgdG9nZ2xp bmcgdmlhIElSUSAqLwo+PiArCQlvdGdfaWQgPSBkd2MzX21lc29uX2cxMmFfZ2V0X2lkKHByaXYp Owo+PiArCQlpZiAob3RnX2lkICE9IHByaXYtPm90Z19waHlfbW9kZSkgewo+PiArCQkJaWYgKGR3 YzNfbWVzb25fZzEyYV9vdGdfbW9kZV9zZXQocHJpdiwgb3RnX2lkKSkKPj4gKwkJCQlkZXZfd2Fy bihkZXYsICJGYWlsZWQgdG8gc3dpdGNoIE9URyBtb2RlXG4iKTsKPj4gKwkJfQo+PiArCX0KPj4g Kwo+PiArCS8qIFNldHVwIHJvbGUgc3dpdGNoZXIgKi8KPj4gKwlwcml2LT5zd2l0Y2hfZGVzYy51 c2IyX3BvcnQgPSBkd2MzX21lc29uX2cxMl9maW5kX2NoaWxkKGRldiwKPj4gKwkJCQkJCQkJInNu cHMsZHdjMyIpOwo+PiArCXByaXYtPnN3aXRjaF9kZXNjLnVkYyA9IGR3YzNfbWVzb25fZzEyX2Zp bmRfY2hpbGQoZGV2LCAic25wcyxkd2MyIik7Cj4+ICsJcHJpdi0+c3dpdGNoX2Rlc2MuYWxsb3df dXNlcnNwYWNlX2NvbnRyb2wgPSB0cnVlOwo+PiArCXByaXYtPnN3aXRjaF9kZXNjLnNldCA9IGR3 YzNfbWVzb25fZzEyYV9yb2xlX3NldDsKPj4gKwlwcml2LT5zd2l0Y2hfZGVzYy5nZXQgPSBkd2Mz X21lc29uX2cxMmFfcm9sZV9nZXQ7Cj4+ICsKPj4gKwlwcml2LT5yb2xlX3N3aXRjaCA9IHVzYl9y b2xlX3N3aXRjaF9yZWdpc3RlcihkZXYsICZwcml2LT5zd2l0Y2hfZGVzYyk7Cj4+ICsJaWYgKElT X0VSUihwcml2LT5yb2xlX3N3aXRjaCkpCj4+ICsJCWRldl93YXJuKGRldiwgIlVuYWJsZSB0byBy ZWdpc3RlciBSb2xlIFN3aXRjaFxuIik7Cj4+ICsKPj4gKwlwbV9ydW50aW1lX3NldF9hY3RpdmUo ZGV2KTsKPj4gKwlwbV9ydW50aW1lX2VuYWJsZShkZXYpOwo+PiArCXBtX3J1bnRpbWVfZ2V0X3N5 bmMoZGV2KTsKPj4gKwo+PiArCXJldHVybiAwOwo+PiArCj4+ICtlcnJfcGh5c19leGl0Ogo+PiAr CWZvciAoaSA9IDAgOyBpIDwgUEhZX0NPVU5UIDsgKytpKQo+PiArCQlwaHlfZXhpdChwcml2LT5w aHlzW2ldKTsKPj4gKwo+PiArZXJyX3BoeXNfcG93ZXI6Cj4+ICsJZm9yIChpID0gMCA7IGkgPCBQ SFlfQ09VTlQgOyArK2kpCj4+ICsJCXBoeV9wb3dlcl9vZmYocHJpdi0+cGh5c1tpXSk7Cj4+ICsK Pj4gK2Vycl9waHlzX3B1dDoKPj4gKwlmb3IgKGkgPSAwIDsgaSA8IFBIWV9DT1VOVCA7ICsraSkK Pj4gKwkJcGh5X3B1dChwcml2LT5waHlzW2ldKTsKPiB5b3UgZ2V0IHBoeSBieSBkZXZtX3BoeV9v cHRpb25hbF9nZXQoKSwgbm8gbmVlZCBjYWxsIHBoeV9wdXQoKSwgCgpJbmRlZWQsIGFsc28gZm9y Z290IHRoZXNlCgo+PiArCj4+ICsJcmV0dXJuIHJldDsKPj4gK30KPj4gKwo+PiArc3RhdGljIGlu dCBkd2MzX21lc29uX2cxMmFfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4+ ICt7Cj4+ICsJc3RydWN0IGR3YzNfbWVzb25fZzEyYSAqcHJpdiA9IHBsYXRmb3JtX2dldF9kcnZk YXRhKHBkZXYpOwo+PiArCXN0cnVjdCBkZXZpY2UgKmRldiA9ICZwZGV2LT5kZXY7Cj4+ICsJaW50 IGk7Cj4+ICsKPj4gKwl1c2Jfcm9sZV9zd2l0Y2hfdW5yZWdpc3Rlcihwcml2LT5yb2xlX3N3aXRj aCk7Cj4+ICsKPj4gKwlvZl9wbGF0Zm9ybV9kZXBvcHVsYXRlKGRldik7Cj4+ICsKPj4gKwlmb3Ig KGkgPSAwIDsgaSA8IFBIWV9DT1VOVCA7ICsraSkgewo+PiArCQlwaHlfcG93ZXJfb2ZmKHByaXYt PnBoeXNbaV0pOwo+PiArCQlwaHlfZXhpdChwcml2LT5waHlzW2ldKTsKPj4gKwkJcGh5X3B1dChw cml2LT5waHlzW2ldKTsKPiBoZXJlLCBhbmQgcmVtb3ZlIG90aGVycyBpZiBoYXZlLgoKVGhpcyBp cyB0aGUgbGFzdCBvbmUgSSBob3BlCgo+PiArCX0KPj4gKwo+PiArCXBtX3J1bnRpbWVfZGlzYWJs ZShkZXYpOwo+PiArCXBtX3J1bnRpbWVfcHV0X25vaWRsZShkZXYpOwo+PiArCXBtX3J1bnRpbWVf c2V0X3N1c3BlbmRlZChkZXYpOwo+PiArCj4+ICsJcmV0dXJuIDA7Cj4+ICt9Cj4+ICsKPj4gK3N0 YXRpYyBpbnQgX19tYXliZV91bnVzZWQgZHdjM19tZXNvbl9nMTJhX3J1bnRpbWVfc3VzcGVuZChz dHJ1Y3QgZGV2aWNlICpkZXYpCj4+ICt7Cj4+ICsJc3RydWN0IGR3YzNfbWVzb25fZzEyYQkqcHJp diA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOwo+PiArCj4+ICsJY2xrX2Rpc2FibGUocHJpdi0+Y2xr KTsKPj4gKwo+PiArCXJldHVybiAwOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgaW50IF9fbWF5YmVf dW51c2VkIGR3YzNfbWVzb25fZzEyYV9ydW50aW1lX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYp Cj4+ICt7Cj4+ICsJc3RydWN0IGR3YzNfbWVzb25fZzEyYQkqcHJpdiA9IGRldl9nZXRfZHJ2ZGF0 YShkZXYpOwo+PiArCj4+ICsJcmV0dXJuIGNsa19lbmFibGUocHJpdi0+Y2xrKTsKPj4gK30KPj4g Kwo+PiArc3RhdGljIGludCBfX21heWJlX3VudXNlZCBkd2MzX21lc29uX2cxMmFfc3VzcGVuZChz dHJ1Y3QgZGV2aWNlICpkZXYpCj4+ICt7Cj4+ICsJc3RydWN0IGR3YzNfbWVzb25fZzEyYSAqcHJp diA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOwo+PiArCWludCBpOwo+PiArCj4+ICsJZm9yIChpID0g MCA7IGkgPCBQSFlfQ09VTlQgOyArK2kpCj4+ICsJCXBoeV9leGl0KHByaXYtPnBoeXNbaV0pOwo+ PiArCj4+ICsJcmVzZXRfY29udHJvbF9hc3NlcnQocHJpdi0+cmVzZXQpOwo+PiArCj4+ICsJcmV0 dXJuIDA7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBpbnQgX19tYXliZV91bnVzZWQgZHdjM19tZXNv bl9nMTJhX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpCj4+ICt7Cj4+ICsJc3RydWN0IGR3YzNf bWVzb25fZzEyYSAqcHJpdiA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOwo+PiArCWludCBpLCByZXQ7 Cj4+ICsKPj4gKwlyZXNldF9jb250cm9sX2RlYXNzZXJ0KHByaXYtPnJlc2V0KTsKPj4gKwo+PiAr CWR3YzNfbWVzb25fZzEyYV91c2JfaW5pdChwcml2KTsKPj4gKwo+PiArCS8qIEluaXQgUEhZcyAq Lwo+PiArCWZvciAoaSA9IDAgOyBpIDwgUEhZX0NPVU5UIDsgKytpKSB7Cj4+ICsJCXJldCA9IHBo eV9pbml0KHByaXYtPnBoeXNbaV0pOwo+PiArCQlpZiAocmV0KQo+PiArCQkJcmV0dXJuIHJldDsK Pj4gKwl9Cj4gRG8geW91IG5lZWQgcG93ZXIgb24gcGh5cz8KClJlZ3VsYXRvcnMgY2FuIGJlIHRp ZWQgdG8gdGhlIFBIWXMsIHNob3VsZCBJIGRpc2FibGUgcG93ZXIgb24gc3VzcGVuZCBhc3dlbGwg PwoKPj4gKwo+PiArCXJldHVybiAwOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0 IGRldl9wbV9vcHMgZHdjM19tZXNvbl9nMTJhX2Rldl9wbV9vcHMgPSB7Cj4+ICsJU0VUX1NZU1RF TV9TTEVFUF9QTV9PUFMoZHdjM19tZXNvbl9nMTJhX3N1c3BlbmQsIGR3YzNfbWVzb25fZzEyYV9y ZXN1bWUpCj4+ICsJU0VUX1JVTlRJTUVfUE1fT1BTKGR3YzNfbWVzb25fZzEyYV9ydW50aW1lX3N1 c3BlbmQsCj4+ICsJCQlkd2MzX21lc29uX2cxMmFfcnVudGltZV9yZXN1bWUsIE5VTEwpCj4+ICt9 Owo+PiArCj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBkd2MzX21lc29uX2cx MmFfbWF0Y2hbXSA9IHsKPj4gKwl7IC5jb21wYXRpYmxlID0gImFtbG9naWMsbWVzb24tZzEyYS11 c2ItY3RybCIgfSwKPj4gKwl7IC8qIFNlbnRpbmVsICovIH0KPj4gK307Cj4+ICtNT0RVTEVfREVW SUNFX1RBQkxFKG9mLCBkd2MzX21lc29uX2cxMmFfbWF0Y2gpOwo+PiArCj4+ICtzdGF0aWMgc3Ry dWN0IHBsYXRmb3JtX2RyaXZlciBkd2MzX21lc29uX2cxMmFfZHJpdmVyID0gewo+PiArCS5wcm9i ZQkJPSBkd2MzX21lc29uX2cxMmFfcHJvYmUsCj4+ICsJLnJlbW92ZQkJPSBkd2MzX21lc29uX2cx MmFfcmVtb3ZlLAo+PiArCS5kcml2ZXIJCT0gewo+PiArCQkubmFtZQk9ICJkd2MzLW1lc29uLWcx MmEiLAo+PiArCQkub2ZfbWF0Y2hfdGFibGUgPSBkd2MzX21lc29uX2cxMmFfbWF0Y2gsCj4+ICsJ CS5wbQk9ICZkd2MzX21lc29uX2cxMmFfZGV2X3BtX29wcywKPj4gKwl9LAo+PiArfTsKPj4gKwo+ PiArbW9kdWxlX3BsYXRmb3JtX2RyaXZlcihkd2MzX21lc29uX2cxMmFfZHJpdmVyKTsKPj4gK01P RFVMRV9MSUNFTlNFKCJHUEwgdjIiKTsKPj4gK01PRFVMRV9ERVNDUklQVElPTigiQW1sb2dpYyBN ZXNvbiBHMTJBIFVTQiBHbHVlIExheWVyIik7Cj4+ICtNT0RVTEVfQVVUSE9SKCJOZWlsIEFybXN0 cm9uZyA8bmFybXN0cm9uZ0BiYXlsaWJyZS5jb20+Iik7Cj4gCj4gCgpUaGFua3MsCk5laWwK