From mboxrd@z Thu Jan 1 00:00:00 1970 From: anshul makkar Subject: Re: [PATCH 19/24] xen: credit2: soft-affinity awareness in load balancing Date: Fri, 2 Sep 2016 12:46:01 +0100 Message-ID: <57C96679.3000902@citrix.com> References: <147145358844.25877.7490417583264534196.stgit@Solace.fritz.box> <147145438726.25877.12520091608250776214.stgit@Solace.fritz.box> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bfmv7-0000ah-PK for xen-devel@lists.xenproject.org; Fri, 02 Sep 2016 11:46:05 +0000 In-Reply-To: <147145438726.25877.12520091608250776214.stgit@Solace.fritz.box> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Dario Faggioli , xen-devel@lists.xenproject.org Cc: George Dunlap List-Id: xen-devel@lists.xenproject.org T24gMTcvMDgvMTYgMTg6MTksIERhcmlvIEZhZ2dpb2xpIHdyb3RlOgo+IFdlIHdhbnQgaXMgc29m dC1hZmZpbml0eSB0byBwbGF5IGEgcm9sZSBpbiBsb2FkCj4gYmFsYW5jaW5nLCBpLmUuLCB3aGVu IGRlY2lkaW5nIHdoZXRoZXIgb3Igbm90IHRvCgo+IHNvbWV0aGluZyBsaWtlIHRoYXQgYXQgc29t ZSBwb2ludC4KPgo+IChPaCwgYW5kIHdoaWxlIHRoZXJlLCBqdXN0IGEgY291cGxlIG9mIHN0eWxl IGZpeGVzCj4gYXJlIGFsc28gZG9uZS4pCj4KPiBTaWduZWQtb2ZmLWJ5OiBEYXJpbyBGYWdnaW9s aSA8ZGFyaW8uZmFnZ2lvbGlAY2l0cml4LmNvbT4KPiAtLS0KPiBDYzogR2VvcmdlIER1bmxhcCA8 Z2VvcmdlLmR1bmxhcEBjaXRyaXguY29tPgo+IENjOiBBbnNodWwgTWFra2FyIDxhbnNodWwubWFr a2FyQGNpdHJpeC5jb20+Cj4gLS0tCj4gICB4ZW4vY29tbW9uL3NjaGVkX2NyZWRpdDIuYyB8ICAz NTkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0KPiAgIDEgZmls ZSBjaGFuZ2VkLCAzMjYgaW5zZXJ0aW9ucygrKSwgMzMgZGVsZXRpb25zKC0pCj4KPiBkaWZmIC0t Z2l0IGEveGVuL2NvbW1vbi9zY2hlZF9jcmVkaXQyLmMgYi94ZW4vY29tbW9uL3NjaGVkX2NyZWRp dDIuYwo+IGluZGV4IDJkNzIyOGEuLjM3MjJmNDYgMTAwNjQ0Cj4gLS0tIGEveGVuL2NvbW1vbi9z Y2hlZF9jcmVkaXQyLmMKPiArKysgYi94ZW4vY29tbW9uL3NjaGVkX2NyZWRpdDIuYwo+IEBAIC0x Nzg2LDE5ICsxNzg2LDIxIEBAIGNzY2hlZDJfY3B1X3BpY2soY29uc3Qgc3RydWN0IHNjaGVkdWxl ciAqb3BzLCBzdHJ1Y3QgdmNwdSAqdmMpCj4gICAgICAgcmV0dXJuIG5ld19jcHU7Cj4gICB9Cj4K PiAtLyogV29ya2luZyBzdGF0ZSBvZiB0aGUgbG9hZC1iYWxhbmNpbmcgYWxnb3JpdGhtICovCj4g Ky8qIFdvcmtpbmcgc3RhdGUgb2YgdGhlIGxvYWQtYmFsYW5jaW5nIGFsZ29yaXRobS4gKi8KPiAg IHR5cGVkZWYgc3RydWN0IHsKPiAtICAgIC8qIE5COiBNb2RpZmllZCBieSBjb25zaWRlcigpICov Cj4gKyAgICAvKiBOQjogTW9kaWZpZWQgYnkgY29uc2lkZXIoKS4gKi8KPiAgICAgICBzX3RpbWVf dCBsb2FkX2RlbHRhOwo+ICAgICAgIHN0cnVjdCBjc2NoZWQyX3ZjcHUgKiBiZXN0X3B1c2hfc3Zj LCAqYmVzdF9wdWxsX3N2YzsKPiAtICAgIC8qIE5COiBSZWFkIGJ5IGNvbnNpZGVyKCkgKi8KPiAr ICAgIC8qIE5COiBSZWFkIGJ5IGNvbnNpZGVyKCkgKGFuZCB0aGUgdmFyaW91cyBjb25zaWRlcl9m b28oKSBmdW5jdGlvbnMpLiAqLwo+ICAgICAgIHN0cnVjdCBjc2NoZWQyX3J1bnF1ZXVlX2RhdGEg KmxycWQ7Cj4gLSAgICBzdHJ1Y3QgY3NjaGVkMl9ydW5xdWV1ZV9kYXRhICpvcnFkOwo+ICsgICAg c3RydWN0IGNzY2hlZDJfcnVucXVldWVfZGF0YSAqb3JxZDsKPiArICAgIGJvb2xfdCBwdXNoX2hh c19zb2Z0X2FmZiwgcHVsbF9oYXNfc29mdF9hZmY7Cj4gKyAgICBzX3RpbWVfdCBwdXNoX3NvZnRf YWZmX2xvYWQsIHB1bGxfc29mdF9hZmZfbG9hZDsKPiAgIH0gYmFsYW5jZV9zdGF0ZV90Owo+Cj4g LXN0YXRpYyB2b2lkIGNvbnNpZGVyKGJhbGFuY2Vfc3RhdGVfdCAqc3QsCj4gLSAgICAgICAgICAg ICAgICAgICAgIHN0cnVjdCBjc2NoZWQyX3ZjcHUgKnB1c2hfc3ZjLAo+IC0gICAgICAgICAgICAg ICAgICAgICBzdHJ1Y3QgY3NjaGVkMl92Y3B1ICpwdWxsX3N2YykKPiArc3RhdGljIGlubGluZSBz X3RpbWVfdCBjb25zaWRlcl9sb2FkKGJhbGFuY2Vfc3RhdGVfdCAqc3QsCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY3NjaGVkMl92Y3B1ICpwdXNoX3N2YywK PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjc2NoZWQyX3Zj cHUgKnB1bGxfc3ZjKQo+ICAgewo+ICAgICAgIHNfdGltZV90IGxfbG9hZCwgb19sb2FkLCBkZWx0 YTsKPgo+IEBAIC0xODIxLDExICsxODIzLDE2NiBAQCBzdGF0aWMgdm9pZCBjb25zaWRlcihiYWxh bmNlX3N0YXRlX3QgKnN0LAo+ICAgICAgIGlmICggZGVsdGEgPCAwICkKPiAgICAgICAgICAgZGVs dGEgPSAtZGVsdGE7Cj4KPiArICAgIHJldHVybiBkZWx0YTsKPiArfQo+ICsKPiArLyoKPiArICog TG9hZCBiYWxhbmNpbmcgYW5kIHNvZnQtYWZmaW5pdHkuCj4gKyAqCj4gKyAqIFdoZW4gdHJ5aW5n IHRvIGZpZ3VyZSBvdXQgd2hldGhlciBvciBub3QgaXQncyBiZXN0IHRvIG1vdmUgYSB2Y3B1IGZy b20KPiArICogb25lIHJ1bnF1ZXVlIHRvIGFub3RoZXIsIHdlIG11c3Qga2VlcCBzb2Z0LWFmZmlu aXR5IGluIG1pbmQuIEludHVpdGl2ZWx5Cj4gKyAqIHdlIHdvdWxkIHdhbnQgdG8ga25vdyB0aGUg Zm9sbG93aW5nOgo+ICsgKiAgLSAnaG93IG11Y2gnIGFmZmluaXR5IGRvZXMgdGhlIHZjcHUgaGF2 ZSB3aXRoIGl0cyBjdXJyZW50IHJ1bnE/Cj4gKyAqICAtICdob3cgbXVjaCcgYWZmaW5pdHkgd2ls bCBpdCBoYXZlIHdpdGggaXRzIG5ldyBydW5xPwo+ICsgKgo+ICsgKiBCdXQgd2UgY2VydGFpbmx5 IG5lZWQgdG8gYmUgbW9yZSBwcmVjaXNlIGFib3V0IGhvdyBtdWNoIGl0IGlzIHRoYXQgJ2hvdwo+ ICsgKiBtdWNoJyEgTGV0J3Mgc3RhcnQgd2l0aCBzb21lIGRlZmluaXRpb25zOgo+ICsgKgo+ICsg KiAgLSBsZXQgdiBiZSBhIHZjcHUsIHJ1bm5pbmcgaW4gcnVucSBJLCB3aXRoIHNvZnQtYWZmaW5p dHkgdG8gdmkKPiArICogICAgcGNwdXMgb2YgcnVucSBJLCBhbmQgc29mdCBhZmZpbml0eSB3aXRo IHZqIHBjcHVzIG9mIHJ1bnEgSjsKPiArICogIC0gbGV0IGsgYmUgYW5vdGhlciB2Y3B1LCBydW5u aW5nIGluIHJ1bnEgSiwgd2l0aCBzb2Z0LWFmZmluaXR5IHRvIGtqCj4gKyAqICAgIHBjcHVzIG9m IHJ1bnEgSiwgYW5kIHdpdGgga2kgcGNwdXMgb2YgcnVucSBJOwo+ICsgKiAgLSBsZXQgcnVucSBJ IGhhdmUgQ2kgcGNwdXMsIGFuZCBydW5xIEogQ2ogcGNwdXM7Cj4gKyAqICAtIGxldCB2Y3B1IHYg aGF2ZSBhbiBhdmVyYWdlIGxvYWQgb2YgbHYsIGFuZCBrIGFuIGF2ZXJhZ2UgbG9hZCBvZiBsazsK PiArICogIC0gbGV0IHJ1bnEgSSBoYXZlIGFuIGF2ZXJhZ2UgbG9hZCBvZiBMaSwgYW5kIEogYW4g YXZlcmFnZSBsb2FkIG9mIExqLgo+ICsgKgo+ICsgKiBXZSBhbHNvIGRlZmluZSB0aGUgZm9sbG93 aW5nOjoKPiArICoKPiArICogIC0gbHZpID0gbHYgKiAodmkgLyBDaSkgIGFzIHRoZSAncGVyY2Vp dmVkIGxvYWQnIG9mIHYsIHdoZW4gcnVubmluZwo+ICsgKiAgICAgICAgICAgICAgICAgICAgICAg ICAgaW4gcnVucSBpOwo+ICsgKiAgLSBsdmogPSBsdiAqICh2aiAvIENqKSAgYXMgdGhlICdwZXJj ZWl2ZWQgbG9hZCcgb2YgdiwgaXQgcnVubmluZwo+ICsgKiAgICAgICAgICAgICAgICAgICAgICAg ICAgaW4gcnVucSBqOwo+ICsgKiAgLSB0aGUgc2FtZSBmb3IgaywgbXV0YXRpcyBtdXRhbmRpcy4K PiArICoKPiArICogSWRlYSBpcyB0aGF0IHZpL0NpIChpLmUuLCB0aGUgcmF0aW8gb2YgdGhlIG51 bWJlciBvZiBjcHVzIG9mIGEgcnVucSB0aGF0Cj4gKyAqIGEgdmNwdSBoYXMgc29mdC1hZmZpbml0 eSB3aXRoLCBvdmVyIHRoZSB0b3RhbCBudW1iZXIgb2YgY3B1cyBvZiB0aGUgcnVucQo+ICsgKiBp dHNlbGYpIGNhbiBiZSBzZWVuIGFzIHRoZSAnZGVncmVlIG9mIHNvZnQtYWZmaW5pdHknIG9mIHYg dG8gcnVucSBJIChhbmQKPiArICogdmovQ2ogdGhlIG9uZSBvZiB2IHRvIEopLiBJbiBvdGhlciB3 b3Jkcywgd2UgZGVmaW5lIHRoZSBkZWdyZWUgb2Ygc29mdAo+ICsgKiBhZmZpbml0eSBvZiBhIHZj cHUgdG8gYSBydW5xIGFzIHdoYXQgZnJhY3Rpb24gb2YgcGNwdXMgb2YgdGhlIHJ1bnEgaXRzZWxm Cj4gKyAqIHRoZSB2Y3B1IGhhcyBzb2Z0LWFmZmluaXR5IHdpdGguIFRoZW4sIHdlIG11bHRpcGx5 IHRoaXMgJ2RlZ3JlZSBvZgo+ICsgKiBzb2Z0LWFmZmluaXR5JyBieSB0aGUgdmNwdSBsb2FkLCBh bmQgY2FsbCB0aGUgcmVzdWx0IHRoZSAncGVyY2VpdmVkIGxvYWQnLgo+ICsgKgo+ICsgKiBCYXNp Y2FsbHksIGlmIGEgc29mdC1hZmZpbml0eSBpcyBkZWZpbmVkLCB0aGUgd29yayBkb25lIGJ5IGEg dmNwdSBvbiBhCj4gKyAqIHJ1bnEgdG8gd2hpY2ggaXQgaGFzIGhpZ2hlciBkZWdyZWUgb2Ygc29m dC1hZmZpbml0eSwgaXMgY29uc2lkZXJlZAo+ICsgKiAnbGlnaHRlcicgdGhhbiB0aGUgc2FtZSB3 b3JrIGRvbmUgYnkgdGhlIHNhbWUgdmNwdSBvbiBhIHJ1bnEgdG8gd2hpY2ggaXQKPiArICogaGFz IHNtYWxsZXIgZGVncmVlIG9mIHNvZnQtYWZmaW5pdHkgKGRlZ3JlZSBvZiBzb2Z0IGFmZmluaXR5 IGlzIDw9IDEpLiBJbgo+ICsgKiBmYWN0LCBpZiBzb2Z0LWFmZmluaXR5IGlzIHVzZWQgdG8gYWNo aWV2ZSBOVU1BLWF3YXJlIHNjaGVkdWxpbmcsIHRoZSBoaWdoZXIKPiArICogdGhlIGRlZ3JlZSBv ZiBzb2Z0LWFmZmluaXR5IG9mIHRoZSB2Y3B1IHRvIGEgcnVucSwgdGhlIGdyZWF0ZXIgdGhlIHBy b2JhYmlsaXR5Cj4gKyAqIG9mIGFjY2Vzc2luZyBsb2NhbCBtZW1vcnksIHdoZW4gcnVubmluZyBv biBzdWNoIHJ1bnEuIEFuZCB0aGF0IGlzIGNlcnRhaW5seVwKPiArICogJ2xpZ2h0ZXInIHRoYW4g aGF2aW5nIHRvIGZldGNoIG1lbW9yeSBmcm9tIHJlbW90ZSBOVU1BIG5vZGVzLgpEbyB3ZSBlbnN1 cmUgdGhhdCB3aGlsZSBkZWZpbmluZyBzb2Z0LWFmZmluaXR5IGZvciBhIHZjcHUsIE5VTUEgCmFy Y2hpdGVjdHVyZSBpcyBjb25zaWRlcmVkLiBJZiBub3QsIHRoZW4gdGhpcyB3aG9sZSBjYWxjdWxh dGlvbiBjYW4gZ28gCndyb25nIGFuZCBoYXZlIG5lZ2F0aXZlIGltcGFjdCBvbiBwZXJmb3JtYW5j ZS4KCkRlZ3JlZSBvZiBhZmZpbml0eSB0byBydW5xIHdpbGwgZ2l2ZSBnb29kIHJlc3VsdCBpZiB0 aGUgYWZmaW5pdHkgdG8gCnBjcHVzIGhhcyBiZWVuIGNob3NlbiBhZnRlciBkdWUgY29uc2lkZXJh dGlvbiAuLgo+ICsgKgo+ICsgKiBTb1hYLCBldmFsdWF0aW5nIHB1c2hpbmcgdiBmcm9tIEkgdG8g SiB3b3VsZCBtZWFuIHJlbW92aW5nIChmcm9tIEkpIGEKPiArICogcGVyY2VpdmVkIGxvYWQgb2Yg bHYqKHZpL0NpKSBhbmQgYWRkaW5nICh0byBKKSBhIHBlcmNlaXZlZCBsb2FkIG9mCj4gKyAqIGx2 Kih2ai9DaiksIHdoaWNoIHdlIChsb29raW5nIGF0IHRoaW5ncyBmcm9tIHRoZSBwb2ludCBvZiB2 aWV3IG9mIEksCj4gKyAqIHdoaWNoIGlzIHdoYXQgYmFsYW5jZV9sb2FkKCkgZG9lcykgY2FuIGNh bGwgRF9wdXNoOgo+ICsgKgo+ICsgKiAgLSBEX3B1c2ggPSAtbHYgKiAodmkgLyBDaSkgKyBsdiAq ICh2aiAvIENqKSA9Cj4gKyAqICAgICAgICAgICA9IGx2ICogKHZqL0NqIC0gdmkvQ2kpCj4gKyAq Cj4gKyAqIE9uIHRoZSBvdGhlciBoYW5kLCBwdWxsaW5nIGsgZnJvbSBKIHRvIEkgd291bGQgZW50 YWlsIGEgRF9wdWxsOgo+ICsgKgo+ICsgKiAgLSBEX3B1bGwgPSBsayAqIChraSAvIENpKSAtIGxr ICogKGtqIC8gQ2opID0KPiArICogICAgICAgICAgID0gbGsgKiAoa2kvQ2kgLSBrai9DaikKPiAr ICoKPiArICogTm90ZSB0aGF0IGlmIHYgKGspIGhhcyBzb2Z0LWFmaW5pdHkgd2l0aCBhbGwgdGhl IGNwdXMgb2YgYm90aCBJIGFuZCBKLAo+ICsgKiBEX3B1c2ggKERfcHVsbCkgd2lsbCBiZSAwLCBh bmQgdGhlIHNhbWUgaXMgdHJ1ZSBpbiBjYXNlIGl0IGhhcyBubyBzb2Z0Cj4gKyAqIGFmZmluaXR5 IGF0IGFsbCB3aXRoIGFueSBvZiB0aGUgY3B1cyBvZiBJIGFuZCBKLiBOb3RlIGFsc28gdGhhdCBi b3RoCj4gKyAqIERfcHVzaCBhbmQgRF9wdWxsIGNhbiBiZSBwb3NpdGl2ZSBvciBuZWdhdGl2ZSAo dGhlcmUncyBubyBhYnMoKSBhcm91bmQKPiArICogaW4gdGhpcyBjYXNlISkgZGVwZW5kaW5nIG9u IHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGUgZGVncmVlcyBvZiBzb2Z0Cj4gKyAqIGFmZmlu aXR5IG9mIHRoZSB2Y3B1IHRvIEkgYW5kIEouCj4gKyAqCj4gKyAqIElmIHRoZXJlIGlzIG5vIHNv ZnQtYWZmaW5pdHksIGxvYWRfYmFsYW5jZSgpIChhY3R1YWxseSwgY29uc2lkZXIoKSkgYWN0cwo+ ICsgKiBhcyBmb2xsb3dzOgo+ICsgKgo+ICsgKiAgLSBEID0gYWJzKExpIC0gTGopCklmIHdlIGFy ZSBjb25zaWRlciBhYnNvbHV0ZSBvZiBMaSAtTGosIGhvdyB3aWxsIHdlIGtub3cgd2hpY2ggcnVu cSBoYXMgCmxlc3Mgd29ya2xvYWQgd2hpY2gsIEkgdGhpbmssIGlzIGFuIGVzc2VudGlhbCBwYXJh bWV0ZXIgZm9yIGxvYWQgCmJhbGFuY2luZy4gQW0gSSBtaXNzaW5nIHNvbWV0aGluZyBoZXJlID8K PiArICogIC0gY29uc2lkZXIgcHVzaGluZyB2IGZyb20gSSB0byBKOgo+ICsgKiAgICAgLSBEJyA9 IGFicyhMaSAtIGx2IC0gKExqICsgbHYpKSAgIChmcm9tIG5vdywgYWJzKHgpID09IHx4fCkKPiAr ICogICAgIC0gaWYgKEQnIDwgRCkgeyBwdXNoIH0KPiArICogIC0gY29uc2lkZXIgcHVsbGluZyBr IGZyb20gSiB0byBJOgo+ICsgKiAgICAgLSBEJyA9IHxMaSArIGxrIC0gKExqIC0gbGspfAo+ICsg KiAgICAgLSBpZiAoRCcgPCBEKSB7IHB1bGwgfQpGb3IgYm90aCBwdXNoIGFuZCBwdWxsIHdlIGFy ZSBjaGVja2luZyAoRGAgPCBEKSA/Cj4gKyAqICAtIGNvbnNpZGVyIGJvdGggcHVzaCBhbmQgcHVs bDoKPiArICogICAgIC0gRCcgPSB8TGkgLSBsdiArIGxrIC0gKExqICsgbHYgLSBsayl8Cj4gKyAq ICAgICAtIGlmIChEJyA8IEQpIHsgcHVzaDsgcHVsbCB9Cj4gKyAqCj4gKyAqIEluIG9yZGVyIHRv IG1ha2Ugc29mdC1hZmZpbml0eSBwYXJ0IG9mIHRoZSBwcm9jZXNzLCB3ZSB1c2UgRF9wdXNoIGFu ZAo+ICsgKiBEX3B1bGwsIHNvIHRoYXQsIHRoZSBmaW5hbCBiZWhhdmlvciB3aWxsIGxvb2sgbGlr ZSB0aGlzOgo+ICsgKgo+ICsgKiAgLSBEID0gYWJzKExpIC0gTGopCj4gKyAqICAtIGNvbnNpZGVy IHB1c2hpbmcgdiBmcm9tIEkgdG8gSjoKPiArICogICAgIC0gRCcgPSB8TGkgLSBsdiAtIChMaiAr IGx2KXwKPiArICogICAgIC0gRF9wdXNoID0gbHYgKiAodmovQ2ogLSB2aS9DaSkKPiArICogICAg IC0gaWYgKEQnICsgRF9wdXNoIDwgRCkgeyBwdXNoIH0KPiArICogIC0gY29uc2lkZXIgcHVsbGlu ZyBrIGZyb20gSiB0byBJOgo+ICsgKiAgICAgLSBEJyA9IHxMaSArIGxrIC0gKExqIC0gbGspfAo+ ICsgKiAgICAgICBEX3B1bGwgPSBsayAqIChraS9DaSAtIGtqL0NqKQo+ICsgKiAgICAgLSBpZiAo RCcgPCBEKSB7IHB1bGwgfQo+ICsgKiAgLSBjb25zaWRlciBib3RoIHB1c2ggYW5kIHB1bGw6Cj4g KyAqICAgICAtIEQnID0gfExpIC0gbHYgKyBsayAtIChMaiArIGx2IC0gbGspfAo+ICsgKiAgICAg LSBEX3B1c2ggPSBsdiAqICh2ai9DaiAtIHZpL0NpKQo+ICsgKiAgICAgICBEX3B1bGwgPSBsayAq IChraS9DaSAtIGtqL0NqKQo+ICsgKiAgICAgLSBpZiAoRCcgKyBEX3B1c2ggKyBEX3B1bGwgPCBE KSB7IHB1c2g7IHB1bGwgfQo+ICsgKgo+ICsgKiBTbywgZm9yIGluc3RhbmNlLCB0aGUgY29tcGxl dGUgZm9ybXVsYSwgaW4gY2FzZSBvZiBhIHB1c2gsIHdpdGggc29mdAo+ICsgKiBhZmZpbml0eSBi ZWluZyBjb25zaWRlcmVkIGxvb2tzIGxpa2UgdGhpczoKPiArICoKPiArICogIC0gRCcnID0gRCcg KyBEX3B1c2ggPQo+ICsgKiAgICAgICAgPSB8TGkgLSBsdiAtIChMaiArIGx2KXwgKyBsdioodmov Q2ogLSB2aS9DaSkKPiArICoKPiArICogd2hpY2ggaGlnaGxpZ2h0cyBob3cgc29mdC1hZmZpbml0 eSBiZWluZyBjb25zaWRlcmVkIGFjdHMgYXMgYSAqbW9kaWZpZXIqCj4gKyAqIG9mIHRoZSAibm9y bWFsIiByZXN1bHRzIG9idGFpbmVkIGJ5IGp1c3QgdXNpbmcgdGhlIGFjdHVhbCB2Y3B1cyBsb2Fk cy4KPiArICogVGhpcyBhcHByb2FjaCBpcyBtb2R1bGFyLCBpbiB0aGUgc2Vuc2UgdGhhdCBpdCBv bmx5IHRha2VzIGltcGxlbWVudGluZwo+ICsgKiBhbm90aGVyIGZ1bmN0aW9uIHRoYXQgcmV0dXJu cyBhbm90aGVyIG1vZGlmaWVyLCB0byBtYWtlIHRoZSBsb2FkIGJhbGFuY2VyCj4gKyAqIGNvbnNp ZGVyIHNvbWUgb3RoZXIgZmFjdG9yIG9yIGNoYXJhY3RlcmlzdGljcyBvZiB0aGUgdmNwdXMuCj4g KyAqCj4gKyAqIEZpbmFsbHkgdGhlcmUgaXMgdGhlIHNjb3BlIGZvciBhY3R1YWxseSB1c2luZyBh IHNjYWxpbmcgZmFjdG9yLCB0byBsaW1pdAo+ICsgKiB0aGUgaW5mbHVlbmNlIHRoYXQgc29mdC1h ZmZpbml0eSB3aWxsIGFjdHVhbGx5IGhhdmUgb24gYmFzZWxpbmUgcmVzdWx0cwo+ICsgKiBmcm9t IGNvbnNpZGVyX2xvYWQoKS4gQmFzaWNhbGx5LCB0aGF0IG1lYW5zIHRoYXQgaW5zdGVhZCBvZiBE X3B1c2ggYW5kL29yCj4gKyAqIERfcHVsbCwgd2UnbGwgYmUgYWRkaW5nIERfcHVzaC9TIGFuZC9v ciBEX3B1bGwvUyAod2l0aCBTIHRoZSBzY2FsaW5nCj4gKyAqIGZhY3RvcikuIENoZWNrIHByZXBf c29mdF9hZmZfbG9hZCgpIGZvciBkZXRhaWxzIG9uIHRoaXMuCj4gKyAqLwo+ICsKQW5zaHVsCgoK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVs IG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5v cmcveGVuLWRldmVsCg==