From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id A74E26E4D7 for ; Mon, 4 Feb 2019 13:22:24 +0000 (UTC) References: <20190201111544.7920-1-maarten.lankhorst@linux.intel.com> <20190201111544.7920-2-maarten.lankhorst@linux.intel.com> From: "Sharma, Swati2" Message-ID: <57ec6cf6-e675-e068-dd21-c43cfb3e0003@intel.com> Date: Mon, 4 Feb 2019 18:52:18 +0530 MIME-Version: 1.0 In-Reply-To: <20190201111544.7920-2-maarten.lankhorst@linux.intel.com> Content-Language: en-US Subject: Re: [igt-dev] [PATCH i-g-t 2/4] lib/igt_fb: Add support for P01x formats List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: Maarten Lankhorst Cc: igt-dev@lists.freedesktop.org List-ID: Ck9uIDAxLUZlYi0xOSA0OjQ1IFBNLCBNYWFydGVuIExhbmtob3JzdCB3cm90ZToKPiBUaGUgUDAx eCBmb3JtYXRzIGFyZSBwbGFuYXIgMTYgYml0cyBwZXIgY29tcG9uZW50LCB3aXRoIHRoZSB1bnVz ZWQgbG93ZXIgYml0cyBzZXQgdG8gMC4KPiBUaGlzIG1lYW5zIHRoZXkgY2FuIGFsbCBiZSBjb252 ZXJ0ZWQgdGhlIHNhbWUgd2F5LiBPbmx5IHRoZSByYW5nZSBpcyBzbGlnaHRseSBkaWZmZXJlbnQs Cj4gYW5kIHRoaXMgaXMgaGFuZGxlZCBpbiB0aGUgY29sb3JfZW5jb2RpbmcgaW1wbGVtZW50YXRp b24uCj4KPiBUaGlzIHJlcXVpcmVzIGNhaXJvIDEuMTcuMiBhbmQgcGl4bWFuIDAuMzYuIFRoaXMg d29ya3MgYnV0IGRvZXNuJ3QgZ2l2ZSBleHRyYSBwcmVjaXNpb24uCj4gRm9yIG1vcmUgdGhhbiA4 IGJpdHMgcHJlY2lzaW9uIGEgZmV3IG1vcmUgcGF0Y2hlcyBhcmUgcmVxdWlyZWQgdG8gcGl4bWFu LCBwZW5kaW5nIHJldmlldzoKPiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9hcmNoaXZl cy9waXhtYW4vMjAxOS1KYW51YXJ5LzAwNDgxNS5odG1sCj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVz a3RvcC5vcmcvYXJjaGl2ZXMvcGl4bWFuLzIwMTktSmFudWFyeS8wMDQ4MDkuaHRtbAo+Cj4gT25j ZSB0aG9zZSBhcmUgbWVyZ2VkLCB3ZSB3aWxsIHJlcXVpcmUgdGhlIG5leHQgcGl4bWFuIHJlbGVh c2UgZm9yIGJldHRlciBwcmVjaXNpb24uCj4KPiBTaWduZWQtb2ZmLWJ5OiBNYWFydGVuIExhbmto b3JzdCA8bWFhcnRlbi5sYW5raG9yc3RAbGludXguaW50ZWwuY29tPgo+IC0tLQo+ICAgY29uZmln dXJlLmFjICAgICAgICAgICAgICAgICAgfCAgIDQgKy0KPiAgIGluY2x1ZGUvZHJtLXVhcGkvZHJt X2ZvdXJjYy5oIHwgIDEwICsrCj4gICBsaWIvaWd0X2NvbG9yX2VuY29kaW5nLmMgICAgICB8ICAg NCArCj4gICBsaWIvaWd0X2ZiLmMgICAgICAgICAgICAgICAgICB8IDIwNSArKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKy0tCj4gICBsaWIvaWd0X2ZiLmggICAgICAgICAgICAgICAgICB8 ICAgNiArCj4gICBtZXNvbi5idWlsZCAgICAgICAgICAgICAgICAgICB8ICAgNCArLQo+ICAgNiBm aWxlcyBjaGFuZ2VkLCAyMTggaW5zZXJ0aW9ucygrKSwgMTUgZGVsZXRpb25zKC0pCj4KPiBkaWZm IC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCj4gaW5kZXggYjQ2ZjAyNGY4NzVh Li4zMzZhMDViYjNmMGQgMTAwNjQ0Cj4gLS0tIGEvY29uZmlndXJlLmFjCj4gKysrIGIvY29uZmln dXJlLmFjCj4gQEAgLTEzNiwxMCArMTM2LDEwIEBAIGZpCj4gICBQS0dfQ0hFQ0tfTU9EVUxFUyhY UkFORFIsIHhyYW5kciA+PSAxLjMsIEFDX0RFRklORShIQVZFX1hSQU5EUiwgMSwgW0hhdmUgbGli WHJhbmRyXSksIFtoYXZlX3hyYW5kcj1ub10pCj4gICAKPiAgICMgZm9yIHRlc3RkaXNwbGF5Cj4g LVBLR19DSEVDS19NT0RVTEVTKENBSVJPLCBbY2Fpcm8gPj0gMS4xMi4wXSkKPiArUEtHX0NIRUNL X01PRFVMRVMoQ0FJUk8sIFtjYWlybyA+PSAxLjE3LjJdKQo+ICAgUEtHX0NIRUNLX01PRFVMRVMo TElCVURFViwgW2xpYnVkZXZdKQo+ICAgUEtHX0NIRUNLX01PRFVMRVMoR0xJQiwgW2dsaWItMi4w XSkKPiAtUEtHX0NIRUNLX01PRFVMRVMoUElYTUFOLCBbcGl4bWFuLTFdKQo+ICtQS0dfQ0hFQ0tf TU9EVUxFUyhQSVhNQU4sIFtwaXhtYW4tMSA+PSAwLjM2XSkKPiAgIFBLR19DSEVDS19NT0RVTEVT KEdTTCwgW2dzbF0sIFtnc2w9eWVzXSwgW2dzbD1ub10pCj4gICBBTV9DT05ESVRJT05BTChIQVZF X0dTTCwgW3Rlc3QgIngkZ3NsIiA9IHh5ZXNdKQo+ICAgCj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUv ZHJtLXVhcGkvZHJtX2ZvdXJjYy5oIGIvaW5jbHVkZS9kcm0tdWFwaS9kcm1fZm91cmNjLmgKPiBp bmRleCA0ZGRmNzU0YmFiMDkuLmM5YTVlNTc4NzAzMSAxMDA2NDQKPiAtLS0gYS9pbmNsdWRlL2Ry bS11YXBpL2RybV9mb3VyY2MuaAo+ICsrKyBiL2luY2x1ZGUvZHJtLXVhcGkvZHJtX2ZvdXJjYy5o Cj4gQEAgLTE5NSw2ICsxOTUsMTYgQEAgZXh0ZXJuICJDIiB7Cj4gICAjZGVmaW5lIERSTV9GT1JN QVRfTlYyNAkJZm91cmNjX2NvZGUoJ04nLCAnVicsICcyJywgJzQnKSAvKiBub24tc3Vic2FtcGxl ZCBDcjpDYiBwbGFuZSAqLwo+ICAgI2RlZmluZSBEUk1fRk9STUFUX05WNDIJCWZvdXJjY19jb2Rl KCdOJywgJ1YnLCAnNCcsICcyJykgLyogbm9uLXN1YnNhbXBsZWQgQ2I6Q3IgcGxhbmUgKi8KPiAg IAo+ICsvKgo+ICsgKiAyIHBsYW5lIFlDYkNyCj4gKyAqIGluZGV4IDAgPSBZIHBsYW5lLCBbMTU6 MF0gWSBsaXR0bGUgZW5kaWFuIHdoZXJlIFB4eHggaW5kaWNhdGUKPiArICogY29tcG9uZW50IHh4 eCBtc2IgWSBbeHh4OjE2LXh4eF0KPiArICogaW5kZXggMSA9IENyOkNiIHBsYW5lLCBbMzE6MF0g Q3I6Q2IgbGl0dGxlIGVuZGlhbiBbeHh4OjE2LXh4eDp4eHg6MTYteHh4XQo+ICsgKi8KPiArI2Rl ZmluZSBEUk1fRk9STUFUX1AwMTAJCWZvdXJjY19jb2RlKCdQJywgJzAnLCAnMScsICcwJykgLyog MngyIHN1YnNhbXBsZWQgQ3I6Q2IgcGxhbmUsIDEwIGJpdCBwZXIgY2hhbm5lbCAqLwo+ICsjZGVm aW5lIERSTV9GT1JNQVRfUDAxMgkJZm91cmNjX2NvZGUoJ1AnLCAnMCcsICcxJywgJzInKSAvKiAy eDIgc3Vic2FtcGxlZCBDcjpDYiBwbGFuZSwgMTIgYml0IHBlciBjaGFubmVsICovCj4gKyNkZWZp bmUgRFJNX0ZPUk1BVF9QMDE2CQlmb3VyY2NfY29kZSgnUCcsICcwJywgJzEnLCAnNicpIC8qIDJ4 MiBzdWJzYW1wbGVkIENyOkNiIHBsYW5lLCAxNiBiaXQgcGVyIGNoYW5uZWwgKi8KPiArCj4gICAv Kgo+ICAgICogMyBwbGFuZSBZQ2JDcgo+ICAgICogaW5kZXggMDogWSBwbGFuZSwgWzc6MF0gWQo+ IGRpZmYgLS1naXQgYS9saWIvaWd0X2NvbG9yX2VuY29kaW5nLmMgYi9saWIvaWd0X2NvbG9yX2Vu Y29kaW5nLmMKPiBpbmRleCA0Y2JlMThlMjE3ZTMuLmI3YTEyYTFlMDdmNyAxMDA2NDQKPiAtLS0g YS9saWIvaWd0X2NvbG9yX2VuY29kaW5nLmMKPiArKysgYi9saWIvaWd0X2NvbG9yX2VuY29kaW5n LmMKPiBAQCAtMTM1LDExICsxMzUsMTUgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBjb2xvcl9lbmNv ZGluZ19mb3JtYXQgewo+ICAgCWZsb2F0IG9mc195LCBtYXhfeSwgb2ZzX2NiY3IsIG1pZF9jYmNy LCBtYXhfY2JjcjsKPiAgIH0gZm9ybWF0c1tdID0gewo+ICAgCXsgRFJNX0ZPUk1BVF9YUkdCODg4 OCwgMjU1LmYsIH0sCj4gKwl7IElHVF9GT1JNQVRfRkxPQVQsIDEuZiwgfSwKPiAgIAl7IERSTV9G T1JNQVRfTlYxMiwgMjU1LmYsIDE2LmYsIDIzNS5mLCAxNi5mLCAxMjguZiwgMjQwLmYgfSwKPiAg IAl7IERSTV9GT1JNQVRfWVVZViwgMjU1LmYsIDE2LmYsIDIzNS5mLCAxNi5mLCAxMjguZiwgMjQw LmYgfSwKPiAgIAl7IERSTV9GT1JNQVRfWVZZVSwgMjU1LmYsIDE2LmYsIDIzNS5mLCAxNi5mLCAx MjguZiwgMjQwLmYgfSwKPiAgIAl7IERSTV9GT1JNQVRfVVlWWSwgMjU1LmYsIDE2LmYsIDIzNS5m LCAxNi5mLCAxMjguZiwgMjQwLmYgfSwKPiAgIAl7IERSTV9GT1JNQVRfVllVWSwgMjU1LmYsIDE2 LmYsIDIzNS5mLCAxNi5mLCAxMjguZiwgMjQwLmYgfSwKPiArCXsgRFJNX0ZPUk1BVF9QMDEwLCA2 NTQ3Mi5mLCA0MDk2LmYsIDYwMTYwLmYsIDQwOTYuZiwgMzI3NjguZiwgNjE0NDAuZiB9LAo+ICsJ eyBEUk1fRk9STUFUX1AwMTIsIDY1NTIwLmYsIDQwOTYuZiwgNjAxNjAuZiwgNDA5Ni5mLCAzMjc2 OC5mLCA2MTQ0MC5mIH0sCj4gKwl7IERSTV9GT1JNQVRfUDAxNiwgNjU1MzUuZiwgNDA5Ni5mLCA2 MDE2MC5mLCA0MDk2LmYsIDMyNzY4LmYsIDYxNDQwLmYgfSwKPiAgIH07Cj4gICAKPiAgIHN0YXRp YyBjb25zdCBzdHJ1Y3QgY29sb3JfZW5jb2RpbmdfZm9ybWF0ICpsb29rdXBfZm91cmNjKHVpbnQz Ml90IGZvdXJjYykKPiBkaWZmIC0tZ2l0IGEvbGliL2lndF9mYi5jIGIvbGliL2lndF9mYi5jCj4g aW5kZXggYTk3MWFlYmIzNmIzLi44YmQwNDIwZmMyZTQgMTAwNjQ0Cj4gLS0tIGEvbGliL2lndF9m Yi5jCj4gKysrIGIvbGliL2lndF9mYi5jCj4gQEAgLTE1MSw2ICsxNTEsMjIgQEAgc3RhdGljIGNv bnN0IHN0cnVjdCBmb3JtYXRfZGVzY19zdHJ1Y3Qgewo+ICAgCSAgLmNhaXJvX2lkID0gQ0FJUk9f Rk9STUFUX1JHQjI0LAo+ICAgCSAgLm51bV9wbGFuZXMgPSAxLCAucGxhbmVfYnBwID0geyAxNiwg fSwKPiAgIAl9LAo+ICsJeyAubmFtZSA9ICJQMDEwIiwgLmRlcHRoID0gLTEsIC5kcm1faWQgPSBE Uk1fRk9STUFUX1AwMTAsCj4gKwkgIC5jYWlyb19pZCA9IENBSVJPX0ZPUk1BVF9SR0I5NkYsCj4g KwkgIC5udW1fcGxhbmVzID0gMiwgLnBsYW5lX2JwcCA9IHsgMTYsIDMyIH0sCj4gKwl9LAo+ICsJ eyAubmFtZSA9ICJQMDEyIiwgLmRlcHRoID0gLTEsIC5kcm1faWQgPSBEUk1fRk9STUFUX1AwMTIs Cj4gKwkgIC5jYWlyb19pZCA9IENBSVJPX0ZPUk1BVF9SR0I5NkYsCj4gKwkgIC5udW1fcGxhbmVz ID0gMiwgLnBsYW5lX2JwcCA9IHsgMTYsIDMyIH0sCj4gKwl9LAo+ICsJeyAubmFtZSA9ICJQMDE2 IiwgLmRlcHRoID0gLTEsIC5kcm1faWQgPSBEUk1fRk9STUFUX1AwMTYsCj4gKwkgIC5jYWlyb19p ZCA9IENBSVJPX0ZPUk1BVF9SR0I5NkYsCj4gKwkgIC5udW1fcGxhbmVzID0gMiwgLnBsYW5lX2Jw cCA9IHsgMTYsIDMyIH0sCj4gKwl9LAo+ICsJeyAubmFtZSA9ICJJR1QtRkxPQVQiLCAuZGVwdGgg PSAtMSwgLmRybV9pZCA9IElHVF9GT1JNQVRfRkxPQVQsCj4gKwkgIC5jYWlyb19pZCA9IENBSVJP X0ZPUk1BVF9JTlZBTElELAo+ICsJICAubnVtX3BsYW5lcyA9IDEsIC5wbGFuZV9icHAgPSB7IDEy OCB9LAo+ICsJfSwKPiAgIH07Cj4gICAjZGVmaW5lIGZvcl9lYWNoX2Zvcm1hdChmKQlcCj4gICAJ Zm9yIChmID0gZm9ybWF0X2Rlc2M7IGYgLSBmb3JtYXRfZGVzYyA8IEFSUkFZX1NJWkUoZm9ybWF0 X2Rlc2MpOyBmKyspCj4gQEAgLTIzOSwxMCArMjU1LDE3IEBAIHZvaWQgaWd0X2dldF9mYl90aWxl X3NpemUoaW50IGZkLCB1aW50NjRfdCB0aWxpbmcsIGludCBmYl9icHAsCj4gICAKPiAgIHN0YXRp YyB1bnNpZ25lZCBmYl9wbGFuZV93aWR0aChjb25zdCBzdHJ1Y3QgaWd0X2ZiICpmYiwgaW50IHBs YW5lKQo+ICAgewo+IC0JaWYgKGZiLT5kcm1fZm9ybWF0ID09IERSTV9GT1JNQVRfTlYxMiAmJiBw bGFuZSA9PSAxKQo+IC0JCXJldHVybiBESVZfUk9VTkRfVVAoZmItPndpZHRoLCAyKTsKPiAtCj4g LQlyZXR1cm4gZmItPndpZHRoOwo+ICsJc3dpdGNoIChmYi0+ZHJtX2Zvcm1hdCkgewo+ICsJY2Fz ZSBEUk1fRk9STUFUX1AwMTA6Cj4gKwljYXNlIERSTV9GT1JNQVRfUDAxMjoKPiArCWNhc2UgRFJN X0ZPUk1BVF9QMDE2Ogo+ICsJY2FzZSBEUk1fRk9STUFUX05WMTI6Cj4gKwkJaWYgKHBsYW5lID09 IDEpCj4gKwkJCXJldHVybiBESVZfUk9VTkRfVVAoZmItPndpZHRoLCAyKTsKPiArCQkvKiBmYWxs LXRocnUgKi8KPiArCWRlZmF1bHQ6Cj4gKwkJcmV0dXJuIGZiLT53aWR0aDsKPiArCX0KPiAgIH0K PiAgIAo+ICAgc3RhdGljIHVuc2lnbmVkIGZiX3BsYW5lX2JwcChjb25zdCBzdHJ1Y3QgaWd0X2Zi ICpmYiwgaW50IHBsYW5lKQo+IEBAIC0yNTQsMTAgKzI3NywxNyBAQCBzdGF0aWMgdW5zaWduZWQg ZmJfcGxhbmVfYnBwKGNvbnN0IHN0cnVjdCBpZ3RfZmIgKmZiLCBpbnQgcGxhbmUpCj4gICAKPiAg IHN0YXRpYyB1bnNpZ25lZCBmYl9wbGFuZV9oZWlnaHQoY29uc3Qgc3RydWN0IGlndF9mYiAqZmIs IGludCBwbGFuZSkKPiAgIHsKPiAtCWlmIChmYi0+ZHJtX2Zvcm1hdCA9PSBEUk1fRk9STUFUX05W MTIgJiYgcGxhbmUgPT0gMSkKPiAtCQlyZXR1cm4gRElWX1JPVU5EX1VQKGZiLT5oZWlnaHQsIDIp Owo+IC0KPiAtCXJldHVybiBmYi0+aGVpZ2h0Owo+ICsJc3dpdGNoIChmYi0+ZHJtX2Zvcm1hdCkg ewo+ICsJY2FzZSBEUk1fRk9STUFUX1AwMTA6Cj4gKwljYXNlIERSTV9GT1JNQVRfUDAxMjoKPiAr CWNhc2UgRFJNX0ZPUk1BVF9QMDE2Ogo+ICsJY2FzZSBEUk1fRk9STUFUX05WMTI6Cj4gKwkJaWYg KHBsYW5lID09IDEpCj4gKwkJCXJldHVybiBESVZfUk9VTkRfVVAoZmItPmhlaWdodCwgMik7Cj4g KwkJLyogZmFsbC10aHJ1ICovCj4gKwlkZWZhdWx0Ogo+ICsJCXJldHVybiBmYi0+aGVpZ2h0Owo+ ICsJfQo+ICAgfQo+ICAgCj4gICBzdGF0aWMgaW50IGZiX251bV9wbGFuZXMoY29uc3Qgc3RydWN0 IGlndF9mYiAqZmIpCj4gQEAgLTUxNiw2ICs1NDYsMTMgQEAgc3RhdGljIGludCBjcmVhdGVfYm9f Zm9yX2ZiKHN0cnVjdCBpZ3RfZmIgKmZiKQo+ICAgCQkJCQlmdWxsX3JhbmdlID8gMHgwMDgwMDA4 MCA6IDB4MTA4MDEwODAsCj4gICAJCQkJCWZiLT5zdHJpZGVzWzBdICogZmItPnBsYW5lX2hlaWdo dFswXSAvIHNpemVvZih3Y2hhcl90KSk7Cj4gICAJCQkJYnJlYWs7Cj4gKwkJCWNhc2UgRFJNX0ZP Uk1BVF9QMDEwOgo+ICsJCQljYXNlIERSTV9GT1JNQVRfUDAxMjoKPiArCQkJY2FzZSBEUk1fRk9S TUFUX1AwMTY6Cj4gKwkJCQl3bWVtc2V0KHB0ciwgZnVsbF9yYW5nZSA/IDAgOiAweDEwMDAxMDAw LAo+ICsJCQkJCWZiLT5vZmZzZXRzWzFdIC8gc2l6ZW9mKHdjaGFyX3QpKTsKPiArCQkJCXdtZW1z ZXQocHRyICsgZmItPm9mZnNldHNbMV0sIDB4ODAwMDgwMDAsCj4gKwkJCQkJRElWX1JPVU5EX1VQ KGZiLT5oZWlnaHQsMikgKiBmYi0+c3RyaWRlc1sxXSAvIHNpemVvZih3Y2hhcl90KSk7Cj4gICAJ CQl9Cj4gICAJCQlnZW1fbXVubWFwKHB0ciwgZmItPnNpemUpOwo+ICAgCj4gQEAgLTE0NjMsNiAr MTUwMCw3IEBAIHN0cnVjdCBmYl9jb252ZXJ0X2JsaXRfdXBsb2FkIHsKPiAgIH07Cj4gICAKPiAg IHN0YXRpYyB2b2lkICppZ3RfZmJfY3JlYXRlX2NhaXJvX3NoYWRvd19idWZmZXIoaW50IGZkLAo+ ICsJCQkJCSAgICAgICB1bnNpZ25lZCBkcm1fZm9ybWF0LAo+ICAgCQkJCQkgICAgICAgdW5zaWdu ZWQgaW50IHdpZHRoLAo+ICAgCQkJCQkgICAgICAgdW5zaWduZWQgaW50IGhlaWdodCwKPiAgIAkJ CQkJICAgICAgIHN0cnVjdCBpZ3RfZmIgKnNoYWRvdykKPiBAQCAtMTQ3Miw3ICsxNTEwLDcgQEAg c3RhdGljIHZvaWQgKmlndF9mYl9jcmVhdGVfY2Fpcm9fc2hhZG93X2J1ZmZlcihpbnQgZmQsCj4g ICAJaWd0X2Fzc2VydChzaGFkb3cpOwo+ICAgCj4gICAJZmJfaW5pdChzaGFkb3csIGZkLCB3aWR0 aCwgaGVpZ2h0LAo+IC0JCURSTV9GT1JNQVRfWFJHQjg4ODgsIExPQ0FMX0RSTV9GT1JNQVRfTU9E X05PTkUsCj4gKwkJZHJtX2Zvcm1hdCwgTE9DQUxfRFJNX0ZPUk1BVF9NT0RfTk9ORSwKPiAgIAkJ SUdUX0NPTE9SX1lDQkNSX0JUNzA5LCBJR1RfQ09MT1JfWUNCQ1JfTElNSVRFRF9SQU5HRSk7Cj4g ICAKPiAgIAlzaGFkb3ctPnN0cmlkZXNbMF0gPSBBTElHTih3aWR0aCAqIHNoYWRvdy0+cGxhbmVf YnBwWzBdLCAxNik7Cj4gQEAgLTE5ODMsNiArMjAyMSwxMjQgQEAgc3RhdGljIHZvaWQgY29udmVy dF9yZ2IyNF90b195dXl2KHN0cnVjdCBmYl9jb252ZXJ0ICpjdnQpCj4gICAJfQo+ICAgfQo+ICAg Cj4gK3N0YXRpYyB2b2lkIHJlYWRfcmdiZihzdHJ1Y3QgaWd0X3ZlYzQgKnJnYiwgY29uc3QgZmxv YXQgKnJnYjI0KQo+ICt7Cj4gKwlyZ2ItPmRbMF0gPSByZ2IyNFswXTsKPiArCXJnYi0+ZFsxXSA9 IHJnYjI0WzFdOwo+ICsJcmdiLT5kWzJdID0gcmdiMjRbMl07Cj4gKwlyZ2ItPmRbM10gPSAxLjBm Owo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCB3cml0ZV9yZ2JmKGZsb2F0ICpyZ2IyNCwgY29uc3Qg c3RydWN0IGlndF92ZWM0ICpyZ2IpCj4gK3sKPiArCXJnYjI0WzBdID0gcmdiLT5kWzBdOwo+ICsJ cmdiMjRbMV0gPSByZ2ItPmRbMV07Cj4gKwlyZ2IyNFsyXSA9IHJnYi0+ZFsyXTsKPiArfQo+ICsK PiArc3RhdGljIHZvaWQgY29udmVydF9wMDFYX3RvX2Zsb2F0KHN0cnVjdCBmYl9jb252ZXJ0ICpj dnQpCj4gK3sKPiArCWludCBpLCBqOwo+ICsJc3RydWN0IGlndF9mYiAqZmJfcDAxeCA9IGN2dC0+ c3JjLmZiOwo+ICsJc3RydWN0IGlndF9mYiAqZmJfZmxvYXQgPSBjdnQtPmRzdC5mYjsKPiArCWNv bnN0IHVpbnQxNl90ICp5LCAqdXY7Cj4gKwl2b2lkICpidWYgPSBjb252ZXJ0X3NyY19nZXQoY3Z0 KTsKPiArCWZsb2F0ICpwdHIgPSBjdnQtPmRzdC5wdHIgKyBmYl9mbG9hdC0+b2Zmc2V0c1swXTsK PiArCXVuc2lnbmVkIGZsb2F0X3N0cmlkZSA9IGZiX2Zsb2F0LT5zdHJpZGVzWzBdIC8gc2l6ZW9m KCpwdHIpOwo+ICsJdW5zaWduZWQgcGxhbmFyX3N0cmlkZSA9IGZiX3AwMXgtPnN0cmlkZXNbMF0g LyBzaXplb2YoKnkpOwo+ICsJc3RydWN0IGlndF9tYXQ0IG0gPSBpZ3RfeWNiY3JfdG9fcmdiX21h dHJpeChmYl9wMDF4LT5kcm1fZm9ybWF0LAo+ICsJCQkJCQkgICAgZmJfZmxvYXQtPmRybV9mb3Jt YXQsCj4gKwkJCQkJCSAgICBmYl9wMDF4LT5jb2xvcl9lbmNvZGluZywKPiArCQkJCQkJICAgIGZi X3AwMXgtPmNvbG9yX3JhbmdlKTsKPiArCj4gKwl5ID0gYnVmICsgZmJfcDAxeC0+b2Zmc2V0c1sw XTsKPiArCXV2ID0gYnVmICsgZmJfcDAxeC0+b2Zmc2V0c1sxXTsKPiArCj4gKwlmb3IgKGkgPSAw OyBpIDwgZmJfcDAxeC0+aGVpZ2h0IC8gMjsgaSsrKSB7Cj4gKwkJZm9yIChqID0gMDsgaiA8IGZi X3AwMXgtPndpZHRoIC8gMjsgaisrKSB7Cj4gKwkJCS8qIENvbnZlcnQgMngyIHBpeGVsIGJsb2Nr cyAqLwo+ICsJCQlzdHJ1Y3QgaWd0X3ZlYzQgeXV2WzRdOwo+ICsJCQlzdHJ1Y3QgaWd0X3ZlYzQg cmdiWzRdOwo+ICsKPiArCQkJeXV2WzBdLmRbMF0gPSB5W2ogKiAyICsgMF07Cj4gKwkJCXl1dlsx XS5kWzBdID0geVtqICogMiArIDFdOwo+ICsJCQl5dXZbMl0uZFswXSA9IHlbaiAqIDIgKyAwICsg cGxhbmFyX3N0cmlkZV07Cj4gKwkJCXl1dlszXS5kWzBdID0geVtqICogMiArIDEgKyBwbGFuYXJf c3RyaWRlXTsKPiArCj4gKwkJCXl1dlswXS5kWzFdID0geXV2WzFdLmRbMV0gPSB5dXZbMl0uZFsx XSA9IHl1dlszXS5kWzFdID0gdXZbaiAqIDIgKyAwXTsKPiArCQkJeXV2WzBdLmRbMl0gPSB5dXZb MV0uZFsyXSA9IHl1dlsyXS5kWzJdID0geXV2WzNdLmRbMl0gPSB1dltqICogMiArIDFdOwo+ICsJ CQl5dXZbMF0uZFszXSA9IHl1dlsxXS5kWzNdID0geXV2WzJdLmRbM10gPSB5dXZbM10uZFszXSA9 IDEuMGY7Cj4gKwo+ICsJCQlyZ2JbMF0gPSBpZ3RfbWF0cml4X3RyYW5zZm9ybSgmbSwgJnl1dlsw XSk7Cj4gKwkJCXJnYlsxXSA9IGlndF9tYXRyaXhfdHJhbnNmb3JtKCZtLCAmeXV2WzFdKTsKPiAr CQkJcmdiWzJdID0gaWd0X21hdHJpeF90cmFuc2Zvcm0oJm0sICZ5dXZbMl0pOwo+ICsJCQlyZ2Jb M10gPSBpZ3RfbWF0cml4X3RyYW5zZm9ybSgmbSwgJnl1dlszXSk7Cj4gKwo+ICsJCQl3cml0ZV9y Z2JmKCZwdHJbaiAqIDYgKyAwXSwgJnJnYlswXSk7Cj4gKwkJCXdyaXRlX3JnYmYoJnB0cltqICog NiArIDNdLCAmcmdiWzFdKTsKPiArCQkJd3JpdGVfcmdiZigmcHRyW2ogKiA2ICsgMCArIGZsb2F0 X3N0cmlkZV0sICZyZ2JbMl0pOwo+ICsJCQl3cml0ZV9yZ2JmKCZwdHJbaiAqIDYgKyAzICsgZmxv YXRfc3RyaWRlXSwgJnJnYlszXSk7Cj4gKwkJfQo+ICsKPiArCQlwdHIgKz0gMiAqIGZsb2F0X3N0 cmlkZTsKPiArCQl5ICs9IDIgKiBwbGFuYXJfc3RyaWRlOwo+ICsJCXV2ICs9IHBsYW5hcl9zdHJp ZGU7Cj4gKwl9Cj4gKwo+ICsJY29udmVydF9zcmNfcHV0KGN2dCwgYnVmKTsKPiArfQo+ICsKPiAr c3RhdGljIHZvaWQgY29udmVydF9mbG9hdF90b19wMDFYKHN0cnVjdCBmYl9jb252ZXJ0ICpjdnQp Cj4gK3sKPiArCWludCBpLCBqOwo+ICsJc3RydWN0IGlndF9mYiAqZmJfZmxvYXQgPSBjdnQtPnNy Yy5mYjsKPiArCXN0cnVjdCBpZ3RfZmIgKmZiX3AwMXggPSBjdnQtPmRzdC5mYjsKPiArCXVpbnQx Nl90ICp5ID0gY3Z0LT5kc3QucHRyICsgZmJfcDAxeC0+b2Zmc2V0c1swXTsKPiArCXVpbnQxNl90 ICp1diA9IGN2dC0+ZHN0LnB0ciArIGZiX3AwMXgtPm9mZnNldHNbMV07Cj4gKwljb25zdCBmbG9h dCAqcHRyID0gY3Z0LT5zcmMucHRyICsgZmJfZmxvYXQtPm9mZnNldHNbMF07Cj4gKwl1bnNpZ25l ZCBmbG9hdF9zdHJpZGUgPSBmYl9mbG9hdC0+c3RyaWRlc1swXSAvIHNpemVvZigqcHRyKTsKPiAr CXVuc2lnbmVkIHBsYW5hcl9zdHJpZGUgPSBmYl9wMDF4LT5zdHJpZGVzWzBdIC8gc2l6ZW9mKCp5 KTsKPiArCXN0cnVjdCBpZ3RfbWF0NCBtID0gaWd0X3JnYl90b195Y2Jjcl9tYXRyaXgoZmJfZmxv YXQtPmRybV9mb3JtYXQsCj4gKwkJCQkJCSAgICBmYl9wMDF4LT5kcm1fZm9ybWF0LAo+ICsJCQkJ CQkgICAgZmJfcDAxeC0+Y29sb3JfZW5jb2RpbmcsCj4gKwkJCQkJCSAgICBmYl9wMDF4LT5jb2xv cl9yYW5nZSk7Cj4gKwo+ICsJZm9yIChpID0gMDsgaSA8IGZiX3AwMXgtPmhlaWdodCAvIDI7IGkr Kykgewo+ICsJCWZvciAoaiA9IDA7IGogPCBmYl9wMDF4LT53aWR0aCAvIDI7IGorKykgewo+ICsJ CQkvKiBDb252ZXJ0IDJ4MiBwaXhlbCBibG9ja3MgKi8KPiArCQkJc3RydWN0IGlndF92ZWM0IHJn Yls0XTsKPiArCQkJc3RydWN0IGlndF92ZWM0IHl1dls0XTsKPiArCj4gKwkJCXJlYWRfcmdiZigm cmdiWzBdLCAmcHRyW2ogKiA2ICsgMF0pOwo+ICsJCQlyZWFkX3JnYmYoJnJnYlsxXSwgJnB0cltq ICogNiArIDNdKTsKPiArCQkJcmVhZF9yZ2JmKCZyZ2JbMl0sICZwdHJbaiAqIDYgKyAwICsgZmxv YXRfc3RyaWRlXSk7Cj4gKwkJCXJlYWRfcmdiZigmcmdiWzNdLCAmcHRyW2ogKiA2ICsgMyArIGZs b2F0X3N0cmlkZV0pOwo+ICsKPiArCQkJeXV2WzBdID0gaWd0X21hdHJpeF90cmFuc2Zvcm0oJm0s ICZyZ2JbMF0pOwo+ICsJCQl5dXZbMV0gPSBpZ3RfbWF0cml4X3RyYW5zZm9ybSgmbSwgJnJnYlsx XSk7Cj4gKwkJCXl1dlsyXSA9IGlndF9tYXRyaXhfdHJhbnNmb3JtKCZtLCAmcmdiWzJdKTsKPiAr CQkJeXV2WzNdID0gaWd0X21hdHJpeF90cmFuc2Zvcm0oJm0sICZyZ2JbM10pOwo+ICsKPiArCQkJ eVtqICogMiArIDBdID0geXV2WzBdLmRbMF07Cj4gKwkJCXlbaiAqIDIgKyAxXSA9IHl1dlsxXS5k WzBdOwo+ICsJCQl5W2ogKiAyICsgMCArIHBsYW5hcl9zdHJpZGVdID0geXV2WzJdLmRbMF07Cj4g KwkJCXlbaiAqIDIgKyAxICsgcGxhbmFyX3N0cmlkZV0gPSB5dXZbM10uZFswXTsKPiArCj4gKwkJ CS8qCj4gKwkJCSAqIFdlIGFzc3VtZSB0aGUgTVBFRzIgY2hyb21hIHNpdGluZyBjb252ZW50aW9u LCB3aGVyZQo+ICsJCQkgKiBwaXhlbCBjZW50ZXIgZm9yIENiJ0NyJyBpcyBiZXR3ZWVuIHRoZSBs ZWZ0IHRvcCBhbmQKPiArCQkJICogYm90dG9tIHBpeGVsIGluIGEgMngyIGJsb2NrLCBzbyB0YWtl IHRoZSBhdmVyYWdlLgo+ICsJCQkgKi8KPiArCQkJdXZbaiAqIDIgKyAwXSA9ICh5dXZbMF0uZFsx XSArIHl1dlsyXS5kWzFdKSAvIDIuMGY7Cj4gKwkJCXV2W2ogKiAyICsgMV0gPSAoeXV2WzBdLmRb Ml0gKyB5dXZbMl0uZFsyXSkgLyAyLjBmOwo+ICsJCX0KPiArCj4gKwkJcHRyICs9IDIgKiBmbG9h dF9zdHJpZGU7Cj4gKwkJeSArPSAyICogcGxhbmFyX3N0cmlkZTsKPiArCQl1diArPSBwbGFuYXJf c3RyaWRlOwo+ICsJfQo+ICt9Cj4gKwo+ICAgc3RhdGljIHZvaWQgY29udmVydF9waXhtYW4oc3Ry dWN0IGZiX2NvbnZlcnQgKmN2dCkKPiAgIHsKPiAgIAlwaXhtYW5fZm9ybWF0X2NvZGVfdCBzcmNf cGl4bWFuID0gZHJtX2Zvcm1hdF90b19waXhtYW4oY3Z0LT5zcmMuZmItPmRybV9mb3JtYXQpOwo+ IEBAIC0yMDU4LDYgKzIyMTQsMjIgQEAgc3RhdGljIHZvaWQgZmJfY29udmVydChzdHJ1Y3QgZmJf Y29udmVydCAqY3Z0KQo+ICAgCQkJY29udmVydF9yZ2IyNF90b195dXl2KGN2dCk7Cj4gICAJCQly ZXR1cm47Cj4gICAJCX0KPiArCX0gZWxzZSBpZiAoY3Z0LT5kc3QuZmItPmRybV9mb3JtYXQgPT0g SUdUX0ZPUk1BVF9GTE9BVCkgewo+ICsJCXN3aXRjaCAoY3Z0LT5zcmMuZmItPmRybV9mb3JtYXQp IHsKPiArCQljYXNlIERSTV9GT1JNQVRfUDAxMDoKPiArCQljYXNlIERSTV9GT1JNQVRfUDAxMjoK PiArCQljYXNlIERSTV9GT1JNQVRfUDAxNjoKPiArCQkJY29udmVydF9wMDFYX3RvX2Zsb2F0KGN2 dCk7Cj4gKwkJCXJldHVybjsKPiArCQl9Cj4gKwl9IGVsc2UgaWYgKGN2dC0+c3JjLmZiLT5kcm1f Zm9ybWF0ID09IElHVF9GT1JNQVRfRkxPQVQpIHsKPiArCQlzd2l0Y2ggKGN2dC0+ZHN0LmZiLT5k cm1fZm9ybWF0KSB7Cj4gKwkJY2FzZSBEUk1fRk9STUFUX1AwMTA6Cj4gKwkJY2FzZSBEUk1fRk9S TUFUX1AwMTI6Cj4gKwkJY2FzZSBEUk1fRk9STUFUX1AwMTY6Cj4gKwkJCWNvbnZlcnRfZmxvYXRf dG9fcDAxWChjdnQpOwo+ICsJCQlyZXR1cm47Cj4gKwkJfQo+ICAgCX0KPiAgIAo+ICAgCWlndF9h c3NlcnRfZihmYWxzZSwKPiBAQCAtMjA5OCwxMSArMjI3MCwxOSBAQCBzdGF0aWMgdm9pZCBjcmVh dGVfY2Fpcm9fc3VyZmFjZV9fY29udmVydChpbnQgZmQsIHN0cnVjdCBpZ3RfZmIgKmZiKQo+ICAg ewo+ICAgCXN0cnVjdCBmYl9jb252ZXJ0X2JsaXRfdXBsb2FkICpibGl0ID0gbWFsbG9jKHNpemVv ZigqYmxpdCkpOwo+ICAgCXN0cnVjdCBmYl9jb252ZXJ0IGN2dCA9IHsgfTsKPiArCWNvbnN0IHN0 cnVjdCBmb3JtYXRfZGVzY19zdHJ1Y3QgKmYgPSBsb29rdXBfZHJtX2Zvcm1hdChmYi0+ZHJtX2Zv cm1hdCk7Cj4gKwl1bnNpZ25lZCBkcm1fZm9ybWF0Owo+ICsKPiArCWlmIChmLT5jYWlyb19pZCA9 PSBDQUlST19GT1JNQVRfUkdCOTZGIHx8Cj4gKwkgICAgZi0+Y2Fpcm9faWQgPT0gQ0FJUk9fRk9S TUFUX1JHQkExMjhGKQo+ICsJCWRybV9mb3JtYXQgPSBJR1RfRk9STUFUX0ZMT0FUOwo+ICsJZWxz ZQo+ICsJCWRybV9mb3JtYXQgPSBEUk1fRk9STUFUX1hSR0I4ODg4Owo+ICAgCj4gICAJaWd0X2Fz c2VydChibGl0KTsKPiAgIAlibGl0LT5iYXNlLmZkID0gZmQ7Cj4gICAJYmxpdC0+YmFzZS5mYiA9 IGZiOwo+IC0JYmxpdC0+c2hhZG93X3B0ciA9IGlndF9mYl9jcmVhdGVfY2Fpcm9fc2hhZG93X2J1 ZmZlcihmZCwKPiArCWJsaXQtPnNoYWRvd19wdHIgPSBpZ3RfZmJfY3JlYXRlX2NhaXJvX3NoYWRv d19idWZmZXIoZmQsIGRybV9mb3JtYXQsCj4gICAJCQkJCQkJICAgICBmYi0+d2lkdGgsCj4gICAJ CQkJCQkJICAgICBmYi0+aGVpZ2h0LAo+ICAgCQkJCQkJCSAgICAgJmJsaXQtPnNoYWRvd19mYik7 Cj4gQEAgLTIxMjksNyArMjMwOSw3IEBAIHN0YXRpYyB2b2lkIGNyZWF0ZV9jYWlyb19zdXJmYWNl X19jb252ZXJ0KGludCBmZCwgc3RydWN0IGlndF9mYiAqZmIpCj4gICAKPiAgIAlmYi0+Y2Fpcm9f c3VyZmFjZSA9Cj4gICAJCWNhaXJvX2ltYWdlX3N1cmZhY2VfY3JlYXRlX2Zvcl9kYXRhKGJsaXQt PnNoYWRvd19wdHIsCj4gLQkJCQkJCSAgICBDQUlST19GT1JNQVRfUkdCMjQsCj4gKwkJCQkJCSAg ICBmLT5jYWlyb19pZCwKCkhpIE1hYXJ0ZW4sCgpXaXRoIHRoaXMgY2hhbmdlIGYtPmNhaXJvX2lk LCBmb3IgcGl4ZWwgZm9ybWF0IEFCMjQgd2hvc2UgCmNhaXJvX2lkPUNBSVJPX0ZPUk1BVF9JTlZB TElEIGFuZCBwaXhtYW5faWQhPWludmFsaWQsIHdoZW4gY2Fpcm8gd2lsbCAKdHJ5IHRvIGNyZWF0 ZSBzdXJmYWNlIGl0IHdpbGwgcmV0dXJuIG5vbi16ZXJvIHZhbHVlIGkuZS4gMTYgCihDQUlST19T VEFUVVNfSU5WQUxJRF9GT1JNQVQpLsKgIE1heSBiZSBzb21lIGNoYW5nZSByZXF1aXJlZCBpbiAK aWd0X2dldF9jYWlyb19zdXJmYWNlIGlmIGNvbmRpdGlvbiBvciBuZWVkIHRvIGFzc2lnbiBjYWly byBmb3JtYXQgZm9yIApwaXhlbCBmb3JtYXQgaGF2aW5nIGludmFsaWQgY2Fpcm8gbGlrZSBpdCB3 YXMgZWFybGllciA6LwoKPiAgIAkJCQkJCSAgICBmYi0+d2lkdGgsIGZiLT5oZWlnaHQsCj4gICAJ CQkJCQkgICAgYmxpdC0+c2hhZG93X2ZiLnN0cmlkZXNbMF0pOwo+ICAgCj4gQEAgLTI0MDAsNiAr MjU4MCw5IEBAIGJvb2wgaWd0X2Zvcm1hdF9pc195dXYodWludDMyX3QgZHJtX2Zvcm1hdCkKPiAg IHsKPiAgIAlzd2l0Y2ggKGRybV9mb3JtYXQpIHsKPiAgIAljYXNlIERSTV9GT1JNQVRfTlYxMjoK PiArCWNhc2UgRFJNX0ZPUk1BVF9QMDEwOgo+ICsJY2FzZSBEUk1fRk9STUFUX1AwMTI6Cj4gKwlj YXNlIERSTV9GT1JNQVRfUDAxNjoKPiAgIAljYXNlIERSTV9GT1JNQVRfWVVZVjoKPiAgIAljYXNl IERSTV9GT1JNQVRfWVZZVToKPiAgIAljYXNlIERSTV9GT1JNQVRfVVlWWToKPiBkaWZmIC0tZ2l0 IGEvbGliL2lndF9mYi5oIGIvbGliL2lndF9mYi5oCj4gaW5kZXggOWYwMjdkZWJhODQyLi44YzY4 M2RiNWU5ZWMgMTAwNjQ0Cj4gLS0tIGEvbGliL2lndF9mYi5oCj4gKysrIGIvbGliL2lndF9mYi5o Cj4gQEAgLTM4LDYgKzM4LDEyIEBACj4gICAKPiAgICNpbmNsdWRlICJpZ3RfY29sb3JfZW5jb2Rp bmcuaCIKPiAgIAo+ICsvKgo+ICsgKiBJbnRlcm5hbCBmb3JtYXQgdG8gZGVub3RlIGEgYnVmZmVy IGNvbXBhdGlibGUgd2l0aCBwaXhtYW4ncwo+ICsgKiBmbG9hdGluZyBwb2ludCBmb3JtYXQuIFJh bmdlIFswLTFdLgo+ICsgKi8KPiArI2RlZmluZSBJR1RfRk9STUFUX0ZMT0FUIGZvdXJjY19jb2Rl KCdJJywgJ0cnLCAnRicsICd4JykKPiArCj4gICAvKioKPiAgICAqIGlndF9mYl90Ogo+ICAgICog QGZiX2lkOiBLTVMgSUQgb2YgdGhlIGZyYW1lYnVmZmVyCj4gZGlmZiAtLWdpdCBhL21lc29uLmJ1 aWxkIGIvbWVzb24uYnVpbGQKPiBpbmRleCBiMTdlNjdlZjdmMDUuLjQyNjlmMzYxODIzZCAxMDA2 NDQKPiAtLS0gYS9tZXNvbi5idWlsZAo+ICsrKyBiL21lc29uLmJ1aWxkCj4gQEAgLTE0OSw3ICsx NDksNyBAQCBlbmRpZgo+ICAgYnVpbGRfaW5mbyArPSAnV2l0aCBsaWJ1bndpbmQ6ICcgKyBsaWJ1 bndpbmRpbmZvCj4gICAKPiAgIGxpYmR3ID0gZGVwZW5kZW5jeSgnbGliZHcnLCByZXF1aXJlZCA6 IHRydWUpCj4gLXBpeG1hbiA9IGRlcGVuZGVuY3koJ3BpeG1hbi0xJywgcmVxdWlyZWQgOiB0cnVl KQo+ICtwaXhtYW4gPSBkZXBlbmRlbmN5KCdwaXhtYW4tMScsIHZlcnNpb24gOiAnPj0gMC4zNics IHJlcXVpcmVkIDogdHJ1ZSkKPiAgIAo+ICAgdmFsZ3JpbmQgPSBudWxsX2RlcAo+ICAgdmFsZ3Jp bmRpbmZvID0gJ05vJwo+IEBAIC0xNjIsNyArMTYyLDcgQEAgaWYgd2l0aF92YWxncmluZCAhPSAn ZmFsc2UnCj4gICBlbmRpZgo+ICAgYnVpbGRfaW5mbyArPSAnVmFsZ3JpbmQgYW5ub3RhdGlvbnM6 ICcgKyB2YWxncmluZGluZm8KPiAgIAo+IC1jYWlybyA9IGRlcGVuZGVuY3koJ2NhaXJvJywgdmVy c2lvbiA6ICc+MS4xMi4wJywgcmVxdWlyZWQgOiB0cnVlKQo+ICtjYWlybyA9IGRlcGVuZGVuY3ko J2NhaXJvJywgdmVyc2lvbiA6ICc+PTEuMTcuMicsIHJlcXVpcmVkIDogdHJ1ZSkKPiAgIGxpYnVk ZXYgPSBkZXBlbmRlbmN5KCdsaWJ1ZGV2JywgcmVxdWlyZWQgOiB0cnVlKQo+ICAgZ2xpYiA9IGRl cGVuZGVuY3koJ2dsaWItMi4wJywgcmVxdWlyZWQgOiB0cnVlKQo+ICAgCgotLSAKVGhhbmtzIGFu ZCBSZWdhcmRzLApTd2F0aQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KaWd0LWRldiBtYWlsaW5nIGxpc3QKaWd0LWRldkBsaXN0cy5mcmVlZGVza3RvcC5v cmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pZ3QtZGV2 Cg==