From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stefano Stabellini Subject: [PATCH v11 7/9] xen: use DECLARE_BOUNDS as required Date: Tue, 5 Mar 2019 14:38:30 -0800 Message-ID: <1551825512-8975-7-git-send-email-sstabellini@kernel.org> References: Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1h1Ihq-0000ue-W1 for xen-devel@lists.xenproject.org; Tue, 05 Mar 2019 22:38:39 +0000 In-Reply-To: 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: Stefano Stabellini , sstabellini@kernel.org, andrew.cooper3@citrix.com, George.Dunlap@citrix.com, julien.grall@arm.com, JBeulich@suse.com, ian.jackson@citrix.com List-Id: xen-devel@lists.xenproject.org VXNlIERFQ0xBUkVfQk9VTkRTIGFuZCB0aGUgdHdvIHN0YXRpYyBpbmxpbmUgZnVuY3Rpb25zIHRo YXQgY29tZSB3aXRoIGl0CmZvciBjb21wYXJpc29ucyBhbmQgc3VidHJhY3Rpb25zIG9mOgoKX3N0 YXJ0LCBfZW5kLCBfc3RleHQsIF9ldGV4dCwgX3Nyb2RhdGEsIF9lcm9kYXRhLCBfc2luaXR0ZXh0 LApfZWluaXR0ZXh0CgpVc2UgZXhwbGljaXQgY2FzdHMgdG8gdWludHB0cl90IHdoZW4gaXQgaXMg bm90IHBvc3NpYmxlIHRvIHVzZSB0aGUKcHJvdmlkZWQgc3RhdGljIGlubGluZSBmdW5jdGlvbnMu CgpNM0NNOiBSdWxlLTE4LjI6IFN1YnRyYWN0aW9uIGJldHdlZW4gcG9pbnRlcnMgc2hhbGwgb25s eSBiZSBhcHBsaWVkIHRvCnBvaW50ZXJzIHRoYXQgYWRkcmVzcyBlbGVtZW50cyBvZiB0aGUgc2Ft ZSBhcnJheQoKU2luY2Ugd2UgYXJlIGNoYW5naW5nIHRoZSBib2R5IG9mIGlzX2tlcm5lbF90ZXh0 IGFuZCBmcmllbmRzLCB0YWtlIHRoZQpvcHBvcnR1bml0eSB0byByZW1vdmUgdGhlIGxlYWRpbmcg dW5kZXJzY29yZXMgaW4gdGhlIGxvY2FsIHZhcmlhYmxlcwpuYW1lcywgd2hpY2ggYXJlIHZpb2xh dGlvbmcgbmFtZXNwYWNlIHJ1bGVzLiBBbHNvIG1ha2UgdGhlIGxvY2FsIHBfXwp2YXJpYWJsZSBj b25zdC4KCmh0dHBzOi8vd2lraS5zZWkuY211LmVkdS9jb25mbHVlbmNlL2Rpc3BsYXkvYy9BUlIz Ni1DLitEbytub3Qrc3VidHJhY3Qrb3IrY29tcGFyZSt0d28rcG9pbnRlcnMrdGhhdCtkbytub3Qr cmVmZXIrdG8rdGhlK3NhbWUrYXJyYXkKClFBVmVyaWZ5OiAyNzYxClNpZ25lZC1vZmYtYnk6IFN0 ZWZhbm8gU3RhYmVsbGluaSA8c3RlZmFub3NAeGlsaW54LmNvbT4KQ0M6IEpCZXVsaWNoQHN1c2Uu Y29tCkNDOiBhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tCi0tLQpDaGFuZ2VzIGluIHYxMToKLSBm aXggYnVnOiBhIGNvbW1hIGFkZGVkIGJ5IG1pc3Rha2UKLSB1c2UgREVDTEFSRV9CT1VORFMKCkNo YW5nZXMgaW4gdjEwOgotIG5ldyBwYXRjaAotLS0KIHhlbi9hcmNoL2FybS9hbHRlcm5hdGl2ZS5j ICAgICAgICB8ICA0ICsrLS0KIHhlbi9hcmNoL2FybS9hcm0zMi9saXZlcGF0Y2guYyAgICB8ICAy ICstCiB4ZW4vYXJjaC9hcm0vYXJtNjQvbGl2ZXBhdGNoLmMgICAgfCAgMiArLQogeGVuL2FyY2gv YXJtL2xpdmVwYXRjaC5jICAgICAgICAgIHwgIDQgKystLQogeGVuL2FyY2gvYXJtL21tLmMgICAg ICAgICAgICAgICAgIHwgIDYgKysrLS0tCiB4ZW4vYXJjaC9hcm0vc2V0dXAuYyAgICAgICAgICAg ICAgfCAgNSArKystLQogeGVuL2FyY2gveDg2L3NldHVwLmMgICAgICAgICAgICAgIHwgIDMgKyst CiB4ZW4vaW5jbHVkZS9hc20tYXJtL2dyYW50X3RhYmxlLmggfCAgMyArKy0KIHhlbi9pbmNsdWRl L3hlbi9rZXJuZWwuaCAgICAgICAgICB8IDQyICsrKysrKysrKysrKysrKysrKysrKysrKy0tLS0t LS0tLS0tLS0tLQogOSBmaWxlcyBjaGFuZ2VkLCA0MiBpbnNlcnRpb25zKCspLCAyOSBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vYWx0ZXJuYXRpdmUuYyBiL3hlbi9hcmNo L2FybS9hbHRlcm5hdGl2ZS5jCmluZGV4IDUyZWQ3ZWQuLjYwMTMxMTAgMTAwNjQ0Ci0tLSBhL3hl bi9hcmNoL2FybS9hbHRlcm5hdGl2ZS5jCisrKyBiL3hlbi9hcmNoL2FybS9hbHRlcm5hdGl2ZS5j CkBAIC0xODgsNyArMTg4LDcgQEAgc3RhdGljIGludCBfX2FwcGx5X2FsdGVybmF0aXZlc19tdWx0 aV9zdG9wKHZvaWQgKnVudXNlZCkKICAgICAgICAgaW50IHJldDsKICAgICAgICAgc3RydWN0IGFs dF9yZWdpb24gcmVnaW9uOwogICAgICAgICBtZm5fdCB4ZW5fbWZuID0gdmlydF90b19tZm4oX3N0 YXJ0KTsKLSAgICAgICAgcGFkZHJfdCB4ZW5fc2l6ZSA9IF9lbmQgLSBfc3RhcnQ7CisgICAgICAg IHBhZGRyX3QgeGVuX3NpemUgPSB4ZW5fZGlmZihfc3RhcnQsIF9lbmQpOwogICAgICAgICB1bnNp Z25lZCBpbnQgeGVuX29yZGVyID0gZ2V0X29yZGVyX2Zyb21fYnl0ZXMoeGVuX3NpemUpOwogICAg ICAgICB2b2lkICp4ZW5tYXA7CiAKQEAgLTIwNiw3ICsyMDYsNyBAQCBzdGF0aWMgaW50IF9fYXBw bHlfYWx0ZXJuYXRpdmVzX211bHRpX3N0b3Aodm9pZCAqdW51c2VkKQogICAgICAgICByZWdpb24u YmVnaW4gPSBfX2FsdF9pbnN0cnVjdGlvbnM7CiAgICAgICAgIHJlZ2lvbi5lbmQgPSBfX2FsdF9p bnN0cnVjdGlvbnNfZW5kOwogCi0gICAgICAgIHJldCA9IF9fYXBwbHlfYWx0ZXJuYXRpdmVzKCZy ZWdpb24sIHhlbm1hcCAtICh2b2lkICopX3N0YXJ0KTsKKyAgICAgICAgcmV0ID0gX19hcHBseV9h bHRlcm5hdGl2ZXMoJnJlZ2lvbiwgeGVuX2RpZmYoX3N0YXJ0LCB4ZW5tYXApKTsKICAgICAgICAg LyogVGhlIHBhdGNoaW5nIGlzIG5vdCBleHBlY3RlZCB0byBmYWlsIGR1cmluZyBib290LiAqLwog ICAgICAgICBCVUdfT04ocmV0ICE9IDApOwogCmRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vYXJt MzIvbGl2ZXBhdGNoLmMgYi94ZW4vYXJjaC9hcm0vYXJtMzIvbGl2ZXBhdGNoLmMKaW5kZXggNDEz NzhhNS4uODM4NTJkMyAxMDA2NDQKLS0tIGEveGVuL2FyY2gvYXJtL2FybTMyL2xpdmVwYXRjaC5j CisrKyBiL3hlbi9hcmNoL2FybS9hcm0zMi9saXZlcGF0Y2guYwpAQCAtNTYsNyArNTYsNyBAQCB2 b2lkIGFyY2hfbGl2ZXBhdGNoX2FwcGx5KHN0cnVjdCBsaXZlcGF0Y2hfZnVuYyAqZnVuYykKICAg ICBlbHNlCiAgICAgICAgIGluc24gPSAweGUxYTAwMDAwOyAvKiBtb3YgcjAsIHIwICovCiAKLSAg ICBuZXdfcHRyID0gZnVuYy0+b2xkX2FkZHIgLSAodm9pZCAqKV9zdGFydCArIHZtYXBfb2ZfeGVu X3RleHQ7CisgICAgbmV3X3B0ciA9IHhlbl9kaWZmKF9zdGFydCwgZnVuYy0+b2xkX2FkZHIpICsg dm1hcF9vZl94ZW5fdGV4dDsKICAgICBsZW4gPSBsZW4gLyBzaXplb2YodWludDMyX3QpOwogCiAg ICAgLyogUEFUQ0ghICovCmRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vYXJtNjQvbGl2ZXBhdGNo LmMgYi94ZW4vYXJjaC9hcm0vYXJtNjQvbGl2ZXBhdGNoLmMKaW5kZXggMjI0N2I5Mi4uYzYzYTBk ZCAxMDA2NDQKLS0tIGEveGVuL2FyY2gvYXJtL2FybTY0L2xpdmVwYXRjaC5jCisrKyBiL3hlbi9h cmNoL2FybS9hcm02NC9saXZlcGF0Y2guYwpAQCAtNDMsNyArNDMsNyBAQCB2b2lkIGFyY2hfbGl2 ZXBhdGNoX2FwcGx5KHN0cnVjdCBsaXZlcGF0Y2hfZnVuYyAqZnVuYykKICAgICAvKiBWZXJpZmll ZCBpbiBsaXZlcGF0Y2hfdmVyaWZ5X2Rpc3RhbmNlLiAqLwogICAgIEFTU0VSVChpbnNuICE9IEFB UkNINjRfQlJFQUtfRkFVTFQpOwogCi0gICAgbmV3X3B0ciA9IGZ1bmMtPm9sZF9hZGRyIC0gKHZv aWQgKilfc3RhcnQgKyB2bWFwX29mX3hlbl90ZXh0OworICAgIG5ld19wdHIgPSB4ZW5fZGlmZihf c3RhcnQsIGZ1bmMtPm9sZF9hZGRyKSArIHZtYXBfb2ZfeGVuX3RleHQ7CiAgICAgbGVuID0gbGVu IC8gc2l6ZW9mKHVpbnQzMl90KTsKIAogICAgIC8qIFBBVENIISAqLwpkaWZmIC0tZ2l0IGEveGVu L2FyY2gvYXJtL2xpdmVwYXRjaC5jIGIveGVuL2FyY2gvYXJtL2xpdmVwYXRjaC5jCmluZGV4IDI3 OWQ1MmMuLjFiYTA2OGMgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL2FybS9saXZlcGF0Y2guYworKysg Yi94ZW4vYXJjaC9hcm0vbGl2ZXBhdGNoLmMKQEAgLTI3LDcgKzI3LDcgQEAgaW50IGFyY2hfbGl2 ZXBhdGNoX3F1aWVzY2Uodm9pZCkKICAgICAgICAgcmV0dXJuIC1FSU5WQUw7CiAKICAgICB0ZXh0 X21mbiA9IHZpcnRfdG9fbWZuKF9zdGFydCk7Ci0gICAgdGV4dF9vcmRlciA9IGdldF9vcmRlcl9m cm9tX2J5dGVzKF9lbmQgLSBfc3RhcnQpOworICAgIHRleHRfb3JkZXIgPSBnZXRfb3JkZXJfZnJv bV9ieXRlcyh4ZW5fZGlmZihfc3RhcnQsIF9lbmQpKTsKIAogICAgIC8qCiAgICAgICogVGhlIHRl eHQgc2VjdGlvbiBpcyByZWFkLW9ubHkuIFNvIHJlLW1hcCBYZW4gdG8gYmUgYWJsZSB0byBwYXRj aApAQCAtNzgsNyArNzgsNyBAQCB2b2lkIGFyY2hfbGl2ZXBhdGNoX3JldmVydChjb25zdCBzdHJ1 Y3QgbGl2ZXBhdGNoX2Z1bmMgKmZ1bmMpCiAgICAgdWludDMyX3QgKm5ld19wdHI7CiAgICAgdW5z aWduZWQgaW50IGxlbjsKIAotICAgIG5ld19wdHIgPSBmdW5jLT5vbGRfYWRkciAtICh2b2lkICop X3N0YXJ0ICsgdm1hcF9vZl94ZW5fdGV4dDsKKyAgICBuZXdfcHRyID0geGVuX2RpZmYoX3N0YXJ0 LCBmdW5jLT5vbGRfYWRkcikgKyB2bWFwX29mX3hlbl90ZXh0OwogCiAgICAgbGVuID0gbGl2ZXBh dGNoX2luc25fbGVuKGZ1bmMpOwogICAgIG1lbWNweShuZXdfcHRyLCBmdW5jLT5vcGFxdWUsIGxl bik7CmRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vbW0uYyBiL3hlbi9hcmNoL2FybS9tbS5jCmlu ZGV4IGRmNTJiMjYuLmVkMTY4MjQgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL2FybS9tbS5jCisrKyBi L3hlbi9hcmNoL2FybS9tbS5jCkBAIC0xMDc0LDcgKzEwNzQsNyBAQCBpbnQgbW9kaWZ5X3hlbl9t YXBwaW5ncyh1bnNpZ25lZCBsb25nIHMsIHVuc2lnbmVkIGxvbmcgZSwgdW5zaWduZWQgaW50IGZs YWdzKQogfQogCiBlbnVtIG1nIHsgbWdfY2xlYXIsIG1nX3JvLCBtZ19ydywgbWdfcnggfTsKLXN0 YXRpYyB2b2lkIHNldF9wdGVfZmxhZ3Nfb25fcmFuZ2UoY29uc3QgY2hhciAqcCwgdW5zaWduZWQg bG9uZyBsLCBlbnVtIG1nIG1nKQorc3RhdGljIHZvaWQgc2V0X3B0ZV9mbGFnc19vbl9yYW5nZShj b25zdCB2b2lkICpwLCB1bnNpZ25lZCBsb25nIGwsIGVudW0gbWcgbWcpCiB7CiAgICAgbHBhZV90 IHB0ZTsKICAgICBpbnQgaTsKQEAgLTEwODUsOCArMTA4NSw4IEBAIHN0YXRpYyB2b2lkIHNldF9w dGVfZmxhZ3Nfb25fcmFuZ2UoY29uc3QgY2hhciAqcCwgdW5zaWduZWQgbG9uZyBsLCBlbnVtIG1n IG1nKQogICAgIEFTU0VSVCghKCh1bnNpZ25lZCBsb25nKSBwICYgflBBR0VfTUFTSykpOwogICAg IEFTU0VSVCghKGwgJiB+UEFHRV9NQVNLKSk7CiAKLSAgICBmb3IgKCBpID0gKHAgLSBfc3RhcnQp IC8gUEFHRV9TSVpFOyAKLSAgICAgICAgICBpIDwgKHAgKyBsIC0gX3N0YXJ0KSAvIFBBR0VfU0la RTsgCisgICAgZm9yICggaSA9IHhlbl9kaWZmKF9zdGFydCwgcCkgLyBQQUdFX1NJWkU7CisgICAg ICAgICAgaSA8ICh4ZW5fZGlmZihfc3RhcnQsIHApICsgbCkgLyBQQUdFX1NJWkU7CiAgICAgICAg ICAgaSsrICkKICAgICB7CiAgICAgICAgIHB0ZSA9IHhlbl94ZW5tYXBbaV07CmRpZmYgLS1naXQg YS94ZW4vYXJjaC9hcm0vc2V0dXAuYyBiL3hlbi9hcmNoL2FybS9zZXR1cC5jCmluZGV4IDQ0NDg1 N2EuLjhkNDM5NDMgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL2FybS9zZXR1cC5jCisrKyBiL3hlbi9h cmNoL2FybS9zZXR1cC5jCkBAIC03NzIsOCArNzcyLDkgQEAgdm9pZCBfX2luaXQgc3RhcnRfeGVu KHVuc2lnbmVkIGxvbmcgYm9vdF9waHlzX29mZnNldCwKIAogICAgIC8qIFJlZ2lzdGVyIFhlbidz IGxvYWQgYWRkcmVzcyBhcyBhIGJvb3QgbW9kdWxlLiAqLwogICAgIHhlbl9ib290bW9kdWxlID0g YWRkX2Jvb3RfbW9kdWxlKEJPT1RNT0RfWEVOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAocGFkZHJfdCkodWludHB0cl90KShfc3RhcnQgKyBib290X3BoeXNfb2Zmc2V0KSwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKHBhZGRyX3QpKHVpbnRwdHJfdCkoX2VuZCAtIF9zdGFy dCArIDEpLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYWRkcl90KShf c3RhcnQgKyBib290X3BoeXNfb2Zmc2V0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KHBhZGRyX3QpKHhlbl9kaWZmKF9zdGFydCwgX2VuZCkgKyAxKSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZmFsc2UpOwogICAgIEJVR19PTigheGVuX2Jvb3Rtb2R1bGUpOwogCiAgICAg c2V0dXBfcGFnZXRhYmxlcyhib290X3BoeXNfb2Zmc2V0KTsKZGlmZiAtLWdpdCBhL3hlbi9hcmNo L3g4Ni9zZXR1cC5jIGIveGVuL2FyY2gveDg2L3NldHVwLmMKaW5kZXggMzI2NDMyOC4uMmFjN2Y2 MiAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L3NldHVwLmMKKysrIGIveGVuL2FyY2gveDg2L3Nl dHVwLmMKQEAgLTEwNzEsNyArMTA3MSw4IEBAIHZvaWQgX19pbml0IG5vcmV0dXJuIF9fc3RhcnRf eGVuKHVuc2lnbmVkIGxvbmcgbWJpX3ApCiAgICAgICAgICAgICAgKiBkYXRhIHVudGlsIGFmdGVy IHdlIGhhdmUgc3dpdGNoZWQgdG8gdGhlIHJlbG9jYXRlZCBwYWdldGFibGVzIQogICAgICAgICAg ICAgICovCiAgICAgICAgICAgICBiYXJyaWVyKCk7Ci0gICAgICAgICAgICBtb3ZlX21lbW9yeShl ICsgWEVOX0lNR19PRkZTRVQsIFhFTl9JTUdfT0ZGU0VULCBfZW5kIC0gX3N0YXJ0LCAxKTsKKyAg ICAgICAgICAgIG1vdmVfbWVtb3J5KGUgKyBYRU5fSU1HX09GRlNFVCwgWEVOX0lNR19PRkZTRVQs CisgICAgICAgICAgICAgICAgICAgICAgICB4ZW5fZGlmZihfc3RhcnQsIF9lbmQpLCAxKTsKIAog ICAgICAgICAgICAgLyogV2FsayBpbml0aWFsIHBhZ2V0YWJsZXMsIHJlbG9jYXRpbmcgcGFnZSBk aXJlY3RvcnkgZW50cmllcy4gKi8KICAgICAgICAgICAgIHBsNGUgPSBfX3ZhKF9fcGEoaWRsZV9w Z190YWJsZSkpOwpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLWFybS9ncmFudF90YWJsZS5o IGIveGVuL2luY2x1ZGUvYXNtLWFybS9ncmFudF90YWJsZS5oCmluZGV4IDgxNmUzYzYuLjEwOTc3 OTEgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL2FzbS1hcm0vZ3JhbnRfdGFibGUuaAorKysgYi94 ZW4vaW5jbHVkZS9hc20tYXJtL2dyYW50X3RhYmxlLmgKQEAgLTMxLDcgKzMxLDggQEAgdm9pZCBn bnR0YWJfbWFya19kaXJ0eShzdHJ1Y3QgZG9tYWluICpkLCBtZm5fdCBtZm4pOwogICogZW5vdWdo IHNwYWNlIGZvciBhIGxhcmdlIGdyYW50IHRhYmxlCiAgKi8KICNkZWZpbmUgZ250dGFiX2RvbTBf ZnJhbWVzKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0g ICAgbWluX3QodW5zaWduZWQgaW50LCBvcHRfbWF4X2dyYW50X2ZyYW1lcywgUEZOX0RPV04oX2V0 ZXh0IC0gX3N0ZXh0KSkKKyAgICBtaW5fdCh1bnNpZ25lZCBpbnQsIG9wdF9tYXhfZ3JhbnRfZnJh bWVzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgUEZOX0RPV04odGV4 dF9kaWZmKF9zdGV4dCwgX2V0ZXh0KSkpCiAKICNkZWZpbmUgZ250dGFiX2luaXRfYXJjaChndCkg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAoeyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXApkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUveGVuL2tlcm5lbC5oIGIveGVuL2luY2x1 ZGUveGVuL2tlcm5lbC5oCmluZGV4IDU0OGI2NGQuLmMxMDVhMmEgMTAwNjQ0Ci0tLSBhL3hlbi9p bmNsdWRlL3hlbi9rZXJuZWwuaAorKysgYi94ZW4vaW5jbHVkZS94ZW4va2VybmVsLmgKQEAgLTUs NiArNSw3IEBACiAgKiAna2VybmVsLmgnIGNvbnRhaW5zIHNvbWUgb2Z0ZW4tdXNlZCBmdW5jdGlv biBwcm90b3R5cGVzIGV0YwogICovCiAKKyNpbmNsdWRlIDx4ZW4vbGliLmg+CiAjaW5jbHVkZSA8 eGVuL3R5cGVzLmg+CiAKIC8qCkBAIC02NSwyOCArNjYsMzcgQEAKIAkxOyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXAogfSkKIAotZXh0ZXJuIGNoYXIgX3N0YXJ0W10sIF9l bmRbXSwgc3RhcnRbXTsKLSNkZWZpbmUgaXNfa2VybmVsKHApICh7ICAgICAgICAgICAgICAgICAg ICAgICAgIFwKLSAgICBjaGFyICpfX3AgPSAoY2hhciAqKSh1bnNpZ25lZCBsb25nKShwKTsgICAg IFwKLSAgICAoX19wID49IF9zdGFydCkgJiYgKF9fcCA8IF9lbmQpOyAgICAgICAgICAgIFwKK2V4 dGVybiBjaGFyIHN0YXJ0W107Cit0eXBlZGVmIGNoYXIgeGVuX3Q7CitERUNMQVJFX0JPVU5EUyh4 ZW4sIF9zdGFydCwgX2VuZCk7CisjZGVmaW5lIGlzX2tlcm5lbChwKSAoeyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjb25zdCBjaGFyICpwX18gPSAo Y29uc3QgY2hhciAqKSh1bnNpZ25lZCBsb25nKShwKTsgICAgICAgICAgICAgXAorICAgICgodWlu dHB0cl90KXBfXyA+PSAodWludHB0cl90KV9zdGFydCAmJiAgICAgICAgICAgICAgICAgICAgICAg ICBcCisgICAgeGVuX2x0KHBfXywgX2VuZCkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFwKIH0pCiAKLWV4dGVybiBjaGFyIF9zdGV4dFtdLCBfZXRleHRbXTsK LSNkZWZpbmUgaXNfa2VybmVsX3RleHQocCkgKHsgICAgICAgICAgICAgICAgICAgIFwKLSAgICBj aGFyICpfX3AgPSAoY2hhciAqKSh1bnNpZ25lZCBsb25nKShwKTsgICAgIFwKLSAgICAoX19wID49 IF9zdGV4dCkgJiYgKF9fcCA8IF9ldGV4dCk7ICAgICAgICAgIFwKK3R5cGVkZWYgY2hhciB0ZXh0 X3Q7CitERUNMQVJFX0JPVU5EUyh0ZXh0LCBfc3RleHQsIF9ldGV4dCk7CisjZGVmaW5lIGlzX2tl cm5lbF90ZXh0KHApICh7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK KyAgICBjb25zdCBjaGFyICpwX18gPSAoY29uc3QgY2hhciAqKSh1bnNpZ25lZCBsb25nKShwKTsg ICAgICAgICAgICAgXAorICAgICgodWludHB0cl90KXBfXyA+PSAodWludHB0cl90KSBfc3RleHQg JiYgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgdGV4dF9sdChwX18sIF9ldGV4dCkpOyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKIH0pCiAKLWV4dGVybiBj b25zdCBjaGFyIF9zcm9kYXRhW10sIF9lcm9kYXRhW107Ci0jZGVmaW5lIGlzX2tlcm5lbF9yb2Rh dGEocCkgKHsgICAgICAgICAgICAgICAgICBcCi0gICAgY29uc3QgY2hhciAqX19wID0gKGNvbnN0 IGNoYXIgKikodW5zaWduZWQgbG9uZykocCk7ICAgICBcCi0gICAgKF9fcCA+PSBfc3JvZGF0YSkg JiYgKF9fcCA8IF9lcm9kYXRhKTsgICAgICBcCit0eXBlZGVmIGNoYXIgcm9kYXRhX3Q7CitERUNM QVJFX0JPVU5EUyhyb2RhdGEsIF9zcm9kYXRhLCBfZXJvZGF0YSk7CisjZGVmaW5lIGlzX2tlcm5l bF9yb2RhdGEocCkgKHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg ICBjb25zdCBjaGFyICpwX18gPSAoY29uc3QgY2hhciAqKSh1bnNpZ25lZCBsb25nKShwKTsgICAg ICAgICAgICAgXAorICAgICgodWludHB0cl90KXBfXyA+PSAodWludHB0cl90KV9zcm9kYXRhICYm ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgcm9kYXRhX2x0KHBfXywgX2Vyb2RhdGEpKTsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKIH0pCiAKLWV4dGVybiBjaGFy IF9zaW5pdHRleHRbXSwgX2Vpbml0dGV4dFtdOwotI2RlZmluZSBpc19rZXJuZWxfaW5pdHRleHQo cCkgKHsgICAgICAgICAgICAgICAgXAotICAgIGNoYXIgKl9fcCA9IChjaGFyICopKHVuc2lnbmVk IGxvbmcpKHApOyAgICAgXAotICAgIChfX3AgPj0gX3Npbml0dGV4dCkgJiYgKF9fcCA8IF9laW5p dHRleHQpOyAgXAordHlwZWRlZiBjaGFyIGluaXR0ZXh0X3Q7CitERUNMQVJFX0JPVU5EUyhpbml0 dGV4dCwgX3Npbml0dGV4dCwgX2Vpbml0dGV4dCk7CisjZGVmaW5lIGlzX2tlcm5lbF9pbml0dGV4 dChwKSAoeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjb25zdCBj aGFyICpwX18gPSAoY29uc3QgY2hhciAqKSh1bnNpZ25lZCBsb25nKShwKTsgICAgICAgICAgICAg XAorICAgICgodWludHB0cl90KXBfXyA+PSAodWludHB0cl90KSBfc2luaXR0ZXh0ICYmICAgICAg ICAgICAgICAgICAgICBcCisgICAgaW5pdHRleHRfbHQocF9fLCBfZWluaXR0ZXh0KSk7ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKIH0pCiAKIGV4dGVybiBlbnVtIHN5c3RlbV9z dGF0ZSB7Ci0tIAoxLjkuMQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbnByb2pl Y3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby94ZW4t ZGV2ZWw=