From mboxrd@z Thu Jan 1 00:00:00 1970 From: Takashi Iwai Subject: Re: Driver for TerraTec DMX 6Fire USB Date: Fri, 21 Jan 2011 09:57:35 +0100 Message-ID: References: <12d995c1fa0.477955495632923443.5387390398635058860@zoho.com> <12da59486cd.-2882799020629445819.-7235974021966893201@zoho.com> Mime-Version: 1.0 (generated by SEMI 1.14.6 - "Maruoka") Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mx1.suse.de (cantor.suse.de [195.135.220.2]) by alsa0.perex.cz (Postfix) with ESMTP id C8BFB245A0 for ; Fri, 21 Jan 2011 09:57:38 +0100 (CET) In-Reply-To: <12da59486cd.-2882799020629445819.-7235974021966893201@zoho.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: alsa-devel-bounces@alsa-project.org Errors-To: alsa-devel-bounces@alsa-project.org To: Torsten Schenk Cc: alsa-devel@alsa-project.org, clemens@ladisch.de List-Id: alsa-devel@alsa-project.org QXQgVGh1LCAyMCBKYW4gMjAxMSAyMzozODo1MCArMDEwMCwKVG9yc3RlbiBTY2hlbmsgd3JvdGU6 Cj4gCj4gSGVsbG8sCj4gCj4gVGhhbmtzIHZlcnkgbXVjaCBmb3IgdGhlIHJldmlldy4gSSBjb3Jy ZWN0ZWQgdGhlIGlzc3VlcyB5b3Ugd3JvdGUgYWJvdXQgKGV4Y2VwdCB0aGUgbGFzdCBvbmUsIHNl ZSBiZWxvdykuIGNoZWNrcGF0Y2gucGwgcmVwb3J0cyBub3cgMCBlcnJvcnMgYW5kIHdhcm5pbmdz Lgo+IAo+IEFub3RoZXIgdGhpbmcgYWJvdXQgdGhlIGRyaXZlcidzIGZlYXR1cmVzOgo+IEknbSBj dXJyZW50bHkgaW4gY29udGFjdCB3aXRoIGEgZ3V5IHRoYXQgYWxzbyBvd25zIGEgVFQgRE1YNkZp cmVVU0IuIEhlIHNheXMsIGZpcm13YXJlIGlzIG5vdCBsb2FkaW5nIGZvciBoaW0uIEknbSB0cnlp bmcgdG8gZmlndXJlIG91dCBob3cgdG8gbWFrZQo+IGl0IHdvcmssIGJ1dCBJIGFscmVhZHkga25v dywgdGhhdCBteSBkcml2ZXIgY2Fubm90IHByb3ZpZGUgZncgdXBsb2FkaW5nIGZvciBldmVyeSBk ZXZpY2Ugb3V0IHRoZXJlIGJ5IG5vdy4gSSB0aGluayBpdCdzIGp1c3QgYSBtYXR0ZXIgb2YgcmVt b3Zpbmcgc29tZSBjaGVja3MsIGJ1dCBJIHdhbnQgdG8gbWFrZSBhcyBzdXJlIGFzIEkgY2FuIGJl Zm9yZSBJIGp1c3QgZG8gc28uCj4gCj4gSWYgdGhlIGRldmljZSB3YXMgcHJldmlvdXNseSB1c2Vk IGluIHdpbmRvd3MgYW5kIG5vdCB1bnBsdWdnZWQgZnJvbSBwb3dlciwgaXQgd2lsbCB3b3JrIGFs c28gd2l0aCBubyBmaXJtd2FyZSB1cGxvYWQuCgpDb3VsZCB5b3UgcHV0IHN1Y2ggaW5mb3JtYXRp b24gaW4gZWl0aGVyIGdpdCBjaGFuZ2Vsb2csIHNvbWUKZG9jdW1lbnQgb3IgaW4gYSBjb21tZW50 IGluIHRoZSBzb3VyY2UgY29kZT8KCgo+ID5GaXJzdCBvZmYsIHRoZXJlIGFyZSBsb3RzIG9mIGNv ZGluZy1zdHlsZSBpc3N1ZXMgdG8gYmUgZml4ZWQuIAo+ID5UcnkgdG8gcnVuIHNjcmlwdHMvY2hl Y2twYXRjaC5wbCBvbmNlIHdpdGggeW91ciBwYXRjaC4gTm90IGFsbCB3YXJuaW5ncyAKPiA+aGF2 ZSB0byBiZSBmaXhlZCAoZS5nLiA4MC1jaGFycykgYnV0IHdvdWxkIGJlIG5pY2UgaWYgZml4ZWQu Cj4gSSB0aG91Z2ggc28uIGNoZWNrcGF0Y2gucGwgaXMgYSB1c2VmdWwgc2NyaXB0LCBnb29kIHRv IGtub3cgaXQgZXhpc3RzLgo+IAo+ID5BZGRpbmcgYSBzaG9ydCBwcmVmaXggKGUuZy4gdXNiNmZp cmVfcHJvYmUoKSkgaXMgYmV0dGVyIGluIGdlbmVyYWwuIAo+ID5PdGhlcndpc2UgdGhlIHN0YWNr IHRyYWNlIHdvdWxkIGJlIGRpZmZpY3VsdCB0byByZWFkLiBPZiBjb3Vyc2UsIAo+ID50b28gbG9u ZyBuYW1lcyBhcmUgYWxzbyBhbm5veWluZywgc28gaXQncyBhIG1hdHRlciBvZiB0YXN0ZS4gCj4g SG93IGlzIGl0IHN1cHBvc2VkIHRvIGJlPyBJIHJldmlld2VkIG15IGNvZGUgYW5kIGFkZGVkIGEg cHJlZml4IHRvIGV2ZXJ5IGZ1bmN0aW9uLiBIb3BlZnVsbHkKPiBpdCBkaWRuJ3QgZ2V0IHRvbyBs b25nIG5vdy4uLiBTb21lLCBlc3BlY2lhbGx5IGZ1bmN0aW9ucyB3aXRoIG5vdCBtdWNoIGNvbnRl bnQsIHNlZW0gdG8gaGF2ZSBhIHRvbyBsb25nIG5hbWUgYnkgbm93IGZvciBteSBmbGF2b3VyLiAK PiAKPiA+TlVMTHMgYXJlIGF1dG9tYXRpY2FsbHkgZmlsbGVkLCBzbyB0aGVzZSBjYW4gYmUgc2tp cHBlZC4gCj4gV2hpY2ggTlVMTHMgYXJlIGF1dG9tYXRpY2FsbHkgZmlsbGVkPyBKdXN0IHRoZSBh cmVhIGNyZWF0ZSBieSBzbmRfY2FyZF9jcmVhdGUgb3IKPiBldmVyeSBhcmVhIGFsbG9jYXRlZCB2 aWEga21hbGxvYz8gSWYgbGFzdCBpcyB0cnVlLCBJIHdpbGwgaGF2ZSB0byByZW1vdmUgc29tZSBt b3JlIE5VTExzLgoKTm90IHdpdGgga21hbGxvYy4gIFRoZXJlIGlzIGt6YWxsb2Mgb3Iga2NhbGxv YyBmb3Igc3VjaCBwdXJwb3NlLgpUaGUgc3BhY2UgYWxsb2NhdGVkIHZpYSBzbmRfY2FyZF9uZXco KSBpcyB6ZXJvLWNsZWFyZWQuCgoKPiA+RG9uJ3QgdXNlIG93biBib29sIHR5cGUuIFVzZSB0aGUg Z2VuZXJpYyAiYm9vbCIgdHlwZSwgYW5kIHVzZSAKPiA+dHJ1ZS9mYWxzZSBpbnN0ZWFkIG9mIFRS VUUvRkFMU0UgKHVubGVzcyB0aGUgc2l6ZSByZWFsbHkgbWF0dGVycykuIAo+ID5Vc2Ugc3RhbmRh cmQgbWluKCkgLyBtYXgoKSBtYWNyb3MuIAo+ID5Vc2UgdTggYW5kIHUxNi4gCj4gRGlkbid0IGtu b3cgdGhlc2UgZXhpc3RzLi4uCj4gV2hlbiBJIHVzZWQgQyBvbmNlLCAnYm9vbCcgYW5kIGFsc28g J21pbicvJ21heCcgd2VyZW4ndCBhdmFpbGFibGUuCj4gCj4gPlJlbW92ZSBhbGwsIGNsZWFuLCBp bnN0YWxsIHRoaW5ncy4gCj4gSnVzdCBmb3Jnb3QgOykKPiAKPiA+RG8geW91IHJlYWxseSBuZWVk IGh3ZGVwPyAKPiA+UmF0aGVyIHNlbGVjdCBGV19MT0FERVIsIGlmIGFueS4gCj4gPiAKPiA+PiAr wqDCoMKgwqBzZWxlY3QgU05EX1BDTSAKPiBUaGFua3MsIGp1c3QgY29waWVkIHRoaXMgZnJvbSBh bm90aGVyIGRlZmluaXRpb24gd2l0aG91dCBleGFjdGx5IGtub3dpbmcgd2hhdCBpdCBkb2VzLi4u Cj4gPiAKPiA+TWlzc2luZyBTTkRfUkFXTUlESSBkZXBlbmRlbmN5LiAKPiBSZWFsaXplZCB0aGF0 IGFmdGVyIHBvc3RpbmcuCj4gCj4gPiAKPiA+IAo+ID4+IEBAIC02NSw3ICs3Niw2IEBAIAo+ID4+ IMKgwqDCoMKgICogTmF0aXZlIEluc3RydW1lbnRzIEd1aXRhciBSaWcgU2Vzc2lvbiBJL08gCj4g Pj4gwqDCoMKgwqAgKiBOYXRpdmUgSW5zdHJ1bWVudHMgR3VpdGFyIFJpZyBtb2JpbGUgCj4gPj4g wqDCoMKgwqAgKiBOYXRpdmUgSW5zdHJ1bWVudHMgVHJha3RvciBLb250cm9sIFgxIAo+ID4+IC3C oMKgwqDCoCAqIE5hdGl2ZSBJbnN0cnVtZW50cyBUcmFrdG9yIEtvbnRyb2wgUzQgCj4gPiAKPiA+ PiDCoMKgwqDCoCBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBo ZXJlOiB0aGUgbW9kdWxlIAo+ID4+IMKgwqDCoMKgIHdpbGwgYmUgY2FsbGVkIHNuZC11c2ItY2Fp YXEuIAo+ID4+IEBAIC04Myw3ICs5Myw2IEBAIAo+ID4+IMKgwqDCoMKgICogTmF0aXZlIEluc3Ry dW1lbnRzIEtvcmUgQ29udHJvbGxlciAKPiA+PiDCoMKgwqDCoCAqIE5hdGl2ZSBJbnN0cnVtZW50 cyBLb3JlIENvbnRyb2xsZXIgMiAKPiA+PiDCoMKgwqDCoCAqIE5hdGl2ZSBJbnN0cnVtZW50cyBB dWRpbyBLb250cm9sIDEgCj4gPj4gLcKgwqDCoMKgICogTmF0aXZlIEluc3RydW1lbnRzIFRyYWt0 b3IgS29udHJvbCBTNCAKPiA+IAo+ID5Eb24ndCBib3RoZXIgb3RoZXJzIDspIAo+IEknZCBsb3Zl IG5vdCB0byA7KSBCdXQgaG93IGNhbiBJIHJlbW92ZSBpdD8gSXQncyBhdXRvbWF0aWNhbGx5IGdl bmVyYXRlZCBieSBkaWZmLiBQZXJoYXBzIHdyb25nIGFyZ3VtZW50cz8gTWluZSBhcmUgLU51cgoK SXQgbWVhbnMgdGhhdCB5b3VyIGRyaXZlciBjb2RlIHRyZWUgaXNuJ3Qgc3luYydlZCB3aXRoIHRo ZSBsYXRlc3QKdHJlZS4gIEp1c3QgcmViYXNlIHlvdXIgdHJlZSB0byB0aGUgbGF0ZXN0IG9uZS4g IE9yLi4uCgo+IE9yIHNob3VsZCBJIHNpbXBseSByZW1vdmUgdGhlc2UgbGluZXMgd2l0aCBhIHRl eHQgZWRpdG9yPwoKVGhpcyBpcyBhbiBlYXN5IGFsdGVybmF0aXZlLgoKQmVsb3cgaXMgYSBmZXcg bW9yZSByZXZpZXcgY29tbWVudHMgSSBmb3VuZCBpbiB5b3VyIG5ldyBwYXRjaC4KQ291bGQgeW91 IGZpeCBhbmQgcmVzZW5kPwoKCnRoYW5rcywKClRha2FzaGkKCj4gZGlmZiAtTnVyIGEvc291bmQv dXNiLzZmaXJlL2NoaXAuYyBiL3NvdW5kL3VzYi82ZmlyZS9jaGlwLmMKPiAtLS0gYS9zb3VuZC91 c2IvNmZpcmUvY2hpcC5jCTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAwICswMTAwCj4gKysr IGIvc291bmQvdXNiLzZmaXJlL2NoaXAuYwkyMDExLTAxLTIwIDIyOjU2OjM3LjAwMDAwMDAwMCAr MDEwMAo+ICtzdGF0aWMgaW50IF9fZGV2aW5pdCB1c2I2ZmlyZV9jaGlwX3Byb2JlKHN0cnVjdCB1 c2JfaW50ZXJmYWNlICppbnRmLAo+ICsJCWNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICp1c2Jf aWQpCi4uCj4gKwkvKiBsb29rIGlmIHdlIGFscmVhZHkgc2VydmUgdGhpcyBjYXJkIGFuZCByZXR1 cm4gaWYgc28gKi8KPiArCW11dGV4X2xvY2soJnJlZ2lzdGVyX211dGV4KTsKPiArCWZvciAoaSA9 IDA7IGkgPCBTTkRSVl9DQVJEUzsgaSsrKQo+ICsJCWlmIChkZXZpY2VzW2ldID09IGRldmljZSkg ewo+ICsJCQlpZiAoY2hpcHNbaV0pCj4gKwkJCQljaGlwc1tpXS0+aW50Zl9jb3VudCsrOwo+ICsJ CQl1c2Jfc2V0X2ludGZkYXRhKGludGYsIGNoaXBzW2ldKTsKPiArCQkJbXV0ZXhfdW5sb2NrKCZy ZWdpc3Rlcl9tdXRleCk7Cj4gKwkJCXJldHVybiAwOwo+ICsJCX0gZWxzZSBpZiAocmVnaWR4IDwg MCkKPiArCQkJcmVnaWR4ID0gaTsKPiArCQlpZiAocmVnaWR4IDwgMCkgewoKVGhlIGZvciBibG9j ayBzaG91bGQgYmUgYSBibG9jayB3aXRoIHsuLi59LCBhcyBpdCdzIG5vIG9uZS1saW5lIGlmCnN0 YXRlbWVudC4KCj4gK3N0YXRpYyB2b2lkIHVzYjZmaXJlX2NoaXBfZGlzY29ubmVjdChzdHJ1Y3Qg dXNiX2ludGVyZmFjZSAqaW50ZikKPiArewo+ICsJc3RydWN0IHNmaXJlX2NoaXAgKmNoaXA7Cj4g KwlzdHJ1Y3Qgc25kX2NhcmQgKmNhcmQ7Cj4gKwo+ICsJY2hpcCA9IHVzYl9nZXRfaW50ZmRhdGEo aW50Zik7Cj4gKwlpZiAoY2hpcCkgeyAvKiBpZiAhY2hpcCwgZncgdXBsb2FkIGhhcyBiZWVuIHBl cmZvcm1lZCAqLwo+ICsJCWNhcmQgPSBjaGlwLT5jYXJkOwo+ICsJCWNoaXAtPmludGZfY291bnQt LTsKPiArCQlpZiAoIWNoaXAtPmludGZfY291bnQpIHsKPiArCQkJY2hpcC0+c2h1dGRvd24gPSB0 cnVlOwo+ICsJCQlzbmRfY2FyZF9kaXNjb25uZWN0KGNhcmQpOwo+ICsJCQl1c2I2ZmlyZV9jaGlw X2Rlc3Ryb3koY2hpcCk7Cj4gKwkJCXVzYl9zZXRfaW50ZmRhdGEoaW50ZiwgTlVMTCk7Cj4gKwkJ fQo+ICsJfQoKY2hpcHNbXSBhbmQgZGV2aWNlc1tdIGFyZW4ndCBjbGVhcmVkIGF0IGRpc2Nvbm5l Y3Q/Cgo+IGRpZmYgLU51ciBhL3NvdW5kL3VzYi82ZmlyZS9jb250cm9sLmMgYi9zb3VuZC91c2Iv NmZpcmUvY29udHJvbC5jCj4gLS0tIGEvc291bmQvdXNiLzZmaXJlL2NvbnRyb2wuYwkxOTcwLTAx LTAxIDAxOjAwOjAwLjAwMDAwMDAwMCArMDEwMAo+ICsrKyBiL3NvdW5kL3VzYi82ZmlyZS9jb250 cm9sLmMJMjAxMS0wMS0yMCAyMzowMzozMi4wMDAwMDAwMDAgKzAxMDAKPiBAQCAtMCwwICsxLDI3 OSBAQAo+ICsvKgo+ICsgKiBMaW51eCBkcml2ZXIgZm9yIFRlcnJhVGVjIERNWCA2RmlyZSBVU0IK PiArICoKPiArICogTWl4ZXIgY29udHJvbAo+ICsgKgo+ICsgKiBBdXRob3I6IFRvcnN0ZW4gU2No ZW5rCj4gKyAqIENyZWF0ZWQ6IEphbiAwMSwgMjAxMQo+ICsgKiBDb3B5cmlnaHQ6CShDKSBUb3Jz dGVuIFNjaGVuawo+ICsgKgo+ICsgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91 IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQo+ICsgKiBpdCB1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQo+ICsg KiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBM aWNlbnNlLCBvcgo+ICsgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgo+ICsg Ki8KPiArCj4gKyNpbmNsdWRlIDxsaW51eC9pbnRlcnJ1cHQuaD4KPiArI2luY2x1ZGUgPHNvdW5k L2NvbnRyb2wuaD4KPiArCj4gKyNpbmNsdWRlICJjb250cm9sLmgiCj4gKyNpbmNsdWRlICJjb21t LmgiCj4gKyNpbmNsdWRlICJjaGlwLmgiCj4gKwo+ICtzdGF0aWMgY2hhciAqb3B0X2NvYXhfdGV4 dHNbMl0gPSB7ICJPcHRpY2FsIiwgIkNvYXgiIH07Cj4gK3N0YXRpYyBjaGFyICpsaW5lX3Bob25v X3RleHRzWzJdID0geyAiTGluZSIsICJQaG9ubyIgfTsKPiArCj4gKy8qCj4gKyAqIGNhbGN1bGF0 ZWQgd2l0aCAkdmFsdWVcW2lcXSA9IDEyOCBcY2RvdCBzcXJ0WzNde1xmcmFje2l9ezEyOH19JAo+ ICsgKiB0aGlzIGlzIGRvbmUgYmVjYXVzZSB0aGUgbGluZWFyIHZhbHVlcyBjYXVzZSByYXBpZCBk ZWdyZWRhdGlvbgo+ICsgKiBvZiB2b2x1bWUgaW4gdGhlIHVwcGVybW9zdCByZWdpb24uCj4gKyAq Lwo+ICtzdGF0aWMgY29uc3QgdTggTE9HX1ZPTFVNRV9UQUJMRVsxMjhdID0geyAweDAwLCAweDE5 LCAweDIwLCAweDI0LCAweDI4LCAweDJiLAoKQmVnaW4gdGhlIGRhdGEgaW4gdGhlIG5leHQgbGlu ZS4gIEFuZCB1c2Ugb25lLXRhYiBpbmRlbnQuCgo+ICsJCTB4MmUsIDB4MzAsIDB4MzIsIDB4MzQs IDB4MzYsIDB4MzgsIDB4M2EsIDB4M2IsIDB4M2QsIDB4M2UsCj4gKwkJMHg0MCwgMHg0MSwgMHg0 MiwgMHg0MywgMHg0NCwgMHg0NiwgMHg0NywgMHg0OCwgMHg0OSwgMHg0YSwKPiArCQkweDRiLCAw eDRjLCAweDRkLCAweDRlLCAweDRlLCAweDRmLCAweDUwLCAweDUxLCAweDUyLCAweDUzLAo+ICsJ CTB4NTMsIDB4NTQsIDB4NTUsIDB4NTYsIDB4NTYsIDB4NTcsIDB4NTgsIDB4NTgsIDB4NTksIDB4 NWEsCj4gKwkJMHg1YiwgMHg1YiwgMHg1YywgMHg1YywgMHg1ZCwgMHg1ZSwgMHg1ZSwgMHg1Ziwg MHg2MCwgMHg2MCwKPiArCQkweDYxLCAweDYxLCAweDYyLCAweDYyLCAweDYzLCAweDYzLCAweDY0 LCAweDY1LCAweDY1LCAweDY2LAo+ICsJCTB4NjYsIDB4NjcsIDB4NjcsIDB4NjgsIDB4NjgsIDB4 NjksIDB4NjksIDB4NmEsIDB4NmEsIDB4NmIsCj4gKwkJMHg2YiwgMHg2YywgMHg2YywgMHg2Yywg MHg2ZCwgMHg2ZCwgMHg2ZSwgMHg2ZSwgMHg2ZiwgMHg2ZiwKPiArCQkweDcwLCAweDcwLCAweDcw LCAweDcxLCAweDcxLCAweDcyLCAweDcyLCAweDczLCAweDczLCAweDczLAo+ICsJCTB4NzQsIDB4 NzQsIDB4NzUsIDB4NzUsIDB4NzUsIDB4NzYsIDB4NzYsIDB4NzcsIDB4NzcsIDB4NzcsCj4gKwkJ MHg3OCwgMHg3OCwgMHg3OCwgMHg3OSwgMHg3OSwgMHg3YSwgMHg3YSwgMHg3YSwgMHg3YiwgMHg3 YiwKPiArCQkweDdiLCAweDdjLCAweDdjLCAweDdjLCAweDdkLCAweDdkLCAweDdkLCAweDdlLCAw eDdlLCAweDdlLAo+ICsJCTB4N2YsIDB4N2YgfTsKPiArCj4gKy8qCj4gKyAqIGRhdGEgdGhhdCBu ZWVkcyB0byBiZSBzZW50IHRvIGRldmljZS4gc2V0cyB1cCBjYXJkIGludGVybmFsIHN0dWZmLgo+ ICsgKiB2YWx1ZXMgZHVtcGVkIGZyb20gd2luZG93cyBkcml2ZXIgYW5kIGZpbHRlcmVkIGJ5IHRy aWFsJ24nZXJyb3IuCj4gKyAqLwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHsKPiArCXU4IHR5cGU7 Cj4gKwl1OCByZWc7Cj4gKwl1OCB2YWx1ZTsKPiArfSBpbml0X2RhdGFbXSA9IHsKCkRpdHRvLgoK PiArCQkJeyAweDIyLCAweDAwLCAweDAwIH0sIHsgMHgyMCwgMHgwMCwgMHgwOCB9LAo+ICsJCQl7 IDB4MjIsIDB4MDEsIDB4MDEgfSwgeyAweDIwLCAweDAxLCAweDA4IH0sCj4gKwkJCXsgMHgyMiwg MHgwMiwgMHgwMCB9LCB7IDB4MjAsIDB4MDIsIDB4MDggfSwKPiArCQkJeyAweDIyLCAweDAzLCAw eDAwIH0sIHsgMHgyMCwgMHgwMywgMHgwOCB9LAo+ICsJCQl7IDB4MjIsIDB4MDQsIDB4MDAgfSwg eyAweDIwLCAweDA0LCAweDA4IH0sCj4gKwkJCXsgMHgyMiwgMHgwNSwgMHgwMSB9LCB7IDB4MjAs IDB4MDUsIDB4MDggfSwKPiArCQkJeyAweDIyLCAweDA0LCAweDAxIH0sIHsgMHgxMiwgMHgwNCwg MHgwMCB9LAo+ICsJCQl7IDB4MTIsIDB4MDUsIDB4MDAgfSwgeyAweDEyLCAweDBkLCAweDc4IH0s Cj4gKwkJCXsgMHgxMiwgMHgyMSwgMHg4MiB9LCB7IDB4MTIsIDB4MjIsIDB4ODAgfSwKPiArCQkJ eyAweDEyLCAweDIzLCAweDAwIH0sIHsgMHgxMiwgMHgwNiwgMHgwMiB9LAo+ICsJCQl7IDB4MTIs IDB4MDMsIDB4MDAgfSwgeyAweDEyLCAweDAyLCAweDAwIH0sCj4gKwkJCXsgMHgyMiwgMHgwMywg MHgwMSB9LAo+ICsJCQl7IDAgfSAvKiBURVJNSU5BVElORyBFTlRSWSAqLwo+ICt9Owo+ICsKPiBk aWZmIC1OdXIgYS9zb3VuZC91c2IvNmZpcmUvZmlybXdhcmUuYyBiL3NvdW5kL3VzYi82ZmlyZS9m aXJtd2FyZS5jCj4gLS0tIGEvc291bmQvdXNiLzZmaXJlL2Zpcm13YXJlLmMJMTk3MC0wMS0wMSAw MTowMDowMC4wMDAwMDAwMDAgKzAxMDAKPiArKysgYi9zb3VuZC91c2IvNmZpcmUvZmlybXdhcmUu YwkyMDExLTAxLTIwIDIzOjA5OjU5LjAwMDAwMDAwMCArMDEwMAo+ICtzdGF0aWMgY29uc3QgdTgg QklUX1JFVkVSU0VfVEFCTEVbMjU2XSA9IHsgMHgwMCwgMHg4MCwgMHg0MCwgMHhjMCwgMHgyMCwg MHhhMCwKPiArCQkweDYwLCAweGUwLCAweDEwLCAweDkwLCAweDUwLCAweGQwLCAweDMwLCAweGIw LCAweDcwLCAweGYwLAoKRGl0dG8uCgo+ICsJCTB4MDgsIDB4ODgsIDB4NDgsIDB4YzgsIDB4Mjgs IDB4YTgsIDB4NjgsIDB4ZTgsIDB4MTgsIDB4OTgsCj4gKwkJMHg1OCwgMHhkOCwgMHgzOCwgMHhi OCwgMHg3OCwgMHhmOCwgMHgwNCwgMHg4NCwgMHg0NCwgMHhjNCwKPiArCQkweDI0LCAweGE0LCAw eDY0LCAweGU0LCAweDE0LCAweDk0LCAweDU0LCAweGQ0LCAweDM0LCAweGI0LAo+ICsJCTB4NzQs IDB4ZjQsIDB4MGMsIDB4OGMsIDB4NGMsIDB4Y2MsIDB4MmMsIDB4YWMsIDB4NmMsIDB4ZWMsCj4g KwkJMHgxYywgMHg5YywgMHg1YywgMHhkYywgMHgzYywgMHhiYywgMHg3YywgMHhmYywgMHgwMiwg MHg4MiwKPiArCQkweDQyLCAweGMyLCAweDIyLCAweGEyLCAweDYyLCAweGUyLCAweDEyLCAweDky LCAweDUyLCAweGQyLAo+ICsJCTB4MzIsIDB4YjIsIDB4NzIsIDB4ZjIsIDB4MGEsIDB4OGEsIDB4 NGEsIDB4Y2EsIDB4MmEsIDB4YWEsCj4gKwkJMHg2YSwgMHhlYSwgMHgxYSwgMHg5YSwgMHg1YSwg MHhkYSwgMHgzYSwgMHhiYSwgMHg3YSwgMHhmYSwKPiArCQkweDA2LCAweDg2LCAweDQ2LCAweGM2 LCAweDI2LCAweGE2LCAweDY2LCAweGU2LCAweDE2LCAweDk2LAo+ICsJCTB4NTYsIDB4ZDYsIDB4 MzYsIDB4YjYsIDB4NzYsIDB4ZjYsIDB4MGUsIDB4OGUsIDB4NGUsIDB4Y2UsCj4gKwkJMHgyZSwg MHhhZSwgMHg2ZSwgMHhlZSwgMHgxZSwgMHg5ZSwgMHg1ZSwgMHhkZSwgMHgzZSwgMHhiZSwKPiAr CQkweDdlLCAweGZlLCAweDAxLCAweDgxLCAweDQxLCAweGMxLCAweDIxLCAweGExLCAweDYxLCAw eGUxLAo+ICsJCTB4MTEsIDB4OTEsIDB4NTEsIDB4ZDEsIDB4MzEsIDB4YjEsIDB4NzEsIDB4ZjEs IDB4MDksIDB4ODksCj4gKwkJMHg0OSwgMHhjOSwgMHgyOSwgMHhhOSwgMHg2OSwgMHhlOSwgMHgx OSwgMHg5OSwgMHg1OSwgMHhkOSwKPiArCQkweDM5LCAweGI5LCAweDc5LCAweGY5LCAweDA1LCAw eDg1LCAweDQ1LCAweGM1LCAweDI1LCAweGE1LAo+ICsJCTB4NjUsIDB4ZTUsIDB4MTUsIDB4OTUs IDB4NTUsIDB4ZDUsIDB4MzUsIDB4YjUsIDB4NzUsIDB4ZjUsCj4gKwkJMHgwZCwgMHg4ZCwgMHg0 ZCwgMHhjZCwgMHgyZCwgMHhhZCwgMHg2ZCwgMHhlZCwgMHgxZCwgMHg5ZCwKPiArCQkweDVkLCAw eGRkLCAweDNkLCAweGJkLCAweDdkLCAweGZkLCAweDAzLCAweDgzLCAweDQzLCAweGMzLAo+ICsJ CTB4MjMsIDB4YTMsIDB4NjMsIDB4ZTMsIDB4MTMsIDB4OTMsIDB4NTMsIDB4ZDMsIDB4MzMsIDB4 YjMsCj4gKwkJMHg3MywgMHhmMywgMHgwYiwgMHg4YiwgMHg0YiwgMHhjYiwgMHgyYiwgMHhhYiwg MHg2YiwgMHhlYiwKPiArCQkweDFiLCAweDliLCAweDViLCAweGRiLCAweDNiLCAweGJiLCAweDdi LCAweGZiLCAweDA3LCAweDg3LAo+ICsJCTB4NDcsIDB4YzcsIDB4MjcsIDB4YTcsIDB4NjcsIDB4 ZTcsIDB4MTcsIDB4OTcsIDB4NTcsIDB4ZDcsCj4gKwkJMHgzNywgMHhiNywgMHg3NywgMHhmNywg MHgwZiwgMHg4ZiwgMHg0ZiwgMHhjZiwgMHgyZiwgMHhhZiwKPiArCQkweDZmLCAweGVmLCAweDFm LCAweDlmLCAweDVmLCAweGRmLCAweDNmLCAweGJmLCAweDdmLCAweGZmIH07Cj4gKwo+ICsvKgo+ ICsgKiB3TWF4UGFja2V0U2l6ZSBvZiBwY20gZW5kcG9pbnRzLgo+ICsgKiBPcmRlcjogQUxUMUVQ MiBBTFQxRVA2IEFMVDJFUDIgQUxUMkVQNiBBTFQzRVAyIEFMVDNFUDYKPiArICoga2VlcCBzeW5j ZWQgd2l0aCBSQVRFU19JTl9QQUNLRVRfU0laRSBhbmQgUkFURVNfT1VUX1BBQ0tFVF9TSVpFIGlu IHBjbS5jCj4gKyAqCj4gKyAqIENBVVRJT046IGtlZXAgc2l6ZW9mIDw9IGJ1ZmZlcltdIGluIHVz YjZmaXJlX2Z3X2luaXQKPiArICovCj4gK3N0YXRpYyBjb25zdCB1MTYgRVBfV19NQVhfUEFDS0VU X1NJWkVbXSA9IHsgMjI4LCAyMjgsIDQyMCwgNDIwLCA0MDQsIDYwNCB9Owo+ICsKPiArc3RydWN0 IGloZXhfcmVjb3JkIHsKPiArCXUxNiBhZGRyZXNzOwo+ICsJdTggbGVuOwo+ICsJdTggZGF0YVsy NTZdOwo+ICsJY2hhciBlcnJvcjsgLyogdHJ1ZSBpZiBhbiBlcnJvciBvY2N1cmVkIHBhcnNpbmcg dGhpcyByZWNvcmQgKi8KPiArCj4gKwl1OCBtYXhfbGVuOyAvKiBtYXhpbXVtIHJlY29yZCBsZW5n dGggaW4gd2hvbGUgaWhleCAqLwo+ICsKPiArCS8qIHByaXZhdGUgKi8KPiArCWNvbnN0IGNoYXIg KnR4dF9kYXRhOwo+ICsJdW5zaWduZWQgaW50IHR4dF9sZW5ndGg7Cj4gKwl1bnNpZ25lZCBpbnQg dHh0X29mZnNldDsgLyogY3VycmVudCBwb3NpdGlvbiBpbiB0eHRfZGF0YSAqLwo+ICt9Owo+ICsK PiArc3RhdGljIHU4IHVzYjZmaXJlX2Z3X2loZXhfbmliYmxlKGNvbnN0IHU4IG4pCj4gK3sKPiAr CWlmIChuID49ICcwJyAmJiBuIDw9ICc5JykKPiArCQlyZXR1cm4gbiAtICcwJzsKPiArCWVsc2Ug aWYgKG4gPj0gJ0EnICYmIG4gPD0gJ0YnKQo+ICsJCXJldHVybiBuIC0gKCdBJyAtIDEwKTsKPiAr CWVsc2UgaWYgKG4gPj0gJ2EnICYmIG4gPD0gJ2YnKQo+ICsJCXJldHVybiBuIC0gKCdhJyAtIDEw KTsKPiArCXJldHVybiAwOwo+ICt9Cj4gK3N0YXRpYyB1OCB1c2I2ZmlyZV9md19paGV4X2hleChj b25zdCB1OCAqZGF0YSwgdTggKmNyYykKPiArewo+ICsJdTggdmFsID0gKHVzYjZmaXJlX2Z3X2lo ZXhfbmliYmxlKGRhdGFbMF0pIDw8IDQpIHwKPiArCQkJdXNiNmZpcmVfZndfaWhleF9uaWJibGUo ZGF0YVsxXSk7Cj4gKwkqY3JjICs9IHZhbDsKPiArCXJldHVybiB2YWw7Cj4gK30KPiArCj4gKy8q Cj4gKyAqIHJldHVybnMgdHJ1ZSBpZiByZWNvcmQgaXMgYXZhaWxhYmxlLCBmYWxzZSBvdGhlcndp c2UuCj4gKyAqIGlmZiBhbiBlcnJvciBvY2N1cmVkLCBmYWxzZSB3aWxsIGJlIHJldHVybmVkIGFu ZCByZWNvcmQtPmVycm9yIHdpbGwgYmUgdHJ1ZS4KPiArICovCj4gK3N0YXRpYyBib29sIHVzYjZm aXJlX2Z3X2loZXhfbmV4dF9yZWNvcmQoc3RydWN0IGloZXhfcmVjb3JkICpyZWNvcmQpCj4gK3sK PiArCXU4IGNyYyA9IDA7Cj4gKwl1OCB0eXBlOwo+ICsJaW50IGk7Cj4gKwo+ICsJcmVjb3JkLT5l cnJvciA9IGZhbHNlOwo+ICsKPiArCS8qIGZpbmQgYmVnaW4gb2YgcmVjb3JkIChtYXJrZWQgYnkg YSBjb2xvbikgKi8KPiArCXdoaWxlIChyZWNvcmQtPnR4dF9vZmZzZXQgPCByZWNvcmQtPnR4dF9s ZW5ndGgKPiArCQkJJiYgcmVjb3JkLT50eHRfZGF0YVtyZWNvcmQtPnR4dF9vZmZzZXRdICE9ICc6 JykKPiArCQlyZWNvcmQtPnR4dF9vZmZzZXQrKzsKPiArCWlmIChyZWNvcmQtPnR4dF9vZmZzZXQg PT0gcmVjb3JkLT50eHRfbGVuZ3RoKQo+ICsJCXJldHVybiBmYWxzZTsKPiArCj4gKwkvKiBudW1i ZXIgb2YgY2hhcmFjdGVycyBuZWVkZWQgZm9yIGxlbiwgYWRkciBhbmQgdHlwZSBlbnRyaWVzICov Cj4gKwlyZWNvcmQtPnR4dF9vZmZzZXQrKzsKPiArCWlmIChyZWNvcmQtPnR4dF9vZmZzZXQgKyA4 ID4gcmVjb3JkLT50eHRfbGVuZ3RoKSB7Cj4gKwkJcmVjb3JkLT5lcnJvciA9IHRydWU7Cj4gKwkJ cmV0dXJuIGZhbHNlOwo+ICsJfQo+ICsKPiArCXJlY29yZC0+bGVuID0gdXNiNmZpcmVfZndfaWhl eF9oZXgocmVjb3JkLT50eHRfZGF0YSArCj4gKwkJCXJlY29yZC0+dHh0X29mZnNldCwgJmNyYyk7 Cj4gKwlyZWNvcmQtPnR4dF9vZmZzZXQgKz0gMjsKPiArCXJlY29yZC0+YWRkcmVzcyA9IHVzYjZm aXJlX2Z3X2loZXhfaGV4KHJlY29yZC0+dHh0X2RhdGEgKwo+ICsJCQlyZWNvcmQtPnR4dF9vZmZz ZXQsICZjcmMpIDw8IDg7Cj4gKwlyZWNvcmQtPnR4dF9vZmZzZXQgKz0gMjsKPiArCXJlY29yZC0+ YWRkcmVzcyB8PSB1c2I2ZmlyZV9md19paGV4X2hleChyZWNvcmQtPnR4dF9kYXRhICsKPiArCQkJ cmVjb3JkLT50eHRfb2Zmc2V0LCAmY3JjKTsKPiArCXJlY29yZC0+dHh0X29mZnNldCArPSAyOwo+ ICsJdHlwZSA9IHVzYjZmaXJlX2Z3X2loZXhfaGV4KHJlY29yZC0+dHh0X2RhdGEgKwo+ICsJCQly ZWNvcmQtPnR4dF9vZmZzZXQsICZjcmMpOwo+ICsJcmVjb3JkLT50eHRfb2Zmc2V0ICs9IDI7Cj4g Kwo+ICsJLyogbnVtYmVyIG9mIGNoYXJhY3RlcnMgbmVlZGVkIGZvciBkYXRhIGFuZCBjcmMgZW50 cmllcyAqLwo+ICsJaWYgKHJlY29yZC0+dHh0X29mZnNldCArIDIgKiAocmVjb3JkLT5sZW4gKyAx KSA+IHJlY29yZC0+dHh0X2xlbmd0aCkgewo+ICsJCXJlY29yZC0+ZXJyb3IgPSB0cnVlOwo+ICsJ CXJldHVybiBmYWxzZTsKPiArCX0KPiArCWZvciAoaSA9IDA7IGkgPCByZWNvcmQtPmxlbjsgaSsr KSB7Cj4gKwkJcmVjb3JkLT5kYXRhW2ldID0gdXNiNmZpcmVfZndfaWhleF9oZXgocmVjb3JkLT50 eHRfZGF0YQo+ICsJCQkJKyByZWNvcmQtPnR4dF9vZmZzZXQsICZjcmMpOwo+ICsJCXJlY29yZC0+ dHh0X29mZnNldCArPSAyOwo+ICsJfQo+ICsJdXNiNmZpcmVfZndfaWhleF9oZXgocmVjb3JkLT50 eHRfZGF0YSArIHJlY29yZC0+dHh0X29mZnNldCwgJmNyYyk7Cj4gKwlpZiAoY3JjKSB7Cj4gKwkJ cmVjb3JkLT5lcnJvciA9IHRydWU7Cj4gKwkJcmV0dXJuIGZhbHNlOwo+ICsJfQo+ICsKPiArCWlm ICh0eXBlID09IDEgfHwgIXJlY29yZC0+bGVuKSAvKiBlb2YgKi8KPiArCQlyZXR1cm4gZmFsc2U7 Cj4gKwllbHNlIGlmICh0eXBlID09IDApCj4gKwkJcmV0dXJuIHRydWU7Cj4gKwllbHNlIHsKPiAr CQlyZWNvcmQtPmVycm9yID0gdHJ1ZTsKPiArCQlyZXR1cm4gZmFsc2U7Cj4gKwl9Cj4gK30KPiAr Cj4gK3N0YXRpYyBpbnQgdXNiNmZpcmVfZndfaWhleF9pbml0KGNvbnN0IHN0cnVjdCBmaXJtd2Fy ZSAqZncsCj4gKwkJc3RydWN0IGloZXhfcmVjb3JkICpyZWNvcmQpCj4gK3sKPiArCXJlY29yZC0+ dHh0X2RhdGEgPSBmdy0+ZGF0YTsKPiArCXJlY29yZC0+dHh0X2xlbmd0aCA9IGZ3LT5zaXplOwo+ ICsJcmVjb3JkLT50eHRfb2Zmc2V0ID0gMDsKPiArCXJlY29yZC0+bWF4X2xlbiA9IDA7Cj4gKwkv KiByZWFkIGFsbCByZWNvcmRzLCBpZiBsb29wIGVuZHMsIHJlY29yZC0+ZXJyb3IgaW5kaWNhdGVz LAo+ICsJICogd2hldGhlciBpaGV4IGlzIHZhbGlkLiAqLwo+ICsJd2hpbGUgKHVzYjZmaXJlX2Z3 X2loZXhfbmV4dF9yZWNvcmQocmVjb3JkKSkKPiArCQlyZWNvcmQtPm1heF9sZW4gPSBtYXgocmVj b3JkLT5sZW4sIHJlY29yZC0+bWF4X2xlbik7Cj4gKwlpZiAocmVjb3JkLT5lcnJvcikKPiArCQly ZXR1cm4gLUVJTlZBTDsKPiArCXJlY29yZC0+dHh0X29mZnNldCA9IDA7Cj4gKwlyZXR1cm4gMDsK PiArfQoKSSBmb3VuZCB0aGF0IHRoZSByZWNlbnQga2VybmVsIGhhcyBsaW51eC9paGV4LmggaGVs cGVyIGZ1bmN0aW9ucy4KVGhleSBtaWdodCBoZWxwIGZvciBzaW1wbGlmeWluZyB0aGUgY29kZS4g IEJ1dCwgdGhpcyBjYW4gYmUgZG9uZSBsYXRlcgphcyBhIGEgY2xlYW4tdXAuCgo+IGRpZmYgLU51 ciBhL3NvdW5kL3VzYi82ZmlyZS9wY20uYyBiL3NvdW5kL3VzYi82ZmlyZS9wY20uYwo+IC0tLSBh L3NvdW5kL3VzYi82ZmlyZS9wY20uYwkxOTcwLTAxLTAxIDAxOjAwOjAwLjAwMDAwMDAwMCArMDEw MAo+ICsrKyBiL3NvdW5kL3VzYi82ZmlyZS9wY20uYwkyMDExLTAxLTIwIDIzOjA3OjI0LjAwMDAw MDAwMCArMDEwMAouLi4KPiArLyoga2VlcCBuZXh0IHR3byBzeW5jZWQgd2l0aAo+ICsgKiBGV19F UF9XX01BWF9QQUNLRVRfU0laRVtdIGFuZCBSQVRFU19NQVhfUEFDS0VUX1NJWkUgKi8KPiArc3Rh dGljIGNvbnN0IGludCBSQVRFU19JTl9QQUNLRVRfU0laRVtdID0geyAyMjgsIDIyOCwgNDIwLCA0 MjAsIDQwNCwgNDA0IH07Cj4gK3N0YXRpYyBjb25zdCBpbnQgUkFURVNfT1VUX1BBQ0tFVF9TSVpF W10gPSB7IDIyOCwgMjI4LCA0MjAsIDQyMCwgNjA0LCA2MDQgfTsKPiArc3RhdGljIGNvbnN0IGlu dCBSQVRFU1tdID0geyA0NDEwMCwgNDgwMDAsIDg4MjAwLCA5NjAwMCwgMTc2NDAwLCAxOTIwMDAg fTsKCkFueSByZWFzb24gdG8gdXNlIGNhcGl0YWwgbGV0dGVycyBmb3IgdGhlc2U/CkJlY2F1c2Ug dGhleSBhcmUgY29uc3Q/Cgo+ICtzdGF0aWMgY29uc3QgaW50IFJBVEVTX0FMU0FJRFtdID0geyBT TkRSVl9QQ01fUkFURV80NDEwMCwgU05EUlZfUENNX1JBVEVfNDgwMDAsCgpCZWdpbiB0aGUgZGF0 YSBpbiB0aGUgb3BlbiBsaW5lLCBhbmQgdXNlIGEgcHJvcGVyIGluZGVudC4KCj4gKwkJU05EUlZf UENNX1JBVEVfODgyMDAsIFNORFJWX1BDTV9SQVRFXzk2MDAwLAo+ICsJCVNORFJWX1BDTV9SQVRF XzE3NjQwMCwgU05EUlZfUENNX1JBVEVfMTkyMDAwIH07Cj4gK3N0YXRpYyBjb25zdCBpbnQgUkFU RVNfQUxUU0VUVElOR1tdID0geyAxLCAxLCAyLCAyLCAzLCAzIH07Cj4gKwo+ICsvKiB2YWx1ZXMg dG8gd3JpdGUgdG8gc291bmRjYXJkIHJlZ2lzdGVyIGZvciBhbGwgc2FtcGxlcmF0ZXMgKi8KPiAr c3RhdGljIGNvbnN0IF9fdTE2IFJBVEVTXzZGSVJFX1ZMW10gPSB7MHgwMCwgMHgwMSwgMHgwMCwg MHgwMSwgMHgwMCwgMHgwMX07Cj4gK3N0YXRpYyBjb25zdCBfX3UxNiBSQVRFU182RklSRV9WSFtd ID0gezB4MTEsIDB4MTEsIDB4MTAsIDB4MTAsIDB4MDAsIDB4MDB9OwoKVXNlIHUxNi4KCj4gZGlm ZiAtTnVyIGEvc291bmQvdXNiL0tjb25maWcgYi9zb3VuZC91c2IvS2NvbmZpZwo+IC0tLSBhL3Nv dW5kL3VzYi9LY29uZmlnCTIwMTEtMDEtMTYgMjM6MjA6NDEuMDAwMDAwMDAwICswMTAwCj4gKysr IGIvc291bmQvdXNiL0tjb25maWcJMjAxMS0wMS0yMCAyMzoyNTozNC4wMDAwMDAwMDAgKzAxMDAK PiBAQCAtMzIsNiArMzIsMTkgQEAKPiAgCSAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1v ZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZQo+ICAJICB3aWxsIGJlIGNhbGxlZCBzbmQt dWExMDEuCiAKPiArY29uZmlnIFNORF9VU0JfNkZJUkUKPiArCXRyaXN0YXRlICJUZXJyYVRlYyBE TVggNkZpcmUgVVNCIgo+ICsJZGVwZW5kcyBvbiBYODYKCldoeSB4ODYtZGVwZW5kZW50PwoKCnRo YW5rcywKClRha2FzaGkKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KQWxzYS1kZXZlbCBtYWlsaW5nIGxpc3QKQWxzYS1kZXZlbEBhbHNhLXByb2plY3Qub3Jn Cmh0dHA6Ly9tYWlsbWFuLmFsc2EtcHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9hbHNhLWRl dmVsCg==