From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Ball Subject: [PATCH] drm/nouveau/kms: Implement KDB debug hooks for nouveau KMS. Date: Thu, 19 Aug 2010 13:55:06 -0400 Message-ID: References: <4C5ACF3F.8050409@windriver.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: (Chris Ball's message of "Thu, 12 Aug 2010 02:04:04 -0400") List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kgdb-bugreport-bounces@lists.sourceforge.net To: Jason Wessel Cc: David Airlie , kgdb-bugreport@lists.sourceforge.net, Jesse Barnes , nouveau@lists.freedesktop.org List-Id: nouveau.vger.kernel.org SGksCgpIZXJlJ3MgYSBwYXRjaCB0byBhZGQgc3VwcG9ydCBmb3IgS01TIGRlYnVnZ2luZyB0byBO b3V2ZWF1LCBhbG9uZyB0aGUKc3R5bGUgb2YgdGhlIHByZXZpb3VzIHBhdGNoZXMgZm9yIEludGVs wrkgYW5kIFJhZGVvbsKyLiAgSSdtIG9ubHkgYWJsZQp0byB0ZXN0IG9uIG52NTAgaGVyZSwgc28g YSB0ZXN0IG9uIG52MDQgd291bGQgYmUgbXVjaCBhcHByZWNpYXRlZCwKYW5kIEkndmUgcHVibGlz aGVkIGluc3RydWN0aW9ucyBvbiBob3cgdG8gdGVzdCBoZXJlwrMuICBUaGFua3MhCgotIENocmlz LgoKwrk6ICBodHRwOi8vbGttbC5vcmcvbGttbC8yMDEwLzgvNS8yODAKwrI6ICBodHRwOi8vZGV2 LmxhcHRvcC5vcmcvfmNqYi9rZGItcmFkZW9uLnBhdGNoCsKzOiAgaHR0cDovL2Jsb2cucHJpbnRm Lm5ldC9hcnRpY2xlcy8yMDEwLzA4LzE5L2tkYi1rbXMtZm9yLW5vdXZlYXUtcmFkZW9uCgoKRnJv bTogQ2hyaXMgQmFsbCA8Y2piQGxhcHRvcC5vcmc+CkRhdGU6IFRodSwgMTkgQXVnIDIwMTAgMTI6 NTU6MzQgLTA0MDAKU3ViamVjdDogW1BBVENIXSBkcm0vbm91dmVhdS9rbXM6IEltcGxlbWVudCBL REIgZGVidWcgaG9va3MgZm9yIG5vdXZlYXUgS01TLgoKU2lnbmVkLW9mZi1ieTogQ2hyaXMgQmFs bCA8Y2piQGxhcHRvcC5vcmc+Ci0tLQogZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9m YmNvbi5jIHwgICAgNiArKysrCiBkcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9udjA0X2NydGMuYyAg ICAgfCAgIDQ2ICsrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tCiBkcml2ZXJzL2dwdS9kcm0v bm91dmVhdS9udjUwX2NydGMuYyAgICAgfCAgIDQ5ICsrKysrKysrKysrKysrKysrKysrKystLS0t LS0tLQogMyBmaWxlcyBjaGFuZ2VkLCA4MCBpbnNlcnRpb25zKCspLCAyMSBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2ZiY29uLmMgYi9k cml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2ZiY29uLmMKaW5kZXggMmZiMjQ0NC4uYWFj MTQ2MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9mYmNvbi5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZmJjb24uYwpAQCAtMTA0LDYg KzEwNCw4IEBAIHN0YXRpYyBzdHJ1Y3QgZmJfb3BzIG5vdXZlYXVfZmJjb25fb3BzID0gewogCS5m Yl9wYW5fZGlzcGxheSA9IGRybV9mYl9oZWxwZXJfcGFuX2Rpc3BsYXksCiAJLmZiX2JsYW5rID0g ZHJtX2ZiX2hlbHBlcl9ibGFuaywKIAkuZmJfc2V0Y21hcCA9IGRybV9mYl9oZWxwZXJfc2V0Y21h cCwKKwkuZmJfZGVidWdfZW50ZXIgPSBkcm1fZmJfaGVscGVyX2RlYnVnX2VudGVyLAorCS5mYl9k ZWJ1Z19sZWF2ZSA9IGRybV9mYl9oZWxwZXJfZGVidWdfbGVhdmUsCiB9OwogCiBzdGF0aWMgc3Ry dWN0IGZiX29wcyBudjA0X2ZiY29uX29wcyA9IHsKQEAgLTExNyw2ICsxMTksOCBAQCBzdGF0aWMg c3RydWN0IGZiX29wcyBudjA0X2ZiY29uX29wcyA9IHsKIAkuZmJfcGFuX2Rpc3BsYXkgPSBkcm1f ZmJfaGVscGVyX3Bhbl9kaXNwbGF5LAogCS5mYl9ibGFuayA9IGRybV9mYl9oZWxwZXJfYmxhbmss CiAJLmZiX3NldGNtYXAgPSBkcm1fZmJfaGVscGVyX3NldGNtYXAsCisJLmZiX2RlYnVnX2VudGVy ID0gZHJtX2ZiX2hlbHBlcl9kZWJ1Z19lbnRlciwKKwkuZmJfZGVidWdfbGVhdmUgPSBkcm1fZmJf aGVscGVyX2RlYnVnX2xlYXZlLAogfTsKIAogc3RhdGljIHN0cnVjdCBmYl9vcHMgbnY1MF9mYmNv bl9vcHMgPSB7CkBAIC0xMzAsNiArMTM0LDggQEAgc3RhdGljIHN0cnVjdCBmYl9vcHMgbnY1MF9m YmNvbl9vcHMgPSB7CiAJLmZiX3Bhbl9kaXNwbGF5ID0gZHJtX2ZiX2hlbHBlcl9wYW5fZGlzcGxh eSwKIAkuZmJfYmxhbmsgPSBkcm1fZmJfaGVscGVyX2JsYW5rLAogCS5mYl9zZXRjbWFwID0gZHJt X2ZiX2hlbHBlcl9zZXRjbWFwLAorCS5mYl9kZWJ1Z19lbnRlciA9IGRybV9mYl9oZWxwZXJfZGVi dWdfZW50ZXIsCisJLmZiX2RlYnVnX2xlYXZlID0gZHJtX2ZiX2hlbHBlcl9kZWJ1Z19sZWF2ZSwK IH07CiAKIHN0YXRpYyB2b2lkIG5vdXZlYXVfZmJjb25fZ2FtbWFfc2V0KHN0cnVjdCBkcm1fY3J0 YyAqY3J0YywgdTE2IHJlZCwgdTE2IGdyZWVuLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L25vdXZlYXUvbnYwNF9jcnRjLmMgYi9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9udjA0X2NydGMu YwppbmRleCAxYzIwYzA4Li40MjA1ZGFmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbm91 dmVhdS9udjA0X2NydGMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9udjA0X2NydGMu YwpAQCAtNzY3LDggKzc2Nyw5IEBAIG52X2NydGNfZ2FtbWFfc2V0KHN0cnVjdCBkcm1fY3J0YyAq Y3J0YywgdTE2ICpyLCB1MTYgKmcsIHUxNiAqYiwgdWludDMyX3Qgc2l6ZSkKIH0KIAogc3RhdGlj IGludAotbnYwNF9jcnRjX21vZGVfc2V0X2Jhc2Uoc3RydWN0IGRybV9jcnRjICpjcnRjLCBpbnQg eCwgaW50IHksCi0JCQlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpvbGRfZmIpCitudjA0X2NydGNf ZG9fbW9kZV9zZXRfYmFzZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCisJCQkgICBzdHJ1Y3QgZHJt X2ZyYW1lYnVmZmVyICpwYXNzZWRfZmIsCisJCQkgICBpbnQgeCwgaW50IHksIGJvb2wgYXRvbWlj KQogewogCXN0cnVjdCBub3V2ZWF1X2NydGMgKm52X2NydGMgPSBub3V2ZWF1X2NydGMoY3J0Yyk7 CiAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmRldjsKQEAgLTc3OSwxMyArNzgwLDI2 IEBAIG52MDRfY3J0Y19tb2RlX3NldF9iYXNlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywgaW50IHgs IGludCB5LAogCWludCBhcmJfYnVyc3QsIGFyYl9sd207CiAJaW50IHJldDsKIAotCXJldCA9IG5v dXZlYXVfYm9fcGluKGZiLT5udmJvLCBUVE1fUExfRkxBR19WUkFNKTsKLQlpZiAocmV0KQotCQly ZXR1cm4gcmV0OworCS8qIElmIGF0b21pYywgd2Ugd2FudCB0byBzd2l0Y2ggdG8gdGhlIGZiIHdl IHdlcmUgcGFzc2VkLCBzbworCSAqIG5vdyB3ZSB1cGRhdGUgcG9pbnRlcnMgdG8gZG8gdGhhdC4g IChXZSBkb24ndCBwaW47IGp1c3QKKwkgKiBhc3N1bWUgd2UncmUgYWxyZWFkeSBwaW5uZWQgYW5k IHVwZGF0ZSB0aGUgYmFzZSBhZGRyZXNzLikKKwkgKi8KKwlpZiAoYXRvbWljKSB7CisJCWRybV9m YiA9IHBhc3NlZF9mYjsKKwkJZmIgPSBub3V2ZWF1X2ZyYW1lYnVmZmVyKHBhc3NlZF9mYik7CisJ fQorCWVsc2UgeworCQkvKiBJZiBub3QgYXRvbWljLCB3ZSBjYW4gZ28gYWhlYWQgYW5kIHBpbiwg YW5kIHVucGluIHRoZQorCQkgKiBvbGQgZmIgd2Ugd2VyZSBwYXNzZWQuCisJCSAqLworCQlyZXQg PSBub3V2ZWF1X2JvX3BpbihmYi0+bnZibywgVFRNX1BMX0ZMQUdfVlJBTSk7CisJCWlmIChyZXQp CisJCQlyZXR1cm4gcmV0OwogCi0JaWYgKG9sZF9mYikgewotCQlzdHJ1Y3Qgbm91dmVhdV9mcmFt ZWJ1ZmZlciAqb2ZiID0gbm91dmVhdV9mcmFtZWJ1ZmZlcihvbGRfZmIpOwotCQlub3V2ZWF1X2Jv X3VucGluKG9mYi0+bnZibyk7CisJCWlmIChwYXNzZWRfZmIpIHsKKwkJCXN0cnVjdCBub3V2ZWF1 X2ZyYW1lYnVmZmVyICpvZmIgPSBub3V2ZWF1X2ZyYW1lYnVmZmVyKHBhc3NlZF9mYik7CisJCQlu b3V2ZWF1X2JvX3VucGluKG9mYi0+bnZibyk7CisJCX0KIAl9CiAKIAludl9jcnRjLT5mYi5vZmZz ZXQgPSBmYi0+bnZiby0+Ym8ub2Zmc2V0OwpAQCAtODMzLDYgKzg0NywyMSBAQCBudjA0X2NydGNf bW9kZV9zZXRfYmFzZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsIGludCB4LCBpbnQgeSwKIAlyZXR1 cm4gMDsKIH0KIAorc3RhdGljIGludAorbnYwNF9jcnRjX21vZGVfc2V0X2Jhc2Uoc3RydWN0IGRy bV9jcnRjICpjcnRjLCBpbnQgeCwgaW50IHksCisJCQlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpv bGRfZmIpCit7CisJcmV0dXJuIG52MDRfY3J0Y19kb19tb2RlX3NldF9iYXNlKGNydGMsIG9sZF9m YiwgeCwgeSwgZmFsc2UpOworfQorCitzdGF0aWMgaW50CitudjA0X2NydGNfbW9kZV9zZXRfYmFz ZV9hdG9taWMoc3RydWN0IGRybV9jcnRjICpjcnRjLAorCQkJICAgICAgIHN0cnVjdCBkcm1fZnJh bWVidWZmZXIgKmZiLAorCQkJICAgICAgIGludCB4LCBpbnQgeSkKK3sKKwlyZXR1cm4gbnYwNF9j cnRjX2RvX21vZGVfc2V0X2Jhc2UoY3J0YywgZmIsIHgsIHksIHRydWUpOworfQorCiBzdGF0aWMg dm9pZCBudjA0X2N1cnNvcl91cGxvYWQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IG5v dXZlYXVfYm8gKnNyYywKIAkJCSAgICAgICBzdHJ1Y3Qgbm91dmVhdV9ibyAqZHN0KQogewpAQCAt OTYxLDYgKzk5MCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2NydGNfaGVscGVyX2Z1bmNz IG52MDRfY3J0Y19oZWxwZXJfZnVuY3MgPSB7CiAJLm1vZGVfZml4dXAgPSBudl9jcnRjX21vZGVf Zml4dXAsCiAJLm1vZGVfc2V0ID0gbnZfY3J0Y19tb2RlX3NldCwKIAkubW9kZV9zZXRfYmFzZSA9 IG52MDRfY3J0Y19tb2RlX3NldF9iYXNlLAorCS5tb2RlX3NldF9iYXNlX2F0b21pYyA9IG52MDRf Y3J0Y19tb2RlX3NldF9iYXNlX2F0b21pYywKIAkubG9hZF9sdXQgPSBudl9jcnRjX2dhbW1hX2xv YWQsCiB9OwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9udjUwX2NydGMu YyBiL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L252NTBfY3J0Yy5jCmluZGV4IDVkMTFlYTEuLjll Yzc5NTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L252NTBfY3J0Yy5jCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L252NTBfY3J0Yy5jCkBAIC00NzcsOCArNDc3LDkg QEAgbnY1MF9jcnRjX21vZGVfZml4dXAoc3RydWN0IGRybV9jcnRjICpjcnRjLCBzdHJ1Y3QgZHJt X2Rpc3BsYXlfbW9kZSAqbW9kZSwKIH0KIAogc3RhdGljIGludAotbnY1MF9jcnRjX2RvX21vZGVf c2V0X2Jhc2Uoc3RydWN0IGRybV9jcnRjICpjcnRjLCBpbnQgeCwgaW50IHksCi0JCQkgICBzdHJ1 Y3QgZHJtX2ZyYW1lYnVmZmVyICpvbGRfZmIsIGJvb2wgdXBkYXRlKQorbnY1MF9jcnRjX2RvX21v ZGVfc2V0X2Jhc2Uoc3RydWN0IGRybV9jcnRjICpjcnRjLAorCQkJICAgc3RydWN0IGRybV9mcmFt ZWJ1ZmZlciAqcGFzc2VkX2ZiLAorCQkJICAgaW50IHgsIGludCB5LCBib29sIHVwZGF0ZSwgYm9v bCBhdG9taWMpCiB7CiAJc3RydWN0IG5vdXZlYXVfY3J0YyAqbnZfY3J0YyA9IG5vdXZlYXVfY3J0 YyhjcnRjKTsKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gbnZfY3J0Yy0+YmFzZS5kZXY7CkBA IC00OTAsNiArNDkxLDI4IEBAIG52NTBfY3J0Y19kb19tb2RlX3NldF9iYXNlKHN0cnVjdCBkcm1f Y3J0YyAqY3J0YywgaW50IHgsIGludCB5LAogCiAJTlZfREVCVUdfS01TKGRldiwgImluZGV4ICVk XG4iLCBudl9jcnRjLT5pbmRleCk7CiAKKwkvKiBJZiBhdG9taWMsIHdlIHdhbnQgdG8gc3dpdGNo IHRvIHRoZSBmYiB3ZSB3ZXJlIHBhc3NlZCwgc28KKwkgKiBub3cgd2UgdXBkYXRlIHBvaW50ZXJz IHRvIGRvIHRoYXQuICAoV2UgZG9uJ3QgcGluOyBqdXN0CisJICogYXNzdW1lIHdlJ3JlIGFscmVh ZHkgcGlubmVkIGFuZCB1cGRhdGUgdGhlIGJhc2UgYWRkcmVzcy4pCisJICovCisJaWYgKGF0b21p YykgeworCQlkcm1fZmIgPSBwYXNzZWRfZmI7CisJCWZiID0gbm91dmVhdV9mcmFtZWJ1ZmZlcihw YXNzZWRfZmIpOworCX0KKwllbHNlIHsKKwkJLyogSWYgbm90IGF0b21pYywgd2UgY2FuIGdvIGFo ZWFkIGFuZCBwaW4sIGFuZCB1bnBpbiB0aGUKKwkJICogb2xkIGZiIHdlIHdlcmUgcGFzc2VkLgor CQkgKi8KKwkJcmV0ID0gbm91dmVhdV9ib19waW4oZmItPm52Ym8sIFRUTV9QTF9GTEFHX1ZSQU0p OworCQlpZiAocmV0KQorCQkJcmV0dXJuIHJldDsKKworCQlpZiAocGFzc2VkX2ZiKSB7CisJCQlz dHJ1Y3Qgbm91dmVhdV9mcmFtZWJ1ZmZlciAqb2ZiID0gbm91dmVhdV9mcmFtZWJ1ZmZlcihwYXNz ZWRfZmIpOworCQkJbm91dmVhdV9ib191bnBpbihvZmItPm52Ym8pOworCQl9CisJfQorCiAJc3dp dGNoIChkcm1fZmItPmRlcHRoKSB7CiAJY2FzZSAgODoKIAkJZm9ybWF0ID0gTlY1MF9FVk9fQ1JU Q19GQl9ERVBUSF84OwpAQCAtNTEyLDE1ICs1MzUsNiBAQCBudjUwX2NydGNfZG9fbW9kZV9zZXRf YmFzZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsIGludCB4LCBpbnQgeSwKIAkJIHJldHVybiAtRUlO VkFMOwogCX0KIAotCXJldCA9IG5vdXZlYXVfYm9fcGluKGZiLT5udmJvLCBUVE1fUExfRkxBR19W UkFNKTsKLQlpZiAocmV0KQotCQlyZXR1cm4gcmV0OwotCi0JaWYgKG9sZF9mYikgewotCQlzdHJ1 Y3Qgbm91dmVhdV9mcmFtZWJ1ZmZlciAqb2ZiID0gbm91dmVhdV9mcmFtZWJ1ZmZlcihvbGRfZmIp OwotCQlub3V2ZWF1X2JvX3VucGluKG9mYi0+bnZibyk7Ci0JfQotCiAJbnZfY3J0Yy0+ZmIub2Zm c2V0ID0gZmItPm52Ym8tPmJvLm9mZnNldCAtIGRldl9wcml2LT52bV92cmFtX2Jhc2U7CiAJbnZf Y3J0Yy0+ZmIudGlsZV9mbGFncyA9IGZiLT5udmJvLT50aWxlX2ZsYWdzOwogCW52X2NydGMtPmZi LmNwcCA9IGRybV9mYi0+Yml0c19wZXJfcGl4ZWwgLyA4OwpAQCAtNjcxLDE0ICs2ODUsMjIgQEAg bnY1MF9jcnRjX21vZGVfc2V0KHN0cnVjdCBkcm1fY3J0YyAqY3J0Yywgc3RydWN0IGRybV9kaXNw bGF5X21vZGUgKm1vZGUsCiAJbnZfY3J0Yy0+c2V0X2RpdGhlcihudl9jcnRjLCBudl9jb25uZWN0 b3ItPnVzZV9kaXRoZXJpbmcsIGZhbHNlKTsKIAludl9jcnRjLT5zZXRfc2NhbGUobnZfY3J0Yywg bnZfY29ubmVjdG9yLT5zY2FsaW5nX21vZGUsIGZhbHNlKTsKIAotCXJldHVybiBudjUwX2NydGNf ZG9fbW9kZV9zZXRfYmFzZShjcnRjLCB4LCB5LCBvbGRfZmIsIGZhbHNlKTsKKwlyZXR1cm4gbnY1 MF9jcnRjX2RvX21vZGVfc2V0X2Jhc2UoY3J0Yywgb2xkX2ZiLCB4LCB5LCBmYWxzZSwgZmFsc2Up OwogfQogCiBzdGF0aWMgaW50CiBudjUwX2NydGNfbW9kZV9zZXRfYmFzZShzdHJ1Y3QgZHJtX2Ny dGMgKmNydGMsIGludCB4LCBpbnQgeSwKIAkJCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKm9sZF9m YikKIHsKLQlyZXR1cm4gbnY1MF9jcnRjX2RvX21vZGVfc2V0X2Jhc2UoY3J0YywgeCwgeSwgb2xk X2ZiLCB0cnVlKTsKKwlyZXR1cm4gbnY1MF9jcnRjX2RvX21vZGVfc2V0X2Jhc2UoY3J0Yywgb2xk X2ZiLCB4LCB5LCB0cnVlLCBmYWxzZSk7Cit9CisKK3N0YXRpYyBpbnQKK252NTBfY3J0Y19tb2Rl X3NldF9iYXNlX2F0b21pYyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCisJCQkgICAgICAgc3RydWN0 IGRybV9mcmFtZWJ1ZmZlciAqZmIsCisJCQkgICAgICAgaW50IHgsIGludCB5KQoreworCXJldHVy biBudjUwX2NydGNfZG9fbW9kZV9zZXRfYmFzZShjcnRjLCBmYiwgeCwgeSwgdHJ1ZSwgdHJ1ZSk7 CiB9CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2NydGNfaGVscGVyX2Z1bmNzIG52NTBfY3J0 Y19oZWxwZXJfZnVuY3MgPSB7CkBAIC02ODgsNiArNzEwLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVj dCBkcm1fY3J0Y19oZWxwZXJfZnVuY3MgbnY1MF9jcnRjX2hlbHBlcl9mdW5jcyA9IHsKIAkubW9k ZV9maXh1cCA9IG52NTBfY3J0Y19tb2RlX2ZpeHVwLAogCS5tb2RlX3NldCA9IG52NTBfY3J0Y19t b2RlX3NldCwKIAkubW9kZV9zZXRfYmFzZSA9IG52NTBfY3J0Y19tb2RlX3NldF9iYXNlLAorCS5t b2RlX3NldF9iYXNlX2F0b21pYyA9IG52NTBfY3J0Y19tb2RlX3NldF9iYXNlX2F0b21pYywKIAku bG9hZF9sdXQgPSBudjUwX2NydGNfbHV0X2xvYWQsCiB9OwogCi0tIAoxLjYuMi41CgotLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KVGhpcyBTRi5uZXQgZW1haWwgaXMgc3BvbnNvcmVkIGJ5IAoKTWFrZSBh biBhcHAgdGhleSBjYW4ndCBsaXZlIHdpdGhvdXQKRW50ZXIgdGhlIEJsYWNrQmVycnkgRGV2ZWxv cGVyIENoYWxsZW5nZQpodHRwOi8vcC5zZi5uZXQvc2Z1L1JJTS1kZXYyZGV2IApfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpLZ2RiLWJ1Z3JlcG9ydCBtYWls aW5nIGxpc3QKS2dkYi1idWdyZXBvcnRAbGlzdHMuc291cmNlZm9yZ2UubmV0Cmh0dHBzOi8vbGlz dHMuc291cmNlZm9yZ2UubmV0L2xpc3RzL2xpc3RpbmZvL2tnZGItYnVncmVwb3J0Cg==