From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTPS id 22C156E045 for ; Wed, 17 Apr 2019 12:43:49 +0000 (UTC) From: Simon Ser Date: Wed, 17 Apr 2019 15:43:55 +0300 Message-Id: <20190417124359.12293-4-simon.ser@intel.com> In-Reply-To: <20190417124359.12293-1-simon.ser@intel.com> References: <20190417124359.12293-1-simon.ser@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t v6 3/7] tests/kms_chamelium: test we receive a signal from both audio channels 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: VGhpcyBjb21taXQgdXBkYXRlcyB0aGUgYXVkaW8gdGVzdCB0byBtYWtlIHN1cmUgd2UgcmVjZWl2 ZSBhIHNpZ25hbCBmcm9tIGJvdGgKYXVkaW8gY2hhbm5lbHMuIEhvd2V2ZXIgdGhpcyBjb21taXQg ZG9lc24ndCBjaGVjayB0aGF0IGxlZnQgYW5kIHJpZ2h0IGNoYW5uZWxzCmFyZSBub3Qgc3dhcHBl ZC4gU3VjaCBhIGNoZWNrIHJlcXVpcmVzIHNvbWUgbW9yZSB3b3JrIChiZWNhdXNlIHRoZSBDaGFt ZWxpdW0KZGV2aWNlIGRvZXMgc3dhcCBsZWZ0IGFuZCByaWdodCBjaGFubmVscykgYW5kIHdpbGwg YmUgaW1wbGVtZW50ZWQgaW4gYSBmdXR1cmUKY29tbWl0LgoKVGhpcyBjb21taXQgYWRkcyBhIG5l dyBjaGFubmVsIGFyZ3VtZW50IHRvIGF1ZGlvX3NpZ25hbF9hZGRfZnJlcXVlbmN5LCB0byBhZGQK YSBmcmVxdWVuY3kgdG8gYSBzaW5nbGUgY2hhbm5lbCBvbmx5LgoKU29tZSBsaWdodCByZWZhY3Rv cmluZyBoYXMgYmVlbiBwZXJmb3JtZWQgKGEgcHJvcGVyIGF1ZGlvX3NpZ25hbF9kZWluaXQKZnVu Y3Rpb24gaGFzIGJlZW4gaW50cm9kdWNlZCkgYW5kIGxvZ2dpbmcgaGFzIGJlZW4gaW1wcm92ZWQu CgpTaWduZWQtb2ZmLWJ5OiBTaW1vbiBTZXIgPHNpbW9uLnNlckBpbnRlbC5jb20+Ci0tLQogbGli L2lndF9hbHNhLmMgICAgICAgIHwgIDI2ICsrKysrKystLQogbGliL2lndF9hdWRpby5jICAgICAg IHwgMTE5ICsrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLQogbGliL2ln dF9hdWRpby5oICAgICAgIHwgIDExICsrLS0KIHRlc3RzL2ttc19jaGFtZWxpdW0uYyB8ICA1NiAr KysrKysrKysrKystLS0tLS0tLQogNCBmaWxlcyBjaGFuZ2VkLCAxMzcgaW5zZXJ0aW9ucygrKSwg NzUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbGliL2lndF9hbHNhLmMgYi9saWIvaWd0X2Fs c2EuYwppbmRleCBmYzZkMzM2Yi4uYTQ3ODY4NmEgMTAwNjQ0Ci0tLSBhL2xpYi9pZ3RfYWxzYS5j CisrKyBiL2xpYi9pZ3RfYWxzYS5jCkBAIC0xODIsNiArMTgyLDggQEAgc3RhdGljIGNoYXIgKmFs c2FfcmVzb2x2ZV9pbmRlbnRpZmllcihjb25zdCBjaGFyICpkZXZpY2VfbmFtZSwgaW50IHNraXAp CiAJCQkJCWNvbnRpbnVlOwogCQkJCX0KIAorCQkJCWlndF9kZWJ1ZygiTWF0Y2hlZCBkZXZpY2Ug XCIlc1wiXG4iLCBwY21fbmFtZSk7CisKIAkJCQlzbnByaW50ZihuYW1lLCBzaXplb2YobmFtZSks ICJodzolZCwlZCIsIGNhcmQsCiAJCQkJCSBkZXYpOwogCkBAIC0zMjksNiArMzMxLDkgQEAgc3Rh dGljIGJvb2wgYWxzYV90ZXN0X2NvbmZpZ3VyYXRpb24oc25kX3BjbV90ICpoYW5kbGUsIGludCBj aGFubmVscywKIHsKIAlzbmRfcGNtX2h3X3BhcmFtc190ICpwYXJhbXM7CiAJaW50IHJldDsKKwl1 bnNpZ25lZCBpbnQgbWluX2NoYW5uZWxzLCBtYXhfY2hhbm5lbHM7CisJdW5zaWduZWQgaW50IG1p bl9yYXRlLCBtYXhfcmF0ZTsKKwlpbnQgbWluX3JhdGVfZGlyLCBtYXhfcmF0ZV9kaXI7CiAKIAlz bmRfcGNtX2h3X3BhcmFtc19hbGxvY2EoJnBhcmFtcyk7CiAKQEAgLTMzNywxMiArMzQyLDI0IEBA IHN0YXRpYyBib29sIGFsc2FfdGVzdF9jb25maWd1cmF0aW9uKHNuZF9wY21fdCAqaGFuZGxlLCBp bnQgY2hhbm5lbHMsCiAJCXJldHVybiBmYWxzZTsKIAogCXJldCA9IHNuZF9wY21faHdfcGFyYW1z X3Rlc3RfcmF0ZShoYW5kbGUsIHBhcmFtcywgc2FtcGxpbmdfcmF0ZSwgMCk7Ci0JaWYgKHJldCA8 IDApCisJaWYgKHJldCA8IDApIHsKKwkJc25kX3BjbV9od19wYXJhbXNfZ2V0X3JhdGVfbWluKHBh cmFtcywgJm1pbl9yYXRlLCAmbWluX3JhdGVfZGlyKTsKKwkJc25kX3BjbV9od19wYXJhbXNfZ2V0 X3JhdGVfbWF4KHBhcmFtcywgJm1heF9yYXRlLCAmbWF4X3JhdGVfZGlyKTsKKwkJaWd0X2RlYnVn KCJPdXRwdXQgZGV2aWNlIHN1cHBvcnRzIHJhdGVzIGJldHdlZW4gJXUgYW5kICV1LCAiCisJCQkg ICJyZXF1ZXN0ZWQgJWRcbiIsCisJCQkgIG1pbl9yYXRlLCBtYXhfcmF0ZSwgc2FtcGxpbmdfcmF0 ZSk7CiAJCXJldHVybiBmYWxzZTsKKwl9CiAKIAlyZXQgPSBzbmRfcGNtX2h3X3BhcmFtc190ZXN0 X2NoYW5uZWxzKGhhbmRsZSwgcGFyYW1zLCBjaGFubmVscyk7Ci0JaWYgKHJldCA8IDApCisJaWYg KHJldCA8IDApIHsKKwkJc25kX3BjbV9od19wYXJhbXNfZ2V0X2NoYW5uZWxzX21pbihwYXJhbXMs ICZtaW5fY2hhbm5lbHMpOworCQlzbmRfcGNtX2h3X3BhcmFtc19nZXRfY2hhbm5lbHNfbWF4KHBh cmFtcywgJm1heF9jaGFubmVscyk7CisJCWlndF9kZWJ1ZygiT3V0cHV0IGRldmljZSBzdXBwb3J0 cyBiZXR3ZWVuICV1IGFuZCAiCisJCQkgICIldSBjaGFubmVscywgcmVxdWVzdGVkICVkXG4iLAor CQkJICBtaW5fY2hhbm5lbHMsIG1heF9jaGFubmVscywgY2hhbm5lbHMpOwogCQlyZXR1cm4gZmFs c2U7CisJfQogCiAJcmV0dXJuIHRydWU7CiB9CkBAIC00MDksMTMgKzQyNiwxNiBAQCB2b2lkIGFs c2FfY29uZmlndXJlX291dHB1dChzdHJ1Y3QgYWxzYSAqYWxzYSwgaW50IGNoYW5uZWxzLAogCXNu ZF9wY21fdCAqaGFuZGxlOwogCWludCByZXQ7CiAJaW50IGk7CisJaW50IHNvZnRfcmVzYW1wbGUg PSAwOyAvKiBEb24ndCBhbGxvdyBBTFNBIHRvIHJlc2FtcGxlICovCisJdW5zaWduZWQgaW50IGxh dGVuY3kgPSAwOwogCiAJZm9yIChpID0gMDsgaSA8IGFsc2EtPm91dHB1dF9oYW5kbGVzX2NvdW50 OyBpKyspIHsKIAkJaGFuZGxlID0gYWxzYS0+b3V0cHV0X2hhbmRsZXNbaV07CiAKIAkJcmV0ID0g c25kX3BjbV9zZXRfcGFyYW1zKGhhbmRsZSwgU05EX1BDTV9GT1JNQVRfUzE2X0xFLAogCQkJCQkg U05EX1BDTV9BQ0NFU1NfUldfSU5URVJMRUFWRUQsCi0JCQkJCSBjaGFubmVscywgc2FtcGxpbmdf cmF0ZSwgMCwgMCk7CisJCQkJCSBjaGFubmVscywgc2FtcGxpbmdfcmF0ZSwKKwkJCQkJIHNvZnRf cmVzYW1wbGUsIGxhdGVuY3kpOwogCQlpZ3RfYXNzZXJ0KHJldCA+PSAwKTsKIAl9CiAKZGlmZiAt LWdpdCBhL2xpYi9pZ3RfYXVkaW8uYyBiL2xpYi9pZ3RfYXVkaW8uYwppbmRleCA3NjI0ZjU2NS4u YTJhNWM1OTQgMTAwNjQ0Ci0tLSBhL2xpYi9pZ3RfYXVkaW8uYworKysgYi9saWIvaWd0X2F1ZGlv LmMKQEAgLTM1LDcgKzM1LDcgQEAKICNpbmNsdWRlICJpZ3RfYXVkaW8uaCIKICNpbmNsdWRlICJp Z3RfY29yZS5oIgogCi0jZGVmaW5lIEZSRVFTX01BWAk4CisjZGVmaW5lIEZSRVFTX01BWCA2NAog CiAvKioKICAqIFNFQ1RJT046aWd0X2F1ZGlvCkBAIC00OSw5ICs0OSwxMCBAQAogCiBzdHJ1Y3Qg YXVkaW9fc2lnbmFsX2ZyZXEgewogCWludCBmcmVxOworCWludCBjaGFubmVsOwogCi0Jc2hvcnQg KnBlcmlvZDsKLQlpbnQgZnJhbWVzOworCWludDE2X3QgKnBlcmlvZDsKKwlzaXplX3QgcGVyaW9k X2xlbjsKIAlpbnQgb2Zmc2V0OwogfTsKIApAQCAtNjAsNyArNjEsNyBAQCBzdHJ1Y3QgYXVkaW9f c2lnbmFsIHsKIAlpbnQgc2FtcGxpbmdfcmF0ZTsKIAogCXN0cnVjdCBhdWRpb19zaWduYWxfZnJl cSBmcmVxc1tGUkVRU19NQVhdOwotCWludCBmcmVxc19jb3VudDsKKwlzaXplX3QgZnJlcXNfY291 bnQ7CiB9OwogCiAvKioKQEAgLTg5LDIxICs5MCwyOCBAQCBzdHJ1Y3QgYXVkaW9fc2lnbmFsICph dWRpb19zaWduYWxfaW5pdChpbnQgY2hhbm5lbHMsIGludCBzYW1wbGluZ19yYXRlKQogICogYXVk aW9fc2lnbmFsX2FkZF9mcmVxdWVuY3k6CiAgKiBAc2lnbmFsOiBUaGUgdGFyZ2V0IHNpZ25hbCBz dHJ1Y3R1cmUKICAqIEBmcmVxdWVuY3k6IFRoZSBmcmVxdWVuY3kgdG8gYWRkIHRvIHRoZSBzaWdu YWwKKyAqIEBjaGFubmVsOiBUaGUgY2hhbm5lbCB0byBhZGQgdGhpcyBmcmVxdWVuY3kgdG8sIG9y IC0xIHRvIGFkZCBpdCB0byBhbGwKKyAqIGNoYW5uZWxzCiAgKgogICogQWRkIGEgZnJlcXVlbmN5 IHRvIHRoZSBzaWduYWwuCiAgKgogICogUmV0dXJuczogQW4gaW50ZWdlciBlcXVhbCB0byB6ZXJv IGZvciBzdWNjZXNzIGFuZCBuZWdhdGl2ZSBmb3IgZmFpbHVyZQogICovCi1pbnQgYXVkaW9fc2ln bmFsX2FkZF9mcmVxdWVuY3koc3RydWN0IGF1ZGlvX3NpZ25hbCAqc2lnbmFsLCBpbnQgZnJlcXVl bmN5KQoraW50IGF1ZGlvX3NpZ25hbF9hZGRfZnJlcXVlbmN5KHN0cnVjdCBhdWRpb19zaWduYWwg KnNpZ25hbCwgaW50IGZyZXF1ZW5jeSwKKwkJCSAgICAgICBpbnQgY2hhbm5lbCkKIHsKLQlpbnQg aW5kZXggPSBzaWduYWwtPmZyZXFzX2NvdW50OworCXNpemVfdCBpbmRleCA9IHNpZ25hbC0+ZnJl cXNfY291bnQ7CisJc3RydWN0IGF1ZGlvX3NpZ25hbF9mcmVxICpmcmVxOwogCi0JaWYgKGluZGV4 ID09IEZSRVFTX01BWCkKLQkJcmV0dXJuIC0xOworCWlndF9hc3NlcnQoaW5kZXggPCBGUkVRU19N QVgpOworCWlndF9hc3NlcnQoY2hhbm5lbCA8IHNpZ25hbC0+Y2hhbm5lbHMpOwogCiAJLyogU3Rh eSB3aXRoaW4gdGhlIE55cXVpc3TigJNTaGFubm9uIHNhbXBsaW5nIHRoZW9yZW0uICovCi0JaWYg KGZyZXF1ZW5jeSA+IHNpZ25hbC0+c2FtcGxpbmdfcmF0ZSAvIDIpCisJaWYgKGZyZXF1ZW5jeSA+ IHNpZ25hbC0+c2FtcGxpbmdfcmF0ZSAvIDIpIHsKKwkJaWd0X2RlYnVnKCJTa2lwcGluZyBmcmVx dWVuY3kgJWQ6IHRvbyBoaWdoIGZvciBhICVkIEh6ICIKKwkJCSAgInNhbXBsaW5nIHJhdGVcbiIs IGZyZXF1ZW5jeSwgc2lnbmFsLT5zYW1wbGluZ19yYXRlKTsKIAkJcmV0dXJuIC0xOworCX0KIAog CS8qIENsaXAgdGhlIGZyZXF1ZW5jeSB0byBhbiBpbnRlZ2VyIG11bHRpcGxlIG9mIHRoZSBzYW1w bGluZyByYXRlLgogCSAqIFRoaXMgdG8gYmUgYWJsZSB0byBzdG9yZSBhIGZ1bGwgcGVyaW9kIG9m IGl0IGFuZCB1c2UgdGhhdCBmb3IKQEAgLTExMSwxMSArMTE5LDE0IEBAIGludCBhdWRpb19zaWdu YWxfYWRkX2ZyZXF1ZW5jeShzdHJ1Y3QgYXVkaW9fc2lnbmFsICpzaWduYWwsIGludCBmcmVxdWVu Y3kpCiAJICovCiAJZnJlcXVlbmN5ID0gc2lnbmFsLT5zYW1wbGluZ19yYXRlIC8gKHNpZ25hbC0+ c2FtcGxpbmdfcmF0ZSAvIGZyZXF1ZW5jeSk7CiAKLQlpZ3RfZGVidWcoIkFkZGluZyB0ZXN0IGZy ZXF1ZW5jeSAlZFxuIiwgZnJlcXVlbmN5KTsKKwlpZ3RfZGVidWcoIkFkZGluZyB0ZXN0IGZyZXF1 ZW5jeSAlZCB0byBjaGFubmVsICVkXG4iLAorCQkgIGZyZXF1ZW5jeSwgY2hhbm5lbCk7CisKKwlm cmVxID0gJnNpZ25hbC0+ZnJlcXNbaW5kZXhdOworCW1lbXNldChmcmVxLCAwLCBzaXplb2YoKmZy ZXEpKTsKKwlmcmVxLT5mcmVxID0gZnJlcXVlbmN5OworCWZyZXEtPmNoYW5uZWwgPSBjaGFubmVs OwogCi0Jc2lnbmFsLT5mcmVxc1tpbmRleF0uZnJlcSA9IGZyZXF1ZW5jeTsKLQlzaWduYWwtPmZy ZXFzW2luZGV4XS5mcmFtZXMgPSAwOwotCXNpZ25hbC0+ZnJlcXNbaW5kZXhdLm9mZnNldCA9IDA7 CiAJc2lnbmFsLT5mcmVxc19jb3VudCsrOwogCiAJcmV0dXJuIDA7CkBAIC0xMzMsMjAgKzE0NCwx NyBAQCB2b2lkIGF1ZGlvX3NpZ25hbF9zeW50aGVzaXplKHN0cnVjdCBhdWRpb19zaWduYWwgKnNp Z25hbCkKIHsKIAlpbnQxNl90ICpwZXJpb2Q7CiAJZG91YmxlIHZhbHVlOwotCWludCBmcmFtZXM7 CisJc2l6ZV90IHBlcmlvZF9sZW47CiAJaW50IGZyZXE7CiAJaW50IGksIGo7CiAKLQlpZiAoc2ln bmFsLT5mcmVxc19jb3VudCA9PSAwKQotCQlyZXR1cm47Ci0KIAlmb3IgKGkgPSAwOyBpIDwgc2ln bmFsLT5mcmVxc19jb3VudDsgaSsrKSB7CiAJCWZyZXEgPSBzaWduYWwtPmZyZXFzW2ldLmZyZXE7 Ci0JCWZyYW1lcyA9IHNpZ25hbC0+c2FtcGxpbmdfcmF0ZSAvIGZyZXE7CisJCXBlcmlvZF9sZW4g PSBzaWduYWwtPnNhbXBsaW5nX3JhdGUgLyBmcmVxOwogCi0JCXBlcmlvZCA9IGNhbGxvYygxLCBm cmFtZXMgKiBzaXplb2Yoc2hvcnQpKTsKKwkJcGVyaW9kID0gY2FsbG9jKDEsIHBlcmlvZF9sZW4g KiBzaXplb2YoaW50MTZfdCkpOwogCi0JCWZvciAoaiA9IDA7IGogPCBmcmFtZXM7IGorKykgewor CQlmb3IgKGogPSAwOyBqIDwgcGVyaW9kX2xlbjsgaisrKSB7CiAJCQl2YWx1ZSA9IDIuMCAqIE1f UEkgKiBmcmVxIC8gc2lnbmFsLT5zYW1wbGluZ19yYXRlICogajsKIAkJCXZhbHVlID0gc2luKHZh bHVlKSAqIElOVDE2X01BWCAvIHNpZ25hbC0+ZnJlcXNfY291bnQ7CiAKQEAgLTE1NCwyNiArMTYy LDM0IEBAIHZvaWQgYXVkaW9fc2lnbmFsX3N5bnRoZXNpemUoc3RydWN0IGF1ZGlvX3NpZ25hbCAq c2lnbmFsKQogCQl9CiAKIAkJc2lnbmFsLT5mcmVxc1tpXS5wZXJpb2QgPSBwZXJpb2Q7Ci0JCXNp Z25hbC0+ZnJlcXNbaV0uZnJhbWVzID0gZnJhbWVzOworCQlzaWduYWwtPmZyZXFzW2ldLnBlcmlv ZF9sZW4gPSBwZXJpb2RfbGVuOwogCX0KIH0KIAogLyoqCi0gKiBhdWRpb19zaWduYWxfc3ludGhl c2l6ZToKKyAqIGF1ZGlvX3NpZ25hbF9kZWluaXQ6CisgKgorICogUmVsZWFzZSB0aGUgc2lnbmFs LgorICovCit2b2lkIGF1ZGlvX3NpZ25hbF9kZWluaXQoc3RydWN0IGF1ZGlvX3NpZ25hbCAqc2ln bmFsKQoreworCWF1ZGlvX3NpZ25hbF9yZXNldChzaWduYWwpOworCWZyZWUoc2lnbmFsKTsKK30K KworLyoqCisgKiBhdWRpb19zaWduYWxfcmVzZXQ6CiAgKiBAc2lnbmFsOiBUaGUgdGFyZ2V0IHNp Z25hbCBzdHJ1Y3R1cmUKICAqCiAgKiBGcmVlIHRoZSByZXNvdXJjZXMgYWxsb2NhdGVkIGJ5IGF1 ZGlvX3NpZ25hbF9zeW50aGVzaXplIGFuZCByZW1vdmUKICAqIHRoZSBwcmV2aW91c2x5LWFkZGVk IGZyZXF1ZW5jaWVzLgogICovCi12b2lkIGF1ZGlvX3NpZ25hbF9jbGVhbihzdHJ1Y3QgYXVkaW9f c2lnbmFsICpzaWduYWwpCit2b2lkIGF1ZGlvX3NpZ25hbF9yZXNldChzdHJ1Y3QgYXVkaW9fc2ln bmFsICpzaWduYWwpCiB7Ci0JaW50IGk7CisJc2l6ZV90IGk7CiAKIAlmb3IgKGkgPSAwOyBpIDwg c2lnbmFsLT5mcmVxc19jb3VudDsgaSsrKSB7Ci0JCWlmIChzaWduYWwtPmZyZXFzW2ldLnBlcmlv ZCkKLQkJCWZyZWUoc2lnbmFsLT5mcmVxc1tpXS5wZXJpb2QpOwotCi0JCW1lbXNldCgmc2lnbmFs LT5mcmVxc1tpXSwgMCwgc2l6ZW9mKHN0cnVjdCBhdWRpb19zaWduYWxfZnJlcSkpOworCQlmcmVl KHNpZ25hbC0+ZnJlcXNbaV0ucGVyaW9kKTsKIAl9CiAKIAlzaWduYWwtPmZyZXFzX2NvdW50ID0g MDsKQEAgLTE4Myw0NCArMTk5LDQ1IEBAIHZvaWQgYXVkaW9fc2lnbmFsX2NsZWFuKHN0cnVjdCBh dWRpb19zaWduYWwgKnNpZ25hbCkKICAqIGF1ZGlvX3NpZ25hbF9maWxsOgogICogQHNpZ25hbDog VGhlIHRhcmdldCBzaWduYWwgc3RydWN0dXJlCiAgKiBAYnVmZmVyOiBUaGUgdGFyZ2V0IGJ1ZmZl ciB0byBmaWxsCi0gKiBAZnJhbWVzOiBUaGUgbnVtYmVyIG9mIGZyYW1lcyB0byBmaWxsCisgKiBA c2FtcGxlczogVGhlIG51bWJlciBvZiBzYW1wbGVzIHRvIGZpbGwKICAqCi0gKiBGaWxsIHRoZSBy ZXF1ZXN0ZWQgbnVtYmVyIG9mIGZyYW1lcyB0byB0aGUgdGFyZ2V0IGJ1ZmZlciB3aXRoIHRoZSBh dWRpbworICogRmlsbCB0aGUgcmVxdWVzdGVkIG51bWJlciBvZiBzYW1wbGVzIHRvIHRoZSB0YXJn ZXQgYnVmZmVyIHdpdGggdGhlIGF1ZGlvCiAgKiBzaWduYWwgZGF0YSAoaW4gaW50ZXJsZWF2ZWQg UzE2X0xFIGZvcm1hdCksIGF0IHRoZSByZXF1ZXN0ZWQgc2FtcGxpbmcgcmF0ZQogICogYW5kIG51 bWJlciBvZiBjaGFubmVscy4KICAqLwotdm9pZCBhdWRpb19zaWduYWxfZmlsbChzdHJ1Y3QgYXVk aW9fc2lnbmFsICpzaWduYWwsIGludDE2X3QgKmJ1ZmZlciwgaW50IGZyYW1lcykKK3ZvaWQgYXVk aW9fc2lnbmFsX2ZpbGwoc3RydWN0IGF1ZGlvX3NpZ25hbCAqc2lnbmFsLCBpbnQxNl90ICpidWZm ZXIsCisJCSAgICAgICBzaXplX3QgYnVmZmVyX2xlbikKIHsKIAlpbnQxNl90ICpkZXN0aW5hdGlv biwgKnNvdXJjZTsKKwlzdHJ1Y3QgYXVkaW9fc2lnbmFsX2ZyZXEgKmZyZXE7CiAJaW50IHRvdGFs OwotCWludCBmcmVxX2ZyYW1lczsKLQlpbnQgZnJlcV9vZmZzZXQ7CiAJaW50IGNvdW50OwogCWlu dCBpLCBqLCBrOwogCi0JbWVtc2V0KGJ1ZmZlciwgMCwgc2l6ZW9mKGludDE2X3QpICogc2lnbmFs LT5jaGFubmVscyAqIGZyYW1lcyk7CisJbWVtc2V0KGJ1ZmZlciwgMCwgc2l6ZW9mKGludDE2X3Qp ICogc2lnbmFsLT5jaGFubmVscyAqIGJ1ZmZlcl9sZW4pOwogCiAJZm9yIChpID0gMDsgaSA8IHNp Z25hbC0+ZnJlcXNfY291bnQ7IGkrKykgeworCQlmcmVxID0gJnNpZ25hbC0+ZnJlcXNbaV07CiAJ CXRvdGFsID0gMDsKIAotCQl3aGlsZSAodG90YWwgPCBmcmFtZXMpIHsKLQkJCWZyZXFfZnJhbWVz ID0gc2lnbmFsLT5mcmVxc1tpXS5mcmFtZXM7Ci0JCQlmcmVxX29mZnNldCA9IHNpZ25hbC0+ZnJl cXNbaV0ub2Zmc2V0OworCQlpZ3RfYXNzZXJ0KGZyZXEtPnBlcmlvZCk7CiAKLQkJCXNvdXJjZSA9 IHNpZ25hbC0+ZnJlcXNbaV0ucGVyaW9kICsgZnJlcV9vZmZzZXQ7CisJCXdoaWxlICh0b3RhbCA8 IGJ1ZmZlcl9sZW4pIHsKKwkJCXNvdXJjZSA9IGZyZXEtPnBlcmlvZCArIGZyZXEtPm9mZnNldDsK IAkJCWRlc3RpbmF0aW9uID0gYnVmZmVyICsgdG90YWwgKiBzaWduYWwtPmNoYW5uZWxzOwogCi0J CQljb3VudCA9IGZyZXFfZnJhbWVzIC0gZnJlcV9vZmZzZXQ7Ci0JCQlpZiAoY291bnQgPiAoZnJh bWVzIC0gdG90YWwpKQotCQkJCWNvdW50ID0gZnJhbWVzIC0gdG90YWw7CisJCQljb3VudCA9IGZy ZXEtPnBlcmlvZF9sZW4gLSBmcmVxLT5vZmZzZXQ7CisJCQlpZiAoY291bnQgPiBidWZmZXJfbGVu IC0gdG90YWwpCisJCQkJY291bnQgPSBidWZmZXJfbGVuIC0gdG90YWw7CiAKLQkJCWZyZXFfb2Zm c2V0ICs9IGNvdW50OwotCQkJZnJlcV9vZmZzZXQgJT0gZnJlcV9mcmFtZXM7Ci0KLQkJCXNpZ25h bC0+ZnJlcXNbaV0ub2Zmc2V0ID0gZnJlcV9vZmZzZXQ7CisJCQlmcmVxLT5vZmZzZXQgKz0gY291 bnQ7CisJCQlmcmVxLT5vZmZzZXQgJT0gZnJlcS0+cGVyaW9kX2xlbjsKIAogCQkJZm9yIChqID0g MDsgaiA8IGNvdW50OyBqKyspIHsKIAkJCQlmb3IgKGsgPSAwOyBrIDwgc2lnbmFsLT5jaGFubmVs czsgaysrKSB7CisJCQkJCWlmIChmcmVxLT5jaGFubmVsID49IDAgJiYKKwkJCQkJICAgIGZyZXEt PmNoYW5uZWwgIT0gaykKKwkJCQkJCWNvbnRpbnVlOwogCQkJCQlkZXN0aW5hdGlvbltqICogc2ln bmFsLT5jaGFubmVscyArIGtdICs9IHNvdXJjZVtqXTsKIAkJCQl9CiAJCQl9CkBAIC0yMzcsMTEg KzI1NCwxMSBAQCB2b2lkIGF1ZGlvX3NpZ25hbF9maWxsKHN0cnVjdCBhdWRpb19zaWduYWwgKnNp Z25hbCwgaW50MTZfdCAqYnVmZmVyLCBpbnQgZnJhbWVzKQogICogc2FtcGxpbmdfcmF0ZSBpcyBn aXZlbiBpbiBIei4gZGF0YV9sZW4gaXMgdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiBkYXRhLgog ICovCiBib29sIGF1ZGlvX3NpZ25hbF9kZXRlY3Qoc3RydWN0IGF1ZGlvX3NpZ25hbCAqc2lnbmFs LCBpbnQgc2FtcGxpbmdfcmF0ZSwKLQkJCSBkb3VibGUgKmRhdGEsIHNpemVfdCBkYXRhX2xlbikK KwkJCSBpbnQgY2hhbm5lbCwgZG91YmxlICpkYXRhLCBzaXplX3QgZGF0YV9sZW4pCiB7CiAJc2l6 ZV90IGJpbl9wb3dlcl9sZW4gPSBkYXRhX2xlbiAvIDIgKyAxOwogCWRvdWJsZSBiaW5fcG93ZXJb YmluX3Bvd2VyX2xlbl07Ci0JYm9vbCBkZXRlY3RlZFtzaWduYWwtPmZyZXFzX2NvdW50XTsKKwli b29sIGRldGVjdGVkW0ZSRVFTX01BWF07CiAJaW50IHJldCwgZnJlcV9hY2N1cmFjeSwgZnJlcSwg bG9jYWxfbWF4X2ZyZXE7CiAJZG91YmxlIG1heCwgbG9jYWxfbWF4LCB0aHJlc2hvbGQ7CiAJc2l6 ZV90IGksIGo7CkBAIC0zMDgsNiArMzI1LDEwIEBAIGJvb2wgYXVkaW9fc2lnbmFsX2RldGVjdChz dHJ1Y3QgYXVkaW9fc2lnbmFsICpzaWduYWwsIGludCBzYW1wbGluZ19yYXRlLAogCQkgKiBpbnZh bGlkLiAqLwogCQlpZiAoYmluX3Bvd2VyW2ldIDwgdGhyZXNob2xkKSB7CiAJCQlmb3IgKGogPSAw OyBqIDwgc2lnbmFsLT5mcmVxc19jb3VudDsgaisrKSB7CisJCQkJaWYgKHNpZ25hbC0+ZnJlcXNb al0uY2hhbm5lbCA+PSAwICYmCisJCQkJICAgIHNpZ25hbC0+ZnJlcXNbal0uY2hhbm5lbCAhPSBj aGFubmVsKQorCQkJCQljb250aW51ZTsKKwogCQkJCWlmIChzaWduYWwtPmZyZXFzW2pdLmZyZXEg PgogCQkJCSAgICBsb2NhbF9tYXhfZnJlcSAtIGZyZXFfYWNjdXJhY3kgJiYKIAkJCQkgICAgc2ln bmFsLT5mcmVxc1tqXS5mcmVxIDwKQEAgLTM0MCw2ICszNjEsMTAgQEAgYm9vbCBhdWRpb19zaWdu YWxfZGV0ZWN0KHN0cnVjdCBhdWRpb19zaWduYWwgKnNpZ25hbCwgaW50IHNhbXBsaW5nX3JhdGUs CiAKIAkvKiBDaGVjayB0aGF0IGFsbCBmcmVxdWVuY2llcyB3ZSBnZW5lcmF0ZWQgaGF2ZSBiZWVu IGRldGVjdGVkLiAqLwogCWZvciAoaSA9IDA7IGkgPCBzaWduYWwtPmZyZXFzX2NvdW50OyBpKysp IHsKKwkJaWYgKHNpZ25hbC0+ZnJlcXNbaV0uY2hhbm5lbCA+PSAwICYmCisJCSAgICBzaWduYWwt PmZyZXFzW2ldLmNoYW5uZWwgIT0gY2hhbm5lbCkKKwkJCWNvbnRpbnVlOworCiAJCWlmICghZGV0 ZWN0ZWRbaV0pIHsKIAkJCWlndF9kZWJ1ZygiTWlzc2luZyBmcmVxdWVuY3k6ICVkXG4iLAogCQkJ CSAgc2lnbmFsLT5mcmVxc1tpXS5mcmVxKTsKZGlmZiAtLWdpdCBhL2xpYi9pZ3RfYXVkaW8uaCBi L2xpYi9pZ3RfYXVkaW8uaAppbmRleCA0YWE0M2U2OS4uZmUyNmJiNTcgMTAwNjQ0Ci0tLSBhL2xp Yi9pZ3RfYXVkaW8uaAorKysgYi9saWIvaWd0X2F1ZGlvLmgKQEAgLTM1LDEyICszNSwxNSBAQAog c3RydWN0IGF1ZGlvX3NpZ25hbDsKIAogc3RydWN0IGF1ZGlvX3NpZ25hbCAqYXVkaW9fc2lnbmFs X2luaXQoaW50IGNoYW5uZWxzLCBpbnQgc2FtcGxpbmdfcmF0ZSk7Ci1pbnQgYXVkaW9fc2lnbmFs X2FkZF9mcmVxdWVuY3koc3RydWN0IGF1ZGlvX3NpZ25hbCAqc2lnbmFsLCBpbnQgZnJlcXVlbmN5 KTsKK3ZvaWQgYXVkaW9fc2lnbmFsX2RlaW5pdChzdHJ1Y3QgYXVkaW9fc2lnbmFsICpzaWduYWwp OworaW50IGF1ZGlvX3NpZ25hbF9hZGRfZnJlcXVlbmN5KHN0cnVjdCBhdWRpb19zaWduYWwgKnNp Z25hbCwgaW50IGZyZXF1ZW5jeSwKKwkJCSAgICAgICBpbnQgY2hhbm5lbCk7CiB2b2lkIGF1ZGlv X3NpZ25hbF9zeW50aGVzaXplKHN0cnVjdCBhdWRpb19zaWduYWwgKnNpZ25hbCk7Ci12b2lkIGF1 ZGlvX3NpZ25hbF9jbGVhbihzdHJ1Y3QgYXVkaW9fc2lnbmFsICpzaWduYWwpOwotdm9pZCBhdWRp b19zaWduYWxfZmlsbChzdHJ1Y3QgYXVkaW9fc2lnbmFsICpzaWduYWwsIGludDE2X3QgKmJ1ZmZl ciwgaW50IGZyYW1lcyk7Cit2b2lkIGF1ZGlvX3NpZ25hbF9yZXNldChzdHJ1Y3QgYXVkaW9fc2ln bmFsICpzaWduYWwpOwordm9pZCBhdWRpb19zaWduYWxfZmlsbChzdHJ1Y3QgYXVkaW9fc2lnbmFs ICpzaWduYWwsIGludDE2X3QgKmJ1ZmZlciwKKwkJICAgICAgIHNpemVfdCBidWZmZXJfbGVuKTsK IGJvb2wgYXVkaW9fc2lnbmFsX2RldGVjdChzdHJ1Y3QgYXVkaW9fc2lnbmFsICpzaWduYWwsIGlu dCBzYW1wbGluZ19yYXRlLAotCQkJIGRvdWJsZSAqZGF0YSwgc2l6ZV90IGRhdGFfbGVuKTsKKwkJ CSBpbnQgY2hhbm5lbCwgZG91YmxlICpkYXRhLCBzaXplX3QgZGF0YV9sZW4pOwogc2l6ZV90IGF1 ZGlvX2V4dHJhY3RfY2hhbm5lbF9zMzJfbGUoZG91YmxlICpkc3QsIHNpemVfdCBkc3RfY2FwLAog CQkJCSAgICBpbnQzMl90ICpzcmMsIHNpemVfdCBzcmNfbGVuLAogCQkJCSAgICBpbnQgbl9jaGFu bmVscywgaW50IGNoYW5uZWwpOwpkaWZmIC0tZ2l0IGEvdGVzdHMva21zX2NoYW1lbGl1bS5jIGIv dGVzdHMva21zX2NoYW1lbGl1bS5jCmluZGV4IDAxNGEyMmIzLi5kMzM2NjEyZiAxMDA2NDQKLS0t IGEvdGVzdHMva21zX2NoYW1lbGl1bS5jCisrKyBiL3Rlc3RzL2ttc19jaGFtZWxpdW0uYwpAQCAt Nzc3LDE2ICs3NzcsMTYgQEAgZG9fdGVzdF9kaXNwbGF5X2F1ZGlvKGRhdGFfdCAqZGF0YSwgc3Ry dWN0IGNoYW1lbGl1bV9wb3J0ICpwb3J0LAogCQkgICAgICBzdHJ1Y3QgYWxzYSAqYWxzYSwgaW50 IHBsYXliYWNrX2NoYW5uZWxzLAogCQkgICAgICBpbnQgcGxheWJhY2tfcmF0ZSkKIHsKLQlpbnQg cmV0LCBjYXB0dXJlX3JhdGUsIGNhcHR1cmVfY2hhbm5lbHMsIG1zZWM7CisJaW50IHJldCwgY2Fw dHVyZV9yYXRlLCBjYXB0dXJlX2NoYW5uZWxzLCBtc2VjLCBmcmVxOwogCXN0cnVjdCBjaGFtZWxp dW1fYXVkaW9fZmlsZSAqYXVkaW9fZmlsZTsKIAlzdHJ1Y3QgY2hhbWVsaXVtX3N0cmVhbSAqc3Ry ZWFtOwogCWVudW0gY2hhbWVsaXVtX3N0cmVhbV9yZWFsdGltZV9tb2RlIHN0cmVhbV9tb2RlOwog CXN0cnVjdCBhdWRpb19zaWduYWwgKnNpZ25hbDsKIAlpbnQzMl90ICpyZWN2LCAqYnVmOwogCWRv dWJsZSAqY2hhbm5lbDsKLQlzaXplX3QgaSwgc3RyZWFrLCBwYWdlX2NvdW50OworCXNpemVfdCBp LCBqLCBzdHJlYWssIHBhZ2VfY291bnQ7CiAJc2l6ZV90IHJlY3ZfbGVuLCBidWZfbGVuLCBidWZf Y2FwLCBidWZfc2l6ZSwgY2hhbm5lbF9sZW47Ci0JYm9vbCBvazsKKwlib29sIG9rLCBzdWNjZXNz OwogCWNoYXIgZHVtcF9zdWZmaXhbNjRdOwogCWNoYXIgKmR1bXBfcGF0aCA9IE5VTEw7CiAJaW50 IGR1bXBfZmQgPSAtMTsKQEAgLTc5NCwxMCArNzk0LDE1IEBAIGRvX3Rlc3RfZGlzcGxheV9hdWRp byhkYXRhX3QgKmRhdGEsIHN0cnVjdCBjaGFtZWxpdW1fcG9ydCAqcG9ydCwKIAlzdHJ1Y3QgYXVk aW9fc3RhdGUgc3RhdGUgPSB7fTsKIAogCWlmICghYWxzYV90ZXN0X291dHB1dF9jb25maWd1cmF0 aW9uKGFsc2EsIHBsYXliYWNrX2NoYW5uZWxzLAotCQkJCQkgICAgcGxheWJhY2tfcmF0ZSkpCisJ CQkJCSAgICBwbGF5YmFja19yYXRlKSkgeworCQlpZ3RfZGVidWcoIlNraXBwaW5nIHRlc3Qgd2l0 aCBzYW1wbGUgcmF0ZSAlZCBhbmQgJWQgY2hhbm5lbHMgIgorCQkJICAiYmVjYXVzZSBzZWxlY3Rl ZCBvdXRwdXQgZGV2aWNlcyBkb24ndCBzdXBwb3J0IHRoaXMgIgorCQkJICAiY29uZmlndXJhdGlv blxuIiwgcGxheWJhY2tfcmF0ZSwgcGxheWJhY2tfY2hhbm5lbHMpOwogCQlyZXR1cm4gZmFsc2U7 CisJfQogCi0JaWd0X2RlYnVnKCJUZXN0aW5nIHdpdGggcGxheWJhY2sgc2FtcGxpbmcgcmF0ZSAl ZFxuIiwgcGxheWJhY2tfcmF0ZSk7CisJaWd0X2RlYnVnKCJUZXN0aW5nIHdpdGggcGxheWJhY2sg c2FtcGxpbmcgcmF0ZSAlZCBhbmQgJWQgY2hhbm5lbHNcbiIsCisJCSAgcGxheWJhY2tfcmF0ZSwg cGxheWJhY2tfY2hhbm5lbHMpOwogCWFsc2FfY29uZmlndXJlX291dHB1dChhbHNhLCBwbGF5YmFj a19jaGFubmVscywgcGxheWJhY2tfcmF0ZSk7CiAKIAljaGFtZWxpdW1fc3RhcnRfY2FwdHVyaW5n X2F1ZGlvKGRhdGEtPmNoYW1lbGl1bSwgcG9ydCwgZmFsc2UpOwpAQCAtODI1LDggKzgzMCwxMiBA QCBkb190ZXN0X2Rpc3BsYXlfYXVkaW8oZGF0YV90ICpkYXRhLCBzdHJ1Y3QgY2hhbWVsaXVtX3Bv cnQgKnBvcnQsCiAJc2lnbmFsID0gYXVkaW9fc2lnbmFsX2luaXQocGxheWJhY2tfY2hhbm5lbHMs IHBsYXliYWNrX3JhdGUpOwogCWlndF9hc3NlcnQoc2lnbmFsKTsKIAotCWZvciAoaSA9IDA7IGkg PCB0ZXN0X2ZyZXF1ZW5jaWVzX2NvdW50OyBpKyspCi0JCWF1ZGlvX3NpZ25hbF9hZGRfZnJlcXVl bmN5KHNpZ25hbCwgdGVzdF9mcmVxdWVuY2llc1tpXSk7CisJZm9yIChpID0gMDsgaSA8IHRlc3Rf ZnJlcXVlbmNpZXNfY291bnQ7IGkrKykgeworCQlmb3IgKGogPSAwOyBqIDwgcGxheWJhY2tfY2hh bm5lbHM7IGorKykgeworCQkJZnJlcSA9IHRlc3RfZnJlcXVlbmNpZXNbaV07CisJCQlhdWRpb19z aWduYWxfYWRkX2ZyZXF1ZW5jeShzaWduYWwsIGZyZXEsIGopOworCQl9CisJfQogCWF1ZGlvX3Np Z25hbF9zeW50aGVzaXplKHNpZ25hbCk7CiAKIAlzdGF0ZS5zaWduYWwgPSBzaWduYWw7CkBAIC04 NTEsMTAgKzg2MCwxMSBAQCBkb190ZXN0X2Rpc3BsYXlfYXVkaW8oZGF0YV90ICpkYXRhLCBzdHJ1 Y3QgY2hhbWVsaXVtX3BvcnQgKnBvcnQsCiAJcmVjdiA9IE5VTEw7CiAJcmVjdl9sZW4gPSAwOwog CisJc3VjY2VzcyA9IGZhbHNlOwogCXN0cmVhayA9IDA7CiAJbXNlYyA9IDA7CiAJaSA9IDA7Ci0J d2hpbGUgKHN0cmVhayA8IE1JTl9TVFJFQUsgJiYgbXNlYyA8IEFVRElPX1RJTUVPVVQpIHsKKwl3 aGlsZSAoIXN1Y2Nlc3MgJiYgbXNlYyA8IEFVRElPX1RJTUVPVVQpIHsKIAkJb2sgPSBjaGFtZWxp dW1fc3RyZWFtX3JlY2VpdmVfcmVhbHRpbWVfYXVkaW8oc3RyZWFtLAogCQkJCQkJCSAgICAgJnBh Z2VfY291bnQsCiAJCQkJCQkJICAgICAmcmVjdiwgJnJlY3ZfbGVuKTsKQEAgLTg3MiwyMSArODgy LDI3IEBAIGRvX3Rlc3RfZGlzcGxheV9hdWRpbyhkYXRhX3QgKmRhdGEsIHN0cnVjdCBjaGFtZWxp dW1fcG9ydCAqcG9ydCwKIAkJCWlndF9hc3NlcnQod3JpdGUoZHVtcF9mZCwgYnVmLCBidWZfc2l6 ZSkgPT0gYnVmX3NpemUpOwogCQl9CiAKLQkJLyogVE9ETzogY2hlY2sgb3RoZXIgY2hhbm5lbHMg dG9vLCBub3QganVzdCB0aGUgZmlyc3Qgb25lICovCi0JCWF1ZGlvX2V4dHJhY3RfY2hhbm5lbF9z MzJfbGUoY2hhbm5lbCwgY2hhbm5lbF9sZW4sIGJ1ZiwgYnVmX2xlbiwKLQkJCQkJICAgICBjYXB0 dXJlX2NoYW5uZWxzLCAwKTsKLQogCQltc2VjID0gaSAqIGNoYW5uZWxfbGVuIC8gKGRvdWJsZSkg Y2FwdHVyZV9yYXRlICogMTAwMDsKIAkJaWd0X2RlYnVnKCJEZXRlY3RpbmcgYXVkaW8gc2lnbmFs LCB0PSVkIG1zZWNcbiIsIG1zZWMpOwogCi0JCWlmIChhdWRpb19zaWduYWxfZGV0ZWN0KHNpZ25h bCwgY2FwdHVyZV9yYXRlLCBjaGFubmVsLAotCQkJCQljaGFubmVsX2xlbikpCi0JCQlzdHJlYWsr KzsKLQkJZWxzZQotCQkJc3RyZWFrID0gMDsKKwkJZm9yIChqID0gMDsgaiA8IHBsYXliYWNrX2No YW5uZWxzOyBqKyspIHsKKwkJCWlndF9kZWJ1ZygiUHJvY2Vzc2luZyBjaGFubmVsICV6dVxuIiwg aik7CisKKwkJCWF1ZGlvX2V4dHJhY3RfY2hhbm5lbF9zMzJfbGUoY2hhbm5lbCwgY2hhbm5lbF9s ZW4sCisJCQkJCQkgICAgIGJ1ZiwgYnVmX2xlbiwKKwkJCQkJCSAgICAgY2FwdHVyZV9jaGFubmVs cywgaik7CisKKwkJCWlmIChhdWRpb19zaWduYWxfZGV0ZWN0KHNpZ25hbCwgY2FwdHVyZV9yYXRl LCBqLAorCQkJCQkJY2hhbm5lbCwgY2hhbm5lbF9sZW4pKQorCQkJCXN0cmVhaysrOworCQkJZWxz ZQorCQkJCXN0cmVhayA9IDA7CisJCX0KIAogCQlidWZfbGVuID0gMDsKIAkJaSsrOworCisJCXN1 Y2Nlc3MgPSBzdHJlYWsgPT0gTUlOX1NUUkVBSyAqIHBsYXliYWNrX2NoYW5uZWxzOwogCX0KIAog CWlndF9kZWJ1ZygiU3RvcHBpbmcgYXVkaW8gcGxheWJhY2tcbiIpOwpAQCAtOTIxLDEyICs5Mzcs MTAgQEAgZG9fdGVzdF9kaXNwbGF5X2F1ZGlvKGRhdGFfdCAqZGF0YSwgc3RydWN0IGNoYW1lbGl1 bV9wb3J0ICpwb3J0LAogCQljaGFtZWxpdW1fZGVzdHJveV9hdWRpb19maWxlKGF1ZGlvX2ZpbGUp OwogCX0KIAotCWF1ZGlvX3NpZ25hbF9jbGVhbihzaWduYWwpOwotCWZyZWUoc2lnbmFsKTsKLQor CWF1ZGlvX3NpZ25hbF9kZWluaXQoc2lnbmFsKTsKIAljaGFtZWxpdW1fc3RyZWFtX2RlaW5pdChz dHJlYW0pOwogCi0JaWd0X2Fzc2VydChzdHJlYWsgPT0gTUlOX1NUUkVBSyk7CisJaWd0X2Fzc2Vy dChzdWNjZXNzKTsKIAlyZXR1cm4gdHJ1ZTsKIH0KIAotLSAKMi4yMS4wCgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwppZ3QtZGV2IG1haWxpbmcgbGlzdApp Z3QtZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2lndC1kZXY=