From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [PATCH v2] drm: move allocation out of drm_get_format_name() Date: Mon, 07 Nov 2016 10:10:13 +0200 Message-ID: <8760nzaexm.fsf@intel.com> References: <20161107004713.GA26032@engestrom.ch> <20161107004821.25369-1-eric@engestrom.ch> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20161107004821.25369-1-eric@engestrom.ch> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: linux-kernel@vger.kernel.org Cc: David Airlie , dri-devel@lists.freedesktop.org, Wei Yongjun , Daniel Vetter , Flora Cui , Gustavo Padovan , Tom St Denis , Chunming Zhou , Thomas Hellstrom , Laurent Pinchart , Sinclair Yeh , Xinliang Liu , Xinwei Kong , VMware Graphics , Vitaly Prosyak , Eric Engestrom , Alexandre Demers , intel-gfx@lists.freedesktop.org, Eric Engestrom , Emily Deng , Colin Ian King List-Id: intel-gfx@lists.freedesktop.org T24gTW9uLCAwNyBOb3YgMjAxNiwgRXJpYyBFbmdlc3Ryb20gPGVyaWNAZW5nZXN0cm9tLmNoPiB3 cm90ZToKPiBGaXhlczogOTA4NDRmMDAwNDllOWY0MjU3M2ZkMzFkN2MzMmU4ZmQzMWQzZmQwNwo+ Cj4gICAgIGRybTogbWFrZSBkcm1fZ2V0X2Zvcm1hdF9uYW1lIHRocmVhZC1zYWZlCj4KPiAgICAg U2lnbmVkLW9mZi1ieTogRXJpYyBFbmdlc3Ryb20gPGVyaWNAZW5nZXN0cm9tLmNoPgo+ICAgICBb ZGFudmV0OiBDbGFyaWZ5IHRoYXQgdGhlIHJldHVybmVkIHBvaW50ZXIgbXVzdCBiZSBmcmVlZCB3 aXRoCj4gICAgIGtmcmVlKCkuXQo+ICAgICBTaWduZWQtb2ZmLWJ5OiBEYW5pZWwgVmV0dGVyIDxk YW5pZWwudmV0dGVyQGZmd2xsLmNoPgoKVGhlIEZpeGVzOiBmb3JtYXQgaXM6CgpGaXhlczogOTA4 NDRmMDAwNDllICgiZHJtOiBtYWtlIGRybV9nZXRfZm9ybWF0X25hbWUgdGhyZWFkLXNhZmUiKQoK QnV0IGlzIHRoaXMgYSBmaXgsIHJlYWxseSwgb3IganVzdCBhbiBpbXByb3ZlbWVudD8gV2hhdCBl eGFjdGx5IGlzIHRoZQpidWcgYmVpbmcgZml4ZWQ/IFRoZSBjb21taXQgbWVzc2FnZSBpcyBub3Qg c3VmZmljaWVudC4KCj4gQ2M6IFJvYiBDbGFyayA8cm9iZGNsYXJrQGdtYWlsLmNvbT4KPiBDYzog Q2hyaXN0aWFuIEvDtm5pZyA8Y2hyaXN0aWFuLmtvZW5pZ0BhbWQuY29tPgo+IFN1Z2dlc3RlZC1i eTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KPiBTaWdu ZWQtb2ZmLWJ5OiBFcmljIEVuZ2VzdHJvbSA8ZXJpY0Blbmdlc3Ryb20uY2g+Cj4gLS0tCj4KPiB2 MjogdXNlIHNpbmdsZS1maWVsZCBzdHJ1Y3QgaW5zdGVhZCBvZiB0eXBlZGVmIHRvIGxldCB0aGUg Y29tcGlsZXIKPiAgICAgZW5mb3JjZSB0aGUgdHlwZSAoQ2hyaXN0aWFuIEvDtm5pZykKCkp1c3Qg dG8gbWFrZSBpdCBjbGVhcjogTkFLIHRocmVlIHRpbWVzIG92ZXIgZm9yIHYxLiBUaGlzIHBhdGNo IGlzCmRlZmluaXRlbHkgYSBiZXR0ZXIgYWx0ZXJuYXRpdmUuCgo+Cj4gLS0tCj4gIGluY2x1ZGUv ZHJtL2RybV9mb3VyY2MuaCAgICAgICAgICAgICAgICAgICAgICAgIHwgMTAgKysrKystCj4gIGRy aXZlcnMvZ3B1L2RybS9kcm1fZm91cmNjLmMgICAgICAgICAgICAgICAgICAgIHwgMTQgKysrLS0t LS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2RjZV92MTBfMC5jICAgICAgICAgIHwg IDcgKystLS0KPiAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZGNlX3YxMV8wLmMgICAgICAg ICAgfCAgNyArKy0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9kY2VfdjZfMC5jICAg ICAgICAgICB8ICAzICstCj4gIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2RjZV92OF8wLmMg ICAgICAgICAgIHwgIDcgKystLS0KPiAgZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWMuYyAgICAg ICAgICAgICAgICAgICAgfCAgNyArKystLQo+ICBkcml2ZXJzL2dwdS9kcm0vZHJtX2NydGMuYyAg ICAgICAgICAgICAgICAgICAgICB8ICA3ICsrKy0tCj4gIGRyaXZlcnMvZ3B1L2RybS9kcm1fZnJh bWVidWZmZXIuYyAgICAgICAgICAgICAgIHwgIDcgKysrLS0KPiAgZHJpdmVycy9ncHUvZHJtL2Ry bV9tb2Rlc2V0X2hlbHBlci5jICAgICAgICAgICAgfCAgNyArKystLQo+ICBkcml2ZXJzL2dwdS9k cm0vZHJtX3BsYW5lLmMgICAgICAgICAgICAgICAgICAgICB8ICA3ICsrKy0tCj4gIGRyaXZlcnMv Z3B1L2RybS9oaXNpbGljb24va2lyaW4va2lyaW5fZHJtX2FkZS5jIHwgIDcgKystLS0KPiAgZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgICAgICAgICAgICAgfCAxMCArKystLS0K PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRvbWljX3BsYW5lLmMgICAgICAgfCAgOCAr Ky0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgICAgICAgICAgICB8 IDQxICsrKysrKysrKystLS0tLS0tLS0tLS0tLS0KPiAgZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9h dG9tYmlvc19jcnRjLmMgICAgICAgICAgfCAxNCArKysrLS0tLS0KPiAgZHJpdmVycy9ncHUvZHJt L3Ztd2dmeC92bXdnZnhfa21zLmMgICAgICAgICAgICAgfCAgMyArLQo+ICAxNyBmaWxlcyBjaGFu Z2VkLCA4MCBpbnNlcnRpb25zKCspLCA4NiBkZWxldGlvbnMoLSkKPgo+IGRpZmYgLS1naXQgYS9p bmNsdWRlL2RybS9kcm1fZm91cmNjLmggYi9pbmNsdWRlL2RybS9kcm1fZm91cmNjLmgKPiBpbmRl eCBkYzBhYWZhLi40YjAzY2EwIDEwMDY0NAo+IC0tLSBhL2luY2x1ZGUvZHJtL2RybV9mb3VyY2Mu aAo+ICsrKyBiL2luY2x1ZGUvZHJtL2RybV9mb3VyY2MuaAo+IEBAIC00NSw2ICs0NSwxNCBAQCBz dHJ1Y3QgZHJtX2Zvcm1hdF9pbmZvIHsKPiAgCXU4IHZzdWI7Cj4gIH07Cj4gIAo+ICsvKioKPiAr ICogc3RydWN0IGRybV9mb3JtYXRfbmFtZV9idWYgLSBuYW1lIG9mIGEgRFJNIGZvcm1hdAo+ICsg KiBAc3RyOiBzdHJpbmcgYnVmZmVyIGNvbnRhaW5pbmcgdGhlIGZvcm1hdCBuYW1lCj4gKyAqLwo+ ICtzdHJ1Y3QgZHJtX2Zvcm1hdF9uYW1lX2J1ZiB7Cj4gKwljaGFyIHN0clszMl07Cj4gK307Cj4g Kwo+ICBjb25zdCBzdHJ1Y3QgZHJtX2Zvcm1hdF9pbmZvICpfX2RybV9mb3JtYXRfaW5mbyh1MzIg Zm9ybWF0KTsKPiAgY29uc3Qgc3RydWN0IGRybV9mb3JtYXRfaW5mbyAqZHJtX2Zvcm1hdF9pbmZv KHUzMiBmb3JtYXQpOwo+ICB1aW50MzJfdCBkcm1fbW9kZV9sZWdhY3lfZmJfZm9ybWF0KHVpbnQz Ml90IGJwcCwgdWludDMyX3QgZGVwdGgpOwo+IEBAIC01NCw2ICs2Miw2IEBAIGludCBkcm1fZm9y bWF0X2hvcnpfY2hyb21hX3N1YnNhbXBsaW5nKHVpbnQzMl90IGZvcm1hdCk7Cj4gIGludCBkcm1f Zm9ybWF0X3ZlcnRfY2hyb21hX3N1YnNhbXBsaW5nKHVpbnQzMl90IGZvcm1hdCk7Cj4gIGludCBk cm1fZm9ybWF0X3BsYW5lX3dpZHRoKGludCB3aWR0aCwgdWludDMyX3QgZm9ybWF0LCBpbnQgcGxh bmUpOwo+ICBpbnQgZHJtX2Zvcm1hdF9wbGFuZV9oZWlnaHQoaW50IGhlaWdodCwgdWludDMyX3Qg Zm9ybWF0LCBpbnQgcGxhbmUpOwo+IC1jaGFyICpkcm1fZ2V0X2Zvcm1hdF9uYW1lKHVpbnQzMl90 IGZvcm1hdCkgX19tYWxsb2M7Cj4gK2NoYXIgKmRybV9nZXRfZm9ybWF0X25hbWUodWludDMyX3Qg Zm9ybWF0LCBzdHJ1Y3QgZHJtX2Zvcm1hdF9uYW1lX2J1ZiAqYnVmKTsKCkkgd29uZGVyIGlmIGl0 IHdvdWxkIGJlIGJldHRlciB0byBtYWtlIHRoYXQgcmV0dXJuICJjb25zdCBjaGFyICoiLiBJZgp0 aGUgdXNlciByZWFsbHkgd2FudHMgdG8gbG9vayB1bmRlciB0aGUgaG9vZCwgdGhlcmUncyBidWYt PnN0ci4gKnNocnVnKgoKV2l0aCB0aGUgY29tbWl0IG1lc3NhZ2UgaW1wcm92ZWQsCgpSZXZpZXdl ZC1ieTogSmFuaSBOaWt1bGEgPGphbmkubmlrdWxhQGludGVsLmNvbT4KCj4gIAo+ICAjZW5kaWYg LyogX19EUk1fRk9VUkNDX0hfXyAqLwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJt X2ZvdXJjYy5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9mb3VyY2MuYwo+IGluZGV4IGNiYjhiNzcu Ljk5YjBiNjAgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9mb3VyY2MuYwo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZm91cmNjLmMKPiBAQCAtNzksMTcgKzc5LDEzIEBAIHVp bnQzMl90IGRybV9tb2RlX2xlZ2FjeV9mYl9mb3JtYXQodWludDMyX3QgYnBwLCB1aW50MzJfdCBk ZXB0aCkKPiAgRVhQT1JUX1NZTUJPTChkcm1fbW9kZV9sZWdhY3lfZmJfZm9ybWF0KTsKPiAgCj4g IC8qKgo+IC0gKiBkcm1fZ2V0X2Zvcm1hdF9uYW1lIC0gcmV0dXJuIGEgc3RyaW5nIGZvciBkcm0g Zm91cmNjIGZvcm1hdAo+ICsgKiBkcm1fZ2V0X2Zvcm1hdF9uYW1lIC0gZmlsbCBhIHN0cmluZyB3 aXRoIGEgZHJtIGZvdXJjYyBmb3JtYXQncyBuYW1lCj4gICAqIEBmb3JtYXQ6IGZvcm1hdCB0byBj b21wdXRlIG5hbWUgb2YKPiArICogQGJ1ZjogY2FsbGVyLXN1cHBsaWVkIGJ1ZmZlcgo+IC0gKgo+ IC0gKiBOb3RlIHRoYXQgdGhlIGJ1ZmZlciByZXR1cm5lZCBieSB0aGlzIGZ1bmN0aW9uIGlzIG93 bmVkIGJ5IHRoZSBjYWxsZXIKPiAtICogYW5kIHdpbGwgbmVlZCB0byBiZSBmcmVlZCB1c2luZyBr ZnJlZSgpLgo+ICAgKi8KPiAtY2hhciAqZHJtX2dldF9mb3JtYXRfbmFtZSh1aW50MzJfdCBmb3Jt YXQpCj4gK2NoYXIgKmRybV9nZXRfZm9ybWF0X25hbWUodWludDMyX3QgZm9ybWF0LCBzdHJ1Y3Qg ZHJtX2Zvcm1hdF9uYW1lX2J1ZiAqYnVmKQo+ICB7Cj4gLQljaGFyICpidWYgPSBrbWFsbG9jKDMy LCBHRlBfS0VSTkVMKTsKPiAtCj4gLQlzbnByaW50ZihidWYsIDMyLAo+ICsJc25wcmludGYoYnVm LT5zdHIsIHNpemVvZihidWYtPnN0ciksCj4gIAkJICIlYyVjJWMlYyAlcy1lbmRpYW4gKDB4JTA4 eCkiLAo+ICAJCSBwcmludGFibGVfY2hhcihmb3JtYXQgJiAweGZmKSwKPiAgCQkgcHJpbnRhYmxl X2NoYXIoKGZvcm1hdCA+PiA4KSAmIDB4ZmYpLAo+IEBAIC05OCw3ICs5NCw3IEBAIGNoYXIgKmRy bV9nZXRfZm9ybWF0X25hbWUodWludDMyX3QgZm9ybWF0KQo+ICAJCSBmb3JtYXQgJiBEUk1fRk9S TUFUX0JJR19FTkRJQU4gPyAiYmlnIiA6ICJsaXR0bGUiLAo+ICAJCSBmb3JtYXQpOwo+ICAKPiAt CXJldHVybiBidWY7Cj4gKwlyZXR1cm4gYnVmLT5zdHI7Cj4gIH0KPiAgRVhQT1JUX1NZTUJPTChk cm1fZ2V0X2Zvcm1hdF9uYW1lKTsKPiAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1L2RjZV92MTBfMC5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZGNlX3Yx MF8wLmMKPiBpbmRleCAxOTlkM2Y3Li4yOTI0Y2RkIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1L2RjZV92MTBfMC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvZGNlX3YxMF8wLmMKPiBAQCAtMjAzMiw3ICsyMDMyLDcgQEAgc3RhdGljIGludCBkY2Vf djEwXzBfY3J0Y19kb19zZXRfYmFzZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gIAl1MzIgdG1w LCB2aWV3cG9ydF93LCB2aWV3cG9ydF9oOwo+ICAJaW50IHI7Cj4gIAlib29sIGJ5cGFzc19sdXQg PSBmYWxzZTsKPiAtCWNoYXIgKmZvcm1hdF9uYW1lOwo+ICsJc3RydWN0IGRybV9mb3JtYXRfbmFt ZV9idWYgZm9ybWF0X25hbWU7Cj4gIAo+ICAJLyogbm8gZmIgYm91bmQgKi8KPiAgCWlmICghYXRv bWljICYmICFjcnRjLT5wcmltYXJ5LT5mYikgewo+IEBAIC0yMTQ0LDkgKzIxNDQsOCBAQCBzdGF0 aWMgaW50IGRjZV92MTBfMF9jcnRjX2RvX3NldF9iYXNlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywK PiAgCQlieXBhc3NfbHV0ID0gdHJ1ZTsKPiAgCQlicmVhazsKPiAgCWRlZmF1bHQ6Cj4gLQkJZm9y bWF0X25hbWUgPSBkcm1fZ2V0X2Zvcm1hdF9uYW1lKHRhcmdldF9mYi0+cGl4ZWxfZm9ybWF0KTsK PiAtCQlEUk1fRVJST1IoIlVuc3VwcG9ydGVkIHNjcmVlbiBmb3JtYXQgJXNcbiIsIGZvcm1hdF9u YW1lKTsKPiArCQlEUk1fRVJST1IoIlVuc3VwcG9ydGVkIHNjcmVlbiBmb3JtYXQgJXNcbiIsCj4g KwkJICAgICAgICAgIGRybV9nZXRfZm9ybWF0X25hbWUodGFyZ2V0X2ZiLT5waXhlbF9mb3JtYXQs ICZmb3JtYXRfbmFtZSkpOwo+IC0JCWtmcmVlKGZvcm1hdF9uYW1lKTsKPiAgCQlyZXR1cm4gLUVJ TlZBTDsKPiAgCX0KPiAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L2RjZV92MTFfMC5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZGNlX3YxMV8wLmMKPiBp bmRleCBlY2QwMDBlLi5mMGUzYzVjIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1L2RjZV92MTFfMC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZGNl X3YxMV8wLmMKPiBAQCAtMjAxMyw3ICsyMDEzLDcgQEAgc3RhdGljIGludCBkY2VfdjExXzBfY3J0 Y19kb19zZXRfYmFzZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gIAl1MzIgdG1wLCB2aWV3cG9y dF93LCB2aWV3cG9ydF9oOwo+ICAJaW50IHI7Cj4gIAlib29sIGJ5cGFzc19sdXQgPSBmYWxzZTsK PiAtCWNoYXIgKmZvcm1hdF9uYW1lOwo+ICsJc3RydWN0IGRybV9mb3JtYXRfbmFtZV9idWYgZm9y bWF0X25hbWU7Cj4gIAo+ICAJLyogbm8gZmIgYm91bmQgKi8KPiAgCWlmICghYXRvbWljICYmICFj cnRjLT5wcmltYXJ5LT5mYikgewo+IEBAIC0yMTI1LDkgKzIxMjUsOCBAQCBzdGF0aWMgaW50IGRj ZV92MTFfMF9jcnRjX2RvX3NldF9iYXNlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAgCQlieXBh c3NfbHV0ID0gdHJ1ZTsKPiAgCQlicmVhazsKPiAgCWRlZmF1bHQ6Cj4gLQkJZm9ybWF0X25hbWUg PSBkcm1fZ2V0X2Zvcm1hdF9uYW1lKHRhcmdldF9mYi0+cGl4ZWxfZm9ybWF0KTsKPiAtCQlEUk1f RVJST1IoIlVuc3VwcG9ydGVkIHNjcmVlbiBmb3JtYXQgJXNcbiIsIGZvcm1hdF9uYW1lKTsKPiAr CQlEUk1fRVJST1IoIlVuc3VwcG9ydGVkIHNjcmVlbiBmb3JtYXQgJXNcbiIsCj4gKwkJICAgICAg ICAgIGRybV9nZXRfZm9ybWF0X25hbWUodGFyZ2V0X2ZiLT5waXhlbF9mb3JtYXQsICZmb3JtYXRf bmFtZSkpOwo+IC0JCWtmcmVlKGZvcm1hdF9uYW1lKTsKPiAgCQlyZXR1cm4gLUVJTlZBTDsKPiAg CX0KPiAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2RjZV92Nl8w LmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9kY2VfdjZfMC5jCj4gaW5kZXggNDQ1NDdm OS4uNWM2YjgyZiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9kY2Vf djZfMC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZGNlX3Y2XzAuYwo+IEBA IC0xNDU2LDYgKzE0NTYsNyBAQCBzdGF0aWMgaW50IGRjZV92Nl8wX2NydGNfZG9fc2V0X2Jhc2Uo c3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICAJdTMyIHZpZXdwb3J0X3csIHZpZXdwb3J0X2g7Cj4g IAlpbnQgcjsKPiAgCWJvb2wgYnlwYXNzX2x1dCA9IGZhbHNlOwo+ICsJc3RydWN0IGRybV9mb3Jt YXRfbmFtZV9idWYgZm9ybWF0X25hbWU7Cj4gIAo+ICAJLyogbm8gZmIgYm91bmQgKi8KPiAgCWlm ICghYXRvbWljICYmICFjcnRjLT5wcmltYXJ5LT5mYikgewo+IEBAIC0xNTU5LDcgKzE1NjAsNyBA QCBzdGF0aWMgaW50IGRjZV92Nl8wX2NydGNfZG9fc2V0X2Jhc2Uoc3RydWN0IGRybV9jcnRjICpj cnRjLAo+ICAJCWJyZWFrOwo+ICAJZGVmYXVsdDoKPiAgCQlEUk1fRVJST1IoIlVuc3VwcG9ydGVk IHNjcmVlbiBmb3JtYXQgJXNcbiIsCj4gLQkJCSAgZHJtX2dldF9mb3JtYXRfbmFtZSh0YXJnZXRf ZmItPnBpeGVsX2Zvcm1hdCkpOwo+ICsJCSAgICAgICAgICBkcm1fZ2V0X2Zvcm1hdF9uYW1lKHRh cmdldF9mYi0+cGl4ZWxfZm9ybWF0LCAmZm9ybWF0X25hbWUpKTsKPiAgCQlyZXR1cm4gLUVJTlZB TDsKPiAgCX0KPiAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Rj ZV92OF8wLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9kY2VfdjhfMC5jCj4gaW5kZXgg OTc5YWVkZi4uNWFlZjE5ZCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS9kY2VfdjhfMC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZGNlX3Y4XzAu Ywo+IEBAIC0xOTEwLDcgKzE5MTAsNyBAQCBzdGF0aWMgaW50IGRjZV92OF8wX2NydGNfZG9fc2V0 X2Jhc2Uoc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICAJdTMyIHZpZXdwb3J0X3csIHZpZXdwb3J0 X2g7Cj4gIAlpbnQgcjsKPiAgCWJvb2wgYnlwYXNzX2x1dCA9IGZhbHNlOwo+IC0JY2hhciAqZm9y bWF0X25hbWU7Cj4gKwlzdHJ1Y3QgZHJtX2Zvcm1hdF9uYW1lX2J1ZiBmb3JtYXRfbmFtZTsKPiAg Cj4gIAkvKiBubyBmYiBib3VuZCAqLwo+ICAJaWYgKCFhdG9taWMgJiYgIWNydGMtPnByaW1hcnkt PmZiKSB7Cj4gQEAgLTIwMTUsOSArMjAxNSw4IEBAIHN0YXRpYyBpbnQgZGNlX3Y4XzBfY3J0Y19k b19zZXRfYmFzZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gIAkJYnlwYXNzX2x1dCA9IHRydWU7 Cj4gIAkJYnJlYWs7Cj4gIAlkZWZhdWx0Ogo+IC0JCWZvcm1hdF9uYW1lID0gZHJtX2dldF9mb3Jt YXRfbmFtZSh0YXJnZXRfZmItPnBpeGVsX2Zvcm1hdCk7Cj4gLQkJRFJNX0VSUk9SKCJVbnN1cHBv cnRlZCBzY3JlZW4gZm9ybWF0ICVzXG4iLCBmb3JtYXRfbmFtZSk7Cj4gKwkJRFJNX0VSUk9SKCJV bnN1cHBvcnRlZCBzY3JlZW4gZm9ybWF0ICVzXG4iLAo+ICsJCSAgICAgICAgICBkcm1fZ2V0X2Zv cm1hdF9uYW1lKHRhcmdldF9mYi0+cGl4ZWxfZm9ybWF0LCAmZm9ybWF0X25hbWUpKTsKPiAtCQlr ZnJlZShmb3JtYXRfbmFtZSk7Cj4gIAkJcmV0dXJuIC1FSU5WQUw7Cj4gIAl9Cj4gIAo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pYy5jIGIvZHJpdmVycy9ncHUvZHJtL2Ry bV9hdG9taWMuYwo+IGluZGV4IGMzMmZiM2MuLmYyOWQzYzUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2RybV9hdG9taWMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWlj LmMKPiBAQCAtODM1LDkgKzgzNSwxMCBAQCBzdGF0aWMgaW50IGRybV9hdG9taWNfcGxhbmVfY2hl Y2soc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gIAkvKiBDaGVjayB3aGV0aGVyIHRoaXMgcGxh bmUgc3VwcG9ydHMgdGhlIGZiIHBpeGVsIGZvcm1hdC4gKi8KPiAgCXJldCA9IGRybV9wbGFuZV9j aGVja19waXhlbF9mb3JtYXQocGxhbmUsIHN0YXRlLT5mYi0+cGl4ZWxfZm9ybWF0KTsKPiAgCWlm IChyZXQpIHsKPiAtCQljaGFyICpmb3JtYXRfbmFtZSA9IGRybV9nZXRfZm9ybWF0X25hbWUoc3Rh dGUtPmZiLT5waXhlbF9mb3JtYXQpOwo+IC0JCURSTV9ERUJVR19BVE9NSUMoIkludmFsaWQgcGl4 ZWwgZm9ybWF0ICVzXG4iLCBmb3JtYXRfbmFtZSk7Cj4gKwkJc3RydWN0IGRybV9mb3JtYXRfbmFt ZV9idWYgZm9ybWF0X25hbWU7Cj4gKwkJRFJNX0RFQlVHX0FUT01JQygiSW52YWxpZCBwaXhlbCBm b3JtYXQgJXNcbiIsCj4gKwkJICAgICAgICAgICAgICAgICBkcm1fZ2V0X2Zvcm1hdF9uYW1lKHN0 YXRlLT5mYi0+cGl4ZWxfZm9ybWF0LAo+ICsJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAmZm9ybWF0X25hbWUpKTsKPiAtCQlrZnJlZShmb3JtYXRfbmFtZSk7Cj4gIAkJcmV0 dXJuIHJldDsKPiAgCX0KPiAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fY3J0 Yy5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9jcnRjLmMKPiBpbmRleCAxMzQ0MWUyLi4wOGFjMjE2 IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fY3J0Yy5jCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2RybV9jcnRjLmMKPiBAQCAtODI3LDkgKzgyNywxMCBAQCBpbnQgZHJtX21vZGVf c2V0Y3J0YyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAo+ICAJCQlyZXQgPSBk cm1fcGxhbmVfY2hlY2tfcGl4ZWxfZm9ybWF0KGNydGMtPnByaW1hcnksCj4gIAkJCQkJCQkgICBm Yi0+cGl4ZWxfZm9ybWF0KTsKPiAgCQkJaWYgKHJldCkgewo+IC0JCQkJY2hhciAqZm9ybWF0X25h bWUgPSBkcm1fZ2V0X2Zvcm1hdF9uYW1lKGZiLT5waXhlbF9mb3JtYXQpOwo+IC0JCQkJRFJNX0RF QlVHX0tNUygiSW52YWxpZCBwaXhlbCBmb3JtYXQgJXNcbiIsIGZvcm1hdF9uYW1lKTsKPiArCQkJ CXN0cnVjdCBkcm1fZm9ybWF0X25hbWVfYnVmIGZvcm1hdF9uYW1lOwo+ICsJCQkJRFJNX0RFQlVH X0tNUygiSW52YWxpZCBwaXhlbCBmb3JtYXQgJXNcbiIsCj4gKwkJCQkgICAgICAgICAgICAgIGRy bV9nZXRfZm9ybWF0X25hbWUoZmItPnBpeGVsX2Zvcm1hdCwKPiArCQkJCSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAmZm9ybWF0X25hbWUpKTsKPiAtCQkJCWtmcmVlKGZvcm1hdF9u YW1lKTsKPiAgCQkJCWdvdG8gb3V0Owo+ICAJCQl9Cj4gIAkJfQo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vZHJtX2ZyYW1lYnVmZmVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2ZyYW1l YnVmZmVyLmMKPiBpbmRleCA0OWZkN2RiLi5kZjZiMTgwIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9kcm1fZnJhbWVidWZmZXIuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZnJh bWVidWZmZXIuYwo+IEBAIC0xMzMsOSArMTMzLDEwIEBAIHN0YXRpYyBpbnQgZnJhbWVidWZmZXJf Y2hlY2soY29uc3Qgc3RydWN0IGRybV9tb2RlX2ZiX2NtZDIgKnIpCj4gIAo+ICAJaW5mbyA9IF9f ZHJtX2Zvcm1hdF9pbmZvKHItPnBpeGVsX2Zvcm1hdCAmIH5EUk1fRk9STUFUX0JJR19FTkRJQU4p Owo+ICAJaWYgKCFpbmZvKSB7Cj4gLQkJY2hhciAqZm9ybWF0X25hbWUgPSBkcm1fZ2V0X2Zvcm1h dF9uYW1lKHItPnBpeGVsX2Zvcm1hdCk7Cj4gLQkJRFJNX0RFQlVHX0tNUygiYmFkIGZyYW1lYnVm ZmVyIGZvcm1hdCAlc1xuIiwgZm9ybWF0X25hbWUpOwo+ICsJCXN0cnVjdCBkcm1fZm9ybWF0X25h bWVfYnVmIGZvcm1hdF9uYW1lOwo+ICsJCURSTV9ERUJVR19LTVMoImJhZCBmcmFtZWJ1ZmZlciBm b3JtYXQgJXNcbiIsCj4gKwkJICAgICAgICAgICAgICBkcm1fZ2V0X2Zvcm1hdF9uYW1lKHItPnBp eGVsX2Zvcm1hdCwKPiArCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZvcm1h dF9uYW1lKSk7Cj4gLQkJa2ZyZWUoZm9ybWF0X25hbWUpOwo+ICAJCXJldHVybiAtRUlOVkFMOwo+ ICAJfQo+ICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9tb2Rlc2V0X2hlbHBl ci5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9tb2Rlc2V0X2hlbHBlci5jCj4gaW5kZXggMjU0NGRm ZS4uMmY0NTJiMyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX21vZGVzZXRfaGVs cGVyLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX21vZGVzZXRfaGVscGVyLmMKPiBAQCAt NzUsMTAgKzc1LDExIEBAIHZvaWQgZHJtX2hlbHBlcl9tb2RlX2ZpbGxfZmJfc3RydWN0KHN0cnVj dCBkcm1fZnJhbWVidWZmZXIgKmZiLAo+ICAKPiAgCWluZm8gPSBkcm1fZm9ybWF0X2luZm8obW9k ZV9jbWQtPnBpeGVsX2Zvcm1hdCk7Cj4gIAlpZiAoIWluZm8gfHwgIWluZm8tPmRlcHRoKSB7Cj4g LQkJY2hhciAqZm9ybWF0X25hbWUgPSBkcm1fZ2V0X2Zvcm1hdF9uYW1lKG1vZGVfY21kLT5waXhl bF9mb3JtYXQpOwo+ICsJCXN0cnVjdCBkcm1fZm9ybWF0X25hbWVfYnVmIGZvcm1hdF9uYW1lOwo+ ICAKPiAtCQlEUk1fREVCVUdfS01TKCJub24tUkdCIHBpeGVsIGZvcm1hdCAlc1xuIiwgZm9ybWF0 X25hbWUpOwo+ICsJCURSTV9ERUJVR19LTVMoIm5vbi1SR0IgcGl4ZWwgZm9ybWF0ICVzXG4iLAo+ ICsJCSAgICAgICAgICAgICAgZHJtX2dldF9mb3JtYXRfbmFtZShtb2RlX2NtZC0+cGl4ZWxfZm9y bWF0LAo+ICsJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZm9ybWF0X25hbWUp KTsKPiAtCQlrZnJlZShmb3JtYXRfbmFtZSk7Cj4gIAo+ICAJCWZiLT5kZXB0aCA9IDA7Cj4gIAkJ ZmItPmJpdHNfcGVyX3BpeGVsID0gMDsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2Ry bV9wbGFuZS5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9wbGFuZS5jCj4gaW5kZXggMjQ5YzBhZS4u MmJhMGMyMiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX3BsYW5lLmMKPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vZHJtX3BsYW5lLmMKPiBAQCAtNDc5LDkgKzQ3OSwxMCBAQCBzdGF0 aWMgaW50IF9fc2V0cGxhbmVfaW50ZXJuYWwoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gIAkv KiBDaGVjayB3aGV0aGVyIHRoaXMgcGxhbmUgc3VwcG9ydHMgdGhlIGZiIHBpeGVsIGZvcm1hdC4g Ki8KPiAgCXJldCA9IGRybV9wbGFuZV9jaGVja19waXhlbF9mb3JtYXQocGxhbmUsIGZiLT5waXhl bF9mb3JtYXQpOwo+ICAJaWYgKHJldCkgewo+IC0JCWNoYXIgKmZvcm1hdF9uYW1lID0gZHJtX2dl dF9mb3JtYXRfbmFtZShmYi0+cGl4ZWxfZm9ybWF0KTsKPiAtCQlEUk1fREVCVUdfS01TKCJJbnZh bGlkIHBpeGVsIGZvcm1hdCAlc1xuIiwgZm9ybWF0X25hbWUpOwo+ICsJCXN0cnVjdCBkcm1fZm9y bWF0X25hbWVfYnVmIGZvcm1hdF9uYW1lOwo+ICsJCURSTV9ERUJVR19LTVMoIkludmFsaWQgcGl4 ZWwgZm9ybWF0ICVzXG4iLAo+ICsJCSAgICAgICAgICAgICAgZHJtX2dldF9mb3JtYXRfbmFtZShm Yi0+cGl4ZWxfZm9ybWF0LAo+ICsJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAm Zm9ybWF0X25hbWUpKTsKPiAtCQlrZnJlZShmb3JtYXRfbmFtZSk7Cj4gIAkJZ290byBvdXQ7Cj4g IAl9Cj4gIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaGlzaWxpY29uL2tpcmluL2tp cmluX2RybV9hZGUuYyBiL2RyaXZlcnMvZ3B1L2RybS9oaXNpbGljb24va2lyaW4va2lyaW5fZHJt X2FkZS5jCj4gaW5kZXggN2U3YTRkNC4uYWZjMmI1ZCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaGlzaWxpY29uL2tpcmluL2tpcmluX2RybV9hZGUuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9oaXNpbGljb24va2lyaW4va2lyaW5fZHJtX2FkZS5jCj4gQEAgLTYwOCwxNyArNjA4LDE2 IEBAIHN0YXRpYyB2b2lkIGFkZV9yZG1hX3NldCh2b2lkIF9faW9tZW0gKmJhc2UsIHN0cnVjdCBk cm1fZnJhbWVidWZmZXIgKmZiLAo+ICAJCQkgdTMyIGNoLCB1MzIgeSwgdTMyIGluX2gsIHUzMiBm bXQpCj4gIHsKPiAgCXN0cnVjdCBkcm1fZ2VtX2NtYV9vYmplY3QgKm9iaiA9IGRybV9mYl9jbWFf Z2V0X2dlbV9vYmooZmIsIDApOwo+IC0JY2hhciAqZm9ybWF0X25hbWU7Cj4gKwlzdHJ1Y3QgZHJt X2Zvcm1hdF9uYW1lX2J1ZiBmb3JtYXRfbmFtZTsKPiAgCXUzMiByZWdfY3RybCwgcmVnX2FkZHIs IHJlZ19zaXplLCByZWdfc3RyaWRlLCByZWdfc3BhY2UsIHJlZ19lbjsKPiAgCXUzMiBzdHJpZGUg PSBmYi0+cGl0Y2hlc1swXTsKPiAgCXUzMiBhZGRyID0gKHUzMilvYmotPnBhZGRyICsgeSAqIHN0 cmlkZTsKPiAgCj4gIAlEUk1fREVCVUdfRFJJVkVSKCJyZG1hJWQ6ICh5PSVkLCBoZWlnaHQ9JWQp LCBzdHJpZGU9JWQsIHBhZGRyPTB4JXhcbiIsCj4gIAkJCSBjaCArIDEsIHksIGluX2gsIHN0cmlk ZSwgKHUzMilvYmotPnBhZGRyKTsKPiAtCWZvcm1hdF9uYW1lID0gZHJtX2dldF9mb3JtYXRfbmFt ZShmYi0+cGl4ZWxfZm9ybWF0KTsKPiAgCURSTV9ERUJVR19EUklWRVIoImFkZHI9MHgleCwgZmI6 JWR4JWQsIHBpeGVsX2Zvcm1hdD0lZCglcylcbiIsCj4gLQkJCSBhZGRyLCBmYi0+d2lkdGgsIGZi LT5oZWlnaHQsIGZtdCwgZm9ybWF0X25hbWUpOwo+ICsJCQkgYWRkciwgZmItPndpZHRoLCBmYi0+ aGVpZ2h0LCBmbXQsCj4gKwkJCSBkcm1fZ2V0X2Zvcm1hdF9uYW1lKGZiLT5waXhlbF9mb3JtYXQs ICZmb3JtYXRfbmFtZSkpOwo+IC0Ja2ZyZWUoZm9ybWF0X25hbWUpOwo+ICAKPiAgCS8qIGdldCBy ZWcgb2Zmc2V0ICovCj4gIAlyZWdfY3RybCA9IFJEX0NIX0NUUkwoY2gpOwo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZGVidWdmcy5jCj4gaW5kZXggMjA2MzhkMi4uNjcwNDIzZSAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4gQEAgLTI5NzEsNyArMjk3MSw3IEBAIHN0YXRpYyB2 b2lkIGludGVsX3BsYW5lX2luZm8oc3RydWN0IHNlcV9maWxlICptLCBzdHJ1Y3QgaW50ZWxfY3J0 YyAqaW50ZWxfY3J0YykKPiAgCWZvcl9lYWNoX2ludGVsX3BsYW5lX29uX2NydGMoZGV2LCBpbnRl bF9jcnRjLCBpbnRlbF9wbGFuZSkgewo+ICAJCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnN0YXRl Owo+ICAJCXN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lID0gJmludGVsX3BsYW5lLT5iYXNlOwo+IC0J CWNoYXIgKmZvcm1hdF9uYW1lOwo+ICsJCXN0cnVjdCBkcm1fZm9ybWF0X25hbWVfYnVmIGZvcm1h dF9uYW1lOwo+ICAKPiAgCQlpZiAoIXBsYW5lLT5zdGF0ZSkgewo+ICAJCQlzZXFfcHV0cyhtLCAi cGxhbmUtPnN0YXRlIGlzIE5VTEwhXG4iKTsKPiBAQCAtMjk4MSw5ICsyOTgxLDkgQEAgc3RhdGlj IHZvaWQgaW50ZWxfcGxhbmVfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHN0cnVjdCBpbnRlbF9j cnRjICppbnRlbF9jcnRjKQo+ICAJCXN0YXRlID0gcGxhbmUtPnN0YXRlOwo+ICAKPiAgCQlpZiAo c3RhdGUtPmZiKSB7Cj4gLQkJCWZvcm1hdF9uYW1lID0gZHJtX2dldF9mb3JtYXRfbmFtZShzdGF0 ZS0+ZmItPnBpeGVsX2Zvcm1hdCk7Cj4gKwkJCWRybV9nZXRfZm9ybWF0X25hbWUoc3RhdGUtPmZi LT5waXhlbF9mb3JtYXQsICZmb3JtYXRfbmFtZSk7Cj4gIAkJfSBlbHNlIHsKPiAtCQkJZm9ybWF0 X25hbWUgPSBrc3RyZHVwKCJOL0EiLCBHRlBfS0VSTkVMKTsKPiArCQkJc3ByaW50Zihmb3JtYXRf bmFtZS5zdHIsICJOL0EiKTsKPiAgCQl9Cj4gIAo+ICAJCXNlcV9wcmludGYobSwgIlx0LS1QbGFu ZSBpZCAlZDogdHlwZT0lcywgY3J0Y19wb3M9JTRkeCU0ZCwgY3J0Y19zaXplPSU0ZHglNGQsIHNy Y19wb3M9JWQuJTA0dXglZC4lMDR1LCBzcmNfc2l6ZT0lZC4lMDR1eCVkLiUwNHUsIGZvcm1hdD0l cywgcm90YXRpb249JXNcbiIsCj4gQEAgLTI5OTksMTAgKzI5OTksOCBAQCBzdGF0aWMgdm9pZCBp bnRlbF9wbGFuZV9pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgc3RydWN0IGludGVsX2NydGMgKmlu dGVsX2NydGMpCj4gIAkJCSAgICgoc3RhdGUtPnNyY193ICYgMHhmZmZmKSAqIDE1NjI1KSA+PiAx MCwKPiAgCQkJICAgKHN0YXRlLT5zcmNfaCA+PiAxNiksCj4gIAkJCSAgICgoc3RhdGUtPnNyY19o ICYgMHhmZmZmKSAqIDE1NjI1KSA+PiAxMCwKPiAtCQkJICAgZm9ybWF0X25hbWUsCj4gKwkJCSAg IGZvcm1hdF9uYW1lLnN0ciwKPiAgCQkJICAgcGxhbmVfcm90YXRpb24oc3RhdGUtPnJvdGF0aW9u KSk7Cj4gLQo+IC0JCWtmcmVlKGZvcm1hdF9uYW1lKTsKPiAgCX0KPiAgfQo+ICAKPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRvbWljX3BsYW5lLmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9hdG9taWNfcGxhbmUuYwo+IGluZGV4IGM3NjJhZTUuLjZjNzZl M2QgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRvbWljX3BsYW5l LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdG9taWNfcGxhbmUuYwo+IEBA IC0xNDMsNyArMTQzLDcgQEAgc3RhdGljIGludCBpbnRlbF9wbGFuZV9hdG9taWNfY2hlY2soc3Ry dWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gIAkJY3J0Y19zdGF0ZS0+YmFzZS5lbmFibGUgPyBjcnRj X3N0YXRlLT5waXBlX3NyY19oIDogMDsKPiAgCj4gIAlpZiAoc3RhdGUtPmZiICYmIGRybV9yb3Rh dGlvbl85MF9vcl8yNzAoc3RhdGUtPnJvdGF0aW9uKSkgewo+IC0JCWNoYXIgKmZvcm1hdF9uYW1l Owo+ICsJCXN0cnVjdCBkcm1fZm9ybWF0X25hbWVfYnVmIGZvcm1hdF9uYW1lOwo+ICAKPiAgCQlp ZiAoIShzdGF0ZS0+ZmItPm1vZGlmaWVyWzBdID09IEk5MTVfRk9STUFUX01PRF9ZX1RJTEVEIHx8 Cj4gIAkJCXN0YXRlLT5mYi0+bW9kaWZpZXJbMF0gPT0gSTkxNV9GT1JNQVRfTU9EX1lmX1RJTEVE KSkgewo+IEBAIC0xNTksOSArMTU5LDkgQEAgc3RhdGljIGludCBpbnRlbF9wbGFuZV9hdG9taWNf Y2hlY2soc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gIAkJc3dpdGNoIChzdGF0ZS0+ZmItPnBp eGVsX2Zvcm1hdCkgewo+ICAJCWNhc2UgRFJNX0ZPUk1BVF9DODoKPiAgCQljYXNlIERSTV9GT1JN QVRfUkdCNTY1Ogo+IC0JCQlmb3JtYXRfbmFtZSA9IGRybV9nZXRfZm9ybWF0X25hbWUoc3RhdGUt PmZiLT5waXhlbF9mb3JtYXQpOwo+IC0JCQlEUk1fREVCVUdfS01TKCJVbnN1cHBvcnRlZCBwaXhl bCBmb3JtYXQgJXMgZm9yIDkwLzI3MCFcbiIsIGZvcm1hdF9uYW1lKTsKPiArCQkJRFJNX0RFQlVH X0tNUygiVW5zdXBwb3J0ZWQgcGl4ZWwgZm9ybWF0ICVzIGZvciA5MC8yNzAhXG4iLAo+ICsJCQkg ICAgICAgICAgICAgIGRybV9nZXRfZm9ybWF0X25hbWUoc3RhdGUtPmZiLT5waXhlbF9mb3JtYXQs Cj4gKwkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZm9ybWF0X25hbWUpKTsK PiAtCQkJa2ZyZWUoZm9ybWF0X25hbWUpOwo+ICAJCQlyZXR1cm4gLUVJTlZBTDsKPiAgCj4gIAkJ ZGVmYXVsdDoKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxh eS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gaW5kZXggNmY4ZjZl Yy4uODIwOTE3MCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNw bGF5LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiBAQCAt MTI4NzEsNyArMTI4NzEsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kdW1wX3BpcGVfY29uZmlnKHN0 cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ICAKPiAgCURSTV9ERUJVR19LTVMoInBsYW5lcyBvbiB0 aGlzIGNydGNcbiIpOwo+ICAJbGlzdF9mb3JfZWFjaF9lbnRyeShwbGFuZSwgJmRldi0+bW9kZV9j b25maWcucGxhbmVfbGlzdCwgaGVhZCkgewo+IC0JCWNoYXIgKmZvcm1hdF9uYW1lOwo+ICsJCXN0 cnVjdCBkcm1fZm9ybWF0X25hbWVfYnVmIGZvcm1hdF9uYW1lOwo+ICAJCWludGVsX3BsYW5lID0g dG9faW50ZWxfcGxhbmUocGxhbmUpOwo+ICAJCWlmIChpbnRlbF9wbGFuZS0+cGlwZSAhPSBjcnRj LT5waXBlKQo+ICAJCQljb250aW51ZTsKPiBAQCAtMTI4ODQsMTIgKzEyODg0LDExIEBAIHN0YXRp YyB2b2lkIGludGVsX2R1bXBfcGlwZV9jb25maWcoc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4g IAkJCWNvbnRpbnVlOwo+ICAJCX0KPiAgCj4gLQkJZm9ybWF0X25hbWUgPSBkcm1fZ2V0X2Zvcm1h dF9uYW1lKGZiLT5waXhlbF9mb3JtYXQpOwo+IC0KPiAgCQlEUk1fREVCVUdfS01TKCJbUExBTkU6 JWQ6JXNdIGVuYWJsZWQiLAo+ICAJCQkgICAgICBwbGFuZS0+YmFzZS5pZCwgcGxhbmUtPm5hbWUp Owo+ICAJCURSTV9ERUJVR19LTVMoIlx0RkI6JWQsIGZiID0gJXV4JXUgZm9ybWF0ID0gJXMiLAo+ IC0JCQkgICAgICBmYi0+YmFzZS5pZCwgZmItPndpZHRoLCBmYi0+aGVpZ2h0LCBmb3JtYXRfbmFt ZSk7Cj4gKwkJCSAgICAgIGZiLT5iYXNlLmlkLCBmYi0+d2lkdGgsIGZiLT5oZWlnaHQsCj4gKwkJ CSAgICAgIGRybV9nZXRfZm9ybWF0X25hbWUoZmItPnBpeGVsX2Zvcm1hdCwgJmZvcm1hdF9uYW1l KSk7Cj4gIAkJRFJNX0RFQlVHX0tNUygiXHRzY2FsZXI6JWQgc3JjICVkeCVkKyVkKyVkIGRzdCAl ZHglZCslZCslZFxuIiwKPiAgCQkJICAgICAgc3RhdGUtPnNjYWxlcl9pZCwKPiAgCQkJICAgICAg c3RhdGUtPmJhc2Uuc3JjLngxID4+IDE2LAo+IEBAIC0xMjg5OSw4ICsxMjg5OCw2IEBAIHN0YXRp YyB2b2lkIGludGVsX2R1bXBfcGlwZV9jb25maWcoc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4g IAkJCSAgICAgIHN0YXRlLT5iYXNlLmRzdC54MSwgc3RhdGUtPmJhc2UuZHN0LnkxLAo+ICAJCQkg ICAgICBkcm1fcmVjdF93aWR0aCgmc3RhdGUtPmJhc2UuZHN0KSwKPiAgCQkJICAgICAgZHJtX3Jl Y3RfaGVpZ2h0KCZzdGF0ZS0+YmFzZS5kc3QpKTsKPiAtCj4gLQkJa2ZyZWUoZm9ybWF0X25hbWUp Owo+ICAJfQo+ICB9Cj4gIAo+IEBAIC0xNTc0OSw3ICsxNTc0Niw3IEBAIHN0YXRpYyBpbnQgaW50 ZWxfZnJhbWVidWZmZXJfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAJdW5zaWduZWQg aW50IHRpbGluZyA9IGk5MTVfZ2VtX29iamVjdF9nZXRfdGlsaW5nKG9iaik7Cj4gIAlpbnQgcmV0 Owo+ICAJdTMyIHBpdGNoX2xpbWl0LCBzdHJpZGVfYWxpZ25tZW50Owo+IC0JY2hhciAqZm9ybWF0 X25hbWU7Cj4gKwlzdHJ1Y3QgZHJtX2Zvcm1hdF9uYW1lX2J1ZiBmb3JtYXRfbmFtZTsKPiAgCj4g IAlXQVJOX09OKCFtdXRleF9pc19sb2NrZWQoJmRldi0+c3RydWN0X211dGV4KSk7Cj4gIAo+IEBA IC0xNTg0MCwxOCArMTU4MzcsMTYgQEAgc3RhdGljIGludCBpbnRlbF9mcmFtZWJ1ZmZlcl9pbml0 KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAkJYnJlYWs7Cj4gIAljYXNlIERSTV9GT1JNQVRf WFJHQjE1NTU6Cj4gIAkJaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID4gMykgewo+IC0JCQlmb3Jt YXRfbmFtZSA9IGRybV9nZXRfZm9ybWF0X25hbWUobW9kZV9jbWQtPnBpeGVsX2Zvcm1hdCk7Cj4g LQkJCURSTV9ERUJVRygidW5zdXBwb3J0ZWQgcGl4ZWwgZm9ybWF0OiAlc1xuIiwgZm9ybWF0X25h bWUpOwo+ICsJCQlEUk1fREVCVUcoInVuc3VwcG9ydGVkIHBpeGVsIGZvcm1hdDogJXNcbiIsCj4g KwkJCSAgICAgICAgICBkcm1fZ2V0X2Zvcm1hdF9uYW1lKG1vZGVfY21kLT5waXhlbF9mb3JtYXQs ICZmb3JtYXRfbmFtZSkpOwo+IC0JCQlrZnJlZShmb3JtYXRfbmFtZSk7Cj4gIAkJCXJldHVybiAt RUlOVkFMOwo+ICAJCX0KPiAgCQlicmVhazsKPiAgCWNhc2UgRFJNX0ZPUk1BVF9BQkdSODg4ODoK PiAgCQlpZiAoIUlTX1ZBTExFWVZJRVcoZGV2X3ByaXYpICYmICFJU19DSEVSUllWSUVXKGRldl9w cml2KSAmJgo+ICAJCSAgICBJTlRFTF9JTkZPKGRldiktPmdlbiA8IDkpIHsKPiAtCQkJZm9ybWF0 X25hbWUgPSBkcm1fZ2V0X2Zvcm1hdF9uYW1lKG1vZGVfY21kLT5waXhlbF9mb3JtYXQpOwo+IC0J CQlEUk1fREVCVUcoInVuc3VwcG9ydGVkIHBpeGVsIGZvcm1hdDogJXNcbiIsIGZvcm1hdF9uYW1l KTsKPiArCQkJRFJNX0RFQlVHKCJ1bnN1cHBvcnRlZCBwaXhlbCBmb3JtYXQ6ICVzXG4iLAo+ICsJ CQkgICAgICAgICAgZHJtX2dldF9mb3JtYXRfbmFtZShtb2RlX2NtZC0+cGl4ZWxfZm9ybWF0LCAm Zm9ybWF0X25hbWUpKTsKPiAtCQkJa2ZyZWUoZm9ybWF0X25hbWUpOwo+ICAJCQlyZXR1cm4gLUVJ TlZBTDsKPiAgCQl9Cj4gIAkJYnJlYWs7Cj4gQEAgLTE1ODU5LDE3ICsxNTg1NCwxNSBAQCBzdGF0 aWMgaW50IGludGVsX2ZyYW1lYnVmZmVyX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAg CWNhc2UgRFJNX0ZPUk1BVF9YUkdCMjEwMTAxMDoKPiAgCWNhc2UgRFJNX0ZPUk1BVF9YQkdSMjEw MTAxMDoKPiAgCQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPCA0KSB7Cj4gLQkJCWZvcm1hdF9u YW1lID0gZHJtX2dldF9mb3JtYXRfbmFtZShtb2RlX2NtZC0+cGl4ZWxfZm9ybWF0KTsKPiAtCQkJ RFJNX0RFQlVHKCJ1bnN1cHBvcnRlZCBwaXhlbCBmb3JtYXQ6ICVzXG4iLCBmb3JtYXRfbmFtZSk7 Cj4gKwkJCURSTV9ERUJVRygidW5zdXBwb3J0ZWQgcGl4ZWwgZm9ybWF0OiAlc1xuIiwKPiArCQkJ ICAgICAgICAgIGRybV9nZXRfZm9ybWF0X25hbWUobW9kZV9jbWQtPnBpeGVsX2Zvcm1hdCwgJmZv cm1hdF9uYW1lKSk7Cj4gLQkJCWtmcmVlKGZvcm1hdF9uYW1lKTsKPiAgCQkJcmV0dXJuIC1FSU5W QUw7Cj4gIAkJfQo+ICAJCWJyZWFrOwo+ICAJY2FzZSBEUk1fRk9STUFUX0FCR1IyMTAxMDEwOgo+ ICAJCWlmICghSVNfVkFMTEVZVklFVyhkZXZfcHJpdikgJiYgIUlTX0NIRVJSWVZJRVcoZGV2X3By aXYpKSB7Cj4gLQkJCWZvcm1hdF9uYW1lID0gZHJtX2dldF9mb3JtYXRfbmFtZShtb2RlX2NtZC0+ cGl4ZWxfZm9ybWF0KTsKPiAtCQkJRFJNX0RFQlVHKCJ1bnN1cHBvcnRlZCBwaXhlbCBmb3JtYXQ6 ICVzXG4iLCBmb3JtYXRfbmFtZSk7Cj4gKwkJCURSTV9ERUJVRygidW5zdXBwb3J0ZWQgcGl4ZWwg Zm9ybWF0OiAlc1xuIiwKPiArCQkJICAgICAgICAgIGRybV9nZXRfZm9ybWF0X25hbWUobW9kZV9j bWQtPnBpeGVsX2Zvcm1hdCwgJmZvcm1hdF9uYW1lKSk7Cj4gLQkJCWtmcmVlKGZvcm1hdF9uYW1l KTsKPiAgCQkJcmV0dXJuIC1FSU5WQUw7Cj4gIAkJfQo+ICAJCWJyZWFrOwo+IEBAIC0xNTg3OCwx NiArMTU4NzEsMTQgQEAgc3RhdGljIGludCBpbnRlbF9mcmFtZWJ1ZmZlcl9pbml0KHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsCj4gIAljYXNlIERSTV9GT1JNQVRfWVZZVToKPiAgCWNhc2UgRFJNX0ZP Uk1BVF9WWVVZOgo+ICAJCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA8IDUpIHsKPiAtCQkJZm9y bWF0X25hbWUgPSBkcm1fZ2V0X2Zvcm1hdF9uYW1lKG1vZGVfY21kLT5waXhlbF9mb3JtYXQpOwo+ IC0JCQlEUk1fREVCVUcoInVuc3VwcG9ydGVkIHBpeGVsIGZvcm1hdDogJXNcbiIsIGZvcm1hdF9u YW1lKTsKPiArCQkJRFJNX0RFQlVHKCJ1bnN1cHBvcnRlZCBwaXhlbCBmb3JtYXQ6ICVzXG4iLAo+ ICsJCQkgICAgICAgICAgZHJtX2dldF9mb3JtYXRfbmFtZShtb2RlX2NtZC0+cGl4ZWxfZm9ybWF0 LCAmZm9ybWF0X25hbWUpKTsKPiAtCQkJa2ZyZWUoZm9ybWF0X25hbWUpOwo+ICAJCQlyZXR1cm4g LUVJTlZBTDsKPiAgCQl9Cj4gIAkJYnJlYWs7Cj4gIAlkZWZhdWx0Ogo+IC0JCWZvcm1hdF9uYW1l ID0gZHJtX2dldF9mb3JtYXRfbmFtZShtb2RlX2NtZC0+cGl4ZWxfZm9ybWF0KTsKPiAtCQlEUk1f REVCVUcoInVuc3VwcG9ydGVkIHBpeGVsIGZvcm1hdDogJXNcbiIsIGZvcm1hdF9uYW1lKTsKPiAr CQlEUk1fREVCVUcoInVuc3VwcG9ydGVkIHBpeGVsIGZvcm1hdDogJXNcbiIsCj4gKwkJICAgICAg ICAgIGRybV9nZXRfZm9ybWF0X25hbWUobW9kZV9jbWQtPnBpeGVsX2Zvcm1hdCwgJmZvcm1hdF9u YW1lKSk7Cj4gLQkJa2ZyZWUoZm9ybWF0X25hbWUpOwo+ICAJCXJldHVybiAtRUlOVkFMOwo+ICAJ fQo+ICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9hdG9tYmlvc19jcnRj LmMgYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL2F0b21iaW9zX2NydGMuYwo+IGluZGV4IDc0Zjk5 YmEuLjA1ZjRlYmUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9hdG9tYmlv c19jcnRjLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL2F0b21iaW9zX2NydGMuYwo+ IEBAIC0xMTU2LDcgKzExNTYsNyBAQCBzdGF0aWMgaW50IGRjZTRfY3J0Y19kb19zZXRfYmFzZShz dHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gIAl1MzIgdG1wLCB2aWV3cG9ydF93LCB2aWV3cG9ydF9o Owo+ICAJaW50IHI7Cj4gIAlib29sIGJ5cGFzc19sdXQgPSBmYWxzZTsKPiAtCWNoYXIgKmZvcm1h dF9uYW1lOwo+ICsJc3RydWN0IGRybV9mb3JtYXRfbmFtZV9idWYgZm9ybWF0X25hbWU7Cj4gIAo+ ICAJLyogbm8gZmIgYm91bmQgKi8KPiAgCWlmICghYXRvbWljICYmICFjcnRjLT5wcmltYXJ5LT5m Yikgewo+IEBAIC0xMjYwLDkgKzEyNjAsOCBAQCBzdGF0aWMgaW50IGRjZTRfY3J0Y19kb19zZXRf YmFzZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gIAkJYnlwYXNzX2x1dCA9IHRydWU7Cj4gIAkJ YnJlYWs7Cj4gIAlkZWZhdWx0Ogo+IC0JCWZvcm1hdF9uYW1lID0gZHJtX2dldF9mb3JtYXRfbmFt ZSh0YXJnZXRfZmItPnBpeGVsX2Zvcm1hdCk7Cj4gLQkJRFJNX0VSUk9SKCJVbnN1cHBvcnRlZCBz Y3JlZW4gZm9ybWF0ICVzXG4iLCBmb3JtYXRfbmFtZSk7Cj4gKwkJRFJNX0VSUk9SKCJVbnN1cHBv cnRlZCBzY3JlZW4gZm9ybWF0ICVzXG4iLAo+ICsJCSAgICAgICAgICBkcm1fZ2V0X2Zvcm1hdF9u YW1lKHRhcmdldF9mYi0+cGl4ZWxfZm9ybWF0LCAmZm9ybWF0X25hbWUpKTsKPiAtCQlrZnJlZShm b3JtYXRfbmFtZSk7Cj4gIAkJcmV0dXJuIC1FSU5WQUw7Cj4gIAl9Cj4gIAo+IEBAIC0xNDczLDcg KzE0NzIsNyBAQCBzdGF0aWMgaW50IGF2aXZvX2NydGNfZG9fc2V0X2Jhc2Uoc3RydWN0IGRybV9j cnRjICpjcnRjLAo+ICAJdTMyIHZpZXdwb3J0X3csIHZpZXdwb3J0X2g7Cj4gIAlpbnQgcjsKPiAg CWJvb2wgYnlwYXNzX2x1dCA9IGZhbHNlOwo+IC0JY2hhciAqZm9ybWF0X25hbWU7Cj4gKwlzdHJ1 Y3QgZHJtX2Zvcm1hdF9uYW1lX2J1ZiBmb3JtYXRfbmFtZTsKPiAgCj4gIAkvKiBubyBmYiBib3Vu ZCAqLwo+ICAJaWYgKCFhdG9taWMgJiYgIWNydGMtPnByaW1hcnktPmZiKSB7Cj4gQEAgLTE1NjMs OSArMTU2Miw4IEBAIHN0YXRpYyBpbnQgYXZpdm9fY3J0Y19kb19zZXRfYmFzZShzdHJ1Y3QgZHJt X2NydGMgKmNydGMsCj4gIAkJYnlwYXNzX2x1dCA9IHRydWU7Cj4gIAkJYnJlYWs7Cj4gIAlkZWZh dWx0Ogo+IC0JCWZvcm1hdF9uYW1lID0gZHJtX2dldF9mb3JtYXRfbmFtZSh0YXJnZXRfZmItPnBp eGVsX2Zvcm1hdCk7Cj4gLQkJRFJNX0VSUk9SKCJVbnN1cHBvcnRlZCBzY3JlZW4gZm9ybWF0ICVz XG4iLCBmb3JtYXRfbmFtZSk7Cj4gKwkJRFJNX0VSUk9SKCJVbnN1cHBvcnRlZCBzY3JlZW4gZm9y bWF0ICVzXG4iLAo+ICsJCSAgICAgICAgICBkcm1fZ2V0X2Zvcm1hdF9uYW1lKHRhcmdldF9mYi0+ cGl4ZWxfZm9ybWF0LCAmZm9ybWF0X25hbWUpKTsKPiAtCQlrZnJlZShmb3JtYXRfbmFtZSk7Cj4g IAkJcmV0dXJuIC1FSU5WQUw7Cj4gIAl9Cj4gIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vdm13Z2Z4L3Ztd2dmeF9rbXMuYyBiL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2tt cy5jCj4gaW5kZXggYzk2NTUxNC4uZTNmNjhjYyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vdm13Z2Z4L3Ztd2dmeF9rbXMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13 Z2Z4X2ttcy5jCj4gQEAgLTk4NSw4ICs5ODUsOSBAQCBzdGF0aWMgc3RydWN0IGRybV9mcmFtZWJ1 ZmZlciAqdm13X2ttc19mYl9jcmVhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgCj4gIAlp bmZvID0gZHJtX2Zvcm1hdF9pbmZvKG1vZGVfY21kMi0+cGl4ZWxfZm9ybWF0KTsKPiAgCWlmICgh aW5mbyB8fCAhaW5mby0+ZGVwdGgpIHsKPiArCQlzdHJ1Y3QgZHJtX2Zvcm1hdF9uYW1lX2J1ZiBm b3JtYXRfbmFtZTsKPiAgCQlEUk1fRVJST1IoIlVuc3VwcG9ydGVkIGZyYW1lYnVmZmVyIGZvcm1h dCAlc1xuIiwKPiAtCQkJICBkcm1fZ2V0X2Zvcm1hdF9uYW1lKG1vZGVfY21kMi0+cGl4ZWxfZm9y bWF0KSk7Cj4gKwkJICAgICAgICAgIGRybV9nZXRfZm9ybWF0X25hbWUobW9kZV9jbWQyLT5waXhl bF9mb3JtYXQsICZmb3JtYXRfbmFtZSkpOwo+ICAJCXJldHVybiBFUlJfUFRSKC1FSU5WQUwpOwo+ ICAJfQoKLS0gCkphbmkgTmlrdWxhLCBJbnRlbCBPcGVuIFNvdXJjZSBUZWNobm9sb2d5IENlbnRl cgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1n ZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK