From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yi Sun Subject: [PATCH v5 10/16] tools: implement the new libxc get hw info interface Date: Sat, 30 Sep 2017 09:39:20 +0800 Message-ID: <1506735566-5706-11-git-send-email-yi.y.sun@linux.intel.com> References: <1506735566-5706-1-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 mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dy73w-0004XN-WA for xen-devel@lists.xenproject.org; Sat, 30 Sep 2017 01:59:29 +0000 In-Reply-To: <1506735566-5706-1-git-send-email-yi.y.sun@linux.intel.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: Wei Liu , Chao Peng , Yi Sun , Ian Jackson , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= List-Id: xen-devel@lists.xenproject.org VGhpcyBwYXRjaCBpbXBsZW1lbnRzIGEgbmV3IGxpYnhjIGdldCBodyBpbmZvIGludGVyZmFjZSBh bmQgY29ycmVzcG9uZGluZwpkYXRhIHN0cnVjdHVyZXMuIEl0IGFsc28gY2hhbmdlcyBsaWJ4bF9w c3IuYyB0byBjYWxsIHRoaXMgbmV3IGludGVyZmFjZS4KClNpZ25lZC1vZmYtYnk6IFlpIFN1biA8 eWkueS5zdW5AbGludXguaW50ZWwuY29tPgotLS0KQ0M6IFdlaSBMaXUgPHdlaS5saXUyQGNpdHJp eC5jb20+CkNDOiBJYW4gSmFja3NvbiA8aWFuLmphY2tzb25AZXUuY2l0cml4LmNvbT4KQ0M6IFJv Z2VyIFBhdSBNb25uw6kgPHJvZ2VyLnBhdUBjaXRyaXguY29tPgpDQzogQ2hhbyBQZW5nIDxjaGFv LnAucGVuZ0BsaW51eC5pbnRlbC5jb20+Cgp2NToKICAgIC0gZGlyZWN0bHkgZGVmaW5lICd4Y19w c3JfaHdfaW5mbycgYXMgdW5pb24gdHlwZS4KICAgICAgKHN1Z2dlc3RlZCBieSBSb2dlciBQYXUg TW9ubsOpKQogICAgLSBjb252ZXJnZSBMMiBhbmQgTDMgY2FzZXMgaW4gJ3hjX3Bzcl9nZXRfaHdf aW5mbycuCiAgICAgIChzdWdnZXN0ZWQgYnkgUm9nZXIgUGF1IE1vbm7DqSkKdjQ6CiAgICAtIHJl bW92ZSAnQUxMT0NfJyBmcm9tIG1hY3JvIG5hbWVzLgogICAgICAoc3VnZ2VzdGVkIGJ5IFJvZ2Vy IFBhdSBNb25uw6kpCiAgICAtIHJlbW92ZSAnWENfUFNSX0ZFQVRfVU5LTk9XTicgd2hpY2ggaXMg bm90IG5lY2Vzc2FyeS4KICAgICAgKHN1Z2dlc3RlZCBieSBSb2dlciBQYXUgTW9ubsOpKQogICAg LSByZW1vdmUgJ0ZFQVRfJyBmcm9tIGVudW0gaXRlbSBuYW1lcy4KICAgICAgKHN1Z2dlc3RlZCBi eSBSb2dlciBQYXUgTW9ubsOpKQogICAgLSByZW1vdmUgJ3hjXycgZnJvbSBzdHJ1Y3QgbmFtZS4K ICAgICAgKHN1Z2dlc3RlZCBieSBSb2dlciBQYXUgTW9ubsOpKQogICAgLSBhZGp1c3QgY29kZXMg dG8gcmVkdWNlIGluZGVudGF0aW9uLgogICAgICAoc3VnZ2VzdGVkIGJ5IFJvZ2VyIFBhdSBNb25u w6kpCiAgICAtIGFzc2VydCBmb3Igbm90IGhhcHBlbmVkIGNhc2UuCiAgICAgIChzdWdnZXN0ZWQg YnkgUm9nZXIgUGF1IE1vbm7DqSkKICAgIC0gYWRkIExPR0UgdG8gc2hvdyBlcnJuby4KICAgICAg KHN1Z2dlc3RlZCBieSBSb2dlciBQYXUgTW9ubsOpKQp2MzoKICAgIC0gcmVuYW1lICdwc3JfY2F0 L1BTUl9DQVQnIHRvICdwc3JfYWxsb2MvUFNSX0FMTE9DJyBhbmQgcmVtb3ZlICdvcC9PUCcKICAg ICAgZnJvbSBuYW1lLgogICAgICAoc3VnZ2VzdGVkIGJ5IFJvZ2VyIFBhdSBNb25uw6kpCiAgICAt IHJlbW92ZSAnaW5mbycgZnJvbSAneGNfY2F0X2luZm8nIGFuZCAneGNfbWJhX2luZm8nLgogICAg ICAoc3VnZ2VzdGVkIGJ5IFJvZ2VyIFBhdSBNb25uw6kpCiAgICAtIHNldCBlcnJubyBpbiAneGNf cHNyX2dldF9od19pbmZvJy4KICAgICAgKHN1Z2dlc3RlZCBieSBSb2dlciBQYXUgTW9ubsOpKQog ICAgLSByZW1vdmUgJ2lubGluZScuCiAgICAgIChzdWdnZXN0ZWQgYnkgUm9nZXIgUGF1IE1vbm7D qSkKICAgIC0gcmVtb3ZlICdwc3InIGZyb20gJ2xpYnhsX19wc3JfZmVhdF90eXBlX3RvX2xpYnhj X3Bzcl9mZWF0X3R5cGUnIHRvIG1ha2UKICAgICAgZnVuY3Rpb24gbmFtZSBzaG9ydGVyLgogICAg ICAoc3VnZ2VzdGVkIGJ5IFJvZ2VyIFBhdSBNb25uw6kpCiAgICAtIGNoZWNrICd4Y190eXBlJyBp biAnbGlieGxfcHNyX2NhdF9nZXRfaW5mbycuCiAgICAgIChzdWdnZXN0ZWQgYnkgUm9nZXIgUGF1 IE1vbm7DqSkKdjI6CiAgICAtIHNwbGl0IHRoaXMgcGF0Y2ggb3V0IGZyb20gYSBiaWcgcGF0Y2gg aW4gdjEuCiAgICAgIChzdWdnZXN0ZWQgYnkgV2VpIExpdSkKICAgIC0gY2hhbmdlICdDQVRfSU5G TycgYW5kICdNQkFfSU5GTycgdG8gJ0NBVCcgYW5kICdNQkEnLgogICAgICAoc3VnZ2VzdGVkIGJ5 IENoYW8gUGVuZykKLS0tCiB0b29scy9saWJ4Yy9pbmNsdWRlL3hlbmN0cmwuaCB8IDI3ICsrKysr KysrKysrKysrKysrKy0tLQogdG9vbHMvbGlieGMveGNfcHNyLmMgICAgICAgICAgfCA1NSArKysr KysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tCiB0b29scy9saWJ4bC9saWJ4 bF9wc3IuYyAgICAgICB8IDM2ICsrKysrKysrKysrKysrKysrKysrKysrKysrLS0KIDMgZmlsZXMg Y2hhbmdlZCwgOTMgaW5zZXJ0aW9ucygrKSwgMjUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv dG9vbHMvbGlieGMvaW5jbHVkZS94ZW5jdHJsLmggYi90b29scy9saWJ4Yy9pbmNsdWRlL3hlbmN0 cmwuaAppbmRleCA0MzE1MWNiLi4wNDNjMmJiIDEwMDY0NAotLS0gYS90b29scy9saWJ4Yy9pbmNs dWRlL3hlbmN0cmwuaAorKysgYi90b29scy9saWJ4Yy9pbmNsdWRlL3hlbmN0cmwuaApAQCAtMjQ1 OSw2ICsyNDU5LDI4IEBAIGVudW0geGNfcHNyX2NhdF90eXBlIHsKIH07CiB0eXBlZGVmIGVudW0g eGNfcHNyX2NhdF90eXBlIHhjX3Bzcl9jYXRfdHlwZTsKIAorZW51bSB4Y19wc3JfZmVhdF90eXBl IHsKKyAgICBYQ19QU1JfQ0FUX0wzLAorICAgIFhDX1BTUl9DQVRfTDIsCisgICAgWENfUFNSX01C QSwKK307Cit0eXBlZGVmIGVudW0geGNfcHNyX2ZlYXRfdHlwZSB4Y19wc3JfZmVhdF90eXBlOwor Cit1bmlvbiB4Y19wc3JfaHdfaW5mbyB7CisgICAgc3RydWN0IHsKKyAgICAgICAgdWludDMyX3Qg Y29zX21heDsKKyAgICAgICAgdWludDMyX3QgY2JtX2xlbjsKKyAgICAgICAgYm9vbCAgICAgY2Rw X2VuYWJsZWQ7CisgICAgfSBjYXQ7CisKKyAgICBzdHJ1Y3QgeworICAgICAgICB1aW50MzJfdCBj b3NfbWF4OworICAgICAgICB1aW50MzJfdCB0aHJ0bF9tYXg7CisgICAgICAgIGJvb2wgICAgIGxp bmVhcjsKKyAgICB9IG1iYTsKK307Cit0eXBlZGVmIHVuaW9uIHhjX3Bzcl9od19pbmZvIHhjX3Bz cl9od19pbmZvOworCiBpbnQgeGNfcHNyX2NtdF9hdHRhY2goeGNfaW50ZXJmYWNlICp4Y2gsIHVp bnQzMl90IGRvbWlkKTsKIGludCB4Y19wc3JfY210X2RldGFjaCh4Y19pbnRlcmZhY2UgKnhjaCwg dWludDMyX3QgZG9taWQpOwogaW50IHhjX3Bzcl9jbXRfZ2V0X2RvbWFpbl9ybWlkKHhjX2ludGVy ZmFjZSAqeGNoLCB1aW50MzJfdCBkb21pZCwKQEAgLTI0ODAsOSArMjUwMiw4IEBAIGludCB4Y19w c3JfY2F0X3NldF9kb21haW5fZGF0YSh4Y19pbnRlcmZhY2UgKnhjaCwgdWludDMyX3QgZG9taWQs CiBpbnQgeGNfcHNyX2NhdF9nZXRfZG9tYWluX2RhdGEoeGNfaW50ZXJmYWNlICp4Y2gsIHVpbnQz Ml90IGRvbWlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhjX3Bzcl9jYXRfdHlw ZSB0eXBlLCB1aW50MzJfdCB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dWludDY0X3QgKmRhdGEpOwotaW50IHhjX3Bzcl9jYXRfZ2V0X2luZm8oeGNfaW50ZXJmYWNlICp4 Y2gsIHVpbnQzMl90IHNvY2tldCwgdW5zaWduZWQgaW50IGx2bCwKLSAgICAgICAgICAgICAgICAg ICAgICAgIHVpbnQzMl90ICpjb3NfbWF4LCB1aW50MzJfdCAqY2JtX2xlbiwKLSAgICAgICAgICAg ICAgICAgICAgICAgIGJvb2wgKmNkcF9lbmFibGVkKTsKK2ludCB4Y19wc3JfZ2V0X2h3X2luZm8o eGNfaW50ZXJmYWNlICp4Y2gsIHVpbnQzMl90IHNvY2tldCwKKyAgICAgICAgICAgICAgICAgICAg ICAgeGNfcHNyX2ZlYXRfdHlwZSB0eXBlLCB4Y19wc3JfaHdfaW5mbyAqaHdfaW5mbyk7CiAKIGlu dCB4Y19nZXRfY3B1X2xldmVsbGluZ19jYXBzKHhjX2ludGVyZmFjZSAqeGNoLCB1aW50MzJfdCAq Y2Fwcyk7CiBpbnQgeGNfZ2V0X2NwdV9mZWF0dXJlc2V0KHhjX2ludGVyZmFjZSAqeGNoLCB1aW50 MzJfdCBpbmRleCwKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhjL3hjX3Bzci5jIGIvdG9vbHMvbGli eGMveGNfcHNyLmMKaW5kZXggNWM1NGEzNS4uNmI4NGQ0NSAxMDA2NDQKLS0tIGEvdG9vbHMvbGli eGMveGNfcHNyLmMKKysrIGIvdG9vbHMvbGlieGMveGNfcHNyLmMKQEAgLTMyMywzNyArMzIzLDUy IEBAIGludCB4Y19wc3JfY2F0X2dldF9kb21haW5fZGF0YSh4Y19pbnRlcmZhY2UgKnhjaCwgdWlu dDMyX3QgZG9taWQsCiAgICAgcmV0dXJuIHJjOwogfQogCi1pbnQgeGNfcHNyX2NhdF9nZXRfaW5m byh4Y19pbnRlcmZhY2UgKnhjaCwgdWludDMyX3Qgc29ja2V0LCB1bnNpZ25lZCBpbnQgbHZsLAot ICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgKmNvc19tYXgsIHVpbnQzMl90ICpjYm1f bGVuLCBib29sICpjZHBfZW5hYmxlZCkKK2ludCB4Y19wc3JfZ2V0X2h3X2luZm8oeGNfaW50ZXJm YWNlICp4Y2gsIHVpbnQzMl90IHNvY2tldCwKKyAgICAgICAgICAgICAgICAgICAgICAgeGNfcHNy X2ZlYXRfdHlwZSB0eXBlLCB4Y19wc3JfaHdfaW5mbyAqaHdfaW5mbykKIHsKICAgICBpbnQgcmMg PSAtMTsKICAgICBERUNMQVJFX1NZU0NUTDsKIAorICAgIGlmICggIWh3X2luZm8gKQorICAgIHsK KyAgICAgICAgZXJybm8gPSBFSU5WQUw7CisgICAgICAgIHJldHVybiByYzsKKyAgICB9CisKICAg ICBzeXNjdGwuY21kID0gWEVOX1NZU0NUTF9wc3JfYWxsb2M7CiAgICAgc3lzY3RsLnUucHNyX2Fs bG9jLnRhcmdldCA9IHNvY2tldDsKIAotICAgIHN3aXRjaCAoIGx2bCApCisgICAgc3dpdGNoICgg dHlwZSApCiAgICAgewotICAgIGNhc2UgMjoKLSAgICAgICAgc3lzY3RsLnUucHNyX2FsbG9jLmNt ZCA9IFhFTl9TWVNDVExfUFNSX2dldF9sMl9pbmZvOworICAgIGNhc2UgWENfUFNSX0NBVF9MMjoK KyAgICBjYXNlIFhDX1BTUl9DQVRfTDM6CisgICAgICAgIHN5c2N0bC51LnBzcl9hbGxvYy5jbWQg PSAoIHR5cGUgID09IFhDX1BTUl9DQVRfTDIgKSA/CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBYRU5fU1lTQ1RMX1BTUl9nZXRfbDJfaW5mbyA6CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBYRU5fU1lTQ1RMX1BTUl9nZXRfbDNfaW5mbzsKKwogICAgICAgICByYyA9 IHhjX3N5c2N0bCh4Y2gsICZzeXNjdGwpOwotICAgICAgICBpZiAoICFyYyApCi0gICAgICAgIHsK LSAgICAgICAgICAgICpjb3NfbWF4ID0gc3lzY3RsLnUucHNyX2FsbG9jLnUuY2F0X2luZm8uY29z X21heDsKLSAgICAgICAgICAgICpjYm1fbGVuID0gc3lzY3RsLnUucHNyX2FsbG9jLnUuY2F0X2lu Zm8uY2JtX2xlbjsKLSAgICAgICAgICAgICpjZHBfZW5hYmxlZCA9IGZhbHNlOwotICAgICAgICB9 CisgICAgICAgIGlmICggcmMgKQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgaHdfaW5m by0+Y2F0LmNvc19tYXggPSBzeXNjdGwudS5wc3JfYWxsb2MudS5jYXRfaW5mby5jb3NfbWF4Owor ICAgICAgICBod19pbmZvLT5jYXQuY2JtX2xlbiA9IHN5c2N0bC51LnBzcl9hbGxvYy51LmNhdF9p bmZvLmNibV9sZW47CisgICAgICAgIGh3X2luZm8tPmNhdC5jZHBfZW5hYmxlZCA9ICggdHlwZSAg PT0gWENfUFNSX0NBVF9MMiApID8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ZmFsc2UgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHN5c2N0bC51LnBz cl9hbGxvYy51LmNhdF9pbmZvLmZsYWdzICYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFhFTl9TWVNDVExfUFNSX0NBVF9MM19DRFAgKTsKKwogICAgICAgICBicmVhazsKLSAg ICBjYXNlIDM6Ci0gICAgICAgIHN5c2N0bC51LnBzcl9hbGxvYy5jbWQgPSBYRU5fU1lTQ1RMX1BT Ul9nZXRfbDNfaW5mbzsKKyAgICBjYXNlIFhDX1BTUl9NQkE6CisgICAgICAgIHN5c2N0bC51LnBz cl9hbGxvYy5jbWQgPSBYRU5fU1lTQ1RMX1BTUl9nZXRfbWJhX2luZm87CiAgICAgICAgIHJjID0g eGNfc3lzY3RsKHhjaCwgJnN5c2N0bCk7Ci0gICAgICAgIGlmICggIXJjICkKLSAgICAgICAgewot ICAgICAgICAgICAgKmNvc19tYXggPSBzeXNjdGwudS5wc3JfYWxsb2MudS5jYXRfaW5mby5jb3Nf bWF4OwotICAgICAgICAgICAgKmNibV9sZW4gPSBzeXNjdGwudS5wc3JfYWxsb2MudS5jYXRfaW5m by5jYm1fbGVuOwotICAgICAgICAgICAgKmNkcF9lbmFibGVkID0gc3lzY3RsLnUucHNyX2FsbG9j LnUuY2F0X2luZm8uZmxhZ3MgJgotICAgICAgICAgICAgICAgICAgICAgICAgICAgWEVOX1NZU0NU TF9QU1JfQ0FUX0wzX0NEUDsKLSAgICAgICAgfQorICAgICAgICBpZiAoIHJjICkKKyAgICAgICAg ICAgIGJyZWFrOworCisgICAgICAgIGh3X2luZm8tPm1iYS5jb3NfbWF4ID0gc3lzY3RsLnUucHNy X2FsbG9jLnUubWJhX2luZm8uY29zX21heDsKKyAgICAgICAgaHdfaW5mby0+bWJhLnRocnRsX21h eCA9IHN5c2N0bC51LnBzcl9hbGxvYy51Lm1iYV9pbmZvLnRocnRsX21heDsKKyAgICAgICAgaHdf aW5mby0+bWJhLmxpbmVhciA9IHN5c2N0bC51LnBzcl9hbGxvYy51Lm1iYV9pbmZvLmZsYWdzICYK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhFTl9TWVNDVExfUFNSX01CQV9MSU5FQVI7 CisKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgZXJybm8gPSBFT1BOT1RT VVBQOwpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGwvbGlieGxfcHNyLmMgYi90b29scy9saWJ4bC9s aWJ4bF9wc3IuYwppbmRleCBkNGY1ZjY3Li5lOGQ2MmUxIDEwMDY0NAotLS0gYS90b29scy9saWJ4 bC9saWJ4bF9wc3IuYworKysgYi90b29scy9saWJ4bC9saWJ4bF9wc3IuYwpAQCAtMzYxLDYgKzM2 MSwyOSBAQCBpbnQgbGlieGxfcHNyX2NhdF9nZXRfY2JtKGxpYnhsX2N0eCAqY3R4LCB1aW50MzJf dCBkb21pZCwKICAgICByZXR1cm4gcmM7CiB9CiAKK3N0YXRpYyB4Y19wc3JfZmVhdF90eXBlIGxp YnhsX19mZWF0X3R5cGVfdG9fbGlieGNfZmVhdF90eXBlKAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGxpYnhsX3Bzcl9mZWF0X3R5cGUgdHlwZSwgdW5zaWduZWQgaW50IGx2bCkKK3sKKyAg ICB4Y19wc3JfZmVhdF90eXBlIHhjX3R5cGU7CisKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBj YXNlIExJQlhMX1BTUl9GRUFUX1RZUEVfQ0FUOgorICAgICAgICBpZiAobHZsID09IDMpCisgICAg ICAgICAgICB4Y190eXBlID0gWENfUFNSX0NBVF9MMzsKKyAgICAgICAgaWYgKGx2bCA9PSAyKQor ICAgICAgICAgICAgeGNfdHlwZSA9IFhDX1BTUl9DQVRfTDI7CisgICAgICAgIGJyZWFrOworICAg IGNhc2UgTElCWExfUFNSX0ZFQVRfVFlQRV9NQkE6CisgICAgICAgIHhjX3R5cGUgPSBYQ19QU1Jf TUJBOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICAvKiBDb3VsZCBub3Qg aGFwcGVuICovCisgICAgICAgIGFzc2VydCgwKTsKKyAgICB9CisKKyAgICByZXR1cm4geGNfdHlw ZTsKK30KKwogaW50IGxpYnhsX3Bzcl9jYXRfZ2V0X2luZm8obGlieGxfY3R4ICpjdHgsIGxpYnhs X3Bzcl9jYXRfaW5mbyAqKmluZm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l ZCBpbnQgKm5yLCB1bnNpZ25lZCBpbnQgbHZsKQogewpAQCAtMzY5LDYgKzM5Miw4IEBAIGludCBs aWJ4bF9wc3JfY2F0X2dldF9pbmZvKGxpYnhsX2N0eCAqY3R4LCBsaWJ4bF9wc3JfY2F0X2luZm8g KippbmZvLAogICAgIGludCBpID0gMCwgc29ja2V0aWQsIG5yX3NvY2tldHM7CiAgICAgbGlieGxf Yml0bWFwIHNvY2tldG1hcDsKICAgICBsaWJ4bF9wc3JfY2F0X2luZm8gKnB0cjsKKyAgICB4Y19w c3JfaHdfaW5mbyBod19pbmZvOworICAgIHhjX3Bzcl9mZWF0X3R5cGUgeGNfdHlwZTsKIAogICAg IGxpYnhsX2JpdG1hcF9pbml0KCZzb2NrZXRtYXApOwogCkBAIC0zODUsMTYgKzQxMCwyMyBAQCBp bnQgbGlieGxfcHNyX2NhdF9nZXRfaW5mbyhsaWJ4bF9jdHggKmN0eCwgbGlieGxfcHNyX2NhdF9p bmZvICoqaW5mbywKICAgICAgICAgZ290byBvdXQ7CiAgICAgfQogCisgICAgeGNfdHlwZSA9IGxp YnhsX19mZWF0X3R5cGVfdG9fbGlieGNfZmVhdF90eXBlKExJQlhMX1BTUl9GRUFUX1RZUEVfQ0FU LCBsdmwpOworCiAgICAgcHRyID0gbGlieGxfX21hbGxvYyhOT0dDLCBucl9zb2NrZXRzICogc2l6 ZW9mKGxpYnhsX3Bzcl9jYXRfaW5mbykpOwogCiAgICAgbGlieGxfZm9yX2VhY2hfc2V0X2JpdChz b2NrZXRpZCwgc29ja2V0bWFwKSB7CiAgICAgICAgIHB0cltpXS5pZCA9IHNvY2tldGlkOwotICAg ICAgICBpZiAoeGNfcHNyX2NhdF9nZXRfaW5mbyhjdHgtPnhjaCwgc29ja2V0aWQsIGx2bCwgJnB0 cltpXS5jb3NfbWF4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcHRyW2ldLmNi bV9sZW4sICZwdHJbaV0uY2RwX2VuYWJsZWQpKSB7CisgICAgICAgIGlmICh4Y19wc3JfZ2V0X2h3 X2luZm8oY3R4LT54Y2gsIHNvY2tldGlkLCB4Y190eXBlLCAmaHdfaW5mbykpIHsKKyAgICAgICAg ICAgIExPR0UoRVJST1IsICJmYWlsZWQgdG8gZ2V0IGh3IGluZm8iKTsKICAgICAgICAgICAgIHJj ID0gRVJST1JfRkFJTDsKICAgICAgICAgICAgIGZyZWUocHRyKTsKICAgICAgICAgICAgIGdvdG8g b3V0OwogICAgICAgICB9CisKKyAgICAgICAgcHRyW2ldLmNvc19tYXggPSBod19pbmZvLmNhdC5j b3NfbWF4OworICAgICAgICBwdHJbaV0uY2JtX2xlbiA9IGh3X2luZm8uY2F0LmNibV9sZW47Cisg ICAgICAgIHB0cltpXS5jZHBfZW5hYmxlZCA9IGh3X2luZm8uY2F0LmNkcF9lbmFibGVkOworCiAg ICAgICAgIGkrKzsKICAgICB9CiAKLS0gCjEuOS4xCgoKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxA bGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==