From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ronald Rojas Subject: [PATCH RFC 14/59] benchmark: Store data in terms of worker sets and worker ids Date: Wed, 28 Dec 2016 20:14:07 -0500 Message-ID: <1482974092-15891-14-git-send-email-ronladred@gmail.com> References: <1482974092-15891-1-git-send-email-ronladred@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1482974092-15891-1-git-send-email-ronladred@gmail.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel , Ian Jackson , Wei Liu , George Dunlap , George Dunlap List-Id: xen-devel@lists.xenproject.org RnJvbTogR2VvcmdlIER1bmxhcCA8Z2VvcmdlLmR1bmxhcEBjaXRyaXguY29tPgoKLi4ucmF0aGVy IHRoYW4gaGF2aW5nIGEgc2luZ2xlIGdsb2JhbCBpbmRleCwgaW4gcHJlcGFyYXRpb24gZm9yCnN1 bW1hcml6aW5nIHNldHMgb2Ygd29ya2VycyBhcyB3ZWxsIGFzIGluZGl2aWR1YWwgd29ya2Vycy4K ClRvIGRvIHRoaXM6CgotIERlZmluZSBhIFdvcmtlcklkIHR5cGUgd2hpY2ggY29uc2lzdHMgb2Yg dGhlIHdvcmtlciBzZXQgKyB3b3JrZXIgaWQKICB3aXRoaW4gdGhhdCBzZXQuICBQYXNzIHRoaXMg dG8gdGhlIHdvcmtlcnMgYW5kIHVzZSB0aGlzIGluIHRoZQogIHJlcG9ydCB2YWx1ZXMuCgotIFVz ZSBtYXBzIGJhc2VkIG9uIHRoaXMgV29ya2VySWQgZm9yIGN1cnJlbnRseSBydW5uaW5nIHByb2Nl c3NlcywKICBhY2N1bXVsYXRlZCBkYXRhLCBhbmQgKGZvciBub3cpIHRoZSByZXN1bHRzIHN1bW1h cnkuCgpJbiBhIGZ1dHVyZSBwYXRjaCwgd2UnbGwgYnJlYWsgZG93biB0aGUgcmVzdWx0cyBzdW1t YXJ5IGJ5IHdvcmtlciBzZXRzCmFzIHdlbGwuCgpTaWduZWQtb2ZmLWJ5OiBHZW9yZ2UgRHVubGFw IDxnZW9yZ2UuZHVubGFwQGNpdHJpeC5jb20+Ci0tLQogYmVuY2htYXJrLmdvICAgICB8IDEyMCAr KysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBw cm9jZXNzd29ya2VyLmdvIHwgICA0ICstCiB4ZW53b3JrZXIuZ28gICAgIHwgICA2ICstLQogMyBm aWxlcyBjaGFuZ2VkLCA2MyBpbnNlcnRpb25zKCspLCA2NyBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS9iZW5jaG1hcmsuZ28gYi9iZW5jaG1hcmsuZ28KaW5kZXggMmE3OGQyNi4uNDM1NGE0NyAx MDA2NDQKLS0tIGEvYmVuY2htYXJrLmdvCisrKyBiL2JlbmNobWFyay5nbwpAQCAtMzMsOCArMzMs MTcgQEAgdHlwZSBXb3JrZXJTdW1tYXJ5IHN0cnVjdCB7CiAJTWluVHB1dCBmbG9hdDY0CiB9CiAK LXR5cGUgV29ya2VyUmVwb3J0IHN0cnVjdCB7Cit0eXBlIFdvcmtlcklkIHN0cnVjdCB7CisJU2V0 IGludAogCUlkIGludAorfQorCitmdW5jICh3aWQgV29ya2VySWQpIFN0cmluZygpIChzdHJpbmcp IHsKKwlyZXR1cm4gZm10LlNwcmludGYoIiVkOiVkIiwgd2lkLlNldCwgd2lkLklkKQorfQorCit0 eXBlIFdvcmtlclJlcG9ydCBzdHJ1Y3QgeworCUlkIFdvcmtlcklkCiAJTm93IGludAogCU1vcHMg aW50CiAJTWF4RGVsdGEgaW50CkBAIC01MCw3ICs1OSw3IEBAIHR5cGUgV29ya2VyU2V0IHN0cnVj dCB7CiB9CiAKIHR5cGUgV29ya2VyIGludGVyZmFjZSB7Ci0JU2V0SWQoaW50KQorCVNldElkKFdv cmtlcklkKQogCUluaXQoV29ya2VyUGFyYW1zKSBlcnJvcgogCVNodXRkb3duKCkKIAlQcm9jZXNz KGNoYW4gV29ya2VyUmVwb3J0LCBjaGFuIGJvb2wpCkBAIC04NiwxMyArOTUsMTMgQEAgZnVuYyBS ZXBvcnQod3MgKldvcmtlclN0YXRlLCByIFdvcmtlclJlcG9ydCkgewogCiAJCXRwdXQgOj0gVGhy b3VnaHB1dChsci5Ob3csIGxyLk1vcHMsIHIuTm93LCByLk1vcHMpCiAJCQotCQlmbXQuUHJpbnRm KCIlZCBUaW1lOiAlMi4zZiBNb3BzOiAlZCBUcHV0OiAlNC4yZlxuIiwgci5JZCwgdGltZSwgbW9w cywgdHB1dCk7CisJCWZtdC5QcmludGYoIiV2IFRpbWU6ICUyLjNmIE1vcHM6ICVkIFRwdXQ6ICU0 LjJmXG4iLCByLklkLCB0aW1lLCBtb3BzLCB0cHV0KTsKIAl9CiAKIAl3cy5MYXN0UmVwb3J0ID0g cgogfQogCi10eXBlIFdvcmtlckxpc3QgW11Xb3JrZXJTdGF0ZQordHlwZSBXb3JrZXJMaXN0IG1h cFtXb3JrZXJJZF0qV29ya2VyU3RhdGUKIAogZnVuYyAod3MgKldvcmtlckxpc3QpIFN0YXJ0KHJl cG9ydCBjaGFuIFdvcmtlclJlcG9ydCwgZG9uZSBjaGFuIGJvb2wpIChpIGludCkgewogCWkgPSAw CkBAIC0xMTQsNDEgKzEyMyw0NCBAQCBjb25zdCAoCiAJV29ya2VyWGVuID0gaW90YQogKQogCi1m dW5jIE5ld1dvcmtlckxpc3Qod29ya2VycyBbXVdvcmtlclNldCwgd29ya2VyVHlwZSBpbnQpICh3 cyBXb3JrZXJMaXN0LCBlcnIgZXJyb3IpIHsKLQljb3VudCA6PSAwCitmdW5jIE5ld1dvcmtlckxp c3Qod29ya2VycyBbXVdvcmtlclNldCwgd29ya2VyVHlwZSBpbnQpICh3bCBXb3JrZXJMaXN0LCBl cnIgZXJyb3IpIHsKKwl3bCA9IFdvcmtlckxpc3QobWFrZShtYXBbV29ya2VySWRdKldvcmtlclN0 YXRlKSkKIAotCS8vIHdzaTogV29ya2VyU2V0IGluZGV4CiAJZm9yIHdzaSA6PSByYW5nZSB3b3Jr ZXJzIHsKLQkJY291bnQgKz0gd29ya2Vyc1t3c2ldLkNvdW50Ci0JfQorCQlmb3IgaSA6PSAwOyBp IDwgd29ya2Vyc1t3c2ldLkNvdW50OyBpID0gaSsxIHsKKwkJCUlkIDo9IFdvcmtlcklke1NldDp3 c2ksSWQ6aX0KIAotCWZtdC5QcmludGxuKCJNYWtpbmcgIiwgY291bnQsICIgdG90YWwgd29ya2Vy cyIpCi0Jd3MgPSBXb3JrZXJMaXN0KG1ha2UoW11Xb3JrZXJTdGF0ZSwgY291bnQpKQorCQkJd3Mg Oj0gd2xbSWRdCiAKLQkvLyB3bGk6IFdvcmtlckxpc3QgaW5kZXgKLQl3bGkgOj0gMAotCWZvciB3 c2kgOj0gcmFuZ2Ugd29ya2VycyB7Ci0JCWZvciBpIDo9IDA7IGkgPCB3b3JrZXJzW3dzaV0uQ291 bnQ7IGksIHdsaSA9IGkrMSwgd2xpKzEgeworCQkJaWYgd3MgIT0gbmlsIHsKKwkJCQlwYW5pYygi RHVwbGljYXRlIHdvcmtlciBmb3IgaWQhIikKKwkJCX0KKwkJCQorCQkJd3MgPSAmV29ya2VyU3Rh dGV7fQorCQkJCiAJCQlzd2l0Y2ggd29ya2VyVHlwZSB7CiAJCQljYXNlIFdvcmtlclByb2Nlc3M6 Ci0JCQkJd3Nbd2xpXS53ID0gJlByb2Nlc3NXb3JrZXJ7fQorCQkJCXdzLncgPSAmUHJvY2Vzc1dv cmtlcnt9CiAJCQljYXNlIFdvcmtlclhlbjoKLQkJCQl3c1t3bGldLncgPSAmWGVuV29ya2Vye30K KwkJCQl3cy53ID0gJlhlbldvcmtlcnt9CiAJCQlkZWZhdWx0OgogCQkJCWVyciA9IGZtdC5FcnJv cmYoIlVua25vd24gdHlwZTogJWQiLCB3b3JrZXJUeXBlKQorCQkJCXJldHVybgogCQkJfQotCQkJ d3Nbd2xpXS53LlNldElkKHdsaSkKKwkJCQorCQkJd3Mudy5TZXRJZChJZCkKIAkJCi0JCQl3c1t3 bGldLncuSW5pdCh3b3JrZXJzW3dzaV0uUGFyYW1zKQorCQkJd3Mudy5Jbml0KHdvcmtlcnNbd3Np XS5QYXJhbXMpCisKKwkJCXdsW0lkXSA9IHdzCiAJCX0KIAl9CiAJcmV0dXJuCiB9CiAKIHR5cGUg QmVuY2htYXJrUnVuRGF0YSBzdHJ1Y3QgewotCVdvcmtlckNvdW50IGludAogCVJhdyBbXVdvcmtl clJlcG9ydCAgICAgICBganNvbjoiLG9taXRlbXB0eSJgCi0JU3VtbWFyeSBbXVdvcmtlclN1bW1h cnkgIGBqc29uOiIsb21pdGVtcHR5ImAKKwlTdW1tYXJ5IG1hcFtXb3JrZXJJZF0qV29ya2VyU3Vt bWFyeSAgYGpzb246IixvbWl0ZW1wdHkiYAogfQogCiB0eXBlIEJlbmNobWFya1J1biBzdHJ1Y3Qg ewpAQCAtMTc0LDggKzE4Niw2IEBAIGZ1bmMgKHJ1biAqQmVuY2htYXJrUnVuKSBSdW4oKSAoZXJy IGVycm9yKSB7CiAJCiAJaSA6PSBXb3JrZXJzLlN0YXJ0KHJlcG9ydCwgZG9uZSkKIAotCXJ1bi5S ZXN1bHRzLldvcmtlckNvdW50ID0gaQotCiAJLy8gRklYTUU6CiAJLy8gMS4gTWFrZSBhIHplcm8g dGltZW91dCBtZWFuICJuZXZlciIKIAkvLyAyLiBNYWtlIHRoZSBzaWduYWxzIC8gdGltZW91dCB0 aGluZyBhIGJpdCBtb3JlIHJhdGlvbmFsOyBzaWduYWwgdGhlbiB0aW1lb3V0IHNob3VsZG4ndCBo YXJkIGtpbGwKQEAgLTE4NSw3ICsxOTUsNyBAQCBmdW5jIChydW4gKkJlbmNobWFya1J1bikgUnVu KCkgKGVyciBlcnJvcikgewogCQlzZWxlY3QgewogCQljYXNlIHIgOj0gPC1yZXBvcnQ6CiAJCQly dW4uUmVzdWx0cy5SYXcgPSBhcHBlbmQocnVuLlJlc3VsdHMuUmF3LCByKQotCQkJUmVwb3J0KCZX b3JrZXJzW3IuSWRdLCByKQorCQkJUmVwb3J0KFdvcmtlcnNbci5JZF0sIHIpCiAJCWNhc2UgPC1k b25lOgogCQkJaS0tOwogCQkJZm10LlByaW50bG4oaSwgIndvcmtlcnMgbGVmdCIpOwpAQCAtMjE1 LDIyICsyMjUsMTEgQEAgZnVuYyAocnVuICpCZW5jaG1hcmtSdW4pIFJ1bigpIChlcnIgZXJyb3Ip IHsKIH0KIAogZnVuYyAocnVuICpCZW5jaG1hcmtSdW4pIGNoZWNrU3VtbWFyeSgpIChkb25lIGJv b2wsIGVyciBlcnJvcikgewotCWlmIHJ1bi5SZXN1bHRzLldvcmtlckNvdW50ID09IDAgewotCQll cnIgPSBmbXQuRXJyb3JmKCJJbnRlcm5hbCBlcnJvcjogV29ya2VyQ291bnQgMCEiKQotCQlyZXR1 cm4KLQl9Ci0JCi0JaWYgbGVuKHJ1bi5SZXN1bHRzLlN1bW1hcnkpID09IHJ1bi5SZXN1bHRzLldv cmtlckNvdW50IHsKKwlpZiBydW4uUmVzdWx0cy5TdW1tYXJ5ICE9IG5pbCB7CiAJCWRvbmUgPSB0 cnVlCiAJCXJldHVybiAKIAl9CiAJCi0JaWYgbGVuKHJ1bi5SZXN1bHRzLlN1bW1hcnkpICE9IDAg ewotCQllcnIgPSBmbXQuRXJyb3JmKCJJbnRlcm5hbCBlcnJvcjogbGVuKFN1bW1hcnkpICVkLCBs ZW4oV29ya2VycykgJWQhXG4iLAotCQkJbGVuKHJ1bi5SZXN1bHRzLlN1bW1hcnkpLCBydW4uUmVz dWx0cy5Xb3JrZXJDb3VudCkKLQkJcmV0dXJuCi0JfQotCiAJcmV0dXJuCiB9CiAKQEAgLTIzOSwz MyArMjM4LDMxIEBAIGZ1bmMgKHJ1biAqQmVuY2htYXJrUnVuKSBQcm9jZXNzKCkgKGVyciBlcnJv cikgewogCWlmIGRvbmUgfHwgZXJyICE9IG5pbCB7CiAJCXJldHVybgogCX0KLQkKLQl3Y291bnQg Oj0gcnVuLlJlc3VsdHMuV29ya2VyQ291bnQKLQotCWlmIGxlbihydW4uUmVzdWx0cy5TdW1tYXJ5 KSAhPSAwIHsKLQkJZXJyID0gZm10LkVycm9yZigiSW50ZXJuYWwgZXJyb3I6IGxlbihTdW1tYXJ5 KSAlZCwgbGVuKFdvcmtlcnMpICVkIVxuIiwKLQkJCWxlbihydW4uUmVzdWx0cy5TdW1tYXJ5KSwg d2NvdW50KQotCQlyZXR1cm4KLQl9CiAKLQlydW4uUmVzdWx0cy5TdW1tYXJ5ID0gbWFrZShbXVdv cmtlclN1bW1hcnksIHdjb3VudCkKKwlydW4uUmVzdWx0cy5TdW1tYXJ5ID0gbWFrZShtYXBbV29y a2VySWRdKldvcmtlclN1bW1hcnkpCiAKLQkvLyBGSVhNRTogRmlsdGVyIG91dCByZXN1bHRzIHdo aWNoIHN0YXJ0ZWQgYmVmb3JlIGFsbCBoYXZlIHN0YXJ0ZWQKLQkKLQlkYXRhIDo9IG1ha2UoW11z dHJ1Y3R7CisJdHlwZSBEYXRhIHN0cnVjdHsKIAkJc3RhcnRUaW1lIGludAogCQlsYXN0VGltZSBp bnQKLQkJbGFzdE1vcHMgaW50fSwgd2NvdW50KQorCQlsYXN0TW9wcyBpbnQKKwl9CisJCisJZGF0 YSA6PSBtYWtlKG1hcFtXb3JrZXJJZF0qRGF0YSkKIAorCS8vIEZJWE1FOiBGaWx0ZXIgb3V0IHJl c3VsdHMgd2hpY2ggc3RhcnRlZCBiZWZvcmUgYWxsIGhhdmUgc3RhcnRlZAogCWZvciBpIDo9IHJh bmdlIHJ1bi5SZXN1bHRzLlJhdyB7CiAJCWUgOj0gcnVuLlJlc3VsdHMuUmF3W2ldCi0JCWlmIGUu SWQgPiB3Y291bnQgewotCQkJZXJyID0gZm10LkVycm9yZigiSW50ZXJuYWwgZXJyb3I6IGlkICVk ID4gd2NvdW50ICVkIiwgZS5JZCwgd2NvdW50KQotCQkJcmV0dXJuCi0JCX0KIAkJCi0JCWQgOj0g JmRhdGFbZS5JZF0KLQkJcyA6PSAmcnVuLlJlc3VsdHMuU3VtbWFyeVtlLklkXQorCQlkIDo9IGRh dGFbZS5JZF0KKwkJaWYgZCA9PSBuaWwgeworCQkJZCA9ICZEYXRhe30KKwkJCWRhdGFbZS5JZF0g PSBkCisJCX0KKwkJcyA6PSBydW4uUmVzdWx0cy5TdW1tYXJ5W2UuSWRdCisJCWlmIHMgPT0gbmls IHsKKwkJCXMgPSAmV29ya2VyU3VtbWFyeXt9CisJCQlydW4uUmVzdWx0cy5TdW1tYXJ5W2UuSWRd ID0gcworCQl9CiAKIAkJaWYgZC5zdGFydFRpbWUgPT0gMCB7CiAJCQlkLnN0YXJ0VGltZSA9IGUu Tm93CkBAIC0yODMsOCArMjgwLDkgQEAgZnVuYyAocnVuICpCZW5jaG1hcmtSdW4pIFByb2Nlc3Mo KSAoZXJyIGVycm9yKSB7CiAJCWQubGFzdE1vcHMgPSBlLk1vcHMKIAl9CiAKLQlmb3IgaSA6PSBy YW5nZSBkYXRhIHsKLQkJcnVuLlJlc3VsdHMuU3VtbWFyeVtpXS5BdmdUcHV0ID0gVGhyb3VnaHB1 dChkYXRhW2ldLnN0YXJ0VGltZSwgMCwgZGF0YVtpXS5sYXN0VGltZSwgZGF0YVtpXS5sYXN0TW9w cykKKwlmb3IgSWQgOj0gcmFuZ2UgZGF0YSB7CisJCXJ1bi5SZXN1bHRzLlN1bW1hcnlbSWRdLkF2 Z1RwdXQgPSBUaHJvdWdocHV0KGRhdGFbSWRdLnN0YXJ0VGltZSwKKwkJCTAsIGRhdGFbSWRdLmxh c3RUaW1lLCBkYXRhW0lkXS5sYXN0TW9wcykKIAl9CiAJCiAJcmV0dXJuCkBAIC0zMDMsNyArMzAx LDYgQEAgZnVuYyAocnVuICpCZW5jaG1hcmtSdW4pIFRleHRSZXBvcnQoKSAoZXJyIGVycm9yKSB7 CiAKIAlmbXQuUHJpbnRmKCI9PSBSVU4gJXMgPT0iLCBydW4uTGFiZWwpCiAKLQlmbXQuUHJpbnRm KCIgV29ya2VycyAoJWQgdG90YWwpOlxuIiwgcnVuLlJlc3VsdHMuV29ya2VyQ291bnQpCiAJd1N0 YXJ0IDo9IDAKIAlmb3IgaSA6PSByYW5nZSBydW4uV29ya2VycyB7CiAJCXdzIDo9ICZydW4uV29y a2Vyc1tpXQpAQCAtMzE3LDEwICszMTQsOSBAQCBmdW5jIChydW4gKkJlbmNobWFya1J1bikgVGV4 dFJlcG9ydCgpIChlcnIgZXJyb3IpIHsKIAl9CiAKIAlmbXQuUHJpbnRmKCJcbiU4cyAlOHMgJThz ICU4c1xuIiwgImlkIiwgImF2ZyIsICJtaW4iLCAibWF4IikKLQlmb3IgaSA6PSAwOyBpIDwgcnVu LlJlc3VsdHMuV29ya2VyQ291bnQ7IGkrKyB7Ci0JCXMgOj0gJnJ1bi5SZXN1bHRzLlN1bW1hcnlb aV0KLQkJZm10LlByaW50ZigiJThkICU4LjJmICU4LjJmICU4LjJmXG4iLAotCQkJaSwgcy5BdmdU cHV0LCBzLk1pblRwdXQsIHMuTWF4VHB1dCkKKwlmb3IgaWQsIHMgOj0gcmFuZ2UgcnVuLlJlc3Vs dHMuU3VtbWFyeSB7CisJCWZtdC5QcmludGYoIiU4diAlOC4yZiAlOC4yZiAlOC4yZlxuIiwKKwkJ CWlkLCBzLkF2Z1RwdXQsIHMuTWluVHB1dCwgcy5NYXhUcHV0KQogCX0KIAogCXJldHVybgpkaWZm IC0tZ2l0IGEvcHJvY2Vzc3dvcmtlci5nbyBiL3Byb2Nlc3N3b3JrZXIuZ28KaW5kZXggNmY3MGNl MS4uNWUyNmQ4MSAxMDA2NDQKLS0tIGEvcHJvY2Vzc3dvcmtlci5nbworKysgYi9wcm9jZXNzd29y a2VyLmdvCkBAIC0yOCwxMyArMjgsMTMgQEAgaW1wb3J0ICgKICkKIAogdHlwZSBQcm9jZXNzV29y a2VyIHN0cnVjdCB7Ci0JaWQgaW50CisJaWQgV29ya2VySWQKIAljICpleGVjLkNtZAogCXN0ZG91 dCBpby5SZWFkQ2xvc2VyCiAJanNvblN0YXJ0ZWQgYm9vbAogfQogCi1mdW5jICh3ICpQcm9jZXNz V29ya2VyKSBTZXRJZChpIGludCkgeworZnVuYyAodyAqUHJvY2Vzc1dvcmtlcikgU2V0SWQoaSBX b3JrZXJJZCkgewogCXcuaWQgPSBpCiB9CiAKZGlmZiAtLWdpdCBhL3hlbndvcmtlci5nbyBiL3hl bndvcmtlci5nbwppbmRleCA3ZTg1MDMyLi5lMTQ2NzZjIDEwMDY0NAotLS0gYS94ZW53b3JrZXIu Z28KKysrIGIveGVud29ya2VyLmdvCkBAIC0yOCw3ICsyOCw3IEBAIGltcG9ydCAoCiApCiAKIHR5 cGUgWGVuV29ya2VyIHN0cnVjdCB7Ci0JaWQgaW50CisJaWQgV29ya2VySWQKIAl2bW5hbWUgc3Ry aW5nCiAJZG9taWQgaW50CiAJY29uc29sZUNtZCAqZXhlYy5DbWQKQEAgLTUyLDkgKzUyLDkgQEAg dHlwZSBSdW1wUnVuQ29uZmlnIHN0cnVjdCB7CiAJSG9zdG5hbWUgc3RyaW5nICAgICAgYGpzb246 Imhvc3RuYW1lImAKIH0KIAotZnVuYyAodyAqWGVuV29ya2VyKSBTZXRJZChpIGludCkgeworZnVu YyAodyAqWGVuV29ya2VyKSBTZXRJZChpIFdvcmtlcklkKSB7CiAJdy5pZCA9IGkKLQl3LnZtbmFt ZSA9IGZtdC5TcHJpbnRmKCJ3b3JrZXItJWQiLCBpKQorCXcudm1uYW1lID0gZm10LlNwcmludGYo Indvcmtlci0ldiIsIGkpCiAJdy5kb21pZCA9IC0xIC8vIElOVkFMSUQgRE9NSUQKIH0KIAotLSAK Mi43LjQKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpY ZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlz dHMueGVuLm9yZy94ZW4tZGV2ZWwK