Re: [RFC PATCH v3 04/19] target/arm: expose all ID regs fields as properties
Khushit Shah <[email protected]> Mon, 3 Aug 2026 15:05:01 +0000
| Newsgroups | dev.linux.lists.kvmarm,org.nongnu.qemu-arm,org.nongnu.qemu-devel |
|---|---|
| Message-ID | <[email protected]> |
DQoNCj4gT24gMjEgSnVsIDIwMjYsIGF0IDg6MTTigK9QTSwgRXJpYyBBdWdlciA8ZXJpYy5hdWdl ckByZWRoYXQuY29tPiB3cm90ZToNCj4gDQo+ICEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfA0KPiAgQ0FVVElPTjogRXh0 ZXJuYWwgRW1haWwNCj4gDQo+IHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIQ0KPiANCj4gSGkgS2h1c2hpdCwNCj4gDQo+ IE9uIDcvMTYvMjYgMTE6MzggUE0sIEtodXNoaXQgU2hhaCB3cm90ZToNCj4+IFVwY29taW5nIG5h bWVkIGNwdSBtb2RlbHMgbGF5ZXIgcmVxdWlyZXMgZXhwb3NpbmcgYWxsIHRoZSBJRCByZWdpc3Rl cg0KPj4gZmllbGRzIGFzIHByb3BlcnRpZXMuDQo+PiANCj4+IFdoaWxlIGRvaW5nIHNvIGFsc28g bW92ZSB0aGUgY29kZSB0byBjcHU2NC5jIHRvIG1ha2UgaXQNCj4+IGFjY2VsZXJhdG9yLWFnbm9z dGljLCBhbmQgcmVuYW1lIHRoZSBmdW5jdGlvbiB0bw0KPj4gYGFhcmNoNjRfYWRkX2lkcmVnc19w cm9wZXJ0aWVzKClgLg0KPiANCj4gQmV0dGVyIHRvIHNwbGl0IHRoYXQgcGF0Y2ggaW50byAyIHRv IGVhc2UgdGhlIHJldmlldzoNCj4gMSkgdXBkYXRlIHRoZSBjb2RlIGluIGt2bSB0byBleHBvc2Ug YWxsIElEIHJlZ3MgaW5jbHVkaW5nIHRob3NlIHdoaWNoDQo+IGFyZSBub3Qgd3JpdGFibGUgYW5k IGFkYXB0YXRpb24gaW4gc2V0X3N5c3JlZ19wcm9wIHRvIGhhbmRsZSBSQVosDQo+IFJFUzAvMSwg Li4uDQo+IDIpIE1vdmUgdG8gY3B1NjQuYw0KVGhpcyBtYWtlcyBtb3JlIHNlbnNlLCB0aGFua3Ms IHdpbGwgZG8gdGhhdCBpbiB2NC4NCg0KPiBUbyBtZSBpdCBpcyBzdGlsbCBhcmd1YWJsZSB3aGV0 aGVyIGl0IG1ha2VzIHNlbnNlIHRvIGV4cG9zZSBzZXR0aW5ncw0KPiB3aGljaCBjYW5ub3QgYmUg cmVhbGx5IHNldC4gVG8gbWUgSXQgcG9sbHV0ZXMgdGhlIHFtcCBpbnRyb3NwZWN0aW9uDQo+IG91 dHB1dCBhbmQgSSBkb24ndCBrbm93IHdoZXRoZXIgdGhlcmUgaXMgYW55IGNhc2UgaGlzdG9yeS4N Cj4gV2h5IGNhbid0IHdlOg0KPiAtIG9ubHkgZXhwb3NlIHdyaXRhYmxlIGlkIHJlZ3MgYXMgcHJv cHMNCj4gLSBvdGhlciBub24gd3JpdGFibGUgc2V0dGluZ3MgeW91IG5lZWQgdG8gY2hlY2sgY291 bGQgYmUgcmVnaXN0ZXJlZCBpbiBhDQo+IGhhc2ggdGFibGUgZHVyaW5nIG5hbWVkIGNwdSBtb2Rl bCBkZWZpbml0aW9uIGluIHByb3BzLiANCj4gaW4gYXJtX2FwcGx5X21vZGVsX3Byb3BzKCkgd2hl biB5b3UgZW51bWVyYXRlIGFsbCBwcm9wcyB5b3UgY2FuIGNoZWNrIGlmDQo+IHRoZXJlIGlzIGFu IGV4aXN0aW5nIHByb3AgZm9yIHRoaXMgbmFtZSwgaW4gd2hpY2ggY2FzZSB5b3UgcmVhbGx5IGNh bGwNCj4gDQo+IG9iamVjdF9wcm9wZXJ0eV9zZXRfYm9vbCgpLCBvdGhlcndpc2UsIHlvdSBnbyB0 aHJvdWdoIGFub3RoZXIgcGF0aCwgd2hpY2ggaXMgbm90IHZpc2libGUgYnkgdGhlIGVuZCB1c2Vy IHdoZXJlIHlvdSBjaGVjayB0aGUgS1ZNIHZhbHVlIG1hdGNoZXMgeW91ciAicHJvcCIgdmFsdWUu IE5vIG5lZWQgdG8gcHJldGVuZCB0aGlzIGlzIHdyaXRhYmxlLg0KDQpQbGVhc2UgcmVmZXIgdG8g bXkgYmVsb3cgdGV4dC4gDQoNCj4gQWxzbyBJIGFtIGRvdWJ0ZnVsIGFib3V0IFJFUy9SQVouDQo+ IA0KPiArICAgIE1PREVMX1BST1AoIlNZU1JFR19DVFJfRUwwX1JFUzFfMzEiLCBOVU0sIDEpLA0K PiANCj4gZG9lcyBub3QgbWFrZSBzZW5zZSB0byBtZQ0KPiANCj4gV2h5IGNhbid0IHlvdSBlbnVt YXRlIGFsbCBJRCByZWdzIGFuZCBnbyB0aHJvdWdoIHRob3NlIGZpZWxkcyBhbmQgY2hlY2sgdGhl IEtWTSB2YWx1ZSBtYXRjaGVzLiBXaHkgd291bGQgd2UgbmVlZCB0byBleHBsaWNpdGx5IHNldCBh IFJBUy9SRVMwLzEgZmllbGQuIFdoeSBjYW4ndCB0aGF0IGJlIGNoZWNrZWQgdHJhbnNwYXJlbnRs eS4NCg0KV2h5IGRvIHdlIG5lZWQgbm9uLXdyaXRhYmxlIGZpZWxkIHByb3BzPzoNCi0gQXNzdW1l IHNvbWUgbm9uLXdyaXRhYmxlIGZpZWxkIG1pc21hdGNoZXMgZm9yIHRoZSBtb2RlbCBhbmQNCiAg aG9zdCwgd2h5IGRvIHdlIHdhbnQgdG8gc3RvcCB1c2VycyBmcm9tIGV4cGxpY2l0bHkgb3ZlcnJp ZGluZw0KICB0aGUgbW9kZWwncyBmaWVsZCB2YWx1ZSB0byBob3N0IHZhbHVlPw0KLSBFdmVuIHdp dGggY3B1IC1ob3N0LCBob3cgd2lsbCB1cHBlciBsYXllciBrbm93LCBpZiB0aGV5IGNhbg0KICBt aWdyYXRlIGJldHdlZW4gaG9zdCBBIGFuZCBob3N0IEI/IChXaXRob3V0IGFjdHVhbGx5IGRvaW5n DQogIHRoZSBtaWdyYXRpb24pDQogICAgIC0+IE9ubHkgaWYgYWxsIG5vbi13cml0YWJsZSBmaWVs ZHMgaW4gYm90aCBob3N0IG1hdGNoZXMNCiAgICAgICAgYW5kIHdyaXRhYmxlIGZpZWxkcyBpbiBi b3RoIGhvc3QgYXJlIOKAnGNvbXBhdGlibGXigJ0uDQoNCldoeSB3b3VsZCB3ZSBuZWVkIHRvIGV4 cGxpY2l0bHkgc2V0IGEgUkFTL1JFUzAvMSBmaWVsZD8NCi0gSGVyZSBteSBhcmd1bWVudCBpcyBh IGxpdHRsZSB3ZWFrZXIgYnV0LCB3aGF0IGlmIFJFUzEgZmllbGQNCiAgaXMgcmVwdXJwb3NlZCBp biB0aGUgZnV0dXJlPyBXZSBzdGlsbCB3YW50IGV4aXN0aW5nIG1vZGVscw0KICB0byBzaG93IDEu DQogIFJFUzAgZG9lcyBub3QgbmVlZCBhbnkgc3BlY2lhbCBoYW5kbGluZywgb25seSBSRVMxIGZp ZWxkIG5lZWRzDQogIHRoaXMgc3BlY2lhbCBoYW5kbGluZy4NCg0KDQpEb2VzIHRoZSBhYm92ZSBh cmd1bWVudHMgbWFrZSBzZW5zZT8gDQoNCldhcm0gUmVnYXJkcywNCktodXNoaXQNCg0KPiBUaGFu a3MNCj4gDQo+IEVyaWMNCj4gDQo+PiANCj4+IFRoaXMgbWFrZXMgcG9ydGluZyB0aGlzIHNvbHV0 aW9uIHRvIG90aGVyIGFjY2VsZXJhdG9ycyBlYXN5IGluIGZ1dHVyZS4NCj4+IA0KPj4gU2lnbmVk LW9mZi1ieTogS2h1c2hpdCBTaGFoIDxraHVzaGl0LnNoYWhAbnV0YW5peC5jb20+DQo+PiAtLS0N Cj4+IHRhcmdldC9hcm0vY3B1NjQuYyAgICAgIHwgMTE2ICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrLQ0KPj4gdGFyZ2V0L2FybS9pbnRlcm5hbHMuaCAgfCAgIDMgKw0KPj4gdGFyZ2V0L2Fy bS9rdm0uYyAgICAgICAgfCAxNTEgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQ0KPj4gdGFyZ2V0L2FybS9rdm1fYXJtLmggICAgfCAgIDggLS0tDQo+PiB0YXJnZXQvYXJt L3RyYWNlLWV2ZW50cyB8ICAgNCArLQ0KPj4gNSBmaWxlcyBjaGFuZ2VkLCAxMTkgaW5zZXJ0aW9u cygrKSwgMTYzIGRlbGV0aW9ucygtKQ0KPj4gDQo+PiBkaWZmIC0tZ2l0IGEvdGFyZ2V0L2FybS9j cHU2NC5jIGIvdGFyZ2V0L2FybS9jcHU2NC5jDQo+PiBpbmRleCA5MmEwMWQ0Y2U3Li5jZGFkMGZj NDZkIDEwMDY0NA0KPj4gLS0tIGEvdGFyZ2V0L2FybS9jcHU2NC5jDQo+PiArKysgYi90YXJnZXQv YXJtL2NwdTY0LmMNCj4+IEBAIC0zOCw2ICszOCw3IEBADQo+PiAjaW5jbHVkZSAiaW50ZXJuYWxz LmgiDQo+PiAjaW5jbHVkZSAiY3B1LWZlYXR1cmVzLmgiDQo+PiAjaW5jbHVkZSAiY3B1LWlkcmVn cy5oIg0KPj4gKyNpbmNsdWRlICJ0cmFjZS5oIg0KPj4gDQo+PiAvKiBjb252ZXJ0IGJldHdlZW4g PHJlZ2lzdGVyPl9JRFggYW5kIFNZU188cmVnaXN0ZXI+ICovDQo+PiAjZGVmaW5lIERFRihOQU1F LCBPUDAsIE9QMSwgQ1JOLCBDUk0sIE9QMikgICAgICBcDQo+PiBAQCAtNjQ0LDYgKzY0NSwxMTMg QEAgc3RhdGljIGNvbnN0IFByb3BlcnR5IGFybV9jcHVfcGF1dGhfcWFybWEzX3Byb3BlcnR5ID0N Cj4+IHN0YXRpYyBQcm9wZXJ0eSBhcm1fY3B1X3BhdXRoX3Fhcm1hNV9wcm9wZXJ0eSA9DQo+PiAg ICAgREVGSU5FX1BST1BfQk9PTCgicGF1dGgtcWFybWE1IiwgQVJNQ1BVLCBwcm9wX3BhdXRoX3Fh cm1hNSwgZmFsc2UpOw0KPj4gDQo+PiArI2lmbmRlZiBDT05GSUdfVVNFUl9PTkxZDQo+PiArc3Rh dGljIHZvaWQgc2V0X3N5c3JlZ19wcm9wKE9iamVjdCAqb2JqLCBWaXNpdG9yICp2LA0KPj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lLCB2b2lkICpvcGFxdWUs DQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVycm9yICoqZXJycCkNCj4+ICt7DQo+ PiArICAgIEFSTTY0U3lzUmVnRmllbGQgKmZpZWxkID0gKEFSTTY0U3lzUmVnRmllbGQgKilvcGFx dWU7DQo+PiArICAgIEFSTUNQVSAqY3B1ID0gQVJNX0NQVShvYmopOw0KPj4gKyAgICB1aW50NjRf dCAqaWRyZWdzID0gY3B1LT5pc2FyLmlkcmVnczsNCj4+ICsgICAgdWludDY0X3Qgb2xkLCB2YWx1 ZSwgbWFzazsNCj4+ICsgICAgaW50IGxvd2VyID0gZmllbGQtPnNoaWZ0Ow0KPj4gKyAgICBpbnQg bGVuZ3RoID0gZmllbGQtPmxlbmd0aDsNCj4+ICsgICAgaW50IGluZGV4ID0gZmllbGQtPmluZGV4 Ow0KPj4gKw0KPj4gKyAgICBpZiAoIXZpc2l0X3R5cGVfdWludDY0KHYsIG5hbWUsICZ2YWx1ZSwg ZXJycCkpIHsNCj4+ICsgICAgICAgIHJldHVybjsNCj4+ICsgICAgfQ0KPj4gKw0KPj4gKyAgICBp ZiAobGVuZ3RoIDwgNjQgJiYgdmFsdWUgPiAoKDFVTEwgPDwgbGVuZ3RoKSAtIDEpKSB7DQo+PiAr ICAgICAgICBlcnJvcl9zZXRnKGVycnAsDQo+PiArICAgICAgICAgICAgICAgICAgICJpZHJlZyAl cyBzZXQgdmFsdWUgKDB4JWx4KSBleGNlZWRzIGxlbmd0aCBvZiBmaWVsZCAoJWQpISIsDQo+PiAr ICAgICAgICAgICAgICAgICAgIG5hbWUsIHZhbHVlLCBsZW5ndGgpOw0KPj4gKyAgICAgICAgcmV0 dXJuOw0KPj4gKyAgICB9DQo+PiArDQo+PiArICAgIGlmIChmaWVsZC0+YXJjaF92YWxzKSB7DQo+ PiArICAgICAgICAvKiB0aGlzIGZpZWxkIGhhcyBzb21lIGVudW0gdmFsdWVzICovDQo+PiArICAg ICAgICBmb3IgKGludCBpID0gMDsgaSA8IGZpZWxkLT5hcmNoX3ZhbHNfY291bnQ7IGkrKykgew0K Pj4gKyAgICAgICAgICAgIGlmICh2YWx1ZSA9PSBmaWVsZC0+YXJjaF92YWxzW2ldLnZhbHVlKSB7 DQo+PiArICAgICAgICAgICAgICAgIGdvdG8gdmFsaWQ7DQo+PiArICAgICAgICAgICAgfQ0KPj4g KyAgICAgICAgfQ0KPj4gKyAgICAgICAgZXJyb3Jfc2V0ZyhlcnJwLA0KPj4gKyAgICAgICAgICAg ICAgICAgICAiaWRyZWcgJXMgc2V0IHZhbHVlICgweCVseCkgZG9lcyBub3QgbWF0Y2ggYW55ICIN Cj4+ICsgICAgICAgICAgICAgICAgICAgImFyY2ggdmFsaWQgZW51bSB2YWx1ZSEiLCBuYW1lLCB2 YWx1ZSk7DQo+PiArICAgICAgICByZXR1cm47DQo+PiArICAgIH0NCj4+ICsNCj4+ICsgICAgLyog SWYgdGhlIGZpZWxkIGlzIFJFU3ggb3IgUkFaLCBpdCBzaG91bGQgbm90IGJlIHdyaXR0ZW4gYW55 dGhpbmcgZWxzZSAqLw0KPj4gKyAgICBpZiAoc3Ryc3RyKGZpZWxkLT5uYW1lLCAiUkVTMCIpICYm IHZhbHVlICE9IDApIHsNCj4+ICsgICAgICAgIGVycm9yX3NldGcoZXJycCwgImlkcmVnICVzIGlz IFJFUzAgZmllbGQgYW5kIGNhbm5vdCB3cml0ZSAlbGQiLA0KPj4gKyAgICAgICAgICAgIG5hbWUs IHZhbHVlKTsNCj4+ICsgICAgICAgIHJldHVybjsNCj4+ICsgICAgfSBlbHNlIGlmIChzdHJzdHIo ZmllbGQtPm5hbWUsICJSQVoiKSAmJiB2YWx1ZSAhPSAwKSB7DQo+PiArICAgICAgICBlcnJvcl9z ZXRnKGVycnAsICJpZHJlZyAlcyBpcyBSQVogZmllbGQgYW5kIGNhbm5vdCB3cml0ZSAlbGQiLA0K Pj4gKyAgICAgICAgICAgIG5hbWUsIHZhbHVlKTsNCj4+ICsgICAgICAgIHJldHVybjsNCj4+ICsg ICAgfSBlbHNlIGlmIChzdHJzdHIoZmllbGQtPm5hbWUsICJSRVMxIikgJiYgdmFsdWUgIT0gMSkg ew0KPj4gKyAgICAgICAgZXJyb3Jfc2V0ZyhlcnJwLCAiaWRyZWcgJXMgaXMgUkVTMSBmaWVsZCBh bmQgY2Fubm90IHdyaXRlICVsZCIsDQo+PiArICAgICAgICAgICAgbmFtZSwgdmFsdWUpOw0KPj4g KyAgICAgICAgcmV0dXJuOw0KPj4gKyAgICB9DQo+PiArDQo+PiArdmFsaWQ6DQo+PiArICAgIG1h c2sgPSBNQUtFXzY0QklUX01BU0sobG93ZXIsIGxlbmd0aCk7DQo+PiArICAgIHZhbHVlID0gdmFs dWUgPDwgbG93ZXI7DQo+PiArICAgIG9sZCA9IGlkcmVnc1tpbmRleF07DQo+PiArICAgIGlkcmVn c1tpbmRleF0gPSBvbGQgJiB+bWFzazsNCj4+ICsgICAgaWRyZWdzW2luZGV4XSB8PSB2YWx1ZTsN Cj4+ICsgICAgdHJhY2Vfc2V0X3N5c3JlZ19wcm9wKG5hbWUsIG9sZCwgbWFzaywgdmFsdWUsIGlk cmVnc1tpbmRleF0pOw0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgdm9pZCBnZXRfc3lzcmVnX3By b3AoT2JqZWN0ICpvYmosIFZpc2l0b3IgKnYsDQo+PiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNvbnN0IGNoYXIgKm5hbWUsIHZvaWQgKm9wYXF1ZSwNCj4+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgRXJyb3IgKiplcnJwKQ0KPj4gK3sNCj4+ICsgICAgQVJNNjRTeXNSZWdGaWVs ZCAqZmllbGQgPSAoQVJNNjRTeXNSZWdGaWVsZCAqKW9wYXF1ZTsNCj4+ICsgICAgQVJNQ1BVICpj cHUgPSBBUk1fQ1BVKG9iaik7DQo+PiArICAgIHVpbnQ2NF90ICppZHJlZ3MgPSBjcHUtPmlzYXIu aWRyZWdzOw0KPj4gKyAgICB1aW50NjRfdCB2YWx1ZSwgbWFzazsNCj4+ICsgICAgaW50IGxvd2Vy ID0gZmllbGQtPnNoaWZ0Ow0KPj4gKyAgICBpbnQgbGVuZ3RoID0gZmllbGQtPmxlbmd0aDsNCj4+ ICsgICAgaW50IGluZGV4ID0gZmllbGQtPmluZGV4Ow0KPj4gKw0KPj4gKyAgICBtYXNrID0gTUFL RV82NEJJVF9NQVNLKGxvd2VyLCBsZW5ndGgpOw0KPj4gKyAgICB2YWx1ZSA9IChpZHJlZ3NbaW5k ZXhdICYgbWFzaykgPj4gbG93ZXI7DQo+PiArICAgIHZpc2l0X3R5cGVfdWludDY0KHYsIG5hbWUs ICZ2YWx1ZSwgZXJycCk7DQo+PiArICAgIHRyYWNlX2dldF9zeXNyZWdfcHJvcChuYW1lLCB2YWx1 ZSk7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBpbnQNCj4+ICthYXJjaDY0X2FkZF9pZHJlZ19w cm9wZXJ0aWVzKE9iamVjdCAqb2JqLCBBUk02NFN5c1JlZyAqcmVnKQ0KPj4gK3sNCj4+ICsgICAg aW50IG5iX3N5c3JlZ19wcm9wcyA9IDA7DQo+PiArDQo+PiArICAgIGZvciAoaW50IGkgPSAwOyBp IDwgcmVnLT5maWVsZHNfY291bnQ7IGkrKykgew0KPj4gKyAgICAgICAgQVJNNjRTeXNSZWdGaWVs ZCAqZmllbGQgPSAmcmVnLT5maWVsZHNbaV07DQo+PiArICAgICAgICBjaGFyICpwcm9wX25hbWUg PSBnX3N0cmR1cF9wcmludGYoIlNZU1JFR18lc18lcyIsIHJlZy0+bmFtZSwNCj4+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC0+bmFtZSk7DQo+PiArICAg ICAgICBvYmplY3RfcHJvcGVydHlfYWRkKG9iaiwgcHJvcF9uYW1lLCAidWludDY0IiwNCj4+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0X3N5c3JlZ19wcm9wLCBzZXRfc3lzcmVnX3By b3AsIE5VTEwsIGZpZWxkKTsNCj4+ICsgICAgICAgIGdfZnJlZShwcm9wX25hbWUpOw0KPj4gKyAg ICAgICAgbmJfc3lzcmVnX3Byb3BzKys7DQo+PiArICAgIH0NCj4+ICsNCj4+ICsgICAgdHJhY2Vf bmJfc3lzcmVnX3Byb3BzKHJlZy0+bmFtZSwgbmJfc3lzcmVnX3Byb3BzKTsNCj4+ICsgICAgcmV0 dXJuIDA7DQo+PiArfQ0KPj4gKw0KPj4gK3ZvaWQgYWFyY2g2NF9hZGRfaWRyZWdzX3Byb3BlcnRp ZXMoT2JqZWN0ICpvYmopDQo+PiArew0KPj4gKyAgICBmb3IgKGludCBpID0gMDsgaSA8IE5VTV9J RF9JRFg7IGkrKykgew0KPj4gKyAgICAgICAgQVJNNjRTeXNSZWcgKnJlZyA9ICZhcm02NF9pZF9y ZWdzW2ldOw0KPj4gKyAgICAgICAgYWFyY2g2NF9hZGRfaWRyZWdfcHJvcGVydGllcyhvYmosIHJl Zyk7DQo+PiArICAgIH0NCj4+ICt9DQo+PiArI2VuZGlmDQo+PiArDQo+PiB2b2lkIGFhcmNoNjRf YWRkX3BhdXRoX3Byb3BlcnRpZXMoT2JqZWN0ICpvYmopDQo+PiB7DQo+PiAgICAgQVJNQ1BVICpj cHUgPSBBUk1fQ1BVKG9iaik7DQo+PiBAQCAtODY1LDggKzk3MywxMiBAQCBzdGF0aWMgdm9pZCBh YXJjaDY0X2hvc3RfaW5pdGZuKE9iamVjdCAqb2JqKQ0KPj4gICAgIGt2bV9hcm1fc2V0X2NwdV9m ZWF0dXJlc19mcm9tX2hvc3QoY3B1KTsNCj4+ICAgICBhYXJjaDY0X2FkZF9zdmVfcHJvcGVydGll cyhvYmopOw0KPj4gDQo+PiAtICAgIC8qIGdlbmVyYXRlIFNZU1JFRyBwcm9wZXJ0aWVzIGFjY29y ZGluZyB0byB3cml0YWJsZSBtYXNrcyAqLw0KPj4gLSAgICBrdm1fYXJtX2V4cG9zZV9pZHJlZ19w cm9wZXJ0aWVzKGNwdSwgYXJtNjRfaWRfcmVncyk7DQo+PiArI2lmbmRlZiBDT05GSUdfVVNFUl9P TkxZDQo+PiArICAgIC8qIGdlbmVyYXRlIFNZU1JFRyBwcm9wZXJ0aWVzICovDQo+PiArICAgIGlm IChrdm1fZW5hYmxlZCgpKSB7DQo+PiArICAgICAgICBhYXJjaDY0X2FkZF9pZHJlZ3NfcHJvcGVy dGllcyhvYmopOw0KPj4gKyAgICB9DQo+PiArI2VuZGlmDQo+PiANCj4+ICNlbGlmIGRlZmluZWQo Q09ORklHX0hWRikNCj4+ICAgICBodmZfYXJtX3NldF9jcHVfZmVhdHVyZXNfZnJvbV9ob3N0KGNw dSk7DQo+PiBkaWZmIC0tZ2l0IGEvdGFyZ2V0L2FybS9pbnRlcm5hbHMuaCBiL3RhcmdldC9hcm0v aW50ZXJuYWxzLmgNCj4+IGluZGV4IGE2MzI1ODRhNGUuLjc1MDJiNmRiOGEgMTAwNjQ0DQo+PiAt LS0gYS90YXJnZXQvYXJtL2ludGVybmFscy5oDQo+PiArKysgYi90YXJnZXQvYXJtL2ludGVybmFs cy5oDQo+PiBAQCAtMTc1NCw2ICsxNzU0LDkgQEAgdm9pZCBhYXJjaDY0X21heF90Y2dfaW5pdGZu KE9iamVjdCAqb2JqKTsNCj4+IHZvaWQgYWFyY2g2NF9hZGRfcGF1dGhfcHJvcGVydGllcyhPYmpl Y3QgKm9iaik7DQo+PiB2b2lkIGFhcmNoNjRfYWRkX3N2ZV9wcm9wZXJ0aWVzKE9iamVjdCAqb2Jq KTsNCj4+IHZvaWQgYWFyY2g2NF9hZGRfc21lX3Byb3BlcnRpZXMoT2JqZWN0ICpvYmopOw0KPj4g KyNpZm5kZWYgQ09ORklHX1VTRVJfT05MWQ0KPj4gK3ZvaWQgYWFyY2g2NF9hZGRfaWRyZWdzX3By b3BlcnRpZXMoT2JqZWN0ICpvYmopOw0KPj4gKyNlbmRpZg0KPj4gDQo+PiAvKiBSZXR1cm4gdHJ1 ZSBpZiB0aGUgZ2Ric3R1YiBpcyBwcmVzZW50aW5nIGFuIEFBcmNoNjQgQ1BVICovDQo+PiBzdGF0 aWMgaW5saW5lIGJvb2wgYXJtX2dkYnN0dWJfaXNfYWFyY2g2NChBUk1DUFUgKmNwdSkNCj4+IGRp ZmYgLS1naXQgYS90YXJnZXQvYXJtL2t2bS5jIGIvdGFyZ2V0L2FybS9rdm0uYw0KPj4gaW5kZXgg ODkyNDMzYTYxMi4uNzY1ODNkYjNmMCAxMDA2NDQNCj4+IC0tLSBhL3RhcmdldC9hcm0va3ZtLmMN Cj4+ICsrKyBiL3RhcmdldC9hcm0va3ZtLmMNCj4+IEBAIC0zMjcsMTU3ICszMjcsNiBAQCBzdGF0 aWMgaW50IGdldF9ob3N0X2NwdV9pZHJlZ3MoQVJNQ1BVICpjcHUsIGludCBmZCwgQVJNSG9zdENQ VUZlYXR1cmVzICphaGNmKQ0KPj4gICAgIHJldHVybiBlcnI7DQo+PiB9DQo+PiANCj4+IC1zdGF0 aWMgQVJNNjRTeXNSZWdGaWVsZCAqZ2V0X2ZpZWxkKGludCBpLCBBUk02NFN5c1JlZyAqcmVnKQ0K Pj4gLXsNCj4+IC0gICAgZm9yIChpbnQgZiA9IDA7IGYgPCByZWctPmZpZWxkc19jb3VudDsgZisr KSB7DQo+PiAtICAgICAgICBzdHJ1Y3QgQVJNNjRTeXNSZWdGaWVsZCAqZmllbGQgPSAmcmVnLT5m aWVsZHNbZl07DQo+PiAtICAgICAgICBpbnQgdXBwZXIgPSBmaWVsZC0+c2hpZnQgKyBmaWVsZC0+ bGVuZ3RoIC0gMTsNCj4+IC0NCj4+IC0gICAgICAgIGlmIChpID49IGZpZWxkLT5zaGlmdCAmJiBp IDw9IHVwcGVyKSB7DQo+PiAtICAgICAgICAgICAgcmV0dXJuIGZpZWxkOw0KPj4gLSAgICAgICAg fQ0KPj4gLSAgICB9DQo+PiAtICAgIHJldHVybiBOVUxMOw0KPj4gLX0NCj4+IC0NCj4+IC1zdGF0 aWMgdm9pZCBzZXRfc3lzcmVnX3Byb3AoT2JqZWN0ICpvYmosIFZpc2l0b3IgKnYsDQo+PiAtICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUsIHZvaWQgKm9wYXF1ZSwN Cj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgRXJyb3IgKiplcnJwKQ0KPj4gLXsNCj4+ IC0gICAgQVJNNjRTeXNSZWdGaWVsZCAqZmllbGQgPSAoQVJNNjRTeXNSZWdGaWVsZCAqKW9wYXF1 ZTsNCj4+IC0gICAgQVJNQ1BVICpjcHUgPSBBUk1fQ1BVKG9iaik7DQo+PiAtICAgIHVpbnQ2NF90 ICppZHJlZ3MgPSBjcHUtPmlzYXIuaWRyZWdzOw0KPj4gLSAgICB1aW50NjRfdCBvbGQsIHZhbHVl LCBtYXNrOw0KPj4gLSAgICBpbnQgbG93ZXIgPSBmaWVsZC0+c2hpZnQ7DQo+PiAtICAgIGludCBs ZW5ndGggPSBmaWVsZC0+bGVuZ3RoOw0KPj4gLSAgICBpbnQgaW5kZXggPSBmaWVsZC0+aW5kZXg7 DQo+PiAtDQo+PiAtICAgIGlmICghdmlzaXRfdHlwZV91aW50NjQodiwgbmFtZSwgJnZhbHVlLCBl cnJwKSkgew0KPj4gLSAgICAgICAgcmV0dXJuOw0KPj4gLSAgICB9DQo+PiAtDQo+PiAtICAgIGlm IChsZW5ndGggPCA2NCAmJiB2YWx1ZSA+ICgoMSA8PCBsZW5ndGgpIC0gMSkpIHsNCj4+IC0gICAg ICAgIGVycm9yX3NldGcoZXJycCwNCj4+IC0gICAgICAgICAgICAgICAgICAgImlkcmVnICVzIHNl dCB2YWx1ZSAoMHglbHgpIGV4Y2VlZHMgbGVuZ3RoIG9mIGZpZWxkICglZCkhIiwNCj4+IC0gICAg ICAgICAgICAgICAgICAgbmFtZSwgdmFsdWUsIGxlbmd0aCk7DQo+PiAtICAgICAgICByZXR1cm47 DQo+PiAtICAgIH0NCj4+IC0NCj4+IC0gICAgaWYgKGZpZWxkLT5hcmNoX3ZhbHMpIHsNCj4+IC0g ICAgICAgIC8qIHRoaXMgZmllbGQgaGFzIHNvbWUgZW51bSB2YWx1ZXMgKi8NCj4+IC0gICAgICAg IGZvciAoaW50IGkgPSAwOyBpIDwgZmllbGQtPmFyY2hfdmFsc19jb3VudDsgaSsrKSB7DQo+PiAt ICAgICAgICAgICAgaWYgKHZhbHVlID09IGZpZWxkLT5hcmNoX3ZhbHNbaV0udmFsdWUpIHsNCj4+ IC0gICAgICAgICAgICAgICAgZ290byB2YWxpZDsNCj4+IC0gICAgICAgICAgICB9DQo+PiAtICAg ICAgICB9DQo+PiAtICAgICAgICBlcnJvcl9zZXRnKGVycnAsDQo+PiAtICAgICAgICAgICAgICAg ICAgICJpZHJlZyAlcyBzZXQgdmFsdWUgKDB4JWx4KSBkb2VzIG5vdCBtYXRjaCBhbnkgIg0KPj4g LSAgICAgICAgICAgICAgICAgICAiYXJjaCB2YWxpZCBlbnVtIHZhbHVlISIsIG5hbWUsIHZhbHVl KTsNCj4+IC0gICAgICAgIHJldHVybjsNCj4+IC0gICAgfQ0KPj4gLQ0KPj4gLXZhbGlkOg0KPj4g LQ0KPj4gLSAgICBtYXNrID0gTUFLRV82NEJJVF9NQVNLKGxvd2VyLCBsZW5ndGgpOw0KPj4gLSAg ICB2YWx1ZSA9IHZhbHVlIDw8IGxvd2VyOw0KPj4gLSAgICBvbGQgPSBpZHJlZ3NbaW5kZXhdOw0K Pj4gLSAgICBpZHJlZ3NbaW5kZXhdID0gb2xkICYgfm1hc2s7DQo+PiAtICAgIGlkcmVnc1tpbmRl eF0gfD0gdmFsdWU7DQo+PiAtICAgIHRyYWNlX3NldF9zeXNyZWdfcHJvcChuYW1lLCBvbGQsIG1h c2ssIHZhbHVlLCBpZHJlZ3NbaW5kZXhdKTsNCj4+IC19DQo+PiAtDQo+PiAtc3RhdGljIHZvaWQg Z2V0X3N5c3JlZ19wcm9wKE9iamVjdCAqb2JqLCBWaXNpdG9yICp2LA0KPj4gLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lLCB2b2lkICpvcGFxdWUsDQo+PiAtICAg ICAgICAgICAgICAgICAgICAgICAgICAgIEVycm9yICoqZXJycCkNCj4+IC17DQo+PiAtICAgIEFS TTY0U3lzUmVnRmllbGQgKmZpZWxkID0gKEFSTTY0U3lzUmVnRmllbGQgKilvcGFxdWU7DQo+PiAt ICAgIEFSTUNQVSAqY3B1ID0gQVJNX0NQVShvYmopOw0KPj4gLSAgICB1aW50NjRfdCAqaWRyZWdz ID0gY3B1LT5pc2FyLmlkcmVnczsNCj4+IC0gICAgdWludDY0X3QgdmFsdWUsIG1hc2s7DQo+PiAt ICAgIGludCBsb3dlciA9IGZpZWxkLT5zaGlmdDsNCj4+IC0gICAgaW50IGxlbmd0aCA9IGZpZWxk LT5sZW5ndGg7DQo+PiAtICAgIGludCBpbmRleCA9IGZpZWxkLT5pbmRleDsNCj4+IC0NCj4+IC0g ICAgbWFzayA9IE1BS0VfNjRCSVRfTUFTSyhsb3dlciwgbGVuZ3RoKTsNCj4+IC0gICAgdmFsdWUg PSAoaWRyZWdzW2luZGV4XSAmIG1hc2spID4+IGxvd2VyOw0KPj4gLSAgICB2aXNpdF90eXBlX3Vp bnQ2NCh2LCBuYW1lLCAmdmFsdWUsIGVycnApOw0KPj4gLSAgICB0cmFjZV9nZXRfc3lzcmVnX3By b3AobmFtZSwgdmFsdWUpOw0KPj4gLX0NCj4+IC0NCj4+IC0vKg0KPj4gLSAqIGRlY29kZV9pZHJl Z193cml0ZW1hcDogR2VuZXJhdGUgcHJvcHMgZm9yIHdyaXRhYmxlIGZpZWxkcw0KPj4gLSAqDQo+ PiAtICogQG9iajogQ1BVIG9iamVjdA0KPj4gLSAqIEByZWc6IGRlc2NyaXB0aW9uIG9mIHRoZSBz eXNyZWcNCj4+IC0gKi8NCj4+IC1zdGF0aWMgaW50DQo+PiAtZGVjb2RlX2lkcmVnX3dyaXRlbWFw KE9iamVjdCAqb2JqLCBBUk02NFN5c1JlZyAqcmVnKQ0KPj4gLXsNCj4+IC0gICAgdWludDY0X3Qg bWFwID0gcmVnLT53cml0YWJsZV9tYXNrOw0KPj4gLSAgICBpbnQgaSA9IGN0ejY0KG1hcCk7DQo+ PiAtICAgIGludCBuYl9zeXNyZWdfcHJvcHMgPSAwOw0KPj4gLQ0KPj4gLSAgICB3aGlsZSAobWFw KSB7DQo+PiAtICAgICAgICBBUk02NFN5c1JlZ0ZpZWxkICpmaWVsZCA9IGdldF9maWVsZChpLCBy ZWcpOw0KPj4gLSAgICAgICAgaW50IGxvd2VyLCB1cHBlcjsNCj4+IC0gICAgICAgIGNoYXIgKnBy b3BfbmFtZTsNCj4+IC0gICAgICAgIHVpbnQ2NF90IGZpZWxkX21hc2s7DQo+PiAtDQo+PiAtICAg ICAgICBpZiAoIWZpZWxkKSB7DQo+PiAtICAgICAgICAgICAgd2Fybl9yZXBvcnQoIiVzIGJpdCAl ZCBvZiAlcyBpcyB3cml0YWJsZSBidXQgbm8gbmFtZWQgZmllbGQgIg0KPj4gLSAgICAgICAgICAg ICAgICAgICAgICAgICJpbiB0YXJnZXQvYXJtL2NwdS1pZHJlZ3MuaC5pbmMiLA0KPj4gLSAgICAg ICAgICAgICAgICAgICAgICAgIF9fZnVuY19fLCBpLCByZWctPm5hbWUpOw0KPj4gLSAgICAgICAg ICAgIHdhcm5fcmVwb3J0KCIlcyBpcyB0YXJnZXQvYXJtL2NwdS1pZHJlZ3MuaC5pbmMgdXAtdG8t ZGF0ZT8iLCBfX2Z1bmNfXyk7DQo+PiAtICAgICAgICAgICAgbWFwID0gIG1hcCAmIH5CSVRfVUxM KGkpOw0KPj4gLSAgICAgICAgICAgIGkgPSBjdHo2NChtYXApOw0KPj4gLSAgICAgICAgICAgIGNv bnRpbnVlOw0KPj4gLSAgICAgICAgfQ0KPj4gLSAgICAgICAgbG93ZXIgPSBmaWVsZC0+c2hpZnQ7 DQo+PiAtICAgICAgICB1cHBlciA9IGZpZWxkLT5zaGlmdCArIGZpZWxkLT5sZW5ndGggLSAxOw0K Pj4gLQ0KPj4gLSAgICAgICAgLyogU2FuaXR5IGNoZWNrIHRoZSBmaWVsZCBpcyBub3QgYSByZXNl cnZlZCBmaWVsZCAqLw0KPj4gLSAgICAgICAgaWYgKHN0cnN0cihmaWVsZC0+bmFtZSwgIlJFUzAi KSB8fCBzdHJzdHIoZmllbGQtPm5hbWUsICJSRVMxIikgfHwNCj4+IC0gICAgICAgICAgICBzdHJz dHIoZmllbGQtPm5hbWUsICJSQVoiKSkgew0KPj4gLSAgICAgICAgICAgIHRyYWNlX3VuZXhwZWN0 ZWRfd3JpdGFibGVfcmVzZXJ2ZWRfZmllbGQocmVnLT5uYW1lLCBmaWVsZC0+bmFtZSwNCj4+IC0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvd2Vy LCB1cHBlcik7DQo+PiAtICAgICAgICAgICAgY29udGludWU7DQo+PiAtICAgICAgICB9DQo+PiAt ICAgICAgICBwcm9wX25hbWUgPSBnX3N0cmR1cF9wcmludGYoIlNZU1JFR18lc18lcyIsIHJlZy0+ bmFtZSwgZmllbGQtPm5hbWUpOw0KPj4gLSAgICAgICAgdHJhY2VfZGVjb2RlX2lkcmVnX3dyaXRl bWFwKGZpZWxkLT5uYW1lLCBsb3dlciwgdXBwZXIsIHByb3BfbmFtZSk7DQo+PiAtICAgICAgICBv YmplY3RfcHJvcGVydHlfYWRkKG9iaiwgcHJvcF9uYW1lLCAidWludDY0IiwNCj4+IC0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgZ2V0X3N5c3JlZ19wcm9wLCBzZXRfc3lzcmVnX3Byb3AsIE5V TEwsIGZpZWxkKTsNCj4+IC0gICAgICAgIGdfZnJlZShwcm9wX25hbWUpOw0KPj4gLSAgICAgICAg bmJfc3lzcmVnX3Byb3BzKys7DQo+PiAtDQo+PiAtICAgICAgICBmaWVsZF9tYXNrID0gTUFLRV82 NEJJVF9NQVNLKGxvd2VyLCBmaWVsZC0+bGVuZ3RoKTsNCj4+IC0gICAgICAgIG1hcCA9IG1hcCAm IH5maWVsZF9tYXNrOw0KPj4gLSAgICAgICAgaSA9IGN0ejY0KG1hcCk7DQo+PiAtICAgIH0NCj4+ IC0gICAgdHJhY2VfbmJfc3lzcmVnX3Byb3BzKHJlZy0+bmFtZSwgbmJfc3lzcmVnX3Byb3BzKTsN Cj4+IC0gICAgcmV0dXJuIDA7DQo+PiAtfQ0KPj4gLQ0KPj4gLS8qIGFuYWx5emUgdGhlIHdyaXRh YmxlIG1hc2sgYW5kIGdlbmVyYXRlIHByb3BlcnRpZXMgZm9yIHdyaXRhYmxlIGZpZWxkcyAqLw0K Pj4gLXZvaWQga3ZtX2FybV9leHBvc2VfaWRyZWdfcHJvcGVydGllcyhBUk1DUFUgKmNwdSwgQVJN NjRTeXNSZWcgKnJlZ3MpDQo+PiAtew0KPj4gLSAgICBPYmplY3QgKm9iaiA9IE9CSkVDVChjcHUp Ow0KPj4gLQ0KPj4gLSAgICBmb3IgKGludCBpID0gMDsgaSA8IE5VTV9JRF9JRFg7IGkrKykgew0K Pj4gLSAgICAgICAgQVJNNjRTeXNSZWcgKnN5c3JlZ2Rlc2MgPSAmcmVnc1tpXTsNCj4+IC0NCj4+ IC0gICAgICAgIGlmIChzeXNyZWdkZXNjLT53cml0YWJsZV9tYXNrKSB7DQo+PiAtICAgICAgICAg ICAgLyoNCj4+IC0gICAgICAgICAgICAgKiBzcGVjaWFsIGNhc2UgUkVWSURSX0VMMSBhbmQgQUlE Ul9FTDEgd2hpY2ggYXJlIHdyaXRhYmxlIGJ1dA0KPj4gLSAgICAgICAgICAgICAqIGRvIG5vdCBl eHBvc2UgbmFtZWQgZmllbGRzLiBUaGV5IHdpbGwgbmVlZCB0byBiZSBoYW5kbGVkDQo+PiAtICAg ICAgICAgICAgICogc2VwYXJhdGVseQ0KPj4gLSAgICAgICAgICAgICAqLw0KPj4gLSAgICAgICAg ICAgIGlmIChzdHJjbXAoc3lzcmVnZGVzYy0+bmFtZSwgIlJFVklEUl9FTDEiKSAmJg0KPj4gLSAg ICAgICAgICAgICAgICBzdHJjbXAoc3lzcmVnZGVzYy0+bmFtZSwgIkFJRFJfRUwxIikpIHsNCj4+ IC0gICAgICAgICAgICAgICAgZGVjb2RlX2lkcmVnX3dyaXRlbWFwKG9iaiwgc3lzcmVnZGVzYyk7 DQo+PiAtICAgICAgICAgICAgfQ0KPj4gLSAgICAgICAgfQ0KPj4gLSAgICB9DQo+PiAtfQ0KPj4g DQo+PiBzdGF0aWMgdm9pZA0KPj4ga3ZtX2FybV9nZXRfaG9zdF9jcHVfZmVhdHVyZXMoQVJNQ1BV ICpjcHUsIEFSTUhvc3RDUFVGZWF0dXJlcyAqYWhjZikNCj4+IGRpZmYgLS1naXQgYS90YXJnZXQv YXJtL2t2bV9hcm0uaCBiL3RhcmdldC9hcm0va3ZtX2FybS5oDQo+PiBpbmRleCAyYjM0NzRjYzM2 Li4xMzNhMDI2MDM2IDEwMDY0NA0KPj4gLS0tIGEvdGFyZ2V0L2FybS9rdm1fYXJtLmgNCj4+ICsr KyBiL3RhcmdldC9hcm0va3ZtX2FybS5oDQo+PiBAQCAtMTQzLDE0ICsxNDMsNiBAQCB2b2lkIGt2 bV9hcm1fc2V0X2NwdV9mZWF0dXJlc19mcm9tX2hvc3QoQVJNQ1BVICpjcHUpOw0KPj4gdm9pZCBr dm1fYXJtX2FkZF92Y3B1X3Byb3BlcnRpZXMoQVJNQ1BVICpjcHUpOw0KPj4gDQo+PiB0eXBlZGVm IHN0cnVjdCBBUk02NFN5c1JlZyBBUk02NFN5c1JlZzsNCj4+IC0vKioNCj4+IC0gKiBrdm1fYXJt X2V4cG9zZV9pZHJlZ19wcm9wZXJ0aWVzOg0KPj4gLSAqIEBjcHU6IFRoZSBDUFUgb2JqZWN0IHRv IGdlbmVyYXRlIHRoZSBwcm9wZXJ0aWVzIGZvcg0KPj4gLSAqIEByZWc6IHJlZ2lzdGVycyBmcm9t IHRoZSBob3N0DQo+PiAtICoNCj4+IC0gKiBhbmFseXplIHRoZSB3cml0YWJsZSBtYXNrIGFuZCBn ZW5lcmF0ZSBwcm9wZXJ0aWVzIGZvciB3cml0YWJsZSBmaWVsZHMNCj4+IC0gKi8NCj4+IC12b2lk IGt2bV9hcm1fZXhwb3NlX2lkcmVnX3Byb3BlcnRpZXMoQVJNQ1BVICpjcHUsIEFSTTY0U3lzUmVn ICpyZWdzKTsNCj4+IA0KPj4gLyoqDQo+PiAgKiBrdm1fYXJtX3N0ZWFsX3RpbWVfZmluYWxpemU6 DQo+PiBkaWZmIC0tZ2l0IGEvdGFyZ2V0L2FybS90cmFjZS1ldmVudHMgYi90YXJnZXQvYXJtL3Ry YWNlLWV2ZW50cw0KPj4gaW5kZXggZTY3NzMwZGU2Yi4uZjMzYjBkODIxZCAxMDA2NDQNCj4+IC0t LSBhL3RhcmdldC9hcm0vdHJhY2UtZXZlbnRzDQo+PiArKysgYi90YXJnZXQvYXJtL3RyYWNlLWV2 ZW50cw0KPj4gQEAgLTE1LDExICsxNSwxMSBAQCBhcm1fZ3RfdXBkYXRlX2lycShpbnQgdGltZXIs IGludCBpcnFzdGF0ZSkgImd0X3VwZGF0ZV9pcnE6IHRpbWVyICVkIGlycXN0YXRlICVkIg0KPj4g a3ZtX2FybV9maXh1cF9tc2lfcm91dGUodWludDY0X3QgaW92YSwgdWludDY0X3QgZ3BhKSAiTVNJ IGlvdmEgPSAweCUiUFJJeDY0IiBpcyB0cmFuc2xhdGVkIGludG8gMHglIlBSSXg2NA0KPj4gZ2V0 X2hvc3RfY3B1X2lkcmVncyhjb25zdCBjaGFyICpuYW1lLCB1aW50NjRfdCB2YWx1ZSkgInNjcmF0 Y2ggdmNwdSBob3N0IHZhbHVlIGZvciAlcyBpcyAweCUiUFJJeDY0DQo+PiBrdm1fYXJtX3dyaXRh YmxlX2lkcmVnc190b19jcHJlZ19saXN0KGNvbnN0IGNoYXIgKm5hbWUsIHVpbnQ2NF90IHByZXZp b3VzLCB1aW50NjRfdCBuZXcpICIlcyBvdmVyd3JpdGUgZGVmYXVsdCAweCUiUFJJeDY0IiB3aXRo IDB4JSJQUkl4NjQNCj4+IC1kZWNvZGVfaWRyZWdfd3JpdGVtYXAoY29uc3QgY2hhciogbmFtZSwg aW50IGxvd2VyLCBpbnQgdXBwZXIsIGNoYXIgKnByb3BfbmFtZSkgIiVzIFslZDolZF0gaXMgd3Jp dGFibGUgKHByb3AgJXMpIg0KPj4gKw0KPj4gKyMgY3B1NjQuYw0KPj4gZ2V0X3N5c3JlZ19wcm9w KGNvbnN0IGNoYXIgKm5hbWUsIHVpbnQ2NF90IHZhbHVlKSAiJXMgMHglIlBSSXg2NA0KPj4gc2V0 X3N5c3JlZ19wcm9wKGNvbnN0IGNoYXIgKm5hbWUsIHVpbnQ2NF90IG9sZCwgdWludDY0X3QgbWFz aywgdWludDY0X3QgZmllbGRfdmFsdWUsIHVpbnQ2NF90IG5ldykgIiVzIG9sZCByZWcgdmFsdWU9 MHglIlBSSXg2NCIgbWFzaz0weCUiUFJJeDY0IiBuZXcgZmllbGQgdmFsdWU9MHglIlBSSXg2NCIg bmV3IHJlZyB2YWx1ZT0weCUiUFJJeDY0DQo+PiBuYl9zeXNyZWdfcHJvcHMoY29uc3QgY2hhciAq bmFtZSwgaW50IGNvdW50KSAiJXM6ICVkIFNZU1JFRyBwcm9wZXJ0aWVzIg0KPj4gLXVuZXhwZWN0 ZWRfd3JpdGFibGVfcmVzZXJ2ZWRfZmllbGQoY29uc3QgY2hhciAqcmVnX25hbWUsIGNvbnN0IGNo YXIgKmZpZWxkX25hbWUsIGludCBsb3dlciwgaW50IHVwcGVyKSAiVW5leHBlY3RlZCB3cml0YWJs ZSByZXNlcnZlZCBmaWVsZDogJXMuJXMgWyVkLCVkXSwgc2tpcCBpdCAuLi4iDQo+PiANCj4+ICMg Y3B1LmMNCj4+IGFybV9jcHVfcmVzZXQodWludDY0X3QgbXBfYWZmKSAiY3B1ICUiIFBSSXU2NA0K PiANCg0K