From mboxrd@z Thu Jan 1 00:00:00 1970 From: Michal Januszewski Subject: [PATCH v2] fbdev: fix fillrect for 24bpp modes Date: Sat, 18 Apr 2009 20:52:34 +0200 Message-ID: <20090418185234.GA17853@tria> References: <20090413170954.GA8403@tria> <20090417183617.ed7553cd.krzysztof.h1@poczta.fm> <20090417115048.0c5ca35d.akpm@linux-foundation.org> Reply-To: spock@gentoo.org Mime-Version: 1.0 Content-Transfer-Encoding: base64 Return-path: Received: from sfi-mx-3.v28.ch3.sourceforge.com ([172.29.28.123] helo=mx.sourceforge.net) by 335xhf1.ch3.sourceforge.com with esmtp (Exim 4.69) (envelope-from ) id 1LvFfW-000795-7w for linux-fbdev-devel@lists.sourceforge.net; Sat, 18 Apr 2009 18:53:38 +0000 Received: from mail-ew0-f169.google.com ([209.85.219.169]) by 3b2kzd1.ch3.sourceforge.com with esmtp (Exim 4.69) id 1LvFfU-0005Jz-QW for linux-fbdev-devel@lists.sourceforge.net; Sat, 18 Apr 2009 18:53:38 +0000 Received: by ewy17 with SMTP id 17so1323831ewy.10 for ; Sat, 18 Apr 2009 11:53:35 -0700 (PDT) Content-Disposition: inline In-Reply-To: <20090417115048.0c5ca35d.akpm@linux-foundation.org> List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: linux-fbdev-devel-bounces@lists.sourceforge.net Content-Type: text/plain; charset="windows-1252" To: Andrew Morton Cc: linux-fbdev-devel@lists.sourceforge.net, linux-kernel@vger.kernel.org VGhlIHNvZnR3YXJlIGZpbGxyZWN0IHJvdXRpbmVzIGRvIG5vdCB3b3JrIHByb3Blcmx5IHdoZW4g dGhlIG51bWJlciBvZgpwaXhlbHMgcGVyIG1hY2hpbmUgd29yZCBpcyBub3QgYW4gaW50ZWdlci4g IFRvIHNlZSB0aGF0LCBydW4gdGhlIGZvbGxvd2luZwpjb21tYW5kIG9uIGEgZmJkZXYgY29uc29s ZSB3aXRoIGEgMjRicHAgdmlkZW8gbW9kZSwgdXNpbmcgYSBub24tYWNjZWxlcmF0ZWQKZHJpdmVy IHN1Y2ggYXMgKHUpdmVzYWZiOgoKICByZXNldCA7IGVjaG8gLWUgJ1xlWzQxbXRlc3RcZVtLJwoK VGhlIGV4cGVjdGVkIHJlc3VsdCBpcyAndGVzdCcgZGlzcGxheWVkIG9uIGEgbGluZSB3aXRoIHJl ZCBiYWNrZ3JvdW5kLgpJbnN0ZWFkIG9mIHRoYXQsICd0ZXN0JyBoYXMgYSByZWQgYmFja2dyb3Vu ZCwgYnV0IHRoZSByZXN0IG9mIHRoZSBsaW5lCihyZW5kZXJlZCB1c2luZyBmaWxscmVjdCgpKSBj b250YWlucyBhIGRpc3RvcmVkIGNvbG9yZnVsIHBhdHRlcm4uCgpUaGlzIHBhdGNoIGZpeGVzIHRo ZSBwcm9ibGVtIGJ5IGNvcnJlY3RseSBjb21wdXRpbmcgcm90YXRpb24gc2hpZnRzLgpJdCBoYXMg YmVlbiB0ZXN0ZWQgaW4gYSAyNGJwcCBtb2RlIG9uIDMyLSBhbmQgNjQtYml0IGxpdHRsZS1lbmRp YW4KbWFjaGluZXMuCgpTaWduZWQtb2ZmLWJ5OiBNaWNoYcWCIEphbnVzemV3c2tpIDxzcG9ja0Bn ZW50b28ub3JnPgotLS0KVGhpcyB2ZXJzaW9uIG9mIHRoZSBwYXRjaCBzaG91bGQgd29yayBjb3Jy ZWN0bHkgd2l0aCBtb2RlcyB3aGVyZQpsaW5lX2xlbmd0aCo4ICUgYnBwICE9IDAuCgpJdCBhbHNv IHJlcGxhY2VzIHRoZSByaWdodCBzaGlmdCBieSAoZmZzKGJpdHMpIC0gMSkgd2l0aCBhIGRpdmlz aW9uCmJ5IGJpdHMsIGFzIGJvdGggb3BlcmF0aW9ucyBhcmUgb3B0aW1pemVkIGludG8gYSBzaGlm dCBieSBhIGNvbnN0YW50CmFuZCB0aGUgbGF0dGVyIG9uZSBpbmNyZWFzZXMgY29kZSByZWFkYWJp bGl0eS4KCkluIGNhc2UgdGhpcyBzdGlsbCBicmVha3MgaW4gc29tZSBtb2RlcywgSSB3b3VsZCBh cHByZWNpYXRlIGEgZnVsbApsaXN0IG9mIHBhcmFtZXRlcnMgZGVzY3JpYmluZyB0aGUgcHJvYmxl bSwgaS5lLiBicHAsIGxpbmVfbGVuZ3RoCmFuZCB0aGUgdG9wIGxlZnQgY29vcmRpbmF0ZSBvZiB0 aGUgcmVjdGFuZ2xlIHRoYXQgaXMgcGFpbnRlZAppbmNvcnJlY3RseS4KCmRpZmYgLS1naXQgYS9k cml2ZXJzL3ZpZGVvL2NmYmZpbGxyZWN0LmMgYi9kcml2ZXJzL3ZpZGVvL2NmYmZpbGxyZWN0LmMK aW5kZXggNjRiMzU3Ni4uZmFhMWEzOSAxMDA2NDQKLS0tIGEvZHJpdmVycy92aWRlby9jZmJmaWxs cmVjdC5jCisrKyBiL2RyaXZlcnMvdmlkZW8vY2ZiZmlsbHJlY3QuYwpAQCAtOSwxMCArOSw2IEBA CiAgKgogICogTk9URVM6CiAgKgotICogIFRoZSBjb2RlIGZvciBkZXB0aHMgbGlrZSAyNCB0aGF0 IGRvbid0IGhhdmUgaW50ZWdlciBudW1iZXIgb2YgcGl4ZWxzIHBlcgotICogIGxvbmcgaXMgYnJv a2VuIGFuZCBuZWVkcyB0byBiZSBmaXhlZC4gRm9yIG5vdyBJIHR1cm5lZCB0aGVzZSB0eXBlcyBv ZgotICogIG1vZGUgb2ZmLgotICoKICAqICBBbHNvIG5lZWQgdG8gYWRkIGNvZGUgdG8gZGVhbCB3 aXRoIGNhcmRzIGVuZGlhbnMgdGhhdCBhcmUgZGlmZmVyZW50IHRoYW4KICAqICB0aGUgbmF0aXZl IGNwdSBlbmRpYW5zLiBJIGFsc28gbmVlZCB0byBkZWFsIHdpdGggTVNCIHBvc2l0aW9uIGluIHRo ZSB3b3JkLgogICoKQEAgLTEzOSw3ICsxMzUsNyBAQCBiaXRmaWxsX3VuYWxpZ25lZChzdHJ1Y3Qg ZmJfaW5mbyAqcCwgdW5zaWduZWQgbG9uZyBfX2lvbWVtICpkc3QsIGludCBkc3RfaWR4LAogCiAJ CS8vIFRyYWlsaW5nIGJpdHMKIAkJaWYgKGxhc3QpCi0JCQlGQl9XUklURUwoY29tcChwYXQsIEZC X1JFQURMKGRzdCksIGZpcnN0KSwgZHN0KTsKKwkJCUZCX1dSSVRFTChjb21wKHBhdCwgRkJfUkVB REwoZHN0KSwgbGFzdCksIGRzdCk7CiAJfQogfQogCkBAIC0yODEsNyArMjc3LDcgQEAgYml0Zmls bF91bmFsaWduZWRfcmV2KHN0cnVjdCBmYl9pbmZvICpwLCB1bnNpZ25lZCBsb25nIF9faW9tZW0g KmRzdCwKIAogdm9pZCBjZmJfZmlsbHJlY3Qoc3RydWN0IGZiX2luZm8gKnAsIGNvbnN0IHN0cnVj dCBmYl9maWxscmVjdCAqcmVjdCkKIHsKLQl1bnNpZ25lZCBsb25nIHBhdCwgZmc7CisJdW5zaWdu ZWQgbG9uZyBwYXQsIHBhdDIsIGZnOwogCXVuc2lnbmVkIGxvbmcgd2lkdGggPSByZWN0LT53aWR0 aCwgaGVpZ2h0ID0gcmVjdC0+aGVpZ2h0OwogCWludCBiaXRzID0gQklUU19QRVJfTE9ORywgYnl0 ZXMgPSBiaXRzID4+IDM7CiAJdTMyIGJwcCA9IHAtPnZhci5iaXRzX3Blcl9waXhlbDsKQEAgLTI5 Nyw3ICsyOTMsNyBAQCB2b2lkIGNmYl9maWxscmVjdChzdHJ1Y3QgZmJfaW5mbyAqcCwgY29uc3Qg c3RydWN0IGZiX2ZpbGxyZWN0ICpyZWN0KQogCWVsc2UKIAkJZmcgPSByZWN0LT5jb2xvcjsKIAot CXBhdCA9IHBpeGVsX3RvX3BhdCggYnBwLCBmZyk7CisJcGF0ID0gcGl4ZWxfdG9fcGF0KGJwcCwg ZmcpOwogCiAJZHN0ID0gKHVuc2lnbmVkIGxvbmcgX19pb21lbSAqKSgodW5zaWduZWQgbG9uZylw LT5zY3JlZW5fYmFzZSAmIH4oYnl0ZXMtMSkpOwogCWRzdF9pZHggPSAoKHVuc2lnbmVkIGxvbmcp cC0+c2NyZWVuX2Jhc2UgJiAoYnl0ZXMgLSAxKSkqODsKQEAgLTMzMywxNyArMzI5LDE2IEBAIHZv aWQgY2ZiX2ZpbGxyZWN0KHN0cnVjdCBmYl9pbmZvICpwLCBjb25zdCBzdHJ1Y3QgZmJfZmlsbHJl Y3QgKnJlY3QpCiAJCQlkc3RfaWR4ICs9IHAtPmZpeC5saW5lX2xlbmd0aCo4OwogCQl9CiAJfSBl bHNlIHsKLQkJaW50IHJpZ2h0OwotCQlpbnQgcjsKLQkJaW50IHJvdCA9IChsZWZ0LWRzdF9pZHgp ICUgYnBwOworCQlpbnQgcmlnaHQsIHI7CiAJCXZvaWQgKCpmaWxsX29wKShzdHJ1Y3QgZmJfaW5m byAqcCwgdW5zaWduZWQgbG9uZyBfX2lvbWVtICpkc3QsCiAJCQkJaW50IGRzdF9pZHgsIHVuc2ln bmVkIGxvbmcgcGF0LCBpbnQgbGVmdCwKIAkJCQlpbnQgcmlnaHQsIHVuc2lnbmVkIG4sIGludCBi aXRzKSA9IE5VTEw7Ci0KLQkJLyogcm90YXRlIHBhdHRlcm4gdG8gY29ycmVjdCBzdGFydCBwb3Np dGlvbiAqLwotCQlwYXQgPSBwYXQgPDwgcm90IHwgcGF0ID4+IChicHAtcm90KTsKLQotCQlyaWdo dCA9IGJwcC1sZWZ0OworI2lmZGVmIF9fTElUVExFX0VORElBTgorCQlyaWdodCA9IGxlZnQ7CisJ CWxlZnQgPSBicHAgLSByaWdodDsKKyNlbHNlCisJCXJpZ2h0ID0gYnBwIC0gbGVmdDsKKyNlbmRp ZgogCQlzd2l0Y2ggKHJlY3QtPnJvcCkgewogCQljYXNlIFJPUF9YT1I6CiAJCQlmaWxsX29wID0g Yml0ZmlsbF91bmFsaWduZWRfcmV2OwpAQCAtMzU3LDEyICszNTIsMTcgQEAgdm9pZCBjZmJfZmls bHJlY3Qoc3RydWN0IGZiX2luZm8gKnAsIGNvbnN0IHN0cnVjdCBmYl9maWxscmVjdCAqcmVjdCkK IAkJCWJyZWFrOwogCQl9CiAJCXdoaWxlIChoZWlnaHQtLSkgewotCQkJZHN0ICs9IGRzdF9pZHgg Pj4gKGZmcyhiaXRzKSAtIDEpOworCQkJZHN0ICs9IGRzdF9pZHggLyBiaXRzOwogCQkJZHN0X2lk eCAmPSAoYml0cyAtIDEpOwotCQkJZmlsbF9vcChwLCBkc3QsIGRzdF9pZHgsIHBhdCwgbGVmdCwg cmlnaHQsCisJCQlyID0gZHN0X2lkeCAlIGJwcDsKKwkJCS8qIHJvdGF0ZSBwYXR0ZXJuIHRvIHRo ZSBjb3JyZWN0IHN0YXJ0IHBvc2l0aW9uICovCisjaWZkZWYgX19MSVRUTEVfRU5ESUFOCisJCQlw YXQyID0gcGF0IDw8IHIgfCBwYXQgPj4gKGJwcC1yKTsKKyNlbHNlCisJCQlwYXQyID0gcGF0IDw8 IChicHAtcikgfCBwYXQgPj4gcjsKKyNlbmRpZgorCQkJZmlsbF9vcChwLCBkc3QsIGRzdF9pZHgs IHBhdDIsIGxlZnQsIHJpZ2h0LAogCQkJCXdpZHRoKmJwcCwgYml0cyk7Ci0JCQlyID0gKHAtPmZp eC5saW5lX2xlbmd0aCo4KSAlIGJwcDsKLQkJCXBhdCA9IHBhdCA8PCAoYnBwLXIpIHwgcGF0ID4+ IHI7CiAJCQlkc3RfaWR4ICs9IHAtPmZpeC5saW5lX2xlbmd0aCo4OwogCQl9CiAJfQpkaWZmIC0t Z2l0IGEvZHJpdmVycy92aWRlby9mYl9kcmF3LmggYi9kcml2ZXJzL3ZpZGVvL2ZiX2RyYXcuaApp bmRleCAxZGI2MjIxLi5mYTk2MjZlIDEwMDY0NAotLS0gYS9kcml2ZXJzL3ZpZGVvL2ZiX2RyYXcu aAorKysgYi9kcml2ZXJzL3ZpZGVvL2ZiX2RyYXcuaApAQCAtMzMsMTEgKzMzLDExIEBAIHBpeGVs X3RvX3BhdCggdTMyIGJwcCwgdTMyIHBpeGVsKQogCWNhc2UgODoKIAkJcmV0dXJuIDB4MDEwMTAx MDEwMTAxMDEwMXVsKnBpeGVsOwogCWNhc2UgMTI6Ci0JCXJldHVybiAweDAwMDEwMDEwMDEwMDEw MDF1bCpwaXhlbDsKKwkJcmV0dXJuIDB4MTAwMTAwMTAwMTAwMTAwMXVsKnBpeGVsOwogCWNhc2Ug MTY6CiAJCXJldHVybiAweDAwMDEwMDAxMDAwMTAwMDF1bCpwaXhlbDsKIAljYXNlIDI0OgotCQly ZXR1cm4gMHgwMDAwMDAwMDAxMDAwMDAxdWwqcGl4ZWw7CisJCXJldHVybiAweDAwMDEwMDAwMDEw MDAwMDF1bCpwaXhlbDsKIAljYXNlIDMyOgogCQlyZXR1cm4gMHgwMDAwMDAwMTAwMDAwMDAxdWwq cGl4ZWw7CiAJZGVmYXVsdDoKQEAgLTU4LDExICs1OCwxMSBAQCBwaXhlbF90b19wYXQoIHUzMiBi cHAsIHUzMiBwaXhlbCkKIAljYXNlIDg6CiAJCXJldHVybiAweDAxMDEwMTAxdWwqcGl4ZWw7CiAJ Y2FzZSAxMjoKLQkJcmV0dXJuIDB4MDAwMDEwMDF1bCpwaXhlbDsKKwkJcmV0dXJuIDB4MDEwMDEw MDF1bCpwaXhlbDsKIAljYXNlIDE2OgogCQlyZXR1cm4gMHgwMDAxMDAwMXVsKnBpeGVsOwogCWNh c2UgMjQ6Ci0JCXJldHVybiAweDAwMDAwMDAxdWwqcGl4ZWw7CisJCXJldHVybiAweDAxMDAwMDAx dWwqcGl4ZWw7CiAJY2FzZSAzMjoKIAkJcmV0dXJuIDB4MDAwMDAwMDF1bCpwaXhlbDsKIAlkZWZh dWx0OgpkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9zeXNmaWxscmVjdC5jIGIvZHJpdmVycy92 aWRlby9zeXNmaWxscmVjdC5jCmluZGV4IGY5NGQ2YjYuLmZmMjU2YTQgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvdmlkZW8vc3lzZmlsbHJlY3QuYworKysgYi9kcml2ZXJzL3ZpZGVvL3N5c2ZpbGxyZWN0 LmMKQEAgLTEyNCw3ICsxMjQsNyBAQCBiaXRmaWxsX3VuYWxpZ25lZChzdHJ1Y3QgZmJfaW5mbyAq cCwgdW5zaWduZWQgbG9uZyAqZHN0LCBpbnQgZHN0X2lkeCwKIAogCQkvKiBUcmFpbGluZyBiaXRz ICovCiAJCWlmIChsYXN0KQotCQkJKmRzdCA9IGNvbXAocGF0LCAqZHN0LCBmaXJzdCk7CisJCQkq ZHN0ID0gY29tcChwYXQsICpkc3QsIGxhc3QpOwogCX0KIH0KIApAQCAtMjQyLDcgKzI0Miw3IEBA IGJpdGZpbGxfdW5hbGlnbmVkX3JldihzdHJ1Y3QgZmJfaW5mbyAqcCwgdW5zaWduZWQgbG9uZyAq ZHN0LCBpbnQgZHN0X2lkeCwKIAogdm9pZCBzeXNfZmlsbHJlY3Qoc3RydWN0IGZiX2luZm8gKnAs IGNvbnN0IHN0cnVjdCBmYl9maWxscmVjdCAqcmVjdCkKIHsKLQl1bnNpZ25lZCBsb25nIHBhdCwg Zmc7CisJdW5zaWduZWQgbG9uZyBwYXQsIHBhdDIsIGZnOwogCXVuc2lnbmVkIGxvbmcgd2lkdGgg PSByZWN0LT53aWR0aCwgaGVpZ2h0ID0gcmVjdC0+aGVpZ2h0OwogCWludCBiaXRzID0gQklUU19Q RVJfTE9ORywgYnl0ZXMgPSBiaXRzID4+IDM7CiAJdTMyIGJwcCA9IHAtPnZhci5iaXRzX3Blcl9w aXhlbDsKQEAgLTI5MiwxNyArMjkyLDE2IEBAIHZvaWQgc3lzX2ZpbGxyZWN0KHN0cnVjdCBmYl9p bmZvICpwLCBjb25zdCBzdHJ1Y3QgZmJfZmlsbHJlY3QgKnJlY3QpCiAJCQlkc3RfaWR4ICs9IHAt PmZpeC5saW5lX2xlbmd0aCo4OwogCQl9CiAJfSBlbHNlIHsKLQkJaW50IHJpZ2h0OwotCQlpbnQg cjsKLQkJaW50IHJvdCA9IChsZWZ0LWRzdF9pZHgpICUgYnBwOworCQlpbnQgcmlnaHQsIHI7CiAJ CXZvaWQgKCpmaWxsX29wKShzdHJ1Y3QgZmJfaW5mbyAqcCwgdW5zaWduZWQgbG9uZyAqZHN0LAog CQkJCWludCBkc3RfaWR4LCB1bnNpZ25lZCBsb25nIHBhdCwgaW50IGxlZnQsCiAJCQkJaW50IHJp Z2h0LCB1bnNpZ25lZCBuLCBpbnQgYml0cykgPSBOVUxMOwotCi0JCS8qIHJvdGF0ZSBwYXR0ZXJu IHRvIGNvcnJlY3Qgc3RhcnQgcG9zaXRpb24gKi8KLQkJcGF0ID0gcGF0IDw8IHJvdCB8IHBhdCA+ PiAoYnBwLXJvdCk7Ci0KLQkJcmlnaHQgPSBicHAtbGVmdDsKKyNpZmRlZiBfX0xJVFRMRV9FTkRJ QU4KKwkJcmlnaHQgPSBsZWZ0OworCQlsZWZ0ID0gYnBwIC0gcmlnaHQ7CisjZWxzZQorCQlyaWdo dCA9IGJwcCAtIGxlZnQ7CisjZW5kaWYKIAkJc3dpdGNoIChyZWN0LT5yb3ApIHsKIAkJY2FzZSBS T1BfWE9SOgogCQkJZmlsbF9vcCA9IGJpdGZpbGxfdW5hbGlnbmVkX3JldjsKQEAgLTMxNywxMiAr MzE2LDE3IEBAIHZvaWQgc3lzX2ZpbGxyZWN0KHN0cnVjdCBmYl9pbmZvICpwLCBjb25zdCBzdHJ1 Y3QgZmJfZmlsbHJlY3QgKnJlY3QpCiAJCQlicmVhazsKIAkJfQogCQl3aGlsZSAoaGVpZ2h0LS0p IHsKLQkJCWRzdCArPSBkc3RfaWR4ID4+IChmZnMoYml0cykgLSAxKTsKKwkJCWRzdCArPSBkc3Rf aWR4IC8gYml0czsKIAkJCWRzdF9pZHggJj0gKGJpdHMgLSAxKTsKLQkJCWZpbGxfb3AocCwgZHN0 LCBkc3RfaWR4LCBwYXQsIGxlZnQsIHJpZ2h0LAorCQkJciA9IGRzdF9pZHggJSBicHA7CisJCQkv KiByb3RhdGUgcGF0dGVybiB0byB0aGUgY29ycmVjdCBzdGFydCBwb3NpdGlvbiAqLworI2lmZGVm IF9fTElUVExFX0VORElBTgorCQkJcGF0MiA9IHBhdCA8PCByIHwgcGF0ID4+IChicHAtcik7Cisj ZWxzZQorCQkJcGF0MiA9IHBhdCA8PCAoYnBwLXIpIHwgcGF0ID4+IHI7CisjZW5kaWYKKwkJCWZp bGxfb3AocCwgZHN0LCBkc3RfaWR4LCBwYXQyLCBsZWZ0LCByaWdodCwKIAkJCQl3aWR0aCpicHAs IGJpdHMpOwotCQkJciA9IChwLT5maXgubGluZV9sZW5ndGgqOCkgJSBicHA7Ci0JCQlwYXQgPSBw YXQgPDwgKGJwcC1yKSB8IHBhdCA+PiByOwogCQkJZHN0X2lkeCArPSBwLT5maXgubGluZV9sZW5n dGgqODsKIAkJfQogCX0KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpTdGF5IG9uIHRvcCBvZiBldmVy eXRoaW5nIG5ldyBhbmQgZGlmZmVyZW50LCBib3RoIGluc2lkZSBhbmQgCmFyb3VuZCBKYXZhIChU TSkgdGVjaG5vbG9neSAtIHJlZ2lzdGVyIGJ5IEFwcmlsIDIyLCBhbmQgc2F2ZQokMjAwIG9uIHRo ZSBKYXZhT25lIChTTSkgY29uZmVyZW5jZSwgSnVuZSAyLTUsIDIwMDksIFNhbiBGcmFuY2lzY28u CjMwMCBwbHVzIHRlY2huaWNhbCBhbmQgaGFuZHMtb24gc2Vzc2lvbnMuIFJlZ2lzdGVyIHRvZGF5 LiAKVXNlIHByaW9yaXR5IGNvZGUgSjlKTVQzMi4gaHR0cDovL3Auc2YubmV0L3NmdS9wCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkxpbnV4LWZiZGV2LWRl dmVsIG1haWxpbmcgbGlzdApMaW51eC1mYmRldi1kZXZlbEBsaXN0cy5zb3VyY2Vmb3JnZS5uZXQK aHR0cHM6Ly9saXN0cy5zb3VyY2Vmb3JnZS5uZXQvbGlzdHMvbGlzdGluZm8vbGludXgtZmJkZXYt ZGV2ZWwK