From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yi Sun Subject: [PATCH v9.1 06/16] x86: implement get hw info flow for MBA Date: Mon, 18 Dec 2017 16:30:49 +0800 Message-ID: <1513585849-10412-1-git-send-email-yi.y.sun@linux.intel.com> References: <1508488108-7071-7-git-send-email-yi.y.sun@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eQrrx-0000W0-U9 for xen-devel@lists.xenproject.org; Mon, 18 Dec 2017 09:37:57 +0000 In-Reply-To: <1508488108-7071-7-git-send-email-yi.y.sun@linux.intel.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: Wei Liu , Yi Sun , Andrew Cooper , Jan Beulich , Chao Peng , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= List-Id: xen-devel@lists.xenproject.org VGhpcyBwYXRjaCBpbXBsZW1lbnRzIGdldCBIVyBpbmZvIGZsb3cgZm9yIE1CQSBpbmNsdWRpbmcg aXRzIGNhbGxiYWNrCmZ1bmN0aW9uIGFuZCBzeXNjdGwgaW50ZXJmYWNlLgoKU2lnbmVkLW9mZi1i eTogWWkgU3VuIDx5aS55LnN1bkBsaW51eC5pbnRlbC5jb20+ClJldmlld2VkLWJ5OiBSb2dlciBQ YXUgTW9ubsOpIDxyb2dlci5wYXVAY2l0cml4LmNvbT4KQWNrZWQtYnk6IEphbiBCZXVsaWNoIDxq YmV1bGljaEBzdXNlLmNvbT4KLS0tCkNDOiBKYW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5jb20+ CkNDOiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPgpDQzogV2VpIExp dSA8d2VpLmxpdTJAY2l0cml4LmNvbT4KQ0M6IFJvZ2VyIFBhdSBNb25uw6kgPHJvZ2VyLnBhdUBj aXRyaXguY29tPgpDQzogQ2hhbyBQZW5nIDxjaGFvLnAucGVuZ0BsaW51eC5pbnRlbC5jb20+Cgp2 OS4xOgogICAgLSBkZWNsYXJlIGRhdGEgYXJyYXkgaW4gZXZlcnkgY2FzZSB0byBhdm9pZCBnY2Mg Ny4yIHdhcm5pbmcuCiAgICAgIChmb3VuZCBieSBKYW4gQmV1bGljaCkKdjc6CiAgICAtIGNoYW5n ZSAnUFNSX0lORk9fSURYX01CQV9GTEFHJyB0byAnUFNSX0lORk9fSURYX01CQV9GTEFHUycuCiAg ICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCnY1OgogICAgLSB1c2UgQVNTRVJUIGluICdt YmFfZ2V0X2ZlYXRfaW5mbycuCiAgICAgIChzdWdnZXN0ZWQgYnkgUm9nZXIgUGF1IE1vbm7DqSkK ICAgIC0gY29ycmVjdCBpbml0aWFsaXphdGlvbiBmb3JtYXQgb2YgJ2RhdGFbUFNSX0lORk9fQVJS QVlfU0laRV0nLgogICAgICAoc3VnZ2VzdGVkIGJ5IFJvZ2VyIFBhdSBNb25uw6kgYW5kIEphbiBC ZXVsaWNoKQp2NDoKICAgIC0gcmVtb3ZlICdBTExPQ18nIGZyb20gbWFjcm8gbmFtZXMuCiAgICAg IChzdWdnZXN0ZWQgYnkgUm9nZXIgUGF1IE1vbm7DqSkKICAgIC0gaW5pdGlhbGl6ZSAnZGF0YVtQ U1JfSU5GT19BUlJBWV9TSVpFXScgdG8gMCB0byBwcmV2ZW50IHRvIGxlYWsgc3RhY2sgZGF0YS4K ICAgICAgKHN1Z2dlc3RlZCBieSBSb2dlciBQYXUgTW9ubsOpKQp2MzoKICAgIC0gcmVwbGFjZSAn UFNSX1ZBTF9UWVBFX01CQScgdG8gJ1BTUl9UWVBFX01CQV9USFJUTCcuCiAgICAgIChzdWdnZXN0 ZWQgYnkgUm9nZXIgUGF1IE1vbm7DqSkKdjI6CiAgICAtIHVzZSAnWEVOX1NZU0NUTF9QU1JfTUJB X0xJTkVBUicgdG8gc2V0IE1CQSBmZWF0dXJlIEhXIGluZm8uCiAgICAgIChzdWdnZXN0ZWQgYnkg Q2hhbyBQZW5nKQp2MToKICAgIC0gc29ydCAnUFNSX0lORk9fSURYXycgbWFjcm9zIGFzIGZlYXR1 cmUuCiAgICAgIChzdWdnZXN0ZWQgYnkgQ2hhbyBQZW5nKQogICAgLSByZW5hbWUgJ1BTUl9JTkZP X0lEWF9NQkFfTElORUFSJyB0byAnUFNSX0lORk9fSURYX01CQV9GTEFHJy4KICAgIC0gcmVuYW1l ICdsaW5lYXInIGluICdzdHJ1Y3QgbWJhX2luZm8nIHRvICdmbGFncycgZm9yIGZ1dHVyZSBleHRl bnNpb24uCi0tLQogQ29uZmlnLm1rICAgICAgICAgICAgICAgICAgIHwgMjAgKysrKysrKysrKy0t LS0tLS0tLS0KIHhlbi9hcmNoL3g4Ni9wc3IuYyAgICAgICAgICB8IDE0ICsrKysrKysrKysrKyst CiB4ZW4vYXJjaC94ODYvc3lzY3RsLmMgICAgICAgfCAyNyArKysrKysrKysrKysrKysrKysrKysr KysrLS0KIHhlbi9pbmNsdWRlL2FzbS14ODYvcHNyLmggICB8ICAyICsrCiB4ZW4vaW5jbHVkZS9w dWJsaWMvc3lzY3RsLmggfCAgOCArKysrKysrKwogNSBmaWxlcyBjaGFuZ2VkLCA1OCBpbnNlcnRp b25zKCspLCAxMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9Db25maWcubWsgYi9Db25maWcu bWsKaW5kZXggNTFhZGMyNy4uMThmNWMzNCAxMDA2NDQKLS0tIGEvQ29uZmlnLm1rCisrKyBiL0Nv bmZpZy5tawpAQCAtMjYwLDE3ICsyNjAsMTcgQEAgUUVNVV9UUkFESVRJT05BTF9SRVZJU0lPTiA/ PSAkKFFFTVVfVEFHKQogZW5kaWYKIAogaWZlcSAoJChHSVRfSFRUUCkseSkKLU9WTUZfVVBTVFJF QU1fVVJMID89IGh0dHA6Ly94ZW5iaXRzLnhlbi5vcmcvZ2l0LWh0dHAvb3ZtZi5naXQKLVFFTVVf VVBTVFJFQU1fVVJMID89IGh0dHA6Ly94ZW5iaXRzLnhlbi5vcmcvZ2l0LWh0dHAvcWVtdS14ZW4u Z2l0Ci1RRU1VX1RSQURJVElPTkFMX1VSTCA/PSBodHRwOi8veGVuYml0cy54ZW4ub3JnL2dpdC1o dHRwL3FlbXUteGVuLXRyYWRpdGlvbmFsLmdpdAotU0VBQklPU19VUFNUUkVBTV9VUkwgPz0gaHR0 cDovL3hlbmJpdHMueGVuLm9yZy9naXQtaHR0cC9zZWFiaW9zLmdpdAotTUlOSU9TX1VQU1RSRUFN X1VSTCA/PSBodHRwOi8veGVuYml0cy54ZW4ub3JnL2dpdC1odHRwL21pbmktb3MuZ2l0CitPVk1G X1VQU1RSRUFNX1VSTCA/PSBodHRwOi8vdnQtc3luYy5zaC5pbnRlbC5jb20vZ2l0LWh0dHAvb3Zt Zi5naXQKK1FFTVVfVVBTVFJFQU1fVVJMID89IGh0dHA6Ly92dC1zeW5jLnNoLmludGVsLmNvbS9n aXQtaHR0cC9xZW11LXhlbi5naXQKK1FFTVVfVFJBRElUSU9OQUxfVVJMID89IGh0dHA6Ly92dC1z eW5jLnNoLmludGVsLmNvbS9naXQtaHR0cC9xZW11LXhlbi10cmFkaXRpb25hbC5naXQKK1NFQUJJ T1NfVVBTVFJFQU1fVVJMID89IGh0dHA6Ly92dC1zeW5jLnNoLmludGVsLmNvbS9naXQtaHR0cC9z ZWFiaW9zLmdpdAorTUlOSU9TX1VQU1RSRUFNX1VSTCA/PSBodHRwOi8vdnQtc3luYy5zaC5pbnRl bC5jb20vZ2l0LWh0dHAvbWluaS1vcy5naXQKIGVsc2UKLU9WTUZfVVBTVFJFQU1fVVJMID89IGdp dDovL3hlbmJpdHMueGVuLm9yZy9vdm1mLmdpdAotUUVNVV9VUFNUUkVBTV9VUkwgPz0gZ2l0Oi8v eGVuYml0cy54ZW4ub3JnL3FlbXUteGVuLmdpdAotUUVNVV9UUkFESVRJT05BTF9VUkwgPz0gZ2l0 Oi8veGVuYml0cy54ZW4ub3JnL3FlbXUteGVuLXRyYWRpdGlvbmFsLmdpdAotU0VBQklPU19VUFNU UkVBTV9VUkwgPz0gZ2l0Oi8veGVuYml0cy54ZW4ub3JnL3NlYWJpb3MuZ2l0Ci1NSU5JT1NfVVBT VFJFQU1fVVJMID89IGdpdDovL3hlbmJpdHMueGVuLm9yZy9taW5pLW9zLmdpdAorT1ZNRl9VUFNU UkVBTV9VUkwgPz0gZ2l0Oi8vdnQtc3luYy5zaC5pbnRlbC5jb20vb3ZtZi5naXQKK1FFTVVfVVBT VFJFQU1fVVJMID89IGdpdDovL3Z0LXN5bmMuc2guaW50ZWwuY29tL3FlbXUteGVuLmdpdAorUUVN VV9UUkFESVRJT05BTF9VUkwgPz0gZ2l0Oi8vdnQtc3luYy5zaC5pbnRlbC5jb20vcWVtdS14ZW4t dHJhZGl0aW9uYWwuZ2l0CitTRUFCSU9TX1VQU1RSRUFNX1VSTCA/PSBnaXQ6Ly92dC1zeW5jLnNo LmludGVsLmNvbS9zZWFiaW9zLmdpdAorTUlOSU9TX1VQU1RSRUFNX1VSTCA/PSBnaXQ6Ly92dC1z eW5jLnNoLmludGVsLmNvbS9taW5pLW9zLmdpdAogZW5kaWYKIE9WTUZfVVBTVFJFQU1fUkVWSVNJ T04gPz0gOTQ3ZjM3MzdhYmY2NWZkYTYzZjNmZmQ5N2ZkZGZhNjk4Njk4Njg2OAogUUVNVV9VUFNU UkVBTV9SRVZJU0lPTiA/PSBtYXN0ZXIKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9wc3IuYyBi L3hlbi9hcmNoL3g4Ni9wc3IuYwppbmRleCA4NzJiYWRlLi5hNDkwMWQ4IDEwMDY0NAotLS0gYS94 ZW4vYXJjaC94ODYvcHNyLmMKKysrIGIveGVuL2FyY2gveDg2L3Bzci5jCkBAIC0yNjMsNiArMjYz LDEwIEBAIHN0YXRpYyBlbnVtIHBzcl9mZWF0X3R5cGUgcHNyX3R5cGVfdG9fZmVhdF90eXBlKGVu dW0gcHNyX3R5cGUgdHlwZSkKICAgICAgICAgZmVhdF90eXBlID0gRkVBVF9UWVBFX0wyX0NBVDsK ICAgICAgICAgYnJlYWs7CiAKKyAgICBjYXNlIFBTUl9UWVBFX01CQV9USFJUTDoKKyAgICAgICAg ZmVhdF90eXBlID0gRkVBVF9UWVBFX01CQTsKKyAgICAgICAgYnJlYWs7CisKICAgICBkZWZhdWx0 OgogICAgICAgICBBU1NFUlRfVU5SRUFDSEFCTEUoKTsKICAgICB9CkBAIC00ODEsNyArNDg1LDE1 IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZmVhdF9wcm9wcyBsMl9jYXRfcHJvcHMgPSB7CiBzdGF0 aWMgYm9vbCBtYmFfZ2V0X2ZlYXRfaW5mbyhjb25zdCBzdHJ1Y3QgZmVhdF9ub2RlICpmZWF0LAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgZGF0YVtdLCB1bnNpZ25lZCBp bnQgYXJyYXlfbGVuKQogewotICAgIHJldHVybiBmYWxzZTsKKyAgICBBU1NFUlQoYXJyYXlfbGVu ID09IFBTUl9JTkZPX0FSUkFZX1NJWkUpOworCisgICAgZGF0YVtQU1JfSU5GT19JRFhfQ09TX01B WF0gPSBmZWF0LT5jb3NfbWF4OworICAgIGRhdGFbUFNSX0lORk9fSURYX01CQV9USFJUTF9NQVhd ID0gZmVhdC0+bWJhLnRocnRsX21heDsKKworICAgIGlmICggZmVhdC0+bWJhLmxpbmVhciApCisg ICAgICAgIGRhdGFbUFNSX0lORk9fSURYX01CQV9GTEFHU10gfD0gWEVOX1NZU0NUTF9QU1JfTUJB X0xJTkVBUjsKKworICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgdm9pZCBtYmFfd3JpdGVf bXNyKHVuc2lnbmVkIGludCBjb3MsIHVpbnQzMl90IHZhbCwKZGlmZiAtLWdpdCBhL3hlbi9hcmNo L3g4Ni9zeXNjdGwuYyBiL3hlbi9hcmNoL3g4Ni9zeXNjdGwuYwppbmRleCA2ZDQ4Y2FjLi4yMmY4 ZDc2IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvc3lzY3RsLmMKKysrIGIveGVuL2FyY2gveDg2 L3N5c2N0bC5jCkBAIC0xNzQsMTAgKzE3NCwxMCBAQCBsb25nIGFyY2hfZG9fc3lzY3RsKAogICAg IGNhc2UgWEVOX1NZU0NUTF9wc3JfYWxsb2M6CiAgICAgICAgIHN3aXRjaCAoIHN5c2N0bC0+dS5w c3JfYWxsb2MuY21kICkKICAgICAgICAgewotICAgICAgICAgICAgdWludDMyX3QgZGF0YVtQU1Jf SU5GT19BUlJBWV9TSVpFXTsKLQogICAgICAgICBjYXNlIFhFTl9TWVNDVExfUFNSX2dldF9sM19p bmZvOgogICAgICAgICB7CisgICAgICAgICAgICB1aW50MzJfdCBkYXRhW1BTUl9JTkZPX0FSUkFZ X1NJWkVdID0geyB9OworCiAgICAgICAgICAgICByZXQgPSBwc3JfZ2V0X2luZm8oc3lzY3RsLT51 LnBzcl9hbGxvYy50YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFNSX1RZ UEVfTDNfQ0JNLCBkYXRhLCBBUlJBWV9TSVpFKGRhdGEpKTsKICAgICAgICAgICAgIGlmICggcmV0 ICkKQEAgLTE5Nyw2ICsxOTcsOCBAQCBsb25nIGFyY2hfZG9fc3lzY3RsKAogCiAgICAgICAgIGNh c2UgWEVOX1NZU0NUTF9QU1JfZ2V0X2wyX2luZm86CiAgICAgICAgIHsKKyAgICAgICAgICAgIHVp bnQzMl90IGRhdGFbUFNSX0lORk9fQVJSQVlfU0laRV0gPSB7IH07CisKICAgICAgICAgICAgIHJl dCA9IHBzcl9nZXRfaW5mbyhzeXNjdGwtPnUucHNyX2FsbG9jLnRhcmdldCwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBQU1JfVFlQRV9MMl9DQk0sIGRhdGEsIEFSUkFZX1NJWkUoZGF0 YSkpOwogICAgICAgICAgICAgaWYgKCByZXQgKQpAQCAtMjE0LDYgKzIxNiwyNyBAQCBsb25nIGFy Y2hfZG9fc3lzY3RsKAogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAorICAgICAgICBj YXNlIFhFTl9TWVNDVExfUFNSX2dldF9tYmFfaW5mbzoKKyAgICAgICAgeworICAgICAgICAgICAg dWludDMyX3QgZGF0YVtQU1JfSU5GT19BUlJBWV9TSVpFXSA9IHsgfTsKKworICAgICAgICAgICAg cmV0ID0gcHNyX2dldF9pbmZvKHN5c2N0bC0+dS5wc3JfYWxsb2MudGFyZ2V0LAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFBTUl9UWVBFX01CQV9USFJUTCwgZGF0YSwgQVJSQVlfU0la RShkYXRhKSk7CisgICAgICAgICAgICBpZiAoIHJldCApCisgICAgICAgICAgICAgICAgYnJlYWs7 CisKKyAgICAgICAgICAgIHN5c2N0bC0+dS5wc3JfYWxsb2MudS5tYmFfaW5mby5jb3NfbWF4ID0K KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVtQU1JfSU5GT19JRFhf Q09TX01BWF07CisgICAgICAgICAgICBzeXNjdGwtPnUucHNyX2FsbG9jLnUubWJhX2luZm8udGhy dGxfbWF4ID0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVtQU1Jf SU5GT19JRFhfTUJBX1RIUlRMX01BWF07CisgICAgICAgICAgICBzeXNjdGwtPnUucHNyX2FsbG9j LnUubWJhX2luZm8uZmxhZ3MgPQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBkYXRhW1BTUl9JTkZPX0lEWF9NQkFfRkxBR1NdOworCisgICAgICAgICAgICBpZiAoIF9fY29w eV9maWVsZF90b19ndWVzdCh1X3N5c2N0bCwgc3lzY3RsLCB1LnBzcl9hbGxvYykgKQorICAgICAg ICAgICAgICAgIHJldCA9IC1FRkFVTFQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICByZXQgPSAtRU9QTk9UU1VQUDsKICAgICAg ICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9wc3IuaCBiL3hl bi9pbmNsdWRlL2FzbS14ODYvcHNyLmgKaW5kZXggM2NmNTQ0YS4uYzIyNTdkYSAxMDA2NDQKLS0t IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9wc3IuaAorKysgYi94ZW4vaW5jbHVkZS9hc20teDg2L3Bz ci5oCkBAIC0zOSw2ICszOSw4IEBACiAjZGVmaW5lIFBTUl9JTkZPX0lEWF9DT1NfTUFYICAgICAg ICAgICAgMAogI2RlZmluZSBQU1JfSU5GT19JRFhfQ0FUX0NCTV9MRU4gICAgICAgIDEKICNkZWZp bmUgUFNSX0lORk9fSURYX0NBVF9GTEFHUyAgICAgICAgICAyCisjZGVmaW5lIFBTUl9JTkZPX0lE WF9NQkFfVEhSVExfTUFYICAgICAgMQorI2RlZmluZSBQU1JfSU5GT19JRFhfTUJBX0ZMQUdTICAg ICAgICAgIDIKICNkZWZpbmUgUFNSX0lORk9fQVJSQVlfU0laRSAgICAgICAgICAgICAzCiAKIHN0 cnVjdCBwc3JfY210X2wzIHsKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3B1YmxpYy9zeXNjdGwu aCBiL3hlbi9pbmNsdWRlL3B1YmxpYy9zeXNjdGwuaAppbmRleCBhNTBlMzQ1Li5mN2YyNmMzIDEw MDY0NAotLS0gYS94ZW4vaW5jbHVkZS9wdWJsaWMvc3lzY3RsLmgKKysrIGIveGVuL2luY2x1ZGUv cHVibGljL3N5c2N0bC5oCkBAIC02OTgsNiArNjk4LDcgQEAgc3RydWN0IHhlbl9zeXNjdGxfcGNp dG9wb2luZm8gewogCiAjZGVmaW5lIFhFTl9TWVNDVExfUFNSX2dldF9sM19pbmZvICAgICAgICAg ICAgICAgMAogI2RlZmluZSBYRU5fU1lTQ1RMX1BTUl9nZXRfbDJfaW5mbyAgICAgICAgICAgICAg IDEKKyNkZWZpbmUgWEVOX1NZU0NUTF9QU1JfZ2V0X21iYV9pbmZvICAgICAgICAgICAgICAyCiBz dHJ1Y3QgeGVuX3N5c2N0bF9wc3JfYWxsb2MgewogICAgIHVpbnQzMl90IGNtZDsgICAgICAgLyog SU46IFhFTl9TWVNDVExfUFNSXyogKi8KICAgICB1aW50MzJfdCB0YXJnZXQ7ICAgIC8qIElOICov CkBAIC03MDgsNiArNzA5LDEzIEBAIHN0cnVjdCB4ZW5fc3lzY3RsX3Bzcl9hbGxvYyB7CiAjZGVm aW5lIFhFTl9TWVNDVExfUFNSX0NBVF9MM19DRFAgICAgICAgKDF1IDw8IDApCiAgICAgICAgICAg ICB1aW50MzJfdCBmbGFnczsgICAgIC8qIE9VVDogQ0FUIGZsYWdzICovCiAgICAgICAgIH0gY2F0 X2luZm87CisKKyAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgIHVpbnQzMl90IHRocnRsX21h eDsgLyogT1VUOiBNYXhpbXVtIHRocm90dGxlICovCisgICAgICAgICAgICB1aW50MzJfdCBjb3Nf bWF4OyAgIC8qIE9VVDogTWF4aW11bSBDT1MgKi8KKyNkZWZpbmUgWEVOX1NZU0NUTF9QU1JfTUJB X0xJTkVBUiAgICAgICgxdSA8PCAwKQorICAgICAgICAgICAgdWludDMyX3QgZmxhZ3M7ICAgICAv KiBPVVQ6IE1CQSBmbGFncyAqLworICAgICAgICB9IG1iYV9pbmZvOwogICAgIH0gdTsKIH07CiAK LS0gCjEuOS4xCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcK aHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZlbA==