From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ben Skeggs Subject: [mesa v3 5/9] nouveau: fix screen creation failure paths Date: Thu, 17 Dec 2015 09:21:55 +1000 Message-ID: <1450308119-11757-5-git-send-email-skeggsb@gmail.com> References: <1450308119-11757-1-git-send-email-skeggsb@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1450308119-11757-1-git-send-email-skeggsb-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: nouveau-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Nouveau" To: nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Cc: Ben Skeggs List-Id: nouveau.vger.kernel.org RnJvbTogQmVuIFNrZWdncyA8YnNrZWdnc0ByZWRoYXQuY29tPgoKVGhlIHdpbnN5cyBsYXllciB3 b3VsZCBhdHRlbXB0IHRvIGNsZWFudXAgdGhlIG5vdXZlYXVfZGV2aWNlIGlmIHNjcmVlbgppbml0 IGZhaWxlZCwgaG93ZXZlciwgaW4gbW9zdCBwYXRocyB0aGUgcGlwZSBkcml2ZXIgd291bGQgaGF2 ZSBhbHJlYWR5CmRlc3Ryb3llZCBpdCwgcmVzdWx0aW5nIGluIGFjY2Vzc2VzIHRvIGZyZWVkIG1l bW9yeSBldGMuCgpUaGlzIGNvbW1pdCBmaXhlcyB0aGUgcHJvYmxlbSBieSBhbGxvd2luZyB0aGUg d2luc3lzIHRvIGRldGVjdCB3aGV0aGVyCnRoZSBwaXBlIGRyaXZlcidzIGRlc3Ryb3kgZnVuY3Rp b24gbmVlZHMgdG8gYmUgY2FsbGVkIG9yIG5vdC4KClNpZ25lZC1vZmYtYnk6IEJlbiBTa2VnZ3Mg PGJza2VnZ3NAcmVkaGF0LmNvbT4KLS0tCiBzcmMvZ2FsbGl1bS9kcml2ZXJzL25vdXZlYXUvbm91 dmVhdV9zY3JlZW4uYyAgICAgICAgfCAgOCArKysrKystLQogc3JjL2dhbGxpdW0vZHJpdmVycy9u b3V2ZWF1L252MzAvbnYzMF9zY3JlZW4uYyAgICAgIHwgMTkgKysrKysrKysrKy0tLS0tLS0tLQog c3JjL2dhbGxpdW0vZHJpdmVycy9ub3V2ZWF1L252NTAvbnY1MF9zY3JlZW4uYyAgICAgIHwgIDYg KysrLS0tCiBzcmMvZ2FsbGl1bS9kcml2ZXJzL25vdXZlYXUvbnZjMC9udmMwX3NjcmVlbi5jICAg ICAgfCAgOSArKysrLS0tLS0KIHNyYy9nYWxsaXVtL3dpbnN5cy9ub3V2ZWF1L2RybS9ub3V2ZWF1 X2RybV93aW5zeXMuYyB8IDE2ICsrKysrKysrKystLS0tLS0KIDUgZmlsZXMgY2hhbmdlZCwgMzMg aW5zZXJ0aW9ucygrKSwgMjUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2dhbGxpdW0v ZHJpdmVycy9ub3V2ZWF1L25vdXZlYXVfc2NyZWVuLmMgYi9zcmMvZ2FsbGl1bS9kcml2ZXJzL25v dXZlYXUvbm91dmVhdV9zY3JlZW4uYwppbmRleCBhMDEyNTc5Li4zY2RjYzIwIDEwMDY0NAotLS0g YS9zcmMvZ2FsbGl1bS9kcml2ZXJzL25vdXZlYXUvbm91dmVhdV9zY3JlZW4uYworKysgYi9zcmMv Z2FsbGl1bS9kcml2ZXJzL25vdXZlYXUvbm91dmVhdV9zY3JlZW4uYwpAQCAtMTQ3LDYgKzE0Nywx MiBAQCBub3V2ZWF1X3NjcmVlbl9pbml0KHN0cnVjdCBub3V2ZWF1X3NjcmVlbiAqc2NyZWVuLCBz dHJ1Y3Qgbm91dmVhdV9kZXZpY2UgKmRldikKICAgIGlmIChudl9kYmcpCiAgICAgICBub3V2ZWF1 X21lc2FfZGVidWcgPSBhdG9pKG52X2RiZyk7CiAKKyAgIC8qIFRoZXNlIG11c3QgYmUgc2V0IGJl Zm9yZSBhbnkgZmFpbHVyZSBpcyBwb3NzaWJsZSwgYXMgdGhlIGNsZWFudXAKKyAgICAqIHBhdGhz IGFzc3VtZSB0aGV5J3JlIHJlc3BvbnNpYmxlIGZvciBkZWxldGluZyB0aGVtLgorICAgICovCisg ICBzY3JlZW4tPmRybSA9IG5vdXZlYXVfZHJtKCZkZXYtPm9iamVjdCk7CisgICBzY3JlZW4tPmRl dmljZSA9IGRldjsKKwogICAgLyoKICAgICAqIHRoaXMgaXMgaW5pdGlhbGl6ZWQgdG8gMSBpbiBu b3V2ZWF1X2RybV9zY3JlZW5fY3JlYXRlIGFmdGVyIHNjcmVlbgogICAgICogaXMgZnVsbHkgY29u c3RydWN0ZWQgYW5kIGFkZGVkIHRvIHRoZSBnbG9iYWwgc2NyZWVuIGxpc3QuCkBAIC0xNzUsOCAr MTgxLDYgQEAgbm91dmVhdV9zY3JlZW5faW5pdChzdHJ1Y3Qgbm91dmVhdV9zY3JlZW4gKnNjcmVl biwgc3RydWN0IG5vdXZlYXVfZGV2aWNlICpkZXYpCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZGF0YSwgc2l6ZSwgJnNjcmVlbi0+Y2hhbm5lbCk7CiAgICBpZiAocmV0KQogICAgICAgcmV0 dXJuIHJldDsKLSAgIHNjcmVlbi0+ZHJtID0gbm91dmVhdV9kcm0oJmRldi0+b2JqZWN0KTsKLSAg IHNjcmVlbi0+ZGV2aWNlID0gZGV2OwogCiAgICByZXQgPSBub3V2ZWF1X2NsaWVudF9uZXcoc2Ny ZWVuLT5kZXZpY2UsICZzY3JlZW4tPmNsaWVudCk7CiAgICBpZiAocmV0KQpkaWZmIC0tZ2l0IGEv c3JjL2dhbGxpdW0vZHJpdmVycy9ub3V2ZWF1L252MzAvbnYzMF9zY3JlZW4uYyBiL3NyYy9nYWxs aXVtL2RyaXZlcnMvbm91dmVhdS9udjMwL252MzBfc2NyZWVuLmMKaW5kZXggZWEyOTgxMS4uODU0 ZjcwYyAxMDA2NDQKLS0tIGEvc3JjL2dhbGxpdW0vZHJpdmVycy9ub3V2ZWF1L252MzAvbnYzMF9z Y3JlZW4uYworKysgYi9zcmMvZ2FsbGl1bS9kcml2ZXJzL25vdXZlYXUvbnYzMC9udjMwX3NjcmVl bi5jCkBAIC00MTMsMjMgKzQxMywyMCBAQCBudjMwX3NjcmVlbl9kZXN0cm95KHN0cnVjdCBwaXBl X3NjcmVlbiAqcHNjcmVlbikKICNkZWZpbmUgRkFJTF9TQ1JFRU5fSU5JVChzdHIsIGVycikgICAg ICAgICAgICAgICAgICAgIFwKICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFwKICAgICAgIE5PVVZFQVVfRVJSKHN0ciwgZXJyKTsgICAgICAgICAg ICAgICAgICAgICAgICAgIFwKLSAgICAgIG52MzBfc2NyZWVuX2Rlc3Ryb3kocHNjcmVlbik7ICAg ICAgICAgICAgICAgICAgIFwKLSAgICAgIHJldHVybiBOVUxMOyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFwKKyAgICAgIHNjcmVlbi0+YmFzZS5iYXNlLmNvbnRleHRfY3JlYXRl ID0gTlVMTDsgICAgICAgIFwKKyAgICAgIHJldHVybiAmc2NyZWVuLT5iYXNlOyAgICAgICAgICAg ICAgICAgICAgICAgICAgIFwKICAgIH0gd2hpbGUoMCkKIAogc3RydWN0IG5vdXZlYXVfc2NyZWVu ICoKIG52MzBfc2NyZWVuX2NyZWF0ZShzdHJ1Y3Qgbm91dmVhdV9kZXZpY2UgKmRldikKIHsKLSAg IHN0cnVjdCBudjMwX3NjcmVlbiAqc2NyZWVuID0gQ0FMTE9DX1NUUlVDVChudjMwX3NjcmVlbik7 CisgICBzdHJ1Y3QgbnYzMF9zY3JlZW4gKnNjcmVlbjsKICAgIHN0cnVjdCBwaXBlX3NjcmVlbiAq cHNjcmVlbjsKICAgIHN0cnVjdCBub3V2ZWF1X3B1c2hidWYgKnB1c2g7CiAgICBzdHJ1Y3QgbnYw NF9maWZvICpmaWZvOwogICAgdW5zaWduZWQgb2NsYXNzID0gMDsKICAgIGludCByZXQsIGk7CiAK LSAgIGlmICghc2NyZWVuKQotICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgIHN3aXRjaCAoZGV2LT5j aGlwc2V0ICYgMHhmMCkgewogICAgY2FzZSAweDMwOgogICAgICAgaWYgKFJBTktJTkVfMDM5N19D SElQU0VUICYgKDEgPDwgKGRldi0+Y2hpcHNldCAmIDB4MGYpKSkKQEAgLTQ1OCwxMCArNDU1LDE2 IEBAIG52MzBfc2NyZWVuX2NyZWF0ZShzdHJ1Y3Qgbm91dmVhdV9kZXZpY2UgKmRldikKIAogICAg aWYgKCFvY2xhc3MpIHsKICAgICAgIE5PVVZFQVVfRVJSKCJ1bmtub3duIDNkIGNsYXNzIGZvciAw eCUwMnhcbiIsIGRldi0+Y2hpcHNldCk7Ci0gICAgICBGUkVFKHNjcmVlbik7CiAgICAgICByZXR1 cm4gTlVMTDsKICAgIH0KIAorICAgc2NyZWVuID0gQ0FMTE9DX1NUUlVDVChudjMwX3NjcmVlbik7 CisgICBpZiAoIXNjcmVlbikKKyAgICAgIHJldHVybiBOVUxMOworCisgICBwc2NyZWVuID0gJnNj cmVlbi0+YmFzZS5iYXNlOworICAgcHNjcmVlbi0+ZGVzdHJveSA9IG52MzBfc2NyZWVuX2Rlc3Ry b3k7CisKICAgIC8qCiAgICAgKiBTb21lIG1vZGVybiBhcHBzIHRyeSB0byB1c2UgbXNhYSB3aXRo b3V0IGtlZXBpbmcgaW4gbWluZCB0aGUKICAgICAqIHJlc3RyaWN0aW9ucyBvbiB2aWRlb21lbSBv ZiBvbGRlciBjYXJkcy4gUmVzdWx0aW5nIGluIGRtZXNnIHNheWluZzoKQEAgLTQ3OSw4ICs0ODIs NiBAQCBudjMwX3NjcmVlbl9jcmVhdGUoc3RydWN0IG5vdXZlYXVfZGV2aWNlICpkZXYpCiAgICBp ZiAoc2NyZWVuLT5tYXhfc2FtcGxlX2NvdW50ID4gNCkKICAgICAgIHNjcmVlbi0+bWF4X3NhbXBs ZV9jb3VudCA9IDQ7CiAKLSAgIHBzY3JlZW4gPSAmc2NyZWVuLT5iYXNlLmJhc2U7Ci0gICBwc2Ny ZWVuLT5kZXN0cm95ID0gbnYzMF9zY3JlZW5fZGVzdHJveTsKICAgIHBzY3JlZW4tPmdldF9wYXJh bSA9IG52MzBfc2NyZWVuX2dldF9wYXJhbTsKICAgIHBzY3JlZW4tPmdldF9wYXJhbWYgPSBudjMw X3NjcmVlbl9nZXRfcGFyYW1mOwogICAgcHNjcmVlbi0+Z2V0X3NoYWRlcl9wYXJhbSA9IG52MzBf c2NyZWVuX2dldF9zaGFkZXJfcGFyYW07CmRpZmYgLS1naXQgYS9zcmMvZ2FsbGl1bS9kcml2ZXJz L25vdXZlYXUvbnY1MC9udjUwX3NjcmVlbi5jIGIvc3JjL2dhbGxpdW0vZHJpdmVycy9ub3V2ZWF1 L252NTAvbnY1MF9zY3JlZW4uYwppbmRleCA4MmI5ZTkzLi40NmM4MTJiIDEwMDY0NAotLS0gYS9z cmMvZ2FsbGl1bS9kcml2ZXJzL25vdXZlYXUvbnY1MC9udjUwX3NjcmVlbi5jCisrKyBiL3NyYy9n YWxsaXVtL2RyaXZlcnMvbm91dmVhdS9udjUwL252NTBfc2NyZWVuLmMKQEAgLTc2Miw2ICs3NjIs NyBAQCBudjUwX3NjcmVlbl9jcmVhdGUoc3RydWN0IG5vdXZlYXVfZGV2aWNlICpkZXYpCiAgICBp ZiAoIXNjcmVlbikKICAgICAgIHJldHVybiBOVUxMOwogICAgcHNjcmVlbiA9ICZzY3JlZW4tPmJh c2UuYmFzZTsKKyAgIHBzY3JlZW4tPmRlc3Ryb3kgPSBudjUwX3NjcmVlbl9kZXN0cm95OwogCiAg ICByZXQgPSBub3V2ZWF1X3NjcmVlbl9pbml0KCZzY3JlZW4tPmJhc2UsIGRldik7CiAgICBpZiAo cmV0KSB7CkBAIC03ODIsNyArNzgzLDYgQEAgbnY1MF9zY3JlZW5fY3JlYXRlKHN0cnVjdCBub3V2 ZWF1X2RldmljZSAqZGV2KQogCiAgICBjaGFuID0gc2NyZWVuLT5iYXNlLmNoYW5uZWw7CiAKLSAg IHBzY3JlZW4tPmRlc3Ryb3kgPSBudjUwX3NjcmVlbl9kZXN0cm95OwogICAgcHNjcmVlbi0+Y29u dGV4dF9jcmVhdGUgPSBudjUwX2NyZWF0ZTsKICAgIHBzY3JlZW4tPmlzX2Zvcm1hdF9zdXBwb3J0 ZWQgPSBudjUwX3NjcmVlbl9pc19mb3JtYXRfc3VwcG9ydGVkOwogICAgcHNjcmVlbi0+Z2V0X3Bh cmFtID0gbnY1MF9zY3JlZW5fZ2V0X3BhcmFtOwpAQCAtOTY0LDggKzk2NCw4IEBAIG52NTBfc2Ny ZWVuX2NyZWF0ZShzdHJ1Y3Qgbm91dmVhdV9kZXZpY2UgKmRldikKICAgIHJldHVybiAmc2NyZWVu LT5iYXNlOwogCiBmYWlsOgotICAgbnY1MF9zY3JlZW5fZGVzdHJveShwc2NyZWVuKTsKLSAgIHJl dHVybiBOVUxMOworICAgc2NyZWVuLT5iYXNlLmJhc2UuY29udGV4dF9jcmVhdGUgPSBOVUxMOwor ICAgcmV0dXJuICZzY3JlZW4tPmJhc2U7CiB9CiAKIGludApkaWZmIC0tZ2l0IGEvc3JjL2dhbGxp dW0vZHJpdmVycy9ub3V2ZWF1L252YzAvbnZjMF9zY3JlZW4uYyBiL3NyYy9nYWxsaXVtL2RyaXZl cnMvbm91dmVhdS9udmMwL252YzBfc2NyZWVuLmMKaW5kZXggYjU3M2FkYS4uYjVkMDgzMCAxMDA2 NDQKLS0tIGEvc3JjL2dhbGxpdW0vZHJpdmVycy9ub3V2ZWF1L252YzAvbnZjMF9zY3JlZW4uYwor KysgYi9zcmMvZ2FsbGl1bS9kcml2ZXJzL25vdXZlYXUvbnZjMC9udmMwX3NjcmVlbi5jCkBAIC02 MTgsOCArNjE4LDcgQEAgbnZjMF9zY3JlZW5fcmVzaXplX3Rsc19hcmVhKHN0cnVjdCBudmMwX3Nj cmVlbiAqc2NyZWVuLAogI2RlZmluZSBGQUlMX1NDUkVFTl9JTklUKHN0ciwgZXJyKSAgICAgICAg ICAgICAgICAgICAgXAogICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXAogICAgICAgTk9VVkVBVV9FUlIoc3RyLCBlcnIpOyAgICAgICAgICAgICAg ICAgICAgICAgICAgXAotICAgICAgbnZjMF9zY3JlZW5fZGVzdHJveShwc2NyZWVuKTsgICAgICAg ICAgICAgICAgICAgXAotICAgICAgcmV0dXJuIE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXAorICAgICAgZ290byBmYWlsOyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXAogICAgfSB3aGlsZSgwKQogCiBzdHJ1Y3Qgbm91dmVhdV9zY3JlZW4gKgpA QCAtNjUxLDYgKzY1MCw3IEBAIG52YzBfc2NyZWVuX2NyZWF0ZShzdHJ1Y3Qgbm91dmVhdV9kZXZp Y2UgKmRldikKICAgIGlmICghc2NyZWVuKQogICAgICAgcmV0dXJuIE5VTEw7CiAgICBwc2NyZWVu ID0gJnNjcmVlbi0+YmFzZS5iYXNlOworICAgcHNjcmVlbi0+ZGVzdHJveSA9IG52YzBfc2NyZWVu X2Rlc3Ryb3k7CiAKICAgIHJldCA9IG5vdXZlYXVfc2NyZWVuX2luaXQoJnNjcmVlbi0+YmFzZSwg ZGV2KTsKICAgIGlmIChyZXQpIHsKQEAgLTY3Myw3ICs2NzMsNiBAQCBudmMwX3NjcmVlbl9jcmVh dGUoc3RydWN0IG5vdXZlYXVfZGV2aWNlICpkZXYpCiAgICAgICBzY3JlZW4tPmJhc2UudmlkbWVt X2JpbmRpbmdzID0gMDsKICAgIH0KIAotICAgcHNjcmVlbi0+ZGVzdHJveSA9IG52YzBfc2NyZWVu X2Rlc3Ryb3k7CiAgICBwc2NyZWVuLT5jb250ZXh0X2NyZWF0ZSA9IG52YzBfY3JlYXRlOwogICAg cHNjcmVlbi0+aXNfZm9ybWF0X3N1cHBvcnRlZCA9IG52YzBfc2NyZWVuX2lzX2Zvcm1hdF9zdXBw b3J0ZWQ7CiAgICBwc2NyZWVuLT5nZXRfcGFyYW0gPSBudmMwX3NjcmVlbl9nZXRfcGFyYW07CkBA IC0xMDY2LDggKzEwNjUsOCBAQCBudmMwX3NjcmVlbl9jcmVhdGUoc3RydWN0IG5vdXZlYXVfZGV2 aWNlICpkZXYpCiAgICByZXR1cm4gJnNjcmVlbi0+YmFzZTsKIAogZmFpbDoKLSAgIG52YzBfc2Ny ZWVuX2Rlc3Ryb3kocHNjcmVlbik7Ci0gICByZXR1cm4gTlVMTDsKKyAgIHNjcmVlbi0+YmFzZS5i YXNlLmNvbnRleHRfY3JlYXRlID0gTlVMTDsKKyAgIHJldHVybiAmc2NyZWVuLT5iYXNlOwogfQog CiBpbnQKZGlmZiAtLWdpdCBhL3NyYy9nYWxsaXVtL3dpbnN5cy9ub3V2ZWF1L2RybS9ub3V2ZWF1 X2RybV93aW5zeXMuYyBiL3NyYy9nYWxsaXVtL3dpbnN5cy9ub3V2ZWF1L2RybS9ub3V2ZWF1X2Ry bV93aW5zeXMuYwppbmRleCBlMTE3ZGZjLi40NTY1MzBkIDEwMDY0NAotLS0gYS9zcmMvZ2FsbGl1 bS93aW5zeXMvbm91dmVhdS9kcm0vbm91dmVhdV9kcm1fd2luc3lzLmMKKysrIGIvc3JjL2dhbGxp dW0vd2luc3lzL25vdXZlYXUvZHJtL25vdXZlYXVfZHJtX3dpbnN5cy5jCkBAIC01OSw3ICs1OSw3 IEBAIG5vdXZlYXVfZHJtX3NjcmVlbl9jcmVhdGUoaW50IGZkKQogewogCXN0cnVjdCBub3V2ZWF1 X2RldmljZSAqZGV2ID0gTlVMTDsKIAlzdHJ1Y3Qgbm91dmVhdV9zY3JlZW4gKigqaW5pdCkoc3Ry dWN0IG5vdXZlYXVfZGV2aWNlICopOwotCXN0cnVjdCBub3V2ZWF1X3NjcmVlbiAqc2NyZWVuOwor CXN0cnVjdCBub3V2ZWF1X3NjcmVlbiAqc2NyZWVuID0gTlVMTDsKIAlpbnQgcmV0LCBkdXBmZCA9 IC0xOwogCiAJcGlwZV9tdXRleF9sb2NrKG5vdXZlYXVfc2NyZWVuX211dGV4KTsKQEAgLTExNyw3 ICsxMTcsNyBAQCBub3V2ZWF1X2RybV9zY3JlZW5fY3JlYXRlKGludCBmZCkKIAl9CiAKIAlzY3Jl ZW4gPSBpbml0KGRldik7Ci0JaWYgKCFzY3JlZW4pCisJaWYgKCFzY3JlZW4gfHwgIXNjcmVlbi0+ YmFzZS5jb250ZXh0X2NyZWF0ZSkKIAkJZ290byBlcnI7CiAKIAkvKiBVc2UgZHVwZmQgaW4gaGFz aCB0YWJsZSwgdG8gYXZvaWQgZXJyb3JzIGlmIHRoZSBvcmlnaW5hbCBmZCBnZXRzCkBAIC0xMzAs MTAgKzEzMCwxNCBAQCBub3V2ZWF1X2RybV9zY3JlZW5fY3JlYXRlKGludCBmZCkKIAlyZXR1cm4g JnNjcmVlbi0+YmFzZTsKIAogZXJyOgotCWlmIChkZXYpCi0JCW5vdXZlYXVfZGV2aWNlX2RlbCgm ZGV2KTsKLQllbHNlIGlmIChkdXBmZCA+PSAwKQotCQljbG9zZShkdXBmZCk7CisJaWYgKHNjcmVl bikgeworCQlzY3JlZW4tPmJhc2UuZGVzdHJveSgmc2NyZWVuLT5iYXNlKTsKKwl9IGVsc2Ugewor CQlpZiAoZGV2KQorCQkJbm91dmVhdV9kZXZpY2VfZGVsKCZkZXYpOworCQllbHNlIGlmIChkdXBm ZCA+PSAwKQorCQkJY2xvc2UoZHVwZmQpOworCX0KIAlwaXBlX211dGV4X3VubG9jayhub3V2ZWF1 X3NjcmVlbl9tdXRleCk7CiAJcmV0dXJuIE5VTEw7CiB9Ci0tIAoyLjYuNAoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTm91dmVhdSBtYWlsaW5nIGxpc3QK Tm91dmVhdUBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL25vdXZlYXUK