From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [63.128.21.124]) by gabe.freedesktop.org (Postfix) with ESMTPS id 32BE289FC0 for ; Mon, 28 Sep 2020 21:36:52 +0000 (UTC) Received: by mail-qt1-f199.google.com with SMTP id h31so1605487qtd.14 for ; Mon, 28 Sep 2020 14:36:44 -0700 (PDT) Date: Mon, 28 Sep 2020 17:36:40 -0400 From: Jeremy Cline Message-ID: <20200928213640.GB24004@xps13> References: <20200417211025.109574-6-lyude@redhat.com> <20200818210051.28705-1-lyude@redhat.com> MIME-Version: 1.0 In-Reply-To: <20200818210051.28705-1-lyude@redhat.com> Content-Disposition: inline Subject: Re: [igt-dev] [PATCH i-g-t v4] tests: Add nouveau-crc tests List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: Lyude Cc: igt-dev@lists.freedesktop.org, nouveau@lists.freedesktop.org List-ID: SGksCgpPbiBUdWUsIEF1ZyAxOCwgMjAyMCBhdCAwNTowMDo1MVBNIC0wNDAwLCBMeXVkZSB3cm90 ZToKPiBGcm9tOiBMeXVkZSBQYXVsIDxseXVkZUByZWRoYXQuY29tPgo+IAo+IFdlJ3JlIGZpbmFs bHkgZ2V0dGluZyBDUkMgc3VwcG9ydCBpbiBub3V2ZWF1LCBzbyBsZXQncyBzdGFydCB0ZXN0aW5n Cj4gdGhpcyBpbiBpZ3QgYXMgd2VsbCEgV2hpbGUgdGhlIG5vcm1hbCBDUkMgY2FwdHVyZSB0ZXN0 cyBhcmUgbmljZSwKPiB0aGVyZSdzIGEgbnVtYmVyIG9mIE52aWRpYS1zcGVjaWZpYyBoYXJkd2Fy ZSBjaGFyYWN0ZXJpc3RpY3MgdGhhdCB3ZQo+IG5lZWQgdG8gdGVzdCBhcyB3ZWxsLgo+IAo+IFRo ZSBtb3N0IGltcG9ydGFudCBvbmUgaXMga25vd24gYXMgYSAibm90aWZpZXIgY29udGV4dCBmbGlw Ii4gQmFzaWNhbGx5LAo+IE52aWRpYSBHUFVzIHN0b3JlIGdlbmVyYXRlZCBDUkNzIGluIGFuIGFs bG9jYXRlZCBtZW1vcnkgcmVnaW9uLCByZWZlcnJlZAo+IHRvIGFzIHRoZSBub3RpZmllciBjb250 ZXh0LCB0aGF0IHRoZSBkcml2ZXIgcHJvZ3JhbXMgaXRzZWxmLiBTdHJhbmdlbHksCj4gdGhpcyBy ZWdpb24gY2FuIG9ubHkgaG9sZCBhIGxpbWl0ZWQgbnVtYmVyIG9mIENSQyBlbnRyaWVzLCBhbmQg b25jZSBpdAo+IHJ1bnMgb3V0IG9mIGF2YWlsYWJsZSBlbnRyaWVzIHRoZSBoYXJkd2FyZSBzaW1w bHkgc2V0cyBhbiBvdmVycnVuIGJpdAo+IGFuZCBzdG9wcyB3cml0aW5nIGFueSBuZXcgQ1JDIGVu dHJpZXMuCj4gCj4gU2luY2UgaWd0LWdwdS10b29scyBkb2Vzbid0IHJlYWxseSBoYXZlIGFuIGV4 cGVjdGF0aW9uIG9mIG9ubHkgYmVpbmcKPiBhYmxlIHRvIGdyYWIgYSBsaW1pdGVkIG51bWJlciBv ZiBDUkNzLCB3ZSB3b3JrIGFyb3VuZCB0aGlzIGluIG5vdXZlYXUgYnkKPiBhbGxvY2F0aW5nIHR3 byBzZXBhcmF0ZSBDUkMgbm90aWZpZXIgcmVnaW9ucyBlYWNoIHRpbWUgd2Ugc3RhcnQKPiBjYXB0 dXJpbmcgQ1JDcywgYW5kIHRoZW4gZmxpcCBiZXR3ZWVuIHRoZW0gd2hlbmV2ZXIgd2UgZ2V0IGNs b3NlIHRvCj4gZmlsbGluZyBvdXIgY3VycmVudGx5IHByb2dyYW1tZWQgbm90aWZpZXIgY29udGV4 dC4gV2hpbGUgdGhpcyBrZWVwcyB0aGUKPiBudW1iZXIgb2YgQ1JDIGVudHJpZXMgd2UgbG9zZSB0 byBhbiBhYnNvbHV0ZSBtaW5pbXVtLCB3ZSBhcmUgZ3VhcmFudGVlZAo+IHRvIGxvc2UgZXhhY3Rs eSBvbmUgQ1JDIGVudHJ5IGJldHdlZW4gY29udGV4dCBmbGlwcy4gVGh1cywgd2UgYWRkIHNvbWUK PiB0ZXN0cyB0byBlbnN1cmUgdGhhdCBub3V2ZWF1IGhhbmRsZXMgdGhlc2UgZmxpcHMgY29ycmVj dGx5Cj4gKHBpcGUtW0EtRl0tY3R4LWZsaXAtZGV0ZWN0aW9uKSwgYW5kIHRoYXQgaWd0IGl0c2Vs ZiBpcyBhbHNvIGFibGUgdG8KPiBoYW5kbGUgdGhlbSBjb3JyZWN0bHkgKHBpcGUtW0EtRl0tY3R4 LWZsaXAtc2tpcC1jdXJyZW50LWZyYW1lKS4gU2luY2UKPiB0aGVzZSB0ZXN0cyB1c2UgYSBkZWJ1 Z2ZzIGludGVyZmFjZSB0byBtYW51YWxseSBjb250cm9sIHRoZSBub3RpZmllcgo+IGNvbnRleHQg ZmxpcCB0aHJlc2hvbGQsIHdlIGFsc28gYWRkIG9uZSB0ZXN0IHRvIGVuc3VyZSB0aGF0IGFueSBm bGlwCj4gdGhyZXNob2xkcyB3ZSBzZXQgYXJlIGNsZWFyZWQgYWZ0ZXIgYSBzaW5nbGUgQ1JDIGNh cHR1cmUKPiAoY3R4LWZsaXAtdGhyZXNob2xkLXJlc2V0LWFmdGVyLWNhcHR1cmUpLgo+IAo+IElu IGFkZGl0aW9uLCB3ZSBhbHNvIGFkZCBzb21lIHNpbXBsZSB0ZXN0cyB0byB0ZXN0IE52aWRpYS1z cGVjaWZpYyBDUkMKPiBzb3VyY2VzLgo+IAo+IENoYW5nZXMgc2luY2UgdjM6Cj4gKiBVcGRhdGUg LmdpdGxhYi1jaS55bWwgdG8gbWFrZSBub3V2ZWF1IGV4ZW1wdCBmcm9tIHRoZSB0ZXN0LWxpc3Qt ZGlmZgo+ICAgdGVzdCwgc2luY2UgYWxsIHRoZSBjb29sIGtpZHMgYXJlIGRvaW5nIGl0IGFuZCB3 ZSBkb24ndCBjYXJlIGFib3V0Cj4gICBhdXRvdG9vbHMgZm9yIG5vdXZlYXUKPiBDaGFuZ2VzIHNp bmNlIHYyOgo+ICogRml4IG1pc3NpbmcgaW5jbHVkZSBpbiB0ZXN0cy9ub3V2ZWF1X2NyYy5jLCB0 aGlzIHNob3VsZCBmaXggYnVpbGRzIGZvcgo+ICAgYWFyY2g2NAo+IENoYW5nZXMgc2luY2UgdjE6 Cj4gKiBGaXggY29weXJpZ2h0IHllYXIgaW4gbm91dmVhdV9jcmMuYwo+IAo+IFNpZ25lZC1vZmYt Ynk6IEx5dWRlIFBhdWwgPGx5dWRlQHJlZGhhdC5jb20+Cj4gLS0tCj4gIC5naXRsYWItY2kueW1s ICAgICAgfCAgIDIgKy0KPiAgbGliL2RybXRlc3QuYyAgICAgICB8ICAxMCArKwo+ICBsaWIvZHJt dGVzdC5oICAgICAgIHwgICAyICsKPiAgdGVzdHMvbWVzb24uYnVpbGQgICB8ICAgMSArCj4gIHRl c3RzL25vdXZlYXVfY3JjLmMgfCAzOTcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysKPiAgNSBmaWxlcyBjaGFuZ2VkLCA0MTEgaW5zZXJ0aW9ucygrKSwgMSBkZWxl dGlvbigtKQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgdGVzdHMvbm91dmVhdV9jcmMuYwo+IAo+IGRp ZmYgLS1naXQgYS8uZ2l0bGFiLWNpLnltbCBiLy5naXRsYWItY2kueW1sCj4gaW5kZXggZDdmZGJm ZGUuLmUyMjZkOWQ3IDEwMDY0NAo+IC0tLSBhLy5naXRsYWItY2kueW1sCj4gKysrIGIvLmdpdGxh Yi1jaS55bWwKPiBAQCAtMjQxLDcgKzI0MSw3IEBAIHRlc3Q6dGVzdC1saXN0LWRpZmY6Cj4gICAg ICAtIGJ1aWxkOnRlc3RzLWRlYmlhbi1hdXRvdG9vbHMKPiAgICAgIC0gYnVpbGQ6dGVzdHMtZGVi aWFuLW1lc29uCj4gICAgc3RhZ2U6IHRlc3QKPiAtICBzY3JpcHQ6IGRpZmYgPChzZWQgInMvIC9c bi9nIiBtZXNvbi10ZXN0LWxpc3QudHh0fCBncmVwIC12ICd2YzRcfHYzZFx8cGFuZnJvc3QnIHwg c29ydCkgPChzZWQgInMvIC9cbi9nIiBhdXRvdG9vbHMtdGVzdC1saXN0LnR4dCB8IHNvcnQpCj4g KyAgc2NyaXB0OiBkaWZmIDwoc2VkICJzLyAvXG4vZyIgbWVzb24tdGVzdC1saXN0LnR4dHwgZ3Jl cCAtdiAndmM0XHx2M2RcfHBhbmZyb3N0XHxub3V2ZWF1JyB8IHNvcnQpIDwoc2VkICJzLyAvXG4v ZyIgYXV0b3Rvb2xzLXRlc3QtbGlzdC50eHQgfCBzb3J0KQo+ICAKPiAgdGVzdDpsaXN0LXVuZG9j dW1lbnRlZC10ZXN0czoKPiAgICBkZXBlbmRlbmNpZXM6Cj4gZGlmZiAtLWdpdCBhL2xpYi9kcm10 ZXN0LmMgYi9saWIvZHJtdGVzdC5jCj4gaW5kZXggYzczMmQxZGQuLjQ0N2Y1NDM1IDEwMDY0NAo+ IC0tLSBhL2xpYi9kcm10ZXN0LmMKPiArKysgYi9saWIvZHJtdGVzdC5jCj4gQEAgLTExNCw2ICsx MTQsMTEgQEAgYm9vbCBpc19pOTE1X2RldmljZShpbnQgZmQpCj4gIAlyZXR1cm4gX19pc19kZXZp Y2UoZmQsICJpOTE1Iik7Cj4gIH0KPiAgCj4gK2Jvb2wgaXNfbm91dmVhdV9kZXZpY2UoaW50IGZk KQo+ICt7Cj4gKwlyZXR1cm4gX19pc19kZXZpY2UoZmQsICJub3V2ZWF1Iik7Cj4gK30KPiArCj4g IGJvb2wgaXNfdmM0X2RldmljZShpbnQgZmQpCj4gIHsKPiAgCXJldHVybiBfX2lzX2RldmljZShm ZCwgInZjNCIpOwo+IEBAIC02MjIsNiArNjI3LDExIEBAIHZvaWQgaWd0X3JlcXVpcmVfaW50ZWwo aW50IGZkKQo+ICAJaWd0X3JlcXVpcmUoaXNfaTkxNV9kZXZpY2UoZmQpKTsKPiAgfQo+ICAKPiAr dm9pZCBpZ3RfcmVxdWlyZV9ub3V2ZWF1KGludCBmZCkKPiArewo+ICsJaWd0X3JlcXVpcmUoaXNf bm91dmVhdV9kZXZpY2UoZmQpKTsKPiArfQo+ICsKPiAgdm9pZCBpZ3RfcmVxdWlyZV92YzQoaW50 IGZkKQo+ICB7Cj4gIAlpZ3RfcmVxdWlyZShpc192YzRfZGV2aWNlKGZkKSk7Cj4gZGlmZiAtLWdp dCBhL2xpYi9kcm10ZXN0LmggYi9saWIvZHJtdGVzdC5oCj4gaW5kZXggYzU2YmZhZmEuLmRkNGNk Mzg0IDEwMDY0NAo+IC0tLSBhL2xpYi9kcm10ZXN0LmgKPiArKysgYi9saWIvZHJtdGVzdC5oCj4g QEAgLTk2LDEwICs5NiwxMiBAQCBpbnQgX19kcm1fb3Blbl9kcml2ZXJfcmVuZGVyKGludCBjaGlw c2V0KTsKPiAgCj4gIHZvaWQgaWd0X3JlcXVpcmVfYW1kZ3B1KGludCBmZCk7Cj4gIHZvaWQgaWd0 X3JlcXVpcmVfaW50ZWwoaW50IGZkKTsKPiArdm9pZCBpZ3RfcmVxdWlyZV9ub3V2ZWF1KGludCBm ZCk7Cj4gIHZvaWQgaWd0X3JlcXVpcmVfdmM0KGludCBmZCk7Cj4gIAo+ICBib29sIGlzX2FtZGdw dV9kZXZpY2UoaW50IGZkKTsKPiAgYm9vbCBpc19pOTE1X2RldmljZShpbnQgZmQpOwo+ICtib29s IGlzX25vdXZlYXVfZGV2aWNlKGludCBmZCk7Cj4gIGJvb2wgaXNfdmM0X2RldmljZShpbnQgZmQp Owo+ICAKPiAgLyoqCj4gZGlmZiAtLWdpdCBhL3Rlc3RzL21lc29uLmJ1aWxkIGIvdGVzdHMvbWVz b24uYnVpbGQKPiBpbmRleCA2ODRkZTA0My4uOTI2NDc5OTEgMTAwNjQ0Cj4gLS0tIGEvdGVzdHMv bWVzb24uYnVpbGQKPiArKysgYi90ZXN0cy9tZXNvbi5idWlsZAo+IEBAIC03NCw2ICs3NCw3IEBA IHRlc3RfcHJvZ3MgPSBbCj4gIAkna21zX3ZibGFuaycsCj4gIAkna21zX3ZycicsCj4gIAknbWV0 YV90ZXN0JywKPiArCSdub3V2ZWF1X2NyYycsCj4gIAkncGFuZnJvc3RfZ2V0X3BhcmFtJywKPiAg CSdwYW5mcm9zdF9nZW1fbmV3JywKPiAgCSdwYW5mcm9zdF9wcmltZScsCj4gZGlmZiAtLWdpdCBh L3Rlc3RzL25vdXZlYXVfY3JjLmMgYi90ZXN0cy9ub3V2ZWF1X2NyYy5jCj4gbmV3IGZpbGUgbW9k ZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMC4uMDVjMmY0ZGUKPiAtLS0gL2Rldi9udWxsCj4gKysr IGIvdGVzdHMvbm91dmVhdV9jcmMuYwo+IEBAIC0wLDAgKzEsMzk3IEBACj4gKy8qCj4gKyAqIENv cHlyaWdodCDCqSAyMDIwIFJlZCBIYXQgSW5jLgo+ICsgKgo+ICsgKiBQZXJtaXNzaW9uIGlzIGhl cmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQo+ ICsgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBm aWxlcyAodGhlICJTb2Z0d2FyZSIpLAo+ICsgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRo b3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCj4gKyAqIHRoZSBy aWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBz dWJsaWNlbnNlLAo+ICsgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQg dG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKPiArICogU29mdHdhcmUgaXMgZnVybmlzaGVk IHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKPiArICoKPiAr ICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ug KGluY2x1ZGluZyB0aGUgbmV4dAo+ICsgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGlu IGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCj4gKyAqIFNvZnR3YXJl Lgo+ICsgKgo+ICsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBX QVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgo+ICsgKiBJTVBMSUVELCBJTkNMVURJTkcg QlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKPiAr ICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4g IElOIE5PIEVWRU5UIFNIQUxMCj4gKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJT IEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCj4gKyAqIExJQUJJTElU WSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBB UklTSU5HCj4gKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRX QVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MKPiArICogSU4gVEhFIFNPRlRXQVJFLgo+ ICsgKgo+ICsgKi8KPiArCj4gKyNpbmNsdWRlIDxmY250bC5oPgo+ICsjaW5jbHVkZSAiaWd0Lmgi Cj4gKyNpbmNsdWRlICJpZ3Rfc3lzZnMuaCIKPiArCj4gK0lHVF9URVNUX0RFU0NSSVBUSU9OKAo+ ICsiVGVzdHMgY2VydGFpbiBhc3BlY3RzIG9mIENSQyBjYXB0dXJlIHRoYXQgYXJlIGV4Y2x1c2l2 ZSB0byBudmlkaWEgaGFyZHdhcmUsICIKPiArInN1Y2ggYXMgY29udGV4dCBmbGlwcGluZy4iKTsK PiArCj4gK3R5cGVkZWYgc3RydWN0IHsKPiArCWludCBwaXBlOwo+ICsJaW50IGRybV9mZDsKPiAr CWludCBudl9jcmNfZGlyOwo+ICsJaWd0X2Rpc3BsYXlfdCBkaXNwbGF5Owo+ICsJaWd0X291dHB1 dF90ICpvdXRwdXQ7Cj4gKwlpZ3RfcGxhbmVfdCAqcHJpbWFyeTsKPiArCWRybU1vZGVNb2RlSW5m byAqbW9kZTsKPiArCWlndF9mYl90IGRlZmF1bHRfZmI7Cj4gK30gZGF0YV90Owo+ICsKPiArc3Ry dWN0IGNvbG9yX2ZiIHsKPiArCWRvdWJsZSByLCBnLCBiOwo+ICsJaWd0X2NyY190IGNyYzsKPiAr CWlndF9mYl90IGZiOwo+ICt9Owo+ICsKPiArI2RlZmluZSBIRVhfQ09MT1Iocl8sIGdfLCBiXykg XAo+ICsJeyAuciA9IChyXyAvIDI1NS4wKSwgLmcgPSAoZ18gLyAyNTUuMCksIC5iID0gKGJfIC8g MjU1LjApIH0KPiArCj4gK3N0YXRpYyB2b2lkIHNldF9jcmNfZmxpcF90aHJlc2hvbGQoZGF0YV90 ICpkYXRhLCB1bnNpZ25lZCBpbnQgdGhyZXNob2xkKQo+ICt7Cj4gKwlpZ3RfZGVidWcoIlNldHRp bmcgQ1JDIG5vdGlmaWVyIGZsaXAgdGhyZXNob2xkIHRvICVkXG4iLCB0aHJlc2hvbGQpOwo+ICsJ aWd0X2Fzc2VydF9sdCgwLCBpZ3Rfc3lzZnNfcHJpbnRmKGRhdGEtPm52X2NyY19kaXIsICJmbGlw X3RocmVzaG9sZCIsICIlZCIsIHRocmVzaG9sZCkpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBj cmVhdGVfY29sb3JzKGRhdGFfdCAqZGF0YSwKPiArCQkJICBzdHJ1Y3QgY29sb3JfZmIgKmNvbG9y cywKPiArCQkJICBzaXplX3QgbGVuLAo+ICsJCQkgIGlndF9waXBlX2NyY190ICpwaXBlX2NyYykK Ck5vdCB0byBiaWtlc2hlZCB0b28gbXVjaCwgYnV0IHRoaXMgZnVuY3Rpb24gc2VlbXMgdG8gYmUg bW9yZSBhYm91dApnZW5lcmF0aW5nIENSQ3MgZ2l2ZW4gc29tZSBwcmUtZXhpc3RpbmcgY29sb3Jz LiBNYXliZQpjcmVhdGVfY29sb3JfY3JjcygpIHdvdWxkIGJlIGJldHRlcj8gQW5kIGl0IHdvdWxk bid0IGh1cnQgdG8gdGhyb3cgYQpsaXR0bGUgZG9jYmxvY2sgb24gaXQsIGV2ZW4gc29tZXRoaW5n IGFzIHNob3J0IGFzOgoKLyoKICogQ2FsY3VsYXRlIGFuZCBzZXQgdGhlIENSQyBmb3IgZWFjaCBj b2xvcl9mYgogKi8KCj4gK3sKPiArCWNoYXIgKmNyY19zdHI7Cj4gKwo+ICsJaWd0X3BpcGVfY3Jj X3N0YXJ0KHBpcGVfY3JjKTsKPiArCj4gKwlmb3IgKGludCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7 Cj4gKwkJaWd0X2NyZWF0ZV9jb2xvcl9mYihkYXRhLT5kcm1fZmQsCj4gKwkJCQkgICAgZGF0YS0+ bW9kZS0+aGRpc3BsYXksCj4gKwkJCQkgICAgZGF0YS0+bW9kZS0+dmRpc3BsYXksCj4gKwkJCQkg ICAgRFJNX0ZPUk1BVF9YUkdCODg4OCwKPiArCQkJCSAgICBMT0NBTF9EUk1fRk9STUFUX01PRF9O T05FLAo+ICsJCQkJICAgIGNvbG9yc1tpXS5yLCBjb2xvcnNbaV0uZywgY29sb3JzW2ldLmIsCj4g KwkJCQkgICAgJmNvbG9yc1tpXS5mYik7Cj4gKwo+ICsJCWlndF9wbGFuZV9zZXRfZmIoZGF0YS0+ cHJpbWFyeSwgJmNvbG9yc1tpXS5mYik7Cj4gKwkJaWd0X2Rpc3BsYXlfY29tbWl0KCZkYXRhLT5k aXNwbGF5KTsKPiArCQlpZ3RfcGlwZV9jcmNfZ2V0X2N1cnJlbnQoZGF0YS0+ZHJtX2ZkLCBwaXBl X2NyYywgJmNvbG9yc1tpXS5jcmMpOwo+ICsKPiArCQljcmNfc3RyID0gaWd0X2NyY190b19zdHJp bmcoJmNvbG9yc1tpXS5jcmMpOwo+ICsJCWlndF9kZWJ1ZygiQ1JDIGZvciBmcmFtZSAlZCBvZiBw YXR0ZXJuOiAlc1xuIiwKPiArCQkJICBpLCBjcmNfc3RyKTsKPiArCQlmcmVlKGNyY19zdHIpOwo+ ICsJfQo+ICsKPiArCWlndF9waXBlX2NyY19zdG9wKHBpcGVfY3JjKTsKPiArfQo+ICsKPiArc3Rh dGljIHZvaWQgZGVzdHJveV9jb2xvcnMoZGF0YV90ICpkYXRhLCBzdHJ1Y3QgY29sb3JfZmIgKmNv bG9ycywgc2l6ZV90IGxlbikKPiArewo+ICsJLyogU28gd2UgZG9uJ3QgdHVybiBvZmYgdGhlIHBp cGUgaWYgd2UgcmVtb3ZlIGl0J3MgY3VycmVudCBmYiAqLwo+ICsJaWd0X3BsYW5lX3NldF9mYihk YXRhLT5wcmltYXJ5LCAmZGF0YS0+ZGVmYXVsdF9mYik7Cj4gKwo+ICsJZm9yIChpbnQgaSA9IDA7 IGkgPCBsZW47IGkrKykKPiArCQlpZ3RfcmVtb3ZlX2ZiKGRhdGEtPmRybV9mZCwgJmNvbG9yc1tp XS5mYik7Cj4gK30KPiArCj4gKy8qIEhhcmQtY29kZWQgdG8gUElQRV9BIGZvciBub3csIHdlIGRv bid0IHJlYWxseSBuZWVkIHRvIHRlc3QgdGhpcyBvbiBtb3JlIHRoZW4KPiArICogb25lIGhlYWQK PiArICovCgpQZXJoYXBzIGV4cGFuZCB0aGlzIGRvYy1ibG9jayBvdXQgYSBiaXQgd2l0aCB0aGUg ZGV0YWlscyB5b3UgaGF2ZSBpbiB0aGUKY29tbWl0OgoKLyogVGVzdCBDUkNzIGFyZSByZXBvcnRl ZCBhY3Jvc3Mgbm90aWZpZXIgY29udGV4dCBmbGlwcwogKgogKiBOdmlkaWEgR1BVcyBzdG9yZSBD UkNzIGluIGEgbGltaXRlZCBtZW1vcnkgcmVnaW9uIGNhbGxlZCB0aGUgbm90aWZpZXIKICogY29u dGV4dC4gV2hlbiB0aGUgcmVnaW9uIGZpbGxzLCBuZXcgQ1JDcyBhcmUgbm90IHJlcG9ydGVkLiBU byB3b3JrCiAqIGFyb3VuZCB0aGlzLCB0d28gbm90aWZpZXIgY29udGV4dHMgYXJlIGFsbG9jYXRl ZCBhbmQgdGhlIGRyaXZlciBmbGlwcwogKiBiZXR3ZWVuIHRoZSB0d28gb2YgdGhlbSB3aGVuIGEg dGhyZXNob2xkIGlzIHJlYWNoZWQuIEV2ZW4gd2l0aCB0aGlzCiAqIGFwcHJvYWNoLCBhIHNpbmds ZSBmcmFtZSBpcyBsb3N0IGR1cmluZyB0aGUgY29udGV4dCBmbGlwLgogKgogKiBUaGlzIHRlc3Qg YWRqdXN0cyB0aGUgdGhyZXNob2xkIGF0IHdoaWNoIHRoZSBub3RpZmllciBjb250ZXh0IGZsaXBz CiAqIHRvIHRoZSBvdGhlciBjb250ZXh0IGFuZCBhc3NlcnRzIHRoZSBDUkNzIGFyZSBjb3JyZWN0 bHkgcmVwb3J0ZWQgd2l0aAogKiB0aGUgZXhjZXB0aW9uIG9mIHRoZSBmcmFtZSBsb3N0IGR1cmlu ZyB0aGUgZmxpcC4KICoKICogSGFyZC1jb2RlZCB0byBQSVBFX0EgZm9yIG5vdywgd2UgZG9uJ3Qg cmVhbGx5IG5lZWQgdG8gdGVzdCB0aGlzIG9uCiAqIG1vcmUgdGhlbiBvbmUgaGVhZAogKi8KCkkg d2FzIGd1aWx0eSBvZiByZWFkaW5nIHRoZSBjb2RlIHdoaWxlIHRlc3Rpbmcgd2l0aG91dCBnb2lu ZyBiYWNrIHRvCmNvbnN1bHQgdGhlIGNvbW1pdCBtZXNzYWdlIGFuZCBJIG9ubHkganVzdCBub3cg cmVhbGl6ZWQgdGhlIHRlc3QgcHVycG9zZQp3YXMgY2xlYXJseSBleHBsYWluZWQuIEl0J2QgYmUg bmljZSB0byBrZWVwIHRoYXQgY2xvc2UgdG8gdGhlIHRlc3QKZGVmaW5pdGlvbiByYXRoZXIgdGhh biBpbiB0aGUgY29tbWl0IGxvZy4KCkFsc28sIGFzIGZhciBhcyBJIGNhbiB0ZWxsIGl0J3Mgbm90 IGFjdHVhbGx5IGhhcmQtY29kZWQgdG8gUElQRV9BLCBidXQKdGVzdF9jdHhfZmxpcF90aHJlc2hv bGRfcmVzZXRfYWZ0ZXJfY2FwdHVyZSgpIGlzLiBNYXliZSBJJ20KbWlzLXVuZGVyc3RhbmRpbmcg dGhhdD8KCj4gK3N0YXRpYyB2b2lkIHRlc3RfY3R4X2ZsaXBfZGV0ZWN0aW9uKGRhdGFfdCAqZGF0 YSkKPiArewo+ICsJc3RydWN0IGNvbG9yX2ZiIGNvbG9yc1tdID0gewo+ICsJCUhFWF9DT0xPUigw eEZGLCAweDAwLCAweDE4KSwKPiArCQlIRVhfQ09MT1IoMHhGRiwgMHhBNSwgMHgyQyksCj4gKwkJ SEVYX0NPTE9SKDB4RkYsIDB4RkYsIDB4NDEpLAo+ICsJCUhFWF9DT0xPUigweDAwLCAweDgwLCAw eDE4KSwKPiArCQlIRVhfQ09MT1IoMHgwMCwgMHgwMCwgMHhGOSksCj4gKwkJSEVYX0NPTE9SKDB4 ODYsIDB4MDAsIDB4N0QpLAo+ICsJfTsKPiArCWlndF9vdXRwdXRfdCAqb3V0cHV0ID0gZGF0YS0+ b3V0cHV0Owo+ICsJaWd0X3BsYW5lX3QgKnByaW1hcnkgPSBkYXRhLT5wcmltYXJ5Owo+ICsJaWd0 X3BpcGVfY3JjX3QgKnBpcGVfY3JjOwo+ICsJY29uc3QgaW50IG5fY29sb3JzID0gQVJSQVlfU0la RShjb2xvcnMpOwo+ICsJY29uc3QgaW50IG5fY3JjcyA9IDIwOwo+ICsJaWd0X2NyY190ICpjcmNz ID0gTlVMTDsKPiArCWludCBzdGFydCA9IC0xLCBmcmFtZSwgc3RhcnRfY29sb3IgPSAtMSwgaTsK PiArCWJvb2wgZm91bmRfc2tpcCA9IGZhbHNlOwo+ICsKPiArCXBpcGVfY3JjID0gaWd0X3BpcGVf Y3JjX25ldyhkYXRhLT5kcm1fZmQsIGRhdGEtPnBpcGUsICJhdXRvIik7Cj4gKwo+ICsJY3JlYXRl X2NvbG9ycyhkYXRhLCBjb2xvcnMsIG5fY29sb3JzLCBwaXBlX2NyYyk7Cj4gKwo+ICsJc2V0X2Ny Y19mbGlwX3RocmVzaG9sZChkYXRhLCBuX2NyY3MgLyAyKTsKPiArCWlndF9waXBlX2NyY19zdGFy dChwaXBlX2NyYyk7Cj4gKwo+ICsJZm9yIChpID0gMDsgaSA8IG5fY3JjczsgaSsrKSB7Cj4gKwkJ Y29uc3QgaW50IGNvbG9yX2lkeCA9IGkgJSBuX2NvbG9yczsKPiArCj4gKwkJaWd0X3BsYW5lX3Nl dF9mYihwcmltYXJ5LCAmY29sb3JzW2NvbG9yX2lkeF0uZmIpOwo+ICsJCWRvX29yX2RpZShkcm1N b2RlUGFnZUZsaXAoZGF0YS0+ZHJtX2ZkLAo+ICsJCQkJCSAgb3V0cHV0LT5jb25maWcuY3J0Yy0+ Y3J0Y19pZCwKPiArCQkJCQkgIGNvbG9yc1tjb2xvcl9pZHhdLmZiLmZiX2lkLAo+ICsJCQkJCSAg RFJNX01PREVfUEFHRV9GTElQX0VWRU5ULAo+ICsJCQkJCSAgTlVMTCkpOwo+ICsJCWttc3Rlc3Rf d2FpdF9mb3JfcGFnZWZsaXAoZGF0YS0+ZHJtX2ZkKTsKCldoaWxlIHRlc3RpbmcgSSB3YXMgZXhw ZXJpZW5jaW5nIHNvbWUgdGVzdCBmYWlsdXJlcywgYXQgd2hpY2ggcG9pbnQgSQp0dXJuZWQgb24g YSBidW5jaCBvZiBkZWJ1ZyBsb2dnaW5nIG9uIHRoZSBrZXJuZWwgc2lkZS4gVGhpcyBsZWQgdG8g dGhpcwp0ZXN0IHJlbGlhYmx5IGZhaWxpbmcgYmVjYXVzZSB0aGlzIGNhbGwgdGltZWQgb3V0IHdh aXRpbmcgb24gdGhlIHBhZ2VmbGlwCmV2ZW50LCB3aGljaCBpcyB1bmZvcnR1bmF0ZS4gSSdtIG5v dCBzdXJlIHdoYXQgdGhlIGxhcmdlciB1c2FnZSBvZiB0aGlzCnBhcnRpY3VsYXIgZnVuY3Rpb24g aXMsIGJ1dCBoYXZpbmcgdGVzdHMgc3RhcnQgdG8gZmFpbCB3aGVuIHZlcmJvc2UKbG9nZ2luZyBp cyBlbmFibGVkIGlzbid0IGlkZWFsLgoKT2J2aW91c2x5IGhhbmdpbmcgZm9yZXZlciBpcyBhbHNv IG5vdCBpZGVhbCwgc28gbWF5YmUgdGhlIHRpbWVvdXQgb2YKdGhpcyBmdW5jdGlvbiBqdXN0IG5l ZWRzIGFkanVzdG1lbnQsIG9yIGV2ZW4ganVzdCBoYXZlIHRoZSBhc3NlcnRpb24KaW5jbHVkZSBh IGhpbnQgdGhhdCBwZXJoYXBzIGRlYnVnIGxvZ2dpbmcgaXMgc2xvd2luZyB0aGluZ3MgZG93biB0 b28KbXVjaC4gSXQncyBub3Qgd2l0aGluIHRoZSBzY29wZSBvZiB0aGlzIGNoYW5nZSBzbyBJIGRv bid0IHRoaW5rIGFueXRoaW5nCm5lZWRzIHRvIGNoYW5nZSBpbiB0aGlzIHBhdGNoLCBtb3JlIGp1 c3Qgd2FudGVkIHRvIHNlZSB3aGF0IGZvbGtzIHRoaW5rCnRoZSBiZXN0IGFwcHJvYWNoIGlzIHNp bmNlIEkgc3BlbnQgbG9uZ2VyIHRoYW4gSSBjYXJlIHRvIGFkbWl0IGZpZ3VyaW5nCnRoYXQgb3V0 IGFuZCBkb24ndCB3YW50IG90aGVycyB0byBoYXZlIHRvIHN1ZmZlciB0aGUgc2FtZSB3YXkuCgo+ ICsJfQo+ICsKPiArCWlndF9waXBlX2NyY19nZXRfY3JjcyhwaXBlX2NyYywgbl9jcmNzLCAmY3Jj cyk7Cj4gKwlpZ3RfcGlwZV9jcmNfc3RvcChwaXBlX2NyYyk7Cj4gKwo+ICsJLyoKPiArCSAqIEZp bmQgdGhlIGZpcnN0IGNvbG9yIGluIG91ciBwYXR0ZXJuIHdpdGggYSBDUkMgdGhhdCBkaWZmZXJz IGZyb20gdGhlCj4gKwkgKiBsYXN0IENSQywgc28gd2UgY2FuIHVzZSBpdCB0byBmaW5kIHRoZSBz dGFydCBvZiB0aGUgcGF0dGVybgo+ICsJICovCgpJdCBtaWdodCBiZSB3b3J0aCBleHBsaWNpdGx5 IG5vdGluZyB0aGlzIGlzIHRvIGF2b2lkIENSQyBjb2xsaXNpb25zIChJJ20KYXNzdW1pbmcpIHNp bmNlIEkgaGFkIHRvIHBvbmRlciBmb3IgYSBiaXQ6CgovKgogKiBHdWFyZCBhZ2FpbnN0IENSQyBj b2xsaXNpb25zIGluIHRoZSBjb2xvciBmcmFtZWJ1ZmZlcnMuIEZpbmQgdGhlCiAqIGZpcnN0IGNv bG9yIGluIG91ciBwYXR0ZXJuIHdpdGggYSBDUkMgdGhhdCBkaWZmZXJzIGZyb20gdGhlIGxhc3Qg Q1JDLAogKiBzbyB3ZSBjYW4gdXNlIGl0IHRvIGZpbmQgdGhlIHN0YXJ0IG9mIHRoZSBwYXR0ZXJu CiAqLwoKPiArCWZvciAoaSA9IDA7IGkgPCBuX2NvbG9ycyAtIDE7IGkrKykgewo+ICsJCWlmIChp Z3RfY2hlY2tfY3JjX2VxdWFsKCZjb2xvcnNbaV0uY3JjLCAmY29sb3JzW25fY29sb3JzIC0gMV0u Y3JjKSkKPiArCQkJY29udGludWU7Cj4gKwo+ICsJCWlndF9kZWJ1ZygiVXNpbmcgZnJhbWUgJWQg b2YgcGF0dGVybiBmb3IgZmluZGluZyBzdGFydFxuIiwgaSk7Cj4gKwkJc3RhcnRfY29sb3IgPSBp Owo+ICsJCWJyZWFrOwo+ICsJfQo+ICsJaWd0X2Fzc2VydF9sdGUoMCwgc3RhcnRfY29sb3IpOwo+ ICsKPiArCS8qIE5vdywgZmlndXJlIG91dCB3aGVyZSB0aGUgcGF0dGVybiBzdGFydHMgKi8KPiAr CWZvciAoaSA9IDA7IGkgPCBuX2NyY3M7IGkrKykgewo+ICsJCWlmICghaWd0X2NoZWNrX2NyY19l cXVhbCgmY29sb3JzW3N0YXJ0X2NvbG9yXS5jcmMsICZjcmNzW2ldKSkKPiArCQkJY29udGludWU7 Cj4gKwo+ICsJCXN0YXJ0ID0gaSAtIHN0YXJ0X2NvbG9yOwo+ICsJCWZyYW1lID0gY3Jjc1tpXS5m cmFtZTsKPiArCQlpZ3RfZGVidWcoIlBhdHRlcm4gc3RhcnRlZCBvbiBmcmFtZSAlZFxuIiwgZnJh bWUpOwo+ICsJCWJyZWFrOwo+ICsJfQo+ICsJaWd0X2Fzc2VydF9sdGUoMCwgc3RhcnQpOwo+ICsK PiArCS8qIEFuZCBmaW5hbGx5LCBhc3NlcnQgdGhhdCBhY2NvcmRpbmcgdG8gdGhlIENSQ3MgZXhh Y3RseSBhbGwgYnV0IG9uZQo+ICsJICogZnJhbWUgd2FzIGRpc3BsYXllZCBpbiBvcmRlci4gVGhl IG1pc3NpbmcgZnJhbWUgY29tZXMgZnJvbQo+ICsJICogKGluZXZpdGFibHkpIGxvc2luZyBhIHNp bmdsZSBDUkMgZXZlbnQgd2hlbiBub3V2ZWF1IHN3aXRjaGVzIG5vdGlmaWVyCj4gKwkgKiBjb250 ZXh0cwo+ICsJICovCj4gKwlmb3IgKGkgPSBzdGFydDsgaSA8IG5fY3JjczsgaSsrLCBmcmFtZSsr KSB7Cj4gKwkJaWd0X2NyY190ICpjcmMgPSAmY3Jjc1tpXTsKPiArCQljaGFyICpjcmNfc3RyOwo+ ICsJCWludCBjb2xvcl9pZHg7Cj4gKwo+ICsJCWNyY19zdHIgPSBpZ3RfY3JjX3RvX3N0cmluZyhj cmMpOwo+ICsJCWlndF9kZWJ1ZygiQ1JDICVkOiB2Ymw9JWQgdmFsPSVzXG4iLCBpLCBjcmMtPmZy YW1lLCBjcmNfc3RyKTsKPiArCQlmcmVlKGNyY19zdHIpOwo+ICsKPiArCQlpZiAoIWZvdW5kX3Nr aXAgJiYgY3JjLT5mcmFtZSAhPSBmcmFtZSkgewo+ICsJCQlpZ3RfZGVidWcoIl5eXiBGb3VuZCBl eHBlY3RlZCBza2lwcGVkIENSQyAlZCBeXl5cbiIsCj4gKwkJCQkgIGNyYy0+ZnJhbWUgLSAxKTsK PiArCQkJZm91bmRfc2tpcCA9IHRydWU7Cj4gKwkJCWZyYW1lKys7Cj4gKwkJfQo+ICsKPiArCQkv KiBXZSBzaG91bGQgbmV2ZXIgc2tpcCBtb3JlIHRoZW4gb25lIGZyYW1lICovCj4gKwkJaWYgKGZv dW5kX3NraXApIHsKPiArCQkJaWd0X2Fzc2VydF9lcShjcmMtPmZyYW1lLCBmcmFtZSk7Cj4gKwkJ CWNvbG9yX2lkeCA9IChpIC0gc3RhcnQgKyAxKSAlIG5fY29sb3JzOwo+ICsJCX0gZWxzZSB7Cj4g KwkJCWNvbG9yX2lkeCA9IChpIC0gc3RhcnQpICUgbl9jb2xvcnM7Cj4gKwkJfQo+ICsKPiArCQlp Z3RfYXNzZXJ0X2NyY19lcXVhbChjcmMsICZjb2xvcnNbY29sb3JfaWR4XS5jcmMpOwoKVGhpcyBj b25zaXN0ZW50bHkgZmFpbHMgZm9yIG1lLiBUaGUgcmVhc29uIGlzIHRoYXQgdGhlcmUgYXJlIG11 bHRpcGxlCmZyYW1lcyB3aXRoIHRoZSBzYW1lIGNvbG9yL0NSQy4gQXMgZmFyIGFzIEkgY2FuIHRl bGwsIHRoYXQncyBwZXJmZWN0bHkKcmVhc29uYWJsZSB3aGVuIGEgcGFnZSBmbGlwIGlzIHNsb3cg KHBvc3NpYmx5IGR1ZSB0byBkZWJ1ZyBsb2dzIPCfmKwpLCBidXQKSSBkb24ndCBrbm93IGZvciBj ZXJ0YWluIHdoYXQgdGhlIGludGVyZmFjZSBleHBlY3RhdGlvbnMgYXJlLgoKSWYgdGhhdCBhc3N1 bXB0aW9uIGlzIGNvcnJlY3QsIEkgZ3Vlc3MgeW91J2xsIG5lZWQgdG8gZXhwZWN0IGVpdGhlciB0 aGUKc2FtZSBjb2xvciBhcyB0aGUgcHJldmlvdXMgZnJhbWUsIG9yIHRoZSBuZXh0IGNvbG9yIGlu IHRoZSBhcnJheSBhZnRlcgp0aGUgY29sb3IgaW4gdGhlIHByZXZpb3VzIGZyYW1lLgoKPiArCX0K PiArCWlndF9hc3NlcnQoZm91bmRfc2tpcCk7Cj4gKwo+ICsJZnJlZShjcmNzKTsKPiArCWlndF9w aXBlX2NyY19mcmVlKHBpcGVfY3JjKTsKPiArCWRlc3Ryb3lfY29sb3JzKGRhdGEsIGNvbG9ycywg QVJSQVlfU0laRShjb2xvcnMpKTsKPiArfQo+ICsKPiArLyogVGVzdCB3aGV0aGVyIG9yIG5vdCBJ R1QgaXMgYWJsZSB0byBoYW5kbGUgZnJhbWUgc2tpcHMgd2hlbiByZXF1ZXN0aW5nIHRoZQo+ICsg KiBDUkMgZm9yIHRoZSBjdXJyZW50IGZyYW1lCj4gKyAqLwo+ICtzdGF0aWMgdm9pZCB0ZXN0X2N0 eF9mbGlwX3NraXBfY3VycmVudF9mcmFtZShkYXRhX3QgKmRhdGEpCj4gK3sKPiArCXN0cnVjdCBj b2xvcl9mYiBjb2xvcnNbXSA9IHsKPiArCQl7IC5yID0gMS4wLCAuZyA9IDAuMCwgLmIgPSAwLjAg fSwKPiArCQl7IC5yID0gMC4wLCAuZyA9IDEuMCwgLmIgPSAwLjAgfSwKPiArCQl7IC5yID0gMC4w LCAuZyA9IDAuMCwgLmIgPSAxLjAgfSwKPiArCX07Cj4gKwlpZ3Rfb3V0cHV0X3QgKm91dHB1dCA9 IGRhdGEtPm91dHB1dDsKPiArCWlndF9waXBlX2NyY190ICpwaXBlX2NyYzsKPiArCWlndF9wbGFu ZV90ICpwcmltYXJ5ID0gZGF0YS0+cHJpbWFyeTsKPiArCWNvbnN0IGludCBmZCA9IGRhdGEtPmRy bV9mZDsKPiArCWNvbnN0IGludCBuX2NvbG9ycyA9IEFSUkFZX1NJWkUoY29sb3JzKTsKPiArCWNv bnN0IGludCBuX2NyY3MgPSAzMDsKPiArCj4gKwlwaXBlX2NyYyA9IGlndF9waXBlX2NyY19uZXco ZmQsIGRhdGEtPnBpcGUsICJhdXRvIik7Cj4gKwljcmVhdGVfY29sb3JzKGRhdGEsIGNvbG9ycywg bl9jb2xvcnMsIHBpcGVfY3JjKTsKPiArCj4gKwlzZXRfY3JjX2ZsaXBfdGhyZXNob2xkKGRhdGEs IDUpOwo+ICsJaWd0X3BpcGVfY3JjX3N0YXJ0KHBpcGVfY3JjKTsKPiArCj4gKwlmb3IgKGludCBp ID0gMDsgaSA8IG5fY3JjczsgaSsrKSB7Cj4gKwkJaWd0X2NyY190IGNyYzsKPiArCQljb25zdCBp bnQgY29sb3JfaWR4ID0gaSAlIG5fY29sb3JzOwo+ICsKPiArCQlpZ3RfcGxhbmVfc2V0X2ZiKHBy aW1hcnksICZjb2xvcnNbY29sb3JfaWR4XS5mYik7Cj4gKwkJZG9fb3JfZGllKGRybU1vZGVQYWdl RmxpcChmZCwKPiArCQkJCQkgIG91dHB1dC0+Y29uZmlnLmNydGMtPmNydGNfaWQsCj4gKwkJCQkJ ICBjb2xvcnNbY29sb3JfaWR4XS5mYi5mYl9pZCwKPiArCQkJCQkgIERSTV9NT0RFX1BBR0VfRkxJ UF9FVkVOVCwKPiArCQkJCQkgIE5VTEwpKTsKPiArCQlrbXN0ZXN0X3dhaXRfZm9yX3BhZ2VmbGlw KGZkKTsKPiArCj4gKwkJaWd0X3BpcGVfY3JjX2dldF9jdXJyZW50KGZkLCBwaXBlX2NyYywgJmNy Yyk7Cj4gKwkJaWd0X2Fzc2VydF9jcmNfZXF1YWwoJmNvbG9yc1tjb2xvcl9pZHhdLmNyYywgJmNy Yyk7Cj4gKwl9Cj4gKwo+ICsJaWd0X3BpcGVfY3JjX3N0b3AocGlwZV9jcmMpOwo+ICsJaWd0X3Bp cGVfY3JjX2ZyZWUocGlwZV9jcmMpOwo+ICsJZGVzdHJveV9jb2xvcnMoZGF0YSwgY29sb3JzLCBu X2NvbG9ycyk7Cj4gK30KPiArCgpNYXliZSBhIHNob3J0IGRvYy1ibG9jayB3aXRoIHdoYXQgdGhl IHRlc3Qgc2hvdWxkIGJlIGRvaW5nIGhlcmUgd291bGQgYmUKZ29vZDoKCi8qCiAqIEFzc2VydCB0 aGF0IGFmdGVyIGEgQ1JDIGNhcHR1cmUgaXMgc3RhcnRlZCBhbmQgc3RvcHBlZCwgdGhlIGNvbnRl eHQKICogbm90aWZpZXIgZmxpcCB0aHJlc2hvbGQgaXMgcmVzZXQgdG8gaXRzIGRlZmF1bHQgdmFs dWUuCiAqLwoKPiArc3RhdGljIHZvaWQgdGVzdF9jdHhfZmxpcF90aHJlc2hvbGRfcmVzZXRfYWZ0 ZXJfY2FwdHVyZShkYXRhX3QgKmRhdGEpCj4gK3sKPiArCWlndF9waXBlX2NyY190ICpwaXBlX2Ny YzsKPiArCWNvbnN0IGludCBmZCA9IGRhdGEtPmRybV9mZDsKPiArCj4gKwlwaXBlX2NyYyA9IGln dF9waXBlX2NyY19uZXcoZmQsIGRhdGEtPnBpcGUsICJhdXRvIik7Cj4gKwo+ICsJc2V0X2NyY19m bGlwX3RocmVzaG9sZChkYXRhLCA1KTsKPiArCWlndF9waXBlX2NyY19zdGFydChwaXBlX2NyYyk7 Cj4gKwlpZ3RfcGlwZV9jcmNfc3RvcChwaXBlX2NyYyk7Cj4gKwo+ICsJaWd0X2Fzc2VydF9uZXEo aWd0X3N5c2ZzX2dldF91MzIoZGF0YS0+bnZfY3JjX2RpciwgImZsaXBfdGhyZXNob2xkIiksIDUp OwoKQXMgaXQgY3VycmVudGx5IHN0YW5kcywgdGhpcyB0ZXN0IGNvdWxkIGZhaWwgaWYgdGhlIGRl ZmF1bHQgaXMgNSwgb3IgaXQKY291bGQgcGFzcyBpZiAiZmxpcF90aHJlc2hvbGQiIHdhcyBicm9r ZW4gYW5kIGRpZG4ndCByZXBvcnQgdGhlIGFjdHVhbApmbGlwX3RocmVzaG9sZCBhbnl3YXkuIFRo ZSBkZWZhdWx0IGJlaW5nIDUgZG9lc24ndCBsb29rIHRvIGJlIHNvbWV0aGluZwp0aGF0IHlvdSBu ZWNlc3NhcmlseSBuZWVkIHRvIGJlIHdvcnJpZWQgYWJvdXQsIGJ1dCBpdCBtaWdodCBiZSB3b3J0 aApyZWFkaW5nIHRoZSB2YWx1ZSBiYWNrIGFmdGVyIHNldHRpbmcgdGhlIHRocmVzaG9sZCB0byBt YWtlIHN1cmUgeW91IGRvCnNlZSA1LgoKPiArCWlndF9waXBlX2NyY19mcmVlKHBpcGVfY3JjKTsK PiArfQo+ICsKClNhbWUgbm90ZSBhYm91dCBhIGRvY2Jsb2NrIPCfmYI6CgovKgogKiBBc3NlcnQg dGhhdCwgZm9yIGEgZ2l2ZW4gc291cmNlLCB0d28gY29uc2VjdXRpdmUgQ1JDcyBhcmUgZXF1YWwg aWYKICogdGhlIGNvbnRlbnQgaGFzbid0IGNoYW5nZWQuCiAqLwoKPiArc3RhdGljIHZvaWQgdGVz dF9zb3VyY2UoZGF0YV90ICpkYXRhLCBjb25zdCBjaGFyICpzb3VyY2UpCj4gK3sKPiArCWlndF9w aXBlX2NyY190ICpwaXBlX2NyYyA9IGlndF9waXBlX2NyY19uZXcoZGF0YS0+ZHJtX2ZkLCBkYXRh LT5waXBlLCBzb3VyY2UpOwo+ICsJaWd0X2NyY190ICpjcmNzOwo+ICsKPiArCWlndF9waXBlX2Ny Y19zdGFydChwaXBlX2NyYyk7Cj4gKwlpZ3RfcGlwZV9jcmNfZ2V0X2NyY3MocGlwZV9jcmMsIDIs ICZjcmNzKTsKPiArCWlndF9waXBlX2NyY19zdG9wKHBpcGVfY3JjKTsKPiArCj4gKwkvKiBUaGUg Q1JDIHNob3VsZG4ndCBjaGFuZ2UgaWYgdGhlIHNvdXJjZSBjb250ZW50IGhhc24ndCBjaGFuZ2Vk ICovCj4gKwlpZ3RfYXNzZXJ0X2NyY19lcXVhbCgmY3Jjc1swXSwgJmNyY3NbMV0pOwo+ICsKPiAr CWlndF9waXBlX2NyY19mcmVlKHBpcGVfY3JjKTsKPiArCWZyZWUoY3Jjcyk7Cj4gK30KPiArCgpJ J20gbm90IGFzIGNlcnRhaW4gYWJvdXQgd2hhdCBleGFjdGx5IHRoZSAib3V0cC1pbmFjdGl2ZSIg c291cmNlIChvciB0aGUKb3RoZXIgQ1JDIHNvdXJjZXMpIGlzIHNvIEknbSBub3Qgc3VyZSB3aGF0 IHRvIHB1dCBpbiB0aGUgZG9jLWJsb2NrIHRoYXQKSSdkIHJlY29tbWVuZCBwdXR0aW5nIGhlcmUu Cgo+ICtzdGF0aWMgdm9pZCB0ZXN0X3NvdXJjZV9vdXRwX2luYWN0aXZlKGRhdGFfdCAqZGF0YSkK PiArewo+ICsJc3RydWN0IGNvbG9yX2ZiIGNvbG9yc1tdID0gewo+ICsJCXsgLnIgPSAxLjAsIC5n ID0gMC4wLCAuYiA9IDAuMCB9LAo+ICsJCXsgLnIgPSAwLjAsIC5nID0gMS4wLCAuYiA9IDAuMCB9 LAo+ICsJfTsKPiArCWlndF9waXBlX2NyY190ICpwaXBlX2NyYzsKPiArCWNvbnN0IGludCBmZCA9 IGRhdGEtPmRybV9mZDsKPiArCWNvbnN0IGludCBuX2NvbG9ycyA9IEFSUkFZX1NJWkUoY29sb3Jz KTsKPiArCj4gKwlwaXBlX2NyYyA9IGlndF9waXBlX2NyY19uZXcoZmQsIGRhdGEtPnBpcGUsICJv dXRwLWluYWN0aXZlIik7Cj4gKwljcmVhdGVfY29sb3JzKGRhdGEsIGNvbG9ycywgbl9jb2xvcnMs IHBpcGVfY3JjKTsKPiArCj4gKwkvKiBDaGFuZ2luZyB0aGUgY29sb3Igc2hvdWxkIG5vdCBjaGFu Z2Ugd2hhdCdzIG91dHNpZGUgdGhlIGFjdGl2ZSByYXN0ZXIgKi8KPiArCWlndF9hc3NlcnRfY3Jj X2VxdWFsKCZjb2xvcnNbMF0uY3JjLCAmY29sb3JzWzFdLmNyYyk7Cj4gKwo+ICsJaWd0X3BpcGVf Y3JjX2ZyZWUocGlwZV9jcmMpOwo+ICsJZGVzdHJveV9jb2xvcnMoZGF0YSwgY29sb3JzLCBuX2Nv bG9ycyk7Cj4gK30KPiArCj4gK2RhdGFfdCBkYXRhID0gezAsIH07Cj4gKwo+ICsjZGVmaW5lIHBp cGVfdGVzdChuYW1lKSBpZ3Rfc3VidGVzdF9mKCJwaXBlLSVzLSIgbmFtZSwga21zdGVzdF9waXBl X25hbWUocGlwZSkpCj4gK2lndF9tYWluCj4gK3sKPiArCWludCBwaXBlOwo+ICsKPiArCWlndF9m aXh0dXJlIHsKPiArCQlkYXRhLmRybV9mZCA9IGRybV9vcGVuX2RyaXZlcl9tYXN0ZXIoRFJJVkVS X0FOWSk7Cj4gKwkJaWd0X3JlcXVpcmVfbm91dmVhdShkYXRhLmRybV9mZCk7Cj4gKwo+ICsJCWtt c3Rlc3Rfc2V0X3Z0X2dyYXBoaWNzX21vZGUoKTsKPiArCj4gKwkJaWd0X3JlcXVpcmVfcGlwZV9j cmMoZGF0YS5kcm1fZmQpOwo+ICsJCWlndF9kaXNwbGF5X3JlcXVpcmUoJmRhdGEuZGlzcGxheSwg ZGF0YS5kcm1fZmQpOwo+ICsJCWlndF9kaXNwbGF5X3Jlc2V0KCZkYXRhLmRpc3BsYXkpOwo+ICsJ fQo+ICsKPiArCWZvcl9lYWNoX3BpcGVfc3RhdGljKHBpcGUpIHsKPiArCQlpZ3RfZml4dHVyZSB7 Cj4gKwkJCWludCBkaXI7Cj4gKwo+ICsJCQlkYXRhLnBpcGUgPSBwaXBlOwo+ICsJCQlpZ3RfZGlz cGxheV9yZXF1aXJlX291dHB1dF9vbl9waXBlKCZkYXRhLmRpc3BsYXksIHBpcGUpOwo+ICsJCQlk YXRhLm91dHB1dCA9IGlndF9nZXRfc2luZ2xlX291dHB1dF9mb3JfcGlwZSgmZGF0YS5kaXNwbGF5 LCBwaXBlKTsKPiArCQkJZGF0YS5tb2RlID0gaWd0X291dHB1dF9nZXRfbW9kZShkYXRhLm91dHB1 dCk7Cj4gKwo+ICsJCQkvKiBOb25lIG9mIHRoZXNlIHRlc3RzIG5lZWQgdG8gcGVyZm9ybSBtb2Rl c2V0cywKPiArCQkJICoganVzdCBwYWdlIGZsaXBzLiBTbyBydW5uaW5nIGRpc3BsYXkgc2V0dXAK PiArCQkJICogaGVyZSBpcyBmaW5lCj4gKwkJCSAqLwo+ICsJCQlpZ3Rfb3V0cHV0X3NldF9waXBl KGRhdGEub3V0cHV0LCBwaXBlKTsKPiArCQkJZGF0YS5wcmltYXJ5ID0gaWd0X291dHB1dF9nZXRf cGxhbmUoZGF0YS5vdXRwdXQsIDApOwo+ICsJCQlpZ3RfY3JlYXRlX2NvbG9yX2ZiKGRhdGEuZHJt X2ZkLAo+ICsJCQkJCSAgICBkYXRhLm1vZGUtPmhkaXNwbGF5LAo+ICsJCQkJCSAgICBkYXRhLm1v ZGUtPnZkaXNwbGF5LAo+ICsJCQkJCSAgICBEUk1fRk9STUFUX1hSR0I4ODg4LAo+ICsJCQkJCSAg ICBMT0NBTF9EUk1fRk9STUFUX01PRF9OT05FLAo+ICsJCQkJCSAgICAwLjAsIDAuMCwgMC4wLAo+ ICsJCQkJCSAgICAmZGF0YS5kZWZhdWx0X2ZiKTsKPiArCQkJaWd0X3BsYW5lX3NldF9mYihkYXRh LnByaW1hcnksICZkYXRhLmRlZmF1bHRfZmIpOwo+ICsJCQlpZ3RfZGlzcGxheV9jb21taXQoJmRh dGEuZGlzcGxheSk7Cj4gKwo+ICsJCQlkaXIgPSBpZ3RfZGVidWdmc19waXBlX2RpcihkYXRhLmRy bV9mZCwgcGlwZSwgT19ESVJFQ1RPUlkpOwo+ICsJCQlpZ3RfcmVxdWlyZV9mZChkaXIpOwo+ICsJ CQlkYXRhLm52X2NyY19kaXIgPSBvcGVuYXQoZGlyLCAibnZfY3JjIiwgT19ESVJFQ1RPUlkpOwo+ ICsJCQljbG9zZShkaXIpOwo+ICsJCQlpZ3RfcmVxdWlyZV9mZChkYXRhLm52X2NyY19kaXIpOwo+ ICsJCX0KPiArCj4gKwkJLyogV2UgZG9uJ3QgbmVlZCB0byB0ZXN0IHRoaXMgb24gZXZlcnkgcGlw ZSwgYnV0IHRoZQo+ICsJCSAqIHNldHVwIGlzIHRoZSBzYW1lICovCj4gKwkJaWYgKHBpcGUgPT0g UElQRV9BKSB7Cj4gKwkJCWlndF9kZXNjcmliZSgiTWFrZSBzdXJlIHRoYXQgdGhlIENSQyBub3Rp ZmllciBjb250ZXh0IGZsaXAgdGhyZXNob2xkICIKPiArCQkJCSAgICAgImlzIHJlc2V0IHRvIGl0 cyBkZWZhdWx0IHZhbHVlIGFmdGVyIGEgc2luZ2xlIGNhcHR1cmUuIik7Cj4gKwkJCWlndF9zdWJ0 ZXN0KCJjdHgtZmxpcC10aHJlc2hvbGQtcmVzZXQtYWZ0ZXItY2FwdHVyZSIpCj4gKwkJCQl0ZXN0 X2N0eF9mbGlwX3RocmVzaG9sZF9yZXNldF9hZnRlcl9jYXB0dXJlKCZkYXRhKTsKPiArCQl9Cj4g Kwo+ICsJCWlndF9kZXNjcmliZSgiTWFrZSBzdXJlIHRoZSBhc3NvY2lhdGlvbiBiZXR3ZWVuIGVh Y2ggQ1JDIGFuZCBpdHMgIgo+ICsJCQkgICAgICJyZXNwZWN0aXZlIGZyYW1lIGluZGV4IGlzIG5v dCBicm9rZW4gd2hlbiB0aGUgZHJpdmVyICIKPiArCQkJICAgICAicGVyZm9ybXMgYSBub3RpZmll ciBjb250ZXh0IGZsaXAuIik7Cj4gKwkJcGlwZV90ZXN0KCJjdHgtZmxpcC1kZXRlY3Rpb24iKQo+ ICsJCQl0ZXN0X2N0eF9mbGlwX2RldGVjdGlvbigmZGF0YSk7Cj4gKwo+ICsJCWlndF9kZXNjcmli ZSgiTWFrZSBzdXJlIHRoYXQgaWd0X3BpcGVfY3JjX2dldF9jdXJyZW50KCkgd29ya3MgZXZlbiAi Cj4gKwkJCSAgICAgIndoZW4gdGhlIENSQyBmb3IgdGhlIGN1cnJlbnQgZnJhbWUgaW5kZXggaXMg bG9zdC4iKTsKPiArCQlwaXBlX3Rlc3QoImN0eC1mbGlwLXNraXAtY3VycmVudC1mcmFtZSIpCj4g KwkJCXRlc3RfY3R4X2ZsaXBfc2tpcF9jdXJyZW50X2ZyYW1lKCZkYXRhKTsKPiArCj4gKwkJaWd0 X2Rlc2NyaWJlKCJDaGVjayB0aGF0IGJhc2ljIENSQyByZWFkYmFjayB1c2luZyB0aGUgb3V0cC1j b21wbGV0ZSAiCj4gKwkJCSAgICAgInNvdXJjZSB3b3Jrcy4iKTsKPiArCQlwaXBlX3Rlc3QoInNv dXJjZS1vdXRwLWNvbXBsZXRlIikKPiArCQkJdGVzdF9zb3VyY2UoJmRhdGEsICJvdXRwLWNvbXBs ZXRlIik7Cj4gKwo+ICsJCWlndF9kZXNjcmliZSgiQ2hlY2sgdGhhdCBiYXNpYyBDUkMgcmVhZGJh Y2sgdXNpbmcgdGhlIHJnIHNvdXJjZSAiCj4gKwkJCSAgICAgIndvcmtzLiIpOwo+ICsJCXBpcGVf dGVzdCgic291cmNlLXJnIikKPiArCQkJdGVzdF9zb3VyY2UoJmRhdGEsICJyZyIpOwo+ICsKPiAr CQlpZ3RfZGVzY3JpYmUoIk1ha2Ugc3VyZSB0aGF0IHRoZSBvdXRwLWluYWN0aXZlIHNvdXJjZSBp cyBhY3R1YWxseSAiCj4gKwkJCSAgICAgImNhcHR1cmluZyB0aGUgaW5hY3RpdmUgcmFzdGVyLiIp Owo+ICsJCXBpcGVfdGVzdCgic291cmNlLW91dHAtaW5hY3RpdmUiKQo+ICsJCQl0ZXN0X3NvdXJj ZV9vdXRwX2luYWN0aXZlKCZkYXRhKTsKPiArCj4gKwkJaWd0X2ZpeHR1cmUgewo+ICsJCQlpZ3Rf b3V0cHV0X3NldF9waXBlKGRhdGEub3V0cHV0LCBQSVBFX05PTkUpOwo+ICsJCQlpZ3RfZGlzcGxh eV9jb21taXQoJmRhdGEuZGlzcGxheSk7Cj4gKwkJCWlndF9yZW1vdmVfZmIoZGF0YS5kcm1fZmQs ICZkYXRhLmRlZmF1bHRfZmIpOwo+ICsJCQljbG9zZShkYXRhLm52X2NyY19kaXIpOwo+ICsJCX0K PiArCX0KPiArCWlndF9maXh0dXJlCj4gKwkJaWd0X2Rpc3BsYXlfZmluaSgmZGF0YS5kaXNwbGF5 KTsKPiArCj4gK30KPiAtLSAKPiAyLjI2LjIKPiAKPiBfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwo+IGlndC1kZXYgbWFpbGluZyBsaXN0Cj4gaWd0LWRldkBs aXN0cy5mcmVlZGVza3RvcC5vcmcKPiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWls bWFuL2xpc3RpbmZvL2lndC1kZXYKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCmlndC1kZXYgbWFpbGluZyBsaXN0CmlndC1kZXZAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaWd0 LWRldgo=