From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ronald Rojas Subject: [PATCH RFC 51/59] controller: Make and/or modify cpupools when possible Date: Wed, 28 Dec 2016 20:14:44 -0500 Message-ID: <1482974092-15891-51-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 RnJvbTogR2VvcmdlIER1bmxhcCA8Z2VvcmdlLmR1bmxhcEBjaXRyaXguY29tPgoKTWFrZSBpdCBw b3NzaWJsZSBmb3Igc2NoZWRiZW5jaCB0byBtb2RpZnkgY3B1cG9vbHMgaW4gb3JkZXIgdG8gc2F0 aXNmeQpydW4gY29uc3RyYWludHMuCgpNYWtlIGEgIlJ1bkNvbmZpZyIgb3B0aW9uIHdoaWNoIGNv bnRhaW5zIHRoZSBuYW1lIG9mIHRoZSBwb29sLCB0aGUKc2NoZWR1bGVyLCBhbmQgdGhlIG51bWJl ciBvZiBjcHVzLiAgQXMgd2l0aCBXb3JrZXJDb25maWcsIG1ha2UgdGhlc2UKYXV0b21hdGljYWxs eSBpbmhlcml0ZWQgZnJvbSBsYXJnZXIgbGV2ZWxzIHRvIHNtYWxsZXIgbGV2ZWxzLiAgVGhpcwpt YWtlcyBpdCBzdHJhaWdodGZvcndhcmQgdG8gYWxsb3cgYXJiaXRyYXJ5IHBvb2wgY29uZmlndXJh dGlvbnMgaW4gdGhlCnNhbWUgcGxhbi4KCk1vZGlmeSBzYW1wbGUuYmVuY2ggdG8gaGF2ZSBhIFJ1 bkNvbmZpZyBlbnRyeSBhdCB0aGUgdG9wIGxldmVsCihpbnN0ZWFkIG9mIHRoZSBXb3JrZXJDb25m aWcgb3B0aW9uKS4gIFNpbXBsZVBsYW4gYWxyZWFkeSBzZXRzClJ1bkNvbmZpZy5TY2hlZHVsZXIs IHNvIHRoZSBlZmZlY3Qgd2lsbCBiZSBmb3IgZWFjaCBydW4gdG8gaGF2ZSBhbGwKdGhyZWUgb3B0 aW9ucyBzZXQuICAoUHVudCBvbiBTaW1wbGVQbGFuIGdlbmVyYXRpbmcgbW9yZSBjb21wbGV4Cm9w dGlvbnMgZm9yIG5vdy4pCgpDaGFuZ2UgQmVuY2htYXJrUnVuLlJlYWR5KCkgdG8gQmVuY2htYXJr UnVuLlByZXAoKSwgd2hpY2ggd2lsbCBjYXVzZQp0aGUgY29uZmlndXJhdGlvbiBpbiBSdW5Db25m aWcgdG8gYmVjb21lIHRydWUgaWYgcG9zc2libGUuICBFbXB0eQonUG9vbCcgZWxlbWVudCBtZWFu cyB0aGUgZGVmYXVsdCBwb29sIChQb29sLTApLiAgQWx3YXlzIGNyZWF0ZSB0aGUKY3B1cG9vbCBp ZiBpdCdzIG5vbi1wb29sLTAsIGRlc3Ryb3lpbmcgdGhlIGN1cnJlbnQgb25lIGlmIGl0IGV4aXN0 cy4KCklmIGl0IGlzIHBvb2wgMCwganVzdCBjaGVjayBpZiBpdCBtYXRjaGVzLCBhbmQgc2tpcCBp ZiBub3QuCgooV2UgY291bGQgaW4gdGhlb3J5IG1vZGlmeSBjcHVwb29sIDAsIGJ1dCBwdXNoIHRo YXQgZm9yIGZ1dHVyZSB3b3JrLikKClNpZ25lZC1vZmYtYnk6IEdlb3JnZSBEdW5sYXAgPGdlb3Jn ZS5kdW5sYXBAY2l0cml4LmNvbT4KLS0tCiBiZW5jaG1hcmsuZ28gfCAgMTcgKysrKystCiBydW4u Z28gICAgICAgfCAxNzYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrLS0tLS0tLS0KIDIgZmlsZXMgY2hhbmdlZCwgMTY5IGluc2VydGlvbnMoKyksIDI0 IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2JlbmNobWFyay5nbyBiL2JlbmNobWFyay5nbwpp bmRleCBhZWNiNTc0Li5iZDUxM2ZkIDEwMDY0NAotLS0gYS9iZW5jaG1hcmsuZ28KKysrIGIvYmVu Y2htYXJrLmdvCkBAIC02Nyw3ICs2Nyw2IEBAIGZ1bmMgKGwgKldvcmtlckNvbmZpZykgUHJvcGFn YXRlRnJvbShnIFdvcmtlckNvbmZpZykgewogCX0KIH0KIAotCiB0eXBlIFdvcmtlclNldCBzdHJ1 Y3QgewogCVBhcmFtcyBXb3JrZXJQYXJhbXMKIAlDb25maWcgV29ya2VyQ29uZmlnCkBAIC0xNDAs NiArMTM5LDIxIEBAIHR5cGUgQmVuY2htYXJrUnVuRGF0YSBzdHJ1Y3QgewogCiB0eXBlIFJ1bkNv bmZpZyBzdHJ1Y3QgewogCVNjaGVkdWxlciBzdHJpbmcKKwlQb29sIHN0cmluZworCUNwdXMgW11p bnQKK30KKworLy8gUHJvcGFnYXRlIHVuc2V0IHZhbHVlcyBmcm9tIGEgaGlnaGVyIGxldmVsCitm dW5jIChsICpSdW5Db25maWcpIFByb3BhZ2F0ZUZyb20oZyBSdW5Db25maWcpIHsKKwlpZiBsLlBv b2wgPT0gIiIgeworCQlsLlBvb2wgPSBnLlBvb2wKKwl9CisJaWYgbC5TY2hlZHVsZXIgPT0gIiIg eworCQlsLlNjaGVkdWxlciA9IGcuU2NoZWR1bGVyCisJfQorCWlmIGwuQ3B1cyA9PSBuaWwgewor CQlsLkNwdXMgPSBnLkNwdXMKKwl9CiB9CiAKIHR5cGUgQmVuY2htYXJrUnVuIHN0cnVjdCB7CkBA IC0xNTksNiArMTczLDcgQEAgdHlwZSBCZW5jaG1hcmtQbGFuIHN0cnVjdCB7CiAJLy8gR2xvYmFs IG9wdGlvbnMgZm9yIHdvcmtlcnMgdGhhdCB3aWxsIGJlIG92ZXItcmlkZGVuIGJ5IFJ1bgogCS8v IGFuZCBXb3JrZXJTZXQgY29uZmlnIG9wdGlvbnMKIAlXb3JrZXJDb25maWcgICAgICAgICBganNv bjoiLG9taXRlbXB0eSJgCisJUnVuQ29uZmlnIFJ1bkNvbmZpZyAgIGBqc29uOiIsb21pdGVtcHR5 ImAKIAlSdW5zIFtdQmVuY2htYXJrUnVuICBganNvbjoiLG9taXRlbXB0eSJgCiB9CiAKZGlmZiAt LWdpdCBhL3J1bi5nbyBiL3J1bi5nbwppbmRleCAxYTc1M2JjLi4yZDBkYjAxIDEwMDY0NAotLS0g YS9ydW4uZ28KKysrIGIvcnVuLmdvCkBAIC0xNTYsMzQgKzE1NiwxNTggQEAgZnVuYyBnZXRDcHVI eigpIChlcnIgZXJyb3IpIHsKIAlyZXR1cm4KIH0KIAotZnVuYyAocnVuICpCZW5jaG1hcmtSdW4p IFJlYWR5KCkgKHJlYWR5IGJvb2wsIHdoeSBzdHJpbmcpIHsKLQkvLyBGSVhNRTogQ2hlY2sgV29y a2VyVHlwZQotCS8vIFNraXAgdGhpcyBydW4gaWYgaXQncyBub3QgdGhlIHNjaGVkdWxlciB3ZSB3 YW50Ci0JaWYgcnVuLlJ1bkNvbmZpZy5TY2hlZHVsZXIgIT0gIiIgewotCQl2YXIgcG9vbCBDcHVw b29sSW5mbwotCQlpZiBydW4uV29ya2VyQ29uZmlnLlBvb2wgIT0gIiIgewotCQkJdmFyIGZvdW5k IGJvb2wKLQkJCXBvb2wsIGZvdW5kID0gQ3R4LkNwdXBvb2xGaW5kQnlOYW1lKHJ1bi5Xb3JrZXJD b25maWcuUG9vbCkKLQkJCWlmICFmb3VuZCB7Ci0JCQkJd2h5ID0gImNwdXBvb2wgZXJyb3IiCi0J CQkJcmV0dXJuCi0JCQl9Ci0JCX0gZWxzZSB7Ci0JCQkvLyB4bCBkZWZhdWx0cyB0byBjcHVwb29s IDAKLQkJCXBsaXN0IDo9IEN0eC5MaXN0Q3B1cG9vbCgpCi0JCQlpZiBsZW4ocGxpc3QpID4gMCB7 Ci0JCQkJcG9vbCA9IHBsaXN0WzBdCisvLyBJZiB0aGUgcG9vbCBpcyBzcGVjaWZpZWQsIHVzZSB0 aGF0IHBvb2w7IG90aGVyd2lzZSBhc3N1bWUgcG9vbCAwLgorLy8KKy8vIFVuc3BlY2lmaWVkIHNj aGVkdWxlcnMgbWF0Y2ggYW55IHBvb2w7IHVuc3BlY2lmaWVuZCBjcHUgbGlzdHMgbWF0Y2gKKy8v IGFueSBwb29sLgorLy8KKy8vIElmIHRoZSBwb29sIGV4aXN0cyBhbmQgdGhlIHNjaGVkdWxlciBh bmQgY3B1IGxpc3RzIG1hdGNoIHRoZSBwb29sLAorLy8gY2Fycnkgb24uICAoVGhpcyBpcyBydW5u aW5nIHRoZSBWTXMgaW4gYSBwcmUtY29uZmlndXJlZCBwb29sLikKKy8vCisvLyBJZiB0aGUgcG9v bCBleGlzdHMgYW5kIGVpdGhlciB0aGUgc2NoZWR1bGVyIG9yIHRoZSBjcHVzIGRvbid0IG1hdGNo CisvLyB0aGUgcG9vbCwgYW5kIHRoaXMgaXMgcG9vbCAwLCBza2lwLgorLy8KKy8vIFRPRE86IElm IHRoZSBzY2hlZHVsZXIgbWF0Y2hlcyBidXQgdGhlIGNwdXMgZG9uJ3QsIG1vZGlmeSB0aGUgcG9v bAorLy8gYnkgYWRkaW5nIG9yIHJlbW92aW5nIGNwdXMuICAoVGhpcyBjYW4gYmUgZG9uZSBmb3Ig UG9vbC0wIGFzIHdlbGwuKQorLy8KKy8vIElmIHRoZSBwb29sIGlzIG5vdCBQb29sLTAsIGFuZCB0 aGUgc2NoZWR1bGVyIGRvZXNuJ3QgbWF0Y2ggb3IgdGhlCisvLyBwb29sIGRvZXNuJ3QgZXhpc3Qs IGJ1dCB0aGVyZSBhcmUgbm8gY3B1cywgc2tpcCAoYmVjYXVzZSB3ZSBkb24ndAorLy8gaGF2ZSBl bm91Z2ggaW5mb3JtYXRpb24gdG8gY3JlYXRlIHRoZSBwb29sKS4KKy8vCisvLyBJZiB0aGUgcG9v bCBpcyBub3QgUG9vbC0wLCBhbmQgZWl0aGVyIHRoZSBzY2hlZHVsZXIgb3IgdGhlIGNwdXMKKy8v IGRvbid0IG1hdGNoLCBhbmQgdGhlIGNwdXMgYXJlIHNwZWNpZmllZCwgY3JlYXRlIHRoZSBwb29s LgorZnVuYyAocnVuICpCZW5jaG1hcmtSdW4pIFByZXAoKSAocmVhZHkgYm9vbCwgd2h5IHN0cmlu ZykgeworCXZhciBwb29sIENwdXBvb2xJbmZvCisJcG9vbFByZXNlbnQgOj0gZmFsc2UKKwkKKwkv LyBHZW5lcmF0ZSB0aGUgcmVxdWVzdGVkIGNwdW1hcAorCXZhciBDcHVtYXAgQml0bWFwCisJaWYg cnVuLlJ1bkNvbmZpZy5DcHVzICE9IG5pbCB7CisJCWZtdC5QcmludCgiUnVuLlByZXA6IENwdXM6 ICIpCisJCXByaW50ZWQgOj0gZmFsc2UKKwkJZm9yIF8sIGkgOj0gcmFuZ2UgcnVuLlJ1bkNvbmZp Zy5DcHVzIHsKKwkJCWlmIHByaW50ZWQgeworCQkJCWZtdC5QcmludGYoIiwlZCIsIGkpCiAJCQl9 IGVsc2UgewotCQkJCXdoeSA9ICJjcHVwb29sIGVycm9yIgotCQkJCXJldHVybgorCQkJCXByaW50 ZWQgPSB0cnVlCisJCQkJZm10LlByaW50ZigiJWQiLCBpKQorCQkJfQkJCQkKKwkJCUNwdW1hcC5T ZXQoaSkKKwkJfQorCQlmbXQuUHJpbnQoIlxuIikKKwkJaWYgQ3B1bWFwLklzRW1wdHkoKSB7CisJ CQl3aHkgPSAiSW52YWxpZCAoZW1wdHkpIGNwdW1hcCIKKwkJCXJldHVybgorCQl9CisJfQorCQor CisJaWYgcnVuLlJ1bkNvbmZpZy5Qb29sID09ICIiIHsKKwkJZm10LlByaW50ZigiUnVuLlByZXA6 IE5vIHBvb2wgc2V0LCB1c2luZyAwXG4iKQorCQlwb29sID0gQ3R4LkNwdXBvb2xJbmZvKDApCisJ CXBvb2xQcmVzZW50ID0gdHJ1ZQorCX0gZWxzZSB7CisJCXBvb2wsIHBvb2xQcmVzZW50ID0gQ3R4 LkNwdXBvb2xGaW5kQnlOYW1lKHJ1bi5SdW5Db25maWcuUG9vbCkKKwkJaWYgcG9vbFByZXNlbnQg eworCQkJZm10LlByaW50ZigiUnVuLlByZXA6IFBvb2wgJXMgZm91bmQsIFBvb2xpZCAlZFxuIiwK KwkJCQlydW4uUnVuQ29uZmlnLlBvb2wsIHBvb2wuUG9vbGlkKQorCQl9IGVsc2UgeworCQkJZm10 LlByaW50ZigiUnVuLlByZXA6IFBvb2wgJXMgbm90IGZvdW5kXG4iKQorCQl9CisJfQorCisJc2No ZWRNYXRjaGVzIDo9IHRydWUKKwlpZiBydW4uUnVuQ29uZmlnLlNjaGVkdWxlciAhPSAiIiAmJgor CQlwb29sUHJlc2VudCAmJgorCQlwb29sLlNjaGVkdWxlci5TdHJpbmcoKSAhPSBydW4uUnVuQ29u ZmlnLlNjaGVkdWxlciB7CisJCQlzY2hlZE1hdGNoZXMgPSBmYWxzZTsKKwl9CisKKwljcHVNYXRj aGVzIDo9IHRydWUKKwlpZiBydW4uUnVuQ29uZmlnLkNwdXMgIT0gbmlsIHsKKwkJaWYgIXBvb2xQ cmVzZW50IHsKKwkJCWNwdU1hdGNoZXMgPSBmYWxzZQorCQl9IGVsc2UgeworCQkJZm9yIGkgOj0g MDsgaSA8PSBwb29sLkNwdW1hcC5NYXgoKTsgaSsrIHsKKwkJCQlpZiBwb29sLkNwdW1hcC5UZXN0 KGkpICE9IENwdW1hcC5UZXN0KGkpIHsKKwkJCQkJZm10LlByaW50ZigiUHJlcDogY3B1ICVkOiBw b29sICV2LCB3YW50ICV2LCBiYWlsaW5nXG4iLAorCQkJCQkJaSwgcG9vbC5DcHVtYXAuVGVzdChp KSwgQ3B1bWFwLlRlc3QoaSkpCisJCQkJCWNwdU1hdGNoZXMgPSBmYWxzZQorCQkJCQlicmVhawor CQkJCX0KIAkJCX0KIAkJfQorCX0KKwkJCisKKwkvLyBJZiB3ZSdyZSB1c2luZyBwb29sIDAsIGFu ZCB0aGUgc2NoZWR1bGVyIG9yIGNwdXMgZG9uJ3QKKwkvLyBtYXRjaCwgYmFpbDsgb3RoZXJ3aXNl IHNheSB3ZSdyZSByZWFkeS4KKwlpZiBwb29sUHJlc2VudCAmJiBwb29sLlBvb2xpZCA9PSAwIHsK KwkJaWYgISBzY2hlZE1hdGNoZXMgeworCQkJd2h5ID0gInNjaGVkdWxlciAhPSAiK3J1bi5SdW5D b25maWcuU2NoZWR1bGVyKyIsIGNhbid0IGNoYW5nZSIKKwkJCXJldHVybgorCQl9CiAKLQkJaWYg cG9vbC5TY2hlZHVsZXIuU3RyaW5nKCkgIT0gcnVuLlJ1bkNvbmZpZy5TY2hlZHVsZXIgewotCQkJ d2h5ID0gInNjaGVkdWxlciAhPSAiK3J1bi5SdW5Db25maWcuU2NoZWR1bGVyCi0JCQlyZXR1cm4g CisJCS8vIFRPRE86IEFjdHVhbGx5LCB3ZSBjYW4gbW9kaWZ5IHBvb2wgMDsgbGVhdmUgdGhpcyB1 bnRpbCB3ZSB3YW50IGl0LgorCQlpZiAhIGNwdU1hdGNoZXMgeworCQkJd2h5ID0gIkNwdW1hcCBt aXNtYXRjaCIKKwkJCXJldHVybgogCQl9CisKKwkJZm10LlByaW50ZigiUHJlcDogUG9vbGlkIDAs IHNjaGVkIGFuZCBjcHVtYXAgbWF0Y2hlc1xuIikKKwkJcmVhZHkgPSB0cnVlCisJCXJldHVybgog CX0KKworCS8vIE9LLCB3ZSBnb3QgaGVyZSBpdAorCWlmIHJ1bi5SdW5Db25maWcuQ3B1cyA9PSBu aWwgeworCQkvLyBObyBjb25zdHJ1Y3Rpb24gaW5mb3JtYXRpb247IGlzIHRoZSBjcHVwb29sIHJl YWR5IHdpdGhvdXQgaXQ/CisJCWlmICFwb29sUHJlc2VudCB7CisJCQl3aHkgPSAiUG9vbCBub3Qg cHJlc2VudCwgbm8gcG9vbCBjb25zdHJ1Y3Rpb24gaW5mb3JtYXRpb24iCisJCQlyZXR1cm4KKwkJ fSBlbHNlIGlmICFzY2hlZE1hdGNoZXMgeworCQkJd2h5ID0gInNjaGVkdWxlciAhPSAiK3J1bi5S dW5Db25maWcuU2NoZWR1bGVyKyIsIG5vIHBvb2wgY29uc3RydWN0aW9uIGluZm9ybWF0aW9uIgor CQkJcmV0dXJuCisJCX0KKworCQkvLyBTY2hlZHVsZXIgbWF0Y2hlcywgcG9vbCBwcmVzZW50LCBj cHVzIG5vdAorCQkvLyBzcGVjaWZpZWQsIGp1c3QgZ28gd2l0aCBpdAorCQlyZWFkeSA9IHRydWUK KwkJcmV0dXJuCisJfQorCisJLy8gT0ssIHdlIGhhdmUgYWxsIHRoZSBpbmZvcm1hdGlvbiB3ZSBu ZWVkIHRvIGNyZWF0ZSB0aGUgcG9vbCB3ZSB3YW50LgorCVNjaGVkdWxlciA6PSBTY2hlZHVsZXJD cmVkaXQKKwllcnIgOj0gU2NoZWR1bGVyLkZyb21TdHJpbmcocnVuLlJ1bkNvbmZpZy5TY2hlZHVs ZXIpCisJaWYgZXJyICE9IG5pbCB7CisJCXdoeSA9ICJJbnZhbGlkIHNjaGVkdWxlcjogIitydW4u UnVuQ29uZmlnLlNjaGVkdWxlcgorCQlyZXR1cm4KKwl9CisKKwkvLyBEZXN0cm95IHRoZSBwb29s IGlmIGl0J3MgcHJlc2VudDsKKwlpZiBwb29sUHJlc2VudCB7CisJCWVyciA6PSBDdHguQ3B1cG9v bERlc3Ryb3kocG9vbC5Qb29saWQpCisJCWlmIGVyciAhPSBuaWwgeworCQkJZm10LlByaW50Zigi VHJ5aW5nIHRvIGRlc3Ryb3kgcG9vbDogJXZcbiIsIGVycikKKwkJCXdoeSA9ICJDb3VsZG4ndCBk ZXN0cm95IGNwdXBvb2wiCisJCQlyZXR1cm4KKwkJfQorCX0KKworCS8vIEZyZWUgdGhlIGNwdXMg d2UgbmVlZDsKKwllcnIgPSBDdHguQ3B1cG9vbE1ha2VGcmVlKENwdW1hcCkKKwlpZiBlcnIgIT0g bmlsIHsKKwkJd2h5ID0gIkNvdWxkbid0IGZyZWUgY3B1cyIKKwkJcmV0dXJuCisJfQorCisJLy8g QW5kIGNyZWF0ZSB0aGUgcG9vbC4KKwllcnIsIF8gPSBDdHguQ3B1cG9vbENyZWF0ZSgic2NoZWRi ZW5jaCIsIFNjaGVkdWxlciwgQ3B1bWFwKQorCWlmIGVyciAhPSBuaWwgeworCQl3aHkgPSAiQ291 bGRuJ3QgY3JlYXRlIGNwdXBvb2wiCisJCXJldHVybgorCX0KKwogCXJlYWR5ID0gdHJ1ZQogCXJl dHVybiAKIH0KQEAgLTE5MSwxMyArMzE1LDE4IEBAIGZ1bmMgKHJ1biAqQmVuY2htYXJrUnVuKSBS ZWFkeSgpIChyZWFkeSBib29sLCB3aHkgc3RyaW5nKSB7CiBmdW5jIChydW4gKkJlbmNobWFya1J1 bikgUnVuKCkgKGVyciBlcnJvcikgewogCWZvciB3c2kgOj0gcmFuZ2UgcnVuLldvcmtlclNldHMg ewogCQlydW4uV29ya2VyU2V0c1t3c2ldLkNvbmZpZy5Qcm9wYWdhdGVGcm9tKHJ1bi5Xb3JrZXJD b25maWcpCisJCWlmIHJ1bi5Xb3JrZXJTZXRzW3dzaV0uQ29uZmlnLlBvb2wgPT0gIiIgeworCQkJ cnVuLldvcmtlclNldHNbd3NpXS5Db25maWcuUG9vbCA9IHJ1bi5SdW5Db25maWcuUG9vbAorCQl9 CiAJCXJ1bi5Xb3JrZXJTZXRzW3dzaV0uUGFyYW1zLlNldGtIWihDcHVrSFopCisJCQogCX0KIAkK IAlXb3JrZXJzLCBlcnIgOj0gTmV3V29ya2VyTGlzdChydW4uV29ya2VyU2V0cywgV29ya2VyWGVu KQogCWlmIGVyciAhPSBuaWwgewogCQlmbXQuUHJpbnRsbigiRXJyb3IgY3JlYXRpbmcgd29ya2Vy czogJXYiLCBlcnIpCiAJCXJldHVybgorCiAJfQogCQogCXJlcG9ydCA6PSBtYWtlKGNoYW4gV29y a2VyUmVwb3J0KQpAQCAtMjcyLDcgKzQwMSw4IEBAIGZ1bmMgKHBsYW4gKkJlbmNobWFya1BsYW4p IFJ1bigpIChlcnIgZXJyb3IpIHsKIAkJciA6PSAmcGxhbi5SdW5zW2ldOwogCQlpZiAhIHIuQ29t cGxldGVkIHsgCiAJCQlyLldvcmtlckNvbmZpZy5Qcm9wYWdhdGVGcm9tKHBsYW4uV29ya2VyQ29u ZmlnKQotCQkJcmVhZHksIHdoeSA6PSByLlJlYWR5KCkKKwkJCXIuUnVuQ29uZmlnLlByb3BhZ2F0 ZUZyb20ocGxhbi5SdW5Db25maWcpCisJCQlyZWFkeSwgd2h5IDo9IHIuUHJlcCgpCiAJCQlpZiBy ZWFkeSB7CiAJCQkJZm10LlByaW50ZigiUnVubmluZyB0ZXN0IFslZF0gJXNcbiIsIGksIHIuTGFi ZWwpCiAJCQkJZXJyID0gci5SdW4oKQotLSAKMi43LjQKCgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZl bEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK