From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH v6] drm/i915/guc: Add GuC css header parser Date: Wed, 21 Oct 2015 14:12:43 +0200 Message-ID: <20151021121243.GP13786@phenom.ffwll.local> References: <1444775409-20312-1-git-send-email-yu.dai@intel.com> <1445296254-27710-1-git-send-email-yu.dai@intel.com> <56277349.6070904@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wi0-f176.google.com (mail-wi0-f176.google.com [209.85.212.176]) by gabe.freedesktop.org (Postfix) with ESMTPS id 3DF6F6E990 for ; Wed, 21 Oct 2015 05:12:47 -0700 (PDT) Received: by wicfx6 with SMTP id fx6so88160546wic.1 for ; Wed, 21 Oct 2015 05:12:45 -0700 (PDT) Content-Disposition: inline In-Reply-To: <56277349.6070904@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Dave Gordon Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCBPY3QgMjEsIDIwMTUgYXQgMTI6MTM6MTNQTSArMDEwMCwgRGF2ZSBHb3Jkb24gd3Jv dGU6Cj4gT24gMjAvMTAvMTUgMDA6MTAsIHl1LmRhaUBpbnRlbC5jb20gd3JvdGU6Cj4gPkZyb206 IEFsZXggRGFpIDx5dS5kYWlAaW50ZWwuY29tPgo+ID4KPiA+VGhlIHNpemUgLyBvZmZzZXQgaW5m b3JtYXRpb24gb2YgYWxsIGZpcm13YXJlIGluZ3JlZGllbnRzIGFyZQo+ID5ub3cgY2FjdWxhdGVk IGZyb20gaGVhZGVyLiBEcml2ZXIgd2lsbCB2YWxpZGF0ZSB0aGUgaGVhZGVyIGFuZAo+ID5yc2Eg a2V5IHNpemUuIElmIGFueSBjb21wb25lbnQgaXMgb3V0IG9mIGJvdW5kYXJ5LCBkcml2ZXIgd2ls bAo+ID5yZWplY3QgdGhlIGxvYWRpbmcgdG9vLgo+ID4KPiA+djY6IENsZWFuIHVwIHdhcm5pbmdz IGZyb20gbWFrZSBkb2NzCj4gPgo+ID52NTogVGlkeSB1cCBHdUMgdGl0bGVzIGluIGtlcm5lbC9E b2MKPiA+Cj4gPnY0OiBOb3cgdXNpbmcgJ3NpemVfZHcnIGZvciB0aG9zZSBkZWZpbmVkIGluIGNz c19oZWFkZXIKPiA+Cj4gPnYzOiAxKSBNb3ZlIERPQyB0byBpbnRlbF9ndWNfZndpZi5oIHJpZ2h0 IGJlZm9yZSBjc3NfaGVhZGVyCj4gPmRlZmluaXRpb24uIEFkZCBtb3JlIGNvbW1lbnRzLgo+ID4g ICAgIDIpIENoYW5nZSAnc2l6ZScgdG8gJ2xlbicgb3IgJ2xlbmd0aCcgdG8gYXZvaWQgY29uZnVz aW9uLgo+ID4gICAgIDMpIEFkZCBVT1NfUlNBX1NDUkFUQ0hfTUFYX0NPVU5UIGFjY29yZGluZyB0 byBCU3BlYy4gQW5kCj4gPmRyaXZlciB2YWxpZGF0ZSBzaXplIG9mIFJTQSBrZXkgbm93Lgo+ID4g ICAgIDQpIEFkZCBmdyBjb21wb25lbnQgc2l6ZS9vZmZzZXQgaW5mbyB0byBpbnRlbF9ndWNfZncu Cj4gPgo+ID52MjogQWRkIGluZGVudCBpbnRvIERPQyB0byBtYWtlIGZpeGVkLXdpZHRoIGZvcm1h dCByYXRoZXIgdGhhbgo+ID5jaGFuZ2UgdGhlIHRtcGwuCj4gPgo+ID52MTogMSkgZ3VjX2Nzc19o ZWFkZXIgaXMgZGVmaW5lZCBhcyBfX3BhY2tlZCBub3cKPiA+ICAgICAyKSBBZGQgYW5kIGNvcnJl Y3QgR3VDIHJlbGF0ZWQgdG9waWNzIGluIGtlcm5lbC9Eb2MKPiA+Cj4gPlNpZ25lZC1vZmYtYnk6 IEFsZXggRGFpIDx5dS5kYWlAaW50ZWwuY29tPgo+ID4tLS0KPiAKPiBEb2Nib29rIGxvb2tzIE9L IG5vdywgYW5kIHRoZSBjb2RlIGlzIHRoZSBzYW1lIGFzIGxhc3QgdmVyc2lvbiBJIHJldmlld2Vk LAo+IHNvIC4uLgo+IAo+IFJldmlld2VkLWJ5OiBEYXZlIEdvcmRvbiA8ZGF2aWQucy5nb3Jkb25A aW50ZWwuY29tPgoKUXVldWVkIGZvciAtbmV4dCwgdGhhbmtzIGZvciB0aGUgcGF0Y2guCi1EYW5p ZWwKCj4gCj4gPiAgRG9jdW1lbnRhdGlvbi9Eb2NCb29rL2dwdS50bXBsICAgICAgICAgICAgIHwg MTIgKystLQo+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jICAgICAgICB8 ICA2ICsrCj4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfcmVnLmggICAgICAgIHwg IDEgKwo+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYyB8ICA4 ICstLQo+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Yy5oICAgICAgICAgICB8ICA4 ICsrLQo+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19md2lmLmggICAgICB8IDcy ICsrKysrKysrKysrKysrKysrKysrKysKPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9n dWNfbG9hZGVyLmMgICAgfCA5NSArKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0KPiA+ICA3 IGZpbGVzIGNoYW5nZWQsIDE1NyBpbnNlcnRpb25zKCspLCA0NSBkZWxldGlvbnMoLSkKPiA+Cj4g PmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svZ3B1LnRtcGwgYi9Eb2N1bWVudGF0 aW9uL0RvY0Jvb2svZ3B1LnRtcGwKPiA+aW5kZXggYzA1ZDdkZi4uM2RjZTZmNiAxMDA2NDQKPiA+ LS0tIGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL2dwdS50bXBsCj4gPisrKyBiL0RvY3VtZW50YXRp b24vRG9jQm9vay9ncHUudG1wbAo+ID5AQCAtNDExNSwxNyArNDExNSwyMSBAQCBpbnQgbnVtX2lv Y3Rsczs8L3N5bm9wc2lzPgo+ID4gICAgICAgIDwvc2VjdDI+Cj4gPiAgICAgIDwvc2VjdDE+Cj4g PiAgICAgIDxzZWN0MT4KPiA+LSAgICAgIDx0aXRsZT5HdUMtYmFzZWQgQ29tbWFuZCBTdWJtaXNz aW9uPC90aXRsZT4KPiA+KyAgICAgIDx0aXRsZT5HdUM8L3RpdGxlPgo+ID4gICAgICAgIDxzZWN0 Mj4KPiA+LSAgICAgICAgPHRpdGxlPkd1QzwvdGl0bGU+Cj4gPisgICAgICAgIDx0aXRsZT5HdUMt c3BlY2lmaWMgZmlybXdhcmUgbG9hZGVyPC90aXRsZT4KPiA+ICAhUGRyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2d1Y19sb2FkZXIuYyBHdUMtc3BlY2lmaWMgZmlybXdhcmUgbG9hZGVyCj4gPiAg IUlkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfbG9hZGVyLmMKPiA+ICAgICAgICA8L3Nl Y3QyPgo+ID4gICAgICAgIDxzZWN0Mj4KPiA+LSAgICAgICAgPHRpdGxlPkd1QyBDbGllbnQ8L3Rp dGxlPgo+ID4tIVBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMgR3VD LWJhc2VkIGNvbW1hbmQgc3VibWlzc2lzb24KPiA+KyAgICAgICAgPHRpdGxlPkd1Qy1iYXNlZCBj b21tYW5kIHN1Ym1pc3Npb248L3RpdGxlPgo+ID4rIVBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2d1Y19zdWJtaXNzaW9uLmMgR3VDLWJhc2VkIGNvbW1hbmQgc3VibWlzc2lvbgo+ID4gICFJZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlzc2lvbi5jCj4gPiAgICAgICAgPC9zZWN0 Mj4KPiA+KyAgICAgIDxzZWN0Mj4KPiA+KyAgICAgICAgPHRpdGxlPkd1QyBGaXJtd2FyZSBMYXlv dXQ8L3RpdGxlPgo+ID4rIVBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfZndpZi5oIEd1 QyBGaXJtd2FyZSBMYXlvdXQKPiA+KyAgICAgIDwvc2VjdDI+Cj4gPiAgICAgIDwvc2VjdDE+Cj4g Pgo+ID4gICAgICA8c2VjdDE+Cj4gPmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2RlYnVnZnMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4gPmlu ZGV4IGEzYjIyYmQuLmVjYTk0ZDAgMTAwNjQ0Cj4gPi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZGVidWdmcy5jCj4gPisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdm cy5jCj4gPkBAIC0yNDAyLDYgKzI0MDIsMTIgQEAgc3RhdGljIGludCBpOTE1X2d1Y19sb2FkX3N0 YXR1c19pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKPiA+ICAJCWd1Y19mdy0+ Z3VjX2Z3X21ham9yX3dhbnRlZCwgZ3VjX2Z3LT5ndWNfZndfbWlub3Jfd2FudGVkKTsKPiA+ICAJ c2VxX3ByaW50ZihtLCAiXHR2ZXJzaW9uIGZvdW5kOiAlZC4lZFxuIiwKPiA+ICAJCWd1Y19mdy0+ Z3VjX2Z3X21ham9yX2ZvdW5kLCBndWNfZnctPmd1Y19md19taW5vcl9mb3VuZCk7Cj4gPisJc2Vx X3ByaW50ZihtLCAiXHRoZWFkZXI6IG9mZnNldCBpcyAlZDsgc2l6ZSA9ICVkXG4iLAo+ID4rCQln dWNfZnctPmhlYWRlcl9vZmZzZXQsIGd1Y19mdy0+aGVhZGVyX3NpemUpOwo+ID4rCXNlcV9wcmlu dGYobSwgIlx0dUNvZGU6IG9mZnNldCBpcyAlZDsgc2l6ZSA9ICVkXG4iLAo+ID4rCQlndWNfZnct PnVjb2RlX29mZnNldCwgZ3VjX2Z3LT51Y29kZV9zaXplKTsKPiA+KwlzZXFfcHJpbnRmKG0sICJc dFJTQTogb2Zmc2V0IGlzICVkOyBzaXplID0gJWRcbiIsCj4gPisJCWd1Y19mdy0+cnNhX29mZnNl dCwgZ3VjX2Z3LT5yc2Ffc2l6ZSk7Cj4gPgo+ID4gIAl0bXAgPSBJOTE1X1JFQUQoR1VDX1NUQVRV Uyk7Cj4gPgo+ID5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfcmVn LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19yZWcuaAo+ID5pbmRleCBjNGNiMWMw Li5iNTFiODI4IDEwMDY0NAo+ID4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19y ZWcuaAo+ID4rKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19yZWcuaAo+ID5AQCAt NDIsNiArNDIsNyBAQAo+ID4gICNkZWZpbmUgU09GVF9TQ1JBVENIKG4pCQkJKDB4YzE4MCArICgo bikgKiA0KSkKPiA+Cj4gPiAgI2RlZmluZSBVT1NfUlNBX1NDUkFUQ0goaSkJCSgweGMyMDAgKyAo aSkgKiA0KQo+ID4rI2RlZmluZSAgIFVPU19SU0FfU0NSQVRDSF9NQVhfQ09VTlQJICA2NAo+ID4g ICNkZWZpbmUgRE1BX0FERFJfMF9MT1cJCQkweGMzMDAKPiA+ICAjZGVmaW5lIERNQV9BRERSXzBf SElHSAkJCTB4YzMwNAo+ID4gICNkZWZpbmUgRE1BX0FERFJfMV9MT1cJCQkweGMzMDgKPiA+ZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYwo+ID5pbmRleCAwMzZiNDJi Li41OGE2MWM0IDEwMDY0NAo+ID4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19z dWJtaXNzaW9uLmMKPiA+KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlz c2lvbi5jCj4gPkBAIC0yNyw3ICsyNyw3IEBACj4gPiAgI2luY2x1ZGUgImludGVsX2d1Yy5oIgo+ ID4KPiA+ICAvKioKPiA+LSAqIERPQzogR3VDIENsaWVudAo+ID4rICogRE9DOiBHdUMtYmFzZWQg Y29tbWFuZCBzdWJtaXNzaW9uCj4gPiAgICoKPiA+ICAgKiBpOTE1X2d1Y19jbGllbnQ6Cj4gPiAg ICogV2UgdXNlIHRoZSB0ZXJtIGNsaWVudCB0byBhdm9pZCBjb25mdXNpb24gd2l0aCBjb250ZXh0 cy4gQSBpOTE1X2d1Y19jbGllbnQgaXMKPiA+QEAgLTU4OCw4ICs1ODgsNyBAQCBzdGF0aWMgdm9p ZCBscl9jb250ZXh0X3VwZGF0ZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJxKQo+ID4g IC8qKgo+ID4gICAqIGk5MTVfZ3VjX3N1Ym1pdCgpIC0gU3VibWl0IGNvbW1hbmRzIHRocm91Z2gg R3VDCj4gPiAgICogQGNsaWVudDoJdGhlIGd1YyBjbGllbnQgd2hlcmUgY29tbWFuZHMgd2lsbCBn byB0aHJvdWdoCj4gPi0gKiBAY3R4OglMUkMgd2hlcmUgY29tbWFuZHMgY29tZSBmcm9tCj4gPi0g KiBAcmluZzoJSFcgZW5naW5lIHRoYXQgd2lsbCBleGN1dGUgdGhlIGNvbW1hbmRzCj4gPisgKiBA cnE6CQlyZXF1ZXN0IGFzc29jaWF0ZWQgd2l0aCB0aGUgY29tbWFuZHMKPiA+ICAgKgo+ID4gICAq IFJldHVybjoJMCBpZiBzdWNjZWVkCj4gPiAgICovCj4gPkBAIC03MzEsNyArNzMwLDggQEAgc3Rh dGljIHZvaWQgZ3VjX2NsaWVudF9mcmVlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gPiAgICog CQlUaGUga2VybmVsIGNsaWVudCB0byByZXBsYWNlIEV4ZWNMaXN0IHN1Ym1pc3Npb24gaXMgY3Jl YXRlZCB3aXRoCj4gPiAgICogCQlOT1JNQUwgcHJpb3JpdHkuIFByaW9yaXR5IG9mIGEgY2xpZW50 IGZvciBzY2hlZHVsZXIgY2FuIGJlIEhJR0gsCj4gPiAgICogCQl3aGlsZSBhIHByZWVtcHRpb24g Y29udGV4dCBjYW4gdXNlIENSSVRJQ0FMLgo+ID4tICogQGN0eAkJdGhlIGNvbnRleHQgdG8gb3du IHRoZSBjbGllbnQgKHdlIHVzZSB0aGUgZGVmYXVsdCByZW5kZXIgY29udGV4dCkKPiA+KyAqIEBj dHg6CXRoZSBjb250ZXh0IHRoYXQgb3ducyB0aGUgY2xpZW50ICh3ZSB1c2UgdGhlIGRlZmF1bHQg cmVuZGVyCj4gPisgKiAJCWNvbnRleHQpCj4gPiAgICoKPiA+ICAgKiBSZXR1cm46CUFuIGk5MTVf Z3VjX2NsaWVudCBvYmplY3QgaWYgc3VjY2Vzcy4KPiA+ICAgKi8KPiA+ZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Yy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZ3VjLmgKPiA+aW5kZXggMDgxZDVmNi4uNWJhNTg2NiAxMDA2NDQKPiA+LS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjLmgKPiA+KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZ3VjLmgKPiA+QEAgLTc2LDExICs3NiwxNyBAQCBzdHJ1Y3QgaW50ZWxfZ3VjX2Z3IHsK PiA+ICAJdWludDE2X3QJCQlndWNfZndfbWlub3Jfd2FudGVkOwo+ID4gIAl1aW50MTZfdAkJCWd1 Y19md19tYWpvcl9mb3VuZDsKPiA+ICAJdWludDE2X3QJCQlndWNfZndfbWlub3JfZm91bmQ7Cj4g PisKPiA+Kwl1aW50MzJfdCBoZWFkZXJfc2l6ZTsKPiA+Kwl1aW50MzJfdCBoZWFkZXJfb2Zmc2V0 Owo+ID4rCXVpbnQzMl90IHJzYV9zaXplOwo+ID4rCXVpbnQzMl90IHJzYV9vZmZzZXQ7Cj4gPisJ dWludDMyX3QgdWNvZGVfc2l6ZTsKPiA+Kwl1aW50MzJfdCB1Y29kZV9vZmZzZXQ7Cj4gPiAgfTsK PiA+Cj4gPiAgc3RydWN0IGludGVsX2d1YyB7Cj4gPiAgCXN0cnVjdCBpbnRlbF9ndWNfZncgZ3Vj X2Z3Owo+ID4tCj4gPiAgCXVpbnQzMl90IGxvZ19mbGFnczsKPiA+ICAJc3RydWN0IGRybV9pOTE1 X2dlbV9vYmplY3QgKmxvZ19vYmo7Cj4gPgo+ID5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZ3VjX2Z3aWYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19m d2lmLmgKPiA+aW5kZXggNTkzZDJmNS4uNDBiMmVhNSAxMDA2NDQKPiA+LS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2Z3aWYuaAo+ID4rKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9ndWNfZndpZi5oCj4gPkBAIC0xMjIsNiArMTIyLDc4IEBACj4gPgo+ID4gICNkZWZp bmUgR1VDX0NUTF9NQVhfRFdPUkRTCQkoR1VDX0NUTF9SU1JWRCArIDEpCj4gPgo+ID4rLyoqCj4g PisgKiBET0M6IEd1QyBGaXJtd2FyZSBMYXlvdXQKPiA+KyAqCj4gPisgKiBUaGUgR3VDIGZpcm13 YXJlIGxheW91dCBsb29rcyBsaWtlIHRoaXM6Cj4gPisgKgo+ID4rICogICAgICstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKwo+ID4rICogICAgIHwgICAgICAgIGd1Y19jc3NfaGVhZGVy ICAgICAgICAgfAo+ID4rICogICAgIHwgY29udGFpbnMgbWFqb3IvbWlub3IgdmVyc2lvbiAgfAo+ ID4rICogICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwo+ID4rICogICAgIHwg ICAgICAgICAgICAgdUNvZGUgICAgICAgICAgICAgfAo+ID4rICogICAgICstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKwo+ID4rICogICAgIHwgICAgICAgICBSU0Egc2lnbmF0dXJlICAg ICAgICAgfAo+ID4rICogICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwo+ID4r ICogICAgIHwgICAgICAgICAgbW9kdWx1cyBrZXkgICAgICAgICAgfAo+ID4rICogICAgICstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwo+ID4rICogICAgIHwgICAgICAgICAgZXhwb25l bnQgdmFsICAgICAgICAgfAo+ID4rICogICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKwo+ID4rICoKPiA+KyAqIFRoZSBmaXJtd2FyZSBtYXkgb3IgbWF5IG5vdCBoYXZlIG1vZHVs dXMga2V5IGFuZCBleHBvbmVudCBkYXRhLiBUaGUgaGVhZGVyLAo+ID4rICogdUNvZGUgYW5kIFJT QSBzaWduYXR1cmUgYXJlIG11c3QtaGF2ZSBjb21wb25lbnRzIHRoYXQgd2lsbCBiZSB1c2VkIGJ5 IGRyaXZlci4KPiA+KyAqIExlbmd0aCBvZiBlYWNoIGNvbXBvbmVudHMsIHdoaWNoIGlzIGFsbCBp biBkd29yZHMsIGNhbiBiZSBmb3VuZCBpbiBoZWFkZXIuCj4gPisgKiBJbiB0aGUgY2FzZSB0aGF0 IG1vZHVsdXMgYW5kIGV4cG9uZW50IGFyZSBub3QgcHJlc2VudCBpbiBmdywgYS5rLmEgdHJ1bmNh dGVkCj4gPisgKiBpbWFnZSwgdGhlIGxlbmd0aCB2YWx1ZSBzdGlsbCBhcHBlYXJzIGluIGhlYWRl ci4KPiA+KyAqCj4gPisgKiBEcml2ZXIgd2lsbCBkbyBzb21lIGJhc2ljIGZ3IHNpemUgdmFsaWRh dGlvbiBiYXNlZCBvbiB0aGUgZm9sbG93aW5nIHJ1bGVzOgo+ID4rICoKPiA+KyAqIDEuIEhlYWRl ciwgdUNvZGUgYW5kIFJTQSBhcmUgbXVzdC1oYXZlIGNvbXBvbmVudHMuCj4gPisgKiAyLiBBbGwg ZmlybXdhcmUgY29tcG9uZW50cywgaWYgdGhleSBwcmVzZW50LCBhcmUgaW4gdGhlIHNlcXVlbmNl IGlsbHVzdHJhdGVkCj4gPisgKiBpbiB0aGUgbGF5b3V0IHRhYmxlIGFib3ZlLgo+ID4rICogMy4g TGVuZ3RoIGluZm8gb2YgZWFjaCBjb21wb25lbnQgY2FuIGJlIGZvdW5kIGluIGhlYWRlciwgaW4g ZHdvcmRzLgo+ID4rICogNC4gTW9kdWx1cyBhbmQgZXhwb25lbnQga2V5IGFyZSBub3QgcmVxdWly ZWQgYnkgZHJpdmVyLiBUaGV5IG1heSBub3QgYXBwZWFyCj4gPisgKiBpbiBmdy4gU28gZHJpdmVy IHdpbGwgbG9hZCBhIHRydW5jYXRlZCBmaXJtd2FyZSBpbiB0aGlzIGNhc2UuCj4gPisgKi8KPiA+ Kwo+ID4rc3RydWN0IGd1Y19jc3NfaGVhZGVyIHsKPiA+Kwl1aW50MzJfdCBtb2R1bGVfdHlwZTsK PiA+KwkvKiBoZWFkZXJfc2l6ZSBpbmNsdWRlcyBhbGwgbm9uLXVDb2RlIGJpdHMsIGluY2x1ZGlu ZyBjc3NfaGVhZGVyLCByc2EKPiA+KwkgKiBrZXksIG1vZHVsdXMga2V5IGFuZCBleHBvbmVudCBk YXRhLiAqLwo+ID4rCXVpbnQzMl90IGhlYWRlcl9zaXplX2R3Owo+ID4rCXVpbnQzMl90IGhlYWRl cl92ZXJzaW9uOwo+ID4rCXVpbnQzMl90IG1vZHVsZV9pZDsKPiA+Kwl1aW50MzJfdCBtb2R1bGVf dmVuZG9yOwo+ID4rCXVuaW9uIHsKPiA+KwkJc3RydWN0IHsKPiA+KwkJCXVpbnQ4X3QgZGF5Owo+ ID4rCQkJdWludDhfdCBtb250aDsKPiA+KwkJCXVpbnQxNl90IHllYXI7Cj4gPisJCX07Cj4gPisJ CXVpbnQzMl90IGRhdGU7Cj4gPisJfTsKPiA+Kwl1aW50MzJfdCBzaXplX2R3OyAvKiB1Q29kZSBw bHVzIGhlYWRlcl9zaXplX2R3ICovCj4gPisJdWludDMyX3Qga2V5X3NpemVfZHc7Cj4gPisJdWlu dDMyX3QgbW9kdWx1c19zaXplX2R3Owo+ID4rCXVpbnQzMl90IGV4cG9uZW50X3NpemVfZHc7Cj4g PisJdW5pb24gewo+ID4rCQlzdHJ1Y3Qgewo+ID4rCQkJdWludDhfdCBob3VyOwo+ID4rCQkJdWlu dDhfdCBtaW47Cj4gPisJCQl1aW50MTZfdCBzZWM7Cj4gPisJCX07Cj4gPisJCXVpbnQzMl90IHRp bWU7Cj4gPisJfTsKPiA+Kwo+ID4rCWNoYXIgdXNlcm5hbWVbOF07Cj4gPisJY2hhciBidWlsZG51 bWJlclsxMl07Cj4gPisJdWludDMyX3QgZGV2aWNlX2lkOwo+ID4rCXVpbnQzMl90IGd1Y19zd192 ZXJzaW9uOwo+ID4rCXVpbnQzMl90IHByb2RfcHJlcHJvZF9mdzsKPiA+Kwl1aW50MzJfdCByZXNl cnZlZFsxMl07Cj4gPisJdWludDMyX3QgaGVhZGVyX2luZm87Cj4gPit9IF9fcGFja2VkOwo+ID4r Cj4gPiAgc3RydWN0IGd1Y19kb29yYmVsbF9pbmZvIHsKPiA+ICAJdTMyIGRiX3N0YXR1czsKPiA+ ICAJdTMyIGNvb2tpZTsKPiA+ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2d1Y19sb2FkZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19sb2FkZXIuYwo+ ID5pbmRleCBhMTdiNmE1Li42MTJlYWQ3IDEwMDY0NAo+ID4tLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9ndWNfbG9hZGVyLmMKPiA+KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZ3VjX2xvYWRlci5jCj4gPkBAIC0zMSw3ICszMSw3IEBACj4gPiAgI2luY2x1ZGUgImludGVs X2d1Yy5oIgo+ID4KPiA+ICAvKioKPiA+LSAqIERPQzogR3VDCj4gPisgKiBET0M6IEd1Qy1zcGVj aWZpYyBmaXJtd2FyZSBsb2FkZXIKPiA+ICAgKgo+ID4gICAqIGludGVsX2d1YzoKPiA+ICAgKiBU b3AgbGV2ZWwgc3RydWN0dXJlIG9mIGd1Yy4gSXQgaGFuZGxlcyBmaXJtd2FyZSBsb2FkaW5nIGFu ZCBtYW5hZ2VzIGNsaWVudAo+ID5AQCAtMjA4LDE2ICsyMDgsNiBAQCBzdGF0aWMgaW5saW5lIGJv b2wgZ3VjX3Vjb2RlX3Jlc3BvbnNlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwK PiA+ICAvKgo+ID4gICAqIFRyYW5zZmVyIHRoZSBmaXJtd2FyZSBpbWFnZSB0byBSQU0gZm9yIGV4 ZWN1dGlvbiBieSB0aGUgbWljcm9jb250cm9sbGVyLgo+ID4gICAqCj4gPi0gKiBHdUMgRmlybXdh cmUgbGF5b3V0Ogo+ID4tICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICAtLS0t Cj4gPi0gKiB8ICAgICAgICAgIENTUyBoZWFkZXIgICAgICAgICAgIHwgIDEyOEIKPiA+LSAqIHwg Y29udGFpbnMgbWFqb3IvbWlub3IgdmVyc2lvbiAgfAo+ID4tICogKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rICAtLS0tCj4gPi0gKiB8ICAgICAgICAgICAgIHVDb2RlICAgICAgICAg ICAgIHwKPiA+LSAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAgLS0tLQo+ID4t ICogfCAgICAgICAgIFJTQSBzaWduYXR1cmUgICAgICAgICB8ICAyNTZCCj4gPi0gKiArLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgIC0tLS0KPiA+LSAqCj4gPiAgICogQXJjaGl0ZWN0 dXJhbGx5LCB0aGUgRE1BIGVuZ2luZSBpcyBiaWRpcmVjdGlvbmFsLCBhbmQgY2FuIHBvdGVudGlh bGx5IGV2ZW4KPiA+ICAgKiB0cmFuc2ZlciBiZXR3ZWVuIEdUVCBsb2NhdGlvbnMuIFRoaXMgZnVu Y3Rpb25hbGl0eSBpcyBsZWZ0IG91dCBvZiB0aGUgQVBJCj4gPiAgICogZm9yIG5vdyBhcyB0aGVy ZSBpcyBubyBuZWVkIGZvciBpdC4KPiA+QEAgLTIyNSwzMyArMjE1LDI5IEBAIHN0YXRpYyBpbmxp bmUgYm9vbCBndWNfdWNvZGVfcmVzcG9uc2Uoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LAo+ID4gICAqIE5vdGUgdGhhdCBHdUMgbmVlZHMgdGhlIENTUyBoZWFkZXIgcGx1cyB1S2Vy bmVsIGNvZGUgdG8gYmUgY29waWVkIGJ5IHRoZQo+ID4gICAqIERNQSBlbmdpbmUgaW4gb25lIG9w ZXJhdGlvbiwgd2hlcmVhcyB0aGUgUlNBIHNpZ25hdHVyZSBpcyBsb2FkZWQgdmlhIE1NSU8uCj4g PiAgICovCj4gPi0KPiA+LSNkZWZpbmUgVU9TX0NTU19IRUFERVJfT0ZGU0VUCQkwCj4gPi0jZGVm aW5lIFVPU19WRVJfTUlOT1JfT0ZGU0VUCQkweDQ0Cj4gPi0jZGVmaW5lIFVPU19WRVJfTUFKT1Jf T0ZGU0VUCQkweDQ2Cj4gPi0jZGVmaW5lIFVPU19DU1NfSEVBREVSX1NJWkUJCTB4ODAKPiA+LSNk ZWZpbmUgVU9TX1JTQV9TSUdfU0laRQkJMHgxMDAKPiA+LQo+ID4gIHN0YXRpYyBpbnQgZ3VjX3Vj b2RlX3hmZXJfZG1hKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiA+ICB7Cj4g PiAgCXN0cnVjdCBpbnRlbF9ndWNfZncgKmd1Y19mdyA9ICZkZXZfcHJpdi0+Z3VjLmd1Y19mdzsK PiA+ICAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKmZ3X29iaiA9IGd1Y19mdy0+Z3VjX2Z3 X29iajsKPiA+ICAJdW5zaWduZWQgbG9uZyBvZmZzZXQ7Cj4gPiAgCXN0cnVjdCBzZ190YWJsZSAq c2cgPSBmd19vYmotPnBhZ2VzOwo+ID4tCXUzMiBzdGF0dXMsIHVjb2RlX3NpemUsIHJzYVtVT1Nf UlNBX1NJR19TSVpFIC8gc2l6ZW9mKHUzMildOwo+ID4rCXUzMiBzdGF0dXMsIHJzYVtVT1NfUlNB X1NDUkFUQ0hfTUFYX0NPVU5UXTsKPiA+ICAJaW50IGksIHJldCA9IDA7Cj4gPgo+ID4tCS8qIHVD b2RlIHNpemUsIGFsc28gaXMgd2hlcmUgUlNBIHNpZ25hdHVyZSBzdGFydHMgKi8KPiA+LQlvZmZz ZXQgPSB1Y29kZV9zaXplID0gZ3VjX2Z3LT5ndWNfZndfc2l6ZSAtIFVPU19SU0FfU0lHX1NJWkU7 Cj4gPi0JSTkxNV9XUklURShETUFfQ09QWV9TSVpFLCB1Y29kZV9zaXplKTsKPiA+KwkvKiB3aGVy ZSBSU0Egc2lnbmF0dXJlIHN0YXJ0cyAqLwo+ID4rCW9mZnNldCA9IGd1Y19mdy0+cnNhX29mZnNl dDsKPiA+Cj4gPiAgCS8qIENvcHkgUlNBIHNpZ25hdHVyZSBmcm9tIHRoZSBmdyBpbWFnZSB0byBI VyBmb3IgdmVyaWZpY2F0aW9uICovCj4gPi0Jc2dfcGNvcHlfdG9fYnVmZmVyKHNnLT5zZ2wsIHNn LT5uZW50cywgcnNhLCBVT1NfUlNBX1NJR19TSVpFLCBvZmZzZXQpOwo+ID4tCWZvciAoaSA9IDA7 IGkgPCBVT1NfUlNBX1NJR19TSVpFIC8gc2l6ZW9mKHUzMik7IGkrKykKPiA+KwlzZ19wY29weV90 b19idWZmZXIoc2ctPnNnbCwgc2ctPm5lbnRzLCByc2EsIHNpemVvZihyc2EpLCBvZmZzZXQpOwo+ ID4rCWZvciAoaSA9IDA7IGkgPCBVT1NfUlNBX1NDUkFUQ0hfTUFYX0NPVU5UOyBpKyspCj4gPiAg CQlJOTE1X1dSSVRFKFVPU19SU0FfU0NSQVRDSChpKSwgcnNhW2ldKTsKPiA+Cj4gPisJLyogVGhl IGhlYWRlciBwbHVzIHVDb2RlIHdpbGwgYmUgY29waWVkIHRvIFdPUENNIHZpYSBETUEsIGV4Y2x1 ZGluZyBhbnkKPiA+KwkgKiBvdGhlciBjb21wb25lbnRzICovCj4gPisJSTkxNV9XUklURShETUFf Q09QWV9TSVpFLCBndWNfZnctPmhlYWRlcl9zaXplICsgZ3VjX2Z3LT51Y29kZV9zaXplKTsKPiA+ Kwo+ID4gIAkvKiBTZXQgdGhlIHNvdXJjZSBhZGRyZXNzIGZvciB0aGUgbmV3IGJsb2IgKi8KPiA+ LQlvZmZzZXQgPSBpOTE1X2dlbV9vYmpfZ2d0dF9vZmZzZXQoZndfb2JqKTsKPiA+KwlvZmZzZXQg PSBpOTE1X2dlbV9vYmpfZ2d0dF9vZmZzZXQoZndfb2JqKSArIGd1Y19mdy0+aGVhZGVyX29mZnNl dDsKPiA+ICAJSTkxNV9XUklURShETUFfQUREUl8wX0xPVywgbG93ZXJfMzJfYml0cyhvZmZzZXQp KTsKPiA+ICAJSTkxNV9XUklURShETUFfQUREUl8wX0hJR0gsIHVwcGVyXzMyX2JpdHMob2Zmc2V0 KSAmIDB4RkZGRik7Cj4gPgo+ID5AQCAtNDU3LDEwICs0NDMsOCBAQCBzdGF0aWMgdm9pZCBndWNf ZndfZmV0Y2goc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGludGVsX2d1Y19mdyAqZ3Vj X2Z3KQo+ID4gIHsKPiA+ICAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsKPiA+ICAJ Y29uc3Qgc3RydWN0IGZpcm13YXJlICpmdzsKPiA+LQljb25zdCB1OCAqY3NzX2hlYWRlcjsKPiA+ LQljb25zdCBzaXplX3QgbWluc2l6ZSA9IFVPU19DU1NfSEVBREVSX1NJWkUgKyBVT1NfUlNBX1NJ R19TSVpFOwo+ID4tCWNvbnN0IHNpemVfdCBtYXhzaXplID0gR1VDX1dPUENNX1NJWkVfVkFMVUUg KyBVT1NfUlNBX1NJR19TSVpFCj4gPi0JCQktIDB4ODAwMDsgLyogMzJrIHJlc2VydmVkICg4SyBz dGFjayArIDI0ayBjb250ZXh0KSAqLwo+ID4rCXN0cnVjdCBndWNfY3NzX2hlYWRlciAqY3NzOwo+ ID4rCXNpemVfdCBzaXplOwo+ID4gIAlpbnQgZXJyOwo+ID4KPiA+ICAJRFJNX0RFQlVHX0RSSVZF UigiYmVmb3JlIHJlcXVlc3RpbmcgZmlybXdhcmU6IEd1QyBmdyBmZXRjaCBzdGF0dXMgJXNcbiIs Cj4gPkBAIC00NzQsMTIgKzQ1OCw1MiBAQCBzdGF0aWMgdm9pZCBndWNfZndfZmV0Y2goc3RydWN0 IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGludGVsX2d1Y19mdyAqZ3VjX2Z3KQo+ID4KPiA+ICAJ RFJNX0RFQlVHX0RSSVZFUigiZmV0Y2ggR3VDIGZ3IGZyb20gJXMgc3VjY2VlZGVkLCBmdyAlcFxu IiwKPiA+ICAJCWd1Y19mdy0+Z3VjX2Z3X3BhdGgsIGZ3KTsKPiA+LQlEUk1fREVCVUdfRFJJVkVS KCJmaXJtd2FyZSBmaWxlIHNpemUgJXp1IChtaW5pbXVtICV6dSwgbWF4aW11bSAlenUpXG4iLAo+ ID4tCQlmdy0+c2l6ZSwgbWluc2l6ZSwgbWF4c2l6ZSk7Cj4gPgo+ID4tCS8qIENoZWNrIHRoZSBz aXplIG9mIHRoZSBibG9iIGJlZm9lIGV4YW1pbmluZyBidWZmZXIgY29udGVudHMgKi8KPiA+LQlp ZiAoZnctPnNpemUgPCBtaW5zaXplIHx8IGZ3LT5zaXplID4gbWF4c2l6ZSkKPiA+KwkvKiBDaGVj ayB0aGUgc2l6ZSBvZiB0aGUgYmxvYiBiZWZvcmUgZXhhbWluaW5nIGJ1ZmZlciBjb250ZW50cyAq Lwo+ID4rCWlmIChmdy0+c2l6ZSA8IHNpemVvZihzdHJ1Y3QgZ3VjX2Nzc19oZWFkZXIpKSB7Cj4g PisJCURSTV9FUlJPUigiRmlybXdhcmUgaGVhZGVyIGlzIG1pc3NpbmdcbiIpOwo+ID4gIAkJZ290 byBmYWlsOwo+ID4rCX0KPiA+Kwo+ID4rCWNzcyA9IChzdHJ1Y3QgZ3VjX2Nzc19oZWFkZXIgKilm dy0+ZGF0YTsKPiA+Kwo+ID4rCS8qIEZpcm13YXJlIGJpdHMgYWx3YXlzIHN0YXJ0IGZyb20gaGVh ZGVyICovCj4gPisJZ3VjX2Z3LT5oZWFkZXJfb2Zmc2V0ID0gMDsKPiA+KwlndWNfZnctPmhlYWRl cl9zaXplID0gKGNzcy0+aGVhZGVyX3NpemVfZHcgLSBjc3MtPm1vZHVsdXNfc2l6ZV9kdyAtCj4g PisJCWNzcy0+a2V5X3NpemVfZHcgLSBjc3MtPmV4cG9uZW50X3NpemVfZHcpICogc2l6ZW9mKHUz Mik7Cj4gPisKPiA+KwlpZiAoZ3VjX2Z3LT5oZWFkZXJfc2l6ZSAhPSBzaXplb2Yoc3RydWN0IGd1 Y19jc3NfaGVhZGVyKSkgewo+ID4rCQlEUk1fRVJST1IoIkNTUyBoZWFkZXIgZGVmaW5pdGlvbiBt aXNtYXRjaFxuIik7Cj4gPisJCWdvdG8gZmFpbDsKPiA+Kwl9Cj4gPisKPiA+KwkvKiB0aGVuLCB1 Q29kZSAqLwo+ID4rCWd1Y19mdy0+dWNvZGVfb2Zmc2V0ID0gZ3VjX2Z3LT5oZWFkZXJfb2Zmc2V0 ICsgZ3VjX2Z3LT5oZWFkZXJfc2l6ZTsKPiA+KwlndWNfZnctPnVjb2RlX3NpemUgPSAoY3NzLT5z aXplX2R3IC0gY3NzLT5oZWFkZXJfc2l6ZV9kdykgKiBzaXplb2YodTMyKTsKPiA+Kwo+ID4rCS8q IG5vdyBSU0EgKi8KPiA+KwlpZiAoY3NzLT5rZXlfc2l6ZV9kdyAhPSBVT1NfUlNBX1NDUkFUQ0hf TUFYX0NPVU5UKSB7Cj4gPisJCURSTV9FUlJPUigiUlNBIGtleSBzaXplIGlzIGJhZFxuIik7Cj4g PisJCWdvdG8gZmFpbDsKPiA+Kwl9Cj4gPisJZ3VjX2Z3LT5yc2Ffb2Zmc2V0ID0gZ3VjX2Z3LT51 Y29kZV9vZmZzZXQgKyBndWNfZnctPnVjb2RlX3NpemU7Cj4gPisJZ3VjX2Z3LT5yc2Ffc2l6ZSA9 IGNzcy0+a2V5X3NpemVfZHcgKiBzaXplb2YodTMyKTsKPiA+Kwo+ID4rCS8qIEF0IGxlYXN0LCBp dCBzaG91bGQgaGF2ZSBoZWFkZXIsIHVDb2RlIGFuZCBSU0EuIFNpemUgb2YgYWxsIHRocmVlLiAq Lwo+ID4rCXNpemUgPSBndWNfZnctPmhlYWRlcl9zaXplICsgZ3VjX2Z3LT51Y29kZV9zaXplICsg Z3VjX2Z3LT5yc2Ffc2l6ZTsKPiA+KwlpZiAoZnctPnNpemUgPCBzaXplKSB7Cj4gPisJCURSTV9F UlJPUigiTWlzc2luZyBmaXJtd2FyZSBjb21wb25lbnRzXG4iKTsKPiA+KwkJZ290byBmYWlsOwo+ ID4rCX0KPiA+Kwo+ID4rCS8qIEhlYWRlciBhbmQgdUNvZGUgd2lsbCBiZSBsb2FkZWQgdG8gV09Q Q00uIFNpemUgb2YgdGhlIHR3by4gKi8KPiA+KwlzaXplID0gZ3VjX2Z3LT5oZWFkZXJfc2l6ZSAr IGd1Y19mdy0+dWNvZGVfc2l6ZTsKPiA+Kwo+ID4rCS8qIFRvcCAzMmsgb2YgV09QQ00gaXMgcmVz ZXJ2ZWQgKDhLIHN0YWNrICsgMjRrIFJDNiBjb250ZXh0KS4gKi8KPiA+KwlpZiAoc2l6ZSA+IEdV Q19XT1BDTV9TSVpFX1ZBTFVFIC0gMHg4MDAwKSB7Cj4gPisJCURSTV9FUlJPUigiRmlybXdhcmUg aXMgdG9vIGxhcmdlIHRvIGZpdCBpbiBXT1BDTVxuIik7Cj4gPisJCWdvdG8gZmFpbDsKPiA+Kwl9 Cj4gPgo+ID4gIAkvKgo+ID4gIAkgKiBUaGUgR3VDIGZpcm13YXJlIGltYWdlIGhhcyB0aGUgdmVy c2lvbiBudW1iZXIgZW1iZWRkZWQgYXQgYSB3ZWxsLWtub3duCj4gPkBAIC00ODcsOSArNTExLDgg QEAgc3RhdGljIHZvaWQgZ3VjX2Z3X2ZldGNoKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVj dCBpbnRlbF9ndWNfZncgKmd1Y19mdykKPiA+ICAJICogVFdPIGJ5dGVzIGVhY2ggKGkuZS4gdTE2 KSwgYWx0aG91Z2ggYWxsIHBvaW50ZXJzIGFuZCBvZmZzZXRzIGFyZSBkZWZpbmVkCj4gPiAgCSAq IGluIHRlcm1zIG9mIGJ5dGVzICh1OCkuCj4gPiAgCSAqLwo+ID4tCWNzc19oZWFkZXIgPSBmdy0+ ZGF0YSArIFVPU19DU1NfSEVBREVSX09GRlNFVDsKPiA+LQlndWNfZnctPmd1Y19md19tYWpvcl9m b3VuZCA9ICoodTE2ICopKGNzc19oZWFkZXIgKyBVT1NfVkVSX01BSk9SX09GRlNFVCk7Cj4gPi0J Z3VjX2Z3LT5ndWNfZndfbWlub3JfZm91bmQgPSAqKHUxNiAqKShjc3NfaGVhZGVyICsgVU9TX1ZF Ul9NSU5PUl9PRkZTRVQpOwo+ID4rCWd1Y19mdy0+Z3VjX2Z3X21ham9yX2ZvdW5kID0gY3NzLT5n dWNfc3dfdmVyc2lvbiA+PiAxNjsKPiA+KwlndWNfZnctPmd1Y19md19taW5vcl9mb3VuZCA9IGNz cy0+Z3VjX3N3X3ZlcnNpb24gJiAweEZGRkY7Cj4gPgo+ID4gIAlpZiAoZ3VjX2Z3LT5ndWNfZndf bWFqb3JfZm91bmQgIT0gZ3VjX2Z3LT5ndWNfZndfbWFqb3Jfd2FudGVkIHx8Cj4gPiAgCSAgICBn dWNfZnctPmd1Y19md19taW5vcl9mb3VuZCA8IGd1Y19mdy0+Z3VjX2Z3X21pbm9yX3dhbnRlZCkg ewo+ID4KPiAKPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f Xwo+IEludGVsLWdmeCBtYWlsaW5nIGxpc3QKPiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Au b3JnCj4gaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVs LWdmeAoKLS0gCkRhbmllbCBWZXR0ZXIKU29mdHdhcmUgRW5naW5lZXIsIEludGVsIENvcnBvcmF0 aW9uCmh0dHA6Ly9ibG9nLmZmd2xsLmNoCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZy ZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGlu Zm8vaW50ZWwtZ2Z4Cg==