From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lyude Paul Subject: Re: [PATCH i-g-t 1/3] lib: Add audio library with dedicated helpers Date: Fri, 18 Aug 2017 12:16:18 -0400 Message-ID: <1503072978.3702.3.camel@redhat.com> References: <20170817160557.14238-1-paul.kocialkowski@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by gabe.freedesktop.org (Postfix) with ESMTPS id 6B8626E765 for ; Fri, 18 Aug 2017 16:16:20 +0000 (UTC) In-Reply-To: <20170817160557.14238-1-paul.kocialkowski@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Paul Kocialkowski , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T25lIG1vcmUgc21hbGwgZm9ybWF0dGluZyBjaGFuZ2UKCk9uIFRodSwgMjAxNy0wOC0xNyBhdCAx OTowNSArMDMwMCwgUGF1bCBLb2NpYWxrb3dza2kgd3JvdGU6Cj4gVGhpcyBpbnRyb2R1Y2VzIGFu IGF1ZGlvIGxpYnJhcnksIHdpdGggZGVkaWNhdGVkIGhlbHBlcnMgZm9yIGJvdGgKPiBnZW5lcmF0 aW5nIHNpZ25hbHMgYW5kIGRldGVjdGluZyBwZWFrIGZyZXF1ZW5jaWVzIGluIGEgc2lnbmFsLgo+ IAo+IFRoaXMgbGlicmFyeSBwYXZlcyB0aGUgd2F5IGZvciB0ZXN0aW5nIGF1ZGlvIGdvaW5nIHRo cm91Z2ggZGlzcGxheQo+IGNvbm5lY3RvcnMsIHN1Y2ggYXMgSERNSS4KPiAKPiBTaWduZWQtb2Zm LWJ5OiBQYXVsIEtvY2lhbGtvd3NraSA8cGF1bC5rb2NpYWxrb3dza2lAbGludXguaW50ZWwuY29t Pgo+IC0tLQo+ICAuLi4vaW50ZWwtZ3B1LXRvb2xzL2ludGVsLWdwdS10b29scy1kb2NzLnhtbCAg ICAgICB8ICAgMSArCj4gIGxpYi9NYWtlZmlsZS5hbSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgICAyICsKPiAgbGliL2lndC5oICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfCAgIDEgKwo+ICBsaWIvaWd0X2F1ZGlvLmMgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8IDMyNgo+ICsrKysrKysrKysrKysrKysrKysrKwo+ICBsaWIv aWd0X2F1ZGlvLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA0NyArKysK PiAgNSBmaWxlcyBjaGFuZ2VkLCAzNzcgaW5zZXJ0aW9ucygrKQo+ICBjcmVhdGUgbW9kZSAxMDA2 NDQgbGliL2lndF9hdWRpby5jCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvaWd0X2F1ZGlvLmgK PiAKPiBkaWZmIC0tZ2l0IGEvZG9jcy9yZWZlcmVuY2UvaW50ZWwtZ3B1LXRvb2xzL2ludGVsLWdw dS10b29scy1kb2NzLnhtbAo+IGIvZG9jcy9yZWZlcmVuY2UvaW50ZWwtZ3B1LXRvb2xzL2ludGVs LWdwdS10b29scy1kb2NzLnhtbAo+IGluZGV4IGY4OGFmZDJhLi5jNzcxNTljZiAxMDA2NDQKPiAt LS0gYS9kb2NzL3JlZmVyZW5jZS9pbnRlbC1ncHUtdG9vbHMvaW50ZWwtZ3B1LXRvb2xzLWRvY3Mu eG1sCj4gKysrIGIvZG9jcy9yZWZlcmVuY2UvaW50ZWwtZ3B1LXRvb2xzL2ludGVsLWdwdS10b29s cy1kb2NzLnhtbAo+IEBAIC0xNiw2ICsxNiw3IEBACj4gICAgPGNoYXB0ZXI+Cj4gICAgICA8dGl0 bGU+QVBJIFJlZmVyZW5jZTwvdGl0bGU+Cj4gICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvZHJt dGVzdC54bWwiLz4KPiArICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9pZ3RfYXVkaW8ueG1sIi8+ Cj4gICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvaWd0X2F1eC54bWwiLz4KPiAgICAgIDx4aTpp bmNsdWRlIGhyZWY9InhtbC9pZ3RfY2hhbWVsaXVtLnhtbCIvPgo+ICAgICAgPHhpOmluY2x1ZGUg aHJlZj0ieG1sL2lndF9jb3JlLnhtbCIvPgo+IGRpZmYgLS1naXQgYS9saWIvTWFrZWZpbGUuYW0g Yi9saWIvTWFrZWZpbGUuYW0KPiBpbmRleCA5YzkzMmQ2Zi4uNWVhMDgzMTQgMTAwNjQ0Cj4gLS0t IGEvbGliL01ha2VmaWxlLmFtCj4gKysrIGIvbGliL01ha2VmaWxlLmFtCj4gQEAgLTMzLDYgKzMz LDggQEAgaWYgSEFWRV9HU0wKPiAgbGliX3NvdXJjZV9saXN0ICs9CQlcCj4gIAlpZ3RfZnJhbWUu YwkJXAo+ICAJaWd0X2ZyYW1lLmgJCVwKPiArCWlndF9hdWRpby5jCQlcCj4gKwlpZ3RfYXVkaW8u aAkJXAo+ICAJJChOVUxMKQo+ICBlbmRpZgo+ICAKPiBkaWZmIC0tZ2l0IGEvbGliL2lndC5oIGIv bGliL2lndC5oCj4gaW5kZXggZDE2YTQ5OTEuLmE3NWQyZGI3IDEwMDY0NAo+IC0tLSBhL2xpYi9p Z3QuaAo+ICsrKyBiL2xpYi9pZ3QuaAo+IEBAIC0zNSw2ICszNSw3IEBACj4gICNpbmNsdWRlICJp Z3RfZHVtbXlsb2FkLmgiCj4gICNpbmNsdWRlICJpZ3RfZmIuaCIKPiAgI2luY2x1ZGUgImlndF9m cmFtZS5oIgo+ICsjaW5jbHVkZSAiaWd0X2F1ZGlvLmgiCj4gICNpbmNsdWRlICJpZ3RfZ3QuaCIK PiAgI2luY2x1ZGUgImlndF9rbXMuaCIKPiAgI2luY2x1ZGUgImlndF9wbS5oIgo+IGRpZmYgLS1n aXQgYS9saWIvaWd0X2F1ZGlvLmMgYi9saWIvaWd0X2F1ZGlvLmMKPiBuZXcgZmlsZSBtb2RlIDEw MDY0NAo+IGluZGV4IDAwMDAwMDAwLi41MjdhNDkzMAo+IC0tLSAvZGV2L251bGwKPiArKysgYi9s aWIvaWd0X2F1ZGlvLmMKPiBAQCAtMCwwICsxLDMyNiBAQAo+ICsvKgo+ICsgKiBDb3B5cmlnaHQg wqkgMjAxNyBJbnRlbCBDb3Jwb3JhdGlvbgo+ICsgKgo+ICsgKiBQZXJtaXNzaW9uIGlzIGhlcmVi eSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbgo+IG9idGFpbmluZyBhCj4g KyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZp bGVzICh0aGUKPiAiU29mdHdhcmUiKSwKPiArICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0 aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQKPiBsaW1pdGF0aW9uCj4gKyAqIHRo ZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRl LAo+IHN1YmxpY2Vuc2UsCj4gKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUs IGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tCj4gdGhlCj4gKyAqIFNvZnR3YXJlIGlzIGZ1 cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nCj4gY29uZGl0aW9uczoK PiArICoKPiArICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lv biBub3RpY2UgKGluY2x1ZGluZwo+IHRoZSBuZXh0Cj4gKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUg aW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbAo+IHBvcnRpb25zIG9mIHRoZQo+ ICsgKiBTb2Z0d2FyZS4KPiArICoKPiArICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJ UyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsCj4gRVhQUkVTUyBPUgo+ICsgKiBJTVBM SUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCj4gTUVS Q0hBTlRBQklMSVRZLAo+ICsgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQg Tk9OSU5GUklOR0VNRU5ULiAgSU4gTk8KPiBFVkVOVCBTSEFMTAo+ICsgKiBUSEUgQVVUSE9SUyBP UiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUwo+IE9S IE9USEVSCj4gKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1Qs IFRPUlQgT1IgT1RIRVJXSVNFLAo+IEFSSVNJTkcKPiArICogRlJPTSwgT1VUIE9GIE9SIElOIENP Tk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUgo+IE9USEVSIERFQUxJTkdT Cj4gKyAqIElOIFRIRSBTT0ZUV0FSRS4KPiArICoKPiArICogQXV0aG9yczoKPiArICogIFBhdWwg S29jaWFsa293c2tpIDxwYXVsLmtvY2lhbGtvd3NraUBsaW51eC5pbnRlbC5jb20+Cj4gKyAqLwo+ ICsKPiArI2luY2x1ZGUgImNvbmZpZy5oIgo+ICsKPiArI2luY2x1ZGUgPG1hdGguaD4KPiArI2lu Y2x1ZGUgPGdzbC9nc2xfZmZ0X3JlYWwuaD4KPiArCj4gKyNpbmNsdWRlICJpZ3QuaCIKPiArCj4g KyNkZWZpbmUgRlJFUVNfTUFYCTgKPiArCj4gKy8qKgo+ICsgKiBTRUNUSU9OOmlndF9hdWRpbwo+ ICsgKiBAc2hvcnRfZGVzY3JpcHRpb246IExpYnJhcnkgZm9yIGF1ZGlvLXJlbGF0ZWQgdGVzdHMK PiArICogQHRpdGxlOiBBdWRpbwo+ICsgKiBAaW5jbHVkZTogaWd0X2F1ZGlvLmgKPiArICoKPiAr ICogVGhpcyBsaWJyYXJ5IGNvbnRhaW5zIGhlbHBlcnMgZm9yIGF1ZGlvLXJlbGF0ZWQgdGVzdHMu IE1vcmUKPiBzcGVjaWZpY2FsbHksCj4gKyAqIGl0IGFsbG93cyBnZW5lcmF0aW5nIGFkZGl0aW9u cyBvZiBzaW5lIHNpZ25hbHMgYXMgd2VsbCBhcwo+IGRldGVjdGluZyB0aGVtLgo+ICsgKi8KPiAr Cj4gK3N0cnVjdCBhdWRpb19zaWduYWxfZnJlcSB7Cj4gKwlpbnQgZnJlcTsKPiArCj4gKwlzaG9y dCAqcGVyaW9kOwo+ICsJaW50IGZyYW1lczsKPiArCWludCBvZmZzZXQ7Cj4gK307Cj4gKwo+ICtz dHJ1Y3QgYXVkaW9fc2lnbmFsIHsKPiArCWludCBjaGFubmVsczsKPiArCWludCBzYW1wbGluZ19y YXRlOwo+ICsKPiArCXN0cnVjdCBhdWRpb19zaWduYWxfZnJlcSBmcmVxc1tGUkVRU19NQVhdOwo+ ICsJaW50IGZyZXFzX2NvdW50Owo+ICt9Owo+ICsKPiArLyoqCj4gKyAqIGF1ZGlvX3NpZ25hbF9p bml0Ogo+ICsgKiBAY2hhbm5lbHM6IFRoZSBudW1iZXIgb2YgY2hhbm5lbHMgdG8gdXNlIGZvciB0 aGUgc2lnbmFsIAo+ICsgKiBAc2FtcGxpbmdfcmF0ZTogVGhlIHNhbXBsaW5nIHJhdGUgdG8gdXNl IGZvciB0aGUgc2lnbmFsCj4gKyAqCj4gKyAqIEFsbG9jYXRlIGFuZCBpbml0aWFsaXplIGFuIGF1 ZGlvIHNpZ25hbCBzdHJ1Y3R1cmUgd2l0aCB0aGUgZ2l2ZW4KPiBwYXJhbWV0ZXJzLgo+ICsgKgo+ ICsgKiBSZXR1cm5zOiBBIG5ld2x5LWFsbG9jYXRlZCBhdWRpbyBzaWduYWwgc3RydWN0dXJlCj4g KyAqLwo+ICtzdHJ1Y3QgYXVkaW9fc2lnbmFsICphdWRpb19zaWduYWxfaW5pdChpbnQgY2hhbm5l bHMsIGludAo+IHNhbXBsaW5nX3JhdGUpCj4gK3sKPiArCXN0cnVjdCBhdWRpb19zaWduYWwgKnNp Z25hbDsKPiArCj4gKwlzaWduYWwgPSBtYWxsb2Moc2l6ZW9mKHN0cnVjdCBhdWRpb19zaWduYWwp KTsKPiArCW1lbXNldChzaWduYWwsIDAsIHNpemVvZihzdHJ1Y3QgYXVkaW9fc2lnbmFsKSk7Cj4g Kwo+ICsJc2lnbmFsLT5zYW1wbGluZ19yYXRlID0gc2FtcGxpbmdfcmF0ZTsKPiArCXNpZ25hbC0+ Y2hhbm5lbHMgPSBjaGFubmVsczsKPiArCj4gKwlyZXR1cm4gc2lnbmFsOwo+ICt9Cj4gKwo+ICsv KioKPiArICogYXVkaW9fc2lnbmFsX2FkZF9mcmVxdWVuY3k6Cj4gKyAqIEBzaWduYWw6IFRoZSB0 YXJnZXQgc2lnbmFsIHN0cnVjdHVyZQo+ICsgKiBAZnJlcXVlbmN5OiBUaGUgZnJlcXVlbmN5IHRv IGFkZCB0byB0aGUgc2lnbmFsCj4gKyAqCj4gKyAqIEFkZCBhIGZyZXF1ZW5jeSB0byB0aGUgc2ln bmFsLgo+ICsgKgo+ICsgKiBSZXR1cm5zOiBBbiBpbnRlZ2VyIGVxdWFsIHRvIHplcm8gZm9yIHN1 Y2Nlc3MgYW5kIG5lZ2F0aXZlIGZvcgo+IGZhaWx1cmUKPiArICovCj4gK2ludCBhdWRpb19zaWdu YWxfYWRkX2ZyZXF1ZW5jeShzdHJ1Y3QgYXVkaW9fc2lnbmFsICpzaWduYWwsIGludAo+IGZyZXF1 ZW5jeSkKPiArewo+ICsJaW50IGluZGV4ID0gc2lnbmFsLT5mcmVxc19jb3VudDsKPiArCj4gKwlp ZiAoaW5kZXggPT0gRlJFUVNfTUFYKQo+ICsJCXJldHVybiAtMTsKPiArCj4gKwkvKiBTdGF5IHdp dGhpbiB0aGUgTnlxdWlzdOKAk1NoYW5ub24gc2FtcGxpbmcgdGhlb3JlbS4gKi8KPiArCWlmIChm cmVxdWVuY3kgPiBzaWduYWwtPnNhbXBsaW5nX3JhdGUgLyAyKQo+ICsJCXJldHVybiAtMTsKPiAr Cj4gKwkvKiBDbGlwIHRoZSBmcmVxdWVuY3kgdG8gYW4gaW50ZWdlciBtdWx0aXBsZSBvZiB0aGUg c2FtcGxpbmcKPiByYXRlLgo+ICsJICogVGhpcyB0byBiZSBhYmxlIHRvIHN0b3JlIGEgZnVsbCBw ZXJpb2Qgb2YgaXQgYW5kIHVzZSB0aGF0Cj4gZm9yCj4gKwkgKiBzaWduYWwgZ2VuZXJhdGlvbiwg aW5zdGVhZCBvZiByZWN1cnJlbnQgY2FsbHMgdG8gc2luKCkuCj4gKwkgKi8KPiArCWZyZXF1ZW5j eSA9IHNpZ25hbC0+c2FtcGxpbmdfcmF0ZSAvIChzaWduYWwtPnNhbXBsaW5nX3JhdGUgLwo+IGZy ZXF1ZW5jeSk7Cj4gKwo+ICsJaWd0X2RlYnVnKCJBZGRpbmcgdGVzdCBmcmVxdWVuY3kgJWRcbiIs IGZyZXF1ZW5jeSk7Cj4gKwo+ICsJc2lnbmFsLT5mcmVxc1tpbmRleF0uZnJlcSA9IGZyZXF1ZW5j eTsKPiArCXNpZ25hbC0+ZnJlcXNbaW5kZXhdLmZyYW1lcyA9IDA7Cj4gKwlzaWduYWwtPmZyZXFz W2luZGV4XS5vZmZzZXQgPSAwOwo+ICsJc2lnbmFsLT5mcmVxc19jb3VudCsrOwo+ICsKPiArCXJl dHVybiAwOwo+ICt9Cj4gKwo+ICsvKioKPiArICogYXVkaW9fc2lnbmFsX3N5bnRoZXNpemU6Cj4g KyAqIEBzaWduYWw6IFRoZSB0YXJnZXQgc2lnbmFsIHN0cnVjdHVyZQo+ICsgKgo+ICsgKiBTeW50 aGVzaXplIHRoZSBkYXRhIHRhYmxlcyBmb3IgdGhlIGF1ZGlvIHNpZ25hbCwgdGhhdCBjYW4gbGF0 ZXIKPiBiZSB1c2VkCj4gKyAqIHRvIGZpbGwgYXVkaW8gYnVmZmVycy4gVGhlIHJlc291cmNlcyBh bGxvY2F0ZWQgYnkgdGhpcyBmdW5jdGlvbgo+IG11c3QgYmUKPiArICogZnJlZWQgd2l0aCBhIGNh bGwgdG8gYXVkaW9fc2lnbmFsX2NsZWFuIHdoZW4gdGhlIHNpZ25hbCBpcyBubwo+IGxvbmdlciB1 c2VkLgo+ICsgKi8KPiArdm9pZCBhdWRpb19zaWduYWxfc3ludGhlc2l6ZShzdHJ1Y3QgYXVkaW9f c2lnbmFsICpzaWduYWwpCj4gK3sKPiArCXNob3J0ICpwZXJpb2Q7Cj4gKwlkb3VibGUgdmFsdWU7 Cj4gKwlpbnQgZnJhbWVzOwo+ICsJaW50IGZyZXE7Cj4gKwlpbnQgaSwgajsKPiArCj4gKwlpZiAo c2lnbmFsLT5mcmVxc19jb3VudCA9PSAwKQo+ICsJCXJldHVybjsKPiArCj4gKwlmb3IgKGkgPSAw OyBpIDwgc2lnbmFsLT5mcmVxc19jb3VudDsgaSsrKSB7Cj4gKwkJZnJlcSA9IHNpZ25hbC0+ZnJl cXNbaV0uZnJlcTsKPiArCQlmcmFtZXMgPSBzaWduYWwtPnNhbXBsaW5nX3JhdGUgLyBmcmVxOwo+ ICsKPiArCQlwZXJpb2QgPSBjYWxsb2MoMSwgZnJhbWVzICogc2l6ZW9mKHNob3J0KSk7Cj4gKwo+ ICsJCWZvciAoaiA9IDA7IGogPCBmcmFtZXM7IGorKykgewo+ICsJCQl2YWx1ZSA9IDIuMCAqIE1f UEkgKiBmcmVxIC8gc2lnbmFsLQo+ID5zYW1wbGluZ19yYXRlICogajsKPiArCQkJdmFsdWUgPSBz aW4odmFsdWUpICogU0hSVF9NQVggLyBzaWduYWwtCj4gPmZyZXFzX2NvdW50Owo+ICsKPiArCQkJ cGVyaW9kW2pdID0gKHNob3J0KSB2YWx1ZTsgCj4gKwkJfQo+ICsKPiArCQlzaWduYWwtPmZyZXFz W2ldLnBlcmlvZCA9IHBlcmlvZDsKPiArCQlzaWduYWwtPmZyZXFzW2ldLmZyYW1lcyA9IGZyYW1l czsKPiArCX0KPiArfQo+ICsKPiArLyoqCj4gKyAqIGF1ZGlvX3NpZ25hbF9zeW50aGVzaXplOgo+ ICsgKiBAc2lnbmFsOiBUaGUgdGFyZ2V0IHNpZ25hbCBzdHJ1Y3R1cmUKPiArICoKPiArICogRnJl ZSB0aGUgcmVzb3VyY2VzIGFsbG9jYXRlZCBieSBhdWRpb19zaWduYWxfc3ludGhlc2l6ZSBhbmQK PiByZW1vdmUKPiArICogdGhlIHByZXZpb3VzbHktYWRkZWQgZnJlcXVlbmNpZXMuCj4gKyAqLwo+ ICt2b2lkIGF1ZGlvX3NpZ25hbF9jbGVhbihzdHJ1Y3QgYXVkaW9fc2lnbmFsICpzaWduYWwpCj4g K3sKPiArCWludCBpOwo+ICsKPiArCWZvciAoaSA9IDA7IGkgPCBzaWduYWwtPmZyZXFzX2NvdW50 OyBpKyspIHsKPiArCQlpZiAoc2lnbmFsLT5mcmVxc1tpXS5wZXJpb2QpCj4gKwkJCWZyZWUoc2ln bmFsLT5mcmVxc1tpXS5wZXJpb2QpOwo+ICsKPiArCQltZW1zZXQoJnNpZ25hbC0+ZnJlcXNbaV0s IDAsIHNpemVvZihzdHJ1Y3QKPiBhdWRpb19zaWduYWxfZnJlcSkpOwo+ICsJfQo+ICsKPiArCXNp Z25hbC0+ZnJlcXNfY291bnQgPSAwOwo+ICt9Cj4gKwo+ICsvKioKPiArICogYXVkaW9fc2lnbmFs X2ZpbGw6Cj4gKyAqIEBzaWduYWw6IFRoZSB0YXJnZXQgc2lnbmFsIHN0cnVjdHVyZQo+ICsgKiBA YnVmZmVyOiBUaGUgdGFyZ2V0IGJ1ZmZlciB0byBmaWxsCj4gKyAqIEBmcmFtZXM6IFRoZSBudW1i ZXIgb2YgZnJhbWVzIHRvIGZpbGwKPiArICoKPiArICogRmlsbCB0aGUgcmVxdWVzdGVkIG51bWJl ciBvZiBmcmFtZXMgdG8gdGhlIHRhcmdldCBidWZmZXIgd2l0aCB0aGUKPiBhdWRpbwo+ICsgKiBz aWduYWwgZGF0YSAoaW4gaW50ZXJsZWF2ZWQgUzE2X0xFIGZvcm1hdCksIGF0IHRoZSByZXF1ZXN0 ZWQKPiBzYW1wbGluZyByYXRlCj4gKyAqIGFuZCBudW1iZXIgb2YgY2hhbm5lbHMuCj4gKyAqLwo+ ICt2b2lkIGF1ZGlvX3NpZ25hbF9maWxsKHN0cnVjdCBhdWRpb19zaWduYWwgKnNpZ25hbCwgc2hv cnQgKmJ1ZmZlciwKPiBpbnQgZnJhbWVzKQo+ICt7Cj4gKwlzaG9ydCAqZGVzdGluYXRpb247Cj4g KwlzaG9ydCAqc291cmNlOwo+ICsJaW50IHRvdGFsOwo+ICsJaW50IGZyZXFfZnJhbWVzOwo+ICsJ aW50IGZyZXFfb2Zmc2V0Owo+ICsJaW50IGNvdW50Owo+ICsJaW50IGksIGosIGs7Cj4gKwo+ICsJ bWVtc2V0KGJ1ZmZlciwgMCwgc2l6ZW9mKHNob3J0KSAqIHNpZ25hbC0+Y2hhbm5lbHMgKgo+IGZy YW1lcyk7Cj4gKwo+ICsJZm9yIChpID0gMDsgaSA8IHNpZ25hbC0+ZnJlcXNfY291bnQ7IGkrKykg ewo+ICsJCXRvdGFsID0gMDsKPiArCj4gKwkJd2hpbGUgKHRvdGFsIDwgZnJhbWVzKSB7Cj4gKwkJ CWZyZXFfZnJhbWVzID0gc2lnbmFsLT5mcmVxc1tpXS5mcmFtZXM7Cj4gKwkJCWZyZXFfb2Zmc2V0 ID0gc2lnbmFsLT5mcmVxc1tpXS5vZmZzZXQ7Cj4gKwo+ICsJCQlzb3VyY2UgPSBzaWduYWwtPmZy ZXFzW2ldLnBlcmlvZCArCj4gZnJlcV9vZmZzZXQ7Cj4gKwkJCWRlc3RpbmF0aW9uID0gYnVmZmVy ICsgdG90YWwgKiBzaWduYWwtCj4gPmNoYW5uZWxzOwo+ICsKPiArCQkJY291bnQgPSBmcmVxX2Zy YW1lcyAtIGZyZXFfb2Zmc2V0Owo+ICsJCQlpZiAoY291bnQgPiAoZnJhbWVzIC0gdG90YWwpKQo+ ICsJCQkJY291bnQgPSBmcmFtZXMgLSB0b3RhbDsKPiArCj4gKwkJCWZyZXFfb2Zmc2V0ICs9IGNv dW50Owo+ICsJCQlmcmVxX29mZnNldCAlPSBmcmVxX2ZyYW1lczsKPiArCj4gKwkJCXNpZ25hbC0+ ZnJlcXNbaV0ub2Zmc2V0ID0gZnJlcV9vZmZzZXQ7Cj4gKwo+ICsJCQlmb3IgKGogPSAwOyBqIDwg Y291bnQ7IGorKykgewo+ICsJCQkJZm9yIChrID0gMDsgayA8IHNpZ25hbC0+Y2hhbm5lbHM7Cj4g aysrKSB7Cj4gKwkJCQkJZGVzdGluYXRpb25baiAqIHNpZ25hbC0KPiA+Y2hhbm5lbHMgKyBrXSAr PSBzb3VyY2Vbal07Cj4gKwkJCQl9Cj4gKwkJCX0KPiArCj4gKwkJCXRvdGFsICs9IGNvdW50Owo+ ICsJCX0KPiArCX0KPiArfQo+ICsKPiArLyoqCj4gKyAqIGF1ZGlvX3NpZ25hbF9kZXRlY3Q6Cj4g KyAqIEBzaWduYWw6IFRoZSB0YXJnZXQgc2lnbmFsIHN0cnVjdHVyZQo+ICsgKiBAY2hhbm5lbHM6 IFRoZSBpbnB1dCBkYXRhJ3MgbnVtYmVyIG9mIGNoYW5uZWxzCj4gKyAqIEBzYW1wbGluZ19yYXRl OiBUaGUgaW5wdXQgZGF0YSdzIHNhbXBsaW5nIHJhdGUKPiArICogQGJ1ZmZlcjogVGhlIGlucHV0 IGRhdGEncyBidWZmZXIKPiArICogQGZyYW1lczogVGhlIGlucHV0IGRhdGEncyBudW1iZXIgb2Yg ZnJhbWVzCj4gKyAqCj4gKyAqIERldGVjdCB0aGF0IHRoZSBmcmVxdWVuY2llcyBzcGVjaWZpZWQg aW4gQHNpZ25hbCwgYW5kIG9ubHkgdGhvc2UsCj4gYXJlCj4gKyAqIHByZXNlbnQgaW4gdGhlIGlu cHV0IGRhdGEuIFRoZSBpbnB1dCBkYXRhJ3MgZm9ybWF0IGlzIHJlcXVpcmVkIHRvCj4gYmUgUzE2 X0xFLgo+ICsgKgo+ICsgKiBSZXR1cm5zOiBBIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRo ZSBkZXRlY3Rpb24gd2FzCj4gc3VjY2Vzc2Z1bAo+ICsgKi8KPiArYm9vbCBhdWRpb19zaWduYWxf ZGV0ZWN0KHN0cnVjdCBhdWRpb19zaWduYWwgKnNpZ25hbCwgaW50IGNoYW5uZWxzLAo+ICsJCQkg aW50IHNhbXBsaW5nX3JhdGUsIHNob3J0ICpidWZmZXIsIGludAo+IGZyYW1lcykKPiArewo+ICsJ ZG91YmxlIGRhdGFbZnJhbWVzXTsKPiArCWludCBhbXBsaXR1ZGVbZnJhbWVzIC8gMl07Cj4gKwli b29sIGRldGVjdGVkW3NpZ25hbC0+ZnJlcXNfY291bnRdOwo+ICsJaW50IHRocmVzaG9sZDsKPiAr CWJvb2wgYWJvdmU7Cj4gKwlpbnQgZXJyb3I7Cj4gKwlpbnQgZnJlcTsKPiArCWludCBtYXg7Cj4g KwlpbnQgYywgaSwgajsKPiArCj4gKwkvKiBBbGxvd2VkIGVycm9yIGluIEh6IGR1ZSB0byBGRlQg c3RlcC4gKi8KPiArCWVycm9yID0gc2FtcGxpbmdfcmF0ZSAvIGZyYW1lczsKPiArCj4gKwlmb3Ig KGMgPSAwOyBjIDwgY2hhbm5lbHM7IGMrKykgewo+ICsJCWZvciAoaSA9IDA7IGkgPCBmcmFtZXM7 IGkrKykKPiArCQkJZGF0YVtpXSA9IChkb3VibGUpIGJ1ZmZlcltpICogY2hhbm5lbHMgKyBjXTsK PiArCj4gKwkJZ3NsX2ZmdF9yZWFsX3JhZGl4Ml90cmFuc2Zvcm0oZGF0YSwgMSwgZnJhbWVzKTsK PiArCj4gKwkJbWF4ID0gMDsKPiArCj4gKwkJZm9yIChpID0gMDsgaSA8IGZyYW1lcyAvIDI7IGkr Kykgewo+ICsJCQlhbXBsaXR1ZGVbaV0gPSBzcXJ0KGRhdGFbaV0gKiBkYXRhW2ldICsKPiArCQkJ CQkJICBkYXRhW2ZyYW1lcyAtIGldICoKPiArCQkJCQkJICBkYXRhW2ZyYW1lcyAtIGldKTsKTW9y ZSBpbmRlbnRpbmcgZml4ZXM/IG5vdCBzdXJlIGlmIHRoaXMgb25lIGlzIGp1c3QgYSByZXN1bHQg b2YgaXQKZ2V0dGluZyBmb3JtYXR0ZWQgYXMgYW4gZW1haWwuCj4gKwkJCWlmIChhbXBsaXR1ZGVb aV0gPiBtYXgpCj4gKwkJCQltYXggPSBhbXBsaXR1ZGVbaV07Cj4gKwkJfQo+ICsKPiArCQlmb3Ig KGkgPSAwOyBpIDwgc2lnbmFsLT5mcmVxc19jb3VudDsgaSsrKQo+ICsJCQlkZXRlY3RlZFtpXSA9 IGZhbHNlOwo+ICsKPiArCQl0aHJlc2hvbGQgPSBtYXggLyAyOwo+ICsJCWFib3ZlID0gZmFsc2U7 Cj4gKwkJbWF4ID0gMDsKPiArCj4gKwkJZm9yIChpID0gMDsgaSA8IGZyYW1lcyAvIDI7IGkrKykg ewo+ICsJCQlpZiAoYW1wbGl0dWRlW2ldID4gdGhyZXNob2xkKQo+ICsJCQkJYWJvdmUgPSB0cnVl Owo+ICsKPiArCQkJaWYgKGFib3ZlKSB7Cj4gKwkJCQlpZiAoYW1wbGl0dWRlW2ldIDwgdGhyZXNo b2xkKSB7Cj4gKwkJCQkJYWJvdmUgPSBmYWxzZTsKPiArCQkJCQltYXggPSAwOwo+ICsKPiArCQkJ CQlmb3IgKGogPSAwOyBqIDwgc2lnbmFsLQo+ID5mcmVxc19jb3VudDsgaisrKSB7Cj4gKwkJCQkJ CWlmIChzaWduYWwtCj4gPmZyZXFzW2pdLmZyZXEgPgo+ICsJCQkJCQkgICAgZnJlcSAtIGVycm9y ICYmCj4gKwkJCQkJCSAgICBzaWduYWwtCj4gPmZyZXFzW2pdLmZyZXEgPAo+ICsJCQkJCQkgICAg ZnJlcSArIGVycm9yKSB7Cj4gKwkJCQkJCQlkZXRlY3RlZFtqXQo+ID0gdHJ1ZTsKPiArCQkJCQkJ CWJyZWFrOwo+ICsJCQkJCQl9Cj4gKwkJCQkJfQo+ICsKPiArCQkJCQkvKiBEZXRlY3RlZCBmcmVx dWVuY3kgd2FzCj4gbm90IGdlbmVyYXRlZC4gKi8KPiArCQkJCQlpZiAoaiA9PSBzaWduYWwtCj4g PmZyZXFzX2NvdW50KSB7Cj4gKwkJCQkJCWlndF9kZWJ1ZygiRGV0ZWN0ZWQKPiBhZGRpdGlvbmFs IGZyZXF1ZW5jeTogJWRcbiIsCj4gKwkJCQkJCQkgIGZyZXEpOwo+ICsJCQkJCQlyZXR1cm4gZmFs c2U7Cj4gKwkJCQkJfQo+ICsJCQkJfQo+ICsKPiArCQkJCWlmIChhbXBsaXR1ZGVbaV0gPiBtYXgp IHsKPiArCQkJCQltYXggPSBhbXBsaXR1ZGVbaV07Cj4gKwkJCQkJZnJlcSA9IHNhbXBsaW5nX3Jh dGUgKiBpIC8KPiBmcmFtZXM7Cj4gKwkJCQl9Cj4gKwkJCX0KPiArCQl9Cj4gKwo+ICsJCWZvciAo aSA9IDA7IGkgPCBzaWduYWwtPmZyZXFzX2NvdW50OyBpKyspIHsKPiArCQkJaWYgKCFkZXRlY3Rl ZFtpXSkgewo+ICsJCQkJaWd0X2RlYnVnKCJNaXNzaW5nIGZyZXF1ZW5jeTogJWRcbiIsCj4gKwkJ CQkJICBzaWduYWwtPmZyZXFzW2ldLmZyZXEpOwo+ICsJCQkJcmV0dXJuIGZhbHNlOwo+ICsJCQl9 Cj4gKwkJfQo+ICsJfQo+ICsKPiArCXJldHVybiB0cnVlOwo+ICt9Cj4gZGlmZiAtLWdpdCBhL2xp Yi9pZ3RfYXVkaW8uaCBiL2xpYi9pZ3RfYXVkaW8uaAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4g aW5kZXggMDAwMDAwMDAuLjUwN2U3YWI5Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2xpYi9pZ3Rf YXVkaW8uaAo+IEBAIC0wLDAgKzEsNDcgQEAKPiArLyoKPiArICogQ29weXJpZ2h0IMKpIDIwMTcg SW50ZWwgQ29ycG9yYXRpb24KPiArICoKPiArICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRl ZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24KPiBvYnRhaW5pbmcgYQo+ICsgKiBjb3B5 IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhl Cj4gIlNvZnR3YXJlIiksCj4gKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVz dHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0Cj4gbGltaXRhdGlvbgo+ICsgKiB0aGUgcmlnaHRz IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwKPiBzdWJs aWNlbnNlLAo+ICsgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8g cGVybWl0IHBlcnNvbnMgdG8gd2hvbQo+IHRoZQo+ICsgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQg dG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZwo+IGNvbmRpdGlvbnM6Cj4gKyAqCj4g KyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNl IChpbmNsdWRpbmcKPiB0aGUgbmV4dAo+ICsgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVk IGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwKPiBwb3J0aW9ucyBvZiB0aGUKPiArICogU29m dHdhcmUuCj4gKyAqCj4gKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRI T1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELAo+IEVYUFJFU1MgT1IKPiArICogSU1QTElFRCwgSU5D TFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRgo+IE1FUkNIQU5UQUJJ TElUWSwKPiArICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJ TkdFTUVOVC4gIElOIE5PCj4gRVZFTlQgU0hBTEwKPiArICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJ R0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMKPiBPUiBPVEhFUgo+ ICsgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9S IE9USEVSV0lTRSwKPiBBUklTSU5HCj4gKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9O IFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IKPiBPVEhFUiBERUFMSU5HUwo+ICsgKiBJ TiBUSEUgU09GVFdBUkUuCj4gKyAqCj4gKyAqIEF1dGhvcnM6Cj4gKyAqICBQYXVsIEtvY2lhbGtv d3NraSA8cGF1bC5rb2NpYWxrb3dza2lAbGludXguaW50ZWwuY29tPgo+ICsgKi8KPiArCj4gKyNp Zm5kZWYgSUdUX0FVRElPX0gKPiArI2RlZmluZSBJR1RfQVVESU9fSAo+ICsKPiArI2lmZGVmIEhB VkVfQ09ORklHX0gKPiArI2luY2x1ZGUgImNvbmZpZy5oIgo+ICsjZW5kaWYKPiArCj4gKyNpbmNs dWRlICJpZ3QuaCIKPiArI2luY2x1ZGUgPHN0ZGJvb2wuaD4KPiArCj4gK3N0cnVjdCBhdWRpb19z aWduYWw7Cj4gKwo+ICtzdHJ1Y3QgYXVkaW9fc2lnbmFsICphdWRpb19zaWduYWxfaW5pdChpbnQg Y2hhbm5lbHMsIGludAo+IHNhbXBsaW5nX3JhdGUpOwo+ICtpbnQgYXVkaW9fc2lnbmFsX2FkZF9m cmVxdWVuY3koc3RydWN0IGF1ZGlvX3NpZ25hbCAqc2lnbmFsLCBpbnQKPiBmcmVxdWVuY3kpOwo+ ICt2b2lkIGF1ZGlvX3NpZ25hbF9zeW50aGVzaXplKHN0cnVjdCBhdWRpb19zaWduYWwgKnNpZ25h bCk7Cj4gK3ZvaWQgYXVkaW9fc2lnbmFsX2NsZWFuKHN0cnVjdCBhdWRpb19zaWduYWwgKnNpZ25h bCk7Cj4gK3ZvaWQgYXVkaW9fc2lnbmFsX2ZpbGwoc3RydWN0IGF1ZGlvX3NpZ25hbCAqc2lnbmFs LCBzaG9ydCAqYnVmZmVyLAo+IGludCBmcmFtZXMpOwo+ICtib29sIGF1ZGlvX3NpZ25hbF9kZXRl Y3Qoc3RydWN0IGF1ZGlvX3NpZ25hbCAqc2lnbmFsLCBpbnQgY2hhbm5lbHMsCj4gKwkJCSBpbnQg c2FtcGxpbmdfcmF0ZSwgc2hvcnQgKmJ1ZmZlciwgaW50Cj4gZnJhbWVzKTsKPiArCj4gKyNlbmRp ZgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1n ZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK