From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.ffmpeg.org (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTPS id 279E74879F for ; Thu, 16 Oct 2025 00:22:01 +0000 (UTC) Authentication-Results: ffbox; dkim=fail (body hash mismatch (got b'TTVqnxwy1ffbkq4t36RuFXrXKp/hYmt+FY72HyAVuZE=', expected b'QD+FyCs46iQ3Uh6uLgZm9bljmsOvqJSSZrCdR8UBxAY=')) header.d=ffmpeg.org header.i=@ffmpeg.org header.a=rsa-sha256 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ffmpeg.org; i=@ffmpeg.org; q=dns/txt; s=mail; t=1760574085; h=content-type : mime-version : to : date : message-id : reply-to : subject : list-id : list-archive : list-archive : list-help : list-owner : list-post : list-subscribe : list-unsubscribe : from : cc : content-transfer-encoding : from; bh=TTVqnxwy1ffbkq4t36RuFXrXKp/hYmt+FY72HyAVuZE=; b=HrBmSFO03uH4LAWsO4B2+8S6sQQ0oxTCUjm44sygXVhCkzlHVopo9Vbo2rgKyonRDnhIF kf2JmEwtiMWHFfbOpAREBhwTCWgPJgccSGcmaF1OABLngA+jehpyWEYnvd5lsFErxElmcfF gHHFqVySYJX4CUfGBh6rnh+H18cWj55jdzVLy6jGbIPVOSKXMOKU7N+l58X58GH6d4CpfFY utkGBpiENZ33ICrgaB6/AEL6OvtkGoseMNrtBureI2xVqZjLD/HyP9DWPpqUQM5y2qYXO2R pmJFH45LzlJGX1GTkxKlcdz+yo04TvznhtKz2duSMASNIhLetZzxeKxbzlFQ== Received: from [172.19.0.4] (unknown [172.19.0.4]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTP id 64F9468F3E2; Thu, 16 Oct 2025 03:21:25 +0300 (EEST) ARC-Seal: i=1; cv=none; a=rsa-sha256; d=ffmpeg.org; s=arc; t=1760574082; b=KRgHYOhfs1H/LvrDSOez65AOv0WpVPPw+/Rl+BEuuKC9R0HohpFivOxZzAtxUg2OwWzwD 9S1dk+I+1Hdha/3i/mwxzO+Tt0kZSWPyWoeGK58m4Ufxoc6Pl1klcusge91d6BUHcUOkMHO A+Sr2IBOR+F5fjnGHX96CnqtstQLKnY6D1Mvq0kLDrefRt7dKdKnFNx+/HeaQ3jM1iNfg5N HKTTqVx8L5vxuJKDR1GA0LdQYiNT0ybf9qG2LOOt/A9vxBCXtM8iuFYjgfZqYJIRRlyL/3r Ho/TObasdMLA10pxmzI/kZ/PneBSvpzGt1reAhbu6yWL/bIvBz+8ZPKJEvFQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=ffmpeg.org; s=arc; t=1760574082; h=from : sender : reply-to : subject : date : message-id : to : cc : mime-version : content-type : content-transfer-encoding : content-id : content-description : resent-date : resent-from : resent-sender : resent-to : resent-cc : resent-message-id : in-reply-to : references : list-id : list-help : list-unsubscribe : list-subscribe : list-post : list-owner : list-archive; bh=TTVqnxwy1ffbkq4t36RuFXrXKp/hYmt+FY72HyAVuZE=; b=h5ecFXy0yPp/l3DWIdO7l2RuG+8UtvT3xLzslKDLLqhyS+TmhdMZq2afMIfmvGKiT2AOZ H3/VWTca1mnKKNozhZBWzKA3Nq89cJGr5ODRXMMMRl/LLm5qgUoyRDrGXJNrZQynaYLmzWY YgRfMlf3K9Dax2RWhbnzu4EmnqgobMlIVjJnPF2k1clmzPV4cyjugg56XhhdQTw9PbLBXSG TRuvlAPvdXkfPcDF1bemZEscCER4gT87b9MUt2K41hnTR9NiPXg0XhW79aKtj38fLWspGRV cuSHs8eXd2/4q1A467U6xofGde4VyX8pNVT6sPLz6z1XnJp051uca8KfcfGQ== ARC-Authentication-Results: i=1; ffmpeg.org; dkim=pass header.d=ffmpeg.org header.i=@ffmpeg.org; arc=none; dmarc=pass header.from=ffmpeg.org policy.dmarc=quarantine Authentication-Results: ffmpeg.org; dkim=pass header.d=ffmpeg.org header.i=@ffmpeg.org; arc=none (Message is not ARC signed); dmarc=pass (Used From Domain Record) header.from=ffmpeg.org policy.dmarc=quarantine DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ffmpeg.org; i=@ffmpeg.org; q=dns/txt; s=mail; t=1760574073; h=content-type : mime-version : content-transfer-encoding : from : to : reply-to : subject : date : from; bh=QD+FyCs46iQ3Uh6uLgZm9bljmsOvqJSSZrCdR8UBxAY=; b=GVaFcWyzID7dhKEW25v1Set+737LHm6a83kVmTBu6WCrD7EMpeFGhkK6oduqAE7dvEmK7 4fRp814Az6l8DjsdPuMsk/ueokYkQsUBYDSBPCpXlMegvGV1fr/9sVzb6lAL9tIMcsA/mwp OAdc6gt6Po6y63bP/JhTshLRAsfEsGlLKSI2nkm0uUh3uysL+zEmxtDnKSxraXs228NqBdO h/bBdo4bxXPmPOUKmEh6b86Kcr8/2xb0kVJVEDBZCbXojBVEyan0UYDLESwWYonDf6fJPVo YyS6pIBqUyJZkprZVvp6ZRrcUnGx+NgjBfR+BjpaNDOFjuen+0pezopYmf6A== Received: from be50bb5a3685 (code.ffmpeg.org [188.245.149.3]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTPS id BE8F668F3E2 for ; Thu, 16 Oct 2025 03:21:13 +0300 (EEST) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 To: ffmpeg-devel@ffmpeg.org Date: Thu, 16 Oct 2025 00:21:13 -0000 Message-ID: <176057407401.25.17550273342568163544@bf907ddaa564> Message-ID-Hash: NA7YQPMENKKJCV6XAGZYA3Q4K46DNFKS X-Message-ID-Hash: NA7YQPMENKKJCV6XAGZYA3Q4K46DNFKS X-MailFrom: code@ffmpeg.org X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-ffmpeg-devel.ffmpeg.org-0; header-match-ffmpeg-devel.ffmpeg.org-1; header-match-ffmpeg-devel.ffmpeg.org-2; header-match-ffmpeg-devel.ffmpeg.org-3; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.10 Precedence: list Reply-To: FFmpeg development discussions and patches Subject: [FFmpeg-devel] [PATCH] Fix jpeg2k and dnxhr 444 MXF and MOV muxing (PR #20711) List-Id: FFmpeg development discussions and patches Archived-At: Archived-At: List-Archive: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: Baptiste Coudurier via ffmpeg-devel Cc: Baptiste Coudurier Content-Transfer-Encoding: base64 Archived-At: List-Archive: List-Post: UFIgIzIwNzExIG9wZW5lZCBieSBCYXB0aXN0ZSBDb3VkdXJpZXIgKGJjb3VkdXJpZXIpClVSTDog aHR0cHM6Ly9jb2RlLmZmbXBlZy5vcmcvRkZtcGVnL0ZGbXBlZy9wdWxscy8yMDcxMQpQYXRjaCBV Ukw6IGh0dHBzOi8vY29kZS5mZm1wZWcub3JnL0ZGbXBlZy9GRm1wZWcvcHVsbHMvMjA3MTEucGF0 Y2gKCgpGcm9tIDhiYzY1NGIyYzBmNzkyMTMxOTUxNDBmMzcyYzgzMDk1YjBlMmIxMjMgTW9uIFNl cCAxNyAwMDowMDowMCAyMDAxCkZyb206IEJhcHRpc3RlIENvdWR1cmllciA8YmFwdGlzdGUuY291 ZHVyaWVyQGdtYWlsLmNvbT4KRGF0ZTogVHVlLCAzIEp1biAyMDI1IDE3OjUwOjE1IC0wNzAwClN1 YmplY3Q6IFtQQVRDSCAxLzddIGxhdmYvbW92ZW5jOiBpbXByb3ZlIEFWZGggYXRvbSBnZW5lcmF0 aW9uIGZvciBETnhIRC9ETnhIUgoKLS0tCiBsaWJhdmZvcm1hdC9tb3ZlbmMuYyAgICAgICAgICAg ICAgICAgICAgICAgfCA4NiArKysrKysrKysrKysrKysrLS0tLS0tCiB0ZXN0cy9yZWYvdnN5bnRo L3ZzeW50aDEtZG54aGQtMTA4MGkgICAgICAgfCAgMiArLQogdGVzdHMvcmVmL3ZzeW50aC92c3lu dGgxLWRueGhkLTEwODBpLTEwYml0IHwgIDIgKy0KIHRlc3RzL3JlZi92c3ludGgvdnN5bnRoMS1k bnhoZC0xMDgwaS1jb2xyICB8ICAyICstCiB0ZXN0cy9yZWYvdnN5bnRoL3ZzeW50aDItZG54aGQt MTA4MGkgICAgICAgfCAgMiArLQogdGVzdHMvcmVmL3ZzeW50aC92c3ludGgyLWRueGhkLTEwODBp LTEwYml0IHwgIDIgKy0KIHRlc3RzL3JlZi92c3ludGgvdnN5bnRoMi1kbnhoZC0xMDgwaS1jb2xy ICB8ICAyICstCiB0ZXN0cy9yZWYvdnN5bnRoL3ZzeW50aDMtZG54aGQtMTA4MGktMTBiaXQgfCAg MiArLQogdGVzdHMvcmVmL3ZzeW50aC92c3ludGgzLWRueGhkLTEwODBpLWNvbHIgIHwgIDIgKy0K IDkgZmlsZXMgY2hhbmdlZCwgNzAgaW5zZXJ0aW9ucygrKSwgMzIgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvbGliYXZmb3JtYXQvbW92ZW5jLmMgYi9saWJhdmZvcm1hdC9tb3ZlbmMuYwppbmRl eCAwNjdkMzhiMTRiLi5mMmFhMTQxZmI3IDEwMDY0NAotLS0gYS9saWJhdmZvcm1hdC9tb3ZlbmMu YworKysgYi9saWJhdmZvcm1hdC9tb3ZlbmMuYwpAQCAtMTY3OSwxNyArMTY3OSwxOCBAQCBzdGF0 aWMgaW50IG1vdl93cml0ZV9hcHZjX3RhZyhBVkZvcm1hdENvbnRleHQgKnMsIEFWSU9Db250ZXh0 ICpwYiwgTU9WVHJhY2sgKnRyYQogfQogCiAvKiBhbHNvIHVzZWQgYnkgYWxsIGF2aWQgY29kZWNz IChkdiwgaW14LCBtZXJpZGllbikgYW5kIHRoZWlyIHZhcmlhbnRzICovCisvKiBodHRwczovL2Nv bW11bml0eS5hdmlkLmNvbS9mb3J1bXMvdC8xMzY1MTcuYXNweCAqLwogc3RhdGljIGludCBtb3Zf d3JpdGVfYXZpZF90YWcoQVZJT0NvbnRleHQgKnBiLCBNT1ZUcmFjayAqdHJhY2spCiB7CiAgICAg aW50IGludGVybGFjZWQ7CiAgICAgaW50IGNpZDsKICAgICBpbnQgZGlzcGxheV93aWR0aCA9IHRy YWNrLT5wYXItPndpZHRoOworICAgIGNvbnN0IHVpbnQ4X3QgKmV4dHJhZGF0YTsKIAogICAgIGlm ICh0cmFjay0+ZXh0cmFkYXRhW3RyYWNrLT5sYXN0X3N0c2RfaW5kZXhdICYmIHRyYWNrLT5leHRy YWRhdGFfc2l6ZVt0cmFjay0+bGFzdF9zdHNkX2luZGV4XSA+IDB4MjkpIHsKICAgICAgICAgaWYg KGZmX2RueGhkX3BhcnNlX2hlYWRlcl9wcmVmaXgodHJhY2stPmV4dHJhZGF0YVt0cmFjay0+bGFz dF9zdHNkX2luZGV4XSkgIT0gMCkgewogICAgICAgICAgICAgLyogbG9va3MgbGlrZSBhIEROeEhE IGJpdCBzdHJlYW0gKi8KLSAgICAgICAgICAgIGludGVybGFjZWQgPSAodHJhY2stPmV4dHJhZGF0 YVt0cmFjay0+bGFzdF9zdHNkX2luZGV4XVs1XSAmIDIpOwotICAgICAgICAgICAgY2lkID0gQVZf UkIzMih0cmFjay0+ZXh0cmFkYXRhW3RyYWNrLT5sYXN0X3N0c2RfaW5kZXhdICsgMHgyOCk7Cisg ICAgICAgICAgICBleHRyYWRhdGEgPSB0cmFjay0+ZXh0cmFkYXRhW3RyYWNrLT5sYXN0X3N0c2Rf aW5kZXhdOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgYXZfbG9nKE5VTEwsIEFWX0xP R19XQVJOSU5HLCAiQ291bGQgbm90IGxvY2F0ZSBETnhIRCBiaXQgc3RyZWFtIGluIHZvc19kYXRh XG4iKTsKICAgICAgICAgICAgIHJldHVybiAwOwpAQCAtMTY5OSw2MCArMTcwMCw5NyBAQCBzdGF0 aWMgaW50IG1vdl93cml0ZV9hdmlkX3RhZyhBVklPQ29udGV4dCAqcGIsIE1PVlRyYWNrICp0cmFj aykKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCisgICAgY2lkID0gQVZfUkIzMihleHRyYWRh dGEgKyAweDI4KTsKKwogICAgIGF2aW9fd2IzMihwYiwgMjQpOyAvKiBzaXplICovCiAgICAgZmZp b193Zm91cmNjKHBiLCAiQUNMUiIpOwogICAgIGZmaW9fd2ZvdXJjYyhwYiwgIkFDTFIiKTsKICAg ICBmZmlvX3dmb3VyY2MocGIsICIwMDAxIik7CisgICAgLy8gMTogQ0NJUiAoc3VwZXJjb2xvcnMg d2lsbCBiZSBkcm9wcGVkLCAxNiB3aWxsIGJlIGRpc3BsYXllZCBhcyBibGFjaykKKyAgICAvLyAy OiBGdWxsUmFuZ2UgKDAgd2lsbCBiZSBkaXNwbGF5ZWQgYXMgYmxhY2ssIDE2IHdpbGwgYmUgZGlz cGxheWVkIGFzIGRhcmsgZ3JleSkKICAgICBpZiAodHJhY2stPnBhci0+Y29sb3JfcmFuZ2UgPT0g QVZDT0xfUkFOR0VfTVBFRyB8fCAvKiBMZWdhbCByYW5nZSAoMTYtMjM1KSAqLwogICAgICAgICB0 cmFjay0+cGFyLT5jb2xvcl9yYW5nZSA9PSBBVkNPTF9SQU5HRV9VTlNQRUNJRklFRCkgewotICAg ICAgICBhdmlvX3diMzIocGIsIDEpOyAvKiBDb3JyZXNwb25kcyB0byA3MDkgaW4gb2ZmaWNpYWwg ZW5jb2RlciAqLwotICAgIH0gZWxzZSB7IC8qIEZ1bGwgcmFuZ2UgKDAtMjU1KSAqLwotICAgICAg ICBhdmlvX3diMzIocGIsIDIpOyAvKiBDb3JyZXNwb25kcyB0byBSR0IgaW4gb2ZmaWNpYWwgZW5j b2RlciAqLworICAgICAgICBhdmlvX3diMzIocGIsIDEpOworICAgIH0gZWxzZSB7CisgICAgICAg IGF2aW9fd2IzMihwYiwgMik7CiAgICAgfQotICAgIGF2aW9fd2IzMihwYiwgMCk7IC8qIHVua25v d24gKi8KKyAgICBhdmlvX3diMzIocGIsIDApOyAvKiByZXNlcnZlZCAqLwogCiAgICAgaWYgKHRy YWNrLT50YWcgPT0gTUtUQUcoJ0EnLCdWJywnZCcsJ2gnKSkgeworICAgICAgICBpbnQgYWxwID0g ZXh0cmFkYXRhWzB4MDddICYgMTsKKyAgICAgICAgaW50IHBtYSA9IChleHRyYWRhdGFbMHgwN10g Pj4gMikgJiAxOworICAgICAgICBpbnQgc2JkID0gKGV4dHJhZGF0YVsweDIxXSA+PiA1KSAmIDM7 CisgICAgICAgIGludCBzc2MgPSAoZXh0cmFkYXRhWzB4MkNdID4+IDUpICYgMzsKKyAgICAgICAg aW50IGNsdiA9IChleHRyYWRhdGFbMHgyQ10gPj4gMSkgJiAzOworICAgICAgICBpbnQgY2xmID0g ZXh0cmFkYXRhWzB4MkNdICYgMTsKKwogICAgICAgICBhdmlvX3diMzIocGIsIDMyKTsKICAgICAg ICAgZmZpb193Zm91cmNjKHBiLCAiQURIUiIpOwogICAgICAgICBmZmlvX3dmb3VyY2MocGIsICIw MDAxIik7Ci0gICAgICAgIGF2aW9fd2IzMihwYiwgY2lkKTsKLSAgICAgICAgYXZpb193YjMyKHBi LCAwKTsgLyogdW5rbm93biAqLwotICAgICAgICBhdmlvX3diMzIocGIsIDEpOyAvKiB1bmtub3du ICovCi0gICAgICAgIGF2aW9fd2IzMihwYiwgMCk7IC8qIHVua25vd24gKi8KLSAgICAgICAgYXZp b193YjMyKHBiLCAwKTsgLyogdW5rbm93biAqLworICAgICAgICBhdmlvX3diMzIocGIsIGNpZCk7 IC8vIENvbXByZXNzaW9uIElECisgICAgICAgIC8vIDA6IDQ6MjoyIFN1YiBTYW1wbGluZworICAg ICAgICAvLyAxOiA0OjI6MCBTdWIgU2FtcGxpbmcKKyAgICAgICAgLy8gMjogNDo0OjQgU3ViIFNh bXBsaW5nCisgICAgICAgIGF2aW9fd2IzMihwYiwgc3NjKTsgLy8gU3ViIFNhbXBsaW5nIENvbnRy b2wKKyAgICAgICAgLy8gMTogIDgtYml0cyBwZXIgc2FtcGxlCisgICAgICAgIC8vIDI6IDEwLWJp dHMgcGVyIHNhbXBsZQorICAgICAgICAvLyAzOiAxMi1iaXRzIHBlciBzYW1wbGUKKyAgICAgICAg YXZpb193YjMyKHBiLCBzYmQpOyAvLyBTYW1wbGUgQml0IERlcHRoCisgICAgICAgIC8vIDA6ICBC aXRzdHJlYW0gaXMgZW5jb2RlZCB1c2luZyB0aGUgWUNCQ1IgZm9ybWF0IHJ1bGVzIGFuZCB0YWJs ZXMKKyAgICAgICAgLy8gMTogIEJpdHN0cmVhbSBpcyBlbmNvZGVkIHVzaW5nIHRoZSBSR0IgZm9y bWF0IHJ1bGVzIGFuZCB0YWJsZXMg4oCTIG9ubHkgQ29tcHJlc3Npb24gSURzIDEyNTYsIDEyNzAK KyAgICAgICAgYXZpb193YjE2KHBiLCBjbGYpOyAvLyBDb2xvciBGb3JtYXQKKyAgICAgICAgLy8g MDogSVRVLVIgQlQuNzA5CisgICAgICAgIC8vIDE6IElUVS1SIEJULjIwMjAKKyAgICAgICAgLy8g MjogSVRVLVIgQlQuMjAyMCBDCisgICAgICAgIC8vIDM6IE91dC1vZi1iYW5kCisgICAgICAgIGF2 aW9fd2IxNihwYiwgY2x2KTsgLy8gQ29sb3IgVm9sdW1lCisgICAgICAgIC8vIDA6IEFscGhhIGNo YW5uZWwgbm90IHByZXNlbnQKKyAgICAgICAgLy8gMTogQWxwaGEgY2hhbm5lbCBwcmVzZW50Cisg ICAgICAgIGF2aW9fd2IxNihwYiwgYWxwKTsgLy8gQWxwaGEgUHJlc2VudAorICAgICAgICAvLyAw OiBBbHBoYSBoYXMgbm90IGJlZW4gYXBwbGllZCB0byB2aWRlbyBjaGFubmVscworICAgICAgICAv LyAxOiBBbHBoYSBoYXMgYmVlbiBhcHBsaWVkIHRvIHRoZSB2aWRlbyBjaGFubmVscyBwcmlvciB0 byBlbmNvZGluZworICAgICAgICBhdmlvX3diMTYocGIsIHBtYSk7IC8vIFByZS1NdWx0aXBsaWVk IEFscGhhCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAorICAgIGludGVybGFjZWQgPSBleHRy YWRhdGFbNV0gJiAyOworCiAgICAgYXZpb193YjMyKHBiLCAyNCk7IC8qIHNpemUgKi8KICAgICBm ZmlvX3dmb3VyY2MocGIsICJBUFJHIik7CiAgICAgZmZpb193Zm91cmNjKHBiLCAiQVBSRyIpOwog ICAgIGZmaW9fd2ZvdXJjYyhwYiwgIjAwMDEiKTsKLSAgICBhdmlvX3diMzIocGIsIDEpOyAvKiB1 bmtub3duICovCi0gICAgYXZpb193YjMyKHBiLCAwKTsgLyogdW5rbm93biAqLworICAgIC8vIDEg Zm9yIHByb2dyZXNzaXZlIG9yIDIgZm9yIGludGVybGFjZWQKKyAgICBpZiAoaW50ZXJsYWNlZCkK KyAgICAgICAgYXZpb193YjMyKHBiLCAyKTsKKyAgICBlbHNlCisgICAgICAgIGF2aW9fd2IzMihw YiwgMSk7CisgICAgYXZpb193YjMyKHBiLCAwKTsgLyogcmVzZXJ2ZWQgKi8KIAogICAgIGF2aW9f d2IzMihwYiwgMTIwKTsgLyogc2l6ZSAqLwogICAgIGZmaW9fd2ZvdXJjYyhwYiwgIkFSRVMiKTsK ICAgICBmZmlvX3dmb3VyY2MocGIsICJBUkVTIik7CiAgICAgZmZpb193Zm91cmNjKHBiLCAiMDAw MSIpOwotICAgIGF2aW9fd2IzMihwYiwgY2lkKTsgLyogZG54aGQgY2lkLCBzb21lIGlkID8gKi8K KyAgICBhdmlvX3diMzIocGIsIGNpZCk7IC8qIGNpZCAqLwogICAgIGlmICggICB0cmFjay0+cGFy LT5zYW1wbGVfYXNwZWN0X3JhdGlvLm51bSA+IDAKICAgICAgICAgJiYgdHJhY2stPnBhci0+c2Ft cGxlX2FzcGVjdF9yYXRpby5kZW4gPiAwKQogICAgICAgICBkaXNwbGF5X3dpZHRoID0gZGlzcGxh eV93aWR0aCAqIHRyYWNrLT5wYXItPnNhbXBsZV9hc3BlY3RfcmF0aW8ubnVtIC8gdHJhY2stPnBh ci0+c2FtcGxlX2FzcGVjdF9yYXRpby5kZW47Ci0gICAgYXZpb193YjMyKHBiLCBkaXNwbGF5X3dp ZHRoKTsKLSAgICAvKiB2YWx1ZXMgYmVsb3cgYXJlIGJhc2VkIG9uIHNhbXBsZXMgY3JlYXRlZCB3 aXRoIHF1aWNrdGltZSBhbmQgYXZpZCBjb2RlY3MgKi8KKyAgICBhdmlvX3diMzIocGIsIGRpc3Bs YXlfd2lkdGgpOyAvLyBmaWVsZCB3aWR0aAogICAgIGlmIChpbnRlcmxhY2VkKSB7Ci0gICAgICAg IGF2aW9fd2IzMihwYiwgdHJhY2stPnBhci0+aGVpZ2h0IC8gMik7Ci0gICAgICAgIGF2aW9fd2Iz MihwYiwgMik7IC8qIHVua25vd24gKi8KLSAgICAgICAgYXZpb193YjMyKHBiLCAwKTsgLyogdW5r bm93biAqLwotICAgICAgICBhdmlvX3diMzIocGIsIDQpOyAvKiB1bmtub3duICovCisgICAgICAg IGF2aW9fd2IzMihwYiwgdHJhY2stPnBhci0+aGVpZ2h0IC8gMik7IC8vIGZpZWxkIGhlaWdodAor ICAgICAgICBhdmlvX3diMzIocGIsIDIpOyAvLyBudW0gZmllbGRzCisgICAgICAgIGF2aW9fd2Iz MihwYiwgMCk7IC8vIG51bSBibGFjayBsaW5lcyAobXVzdCBiZSAwKQorICAgICAgICAvLyA0OiBI RDEwODBpCisgICAgICAgIC8vIDU6IEhEMTA4MFAKKyAgICAgICAgLy8gNjogSEQ3MjBQCisgICAg ICAgIGF2aW9fd2IzMihwYiwgNCk7IC8vIHZpZGVvIGZvcm1hdAogICAgIH0gZWxzZSB7CiAgICAg ICAgIGF2aW9fd2IzMihwYiwgdHJhY2stPnBhci0+aGVpZ2h0KTsKLSAgICAgICAgYXZpb193YjMy KHBiLCAxKTsgLyogdW5rbm93biAqLwotICAgICAgICBhdmlvX3diMzIocGIsIDApOyAvKiB1bmtu b3duICovCisgICAgICAgIGF2aW9fd2IzMihwYiwgMSk7IC8vIG51bSBmaWVsZHMKKyAgICAgICAg YXZpb193YjMyKHBiLCAwKTsKICAgICAgICAgaWYgKHRyYWNrLT5wYXItPmhlaWdodCA9PSAxMDgw KQotICAgICAgICAgICAgYXZpb193YjMyKHBiLCA1KTsgLyogdW5rbm93biAqLworICAgICAgICAg ICAgYXZpb193YjMyKHBiLCA1KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgYXZpb193YjMy KHBiLCA2KTsgLyogdW5rbm93biAqLworICAgICAgICAgICAgYXZpb193YjMyKHBiLCA2KTsKICAg ICB9CiAgICAgLyogcGFkZGluZyAqLwogICAgIGZmaW9fZmlsbChwYiwgMCwgMTAgKiA4KTsKZGlm ZiAtLWdpdCBhL3Rlc3RzL3JlZi92c3ludGgvdnN5bnRoMS1kbnhoZC0xMDgwaSBiL3Rlc3RzL3Jl Zi92c3ludGgvdnN5bnRoMS1kbnhoZC0xMDgwaQppbmRleCAwZTc4NDRiMGVlLi5jZTA4Yzg1MTU2 IDEwMDY0NAotLS0gYS90ZXN0cy9yZWYvdnN5bnRoL3ZzeW50aDEtZG54aGQtMTA4MGkKKysrIGIv dGVzdHMvcmVmL3ZzeW50aC92c3ludGgxLWRueGhkLTEwODBpCkBAIC0xLDQgKzEsNCBAQAotYWY1 Y2JlMjM5ODM5ZjYyODJhNjhmMWExMDZlZDNhNzcgKnRlc3RzL2RhdGEvZmF0ZS92c3ludGgxLWRu eGhkLTEwODBpLm1vdgorYWMyZWMyYjFlOGRhZWY5NjcxNWM3MDMyZGIzNDQ3ZGUgKnRlc3RzL2Rh dGEvZmF0ZS92c3ludGgxLWRueGhkLTEwODBpLm1vdgogMzAzMTkxMSB0ZXN0cy9kYXRhL2ZhdGUv dnN5bnRoMS1kbnhoZC0xMDgwaS5tb3YKIGZlZDllZDJhNTE3OWM5ZGYwZWY1ODc3MmIwMjVlMzAz ICp0ZXN0cy9kYXRhL2ZhdGUvdnN5bnRoMS1kbnhoZC0xMDgwaS5vdXQucmF3dmlkZW8KIHN0ZGRl djogICAgNi4xOCBQU05SOiAzMi4zMSBNQVhESUZGOiAgIDY0IGJ5dGVzOiAgNzYwMzIwMC8gICA3 NjAzMjAKZGlmZiAtLWdpdCBhL3Rlc3RzL3JlZi92c3ludGgvdnN5bnRoMS1kbnhoZC0xMDgwaS0x MGJpdCBiL3Rlc3RzL3JlZi92c3ludGgvdnN5bnRoMS1kbnhoZC0xMDgwaS0xMGJpdAppbmRleCBj M2YzZmRhMDg1Li44ZGMzZTUwZmQ1IDEwMDY0NAotLS0gYS90ZXN0cy9yZWYvdnN5bnRoL3ZzeW50 aDEtZG54aGQtMTA4MGktMTBiaXQKKysrIGIvdGVzdHMvcmVmL3ZzeW50aC92c3ludGgxLWRueGhk LTEwODBpLTEwYml0CkBAIC0xLDQgKzEsNCBAQAotMWE4MjYxMTIwYmNjNzY0YTdiYmRkMTk4ZmVi ZmY0YzcgKnRlc3RzL2RhdGEvZmF0ZS92c3ludGgxLWRueGhkLTEwODBpLTEwYml0Lm1vdgorNGI3 Y2NkYzI5MGJkMDZjZmNhZjI5YmFhZDU1MDgxZmEgKnRlc3RzL2RhdGEvZmF0ZS92c3ludGgxLWRu eGhkLTEwODBpLTEwYml0Lm1vdgogNDU4ODM5MSB0ZXN0cy9kYXRhL2ZhdGUvdnN5bnRoMS1kbnho ZC0xMDgwaS0xMGJpdC5tb3YKIDMxMDMyZmNiN2U2YWY3OWRhYWFjMDIyODgyNTRjNmQ2ICp0ZXN0 cy9kYXRhL2ZhdGUvdnN5bnRoMS1kbnhoZC0xMDgwaS0xMGJpdC5vdXQucmF3dmlkZW8KIHN0ZGRl djogICAgNS42OSBQU05SOiAzMy4wMiBNQVhESUZGOiAgIDU1IGJ5dGVzOiAgNzYwMzIwMC8gICA3 NjAzMjAKZGlmZiAtLWdpdCBhL3Rlc3RzL3JlZi92c3ludGgvdnN5bnRoMS1kbnhoZC0xMDgwaS1j b2xyIGIvdGVzdHMvcmVmL3ZzeW50aC92c3ludGgxLWRueGhkLTEwODBpLWNvbHIKaW5kZXggMzVj ZDcxOWI2My4uYTA3ZjZiMzc1YyAxMDA2NDQKLS0tIGEvdGVzdHMvcmVmL3ZzeW50aC92c3ludGgx LWRueGhkLTEwODBpLWNvbHIKKysrIGIvdGVzdHMvcmVmL3ZzeW50aC92c3ludGgxLWRueGhkLTEw ODBpLWNvbHIKQEAgLTEsNCArMSw0IEBACi01NTcxZjRmZjllMjlkMzUyYTdlMzczYTE0YTllZDJl ZCAqdGVzdHMvZGF0YS9mYXRlL3ZzeW50aDEtZG54aGQtMTA4MGktY29sci5tb3YKKzNiZjJjNTg2 M2JmOGE0NjM2NWU1ZWFkNjU3ZDAxNzk2ICp0ZXN0cy9kYXRhL2ZhdGUvdnN5bnRoMS1kbnhoZC0x MDgwaS1jb2xyLm1vdgogMzAzMTkyOSB0ZXN0cy9kYXRhL2ZhdGUvdnN5bnRoMS1kbnhoZC0xMDgw aS1jb2xyLm1vdgogNmYyZDU0MjlmZmM0NTI5YTc2YWNmZWIyOGI1NjA1NDIgKnRlc3RzL2RhdGEv ZmF0ZS92c3ludGgxLWRueGhkLTEwODBpLWNvbHIub3V0LnJhd3ZpZGVvCiBzdGRkZXY6ICAgIDUu NjUgUFNOUjogMzMuMDkgTUFYRElGRjogICA1NSBieXRlczogIDc2MDMyMDAvICAgNzYwMzIwCmRp ZmYgLS1naXQgYS90ZXN0cy9yZWYvdnN5bnRoL3ZzeW50aDItZG54aGQtMTA4MGkgYi90ZXN0cy9y ZWYvdnN5bnRoL3ZzeW50aDItZG54aGQtMTA4MGkKaW5kZXggMDY2OGE0NGY5YS4uNjE5ZDUxYTMz ZSAxMDA2NDQKLS0tIGEvdGVzdHMvcmVmL3ZzeW50aC92c3ludGgyLWRueGhkLTEwODBpCisrKyBi L3Rlc3RzL3JlZi92c3ludGgvdnN5bnRoMi1kbnhoZC0xMDgwaQpAQCAtMSw0ICsxLDQgQEAKLTAw Njc5MDM1NThjOTllM2FiZWQ0MDJlZDY1Mjk3NzM1ICp0ZXN0cy9kYXRhL2ZhdGUvdnN5bnRoMi1k bnhoZC0xMDgwaS5tb3YKKzE2Nzg0ZGNiMmE5NDRkNjgxZWU4MTI1NzQ0NTk4YTAwICp0ZXN0cy9k YXRhL2ZhdGUvdnN5bnRoMi1kbnhoZC0xMDgwaS5tb3YKIDMwMzE5MTEgdGVzdHMvZGF0YS9mYXRl L3ZzeW50aDItZG54aGQtMTA4MGkubW92CiBlOTQxZDI1ODdjZmVjY2RkYzQ1MGRhN2Y0MWY3Zjkx MSAqdGVzdHMvZGF0YS9mYXRlL3ZzeW50aDItZG54aGQtMTA4MGkub3V0LnJhd3ZpZGVvCiBzdGRk ZXY6ICAgIDEuNTAgUFNOUjogNDQuNTYgTUFYRElGRjogICAzMSBieXRlczogIDc2MDMyMDAvICAg NzYwMzIwCmRpZmYgLS1naXQgYS90ZXN0cy9yZWYvdnN5bnRoL3ZzeW50aDItZG54aGQtMTA4MGkt MTBiaXQgYi90ZXN0cy9yZWYvdnN5bnRoL3ZzeW50aDItZG54aGQtMTA4MGktMTBiaXQKaW5kZXgg NzY4OWUyYzIyZS4uMGVjMzNjNjhlOCAxMDA2NDQKLS0tIGEvdGVzdHMvcmVmL3ZzeW50aC92c3lu dGgyLWRueGhkLTEwODBpLTEwYml0CisrKyBiL3Rlc3RzL3JlZi92c3ludGgvdnN5bnRoMi1kbnho ZC0xMDgwaS0xMGJpdApAQCAtMSw0ICsxLDQgQEAKLTE2ZTg2OTUzYTY5N2UxZTdmOWQ4MDkwM2Zm NGZlZjBjICp0ZXN0cy9kYXRhL2ZhdGUvdnN5bnRoMi1kbnhoZC0xMDgwaS0xMGJpdC5tb3YKK2Y3 MmZkNGZiMmY4OTY5YWU1MTgwOWEwNDliYWNjMDM2ICp0ZXN0cy9kYXRhL2ZhdGUvdnN5bnRoMi1k bnhoZC0xMDgwaS0xMGJpdC5tb3YKIDQ1ODgzOTEgdGVzdHMvZGF0YS9mYXRlL3ZzeW50aDItZG54 aGQtMTA4MGktMTBiaXQubW92CiBlNGNhOWJlNDc2ODY5YWZiOTQ5NjJkOTQ1ZjkwYmRmNiAqdGVz dHMvZGF0YS9mYXRlL3ZzeW50aDItZG54aGQtMTA4MGktMTBiaXQub3V0LnJhd3ZpZGVvCiBzdGRk ZXY6ICAgIDEuNTcgUFNOUjogNDQuMTggTUFYRElGRjogICAzMyBieXRlczogIDc2MDMyMDAvICAg NzYwMzIwCmRpZmYgLS1naXQgYS90ZXN0cy9yZWYvdnN5bnRoL3ZzeW50aDItZG54aGQtMTA4MGkt Y29sciBiL3Rlc3RzL3JlZi92c3ludGgvdnN5bnRoMi1kbnhoZC0xMDgwaS1jb2xyCmluZGV4IGY1 YWM2MDQ3MTYuLjMwMjlhNmY3MmEgMTAwNjQ0Ci0tLSBhL3Rlc3RzL3JlZi92c3ludGgvdnN5bnRo Mi1kbnhoZC0xMDgwaS1jb2xyCisrKyBiL3Rlc3RzL3JlZi92c3ludGgvdnN5bnRoMi1kbnhoZC0x MDgwaS1jb2xyCkBAIC0xLDQgKzEsNCBAQAotZWVlNjc0ZDAxMmM4NTBjMWQyYmI1ZTgxNmI2Njhj ZGYgKnRlc3RzL2RhdGEvZmF0ZS92c3ludGgyLWRueGhkLTEwODBpLWNvbHIubW92Cis2NDk1N2Y5 YWM4OGYzMmMxNzVmMjIxMDZmZTYwZDI5MSAqdGVzdHMvZGF0YS9mYXRlL3ZzeW50aDItZG54aGQt MTA4MGktY29sci5tb3YKIDMwMzE5MjkgdGVzdHMvZGF0YS9mYXRlL3ZzeW50aDItZG54aGQtMTA4 MGktY29sci5tb3YKIGVjNDBhODAxNGI4MTlkMDI5NTFiMmYwNmJlZTdiNTE0ICp0ZXN0cy9kYXRh L2ZhdGUvdnN5bnRoMi1kbnhoZC0xMDgwaS1jb2xyLm91dC5yYXd2aWRlbwogc3RkZGV2OiAgICAx LjU0IFBTTlI6IDQ0LjMzIE1BWERJRkY6ICAgMzMgYnl0ZXM6ICA3NjAzMjAwLyAgIDc2MDMyMApk aWZmIC0tZ2l0IGEvdGVzdHMvcmVmL3ZzeW50aC92c3ludGgzLWRueGhkLTEwODBpLTEwYml0IGIv dGVzdHMvcmVmL3ZzeW50aC92c3ludGgzLWRueGhkLTEwODBpLTEwYml0CmluZGV4IDJhMDQwZTEy ZGIuLjUxZTQ2Zjc0NTAgMTAwNjQ0Ci0tLSBhL3Rlc3RzL3JlZi92c3ludGgvdnN5bnRoMy1kbnho ZC0xMDgwaS0xMGJpdAorKysgYi90ZXN0cy9yZWYvdnN5bnRoL3ZzeW50aDMtZG54aGQtMTA4MGkt MTBiaXQKQEAgLTEsNCArMSw0IEBACi00ZTYxODVlMjczMjk3MDYxZGVmOGUwYjdmYWJmZjcxYiAq dGVzdHMvZGF0YS9mYXRlL3ZzeW50aDMtZG54aGQtMTA4MGktMTBiaXQubW92CitlYzE1MjkyZWJl NTliYWEyMGRlYTdhOWM4ZmQ2NDIzNyAqdGVzdHMvZGF0YS9mYXRlL3ZzeW50aDMtZG54aGQtMTA4 MGktMTBiaXQubW92CiA0NTg4MzkxIHRlc3RzL2RhdGEvZmF0ZS92c3ludGgzLWRueGhkLTEwODBp LTEwYml0Lm1vdgogYzE5MmYzNmVmODY4N2U1NmM3MmEzZGM0MTZjN2UxOTEgKnRlc3RzL2RhdGEv ZmF0ZS92c3ludGgzLWRueGhkLTEwODBpLTEwYml0Lm91dC5yYXd2aWRlbwogc3RkZGV2OiAgICA2 LjkyIFBTTlI6IDMxLjMyIE1BWERJRkY6ICAgNTAgYnl0ZXM6ICAgIDg2NzAwLyAgICAgODY3MApk aWZmIC0tZ2l0IGEvdGVzdHMvcmVmL3ZzeW50aC92c3ludGgzLWRueGhkLTEwODBpLWNvbHIgYi90 ZXN0cy9yZWYvdnN5bnRoL3ZzeW50aDMtZG54aGQtMTA4MGktY29scgppbmRleCAwOGFhMzBkOGM0 Li45MjBlODZjY2VjIDEwMDY0NAotLS0gYS90ZXN0cy9yZWYvdnN5bnRoL3ZzeW50aDMtZG54aGQt MTA4MGktY29scgorKysgYi90ZXN0cy9yZWYvdnN5bnRoL3ZzeW50aDMtZG54aGQtMTA4MGktY29s cgpAQCAtMSw0ICsxLDQgQEAKLTkyYTJmNjdjZjc3YWJmMzQyOGZlMmQ0ZjUzYmEyMDI3ICp0ZXN0 cy9kYXRhL2ZhdGUvdnN5bnRoMy1kbnhoZC0xMDgwaS1jb2xyLm1vdgorMzJjZjY0ZjMwNDMwNTNk MzAwMzM4OGFiMTJmNTNjYmUgKnRlc3RzL2RhdGEvZmF0ZS92c3ludGgzLWRueGhkLTEwODBpLWNv bHIubW92CiAzMDMxOTI5IHRlc3RzL2RhdGEvZmF0ZS92c3ludGgzLWRueGhkLTEwODBpLWNvbHIu bW92CiBmOTA3ZmQyZDQ4YmVkYmM1MjgzZmJmYzNmYjlmNjFhMCAqdGVzdHMvZGF0YS9mYXRlL3Zz eW50aDMtZG54aGQtMTA4MGktY29sci5vdXQucmF3dmlkZW8KIHN0ZGRldjogICAgNi45MiBQU05S OiAzMS4zMiBNQVhESUZGOiAgIDUwIGJ5dGVzOiAgICA4NjcwMC8gICAgIDg2NzAKLS0gCjIuNDku MQoKCkZyb20gZDk4NmU5NTI1NDI0MTA0ZGJhZmIyYzY4NzAyNTMyYjA3YjQxN2EwNyBNb24gU2Vw IDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogQmFwdGlzdGUgQ291ZHVyaWVyIDxiYXB0aXN0ZS5jb3Vk dXJpZXJAZ21haWwuY29tPgpEYXRlOiBXZWQsIDQgSnVuIDIwMjUgMTA6NDM6MDQgLTA3MDAKU3Vi amVjdDogW1BBVENIIDIvN10gbGF2Zi9teGZlbmM6IHJlcXVpcmUgcGl4ZWwgZm9ybWF0IHRvIGJl IHNldCBmb3IgdmlkZW8KIHN0cmVhbXMKCi0tLQogbGliYXZmb3JtYXQvbXhmZW5jLmMgfCA1NiAr KysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5n ZWQsIDIxIGluc2VydGlvbnMoKyksIDM1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2xpYmF2 Zm9ybWF0L214ZmVuYy5jIGIvbGliYXZmb3JtYXQvbXhmZW5jLmMKaW5kZXggYjE0YTQ4MGJhMy4u ZWQzMTViZTE0MCAxMDA2NDQKLS0tIGEvbGliYXZmb3JtYXQvbXhmZW5jLmMKKysrIGIvbGliYXZm b3JtYXQvbXhmZW5jLmMKQEAgLTE0OTMsMTEgKzE0OTMsNiBAQCBzdGF0aWMgaW50IG14Zl93cml0 ZV9qcGVnMjAwMF9zdWJkZXNjKEFWRm9ybWF0Q29udGV4dCAqcywgQVZTdHJlYW0gKnN0KQogICAg IGludDY0X3QgcG9zOwogICAgIGNvbnN0IEFWUGl4Rm10RGVzY3JpcHRvciAqcGl4X2Rlc2MgPSBh dl9waXhfZm10X2Rlc2NfZ2V0KHN0LT5jb2RlY3Bhci0+Zm9ybWF0KTsKIAotICAgIGlmICghcGl4 X2Rlc2MpIHsKLSAgICAgICAgYXZfbG9nKHMsIEFWX0xPR19FUlJPUiwgIlBpeGVsIGZvcm1hdCBu b3Qgc2V0IC0gbm90IHdyaXRpbmcgSlBFRzIwMDBTdWJEZXNjcmlwdG9yXG4iKTsKLSAgICAgICAg cmV0dXJuIEFWRVJST1IoRUlOVkFMKTsKLSAgICB9Ci0KICAgICAvKiBKUEVHMjAwMCBzdWJkZXNj cmlwdG9yIGtleSAqLwogICAgIGF2aW9fd3JpdGUocGIsIG14Zl9qcGVnMjAwMF9zdWJkZXNjcmlw dG9yX2tleSwgMTYpOwogICAgIGtsdl9lbmNvZGVfYmVyNF9sZW5ndGgocGIsIDApOwpAQCAtMTYx MCw3ICsxNjA1LDYgQEAgc3RhdGljIGludCBteGZfd3JpdGVfZmZ2MV9kZXNjKEFWRm9ybWF0Q29u dGV4dCAqcywgQVZTdHJlYW0gKnN0KQogewogICAgIGludCBpc19yZ2IsIHBvczsKICAgICBjb25z dCBBVlBpeEZtdERlc2NyaXB0b3IgKmRlc2MgPSBhdl9waXhfZm10X2Rlc2NfZ2V0KHN0LT5jb2Rl Y3Bhci0+Zm9ybWF0KTsKLSAgICBhdl9hc3NlcnQwKGRlc2MpOwogICAgIGlzX3JnYiA9IGRlc2Mt PmZsYWdzICYgQVZfUElYX0ZNVF9GTEFHX1JHQjsKIAogICAgIHBvcyA9IG14Zl93cml0ZV9jZGNp X2NvbW1vbihzLCBzdCwgaXNfcmdiID8gbXhmX3JnYmFfZGVzY3JpcHRvcl9rZXkgOiBteGZfY2Rj aV9kZXNjcmlwdG9yX2tleSk7CkBAIC0yNjkyLDExICsyNjg2LDYgQEAgc3RhdGljIGludCBteGZf cGFyc2VfanBlZzIwMDBfZnJhbWUoQVZGb3JtYXRDb250ZXh0ICpzLCBBVlN0cmVhbSAqc3QsIEFW UGFja2V0ICoKICAgICBHZXRCeXRlQ29udGV4dCBnOwogICAgIHVpbnQzMl90IGoya19uY29tcG9u ZW50czsKIAotICAgIGlmICghcGl4X2Rlc2MpIHsKLSAgICAgICAgYXZfbG9nKHMsIEFWX0xPR19F UlJPUiwgIlBpeGVsIGZvcm1hdCBub3Qgc2V0XG4iKTsKLSAgICAgICAgcmV0dXJuIEFWRVJST1Io RUlOVkFMKTsKLSAgICB9Ci0KICAgICBpZiAobXhmLT5oZWFkZXJfd3JpdHRlbikKICAgICAgICAg cmV0dXJuIDE7CiAKQEAgLTI4OTgsMjAgKzI4ODcsMTggQEAgc3RhdGljIGVudW0gQVZDaHJvbWFM b2NhdGlvbiBjaG9vc2VfY2hyb21hX2xvY2F0aW9uKEFWRm9ybWF0Q29udGV4dCAqcywgQVZTdHJl YW0KICAgICBpZiAocGFyLT5jaHJvbWFfbG9jYXRpb24gIT0gQVZDSFJPTUFfTE9DX1VOU1BFQ0lG SUVEKQogICAgICAgICByZXR1cm4gcGFyLT5jaHJvbWFfbG9jYXRpb247CiAKLSAgICBpZiAocGl4 X2Rlc2MpIHsKLSAgICAgICAgaWYgKHBpeF9kZXNjLT5sb2cyX2Nocm9tYV9oID09IDApIHsKLSAg ICAgICAgICAgIHJldHVybiBBVkNIUk9NQV9MT0NfVE9QTEVGVDsKLSAgICAgICAgfSBlbHNlIGlm IChwaXhfZGVzYy0+bG9nMl9jaHJvbWFfdyA9PSAxICYmIHBpeF9kZXNjLT5sb2cyX2Nocm9tYV9o ID09IDEpIHsKLSAgICAgICAgICAgIGlmIChwYXItPmZpZWxkX29yZGVyID09IEFWX0ZJRUxEX1VO S05PV04gfHwgcGFyLT5maWVsZF9vcmRlciA9PSBBVl9GSUVMRF9QUk9HUkVTU0lWRSkgewotICAg ICAgICAgICAgICAgIHN3aXRjaCAocGFyLT5jb2RlY19pZCkgewotICAgICAgICAgICAgICAgIGNh c2UgQVZfQ09ERUNfSURfTUpQRUc6Ci0gICAgICAgICAgICAgICAgY2FzZSBBVl9DT0RFQ19JRF9N UEVHMVZJREVPOiByZXR1cm4gQVZDSFJPTUFfTE9DX0NFTlRFUjsKLSAgICAgICAgICAgICAgICB9 CisgICAgaWYgKHBpeF9kZXNjLT5sb2cyX2Nocm9tYV9oID09IDApIHsKKyAgICAgICAgcmV0dXJu IEFWQ0hST01BX0xPQ19UT1BMRUZUOworICAgIH0gZWxzZSBpZiAocGl4X2Rlc2MtPmxvZzJfY2hy b21hX3cgPT0gMSAmJiBwaXhfZGVzYy0+bG9nMl9jaHJvbWFfaCA9PSAxKSB7CisgICAgICAgIGlm IChwYXItPmZpZWxkX29yZGVyID09IEFWX0ZJRUxEX1VOS05PV04gfHwgcGFyLT5maWVsZF9vcmRl ciA9PSBBVl9GSUVMRF9QUk9HUkVTU0lWRSkgeworICAgICAgICAgICAgc3dpdGNoIChwYXItPmNv ZGVjX2lkKSB7CisgICAgICAgICAgICBjYXNlIEFWX0NPREVDX0lEX01KUEVHOgorICAgICAgICAg ICAgY2FzZSBBVl9DT0RFQ19JRF9NUEVHMVZJREVPOiByZXR1cm4gQVZDSFJPTUFfTE9DX0NFTlRF UjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChwYXItPmZpZWxkX29yZGVyID09IEFW X0ZJRUxEX1VOS05PV04gfHwgcGFyLT5maWVsZF9vcmRlciAhPSBBVl9GSUVMRF9QUk9HUkVTU0lW RSkgewotICAgICAgICAgICAgICAgIHN3aXRjaCAocGFyLT5jb2RlY19pZCkgewotICAgICAgICAg ICAgICAgIGNhc2UgQVZfQ09ERUNfSURfTVBFRzJWSURFTzogcmV0dXJuIEFWQ0hST01BX0xPQ19M RUZUOwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAocGFyLT5maWVs ZF9vcmRlciA9PSBBVl9GSUVMRF9VTktOT1dOIHx8IHBhci0+ZmllbGRfb3JkZXIgIT0gQVZfRklF TERfUFJPR1JFU1NJVkUpIHsKKyAgICAgICAgICAgIHN3aXRjaCAocGFyLT5jb2RlY19pZCkgewor ICAgICAgICAgICAgY2FzZSBBVl9DT0RFQ19JRF9NUEVHMlZJREVPOiByZXR1cm4gQVZDSFJPTUFf TE9DX0xFRlQ7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkBAIC0yOTUwLDI3ICsy OTM3LDI2IEBAIHN0YXRpYyBpbnQgbXhmX2luaXQoQVZGb3JtYXRDb250ZXh0ICpzKQogICAgICAg ICBpZiAoc3QtPmNvZGVjcGFyLT5jb2RlY190eXBlID09IEFWTUVESUFfVFlQRV9WSURFTykgewog ICAgICAgICAgICAgY29uc3QgQVZQaXhGbXREZXNjcmlwdG9yICpwaXhfZGVzYyA9IGF2X3BpeF9m bXRfZGVzY19nZXQoc3QtPmNvZGVjcGFyLT5mb3JtYXQpOwogICAgICAgICAgICAgQVZSYXRpb25h bCB0YmMgPSAoQVZSYXRpb25hbCl7IDAsIDAgfTsKKworICAgICAgICAgICAgaWYgKCFwaXhfZGVz YykgeworICAgICAgICAgICAgICAgIGF2X2xvZyhzLCBBVl9MT0dfRVJST1IsICJ2aWRlbyBzdHJl YW0gcmVxdWlyZSB0aGUgY29kZWMgcGl4ZWwgZm9ybWF0IHRvIGJlIHNldFxuIik7CisgICAgICAg ICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBpZiAoc3Qt PmF2Z19mcmFtZV9yYXRlLm51bSA+IDAgJiYgc3QtPmF2Z19mcmFtZV9yYXRlLmRlbiA+IDApCiAg ICAgICAgICAgICAgICAgdGJjID0gYXZfaW52X3Eoc3QtPmF2Z19mcmFtZV9yYXRlKTsKICAgICAg ICAgICAgIGVsc2UgaWYgKHN0LT5yX2ZyYW1lX3JhdGUubnVtID4gMCAmJiBzdC0+cl9mcmFtZV9y YXRlLmRlbiA+IDApCiAgICAgICAgICAgICAgICAgdGJjID0gYXZfaW52X3Eoc3QtPnJfZnJhbWVf cmF0ZSk7CiAKLSAgICAgICAgICAgIC8vIERlZmF1bHQgY29tcG9uZW50IGRlcHRoIHRvIDgKLSAg ICAgICAgICAgIHNjLT5jb21wb25lbnRfZGVwdGggPSA4OwotICAgICAgICAgICAgc2MtPmhfY2hy b21hX3N1Yl9zYW1wbGUgPSAyOwotICAgICAgICAgICAgc2MtPnZfY2hyb21hX3N1Yl9zYW1wbGUg PSAyOwotICAgICAgICAgICAgc2MtPmNvbG9yX3NpdGluZyA9IDB4RkY7Ci0KICAgICAgICAgICAg IGlmIChzdC0+Y29kZWNwYXItPnNhbXBsZV9hc3BlY3RfcmF0aW8ubnVtICYmIHN0LT5jb2RlY3Bh ci0+c2FtcGxlX2FzcGVjdF9yYXRpby5kZW4pIHsKICAgICAgICAgICAgICAgICBzYy0+YXNwZWN0 X3JhdGlvID0gYXZfbXVsX3Eoc3QtPmNvZGVjcGFyLT5zYW1wbGVfYXNwZWN0X3JhdGlvLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdl9tYWtlX3Eoc3QtPmNv ZGVjcGFyLT53aWR0aCwgc3QtPmNvZGVjcGFyLT5oZWlnaHQpKTsKICAgICAgICAgICAgIH0KIAot ICAgICAgICAgICAgaWYgKHBpeF9kZXNjKSB7Ci0gICAgICAgICAgICAgICAgc2MtPmNvbXBvbmVu dF9kZXB0aCAgICAgPSBwaXhfZGVzYy0+Y29tcFswXS5kZXB0aDsKLSAgICAgICAgICAgICAgICBz Yy0+aF9jaHJvbWFfc3ViX3NhbXBsZSA9IDEgPDwgcGl4X2Rlc2MtPmxvZzJfY2hyb21hX3c7Ci0g ICAgICAgICAgICAgICAgc2MtPnZfY2hyb21hX3N1Yl9zYW1wbGUgPSAxIDw8IHBpeF9kZXNjLT5s b2cyX2Nocm9tYV9oOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgc2MtPmNvbXBvbmVudF9k ZXB0aCAgICAgPSBwaXhfZGVzYy0+Y29tcFswXS5kZXB0aDsKKyAgICAgICAgICAgIHNjLT5oX2No cm9tYV9zdWJfc2FtcGxlID0gMSA8PCBwaXhfZGVzYy0+bG9nMl9jaHJvbWFfdzsKKyAgICAgICAg ICAgIHNjLT52X2Nocm9tYV9zdWJfc2FtcGxlID0gMSA8PCBwaXhfZGVzYy0+bG9nMl9jaHJvbWFf aDsKKwogICAgICAgICAgICAgc3dpdGNoIChjaG9vc2VfY2hyb21hX2xvY2F0aW9uKHMsIHN0KSkg ewogICAgICAgICAgICAgY2FzZSBBVkNIUk9NQV9MT0NfVE9QTEVGVDogc2MtPmNvbG9yX3NpdGlu ZyA9IDA7IGJyZWFrOwogICAgICAgICAgICAgY2FzZSBBVkNIUk9NQV9MT0NfTEVGVDogICAgc2Mt PmNvbG9yX3NpdGluZyA9IDY7IGJyZWFrOwotLSAKMi40OS4xCgoKRnJvbSA2YTI2MTkyZTUzNmU1 ZWI0OWIyNjljZTRiZTQ5Njk2OGI2OTMzNDJjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9t OiBCYXB0aXN0ZSBDb3VkdXJpZXIgPGJhcHRpc3RlLmNvdWR1cmllckBnbWFpbC5jb20+CkRhdGU6 IFR1ZSwgMyBKdW4gMjAyNSAyMzoxMTo0MyAtMDcwMApTdWJqZWN0OiBbUEFUQ0ggMy83XSBsYXZm L214ZmVuYzogcmVtb3ZlIGNkY2kgcGl4ZWwgZm9ybWF0IHNwZWNpZmljIHZhbHVlcwogZnJvbSBz dHJlYW0gY29udGV4dAoKLS0tCiBsaWJhdmZvcm1hdC9teGZlbmMuYyB8IDY0ICsrKysrKysrKysr KysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMjggaW5z ZXJ0aW9ucygrKSwgMzYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQvbXhm ZW5jLmMgYi9saWJhdmZvcm1hdC9teGZlbmMuYwppbmRleCBlZDMxNWJlMTQwLi4zMGQ4Y2MxYzI3 IDEwMDY0NAotLS0gYS9saWJhdmZvcm1hdC9teGZlbmMuYworKysgYi9saWJhdmZvcm1hdC9teGZl bmMuYwpAQCAtMTA2LDExICsxMDYsNyBAQCB0eXBlZGVmIHN0cnVjdCBNWEZTdHJlYW1Db250ZXh0 IHsKICAgICBpbnQgb3JkZXI7ICAgICAgICAgICAgICAgLy8vPCBpbnRlcmxlYXZpbmcgb3JkZXIg aWYgZHRzIGFyZSBlcXVhbAogICAgIGludCBpbnRlcmxhY2VkOyAgICAgICAgICAvLy88IHdoZXRo ZXIgcGljdHVyZSBpcyBpbnRlcmxhY2VkCiAgICAgaW50IGZpZWxkX2RvbWluYW5jZTsgICAgIC8v LzwgdGZmPTEsIGJmZj0yCi0gICAgaW50IGNvbXBvbmVudF9kZXB0aDsKLSAgICBpbnQgY29sb3Jf c2l0aW5nOwogICAgIGludCBzaWduYWxfc3RhbmRhcmQ7Ci0gICAgaW50IGhfY2hyb21hX3N1Yl9z YW1wbGU7Ci0gICAgaW50IHZfY2hyb21hX3N1Yl9zYW1wbGU7CiAgICAgaW50IHRlbXBvcmFsX3Jl b3JkZXJpbmc7CiAgICAgQVZSYXRpb25hbCBhc3BlY3RfcmF0aW87IC8vLzwgZGlzcGxheSBhc3Bl Y3QgcmF0aW8KICAgICBpbnQgY2xvc2VkX2dvcDsgICAgICAgICAgLy8vPCBnb3AgaXMgY2xvc2Vk LCB1c2VkIGluIG1wZWctMiBmcmFtZSBwYXJzaW5nCkBAIC0xODAsNiArMTc2LDggQEAgc3RhdGlj IGludCBteGZfd3JpdGVfY2RjaV9kZXNjKEFWRm9ybWF0Q29udGV4dCAqcywgQVZTdHJlYW0gKnN0 KTsKIHN0YXRpYyBpbnQgbXhmX3dyaXRlX2dlbmVyaWNfc291bmRfZGVzYyhBVkZvcm1hdENvbnRl eHQgKnMsIEFWU3RyZWFtICpzdCk7CiBzdGF0aWMgaW50IG14Zl93cml0ZV9zNDM2bV9hbmNfZGVz YyhBVkZvcm1hdENvbnRleHQgKnMsIEFWU3RyZWFtICpzdCk7CiAKK3N0YXRpYyBlbnVtIEFWQ2hy b21hTG9jYXRpb24gY2hvb3NlX2Nocm9tYV9sb2NhdGlvbihBVkZvcm1hdENvbnRleHQgKnMsIEFW U3RyZWFtICpzdCk7CisKIHN0YXRpYyBjb25zdCBNWEZDb250YWluZXJFc3NlbmNlRW50cnkgbXhm X2Vzc2VuY2VfY29udGFpbmVyX3Vsc1tdID0gewogICAgIHsgeyAweDA2LDB4MEUsMHgyQiwweDM0 LDB4MDQsMHgwMSwweDAxLDB4MDIsMHgwRCwweDAxLDB4MDMsMHgwMSwweDAyLDB4MDQsMHg2MCww eDAxIH0sCiAgICAgICB7IDB4MDYsMHgwRSwweDJCLDB4MzQsMHgwMSwweDAyLDB4MDEsMHgwMSww eDBELDB4MDEsMHgwMywweDAxLDB4MTUsMHgwMSwweDA1LDB4MDAgfSwKQEAgLTEyMDcsNiArMTIw NSw3IEBAIHN0YXRpYyBpbnQ2NF90IG14Zl93cml0ZV9jZGNpX2NvbW1vbihBVkZvcm1hdENvbnRl eHQgKnMsIEFWU3RyZWFtICpzdCwgY29uc3QgVUlECiB7CiAgICAgTVhGU3RyZWFtQ29udGV4dCAq c2MgPSBzdC0+cHJpdl9kYXRhOwogICAgIEFWSU9Db250ZXh0ICpwYiA9IHMtPnBiOworICAgIGNv bnN0IEFWUGl4Rm10RGVzY3JpcHRvciAqcGl4X2Rlc2MgPSBhdl9waXhfZm10X2Rlc2NfZ2V0KHN0 LT5jb2RlY3Bhci0+Zm9ybWF0KTsKICAgICBpbnQgc3RvcmVkX3dpZHRoID0gc3QtPmNvZGVjcGFy LT53aWR0aDsKICAgICBpbnQgc3RvcmVkX2hlaWdodCA9IHN0LT5jb2RlY3Bhci0+aGVpZ2h0Owog ICAgIGludCBkaXNwbGF5X3dpZHRoOwpAQCAtMTMwOSwyMSArMTMwOCwzNyBAQCBzdGF0aWMgaW50 NjRfdCBteGZfd3JpdGVfY2RjaV9jb21tb24oQVZGb3JtYXRDb250ZXh0ICpzLCBBVlN0cmVhbSAq c3QsIGNvbnN0IFVJRAogICAgIH0KIAogICAgIGlmIChrZXkgIT0gbXhmX3JnYmFfZGVzY3JpcHRv cl9rZXkpIHsKKyAgICAgICAgaW50IGNvbXBvbmVudF9kZXB0aCAgICAgPSBwaXhfZGVzYy0+Y29t cFswXS5kZXB0aDsKKyAgICAgICAgaW50IGhfY2hyb21hX3N1Yl9zYW1wbGUgPSAxIDw8IHBpeF9k ZXNjLT5sb2cyX2Nocm9tYV93OworICAgICAgICBpbnQgdl9jaHJvbWFfc3ViX3NhbXBsZSA9IDEg PDwgcGl4X2Rlc2MtPmxvZzJfY2hyb21hX2g7CisgICAgICAgIGludCBjb2xvcl9zaXRpbmc7CisK ICAgICAgICAgLy8gY29tcG9uZW50IGRlcHRoCiAgICAgICAgIG14Zl93cml0ZV9sb2NhbF90YWco cywgNCwgMHgzMzAxKTsKLSAgICAgICAgYXZpb193YjMyKHBiLCBzYy0+Y29tcG9uZW50X2RlcHRo KTsKKyAgICAgICAgYXZpb193YjMyKHBiLCBjb21wb25lbnRfZGVwdGgpOwogCiAgICAgICAgIC8v IGhvcml6b250YWwgc3Vic2FtcGxpbmcKICAgICAgICAgbXhmX3dyaXRlX2xvY2FsX3RhZyhzLCA0 LCAweDMzMDIpOwotICAgICAgICBhdmlvX3diMzIocGIsIHNjLT5oX2Nocm9tYV9zdWJfc2FtcGxl KTsKKyAgICAgICAgYXZpb193YjMyKHBiLCBoX2Nocm9tYV9zdWJfc2FtcGxlKTsKIAogICAgICAg ICAvLyB2ZXJ0aWNhbCBzdWJzYW1wbGluZwogICAgICAgICBteGZfd3JpdGVfbG9jYWxfdGFnKHMs IDQsIDB4MzMwOCk7Ci0gICAgICAgIGF2aW9fd2IzMihwYiwgc2MtPnZfY2hyb21hX3N1Yl9zYW1w bGUpOworICAgICAgICBhdmlvX3diMzIocGIsIHZfY2hyb21hX3N1Yl9zYW1wbGUpOworCisgICAg ICAgIHN3aXRjaCAoY2hvb3NlX2Nocm9tYV9sb2NhdGlvbihzLCBzdCkpIHsKKyAgICAgICAgY2Fz ZSBBVkNIUk9NQV9MT0NfVE9QTEVGVDogY29sb3Jfc2l0aW5nID0gMDsgYnJlYWs7CisgICAgICAg IGNhc2UgQVZDSFJPTUFfTE9DX0xFRlQ6ICAgIGNvbG9yX3NpdGluZyA9IDY7IGJyZWFrOworICAg ICAgICBjYXNlIEFWQ0hST01BX0xPQ19UT1A6ICAgICBjb2xvcl9zaXRpbmcgPSAxOyBicmVhazsK KyAgICAgICAgY2FzZSBBVkNIUk9NQV9MT0NfQ0VOVEVSOiAgY29sb3Jfc2l0aW5nID0gMzsgYnJl YWs7CisgICAgICAgIGRlZmF1bHQ6ICAgICAgICAgICAgICAgICAgIGNvbG9yX3NpdGluZyA9IDB4 ZmY7CisgICAgICAgIH0KKworICAgICAgICBpZiAoSVNfRDEwKHMpKQorICAgICAgICAgICAgY29s b3Jfc2l0aW5nID0gMDsgLy8gY29sb3Igc2l0aW5nIGlzIHNwZWNpZmllZCB0byBiZSAwIGluIGQt MTAgc3BlY3MKIAogICAgICAgICAvLyBjb2xvciBzaXRpbmcKICAgICAgICAgbXhmX3dyaXRlX2xv Y2FsX3RhZyhzLCAxLCAweDMzMDMpOwotICAgICAgICBhdmlvX3c4KHBiLCBzYy0+Y29sb3Jfc2l0 aW5nKTsKKyAgICAgICAgYXZpb193OChwYiwgY29sb3Jfc2l0aW5nKTsKIAogICAgICAgICAvLyBQ YWRkaW5nIEJpdHMKICAgICAgICAgbXhmX3dyaXRlX2xvY2FsX3RhZyhzLCAyLCAweDMzMDcpOwpA QCAtMTMzMSwxMiArMTM0NiwxMiBAQCBzdGF0aWMgaW50NjRfdCBteGZfd3JpdGVfY2RjaV9jb21t b24oQVZGb3JtYXRDb250ZXh0ICpzLCBBVlN0cmVhbSAqc3QsIGNvbnN0IFVJRAogCiAgICAgICAg IGlmIChzdC0+Y29kZWNwYXItPmNvbG9yX3JhbmdlICE9IEFWQ09MX1JBTkdFX1VOU1BFQ0lGSUVE KSB7CiAgICAgICAgICAgICBpbnQgYmxhY2sgPSAwLAotICAgICAgICAgICAgICAgIHdoaXRlID0g KDE8PHNjLT5jb21wb25lbnRfZGVwdGgpIC0gMSwKLSAgICAgICAgICAgICAgICBjb2xvciA9ICgx PDxzYy0+Y29tcG9uZW50X2RlcHRoKTsKKyAgICAgICAgICAgICAgICB3aGl0ZSA9ICgxPDxjb21w b25lbnRfZGVwdGgpIC0gMSwKKyAgICAgICAgICAgICAgICBjb2xvciA9ICgxPDxjb21wb25lbnRf ZGVwdGgpOwogICAgICAgICAgICAgaWYgKHN0LT5jb2RlY3Bhci0+Y29sb3JfcmFuZ2UgPT0gQVZD T0xfUkFOR0VfTVBFRykgewotICAgICAgICAgICAgICAgIGJsYWNrID0gMSAgIDw8IChzYy0+Y29t cG9uZW50X2RlcHRoIC0gNCk7Ci0gICAgICAgICAgICAgICAgd2hpdGUgPSAyMzUgPDwgKHNjLT5j b21wb25lbnRfZGVwdGggLSA4KTsKLSAgICAgICAgICAgICAgICBjb2xvciA9ICgxNCA8PCAoc2Mt PmNvbXBvbmVudF9kZXB0aCAtIDQpKSArIDE7CisgICAgICAgICAgICAgICAgYmxhY2sgPSAxICAg PDwgKGNvbXBvbmVudF9kZXB0aCAtIDQpOworICAgICAgICAgICAgICAgIHdoaXRlID0gMjM1IDw8 IChjb21wb25lbnRfZGVwdGggLSA4KTsKKyAgICAgICAgICAgICAgICBjb2xvciA9ICgxNCA8PCAo Y29tcG9uZW50X2RlcHRoIC0gNCkpICsgMTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIG14 Zl93cml0ZV9sb2NhbF90YWcocywgNCwgMHgzMzA0KTsKICAgICAgICAgICAgIGF2aW9fd2IzMihw YiwgYmxhY2spOwpAQCAtMjM1NCwxNSArMjM2OSw2IEBAIHN0YXRpYyBpbnQgbXhmX3BhcnNlX2Ru eGhkX2ZyYW1lKEFWRm9ybWF0Q29udGV4dCAqcywgQVZTdHJlYW0gKnN0LCBBVlBhY2tldCAqcGt0 CiAgICAgaWYgKGkgPT0gRkZfQVJSQVlfRUxFTVMobXhmX2RueGhkX2NvZGVjX3VscykpCiAgICAg ICAgIHJldHVybiAwOwogCi0gICAgc2MtPmNvbXBvbmVudF9kZXB0aCA9IDA7Ci0gICAgc3dpdGNo IChwa3QtPmRhdGFbMHgyMV0gPj4gNSkgewotICAgIGNhc2UgMTogc2MtPmNvbXBvbmVudF9kZXB0 aCA9IDg7IGJyZWFrOwotICAgIGNhc2UgMjogc2MtPmNvbXBvbmVudF9kZXB0aCA9IDEwOyBicmVh azsKLSAgICBjYXNlIDM6IHNjLT5jb21wb25lbnRfZGVwdGggPSAxMjsgYnJlYWs7Ci0gICAgfQot ICAgIGlmICghc2MtPmNvbXBvbmVudF9kZXB0aCkKLSAgICAgICAgcmV0dXJuIDA7Ci0KICAgICBp ZiAoY2lkID49IDEyNzApIHsgLy8gUkkgcmFzdGVyCiAgICAgICAgIGF2X3JlZHVjZSgmc2MtPmFz cGVjdF9yYXRpby5udW0sICZzYy0+YXNwZWN0X3JhdGlvLmRlbiwKICAgICAgICAgICAgICAgICAg IHN0LT5jb2RlY3Bhci0+d2lkdGgsIHN0LT5jb2RlY3Bhci0+aGVpZ2h0LApAQCAtMjUzNiw3ICsy NTQyLDYgQEAgc3RhdGljIGludCBteGZfcGFyc2VfaDI2NF9mcmFtZShBVkZvcm1hdENvbnRleHQg KnMsIEFWU3RyZWFtICpzdCwKICAgICAgICAgICAgICAgICAgICAgICBzYy0+YXNwZWN0X3JhdGlv Lm51bSwgc2MtPmFzcGVjdF9yYXRpby5kZW4sIDEwMjQqMTAyNCk7CiAgICAgICAgICAgICBpbnRy YV9vbmx5ID0gKHNwcy0+Y29uc3RyYWludF9zZXRfZmxhZ3MgPj4gMykgJiAxOwogICAgICAgICAg ICAgc2MtPmludGVybGFjZWQgPSAhc3BzLT5mcmFtZV9tYnNfb25seV9mbGFnOwotICAgICAgICAg ICAgc2MtPmNvbXBvbmVudF9kZXB0aCA9IHNwcy0+Yml0X2RlcHRoX2x1bWE7CiAKICAgICAgICAg ICAgIGJ1ZiA9IG5hbF9lbmQ7CiAgICAgICAgICAgICBicmVhazsKQEAgLTI1ODEsNyArMjU4Niw2 IEBAIHN0YXRpYyBpbnQgbXhmX3BhcnNlX2gyNjRfZnJhbWUoQVZGb3JtYXRDb250ZXh0ICpzLCBB VlN0cmVhbSAqc3QsCiAgICAgZm9yIChpID0gMDsgaSA8IEZGX0FSUkFZX0VMRU1TKG14Zl9oMjY0 X2NvZGVjX3Vscyk7IGkrKykgewogICAgICAgICBpZiAoZnJhbWVfc2l6ZSA9PSBteGZfaDI2NF9j b2RlY191bHNbaV0uZnJhbWVfc2l6ZSAmJiBzYy0+aW50ZXJsYWNlZCA9PSBteGZfaDI2NF9jb2Rl Y191bHNbaV0uaW50ZXJsYWNlZCkgewogICAgICAgICAgICAgY29kZWNfdWwgPSAmbXhmX2gyNjRf Y29kZWNfdWxzW2ldLnVpZDsKLSAgICAgICAgICAgIHNjLT5jb21wb25lbnRfZGVwdGggPSAxMDsg Ly8gQVZDIEludHJhIGlzIGFsd2F5cyAxMCBCaXQKICAgICAgICAgICAgIHNjLT5hc3BlY3RfcmF0 aW8gPSAoQVZSYXRpb25hbCl7IDE2LCA5IH07IC8vIDE2OjkgaXMgbWFuZGF0b3J5IGZvciBicm9h ZGNhc3QgSEQKICAgICAgICAgICAgIHN0LT5jb2RlY3Bhci0+cHJvZmlsZSA9IG14Zl9oMjY0X2Nv ZGVjX3Vsc1tpXS5wcm9maWxlOwogICAgICAgICAgICAgc2MtPmF2Y19pbnRyYSA9IDE7CkBAIC0y OTUzLDE3ICsyOTU3LDYgQEAgc3RhdGljIGludCBteGZfaW5pdChBVkZvcm1hdENvbnRleHQgKnMp CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF2X21ha2VfcShz dC0+Y29kZWNwYXItPndpZHRoLCBzdC0+Y29kZWNwYXItPmhlaWdodCkpOwogICAgICAgICAgICAg fQogCi0gICAgICAgICAgICBzYy0+Y29tcG9uZW50X2RlcHRoICAgICA9IHBpeF9kZXNjLT5jb21w WzBdLmRlcHRoOwotICAgICAgICAgICAgc2MtPmhfY2hyb21hX3N1Yl9zYW1wbGUgPSAxIDw8IHBp eF9kZXNjLT5sb2cyX2Nocm9tYV93OwotICAgICAgICAgICAgc2MtPnZfY2hyb21hX3N1Yl9zYW1w bGUgPSAxIDw8IHBpeF9kZXNjLT5sb2cyX2Nocm9tYV9oOwotCi0gICAgICAgICAgICBzd2l0Y2gg KGNob29zZV9jaHJvbWFfbG9jYXRpb24ocywgc3QpKSB7Ci0gICAgICAgICAgICBjYXNlIEFWQ0hS T01BX0xPQ19UT1BMRUZUOiBzYy0+Y29sb3Jfc2l0aW5nID0gMDsgYnJlYWs7Ci0gICAgICAgICAg ICBjYXNlIEFWQ0hST01BX0xPQ19MRUZUOiAgICBzYy0+Y29sb3Jfc2l0aW5nID0gNjsgYnJlYWs7 Ci0gICAgICAgICAgICBjYXNlIEFWQ0hST01BX0xPQ19UT1A6ICAgICBzYy0+Y29sb3Jfc2l0aW5n ID0gMTsgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIEFWQ0hST01BX0xPQ19DRU5URVI6ICBzYy0+ Y29sb3Jfc2l0aW5nID0gMzsgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0KICAgICAgICAgICAgIG14 Zi0+Y29udGVudF9wYWNrYWdlX3JhdGUgPSBmZl9teGZfZ2V0X2NvbnRlbnRfcGFja2FnZV9yYXRl KHRiYyk7CiAgICAgICAgICAgICBteGYtPnRpbWVfYmFzZSA9IHRiYzsKICAgICAgICAgICAgIGF2 cHJpdl9zZXRfcHRzX2luZm8oc3QsIDY0LCBteGYtPnRpbWVfYmFzZS5udW0sIG14Zi0+dGltZV9i YXNlLmRlbik7CkBAIC0zMDA2LDcgKzI5OTksNiBAQCBzdGF0aWMgaW50IG14Zl9pbml0KEFWRm9y bWF0Q29udGV4dCAqcykKICAgICAgICAgICAgICAgICBzYy0+Y29udGFpbmVyX3VsID0gJm14Zl9k MTBfY29udGFpbmVyX3Vsc1t1bF9pbmRleF07CiAgICAgICAgICAgICAgICAgc2MtPmluZGV4ID0g SU5ERVhfRDEwX1ZJREVPOwogICAgICAgICAgICAgICAgIHNjLT5zaWduYWxfc3RhbmRhcmQgPSAx OwotICAgICAgICAgICAgICAgIHNjLT5jb2xvcl9zaXRpbmcgPSAwOwogICAgICAgICAgICAgICAg IHNjLT5mcmFtZV9zaXplID0gKGludDY0X3Qpc2MtPnZpZGVvX2JpdF9yYXRlICoKICAgICAgICAg ICAgICAgICAgICAgbXhmLT50aW1lX2Jhc2UubnVtIC8gKDgqbXhmLT50aW1lX2Jhc2UuZGVuKTsK ICAgICAgICAgICAgIH0KLS0gCjIuNDkuMQoKCkZyb20gNzkyZTQ3OWVjMjU4ZmUwMjdmYWE0YjYx YTE1YjBmYTdkYzVhZWEyZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogQmFwdGlzdGUg Q291ZHVyaWVyIDxiYXB0aXN0ZS5jb3VkdXJpZXJAZ21haWwuY29tPgpEYXRlOiBXZWQsIDQgSnVu IDIwMjUgMTE6MjQ6NDEgLTA3MDAKU3ViamVjdDogW1BBVENIIDQvN10gbGF2Zi9teGZlbmM6IGNv cnJlY3RseSBhZGQganBlZzIwMDAgc3ViZGVzY3JpcHRvcgogcmVmZXJlbmNlIGluIGNkY2ksIGZh Y3Rvcml6ZQoKLS0tCiBsaWJhdmZvcm1hdC9teGZlbmMuYyB8IDUwICsrKysrKysrKysrKysrKysr KysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMjYgaW5zZXJ0aW9u cygrKSwgMjQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQvbXhmZW5jLmMg Yi9saWJhdmZvcm1hdC9teGZlbmMuYwppbmRleCAzMGQ4Y2MxYzI3Li5iOTM1MzYxNTk5IDEwMDY0 NAotLS0gYS9saWJhdmZvcm1hdC9teGZlbmMuYworKysgYi9saWJhdmZvcm1hdC9teGZlbmMuYwpA QCAtMTE3LDkgKzExNyw5IEBAIHR5cGVkZWYgc3RydWN0IE1YRlN0cmVhbUNvbnRleHQgewogICAg IGludCBtYXhfZ29wOyAgICAgICAgICAgICAvLy88IG1heGltdW0gZ29wIHNpemUsIHVzZWQgYnkg bXBlZy0yIGRlc2NyaXB0b3IKICAgICBpbnQgYl9waWN0dXJlX2NvdW50OyAgICAgLy8vPCBtYXhp bXVtIG51bWJlciBvZiBjb25zZWN1dGl2ZSBiIHBpY3R1cmVzLCB1c2VkIGluIG1wZWctMiBkZXNj cmlwdG9yCiAgICAgaW50IGxvd19kZWxheTsgICAgICAgICAgIC8vLzwgbG93IGRlbGF5LCB1c2Vk IGluIG1wZWctMiBkZXNjcmlwdG9yCi0gICAgaW50IGF2Y19pbnRyYTsKICAgICBpbnQgbWljcm9f dmVyc2lvbjsgICAgICAgLy8vPCBmb3JtYXQgbWljcm9fdmVyc2lvbiwgdXNlZCBpbiBmZnYxIGRl c2NyaXB0b3IKICAgICBqMmtfaW5mb190IGoya19pbmZvOworICAgIGVudW0gTVhGTWV0YWRhdGFT ZXRUeXBlIHN1Yl9kZXNjcmlwdG9yOwogfSBNWEZTdHJlYW1Db250ZXh0OwogCiB0eXBlZGVmIHN0 cnVjdCBNWEZDb250YWluZXJFc3NlbmNlRW50cnkgewpAQCAtNDE3LDggKzQxNyw5IEBAIHN0YXRp YyBjb25zdCBNWEZMb2NhbFRhZ1BhaXIgbXhmX2xvY2FsX3RhZ19iYXRjaFtdID0gewogICAgIHsg MHg0NDA2LCB7MHgwNiwweDBFLDB4MkIsMHgzNCwweDAxLDB4MDEsMHgwMSwweDAyLDB4MDMsMHgw MiwweDAxLDB4MDIsMHgwQywweDAwLDB4MDAsMHgwMH19LCAvKiBVc2VyIENvbW1lbnRzICovCiAg ICAgeyAweDUwMDEsIHsweDA2LDB4MEUsMHgyQiwweDM0LDB4MDEsMHgwMSwweDAxLDB4MDIsMHgw MywweDAyLDB4MDEsMHgwMiwweDA5LDB4MDEsMHgwMCwweDAwfX0sIC8qIE5hbWUgKi8KICAgICB7 IDB4NTAwMywgezB4MDYsMHgwRSwweDJCLDB4MzQsMHgwMSwweDAxLDB4MDEsMHgwMiwweDAzLDB4 MDIsMHgwMSwweDAyLDB4MEEsMHgwMSwweDAwLDB4MDB9fSwgLyogVmFsdWUgKi8KLSAgICAvLyBt eGZfYXZjX3N1YmRlc2NyaXB0b3JfbG9jYWxfdGFncworICAgIC8vIHN1YiBkZXNjcmlwdG9yIHVz ZWQgQVZDLCBKUEVHMjAwMCBhbmQgRkZWMQogICAgIHsgMHg4MTAwLCB7MHgwNiwweDBFLDB4MkIs MHgzNCwweDAxLDB4MDEsMHgwMSwweDA5LDB4MDYsMHgwMSwweDAxLDB4MDQsMHgwNiwweDEwLDB4 MDAsMHgwMH19LCAvKiBTdWJEZXNjcmlwdG9ycyAqLworICAgIC8vIG14Zl9hdmNfc3ViZGVzY3Jp cHRvcl9sb2NhbF90YWdzCiAgICAgeyAweDgyMDAsIHsweDA2LDB4MEUsMHgyQiwweDM0LDB4MDEs MHgwMSwweDAxLDB4MEUsMHgwNCwweDAxLDB4MDYsMHgwNiwweDAxLDB4MEUsMHgwMCwweDAwfX0s IC8qIEFWQyBEZWNvZGluZyBEZWxheSAqLwogICAgIHsgMHg4MjAxLCB7MHgwNiwweDBFLDB4MkIs MHgzNCwweDAxLDB4MDEsMHgwMSwweDBFLDB4MDQsMHgwMSwweDA2LDB4MDYsMHgwMSwweDBBLDB4 MDAsMHgwMH19LCAvKiBBVkMgUHJvZmlsZSAqLwogICAgIHsgMHg4MjAyLCB7MHgwNiwweDBFLDB4 MkIsMHgzNCwweDAxLDB4MDEsMHgwMSwweDBFLDB4MDQsMHgwMSwweDA2LDB4MDYsMHgwMSwweDBE LDB4MDAsMHgwMH19LCAvKiBBVkMgTGV2ZWwgKi8KQEAgLTQzMiw3ICs0MzMsNiBAQCBzdGF0aWMg Y29uc3QgTVhGTG9jYWxUYWdQYWlyIG14Zl9sb2NhbF90YWdfYmF0Y2hbXSA9IHsKICAgICB7IDB4 REZEQSwgezB4MDYsMHgwRSwweDJCLDB4MzQsMHgwMSwweDAxLDB4MDEsMHgwRSwweDA0LDB4MDEs MHgwNiwweDBDLDB4MDUsMHgwMCwweDAwLDB4MDB9fSwgLyogRkZWMSBWZXJzaW9uICovCiAgICAg eyAweERGREIsIHsweDA2LDB4MEUsMHgyQiwweDM0LDB4MDEsMHgwMSwweDAxLDB4MEUsMHgwNCww eDAxLDB4MDYsMHgwQywweDAxLDB4MDAsMHgwMCwweDAwfX0sIC8qIEZGVjEgSW5pdGlhbGl6YXRp b24gTWV0YWRhdGEgKi8KICAgICAvLyBmZl9teGZfanBlZzIwMDBfbG9jYWxfdGFncwotICAgIHsg MHg4NDAwLCB7MHgwNiwweDBFLDB4MkIsMHgzNCwweDAxLDB4MDEsMHgwMSwweDA5LDB4MDYsMHgw MSwweDAxLDB4MDQsMHgwNiwweDEwLDB4MDAsMHgwMH19LCAvKiBTdWIgRGVzY3JpcHRvcnMgLyBP cHQgT3JkZXJlZCBhcnJheSBvZiBzdHJvbmcgcmVmZXJlbmNlcyB0byBzdWIgZGVzY3JpcHRvciBz ZXRzICovCiAgICAgeyAweDg0MDEsIHsweDA2LDB4MGUsMHgyYiwweDM0LDB4MDEsMHgwMSwweDAx LDB4MGEsMHgwNCwweDAxLDB4MDYsMHgwMywweDAxLDB4MDAsMHgwMCwweDAwfX0sIC8qIFJzaXo6 IEFuIGVudW1lcmF0ZWQgdmFsdWUgdGhhdCBkZWZpbmVzIHRoZSBkZWNvZGVyIGNhcGFiaWxpdGll cyAqLwogICAgIHsgMHg4NDAyLCB7MHgwNiwweDBlLDB4MmIsMHgzNCwweDAxLDB4MDEsMHgwMSww eDBhLDB4MDQsMHgwMSwweDA2LDB4MDMsMHgwMiwweDAwLDB4MDAsMHgwMH19LCAvKiBYc2l6OiBX aWR0aCBvZiB0aGUgcmVmZXJlbmNlIGdyaWQgKi8KICAgICB7IDB4ODQwMywgezB4MDYsMHgwZSww eDJiLDB4MzQsMHgwMSwweDAxLDB4MDEsMHgwYSwweDA0LDB4MDEsMHgwNiwweDAzLDB4MDMsMHgw MCwweDAwLDB4MDB9fSwgLyogWXNpejogSGVpZ2h0IG9mIHRoZSByZWZlcmVuY2UgZ3JpZCAqLwpA QCAtNTgyLDEwICs1ODIsMTEgQEAgc3RhdGljIHZvaWQgbXhmX3dyaXRlX3ByaW1lcl9wYWNrKEFW Rm9ybWF0Q29udGV4dCAqcykKICAgICBBVklPQ29udGV4dCAqcGIgPSBzLT5wYjsKICAgICBpbnQg bG9jYWxfdGFnX251bWJlciA9IE1YRl9OVU1fVEFHUywgaTsKICAgICBpbnQgd2lsbF9oYXZlX2F2 Y190YWdzID0gMCwgd2lsbF9oYXZlX21hc3RlcmluZ190YWdzID0gMCwgd2lsbF9oYXZlX2ZmdjFf dGFncyA9IDAsIHdpbGxfaGF2ZV9qcGVnMjAwMF90YWdzID0gMDsKKyAgICBpbnQgd2lsbF9oYXZl X3N1Yl9kZXNjcmlwdG9yID0gMDsKIAogICAgIGZvciAoaSA9IDA7IGkgPCBzLT5uYl9zdHJlYW1z OyBpKyspIHsKICAgICAgICAgTVhGU3RyZWFtQ29udGV4dCAqc2MgPSBzLT5zdHJlYW1zW2ldLT5w cml2X2RhdGE7Ci0gICAgICAgIGlmIChzLT5zdHJlYW1zW2ldLT5jb2RlY3Bhci0+Y29kZWNfaWQg PT0gQVZfQ09ERUNfSURfSDI2NCAmJiAhc2MtPmF2Y19pbnRyYSkgeworICAgICAgICBpZiAocy0+ c3RyZWFtc1tpXS0+Y29kZWNwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0gyNjQgJiYgc2Mt PnN1Yl9kZXNjcmlwdG9yKSB7CiAgICAgICAgICAgICB3aWxsX2hhdmVfYXZjX3RhZ3MgPSAxOwog ICAgICAgICB9CiAgICAgICAgIGlmIChhdl9wYWNrZXRfc2lkZV9kYXRhX2dldChzLT5zdHJlYW1z W2ldLT5jb2RlY3Bhci0+Y29kZWRfc2lkZV9kYXRhLApAQCAtNTk5LDYgKzYwMCw5IEBAIHN0YXRp YyB2b2lkIG14Zl93cml0ZV9wcmltZXJfcGFjayhBVkZvcm1hdENvbnRleHQgKnMpCiAgICAgICAg IGlmIChzLT5zdHJlYW1zW2ldLT5jb2RlY3Bhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfSlBF RzIwMDApewogICAgICAgICAgICAgd2lsbF9oYXZlX2pwZWcyMDAwX3RhZ3MgPSAxOwogICAgICAg ICB9CisgICAgICAgIGlmIChzYy0+c3ViX2Rlc2NyaXB0b3IpIHsKKyAgICAgICAgICAgIHdpbGxf aGF2ZV9zdWJfZGVzY3JpcHRvciA9IDE7CisgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAoIW14 Zi0+c3RvcmVfdXNlcl9jb21tZW50cykgewpAQCAtNjA3LDcgKzYxMSw3IEBAIHN0YXRpYyB2b2lk IG14Zl93cml0ZV9wcmltZXJfcGFjayhBVkZvcm1hdENvbnRleHQgKnMpCiAgICAgICAgIG14Zl9t YXJrX3RhZ191bnVzZWQobXhmLCAweDUwMDMpOwogICAgIH0KIAotICAgIGlmICghd2lsbF9oYXZl X2F2Y190YWdzICYmICF3aWxsX2hhdmVfZmZ2MV90YWdzKSB7CisgICAgaWYgKCF3aWxsX2hhdmVf c3ViX2Rlc2NyaXB0b3IpIHsKICAgICAgICAgbXhmX21hcmtfdGFnX3VudXNlZChteGYsIDB4ODEw MCk7CiAgICAgfQogCkBAIC02MzEsNyArNjM1LDYgQEAgc3RhdGljIHZvaWQgbXhmX3dyaXRlX3By aW1lcl9wYWNrKEFWRm9ybWF0Q29udGV4dCAqcykKICAgICB9CiAKICAgICBpZiAoIXdpbGxfaGF2 ZV9qcGVnMjAwMF90YWdzKSB7Ci0gICAgICAgIG14Zl9tYXJrX3RhZ191bnVzZWQobXhmLCAweDg0 MDApOwogICAgICAgICBteGZfbWFya190YWdfdW51c2VkKG14ZiwgMHg4NDAxKTsKICAgICAgICAg bXhmX21hcmtfdGFnX3VudXNlZChteGYsIDB4ODQwMik7CiAgICAgICAgIG14Zl9tYXJrX3RhZ191 bnVzZWQobXhmLCAweDg0MDMpOwpAQCAtMTQ1MSwxOCArMTQ1NCwxMCBAQCBzdGF0aWMgaW50NjRf dCBteGZfd3JpdGVfY2RjaV9jb21tb24oQVZGb3JtYXRDb250ZXh0ICpzLCBBVlN0cmVhbSAqc3Qs IGNvbnN0IFVJRAogICAgICAgICBhdmlvX3c4KHBiLCBzYy0+ZmllbGRfZG9taW5hbmNlKTsKICAg ICB9CiAKLSAgICBpZiAoc3QtPmNvZGVjcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9IMjY0 ICYmICFzYy0+YXZjX2ludHJhKSB7Ci0gICAgICAgIC8vIHdyaXRlIGF2YyBzdWIgZGVzY3JpcHRv ciByZWYKKyAgICBpZiAoc2MtPnN1Yl9kZXNjcmlwdG9yKSB7CiAgICAgICAgIG14Zl93cml0ZV9s b2NhbF90YWcocywgOCArIDE2LCAweDgxMDApOwogICAgICAgICBteGZfd3JpdGVfcmVmc19jb3Vu dChwYiwgMSk7Ci0gICAgICAgIG14Zl93cml0ZV91dWlkKHBiLCBBVkNTdWJEZXNjcmlwdG9yLCAw KTsKLSAgICB9Ci0KLSAgICBpZiAoc3QtPmNvZGVjcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19J RF9GRlYxKSB7Ci0gICAgICAgIC8vIHdyaXRlIGZmdjEgc3ViIGRlc2NyaXB0b3IgcmVmCi0gICAg ICAgIG14Zl93cml0ZV9sb2NhbF90YWcocywgOCArIDE2LCAweDgxMDApOwotICAgICAgICBteGZf d3JpdGVfcmVmc19jb3VudChwYiwgMSk7Ci0gICAgICAgIG14Zl93cml0ZV91dWlkKHBiLCBGRlYx U3ViRGVzY3JpcHRvciwgMCk7CisgICAgICAgIG14Zl93cml0ZV91dWlkKHBiLCBzYy0+c3ViX2Rl c2NyaXB0b3IsIDApOwogICAgIH0KIAogICAgIHJldHVybiBwb3M7CkBAIC0xNTYxLDIyICsxNTU2 LDIyIEBAIHN0YXRpYyBpbnQgbXhmX3dyaXRlX2pwZWcyMDAwX3N1YmRlc2MoQVZGb3JtYXRDb250 ZXh0ICpzLCBBVlN0cmVhbSAqc3QpCiAKIHN0YXRpYyBpbnQgbXhmX3dyaXRlX2NkY2lfZGVzYyhB VkZvcm1hdENvbnRleHQgKnMsIEFWU3RyZWFtICpzdCkKIHsKKyAgICBNWEZTdHJlYW1Db250ZXh0 ICpzYyA9IHN0LT5wcml2X2RhdGE7CiAgICAgaW50NjRfdCBwb3MgPSBteGZfd3JpdGVfY2RjaV9j b21tb24ocywgc3QsIG14Zl9jZGNpX2Rlc2NyaXB0b3Jfa2V5KTsKICAgICBteGZfdXBkYXRlX2ts dl9zaXplKHMtPnBiLCBwb3MpOwogCi0gICAgaWYgKHN0LT5jb2RlY3Bhci0+Y29kZWNfaWQgPT0g QVZfQ09ERUNfSURfSDI2NCkgewotICAgICAgICBteGZfd3JpdGVfYXZjX3N1YmRlc2Mocywgc3Qp OwotICAgIH0KLSAgICBpZiAoc3QtPmNvZGVjcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9K UEVHMjAwMCkgewotICAgICAgICAgcmV0dXJuIG14Zl93cml0ZV9qcGVnMjAwMF9zdWJkZXNjKHMs IHN0KTsKKyAgICBzd2l0Y2ggKHNjLT5zdWJfZGVzY3JpcHRvcikgeworICAgIGNhc2UgQVZDU3Vi RGVzY3JpcHRvcjogbXhmX3dyaXRlX2F2Y19zdWJkZXNjKHMsIHN0KTsgYnJlYWs7CisgICAgY2Fz ZSBKUEVHMjAwMFN1YkRlc2NyaXB0b3I6IG14Zl93cml0ZV9qcGVnMjAwMF9zdWJkZXNjKHMsIHN0 KTsgYnJlYWs7CiAgICAgfQorCiAgICAgcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBpbnQgbXhmX3dy aXRlX2gyNjRfZGVzYyhBVkZvcm1hdENvbnRleHQgKnMsIEFWU3RyZWFtICpzdCkKIHsKICAgICBN WEZTdHJlYW1Db250ZXh0ICpzYyA9IHN0LT5wcml2X2RhdGE7Ci0gICAgaWYgKHNjLT5hdmNfaW50 cmEpIHsKKyAgICBpZiAoIXNjLT5zdWJfZGVzY3JpcHRvcikgewogICAgICAgICBteGZfd3JpdGVf bXBlZ3ZpZGVvX2Rlc2Mocywgc3QpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGludDY0X3QgcG9z ID0gbXhmX3dyaXRlX2NkY2lfY29tbW9uKHMsIHN0LCBteGZfY2RjaV9kZXNjcmlwdG9yX2tleSk7 CkBAIC0yNTE0LDcgKzI1MDksNyBAQCBzdGF0aWMgaW50IG14Zl9wYXJzZV9oMjY0X2ZyYW1lKEFW Rm9ybWF0Q29udGV4dCAqcywgQVZTdHJlYW0gKnN0LAogICAgIGNvbnN0IFVJRCAqY29kZWNfdWwg PSBOVUxMOwogICAgIHVpbnQzMl90IHN0YXRlID0gLTE7CiAgICAgaW50IGV4dHJhX3NpemUgPSA1 MTI7IC8vIHN1cHBvcnQgQVZDIEludHJhIGZpbGVzIHdpdGhvdXQgU1BTL1BQUyBoZWFkZXIKLSAg ICBpbnQgaSwgZnJhbWVfc2l6ZSwgc2xpY2VfdHlwZSwgaGFzX3NwcyA9IDAsIGludHJhX29ubHkg PSAwLCByZXQ7CisgICAgaW50IGksIGZyYW1lX3NpemUsIHNsaWNlX3R5cGUsIGhhc19zcHMgPSAw LCBpbnRyYV9vbmx5ID0gMCwgYXZjX2ludHJhID0gMCwgcmV0OwogCiAgICAgZm9yICg7Oykgewog ICAgICAgICBidWYgPSBhdnByaXZfZmluZF9zdGFydF9jb2RlKGJ1ZiwgYnVmX2VuZCwgJnN0YXRl KTsKQEAgLTI1ODgsNyArMjU4Myw3IEBAIHN0YXRpYyBpbnQgbXhmX3BhcnNlX2gyNjRfZnJhbWUo QVZGb3JtYXRDb250ZXh0ICpzLCBBVlN0cmVhbSAqc3QsCiAgICAgICAgICAgICBjb2RlY191bCA9 ICZteGZfaDI2NF9jb2RlY191bHNbaV0udWlkOwogICAgICAgICAgICAgc2MtPmFzcGVjdF9yYXRp byA9IChBVlJhdGlvbmFsKXsgMTYsIDkgfTsgLy8gMTY6OSBpcyBtYW5kYXRvcnkgZm9yIGJyb2Fk Y2FzdCBIRAogICAgICAgICAgICAgc3QtPmNvZGVjcGFyLT5wcm9maWxlID0gbXhmX2gyNjRfY29k ZWNfdWxzW2ldLnByb2ZpbGU7Ci0gICAgICAgICAgICBzYy0+YXZjX2ludHJhID0gMTsKKyAgICAg ICAgICAgIGF2Y19pbnRyYSA9IDE7CiAgICAgICAgICAgICBteGYtPmNicl9pbmRleCA9IDE7CiAg ICAgICAgICAgICBzYy0+ZnJhbWVfc2l6ZSA9IHBrdC0+c2l6ZTsKICAgICAgICAgICAgIGlmIChz Yy0+aW50ZXJsYWNlZCkKQEAgLTI2MDksOCArMjYwNCwxMyBAQCBzdGF0aWMgaW50IG14Zl9wYXJz ZV9oMjY0X2ZyYW1lKEFWRm9ybWF0Q29udGV4dCAqcywgQVZTdHJlYW0gKnN0LAogICAgICAgICBh dl9sb2cocywgQVZfTE9HX0VSUk9SLCAiaDI2NCBwcm9maWxlIG5vdCBzdXBwb3J0ZWRcbiIpOwog ICAgICAgICByZXR1cm4gMDsKICAgICB9CisKICAgICBzYy0+Y29kZWNfdWwgPSBjb2RlY191bDsK IAorICAgIGlmICghYXZjX2ludHJhKSB7CisgICAgICAgIHNjLT5zdWJfZGVzY3JpcHRvciA9IEFW Q1N1YkRlc2NyaXB0b3I7CisgICAgfQorCiAgICAgcmV0dXJuIDE7CiB9CiAKQEAgLTI2NjksNiAr MjY2OSw3IEBAIHN0YXRpYyBpbnQgbXhmX3BhcnNlX2ZmdjFfZnJhbWUoQVZGb3JtYXRDb250ZXh0 ICpzLCBBVlN0cmVhbSAqc3QsIEFWUGFja2V0ICpwa3QpCiAgICAgICAgIGF2X2Fzc2VydDAodiA8 IDIpOwogICAgIH0KICAgICBzYy0+Y29kZWNfdWwgPSAmbXhmX2ZmdjFfY29kZWNfdWxzW3ZdOwor ICAgIHNjLT5zdWJfZGVzY3JpcHRvciA9IEZGVjFTdWJEZXNjcmlwdG9yOwogCiAgICAgaWYgKHN0 LT5jb2RlY3Bhci0+ZmllbGRfb3JkZXIgPiBBVl9GSUVMRF9QUk9HUkVTU0lWRSkgewogICAgICAg ICBzYy0+aW50ZXJsYWNlZCA9IDE7CkBAIC0yNzI2LDYgKzI3MjcsNyBAQCBzdGF0aWMgaW50IG14 Zl9wYXJzZV9qcGVnMjAwMF9mcmFtZShBVkZvcm1hdENvbnRleHQgKnMsIEFWU3RyZWFtICpzdCwg QVZQYWNrZXQgKgogICAgIGJ5dGVzdHJlYW0yX2dldF9idWZmZXJ1KCZnLCBzYy0+ajJrX2luZm8u ajJrX2NvbXBfZGVzYywgMyAqIGoya19uY29tcG9uZW50cyk7CiAKICAgICBzYy0+ZnJhbWVfc2l6 ZSA9IHBrdC0+c2l6ZTsKKyAgICBzYy0+c3ViX2Rlc2NyaXB0b3IgPSBKUEVHMjAwMFN1YkRlc2Ny aXB0b3I7CiAKICAgICByZXR1cm4gMTsKIH0KLS0gCjIuNDkuMQoKCkZyb20gMDMzMmY0NGM0Mzhk ODU4NzYwYjUxMGIyZmFhYWRjYmUwOWMyMmQ2ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJv bTogQmFwdGlzdGUgQ291ZHVyaWVyIDxiYXB0aXN0ZS5jb3VkdXJpZXJAZ21haWwuY29tPgpEYXRl OiBXZWQsIDQgSnVuIDIwMjUgMTE6MzU6MzEgLTA3MDAKU3ViamVjdDogW1BBVENIIDUvN10gbGF2 Zi9teGZlbmM6IGZpeCByZXR1cm4gdmFsdWUgdG8gaW50NjRfdAoKLS0tCiBsaWJhdmZvcm1hdC9t eGZlbmMuYyB8IDUgKystLS0KIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDMgZGVs ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQvbXhmZW5jLmMgYi9saWJhdmZvcm1h dC9teGZlbmMuYwppbmRleCBiOTM1MzYxNTk5Li4yYjM3Njc1OTM4IDEwMDY0NAotLS0gYS9saWJh dmZvcm1hdC9teGZlbmMuYworKysgYi9saWJhdmZvcm1hdC9teGZlbmMuYwpAQCAtMTYxMywxMSAr MTYxMywxMCBAQCBzdGF0aWMgaW50IG14Zl93cml0ZV9mZnYxX3N1YmRlc2MoQVZGb3JtYXRDb250 ZXh0ICpzLCBBVlN0cmVhbSAqc3QpCiAKIHN0YXRpYyBpbnQgbXhmX3dyaXRlX2ZmdjFfZGVzYyhB VkZvcm1hdENvbnRleHQgKnMsIEFWU3RyZWFtICpzdCkKIHsKLSAgICBpbnQgaXNfcmdiLCBwb3M7 CiAgICAgY29uc3QgQVZQaXhGbXREZXNjcmlwdG9yICpkZXNjID0gYXZfcGl4X2ZtdF9kZXNjX2dl dChzdC0+Y29kZWNwYXItPmZvcm1hdCk7Ci0gICAgaXNfcmdiID0gZGVzYy0+ZmxhZ3MgJiBBVl9Q SVhfRk1UX0ZMQUdfUkdCOworICAgIGludCBpc19yZ2IgPSBkZXNjLT5mbGFncyAmIEFWX1BJWF9G TVRfRkxBR19SR0I7CiAKLSAgICBwb3MgPSBteGZfd3JpdGVfY2RjaV9jb21tb24ocywgc3QsIGlz X3JnYiA/IG14Zl9yZ2JhX2Rlc2NyaXB0b3Jfa2V5IDogbXhmX2NkY2lfZGVzY3JpcHRvcl9rZXkp OworICAgIGludDY0X3QgcG9zID0gbXhmX3dyaXRlX2NkY2lfY29tbW9uKHMsIHN0LCBpc19yZ2Ig PyBteGZfcmdiYV9kZXNjcmlwdG9yX2tleSA6IG14Zl9jZGNpX2Rlc2NyaXB0b3Jfa2V5KTsKICAg ICBteGZfdXBkYXRlX2tsdl9zaXplKHMtPnBiLCBwb3MpOwogICAgIHJldHVybiBteGZfd3JpdGVf ZmZ2MV9zdWJkZXNjKHMsIHN0KTsKIH0KLS0gCjIuNDkuMQoKCkZyb20gMDljYzMwNmJmNGRlMGE5 MGZlYmQ4MDA1NzRhMDM3N2Q0ODllM2NjYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTog QmFwdGlzdGUgQ291ZHVyaWVyIDxiYXB0aXN0ZS5jb3VkdXJpZXJAZ21haWwuY29tPgpEYXRlOiBX ZWQsIDQgSnVuIDIwMjUgMTQ6MDk6NTAgLTA3MDAKU3ViamVjdDogW1BBVENIIDYvN10gbGF2Zi9t eGZlbmM6IGZhY3Rvcml6ZSBjZGNpIGRlc2NyaXB0b3IgZnVuY3Rpb25zCgotLS0KIGxpYmF2Zm9y bWF0L214ZmVuYy5jIHwgMTEwICsrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA0OCBpbnNlcnRpb25zKCspLCA2MiBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS9saWJhdmZvcm1hdC9teGZlbmMuYyBiL2xpYmF2Zm9ybWF0L214ZmVuYy5j CmluZGV4IDJiMzc2NzU5MzguLjhjZDkyYjk4MGMgMTAwNjQ0Ci0tLSBhL2xpYmF2Zm9ybWF0L214 ZmVuYy5jCisrKyBiL2xpYmF2Zm9ybWF0L214ZmVuYy5jCkBAIC0xMjAsNiArMTIwLDcgQEAgdHlw ZWRlZiBzdHJ1Y3QgTVhGU3RyZWFtQ29udGV4dCB7CiAgICAgaW50IG1pY3JvX3ZlcnNpb247ICAg ICAgIC8vLzwgZm9ybWF0IG1pY3JvX3ZlcnNpb24sIHVzZWQgaW4gZmZ2MSBkZXNjcmlwdG9yCiAg ICAgajJrX2luZm9fdCBqMmtfaW5mbzsKICAgICBlbnVtIE1YRk1ldGFkYXRhU2V0VHlwZSBzdWJf ZGVzY3JpcHRvcjsKKyAgICBjb25zdCBVSUQgKnBpY3R1cmVfZGVzY3JpcHRvcl9rZXk7CiB9IE1Y RlN0cmVhbUNvbnRleHQ7CiAKIHR5cGVkZWYgc3RydWN0IE1YRkNvbnRhaW5lckVzc2VuY2VFbnRy eSB7CkBAIC0xNjksMjAgKzE3MCwyMiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHsKIAogc3RhdGlj IGludCBteGZfd3JpdGVfd2F2X2Rlc2MoQVZGb3JtYXRDb250ZXh0ICpzLCBBVlN0cmVhbSAqc3Qp Owogc3RhdGljIGludCBteGZfd3JpdGVfYWVzM19kZXNjKEFWRm9ybWF0Q29udGV4dCAqcywgQVZT dHJlYW0gKnN0KTsKLXN0YXRpYyBpbnQgbXhmX3dyaXRlX21wZWd2aWRlb19kZXNjKEFWRm9ybWF0 Q29udGV4dCAqcywgQVZTdHJlYW0gKnN0KTsKLXN0YXRpYyBpbnQgbXhmX3dyaXRlX2gyNjRfZGVz YyhBVkZvcm1hdENvbnRleHQgKnMsIEFWU3RyZWFtICpzdCk7Ci1zdGF0aWMgaW50IG14Zl93cml0 ZV9mZnYxX2Rlc2MoQVZGb3JtYXRDb250ZXh0ICpzLCBBVlN0cmVhbSAqc3QpOwogc3RhdGljIGlu dCBteGZfd3JpdGVfY2RjaV9kZXNjKEFWRm9ybWF0Q29udGV4dCAqcywgQVZTdHJlYW0gKnN0KTsK IHN0YXRpYyBpbnQgbXhmX3dyaXRlX2dlbmVyaWNfc291bmRfZGVzYyhBVkZvcm1hdENvbnRleHQg KnMsIEFWU3RyZWFtICpzdCk7CiBzdGF0aWMgaW50IG14Zl93cml0ZV9zNDM2bV9hbmNfZGVzYyhB VkZvcm1hdENvbnRleHQgKnMsIEFWU3RyZWFtICpzdCk7CiAKK3N0YXRpYyB2b2lkIG14Zl93cml0 ZV9hdmNfc3ViZGVzYyhBVkZvcm1hdENvbnRleHQgKnMsIEFWU3RyZWFtICpzdCk7CitzdGF0aWMg dm9pZCBteGZfd3JpdGVfZmZ2MV9zdWJkZXNjKEFWRm9ybWF0Q29udGV4dCAqcywgQVZTdHJlYW0g KnN0KTsKKworc3RhdGljIGludCBteGZfd3JpdGVfbXBlZ3ZpZGVvX2xvY2FsX3RhZ3MoQVZGb3Jt YXRDb250ZXh0ICpzLCBBVlN0cmVhbSAqc3QpOworCiBzdGF0aWMgZW51bSBBVkNocm9tYUxvY2F0 aW9uIGNob29zZV9jaHJvbWFfbG9jYXRpb24oQVZGb3JtYXRDb250ZXh0ICpzLCBBVlN0cmVhbSAq c3QpOwogCiBzdGF0aWMgY29uc3QgTVhGQ29udGFpbmVyRXNzZW5jZUVudHJ5IG14Zl9lc3NlbmNl X2NvbnRhaW5lcl91bHNbXSA9IHsKICAgICB7IHsgMHgwNiwweDBFLDB4MkIsMHgzNCwweDA0LDB4 MDEsMHgwMSwweDAyLDB4MEQsMHgwMSwweDAzLDB4MDEsMHgwMiwweDA0LDB4NjAsMHgwMSB9LAog ICAgICAgeyAweDA2LDB4MEUsMHgyQiwweDM0LDB4MDEsMHgwMiwweDAxLDB4MDEsMHgwRCwweDAx LDB4MDMsMHgwMSwweDE1LDB4MDEsMHgwNSwweDAwIH0sCiAgICAgICB7IDB4MDYsMHgwRSwweDJC LDB4MzQsMHgwNCwweDAxLDB4MDEsMHgwMywweDA0LDB4MDEsMHgwMiwweDAyLDB4MDEsMHgwMCww eDAwLDB4MDAgfSwKLSAgICAgIG14Zl93cml0ZV9tcGVndmlkZW9fZGVzYyB9LAorICAgICAgbXhm X3dyaXRlX2NkY2lfZGVzYyB9LAogICAgIHsgeyAweDA2LDB4MEUsMHgyQiwweDM0LDB4MDQsMHgw MSwweDAxLDB4MDEsMHgwRCwweDAxLDB4MDMsMHgwMSwweDAyLDB4MDYsMHgwMywweDAwIH0sCiAg ICAgICB7IDB4MDYsMHgwRSwweDJCLDB4MzQsMHgwMSwweDAyLDB4MDEsMHgwMSwweDBELDB4MDEs MHgwMywweDAxLDB4MTYsMHgwMSwweDAzLDB4MDAgfSwKICAgICAgIHsgMHgwNiwweDBFLDB4MkIs MHgzNCwweDA0LDB4MDEsMHgwMSwweDAxLDB4MDQsMHgwMiwweDAyLDB4MDEsMHgwMCwweDAwLDB4 MDAsMHgwMCB9LApAQCAtMjIwLDcgKzIyMyw3IEBAIHN0YXRpYyBjb25zdCBNWEZDb250YWluZXJF c3NlbmNlRW50cnkgbXhmX2Vzc2VuY2VfY29udGFpbmVyX3Vsc1tdID0gewogICAgIHsgeyAweDA2 LDB4MEUsMHgyQiwweDM0LDB4MDQsMHgwMSwweDAxLDB4MGEsMHgwRCwweDAxLDB4MDMsMHgwMSww eDAyLDB4MTAsMHg2MCwweDAxIH0sCiAgICAgICB7IDB4MDYsMHgwRSwweDJCLDB4MzQsMHgwMSww eDAyLDB4MDEsMHgwMSwweDBELDB4MDEsMHgwMywweDAxLDB4MTUsMHgwMSwweDA1LDB4MDAgfSwK ICAgICAgIHsgMHgwNiwweDBFLDB4MkIsMHgzNCwweDA0LDB4MDEsMHgwMSwweDBhLDB4MDQsMHgw MSwweDAyLDB4MDIsMHgwMSwweDAwLDB4MDAsMHgwMCB9LAotICAgICAgbXhmX3dyaXRlX2gyNjRf ZGVzYyB9LAorICAgICAgbXhmX3dyaXRlX2NkY2lfZGVzYyB9LAogICAgIC8vIFM0MzZNIEFOQwog ICAgIHsgeyAweDA2LDB4MEUsMHgyQiwweDM0LDB4MDQsMHgwMSwweDAxLDB4MGEsMHgwRCwweDAx LDB4MDMsMHgwMSwweDAyLDB4MGUsMHgwMCwweDAwIH0sCiAgICAgICB7IDB4MDYsMHgwRSwweDJC LDB4MzQsMHgwMSwweDAyLDB4MDEsMHgwMSwweDBELDB4MDEsMHgwMywweDAxLDB4MTcsMHgwMSww eDAyLDB4MDAgfSwKQEAgLTIzNSw3ICsyMzgsNyBAQCBzdGF0aWMgY29uc3QgTVhGQ29udGFpbmVy RXNzZW5jZUVudHJ5IG14Zl9lc3NlbmNlX2NvbnRhaW5lcl91bHNbXSA9IHsKICAgICB7IHsgMHgw NiwweDBFLDB4MkIsMHgzNCwweDA0LDB4MDEsMHgwMSwweDBkLDB4MGQsMHgwMSwweDAzLDB4MDEs MHgwMiwweDIzLDB4MDEsMHgwMCB9LAogICAgICAgeyAweDA2LDB4MEUsMHgyQiwweDM0LDB4MDEs MHgwMiwweDAxLDB4MDEsMHgwZCwweDAxLDB4MDMsMHgwMSwweDE1LDB4MDEsMHgxZCwweDAwIH0s CiAgICAgICB7IDB4MDYsMHgwRSwweDJCLDB4MzQsMHgwNCwweDAxLDB4MDEsMHgwZCwweDA0LDB4 MDEsMHgwMiwweDAyLDB4MDMsMHgwOSwweDAwLDB4MDAgfSwKLSAgICAgIG14Zl93cml0ZV9mZnYx X2Rlc2MgfSwKKyAgICAgIG14Zl93cml0ZV9jZGNpX2Rlc2MgfSwKICAgICB7IHsgMHgwMCwweDAw LDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCww eDAwLDB4MDAsMHgwMCB9LAogICAgICAgeyAweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCww eDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwIH0sCiAgICAg ICB7IDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgw MCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAgfSwKQEAgLTEyMDQsNyArMTIwNyw3IEBAIHN0YXRp YyBpbmxpbmUgdWludDMyX3QgcmVzY2FsZV9tYXN0ZXJpbmdfbHVtYShBVlJhdGlvbmFsIHEpCiAg ICAgcmV0dXJuIGF2X3Jlc2NhbGUocS5udW0sIEZGX01YRl9NQVNURVJJTkdfTFVNQV9ERU4sIHEu ZGVuKTsKIH0KIAotc3RhdGljIGludDY0X3QgbXhmX3dyaXRlX2NkY2lfY29tbW9uKEFWRm9ybWF0 Q29udGV4dCAqcywgQVZTdHJlYW0gKnN0LCBjb25zdCBVSUQga2V5KQorc3RhdGljIGludDY0X3Qg bXhmX3dyaXRlX2dlbmVyaWNfcGljdHVyZV9kZXNjKEFWRm9ybWF0Q29udGV4dCAqcywgQVZTdHJl YW0gKnN0KQogewogICAgIE1YRlN0cmVhbUNvbnRleHQgKnNjID0gc3QtPnByaXZfZGF0YTsKICAg ICBBVklPQ29udGV4dCAqcGIgPSBzLT5wYjsKQEAgLTEyMTcsNyArMTIyMCw3IEBAIHN0YXRpYyBp bnQ2NF90IG14Zl93cml0ZV9jZGNpX2NvbW1vbihBVkZvcm1hdENvbnRleHQgKnMsIEFWU3RyZWFt ICpzdCwgY29uc3QgVUlECiAgICAgY29uc3QgTVhGQ29kZWNVTCAqY29sb3JfcHJpbWFyaWVzX3Vs OwogICAgIGNvbnN0IE1YRkNvZGVjVUwgKmNvbG9yX3RyY191bDsKICAgICBjb25zdCBNWEZDb2Rl Y1VMICpjb2xvcl9zcGFjZV91bDsKLSAgICBpbnQ2NF90IHBvcyA9IG14Zl93cml0ZV9nZW5lcmlj X2Rlc2Mocywgc3QsIGtleSk7CisgICAgaW50NjRfdCBwb3MgPSBteGZfd3JpdGVfZ2VuZXJpY19k ZXNjKHMsIHN0LCAqc2MtPnBpY3R1cmVfZGVzY3JpcHRvcl9rZXkpOwogICAgIGNvbnN0IEFWUGFj a2V0U2lkZURhdGEgKnNpZGVfZGF0YTsKIAogICAgIGNvbG9yX3ByaW1hcmllc191bCA9IG14Zl9n ZXRfY29kZWNfdWxfYnlfaWQoZmZfbXhmX2NvbG9yX3ByaW1hcmllc191bHMsIHN0LT5jb2RlY3Bh ci0+Y29sb3JfcHJpbWFyaWVzKTsKQEAgLTEzMTAsNyArMTMxMyw3IEBAIHN0YXRpYyBpbnQ2NF90 IG14Zl93cml0ZV9jZGNpX2NvbW1vbihBVkZvcm1hdENvbnRleHQgKnMsIEFWU3RyZWFtICpzdCwg Y29uc3QgVUlECiAgICAgICAgIGF2aW9fd2IzMihwYiwgLSgoc3QtPmNvZGVjcGFyLT5oZWlnaHQg LSBkaXNwbGF5X2hlaWdodCkmMSkpOwogICAgIH0KIAotICAgIGlmIChrZXkgIT0gbXhmX3JnYmFf ZGVzY3JpcHRvcl9rZXkpIHsKKyAgICBpZiAoc2MtPnBpY3R1cmVfZGVzY3JpcHRvcl9rZXkgIT0g Jm14Zl9yZ2JhX2Rlc2NyaXB0b3Jfa2V5KSB7CiAgICAgICAgIGludCBjb21wb25lbnRfZGVwdGgg ICAgID0gcGl4X2Rlc2MtPmNvbXBbMF0uZGVwdGg7CiAgICAgICAgIGludCBoX2Nocm9tYV9zdWJf c2FtcGxlID0gMSA8PCBwaXhfZGVzYy0+bG9nMl9jaHJvbWFfdzsKICAgICAgICAgaW50IHZfY2hy b21hX3N1Yl9zYW1wbGUgPSAxIDw8IHBpeF9kZXNjLT5sb2cyX2Nocm9tYV9oOwpAQCAtMTQ2MCw2 ICsxNDYzLDkgQEAgc3RhdGljIGludDY0X3QgbXhmX3dyaXRlX2NkY2lfY29tbW9uKEFWRm9ybWF0 Q29udGV4dCAqcywgQVZTdHJlYW0gKnN0LCBjb25zdCBVSUQKICAgICAgICAgbXhmX3dyaXRlX3V1 aWQocGIsIHNjLT5zdWJfZGVzY3JpcHRvciwgMCk7CiAgICAgfQogCisgICAgaWYgKHNjLT5waWN0 dXJlX2Rlc2NyaXB0b3Jfa2V5ID09ICZteGZfbXBlZ3ZpZGVvX2Rlc2NyaXB0b3Jfa2V5KQorICAg ICAgICBteGZfd3JpdGVfbXBlZ3ZpZGVvX2xvY2FsX3RhZ3Mocywgc3QpOworCiAgICAgcmV0dXJu IHBvczsKIH0KIApAQCAtMTU1NywzMSArMTU2MywxOSBAQCBzdGF0aWMgaW50IG14Zl93cml0ZV9q cGVnMjAwMF9zdWJkZXNjKEFWRm9ybWF0Q29udGV4dCAqcywgQVZTdHJlYW0gKnN0KQogc3RhdGlj IGludCBteGZfd3JpdGVfY2RjaV9kZXNjKEFWRm9ybWF0Q29udGV4dCAqcywgQVZTdHJlYW0gKnN0 KQogewogICAgIE1YRlN0cmVhbUNvbnRleHQgKnNjID0gc3QtPnByaXZfZGF0YTsKLSAgICBpbnQ2 NF90IHBvcyA9IG14Zl93cml0ZV9jZGNpX2NvbW1vbihzLCBzdCwgbXhmX2NkY2lfZGVzY3JpcHRv cl9rZXkpOworICAgIGludDY0X3QgcG9zID0gbXhmX3dyaXRlX2dlbmVyaWNfcGljdHVyZV9kZXNj KHMsIHN0KTsKICAgICBteGZfdXBkYXRlX2tsdl9zaXplKHMtPnBiLCBwb3MpOwogCiAgICAgc3dp dGNoIChzYy0+c3ViX2Rlc2NyaXB0b3IpIHsKICAgICBjYXNlIEFWQ1N1YkRlc2NyaXB0b3I6IG14 Zl93cml0ZV9hdmNfc3ViZGVzYyhzLCBzdCk7IGJyZWFrOwogICAgIGNhc2UgSlBFRzIwMDBTdWJE ZXNjcmlwdG9yOiBteGZfd3JpdGVfanBlZzIwMDBfc3ViZGVzYyhzLCBzdCk7IGJyZWFrOworICAg IGNhc2UgRkZWMVN1YkRlc2NyaXB0b3I6IG14Zl93cml0ZV9mZnYxX3N1YmRlc2Mocywgc3QpOyBi cmVhazsKICAgICB9CiAKICAgICByZXR1cm4gMDsKIH0KIAotc3RhdGljIGludCBteGZfd3JpdGVf aDI2NF9kZXNjKEFWRm9ybWF0Q29udGV4dCAqcywgQVZTdHJlYW0gKnN0KQotewotICAgIE1YRlN0 cmVhbUNvbnRleHQgKnNjID0gc3QtPnByaXZfZGF0YTsKLSAgICBpZiAoIXNjLT5zdWJfZGVzY3Jp cHRvcikgewotICAgICAgICBteGZfd3JpdGVfbXBlZ3ZpZGVvX2Rlc2Mocywgc3QpOwotICAgIH0g ZWxzZSB7Ci0gICAgICAgIGludDY0X3QgcG9zID0gbXhmX3dyaXRlX2NkY2lfY29tbW9uKHMsIHN0 LCBteGZfY2RjaV9kZXNjcmlwdG9yX2tleSk7Ci0gICAgICAgIG14Zl91cGRhdGVfa2x2X3NpemUo cy0+cGIsIHBvcyk7Ci0gICAgICAgIG14Zl93cml0ZV9hdmNfc3ViZGVzYyhzLCBzdCk7Ci0gICAg fQotICAgIHJldHVybiAwOwotfQotCi1zdGF0aWMgaW50IG14Zl93cml0ZV9mZnYxX3N1YmRlc2Mo QVZGb3JtYXRDb250ZXh0ICpzLCBBVlN0cmVhbSAqc3QpCitzdGF0aWMgdm9pZCBteGZfd3JpdGVf ZmZ2MV9zdWJkZXNjKEFWRm9ybWF0Q29udGV4dCAqcywgQVZTdHJlYW0gKnN0KQogewogICAgIEFW SU9Db250ZXh0ICpwYiA9IHMtPnBiOwogICAgIE1YRlN0cmVhbUNvbnRleHQgKnNjID0gc3QtPnBy aXZfZGF0YTsKQEAgLTE2MDgsMTcgKzE2MDIsNiBAQCBzdGF0aWMgaW50IG14Zl93cml0ZV9mZnYx X3N1YmRlc2MoQVZGb3JtYXRDb250ZXh0ICpzLCBBVlN0cmVhbSAqc3QpCiAgICAgfQogCiAgICAg bXhmX3VwZGF0ZV9rbHZfc2l6ZShzLT5wYiwgcG9zKTsKLSAgICByZXR1cm4gMDsKLX0KLQotc3Rh dGljIGludCBteGZfd3JpdGVfZmZ2MV9kZXNjKEFWRm9ybWF0Q29udGV4dCAqcywgQVZTdHJlYW0g KnN0KQotewotICAgIGNvbnN0IEFWUGl4Rm10RGVzY3JpcHRvciAqZGVzYyA9IGF2X3BpeF9mbXRf ZGVzY19nZXQoc3QtPmNvZGVjcGFyLT5mb3JtYXQpOwotICAgIGludCBpc19yZ2IgPSBkZXNjLT5m bGFncyAmIEFWX1BJWF9GTVRfRkxBR19SR0I7Ci0KLSAgICBpbnQ2NF90IHBvcyA9IG14Zl93cml0 ZV9jZGNpX2NvbW1vbihzLCBzdCwgaXNfcmdiID8gbXhmX3JnYmFfZGVzY3JpcHRvcl9rZXkgOiBt eGZfY2RjaV9kZXNjcmlwdG9yX2tleSk7Ci0gICAgbXhmX3VwZGF0ZV9rbHZfc2l6ZShzLT5wYiwg cG9zKTsKLSAgICByZXR1cm4gbXhmX3dyaXRlX2ZmdjFfc3ViZGVzYyhzLCBzdCk7CiB9CiAKIHN0 YXRpYyBpbnQgbXhmX3dyaXRlX3M0MzZtX2FuY19kZXNjKEFWRm9ybWF0Q29udGV4dCAqcywgQVZT dHJlYW0gKnN0KQpAQCAtMTYyOCw0MiArMTYxMSwzOCBAQCBzdGF0aWMgaW50IG14Zl93cml0ZV9z NDM2bV9hbmNfZGVzYyhBVkZvcm1hdENvbnRleHQgKnMsIEFWU3RyZWFtICpzdCkKICAgICByZXR1 cm4gMDsKIH0KIAotc3RhdGljIGludCBteGZfd3JpdGVfbXBlZ3ZpZGVvX2Rlc2MoQVZGb3JtYXRD b250ZXh0ICpzLCBBVlN0cmVhbSAqc3QpCitzdGF0aWMgaW50IG14Zl93cml0ZV9tcGVndmlkZW9f bG9jYWxfdGFncyhBVkZvcm1hdENvbnRleHQgKnMsIEFWU3RyZWFtICpzdCkKIHsKICAgICBBVklP Q29udGV4dCAqcGIgPSBzLT5wYjsKICAgICBNWEZTdHJlYW1Db250ZXh0ICpzYyA9IHN0LT5wcml2 X2RhdGE7CiAgICAgaW50IHByb2ZpbGVfYW5kX2xldmVsID0gKHN0LT5jb2RlY3Bhci0+cHJvZmls ZTw8NCkgfCBzdC0+Y29kZWNwYXItPmxldmVsOwotICAgIGludDY0X3QgcG9zID0gbXhmX3dyaXRl X2NkY2lfY29tbW9uKHMsIHN0LCBteGZfbXBlZ3ZpZGVvX2Rlc2NyaXB0b3Jfa2V5KTsKIAotICAg IGlmIChzdC0+Y29kZWNwYXItPmNvZGVjX2lkICE9IEFWX0NPREVDX0lEX0gyNjQpIHsKLSAgICAg ICAgLy8gYml0IHJhdGUKLSAgICAgICAgbXhmX3dyaXRlX2xvY2FsX3RhZyhzLCA0LCAweDgwMDAp OwotICAgICAgICBhdmlvX3diMzIocGIsIHNjLT52aWRlb19iaXRfcmF0ZSk7CisgICAgLy8gYml0 IHJhdGUKKyAgICBteGZfd3JpdGVfbG9jYWxfdGFnKHMsIDQsIDB4ODAwMCk7CisgICAgYXZpb193 YjMyKHBiLCBzYy0+dmlkZW9fYml0X3JhdGUpOwogCi0gICAgICAgIC8vIHByb2ZpbGUgYW5kIGxl dmVsCi0gICAgICAgIG14Zl93cml0ZV9sb2NhbF90YWcocywgMSwgMHg4MDA3KTsKLSAgICAgICAg aWYgKCFzdC0+Y29kZWNwYXItPnByb2ZpbGUpCi0gICAgICAgICAgICBwcm9maWxlX2FuZF9sZXZl bCB8PSAweDgwOyAvLyBlc2NhcGUgYml0Ci0gICAgICAgIGF2aW9fdzgocGIsIHByb2ZpbGVfYW5k X2xldmVsKTsKKyAgICAvLyBwcm9maWxlIGFuZCBsZXZlbAorICAgIG14Zl93cml0ZV9sb2NhbF90 YWcocywgMSwgMHg4MDA3KTsKKyAgICBpZiAoIXN0LT5jb2RlY3Bhci0+cHJvZmlsZSkKKyAgICAg ICAgcHJvZmlsZV9hbmRfbGV2ZWwgfD0gMHg4MDsgLy8gZXNjYXBlIGJpdAorICAgIGF2aW9fdzgo cGIsIHByb2ZpbGVfYW5kX2xldmVsKTsKIAotICAgICAgICAvLyBsb3cgZGVsYXkKLSAgICAgICAg bXhmX3dyaXRlX2xvY2FsX3RhZyhzLCAxLCAweDgwMDMpOwotICAgICAgICBhdmlvX3c4KHBiLCBz Yy0+bG93X2RlbGF5KTsKKyAgICAvLyBsb3cgZGVsYXkKKyAgICBteGZfd3JpdGVfbG9jYWxfdGFn KHMsIDEsIDB4ODAwMyk7CisgICAgYXZpb193OChwYiwgc2MtPmxvd19kZWxheSk7CiAKLSAgICAg ICAgLy8gY2xvc2VkIGdvcAotICAgICAgICBteGZfd3JpdGVfbG9jYWxfdGFnKHMsIDEsIDB4ODAw NCk7Ci0gICAgICAgIGF2aW9fdzgocGIsIHNjLT5zZXFfY2xvc2VkX2dvcCk7CisgICAgLy8gY2xv c2VkIGdvcAorICAgIG14Zl93cml0ZV9sb2NhbF90YWcocywgMSwgMHg4MDA0KTsKKyAgICBhdmlv X3c4KHBiLCBzYy0+c2VxX2Nsb3NlZF9nb3ApOwogCi0gICAgICAgIC8vIG1heCBnb3AKLSAgICAg ICAgbXhmX3dyaXRlX2xvY2FsX3RhZyhzLCAyLCAweDgwMDYpOwotICAgICAgICBhdmlvX3diMTYo cGIsIHNjLT5tYXhfZ29wKTsKKyAgICAvLyBtYXggZ29wCisgICAgbXhmX3dyaXRlX2xvY2FsX3Rh ZyhzLCAyLCAweDgwMDYpOworICAgIGF2aW9fd2IxNihwYiwgc2MtPm1heF9nb3ApOwogCi0gICAg ICAgIC8vIGIgcGljdHVyZSBjb3VudAotICAgICAgICBteGZfd3JpdGVfbG9jYWxfdGFnKHMsIDIs IDB4ODAwOCk7Ci0gICAgICAgIGF2aW9fd2IxNihwYiwgc2MtPmJfcGljdHVyZV9jb3VudCk7Ci0g ICAgfQorICAgIC8vIGIgcGljdHVyZSBjb3VudAorICAgIG14Zl93cml0ZV9sb2NhbF90YWcocywg MiwgMHg4MDA4KTsKKyAgICBhdmlvX3diMTYocGIsIHNjLT5iX3BpY3R1cmVfY291bnQpOwogCi0g ICAgbXhmX3VwZGF0ZV9rbHZfc2l6ZShwYiwgcG9zKTsKICAgICByZXR1cm4gMDsKIH0KIApAQCAt MjYwNiw5ICsyNTg1LDEwIEBAIHN0YXRpYyBpbnQgbXhmX3BhcnNlX2gyNjRfZnJhbWUoQVZGb3Jt YXRDb250ZXh0ICpzLCBBVlN0cmVhbSAqc3QsCiAKICAgICBzYy0+Y29kZWNfdWwgPSBjb2RlY191 bDsKIAotICAgIGlmICghYXZjX2ludHJhKSB7CisgICAgaWYgKGF2Y19pbnRyYSkKKyAgICAgICAg c2MtPnBpY3R1cmVfZGVzY3JpcHRvcl9rZXkgPSAmbXhmX21wZWd2aWRlb19kZXNjcmlwdG9yX2tl eTsKKyAgICAgZWxzZQogICAgICAgICBzYy0+c3ViX2Rlc2NyaXB0b3IgPSBBVkNTdWJEZXNjcmlw dG9yOwotICAgIH0KIAogICAgIHJldHVybiAxOwogfQpAQCAtMjYzOSw2ICsyNjE5LDcgQEAgc3Rh dGljIGludCBteGZfcGFyc2VfZmZ2MV9mcmFtZShBVkZvcm1hdENvbnRleHQgKnMsIEFWU3RyZWFt ICpzdCwgQVZQYWNrZXQgKnBrdCkKIHsKICAgICBNWEZDb250ZXh0ICpteGYgPSBzLT5wcml2X2Rh dGE7CiAgICAgTVhGU3RyZWFtQ29udGV4dCAqc2MgPSBzdC0+cHJpdl9kYXRhOworICAgIGNvbnN0 IEFWUGl4Rm10RGVzY3JpcHRvciAqcGl4X2Rlc2MgPSBhdl9waXhfZm10X2Rlc2NfZ2V0KHN0LT5j b2RlY3Bhci0+Zm9ybWF0KTsKICAgICB1aW50OF90IHN0YXRlW0ZGVjFfQ09OVEVYVF9TSVpFXTsK ICAgICBSYW5nZUNvZGVyIGM7CiAgICAgdW5zaWduZWQgdjsKQEAgLTI2NzksNiArMjY2MCw5IEBA IHN0YXRpYyBpbnQgbXhmX3BhcnNlX2ZmdjFfZnJhbWUoQVZGb3JtYXRDb250ZXh0ICpzLCBBVlN0 cmVhbSAqc3QsIEFWUGFja2V0ICpwa3QpCiAgICAgYXZfcmVkdWNlKCZzYy0+YXNwZWN0X3JhdGlv Lm51bSwgJnNjLT5hc3BlY3RfcmF0aW8uZGVuLAogICAgICAgICAgICAgICBzYy0+YXNwZWN0X3Jh dGlvLm51bSwgc2MtPmFzcGVjdF9yYXRpby5kZW4sIElOVF9NQVgpOwogCisgICAgaWYgKHBpeF9k ZXNjLT5mbGFncyAmIEFWX1BJWF9GTVRfRkxBR19SR0IpCisgICAgICAgIHNjLT5waWN0dXJlX2Rl c2NyaXB0b3Jfa2V5ID0gJm14Zl9yZ2JhX2Rlc2NyaXB0b3Jfa2V5OworCiAgICAgcmV0dXJuIDE7 CiB9CiAKQEAgLTI4MjgsNiArMjgxMiw3IEBAIHN0YXRpYyBpbnQgbXhmX3BhcnNlX21wZWcyX2Zy YW1lKEFWRm9ybWF0Q29udGV4dCAqcywgQVZTdHJlYW0gKnN0LAogICAgICAgICBpZiAoIWNvZGVj X3VsKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIHNjLT5jb2RlY191bCA9IGNvZGVj X3VsOworICAgICAgICBzYy0+cGljdHVyZV9kZXNjcmlwdG9yX2tleSA9ICZteGZfbXBlZ3ZpZGVv X2Rlc2NyaXB0b3Jfa2V5OwogICAgIH0KICAgICByZXR1cm4gMTsKIH0KQEAgLTI5NjgsNiArMjk1 Myw3IEBAIHN0YXRpYyBpbnQgbXhmX2luaXQoQVZGb3JtYXRDb250ZXh0ICpzKQogICAgICAgICAg ICAgICAgIHNjLT5zZXFfY2xvc2VkX2dvcCA9IC0xOyAvLyB1bmtub3duIHlldAogICAgICAgICAg ICAgfQogCisgICAgICAgICAgICBzYy0+cGljdHVyZV9kZXNjcmlwdG9yX2tleSA9ICZteGZfY2Rj aV9kZXNjcmlwdG9yX2tleTsKICAgICAgICAgICAgIHNjLT52aWRlb19iaXRfcmF0ZSA9IHN0LT5j b2RlY3Bhci0+Yml0X3JhdGU7CiAKICAgICAgICAgICAgIGlmIChJU19EMTAocykgfHwKLS0gCjIu NDkuMQoKCkZyb20gMjQwMWJkZGJmMDA4MjlhNTFhNzk2NGZjODU2Y2Y1MmY3YjcwZjFhOCBNb24g U2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogQmFwdGlzdGUgQ291ZHVyaWVyIDxiYXB0aXN0ZS5j b3VkdXJpZXJAZ21haWwuY29tPgpEYXRlOiBXZWQsIDQgSnVuIDIwMjUgMDA6MDE6NDQgLTA3MDAK U3ViamVjdDogW1BBVENIIDcvN10gbGF2Zi9teGZlbmM6IGZpeCBtdXhpbmcgZm9yIEROeEhEL0RO eEhSIDQ0NAoKLS0tCiBsaWJhdmZvcm1hdC9teGZlbmMuYyB8IDcwICsrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKystLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgNTUgaW5zZXJ0aW9u cygrKSwgMTUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQvbXhmZW5jLmMg Yi9saWJhdmZvcm1hdC9teGZlbmMuYwppbmRleCA4Y2Q5MmI5ODBjLi4xMmVmNTIxNzc5IDEwMDY0 NAotLS0gYS9saWJhdmZvcm1hdC9teGZlbmMuYworKysgYi9saWJhdmZvcm1hdC9teGZlbmMuYwpA QCAtMTIxLDYgKzEyMSw3IEBAIHR5cGVkZWYgc3RydWN0IE1YRlN0cmVhbUNvbnRleHQgewogICAg IGoya19pbmZvX3QgajJrX2luZm87CiAgICAgZW51bSBNWEZNZXRhZGF0YVNldFR5cGUgc3ViX2Rl c2NyaXB0b3I7CiAgICAgY29uc3QgVUlEICpwaWN0dXJlX2Rlc2NyaXB0b3Jfa2V5OworICAgIGlu dCBjaWQ7ICAgICAgICAgICAgICAgICAvLy88IGNvbXByZXNzaW9uIGlkLCB1c2VkIGJ5IGRueGhk CiB9IE1YRlN0cmVhbUNvbnRleHQ7CiAKIHR5cGVkZWYgc3RydWN0IE1YRkNvbnRhaW5lckVzc2Vu Y2VFbnRyeSB7CkBAIC0yODksNiArMjkwLDggQEAgc3RhdGljIGNvbnN0IHVpbnQ4X3QgaGVhZGVy X2Nsb3NlZF9wYXJ0aXRpb25fa2V5W10gPSB7IDB4MDYsMHgwRSwweDJCLDB4MzQsMHgwMiwKIHN0 YXRpYyBjb25zdCB1aW50OF90IGtsdl9maWxsX2tleVtdICAgICAgICAgICAgICAgID0geyAweDA2 LDB4MEUsMHgyQiwweDM0LDB4MDEsMHgwMSwweDAxLDB4MDIsMHgwMywweDAxLDB4MDIsMHgxMCww eDAxLDB4MDAsMHgwMCwweDAwIH07CiBzdGF0aWMgY29uc3QgdWludDhfdCBib2R5X3BhcnRpdGlv bl9rZXlbXSAgICAgICAgICA9IHsgMHgwNiwweDBFLDB4MkIsMHgzNCwweDAyLDB4MDUsMHgwMSww eDAxLDB4MEQsMHgwMSwweDAyLDB4MDEsMHgwMSwweDAzLDB4MDQsMHgwMCB9OyAvLyBDbG9zZWRD b21wbGV0ZQogCitzdGF0aWMgY29uc3QgVUlEIG14Zl9yZ2JhX2Rlc2NyaXB0b3Jfa2V5ICAgICAg PSB7IDB4MDYsMHgwRSwweDJCLDB4MzQsMHgwMiwweDUzLDB4MDEsMHgwMSwweDBELDB4MDEsMHgw MSwweDAxLDB4MDEsMHgwMSwweDI5LDB4MDAgfTsKKwogLyoqCiAgKiBwYXJ0aWFsIGtleSBmb3Ig aGVhZGVyIG1ldGFkYXRhCiAgKi8KQEAgLTM5MCw2ICszOTMsMTAgQEAgc3RhdGljIGNvbnN0IE1Y RkxvY2FsVGFnUGFpciBteGZfbG9jYWxfdGFnX2JhdGNoW10gPSB7CiAgICAgeyAweDMzMDQsIHsw eDA2LDB4MEUsMHgyQiwweDM0LDB4MDEsMHgwMSwweDAxLDB4MDEsMHgwNCwweDAxLDB4MDUsMHgw MywweDAzLDB4MDAsMHgwMCwweDAwfX0sIC8qIEJsYWNrIFJlZiBsZXZlbCAqLwogICAgIHsgMHgz MzA1LCB7MHgwNiwweDBFLDB4MkIsMHgzNCwweDAxLDB4MDEsMHgwMSwweDAxLDB4MDQsMHgwMSww eDA1LDB4MDMsMHgwNCwweDAwLDB4MDAsMHgwMH19LCAvKiBXaGl0ZSBSZWYgbGV2ZWwgKi8KICAg ICB7IDB4MzMwNiwgezB4MDYsMHgwRSwweDJCLDB4MzQsMHgwMSwweDAxLDB4MDEsMHgwMiwweDA0 LDB4MDEsMHgwNSwweDAzLDB4MDUsMHgwMCwweDAwLDB4MDB9fSwgLyogQ29sb3IgUmFuZ2UgKi8K KyAgICAvLyBSR0JBIFBpY3R1cmUgRXNzZW5jZSBEZXNjcmlwdG9yCisgICAgeyAweDM0MDEsIHsw eDA2LDB4MEUsMHgyQiwweDM0LDB4MDEsMHgwMSwweDAxLDB4MDUsMHgwNCwweDAxLDB4MDUsMHgw MywweDA2LDB4MDAsMHgwMCwweDAwfX0sIC8qIFBpeGVsIExheW91dCAqLworICAgIHsgMHgzNDA2 LCB7MHgwNiwweDBFLDB4MkIsMHgzNCwweDAxLDB4MDEsMHgwMSwweDA1LDB4MDQsMHgwMSwweDA1 LDB4MDMsMHgwQiwweDAwLDB4MDAsMHgwMH19LCAvKiBDb21wb25lbnQgTWF4IFJlZiAqLworICAg IHsgMHgzNDA3LCB7MHgwNiwweDBFLDB4MkIsMHgzNCwweDAxLDB4MDEsMHgwMSwweDA1LDB4MDQs MHgwMSwweDA1LDB4MDMsMHgwQywweDAwLDB4MDAsMHgwMH19LCAvKiBDb21wb25lbnQgTWluIFJl ZiAqLwogICAgIC8vIEdlbmVyaWMgU291bmQgRXNzZW5jZSBEZXNjcmlwdG9yCiAgICAgeyAweDNE MDIsIHsweDA2LDB4MEUsMHgyQiwweDM0LDB4MDEsMHgwMSwweDAxLDB4MDQsMHgwNCwweDAyLDB4 MDMsMHgwMSwweDA0LDB4MDAsMHgwMCwweDAwfX0sIC8qIExvY2tlZC9VbmxvY2tlZCAqLwogICAg IHsgMHgzRDAzLCB7MHgwNiwweDBFLDB4MkIsMHgzNCwweDAxLDB4MDEsMHgwMSwweDA1LDB4MDQs MHgwMiwweDAzLDB4MDEsMHgwMSwweDAxLDB4MDAsMHgwMH19LCAvKiBBdWRpbyBzYW1wbGluZyBy YXRlICovCkBAIC01ODUsMjcgKzU5MiwzMSBAQCBzdGF0aWMgdm9pZCBteGZfd3JpdGVfcHJpbWVy X3BhY2soQVZGb3JtYXRDb250ZXh0ICpzKQogICAgIEFWSU9Db250ZXh0ICpwYiA9IHMtPnBiOwog ICAgIGludCBsb2NhbF90YWdfbnVtYmVyID0gTVhGX05VTV9UQUdTLCBpOwogICAgIGludCB3aWxs X2hhdmVfYXZjX3RhZ3MgPSAwLCB3aWxsX2hhdmVfbWFzdGVyaW5nX3RhZ3MgPSAwLCB3aWxsX2hh dmVfZmZ2MV90YWdzID0gMCwgd2lsbF9oYXZlX2pwZWcyMDAwX3RhZ3MgPSAwOwotICAgIGludCB3 aWxsX2hhdmVfc3ViX2Rlc2NyaXB0b3IgPSAwOworICAgIGludCB3aWxsX2hhdmVfc3ViX2Rlc2Ny aXB0b3IgPSAwLCB3aWxsX2hhdmVfcmdiYV9kZXNjcmlwdG9yID0gMDsKIAogICAgIGZvciAoaSA9 IDA7IGkgPCBzLT5uYl9zdHJlYW1zOyBpKyspIHsKLSAgICAgICAgTVhGU3RyZWFtQ29udGV4dCAq c2MgPSBzLT5zdHJlYW1zW2ldLT5wcml2X2RhdGE7Ci0gICAgICAgIGlmIChzLT5zdHJlYW1zW2ld LT5jb2RlY3Bhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfSDI2NCAmJiBzYy0+c3ViX2Rlc2Ny aXB0b3IpIHsKKyAgICAgICAgQVZTdHJlYW0gKnN0ID0gcy0+c3RyZWFtc1tpXTsKKyAgICAgICAg TVhGU3RyZWFtQ29udGV4dCAqc2MgPSBzdC0+cHJpdl9kYXRhOworICAgICAgICBpZiAoc3QtPmNv ZGVjcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9IMjY0ICYmIHNjLT5zdWJfZGVzY3JpcHRv cikgewogICAgICAgICAgICAgd2lsbF9oYXZlX2F2Y190YWdzID0gMTsKICAgICAgICAgfQotICAg ICAgICBpZiAoYXZfcGFja2V0X3NpZGVfZGF0YV9nZXQocy0+c3RyZWFtc1tpXS0+Y29kZWNwYXIt PmNvZGVkX3NpZGVfZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMt PnN0cmVhbXNbaV0tPmNvZGVjcGFyLT5uYl9jb2RlZF9zaWRlX2RhdGEsCisgICAgICAgIGlmIChh dl9wYWNrZXRfc2lkZV9kYXRhX2dldChzdC0+Y29kZWNwYXItPmNvZGVkX3NpZGVfZGF0YSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0LT5jb2RlY3Bhci0+bmJfY29kZWRf c2lkZV9kYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVZfUEtUX0RB VEFfTUFTVEVSSU5HX0RJU1BMQVlfTUVUQURBVEEpKSB7CiAgICAgICAgICAgICB3aWxsX2hhdmVf bWFzdGVyaW5nX3RhZ3MgPSAxOwogICAgICAgICB9Ci0gICAgICAgIGlmIChzLT5zdHJlYW1zW2ld LT5jb2RlY3Bhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfRkZWMSkgeworICAgICAgICBpZiAo c3QtPmNvZGVjcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9GRlYxKSB7CiAgICAgICAgICAg ICB3aWxsX2hhdmVfZmZ2MV90YWdzID0gMTsKICAgICAgICAgfQotICAgICAgICBpZiAocy0+c3Ry ZWFtc1tpXS0+Y29kZWNwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0pQRUcyMDAwKXsKKyAg ICAgICAgaWYgKHN0LT5jb2RlY3Bhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfSlBFRzIwMDAp IHsKICAgICAgICAgICAgIHdpbGxfaGF2ZV9qcGVnMjAwMF90YWdzID0gMTsKICAgICAgICAgfQog ICAgICAgICBpZiAoc2MtPnN1Yl9kZXNjcmlwdG9yKSB7CiAgICAgICAgICAgICB3aWxsX2hhdmVf c3ViX2Rlc2NyaXB0b3IgPSAxOwogICAgICAgICB9CisgICAgICAgIGlmIChzYy0+cGljdHVyZV9k ZXNjcmlwdG9yX2tleSA9PSAmbXhmX3JnYmFfZGVzY3JpcHRvcl9rZXkpIHsKKyAgICAgICAgICAg IHdpbGxfaGF2ZV9yZ2JhX2Rlc2NyaXB0b3IgPSAxOworICAgICAgICB9CiAgICAgfQogCiAgICAg aWYgKCFteGYtPnN0b3JlX3VzZXJfY29tbWVudHMpIHsKQEAgLTYxOCw2ICs2MjksMTIgQEAgc3Rh dGljIHZvaWQgbXhmX3dyaXRlX3ByaW1lcl9wYWNrKEFWRm9ybWF0Q29udGV4dCAqcykKICAgICAg ICAgbXhmX21hcmtfdGFnX3VudXNlZChteGYsIDB4ODEwMCk7CiAgICAgfQogCisgICAgaWYgKCF3 aWxsX2hhdmVfcmdiYV9kZXNjcmlwdG9yKSB7CisgICAgICAgIG14Zl9tYXJrX3RhZ191bnVzZWQo bXhmLCAweDM0MDEpOworICAgICAgICBteGZfbWFya190YWdfdW51c2VkKG14ZiwgMHgzNDA2KTsK KyAgICAgICAgbXhmX21hcmtfdGFnX3VudXNlZChteGYsIDB4MzQwNyk7CisgICAgfQorCiAgICAg aWYgKCF3aWxsX2hhdmVfYXZjX3RhZ3MpIHsKICAgICAgICAgbXhmX21hcmtfdGFnX3VudXNlZCht eGYsIDB4ODIwMCk7CiAgICAgICAgIG14Zl9tYXJrX3RhZ191bnVzZWQobXhmLCAweDgyMDEpOwpA QCAtMTE5MCw3ICsxMjA3LDYgQEAgc3RhdGljIGNvbnN0IFVJRCBteGZfbXBlZ3ZpZGVvX2Rlc2Ny aXB0b3Jfa2V5ID0geyAweDA2LDB4MEUsMHgyQiwweDM0LDB4MDIsMHg1MywKIHN0YXRpYyBjb25z dCBVSUQgbXhmX3dhdl9kZXNjcmlwdG9yX2tleSAgICAgICA9IHsgMHgwNiwweDBFLDB4MkIsMHgz NCwweDAyLDB4NTMsMHgwMSwweDAxLDB4MGQsMHgwMSwweDAxLDB4MDEsMHgwMSwweDAxLDB4NDgs MHgwMCB9Owogc3RhdGljIGNvbnN0IFVJRCBteGZfYWVzM19kZXNjcmlwdG9yX2tleSAgICAgID0g eyAweDA2LDB4MEUsMHgyQiwweDM0LDB4MDIsMHg1MywweDAxLDB4MDEsMHgwZCwweDAxLDB4MDEs MHgwMSwweDAxLDB4MDEsMHg0NywweDAwIH07CiBzdGF0aWMgY29uc3QgVUlEIG14Zl9jZGNpX2Rl c2NyaXB0b3Jfa2V5ICAgICAgPSB7IDB4MDYsMHgwRSwweDJCLDB4MzQsMHgwMiwweDUzLDB4MDEs MHgwMSwweDBELDB4MDEsMHgwMSwweDAxLDB4MDEsMHgwMSwweDI4LDB4MDAgfTsKLXN0YXRpYyBj b25zdCBVSUQgbXhmX3JnYmFfZGVzY3JpcHRvcl9rZXkgICAgICA9IHsgMHgwNiwweDBFLDB4MkIs MHgzNCwweDAyLDB4NTMsMHgwMSwweDAxLDB4MEQsMHgwMSwweDAxLDB4MDEsMHgwMSwweDAxLDB4 MjksMHgwMCB9Owogc3RhdGljIGNvbnN0IFVJRCBteGZfZ2VuZXJpY19zb3VuZF9kZXNjcmlwdG9y X2tleSA9IHsgMHgwNiwweDBFLDB4MkIsMHgzNCwweDAyLDB4NTMsMHgwMSwweDAxLDB4MEQsMHgw MSwweDAxLDB4MDEsMHgwMSwweDAxLDB4NDIsMHgwMCB9OwogCiBzdGF0aWMgY29uc3QgVUlEIG14 Zl9hdmNfc3ViZGVzY3JpcHRvcl9rZXkgPSB7IDB4MDYsMHgwRSwweDJCLDB4MzQsMHgwMiwweDUz LDB4MDEsMHgwMSwweDBkLDB4MDEsMHgwMSwweDAxLDB4MDEsMHgwMSwweDZFLDB4MDAgfTsKQEAg LTEyMjIsNiArMTIzOCw3IEBAIHN0YXRpYyBpbnQ2NF90IG14Zl93cml0ZV9nZW5lcmljX3BpY3R1 cmVfZGVzYyhBVkZvcm1hdENvbnRleHQgKnMsIEFWU3RyZWFtICpzdCkKICAgICBjb25zdCBNWEZD b2RlY1VMICpjb2xvcl9zcGFjZV91bDsKICAgICBpbnQ2NF90IHBvcyA9IG14Zl93cml0ZV9nZW5l cmljX2Rlc2Mocywgc3QsICpzYy0+cGljdHVyZV9kZXNjcmlwdG9yX2tleSk7CiAgICAgY29uc3Qg QVZQYWNrZXRTaWRlRGF0YSAqc2lkZV9kYXRhOworICAgIGludCBjb21wb25lbnRfZGVwdGggPSBw aXhfZGVzYy0+Y29tcFswXS5kZXB0aDsKIAogICAgIGNvbG9yX3ByaW1hcmllc191bCA9IG14Zl9n ZXRfY29kZWNfdWxfYnlfaWQoZmZfbXhmX2NvbG9yX3ByaW1hcmllc191bHMsIHN0LT5jb2RlY3Bh ci0+Y29sb3JfcHJpbWFyaWVzKTsKICAgICBjb2xvcl90cmNfdWwgICAgICAgPSBteGZfZ2V0X2Nv ZGVjX3VsX2J5X2lkKGZmX214Zl9jb2xvcl90cmNfdWxzLCBzdC0+Y29kZWNwYXItPmNvbG9yX3Ry Yyk7CkBAIC0xMjM2LDYgKzEyNTMsMTAgQEAgc3RhdGljIGludDY0X3QgbXhmX3dyaXRlX2dlbmVy aWNfcGljdHVyZV9kZXNjKEFWRm9ybWF0Q29udGV4dCAqcywgQVZTdHJlYW0gKnN0KQogICAgIGRp c3BsYXlfd2lkdGggPSBzdG9yZWRfd2lkdGg7CiAKICAgICBzd2l0Y2ggKHN0LT5jb2RlY3Bhci0+ Y29kZWNfaWQpIHsKKyAgICBjYXNlIEFWX0NPREVDX0lEX0ROWEhEOgorICAgICAgICBpZiAoc2Mt PmNpZCA8IDEyNzApIC8vIEROeEhECisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgLy8gZmFs bCBmb3IgRE54SFIgUkkgcmFzdGVycwogICAgIGNhc2UgQVZfQ09ERUNfSURfTVBFRzJWSURFTzoK ICAgICBjYXNlIEFWX0NPREVDX0lEX0gyNjQ6CiAgICAgICAgIC8vQmFzZWQgb24gMTZ4MTYgbWFj cm9ibG9ja3MKQEAgLTEzMTMsOCArMTMzNCwyNSBAQCBzdGF0aWMgaW50NjRfdCBteGZfd3JpdGVf Z2VuZXJpY19waWN0dXJlX2Rlc2MoQVZGb3JtYXRDb250ZXh0ICpzLCBBVlN0cmVhbSAqc3QpCiAg ICAgICAgIGF2aW9fd2IzMihwYiwgLSgoc3QtPmNvZGVjcGFyLT5oZWlnaHQgLSBkaXNwbGF5X2hl aWdodCkmMSkpOwogICAgIH0KIAotICAgIGlmIChzYy0+cGljdHVyZV9kZXNjcmlwdG9yX2tleSAh PSAmbXhmX3JnYmFfZGVzY3JpcHRvcl9rZXkpIHsKLSAgICAgICAgaW50IGNvbXBvbmVudF9kZXB0 aCAgICAgPSBwaXhfZGVzYy0+Y29tcFswXS5kZXB0aDsKKyAgICBpZiAoc2MtPnBpY3R1cmVfZGVz Y3JpcHRvcl9rZXkgPT0gJm14Zl9yZ2JhX2Rlc2NyaXB0b3Jfa2V5KSB7CisgICAgICAgIHVpbnQ4 X3QgcmdiX2xheW91dFsxNl0gPSB7CisgICAgICAgICAgICAnUicsIGNvbXBvbmVudF9kZXB0aCwK KyAgICAgICAgICAgICdHJywgY29tcG9uZW50X2RlcHRoLAorICAgICAgICAgICAgJ0InLCBjb21w b25lbnRfZGVwdGgsCisgICAgICAgIH07CisKKyAgICAgICAgLy8gcGl4ZWwgbGF5b3V0CisgICAg ICAgIG14Zl93cml0ZV9sb2NhbF90YWcocywgMTYsIDB4MzQwMSk7CisgICAgICAgIGF2aW9fd3Jp dGUocGIsIHJnYl9sYXlvdXQsIDE2KTsKKworICAgICAgICAvLyBjb21wb25lbnQgbWF4IHJlZgor ICAgICAgICBteGZfd3JpdGVfbG9jYWxfdGFnKHMsIDQsIDB4MzQwNik7CisgICAgICAgIGF2aW9f d2IzMihwYiwgKDE8PGNvbXBvbmVudF9kZXB0aCkgLSAxKTsKKworICAgICAgICAvLyBjb21wb25l bnQgbWluIHJlZgorICAgICAgICBteGZfd3JpdGVfbG9jYWxfdGFnKHMsIDQsIDB4MzQwNyk7Cisg ICAgICAgIGF2aW9fd2IzMihwYiwgMCk7CisgICAgfSBlbHNlIHsKICAgICAgICAgaW50IGhfY2hy b21hX3N1Yl9zYW1wbGUgPSAxIDw8IHBpeF9kZXNjLT5sb2cyX2Nocm9tYV93OwogICAgICAgICBp bnQgdl9jaHJvbWFfc3ViX3NhbXBsZSA9IDEgPDwgcGl4X2Rlc2MtPmxvZzJfY2hyb21hX2g7CiAg ICAgICAgIGludCBjb2xvcl9zaXRpbmc7CkBAIC0xMzkzLDcgKzE0MzEsNiBAQCBzdGF0aWMgaW50 NjRfdCBteGZfd3JpdGVfZ2VuZXJpY19waWN0dXJlX2Rlc2MoQVZGb3JtYXRDb250ZXh0ICpzLCBB VlN0cmVhbSAqc3QpCiAgICAgICAgIGYxICo9IDI7CiAgICAgfQogCi0KICAgICBteGZfd3JpdGVf bG9jYWxfdGFnKHMsIDE2LCAweDMyMEQpOwogICAgIGF2aW9fd2IzMihwYiwgMik7CiAgICAgYXZp b193YjMyKHBiLCA0KTsKQEAgLTIzMjMsNyArMjM2MCw3IEBAIHN0YXRpYyBpbnQgbXhmX3BhcnNl X2RueGhkX2ZyYW1lKEFWRm9ybWF0Q29udGV4dCAqcywgQVZTdHJlYW0gKnN0LCBBVlBhY2tldCAq cGt0CiB7CiAgICAgTVhGQ29udGV4dCAqbXhmID0gcy0+cHJpdl9kYXRhOwogICAgIE1YRlN0cmVh bUNvbnRleHQgKnNjID0gc3QtPnByaXZfZGF0YTsKLSAgICBpbnQgaSwgY2lkOworICAgIGludCBp OwogCiAgICAgaWYgKG14Zi0+aGVhZGVyX3dyaXR0ZW4pCiAgICAgICAgIHJldHVybiAxOwpAQCAt MjMzMSw5ICsyMzY4LDkgQEAgc3RhdGljIGludCBteGZfcGFyc2VfZG54aGRfZnJhbWUoQVZGb3Jt YXRDb250ZXh0ICpzLCBBVlN0cmVhbSAqc3QsIEFWUGFja2V0ICpwa3QKICAgICBpZiAocGt0LT5z aXplIDwgNDMpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgY2lkID0gQVZfUkIzMihwa3QtPmRh dGEgKyAweDI4KTsKKyAgICBzYy0+Y2lkID0gQVZfUkIzMihwa3QtPmRhdGEgKyAweDI4KTsKICAg ICBmb3IgKGkgPSAwOyBpIDwgRkZfQVJSQVlfRUxFTVMobXhmX2RueGhkX2NvZGVjX3Vscyk7IGkr KykgewotICAgICAgICBpZiAoY2lkID09IG14Zl9kbnhoZF9jb2RlY191bHNbaV0uY2lkKSB7Cisg ICAgICAgIGlmIChzYy0+Y2lkID09IG14Zl9kbnhoZF9jb2RlY191bHNbaV0uY2lkKSB7CiAgICAg ICAgICAgICBzYy0+Y29kZWNfdWwgPSAmbXhmX2RueGhkX2NvZGVjX3Vsc1tpXS5jb2RlY191bDsK ICAgICAgICAgICAgIHNjLT5pbnRlcmxhY2VkID0gbXhmX2RueGhkX2NvZGVjX3Vsc1tpXS5pbnRl cmxhY2VkOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0yMzQyLDcgKzIzNzksNyBAQCBzdGF0aWMg aW50IG14Zl9wYXJzZV9kbnhoZF9mcmFtZShBVkZvcm1hdENvbnRleHQgKnMsIEFWU3RyZWFtICpz dCwgQVZQYWNrZXQgKnBrdAogICAgIGlmIChpID09IEZGX0FSUkFZX0VMRU1TKG14Zl9kbnhoZF9j b2RlY191bHMpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIGlmIChjaWQgPj0gMTI3MCkgeyAv LyBSSSByYXN0ZXIKKyAgICBpZiAoc2MtPmNpZCA+PSAxMjcwKSB7IC8vIFJJIHJhc3RlcgogICAg ICAgICBhdl9yZWR1Y2UoJnNjLT5hc3BlY3RfcmF0aW8ubnVtLCAmc2MtPmFzcGVjdF9yYXRpby5k ZW4sCiAgICAgICAgICAgICAgICAgICBzdC0+Y29kZWNwYXItPndpZHRoLCBzdC0+Y29kZWNwYXIt PmhlaWdodCwKICAgICAgICAgICAgICAgICAgIElOVF9NQVgpOwpAQCAtMjM1Miw2ICsyMzg5LDkg QEAgc3RhdGljIGludCBteGZfcGFyc2VfZG54aGRfZnJhbWUoQVZGb3JtYXRDb250ZXh0ICpzLCBB VlN0cmVhbSAqc3QsIEFWUGFja2V0ICpwa3QKIAogICAgIHNjLT5mcmFtZV9zaXplID0gcGt0LT5z aXplOwogCisgICAgaWYgKHNjLT5jaWQgPT0gMTI3MCB8fCBzYy0+Y2lkID09IDEyNTYpCisgICAg ICAgIHNjLT5waWN0dXJlX2Rlc2NyaXB0b3Jfa2V5ID0gJm14Zl9yZ2JhX2Rlc2NyaXB0b3Jfa2V5 OworCiAgICAgcmV0dXJuIDE7CiB9CiAKLS0gCjIuNDkuMQoKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KZmZtcGVnLWRldmVsIG1haWxpbmcgbGlzdCAtLSBm Zm1wZWctZGV2ZWxAZmZtcGVnLm9yZwpUbyB1bnN1YnNjcmliZSBzZW5kIGFuIGVtYWlsIHRvIGZm bXBlZy1kZXZlbC1sZWF2ZUBmZm1wZWcub3JnCg==