From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Zhou, David(ChunMing)" Subject: Re: [PATCH 1/2] [WIP]drm/ttm: add waiter list to prevent allocation not in order Date: Fri, 26 Jan 2018 13:21:08 +0000 Message-ID: <25806.8326781087$1516972772@news.gmane.org> References: <20180126102247.17923-1-david1.zhou@amd.com> <2beeea26-9426-6956-fbc7-ada52088b6a6@gmail.com> <5a6b20fc.024e650a.6778d.4aafSMTPIN_ADDED_BROKEN@mx.google.com> , <8ba40eb5-095b-2a95-d73a-16c141eb64a9@gmail.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="===============1995527210==" Return-path: In-Reply-To: <8ba40eb5-095b-2a95-d73a-16c141eb64a9-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" Cc: "Zhou, David(ChunMing)" , "dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org" , thomas , "Koenig, Christian" , amd-gfx List-Id: dri-devel@lists.freedesktop.org --===============1995527210== Content-Language: en-US Content-Type: multipart/alternative; boundary="_000_smartisan1516972869817_" --_000_smartisan1516972869817_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 WW91IHBhdGNoIHdpbGwgcHJldmVudCBjb25jdXJyZW50IGFsbG9jYXRpb24sIGFuZCB3aWxsIHJl c3VsdCBpbiBhbGxvY2F0aW9uIHBlcmZvcm1hbmNlIGRyb3AgbXVjaC4NCg0KDQrlj5Hoh6rlnZrm npwgUHJvDQoNCkNocmlzdGlhbiBL6bCKaWcgPGNrb2VuaWcubGVpY2h0enVtZXJrZW5AZ21haWwu Y29tPiDkuo4gMjAxOOW5tDHmnIgyNuaXpSDkuIvljYg5OjA05YaZ6YGT77yaDQoNCkF0dGFjaGVk IGlzIHdoYXQgeW91IGFjdHVhbGx5IHdhbnQgdG8gZG8gY2xlYW5seSBpbXBsZW1lbnRlZC4gQnV0 IGFzIEkgc2FpZCB0aGlzIGlzIGEgTk8tR08uDQoNClJlZ2FyZHMsDQpDaHJpc3RpYW4uDQoNCkFt IDI2LjAxLjIwMTggdW0gMTM6NDMgc2NocmllYiBDaHJpc3RpYW4gS8O2bmlnOg0KQWZ0ZXIgbXkg aW52ZXN0aWdhdGlvbiwgdGhpcyBpc3N1ZSBzaG91bGQgYmUgZGV0ZWN0IG9mIFRUTSBkZXNpZ24g c2VsZiwgd2hpY2ggYnJlYWtzIHNjaGVkdWxpbmcgYmFsYW5jZS4NClllYWgsIGJ1dCBhZ2Fpbi4g VGhpcyBpcyBpbmRlbnRlZCBkZXNpZ24gd2UgY2FuJ3QgY2hhbmdlIGVhc2lseS4NCg0KUmVnYXJk cywNCkNocmlzdGlhbi4NCg0KQW0gMjYuMDEuMjAxOCB1bSAxMzozNiBzY2hyaWViIFpob3UsIERh dmlkKENodW5NaW5nKToNCkkgYW0gb2ZmIHdvcmssIHNvIHJlcGx5IG1haWwgYnkgcGhvbmUsIHRo ZSBmb3JtYXQgY291bGQgbm90IGJlIHRleHQuDQoNCmJhY2sgdG8gdG9waWMgaXRzZWxmOg0KdGhl IHByb2JsZW0gaW5kZWVkIGhhcHBlbiBvbiBhbWRncHUgZHJpdmVyLCBzb21lb25lIHJlcG9ydHMg bWUgdGhhdCBhcHBsaWNhdGlvbiBydW5zIHdpdGggdHdvIGluc3RhbmNlcywgdGhlIHBlcmZvcm1h bmNlIGFyZSBkaWZmZXJlbnQuDQpJIGFsc28gcmVwcm9kdWNlZCB0aGUgaXNzdWUgd2l0aCB1bml0 IHRlc3QoYm9fZXZpY3Rpb25fdGVzdCkuIFRoZXkgYWx3YXlzIHRoaW5rIG91ciBzY2hlZHVsZXIg aXNuJ3Qgd29ya2luZyBhcyBleHBlY3RlZC4NCg0KQWZ0ZXIgbXkgaW52ZXN0aWdhdGlvbiwgdGhp cyBpc3N1ZSBzaG91bGQgYmUgZGV0ZWN0IG9mIFRUTSBkZXNpZ24gc2VsZiwgd2hpY2ggYnJlYWtz IHNjaGVkdWxpbmcgYmFsYW5jZS4NCg0KRnVydGhlciwgaWYgd2UgcnVuIGNvbnRhaW5lcnMgZm9y IG91ciBncHUsIGNvbnRhaW5lciBBIGNvdWxkIHJ1biBoaWdoIHNjb3JlLCBjb250YWluZXIgQiBy dW5zIGxvdyBzY29yZSB3aXRoIHNhbWUgYmVuY2htYXJrLg0KDQpTbyB0aGlzIGlzIGJ1ZyB0aGF0 IHdlIG5lZWQgZml4Lg0KDQpSZWdhcmRzLA0KRGF2aWQgWmhvdQ0KDQoNCuWPkeiHquWdmuaenCBQ cm8NCg0KQ2hyaXN0aWFuIEvpsIppZyA8Y2tvZW5pZy5sZWljaHR6dW1lcmtlbkBnbWFpbC5jb20+ PG1haWx0bzpja29lbmlnLmxlaWNodHp1bWVya2VuQGdtYWlsLmNvbT4g5LqOIDIwMTjlubQx5pyI Mjbml6Ug5LiL5Y2INjozMeWGmemBk++8mg0KDQpBbSAyNi4wMS4yMDE4IHVtIDExOjIyIHNjaHJp ZWIgQ2h1bm1pbmcgWmhvdToNCj4gdGhlcmUgaXMgYSBzY2hlZHVsaW5nIGJhbGFuY2UgaXNzdWUg YWJvdXQgZ2V0IG5vZGUgbGlrZToNCj4gYS4gcHJvY2VzcyBBIGFsbG9jYXRlcyBmdWxsIG1lbW9y eSBhbmQgdXNlIGl0IGZvciBzdWJtaXNzaW9uLg0KPiBiLiBwcm9jZXNzIEIgdHJpZXMgdG8gYWxs b2NhdGVzIG1lbW9yeSwgd2lsbCB3YWl0IGZvciBwcm9jZXNzIEEgQk8gaWRsZSBpbiBldmljdGlv bi4NCj4gYy4gcHJvY2VzcyBBIGNvbXBsZXRlcyB0aGUgam9iLCBwcm9jZXNzIEIgZXZpY3Rpb24g d2lsbCBwdXQgcHJvY2VzcyBBIEJPIG5vZGUsDQo+IGJ1dCBpbiB0aGUgbWVhbnRpbWUsIHByb2Nl c3MgQyBpcyBjb21taW5nIHRvIGFsbG9jYXRlIEJPLCB3aGlsbCBkaXJlY3RseSBnZXQgbm9kZSBz dWNjZXNzZnVsbHksIGFuZCBkbyBzdWJtaXNzaW9uLA0KPiBwcm9jZXNzIEIgd2lsbCBhZ2FpbiB3 YWl0IGZvciBwcm9jZXNzIEMgQk8gaWRsZS4NCj4gZC4gcmVwZWF0IHRoZSBhYm92ZSBzZXRwcywg cHJvY2VzcyBCIGNvdWxkIGJlIGRlbGF5ZWQgbXVjaCBtb3JlLg0KPg0KPiBsYXRlciBhbGxvY2F0 aW9uIG11c3Qgbm90IGJlIGFoZWFkIG9mIGZyb250IGluIHNhbWUgcGxhY2UuDQoNCkFnYWluIE5B SyB0byB0aGUgd2hvbGUgYXBwcm9hY2guDQoNCkF0IGxlYXN0IHdpdGggYW1kZ3B1IHRoZSBwcm9i bGVtIHlvdSBkZXNjcmliZWQgYWJvdmUgbmV2ZXIgb2NjdXJzDQpiZWNhdXNlIGV2aWN0aW9ucyBh cmUgcGlwZWxpbmVkIG9wZXJhdGlvbnMuIFdlIGNvdWxkIG9ubHkgYmxvY2sgZm9yDQpkZWxldGVk IHJlZ2lvbnMgdG8gYmVjb21lIGZyZWUuDQoNCkJ1dCBpbmRlcGVuZGVudCBvZiB0aGF0IGluY29t aW5nIG1lbW9yeSByZXF1ZXN0cyB3aGlsZSB3ZSBtYWtlIHJvb20gZm9yDQpldmljdGlvbiBhcmUg aW50ZW5kZWQgdG8gYmUgc2VydmVkIGZpcnN0Lg0KDQpDaGFuZ2luZyB0aGF0IGlzIGNlcnRhaW5s eSBhIG5vLWdvIGNhdXNlIHRoYXQgd291bGQgZmF2b3IgbWVtb3J5IGh1bmdyeQ0KYXBwbGljYXRp b25zIG92ZXIgc21hbGwgY2xpZW50cy4NCg0KUmVnYXJkcywNCkNocmlzdGlhbi4NCg0KPg0KPiBD aGFuZ2UtSWQ6IEkzZGFhODkyZTUwZjgyMjI2YzU1MmNjMDA4YTI5ZTU1ODk0YTk4ZjE4DQo+IFNp Z25lZC1vZmYtYnk6IENodW5taW5nIFpob3UgPGRhdmlkMS56aG91QGFtZC5jb20+PG1haWx0bzpk YXZpZDEuemhvdUBhbWQuY29tPg0KPiAtLS0NCj4gICBkcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9i by5jICAgIHwgNjkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0NCj4g ICBpbmNsdWRlL2RybS90dG0vdHRtX2JvX2FwaS5oICAgIHwgIDcgKysrKysNCj4gICBpbmNsdWRl L2RybS90dG0vdHRtX2JvX2RyaXZlci5oIHwgIDcgKysrKysNCj4gICAzIGZpbGVzIGNoYW5nZWQs IDgwIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pDQo+DQo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vdHRtL3R0bV9iby5jIGIvZHJpdmVycy9ncHUvZHJtL3R0bS90dG1fYm8uYw0K PiBpbmRleCBkMzNhNmJiNzQyYTEuLjU1OGVjMmNmNDY1ZCAxMDA2NDQNCj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL3R0bS90dG1fYm8uYw0KPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9i by5jDQo+IEBAIC04NDEsNiArODQxLDU4IEBAIHN0YXRpYyBpbnQgdHRtX2JvX2FkZF9tb3ZlX2Zl bmNlKHN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCAqYm8sDQo+ICAgICAgICByZXR1cm4gMDsNCj4g ICB9DQo+DQo+ICtzdGF0aWMgdm9pZCB0dG1fbWFuX2luaXRfd2FpdGVyKHN0cnVjdCB0dG1fYm9f d2FpdGVyICp3YWl0ZXIsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB0 dG1fYnVmZmVyX29iamVjdCAqYm8sDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv bnN0IHN0cnVjdCB0dG1fcGxhY2UgKnBsYWNlKQ0KPiArew0KPiArICAgICB3YWl0ZXItPnRibyA9 IGJvOw0KPiArICAgICBtZW1jcHkoKHZvaWQgKikmd2FpdGVyLT5wbGFjZSwgKHZvaWQgKilwbGFj ZSwgc2l6ZW9mKCpwbGFjZSkpOw0KPiArICAgICBJTklUX0xJU1RfSEVBRCgmd2FpdGVyLT5saXN0 KTsNCj4gK30NCj4gKw0KPiArc3RhdGljIHZvaWQgdHRtX21hbl9hZGRfd2FpdGVyKHN0cnVjdCB0 dG1fbWVtX3R5cGVfbWFuYWdlciAqbWFuLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg IHN0cnVjdCB0dG1fYm9fd2FpdGVyICp3YWl0ZXIpDQo+ICt7DQo+ICsgICAgIGlmICghd2FpdGVy KQ0KPiArICAgICAgICAgICAgIHJldHVybjsNCj4gKyAgICAgc3Bpbl9sb2NrKCZtYW4tPndhaXRf bG9jayk7DQo+ICsgICAgIGxpc3RfYWRkX3RhaWwoJndhaXRlci0+bGlzdCwgJm1hbi0+d2FpdGVy X2xpc3QpOw0KPiArICAgICBzcGluX3VubG9jaygmbWFuLT53YWl0X2xvY2spOw0KPiArfQ0KPiAr DQo+ICtzdGF0aWMgdm9pZCB0dG1fbWFuX2RlbF93YWl0ZXIoc3RydWN0IHR0bV9tZW1fdHlwZV9t YW5hZ2VyICptYW4sDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHR0bV9i b193YWl0ZXIgKndhaXRlcikNCj4gK3sNCj4gKyAgICAgaWYgKCF3YWl0ZXIpDQo+ICsgICAgICAg ICAgICAgcmV0dXJuOw0KPiArICAgICBzcGluX2xvY2soJm1hbi0+d2FpdF9sb2NrKTsNCj4gKyAg ICAgaWYgKCFsaXN0X2VtcHR5KCZ3YWl0ZXItPmxpc3QpKQ0KPiArICAgICAgICAgICAgIGxpc3Rf ZGVsKCZ3YWl0ZXItPmxpc3QpOw0KPiArICAgICBzcGluX3VubG9jaygmbWFuLT53YWl0X2xvY2sp Ow0KPiArICAgICBrZnJlZSh3YWl0ZXIpOw0KPiArfQ0KPiArDQo+ICtpbnQgdHRtX21hbl9jaGVj a19ibyhzdHJ1Y3QgdHRtX21lbV90eXBlX21hbmFnZXIgKm1hbiwNCj4gKyAgICAgICAgICAgICAg ICAgIHN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCAqYm8sDQo+ICsgICAgICAgICAgICAgICAgICBj b25zdCBzdHJ1Y3QgdHRtX3BsYWNlICpwbGFjZSkNCj4gK3sNCj4gKyAgICAgc3RydWN0IHR0bV9i b193YWl0ZXIgKndhaXRlciwgKnRtcDsNCj4gKw0KPiArICAgICBzcGluX2xvY2soJm1hbi0+d2Fp dF9sb2NrKTsNCj4gKyAgICAgbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHdhaXRlciwgdG1wLCAm bWFuLT53YWl0ZXJfbGlzdCwgbGlzdCkgew0KPiArICAgICAgICAgICAgIGlmICgoYm8gIT0gd2Fp dGVyLT50Ym8pICYmDQo+ICsgICAgICAgICAgICAgICAgICgocGxhY2UtPmZwZm4gPj0gd2FpdGVy LT5wbGFjZS5mcGZuICYmDQo+ICsgICAgICAgICAgICAgICAgICAgcGxhY2UtPmZwZm4gPD0gd2Fp dGVyLT5wbGFjZS5scGZuKSB8fA0KPiArICAgICAgICAgICAgICAgICAgKHBsYWNlLT5scGZuIDw9 IHdhaXRlci0+cGxhY2UubHBmbiAmJiBwbGFjZS0+bHBmbiA+PQ0KPiArICAgICAgICAgICAgICAg ICAgIHdhaXRlci0+cGxhY2UuZnBmbikpKQ0KPiArICAgICAgICAgICAgICAgICBnb3RvIGxhdGVy X2JvOw0KPiArICAgICB9DQo+ICsgICAgIHNwaW5fdW5sb2NrKCZtYW4tPndhaXRfbG9jayk7DQo+ ICsgICAgIHJldHVybiB0cnVlOw0KPiArbGF0ZXJfYm86DQo+ICsgICAgIHNwaW5fdW5sb2NrKCZt YW4tPndhaXRfbG9jayk7DQo+ICsgICAgIHJldHVybiBmYWxzZTsNCj4gK30NCj4gICAvKioNCj4g ICAgKiBSZXBlYXRlZGx5IGV2aWN0IG1lbW9yeSBmcm9tIHRoZSBMUlUgZm9yIEBtZW1fdHlwZSB1 bnRpbCB3ZSBjcmVhdGUgZW5vdWdoDQo+ICAgICogc3BhY2UsIG9yIHdlJ3ZlIGV2aWN0ZWQgZXZl cnl0aGluZyBhbmQgdGhlcmUgaXNuJ3QgZW5vdWdoIHNwYWNlLg0KPiBAQCAtODUzLDE3ICs5MDUs MjYgQEAgc3RhdGljIGludCB0dG1fYm9fbWVtX2ZvcmNlX3NwYWNlKHN0cnVjdCB0dG1fYnVmZmVy X29iamVjdCAqYm8sDQo+ICAgew0KPiAgICAgICAgc3RydWN0IHR0bV9ib19kZXZpY2UgKmJkZXYg PSBiby0+YmRldjsNCj4gICAgICAgIHN0cnVjdCB0dG1fbWVtX3R5cGVfbWFuYWdlciAqbWFuID0g JmJkZXYtPm1hblttZW1fdHlwZV07DQo+ICsgICAgIHN0cnVjdCB0dG1fYm9fd2FpdGVyIHdhaXRl cjsNCj4gICAgICAgIGludCByZXQ7DQo+DQo+ICsgICAgIHR0bV9tYW5faW5pdF93YWl0ZXIoJndh aXRlciwgYm8sIHBsYWNlKTsNCj4gKyAgICAgdHRtX21hbl9hZGRfd2FpdGVyKG1hbiwgJndhaXRl cik7DQo+ICAgICAgICBkbyB7DQo+ICAgICAgICAgICAgICAgIHJldCA9ICgqbWFuLT5mdW5jLT5n ZXRfbm9kZSkobWFuLCBibywgcGxhY2UsIG1lbSk7DQo+IC0gICAgICAgICAgICAgaWYgKHVubGlr ZWx5KHJldCAhPSAwKSkNCj4gKyAgICAgICAgICAgICBpZiAodW5saWtlbHkocmV0ICE9IDApKSB7 DQo+ICsgICAgICAgICAgICAgICAgICAgICB0dG1fbWFuX2RlbF93YWl0ZXIobWFuLCAmd2FpdGVy KTsNCj4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmV0Ow0KPiAtICAgICAgICAgICAg IGlmIChtZW0tPm1tX25vZGUpDQo+ICsgICAgICAgICAgICAgfQ0KPiArICAgICAgICAgICAgIGlm IChtZW0tPm1tX25vZGUpIHsNCj4gKyAgICAgICAgICAgICAgICAgICAgIHR0bV9tYW5fZGVsX3dh aXRlcihtYW4sICZ3YWl0ZXIpOw0KPiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KPiAr ICAgICAgICAgICAgIH0NCj4gICAgICAgICAgICAgICAgcmV0ID0gdHRtX21lbV9ldmljdF9maXJz dChiZGV2LCBtZW1fdHlwZSwgcGxhY2UsIGN0eCk7DQo+IC0gICAgICAgICAgICAgaWYgKHVubGlr ZWx5KHJldCAhPSAwKSkNCj4gKyAgICAgICAgICAgICBpZiAodW5saWtlbHkocmV0ICE9IDApKSB7 DQo+ICsgICAgICAgICAgICAgICAgICAgICB0dG1fbWFuX2RlbF93YWl0ZXIobWFuLCAmd2FpdGVy KTsNCj4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmV0Ow0KPiArICAgICAgICAgICAg IH0NCj4gICAgICAgIH0gd2hpbGUgKDEpOw0KPiAgICAgICAgbWVtLT5tZW1fdHlwZSA9IG1lbV90 eXBlOw0KPiAgICAgICAgcmV0dXJuIHR0bV9ib19hZGRfbW92ZV9mZW5jZShibywgbWFuLCBtZW0p Ow0KPiBAQCAtMTQ1MCw2ICsxNTExLDggQEAgaW50IHR0bV9ib19pbml0X21tKHN0cnVjdCB0dG1f Ym9fZGV2aWNlICpiZGV2LCB1bnNpZ25lZCB0eXBlLA0KPiAgICAgICAgbWFuLT51c2VfaW9fcmVz ZXJ2ZV9scnUgPSBmYWxzZTsNCj4gICAgICAgIG11dGV4X2luaXQoJm1hbi0+aW9fcmVzZXJ2ZV9t dXRleCk7DQo+ICAgICAgICBzcGluX2xvY2tfaW5pdCgmbWFuLT5tb3ZlX2xvY2spOw0KPiArICAg ICBzcGluX2xvY2tfaW5pdCgmbWFuLT53YWl0X2xvY2spOw0KPiArICAgICBJTklUX0xJU1RfSEVB RCgmbWFuLT53YWl0ZXJfbGlzdCk7DQo+ICAgICAgICBJTklUX0xJU1RfSEVBRCgmbWFuLT5pb19y ZXNlcnZlX2xydSk7DQo+DQo+ICAgICAgICByZXQgPSBiZGV2LT5kcml2ZXItPmluaXRfbWVtX3R5 cGUoYmRldiwgdHlwZSwgbWFuKTsNCj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL3R0bS90dG1f Ym9fYXBpLmggYi9pbmNsdWRlL2RybS90dG0vdHRtX2JvX2FwaS5oDQo+IGluZGV4IDJjZDAyNWMy YWJlNy4uMGZjZTRkYmQwMmU3IDEwMDY0NA0KPiAtLS0gYS9pbmNsdWRlL2RybS90dG0vdHRtX2Jv X2FwaS5oDQo+ICsrKyBiL2luY2x1ZGUvZHJtL3R0bS90dG1fYm9fYXBpLmgNCj4gQEAgLTQwLDYg KzQwLDcgQEANCj4gICAjaW5jbHVkZSA8bGludXgvbW0uaD4NCj4gICAjaW5jbHVkZSA8bGludXgv Yml0bWFwLmg+DQo+ICAgI2luY2x1ZGUgPGxpbnV4L3Jlc2VydmF0aW9uLmg+DQo+ICsjaW5jbHVk ZSA8ZHJtL3R0bS90dG1fcGxhY2VtZW50Lmg+DQo+DQo+ICAgc3RydWN0IHR0bV9ib19kZXZpY2U7 DQo+DQo+IEBAIC0yMzIsNiArMjMzLDEyIEBAIHN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCB7DQo+ ICAgICAgICBzdHJ1Y3QgbXV0ZXggd3VfbXV0ZXg7DQo+ICAgfTsNCj4NCj4gK3N0cnVjdCB0dG1f Ym9fd2FpdGVyIHsNCj4gKyAgICAgc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICp0Ym87DQo+ICsg ICAgIHN0cnVjdCB0dG1fcGxhY2UgcGxhY2U7DQo+ICsgICAgIHN0cnVjdCBsaXN0X2hlYWQgbGlz dDsNCj4gK307DQo+ICsNCj4gICAvKioNCj4gICAgKiBzdHJ1Y3QgdHRtX2JvX2ttYXBfb2JqDQo+ ICAgICoNCj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL3R0bS90dG1fYm9fZHJpdmVyLmggYi9p bmNsdWRlL2RybS90dG0vdHRtX2JvX2RyaXZlci5oDQo+IGluZGV4IDliNDE3ZWIyZGYyMC4uZGM2 YjhiNGM5ZTA2IDEwMDY0NA0KPiAtLS0gYS9pbmNsdWRlL2RybS90dG0vdHRtX2JvX2RyaXZlci5o DQo+ICsrKyBiL2luY2x1ZGUvZHJtL3R0bS90dG1fYm9fZHJpdmVyLmgNCj4gQEAgLTI5Myw2ICsy OTMsMTAgQEAgc3RydWN0IHR0bV9tZW1fdHlwZV9tYW5hZ2VyIHsNCj4gICAgICAgIGJvb2wgaW9f cmVzZXJ2ZV9mYXN0cGF0aDsNCj4gICAgICAgIHNwaW5sb2NrX3QgbW92ZV9sb2NrOw0KPg0KPiAr ICAgICAvKiB3YWl0ZXJzIGluIGxpc3QgKi8NCj4gKyAgICAgc3BpbmxvY2tfdCB3YWl0X2xvY2s7 DQo+ICsgICAgIHN0cnVjdCBsaXN0X2hlYWQgd2FpdGVyX2xpc3Q7DQo+ICsNCj4gICAgICAgIC8q DQo+ICAgICAgICAgKiBQcm90ZWN0ZWQgYnkgQGlvX3Jlc2VydmVfbXV0ZXg6DQo+ICAgICAgICAg Ki8NCj4gQEAgLTc0OCw2ICs3NTIsOSBAQCBpbnQgdHRtX2JvX21lbV9zcGFjZShzdHJ1Y3QgdHRt X2J1ZmZlcl9vYmplY3QgKmJvLA0KPiAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB0dG1fbWVt X3JlZyAqbWVtLA0KPiAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB0dG1fb3BlcmF0aW9uX2N0 eCAqY3R4KTsNCj4NCj4gK2ludCB0dG1fbWFuX2NoZWNrX2JvKHN0cnVjdCB0dG1fbWVtX3R5cGVf bWFuYWdlciAqbWFuLA0KPiArICAgICAgICAgICAgICAgICAgc3RydWN0IHR0bV9idWZmZXJfb2Jq ZWN0ICpibywNCj4gKyAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCB0dG1fcGxhY2UgKnBs YWNlKTsNCj4gICB2b2lkIHR0bV9ib19tZW1fcHV0KHN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCAq Ym8sIHN0cnVjdCB0dG1fbWVtX3JlZyAqbWVtKTsNCj4gICB2b2lkIHR0bV9ib19tZW1fcHV0X2xv Y2tlZChzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKmJvLA0KPiAgICAgICAgICAgICAgICAgICAg ICAgICAgIHN0cnVjdCB0dG1fbWVtX3JlZyAqbWVtKTsNCg0KDQoNCg0KX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCmFtZC1nZnggbWFpbGluZyBsaXN0DQph bWQtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZzxtYWlsdG86YW1kLWdmeEBsaXN0cy5mcmVlZGVz a3RvcC5vcmc+DQpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2FtZC1nZngNCg0KDQoNCg== --_000_smartisan1516972869817_ Content-Type: text/html; charset="utf-8" Content-Transfer-Encoding: base64 PGh0bWw+DQo8aGVhZD4NCjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0i dGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4NCjxtZXRhIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hh cnNldD11dGYtOCI+DQo8L2hlYWQ+DQo8Ym9keSBiZ2NvbG9yPSIjRkZGRkZGIj4NCjxkaXYgbmFt ZT0ic21hcnRpc2FubWVzc2FnZWlkIiBpZD0ic21hcnRpc2FuMTUxNjk3Mjg2OTgxNyI+PGZvbnQg Y29sb3I9IiMzMzMzMzMiPllvdSBwYXRjaCB3aWxsIHByZXZlbnQgY29uY3VycmVudCBhbGxvY2F0 aW9uLCBhbmQgd2lsbCByZXN1bHQgaW4gYWxsb2NhdGlvbiBwZXJmb3JtYW5jZSBkcm9wIG11Y2gu PC9mb250Pjxicj4NCjxicj4NCjxzcGFuIGlkPSJzbWFydGlzYW5fc2lnbmF0dXJlIiBzdHlsZT0i Zm9udC1zaXplOjAuOGVtOyBkaXNwbGF5OmlubGluZTsgY29sb3I6Izg4ODg4OCI+DQo8cCBkaXI9 Imx0ciI+5Y+R6Ieq5Z2a5p6cIFBybzwvcD4NCjwvc3Bhbj48c3R5bGUgdHlwZT0idGV4dC9jc3Mi Pg0KPCEtLQ0KKiBib2R5DQoJe3BhZGRpbmc6MCAxNnB4IDMwcHghaW1wb3J0YW50Ow0KCW1hcmdp bjowIWltcG9ydGFudDsNCgliYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmY7DQoJbGluZS1oZWlnaHQ6 MS40Ow0KCXdvcmQtd3JhcDpicmVhay13b3JkOw0KCXdvcmQtYnJlYWs6bm9ybWFsfQ0KZGl2DQoJ e3dvcmQtd3JhcDpicmVhay13b3JkOw0KCXdvcmQtYnJlYWs6bm9ybWFsfQ0KcA0KCXt3b3JkLXdy YXA6YnJlYWstd29yZDsNCgl3b3JkLWJyZWFrOm5vcm1hbDsNCgl0ZXh0LWluZGVudDowcHQhaW1w b3J0YW50fQ0Kc3Bhbg0KCXt3b3JkLXdyYXA6YnJlYWstd29yZDsNCgl3b3JkLWJyZWFrOm5vcm1h bH0NCmENCgl7d29yZC13cmFwOmJyZWFrLXdvcmQ7DQoJd29yZC1icmVhazpub3JtYWx9DQp0ZA0K CXt3b3JkLXdyYXA6YnJlYWstd29yZDsNCgl3b3JkLWJyZWFrOmJyZWFrLWFsbH0NCi0tPg0KPC9z dHlsZT4NCjxkaXYgY2xhc3M9InF1b3RlIj4NCjxkaXYgc3R5bGU9Im1hcmdpbjowIDBweDsgZm9u dC1zaXplOjEwNSUiPjxmb250IGNvbG9yPSIjNjI5MTQwIiBzdHlsZT0ibGluZS1oZWlnaHQ6MS40 Ij48c3Bhbj5DaHJpc3RpYW4gS+mwimlnICZsdDtja29lbmlnLmxlaWNodHp1bWVya2VuQGdtYWls LmNvbSZndDsg5LqOIDIwMTjlubQx5pyIMjbml6Ug5LiL5Y2IOTowNOWGmemBk++8mjwvc3Bhbj48 L2ZvbnQ+PC9kaXY+DQo8YnIgdHlwZT0iYXR0cmlidXRpb24iPg0KPC9kaXY+DQo8L2Rpdj4NCjxk aXY+DQo8ZGl2IGNsYXNzPSJtb3otY2l0ZS1wcmVmaXgiPkF0dGFjaGVkIGlzIHdoYXQgeW91IGFj dHVhbGx5IHdhbnQgdG8gZG8gY2xlYW5seSBpbXBsZW1lbnRlZC4gQnV0IGFzIEkgc2FpZCB0aGlz IGlzIGEgTk8tR08uPGJyPg0KPGJyPg0KUmVnYXJkcyw8YnI+DQpDaHJpc3RpYW4uPGJyPg0KPGJy Pg0KQW0gMjYuMDEuMjAxOCB1bSAxMzo0MyBzY2hyaWViIENocmlzdGlhbiBLw7ZuaWc6PGJyPg0K PC9kaXY+DQo8YmxvY2txdW90ZSB0eXBlPSJjaXRlIj4NCjxkaXYgY2xhc3M9Im1vei1jaXRlLXBy ZWZpeCI+DQo8YmxvY2txdW90ZSB0eXBlPSJjaXRlIj5BZnRlciBteSBpbnZlc3RpZ2F0aW9uLCB0 aGlzIGlzc3VlIHNob3VsZCBiZSBkZXRlY3Qgb2YgVFRNIGRlc2lnbiBzZWxmLCB3aGljaCBicmVh a3Mgc2NoZWR1bGluZyBiYWxhbmNlLjxicj4NCjwvYmxvY2txdW90ZT4NClllYWgsIGJ1dCBhZ2Fp bi4gVGhpcyBpcyBpbmRlbnRlZCBkZXNpZ24gd2UgY2FuJ3QgY2hhbmdlIGVhc2lseS48YnI+DQo8 YnI+DQpSZWdhcmRzLDxicj4NCkNocmlzdGlhbi48YnI+DQo8YnI+DQpBbSAyNi4wMS4yMDE4IHVt IDEzOjM2IHNjaHJpZWIgWmhvdSwgRGF2aWQoQ2h1bk1pbmcpOjxicj4NCjwvZGl2Pg0KPGJsb2Nr cXVvdGUgdHlwZT0iY2l0ZSI+DQo8bWV0YSBuYW1lPSJHZW5lcmF0b3IiIGNvbnRlbnQ9Ik1pY3Jv c29mdCBFeGNoYW5nZSBTZXJ2ZXIiPg0KPHN0eWxlPg0KPCEtLQ0KLkVtYWlsUXVvdGUNCgl7bWFy Z2luLWxlZnQ6MXB0Ow0KCXBhZGRpbmctbGVmdDo0cHQ7DQoJYm9yZGVyLWxlZnQ6IzgwMDAwMCAy cHggc29saWR9DQotLT4NCjwvc3R5bGU+DQo8ZGl2Pg0KPGRpdiBuYW1lPSJ4X3NtYXJ0aXNhbm1l c3NhZ2VpZCIgaWQ9Inhfc21hcnRpc2FuMTUxNjk3MDE5OTEwMiI+PGZvbnQgY29sb3I9IiMzMzMz MzMiPkkgYW0gb2ZmIHdvcmssIHNvIHJlcGx5IG1haWwgYnkgcGhvbmUsIHRoZSBmb3JtYXQgY291 bGQgbm90IGJlIHRleHQuPGJyPg0KPC9mb250Pjxicj4NCmJhY2sgdG8gdG9waWMgaXRzZWxmOjxi cj4NCnRoZSBwcm9ibGVtIGluZGVlZCBoYXBwZW4gb24gYW1kZ3B1IGRyaXZlciwgc29tZW9uZSBy ZXBvcnRzIG1lIHRoYXQgYXBwbGljYXRpb24gcnVucyB3aXRoIHR3byBpbnN0YW5jZXMsIHRoZSBw ZXJmb3JtYW5jZSBhcmUgZGlmZmVyZW50Ljxicj4NCkkgYWxzbyByZXByb2R1Y2VkIHRoZSBpc3N1 ZSB3aXRoIHVuaXQgdGVzdChib19ldmljdGlvbl90ZXN0KS4gVGhleSBhbHdheXMgdGhpbmsgb3Vy IHNjaGVkdWxlciBpc24ndCB3b3JraW5nIGFzIGV4cGVjdGVkLjxicj4NCjxicj4NCkFmdGVyIG15 IGludmVzdGlnYXRpb24sIHRoaXMgaXNzdWUgc2hvdWxkIGJlIGRldGVjdCBvZiBUVE0gZGVzaWdu IHNlbGYsIHdoaWNoIGJyZWFrcyBzY2hlZHVsaW5nIGJhbGFuY2UuPGJyPg0KPGJyPg0KRnVydGhl ciwgaWYgd2UgcnVuIGNvbnRhaW5lcnMgZm9yIG91ciBncHUsIGNvbnRhaW5lciBBIGNvdWxkIHJ1 biBoaWdoIHNjb3JlLCBjb250YWluZXIgQiBydW5zIGxvdyBzY29yZSB3aXRoIHNhbWUgYmVuY2ht YXJrLjxicj4NCjxicj4NClNvIHRoaXMgaXMgYnVnIHRoYXQgd2UgbmVlZCBmaXguPGJyPg0KPGJy Pg0KUmVnYXJkcyw8YnI+DQpEYXZpZCBaaG91PGJyPg0KPGJyPg0KPHNwYW4gaWQ9Inhfc21hcnRp c2FuX3NpZ25hdHVyZSIgc3R5bGU9ImZvbnQtc2l6ZTowLjhlbTsgZGlzcGxheTppbmxpbmU7IGNv bG9yOiM4ODg4ODgiPg0KPHAgZGlyPSJsdHIiPuWPkeiHquWdmuaenCBQcm88L3A+DQo8L3NwYW4+ PHN0eWxlIHR5cGU9InRleHQvY3NzIj4NCjwhLS0NCiogYm9keQ0KCXtwYWRkaW5nOjAgMTZweCAz MHB4IWltcG9ydGFudDsNCgltYXJnaW46MCFpbXBvcnRhbnQ7DQoJYmFja2dyb3VuZC1jb2xvcjoj ZmZmZmZmOw0KCWxpbmUtaGVpZ2h0OjEuNDsNCgl3b3JkLXdyYXA6YnJlYWstd29yZDsNCgl3b3Jk LWJyZWFrOm5vcm1hbH0NCmRpdg0KCXt3b3JkLXdyYXA6YnJlYWstd29yZDsNCgl3b3JkLWJyZWFr Om5vcm1hbH0NCnANCgl7d29yZC13cmFwOmJyZWFrLXdvcmQ7DQoJd29yZC1icmVhazpub3JtYWw7 DQoJdGV4dC1pbmRlbnQ6MHB0IWltcG9ydGFudH0NCnNwYW4NCgl7d29yZC13cmFwOmJyZWFrLXdv cmQ7DQoJd29yZC1icmVhazpub3JtYWx9DQphDQoJe3dvcmQtd3JhcDpicmVhay13b3JkOw0KCXdv cmQtYnJlYWs6bm9ybWFsfQ0KdGQNCgl7d29yZC13cmFwOmJyZWFrLXdvcmQ7DQoJd29yZC1icmVh azpicmVhay1hbGx9DQotLT4NCjwvc3R5bGU+DQo8ZGl2IGNsYXNzPSJ4X3F1b3RlIj4NCjxkaXYg c3R5bGU9Im1hcmdpbjowIDBweDsgZm9udC1zaXplOjEwNSUiPjxmb250IGNvbG9yPSIjNjI5MTQw IiBzdHlsZT0ibGluZS1oZWlnaHQ6MS40Ij48c3Bhbj5DaHJpc3RpYW4gS+mwimlnDQo8YSBjbGFz cz0ibW96LXR4dC1saW5rLXJmYzIzOTZFIiBocmVmPSJtYWlsdG86Y2tvZW5pZy5sZWljaHR6dW1l cmtlbkBnbWFpbC5jb20iPiZsdDtja29lbmlnLmxlaWNodHp1bWVya2VuQGdtYWlsLmNvbSZndDs8 L2E+IOS6jiAyMDE45bm0MeaciDI25pelIOS4i+WNiDY6MzHlhpnpgZPvvJo8L3NwYW4+PC9mb250 PjwvZGl2Pg0KPGJyIHR5cGU9ImF0dHJpYnV0aW9uIj4NCjwvZGl2Pg0KPC9kaXY+DQo8L2Rpdj4N Cjxmb250IHNpemU9IjIiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTFwdCI+DQo8ZGl2IGNsYXNz PSJQbGFpblRleHQiPkFtIDI2LjAxLjIwMTggdW0gMTE6MjIgc2NocmllYiBDaHVubWluZyBaaG91 Ojxicj4NCiZndDsgdGhlcmUgaXMgYSBzY2hlZHVsaW5nIGJhbGFuY2UgaXNzdWUgYWJvdXQgZ2V0 IG5vZGUgbGlrZTo8YnI+DQomZ3Q7IGEuIHByb2Nlc3MgQSBhbGxvY2F0ZXMgZnVsbCBtZW1vcnkg YW5kIHVzZSBpdCBmb3Igc3VibWlzc2lvbi48YnI+DQomZ3Q7IGIuIHByb2Nlc3MgQiB0cmllcyB0 byBhbGxvY2F0ZXMgbWVtb3J5LCB3aWxsIHdhaXQgZm9yIHByb2Nlc3MgQSBCTyBpZGxlIGluIGV2 aWN0aW9uLjxicj4NCiZndDsgYy4gcHJvY2VzcyBBIGNvbXBsZXRlcyB0aGUgam9iLCBwcm9jZXNz IEIgZXZpY3Rpb24gd2lsbCBwdXQgcHJvY2VzcyBBIEJPIG5vZGUsPGJyPg0KJmd0OyBidXQgaW4g dGhlIG1lYW50aW1lLCBwcm9jZXNzIEMgaXMgY29tbWluZyB0byBhbGxvY2F0ZSBCTywgd2hpbGwg ZGlyZWN0bHkgZ2V0IG5vZGUgc3VjY2Vzc2Z1bGx5LCBhbmQgZG8gc3VibWlzc2lvbiw8YnI+DQom Z3Q7IHByb2Nlc3MgQiB3aWxsIGFnYWluIHdhaXQgZm9yIHByb2Nlc3MgQyBCTyBpZGxlLjxicj4N CiZndDsgZC4gcmVwZWF0IHRoZSBhYm92ZSBzZXRwcywgcHJvY2VzcyBCIGNvdWxkIGJlIGRlbGF5 ZWQgbXVjaCBtb3JlLjxicj4NCiZndDs8YnI+DQomZ3Q7IGxhdGVyIGFsbG9jYXRpb24gbXVzdCBu b3QgYmUgYWhlYWQgb2YgZnJvbnQgaW4gc2FtZSBwbGFjZS48YnI+DQo8YnI+DQpBZ2FpbiBOQUsg dG8gdGhlIHdob2xlIGFwcHJvYWNoLjxicj4NCjxicj4NCkF0IGxlYXN0IHdpdGggYW1kZ3B1IHRo ZSBwcm9ibGVtIHlvdSBkZXNjcmliZWQgYWJvdmUgbmV2ZXIgb2NjdXJzIDxicj4NCmJlY2F1c2Ug ZXZpY3Rpb25zIGFyZSBwaXBlbGluZWQgb3BlcmF0aW9ucy4gV2UgY291bGQgb25seSBibG9jayBm b3IgPGJyPg0KZGVsZXRlZCByZWdpb25zIHRvIGJlY29tZSBmcmVlLjxicj4NCjxicj4NCkJ1dCBp bmRlcGVuZGVudCBvZiB0aGF0IGluY29taW5nIG1lbW9yeSByZXF1ZXN0cyB3aGlsZSB3ZSBtYWtl IHJvb20gZm9yIDxicj4NCmV2aWN0aW9uIGFyZSBpbnRlbmRlZCB0byBiZSBzZXJ2ZWQgZmlyc3Qu PGJyPg0KPGJyPg0KQ2hhbmdpbmcgdGhhdCBpcyBjZXJ0YWlubHkgYSBuby1nbyBjYXVzZSB0aGF0 IHdvdWxkIGZhdm9yIG1lbW9yeSBodW5ncnkgPGJyPg0KYXBwbGljYXRpb25zIG92ZXIgc21hbGwg Y2xpZW50cy48YnI+DQo8YnI+DQpSZWdhcmRzLDxicj4NCkNocmlzdGlhbi48YnI+DQo8YnI+DQom Z3Q7PGJyPg0KJmd0OyBDaGFuZ2UtSWQ6IEkzZGFhODkyZTUwZjgyMjI2YzU1MmNjMDA4YTI5ZTU1 ODk0YTk4ZjE4PGJyPg0KJmd0OyBTaWduZWQtb2ZmLWJ5OiBDaHVubWluZyBaaG91IDxhIGNsYXNz PSJtb3otdHh0LWxpbmstcmZjMjM5NkUiIGhyZWY9Im1haWx0bzpkYXZpZDEuemhvdUBhbWQuY29t Ij4NCiZsdDtkYXZpZDEuemhvdUBhbWQuY29tJmd0OzwvYT48YnI+DQomZ3Q7IC0tLTxicj4NCiZn dDsmbmJzcDsmbmJzcDsgZHJpdmVycy9ncHUvZHJtL3R0bS90dG1fYm8uYyZuYnNwOyZuYnNwOyZu YnNwOyB8IDY5ICYjNDM7JiM0MzsmIzQzOyYjNDM7JiM0MzsmIzQzOyYjNDM7JiM0MzsmIzQzOyYj NDM7JiM0MzsmIzQzOyYjNDM7JiM0MzsmIzQzOyYjNDM7JiM0MzsmIzQzOyYjNDM7JiM0MzsmIzQz OyYjNDM7JiM0MzsmIzQzOyYjNDM7JiM0MzsmIzQzOyYjNDM7JiM0MzsmIzQzOyYjNDM7JiM0Mzsm IzQzOyYjNDM7JiM0MzsmIzQzOyYjNDM7JiM0MzsmIzQzOy0tPGJyPg0KJmd0OyZuYnNwOyZuYnNw OyBpbmNsdWRlL2RybS90dG0vdHRtX2JvX2FwaS5oJm5ic3A7Jm5ic3A7Jm5ic3A7IHwmbmJzcDsg NyAmIzQzOyYjNDM7JiM0MzsmIzQzOyYjNDM7PGJyPg0KJmd0OyZuYnNwOyZuYnNwOyBpbmNsdWRl L2RybS90dG0vdHRtX2JvX2RyaXZlci5oIHwmbmJzcDsgNyAmIzQzOyYjNDM7JiM0MzsmIzQzOyYj NDM7PGJyPg0KJmd0OyZuYnNwOyZuYnNwOyAzIGZpbGVzIGNoYW5nZWQsIDgwIGluc2VydGlvbnMo JiM0MzspLCAzIGRlbGV0aW9ucygtKTxicj4NCiZndDs8YnI+DQomZ3Q7IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9iby5jIGIvZHJpdmVycy9ncHUvZHJtL3R0bS90dG1fYm8u Yzxicj4NCiZndDsgaW5kZXggZDMzYTZiYjc0MmExLi41NThlYzJjZjQ2NWQgMTAwNjQ0PGJyPg0K Jmd0OyAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9iby5jPGJyPg0KJmd0OyAmIzQzOyYj NDM7JiM0MzsgYi9kcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9iby5jPGJyPg0KJmd0OyBAQCAtODQx LDYgJiM0Mzs4NDEsNTggQEAgc3RhdGljIGludCB0dG1fYm9fYWRkX21vdmVfZmVuY2Uoc3RydWN0 IHR0bV9idWZmZXJfb2JqZWN0ICpibyw8YnI+DQomZ3Q7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7IHJldHVybiAwOzxicj4NCiZndDsmbmJzcDsmbmJzcDsgfTxicj4N CiZndDsmbmJzcDsmbmJzcDsgPGJyPg0KJmd0OyAmIzQzO3N0YXRpYyB2b2lkIHR0bV9tYW5faW5p dF93YWl0ZXIoc3RydWN0IHR0bV9ib193YWl0ZXIgKndhaXRlciw8YnI+DQomZ3Q7ICYjNDM7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IHN0cnVj dCB0dG1fYnVmZmVyX29iamVjdCAqYm8sPGJyPg0KJmd0OyAmIzQzOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBjb25zdCBzdHJ1Y3QgdHRtX3Bs YWNlICpwbGFjZSk8YnI+DQomZ3Q7ICYjNDM7ezxicj4NCiZndDsgJiM0MzsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsgd2FpdGVyLSZndDt0Ym8gPSBibzs8YnI+DQomZ3Q7ICYjNDM7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7IG1lbWNweSgodm9pZCAqKSZhbXA7d2FpdGVyLSZndDtwbGFjZSwgKHZv aWQgKilwbGFjZSwgc2l6ZW9mKCpwbGFjZSkpOzxicj4NCiZndDsgJiM0MzsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsgSU5JVF9MSVNUX0hFQUQoJmFtcDt3YWl0ZXItJmd0O2xpc3QpOzxicj4NCiZn dDsgJiM0Mzt9PGJyPg0KJmd0OyAmIzQzOzxicj4NCiZndDsgJiM0MztzdGF0aWMgdm9pZCB0dG1f bWFuX2FkZF93YWl0ZXIoc3RydWN0IHR0bV9tZW1fdHlwZV9tYW5hZ2VyICptYW4sPGJyPg0KJmd0 OyAmIzQzOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBz dHJ1Y3QgdHRtX2JvX3dhaXRlciAqd2FpdGVyKTxicj4NCiZndDsgJiM0Mzt7PGJyPg0KJmd0OyAm IzQzOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBpZiAoIXdhaXRlcik8YnI+DQomZ3Q7ICYjNDM7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7IHJldHVybjs8YnI+DQomZ3Q7ICYjNDM7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7IHNwaW5fbG9jaygmYW1wO21hbi0mZ3Q7d2FpdF9sb2NrKTs8YnI+DQomZ3Q7ICYjNDM7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IGxpc3RfYWRkX3RhaWwoJmFtcDt3YWl0ZXItJmd0O2xp c3QsICZhbXA7bWFuLSZndDt3YWl0ZXJfbGlzdCk7PGJyPg0KJmd0OyAmIzQzOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyBzcGluX3VubG9jaygmYW1wO21hbi0mZ3Q7d2FpdF9sb2NrKTs8YnI+DQom Z3Q7ICYjNDM7fTxicj4NCiZndDsgJiM0Mzs8YnI+DQomZ3Q7ICYjNDM7c3RhdGljIHZvaWQgdHRt X21hbl9kZWxfd2FpdGVyKHN0cnVjdCB0dG1fbWVtX3R5cGVfbWFuYWdlciAqbWFuLDxicj4NCiZn dDsgJiM0MzsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsg c3RydWN0IHR0bV9ib193YWl0ZXIgKndhaXRlcik8YnI+DQomZ3Q7ICYjNDM7ezxicj4NCiZndDsg JiM0MzsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgaWYgKCF3YWl0ZXIpPGJyPg0KJmd0OyAmIzQz OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyByZXR1cm47PGJyPg0KJmd0OyAmIzQzOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyBzcGluX2xvY2soJmFtcDttYW4tJmd0O3dhaXRfbG9jayk7PGJyPg0KJmd0OyAmIzQz OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBpZiAoIWxpc3RfZW1wdHkoJmFtcDt3YWl0ZXItJmd0 O2xpc3QpKTxicj4NCiZndDsgJiM0MzsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgbGlzdF9kZWwoJmFtcDt3YWl0 ZXItJmd0O2xpc3QpOzxicj4NCiZndDsgJiM0MzsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgc3Bp bl91bmxvY2soJmFtcDttYW4tJmd0O3dhaXRfbG9jayk7PGJyPg0KJmd0OyAmIzQzOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyBrZnJlZSh3YWl0ZXIpOzxicj4NCiZndDsgJiM0Mzt9PGJyPg0KJmd0 OyAmIzQzOzxicj4NCiZndDsgJiM0MztpbnQgdHRtX21hbl9jaGVja19ibyhzdHJ1Y3QgdHRtX21l bV90eXBlX21hbmFnZXIgKm1hbiw8YnI+DQomZ3Q7ICYjNDM7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IHN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCAqYm8sPGJy Pg0KJmd0OyAmIzQzOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyBjb25zdCBzdHJ1Y3QgdHRtX3BsYWNlICpwbGFjZSk8YnI+DQomZ3Q7ICYjNDM7ezxicj4NCiZn dDsgJiM0MzsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgc3RydWN0IHR0bV9ib193YWl0ZXIgKndh aXRlciwgKnRtcDs8YnI+DQomZ3Q7ICYjNDM7PGJyPg0KJmd0OyAmIzQzOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyBzcGluX2xvY2soJmFtcDttYW4tJmd0O3dhaXRfbG9jayk7PGJyPg0KJmd0OyAm IzQzOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUod2Fp dGVyLCB0bXAsICZhbXA7bWFuLSZndDt3YWl0ZXJfbGlzdCwgbGlzdCkgezxicj4NCiZndDsgJiM0 MzsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsgaWYgKChibyAhPSB3YWl0ZXItJmd0O3RibykgJmFtcDsmYW1wOzxi cj4NCiZndDsgJiM0MzsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgKChw bGFjZS0mZ3Q7ZnBmbiAmZ3Q7PSB3YWl0ZXItJmd0O3BsYWNlLmZwZm4gJmFtcDsmYW1wOzxicj4N CiZndDsgJiM0MzsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsgcGxhY2UtJmd0O2ZwZm4gJmx0Oz0gd2FpdGVyLSZndDtwbGFjZS5scGZuKSB8fDxicj4N CiZndDsgJiM0MzsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsg KHBsYWNlLSZndDtscGZuICZsdDs9IHdhaXRlci0mZ3Q7cGxhY2UubHBmbiAmYW1wOyZhbXA7IHBs YWNlLSZndDtscGZuICZndDs9PGJyPg0KJmd0OyAmIzQzOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyB3YWl0ZXItJmd0O3BsYWNlLmZwZm4pKSk8YnI+ DQomZ3Q7ICYjNDM7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IGdvdG8g bGF0ZXJfYm87PGJyPg0KJmd0OyAmIzQzOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyB9PGJyPg0K Jmd0OyAmIzQzOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBzcGluX3VubG9jaygmYW1wO21hbi0m Z3Q7d2FpdF9sb2NrKTs8YnI+DQomZ3Q7ICYjNDM7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IHJl dHVybiB0cnVlOzxicj4NCiZndDsgJiM0MztsYXRlcl9ibzo8YnI+DQomZ3Q7ICYjNDM7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7IHNwaW5fdW5sb2NrKCZhbXA7bWFuLSZndDt3YWl0X2xvY2spOzxi cj4NCiZndDsgJiM0MzsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgcmV0dXJuIGZhbHNlOzxicj4N CiZndDsgJiM0Mzt9PGJyPg0KJmd0OyZuYnNwOyZuYnNwOyAvKio8YnI+DQomZ3Q7Jm5ic3A7Jm5i c3A7Jm5ic3A7ICogUmVwZWF0ZWRseSBldmljdCBtZW1vcnkgZnJvbSB0aGUgTFJVIGZvciBAbWVt X3R5cGUgdW50aWwgd2UgY3JlYXRlIGVub3VnaDxicj4NCiZndDsmbmJzcDsmbmJzcDsmbmJzcDsg KiBzcGFjZSwgb3Igd2UndmUgZXZpY3RlZCBldmVyeXRoaW5nIGFuZCB0aGVyZSBpc24ndCBlbm91 Z2ggc3BhY2UuPGJyPg0KJmd0OyBAQCAtODUzLDE3ICYjNDM7OTA1LDI2IEBAIHN0YXRpYyBpbnQg dHRtX2JvX21lbV9mb3JjZV9zcGFjZShzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKmJvLDxicj4N CiZndDsmbmJzcDsmbmJzcDsgezxicj4NCiZndDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsgc3RydWN0IHR0bV9ib19kZXZpY2UgKmJkZXYgPSBiby0mZ3Q7YmRldjs8 YnI+DQomZ3Q7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IHN0cnVj dCB0dG1fbWVtX3R5cGVfbWFuYWdlciAqbWFuID0gJmFtcDtiZGV2LSZndDttYW5bbWVtX3R5cGVd Ozxicj4NCiZndDsgJiM0MzsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgc3RydWN0IHR0bV9ib193 YWl0ZXIgd2FpdGVyOzxicj4NCiZndDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsgaW50IHJldDs8YnI+DQomZ3Q7Jm5ic3A7Jm5ic3A7IDxicj4NCiZndDsgJiM0Mzsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgdHRtX21hbl9pbml0X3dhaXRlcigmYW1wO3dhaXRlciwg Ym8sIHBsYWNlKTs8YnI+DQomZ3Q7ICYjNDM7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IHR0bV9t YW5fYWRkX3dhaXRlcihtYW4sICZhbXA7d2FpdGVyKTs8YnI+DQomZ3Q7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IGRvIHs8YnI+DQomZ3Q7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7IHJldCA9ICgqbWFuLSZndDtmdW5jLSZndDtnZXRfbm9kZSkobWFu LCBibywgcGxhY2UsIG1lbSk7PGJyPg0KJmd0OyAtJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IGlmICh1bmxpa2Vs eShyZXQgIT0gMCkpPGJyPg0KJmd0OyAmIzQzOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBpZiAodW5saWtlbHko cmV0ICE9IDApKSB7PGJyPg0KJmd0OyAmIzQzOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyB0dG1fbWFuX2RlbF93YWl0ZXIobWFu LCAmYW1wO3dhaXRlcik7PGJyPg0KJmd0OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyByZXR1cm4g cmV0Ozxicj4NCiZndDsgLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBpZiAobWVtLSZndDttbV9ub2RlKTxicj4N CiZndDsgJiM0MzsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgfTxicj4NCiZndDsgJiM0MzsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsgaWYgKG1lbS0mZ3Q7bW1fbm9kZSkgezxicj4NCiZndDsgJiM0MzsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgdHRtX21hbl9k ZWxfd2FpdGVyKG1hbiwgJmFtcDt3YWl0ZXIpOzxicj4NCiZndDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsgYnJlYWs7PGJyPg0KJmd0OyAmIzQzOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyB9PGJyPg0KJmd0OyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyByZXQgPSB0dG1fbWVtX2V2aWN0X2ZpcnN0 KGJkZXYsIG1lbV90eXBlLCBwbGFjZSwgY3R4KTs8YnI+DQomZ3Q7IC0mbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsg aWYgKHVubGlrZWx5KHJldCAhPSAwKSk8YnI+DQomZ3Q7ICYjNDM7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IGlm ICh1bmxpa2VseShyZXQgIT0gMCkpIHs8YnI+DQomZ3Q7ICYjNDM7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IHR0bV9tYW5fZGVs X3dhaXRlcihtYW4sICZhbXA7d2FpdGVyKTs8YnI+DQomZ3Q7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7IHJldHVybiByZXQ7PGJyPg0KJmd0OyAmIzQzOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyB9PGJyPg0KJmd0 OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyB9IHdoaWxlICgxKTs8 YnI+DQomZ3Q7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IG1lbS0m Z3Q7bWVtX3R5cGUgPSBtZW1fdHlwZTs8YnI+DQomZ3Q7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7IHJldHVybiB0dG1fYm9fYWRkX21vdmVfZmVuY2UoYm8sIG1hbiwg bWVtKTs8YnI+DQomZ3Q7IEBAIC0xNDUwLDYgJiM0MzsxNTExLDggQEAgaW50IHR0bV9ib19pbml0 X21tKHN0cnVjdCB0dG1fYm9fZGV2aWNlICpiZGV2LCB1bnNpZ25lZCB0eXBlLDxicj4NCiZndDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgbWFuLSZndDt1c2VfaW9f cmVzZXJ2ZV9scnUgPSBmYWxzZTs8YnI+DQomZ3Q7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7IG11dGV4X2luaXQoJmFtcDttYW4tJmd0O2lvX3Jlc2VydmVfbXV0ZXgp Ozxicj4NCiZndDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgc3Bp bl9sb2NrX2luaXQoJmFtcDttYW4tJmd0O21vdmVfbG9jayk7PGJyPg0KJmd0OyAmIzQzOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyBzcGluX2xvY2tfaW5pdCgmYW1wO21hbi0mZ3Q7d2FpdF9sb2Nr KTs8YnI+DQomZ3Q7ICYjNDM7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IElOSVRfTElTVF9IRUFE KCZhbXA7bWFuLSZndDt3YWl0ZXJfbGlzdCk7PGJyPg0KJmd0OyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBJTklUX0xJU1RfSEVBRCgmYW1wO21hbi0mZ3Q7aW9fcmVz ZXJ2ZV9scnUpOzxicj4NCiZndDsmbmJzcDsmbmJzcDsgPGJyPg0KJmd0OyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyByZXQgPSBiZGV2LSZndDtkcml2ZXItJmd0O2lu aXRfbWVtX3R5cGUoYmRldiwgdHlwZSwgbWFuKTs8YnI+DQomZ3Q7IGRpZmYgLS1naXQgYS9pbmNs dWRlL2RybS90dG0vdHRtX2JvX2FwaS5oIGIvaW5jbHVkZS9kcm0vdHRtL3R0bV9ib19hcGkuaDxi cj4NCiZndDsgaW5kZXggMmNkMDI1YzJhYmU3Li4wZmNlNGRiZDAyZTcgMTAwNjQ0PGJyPg0KJmd0 OyAtLS0gYS9pbmNsdWRlL2RybS90dG0vdHRtX2JvX2FwaS5oPGJyPg0KJmd0OyAmIzQzOyYjNDM7 JiM0MzsgYi9pbmNsdWRlL2RybS90dG0vdHRtX2JvX2FwaS5oPGJyPg0KJmd0OyBAQCAtNDAsNiAm IzQzOzQwLDcgQEA8YnI+DQomZ3Q7Jm5ic3A7Jm5ic3A7ICNpbmNsdWRlICZsdDtsaW51eC9tbS5o Jmd0Ozxicj4NCiZndDsmbmJzcDsmbmJzcDsgI2luY2x1ZGUgJmx0O2xpbnV4L2JpdG1hcC5oJmd0 Ozxicj4NCiZndDsmbmJzcDsmbmJzcDsgI2luY2x1ZGUgJmx0O2xpbnV4L3Jlc2VydmF0aW9uLmgm Z3Q7PGJyPg0KJmd0OyAmIzQzOyNpbmNsdWRlICZsdDtkcm0vdHRtL3R0bV9wbGFjZW1lbnQuaCZn dDs8YnI+DQomZ3Q7Jm5ic3A7Jm5ic3A7IDxicj4NCiZndDsmbmJzcDsmbmJzcDsgc3RydWN0IHR0 bV9ib19kZXZpY2U7PGJyPg0KJmd0OyZuYnNwOyZuYnNwOyA8YnI+DQomZ3Q7IEBAIC0yMzIsNiAm IzQzOzIzMywxMiBAQCBzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3Qgezxicj4NCiZndDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgc3RydWN0IG11dGV4IHd1X211dGV4 Ozxicj4NCiZndDsmbmJzcDsmbmJzcDsgfTs8YnI+DQomZ3Q7Jm5ic3A7Jm5ic3A7IDxicj4NCiZn dDsgJiM0MztzdHJ1Y3QgdHRtX2JvX3dhaXRlciB7PGJyPg0KJmd0OyAmIzQzOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyBzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKnRibzs8YnI+DQomZ3Q7ICYj NDM7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IHN0cnVjdCB0dG1fcGxhY2UgcGxhY2U7PGJyPg0K Jmd0OyAmIzQzOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7 PGJyPg0KJmd0OyAmIzQzO307PGJyPg0KJmd0OyAmIzQzOzxicj4NCiZndDsmbmJzcDsmbmJzcDsg LyoqPGJyPg0KJmd0OyZuYnNwOyZuYnNwOyZuYnNwOyAqIHN0cnVjdCB0dG1fYm9fa21hcF9vYmo8 YnI+DQomZ3Q7Jm5ic3A7Jm5ic3A7Jm5ic3A7ICo8YnI+DQomZ3Q7IGRpZmYgLS1naXQgYS9pbmNs dWRlL2RybS90dG0vdHRtX2JvX2RyaXZlci5oIGIvaW5jbHVkZS9kcm0vdHRtL3R0bV9ib19kcml2 ZXIuaDxicj4NCiZndDsgaW5kZXggOWI0MTdlYjJkZjIwLi5kYzZiOGI0YzllMDYgMTAwNjQ0PGJy Pg0KJmd0OyAtLS0gYS9pbmNsdWRlL2RybS90dG0vdHRtX2JvX2RyaXZlci5oPGJyPg0KJmd0OyAm IzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2RybS90dG0vdHRtX2JvX2RyaXZlci5oPGJyPg0KJmd0 OyBAQCAtMjkzLDYgJiM0MzsyOTMsMTAgQEAgc3RydWN0IHR0bV9tZW1fdHlwZV9tYW5hZ2VyIHs8 YnI+DQomZ3Q7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IGJvb2wg aW9fcmVzZXJ2ZV9mYXN0cGF0aDs8YnI+DQomZ3Q7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7IHNwaW5sb2NrX3QgbW92ZV9sb2NrOzxicj4NCiZndDsmbmJzcDsmbmJz cDsgPGJyPg0KJmd0OyAmIzQzOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAvKiB3YWl0ZXJzIGlu IGxpc3QgKi88YnI+DQomZ3Q7ICYjNDM7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IHNwaW5sb2Nr X3Qgd2FpdF9sb2NrOzxicj4NCiZndDsgJiM0MzsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgc3Ry dWN0IGxpc3RfaGVhZCB3YWl0ZXJfbGlzdDs8YnI+DQomZ3Q7ICYjNDM7PGJyPg0KJmd0OyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAvKjxicj4NCiZndDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgKiBQcm90ZWN0ZWQgYnkg QGlvX3Jlc2VydmVfbXV0ZXg6PGJyPg0KJmd0OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyAqLzxicj4NCiZndDsgQEAgLTc0OCw2ICYjNDM7NzUyLDkgQEAg aW50IHR0bV9ib19tZW1fc3BhY2Uoc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICpibyw8YnI+DQom Z3Q7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7IHN0cnVjdCB0dG1fbWVtX3JlZyAqbWVtLDxicj4NCiZndDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgc3RydWN0 IHR0bV9vcGVyYXRpb25fY3R4ICpjdHgpOzxicj4NCiZndDsmbmJzcDsmbmJzcDsgPGJyPg0KJmd0 OyAmIzQzO2ludCB0dG1fbWFuX2NoZWNrX2JvKHN0cnVjdCB0dG1fbWVtX3R5cGVfbWFuYWdlciAq bWFuLDxicj4NCiZndDsgJiM0MzsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsgc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICpibyw8YnI+DQomZ3Q7ICYjNDM7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IGNvbnN0IHN0cnVjdCB0 dG1fcGxhY2UgKnBsYWNlKTs8YnI+DQomZ3Q7Jm5ic3A7Jm5ic3A7IHZvaWQgdHRtX2JvX21lbV9w dXQoc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICpibywgc3RydWN0IHR0bV9tZW1fcmVnICptZW0p Ozxicj4NCiZndDsmbmJzcDsmbmJzcDsgdm9pZCB0dG1fYm9fbWVtX3B1dF9sb2NrZWQoc3RydWN0 IHR0bV9idWZmZXJfb2JqZWN0ICpibyw8YnI+DQomZ3Q7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7IHN0cnVjdCB0dG1fbWVtX3JlZyAqbWVtKTs8YnI+DQo8YnI+DQo8 L2Rpdj4NCjwvc3Bhbj48L2ZvbnQ+PGJyPg0KPGZpZWxkc2V0IGNsYXNzPSJtaW1lQXR0YWNobWVu dEhlYWRlciI+PC9maWVsZHNldD4gPGJyPg0KPHByZT5fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXw0KYW1kLWdmeCBtYWlsaW5nIGxpc3QNCjxhIGNsYXNzPSJt b3otdHh0LWxpbmstYWJicmV2aWF0ZWQiIGhyZWY9Im1haWx0bzphbWQtZ2Z4QGxpc3RzLmZyZWVk ZXNrdG9wLm9yZyI+YW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmc8L2E+DQo8YSBjbGFzcz0i bW96LXR4dC1saW5rLWZyZWV0ZXh0IiBocmVmPSJodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2FtZC1nZngiPmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L21haWxtYW4vbGlzdGluZm8vYW1kLWdmeDwvYT4NCjwvcHJlPg0KPC9ibG9ja3F1b3RlPg0KPGJy Pg0KPC9ibG9ja3F1b3RlPg0KPGJyPg0KPC9kaXY+DQo8L2JvZHk+DQo8L2h0bWw+DQo= --_000_smartisan1516972869817_-- --===============1995527210== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KYW1kLWdmeCBt YWlsaW5nIGxpc3QKYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5m cmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9hbWQtZ2Z4Cg== --===============1995527210==--