From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Anand, Jerome" Subject: Re: [PATCH 3/7] ALSA: add shell for Intel HDMI LPE audio driver Date: Thu, 15 Dec 2016 10:55:23 +0000 Message-ID: References: <20161212181043.12512-1-jerome.anand@intel.com> <20161212181043.12512-4-jerome.anand@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Takashi Iwai Cc: "alsa-devel@alsa-project.org" , "intel-gfx@lists.freedesktop.org" , "broonie@kernel.org" , "Ughreja, Rakesh A" List-Id: alsa-devel@alsa-project.org Cgo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tCj4gRnJvbTogVGFrYXNoaSBJd2FpIFttYWls dG86dGl3YWlAc3VzZS5kZV0KPiBTZW50OiBXZWRuZXNkYXksIERlY2VtYmVyIDE0LCAyMDE2IDY6 MTYgUE0KPiBUbzogQW5hbmQsIEplcm9tZSA8amVyb21lLmFuYW5kQGludGVsLmNvbT4KPiBDYzog aW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZzsgYWxzYS1kZXZlbEBhbHNhLXByb2plY3Qu b3JnOwo+IHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tOyBicm9vbmllQGtlcm5lbC5vcmc7 IHBpZXJyZS0KPiBsb3Vpcy5ib3NzYXJ0QGxpbnV4LmludGVsLmNvbTsgVWdocmVqYSwgUmFrZXNo IEEKPiA8cmFrZXNoLmEudWdocmVqYUBpbnRlbC5jb20+Cj4gU3ViamVjdDogUmU6IFtQQVRDSCAz LzddIEFMU0E6IGFkZCBzaGVsbCBmb3IgSW50ZWwgSERNSSBMUEUgYXVkaW8gZHJpdmVyCj4gCj4g T24gTW9uLCAxMiBEZWMgMjAxNiAxOToxMDozOSArMDEwMCwKPiBKZXJvbWUgQW5hbmQgd3JvdGU6 Cj4gPgo+ID4gT24gQmF5dHJhaWwgYW5kIENoZXJyeXRyYWlsLCBIRGF1ZGlvIG1heSBiZSBmdXNl ZCBvdXQgb3IgZGlzYWJsZWQgYnkKPiA+IHRoZSBCSU9TLiBUaGlzIGRyaXZlciBlbmFibGVzIGFu IGFsdGVybmF0ZSBwYXRoIHRvIHRoZSBpOTE1IGRpc3BsYXkKPiA+IHJlZ2lzdGVycyBhbmQgRE1B Lgo+ID4KPiA+IEFsdGhvdWdoIHRoZXJlIGlzIG5vIGhhcmR3YXJlIHBhdGggYmV0d2VlbiBpOTE1 IGRpc3BsYXkgYW5kIExQRS9TU1QKPiA+IGF1ZGlvIGNsdXN0ZXJzLCB0aGlzIEhETUkgY2FwYWJp bGl0eSBpcyByZWZlcnJlZCB0byBpbiB0aGUKPiA+IGRvY3VtZW50YXRpb24gYXMgIkhETUkgTFBF IEF1ZGlvIiBzbyB3ZSBrZWVwIHRoZSBuYW1lIGZvciBjb25zaXN0ZW5jeS4KPiA+IFRoZXJlIGlz IG5vIGhhcmR3YXJlIHBhdGggb3IgY29udHJvbCBkZXBlbmRlbmNpZXMgd2l0aCB0aGUgTFBFL1NT VCBEU1AKPiBmdW5jdGlvbmFsaXR5Lgo+ID4KPiA+IFRoZSBoZG1pLWxwZS1hdWRpbyBkcml2ZXIg d2lsbCBiZSBwcm9iZWQgd2hlbiB0aGUgaTkxNSBkcml2ZXIgY3JlYXRlcwo+ID4gYSBjaGlsZCBw bGF0Zm9ybSBkZXZpY2UuCj4gPgo+ID4gU2luY2UgdGhpcyBkcml2ZXIgaXMgbmVpdGhlciBTb0Mg bm9yIFBDSSwgYSBuZXcgeDg2IGZvbGRlciBpcyBhZGRlZAo+ID4KPiA+IFNpZ25lZC1vZmYtYnk6 IFBpZXJyZS1Mb3VpcyBCb3NzYXJ0Cj4gPiA8cGllcnJlLWxvdWlzLmJvc3NhcnRAbGludXguaW50 ZWwuY29tPgo+ID4gU2lnbmVkLW9mZi1ieTogSmVyb21lIEFuYW5kIDxqZXJvbWUuYW5hbmRAaW50 ZWwuY29tPgo+IAo+IFdoeSBkbyB3ZSBuZWVkIGEgInNoZWxsIiBhbmQgaW5kaXJlY3QgY2FsbHM/ Cj4gVGhpcyBpcyBhIHNtYWxsIGRyaXZlciBzZXQsIHNvIGl0J3Mgbm90IHV0dGVybHkgdW5hY2Nl cHRhYmxlLCBidXQgaXQgc3RpbGwgbWFrZXMKPiB0aGluZ3MgYSBiaXQgbW9yZSBjb21wbGljYXRl ZCB0aGFuIG5lY2Vzc2FyeSwgc28gSSdkIGxpa2UgdG8gdW5kZXJzdGFuZCB0aGUKPiBpZGVhIGJl aGluZCBpdC4KPiAKClRoaXMgc29sdXRpb24gZG9lcyBub3QgdXNlIGNvbXBvbmVudCBpbnRlcmZh Y2UgdG8gdGFsayBiZXR3ZWVuCkF1ZGlvIGFuZCBpOTE1IGRyaXZlci4gVGhlIHJlYXNvbiBmb3Ig dGhhdCBpcyB0aGUgSERNSSBhdWRpbyBkZXZpY2UgaXMgY3JlYXRlZCAKYnkgaTkxNSBkcml2ZXIg d2l0aCBvbmx5IG9uZSBjYWxsYmFjayBwb2ludGVyIHBhc3NlZCBhcyBwZGF0YS4gVW5saWtlIEhE QSwgdGhlIEhETUkgYXVkaW8KZHJpdmVyIGRvZXMgbm90IGdldCBsb2FkZWQgaWYgdGhlIGk5MTUg ZG9lcyBub3QgY3JlYXRlIGNoaWxkIGRldmljZS4KU2luY2UgdGhlcmUgaXMgb25seSBvbmUgY2Fs bGJhY2sgbmVlZGVkIHdlIGFyZSBub3QgdXNpbmcgdGhlIGNvbXBvbmVudCAKaW50ZXJmYWNlIHRv IG1ha2UgdGhpbmdzIHNpbXBsZXIuClRoaXMgZGVzaWduIHdhcyBjby13b3JrZWQgd2l0aCBpOTE1 IGZvbGtzIHRvIG1ha2VzIGludGVyYWN0aW9uIHNpbXBsZXIuCgoKPiAKPiA+IC0tLQo+ID4gIHNv dW5kL0tjb25maWcgICAgICAgICAgICAgICAgICAgIHwgICAyICsKPiA+ICBzb3VuZC9NYWtlZmls ZSAgICAgICAgICAgICAgICAgICB8ICAgMiArLQo+ID4gIHNvdW5kL3g4Ni9LY29uZmlnICAgICAg ICAgICAgICAgIHwgIDE2ICsKPiA+ICBzb3VuZC94ODYvTWFrZWZpbGUgICAgICAgICAgICAgICB8 ICAgOCArCj4gPiAgc291bmQveDg2L2ludGVsX2hkbWlfbHBlX2F1ZGlvLmMgfCA2MjIKPiA+ICsr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gPiAgc291bmQveDg2L2ludGVsX2hk bWlfbHBlX2F1ZGlvLmggfCA2OTIKPiA+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKwo+ID4gIDYgZmlsZXMgY2hhbmdlZCwgMTM0MSBpbnNlcnRpb25zKCspLCAxIGRlbGV0 aW9uKC0pICBjcmVhdGUgbW9kZQo+ID4gMTAwNjQ0IHNvdW5kL3g4Ni9LY29uZmlnICBjcmVhdGUg bW9kZSAxMDA2NDQgc291bmQveDg2L01ha2VmaWxlCj4gPiBjcmVhdGUgbW9kZSAxMDA2NDQgc291 bmQveDg2L2ludGVsX2hkbWlfbHBlX2F1ZGlvLmMgIGNyZWF0ZSBtb2RlCj4gPiAxMDA2NDQgc291 bmQveDg2L2ludGVsX2hkbWlfbHBlX2F1ZGlvLmgKPiA+Cj4gPiBkaWZmIC0tZ2l0IGEvc291bmQv S2NvbmZpZyBiL3NvdW5kL0tjb25maWcgaW5kZXggNWEyNDBlMC4uZWUyZTY5YQo+ID4gMTAwNjQ0 Cj4gPiAtLS0gYS9zb3VuZC9LY29uZmlnCj4gPiArKysgYi9zb3VuZC9LY29uZmlnCj4gPiBAQCAt MTA4LDYgKzEwOCw4IEBAIHNvdXJjZSAic291bmQvcGFyaXNjL0tjb25maWciCj4gPgo+ID4gIHNv dXJjZSAic291bmQvc29jL0tjb25maWciCj4gPgo+ID4gK3NvdXJjZSAic291bmQveDg2L0tjb25m aWciCj4gPiArCj4gPiAgZW5kaWYgIyBTTkQKPiA+Cj4gPiAgbWVudWNvbmZpZyBTT1VORF9QUklN RQo+ID4gZGlmZiAtLWdpdCBhL3NvdW5kL01ha2VmaWxlIGIvc291bmQvTWFrZWZpbGUgaW5kZXgg YzQxYmRmNS4uNmRlNDVkMgo+ID4gMTAwNjQ0Cj4gPiAtLS0gYS9zb3VuZC9NYWtlZmlsZQo+ID4g KysrIGIvc291bmQvTWFrZWZpbGUKPiA+IEBAIC01LDcgKzUsNyBAQCBvYmotJChDT05GSUdfU09V TkQpICs9IHNvdW5kY29yZS5vCj4gPiAgb2JqLSQoQ09ORklHX1NPVU5EX1BSSU1FKSArPSBvc3Mv Cj4gPiAgb2JqLSQoQ09ORklHX0RNQVNPVU5EKSArPSBvc3MvCj4gPiAgb2JqLSQoQ09ORklHX1NO RCkgKz0gY29yZS8gaTJjLyBkcml2ZXJzLyBpc2EvIHBjaS8gcHBjLyBhcm0vIHNoLyBzeW50aC8K PiB1c2IvIFwKPiA+IC0JZmlyZXdpcmUvIHNwYXJjLyBzcGkvIHBhcmlzYy8gcGNtY2lhLyBtaXBz LyBzb2MvIGF0bWVsLyBoZGEvCj4gPiArCWZpcmV3aXJlLyBzcGFyYy8gc3BpLyBwYXJpc2MvIHBj bWNpYS8gbWlwcy8gc29jLyBhdG1lbC8gaGRhLyB4ODYvCj4gPiAgb2JqLSQoQ09ORklHX1NORF9B T0EpICs9IGFvYS8KPiA+Cj4gPiAgIyBUaGlzIG9uZSBtdXN0IGJlIGNvbXBpbGFibGUgZXZlbiBp ZiBzb3VuZCBpcyBjb25maWd1cmVkIG91dCBkaWZmCj4gPiAtLWdpdCBhL3NvdW5kL3g4Ni9LY29u ZmlnIGIvc291bmQveDg2L0tjb25maWcgbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiA+IGluZGV4IDAw MDAwMDAuLjE4MmFkZjMKPiA+IC0tLSAvZGV2L251bGwKPiA+ICsrKyBiL3NvdW5kL3g4Ni9LY29u ZmlnCj4gPiBAQCAtMCwwICsxLDE2IEBACj4gPiArbWVudWNvbmZpZyBTTkRfWDg2Cj4gPiArCXRy aXN0YXRlICJYODYgc291bmQgZGV2aWNlcyIKPiA+ICsJLS0taGVscC0tLQo+ID4gKwo+ID4gKwkg IFg4NiBzb3VuZCBkZXZpY2VzIHRoYXQgZG9uJ3QgZmFsbCB1bmRlciBTb0Mgb3IgUENJIGNhdGVn b3JpZXMKPiA+ICsKPiA+ICtpZiBTTkRfWDg2Cj4gPiArCj4gPiArY29uZmlnIEhETUlfTFBFX0FV RElPCj4gPiArCXRyaXN0YXRlICJIRE1JIGF1ZGlvIHdpdGhvdXQgSERhdWRpbyBvbiBJbnRlbCBB dG9tIHBsYXRmb3JtcyIKPiA+ICsJZGVwZW5kcyBvbiBEUk1fSTkxNQo+ID4gKyAgICAgICAgZGVm YXVsdCBuCj4gPiArICAgICAgICBoZWxwCj4gPiArICAgICAgICAgIENob29zZSB0aGlzIG9wdGlv biB0byBzdXBwb3J0IEhETUkgTFBFIEF1ZGlvIG1vZGUKPiAKPiBQbGVhc2UgZml4IHRoZSBpbmRl bnRhdGlvbi4gIEFsc28gYSBiaXQgbW9yZSBkZXNjcmlwdGlvbiB3b3VsZCBiZSBtb3JlIHVzZXIt Cj4gZnJpZW5kbHkuCj4gCgpPSwoKPiAKPiA+ICsKPiA+ICtlbmRpZgkjIFNORF9YODYKPiA+IGRp ZmYgLS1naXQgYS9zb3VuZC94ODYvTWFrZWZpbGUgYi9zb3VuZC94ODYvTWFrZWZpbGUgbmV3IGZp bGUgbW9kZQo+ID4gMTAwNjQ0IGluZGV4IDAwMDAwMDAuLjc4YjJhZTEKPiA+IC0tLSAvZGV2L251 bGwKPiA+ICsrKyBiL3NvdW5kL3g4Ni9NYWtlZmlsZQo+ID4gQEAgLTAsMCArMSw4IEBACj4gPiAr RFJJVkVSX05BTUUgOj0gaGRtaV9scGVfYXVkaW8KPiA+ICsKPiA+ICtjY2ZsYWdzLXkgKz0gLUlk cml2ZXJzL2dwdS9kcm0vaTkxNQo+IAo+IElzIGl0IGp1c3QgZm9yIGludGVsX2xwZV9hdWRpby5o PyAgVGhlbiByYXRoZXIgcHV0IGludGVsX2xwZV9hdWRpby5oIHRvCj4gaW5jbHVkZS9kcm0uCj4g CgpPSwoKPiAKPiA+ICskKERSSVZFUl9OQU1FKS1vYmpzICs9IFwKPiA+ICsJaW50ZWxfaGRtaV9s cGVfYXVkaW8ubwo+ID4gKwo+ID4gK29iai0kKENPTkZJR19IRE1JX0xQRV9BVURJTykgKz0gJChE UklWRVJfTkFNRSkubwo+IAo+IERvbid0IHVzZSBzdWJzdGl0dXRpb24sIGl0J3MgcmF0aGVyIGNv bmZ1c2luZy4KPiBBbHNvLCB3ZSBnaXZlICJzbmQtIiBwcmVmaXggZm9yIHRoZSBzb3VuZCBkcml2 ZXIgaW4gZ2VuZXJhbC4KPiBJZiBubyBiaWcgcmVhc29uIGFnYWluc3QgaXQsIGtlZXAgdGhpcyBy dWxlIHBsZWFzZS4KPiAKPiAKCk9LCgo+ID4gLS0tIC9kZXYvbnVsbAo+ID4gKysrIGIvc291bmQv eDg2L2ludGVsX2hkbWlfbHBlX2F1ZGlvLmMKPiAoc25pcCkKPiA+IEBAIC0wLDAgKzEsNjIyIEBA Cj4gPiArLyoKPiA+ICsgKiAgaW50ZWxfaGRtaV9scGVfYXVkaW8uYyAtIEludGVsIEhETUkgTFBF IGF1ZGlvIGRyaXZlciBmb3IgQXRvbQo+ID4gK3BsYXRmb3Jtcwo+ID4gKyAqCj4gPiArICogIENv cHlyaWdodCAoQykgMjAxNiBJbnRlbCBDb3JwCj4gPiArICogIEF1dGhvcnM6Cj4gPiArICoJCUpl cm9tZSBBbmFuZCA8amVyb21lLmFuYW5kQGludGVsLmNvbT4KPiA+ICsgKgkJQXJhdmluZCBTaWRk YXBwYWppIDxhcmF2aW5keC5zaWRkYXBwYWppQGludGVsLmNvbT4KPiA+ICsgKgo+ID4KPiArfn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+Cj4g fn5+fn5+fn5+fn5+Cj4gPiArfn5+fn4KPiA+ICsgKgo+ID4gKyAqICBUaGlzIHByb2dyYW0gaXMg ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCj4gPiArbW9kaWZ5 Cj4gPiArICogIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgYXMgcHVibGlzaGVkCj4gPiArYnkKPiA+ICsgKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbjsgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLgo+ID4gKyAqCj4gPiArICogIFRoaXMg cHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs LAo+ID4gK2J1dAo+ID4gKyAqICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCj4gPiArICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKPiBHTlUKPiA+ICsgKiAgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgo+ID4gKyAqCj4gPiArICoKPiA+Cj4g K35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fgo+IH5+fn5+fn5+fn5+fgo+ID4gK35+fn5+Cj4gPiArICovCj4gPiArCj4gPiArI2RlZmluZSBw cl9mbXQoZm10KQkiaGRtaV9scGVfYXVkaW86ICIgZm10Cj4gCj4gQmV0dGVyIHRvIHVzZSBkZXZf KigpIHZhcmlhbnQuCj4gCgpPSwoKPiAKPiA+ICsjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2 aWNlLmg+Cj4gPiArI2luY2x1ZGUgPGxpbnV4L2lycXJldHVybi5oPgo+ID4gKyNpbmNsdWRlIDxs aW51eC9pbnRlcnJ1cHQuaD4KPiA+ICsjaW5jbHVkZSA8bGludXgvaW8uaD4KPiA+ICsjaW5jbHVk ZSA8bGludXgvc2xhYi5oPgo+ID4gKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KPiA+ICsjaW5j bHVkZSA8bGludXgvcGNpLmg+Cj4gPiArI2luY2x1ZGUgPHNvdW5kL3BjbS5oPgo+ID4gKyNpbmNs dWRlIDxzb3VuZC9jb3JlLmg+Cj4gPiArI2luY2x1ZGUgPHNvdW5kL3BjbV9wYXJhbXMuaD4KPiA+ ICsjaW5jbHVkZSA8c291bmQvaW5pdHZhbC5oPgo+ID4gKyNpbmNsdWRlIDxzb3VuZC9jb250cm9s Lmg+Cj4gPiArI2luY2x1ZGUgPHNvdW5kL2luaXR2YWwuaD4KPiA+ICsjaW5jbHVkZSA8ZHJtL2lu dGVsX2xwZV9hdWRpby5oPgo+ID4gKyNpbmNsdWRlICJpbnRlbF9oZG1pX2xwZV9hdWRpby5oIgo+ ID4gKwo+ID4gKy8qIGdsb2JhbHMqLwo+ID4gK3N0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKmdwZGV2 Owo+ID4gK2ludCBfaGRtaV9zdGF0ZTsKPiA+ICt1bmlvbiBvdG1faGRtaV9lbGRfdCBoZG1pX2Vs ZDsKPiAKPiBGb3IgdGhlIGdsb2JhbCB2YXJpYWJsZXMsIGdpdmUgc29tZSBwcmVmaXgsIGFzIHdl IGhhdmUgbm8gcHJvcGVyIG5hbWVzcGFjZQo+IGluIEMuCj4gCgpPSwoKPiBBbmQsIHdoYXQncyB0 aGUgcmVhc29uIHRvIGtlZXAgY29waWVzIG9mIHRoZSBzdGF0ZSBoZXJlPyAgQ2FuJ3Qgd2UgcGVl ayB0aGUKPiBwZGF0YSBhdCBlYWNoIHRpbWU/Cj4gCj4gCgpPSwoKPiA+ICsKPiA+ICtzdHJ1Y3Qg aGRtaV9scGVfYXVkaW9fY3R4IHsKPiA+ICsJaW50IGlycTsKPiA+ICsJdm9pZCBfX2lvbWVtICpt bWlvX3N0YXJ0Owo+ID4gKwloYWRfZXZlbnRfY2FsbF9iYWNrIGhhZF9ldmVudF9jYWxsYmFja3M7 Cj4gPiArCXN0cnVjdCBzbmRfaW50ZWxfaGFkX2ludGVyZmFjZSAqaGFkX2ludGVyZmFjZTsKPiA+ ICsJdm9pZCAqaGFkX3B2dF9kYXRhOwo+ID4gKwlpbnQgdG1kc19jbG9ja19zcGVlZDsKPiA+ICsJ dW5zaWduZWQgaW50IGhhZF9jb25maWdfb2Zmc2V0Owo+ID4gKwlpbnQgaGRtaV9hdWRpb19pbnRl cnJ1cHRfbWFzazsKPiA+ICsJc3RydWN0IHdvcmtfc3RydWN0IGhkbWlfYXVkaW9fd3E7Cj4gPiAr fTsKPiA+ICsKPiA+ICtzdGF0aWMgaW5saW5lIHZvaWQgaGRtaV9zZXRfZWxkKHZvaWQgKmVsZCkg ewo+ID4gKwlpbnQgc2l6ZSA9IChzaXplb2YoaGRtaV9lbGQpKSA+IEhETUlfTUFYX0VMRF9CWVRF UyA/Cj4gPiArCQkJCUhETUlfTUFYX0VMRF9CWVRFUyA6Cj4gPiArCQkJCShzaXplb2YoaGRtaV9l bGQpKTsKPiAKPiBIb3cgY2FuIHRoZSBzaXplIGRpZmZlci4uLj8gIElmIGFueSwgaXQgc2hvdWxk IGJlIGNoZWNrZWQgYnkKPiBCVUlMRF9CVUdfT04oKSBvciBzdWNoLgo+IAoKT0sKCj4gPiArCj4g PiArCW1lbWNweSgodm9pZCAqKSZoZG1pX2VsZCwgZWxkLCBzaXplKTsKPiAKPiBBbHNvLCB3aGVu IGNvcHlpbmcgZnJvbSB0aGUgZ3JhcGhpY3Mgc2lkZSwgaXNuJ3QgaXQgc2FmZXIgdG8gcGFzcyB0 aGUgZ2l2ZW4gRUxECj4gc2l6ZSBhcyB3ZWxsPyAgVGhlbiB3ZSBjYW4gemVyby1jbGVhciB0aGUg cmVzdCBieXRlcyBpZiBpdCdzIHNob3J0Lgo+IAoKT0sKCj4gPiArfQo+ID4gKwo+ID4gK3N0YXRp YyBpbmxpbmUgaW50IGhkbWlfZ2V0X2VsZCh2b2lkICplbGQpIHsKPiA+ICsJbWVtY3B5KGVsZCwg KHZvaWQgKikmaGRtaV9lbGQsIHNpemVvZihoZG1pX2VsZCkpOwo+ID4gKwo+ID4gKwl7Cj4gPiAr CQlpbnQgaTsKPiA+ICsJCXVpbnQ4X3QgKmVsZF9kYXRhID0gKHVpbnQ4X3QgKikmaGRtaV9lbGQ7 Cj4gPiArCj4gPiArCQlwcl9kZWJ1ZygiaGRtaV9nZXRfZWxkOlxue3siKTsKPiA+ICsKPiA+ICsJ CWZvciAoaSA9IDA7IGkgPCBzaXplb2YoaGRtaV9lbGQpOyBpKyspCj4gPiArCQkJcHJfZGVidWco IjB4JXgsICIsIGVsZF9kYXRhW2ldKTsKPiA+ICsKPiA+ICsJCXByX2RlYnVnKCJ9fVxuIik7Cj4g PiArCX0KPiAKPiBUaGVyZSBpcyBhIGhleGR1bXAgZGVidWcgcHJpbnQgaGVscGVyLCB0b28uCj4g CgpPSwoKPiAKPiA+ICsJcmV0dXJuIEhBRF9TVUNDRVNTOwo+IAo+IExldCdzIHVzZSB0aGUgbm9y bWFsIHJldHVybiBjb2RlLCBpLmUuIDAgb3IgYSBuZWdhdGl2ZSBlcnJvci4KPiAKCk9LCgo+IAo+ ID4gK30KPiA+ICsKPiA+ICsKPiA+ICtzdGF0aWMgaW5saW5lIHN0cnVjdCBoZG1pX2xwZV9hdWRp b19jdHggKmdldF9oZG1pX2NvbnRleHQodm9pZCkgewo+ID4gKwlzdHJ1Y3QgaGRtaV9scGVfYXVk aW9fY3R4ICpjdHg7Cj4gPiArCj4gPiArCWN0eCA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKGdwZGV2 KTsKPiA+ICsJcmV0dXJuIGN0eDsKPiA+ICt9Cj4gCj4gSHJtLi4uICBXaHkgbm90IHN0b3Jpbmcg dGhlIGF1ZGlvIHBkZXYgaW4gaTkxNSBwZGF0YT8KPiBUaGVuIHRoZSBub3RpZnkgY2FsbGJhY2sg Y2FuIGV4dHJhY3QgaXQgZWFzaWx5Lgo+IAoKVGhlIGN1cnJlbnQgYXVkaW8gZHJpdmVyIGludGVy ZmFjZSBpbXBsZW1lbnRhdGlvbiB0cmVhdHMgdGhlIGlucHV0IHBkYXRhIGFzClJlYWQtb25seSBh bmQgSSBkb24ndCB3YW50IHRvIHN0b3JlIGFueSBhdWRpbyBpbmZvIGluIHRoYXQuCgo+IChzbmlw KQo+ID4gK3N0YXRpYyBpbnQgaGRtaV9scGVfYXVkaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2Rl dmljZSAqcGRldikgewo+ID4gKwlzdHJ1Y3QgaGRtaV9scGVfYXVkaW9fY3R4ICpjdHg7Cj4gPiAr CXN0cnVjdCBpbnRlbF9oZG1pX2xwZV9hdWRpb19wZGF0YSAqcGRhdGE7Cj4gPiArCWludCBpcnE7 Cj4gPiArCXN0cnVjdCByZXNvdXJjZSAqcmVzX21taW87Cj4gPiArCXZvaWQgX19pb21lbSAqbW1p b19zdGFydDsKPiA+ICsJaW50IHJldCA9IDA7Cj4gPiArCXVuc2lnbmVkIGxvbmcgZmxhZ19pcnE7 Cj4gPiArCWNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGNoZXJyeXZpZXdfaWRzW10gPSB7Cj4g Cj4gTWlzc2luZyBzdGF0aWMuCj4gCgpPSwoKPiA+ICsJCXtQQ0lfREVWSUNFKDB4ODA4NiwgMHgy MmIwKX0sCj4gPiArCQl7UENJX0RFVklDRSgweDgwODYsIDB4MjJiMSl9LAo+ID4gKwkJe1BDSV9E RVZJQ0UoMHg4MDg2LCAweDIyYjIpfSwKPiA+ICsJCXtQQ0lfREVWSUNFKDB4ODA4NiwgMHgyMmIz KX0sCj4gPiArCQl7fQo+ID4gKwl9Owo+ID4gKwo+ID4gKwlwcl9kZWJ1ZygiRW50ZXIgJXNcbiIs IF9fZnVuY19fKTsKPiA+ICsKPiA+ICsJLypUQkQ6cmVtb3ZlIGdsb2JhbHMqLwo+ID4gKwlncGRl diA9IHBkZXY7Cj4gPiArCV9oZG1pX3N0YXRlID0gaGRtaV9jb25uZWN0b3Jfc3RhdHVzX2Rpc2Nv bm5lY3RlZDsKPiA+ICsKPiA+ICsJLyogZ2V0IHJlc291cmNlcyAqLwo+ID4gKwlpcnEgPSBwbGF0 Zm9ybV9nZXRfaXJxKHBkZXYsIDApOwo+ID4gKwlpZiAoaXJxIDwgMCkgewo+ID4gKwkJcHJfZXJy KCJDb3VsZCBub3QgZ2V0IGlycSByZXNvdXJjZVxuIik7Cj4gPiArCQlyZXR1cm4gLUVOT0RFVjsK PiA+ICsJfQo+ID4gKwo+ID4gKwlyZXNfbW1pbyA9IHBsYXRmb3JtX2dldF9yZXNvdXJjZShwZGV2 LCBJT1JFU09VUkNFX01FTSwgMCk7Cj4gPiArCWlmICghcmVzX21taW8pIHsKPiA+ICsJCXByX2Vy cigiQ291bGQgbm90IGdldCBJT19NRU0gcmVzb3VyY2VzXG4iKTsKPiA+ICsJCXJldHVybiAtRU5Y SU87Cj4gPiArCX0KPiA+ICsKPiA+ICsJcHJfZGVidWcoIiVzOiBtbWlvX3N0YXJ0ID0gMHgleCwg bW1pb19lbmQgPSAweCV4XG4iLCBfX2Z1bmNfXywKPiA+ICsJCSh1bnNpZ25lZCBpbnQpcmVzX21t aW8tPnN0YXJ0LCAodW5zaWduZWQgaW50KXJlc19tbWlvLQo+ID5lbmQpOwo+ID4gKwo+ID4gKwlt bWlvX3N0YXJ0ID0gaW9yZW1hcF9ub2NhY2hlKHJlc19tbWlvLT5zdGFydCwKPiA+ICsJCQkJKHNp emVfdCkoKHJlc19tbWlvLT5lbmQgLSByZXNfbW1pby0+c3RhcnQpCj4gPiArCQkJCQkJKyAxKSk7 Cj4gPiArCWlmICghbW1pb19zdGFydCkgewo+ID4gKwkJcHJfZXJyKCJDb3VsZCBub3QgZ2V0IGlv cmVtYXBcbiIpOwo+ID4gKwkJcmV0dXJuIC1FQUNDRVM7Cj4gPiArCX0KPiA+ICsKPiA+ICsJLyog c2V0dXAgaW50ZXJydXB0IGhhbmRsZXIgKi8KPiA+ICsJcmV0ID0gcmVxdWVzdF9pcnEoaXJxLCBk aXNwbGF5X3BpcGVfaW50ZXJydXB0X2hhbmRsZXIsCj4gPiArCQkJMCwgLyogRklYTUU6IGlzIElS UUZfU0hBUkVEIG5lZWRlZCA/ICovCj4gCj4gSXQncyBhIGlycWNoaXAsIHNvIG5vIHNoYXJpbmcg aXMgY29uc2lkZXJlZCwgcmlnaHQ/Cj4gVGhlbiBJUlFGX1NIQVJFRCBpcyByYXRoZXIgd3Jvbmcu Cj4gCgpPSwoKPiA+IC0tLSAvZGV2L251bGwKPiA+ICsrKyBiL3NvdW5kL3g4Ni9pbnRlbF9oZG1p X2xwZV9hdWRpby5oCj4gKHNuaXApCj4gPiArI2RlZmluZSBITURJX0xQRV9BVURJT19EUklWRVJf TkFNRQkJImludGVsLWhkbWktbHBlLQo+IGF1ZGlvIgo+ID4gKyNkZWZpbmUgSEFEX0RSSVZFUl9W RVJTSU9OCSIwLjAxLjAwMyIKPiAKPiBUaGUgZHJpdmVyIHZlcnNpb24gc3RyaW5nIGRvZXNuJ3Qg bWFrZSBzZW5zZSBpbiBtb3N0IGNhc2VzIGZvciBpbi1rZXJuZWwKPiBjb2Rlcy4KPiAKCk9LIC0g d2lsbCBiZSByZW1vdmVkCgo+ID4gKyNkZWZpbmUgSEFEX01BWF9ERVZJQ0VTCQkxCj4gPiArI2Rl ZmluZSBIQURfTUlOX0NIQU5ORUwJCTIKPiA+ICsjZGVmaW5lIEhBRF9NQVhfQ0hBTk5FTAkJOAo+ ID4gKyNkZWZpbmUgSEFEX05VTV9PRl9SSU5HX0JVRlMJNAo+ID4gKwo+ID4gKy8qIEhETUkgQXVk aW8gTFBFIEVycm9yIENvZGVzICovCj4gPiArI2RlZmluZSBIQURfU1VDQ0VTUwkJMAo+ID4gKyNk ZWZpbmUgSEFEX0ZBSUwJCTEKPiAKPiBBdm9pZCB0aGUgb3duIGRlZmluaXRpb24uCj4gCj4gCgoK T0sKCj4gPiArLyogQXNzdW1lIDE5MktIeiwgOGNoYW5uZWwsIDI1bXNlYyBwZXJpb2QgKi8KPiA+ ICsjZGVmaW5lIEhBRF9NQVhfQlVGRkVSCQkoNjAwKjEwMjQpCj4gPiArI2RlZmluZSBIQURfTUlO X0JVRkZFUgkJKDMyKjEwMjQpCj4gPiArI2RlZmluZSBIQURfTUFYX1BFUklPRFMJCTQKPiA+ICsj ZGVmaW5lIEhBRF9NSU5fUEVSSU9EUwkJNAo+ID4gKyNkZWZpbmUgSEFEX01BWF9QRVJJT0RfQllU RVMKPiAJKEhBRF9NQVhfQlVGRkVSL0hBRF9NSU5fUEVSSU9EUykKPiA+ICsjZGVmaW5lIEhBRF9N SU5fUEVSSU9EX0JZVEVTCTI1Ngo+ID4gKyNkZWZpbmUgSEFEX0ZJRk9fU0laRQkJMCAvKiBmaWZv IG5vdCBiZWluZyB1c2VkICovCj4gPiArI2RlZmluZSBNQVhfU1BFQUtFUlMJCTgKPiA+ICsvKiBU T0RPOiBBZGQgb3duIHRsdiB3aGVuIGNoYW5uZWwgbWFwIGlzIHBvcnRlZCBmb3IgdXNlciBzcGFj ZSAqLwo+ID4gKyNkZWZpbmUgVVNFX0FMU0FfREVGQVVMVF9UTFYKPiA+ICsKPiA+ICsjZGVmaW5l IEFVRF9TQU1QTEVfUkFURV8zMgkzMjAwMAo+ID4gKyNkZWZpbmUgQVVEX1NBTVBMRV9SQVRFXzQ0 XzEJNDQxMDAKPiA+ICsjZGVmaW5lIEFVRF9TQU1QTEVfUkFURV80OAk0ODAwMAo+ID4gKyNkZWZp bmUgQVVEX1NBTVBMRV9SQVRFXzg4XzIJODgyMDAKPiA+ICsjZGVmaW5lIEFVRF9TQU1QTEVfUkFU RV85Ngk5NjAwMAo+ID4gKyNkZWZpbmUgQVVEX1NBTVBMRV9SQVRFXzE3Nl80CTE3NjQwMAo+ID4g KyNkZWZpbmUgQVVEX1NBTVBMRV9SQVRFXzE5MgkxOTIwMDAKPiA+ICsKPiA+ICsjZGVmaW5lIEhB RF9NSU5fUkFURQkJQVVEX1NBTVBMRV9SQVRFXzMyCj4gPiArI2RlZmluZSBIQURfTUFYX1JBVEUJ CUFVRF9TQU1QTEVfUkFURV8xOTIKPiA+ICsKPiA+ICsjZGVmaW5lIERJU19TQU1QTEVfUkFURV8y NV8yCTI1MjAwCj4gPiArI2RlZmluZSBESVNfU0FNUExFX1JBVEVfMjcJMjcwMDAKPiA+ICsjZGVm aW5lIERJU19TQU1QTEVfUkFURV81NAk1NDAwMAo+ID4gKyNkZWZpbmUgRElTX1NBTVBMRV9SQVRF Xzc0XzI1CTc0MjUwCj4gPiArI2RlZmluZSBESVNfU0FNUExFX1JBVEVfMTQ4XzUJMTQ4NTAwCj4g PiArI2RlZmluZSBIQURfUkVHX1dJRFRICQkweDA4Cj4gPiArI2RlZmluZSBIQURfTUFYX0hXX0JV RlMJCTB4MDQKPiA+ICsjZGVmaW5lIEhBRF9NQVhfRElQX1dPUkRTCQkxNgo+ID4gKyNkZWZpbmUg SU5URUxfSEFECQkiSW50ZWxIZG1pTHBlQXVkaW8iCj4gPiArCj4gPiArLyogX0FVRF9DT05GSUcg cmVnaXN0ZXIgTUFTSyAqLwo+ID4gKyNkZWZpbmUgQVVEX0NPTkZJR19NQVNLX1VOREVSUlVOCTB4 QzAwMDAwMDAKPiA+ICsjZGVmaW5lIEFVRF9DT05GSUdfTUFTS19TUkRCRwkJMHgwMDAwMDAwMgo+ ID4gKyNkZWZpbmUgQVVEX0NPTkZJR19NQVNLX0ZVTkNSU1QJCTB4MDAwMDAwMDEKPiA+ICsKPiA+ ICsjZGVmaW5lIE1BWF9DTlQJCQkweEZGCj4gPiArI2RlZmluZSBIQURfU1VTUEVORF9ERUxBWQkx MDAwCj4gPiArCj4gPiArI2RlZmluZSBPVE1fSERNSV9FTERfU0laRSAxMjgKPiA+ICsKPiA+ICt1 bmlvbiBvdG1faGRtaV9lbGRfdCB7Cj4gPiArCXVpbnQ4X3QgZWxkX2RhdGFbT1RNX0hETUlfRUxE X1NJWkVdOwo+ID4gKwkjcHJhZ21hIHBhY2soMSkKPiAKPiBVc2UgX19wYWNrZWQgbm90aW9uIGZv ciB0aGUgcGFja2VkIHN0cnVjdHMuCj4gCgpPSwoKPiAKPiA+ICsJc3RydWN0IHsKPiA+ICsJCS8q IEJ5dGVbMF0gPSBFTEQgVmVyc2lvbiBOdW1iZXIgKi8KPiA+ICsJCXVuaW9uIHsKPiA+ICsJCQl1 aW50OF90ICAgYnl0ZTA7Cj4gPiArCQkJc3RydWN0IHsKPiA+ICsJCQkJdWludDhfdCByZXNlcnZl ZDozOyAvKiBSZXNlcmYgKi8KPiA+ICsJCQkJdWludDhfdCBlbGRfdmVyOjU7IC8qIEVMRCBWZXJz aW9uIE51bWJlciAqLwo+ID4gKwkJCQkvKiAwMDAwMGIgLSByZXNlcnZlZAo+ID4gKwkJCQkgKiAw MDAwMWIgLSBmaXJzdCByZXYsIG9ic29sZXRlZAo+ID4gKwkJCQkgKiAwMDAxMGIgLSB2ZXJzaW9u IDIsIHN1cHBvcnRpbmcgQ0VBIHZlcnNpb24KPiA+ICsJCQkJICoJCQk4NjFEIG9yIGJlbG93Cj4g PiArCQkJCSAqIDAwMDExYjoxMTExMWIgLSByZXNlcnZlZAo+ID4gKwkJCQkgKiBmb3IgZnV0dXJl Cj4gPiArCQkJCSAqLwo+ID4gKwkJCX07Cj4gPiArCQl9Owo+ID4gKwo+ID4gKwkJLyogQnl0ZVsx XSA9IFZlbmRvciBWZXJzaW9uIEZpZWxkICovCj4gPiArCQl1bmlvbiB7Cj4gPiArCQkJdWludDhf dCB2ZW5kb3JfdmVyc2lvbjsKPiA+ICsJCQlzdHJ1Y3Qgewo+ID4gKwkJCQl1aW50OF90IHJlc2Vy dmVkMTozOwo+ID4gKwkJCQl1aW50OF90IHZlbGRfdmVyOjU7IC8qIFZlcnNpb24gbnVtYmVyIG9m IHRoZQo+IEVMRAo+ID4gKwkJCQkJCSAgICAgKiBleHRlbnNpb24uIFRoaXMgdmFsdWUgaXMKPiA+ ICsJCQkJCQkgICAgICogcHJvdmlzaW9uZWQgYW5kIHVuaXF1ZQo+IHRvCj4gPiArCQkJCQkJICAg ICAqIGVhY2ggdmVuZG9yLgo+ID4gKwkJCQkJCSAgICAgKi8KPiA+ICsJCQl9Owo+ID4gKwkJfTsK PiA+ICsKPiA+ICsJCS8qIEJ5dGVbMl0gPSBCYXNlbGluZSBMZW5ndGggZmllbGQgKi8KPiA+ICsJ CXVpbnQ4X3QgYmFzZWxpbmVfZWxkX2xlbmd0aDsgLyogTGVuZ3RoIG9mIHRoZSBCYXNlbGluZQo+ IHN0cnVjdHVyZQo+ID4gKwkJCQkJICAgICAgKglkaXZpZGVkIGJ5IEZvdXIuCj4gPiArCQkJCQkg ICAgICAqLwo+ID4gKwo+ID4gKwkJLyogQnl0ZSBbM10gPSBSZXNlcnZlZCBmb3IgZnV0dXJlIHVz ZSAqLwo+ID4gKwkJdWludDhfdCBieXRlMzsKPiA+ICsKPiA+ICsJCS8qIFN0YXJ0aW5nIG9mIHRo ZSBCYXNlTGluZSBFRUxEIHN0cnVjdHVyZQo+ID4gKwkJICogQnl0ZVs0XSA9IE1vbml0b3IgTmFt ZSBMZW5ndGgKPiA+ICsJCSAqLwo+ID4gKwkJdW5pb24gewo+ID4gKwkJCXVpbnQ4X3QgYnl0ZTQ7 Cj4gPiArCQkJc3RydWN0IHsKPiA+ICsJCQkJdWludDhfdCBtbmw6NTsKPiA+ICsJCQkJdWludDhf dCBjZWFfZWRpZF9yZXZfaWQ6MzsKPiA+ICsJCQl9Owo+ID4gKwkJfTsKPiA+ICsKPiA+ICsJCS8q IEJ5dGVbNV0gPSBDYXBhYmlsaXRpZXMgKi8KPiA+ICsJCXVuaW9uIHsKPiA+ICsJCQl1aW50OF90 IGNhcGFiaWxpdGllczsKPiA+ICsJCQlzdHJ1Y3Qgewo+ID4gKwkJCQl1aW50OF90IGhkY3A6MTsg LyogSERDUCBzdXBwb3J0ICovCj4gPiArCQkJCXVpbnQ4X3QgYWlfc3VwcG9ydDoxOyAgIC8qIEFJ IHN1cHBvcnQgKi8KPiA+ICsJCQkJdWludDhfdCBjb25uZWN0aW9uX3R5cGU6MjsgLyogQ29ubmVj dGlvbgo+IHR5cGUKPiA+ICsJCQkJCQkJICAgICogMDAgLSBIRE1JCj4gPiArCQkJCQkJCSAgICAq IDAxIC0gRFAKPiA+ICsJCQkJCQkJICAgICogMTAgLTExICBSZXNlcnZlZAo+ID4gKwkJCQkJCQkg ICAgKiBmb3IgZnV0dXJlCj4gPiArCQkJCQkJCSAgICAqIGNvbm5lY3Rpb24gdHlwZXMKPiA+ICsJ CQkJCQkJICAgICovCj4gPiArCQkJCXVpbnQ4X3Qgc2FkYzo0OyAvKiBJbmRpY2F0ZXMgbnVtYmVy IG9mIDMKPiBieXRlcwo+ID4gKwkJCQkJCSAqIFNob3J0IEF1ZGlvIERlc2NyaXB0b3JzLgo+ID4g KwkJCQkJCSAqLwo+ID4gKwkJCX07Cj4gPiArCQl9Owo+ID4gKwo+ID4gKwkJLyogQnl0ZVs2XSA9 IEF1ZGlvIFN5bmNoIERlbGF5ICovCj4gPiArCQl1aW50OF90IGF1ZGlvX3N5bmNoX2RlbGF5OyAv KiBBbW91bnQgb2YgdGltZSByZXBvcnRlZCBieQo+IHRoZQo+ID4gKwkJCQkJICAgICogc2luayB0 aGF0IHRoZSB2aWRlbyB0cmFpbHMgYXVkaW8KPiA+ICsJCQkJCSAgICAqIGluIG1pbGxpc2Vjb25k cy4KPiA+ICsJCQkJCSAgICAqLwo+ID4gKwo+ID4gKwkJLyogQnl0ZVs3XSA9IFNwZWFrZXIgQWxs b2NhdGlvbiBCbG9jayAqLwo+ID4gKwkJdW5pb24gewo+ID4gKwkJCXVpbnQ4X3Qgc3BlYWtlcl9h bGxvY2F0aW9uX2Jsb2NrOwo+ID4gKwkJCXN0cnVjdCB7Cj4gPiArCQkJCXVpbnQ4X3QgZmxyOjE7 IC8qRnJvbnQgTGVmdCBhbmQgUmlnaHQKPiBjaGFubmVscyovCj4gPiArCQkJCXVpbnQ4X3QgbGZl OjE7IC8qTG93IEZyZXF1ZW5jeSBFZmZlY3QKPiBjaGFubmVsKi8KPiA+ICsJCQkJdWludDhfdCBm YzoxOyAgLypDZW50ZXIgdHJhbnNtaXNzaW9uCj4gY2hhbm5lbCovCj4gPiArCQkJCXVpbnQ4X3Qg cmxyOjE7IC8qUmVhciBMZWZ0IGFuZCBSaWdodCBjaGFubmVscyovCj4gPiArCQkJCXVpbnQ4X3Qg cmM6MTsgLypSZWFyIENlbnRlciBjaGFubmVsKi8KPiA+ICsJCQkJdWludDhfdCBmbHJjOjE7IC8q RnJvbnQgbGVmdCBhbmQgUmlnaHQgb2YgQ2VudGVyCj4gPiArCQkJCQkJICp0cmFuc21pc3Npb24g Y2hhbm5lbHMKPiA+ICsJCQkJCQkgKi8KPiA+ICsJCQkJdWludDhfdCBybHJjOjE7IC8qUmVhciBs ZWZ0IGFuZCBSaWdodCBvZiBDZW50ZXIKPiA+ICsJCQkJCQkgKnRyYW5zbWlzc2lvbiBjaGFubmVs cwo+ID4gKwkJCQkJCSAqLwo+ID4gKwkJCQl1aW50OF90IHJlc2VydmVkMzoxOyAvKiBSZXNlcnZl ZCAqLwo+ID4gKwkJCX07Cj4gPiArCQl9Owo+ID4gKwo+ID4gKwkJLyogQnl0ZVs4IC0gMTVdIC0g OCBCeXRlIHBvcnQgaWRlbnRpZmljYXRpb24gdmFsdWUgKi8KPiA+ICsJCXVpbnQ4X3QgcG9ydF9p ZF92YWx1ZVs4XTsKPiA+ICsKPiA+ICsJCS8qIEJ5dGVbMTYgLSAxN10gLSAyIEJ5dGUgTWFudWZh Y3R1cmVyIElEICovCj4gPiArCQl1aW50OF90IG1hbnVmYWN0dXJlcl9pZFsyXTsKPiA+ICsKPiA+ ICsJCS8qIEJ5dGVbMTggLSAxOV0gLSAyIEJ5dGUgUHJvZHVjdCBJRCAqLwo+ID4gKwkJdWludDhf dCBwcm9kdWN0X2lkWzJdOwo+ID4gKwo+ID4gKwkJLyogQnl0ZSBbMjAtODNdIC0gNjQgQnl0ZXMg b2YgQmFzZUxpbmUgRGF0YSAqLwo+ID4gKwkJdWludDhfdCBtbl9zYW5kX3NhZHNbNjRdOyAvKiBU aGlzIHdpbGwgaW5jbHVkZQo+ID4gKwkJCQkJICAgKiAtIEFTQ0lJIHN0cmluZyBvZiBNb25pdG9y IG5hbWUKPiA+ICsJCQkJCSAgICogLSBMaXN0IG9mIDMgYnl0ZSBTQURzCj4gPiArCQkJCQkgICAq IC0gWmVybyBwYWRkaW5nCj4gPiArCQkJCQkgICAqLwo+ID4gKwo+ID4gKwkJLyogVmVuZG9yIEVM RCBCbG9jayBzaG91bGQgY29udGludWUgaGVyZSEKPiA+ICsJCSAqIE5vIFZlbmRvciBFTEQgYmxv Y2sgZGVmaW5lZCBhcyBvZiBub3cuCj4gPiArCQkgKi8KPiA+ICsJfTsKPiA+ICsJI3ByYWdtYSBw YWNrKCkKPiA+ICt9Owo+IAo+IFdlbGwsIHdlIHNob3VsZCBoYXZlIGEgc2luZ2xlIGRlZmluaXRp b24gb2YgRUxEIHNvbWV3aGVyZS4KPiBXZSBjYW4ga2VlcCB0aGlzIGxvY2FsbHkgdW50aWwgd2Ug aGF2ZSBzb21lIHVuaWZpZWQgaGVhZGVyLCB0aG91Z2guCj4gCgpPSyAKCj4gSW4gYW55d2F5LCBi ZXR0ZXIgdG8gYXZvaWQgdWludDhfdC4KPiAKCk9LIEknbGwgdXNlIHVuc2lnbmVkIGNoYXIKCj4g Cj4gdGhhbmtzLAo+IAo+IFRha2FzaGkKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJl ZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGlu Zm8vaW50ZWwtZ2Z4Cg==