From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mihai =?UTF-8?B?RG9uyJt1?= Subject: Re: [PATCH] xmalloc: add support for checking the pool integrity Date: Thu, 4 Dec 2014 19:10:09 +0200 Message-ID: <20141204191009.0434bc13@bitdefender.com> References: <1417712500-28009-1-git-send-email-mdontu@bitdefender.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1417712500-28009-1-git-send-email-mdontu@bitdefender.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: xen-devel@lists.xen.org List-Id: xen-devel@lists.xenproject.org T24gVGh1cnNkYXkgMDQgRGVjZW1iZXIgMjAxNCAxOTowMTo0MCBNaWhhaSBEb27Im3Ugd3JvdGU6 Cj4gSW1wbGVtZW50ZWQgeG1lbV9wb29sX2NoZWNrKCksIHhtZW1fcG9vbF9jaGVja19sb2NrZWQo KSBhbmQKPiB4bWVtX3Bvb2xfY2hlY2tfdW5sb2NrZWQoKSB0byB2ZXJpdHkgdGhlIGludGVncml0 eSBvZiB0aGUgVExTRiBtYXRyaXguCj4gCj4gU2lnbmVkLW9mZi1ieTogTWloYWkgRG9uyJt1IDxt ZG9udHVAYml0ZGVmZW5kZXIuY29tPgo+IC0tLQo+ICB4ZW4vY29tbW9uL3htYWxsb2NfdGxzZi5j IHwgMTE5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KPiAg eGVuL2luY2x1ZGUveGVuL3htYWxsb2MuaCB8ICAgNyArKysKPiAgMiBmaWxlcyBjaGFuZ2VkLCAx MjQgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEveGVuL2Nv bW1vbi94bWFsbG9jX3Rsc2YuYyBiL3hlbi9jb21tb24veG1hbGxvY190bHNmLmMKPiBpbmRleCBh NTc2OWM5Li4wMDliYTYwIDEwMDY0NAo+IC0tLSBhL3hlbi9jb21tb24veG1hbGxvY190bHNmLmMK PiArKysgYi94ZW4vY29tbW9uL3htYWxsb2NfdGxzZi5jCj4gQEAgLTEyMCw5ICsxMjAsMTIwIEBA IHN0cnVjdCB4bWVtX3Bvb2wgewo+ICAgICAgY2hhciBuYW1lW01BWF9QT09MX05BTUVfTEVOXTsK PiAgfTsKPiAgCj4gK3N0YXRpYyBzdHJ1Y3QgeG1lbV9wb29sICp4ZW5wb29sOwo+ICsKPiArc3Rh dGljIGlubGluZSB2b2lkIE1BUFBJTkdfSU5TRVJUKHVuc2lnbmVkIGxvbmcgciwgaW50ICpmbCwg aW50ICpzbCk7Cj4gKwo+ICAvKgo+ICAgKiBIZWxwaW5nIGZ1bmN0aW9ucwo+ICAgKi8KPiArI2lm bmRlZiBOREVCVUcKPiArc3RhdGljIGludCB4bWVtX3Bvb2xfY2hlY2tfc2l6ZShjb25zdCBzdHJ1 Y3QgYmhkciAqYiwgaW50IGZsLCBpbnQgc2wpCj4gK3sKPiArICAgIHdoaWxlICggYiApCj4gKyAg ICB7Cj4gKyAgICAgICAgaW50IF9fZmw7Cj4gKyAgICAgICAgaW50IF9fc2w7Cj4gKwo+ICsgICAg ICAgIE1BUFBJTkdfSU5TRVJUKGItPnNpemUsICZfX2ZsLCAmX19zbCk7Cj4gKyAgICAgICAgaWYg KCBfX2ZsICE9IGZsIHx8IF9fc2wgIT0gc2wgKQo+ICsgICAgICAgIHsKPiArICAgICAgICAgICAg cHJpbnRrKFhFTkxPR19FUlIgInhtZW1fcG9vbDogZm9yIGJsb2NrICVwIHNpemUgPSAldSwgeyBm bCA9ICVkLCBzbCA9ICVkIH0gc2hvdWxkIGJlIHsgZmwgPSAlZCwgc2wgPSAlZCB9XG4iLCBiLCBi LT5zaXplLCBmbCwgc2wsIF9fZmwsIF9fc2wpOwo+ICsgICAgICAgICAgICByZXR1cm4gMDsKPiAr ICAgICAgICB9Cj4gKyAgICAgICAgYiA9IGItPnB0ci5mcmVlX3B0ci5uZXh0Owo+ICsgICAgfQo+ ICsgICAgcmV0dXJuIDE7Cj4gK30KPiArCj4gKy8qCj4gKyAqIFRoaXMgZnVuY3Rpb24gbXVzdCBi ZSBjYWxsZWQgZnJvbSBhIGNvbnRleHQgd2hlcmUgcG9vbC0+bG9jayBpcwo+ICsgKiBhbHJlYWR5 IGFjcXVpcmVkCj4gKyAqLwo+ICsjZGVmaW5lIHhtZW1fcG9vbF9jaGVja191bmxvY2tlZChfX3Bv b2wpIF9feG1lbV9wb29sX2NoZWNrX3VubG9ja2VkKF9fRklMRV9fLCBfX0xJTkVfXywgX19wb29s KQo+ICtzdGF0aWMgaW50IF9feG1lbV9wb29sX2NoZWNrX3VubG9ja2VkKGNvbnN0IGNoYXIgKmZp bGUsIGludCBsaW5lLCBjb25zdCBzdHJ1Y3QgeG1lbV9wb29sICpwb29sKQo+ICt7Cj4gKyAgICBp bnQgaTsKPiArICAgIGludCB3b29wcyA9IDA7Cj4gKyAgICBzdGF0aWMgaW50IG9uY2UgPSAxOwo+ ICsKPiArICAgIGZvciAoIGkgPSAwOyBpIDwgUkVBTF9GTEk7IGkrKyApCj4gKyAgICB7Cj4gKyAg ICAgICAgaW50IGZsID0gKCBwb29sLT5mbF9iaXRtYXAgJiAoMSA8PCBpKSApID8gaSA6IC0xOwo+ ICsKPiArICAgICAgICBpZiAoIGZsID49IDAgKQo+ICsgICAgICAgIHsKPiArICAgICAgICAgICAg aW50IGo7Cj4gKyAgICAgICAgICAgIGludCBiaXRtYXBfZW1wdHkgPSAxOwo+ICsgICAgICAgICAg ICBpbnQgbWF0cml4X2VtcHR5ID0gMTsKPiArCj4gKyAgICAgICAgICAgIGZvciAoIGogPSAwOyBq IDwgTUFYX1NMSTsgaisrICkKPiArICAgICAgICAgICAgewo+ICsgICAgICAgICAgICAgICAgaW50 IHNsID0gKCBwb29sLT5zbF9iaXRtYXBbZmxdICYgKDEgPDwgaikgKSA/IGogOiAtMTsKPiArCj4g KyAgICAgICAgICAgICAgICBpZiAoIHNsIDwgMCApCj4gKyAgICAgICAgICAgICAgICAgICAgY29u dGludWU7Cj4gKwo+ICsgICAgICAgICAgICAgICAgaWYgKCBvbmNlICYmICFwb29sLT5tYXRyaXhb ZmxdW3NsXSApCj4gKyAgICAgICAgICAgICAgICB7Cj4gKyAgICAgICAgICAgICAgICAgICAgLyog VGhlIGJpdG1hcCBpcyBjb3JydXB0ZWQgKi8KPiArICAgICAgICAgICAgICAgICAgICBwcmludGso WEVOTE9HX0VSUiAieG1lbV9wb29sOiVzOiVkIHRoZSBUTFNGIGJpdG1hcCBpcyBjb3JydXB0ZWRc biIsIGZpbGUsIGxpbmUpOwo+ICsgICAgICAgICAgICAgICAgICAgIF9fd2FybigoY2hhciAqKWZp bGUsIGxpbmUpOwo+ICsgICAgICAgICAgICAgICAgICAgIG9uY2UgPSAwOwo+ICsgICAgICAgICAg ICAgICAgICAgIHdvb3BzID0gMTsKPiArICAgICAgICAgICAgICAgIH0KPiArICAgICAgICAgICAg ICAgIGVsc2UgaWYgKCBvbmNlICYmICF4bWVtX3Bvb2xfY2hlY2tfc2l6ZShwb29sLT5tYXRyaXhb ZmxdW3NsXSwgZmwsIHNsKSkKPiArICAgICAgICAgICAgICAgIHsKPiArICAgICAgICAgICAgICAg ICAgICBwcmludGsoWEVOTE9HX0VSUiAieG1lbV9wb29sOiVzOiVkIHRoZSBUTFNGIGNodW5rIG1h dHJpeCBpcyBjb3JydXB0ZWRcbiIsIGZpbGUsIGxpbmUpOwo+ICsgICAgICAgICAgICAgICAgICAg IF9fd2FybigoY2hhciAqKWZpbGUsIGxpbmUpOwo+ICsgICAgICAgICAgICAgICAgICAgIG9uY2Ug PSAwOwo+ICsgICAgICAgICAgICAgICAgICAgIHdvb3BzID0gMTsKPiArICAgICAgICAgICAgICAg IH0KPiArICAgICAgICAgICAgICAgIGlmICggcG9vbC0+bWF0cml4W2ZsXVtzbF0gKQo+ICsgICAg ICAgICAgICAgICAgICAgIG1hdHJpeF9lbXB0eSA9IDA7Cj4gKyAgICAgICAgICAgICAgICBiaXRt YXBfZW1wdHkgPSAwOwo+ICsgICAgICAgICAgICB9Cj4gKyAgICAgICAgICAgIGlmICggb25jZSAm JiBiaXRtYXBfZW1wdHkgKQo+ICsgICAgICAgICAgICB7Cj4gKyAgICAgICAgICAgICAgICAvKiBU aGUgYml0bWFwIGlzIGNvcnJ1cHRlZCAqLwo+ICsgICAgICAgICAgICAgICAgcHJpbnRrKFhFTkxP R19FUlIgInhtZW1fcG9vbDolczolZCB0aGUgVExTRiBiaXRtYXAgaXMgY29ycnVwdGVkIChub24t ZW1wdHkgRkwgd2l0aCBlbXB0eSBTTClcbiIsIGZpbGUsIGxpbmUpOwo+ICsgICAgICAgICAgICAg ICAgX193YXJuKChjaGFyICopZmlsZSwgbGluZSk7Cj4gKyAgICAgICAgICAgICAgICBvbmNlID0g MDsKPiArICAgICAgICAgICAgICAgIHdvb3BzID0gMTsKPiArICAgICAgICAgICAgfQo+ICsgICAg ICAgICAgICBpZiAoIG9uY2UgJiYgbWF0cml4X2VtcHR5ICkKPiArICAgICAgICAgICAgewo+ICsg ICAgICAgICAgICAgICAgLyogVGhlIGJpdG1hcCBpcyBjb3JydXB0ZWQgKi8KPiArICAgICAgICAg ICAgICAgIHByaW50ayhYRU5MT0dfRVJSICJ4bWVtX3Bvb2w6JXM6JWQgdGhlIFRMU0YgYml0bWFw IGlzIGNvcnJ1cHRlZCAoZW1wdHkgbWF0cml4KVxuIiwgZmlsZSwgbGluZSk7Cj4gKyAgICAgICAg ICAgICAgICBfX3dhcm4oKGNoYXIgKilmaWxlLCBsaW5lKTsKPiArICAgICAgICAgICAgICAgIG9u Y2UgPSAwOwo+ICsgICAgICAgICAgICAgICAgd29vcHMgPSAxOwo+ICsgICAgICAgICAgICB9Cj4g KyAgICAgICAgfQo+ICsgICAgfQo+ICsKPiArICAgIHJldHVybiB3b29wczsKPiArfQo+ICsKPiAr I2RlZmluZSB4bWVtX3Bvb2xfY2hlY2tfbG9ja2VkKF9fcG9vbCkgX194bWVtX3Bvb2xfY2hlY2tf bG9ja2VkKF9fRklMRV9fLCBfX0xJTkVfXywgX19wb29sKQo+ICtzdGF0aWMgaW50IF9feG1lbV9w b29sX2NoZWNrX2xvY2tlZChjb25zdCBjaGFyICpmaWxlLCBpbnQgbGluZSwgc3RydWN0IHhtZW1f cG9vbCAqcG9vbCkKPiArewo+ICsgICAgaW50IGVycjsKPiArCj4gKyAgICBzcGluX2xvY2soJnBv b2wtPmxvY2spOwo+ICsgICAgZXJyID0gX194bWVtX3Bvb2xfY2hlY2tfdW5sb2NrZWQoZmlsZSwg bGluZSwgcG9vbCk7Cj4gKyAgICBzcGluX3VubG9jaygmcG9vbC0+bG9jayk7Cj4gKyAgICByZXR1 cm4gZXJyOwo+ICt9Cj4gKwo+ICtpbnQgX194bWVtX3Bvb2xfY2hlY2soY29uc3QgY2hhciAqZmls ZSwgaW50IGxpbmUpCj4gK3sKPiArICAgIHJldHVybiBfX3htZW1fcG9vbF9jaGVja19sb2NrZWQo ZmlsZSwgbGluZSwgeGVucG9vbCk7Cj4gK30KPiArI2Vsc2UKPiArI2RlZmluZSB4bWVtX3Bvb2xf Y2hlY2tfbG9ja2VkKF9fcG9vbCkgZG8geyBpZiAoIDAgJiYgKF9fcG9vbCkgKTsgfSB3aGlsZSAo MCkKPiArI2RlZmluZSB4bWVtX3Bvb2xfY2hlY2tfdW5sb2NrZWQoX19wb29sKSBkbyB7IGlmICgg MCAmJiAoX19wb29sKSApOyB9IHdoaWxlICgwKQo+ICsjZW5kaWYKPiAgCj4gIC8qKgo+ICAgKiBS ZXR1cm5zIGluZGV4ZXMgKGZsLCBzbCkgb2YgdGhlIGxpc3QgdXNlZCB0byBzZXJ2ZSByZXF1ZXN0 IG9mIHNpemUgcgo+IEBAIC0zODEsNiArNDkyLDggQEAgdm9pZCAqeG1lbV9wb29sX2FsbG9jKHVu c2lnbmVkIGxvbmcgc2l6ZSwgc3RydWN0IHhtZW1fcG9vbCAqcG9vbCkKPiAgICAgIGludCBmbCwg c2w7Cj4gICAgICB1bnNpZ25lZCBsb25nIHRtcF9zaXplOwo+ICAKPiArICAgIHhtZW1fcG9vbF9j aGVja19sb2NrZWQocG9vbCk7Cj4gKwo+ICAgICAgaWYgKCBwb29sLT5pbml0X3JlZ2lvbiA9PSBO VUxMICkKPiAgICAgIHsKPiAgICAgICAgICBpZiAoIChyZWdpb24gPSBwb29sLT5nZXRfbWVtKHBv b2wtPmluaXRfc2l6ZSkpID09IE5VTEwgKQo+IEBAIC00NDIsMTEgKzU1NSwxMyBAQCB2b2lkICp4 bWVtX3Bvb2xfYWxsb2ModW5zaWduZWQgbG9uZyBzaXplLCBzdHJ1Y3QgeG1lbV9wb29sICpwb29s KQo+ICAKPiAgICAgIHBvb2wtPnVzZWRfc2l6ZSArPSAoYi0+c2l6ZSAmIEJMT0NLX1NJWkVfTUFT SykgKyBCSERSX09WRVJIRUFEOwo+ICAKPiArICAgIHhtZW1fcG9vbF9jaGVja191bmxvY2tlZChw b29sKTsKPiAgICAgIHNwaW5fdW5sb2NrKCZwb29sLT5sb2NrKTsKPiAgICAgIHJldHVybiAodm9p ZCAqKWItPnB0ci5idWZmZXI7Cj4gIAo+ICAgICAgLyogRmFpbGVkIGFsbG9jICovCj4gICBvdXRf bG9ja2VkOgo+ICsgICAgeG1lbV9wb29sX2NoZWNrX3VubG9ja2VkKHBvb2wpOwo+ICAgICAgc3Bp bl91bmxvY2soJnBvb2wtPmxvY2spOwo+ICAKPiAgIG91dDoKPiBAQCAtNDY0LDYgKzU3OSw3IEBA IHZvaWQgeG1lbV9wb29sX2ZyZWUodm9pZCAqcHRyLCBzdHJ1Y3QgeG1lbV9wb29sICpwb29sKQo+ ICAgICAgYiA9IChzdHJ1Y3QgYmhkciAqKSgoY2hhciAqKSBwdHIgLSBCSERSX09WRVJIRUFEKTsK PiAgCj4gICAgICBzcGluX2xvY2soJnBvb2wtPmxvY2spOwo+ICsgICAgeG1lbV9wb29sX2NoZWNr X3VubG9ja2VkKHBvb2wpOwo+ICAgICAgYi0+c2l6ZSB8PSBGUkVFX0JMT0NLOwo+ICAgICAgcG9v bC0+dXNlZF9zaXplIC09IChiLT5zaXplICYgQkxPQ0tfU0laRV9NQVNLKSArIEJIRFJfT1ZFUkhF QUQ7Cj4gICAgICBiLT5wdHIuZnJlZV9wdHIgPSAoc3RydWN0IGZyZWVfcHRyKSB7IE5VTEwsIE5V TEx9Owo+IEBAIC01MDAsNiArNjE2LDcgQEAgdm9pZCB4bWVtX3Bvb2xfZnJlZSh2b2lkICpwdHIs IHN0cnVjdCB4bWVtX3Bvb2wgKnBvb2wpCj4gICAgICB0bXBfYi0+c2l6ZSB8PSBQUkVWX0ZSRUU7 Cj4gICAgICB0bXBfYi0+cHJldl9oZHIgPSBiOwo+ICAgb3V0Ogo+ICsgICAgeG1lbV9wb29sX2No ZWNrX3VubG9ja2VkKHBvb2wpOwo+ICAgICAgc3Bpbl91bmxvY2soJnBvb2wtPmxvY2spOwo+ICB9 Cj4gIAo+IEBAIC01MTIsOCArNjI5LDYgQEAgaW50IHhtZW1fcG9vbF9tYXhhbGxvYyhzdHJ1Y3Qg eG1lbV9wb29sICpwb29sKQo+ICAgKiBHbHVlIGZvciB4bWFsbG9jKCkuCj4gICAqLwo+ICAKPiAt c3RhdGljIHN0cnVjdCB4bWVtX3Bvb2wgKnhlbnBvb2w7Cj4gLQo+ICBzdGF0aWMgdm9pZCAqeG1h bGxvY19wb29sX2dldCh1bnNpZ25lZCBsb25nIHNpemUpCj4gIHsKPiAgICAgIEFTU0VSVChzaXpl ID09IFBBR0VfU0laRSk7Cj4gZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3hlbi94bWFsbG9jLmgg Yi94ZW4vaW5jbHVkZS94ZW4veG1hbGxvYy5oCj4gaW5kZXggMjRhOTlhYy4uNjI2ZWFkMCAxMDA2 NDQKPiAtLS0gYS94ZW4vaW5jbHVkZS94ZW4veG1hbGxvYy5oCj4gKysrIGIveGVuL2luY2x1ZGUv eGVuL3htYWxsb2MuaAo+IEBAIC0xMjMsNCArMTIzLDExIEBAIHVuc2lnbmVkIGxvbmcgeG1lbV9w b29sX2dldF91c2VkX3NpemUoc3RydWN0IHhtZW1fcG9vbCAqcG9vbCk7Cj4gICAqLwo+ICB1bnNp Z25lZCBsb25nIHhtZW1fcG9vbF9nZXRfdG90YWxfc2l6ZShzdHJ1Y3QgeG1lbV9wb29sICpwb29s KTsKPiAgCj4gKyNpZm5kZWYgTkRFQlVHCj4gKyNkZWZpbmUgeG1lbV9wb29sX2NoZWNrKCkgX194 bWVtX3Bvb2xfY2hlY2soX19GSUxFX18sIF9fTElORV9fKQo+ICtpbnQgX194bWVtX3Bvb2xfY2hl Y2soY29uc3QgY2hhciAqZmlsZSwgaW50IGxpbmUpOwo+ICsjZWxzZQo+ICsjZGVmaW5lIHhtZW1f cG9vbF9jaGVjaygpIGRvIHsgaWYgKCAwICk7IH0gd2hpbGUgKDApCj4gKyNlbmRpZgo+ICsKPiAg I2VuZGlmIC8qIF9fWE1BTExPQ19IX18gKi8KClRoaXMgY2hhbmdlIHdpbGwgZ2VuZXJhdGUgYSBt ZXNzYWdlIGxpa2UgdGhpcyBvbmU6CgpbMjAxNC0xMi0wNCAxNTo0MToyM10gKFhFTikgWyAxMzc0 LjUwNzEyNV0geG1lbV9wb29sOiBmb3IgYmxvY2sgZmZmZjgzMDQwMDRmYjliMCBzaXplID0gMCwg eyBmbCA9IDMsIHNsID0gOSB9IHNob3VsZCBiZSB7IGZsID0gMCwgc2wgPSAwIH0KWzIwMTQtMTIt MDQgMTU6NDE6MjNdIChYRU4pIFsgMTM3NC41MDcxMjddIHhtZW1fcG9vbDp4bWFsbG9jX3Rsc2Yu Yzo1ODIgdGhlIFRMU0YgY2h1bmsgbWF0cml4IGlzIGNvcnJ1cHRlZApbMjAxNC0xMi0wNCAxNTo0 MToyM10gKFhFTikgWyAxMzc0LjUwNzEyOF0gWGVuIFdBUk4gYXQgeG1hbGxvY190bHNmLmM6NTgy ClsyMDE0LTEyLTA0IDE1OjQxOjIzXSAoWEVOKSBbIDEzNzQuNTA3MTMxXSAtLS0tWyBYZW4tNC40 LjEgIHg4Nl82NCAgZGVidWc9eSAgTm90IHRhaW50ZWQgXS0tLS0KWzIwMTQtMTItMDQgMTU6NDE6 MjNdIChYRU4pIFsgMTM3NC41MDcxMzJdIENQVTogICAgMwpbMjAxNC0xMi0wNCAxNTo0MToyM10g KFhFTikgWyAxMzc0LjUwNzEzM10gUklQOiAgICBlMDA4Ols8ZmZmZjgyZDA4MDE0MjhiMD5dIF9f d2FybisweDFhLzB4MWUKWzIwMTQtMTItMDQgMTU6NDE6MjNdIChYRU4pIFsgMTM3NC41MDcxMzZd IFJGTEFHUzogMDAwMDAwMDAwMDAxMDI4MiAgIENPTlRFWFQ6IGh5cGVydmlzb3IKWzIwMTQtMTIt MDQgMTU6NDE6MjNdIChYRU4pIFsgMTM3NC41MDcxMzhdIHJheDogMDAwMDAwMDAwMDAwMDAwMCAg IHJieDogMDAwMDAwMDAwMDAwMDAwOSAgIHJjeDogMDAwMDAwMDAwMDAwMDAwMApbMjAxNC0xMi0w NCAxNTo0MToyM10gKFhFTikgWyAxMzc0LjUwNzEzOV0gcmR4OiBmZmZmODMwNDE0Mzg4MDAwICAg cnNpOiAwMDAwMDAwMDAwMDAwMDBhICAgcmRpOiBmZmZmODJkMDgwMjkyNmRjClsyMDE0LTEyLTA0 IDE1OjQxOjIzXSAoWEVOKSBbIDEzNzQuNTA3MTQxXSByYnA6IGZmZmY4MzA0MTQzOGZkMzggICBy c3A6IGZmZmY4MzA0MTQzOGZkMzggICByODogIGZmZmY4MzA0MTQzYjAwMDAKWzIwMTQtMTItMDQg MTU6NDE6MjNdIChYRU4pIFsgMTM3NC41MDcxNDJdIHI5OiAgMDAwMDAwMDAwMDAwMDAwNiAgIHIx MDogMDAwMDAwMDAwMDA3YmNmOCAgIHIxMTogMDAwMDAwMDAwMDAwMDAwNgpbMjAxNC0xMi0wNCAx NTo0MToyM10gKFhFTikgWyAxMzc0LjUwNzE0M10gcjEyOiAwMDAwMDAwMDAwMDAwMDAzICAgcjEz OiAwMDAwMDAwMDAwMDAwMDAxICAgcjE0OiAwMDAwMDAwMDAwMDAwMDAzClsyMDE0LTEyLTA0IDE1 OjQxOjIzXSAoWEVOKSBbIDEzNzQuNTA3MTQ1XSByMTU6IGZmZmY4MzA0MTQzY2EzMDAgICBjcjA6 IDAwMDAwMDAwODAwNTAwM2IgICBjcjQ6IDAwMDAwMDAwMDAxNTI2ZjAKWzIwMTQtMTItMDQgMTU6 NDE6MjNdIChYRU4pIFsgMTM3NC41MDcxNDZdIGNyMzogMDAwMDAwMDQwM2FmNjAwMCAgIGNyMjog ZmZmZmZmZmZmZjYwMDQwMApbMjAxNC0xMi0wNCAxNTo0MToyM10gKFhFTikgWyAxMzc0LjUwNzE0 N10gZHM6IDAwMmIgICBlczogMDAyYiAgIGZzOiAwMDAwICAgZ3M6IDAwMDAgICBzczogZTAxMCAg IGNzOiBlMDA4ClsyMDE0LTEyLTA0IDE1OjQxOjIzXSAoWEVOKSBbIDEzNzQuNTA3MTQ5XSBYZW4g c3RhY2sgdHJhY2UgZnJvbSByc3A9ZmZmZjgzMDQxNDM4ZmQzODoKWzIwMTQtMTItMDQgMTU6NDE6 MjNdIChYRU4pIFsgMTM3NC41MDcxNTBdICAgIGZmZmY4MzA0MTQzOGZkYTggZmZmZjgyZDA4MDEz MjRkNyAwMDAwMDAwMDAwMDAwMDAwIDAwMDAwMTNmZjg3MDc1YTIKWzIwMTQtMTItMDQgMTU6NDE6 MjNdIChYRU4pIFsgMTM3NC41MDcxNTJdICAgIDAwMDAwMGZmOTZlZjFiMzggMDAwMDAyNDY4MDE2 ZTM1ZCBmZmZmODJkMDgwMjVhOGI5IGZmZmY4MzA0MTQzY2EwMDAKWzIwMTQtMTItMDQgMTU6NDE6 MjNdIChYRU4pIFsgMTM3NC41MDcxNTVdICAgIDAwMDAwMDAwMDAwMDAwMDEgZmZmZjgzMDQwZmM2 NzAxMCBmZmZmODMwNDE0M2NhMDAwIGZmZmY4MzA0MTQzY2I4NjgKWzIwMTQtMTItMDQgMTU6NDE6 MjNdIChYRU4pIFsgMTM3NC41MDcxNTddICAgIGZmZmY4MzA0MDIzMzgwMDAgZmZmZjgzMDQxMGRj N2RlYyBmZmZmODMwNDE0MzhmZGQ4IGZmZmY4MmQwODAxMzJkYzUKWzIwMTQtMTItMDQgMTU6NDE6 MjNdIChYRU4pIFsgMTM3NC41MDcxNTldICAgIGZmZmY4MzAwZGJmYjAwMzAgZmZmZjgzMDBkNGJm YTAwMCBmZmZmODMwNDBmYzY3MDEwIGZmZmY4MzA0MDIzMzhkYTgKWzIwMTQtMTItMDQgMTU6NDE6 MjNdIChYRU4pIFsgMTM3NC41MDcxNjFdICAgIGZmZmY4MzA0MTQzOGZlMTggZmZmZjgyZDA4MDEz MzU4ZCBmZmZmODMwMGRiZmIwMDAwIGZmZmY4MzAwZDRiZmEwMDAKWzIwMTQtMTItMDQgMTU6NDE6 MjNdIChYRU4pIFsgMTM3NC41MDcxNjRdICAgIDAwMDAwMDAwMDAwMDAwMDAgZmZmZjgzMDQwMjMz OGRhOCBmZmZmODMwNDAyMzM4MDAwIGZmZmY4MzA0MTBkYzdkZWMKWzIwMTQtMTItMDQgMTU6NDE6 MjNdIChYRU4pIFsgMTM3NC41MDcxNjZdICAgIGZmZmY4MzA0MTQzOGZlMzggZmZmZjgyZDA4MDFh MmRhMiBmZmZmODMwNDE0MzhmZTQ4IGZmZmY4MzAwZDRiZmEwMDAKWzIwMTQtMTItMDQgMTU6NDE6 MjNdIChYRU4pIFsgMTM3NC41MDcxNjhdICAgIGZmZmY4MzA0MTQzOGZlNDggZmZmZjgyZDA4MDE2 NzViYyBmZmZmODMwNDE0MzhmZTY4IGZmZmY4MmQwODAxNjEwMTUKWzIwMTQtMTItMDQgMTU6NDE6 MjNdIChYRU4pIFsgMTM3NC41MDcxNzFdICAgIGZmZmY4MzAwZDRiZmEwMDAgZmZmZjgzMDBkNGJm YTAwMCBmZmZmODMwNDE0MzhmZTk4IGZmZmY4MmQwODAxMDUwOTQKWzIwMTQtMTItMDQgMTU6NDE6 MjNdIChYRU4pIFsgMTM3NC41MDcxNzNdICAgIGZmZmY4MzA0MTQzOTYyYzAgMDAwMDAwMDAwMDAw MDAwMCAwMDAwMDAwMDAwMDAwMDAwIGZmZmY4MzA0MTQzODgwMDAKWzIwMTQtMTItMDQgMTU6NDE6 MjNdIChYRU4pIFsgMTM3NC41MDcxNzVdICAgIGZmZmY4MzA0MTQzOGZlYzggZmZmZjgyZDA4MDEz MzdkMCBmZmZmODMwNDE0MzYzZGVjIGZmZmY4MmQwODAzMDgxODAKWzIwMTQtMTItMDQgMTU6NDE6 MjNdIChYRU4pIFsgMTM3NC41MDcxNzddICAgIGZmZmY4MmQwODAzMDgwMDAgZmZmZmZmZmZmZmZm ZmZmZiBmZmZmODMwNDE0MzhmZWY4IGZmZmY4MmQwODAxMmFhMzYKWzIwMTQtMTItMDQgMTU6NDE6 MjNdIChYRU4pIFsgMTM3NC41MDcxODBdICAgIGZmZmY4MzAwZDQ3ZmUwMDAgZmZmZjgzMDBkYmZi MDAwMCAwMDAwMDAwMDAwMDAwMDAxIGZmZmY4MzA0MTBkYzcwMDAKWzIwMTQtMTItMDQgMTU6NDE6 MjNdIChYRU4pIFsgMTM3NC41MDcxODJdICAgIGZmZmY4MzA0MTQzOGZmMDggZmZmZjgyZDA4MDEy YWE4ZiBmZmZmODMwNDE0MzhmZGEwIGZmZmY4MmQwODAyMmJkOTEKWzIwMTQtMTItMDQgMTU6NDE6 MjNdIChYRU4pIFsgMTM3NC41MDcxODRdICAgIGZmZmY4ODAwMjRjNDNmZDggZmZmZmZmZmY4MWFi MWIzOCAwMDAwMDAwMDAwMDAwMDAwIDAwMDAwMDAwMDAwMDAwMDAKWzIwMTQtMTItMDQgMTU6NDE6 MjNdIChYRU4pIFsgMTM3NC41MDcxODZdICAgIGZmZmY4ODAwMjRjNDNlYzAgMDAwMDAwMDAwMDAw MDAwMiAwMDAwMDAwMDAwMDAwMjQ2IDAwMDAwMDAwMDAwMDAwMDAKWzIwMTQtMTItMDQgMTU6NDE6 MjNdIChYRU4pIFsgMTM3NC41MDcxODhdICAgIDAwMDAwMDAwMDAwMDAwMDAgMDAwMDAwMDAwMDAw MDAwMCAwMDAwMDAwMDAwMDAwMDAwIGZmZmZmZmZmODEwMDEzYWEKWzIwMTQtMTItMDQgMTU6NDE6 MjNdIChYRU4pIFsgMTM3NC41MDcxOTBdICAgIDAwMDAwMDAwMDAwMDAwMDAgMDAwMDAwMDBkZWFk YmVlZiAwMDAwMDAwMGRlYWRiZWVmIDAwMDIwMTAwMDAwMDAwMDAKWzIwMTQtMTItMDQgMTU6NDE6 MjNdIChYRU4pIFsgMTM3NC41MDcxOTJdICAgIGZmZmZmZmZmODEwMDEzYWEgMDAwMDAwMDAwMDAw ZTAzMyAwMDAwMDAwMDAwMDAwMjQ2IGZmZmY4ODAwMjRjNDNlYTgKWzIwMTQtMTItMDQgMTU6NDE6 MjNdIChYRU4pIFsgMTM3NC41MDcxOTRdIFhlbiBjYWxsIHRyYWNlOgpbMjAxNC0xMi0wNCAxNTo0 MToyM10gKFhFTikgWyAxMzc0LjUwNzE5Nl0gICAgWzxmZmZmODJkMDgwMTQyOGIwPl0gX193YXJu KzB4MWEvMHgxZQpbMjAxNC0xMi0wNCAxNTo0MToyM10gKFhFTikgWyAxMzc0LjUwNzE5OF0gICAg WzxmZmZmODJkMDgwMTMyNGQ3Pl0gX194bWVtX3Bvb2xfY2hlY2tfdW5sb2NrZWQrMHgxNDMvMHgy NGYKWzIwMTQtMTItMDQgMTU6NDE6MjNdIChYRU4pIFsgMTM3NC41MDcyMDBdICAgIFs8ZmZmZjgy ZDA4MDEzMmRjNT5dIHhtZW1fcG9vbF9mcmVlKzB4M2YvMHgyZDkKWzIwMTQtMTItMDQgMTU6NDE6 MjNdIChYRU4pIFsgMTM3NC41MDcyMDFdICAgIFs8ZmZmZjgyZDA4MDEzMzU4ZD5dIHhmcmVlKzB4 MWQ1LzB4MjIyClsyMDE0LTEyLTA0IDE1OjQxOjIzXSAoWEVOKSBbIDEzNzQuNTA3MjAzXSAgICBb PGZmZmY4MmQwODAxYTJkYTI+XSB4c3RhdGVfZnJlZV9zYXZlX2FyZWErMHgxOC8weDJhClsyMDE0 LTEyLTA0IDE1OjQxOjIzXSAoWEVOKSBbIDEzNzQuNTA3MjA1XSAgICBbPGZmZmY4MmQwODAxNjc1 YmM+XSB2Y3B1X2Rlc3Ryb3lfZnB1KzB4MTMvMHgyMwpbMjAxNC0xMi0wNCAxNTo0MToyM10gKFhF TikgWyAxMzc0LjUwNzIwN10gICAgWzxmZmZmODJkMDgwMTYxMDE1Pl0gdmNwdV9kZXN0cm95KzB4 MjYvMHg1MApbMjAxNC0xMi0wNCAxNTo0MToyM10gKFhFTikgWyAxMzc0LjUwNzIwOV0gICAgWzxm ZmZmODJkMDgwMTA1MDk0Pl0gY29tcGxldGVfZG9tYWluX2Rlc3Ryb3krMHg0OS8weDE2YQpbMjAx NC0xMi0wNCAxNTo0MToyM10gKFhFTikgWyAxMzc0LjUwNzIxMV0gICAgWzxmZmZmODJkMDgwMTMz N2QwPl0gcmN1X3Byb2Nlc3NfY2FsbGJhY2tzKzB4MTQ1LzB4MWE2ClsyMDE0LTEyLTA0IDE1OjQx OjIzXSAoWEVOKSBbIDEzNzQuNTA3MjEzXSAgICBbPGZmZmY4MmQwODAxMmFhMzY+XSBfX2RvX3Nv ZnRpcnErMHg4MS8weDhjClsyMDE0LTEyLTA0IDE1OjQxOjIzXSAoWEVOKSBbIDEzNzQuNTA3MjE1 XSAgICBbPGZmZmY4MmQwODAxMmFhOGY+XSBkb19zb2Z0aXJxKzB4MTMvMHgxNQpbMjAxNC0xMi0w NCAxNTo0MToyM10gKFhFTikgWyAxMzc0LjUwNzI1M10gICAgWzxmZmZmODJkMDgwMjJiZDkxPl0g cHJvY2Vzc19zb2Z0aXJxcysweDIxLzB4MzAKCmV2ZXJ5IHRpbWUgdGhlIHhtZW0gcG9vbCBnZXRz IGNvcnJ1cHRlZC4gVGhpcyBpcyBvbmx5IGEgaGludCwgdGhvdWdoLiBBCmRldmVsb3BlciB3aWxs IGhhdmUgdG8gcGxhY2UgeG1lbV9wb29sX2NoZWNrKCkgaW4gdmFyaW91cyBwbGFjZXMgdG8KZGV0 ZXJtaW5lIHRoZSBzb3VyY2Ugb2YgdGhlIGNvcnJ1cHRpb24uIEkgdXNlZCBpdCB0byB0cmFjayBk b3duIGEgdXNlCmFmdGVyIGZyZWUgYnVnIChkZXRhaWxzIHdpbGwgZm9sbG93IGxhdGVyKS4KClRo YW5rcywKCi0tIApNaWhhaSBET07ImlUKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhl bi5vcmcKaHR0cDovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==