From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTPS id 0984F890EE for ; Tue, 9 Apr 2019 07:27:47 +0000 (UTC) From: "Lisovskiy, Stanislav" Date: Tue, 9 Apr 2019 07:27:44 +0000 Message-ID: <318cf55332cd887a373de1f6173b769af4c75f9f.camel@intel.com> References: <20190405233118.23045-1-jose.souza@intel.com> <3e9a1daf60c3db34d9b6f02e6c884491a8646de6.camel@intel.com> <8a87fd06b19a6dd64f3f642c8c06f175a0fa0874.camel@intel.com> In-Reply-To: <8a87fd06b19a6dd64f3f642c8c06f175a0fa0874.camel@intel.com> Content-Language: en-US Content-ID: MIME-Version: 1.0 Subject: Re: [igt-dev] [PATCH i-g-t 1/2] HAX: tests/kms_atomic_transition: Don't test more planes than memory bandwidth can support List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: "igt-dev@lists.freedesktop.org" , "Souza, Jose" Cc: "Syrjala, Ville" , "Peres, Martin" List-ID: T24gTW9uLCAyMDE5LTA0LTA4IGF0IDE4OjUxIC0wNzAwLCBTb3V6YSwgSm9zZSB3cm90ZToNCj4g T24gTW9uLCAyMDE5LTA0LTA4IGF0IDEwOjQ3ICswMTAwLCBMaXNvdnNraXksIFN0YW5pc2xhdiB3 cm90ZToNCj4gPiBPbiBGcmksIDIwMTktMDQtMDUgYXQgMTY6MzEgLTA3MDAsIEpvc8OpIFJvYmVy dG8gZGUgU291emEgd3JvdGU6DQo+ID4gPiBDYzogU3RhbmlzbGF2IExpc292c2tpeSA8c3Rhbmlz bGF2Lmxpc292c2tpeUBpbnRlbC5jb20+DQo+ID4gPiBTaWduZWQtb2ZmLWJ5OiBKb3PDqSBSb2Jl cnRvIGRlIFNvdXphIDxqb3NlLnNvdXphQGludGVsLmNvbT4NCj4gPiA+IC0tLQ0KPiA+ID4gIHRl c3RzL2ttc19hdG9taWNfdHJhbnNpdGlvbi5jIHwgMjE3ICsrKysrKysrKysrKysrKysrKysrLS0t LS0tDQo+ID4gPiAtLS0tDQo+ID4gPiAtLS0tDQo+ID4gPiAgMSBmaWxlIGNoYW5nZWQsIDEzMCBp bnNlcnRpb25zKCspLCA4NyBkZWxldGlvbnMoLSkNCj4gPiA+IA0KPiA+ID4gZGlmZiAtLWdpdCBh L3Rlc3RzL2ttc19hdG9taWNfdHJhbnNpdGlvbi5jDQo+ID4gPiBiL3Rlc3RzL2ttc19hdG9taWNf dHJhbnNpdGlvbi5jDQo+ID4gPiBpbmRleCAxOGY3MzMxNy4uOTk4OGYzMDMgMTAwNjQ0DQo+ID4g PiAtLS0gYS90ZXN0cy9rbXNfYXRvbWljX3RyYW5zaXRpb24uYw0KPiA+ID4gKysrIGIvdGVzdHMv a21zX2F0b21pY190cmFuc2l0aW9uLmMNCj4gPiA+IEBAIC00MCw5ICs0MCwxOCBAQA0KPiA+ID4g ICNkZWZpbmUgRFJNX0NBUF9DVVJTT1JfSEVJR0hUIDB4OQ0KPiA+ID4gICNlbmRpZg0KPiA+ID4g IA0KPiA+IA0KPiA+IEFsc28gdGFrZSBhIGxvb2sgaGVyZTogDQo+ID4gaHR0cHM6Ly9pbnRlbC1n ZngtY2kuMDEub3JnL3RyZWUvZHJtLXRpcC9JR1RQV18yODA3Lw0KPiA+IA0KPiA+IFRoaXMgY29k ZSBoYXMganVzdCBicm9rZW4gYWxsIGttc19hdG9taWNfdHJhbnNpdGlvbiB0ZXN0DQo+ID4gY2Fz ZXMgZm9yIHNvbWUgcGxhdGZvcm1zLiANCj4gPiBZb3UgdG9sZCB0aGF0IG15IHBhdGNoIGhhcyBm bGF3cywgZGlkbid0IGV4cGxhaW4gd2hpY2ggYW5kIHRoZW4NCj4gPiBzZW50IGEgcGF0Y2ggd2hp Y2ggaGFzIG1vcmUgY29kZSwgY29uZGl0aW9ucywgY3ljbGVzIGFuZA0KPiA+IGludHJvZHVjaW5n DQo+ID4gcHJvYmxlbXMuLi4gU28gd2h5IGlzIGl0IGJldHRlcj8NCj4gDQo+IEkgZGlkIG5vdCBw cm9wZXJseSB0ZXN0ZWQgdGhpcyBpdCB3YXMgbW9yZSBsaWtlIGEgcHJvb2Ygb2YgY29uY2VwdCwN Cj4gdGhhdCBpcyB3aHkgdGhlICJIQVgiIGluIHRoZSBjb21taXQgbWVzc2FnZS4NCg0KT2ssDQoN Cj4gDQo+IEl0IHdhcyBtb3JlIHRvIHNob3cgdGhhdCB3ZSBkb24ndCB0aGF0IGZpcnN0IHBhdGNo IGZyb20geW91ciBzZXJpZXMNCj4gYXQNCj4gYWxsLCB3ZSBzaG91bGQgbm90IGp1c3Qgc2tpcCB0 aGUgd2hvbGUgdGVzdCBpdGVyYXRpb24gYmVjYXVzZSBiZWNhdXNlDQo+IHdtX3NldHVwX3BsYW5l KCkgPT0gMC4NCj4gDQo+IEZlbGwgZnJlZSB0byB0YWtlIHNvbWUgaWRlYXMgZnJvbSB0aGlzIHBh dGNoIG9yIG5vdC4NCj4gDQo+IEFueXdheXMgSSBmb3VuZCB0aGUgcHJvYmxlbSBhbmQgbm93IGl0 IGlzIHBhc3Npbmc6IA0KPiBodHRwczovL3BhdGNod29yay5mcmVlZGVza3RvcC5vcmcvc2VyaWVz LzU5MTkxLw0KDQoNCldlbGwgaWYgeW91LCBvciBhbnlvbmUgaXMgaW4gZG91YnQsIGp1c3QgY29w eS1wYXN0ZSB0aGlzIGNvZGUgdG8NCnJ1bl90cmFuc2l0aW9uIHRlc3QgaW4ga21zX2F0b21pY190 cmFuc2l0aW9uLmM6DQoNCnBhcm1zWzBdLm1hc2sgPSAwOyAgLyogR1JPVVBfVFlQRV9OT05FIGlu IHlvdXIgcGF0Y2ggKi8NCg0Kd21fc2V0dXBfcGxhbmUoZGlzcGxheSwgcGlwZSwgMCwgcGFybXMs IGZhbHNlKTsNCg0KYXRvbWljX2NvbW1pdChkaXNwbGF5LCBwaXBlLCBmbGFncywgKHZvaWQgKiko dW5zaWduZWQgbG9uZykwLCBmYWxzZSk7DQp3YWl0X2Zvcl90cmFuc2l0aW9uKGRpc3BsYXksIHBp cGUsIGZhbHNlLCBmYWxzZSk7DQoNCndtX3NldHVwX3BsYW5lKGRpc3BsYXksIHBpcGUsIDEsIHBh cm1zLCBmYWxzZSk7DQoNCmF0b21pY19jb21taXQoZGlzcGxheSwgcGlwZSwgZmxhZ3MsICh2b2lk ICopKHVuc2lnbmVkIGxvbmcpMSwgZmFsc2UpOw0Kd2FpdF9mb3JfdHJhbnNpdGlvbihkaXNwbGF5 LCBwaXBlLCBmYWxzZSwgZmFsc2UpOw0KDQpIZXJlIHdlIGNvdWxkIGhhdmUgaSA9IDAsIGogPSAx IGluIHJ1bl90cmFuc2l0aW9uLg0KDQpSZXByb2R1Y2VzIHRoZSBiZWxvdyBpc3N1ZSB3aXRoIDEw MCUgcmVwcm9kdWN0aW9uIHJhdGU6DQoNCihrbXNfYXRvbWljX3RyYW5zaXRpb246MzIyNykgQ1JJ VElDQUw6IFRlc3QgYXNzZXJ0aW9uIGZhaWx1cmUgZnVuY3Rpb24NCndhaXRfZm9yX3RyYW5zaXRp b24sIGZpbGUgLi4vdGVzdHMva21zX2F0b21pY190cmFuc2l0aW9uLmM6NDMxOg0KKGttc19hdG9t aWNfdHJhbnNpdGlvbjozMjI3KSBDUklUSUNBTDogRmFpbGVkIGFzc2VydGlvbjoNCmZkX2NvbXBs ZXRlZChkaXNwbGF5LT5kcm1fZmQpDQpTdGFjayB0cmFjZToNCiAgIzAgLi4vbGliL2lndF9jb3Jl LmM6MTQ3NCBfX2lndF9mYWlsX2Fzc2VydCgpDQogICMxIC4uL3Rlc3RzL2ttc19hdG9taWNfdHJh bnNpdGlvbi5jOjQzMyB3YWl0X2Zvcl90cmFuc2l0aW9uKCkNCiAgIzIgLi4vdGVzdHMva21zX2F0 b21pY190cmFuc2l0aW9uLmM6NTQwIHJ1bl90cmFuc2l0aW9uX3Rlc3QoKQ0KICAjMyAuLi90ZXN0 cy9rbXNfYXRvbWljX3RyYW5zaXRpb24uYzo5NjYgX19yZWFsX21haW45MzMoKQ0KICAjNCAuLi90 ZXN0cy9rbXNfYXRvbWljX3RyYW5zaXRpb24uYzo5MzMgbWFpbigpDQogICM1IC4uL2NzdS9saWJj LXN0YXJ0LmM6MzQ0IF9fbGliY19zdGFydF9tYWluKCkNCiAgIzYgW19zdGFydCsweDJhXQ0KU3Vi dGVzdCBwbGFuZS1hbGwtdHJhbnNpdGlvbi1ub25ibG9ja2luZyBmYWlsZWQuDQoNCk9yIHRoaXMg b25lKGk9MSwgaj0zKToNCg0KcGFybXNbMF0ubWFzayA9IDE8PDI7DQpwYXJtc1sxXS5tYXNrID0g MDsgIC8qIChHUk9VUF9UWVBFX05PTkUgaW4geW91ciBwYXRjaCkgKi8NCg0Kd21fc2V0dXBfcGxh bmUoZGlzcGxheSwgcGlwZSwgMSwgcGFybXMsIGZhbHNlKTsNCg0KYXRvbWljX2NvbW1pdChkaXNw bGF5LCBwaXBlLCBmbGFncywgKHZvaWQgKikodW5zaWduZWQgbG9uZykxLCBmYWxzZSk7DQp3YWl0 X2Zvcl90cmFuc2l0aW9uKGRpc3BsYXksIHBpcGUsIGZhbHNlLCBmYWxzZSk7DQoNCndtX3NldHVw X3BsYW5lKGRpc3BsYXksIHBpcGUsIDMsIHBhcm1zLCBmYWxzZSk7DQoNCmF0b21pY19jb21taXQo ZGlzcGxheSwgcGlwZSwgZmxhZ3MsICh2b2lkICopKHVuc2lnbmVkIGxvbmcpMywgZmFsc2UpOw0K d2FpdF9mb3JfdHJhbnNpdGlvbihkaXNwbGF5LCBwaXBlLCBmYWxzZSwgZmFsc2UpOw0KDQpBZ2Fp biBnaXZlczoNCg0KKGttc19hdG9taWNfdHJhbnNpdGlvbjozMjI3KSBDUklUSUNBTDogVGVzdCBh c3NlcnRpb24gZmFpbHVyZSBmdW5jdGlvbg0Kd2FpdF9mb3JfdHJhbnNpdGlvbiwgZmlsZSAuLi90 ZXN0cy9rbXNfYXRvbWljX3RyYW5zaXRpb24uYzo0MzE6DQooa21zX2F0b21pY190cmFuc2l0aW9u OjMyMjcpIENSSVRJQ0FMOiBGYWlsZWQgYXNzZXJ0aW9uOg0KZmRfY29tcGxldGVkKGRpc3BsYXkt PmRybV9mZCkNClN0YWNrIHRyYWNlOg0KICAjMCAuLi9saWIvaWd0X2NvcmUuYzoxNDc0IF9faWd0 X2ZhaWxfYXNzZXJ0KCkNCiAgIzEgLi4vdGVzdHMva21zX2F0b21pY190cmFuc2l0aW9uLmM6NDMz IHdhaXRfZm9yX3RyYW5zaXRpb24oKQ0KICAjMiAuLi90ZXN0cy9rbXNfYXRvbWljX3RyYW5zaXRp b24uYzo1NDAgcnVuX3RyYW5zaXRpb25fdGVzdCgpDQogICMzIC4uL3Rlc3RzL2ttc19hdG9taWNf dHJhbnNpdGlvbi5jOjk2NiBfX3JlYWxfbWFpbjkzMygpDQogICM0IC4uL3Rlc3RzL2ttc19hdG9t aWNfdHJhbnNpdGlvbi5jOjkzMyBtYWluKCkNCiAgIzUgLi4vY3N1L2xpYmMtc3RhcnQuYzozNDQg X19saWJjX3N0YXJ0X21haW4oKQ0KICAjNiBbX3N0YXJ0KzB4MmFdDQpTdWJ0ZXN0IHBsYW5lLWFs bC10cmFuc2l0aW9uLW5vbmJsb2NraW5nIGZhaWxlZC4NCg0KTm90ZSwgdGhpcyBtaWdodCBub3Qg YmUgdmlzaWJsZSBpbiB0ZXN0cyBvciB2aXNpYmxlIGZyb20gdGltZSB0byB0aW1lLA0KZGVwZW5k aW5nIHdoaWNoIHBsYW5lcyBnb3QgcmVtb3ZlZCwgZm9yIHdoaWNoIGkgd2VyZSBwYXJtc1tpXS5t YXNrIHNldCwNCmkuZSBqdXN0IGEgbWF0dGVyIG9mIGx1Y2sgb3IgdW50aWwgc29tZW9uZSBjaGFu Z2VzIHRoZSB0cmFuc2l0aW9uDQphbGdvcml0aG0uIA0KDQpTbyBzaG91bGQgd2UgcmVhbGx5IHdh aXQgdW50aWwgc2hpdCBoaXRzIHRoZSBmYW4/DQoNCj4gDQo+ID4gDQo+ID4gPiArZW51bSBncm91 cF90eXBlIHsNCj4gPiA+ICsJR1JPVVBfVFlQRV9OT05FID0gMCwNCj4gPiA+ICsJR1JPVVBfVFlQ RV9QUklNQVJZID0gMSA8PCAwLA0KPiA+ID4gKwlHUk9VUF9UWVBFX0NVUlNPUiA9IDEgPDwgMSwN Cj4gPiA+ICsJR1JPVVBfVFlQRV9PVkVSTEFZID0gMSA8PCAyLA0KPiA+ID4gKwlHUk9VUF9UWVBF X09WRVJMQVkyID0gMSA8PCAzDQo+ID4gPiArfTsNCj4gPiA+ICsNCj4gPiA+ICBzdHJ1Y3QgcGxh bmVfcGFybXMgew0KPiA+ID4gIAlzdHJ1Y3QgaWd0X2ZiICpmYjsNCj4gPiA+IC0JdWludDMyX3Qg d2lkdGgsIGhlaWdodCwgbWFzazsNCj4gPiA+ICsJdWludDMyX3Qgd2lkdGgsIGhlaWdodDsNCj4g PiA+ICsJZW51bSBncm91cF90eXBlIG1hc2s7DQo+ID4gPiAgfTsNCj4gPiA+ICANCj4gPiA+ICAv KiBnbG9iYWxzIGZvciBmZW5jZSBzdXBwb3J0ICovDQo+ID4gPiBAQCAtMjAzLDEyICsyMTIsMTEg QEAgc3RhdGljIHZvaWQgc2V0dXBfcGFybXMoaWd0X2Rpc3BsYXlfdA0KPiA+ID4gKmRpc3BsYXks DQo+ID4gPiBlbnVtIHBpcGUgcGlwZSwNCj4gPiA+ICAJCQl1bnNpZ25lZCAqaXRlcl9tYXgpDQo+ ID4gPiAgew0KPiA+ID4gIAl1aW50NjRfdCBjdXJzb3Jfd2lkdGgsIGN1cnNvcl9oZWlnaHQ7DQo+ ID4gPiAtCXVuc2lnbmVkIHNwcml0ZV93aWR0aCwgc3ByaXRlX2hlaWdodCwgcHJldl93LCBwcmV2 X2g7DQo+ID4gPiAtCWJvb2wgbWF4X3Nwcml0ZV93aWR0aCwgbWF4X3Nwcml0ZV9oZWlnaHQsIGFs cGhhID0gdHJ1ZTsNCj4gPiA+IC0JdWludDMyX3Qgbl9wbGFuZXMgPSBkaXNwbGF5LT5waXBlc1tw aXBlXS5uX3BsYW5lczsNCj4gPiA+IC0JdWludDMyX3Qgbl9vdmVybGF5cyA9IDAsIG92ZXJsYXlz W25fcGxhbmVzXTsNCj4gPiA+ICsJdWludDMyX3Qgc3ByaXRlX3dpZHRoLCBzcHJpdGVfaGVpZ2h0 LCBwcmV2X3csIHByZXZfaDsNCj4gPiA+ICAJaWd0X3BsYW5lX3QgKnBsYW5lOw0KPiA+ID4gLQl1 aW50MzJfdCBpdGVyX21hc2sgPSAzOw0KPiA+ID4gKwl1aW50MzJfdCBpdGVyX21hc2sgPSAwLCBt YXhfb3ZlcmxheXMsIG5fb3ZlcmxheXMgPSAwOw0KPiA+ID4gKwlib29sIGFscGhhID0gdHJ1ZTsN Cj4gPiA+ICsJaW50IHJldDsNCj4gPiA+ICANCj4gPiA+ICAJZG9fb3JfZGllKGRybUdldENhcChk aXNwbGF5LT5kcm1fZmQsIERSTV9DQVBfQ1VSU09SX1dJRFRILA0KPiA+ID4gJmN1cnNvcl93aWR0 aCkpOw0KPiA+ID4gIAlpZiAoY3Vyc29yX3dpZHRoID49IG1vZGUtPmhkaXNwbGF5KQ0KPiA+ID4g QEAgLTIyNSwxMjMgKzIzMywxNTYgQEAgc3RhdGljIHZvaWQgc2V0dXBfcGFybXMoaWd0X2Rpc3Bs YXlfdA0KPiA+ID4gKmRpc3BsYXksIGVudW0gcGlwZSBwaXBlLA0KPiA+ID4gIAkJCXBhcm1zW2ld LmZiID0gcHJpbWFyeV9mYjsNCj4gPiA+ICAJCQlwYXJtc1tpXS53aWR0aCA9IG1vZGUtPmhkaXNw bGF5Ow0KPiA+ID4gIAkJCXBhcm1zW2ldLmhlaWdodCA9IG1vZGUtPnZkaXNwbGF5Ow0KPiA+ID4g LQkJCXBhcm1zW2ldLm1hc2sgPSAxIDw8IDA7DQo+ID4gPiArCQkJcGFybXNbaV0ubWFzayA9IEdS T1VQX1RZUEVfUFJJTUFSWTsNCj4gPiA+ICsJCQlpdGVyX21hc2sgfD0gR1JPVVBfVFlQRV9QUklN QVJZOw0KPiA+ID4gIAkJfSBlbHNlIGlmIChwbGFuZS0+dHlwZSA9PSBEUk1fUExBTkVfVFlQRV9D VVJTT1IpIHsNCj4gPiA+ICAJCQlwYXJtc1tpXS5mYiA9IGFyZ2JfZmI7DQo+ID4gPiAgCQkJcGFy bXNbaV0ud2lkdGggPSBjdXJzb3Jfd2lkdGg7DQo+ID4gPiAgCQkJcGFybXNbaV0uaGVpZ2h0ID0g Y3Vyc29yX2hlaWdodDsNCj4gPiA+IC0JCQlwYXJtc1tpXS5tYXNrID0gMSA8PCAxOw0KPiA+ID4g KwkJCXBhcm1zW2ldLm1hc2sgPSBHUk9VUF9UWVBFX0NVUlNPUjsNCj4gPiA+ICsJCQlpdGVyX21h c2sgfD0gR1JPVVBfVFlQRV9DVVJTT1I7DQo+ID4gPiAgCQl9IGVsc2Ugew0KPiA+ID4gIAkJCXBh cm1zW2ldLmZiID0gc3ByaXRlX2ZiOw0KPiA+ID4gLQkJCXBhcm1zW2ldLm1hc2sgPSAxIDw8IDI7 DQo+ID4gPiAtDQo+ID4gPiAtCQkJaXRlcl9tYXNrIHw9IDEgPDwgMjsNCj4gPiA+IC0NCj4gPiA+ IC0JCQlvdmVybGF5c1tuX292ZXJsYXlzKytdID0gaTsNCj4gPiA+ICsJCQlwYXJtc1tpXS5tYXNr ID0gR1JPVVBfVFlQRV9PVkVSTEFZOw0KPiA+ID4gKwkJCWl0ZXJfbWFzayB8PSBHUk9VUF9UWVBF X09WRVJMQVk7DQo+ID4gPiArCQkJbl9vdmVybGF5cysrOw0KPiA+ID4gKwkJCWlmIChhbHBoYSkN Cj4gPiA+ICsJCQkJYWxwaGEgPSBpZ3RfcGxhbmVfaGFzX2Zvcm1hdF9tb2QocGxhbmUsDQo+ID4g PiArCQkJCQkJCQkgRFJNX0ZPDQo+ID4gPiBSTUFUX0FSR0I4ODg4LA0KPiA+ID4gKwkJCQkJCQkJ IExPQ0FMXw0KPiA+ID4gRFJNX0ZPUk1BVF9NT0RfTk9ORSk7DQo+ID4gPiAgCQl9DQo+ID4gPiAg CX0NCj4gPiA+ICANCj4gPiA+IC0JaWYgKG5fb3ZlcmxheXMgPj0gMikgew0KPiA+ID4gLQkJdWlu dDMyX3QgaTsNCj4gPiA+ICsJcHJldl93ID0gc3ByaXRlX3dpZHRoID0gY3Vyc29yX3dpZHRoOw0K PiA+ID4gKwlwcmV2X2ggPSBzcHJpdGVfaGVpZ2h0ID0gY3Vyc29yX2hlaWdodDsNCj4gPiA+ICsN Cj4gPiA+ICsJaWd0X2NyZWF0ZV9mYihkaXNwbGF5LT5kcm1fZmQsIGN1cnNvcl93aWR0aCwgY3Vy c29yX2hlaWdodCwNCj4gPiA+ICsJCSAgICAgIERSTV9GT1JNQVRfQVJHQjg4ODgsIExPQ0FMX0RS TV9GT1JNQVRfTU9EX05PTkUsDQo+ID4gPiBhcmdiX2ZiKTsNCj4gPiA+ICsNCj4gPiA+ICsJaWd0 X2NyZWF0ZV9mYihkaXNwbGF5LT5kcm1fZmQsIHNwcml0ZV93aWR0aCwgc3ByaXRlX2hlaWdodCwN Cj4gPiA+ICsJCSAgICAgIGFscGhhID8gRFJNX0ZPUk1BVF9BUkdCODg4OCA6DQo+ID4gPiBEUk1f Rk9STUFUX1hSR0I4ODg4LA0KPiA+ID4gKwkJICAgICAgTE9DQUxfRFJNX0ZPUk1BVF9NT0RfTk9O RSwgc3ByaXRlX2ZiKTsNCj4gPiA+ICsNCj4gPiA+ICsJbWF4X292ZXJsYXlzID0gbl9vdmVybGF5 czsNCj4gPiA+ICtyZXRyeV9idzoNCj4gPiA+ICsJLyogTGltaXQgdGhlIG51bWJlciBvZiBwbGFu ZXMgKi8NCj4gPiA+ICsJd2hpbGUgKG1heF9vdmVybGF5cyA8IG5fb3ZlcmxheXMpIHsNCj4gPiA+ ICsJCWludCBpID0gaGFyc19wZXRydXNrYV9mNTRfMV9yYW5kb21fdW5zYWZlX21heChkaXNwbGF5 LQ0KPiA+ID4gPiBwaXBlc1twaXBlXS5uX3BsYW5lcyk7DQo+ID4gPiANCj4gPiA+ICANCj4gPiA+ ICAJCS8qDQo+ID4gPiAtCQkgKiBDcmVhdGUgMiBncm91cHMgZm9yIG92ZXJsYXlzLCBtYWtlIHN1 cmUgMSBwbGFuZSBpcw0KPiA+ID4gcHV0DQo+ID4gPiAtCQkgKiBpbiBlYWNoIHRoZW4gc3ByZWFk IHRoZSByZXN0IG91dC4NCj4gPiA+ICsJCSAqIEFsd2F5cyBrZWVwIHByaW1hcnkgYW5kIGN1cnNv ciBhbmQgZGlzY2FyZCBhbHJlYWR5DQo+ID4gPiArCQkgKiByZW1vdmVkIHBsYW5lcw0KPiA+ID4g IAkJICovDQo+ID4gPiAtCQlpdGVyX21hc2sgfD0gMSA8PCAzOw0KPiA+ID4gLQkJcGFybXNbb3Zl cmxheXNbbl9vdmVybGF5cyAtIDFdXS5tYXNrID0gMSA8PCAzOw0KPiA+ID4gKwkJaWYgKHBhcm1z W2ldLm1hc2sgIT0gR1JPVVBfVFlQRV9PVkVSTEFZKQ0KPiA+ID4gKwkJCWNvbnRpbnVlOw0KPiA+ ID4gIA0KPiA+ID4gLQkJZm9yIChpID0gMTsgaSA8IG5fb3ZlcmxheXMgLSAxOyBpKyspIHsNCj4g PiA+IC0JCQlpbnQgdmFsID0NCj4gPiA+IGhhcnNfcGV0cnVza2FfZjU0XzFfcmFuZG9tX3Vuc2Fm ZV9tYXgoMik7DQo+ID4gPiArCQlwYXJtc1tpXS5tYXNrID0gR1JPVVBfVFlQRV9OT05FOw0KPiA+ ID4gKwkJbl9vdmVybGF5cy0tOw0KPiA+ID4gKwl9DQo+ID4gPiAgDQo+ID4gPiAtCQkJcGFybXNb b3ZlcmxheXNbaV1dLm1hc2sgPSAxIDw8ICgyICsgdmFsKTsNCj4gPiA+IC0JCX0NCj4gPiA+ICsJ LyoNCj4gPiA+ICsJICogQ2hlY2sgaWYgdGhlcmUgaXMgZW5vdWdoIGJhbmR3aWR0aCBmb3IgdGhl IGN1cnJlbnQgbnVtYmVyIG9mDQo+ID4gPiBwbGFuZXMuDQo+ID4gPiArCSAqIEFzIHRoZSBwbGFu ZSBzaXplIGFuZCBwb3NpdGlvbiBpcyBub3QgdGFrZW4gaW50byBhY2NvdW50IHdlDQo+ID4gPiBj YW4gZG8NCj4gPiA+ICsJICogdGhpcyBlYXJsaWVyLg0KPiA+ID4gKwkgKi8NCj4gPiA+ICsJc2V0 X3Nwcml0ZV93aChkaXNwbGF5LCBwaXBlLCBwYXJtcywgc3ByaXRlX2ZiLCBhbHBoYSwNCj4gPiA+ IHNwcml0ZV93aWR0aCwNCj4gPiA+ICsJCSAgICAgIHNwcml0ZV9oZWlnaHQpOw0KPiA+ID4gKwl3 bV9zZXR1cF9wbGFuZShkaXNwbGF5LCBwaXBlLCBpdGVyX21hc2ssIHBhcm1zLCBmYWxzZSk7DQo+ ID4gPiArDQo+ID4gPiArCS8qIEl0IHNob3VsZCBiZSBhYmxlIHRvIGhhbmRsZSBhdCBsZWFzdCBw cmltYXJ5IGFuZCBjdXJzb3IgKi8NCj4gPiA+ICsJaWYgKCFtYXhfb3ZlcmxheXMpIHsNCj4gPiA+ ICsJCWl0ZXJfbWFzayAmPSB+R1JPVVBfVFlQRV9PVkVSTEFZOw0KPiA+ID4gKwkJKml0ZXJfbWF4 ID0gaXRlcl9tYXNrICsgMTsNCj4gPiA+ICsJCXJldHVybjsNCj4gPiA+ICAJfQ0KPiA+ID4gIA0K PiA+ID4gLQlpZ3RfY3JlYXRlX2ZiKGRpc3BsYXktPmRybV9mZCwgY3Vyc29yX3dpZHRoLCBjdXJz b3JfaGVpZ2h0LA0KPiA+ID4gLQkJICAgICAgRFJNX0ZPUk1BVF9BUkdCODg4OCwgTE9DQUxfRFJN X0ZPUk1BVF9NT0RfTk9ORSwNCj4gPiA+IGFyZ2JfZmIpOw0KPiA+ID4gKwlyZXQgPSBpZ3RfZGlz cGxheV90cnlfY29tbWl0X2F0b21pYyhkaXNwbGF5LA0KPiA+ID4gRFJNX01PREVfQVRPTUlDX1RF U1RfT05MWSB8DQo+ID4gPiArCQkJCQkgICAgRFJNX01PREVfQVRPTUlDX0FMTE9XX01PREVTDQo+ ID4gPiBFVCwNCj4gPiA+ICsJCQkJCSAgICBOVUxMKTsNCj4gPiA+ICsJLyoNCj4gPiA+ICsJICog Q291bGQgbWVhbiBvdGhlciBlcnJvcnMgYnV0IHRoaXMgaXMgYWxzbyB0aGUgZXJyb3IgcmV0dXJu ZWQNCj4gPiA+IHdoZW4NCj4gPiA+ICsJICogdGhlcmUgaXMgbm90IGVub3VnaCBiYW5kd2lkdGgg Zm9yIGFsbCB0aGUgcGxhbmVzDQo+ID4gPiArCSAqLw0KPiA+ID4gKwlpZiAocmV0ID09IC1FSU5W QUwpIHsNCj4gPiA+ICsJCW1heF9vdmVybGF5cy0tOw0KPiA+ID4gKwkJZ290byByZXRyeV9idzsN Cj4gPiA+ICsJfQ0KPiA+ID4gIA0KPiA+ID4gLQlpZ3RfY3JlYXRlX2ZiKGRpc3BsYXktPmRybV9m ZCwgY3Vyc29yX3dpZHRoLCBjdXJzb3JfaGVpZ2h0LA0KPiA+ID4gLQkJICAgICAgRFJNX0ZPUk1B VF9BUkdCODg4OCwgTE9DQUxfRFJNX0ZPUk1BVF9NT0RfTk9ORSwNCj4gPiA+IHNwcml0ZV9mYik7 DQo+ID4gPiArCWlndF9hc3NlcnRfZighcmV0LCAiRXJyb3IgJWkgbm90IGV4cGVjdGVkIGJ5IHRy eV9jb21taXQoKVxuIiwNCj4gPiA+IHJldCk7DQo+ID4gPiAgDQo+ID4gPiAtCSppdGVyX21heCA9 IGl0ZXJfbWFzayArIDE7DQo+ID4gPiAtCWlmICghbl9vdmVybGF5cykNCj4gPiA+IC0JCXJldHVy bjsNCj4gPiA+ICsJLyogU28gaXQgaGF2ZSBlbm91Z2ggYmFuZHdpZHRoIGZvciBuX292ZXJsYXlz IHBsYW5lcyAqLw0KPiA+ID4gIA0KPiA+ID4gIAkvKg0KPiA+ID4gLQkgKiBQcmUgZ2VuOSBub3Qg YWxsIHNpemVzIGFyZSBzdXBwb3J0ZWQsIGZpbmQgdGhlIGJpZ2dlc3QNCj4gPiA+IHBvc3NpYmxl DQo+ID4gPiAtCSAqIHNpemUgdGhhdCBjYW4gYmUgZW5hYmxlZCBvbiBhbGwgc3ByaXRlIHBsYW5l cy4NCj4gPiA+ICsJICogQ3JlYXRlIDIgZ3JvdXBzIGZvciBvdmVybGF5cywgbWFrZSBzdXJlIDEg cGxhbmUgaXMgcHV0IGluDQo+ID4gPiBlYWNoIHRoZW4NCj4gPiA+ICsJICogc3ByZWFkIHRoZSBy ZXN0IG91dC4NCj4gPiA+ICAJICovDQo+ID4gPiAtcmV0cnk6DQo+ID4gPiAtCXByZXZfdyA9IHNw cml0ZV93aWR0aCA9IGN1cnNvcl93aWR0aDsNCj4gPiA+IC0JcHJldl9oID0gc3ByaXRlX2hlaWdo dCA9IGN1cnNvcl9oZWlnaHQ7DQo+ID4gPiArCWl0ZXJfbWFzayAmPSB+R1JPVVBfVFlQRV9PVkVS TEFZOw0KPiA+ID4gKwlmb3JfZWFjaF9wbGFuZV9vbl9waXBlKGRpc3BsYXksIHBpcGUsIHBsYW5l KSB7DQo+ID4gPiArCQlpbnQgaSA9IHBsYW5lLT5pbmRleDsNCj4gPiA+ICANCj4gPiA+IC0JbWF4 X3Nwcml0ZV93aWR0aCA9IChzcHJpdGVfd2lkdGggPT0gbW9kZS0+aGRpc3BsYXkpOw0KPiA+ID4g LQltYXhfc3ByaXRlX2hlaWdodCA9IChzcHJpdGVfaGVpZ2h0ID09IG1vZGUtPnZkaXNwbGF5KTsN Cj4gPiA+ICsJCWlmIChwYXJtc1tpXS5tYXNrICE9IEdST1VQX1RZUEVfT1ZFUkxBWSkNCj4gPiA+ ICsJCQljb250aW51ZTsNCj4gPiA+ICANCj4gPiA+IC0Jd2hpbGUgKDEpIHsNCj4gPiA+IC0JCWlu dCByZXQ7DQo+ID4gPiArCQkvKiBGaXJzdCBvdmVybGF5IHBsYW5lIHdpbGwgYmUgb3ZlcmxheSBn cm91cCAxICovDQo+ID4gPiArCQlpZiAoIShpdGVyX21hc2sgJiBHUk9VUF9UWVBFX09WRVJMQVkp KSB7DQo+ID4gPiArCQkJaXRlcl9tYXNrIHw9IEdST1VQX1RZUEVfT1ZFUkxBWTsNCj4gPiA+ICsJ CQljb250aW51ZTsNCj4gPiA+ICsJCX0NCj4gPiA+ICANCj4gPiA+IC0JCXNldF9zcHJpdGVfd2go ZGlzcGxheSwgcGlwZSwgcGFybXMsIHNwcml0ZV9mYiwNCj4gPiA+IC0JCQkgICAgICBhbHBoYSwg c3ByaXRlX3dpZHRoLCBzcHJpdGVfaGVpZ2h0KTsNCj4gPiA+ICsJCS8qIFNlY29uZCBvdmVybGF5 IHBsYW5lIHdpbGwgYmUgb3ZlcmxheSBncm91cCAxICovDQo+ID4gPiArCQlpZiAoIShpdGVyX21h c2sgJiBHUk9VUF9UWVBFX09WRVJMQVkyKSkgew0KPiA+ID4gKwkJCWl0ZXJfbWFzayB8PSBHUk9V UF9UWVBFX09WRVJMQVkyOw0KPiA+ID4gKwkJCXBhcm1zW2ldLm1hc2sgPSBHUk9VUF9UWVBFX09W RVJMQVkyOw0KPiA+ID4gKwkJCWNvbnRpbnVlOw0KPiA+ID4gKwkJfQ0KPiA+ID4gIA0KPiA+ID4g LQkJd21fc2V0dXBfcGxhbmUoZGlzcGxheSwgcGlwZSwgKDEgPDwgbl9wbGFuZXMpIC0gMSwNCj4g PiA+IHBhcm1zLCBmYWxzZSk7DQo+ID4gPiAtCQlyZXQgPSBpZ3RfZGlzcGxheV90cnlfY29tbWl0 X2F0b21pYyhkaXNwbGF5LA0KPiA+ID4gRFJNX01PREVfQVRPTUlDX1RFU1RfT05MWSB8IERSTV9N T0RFX0FUT01JQ19BTExPV19NT0RFU0VULCBOVUxMKTsNCj4gPiA+IC0JCWlndF9hc3NlcnQoIWlz X2F0b21pY19jaGVja19mYWlsdXJlX2Vycm5vKHJldCkpOw0KPiA+ID4gKwkJLyogU29ydCB0aGUg Z3JvdXAgb2YgdGhlIHJlc3Qgb2Ygb3ZlcmxheSBwbGFuZXMgKi8NCj4gPiA+ICsJCWlmIChoYXJz X3BldHJ1c2thX2Y1NF8xX3JhbmRvbV91bnNhZmVfbWF4KDIpKQ0KPiA+ID4gKwkJCXBhcm1zW2ld Lm1hc2sgPSBHUk9VUF9UWVBFX09WRVJMQVkyOw0KPiA+ID4gKwl9DQo+ID4gPiAgDQo+ID4gPiAt CQlpZiAoaXNfYXRvbWljX2NoZWNrX3BsYW5lX3NpemVfZXJybm8ocmV0KSkgew0KPiA+ID4gLQkJ CWlmIChjdXJzb3Jfd2lkdGggPT0gc3ByaXRlX3dpZHRoICYmDQo+ID4gPiAtCQkJICAgIGN1cnNv cl9oZWlnaHQgPT0gc3ByaXRlX2hlaWdodCkgew0KPiA+ID4gLQkJCQlpZ3RfYXNzZXJ0X2YoYWxw aGEsDQo+ID4gPiAtCQkJCQkgICAgICAiQ2Fubm90IGNvbmZpZ3VyZSB0aGUNCj4gPiA+IHRlc3Qg d2l0aCBhbGwgc3ByaXRlIHBsYW5lcyBlbmFibGVkXG4iKTsNCj4gPiA+IC0NCj4gPiA+IC0JCQkJ LyogcmV0cnkgb25jZSB3aXRoIFhSR0IgZm9ybWF0LiAqLw0KPiA+ID4gLQkJCQlhbHBoYSA9IGZh bHNlOw0KPiA+ID4gLQkJCQlnb3RvIHJldHJ5Ow0KPiA+ID4gLQkJCX0NCj4gPiA+ICsJKml0ZXJf bWF4ID0gaXRlcl9tYXNrICsgMTsNCj4gPiA+ICANCj4gPiA+ICsJLyoNCj4gPiA+ICsJICogUHJl IGdlbjkgbm90IGFsbCBzaXplcyBhcmUgc3VwcG9ydGVkLCBmaW5kIHRoZSBiaWdnZXN0DQo+ID4g PiBwb3NzaWJsZQ0KPiA+ID4gKwkgKiBzaXplIHRoYXQgY2FuIGJlIGVuYWJsZWQgb24gYWxsIHNw cml0ZSBwbGFuZXMuDQo+ID4gPiArCSAqLw0KPiA+ID4gKwl3aGlsZSAoMSkgew0KPiA+ID4gKwkJ LyogU2l6ZSBsaW1pdCByZWFjaGVkICovDQo+ID4gPiArCQlpZiAoaXNfYXRvbWljX2NoZWNrX3Bs YW5lX3NpemVfZXJybm8ocmV0KSkgew0KPiA+ID4gIAkJCXNwcml0ZV93aWR0aCA9IHByZXZfdzsN Cj4gPiA+ICAJCQlzcHJpdGVfaGVpZ2h0ID0gcHJldl9oOw0KPiA+ID4gLQ0KPiA+ID4gLQkJCWlm IChtYXhfc3ByaXRlX3dpZHRoICYmIG1heF9zcHJpdGVfaGVpZ2h0KSB7DQo+ID4gPiAtCQkJCXNl dF9zcHJpdGVfd2goZGlzcGxheSwgcGlwZSwgcGFybXMsDQo+ID4gPiBzcHJpdGVfZmIsDQo+ID4g PiAtCQkJCQkgICAgICBhbHBoYSwgc3ByaXRlX3dpZHRoLA0KPiA+ID4gc3ByaXRlX2hlaWdodCk7 DQo+ID4gPiAtCQkJCWJyZWFrOw0KPiA+ID4gLQkJCX0NCj4gPiA+IC0NCj4gPiA+IC0JCQlpZiAo IW1heF9zcHJpdGVfd2lkdGgpDQo+ID4gPiAtCQkJCW1heF9zcHJpdGVfd2lkdGggPSB0cnVlOw0K PiA+ID4gLQkJCWVsc2UNCj4gPiA+IC0JCQkJbWF4X3Nwcml0ZV9oZWlnaHQgPSB0cnVlOw0KPiA+ ID4gLQkJfSBlbHNlIHsNCj4gPiA+IC0JCQlwcmV2X3cgPSBzcHJpdGVfd2lkdGg7DQo+ID4gPiAt CQkJcHJldl9oID0gc3ByaXRlX2hlaWdodDsNCj4gPiA+ICsJCQlicmVhazsNCj4gPiA+ICAJCX0N Cj4gPiA+ICANCj4gPiA+IC0JCWlmICghbWF4X3Nwcml0ZV93aWR0aCkgew0KPiA+ID4gLQkJCXNw cml0ZV93aWR0aCAqPSAyOw0KPiA+ID4gKwkJLyogQ29tbWl0IGlzIHZhbGlkIGFuZCBpdCByZWFj aGVkIG1heCBzaXplLCB1c2UgdGhpcw0KPiA+ID4gc2l6ZSAqLw0KPiA+ID4gKwkJaWYgKHNwcml0 ZV93aWR0aCA9PSBtb2RlLT5oZGlzcGxheSB8fA0KPiA+ID4gKwkJICAgIHNwcml0ZV9oZWlnaHQg PT0gbW9kZS0+dmRpc3BsYXkpDQo+ID4gPiArCQkJYnJlYWs7DQo+ID4gPiAgDQo+ID4gPiAtCQkJ aWYgKHNwcml0ZV93aWR0aCA+PSBtb2RlLT5oZGlzcGxheSkgew0KPiA+ID4gLQkJCQltYXhfc3By aXRlX3dpZHRoID0gdHJ1ZTsNCj4gPiA+ICsJCXByZXZfdyA9IHNwcml0ZV93aWR0aDsNCj4gPiA+ ICsJCXByZXZfaCA9IHNwcml0ZV9oZWlnaHQ7DQo+ID4gPiAgDQo+ID4gPiAtCQkJCXNwcml0ZV93 aWR0aCA9IG1vZGUtPmhkaXNwbGF5Ow0KPiA+ID4gLQkJCX0NCj4gPiA+IC0JCX0gZWxzZSBpZiAo IW1heF9zcHJpdGVfaGVpZ2h0KSB7DQo+ID4gPiAtCQkJc3ByaXRlX2hlaWdodCAqPSAyOw0KPiA+ ID4gKwkJc3ByaXRlX3dpZHRoICo9IDI7DQo+ID4gPiArCQlpZiAoc3ByaXRlX3dpZHRoID49IG1v ZGUtPmhkaXNwbGF5KQ0KPiA+ID4gKwkJCXNwcml0ZV93aWR0aCA9IG1vZGUtPmhkaXNwbGF5Ow0K PiA+ID4gIA0KPiA+ID4gLQkJCWlmIChzcHJpdGVfaGVpZ2h0ID49IG1vZGUtPnZkaXNwbGF5KSB7 DQo+ID4gPiAtCQkJCW1heF9zcHJpdGVfaGVpZ2h0ID0gdHJ1ZTsNCj4gPiA+ICsJCXNwcml0ZV9o ZWlnaHQgKj0gMjsNCj4gPiA+ICsJCWlmIChzcHJpdGVfaGVpZ2h0ID49IG1vZGUtPnZkaXNwbGF5 KQ0KPiA+ID4gKwkJCXNwcml0ZV9oZWlnaHQgPSBtb2RlLT52ZGlzcGxheTsNCj4gPiA+ICANCj4g PiA+IC0JCQkJc3ByaXRlX2hlaWdodCA9IG1vZGUtPnZkaXNwbGF5Ow0KPiA+ID4gLQkJCX0NCj4g PiA+IC0JCX0gZWxzZQ0KPiA+ID4gLQkJCS8qIE1heCBzaXplZCBzcHJpdGVzIGZvciBhbGwhICov DQo+ID4gPiAtCQkJYnJlYWs7DQo+ID4gPiArCQlzZXRfc3ByaXRlX3doKGRpc3BsYXksIHBpcGUs IHBhcm1zLCBzcHJpdGVfZmIsDQo+ID4gPiBzcHJpdGVfd2lkdGgsDQo+ID4gPiArCQkJICAgICAg c3ByaXRlX2hlaWdodCwgYWxwaGEpOw0KPiA+ID4gKwkJd21fc2V0dXBfcGxhbmUoZGlzcGxheSwg cGlwZSwgaXRlcl9tYXNrLCBwYXJtcywgZmFsc2UpOw0KPiA+ID4gKwkJcmV0ID0gaWd0X2Rpc3Bs YXlfdHJ5X2NvbW1pdF9hdG9taWMoZGlzcGxheSwNCj4gPiA+ICsJCQkJCQkgICAgRFJNX01PREVf QVRPTUlDX1RFUw0KPiA+ID4gVF9PTkxZIHwNCj4gPiA+ICsJCQkJCQkgICAgRFJNX01PREVfQVRP TUlDX0FMTA0KPiA+ID4gT1dfTU9ERVNFVCwNCj4gPiA+ICsJCQkJCQkgICAgTlVMTCk7DQo+ID4g PiAgCX0NCj4gPiA+ICANCj4gPiA+IC0JaWd0X2luZm8oIlJ1bm5pbmcgdGVzdCBvbiBwaXBlICVz IHdpdGggcmVzb2x1dGlvbiAlZHglZCBhbmQNCj4gPiA+IHNwcml0ZSBzaXplICVkeCVkIGFscGhh ICVpXG4iLA0KPiA+ID4gKwlpZ3RfaW5mbygiUnVubmluZyB0ZXN0IG9uIHBpcGUgJXMgd2l0aCBy ZXNvbHV0aW9uICVkeCVkLCBzcHJpdGUNCj4gPiA+IHNpemUgJWR4JWQsIGFscGhhICVpIGFuZCAl aSBvdmVybGF5IHBsYW5lc1xuIiwNCj4gPiA+ICAJCSBrbXN0ZXN0X3BpcGVfbmFtZShwaXBlKSwg bW9kZS0+aGRpc3BsYXksIG1vZGUtDQo+ID4gPiA+IHZkaXNwbGF5LA0KPiA+ID4gDQo+ID4gPiAt CQkgc3ByaXRlX3dpZHRoLCBzcHJpdGVfaGVpZ2h0LCBhbHBoYSk7DQo+ID4gPiArCQkgc3ByaXRl X3dpZHRoLCBzcHJpdGVfaGVpZ2h0LCBhbHBoYSwgbl9vdmVybGF5cyk7DQo+ID4gPiAgfQ0KPiA+ ID4gIA0KPiA+ID4gIHN0YXRpYyB2b2lkIHByZXBhcmVfZmVuY2luZyhpZ3RfZGlzcGxheV90ICpk aXNwbGF5LCBlbnVtIHBpcGUNCj4gPiA+IHBpcGUpDQo+ID4gPiBAQCAtNTE5LDggKzU2MCwxMCBA QCBydW5fdHJhbnNpdGlvbl90ZXN0KGlndF9kaXNwbGF5X3QgKmRpc3BsYXksDQo+ID4gPiBlbnVt DQo+ID4gPiBwaXBlIHBpcGUsIGlndF9vdXRwdXRfdCAqb3V0cHV0DQo+ID4gPiAgCQl9DQo+ID4g PiAgDQo+ID4gPiAgCQkvKiBmb3JjZSBwbGFuZXMgdG8gYmUgcGFydCBvZiBjb21taXQgKi8NCj4g PiA+IC0JCWZvcl9lYWNoX3BsYW5lX29uX3BpcGUoZGlzcGxheSwgcGlwZSwgcGxhbmUpDQo+ID4g PiAtCQkJaWd0X3BsYW5lX3NldF9wb3NpdGlvbihwbGFuZSwgMCwgMCk7DQo+ID4gPiArCQlmb3Jf ZWFjaF9wbGFuZV9vbl9waXBlKGRpc3BsYXksIHBpcGUsIHBsYW5lKSB7DQo+ID4gPiArCQkJaWYg KHBhcm1zW3BsYW5lLT5pbmRleF0ubWFzayAhPQ0KPiA+ID4gR1JPVVBfVFlQRV9OT05FKQ0KPiA+ ID4gKwkJCQlpZ3RfcGxhbmVfc2V0X3Bvc2l0aW9uKHBsYW5lLCAwLCAwKTsNCj4gPiA+ICsJCX0N Cj4gPiA+ICANCj4gPiA+ICAJCWlndF9kaXNwbGF5X2NvbW1pdDIoZGlzcGxheSwgQ09NTUlUX0FU T01JQyk7DQo+ID4gPiAgDQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwppZ3QtZGV2IG1haWxpbmcgbGlzdAppZ3QtZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9y ZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lndC1kZXY=