From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTPS id 9328B6F882 for ; Fri, 21 May 2021 14:17:57 +0000 (UTC) From: =?UTF-8?q?Zbigniew=20Kempczy=C5=84ski?= Date: Fri, 21 May 2021 16:17:38 +0200 Message-Id: <20210521141738.57044-1-zbigniew.kempczynski@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t] benchmarks/gem_userptr_benchmark: Dead code removal 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 Cc: Petri Latvala , Tvrtko Ursulin List-ID: SXQgc2VlbXMgbm9ib2R5IGNhcmVzIG9mIHRoaXMgYmVuY2htYXJrIGEgbG9uZyB0aW1lIC0gaXQg aXMgc3RpbGwgaGF2aW5nCmxpYmRybSBkZXBlbmRlbmN5IHdoYXQgaXMgbm90IHRydWUgbm9yIGlu aXRpYWxpemluZyBjb2RlIGlzIG5vdCB3aXRoaW4KaWd0X2ZpeHR1cmUuIEFzIGl0IGlzIG5vdCBz dXBwb3NlZCB0byB3b3JrIGxldHMgcmlkIG9mZiBpdCBmcm9tIElHVC4KClNpZ25lZC1vZmYtYnk6 IFpiaWduaWV3IEtlbXBjennFhHNraSA8emJpZ25pZXcua2VtcGN6eW5za2lAaW50ZWwuY29tPgpD YzogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KQ2M6IFBldHJpIExh dHZhbGEgPHBldHJpLmxhdHZhbGFAaW50ZWwuY29tPgotLS0KIGJlbmNobWFya3MvZ2VtX3VzZXJw dHJfYmVuY2htYXJrLmMgfCA1MDYgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIGJlbmNo bWFya3MvbWVzb24uYnVpbGQgICAgICAgICAgICAgfCAgIDEgLQogMiBmaWxlcyBjaGFuZ2VkLCA1 MDcgZGVsZXRpb25zKC0pCiBkZWxldGUgbW9kZSAxMDA2NDQgYmVuY2htYXJrcy9nZW1fdXNlcnB0 cl9iZW5jaG1hcmsuYwoKZGlmZiAtLWdpdCBhL2JlbmNobWFya3MvZ2VtX3VzZXJwdHJfYmVuY2ht YXJrLmMgYi9iZW5jaG1hcmtzL2dlbV91c2VycHRyX2JlbmNobWFyay5jCmRlbGV0ZWQgZmlsZSBt b2RlIDEwMDY0NAppbmRleCBkN2E0OTUyMDkuLjAwMDAwMDAwMAotLS0gYS9iZW5jaG1hcmtzL2dl bV91c2VycHRyX2JlbmNobWFyay5jCisrKyAvZGV2L251bGwKQEAgLTEsNTA2ICswLDAgQEAKLS8q Ci0gKiBDb3B5cmlnaHQgwqkgMjAxNCBJbnRlbCBDb3Jwb3JhdGlvbgotICoKLSAqIFBlcm1pc3Np b24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFp bmluZyBhCi0gKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRh dGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAotICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUg d2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgotICogdGhl IHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUs IHN1YmxpY2Vuc2UsCi0gKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQg dG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKLSAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0 byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Ci0gKgotICogVGhl IGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1 ZGluZyB0aGUgbmV4dAotICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29w aWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQotICogU29mdHdhcmUuCi0gKgotICog VEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5Z IEtJTkQsIEVYUFJFU1MgT1IKLSAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQg VE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAotICogRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxM Ci0gKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBD TEFJTSwgREFNQUdFUyBPUiBPVEhFUgotICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElP TiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKLSAqIEZST00sIE9VVCBP RiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIg REVBTElOR1MKLSAqIElOIFRIRSBTT0ZUV0FSRS4KLSAqCi0gKiBBdXRob3JzOgotICogICAgVHZy dGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KLSAqCi0gKi8KLQotLyoqIEBm aWxlIGdlbV91c2VycHRyX2JlbmNobWFyay5jCi0gKgotICogQmVuY2htYXJrIHRoZSB1c2VycHRy IGNvZGUgYW5kIGltcGFjdCBvZiBoYXZpbmcgdXNlcnB0ciBzdXJmYWNlcwotICogaW4gcHJvY2Vz cyBhZGRyZXNzIHNwYWNlIG9uIHNvbWUgbm9ybWFsIG9wZXJhdGlvbnMuCi0gKgotICovCi0KLSNp bmNsdWRlIDxzdGRsaWIuaD4KLSNpbmNsdWRlIDxzdGRpby5oPgotI2luY2x1ZGUgPHN0cmluZy5o PgotI2luY2x1ZGUgPGZjbnRsLmg+Ci0jaW5jbHVkZSA8aW50dHlwZXMuaD4KLSNpbmNsdWRlIDxl cnJuby5oPgotI2luY2x1ZGUgPGFzc2VydC5oPgotI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Ci0jaW5j bHVkZSA8c3lzL3RpbWUuaD4KLSNpbmNsdWRlIDxzeXMvbW1hbi5oPgotI2luY2x1ZGUgPHNpZ25h bC5oPgotCi0jaW5jbHVkZSAiZHJtLmgiCi0jaW5jbHVkZSAiaTkxNV9kcm0uaCIKLQotI2luY2x1 ZGUgImRybXRlc3QuaCIKLSNpbmNsdWRlICJpbnRlbF9iYXRjaGJ1ZmZlci5oIgotI2luY2x1ZGUg ImludGVsX2NoaXBzZXQuaCIKLSNpbmNsdWRlICJpb2N0bF93cmFwcGVycy5oIgotI2luY2x1ZGUg ImlndF9hdXguaCIKLQotI2lmbmRlZiBQQUdFX1NJWkUKLSAgI2RlZmluZSBQQUdFX1NJWkUgNDA5 NgotI2VuZGlmCi0KLXN0YXRpYyB1aW50MzJfdCB1c2VycHRyX2ZsYWdzID0gSTkxNV9VU0VSUFRS X1VOU1lOQ0hST05JWkVEOwotCi0jZGVmaW5lIEJPX1NJWkUgKDY1NTM2KQotCi1zdGF0aWMgdm9p ZCBnZW1fdXNlcnB0cl90ZXN0X3Vuc3luY2hyb25pemVkKHZvaWQpCi17Ci0JdXNlcnB0cl9mbGFn cyA9IEk5MTVfVVNFUlBUUl9VTlNZTkNIUk9OSVpFRDsKLX0KLQotc3RhdGljIHZvaWQgZ2VtX3Vz ZXJwdHJfdGVzdF9zeW5jaHJvbml6ZWQodm9pZCkKLXsKLQl1c2VycHRyX2ZsYWdzID0gMDsKLX0K LQotc3RhdGljIHZvaWQgKipoYW5kbGVfcHRyX21hcDsKLXN0YXRpYyB1bnNpZ25lZCBpbnQgbnVt X2hhbmRsZV9wdHJfbWFwOwotCi1zdGF0aWMgdm9pZCBhZGRfaGFuZGxlX3B0cih1aW50MzJfdCBo YW5kbGUsIHZvaWQgKnB0cikKLXsKLQlpZiAoaGFuZGxlID49IG51bV9oYW5kbGVfcHRyX21hcCkg ewotCQloYW5kbGVfcHRyX21hcCA9IHJlYWxsb2MoaGFuZGxlX3B0cl9tYXAsCi0JCQkJCSAoaGFu ZGxlICsgMTAwMCkgKiBzaXplb2Yodm9pZCopKTsKLQkJbnVtX2hhbmRsZV9wdHJfbWFwID0gaGFu ZGxlICsgMTAwMDsKLQl9Ci0KLQloYW5kbGVfcHRyX21hcFtoYW5kbGVdID0gcHRyOwotfQotCi1z dGF0aWMgdm9pZCAqZ2V0X2hhbmRsZV9wdHIodWludDMyX3QgaGFuZGxlKQotewotCXJldHVybiBo YW5kbGVfcHRyX21hcFtoYW5kbGVdOwotfQotCi1zdGF0aWMgdm9pZCBmcmVlX2hhbmRsZV9wdHIo dWludDMyX3QgaGFuZGxlKQotewotCWlndF9hc3NlcnQoaGFuZGxlIDwgbnVtX2hhbmRsZV9wdHJf bWFwKTsKLQlpZ3RfYXNzZXJ0KGhhbmRsZV9wdHJfbWFwW2hhbmRsZV0pOwotCi0JZnJlZShoYW5k bGVfcHRyX21hcFtoYW5kbGVdKTsKLQloYW5kbGVfcHRyX21hcFtoYW5kbGVdID0gTlVMTDsKLX0K LQotc3RhdGljIHVpbnQzMl90IGNyZWF0ZV91c2VycHRyX2JvKGludCBmZCwgaW50IHNpemUpCi17 Ci0Jdm9pZCAqcHRyOwotCXVpbnQzMl90IGhhbmRsZTsKLQlpbnQgcmV0OwotCi0JcmV0ID0gcG9z aXhfbWVtYWxpZ24oJnB0ciwgUEFHRV9TSVpFLCBzaXplKTsKLQlpZ3RfYXNzZXJ0KHJldCA9PSAw KTsKLQotCWdlbV91c2VycHRyKGZkLCAodWludDMyX3QgKilwdHIsIHNpemUsIDAsIHVzZXJwdHJf ZmxhZ3MsICZoYW5kbGUpOwotCWFkZF9oYW5kbGVfcHRyKGhhbmRsZSwgcHRyKTsKLQotCXJldHVy biBoYW5kbGU7Ci19Ci0KLXN0YXRpYyB2b2lkIGZyZWVfdXNlcnB0cl9ibyhpbnQgZmQsIHVpbnQz Ml90IGhhbmRsZSkKLXsKLQlnZW1fY2xvc2UoZmQsIGhhbmRsZSk7Ci0JZnJlZV9oYW5kbGVfcHRy KGhhbmRsZSk7Ci19Ci0KLXN0YXRpYyBpbnQgaGFzX3VzZXJwdHIoaW50IGZkKQotewotCXVpbnQz Ml90IGhhbmRsZSA9IDA7Ci0Jdm9pZCAqcHRyOwotCXVpbnQzMl90IG9sZGZsYWdzOwotCWludCBy ZXQ7Ci0KLQlhc3NlcnQocG9zaXhfbWVtYWxpZ24oJnB0ciwgUEFHRV9TSVpFLCBQQUdFX1NJWkUp ID09IDApOwotCW9sZGZsYWdzID0gdXNlcnB0cl9mbGFnczsKLQlnZW1fdXNlcnB0cl90ZXN0X3Vu c3luY2hyb25pemVkKCk7Ci0JcmV0ID0gX19nZW1fdXNlcnB0cihmZCwgcHRyLCBQQUdFX1NJWkUs IDAsIHVzZXJwdHJfZmxhZ3MsICZoYW5kbGUpOwotCXVzZXJwdHJfZmxhZ3MgPSBvbGRmbGFnczsK LQlpZiAocmV0ICE9IDApIHsKLQkJZnJlZShwdHIpOwotCQlyZXR1cm4gMDsKLQl9Ci0KLQlnZW1f Y2xvc2UoZmQsIGhhbmRsZSk7Ci0JZnJlZShwdHIpOwotCi0JcmV0dXJuIGhhbmRsZSAhPSAwOwot fQotCi1zdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IG5yX2Jvc1tdID0gezAsIDEsIDEwLCAxMDAs IDEwMDAsIDEwMDAwfTsKLXN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgdGVzdF9kdXJhdGlvbl9z ZWMgPSAzOwotCi1zdGF0aWMgdm9sYXRpbGUgdW5zaWduZWQgaW50IHJ1bl90ZXN0OwotCi1zdGF0 aWMgdm9pZCBhbGFybV9oYW5kbGVyKGludCBzaWcpCi17Ci0JYXNzZXJ0KHJ1bl90ZXN0ID09IDEp OwotCXJ1bl90ZXN0ID0gMDsKLX0KLQotc3RhdGljIHZvaWQgc3RhcnRfdGVzdCh1bnNpZ25lZCBp bnQgZHVyYXRpb24pCi17Ci0JcnVuX3Rlc3QgPSAxOwotCWlmIChkdXJhdGlvbiA9PSAwKQotCQlk dXJhdGlvbiA9IHRlc3RfZHVyYXRpb25fc2VjOwotCXNpZ25hbChTSUdBTFJNLCBhbGFybV9oYW5k bGVyKTsKLQlhbGFybShkdXJhdGlvbik7Ci19Ci0KLXN0YXRpYyB2b2lkIGV4Y2hhbmdlX3B0cih2 b2lkICphcnJheSwgdW5zaWduZWQgaSwgdW5zaWduZWQgaikKLXsKLQl2b2lkICoqYXJyLCAqdG1w OwotCWFyciA9ICh2b2lkICoqKWFycmF5OwotCi0JdG1wID0gYXJyW2ldOwotCWFycltpXSA9IGFy cltqXTsKLQlhcnJbal0gPSB0bXA7Ci19Ci0KLXN0YXRpYyB2b2lkIHRlc3RfbWFsbG9jX2ZyZWUo aW50IHJhbmRvbSkKLXsKLQl1bnNpZ25lZCBsb25nIGl0ZXIgPSAwOwotCXVuc2lnbmVkIGludCBp LCB0b3QgPSAxMDAwOwotCXZvaWQgKnB0clt0b3RdOwotCi0Jc3RhcnRfdGVzdCh0ZXN0X2R1cmF0 aW9uX3NlYyk7Ci0KLQl3aGlsZSAocnVuX3Rlc3QpIHsKLQkJZm9yIChpID0gMDsgaSA8IHRvdDsg aSsrKSB7Ci0JCQlwdHJbaV0gPSBtYWxsb2MoMTAwMCk7Ci0JCQlhc3NlcnQocHRyW2ldKTsKLQkJ fQotCQlpZiAocmFuZG9tKQotCQkJaWd0X3Blcm11dGVfYXJyYXkocHRyLCB0b3QsIGV4Y2hhbmdl X3B0cik7Ci0JCWZvciAoaSA9IDA7IGkgPCB0b3Q7IGkrKykKLQkJCWZyZWUocHRyW2ldKTsKLQkJ aXRlcisrOwotCX0KLQotCXByaW50ZigiJThsdSBpdGVyL3NcbiIsIGl0ZXIgLyB0ZXN0X2R1cmF0 aW9uX3NlYyk7Ci19Ci0KLXN0YXRpYyB2b2lkIHRlc3RfbWFsbG9jX3JlYWxsb2NfZnJlZShpbnQg cmFuZG9tKQotewotCXVuc2lnbmVkIGxvbmcgaXRlciA9IDA7Ci0JdW5zaWduZWQgaW50IGksIHRv dCA9IDEwMDA7Ci0Jdm9pZCAqcHRyW3RvdF07Ci0KLQlzdGFydF90ZXN0KHRlc3RfZHVyYXRpb25f c2VjKTsKLQotCXdoaWxlIChydW5fdGVzdCkgewotCQlmb3IgKGkgPSAwOyBpIDwgdG90OyBpKysp IHsKLQkJCXB0cltpXSA9IG1hbGxvYygxMDAwKTsKLQkJCWFzc2VydChwdHJbaV0pOwotCQl9Ci0J CWlmIChyYW5kb20pCi0JCQlpZ3RfcGVybXV0ZV9hcnJheShwdHIsIHRvdCwgZXhjaGFuZ2VfcHRy KTsKLQkJZm9yIChpID0gMDsgaSA8IHRvdDsgaSsrKSB7Ci0JCQlwdHJbaV0gPSByZWFsbG9jKHB0 cltpXSwgMjAwMCk7Ci0JCQlhc3NlcnQocHRyW2ldKTsKLQkJfQotCQlpZiAocmFuZG9tKQotCQkJ aWd0X3Blcm11dGVfYXJyYXkocHRyLCB0b3QsIGV4Y2hhbmdlX3B0cik7Ci0JCWZvciAoaSA9IDA7 IGkgPCB0b3Q7IGkrKykKLQkJCWZyZWUocHRyW2ldKTsKLQkJaXRlcisrOwotCX0KLQotCXByaW50 ZigiJThsdSBpdGVyL3NcbiIsIGl0ZXIgLyB0ZXN0X2R1cmF0aW9uX3NlYyk7Ci19Ci0KLXN0YXRp YyB2b2lkIHRlc3RfbW1hcF91bm1hcChpbnQgcmFuZG9tKQotewotCXVuc2lnbmVkIGxvbmcgaXRl ciA9IDA7Ci0JdW5zaWduZWQgaW50IGksIHRvdCA9IDEwMDA7Ci0Jdm9pZCAqcHRyW3RvdF07Ci0K LQlzdGFydF90ZXN0KHRlc3RfZHVyYXRpb25fc2VjKTsKLQotCXdoaWxlIChydW5fdGVzdCkgewot CQlmb3IgKGkgPSAwOyBpIDwgdG90OyBpKyspIHsKLQkJCXB0cltpXSA9IG1tYXAoTlVMTCwgMTAw MCwgUFJPVF9SRUFEIHwgUFJPVF9XUklURSwKLQkJCQkJTUFQX0FOT05ZTU9VUyB8IE1BUF9QUklW QVRFLCAtMSwgMCk7Ci0JCQlhc3NlcnQocHRyW2ldICE9IE1BUF9GQUlMRUQpOwotCQl9Ci0JCWlm IChyYW5kb20pCi0JCQlpZ3RfcGVybXV0ZV9hcnJheShwdHIsIHRvdCwgZXhjaGFuZ2VfcHRyKTsK LQkJZm9yIChpID0gMDsgaSA8IHRvdDsgaSsrKQotCQkJbXVubWFwKHB0cltpXSwgMTAwMCk7Ci0J CWl0ZXIrKzsKLQl9Ci0KLQlwcmludGYoIiU4bHUgaXRlci9zXG4iLCBpdGVyIC8gdGVzdF9kdXJh dGlvbl9zZWMpOwotfQotCi1zdGF0aWMgdm9pZCB0ZXN0X3B0cl9yZWFkKHZvaWQgKnB0cikKLXsK LQl1bnNpZ25lZCBsb25nIGl0ZXIgPSAwOwotCXZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgKnA7Ci0J dW5zaWduZWQgbG9uZyBpLCBsb29wczsKLQotCWxvb3BzID0gQk9fU0laRSAvIHNpemVvZih1bnNp Z25lZCBsb25nKSAvIDQ7Ci0KLQlzdGFydF90ZXN0KHRlc3RfZHVyYXRpb25fc2VjKTsKLQotCXdo aWxlIChydW5fdGVzdCkgewotCQlwID0gKHVuc2lnbmVkIGxvbmcgKilwdHI7Ci0JCWZvciAoaSA9 IDA7IGkgPCBsb29wczsgaSsrKSB7Ci0JCQkodm9pZCkqcCsrOwotCQkJKHZvaWQpKnArKzsKLQkJ CSh2b2lkKSpwKys7Ci0JCQkodm9pZCkqcCsrOwotCQl9Ci0JCWl0ZXIrKzsKLQl9Ci0KLQlwcmlu dGYoIiU4bHUgTUIvc1xuIiwgaXRlciAvIHRlc3RfZHVyYXRpb25fc2VjICogQk9fU0laRSAvIDEw MDAwMDApOwotfQotCi1zdGF0aWMgdm9pZCB0ZXN0X3B0cl93cml0ZSh2b2lkICpwdHIpCi17Ci0J dW5zaWduZWQgbG9uZyBpdGVyID0gMDsKLQl2b2xhdGlsZSB1bnNpZ25lZCBsb25nICpwOwotCXJl Z2lzdGVyIHVuc2lnbmVkIGxvbmcgaSwgbG9vcHM7Ci0KLQlsb29wcyA9IEJPX1NJWkUgLyBzaXpl b2YodW5zaWduZWQgbG9uZykgLyA0OwotCi0Jc3RhcnRfdGVzdCh0ZXN0X2R1cmF0aW9uX3NlYyk7 Ci0KLQl3aGlsZSAocnVuX3Rlc3QpIHsKLQkJcCA9ICh1bnNpZ25lZCBsb25nICopcHRyOwotCQlm b3IgKGkgPSAwOyBpIDwgbG9vcHM7IGkrKykgewotCQkJKnArKyA9IGk7Ci0JCQkqcCsrID0gaTsK LQkJCSpwKysgPSBpOwotCQkJKnArKyA9IGk7Ci0JCX0KLQkJaXRlcisrOwotCX0KLQotCXByaW50 ZigiJThsdSBNQi9zXG4iLCBpdGVyIC8gdGVzdF9kdXJhdGlvbl9zZWMgKiBCT19TSVpFIC8gMTAw MDAwMCk7Ci19Ci0KLXN0YXRpYyB2b2lkIGRvX2ltcGFjdF90ZXN0cyh1bnNpZ25lZCBpbnQgbiwg Y29uc3QgY2hhciAqcGZpeCwgY29uc3QgY2hhciAqcGZpeDIsCi0JCQkgICAgdm9pZCAqcHRyKQot ewotCXByaW50ZigiJXMlc3B0ci1yZWFkLCAgICAgICAgICAgICAgICAgICAlNXUgYm9zID0gIiwg cGZpeCwgcGZpeDIsIG4pOwotCXRlc3RfcHRyX3JlYWQocHRyKTsKLQotCXByaW50ZigiJXMlc3B0 ci13cml0ZSAgICAgICAgICAgICAgICAgICAlNXUgYm9zID0gIiwgcGZpeCwgcGZpeDIsIG4pOwot CXRlc3RfcHRyX3dyaXRlKHB0cik7Ci0KLQlwcmludGYoIiVzJXNtYWxsb2MtZnJlZSwgICAgICAg ICAgICAgICAgJTV1IGJvcyA9ICIsIHBmaXgsIHBmaXgyLCBuKTsKLQl0ZXN0X21hbGxvY19mcmVl KDApOwotCXByaW50ZigiJXMlc21hbGxvYy1mcmVlLXJhbmRvbSAgICAgICAgICAlNXUgYm9zID0g IiwgcGZpeCwgcGZpeDIsIG4pOwotCXRlc3RfbWFsbG9jX2ZyZWUoMSk7Ci0KLQlwcmludGYoIiVz JXNtYWxsb2MtcmVhbGxvYy1mcmVlLCAgICAgICAgJTV1IGJvcyA9ICIsIHBmaXgsIHBmaXgyLCBu KTsKLQl0ZXN0X21hbGxvY19yZWFsbG9jX2ZyZWUoMCk7Ci0JcHJpbnRmKCIlcyVzbWFsbG9jLXJl YWxsb2MtZnJlZS1yYW5kb20sICU1dSBib3MgPSAiLCBwZml4LCBwZml4Miwgbik7Ci0JdGVzdF9t YWxsb2NfcmVhbGxvY19mcmVlKDEpOwotCi0JcHJpbnRmKCIlcyVzbW1hcC11bm1hcCwgICAgICAg ICAgICAgICAgICU1dSBib3MgPSAiLCBwZml4LCBwZml4Miwgbik7Ci0JdGVzdF9tbWFwX3VubWFw KDApOwotCXByaW50ZigiJXMlc21tYXAtdW5tYXAtcmFuZG9tLCAgICAgICAgICAlNXUgYm9zID0g IiwgcGZpeCwgcGZpeDIsIG4pOwotCXRlc3RfbW1hcF91bm1hcCgxKTsKLX0KLQotc3RhdGljIHZv aWQgdGVzdF9pbXBhY3Rfb3ZlcmxhcChpbnQgZmQsIGNvbnN0IGNoYXIgKnByZWZpeCkKLXsKLQl1 bnNpZ25lZCBpbnQgdG90YWwgPSBzaXplb2YobnJfYm9zKSAvIHNpemVvZihucl9ib3NbMF0pOwot CXVuc2lnbmVkIGludCBzdWJ0ZXN0LCBpOwotCXVpbnQzMl90IGhhbmRsZXNbbnJfYm9zW3RvdGFs LTFdXTsKLQl2b2lkICpibG9jayA9IE5VTEw7Ci0Jdm9pZCAqcHRyOwotCXVuc2lnbmVkIGNoYXIg KnA7Ci0JY2hhciBidWZmZXJbQk9fU0laRV07Ci0JaW50IHJldDsKLQotCWZvciAoc3VidGVzdCA9 IDA7IHN1YnRlc3QgPCB0b3RhbDsgc3VidGVzdCsrKSB7Ci0JCWlmIChucl9ib3Nbc3VidGVzdF0g PiAwKSB7Ci0JCQlpZ3RfYXNzZXJ0KFBBR0VfU0laRSA8IEJPX1NJWkUpOwotCQkJcmV0ID0gcG9z aXhfbWVtYWxpZ24oJmJsb2NrLCBQQUdFX1NJWkUsCi0JCQkJCVBBR0VfU0laRSAqIG5yX2Jvc1tz dWJ0ZXN0XSArIEJPX1NJWkUpOwotCQkJaWd0X2Fzc2VydChyZXQgPT0gMCk7Ci0KLQkJCWZvciAo aSA9IDAsIHAgPSBibG9jazsgaSA8IG5yX2Jvc1tzdWJ0ZXN0XTsKLQkJCSAgICAgaSsrLCBwICs9 IFBBR0VfU0laRSkKLQkJCQlnZW1fdXNlcnB0cihmZCwgKHVpbnQzMl90ICopcCwgQk9fU0laRSwg MCwgdXNlcnB0cl9mbGFncywgJmhhbmRsZXNbaV0pOwotCQl9Ci0KLQkJaWYgKG5yX2Jvc1tzdWJ0 ZXN0XSA+IDApCi0JCQlwdHIgPSBibG9jazsKLQkJZWxzZQotCQkJcHRyID0gYnVmZmVyOwotCi0J CWRvX2ltcGFjdF90ZXN0cyhucl9ib3Nbc3VidGVzdF0sIHByZWZpeCwgIm92ZXJsYXAtIiwgcHRy KTsKLQotCQlmb3IgKGkgPSAwOyBpIDwgbnJfYm9zW3N1YnRlc3RdOyBpKyspCi0JCQlnZW1fY2xv c2UoZmQsIGhhbmRsZXNbaV0pOwotCi0JCWZyZWUoYmxvY2spOwotCQlibG9jayA9IE5VTEw7Ci0J fQotfQotCi1zdGF0aWMgdm9pZCB0ZXN0X2ltcGFjdChpbnQgZmQsIGNvbnN0IGNoYXIgKnByZWZp eCkKLXsKLQl1bnNpZ25lZCBpbnQgdG90YWwgPSBzaXplb2YobnJfYm9zKSAvIHNpemVvZihucl9i b3NbMF0pOwotCXVuc2lnbmVkIGludCBzdWJ0ZXN0LCBpOwotCXVpbnQzMl90IGhhbmRsZXNbbnJf Ym9zW3RvdGFsLTFdXTsKLQl2b2lkICpwdHI7Ci0JY2hhciBidWZmZXJbQk9fU0laRV07Ci0KLQlm b3IgKHN1YnRlc3QgPSAwOyBzdWJ0ZXN0IDwgdG90YWw7IHN1YnRlc3QrKykgewotCQlmb3IgKGkg PSAwOyBpIDwgbnJfYm9zW3N1YnRlc3RdOyBpKyspCi0JCQloYW5kbGVzW2ldID0gY3JlYXRlX3Vz ZXJwdHJfYm8oZmQsIEJPX1NJWkUpOwotCi0JCWlmIChucl9ib3Nbc3VidGVzdF0gPiAwKQotCQkJ cHRyID0gZ2V0X2hhbmRsZV9wdHIoaGFuZGxlc1swXSk7Ci0JCWVsc2UKLQkJCXB0ciA9IGJ1ZmZl cjsKLQotCQlkb19pbXBhY3RfdGVzdHMobnJfYm9zW3N1YnRlc3RdLCBwcmVmaXgsICJuby1vdmVy bGFwLSIsIHB0cik7Ci0KLQkJZm9yIChpID0gMDsgaSA8IG5yX2Jvc1tzdWJ0ZXN0XTsgaSsrKQot CQkJZnJlZV91c2VycHRyX2JvKGZkLCBoYW5kbGVzW2ldKTsKLQl9Ci19Ci0KLXN0YXRpYyB2b2lk IHRlc3Rfc2luZ2xlKGludCBmZCkKLXsKLQljaGFyICpwdHIsICpib19wdHI7Ci0JdWludDMyX3Qg aGFuZGxlID0gMDsKLQl1bnNpZ25lZCBsb25nIGl0ZXIgPSAwOwotCXVuc2lnbmVkIGxvbmcgbWFw X3NpemUgPSBCT19TSVpFICsgUEFHRV9TSVpFIC0gMTsKLQotCXB0ciA9IG1tYXAoTlVMTCwgbWFw X3NpemUsIFBST1RfUkVBRCB8IFBST1RfV1JJVEUsCi0JCQlNQVBfQU5PTllNT1VTIHwgTUFQX1BS SVZBVEUsIC0xLCAwKTsKLQlhc3NlcnQocHRyICE9IE1BUF9GQUlMRUQpOwotCi0JYm9fcHRyID0g KGNoYXIgKilBTElHTigodW5zaWduZWQgbG9uZylwdHIsIFBBR0VfU0laRSk7Ci0KLQlzdGFydF90 ZXN0KHRlc3RfZHVyYXRpb25fc2VjKTsKLQotCXdoaWxlIChydW5fdGVzdCkgewotCQlnZW1fdXNl cnB0cihmZCwgYm9fcHRyLCBCT19TSVpFLCAwLCB1c2VycHRyX2ZsYWdzLCAmaGFuZGxlKTsKLQkJ Z2VtX2Nsb3NlKGZkLCBoYW5kbGUpOwotCQlpdGVyKys7Ci0JfQotCi0JbXVubWFwKHB0ciwgbWFw X3NpemUpOwotCi0JcHJpbnRmKCIlOGx1IGl0ZXIvc1xuIiwgaXRlciAvIHRlc3RfZHVyYXRpb25f c2VjKTsKLX0KLQotc3RhdGljIHZvaWQgdGVzdF9tdWx0aXBsZShpbnQgZmQsIHVuc2lnbmVkIGlu dCBiYXRjaCwgaW50IHJhbmRvbSkKLXsKLQljaGFyICpwdHIsICpib19wdHI7Ci0JdWludDMyX3Qg aGFuZGxlc1sxMDAwMF07Ci0JaW50IG1hcFsxMDAwMF07Ci0JdW5zaWduZWQgbG9uZyBpdGVyID0g MDsKLQlpbnQgaTsKLQl1bnNpZ25lZCBsb25nIG1hcF9zaXplID0gYmF0Y2ggKiBCT19TSVpFICsg UEFHRV9TSVpFIC0gMTsKLQotCWFzc2VydChiYXRjaCA8IChzaXplb2YoaGFuZGxlcykgLyBzaXpl b2YoaGFuZGxlc1swXSkpKTsKLQlhc3NlcnQoYmF0Y2ggPCAoc2l6ZW9mKG1hcCkgLyBzaXplb2Yo bWFwWzBdKSkpOwotCi0JcHRyID0gbW1hcChOVUxMLCBtYXBfc2l6ZSwgUFJPVF9SRUFEIHwgUFJP VF9XUklURSwKLQkJCU1BUF9BTk9OWU1PVVMgfCBNQVBfUFJJVkFURSwgLTEsIDApOwotCWFzc2Vy dChwdHIgIT0gTUFQX0ZBSUxFRCk7Ci0KLQlib19wdHIgPSAoY2hhciAqKUFMSUdOKCh1bnNpZ25l ZCBsb25nKXB0ciwgUEFHRV9TSVpFKTsKLQotCWZvciAoaSA9IDA7IGkgPCBiYXRjaDsgaSsrKQot CQltYXBbaV0gPSBpOwotCi0Jc3RhcnRfdGVzdCh0ZXN0X2R1cmF0aW9uX3NlYyk7Ci0KLQl3aGls ZSAocnVuX3Rlc3QpIHsKLQkJaWYgKHJhbmRvbSkKLQkJCWlndF9wZXJtdXRlX2FycmF5KG1hcCwg YmF0Y2gsIGlndF9leGNoYW5nZV9pbnQpOwotCQlmb3IgKGkgPSAwOyBpIDwgYmF0Y2g7IGkrKykg ewotCQkJZ2VtX3VzZXJwdHIoZmQsIGJvX3B0ciArIG1hcFtpXSAqIEJPX1NJWkUsIEJPX1NJWkUs Ci0JCQkJCQkwLCB1c2VycHRyX2ZsYWdzLCAmaGFuZGxlc1tpXSk7Ci0JCX0KLQkJaWYgKHJhbmRv bSkKLQkJCWlndF9wZXJtdXRlX2FycmF5KG1hcCwgYmF0Y2gsIGlndF9leGNoYW5nZV9pbnQpOwot CQlmb3IgKGkgPSAwOyBpIDwgYmF0Y2g7IGkrKykKLQkJCWdlbV9jbG9zZShmZCwgaGFuZGxlc1tt YXBbaV1dKTsKLQkJaXRlcisrOwotCX0KLQotCW11bm1hcChwdHIsIG1hcF9zaXplKTsKLQotCXBy aW50ZigiJThsdSBpdGVyL3NcbiIsIGl0ZXIgKiBiYXRjaCAvIHRlc3RfZHVyYXRpb25fc2VjKTsK LX0KLQotc3RhdGljIHZvaWQgdGVzdF91c2VycHRyKGludCBmZCkKLXsKLQlwcmludGYoImNyZWF0 ZS1kZXN0cm95ICAgICAgICAgICAgICAgID0gIik7Ci0JdGVzdF9zaW5nbGUoZmQpOwotCi0JcHJp bnRmKCJtdWx0aS1jcmVhdGUtZGVzdHJveSAgICAgICAgICA9ICIpOwotCXRlc3RfbXVsdGlwbGUo ZmQsIDEwMCwgMCk7Ci0KLQlwcmludGYoIm11bHRpLWNyZWF0ZS1kZXN0cm95LXJhbmRvbSAgID0g Iik7Ci0JdGVzdF9tdWx0aXBsZShmZCwgMTAwLCAxKTsKLX0KLQotaW50IG1haW4oaW50IGFyZ2Ms IGNoYXIgKiphcmd2KQotewotCWludCBmZCA9IC0xLCByZXQ7Ci0KLQlpZ3Rfc3VidGVzdF9pbml0 KGFyZ2MsIGFyZ3YpOwotCi0JZmQgPSBkcm1fb3Blbl9kcml2ZXIoRFJJVkVSX0lOVEVMKTsKLQlp Z3RfYXNzZXJ0KGZkID49IDApOwotCi0JcmV0ID0gaGFzX3VzZXJwdHIoZmQpOwotCWlndF9za2lw X29uX2YocmV0ID09IDAsICJObyB1c2VycHRyIHN1cHBvcnQgLSAlcyAoJWQpXG4iLAotCQkJc3Ry ZXJyb3IoZXJybm8pLCByZXQpOwotCi0KLQlnZW1fdXNlcnB0cl90ZXN0X3Vuc3luY2hyb25pemVk KCk7Ci0KLQlpZ3Rfc3VidGVzdCgidXNlcnB0ci11bnN5bmMiKQotCQl0ZXN0X3VzZXJwdHIoZmQp OwotCi0JaWd0X3N1YnRlc3QoInVzZXJwdHItaW1wYWN0LXVuc3luYyIpCi0JCXRlc3RfaW1wYWN0 KGZkLCAidW5zeW5jLSIpOwotCi0JaWd0X3N1YnRlc3QoInVzZXJwdHItaW1wYWN0LXVuc3luYy1v dmVybGFwIikKLQkJdGVzdF9pbXBhY3Rfb3ZlcmxhcChmZCwgInVuc3luYy0iKTsKLQotCWdlbV91 c2VycHRyX3Rlc3Rfc3luY2hyb25pemVkKCk7Ci0KLQlpZ3Rfc3VidGVzdCgidXNlcnB0ci1zeW5j IikKLQkJdGVzdF91c2VycHRyKGZkKTsKLQotCWlndF9zdWJ0ZXN0KCJ1c2VycHRyLWltcGFjdC1z eW5jIikKLQkJdGVzdF9pbXBhY3QoZmQsICJzeW5jLSIpOwotCi0JaWd0X3N1YnRlc3QoInVzZXJw dHItaW1wYWN0LXN5bmMtb3ZlcmxhcCIpCi0JCXRlc3RfaW1wYWN0X292ZXJsYXAoZmQsICJzeW5j LSIpOwotCi0JaWd0X2V4aXQoKTsKLQotCXJldHVybiAwOwotfQpkaWZmIC0tZ2l0IGEvYmVuY2ht YXJrcy9tZXNvbi5idWlsZCBiL2JlbmNobWFya3MvbWVzb24uYnVpbGQKaW5kZXggYmVkZTUxZGNl Li5iM2QxNmIwNmQgMTAwNjQ0Ci0tLSBhL2JlbmNobWFya3MvbWVzb24uYnVpbGQKKysrIGIvYmVu Y2htYXJrcy9tZXNvbi5idWlsZApAQCAtMjMsNyArMjMsNiBAQCBpZiBsaWJkcm1faW50ZWwuZm91 bmQoKQogCQknaW50ZWxfdXBsb2FkX2JsaXRfbGFyZ2VfZ3R0JywKIAkJJ2ludGVsX3VwbG9hZF9i bGl0X2xhcmdlX21hcCcsCiAJCSdpbnRlbF91cGxvYWRfYmxpdF9zbWFsbCcsCi0JCSdnZW1fdXNl cnB0cl9iZW5jaG1hcmsnLAogCV0KIGVuZGlmCiAKLS0gCjIuMjYuMAoKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KaWd0LWRldiBtYWlsaW5nIGxpc3QKaWd0 LWRldkBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcv bWFpbG1hbi9saXN0aW5mby9pZ3QtZGV2Cg==