From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 6A7D7A0563; Tue, 10 Mar 2020 03:56:03 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 7AC481BFF8; Tue, 10 Mar 2020 03:56:02 +0100 (CET) Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by dpdk.org (Postfix) with ESMTP id 17B931BFF4 for ; Tue, 10 Mar 2020 03:55:59 +0100 (CET) X-Amp-Result: UNKNOWN X-Amp-Original-Verdict: FILE UNKNOWN X-Amp-File-Uploaded: False Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 09 Mar 2020 19:55:58 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.70,535,1574150400"; d="log'?scan'208";a="353508021" Received: from fmsmsx103.amr.corp.intel.com ([10.18.124.201]) by fmsmga001.fm.intel.com with ESMTP; 09 Mar 2020 19:55:58 -0700 Received: from fmsmsx111.amr.corp.intel.com (10.18.116.5) by FMSMSX103.amr.corp.intel.com (10.18.124.201) with Microsoft SMTP Server (TLS) id 14.3.439.0; Mon, 9 Mar 2020 19:55:57 -0700 Received: from cdsmsx103.ccr.corp.intel.com (172.17.3.37) by fmsmsx111.amr.corp.intel.com (10.18.116.5) with Microsoft SMTP Server (TLS) id 14.3.439.0; Mon, 9 Mar 2020 19:55:56 -0700 Received: from cdsmsx101.ccr.corp.intel.com ([169.254.1.161]) by CDSMSX103.ccr.corp.intel.com ([169.254.5.204]) with mapi id 14.03.0439.000; Tue, 10 Mar 2020 10:55:54 +0800 From: "Zhang, XiX" To: "dev@dpdk.org" Thread-Topic: dev Digest, Vol 288, Issue 27 Thread-Index: AQHV6+KH/ITPTRevykyePdpdE4Dv+qhBLIhwgAAIy+A= Date: Tue, 10 Mar 2020 02:55:54 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: x-originating-ip: [172.17.6.105] MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 X-Content-Filtered-By: Mailman/MimeDel 2.1.15 Subject: Re: [dpdk-dev] dev Digest, Vol 288, Issue 27 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" W1BBVENIXSB2ZmlvOiBtYXAgY29udGlndW91cyBhcmVhcyBpbiBvbmUgZ28NClRlc3QtYnkgOiB4 aXguemhhbmdAaW50ZWwuY29tDQpUaGFua3MNCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0t LQ0KPiBGcm9tOiBkZXYgW21haWx0bzpkZXYtYm91bmNlc0BkcGRrLm9yZ10gT24gQmVoYWxmIE9m IGRldi0gDQo+IHJlcXVlc3RAZHBkay5vcmcNCj4gU2VudDogRmVicnVhcnkgMjUsIDIwMjAgMjE6 NTANCj4gVG86IGRldkBkcGRrLm9yZw0KPiBTdWJqZWN0OiBkZXYgRGlnZXN0LCBWb2wgMjg4LCBJ c3N1ZSAyNw0KPiANCj4gU2VuZCBkZXYgbWFpbGluZyBsaXN0IHN1Ym1pc3Npb25zIHRvDQo+IAlk ZXZAZHBkay5vcmcNCj4gDQo+IFRvIHN1YnNjcmliZSBvciB1bnN1YnNjcmliZSB2aWEgdGhlIFdv cmxkIFdpZGUgV2ViLCB2aXNpdA0KPiAJaHR0cHM6Ly9tYWlscy5kcGRrLm9yZy9saXN0aW5mby9k ZXYNCj4gb3IsIHZpYSBlbWFpbCwgc2VuZCBhIG1lc3NhZ2Ugd2l0aCBzdWJqZWN0IG9yIGJvZHkg J2hlbHAnIHRvDQo+IAlkZXYtcmVxdWVzdEBkcGRrLm9yZw0KPiANCj4gWW91IGNhbiByZWFjaCB0 aGUgcGVyc29uIG1hbmFnaW5nIHRoZSBsaXN0IGF0DQo+IAlkZXYtb3duZXJAZHBkay5vcmcNCj4g DQo+IFdoZW4gcmVwbHlpbmcsIHBsZWFzZSBlZGl0IHlvdXIgU3ViamVjdCBsaW5lIHNvIGl0IGlz IG1vcmUgc3BlY2lmaWMgdGhhbiAiUmU6DQo+IENvbnRlbnRzIG9mIGRldiBkaWdlc3QuLi4iDQo+ IA0KPiANCj4gVG9kYXkncyBUb3BpY3M6DQo+IA0KPiAgICAxLiBSZTogW1BBVENIXSBkb2MvbWx4 NTogdXBkYXRlIG1seDUgZ3VpZGUgKFRob21hcyBNb25qYWxvbikNCj4gICAgMi4gUmU6IFtQQVRD SF0gZG9jOiBkZXNjcmliZSB0aGUgcGt0bWJ1ZiBwb29sIHdpdGggcGlubmVkDQo+ICAgICAgIGV4 dGFybmFsIG1lbW9yeSAoVGhvbWFzIE1vbmphbG9uKQ0KPiAgICAzLiBbUEFUQ0hdIHZmaW86IG1h cCBjb250aWd1b3VzIGFyZWFzIGluIG9uZSBnbyAoQW5hdG9seSBCdXJha292KQ0KPiAgICA0LiBS ZTogW1JGQyAwLzZdIE5ldyBzeW5jIG1vZGVzIGZvciByaW5nIChBbmFueWV2LCBLb25zdGFudGlu KQ0KPiAgICA1LiBSZTogW1BBVENIXSB2ZmlvOiBtYXAgY29udGlndW91cyBhcmVhcyBpbiBvbmUg Z28gKFJheSBLaW5zZWxsYSkNCj4gDQo+IA0KPiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+IA0KPiBNZXNzYWdl OiAxDQo+IERhdGU6IFR1ZSwgMjUgRmViIDIwMjAgMTQ6MTk6MTAgKzAxMDANCj4gRnJvbTogVGhv bWFzIE1vbmphbG9uIDx0aG9tYXNAbW9uamFsb24ubmV0Pg0KPiBUbzogVmlhY2hlc2xhdiBPdnNp aWVua28gPHZpYWNoZXNsYXZvQG1lbGxhbm94LmNvbT4NCj4gQ2M6IGRldkBkcGRrLm9yZw0KPiBT dWJqZWN0OiBSZTogW2RwZGstZGV2XSBbUEFUQ0hdIGRvYy9tbHg1OiB1cGRhdGUgbWx4NSBndWlk ZQ0KPiBNZXNzYWdlLUlEOiA8MjEyNTQyMC5JRmtxaTZCWWNBQHhwcz4NCj4gQ29udGVudC1UeXBl OiB0ZXh0L3BsYWluOyBjaGFyc2V0PSJ1cy1hc2NpaSINCj4gDQo+IDI0LzAyLzIwMjAgMTg6NTcs IFZpYWNoZXNsYXYgT3ZzaWllbmtvOg0KPiA+IC0gbWV0YWRhdGEgbGltaXRhdGlvbiBpcyBkZXNj cmliZWQNCj4gPiAtIG5vIGlubGluZSBoaW50IGZsYWcgaXMgZGVzY3JpYmVkDQo+ID4NCj4gPiBT aWduZWQtb2ZmLWJ5OiBWaWFjaGVzbGF2IE92c2lpZW5rbyA8dmlhY2hlc2xhdm9AbWVsbGFub3gu Y29tPg0KPiA+IC0tLQ0KPiANCj4gU3BsaXQgaW4gMiBwYXRjaGVzIGFuZCBhcHBsaWVkLCB0aGFu a3MNCj4gDQo+IA0KPiANCj4gDQo+IA0KPiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0N Cj4gDQo+IE1lc3NhZ2U6IDINCj4gRGF0ZTogVHVlLCAyNSBGZWIgMjAyMCAxNDoyMjoxMyArMDEw MA0KPiBGcm9tOiBUaG9tYXMgTW9uamFsb24gPHRob21hc0Btb25qYWxvbi5uZXQ+DQo+IFRvOiBW aWFjaGVzbGF2IE92c2lpZW5rbyA8dmlhY2hlc2xhdm9AbWVsbGFub3guY29tPg0KPiBDYzogZGV2 QGRwZGsub3JnLCBvbGl2aWVyLm1hdHpANndpbmQuY29tDQo+IFN1YmplY3Q6IFJlOiBbZHBkay1k ZXZdIFtQQVRDSF0gZG9jOiBkZXNjcmliZSB0aGUgcGt0bWJ1ZiBwb29sIHdpdGgNCj4gCXBpbm5l ZAlleHRhcm5hbCBtZW1vcnkNCj4gTWVzc2FnZS1JRDogPDEzMTg5NzE3LmxWVnVHemFNalNAeHBz Pg0KPiBDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9InVzLWFzY2lpIg0KPiANCj4g MjQvMDIvMjAyMCAxODo1OCwgVmlhY2hlc2xhdiBPdnNpaWVua286DQo+ID4gRG9jdW1lbnQgdGhl IG5ldyBtYnVmIHBvb2xzIHdpdGggZXh0ZXJuYWwgcGlubmVkIGJ1ZmZlcnMuDQo+ID4NCj4gPiBT aWduZWQtb2ZmLWJ5OiBWaWFjaGVzbGF2IE92c2lpZW5rbyA8dmlhY2hlc2xhdm9AbWVsbGFub3gu Y29tPg0KPiA+IC0tLQ0KPiA+ICBkb2MvZ3VpZGVzL3Byb2dfZ3VpZGUvbWJ1Zl9saWIucnN0ICAg ICB8IDM0DQo+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCj4gDQo+IFBsZWFz ZSBzdWJtaXQgdGhpcyBkb2N1bWVudGF0aW9uIHNlcGFyYXRlbHkgZm9yIHJldmlldyBieSBPbGl2 aWVyLg0KPiANCj4gPiAgZG9jL2d1aWRlcy9yZWxfbm90ZXMvcmVsZWFzZV8yMF8wMi5yc3QgfCAg NSArKysrKw0KPiANCj4gQXBwbHlpbmcgb25seSB0aGUgcmVsZWFzZSBub3RlcyBpbiAyMC4wMiwg dGhhbmtzDQo+IA0KPiANCj4gDQo+IA0KPiANCj4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tDQo+IA0KPiBNZXNzYWdlOiAzDQo+IERhdGU6IFR1ZSwgMjUgRmViIDIwMjAgMTM6MjQ6NDgg KzAwMDANCj4gRnJvbTogQW5hdG9seSBCdXJha292IDxhbmF0b2x5LmJ1cmFrb3ZAaW50ZWwuY29t Pg0KPiBUbzogZGV2QGRwZGsub3JnDQo+IFN1YmplY3Q6IFtkcGRrLWRldl0gW1BBVENIXSB2Zmlv OiBtYXAgY29udGlndW91cyBhcmVhcyBpbiBvbmUgZ28NCj4gTWVzc2FnZS1JRDoNCj4gCTxjNjU1 MGM4ZTY2ZGJjN2E1NGEwYjQ5NWVjZGE1OGIwZWI3OWMwN2NhLjE1ODI2MzcwNzkuZ2l0LmFuYXQN Cj4gb2x5LmJ1cmFrb3ZAaW50ZWwuY29tPg0KPiANCj4gDQo+IEN1cnJlbnRseSwgd2hlbiB3ZSBh cmUgY3JlYXRpbmcgRE1BIG1hcHBpbmdzIGZvciBtZW1vcnkgdGhhdCdzIGVpdGhlciANCj4gZXh0 ZXJuYWwgb3IgaXMgYmFja2VkIGJ5IGh1Z2VwYWdlcyBpbiBJT1ZBIGFzIFBBIG1vZGUsIHdlIGFz c3VtZSB0aGF0IA0KPiBlYWNoIHBhZ2UgaXMgbmVjZXNzYXJpbHkgZGlzY29udGlndW91cy4gVGhp cyBtYXkgbm90IGFjdHVhbGx5IGJlIHRoZSANCj4gY2FzZSwgZXNwZWNpYWxseSBmb3IgZXh0ZXJu YWwgbWVtb3J5LCB3aGVyZSB0aGUgdXNlciBpcyBhYmxlIHRvIGNyZWF0ZSANCj4gdGhlaXIgb3du IElPVkEgdGFibGUgYW5kIG1ha2UgaXQgY29udGlndW91cy4gVGhpcyBpcyBhIHByb2JsZW0gYmVj YXVzZSANCj4gVkZJTyBoYXMgYSBsaW1pdGVkIG51bWJlciBvZiBETUEgbWFwcGluZ3MsIGFuZCBp dCBkb2VzIG5vdCBhcHBlYXIgdG8gDQo+IGNvbmNhdGVuYXRlIHRoZW0gYW5kIHRyZWF0cyBlYWNo IG1hcHBpbmcgYXMgc2VwYXJhdGUsIGV2ZW4gd2hlbiB0aGV5IA0KPiBjb3ZlciBhZGphY2VudCBh cmVhcy4NCj4gDQo+IEZpeCB0aGlzIHNvIHRoYXQgd2UgYWx3YXlzIG1hcCBjb250aWd1b3VzIG1l bW9yeSBpbiBhIHNpbmdsZSBjaHVuaywgYXMgDQo+IG9wcG9zZWQgdG8gbWFwcGluZyBlYWNoIHNl Z21lbnQgc2VwYXJhdGVseS4NCj4gDQo+IFNpZ25lZC1vZmYtYnk6IEFuYXRvbHkgQnVyYWtvdiA8 YW5hdG9seS5idXJha292QGludGVsLmNvbT4NCj4gLS0tDQo+ICBsaWIvbGlicnRlX2VhbC9saW51 eC9lYWwvZWFsX3ZmaW8uYyB8IDU5IA0KPiArKysrKysrKysrKysrKysrKysrKysrKysrLS0tLQ0K PiAgMSBmaWxlIGNoYW5nZWQsIDUxIGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pDQo+IA0K PiBkaWZmIC0tZ2l0IGEvbGliL2xpYnJ0ZV9lYWwvbGludXgvZWFsL2VhbF92ZmlvLmMNCj4gYi9s aWIvbGlicnRlX2VhbC9saW51eC9lYWwvZWFsX3ZmaW8uYw0KPiBpbmRleCAwMWI1ZWYzZjQyLi40 NTAyYWVmZWQzIDEwMDY0NA0KPiAtLS0gYS9saWIvbGlicnRlX2VhbC9saW51eC9lYWwvZWFsX3Zm aW8uYw0KPiArKysgYi9saWIvbGlicnRlX2VhbC9saW51eC9lYWwvZWFsX3ZmaW8uYw0KPiBAQCAt NTE0LDkgKzUxNCwxMSBAQCBzdGF0aWMgdm9pZA0KPiAgdmZpb19tZW1fZXZlbnRfY2FsbGJhY2so ZW51bSBydGVfbWVtX2V2ZW50IHR5cGUsIGNvbnN0IHZvaWQgKmFkZHIsIA0KPiBzaXplX3QgbGVu LA0KPiAgCQl2b2lkICphcmcgX19ydGVfdW51c2VkKQ0KPiAgew0KPiArCXJ0ZV9pb3ZhX3QgaW92 YV9zdGFydCwgaW92YV9leHBlY3RlZDsNCj4gIAlzdHJ1Y3QgcnRlX21lbXNlZ19saXN0ICptc2w7 DQo+ICAJc3RydWN0IHJ0ZV9tZW1zZWcgKm1zOw0KPiAgCXNpemVfdCBjdXJfbGVuID0gMDsNCj4g Kwl1aW50NjRfdCB2YV9zdGFydDsNCj4gDQo+ICAJbXNsID0gcnRlX21lbV92aXJ0Mm1lbXNlZ19s aXN0KGFkZHIpOw0KPiANCj4gQEAgLTU0NSwyMiArNTQ3LDYzIEBAIHZmaW9fbWVtX2V2ZW50X2Nh bGxiYWNrKGVudW0gcnRlX21lbV9ldmVudCB0eXBlLCANCj4gY29uc3Qgdm9pZCAqYWRkciwgc2l6 ZV90IGxlbiwgICNlbmRpZg0KPiAgCS8qIG1lbXNlZ3MgYXJlIGNvbnRpZ3VvdXMgaW4gbWVtb3J5 ICovDQo+ICAJbXMgPSBydGVfbWVtX3ZpcnQybWVtc2VnKGFkZHIsIG1zbCk7DQo+ICsNCj4gKwkv Kg0KPiArCSAqIFRoaXMgbWVtb3J5IGlzIG5vdCBndWFyYW50ZWVkIHRvIGJlIGNvbnRpZ3VvdXMs IGJ1dCBpdCBzdGlsbCBjb3VsZA0KPiArCSAqIGJlLCBvciBpdCBjb3VsZCBoYXZlIHNvbWUgc21h bGwgY29udGlndW91cyBjaHVua3MuIFNpbmNlIHRoZQ0KPiBudW1iZXINCj4gKwkgKiBvZiBWRklP IG1hcHBpbmdzIGlzIGxpbWl0ZWQsIGFuZCBWRklPIGFwcGVhcnMgdG8gbm90IGNvbmNhdGVuYXRl DQo+ICsJICogYWRqYWNlbnQgbWFwcGluZ3MsIHdlIGhhdmUgdG8gZG8gdGhpcyBvdXJzZWx2ZXMu DQo+ICsJICoNCj4gKwkgKiBTbywgZmluZCBjb250aWd1b3VzIGNodW5rcywgdGhlbiBtYXAgdGhl bS4NCj4gKwkgKi8NCj4gKwl2YV9zdGFydCA9IG1zLT5hZGRyXzY0Ow0KPiArCWlvdmFfc3RhcnQg PSBpb3ZhX2V4cGVjdGVkID0gbXMtPmlvdmE7DQo+ICAJd2hpbGUgKGN1cl9sZW4gPCBsZW4pIHsN Cj4gKwkJYm9vbCBuZXdfY29udGlnX2FyZWEgPSBtcy0+aW92YSAhPSBpb3ZhX2V4cGVjdGVkOw0K PiArCQlib29sIGxhc3Rfc2VnID0gKGxlbiAtIGN1cl9sZW4pID09IG1zLT5sZW47DQo+ICsJCWJv b2wgc2tpcF9sYXN0ID0gZmFsc2U7DQo+ICsNCj4gKwkJLyogb25seSBkbyBtYXBwaW5ncyB3aGVu IGN1cnJlbnQgY29udGlndW91cyBhcmVhIGVuZHMgKi8NCj4gKwkJaWYgKG5ld19jb250aWdfYXJl YSkgew0KPiArCQkJaWYgKHR5cGUgPT0gUlRFX01FTV9FVkVOVF9BTExPQykNCj4gKwkJCQl2Zmlv X2RtYV9tZW1fbWFwKGRlZmF1bHRfdmZpb19jZmcsDQo+IHZhX3N0YXJ0LA0KPiArCQkJCQkJaW92 YV9zdGFydCwNCj4gKwkJCQkJCWlvdmFfZXhwZWN0ZWQgLSBpb3ZhX3N0YXJ0LCAxKTsNCj4gKwkJ CWVsc2UNCj4gKwkJCQl2ZmlvX2RtYV9tZW1fbWFwKGRlZmF1bHRfdmZpb19jZmcsDQo+IHZhX3N0 YXJ0LA0KPiArCQkJCQkJaW92YV9zdGFydCwNCj4gKwkJCQkJCWlvdmFfZXhwZWN0ZWQgLSBpb3Zh X3N0YXJ0LCAwKTsNCj4gKwkJCXZhX3N0YXJ0ID0gbXMtPmFkZHJfNjQ7DQo+ICsJCQlpb3ZhX3N0 YXJ0ID0gbXMtPmlvdmE7DQo+ICsJCX0NCj4gIAkJLyogc29tZSBtZW1vcnkgc2VnbWVudHMgbWF5 IGhhdmUgaW52YWxpZCBJT1ZBICovDQo+ICAJCWlmIChtcy0+aW92YSA9PSBSVEVfQkFEX0lPVkEp IHsNCj4gIAkJCVJURV9MT0coREVCVUcsIEVBTCwgIk1lbW9yeSBzZWdtZW50IGF0ICVwIGhhcyBi YWQgSU9WQSwgDQo+IHNraXBwaW5nXG4iLA0KPiAgCQkJCQltcy0+YWRkcik7DQo+IC0JCQlnb3Rv IG5leHQ7DQo+ICsJCQlza2lwX2xhc3QgPSB0cnVlOw0KPiAgCQl9DQo+IC0JCWlmICh0eXBlID09 IFJURV9NRU1fRVZFTlRfQUxMT0MpDQo+IC0JCQl2ZmlvX2RtYV9tZW1fbWFwKGRlZmF1bHRfdmZp b19jZmcsIG1zLQ0KPiA+YWRkcl82NCwNCj4gLQkJCQkJbXMtPmlvdmEsIG1zLT5sZW4sIDEpOw0K PiAtCQllbHNlDQo+IC0JCQl2ZmlvX2RtYV9tZW1fbWFwKGRlZmF1bHRfdmZpb19jZmcsIG1zLQ0K PiA+YWRkcl82NCwNCj4gLQkJCQkJbXMtPmlvdmEsIG1zLT5sZW4sIDApOw0KPiAtbmV4dDoNCj4g KwkJaW92YV9leHBlY3RlZCA9IG1zLT5pb3ZhICsgbXMtPmxlbjsNCj4gIAkJY3VyX2xlbiArPSBt cy0+bGVuOw0KPiAgCQkrK21zOw0KPiArDQo+ICsJCS8qDQo+ICsJCSAqIGRvbid0IGNvdW50IHBy ZXZpb3VzIHNlZ21lbnQsIGFuZCBkb24ndCBhdHRlbXB0IHRvDQo+ICsJCSAqIGRlcmVmZXJlbmNl IGEgcG90ZW50aWFsbHkgaW52YWxpZCBwb2ludGVyLg0KPiArCQkgKi8NCj4gKwkJaWYgKHNraXBf bGFzdCAmJiAhbGFzdF9zZWcpIHsNCj4gKwkJCWlvdmFfZXhwZWN0ZWQgPSBpb3ZhX3N0YXJ0ID0g bXMtPmlvdmE7DQo+ICsJCQl2YV9zdGFydCA9IG1zLT5hZGRyXzY0Ow0KPiArCQl9IGVsc2UgaWYg KCFza2lwX2xhc3QgJiYgbGFzdF9zZWcpIHsNCj4gKwkJCS8qIHRoaXMgaXMgdGhlIGxhc3Qgc2Vn bWVudCBhbmQgd2UncmUgbm90IHNraXBwaW5nICovDQo+ICsJCQlpZiAodHlwZSA9PSBSVEVfTUVN X0VWRU5UX0FMTE9DKQ0KPiArCQkJCXZmaW9fZG1hX21lbV9tYXAoZGVmYXVsdF92ZmlvX2NmZywN Cj4gdmFfc3RhcnQsDQo+ICsJCQkJCQlpb3ZhX3N0YXJ0LA0KPiArCQkJCQkJaW92YV9leHBlY3Rl ZCAtIGlvdmFfc3RhcnQsIDEpOw0KPiArCQkJZWxzZQ0KPiArCQkJCXZmaW9fZG1hX21lbV9tYXAo ZGVmYXVsdF92ZmlvX2NmZywNCj4gdmFfc3RhcnQsDQo+ICsJCQkJCQlpb3ZhX3N0YXJ0LA0KPiAr CQkJCQkJaW92YV9leHBlY3RlZCAtIGlvdmFfc3RhcnQsIDApOw0KPiArCQl9DQo+ICAJfQ0KPiAg I2lmZGVmIFJURV9BUkNIX1BQQ182NA0KPiAgCWN1cl9sZW4gPSAwOw0KPiAtLQ0KPiAyLjE3LjEN Cj4gDQo+IA0KPiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gDQo+IE1lc3NhZ2U6 IDQNCj4gRGF0ZTogVHVlLCAyNSBGZWIgMjAyMCAxMzo0MToxNCArMDAwMA0KPiBGcm9tOiAiQW5h bnlldiwgS29uc3RhbnRpbiIgPGtvbnN0YW50aW4uYW5hbnlldkBpbnRlbC5jb20+DQo+IFRvOiBT dGVwaGVuIEhlbW1pbmdlciA8c3RlcGhlbkBuZXR3b3JrcGx1bWJlci5vcmc+LCBKZXJpbiBKYWNv Yg0KPiAJPGplcmluamFjb2JrQGdtYWlsLmNvbT4NCj4gQ2M6IGRwZGstZGV2IDxkZXZAZHBkay5v cmc+LCBPbGl2aWVyIE1hdHogPG9saXZpZXIubWF0ekA2d2luZC5jb20+LA0KPiAJImRyY0BsaW51 eC52bmV0LmlibS5jb20iIDxkcmNAbGludXgudm5ldC5pYm0uY29tPg0KPiBTdWJqZWN0OiBSZTog W2RwZGstZGV2XSBbUkZDIDAvNl0gTmV3IHN5bmMgbW9kZXMgZm9yIHJpbmcNCj4gTWVzc2FnZS1J RDoNCj4gCTxTTjZQUjExTUIyNTU4NDVGQjY2NjVDMkEyRDVENzZEMjI5QUVEMEBTTjZQUjExTUIy NTU4Lg0KPiBuYW1wcmQxMS5wcm9kLm91dGxvb2suY29tPg0KPiANCj4gQ29udGVudC1UeXBlOiB0 ZXh0L3BsYWluOyBjaGFyc2V0PSJ1cy1hc2NpaSINCj4gDQo+ID4gPiA+ID4gVXBmcm9udCBub3Rl IC0gdGhhdCBSRkMgaXMgbm90IGEgY29tcGxldGUgcGF0Y2guDQo+ID4gPiA+ID4gSXQgaW50cm9k dWNlcyBhbiBBQkkgYnJlYWthZ2UsIHBsdXMgaXQgZG9lc24ndCB1cGRhdGUgDQo+ID4gPiA+ID4g cmluZ19lbGVtIGNvZGUgcHJvcGVybHksIGV0Yy4NCj4gPiA+ID4gPiBJIHBsYW4gdG8gZGVhbCB3 aXRoIGFsbCB0aGVzZSB0aGluZ3MgaW4gbGF0ZXIgdmVyc2lvbnMuDQo+ID4gPiA+ID4gUmlnaHQg bm93IEkgc2VlayBhbiBpbml0aWFsIGZlZWRiYWNrIGFib3V0IHByb3Bvc2VkIGlkZWFzLg0KPiA+ ID4gPiA+IFdvdWxkIGFsc28gYXNrIHBlb3BsZSB0byByZXBlYXQgcGVyZm9ybWFuY2UgdGVzdHMg KHNlZSBiZWxvdykgDQo+ID4gPiA+ID4gb24gdGhlaXIgcGxhdGZvcm1zIHRvIGNvbmZpcm0gdGhl IGltcGFjdC4NCj4gPiA+ID4gPg0KPiA+ID4gPiA+IE1vcmUgYW5kIG1vcmUgY3VzdG9tZXJzIHVz ZSgvdHJ5IHRvIHVzZSkgRFBESyBiYXNlZCBhcHBzIA0KPiA+ID4gPiA+IHdpdGhpbiBvdmVyY29t bWl0dGVkIHN5c3RlbXMgKG11bHRpcGxlIGFjdHRpdmUgdGhyZWFkcyBvdmVyIA0KPiA+ID4gPiA+ IHNhbWUgcHlzaWNhbA0KPiBjb3Jlcyk6DQo+ID4gPiA+ID4gVk0sIGNvbnRhaW5lciBkZXBsb3lt ZW50cywgZXRjLg0KPiA+ID4gPiA+IE9uZSBxdWl0ZSBjb21tb24gcHJvYmxlbSB0aGV5IGhpdDog TG9jay1Ib2xkZXItUHJlZW1wdGlvbiB3aXRoDQo+IHJ0ZV9yaW5nLg0KPiA+ID4gPiA+IExIUCBp cyBxdWl0ZSBhIGNvbW1vbiBwcm9ibGVtIGZvciBzcGluLWJhc2VkIHN5bmMgcHJpbWl0aXZlcyAN Cj4gPiA+ID4gPiAoc3Bpbi1sb2NrcywgZXRjLikgb24gb3ZlcmNvbW1pdHRlZCBzeXN0ZW1zLg0K PiA+ID4gPiA+IFRoZSBzaXR1YXRpb24gZ2V0cyBtdWNoIHdvcnNlIHdoZW4gc29tZSBzb3J0IG9m IGZhaXItbG9ja2luZyANCj4gPiA+ID4gPiB0ZWNobmlxdWUgaXMgdXNlZCAodGlja2V0LWxvY2ss IGV0Yy4pLg0KPiA+ID4gPiA+IEFzIG5vdyBub3Qgb25seSBsb2NrLW93bmVyIGJ1dCBhbHNvIGxv Y2std2FpdGVycyBzY2hlZHVsaW5nIA0KPiA+ID4gPiA+IG9yZGVyIG1hdHRlcnMgYSBsb3QuDQo+ ID4gPiA+ID4gVGhpcyBpcyBhIHdlbGwta25vd24gcHJvYmxlbSBmb3Iga2VybmVsIHdpdGhpbiBW TXM6DQo+ID4gPiA+ID4gaHR0cDovL3d3dy0NCj4gYXJjaGl2ZS54ZW5wcm9qZWN0Lm9yZy9maWxl cy94ZW5zdW1taXRib3N0b24wOC9MSFAucGRmDQo+ID4gPiA+ID4gaHR0cHM6Ly93d3cuY3MuaHMt DQo+IHJtLmRlL35rYWlzZXIvZXZlbnRzL3dhbW9zMjAxNy9TbGlkZXMvc2VsY3VrLnBkZg0KPiA+ ID4gPiA+IFRoZSBwcm9ibGVtIHdpdGggcnRlX3JpbmcgaXMgdGhhdCB3aGlsZSBoZWFkIGFjY3Vz aW9uIGlzIHNvcnQgDQo+ID4gPiA+ID4gb2YgdW4tZmFpciBsb2NraW5nLCB3YWl0aW5nIG9uIHRh aWwgaXMgdmVyeSBzaW1pbGFyIHRvIHRpY2tldCANCj4gPiA+ID4gPiBsb2NrIHNjaGVtYSAtIHRh aWwgaGFzIHRvIGJlIHVwZGF0ZWQgaW4gcGFydGljdWxhciBvcmRlci4NCj4gPiA+ID4gPiBUaGF0 IG1ha2VzIGN1cnJlbnQgcnRlX3JpbmcgaW1wbGVtZW50YXRpb24gdG8gcGVyZm9ybSByZWFsbHkg DQo+ID4gPiA+ID4gcHVyZSBvbiBzb21lIG92ZXJjb21taXRlZCBzY2VuYXJpb3MuDQo+ID4gPiA+ DQo+ID4gPiA+IFJhdGhlciB0aGFuIHJlZm9ybSBydGVfcmluZyB0byBmaXQgdGhpcyBzY2VuYXJp bywgaXQgd291bGQgbWFrZSANCj4gPiA+ID4gbW9yZSBzZW5zZSB0byBtZSB0byBpbnRyb2R1Y2Ug YW5vdGhlciBwcmltaXRpdmUuDQo+IA0KPiBJIGRvbid0IHNlZSBtdWNoIGFkdmFudGFnZXMgaXQg d2lsbCBicmluZyB1cy4NCj4gQXMgYSBkaXNhZHZhbnRhZ2VzLCBmb3IgZGV2ZWxvcGVycyBhbmQg bWFpbnRhaW5lcnMgLSBjb2RlIGR1cGxpY2F0aW9uLCANCj4gZm9yIGVuZCB1c2VycyAtIGV4dHJh IGNvZGUgY2h1cm4gYW5kIHJlbW92ZWQgYWJpbGl0eSB0byBtaXggYW5kIG1hdGNoIA0KPiBkaWZm ZXJlbnQgc3luYyBtb2RlcyBpbiBvbmUgcmluZy4NCj4gDQo+ID4gVGhlIGN1cnJlbnQgbG9ja2xl c3MNCj4gPiA+ID4gcmluZyBwZXJmb3JtcyB2ZXJ5IHdlbGwgZm9yIHRoZSBpc29sYXRlZCB0aHJl YWQgbW9kZWwgdGhhdCBEUERLIA0KPiA+ID4gPiB3YXMgYnVpbHQgYXJvdW5kLiBUaGlzIGxvb2tz IGxpa2UgYSBjYXNlIG9mIGN1c3RvbWVycyB2aW9sYXRpbmcgDQo+ID4gPiA+IHRoZSB1c2FnZSBt b2RlbCBvZiB0aGUgRFBESyBhbmQgdGhlbiBiZWluZyBzdXJwcmlzZWQgYXQgdGhlIGZhbGxvdXQu DQo+IA0KPiBGb3IgY3VzdG9tZXJzIHVzaW5nIGlzb2xhdGVkIHRocmVhZCBtb2RlbCAtIG5vdGhp bmcgc2hvdWxkIGNoYW5nZSANCj4gKGJvdGggaW4gdGVybXMgb2YgQVBJIGFuZCBwZXJmb3JtYW5j ZSkuDQo+IEV4aXN0aW5nIHN5bmMgbW9kZXMgTVAvTUMsU1AvU0Mga2VwdCB1bnRvdWNoZWQsIHNl dCB1cCBpbiB0aGUgc2FtZSB3YXkgDQo+ICh2aWEgZmxhZ3MgYW5kIF9pbml0XyksIGFuZCBNUC9N QyByZW1haW5zIGFzIGRlZmF1bHQgb25lLg0KPiA+RnJvbSBvdGhlciBzaWRlIEkgZG9uJ3Qgc2Vl IHdoeSB3ZSBzaG91bGQgaWdub3JlIGN1c3RvbWVycyB0aGF0IHdhbnQgDQo+ID50bw0KPiB1c2UN Cj4gdGhlaXIgRFBESyBhcHBzIGluIGRpZmZlcmVudCBkZXBsb3ltZW50IHNjZW5hcmlvcy4NCj4g DQo+ID4gPg0KPiA+ID4gSSBhZ3JlZSB3aXRoIFN0ZXBoZW4gaGVyZS4NCj4gPiA+DQo+ID4gPiBJ IHRoaW5rLCBhZGRpbmcgbW9yZSBydW50aW1lIGNoZWNrIGluIHRoZSBlbnF1ZXVlKCkgYW5kIGRl cXVldWUoKSANCj4gPiA+IHdpbGwgaGF2ZSBhIGJhZCBlZmZlY3Qgb24gdGhlIGxvdy1lbmQgY29y ZXMgdG9vLg0KPiANCj4gV2UgZG8gaGF2ZSBhIHJ1bi10aW1lIGNoZWNrIGluIG91ciBjdXJyZW50 IGVucXVldWUoKS9kZXF1ZXVlIA0KPiBpbXBsZW1lbnRhdGlvbi4NCj4gSW4gZmFjdCB3ZSBzdXBw b3J0IGJvdGggbW9kZXM6IHdlIGhhdmUgZ2VuZXJpYw0KPiBydGVfcmluZ19lbnF1ZXVlKC9kZXF1 ZXVlKV9idWxrKC9idXJzdCkNCj4gd2hlcmUgc3luYyBiZWhhdmlvdXIgaXMgZGV0ZXJtaW5lZCBh dCBydW50aW1lIGJ5IHZhbHVlIG9mIA0KPiBwcm9kKC9jb25zKS5zaW5nbGUuDQo+IE9yIHVzZXIg Y2FuIGNhbGwgIHJ0ZV9yaW5nXyhtcC9zcClfZW5xdWV1ZV8qIGZ1bmN0aW9ucyBkaXJlY3RseS4N Cj4gVGhpcyBSRkMgZm9sbG93cyBleGFjdGx5IHRoZSBzYW1lIHBhcmFkaWdtOg0KPiBydGVfcmlu Z19lbnF1ZXVlKC9kZXF1ZXVlKV9idWxrKC9idXJzdCkga2VwdCBnZW5lcmljIGFuZCBpdCdzIA0K PiBiZWhhdmlvdXIgaXMgZGV0ZXJtaW5lZCBhdCBydW50aW1lLCBieSB2YWx1ZSBvZiBwcm9kKC9j b25zKS5zeW5jX3R5cGUuDQo+IE9yIHVzZXIgY2FuIGNhbGwgZW5xdWV1ZS9kZXF1ZXVlIHdpdGgg cGFydGljdWxhciBzeW5jIG1vZGUgZGlyZWN0bHk6DQo+IHJ0ZV9yaW5nXyhtcC9zcC9ydHMvaHRz KV9lbnF1ZXVlXyhidWxrL2J1cnN0KSouDQo+IFRoZSBvbmx5IHRoaW5nIHRoYXQgY2hhbmdlZDoN Cj4gIEZvcm1hdCBvZiBwcm9kL2NvbnMgbm93IGNvdWxkIGRpZmZlciBkZXBlbmRpbmcgb24gbW9k ZSBzZWxlY3RlZCBhdCBfaW5pdF8uDQo+ICBTbyB5b3UgY2FuJ3QgY3JlYXRlIGEgcmluZyBmb3Ig bGV0IHNheSBTUCBtb2RlIGFuZCB0aGVuIGluIHRoZSBtaWRkbGUgDQo+IG9mIGRhdGEtIHBhdGgg IGNoYW5nZSB5b3VyIG1pbmQgYW5kIHN0YXJ0IHVzaW5nIE1QX1JUUyBtb2RlLg0KPiAgRm9yIGV4 aXN0aW5nIG1vZGVzIChTUC9NUCwgU0MvTUMpICBmb3JtYXQgcmVtYWlucyB0aGUgc2FtZSBhbmQg dXNlciANCj4gY2FuIHN0aWxsICB1c2UgdGhlbSBpbnRlcmNoYW5nZWFibHksIHRob3VnaCBvZiBj b3Vyc2UgdGhhdCBpcyBhbiBlcnJvciANCj4gcHJvbmUgcHJhY3RpY2UuDQo+IA0KPiA+ID4gQnV0 IEkgYWdyZWUgd2l0aCB0aGUgcHJvYmxlbSBzdGF0ZW1lbnQgdGhhdCBpbiB0aGUgdmlydHVhbGl6 YXRpb24gDQo+ID4gPiB1c2UgY2FzZSwgSXQgbWF5IGJlIHBvc3NpYmxlIHRvIGhhdmUgTiB2aXJ0 dWFsIGNvcmVzIHJ1bnMgb24gYSANCj4gPiA+IHBoeXNpY2FsIGNvcmUuDQo+ID4gPg0KPiA+ID4g SU1PLCBUaGUgYmVzdCBzb2x1dGlvbiB3b3VsZCBiZSBrZWVwaW5nIHRoZSByaW5nIEFQSSBzYW1l IGFuZCBoYXZlIA0KPiA+ID4gYSBkaWZmZXJlbnQgZmxhdm9yIGluICJjb21waWxlLXRpbWUiLiBT b21ldGhpbmcgbGlrZSBsaWJ1cmN1IGRpZCANCj4gPiA+IGZvciBhY2NvbW1vZGF0aW5nIGRpZmZl cmVudCBmbGF2b3JzLg0KPiA+ID4NCj4gPiA+IGkuZSB1cmN1LXFzYnIuaCBhbmQgdXJjdS1icC5o IHdpbGwgaWRlbnRpY2FsIGRlZmluaXRpb24gb2YgQVBJLiANCj4gPiA+IFRoZSBhcHBsaWNhdGlv biBjYW4gc2ltcGx5IGluY2x1ZGUgT05FIGhlYWRlciBmaWxlIGluIGEgQyBmaWxlIA0KPiA+ID4g YmFzZWQgb24gdGhlIGZsYXZvci4NCj4gDQo+IEkgZG9uJ3QgdGhpbmsgaXQgaXMgYSBmbGV4aWJs ZSBlbm91Z2ggYXBwcm9hY2guDQo+IEluIG9uZSBhcHAgdXNlciBtaWdodCBuZWVkIHRvIGhhdmUg c2V2ZXJhbCByaW5ncyB3aXRoIGRpZmZlcmVudCBzeW5jIG1vZGVzLg0KPiBPciBldmVuIHVzZXIg bWlnaHQgbmVlZCBhIHJpbmcgd2l0aCBkaWZmZXJlbnQgc3luYyBtb2RlcyBmb3IgDQo+IGVucXVl dWUvZGVxdWV1ZS4NCj4gDQo+ID4gPiBJZiBuZWVkIGJvdGggYXQgcnVudGltZS4gTmVlZCB0byBo YXZlIGZ1bmN0aW9uIHBvaW50ZXIgb3Igc28gaW4gDQo+ID4gPiB0aGUgYXBwbGljYXRpb24gYW5k IGRlZmluZSB0aGUgZnVuY3Rpb24gaW4gZGlmZmVyZW50IGMgZmlsZSBieSANCj4gPiA+IGluY2x1 ZGluZyB0aGUgYXBwcm9haXRlIGZsYXZvciBpbiBDIGZpbGUuDQo+IA0KPiBCaWcgaXNzdWUgd2l0 aCBmdW5jdGlvbiBwb2ludGVycyBoZXJlIHdvdWxkIGJlIERQREsgTVAgbW9kZWwuDQo+IEFGQUlL LCAgcnRlX3JpbmcgaXMgcXVpdGUgcG9wdWxhciBtZWNoYW5pc20gZm9yIElQQyBiZXR3ZWVuIERQ REsgYXBwcy4NCj4gVG8gc3VwcG9ydCBzdWNoIG1vZGVsLCB3ZSdsbCBuZWVkIHRvIHNwbGl0IHJ0 ZV9yaW5nIGRhdGEgaW50byAnc2hhcmVkJw0KPiBhbmQgJ3ByaXZhdGUnIGFuZCBpbml0aWFsaXpl IHByaXZhdGUgb25lIGZvciBldmVyeSBwcm9jZXNzIHRoYXQgaXMgZ29pbmcgdG8gdXNlIGl0Lg0K PiBUaGF0IHNvdW5kcyBsaWtlIGEgbWFzc2l2ZSBjaGFuZ2UsIGFuZCBJIGFtIG5vdCBzdXJlIHRo ZSByZXF1aXJlZCANCj4gZWZmb3J0IHdpbGwgd29ydGggaXQuDQo+IEJUVywgaWYgdXNlciBqdXN0 IGNhbGxzIEFQSSBmdW5jdGlvbnMgd2l0aG91dCB0cnlpbmcgdG8gYWNjZXNzIA0KPiBzdHJ1Y3R1 cmUgaW50ZXJuYWxzIGRpcmVjdGx5LCBJIGRvbid0IHRoaW5rIGl0IHdvdWxkIGJlIGEgYmlnIA0K PiBkaWZmZXJlbmNlIGZvciBoaW0gd2hhdCBpcyBpbnNpZGU6DQo+IGluZGlyZWN0IGZ1bmN0aW9u IGNhbGwgb3IgaW5saW5lZCBzd2l0Y2goLi4uKSB7fS4NCj4gDQo+ID4gVGhpcyB3b3VsZCBhbHNv IGJlIGEgZ29vZCB0aW1lIHRvIGNvbnNpZGVyIHRoZSB0cmFkZW9mZnMgb2YgdGhlIA0KPiA+IGhl YXZ5IHVzZSBvZiBpbmxpbmluZyB0aGF0IGlzIGRvbmUgaW4gcnRlX3JpbmcgdnMgdGhlIGltcGFj dCB0aGF0IA0KPiA+IGhhcyBvbiBBUEkvQUJJIHN0YWJpbGl0eS4NCj4gDQo+IFllcywgaGlkaW5n IHJ0ZV9yaW5nIGltcGxlbWVudGF0aW9uIGluc2lkZSAuYyB3b3VsZCBoZWxwIGEgbG90IGluIA0K PiB0ZXJtcyBvZiBBQkkgbWFpbnRlbmFuY2UgYW5kIHdvdWxkIG1ha2Ugb3VyIGZ1dHVyZSBsaWZl IGVhc2llci4NCj4gVGhlIHF1ZXN0aW9uIGlzIHdoYXQgaXMgdGhlIHByaWNlIGZvciBpdCBpbiB0 ZXJtcyBvZiBwZXJmb3JtYW5jZSwgYW5kIA0KPiBhcmUgd2UgcmVhZHkgdG8gcGF5IGl0LiBOb3Qg dG8gbWVudGlvbiB0aGF0IGl0IHdvdWxkIGNhdXNlIGNoYW5nZXMgaW4gDQo+IG1hbnkgb3RoZXIg bGlicy9hcHBzLi4uDQo+IFNvIEkgdGhpbmsgaXQgc2hvdWxkIGJlIGEgc3ViamVjdCBmb3IgYSBz ZXBhcmF0ZSBkaXNjdXNzaW9uLg0KPiBCdXQsIGFncmVlIGl0IHdvdWxkIGJlIGdvb2QgYXQgbGVh c3QgdG8gbWVhc3VyZSB0aGUgcGVyZm9ybWFuY2UgaW1wYWN0IA0KPiBvZiBzdWNoIGNoYW5nZS4N Cj4gSWYgSSdsbCBoYXZlIHNvbWUgc3BhcmUgY3ljbGVzLCB3aWxsIGdpdmUgaXQgYSB0cnkuDQo+ IE1lYW53aGlsZSwgY2FuIEkgYXNrIEplcmluIGFuZCBvdGhlciBndXlzIHRvIHJlcGVhdCB0ZXN0 cyBmcm9tIHRoaXMgDQo+IFJGQyBvbiB0aGVpciBIVz8gQmVmb3JlIGNvbnRpbnVpbmcgZGlzY3Vz c2lvbiB3b3VsZCBwcm9iYWJseSBiZSBnb29kIA0KPiB0byBrbm93IGRvZXMgdGhlIHN1Z2dlc3Rl ZCBwYXRjaCB3b3JrIGFzIGV4cGVjdGVkIGFjcm9zcyBkaWZmZXJlbnQgcGxhdGZvcm1zLg0KPiBU aGFua3MNCj4gS29uc3RhbnRpbg0KPiANCj4gDQo+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQ0KPiANCj4gTWVzc2FnZTogNQ0KPiBEYXRlOiBUdWUsIDI1IEZlYiAyMDIwIDEzOjQ5OjM4 ICswMDAwDQo+IEZyb206IFJheSBLaW5zZWxsYSA8bWRyQGFzaHJvZS5ldT4NCj4gVG86IEFuYXRv bHkgQnVyYWtvdiA8YW5hdG9seS5idXJha292QGludGVsLmNvbT4sIGRldkBkcGRrLm9yZw0KPiBT dWJqZWN0OiBSZTogW2RwZGstZGV2XSBbUEFUQ0hdIHZmaW86IG1hcCBjb250aWd1b3VzIGFyZWFz IGluIG9uZSBnbw0KPiBNZXNzYWdlLUlEOiA8Mjc2Yzg1ZWQtYWMyZi01MmM5LWRmZmMtMThjZTQx YWIwZjM1QGFzaHJvZS5ldT4NCj4gQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PXV0 Zi04DQo+IA0KPiBIaSBBbmF0b2x5LA0KPiANCj4gT24gMjUvMDIvMjAyMCAxMzoyNCwgQW5hdG9s eSBCdXJha292IHdyb3RlOg0KPiA+IEN1cnJlbnRseSwgd2hlbiB3ZSBhcmUgY3JlYXRpbmcgRE1B IG1hcHBpbmdzIGZvciBtZW1vcnkgdGhhdCdzIA0KPiA+IGVpdGhlciBleHRlcm5hbCBvciBpcyBi YWNrZWQgYnkgaHVnZXBhZ2VzIGluIElPVkEgYXMgUEEgbW9kZSwgd2UgDQo+ID4gYXNzdW1lIHRo YXQgZWFjaCBwYWdlIGlzIG5lY2Vzc2FyaWx5IGRpc2NvbnRpZ3VvdXMuIFRoaXMgbWF5IG5vdCAN Cj4gPiBhY3R1YWxseSBiZSB0aGUgY2FzZSwgZXNwZWNpYWxseSBmb3IgZXh0ZXJuYWwgbWVtb3J5 LCB3aGVyZSB0aGUgdXNlciANCj4gPiBpcyBhYmxlIHRvIGNyZWF0ZSB0aGVpciBvd24gSU9WQSB0 YWJsZSBhbmQgbWFrZSBpdCBjb250aWd1b3VzLiBUaGlzIA0KPiA+IGlzIGEgcHJvYmxlbSBiZWNh dXNlIFZGSU8gaGFzIGEgbGltaXRlZCBudW1iZXIgb2YgRE1BIG1hcHBpbmdzLCBhbmQgDQo+ID4g aXQgZG9lcyBub3QgYXBwZWFyIHRvIGNvbmNhdGVuYXRlIHRoZW0gYW5kIHRyZWF0cyBlYWNoIG1h cHBpbmcgYXMgDQo+ID4gc2VwYXJhdGUsIGV2ZW4gd2hlbiB0aGV5IGNvdmVyIGFkamFjZW50IGFy ZWFzLg0KPiA+ID4gRml4IHRoaXMgc28gdGhhdCB3ZSBhbHdheXMgbWFwIGNvbnRpZ3VvdXMgbWVt b3J5IGluIGEgc2luZ2xlDQo+ID4gY2h1bmssIGFzIG9wcG9zZWQgdG8gbWFwcGluZyBlYWNoIHNl Z21lbnQgc2VwYXJhdGVseS4NCj4gDQo+IENhbiBJIGNvbmZpcm0gbXkgdW5kZXJzdGFuZGluZy4N Cj4gDQo+IFdlIGFyZSBlc3NlbnRpYWxseSBjb3JyZWN0aW5nIHVzZXIgZXJyYW50IGJlaGF2aW9y LCB0cmFkaW5nIG9mZiANCj4gc3RhcnR1cC9tYXBwaW5nIHRpbWUgdG8gc2F2ZSBJT01NVSByZXNv dXJjZXM/DQo+IA0KPiA+DQo+ID4gU2lnbmVkLW9mZi1ieTogQW5hdG9seSBCdXJha292IDxhbmF0 b2x5LmJ1cmFrb3ZAaW50ZWwuY29tPg0KPiA+IC0tLQ0KPiA+ICBsaWIvbGlicnRlX2VhbC9saW51 eC9lYWwvZWFsX3ZmaW8uYyB8IDU5IA0KPiA+ICsrKysrKysrKysrKysrKysrKysrKysrKystLS0t DQo+ID4gIDEgZmlsZSBjaGFuZ2VkLCA1MSBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQ0K PiA+DQo+ID4gZGlmZiAtLWdpdCBhL2xpYi9saWJydGVfZWFsL2xpbnV4L2VhbC9lYWxfdmZpby5j DQo+IGIvbGliL2xpYnJ0ZV9lYWwvbGludXgvZWFsL2VhbF92ZmlvLmMNCj4gPiBpbmRleCAwMWI1 ZWYzZjQyLi40NTAyYWVmZWQzIDEwMDY0NA0KPiA+IC0tLSBhL2xpYi9saWJydGVfZWFsL2xpbnV4 L2VhbC9lYWxfdmZpby5jDQo+ID4gKysrIGIvbGliL2xpYnJ0ZV9lYWwvbGludXgvZWFsL2VhbF92 ZmlvLmMNCj4gPiBAQCAtNTE0LDkgKzUxNCwxMSBAQCBzdGF0aWMgdm9pZA0KPiA+ICB2ZmlvX21l bV9ldmVudF9jYWxsYmFjayhlbnVtIHJ0ZV9tZW1fZXZlbnQgdHlwZSwgY29uc3Qgdm9pZCAqYWRk ciwNCj4gc2l6ZV90IGxlbiwNCj4gPiAgCQl2b2lkICphcmcgX19ydGVfdW51c2VkKQ0KPiA+ICB7 DQo+ID4gKwlydGVfaW92YV90IGlvdmFfc3RhcnQsIGlvdmFfZXhwZWN0ZWQ7DQo+ID4gIAlzdHJ1 Y3QgcnRlX21lbXNlZ19saXN0ICptc2w7DQo+ID4gIAlzdHJ1Y3QgcnRlX21lbXNlZyAqbXM7DQo+ ID4gIAlzaXplX3QgY3VyX2xlbiA9IDA7DQo+ID4gKwl1aW50NjRfdCB2YV9zdGFydDsNCj4gPg0K PiA+ICAJbXNsID0gcnRlX21lbV92aXJ0Mm1lbXNlZ19saXN0KGFkZHIpOw0KPiA+DQo+ID4gQEAg LTU0NSwyMiArNTQ3LDYzIEBAIHZmaW9fbWVtX2V2ZW50X2NhbGxiYWNrKGVudW0NCj4gcnRlX21l bV9ldmVudCB0eXBlLCBjb25zdCB2b2lkICphZGRyLCBzaXplX3QgbGVuLA0KPiA+ICAjZW5kaWYN Cj4gPiAgCS8qIG1lbXNlZ3MgYXJlIGNvbnRpZ3VvdXMgaW4gbWVtb3J5ICovDQo+ID4gIAltcyA9 IHJ0ZV9tZW1fdmlydDJtZW1zZWcoYWRkciwgbXNsKTsNCj4gPiArDQo+ID4gKwkvKg0KPiA+ICsJ ICogVGhpcyBtZW1vcnkgaXMgbm90IGd1YXJhbnRlZWQgdG8gYmUgY29udGlndW91cywgYnV0IGl0 IHN0aWxsIGNvdWxkDQo+ID4gKwkgKiBiZSwgb3IgaXQgY291bGQgaGF2ZSBzb21lIHNtYWxsIGNv bnRpZ3VvdXMgY2h1bmtzLiBTaW5jZSB0aGUNCj4gbnVtYmVyDQo+ID4gKwkgKiBvZiBWRklPIG1h cHBpbmdzIGlzIGxpbWl0ZWQsIGFuZCBWRklPIGFwcGVhcnMgdG8gbm90IGNvbmNhdGVuYXRlDQo+ ID4gKwkgKiBhZGphY2VudCBtYXBwaW5ncywgd2UgaGF2ZSB0byBkbyB0aGlzIG91cnNlbHZlcy4N Cj4gPiArCSAqDQo+ID4gKwkgKiBTbywgZmluZCBjb250aWd1b3VzIGNodW5rcywgdGhlbiBtYXAg dGhlbS4NCj4gPiArCSAqLw0KPiA+ICsJdmFfc3RhcnQgPSBtcy0+YWRkcl82NDsNCj4gPiArCWlv dmFfc3RhcnQgPSBpb3ZhX2V4cGVjdGVkID0gbXMtPmlvdmE7DQo+ID4gIAl3aGlsZSAoY3VyX2xl biA8IGxlbikgew0KPiA+ICsJCWJvb2wgbmV3X2NvbnRpZ19hcmVhID0gbXMtPmlvdmEgIT0gaW92 YV9leHBlY3RlZDsNCj4gPiArCQlib29sIGxhc3Rfc2VnID0gKGxlbiAtIGN1cl9sZW4pID09IG1z LT5sZW47DQo+ID4gKwkJYm9vbCBza2lwX2xhc3QgPSBmYWxzZTsNCj4gPiArDQo+ID4gKwkJLyog b25seSBkbyBtYXBwaW5ncyB3aGVuIGN1cnJlbnQgY29udGlndW91cyBhcmVhIGVuZHMgKi8NCj4g PiArCQlpZiAobmV3X2NvbnRpZ19hcmVhKSB7DQo+ID4gKwkJCWlmICh0eXBlID09IFJURV9NRU1f RVZFTlRfQUxMT0MpDQo+ID4gKwkJCQl2ZmlvX2RtYV9tZW1fbWFwKGRlZmF1bHRfdmZpb19jZmcs DQo+IHZhX3N0YXJ0LA0KPiA+ICsJCQkJCQlpb3ZhX3N0YXJ0LA0KPiA+ICsJCQkJCQlpb3ZhX2V4 cGVjdGVkIC0gaW92YV9zdGFydCwgMSk7DQo+ID4gKwkJCWVsc2UNCj4gPiArCQkJCXZmaW9fZG1h X21lbV9tYXAoZGVmYXVsdF92ZmlvX2NmZywNCj4gdmFfc3RhcnQsDQo+ID4gKwkJCQkJCWlvdmFf c3RhcnQsDQo+ID4gKwkJCQkJCWlvdmFfZXhwZWN0ZWQgLSBpb3ZhX3N0YXJ0LCAwKTsNCj4gPiAr CQkJdmFfc3RhcnQgPSBtcy0+YWRkcl82NDsNCj4gPiArCQkJaW92YV9zdGFydCA9IG1zLT5pb3Zh Ow0KPiA+ICsJCX0NCj4gPiAgCQkvKiBzb21lIG1lbW9yeSBzZWdtZW50cyBtYXkgaGF2ZSBpbnZh bGlkIElPVkEgKi8NCj4gPiAgCQlpZiAobXMtPmlvdmEgPT0gUlRFX0JBRF9JT1ZBKSB7DQo+ID4g IAkJCVJURV9MT0coREVCVUcsIEVBTCwgIk1lbW9yeSBzZWdtZW50IGF0ICVwIGhhcw0KPiBiYWQg SU9WQSwgc2tpcHBpbmdcbiIsDQo+ID4gIAkJCQkJbXMtPmFkZHIpOw0KPiA+IC0JCQlnb3RvIG5l eHQ7DQo+ID4gKwkJCXNraXBfbGFzdCA9IHRydWU7DQo+ID4gIAkJfQ0KPiA+IC0JCWlmICh0eXBl ID09IFJURV9NRU1fRVZFTlRfQUxMT0MpDQo+ID4gLQkJCXZmaW9fZG1hX21lbV9tYXAoZGVmYXVs dF92ZmlvX2NmZywgbXMtDQo+ID5hZGRyXzY0LA0KPiA+IC0JCQkJCW1zLT5pb3ZhLCBtcy0+bGVu LCAxKTsNCj4gPiAtCQllbHNlDQo+ID4gLQkJCXZmaW9fZG1hX21lbV9tYXAoZGVmYXVsdF92Zmlv X2NmZywgbXMtDQo+ID5hZGRyXzY0LA0KPiA+IC0JCQkJCW1zLT5pb3ZhLCBtcy0+bGVuLCAwKTsN Cj4gPiAtbmV4dDoNCj4gPiArCQlpb3ZhX2V4cGVjdGVkID0gbXMtPmlvdmEgKyBtcy0+bGVuOw0K PiA+ICAJCWN1cl9sZW4gKz0gbXMtPmxlbjsNCj4gPiAgCQkrK21zOw0KPiA+ICsNCj4gPiArCQkv Kg0KPiA+ICsJCSAqIGRvbid0IGNvdW50IHByZXZpb3VzIHNlZ21lbnQsIGFuZCBkb24ndCBhdHRl bXB0IHRvDQo+ID4gKwkJICogZGVyZWZlcmVuY2UgYSBwb3RlbnRpYWxseSBpbnZhbGlkIHBvaW50 ZXIuDQo+ID4gKwkJICovDQo+ID4gKwkJaWYgKHNraXBfbGFzdCAmJiAhbGFzdF9zZWcpIHsNCj4g PiArCQkJaW92YV9leHBlY3RlZCA9IGlvdmFfc3RhcnQgPSBtcy0+aW92YTsNCj4gPiArCQkJdmFf c3RhcnQgPSBtcy0+YWRkcl82NDsNCj4gPiArCQl9IGVsc2UgaWYgKCFza2lwX2xhc3QgJiYgbGFz dF9zZWcpIHsNCj4gPiArCQkJLyogdGhpcyBpcyB0aGUgbGFzdCBzZWdtZW50IGFuZCB3ZSdyZSBu b3Qgc2tpcHBpbmcgKi8NCj4gPiArCQkJaWYgKHR5cGUgPT0gUlRFX01FTV9FVkVOVF9BTExPQykN Cj4gPiArCQkJCXZmaW9fZG1hX21lbV9tYXAoZGVmYXVsdF92ZmlvX2NmZywNCj4gdmFfc3RhcnQs DQo+ID4gKwkJCQkJCWlvdmFfc3RhcnQsDQo+ID4gKwkJCQkJCWlvdmFfZXhwZWN0ZWQgLSBpb3Zh X3N0YXJ0LCAxKTsNCj4gPiArCQkJZWxzZQ0KPiA+ICsJCQkJdmZpb19kbWFfbWVtX21hcChkZWZh dWx0X3ZmaW9fY2ZnLA0KPiB2YV9zdGFydCwNCj4gPiArCQkJCQkJaW92YV9zdGFydCwNCj4gPiAr CQkJCQkJaW92YV9leHBlY3RlZCAtIGlvdmFfc3RhcnQsIDApOw0KPiA+ICsJCX0NCj4gPiAgCX0N Cj4gPiAgI2lmZGVmIFJURV9BUkNIX1BQQ182NA0KPiA+ICAJY3VyX2xlbiA9IDA7DQo+ID4NCj4g DQo+IA0KPiBFbmQgb2YgZGV2IERpZ2VzdCwgVm9sIDI4OCwgSXNzdWUgMjcNCj4gKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqDQo=