From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id C007D42346 for ; Fri, 17 Dec 2021 16:59:19 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id D5A4368AEAE; Fri, 17 Dec 2021 18:59:16 +0200 (EET) Received: from mail-il1-f174.google.com (mail-il1-f174.google.com [209.85.166.174]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 5DB9C68A786 for ; Fri, 17 Dec 2021 18:59:11 +0200 (EET) Received: by mail-il1-f174.google.com with SMTP id f17so2109319ilj.11 for ; Fri, 17 Dec 2021 08:59:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=luminvent-com.20210112.gappssmtp.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :content-transfer-encoding; bh=Ibrvkm1UTvxuU3R6fHVy1uitQRA9C9VZyTY088ZMZg8=; b=0ckHDpJwx0d6dUKqWCDEs594IZwOpqECLLZjIPHreqJtDfjKa24BfFmSPj55IVXuSk hiaYRS8AlGu1emQDagzWwKYfroLEp2ZN/h2zLXfIxqQpHnb3aHQNurlV5mNPVonDyB9p kcHuj4IYZTHoXmnIE/n+Pt73JlLlXqscDoZZAvp/2ght0VrNjj7YkULfsl0OaQ6dhpAS 7W9Y+V5zIXm3j440YxjtUPer2cc0PGpVEAt7m8nKP8VndVxxmxqcl+7lgXPPWgoud2z+ eb+nHtj6nkUc+3yPFZ7ffbrwEFM2l9aYJOBf7UX/srQuYEWVTaJqXAhbPMMcOvkDRviK skEA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:content-transfer-encoding; bh=Ibrvkm1UTvxuU3R6fHVy1uitQRA9C9VZyTY088ZMZg8=; b=PuVcak027kOsNhqANN7JOnzUsBCjEZ1d5o4pfk/YjVjPQiib3chRB7B54QlRBmFyUn Az4vFExa8CNjBAL25OpIjIN5dqQDzt+/9o3u/vitrYMi8UOrSVCaSAgS1LJysl+ABvvf evHBhPj/UZ3MDdirT9ByNbJoJzYKad5mub8TKPGEP+bqmOhG03o4v7+zOaF4Mr11Hzcd eB2zy9cGFPF1oTZexU1hi36y6CceceD2bucmYpSedixONpodn9a9p4ZHpTUhayOLDHiB Cz+dD+ksW6CeiWpOoq5ltapEm0f7eVaw/BPd9e3Z7btl1ckXgNb1eDm5Saeh5m9zzW/Y VZdw== X-Gm-Message-State: AOAM532/VSkxiKeH4b5b+itcC0DzrNZxLCtN9eo5RywN6EgTefDBdYqk 3w9cFlECLb0h65sNb1jnNWsbqgLvMtKVfd++9IlIJUm8FCgisg== X-Google-Smtp-Source: ABdhPJyWIyJW0yL8kaDngbtVUQ+sBTvZWmJrVzX43xD82l4T4vXmJuk1Zg2ycHrcLB/ku8JB8BO2nV8u8TIiQa77aeQ= X-Received: by 2002:a05:6e02:1989:: with SMTP id g9mr2033063ilf.88.1639760349526; Fri, 17 Dec 2021 08:59:09 -0800 (PST) MIME-Version: 1.0 References: <20211203095742.16108-1-marc-antoine.arnaud@luminvent.com> In-Reply-To: <20211203095742.16108-1-marc-antoine.arnaud@luminvent.com> From: Marc-Antoine ARNAUD Date: Fri, 17 Dec 2021 17:58:58 +0100 Message-ID: To: FFmpeg development discussions and patches Subject: Re: [FFmpeg-devel] [PATCH 1/2] avformat/mxf: support MCA audio information X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: SGkgYWxsLAoKQ2FuIEkgaGF2ZSBhbiB1cGRhdGUgb24gdGhpcyBwYXRjaCBzdWJtaXNzaW9uID8K SXMgc29tZXRoaW5nIHJlcXVpcmVkIHRvIGJlIGRvbmUgYmVmb3JlIGl0IGNhbiBiZSBtZXJnZWQg PwoKVGhhbmtzIHlvdSwKTWFyYy1BbnRvaW5lCgoKTGUgdmVuLiAzIGTDqWMuIDIwMjEgw6AgMTA6 NTcsIE1hcmMtQW50b2luZSBBcm5hdWQKPG1hcmMtYW50b2luZS5hcm5hdWRAbHVtaW52ZW50LmNv bT4gYSDDqWNyaXQgOgo+Cj4gLS0tCj4gIGRvYy9kZW11eGVycy50ZXhpICAgICB8ICAxMCArKwo+ ICBsaWJhdmZvcm1hdC9teGYuaCAgICAgfCAgIDMgKwo+ICBsaWJhdmZvcm1hdC9teGZkZWMuYyAg fCAzMzUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystCj4gIGxpYmF2 Zm9ybWF0L3ZlcnNpb24uaCB8ICAgMiArLQo+ICA0IGZpbGVzIGNoYW5nZWQsIDM0MyBpbnNlcnRp b25zKCspLCA3IGRlbGV0aW9ucygtKQo+Cj4gZGlmZiAtLWdpdCBhL2RvYy9kZW11eGVycy50ZXhp IGIvZG9jL2RlbXV4ZXJzLnRleGkKPiBpbmRleCBjYWI4YTcwNzJjLi4yM2I2NzUzNjAyIDEwMDY0 NAo+IC0tLSBhL2RvYy9kZW11eGVycy50ZXhpCj4gKysrIGIvZG9jL2RlbXV4ZXJzLnRleGkKPiBA QCAtNzcwLDYgKzc3MCwxNiBAQCBNSlBFRyBzdHJlYW0uIFR1cm5pbmcgdGhpcyBvcHRpb24gb24g Ynkgc2V0dGluZyBpdCB0byAxIHdpbGwgcmVzdWx0IGluIGEgc3RyaWN0ZQo+ICBvZiB0aGUgYm91 bmRhcnkgdmFsdWUuCj4gIEBlbmQgdGFibGUKPgo+ICtAc2VjdGlvbiBteGYKPiArCj4gK01YRiBk ZW11eGVyLgo+ICsKPiArQHRhYmxlIEBvcHRpb24KPiArCj4gK0BpdGVtIC1za2lwX2F1ZGlvX3Jl b3JkZXJpbmcgQHZhcntib29sfQo+ICtUaGlzIG9wdGlvbiB3aWxsIGRpc2FibGUgdGhlIGF1ZGlv IHJlb3JkZXJpbmcgYmFzZWQgb24gTXVsdGktQ2hhbm5lbCBBdWRpbyAoTUNBKSBsYWJlbGxpbmcg KFNNUFRFIFNULTM3Ny00KS4KPiArQGVuZCB0YWJsZQo+ICsKPiAgQHNlY3Rpb24gcmF3dmlkZW8K Pgo+ICBSYXcgdmlkZW8gZGVtdXhlci4KPiBkaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQvbXhmLmgg Yi9saWJhdmZvcm1hdC9teGYuaAo+IGluZGV4IGZlOWM1MjczMmMuLmQ1M2ExNmRmNTEgMTAwNjQ0 Cj4gLS0tIGEvbGliYXZmb3JtYXQvbXhmLmgKPiArKysgYi9saWJhdmZvcm1hdC9teGYuaAo+IEBA IC01MCw2ICs1MCw5IEBAIGVudW0gTVhGTWV0YWRhdGFTZXRUeXBlIHsKPiAgICAgIFRhZ2dlZFZh bHVlLAo+ICAgICAgVGFwZURlc2NyaXB0b3IsCj4gICAgICBBVkNTdWJEZXNjcmlwdG9yLAo+ICsg ICAgQXVkaW9DaGFubmVsTGFiZWxTdWJEZXNjcmlwdG9yLAo+ICsgICAgU291bmRmaWVsZEdyb3Vw TGFiZWxTdWJEZXNjcmlwdG9yLAo+ICsgICAgR3JvdXBPZlNvdW5kZmllbGRHcm91cHNMYWJlbFN1 YkRlc2NyaXB0b3IsCj4gIH07Cj4KPiAgZW51bSBNWEZGcmFtZUxheW91dCB7Cj4gZGlmZiAtLWdp dCBhL2xpYmF2Zm9ybWF0L214ZmRlYy5jIGIvbGliYXZmb3JtYXQvbXhmZGVjLmMKPiBpbmRleCBh ZjlkMzNmNzk2Li42ZTFkYTc1NTQyIDEwMDY0NAo+IC0tLSBhL2xpYmF2Zm9ybWF0L214ZmRlYy5j Cj4gKysrIGIvbGliYXZmb3JtYXQvbXhmZGVjLmMKPiBAQCAtNTEsMTEgKzUxLDE0IEBACj4gICNp bmNsdWRlICJsaWJhdnV0aWwvbWFzdGVyaW5nX2Rpc3BsYXlfbWV0YWRhdGEuaCIKPiAgI2luY2x1 ZGUgImxpYmF2dXRpbC9tYXRoZW1hdGljcy5oIgo+ICAjaW5jbHVkZSAibGliYXZjb2RlYy9ieXRl c3RyZWFtLmgiCj4gKyNpbmNsdWRlICJsaWJhdmNvZGVjL2ludGVybmFsLmgiCj4gKyNpbmNsdWRl ICJsaWJhdnV0aWwvY2hhbm5lbF9sYXlvdXQuaCIKPiAgI2luY2x1ZGUgImxpYmF2dXRpbC9pbnRy ZWFkd3JpdGUuaCIKPiAgI2luY2x1ZGUgImxpYmF2dXRpbC9wYXJzZXV0aWxzLmgiCj4gICNpbmNs dWRlICJsaWJhdnV0aWwvdGltZWNvZGUuaCIKPiAgI2luY2x1ZGUgImxpYmF2dXRpbC9vcHQuaCIK PiAgI2luY2x1ZGUgImF2Zm9ybWF0LmgiCj4gKyNpbmNsdWRlICJhdmxhbmd1YWdlLmgiCj4gICNp bmNsdWRlICJpbnRlcm5hbC5oIgo+ICAjaW5jbHVkZSAibXhmLmgiCj4KPiBAQCAtMTc3LDYgKzE4 MCw4IEBAIHR5cGVkZWYgc3RydWN0IHsKPiAgICAgIGludCBib2R5X3NpZDsKPiAgICAgIE1YRldy YXBwaW5nU2NoZW1lIHdyYXBwaW5nOwo+ICAgICAgaW50IGVkaXRfdW5pdHNfcGVyX3BhY2tldDsg LyogaG93IG1hbnkgZWRpdCB1bml0cyB0byByZWFkIGF0IGEgdGltZSAoUENNLCBDbGlwV3JhcHBl ZCkgKi8KPiArICAgIGludCByZXF1aXJlX3Jlb3JkZXJpbmc7Cj4gKyAgICBpbnQgY2hhbm5lbF9v cmRlcmluZ1tGRl9TQU5FX05CX0NIQU5ORUxTXTsKPiAgfSBNWEZUcmFjazsKPgo+ICB0eXBlZGVm IHN0cnVjdCBNWEZEZXNjcmlwdG9yIHsKPiBAQCAtMjA1LDYgKzIxMCw4IEBAIHR5cGVkZWYgc3Ry dWN0IE1YRkRlc2NyaXB0b3Igewo+ICAgICAgdW5zaWduZWQgaW50IHZlcnRfc3Vic2FtcGxpbmc7 Cj4gICAgICBVSUQgKmZpbGVfZGVzY3JpcHRvcnNfcmVmczsKPiAgICAgIGludCBmaWxlX2Rlc2Ny aXB0b3JzX2NvdW50Owo+ICsgICAgVUlEICpzdWJfZGVzY3JpcHRvcnNfcmVmczsKPiArICAgIGlu dCBzdWJfZGVzY3JpcHRvcnNfY291bnQ7Cj4gICAgICBpbnQgbGlua2VkX3RyYWNrX2lkOwo+ICAg ICAgdWludDhfdCAqZXh0cmFkYXRhOwo+ICAgICAgaW50IGV4dHJhZGF0YV9zaXplOwo+IEBAIC0y MTcsNiArMjI0LDE4IEBAIHR5cGVkZWYgc3RydWN0IE1YRkRlc2NyaXB0b3Igewo+ICAgICAgc2l6 ZV90IGNvbGxfc2l6ZTsKPiAgfSBNWEZEZXNjcmlwdG9yOwo+Cj4gK3R5cGVkZWYgc3RydWN0IE1Y Rk1DQVN1YkRlc2NyaXB0b3Igewo+ICsgICAgTVhGTWV0YWRhdGFTZXQgbWV0YTsKPiArICAgIFVJ RCB1aWQ7Cj4gKyAgICBVSUQgbWNhX2xpbmtfaWQ7Cj4gKyAgICBVSUQgc291bmRmaWVsZF9ncm91 cF9saW5rX2lkOwo+ICsgICAgVUlEICpncm91cF9vZl9zb3VuZGZpZWxkX2dyb3Vwc19saW5rX2lk X3JlZnM7Cj4gKyAgICBpbnQgZ3JvdXBfb2Zfc291bmRmaWVsZF9ncm91cHNfbGlua19pZF9jb3Vu dDsKPiArICAgIFVJRCBtY2FfbGFiZWxfZGljdGlvbmFyeV9pZDsKPiArICAgIGludCBtY2FfY2hh bm5lbF9pZDsKPiArICAgIGNoYXIgKmxhbmd1YWdlOwo+ICt9IE1YRk1DQVN1YkRlc2NyaXB0b3I7 Cj4gKwo+ICB0eXBlZGVmIHN0cnVjdCBNWEZJbmRleFRhYmxlU2VnbWVudCB7Cj4gICAgICBNWEZN ZXRhZGF0YVNldCBtZXRhOwo+ICAgICAgaW50IGVkaXRfdW5pdF9ieXRlX2NvdW50Owo+IEBAIC0y OTAsNiArMzA5LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgTVhGQ29udGV4dCB7Cj4gICAgICBpbnQgbmJf aW5kZXhfdGFibGVzOwo+ICAgICAgTVhGSW5kZXhUYWJsZSAqaW5kZXhfdGFibGVzOwo+ICAgICAg aW50IGVpYTYwOF9leHRyYWN0Owo+ICsgICAgaW50IHNraXBfYXVkaW9fcmVvcmRlcmluZzsKPiAg fSBNWEZDb250ZXh0Owo+Cj4gIC8qIE5PVEU6IGtsdl9vZmZzZXQgaXMgbm90IHNldCAoLTEpIGZv ciBsb2NhbCBrZXlzICovCj4gQEAgLTMxMSw2ICszMzEsNyBAQCBzdGF0aWMgY29uc3QgdWludDhf dCBteGZfc3lzdGVtX2l0ZW1fa2V5X2NwW10gICAgICAgICAgICAgID0geyAweDA2LDB4MGUsMHgy YiwweAo+ICBzdGF0aWMgY29uc3QgdWludDhfdCBteGZfc3lzdGVtX2l0ZW1fa2V5X2djW10gICAg ICAgICAgICAgID0geyAweDA2LDB4MGUsMHgyYiwweDM0LDB4MDIsMHg1MywweDAxLDB4MDEsMHgw ZCwweDAxLDB4MDMsMHgwMSwweDE0IH07Cj4gIHN0YXRpYyBjb25zdCB1aW50OF90IG14Zl9rbHZf a2V5W10gICAgICAgICAgICAgICAgICAgICAgICAgPSB7IDB4MDYsMHgwZSwweDJiLDB4MzQgfTsK PiAgc3RhdGljIGNvbnN0IHVpbnQ4X3QgbXhmX2FwcGxlX2NvbGxfcHJlZml4W10gICAgICAgICAg ICAgICA9IHsgMHgwNiwweDBlLDB4MmIsMHgzNCwweDAxLDB4MDEsMHgwMSwweDBlLDB4MGUsMHgy MCwweDA0LDB4MDEsMHgwNSwweDAzLDB4MDEgfTsKPiArCj4gIC8qIGNvbXBsZXRlIGtleXMgdG8g bWF0Y2ggKi8KPiAgc3RhdGljIGNvbnN0IHVpbnQ4X3QgbXhmX2NyeXB0b19zb3VyY2VfY29udGFp bmVyX3VsW10gICAgICA9IHsgMHgwNiwweDBlLDB4MmIsMHgzNCwweDAxLDB4MDEsMHgwMSwweDA5 LDB4MDYsMHgwMSwweDAxLDB4MDIsMHgwMiwweDAwLDB4MDAsMHgwMCB9Owo+ICBzdGF0aWMgY29u c3QgdWludDhfdCBteGZfZW5jcnlwdGVkX3RyaXBsZXRfa2V5W10gICAgICAgICAgID0geyAweDA2 LDB4MGUsMHgyYiwweDM0LDB4MDIsMHgwNCwweDAxLDB4MDcsMHgwZCwweDAxLDB4MDMsMHgwMSww eDAyLDB4N2UsMHgwMSwweDAwIH07Cj4gQEAgLTMyMyw2ICszNDQsMTcgQEAgc3RhdGljIGNvbnN0 IHVpbnQ4X3QgbXhmX2luZGlyZWN0X3ZhbHVlX3V0ZjE2YmVbXSAgICAgICAgICA9IHsgMHg0Miww eDAxLDB4MTAsMHgKPiAgc3RhdGljIGNvbnN0IHVpbnQ4X3QgbXhmX2FwcGxlX2NvbGxfbWF4X2Ns bFtdICAgICAgICAgICAgICA9IHsgMHgwNiwweDBlLDB4MmIsMHgzNCwweDAxLDB4MDEsMHgwMSww eDBlLDB4MGUsMHgyMCwweDA0LDB4MDEsMHgwNSwweDAzLDB4MDEsMHgwMSB9Owo+ICBzdGF0aWMg Y29uc3QgdWludDhfdCBteGZfYXBwbGVfY29sbF9tYXhfZmFsbFtdICAgICAgICAgICAgID0geyAw eDA2LDB4MGUsMHgyYiwweDM0LDB4MDEsMHgwMSwweDAxLDB4MGUsMHgwZSwweDIwLDB4MDQsMHgw MSwweDA1LDB4MDMsMHgwMSwweDAyIH07Cj4KPiArc3RhdGljIGNvbnN0IHVpbnQ4X3QgbXhmX21j YV9sYWJlbF9kaWN0aW9uYXJ5X2lkW10gICAgICAgICA9IHsgMHgwNiwweDBlLDB4MmIsMHgzNCww eDAxLDB4MDEsMHgwMSwweDBlLDB4MDEsMHgwMywweDA3LDB4MDEsMHgwMSwweDAwLDB4MDAsMHgw MCB9Owo+ICtzdGF0aWMgY29uc3QgdWludDhfdCBteGZfbWNhX3RhZ19zeW1ib2xbXSAgICAgICAg ICAgICAgICAgID0geyAweDA2LDB4MGUsMHgyYiwweDM0LDB4MDEsMHgwMSwweDAxLDB4MGUsMHgw MSwweDAzLDB4MDcsMHgwMSwweDAyLDB4MDAsMHgwMCwweDAwIH07Cj4gK3N0YXRpYyBjb25zdCB1 aW50OF90IG14Zl9tY2FfdGFnX25hbWVbXSAgICAgICAgICAgICAgICAgICAgPSB7IDB4MDYsMHgw ZSwweDJiLDB4MzQsMHgwMSwweDAxLDB4MDEsMHgwZSwweDAxLDB4MDMsMHgwNywweDAxLDB4MDMs MHgwMCwweDAwLDB4MDAgfTsKPiArc3RhdGljIGNvbnN0IHVpbnQ4X3QgbXhmX2dyb3VwX29mX3Nv dW5kZmllbGRfZ3JvdXBzX2xpbmtfaWRbXSA9IHsgMHgwNiwweDBlLDB4MmIsMHgzNCwweDAxLDB4 MDEsMHgwMSwweDBlLDB4MDEsMHgwMywweDA3LDB4MDEsMHgwNCwweDAwLDB4MDAsMHgwMCB9Owo+ ICtzdGF0aWMgY29uc3QgdWludDhfdCBteGZfbWNhX2xpbmtfaWRbXSAgICAgICAgICAgICAgICAg ICAgID0geyAweDA2LDB4MGUsMHgyYiwweDM0LDB4MDEsMHgwMSwweDAxLDB4MGUsMHgwMSwweDAz LDB4MDcsMHgwMSwweDA1LDB4MDAsMHgwMCwweDAwIH07Cj4gK3N0YXRpYyBjb25zdCB1aW50OF90 IG14Zl9tY2FfY2hhbm5lbF9pZFtdICAgICAgICAgICAgICAgICAgPSB7IDB4MDYsMHgwZSwweDJi LDB4MzQsMHgwMSwweDAxLDB4MDEsMHgwZSwweDAxLDB4MDMsMHgwNCwweDBhLDB4MDAsMHgwMCww eDAwLDB4MDAgfTsKPiArc3RhdGljIGNvbnN0IHVpbnQ4X3QgbXhmX3NvdW5kZmllbGRfZ3JvdXBf bGlua19pZFtdICAgICAgICA9IHsgMHgwNiwweDBlLDB4MmIsMHgzNCwweDAxLDB4MDEsMHgwMSww eDBlLDB4MDEsMHgwMywweDA3LDB4MDEsMHgwNiwweDAwLDB4MDAsMHgwMCB9Owo+ICtzdGF0aWMg Y29uc3QgdWludDhfdCBteGZfbWNhX3JmYzU2NDZfc3Bva2VuX2xhbmd1YWdlW10gICAgID0geyAw eDA2LDB4MGUsMHgyYiwweDM0LDB4MDEsMHgwMSwweDAxLDB4MGQsMHgwMywweDAxLDB4MDEsMHgw MiwweDAzLDB4MTUsMHgwMCwweDAwIH07Cj4gKwo+ICtzdGF0aWMgY29uc3QgdWludDhfdCBteGZf c3ViX2Rlc2NyaXB0b3JbXSAgICAgICAgICAgICAgICAgID0geyAweDA2LDB4MGUsMHgyYiwweDM0 LDB4MDEsMHgwMSwweDAxLDB4MDksMHgwNiwweDAxLDB4MDEsMHgwNCwweDA2LDB4MTAsMHgwMCww eDAwIH07Cj4gKwo+ICBzdGF0aWMgY29uc3QgdWludDhfdCBteGZfbWFzdGVyaW5nX2Rpc3BsYXlf cHJlZml4WzEzXSAgICAgID0geyBGRl9NWEZfTWFzdGVyaW5nRGlzcGxheV9QUkVGSVggfTsKPiAg c3RhdGljIGNvbnN0IHVpbnQ4X3QgbXhmX21hc3RlcmluZ19kaXNwbGF5X3Vsc1s0XVsxNl0gPSB7 Cj4gICAgICBGRl9NWEZfTWFzdGVyaW5nRGlzcGxheVByaW1hcmllcywKPiBAQCAtMzQzLDYgKzM3 NSwxMyBAQCBzdGF0aWMgdm9pZCBteGZfZnJlZV9tZXRhZGF0YXNldChNWEZNZXRhZGF0YVNldCAq KmN0eCwgaW50IGZyZWVjdHgpCj4gICAgICAgICAgYXZfZnJlZXAoJigoTVhGRGVzY3JpcHRvciAq KSpjdHgpLT5tYXN0ZXJpbmcpOwo+ICAgICAgICAgIGF2X2ZyZWVwKCYoKE1YRkRlc2NyaXB0b3Ig KikqY3R4KS0+Y29sbCk7Cj4gICAgICAgICAgYXZfZnJlZXAoJigoTVhGRGVzY3JpcHRvciAqKSpj dHgpLT5maWxlX2Rlc2NyaXB0b3JzX3JlZnMpOwo+ICsgICAgICAgIGF2X2ZyZWVwKCYoKE1YRkRl c2NyaXB0b3IgKikqY3R4KS0+c3ViX2Rlc2NyaXB0b3JzX3JlZnMpOwo+ICsgICAgICAgIGJyZWFr Owo+ICsgICAgY2FzZSBBdWRpb0NoYW5uZWxMYWJlbFN1YkRlc2NyaXB0b3I6Cj4gKyAgICBjYXNl IFNvdW5kZmllbGRHcm91cExhYmVsU3ViRGVzY3JpcHRvcjoKPiArICAgIGNhc2UgR3JvdXBPZlNv dW5kZmllbGRHcm91cHNMYWJlbFN1YkRlc2NyaXB0b3I6Cj4gKyAgICAgICAgYXZfZnJlZXAoJigo TVhGTUNBU3ViRGVzY3JpcHRvciAqKSpjdHgpLT5sYW5ndWFnZSk7Cj4gKyAgICAgICAgYXZfZnJl ZXAoJigoTVhGTUNBU3ViRGVzY3JpcHRvciAqKSpjdHgpLT5ncm91cF9vZl9zb3VuZGZpZWxkX2dy b3Vwc19saW5rX2lkX3JlZnMpOwo+ICAgICAgICAgIGJyZWFrOwo+ICAgICAgY2FzZSBTZXF1ZW5j ZToKPiAgICAgICAgICBhdl9mcmVlcCgmKChNWEZTZXF1ZW5jZSAqKSpjdHgpLT5zdHJ1Y3R1cmFs X2NvbXBvbmVudHNfcmVmcyk7Cj4gQEAgLTkwNiw2ICs5NDUsMzAgQEAgc3RhdGljIGludCBteGZf cmVhZF9zdHJvbmdfcmVmX2FycmF5KEFWSU9Db250ZXh0ICpwYiwgVUlEICoqcmVmcywgaW50ICpj b3VudCkKPiAgICAgIHJldHVybiAwOwo+ICB9Cj4KPiArc3RhdGljIGlubGluZSBpbnQgbXhmX3Jl YWRfdXNfYXNjaWlfc3RyaW5nKEFWSU9Db250ZXh0ICpwYiwgaW50IHNpemUsIGNoYXIqKiBzdHIp Cj4gK3sKPiArICAgIGludCByZXQ7Cj4gKyAgICBzaXplX3QgYnVmX3NpemU7Cj4gKwo+ICsgICAg aWYgKHNpemUgPCAwIHx8IHNpemUgPiBJTlRfTUFYIC0gMSkKPiArICAgICAgICByZXR1cm4gQVZF UlJPUihFSU5WQUwpOwo+ICsKPiArICAgIGJ1Zl9zaXplID0gc2l6ZSArIDE7Cj4gKyAgICBhdl9m cmVlKCpzdHIpOwo+ICsgICAgKnN0ciA9IGF2X21hbGxvYyhidWZfc2l6ZSk7Cj4gKyAgICBpZiAo ISpzdHIpCj4gKyAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5PTUVNKTsKPiArCj4gKyAgICByZXQg PSBhdmlvX2dldF9zdHIocGIsIHNpemUsICpzdHIsIGJ1Zl9zaXplKTsKPiArCj4gKyAgICBpZiAo cmV0IDwgMCkgewo+ICsgICAgICAgIGF2X2ZyZWVwKHN0cik7Cj4gKyAgICAgICAgcmV0dXJuIHJl dDsKPiArICAgIH0KPiArCj4gKyAgICByZXR1cm4gcmV0Owo+ICt9Cj4gKwo+ICBzdGF0aWMgaW5s aW5lIGludCBteGZfcmVhZF91dGYxNl9zdHJpbmcoQVZJT0NvbnRleHQgKnBiLCBpbnQgc2l6ZSwg Y2hhcioqIHN0ciwgaW50IGJlKQo+ICB7Cj4gICAgICBpbnQgcmV0Owo+IEBAIC0xMzYwLDExICsx NDIzLDQwIEBAIHN0YXRpYyBpbnQgbXhmX3JlYWRfZ2VuZXJpY19kZXNjcmlwdG9yKHZvaWQgKmFy ZywgQVZJT0NvbnRleHQgKnBiLCBpbnQgdGFnLCBpbnQKPiAgICAgICAgICAgICAgICAgIGRlc2Ny aXB0b3ItPmNvbGwtPk1heEZBTEwgPSBhdmlvX3JiMTYocGIpOwo+ICAgICAgICAgICAgICB9Cj4g ICAgICAgICAgfQo+ICsKPiArICAgICAgICBpZiAoSVNfS0xWX0tFWSh1aWQsIG14Zl9zdWJfZGVz Y3JpcHRvcikpCj4gKyAgICAgICAgICAgIHJldHVybiBteGZfcmVhZF9zdHJvbmdfcmVmX2FycmF5 KHBiLCAmZGVzY3JpcHRvci0+c3ViX2Rlc2NyaXB0b3JzX3JlZnMsICZkZXNjcmlwdG9yLT5zdWJf ZGVzY3JpcHRvcnNfY291bnQpOwo+ICsKPiAgICAgICAgICBicmVhazsKPiAgICAgIH0KPiAgICAg IHJldHVybiAwOwo+ICB9Cj4KPiArc3RhdGljIGludCBteGZfcmVhZF9tY2Ffc3ViX2Rlc2NyaXB0 b3Iodm9pZCAqYXJnLCBBVklPQ29udGV4dCAqcGIsIGludCB0YWcsIGludCBzaXplLCBVSUQgdWlk LCBpbnQ2NF90IGtsdl9vZmZzZXQpCj4gK3sKPiArICAgIE1YRk1DQVN1YkRlc2NyaXB0b3IgKm1j YV9zdWJfZGVzY3JpcHRvciA9IGFyZzsKPiArCj4gKyAgICBpZiAoSVNfS0xWX0tFWSh1aWQsIG14 Zl9tY2FfbGFiZWxfZGljdGlvbmFyeV9pZCkpCj4gKyAgICAgICAgYXZpb19yZWFkKHBiLCBtY2Ff c3ViX2Rlc2NyaXB0b3ItPm1jYV9sYWJlbF9kaWN0aW9uYXJ5X2lkLCAxNik7Cj4gKwo+ICsgICAg aWYgKElTX0tMVl9LRVkodWlkLCBteGZfbWNhX2xpbmtfaWQpKQo+ICsgICAgICAgIGF2aW9fcmVh ZChwYiwgbWNhX3N1Yl9kZXNjcmlwdG9yLT5tY2FfbGlua19pZCwgMTYpOwo+ICsKPiArICAgIGlm IChJU19LTFZfS0VZKHVpZCwgbXhmX3NvdW5kZmllbGRfZ3JvdXBfbGlua19pZCkpCj4gKyAgICAg ICAgYXZpb19yZWFkKHBiLCBtY2Ffc3ViX2Rlc2NyaXB0b3ItPnNvdW5kZmllbGRfZ3JvdXBfbGlu a19pZCwgMTYpOwo+ICsKPiArICAgIGlmIChJU19LTFZfS0VZKHVpZCwgbXhmX2dyb3VwX29mX3Nv dW5kZmllbGRfZ3JvdXBzX2xpbmtfaWQpKQo+ICsgICAgICAgIHJldHVybiBteGZfcmVhZF9zdHJv bmdfcmVmX2FycmF5KHBiLCAmbWNhX3N1Yl9kZXNjcmlwdG9yLT5ncm91cF9vZl9zb3VuZGZpZWxk X2dyb3Vwc19saW5rX2lkX3JlZnMsICZtY2Ffc3ViX2Rlc2NyaXB0b3ItPmdyb3VwX29mX3NvdW5k ZmllbGRfZ3JvdXBzX2xpbmtfaWRfY291bnQpOwo+ICsKPiArICAgIGlmIChJU19LTFZfS0VZKHVp ZCwgbXhmX21jYV9jaGFubmVsX2lkKSkKPiArICAgICAgICBtY2Ffc3ViX2Rlc2NyaXB0b3ItPm1j YV9jaGFubmVsX2lkID0gYXZpb19yYjMyKHBiKTsKPiArCj4gKyAgICBpZiAoSVNfS0xWX0tFWSh1 aWQsIG14Zl9tY2FfcmZjNTY0Nl9zcG9rZW5fbGFuZ3VhZ2UpKQo+ICsgICAgICAgIHJldHVybiBt eGZfcmVhZF91c19hc2NpaV9zdHJpbmcocGIsIHNpemUsICZtY2Ffc3ViX2Rlc2NyaXB0b3ItPmxh bmd1YWdlKTsKPiArCj4gKyAgICByZXR1cm4gMDsKPiArfQo+ICsKPiAgc3RhdGljIGludCBteGZf cmVhZF9pbmRpcmVjdF92YWx1ZSh2b2lkICphcmcsIEFWSU9Db250ZXh0ICpwYiwgaW50IHNpemUp Cj4gIHsKPiAgICAgIE1YRlRhZ2dlZFZhbHVlICp0YWdnZWRfdmFsdWUgPSBhcmc7Cj4gQEAgLTE0 OTQsNiArMTU4Niw1MCBAQCBzdGF0aWMgY29uc3QgTVhGQ29kZWNVTCBteGZfZGF0YV9lc3NlbmNl X2NvbnRhaW5lcl91bHNbXSA9IHsKPiAgICAgIHsgeyAweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAs MHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwIH0s ICAwLCBBVl9DT0RFQ19JRF9OT05FIH0sCj4gIH07Cj4KPiArdHlwZWRlZiBzdHJ1Y3QgTVhGQ2hh bm5lbE9yZGVyaW5nVUwgewo+ICsgICAgVUlEIHVpZDsKPiArICAgIHVpbnQ2NF90IGxheW91dF9t YXNrOwo+ICsgICAgZW51bSBBVkF1ZGlvU2VydmljZVR5cGUgc2VydmljZV90eXBlOwo+ICt9IE1Y RkNoYW5uZWxPcmRlcmluZ1VMOwo+ICsKPiArc3RhdGljIGNvbnN0IE1YRkNoYW5uZWxPcmRlcmlu Z1VMIG14Zl9jaGFubmVsX29yZGVyaW5nW10gPSB7Cj4gKyAgICB7IHsgMHgwNiwweDBlLDB4MmIs MHgzNCwweDA0LDB4MDEsMHgwMSwweDBkLDB4MDMsMHgwMiwweDAxLDB4MDEsMHgwMCwweDAwLDB4 MDAsMHgwMCB9LCBBVl9DSF9GUk9OVF9MRUZULCAgICAgICAgICAgIEFWX0FVRElPX1NFUlZJQ0Vf VFlQRV9NQUlOIH0sIC8vIExlZnQKPiArICAgIHsgeyAweDA2LDB4MGUsMHgyYiwweDM0LDB4MDQs MHgwMSwweDAxLDB4MGQsMHgwMywweDAyLDB4MDEsMHgwMiwweDAwLDB4MDAsMHgwMCwweDAwIH0s IEFWX0NIX0ZST05UX1JJR0hULCAgICAgICAgICAgQVZfQVVESU9fU0VSVklDRV9UWVBFX01BSU4g fSwgLy8gUmlnaHQKPiArICAgIHsgeyAweDA2LDB4MGUsMHgyYiwweDM0LDB4MDQsMHgwMSwweDAx LDB4MGQsMHgwMywweDAyLDB4MDEsMHgwMywweDAwLDB4MDAsMHgwMCwweDAwIH0sIEFWX0NIX0ZS T05UX0NFTlRFUiwgICAgICAgICAgQVZfQVVESU9fU0VSVklDRV9UWVBFX01BSU4gfSwgLy8gQ2Vu dGVyCj4gKyAgICB7IHsgMHgwNiwweDBlLDB4MmIsMHgzNCwweDA0LDB4MDEsMHgwMSwweDBkLDB4 MDMsMHgwMiwweDAxLDB4MDQsMHgwMCwweDAwLDB4MDAsMHgwMCB9LCBBVl9DSF9MT1dfRlJFUVVF TkNZLCAgICAgICAgIEFWX0FVRElPX1NFUlZJQ0VfVFlQRV9NQUlOIH0sIC8vIExvdyBGcmVxdWVu Y3kgRWZmZWN0cwo+ICsgICAgeyB7IDB4MDYsMHgwZSwweDJiLDB4MzQsMHgwNCwweDAxLDB4MDEs MHgwZCwweDAzLDB4MDIsMHgwMSwweDA1LDB4MDAsMHgwMCwweDAwLDB4MDAgfSwgQVZfQ0hfU0lE RV9MRUZULCAgICAgICAgICAgICBBVl9BVURJT19TRVJWSUNFX1RZUEVfTUFJTiB9LCAvLyBMZWZ0 IFN1cnJvdW5kCj4gKyAgICB7IHsgMHgwNiwweDBlLDB4MmIsMHgzNCwweDA0LDB4MDEsMHgwMSww eDBkLDB4MDMsMHgwMiwweDAxLDB4MDYsMHgwMCwweDAwLDB4MDAsMHgwMCB9LCBBVl9DSF9TSURF X1JJR0hULCAgICAgICAgICAgIEFWX0FVRElPX1NFUlZJQ0VfVFlQRV9NQUlOIH0sIC8vIFJpZ2h0 IFN1cnJvdW5kCj4gKyAgICB7IHsgMHgwNiwweDBlLDB4MmIsMHgzNCwweDA0LDB4MDEsMHgwMSww eDBkLDB4MDMsMHgwMiwweDAxLDB4MDcsMHgwMCwweDAwLDB4MDAsMHgwMCB9LCBBVl9DSF9TSURF X0xFRlQsICAgICAgICAgICAgIEFWX0FVRElPX1NFUlZJQ0VfVFlQRV9NQUlOIH0sIC8vIExlZnQg U2lkZSBTdXJyb3VuZAo+ICsgICAgeyB7IDB4MDYsMHgwZSwweDJiLDB4MzQsMHgwNCwweDAxLDB4 MDEsMHgwZCwweDAzLDB4MDIsMHgwMSwweDA4LDB4MDAsMHgwMCwweDAwLDB4MDAgfSwgQVZfQ0hf U0lERV9SSUdIVCwgICAgICAgICAgICBBVl9BVURJT19TRVJWSUNFX1RZUEVfTUFJTiB9LCAvLyBS aWdodCBTaWRlIFN1cnJvdW5kCj4gKyAgICB7IHsgMHgwNiwweDBlLDB4MmIsMHgzNCwweDA0LDB4 MDEsMHgwMSwweDBkLDB4MDMsMHgwMiwweDAxLDB4MDksMHgwMCwweDAwLDB4MDAsMHgwMCB9LCBB Vl9DSF9CQUNLX0xFRlQsICAgICAgICAgICAgIEFWX0FVRElPX1NFUlZJQ0VfVFlQRV9NQUlOIH0s IC8vIExlZnQgUmVhciBTdXJyb3VuZAo+ICsgICAgeyB7IDB4MDYsMHgwZSwweDJiLDB4MzQsMHgw NCwweDAxLDB4MDEsMHgwZCwweDAzLDB4MDIsMHgwMSwweDBhLDB4MDAsMHgwMCwweDAwLDB4MDAg fSwgQVZfQ0hfQkFDS19SSUdIVCwgICAgICAgICAgICBBVl9BVURJT19TRVJWSUNFX1RZUEVfTUFJ TiB9LCAvLyBSaWdodCBSZWFyIFN1cnJvdW5kCj4gKyAgICB7IHsgMHgwNiwweDBlLDB4MmIsMHgz NCwweDA0LDB4MDEsMHgwMSwweDBkLDB4MDMsMHgwMiwweDAxLDB4MGIsMHgwMCwweDAwLDB4MDAs MHgwMCB9LCBBVl9DSF9GUk9OVF9MRUZUX09GX0NFTlRFUiwgIEFWX0FVRElPX1NFUlZJQ0VfVFlQ RV9NQUlOIH0sIC8vIExlZnQgQ2VudGVyCj4gKyAgICB7IHsgMHgwNiwweDBlLDB4MmIsMHgzNCww eDA0LDB4MDEsMHgwMSwweDBkLDB4MDMsMHgwMiwweDAxLDB4MGMsMHgwMCwweDAwLDB4MDAsMHgw MCB9LCBBVl9DSF9GUk9OVF9SSUdIVF9PRl9DRU5URVIsIEFWX0FVRElPX1NFUlZJQ0VfVFlQRV9N QUlOIH0sIC8vIFJpZ2h0IENlbnRlcgo+ICsgICAgeyB7IDB4MDYsMHgwZSwweDJiLDB4MzQsMHgw NCwweDAxLDB4MDEsMHgwZCwweDAzLDB4MDIsMHgwMSwweDBkLDB4MDAsMHgwMCwweDAwLDB4MDAg fSwgQVZfQ0hfQkFDS19DRU5URVIsICAgICAgICAgICBBVl9BVURJT19TRVJWSUNFX1RZUEVfTUFJ TiB9LCAvLyBDZW50ZXIgU3Vycm91bmQKPiArICAgIHsgeyAweDA2LDB4MGUsMHgyYiwweDM0LDB4 MDQsMHgwMSwweDAxLDB4MGQsMHgwMywweDAyLDB4MDEsMHgwZSwweDAwLDB4MDAsMHgwMCwweDAw IH0sIEFWX0NIX0ZST05UX0NFTlRFUiwgICAgICAgICAgQVZfQVVESU9fU0VSVklDRV9UWVBFX1ZJ U1VBTExZX0lNUEFJUkVEIH0sIC8vIEhlYXJpbmcgaW1wYWlyZWQgYXVkaW8gY2hhbm5lbAo+ICsg ICAgeyB7IDB4MDYsMHgwZSwweDJiLDB4MzQsMHgwNCwweDAxLDB4MDEsMHgwZCwweDAzLDB4MDIs MHgwMSwweDBmLDB4MDAsMHgwMCwweDAwLDB4MDAgfSwgQVZfQ0hfRlJPTlRfQ0VOVEVSLCAgICAg ICAgICBBVl9BVURJT19TRVJWSUNFX1RZUEVfSEVBUklOR19JTVBBSVJFRCB9LCAvLyBWaXN1YWxs eSBpbXBhaXJlZCBuYXJyYXRpdmUgYXVkaW8gY2hhbm5lbAo+ICsgICAgeyB7IDB4MDYsMHgwZSww eDJiLDB4MzQsMHgwNCwweDAxLDB4MDEsMHgwZCwweDAzLDB4MDIsMHgwMSwweDMwLDB4MDEsMHgw MSwweDAwLDB4MDAgfSwgQVZfQ0hfVE9QX0ZST05UX0xFRlQsICAgICAgICBBVl9BVURJT19TRVJW SUNFX1RZUEVfTUFJTiB9LCAvLyBMZWZ0IEhlaWdodAo+ICsgICAgeyB7IDB4MDYsMHgwZSwweDJi LDB4MzQsMHgwNCwweDAxLDB4MDEsMHgwZCwweDAzLDB4MDIsMHgwMSwweDMwLDB4MDEsMHgwMiww eDAwLDB4MDAgfSwgQVZfQ0hfVE9QX0ZST05UX1JJR0hULCAgICAgICBBVl9BVURJT19TRVJWSUNF X1RZUEVfTUFJTiB9LCAvLyBSaWdodCBIZWlnaHQKPiArICAgIHsgeyAweDA2LDB4MGUsMHgyYiww eDM0LDB4MDQsMHgwMSwweDAxLDB4MGQsMHgwMywweDAyLDB4MDEsMHgzMCwweDAxLDB4MDMsMHgw MCwweDAwIH0sIEFWX0NIX1RPUF9GUk9OVF9DRU5URVIsICAgICAgQVZfQVVESU9fU0VSVklDRV9U WVBFX01BSU4gfSwgLy8gQ2VudGVyIEhlaWdodAo+ICsgICAgeyB7IDB4MDYsMHgwZSwweDJiLDB4 MzQsMHgwNCwweDAxLDB4MDEsMHgwZCwweDAzLDB4MDIsMHgwMSwweDMwLDB4MDEsMHgwNCwweDAw LDB4MDAgfSwgQVZfQ0hfVE9QX1NJREVfTEVGVCwgICAgICAgICBBVl9BVURJT19TRVJWSUNFX1RZ UEVfTUFJTiB9LCAvLyBMZWZ0IFN1cnJvdW5kIEhlaWdodAo+ICsgICAgeyB7IDB4MDYsMHgwZSww eDJiLDB4MzQsMHgwNCwweDAxLDB4MDEsMHgwZCwweDAzLDB4MDIsMHgwMSwweDMwLDB4MDEsMHgw NSwweDAwLDB4MDAgfSwgQVZfQ0hfVE9QX1NJREVfUklHSFQsICAgICAgICBBVl9BVURJT19TRVJW SUNFX1RZUEVfTUFJTiB9LCAvLyBSaWdodCBTdXJyb3VuZCBIZWlnaHQKPiArICAgIHsgeyAweDA2 LDB4MGUsMHgyYiwweDM0LDB4MDQsMHgwMSwweDAxLDB4MGQsMHgwMywweDAyLDB4MDEsMHgzMCww eDAxLDB4MDYsMHgwMCwweDAwIH0sIEFWX0NIX1RPUF9TSURFX0xFRlQsICAgICAgICAgQVZfQVVE SU9fU0VSVklDRV9UWVBFX01BSU4gfSwgLy8gTGVmdCBTaWRlIFN1cnJvdW5kIEhlaWdodAo+ICsg ICAgeyB7IDB4MDYsMHgwZSwweDJiLDB4MzQsMHgwNCwweDAxLDB4MDEsMHgwZCwweDAzLDB4MDIs MHgwMSwweDMwLDB4MDEsMHgwNywweDAwLDB4MDAgfSwgQVZfQ0hfVE9QX1NJREVfUklHSFQsICAg ICAgICBBVl9BVURJT19TRVJWSUNFX1RZUEVfTUFJTiB9LCAvLyBSaWdodCBTaWRlIFN1cnJvdW5k IEhlaWdodAo+ICsgICAgeyB7IDB4MDYsMHgwZSwweDJiLDB4MzQsMHgwNCwweDAxLDB4MDEsMHgw ZCwweDAzLDB4MDIsMHgwMSwweDMwLDB4MDEsMHgwOCwweDAwLDB4MDAgfSwgQVZfQ0hfVE9QX0JB Q0tfTEVGVCwgICAgICAgICBBVl9BVURJT19TRVJWSUNFX1RZUEVfTUFJTiB9LCAvLyBMZWZ0IFJl YXIgU3Vycm91bmQgSGVpZ2h0Cj4gKyAgICB7IHsgMHgwNiwweDBlLDB4MmIsMHgzNCwweDA0LDB4 MDEsMHgwMSwweDBkLDB4MDMsMHgwMiwweDAxLDB4MzAsMHgwMSwweDA5LDB4MDAsMHgwMCB9LCBB Vl9DSF9UT1BfQkFDS19SSUdIVCwgICAgICAgIEFWX0FVRElPX1NFUlZJQ0VfVFlQRV9NQUlOIH0s IC8vIFJpZ2h0IFJlYXIgU3Vycm91bmQgSGVpZ2h0Cj4gKyAgICB7IHsgMHgwNiwweDBlLDB4MmIs MHgzNCwweDA0LDB4MDEsMHgwMSwweDBkLDB4MDMsMHgwMiwweDAxLDB4MzAsMHgwMSwweDBhLDB4 MDAsMHgwMCB9LCBBVl9DSF9UT1BfU0lERV9MRUZULCAgICAgICAgIEFWX0FVRElPX1NFUlZJQ0Vf VFlQRV9NQUlOIH0sIC8vIExlZnQgVG9wIFN1cnJvdW5kCj4gKyAgICB7IHsgMHgwNiwweDBlLDB4 MmIsMHgzNCwweDA0LDB4MDEsMHgwMSwweDBkLDB4MDMsMHgwMiwweDAxLDB4MzAsMHgwMSwweDBi LDB4MDAsMHgwMCB9LCBBVl9DSF9UT1BfU0lERV9SSUdIVCwgICAgICAgIEFWX0FVRElPX1NFUlZJ Q0VfVFlQRV9NQUlOIH0sIC8vIFJpZ2h0IFRvcCBTdXJyb3VuZAo+ICsgICAgeyB7IDB4MDYsMHgw ZSwweDJiLDB4MzQsMHgwNCwweDAxLDB4MDEsMHgwZCwweDAzLDB4MDIsMHgwMSwweDMwLDB4MDEs MHgwYywweDAwLDB4MDAgfSwgQVZfQ0hfVE9QX0NFTlRFUiwgICAgICAgICAgICBBVl9BVURJT19T RVJWSUNFX1RZUEVfTUFJTiB9LCAvLyBUb3AgU3Vycm91bmQKPiArICAgIHsgeyAweDA2LDB4MGUs MHgyYiwweDM0LDB4MDQsMHgwMSwweDAxLDB4MGQsMHgwMywweDAyLDB4MDEsMHgzMCwweDAxLDB4 MGQsMHgwMCwweDAwIH0sIEFWX0NIX0xPV19GUkVRVUVOQ1ksICAgICAgICAgQVZfQVVESU9fU0VS VklDRV9UWVBFX01BSU4gfSwgLy8gTGVmdCBGcm9udCBTdWJ3b29mZXIKPiArICAgIHsgeyAweDA2 LDB4MGUsMHgyYiwweDM0LDB4MDQsMHgwMSwweDAxLDB4MGQsMHgwMywweDAyLDB4MDEsMHgzMCww eDAxLDB4MGUsMHgwMCwweDAwIH0sIEFWX0NIX0xPV19GUkVRVUVOQ1lfMiwgICAgICAgQVZfQVVE SU9fU0VSVklDRV9UWVBFX01BSU4gfSwgLy8gUmlnaHQgRnJvbnQgU3Vid29vZmVyCj4gKyAgICB7 IHsgMHgwNiwweDBlLDB4MmIsMHgzNCwweDA0LDB4MDEsMHgwMSwweDBkLDB4MDMsMHgwMiwweDAx LDB4MzAsMHgwMSwweDBmLDB4MDAsMHgwMCB9LCBBVl9DSF9UT1BfQkFDS19DRU5URVIsICAgICAg IEFWX0FVRElPX1NFUlZJQ0VfVFlQRV9NQUlOIH0sIC8vIENlbnRlciBSZWFyIEhlaWdodAo+ICsg ICAgeyB7IDB4MDYsMHgwZSwweDJiLDB4MzQsMHgwNCwweDAxLDB4MDEsMHgwZCwweDAzLDB4MDIs MHgwMSwweDMwLDB4MDEsMHgxMCwweDAwLDB4MDAgfSwgQVZfQ0hfQkFDS19DRU5URVIsICAgICAg ICAgICBBVl9BVURJT19TRVJWSUNFX1RZUEVfTUFJTiB9LCAvLyBDZW50ZXIgUmVhcgo+ICsgICAg eyB7IDB4MDYsMHgwZSwweDJiLDB4MzQsMHgwNCwweDAxLDB4MDEsMHgwZCwweDAzLDB4MDIsMHgw MSwweDMwLDB4MDEsMHgxMSwweDAwLDB4MDAgfSwgQVZfQ0hfQk9UVE9NX0ZST05UX0xFRlQsICAg ICBBVl9BVURJT19TRVJWSUNFX1RZUEVfTUFJTiB9LCAvLyBMZWZ0IEJlbG93Cj4gKyAgICB7IHsg MHgwNiwweDBlLDB4MmIsMHgzNCwweDA0LDB4MDEsMHgwMSwweDBkLDB4MDMsMHgwMiwweDAxLDB4 MzAsMHgwMSwweDEyLDB4MDAsMHgwMCB9LCBBVl9DSF9CT1RUT01fRlJPTlRfUklHSFQsICAgIEFW X0FVRElPX1NFUlZJQ0VfVFlQRV9NQUlOIH0sIC8vIFJpZ2h0IEJlbG93Cj4gKyAgICB7IHsgMHgw NiwweDBlLDB4MmIsMHgzNCwweDA0LDB4MDEsMHgwMSwweDBkLDB4MDMsMHgwMiwweDAxLDB4MzAs MHgwMSwweDEzLDB4MDAsMHgwMCB9LCBBVl9DSF9CT1RUT01fRlJPTlRfQ0VOVEVSLCAgIEFWX0FV RElPX1NFUlZJQ0VfVFlQRV9NQUlOIH0sIC8vIENlbnRlciBCZWxvdwo+ICsgICAgeyB7IDB4MDAs MHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4 MDAsMHgwMCwweDAwLDB4MDAgfSwgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICBBVl9BVURJ T19TRVJWSUNFX1RZUEVfTkIgfSwKPiArfTsKPiArCj4gIHN0YXRpYyBNWEZXcmFwcGluZ1NjaGVt ZSBteGZfZ2V0X3dyYXBwaW5nX2tpbmQoVUlEICplc3NlbmNlX2NvbnRhaW5lcl91bCkKPiAgewo+ ICAgICAgaW50IHZhbDsKPiBAQCAtMjI5Miw2ICsyNDI4LDE1NiBAQCBzdGF0aWMgZW51bSBBVkNv bG9yUmFuZ2UgbXhmX2dldF9jb2xvcl9yYW5nZShNWEZDb250ZXh0ICpteGYsIE1YRkRlc2NyaXB0 b3IgKmRlcwo+ICAgICAgcmV0dXJuIEFWQ09MX1JBTkdFX1VOU1BFQ0lGSUVEOwo+ICB9Cj4KPiAr c3RhdGljIGludCBpc19wY20oZW51bSBBVkNvZGVjSUQgY29kZWNfaWQpCj4gK3sKPiArICAgIC8q IHdlIG9ubHkgY2FyZSBhYm91dCAibm9ybWFsIiBQQ00gY29kZWNzIHVudGlsIHdlIGdldCBzYW1w bGVzICovCj4gKyAgICByZXR1cm4gY29kZWNfaWQgPj0gQVZfQ09ERUNfSURfUENNX1MxNkxFICYm IGNvZGVjX2lkIDwgQVZfQ09ERUNfSURfUENNX1MyNERBVUQ7Cj4gK30KPiArCj4gK3N0YXRpYyBp bnQgc2V0X2xhbmd1YWdlKEFWRm9ybWF0Q29udGV4dCAqcywgY29uc3QgY2hhciAqcmZjNTY0Niwg QVZEaWN0aW9uYXJ5ICoqbWV0KQo+ICt7Cj4gKyAgICAvLyBsYW5ndWFnZSBhYmJyIHNob3VsZCBj b250YWluIGF0IGxlYXN0IDIgY2hhcnMKPiArICAgIGlmIChyZmM1NjQ2ICYmIHN0cmxlbihyZmM1 NjQ2KSA+IDEpIHsKPiArICAgICAgICBjaGFyIHByaW1hcnlfdGFnWzRdID0KPiArICAgICAgICAg ICAge3JmYzU2NDZbMF0sIHJmYzU2NDZbMV0sIHJmYzU2NDZbMl0gIT0gJy0nID8gcmZjNTY0Nlsy XSA6ICdcMCcsICdcMCd9Owo+ICsKPiArICAgICAgICBjb25zdCBjaGFyICppc282MzkyICAgICAg ID0gZmZfY29udmVydF9sYW5nX3RvKHByaW1hcnlfdGFnLAo+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVZfTEFOR19JU082MzlfMl9CSUJM KTsKPiArICAgICAgICBpZiAoaXNvNjM5MikKPiArICAgICAgICAgICAgcmV0dXJuKGF2X2RpY3Rf c2V0KG1ldCwgImxhbmd1YWdlIiwgaXNvNjM5MiwgMCkpOwo+ICsgICAgfQo+ICsgICAgcmV0dXJu IDA7Cj4gK30KPiArCj4gK3N0YXRpYyBNWEZNQ0FTdWJEZXNjcmlwdG9yICpmaW5kX21jYV9saW5r X2lkKE1YRkNvbnRleHQgKm14ZiwgZW51bSBNWEZNZXRhZGF0YVNldFR5cGUgdHlwZSwgVUlEICpt Y2FfbGlua19pZCkKPiArewo+ICsgICAgZm9yIChpbnQgayA9IDA7IGsgPCBteGYtPm1ldGFkYXRh X3NldHNfY291bnQ7IGsrKykgewo+ICsgICAgICAgIE1YRk1DQVN1YkRlc2NyaXB0b3IgKmdyb3Vw ID0gKE1YRk1DQVN1YkRlc2NyaXB0b3IqKW14Zi0+bWV0YWRhdGFfc2V0c1trXTsKPiArICAgICAg ICBpZiAoZ3JvdXAtPm1ldGEudHlwZSA9PSB0eXBlICYmICFtZW1jbXAoJmdyb3VwLT5tY2FfbGlu a19pZCwgbWNhX2xpbmtfaWQsIDE2KSkKPiArICAgICAgICAgICAgcmV0dXJuIGdyb3VwOwo+ICsg ICAgfQo+ICsgICAgcmV0dXJuIE5VTEw7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgcGFyc2VfbWNh X2xhYmVscyhNWEZDb250ZXh0ICpteGYsIE1YRlRyYWNrICpzb3VyY2VfdHJhY2ssIE1YRkRlc2Ny aXB0b3IgKmRlc2NyaXB0b3IsIEFWU3RyZWFtICpzdCkKPiArewo+ICsgICAgdWludDY0X3Qgcm91 dGluZ1tGRl9TQU5FX05CX0NIQU5ORUxTXSA9IHswfTsKPiArICAgIGNoYXIgKmxhbmd1YWdlID0g TlVMTDsKPiArICAgIGludCBhbWJpZ291c19sYW5ndWFnZSA9IDA7Cj4gKyAgICBlbnVtIEFWQXVk aW9TZXJ2aWNlVHlwZSBzZXJ2aWNlX3R5cGUgPSBBVl9BVURJT19TRVJWSUNFX1RZUEVfTkI7Cj4g KyAgICBpbnQgYW1iaWdvdXNfc2VydmljZV90eXBlID0gMDsKPiArICAgIGludCBoYXNfY2hhbm5l bF9sYWJlbCA9IDA7Cj4gKwo+ICsgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBkZXNjcmlwdG9yLT5z dWJfZGVzY3JpcHRvcnNfY291bnQ7IGkrKykgewo+ICsgICAgICAgIGNoYXIgKmNoYW5uZWxfbGFu Z3VhZ2U7Cj4gKwo+ICsgICAgICAgIE1YRk1DQVN1YkRlc2NyaXB0b3IgKmxhYmVsID0gbXhmX3Jl c29sdmVfc3Ryb25nX3JlZihteGYsICZkZXNjcmlwdG9yLT5zdWJfZGVzY3JpcHRvcnNfcmVmc1tp XSwgQXVkaW9DaGFubmVsTGFiZWxTdWJEZXNjcmlwdG9yKTsKPiArICAgICAgICBpZiAobGFiZWwg PT0gTlVMTCkKPiArICAgICAgICAgICAgY29udGludWU7Cj4gKwo+ICsgICAgICAgIGhhc19jaGFu bmVsX2xhYmVsID0gMTsKPiArICAgICAgICBmb3IgKGNvbnN0IE1YRkNoYW5uZWxPcmRlcmluZ1VM KiBjaGFubmVsX29yZGVyaW5nID0gbXhmX2NoYW5uZWxfb3JkZXJpbmc7IGNoYW5uZWxfb3JkZXJp bmctPnVpZFswXTsgY2hhbm5lbF9vcmRlcmluZysrKSB7Cj4gKyAgICAgICAgICAgIGlmIChJU19L TFZfS0VZKGNoYW5uZWxfb3JkZXJpbmctPnVpZCwgbGFiZWwtPm1jYV9sYWJlbF9kaWN0aW9uYXJ5 X2lkKSkgewo+ICsgICAgICAgICAgICAgICAgaW50IHRhcmdldF9jaGFubmVsID0gbGFiZWwtPm1j YV9jaGFubmVsX2lkOwo+ICsgICAgICAgICAgICAgICAgaWYgKHRhcmdldF9jaGFubmVsID09IDAg JiYgZGVzY3JpcHRvci0+Y2hhbm5lbHMgPT0gMSkKPiArICAgICAgICAgICAgICAgICAgICB0YXJn ZXRfY2hhbm5lbCA9IDE7Cj4gKyAgICAgICAgICAgICAgICBpZiAodGFyZ2V0X2NoYW5uZWwgPD0g MCB8fCB0YXJnZXRfY2hhbm5lbCA+IGRlc2NyaXB0b3ItPmNoYW5uZWxzKSB7Cj4gKyAgICAgICAg ICAgICAgICAgICAgYXZfbG9nKG14Zi0+ZmMsIEFWX0xPR19FUlJPUiwgIkF1ZGlvQ2hhbm5lbExh YmVsU3ViRGVzY3JpcHRvciBoYXMgaW52YWxpZCBNQ0EgY2hhbm5lbCBJRCAlZFxuIiwgdGFyZ2V0 X2NoYW5uZWwpOwo+ICsgICAgICAgICAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSURE QVRBOwo+ICsgICAgICAgICAgICAgICAgfQo+ICsgICAgICAgICAgICAgICAgcm91dGluZ1t0YXJn ZXRfY2hhbm5lbCAtIDFdID0gY2hhbm5lbF9vcmRlcmluZy0+bGF5b3V0X21hc2s7Cj4gKyAgICAg ICAgICAgICAgICBpZiAoc2VydmljZV90eXBlID09IEFWX0FVRElPX1NFUlZJQ0VfVFlQRV9OQikK PiArICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlX3R5cGUgPSBjaGFubmVsX29yZGVyaW5nLT5z ZXJ2aWNlX3R5cGU7Cj4gKyAgICAgICAgICAgICAgICBlbHNlIGlmIChzZXJ2aWNlX3R5cGUgIT0g Y2hhbm5lbF9vcmRlcmluZy0+c2VydmljZV90eXBlKQo+ICsgICAgICAgICAgICAgICAgICAgIGFt Ymlnb3VzX3NlcnZpY2VfdHlwZSA9IDE7Cj4gKyAgICAgICAgICAgICAgICBicmVhazsKPiArICAg ICAgICAgICAgfQo+ICsgICAgICAgIH0KPiArCj4gKyAgICAgICAgY2hhbm5lbF9sYW5ndWFnZSA9 IGxhYmVsLT5sYW5ndWFnZTsKPiArICAgICAgICBpZiAoIWNoYW5uZWxfbGFuZ3VhZ2UpIHsKPiAr ICAgICAgICAgICAgTVhGTUNBU3ViRGVzY3JpcHRvciAqZ3JvdXAgPSBmaW5kX21jYV9saW5rX2lk KG14ZiwgU291bmRmaWVsZEdyb3VwTGFiZWxTdWJEZXNjcmlwdG9yLCAmbGFiZWwtPnNvdW5kZmll bGRfZ3JvdXBfbGlua19pZCk7Cj4gKyAgICAgICAgICAgIGlmIChncm91cCkgewo+ICsgICAgICAg ICAgICAgICAgY2hhbm5lbF9sYW5ndWFnZSA9IGdyb3VwLT5sYW5ndWFnZTsKPiArICAgICAgICAg ICAgICAgIGlmICghY2hhbm5lbF9sYW5ndWFnZSAmJiBncm91cC0+Z3JvdXBfb2Zfc291bmRmaWVs ZF9ncm91cHNfbGlua19pZF9jb3VudCkgewo+ICsgICAgICAgICAgICAgICAgICAgIE1YRk1DQVN1 YkRlc2NyaXB0b3IgKnN1cGVyZ3JvdXAgPSBmaW5kX21jYV9saW5rX2lkKG14ZiwgR3JvdXBPZlNv dW5kZmllbGRHcm91cHNMYWJlbFN1YkRlc2NyaXB0b3IsCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXAt Pmdyb3VwX29mX3NvdW5kZmllbGRfZ3JvdXBzX2xpbmtfaWRfcmVmcyk7Cj4gKyAgICAgICAgICAg ICAgICAgICAgaWYgKHN1cGVyZ3JvdXApCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5u ZWxfbGFuZ3VhZ2UgPSBzdXBlcmdyb3VwLT5sYW5ndWFnZTsKPiArICAgICAgICAgICAgICAgIH0K PiArICAgICAgICAgICAgfQo+ICsgICAgICAgIH0KPiArICAgICAgICBpZiAoY2hhbm5lbF9sYW5n dWFnZSkgewo+ICsgICAgICAgICAgICBpZiAobGFuZ3VhZ2UgJiYgc3RyY21wKGxhbmd1YWdlLCBj aGFubmVsX2xhbmd1YWdlKSkKPiArICAgICAgICAgICAgICAgIGFtYmlnb3VzX2xhbmd1YWdlID0g MTsKPiArICAgICAgICAgICAgZWxzZQo+ICsgICAgICAgICAgICAgICAgbGFuZ3VhZ2UgPSBjaGFu bmVsX2xhbmd1YWdlOwo+ICsgICAgICAgIH0KPiArICAgIH0KPiArCj4gKyAgICBpZiAobGFuZ3Vh Z2UgJiYgIWFtYmlnb3VzX2xhbmd1YWdlKSB7Cj4gKyAgICAgICBpbnQgcmV0ID0gc2V0X2xhbmd1 YWdlKG14Zi0+ZmMsIGxhbmd1YWdlLCAmc3QtPm1ldGFkYXRhKTsKPiArICAgICAgIGlmIChyZXQg PCAwKQo+ICsgICAgICAgICAgIHJldHVybiByZXQ7Cj4gKyAgICB9Cj4gKwo+ICsgICAgaWYgKHNl cnZpY2VfdHlwZSAhPSBBVl9BVURJT19TRVJWSUNFX1RZUEVfTkIgJiYgc2VydmljZV90eXBlICE9 IEFWX0FVRElPX1NFUlZJQ0VfVFlQRV9NQUlOICYmICFhbWJpZ291c19zZXJ2aWNlX3R5cGUpIHsK PiArICAgICAgICBlbnVtIEFWQXVkaW9TZXJ2aWNlVHlwZSAqYXN0Owo+ICsgICAgICAgIHVpbnQ4 X3QqIHNpZGVfZGF0YSA9IGF2X3N0cmVhbV9uZXdfc2lkZV9kYXRhKHN0LCBBVl9QS1RfREFUQV9B VURJT19TRVJWSUNFX1RZUEUsIHNpemVvZigqYXN0KSk7Cj4gKyAgICAgICAgaWYgKCFzaWRlX2Rh dGEpCj4gKyAgICAgICAgICAgIHJldHVybiBBVkVSUk9SKEVOT01FTSk7Cj4gKyAgICAgICAgYXN0 ID0gKGVudW0gQVZBdWRpb1NlcnZpY2VUeXBlKilzaWRlX2RhdGE7Cj4gKyAgICAgICAgKmFzdCA9 IHNlcnZpY2VfdHlwZTsKPiArICAgIH0KPiArCj4gKyAgICBpZiAoaGFzX2NoYW5uZWxfbGFiZWwp IHsKPiArICAgICAgICB1aW50NjRfdCBjaGFubmVsX2xheW91dCA9IDA7Cj4gKyAgICAgICAgaW50 IHJlcXVpcmVfcmVvcmRlciA9IDA7Cj4gKwo+ICsgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwg ZGVzY3JpcHRvci0+Y2hhbm5lbHM7IGkrKykgewo+ICsgICAgICAgICAgICBpZiAoIXJvdXRpbmdb aV0pIHsKPiArICAgICAgICAgICAgICAgIGF2X2xvZyhteGYtPmZjLCBBVl9MT0dfV0FSTklORywg IkRlc2lnbmF0aW9uIG9mIGF1ZGlvIGNoYW5uZWwgJWQgaW4gc3RyZWFtICMlZCBpcyB1bmtub3du IG9yIHVuc3VwcG9ydGVkLCAiCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICJmYWxsaW5nIGJhY2sgdG8gdW5rbm93biBjaGFubmVsIGxheW91dFxuIiwg c3QtPmluZGV4LCBpKTsKPiArICAgICAgICAgICAgICAgIHJldHVybiAwOwo+ICsgICAgICAgICAg ICB9Cj4gKyAgICAgICAgICAgIGlmIChjaGFubmVsX2xheW91dCAmIHJvdXRpbmdbaV0pIHsKPiAr ICAgICAgICAgICAgICAgIGF2X2xvZyhteGYtPmZjLCBBVl9MT0dfV0FSTklORywgIiVzIGF1ZGlv IGNoYW5uZWwgaXMgdXNlZCBtdWx0aXBsZSB0aW1lcyBpbiBzdHJlYW0gIyVkLCAiCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmYWxsaW5nIGJhY2sg dG8gdW5rbm93biBjaGFubmVsIGxheW91dFxuIiwKPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgYXZfZ2V0X2NoYW5uZWxfbmFtZShyb3V0aW5nW2ldKSwg c3QtPmluZGV4KTsKPiArICAgICAgICAgICAgICAgIHJldHVybiAwOwo+ICsgICAgICAgICAgICB9 Cj4gKyAgICAgICAgICAgIGlmIChyb3V0aW5nW2ldIDwgY2hhbm5lbF9sYXlvdXQpCj4gKyAgICAg ICAgICAgICAgICByZXF1aXJlX3Jlb3JkZXIgPSAxOwo+ICsgICAgICAgICAgICBjaGFubmVsX2xh eW91dCB8PSByb3V0aW5nW2ldOwo+ICsgICAgICAgIH0KPiArCj4gKyAgICAgICAgYXZfYXNzZXJ0 MChkZXNjcmlwdG9yLT5jaGFubmVscyA9PSBhdl9nZXRfY2hhbm5lbF9sYXlvdXRfbmJfY2hhbm5l bHMoY2hhbm5lbF9sYXlvdXQpKTsKPiArCj4gKyAgICAgICAgaWYgKHJlcXVpcmVfcmVvcmRlcikg ewo+ICsgICAgICAgICAgICBpZiAobXhmLT5za2lwX2F1ZGlvX3Jlb3JkZXJpbmcpCj4gKyAgICAg ICAgICAgICAgICByZXR1cm4gMDsKPiArICAgICAgICAgICAgaWYgKCFpc19wY20oc3QtPmNvZGVj cGFyLT5jb2RlY19pZCkpIHsKPiArICAgICAgICAgICAgICAgIGF2X2xvZyhteGYtPmZjLCBBVl9M T0dfV0FSTklORywgIkF1ZGlvIGNoYW5uZWwgcmVvcmRlcmluZyBmb3Igc3RyZWFtICMlZCBpcyBu b3Qgc3VwcG9ydGVkIGJlY2F1c2UgaXQgaXMgdXNpbmcgYSBub24tUENNIGNvZGVjLCAiCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmYWxsaW5nIGJh Y2sgdG8gdW5rbm93biBjaGFubmVsIGxheW91dFxuIiwgc3QtPmluZGV4KTsKPiArICAgICAgICAg ICAgICAgIHJldHVybiAwOwo+ICsgICAgICAgICAgICB9Cj4gKyAgICAgICAgICAgIGF2X2xvZyht eGYtPmZjLCBBVl9MT0dfVkVSQk9TRSwgIk1DQSBtYXBwaW5nIGZvciBzdHJlYW0gIyVkOiAiLCBz dC0+aW5kZXgpOwo+ICsgICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IGRlc2NyaXB0b3It PmNoYW5uZWxzOyBqKyspIHsKPiArICAgICAgICAgICAgICAgIGludCByZW9yZGVyZWRfY2hhbm5l bCA9IGF2X2dldF9jaGFubmVsX2xheW91dF9jaGFubmVsX2luZGV4KGNoYW5uZWxfbGF5b3V0LCBy b3V0aW5nW2pdKTsKPiArICAgICAgICAgICAgICAgIGF2X2Fzc2VydDAocmVvcmRlcmVkX2NoYW5u ZWwgPj0gMCAmJiByZW9yZGVyZWRfY2hhbm5lbCA8IGRlc2NyaXB0b3ItPmNoYW5uZWxzKTsKPiAr ICAgICAgICAgICAgICAgIHNvdXJjZV90cmFjay0+Y2hhbm5lbF9vcmRlcmluZ1tqXSA9IHJlb3Jk ZXJlZF9jaGFubmVsOwo+ICsgICAgICAgICAgICAgICAgYXZfbG9nKG14Zi0+ZmMsIEFWX0xPR19W RVJCT1NFLCAiJXMlczogJWQtPiVkIiwgaiA/ICIsICIgOiAiIiwgYXZfZ2V0X2NoYW5uZWxfbmFt ZShyb3V0aW5nW2pdKSwgaiwgcmVvcmRlcmVkX2NoYW5uZWwpOwo+ICsgICAgICAgICAgICB9Cj4g KyAgICAgICAgICAgIGF2X2xvZyhteGYtPmZjLCBBVl9MT0dfVkVSQk9TRSwgIlxuIik7Cj4gKyAg ICAgICAgICAgIHNvdXJjZV90cmFjay0+cmVxdWlyZV9yZW9yZGVyaW5nID0gMTsKPiArICAgICAg ICB9Cj4gKwo+ICsgICAgICAgIHN0LT5jb2RlY3Bhci0+Y2hhbm5lbF9sYXlvdXQgPSBjaGFubmVs X2xheW91dDsKPiArICAgIH0KPiArCj4gKyAgICByZXR1cm4gMDsKPiArfQo+ICsKPiAgc3RhdGlj IGludCBteGZfcGFyc2Vfc3RydWN0dXJhbF9tZXRhZGF0YShNWEZDb250ZXh0ICpteGYpCj4gIHsK PiAgICAgIE1YRlBhY2thZ2UgKm1hdGVyaWFsX3BhY2thZ2UgPSBOVUxMOwo+IEBAIC0yNjg4LDYg KzI5NzQsMTUgQEAgc3RhdGljIGludCBteGZfcGFyc2Vfc3RydWN0dXJhbF9tZXRhZGF0YShNWEZD b250ZXh0ICpteGYpCj4gICAgICAgICAgICAgICAgICBzdGktPm5lZWRfcGFyc2luZyA9IEFWU1RS RUFNX1BBUlNFX0ZVTEw7Cj4gICAgICAgICAgICAgIH0KPiAgICAgICAgICAgICAgc3QtPmNvZGVj cGFyLT5iaXRzX3Blcl9jb2RlZF9zYW1wbGUgPSBhdl9nZXRfYml0c19wZXJfc2FtcGxlKHN0LT5j b2RlY3Bhci0+Y29kZWNfaWQpOwo+ICsKPiArICAgICAgICAgICAgaWYgKGRlc2NyaXB0b3ItPmNo YW5uZWxzIDw9IDAgfHwgZGVzY3JpcHRvci0+Y2hhbm5lbHMgPj0gRkZfU0FORV9OQl9DSEFOTkVM Uykgewo+ICsgICAgICAgICAgICAgICAgYXZfbG9nKG14Zi0+ZmMsIEFWX0xPR19FUlJPUiwgIklu dmFsaWQgbnVtYmVyIG9mIGNoYW5uZWxzICVkLCBtdXN0IGJlIGxlc3MgdGhhbiAlZFxuIiwgZGVz Y3JpcHRvci0+Y2hhbm5lbHMsIEZGX1NBTkVfTkJfQ0hBTk5FTFMpOwo+ICsgICAgICAgICAgICAg ICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Cj4gKyAgICAgICAgICAgIH0KPiArCj4gKyAg ICAgICAgICAgIHJldCA9IHBhcnNlX21jYV9sYWJlbHMobXhmLCBzb3VyY2VfdHJhY2ssIGRlc2Ny aXB0b3IsIHN0KTsKPiArICAgICAgICAgICAgaWYgKHJldCA8IDApCj4gKyAgICAgICAgICAgICAg ICByZXR1cm4gcmV0Owo+ICAgICAgICAgIH0gZWxzZSBpZiAoc3QtPmNvZGVjcGFyLT5jb2RlY190 eXBlID09IEFWTUVESUFfVFlQRV9EQVRBKSB7Cj4gICAgICAgICAgICAgIGVudW0gQVZNZWRpYVR5 cGUgdHlwZTsKPiAgICAgICAgICAgICAgY29udGFpbmVyX3VsID0gbXhmX2dldF9jb2RlY191bCht eGZfZGF0YV9lc3NlbmNlX2NvbnRhaW5lcl91bHMsIGVzc2VuY2VfY29udGFpbmVyX3VsKTsKPiBA QCAtMjg4OCw2ICszMTgzLDkgQEAgc3RhdGljIGNvbnN0IE1YRk1ldGFkYXRhUmVhZFRhYmxlRW50 cnkgbXhmX21ldGFkYXRhX3JlYWRfdGFibGVbXSA9IHsKPiAgICAgIHsgeyAweDA2LDB4MGUsMHgy YiwweDM0LDB4MDIsMHg1MywweDAxLDB4MDEsMHgwZCwweDAxLDB4MDEsMHgwMSwweDAxLDB4MDEs MHg1YywweDAwIH0sIG14Zl9yZWFkX2dlbmVyaWNfZGVzY3JpcHRvciwgc2l6ZW9mKE1YRkRlc2Ny aXB0b3IpLCBEZXNjcmlwdG9yIH0sIC8qIFZBTkMvVkJJIC0gU01QVEUgNDM2TSAqLwo+ICAgICAg eyB7IDB4MDYsMHgwZSwweDJiLDB4MzQsMHgwMiwweDUzLDB4MDEsMHgwMSwweDBkLDB4MDEsMHgw MSwweDAxLDB4MDEsMHgwMSwweDVlLDB4MDAgfSwgbXhmX3JlYWRfZ2VuZXJpY19kZXNjcmlwdG9y LCBzaXplb2YoTVhGRGVzY3JpcHRvciksIERlc2NyaXB0b3IgfSwgLyogTVBFRzJBdWRpb0Rlc2Ny aXB0b3IgKi8KPiAgICAgIHsgeyAweDA2LDB4MGUsMHgyYiwweDM0LDB4MDIsMHg1MywweDAxLDB4 MDEsMHgwZCwweDAxLDB4MDEsMHgwMSwweDAxLDB4MDEsMHg2NCwweDAwIH0sIG14Zl9yZWFkX2dl bmVyaWNfZGVzY3JpcHRvciwgc2l6ZW9mKE1YRkRlc2NyaXB0b3IpLCBEZXNjcmlwdG9yIH0sIC8q IERDIFRpbWVkIFRleHQgRGVzY3JpcHRvciAqLwo+ICsgICAgeyB7IDB4MDYsMHgwZSwweDJiLDB4 MzQsMHgwMiwweDUzLDB4MDEsMHgwMSwweDBkLDB4MDEsMHgwMSwweDAxLDB4MDEsMHgwMSwweDZi LDB4MDAgfSwgbXhmX3JlYWRfbWNhX3N1Yl9kZXNjcmlwdG9yLCBzaXplb2YoTVhGTUNBU3ViRGVz Y3JpcHRvciksIEF1ZGlvQ2hhbm5lbExhYmVsU3ViRGVzY3JpcHRvciB9LAo+ICsgICAgeyB7IDB4 MDYsMHgwZSwweDJiLDB4MzQsMHgwMiwweDUzLDB4MDEsMHgwMSwweDBkLDB4MDEsMHgwMSwweDAx LDB4MDEsMHgwMSwweDZjLDB4MDAgfSwgbXhmX3JlYWRfbWNhX3N1Yl9kZXNjcmlwdG9yLCBzaXpl b2YoTVhGTUNBU3ViRGVzY3JpcHRvciksIFNvdW5kZmllbGRHcm91cExhYmVsU3ViRGVzY3JpcHRv ciB9LAo+ICsgICAgeyB7IDB4MDYsMHgwZSwweDJiLDB4MzQsMHgwMiwweDUzLDB4MDEsMHgwMSww eDBkLDB4MDEsMHgwMSwweDAxLDB4MDEsMHgwMSwweDZkLDB4MDAgfSwgbXhmX3JlYWRfbWNhX3N1 Yl9kZXNjcmlwdG9yLCBzaXplb2YoTVhGTUNBU3ViRGVzY3JpcHRvciksIEdyb3VwT2ZTb3VuZGZp ZWxkR3JvdXBzTGFiZWxTdWJEZXNjcmlwdG9yIH0sCj4gICAgICB7IHsgMHgwNiwweDBlLDB4MmIs MHgzNCwweDAyLDB4NTMsMHgwMSwweDAxLDB4MGQsMHgwMSwweDAxLDB4MDEsMHgwMSwweDAxLDB4 M0EsMHgwMCB9LCBteGZfcmVhZF90cmFjaywgc2l6ZW9mKE1YRlRyYWNrKSwgVHJhY2sgfSwgLyog U3RhdGljIFRyYWNrICovCj4gICAgICB7IHsgMHgwNiwweDBlLDB4MmIsMHgzNCwweDAyLDB4NTMs MHgwMSwweDAxLDB4MGQsMHgwMSwweDAxLDB4MDEsMHgwMSwweDAxLDB4M0IsMHgwMCB9LCBteGZf cmVhZF90cmFjaywgc2l6ZW9mKE1YRlRyYWNrKSwgVHJhY2sgfSwgLyogR2VuZXJpYyBUcmFjayAq Lwo+ICAgICAgeyB7IDB4MDYsMHgwZSwweDJiLDB4MzQsMHgwMiwweDUzLDB4MDEsMHgwMSwweDBk LDB4MDEsMHgwMSwweDAxLDB4MDEsMHgwMSwweDE0LDB4MDAgfSwgbXhmX3JlYWRfdGltZWNvZGVf Y29tcG9uZW50LCBzaXplb2YoTVhGVGltZWNvZGVDb21wb25lbnQpLCBUaW1lY29kZUNvbXBvbmVu dCB9LAo+IEBAIC0zMTg3LDEyICszNDg1LDYgQEAgc3RhdGljIHZvaWQgbXhmX2NvbXB1dGVfZXNz ZW5jZV9jb250YWluZXJzKEFWRm9ybWF0Q29udGV4dCAqcykKPiAgICAgIH0KPiAgfQo+Cj4gLXN0 YXRpYyBpbnQgaXNfcGNtKGVudW0gQVZDb2RlY0lEIGNvZGVjX2lkKQo+IC17Cj4gLSAgICAvKiB3 ZSBvbmx5IGNhcmUgYWJvdXQgIm5vcm1hbCIgUENNIGNvZGVjcyB1bnRpbCB3ZSBnZXQgc2FtcGxl cyAqLwo+IC0gICAgcmV0dXJuIGNvZGVjX2lkID49IEFWX0NPREVDX0lEX1BDTV9TMTZMRSAmJiBj b2RlY19pZCA8IEFWX0NPREVDX0lEX1BDTV9TMjREQVVEOwo+IC19Cj4gLQo+ICBzdGF0aWMgTVhG SW5kZXhUYWJsZSAqbXhmX2ZpbmRfaW5kZXhfdGFibGUoTVhGQ29udGV4dCAqbXhmLCBpbnQgaW5k ZXhfc2lkKQo+ICB7Cj4gICAgICBpbnQgaTsKPiBAQCAtMzYxOSw2ICszOTExLDI1IEBAIHN0YXRp YyBpbnQgbXhmX3NldF9wdHMoTVhGQ29udGV4dCAqbXhmLCBBVlN0cmVhbSAqc3QsIEFWUGFja2V0 ICpwa3QpCj4gICAgICByZXR1cm4gMDsKPiAgfQo+Cj4gK3N0YXRpYyBpbnQgbXhmX2F1ZGlvX3Jl bWFwcGluZyhpbnQqIGNoYW5uZWxfb3JkZXJpbmcsIHVpbnQ4X3QqIGRhdGEsIGludCBzaXplLCBp bnQgc2FtcGxlX3NpemUsIGludCBjaGFubmVscykKPiArewo+ICsgICAgaW50IHNhbXBsZV9vZmZz ZXQgPSBjaGFubmVscyAqIHNhbXBsZV9zaXplOwo+ICsgICAgaW50IG51bWJlcl9vZl9zYW1wbGVz ID0gc2l6ZSAvIHNhbXBsZV9vZmZzZXQ7Cj4gKyAgICB1aW50OF90IHRtcFtGRl9TQU5FX05CX0NI QU5ORUxTICogNF07Cj4gKyAgICB1aW50OF90KiBkYXRhX3B0ciA9IGRhdGE7Cj4gKwo+ICsgICAg Zm9yIChpbnQgc2FtcGxlID0gMDsgc2FtcGxlIDwgbnVtYmVyX29mX3NhbXBsZXM7ICsrc2FtcGxl KSB7Cj4gKyAgICAgICAgbWVtY3B5KHRtcCwgZGF0YV9wdHIsIHNhbXBsZV9vZmZzZXQpOwo+ICsK PiArICAgICAgICBmb3IgKGludCBjaGFubmVsID0gMDsgY2hhbm5lbCA8IGNoYW5uZWxzOyArK2No YW5uZWwpIHsKPiArICAgICAgICAgICAgbWVtY3B5KCZkYXRhX3B0cltzYW1wbGVfc2l6ZSAqIGNo YW5uZWxfb3JkZXJpbmdbY2hhbm5lbF1dLCAmdG1wW3NhbXBsZV9zaXplICogY2hhbm5lbF0sIHNh bXBsZV9zaXplKTsKPiArICAgICAgICB9Cj4gKwo+ICsgICAgICAgIGRhdGFfcHRyICs9IHNhbXBs ZV9vZmZzZXQ7Cj4gKyAgICB9Cj4gKyAgICByZXR1cm4gMDsKPiArfQo+ICsKPiAgc3RhdGljIGlu dCBteGZfcmVhZF9wYWNrZXQoQVZGb3JtYXRDb250ZXh0ICpzLCBBVlBhY2tldCAqcGt0KQo+ICB7 Cj4gICAgICBLTFZQYWNrZXQga2x2Owo+IEBAIC0zNzMzLDYgKzQwNDQsMTUgQEAgc3RhdGljIGlu dCBteGZfcmVhZF9wYWNrZXQoQVZGb3JtYXRDb250ZXh0ICpzLCBBVlBhY2tldCAqcGt0KQo+ICAg ICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKPiAgICAgICAgICAgICAgfQo+Cj4gKyAgICAgICAg ICAgIC8vIGZvciBhdWRpbywgcHJvY2VzcyBhdWRpbyByZW1hcHBpbmcgaWYgTUNBIGxhYmVsIHJl cXVpcmVzIGl0Cj4gKyAgICAgICAgICAgIGlmIChzdC0+Y29kZWNwYXItPmNvZGVjX3R5cGUgPT0g QVZNRURJQV9UWVBFX0FVRElPICYmIHRyYWNrLT5yZXF1aXJlX3Jlb3JkZXJpbmcpIHsKPiArICAg ICAgICAgICAgICAgIGludCBieXRlX3Blcl9zYW1wbGUgPSBzdC0+Y29kZWNwYXItPmJpdHNfcGVy X2NvZGVkX3NhbXBsZSAvIDg7Cj4gKyAgICAgICAgICAgICAgICByZXQgPSBteGZfYXVkaW9fcmVt YXBwaW5nKHRyYWNrLT5jaGFubmVsX29yZGVyaW5nLCBwa3QtPmRhdGEsIHBrdC0+c2l6ZSwgYnl0 ZV9wZXJfc2FtcGxlLCBzdC0+Y29kZWNwYXItPmNoYW5uZWxzKTsKPiArICAgICAgICAgICAgICAg IGlmIChyZXQgPCAwKSB7Cj4gKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKPiArICAg ICAgICAgICAgICAgIH0KPiArICAgICAgICAgICAgfQo+ICsKPiAgICAgICAgICAgICAgLyogc2Vl ayBmb3IgdHJ1bmNhdGVkIHBhY2tldHMgKi8KPiAgICAgICAgICAgICAgYXZpb19zZWVrKHMtPnBi LCBrbHYubmV4dF9rbHYsIFNFRUtfU0VUKTsKPgo+IEBAIC0zOTIwLDYgKzQyNDAsOSBAQCBzdGF0 aWMgY29uc3QgQVZPcHRpb24gb3B0aW9uc1tdID0gewo+ICAgICAgeyAiZWlhNjA4X2V4dHJhY3Qi LCAiZXh0cmFjdCBlaWEgNjA4IGNhcHRpb25zIGZyb20gczQzNm0gdHJhY2siLAo+ICAgICAgICBv ZmZzZXRvZihNWEZDb250ZXh0LCBlaWE2MDhfZXh0cmFjdCksIEFWX09QVF9UWVBFX0JPT0wsIHsu aTY0ID0gMH0sIDAsIDEsCj4gICAgICAgIEFWX09QVF9GTEFHX0RFQ09ESU5HX1BBUkFNIH0sCj4g KyAgICB7ICJza2lwX2F1ZGlvX3Jlb3JkZXJpbmciLCAic2tpcCBhdWRpbyByZW9yZGVyaW5nIGJh c2VkIG9uIE11bHRpLUNoYW5uZWwgQXVkaW8gbGFiZWxsaW5nIiwKPiArICAgICAgb2Zmc2V0b2Yo TVhGQ29udGV4dCwgc2tpcF9hdWRpb19yZW9yZGVyaW5nKSwgQVZfT1BUX1RZUEVfQk9PTCwgey5p NjQgPSAwfSwgMCwgMSwKPiArICAgICAgQVZfT1BUX0ZMQUdfREVDT0RJTkdfUEFSQU0gfSwKPiAg ICAgIHsgTlVMTCB9LAo+ICB9Owo+Cj4gZGlmZiAtLWdpdCBhL2xpYmF2Zm9ybWF0L3ZlcnNpb24u aCBiL2xpYmF2Zm9ybWF0L3ZlcnNpb24uaAo+IGluZGV4IDA3MDVlZTQxMTIuLjIxY2E2ZWQwOTYg MTAwNjQ0Cj4gLS0tIGEvbGliYXZmb3JtYXQvdmVyc2lvbi5oCj4gKysrIGIvbGliYXZmb3JtYXQv dmVyc2lvbi5oCj4gQEAgLTMzLDcgKzMzLDcgQEAKPiAgLy8gQWxzbyBwbGVhc2UgYWRkIGFueSB0 aWNrZXQgbnVtYmVycyB0aGF0IHlvdSBiZWxpZXZlIG1pZ2h0IGJlIGFmZmVjdGVkIGhlcmUKPiAg I2RlZmluZSBMSUJBVkZPUk1BVF9WRVJTSU9OX01BSk9SICA1OQo+ICAjZGVmaW5lIExJQkFWRk9S TUFUX1ZFUlNJT05fTUlOT1IgICA5Cj4gLSNkZWZpbmUgTElCQVZGT1JNQVRfVkVSU0lPTl9NSUNS TyAxMDIKPiArI2RlZmluZSBMSUJBVkZPUk1BVF9WRVJTSU9OX01JQ1JPIDEwMwo+Cj4gICNkZWZp bmUgTElCQVZGT1JNQVRfVkVSU0lPTl9JTlQgQVZfVkVSU0lPTl9JTlQoTElCQVZGT1JNQVRfVkVS U0lPTl9NQUpPUiwgXAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIExJQkFWRk9STUFUX1ZFUlNJT05fTUlOT1IsIFwKPiAtLQo+IDIuMzMuMQo+CgoKLS0g Ck1hcmMtQW50b2luZSBBUk5BVUQKQ0VPICYgRm91bmRlcgoKbW9iaWxlOiAgKzMzIDYgODQgNzEg ODQgNDUKZW1haWw6ICAgICBhcm5hdWQubWFyYy1hbnRvaW5lQGx1bWludmVudC5jb20Kd2Vic2l0 ZTogIGx1bWludmVudC5jb20KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KZmZtcGVnLWRldmVsIG1haWxpbmcgbGlzdApmZm1wZWctZGV2ZWxAZmZtcGVnLm9y ZwpodHRwczovL2ZmbXBlZy5vcmcvbWFpbG1hbi9saXN0aW5mby9mZm1wZWctZGV2ZWwKClRvIHVu c3Vic2NyaWJlLCB2aXNpdCBsaW5rIGFib3ZlLCBvciBlbWFpbApmZm1wZWctZGV2ZWwtcmVxdWVz dEBmZm1wZWcub3JnIHdpdGggc3ViamVjdCAidW5zdWJzY3JpYmUiLgo=