From mboxrd@z Thu Jan 1 00:00:00 1970 From: sourab gupta Subject: Re: [PATCH v8 02/12] drm/i915: Add i915 perf infrastructure Date: Mon, 07 Nov 2016 14:10:53 +0530 Message-ID: <1478508053.18863.23.camel@sourab-desktop> References: <20161028021430.2177-1-robert@sixbynine.org> <20161028021430.2177-3-robert@sixbynine.org> <1478249947.18863.15.camel@sourab-desktop> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Robert Bragg Cc: "dri-devel@lists.freedesktop.org" , David Airlie , "intel-gfx@lists.freedesktop.org" , "Vetter, Daniel" List-Id: dri-devel@lists.freedesktop.org T24gRnJpLCAyMDE2LTExLTA0IGF0IDA2OjE5IC0wNzAwLCBSb2JlcnQgQnJhZ2cgd3JvdGU6Cj4g Cj4gCj4gT24gRnJpLCBOb3YgNCwgMjAxNiBhdCA4OjU5IEFNLCBzb3VyYWIgZ3VwdGEgPHNvdXJh Yi5ndXB0YUBpbnRlbC5jb20+Cj4gd3JvdGU6Cj4gICAgICAgICBPbiBUaHUsIDIwMTYtMTAtMjcg YXQgMTk6MTQgLTA3MDAsIFJvYmVydCBCcmFnZyB3cm90ZToKPiAgICAgICAgID4gQWRkcyBiYXNl IGk5MTUgcGVyZiBpbmZyYXN0cnVjdHVyZSBmb3IgR2VuIHBlcmZvcm1hbmNlCj4gICAgICAgICBt ZXRyaWNzLgo+ICAgICAgICAgPgo+ICAgICAgICAgPiBUaGlzIGFkZHMgYSBEUk1fSU9DVExfSTkx NV9QRVJGX09QRU4gaW9jdGwgdGhhdCB0YWtlcyBhbgo+ICAgICAgICAgYXJyYXkgb2YgdWludDY0 Cj4gICAgICAgICA+IHByb3BlcnRpZXMgdG8gY29uZmlndXJlIGEgc3RyZWFtIG9mIG1ldHJpY3Mg YW5kIHJldHVybnMgYQo+ICAgICAgICAgbmV3IGZkIHVzYWJsZQo+ICAgICAgICAgPiB3aXRoIHN0 YW5kYXJkIFZGUyBzeXN0ZW0gY2FsbHMgaW5jbHVkaW5nIHJlYWQoKSB0byByZWFkCj4gICAgICAg ICB0eXBlZCBhbmQgc2l6ZWQKPiAgICAgICAgID4gcmVjb3JkczsgaW9jdGwoKSB0byBlbmFibGUg b3IgZGlzYWJsZSBjYXB0dXJlIGFuZCBwb2xsKCkgdG8KPiAgICAgICAgIHdhaXQgZm9yCj4gICAg ICAgICA+IGRhdGEuCj4gICAgICAgICA+Cj4gICAgICAgICA+IEEgc3RyZWFtIGlzIG9wZW5lZCBz b21ldGhpbmcgbGlrZToKPiAgICAgICAgID4KPiAgICAgICAgID4gICB1aW50NjRfdCBwcm9wZXJ0 aWVzW10gPSB7Cj4gICAgICAgICA+ICAgICAgIC8qIFNpbmdsZSBjb250ZXh0IHNhbXBsaW5nICov Cj4gICAgICAgICA+ICAgICAgIERSTV9JOTE1X1BFUkZfUFJPUF9DVFhfSEFORExFLCAgICAgICAg Y3R4X2hhbmRsZSwKPiAgICAgICAgID4KPiAgICAgICAgID4gICAgICAgLyogSW5jbHVkZSBPQSBy ZXBvcnRzIGluIHNhbXBsZXMgKi8KPiAgICAgICAgID4gICAgICAgRFJNX0k5MTVfUEVSRl9QUk9Q X1NBTVBMRV9PQSwgICAgICAgICB0cnVlLAo+ICAgICAgICAgPgo+ICAgICAgICAgPiAgICAgICAv KiBPQSB1bml0IGNvbmZpZ3VyYXRpb24gKi8KPiAgICAgICAgID4gICAgICAgRFJNX0k5MTVfUEVS Rl9QUk9QX09BX01FVFJJQ1NfU0VULCAgICBtZXRyaWNzX3NldF9pZCwKPiAgICAgICAgID4gICAg ICAgRFJNX0k5MTVfUEVSRl9QUk9QX09BX0ZPUk1BVCwgICAgICAgICByZXBvcnRfZm9ybWF0LAo+ ICAgICAgICAgPiAgICAgICBEUk1fSTkxNV9QRVJGX1BST1BfT0FfRVhQT05FTlQsICAgICAgIHBl cmlvZF9leHBvbmVudCwKPiAgICAgICAgID4gICAgfTsKPiAgICAgICAgID4gICAgc3RydWN0IGRy bV9pOTE1X3BlcmZfb3Blbl9wYXJhbSBwYXJtID0gewo+ICAgICAgICAgPiAgICAgICAuZmxhZ3Mg PSBJOTE1X1BFUkZfRkxBR19GRF9DTE9FWEVDIHwKPiAgICAgICAgID4gICAgICAgICAgICAgICAg STkxNV9QRVJGX0ZMQUdfRkRfTk9OQkxPQ0sgfAo+ICAgICAgICAgPiAgICAgICAgICAgICAgICBJ OTE1X1BFUkZfRkxBR19ESVNBQkxFRCwKPiAgICAgICAgID4gICAgICAgLnByb3BlcnRpZXNfcHRy ID0gKHVpbnQ2NF90KXByb3BlcnRpZXMsCj4gICAgICAgICA+ICAgICAgIC5udW1fcHJvcGVydGll cyA9IHNpemVvZihwcm9wZXJ0aWVzKSAvIDE2LAo+ICAgICAgICAgPiAgICB9Owo+ICAgICAgICAg PiAgICBpbnQgZmQgPSBkcm1Jb2N0bChkcm1fZmQsIERSTV9JT0NUTF9JOTE1X1BFUkZfT1BFTiwK PiAgICAgICAgICZwYXJhbSk7Cj4gICAgICAgICA+Cj4gICAgICAgICA+IFJlY29yZHMgcmVhZCBh bGwgc3RhcnQgd2l0aCBhIGNvbW1vbiB7IHR5cGUsIHNpemUgfSBoZWFkZXIKPiAgICAgICAgIHdp dGgKPiAgICAgICAgID4gRFJNX0k5MTVfUEVSRl9SRUNPUkRfU0FNUExFIGJlaW5nIG9mIG1vc3Qg aW50ZXJlc3QuIFNhbXBsZQo+ICAgICAgICAgcmVjb3Jkcwo+ICAgICAgICAgPiBjb250YWluIGFu IGV4dGVuc2libGUgbnVtYmVyIG9mIGZpZWxkcyBhbmQgaXQncyB0aGUKPiAgICAgICAgID4gRFJN X0k5MTVfUEVSRl9QUk9QX1NBTVBMRV94eXogcHJvcGVydGllcyBnaXZlbiB3aGVuIG9wZW5pbmcK PiAgICAgICAgIHRoYXQKPiAgICAgICAgID4gZGV0ZXJtaW5lIHdoYXQncyBpbmNsdWRlZCBpbiBl dmVyeSBzYW1wbGUuCj4gICAgICAgICA+Cj4gICAgICAgICA+IE5vIHNwZWNpZmljIHN0cmVhbXMg YXJlIHN1cHBvcnRlZCB5ZXQgc28gYW55IGF0dGVtcHQgdG8gb3Blbgo+ICAgICAgICAgYSBzdHJl YW0KPiAgICAgICAgID4gd2lsbCByZXR1cm4gYW4gZXJyb3IuCj4gICAgICAgICA+Cj4gICAgICAg ICA+IHYyOgo+ICAgICAgICAgPiAgICAgdXNlIGk5MTVfZ2VtX2NvbnRleHRfZ2V0KCkgLSBDaHJp cyBXaWxzb24KPiAgICAgICAgID4gdjM6Cj4gICAgICAgICA+ICAgICB1cGRhdGUgcmVhZCgpIGlu dGVyZmFjZSB0byBhdm9pZCBwYXNzaW5nIHN0YXRlIHN0cnVjdCAtCj4gICAgICAgICBDaHJpcyBX aWxzb24KPiAgICAgICAgID4gICAgIGZpeCBzb21lIHJlYmFzZSBmYWxsb3V0LCB3aXRoIGk5MTUt cGVyZiBpbml0L2RlaW5pdAo+ICAgICAgICAgPiB2NDoKPiAgICAgICAgID4gICAgIHMvRFJNX0lP UlcvRFJNX0lPVy8gLSBFbWlsIFZlbGlrb3YKPiAgICAgICAgID4KPiAgICAgICAgID4gU2lnbmVk LW9mZi1ieTogUm9iZXJ0IEJyYWdnIDxyb2JlcnRAc2l4YnluaW5lLm9yZz4KPiAgICAgICAgID4g LS0tCj4gICAgICAgICA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZSAgICB8ICAgMyAr Cj4gICAgICAgICA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jICB8ICAgNCArCj4g ICAgICAgICA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICB8ICA5MSArKysrKysr Kwo+ICAgICAgICAgPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wZXJmLmMgfCA0NDMKPiAg ICAgICAgICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ICAgICAgICAg PiAgaW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5oICAgICAgfCAgNjcgKysrKysrCj4gICAgICAg ICA+ICA1IGZpbGVzIGNoYW5nZWQsIDYwOCBpbnNlcnRpb25zKCspCj4gICAgICAgICA+ICBjcmVh dGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wZXJmLmMKPiAgICAgICAg ID4KPiAgICAgICAgID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxl Cj4gICAgICAgICBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCj4gICAgICAgICA+IGlu ZGV4IDYxMjM0MDAuLjhkNGUyNWYgMTAwNjQ0Cj4gICAgICAgICA+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L01ha2VmaWxlCj4gICAgICAgICA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L01ha2VmaWxlCj4gICAgICAgICA+IEBAIC0xMTMsNiArMTEzLDkgQEAgaTkxNS0kKENPTkZJR19E Uk1fSTkxNV9DQVBUVVJFX0VSUk9SKSArPQo+ICAgICAgICAgaTkxNV9ncHVfZXJyb3Iubwo+ICAg ICAgICAgPiAgIyB2aXJ0dWFsIGdwdSBjb2RlCj4gICAgICAgICA+ICBpOTE1LXkgKz0gaTkxNV92 Z3B1Lm8KPiAgICAgICAgID4KPiAgICAgICAgID4gKyMgcGVyZiBjb2RlCj4gICAgICAgICA+ICtp OTE1LXkgKz0gaTkxNV9wZXJmLm8KPiAgICAgICAgID4gKwo+ICAgICAgICAgPiAgaWZlcSAoJChD T05GSUdfRFJNX0k5MTVfR1ZUKSx5KQo+ICAgICAgICAgPiAgaTkxNS15ICs9IGludGVsX2d2dC5v Cj4gICAgICAgICA+ICBpbmNsdWRlICQoc3JjKS9ndnQvTWFrZWZpbGUKPiAgICAgICAgID4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKPiAgICAgICAgIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwo+ICAgICAgICAgPiBpbmRleCBhZjM1NTlkLi42 ODVjOTZlIDEwMDY0NAo+ICAgICAgICAgPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2Rydi5jCj4gICAgICAgICA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMK PiAgICAgICAgID4gQEAgLTgzNiw2ICs4MzYsOCBAQCBzdGF0aWMgaW50IGk5MTVfZHJpdmVyX2lu aXRfZWFybHkoc3RydWN0Cj4gICAgICAgICBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAg ICAgICAgID4KPiAgICAgICAgID4gICAgICAgaW50ZWxfZGV0ZWN0X3ByZXByb2R1Y3Rpb25faHco ZGV2X3ByaXYpOwo+ICAgICAgICAgPgo+ICAgICAgICAgPiArICAgICBpOTE1X3BlcmZfaW5pdChk ZXZfcHJpdik7Cj4gICAgICAgICA+ICsKPiAgICAgICAgID4gICAgICAgcmV0dXJuIDA7Cj4gICAg ICAgICA+Cj4gICAgICAgICA+ICBlcnJfd29ya3F1ZXVlczoKPiAgICAgICAgID4gQEAgLTg0OSw2 ICs4NTEsNyBAQCBzdGF0aWMgaW50IGk5MTVfZHJpdmVyX2luaXRfZWFybHkoc3RydWN0Cj4gICAg ICAgICBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgICAgICAgID4gICAqLwo+ICAgICAg ICAgPiAgc3RhdGljIHZvaWQgaTkxNV9kcml2ZXJfY2xlYW51cF9lYXJseShzdHJ1Y3QKPiAgICAg ICAgIGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAgICAgICAgPiAgewo+ICAgICAgICAg PiArICAgICBpOTE1X3BlcmZfZmluaShkZXZfcHJpdik7Cj4gICAgICAgICA+ICAgICAgIGk5MTVf Z2VtX2xvYWRfY2xlYW51cCgmZGV2X3ByaXYtPmRybSk7Cj4gICAgICAgICA+ICAgICAgIGk5MTVf d29ya3F1ZXVlc19jbGVhbnVwKGRldl9wcml2KTsKPiAgICAgICAgID4gIH0KPiAgICAgICAgID4g QEAgLTI1NTYsNiArMjU1OSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2lvY3RsX2Rlc2MK PiAgICAgICAgIGk5MTVfaW9jdGxzW10gPSB7Cj4gICAgICAgICA+ICAgICAgIERSTV9JT0NUTF9E RUZfRFJWKEk5MTVfR0VNX1VTRVJQVFIsCj4gICAgICAgICBpOTE1X2dlbV91c2VycHRyX2lvY3Rs LCBEUk1fUkVOREVSX0FMTE9XKSwKPiAgICAgICAgID4gICAgICAgRFJNX0lPQ1RMX0RFRl9EUlYo STkxNV9HRU1fQ09OVEVYVF9HRVRQQVJBTSwKPiAgICAgICAgIGk5MTVfZ2VtX2NvbnRleHRfZ2V0 cGFyYW1faW9jdGwsIERSTV9SRU5ERVJfQUxMT1cpLAo+ICAgICAgICAgPiAgICAgICBEUk1fSU9D VExfREVGX0RSVihJOTE1X0dFTV9DT05URVhUX1NFVFBBUkFNLAo+ICAgICAgICAgaTkxNV9nZW1f Y29udGV4dF9zZXRwYXJhbV9pb2N0bCwgRFJNX1JFTkRFUl9BTExPVyksCj4gICAgICAgICA+ICsg ICAgIERSTV9JT0NUTF9ERUZfRFJWKEk5MTVfUEVSRl9PUEVOLAo+ICAgICAgICAgaTkxNV9wZXJm X29wZW5faW9jdGwsIERSTV9SRU5ERVJfQUxMT1cpLAo+ICAgICAgICAgPiAgfTsKPiAgICAgICAg ID4KPiAgICAgICAgID4gIHN0YXRpYyBzdHJ1Y3QgZHJtX2RyaXZlciBkcml2ZXIgPSB7Cj4gICAg ICAgICA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gICAg ICAgICBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiAgICAgICAgID4gaW5kZXgg NWEyNjBkYi4uN2E2NWMwYiAxMDA2NDQKPiAgICAgICAgID4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kcnYuaAo+ICAgICAgICAgPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2Rydi5oCj4gICAgICAgICA+IEBAIC0xNzY3LDYgKzE3NjcsODQgQEAgc3RydWN0IGludGVs X3dtX2NvbmZpZyB7Cj4gICAgICAgICA+ICAgICAgIGJvb2wgc3ByaXRlc19zY2FsZWQ7Cj4gICAg ICAgICA+ICB9Owo+ICAgICAgICAgPgo+ICAgICAgICAgPiArc3RydWN0IGk5MTVfcGVyZl9zdHJl YW07Cj4gICAgICAgICA+ICsKPiAgICAgICAgID4gK3N0cnVjdCBpOTE1X3BlcmZfc3RyZWFtX29w cyB7Cj4gICAgICAgICA+ICsgICAgIC8qIEVuYWJsZXMgdGhlIGNvbGxlY3Rpb24gb2YgSFcgc2Ft cGxlcywgZWl0aGVyIGluCj4gICAgICAgICByZXNwb25zZSB0bwo+ICAgICAgICAgPiArICAgICAg KiBJOTE1X1BFUkZfSU9DVExfRU5BQkxFIG9yIGltcGxpY2l0bHkgY2FsbGVkIHdoZW4KPiAgICAg ICAgIHN0cmVhbSBpcwo+ICAgICAgICAgPiArICAgICAgKiBvcGVuZWQgd2l0aG91dCBJOTE1X1BF UkZfRkxBR19ESVNBQkxFRC4KPiAgICAgICAgID4gKyAgICAgICovCj4gICAgICAgICA+ICsgICAg IHZvaWQgKCplbmFibGUpKHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0pOwo+ICAgICAg ICAgPiArCj4gICAgICAgICA+ICsgICAgIC8qIERpc2FibGVzIHRoZSBjb2xsZWN0aW9uIG9mIEhX IHNhbXBsZXMsIGVpdGhlciBpbgo+ICAgICAgICAgcmVzcG9uc2UgdG8KPiAgICAgICAgID4gKyAg ICAgICogSTkxNV9QRVJGX0lPQ1RMX0RJU0FCTEUgb3IgaW1wbGljaXRseSBjYWxsZWQgYmVmb3Jl Cj4gICAgICAgICA+ICsgICAgICAqIGRlc3Ryb3lpbmcgdGhlIHN0cmVhbS4KPiAgICAgICAgID4g KyAgICAgICovCj4gICAgICAgICA+ICsgICAgIHZvaWQgKCpkaXNhYmxlKShzdHJ1Y3QgaTkxNV9w ZXJmX3N0cmVhbSAqc3RyZWFtKTsKPiAgICAgICAgID4gKwo+ICAgICAgICAgPiArICAgICAvKiBS ZXR1cm46IHRydWUgaWYgYW55IGk5MTUgcGVyZiByZWNvcmRzIGFyZSByZWFkeSB0bwo+ICAgICAg ICAgcmVhZCgpCj4gICAgICAgICA+ICsgICAgICAqIGZvciB0aGlzIHN0cmVhbS4KPiAgICAgICAg ID4gKyAgICAgICovCj4gICAgICAgICA+ICsgICAgIGJvb2wgKCpjYW5fcmVhZCkoc3RydWN0IGk5 MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSk7Cj4gICAgICAgICA+ICsKPiAgICAgICAgID4gKyAgICAg LyogQ2FsbCBwb2xsX3dhaXQsIHBhc3NpbmcgYSB3YWl0IHF1ZXVlIHRoYXQgd2lsbCBiZQo+ICAg ICAgICAgd29rZW4KPiAgICAgICAgID4gKyAgICAgICogb25jZSB0aGVyZSBpcyBzb21ldGhpbmcg cmVhZHkgdG8gcmVhZCgpIGZvciB0aGUKPiAgICAgICAgIHN0cmVhbQo+ICAgICAgICAgPiArICAg ICAgKi8KPiAgICAgICAgID4gKyAgICAgdm9pZCAoKnBvbGxfd2FpdCkoc3RydWN0IGk5MTVfcGVy Zl9zdHJlYW0gKnN0cmVhbSwKPiAgICAgICAgID4gKyAgICAgICAgICAgICAgICAgICAgICAgc3Ry dWN0IGZpbGUgKmZpbGUsCj4gICAgICAgICA+ICsgICAgICAgICAgICAgICAgICAgICAgIHBvbGxf dGFibGUgKndhaXQpOwo+ICAgICAgICAgPiArCj4gICAgICAgICA+ICsgICAgIC8qIEZvciBoYW5k bGluZyBhIGJsb2NraW5nIHJlYWQsIHdhaXQgdW50aWwgdGhlcmUgaXMKPiAgICAgICAgIHNvbWV0 aGluZwo+ICAgICAgICAgPiArICAgICAgKiB0byByZWFkeSB0byByZWFkKCkgZm9yIHRoZSBzdHJl YW0uIEUuZy4gd2FpdCBvbiB0aGUKPiAgICAgICAgIHNhbWUKPiAgICAgICAgID4gKyAgICAgICog d2FpdCBxdWV1ZSB0aGF0IHdvdWxkIGJlIHBhc3NlZCB0byBwb2xsX3dhaXQoKQo+ICAgICAgICAg dW50aWwKPiAgICAgICAgID4gKyAgICAgICogLT5jYW5fcmVhZCgpIHJldHVybnMgdHJ1ZSAoaWYg aXRzIHNhZmUgdG8gY2FsbAo+ICAgICAgICAgLT5jYW5fcmVhZCgpCj4gICAgICAgICA+ICsgICAg ICAqIHdpdGhvdXQgdGhlIGk5MTUgcGVyZiBsb2NrIGhlbGQpLgo+ICAgICAgICAgPiArICAgICAg Ki8KPiAgICAgICAgID4gKyAgICAgaW50ICgqd2FpdF91bmxvY2tlZCkoc3RydWN0IGk5MTVfcGVy Zl9zdHJlYW0gKnN0cmVhbSk7Cj4gICAgICAgICA+ICsKPiAgICAgICAgID4gKyAgICAgLyogcmVh ZCAtIENvcHkgYnVmZmVyZWQgbWV0cmljcyBhcyByZWNvcmRzIHRvCj4gICAgICAgICB1c2Vyc3Bh Y2UKPiAgICAgICAgID4gKyAgICAgICogQGJ1ZjogdGhlIHVzZXJzcGFjZSwgZGVzdGluYXRpb24g YnVmZmVyCj4gICAgICAgICA+ICsgICAgICAqIEBjb3VudDogdGhlIG51bWJlciBvZiBieXRlcyB0 byBjb3B5LCByZXF1ZXN0ZWQgYnkKPiAgICAgICAgIHVzZXJzcGFjZQo+ICAgICAgICAgPiArICAg ICAgKiBAb2Zmc2V0OiB6ZXJvIGF0IHRoZSBzdGFydCBvZiB0aGUgcmVhZCwgdXBkYXRlZCBhcwo+ ICAgICAgICAgdGhlIHJlYWQKPiAgICAgICAgID4gKyAgICAgICogICAgICAgICAgcHJvY2VlZHMs IGl0IHJlcHJlc2VudHMgaG93IG1hbnkgYnl0ZXMKPiAgICAgICAgIGhhdmUgYmVlbgo+ICAgICAg ICAgPiArICAgICAgKiAgICAgICAgICBjb3BpZWQgc28gZmFyIGFuZCB0aGUgYnVmZmVyIG9mZnNl dCBmb3IKPiAgICAgICAgIGNvcHlpbmcgdGhlCj4gICAgICAgICA+ICsgICAgICAqICAgICAgICAg IG5leHQgcmVjb3JkLgo+ICAgICAgICAgPiArICAgICAgKgo+ICAgICAgICAgPiArICAgICAgKiBD b3B5IGFzIG1hbnkgYnVmZmVyZWQgaTkxNSBwZXJmIHNhbXBsZXMgYW5kIHJlY29yZHMKPiAgICAg ICAgIGZvcgo+ICAgICAgICAgPiArICAgICAgKiB0aGlzIHN0cmVhbSB0byB1c2Vyc3BhY2UgYXMg d2lsbCBmaXQgaW4gdGhlIGdpdmVuCj4gICAgICAgICBidWZmZXIuCj4gICAgICAgICA+ICsgICAg ICAqCj4gICAgICAgICA+ICsgICAgICAqIE9ubHkgd3JpdGUgY29tcGxldGUgcmVjb3JkczsgcmV0 dXJuaW5nIC1FTk9TUEMgaWYKPiAgICAgICAgIHRoZXJlCj4gICAgICAgICA+ICsgICAgICAqIGlz bid0IHJvb20gZm9yIGEgY29tcGxldGUgcmVjb3JkLgo+ICAgICAgICAgPiArICAgICAgKgo+ICAg ICAgICAgPiArICAgICAgKiBSZXR1cm4gYW55IGVycm9yIGNvbmRpdGlvbiB0aGF0IHJlc3VsdHMg aW4gYSBzaG9ydAo+ICAgICAgICAgcmVhZAo+ICAgICAgICAgPiArICAgICAgKiBzdWNoIGFzIC1F Tk9TUEMgb3IgLUVGQVVMVCwgZXZlbiB0aG91Z2ggdGhlc2UgbWF5Cj4gICAgICAgICBiZQo+ICAg ICAgICAgPiArICAgICAgKiBzcXVhc2hlZCBiZWZvcmUgcmV0dXJuaW5nIHRvIHVzZXJzcGFjZS4K PiAgICAgICAgID4gKyAgICAgICovCj4gICAgICAgICA+ICsgICAgIGludCAoKnJlYWQpKHN0cnVj dCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0sCj4gICAgICAgICA+ICsgICAgICAgICAgICAgICAg IGNoYXIgX191c2VyICpidWYsCj4gICAgICAgICA+ICsgICAgICAgICAgICAgICAgIHNpemVfdCBj b3VudCwKPiAgICAgICAgID4gKyAgICAgICAgICAgICAgICAgc2l6ZV90ICpvZmZzZXQpOwo+ICAg ICAgICAgPiArCj4gICAgICAgICA+ICsgICAgIC8qIENsZWFudXAgYW55IHN0cmVhbSBzcGVjaWZp YyByZXNvdXJjZXMuCj4gICAgICAgICA+ICsgICAgICAqCj4gICAgICAgICA+ICsgICAgICAqIFRo ZSBzdHJlYW0gd2lsbCBhbHdheXMgYmUgZGlzYWJsZWQgYmVmb3JlIHRoaXMgaXMKPiAgICAgICAg IGNhbGxlZC4KPiAgICAgICAgID4gKyAgICAgICovCj4gICAgICAgICA+ICsgICAgIHZvaWQgKCpk ZXN0cm95KShzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtKTsKPiAgICAgICAgID4gK307 Cj4gICAgICAgICA+ICsKPiAgICAgICAgID4gK3N0cnVjdCBpOTE1X3BlcmZfc3RyZWFtIHsKPiAg ICAgICAgID4gKyAgICAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2Owo+ICAgICAg ICAgPiArCj4gICAgICAgICA+ICsgICAgIHN0cnVjdCBsaXN0X2hlYWQgbGluazsKPiAgICAgICAg ID4gKwo+ICAgICAgICAgPiArICAgICB1MzIgc2FtcGxlX2ZsYWdzOwo+ICAgICAgICAgPiArCj4g ICAgICAgICA+ICsgICAgIHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHg7Cj4gICAgICAgICA+ ICsgICAgIGJvb2wgZW5hYmxlZDsKPiAgICAgICAgID4gKwo+ICAgICAgICAgPiArICAgICBzdHJ1 Y3QgaTkxNV9wZXJmX3N0cmVhbV9vcHMgKm9wczsKPiAgICAgICAgID4gK307Cj4gICAgICAgICA+ ICsKPiAgICAgICAgID4gIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlIHsKPiAgICAgICAgID4gICAg ICAgc3RydWN0IGRybV9kZXZpY2UgZHJtOwo+ICAgICAgICAgPgo+ICAgICAgICAgPiBAQCAtMjA2 OSw2ICsyMTQ3LDEyIEBAIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlIHsKPiAgICAgICAgID4KPiAg ICAgICAgID4gICAgICAgc3RydWN0IGk5MTVfcnVudGltZV9wbSBwbTsKPiAgICAgICAgID4KPiAg ICAgICAgID4gKyAgICAgc3RydWN0IHsKPiAgICAgICAgID4gKyAgICAgICAgICAgICBib29sIGlu aXRpYWxpemVkOwo+ICAgICAgICAgPiArICAgICAgICAgICAgIHN0cnVjdCBtdXRleCBsb2NrOwo+ ICAgICAgICAgPiArICAgICAgICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgc3RyZWFtczsKPiAgICAg ICAgID4gKyAgICAgfSBwZXJmOwo+ICAgICAgICAgPiArCj4gICAgICAgICA+ICAgICAgIC8qIEFi c3RyYWN0IHRoZSBzdWJtaXNzaW9uIG1lY2hhbmlzbSAobGVnYWN5Cj4gICAgICAgICByaW5nYnVm ZmVyIG9yIGV4ZWNsaXN0cykgYXdheSAqLwo+ICAgICAgICAgPiAgICAgICBzdHJ1Y3Qgewo+ICAg ICAgICAgPiAgICAgICAgICAgICAgIHZvaWQgKCpyZXN1bWUpKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICopOwo+ICAgICAgICAgPiBAQCAtMzQ4Miw2ICszNTY2LDkgQEAgaW50Cj4gICAgICAgICBp OTE1X2dlbV9jb250ZXh0X3NldHBhcmFtX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZv aWQKPiAgICAgICAgICpkYXRhLAo+ICAgICAgICAgPiAgaW50IGk5MTVfZ2VtX2NvbnRleHRfcmVz ZXRfc3RhdHNfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UKPiAgICAgICAgICpkZXYsIHZvaWQgKmRh dGEsCj4gICAgICAgICA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1 Y3QgZHJtX2ZpbGUgKmZpbGUpOwo+ICAgICAgICAgPgo+ICAgICAgICAgPiAraW50IGk5MTVfcGVy Zl9vcGVuX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQKPiAgICAgICAgICpkYXRh LAo+ICAgICAgICAgPiArICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkcm1fZmlsZSAqZmls ZSk7Cj4gICAgICAgICA+ICsKPiAgICAgICAgID4gIC8qIGk5MTVfZ2VtX2V2aWN0LmMgKi8KPiAg ICAgICAgID4gIGludCBfX211c3RfY2hlY2sgaTkxNV9nZW1fZXZpY3Rfc29tZXRoaW5nKHN0cnVj dAo+ICAgICAgICAgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKPiAgICAgICAgID4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHU2NCBtaW5fc2l6ZSwgdTY0Cj4gICAgICAg ICBhbGlnbm1lbnQsCj4gICAgICAgICA+IEBAIC0zNjA3LDYgKzM2OTQsMTAgQEAgaW50IGludGVs X2VuZ2luZV9jbWRfcGFyc2VyKHN0cnVjdAo+ICAgICAgICAgaW50ZWxfZW5naW5lX2NzICplbmdp bmUsCj4gICAgICAgICA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgdTMyIGJhdGNoX2xlbiwK PiAgICAgICAgID4gICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzX21hc3Rlcik7Cj4g ICAgICAgICA+Cj4gICAgICAgICA+ICsvKiBpOTE1X3BlcmYuYyAqLwo+ICAgICAgICAgPiArZXh0 ZXJuIHZvaWQgaTkxNV9wZXJmX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUKPiAgICAgICAg ICpkZXZfcHJpdik7Cj4gICAgICAgICA+ICtleHRlcm4gdm9pZCBpOTE1X3BlcmZfZmluaShzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZQo+ICAgICAgICAgKmRldl9wcml2KTsKPiAgICAgICAgID4gKwo+ ICAgICAgICAgPiAgLyogaTkxNV9zdXNwZW5kLmMgKi8KPiAgICAgICAgID4gIGV4dGVybiBpbnQg aTkxNV9zYXZlX3N0YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+ICAgICAgICAgPiAgZXh0 ZXJuIGludCBpOTE1X3Jlc3RvcmVfc3RhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldik7Cj4gICAg ICAgICA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BlcmYuYwo+ICAg ICAgICAgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BlcmYuYwo+ICAgICAgICAgPiBuZXcg ZmlsZSBtb2RlIDEwMDY0NAo+ICAgICAgICAgPiBpbmRleCAwMDAwMDAwLi5jNDVjZjkyCj4gICAg ICAgICA+IC0tLSAvZGV2L251bGwKPiAgICAgICAgID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9wZXJmLmMKPiAgICAgICAgID4gQEAgLTAsMCArMSw0NDMgQEAKPiAgICAgICAgID4g Ky8qCj4gICAgICAgICA+ICsgKiBDb3B5cmlnaHQgwqkgMjAxNS0yMDE2IEludGVsIENvcnBvcmF0 aW9uCj4gICAgICAgICA+ICsgKgo+ICAgICAgICAgPiArICogUGVybWlzc2lvbiBpcyBoZXJlYnkg Z3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueQo+ICAgICAgICAgcGVyc29uIG9idGFpbmlu ZyBhCj4gICAgICAgICA+ICsgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQg ZG9jdW1lbnRhdGlvbiBmaWxlcwo+ICAgICAgICAgKHRoZSAiU29mdHdhcmUiKSwKPiAgICAgICAg ID4gKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1 ZGluZwo+ICAgICAgICAgd2l0aG91dCBsaW1pdGF0aW9uCj4gICAgICAgICA+ICsgKiB0aGUgcmln aHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwKPiAgICAgICAgIGRpc3Ry aWJ1dGUsIHN1YmxpY2Vuc2UsCj4gICAgICAgICA+ICsgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2Yg dGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0Cj4gICAgICAgICBwZXJzb25zIHRvIHdob20gdGhl Cj4gICAgICAgICA+ICsgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3Qg dG8gdGhlIGZvbGxvd2luZwo+ICAgICAgICAgY29uZGl0aW9uczoKPiAgICAgICAgID4gKyAqCj4g ICAgICAgICA+ICsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNz aW9uIG5vdGljZQo+ICAgICAgICAgKGluY2x1ZGluZyB0aGUgbmV4dAo+ICAgICAgICAgPiArICog cGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yCj4gICAgICAgICBz dWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKPiAgICAgICAgID4gKyAqIFNvZnR3YXJlLgo+ICAg ICAgICAgPiArICoKPiAgICAgICAgID4gKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMg SVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GCj4gICAgICAgICBBTlkgS0lORCwgRVhQUkVTUyBPUgo+ ICAgICAgICAgPiArICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUg V0FSUkFOVElFUyBPRgo+ICAgICAgICAgTUVSQ0hBTlRBQklMSVRZLAo+ICAgICAgICAgPiArICog RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4KPiAg ICAgICAgIElOIE5PIEVWRU5UIFNIQUxMCj4gICAgICAgICA+ICsgKiBUSEUgQVVUSE9SUyBPUiBD T1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWQo+ICAgICAgICAgQ0xBSU0sIERBTUFH RVMgT1IgT1RIRVIKPiAgICAgICAgID4gKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJ T04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IKPiAgICAgICAgIE9USEVSV0lTRSwgQVJJU0lORwo+ICAg ICAgICAgPiArICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdB UkUgT1IgVEhFCj4gICAgICAgICBVU0UgT1IgT1RIRVIgREVBTElOR1MKPiAgICAgICAgID4gKyAq IElOIFRIRSBTT0ZUV0FSRS4KPiAgICAgICAgID4gKyAqCj4gICAgICAgICA+ICsgKiBBdXRob3Jz Ogo+ICAgICAgICAgPiArICogICBSb2JlcnQgQnJhZ2cgPHJvYmVydEBzaXhieW5pbmUub3JnPgo+ ICAgICAgICAgPiArICovCj4gICAgICAgICA+ICsKPiAgICAgICAgID4gKyNpbmNsdWRlIDxsaW51 eC9hbm9uX2lub2Rlcy5oPgo+ICAgICAgICAgPiArCj4gICAgICAgICA+ICsjaW5jbHVkZSAiaTkx NV9kcnYuaCIKPiAgICAgICAgID4gKwo+ICAgICAgICAgPiArc3RydWN0IHBlcmZfb3Blbl9wcm9w ZXJ0aWVzIHsKPiAgICAgICAgID4gKyAgICAgdTMyIHNhbXBsZV9mbGFnczsKPiAgICAgICAgID4g Kwo+ICAgICAgICAgPiArICAgICB1NjQgc2luZ2xlX2NvbnRleHQ6MTsKPiAgICAgICAgID4gKyAg ICAgdTY0IGN0eF9oYW5kbGU7Cj4gICAgICAgICA+ICt9Owo+ICAgICAgICAgPiArCj4gICAgICAg ICA+ICtzdGF0aWMgc3NpemVfdCBpOTE1X3BlcmZfcmVhZF9sb2NrZWQoc3RydWN0Cj4gICAgICAg ICBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0sCj4gICAgICAgICA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc3RydWN0IGZpbGUgKmZpbGUsCj4gICAgICAgICA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBfX3VzZXIgKmJ1ZiwKPiAgICAgICAgID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgY291bnQsCj4gICAgICAg ICA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9mZl90ICpwcG9zKQo+ICAg ICAgICAgPiArewo+ICAgICAgICAgPiArICAgICAvKiBOb3RlIHdlIGtlZXAgdGhlIG9mZnNldCAo YWthIGJ5dGVzIHJlYWQpIHNlcGFyYXRlCj4gICAgICAgICBmcm9tIGFueQo+ICAgICAgICAgPiAr ICAgICAgKiBlcnJvciBzdGF0dXMgc28gdGhhdCB0aGUgZmluYWwgY2hlY2sgZm9yIHdoZXRoZXIg d2UKPiAgICAgICAgIHJldHVybgo+ICAgICAgICAgPiArICAgICAgKiB0aGUgYnl0ZXMgcmVhZCB3 aXRoIGEgaGlnaGVyIHByZWNlZGVuY2UgdGhhbiBhbnkKPiAgICAgICAgIGVycm9yIChzZWUKPiAg ICAgICAgID4gKyAgICAgICogY29tbWVudCBiZWxvdykgZG9lc24ndCBuZWVkIHRvIGJlCj4gICAg ICAgICBoYW5kbGVkL2R1cGxpY2F0ZWQgaW4KPiAgICAgICAgID4gKyAgICAgICogc3RyZWFtLT5v cHMtPnJlYWQoKSBpbXBsZW1lbnRhdGlvbnMuCj4gICAgICAgICA+ICsgICAgICAqLwo+ICAgICAg ICAgPiArICAgICBzaXplX3Qgb2Zmc2V0ID0gMDsKPiAgICAgICAgID4gKyAgICAgaW50IHJldCA9 IHN0cmVhbS0+b3BzLT5yZWFkKHN0cmVhbSwgYnVmLCBjb3VudCwKPiAgICAgICAgICZvZmZzZXQp Owo+ICAgICAgICAgPiArCj4gICAgICAgICA+ICsgICAgIC8qIElmIHdlJ3ZlIHN1Y2Nlc3NmdWxs eSBjb3BpZWQgYW55IGRhdGEgdGhlbgo+ICAgICAgICAgcmVwb3J0aW5nIHRoYXQKPiAgICAgICAg ID4gKyAgICAgICogdGFrZXMgcHJlY2VkZW5jZSBvdmVyIGFueSBpbnRlcm5hbCBlcnJvciBzdGF0 dXMsIHNvCj4gICAgICAgICB0aGUKPiAgICAgICAgID4gKyAgICAgICogZGF0YSBpc24ndCBsb3N0 Lgo+ICAgICAgICAgPiArICAgICAgKgo+ICAgICAgICAgPiArICAgICAgKiBGb3IgZXhhbXBsZSBy ZXQgd2lsbCBiZSAtRU5PU1BDIHdoZW5ldmVyIHRoZXJlIGlzCj4gICAgICAgICBtb3JlCj4gICAg ICAgICA+ICsgICAgICAqIGJ1ZmZlcmVkIGRhdGEgdGhhbiBjYW4gYmUgY29waWVkIHRvIHVzZXJz cGFjZSwgYnV0Cj4gICAgICAgICB0aGF0J3MKPiAgICAgICAgID4gKyAgICAgICogb25seSBpbnRl cmVzdGluZyBpZiB3ZSB3ZXJlbid0IGFibGUgdG8gY29weSBzb21lCj4gICAgICAgICBkYXRhCj4g ICAgICAgICA+ICsgICAgICAqIGJlY2F1c2UgaXQgaW1wbGllcyB0aGUgdXNlcnNwYWNlIGJ1ZmZl ciBpcyB0b28KPiAgICAgICAgIHNtYWxsIHRvCj4gICAgICAgICA+ICsgICAgICAqIHJlY2VpdmUg YSBzaW5nbGUgcmVjb3JkIChhbmQgd2UgbmV2ZXIgc3BsaXQKPiAgICAgICAgIHJlY29yZHMpLgo+ ICAgICAgICAgPiArICAgICAgKgo+ICAgICAgICAgPiArICAgICAgKiBBbm90aGVyIGNhc2Ugd2l0 aCByZXQgPT0gLUVGQVVMVCBpcyBtb3JlIG9mIGEgZ3JleQo+ICAgICAgICAgYXJlYQo+ICAgICAg ICAgPiArICAgICAgKiBzaW5jZSBpdCB3b3VsZCBzZWVtIGxpa2UgYmFkIGZvcm0gZm9yIHVzZXJz cGFjZSB0bwo+ICAgICAgICAgYXNrIHVzCj4gICAgICAgICA+ICsgICAgICAqIHRvIG92ZXJydW4g aXRzIGJ1ZmZlciwgYnV0IHRoZSB1c2VyIGtub3dzIGJlc3Q6Cj4gICAgICAgICA+ICsgICAgICAq Cj4gICAgICAgICA+ICsgICAgICAqCj4gICAgICAgICAgaHR0cDovL3lhcmNoaXZlLm5ldC9jb21w L2xpbnV4L3BhcnRpYWxfcmVhZHNfd3JpdGVzLmh0bWwKPiAgICAgICAgID4gKyAgICAgICovCj4g ICAgICAgICA+ICsgICAgIHJldHVybiBvZmZzZXQgPzogKHJldCA/OiAtRUFHQUlOKTsKPiAgICAg ICAgID4gK30KPiAgICAgICAgID4gKwo+ICAgICAgICAgPiArc3RhdGljIHNzaXplX3QgaTkxNV9w ZXJmX3JlYWQoc3RydWN0IGZpbGUgKmZpbGUsCj4gICAgICAgICA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICBjaGFyIF9fdXNlciAqYnVmLAo+ICAgICAgICAgPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgc2l6ZV90IGNvdW50LAo+ICAgICAgICAgPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgbG9mZl90ICpwcG9zKQo+ICAgICAgICAgPiArewo+ICAgICAgICAgPiArICAgICBz dHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtID0gZmlsZS0+cHJpdmF0ZV9kYXRhOwo+ICAg ICAgICAgPiArICAgICBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBzdHJlYW0t PmRldl9wcml2Owo+ICAgICAgICAgPiArICAgICBzc2l6ZV90IHJldDsKPiAgICAgICAgID4gKwo+ ICAgICAgICAgPiArICAgICBpZiAoIShmaWxlLT5mX2ZsYWdzICYgT19OT05CTE9DSykpIHsKPiAg ICAgICAgID4gKyAgICAgICAgICAgICAvKiBBbGxvdyBmYWxzZSBwb3NpdGl2ZXMgZnJvbQo+ICAg ICAgICAgc3RyZWFtLT5vcHMtPndhaXRfdW5sb2NrZWQuCj4gICAgICAgICA+ICsgICAgICAgICAg ICAgICovCj4gICAgICAgICA+ICsgICAgICAgICAgICAgZG8gewo+ICAgICAgICAgPiArICAgICAg ICAgICAgICAgICAgICAgcmV0ID0KPiAgICAgICAgIHN0cmVhbS0+b3BzLT53YWl0X3VubG9ja2Vk KHN0cmVhbSk7Cj4gICAgICAgICA+ICsgICAgICAgICAgICAgICAgICAgICBpZiAocmV0KQo+ICAg ICAgICAgPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmV0Owo+ICAgICAg ICAgPiArCj4gICAgICAgICA+ICsgICAgICAgICAgICAgICAgICAgICBtdXRleF9sb2NrKCZkZXZf cHJpdi0+cGVyZi5sb2NrKTsKPiAgICAgICAgIAo+ICAgICAgICAgCj4gICAgICAgICBTaG91bGQg aW50ZXJydXB0aWJsZSB2ZXJzaW9uIGJlIHVzZWQgaGVyZSwgdG8gYWxsb3cgZm9yIHJlYWRzCj4g ICAgICAgICB0byBiZQo+ICAgICAgICAgaW50ZXJydXB0ZWQ/Cj4gCj4gCj4gTm93IHRoYXQgd2Ug ZG9uJ3QgaGF2ZSB0aGUgY29udGV4dCBwaW4gaG9vayBvbiBoYXN3ZWxsIHdlCj4gY291bGQgL2Fs bW9zdC8gZ2V0IGF3YXkgd2l0aG91dCB0aGlzIGxvY2sgZXhjZXB0IGZvciBpdHMgdXNlIHRvCj4g c3luY2hyb25pemUgaTkxNV9wZXJmX3JlZ2lzdGVyIHdpdGggaTkxNV9wZXJmX29wZW5faW9jdGwu Cj4gCj4gCj4gTW9zdCBvZiB0aGUgaTkxNS1wZXJmIHN0YXRlIGFjY2VzcyBpcyBzeW5jaHJvbml6 ZWQgYXMgYSByZXN1bHQgb2YKPiBiZWluZyBmb3BzIGRyaXZlbiwgc28gdGhpcyBwZXJmLmxvY2sg d2FzIGFkZGVkIHRvIGRlYWwgd2l0aCBhIGZldwo+IGVudHJ5cG9pbnRzIG91dHNpZGUgb2YgZm9w cyBzdWNoIGFzIHRoZSBjb250ZWN0IHBpbm5pbmcgaG9vayB3ZSB1c2VkCj4gdG8gaGF2ZSAodGhv dWdoIHdlIGF2b2lkIGl0IGluIHRoZSBocnRpbWVyIGNhbGxiYWNrKS4KPiAKPiAKPiAKPiBBbHRo b3VnaCB0aGUgcmVjZW50IGNoYW5nZSB0byByZW1vdmUgdGhlIHBpbiBob29rIGhhcyBtYWRlIHRo ZSBsb2NrCj4gbG9vayBhIGJpdCByZWR1bmRhbnQgZm9yIG5vdywgSSB0aGluayBJJ2QgcHJlZmVy IHRvIGxlYXZlIHRoZSBsb2NrcyBhcwo+IHRoZXkgYXJlIHRvIGF2b2lkIHRoZSBjaHVybiB3aXRo IHRoZSBnZW44KyBwYXRjaGVzIHdoZXJlIHdlIGRvIGhhdmUKPiBzb21lIG90aGVyIGVudHJ5cG9p bnRzIGludG8gaTkxNS1wZXJmIG91dHNpZGUgb2YgdGhlIGZvcHMuCj4gCj4gCj4gR2l2ZW4gdGhh dCB0aG91Z2gsIHRoZXJlJ3MgY3VycmVudGx5IG5vdCByZWFsbHkgbXVjaCBhcmd1bWVudCBlaXRo ZXIKPiB3YXkgZm9yIHRoZW0gYmVpbmcgaW50ZXJydXB0aWJsZS4gVGhlIGV4cGVjdGF0aW9uIEkg aGF2ZSBhdG0gaXMgdGhhdAo+IHRoZXJlIHNob3VsZG4ndCBiZSBhbnl0aGluZyBydW5uaW5nIGFz eW5jIHdpdGhpbiBpOTE1LXBlcmYgb3V0c2lkZSBvZgo+IGZvcHMgdGhhdCdzIGV4cGVjdGVkIHRv IGJlIGxvbmcgcnVubmluZy4gV2Ugd2lsbCBwcm9iYWJseSBhbHNvIHdhbnQgdG8KPiBjb25zaWRl ciB0aGUgcmlzayBvZiBib3VuY2luZyBsb3RzIG9mIHJlYWRzLCBzdGFydmluZyB1c2Vyc3BhY2Ug YW5kCj4gaW5jcmVhc2luZyB0aGUgcmlzayBvZiBhIGJ1ZmZlciBvdmVyZmxvdyBpZiB0aGlzIGlz IGludGVycnVwdGlibGUuCj4gCldlbGwsIHRoYXQgbWFrZXMgc2Vuc2UuIEknbSBva2F5IHdpdGgg cmVzdCBvZiB0aGUgaW50ZXJmYWNlcyBleHBvc2VkCmhlcmUgKEhhdmUgYmVlbiB1c2luZyB0aGVt IGZvciBteSB3b3JrIHRvbykuIFNvLApSZXZpZXdlZC1ieTogU291cmFiIEd1cHRhIDxzb3VyYWIu Z3VwdGFAaW50ZWwuY29tPgo+IAo+IC0gUm9iZXJ0Cj4gCgoKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1n ZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21h aWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==