From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by gabe.freedesktop.org (Postfix) with ESMTPS id C83E36E2E2 for ; Fri, 22 Nov 2019 13:03:10 +0000 (UTC) From: Lionel Landwerlin Date: Fri, 22 Nov 2019 15:02:54 +0200 Message-Id: <20191122130300.558951-5-lionel.g.landwerlin@intel.com> In-Reply-To: <20191122130300.558951-1-lionel.g.landwerlin@intel.com> References: <20191122130300.558951-1-lionel.g.landwerlin@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t v2 04/10] tests/syncobj_timeline: add more timeline tests 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 List-ID: SW5jbHVkaW5nIG9yZGVyaW5nIHRlc3RzIGFuZCAzMmJpdCBsaW1pdC4KCnYyOiBhZGQgcG9pbnQg MCBzaWduYWxpbmcgdGVzdCAoTGlvbmVsKQoKdjM6IFVzZSBSRUFEX09OQ0UoKSBpbiB0aHJlYWQg Y2hlY2tlciAoQ2hyaXMpCgpTaWduZWQtb2ZmLWJ5OiBMaW9uZWwgTGFuZHdlcmxpbiA8bGlvbmVs LmcubGFuZHdlcmxpbkBpbnRlbC5jb20+Ci0tLQogbGliL2lndF9zeW5jb2JqLmMgICAgICAgIHwg IDczICsrKystLS0tCiBsaWIvaWd0X3N5bmNvYmouaCAgICAgICAgfCAgIDMgKwogdGVzdHMvc3lu Y29ial90aW1lbGluZS5jIHwgMzg3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKwogMyBmaWxlcyBjaGFuZ2VkLCA0MjYgaW5zZXJ0aW9ucygrKSwgMzcgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvbGliL2lndF9zeW5jb2JqLmMgYi9saWIvaWd0X3N5bmNvYmouYwppbmRl eCBiMjExZGZlZi4uYTI0ZWQxMGIgMTAwNjQ0Ci0tLSBhL2xpYi9pZ3Rfc3luY29iai5jCisrKyBi L2xpYi9pZ3Rfc3luY29iai5jCkBAIC00NTksMTcgKzQ1OSwxOSBAQCBzeW5jb2JqX3RpbWVsaW5l X3F1ZXJ5KGludCBmZCwgdWludDMyX3QgKmhhbmRsZXMsIHVpbnQ2NF90ICpwb2ludHMsCiB9CiAK IHN0YXRpYyBpbnQKLV9fc3luY29ial9iaW5hcnlfdG9fdGltZWxpbmUoaW50IGZkLCB1aW50MzJf dCB0aW1lbGluZV9oYW5kbGUsCi0JCQkgICAgIHVpbnQ2NF90IHBvaW50LCB1aW50MzJfdCBiaW5h cnlfaGFuZGxlKQorX19zeW5jb2JqX3RyYW5zZmVyKGludCBmZCwKKwkJICAgdWludDMyX3QgaGFu ZGxlX2RzdCwgdWludDY0X3QgcG9pbnRfZHN0LAorCQkgICB1aW50MzJfdCBoYW5kbGVfc3JjLCB1 aW50NjRfdCBwb2ludF9zcmMsCisJCSAgIHVpbnQzMl90IGZsYWdzKQogewogCXN0cnVjdCBkcm1f c3luY29ial90cmFuc2ZlciBhcmdzOwogCWludCByZXQ7CiAKLQlhcmdzLnNyY19oYW5kbGUgPSBi aW5hcnlfaGFuZGxlOwotCWFyZ3MuZHN0X2hhbmRsZSA9IHRpbWVsaW5lX2hhbmRsZTsKLQlhcmdz LnNyY19wb2ludCA9IDA7Ci0JYXJncy5kc3RfcG9pbnQgPSBwb2ludDsKLQlhcmdzLmZsYWdzID0g MDsKKwlhcmdzLnNyY19oYW5kbGUgPSBoYW5kbGVfc3JjOworCWFyZ3MuZHN0X2hhbmRsZSA9IGhh bmRsZV9kc3Q7CisJYXJncy5zcmNfcG9pbnQgPSBwb2ludF9zcmM7CisJYXJncy5kc3RfcG9pbnQg PSBwb2ludF9kc3Q7CisJYXJncy5mbGFncyA9IGZsYWdzOwogCWFyZ3MucGFkID0gMDsKIAlyZXQg PSBpZ3RfaW9jdGwoZmQsIERSTV9JT0NUTF9TWU5DT0JKX1RSQU5TRkVSLCAmYXJncyk7CiAJaWYg KHJldCkgewpAQCAtNDk1LDMzICs0OTcsOSBAQCB2b2lkCiBzeW5jb2JqX2JpbmFyeV90b190aW1l bGluZShpbnQgZmQsIHVpbnQzMl90IHRpbWVsaW5lX2hhbmRsZSwKIAkJCSAgIHVpbnQ2NF90IHBv aW50LCB1aW50MzJfdCBiaW5hcnlfaGFuZGxlKQogewotCWlndF9hc3NlcnRfZXEoX19zeW5jb2Jq X2JpbmFyeV90b190aW1lbGluZShmZCwgdGltZWxpbmVfaGFuZGxlLCBwb2ludCwKLQkJCQkJCSAg IGJpbmFyeV9oYW5kbGUpLCAwKTsKLX0KLQotc3RhdGljIGludAotX19zeW5jb2JqX3RpbWVsaW5l X3RvX2JpbmFyeShpbnQgZmQsIHVpbnQzMl90IGJpbmFyeV9oYW5kbGUsCi0JCQkgICAgIHVpbnQz Ml90IHRpbWVsaW5lX2hhbmRsZSwKLQkJCSAgICAgdWludDY0X3QgcG9pbnQsCi0JCQkgICAgIHVp bnQzMl90IGZsYWdzKQotewotCXN0cnVjdCBkcm1fc3luY29ial90cmFuc2ZlciBhcmdzOwotCWlu dCByZXQ7Ci0KLQlhcmdzLmRzdF9oYW5kbGUgPSBiaW5hcnlfaGFuZGxlOwotCWFyZ3Muc3JjX2hh bmRsZSA9IHRpbWVsaW5lX2hhbmRsZTsKLQlhcmdzLmRzdF9wb2ludCA9IDA7Ci0JYXJncy5zcmNf cG9pbnQgPSBwb2ludDsKLQlhcmdzLmZsYWdzID0gZmxhZ3M7Ci0JYXJncy5wYWQgPSAwOwotCXJl dCA9IGRybUlvY3RsKGZkLCBEUk1fSU9DVExfU1lOQ09CSl9UUkFOU0ZFUiwgJmFyZ3MpOwotCWlm IChyZXQpIHsKLQkJcmV0ID0gLWVycm5vOwotCQlpZ3RfYXNzZXJ0KHJldCk7Ci0JfQotCi0JZXJy bm8gPSAwOwotCXJldHVybiByZXQ7CisJaWd0X2Fzc2VydF9lcShfX3N5bmNvYmpfdHJhbnNmZXIo ZmQsCisJCQkJCSB0aW1lbGluZV9oYW5kbGUsIHBvaW50LAorCQkJCQkgYmluYXJ5X2hhbmRsZSwg MCwgMCksIDApOwogfQogCiAvKioKQEAgLTU0MCw3ICs1MTgsMjggQEAgc3luY29ial90aW1lbGlu ZV90b19iaW5hcnkoaW50IGZkLCB1aW50MzJfdCBiaW5hcnlfaGFuZGxlLAogCQkJICAgdWludDY0 X3QgcG9pbnQsCiAJCQkgICB1aW50MzJfdCBmbGFncykKIHsKLQlpZ3RfYXNzZXJ0X2VxKF9fc3lu Y29ial90aW1lbGluZV90b19iaW5hcnkoZmQsIGJpbmFyeV9oYW5kbGUsCi0JCQkJCQkgICB0aW1l bGluZV9oYW5kbGUsIHBvaW50LAotCQkJCQkJICAgZmxhZ3MpLCAwKTsKKwlpZ3RfYXNzZXJ0X2Vx KF9fc3luY29ial90cmFuc2ZlcihmZCwKKwkJCQkJIGJpbmFyeV9oYW5kbGUsIDAsCisJCQkJCSB0 aW1lbGluZV9oYW5kbGUsIHBvaW50LAorCQkJCQkgZmxhZ3MpLCAwKTsKK30KKworLyoqCisgKiBz eW5jb2JqX3RpbWVsaW5lX3RvX3RpbWVsaW5lOgorICogQGZkOiBUaGUgRFJNIGZpbGUgZGVzY3Jp cHRvci4KKyAqIEB0aW1lbGluZV9zcmM6IEEgdGltZWxpbmUgc3luY29iaiBoYW5kbGUKKyAqIEB0 aW1lbGluZV9kc3Q6IEEgdGltZWxpbmUgc3luY29iaiBoYW5kbGUKKyAqIEBwb2ludF9zcmM6IEEg cG9pbnQgb24gdGhlIHNvdXJjZSB0aW1lbGluZSBzeW5jb2JqCisgKiBAcG9pbnRfZHN0OiBBIHBv aW50IG9uIHRoZSBkZXN0aW5hdGlvbiB0aW1lbGluZSBzeW5jb2JqCisgKgorICogcXVlcnkgYSBz ZXQgb2Ygc3luY29ianMuCisgKi8KK3ZvaWQKK3N5bmNvYmpfdGltZWxpbmVfdG9fdGltZWxpbmUo aW50IGZkLAorCQkJICAgICB1aW50NjRfdCB0aW1lbGluZV9kc3QsIHVpbnQzMl90IHBvaW50X2Rz dCwKKwkJCSAgICAgdWludDY0X3QgdGltZWxpbmVfc3JjLCB1aW50MzJfdCBwb2ludF9zcmMpCit7 CisJaWd0X2Fzc2VydF9lcShfX3N5bmNvYmpfdHJhbnNmZXIoZmQsCisJCQkJCSB0aW1lbGluZV9k c3QsIHBvaW50X2RzdCwKKwkJCQkJIHRpbWVsaW5lX3NyYywgcG9pbnRfc3JjLCAwKSwgMCk7CiB9 CmRpZmYgLS1naXQgYS9saWIvaWd0X3N5bmNvYmouaCBiL2xpYi9pZ3Rfc3luY29iai5oCmluZGV4 IDIwZjFmMThmLi5lNjcyNTY3MSAxMDA2NDQKLS0tIGEvbGliL2lndF9zeW5jb2JqLmgKKysrIGIv bGliL2lndF9zeW5jb2JqLmgKQEAgLTYwLDYgKzYwLDkgQEAgdm9pZCBzeW5jb2JqX3RpbWVsaW5l X3RvX2JpbmFyeShpbnQgZmQsIHVpbnQzMl90IGJpbmFyeV9oYW5kbGUsCiAJCQkJdWludDMyX3Qg dGltZWxpbmVfaGFuZGxlLAogCQkJCXVpbnQ2NF90IHBvaW50LAogCQkJCXVpbnQzMl90IGZsYWdz KTsKK3ZvaWQgc3luY29ial90aW1lbGluZV90b190aW1lbGluZShpbnQgZmQsCisJCQkJICB1aW50 NjRfdCB0aW1lbGluZV9kc3QsIHVpbnQzMl90IHBvaW50X2RzdCwKKwkJCQkgIHVpbnQ2NF90IHRp bWVsaW5lX3NyYywgdWludDMyX3QgcG9pbnRfc3JjKTsKIHZvaWQgc3luY29ial90aW1lbGluZV9z aWduYWwoaW50IGZkLCB1aW50MzJfdCAqaGFuZGxlcywgdWludDY0X3QgKnBvaW50cywKIAkJCSAg ICAgdWludDMyX3QgY291bnQpOwogCmRpZmYgLS1naXQgYS90ZXN0cy9zeW5jb2JqX3RpbWVsaW5l LmMgYi90ZXN0cy9zeW5jb2JqX3RpbWVsaW5lLmMKaW5kZXggODJmYzA4YWEuLjMxOWRjMWJkIDEw MDY0NAotLS0gYS90ZXN0cy9zeW5jb2JqX3RpbWVsaW5lLmMKKysrIGIvdGVzdHMvc3luY29ial90 aW1lbGluZS5jCkBAIC00MDYsNiArNDA2LDI5IEBAIHRlc3RfdHJhbnNmZXJfYmFkX3BhZChpbnQg ZmQpCiAJaWd0X2Fzc2VydChyZXQgPT0gLTEgJiYgZXJybm8gPT0gRUlOVkFMKTsKIH0KIAorc3Rh dGljIGNvbnN0IGNoYXIgKnRlc3RfdHJhbnNmZXJfbm9uZXhpc3RlbnRfcG9pbnRfZGVzYyA9CisJ IlZlcmlmaWVzIHRoYXQgdHJhbnNmZXJpbmcgYSBwb2ludCBmcm9tIGEgc3luY29iaiB0aW1lbGlu ZSBpcyB0byIKKwkiIGFub3RoZXIgcG9pbnQgaW4gdGhlIHNhbWUgdGltZWxpbmUgd29ya3MiOwor c3RhdGljIHZvaWQKK3Rlc3RfdHJhbnNmZXJfbm9uZXhpc3RlbnRfcG9pbnQoaW50IGZkKQorewor CXN0cnVjdCBkcm1fc3luY29ial90cmFuc2ZlciBhcmcgPSB7fTsKKwl1aW50MzJfdCBoYW5kbGUg PSBzeW5jb2JqX2NyZWF0ZShmZCwgMCk7CisJdWludDY0X3QgdmFsdWUgPSA2MzsKKwlpbnQgcmV0 OworCisJc3luY29ial90aW1lbGluZV9zaWduYWwoZmQsICZoYW5kbGUsICZ2YWx1ZSwgMSk7CisK Kwlhcmcuc3JjX2hhbmRsZSA9IGhhbmRsZTsKKwlhcmcuZHN0X2hhbmRsZSA9IGhhbmRsZTsKKwlh cmcuc3JjX3BvaW50ID0gdmFsdWU7IC8qIFBvaW50IGRvZXNuJ3QgZXhpc3QgKi8KKwlhcmcuZHN0 X3BvaW50ID0gdmFsdWUgKyAxMTsKKwlyZXQgPSBpZ3RfaW9jdGwoZmQsIERSTV9JT0NUTF9TWU5D T0JKX1RSQU5TRkVSLCAmYXJnKTsKKwlpZ3RfYXNzZXJ0KHJldCA9PSAwKTsKKworCXN5bmNvYmpf ZGVzdHJveShmZCwgaGFuZGxlKTsKK30KKwogI2RlZmluZSBXQUlUX0ZPUl9TVUJNSVQJCSgxIDw8 IDApCiAjZGVmaW5lIFdBSVRfQUxMCQkoMSA8PCAxKQogI2RlZmluZSBXQUlUX0FWQUlMQUJMRQkJ KDEgPDwgMikKQEAgLTQxNCw2ICs0MzcsNTMgQEAgdGVzdF90cmFuc2Zlcl9iYWRfcGFkKGludCBm ZCkKICNkZWZpbmUgV0FJVF9TSUdOQUxFRAkJKDEgPDwgNSkKICNkZWZpbmUgV0FJVF9GTEFHU19N QVgJCSgxIDw8IDYpIC0gMQogCitzdGF0aWMgY29uc3QgY2hhciAqdGVzdF90cmFuc2Zlcl9wb2lu dF9kZXNjID0KKwkiVmVyaWZpZXMgdGhhdCB0cmFuc2ZlcmluZyBhIHBvaW50IGZyb20gYSBzeW5j b2JqIHRpbWVsaW5lIGlzIHRvIgorCSIgYW5vdGhlciBwb2ludCBpbiB0aGUgc2FtZSB0aW1lbGlu ZSB3b3JrcyBmb3Igc2lnbmFsL3dhaXQgb3BlcmF0aW9ucyI7CitzdGF0aWMgdm9pZAordGVzdF90 cmFuc2Zlcl9wb2ludChpbnQgZmQpCit7CisJaW50IHRpbWVsaW5lID0gc3dfc3luY190aW1lbGlu ZV9jcmVhdGUoKTsKKwl1aW50MzJfdCBoYW5kbGUgPSBzeW5jb2JqX2NyZWF0ZShmZCwgMCk7CisJ dWludDY0X3QgdmFsdWU7CisKKwl7CisJCWludCBzd19mZW5jZSA9IHN3X3N5bmNfdGltZWxpbmVf Y3JlYXRlX2ZlbmNlKHRpbWVsaW5lLCAxKTsKKwkJdWludDMyX3QgdG1wX3N5bmNvYmogPSBzeW5j b2JqX2NyZWF0ZShmZCwgMCk7CisKKwkJc3luY29ial9pbXBvcnRfc3luY19maWxlKGZkLCB0bXBf c3luY29iaiwgc3dfZmVuY2UpOworCQlzeW5jb2JqX2JpbmFyeV90b190aW1lbGluZShmZCwgaGFu ZGxlLCAxLCB0bXBfc3luY29iaik7CisJCWNsb3NlKHN3X2ZlbmNlKTsKKwkJc3luY29ial9kZXN0 cm95KGZkLCB0bXBfc3luY29iaik7CisJfQorCisJc3luY29ial90aW1lbGluZV9xdWVyeShmZCwg JmhhbmRsZSwgJnZhbHVlLCAxKTsKKwlpZ3RfYXNzZXJ0X2VxKHZhbHVlLCAwKTsKKworCXZhbHVl ID0gMTsKKwlpZ3RfYXNzZXJ0X2VxKHN5bmNvYmpfdGltZWxpbmVfd2FpdF9lcnIoZmQsICZoYW5k bGUsICZ2YWx1ZSwKKwkJCQkJCTEsIDAsIFdBSVRfQUxMKSwgLUVUSU1FKTsKKworCXN3X3N5bmNf dGltZWxpbmVfaW5jKHRpbWVsaW5lLCAxKTsKKworCXN5bmNvYmpfdGltZWxpbmVfcXVlcnkoZmQs ICZoYW5kbGUsICZ2YWx1ZSwgMSk7CisJaWd0X2Fzc2VydF9lcSh2YWx1ZSwgMSk7CisKKwlpZ3Rf YXNzZXJ0KHN5bmNvYmpfdGltZWxpbmVfd2FpdChmZCwgJmhhbmRsZSwgJnZhbHVlLAorCQkJCQkg MSwgMCwgV0FJVF9BTEwsIE5VTEwpKTsKKworCXZhbHVlID0gMjsKKwlzeW5jb2JqX3RpbWVsaW5l X3NpZ25hbChmZCwgJmhhbmRsZSwgJnZhbHVlLCAxKTsKKworCXN5bmNvYmpfdGltZWxpbmVfdG9f dGltZWxpbmUoZmQsIGhhbmRsZSwgMywgaGFuZGxlLCAyKTsKKworCXN5bmNvYmpfdGltZWxpbmVf cXVlcnkoZmQsICZoYW5kbGUsICZ2YWx1ZSwgMSk7CisJaWd0X2Fzc2VydF9lcSh2YWx1ZSwgMyk7 CisKKwlzeW5jb2JqX2Rlc3Ryb3koZmQsIGhhbmRsZSk7CisJY2xvc2UodGltZWxpbmUpOworfQor CiBzdGF0aWMgdWludDMyX3QKIGZsYWdzX2Zvcl90ZXN0X2ZsYWdzKHVpbnQzMl90IHRlc3RfZmxh Z3MpCiB7CkBAIC02MTksNiArNjg5LDI0IEBAIHRlc3Rfc2lnbmFsKGludCBmZCkKIAlzeW5jb2Jq X2Rlc3Ryb3koZmQsIHN5bmNvYmopOwogfQogCitzdGF0aWMgY29uc3QgY2hhciAqdGVzdF9zaWdu YWxfcG9pbnRfMF9kZXNjID0KKwkiVmVyaWZpZXMgdGhhdCBzaWduYWxpbmcgcG9pbnQgMCBvZiBh IHRpbWxpbmUgc3luY29iaiB3b3JrcyB3aXRoIGJvdGgiCisJIiB0aW1lbGluZSAmIGxlZ2FjeSB3 YWl0IG9wZXJhdGlvbnMiOworc3RhdGljIHZvaWQKK3Rlc3Rfc2lnbmFsX3BvaW50XzAoaW50IGZk KQoreworCXVpbnQzMl90IHN5bmNvYmogPSBzeW5jb2JqX2NyZWF0ZShmZCwgMCk7CisJdWludDMy X3QgZmxhZ3MgPSBEUk1fU1lOQ09CSl9XQUlUX0ZMQUdTX1dBSVRfRk9SX1NVQk1JVDsKKwl1aW50 NjRfdCBwb2ludCA9IDA7CisKKwlzeW5jb2JqX3RpbWVsaW5lX3NpZ25hbChmZCwgJnN5bmNvYmos ICZwb2ludCwgMSk7CisKKwlpZ3RfYXNzZXJ0KHN5bmNvYmpfdGltZWxpbmVfd2FpdChmZCwgJnN5 bmNvYmosICZwb2ludCwgMSwgMCwgMCwgTlVMTCkpOworCWlndF9hc3NlcnQoc3luY29ial93YWl0 KGZkLCAmc3luY29iaiwgMSwgMCwgZmxhZ3MsIE5VTEwpKTsKKworCXN5bmNvYmpfZGVzdHJveShm ZCwgc3luY29iaik7Cit9CisKIHN0YXRpYyBjb25zdCBjaGFyICp0ZXN0X211bHRpX3dhaXRfZGVz YyA9CiAJIlZlcmlmaWVzIHdhaXRpbmcgb24gYSBsaXN0IG9mIHRpbWVsaW5lIHN5bmNvYmpzIjsK IHN0YXRpYyB2b2lkCkBAIC05MjEsNiArMTAwOSwyNzMgQEAgdGVzdF93YWl0X2ludGVycnVwdGVk KGludCBmZCwgdWludDMyX3QgdGVzdF9mbGFncykKIAljbG9zZSh0aW1lbGluZSk7CiB9CiAKK2Nv bnN0IGNoYXIgKnRlc3RfaG9zdF9zaWduYWxfcG9pbnRzX2Rlc2MgPQorCSJWZXJpZmllcyB0aGF0 IGFzIHdlIHNpZ25hbCBwb2ludHMgZnJvbSB0aGUgaG9zdCwgdGhlIHN5bmNvYmogdGltZWxpbmUi CisJIiB2YWx1ZSBpbmNyZW1lbnRzIGFuZCB0aGF0IHdhaXRzIGZvciBzdWJtaXRzL3NpZ25hbHMg d29ya3MgcHJvcGVybHkuIjsKK3N0YXRpYyB2b2lkCit0ZXN0X2hvc3Rfc2lnbmFsX3BvaW50cyhp bnQgZmQpCit7CisJdWludDMyX3Qgc3luY29iaiA9IHN5bmNvYmpfY3JlYXRlKGZkLCAwKTsKKwl1 aW50NjRfdCB2YWx1ZSA9IDA7CisJaW50IGk7CisKKwlmb3IgKGkgPSAwOyBpIDwgMTAwOyBpKysp IHsKKwkJdWludDY0X3QgcXVlcnlfdmFsdWUgPSAwOworCisJCXZhbHVlICs9IHJhbmQoKTsKKwor CQlzeW5jb2JqX3RpbWVsaW5lX3NpZ25hbChmZCwgJnN5bmNvYmosICZ2YWx1ZSwgMSk7CisKKwkJ c3luY29ial90aW1lbGluZV9xdWVyeShmZCwgJnN5bmNvYmosICZxdWVyeV92YWx1ZSwgMSk7CisJ CWlndF9hc3NlcnRfZXEocXVlcnlfdmFsdWUsIHZhbHVlKTsKKworCQlpZ3RfYXNzZXJ0KHN5bmNv YmpfdGltZWxpbmVfd2FpdChmZCwgJnN5bmNvYmosICZxdWVyeV92YWx1ZSwKKwkJCQkJCSAxLCAw LCBXQUlUX0ZPUl9TVUJNSVQsIE5VTEwpKTsKKworCQlxdWVyeV92YWx1ZSAtPSAxOworCQlpZ3Rf YXNzZXJ0KHN5bmNvYmpfdGltZWxpbmVfd2FpdChmZCwgJnN5bmNvYmosICZxdWVyeV92YWx1ZSwK KwkJCQkJCSAxLCAwLCBXQUlUX0FMTCwgTlVMTCkpOworCX0KKworCXN5bmNvYmpfZGVzdHJveShm ZCwgc3luY29iaik7Cit9CisKK2NvbnN0IGNoYXIgKnRlc3RfZGV2aWNlX3NpZ25hbF91bm9yZGVy ZWRfZGVzYyA9CisJIlZlcmlmaWVzIHRoYXQgYSBkZXZpY2Ugc2lnbmFsaW5nIGZlbmNlcyBvdXQg b2Ygb3JkZXIgb24gdGhlIHRpbWVsaW5lIgorCSIgc3RpbGwgaW5jcmVtZW50cyB0aGUgdGltZWxp bmUgbW9ub3RvbmljYWxseSBhbmQgdGhhdCB3YWl0cyB3b3JrIgorCSIgcHJvcGVybHkuIjsKK3N0 YXRpYyB2b2lkCit0ZXN0X2RldmljZV9zaWduYWxfdW5vcmRlcmVkKGludCBmZCkKK3sKKwl1aW50 MzJfdCBzeW5jb2JqID0gc3luY29ial9jcmVhdGUoZmQsIDApOworCWludCBwb2ludF9pbmRpY2Vz W10gPSB7IDAsIDIsIDEsIDQsIDMgfTsKKwlib29sIHNpZ25hbGVkW0FSUkFZX1NJWkUocG9pbnRf aW5kaWNlcyldID0ge307CisJaW50IGZlbmNlc1tBUlJBWV9TSVpFKHBvaW50X2luZGljZXMpXTsK KwlpbnQgdGltZWxpbmUgPSBzd19zeW5jX3RpbWVsaW5lX2NyZWF0ZSgpOworCXVpbnQ2NF90IHZh bHVlID0gMDsKKwlpbnQgaSwgajsKKworCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGZlbmNl cyk7IGkrKykgeworCQlmZW5jZXNbcG9pbnRfaW5kaWNlc1tpXV0gPSBzd19zeW5jX3RpbWVsaW5l X2NyZWF0ZV9mZW5jZSh0aW1lbGluZSwgaSArIDEpOworCX0KKworCWZvciAoaSA9IDA7IGkgPCBB UlJBWV9TSVpFKGZlbmNlcyk7IGkrKykgeworCQl1aW50MzJfdCB0bXBfc3luY29iaiA9IHN5bmNv YmpfY3JlYXRlKGZkLCAwKTsKKworCQlzeW5jb2JqX2ltcG9ydF9zeW5jX2ZpbGUoZmQsIHRtcF9z eW5jb2JqLCBmZW5jZXNbaV0pOworCQlzeW5jb2JqX2JpbmFyeV90b190aW1lbGluZShmZCwgc3lu Y29iaiwgaSArIDEsIHRtcF9zeW5jb2JqKTsKKwkJc3luY29ial9kZXN0cm95KGZkLCB0bXBfc3lu Y29iaik7CisJfQorCisJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoZmVuY2VzKTsgaSsrKSB7 CisJCXVpbnQ2NF90IHF1ZXJ5X3ZhbHVlID0gMDsKKwkJdWludDY0X3QgbWluX3ZhbHVlID0gMDsK KworCQlzd19zeW5jX3RpbWVsaW5lX2luYyh0aW1lbGluZSwgMSk7CisKKwkJc2lnbmFsZWRbcG9p bnRfaW5kaWNlc1tpXV0gPSB0cnVlOworCisJCS8qCisJCSAqIENvbXB1dGUgYSBtaW5pbXVtIHZh bHVlIG9mIHRoZSB0aW1lbGluZSBiYXNlZCBvZgorCQkgKiB0aGUgc21hbGxlc3Qgc2lnbmFsZWQg cG9pbnQuCisJCSAqLworCQlmb3IgKGogPSAwOyBqIDwgQVJSQVlfU0laRShzaWduYWxlZCk7IGor KykgeworCQkJaWYgKCFzaWduYWxlZFtqXSkKKwkJCQlicmVhazsKKwkJCW1pbl92YWx1ZSA9IGo7 CisJCX0KKworCQlzeW5jb2JqX3RpbWVsaW5lX3F1ZXJ5KGZkLCAmc3luY29iaiwgJnF1ZXJ5X3Zh bHVlLCAxKTsKKwkJaWd0X2Fzc2VydChxdWVyeV92YWx1ZSA+PSBtaW5fdmFsdWUpOworCQlpZ3Rf YXNzZXJ0KHF1ZXJ5X3ZhbHVlID49IHZhbHVlKTsKKworCQlpZ3RfZGVidWcoInNpZ25hbGluZyBw b2ludCAlaSwgdGltZWxpbmUgdmFsdWUgPSAlIiBQUkl1NjQgIlxuIiwKKwkJCSAgcG9pbnRfaW5k aWNlc1tpXSArIDEsIHF1ZXJ5X3ZhbHVlKTsKKworCQl2YWx1ZSA9IG1heChxdWVyeV92YWx1ZSwg dmFsdWUpOworCisJCWlndF9hc3NlcnQoc3luY29ial90aW1lbGluZV93YWl0KGZkLCAmc3luY29i aiwgJnF1ZXJ5X3ZhbHVlLAorCQkJCQkJIDEsIDAsIFdBSVRfRk9SX1NVQk1JVCwgTlVMTCkpOwor CisJCWlndF9hc3NlcnQoc3luY29ial90aW1lbGluZV93YWl0KGZkLCAmc3luY29iaiwgJnF1ZXJ5 X3ZhbHVlLAorCQkJCQkJIDEsIDAsIFdBSVRfQUxMLCBOVUxMKSk7CisJfQorCisJZm9yIChpID0g MDsgaSA8IEFSUkFZX1NJWkUoZmVuY2VzKTsgaSsrKQorCQljbG9zZShmZW5jZXNbaV0pOworCisJ c3luY29ial9kZXN0cm95KGZkLCBzeW5jb2JqKTsKKwljbG9zZSh0aW1lbGluZSk7Cit9CisKK2Nv bnN0IGNoYXIgKnRlc3RfZGV2aWNlX3N1Ym1pdF91bm9yZGVyZWRfZGVzYyA9CisJIlZlcmlmaWVz IHRoYXQgc3VibWl0dGluZyBvdXQgb2Ygb3JkZXIgZG9lc24ndCBicmVhayB0aGUgdGltZWxpbmUu IjsKK3N0YXRpYyB2b2lkCit0ZXN0X2RldmljZV9zdWJtaXRfdW5vcmRlcmVkKGludCBmZCkKK3sK Kwl1aW50MzJfdCBzeW5jb2JqID0gc3luY29ial9jcmVhdGUoZmQsIDApOworCXVpbnQ2NF90IHBv aW50c1tdID0geyAxLCA1LCAzLCA2LCA3IH07CisJaW50IHRpbWVsaW5lID0gc3dfc3luY190aW1l bGluZV9jcmVhdGUoKTsKKwl1aW50NjRfdCBxdWVyeV92YWx1ZTsKKwlpbnQgaTsKKworCWZvciAo aSA9IDA7IGkgPCBBUlJBWV9TSVpFKHBvaW50cyk7IGkrKykgeworCQlpbnQgZmVuY2UgPSBzd19z eW5jX3RpbWVsaW5lX2NyZWF0ZV9mZW5jZSh0aW1lbGluZSwgaSArIDEpOworCQl1aW50MzJfdCB0 bXBfc3luY29iaiA9IHN5bmNvYmpfY3JlYXRlKGZkLCAwKTsKKworCQlzeW5jb2JqX2ltcG9ydF9z eW5jX2ZpbGUoZmQsIHRtcF9zeW5jb2JqLCBmZW5jZSk7CisJCXN5bmNvYmpfYmluYXJ5X3RvX3Rp bWVsaW5lKGZkLCBzeW5jb2JqLCBwb2ludHNbaV0sIHRtcF9zeW5jb2JqKTsKKwkJY2xvc2UoZmVu Y2UpOworCQlzeW5jb2JqX2Rlc3Ryb3koZmQsIHRtcF9zeW5jb2JqKTsKKwl9CisKKwkvKgorCSAq IFNpZ25hbCBwb2ludHMgMSwgNSAmIDMuIFRoZXJlIGFyZSBubyBvdGhlciBwb2ludHMgPD0gNSBz bworCSAqIHdhaXRpbmcgb24gNSBzaG91bGQgcmV0dXJuIGltbWVkaWF0ZWx5IGZvciBzdWJtaXNz aW9uICYKKwkgKiBzaWduYWxpbmcuCisJICovCisJc3dfc3luY190aW1lbGluZV9pbmModGltZWxp bmUsIDMpOworCisJc3luY29ial90aW1lbGluZV9xdWVyeShmZCwgJnN5bmNvYmosICZxdWVyeV92 YWx1ZSwgMSk7CisJaWd0X2Fzc2VydF9lcShxdWVyeV92YWx1ZSwgNSk7CisKKwlpZ3RfYXNzZXJ0 KHN5bmNvYmpfdGltZWxpbmVfd2FpdChmZCwgJnN5bmNvYmosICZxdWVyeV92YWx1ZSwKKwkJCQkJ IDEsIDAsIFdBSVRfRk9SX1NVQk1JVCwgTlVMTCkpOworCisJaWd0X2Fzc2VydChzeW5jb2JqX3Rp bWVsaW5lX3dhaXQoZmQsICZzeW5jb2JqLCAmcXVlcnlfdmFsdWUsCisJCQkJCSAxLCAwLCBXQUlU X0FMTCwgTlVMTCkpOworCisJc3luY29ial9kZXN0cm95KGZkLCBzeW5jb2JqKTsKKwljbG9zZSh0 aW1lbGluZSk7Cit9CisKK2NvbnN0IGNoYXIgKnRlc3RfaG9zdF9zaWduYWxfb3JkZXJlZF9kZXNj ID0KKwkiVmVyaWZpZXMgdGhhdCB0aGUgaG9zdCBzaWduYWxpbmcgZmVuY2VzIG91dCBvZiBvcmRl ciBvbiB0aGUgdGltZWxpbmUiCisJIiBzdGlsbCBpbmNyZW1lbnRzIHRoZSB0aW1lbGluZSBtb25v dG9uaWNhbGx5IGFuZCB0aGF0IHdhaXRzIHdvcmsiCisJIiBwcm9wZXJseS4iOworc3RhdGljIHZv aWQKK3Rlc3RfaG9zdF9zaWduYWxfb3JkZXJlZChpbnQgZmQpCit7CisJdWludDMyX3Qgc3luY29i aiA9IHN5bmNvYmpfY3JlYXRlKGZkLCAwKTsKKwlpbnQgdGltZWxpbmUgPSBzd19zeW5jX3RpbWVs aW5lX2NyZWF0ZSgpOworCXVpbnQ2NF90IGhvc3Rfc2lnbmFsX3ZhbHVlID0gOCwgcXVlcnlfdmFs dWU7CisJaW50IGk7CisKKwlmb3IgKGkgPSAwOyBpIDwgNTsgaSsrKSB7CisJCWludCBmZW5jZSA9 IHN3X3N5bmNfdGltZWxpbmVfY3JlYXRlX2ZlbmNlKHRpbWVsaW5lLCBpICsgMSk7CisJCXVpbnQz Ml90IHRtcF9zeW5jb2JqID0gc3luY29ial9jcmVhdGUoZmQsIDApOworCisJCXN5bmNvYmpfaW1w b3J0X3N5bmNfZmlsZShmZCwgdG1wX3N5bmNvYmosIGZlbmNlKTsKKwkJc3luY29ial9iaW5hcnlf dG9fdGltZWxpbmUoZmQsIHN5bmNvYmosIGkgKyAxLCB0bXBfc3luY29iaik7CisJCXN5bmNvYmpf ZGVzdHJveShmZCwgdG1wX3N5bmNvYmopOworCQljbG9zZShmZW5jZSk7CisJfQorCisJc3dfc3lu Y190aW1lbGluZV9pbmModGltZWxpbmUsIDMpOworCisJc3luY29ial90aW1lbGluZV9xdWVyeShm ZCwgJnN5bmNvYmosICZxdWVyeV92YWx1ZSwgMSk7CisJaWd0X2Fzc2VydF9lcShxdWVyeV92YWx1 ZSwgMyk7CisKKwlzeW5jb2JqX3RpbWVsaW5lX3NpZ25hbChmZCwgJnN5bmNvYmosICZob3N0X3Np Z25hbF92YWx1ZSwgMSk7CisKKwlzeW5jb2JqX3RpbWVsaW5lX3F1ZXJ5KGZkLCAmc3luY29iaiwg JnF1ZXJ5X3ZhbHVlLCAxKTsKKwlpZ3RfYXNzZXJ0X2VxKHF1ZXJ5X3ZhbHVlLCAzKTsKKworCXN3 X3N5bmNfdGltZWxpbmVfaW5jKHRpbWVsaW5lLCA1KTsKKworCXN5bmNvYmpfdGltZWxpbmVfcXVl cnkoZmQsICZzeW5jb2JqLCAmcXVlcnlfdmFsdWUsIDEpOworCWlndF9hc3NlcnRfZXEocXVlcnlf dmFsdWUsIDgpOworCisJc3luY29ial9kZXN0cm95KGZkLCBzeW5jb2JqKTsKKwljbG9zZSh0aW1l bGluZSk7Cit9CisKK3N0cnVjdCBjaGVja2VyX3RocmVhZF9kYXRhIHsKKwlpbnQgZmQ7CisJdWlu dDMyX3Qgc3luY29iajsKKwlib29sIHJ1bm5pbmc7CisJYm9vbCBzdGFydGVkOworfTsKKworc3Rh dGljIHZvaWQgKgorY2hlY2tlcl90aHJlYWRfZnVuYyh2b2lkICpfZGF0YSkKK3sKKwlzdHJ1Y3Qg Y2hlY2tlcl90aHJlYWRfZGF0YSAqZGF0YSA9IF9kYXRhOworCXVpbnQ2NF90IHZhbHVlLCBsYXN0 X3ZhbHVlID0gMDsKKworCXdoaWxlIChSRUFEX09OQ0UoZGF0YS0+cnVubmluZykpIHsKKwkJc3lu Y29ial90aW1lbGluZV9xdWVyeShkYXRhLT5mZCwgJmRhdGEtPnN5bmNvYmosICZ2YWx1ZSwgMSk7 CisKKwkJZGF0YS0+c3RhcnRlZCA9IHRydWU7CisKKwkJaWd0X2Fzc2VydChsYXN0X3ZhbHVlIDw9 IHZhbHVlKTsKKwkJbGFzdF92YWx1ZSA9IHZhbHVlOworCX0KKworCXJldHVybiBOVUxMOworfQor Citjb25zdCBjaGFyICp0ZXN0XzMyYml0c19saW1pdF9kZXNjID0KKwkiVmVyaWZpZXMgdGhhdCBz aWduYWxpbmcgYXJvdW5kIHRoZSBpbnQzMl90IGxpbWl0LiBGb3IgY29tcGF0aWJpbGl0eSIKKwki IHJlYXNvbiwgdGhlIGhhbmRsaW5nIG9mIHNlcW5vcyBpbiB0aGUgZG1hLWZlbmNlcyBjYW4gY29u c2lkZXIgYSBzZXFub0EiCisJIiBpcyBwcmlvciBzZXFub0IgZXZlbiB0aG91Z2ggc2Vxbm9BID4g c2Vxbm9CLiI7CisvKgorICogRml4ZWQgaW4ga2VybmVsIGNvbW1pdCA6CisgKgorICogY29tbWl0 IGIzMTJkOGNhM2E3Y2ViZTE5OTQxZDk2OWE1MWYyYjdmODk5YjgxZTIKKyAqIEF1dGhvcjogQ2hy aXN0aWFuIEvDtm5pZyA8Y2hyaXN0aWFuLmtvZW5pZ0BhbWQuY29tPgorICogRGF0ZTogICBXZWQg Tm92IDE0IDE2OjExOjA2IDIwMTggKzAxMDAKKyAqCisgKiAgICBkbWEtYnVmOiBtYWtlIGZlbmNl IHNlcXVlbmNlIG51bWJlcnMgNjQgYml0IHYyCisgKgorICovCitzdGF0aWMgdm9pZAordGVzdF8z MmJpdHNfbGltaXQoaW50IGZkKQoreworCXN0cnVjdCBjaGVja2VyX3RocmVhZF9kYXRhIHRocmVh ZF9kYXRhID0geworCQkuZmQgPSBmZCwKKwkJLnN5bmNvYmogPSBzeW5jb2JqX2NyZWF0ZShmZCwg MCksCisJCS5ydW5uaW5nID0gdHJ1ZSwKKwkJLnN0YXJ0ZWQgPSBmYWxzZSwKKwl9OworCWludCB0 aW1lbGluZSA9IHN3X3N5bmNfdGltZWxpbmVfY3JlYXRlKCk7CisJdWludDY0X3QgbGltaXRfZGlm ZiA9ICgxdWxsIDw8IDMxKSAtIDE7CisJdWludDY0X3QgcG9pbnRzW10gPSB7IDEsIDUsIGxpbWl0 X2RpZmYgKyA1LCBsaW1pdF9kaWZmICsgNiwgbGltaXRfZGlmZiAqIDIsIH07CisJcHRocmVhZF90 IHRocmVhZDsKKwl1aW50NjRfdCB2YWx1ZSwgbGFzdF92YWx1ZTsKKwlpbnQgaTsKKworCWlndF9h c3NlcnRfZXEocHRocmVhZF9jcmVhdGUoJnRocmVhZCwgTlVMTCwgY2hlY2tlcl90aHJlYWRfZnVu YywgJnRocmVhZF9kYXRhKSwgMCk7CisKKwl3aGlsZSAoIXRocmVhZF9kYXRhLnN0YXJ0ZWQpOwor CisJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUocG9pbnRzKTsgaSsrKSB7CisJCWludCBmZW5j ZSA9IHN3X3N5bmNfdGltZWxpbmVfY3JlYXRlX2ZlbmNlKHRpbWVsaW5lLCBpICsgMSk7CisJCXVp bnQzMl90IHRtcF9zeW5jb2JqID0gc3luY29ial9jcmVhdGUoZmQsIDApOworCisJCXN5bmNvYmpf aW1wb3J0X3N5bmNfZmlsZShmZCwgdG1wX3N5bmNvYmosIGZlbmNlKTsKKwkJc3luY29ial9iaW5h cnlfdG9fdGltZWxpbmUoZmQsIHRocmVhZF9kYXRhLnN5bmNvYmosIHBvaW50c1tpXSwgdG1wX3N5 bmNvYmopOworCQljbG9zZShmZW5jZSk7CisJCXN5bmNvYmpfZGVzdHJveShmZCwgdG1wX3N5bmNv YmopOworCX0KKworCWxhc3RfdmFsdWUgPSAwOworCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpF KHBvaW50cyk7IGkrKykgeworCQlzd19zeW5jX3RpbWVsaW5lX2luYyh0aW1lbGluZSwgMSk7CisK KwkJc3luY29ial90aW1lbGluZV9xdWVyeShmZCwgJnRocmVhZF9kYXRhLnN5bmNvYmosICZ2YWx1 ZSwgMSk7CisJCWlndF9hc3NlcnQobGFzdF92YWx1ZSA8PSB2YWx1ZSk7CisKKwkJbGFzdF92YWx1 ZSA9IHZhbHVlOworCX0KKworCXRocmVhZF9kYXRhLnJ1bm5pbmcgPSBmYWxzZTsKKwlwdGhyZWFk X2pvaW4odGhyZWFkLCBOVUxMKTsKKworCXN5bmNvYmpfZGVzdHJveShmZCwgdGhyZWFkX2RhdGEu c3luY29iaik7CisJY2xvc2UodGltZWxpbmUpOworfQorCiBzdGF0aWMgYm9vbAogaGFzX3N5bmNv YmpfdGltZWxpbmVfd2FpdChpbnQgZmQpCiB7CkBAIC0xMDEwLDYgKzEzNjUsMTQgQEAgaWd0X21h aW4KIAlpZ3Rfc3VidGVzdCgiaW52YWxpZC10cmFuc2Zlci1iYWQtcGFkIikKIAkJdGVzdF90cmFu c2Zlcl9iYWRfcGFkKGZkKTsKIAorCWlndF9kZXNjcmliZSh0ZXN0X3RyYW5zZmVyX25vbmV4aXN0 ZW50X3BvaW50X2Rlc2MpOworCWlndF9zdWJ0ZXN0KCJpbnZhbGlkLXRyYW5zZmVyLW5vbi1leGlz dGVudC1wb2ludCIpCisJCXRlc3RfdHJhbnNmZXJfbm9uZXhpc3RlbnRfcG9pbnQoZmQpOworCisJ aWd0X2Rlc2NyaWJlKHRlc3RfdHJhbnNmZXJfcG9pbnRfZGVzYyk7CisJaWd0X3N1YnRlc3QoInRy YW5zZmVyLXRpbWVsaW5lLXBvaW50IikKKwkJdGVzdF90cmFuc2Zlcl9wb2ludChmZCk7CisKIAlm b3IgKHVuc2lnbmVkIGZsYWdzID0gMDsgZmxhZ3MgPCBXQUlUX0ZMQUdTX01BWDsgZmxhZ3MrKykg ewogCQlpbnQgZXJyOwogCkBAIC0xMDc0LDYgKzE0MzcsMTAgQEAgaWd0X21haW4KIAlpZ3Rfc3Vi dGVzdCgic2lnbmFsIikKIAkJdGVzdF9zaWduYWwoZmQpOwogCisJaWd0X2Rlc2NyaWJlKHRlc3Rf c2lnbmFsX3BvaW50XzBfZGVzYyk7CisJaWd0X3N1YnRlc3QoInNpZ25hbC1wb2ludC0wIikKKwkJ dGVzdF9zaWduYWxfcG9pbnRfMChmZCk7CisKIAlmb3IgKHVuc2lnbmVkIGZsYWdzID0gMDsgZmxh Z3MgPCBXQUlUX0ZMQUdTX01BWDsgZmxhZ3MrKykgewogCQlpbnQgZXJyOwogCkBAIC0xMTQ3LDQg KzE1MTQsMjQgQEAgaWd0X21haW4KIAlpZ3RfZGVzY3JpYmUodGVzdF93YWl0X2ludGVycnVwdGVk X2Rlc2MpOwogCWlndF9zdWJ0ZXN0KCJ3YWl0LWFsbC1pbnRlcnJ1cHRlZCIpCiAJCXRlc3Rfd2Fp dF9pbnRlcnJ1cHRlZChmZCwgV0FJVF9BTEwpOworCisJaWd0X2Rlc2NyaWJlKHRlc3RfaG9zdF9z aWduYWxfcG9pbnRzX2Rlc2MpOworCWlndF9zdWJ0ZXN0KCJob3N0LXNpZ25hbC1wb2ludHMiKQor CQl0ZXN0X2hvc3Rfc2lnbmFsX3BvaW50cyhmZCk7CisKKwlpZ3RfZGVzY3JpYmUodGVzdF9kZXZp Y2Vfc2lnbmFsX3Vub3JkZXJlZF9kZXNjKTsKKwlpZ3Rfc3VidGVzdCgiZGV2aWNlLXNpZ25hbC11 bm9yZGVyZWQiKQorCQl0ZXN0X2RldmljZV9zaWduYWxfdW5vcmRlcmVkKGZkKTsKKworCWlndF9k ZXNjcmliZSh0ZXN0X2RldmljZV9zdWJtaXRfdW5vcmRlcmVkX2Rlc2MpOworCWlndF9zdWJ0ZXN0 KCJkZXZpY2Utc3VibWl0LXVub3JkZXJlZCIpCisJCXRlc3RfZGV2aWNlX3N1Ym1pdF91bm9yZGVy ZWQoZmQpOworCisJaWd0X2Rlc2NyaWJlKHRlc3RfaG9zdF9zaWduYWxfb3JkZXJlZF9kZXNjKTsK KwlpZ3Rfc3VidGVzdCgiaG9zdC1zaWduYWwtb3JkZXJlZCIpCisJCXRlc3RfaG9zdF9zaWduYWxf b3JkZXJlZChmZCk7CisKKwlpZ3RfZGVzY3JpYmUodGVzdF8zMmJpdHNfbGltaXRfZGVzYyk7CisJ aWd0X3N1YnRlc3QoIjMyYml0cy1saW1pdCIpCisJCXRlc3RfMzJiaXRzX2xpbWl0KGZkKTsKIH0K LS0gCjIuMjQuMAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KaWd0LWRldiBtYWlsaW5nIGxpc3QKaWd0LWRldkBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0 cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pZ3QtZGV2