From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: Re: [PATCH 3/3] tools & docs: add L2 CAT support in tools and docs. Date: Fri, 30 Sep 2016 17:29:58 -0400 Message-ID: <20160930212958.GE5382@char.us.oracle.com> References: <1472102565-7237-1-git-send-email-yi.y.sun@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bq5Og-0003p2-KJ for xen-devel@lists.xenproject.org; Fri, 30 Sep 2016 21:31:10 +0000 Content-Disposition: inline In-Reply-To: <1472102565-7237-1-git-send-email-yi.y.sun@linux.intel.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Yi Sun Cc: wei.liu2@citrix.com, he.chen@linux.intel.com, andrew.cooper3@citrix.com, ian.jackson@eu.citrix.com, jbeulich@suse.com, chao.p.peng@linux.intel.com, xen-devel@lists.xenproject.org List-Id: xen-devel@lists.xenproject.org T24gVGh1LCBBdWcgMjUsIDIwMTYgYXQgMDE6MjI6NDVQTSArMDgwMCwgWWkgU3VuIHdyb3RlOgo+ IFRoaXMgcGF0Y2ggaXMgdGhlIHhsL3hjIGNoYW5nZXMgdG8gc3VwcG9ydCBJbnRlbCBMMiBDQVQK PiAoQ2FjaGUgQWxsb2NhdGlvbiBUZWNobm9sb2d5KS4KPiAKPiBUaGUgbmV3IGxldmVsIG9wdGlv biBpcyBpbnRyb2R1Y2VkIHRvIG9yaWdpbmFsIENBVCBzZXR0aW5nCj4gY29tbWFuZCBpbiBvcmRl ciB0byBzZXQgQ0JNIGZvciBzcGVjaWZpZWQgbGV2ZWwgQ0FULgo+IC0gJ3hsIHBzci1od2luZm8n IGlzIHVwZGF0ZWQgdG8gc2hvdyBib3RoIEwzIENBVCBhbmQgTDIgQ0FUCj4gICBpbmZvLgo+IC0g J3hsIHBzci1jYXQtY2JtLXNldCcgaXMgdXBkYXRlZCB0byBzZXQgY2FjaGUgY2FwYWNpdHkKPiAg IGJpdG1hc2tzKENCTSkgZm9yIGEgZG9tYWluIGFjY29yZGluZyB0byBpbnB1dCBjYWNoZSBsZXZl bC4KPiAtICd4bCBwc3ItY2F0LXNob3cnIGlzIHVwZGF0ZWQgdG8gc2hvdyBDQk0gb2YgYSBkb21h aW4KPiAgIGFjY29yZGluZyB0byBpbnB1dCBjYWNoZSBsZXZlbC4KPiAKPiBFeGFtcGxlczoKPiBy b290QDp+JCB4bCBwc3ItaHdpbmZvIC0tY2F0Cj4gQ2FjaGUgQWxsb2NhdGlvbiBUZWNobm9sb2d5 IChDQVQpOiBMMgo+IFNvY2tldCBJRCAgICAgICA6IDAKPiBNYXhpbXVtIENPUyAgICAgOiAzCj4g Q0JNIGxlbmd0aCAgICAgIDogOAo+IERlZmF1bHQgQ0JNICAgICA6IDB4ZmYKPiAKPiByb290QDp+ JCB4bCBwc3ItY2F0LWNibS1zZXQgLWwyIDEgMHg3Zgo+IAo+IHJvb3RAOn4kIHhsIHBzci1jYXQt c2hvdyAtbDIgMQo+IFNvY2tldCBJRCAgICAgICA6IDAKPiBEZWZhdWx0IENCTSAgICAgOiAweGZm Cj4gICAgSUQgICAgICAgICAgICAgICAgICAgICBOQU1FICAgICAgICAgICAgIENCTQo+ICAgICAx ICAgICAgICAgICAgICAgICB1YnVudHUxNCAgICAgICAgICAgIDB4N2YKPiAKPiBTaWduZWQtb2Zm LWJ5OiBIZSBDaGVuIDxoZS5jaGVuQGxpbnV4LmludGVsLmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBZ aSBTdW4gPHlpLnkuc3VuQGxpbnV4LmludGVsLmNvbT4KPiAtLS0KPiAgZG9jcy9tYW4veGwucG9k LjEuaW4gICAgICAgICAgfCAgMjUgKysrKystCj4gIGRvY3MvbWlzYy94bC1wc3IubWFya2Rvd24g ICAgIHwgIDEwICsrLQo+ICB0b29scy9saWJ4Yy9pbmNsdWRlL3hlbmN0cmwuaCB8ICAgNyArLQo+ ICB0b29scy9saWJ4Yy94Y19wc3IuYyAgICAgICAgICB8ICAyOCArKysrKy0tCj4gIHRvb2xzL2xp YnhsL2xpYnhsLmggICAgICAgICAgIHwgICAyICsKPiAgdG9vbHMvbGlieGwvbGlieGxfcHNyLmMg ICAgICAgfCAgNTAgKysrKysrKysrKy0KPiAgdG9vbHMvbGlieGwvbGlieGxfdHlwZXMuaWRsICAg fCAgIDEgKwo+ICB0b29scy9saWJ4bC94bF9jbWRpbXBsLmMgICAgICB8IDE5MSArKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0KPiAgdG9vbHMvbGlieGwveGxfY21kdGFi bGUuYyAgICAgfCAgIDQgKy0KPiAgOSBmaWxlcyBjaGFuZ2VkLCAyNjggaW5zZXJ0aW9ucygrKSwg NTAgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RvY3MvbWFuL3hsLnBvZC4xLmluIGIv ZG9jcy9tYW4veGwucG9kLjEuaW4KPiBpbmRleCAxYWRmMzIyLi40N2JkZmM2IDEwMDY0NAo+IC0t LSBhL2RvY3MvbWFuL3hsLnBvZC4xLmluCj4gKysrIGIvZG9jcy9tYW4veGwucG9kLjEuaW4KPiBA QCAtMTY2MCw2ICsxNjYwLDkgQEAgb2NjdXBhbmN5IG1vbml0b3Jpbmcgc2hhcmUgdGhlIHNhbWUg c2V0IG9mIHVuZGVybHlpbmcgbW9uaXRvcmluZyBzZXJ2aWNlLiBPbmNlCj4gIGEgZG9tYWluIGlz IGF0dGFjaGVkIHRvIHRoZSBtb25pdG9yaW5nIHNlcnZpY2UsIG1vbml0b3JpbmcgZGF0YSBjYW4g YmUgc2hvd24KPiAgZm9yIGFueSBvZiB0aGVzZSBtb25pdG9yaW5nIHR5cGVzLgo+ICAKPiArVGhl cmUgaXMgbm8gY2FjaGUgbW9uaXRvcmluZyBhbmQgbWVtb3J5IGJhbmR3aWR0aCBtb25pdG9yaW5n IG9uIEwyIGNhY2hlIHNvCj4gK2Zhci4KPiArCj4gID1vdmVyIDQKPiAgCj4gID1pdGVtIEI8cHNy LWNtdC1hdHRhY2g+IFtJPGRvbWFpbi1pZD5dCj4gQEAgLTE2ODQsNyArMTY4Nyw3IEBAIG1vbml0 b3IgdHlwZXMgYXJlOgo+ICAKPiAgSW50ZWwgQnJvYWR3ZWxsIGFuZCBsYXRlciBzZXJ2ZXIgcGxh dGZvcm1zIG9mZmVyIGNhcGFiaWxpdGllcyB0byBjb25maWd1cmUgYW5kCj4gIG1ha2UgdXNlIG9m IHRoZSBDYWNoZSBBbGxvY2F0aW9uIFRlY2hub2xvZ3kgKENBVCkgbWVjaGFuaXNtcywgd2hpY2gg ZW5hYmxlIG1vcmUKPiAtY2FjaGUgcmVzb3VyY2VzIChpLmUuIEwzIGNhY2hlKSB0byBiZSBtYWRl IGF2YWlsYWJsZSBmb3IgaGlnaCBwcmlvcml0eQo+ICtjYWNoZSByZXNvdXJjZXMgKGkuZS4gTDMv TDIgY2FjaGUpIHRvIGJlIG1hZGUgYXZhaWxhYmxlIGZvciBoaWdoIHByaW9yaXR5Cj4gIGFwcGxp Y2F0aW9ucy4gSW4gdGhlIFhlbiBpbXBsZW1lbnRhdGlvbiwgQ0FUIGlzIHVzZWQgdG8gY29udHJv bCBjYWNoZSBhbGxvY2F0aW9uCj4gIG9uIFZNIGJhc2lzLiBUbyBlbmZvcmNlIGNhY2hlIG9uIGEg c3BlY2lmaWMgZG9tYWluLCBqdXN0IHNldCBjYXBhY2l0eSBiaXRtYXNrcwo+ICAoQ0JNKSBmb3Ig dGhlIGRvbWFpbi4KPiBAQCAtMTY5NCw3ICsxNjk3LDcgQEAgSW50ZWwgQnJvYWR3ZWxsIGFuZCBs YXRlciBzZXJ2ZXIgcGxhdGZvcm1zIGFsc28gb2ZmZXIgQ29kZS9EYXRhIFByaW9yaXRpemF0aW9u Cj4gIGFwcGxpY2F0aW9ucy4gQ0RQIGlzIHVzZWQgb24gYSBwZXIgVk0gYmFzaXMgaW4gdGhlIFhl biBpbXBsZW1lbnRhdGlvbi4gVG8KPiAgc3BlY2lmeSBjb2RlIG9yIGRhdGEgQ0JNIGZvciB0aGUg ZG9tYWluLCBDRFAgZmVhdHVyZSBtdXN0IGJlIGVuYWJsZWQgYW5kIENCTQo+ICB0eXBlIG9wdGlv bnMgbmVlZCB0byBiZSBzcGVjaWZpZWQgd2hlbiBzZXR0aW5nIENCTSwgYW5kIHRoZSB0eXBlIG9w dGlvbnMgKGNvZGUKPiAtYW5kIGRhdGEpIGFyZSBtdXR1YWxseSBleGNsdXNpdmUuCj4gK2FuZCBk YXRhKSBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlLiBUaGVyZSBpcyBubyBDRFAgc3VwcG9ydCBvbiBM MiBzbyBmYXIuCj4gIAo+ICA9b3ZlciA0Cj4gIAo+IEBAIC0xNzExLDYgKzE3MTQsMTEgQEAgQjxP UFRJT05TPgo+ICAKPiAgU3BlY2lmeSB0aGUgc29ja2V0IHRvIHByb2Nlc3MsIG90aGVyd2lzZSBh bGwgc29ja2V0cyBhcmUgcHJvY2Vzc2VkLgo+ICAKPiArPWl0ZW0gQjwtbCBMRVZFTD4sIEI8LS1s ZXZlbD1MRVZFTD4KPiArCj4gK1NwZWNpZnkgdGhlIGNhY2hlIGxldmVsIHRvIHByb2Nlc3MsIG90 aGVyd2lzZSB0aGUgbGFzdCBsZXZlbCBjYWNoZSBpcwoKcy9sYXN0IGxldmVsIGNhY2hlL2xhc3Qg bGV2ZWwgY2FjaGUgKEwzKS8KCkJlY2F1c2UgeW91IG1heSBoYXZlIEw0IGF0IHNvbWUgcG9pbnQg KHdlcmVuJ3QgdGhlcmUgc29tZSBDUFVzIHdpdGggTDQ/KQoKPiArcHJvY2Vzc2VkLgo+ICsKPiAg PWl0ZW0gQjwtYz4sIEI8LS1jb2RlPgo+ICAKPiAgU2V0IGNvZGUgQ0JNIHdoZW4gQ0RQIGlzIGVu YWJsZWQuCj4gQEAgLTE3MjEsMTAgKzE3MjksMjEgQEAgU2V0IGRhdGEgQ0JNIHdoZW4gQ0RQIGlz IGVuYWJsZWQuCj4gIAo+ICA9YmFjawo+ICAKPiAtPWl0ZW0gQjxwc3ItY2F0LXNob3c+IFtJPGRv bWFpbi1pZD5dCj4gKz1pdGVtIEI8cHNyLWNhdC1zaG93PiBbSTxPUFRJT05TPl0gW0k8ZG9tYWlu LWlkPl0KPiAgCj4gIFNob3cgQ0FUIHNldHRpbmdzIGZvciBhIGNlcnRhaW4gZG9tYWluIG9yIGFs bCBkb21haW5zLgo+ICAKPiArQjxPUFRJT05TPgo+ICsKPiArPW92ZXIgNAo+ICsKPiArPWl0ZW0g QjwtbCBMRVZFTD4sIEI8LS1sZXZlbD1MRVZFTD4KPiArCj4gK1NwZWNpZnkgdGhlIGNhY2hlIGxl dmVsIHRvIHByb2Nlc3MsIG90aGVyd2lzZSB0aGUgbGFzdCBsZXZlbCBjYWNoZSBpcwoKQWdhaW4s IHMvbGFzdCBsZXZlbC9sYXN0IGxldmVsIChMMykvLwo+ICtwcm9jZXNzZWQuCj4gKwo+ICs9YmFj awo+ICsKPiAgPWJhY2sKPiAgCj4gID1oZWFkMSBJR05PUkVEIEZPUiBDT01QQVRJQklMSVRZIFdJ VEggWE0KPiBkaWZmIC0tZ2l0IGEvZG9jcy9taXNjL3hsLXBzci5tYXJrZG93biBiL2RvY3MvbWlz Yy94bC1wc3IubWFya2Rvd24KPiBpbmRleCBjM2MxZThlLi5iZDJiNmJkIDEwMDY0NAo+IC0tLSBh L2RvY3MvbWlzYy94bC1wc3IubWFya2Rvd24KPiArKysgYi9kb2NzL21pc2MveGwtcHNyLm1hcmtk b3duCj4gQEAgLTcwLDcgKzcwLDcgQEAgdG90YWwtbWVtLWJhbmR3aWR0aCBpbnN0ZWFkIG9mIGNh Y2hlLW9jY3VwYW5jeSkuIEUuZy4gYWZ0ZXIgYSBgeGwgcHNyLWNtdC1hdHRhY2gKPiAgCj4gIENh Y2hlIEFsbG9jYXRpb24gVGVjaG5vbG9neSAoQ0FUKSBpcyBhIG5ldyBmZWF0dXJlIGF2YWlsYWJs ZSBvbiBJbnRlbAo+ICBCcm9hZHdlbGwgYW5kIGxhdGVyIHNlcnZlciBwbGF0Zm9ybXMgdGhhdCBh bGxvd3MgYW4gT1Mgb3IgSHlwZXJ2aXNvci9WTU0gdG8KPiAtcGFydGl0aW9uIGNhY2hlIGFsbG9j YXRpb24gKGkuZS4gTDMgY2FjaGUpIGJhc2VkIG9uIGFwcGxpY2F0aW9uIHByaW9yaXR5IG9yCj4g K3BhcnRpdGlvbiBjYWNoZSBhbGxvY2F0aW9uIChpLmUuIEwzL0wyIGNhY2hlKSBiYXNlZCBvbiBh cHBsaWNhdGlvbiBwcmlvcml0eSBvcgo+ICBDbGFzcyBvZiBTZXJ2aWNlIChDT1MpLiBFYWNoIENP UyBpcyBjb25maWd1cmVkIHVzaW5nIGNhcGFjaXR5IGJpdG1hc2tzIChDQk0pCj4gIHdoaWNoIHJl cHJlc2VudCBjYWNoZSBjYXBhY2l0eSBhbmQgaW5kaWNhdGUgdGhlIGRlZ3JlZSBvZiBvdmVybGFw IGFuZAo+ICBpc29sYXRpb24gYmV0d2VlbiBjbGFzc2VzLiBTeXN0ZW0gY2FjaGUgcmVzb3VyY2Ug aXMgZGl2aWRlZCBpbnRvIG51bWJlcnMgb2YKPiBAQCAtMTE5LDEzICsxMTksMTkgQEAgQSBjYm0g aXMgdmFsaWQgb25seSB3aGVuOgo+ICBJbiBhIG11bHRpLXNvY2tldCBzeXN0ZW0sIHRoZSBzYW1l IGNibSB3aWxsIGJlIHNldCBvbiBlYWNoIHNvY2tldCBieSBkZWZhdWx0Lgo+ICBQZXIgc29ja2V0 IGNibSBjYW4gYmUgc3BlY2lmaWVkIHdpdGggdGhlIGAtLXNvY2tldCBTT0NLRVRgIG9wdGlvbi4K PiAgCj4gK0luIGRpZmZlcmVudCBzeXN0ZW1zLCB0aGUgZGlmZmVyZW50IGNhY2hlIGxldmVsIGlz IHN1cHBvcnRlZCwgZS5nLiBMMyBjYWNoZSBvcgo+ICtMMiBjYWNoZS4gUGVyIGNhY2hlIGxldmVs IGNibSBjYW4gYmUgc3BlY2lmaWVkIHdpdGggdGhlIGAtLWxldmVsIExFVkVMYCBvcHRpb24uCj4g Kwo+ICBTZXR0aW5nIHRoZSBDQk0gbWF5IG5vdCBiZSBzdWNjZXNzZnVsIGlmIGluc3VmZmljaWVu dCBDT1MgaXMgYXZhaWxhYmxlLiBJbgo+ICBzdWNoIGNhc2UgdW51c2VkIENPUyhlcykgbWF5IGJl IGZyZWVkIGJ5IHNldHRpbmcgQ0JNIG9mIGFsbCByZWxhdGVkIGRvbWFpbnMgdG8KPiAgaXRzIGRl ZmF1bHQgdmFsdWUoYWxsLW9uZXMpLgo+ICAKPiAgUGVyIGRvbWFpbiBDQk0gc2V0dGluZ3MgY2Fu IGJlIHNob3duIGJ5Ogo+ICAKPiAtYHhsIHBzci1jYXQtc2hvd2AKPiArYHhsIHBzci1jYXQtc2hv dyBbT1BUSU9OU10gPGRvbWlkPmAKPiArCj4gK0luIGRpZmZlcmVudCBzeXN0ZW1zLCB0aGUgZGlm ZmVyZW50IGNhY2hlIGxldmVsIGlzIHN1cHBvcnRlZCwgZS5nLiBMMyBjYWNoZSBvcgo+ICtMMiBj YWNoZS4gUGVyIGNhY2hlIGxldmVsIGNibSBjYW4gYmUgc3BlY2lmaWVkIHdpdGggdGhlIGAtLWxl dmVsIExFVkVMYCBvcHRpb24uCj4gIAo+ICAjIyBDb2RlIGFuZCBEYXRhIFByaW9yaXRpemF0aW9u IChDRFApCj4gIAo+IGRpZmYgLS1naXQgYS90b29scy9saWJ4Yy9pbmNsdWRlL3hlbmN0cmwuaCBi L3Rvb2xzL2xpYnhjL2luY2x1ZGUveGVuY3RybC5oCj4gaW5kZXggNTYwY2U3Yi4uZDcwZThhOCAx MDA2NDQKPiAtLS0gYS90b29scy9saWJ4Yy9pbmNsdWRlL3hlbmN0cmwuaAo+ICsrKyBiL3Rvb2xz L2xpYnhjL2luY2x1ZGUveGVuY3RybC5oCj4gQEAgLTI1ODUsNiArMjU4NSw3IEBAIGVudW0geGNf cHNyX2NhdF90eXBlIHsKPiAgICAgIFhDX1BTUl9DQVRfTDNfQ0JNICAgICAgPSAxLAo+ICAgICAg WENfUFNSX0NBVF9MM19DQk1fQ09ERSA9IDIsCj4gICAgICBYQ19QU1JfQ0FUX0wzX0NCTV9EQVRB ID0gMywKPiArICAgIFhDX1BTUl9DQVRfTDJfQ0JNICAgICAgPSA0LAo+ICB9Owo+ICB0eXBlZGVm IGVudW0geGNfcHNyX2NhdF90eXBlIHhjX3Bzcl9jYXRfdHlwZTsKPiAgCj4gQEAgLTI2MDksOSAr MjYxMCw5IEBAIGludCB4Y19wc3JfY2F0X3NldF9kb21haW5fZGF0YSh4Y19pbnRlcmZhY2UgKnhj aCwgdWludDMyX3QgZG9taWQsCj4gIGludCB4Y19wc3JfY2F0X2dldF9kb21haW5fZGF0YSh4Y19p bnRlcmZhY2UgKnhjaCwgdWludDMyX3QgZG9taWQsCj4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB4Y19wc3JfY2F0X3R5cGUgdHlwZSwgdWludDMyX3QgdGFyZ2V0LAo+ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdWludDY0X3QgKmRhdGEpOwo+IC1pbnQgeGNfcHNyX2Nh dF9nZXRfbDNfaW5mbyh4Y19pbnRlcmZhY2UgKnhjaCwgdWludDMyX3Qgc29ja2V0LAo+IC0gICAg ICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCAqY29zX21heCwgdWludDMyX3QgKmNibV9s ZW4sCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgKmNkcF9lbmFibGVkKTsKPiAr aW50IHhjX3Bzcl9jYXRfZ2V0X2luZm8oeGNfaW50ZXJmYWNlICp4Y2gsIHVpbnQzMl90IHNvY2tl dCwgaW50IGx2bCwKPiArICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgKmNvc19tYXgs IHVpbnQzMl90ICpjYm1fbGVuLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICBib29sICpjZHBf ZW5hYmxlZCk7Cj4gIAo+ICBpbnQgeGNfZ2V0X2NwdV9sZXZlbGxpbmdfY2Fwcyh4Y19pbnRlcmZh Y2UgKnhjaCwgdWludDMyX3QgKmNhcHMpOwo+ICBpbnQgeGNfZ2V0X2NwdV9mZWF0dXJlc2V0KHhj X2ludGVyZmFjZSAqeGNoLCB1aW50MzJfdCBpbmRleCwKPiBkaWZmIC0tZ2l0IGEvdG9vbHMvbGli eGMveGNfcHNyLmMgYi90b29scy9saWJ4Yy94Y19wc3IuYwo+IGluZGV4IDQzYjMyODYuLjYxOGRi Y2MgMTAwNjQ0Cj4gLS0tIGEvdG9vbHMvbGlieGMveGNfcHNyLmMKPiArKysgYi90b29scy9saWJ4 Yy94Y19wc3IuYwo+IEBAIC0yNjYsNiArMjY2LDkgQEAgaW50IHhjX3Bzcl9jYXRfc2V0X2RvbWFp bl9kYXRhKHhjX2ludGVyZmFjZSAqeGNoLCB1aW50MzJfdCBkb21pZCwKPiAgICAgIGNhc2UgWENf UFNSX0NBVF9MM19DQk1fREFUQToKPiAgICAgICAgICBjbWQgPSBYRU5fRE9NQ1RMX1BTUl9DQVRf T1BfU0VUX0wzX0RBVEE7Cj4gICAgICAgICAgYnJlYWs7Cj4gKyAgICBjYXNlIFhDX1BTUl9DQVRf TDJfQ0JNOgo+ICsgICAgICAgIGNtZCA9IFhFTl9ET01DVExfUFNSX0NBVF9PUF9TRVRfTDJfQ0JN Owo+ICsgICAgICAgIGJyZWFrOwo+ICAgICAgZGVmYXVsdDoKPiAgICAgICAgICBlcnJubyA9IEVJ TlZBTDsKPiAgICAgICAgICByZXR1cm4gLTE7Cj4gQEAgLTI5OSw2ICszMDIsOSBAQCBpbnQgeGNf cHNyX2NhdF9nZXRfZG9tYWluX2RhdGEoeGNfaW50ZXJmYWNlICp4Y2gsIHVpbnQzMl90IGRvbWlk LAo+ICAgICAgY2FzZSBYQ19QU1JfQ0FUX0wzX0NCTV9EQVRBOgo+ICAgICAgICAgIGNtZCA9IFhF Tl9ET01DVExfUFNSX0NBVF9PUF9HRVRfTDNfREFUQTsKPiAgICAgICAgICBicmVhazsKPiArICAg IGNhc2UgWENfUFNSX0NBVF9MMl9DQk06Cj4gKyAgICAgICAgY21kID0gWEVOX0RPTUNUTF9QU1Jf Q0FUX09QX0dFVF9MMl9DQk07Cj4gKyAgICAgICAgYnJlYWs7Cj4gICAgICBkZWZhdWx0Ogo+ICAg ICAgICAgIGVycm5vID0gRUlOVkFMOwo+ICAgICAgICAgIHJldHVybiAtMTsKPiBAQCAtMzE3LDIz ICszMjMsMjkgQEAgaW50IHhjX3Bzcl9jYXRfZ2V0X2RvbWFpbl9kYXRhKHhjX2ludGVyZmFjZSAq eGNoLCB1aW50MzJfdCBkb21pZCwKPiAgICAgIHJldHVybiByYzsKPiAgfQo+ICAKPiAtaW50IHhj X3Bzcl9jYXRfZ2V0X2wzX2luZm8oeGNfaW50ZXJmYWNlICp4Y2gsIHVpbnQzMl90IHNvY2tldCwK PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgKmNvc19tYXgsIHVpbnQzMl90 ICpjYm1fbGVuLAo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICBib29sICpjZHBfZW5hYmxl ZCkKPiAraW50IHhjX3Bzcl9jYXRfZ2V0X2luZm8oeGNfaW50ZXJmYWNlICp4Y2gsIHVpbnQzMl90 IHNvY2tldCwgaW50IGx2bCwKPiArICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgKmNv c19tYXgsIHVpbnQzMl90ICpjYm1fbGVuLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICBib29s ICpjZHBfZW5hYmxlZCkKPiAgewo+IC0gICAgaW50IHJjOwo+ICsgICAgaW50IHJjID0gLTE7Cj4g ICAgICBERUNMQVJFX1NZU0NUTDsKPiAgCj4gKyAgICBpZiAoIGx2bCA9PSAyICkKPiArICAgICAg ICBzeXNjdGwudS5wc3JfY2F0X29wLmNtZCA9IFhFTl9TWVNDVExfUFNSX0NBVF9nZXRfbDJfaW5m bzsKPiArICAgIGVsc2UgaWYgKCBsdmwgPT0gMyApCj4gKyAgICAgICAgc3lzY3RsLnUucHNyX2Nh dF9vcC5jbWQgPSBYRU5fU1lTQ1RMX1BTUl9DQVRfZ2V0X2wzX2luZm87Cj4gKyAgICBlbHNlCj4g KyAgICAgICAgcmV0dXJuIHJjOwoKUGVyaGFwczoKCmVsc2UgewoJZXJybm8gPSBFT1BOT1RTVVBQ OwoJcmV0dXJuIHJjOwp9Cgo/Cgo+ICsKPiAgICAgIHN5c2N0bC5jbWQgPSBYRU5fU1lTQ1RMX3Bz cl9jYXRfb3A7Cj4gLSAgICBzeXNjdGwudS5wc3JfY2F0X29wLmNtZCA9IFhFTl9TWVNDVExfUFNS X0NBVF9nZXRfbDNfaW5mbzsKPiAgICAgIHN5c2N0bC51LnBzcl9jYXRfb3AudGFyZ2V0ID0gc29j a2V0Owo+ICAKPiAgICAgIHJjID0geGNfc3lzY3RsKHhjaCwgJnN5c2N0bCk7Cj4gICAgICBpZiAo ICFyYyApCj4gICAgICB7Cj4gLSAgICAgICAgKmNvc19tYXggPSBzeXNjdGwudS5wc3JfY2F0X29w LnUubDNfaW5mby5jb3NfbWF4Owo+IC0gICAgICAgICpjYm1fbGVuID0gc3lzY3RsLnUucHNyX2Nh dF9vcC51LmwzX2luZm8uY2JtX2xlbjsKPiAtICAgICAgICAqY2RwX2VuYWJsZWQgPSBzeXNjdGwu dS5wc3JfY2F0X29wLnUubDNfaW5mby5mbGFncyAmCj4gKyAgICAgICAgKmNvc19tYXggPSBzeXNj dGwudS5wc3JfY2F0X29wLnUuaW5mby5jb3NfbWF4Owo+ICsgICAgICAgICpjYm1fbGVuID0gc3lz Y3RsLnUucHNyX2NhdF9vcC51LmluZm8uY2JtX2xlbjsKPiArICAgICAgICAqY2RwX2VuYWJsZWQg PSBzeXNjdGwudS5wc3JfY2F0X29wLnUuaW5mby5mbGFncyAmCj4gICAgICAgICAgICAgICAgICAg ICAgICAgWEVOX1NZU0NUTF9QU1JfQ0FUX0wzX0NEUDsKPiAgICAgIH0KPiAgCj4gZGlmZiAtLWdp dCBhL3Rvb2xzL2xpYnhsL2xpYnhsLmggYi90b29scy9saWJ4bC9saWJ4bC5oCj4gaW5kZXggZTRj MjVjNC4uMWNkZjYyMSAxMDA2NDQKPiAtLS0gYS90b29scy9saWJ4bC9saWJ4bC5oCj4gKysrIGIv dG9vbHMvbGlieGwvbGlieGwuaAo+IEBAIC0yMTQxLDYgKzIxNDEsOCBAQCBpbnQgbGlieGxfcHNy X2NhdF9nZXRfY2JtKGxpYnhsX2N0eCAqY3R4LCB1aW50MzJfdCBkb21pZCwKPiAgICovCj4gIGlu dCBsaWJ4bF9wc3JfY2F0X2dldF9sM19pbmZvKGxpYnhsX2N0eCAqY3R4LCBsaWJ4bF9wc3JfY2F0 X2luZm8gKippbmZvLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKm5yKTsK PiAraW50IGxpYnhsX3Bzcl9jYXRfZ2V0X2luZm8obGlieGxfY3R4ICpjdHgsIGxpYnhsX3Bzcl9j YXRfaW5mbyAqKmluZm8sCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqbnIsIGlu dCBsdmwpOwo+ICB2b2lkIGxpYnhsX3Bzcl9jYXRfaW5mb19saXN0X2ZyZWUobGlieGxfcHNyX2Nh dF9pbmZvICpsaXN0LCBpbnQgbnIpOwo+ICAjZW5kaWYKPiAgCj4gZGlmZiAtLWdpdCBhL3Rvb2xz L2xpYnhsL2xpYnhsX3Bzci5jIGIvdG9vbHMvbGlieGwvbGlieGxfcHNyLmMKPiBpbmRleCA5OTcz M2Y2Li44NjFkNWE4IDEwMDY0NAo+IC0tLSBhL3Rvb2xzL2xpYnhsL2xpYnhsX3Bzci5jCj4gKysr IGIvdG9vbHMvbGlieGwvbGlieGxfcHNyLmMKPiBAQCAtMzc5LDggKzM3OSw1NCBAQCBpbnQgbGli eGxfcHNyX2NhdF9nZXRfbDNfaW5mbyhsaWJ4bF9jdHggKmN0eCwgbGlieGxfcHNyX2NhdF9pbmZv ICoqaW5mbywKPiAgCj4gICAgICBsaWJ4bF9mb3JfZWFjaF9zZXRfYml0KHNvY2tldGlkLCBzb2Nr ZXRtYXApIHsKPiAgICAgICAgICBwdHJbaV0uaWQgPSBzb2NrZXRpZDsKPiAtICAgICAgICBpZiAo eGNfcHNyX2NhdF9nZXRfbDNfaW5mbyhjdHgtPnhjaCwgc29ja2V0aWQsICZwdHJbaV0uY29zX21h eCwKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcHRyW2ldLmNibV9sZW4s ICZwdHJbaV0uY2RwX2VuYWJsZWQpKSB7Cj4gKyAgICAgICAgaWYgKHhjX3Bzcl9jYXRfZ2V0X2lu Zm8oY3R4LT54Y2gsIHNvY2tldGlkLCAzLCAmcHRyW2ldLmNvc19tYXgsCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJnB0cltpXS5jYm1fbGVuLCAmcHRyW2ldLmNkcF9lbmFibGVk KSkgewo+ICsgICAgICAgICAgICBsaWJ4bF9fcHNyX2NhdF9sb2dfZXJyX21zZyhnYywgZXJybm8p Owo+ICsgICAgICAgICAgICByYyA9IEVSUk9SX0ZBSUw7Cj4gKyAgICAgICAgICAgIGZyZWUocHRy KTsKPiArICAgICAgICAgICAgZ290byBvdXQ7Cj4gKyAgICAgICAgfQo+ICsgICAgICAgIGkrKzsK PiArICAgIH0KPiArCj4gKyAgICAqaW5mbyA9IHB0cjsKPiArICAgICpuciA9IGk7Cj4gK291dDoK PiArICAgIGxpYnhsX2JpdG1hcF9kaXNwb3NlKCZzb2NrZXRtYXApOwo+ICsgICAgR0NfRlJFRTsK PiArICAgIHJldHVybiByYzsKPiArfQo+ICsKPiAraW50IGxpYnhsX3Bzcl9jYXRfZ2V0X2luZm8o bGlieGxfY3R4ICpjdHgsIGxpYnhsX3Bzcl9jYXRfaW5mbyAqKmluZm8sCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgIGludCAqbnIsIGludCBsdmwpCj4gK3sKPiArICAgIEdDX0lOSVQoY3R4 KTsKPiArICAgIGludCByYzsKPiArICAgIGludCBpID0gMCwgc29ja2V0aWQsIG5yX3NvY2tldHM7 Cj4gKyAgICBsaWJ4bF9iaXRtYXAgc29ja2V0bWFwOwo+ICsgICAgbGlieGxfcHNyX2NhdF9pbmZv ICpwdHI7Cj4gKwo+ICsgICAgbGlieGxfYml0bWFwX2luaXQoJnNvY2tldG1hcCk7Cj4gKwo+ICsg ICAgcmMgPSBsaWJ4bF9fY291bnRfcGh5c2ljYWxfc29ja2V0cyhnYywgJm5yX3NvY2tldHMpOwo+ ICsgICAgaWYgKHJjKSB7Cj4gKyAgICAgICAgTE9HRShFUlJPUiwgImZhaWxlZCB0byBnZXQgc3lz dGVtIHNvY2tldCBjb3VudCIpOwo+ICsgICAgICAgIGdvdG8gb3V0Owo+ICsgICAgfQo+ICsKPiAr ICAgIGxpYnhsX3NvY2tldF9iaXRtYXBfYWxsb2MoY3R4LCAmc29ja2V0bWFwLCBucl9zb2NrZXRz KTsKPiArICAgIHJjID0gbGlieGxfZ2V0X29ubGluZV9zb2NrZXRtYXAoY3R4LCAmc29ja2V0bWFw KTsKPiArICAgIGlmIChyYyA8IDApIHsKPiArICAgICAgICBMT0dFKEVSUk9SLCAiZmFpbGVkIHRv IGdldCBhdmFpbGFibGUgc29ja2V0cyIpOwo+ICsgICAgICAgIGdvdG8gb3V0Owo+ICsgICAgfQo+ ICsKPiArICAgIHB0ciA9IGxpYnhsX19tYWxsb2MoTk9HQywgbnJfc29ja2V0cyAqIHNpemVvZihs aWJ4bF9wc3JfY2F0X2luZm8pKTsKPiArCj4gKyAgICBsaWJ4bF9mb3JfZWFjaF9zZXRfYml0KHNv Y2tldGlkLCBzb2NrZXRtYXApIHsKPiArICAgICAgICBwdHJbaV0uaWQgPSBzb2NrZXRpZDsKPiAr ICAgICAgICBpZiAoeGNfcHNyX2NhdF9nZXRfaW5mbyhjdHgtPnhjaCwgc29ja2V0aWQsIGx2bCwg JnB0cltpXS5jb3NfbWF4LAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZwdHJb aV0uY2JtX2xlbiwgJnB0cltpXS5jZHBfZW5hYmxlZCkpIHsKClRoaXMgZnVuY3Rpb24gbG9va3Mg dmVyeSBjbG9zZSB0byAgbGlieGxfcHNyX2NhdF9nZXRfbDNfaW5mby4gQW55IGNoYW5jZQp0aGF0 IHlvdSBjYW4gb25lIGZ1bmN0aW9uIGRvaW5nIGl0PwoKPiAgICAgICAgICAgICAgbGlieGxfX3Bz cl9jYXRfbG9nX2Vycl9tc2coZ2MsIGVycm5vKTsKPiAgICAgICAgICAgICAgcmMgPSBFUlJPUl9G QUlMOwo+ICAgICAgICAgICAgICBmcmVlKHB0cik7Cj4gZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhs L2xpYnhsX3R5cGVzLmlkbCBiL3Rvb2xzL2xpYnhsL2xpYnhsX3R5cGVzLmlkbAo+IGluZGV4IDk4 YmZjM2EuLjQ1MDNhOGIgMTAwNjQ0Cj4gLS0tIGEvdG9vbHMvbGlieGwvbGlieGxfdHlwZXMuaWRs Cj4gKysrIGIvdG9vbHMvbGlieGwvbGlieGxfdHlwZXMuaWRsCj4gQEAgLTg5MCw2ICs4OTAsNyBA QCBsaWJ4bF9wc3JfY2JtX3R5cGUgPSBFbnVtZXJhdGlvbigicHNyX2NibV90eXBlIiwgWwo+ICAg ICAgKDEsICJMM19DQk0iKSwKPiAgICAgICgyLCAiTDNfQ0JNX0NPREUiKSwKPiAgICAgICgzLCAi TDNfQ0JNX0RBVEEiKSwKPiArICAgICg0LCAiTDJfQ0JNIiksCj4gICAgICBdKQo+ICAKPiAgbGli eGxfcHNyX2NhdF9pbmZvID0gU3RydWN0KCJwc3JfY2F0X2luZm8iLCBbCj4gZGlmZiAtLWdpdCBh L3Rvb2xzL2xpYnhsL3hsX2NtZGltcGwuYyBiL3Rvb2xzL2xpYnhsL3hsX2NtZGltcGwuYwo+IGlu ZGV4IDc1NDBmYjEuLjRhODNjYWYgMTAwNjQ0Cj4gLS0tIGEvdG9vbHMvbGlieGwveGxfY21kaW1w bC5jCj4gKysrIGIvdG9vbHMvbGlieGwveGxfY21kaW1wbC5jCj4gQEAgLTkyNzMsMTggKzkyNzMs MTI0IEBAIGludCBtYWluX3Bzcl9jbXRfc2hvdyhpbnQgYXJnYywgY2hhciAqKmFyZ3YpCj4gICNl bmRpZgo+ICAKPiAgI2lmZGVmIExJQlhMX0hBVkVfUFNSX0NBVAo+IC1zdGF0aWMgaW50IHBzcl9j YXRfaHdpbmZvKHZvaWQpCj4gK3N0YXRpYyB2b2lkIHBzcl9jYXRfcHJpbnRfb25lX2RvbWFpbl9j Ym1fdHlwZSh1aW50MzJfdCBkb21pZCwgdWludDMyX3Qgc29ja2V0aWQsCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9wc3JfY2JtX3R5cGUgdHlw ZSkKPiArewo+ICsgICAgdWludDY0X3QgY2JtOwo+ICsKPiArICAgIGlmICghbGlieGxfcHNyX2Nh dF9nZXRfY2JtKGN0eCwgZG9taWQsIHR5cGUsIHNvY2tldGlkLCAmY2JtKSkKPiArICAgICAgICBw cmludGYoIiUjMTYiUFJJeDY0LCBjYm0pOwo+ICsgICAgZWxzZQo+ICsgICAgICAgIHByaW50Zigi JTE2cyIsICJlcnJvciIpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IHBzcl9sMl9jYXRfaHdpbmZv KHZvaWQpCj4gK3sKPiArICAgIGludCByYzsKPiArICAgIGludCBpLCBucjsKCkhvdyBhYm91dCB1 bnNpZ25lZCBpbnQ/Cj4gKyAgICBsaWJ4bF9wc3JfY2F0X2luZm8gKmluZm87Cj4gKwo+ICsgICAg cHJpbnRmKCJDYWNoZSBBbGxvY2F0aW9uIFRlY2hub2xvZ3kgKENBVCk6IEwyXG4iKTsKPiArCj4g KyAgICByYyA9IGxpYnhsX3Bzcl9jYXRfZ2V0X2luZm8oY3R4LCAmaW5mbywgJm5yLCAyKTsKPiAr ICAgIGlmIChyYykgewo+ICsgICAgICAgIGZwcmludGYoc3RkZXJyLCAiRmFpbGVkIHRvIGdldCBs MiBjYXQgaW5mb1xuIik7Cj4gKyAgICAgICAgcmV0dXJuIHJjOwo+ICsgICAgfQo+ICsKPiArICAg IGZvciAoaSA9IDA7IGkgPCBucjsgaSsrKSB7Cj4gKyAgICAgICAgLyogVGhlcmUgaXMgbm8gQ01U IG9uIEwyIGNhY2hlIHNvIGZhci4gKi8KPiArICAgICAgICBwcmludGYoIiUtMTZzOiAldVxuIiwg IlNvY2tldCBJRCIsIGluZm9baV0uaWQpOwo+ICsgICAgICAgIHByaW50ZigiJS0xNnM6ICV1XG4i LCAiTWF4aW11bSBDT1MiLCBpbmZvW2ldLmNvc19tYXgpOwo+ICsgICAgICAgIHByaW50ZigiJS0x NnM6ICV1XG4iLCAiQ0JNIGxlbmd0aCIsIGluZm9baV0uY2JtX2xlbik7Cj4gKyAgICAgICAgcHJp bnRmKCIlLTE2czogJSNsbHhcbiIsICJEZWZhdWx0IENCTSIsCj4gKyAgICAgICAgICAgICAgICgx dWxsIDw8IGluZm9baV0uY2JtX2xlbikgLSAxKTsKPiArICAgIH0KPiArCj4gKyAgICBsaWJ4bF9w c3JfY2F0X2luZm9fbGlzdF9mcmVlKGluZm8sIG5yKTsKPiArICAgIHJldHVybiByYzsKPiArfQo+ ICsKPiArc3RhdGljIHZvaWQgcHNyX2wyX2NhdF9wcmludF9vbmVfZG9tYWluX2NibSh1aW50MzJf dCBkb21pZCwgdWludDMyX3Qgc29ja2V0aWQpCj4gK3sKPiArICAgIGNoYXIgKmRvbWFpbl9uYW1l Owo+ICsKPiArICAgIGRvbWFpbl9uYW1lID0gbGlieGxfZG9taWRfdG9fbmFtZShjdHgsIGRvbWlk KTsKPiArICAgIHByaW50ZigiJTVkJTI1cyIsIGRvbWlkLCBkb21haW5fbmFtZSk7Cj4gKyAgICBm cmVlKGRvbWFpbl9uYW1lKTsKPiArCj4gKyAgICBwc3JfY2F0X3ByaW50X29uZV9kb21haW5fY2Jt X3R5cGUoZG9taWQsIHNvY2tldGlkLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIExJQlhMX1BTUl9DQk1fVFlQRV9MMl9DQk0pOwo+ICsKPiArICAgIHByaW50ZigiXG4i KTsKPiArfQo+ICsKPiArc3RhdGljIGludCBwc3JfbDJfY2F0X3ByaW50X2RvbWFpbl9jYm0odWlu dDMyX3QgZG9taWQsIHVpbnQzMl90IHNvY2tldGlkKQo+ICt7Cj4gKyAgICBpbnQgaSwgbnJfZG9t YWluczsKCnVuc2lnbmVkIGludD8KPiArICAgIGxpYnhsX2RvbWluZm8gKmxpc3Q7Cj4gKwo+ICsg ICAgaWYgKGRvbWlkICE9IElOVkFMSURfRE9NSUQpIHsKPiArICAgICAgICBwc3JfbDJfY2F0X3By aW50X29uZV9kb21haW5fY2JtKGRvbWlkLCBzb2NrZXRpZCk7Cj4gKyAgICAgICAgcmV0dXJuIDA7 Cj4gKyAgICB9Cj4gKwo+ICsgICAgaWYgKCEobGlzdCA9IGxpYnhsX2xpc3RfZG9tYWluKGN0eCwg Jm5yX2RvbWFpbnMpKSkgewo+ICsgICAgICAgIGZwcmludGYoc3RkZXJyLCAiRmFpbGVkIHRvIGdl dCBkb21haW4gbGlzdCBmb3IgY2JtIGRpc3BsYXlcbiIpOwo+ICsgICAgICAgIHJldHVybiAtMTsK Ci0xID8gTm90IEVSUk9SX0ZBSUw/Cgo+ICsgICAgfQo+ICsKPiArICAgIGZvciAoaSA9IDA7IGkg PCBucl9kb21haW5zOyBpKyspCj4gKyAgICAgICAgcHNyX2wyX2NhdF9wcmludF9vbmVfZG9tYWlu X2NibShsaXN0W2ldLmRvbWlkLCBzb2NrZXRpZCk7Cj4gKyAgICBsaWJ4bF9kb21pbmZvX2xpc3Rf ZnJlZShsaXN0LCBucl9kb21haW5zKTsKPiArCj4gKyAgICByZXR1cm4gMDsKPiArfQo+ICsKPiAr c3RhdGljIGludCBwc3JfbDJfY2F0X3ByaW50X3NvY2tldCh1aW50MzJfdCBkb21pZCwgbGlieGxf cHNyX2NhdF9pbmZvICppbmZvKQo+ICt7Cj4gKyAgICBwcmludGYoIiUtMTZzOiAldVxuIiwgIlNv Y2tldCBJRCIsIGluZm8tPmlkKTsKPiArICAgIHByaW50ZigiJS0xNnM6ICUjbGx4XG4iLCAiRGVm YXVsdCBDQk0iLCAoMXVsbCA8PCBpbmZvLT5jYm1fbGVuKSAtIDEpOwo+ICsgICAgcHJpbnRmKCIl NXMlMjVzJTE2c1xuIiwgIklEIiwgIk5BTUUiLCAiQ0JNIik7Cj4gKwo+ICsgICAgcmV0dXJuIHBz cl9sMl9jYXRfcHJpbnRfZG9tYWluX2NibShkb21pZCwgaW5mby0+aWQpOwo+ICt9Cj4gKwo+ICtz dGF0aWMgaW50IHBzcl9sMl9jYXRfc2hvdyh1aW50MzJfdCBkb21pZCkKPiArewo+ICsgICAgaW50 IGksIG5yOwoKdW5zaWduZWQgaW50Pwo+ICsgICAgaW50IHJjOwo+ICsgICAgbGlieGxfcHNyX2Nh dF9pbmZvICppbmZvOwo+ICsKPiArICAgIHJjID0gbGlieGxfcHNyX2NhdF9nZXRfaW5mbyhjdHgs ICZpbmZvLCAmbnIsIDIpOwo+ICsgICAgaWYgKHJjKSB7Cj4gKyAgICAgICAgZnByaW50ZihzdGRl cnIsICJGYWlsZWQgdG8gZ2V0IGwyIGNhdCBpbmZvXG4iKTsKPiArICAgICAgICByZXR1cm4gcmM7 Cj4gKyAgICB9Cj4gKwo+ICsgICAgZm9yIChpID0gMDsgaSA8IG5yOyBpKyspIHsKPiArICAgICAg ICByYyA9IHBzcl9sMl9jYXRfcHJpbnRfc29ja2V0KGRvbWlkLCBpbmZvICsgaSk7Cj4gKyAgICAg ICAgaWYgKHJjKQo+ICsgICAgICAgICAgICBnb3RvIG91dDsKPiArICAgIH0KPiArCj4gK291dDoK PiArICAgIGxpYnhsX3Bzcl9jYXRfaW5mb19saXN0X2ZyZWUoaW5mbywgbnIpOwo+ICsgICAgcmV0 dXJuIHJjOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IHBzcl9sM19jYXRfaHdpbmZvKHZvaWQpCj4g IHsKPiAgICAgIGludCByYzsKPiAgICAgIGludCBpLCBucjsKPiAgICAgIHVpbnQzMl90IGwzX2Nh Y2hlX3NpemU7Cj4gICAgICBsaWJ4bF9wc3JfY2F0X2luZm8gKmluZm87Cj4gIAo+IC0gICAgcHJp bnRmKCJDYWNoZSBBbGxvY2F0aW9uIFRlY2hub2xvZ3kgKENBVCk6XG4iKTsKPiArICAgIHByaW50 ZigiQ2FjaGUgQWxsb2NhdGlvbiBUZWNobm9sb2d5IChDQVQpOiBMM1xuIik7Cj4gIAo+IC0gICAg cmMgPSBsaWJ4bF9wc3JfY2F0X2dldF9sM19pbmZvKGN0eCwgJmluZm8sICZucik7Cj4gKyAgICBy YyA9IGxpYnhsX3Bzcl9jYXRfZ2V0X2luZm8oY3R4LCAmaW5mbywgJm5yLCAzKTsKPiAgICAgIGlm IChyYykgewo+IC0gICAgICAgIGZwcmludGYoc3RkZXJyLCAiRmFpbGVkIHRvIGdldCBjYXQgaW5m b1xuIik7Cj4gKyAgICAgICAgZnByaW50ZihzdGRlcnIsICJGYWlsZWQgdG8gZ2V0IGwzIGNhdCBp bmZvXG4iKTsKPiAgICAgICAgICByZXR1cm4gcmM7Cj4gICAgICB9Cj4gIAo+IEBAIC05MzEwLDE3 ICs5NDE2LDYgQEAgb3V0Ogo+ICAgICAgcmV0dXJuIHJjOwo+ICB9Cj4gIAo+IC1zdGF0aWMgdm9p ZCBwc3JfY2F0X3ByaW50X29uZV9kb21haW5fY2JtX3R5cGUodWludDMyX3QgZG9taWQsIHVpbnQz Ml90IHNvY2tldGlkLAo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbGlieGxfcHNyX2NibV90eXBlIHR5cGUpCj4gLXsKPiAtICAgIHVpbnQ2NF90IGNibTsK PiAtCj4gLSAgICBpZiAoIWxpYnhsX3Bzcl9jYXRfZ2V0X2NibShjdHgsIGRvbWlkLCB0eXBlLCBz b2NrZXRpZCwgJmNibSkpCj4gLSAgICAgICAgcHJpbnRmKCIlIzE2IlBSSXg2NCwgY2JtKTsKPiAt ICAgIGVsc2UKPiAtICAgICAgICBwcmludGYoIiUxNnMiLCAiZXJyb3IiKTsKPiAtfQo+IC0KPiAg c3RhdGljIHZvaWQgcHNyX2NhdF9wcmludF9vbmVfZG9tYWluX2NibSh1aW50MzJfdCBkb21pZCwg dWludDMyX3Qgc29ja2V0aWQsCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgYm9vbCBjZHBfZW5hYmxlZCkKPiAgewo+IEBAIC05Mzk1LDkgKzk0OTAsOSBAQCBzdGF0 aWMgaW50IHBzcl9jYXRfc2hvdyh1aW50MzJfdCBkb21pZCkKPiAgICAgIGludCByYzsKPiAgICAg IGxpYnhsX3Bzcl9jYXRfaW5mbyAqaW5mbzsKPiAgCj4gLSAgICByYyA9IGxpYnhsX3Bzcl9jYXRf Z2V0X2wzX2luZm8oY3R4LCAmaW5mbywgJm5yKTsKPiArICAgIHJjID0gbGlieGxfcHNyX2NhdF9n ZXRfaW5mbyhjdHgsICZpbmZvLCAmbnIsIDMpOwo+ICAgICAgaWYgKHJjKSB7Cj4gLSAgICAgICAg ZnByaW50ZihzdGRlcnIsICJGYWlsZWQgdG8gZ2V0IGNhdCBpbmZvXG4iKTsKPiArICAgICAgICBm cHJpbnRmKHN0ZGVyciwgIkZhaWxlZCB0byBnZXQgbDMgY2F0IGluZm9cbiIpOwo+ICAgICAgICAg IHJldHVybiByYzsKPiAgICAgIH0KPiAgCj4gQEAgLTk0MjQsMTggKzk1MTksMjAgQEAgaW50IG1h aW5fcHNyX2NhdF9jYm1fc2V0KGludCBhcmdjLCBjaGFyICoqYXJndikKPiAgICAgIGxpYnhsX3N0 cmluZ19saXN0IHNvY2tldF9saXN0Owo+ICAgICAgdW5zaWduZWQgbG9uZyBzdGFydCwgZW5kOwo+ ICAgICAgaW50IGksIGosIGxlbjsKPiArICAgIGludCBsdmwgPSAzOwoKdW5zaWduZWQgaW50PwoK PiAgCj4gICAgICBzdGF0aWMgc3RydWN0IG9wdGlvbiBvcHRzW10gPSB7Cj4gICAgICAgICAgeyJz b2NrZXQiLCAxLCAwLCAncyd9LAo+ICAgICAgICAgIHsiZGF0YSIsIDAsIDAsICdkJ30sCj4gICAg ICAgICAgeyJjb2RlIiwgMCwgMCwgJ2MnfSwKPiArICAgICAgICB7ImxldmVsIiwgMSwgMCwgJ2wn fSwKPiAgICAgICAgICBDT01NT05fTE9OR19PUFRTCj4gICAgICB9Owo+ICAKPiAgICAgIGxpYnhs X3NvY2tldF9iaXRtYXBfYWxsb2MoY3R4LCAmdGFyZ2V0X21hcCwgMCk7Cj4gICAgICBsaWJ4bF9i aXRtYXBfc2V0X25vbmUoJnRhcmdldF9tYXApOwo+ICAKPiAtICAgIFNXSVRDSF9GT1JFQUNIX09Q VChvcHQsICJzOmNkIiwgb3B0cywgInBzci1jYXQtY2JtLXNldCIsIDIpIHsKPiArICAgIFNXSVRD SF9GT1JFQUNIX09QVChvcHQsICJzOmw6Y2QiLCBvcHRzLCAicHNyLWNhdC1jYm0tc2V0IiwgMikg ewo+ICAgICAgY2FzZSAncyc6Cj4gICAgICAgICAgdHJpbShpc3NwYWNlLCBvcHRhcmcsICZ2YWx1 ZSk7Cj4gICAgICAgICAgc3BsaXRfc3RyaW5nX2ludG9fc3RyaW5nX2xpc3QodmFsdWUsICIsIiwg JnNvY2tldF9saXN0KTsKPiBAQCAtOTQ1NSwxNyArOTU1MiwzMSBAQCBpbnQgbWFpbl9wc3JfY2F0 X2NibV9zZXQoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQo+ICAgICAgY2FzZSAnYyc6Cj4gICAgICAg ICAgb3B0X2NvZGUgPSAxOwo+ICAgICAgICAgIGJyZWFrOwo+ICsgICAgY2FzZSAnbCc6Cj4gKyAg ICAgICAgbHZsID0gYXRvaShvcHRhcmcpOwo+ICsgICAgICAgIGJyZWFrOwo+ICAgICAgfQo+ICAK PiAtICAgIGlmIChvcHRfZGF0YSAmJiBvcHRfY29kZSkgewo+IC0gICAgICAgIGZwcmludGYoc3Rk ZXJyLCAiQ2Fubm90IGhhbmRsZSAtYyBhbmQgLWQgYXQgdGhlIHNhbWUgdGltZVxuIik7Cj4gLSAg ICAgICAgcmV0dXJuIC0xOwo+IC0gICAgfSBlbHNlIGlmIChvcHRfZGF0YSkgewo+IC0gICAgICAg IHR5cGUgPSBMSUJYTF9QU1JfQ0JNX1RZUEVfTDNfQ0JNX0RBVEE7Cj4gLSAgICB9IGVsc2UgaWYg KG9wdF9jb2RlKSB7Cj4gLSAgICAgICAgdHlwZSA9IExJQlhMX1BTUl9DQk1fVFlQRV9MM19DQk1f Q09ERTsKPiArICAgIGlmIChsdmwgPT0gMikgewo+ICsgICAgICAgIGlmIChvcHRfZGF0YSB8fCBv cHRfY29kZSkgewo+ICsgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkwyIENBVCBkb2VzIG5v dCBzdXBwb3J0IENEUCB5ZXQuXG4iKTsKPiArICAgICAgICAgICAgcmV0dXJuIC0xOwoKRVJST1Jf RkFJTD8KCj4gKyAgICAgICAgfQo+ICsgICAgICAgIHR5cGUgPSBMSUJYTF9QU1JfQ0JNX1RZUEVf TDJfQ0JNOwo+ICsgICAgfSBlbHNlIGlmIChsdmwgPT0gMykgewo+ICsgICAgICAgIGlmIChvcHRf ZGF0YSAmJiBvcHRfY29kZSkgewo+ICsgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkNhbm5v dCBoYW5kbGUgLWMgYW5kIC1kIGF0IHRoZSBzYW1lIHRpbWVcbiIpOwo+ICsgICAgICAgICAgICBy ZXR1cm4gLTE7Cj4gKyAgICAgICAgfSBlbHNlIGlmIChvcHRfZGF0YSkgewo+ICsgICAgICAgICAg ICB0eXBlID0gTElCWExfUFNSX0NCTV9UWVBFX0wzX0NCTV9EQVRBOwo+ICsgICAgICAgIH0gZWxz ZSBpZiAob3B0X2NvZGUpIHsKPiArICAgICAgICAgICAgdHlwZSA9IExJQlhMX1BTUl9DQk1fVFlQ RV9MM19DQk1fQ09ERTsKPiArICAgICAgICB9IGVsc2Ugewo+ICsgICAgICAgICAgICB0eXBlID0g TElCWExfUFNSX0NCTV9UWVBFX0wzX0NCTTsKPiArICAgICAgICB9Cj4gICAgICB9IGVsc2Ugewo+ IC0gICAgICAgIHR5cGUgPSBMSUJYTF9QU1JfQ0JNX1RZUEVfTDNfQ0JNOwo+ICsgICAgICAgIGZw cmludGYoc3RkZXJyLCAiSW52YWxpZCBjYWNoZSBsZXZlbC5cbiIpOwo+ICsgICAgICAgIHJldHVy biAtMTsKCkVSUk9SX0ZBSUw/Cj4gICAgICB9Cj4gIAo+ICAgICAgaWYgKGxpYnhsX2JpdG1hcF9p c19lbXB0eSgmdGFyZ2V0X21hcCkpCj4gQEAgLTk0ODcsMTEgKzk1OTgsMjAgQEAgaW50IG1haW5f cHNyX2NhdF9jYm1fc2V0KGludCBhcmdjLCBjaGFyICoqYXJndikKPiAgCj4gIGludCBtYWluX3Bz cl9jYXRfc2hvdyhpbnQgYXJnYywgY2hhciAqKmFyZ3YpCj4gIHsKPiAtICAgIGludCBvcHQ7Cj4g KyAgICBpbnQgb3B0ID0gMDsKPiAgICAgIHVpbnQzMl90IGRvbWlkOwo+ICsgICAgaW50IGx2bCA9 IDM7Cgp1bnNpZ25lZCBpbnQ/Cj4gKyAgICBpbnQgcmM7Cj4gIAo+IC0gICAgU1dJVENIX0ZPUkVB Q0hfT1BUKG9wdCwgIiIsIE5VTEwsICJwc3ItY2F0LXNob3ciLCAwKSB7Cj4gLSAgICAgICAgLyog Tm8gb3B0aW9ucyAqLwo+ICsgICAgc3RhdGljIHN0cnVjdCBvcHRpb24gb3B0c1tdID0gewo+ICsg ICAgICAgIHsibGV2ZWwiLCAxLCAwLCAnbCd9LAo+ICsgICAgICAgIENPTU1PTl9MT05HX09QVFMK PiArICAgIH07Cj4gKwo+ICsgICAgU1dJVENIX0ZPUkVBQ0hfT1BUKG9wdCwgImw6Iiwgb3B0cywg InBzci1jYXQtc2hvdyIsIDEpIHsKPiArICAgIGNhc2UgJ2wnOgo+ICsgICAgICAgIGx2bCA9IGF0 b2kob3B0YXJnKTsKPiArICAgICAgICBicmVhazsKPiAgICAgIH0KPiAgCj4gICAgICBpZiAob3B0 aW5kID49IGFyZ2MpCj4gQEAgLTk1MDMsNyArOTYyMywxMiBAQCBpbnQgbWFpbl9wc3JfY2F0X3No b3coaW50IGFyZ2MsIGNoYXIgKiphcmd2KQo+ICAgICAgICAgIHJldHVybiAyOwo+ICAgICAgfQo+ ICAKPiAtICAgIHJldHVybiBwc3JfY2F0X3Nob3coZG9taWQpOwo+ICsgICAgaWYgKDMgPT0gbHZs KQo+ICsgICAgICAgIHJjID0gcHNyX2NhdF9zaG93KGRvbWlkKTsKPiArICAgIGVsc2UgaWYgKDIg PT0gbHZsKQoKQ291bGQgeW91IHN3YXAgdGhhdCBhcm91bmQ/IGx2bCA9PSAyIG9yIHN1Y2g/Cgo+ ICsgICAgICAgIHJjID0gcHNyX2wyX2NhdF9zaG93KGRvbWlkKTsKPiArCj4gKyAgICByZXR1cm4g cmM7Cj4gIH0KPiAgCj4gIGludCBtYWluX3Bzcl9od2luZm8oaW50IGFyZ2MsIGNoYXIgKiphcmd2 KQo+IEBAIC05NTI5LDcgKzk2NTQsMTEgQEAgaW50IG1haW5fcHNyX2h3aW5mbyhpbnQgYXJnYywg Y2hhciAqKmFyZ3YpCj4gICAgICAgICAgcmV0ID0gcHNyX2NtdF9od2luZm8oKTsKPiAgCj4gICAg ICBpZiAoIXJldCAmJiAoYWxsIHx8IGNhdCkpCj4gLSAgICAgICAgcmV0ID0gcHNyX2NhdF9od2lu Zm8oKTsKPiArICAgICAgICByZXQgPSBwc3JfbDNfY2F0X2h3aW5mbygpOwo+ICsKPiArICAgIC8q IEwyIENBVCBpcyBpbmRlcGVuZGVudCB3aXRoIENNVCBhbmQgTDMgQ0FUICovCgpzL3dpdGgvb2Zm Lz8KPiArICAgIGlmIChhbGwgfHwgY2F0KQo+ICsgICAgICAgIHJldCA9IHBzcl9sMl9jYXRfaHdp bmZvKCk7Cj4gIAo+ICAgICAgcmV0dXJuIHJldDsKPiAgfQo+IGRpZmYgLS1naXQgYS90b29scy9s aWJ4bC94bF9jbWR0YWJsZS5jIGIvdG9vbHMvbGlieGwveGxfY21kdGFibGUuYwo+IGluZGV4IDg1 YzFlMGYuLmJiM2NlNjkgMTAwNjQ0Cj4gLS0tIGEvdG9vbHMvbGlieGwveGxfY21kdGFibGUuYwo+ ICsrKyBiL3Rvb2xzL2xpYnhsL3hsX2NtZHRhYmxlLmMKPiBAQCAtNTQ5LDEzICs1NDksMTUgQEAg c3RydWN0IGNtZF9zcGVjIGNtZF90YWJsZVtdID0gewo+ICAgICAgICAiU2V0IGNhY2hlIGNhcGFj aXR5IGJpdG1hc2tzKENCTSkgZm9yIGEgZG9tYWluIiwKPiAgICAgICAgIltvcHRpb25zXSA8RG9t YWluPiA8Q0JNPiIsCj4gICAgICAgICItcyA8c29ja2V0PiAgICAgICBTcGVjaWZ5IHRoZSBzb2Nr ZXQgdG8gcHJvY2Vzcywgb3RoZXJ3aXNlIGFsbCBzb2NrZXRzIGFyZSBwcm9jZXNzZWRcbiIKPiAr ICAgICAgIi1sIDxsZXZlbD4gICAgICAgIFNwZWNpZnkgdGhlIGNhY2hlIGxldmVsIHRvIHByb2Nl c3MsIG90aGVyd2lzZSBMMyBjYWNoZSBpcyBwcm9jZXNzZWRcbiIKPiAgICAgICAgIi1jICAgICAg ICAgICAgICAgIFNldCBjb2RlIENCTSBpZiBDRFAgaXMgc3VwcG9ydGVkXG4iCj4gICAgICAgICIt ZCAgICAgICAgICAgICAgICBTZXQgZGF0YSBDQk0gaWYgQ0RQIGlzIHN1cHBvcnRlZFxuIgo+ICAg ICAgfSwKPiAgICAgIHsgInBzci1jYXQtc2hvdyIsCj4gICAgICAgICZtYWluX3Bzcl9jYXRfc2hv dywgMCwgMSwKPiAgICAgICAgIlNob3cgQ2FjaGUgQWxsb2NhdGlvbiBUZWNobm9sb2d5IGluZm9y bWF0aW9uIiwKPiAtICAgICAgIjxEb21haW4+IiwKPiArICAgICAgIltvcHRpb25zXSA8RG9tYWlu PiIsCj4gKyAgICAgICItbCA8bGV2ZWw+ICAgICAgICBTcGVjaWZ5IHRoZSBjYWNoZSBsZXZlbCB0 byBwcm9jZXNzLCBvdGhlcndpc2UgTDMgY2FjaGUgaXMgcHJvY2Vzc2VkXG4iCj4gICAgICB9LAo+ ICAKPiAgI2VuZGlmCj4gLS0gCj4gMS45LjEKPiAKPiAKPiBfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwo+IFhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKPiBYZW4t ZGV2ZWxAbGlzdHMueGVuLm9yZwo+IGh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwKCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBt YWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3Jn L3hlbi1kZXZlbAo=