From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from sog-mx-3.v43.ch3.sourceforge.com ([172.29.43.193] helo=mx.sourceforge.net) by sfs-ml-2.v29.ch3.sourceforge.com with esmtp (Exim 4.69) (envelope-from ) id 1PaunF-0002aU-Pv for ltp-list@lists.sourceforge.net; Thu, 06 Jan 2011 18:42:37 +0000 Received: from mx1.redhat.com ([209.132.183.28]) by sog-mx-3.v43.ch3.sourceforge.com with esmtp (Exim 4.72) id 1PaunE-0007m1-Cp for ltp-list@lists.sourceforge.net; Thu, 06 Jan 2011 18:42:37 +0000 Message-ID: <4D260D04.3080102@redhat.com> Date: Fri, 07 Jan 2011 02:42:12 +0800 From: Caspar Zhang MIME-Version: 1.0 References: <1294339211-19449-1-git-send-email-czhang@redhat.com> In-Reply-To: <1294339211-19449-1-git-send-email-czhang@redhat.com> Subject: [LTP] Final version [Re: [PATCH v4] make pid_list dynamically sized with memory] List-Id: Linux Test Project General Discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: ltp-list-bounces@lists.sourceforge.net To: Garrett Cooper Cc: ltp-list@lists.sourceforge.net SGkgR2FycmV0dCwgdGhpcyBpcyB0aGUgKmZpbmFsKiB2ZXJzaW9uLCBwbGVhc2UgcmV2aWV3LgoK T24gMDEvMDcvMjAxMSAwMjo0MCBBTSwgY3poYW5nQHJlZGhhdC5jb20gd3JvdGU6Cj4gRnJvbTog Q2FzcGFyIFpoYW5nIDxjemhhbmdAcmVkaGF0LmNvbT4KPiAKPiBXZSBnZXQgc2VnZmF1bHRzIGR1 cmluZyB0ZXN0aW5nIG10ZXN0MDEgb24gYSA1VEIgbWVtb3J5IG1hY2hpbmUsIHRoZQo+IHByb2Js ZW0gd2FzIHRyYWNlZCB0byB0aGUgYXJyYXkgcGlkX2xpc3RbXSB3ZW50IHRvIG92ZXJmbG93IGFu ZAo+IGNvcnJ1cHRlZCBtZW1vcnkuIFRoaXMgZml4IG1ha2VzIHBpZF9saXN0IGR5bmFtaWNhbGx5 IHNpemVkIHdpdGgKPiBjb3JyZWN0IG1lbW9yeSBzaXplIHRvIGF2b2lkIG92ZXJmbG93Lgo+IAo+ IHYyOiBub3Qgc3BsaXQgaW50byBkaWZmZXJlbnQgYml0cyB3aGVuIGFsbG9jYXRpbmcgcGlkX2xp c3QuCj4gdjM6IDEpIGZpeCBvcHRhcmdzOiAtYiBhbmQgLXAgc2hvdWxkIG5vdCBiZSB1c2VkIGF0 IHRoZSBzYW1lIHRpbWUuCj4gICAgIDIpIHByZV9tZW0gbWF5YmUgbm90IGluaXRpYWxpemVkIGJl Zm9yZSB1c2luZyBpZiAtcCBvcHRpb24gbm90IHVzZWQuCj4gICAgICAgIGZpeCBpdCBieSBtb3Zp bmcgaXQgb3V0c2lkZSBgYGlmKG1heHBlcmNlbnQpJycgYmxvY2suCj4gdjQ6IGZpeCBjb2RlIGZv cm1hdC4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBDYXNwYXIgWmhhbmcgPGN6aGFuZ0ByZWRoYXQuY29t Pgo+IC0tLQo+ICB0ZXN0Y2FzZXMva2VybmVsL21lbS9tdGVzdDAxL210ZXN0MDEuYyB8ICA0MDkg KysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0KPiAgMSBmaWxlcyBjaGFuZ2VkLCAyMTUg aW5zZXJ0aW9ucygrKSwgMTk0IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS90ZXN0Y2Fz ZXMva2VybmVsL21lbS9tdGVzdDAxL210ZXN0MDEuYyBiL3Rlc3RjYXNlcy9rZXJuZWwvbWVtL210 ZXN0MDEvbXRlc3QwMS5jCj4gaW5kZXggYWVlMGQ1MS4uOTRiNDI5YSAxMDA2NDQKPiAtLS0gYS90 ZXN0Y2FzZXMva2VybmVsL21lbS9tdGVzdDAxL210ZXN0MDEuYwo+ICsrKyBiL3Rlc3RjYXNlcy9r ZXJuZWwvbWVtL210ZXN0MDEvbXRlc3QwMS5jCj4gQEAgLTQ0LDIyMyArNDQsMjQ0IEBACj4gIAo+ ICAjaW5jbHVkZSAidGVzdC5oIgo+ICAKPiArI2RlZmluZSBGSVZFX0hVTkRSRURfS0IgKHVuc2ln bmVkIGxvbmcgbG9uZykoNTAwKjEwMjQqMTAyNCkKPiArI2RlZmluZSBPTkVfTUVHQUJZVEUgICAg KHVuc2lnbmVkIGxvbmcgbG9uZykoMTAyNCoxMDI0KjEwMjQpCj4gKyNkZWZpbmUgVEhSRUVfTUVH QUJZVEVTICh1bnNpZ25lZCBsb25nIGxvbmcpKDMqT05FX01FR0FCWVRFKQo+ICsKPiAgY2hhciAq VENJRCA9ICJtdGVzdDAxIjsKPiAgaW50IFRTVF9UT1RBTCA9IDE7Cj4gLQo+ICBpbnQgcGlkX2Nv dW50ID0gMDsKPiAgCj4gIHZvaWQgaGFuZGxlcihpbnQgc2lnbm8pCj4gIHsKPiAtICAgICAgICBw aWRfY291bnQrKzsKPiArICAgIHBpZF9jb3VudCsrOwo+ICB9Cj4gIAo+IC1pbnQgbWFpbihpbnQg YXJnYywgY2hhciogYXJndltdKSB7Cj4gLSAgY2hhciogbWVtOwo+IC0gIGZsb2F0IHBlcmNlbnQ7 Cj4gLSAgdW5zaWduZWQgaW50IG1heHBlcmNlbnQ9MCwgZG93cml0ZT0wLCB2ZXJib3NlPTAsIGos IGM7Cj4gLSAgdW5zaWduZWQgbG9uZyBieXRlY291bnQsIGFsbG9jX2J5dGVzOwo+IC0gIHVuc2ln bmVkIGxvbmcgbG9uZyBvcmlnaW5hbF9tYXhieXRlcyxtYXhieXRlcz0wOwo+IC0gIHVuc2lnbmVk IGxvbmcgbG9uZyBwcmVfbWVtLCBwb3N0X21lbTsKPiAtICBleHRlcm4gY2hhciogb3B0YXJnOwo+ IC0gIGludCBjaHVua3NpemUgPSAxMDI0KjEwMjQ7IC8qIG9uZSBtZWcgYXQgYSB0aW1lIGJ5IGRl ZmF1bHQgKi8KPiAtICBzdHJ1Y3Qgc3lzaW5mbyBzc3RhdHM7Cj4gLSAgaW50IGkscGlkX2NudHI7 Cj4gLSAgcGlkX3QgcGlkLHBpZF9saXN0WzEwMDBdOwo+IC0gIHN0cnVjdCBzaWdhY3Rpb24gYWN0 Owo+IC0KPiAtICBhY3Quc2FfaGFuZGxlciA9IGhhbmRsZXI7Cj4gLSAgYWN0LnNhX2ZsYWdzID0g MDsKPiAtICBzaWdlbXB0eXNldCgmYWN0LnNhX21hc2spOwo+IC0gIHNpZ2FjdGlvbihTSUdSVE1J TiwgICZhY3QsIDApOwo+IC0KPiAtICBmb3IgKGk9MDtpPDEwMDA7aSsrKQo+IC0gICBwaWRfbGlz dFtpXT0ocGlkX3QpMDsKPiAtCj4gLSAgd2hpbGUgKChjPWdldG9wdChhcmdjLCBhcmd2LCAiYzpi OnA6d3ZoIikpICE9IEVPRikgewo+IC0gICAgc3dpdGNoKChjaGFyKWMpIHsKPiAtICAgICAgY2Fz ZSAnYyc6Cj4gLSAgICAgICAgY2h1bmtzaXplID0gYXRvaShvcHRhcmcpOwo+IC0gICAgICAgIGJy ZWFrOwo+IC0gICAgICBjYXNlICdiJzoKPiAtICAgICAgICBtYXhieXRlcyA9IGF0b2xsKG9wdGFy Zyk7Cj4gLSAgICAgICAgYnJlYWs7Cj4gLSAgICAgIGNhc2UgJ3AnOgo+IC0gICAgICAgIG1heHBl cmNlbnQgPSBhdG9pKG9wdGFyZyk7Cj4gLQlpZiAobWF4cGVyY2VudCA8PSAwKSB7Cj4gLQkgIHRz dF9yZXNtKFRGQUlMLCAiRVJST1I6IC1wIG9wdGlvbiByZXF1aXJlcyBudW1iZXIgZ3JlYXRlciB0 aGFuIDAiKTsKPiAtCSAgZXhpdCgxKTt9Cj4gLQlpZiAobWF4cGVyY2VudCA+IDk5KSB7Cj4gLQkg IHRzdF9yZXNtKFRGQUlMLCAiRVJST1I6IC1wIG9wdGlvbiBjYW5ub3QgYmUgZ3JlYXRlciB0aGFu IDk5Iik7Cj4gLQkgIGV4aXQoMSk7fQo+IC0gICAgICAgIGJyZWFrOwo+IC0gICAgICBjYXNlICd3 JzoKPiAtICAgICAgICBkb3dyaXRlID0gMTsKPiAtICAgICAgICBicmVhazsKPiAtICAgICAgY2Fz ZSAndic6Cj4gLSAgICAgICAgdmVyYm9zZSA9IDE7Cj4gLSAgICAgICAgYnJlYWs7Cj4gLSAgICAg IGNhc2UgJ2gnOgo+IC0gICAgICBkZWZhdWx0Ogo+IC0gICAgICAgIHByaW50ZigiVXNhZ2U6ICVz IFstYyA8Ynl0ZXM+XSBbLWIgPGJ5dGVzPnwtcCA8cGVyY2VudD5dIFstdl1cbiIsIGFyZ3ZbMF0p Owo+IC0gICAgICAgIHByaW50ZigiXHQtYyA8bnVtPlx0c2l6ZSBvZiBjaHVuayBpbiBieXRlcyB0 byBtYWxsb2Mgb24gZWFjaCBwYXNzXG4iKTsKPiAtICAgICAgICBwcmludGYoIlx0LWIgPGJ5dGVz Plx0bWF4aW11bSBudW1iZXIgb2YgYnl0ZXMgdG8gYWxsb2NhdGUgYmVmb3JlIHN0b3BwaW5nXG4i KTsKPiAtICAgICAgICBwcmludGYoIlx0LXAgPGJ5dGVzPlx0cGVyY2VudCBvZiB0b3RhbCBtZW1v cnkgdXNlZCBhdCB3aGljaCB0aGUgcHJvZ3JhbSBzdG9wc1xuIik7Cj4gLSAgICAgICAgcHJpbnRm KCJcdC13XHRcdHdyaXRlIHRvIHRoZSBtZW1vcnkgYWZ0ZXIgYWxsb2NhdGluZ1xuIik7Cj4gLSAg ICAgICAgcHJpbnRmKCJcdC12XHRcdHZlcmJvc2VcbiIpOwo+IC0gICAgICAgIHByaW50ZigiXHQt aFx0XHRkaXNwbGF5IHVzYWdlXG4iKTsKPiAtICAgICAgICBleGl0KC0xKTsKPiAtICAgIH0KPiAt ICB9Cj4gLQo+IC0gIHN5c2luZm8oJnNzdGF0cyk7Cj4gLSAgaWYgKG1heHBlcmNlbnQpIHsKPiAr aW50IG1haW4oaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkKPiArewo+ICsgICAgY2hhciogbWVtOwo+ ICsgICAgZmxvYXQgcGVyY2VudDsKPiArICAgIHVuc2lnbmVkIGludCBtYXhwZXJjZW50ID0gMCwg ZG93cml0ZSA9IDAsIHZlcmJvc2U9MCwgaiwgYzsKPiArICAgIHVuc2lnbmVkIGxvbmcgYnl0ZWNv dW50LCBhbGxvY19ieXRlcywgbWF4X3BpZHM7Cj4gKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgb3Jp Z2luYWxfbWF4Ynl0ZXMsIG1heGJ5dGVzID0gMDsKPiArICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBw cmVfbWVtLCBwb3N0X21lbTsKPiAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbF9yYW0sIHRv dGFsX2ZyZWUsIEQsIEM7Cj4gLSAgICBwZXJjZW50PShmbG9hdCltYXhwZXJjZW50LzEwMC4wMDsK PiAtCj4gLSAgICB0b3RhbF9yYW09c3N0YXRzLnRvdGFscmFtOwo+IC0gICAgdG90YWxfcmFtPXRv dGFsX3JhbStzc3RhdHMudG90YWxzd2FwOwo+IC0KPiAtICAgIHRvdGFsX2ZyZWU9c3N0YXRzLmZy ZWVyYW07Cj4gLSAgICB0b3RhbF9mcmVlPXRvdGFsX2ZyZWUrc3N0YXRzLmZyZWVzd2FwOwo+IC0K PiAtICAgIC8qIFRvdGFsIG1lbW9yeSB1c2VkIG5lZWRlZCB0byByZWFjaCBtYXhwZXJjZW50ICov Cj4gLSAgICBEID0gcGVyY2VudCooc3N0YXRzLm1lbV91bml0KnRvdGFsX3JhbSk7Cj4gLSAgICB0 c3RfcmVzbShUSU5GTywgIlRvdGFsIG1lbW9yeSB1c2VkIG5lZWRlZCB0byByZWFjaCBtYXhwZXJj ZW50ID0gJWxsdSBrYnl0ZXMiLCBELzEwMjQpOwo+IC0KPiAtICAgIC8qIFRvdGFsIG1lbW9yeSBh bHJlYWR5IHVzZWQgKi8KPiAtICAgIEMgPSBzc3RhdHMubWVtX3VuaXQqKHRvdGFsX3JhbS10b3Rh bF9mcmVlKTsKPiAtICAgIHRzdF9yZXNtKFRJTkZPLCAiVG90YWwgbWVtb3J5IGFscmVhZHkgdXNl ZCBvbiBzeXN0ZW0gPSAlbGx1IGtieXRlcyIsIEMvMTAyNCk7Cj4gKyAgICBleHRlcm4gY2hhciog b3B0YXJnOwo+ICsgICAgaW50IGNodW5rc2l6ZSA9IDEwMjQqMTAyNDsgLyogb25lIG1lZyBhdCBh IHRpbWUgYnkgZGVmYXVsdCAqLwo+ICsgICAgc3RydWN0IHN5c2luZm8gc3N0YXRzOwo+ICsgICAg aW50IGksIHBpZF9jbnRyOwo+ICsgICAgcGlkX3QgcGlkLCAqcGlkX2xpc3Q7Cj4gKyAgICBzdHJ1 Y3Qgc2lnYWN0aW9uIGFjdDsKPiAgCj4gKyAgICBhY3Quc2FfaGFuZGxlciA9IGhhbmRsZXI7Cj4g KyAgICBhY3Quc2FfZmxhZ3MgPSAwOwo+ICsgICAgc2lnZW1wdHlzZXQoJmFjdC5zYV9tYXNrKTsK PiArICAgIHNpZ2FjdGlvbihTSUdSVE1JTiwgICZhY3QsIDApOwo+ICsgICAgCj4gKyAgICB3aGls ZSAoKGMgPSBnZXRvcHQoYXJnYywgYXJndiwgImM6YjpwOnd2aCIpKSAhPSBFT0YpIAo+ICsgICAg ewo+ICsgICAgICAgIHN3aXRjaCgoY2hhciljKSAKPiArICAgICAgICB7Cj4gKyAgICAgICAgICAg IGNhc2UgJ2MnOgo+ICsgICAgICAgICAgICAgICAgY2h1bmtzaXplID0gYXRvaShvcHRhcmcpOwo+ ICsgICAgICAgICAgICAgICAgYnJlYWs7Cj4gKyAgICAgICAgICAgIGNhc2UgJ2InOgo+ICsgICAg ICAgICAgICAgICAgaWYgKG1heHBlcmNlbnQgIT0gMCkgewo+ICsgICAgICAgICAgICAgICAgICAg IHRzdF9yZXNtKFRGQUlMLCAiRVJST1I6IC1iIG9wdGlvbiBjYW5ub3QgYmUgdXNlZCB3aXRoIC1w IG9wdGlvbiBhdCB0aGUgc2FtZSB0aW1lIik7Cj4gKyAgICAgICAgICAgICAgICAgICAgZXhpdCgx KTsKPiArICAgICAgICAgICAgICAgIH0KPiArICAgICAgICAgICAgICAgIG1heGJ5dGVzID0gYXRv bGwob3B0YXJnKTsKPiArICAgICAgICAgICAgICAgIGJyZWFrOwo+ICsgICAgICAgICAgICBjYXNl ICdwJzoKPiArICAgICAgICAgICAgICAgIGlmIChtYXhieXRlcyAhPSAwKSB7Cj4gKyAgICAgICAg ICAgICAgICAgICAgdHN0X3Jlc20oVEZBSUwsICJFUlJPUjogLXAgb3B0aW9uIGNhbm5vdCBiZSB1 c2VkIHdpdGggLWIgb3B0aW9uIGF0IHRoZSBzYW1lIHRpbWUiKTsKPiArICAgICAgICAgICAgICAg ICAgICBleGl0KDEpOwo+ICsgICAgICAgICAgICAgICAgfQo+ICsgICAgICAgICAgICAgICAgbWF4 cGVyY2VudCA9IGF0b2kob3B0YXJnKTsKPiArICAgICAgICAgICAgICAgIGlmIChtYXhwZXJjZW50 IDw9IDApIHsKPiArICAgICAgICAgICAgICAgICAgICB0c3RfcmVzbShURkFJTCwgIkVSUk9SOiAt cCBvcHRpb24gcmVxdWlyZXMgbnVtYmVyIGdyZWF0ZXIgdGhhbiAwIik7Cj4gKyAgICAgICAgICAg ICAgICAgICAgZXhpdCgxKTsKPiArICAgICAgICAgICAgICAgIH0KPiArICAgICAgICAgICAgICAg IGlmIChtYXhwZXJjZW50ID4gOTkpIHsKPiArICAgICAgICAgICAgICAgICAgICB0c3RfcmVzbShU RkFJTCwgIkVSUk9SOiAtcCBvcHRpb24gY2Fubm90IGJlIGdyZWF0ZXIgdGhhbiA5OSIpOwo+ICsg ICAgICAgICAgICAgICAgICAgIGV4aXQoMSk7Cj4gKyAgICAgICAgICAgICAgICB9Cj4gKyAgICAg ICAgICAgICAgICBicmVhazsKPiArICAgICAgICAgICAgY2FzZSAndyc6Cj4gKyAgICAgICAgICAg ICAgICBkb3dyaXRlID0gMTsKPiArICAgICAgICAgICAgICAgIGJyZWFrOwo+ICsgICAgICAgICAg ICBjYXNlICd2JzoKPiArICAgICAgICAgICAgICAgIHZlcmJvc2UgPSAxOwo+ICsgICAgICAgICAg ICAgICAgYnJlYWs7Cj4gKyAgICAgICAgICAgIGNhc2UgJ2gnOgo+ICsgICAgICAgICAgICBkZWZh dWx0Ogo+ICsgICAgICAgICAgICAgICAgcHJpbnRmKCJVc2FnZTogJXMgWy1jIDxieXRlcz5dIFst YiA8Ynl0ZXM+fC1wIDxwZXJjZW50Pl0gWy12XVxuIiwgYXJndlswXSk7Cj4gKyAgICAgICAgICAg ICAgICBwcmludGYoIlx0LWMgPG51bT5cdHNpemUgb2YgY2h1bmsgaW4gYnl0ZXMgdG8gbWFsbG9j IG9uIGVhY2ggcGFzc1xuIik7Cj4gKyAgICAgICAgICAgICAgICBwcmludGYoIlx0LWIgPGJ5dGVz Plx0bWF4aW11bSBudW1iZXIgb2YgYnl0ZXMgdG8gYWxsb2NhdGUgYmVmb3JlIHN0b3BwaW5nXG4i KTsKPiArICAgICAgICAgICAgICAgIHByaW50ZigiXHQtcCA8Ynl0ZXM+XHRwZXJjZW50IG9mIHRv dGFsIG1lbW9yeSB1c2VkIGF0IHdoaWNoIHRoZSBwcm9ncmFtIHN0b3BzXG4iKTsKPiArICAgICAg ICAgICAgICAgIHByaW50ZigiXHQtd1x0XHR3cml0ZSB0byB0aGUgbWVtb3J5IGFmdGVyIGFsbG9j YXRpbmdcbiIpOwo+ICsgICAgICAgICAgICAgICAgcHJpbnRmKCJcdC12XHRcdHZlcmJvc2VcbiIp Owo+ICsgICAgICAgICAgICAgICAgcHJpbnRmKCJcdC1oXHRcdGRpc3BsYXkgdXNhZ2VcbiIpOwo+ ICsgICAgICAgICAgICAgICAgZXhpdCgtMSk7Cj4gKyAgICAgICAgfQo+ICsgICAgfQo+ICsgICAg Cj4gKyAgICBzeXNpbmZvKCZzc3RhdHMpOwo+ICsgICAgdG90YWxfcmFtID0gc3N0YXRzLnRvdGFs cmFtICsgc3N0YXRzLnRvdGFsc3dhcDsgCj4gKyAgICB0b3RhbF9mcmVlID0gc3N0YXRzLmZyZWVy YW0gKyBzc3RhdHMuZnJlZXN3YXA7Cj4gICAgICAvKiBUb3RhbCBGcmVlIFByZS1UZXN0IFJBTSAq Lwo+IC0gICAgcHJlX21lbSA9IHNzdGF0cy5tZW1fdW5pdCp0b3RhbF9mcmVlOwo+IC0KPiAtICAg IC8qIEFyZSB3ZSBhbHJlYWR5IHVzaW5nIG1vcmUgdGhhbiBtYXhwZXJjZW50PyAqLwo+IC0gICAg aWYgKEM+RCkgewo+IC0gICAgICB0c3RfcmVzbShURkFJTCwgIk1vcmUgbWVtb3J5IHRoYW4gdGhl IG1heGltdW0gYW1vdW50IHlvdSBzcGVjaWZpZWQgaXMgYWxyZWFkeSBiZWluZyB1c2VkIik7Cj4g LSAgICAgIGV4aXQoMSk7Cj4gKyAgICBwcmVfbWVtID0gc3N0YXRzLm1lbV91bml0ICogdG90YWxf ZnJlZTsgICAKPiArICAgIG1heF9waWRzID0gdG90YWxfcmFtIC8gKHVuc2lnbmVkIGxvbmcpRklW RV9IVU5EUkVEX0tCICsgMTsKPiArIAo+ICsgICAgaWYgKChwaWRfbGlzdCA9IG1hbGxvYyhtYXhf cGlkcyAqIHNpemVvZihwaWRfdCkpKSA9PSBOVUxMKQo+ICsgICAgewo+ICsgICAgICAgIHRzdF9y ZXNtKFRCUk9LfFRFUlJOTywgIm1hbGxvYyBmYWlsZWQuIik7Cj4gKyAgICAgICAgZXhpdCgxKTsK PiAgICAgIH0KPiAtICAgIGVsc2UKPiAtICAgICAgcHJlX21lbSA9IHNzdGF0cy5tZW1fdW5pdCp0 b3RhbF9mcmVlOwo+ICsgICAgbWVtc2V0KHBpZF9saXN0LCAwLCBtYXhfcGlkcyAqIHNpemVvZihw aWRfdCkpOwo+ICsgICAgCj4gKyAgICAvKiBDdXJyZW50bHkgdXNlZCBtZW1vcnkgKi8KPiArICAg IEMgPSBzc3RhdHMubWVtX3VuaXQgKiAodG90YWxfcmFtIC0gdG90YWxfZnJlZSk7Cj4gKyAgICB0 c3RfcmVzbShUSU5GTywgIlRvdGFsIG1lbW9yeSBhbHJlYWR5IHVzZWQgb24gc3lzdGVtID0gJWxs dSBrYnl0ZXMiLCBDLzEwMjQpOwo+ICsgICAgCj4gKyAgICBpZiAobWF4cGVyY2VudCkgCj4gKyAg ICB7Cj4gKyAgICAgICAgcGVyY2VudCA9IChmbG9hdCltYXhwZXJjZW50IC8gMTAwLjAwOwo+ICAK PiAtICAgIC8qIHNldCBtYXhieXRlcyB0byB0aGUgZXh0cmEgYW1vdW50IHdlIHdhbnQgdG8gYWxs b2NhdGUgKi8KPiAtICAgIG1heGJ5dGVzID0gRC1DOwo+IC0gICAgdHN0X3Jlc20oVElORk8sICJG aWxsaW5nIHVwICVkJSUgb2YgcmFtIHdoaWNoIGlzICVsbHUga2J5dGVzIiwgbWF4cGVyY2VudCwg bWF4Ynl0ZXMvMTAyNCk7Cj4gLSAgfQo+IC0gIG9yaWdpbmFsX21heGJ5dGVzPW1heGJ5dGVzOwo+ IC0gIGk9MDsKPiAtICBwaWRfY250cj0wOwo+IC0gIHBpZD1mb3JrKCk7Cj4gLSAgaWYgKHBpZCAh PSAwKQo+IC0gICAgcGlkX2NudHIrKzsKPiAtICAgIHBpZF9saXN0W2ldPXBpZDsKPiArICAgICAg ICAvKiBEZXNpcmVkIG1lbW9yeSBuZWVkZWQgdG8gcmVhY2ggbWF4cGVyY2VudCAqLwo+ICsgICAg ICAgIEQgPSBwZXJjZW50ICogKHNzdGF0cy5tZW1fdW5pdCAqIHRvdGFsX3JhbSk7Cj4gKyAgICAg ICAgdHN0X3Jlc20oVElORk8sICJUb3RhbCBtZW1vcnkgdXNlZCBuZWVkZWQgdG8gcmVhY2ggbWF4 cGVyY2VudCA9ICVsbHUga2J5dGVzIiwgRC8xMDI0KTsKPiArICAgICAgICAKPiArICAgICAgICAv KiBBcmUgd2UgYWxyZWFkeSB1c2luZyBtb3JlIHRoYW4gbWF4cGVyY2VudD8gKi8KPiArICAgICAg ICBpZiAoQyA+IEQpIAo+ICsgICAgICAgIHsKPiArICAgICAgICAgICAgdHN0X3Jlc20oVEZBSUws ICJNb3JlIG1lbW9yeSB0aGFuIHRoZSBtYXhpbXVtIGFtb3VudCB5b3Ugc3BlY2lmaWVkIGlzIGFs cmVhZHkgYmVpbmcgdXNlZCIpOwo+ICsgICAgICAgICAgICBmcmVlKHBpZF9saXN0KTsKPiArICAg ICAgICAgICAgZXhpdCgxKTsKPiArICAgICAgICB9Cj4gKyAgICAgICAgCj4gKyAgICAgICAgLyog c2V0IG1heGJ5dGVzIHRvIHRoZSBleHRyYSBhbW91bnQgd2Ugd2FudCB0byBhbGxvY2F0ZSAqLwo+ ICsgICAgICAgIG1heGJ5dGVzID0gRCAtIEM7Cj4gKyAgICAgICAgdHN0X3Jlc20oVElORk8sICJG aWxsaW5nIHVwICVkJSUgb2YgcmFtIHdoaWNoIGlzICVsbHUga2J5dGVzIiwgbWF4cGVyY2VudCwg bWF4Ynl0ZXMvMTAyNCk7Cj4gKyAgICB9Cj4gKyAgICBvcmlnaW5hbF9tYXhieXRlcyA9IG1heGJ5 dGVzOwo+ICsgICAgaSA9IDA7Cj4gKyAgICBwaWRfY250ciA9IDA7Cj4gKyAgICBwaWQgPSBmb3Jr KCk7Cj4gKyAgICBpZiAocGlkICE9IDApCj4gKyAgICAgICAgcGlkX2NudHIrKzsKPiArICAgIHBp ZF9saXN0W2ldID0gcGlkOwo+ICAKPiAgI2lmIGRlZmluZWQgKF9zMzkwXykgLyogczM5MCdzIDMx Yml0IGFkZHJlc3NpbmcgcmVxdWlyZXMgc21hbGxlciBjaHVua3MgKi8KPiAtI2RlZmluZSBGSVZF X0hVTkRSRURfS0IJKDUwMCoxMDI0KjEwMjQpCj4gLSNkZWZpbmUgT05FX01FR0FCWVRFCSgxMDI0 KjEwMjQqMTAyNCkKPiAtI2RlZmluZSBUSFJFRV9NRUdBQllURVMJKDMqT05FX01FR0FCWVRFKQo+ IC0gIHdoaWxlIChwaWQgIT0gMCAmJiBtYXhieXRlcyA+IEZJVkVfSFVORFJFRF9LQikKPiAtICB7 Cj4gLSAgICBpKys7Cj4gLSAgICBtYXhieXRlcyAtPSBGSVZFX0hVTkRSRURfS0I7Cj4gLSAgICBw aWQgPSBmb3JrKCk7Cj4gLSAgICBpZiAocGlkICE9IDApIHsKPiAtICAgICAgcGlkX2NudHIrKzsK PiAtICAgICAgcGlkX2xpc3RbaV0gPSBwaWQ7Cj4gKyAgICB3aGlsZSAocGlkICE9IDAgJiYgbWF4 Ynl0ZXMgPiBGSVZFX0hVTkRSRURfS0IpCj4gKyAgICB7Cj4gKyAgICAgICAgaSsrOwo+ICsgICAg ICAgIG1heGJ5dGVzIC09IEZJVkVfSFVORFJFRF9LQjsKPiArICAgICAgICBwaWQgPSBmb3JrKCk7 Cj4gKyAgICAgICAgaWYgKHBpZCAhPSAwKSAKPiArICAgICAgICB7Cj4gKyAgICAgICAgICAgIHBp ZF9jbnRyKys7Cj4gKyAgICAgICAgICAgIHBpZF9saXN0W2ldID0gcGlkOwo+ICsgICAgICAgIH0K PiAgICAgIH0KPiAtICB9Cj4gLSAgaWYgKG1heGJ5dGVzID4gRklWRV9IVU5EUkVEX0tCKQo+IC0g ICAgYWxsb2NfYnl0ZXMgRklWRV9IVU5EUkVEX0tCOwo+IC0gIGVsc2UKPiAtICAgIGFsbG9jX2J5 dGVzID0gKHVuc2lnbmVkIGxvbmcpIG1heGJ5dGVzOwo+IC0KPiArICAgIGlmIChtYXhieXRlcyA+ IEZJVkVfSFVORFJFRF9LQikKPiArICAgICAgICBhbGxvY19ieXRlcyA9IEZJVkVfSFVORFJFRF9L QjsKPiArICAgIGVsc2UKPiArICAgICAgICBhbGxvY19ieXRlcyA9ICh1bnNpZ25lZCBsb25nKSBt YXhieXRlczsKPiArICAgIAo+ICAjZWxpZiBfX1dPUkRTSVpFPT0zMgo+IC0gIHdoaWxlIChwaWQg IT0gMCAmJiBtYXhieXRlcyA+IE9ORV9NRUdBQllURSkKPiAtICB7Cj4gLSAgICBpKys7Cj4gLSAg ICBtYXhieXRlcyAtPSBPTkVfTUVHQUJZVEU7Cj4gLSAgICBwaWQgPSBmb3JrKCk7Cj4gLSAgICBp ZiAocGlkICE9IDApIHsKPiAtICAgICAgcGlkX2NudHIrKzsKPiAtICAgICAgcGlkX2xpc3RbaV09 cGlkOwo+ICsgICAgd2hpbGUgKHBpZCAhPSAwICYmIG1heGJ5dGVzID4gT05FX01FR0FCWVRFKQo+ ICsgICAgewo+ICsgICAgICAgIGkrKzsKPiArICAgICAgICBtYXhieXRlcyAtPSBPTkVfTUVHQUJZ VEU7Cj4gKyAgICAgICAgcGlkID0gZm9yaygpOwo+ICsgICAgICAgIGlmIChwaWQgIT0gMCkgCj4g KyAgICAgICAgewo+ICsgICAgICAgICAgICBwaWRfY250cisrOwo+ICsgICAgICAgICAgICBwaWRf bGlzdFtpXT1waWQ7Cj4gKyAgICAgICAgfQo+ICAgICAgfQo+IC0gIH0KPiAtICBpZiAobWF4Ynl0 ZXMgPiBPTkVfTUVHQUJZVEUpCj4gLSAgICBhbGxvY19ieXRlcyA9IE9ORV9NRUdBQllURTsKPiAt ICBlbHNlCj4gLSAgICBhbGxvY19ieXRlcyA9ICh1bnNpZ25lZCBsb25nKW1heGJ5dGVzOwo+IC0K PiArICAgIGlmIChtYXhieXRlcyA+IE9ORV9NRUdBQllURSkKPiArICAgICAgICBhbGxvY19ieXRl cyA9IE9ORV9NRUdBQllURTsKPiArICAgIGVsc2UKPiArICAgICAgICBhbGxvY19ieXRlcyA9ICh1 bnNpZ25lZCBsb25nKW1heGJ5dGVzOwo+ICsgICAgCj4gICNlbGlmIF9fV09SRFNJWkU9PTY0Cj4g LSAgd2hpbGUgKHBpZCE9MCAmJiBtYXhieXRlcyA+IFRIUkVFX01FR0FCWVRFUykKPiAtICB7Cj4g LSAgICBpKys7Cj4gLSAgICBtYXhieXRlcyAtPSBUSFJFRV9NRUdBQllURVM7Cj4gLSAgICBwaWQ9 Zm9yaygpOwo+IC0gICAgaWYgKHBpZCAhPSAwKSB7Cj4gLSAgICAgIHBpZF9jbnRyKys7Cj4gLSAg ICAgIHBpZF9saXN0W2ldID0gcGlkOwo+IC0gICAgfQo+IC0gIH0KPiAtICBpZiAobWF4Ynl0ZXMg PiBUSFJFRV9NRUdBQllURVMpCj4gLSAgICBhbGxvY19ieXRlcyA9IFRIUkVFX01FR0FCWVRFUzsK PiAtICBlbHNlCj4gLSAgICBhbGxvY19ieXRlcyA9IG1heGJ5dGVzOwo+IC0jZW5kaWYKPiAtCj4g LSAgaWYgKHBpZCA9PSAwKQkJCS8qKiBDSElMRCAqKi8KPiAtICB7Cj4gLSAgICBieXRlY291bnQ9 Y2h1bmtzaXplOwo+IC0gICAgd2hpbGUgKDEpIHsKPiAtICAgICAgaWYgKChtZW0gPSAoY2hhciop bWFsbG9jKGNodW5rc2l6ZSkpID09IE5VTEwpIHsKPiAtICAgICAgICB0c3RfcmVzbShUSU5GTywg InN0b3BwZWQgYXQgJWx1IGJ5dGVzIiwgYnl0ZWNvdW50KTsKPiAtICAgICAgICBleGl0KDEpOwo+ IC0gICAgICB9Cj4gLSAgICAgIGlmIChkb3dyaXRlKQo+IC0gICAgICAgIGZvciAoaj0wOyBqPGNo dW5rc2l6ZTsgaisrKQo+IC0gICAgICAgICAgKihtZW0raik9J2EnOwo+IC0gICAgICBpZiAodmVy Ym9zZSkKPiAtCXRzdF9yZXNtKFRJTkZPLCAiYWxsb2NhdGVkICVsdSBieXRlcyBjaHVua3NpemUg aXMgJWQiLCBieXRlY291bnQsIGNodW5rc2l6ZSk7Cj4gLSAgICAgIGJ5dGVjb3VudCs9Y2h1bmtz aXplOwo+IC0gICAgICBpZiAoYWxsb2NfYnl0ZXMgJiYgKGJ5dGVjb3VudCA+PSBhbGxvY19ieXRl cykpCj4gLSAgICAgICAgYnJlYWs7Cj4gKyAgICB3aGlsZSAocGlkIT0wICYmIG1heGJ5dGVzID4g VEhSRUVfTUVHQUJZVEVTKSAKPiArICAgIHsKPiArICAgICAgICBpKys7Cj4gKyAgICAgICAgbWF4 Ynl0ZXMgLT0gVEhSRUVfTUVHQUJZVEVTOwo+ICsgICAgICAgIHBpZCA9IGZvcmsoKTsKPiArICAg ICAgICBpZiAocGlkICE9IDApIAo+ICsgICAgICAgIHsKPiArICAgICAgICAgICAgcGlkX2NudHIr KzsKPiArICAgICAgICAgICAgcGlkX2xpc3RbaV0gPSBwaWQ7Cj4gKyAgICAgICAgfQo+ICAgICAg fQo+IC0gICAgaWYgKGRvd3JpdGUpCj4gLSAgICAgIHRzdF9yZXNtKFRJTkZPLCAiLi4uICVsdSBi eXRlcyBhbGxvY2F0ZWQgYW5kIHVzZWQuIiwgYnl0ZWNvdW50KTsKPiArICAgIGlmIChtYXhieXRl cyA+IFRIUkVFX01FR0FCWVRFUykKPiArICAgICAgICBhbGxvY19ieXRlcyA9IFRIUkVFX01FR0FC WVRFUzsKPiAgICAgIGVsc2UKPiAtICAgICAgdHN0X3Jlc20oVElORk8sICIuLi4gJWx1IGJ5dGVz IGFsbG9jYXRlZCBvbmx5LiIsIGJ5dGVjb3VudCk7Cj4gLSAgICBraWxsKGdldHBwaWQoKSxTSUdS VE1JTik7Cj4gLSAgICB3aGlsZSAoMSkKPiAtICAgICAgc2xlZXAoMSk7Cj4gLSAgfQo+IC0gIGVs c2UJCQkJCS8qKiBQQVJFTlQgKiovCj4gLSAgewo+IC0KPiAtICAgIGk9MDsKPiAtICAgIHN5c2lu Zm8oJnNzdGF0cyk7Cj4gKyAgICAgICAgYWxsb2NfYnl0ZXMgPSBtYXhieXRlczsKPiArI2VuZGlm Cj4gIAo+IC0gICAgaWYgKGRvd3JpdGUpCj4gKyAgICBpZiAocGlkID09IDApICAgICAgICAgLyoq IENISUxEICoqLwo+ICAgICAgewo+IC0gICAgICAvKiBUb3RhbCBGcmVlIFBvc3QtVGVzdCBSQU0g Ki8KPiAtICAgICAgcG9zdF9tZW0gPSAodW5zaWduZWQgbG9uZyBsb25nKXNzdGF0cy5tZW1fdW5p dCpzc3RhdHMuZnJlZXJhbTsKPiAtICAgICAgcG9zdF9tZW0gPSBwb3N0X21lbSsoKHVuc2lnbmVk IGxvbmcgbG9uZylzc3RhdHMubWVtX3VuaXQqc3N0YXRzLmZyZWVzd2FwKTsKPiAtCj4gLSAgICAg IHdoaWxlICgoKCh1bnNpZ25lZCBsb25nIGxvbmcpcHJlX21lbSAtIHBvc3RfbWVtKSA8ICh1bnNp Z25lZCBsb25nIGxvbmcpb3JpZ2luYWxfbWF4Ynl0ZXMpICYmCj4gLSAgICAgICAgICAgICAgKHBp ZF9jb3VudCA8IHBpZF9jbnRyKSApCj4gLSAgICAgIHsKPiAtICAgICAgIHNsZWVwKDEpOwo+IC0g ICAgICAgc3lzaW5mbygmc3N0YXRzKTsKPiAtICAgICAgIHBvc3RfbWVtID0gKHVuc2lnbmVkIGxv bmcgbG9uZylzc3RhdHMubWVtX3VuaXQqc3N0YXRzLmZyZWVyYW07Cj4gLSAgICAgICBwb3N0X21l bSA9IHBvc3RfbWVtKygodW5zaWduZWQgbG9uZyBsb25nKXNzdGF0cy5tZW1fdW5pdCpzc3RhdHMu ZnJlZXN3YXApOwo+IC0gICAgICB9Cj4gKyAgICAgICAgYnl0ZWNvdW50ID0gY2h1bmtzaXplOwo+ ICsgICAgICAgIHdoaWxlICgxKSAKPiArICAgICAgICB7Cj4gKyAgICAgICAgICAgIGlmICgobWVt ID0gbWFsbG9jKGNodW5rc2l6ZSkpID09IE5VTEwpIAo+ICsgICAgICAgICAgICB7Cj4gKyAgICAg ICAgICAgICAgICB0c3RfcmVzbShUQlJPS3xURVJSTk8sICJzdG9wcGVkIGF0ICVsdSBieXRlcyIs IGJ5dGVjb3VudCk7Cj4gKyAgICAgICAgICAgICAgICBmcmVlKHBpZF9saXN0KTsKPiArICAgICAg ICAgICAgICAgIGV4aXQoMSk7Cj4gKyAgICAgICAgICAgIH0KPiArICAgICAgICAgICAgaWYgKGRv d3JpdGUpCj4gKyAgICAgICAgICAgICAgICBmb3IgKGogPSAwOyBqIDwgY2h1bmtzaXplOyBqKysp Cj4gKyAgICAgICAgICAgICAgICAgICAgKihtZW0raikgPSAnYSc7Cj4gKyAgICAgICAgICAgIGlm ICh2ZXJib3NlKQo+ICsgICAgICAgICAgICAgICAgdHN0X3Jlc20oVElORk8sICJhbGxvY2F0ZWQg JWx1IGJ5dGVzIGNodW5rc2l6ZSBpcyAlZCIsIGJ5dGVjb3VudCwgY2h1bmtzaXplKTsKPiArICAg ICAgICAgICAgYnl0ZWNvdW50ICs9IGNodW5rc2l6ZTsKPiArICAgICAgICAgICAgaWYgKGFsbG9j X2J5dGVzICYmIGJ5dGVjb3VudCA+PSBhbGxvY19ieXRlcykKPiArICAgICAgICAgICAgICAgIGJy ZWFrOwo+ICsgICAgICAgIH0KPiArICAgICAgICBpZiAoZG93cml0ZSkKPiArICAgICAgICAgICAg dHN0X3Jlc20oVElORk8sICIuLi4gJWx1IGJ5dGVzIGFsbG9jYXRlZCBhbmQgdXNlZC4iLCBieXRl Y291bnQpOwo+ICsgICAgICAgIGVsc2UKPiArICAgICAgICAgICAgdHN0X3Jlc20oVElORk8sICIu Li4gJWx1IGJ5dGVzIGFsbG9jYXRlZCBvbmx5LiIsIGJ5dGVjb3VudCk7Cj4gKyAgICAgICAga2ls bChnZXRwcGlkKCksIFNJR1JUTUlOKTsKPiArICAgICAgICB3aGlsZSAoMSkKPiArICAgICAgICAg ICAgc2xlZXAoMSk7Cj4gICAgICB9Cj4gLSAgICB3aGlsZSAocGlkX2xpc3RbaV0hPTApCj4gKyAg ICBlbHNlICAgICAgICAgICAgICAgICAgLyoqIFBBUkVOVCAqKi8KPiAgICAgIHsKPiAtICAgICAg a2lsbChwaWRfbGlzdFtpXSxTSUdLSUxMKTsKPiAtICAgICAgaSsrOwo+ICsgICAgICAgIGkgPSAw Owo+ICsgICAgICAgIHN5c2luZm8oJnNzdGF0cyk7Cj4gKyAgICAgICAgCj4gKyAgICAgICAgaWYg KGRvd3JpdGUpIAo+ICsgICAgICAgIHsKPiArICAgICAgICAgICAgLyogVG90YWwgRnJlZSBQb3N0 LVRlc3QgUkFNICovCj4gKyAgICAgICAgICAgIHBvc3RfbWVtID0gKHVuc2lnbmVkIGxvbmcgbG9u Zylzc3RhdHMubWVtX3VuaXQgKiBzc3RhdHMuZnJlZXJhbTsKPiArICAgICAgICAgICAgcG9zdF9t ZW0gPSBwb3N0X21lbSArICh1bnNpZ25lZCBsb25nIGxvbmcpc3N0YXRzLm1lbV91bml0ICogc3N0 YXRzLmZyZWVzd2FwOwo+ICsKPiArICAgICAgICAgICAgd2hpbGUgKCgoKHVuc2lnbmVkIGxvbmcg bG9uZylwcmVfbWVtIC0gcG9zdF9tZW0pIDwgKHVuc2lnbmVkIGxvbmcgbG9uZylvcmlnaW5hbF9t YXhieXRlcykgJiYKPiArICAgICAgICAgICAgICAgICAgICAocGlkX2NvdW50IDwgcGlkX2NudHIp KQo+ICsgICAgICAgICAgICB7Cj4gKyAgICAgICAgICAgICAgICBzbGVlcCgxKTsKPiArICAgICAg ICAgICAgICAgIHN5c2luZm8oJnNzdGF0cyk7Cj4gKyAgICAgICAgICAgICAgICBwb3N0X21lbSA9 ICh1bnNpZ25lZCBsb25nIGxvbmcpc3N0YXRzLm1lbV91bml0ICogc3N0YXRzLmZyZWVyYW07Cj4g KyAgICAgICAgICAgICAgICBwb3N0X21lbSA9IHBvc3RfbWVtICsgKHVuc2lnbmVkIGxvbmcgbG9u Zylzc3RhdHMubWVtX3VuaXQgKiBzc3RhdHMuZnJlZXN3YXA7Cj4gKyAgICAgICAgICAgIH0KPiAr ICAgICAgICB9Cj4gKyAgICAgICAgd2hpbGUgKHBpZF9saXN0W2ldICE9IDApCj4gKyAgICAgICAg ewo+ICsgICAgICAgICAgICBraWxsKHBpZF9saXN0W2ldLCBTSUdLSUxMKTsKPiArICAgICAgICAg ICAgaSsrOwo+ICsgICAgICAgIH0KPiArICAgICAgICBpZiAoZG93cml0ZSkKPiArICAgICAgICAg ICAgdHN0X3Jlc20oVFBBU1MsICIlbGx1IGtieXRlcyBhbGxvY2F0ZWQgYW5kIHVzZWQuIiwgb3Jp Z2luYWxfbWF4Ynl0ZXMvMTAyNCk7Cj4gKyAgICAgICAgZWxzZQo+ICsgICAgICAgICAgICB0c3Rf cmVzbShUUEFTUywgIiVsbHUga2J5dGVzIGFsbG9jYXRlZCBvbmx5LiIsIG9yaWdpbmFsX21heGJ5 dGVzLzEwMjQpOwo+ICAgICAgfQo+IC0gICAgaWYgKGRvd3JpdGUpCj4gLSAgICAgIHRzdF9yZXNt KFRQQVNTLCAiJWxsdSBrYnl0ZXMgYWxsb2NhdGVkIGFuZCB1c2VkLiIsIG9yaWdpbmFsX21heGJ5 dGVzLzEwMjQpOwo+IC0gICAgZWxzZQo+IC0gICAgICB0c3RfcmVzbShUUEFTUywgIiVsbHUga2J5 dGVzIGFsbG9jYXRlZCBvbmx5LiIsIG9yaWdpbmFsX21heGJ5dGVzLzEwMjQpOwo+IC0gIH0KPiAt ICBleGl0KDApOwo+IC19Cj4gXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCj4gKyAgICBmcmVl KHBpZF9saXN0KTsKPiArICAgIGV4aXQoMCk7Cj4gK30KCgotLSAKUXVhbGl0eSBBc3N1cmFuY2Ug QXNzb2NpYXRlIChLZXJuZWwpIGluClJlZCBIYXQgU29mdHdhcmUgKEJlaWppbmcpIENvLiwgUiZE IEJyYW5jaAoKVEVMOiArODYtMTAtNjI2MDgxNTAKV0VCOiBodHRwOi8vd3d3LnJlZGhhdC5jb20v Ci0tCkMtQS1TLVAtQS1SLCBDYXNwYXIgL2vDpnNwyZE6LyA7LSkKCi0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQpMZWFybiBob3cgT3JhY2xlIFJlYWwgQXBwbGljYXRpb24gQ2x1c3RlcnMgKFJBQykgT25l IE5vZGUgYWxsb3dzIGN1c3RvbWVycwp0byBjb25zb2xpZGF0ZSBkYXRhYmFzZSBzdG9yYWdlLCBz dGFuZGFyZGl6ZSB0aGVpciBkYXRhYmFzZSBlbnZpcm9ubWVudCwgYW5kLCAKc2hvdWxkIHRoZSBu ZWVkIGFyaXNlLCB1cGdyYWRlIHRvIGEgZnVsbCBtdWx0aS1ub2RlIE9yYWNsZSBSQUMgZGF0YWJh c2UgCndpdGhvdXQgZG93bnRpbWUgb3IgZGlzcnVwdGlvbgpodHRwOi8vcC5zZi5uZXQvc2Z1L29y YWNsZS1zZmRldm5sCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCkx0cC1saXN0IG1haWxpbmcgbGlzdApMdHAtbGlzdEBsaXN0cy5zb3VyY2Vmb3JnZS5uZXQK aHR0cHM6Ly9saXN0cy5zb3VyY2Vmb3JnZS5uZXQvbGlzdHMvbGlzdGluZm8vbHRwLWxpc3QK