Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vONhw-005K8d-2X for pgsql-hackers@arkaria.postgresql.org; Wed, 26 Nov 2025 22:09:53 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vONhv-001tgl-08 for pgsql-hackers@arkaria.postgresql.org; Wed, 26 Nov 2025 22:09:51 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vONht-001tgT-1e for pgsql-hackers@lists.postgresql.org; Wed, 26 Nov 2025 22:09:50 +0000 Received: from mail-pg1-x52d.google.com ([2607:f8b0:4864:20::52d]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vONho-001dqb-19 for pgsql-hackers@postgresql.org; Wed, 26 Nov 2025 22:09:48 +0000 Received: by mail-pg1-x52d.google.com with SMTP id 41be03b00d2f7-bc2abdcfc6fso159106a12.2 for ; Wed, 26 Nov 2025 14:09:44 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1764194984; x=1764799784; darn=postgresql.org; h=to:subject:from:content-language:user-agent:mime-version:date :message-id:from:to:cc:subject:date:message-id:reply-to; bh=MaLhEt1wkOyuy/N6vuwlgLY6bYk+6KRx32dy8dIDvEI=; b=IWaI6BvXheQ6ZZa1HAs31oMHCehZX4sZIoZLgGgwaupSZskpMvkVpd6MprmZTtYr7D +dIWtTxyfxNCoR4d2JmWm9wim5cD+3n4ciwraTdg2FsgFrbj7ipEOSlbMyxn9eWl8H8D 7A1r7v+tLlEOWxgNthPR0E6f62R3e/jS8t+StWifgkAy6NtcozA0R2H+rxuFqe7k0MrL 2g9KNnpH1bfvUok5i6RBGJ3fd7BtmQwfcvREHeZ7b2Q0DtWdF2NgSptGnoGFwvHgZvhr OMxXusgNDg+Q53RHrXFdoowg0g97JHafmJlfpgiXxf+80yW4vTDu62YCxoukhJBLq5Y2 KdYg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1764194984; x=1764799784; h=to:subject:from:content-language:user-agent:mime-version:date :message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=MaLhEt1wkOyuy/N6vuwlgLY6bYk+6KRx32dy8dIDvEI=; b=GNiBOnOu32nyAS/OiPdb1hDP4V6rHQkp71XHBhiOOYBZ+V6uyFkYtqVT0/k3DKfCJK +C0VUEEWuH3OQgQi5N3KYCUMv4m9gsJicOSrQPeMC9ZYPxBQOAUxQ07pR3Ohb3JLXgRa pKw165ZfWOVydkAaXzKn1Hy5c5y8FpSscfx6SJuZLf4kUL+0Qmn7FP1wHCdLm0EfEY1U k6X9iMJmbvftdZPX99WMZDTvXxZPockj4hFmqh259uXZh420Z2mMNnKMn4A9gA+rzuKi xvjbmfZU58q7RK5x1pXpAO5Fb1gCw3u5yqDZfZBNkN5T2ljKPoF2r8FHKLQ9hW7LMfuP kw2g== X-Gm-Message-State: AOJu0Yz0InjCRCifNQNvdxNrDcbx8uUTcCyZMdInszKipt1aplQ7B9I7 74FFvx/J9VRwWftOLw0vmmc1IeUhJCZkSovGKT0gUagNFl1XDY6/ofDXgwEHb27J98o= X-Gm-Gg: ASbGncv8yrHHLo7bRO15/s1HeNtRvtYLUkymIgh2LWBsSL/ms5QMXwoFh3teznS7yA0 UhH1+KPr+OEel/iXPN6qDurFqkNheG6uhz0wJeMQHEcH44zmPjA6Qcu3e0gOz/qjk70DEntVUHG +tweY5QlNrRKfoLGwKVGibNKniuxjeM6sTX5pWvzgL3NdPj1V/PeQo1BXWgz6/csP6Tspcp7kzr FdG+v08PHmfDJY6oZ7OcAvHw9jpq6J7Kv+YcNN6GAc17wDrFjf+xMTCkdbtpspsf5of+UZq3dQr bsoRKVMRHuUmH3IhXQhoWPQ1UHFc1rgPjlbv8M6Vf+oHwzcg9ll+V/uRkrtEhjopItpA5btvKMB eLqDCIkvhWQAXX1cm4KvrdXCB4rqYsSPzzWHAEjOG2k8cLynKzbJh3pukWS2VoCHLFvgnbgfE7e 8qkxOtjICKa2XXEpOp/UJmg3yBHKK0oryVBV3gpaU8Fr76i0Mqx1Ruawq9mNKrjw== X-Google-Smtp-Source: AGHT+IF8MQNYDsODrKB2P4Ye3pNFsW6VaNCtUAMkB2RUKEntnRhr/ka7WuiUvVPy1r/CcP+CiaJnLg== X-Received: by 2002:a05:693c:8219:b0:2a4:3593:dde2 with SMTP id 5a478bee46e88-2a7195c0177mr9505087eec.15.1764194983184; Wed, 26 Nov 2025 14:09:43 -0800 (PST) Received: from [10.255.184.220] (vip-148-139-1-229.cust.service-now.com. [148.139.1.229]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-2a6fc3d0bb6sm108336347eec.2.2025.11.26.14.09.33 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 26 Nov 2025 14:09:42 -0800 (PST) Content-Type: multipart/mixed; boundary="------------zk84nQkYWyEd1ikHs7MKd5aH" Message-ID: Date: Wed, 26 Nov 2025 23:09:31 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Content-Language: en-US From: David Geier Subject: Consistently use palloc_object() and palloc_array() To: pgsql-hackers List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------zk84nQkYWyEd1ikHs7MKd5aH Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Hi hackers, I've changed all code to use the "new" palloc_object(), palloc_array(), palloc0_object(), palloc0_array, repalloc_array() and repalloc0_array() macros. This makes the code more readable and more consistent. The patch is pretty big but potential merge conflicts should be easy to resolve. If preferred, I can also further split up the patch, e.g. directory by directory or high impact files first. The patch is passing "meson test" and I've additionally wrote a script that parses the patch file and verifies that every two corresponding + and - lines match (e.g. palloc0() replaced by palloc0_array() or palloc0_object(), the same for palloc() and repalloc(), additionally some checks to make sure the conversion to the _array() variant is correct). -- David Geier --------------zk84nQkYWyEd1ikHs7MKd5aH Content-Type: text/x-patch; charset=UTF-8; name="v1-0001-Consistently-use-palloc_object-and-palloc_array.patch" Content-Disposition: attachment; filename*0="v1-0001-Consistently-use-palloc_object-and-palloc_array.patc"; filename*1="h" Content-Transfer-Encoding: base64 RnJvbSAzNDFiMmU5NjdkZGM5NTI4M2MwNjMxYWUxMDk5NjAyMjk2NWFiMzhkIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBEYXZpZCBHZWllciA8Z2VpZGF2LnBnQGdtYWlsLmNv bT4KRGF0ZTogV2VkLCAyNiBOb3YgMjAyNSAxMDoxMTo1OCArMDEwMApTdWJqZWN0OiBbUEFU Q0hdIENvbnNpc3RlbnRseSB1c2UgcGFsbG9jX29iamVjdCgpIGFuZCBwYWxsb2NfYXJyYXko KQoKLS0tCiBjb250cmliL2FtY2hlY2svdmVyaWZ5X2dpbi5jICAgICAgICAgICAgICAgICAg fCAxMiArLS0KIGNvbnRyaWIvYW1jaGVjay92ZXJpZnlfaGVhcGFtLmMgICAgICAgICAgICAg ICB8ICAyICstCiBjb250cmliL2FtY2hlY2svdmVyaWZ5X25idHJlZS5jICAgICAgICAgICAg ICAgfCAgMiArLQogLi4uL2Jhc2ViYWNrdXBfdG9fc2hlbGwvYmFzZWJhY2t1cF90b19zaGVs bC5jIHwgIDIgKy0KIGNvbnRyaWIvYmxvb20vYmxpbnNlcnQuYyAgICAgICAgICAgICAgICAg ICAgICB8ICAyICstCiBjb250cmliL2Jsb29tL2Jsc2Nhbi5jICAgICAgICAgICAgICAgICAg ICAgICAgfCAgNCArLQogY29udHJpYi9ibG9vbS9ibHV0aWxzLmMgICAgICAgICAgICAgICAg ICAgICAgIHwgIDIgKy0KIGNvbnRyaWIvYmxvb20vYmx2YWN1dW0uYyAgICAgICAgICAgICAg ICAgICAgICB8ICA0ICstCiBjb250cmliL2J0cmVlX2dpbi9idHJlZV9naW4uYyAgICAgICAg ICAgICAgICAgfCAyMCArKy0tCiBjb250cmliL2J0cmVlX2dpc3QvYnRyZWVfYm9vbC5jICAg ICAgICAgICAgICAgfCAgMiArLQogY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2Nhc2guYyAg ICAgICAgICAgICAgIHwgIDIgKy0KIGNvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9kYXRlLmMg ICAgICAgICAgICAgICB8ICAyICstCiBjb250cmliL2J0cmVlX2dpc3QvYnRyZWVfZW51bS5j ICAgICAgICAgICAgICAgfCAgMiArLQogY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2Zsb2F0 NC5jICAgICAgICAgICAgIHwgIDIgKy0KIGNvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9mbG9h dDguYyAgICAgICAgICAgICB8ICAyICstCiBjb250cmliL2J0cmVlX2dpc3QvYnRyZWVfaW5l dC5jICAgICAgICAgICAgICAgfCAgNiArLQogY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2lu dDIuYyAgICAgICAgICAgICAgIHwgIDIgKy0KIGNvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9p bnQ0LmMgICAgICAgICAgICAgICB8ICAyICstCiBjb250cmliL2J0cmVlX2dpc3QvYnRyZWVf aW50OC5jICAgICAgICAgICAgICAgfCAgMiArLQogY29udHJpYi9idHJlZV9naXN0L2J0cmVl X2ludGVydmFsLmMgICAgICAgICAgIHwgIDggKy0KIGNvbnRyaWIvYnRyZWVfZ2lzdC9idHJl ZV9tYWNhZGRyLmMgICAgICAgICAgICB8ICAyICstCiBjb250cmliL2J0cmVlX2dpc3QvYnRy ZWVfbWFjYWRkcjguYyAgICAgICAgICAgfCAgMiArLQogY29udHJpYi9idHJlZV9naXN0L2J0 cmVlX29pZC5jICAgICAgICAgICAgICAgIHwgIDIgKy0KIGNvbnRyaWIvYnRyZWVfZ2lzdC9i dHJlZV90aW1lLmMgICAgICAgICAgICAgICB8ICA2ICstCiBjb250cmliL2J0cmVlX2dpc3Qv YnRyZWVfdHMuYyAgICAgICAgICAgICAgICAgfCAxMCArLQogY29udHJpYi9idHJlZV9naXN0 L2J0cmVlX3V0aWxzX251bS5jICAgICAgICAgIHwgIDQgKy0KIGNvbnRyaWIvYnRyZWVfZ2lz dC9idHJlZV91dGlsc192YXIuYyAgICAgICAgICB8ICA4ICstCiBjb250cmliL2J0cmVlX2dp c3QvYnRyZWVfdXVpZC5jICAgICAgICAgICAgICAgfCAgNCArLQogY29udHJpYi9jdWJlL2N1 YmUuYyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIGNvbnRyaWIvZGljdF9p bnQvZGljdF9pbnQuYyAgICAgICAgICAgICAgICAgICB8ICA0ICstCiBjb250cmliL2RpY3Rf eHN5bi9kaWN0X3hzeW4uYyAgICAgICAgICAgICAgICAgfCAgOCArLQogY29udHJpYi9maWxl X2Zkdy9maWxlX2Zkdy5jICAgICAgICAgICAgICAgICAgIHwgIDQgKy0KIGNvbnRyaWIvZnV6 enlzdHJtYXRjaC9mdXp6eXN0cm1hdGNoLmMgICAgICAgICB8ICA0ICstCiBjb250cmliL2hz dG9yZS9oc3RvcmVfZ2luLmMgICAgICAgICAgICAgICAgICAgfCAgNiArLQogY29udHJpYi9o c3RvcmUvaHN0b3JlX2dpc3QuYyAgICAgICAgICAgICAgICAgIHwgIDYgKy0KIGNvbnRyaWIv aHN0b3JlL2hzdG9yZV9pby5jICAgICAgICAgICAgICAgICAgICB8ICAyICstCiBjb250cmli L2hzdG9yZS9oc3RvcmVfb3AuYyAgICAgICAgICAgICAgICAgICAgfCAxOCArKy0tCiBjb250 cmliL2ludGFycmF5L19pbnRfYm9vbC5jICAgICAgICAgICAgICAgICAgfCAgOCArLQogY29u dHJpYi9pbnRhcnJheS9faW50X2dpbi5jICAgICAgICAgICAgICAgICAgIHwgIDQgKy0KIGNv bnRyaWIvaW50YXJyYXkvX2ludF9naXN0LmMgICAgICAgICAgICAgICAgICB8IDEyICstLQog Y29udHJpYi9pbnRhcnJheS9faW50YmlnX2dpc3QuYyAgICAgICAgICAgICAgIHwgIDYgKy0K IGNvbnRyaWIvanNvbmJfcGxwZXJsL2pzb25iX3BscGVybC5jICAgICAgICAgICB8ICAyICst CiBjb250cmliL2pzb25iX3BscHl0aG9uL2pzb25iX3BscHl0aG9uLmMgICAgICAgfCAgMiAr LQogY29udHJpYi9sdHJlZS9fbHRyZWVfZ2lzdC5jICAgICAgICAgICAgICAgICAgIHwgIDYg Ky0KIGNvbnRyaWIvbHRyZWUvX2x0cmVlX29wLmMgICAgICAgICAgICAgICAgICAgICB8ICAy ICstCiBjb250cmliL2x0cmVlL2x0cmVlX2dpc3QuYyAgICAgICAgICAgICAgICAgICAgfCAg NiArLQogY29udHJpYi9sdHJlZS9sdHJlZV9pby5jICAgICAgICAgICAgICAgICAgICAgIHwg IDYgKy0KIGNvbnRyaWIvbHRyZWUvbHRyZWVfb3AuYyAgICAgICAgICAgICAgICAgICAgICB8 ICAyICstCiBjb250cmliL2x0cmVlL2x0eHRxdWVyeV9pby5jICAgICAgICAgICAgICAgICAg fCAgOCArLQogY29udHJpYi9wYWdlaW5zcGVjdC9icmluZnVuY3MuYyAgICAgICAgICAgICAg IHwgIDIgKy0KIGNvbnRyaWIvcGFnZWluc3BlY3QvYnRyZWVmdW5jcy5jICAgICAgICAgICAg ICB8ICA2ICstCiBjb250cmliL3BhZ2VpbnNwZWN0L2dpbmZ1bmNzLmMgICAgICAgICAgICAg ICAgfCAgMiArLQogY29udHJpYi9wYWdlaW5zcGVjdC9oYXNoZnVuY3MuYyAgICAgICAgICAg ICAgIHwgIDIgKy0KIGNvbnRyaWIvcGFnZWluc3BlY3QvaGVhcGZ1bmNzLmMgICAgICAgICAg ICAgICB8ICA0ICstCiBjb250cmliL3BnX2J1ZmZlcmNhY2hlL3BnX2J1ZmZlcmNhY2hlX3Bh Z2VzLmMgfCAgOCArLQogY29udHJpYi9wZ19vdmVyZXhwbGFpbi9wZ19vdmVyZXhwbGFpbi5j ICAgICAgIHwgIDIgKy0KIGNvbnRyaWIvcGdfdHJnbS90cmdtX2dpbi5jICAgICAgICAgICAg ICAgICAgICB8ICA4ICstCiBjb250cmliL3BnX3RyZ20vdHJnbV9naXN0LmMgICAgICAgICAg ICAgICAgICAgfCAxMCArLQogY29udHJpYi9wZ190cmdtL3RyZ21fb3AuYyAgICAgICAgICAg ICAgICAgICAgIHwgMjAgKystLQogY29udHJpYi9wZ190cmdtL3RyZ21fcmVnZXhwLmMgICAg ICAgICAgICAgICAgIHwgMjIgKystLS0KIGNvbnRyaWIvcGdfdmlzaWJpbGl0eS9wZ192aXNp YmlsaXR5LmMgICAgICAgICB8ICAyICstCiBjb250cmliL3BnX3dhbGluc3BlY3QvcGdfd2Fs aW5zcGVjdC5jICAgICAgICAgfCAgNSArLQogY29udHJpYi9wZ2NyeXB0by9tYnVmLmMgICAg ICAgICAgICAgICAgICAgICAgIHwgIDggKy0KIGNvbnRyaWIvcGdjcnlwdG8vb3BlbnNzbC5j ICAgICAgICAgICAgICAgICAgICB8ICA0ICstCiBjb250cmliL3BnY3J5cHRvL3BncC1jZmIu YyAgICAgICAgICAgICAgICAgICAgfCAgMiArLQogY29udHJpYi9wZ2NyeXB0by9wZ3AtY29t cHJlc3MuYyAgICAgICAgICAgICAgIHwgIDQgKy0KIGNvbnRyaWIvcGdjcnlwdG8vcGdwLWRl Y3J5cHQuYyAgICAgICAgICAgICAgICB8ICA0ICstCiBjb250cmliL3BnY3J5cHRvL3BncC1l bmNyeXB0LmMgICAgICAgICAgICAgICAgfCAgNCArLQogY29udHJpYi9wZ2NyeXB0by9wZ3At cGdzcWwuYyAgICAgICAgICAgICAgICAgIHwgIDYgKy0KIGNvbnRyaWIvcGdjcnlwdG8vcGdw LXB1YmtleS5jICAgICAgICAgICAgICAgICB8ICAyICstCiBjb250cmliL3BnY3J5cHRvL3B4 LWhtYWMuYyAgICAgICAgICAgICAgICAgICAgfCAgMiArLQogY29udHJpYi9wZ2NyeXB0by9w eC5jICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIGNvbnRyaWIvcG9zdGdyZXNf ZmR3L3Bvc3RncmVzX2Zkdy5jICAgICAgICAgICB8IDIyICsrLS0tCiBjb250cmliL3NlZy9z ZWcuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxMCArLQogY29udHJpYi9zZXBn c3FsL2xhYmVsLmMgICAgICAgICAgICAgICAgICAgICAgIHwgIDQgKy0KIGNvbnRyaWIvc2Vw Z3NxbC91YXZjLmMgICAgICAgICAgICAgICAgICAgICAgICB8ICAyICstCiBjb250cmliL3Nw aS9yZWZpbnQuYyAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQogY29udHJpYi9z c2xpbmZvL3NzbGluZm8uYyAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIGNvbnRyaWIv dGFibGVmdW5jL3RhYmxlZnVuYy5jICAgICAgICAgICAgICAgICB8ICA0ICstCiBjb250cmli L3Rlc3RfZGVjb2RpbmcvdGVzdF9kZWNvZGluZy5jICAgICAgICAgfCAgMiArLQogY29udHJp Yi90c21fc3lzdGVtX3Jvd3MvdHNtX3N5c3RlbV9yb3dzLmMgICAgIHwgIDIgKy0KIGNvbnRy aWIvdHNtX3N5c3RlbV90aW1lL3RzbV9zeXN0ZW1fdGltZS5jICAgICB8ICAyICstCiBjb250 cmliL3VuYWNjZW50L3VuYWNjZW50LmMgICAgICAgICAgICAgICAgICAgfCAgOCArLQogY29u dHJpYi94bWwyL3hwYXRoLmMgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDMgKy0KIGNv bnRyaWIveG1sMi94c2x0X3Byb2MuYyAgICAgICAgICAgICAgICAgICAgICB8ICAyICstCiBk b2Mvc3JjL3NnbWwvZ2lzdC5zZ21sICAgICAgICAgICAgICAgICAgICAgICAgfCAgOCArLQog ZG9jL3NyYy9zZ21sL3hmdW5jLnNnbWwgICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0K IGRvYy9zcmMvc2dtbC94dHlwZXMuc2dtbCAgICAgICAgICAgICAgICAgICAgICB8ICAyICst CiBzcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMgICAgICAgICAgICAgICAgfCAgOCAr LQogc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbl9taW5tYXhfbXVsdGkuYyAgIHwgIDQg Ky0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW5fcmV2bWFwLmMgICAgICAgICB8ICAy ICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluX3R1cGxlLmMgICAgICAgICAgfCAx NCArLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vYXR0bWFwLmMgICAgICAgICAgICB8 ICA0ICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvY29tbW9uL2hlYXB0dXBsZS5jICAgICAgICAg fCAgOCArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi9wcmludHR1cC5jICAgICAgICAg IHwgIDIgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vcmVsb3B0aW9ucy5jICAgICAg ICB8ICA2ICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvY29tbW9uL3RpZHN0b3JlLmMgICAgICAg ICAgfCAgOCArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi90b2FzdF9pbnRlcm5hbHMu YyAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vdHVwY29udmVydC5jICAg ICAgICB8IDIwICsrLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vdHVwZGVzYy5jICAg ICAgICAgICB8ICAyICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmJ0cmVlLmMgICAg ICAgICAgICAgfCAgNiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW5idWxrLmMgICAg ICAgICAgICAgIHwgIDUgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luZGF0YXBhZ2Uu YyAgICAgICAgICB8IDE0ICstLQogc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW5lbnRyeXBh Z2UuYyAgICAgICAgIHwgIDQgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luZ2V0LmMg ICAgICAgICAgICAgICB8ICA0ICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmluc2Vy dC5jICAgICAgICAgICAgfCAxNiArKy0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbnNj YW4uYyAgICAgICAgICAgICAgfCAxMyArLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2lu dXRpbC5jICAgICAgICAgICAgICB8IDEwICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dp bnZhY3V1bS5jICAgICAgICAgICAgfCAgOCArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3Qv Z2lzdC5jICAgICAgICAgICAgICAgIHwgMjIgKystLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9n aXN0L2dpc3RidWlsZC5jICAgICAgICAgICB8IDEwICstCiBzcmMvYmFja2VuZC9hY2Nlc3Mv Z2lzdC9naXN0YnVpbGRidWZmZXJzLmMgICAgfCAxNCArLS0KIHNyYy9iYWNrZW5kL2FjY2Vz cy9naXN0L2dpc3Rwcm9jLmMgICAgICAgICAgICB8IDI2ICsrLS0tCiBzcmMvYmFja2VuZC9h Y2Nlc3MvZ2lzdC9naXN0c2Nhbi5jICAgICAgICAgICAgfCAgNiArLQogc3JjL2JhY2tlbmQv YWNjZXNzL2dpc3QvZ2lzdHNwbGl0LmMgICAgICAgICAgIHwgIDggKy0KIHNyYy9iYWNrZW5k L2FjY2Vzcy9naXN0L2dpc3R1dGlsLmMgICAgICAgICAgICB8ICA0ICstCiBzcmMvYmFja2Vu ZC9hY2Nlc3MvZ2lzdC9naXN0dmFjdXVtLmMgICAgICAgICAgfCAgNCArLQogc3JjL2JhY2tl bmQvYWNjZXNzL2hhc2gvaGFzaC5jICAgICAgICAgICAgICAgIHwgIDkgKy0KIHNyYy9iYWNr ZW5kL2FjY2Vzcy9oYXNoL2hhc2hzb3J0LmMgICAgICAgICAgICB8ICAyICstCiBzcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYyAgICAgICAgICAgICAgfCAxNCArLS0KIHNyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMgICAgICB8ICA2ICstCiBzcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC9yZXdyaXRlaGVhcC5jICAgICAgICAgfCAgMiArLQogc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jICAgICAgICAgIHwgIDYgKy0KIHNy Yy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9hbXZhbGlkYXRlLmMgICAgICAgICB8ICAyICstCiBz cmMvYmFja2VuZC9hY2Nlc3MvaW5kZXgvZ2VuYW0uYyAgICAgICAgICAgICAgfCAxNCArLS0K IHNyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0ZGVkdXAuYyAgICAgICAgICB8ICA4ICst CiBzcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idGluc2VydC5jICAgICAgICAgfCAgMiAr LQogc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRwYWdlLmMgICAgICAgICAgIHwgIDIg Ky0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0cmVlLmMgICAgICAgICAgICB8ICA5 ICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNlYXJjaC5jICAgICAgICAgfCAg MiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMgICAgICAgICAgIHwg MzIgKysrLS0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzcGxpdGxvYy5jICAg ICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0eGxvZy5jICAgICAg ICAgICB8ICAyICstCiBzcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ2RvaW5zZXJ0LmMg ICAgICAgfCAzMyArKysrLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ2luc2Vy dC5jICAgICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGdrZHRy ZWVwcm9jLmMgICAgIHwgMTQgKy0tCiBzcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3By b2MuYyAgICAgICAgICAgfCAgNCArLQogc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGdx dWFkdHJlZXByb2MuYyAgIHwgMjIgKystLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qv c3Bnc2Nhbi5jICAgICAgICAgICB8IDI5ICsrKy0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL3Nw Z2lzdC9zcGd0ZXh0cHJvYy5jICAgICAgIHwgMTkgKystLQogc3JjL2JhY2tlbmQvYWNjZXNz L3NwZ2lzdC9zcGd1dGlscy5jICAgICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL2FjY2Vz cy9zcGdpc3Qvc3BndmFjdXVtLmMgICAgICAgICB8ICA2ICstCiBzcmMvYmFja2VuZC9hY2Nl c3Mvc3BnaXN0L3NwZ3hsb2cuYyAgICAgICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvYWNj ZXNzL3RhYmxlc2FtcGxlL2Jlcm5vdWxsaS5jICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL2Fj Y2Vzcy90YWJsZXNhbXBsZS9zeXN0ZW0uYyAgICAgICB8ICAyICstCiBzcmMvYmFja2VuZC9h Y2Nlc3MvdHJhbnNhbS9tdWx0aXhhY3QuYyAgICAgICAgfCAgMyArLQogc3JjL2JhY2tlbmQv YWNjZXNzL3RyYW5zYW0vcGFyYWxsZWwuYyAgICAgICAgIHwgIDcgKy0KIHNyYy9iYWNrZW5k L2FjY2Vzcy90cmFuc2FtL3RpbWVsaW5lLmMgICAgICAgICB8ICA4ICstCiBzcmMvYmFja2Vu ZC9hY2Nlc3MvdHJhbnNhbS90d29waGFzZS5jICAgICAgICAgfCAxMCArLQogc3JjL2JhY2tl bmQvYWNjZXNzL3RyYW5zYW0veGFjdC5jICAgICAgICAgICAgIHwgIDIgKy0KIHNyYy9iYWNr ZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYyAgICAgICAgICAgICB8ICA0ICstCiBzcmMvYmFj a2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nZnVuY3MuYyAgICAgICAgfCAgMiArLQogc3JjL2Jh Y2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3ByZWZldGNoZXIuYyAgIHwgIDIgKy0KIHNyYy9i YWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dyZWNvdmVyeS5jICAgICB8ICA2ICstCiBzcmMv YmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ndXRpbHMuYyAgICAgICAgfCAgMiArLQogc3Jj L2JhY2tlbmQvYmFja3VwL2Jhc2ViYWNrdXAuYyAgICAgICAgICAgICAgIHwgIDYgKy0KIHNy Yy9iYWNrZW5kL2JhY2t1cC9iYXNlYmFja3VwX2NvcHkuYyAgICAgICAgICB8ICAyICstCiBz cmMvYmFja2VuZC9iYWNrdXAvYmFzZWJhY2t1cF9nemlwLmMgICAgICAgICAgfCAgMiArLQog c3JjL2JhY2tlbmQvYmFja3VwL2Jhc2ViYWNrdXBfaW5jcmVtZW50YWwuYyAgIHwgIDYgKy0K IHNyYy9iYWNrZW5kL2JhY2t1cC9iYXNlYmFja3VwX2x6NC5jICAgICAgICAgICB8ICAyICst CiBzcmMvYmFja2VuZC9iYWNrdXAvYmFzZWJhY2t1cF9wcm9ncmVzcy5jICAgICAgfCAgMiAr LQogc3JjL2JhY2tlbmQvYmFja3VwL2Jhc2ViYWNrdXBfc2VydmVyLmMgICAgICAgIHwgIDIg Ky0KIHNyYy9iYWNrZW5kL2JhY2t1cC9iYXNlYmFja3VwX3RhcmdldC5jICAgICAgICB8ICA0 ICstCiBzcmMvYmFja2VuZC9iYWNrdXAvYmFzZWJhY2t1cF90aHJvdHRsZS5jICAgICAgfCAg MiArLQogc3JjL2JhY2tlbmQvYmFja3VwL2Jhc2ViYWNrdXBfenN0ZC5jICAgICAgICAgIHwg IDIgKy0KIHNyYy9iYWNrZW5kL2JhY2t1cC93YWxzdW1tYXJ5LmMgICAgICAgICAgICAgICB8 ICAyICstCiBzcmMvYmFja2VuZC9ib290c3RyYXAvYm9vdHN0cmFwLmMgICAgICAgICAgICAg fCAgNiArLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9kZXBlbmRlbmN5LmMgICAgICAgICAgICAg IHwgIDggKy0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvaGVhcC5jICAgICAgICAgICAgICAgICAg ICB8ICA4ICstCiBzcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMgICAgICAgICAgICAgICAg ICAgfCAgOCArLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9uYW1lc3BhY2UuYyAgICAgICAgICAg ICAgIHwgIDQgKy0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvb2JqZWN0YWRkcmVzcy5jICAgICAg ICAgICB8ICA0ICstCiBzcmMvYmFja2VuZC9jYXRhbG9nL3BnX2NvbnN0cmFpbnQuYyAgICAg ICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19kZXBlbmQuYyAgICAgICAg ICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvcGdfZW51bS5jICAgICAgICAg ICAgICAgICB8ICA2ICstCiBzcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMg ICAgICAgICAgfCAgNiArLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19zaGRlcGVuZC5jICAg ICAgICAgICAgIHwgIDQgKy0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9u LmMgICAgICAgICB8ICA0ICstCiBzcmMvYmFja2VuZC9jYXRhbG9nL3N0b3JhZ2UuYyAgICAg ICAgICAgICAgICAgfCAxMCArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvYW5hbHl6ZS5jICAg ICAgICAgICAgICAgIHwgIDYgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2NsdXN0ZXIuYyAg ICAgICAgICAgICAgICB8ICA0ICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5LmMgICAg ICAgICAgICAgICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weWZyb20u YyAgICAgICAgICAgICAgIHwgIDQgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5j ICAgICAgICAgICAgICAgICB8ICA0ICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9jcmVhdGVh cy5jICAgICAgICAgICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvZGJjb21t YW5kcy5jICAgICAgICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2V2ZW50 X3RyaWdnZXIuYyAgICAgICAgICB8IDI0ICsrLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9l eHBsYWluLmMgICAgICAgICAgICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMv ZXhwbGFpbl9kci5jICAgICAgICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRz L2V4cGxhaW5fc3RhdGUuYyAgICAgICAgICB8ICA3ICstCiBzcmMvYmFja2VuZC9jb21tYW5k cy9leHRlbnNpb24uYyAgICAgICAgICAgICAgfCAgNCArLQogc3JjL2JhY2tlbmQvY29tbWFu ZHMvZnVuY3Rpb25jbWRzLmMgICAgICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL2NvbW1h bmRzL21hdHZpZXcuYyAgICAgICAgICAgICAgICB8ICA0ICstCiBzcmMvYmFja2VuZC9jb21t YW5kcy9vcGNsYXNzY21kcy5jICAgICAgICAgICAgfCAxMiArLS0KIHNyYy9iYWNrZW5kL2Nv bW1hbmRzL3BvbGljeS5jICAgICAgICAgICAgICAgICB8ICA2ICstCiBzcmMvYmFja2VuZC9j b21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYyAgICAgICAgfCAgNiArLQogc3JjL2JhY2tlbmQv Y29tbWFuZHMvc2VjbGFiZWwuYyAgICAgICAgICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5k L2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYyAgICAgICB8ICA0ICstCiBzcmMvYmFja2Vu ZC9jb21tYW5kcy90YWJsZWNtZHMuYyAgICAgICAgICAgICAgfCAzNiArKystLS0tCiBzcmMv YmFja2VuZC9jb21tYW5kcy90cmlnZ2VyLmMgICAgICAgICAgICAgICAgfCAgOCArLQogc3Jj L2JhY2tlbmQvY29tbWFuZHMvdHNlYXJjaGNtZHMuYyAgICAgICAgICAgIHwgIDggKy0KIHNy Yy9iYWNrZW5kL2NvbW1hbmRzL3R5cGVjbWRzLmMgICAgICAgICAgICAgICB8ICA0ICstCiBz cmMvYmFja2VuZC9jb21tYW5kcy91c2VyLmMgICAgICAgICAgICAgICAgICAgfCAgNCArLQog c3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYyAgICAgICAgIHwgIDYgKy0K IHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHByLmMgICAgICAgICAgICAgICB8IDk0ICsr KysrKysrKy0tLS0tLS0tLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNHcm91cGluZy5j ICAgICAgICAgICB8ICAyICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjSW5kZXhpbmcu YyAgICAgICAgICAgfCAgNCArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYyAg ICAgICAgICAgICAgIHwgMTggKystLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFs bGVsLmMgICAgICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0 aXRpb24uYyAgICAgICAgICB8IDI4ICsrKy0tLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhl Y1JlcGxpY2F0aW9uLmMgICAgICAgIHwgIDggKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNUdXBsZXMuYyAgICAgICAgICAgICB8ICA0ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9m dW5jdGlvbnMuYyAgICAgICAgICAgICAgfCAgNCArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZUFnZy5jICAgICAgICAgICAgICAgIHwgNDIgKysrKy0tLS0tCiBzcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlQXBwZW5kLmMgICAgICAgICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZUZ1bmN0aW9uc2Nhbi5jICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVHYXRoZXJNZXJnZS5jICAgICAgICB8ICA2ICstCiBzcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlSGFzaGpvaW4uYyAgICAgICAgICAgfCAgNSArLQogc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZUluZGV4b25seXNjYW4uYyAgICAgIHwgIDMgKy0KIHNyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVJbmRleHNjYW4uYyAgICAgICAgICB8ICA4ICstCiBzcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlTWVtb2l6ZS5jICAgICAgICAgICAgfCAgNCArLQogc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlQXBwZW5kLmMgICAgICAgIHwgIDYgKy0KIHNyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jICAgICAgICB8IDEzICstLQogc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVByb2plY3RTZXQuYyAgICAgICAgIHwgIDYgKy0KIHNy Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTYW1wbGVzY2FuLmMgICAgICAgICB8ICAyICstCiBz cmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGFibGVGdW5jc2Nhbi5jICAgICAgfCAgNCArLQog c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVRpZHJhbmdlc2Nhbi5jICAgICAgIHwgIDIgKy0K IHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUaWRzY2FuLmMgICAgICAgICAgICB8ICAyICst CiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlV2luZG93QWdnLmMgICAgICAgICAgfCAxMiAr LS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL3NwaS5jICAgICAgICAgICAgICAgICAgICB8IDIx ICsrLS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci90cXVldWUuYyAgICAgICAgICAgICAgICAg fCAgNCArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvdHN0b3JlUmVjZWl2ZXIuYyAgICAgICAg IHwgIDIgKy0KIHNyYy9iYWNrZW5kL2ZvcmVpZ24vZm9yZWlnbi5jICAgICAgICAgICAgICAg ICB8IDEwICstCiBzcmMvYmFja2VuZC9qaXQvbGx2bS9sbHZtaml0LmMgICAgICAgICAgICAg ICAgfCAgNiArLQogc3JjL2JhY2tlbmQvaml0L2xsdm0vbGx2bWppdF9kZWZvcm0uYyAgICAg ICAgIHwgMTIgKy0tCiBzcmMvYmFja2VuZC9qaXQvbGx2bS9sbHZtaml0X2V4cHIuYyAgICAg ICAgICAgfCAxMCArLQogc3JjL2JhY2tlbmQvbGliL2JpcGFydGl0ZV9tYXRjaC5jICAgICAg ICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL2xpYi9kc2hhc2guYyAgICAgICAgICAgICAg ICAgICAgICB8ICA0ICstCiBzcmMvYmFja2VuZC9saWIvaW50ZWdlcnNldC5jICAgICAgICAg ICAgICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvbGliL3BhaXJpbmdoZWFwLmMgICAgICAg ICAgICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL2xpYi9yYnRyZWUuYyAgICAgICAgICAg ICAgICAgICAgICB8ICAyICstCiBzcmMvYmFja2VuZC9saWJwcS9hdXRoLW9hdXRoLmMgICAg ICAgICAgICAgICAgfCAgOCArLQogc3JjL2JhY2tlbmQvbGlicHEvYXV0aC1zY3JhbS5jICAg ICAgICAgICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL2xpYnBxL2hiYS5jICAgICAgICAg ICAgICAgICAgICAgICB8IDEwICstCiBzcmMvYmFja2VuZC9saWJwcS9wcWNvbW0uYyAgICAg ICAgICAgICAgICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMg ICAgICAgICAgICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL25vZGVzL3F1ZXJ5anVtYmxl ZnVuY3MuYyAgICAgICAgICB8ICAyICstCiBzcmMvYmFja2VuZC9ub2Rlcy90aWRiaXRtYXAu YyAgICAgICAgICAgICAgICAgfCAgNCArLQogc3JjL2JhY2tlbmQvb3B0aW1pemVyL2dlcW8v Z2Vxb19lcnguYyAgICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL29wdGltaXplci9nZXFv L2dlcW9fZXZhbC5jICAgICAgICB8ICAyICstCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvZ2Vx by9nZXFvX3BteC5jICAgICAgICAgfCAgOCArLQogc3JjL2JhY2tlbmQvb3B0aW1pemVyL2dl cW8vZ2Vxb19wb29sLmMgICAgICAgIHwgMTAgKy0KIC4uLi9vcHRpbWl6ZXIvZ2Vxby9nZXFv X3JlY29tYmluYXRpb24uYyAgICAgICB8ICAyICstCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIv cGF0aC9jbGF1c2VzZWwuYyAgICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvb3B0aW1pemVy L3BhdGgvY29zdHNpemUuYyAgICAgICAgIHwgIDQgKy0KIHNyYy9iYWNrZW5kL29wdGltaXpl ci9wYXRoL2luZHhwYXRoLmMgICAgICAgICB8ICA3ICstCiBzcmMvYmFja2VuZC9vcHRpbWl6 ZXIvcGF0aC9qb2lucmVscy5jICAgICAgICAgfCAgMyArLQogc3JjL2JhY2tlbmQvb3B0aW1p emVyL3BsYW4vYW5hbHl6ZWpvaW5zLmMgICAgIHwgIDMgKy0KIHNyYy9iYWNrZW5kL29wdGlt aXplci9wbGFuL2NyZWF0ZXBsYW4uYyAgICAgICB8IDM0ICsrKy0tLS0KIHNyYy9iYWNrZW5k L29wdGltaXplci9wbGFuL2luaXRzcGxhbi5jICAgICAgICB8ICA2ICstCiBzcmMvYmFja2Vu ZC9vcHRpbWl6ZXIvcGxhbi9wbGFuYWdnLmMgICAgICAgICAgfCAgMiArLQogc3JjL2JhY2tl bmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jICAgICAgICAgIHwgIDUgKy0KIHNyYy9iYWNr ZW5kL29wdGltaXplci9wbGFuL3NldHJlZnMuYyAgICAgICAgICB8ICA2ICstCiBzcmMvYmFj a2VuZC9vcHRpbWl6ZXIvcHJlcC9wcmVwam9pbnRyZWUuYyAgICAgfCAgNyArLQogc3JjL2Jh Y2tlbmQvb3B0aW1pemVyL3ByZXAvcHJlcHVuaW9uLmMgICAgICAgIHwgIDIgKy0KIHNyYy9i YWNrZW5kL29wdGltaXplci91dGlsL2FwcGVuZGluZm8uYyAgICAgICB8ICAzICstCiBzcmMv YmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9jbGF1c2VzLmMgICAgICAgICAgfCAgNiArLQogc3Jj L2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvZXh0ZW5kcGxhbi5jICAgICAgIHwgMTUgKy0tCiBz cmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wbGFuY2F0LmMgICAgICAgICAgfCA0NSArKysr Ky0tLS0KIHNyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3ByZWR0ZXN0LmMgICAgICAgICB8 ICA0ICstCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9yZWxub2RlLmMgICAgICAgICAg fCAxNCArLS0KIHNyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3RsaXN0LmMgICAgICAgICAg ICB8IDEyICstLQogc3JjL2JhY2tlbmQvcGFyc2VyL2FuYWx5emUuYyAgICAgICAgICAgICAg ICAgIHwgIDUgKy0KIHNyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgICAgICAgICAgICAgICAg ICAgICB8IDkyICsrKysrKysrKy0tLS0tLS0tLQogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNl X2NsYXVzZS5jICAgICAgICAgICAgIHwgIDQgKy0KIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJz ZV9leHByLmMgICAgICAgICAgICAgICB8ICA0ICstCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFy c2Vfbm9kZS5jICAgICAgICAgICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvcGFyc2VyL3Bh cnNlX3BhcmFtLmMgICAgICAgICAgICAgIHwgIDQgKy0KIHNyYy9iYWNrZW5kL3BhcnNlci9w YXJzZV9yZWxhdGlvbi5jICAgICAgICAgICB8IDEwICstCiBzcmMvYmFja2VuZC9wYXJzZXIv cGFyc2VfdHlwZS5jICAgICAgICAgICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvcGFydGl0 aW9uaW5nL3BhcnRib3VuZHMuYyAgICAgICAgIHwgNTMgKysrKystLS0tLS0KIHNyYy9iYWNr ZW5kL3BhcnRpdGlvbmluZy9wYXJ0ZGVzYy5jICAgICAgICAgICB8ICAyICstCiBzcmMvYmFj a2VuZC9wYXJ0aXRpb25pbmcvcGFydHBydW5lLmMgICAgICAgICAgfCAyNCArKy0tLQogc3Jj L2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMgICAgICAgICAgIHwgIDYgKy0KIHNy Yy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYmd3b3JrZXIuYyAgICAgICAgICAgICB8ICAyICstCiBz cmMvYmFja2VuZC9wb3N0bWFzdGVyL2NoZWNrcG9pbnRlci5jICAgICAgICAgfCAgMiArLQog c3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9sYXVuY2hfYmFja2VuZC5jICAgICAgIHwgIDIgKy0K IHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvcGdhcmNoLmMgICAgICAgICAgICAgICB8ICA0ICst CiBzcmMvYmFja2VuZC9wb3N0bWFzdGVyL3Bvc3RtYXN0ZXIuYyAgICAgICAgICAgfCAgMiAr LQogc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9zeXNsb2dnZXIuYyAgICAgICAgICAgIHwgIDIg Ky0KIHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvd2Fsc3VtbWFyaXplci5jICAgICAgICB8ICAz ICstCiAuLi4vbGlicHF3YWxyZWNlaXZlci9saWJwcXdhbHJlY2VpdmVyLmMgICAgICAgfCAg NCArLQogLi4uL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jIHwg IDIgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYyAgICB8 ICAyICstCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xvZ2ljYWwuYyAgICAg fCAgMiArLQogLi4uL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbGZ1bmNzLmMgICAgICAg IHwgIDIgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcHJvdG8uYyAgICAg ICB8ICA4ICstCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3JlbGF0aW9uLmMg ICAgfCAgOCArLQogLi4uL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jICAg ICAgIHwgMTcgKystLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9zbG90c3lu Yy5jICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvc25hcGJ1 aWxkLmMgICB8ICA1ICstCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3N5bmN1 dGlscy5jICAgfCAgMiArLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3Jr ZXIuYyAgICAgIHwgIDYgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bn b3V0cHV0LmMgICB8ICA0ICstCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zeW5jcmVwLmMg ICAgICAgICAgICAgfCAgOSArLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2FscmVjZWl2 ZXIuYyAgICAgICAgIHwgIDQgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRl ci5jICAgICAgICAgICB8ICAyICstCiBzcmMvYmFja2VuZC9yZXdyaXRlL3Jld3JpdGVIYW5k bGVyLmMgICAgICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvcmV3cml0ZS9yZXdyaXRlTWFu aXAuYyAgICAgICAgICAgIHwgIDYgKy0KIHNyYy9iYWNrZW5kL3Nub3diYWxsL2RpY3Rfc25v d2JhbGwuYyAgICAgICAgICB8ICA0ICstCiBzcmMvYmFja2VuZC9zdGF0aXN0aWNzL2RlcGVu ZGVuY2llcy5jICAgICAgICAgfCAyNiArKystLQogc3JjL2JhY2tlbmQvc3RhdGlzdGljcy9l eHRlbmRlZF9zdGF0cy5jICAgICAgIHwgMTUgKystCiBzcmMvYmFja2VuZC9zdGF0aXN0aWNz L21jdi5jICAgICAgICAgICAgICAgICAgfCAyNCArKy0tLQogc3JjL2JhY2tlbmQvc3RhdGlz dGljcy9tdmRpc3RpbmN0LmMgICAgICAgICAgIHwgMTQgKy0tCiBzcmMvYmFja2VuZC9zdG9y YWdlL2J1ZmZlci9idWZtZ3IuYyAgICAgICAgICAgfCAgOCArLQogc3JjL2JhY2tlbmQvc3Rv cmFnZS9maWxlL2J1ZmZpbGUuYyAgICAgICAgICAgIHwgMTAgKy0KIHNyYy9iYWNrZW5kL3N0 b3JhZ2UvaXBjL3Byb2NhcnJheS5jICAgICAgICAgICB8ICA4ICstCiBzcmMvYmFja2VuZC9z dG9yYWdlL2lwYy9zaG1fbXEuYyAgICAgICAgICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQv c3RvcmFnZS9pcGMvc2htZW0uYyAgICAgICAgICAgICAgIHwgIDYgKy0KIHNyYy9iYWNrZW5k L3N0b3JhZ2UvbG1nci9sb2NrLmMgICAgICAgICAgICAgICB8IDE2ICsrLS0KIHNyYy9iYWNr ZW5kL3N0b3JhZ2UvbG1nci9wcmVkaWNhdGUuYyAgICAgICAgICB8ICA4ICstCiBzcmMvYmFj a2VuZC9zdG9yYWdlL3NtZ3IvYnVsa193cml0ZS5jICAgICAgICAgfCAgMiArLQogc3JjL2Jh Y2tlbmQvc3RvcmFnZS9zbWdyL21kLmMgICAgICAgICAgICAgICAgIHwgIDIgKy0KIHNyYy9i YWNrZW5kL3N0b3JhZ2Uvc21nci9zbWdyLmMgICAgICAgICAgICAgICB8ICAyICstCiBzcmMv YmFja2VuZC9zdG9yYWdlL3N5bmMvc3luYy5jICAgICAgICAgICAgICAgfCAgMiArLQogc3Jj L2JhY2tlbmQvdGNvcC9wcXVlcnkuYyAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIHNy Yy9iYWNrZW5kL3RzZWFyY2gvZGljdC5jICAgICAgICAgICAgICAgICAgICB8ICAyICstCiBz cmMvYmFja2VuZC90c2VhcmNoL2RpY3RfaXNwZWxsLmMgICAgICAgICAgICAgfCAgMiArLQog c3JjL2JhY2tlbmQvdHNlYXJjaC9kaWN0X3NpbXBsZS5jICAgICAgICAgICAgIHwgIDYgKy0K IHNyYy9iYWNrZW5kL3RzZWFyY2gvZGljdF9zeW5vbnltLmMgICAgICAgICAgICB8ICA4ICst CiBzcmMvYmFja2VuZC90c2VhcmNoL2RpY3RfdGhlc2F1cnVzLmMgICAgICAgICAgfCAyNiAr Ky0tLQogc3JjL2JhY2tlbmQvdHNlYXJjaC9zcGVsbC5jICAgICAgICAgICAgICAgICAgIHwg MjIgKystLS0KIHNyYy9iYWNrZW5kL3RzZWFyY2gvdG9fdHNhbnkuYyAgICAgICAgICAgICAg ICB8IDE0ICstLQogc3JjL2JhY2tlbmQvdHNlYXJjaC90c19wYXJzZS5jICAgICAgICAgICAg ICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL3RzZWFyY2gvdHNfc2VsZnVuY3MuYyAgICAgICAg ICAgICB8ICAyICstCiBzcmMvYmFja2VuZC90c2VhcmNoL3RzX3R5cGFuYWx5emUuYyAgICAg ICAgICAgfCAgNiArLQogc3JjL2JhY2tlbmQvdHNlYXJjaC90c191dGlscy5jICAgICAgICAg ICAgICAgIHwgIDQgKy0KIHNyYy9iYWNrZW5kL3RzZWFyY2gvd3BhcnNlci5jICAgICAgICAg ICAgICAgICB8IDE2ICsrLS0KIHNyYy9iYWNrZW5kL3RzZWFyY2gvd3BhcnNlcl9kZWYuYyAg ICAgICAgICAgICB8IDEyICstLQogc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0 X3JlbGF0aW9uLmMgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRf ZXZlbnQuYyAgICAgICB8ICAyICstCiBzcmMvYmFja2VuZC91dGlscy9hZHQvYWNsLmMgICAg ICAgICAgICAgICAgICAgfCAgNiArLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2FycmF5X3Nl bGZ1bmNzLmMgICAgICAgIHwgIDggKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9hcnJheV90 eXBhbmFseXplLmMgICAgICB8ICA3ICstCiBzcmMvYmFja2VuZC91dGlscy9hZHQvYXJyYXlf dXNlcmZ1bmNzLmMgICAgICAgfCAxMiArLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9hcnJh eWZ1bmNzLmMgICAgICAgICAgICB8IDEyICstLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2Fy cmF5c3Vicy5jICAgICAgICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9k YXRlLmMgICAgICAgICAgICAgICAgICB8IDI0ICsrLS0tCiBzcmMvYmFja2VuZC91dGlscy9h ZHQvZGF0ZXRpbWUuYyAgICAgICAgICAgICAgfCAxMCArLQogc3JjL2JhY2tlbmQvdXRpbHMv YWR0L2Zvcm1hdHRpbmcuYyAgICAgICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL3V0aWxz L2FkdC9nZW9fb3BzLmMgICAgICAgICAgICAgICB8IDk0ICsrKysrKysrKy0tLS0tLS0tLS0K IHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9nZW9fc3BnaXN0LmMgICAgICAgICAgICB8IDQwICsr KystLS0tCiBzcmMvYmFja2VuZC91dGlscy9hZHQvaW50LmMgICAgICAgICAgICAgICAgICAg fCAgMiArLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2ludDguYyAgICAgICAgICAgICAgICAg IHwgIDIgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uLmMgICAgICAgICAgICAgICAg ICB8ICA2ICstCiBzcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmIuYyAgICAgICAgICAgICAg ICAgfCAxMiArLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uYl9naW4uYyAgICAgICAg ICAgICB8IDE5ICsrLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uYl91dGlsLmMgICAg ICAgICAgICB8IDIwICsrLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uZnVuY3MuYyAg ICAgICAgICAgICB8IDY0ICsrKysrKy0tLS0tLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9q c29ucGF0aF9leGVjLmMgICAgICAgICB8IDI3ICsrKy0tLQogc3JjL2JhY2tlbmQvdXRpbHMv YWR0L2pzb25wYXRoX2dyYW0ueSAgICAgICAgIHwgIDQgKy0KIHNyYy9iYWNrZW5kL3V0aWxz L2FkdC9sb2NrZnVuY3MuYyAgICAgICAgICAgICB8ICAyICstCiBzcmMvYmFja2VuZC91dGls cy9hZHQvbWFjLmMgICAgICAgICAgICAgICAgICAgfCAxNCArLS0KIHNyYy9iYWNrZW5kL3V0 aWxzL2FkdC9tYWM4LmMgICAgICAgICAgICAgICAgICB8IDE4ICsrLS0KIHNyYy9iYWNrZW5k L3V0aWxzL2FkdC9tY3h0ZnVuY3MuYyAgICAgICAgICAgICB8ICAyICstCiBzcmMvYmFja2Vu ZC91dGlscy9hZHQvbWlzYy5jICAgICAgICAgICAgICAgICAgfCAgMiArLQogc3JjL2JhY2tl bmQvdXRpbHMvYWR0L211bHRpcmFuZ2V0eXBlcy5jICAgICAgIHwgIDggKy0KIC4uLi91dGls cy9hZHQvbXVsdGlyYW5nZXR5cGVzX3NlbGZ1bmNzLmMgICAgICB8ICA0ICstCiBzcmMvYmFj a2VuZC91dGlscy9hZHQvbXVsdGl4YWN0ZnVuY3MuYyAgICAgICAgfCAgMiArLQogc3JjL2Jh Y2tlbmQvdXRpbHMvYWR0L25ldHdvcmsuYyAgICAgICAgICAgICAgIHwgMjQgKystLS0KIHNy Yy9iYWNrZW5kL3V0aWxzL2FkdC9uZXR3b3JrX2dpc3QuYyAgICAgICAgICB8IDEwICstCiBz cmMvYmFja2VuZC91dGlscy9hZHQvbmV0d29ya19zcGdpc3QuYyAgICAgICAgfCAgNiArLQog c3JjL2JhY2tlbmQvdXRpbHMvYWR0L251bWVyaWMuYyAgICAgICAgICAgICAgIHwgMTMgKyst CiBzcmMvYmFja2VuZC91dGlscy9hZHQvb3JkZXJlZHNldGFnZ3MuYyAgICAgICAgfCAgNCAr LQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3BnX2xvY2FsZV9saWJjLmMgICAgICAgIHwgIDYg Ky0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9yYW5nZXR5cGVzLmMgICAgICAgICAgICB8ICAy ICstCiBzcmMvYmFja2VuZC91dGlscy9hZHQvcmFuZ2V0eXBlc19naXN0LmMgICAgICAgfCAx NSArKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9yYW5nZXR5cGVzX3NlbGZ1bmNzLmMgICB8 ICA0ICstCiBzcmMvYmFja2VuZC91dGlscy9hZHQvcmFuZ2V0eXBlc19zcGdpc3QuYyAgICAg fCAxOCArKy0tCiBzcmMvYmFja2VuZC91dGlscy9hZHQvcmFuZ2V0eXBlc190eXBhbmFseXpl LmMgfCAgOCArLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3JlZ2V4cC5jICAgICAgICAgICAg ICAgIHwgMjAgKystLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Jvd3R5cGVzLmMgICAgICAg ICAgICAgIHwgMjQgKystLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYyAg ICAgICAgICAgICB8ICA4ICstCiBzcmMvYmFja2VuZC91dGlscy9hZHQvc2VsZnVuY3MuYyAg ICAgICAgICAgICAgfCAgNCArLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3NraXBzdXBwb3J0 LmMgICAgICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC90aWQuYyAgICAg ICAgICAgICAgICAgICB8ICA2ICstCiBzcmMvYmFja2VuZC91dGlscy9hZHQvdGltZXN0YW1w LmMgICAgICAgICAgICAgfCA0NiArKysrKy0tLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC90 c2dpbmlkeC5jICAgICAgICAgICAgICB8IDEwICstCiBzcmMvYmFja2VuZC91dGlscy9hZHQv dHNnaXN0aWR4LmMgICAgICAgICAgICAgfCAxMCArLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L3RzcXVlcnkuYyAgICAgICAgICAgICAgIHwgMTIgKy0tCiBzcmMvYmFja2VuZC91dGlscy9h ZHQvdHNxdWVyeV9jbGVhbnVwLmMgICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvdXRpbHMv YWR0L3RzcXVlcnlfZ2lzdC5jICAgICAgICAgIHwgIDQgKy0KIHNyYy9iYWNrZW5kL3V0aWxz L2FkdC90c3F1ZXJ5X29wLmMgICAgICAgICAgICB8IDE0ICstLQogc3JjL2JhY2tlbmQvdXRp bHMvYWR0L3RzcXVlcnlfdXRpbC5jICAgICAgICAgIHwgMTggKystLQogc3JjL2JhY2tlbmQv dXRpbHMvYWR0L3RzcmFuay5jICAgICAgICAgICAgICAgIHwgMTMgKystCiBzcmMvYmFja2Vu ZC91dGlscy9hZHQvdHN2ZWN0b3IuYyAgICAgICAgICAgICAgfCAgNCArLQogc3JjL2JhY2tl bmQvdXRpbHMvYWR0L3RzdmVjdG9yX29wLmMgICAgICAgICAgIHwgMTAgKy0KIHNyYy9iYWNr ZW5kL3V0aWxzL2FkdC90c3ZlY3Rvcl9wYXJzZXIuYyAgICAgICB8ICA2ICstCiBzcmMvYmFj a2VuZC91dGlscy9hZHQvdXVpZC5jICAgICAgICAgICAgICAgICAgfCAgNCArLQogc3JjL2Jh Y2tlbmQvdXRpbHMvYWR0L3ZhcmxlbmEuYyAgICAgICAgICAgICAgIHwgIDIgKy0KIHNyYy9i YWNrZW5kL3V0aWxzL2FkdC94bWwuYyAgICAgICAgICAgICAgICAgICB8ICA2ICstCiBzcmMv YmFja2VuZC91dGlscy9jYWNoZS9jYXRjYWNoZS5jICAgICAgICAgICAgfCAgNCArLQogc3Jj L2JhY2tlbmQvdXRpbHMvY2FjaGUvZXZ0Y2FjaGUuYyAgICAgICAgICAgIHwgIDIgKy0KIHNy Yy9iYWNrZW5kL3V0aWxzL2NhY2hlL2ludmFsLmMgICAgICAgICAgICAgICB8ICAyICstCiBz cmMvYmFja2VuZC91dGlscy9jYWNoZS9sc3lzY2FjaGUuYyAgICAgICAgICAgfCAgNiArLQog c3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcGFydGNhY2hlLmMgICAgICAgICAgIHwgMjQgKyst LS0KIHNyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3BsYW5jYWNoZS5jICAgICAgICAgICB8IDE1 ICsrLQogc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYyAgICAgICAgICAgIHwg MzAgKysrLS0tCiBzcmMvYmFja2VuZC91dGlscy9jYWNoZS90eXBjYWNoZS5jICAgICAgICAg ICAgfCAgMiArLQogc3JjL2JhY2tlbmQvdXRpbHMvZXJyb3IvZWxvZy5jICAgICAgICAgICAg ICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2ZtZ3IvZnVuY2FwaS5jICAgICAgICAg ICAgICB8ICAyICstCiBzcmMvYmFja2VuZC91dGlscy9pbml0L3Bvc3Rpbml0LmMgICAgICAg ICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvdXRpbHMvbWIvbWJ1dGlscy5jICAgICAgICAg ICAgICAgIHwgIDQgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL21pc2MvY29uZmZpbGVzLmMgICAg ICAgICAgICB8ICAyICstCiBzcmMvYmFja2VuZC91dGlscy9taXNjL2d1Yy1maWxlLmwgICAg ICAgICAgICAgfCAgNCArLQogc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWMuYyAgICAgICAg ICAgICAgICAgIHwgIDQgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL21pc2MvaW5qZWN0aW9uX3Bv aW50LmMgICAgICB8ICAyICstCiBzcmMvYmFja2VuZC91dGlscy9taXNjL3F1ZXJ5ZW52aXJv bm1lbnQuYyAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy90enBhcnNlci5j ICAgICAgICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL21tZ3IvZHNhLmMgICAg ICAgICAgICAgICAgICB8ICA0ICstCiBzcmMvYmFja2VuZC91dGlscy9tbWdyL21jeHQuYyAg ICAgICAgICAgICAgICAgfCAgNSArCiBzcmMvYmFja2VuZC91dGlscy9zb3J0L2xvZ3RhcGUu YyAgICAgICAgICAgICAgfCAgNiArLQogc3JjL2JhY2tlbmQvdXRpbHMvc29ydC9zaGFyZWR0 dXBsZXN0b3JlLmMgICAgIHwgIDQgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL3NvcnQvdHVwbGVz b3J0LmMgICAgICAgICAgICB8ICAyICstCiBzcmMvYmFja2VuZC91dGlscy9zb3J0L3R1cGxl c29ydHZhcmlhbnRzLmMgICAgfCAxMiArLS0KIHNyYy9iYWNrZW5kL3V0aWxzL3NvcnQvdHVw bGVzdG9yZS5jICAgICAgICAgICB8ICAyICstCiBzcmMvYmFja2VuZC91dGlscy90aW1lL3Nu YXBtZ3IuYyAgICAgICAgICAgICAgfCAgMiArLQogc3JjL2Jpbi9wZ19iYXNlYmFja3VwL2Fz dHJlYW1lcl9pbmplY3QuYyAgICAgIHwgIDIgKy0KIHNyYy9iaW4vcGdfY29tYmluZWJhY2t1 cC9sb2FkX21hbmlmZXN0LmMgICAgICB8ICAyICstCiBzcmMvYmluL3BnX2R1bXAvY29tbW9u LmMgICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQogc3JjL2Jpbi9wZ19kdW1wL2R1bXB1 dGlscy5jICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIHNyYy9iaW4vcGdfdmVyaWZ5YmFj a3VwL2FzdHJlYW1lcl92ZXJpZnkuYyAgICB8ICAyICstCiBzcmMvYmluL3BnX3ZlcmlmeWJh Y2t1cC9wZ192ZXJpZnliYWNrdXAuYyAgICAgfCAgMiArLQogc3JjL2Jpbi9zY3JpcHRzL3Zh Y3V1bWluZy5jICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIHNyYy9jb21tb24vYmxrcmVm dGFibGUuYyAgICAgICAgICAgICAgICAgICAgICB8IDIxICsrLS0tCiBzcmMvY29tbW9uL3Bh cnNlX21hbmlmZXN0LmMgICAgICAgICAgICAgICAgICAgfCAgNCArLQogc3JjL2NvbW1vbi9w Z2ZuYW1lcy5jICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDUgKy0KIHNyYy9jb21tb24v cm10cmVlLmMgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAyICstCiBzcmMvY29tbW9u L3N0cmluZ2luZm8uYyAgICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQogc3JjL2ZlX3V0 aWxzL2FzdHJlYW1lcl9maWxlLmMgICAgICAgICAgICAgICAgIHwgIDQgKy0KIHNyYy9mZV91 dGlscy9hc3RyZWFtZXJfZ3ppcC5jICAgICAgICAgICAgICAgICB8ICA0ICstCiBzcmMvZmVf dXRpbHMvYXN0cmVhbWVyX2x6NC5jICAgICAgICAgICAgICAgICAgfCAgNCArLQogc3JjL2Zl X3V0aWxzL2FzdHJlYW1lcl90YXIuYyAgICAgICAgICAgICAgICAgIHwgIDYgKy0KIHNyYy9m ZV91dGlscy9hc3RyZWFtZXJfenN0ZC5jICAgICAgICAgICAgICAgICB8ICA0ICstCiBzcmMv aW5jbHVkZS9saWIvcmFkaXh0cmVlLmggICAgICAgICAgICAgICAgICAgfCAgOCArLQogc3Jj L3BsL3BscGVybC9wbHBlcmwuYyAgICAgICAgICAgICAgICAgICAgICAgIHwgMTIgKy0tCiBz cmMvcGwvcGxwZ3NxbC9zcmMvcGxfY29tcC5jICAgICAgICAgICAgICAgICAgfCAzMiArKyst LS0tCiBzcmMvcGwvcGxwZ3NxbC9zcmMvcGxfZXhlYy5jICAgICAgICAgICAgICAgICAgfCAg OSArLQogc3JjL3BsL3BscGdzcWwvc3JjL3BsX2dyYW0ueSAgICAgICAgICAgICAgICAgIHwg OTIgKysrKysrKysrLS0tLS0tLS0tCiBzcmMvcGwvcGxweXRob24vcGxweV9wcm9jZWR1cmUu YyAgICAgICAgICAgICAgfCAgNiArLQogc3JjL3BsL3BscHl0aG9uL3BscHlfc3BpLmMgICAg ICAgICAgICAgICAgICAgIHwgIDQgKy0KIHNyYy9wbC9wbHB5dGhvbi9wbHB5X3R5cGVpby5j ICAgICAgICAgICAgICAgICB8IDEyICstLQogc3JjL3BsL3RjbC9wbHRjbC5jICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgIDQgKy0KIC4uLi9tb2R1bGVzL2R1bW15X2luZGV4X2Ft L2R1bW15X2luZGV4X2FtLmMgICB8ICAyICstCiAuLi4vbW9kdWxlcy9zcGdpc3RfbmFtZV9v cHMvc3BnaXN0X25hbWVfb3BzLmMgfCAxMCArLQogLi4uL21vZHVsZXMvdGVzdF9iaXRtYXBz ZXQvdGVzdF9iaXRtYXBzZXQuYyAgIHwgIDIgKy0KIC4uLi9tb2R1bGVzL3Rlc3RfaW50ZWdl cnNldC90ZXN0X2ludGVnZXJzZXQuYyB8ICAyICstCiAuLi4vdGVzdF9qc29uX3BhcnNlcl9p bmNyZW1lbnRhbC5jICAgICAgICAgICAgfCAgMiArLQogc3JjL3Rlc3QvbW9kdWxlcy90ZXN0 X3BhcnNlci90ZXN0X3BhcnNlci5jICAgIHwgIDQgKy0KIC4uLi9tb2R1bGVzL3Rlc3RfcmFk aXh0cmVlL3Rlc3RfcmFkaXh0cmVlLmMgICB8ICAyICstCiBzcmMvdGVzdC9tb2R1bGVzL3Rl c3RfcmJ0cmVlL3Rlc3RfcmJ0cmVlLmMgICAgfCAgMiArLQogc3JjL3Rlc3QvbW9kdWxlcy90 ZXN0X3JlZ2V4L3Rlc3RfcmVnZXguYyAgICAgIHwgMTQgKystCiAuLi4vdGVzdF9yZXNvd25l ci90ZXN0X3Jlc293bmVyX21hbnkuYyAgICAgICAgfCAgMiArLQogLi4uL21vZHVsZXMvdGVz dF9ybHNfaG9va3MvdGVzdF9ybHNfaG9va3MuYyAgIHwgIDQgKy0KIHNyYy90ZXN0L21vZHVs ZXMvd29ya2VyX3NwaS93b3JrZXJfc3BpLmMgICAgICB8ICAyICstCiBzcmMvdGVzdC9yZWdy ZXNzL3JlZ3Jlc3MuYyAgICAgICAgICAgICAgICAgICAgfCAgMiArLQogc3JjL3RpbWV6b25l L3BndHouYyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIHNyYy90dXRvcmlh bC9jb21wbGV4LmMgICAgICAgICAgICAgICAgICAgICAgICB8ICA2ICstCiBzcmMvdHV0b3Jp YWwvZnVuY3MuYyAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQogNDY5IGZpbGVz IGNoYW5nZWQsIDE3NzcgaW5zZXJ0aW9ucygrKSwgMTg4OSBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9jb250cmliL2FtY2hlY2svdmVyaWZ5X2dpbi5jIGIvY29udHJpYi9hbWNoZWNr L3ZlcmlmeV9naW4uYwppbmRleCA1YzNlYjRkMGZkNC4uNjk2YTExNzZhNjMgMTAwNjQ0Ci0t LSBhL2NvbnRyaWIvYW1jaGVjay92ZXJpZnlfZ2luLmMKKysrIGIvY29udHJpYi9hbWNoZWNr L3ZlcmlmeV9naW4uYwpAQCAtMTE3LDcgKzExNyw3IEBAIGdpblJlYWRUdXBsZVdpdGhvdXRT dGF0ZShJbmRleFR1cGxlIGl0dXAsIGludCAqbml0ZW1zKQogCX0KIAllbHNlCiAJewotCQlp cGQgPSAoSXRlbVBvaW50ZXIpIHBhbGxvYyhzaXplb2YoSXRlbVBvaW50ZXJEYXRhKSAqIG5p cGQpOworCQlpcGQgPSBwYWxsb2NfYXJyYXkoSXRlbVBvaW50ZXJEYXRhLCBuaXBkKTsKIAkJ bWVtY3B5KGlwZCwgcHRyLCBzaXplb2YoSXRlbVBvaW50ZXJEYXRhKSAqIG5pcGQpOwogCX0K IAkqbml0ZW1zID0gbmlwZDsKQEAgLTE1Miw3ICsxNTIsNyBAQCBnaW5fY2hlY2tfcG9zdGlu Z190cmVlX3BhcmVudF9rZXlzX2NvbnNpc3RlbmN5KFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1i ZXIgcG9zdGluZwogCWxlYWZkZXB0aCA9IC0xOwogCiAJLyogU3RhcnQgdGhlIHNjYW4gYXQg dGhlIHJvb3QgcGFnZSAqLwotCXN0YWNrID0gKEdpblBvc3RpbmdUcmVlU2Nhbkl0ZW0gKikg cGFsbG9jMChzaXplb2YoR2luUG9zdGluZ1RyZWVTY2FuSXRlbSkpOworCXN0YWNrID0gcGFs bG9jMF9vYmplY3QoR2luUG9zdGluZ1RyZWVTY2FuSXRlbSk7CiAJc3RhY2stPmRlcHRoID0g MDsKIAlJdGVtUG9pbnRlclNldEludmFsaWQoJnN0YWNrLT5wYXJlbnRrZXkpOwogCXN0YWNr LT5wYXJlbnRibGsgPSBJbnZhbGlkQmxvY2tOdW1iZXI7CkBAIC0zNTQsNyArMzU0LDcgQEAg Z2luX2NoZWNrX3Bvc3RpbmdfdHJlZV9wYXJlbnRfa2V5c19jb25zaXN0ZW5jeShSZWxhdGlv biByZWwsIEJsb2NrTnVtYmVyIHBvc3RpbmcKIAkJCQkJCQkJCXN0YWNrLT5ibGtubywgaSkp KTsKIAogCQkJCS8qIFRoaXMgaXMgYW4gaW50ZXJuYWwgcGFnZSwgcmVjdXJzZSBpbnRvIHRo ZSBjaGlsZC4gKi8KLQkJCQlwdHIgPSAoR2luUG9zdGluZ1RyZWVTY2FuSXRlbSAqKSBwYWxs b2Moc2l6ZW9mKEdpblBvc3RpbmdUcmVlU2Nhbkl0ZW0pKTsKKwkJCQlwdHIgPSBwYWxsb2Nf b2JqZWN0KEdpblBvc3RpbmdUcmVlU2Nhbkl0ZW0pOwogCQkJCXB0ci0+ZGVwdGggPSBzdGFj ay0+ZGVwdGggKyAxOwogCiAJCQkJLyoKQEAgLTQxMiw3ICs0MTIsNyBAQCBnaW5fY2hlY2tf cGFyZW50X2tleXNfY29uc2lzdGVuY3koUmVsYXRpb24gcmVsLAogCWxlYWZkZXB0aCA9IC0x OwogCiAJLyogU3RhcnQgdGhlIHNjYW4gYXQgdGhlIHJvb3QgcGFnZSAqLwotCXN0YWNrID0g KEdpblNjYW5JdGVtICopIHBhbGxvYzAoc2l6ZW9mKEdpblNjYW5JdGVtKSk7CisJc3RhY2sg PSBwYWxsb2MwX29iamVjdChHaW5TY2FuSXRlbSk7CiAJc3RhY2stPmRlcHRoID0gMDsKIAlz dGFjay0+cGFyZW50dHVwID0gTlVMTDsKIAlzdGFjay0+cGFyZW50YmxrID0gSW52YWxpZEJs b2NrTnVtYmVyOwpAQCAtNDczLDcgKzQ3Myw3IEBAIGdpbl9jaGVja19wYXJlbnRfa2V5c19j b25zaXN0ZW5jeShSZWxhdGlvbiByZWwsCiAKIAkJCQllbG9nKERFQlVHMywgInNwbGl0IGRl dGVjdGVkIGZvciBibGs6ICV1LCBwYXJlbnQgYmxrOiAldSIsIHN0YWNrLT5ibGtubywgc3Rh Y2stPnBhcmVudGJsayk7CiAKLQkJCQlwdHIgPSAoR2luU2Nhbkl0ZW0gKikgcGFsbG9jKHNp emVvZihHaW5TY2FuSXRlbSkpOworCQkJCXB0ciA9IHBhbGxvY19vYmplY3QoR2luU2Nhbkl0 ZW0pOwogCQkJCXB0ci0+ZGVwdGggPSBzdGFjay0+ZGVwdGg7CiAJCQkJcHRyLT5wYXJlbnR0 dXAgPSBDb3B5SW5kZXhUdXBsZShzdGFjay0+cGFyZW50dHVwKTsKIAkJCQlwdHItPnBhcmVu dGJsayA9IHN0YWNrLT5wYXJlbnRibGs7CkBAIC02MDEsNyArNjAxLDcgQEAgZ2luX2NoZWNr X3BhcmVudF9rZXlzX2NvbnNpc3RlbmN5KFJlbGF0aW9uIHJlbCwKIAkJCXsKIAkJCQlHaW5T Y2FuSXRlbSAqcHRyOwogCi0JCQkJcHRyID0gKEdpblNjYW5JdGVtICopIHBhbGxvYyhzaXpl b2YoR2luU2Nhbkl0ZW0pKTsKKwkJCQlwdHIgPSBwYWxsb2Nfb2JqZWN0KEdpblNjYW5JdGVt KTsKIAkJCQlwdHItPmRlcHRoID0gc3RhY2stPmRlcHRoICsgMTsKIAkJCQkvKiBsYXN0IHR1 cGxlIGluIGxheWVyIGhhcyBubyBoaWdoIGtleSAqLwogCQkJCWlmIChpID09IG1heG9mZiAm JiByaWdodGxpbmsgPT0gSW52YWxpZEJsb2NrTnVtYmVyKQpkaWZmIC0tZ2l0IGEvY29udHJp Yi9hbWNoZWNrL3ZlcmlmeV9oZWFwYW0uYyBiL2NvbnRyaWIvYW1jaGVjay92ZXJpZnlfaGVh cGFtLmMKaW5kZXggNDk2M2U5MjQ1Y2IuLmEwOTBlMThjNjk3IDEwMDY0NAotLS0gYS9jb250 cmliL2FtY2hlY2svdmVyaWZ5X2hlYXBhbS5jCisrKyBiL2NvbnRyaWIvYW1jaGVjay92ZXJp ZnlfaGVhcGFtLmMKQEAgLTE4MzgsNyArMTgzOCw3IEBAIGNoZWNrX3R1cGxlX2F0dHJpYnV0 ZShIZWFwQ2hlY2tDb250ZXh0ICpjdHgpCiAJewogCQlUb2FzdGVkQXR0cmlidXRlICp0YTsK IAotCQl0YSA9IChUb2FzdGVkQXR0cmlidXRlICopIHBhbGxvYzAoc2l6ZW9mKFRvYXN0ZWRB dHRyaWJ1dGUpKTsKKwkJdGEgPSBwYWxsb2MwX29iamVjdChUb2FzdGVkQXR0cmlidXRlKTsK IAogCQlWQVJBVFRfRVhURVJOQUxfR0VUX1BPSU5URVIodGEtPnRvYXN0X3BvaW50ZXIsIGF0 dHIpOwogCQl0YS0+Ymxrbm8gPSBjdHgtPmJsa25vOwpkaWZmIC0tZ2l0IGEvY29udHJpYi9h bWNoZWNrL3ZlcmlmeV9uYnRyZWUuYyBiL2NvbnRyaWIvYW1jaGVjay92ZXJpZnlfbmJ0cmVl LmMKaW5kZXggMDk0OWM4ODk4M2EuLmJkODBmODYxNTdjIDEwMDY0NAotLS0gYS9jb250cmli L2FtY2hlY2svdmVyaWZ5X25idHJlZS5jCisrKyBiL2NvbnRyaWIvYW1jaGVjay92ZXJpZnlf bmJ0cmVlLmMKQEAgLTQwMCw3ICs0MDAsNyBAQCBidF9jaGVja19ldmVyeV9sZXZlbChSZWxh dGlvbiByZWwsIFJlbGF0aW9uIGhlYXByZWwsIGJvb2wgaGVhcGtleXNwYWNlLAogCS8qCiAJ ICogSW5pdGlhbGl6ZSBzdGF0ZSBmb3IgZW50aXJlIHZlcmlmaWNhdGlvbiBvcGVyYXRpb24K IAkgKi8KLQlzdGF0ZSA9IHBhbGxvYzAoc2l6ZW9mKEJ0cmVlQ2hlY2tTdGF0ZSkpOworCXN0 YXRlID0gcGFsbG9jMF9vYmplY3QoQnRyZWVDaGVja1N0YXRlKTsKIAlzdGF0ZS0+cmVsID0g cmVsOwogCXN0YXRlLT5oZWFwcmVsID0gaGVhcHJlbDsKIAlzdGF0ZS0+aGVhcGtleXNwYWNl ID0gaGVhcGtleXNwYWNlOwpkaWZmIC0tZ2l0IGEvY29udHJpYi9iYXNlYmFja3VwX3RvX3No ZWxsL2Jhc2ViYWNrdXBfdG9fc2hlbGwuYyBiL2NvbnRyaWIvYmFzZWJhY2t1cF90b19zaGVs bC9iYXNlYmFja3VwX3RvX3NoZWxsLmMKaW5kZXggODcyMGY1YTQzNzIuLjM0NWQzZWQ4OTVk IDEwMDY0NAotLS0gYS9jb250cmliL2Jhc2ViYWNrdXBfdG9fc2hlbGwvYmFzZWJhY2t1cF90 b19zaGVsbC5jCisrKyBiL2NvbnRyaWIvYmFzZWJhY2t1cF90b19zaGVsbC9iYXNlYmFja3Vw X3RvX3NoZWxsLmMKQEAgLTEzNiw3ICsxMzYsNyBAQCBzaGVsbF9nZXRfc2luayhiYnNpbmsg Km5leHRfc2luaywgdm9pZCAqZGV0YWlsX2FyZykKIAkgKiBXZSByZW1lbWJlciB0aGUgY3Vy cmVudCB2YWx1ZSBvZiBiYXNlYmFja3VwX3RvX3NoZWxsLnNoZWxsX2NvbW1hbmQgdG8KIAkg KiBiZSBjZXJ0YWluIHRoYXQgaXQgY2FuJ3QgY2hhbmdlIHVuZGVyIHVzIGR1cmluZyB0aGUg YmFja3VwLgogCSAqLwotCXNpbmsgPSBwYWxsb2MwKHNpemVvZihiYnNpbmtfc2hlbGwpKTsK KwlzaW5rID0gcGFsbG9jMF9vYmplY3QoYmJzaW5rX3NoZWxsKTsKIAkqKChjb25zdCBiYnNp bmtfb3BzICoqKSAmc2luay0+YmFzZS5iYnNfb3BzKSA9ICZiYnNpbmtfc2hlbGxfb3BzOwog CXNpbmstPmJhc2UuYmJzX25leHQgPSBuZXh0X3Npbms7CiAJc2luay0+dGFyZ2V0X2RldGFp bCA9IGRldGFpbF9hcmc7CmRpZmYgLS1naXQgYS9jb250cmliL2Jsb29tL2JsaW5zZXJ0LmMg Yi9jb250cmliL2Jsb29tL2JsaW5zZXJ0LmMKaW5kZXggNzg2NjQzODEyMmYuLmMxMWUwNmMz NGVlIDEwMDY0NAotLS0gYS9jb250cmliL2Jsb29tL2JsaW5zZXJ0LmMKKysrIGIvY29udHJp Yi9ibG9vbS9ibGluc2VydC5jCkBAIC0xNTEsNyArMTUxLDcgQEAgYmxidWlsZChSZWxhdGlv biBoZWFwLCBSZWxhdGlvbiBpbmRleCwgSW5kZXhJbmZvICppbmRleEluZm8pCiAKIAlNZW1v cnlDb250ZXh0RGVsZXRlKGJ1aWxkc3RhdGUudG1wQ3R4KTsKIAotCXJlc3VsdCA9IChJbmRl eEJ1aWxkUmVzdWx0ICopIHBhbGxvYyhzaXplb2YoSW5kZXhCdWlsZFJlc3VsdCkpOworCXJl c3VsdCA9IHBhbGxvY19vYmplY3QoSW5kZXhCdWlsZFJlc3VsdCk7CiAJcmVzdWx0LT5oZWFw X3R1cGxlcyA9IHJlbHR1cGxlczsKIAlyZXN1bHQtPmluZGV4X3R1cGxlcyA9IGJ1aWxkc3Rh dGUuaW5kdHVwbGVzOwogCmRpZmYgLS1naXQgYS9jb250cmliL2Jsb29tL2Jsc2Nhbi5jIGIv Y29udHJpYi9ibG9vbS9ibHNjYW4uYwppbmRleCBkMDcyZjQ3ZmUyOC4uMGQ3MWVkYmU5MWMg MTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYmxvb20vYmxzY2FuLmMKKysrIGIvY29udHJpYi9ibG9v bS9ibHNjYW4uYwpAQCAtMjksNyArMjksNyBAQCBibGJlZ2luc2NhbihSZWxhdGlvbiByLCBp bnQgbmtleXMsIGludCBub3JkZXJieXMpCiAKIAlzY2FuID0gUmVsYXRpb25HZXRJbmRleFNj YW4ociwgbmtleXMsIG5vcmRlcmJ5cyk7CiAKLQlzbyA9IChCbG9vbVNjYW5PcGFxdWUpIHBh bGxvYyhzaXplb2YoQmxvb21TY2FuT3BhcXVlRGF0YSkpOworCXNvID0gKEJsb29tU2Nhbk9w YXF1ZSkgcGFsbG9jX29iamVjdChCbG9vbVNjYW5PcGFxdWVEYXRhKTsKIAlpbml0Qmxvb21T dGF0ZSgmc28tPnN0YXRlLCBzY2FuLT5pbmRleFJlbGF0aW9uKTsKIAlzby0+c2lnbiA9IE5V TEw7CiAKQEAgLTg2LDcgKzg2LDcgQEAgYmxnZXRiaXRtYXAoSW5kZXhTY2FuRGVzYyBzY2Fu LCBUSURCaXRtYXAgKnRibSkKIAkJLyogTmV3IHNlYXJjaDogaGF2ZSB0byBjYWxjdWxhdGUg c2VhcmNoIHNpZ25hdHVyZSAqLwogCQlTY2FuS2V5CQlza2V5ID0gc2Nhbi0+a2V5RGF0YTsK IAotCQlzby0+c2lnbiA9IHBhbGxvYzAoc2l6ZW9mKEJsb29tU2lnbmF0dXJlV29yZCkgKiBz by0+c3RhdGUub3B0cy5ibG9vbUxlbmd0aCk7CisJCXNvLT5zaWduID0gcGFsbG9jMF9hcnJh eShCbG9vbVNpZ25hdHVyZVdvcmQsIHNvLT5zdGF0ZS5vcHRzLmJsb29tTGVuZ3RoKTsKIAog CQlmb3IgKGkgPSAwOyBpIDwgc2Nhbi0+bnVtYmVyT2ZLZXlzOyBpKyspCiAJCXsKZGlmZiAt LWdpdCBhL2NvbnRyaWIvYmxvb20vYmx1dGlscy5jIGIvY29udHJpYi9ibG9vbS9ibHV0aWxz LmMKaW5kZXggMmMwZTcxZWVkYzYuLmJhMTQ2NWMyNTdmIDEwMDY0NAotLS0gYS9jb250cmli L2Jsb29tL2JsdXRpbHMuYworKysgYi9jb250cmliL2Jsb29tL2JsdXRpbHMuYwpAQCAtODYs NyArODYsNyBAQCBtYWtlRGVmYXVsdEJsb29tT3B0aW9ucyh2b2lkKQogCUJsb29tT3B0aW9u cyAqb3B0czsKIAlpbnQJCQlpOwogCi0Jb3B0cyA9IChCbG9vbU9wdGlvbnMgKikgcGFsbG9j MChzaXplb2YoQmxvb21PcHRpb25zKSk7CisJb3B0cyA9IHBhbGxvYzBfb2JqZWN0KEJsb29t T3B0aW9ucyk7CiAJLyogQ29udmVydCBERUZBVUxUX0JMT09NX0xFTkdUSCBmcm9tICMgb2Yg Yml0cyB0byAjIG9mIHdvcmRzICovCiAJb3B0cy0+Ymxvb21MZW5ndGggPSAoREVGQVVMVF9C TE9PTV9MRU5HVEggKyBTSUdOV09SREJJVFMgLSAxKSAvIFNJR05XT1JEQklUUzsKIAlmb3Ig KGkgPSAwOyBpIDwgSU5ERVhfTUFYX0tFWVM7IGkrKykKZGlmZiAtLWdpdCBhL2NvbnRyaWIv Ymxvb20vYmx2YWN1dW0uYyBiL2NvbnRyaWIvYmxvb20vYmx2YWN1dW0uYwppbmRleCA5ZTVm MDU3NGZhZC4uZTkwYTRiZmIxNzggMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYmxvb20vYmx2YWN1 dW0uYworKysgYi9jb250cmliL2Jsb29tL2JsdmFjdXVtLmMKQEAgLTQyLDcgKzQyLDcgQEAg YmxidWxrZGVsZXRlKEluZGV4VmFjdXVtSW5mbyAqaW5mbywgSW5kZXhCdWxrRGVsZXRlUmVz dWx0ICpzdGF0cywKIAlHZW5lcmljWExvZ1N0YXRlICpneGxvZ1N0YXRlOwogCiAJaWYgKHN0 YXRzID09IE5VTEwpCi0JCXN0YXRzID0gKEluZGV4QnVsa0RlbGV0ZVJlc3VsdCAqKSBwYWxs b2MwKHNpemVvZihJbmRleEJ1bGtEZWxldGVSZXN1bHQpKTsKKwkJc3RhdHMgPSBwYWxsb2Mw X29iamVjdChJbmRleEJ1bGtEZWxldGVSZXN1bHQpOwogCiAJaW5pdEJsb29tU3RhdGUoJnN0 YXRlLCBpbmRleCk7CiAKQEAgLTE3Miw3ICsxNzIsNyBAQCBibHZhY3V1bWNsZWFudXAoSW5k ZXhWYWN1dW1JbmZvICppbmZvLCBJbmRleEJ1bGtEZWxldGVSZXN1bHQgKnN0YXRzKQogCQly ZXR1cm4gc3RhdHM7CiAKIAlpZiAoc3RhdHMgPT0gTlVMTCkKLQkJc3RhdHMgPSAoSW5kZXhC dWxrRGVsZXRlUmVzdWx0ICopIHBhbGxvYzAoc2l6ZW9mKEluZGV4QnVsa0RlbGV0ZVJlc3Vs dCkpOworCQlzdGF0cyA9IHBhbGxvYzBfb2JqZWN0KEluZGV4QnVsa0RlbGV0ZVJlc3VsdCk7 CiAKIAkvKgogCSAqIEl0ZXJhdGUgb3ZlciB0aGUgcGFnZXM6IGluc2VydCBkZWxldGVkIHBh Z2VzIGludG8gRlNNIGFuZCBjb2xsZWN0CmRpZmYgLS1naXQgYS9jb250cmliL2J0cmVlX2dp bi9idHJlZV9naW4uYyBiL2NvbnRyaWIvYnRyZWVfZ2luL2J0cmVlX2dpbi5jCmluZGV4IDhj NDc3ZDE3ZTIyLi5hYWM5Yjg0ZWE1NiAxMDA2NDQKLS0tIGEvY29udHJpYi9idHJlZV9naW4v YnRyZWVfZ2luLmMKKysrIGIvY29udHJpYi9idHJlZV9naW4vYnRyZWVfZ2luLmMKQEAgLTUx LDcgKzUxLDcgQEAgZ2luX2J0cmVlX2V4dHJhY3RfdmFsdWUoRnVuY3Rpb25DYWxsSW5mbyBm Y2luZm8sIGJvb2wgaXNfdmFybGVuYSkKIHsKIAlEYXR1bQkJZGF0dW0gPSBQR19HRVRBUkdf REFUVU0oMCk7CiAJaW50MzIJICAgKm5lbnRyaWVzID0gKGludDMyICopIFBHX0dFVEFSR19Q T0lOVEVSKDEpOwotCURhdHVtCSAgICplbnRyaWVzID0gKERhdHVtICopIHBhbGxvYyhzaXpl b2YoRGF0dW0pKTsKKwlEYXR1bQkgICAqZW50cmllcyA9IHBhbGxvY19vYmplY3QoRGF0dW0p OwogCiAJLyogRW5zdXJlIHRoYXQgdmFsdWVzIHN0b3JlZCBpbiB0aGUgaW5kZXggYXJlIG5v dCB0b2FzdGVkICovCiAJaWYgKGlzX3ZhcmxlbmEpCkBAIC03NCw5ICs3NCw5IEBAIGdpbl9i dHJlZV9leHRyYWN0X3F1ZXJ5KEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvLAogCVN0cmF0ZWd5 TnVtYmVyIHN0cmF0ZWd5ID0gUEdfR0VUQVJHX1VJTlQxNigyKTsKIAlib29sCSAgKipwYXJ0 aWFsbWF0Y2ggPSAoYm9vbCAqKikgUEdfR0VUQVJHX1BPSU5URVIoMyk7CiAJUG9pbnRlciAg ICoqZXh0cmFfZGF0YSA9IChQb2ludGVyICoqKSBQR19HRVRBUkdfUE9JTlRFUig0KTsKLQlE YXR1bQkgICAqZW50cmllcyA9IChEYXR1bSAqKSBwYWxsb2Moc2l6ZW9mKERhdHVtKSk7Ci0J UXVlcnlJbmZvICAqZGF0YSA9IChRdWVyeUluZm8gKikgcGFsbG9jKHNpemVvZihRdWVyeUlu Zm8pKTsKLQlib29sCSAgICpwdHJfcGFydGlhbG1hdGNoID0gKGJvb2wgKikgcGFsbG9jKHNp emVvZihib29sKSk7CisJRGF0dW0JICAgKmVudHJpZXMgPSBwYWxsb2Nfb2JqZWN0KERhdHVt KTsKKwlRdWVyeUluZm8gICpkYXRhID0gcGFsbG9jX29iamVjdChRdWVyeUluZm8pOworCWJv b2wJICAgKnB0cl9wYXJ0aWFsbWF0Y2ggPSBwYWxsb2Nfb2JqZWN0KGJvb2wpOwogCWludAkJ CWJ0cmVlX3N0cmF0LAogCQkJCXJoc19jb2RlOwogCkBAIC0xMzksNyArMTM5LDcgQEAgZ2lu X2J0cmVlX2V4dHJhY3RfcXVlcnkoRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8sCiAJZGF0YS0+ b3JpZ19kYXR1bSA9IGRhdHVtOwogCWRhdGEtPmVudHJ5X2RhdHVtID0gZW50cmllc1swXTsK IAlkYXRhLT50eXBlY21wID0gY21wX2Zuc1tyaHNfY29kZV07Ci0JKmV4dHJhX2RhdGEgPSAo UG9pbnRlciAqKSBwYWxsb2Moc2l6ZW9mKFBvaW50ZXIpKTsKKwkqZXh0cmFfZGF0YSA9IHBh bGxvY19vYmplY3QoUG9pbnRlcik7CiAJKipleHRyYV9kYXRhID0gKFBvaW50ZXIpIGRhdGE7 CiAKIAlQR19SRVRVUk5fUE9JTlRFUihlbnRyaWVzKTsKQEAgLTU3OCw3ICs1NzgsNyBAQCBH SU5fU1VQUE9SVCh0aW1lLCBsZWZ0bW9zdHZhbHVlX3RpbWUsIHRpbWVfcmhzX2lzX3Zhcmxl bmEsIE5VTEwsIHRpbWVfY21wX2ZucykKIHN0YXRpYyBEYXR1bQogbGVmdG1vc3R2YWx1ZV90 aW1ldHoodm9pZCkKIHsKLQlUaW1lVHpBRFQgICp2ID0gcGFsbG9jKHNpemVvZihUaW1lVHpB RFQpKTsKKwlUaW1lVHpBRFQgICp2ID0gcGFsbG9jX29iamVjdChUaW1lVHpBRFQpOwogCiAJ di0+dGltZSA9IDA7CiAJdi0+em9uZSA9IC0yNCAqIDM2MDA7CQkvKiBYWFggaXMgdGhhdCB0 cnVlPyAqLwpAQCAtNjM4LDcgKzYzOCw3IEBAIEdJTl9TVVBQT1JUKGRhdGUsIGxlZnRtb3N0 dmFsdWVfZGF0ZSwgZGF0ZV9yaHNfaXNfdmFybGVuYSwgZGF0ZV9jdnRfZm5zLCBkYXRlX2Nt CiBzdGF0aWMgRGF0dW0KIGxlZnRtb3N0dmFsdWVfaW50ZXJ2YWwodm9pZCkKIHsKLQlJbnRl cnZhbCAgICp2ID0gcGFsbG9jKHNpemVvZihJbnRlcnZhbCkpOworCUludGVydmFsICAgKnYg PSBwYWxsb2Nfb2JqZWN0KEludGVydmFsKTsKIAogCUlOVEVSVkFMX05PQkVHSU4odik7CiAK QEAgLTY1Niw3ICs2NTYsNyBAQCBHSU5fU1VQUE9SVChpbnRlcnZhbCwgbGVmdG1vc3R2YWx1 ZV9pbnRlcnZhbCwgaW50ZXJ2YWxfcmhzX2lzX3ZhcmxlbmEsIE5VTEwsIGludAogc3RhdGlj IERhdHVtCiBsZWZ0bW9zdHZhbHVlX21hY2FkZHIodm9pZCkKIHsKLQltYWNhZGRyICAgICp2 ID0gcGFsbG9jMChzaXplb2YobWFjYWRkcikpOworCW1hY2FkZHIgICAgKnYgPSBwYWxsb2Mw X29iamVjdChtYWNhZGRyKTsKIAogCXJldHVybiBNYWNhZGRyUEdldERhdHVtKHYpOwogfQpA QCAtNjcyLDcgKzY3Miw3IEBAIEdJTl9TVVBQT1JUKG1hY2FkZHIsIGxlZnRtb3N0dmFsdWVf bWFjYWRkciwgbWFjYWRkcl9yaHNfaXNfdmFybGVuYSwgTlVMTCwgbWFjYWRkCiBzdGF0aWMg RGF0dW0KIGxlZnRtb3N0dmFsdWVfbWFjYWRkcjgodm9pZCkKIHsKLQltYWNhZGRyOCAgICp2 ID0gcGFsbG9jMChzaXplb2YobWFjYWRkcjgpKTsKKwltYWNhZGRyOCAgICp2ID0gcGFsbG9j MF9vYmplY3QobWFjYWRkcjgpOwogCiAJcmV0dXJuIE1hY2FkZHI4UEdldERhdHVtKHYpOwog fQpAQCAtOTA5LDcgKzkwOSw3IEBAIGxlZnRtb3N0dmFsdWVfdXVpZCh2b2lkKQogCSAqIHBh bGxvYzAgd2lsbCBjcmVhdGUgdGhlIFVVSUQgd2l0aCBhbGwgemVyb2VzOgogCSAqICIwMDAw MDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAiCiAJICovCi0JcGdfdXVpZF90ICAq cmV0dmFsID0gKHBnX3V1aWRfdCAqKSBwYWxsb2MwKHNpemVvZihwZ191dWlkX3QpKTsKKwlw Z191dWlkX3QgICpyZXR2YWwgPSBwYWxsb2MwX29iamVjdChwZ191dWlkX3QpOwogCiAJcmV0 dXJuIFVVSURQR2V0RGF0dW0ocmV0dmFsKTsKIH0KZGlmZiAtLWdpdCBhL2NvbnRyaWIvYnRy ZWVfZ2lzdC9idHJlZV9ib29sLmMgYi9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfYm9vbC5j CmluZGV4IDM0NGYwNTljNzhmLi41OWFkNjBkYTViZSAxMDA2NDQKLS0tIGEvY29udHJpYi9i dHJlZV9naXN0L2J0cmVlX2Jvb2wuYworKysgYi9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVf Ym9vbC5jCkBAIC0xMjgsNyArMTI4LDcgQEAgRGF0dW0KIGdidF9ib29sX3VuaW9uKFBHX0ZV TkNUSU9OX0FSR1MpCiB7CiAJR2lzdEVudHJ5VmVjdG9yICplbnRyeXZlYyA9IChHaXN0RW50 cnlWZWN0b3IgKikgUEdfR0VUQVJHX1BPSU5URVIoMCk7Ci0Jdm9pZAkgICAqb3V0ID0gcGFs bG9jKHNpemVvZihib29sS0VZKSk7CisJdm9pZAkgICAqb3V0ID0gcGFsbG9jX29iamVjdChi b29sS0VZKTsKIAogCSooaW50ICopIFBHX0dFVEFSR19QT0lOVEVSKDEpID0gc2l6ZW9mKGJv b2xLRVkpOwogCVBHX1JFVFVSTl9QT0lOVEVSKGdidF9udW1fdW5pb24ob3V0LCBlbnRyeXZl YywgJnRpbmZvLCBmY2luZm8tPmZsaW5mbykpOwpkaWZmIC0tZ2l0IGEvY29udHJpYi9idHJl ZV9naXN0L2J0cmVlX2Nhc2guYyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9jYXNoLmMK aW5kZXggMjgyZDVjNTczMWYuLmY4NGIzNWY1MTYxIDEwMDY0NAotLS0gYS9jb250cmliL2J0 cmVlX2dpc3QvYnRyZWVfY2FzaC5jCisrKyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9j YXNoLmMKQEAgLTE3Nyw3ICsxNzcsNyBAQCBEYXR1bQogZ2J0X2Nhc2hfdW5pb24oUEdfRlVO Q1RJT05fQVJHUykKIHsKIAlHaXN0RW50cnlWZWN0b3IgKmVudHJ5dmVjID0gKEdpc3RFbnRy eVZlY3RvciAqKSBQR19HRVRBUkdfUE9JTlRFUigwKTsKLQl2b2lkCSAgICpvdXQgPSBwYWxs b2Moc2l6ZW9mKGNhc2hLRVkpKTsKKwl2b2lkCSAgICpvdXQgPSBwYWxsb2Nfb2JqZWN0KGNh c2hLRVkpOwogCiAJKihpbnQgKikgUEdfR0VUQVJHX1BPSU5URVIoMSkgPSBzaXplb2YoY2Fz aEtFWSk7CiAJUEdfUkVUVVJOX1BPSU5URVIoZ2J0X251bV91bmlvbihvdXQsIGVudHJ5dmVj LCAmdGluZm8sIGZjaW5mby0+ZmxpbmZvKSk7CmRpZmYgLS1naXQgYS9jb250cmliL2J0cmVl X2dpc3QvYnRyZWVfZGF0ZS5jIGIvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2RhdGUuYwpp bmRleCAxZjFhM2YzMmI1Ni4uOGNiZmJiMTljNWEgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYnRy ZWVfZ2lzdC9idHJlZV9kYXRlLmMKKysrIGIvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2Rh dGUuYwpAQCAtMTkyLDcgKzE5Miw3IEBAIERhdHVtCiBnYnRfZGF0ZV91bmlvbihQR19GVU5D VElPTl9BUkdTKQogewogCUdpc3RFbnRyeVZlY3RvciAqZW50cnl2ZWMgPSAoR2lzdEVudHJ5 VmVjdG9yICopIFBHX0dFVEFSR19QT0lOVEVSKDApOwotCXZvaWQJICAgKm91dCA9IHBhbGxv YyhzaXplb2YoZGF0ZUtFWSkpOworCXZvaWQJICAgKm91dCA9IHBhbGxvY19vYmplY3QoZGF0 ZUtFWSk7CiAKIAkqKGludCAqKSBQR19HRVRBUkdfUE9JTlRFUigxKSA9IHNpemVvZihkYXRl S0VZKTsKIAlQR19SRVRVUk5fUE9JTlRFUihnYnRfbnVtX3VuaW9uKG91dCwgZW50cnl2ZWMs ICZ0aW5mbywgZmNpbmZvLT5mbGluZm8pKTsKZGlmZiAtLWdpdCBhL2NvbnRyaWIvYnRyZWVf Z2lzdC9idHJlZV9lbnVtLmMgYi9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfZW51bS5jCmlu ZGV4IDhmMWZmZmY0Njk2Li42MDBlODQwOWU4OCAxMDA2NDQKLS0tIGEvY29udHJpYi9idHJl ZV9naXN0L2J0cmVlX2VudW0uYworKysgYi9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfZW51 bS5jCkBAIC0xNDcsNyArMTQ3LDcgQEAgRGF0dW0KIGdidF9lbnVtX3VuaW9uKFBHX0ZVTkNU SU9OX0FSR1MpCiB7CiAJR2lzdEVudHJ5VmVjdG9yICplbnRyeXZlYyA9IChHaXN0RW50cnlW ZWN0b3IgKikgUEdfR0VUQVJHX1BPSU5URVIoMCk7Ci0Jdm9pZAkgICAqb3V0ID0gcGFsbG9j KHNpemVvZihvaWRLRVkpKTsKKwl2b2lkCSAgICpvdXQgPSBwYWxsb2Nfb2JqZWN0KG9pZEtF WSk7CiAKIAkqKGludCAqKSBQR19HRVRBUkdfUE9JTlRFUigxKSA9IHNpemVvZihvaWRLRVkp OwogCVBHX1JFVFVSTl9QT0lOVEVSKGdidF9udW1fdW5pb24ob3V0LCBlbnRyeXZlYywgJnRp bmZvLCBmY2luZm8tPmZsaW5mbykpOwpkaWZmIC0tZ2l0IGEvY29udHJpYi9idHJlZV9naXN0 L2J0cmVlX2Zsb2F0NC5jIGIvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2Zsb2F0NC5jCmlu ZGV4IGQ5Yzg1OTgzNWRhLi5iOTg1MDNiOTM0ZiAxMDA2NDQKLS0tIGEvY29udHJpYi9idHJl ZV9naXN0L2J0cmVlX2Zsb2F0NC5jCisrKyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9m bG9hdDQuYwpAQCAtMTcxLDcgKzE3MSw3IEBAIERhdHVtCiBnYnRfZmxvYXQ0X3VuaW9uKFBH X0ZVTkNUSU9OX0FSR1MpCiB7CiAJR2lzdEVudHJ5VmVjdG9yICplbnRyeXZlYyA9IChHaXN0 RW50cnlWZWN0b3IgKikgUEdfR0VUQVJHX1BPSU5URVIoMCk7Ci0Jdm9pZAkgICAqb3V0ID0g cGFsbG9jKHNpemVvZihmbG9hdDRLRVkpKTsKKwl2b2lkCSAgICpvdXQgPSBwYWxsb2Nfb2Jq ZWN0KGZsb2F0NEtFWSk7CiAKIAkqKGludCAqKSBQR19HRVRBUkdfUE9JTlRFUigxKSA9IHNp emVvZihmbG9hdDRLRVkpOwogCVBHX1JFVFVSTl9QT0lOVEVSKGdidF9udW1fdW5pb24ob3V0 LCBlbnRyeXZlYywgJnRpbmZvLCBmY2luZm8tPmZsaW5mbykpOwpkaWZmIC0tZ2l0IGEvY29u dHJpYi9idHJlZV9naXN0L2J0cmVlX2Zsb2F0OC5jIGIvY29udHJpYi9idHJlZV9naXN0L2J0 cmVlX2Zsb2F0OC5jCmluZGV4IDU2N2JlZWRlMTc4Li5jODJmOWY4MmIyZCAxMDA2NDQKLS0t IGEvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2Zsb2F0OC5jCisrKyBiL2NvbnRyaWIvYnRy ZWVfZ2lzdC9idHJlZV9mbG9hdDguYwpAQCAtMTc5LDcgKzE3OSw3IEBAIERhdHVtCiBnYnRf ZmxvYXQ4X3VuaW9uKFBHX0ZVTkNUSU9OX0FSR1MpCiB7CiAJR2lzdEVudHJ5VmVjdG9yICpl bnRyeXZlYyA9IChHaXN0RW50cnlWZWN0b3IgKikgUEdfR0VUQVJHX1BPSU5URVIoMCk7Ci0J dm9pZAkgICAqb3V0ID0gcGFsbG9jKHNpemVvZihmbG9hdDhLRVkpKTsKKwl2b2lkCSAgICpv dXQgPSBwYWxsb2Nfb2JqZWN0KGZsb2F0OEtFWSk7CiAKIAkqKGludCAqKSBQR19HRVRBUkdf UE9JTlRFUigxKSA9IHNpemVvZihmbG9hdDhLRVkpOwogCVBHX1JFVFVSTl9QT0lOVEVSKGdi dF9udW1fdW5pb24ob3V0LCBlbnRyeXZlYywgJnRpbmZvLCBmY2luZm8tPmZsaW5mbykpOwpk aWZmIC0tZ2l0IGEvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2luZXQuYyBiL2NvbnRyaWIv YnRyZWVfZ2lzdC9idHJlZV9pbmV0LmMKaW5kZXggNTJiZjNlMjQ0NmUuLmZlODgxNmVjYjYw IDEwMDY0NAotLS0gYS9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfaW5ldC5jCisrKyBiL2Nv bnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9pbmV0LmMKQEAgLTk3LDEwICs5NywxMCBAQCBnYnRf aW5ldF9jb21wcmVzcyhQR19GVU5DVElPTl9BUkdTKQogCiAJaWYgKGVudHJ5LT5sZWFma2V5 KQogCXsKLQkJaW5ldEtFWSAgICAqciA9IChpbmV0S0VZICopIHBhbGxvYyhzaXplb2YoaW5l dEtFWSkpOworCQlpbmV0S0VZICAgICpyID0gcGFsbG9jX29iamVjdChpbmV0S0VZKTsKIAkJ Ym9vbAkJZmFpbHVyZSA9IGZhbHNlOwogCi0JCXJldHZhbCA9IHBhbGxvYyhzaXplb2YoR0lT VEVOVFJZKSk7CisJCXJldHZhbCA9IHBhbGxvY19vYmplY3QoR0lTVEVOVFJZKTsKIAkJci0+ bG93ZXIgPSBjb252ZXJ0X25ldHdvcmtfdG9fc2NhbGFyKGVudHJ5LT5rZXksIElORVRPSUQs ICZmYWlsdXJlKTsKIAkJQXNzZXJ0KCFmYWlsdXJlKTsKIAkJci0+dXBwZXIgPSByLT5sb3dl cjsKQEAgLTE0NSw3ICsxNDUsNyBAQCBEYXR1bQogZ2J0X2luZXRfdW5pb24oUEdfRlVOQ1RJ T05fQVJHUykKIHsKIAlHaXN0RW50cnlWZWN0b3IgKmVudHJ5dmVjID0gKEdpc3RFbnRyeVZl Y3RvciAqKSBQR19HRVRBUkdfUE9JTlRFUigwKTsKLQl2b2lkCSAgICpvdXQgPSBwYWxsb2Mo c2l6ZW9mKGluZXRLRVkpKTsKKwl2b2lkCSAgICpvdXQgPSBwYWxsb2Nfb2JqZWN0KGluZXRL RVkpOwogCiAJKihpbnQgKikgUEdfR0VUQVJHX1BPSU5URVIoMSkgPSBzaXplb2YoaW5ldEtF WSk7CiAJUEdfUkVUVVJOX1BPSU5URVIoZ2J0X251bV91bmlvbihvdXQsIGVudHJ5dmVjLCAm dGluZm8sIGZjaW5mby0+ZmxpbmZvKSk7CmRpZmYgLS1naXQgYS9jb250cmliL2J0cmVlX2dp c3QvYnRyZWVfaW50Mi5jIGIvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2ludDIuYwppbmRl eCBmYWY0NTY5OTdiYi4uM2UzYjE1M2ZkMDkgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYnRyZWVf Z2lzdC9idHJlZV9pbnQyLmMKKysrIGIvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2ludDIu YwpAQCAtMTc2LDcgKzE3Niw3IEBAIERhdHVtCiBnYnRfaW50Ml91bmlvbihQR19GVU5DVElP Tl9BUkdTKQogewogCUdpc3RFbnRyeVZlY3RvciAqZW50cnl2ZWMgPSAoR2lzdEVudHJ5VmVj dG9yICopIFBHX0dFVEFSR19QT0lOVEVSKDApOwotCXZvaWQJICAgKm91dCA9IHBhbGxvYyhz aXplb2YoaW50MTZLRVkpKTsKKwl2b2lkCSAgICpvdXQgPSBwYWxsb2Nfb2JqZWN0KGludDE2 S0VZKTsKIAogCSooaW50ICopIFBHX0dFVEFSR19QT0lOVEVSKDEpID0gc2l6ZW9mKGludDE2 S0VZKTsKIAlQR19SRVRVUk5fUE9JTlRFUihnYnRfbnVtX3VuaW9uKG91dCwgZW50cnl2ZWMs ICZ0aW5mbywgZmNpbmZvLT5mbGluZm8pKTsKZGlmZiAtLWdpdCBhL2NvbnRyaWIvYnRyZWVf Z2lzdC9idHJlZV9pbnQ0LmMgYi9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfaW50NC5jCmlu ZGV4IDBiZGI5ZTU4YzU2Li5kYjQ5NzE0MzlmMSAxMDA2NDQKLS0tIGEvY29udHJpYi9idHJl ZV9naXN0L2J0cmVlX2ludDQuYworKysgYi9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfaW50 NC5jCkBAIC0xNzQsNyArMTc0LDcgQEAgRGF0dW0KIGdidF9pbnQ0X3VuaW9uKFBHX0ZVTkNU SU9OX0FSR1MpCiB7CiAJR2lzdEVudHJ5VmVjdG9yICplbnRyeXZlYyA9IChHaXN0RW50cnlW ZWN0b3IgKikgUEdfR0VUQVJHX1BPSU5URVIoMCk7Ci0Jdm9pZAkgICAqb3V0ID0gcGFsbG9j KHNpemVvZihpbnQzMktFWSkpOworCXZvaWQJICAgKm91dCA9IHBhbGxvY19vYmplY3QoaW50 MzJLRVkpOwogCiAJKihpbnQgKikgUEdfR0VUQVJHX1BPSU5URVIoMSkgPSBzaXplb2YoaW50 MzJLRVkpOwogCVBHX1JFVFVSTl9QT0lOVEVSKGdidF9udW1fdW5pb24ob3V0LCBlbnRyeXZl YywgJnRpbmZvLCBmY2luZm8tPmZsaW5mbykpOwpkaWZmIC0tZ2l0IGEvY29udHJpYi9idHJl ZV9naXN0L2J0cmVlX2ludDguYyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9pbnQ4LmMK aW5kZXggYTlhN2I1NjkyNzguLjVhNTFmMmRkZDAxIDEwMDY0NAotLS0gYS9jb250cmliL2J0 cmVlX2dpc3QvYnRyZWVfaW50OC5jCisrKyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9p bnQ4LmMKQEAgLTE3Niw3ICsxNzYsNyBAQCBEYXR1bQogZ2J0X2ludDhfdW5pb24oUEdfRlVO Q1RJT05fQVJHUykKIHsKIAlHaXN0RW50cnlWZWN0b3IgKmVudHJ5dmVjID0gKEdpc3RFbnRy eVZlY3RvciAqKSBQR19HRVRBUkdfUE9JTlRFUigwKTsKLQl2b2lkCSAgICpvdXQgPSBwYWxs b2Moc2l6ZW9mKGludDY0S0VZKSk7CisJdm9pZAkgICAqb3V0ID0gcGFsbG9jX29iamVjdChp bnQ2NEtFWSk7CiAKIAkqKGludCAqKSBQR19HRVRBUkdfUE9JTlRFUigxKSA9IHNpemVvZihp bnQ2NEtFWSk7CiAJUEdfUkVUVVJOX1BPSU5URVIoZ2J0X251bV91bmlvbihvdXQsIGVudHJ5 dmVjLCAmdGluZm8sIGZjaW5mby0+ZmxpbmZvKSk7CmRpZmYgLS1naXQgYS9jb250cmliL2J0 cmVlX2dpc3QvYnRyZWVfaW50ZXJ2YWwuYyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9p bnRlcnZhbC5jCmluZGV4IDE5ZWVmYzYwY2RlLi43NzRjYWQ3YmVmZSAxMDA2NDQKLS0tIGEv Y29udHJpYi9idHJlZV9naXN0L2J0cmVlX2ludGVydmFsLmMKKysrIGIvY29udHJpYi9idHJl ZV9naXN0L2J0cmVlX2ludGVydmFsLmMKQEAgLTE1MCw3ICsxNTAsNyBAQCBnYnRfaW50dl9j b21wcmVzcyhQR19GVU5DVElPTl9BUkdTKQogCXsKIAkJY2hhcgkgICAqciA9IChjaGFyICop IHBhbGxvYygyICogSU5URVJWQUxTSVpFKTsKIAotCQlyZXR2YWwgPSBwYWxsb2Moc2l6ZW9m KEdJU1RFTlRSWSkpOworCQlyZXR2YWwgPSBwYWxsb2Nfb2JqZWN0KEdJU1RFTlRSWSk7CiAK IAkJaWYgKGVudHJ5LT5sZWFma2V5KQogCQl7CkBAIC0xOTAsMTAgKzE5MCwxMCBAQCBnYnRf aW50dl9kZWNvbXByZXNzKFBHX0ZVTkNUSU9OX0FSR1MpCiAKIAlpZiAoSU5URVJWQUxTSVpF ICE9IHNpemVvZihJbnRlcnZhbCkpCiAJewotCQlpbnR2S0VZICAgICpyID0gcGFsbG9jKHNp emVvZihpbnR2S0VZKSk7CisJCWludHZLRVkgICAgKnIgPSBwYWxsb2Nfb2JqZWN0KGludHZL RVkpOwogCQljaGFyCSAgICprZXkgPSBEYXR1bUdldFBvaW50ZXIoZW50cnktPmtleSk7CiAK LQkJcmV0dmFsID0gcGFsbG9jKHNpemVvZihHSVNURU5UUlkpKTsKKwkJcmV0dmFsID0gcGFs bG9jX29iamVjdChHSVNURU5UUlkpOwogCQltZW1jcHkoJnItPmxvd2VyLCBrZXksIElOVEVS VkFMU0laRSk7CiAJCW1lbWNweSgmci0+dXBwZXIsIGtleSArIElOVEVSVkFMU0laRSwgSU5U RVJWQUxTSVpFKTsKIApAQCAtMjUwLDcgKzI1MCw3IEBAIERhdHVtCiBnYnRfaW50dl91bmlv bihQR19GVU5DVElPTl9BUkdTKQogewogCUdpc3RFbnRyeVZlY3RvciAqZW50cnl2ZWMgPSAo R2lzdEVudHJ5VmVjdG9yICopIFBHX0dFVEFSR19QT0lOVEVSKDApOwotCXZvaWQJICAgKm91 dCA9IHBhbGxvYyhzaXplb2YoaW50dktFWSkpOworCXZvaWQJICAgKm91dCA9IHBhbGxvY19v YmplY3QoaW50dktFWSk7CiAKIAkqKGludCAqKSBQR19HRVRBUkdfUE9JTlRFUigxKSA9IHNp emVvZihpbnR2S0VZKTsKIAlQR19SRVRVUk5fUE9JTlRFUihnYnRfbnVtX3VuaW9uKG91dCwg ZW50cnl2ZWMsICZ0aW5mbywgZmNpbmZvLT5mbGluZm8pKTsKZGlmZiAtLWdpdCBhL2NvbnRy aWIvYnRyZWVfZ2lzdC9idHJlZV9tYWNhZGRyLmMgYi9jb250cmliL2J0cmVlX2dpc3QvYnRy ZWVfbWFjYWRkci5jCmluZGV4IGM0NDRhNzA5ODUzLi5kODUwM2IxMzY2ZiAxMDA2NDQKLS0t IGEvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX21hY2FkZHIuYworKysgYi9jb250cmliL2J0 cmVlX2dpc3QvYnRyZWVfbWFjYWRkci5jCkBAIC0xNDcsNyArMTQ3LDcgQEAgRGF0dW0KIGdi dF9tYWNhZF91bmlvbihQR19GVU5DVElPTl9BUkdTKQogewogCUdpc3RFbnRyeVZlY3RvciAq ZW50cnl2ZWMgPSAoR2lzdEVudHJ5VmVjdG9yICopIFBHX0dFVEFSR19QT0lOVEVSKDApOwot CXZvaWQJICAgKm91dCA9IHBhbGxvYzAoc2l6ZW9mKG1hY0tFWSkpOworCXZvaWQJICAgKm91 dCA9IHBhbGxvYzBfb2JqZWN0KG1hY0tFWSk7CiAKIAkqKGludCAqKSBQR19HRVRBUkdfUE9J TlRFUigxKSA9IHNpemVvZihtYWNLRVkpOwogCVBHX1JFVFVSTl9QT0lOVEVSKGdidF9udW1f dW5pb24ob3V0LCBlbnRyeXZlYywgJnRpbmZvLCBmY2luZm8tPmZsaW5mbykpOwpkaWZmIC0t Z2l0IGEvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX21hY2FkZHI4LmMgYi9jb250cmliL2J0 cmVlX2dpc3QvYnRyZWVfbWFjYWRkcjguYwppbmRleCA2ZDk4MzdkOTBhMy4uNGYwZDBmYjcx NDAgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9tYWNhZGRyOC5jCisr KyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9tYWNhZGRyOC5jCkBAIC0xNDUsNyArMTQ1 LDcgQEAgRGF0dW0KIGdidF9tYWNhZDhfdW5pb24oUEdfRlVOQ1RJT05fQVJHUykKIHsKIAlH aXN0RW50cnlWZWN0b3IgKmVudHJ5dmVjID0gKEdpc3RFbnRyeVZlY3RvciAqKSBQR19HRVRB UkdfUE9JTlRFUigwKTsKLQl2b2lkCSAgICpvdXQgPSBwYWxsb2MwKHNpemVvZihtYWM4S0VZ KSk7CisJdm9pZAkgICAqb3V0ID0gcGFsbG9jMF9vYmplY3QobWFjOEtFWSk7CiAKIAkqKGlu dCAqKSBQR19HRVRBUkdfUE9JTlRFUigxKSA9IHNpemVvZihtYWM4S0VZKTsKIAlQR19SRVRV Uk5fUE9JTlRFUihnYnRfbnVtX3VuaW9uKG91dCwgZW50cnl2ZWMsICZ0aW5mbywgZmNpbmZv LT5mbGluZm8pKTsKZGlmZiAtLWdpdCBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9vaWQu YyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9vaWQuYwppbmRleCBiOGYyZjY2MTA3Ni4u NzZkN2M1NWEzMDggMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9vaWQu YworKysgYi9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfb2lkLmMKQEAgLTE3Niw3ICsxNzYs NyBAQCBEYXR1bQogZ2J0X29pZF91bmlvbihQR19GVU5DVElPTl9BUkdTKQogewogCUdpc3RF bnRyeVZlY3RvciAqZW50cnl2ZWMgPSAoR2lzdEVudHJ5VmVjdG9yICopIFBHX0dFVEFSR19Q T0lOVEVSKDApOwotCXZvaWQJICAgKm91dCA9IHBhbGxvYyhzaXplb2Yob2lkS0VZKSk7CisJ dm9pZAkgICAqb3V0ID0gcGFsbG9jX29iamVjdChvaWRLRVkpOwogCiAJKihpbnQgKikgUEdf R0VUQVJHX1BPSU5URVIoMSkgPSBzaXplb2Yob2lkS0VZKTsKIAlQR19SRVRVUk5fUE9JTlRF UihnYnRfbnVtX3VuaW9uKG91dCwgZW50cnl2ZWMsICZ0aW5mbywgZmNpbmZvLT5mbGluZm8p KTsKZGlmZiAtLWdpdCBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV90aW1lLmMgYi9jb250 cmliL2J0cmVlX2dpc3QvYnRyZWVfdGltZS5jCmluZGV4IDk0ODM4NDZjNDczLi44YzQ1Njcy ODgyMCAxMDA2NDQKLS0tIGEvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX3RpbWUuYworKysg Yi9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfdGltZS5jCkBAIC0xNjIsMTEgKzE2MiwxMSBA QCBnYnRfdGltZXR6X2NvbXByZXNzKFBHX0ZVTkNUSU9OX0FSR1MpCiAKIAlpZiAoZW50cnkt PmxlYWZrZXkpCiAJewotCQl0aW1lS0VZICAgICpyID0gKHRpbWVLRVkgKikgcGFsbG9jKHNp emVvZih0aW1lS0VZKSk7CisJCXRpbWVLRVkgICAgKnIgPSBwYWxsb2Nfb2JqZWN0KHRpbWVL RVkpOwogCQlUaW1lVHpBRFQgICp0eiA9IERhdHVtR2V0VGltZVR6QURUUChlbnRyeS0+a2V5 KTsKIAkJVGltZUFEVAkJdG1wOwogCi0JCXJldHZhbCA9IHBhbGxvYyhzaXplb2YoR0lTVEVO VFJZKSk7CisJCXJldHZhbCA9IHBhbGxvY19vYmplY3QoR0lTVEVOVFJZKTsKIAogCQkvKiBX ZSBhcmUgdXNpbmcgdGhlIHRpbWUgKyB6b25lIG9ubHkgdG8gY29tcHJlc3MgKi8KIAkJdG1w ID0gdHotPnRpbWUgKyAodHotPnpvbmUgKiBJTlQ2NENPTlNUKDEwMDAwMDApKTsKQEAgLTI1 Niw3ICsyNTYsNyBAQCBEYXR1bQogZ2J0X3RpbWVfdW5pb24oUEdfRlVOQ1RJT05fQVJHUykK IHsKIAlHaXN0RW50cnlWZWN0b3IgKmVudHJ5dmVjID0gKEdpc3RFbnRyeVZlY3RvciAqKSBQ R19HRVRBUkdfUE9JTlRFUigwKTsKLQl2b2lkCSAgICpvdXQgPSBwYWxsb2Moc2l6ZW9mKHRp bWVLRVkpKTsKKwl2b2lkCSAgICpvdXQgPSBwYWxsb2Nfb2JqZWN0KHRpbWVLRVkpOwogCiAJ KihpbnQgKikgUEdfR0VUQVJHX1BPSU5URVIoMSkgPSBzaXplb2YodGltZUtFWSk7CiAJUEdf UkVUVVJOX1BPSU5URVIoZ2J0X251bV91bmlvbihvdXQsIGVudHJ5dmVjLCAmdGluZm8sIGZj aW5mby0+ZmxpbmZvKSk7CmRpZmYgLS1naXQgYS9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVf dHMuYyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV90cy5jCmluZGV4IGI3YmJhZTJmNGQ2 Li5iN2M0M2MyMGI5MSAxMDA2NDQKLS0tIGEvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX3Rz LmMKKysrIGIvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX3RzLmMKQEAgLTE0Niw3ICsxNDYs NyBAQCB0c19kaXN0KFBHX0ZVTkNUSU9OX0FSR1MpCiAKIAlpZiAoVElNRVNUQU1QX05PVF9G SU5JVEUoYSkgfHwgVElNRVNUQU1QX05PVF9GSU5JVEUoYikpCiAJewotCQlJbnRlcnZhbCAg ICpwID0gcGFsbG9jKHNpemVvZihJbnRlcnZhbCkpOworCQlJbnRlcnZhbCAgICpwID0gcGFs bG9jX29iamVjdChJbnRlcnZhbCk7CiAKIAkJcC0+ZGF5ID0gSU5UX01BWDsKIAkJcC0+bW9u dGggPSBJTlRfTUFYOwpAQCAtMTcwLDcgKzE3MCw3IEBAIHRzdHpfZGlzdChQR19GVU5DVElP Tl9BUkdTKQogCiAJaWYgKFRJTUVTVEFNUF9OT1RfRklOSVRFKGEpIHx8IFRJTUVTVEFNUF9O T1RfRklOSVRFKGIpKQogCXsKLQkJSW50ZXJ2YWwgICAqcCA9IHBhbGxvYyhzaXplb2YoSW50 ZXJ2YWwpKTsKKwkJSW50ZXJ2YWwgICAqcCA9IHBhbGxvY19vYmplY3QoSW50ZXJ2YWwpOwog CiAJCXAtPmRheSA9IElOVF9NQVg7CiAJCXAtPm1vbnRoID0gSU5UX01BWDsKQEAgLTIxMiwx MyArMjEyLDEzIEBAIGdidF90c3R6X2NvbXByZXNzKFBHX0ZVTkNUSU9OX0FSR1MpCiAKIAlp ZiAoZW50cnktPmxlYWZrZXkpCiAJewotCQl0c0tFWQkgICAqciA9ICh0c0tFWSAqKSBwYWxs b2Moc2l6ZW9mKHRzS0VZKSk7CisJCXRzS0VZCSAgICpyID0gcGFsbG9jX29iamVjdCh0c0tF WSk7CiAJCVRpbWVzdGFtcFR6IHRzID0gRGF0dW1HZXRUaW1lc3RhbXBUeihlbnRyeS0+a2V5 KTsKIAkJVGltZXN0YW1wCWdtdDsKIAogCQlnbXQgPSB0c3R6X3RvX3RzX2dtdCh0cyk7CiAK LQkJcmV0dmFsID0gcGFsbG9jKHNpemVvZihHSVNURU5UUlkpKTsKKwkJcmV0dmFsID0gcGFs bG9jX29iamVjdChHSVNURU5UUlkpOwogCQlyLT5sb3dlciA9IHItPnVwcGVyID0gZ210Owog CQlnaXN0ZW50cnlpbml0KCpyZXR2YWwsIFBvaW50ZXJHZXREYXR1bShyKSwKIAkJCQkJICBl bnRyeS0+cmVsLCBlbnRyeS0+cGFnZSwKQEAgLTMyNSw3ICszMjUsNyBAQCBEYXR1bQogZ2J0 X3RzX3VuaW9uKFBHX0ZVTkNUSU9OX0FSR1MpCiB7CiAJR2lzdEVudHJ5VmVjdG9yICplbnRy eXZlYyA9IChHaXN0RW50cnlWZWN0b3IgKikgUEdfR0VUQVJHX1BPSU5URVIoMCk7Ci0Jdm9p ZAkgICAqb3V0ID0gcGFsbG9jKHNpemVvZih0c0tFWSkpOworCXZvaWQJICAgKm91dCA9IHBh bGxvY19vYmplY3QodHNLRVkpOwogCiAJKihpbnQgKikgUEdfR0VUQVJHX1BPSU5URVIoMSkg PSBzaXplb2YodHNLRVkpOwogCVBHX1JFVFVSTl9QT0lOVEVSKGdidF9udW1fdW5pb24ob3V0 LCBlbnRyeXZlYywgJnRpbmZvLCBmY2luZm8tPmZsaW5mbykpOwpkaWZmIC0tZ2l0IGEvY29u dHJpYi9idHJlZV9naXN0L2J0cmVlX3V0aWxzX251bS5jIGIvY29udHJpYi9idHJlZV9naXN0 L2J0cmVlX3V0aWxzX251bS5jCmluZGV4IDQ0NmZhOTMwYjkyLi4yM2QwM2MzNjY5YiAxMDA2 NDQKLS0tIGEvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX3V0aWxzX251bS5jCisrKyBiL2Nv bnRyaWIvYnRyZWVfZ2lzdC9idHJlZV91dGlsc19udW0uYwpAQCAtODksNyArODksNyBAQCBn YnRfbnVtX2NvbXByZXNzKEdJU1RFTlRSWSAqZW50cnksIGNvbnN0IGdidHJlZV9uaW5mbyAq dGluZm8pCiAKIAkJbWVtY3B5KCZyWzBdLCBsZWFmLCB0aW5mby0+c2l6ZSk7CiAJCW1lbWNw eSgmclt0aW5mby0+c2l6ZV0sIGxlYWYsIHRpbmZvLT5zaXplKTsKLQkJcmV0dmFsID0gcGFs bG9jKHNpemVvZihHSVNURU5UUlkpKTsKKwkJcmV0dmFsID0gcGFsbG9jX29iamVjdChHSVNU RU5UUlkpOwogCQlnaXN0ZW50cnlpbml0KCpyZXR2YWwsIFBvaW50ZXJHZXREYXR1bShyKSwg ZW50cnktPnJlbCwgZW50cnktPnBhZ2UsCiAJCQkJCSAgZW50cnktPm9mZnNldCwgZmFsc2Up OwogCX0KQEAgLTE1Niw3ICsxNTYsNyBAQCBnYnRfbnVtX2ZldGNoKEdJU1RFTlRSWSAqZW50 cnksIGNvbnN0IGdidHJlZV9uaW5mbyAqdGluZm8pCiAJCQlkYXR1bSA9IGVudHJ5LT5rZXk7 CiAJfQogCi0JcmV0dmFsID0gcGFsbG9jKHNpemVvZihHSVNURU5UUlkpKTsKKwlyZXR2YWwg PSBwYWxsb2Nfb2JqZWN0KEdJU1RFTlRSWSk7CiAJZ2lzdGVudHJ5aW5pdCgqcmV0dmFsLCBk YXR1bSwgZW50cnktPnJlbCwgZW50cnktPnBhZ2UsIGVudHJ5LT5vZmZzZXQsCiAJCQkJICBm YWxzZSk7CiAJcmV0dXJuIHJldHZhbDsKZGlmZiAtLWdpdCBhL2NvbnRyaWIvYnRyZWVfZ2lz dC9idHJlZV91dGlsc192YXIuYyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV91dGlsc192 YXIuYwppbmRleCBmYjQ2NmU1YWEzMi4uMmY2OTM4OWVkNjkgMTAwNjQ0Ci0tLSBhL2NvbnRy aWIvYnRyZWVfZ2lzdC9idHJlZV91dGlsc192YXIuYworKysgYi9jb250cmliL2J0cmVlX2dp c3QvYnRyZWVfdXRpbHNfdmFyLmMKQEAgLTQwLDcgKzQwLDcgQEAgZ2J0X3Zhcl9kZWNvbXBy ZXNzKFBHX0ZVTkNUSU9OX0FSR1MpCiAKIAlpZiAoa2V5ICE9IChHQlRfVkFSS0VZICopIERh dHVtR2V0UG9pbnRlcihlbnRyeS0+a2V5KSkKIAl7Ci0JCUdJU1RFTlRSWSAgKnJldHZhbCA9 IChHSVNURU5UUlkgKikgcGFsbG9jKHNpemVvZihHSVNURU5UUlkpKTsKKwkJR0lTVEVOVFJZ ICAqcmV0dmFsID0gcGFsbG9jX29iamVjdChHSVNURU5UUlkpOwogCiAJCWdpc3RlbnRyeWlu aXQoKnJldHZhbCwgUG9pbnRlckdldERhdHVtKGtleSksCiAJCQkJCSAgZW50cnktPnJlbCwg ZW50cnktPnBhZ2UsCkBAIC0yODksNyArMjg5LDcgQEAgZ2J0X3Zhcl9jb21wcmVzcyhHSVNU RU5UUlkgKmVudHJ5LCBjb25zdCBnYnRyZWVfdmluZm8gKnRpbmZvKQogCiAJCXIgPSBnYnRf dmFyX2tleV9mcm9tX2RhdHVtKGxlYWYpOwogCi0JCXJldHZhbCA9IHBhbGxvYyhzaXplb2Yo R0lTVEVOVFJZKSk7CisJCXJldHZhbCA9IHBhbGxvY19vYmplY3QoR0lTVEVOVFJZKTsKIAkJ Z2lzdGVudHJ5aW5pdCgqcmV0dmFsLCBQb2ludGVyR2V0RGF0dW0ociksCiAJCQkJCSAgZW50 cnktPnJlbCwgZW50cnktPnBhZ2UsCiAJCQkJCSAgZW50cnktPm9mZnNldCwgdHJ1ZSk7CkBA IC0zMDksNyArMzA5LDcgQEAgZ2J0X3Zhcl9mZXRjaChQR19GVU5DVElPTl9BUkdTKQogCUdC VF9WQVJLRVlfUiByID0gZ2J0X3Zhcl9rZXlfcmVhZGFibGUoa2V5KTsKIAlHSVNURU5UUlkg ICpyZXR2YWw7CiAKLQlyZXR2YWwgPSBwYWxsb2Moc2l6ZW9mKEdJU1RFTlRSWSkpOworCXJl dHZhbCA9IHBhbGxvY19vYmplY3QoR0lTVEVOVFJZKTsKIAlnaXN0ZW50cnlpbml0KCpyZXR2 YWwsIFBvaW50ZXJHZXREYXR1bShyLmxvd2VyKSwKIAkJCQkgIGVudHJ5LT5yZWwsIGVudHJ5 LT5wYWdlLAogCQkJCSAgZW50cnktPm9mZnNldCwgdHJ1ZSk7CkBAIC00NzYsNyArNDc2LDcg QEAgZ2J0X3Zhcl9waWNrc3BsaXQoY29uc3QgR2lzdEVudHJ5VmVjdG9yICplbnRyeXZlYywg R0lTVF9TUExJVFZFQyAqdiwKIAl2LT5zcGxfbmxlZnQgPSAwOwogCXYtPnNwbF9ucmlnaHQg PSAwOwogCi0Jc3YgPSBwYWxsb2Moc2l6ZW9mKGJ5dGVhICopICogKG1heG9mZiArIDEpKTsK KwlzdiA9IHBhbGxvY19hcnJheShieXRlYSAqLCAobWF4b2ZmICsgMSkpOwogCiAJLyogU29y dCBlbnRyaWVzICovCiAKZGlmZiAtLWdpdCBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV91 dWlkLmMgYi9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfdXVpZC5jCmluZGV4IDA3ZjMwNGYz OWYxLi5kNDIzYWVhMTVjMSAxMDA2NDQKLS0tIGEvY29udHJpYi9idHJlZV9naXN0L2J0cmVl X3V1aWQuYworKysgYi9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfdXVpZC5jCkBAIC0xMDgs NyArMTA4LDcgQEAgZ2J0X3V1aWRfY29tcHJlc3MoUEdfRlVOQ1RJT05fQVJHUykKIAkJY2hh cgkgICAqciA9IChjaGFyICopIHBhbGxvYygyICogVVVJRF9MRU4pOwogCQlwZ191dWlkX3Qg ICprZXkgPSBEYXR1bUdldFVVSURQKGVudHJ5LT5rZXkpOwogCi0JCXJldHZhbCA9IHBhbGxv YyhzaXplb2YoR0lTVEVOVFJZKSk7CisJCXJldHZhbCA9IHBhbGxvY19vYmplY3QoR0lTVEVO VFJZKTsKIAogCQltZW1jcHkociwga2V5LCBVVUlEX0xFTik7CiAJCW1lbWNweShyICsgVVVJ RF9MRU4sIGtleSwgVVVJRF9MRU4pOwpAQCAtMTU3LDcgKzE1Nyw3IEBAIERhdHVtCiBnYnRf dXVpZF91bmlvbihQR19GVU5DVElPTl9BUkdTKQogewogCUdpc3RFbnRyeVZlY3RvciAqZW50 cnl2ZWMgPSAoR2lzdEVudHJ5VmVjdG9yICopIFBHX0dFVEFSR19QT0lOVEVSKDApOwotCXZv aWQJICAgKm91dCA9IHBhbGxvYyhzaXplb2YodXVpZEtFWSkpOworCXZvaWQJICAgKm91dCA9 IHBhbGxvY19vYmplY3QodXVpZEtFWSk7CiAKIAkqKGludCAqKSBQR19HRVRBUkdfUE9JTlRF UigxKSA9IHNpemVvZih1dWlkS0VZKTsKIAlQR19SRVRVUk5fUE9JTlRFUihnYnRfbnVtX3Vu aW9uKG91dCwgZW50cnl2ZWMsICZ0aW5mbywgZmNpbmZvLT5mbGluZm8pKTsKZGlmZiAtLWdp dCBhL2NvbnRyaWIvY3ViZS9jdWJlLmMgYi9jb250cmliL2N1YmUvY3ViZS5jCmluZGV4IDhk MzY1NGFiN2FhLi45YmJhNDE2MDc4NSAxMDA2NDQKLS0tIGEvY29udHJpYi9jdWJlL2N1YmUu YworKysgYi9jb250cmliL2N1YmUvY3ViZS5jCkBAIC00NzEsNyArNDcxLDcgQEAgZ19jdWJl X2RlY29tcHJlc3MoUEdfRlVOQ1RJT05fQVJHUykKIAogCWlmIChrZXkgIT0gRGF0dW1HZXRO REJPWFAoZW50cnktPmtleSkpCiAJewotCQlHSVNURU5UUlkgICpyZXR2YWwgPSAoR0lTVEVO VFJZICopIHBhbGxvYyhzaXplb2YoR0lTVEVOVFJZKSk7CisJCUdJU1RFTlRSWSAgKnJldHZh bCA9IHBhbGxvY19vYmplY3QoR0lTVEVOVFJZKTsKIAogCQlnaXN0ZW50cnlpbml0KCpyZXR2 YWwsIFBvaW50ZXJHZXREYXR1bShrZXkpLAogCQkJCQkgIGVudHJ5LT5yZWwsIGVudHJ5LT5w YWdlLApkaWZmIC0tZ2l0IGEvY29udHJpYi9kaWN0X2ludC9kaWN0X2ludC5jIGIvY29udHJp Yi9kaWN0X2ludC9kaWN0X2ludC5jCmluZGV4IGJkYWQ1MmQyMDI4Li41ZDk1MjNhMWE2MyAx MDA2NDQKLS0tIGEvY29udHJpYi9kaWN0X2ludC9kaWN0X2ludC5jCisrKyBiL2NvbnRyaWIv ZGljdF9pbnQvZGljdF9pbnQuYwpAQCAtMzgsNyArMzgsNyBAQCBkaW50ZGljdF9pbml0KFBH X0ZVTkNUSU9OX0FSR1MpCiAJRGljdEludCAgICAqZDsKIAlMaXN0Q2VsbCAgICpsOwogCi0J ZCA9IChEaWN0SW50ICopIHBhbGxvYzAoc2l6ZW9mKERpY3RJbnQpKTsKKwlkID0gcGFsbG9j MF9vYmplY3QoRGljdEludCk7CiAJZC0+bWF4bGVuID0gNjsKIAlkLT5yZWplY3Rsb25nID0g ZmFsc2U7CiAJZC0+YWJzdmFsID0gZmFsc2U7CkBAIC04Myw3ICs4Myw3IEBAIGRpbnRkaWN0 X2xleGl6ZShQR19GVU5DVElPTl9BUkdTKQogCWNoYXIJICAgKmluID0gKGNoYXIgKikgUEdf R0VUQVJHX1BPSU5URVIoMSk7CiAJaW50CQkJbGVuID0gUEdfR0VUQVJHX0lOVDMyKDIpOwog CWNoYXIJICAgKnR4dDsKLQlUU0xleGVtZSAgICpyZXMgPSBwYWxsb2MwKHNpemVvZihUU0xl eGVtZSkgKiAyKTsKKwlUU0xleGVtZSAgICpyZXMgPSBwYWxsb2MwX2FycmF5KFRTTGV4ZW1l LCAyKTsKIAogCXJlc1sxXS5sZXhlbWUgPSBOVUxMOwogCmRpZmYgLS1naXQgYS9jb250cmli L2RpY3RfeHN5bi9kaWN0X3hzeW4uYyBiL2NvbnRyaWIvZGljdF94c3luL2RpY3RfeHN5bi5j CmluZGV4IDFlYzUyODVkNmQxLi5iYmIyZmQ4NTBmZCAxMDA2NDQKLS0tIGEvY29udHJpYi9k aWN0X3hzeW4vZGljdF94c3luLmMKKysrIGIvY29udHJpYi9kaWN0X3hzeW4vZGljdF94c3lu LmMKQEAgLTEwOSw5ICsxMDksOSBAQCByZWFkX2RpY3Rpb25hcnkoRGljdFN5biAqZCwgY29u c3QgY2hhciAqZmlsZW5hbWUpCiAJCQl7CiAJCQkJZC0+bGVuID0gKGQtPmxlbiA+IDApID8g MiAqIGQtPmxlbiA6IDE2OwogCQkJCWlmIChkLT5zeW4pCi0JCQkJCWQtPnN5biA9IChTeW4g KikgcmVwYWxsb2MoZC0+c3luLCBzaXplb2YoU3luKSAqIGQtPmxlbik7CisJCQkJCWQtPnN5 biA9IHJlcGFsbG9jX2FycmF5KGQtPnN5biwgU3luLCBkLT5sZW4pOwogCQkJCWVsc2UKLQkJ CQkJZC0+c3luID0gKFN5biAqKSBwYWxsb2Moc2l6ZW9mKFN5bikgKiBkLT5sZW4pOworCQkJ CQlkLT5zeW4gPSBwYWxsb2NfYXJyYXkoU3luLCBkLT5sZW4pOwogCQkJfQogCiAJCQkvKiBT YXZlIGZpcnN0IHdvcmQgb25seSBpZiB3ZSB3aWxsIG1hdGNoIGl0ICovCkBAIC0xNTAsNyAr MTUwLDcgQEAgZHhzeW5faW5pdChQR19GVU5DVElPTl9BUkdTKQogCUxpc3RDZWxsICAgKmw7 CiAJY2hhcgkgICAqZmlsZW5hbWUgPSBOVUxMOwogCi0JZCA9IChEaWN0U3luICopIHBhbGxv YzAoc2l6ZW9mKERpY3RTeW4pKTsKKwlkID0gcGFsbG9jMF9vYmplY3QoRGljdFN5bik7CiAJ ZC0+bGVuID0gMDsKIAlkLT5zeW4gPSBOVUxMOwogCWQtPm1hdGNob3JpZyA9IHRydWU7CkBA IC0yMzUsNyArMjM1LDcgQEAgZHhzeW5fbGV4aXplKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCWNo YXIJICAgKmVuZDsKIAkJaW50CQkJbnN5bnMgPSAwOwogCi0JCXJlcyA9IHBhbGxvYyhzaXpl b2YoVFNMZXhlbWUpKTsKKwkJcmVzID0gcGFsbG9jX29iamVjdChUU0xleGVtZSk7CiAKIAkJ cG9zID0gdmFsdWU7CiAJCXdoaWxlICgoc3luID0gZmluZF93b3JkKHBvcywgJmVuZCkpICE9 IE5VTEwpCmRpZmYgLS1naXQgYS9jb250cmliL2ZpbGVfZmR3L2ZpbGVfZmR3LmMgYi9jb250 cmliL2ZpbGVfZmR3L2ZpbGVfZmR3LmMKaW5kZXggNzA1NjRhNjhiMTMuLmU5Y2RhM2M0N2Qx IDEwMDY0NAotLS0gYS9jb250cmliL2ZpbGVfZmR3L2ZpbGVfZmR3LmMKKysrIGIvY29udHJp Yi9maWxlX2Zkdy9maWxlX2Zkdy5jCkBAIC01MzEsNyArNTMxLDcgQEAgZmlsZUdldEZvcmVp Z25SZWxTaXplKFBsYW5uZXJJbmZvICpyb290LAogCSAqIHdlIG1pZ2h0IGFzIHdlbGwgZ2V0 IGV2ZXJ5dGhpbmcgYW5kIG5vdCBuZWVkIHRvIHJlLWZldGNoIGl0IGxhdGVyIGluCiAJICog cGxhbm5pbmcuCiAJICovCi0JZmR3X3ByaXZhdGUgPSAoRmlsZUZkd1BsYW5TdGF0ZSAqKSBw YWxsb2Moc2l6ZW9mKEZpbGVGZHdQbGFuU3RhdGUpKTsKKwlmZHdfcHJpdmF0ZSA9IHBhbGxv Y19vYmplY3QoRmlsZUZkd1BsYW5TdGF0ZSk7CiAJZmlsZUdldE9wdGlvbnMoZm9yZWlnbnRh YmxlaWQsCiAJCQkJICAgJmZkd19wcml2YXRlLT5maWxlbmFtZSwKIAkJCQkgICAmZmR3X3By aXZhdGUtPmlzX3Byb2dyYW0sCkBAIC03MTIsNyArNzEyLDcgQEAgZmlsZUJlZ2luRm9yZWln blNjYW4oRm9yZWlnblNjYW5TdGF0ZSAqbm9kZSwgaW50IGVmbGFncykKIAkgKiBTYXZlIHN0 YXRlIGluIG5vZGUtPmZkd19zdGF0ZS4gIFdlIG11c3Qgc2F2ZSBlbm91Z2ggaW5mb3JtYXRp b24gdG8gY2FsbAogCSAqIEJlZ2luQ29weUZyb20oKSBhZ2Fpbi4KIAkgKi8KLQlmZXN0YXRl ID0gKEZpbGVGZHdFeGVjdXRpb25TdGF0ZSAqKSBwYWxsb2Moc2l6ZW9mKEZpbGVGZHdFeGVj dXRpb25TdGF0ZSkpOworCWZlc3RhdGUgPSBwYWxsb2Nfb2JqZWN0KEZpbGVGZHdFeGVjdXRp b25TdGF0ZSk7CiAJZmVzdGF0ZS0+ZmlsZW5hbWUgPSBmaWxlbmFtZTsKIAlmZXN0YXRlLT5p c19wcm9ncmFtID0gaXNfcHJvZ3JhbTsKIAlmZXN0YXRlLT5vcHRpb25zID0gb3B0aW9uczsK ZGlmZiAtLWdpdCBhL2NvbnRyaWIvZnV6enlzdHJtYXRjaC9mdXp6eXN0cm1hdGNoLmMgYi9j b250cmliL2Z1enp5c3RybWF0Y2gvZnV6enlzdHJtYXRjaC5jCmluZGV4IGU3Y2MzMTRiNzYz Li5jOGY3NmRmYzgzMyAxMDA2NDQKLS0tIGEvY29udHJpYi9mdXp6eXN0cm1hdGNoL2Z1enp5 c3RybWF0Y2guYworKysgYi9jb250cmliL2Z1enp5c3RybWF0Y2gvZnV6enlzdHJtYXRjaC5j CkBAIC0zNzAsMTEgKzM3MCwxMSBAQCBfbWV0YXBob25lKGNoYXIgKndvcmQsCQkJLyogSU4g Ki8KIAkvKi0tIEFsbG9jYXRlIG1lbW9yeSBmb3Igb3VyIHBob25lZF9waHJhc2UgLS0qLwog CWlmIChtYXhfcGhvbmVtZXMgPT0gMCkKIAl7CQkJCQkJCS8qIEFzc3VtZSBsYXJnZXN0IHBv c3NpYmxlICovCi0JCSpwaG9uZWRfd29yZCA9IHBhbGxvYyhzaXplb2YoY2hhcikgKiBzdHJs ZW4od29yZCkgKyAxKTsKKwkJKnBob25lZF93b3JkID0gcGFsbG9jX2FycmF5KGNoYXIsIHN0 cmxlbih3b3JkKSArIDEpOwogCX0KIAllbHNlCiAJewotCQkqcGhvbmVkX3dvcmQgPSBwYWxs b2Moc2l6ZW9mKGNoYXIpICogbWF4X3Bob25lbWVzICsgMSk7CisJCSpwaG9uZWRfd29yZCA9 IHBhbGxvY19hcnJheShjaGFyLCBtYXhfcGhvbmVtZXMgKyAxKTsKIAl9CiAKIAkvKi0tIFRo ZSBmaXJzdCBwaG9uZW1lIGhhcyB0byBiZSBwcm9jZXNzZWQgc3BlY2lhbGx5LiAtLSovCmRp ZmYgLS1naXQgYS9jb250cmliL2hzdG9yZS9oc3RvcmVfZ2luLmMgYi9jb250cmliL2hzdG9y ZS9oc3RvcmVfZ2luLmMKaW5kZXggMmU1ZmExMTU5MjQuLjRlNDNhZWViMDVkIDEwMDY0NAot LS0gYS9jb250cmliL2hzdG9yZS9oc3RvcmVfZ2luLmMKKysrIGIvY29udHJpYi9oc3RvcmUv aHN0b3JlX2dpbi5jCkBAIC01Myw3ICs1Myw3IEBAIGdpbl9leHRyYWN0X2hzdG9yZShQR19G VU5DVElPTl9BUkdTKQogCiAJKm5lbnRyaWVzID0gMiAqIGNvdW50OwogCWlmIChjb3VudCkK LQkJZW50cmllcyA9IChEYXR1bSAqKSBwYWxsb2Moc2l6ZW9mKERhdHVtKSAqIDIgKiBjb3Vu dCk7CisJCWVudHJpZXMgPSBwYWxsb2NfYXJyYXkoRGF0dW0sIDIgKiBjb3VudCk7CiAKIAlm b3IgKGkgPSAwOyBpIDwgY291bnQ7ICsraSkKIAl7CkBAIC0xMDMsNyArMTAzLDcgQEAgZ2lu X2V4dHJhY3RfaHN0b3JlX3F1ZXJ5KFBHX0ZVTkNUSU9OX0FSR1MpCiAJCXRleHQJICAgKml0 ZW07CiAKIAkJKm5lbnRyaWVzID0gMTsKLQkJZW50cmllcyA9IChEYXR1bSAqKSBwYWxsb2Mo c2l6ZW9mKERhdHVtKSk7CisJCWVudHJpZXMgPSBwYWxsb2Nfb2JqZWN0KERhdHVtKTsKIAkJ aXRlbSA9IG1ha2VpdGVtKFZBUkRBVEFfQU5ZKHF1ZXJ5KSwgVkFSU0laRV9BTllfRVhIRFIo cXVlcnkpLCBLRVlGTEFHKTsKIAkJZW50cmllc1swXSA9IFBvaW50ZXJHZXREYXR1bShpdGVt KTsKIAl9CkBAIC0xMjAsNyArMTIwLDcgQEAgZ2luX2V4dHJhY3RfaHN0b3JlX3F1ZXJ5KFBH X0ZVTkNUSU9OX0FSR1MpCiAKIAkJZGVjb25zdHJ1Y3RfYXJyYXlfYnVpbHRpbihxdWVyeSwg VEVYVE9JRCwgJmtleV9kYXR1bXMsICZrZXlfbnVsbHMsICZrZXlfY291bnQpOwogCi0JCWVu dHJpZXMgPSAoRGF0dW0gKikgcGFsbG9jKHNpemVvZihEYXR1bSkgKiBrZXlfY291bnQpOwor CQllbnRyaWVzID0gcGFsbG9jX2FycmF5KERhdHVtLCBrZXlfY291bnQpOwogCiAJCWZvciAo aSA9IDAsIGogPSAwOyBpIDwga2V5X2NvdW50OyArK2kpCiAJCXsKZGlmZiAtLWdpdCBhL2Nv bnRyaWIvaHN0b3JlL2hzdG9yZV9naXN0LmMgYi9jb250cmliL2hzdG9yZS9oc3RvcmVfZ2lz dC5jCmluZGV4IDY5NTE1ZGMzZDNmLi4zNjgyNWVmODY3YiAxMDA2NDQKLS0tIGEvY29udHJp Yi9oc3RvcmUvaHN0b3JlX2dpc3QuYworKysgYi9jb250cmliL2hzdG9yZS9oc3RvcmVfZ2lz dC5jCkBAIC0xNzUsNyArMTc1LDcgQEAgZ2hzdG9yZV9jb21wcmVzcyhQR19GVU5DVElPTl9B UkdTKQogCQkJfQogCQl9CiAKLQkJcmV0dmFsID0gKEdJU1RFTlRSWSAqKSBwYWxsb2Moc2l6 ZW9mKEdJU1RFTlRSWSkpOworCQlyZXR2YWwgPSBwYWxsb2Nfb2JqZWN0KEdJU1RFTlRSWSk7 CiAJCWdpc3RlbnRyeWluaXQoKnJldHZhbCwgUG9pbnRlckdldERhdHVtKHJlcyksCiAJCQkJ CSAgZW50cnktPnJlbCwgZW50cnktPnBhZ2UsCiAJCQkJCSAgZW50cnktPm9mZnNldCwKQEAg LTE5NSw3ICsxOTUsNyBAQCBnaHN0b3JlX2NvbXByZXNzKFBHX0ZVTkNUSU9OX0FSR1MpCiAK IAkJcmVzID0gZ2hzdG9yZV9hbGxvYyh0cnVlLCBzaWdsZW4sIE5VTEwpOwogCi0JCXJldHZh bCA9IChHSVNURU5UUlkgKikgcGFsbG9jKHNpemVvZihHSVNURU5UUlkpKTsKKwkJcmV0dmFs ID0gcGFsbG9jX29iamVjdChHSVNURU5UUlkpOwogCQlnaXN0ZW50cnlpbml0KCpyZXR2YWws IFBvaW50ZXJHZXREYXR1bShyZXMpLAogCQkJCQkgIGVudHJ5LT5yZWwsIGVudHJ5LT5wYWdl LAogCQkJCQkgIGVudHJ5LT5vZmZzZXQsCkBAIC00MjksNyArNDI5LDcgQEAgZ2hzdG9yZV9w aWNrc3BsaXQoUEdfRlVOQ1RJT05fQVJHUykKIAogCW1heG9mZiA9IE9mZnNldE51bWJlck5l eHQobWF4b2ZmKTsKIAkvKiBzb3J0IGJlZm9yZSAuLi4gKi8KLQljb3N0dmVjdG9yID0gKFNQ TElUQ09TVCAqKSBwYWxsb2Moc2l6ZW9mKFNQTElUQ09TVCkgKiBtYXhvZmYpOworCWNvc3R2 ZWN0b3IgPSBwYWxsb2NfYXJyYXkoU1BMSVRDT1NULCBtYXhvZmYpOwogCWZvciAoaiA9IEZp cnN0T2Zmc2V0TnVtYmVyOyBqIDw9IG1heG9mZjsgaiA9IE9mZnNldE51bWJlck5leHQoaikp CiAJewogCQljb3N0dmVjdG9yW2ogLSAxXS5wb3MgPSBqOwpkaWZmIC0tZ2l0IGEvY29udHJp Yi9oc3RvcmUvaHN0b3JlX2lvLmMgYi9jb250cmliL2hzdG9yZS9oc3RvcmVfaW8uYwppbmRl eCA5YzUzODc3YzRhNS4uNmIwMWYyN2M1YTQgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvaHN0b3Jl L2hzdG9yZV9pby5jCisrKyBiL2NvbnRyaWIvaHN0b3JlL2hzdG9yZV9pby5jCkBAIC0yMjEs NyArMjIxLDcgQEAgcGFyc2VfaHN0b3JlKEhTUGFyc2VyICpzdGF0ZSkKIAlib29sCQllc2Nh cGVkID0gZmFsc2U7CiAKIAlzdGF0ZS0+cGxlbiA9IDE2OwotCXN0YXRlLT5wYWlycyA9IChQ YWlycyAqKSBwYWxsb2Moc2l6ZW9mKFBhaXJzKSAqIHN0YXRlLT5wbGVuKTsKKwlzdGF0ZS0+ cGFpcnMgPSBwYWxsb2NfYXJyYXkoUGFpcnMsIHN0YXRlLT5wbGVuKTsKIAlzdGF0ZS0+cGN1 ciA9IDA7CiAJc3RhdGUtPnB0ciA9IHN0YXRlLT5iZWdpbjsKIAlzdGF0ZS0+d29yZCA9IE5V TEw7CmRpZmYgLS1naXQgYS9jb250cmliL2hzdG9yZS9oc3RvcmVfb3AuYyBiL2NvbnRyaWIv aHN0b3JlL2hzdG9yZV9vcC5jCmluZGV4IGJjYmE3NWY5MjU4Li5jYWI1OTcwMGMwZCAxMDA2 NDQKLS0tIGEvY29udHJpYi9oc3RvcmUvaHN0b3JlX29wLmMKKysrIGIvY29udHJpYi9oc3Rv cmUvaHN0b3JlX29wLmMKQEAgLTEwMSw3ICsxMDEsNyBAQCBoc3RvcmVBcnJheVRvUGFpcnMo QXJyYXlUeXBlICphLCBpbnQgKm5wYWlycykKIAkJCQkgZXJybXNnKCJudW1iZXIgb2YgcGFp cnMgKCVkKSBleGNlZWRzIHRoZSBtYXhpbXVtIGFsbG93ZWQgKCVkKSIsCiAJCQkJCQlrZXlf Y291bnQsIChpbnQpIChNYXhBbGxvY1NpemUgLyBzaXplb2YoUGFpcnMpKSkpKTsKIAotCWtl eV9wYWlycyA9IHBhbGxvYyhzaXplb2YoUGFpcnMpICoga2V5X2NvdW50KTsKKwlrZXlfcGFp cnMgPSBwYWxsb2NfYXJyYXkoUGFpcnMsIGtleV9jb3VudCk7CiAKIAlmb3IgKGkgPSAwLCBq ID0gMDsgaSA8IGtleV9jb3VudDsgaSsrKQogCXsKQEAgLTU4OCw4ICs1ODgsOCBAQCBoc3Rv cmVfc2xpY2VfdG9fYXJyYXkoUEdfRlVOQ1RJT05fQVJHUykKIAkJUEdfUkVUVVJOX1BPSU5U RVIoYW91dCk7CiAJfQogCi0Jb3V0X2RhdHVtcyA9IHBhbGxvYyhzaXplb2YoRGF0dW0pICog a2V5X2NvdW50KTsKLQlvdXRfbnVsbHMgPSBwYWxsb2Moc2l6ZW9mKGJvb2wpICoga2V5X2Nv dW50KTsKKwlvdXRfZGF0dW1zID0gcGFsbG9jX2FycmF5KERhdHVtLCBrZXlfY291bnQpOwor CW91dF9udWxscyA9IHBhbGxvY19hcnJheShib29sLCBrZXlfY291bnQpOwogCiAJZm9yIChp ID0gMDsgaSA8IGtleV9jb3VudDsgKytpKQogCXsKQEAgLTY0OSw3ICs2NDksNyBAQCBoc3Rv cmVfc2xpY2VfdG9faHN0b3JlKFBHX0ZVTkNUSU9OX0FSR1MpCiAJfQogCiAJLyogaHN0b3Jl QXJyYXlUb1BhaXJzKCkgY2hlY2tlZCBvdmVyZmxvdyAqLwotCW91dF9wYWlycyA9IHBhbGxv YyhzaXplb2YoUGFpcnMpICogbmtleXMpOworCW91dF9wYWlycyA9IHBhbGxvY19hcnJheShQ YWlycywgbmtleXMpOwogCWJ1ZnNpeiA9IDA7CiAKIAkvKgpAQCAtNzA1LDcgKzcwNSw3IEBA IGhzdG9yZV9ha2V5cyhQR19GVU5DVElPTl9BUkdTKQogCQlQR19SRVRVUk5fUE9JTlRFUihh KTsKIAl9CiAKLQlkID0gKERhdHVtICopIHBhbGxvYyhzaXplb2YoRGF0dW0pICogY291bnQp OworCWQgPSBwYWxsb2NfYXJyYXkoRGF0dW0sIGNvdW50KTsKIAogCWZvciAoaSA9IDA7IGkg PCBjb3VudDsgKytpKQogCXsKQEAgLTc0MSw4ICs3NDEsOCBAQCBoc3RvcmVfYXZhbHMoUEdf RlVOQ1RJT05fQVJHUykKIAkJUEdfUkVUVVJOX1BPSU5URVIoYSk7CiAJfQogCi0JZCA9IChE YXR1bSAqKSBwYWxsb2Moc2l6ZW9mKERhdHVtKSAqIGNvdW50KTsKLQludWxscyA9IChib29s ICopIHBhbGxvYyhzaXplb2YoYm9vbCkgKiBjb3VudCk7CisJZCA9IHBhbGxvY19hcnJheShE YXR1bSwgY291bnQpOworCW51bGxzID0gcGFsbG9jX2FycmF5KGJvb2wsIGNvdW50KTsKIAog CWZvciAoaSA9IDA7IGkgPCBjb3VudDsgKytpKQogCXsKQEAgLTc4Niw4ICs3ODYsOCBAQCBo c3RvcmVfdG9fYXJyYXlfaW50ZXJuYWwoSFN0b3JlICpocywgaW50IG5kaW1zKQogCQlyZXR1 cm4gY29uc3RydWN0X2VtcHR5X2FycmF5KFRFWFRPSUQpOwogCiAJb3V0X3NpemVbMF0gPSBj b3VudCAqIDIgLyBuZGltczsKLQlvdXRfZGF0dW1zID0gcGFsbG9jKHNpemVvZihEYXR1bSkg KiBjb3VudCAqIDIpOwotCW91dF9udWxscyA9IHBhbGxvYyhzaXplb2YoYm9vbCkgKiBjb3Vu dCAqIDIpOworCW91dF9kYXR1bXMgPSBwYWxsb2NfYXJyYXkoRGF0dW0sIGNvdW50ICogMik7 CisJb3V0X251bGxzID0gcGFsbG9jX2FycmF5KGJvb2wsIGNvdW50ICogMik7CiAKIAlmb3Ig KGkgPSAwOyBpIDwgY291bnQ7ICsraSkKIAl7CmRpZmYgLS1naXQgYS9jb250cmliL2ludGFy cmF5L19pbnRfYm9vbC5jIGIvY29udHJpYi9pbnRhcnJheS9faW50X2Jvb2wuYwppbmRleCAy YjJjM2Y0MDI5ZS4uZjQ1ZGY4NmQ2MGMgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvaW50YXJyYXkv X2ludF9ib29sLmMKKysrIGIvY29udHJpYi9pbnRhcnJheS9faW50X2Jvb2wuYwpAQCAtMTM1 LDcgKzEzNSw3IEBAIGdldHRva2VuKFdPUktTVEFURSAqc3RhdGUsIGludDMyICp2YWwpCiBz dGF0aWMgdm9pZAogcHVzaHF1ZXJ5KFdPUktTVEFURSAqc3RhdGUsIGludDMyIHR5cGUsIGlu dDMyIHZhbCkKIHsKLQlOT0RFCSAgICp0bXAgPSAoTk9ERSAqKSBwYWxsb2Moc2l6ZW9mKE5P REUpKTsKKwlOT0RFCSAgICp0bXAgPSBwYWxsb2Nfb2JqZWN0KE5PREUpOwogCiAJdG1wLT50 eXBlID0gdHlwZTsKIAl0bXAtPnZhbCA9IHZhbDsKQEAgLTM0Niw3ICszNDYsNyBAQCBnaW5f Ym9vbF9jb25zaXN0ZW50KFFVRVJZVFlQRSAqcXVlcnksIGJvb2wgKmNoZWNrKQogCSAqIGV4 dHJhY3Rpb24gY29kZSBpbiBnaW5pbnQ0X3F1ZXJ5ZXh0cmFjdC4KIAkgKi8KIAlnY3YuZmly c3QgPSBpdGVtczsKLQlnY3YubWFwcGVkX2NoZWNrID0gKGJvb2wgKikgcGFsbG9jKHNpemVv Zihib29sKSAqIHF1ZXJ5LT5zaXplKTsKKwlnY3YubWFwcGVkX2NoZWNrID0gcGFsbG9jX2Fy cmF5KGJvb2wsIHF1ZXJ5LT5zaXplKTsKIAlmb3IgKGkgPSAwOyBpIDwgcXVlcnktPnNpemU7 IGkrKykKIAl7CiAJCWlmIChpdGVtc1tpXS50eXBlID09IFZBTCkKQEAgLTYxMyw3ICs2MTMs NyBAQCBpbmZpeChJTkZJWCAqaW4sIGJvb2wgZmlyc3QpCiAKIAkJbnJtLmN1cnBvbCA9IGlu LT5jdXJwb2w7CiAJCW5ybS5idWZsZW4gPSAxNjsKLQkJbnJtLmN1ciA9IG5ybS5idWYgPSAo Y2hhciAqKSBwYWxsb2Moc2l6ZW9mKGNoYXIpICogbnJtLmJ1Zmxlbik7CisJCW5ybS5jdXIg PSBucm0uYnVmID0gcGFsbG9jX2FycmF5KGNoYXIsIG5ybS5idWZsZW4pOwogCiAJCS8qIGdl dCByaWdodCBvcGVyYW5kICovCiAJCWluZml4KCZucm0sIGZhbHNlKTsKQEAgLTY1MSw3ICs2 NTEsNyBAQCBicWFycl9vdXQoUEdfRlVOQ1RJT05fQVJHUykKIAogCW5ybS5jdXJwb2wgPSBH RVRRVUVSWShxdWVyeSkgKyBxdWVyeS0+c2l6ZSAtIDE7CiAJbnJtLmJ1ZmxlbiA9IDMyOwot CW5ybS5jdXIgPSBucm0uYnVmID0gKGNoYXIgKikgcGFsbG9jKHNpemVvZihjaGFyKSAqIG5y bS5idWZsZW4pOworCW5ybS5jdXIgPSBucm0uYnVmID0gcGFsbG9jX2FycmF5KGNoYXIsIG5y bS5idWZsZW4pOwogCSoobnJtLmN1cikgPSAnXDAnOwogCWluZml4KCZucm0sIHRydWUpOwog CmRpZmYgLS1naXQgYS9jb250cmliL2ludGFycmF5L19pbnRfZ2luLmMgYi9jb250cmliL2lu dGFycmF5L19pbnRfZ2luLmMKaW5kZXggYjc5NThkOGVjYTUuLmM2MDYxNmMzZjc3IDEwMDY0 NAotLS0gYS9jb250cmliL2ludGFycmF5L19pbnRfZ2luLmMKKysrIGIvY29udHJpYi9pbnRh cnJheS9faW50X2dpbi5jCkBAIC00Miw3ICs0Miw3IEBAIGdpbmludDRfcXVlcnlleHRyYWN0 KFBHX0ZVTkNUSU9OX0FSR1MpCiAJCS8qCiAJCSAqIEV4dHJhY3QgYWxsIHRoZSBWQUwgaXRl bXMgYXMgdGhpbmdzIHdlIHdhbnQgR0lOIHRvIGNoZWNrIGZvci4KIAkJICovCi0JCXJlcyA9 IChEYXR1bSAqKSBwYWxsb2Moc2l6ZW9mKERhdHVtKSAqIHF1ZXJ5LT5zaXplKTsKKwkJcmVz ID0gcGFsbG9jX2FycmF5KERhdHVtLCBxdWVyeS0+c2l6ZSk7CiAJCSpuZW50cmllcyA9IDA7 CiAKIAkJZm9yIChpID0gMDsgaSA8IHF1ZXJ5LT5zaXplOyBpKyspCkBAIC02NSw3ICs2NSw3 IEBAIGdpbmludDRfcXVlcnlleHRyYWN0KFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQlpbnQzMgkg ICAqYXJyOwogCQkJaW50MzIJCWk7CiAKLQkJCXJlcyA9IChEYXR1bSAqKSBwYWxsb2Moc2l6 ZW9mKERhdHVtKSAqICgqbmVudHJpZXMpKTsKKwkJCXJlcyA9IHBhbGxvY19hcnJheShEYXR1 bSwgKm5lbnRyaWVzKTsKIAogCQkJYXJyID0gQVJSUFRSKHF1ZXJ5KTsKIAkJCWZvciAoaSA9 IDA7IGkgPCAqbmVudHJpZXM7IGkrKykKZGlmZiAtLWdpdCBhL2NvbnRyaWIvaW50YXJyYXkv X2ludF9naXN0LmMgYi9jb250cmliL2ludGFycmF5L19pbnRfZ2lzdC5jCmluZGV4IGEwOWI3 ZmE4MTJjLi45MGNmMTFjMDFhNSAxMDA2NDQKLS0tIGEvY29udHJpYi9pbnRhcnJheS9faW50 X2dpc3QuYworKysgYi9jb250cmliL2ludGFycmF5L19pbnRfZ2lzdC5jCkBAIC0xODYsNyAr MTg2LDcgQEAgZ19pbnRfY29tcHJlc3MoUEdfRlVOQ1RJT05fQVJHUykKIAkJCQkJIGVycm1z ZygiaW5wdXQgYXJyYXkgaXMgdG9vIGJpZyAoJWQgbWF4aW11bSBhbGxvd2VkLCAlZCBjdXJy ZW50KSwgdXNlIGdpc3RfX2ludGJpZ19vcHMgb3BjbGFzcyBpbnN0ZWFkIiwKIAkJCQkJCQky ICogbnVtX3JhbmdlcyAtIDEsIEFSUk5FTEVNUyhyKSkpKTsKIAotCQlyZXR2YWwgPSBwYWxs b2Moc2l6ZW9mKEdJU1RFTlRSWSkpOworCQlyZXR2YWwgPSBwYWxsb2Nfb2JqZWN0KEdJU1RF TlRSWSk7CiAJCWdpc3RlbnRyeWluaXQoKnJldHZhbCwgUG9pbnRlckdldERhdHVtKHIpLAog CQkJCQkgIGVudHJ5LT5yZWwsIGVudHJ5LT5wYWdlLCBlbnRyeS0+b2Zmc2V0LCBmYWxzZSk7 CiAKQEAgLTI3Niw3ICsyNzYsNyBAQCBnX2ludF9jb21wcmVzcyhQR19GVU5DVElPTl9BUkdT KQogCQkJCQkgZXJybXNnKCJkYXRhIGlzIHRvbyBzcGFyc2UsIHJlY3JlYXRlIGluZGV4IHVz aW5nIGdpc3RfX2ludGJpZ19vcHMgb3BjbGFzcyBpbnN0ZWFkIikpKTsKIAogCQlyID0gcmVz aXplX2ludEFycmF5VHlwZShyLCBsZW4pOwotCQlyZXR2YWwgPSBwYWxsb2Moc2l6ZW9mKEdJ U1RFTlRSWSkpOworCQlyZXR2YWwgPSBwYWxsb2Nfb2JqZWN0KEdJU1RFTlRSWSk7CiAJCWdp c3RlbnRyeWluaXQoKnJldHZhbCwgUG9pbnRlckdldERhdHVtKHIpLAogCQkJCQkgIGVudHJ5 LT5yZWwsIGVudHJ5LT5wYWdlLCBlbnRyeS0+b2Zmc2V0LCBmYWxzZSk7CiAJCVBHX1JFVFVS Tl9QT0lOVEVSKHJldHZhbCk7CkBAIC0zMDYsNyArMzA2LDcgQEAgZ19pbnRfZGVjb21wcmVz cyhQR19GVU5DVElPTl9BUkdTKQogCXsKIAkJaWYgKGluICE9IChBcnJheVR5cGUgKikgRGF0 dW1HZXRQb2ludGVyKGVudHJ5LT5rZXkpKQogCQl7Ci0JCQlyZXR2YWwgPSBwYWxsb2Moc2l6 ZW9mKEdJU1RFTlRSWSkpOworCQkJcmV0dmFsID0gcGFsbG9jX29iamVjdChHSVNURU5UUlkp OwogCQkJZ2lzdGVudHJ5aW5pdCgqcmV0dmFsLCBQb2ludGVyR2V0RGF0dW0oaW4pLAogCQkJ CQkJICBlbnRyeS0+cmVsLCBlbnRyeS0+cGFnZSwgZW50cnktPm9mZnNldCwgZmFsc2UpOwog CQkJUEdfUkVUVVJOX1BPSU5URVIocmV0dmFsKTsKQEAgLTMyMSw3ICszMjEsNyBAQCBnX2lu dF9kZWNvbXByZXNzKFBHX0ZVTkNUSU9OX0FSR1MpCiAJewkJCQkJCQkvKiBub3QgY29tcHJl c3NlZCB2YWx1ZSAqLwogCQlpZiAoaW4gIT0gKEFycmF5VHlwZSAqKSBEYXR1bUdldFBvaW50 ZXIoZW50cnktPmtleSkpCiAJCXsKLQkJCXJldHZhbCA9IHBhbGxvYyhzaXplb2YoR0lTVEVO VFJZKSk7CisJCQlyZXR2YWwgPSBwYWxsb2Nfb2JqZWN0KEdJU1RFTlRSWSk7CiAJCQlnaXN0 ZW50cnlpbml0KCpyZXR2YWwsIFBvaW50ZXJHZXREYXR1bShpbiksCiAJCQkJCQkgIGVudHJ5 LT5yZWwsIGVudHJ5LT5wYWdlLCBlbnRyeS0+b2Zmc2V0LCBmYWxzZSk7CiAKQEAgLTM1MCw3 ICszNTAsNyBAQCBnX2ludF9kZWNvbXByZXNzKFBHX0ZVTkNUSU9OX0FSR1MpCiAKIAlpZiAo aW4gIT0gKEFycmF5VHlwZSAqKSBEYXR1bUdldFBvaW50ZXIoZW50cnktPmtleSkpCiAJCXBm cmVlKGluKTsKLQlyZXR2YWwgPSBwYWxsb2Moc2l6ZW9mKEdJU1RFTlRSWSkpOworCXJldHZh bCA9IHBhbGxvY19vYmplY3QoR0lTVEVOVFJZKTsKIAlnaXN0ZW50cnlpbml0KCpyZXR2YWws IFBvaW50ZXJHZXREYXR1bShyKSwKIAkJCQkgIGVudHJ5LT5yZWwsIGVudHJ5LT5wYWdlLCBl bnRyeS0+b2Zmc2V0LCBmYWxzZSk7CiAKQEAgLTUzNSw3ICs1MzUsNyBAQCBnX2ludF9waWNr c3BsaXQoUEdfRlVOQ1RJT05fQVJHUykKIAkvKgogCSAqIHNvcnQgZW50cmllcwogCSAqLwot CWNvc3R2ZWN0b3IgPSAoU1BMSVRDT1NUICopIHBhbGxvYyhzaXplb2YoU1BMSVRDT1NUKSAq IG1heG9mZik7CisJY29zdHZlY3RvciA9IHBhbGxvY19hcnJheShTUExJVENPU1QsIG1heG9m Zik7CiAJZm9yIChpID0gRmlyc3RPZmZzZXROdW1iZXI7IGkgPD0gbWF4b2ZmOyBpID0gT2Zm c2V0TnVtYmVyTmV4dChpKSkKIAl7CiAJCWNvc3R2ZWN0b3JbaSAtIDFdLnBvcyA9IGk7CmRp ZmYgLS1naXQgYS9jb250cmliL2ludGFycmF5L19pbnRiaWdfZ2lzdC5jIGIvY29udHJpYi9p bnRhcnJheS9faW50YmlnX2dpc3QuYwppbmRleCA5Njk5ZmJmM2I0Zi4uMGFmYThhNzNiNjgg MTAwNjQ0Ci0tLSBhL2NvbnRyaWIvaW50YXJyYXkvX2ludGJpZ19naXN0LmMKKysrIGIvY29u dHJpYi9pbnRhcnJheS9faW50YmlnX2dpc3QuYwpAQCAtMTc0LDcgKzE3NCw3IEBAIGdfaW50 YmlnX2NvbXByZXNzKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQlwdHIrKzsKIAkJfQogCi0JCXJl dHZhbCA9IChHSVNURU5UUlkgKikgcGFsbG9jKHNpemVvZihHSVNURU5UUlkpKTsKKwkJcmV0 dmFsID0gcGFsbG9jX29iamVjdChHSVNURU5UUlkpOwogCQlnaXN0ZW50cnlpbml0KCpyZXR2 YWwsIFBvaW50ZXJHZXREYXR1bShyZXMpLAogCQkJCQkgIGVudHJ5LT5yZWwsIGVudHJ5LT5w YWdlLAogCQkJCQkgIGVudHJ5LT5vZmZzZXQsIGZhbHNlKTsKQEAgLTE5NSw3ICsxOTUsNyBA QCBnX2ludGJpZ19jb21wcmVzcyhQR19GVU5DVElPTl9BUkdTKQogCQl9CiAKIAkJcmVzID0g X2ludGJpZ19hbGxvYyh0cnVlLCBzaWdsZW4sIHNpZ24pOwotCQlyZXR2YWwgPSAoR0lTVEVO VFJZICopIHBhbGxvYyhzaXplb2YoR0lTVEVOVFJZKSk7CisJCXJldHZhbCA9IHBhbGxvY19v YmplY3QoR0lTVEVOVFJZKTsKIAkJZ2lzdGVudHJ5aW5pdCgqcmV0dmFsLCBQb2ludGVyR2V0 RGF0dW0ocmVzKSwKIAkJCQkJICBlbnRyeS0+cmVsLCBlbnRyeS0+cGFnZSwKIAkJCQkJICBl bnRyeS0+b2Zmc2V0LCBmYWxzZSk7CkBAIC0zODUsNyArMzg1LDcgQEAgZ19pbnRiaWdfcGlj a3NwbGl0KFBHX0ZVTkNUSU9OX0FSR1MpCiAKIAltYXhvZmYgPSBPZmZzZXROdW1iZXJOZXh0 KG1heG9mZik7CiAJLyogc29ydCBiZWZvcmUgLi4uICovCi0JY29zdHZlY3RvciA9IChTUExJ VENPU1QgKikgcGFsbG9jKHNpemVvZihTUExJVENPU1QpICogbWF4b2ZmKTsKKwljb3N0dmVj dG9yID0gcGFsbG9jX2FycmF5KFNQTElUQ09TVCwgbWF4b2ZmKTsKIAlmb3IgKGogPSBGaXJz dE9mZnNldE51bWJlcjsgaiA8PSBtYXhvZmY7IGogPSBPZmZzZXROdW1iZXJOZXh0KGopKQog CXsKIAkJY29zdHZlY3RvcltqIC0gMV0ucG9zID0gajsKZGlmZiAtLWdpdCBhL2NvbnRyaWIv anNvbmJfcGxwZXJsL2pzb25iX3BscGVybC5jIGIvY29udHJpYi9qc29uYl9wbHBlcmwvanNv bmJfcGxwZXJsLmMKaW5kZXggYzAyZTJkNDFhZjEuLmE3MDhkOWZkODJlIDEwMDY0NAotLS0g YS9jb250cmliL2pzb25iX3BscGVybC9qc29uYl9wbHBlcmwuYworKysgYi9jb250cmliL2pz b25iX3BscGVybC9qc29uYl9wbHBlcmwuYwpAQCAtMjY2LDcgKzI2Niw3IEBAIFNWX3RvX0pz b25iVmFsdWUoU1YgKmluLCBKc29uYlBhcnNlU3RhdGUgKipqc29uYl9zdGF0ZSwgYm9vbCBp c19lbGVtKQogCS8qIFB1c2ggcmVzdWx0IGludG8gJ2pzb25iX3N0YXRlJyB1bmxlc3MgaXQg aXMgYSByYXcgc2NhbGFyLiAqLwogCXJldHVybiAqanNvbmJfc3RhdGUKIAkJPyBwdXNoSnNv bmJWYWx1ZShqc29uYl9zdGF0ZSwgaXNfZWxlbSA/IFdKQl9FTEVNIDogV0pCX1ZBTFVFLCAm b3V0KQotCQk6IG1lbWNweShwYWxsb2Moc2l6ZW9mKEpzb25iVmFsdWUpKSwgJm91dCwgc2l6 ZW9mKEpzb25iVmFsdWUpKTsKKwkJOiBtZW1jcHkocGFsbG9jX29iamVjdChKc29uYlZhbHVl KSwgJm91dCwgc2l6ZW9mKEpzb25iVmFsdWUpKTsKIH0KIAogCmRpZmYgLS1naXQgYS9jb250 cmliL2pzb25iX3BscHl0aG9uL2pzb25iX3BscHl0aG9uLmMgYi9jb250cmliL2pzb25iX3Bs cHl0aG9uL2pzb25iX3BscHl0aG9uLmMKaW5kZXggOTM4MzYxNWFiYmYuLjI4OTJlODhjNThi IDEwMDY0NAotLS0gYS9jb250cmliL2pzb25iX3BscHl0aG9uL2pzb25iX3BscHl0aG9uLmMK KysrIGIvY29udHJpYi9qc29uYl9wbHB5dGhvbi9qc29uYl9wbHB5dGhvbi5jCkBAIC00MTks NyArNDE5LDcgQEAgUEx5T2JqZWN0X1RvSnNvbmJWYWx1ZShQeU9iamVjdCAqb2JqLCBKc29u YlBhcnNlU3RhdGUgKipqc29uYl9zdGF0ZSwgYm9vbCBpc19lbGUKIAkJCXJldHVybiBQTHlN YXBwaW5nX1RvSnNvbmJWYWx1ZShvYmosIGpzb25iX3N0YXRlKTsKIAl9CiAKLQlvdXQgPSBw YWxsb2Moc2l6ZW9mKEpzb25iVmFsdWUpKTsKKwlvdXQgPSBwYWxsb2Nfb2JqZWN0KEpzb25i VmFsdWUpOwogCiAJaWYgKG9iaiA9PSBQeV9Ob25lKQogCQlvdXQtPnR5cGUgPSBqYnZOdWxs OwpkaWZmIC0tZ2l0IGEvY29udHJpYi9sdHJlZS9fbHRyZWVfZ2lzdC5jIGIvY29udHJpYi9s dHJlZS9fbHRyZWVfZ2lzdC5jCmluZGV4IDMwZDUxNmU2MGJjLi5jZWI5MmE2MzA0ZCAxMDA2 NDQKLS0tIGEvY29udHJpYi9sdHJlZS9fbHRyZWVfZ2lzdC5jCisrKyBiL2NvbnRyaWIvbHRy ZWUvX2x0cmVlX2dpc3QuYwpAQCAtNzksNyArNzksNyBAQCBfbHRyZWVfY29tcHJlc3MoUEdf RlVOQ1RJT05fQVJHUykKIAkJCWl0ZW0gPSBORVhUVkFMKGl0ZW0pOwogCQl9CiAKLQkJcmV0 dmFsID0gKEdJU1RFTlRSWSAqKSBwYWxsb2Moc2l6ZW9mKEdJU1RFTlRSWSkpOworCQlyZXR2 YWwgPSBwYWxsb2Nfb2JqZWN0KEdJU1RFTlRSWSk7CiAJCWdpc3RlbnRyeWluaXQoKnJldHZh bCwgUG9pbnRlckdldERhdHVtKGtleSksCiAJCQkJCSAgZW50cnktPnJlbCwgZW50cnktPnBh Z2UsCiAJCQkJCSAgZW50cnktPm9mZnNldCwgZmFsc2UpOwpAQCAtOTcsNyArOTcsNyBAQCBf bHRyZWVfY29tcHJlc3MoUEdfRlVOQ1RJT05fQVJHUykKIAkJfQogCiAJCWtleSA9IGx0cmVl X2dpc3RfYWxsb2ModHJ1ZSwgc2lnbiwgc2lnbGVuLCBOVUxMLCBOVUxMKTsKLQkJcmV0dmFs ID0gKEdJU1RFTlRSWSAqKSBwYWxsb2Moc2l6ZW9mKEdJU1RFTlRSWSkpOworCQlyZXR2YWwg PSBwYWxsb2Nfb2JqZWN0KEdJU1RFTlRSWSk7CiAJCWdpc3RlbnRyeWluaXQoKnJldHZhbCwg UG9pbnRlckdldERhdHVtKGtleSksCiAJCQkJCSAgZW50cnktPnJlbCwgZW50cnktPnBhZ2Us CiAJCQkJCSAgZW50cnktPm9mZnNldCwgZmFsc2UpOwpAQCAtMzEwLDcgKzMxMCw3IEBAIF9s dHJlZV9waWNrc3BsaXQoUEdfRlVOQ1RJT05fQVJHUykKIAogCW1heG9mZiA9IE9mZnNldE51 bWJlck5leHQobWF4b2ZmKTsKIAkvKiBzb3J0IGJlZm9yZSAuLi4gKi8KLQljb3N0dmVjdG9y ID0gKFNQTElUQ09TVCAqKSBwYWxsb2Moc2l6ZW9mKFNQTElUQ09TVCkgKiBtYXhvZmYpOwor CWNvc3R2ZWN0b3IgPSBwYWxsb2NfYXJyYXkoU1BMSVRDT1NULCBtYXhvZmYpOwogCWZvciAo aiA9IEZpcnN0T2Zmc2V0TnVtYmVyOyBqIDw9IG1heG9mZjsgaiA9IE9mZnNldE51bWJlck5l eHQoaikpCiAJewogCQljb3N0dmVjdG9yW2ogLSAxXS5wb3MgPSBqOwpkaWZmIC0tZ2l0IGEv Y29udHJpYi9sdHJlZS9fbHRyZWVfb3AuYyBiL2NvbnRyaWIvbHRyZWUvX2x0cmVlX29wLmMK aW5kZXggYjRhODA5NzMyOGQuLjRkNTRhZDM0YmI2IDEwMDY0NAotLS0gYS9jb250cmliL2x0 cmVlL19sdHJlZV9vcC5jCisrKyBiL2NvbnRyaWIvbHRyZWUvX2x0cmVlX29wLmMKQEAgLTMw Nyw3ICszMDcsNyBAQCBfbGNhKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQkJKGVycmNvZGUoRVJS Q09ERV9OVUxMX1ZBTFVFX05PVF9BTExPV0VEKSwKIAkJCQkgZXJybXNnKCJhcnJheSBtdXN0 IG5vdCBjb250YWluIG51bGxzIikpKTsKIAotCWEgPSAobHRyZWUgKiopIHBhbGxvYyhzaXpl b2YobHRyZWUgKikgKiBudW0pOworCWEgPSBwYWxsb2NfYXJyYXkobHRyZWUgKiwgbnVtKTsK IAl3aGlsZSAobnVtID4gMCkKIAl7CiAJCW51bS0tOwpkaWZmIC0tZ2l0IGEvY29udHJpYi9s dHJlZS9sdHJlZV9naXN0LmMgYi9jb250cmliL2x0cmVlL2x0cmVlX2dpc3QuYwppbmRleCA5 MzJmNjliZmYyZC4uYmI3ZjQ2MzQ3MjIgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvbHRyZWUvbHRy ZWVfZ2lzdC5jCisrKyBiL2NvbnRyaWIvbHRyZWUvbHRyZWVfZ2lzdC5jCkBAIC0xMDEsNyAr MTAxLDcgQEAgbHRyZWVfY29tcHJlc3MoUEdfRlVOQ1RJT05fQVJHUykKIAkJbHRyZWUJICAg KnZhbCA9IERhdHVtR2V0THRyZWVQKGVudHJ5LT5rZXkpOwogCQlsdHJlZV9naXN0ICprZXkg PSBsdHJlZV9naXN0X2FsbG9jKGZhbHNlLCBOVUxMLCAwLCB2YWwsIDApOwogCi0JCXJldHZh bCA9IChHSVNURU5UUlkgKikgcGFsbG9jKHNpemVvZihHSVNURU5UUlkpKTsKKwkJcmV0dmFs ID0gcGFsbG9jX29iamVjdChHSVNURU5UUlkpOwogCQlnaXN0ZW50cnlpbml0KCpyZXR2YWws IFBvaW50ZXJHZXREYXR1bShrZXkpLAogCQkJCQkgIGVudHJ5LT5yZWwsIGVudHJ5LT5wYWdl LAogCQkJCQkgIGVudHJ5LT5vZmZzZXQsIGZhbHNlKTsKQEAgLTExNyw3ICsxMTcsNyBAQCBs dHJlZV9kZWNvbXByZXNzKFBHX0ZVTkNUSU9OX0FSR1MpCiAKIAlpZiAoUG9pbnRlckdldERh dHVtKGtleSkgIT0gZW50cnktPmtleSkKIAl7Ci0JCUdJU1RFTlRSWSAgKnJldHZhbCA9IChH SVNURU5UUlkgKikgcGFsbG9jKHNpemVvZihHSVNURU5UUlkpKTsKKwkJR0lTVEVOVFJZICAq cmV0dmFsID0gcGFsbG9jX29iamVjdChHSVNURU5UUlkpOwogCiAJCWdpc3RlbnRyeWluaXQo KnJldHZhbCwgUG9pbnRlckdldERhdHVtKGtleSksCiAJCQkJCSAgZW50cnktPnJlbCwgZW50 cnktPnBhZ2UsCkBAIC0zMTgsNyArMzE4LDcgQEAgbHRyZWVfcGlja3NwbGl0KFBHX0ZVTkNU SU9OX0FSR1MpCiAJdi0+c3BsX3JpZ2h0ID0gKE9mZnNldE51bWJlciAqKSBwYWxsb2MobmJ5 dGVzKTsKIAl2LT5zcGxfbmxlZnQgPSAwOwogCXYtPnNwbF9ucmlnaHQgPSAwOwotCWFycmF5 ID0gKFJJWCAqKSBwYWxsb2Moc2l6ZW9mKFJJWCkgKiAobWF4b2ZmICsgMSkpOworCWFycmF5 ID0gcGFsbG9jX2FycmF5KFJJWCwgbWF4b2ZmICsgMSk7CiAKIAkvKiBjb3B5IHRoZSBkYXRh IGludG8gUklYZXMsIGFuZCBzb3J0IHRoZSBSSVhlcyAqLwogCWZvciAoaiA9IEZpcnN0T2Zm c2V0TnVtYmVyOyBqIDw9IG1heG9mZjsgaiA9IE9mZnNldE51bWJlck5leHQoaikpCmRpZmYg LS1naXQgYS9jb250cmliL2x0cmVlL2x0cmVlX2lvLmMgYi9jb250cmliL2x0cmVlL2x0cmVl X2lvLmMKaW5kZXggYjU0YTE1ZDZjNjguLjU5YzQ0NjJkZjgwIDEwMDY0NAotLS0gYS9jb250 cmliL2x0cmVlL2x0cmVlX2lvLmMKKysrIGIvY29udHJpYi9sdHJlZS9sdHJlZV9pby5jCkBA IC02NSw3ICs2NSw3IEBAIHBhcnNlX2x0cmVlKGNvbnN0IGNoYXIgKmJ1Ziwgc3RydWN0IE5v ZGUgKmVzY29udGV4dCkKIAkJCQkoZXJyY29kZShFUlJDT0RFX1BST0dSQU1fTElNSVRfRVhD RUVERUQpLAogCQkJCSBlcnJtc2coIm51bWJlciBvZiBsdHJlZSBsYWJlbHMgKCVkKSBleGNl ZWRzIHRoZSBtYXhpbXVtIGFsbG93ZWQgKCVkKSIsCiAJCQkJCQludW0gKyAxLCBMVFJFRV9N QVhfTEVWRUxTKSkpOwotCWxpc3QgPSBscHRyID0gKG5vZGVpdGVtICopIHBhbGxvYyhzaXpl b2Yobm9kZWl0ZW0pICogKG51bSArIDEpKTsKKwlsaXN0ID0gbHB0ciA9IHBhbGxvY19hcnJh eShub2RlaXRlbSwgbnVtICsgMSk7CiAJcHRyID0gYnVmOwogCXdoaWxlICgqcHRyKQogCXsK QEAgLTMxOCwxNCArMzE4LDE0IEBAIHBhcnNlX2xxdWVyeShjb25zdCBjaGFyICpidWYsIHN0 cnVjdCBOb2RlICplc2NvbnRleHQpCiAJCQljYXNlIExRUFJTX1dBSVRMRVZFTDoKIAkJCQlp ZiAoSVNMQUJFTChwdHIpKQogCQkJCXsKLQkJCQkJR0VUVkFSKGN1cnFsZXZlbCkgPSBscHRy ID0gKG5vZGVpdGVtICopIHBhbGxvYzAoc2l6ZW9mKG5vZGVpdGVtKSAqIChudW1PUiArIDEp KTsKKwkJCQkJR0VUVkFSKGN1cnFsZXZlbCkgPSBscHRyID0gcGFsbG9jMF9hcnJheShub2Rl aXRlbSwgbnVtT1IgKyAxKTsKIAkJCQkJbHB0ci0+c3RhcnQgPSBwdHI7CiAJCQkJCXN0YXRl ID0gTFFQUlNfV0FJVERFTElNOwogCQkJCQljdXJxbGV2ZWwtPm51bXZhciA9IDE7CiAJCQkJ fQogCQkJCWVsc2UgaWYgKHRfaXNlcShwdHIsICchJykpCiAJCQkJewotCQkJCQlHRVRWQVIo Y3VycWxldmVsKSA9IGxwdHIgPSAobm9kZWl0ZW0gKikgcGFsbG9jMChzaXplb2Yobm9kZWl0 ZW0pICogKG51bU9SICsgMSkpOworCQkJCQlHRVRWQVIoY3VycWxldmVsKSA9IGxwdHIgPSBw YWxsb2MwX2FycmF5KG5vZGVpdGVtLCBudW1PUiArIDEpOwogCQkJCQlscHRyLT5zdGFydCA9 IHB0ciArIDE7CiAJCQkJCWxwdHItPndsZW4gPSAtMTsJLyogY29tcGVuc2F0ZSBmb3IgY291 bnRpbmcgISBiZWxvdyAqLwogCQkJCQlzdGF0ZSA9IExRUFJTX1dBSVRERUxJTTsKZGlmZiAt LWdpdCBhL2NvbnRyaWIvbHRyZWUvbHRyZWVfb3AuYyBiL2NvbnRyaWIvbHRyZWUvbHRyZWVf b3AuYwppbmRleCBlM2E4NGRiMzdmZi4uYzFmYzc3ZmM4MDQgMTAwNjQ0Ci0tLSBhL2NvbnRy aWIvbHRyZWUvbHRyZWVfb3AuYworKysgYi9jb250cmliL2x0cmVlL2x0cmVlX29wLmMKQEAg LTU2Niw3ICs1NjYsNyBAQCBsY2EoUEdfRlVOQ1RJT05fQVJHUykKIAlsdHJlZQkgICoqYSwK IAkJCSAgICpyZXM7CiAKLQlhID0gKGx0cmVlICoqKSBwYWxsb2Moc2l6ZW9mKGx0cmVlICop ICogZmNpbmZvLT5uYXJncyk7CisJYSA9IHBhbGxvY19hcnJheShsdHJlZSAqLCBmY2luZm8t Pm5hcmdzKTsKIAlmb3IgKGkgPSAwOyBpIDwgZmNpbmZvLT5uYXJnczsgaSsrKQogCQlhW2ld ID0gUEdfR0VUQVJHX0xUUkVFX1AoaSk7CiAJcmVzID0gbGNhX2lubmVyKGEsIChpbnQpIGZj aW5mby0+bmFyZ3MpOwpkaWZmIC0tZ2l0IGEvY29udHJpYi9sdHJlZS9sdHh0cXVlcnlfaW8u YyBiL2NvbnRyaWIvbHRyZWUvbHR4dHF1ZXJ5X2lvLmMKaW5kZXggZWMzMzE2MDc3OTMuLjNh MmFhMjIzYzNlIDEwMDY0NAotLS0gYS9jb250cmliL2x0cmVlL2x0eHRxdWVyeV9pby5jCisr KyBiL2NvbnRyaWIvbHRyZWUvbHR4dHF1ZXJ5X2lvLmMKQEAgLTE1NCw3ICsxNTQsNyBAQCBn ZXR0b2tlbl9xdWVyeShRUFJTX1NUQVRFICpzdGF0ZSwgaW50MzIgKnZhbCwgaW50MzIgKmxl bnZhbCwgY2hhciAqKnN0cnZhbCwgdWludAogc3RhdGljIGJvb2wKIHB1c2hxdWVyeShRUFJT X1NUQVRFICpzdGF0ZSwgaW50MzIgdHlwZSwgaW50MzIgdmFsLCBpbnQzMiBkaXN0YW5jZSwg aW50MzIgbGVudmFsLCB1aW50MTYgZmxhZykKIHsKLQlOT0RFCSAgICp0bXAgPSAoTk9ERSAq KSBwYWxsb2Moc2l6ZW9mKE5PREUpKTsKKwlOT0RFCSAgICp0bXAgPSBwYWxsb2Nfb2JqZWN0 KE5PREUpOwogCiAJdG1wLT50eXBlID0gdHlwZTsKIAl0bXAtPnZhbCA9IHZhbDsKQEAgLTU0 Myw3ICs1NDMsNyBAQCBpbmZpeChJTkZJWCAqaW4sIGJvb2wgZmlyc3QpCiAJCW5ybS5jdXJw b2wgPSBpbi0+Y3VycG9sOwogCQlucm0ub3AgPSBpbi0+b3A7CiAJCW5ybS5idWZsZW4gPSAx NjsKLQkJbnJtLmN1ciA9IG5ybS5idWYgPSAoY2hhciAqKSBwYWxsb2Moc2l6ZW9mKGNoYXIp ICogbnJtLmJ1Zmxlbik7CisJCW5ybS5jdXIgPSBucm0uYnVmID0gcGFsbG9jX2FycmF5KGNo YXIsIG5ybS5idWZsZW4pOwogCiAJCS8qIGdldCByaWdodCBvcGVyYW5kICovCiAJCWluZml4 KCZucm0sIGZhbHNlKTsKQEAgLTU4Miw3ICs1ODIsNyBAQCBsdHh0cV9vdXQoUEdfRlVOQ1RJ T05fQVJHUykKIAogCW5ybS5jdXJwb2wgPSBHRVRRVUVSWShxdWVyeSk7CiAJbnJtLmJ1Zmxl biA9IDMyOwotCW5ybS5jdXIgPSBucm0uYnVmID0gKGNoYXIgKikgcGFsbG9jKHNpemVvZihj aGFyKSAqIG5ybS5idWZsZW4pOworCW5ybS5jdXIgPSBucm0uYnVmID0gcGFsbG9jX2FycmF5 KGNoYXIsIG5ybS5idWZsZW4pOwogCSoobnJtLmN1cikgPSAnXDAnOwogCW5ybS5vcCA9IEdF VE9QRVJBTkQocXVlcnkpOwogCWluZml4KCZucm0sIHRydWUpOwpAQCAtNjE1LDcgKzYxNSw3 IEBAIGx0eHRxX3NlbmQoUEdfRlVOQ1RJT05fQVJHUykKIAogCW5ybS5jdXJwb2wgPSBHRVRR VUVSWShxdWVyeSk7CiAJbnJtLmJ1ZmxlbiA9IDMyOwotCW5ybS5jdXIgPSBucm0uYnVmID0g KGNoYXIgKikgcGFsbG9jKHNpemVvZihjaGFyKSAqIG5ybS5idWZsZW4pOworCW5ybS5jdXIg PSBucm0uYnVmID0gcGFsbG9jX2FycmF5KGNoYXIsIG5ybS5idWZsZW4pOwogCSoobnJtLmN1 cikgPSAnXDAnOwogCW5ybS5vcCA9IEdFVE9QRVJBTkQocXVlcnkpOwogCWluZml4KCZucm0s IHRydWUpOwpkaWZmIC0tZ2l0IGEvY29udHJpYi9wYWdlaW5zcGVjdC9icmluZnVuY3MuYyBi L2NvbnRyaWIvcGFnZWluc3BlY3QvYnJpbmZ1bmNzLmMKaW5kZXggOTkwYzk2NWFhOTIuLmM1 Y2ViY2QyODBiIDEwMDY0NAotLS0gYS9jb250cmliL3BhZ2VpbnNwZWN0L2JyaW5mdW5jcy5j CisrKyBiL2NvbnRyaWIvcGFnZWluc3BlY3QvYnJpbmZ1bmNzLmMKQEAgLTE4Niw3ICsxODYs NyBAQCBicmluX3BhZ2VfaXRlbXMoUEdfRlVOQ1RJT05fQVJHUykKIAkgKiBJbml0aWFsaXpl IG91dHB1dCBmdW5jdGlvbnMgZm9yIGFsbCBpbmRleGVkIGRhdGF0eXBlczsgc2ltcGxpZmll cwogCSAqIGNhbGxpbmcgdGhlbSBsYXRlci4KIAkgKi8KLQljb2x1bW5zID0gcGFsbG9jKHNp emVvZihicmluX2NvbHVtbl9zdGF0ZSAqKSAqIFJlbGF0aW9uR2V0RGVzY3IoaW5kZXhSZWwp LT5uYXR0cyk7CisJY29sdW1ucyA9IHBhbGxvY19hcnJheShicmluX2NvbHVtbl9zdGF0ZSAq LCBSZWxhdGlvbkdldERlc2NyKGluZGV4UmVsKS0+bmF0dHMpOyAKIAlmb3IgKGF0dG5vID0g MTsgYXR0bm8gPD0gYmRlc2MtPmJkX3R1cGRlc2MtPm5hdHRzOyBhdHRubysrKQogCXsKIAkJ T2lkCQkJb3V0cHV0OwpkaWZmIC0tZ2l0IGEvY29udHJpYi9wYWdlaW5zcGVjdC9idHJlZWZ1 bmNzLmMgYi9jb250cmliL3BhZ2VpbnNwZWN0L2J0cmVlZnVuY3MuYwppbmRleCAyZTY3Yzlh ZGY1YS4uN2ZmNmRjMDg5MzQgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcGFnZWluc3BlY3QvYnRy ZWVmdW5jcy5jCisrKyBiL2NvbnRyaWIvcGFnZWluc3BlY3QvYnRyZWVmdW5jcy5jCkBAIC0z NzksNyArMzc5LDcgQEAgYnRfbXVsdGlfcGFnZV9zdGF0cyhQR19GVU5DVElPTl9BUkdTKQog CQkvKiBTYXZlIGFyZ3VtZW50cyBmb3IgcmV1c2UgKi8KIAkJbWN0eCA9IE1lbW9yeUNvbnRl eHRTd2l0Y2hUbyhmY3R4LT5tdWx0aV9jYWxsX21lbW9yeV9jdHgpOwogCi0JCXVhcmdzID0g cGFsbG9jKHNpemVvZih1YV9wYWdlX3N0YXRzKSk7CisJCXVhcmdzID0gcGFsbG9jX29iamVj dCh1YV9wYWdlX3N0YXRzKTsKIAogCQl1YXJncy0+cmVsaWQgPSBSZWxhdGlvbkdldFJlbGlk KHJlbCk7CiAJCXVhcmdzLT5ibGtubyA9IGJsa25vOwpAQCAtNjYwLDcgKzY2MCw3IEBAIGJ0 X3BhZ2VfaXRlbXNfaW50ZXJuYWwoUEdfRlVOQ1RJT05fQVJHUywgZW51bSBwYWdlaW5zcGVj dF92ZXJzaW9uIGV4dF92ZXJzaW9uKQogCQkgKi8KIAkJbWN0eCA9IE1lbW9yeUNvbnRleHRT d2l0Y2hUbyhmY3R4LT5tdWx0aV9jYWxsX21lbW9yeV9jdHgpOwogCi0JCXVhcmdzID0gcGFs bG9jKHNpemVvZih1YV9wYWdlX2l0ZW1zKSk7CisJCXVhcmdzID0gcGFsbG9jX29iamVjdCh1 YV9wYWdlX2l0ZW1zKTsKIAogCQl1YXJncy0+cGFnZSA9IHBhbGxvYyhCTENLU1opOwogCQlt ZW1jcHkodWFyZ3MtPnBhZ2UsIEJ1ZmZlckdldFBhZ2UoYnVmZmVyKSwgQkxDS1NaKTsKQEAg LTc1Miw3ICs3NTIsNyBAQCBidF9wYWdlX2l0ZW1zX2J5dGVhKFBHX0ZVTkNUSU9OX0FSR1Mp CiAJCWZjdHggPSBTUkZfRklSU1RDQUxMX0lOSVQoKTsKIAkJbWN0eCA9IE1lbW9yeUNvbnRl eHRTd2l0Y2hUbyhmY3R4LT5tdWx0aV9jYWxsX21lbW9yeV9jdHgpOwogCi0JCXVhcmdzID0g cGFsbG9jKHNpemVvZih1YV9wYWdlX2l0ZW1zKSk7CisJCXVhcmdzID0gcGFsbG9jX29iamVj dCh1YV9wYWdlX2l0ZW1zKTsKIAogCQl1YXJncy0+cGFnZSA9IGdldF9wYWdlX2Zyb21fcmF3 KHJhd19wYWdlKTsKIApkaWZmIC0tZ2l0IGEvY29udHJpYi9wYWdlaW5zcGVjdC9naW5mdW5j cy5jIGIvY29udHJpYi9wYWdlaW5zcGVjdC9naW5mdW5jcy5jCmluZGV4IDA5YTkwOTU3MDgx Li5mNjE2OGQ4ZTg5NSAxMDA2NDQKLS0tIGEvY29udHJpYi9wYWdlaW5zcGVjdC9naW5mdW5j cy5jCisrKyBiL2NvbnRyaWIvcGFnZWluc3BlY3QvZ2luZnVuY3MuYwpAQCAtMjIyLDcgKzIy Miw3IEBAIGdpbl9sZWFmcGFnZV9pdGVtcyhQR19GVU5DVElPTl9BUkdTKQogCQkJCQkJCSAg IG9wYXEtPmZsYWdzLAogCQkJCQkJCSAgIChHSU5fREFUQSB8IEdJTl9MRUFGIHwgR0lOX0NP TVBSRVNTRUQpKSkpOwogCi0JCWludGVyX2NhbGxfZGF0YSA9IHBhbGxvYyhzaXplb2YoZ2lu X2xlYWZwYWdlX2l0ZW1zX3N0YXRlKSk7CisJCWludGVyX2NhbGxfZGF0YSA9IHBhbGxvY19v YmplY3QoZ2luX2xlYWZwYWdlX2l0ZW1zX3N0YXRlKTsKIAogCQkvKiBCdWlsZCBhIHR1cGxl IGRlc2NyaXB0b3IgZm9yIG91ciByZXN1bHQgdHlwZSAqLwogCQlpZiAoZ2V0X2NhbGxfcmVz dWx0X3R5cGUoZmNpbmZvLCBOVUxMLCAmdHVwZGVzYykgIT0gVFlQRUZVTkNfQ09NUE9TSVRF KQpkaWZmIC0tZ2l0IGEvY29udHJpYi9wYWdlaW5zcGVjdC9oYXNoZnVuY3MuYyBiL2NvbnRy aWIvcGFnZWluc3BlY3QvaGFzaGZ1bmNzLmMKaW5kZXggY2E3ZjFmNmU3NDEuLjBlODk4ODg5 ZmE1IDEwMDY0NAotLS0gYS9jb250cmliL3BhZ2VpbnNwZWN0L2hhc2hmdW5jcy5jCisrKyBi L2NvbnRyaWIvcGFnZWluc3BlY3QvaGFzaGZ1bmNzLmMKQEAgLTMyNSw3ICszMjUsNyBAQCBo YXNoX3BhZ2VfaXRlbXMoUEdfRlVOQ1RJT05fQVJHUykKIAogCQlwYWdlID0gdmVyaWZ5X2hh c2hfcGFnZShyYXdfcGFnZSwgTEhfQlVDS0VUX1BBR0UgfCBMSF9PVkVSRkxPV19QQUdFKTsK IAotCQl1YXJncyA9IHBhbGxvYyhzaXplb2Yoc3RydWN0IHVzZXJfYXJncykpOworCQl1YXJn cyA9IHBhbGxvY19vYmplY3Qoc3RydWN0IHVzZXJfYXJncyk7CiAKIAkJdWFyZ3MtPnBhZ2Ug PSBwYWdlOwogCmRpZmYgLS1naXQgYS9jb250cmliL3BhZ2VpbnNwZWN0L2hlYXBmdW5jcy5j IGIvY29udHJpYi9wYWdlaW5zcGVjdC9oZWFwZnVuY3MuYwppbmRleCBjMTNmMDc2NTVjNC4u YjM4YzRkMTU5ZjYgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcGFnZWluc3BlY3QvaGVhcGZ1bmNz LmMKKysrIGIvY29udHJpYi9wYWdlaW5zcGVjdC9oZWFwZnVuY3MuYwpAQCAtMTU0LDcgKzE1 NCw3IEBAIGhlYXBfcGFnZV9pdGVtcyhQR19GVU5DVElPTl9BUkdTKQogCQlmY3R4ID0gU1JG X0ZJUlNUQ0FMTF9JTklUKCk7CiAJCW1jdHggPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oZmN0 eC0+bXVsdGlfY2FsbF9tZW1vcnlfY3R4KTsKIAotCQlpbnRlcl9jYWxsX2RhdGEgPSBwYWxs b2Moc2l6ZW9mKGhlYXBfcGFnZV9pdGVtc19zdGF0ZSkpOworCQlpbnRlcl9jYWxsX2RhdGEg PSBwYWxsb2Nfb2JqZWN0KGhlYXBfcGFnZV9pdGVtc19zdGF0ZSk7CiAKIAkJLyogQnVpbGQg YSB0dXBsZSBkZXNjcmlwdG9yIGZvciBvdXIgcmVzdWx0IHR5cGUgKi8KIAkJaWYgKGdldF9j YWxsX3Jlc3VsdF90eXBlKGZjaW5mbywgTlVMTCwgJnR1cGRlc2MpICE9IFRZUEVGVU5DX0NP TVBPU0lURSkKQEAgLTU1Myw3ICs1NTMsNyBAQCBoZWFwX3R1cGxlX2luZm9tYXNrX2ZsYWdz KFBHX0ZVTkNUSU9OX0FSR1MpCiAJfQogCiAJLyogYnVpbGQgc2V0IG9mIHJhdyBmbGFncyAq LwotCWZsYWdzID0gKERhdHVtICopIHBhbGxvYzAoc2l6ZW9mKERhdHVtKSAqIGJpdGNudCk7 CisJZmxhZ3MgPSBwYWxsb2MwX2FycmF5KERhdHVtLCBiaXRjbnQpOyAKIAogCS8qIGRlY29k ZSB0X2luZm9tYXNrICovCiAJaWYgKCh0X2luZm9tYXNrICYgSEVBUF9IQVNOVUxMKSAhPSAw KQpkaWZmIC0tZ2l0IGEvY29udHJpYi9wZ19idWZmZXJjYWNoZS9wZ19idWZmZXJjYWNoZV9w YWdlcy5jIGIvY29udHJpYi9wZ19idWZmZXJjYWNoZS9wZ19idWZmZXJjYWNoZV9wYWdlcy5j CmluZGV4IGFlMTcxMmZjOTNjLi5mMGQ0OGQxYWM4MyAxMDA2NDQKLS0tIGEvY29udHJpYi9w Z19idWZmZXJjYWNoZS9wZ19idWZmZXJjYWNoZV9wYWdlcy5jCisrKyBiL2NvbnRyaWIvcGdf YnVmZmVyY2FjaGUvcGdfYnVmZmVyY2FjaGVfcGFnZXMuYwpAQCAtMTI4LDcgKzEyOCw3IEBA IHBnX2J1ZmZlcmNhY2hlX3BhZ2VzKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCW9sZGNvbnRleHQg PSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oZnVuY2N0eC0+bXVsdGlfY2FsbF9tZW1vcnlfY3R4 KTsKIAogCQkvKiBDcmVhdGUgYSB1c2VyIGZ1bmN0aW9uIGNvbnRleHQgZm9yIGNyb3NzLWNh bGwgcGVyc2lzdGVuY2UgKi8KLQkJZmN0eCA9IChCdWZmZXJDYWNoZVBhZ2VzQ29udGV4dCAq KSBwYWxsb2Moc2l6ZW9mKEJ1ZmZlckNhY2hlUGFnZXNDb250ZXh0KSk7CisJCWZjdHggPSBw YWxsb2Nfb2JqZWN0KEJ1ZmZlckNhY2hlUGFnZXNDb250ZXh0KTsKIAogCQkvKgogCQkgKiBU byBzbW9vdGhseSBzdXBwb3J0IHVwZ3JhZGVzIGZyb20gdmVyc2lvbiAxLjAgb2YgdGhpcyBl eHRlbnNpb24KQEAgLTM3Niw4ICszNzYsOCBAQCBwZ19idWZmZXJjYWNoZV9vc19wYWdlc19p bnRlcm5hbChGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbywgYm9vbCBpbmNsdWRlX251bWEpCiAJ CQlvc19wYWdlX2NvdW50ID0gKGVuZHB0ciAtIHN0YXJ0cHRyKSAvIG9zX3BhZ2Vfc2l6ZTsK IAogCQkJLyogVXNlZCB0byBkZXRlcm1pbmUgdGhlIE5VTUEgbm9kZSBmb3IgYWxsIE9TIHBh Z2VzIGF0IG9uY2UgKi8KLQkJCW9zX3BhZ2VfcHRycyA9IHBhbGxvYzAoc2l6ZW9mKHZvaWQg KikgKiBvc19wYWdlX2NvdW50KTsKLQkJCW9zX3BhZ2Vfc3RhdHVzID0gcGFsbG9jKHNpemVv Zih1aW50NjQpICogb3NfcGFnZV9jb3VudCk7CisJCQlvc19wYWdlX3B0cnMgPSBwYWxsb2Mw X2FycmF5KHZvaWQgKiwgb3NfcGFnZV9jb3VudCk7CisJCQlvc19wYWdlX3N0YXR1cyA9IHBh bGxvY19hcnJheShpbnQsIG9zX3BhZ2VfY291bnQpOwogCiAJCQkvKgogCQkJICogRmlsbCBw b2ludGVycyBmb3IgYWxsIHRoZSBtZW1vcnkgcGFnZXMuICBUaGlzIGxvb3Agc3RvcmVzIGFu ZApAQCAtNDE5LDcgKzQxOSw3IEBAIHBnX2J1ZmZlcmNhY2hlX29zX3BhZ2VzX2ludGVybmFs KEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvLCBib29sIGluY2x1ZGVfbnVtYSkKIAkJb2xkY29u dGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhmdW5jY3R4LT5tdWx0aV9jYWxsX21lbW9y eV9jdHgpOwogCiAJCS8qIENyZWF0ZSBhIHVzZXIgZnVuY3Rpb24gY29udGV4dCBmb3IgY3Jv c3MtY2FsbCBwZXJzaXN0ZW5jZSAqLwotCQlmY3R4ID0gKEJ1ZmZlckNhY2hlT3NQYWdlc0Nv bnRleHQgKikgcGFsbG9jKHNpemVvZihCdWZmZXJDYWNoZU9zUGFnZXNDb250ZXh0KSk7CisJ CWZjdHggPSBwYWxsb2Nfb2JqZWN0KEJ1ZmZlckNhY2hlT3NQYWdlc0NvbnRleHQpOwogCiAJ CWlmIChnZXRfY2FsbF9yZXN1bHRfdHlwZShmY2luZm8sIE5VTEwsICZleHBlY3RlZF90dXBs ZWRlc2MpICE9IFRZUEVGVU5DX0NPTVBPU0lURSkKIAkJCWVsb2coRVJST1IsICJyZXR1cm4g dHlwZSBtdXN0IGJlIGEgcm93IHR5cGUiKTsKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdfb3Zl cmV4cGxhaW4vcGdfb3ZlcmV4cGxhaW4uYyBiL2NvbnRyaWIvcGdfb3ZlcmV4cGxhaW4vcGdf b3ZlcmV4cGxhaW4uYwppbmRleCBiZDcwYjZkOWQ1ZS4uZmNkYzE3MDEyZGEgMTAwNjQ0Ci0t LSBhL2NvbnRyaWIvcGdfb3ZlcmV4cGxhaW4vcGdfb3ZlcmV4cGxhaW4uYworKysgYi9jb250 cmliL3BnX292ZXJleHBsYWluL3BnX292ZXJleHBsYWluLmMKQEAgLTk1LDcgKzk1LDcgQEAg b3ZlcmV4cGxhaW5fZW5zdXJlX29wdGlvbnMoRXhwbGFpblN0YXRlICplcykKIAogCWlmIChv cHRpb25zID09IE5VTEwpCiAJewotCQlvcHRpb25zID0gcGFsbG9jMChzaXplb2Yob3ZlcmV4 cGxhaW5fb3B0aW9ucykpOworCQlvcHRpb25zID0gcGFsbG9jMF9vYmplY3Qob3ZlcmV4cGxh aW5fb3B0aW9ucyk7CiAJCVNldEV4cGxhaW5FeHRlbnNpb25TdGF0ZShlcywgZXNfZXh0ZW5z aW9uX2lkLCBvcHRpb25zKTsKIAl9CiAKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdfdHJnbS90 cmdtX2dpbi5jIGIvY29udHJpYi9wZ190cmdtL3RyZ21fZ2luLmMKaW5kZXggMjlhNTJlYWM3 YWYuLjM0YTkxY2Y5Nzg5IDEwMDY0NAotLS0gYS9jb250cmliL3BnX3RyZ20vdHJnbV9naW4u YworKysgYi9jb250cmliL3BnX3RyZ20vdHJnbV9naW4uYwpAQCAtNTEsNyArNTEsNyBAQCBn aW5fZXh0cmFjdF92YWx1ZV90cmdtKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCWludDMyCQlpOwog CiAJCSpuZW50cmllcyA9IHRyZ2xlbjsKLQkJZW50cmllcyA9IChEYXR1bSAqKSBwYWxsb2Mo c2l6ZW9mKERhdHVtKSAqIHRyZ2xlbik7CisJCWVudHJpZXMgPSBwYWxsb2NfYXJyYXkoRGF0 dW0sIHRyZ2xlbik7CiAKIAkJcHRyID0gR0VUQVJSKHRyZyk7CiAJCWZvciAoaSA9IDA7IGkg PCB0cmdsZW47IGkrKykKQEAgLTEyMyw3ICsxMjMsNyBAQCBnaW5fZXh0cmFjdF9xdWVyeV90 cmdtKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQkJICogUG9pbnRlcnMsIGJ1dCB3ZSBqdXN0IHB1 dCB0aGUgc2FtZSB2YWx1ZSBpbiBlYWNoIGVsZW1lbnQuCiAJCQkJICovCiAJCQkJdHJnbGVu ID0gQVJSTkVMRU0odHJnKTsKLQkJCQkqZXh0cmFfZGF0YSA9IChQb2ludGVyICopIHBhbGxv YyhzaXplb2YoUG9pbnRlcikgKiB0cmdsZW4pOworCQkJCSpleHRyYV9kYXRhID0gcGFsbG9j X2FycmF5KFBvaW50ZXIsIHRyZ2xlbik7CiAJCQkJZm9yIChpID0gMDsgaSA8IHRyZ2xlbjsg aSsrKQogCQkJCQkoKmV4dHJhX2RhdGEpW2ldID0gKFBvaW50ZXIpIGdyYXBoOwogCQkJfQpA QCAtMTQ2LDcgKzE0Niw3IEBAIGdpbl9leHRyYWN0X3F1ZXJ5X3RyZ20oUEdfRlVOQ1RJT05f QVJHUykKIAogCWlmICh0cmdsZW4gPiAwKQogCXsKLQkJZW50cmllcyA9IChEYXR1bSAqKSBw YWxsb2Moc2l6ZW9mKERhdHVtKSAqIHRyZ2xlbik7CisJCWVudHJpZXMgPSBwYWxsb2NfYXJy YXkoRGF0dW0sIHRyZ2xlbik7CiAJCXB0ciA9IEdFVEFSUih0cmcpOwogCQlmb3IgKGkgPSAw OyBpIDwgdHJnbGVuOyBpKyspCiAJCXsKQEAgLTMzOSw3ICszMzksNyBAQCBnaW5fdHJnbV90 cmljb25zaXN0ZW50KFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQkJICogZnVuY3Rpb24sIHByb21v dGluZyBhbGwgR0lOX01BWUJFIGtleXMgdG8gR0lOX1RSVUUgd2lsbAogCQkJCSAqIGdpdmUg YSBjb25zZXJ2YXRpdmUgcmVzdWx0LgogCQkJCSAqLwotCQkJCWJvb2xjaGVjayA9IChib29s ICopIHBhbGxvYyhzaXplb2YoYm9vbCkgKiBua2V5cyk7CisJCQkJYm9vbGNoZWNrID0gcGFs bG9jX2FycmF5KGJvb2wsIG5rZXlzKTsKIAkJCQlmb3IgKGkgPSAwOyBpIDwgbmtleXM7IGkr KykKIAkJCQkJYm9vbGNoZWNrW2ldID0gKGNoZWNrW2ldICE9IEdJTl9GQUxTRSk7CiAJCQkJ aWYgKCF0cmlncmFtc01hdGNoR3JhcGgoKFRyZ21QYWNrZWRHcmFwaCAqKSBleHRyYV9kYXRh WzBdLApkaWZmIC0tZ2l0IGEvY29udHJpYi9wZ190cmdtL3RyZ21fZ2lzdC5jIGIvY29udHJp Yi9wZ190cmdtL3RyZ21fZ2lzdC5jCmluZGV4IDViYTg5NTIxN2IwLi41YzdkZWIxMDNhNiAx MDA2NDQKLS0tIGEvY29udHJpYi9wZ190cmdtL3RyZ21fZ2lzdC5jCisrKyBiL2NvbnRyaWIv cGdfdHJnbS90cmdtX2dpc3QuYwpAQCAtMTI0LDcgKzEyNCw3IEBAIGd0cmdtX2NvbXByZXNz KFBHX0ZVTkNUSU9OX0FSR1MpCiAJCXRleHQJICAgKnZhbCA9IERhdHVtR2V0VGV4dFBQKGVu dHJ5LT5rZXkpOwogCiAJCXJlcyA9IGdlbmVyYXRlX3RyZ20oVkFSREFUQV9BTlkodmFsKSwg VkFSU0laRV9BTllfRVhIRFIodmFsKSk7Ci0JCXJldHZhbCA9IChHSVNURU5UUlkgKikgcGFs bG9jKHNpemVvZihHSVNURU5UUlkpKTsKKwkJcmV0dmFsID0gcGFsbG9jX29iamVjdChHSVNU RU5UUlkpOwogCQlnaXN0ZW50cnlpbml0KCpyZXR2YWwsIFBvaW50ZXJHZXREYXR1bShyZXMp LAogCQkJCQkgIGVudHJ5LT5yZWwsIGVudHJ5LT5wYWdlLAogCQkJCQkgIGVudHJ5LT5vZmZz ZXQsIGZhbHNlKTsKQEAgLTE0Myw3ICsxNDMsNyBAQCBndHJnbV9jb21wcmVzcyhQR19GVU5D VElPTl9BUkdTKQogCQl9CiAKIAkJcmVzID0gZ3RyZ21fYWxsb2ModHJ1ZSwgc2lnbGVuLCBz aWduKTsKLQkJcmV0dmFsID0gKEdJU1RFTlRSWSAqKSBwYWxsb2Moc2l6ZW9mKEdJU1RFTlRS WSkpOworCQlyZXR2YWwgPSBwYWxsb2Nfb2JqZWN0KEdJU1RFTlRSWSk7CiAJCWdpc3RlbnRy eWluaXQoKnJldHZhbCwgUG9pbnRlckdldERhdHVtKHJlcyksCiAJCQkJCSAgZW50cnktPnJl bCwgZW50cnktPnBhZ2UsCiAJCQkJCSAgZW50cnktPm9mZnNldCwgZmFsc2UpOwpAQCAtMTYz LDcgKzE2Myw3IEBAIGd0cmdtX2RlY29tcHJlc3MoUEdfRlVOQ1RJT05fQVJHUykKIAlpZiAo a2V5ICE9ICh0ZXh0ICopIERhdHVtR2V0UG9pbnRlcihlbnRyeS0+a2V5KSkKIAl7CiAJCS8q IG5lZWQgdG8gcGFzcyBiYWNrIHRoZSBkZWNvbXByZXNzZWQgaXRlbSAqLwotCQlyZXR2YWwg PSBwYWxsb2Moc2l6ZW9mKEdJU1RFTlRSWSkpOworCQlyZXR2YWwgPSBwYWxsb2Nfb2JqZWN0 KEdJU1RFTlRSWSk7CiAJCWdpc3RlbnRyeWluaXQoKnJldHZhbCwgUG9pbnRlckdldERhdHVt KGtleSksCiAJCQkJCSAgZW50cnktPnJlbCwgZW50cnktPnBhZ2UsIGVudHJ5LT5vZmZzZXQs IGVudHJ5LT5sZWFma2V5KTsKIAkJUEdfUkVUVVJOX1BPSU5URVIocmV0dmFsKTsKQEAgLTgy MCw3ICs4MjAsNyBAQCBndHJnbV9waWNrc3BsaXQoUEdfRlVOQ1RJT05fQVJHUykKIAlTUExJ VENPU1QgICpjb3N0dmVjdG9yOwogCiAJLyogY2FjaGUgdGhlIHNpZ24gZGF0YSBmb3IgZWFj aCBleGlzdGluZyBpdGVtICovCi0JY2FjaGUgPSAoQ0FDSEVTSUdOICopIHBhbGxvYyhzaXpl b2YoQ0FDSEVTSUdOKSAqIChtYXhvZmYgKyAxKSk7CisJY2FjaGUgPSBwYWxsb2NfYXJyYXko Q0FDSEVTSUdOLCBtYXhvZmYgKyAxKTsKIAljYWNoZV9zaWduID0gcGFsbG9jKHNpZ2xlbiAq IChtYXhvZmYgKyAxKSk7CiAKIAlmb3IgKGsgPSBGaXJzdE9mZnNldE51bWJlcjsgayA8PSBt YXhvZmY7IGsgPSBPZmZzZXROdW1iZXJOZXh0KGspKQpAQCAtODY0LDcgKzg2NCw3IEBAIGd0 cmdtX3BpY2tzcGxpdChQR19GVU5DVElPTl9BUkdTKQogCXVuaW9uX3IgPSBHRVRTSUdOKGRh dHVtX3IpOwogCiAJLyogc29ydCBiZWZvcmUgLi4uICovCi0JY29zdHZlY3RvciA9IChTUExJ VENPU1QgKikgcGFsbG9jKHNpemVvZihTUExJVENPU1QpICogbWF4b2ZmKTsKKwljb3N0dmVj dG9yID0gcGFsbG9jX2FycmF5KFNQTElUQ09TVCwgbWF4b2ZmKTsKIAlmb3IgKGogPSBGaXJz dE9mZnNldE51bWJlcjsgaiA8PSBtYXhvZmY7IGogPSBPZmZzZXROdW1iZXJOZXh0KGopKQog CXsKIAkJY29zdHZlY3RvcltqIC0gMV0ucG9zID0gajsKZGlmZiAtLWdpdCBhL2NvbnRyaWIv cGdfdHJnbS90cmdtX29wLmMgYi9jb250cmliL3BnX3RyZ20vdHJnbV9vcC5jCmluZGV4IDI5 YjM5ZWM4YTRjLi5iZDRhOTI0NjEyZCAxMDA2NDQKLS0tIGEvY29udHJpYi9wZ190cmdtL3Ry Z21fb3AuYworKysgYi9jb250cmliL3BnX3RyZ20vdHJnbV9vcC5jCkBAIC00NTIsNyArNDUy LDcgQEAgbWFrZV9wb3NpdGlvbmFsX3RyZ20odHJnbSAqdHJnMSwgaW50IGxlbjEsIHRyZ20g KnRyZzIsIGludCBsZW4yKQogCWludAkJCWksCiAJCQkJbGVuID0gbGVuMSArIGxlbjI7CiAK LQlyZXN1bHQgPSAocG9zX3RyZ20gKikgcGFsbG9jKHNpemVvZihwb3NfdHJnbSkgKiBsZW4p OworCXJlc3VsdCA9IHBhbGxvY19hcnJheShwb3NfdHJnbSwgbGVuKTsKIAogCWZvciAoaSA9 IDA7IGkgPCBsZW4xOyBpKyspCiAJewpAQCAtNTM1LDcgKzUzNSw3IEBAIGl0ZXJhdGVfd29y ZF9zaW1pbGFyaXR5KGludCAqdHJnMmluZGV4ZXMsCiAJbG93ZXIgPSAoZmxhZ3MgJiBXT1JE X1NJTUlMQVJJVFlfU1RSSUNUKSA/IDAgOiAtMTsKIAogCS8qIE1lbW9yaXNlIGxhc3QgcG9z aXRpb24gb2YgZWFjaCB0cmlncmFtICovCi0JbGFzdHBvcyA9IChpbnQgKikgcGFsbG9jKHNp emVvZihpbnQpICogbGVuKTsKKwlsYXN0cG9zID0gcGFsbG9jX2FycmF5KGludCwgbGVuKTsK IAltZW1zZXQobGFzdHBvcywgLTEsIHNpemVvZihpbnQpICogbGVuKTsKIAogCWZvciAoaSA9 IDA7IGkgPCBsZW4yOyBpKyspCkBAIC02OTAsMTAgKzY5MCwxMCBAQCBjYWxjX3dvcmRfc2lt aWxhcml0eShjaGFyICpzdHIxLCBpbnQgc2xlbjEsIGNoYXIgKnN0cjIsIGludCBzbGVuMiwK IAlwcm90ZWN0X291dF9vZl9tZW0oc2xlbjEgKyBzbGVuMik7CiAKIAkvKiBNYWtlIHBvc2l0 aW9uYWwgdHJpZ3JhbXMgKi8KLQl0cmcxID0gKHRyZ20gKikgcGFsbG9jKHNpemVvZih0cmdt KSAqIChzbGVuMSAvIDIgKyAxKSAqIDMpOwotCXRyZzIgPSAodHJnbSAqKSBwYWxsb2Moc2l6 ZW9mKHRyZ20pICogKHNsZW4yIC8gMiArIDEpICogMyk7CisJdHJnMSA9IHBhbGxvY19hcnJh eSh0cmdtLCAoc2xlbjEgLyAyICsgMSkgKiAzKTsKKwl0cmcyID0gcGFsbG9jX2FycmF5KHRy Z20sIChzbGVuMiAvIDIgKyAxKSAqIDMpOwogCWlmIChmbGFncyAmIFdPUkRfU0lNSUxBUklU WV9TVFJJQ1QpCi0JCWJvdW5kcyA9IChUcmdtQm91bmQgKikgcGFsbG9jMChzaXplb2YoVHJn bUJvdW5kKSAqIChzbGVuMiAvIDIgKyAxKSAqIDMpOworCQlib3VuZHMgPSBwYWxsb2MwX2Fy cmF5KFRyZ21Cb3VuZCwgKHNsZW4yIC8gMiArIDEpICogMyk7CiAJZWxzZQogCQlib3VuZHMg PSBOVUxMOwogCkBAIC03MTEsOCArNzExLDggQEAgY2FsY193b3JkX3NpbWlsYXJpdHkoY2hh ciAqc3RyMSwgaW50IHNsZW4xLCBjaGFyICpzdHIyLCBpbnQgc2xlbjIsCiAJICogTWVyZ2Ug cG9zaXRpb25hbCB0cmlncmFtcyBhcnJheTogZW51bWVyYXRlIGVhY2ggdHJpZ3JhbSBhbmQg ZmluZCBpdHMKIAkgKiBwcmVzZW5jZSBpbiByZXF1aXJlZCB3b3JkLgogCSAqLwotCXRyZzJp bmRleGVzID0gKGludCAqKSBwYWxsb2Moc2l6ZW9mKGludCkgKiBsZW4yKTsKLQlmb3VuZCA9 IChib29sICopIHBhbGxvYzAoc2l6ZW9mKGJvb2wpICogbGVuKTsKKwl0cmcyaW5kZXhlcyA9 IHBhbGxvY19hcnJheShpbnQsIGxlbjIpOworCWZvdW5kID0gcGFsbG9jMF9hcnJheShib29s LCBsZW4pOwogCiAJdWxlbjEgPSAwOwogCWogPSAwOwpAQCAtOTM4LDcgKzkzOCw3IEBAIGdl bmVyYXRlX3dpbGRjYXJkX3RyZ20oY29uc3QgY2hhciAqc3RyLCBpbnQgc2xlbikKIAl0cHRy ID0gR0VUQVJSKHRyZyk7CiAKIAkvKiBBbGxvY2F0ZSBhIGJ1ZmZlciBmb3IgYmxhbmstcGFk ZGVkLCBidXQgbm90IHlldCBjYXNlLWZvbGRlZCwgd29yZHMgKi8KLQlidWYgPSBwYWxsb2Mo c2l6ZW9mKGNoYXIpICogKHNsZW4gKyA0KSk7CisJYnVmID0gcGFsbG9jX2FycmF5KGNoYXIs IHNsZW4gKyA0KTsKIAogCS8qCiAJICogRXh0cmFjdCB0cmlncmFtcyBmcm9tIGVhY2ggc3Vi c3RyaW5nIGV4dHJhY3RlZCBieSBnZXRfd2lsZGNhcmRfcGFydC4KQEAgLTEwMDgsNyArMTAw OCw3IEBAIHNob3dfdHJnbShQR19GVU5DVElPTl9BUkdTKQogCWludAkJCWk7CiAKIAl0cmcg PSBnZW5lcmF0ZV90cmdtKFZBUkRBVEFfQU5ZKGluKSwgVkFSU0laRV9BTllfRVhIRFIoaW4p KTsKLQlkID0gKERhdHVtICopIHBhbGxvYyhzaXplb2YoRGF0dW0pICogKDEgKyBBUlJORUxF TSh0cmcpKSk7CisJZCA9IHBhbGxvY19hcnJheShEYXR1bSwgQVJSTkVMRU0odHJnKSArIDEp OwogCiAJZm9yIChpID0gMCwgcHRyID0gR0VUQVJSKHRyZyk7IGkgPCBBUlJORUxFTSh0cmcp OyBpKyssIHB0cisrKQogCXsKQEAgLTExMzYsNyArMTEzNiw3IEBAIHRyZ21fcHJlc2VuY2Vf bWFwKFRSR00gKnF1ZXJ5LCBUUkdNICprZXkpCiAJCQkJbGVuayA9IEFSUk5FTEVNKGtleSks CiAJCQkJaTsKIAotCXJlc3VsdCA9IChib29sICopIHBhbGxvYzAobGVucSAqIHNpemVvZihi b29sKSk7CisJcmVzdWx0ID0gcGFsbG9jMF9hcnJheShib29sLCBsZW5xKTsKIAogCS8qIGZv ciBlYWNoIHF1ZXJ5IHRyaWdyYW0sIGRvIGEgYmluYXJ5IHNlYXJjaCBpbiB0aGUga2V5IGFy cmF5ICovCiAJZm9yIChpID0gMDsgaSA8IGxlbnE7IGkrKykKZGlmZiAtLWdpdCBhL2NvbnRy aWIvcGdfdHJnbS90cmdtX3JlZ2V4cC5jIGIvY29udHJpYi9wZ190cmdtL3RyZ21fcmVnZXhw LmMKaW5kZXggMTQ5ZjllYjI1OWMuLjFhNzY3OTRjNDIyIDEwMDY0NAotLS0gYS9jb250cmli L3BnX3RyZ20vdHJnbV9yZWdleHAuYworKysgYi9jb250cmliL3BnX3RyZ20vdHJnbV9yZWdl eHAuYwpAQCAtNzkxLDEyICs3OTEsMTEgQEAgZ2V0Q29sb3JJbmZvKHJlZ2V4X3QgKnJlZ2V4 LCBUcmdtTkZBICp0cmdtTkZBKQogCiAJCWNvbG9ySW5mby0+ZXhwYW5kYWJsZSA9IHRydWU7 CiAJCWNvbG9ySW5mby0+Y29udGFpbnNOb25Xb3JkID0gZmFsc2U7Ci0JCWNvbG9ySW5mby0+ d29yZENoYXJzID0gKHRyZ21fbWJfY2hhciAqKQotCQkJcGFsbG9jKHNpemVvZih0cmdtX21i X2NoYXIpICogY2hhcnNDb3VudCk7CisJCWNvbG9ySW5mby0+d29yZENoYXJzID0gcGFsbG9j X2FycmF5KHRyZ21fbWJfY2hhciwgY2hhcnNDb3VudCk7CiAJCWNvbG9ySW5mby0+d29yZENo YXJzQ291bnQgPSAwOwogCiAJCS8qIEV4dHJhY3QgYWxsIHRoZSBjaGFycyBpbiB0aGlzIGNv bG9yICovCi0JCWNoYXJzID0gKHBnX3djaGFyICopIHBhbGxvYyhzaXplb2YocGdfd2NoYXIp ICogY2hhcnNDb3VudCk7CisJCWNoYXJzID0gcGFsbG9jX2FycmF5KHBnX3djaGFyLCBjaGFy c0NvdW50KTsKIAkJcGdfcmVnX2dldGNoYXJhY3RlcnMocmVnZXgsIGksIGNoYXJzLCBjaGFy c0NvdW50KTsKIAogCQkvKgpAQCAtMTA2Myw3ICsxMDYyLDcgQEAgYWRkS2V5KFRyZ21ORkEg KnRyZ21ORkEsIFRyZ21TdGF0ZSAqc3RhdGUsIFRyZ21TdGF0ZUtleSAqa2V5KQogCSAqIG9y aWdpbmFsIE5GQS4KIAkgKi8KIAlhcmNzQ291bnQgPSBwZ19yZWdfZ2V0bnVtb3V0YXJjcyh0 cmdtTkZBLT5yZWdleCwga2V5LT5uc3RhdGUpOwotCWFyY3MgPSAocmVnZXhfYXJjX3QgKikg cGFsbG9jKHNpemVvZihyZWdleF9hcmNfdCkgKiBhcmNzQ291bnQpOworCWFyY3MgPSBwYWxs b2NfYXJyYXkocmVnZXhfYXJjX3QsIGFyY3NDb3VudCk7CiAJcGdfcmVnX2dldG91dGFyY3Mo dHJnbU5GQS0+cmVnZXgsIGtleS0+bnN0YXRlLCBhcmNzLCBhcmNzQ291bnQpOwogCiAJZm9y IChpID0gMDsgaSA8IGFyY3NDb3VudDsgaSsrKQpAQCAtMTE3Nyw3ICsxMTc2LDcgQEAgYWRk S2V5KFRyZ21ORkEgKnRyZ21ORkEsIFRyZ21TdGF0ZSAqc3RhdGUsIFRyZ21TdGF0ZUtleSAq a2V5KQogc3RhdGljIHZvaWQKIGFkZEtleVRvUXVldWUoVHJnbU5GQSAqdHJnbU5GQSwgVHJn bVN0YXRlS2V5ICprZXkpCiB7Ci0JVHJnbVN0YXRlS2V5ICprZXlDb3B5ID0gKFRyZ21TdGF0 ZUtleSAqKSBwYWxsb2Moc2l6ZW9mKFRyZ21TdGF0ZUtleSkpOworCVRyZ21TdGF0ZUtleSAq a2V5Q29weSA9IHBhbGxvY19vYmplY3QoVHJnbVN0YXRlS2V5KTsKIAogCW1lbWNweShrZXlD b3B5LCBrZXksIHNpemVvZihUcmdtU3RhdGVLZXkpKTsKIAl0cmdtTkZBLT5rZXlzUXVldWUg PSBsYXBwZW5kKHRyZ21ORkEtPmtleXNRdWV1ZSwga2V5Q29weSk7CkBAIC0xMjE1LDcgKzEy MTQsNyBAQCBhZGRBcmNzKFRyZ21ORkEgKnRyZ21ORkEsIFRyZ21TdGF0ZSAqc3RhdGUpCiAJ CVRyZ21TdGF0ZUtleSAqa2V5ID0gKFRyZ21TdGF0ZUtleSAqKSBsZmlyc3QoY2VsbCk7CiAK IAkJYXJjc0NvdW50ID0gcGdfcmVnX2dldG51bW91dGFyY3ModHJnbU5GQS0+cmVnZXgsIGtl eS0+bnN0YXRlKTsKLQkJYXJjcyA9IChyZWdleF9hcmNfdCAqKSBwYWxsb2Moc2l6ZW9mKHJl Z2V4X2FyY190KSAqIGFyY3NDb3VudCk7CisJCWFyY3MgPSBwYWxsb2NfYXJyYXkocmVnZXhf YXJjX3QsIGFyY3NDb3VudCk7CiAJCXBnX3JlZ19nZXRvdXRhcmNzKHRyZ21ORkEtPnJlZ2V4 LCBrZXktPm5zdGF0ZSwgYXJjcywgYXJjc0NvdW50KTsKIAogCQlmb3IgKGkgPSAwOyBpIDwg YXJjc0NvdW50OyBpKyspCkBAIC0xMzExLDcgKzEzMTAsNyBAQCBhZGRBcmMoVHJnbU5GQSAq dHJnbU5GQSwgVHJnbVN0YXRlICpzdGF0ZSwgVHJnbVN0YXRlS2V5ICprZXksCiAJfQogCiAJ LyogQ2hlY2tzIHdlcmUgc3VjY2Vzc2Z1bCwgYWRkIG5ldyBhcmMgKi8KLQlhcmMgPSAoVHJn bUFyYyAqKSBwYWxsb2Moc2l6ZW9mKFRyZ21BcmMpKTsKKwlhcmMgPSBwYWxsb2Nfb2JqZWN0 KFRyZ21BcmMpOwogCWFyYy0+dGFyZ2V0ID0gZ2V0U3RhdGUodHJnbU5GQSwgZGVzdEtleSk7 CiAJYXJjLT5jdHJnbS5jb2xvcnNbMF0gPSBrZXktPnByZWZpeC5jb2xvcnNbMF07CiAJYXJj LT5jdHJnbS5jb2xvcnNbMV0gPSBrZXktPnByZWZpeC5jb2xvcnNbMV07CkBAIC0xNDY3LDcg KzE0NjYsNyBAQCBzZWxlY3RDb2xvclRyaWdyYW1zKFRyZ21ORkEgKnRyZ21ORkEpCiAJaW50 CQkJY251bWJlcjsKIAogCS8qIENvbGxlY3QgY29sb3IgdHJpZ3JhbXMgZnJvbSBhbGwgYXJj cyAqLwotCWNvbG9yVHJnbXMgPSAoQ29sb3JUcmdtSW5mbyAqKSBwYWxsb2MwKHNpemVvZihD b2xvclRyZ21JbmZvKSAqIGFyY3NDb3VudCk7CisJY29sb3JUcmdtcyA9IHBhbGxvYzBfYXJy YXkoQ29sb3JUcmdtSW5mbywgYXJjc0NvdW50KTsKIAl0cmdtTkZBLT5jb2xvclRyZ21zID0g Y29sb3JUcmdtczsKIAogCWkgPSAwOwpAQCAtMTQ3OSw3ICsxNDc4LDcgQEAgc2VsZWN0Q29s b3JUcmlncmFtcyhUcmdtTkZBICp0cmdtTkZBKQogCQlmb3JlYWNoKGNlbGwsIHN0YXRlLT5h cmNzKQogCQl7CiAJCQlUcmdtQXJjICAgICphcmMgPSAoVHJnbUFyYyAqKSBsZmlyc3QoY2Vs bCk7Ci0JCQlUcmdtQXJjSW5mbyAqYXJjSW5mbyA9IChUcmdtQXJjSW5mbyAqKSBwYWxsb2Mo c2l6ZW9mKFRyZ21BcmNJbmZvKSk7CisJCQlUcmdtQXJjSW5mbyAqYXJjSW5mbyA9IHBhbGxv Y19vYmplY3QoVHJnbUFyY0luZm8pOwogCQkJQ29sb3JUcmdtSW5mbyAqdHJnbUluZm8gPSAm Y29sb3JUcmdtc1tpXTsKIAogCQkJYXJjSW5mby0+c291cmNlID0gc3RhdGU7CkBAIC0xOTY0 LDggKzE5NjMsNyBAQCBwYWNrR3JhcGgoVHJnbU5GQSAqdHJnbU5GQSwgTWVtb3J5Q29udGV4 dCByY29udGV4dCkKIAl9CiAKIAkvKiBDb2xsZWN0IGFycmF5IG9mIGFsbCBhcmNzICovCi0J YXJjcyA9IChUcmdtUGFja0FyY0luZm8gKikKLQkJcGFsbG9jKHNpemVvZihUcmdtUGFja0Fy Y0luZm8pICogdHJnbU5GQS0+YXJjc0NvdW50KTsKKwlhcmNzID0gcGFsbG9jX2FycmF5KFRy Z21QYWNrQXJjSW5mbywgdHJnbU5GQS0+YXJjc0NvdW50KTsKIAlhcmNJbmRleCA9IDA7CiAJ aGFzaF9zZXFfaW5pdCgmc2Nhbl9zdGF0dXMsIHRyZ21ORkEtPnN0YXRlcyk7CiAJd2hpbGUg KChzdGF0ZSA9IChUcmdtU3RhdGUgKikgaGFzaF9zZXFfc2VhcmNoKCZzY2FuX3N0YXR1cykp ICE9IE5VTEwpCkBAIC0yMTQ3LDcgKzIxNDUsNyBAQCBwcmludFNvdXJjZU5GQShyZWdleF90 ICpyZWdleCwgVHJnbUNvbG9ySW5mbyAqY29sb3JzLCBpbnQgbmNvbG9ycykKIAkJYXBwZW5k U3RyaW5nSW5mb1N0cmluZygmYnVmLCAiO1xuIik7CiAKIAkJYXJjc0NvdW50ID0gcGdfcmVn X2dldG51bW91dGFyY3MocmVnZXgsIHN0YXRlKTsKLQkJYXJjcyA9IChyZWdleF9hcmNfdCAq KSBwYWxsb2Moc2l6ZW9mKHJlZ2V4X2FyY190KSAqIGFyY3NDb3VudCk7CisJCWFyY3MgPSBw YWxsb2NfYXJyYXkocmVnZXhfYXJjX3QsIGFyY3NDb3VudCk7CiAJCXBnX3JlZ19nZXRvdXRh cmNzKHJlZ2V4LCBzdGF0ZSwgYXJjcywgYXJjc0NvdW50KTsKIAogCQlmb3IgKGkgPSAwOyBp IDwgYXJjc0NvdW50OyBpKyspCmRpZmYgLS1naXQgYS9jb250cmliL3BnX3Zpc2liaWxpdHkv cGdfdmlzaWJpbGl0eS5jIGIvY29udHJpYi9wZ192aXNpYmlsaXR5L3BnX3Zpc2liaWxpdHku YwppbmRleCBkNzllZjM1MDA2Yi4uNzA0NmMxYjVmOGUgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIv cGdfdmlzaWJpbGl0eS9wZ192aXNpYmlsaXR5LmMKKysrIGIvY29udHJpYi9wZ192aXNpYmls aXR5L3BnX3Zpc2liaWxpdHkuYwpAQCAtNzQxLDcgKzc0MSw3IEBAIGNvbGxlY3RfY29ycnVw dF9pdGVtcyhPaWQgcmVsaWQsIGJvb2wgYWxsX3Zpc2libGUsIGJvb2wgYWxsX2Zyb3plbikK IAkgKiBudW1iZXIgb2YgZW50cmllcyBhbGxvY2F0ZWQuICBXZSdsbCByZXB1cnBvc2UgdGhl c2UgZmllbGRzIGJlZm9yZQogCSAqIHJldHVybmluZy4KIAkgKi8KLQlpdGVtcyA9IHBhbGxv YzAoc2l6ZW9mKGNvcnJ1cHRfaXRlbXMpKTsKKwlpdGVtcyA9IHBhbGxvYzBfb2JqZWN0KGNv cnJ1cHRfaXRlbXMpOwogCWl0ZW1zLT5uZXh0ID0gMDsKIAlpdGVtcy0+Y291bnQgPSA2NDsK IAlpdGVtcy0+dGlkcyA9IHBhbGxvYyhpdGVtcy0+Y291bnQgKiBzaXplb2YoSXRlbVBvaW50 ZXJEYXRhKSk7CmRpZmYgLS1naXQgYS9jb250cmliL3BnX3dhbGluc3BlY3QvcGdfd2FsaW5z cGVjdC5jIGIvY29udHJpYi9wZ193YWxpbnNwZWN0L3BnX3dhbGluc3BlY3QuYwppbmRleCAz YzVlNGE4NTZhNy4uNjk0NWJhYzEzMDYgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcGdfd2FsaW5z cGVjdC9wZ193YWxpbnNwZWN0LmMKKysrIGIvY29udHJpYi9wZ193YWxpbnNwZWN0L3BnX3dh bGluc3BlY3QuYwpAQCAtMTA5LDggKzEwOSw3IEBAIEluaXRYTG9nUmVhZGVyU3RhdGUoWExv Z1JlY1B0ciBsc24pCiAJCQkJIGVycm1zZygiY291bGQgbm90IHJlYWQgV0FMIGF0IExTTiAl WC8lMDhYIiwKIAkJCQkJCUxTTl9GT1JNQVRfQVJHUyhsc24pKSkpOwogCi0JcHJpdmF0ZV9k YXRhID0gKFJlYWRMb2NhbFhMb2dQYWdlTm9XYWl0UHJpdmF0ZSAqKQotCQlwYWxsb2MwKHNp emVvZihSZWFkTG9jYWxYTG9nUGFnZU5vV2FpdFByaXZhdGUpKTsKKwlwcml2YXRlX2RhdGEg PSBwYWxsb2MwX29iamVjdChSZWFkTG9jYWxYTG9nUGFnZU5vV2FpdFByaXZhdGUpOwogCiAJ eGxvZ3JlYWRlciA9IFhMb2dSZWFkZXJBbGxvY2F0ZSh3YWxfc2VnbWVudF9zaXplLCBOVUxM LAogCQkJCQkJCQkJWExfUk9VVElORSgucGFnZV9yZWFkID0gJnJlYWRfbG9jYWxfeGxvZ19w YWdlX25vX3dhaXQsCkBAIC0zMTAsNyArMzA5LDcgQEAgR2V0V0FMQmxvY2tJbmZvKEZ1bmN0 aW9uQ2FsbEluZm8gZmNpbmZvLCBYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCwKIAkJCS8qIENv bnN0cnVjdCBhbmQgc2F2ZSBibG9ja19mcGlfaW5mbyAqLwogCQkJYml0Y250ID0gcGdfcG9w Y291bnQoKGNvbnN0IGNoYXIgKikgJmJsay0+YmltZ19pbmZvLAogCQkJCQkJCQkgc2l6ZW9m KHVpbnQ4KSk7Ci0JCQlmbGFncyA9IChEYXR1bSAqKSBwYWxsb2MwKHNpemVvZihEYXR1bSkg KiBiaXRjbnQpOworCQkJZmxhZ3MgPSBwYWxsb2MwX2FycmF5KERhdHVtLCBiaXRjbnQpOwog CQkJaWYgKChibGstPmJpbWdfaW5mbyAmIEJLUElNQUdFX0hBU19IT0xFKSAhPSAwKQogCQkJ CWZsYWdzW2NudCsrXSA9IENTdHJpbmdHZXRUZXh0RGF0dW0oIkhBU19IT0xFIik7CiAJCQlp ZiAoYmxrLT5hcHBseV9pbWFnZSkKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdjcnlwdG8vbWJ1 Zi5jIGIvY29udHJpYi9wZ2NyeXB0by9tYnVmLmMKaW5kZXggOTlmODk1N2IwMDQuLjA1NGI1 NTk5ZDA3IDEwMDY0NAotLS0gYS9jb250cmliL3BnY3J5cHRvL21idWYuYworKysgYi9jb250 cmliL3BnY3J5cHRvL21idWYuYwpAQCAtMTE1LDcgKzExNSw3IEBAIG1idWZfY3JlYXRlKGlu dCBsZW4pCiAJaWYgKCFsZW4pCiAJCWxlbiA9IDgxOTI7CiAKLQltYnVmID0gcGFsbG9jKHNp emVvZiAqbWJ1Zik7CisJbWJ1ZiA9IHBhbGxvY19vYmplY3QoTUJ1Zik7CiAJbWJ1Zi0+ZGF0 YSA9IHBhbGxvYyhsZW4pOwogCW1idWYtPmJ1Zl9lbmQgPSBtYnVmLT5kYXRhICsgbGVuOwog CW1idWYtPmRhdGFfZW5kID0gbWJ1Zi0+ZGF0YTsKQEAgLTEzMiw3ICsxMzIsNyBAQCBtYnVm X2NyZWF0ZV9mcm9tX2RhdGEodWludDggKmRhdGEsIGludCBsZW4pCiB7CiAJTUJ1ZgkgICAq bWJ1ZjsKIAotCW1idWYgPSBwYWxsb2Moc2l6ZW9mICptYnVmKTsKKwltYnVmID0gcGFsbG9j X29iamVjdChNQnVmKTsKIAltYnVmLT5kYXRhID0gKHVpbnQ4ICopIGRhdGE7CiAJbWJ1Zi0+ YnVmX2VuZCA9IG1idWYtPmRhdGEgKyBsZW47CiAJbWJ1Zi0+ZGF0YV9lbmQgPSBtYnVmLT5k YXRhICsgbGVuOwpAQCAtMjA2LDcgKzIwNiw3IEBAIHB1bGxmX2NyZWF0ZShQdWxsRmlsdGVy ICoqcGZfcCwgY29uc3QgUHVsbEZpbHRlck9wcyAqb3AsIHZvaWQgKmluaXRfYXJnLCBQdWxs RmlsCiAJCXJlcyA9IDA7CiAJfQogCi0JcGYgPSBwYWxsb2MwKHNpemVvZigqcGYpKTsKKwlw ZiA9IHBhbGxvYzBfb2JqZWN0KFB1bGxGaWx0ZXIpOwogCXBmLT5idWZsZW4gPSByZXM7CiAJ cGYtPm9wID0gb3A7CiAJcGYtPnByaXYgPSBwcml2OwpAQCAtMzcyLDcgKzM3Miw3IEBAIHB1 c2hmX2NyZWF0ZShQdXNoRmlsdGVyICoqbXBfcCwgY29uc3QgUHVzaEZpbHRlck9wcyAqb3As IHZvaWQgKmluaXRfYXJnLCBQdXNoRmlsCiAJCXJlcyA9IDA7CiAJfQogCi0JbXAgPSBwYWxs b2MwKHNpemVvZigqbXApKTsKKwltcCA9IHBhbGxvYzBfb2JqZWN0KFB1c2hGaWx0ZXIpOwog CW1wLT5ibG9ja19zaXplID0gcmVzOwogCW1wLT5vcCA9IG9wOwogCW1wLT5wcml2ID0gcHJp djsKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdjcnlwdG8vb3BlbnNzbC5jIGIvY29udHJpYi9w Z2NyeXB0by9vcGVuc3NsLmMKaW5kZXggZjE3OWU4MGM4NDIuLmQzYzEyZTdmZGEzIDEwMDY0 NAotLS0gYS9jb250cmliL3BnY3J5cHRvL29wZW5zc2wuYworKysgYi9jb250cmliL3BnY3J5 cHRvL29wZW5zc2wuYwpAQCAtMTk3LDcgKzE5Nyw3IEBAIHB4X2ZpbmRfZGlnZXN0KGNvbnN0 IGNoYXIgKm5hbWUsIFBYX01EICoqcmVzKQogCVJlc291cmNlT3duZXJSZW1lbWJlck9TU0xE aWdlc3QoZGlnZXN0LT5vd25lciwgZGlnZXN0KTsKIAogCS8qIFRoZSBQWF9NRCBvYmplY3Qg aXMgYWxsb2NhdGVkIGluIHRoZSBjdXJyZW50IG1lbW9yeSBjb250ZXh0LiAqLwotCWggPSBw YWxsb2Moc2l6ZW9mKCpoKSk7CisJaCA9IHBhbGxvY19vYmplY3QoUFhfTUQpOwogCWgtPnJl c3VsdF9zaXplID0gZGlnZXN0X3Jlc3VsdF9zaXplOwogCWgtPmJsb2NrX3NpemUgPSBkaWdl c3RfYmxvY2tfc2l6ZTsKIAloLT5yZXNldCA9IGRpZ2VzdF9yZXNldDsKQEAgLTgxMyw3ICs4 MTMsNyBAQCBweF9maW5kX2NpcGhlcihjb25zdCBjaGFyICpuYW1lLCBQWF9DaXBoZXIgKipy ZXMpCiAJCW9kLT5ldnBfY2lwaCA9IGktPmNpcGgtPmNpcGhlcl9mdW5jKCk7CiAKIAkvKiBU aGUgUFhfQ2lwaGVyIGlzIGFsbG9jYXRlZCBpbiBjdXJyZW50IG1lbW9yeSBjb250ZXh0ICov Ci0JYyA9IHBhbGxvYyhzaXplb2YoKmMpKTsKKwljID0gcGFsbG9jX29iamVjdChQWF9DaXBo ZXIpOwogCWMtPmJsb2NrX3NpemUgPSBnZW5fb3NzbF9ibG9ja19zaXplOwogCWMtPmtleV9z aXplID0gZ2VuX29zc2xfa2V5X3NpemU7CiAJYy0+aXZfc2l6ZSA9IGdlbl9vc3NsX2l2X3Np emU7CmRpZmYgLS1naXQgYS9jb250cmliL3BnY3J5cHRvL3BncC1jZmIuYyBiL2NvbnRyaWIv cGdjcnlwdG8vcGdwLWNmYi5jCmluZGV4IGRlNDFlODI1YjBjLi5kOGYxYWZjM2FiYSAxMDA2 NDQKLS0tIGEvY29udHJpYi9wZ2NyeXB0by9wZ3AtY2ZiLmMKKysrIGIvY29udHJpYi9wZ2Ny eXB0by9wZ3AtY2ZiLmMKQEAgLTY3LDcgKzY3LDcgQEAgcGdwX2NmYl9jcmVhdGUoUEdQX0NG QiAqKmN0eF9wLCBpbnQgYWxnbywgY29uc3QgdWludDggKmtleSwgaW50IGtleV9sZW4sCiAJ CXJldHVybiByZXM7CiAJfQogCi0JY3R4ID0gcGFsbG9jMChzaXplb2YoKmN0eCkpOworCWN0 eCA9IHBhbGxvYzBfb2JqZWN0KFBHUF9DRkIpOwogCWN0eC0+Y2lwaCA9IGNpcGg7CiAJY3R4 LT5ibG9ja19zaXplID0gcHhfY2lwaGVyX2Jsb2NrX3NpemUoY2lwaCk7CiAJY3R4LT5yZXN5 bmMgPSByZXN5bmM7CmRpZmYgLS1naXQgYS9jb250cmliL3BnY3J5cHRvL3BncC1jb21wcmVz cy5jIGIvY29udHJpYi9wZ2NyeXB0by9wZ3AtY29tcHJlc3MuYwppbmRleCA5NjFjZjIxZTc0 OC4uY2FhODBlY2RiNDUgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcGdjcnlwdG8vcGdwLWNvbXBy ZXNzLmMKKysrIGIvY29udHJpYi9wZ2NyeXB0by9wZ3AtY29tcHJlc3MuYwpAQCAtODAsNyAr ODAsNyBAQCBjb21wcmVzc19pbml0KFB1c2hGaWx0ZXIgKm5leHQsIHZvaWQgKmluaXRfYXJn LCB2b2lkICoqcHJpdl9wKQogCS8qCiAJICogaW5pdAogCSAqLwotCXN0ID0gcGFsbG9jMChz aXplb2YoKnN0KSk7CisJc3QgPSBwYWxsb2MwX29iamVjdChzdHJ1Y3QgWmlwU3RhdCk7CiAJ c3QtPmJ1Zl9sZW4gPSBaSVBfT1VUX0JVRjsKIAlzdC0+c3RyZWFtLnphbGxvYyA9IHpfYWxs b2M7CiAJc3QtPnN0cmVhbS56ZnJlZSA9IHpfZnJlZTsKQEAgLTIxMSw3ICsyMTEsNyBAQCBk ZWNvbXByZXNzX2luaXQodm9pZCAqKnByaXZfcCwgdm9pZCAqYXJnLCBQdWxsRmlsdGVyICpz cmMpCiAJCSYmIGN0eC0+Y29tcHJlc3NfYWxnbyAhPSBQR1BfQ09NUFJfWklQKQogCQlyZXR1 cm4gUFhFX1BHUF9VTlNVUFBPUlRFRF9DT01QUjsKIAotCWRlYyA9IHBhbGxvYzAoc2l6ZW9m KCpkZWMpKTsKKwlkZWMgPSBwYWxsb2MwX29iamVjdChzdHJ1Y3QgRGVjb21wckRhdGEpOwog CWRlYy0+YnVmX2xlbiA9IFpJUF9PVVRfQlVGOwogCSpwcml2X3AgPSBkZWM7CiAKZGlmZiAt LWdpdCBhL2NvbnRyaWIvcGdjcnlwdG8vcGdwLWRlY3J5cHQuYyBiL2NvbnRyaWIvcGdjcnlw dG8vcGdwLWRlY3J5cHQuYwppbmRleCBlMWVhNWIzZTU4ZC4uNTJjYTc4NDBjNmQgMTAwNjQ0 Ci0tLSBhL2NvbnRyaWIvcGdjcnlwdG8vcGdwLWRlY3J5cHQuYworKysgYi9jb250cmliL3Bn Y3J5cHRvL3BncC1kZWNyeXB0LmMKQEAgLTIyNCw3ICsyMjQsNyBAQCBwZ3BfY3JlYXRlX3Br dF9yZWFkZXIoUHVsbEZpbHRlciAqKnBmX3AsIFB1bGxGaWx0ZXIgKnNyYywgaW50IGxlbiwK IAkJCQkJICBpbnQgcGt0dHlwZSwgUEdQX0NvbnRleHQgKmN0eCkKIHsKIAlpbnQJCQlyZXM7 Ci0Jc3RydWN0IFBrdERhdGEgKnBrdCA9IHBhbGxvYyhzaXplb2YoKnBrdCkpOworCXN0cnVj dCBQa3REYXRhICpwa3QgPSBwYWxsb2Nfb2JqZWN0KHN0cnVjdCBQa3REYXRhKTsKIAogCXBr dC0+dHlwZSA9IHBrdHR5cGU7CiAJcGt0LT5sZW4gPSBsZW47CkBAIC00NDgsNyArNDQ4LDcg QEAgbWRjYnVmX2luaXQodm9pZCAqKnByaXZfcCwgdm9pZCAqYXJnLCBQdWxsRmlsdGVyICpz cmMpCiAJUEdQX0NvbnRleHQgKmN0eCA9IGFyZzsKIAlzdHJ1Y3QgTURDQnVmRGF0YSAqc3Q7 CiAKLQlzdCA9IHBhbGxvYzAoc2l6ZW9mKCpzdCkpOworCXN0ID0gcGFsbG9jMF9vYmplY3Qo c3RydWN0IE1EQ0J1ZkRhdGEpOwogCXN0LT5idWZsZW4gPSBzaXplb2Yoc3QtPmJ1Zik7CiAJ c3QtPmN0eCA9IGN0eDsKIAkqcHJpdl9wID0gc3Q7CmRpZmYgLS1naXQgYS9jb250cmliL3Bn Y3J5cHRvL3BncC1lbmNyeXB0LmMgYi9jb250cmliL3BnY3J5cHRvL3BncC1lbmNyeXB0LmMK aW5kZXggZjc0NjdjOWIxY2IuLjJjMDU5ODA0NzA2IDEwMDY0NAotLS0gYS9jb250cmliL3Bn Y3J5cHRvL3BncC1lbmNyeXB0LmMKKysrIGIvY29udHJpYi9wZ2NyeXB0by9wZ3AtZW5jcnlw dC5jCkBAIC0xNzgsNyArMTc4LDcgQEAgZW5jcnlwdF9pbml0KFB1c2hGaWx0ZXIgKm5leHQs IHZvaWQgKmluaXRfYXJnLCB2b2lkICoqcHJpdl9wKQogCWlmIChyZXMgPCAwKQogCQlyZXR1 cm4gcmVzOwogCi0Jc3QgPSBwYWxsb2MwKHNpemVvZigqc3QpKTsKKwlzdCA9IHBhbGxvYzBf b2JqZWN0KHN0cnVjdCBFbmNTdGF0KTsKIAlzdC0+Y2lwaCA9IGNpcGg7CiAKIAkqcHJpdl9w ID0gc3Q7CkBAIC0yNDAsNyArMjQwLDcgQEAgcGt0X3N0cmVhbV9pbml0KFB1c2hGaWx0ZXIg Km5leHQsIHZvaWQgKmluaXRfYXJnLCB2b2lkICoqcHJpdl9wKQogewogCXN0cnVjdCBQa3RT dHJlYW1TdGF0ICpzdDsKIAotCXN0ID0gcGFsbG9jKHNpemVvZigqc3QpKTsKKwlzdCA9IHBh bGxvY19vYmplY3Qoc3RydWN0IFBrdFN0cmVhbVN0YXQpOwogCXN0LT5maW5hbF9kb25lID0g MDsKIAlzdC0+cGt0X2Jsb2NrID0gMSA8PCBTVFJFQU1fQkxPQ0tfU0hJRlQ7CiAJKnByaXZf cCA9IHN0OwpkaWZmIC0tZ2l0IGEvY29udHJpYi9wZ2NyeXB0by9wZ3AtcGdzcWwuYyBiL2Nv bnRyaWIvcGdjcnlwdG8vcGdwLXBnc3FsLmMKaW5kZXggN2M5ZjRjN2IzOWIuLjhjZmIxZjYw ZjA4IDEwMDY0NAotLS0gYS9jb250cmliL3BnY3J5cHRvL3BncC1wZ3NxbC5jCisrKyBiL2Nv bnRyaWIvcGdjcnlwdG8vcGdwLXBnc3FsLmMKQEAgLTc4Miw4ICs3ODIsOCBAQCBwYXJzZV9r ZXlfdmFsdWVfYXJyYXlzKEFycmF5VHlwZSAqa2V5X2FycmF5LCBBcnJheVR5cGUgKnZhbF9h cnJheSwKIAkJCQkoZXJyY29kZShFUlJDT0RFX0FSUkFZX1NVQlNDUklQVF9FUlJPUiksCiAJ CQkJIGVycm1zZygibWlzbWF0Y2hlZCBhcnJheSBkaW1lbnNpb25zIikpKTsKIAotCWtleXMg PSAoY2hhciAqKikgcGFsbG9jKHNpemVvZihjaGFyICopICoga2V5X2NvdW50KTsKLQl2YWx1 ZXMgPSAoY2hhciAqKikgcGFsbG9jKHNpemVvZihjaGFyICopICogdmFsX2NvdW50KTsKKwlr ZXlzID0gKGNoYXIgKiopIHBhbGxvY19hcnJheShjaGFyICosIGtleV9jb3VudCk7CisJdmFs dWVzID0gKGNoYXIgKiopIHBhbGxvY19hcnJheShjaGFyICosIHZhbF9jb3VudCk7CiAKIAlm b3IgKGkgPSAwOyBpIDwga2V5X2NvdW50OyBpKyspCiAJewpAQCAtOTM3LDcgKzkzNyw3IEBA IHBncF9hcm1vcl9oZWFkZXJzKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCWF0dGlubWV0YSA9IFR1 cGxlRGVzY0dldEF0dEluTWV0YWRhdGEodHVwZGVzYyk7CiAJCWZ1bmNjdHgtPmF0dGlubWV0 YSA9IGF0dGlubWV0YTsKIAotCQlzdGF0ZSA9IChwZ3BfYXJtb3JfaGVhZGVyc19zdGF0ZSAq KSBwYWxsb2Moc2l6ZW9mKHBncF9hcm1vcl9oZWFkZXJzX3N0YXRlKSk7CisJCXN0YXRlID0g cGFsbG9jX29iamVjdChwZ3BfYXJtb3JfaGVhZGVyc19zdGF0ZSk7CiAKIAkJcmVzID0gcGdw X2V4dHJhY3RfYXJtb3JfaGVhZGVycygodWludDggKikgVkFSREFUQV9BTlkoZGF0YSksCiAJ CQkJCQkJCQkJVkFSU0laRV9BTllfRVhIRFIoZGF0YSksCmRpZmYgLS1naXQgYS9jb250cmli L3BnY3J5cHRvL3BncC1wdWJrZXkuYyBiL2NvbnRyaWIvcGdjcnlwdG8vcGdwLXB1YmtleS5j CmluZGV4IDlhNjU2MWNhZjlkLi42ZjExODg2NTkxNyAxMDA2NDQKLS0tIGEvY29udHJpYi9w Z2NyeXB0by9wZ3AtcHVia2V5LmMKKysrIGIvY29udHJpYi9wZ2NyeXB0by9wZ3AtcHVia2V5 LmMKQEAgLTM5LDcgKzM5LDcgQEAgcGdwX2tleV9hbGxvYyhQR1BfUHViS2V5ICoqcGtfcCkK IHsKIAlQR1BfUHViS2V5ICpwazsKIAotCXBrID0gcGFsbG9jMChzaXplb2YoKnBrKSk7CisJ cGsgPSBwYWxsb2MwX29iamVjdChQR1BfUHViS2V5KTsKIAkqcGtfcCA9IHBrOwogCXJldHVy biAwOwogfQpkaWZmIC0tZ2l0IGEvY29udHJpYi9wZ2NyeXB0by9weC1obWFjLmMgYi9jb250 cmliL3BnY3J5cHRvL3B4LWhtYWMuYwppbmRleCA5OTE3NGQyNjU1MS4uNjhlNWNmZjZkNmEg MTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcGdjcnlwdG8vcHgtaG1hYy5jCisrKyBiL2NvbnRyaWIv cGdjcnlwdG8vcHgtaG1hYy5jCkBAIC0xNTcsNyArMTU3LDcgQEAgcHhfZmluZF9obWFjKGNv bnN0IGNoYXIgKm5hbWUsIFBYX0hNQUMgKipyZXMpCiAJCXJldHVybiBQWEVfSEFTSF9VTlVT QUJMRV9GT1JfSE1BQzsKIAl9CiAKLQloID0gcGFsbG9jKHNpemVvZigqaCkpOworCWggPSBw YWxsb2Nfb2JqZWN0KFBYX0hNQUMpOwogCWgtPnAuaXBhZCA9IHBhbGxvYyhicyk7CiAJaC0+ cC5vcGFkID0gcGFsbG9jKGJzKTsKIAloLT5tZCA9IG1kOwpkaWZmIC0tZ2l0IGEvY29udHJp Yi9wZ2NyeXB0by9weC5jIGIvY29udHJpYi9wZ2NyeXB0by9weC5jCmluZGV4IGQzNWNjY2E3 Nzc0Li40ZDY2OGQ0ZTQ5NiAxMDA2NDQKLS0tIGEvY29udHJpYi9wZ2NyeXB0by9weC5jCisr KyBiL2NvbnRyaWIvcGdjcnlwdG8vcHguYwpAQCAtMjkxLDcgKzI5MSw3IEBAIHB4X2ZpbmRf Y29tYm8oY29uc3QgY2hhciAqbmFtZSwgUFhfQ29tYm8gKipyZXMpCiAKIAlQWF9Db21ibyAg ICpjeDsKIAotCWN4ID0gcGFsbG9jMChzaXplb2YoKmN4KSk7CisJY3ggPSBwYWxsb2MwX29i amVjdChQWF9Db21ibyk7CiAJYnVmID0gcHN0cmR1cChuYW1lKTsKIAogCWVyciA9IHBhcnNl X2NpcGhlcl9uYW1lKGJ1ZiwgJnNfY2lwaGVyLCAmc19wYWQpOwpkaWZmIC0tZ2l0IGEvY29u dHJpYi9wb3N0Z3Jlc19mZHcvcG9zdGdyZXNfZmR3LmMgYi9jb250cmliL3Bvc3RncmVzX2Zk dy9wb3N0Z3Jlc19mZHcuYwppbmRleCAwNmI1MmM2NTMwMC4uYjI5M2E3OTA0ZmIgMTAwNjQ0 Ci0tLSBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3Bvc3RncmVzX2Zkdy5jCisrKyBiL2NvbnRy aWIvcG9zdGdyZXNfZmR3L3Bvc3RncmVzX2Zkdy5jCkBAIC02MzMsNyArNjMzLDcgQEAgcG9z dGdyZXNHZXRGb3JlaWduUmVsU2l6ZShQbGFubmVySW5mbyAqcm9vdCwKIAkgKiBXZSB1c2Ug UGdGZHdSZWxhdGlvbkluZm8gdG8gcGFzcyB2YXJpb3VzIGluZm9ybWF0aW9uIHRvIHN1YnNl cXVlbnQKIAkgKiBmdW5jdGlvbnMuCiAJICovCi0JZnBpbmZvID0gKFBnRmR3UmVsYXRpb25J bmZvICopIHBhbGxvYzAoc2l6ZW9mKFBnRmR3UmVsYXRpb25JbmZvKSk7CisJZnBpbmZvID0g cGFsbG9jMF9vYmplY3QoUGdGZHdSZWxhdGlvbkluZm8pOwogCWJhc2VyZWwtPmZkd19wcml2 YXRlID0gZnBpbmZvOwogCiAJLyogQmFzZSBmb3JlaWduIHRhYmxlcyBuZWVkIHRvIGJlIHB1 c2hlZCBkb3duIGFsd2F5cy4gKi8KQEAgLTE1MTcsNyArMTUxNyw3IEBAIHBvc3RncmVzQmVn aW5Gb3JlaWduU2NhbihGb3JlaWduU2NhblN0YXRlICpub2RlLCBpbnQgZWZsYWdzKQogCS8q CiAJICogV2UnbGwgc2F2ZSBwcml2YXRlIHN0YXRlIGluIG5vZGUtPmZkd19zdGF0ZS4KIAkg Ki8KLQlmc3N0YXRlID0gKFBnRmR3U2NhblN0YXRlICopIHBhbGxvYzAoc2l6ZW9mKFBnRmR3 U2NhblN0YXRlKSk7CisJZnNzdGF0ZSA9IHBhbGxvYzBfb2JqZWN0KFBnRmR3U2NhblN0YXRl KTsKIAlub2RlLT5mZHdfc3RhdGUgPSBmc3N0YXRlOwogCiAJLyoKQEAgLTI2NjMsNyArMjY2 Myw3IEBAIHBvc3RncmVzQmVnaW5EaXJlY3RNb2RpZnkoRm9yZWlnblNjYW5TdGF0ZSAqbm9k ZSwgaW50IGVmbGFncykKIAkvKgogCSAqIFdlJ2xsIHNhdmUgcHJpdmF0ZSBzdGF0ZSBpbiBu b2RlLT5mZHdfc3RhdGUuCiAJICovCi0JZG1zdGF0ZSA9IChQZ0Zkd0RpcmVjdE1vZGlmeVN0 YXRlICopIHBhbGxvYzAoc2l6ZW9mKFBnRmR3RGlyZWN0TW9kaWZ5U3RhdGUpKTsKKwlkbXN0 YXRlID0gcGFsbG9jMF9vYmplY3QoUGdGZHdEaXJlY3RNb2RpZnlTdGF0ZSk7CiAJbm9kZS0+ ZmR3X3N0YXRlID0gZG1zdGF0ZTsKIAogCS8qCkBAIC0zOTc3LDcgKzM5NzcsNyBAQCBjcmVh dGVfZm9yZWlnbl9tb2RpZnkoRVN0YXRlICplc3RhdGUsCiAJTGlzdENlbGwgICAqbGM7CiAK IAkvKiBCZWdpbiBjb25zdHJ1Y3RpbmcgUGdGZHdNb2RpZnlTdGF0ZS4gKi8KLQlmbXN0YXRl ID0gKFBnRmR3TW9kaWZ5U3RhdGUgKikgcGFsbG9jMChzaXplb2YoUGdGZHdNb2RpZnlTdGF0 ZSkpOworCWZtc3RhdGUgPSBwYWxsb2MwX29iamVjdChQZ0Zkd01vZGlmeVN0YXRlKTsKIAlm bXN0YXRlLT5yZWwgPSByZWw7CiAKIAkvKiBJZGVudGlmeSB3aGljaCB1c2VyIHRvIGRvIHRo ZSByZW1vdGUgYWNjZXNzIGFzLiAqLwpAQCAtNDAxNCw3ICs0MDE0LDcgQEAgY3JlYXRlX2Zv cmVpZ25fbW9kaWZ5KEVTdGF0ZSAqZXN0YXRlLAogCiAJLyogUHJlcGFyZSBmb3Igb3V0cHV0 IGNvbnZlcnNpb24gb2YgcGFyYW1ldGVycyB1c2VkIGluIHByZXBhcmVkIHN0bXQuICovCiAJ bl9wYXJhbXMgPSBsaXN0X2xlbmd0aChmbXN0YXRlLT50YXJnZXRfYXR0cnMpICsgMTsKLQlm bXN0YXRlLT5wX2ZsaW5mbyA9IChGbWdySW5mbyAqKSBwYWxsb2MwKHNpemVvZihGbWdySW5m bykgKiBuX3BhcmFtcyk7CisJZm1zdGF0ZS0+cF9mbGluZm8gPSBwYWxsb2MwX2FycmF5KEZt Z3JJbmZvLCBuX3BhcmFtcyk7CiAJZm1zdGF0ZS0+cF9udW1zID0gMDsKIAogCWlmIChvcGVy YXRpb24gPT0gQ01EX1VQREFURSB8fCBvcGVyYXRpb24gPT0gQ01EX0RFTEVURSkKQEAgLTQy NTYsNyArNDI1Niw3IEBAIGNvbnZlcnRfcHJlcF9zdG10X3BhcmFtcyhQZ0Zkd01vZGlmeVN0 YXRlICpmbXN0YXRlLAogCiAJb2xkY29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhm bXN0YXRlLT50ZW1wX2N4dCk7CiAKLQlwX3ZhbHVlcyA9IChjb25zdCBjaGFyICoqKSBwYWxs b2Moc2l6ZW9mKGNoYXIgKikgKiBmbXN0YXRlLT5wX251bXMgKiBudW1TbG90cyk7CisJcF92 YWx1ZXMgPSBwYWxsb2NfYXJyYXkoY29uc3QgY2hhciAqLCBmbXN0YXRlLT5wX251bXMgKiBu dW1TbG90cyk7IAogCiAJLyogY3RpZCBpcyBwcm92aWRlZCBvbmx5IGZvciBVUERBVEUvREVM RVRFLCB3aGljaCBkb24ndCBhbGxvdyBiYXRjaGluZyAqLwogCUFzc2VydCghKHR1cGxlaWQg IT0gTlVMTCAmJiBudW1TbG90cyA+IDEpKTsKQEAgLTQ4MTQsNyArNDgxNCw3IEBAIHByZXBh cmVfcXVlcnlfcGFyYW1zKFBsYW5TdGF0ZSAqbm9kZSwKIAlBc3NlcnQobnVtUGFyYW1zID4g MCk7CiAKIAkvKiBQcmVwYXJlIGZvciBvdXRwdXQgY29udmVyc2lvbiBvZiBwYXJhbWV0ZXJz IHVzZWQgaW4gcmVtb3RlIHF1ZXJ5LiAqLwotCSpwYXJhbV9mbGluZm8gPSAoRm1nckluZm8g KikgcGFsbG9jMChzaXplb2YoRm1nckluZm8pICogbnVtUGFyYW1zKTsKKwkqcGFyYW1fZmxp bmZvID0gcGFsbG9jMF9hcnJheShGbWdySW5mbywgbnVtUGFyYW1zKTsKIAogCWkgPSAwOwog CWZvcmVhY2gobGMsIGZkd19leHBycykKQEAgLTYyOTcsNyArNjI5Nyw3IEBAIHBvc3RncmVz R2V0Rm9yZWlnbkpvaW5QYXRocyhQbGFubmVySW5mbyAqcm9vdCwKIAkgKiBpZiBmb3VuZCBz YWZlLiBPbmNlIHdlIGtub3cgdGhhdCB0aGlzIGpvaW4gY2FuIGJlIHB1c2hlZCBkb3duLCB3 ZSBmaWxsCiAJICogdGhlIGVudHJ5LgogCSAqLwotCWZwaW5mbyA9IChQZ0Zkd1JlbGF0aW9u SW5mbyAqKSBwYWxsb2MwKHNpemVvZihQZ0Zkd1JlbGF0aW9uSW5mbykpOworCWZwaW5mbyA9 IHBhbGxvYzBfb2JqZWN0KFBnRmR3UmVsYXRpb25JbmZvKTsKIAlmcGluZm8tPnB1c2hkb3du X3NhZmUgPSBmYWxzZTsKIAlqb2lucmVsLT5mZHdfcHJpdmF0ZSA9IGZwaW5mbzsKIAkvKiBh dHRyc191c2VkIGlzIG9ubHkgZm9yIGJhc2UgcmVsYXRpb25zLiAqLwpAQCAtNjY2Niw3ICs2 NjY2LDcgQEAgcG9zdGdyZXNHZXRGb3JlaWduVXBwZXJQYXRocyhQbGFubmVySW5mbyAqcm9v dCwgVXBwZXJSZWxhdGlvbktpbmQgc3RhZ2UsCiAJCW91dHB1dF9yZWwtPmZkd19wcml2YXRl KQogCQlyZXR1cm47CiAKLQlmcGluZm8gPSAoUGdGZHdSZWxhdGlvbkluZm8gKikgcGFsbG9j MChzaXplb2YoUGdGZHdSZWxhdGlvbkluZm8pKTsKKwlmcGluZm8gPSBwYWxsb2MwX29iamVj dChQZ0Zkd1JlbGF0aW9uSW5mbyk7CiAJZnBpbmZvLT5wdXNoZG93bl9zYWZlID0gZmFsc2U7 CiAJZnBpbmZvLT5zdGFnZSA9IHN0YWdlOwogCW91dHB1dF9yZWwtPmZkd19wcml2YXRlID0g ZnBpbmZvOwpAQCAtNjg5MSw3ICs2ODkxLDcgQEAgYWRkX2ZvcmVpZ25fb3JkZXJlZF9wYXRo cyhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqaW5wdXRfcmVsLAogCWZwaW5mby0+ cHVzaGRvd25fc2FmZSA9IHRydWU7CiAKIAkvKiBDb25zdHJ1Y3QgUGdGZHdQYXRoRXh0cmFE YXRhICovCi0JZnBleHRyYSA9IChQZ0Zkd1BhdGhFeHRyYURhdGEgKikgcGFsbG9jMChzaXpl b2YoUGdGZHdQYXRoRXh0cmFEYXRhKSk7CisJZnBleHRyYSA9IHBhbGxvYzBfb2JqZWN0KFBn RmR3UGF0aEV4dHJhRGF0YSk7CiAJZnBleHRyYS0+dGFyZ2V0ID0gcm9vdC0+dXBwZXJfdGFy Z2V0c1tVUFBFUlJFTF9PUkRFUkVEXTsKIAlmcGV4dHJhLT5oYXNfZmluYWxfc29ydCA9IHRy dWU7CiAKQEAgLTcxMjUsNyArNzEyNSw3IEBAIGFkZF9mb3JlaWduX2ZpbmFsX3BhdGhzKFBs YW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICppbnB1dF9yZWwsCiAJZnBpbmZvLT5wdXNo ZG93bl9zYWZlID0gdHJ1ZTsKIAogCS8qIENvbnN0cnVjdCBQZ0Zkd1BhdGhFeHRyYURhdGEg Ki8KLQlmcGV4dHJhID0gKFBnRmR3UGF0aEV4dHJhRGF0YSAqKSBwYWxsb2MwKHNpemVvZihQ Z0Zkd1BhdGhFeHRyYURhdGEpKTsKKwlmcGV4dHJhID0gcGFsbG9jMF9vYmplY3QoUGdGZHdQ YXRoRXh0cmFEYXRhKTsKIAlmcGV4dHJhLT50YXJnZXQgPSByb290LT51cHBlcl90YXJnZXRz W1VQUEVSUkVMX0ZJTkFMXTsKIAlmcGV4dHJhLT5oYXNfZmluYWxfc29ydCA9IGhhc19maW5h bF9zb3J0OwogCWZwZXh0cmEtPmhhc19saW1pdCA9IGV4dHJhLT5saW1pdF9uZWVkZWQ7CmRp ZmYgLS1naXQgYS9jb250cmliL3NlZy9zZWcuYyBiL2NvbnRyaWIvc2VnL3NlZy5jCmluZGV4 IGI1ZGUyYTVlMWJlLi4yZDNhMDQ4YzczZSAxMDA2NDQKLS0tIGEvY29udHJpYi9zZWcvc2Vn LmMKKysrIGIvY29udHJpYi9zZWcvc2VnLmMKQEAgLTEwNyw3ICsxMDcsNyBAQCBEYXR1bQog c2VnX2luKFBHX0ZVTkNUSU9OX0FSR1MpCiB7CiAJY2hhcgkgICAqc3RyID0gUEdfR0VUQVJH X0NTVFJJTkcoMCk7Ci0JU0VHCQkgICAqcmVzdWx0ID0gcGFsbG9jKHNpemVvZihTRUcpKTsK KwlTRUcJCSAgICpyZXN1bHQgPSBwYWxsb2Nfb2JqZWN0KFNFRyk7CiAJeXlzY2FuX3QJc2Nh bm5lcjsKIAogCXNlZ19zY2FubmVyX2luaXQoc3RyLCAmc2Nhbm5lcik7CkBAIC0zNzAsNyAr MzcwLDcgQEAgZ3NlZ19waWNrc3BsaXQoUEdfRlVOQ1RJT05fQVJHUykKIAkvKgogCSAqIEVt aXQgc2VnbWVudHMgdG8gdGhlIGxlZnQgb3V0cHV0IHBhZ2UsIGFuZCBjb21wdXRlIGl0cyBi b3VuZGluZyBib3guCiAJICovCi0Jc2VnX2wgPSAoU0VHICopIHBhbGxvYyhzaXplb2YoU0VH KSk7CisJc2VnX2wgPSBwYWxsb2Nfb2JqZWN0KFNFRyk7CiAJbWVtY3B5KHNlZ19sLCBzb3J0 X2l0ZW1zWzBdLmRhdGEsIHNpemVvZihTRUcpKTsKIAkqbGVmdCsrID0gc29ydF9pdGVtc1sw XS5pbmRleDsKIAl2LT5zcGxfbmxlZnQrKzsKQEAgLTM4OCw3ICszODgsNyBAQCBnc2VnX3Bp Y2tzcGxpdChQR19GVU5DVElPTl9BUkdTKQogCS8qCiAJICogTGlrZXdpc2UgZm9yIHRoZSBy aWdodCBwYWdlLgogCSAqLwotCXNlZ19yID0gKFNFRyAqKSBwYWxsb2Moc2l6ZW9mKFNFRykp OworCXNlZ19yID0gcGFsbG9jX29iamVjdChTRUcpOwogCW1lbWNweShzZWdfciwgc29ydF9p dGVtc1tmaXJzdHJpZ2h0XS5kYXRhLCBzaXplb2YoU0VHKSk7CiAJKnJpZ2h0KysgPSBzb3J0 X2l0ZW1zW2ZpcnN0cmlnaHRdLmluZGV4OwogCXYtPnNwbF9ucmlnaHQrKzsKQEAgLTYzMiw3 ICs2MzIsNyBAQCBzZWdfdW5pb24oUEdfRlVOQ1RJT05fQVJHUykKIAlTRUcJCSAgICpiID0g UEdfR0VUQVJHX1NFR19QKDEpOwogCVNFRwkJICAgKm47CiAKLQluID0gKFNFRyAqKSBwYWxs b2Moc2l6ZW9mKCpuKSk7CisJbiA9IHBhbGxvY19vYmplY3QoU0VHKTsKIAogCS8qIHRha2Ug bWF4IG9mIHVwcGVyIGVuZHBvaW50cyAqLwogCWlmIChhLT51cHBlciA+IGItPnVwcGVyKQpA QCAtNjcyLDcgKzY3Miw3IEBAIHNlZ19pbnRlcihQR19GVU5DVElPTl9BUkdTKQogCVNFRwkJ ICAgKmIgPSBQR19HRVRBUkdfU0VHX1AoMSk7CiAJU0VHCQkgICAqbjsKIAotCW4gPSAoU0VH ICopIHBhbGxvYyhzaXplb2YoKm4pKTsKKwluID0gcGFsbG9jX29iamVjdChTRUcpOwogCiAJ LyogdGFrZSBtaW4gb2YgdXBwZXIgZW5kcG9pbnRzICovCiAJaWYgKGEtPnVwcGVyIDwgYi0+ dXBwZXIpCmRpZmYgLS1naXQgYS9jb250cmliL3NlcGdzcWwvbGFiZWwuYyBiL2NvbnRyaWIv c2VwZ3NxbC9sYWJlbC5jCmluZGV4IGEzN2Q4OWEzZjFjLi45MzFjZDA4YmRhZCAxMDA2NDQK LS0tIGEvY29udHJpYi9zZXBnc3FsL2xhYmVsLmMKKysrIGIvY29udHJpYi9zZXBnc3FsL2xh YmVsLmMKQEAgLTE0NSw3ICsxNDUsNyBAQCBzZXBnc3FsX3NldF9jbGllbnRfbGFiZWwoY29u c3QgY2hhciAqbmV3X2xhYmVsKQogCSAqLwogCW9sZGN4dCA9IE1lbW9yeUNvbnRleHRTd2l0 Y2hUbyhDdXJUcmFuc2FjdGlvbkNvbnRleHQpOwogCi0JcGxhYmVsID0gcGFsbG9jMChzaXpl b2YocGVuZGluZ19sYWJlbCkpOworCXBsYWJlbCA9IHBhbGxvYzBfb2JqZWN0KHBlbmRpbmdf bGFiZWwpOwogCXBsYWJlbC0+c3ViaWQgPSBHZXRDdXJyZW50U3ViVHJhbnNhY3Rpb25JZCgp OwogCWlmIChuZXdfbGFiZWwpCiAJCXBsYWJlbC0+bGFiZWwgPSBwc3RyZHVwKG5ld19sYWJl bCk7CkBAIC0zMjYsNyArMzI2LDcgQEAgc2VwZ3NxbF9mbWdyX2hvb2soRm1nckhvb2tFdmVu dFR5cGUgZXZlbnQsCiAJCQkJTWVtb3J5Q29udGV4dCBvbGRjeHQ7CiAKIAkJCQlvbGRjeHQg PSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oZmxpbmZvLT5mbl9tY3h0KTsKLQkJCQlzdGFjayA9 IHBhbGxvYyhzaXplb2YoKnN0YWNrKSk7CisJCQkJc3RhY2sgPSBwYWxsb2Nfb2JqZWN0KHNl cGdzcWxfcHJvY19zdGFjayk7CiAJCQkJc3RhY2stPm9sZF9sYWJlbCA9IE5VTEw7CiAJCQkJ c3RhY2stPm5ld19sYWJlbCA9IHNlcGdzcWxfYXZjX3RydXN0ZWRfcHJvYyhmbGluZm8tPmZu X29pZCk7CiAJCQkJc3RhY2stPm5leHRfcHJpdmF0ZSA9IDA7CmRpZmYgLS1naXQgYS9jb250 cmliL3NlcGdzcWwvdWF2Yy5jIGIvY29udHJpYi9zZXBnc3FsL3VhdmMuYwppbmRleCBkOWNj YmMzOGJjNS4uNWU1Nzk3MWJiNGQgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvc2VwZ3NxbC91YXZj LmMKKysrIGIvY29udHJpYi9zZXBnc3FsL3VhdmMuYwpAQCAtMjU3LDcgKzI1Nyw3IEBAIHNl cGdzcWxfYXZjX2NvbXB1dGUoY29uc3QgY2hhciAqc2NvbnRleHQsIGNvbnN0IGNoYXIgKnRj b250ZXh0LCB1aW50MTYgdGNsYXNzKQogCSAqLwogCW9sZGN0eCA9IE1lbW9yeUNvbnRleHRT d2l0Y2hUbyhhdmNfbWVtX2N4dCk7CiAKLQljYWNoZSA9IHBhbGxvYzAoc2l6ZW9mKGF2Y19j YWNoZSkpOworCWNhY2hlID0gcGFsbG9jMF9vYmplY3QoYXZjX2NhY2hlKTsKIAogCWNhY2hl LT5oYXNoID0gaGFzaDsKIAljYWNoZS0+c2NvbnRleHQgPSBwc3RyZHVwKHNjb250ZXh0KTsK ZGlmZiAtLWdpdCBhL2NvbnRyaWIvc3BpL3JlZmludC5jIGIvY29udHJpYi9zcGkvcmVmaW50 LmMKaW5kZXggODk4OThjYWQ3YjAuLmZiYmQ1NThjYTFlIDEwMDY0NAotLS0gYS9jb250cmli L3NwaS9yZWZpbnQuYworKysgYi9jb250cmliL3NwaS9yZWZpbnQuYwpAQCAtNjUxLDcgKzY1 MSw3IEBAIGZpbmRfcGxhbihjaGFyICppZGVudCwgRVBsYW4gKiplcGxhbiwgaW50ICpucGxh bnMpCiAJfQogCWVsc2UKIAl7Ci0JCW5ld3AgPSAqZXBsYW4gPSAoRVBsYW4gKikgcGFsbG9j KHNpemVvZihFUGxhbikpOworCQluZXdwID0gKmVwbGFuID0gcGFsbG9jX29iamVjdChFUGxh bik7CiAJCSgqbnBsYW5zKSA9IGkgPSAwOwogCX0KIApkaWZmIC0tZ2l0IGEvY29udHJpYi9z c2xpbmZvL3NzbGluZm8uYyBiL2NvbnRyaWIvc3NsaW5mby9zc2xpbmZvLmMKaW5kZXggZGE3 MDIwMTExOTMuLjJiOWViOTBiMDkzIDEwMDY0NAotLS0gYS9jb250cmliL3NzbGluZm8vc3Ns aW5mby5jCisrKyBiL2NvbnRyaWIvc3NsaW5mby9zc2xpbmZvLmMKQEAgLTM3NCw3ICszNzQs NyBAQCBzc2xfZXh0ZW5zaW9uX2luZm8oUEdfRlVOQ1RJT05fQVJHUykKIAkJb2xkY29udGV4 dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhmdW5jY3R4LT5tdWx0aV9jYWxsX21lbW9yeV9j dHgpOwogCiAJCS8qIENyZWF0ZSBhIHVzZXIgZnVuY3Rpb24gY29udGV4dCBmb3IgY3Jvc3Mt Y2FsbCBwZXJzaXN0ZW5jZSAqLwotCQlmY3R4ID0gKFNTTEV4dGVuc2lvbkluZm9Db250ZXh0 ICopIHBhbGxvYyhzaXplb2YoU1NMRXh0ZW5zaW9uSW5mb0NvbnRleHQpKTsKKwkJZmN0eCA9 IHBhbGxvY19vYmplY3QoU1NMRXh0ZW5zaW9uSW5mb0NvbnRleHQpOwogCiAJCS8qIENvbnN0 cnVjdCB0dXBsZSBkZXNjcmlwdG9yICovCiAJCWlmIChnZXRfY2FsbF9yZXN1bHRfdHlwZShm Y2luZm8sIE5VTEwsICZ0dXBkZXNjKSAhPSBUWVBFRlVOQ19DT01QT1NJVEUpCmRpZmYgLS1n aXQgYS9jb250cmliL3RhYmxlZnVuYy90YWJsZWZ1bmMuYyBiL2NvbnRyaWIvdGFibGVmdW5j L3RhYmxlZnVuYy5jCmluZGV4IDc0YWZkYzA5NzdmLi5jNDBmZDM2ZGM5NiAxMDA2NDQKLS0t IGEvY29udHJpYi90YWJsZWZ1bmMvdGFibGVmdW5jLmMKKysrIGIvY29udHJpYi90YWJsZWZ1 bmMvdGFibGVmdW5jLmMKQEAgLTIwNyw3ICsyMDcsNyBAQCBub3JtYWxfcmFuZChQR19GVU5D VElPTl9BUkdTKQogCQlmdW5jY3R4LT5tYXhfY2FsbHMgPSBudW1fdHVwbGVzOwogCiAJCS8q IGFsbG9jYXRlIG1lbW9yeSBmb3IgdXNlciBjb250ZXh0ICovCi0JCWZjdHggPSAobm9ybWFs X3JhbmRfZmN0eCAqKSBwYWxsb2Moc2l6ZW9mKG5vcm1hbF9yYW5kX2ZjdHgpKTsKKwkJZmN0 eCA9IHBhbGxvY19vYmplY3Qobm9ybWFsX3JhbmRfZmN0eCk7CiAKIAkJLyoKIAkJICogVXNl IGZjdHggdG8ga2VlcCB0cmFjayBvZiB1cHBlciBhbmQgbG93ZXIgYm91bmRzIGZyb20gY2Fs bCB0byBjYWxsLgpAQCAtNzY2LDcgKzc2Niw3IEBAIGxvYWRfY2F0ZWdvcmllc19oYXNoKGNo YXIgKmNhdHNfc3FsLCBNZW1vcnlDb250ZXh0IHBlcl9xdWVyeV9jdHgpCiAKIAkJCVNQSWNv bnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8ocGVyX3F1ZXJ5X2N0eCk7CiAKLQkJCWNh dGRlc2MgPSAoY3Jvc3N0YWJfY2F0X2Rlc2MgKikgcGFsbG9jKHNpemVvZihjcm9zc3RhYl9j YXRfZGVzYykpOworCQkJY2F0ZGVzYyA9IHBhbGxvY19vYmplY3QoY3Jvc3N0YWJfY2F0X2Rl c2MpOwogCQkJY2F0ZGVzYy0+Y2F0bmFtZSA9IGNhdG5hbWU7CiAJCQljYXRkZXNjLT5hdHRp ZHggPSBpOwogCmRpZmYgLS1naXQgYS9jb250cmliL3Rlc3RfZGVjb2RpbmcvdGVzdF9kZWNv ZGluZy5jIGIvY29udHJpYi90ZXN0X2RlY29kaW5nL3Rlc3RfZGVjb2RpbmcuYwppbmRleCAz NmU3N2M2OWUxYy4uNDcwOTRmODZmNWYgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvdGVzdF9kZWNv ZGluZy90ZXN0X2RlY29kaW5nLmMKKysrIGIvY29udHJpYi90ZXN0X2RlY29kaW5nL3Rlc3Rf ZGVjb2RpbmcuYwpAQCAtMTYzLDcgKzE2Myw3IEBAIHBnX2RlY29kZV9zdGFydHVwKExvZ2lj YWxEZWNvZGluZ0NvbnRleHQgKmN0eCwgT3V0cHV0UGx1Z2luT3B0aW9ucyAqb3B0LAogCVRl c3REZWNvZGluZ0RhdGEgKmRhdGE7CiAJYm9vbAkJZW5hYmxlX3N0cmVhbWluZyA9IGZhbHNl OwogCi0JZGF0YSA9IHBhbGxvYzAoc2l6ZW9mKFRlc3REZWNvZGluZ0RhdGEpKTsKKwlkYXRh ID0gcGFsbG9jMF9vYmplY3QoVGVzdERlY29kaW5nRGF0YSk7CiAJZGF0YS0+Y29udGV4dCA9 IEFsbG9jU2V0Q29udGV4dENyZWF0ZShjdHgtPmNvbnRleHQsCiAJCQkJCQkJCQkJICAidGV4 dCBjb252ZXJzaW9uIGNvbnRleHQiLAogCQkJCQkJCQkJCSAgQUxMT0NTRVRfREVGQVVMVF9T SVpFUyk7CmRpZmYgLS1naXQgYS9jb250cmliL3RzbV9zeXN0ZW1fcm93cy90c21fc3lzdGVt X3Jvd3MuYyBiL2NvbnRyaWIvdHNtX3N5c3RlbV9yb3dzL3RzbV9zeXN0ZW1fcm93cy5jCmlu ZGV4IGY0MDFlZmEyMTMxLi5lZjE0NWZhNjc0NyAxMDA2NDQKLS0tIGEvY29udHJpYi90c21f c3lzdGVtX3Jvd3MvdHNtX3N5c3RlbV9yb3dzLmMKKysrIGIvY29udHJpYi90c21fc3lzdGVt X3Jvd3MvdHNtX3N5c3RlbV9yb3dzLmMKQEAgLTE2Myw3ICsxNjMsNyBAQCBzeXN0ZW1fcm93 c19zYW1wbGVzY2FuZ2V0c2FtcGxlc2l6ZShQbGFubmVySW5mbyAqcm9vdCwKIHN0YXRpYyB2 b2lkCiBzeXN0ZW1fcm93c19pbml0c2FtcGxlc2NhbihTYW1wbGVTY2FuU3RhdGUgKm5vZGUs IGludCBlZmxhZ3MpCiB7Ci0Jbm9kZS0+dHNtX3N0YXRlID0gcGFsbG9jMChzaXplb2YoU3lz dGVtUm93c1NhbXBsZXJEYXRhKSk7CisJbm9kZS0+dHNtX3N0YXRlID0gcGFsbG9jMF9vYmpl Y3QoU3lzdGVtUm93c1NhbXBsZXJEYXRhKTsKIAkvKiBOb3RlIHRoZSBhYm92ZSBsZWF2ZXMg dHNtX3N0YXRlLT5zdGVwIGVxdWFsIHRvIHplcm8gKi8KIH0KIApkaWZmIC0tZ2l0IGEvY29u dHJpYi90c21fc3lzdGVtX3RpbWUvdHNtX3N5c3RlbV90aW1lLmMgYi9jb250cmliL3RzbV9z eXN0ZW1fdGltZS90c21fc3lzdGVtX3RpbWUuYwppbmRleCBjOWM3MWQ4YzNhZi4uMTA0MTI1 OGVhMWEgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvdHNtX3N5c3RlbV90aW1lL3RzbV9zeXN0ZW1f dGltZS5jCisrKyBiL2NvbnRyaWIvdHNtX3N5c3RlbV90aW1lL3RzbV9zeXN0ZW1fdGltZS5j CkBAIC0xNzksNyArMTc5LDcgQEAgc3lzdGVtX3RpbWVfc2FtcGxlc2NhbmdldHNhbXBsZXNp emUoUGxhbm5lckluZm8gKnJvb3QsCiBzdGF0aWMgdm9pZAogc3lzdGVtX3RpbWVfaW5pdHNh bXBsZXNjYW4oU2FtcGxlU2NhblN0YXRlICpub2RlLCBpbnQgZWZsYWdzKQogewotCW5vZGUt PnRzbV9zdGF0ZSA9IHBhbGxvYzAoc2l6ZW9mKFN5c3RlbVRpbWVTYW1wbGVyRGF0YSkpOwor CW5vZGUtPnRzbV9zdGF0ZSA9IHBhbGxvYzBfb2JqZWN0KFN5c3RlbVRpbWVTYW1wbGVyRGF0 YSk7CiAJLyogTm90ZSB0aGUgYWJvdmUgbGVhdmVzIHRzbV9zdGF0ZS0+c3RlcCBlcXVhbCB0 byB6ZXJvICovCiB9CiAKZGlmZiAtLWdpdCBhL2NvbnRyaWIvdW5hY2NlbnQvdW5hY2NlbnQu YyBiL2NvbnRyaWIvdW5hY2NlbnQvdW5hY2NlbnQuYwppbmRleCAzMzZiYTMxMDQ3YS4uNjgy NTE2NjA4ODcgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvdW5hY2NlbnQvdW5hY2NlbnQuYworKysg Yi9jb250cmliL3VuYWNjZW50L3VuYWNjZW50LmMKQEAgLTYwLDcgKzYwLDcgQEAgcGxhY2VD aGFyKFRyaWVDaGFyICpub2RlLCBjb25zdCB1bnNpZ25lZCBjaGFyICpzdHIsIGludCBsZW5z dHIsCiAJVHJpZUNoYXIgICAqY3Vybm9kZTsKIAogCWlmICghbm9kZSkKLQkJbm9kZSA9IChU cmllQ2hhciAqKSBwYWxsb2MwKHNpemVvZihUcmllQ2hhcikgKiAyNTYpOworCQlub2RlID0g cGFsbG9jMF9hcnJheShUcmllQ2hhciwgMjU2KTsKIAogCUFzc2VydChsZW5zdHIgPiAwKTsJ CQkvKiBlbHNlIHN0clswXSBkb2Vzbid0IGV4aXN0ICovCiAKQEAgLTIzOSw3ICsyMzksNyBA QCBpbml0VHJpZShjb25zdCBjaGFyICpmaWxlbmFtZSkKIAkJCQlpZiAodHJncXVvdGVkICYm IHN0YXRlID4gMCkKIAkJCQl7CiAJCQkJCS8qIElnbm9yZSBmaXJzdCBhbmQgZW5kIHF1b3Rl cyAqLwotCQkJCQl0cmdzdG9yZSA9IChjaGFyICopIHBhbGxvYyhzaXplb2YoY2hhcikgKiAo dHJnbGVuIC0gMikpOworCQkJCQl0cmdzdG9yZSA9IHBhbGxvY19hcnJheShjaGFyLCB0cmds ZW4gLSAyKTsKIAkJCQkJdHJnc3RvcmVsZW4gPSAwOwogCQkJCQlmb3IgKGludCBpID0gMTsg aSA8IHRyZ2xlbiAtIDE7IGkrKykKIAkJCQkJewpAQCAtMjUyLDcgKzI1Miw3IEBAIGluaXRU cmllKGNvbnN0IGNoYXIgKmZpbGVuYW1lKQogCQkJCX0KIAkJCQllbHNlCiAJCQkJewotCQkJ CQl0cmdzdG9yZSA9IChjaGFyICopIHBhbGxvYyhzaXplb2YoY2hhcikgKiB0cmdsZW4pOwor CQkJCQl0cmdzdG9yZSA9IHBhbGxvY19hcnJheShjaGFyLCB0cmdsZW4pOwogCQkJCQl0cmdz dG9yZWxlbiA9IHRyZ2xlbjsKIAkJCQkJbWVtY3B5KHRyZ3N0b3JlLCB0cmcsIHRyZ3N0b3Jl bGVuKTsKIAkJCQl9CkBAIC00MjEsNyArNDIxLDcgQEAgdW5hY2NlbnRfbGV4aXplKFBHX0ZV TkNUSU9OX0FSR1MpCiAJLyogcmV0dXJuIGEgcmVzdWx0IG9ubHkgaWYgd2UgbWFkZSBhdCBs ZWFzdCBvbmUgc3Vic3RpdHV0aW9uICovCiAJaWYgKGJ1Zi5kYXRhICE9IE5VTEwpCiAJewot CQlyZXMgPSAoVFNMZXhlbWUgKikgcGFsbG9jMChzaXplb2YoVFNMZXhlbWUpICogMik7CisJ CXJlcyA9IHBhbGxvYzBfYXJyYXkoVFNMZXhlbWUsIDIpOwogCQlyZXMtPmxleGVtZSA9IGJ1 Zi5kYXRhOwogCQlyZXMtPmZsYWdzID0gVFNMX0ZJTFRFUjsKIAl9CmRpZmYgLS1naXQgYS9j b250cmliL3htbDIveHBhdGguYyBiL2NvbnRyaWIveG1sMi94cGF0aC5jCmluZGV4IDRhYzI5 MWM4MjUxLi42NjJkN2QwMmYyNyAxMDA2NDQKLS0tIGEvY29udHJpYi94bWwyL3hwYXRoLmMK KysrIGIvY29udHJpYi94bWwyL3hwYXRoLmMKQEAgLTQ4NSw4ICs0ODUsNyBAQCBwZ3htbF94 cGF0aCh0ZXh0ICpkb2N1bWVudCwgeG1sQ2hhciAqeHBhdGgsIFBnWG1sRXJyb3JDb250ZXh0 ICp4bWxlcnJjeHQpCiB7CiAJaW50MzIJCWRvY3NpemUgPSBWQVJTSVpFX0FOWV9FWEhEUihk b2N1bWVudCk7CiAJeG1sWFBhdGhDb21wRXhwclB0ciBjb21wcGF0aDsKLQl4cGF0aF93b3Jr c3BhY2UgKndvcmtzcGFjZSA9ICh4cGF0aF93b3Jrc3BhY2UgKikKLQkJcGFsbG9jMChzaXpl b2YoeHBhdGhfd29ya3NwYWNlKSk7CisJeHBhdGhfd29ya3NwYWNlICp3b3Jrc3BhY2UgPSBw YWxsb2MwX29iamVjdCh4cGF0aF93b3Jrc3BhY2UpOwogCiAJd29ya3NwYWNlLT5kb2N0cmVl ID0gTlVMTDsKIAl3b3Jrc3BhY2UtPmN0eHQgPSBOVUxMOwpkaWZmIC0tZ2l0IGEvY29udHJp Yi94bWwyL3hzbHRfcHJvYy5jIGIvY29udHJpYi94bWwyL3hzbHRfcHJvYy5jCmluZGV4IDM2 NTc4YjgyZTRkLi4yYmU4N2JlYzBjZCAxMDA2NDQKLS0tIGEvY29udHJpYi94bWwyL3hzbHRf cHJvYy5jCisrKyBiL2NvbnRyaWIveG1sMi94c2x0X3Byb2MuYwpAQCAtNjksNyArNjksNyBA QCB4c2x0X3Byb2Nlc3MoUEdfRlVOQ1RJT05fQVJHUykKIAllbHNlCiAJewogCQkvKiBObyBw YXJhbWV0ZXJzICovCi0JCXBhcmFtcyA9IChjb25zdCBjaGFyICoqKSBwYWxsb2Moc2l6ZW9m KGNoYXIgKikpOworCQlwYXJhbXMgPSBwYWxsb2Nfb2JqZWN0KGNvbnN0IGNoYXIgKik7CiAJ CXBhcmFtc1swXSA9IE5VTEw7CiAJfQogCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvZ2lz dC5zZ21sIGIvZG9jL3NyYy9zZ21sL2dpc3Quc2dtbAppbmRleCBlZTg2ZTE3MDA1NS4uNWNi ZWE4YzNkNTUgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9naXN0LnNnbWwKKysrIGIvZG9j L3NyYy9zZ21sL2dpc3Quc2dtbApAQCAtNTA2LDExICs1MDYsMTEgQEAgbXlfY29tcHJlc3Mo UEdfRlVOQ1RJT05fQVJHUykKICAgICBpZiAoZW50cnktJmd0O2xlYWZrZXkpCiAgICAgewog ICAgICAgICAvKiByZXBsYWNlIGVudHJ5LSZndDtrZXkgd2l0aCBhIGNvbXByZXNzZWQgdmVy c2lvbiAqLwotICAgICAgICBjb21wcmVzc2VkX2RhdGFfdHlwZSAqY29tcHJlc3NlZF9kYXRh ID0gcGFsbG9jKHNpemVvZihjb21wcmVzc2VkX2RhdGFfdHlwZSkpOworICAgICAgICBjb21w cmVzc2VkX2RhdGFfdHlwZSAqY29tcHJlc3NlZF9kYXRhID0gcGFsbG9jX29iamVjdChjb21w cmVzc2VkX2RhdGFfdHlwZSk7CiAKICAgICAgICAgLyogZmlsbCAqY29tcHJlc3NlZF9kYXRh IGZyb20gZW50cnktJmd0O2tleSAuLi4gKi8KIAotICAgICAgICByZXR2YWwgPSBwYWxsb2Mo c2l6ZW9mKEdJU1RFTlRSWSkpOworICAgICAgICByZXR2YWwgPSBwYWxsb2Nfb2JqZWN0KEdJ U1RFTlRSWSk7CiAgICAgICAgIGdpc3RlbnRyeWluaXQoKnJldHZhbCwgUG9pbnRlckdldERh dHVtKGNvbXByZXNzZWRfZGF0YSksCiAgICAgICAgICAgICAgICAgICAgICAgZW50cnktJmd0 O3JlbCwgZW50cnktJmd0O3BhZ2UsIGVudHJ5LSZndDtvZmZzZXQsIEZBTFNFKTsKICAgICB9 CkBAIC05MjEsOCArOTIxLDggQEAgbXlfZmV0Y2goUEdfRlVOQ1RJT05fQVJHUykKICAgICBm ZXRjaGVkX2RhdGFfdHlwZSAqZmV0Y2hlZF9kYXRhOwogICAgIEdJU1RFTlRSWSAgKnJldHZh bDsKIAotICAgIHJldHZhbCA9IHBhbGxvYyhzaXplb2YoR0lTVEVOVFJZKSk7Ci0gICAgZmV0 Y2hlZF9kYXRhID0gcGFsbG9jKHNpemVvZihmZXRjaGVkX2RhdGFfdHlwZSkpOworICAgIHJl dHZhbCA9IHBhbGxvY19vYmplY3QoR0lTVEVOVFJZKTsKKyAgICBmZXRjaGVkX2RhdGEgPSBw YWxsb2Nfb2JqZWN0KGZldGNoZWRfZGF0YV90eXBlKTsKIAogICAgIC8qCiAgICAgICogQ29u dmVydCAnZmV0Y2hlZF9kYXRhJyBpbnRvIHRoZSBhIERhdHVtIG9mIHRoZSBvcmlnaW5hbCBk YXRhdHlwZS4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC94ZnVuYy5zZ21sIGIvZG9jL3Ny Yy9zZ21sL3hmdW5jLnNnbWwKaW5kZXggNTM3ZWU2ZmEyNTQuLjJkYzk4ZGYyOWM0IDEwMDY0 NAotLS0gYS9kb2Mvc3JjL3NnbWwveGZ1bmMuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwveGZ1 bmMuc2dtbApAQCAtMjQ5MSw3ICsyNDkxLDcgQEAgbWFrZXBvaW50KFBHX0ZVTkNUSU9OX0FS R1MpCiAgICAgLyogSGVyZSwgdGhlIHBhc3MtYnktcmVmZXJlbmNlIG5hdHVyZSBvZiBQb2lu dCBpcyBub3QgaGlkZGVuLiAqLwogICAgIFBvaW50ICAgICAqcG9pbnR4ID0gUEdfR0VUQVJH X1BPSU5UX1AoMCk7CiAgICAgUG9pbnQgICAgICpwb2ludHkgPSBQR19HRVRBUkdfUE9JTlRf UCgxKTsKLSAgICBQb2ludCAgICAgKm5ld19wb2ludCA9IChQb2ludCAqKSBwYWxsb2Moc2l6 ZW9mKFBvaW50KSk7CisgICAgUG9pbnQgICAgICpuZXdfcG9pbnQgPSBwYWxsb2Nfb2JqZWN0 KFBvaW50KTsKIAogICAgIG5ld19wb2ludC0+eCA9IHBvaW50eC0+eDsKICAgICBuZXdfcG9p bnQtPnkgPSBwb2ludHktPnk7CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwveHR5cGVzLnNn bWwgYi9kb2Mvc3JjL3NnbWwveHR5cGVzLnNnbWwKaW5kZXggZTY3ZTViZGY0YzQuLmRmNTZk MWMzYWNlIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwveHR5cGVzLnNnbWwKKysrIGIvZG9j L3NyYy9zZ21sL3h0eXBlcy5zZ21sCkBAIC04OSw3ICs4OSw3IEBAIGNvbXBsZXhfaW4oUEdf RlVOQ1RJT05fQVJHUykKICAgICAgICAgICAgICAgICAgZXJybXNnKCJpbnZhbGlkIGlucHV0 IHN5bnRheCBmb3IgdHlwZSAlczogXCIlc1wiIiwKICAgICAgICAgICAgICAgICAgICAgICAg ICJjb21wbGV4Iiwgc3RyKSkpOwogCi0gICAgcmVzdWx0ID0gKENvbXBsZXggKikgcGFsbG9j KHNpemVvZihDb21wbGV4KSk7CisgICAgcmVzdWx0ID0gcGFsbG9jX29iamVjdChDb21wbGV4 KTsKICAgICByZXN1bHQtPnggPSB4OwogICAgIHJlc3VsdC0+eSA9IHk7CiAgICAgUEdfUkVU VVJOX1BPSU5URVIocmVzdWx0KTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9i cmluL2JyaW4uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW4uYwppbmRleCBjYjMz MzE5MjFjYi4uMjZjYjc1MDU4ZDEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9i cmluL2JyaW4uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMKQEAgLTMx OCw3ICszMTgsNyBAQCBpbml0aWFsaXplX2JyaW5faW5zZXJ0c3RhdGUoUmVsYXRpb24gaWR4 UmVsLCBJbmRleEluZm8gKmluZGV4SW5mbykKIAlNZW1vcnlDb250ZXh0IG9sZGN4dDsKIAog CW9sZGN4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhpbmRleEluZm8tPmlpX0NvbnRleHQp OwotCWJpc3RhdGUgPSBwYWxsb2MwKHNpemVvZihCcmluSW5zZXJ0U3RhdGUpKTsKKwliaXN0 YXRlID0gcGFsbG9jMF9vYmplY3QoQnJpbkluc2VydFN0YXRlKTsKIAliaXN0YXRlLT5iaXNf ZGVzYyA9IGJyaW5fYnVpbGRfZGVzYyhpZHhSZWwpOwogCWJpc3RhdGUtPmJpc19ybUFjY2Vz cyA9IGJyaW5SZXZtYXBJbml0aWFsaXplKGlkeFJlbCwKIAkJCQkJCQkJCQkJCSAmYmlzdGF0 ZS0+YmlzX3BhZ2VzX3Blcl9yYW5nZSk7CkBAIC0xMTg1LDcgKzExODUsNyBAQCBicmluYnVp bGQoUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsIEluZGV4SW5mbyAqaW5kZXhJbmZv KQogCXsKIAkJU29ydENvb3JkaW5hdGUgY29vcmRpbmF0ZTsKIAotCQljb29yZGluYXRlID0g KFNvcnRDb29yZGluYXRlKSBwYWxsb2MwKHNpemVvZihTb3J0Q29vcmRpbmF0ZURhdGEpKTsK KwkJY29vcmRpbmF0ZSA9IHBhbGxvYzBfb2JqZWN0KFNvcnRDb29yZGluYXRlRGF0YSk7CiAJ CWNvb3JkaW5hdGUtPmlzV29ya2VyID0gZmFsc2U7CiAJCWNvb3JkaW5hdGUtPm5QYXJ0aWNp cGFudHMgPQogCQkJc3RhdGUtPmJzX2xlYWRlci0+bnBhcnRpY2lwYW50dHVwbGVzb3J0czsK QEAgLTIzODQsNyArMjM4NCw3IEBAIF9icmluX2JlZ2luX3BhcmFsbGVsKEJyaW5CdWlsZFN0 YXRlICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIAlTaXpl CQllc3Rzb3J0OwogCUJyaW5TaGFyZWQgKmJyaW5zaGFyZWQ7CiAJU2hhcmVkc29ydCAqc2hh cmVkc29ydDsKLQlCcmluTGVhZGVyICpicmlubGVhZGVyID0gKEJyaW5MZWFkZXIgKikgcGFs bG9jMChzaXplb2YoQnJpbkxlYWRlcikpOworCUJyaW5MZWFkZXIgKmJyaW5sZWFkZXIgPSBw YWxsb2MwX29iamVjdChCcmluTGVhZGVyKTsKIAlXYWxVc2FnZSAgICp3YWx1c2FnZTsKIAlC dWZmZXJVc2FnZSAqYnVmZmVydXNhZ2U7CiAJYm9vbAkJbGVhZGVycGFydGljaXBhdGVzID0g dHJ1ZTsKQEAgLTI4MjgsNyArMjgyOCw3IEBAIF9icmluX3BhcmFsbGVsX3NjYW5fYW5kX2J1 aWxkKEJyaW5CdWlsZFN0YXRlICpzdGF0ZSwKIAlJbmRleEluZm8gICppbmRleEluZm87CiAK IAkvKiBJbml0aWFsaXplIGxvY2FsIHR1cGxlc29ydCBjb29yZGluYXRpb24gc3RhdGUgKi8K LQljb29yZGluYXRlID0gcGFsbG9jMChzaXplb2YoU29ydENvb3JkaW5hdGVEYXRhKSk7CisJ Y29vcmRpbmF0ZSA9IHBhbGxvYzBfb2JqZWN0KFNvcnRDb29yZGluYXRlRGF0YSk7CiAJY29v cmRpbmF0ZS0+aXNXb3JrZXIgPSB0cnVlOwogCWNvb3JkaW5hdGUtPm5QYXJ0aWNpcGFudHMg PSAtMTsKIAljb29yZGluYXRlLT5zaGFyZWRzb3J0ID0gc2hhcmVkc29ydDsKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW5fbWlubWF4X211bHRpLmMgYi9zcmMv YmFja2VuZC9hY2Nlc3MvYnJpbi9icmluX21pbm1heF9tdWx0aS5jCmluZGV4IGY4YTExNDQ0 ZDY2Li4wMjk4YTlkYThiYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4v YnJpbl9taW5tYXhfbXVsdGkuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmlu X21pbm1heF9tdWx0aS5jCkBAIC0xMzQwLDcgKzEzNDAsNyBAQCBidWlsZF9kaXN0YW5jZXMo Rm1nckluZm8gKmRpc3RhbmNlRm4sIE9pZCBjb2xsb2lkLAogCQlyZXR1cm4gTlVMTDsKIAog CW5kaXN0YW5jZXMgPSAobmVyYW5nZXMgLSAxKTsKLQlkaXN0YW5jZXMgPSAoRGlzdGFuY2VW YWx1ZSAqKSBwYWxsb2MwKHNpemVvZihEaXN0YW5jZVZhbHVlKSAqIG5kaXN0YW5jZXMpOwor CWRpc3RhbmNlcyA9IHBhbGxvYzBfYXJyYXkoRGlzdGFuY2VWYWx1ZSwgbmRpc3RhbmNlcyk7 CiAKIAkvKgogCSAqIFdhbGsgdGhyb3VnaCB0aGUgcmFuZ2VzIG9uY2UgYW5kIGNvbXB1dGUg dGhlIGRpc3RhbmNlIGJldHdlZW4gdGhlCkBAIC0xNTA0LDcgKzE1MDQsNyBAQCByZWR1Y2Vf ZXhwYW5kZWRfcmFuZ2VzKEV4cGFuZGVkUmFuZ2UgKmVyYW5nZXMsIGludCBuZXJhbmdlcywK IAogCS8qIGFsbG9jYXRlIHNwYWNlIGZvciB0aGUgYm91bmRhcnkgdmFsdWVzICovCiAJbnZh bHVlcyA9IDA7Ci0JdmFsdWVzID0gKERhdHVtICopIHBhbGxvYyhzaXplb2YoRGF0dW0pICog bWF4X3ZhbHVlcyk7CisJdmFsdWVzID0gcGFsbG9jX2FycmF5KERhdHVtLCBtYXhfdmFsdWVz KTsKIAogCS8qIGFkZCB0aGUgZ2xvYmFsIG1pbi9tYXggdmFsdWVzLCBmcm9tIHRoZSBmaXJz dC9sYXN0IHJhbmdlICovCiAJdmFsdWVzW252YWx1ZXMrK10gPSBlcmFuZ2VzWzBdLm1pbnZh bDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW5fcmV2bWFwLmMg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluX3Jldm1hcC5jCmluZGV4IDRlMzgwZWNj NzEwLi42NDRmOTg4OWE4YSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4v YnJpbl9yZXZtYXAuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluX3Jldm1h cC5jCkBAIC03OSw3ICs3OSw3IEBAIGJyaW5SZXZtYXBJbml0aWFsaXplKFJlbGF0aW9uIGlk eHJlbCwgQmxvY2tOdW1iZXIgKnBhZ2VzUGVyUmFuZ2UpCiAJcGFnZSA9IEJ1ZmZlckdldFBh Z2UobWV0YSk7CiAJbWV0YWRhdGEgPSAoQnJpbk1ldGFQYWdlRGF0YSAqKSBQYWdlR2V0Q29u dGVudHMocGFnZSk7CiAKLQlyZXZtYXAgPSBwYWxsb2Moc2l6ZW9mKEJyaW5SZXZtYXApKTsK KwlyZXZtYXAgPSBwYWxsb2Nfb2JqZWN0KEJyaW5SZXZtYXApOwogCXJldm1hcC0+cm1faXJl bCA9IGlkeHJlbDsKIAlyZXZtYXAtPnJtX3BhZ2VzUGVyUmFuZ2UgPSBtZXRhZGF0YS0+cGFn ZXNQZXJSYW5nZTsKIAlyZXZtYXAtPnJtX2xhc3RSZXZtYXBQYWdlID0gbWV0YWRhdGEtPmxh c3RSZXZtYXBQYWdlOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJp bl90dXBsZS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbl90dXBsZS5jCmluZGV4 IDg2MWYzOTdlNmRiLi40Nzk2ZDk0ZGE4ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNj ZXNzL2JyaW4vYnJpbl90dXBsZS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2Jy aW5fdHVwbGUuYwpAQCAtMTE5LDEzICsxMTksMTMgQEAgYnJpbl9mb3JtX3R1cGxlKEJyaW5E ZXNjICpicmRlc2MsIEJsb2NrTnVtYmVyIGJsa25vLCBCcmluTWVtVHVwbGUgKnR1cGxlLAog CiAJQXNzZXJ0KGJyZGVzYy0+YmRfdG90YWxzdG9yZWQgPiAwKTsKIAotCXZhbHVlcyA9IChE YXR1bSAqKSBwYWxsb2Moc2l6ZW9mKERhdHVtKSAqIGJyZGVzYy0+YmRfdG90YWxzdG9yZWQp OwotCW51bGxzID0gKGJvb2wgKikgcGFsbG9jMChzaXplb2YoYm9vbCkgKiBicmRlc2MtPmJk X3RvdGFsc3RvcmVkKTsKKwl2YWx1ZXMgPSBwYWxsb2NfYXJyYXkoRGF0dW0sIGJyZGVzYy0+ YmRfdG90YWxzdG9yZWQpOworCW51bGxzID0gcGFsbG9jMF9hcnJheShib29sLCBicmRlc2Mt PmJkX3RvdGFsc3RvcmVkKTsKIAlwaG9ueV9udWxsYml0bWFwID0gKGJpdHM4ICopCi0JCXBh bGxvYyhzaXplb2YoYml0czgpICogQklUTUFQTEVOKGJyZGVzYy0+YmRfdG90YWxzdG9yZWQp KTsKKwkJcGFsbG9jX2FycmF5KGJpdHM4LCBCSVRNQVBMRU4oYnJkZXNjLT5iZF90b3RhbHN0 b3JlZCkpOwogCiAjaWZkZWYgVE9BU1RfSU5ERVhfSEFDSwotCXVudG9hc3RlZF92YWx1ZXMg PSAoRGF0dW0gKikgcGFsbG9jKHNpemVvZihEYXR1bSkgKiBicmRlc2MtPmJkX3RvdGFsc3Rv cmVkKTsKKwl1bnRvYXN0ZWRfdmFsdWVzID0gcGFsbG9jX2FycmF5KERhdHVtLCBicmRlc2Mt PmJkX3RvdGFsc3RvcmVkKTsKICNlbmRpZgogCiAJLyoKQEAgLTQ4OCw5ICs0ODgsOSBAQCBi cmluX25ld19tZW10dXBsZShCcmluRGVzYyAqYnJkZXNjKQogCQkJCQkJc2l6ZW9mKEJyaW5W YWx1ZXMpICogYnJkZXNjLT5iZF90dXBkZXNjLT5uYXR0cyk7CiAJZHR1cCA9IHBhbGxvYzAo YmFzZXNpemUgKyBzaXplb2YoRGF0dW0pICogYnJkZXNjLT5iZF90b3RhbHN0b3JlZCk7CiAK LQlkdHVwLT5idF92YWx1ZXMgPSBwYWxsb2Moc2l6ZW9mKERhdHVtKSAqIGJyZGVzYy0+YmRf dG90YWxzdG9yZWQpOwotCWR0dXAtPmJ0X2FsbG51bGxzID0gcGFsbG9jKHNpemVvZihib29s KSAqIGJyZGVzYy0+YmRfdHVwZGVzYy0+bmF0dHMpOwotCWR0dXAtPmJ0X2hhc251bGxzID0g cGFsbG9jKHNpemVvZihib29sKSAqIGJyZGVzYy0+YmRfdHVwZGVzYy0+bmF0dHMpOworCWR0 dXAtPmJ0X3ZhbHVlcyA9IHBhbGxvY19hcnJheShEYXR1bSwgYnJkZXNjLT5iZF90b3RhbHN0 b3JlZCk7IAorCWR0dXAtPmJ0X2FsbG51bGxzID0gcGFsbG9jX2FycmF5KGJvb2wsIGJyZGVz Yy0+YmRfdHVwZGVzYy0+bmF0dHMpOworCWR0dXAtPmJ0X2hhc251bGxzID0gcGFsbG9jX2Fy cmF5KGJvb2wsIGJyZGVzYy0+YmRfdHVwZGVzYy0+bmF0dHMpOwogCiAJZHR1cC0+YnRfZW1w dHlfcmFuZ2UgPSB0cnVlOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvY29t bW9uL2F0dG1hcC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi9hdHRtYXAuYwppbmRl eCA0OTAxZWJlY2VmNy4uNGNmYTllZTc4ZjkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9jb21tb24vYXR0bWFwLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi9h dHRtYXAuYwpAQCAtNDEsOSArNDEsOSBAQCBtYWtlX2F0dHJtYXAoaW50IG1hcGxlbikKIHsK IAlBdHRyTWFwICAgICpyZXM7CiAKLQlyZXMgPSAoQXR0ck1hcCAqKSBwYWxsb2MwKHNpemVv ZihBdHRyTWFwKSk7CisJcmVzID0gcGFsbG9jMF9vYmplY3QoQXR0ck1hcCk7CiAJcmVzLT5t YXBsZW4gPSBtYXBsZW47Ci0JcmVzLT5hdHRudW1zID0gKEF0dHJOdW1iZXIgKikgcGFsbG9j MChzaXplb2YoQXR0ck51bWJlcikgKiBtYXBsZW4pOworCXJlcy0+YXR0bnVtcyA9IHBhbGxv YzBfYXJyYXkoQXR0ck51bWJlciwgbWFwbGVuKTsKIAlyZXR1cm4gcmVzOwogfQogCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvY29tbW9uL2hlYXB0dXBsZS5jIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL2NvbW1vbi9oZWFwdHVwbGUuYwppbmRleCA3NGE1MmQ4NzA2Ny4uNjk0 NGY3MGM0MzUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vaGVhcHR1 cGxlLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi9oZWFwdHVwbGUuYwpAQCAt MTIzMCw4ICsxMjMwLDggQEAgaGVhcF9tb2RpZnlfdHVwbGUoSGVhcFR1cGxlIHR1cGxlLAog CSAqIE8oTl4yKSBpZiB0aGVyZSBhcmUgbWFueSBub24tcmVwbGFjZWQgY29sdW1ucywgc28g aXQgc2VlbXMgYmV0dGVyIHRvCiAJICogZXJyIG9uIHRoZSBzaWRlIG9mIGxpbmVhciBjb3N0 LgogCSAqLwotCXZhbHVlcyA9IChEYXR1bSAqKSBwYWxsb2MobnVtYmVyT2ZBdHRyaWJ1dGVz ICogc2l6ZW9mKERhdHVtKSk7Ci0JaXNudWxsID0gKGJvb2wgKikgcGFsbG9jKG51bWJlck9m QXR0cmlidXRlcyAqIHNpemVvZihib29sKSk7CisJdmFsdWVzID0gcGFsbG9jX2FycmF5KERh dHVtLCBudW1iZXJPZkF0dHJpYnV0ZXMpOworCWlzbnVsbCA9IHBhbGxvY19hcnJheShib29s LCBudW1iZXJPZkF0dHJpYnV0ZXMpOwogCiAJaGVhcF9kZWZvcm1fdHVwbGUodHVwbGUsIHR1 cGxlRGVzYywgdmFsdWVzLCBpc251bGwpOwogCkBAIC0xMjkyLDggKzEyOTIsOCBAQCBoZWFw X21vZGlmeV90dXBsZV9ieV9jb2xzKEhlYXBUdXBsZSB0dXBsZSwKIAkgKiBhbGxvY2F0ZSBh bmQgZmlsbCB2YWx1ZXMgYW5kIGlzbnVsbCBhcnJheXMgZnJvbSB0aGUgdHVwbGUsIHRoZW4g cmVwbGFjZQogCSAqIHNlbGVjdGVkIGNvbHVtbnMgZnJvbSB0aGUgaW5wdXQgYXJyYXlzLgog CSAqLwotCXZhbHVlcyA9IChEYXR1bSAqKSBwYWxsb2MobnVtYmVyT2ZBdHRyaWJ1dGVzICog c2l6ZW9mKERhdHVtKSk7Ci0JaXNudWxsID0gKGJvb2wgKikgcGFsbG9jKG51bWJlck9mQXR0 cmlidXRlcyAqIHNpemVvZihib29sKSk7CisJdmFsdWVzID0gcGFsbG9jX2FycmF5KERhdHVt LCBudW1iZXJPZkF0dHJpYnV0ZXMpOworCWlzbnVsbCA9IHBhbGxvY19hcnJheShib29sLCBu dW1iZXJPZkF0dHJpYnV0ZXMpOwogCiAJaGVhcF9kZWZvcm1fdHVwbGUodHVwbGUsIHR1cGxl RGVzYywgdmFsdWVzLCBpc251bGwpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nl c3MvY29tbW9uL3ByaW50dHVwLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvY29tbW9uL3ByaW50 dHVwLmMKaW5kZXggOWYwNWUxZDE1YmQuLjQ1ZTc3YTI3ZjQyIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9hY2Nlc3MvY29tbW9uL3ByaW50dHVwLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2NvbW1vbi9wcmludHR1cC5jCkBAIC03MSw3ICs3MSw3IEBAIHR5cGVkZWYgc3RydWN0 CiBEZXN0UmVjZWl2ZXIgKgogcHJpbnR0dXBfY3JlYXRlX0RSKENvbW1hbmREZXN0IGRlc3Qp CiB7Ci0JRFJfcHJpbnR0dXAgKnNlbGYgPSAoRFJfcHJpbnR0dXAgKikgcGFsbG9jMChzaXpl b2YoRFJfcHJpbnR0dXApKTsKKwlEUl9wcmludHR1cCAqc2VsZiA9IHBhbGxvYzBfb2JqZWN0 KERSX3ByaW50dHVwKTsKIAogCXNlbGYtPnB1Yi5yZWNlaXZlU2xvdCA9IHByaW50dHVwOwkv KiBtaWdodCBnZXQgY2hhbmdlZCBsYXRlciAqLwogCXNlbGYtPnB1Yi5yU3RhcnR1cCA9IHBy aW50dHVwX3N0YXJ0dXA7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvY29tbW9u L3JlbG9wdGlvbnMuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vcmVsb3B0aW9ucy5j CmluZGV4IDllMjg4ZGZlY2JmLi4zMTkyNmQ4YTM2OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvYWNjZXNzL2NvbW1vbi9yZWxvcHRpb25zLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNz L2NvbW1vbi9yZWxvcHRpb25zLmMKQEAgLTc3Niw3ICs3NzYsNyBAQCByZWdpc3Rlcl9yZWxv cHRpb25zX3ZhbGlkYXRvcihsb2NhbF9yZWxvcHRzICpyZWxvcHRzLCByZWxvcHRzX3ZhbGlk YXRvciB2YWxpZGF0bwogc3RhdGljIHZvaWQKIGFkZF9sb2NhbF9yZWxvcHRpb24obG9jYWxf cmVsb3B0cyAqcmVsb3B0cywgcmVsb3B0X2dlbiAqbmV3b3B0aW9uLCBpbnQgb2Zmc2V0KQog ewotCWxvY2FsX3JlbG9wdCAqb3B0ID0gcGFsbG9jKHNpemVvZigqb3B0KSk7CisJbG9jYWxf cmVsb3B0ICpvcHQgPSBwYWxsb2Nfb2JqZWN0KGxvY2FsX3JlbG9wdCk7CiAKIAlBc3NlcnQo b2Zmc2V0IDwgcmVsb3B0cy0+cmVsb3B0X3N0cnVjdF9zaXplKTsKIApAQCAtMTU3MCw3ICsx NTcwLDcgQEAgc3RhdGljIHJlbG9wdF92YWx1ZSAqCiBwYXJzZUxvY2FsUmVsT3B0aW9ucyhs b2NhbF9yZWxvcHRzICpyZWxvcHRzLCBEYXR1bSBvcHRpb25zLCBib29sIHZhbGlkYXRlKQog ewogCWludAkJCW5vcHRzID0gbGlzdF9sZW5ndGgocmVsb3B0cy0+b3B0aW9ucyk7Ci0JcmVs b3B0X3ZhbHVlICp2YWx1ZXMgPSBwYWxsb2Moc2l6ZW9mKCp2YWx1ZXMpICogbm9wdHMpOwor CXJlbG9wdF92YWx1ZSAqdmFsdWVzID0gcGFsbG9jX2FycmF5KHJlbG9wdF92YWx1ZSwgbm9w dHMpOwogCUxpc3RDZWxsICAgKmxjOwogCWludAkJCWkgPSAwOwogCkBAIC0xOTkxLDcgKzE5 OTEsNyBAQCB2b2lkICoKIGJ1aWxkX2xvY2FsX3JlbG9wdGlvbnMobG9jYWxfcmVsb3B0cyAq cmVsb3B0cywgRGF0dW0gb3B0aW9ucywgYm9vbCB2YWxpZGF0ZSkKIHsKIAlpbnQJCQlub3B0 aW9ucyA9IGxpc3RfbGVuZ3RoKHJlbG9wdHMtPm9wdGlvbnMpOwotCXJlbG9wdF9wYXJzZV9l bHQgKmVsZW1zID0gcGFsbG9jKHNpemVvZigqZWxlbXMpICogbm9wdGlvbnMpOworCXJlbG9w dF9wYXJzZV9lbHQgKmVsZW1zID0gcGFsbG9jX2FycmF5KHJlbG9wdF9wYXJzZV9lbHQsIG5v cHRpb25zKTsKIAlyZWxvcHRfdmFsdWUgKnZhbHM7CiAJdm9pZAkgICAqb3B0czsKIAlpbnQJ CQlpID0gMDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vdGlkc3Rv cmUuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vdGlkc3RvcmUuYwppbmRleCBmYjgw N2Q5ZmU1OS4uNmZhZTQxZTdiNmQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9j b21tb24vdGlkc3RvcmUuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvY29tbW9uL3RpZHN0 b3JlLmMKQEAgLTE2Niw3ICsxNjYsNyBAQCBUaWRTdG9yZUNyZWF0ZUxvY2FsKHNpemVfdCBt YXhfYnl0ZXMsIGJvb2wgaW5zZXJ0X29ubHkpCiAJc2l6ZV90CQltaW5Db250ZXh0U2l6ZSA9 IEFMTE9DU0VUX0RFRkFVTFRfTUlOU0laRTsKIAlzaXplX3QJCW1heEJsb2NrU2l6ZSA9IEFM TE9DU0VUX0RFRkFVTFRfTUFYU0laRTsKIAotCXRzID0gcGFsbG9jMChzaXplb2YoVGlkU3Rv cmUpKTsKKwl0cyA9IHBhbGxvYzBfb2JqZWN0KFRpZFN0b3JlKTsKIAogCS8qIGNob29zZSB0 aGUgbWF4QmxvY2tTaXplIHRvIGJlIG5vIGxhcmdlciB0aGFuIDEvMTYgb2YgbWF4X2J5dGVz ICovCiAJd2hpbGUgKDE2ICogbWF4QmxvY2tTaXplID4gbWF4X2J5dGVzKQpAQCAtMjEyLDcg KzIxMiw3IEBAIFRpZFN0b3JlQ3JlYXRlU2hhcmVkKHNpemVfdCBtYXhfYnl0ZXMsIGludCB0 cmFuY2hlX2lkKQogCXNpemVfdAkJZHNhX2luaXRfc2l6ZSA9IERTQV9ERUZBVUxUX0lOSVRf U0VHTUVOVF9TSVpFOwogCXNpemVfdAkJZHNhX21heF9zaXplID0gRFNBX01BWF9TRUdNRU5U X1NJWkU7CiAKLQl0cyA9IHBhbGxvYzAoc2l6ZW9mKFRpZFN0b3JlKSk7CisJdHMgPSBwYWxs b2MwX29iamVjdChUaWRTdG9yZSk7CiAKIAkvKgogCSAqIENob29zZSB0aGUgaW5pdGlhbCBh bmQgbWF4aW11bSBEU0Egc2VnbWVudCBzaXplcyB0byBiZSBubyBsb25nZXIgdGhhbgpAQCAt MjUwLDcgKzI1MCw3IEBAIFRpZFN0b3JlQXR0YWNoKGRzYV9oYW5kbGUgYXJlYV9oYW5kbGUs IGRzYV9wb2ludGVyIGhhbmRsZSkKIAlBc3NlcnQoRHNhUG9pbnRlcklzVmFsaWQoaGFuZGxl KSk7CiAKIAkvKiBjcmVhdGUgcGVyLWJhY2tlbmQgc3RhdGUgKi8KLQl0cyA9IHBhbGxvYzAo c2l6ZW9mKFRpZFN0b3JlKSk7CisJdHMgPSBwYWxsb2MwX29iamVjdChUaWRTdG9yZSk7CiAK IAlhcmVhID0gZHNhX2F0dGFjaChhcmVhX2hhbmRsZSk7CiAKQEAgLTQ3Miw3ICs0NzIsNyBA QCBUaWRTdG9yZUJlZ2luSXRlcmF0ZShUaWRTdG9yZSAqdHMpCiB7CiAJVGlkU3RvcmVJdGVy ICppdGVyOwogCi0JaXRlciA9IHBhbGxvYzAoc2l6ZW9mKFRpZFN0b3JlSXRlcikpOworCWl0 ZXIgPSBwYWxsb2MwX29iamVjdChUaWRTdG9yZUl0ZXIpOwogCWl0ZXItPnRzID0gdHM7CiAK IAlpZiAoVGlkU3RvcmVJc1NoYXJlZCh0cykpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9h Y2Nlc3MvY29tbW9uL3RvYXN0X2ludGVybmFscy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2Nv bW1vbi90b2FzdF9pbnRlcm5hbHMuYwppbmRleCA2M2I4NDg0NzNmOC4uZDA2YWY4MmRlMTUg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vdG9hc3RfaW50ZXJuYWxz LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi90b2FzdF9pbnRlcm5hbHMuYwpA QCAtNTY4LDcgKzU2OCw3IEBAIHRvYXN0X29wZW5faW5kZXhlcyhSZWxhdGlvbiB0b2FzdHJl bCwKIAkqbnVtX2luZGV4ZXMgPSBsaXN0X2xlbmd0aChpbmRleGxpc3QpOwogCiAJLyogT3Bl biBhbGwgdGhlIGluZGV4IHJlbGF0aW9ucyAqLwotCSp0b2FzdGlkeHMgPSAoUmVsYXRpb24g KikgcGFsbG9jKCpudW1faW5kZXhlcyAqIHNpemVvZihSZWxhdGlvbikpOworCSp0b2FzdGlk eHMgPSBwYWxsb2NfYXJyYXkoUmVsYXRpb24sICpudW1faW5kZXhlcyk7CiAJZm9yZWFjaChs YywgaW5kZXhsaXN0KQogCQkoKnRvYXN0aWR4cylbaSsrXSA9IGluZGV4X29wZW4obGZpcnN0 X29pZChsYyksIGxvY2spOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvY29t bW9uL3R1cGNvbnZlcnQuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vdHVwY29udmVy dC5jCmluZGV4IDFkZjBjMmQyZjk4Li45OWMxOTdlMzYxZiAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL2NvbW1vbi90dXBjb252ZXJ0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2NvbW1vbi90dXBjb252ZXJ0LmMKQEAgLTc1LDE3ICs3NSwxNyBAQCBjb252ZXJ0X3R1 cGxlc19ieV9wb3NpdGlvbihUdXBsZURlc2MgaW5kZXNjLAogCX0KIAogCS8qIFByZXBhcmUg dGhlIG1hcCBzdHJ1Y3R1cmUgKi8KLQltYXAgPSAoVHVwbGVDb252ZXJzaW9uTWFwICopIHBh bGxvYyhzaXplb2YoVHVwbGVDb252ZXJzaW9uTWFwKSk7CisJbWFwID0gcGFsbG9jX29iamVj dChUdXBsZUNvbnZlcnNpb25NYXApOwogCW1hcC0+aW5kZXNjID0gaW5kZXNjOwogCW1hcC0+ b3V0ZGVzYyA9IG91dGRlc2M7CiAJbWFwLT5hdHRyTWFwID0gYXR0ck1hcDsKIAkvKiBwcmVh bGxvY2F0ZSB3b3Jrc3BhY2UgZm9yIERhdHVtIGFycmF5cyAqLwogCW4gPSBvdXRkZXNjLT5u YXR0cyArIDE7CQkvKiArMSBmb3IgTlVMTCAqLwotCW1hcC0+b3V0dmFsdWVzID0gKERhdHVt ICopIHBhbGxvYyhuICogc2l6ZW9mKERhdHVtKSk7Ci0JbWFwLT5vdXRpc251bGwgPSAoYm9v bCAqKSBwYWxsb2MobiAqIHNpemVvZihib29sKSk7CisJbWFwLT5vdXR2YWx1ZXMgPSBwYWxs b2NfYXJyYXkoRGF0dW0sIG4pOworCW1hcC0+b3V0aXNudWxsID0gcGFsbG9jX2FycmF5KGJv b2wsIG4pOwogCW4gPSBpbmRlc2MtPm5hdHRzICsgMTsJCS8qICsxIGZvciBOVUxMICovCi0J bWFwLT5pbnZhbHVlcyA9IChEYXR1bSAqKSBwYWxsb2MobiAqIHNpemVvZihEYXR1bSkpOwot CW1hcC0+aW5pc251bGwgPSAoYm9vbCAqKSBwYWxsb2MobiAqIHNpemVvZihib29sKSk7CisJ bWFwLT5pbnZhbHVlcyA9IHBhbGxvY19hcnJheShEYXR1bSwgbik7CisJbWFwLT5pbmlzbnVs bCA9IHBhbGxvY19hcnJheShib29sLCBuKTsKIAltYXAtPmludmFsdWVzWzBdID0gKERhdHVt KSAwOwkvKiBzZXQgdXAgdGhlIE5VTEwgZW50cnkgKi8KIAltYXAtPmluaXNudWxsWzBdID0g dHJ1ZTsKIApAQCAtMTMyLDE2ICsxMzIsMTYgQEAgY29udmVydF90dXBsZXNfYnlfbmFtZV9h dHRybWFwKFR1cGxlRGVzYyBpbmRlc2MsCiAJQXNzZXJ0KGF0dHJNYXAgIT0gTlVMTCk7CiAK IAkvKiBQcmVwYXJlIHRoZSBtYXAgc3RydWN0dXJlICovCi0JbWFwID0gKFR1cGxlQ29udmVy c2lvbk1hcCAqKSBwYWxsb2Moc2l6ZW9mKFR1cGxlQ29udmVyc2lvbk1hcCkpOworCW1hcCA9 IHBhbGxvY19vYmplY3QoVHVwbGVDb252ZXJzaW9uTWFwKTsKIAltYXAtPmluZGVzYyA9IGlu ZGVzYzsKIAltYXAtPm91dGRlc2MgPSBvdXRkZXNjOwogCW1hcC0+YXR0ck1hcCA9IGF0dHJN YXA7CiAJLyogcHJlYWxsb2NhdGUgd29ya3NwYWNlIGZvciBEYXR1bSBhcnJheXMgKi8KLQlt YXAtPm91dHZhbHVlcyA9IChEYXR1bSAqKSBwYWxsb2MobiAqIHNpemVvZihEYXR1bSkpOwot CW1hcC0+b3V0aXNudWxsID0gKGJvb2wgKikgcGFsbG9jKG4gKiBzaXplb2YoYm9vbCkpOwor CW1hcC0+b3V0dmFsdWVzID0gcGFsbG9jX2FycmF5KERhdHVtLCBuKTsKKwltYXAtPm91dGlz bnVsbCA9IHBhbGxvY19hcnJheShib29sLCBuKTsKIAluID0gaW5kZXNjLT5uYXR0cyArIDE7 CQkvKiArMSBmb3IgTlVMTCAqLwotCW1hcC0+aW52YWx1ZXMgPSAoRGF0dW0gKikgcGFsbG9j KG4gKiBzaXplb2YoRGF0dW0pKTsKLQltYXAtPmluaXNudWxsID0gKGJvb2wgKikgcGFsbG9j KG4gKiBzaXplb2YoYm9vbCkpOworCW1hcC0+aW52YWx1ZXMgPSBwYWxsb2NfYXJyYXkoRGF0 dW0sIG4pOworCW1hcC0+aW5pc251bGwgPSBwYWxsb2NfYXJyYXkoYm9vbCwgbik7CiAJbWFw LT5pbnZhbHVlc1swXSA9IChEYXR1bSkgMDsJLyogc2V0IHVwIHRoZSBOVUxMIGVudHJ5ICov CiAJbWFwLT5pbmlzbnVsbFswXSA9IHRydWU7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9jb21tb24vdHVwZGVzYy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi90 dXBkZXNjLmMKaW5kZXggZDcxNWMzNDVkZDguLmJjZDFkZGNjNjhiIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9hY2Nlc3MvY29tbW9uL3R1cGRlc2MuYworKysgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvY29tbW9uL3R1cGRlc2MuYwpAQCAtMzYxLDcgKzM2MSw3IEBAIENyZWF0ZVR1cGxl RGVzY0NvcHlDb25zdHIoVHVwbGVEZXNjIHR1cGRlc2MpCiAJLyogQ29weSB0aGUgVHVwbGVD b25zdHIgZGF0YSBzdHJ1Y3R1cmUsIGlmIGFueSAqLwogCWlmIChjb25zdHIpCiAJewotCQlU dXBsZUNvbnN0ciAqY3B5ID0gKFR1cGxlQ29uc3RyICopIHBhbGxvYzAoc2l6ZW9mKFR1cGxl Q29uc3RyKSk7CisJCVR1cGxlQ29uc3RyICpjcHkgPSBwYWxsb2MwX29iamVjdChUdXBsZUNv bnN0cik7CiAKIAkJY3B5LT5oYXNfbm90X251bGwgPSBjb25zdHItPmhhc19ub3RfbnVsbDsK IAkJY3B5LT5oYXNfZ2VuZXJhdGVkX3N0b3JlZCA9IGNvbnN0ci0+aGFzX2dlbmVyYXRlZF9z dG9yZWQ7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmJ0cmVlLmMg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmJ0cmVlLmMKaW5kZXggNjQ0ZDQ4NGVhNTMu LjQ3Zjg4MWFlNTk2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmJ0 cmVlLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW5idHJlZS5jCkBAIC04NSw3 ICs4NSw3IEBAIGdpbkZpbmRMZWFmUGFnZShHaW5CdHJlZSBidHJlZSwgYm9vbCBzZWFyY2hN b2RlLAogewogCUdpbkJ0cmVlU3RhY2sgKnN0YWNrOwogCi0Jc3RhY2sgPSAoR2luQnRyZWVT dGFjayAqKSBwYWxsb2Moc2l6ZW9mKEdpbkJ0cmVlU3RhY2spKTsKKwlzdGFjayA9IHBhbGxv Y19vYmplY3QoR2luQnRyZWVTdGFjayk7CiAJc3RhY2stPmJsa25vID0gYnRyZWUtPnJvb3RC bGtubzsKIAlzdGFjay0+YnVmZmVyID0gUmVhZEJ1ZmZlcihidHJlZS0+aW5kZXgsIGJ0cmVl LT5yb290Qmxrbm8pOwogCXN0YWNrLT5wYXJlbnQgPSBOVUxMOwpAQCAtMTUyLDcgKzE1Miw3 IEBAIGdpbkZpbmRMZWFmUGFnZShHaW5CdHJlZSBidHJlZSwgYm9vbCBzZWFyY2hNb2RlLAog CQl9CiAJCWVsc2UKIAkJewotCQkJR2luQnRyZWVTdGFjayAqcHRyID0gKEdpbkJ0cmVlU3Rh Y2sgKikgcGFsbG9jKHNpemVvZihHaW5CdHJlZVN0YWNrKSk7CisJCQlHaW5CdHJlZVN0YWNr ICpwdHIgPSBwYWxsb2Nfb2JqZWN0KEdpbkJ0cmVlU3RhY2spOwogCiAJCQlwdHItPnBhcmVu dCA9IHN0YWNrOwogCQkJc3RhY2sgPSBwdHI7CkBAIC0yNDYsNyArMjQ2LDcgQEAgZ2luRmlu ZFBhcmVudHMoR2luQnRyZWUgYnRyZWUsIEdpbkJ0cmVlU3RhY2sgKnN0YWNrKQogCWJsa25v ID0gcm9vdC0+Ymxrbm87CiAJYnVmZmVyID0gcm9vdC0+YnVmZmVyOwogCi0JcHRyID0gKEdp bkJ0cmVlU3RhY2sgKikgcGFsbG9jKHNpemVvZihHaW5CdHJlZVN0YWNrKSk7CisJcHRyID0g cGFsbG9jX29iamVjdChHaW5CdHJlZVN0YWNrKTsKIAogCWZvciAoOzspCiAJewpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW5idWxrLmMgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvZ2luL2dpbmJ1bGsuYwppbmRleCAzMDJjYjIwOTJhOS4uZjczZWU3YjFmYTQgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luYnVsay5jCisrKyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9naW4vZ2luYnVsay5jCkBAIC05Myw3ICs5Myw3IEBAIGdpbkFsbG9j RW50cnlBY2N1bXVsYXRvcih2b2lkICphcmcpCiAJICovCiAJaWYgKGFjY3VtLT5lbnRyeWFs bG9jYXRvciA9PSBOVUxMIHx8IGFjY3VtLT5lYXNfdXNlZCA+PSBERUZfTkVOVFJZKQogCXsK LQkJYWNjdW0tPmVudHJ5YWxsb2NhdG9yID0gcGFsbG9jKHNpemVvZihHaW5FbnRyeUFjY3Vt dWxhdG9yKSAqIERFRl9ORU5UUlkpOworCQlhY2N1bS0+ZW50cnlhbGxvY2F0b3IgPSBwYWxs b2NfYXJyYXkoR2luRW50cnlBY2N1bXVsYXRvciwgREVGX05FTlRSWSk7CiAJCWFjY3VtLT5h bGxvY2F0ZWRNZW1vcnkgKz0gR2V0TWVtb3J5Q2h1bmtTcGFjZShhY2N1bS0+ZW50cnlhbGxv Y2F0b3IpOwogCQlhY2N1bS0+ZWFzX3VzZWQgPSAwOwogCX0KQEAgLTE3Nyw4ICsxNzcsNyBA QCBnaW5JbnNlcnRCQUVudHJ5KEJ1aWxkQWNjdW11bGF0b3IgKmFjY3VtLAogCQllYS0+bWF4 Y291bnQgPSBERUZfTlBUUjsKIAkJZWEtPmNvdW50ID0gMTsKIAkJZWEtPnNob3VsZFNvcnQg PSBmYWxzZTsKLQkJZWEtPmxpc3QgPQotCQkJKEl0ZW1Qb2ludGVyRGF0YSAqKSBwYWxsb2Mo c2l6ZW9mKEl0ZW1Qb2ludGVyRGF0YSkgKiBERUZfTlBUUik7CisJCWVhLT5saXN0ID0gcGFs bG9jX2FycmF5KEl0ZW1Qb2ludGVyRGF0YSwgREVGX05QVFIpOwogCQllYS0+bGlzdFswXSA9 ICpoZWFwcHRyOwogCQlhY2N1bS0+YWxsb2NhdGVkTWVtb3J5ICs9IEdldE1lbW9yeUNodW5r U3BhY2UoZWEtPmxpc3QpOwogCX0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9n aW4vZ2luZGF0YXBhZ2UuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luZGF0YXBhZ2Uu YwppbmRleCA2YzJjNjE5NDcyMC4uOTExOTFmZjE4YjkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9naW4vZ2luZGF0YXBhZ2UuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv Z2luL2dpbmRhdGFwYWdlLmMKQEAgLTEzMzIsNyArMTMzMiw3IEBAIGRhdGFTcGxpdFBhZ2VJ bnRlcm5hbChHaW5CdHJlZSBidHJlZSwgQnVmZmVyIG9yaWdidWYsCiBzdGF0aWMgdm9pZCAq CiBkYXRhUHJlcGFyZURvd25saW5rKEdpbkJ0cmVlIGJ0cmVlLCBCdWZmZXIgbGJ1ZikKIHsK LQlQb3N0aW5nSXRlbSAqcGl0ZW0gPSBwYWxsb2Moc2l6ZW9mKFBvc3RpbmdJdGVtKSk7CisJ UG9zdGluZ0l0ZW0gKnBpdGVtID0gcGFsbG9jX29iamVjdChQb3N0aW5nSXRlbSk7CiAJUGFn ZQkJbHBhZ2UgPSBCdWZmZXJHZXRQYWdlKGxidWYpOwogCiAJUG9zdGluZ0l0ZW1TZXRCbG9j a051bWJlcihwaXRlbSwgQnVmZmVyR2V0QmxvY2tOdW1iZXIobGJ1ZikpOwpAQCAtMTM3NCw3 ICsxMzc0LDcgQEAgZGlzYXNzZW1ibGVMZWFmKFBhZ2UgcGFnZSkKIAlQb2ludGVyCQlzZWdi ZWdpbjsKIAlQb2ludGVyCQlzZWdlbmQ7CiAKLQlsZWFmID0gcGFsbG9jMChzaXplb2YoZGlz YXNzZW1ibGVkTGVhZikpOworCWxlYWYgPSBwYWxsb2MwX29iamVjdChkaXNhc3NlbWJsZWRM ZWFmKTsKIAlkbGlzdF9pbml0KCZsZWFmLT5zZWdtZW50cyk7CiAKIAlpZiAoR2luUGFnZUlz Q29tcHJlc3NlZChwYWdlKSkKQEAgLTEzODcsNyArMTM4Nyw3IEBAIGRpc2Fzc2VtYmxlTGVh ZihQYWdlIHBhZ2UpCiAJCXNlZ2VuZCA9IHNlZ2JlZ2luICsgR2luRGF0YUxlYWZQYWdlR2V0 UG9zdGluZ0xpc3RTaXplKHBhZ2UpOwogCQl3aGlsZSAoKFBvaW50ZXIpIHNlZyA8IHNlZ2Vu ZCkKIAkJewotCQkJbGVhZlNlZ21lbnRJbmZvICpzZWdpbmZvID0gcGFsbG9jKHNpemVvZihs ZWFmU2VnbWVudEluZm8pKTsKKwkJCWxlYWZTZWdtZW50SW5mbyAqc2VnaW5mbyA9IHBhbGxv Y19vYmplY3QobGVhZlNlZ21lbnRJbmZvKTsKIAogCQkJc2VnaW5mby0+YWN0aW9uID0gR0lO X1NFR01FTlRfVU5NT0RJRklFRDsKIAkJCXNlZ2luZm8tPnNlZyA9IHNlZzsKQEAgLTE0MTQs NyArMTQxNCw3IEBAIGRpc2Fzc2VtYmxlTGVhZihQYWdlIHBhZ2UpCiAKIAkJaWYgKG51bmNv bXByZXNzZWQgPiAwKQogCQl7Ci0JCQlzZWdpbmZvID0gcGFsbG9jKHNpemVvZihsZWFmU2Vn bWVudEluZm8pKTsKKwkJCXNlZ2luZm8gPSBwYWxsb2Nfb2JqZWN0KGxlYWZTZWdtZW50SW5m byk7CiAKIAkJCXNlZ2luZm8tPmFjdGlvbiA9IEdJTl9TRUdNRU5UX1JFUExBQ0U7CiAJCQlz ZWdpbmZvLT5zZWcgPSBOVUxMOwpAQCAtMTQ1NSw3ICsxNDU1LDcgQEAgYWRkSXRlbXNUb0xl YWYoZGlzYXNzZW1ibGVkTGVhZiAqbGVhZiwgSXRlbVBvaW50ZXIgbmV3SXRlbXMsIGludCBu TmV3SXRlbXMpCiAJICovCiAJaWYgKGRsaXN0X2lzX2VtcHR5KCZsZWFmLT5zZWdtZW50cykp CiAJewotCQluZXdzZWcgPSBwYWxsb2Moc2l6ZW9mKGxlYWZTZWdtZW50SW5mbykpOworCQlu ZXdzZWcgPSBwYWxsb2Nfb2JqZWN0KGxlYWZTZWdtZW50SW5mbyk7CiAJCW5ld3NlZy0+c2Vn ID0gTlVMTDsKIAkJbmV3c2VnLT5pdGVtcyA9IG5ld0l0ZW1zOwogCQluZXdzZWctPm5pdGVt cyA9IG5OZXdJdGVtczsKQEAgLTE1MTIsNyArMTUxMiw3IEBAIGFkZEl0ZW1zVG9MZWFmKGRp c2Fzc2VtYmxlZExlYWYgKmxlYWYsIEl0ZW1Qb2ludGVyIG5ld0l0ZW1zLCBpbnQgbk5ld0l0 ZW1zKQogCQkJY3VyLT5zZWcgIT0gTlVMTCAmJgogCQkJU2l6ZU9mR2luUG9zdGluZ0xpc3Qo Y3VyLT5zZWcpID49IEdpblBvc3RpbmdMaXN0U2VnbWVudFRhcmdldFNpemUpCiAJCXsKLQkJ CW5ld3NlZyA9IHBhbGxvYyhzaXplb2YobGVhZlNlZ21lbnRJbmZvKSk7CisJCQluZXdzZWcg PSBwYWxsb2Nfb2JqZWN0KGxlYWZTZWdtZW50SW5mbyk7CiAJCQluZXdzZWctPnNlZyA9IE5V TEw7CiAJCQluZXdzZWctPml0ZW1zID0gbmV4dG5ldzsKIAkJCW5ld3NlZy0+bml0ZW1zID0g bnRoaXM7CkBAIC0xNjI5LDcgKzE2MjksNyBAQCBsZWFmUmVwYWNrSXRlbXMoZGlzYXNzZW1i bGVkTGVhZiAqbGVhZiwgSXRlbVBvaW50ZXIgcmVtYWluaW5nKQogCQkJCQlpZiAoc2VnaW5m by0+YWN0aW9uICE9IEdJTl9TRUdNRU5UX0lOU0VSVCkKIAkJCQkJCXNlZ2luZm8tPmFjdGlv biA9IEdJTl9TRUdNRU5UX1JFUExBQ0U7CiAKLQkJCQkJbmV4dHNlZyA9IHBhbGxvYyhzaXpl b2YobGVhZlNlZ21lbnRJbmZvKSk7CisJCQkJCW5leHRzZWcgPSBwYWxsb2Nfb2JqZWN0KGxl YWZTZWdtZW50SW5mbyk7CiAJCQkJCW5leHRzZWctPmFjdGlvbiA9IEdJTl9TRUdNRU5UX0lO U0VSVDsKIAkJCQkJbmV4dHNlZy0+c2VnID0gTlVMTDsKIAkJCQkJbmV4dHNlZy0+aXRlbXMg PSAmc2VnaW5mby0+aXRlbXNbbnBhY2tlZF07CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9h Y2Nlc3MvZ2luL2dpbmVudHJ5cGFnZS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW5l bnRyeXBhZ2UuYwppbmRleCBjMDU5MjM2NzcwMC4uNjM0MTNhZmEwMGIgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luZW50cnlwYWdlLmMKKysrIGIvc3JjL2JhY2tl bmQvYWNjZXNzL2dpbi9naW5lbnRyeXBhZ2UuYwpAQCAtMTgzLDcgKzE4Myw3IEBAIGdpblJl YWRUdXBsZShHaW5TdGF0ZSAqZ2luc3RhdGUsIE9mZnNldE51bWJlciBhdHRudW0sIEluZGV4 VHVwbGUgaXR1cCwKIAl9CiAJZWxzZQogCXsKLQkJaXBkID0gKEl0ZW1Qb2ludGVyKSBwYWxs b2Moc2l6ZW9mKEl0ZW1Qb2ludGVyRGF0YSkgKiBuaXBkKTsKKwkJaXBkID0gcGFsbG9jX2Fy cmF5KEl0ZW1Qb2ludGVyRGF0YSwgbmlwZCk7CiAJCW1lbWNweShpcGQsIHB0ciwgc2l6ZW9m KEl0ZW1Qb2ludGVyRGF0YSkgKiBuaXBkKTsKIAl9CiAJKm5pdGVtcyA9IG5pcGQ7CkBAIC03 MDgsNyArNzA4LDcgQEAgZW50cnlQcmVwYXJlRG93bmxpbmsoR2luQnRyZWUgYnRyZWUsIEJ1 ZmZlciBsYnVmKQogCiAJaXR1cCA9IGdldFJpZ2h0TW9zdFR1cGxlKGxwYWdlKTsKIAotCWlu c2VydERhdGEgPSBwYWxsb2Moc2l6ZW9mKEdpbkJ0cmVlRW50cnlJbnNlcnREYXRhKSk7CisJ aW5zZXJ0RGF0YSA9IHBhbGxvY19vYmplY3QoR2luQnRyZWVFbnRyeUluc2VydERhdGEpOwog CWluc2VydERhdGEtPmVudHJ5ID0gR2luRm9ybUludGVyaW9yVHVwbGUoaXR1cCwgbHBhZ2Us IGxibGtubyk7CiAJaW5zZXJ0RGF0YS0+aXNEZWxldGUgPSBmYWxzZTsKIApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW5nZXQuYyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9naW4vZ2luZ2V0LmMKaW5kZXggMGQ0MTA4ZDA1YTMuLmIzZTJlOWQ1ZjZlIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmdldC5jCisrKyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy9naW4vZ2luZ2V0LmMKQEAgLTU1Miw3ICs1NTIsNyBAQCBzdGFydFNjYW5LZXko R2luU3RhdGUgKmdpbnN0YXRlLCBHaW5TY2FuT3BhcXVlIHNvLCBHaW5TY2FuS2V5IGtleSkK IAl7CiAJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhzby0+dGVtcEN0eCk7CiAKLQkJZW50cnlJ bmRleGVzID0gKGludCAqKSBwYWxsb2Moc2l6ZW9mKGludCkgKiBrZXktPm5lbnRyaWVzKTsK KwkJZW50cnlJbmRleGVzID0gcGFsbG9jX2FycmF5KGludCwga2V5LT5uZW50cmllcyk7CiAJ CWZvciAoaSA9IDA7IGkgPCBrZXktPm5lbnRyaWVzOyBpKyspCiAJCQllbnRyeUluZGV4ZXNb aV0gPSBpOwogCQlxc29ydF9hcmcoZW50cnlJbmRleGVzLCBrZXktPm5lbnRyaWVzLCBzaXpl b2YoaW50KSwKQEAgLTE4NzMsNyArMTg3Myw3IEBAIHNjYW5QZW5kaW5nSW5zZXJ0KEluZGV4 U2NhbkRlc2Mgc2NhbiwgVElEQml0bWFwICp0Ym0sIGludDY0ICpudGlkcykKIAlMb2NrQnVm ZmVyKHBvcy5wZW5kaW5nQnVmZmVyLCBHSU5fU0hBUkUpOwogCXBvcy5maXJzdE9mZnNldCA9 IEZpcnN0T2Zmc2V0TnVtYmVyOwogCVVubG9ja1JlbGVhc2VCdWZmZXIobWV0YWJ1ZmZlcik7 Ci0JcG9zLmhhc01hdGNoS2V5ID0gcGFsbG9jKHNpemVvZihib29sKSAqIHNvLT5ua2V5cyk7 CisJcG9zLmhhc01hdGNoS2V5ID0gcGFsbG9jX2FycmF5KGJvb2wsIHNvLT5ua2V5cyk7CiAK IAkvKgogCSAqIGxvb3AgZm9yIGVhY2ggaGVhcCByb3cuIHNjYW5HZXRDYW5kaWRhdGUgcmV0 dXJucyBmdWxsIHJvdyBvciByb3cncwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNz L2dpbi9naW5pbnNlcnQuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luaW5zZXJ0LmMK aW5kZXggYzJiODc5YjJiZjYuLmFiMGM1MTg2YjNkIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvZ2luL2dpbmluc2VydC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4v Z2luaW5zZXJ0LmMKQEAgLTcwNyw3ICs3MDcsNyBAQCBnaW5idWlsZChSZWxhdGlvbiBoZWFw LCBSZWxhdGlvbiBpbmRleCwgSW5kZXhJbmZvICppbmRleEluZm8pCiAJewogCQlTb3J0Q29v cmRpbmF0ZSBjb29yZGluYXRlOwogCi0JCWNvb3JkaW5hdGUgPSAoU29ydENvb3JkaW5hdGUp IHBhbGxvYzAoc2l6ZW9mKFNvcnRDb29yZGluYXRlRGF0YSkpOworCQljb29yZGluYXRlID0g cGFsbG9jMF9vYmplY3QoU29ydENvb3JkaW5hdGVEYXRhKTsKIAkJY29vcmRpbmF0ZS0+aXNX b3JrZXIgPSBmYWxzZTsKIAkJY29vcmRpbmF0ZS0+blBhcnRpY2lwYW50cyA9CiAJCQlzdGF0 ZS0+YnNfbGVhZGVyLT5ucGFydGljaXBhbnR0dXBsZXNvcnRzOwpAQCAtNzkxLDcgKzc5MSw3 IEBAIGdpbmJ1aWxkKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBJbmRleEluZm8g KmluZGV4SW5mbykKIAkvKgogCSAqIFJldHVybiBzdGF0aXN0aWNzCiAJICovCi0JcmVzdWx0 ID0gKEluZGV4QnVpbGRSZXN1bHQgKikgcGFsbG9jKHNpemVvZihJbmRleEJ1aWxkUmVzdWx0 KSk7CisJcmVzdWx0ID0gcGFsbG9jX29iamVjdChJbmRleEJ1aWxkUmVzdWx0KTsKIAogCXJl c3VsdC0+aGVhcF90dXBsZXMgPSByZWx0dXBsZXM7CiAJcmVzdWx0LT5pbmRleF90dXBsZXMg PSBidWlsZHN0YXRlLmluZHR1cGxlczsKQEAgLTg2Nyw3ICs4NjcsNyBAQCBnaW5pbnNlcnQo UmVsYXRpb24gaW5kZXgsIERhdHVtICp2YWx1ZXMsIGJvb2wgKmlzbnVsbCwKIAlpZiAoZ2lu c3RhdGUgPT0gTlVMTCkKIAl7CiAJCW9sZEN0eCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhp bmRleEluZm8tPmlpX0NvbnRleHQpOwotCQlnaW5zdGF0ZSA9IChHaW5TdGF0ZSAqKSBwYWxs b2Moc2l6ZW9mKEdpblN0YXRlKSk7CisJCWdpbnN0YXRlID0gcGFsbG9jX29iamVjdChHaW5T dGF0ZSk7CiAJCWluaXRHaW5TdGF0ZShnaW5zdGF0ZSwgaW5kZXgpOwogCQlpbmRleEluZm8t PmlpX0FtQ2FjaGUgPSBnaW5zdGF0ZTsKIAkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZEN0 eCk7CkBAIC05MzQsNyArOTM0LDcgQEAgX2dpbl9iZWdpbl9wYXJhbGxlbChHaW5CdWlsZFN0 YXRlICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIAlTaXpl CQllc3Rzb3J0OwogCUdpbkJ1aWxkU2hhcmVkICpnaW5zaGFyZWQ7CiAJU2hhcmVkc29ydCAq c2hhcmVkc29ydDsKLQlHaW5MZWFkZXIgICpnaW5sZWFkZXIgPSAoR2luTGVhZGVyICopIHBh bGxvYzAoc2l6ZW9mKEdpbkxlYWRlcikpOworCUdpbkxlYWRlciAgKmdpbmxlYWRlciA9IHBh bGxvYzBfb2JqZWN0KEdpbkxlYWRlcik7CiAJV2FsVXNhZ2UgICAqd2FsdXNhZ2U7CiAJQnVm ZmVyVXNhZ2UgKmJ1ZmZlcnVzYWdlOwogCWJvb2wJCWxlYWRlcnBhcnRpY2lwYXRlcyA9IHRy dWU7CkBAIC0xMjU5LDcgKzEyNTksNyBAQCBBc3NlcnRDaGVja0dpbkJ1ZmZlcihHaW5CdWZm ZXIgKmJ1ZmZlcikKIHN0YXRpYyBHaW5CdWZmZXIgKgogR2luQnVmZmVySW5pdChSZWxhdGlv biBpbmRleCkKIHsKLQlHaW5CdWZmZXIgICpidWZmZXIgPSBwYWxsb2MwKHNpemVvZihHaW5C dWZmZXIpKTsKKwlHaW5CdWZmZXIgICpidWZmZXIgPSBwYWxsb2MwX29iamVjdChHaW5CdWZm ZXIpOwogCWludAkJCWksCiAJCQkJbktleXM7CiAJVHVwbGVEZXNjCWRlc2MgPSBSZWxhdGlv bkdldERlc2NyKGluZGV4KTsKQEAgLTEyNzMsNyArMTI3Myw3IEBAIEdpbkJ1ZmZlckluaXQo UmVsYXRpb24gaW5kZXgpCiAKIAluS2V5cyA9IEluZGV4UmVsYXRpb25HZXROdW1iZXJPZktl eUF0dHJpYnV0ZXMoaW5kZXgpOwogCi0JYnVmZmVyLT5zc3VwID0gcGFsbG9jMChzaXplb2Yo U29ydFN1cHBvcnREYXRhKSAqIG5LZXlzKTsKKwlidWZmZXItPnNzdXAgPSBwYWxsb2MwX2Fy cmF5KFNvcnRTdXBwb3J0RGF0YSwgbktleXMpOwogCiAJLyoKIAkgKiBMb29rdXAgb3JkZXJp bmcgb3BlcmF0b3IgZm9yIHRoZSBpbmRleCBrZXkgZGF0YSB0eXBlLCBhbmQgaW5pdGlhbGl6 ZQpAQCAtMjAzMCw3ICsyMDMwLDcgQEAgX2dpbl9wYXJhbGxlbF9zY2FuX2FuZF9idWlsZChH aW5CdWlsZFN0YXRlICpzdGF0ZSwKIAlJbmRleEluZm8gICppbmRleEluZm87CiAKIAkvKiBJ bml0aWFsaXplIGxvY2FsIHR1cGxlc29ydCBjb29yZGluYXRpb24gc3RhdGUgKi8KLQljb29y ZGluYXRlID0gcGFsbG9jMChzaXplb2YoU29ydENvb3JkaW5hdGVEYXRhKSk7CisJY29vcmRp bmF0ZSA9IHBhbGxvYzBfb2JqZWN0KFNvcnRDb29yZGluYXRlRGF0YSk7CiAJY29vcmRpbmF0 ZS0+aXNXb3JrZXIgPSB0cnVlOwogCWNvb3JkaW5hdGUtPm5QYXJ0aWNpcGFudHMgPSAtMTsK IAljb29yZGluYXRlLT5zaGFyZWRzb3J0ID0gc2hhcmVkc29ydDsKQEAgLTIyNzksNyArMjI3 OSw3IEBAIF9naW5fYnVpbGRfdHVwbGUoT2Zmc2V0TnVtYmVyIGF0dHJudW0sIHVuc2lnbmVk IGNoYXIgY2F0ZWdvcnksCiAJd2hpbGUgKG5jb21wcmVzc2VkIDwgbml0ZW1zKQogCXsKIAkJ aW50CQkJY250OwotCQlHaW5TZWdtZW50SW5mbyAqc2VnaW5mbyA9IHBhbGxvYyhzaXplb2Yo R2luU2VnbWVudEluZm8pKTsKKwkJR2luU2VnbWVudEluZm8gKnNlZ2luZm8gPSBwYWxsb2Nf b2JqZWN0KEdpblNlZ21lbnRJbmZvKTsKIAogCQlzZWdpbmZvLT5zZWcgPSBnaW5Db21wcmVz c1Bvc3RpbmdMaXN0KCZpdGVtc1tuY29tcHJlc3NlZF0sCiAJCQkJCQkJCQkJCSAgKG5pdGVt cyAtIG5jb21wcmVzc2VkKSwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4v Z2luc2Nhbi5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW5zY2FuLmMKaW5kZXggMjYw ODE2OTMzODMuLjJjYTYzNTkwOWY5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mv Z2luL2dpbnNjYW4uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbnNjYW4uYwpA QCAtMzMsNyArMzMsNyBAQCBnaW5iZWdpbnNjYW4oUmVsYXRpb24gcmVsLCBpbnQgbmtleXMs IGludCBub3JkZXJieXMpCiAJc2NhbiA9IFJlbGF0aW9uR2V0SW5kZXhTY2FuKHJlbCwgbmtl eXMsIG5vcmRlcmJ5cyk7CiAKIAkvKiBhbGxvY2F0ZSBwcml2YXRlIHdvcmtzcGFjZSAqLwot CXNvID0gKEdpblNjYW5PcGFxdWUpIHBhbGxvYyhzaXplb2YoR2luU2Nhbk9wYXF1ZURhdGEp KTsKKwlzbyA9IChHaW5TY2FuT3BhcXVlKSBwYWxsb2Nfb2JqZWN0KEdpblNjYW5PcGFxdWVE YXRhKTsKIAlzby0+a2V5cyA9IE5VTEw7CiAJc28tPm5rZXlzID0gMDsKIAlzby0+dGVtcEN0 eCA9IEFsbG9jU2V0Q29udGV4dENyZWF0ZShDdXJyZW50TWVtb3J5Q29udGV4dCwKQEAgLTk4 LDcgKzk4LDcgQEAgZ2luRmlsbFNjYW5FbnRyeShHaW5TY2FuT3BhcXVlIHNvLCBPZmZzZXRO dW1iZXIgYXR0bnVtLAogCX0KIAogCS8qIE5vcGUsIGNyZWF0ZSBhIG5ldyBlbnRyeSAqLwot CXNjYW5FbnRyeSA9IChHaW5TY2FuRW50cnkpIHBhbGxvYyhzaXplb2YoR2luU2NhbkVudHJ5 RGF0YSkpOworCXNjYW5FbnRyeSA9IHBhbGxvY19vYmplY3QoR2luU2NhbkVudHJ5RGF0YSk7 CiAJc2NhbkVudHJ5LT5xdWVyeUtleSA9IHF1ZXJ5S2V5OwogCXNjYW5FbnRyeS0+cXVlcnlD YXRlZ29yeSA9IHF1ZXJ5Q2F0ZWdvcnk7CiAJc2NhbkVudHJ5LT5pc1BhcnRpYWxNYXRjaCA9 IGlzUGFydGlhbE1hdGNoOwpAQCAtMTIzLDggKzEyMyw3IEBAIGdpbkZpbGxTY2FuRW50cnko R2luU2Nhbk9wYXF1ZSBzbywgT2Zmc2V0TnVtYmVyIGF0dG51bSwKIAlpZiAoc28tPnRvdGFs ZW50cmllcyA+PSBzby0+YWxsb2NlbnRyaWVzKQogCXsKIAkJc28tPmFsbG9jZW50cmllcyAq PSAyOwotCQlzby0+ZW50cmllcyA9IChHaW5TY2FuRW50cnkgKikKLQkJCXJlcGFsbG9jKHNv LT5lbnRyaWVzLCBzby0+YWxsb2NlbnRyaWVzICogc2l6ZW9mKEdpblNjYW5FbnRyeSkpOwor CQlzby0+ZW50cmllcyA9IHJlcGFsbG9jX2FycmF5KHNvLT5lbnRyaWVzLCBHaW5TY2FuRW50 cnksIHNvLT5hbGxvY2VudHJpZXMpOwogCX0KIAlzby0+ZW50cmllc1tzby0+dG90YWxlbnRy aWVzKytdID0gc2NhbkVudHJ5OwogCkBAIC0xNzAsMTAgKzE2OSw4IEBAIGdpbkZpbGxTY2Fu S2V5KEdpblNjYW5PcGFxdWUgc28sIE9mZnNldE51bWJlciBhdHRudW0sCiAJa2V5LT5udXNl cmVudHJpZXMgPSBuUXVlcnlWYWx1ZXM7CiAKIAkvKiBBbGxvY2F0ZSBvbmUgZXh0cmEgYXJy YXkgc2xvdCBmb3IgcG9zc2libGUgImhpZGRlbiIgZW50cnkgKi8KLQlrZXktPnNjYW5FbnRy eSA9IChHaW5TY2FuRW50cnkgKikgcGFsbG9jKHNpemVvZihHaW5TY2FuRW50cnkpICoKLQkJ CQkJCQkJCQkJIChuUXVlcnlWYWx1ZXMgKyAxKSk7Ci0Ja2V5LT5lbnRyeVJlcyA9IChHaW5U ZXJuYXJ5VmFsdWUgKikgcGFsbG9jMChzaXplb2YoR2luVGVybmFyeVZhbHVlKSAqCi0JCQkJ CQkJCQkJCQkoblF1ZXJ5VmFsdWVzICsgMSkpOworCWtleS0+c2NhbkVudHJ5ID0gcGFsbG9j X2FycmF5KEdpblNjYW5FbnRyeSwgblF1ZXJ5VmFsdWVzICsgMSk7CisJa2V5LT5lbnRyeVJl cyA9IHBhbGxvYzBfYXJyYXkoR2luVGVybmFyeVZhbHVlLCBuUXVlcnlWYWx1ZXMgKyAxKTsK IAogCWtleS0+cXVlcnkgPSBxdWVyeTsKIAlrZXktPnF1ZXJ5VmFsdWVzID0gcXVlcnlWYWx1 ZXM7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbnV0aWwuYyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2ludXRpbC5jCmluZGV4IDc4ZjdiN2EyNDk1Li42MDVm ODBhYWQzOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW51dGlsLmMK KysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW51dGlsLmMKQEAgLTUwMCw5ICs1MDAs OSBAQCBnaW5FeHRyYWN0RW50cmllcyhHaW5TdGF0ZSAqZ2luc3RhdGUsIE9mZnNldE51bWJl ciBhdHRudW0sCiAJaWYgKGlzTnVsbCkKIAl7CiAJCSpuZW50cmllcyA9IDE7Ci0JCWVudHJp ZXMgPSAoRGF0dW0gKikgcGFsbG9jKHNpemVvZihEYXR1bSkpOworCQllbnRyaWVzID0gcGFs bG9jX29iamVjdChEYXR1bSk7CiAJCWVudHJpZXNbMF0gPSAoRGF0dW0pIDA7Ci0JCSpjYXRl Z29yaWVzID0gKEdpbk51bGxDYXRlZ29yeSAqKSBwYWxsb2Moc2l6ZW9mKEdpbk51bGxDYXRl Z29yeSkpOworCQkqY2F0ZWdvcmllcyA9IHBhbGxvY19vYmplY3QoR2luTnVsbENhdGVnb3J5 KTsKIAkJKCpjYXRlZ29yaWVzKVswXSA9IEdJTl9DQVRfTlVMTF9JVEVNOwogCQlyZXR1cm4g ZW50cmllczsKIAl9CkBAIC01MjIsOSArNTIyLDkgQEAgZ2luRXh0cmFjdEVudHJpZXMoR2lu U3RhdGUgKmdpbnN0YXRlLCBPZmZzZXROdW1iZXIgYXR0bnVtLAogCWlmIChlbnRyaWVzID09 IE5VTEwgfHwgKm5lbnRyaWVzIDw9IDApCiAJewogCQkqbmVudHJpZXMgPSAxOwotCQllbnRy aWVzID0gKERhdHVtICopIHBhbGxvYyhzaXplb2YoRGF0dW0pKTsKKwkJZW50cmllcyA9IHBh bGxvY19vYmplY3QoRGF0dW0pOwogCQllbnRyaWVzWzBdID0gKERhdHVtKSAwOwotCQkqY2F0 ZWdvcmllcyA9IChHaW5OdWxsQ2F0ZWdvcnkgKikgcGFsbG9jKHNpemVvZihHaW5OdWxsQ2F0 ZWdvcnkpKTsKKwkJKmNhdGVnb3JpZXMgPSBwYWxsb2Nfb2JqZWN0KEdpbk51bGxDYXRlZ29y eSk7CiAJCSgqY2F0ZWdvcmllcylbMF0gPSBHSU5fQ0FUX0VNUFRZX0lURU07CiAJCXJldHVy biBlbnRyaWVzOwogCX0KQEAgLTU0OCw3ICs1NDgsNyBAQCBnaW5FeHRyYWN0RW50cmllcyhH aW5TdGF0ZSAqZ2luc3RhdGUsIE9mZnNldE51bWJlciBhdHRudW0sCiAJCWtleUVudHJ5RGF0 YSAqa2V5ZGF0YTsKIAkJY21wRW50cmllc0FyZyBhcmc7CiAKLQkJa2V5ZGF0YSA9IChrZXlF bnRyeURhdGEgKikgcGFsbG9jKCpuZW50cmllcyAqIHNpemVvZihrZXlFbnRyeURhdGEpKTsK KwkJa2V5ZGF0YSA9IHBhbGxvY19hcnJheShrZXlFbnRyeURhdGEsICpuZW50cmllcyk7CiAJ CWZvciAoaSA9IDA7IGkgPCAqbmVudHJpZXM7IGkrKykKIAkJewogCQkJa2V5ZGF0YVtpXS5k YXR1bSA9IGVudHJpZXNbaV07CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lu L2dpbnZhY3V1bS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW52YWN1dW0uYwppbmRl eCAyMjM3ZWZhNTBiYi4uZDdiYWY3Yzg0N2MgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9naW4vZ2ludmFjdXVtLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW52 YWN1dW0uYwpAQCAtNjUsNyArNjUsNyBAQCBnaW5WYWN1dW1JdGVtUG9pbnRlcnMoR2luVmFj dXVtU3RhdGUgKmd2cywgSXRlbVBvaW50ZXJEYXRhICppdGVtcywKIAkJCQkgKiBGaXJzdCBU SUQgdG8gYmUgZGVsZXRlZDogYWxsb2NhdGUgbWVtb3J5IHRvIGhvbGQgdGhlCiAJCQkJICog cmVtYWluaW5nIGl0ZW1zLgogCQkJCSAqLwotCQkJCXRtcGl0ZW1zID0gcGFsbG9jKHNpemVv ZihJdGVtUG9pbnRlckRhdGEpICogbml0ZW0pOworCQkJCXRtcGl0ZW1zID0gcGFsbG9jX2Fy cmF5KEl0ZW1Qb2ludGVyRGF0YSwgbml0ZW0pOwogCQkJCW1lbWNweSh0bXBpdGVtcywgaXRl bXMsIHNpemVvZihJdGVtUG9pbnRlckRhdGEpICogaSk7CiAJCQl9CiAJCX0KQEAgLTI2MCw3 ICsyNjAsNyBAQCBnaW5TY2FuVG9EZWxldGUoR2luVmFjdXVtU3RhdGUgKmd2cywgQmxvY2tO dW1iZXIgYmxrbm8sIGJvb2wgaXNSb290LAogCXsKIAkJaWYgKCFwYXJlbnQtPmNoaWxkKQog CQl7Ci0JCQltZSA9IChEYXRhUGFnZURlbGV0ZVN0YWNrICopIHBhbGxvYzAoc2l6ZW9mKERh dGFQYWdlRGVsZXRlU3RhY2spKTsKKwkJCW1lID0gcGFsbG9jMF9vYmplY3QoRGF0YVBhZ2VE ZWxldGVTdGFjayk7CiAJCQltZS0+cGFyZW50ID0gcGFyZW50OwogCQkJcGFyZW50LT5jaGls ZCA9IG1lOwogCQkJbWUtPmxlZnRCdWZmZXIgPSBJbnZhbGlkQnVmZmVyOwpAQCAtNTg0LDcg KzU4NCw3IEBAIGdpbmJ1bGtkZWxldGUoSW5kZXhWYWN1dW1JbmZvICppbmZvLCBJbmRleEJ1 bGtEZWxldGVSZXN1bHQgKnN0YXRzLAogCWlmIChzdGF0cyA9PSBOVUxMKQogCXsKIAkJLyog WWVzLCBzbyBpbml0aWFsaXplIHN0YXRzIHRvIHplcm9lcyAqLwotCQlzdGF0cyA9IChJbmRl eEJ1bGtEZWxldGVSZXN1bHQgKikgcGFsbG9jMChzaXplb2YoSW5kZXhCdWxrRGVsZXRlUmVz dWx0KSk7CisJCXN0YXRzID0gcGFsbG9jMF9vYmplY3QoSW5kZXhCdWxrRGVsZXRlUmVzdWx0 KTsKIAogCQkvKgogCQkgKiBhbmQgY2xlYW51cCBhbnkgcGVuZGluZyBpbnNlcnRzCkBAIC03 MTQsNyArNzE0LDcgQEAgZ2ludmFjdXVtY2xlYW51cChJbmRleFZhY3V1bUluZm8gKmluZm8s IEluZGV4QnVsa0RlbGV0ZVJlc3VsdCAqc3RhdHMpCiAJICovCiAJaWYgKHN0YXRzID09IE5V TEwpCiAJewotCQlzdGF0cyA9IChJbmRleEJ1bGtEZWxldGVSZXN1bHQgKikgcGFsbG9jMChz aXplb2YoSW5kZXhCdWxrRGVsZXRlUmVzdWx0KSk7CisJCXN0YXRzID0gcGFsbG9jMF9vYmpl Y3QoSW5kZXhCdWxrRGVsZXRlUmVzdWx0KTsKIAkJaW5pdEdpblN0YXRlKCZnaW5zdGF0ZSwg aW5kZXgpOwogCQlnaW5JbnNlcnRDbGVhbnVwKCZnaW5zdGF0ZSwgIUFtQXV0b1ZhY3V1bVdv cmtlclByb2Nlc3MoKSwKIAkJCQkJCSBmYWxzZSwgdHJ1ZSwgc3RhdHMpOwpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNz L2dpc3QvZ2lzdC5jCmluZGV4IDNmYjFhMTI4NWM1Li5jMjZkODUzOGYwNSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdC5jCisrKyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9naXN0L2dpc3QuYwpAQCAtNDMsNyArNDMsNyBAQCBzdGF0aWMgdm9pZCBnaXN0cHJ1 bmVwYWdlKFJlbGF0aW9uIHJlbCwgUGFnZSBwYWdlLCBCdWZmZXIgYnVmZmVyLAogCiAKICNk ZWZpbmUgUk9UQVRFRElTVChkKSBkbyB7IFwKLQlTcGxpdFBhZ2VMYXlvdXQgKnRtcCA9IChT cGxpdFBhZ2VMYXlvdXQgKikgcGFsbG9jMChzaXplb2YoU3BsaXRQYWdlTGF5b3V0KSk7IFwK KwlTcGxpdFBhZ2VMYXlvdXQgKnRtcCA9IHBhbGxvYzBfb2JqZWN0KFNwbGl0UGFnZUxheW91 dCk7IFwKIAl0bXAtPmJsb2NrLmJsa25vID0gSW52YWxpZEJsb2NrTnVtYmVyOwlcCiAJdG1w LT5idWZmZXIgPSBJbnZhbGlkQnVmZmVyOwlcCiAJdG1wLT5uZXh0ID0gKGQpOyBcCkBAIC0z OTIsNyArMzkyLDcgQEAgZ2lzdHBsYWNldG9wYWdlKFJlbGF0aW9uIHJlbCwgU2l6ZSBmcmVl c3BhY2UsIEdJU1RTVEFURSAqZ2lzdHN0YXRlLAogCQkJLyogUHJlcGFyZSBhIHZlY3RvciBv ZiBhbGwgdGhlIGRvd25saW5rcyAqLwogCQkJZm9yIChwdHIgPSBkaXN0OyBwdHI7IHB0ciA9 IHB0ci0+bmV4dCkKIAkJCQluZG93bmxpbmtzKys7Ci0JCQlkb3dubGlua3MgPSBwYWxsb2Mo c2l6ZW9mKEluZGV4VHVwbGUpICogbmRvd25saW5rcyk7CisJCQlkb3dubGlua3MgPSBwYWxs b2NfYXJyYXkoSW5kZXhUdXBsZSwgbmRvd25saW5rcyk7CiAJCQlmb3IgKGkgPSAwLCBwdHIg PSBkaXN0OyBwdHI7IHB0ciA9IHB0ci0+bmV4dCkKIAkJCQlkb3dubGlua3NbaSsrXSA9IHB0 ci0+aXR1cDsKIApAQCAtNDEwLDcgKzQxMCw3IEBAIGdpc3RwbGFjZXRvcGFnZShSZWxhdGlv biByZWwsIFNpemUgZnJlZXNwYWNlLCBHSVNUU1RBVEUgKmdpc3RzdGF0ZSwKIAkJCS8qIFBy ZXBhcmUgc3BsaXQtaW5mbyB0byBiZSByZXR1cm5lZCB0byBjYWxsZXIgKi8KIAkJCWZvciAo cHRyID0gZGlzdDsgcHRyOyBwdHIgPSBwdHItPm5leHQpCiAJCQl7Ci0JCQkJR0lTVFBhZ2VT cGxpdEluZm8gKnNpID0gcGFsbG9jKHNpemVvZihHSVNUUGFnZVNwbGl0SW5mbykpOworCQkJ CUdJU1RQYWdlU3BsaXRJbmZvICpzaSA9IHBhbGxvY19vYmplY3QoR0lTVFBhZ2VTcGxpdElu Zm8pOwogCiAJCQkJc2ktPmJ1ZiA9IHB0ci0+YnVmZmVyOwogCQkJCXNpLT5kb3dubGluayA9 IHB0ci0+aXR1cDsKQEAgLTgyMyw3ICs4MjMsNyBAQCBnaXN0ZG9pbnNlcnQoUmVsYXRpb24g ciwgSW5kZXhUdXBsZSBpdHVwLCBTaXplIGZyZWVzcGFjZSwKIAkJCXhsb2NrZWQgPSBmYWxz ZTsKIAogCQkJLyogZGVzY2VuZCB0byB0aGUgY2hvc2VuIGNoaWxkICovCi0JCQlpdGVtID0g KEdJU1RJbnNlcnRTdGFjayAqKSBwYWxsb2MwKHNpemVvZihHSVNUSW5zZXJ0U3RhY2spKTsK KwkJCWl0ZW0gPSBwYWxsb2MwX29iamVjdChHSVNUSW5zZXJ0U3RhY2spOwogCQkJaXRlbS0+ Ymxrbm8gPSBjaGlsZGJsa25vOwogCQkJaXRlbS0+cGFyZW50ID0gc3RhY2s7CiAJCQlpdGVt LT5kb3dubGlua29mZm51bSA9IGRvd25saW5rb2ZmbnVtOwpAQCAtOTIzLDcgKzkyMyw3IEBA IGdpc3RGaW5kUGF0aChSZWxhdGlvbiByLCBCbG9ja051bWJlciBjaGlsZCwgT2Zmc2V0TnVt YmVyICpkb3dubGlua29mZm51bSkKIAkJCSAgICpwdHI7CiAJQmxvY2tOdW1iZXIgYmxrbm87 CiAKLQl0b3AgPSAoR0lTVEluc2VydFN0YWNrICopIHBhbGxvYzAoc2l6ZW9mKEdJU1RJbnNl cnRTdGFjaykpOworCXRvcCA9IHBhbGxvYzBfb2JqZWN0KEdJU1RJbnNlcnRTdGFjayk7CiAJ dG9wLT5ibGtubyA9IEdJU1RfUk9PVF9CTEtOTzsKIAl0b3AtPmRvd25saW5rb2ZmbnVtID0g SW52YWxpZE9mZnNldE51bWJlcjsKIApAQCAtOTc1LDcgKzk3NSw3IEBAIGdpc3RGaW5kUGF0 aChSZWxhdGlvbiByLCBCbG9ja051bWJlciBjaGlsZCwgT2Zmc2V0TnVtYmVyICpkb3dubGlu a29mZm51bSkKIAkJCSAqIGxlYWYgcGFnZXMsIGFuZCB3ZSBhc3N1bWUgdGhhdCB0aGVyZSBj YW4ndCBiZSBhbnkgbm9uLWxlYWYKIAkJCSAqIHBhZ2VzIGJlaGluZCBsZWFmIHBhZ2VzLgog CQkJICovCi0JCQlwdHIgPSAoR0lTVEluc2VydFN0YWNrICopIHBhbGxvYzAoc2l6ZW9mKEdJ U1RJbnNlcnRTdGFjaykpOworCQkJcHRyID0gcGFsbG9jMF9vYmplY3QoR0lTVEluc2VydFN0 YWNrKTsKIAkJCXB0ci0+Ymxrbm8gPSBHaXN0UGFnZUdldE9wYXF1ZShwYWdlKS0+cmlnaHRs aW5rOwogCQkJcHRyLT5kb3dubGlua29mZm51bSA9IEludmFsaWRPZmZzZXROdW1iZXI7CiAJ CQlwdHItPnBhcmVudCA9IHRvcC0+cGFyZW50OwpAQCAtMTAwMCw3ICsxMDAwLDcgQEAgZ2lz dEZpbmRQYXRoKFJlbGF0aW9uIHIsIEJsb2NrTnVtYmVyIGNoaWxkLCBPZmZzZXROdW1iZXIg KmRvd25saW5rb2ZmbnVtKQogCQkJZWxzZQogCQkJewogCQkJCS8qIEFwcGVuZCB0aGlzIGNo aWxkIHRvIHRoZSBsaXN0IG9mIHBhZ2VzIHRvIHZpc2l0IGxhdGVyICovCi0JCQkJcHRyID0g KEdJU1RJbnNlcnRTdGFjayAqKSBwYWxsb2MwKHNpemVvZihHSVNUSW5zZXJ0U3RhY2spKTsK KwkJCQlwdHIgPSBwYWxsb2MwX29iamVjdChHSVNUSW5zZXJ0U3RhY2spOwogCQkJCXB0ci0+ Ymxrbm8gPSBibGtubzsKIAkJCQlwdHItPmRvd25saW5rb2ZmbnVtID0gaTsKIAkJCQlwdHIt PnBhcmVudCA9IHRvcDsKQEAgLTEyMTgsNyArMTIxOCw3IEBAIGdpc3RmaXhzcGxpdChHSVNU SW5zZXJ0U3RhdGUgKnN0YXRlLCBHSVNUU1RBVEUgKmdpc3RzdGF0ZSkKIAkgKi8KIAlmb3Ig KDs7KQogCXsKLQkJR0lTVFBhZ2VTcGxpdEluZm8gKnNpID0gcGFsbG9jKHNpemVvZihHSVNU UGFnZVNwbGl0SW5mbykpOworCQlHSVNUUGFnZVNwbGl0SW5mbyAqc2kgPSBwYWxsb2Nfb2Jq ZWN0KEdJU1RQYWdlU3BsaXRJbmZvKTsKIAkJSW5kZXhUdXBsZQlkb3dubGluazsKIAogCQlw YWdlID0gQnVmZmVyR2V0UGFnZShidWYpOwpAQCAtMTQ4Miw4ICsxNDgyLDggQEAgZ2lzdFNw bGl0KFJlbGF0aW9uIHIsCiAJZ2lzdFNwbGl0QnlLZXkociwgcGFnZSwgaXR1cCwgbGVuLCBn aXN0c3RhdGUsICZ2LCAwKTsKIAogCS8qIGZvcm0gbGVmdCBhbmQgcmlnaHQgdmVjdG9yICov Ci0JbHZlY3R1cCA9IChJbmRleFR1cGxlICopIHBhbGxvYyhzaXplb2YoSW5kZXhUdXBsZSkg KiAobGVuICsgMSkpOwotCXJ2ZWN0dXAgPSAoSW5kZXhUdXBsZSAqKSBwYWxsb2Moc2l6ZW9m KEluZGV4VHVwbGUpICogKGxlbiArIDEpKTsKKwlsdmVjdHVwID0gcGFsbG9jX2FycmF5KElu ZGV4VHVwbGUsIGxlbiArIDEpOworCXJ2ZWN0dXAgPSBwYWxsb2NfYXJyYXkoSW5kZXhUdXBs ZSwgbGVuICsgMSk7CiAKIAlmb3IgKGkgPSAwOyBpIDwgdi5zcGxpdFZlY3Rvci5zcGxfbmxl ZnQ7IGkrKykKIAkJbHZlY3R1cFtpXSA9IGl0dXBbdi5zcGxpdFZlY3Rvci5zcGxfbGVmdFtp XSAtIDFdOwpAQCAtMTU1Miw3ICsxNTUyLDcgQEAgaW5pdEdJU1RzdGF0ZShSZWxhdGlvbiBp bmRleCkKIAlvbGRDeHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oc2NhbkN4dCk7CiAKIAkv KiBDcmVhdGUgYW5kIGZpbGwgaW4gdGhlIEdJU1RTVEFURSAqLwotCWdpc3RzdGF0ZSA9IChH SVNUU1RBVEUgKikgcGFsbG9jKHNpemVvZihHSVNUU1RBVEUpKTsKKwlnaXN0c3RhdGUgPSBw YWxsb2Nfb2JqZWN0KEdJU1RTVEFURSk7CiAKIAlnaXN0c3RhdGUtPnNjYW5DeHQgPSBzY2Fu Q3h0OwogCWdpc3RzdGF0ZS0+dGVtcEN4dCA9IHNjYW5DeHQ7CS8qIGNhbGxlciBtdXN0IGNo YW5nZSB0aGlzIGlmIG5lZWRlZCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNz L2dpc3QvZ2lzdGJ1aWxkLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0YnVpbGQu YwppbmRleCBiZTBmZDViNzUzZC4uYjlmYTE5NjE0OWQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9naXN0L2dpc3RidWlsZC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9n aXN0L2dpc3RidWlsZC5jCkBAIC0zNDYsNyArMzQ2LDcgQEAgZ2lzdGJ1aWxkKFJlbGF0aW9u IGhlYXAsIFJlbGF0aW9uIGluZGV4LCBJbmRleEluZm8gKmluZGV4SW5mbykKIAkvKgogCSAq IFJldHVybiBzdGF0aXN0aWNzCiAJICovCi0JcmVzdWx0ID0gKEluZGV4QnVpbGRSZXN1bHQg KikgcGFsbG9jKHNpemVvZihJbmRleEJ1aWxkUmVzdWx0KSk7CisJcmVzdWx0ID0gcGFsbG9j X29iamVjdChJbmRleEJ1aWxkUmVzdWx0KTsKIAogCXJlc3VsdC0+aGVhcF90dXBsZXMgPSBy ZWx0dXBsZXM7CiAJcmVzdWx0LT5pbmRleF90dXBsZXMgPSAoZG91YmxlKSBidWlsZHN0YXRl LmluZHR1cGxlczsKQEAgLTQwOSw3ICs0MDksNyBAQCBnaXN0X2luZGV4c29ydGJ1aWxkKEdJ U1RCdWlsZFN0YXRlICpzdGF0ZSkKIAlzdGF0ZS0+YnVsa3N0YXRlID0gc21ncl9idWxrX3N0 YXJ0X3JlbChzdGF0ZS0+aW5kZXhyZWwsIE1BSU5fRk9SS05VTSk7CiAKIAkvKiBBbGxvY2F0 ZSBhIHRlbXBvcmFyeSBidWZmZXIgZm9yIHRoZSBmaXJzdCBsZWFmIHBhZ2UgYmF0Y2guICov Ci0JbGV2ZWxzdGF0ZSA9IHBhbGxvYzAoc2l6ZW9mKEdpc3RTb3J0ZWRCdWlsZExldmVsU3Rh dGUpKTsKKwlsZXZlbHN0YXRlID0gcGFsbG9jMF9vYmplY3QoR2lzdFNvcnRlZEJ1aWxkTGV2 ZWxTdGF0ZSk7CiAJbGV2ZWxzdGF0ZS0+cGFnZXNbMF0gPSBwYWxsb2MoQkxDS1NaKTsKIAls ZXZlbHN0YXRlLT5wYXJlbnQgPSBOVUxMOwogCWdpc3Rpbml0cGFnZShsZXZlbHN0YXRlLT5w YWdlc1swXSwgRl9MRUFGKTsKQEAgLTUyNiw3ICs1MjYsNyBAQCBnaXN0X2luZGV4c29ydGJ1 aWxkX2xldmVsc3RhdGVfZmx1c2goR0lTVEJ1aWxkU3RhdGUgKnN0YXRlLAogCWVsc2UKIAl7 CiAJCS8qIENyZWF0ZSBzcGxpdCBsYXlvdXQgZnJvbSBzaW5nbGUgcGFnZSAqLwotCQlkaXN0 ID0gKFNwbGl0UGFnZUxheW91dCAqKSBwYWxsb2MwKHNpemVvZihTcGxpdFBhZ2VMYXlvdXQp KTsKKwkJZGlzdCA9IHBhbGxvYzBfb2JqZWN0KFNwbGl0UGFnZUxheW91dCk7CiAJCXVuaW9u X3R1cGxlID0gZ2lzdHVuaW9uKHN0YXRlLT5pbmRleHJlbCwgaXR2ZWMsIHZlY3RfbGVuLAog CQkJCQkJCQlzdGF0ZS0+Z2lzdHN0YXRlKTsKIAkJZGlzdC0+aXR1cCA9IHVuaW9uX3R1cGxl OwpAQCAtNTk3LDcgKzU5Nyw3IEBAIGdpc3RfaW5kZXhzb3J0YnVpbGRfbGV2ZWxzdGF0ZV9m bHVzaChHSVNUQnVpbGRTdGF0ZSAqc3RhdGUsCiAJCXBhcmVudCA9IGxldmVsc3RhdGUtPnBh cmVudDsKIAkJaWYgKHBhcmVudCA9PSBOVUxMKQogCQl7Ci0JCQlwYXJlbnQgPSBwYWxsb2Mw KHNpemVvZihHaXN0U29ydGVkQnVpbGRMZXZlbFN0YXRlKSk7CisJCQlwYXJlbnQgPSBwYWxs b2MwX29iamVjdChHaXN0U29ydGVkQnVpbGRMZXZlbFN0YXRlKTsKIAkJCXBhcmVudC0+cGFn ZXNbMF0gPSBwYWxsb2MoQkxDS1NaKTsKIAkJCXBhcmVudC0+cGFyZW50ID0gTlVMTDsKIAkJ CWdpc3Rpbml0cGFnZShwYXJlbnQtPnBhZ2VzWzBdLCAwKTsKQEAgLTExNTQsNyArMTE1NCw3 IEBAIGdpc3RidWZmZXJpbmdpbnNlcnR0dXBsZXMoR0lTVEJ1aWxkU3RhdGUgKmJ1aWxkc3Rh dGUsIEJ1ZmZlciBidWZmZXIsIGludCBsZXZlbCwKIAogCQkvKiBDcmVhdGUgYW4gYXJyYXkg b2YgYWxsIHRoZSBkb3dubGluayB0dXBsZXMgKi8KIAkJbmRvd25saW5rcyA9IGxpc3RfbGVu Z3RoKHNwbGl0aW5mbyk7Ci0JCWRvd25saW5rcyA9IChJbmRleFR1cGxlICopIHBhbGxvYyhz aXplb2YoSW5kZXhUdXBsZSkgKiBuZG93bmxpbmtzKTsKKwkJZG93bmxpbmtzID0gcGFsbG9j X2FycmF5KEluZGV4VHVwbGUsIG5kb3dubGlua3MpOwogCQlpID0gMDsKIAkJZm9yZWFjaChs Yywgc3BsaXRpbmZvKQogCQl7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lz dC9naXN0YnVpbGRidWZmZXJzLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0YnVp bGRidWZmZXJzLmMKaW5kZXggMDcwNzI1NGQxOGUuLmQ0OWI5MjA3NjBhIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0YnVpbGRidWZmZXJzLmMKKysrIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdGJ1aWxkYnVmZmVycy5jCkBAIC00Niw3ICs0Niw3 IEBAIGdpc3RJbml0QnVpbGRCdWZmZXJzKGludCBwYWdlc1BlckJ1ZmZlciwgaW50IGxldmVs U3RlcCwgaW50IG1heExldmVsKQogCUdJU1RCdWlsZEJ1ZmZlcnMgKmdmYmI7CiAJSEFTSENU TAkJaGFzaEN0bDsKIAotCWdmYmIgPSBwYWxsb2Moc2l6ZW9mKEdJU1RCdWlsZEJ1ZmZlcnMp KTsKKwlnZmJiID0gcGFsbG9jX29iamVjdChHSVNUQnVpbGRCdWZmZXJzKTsKIAlnZmJiLT5w YWdlc1BlckJ1ZmZlciA9IHBhZ2VzUGVyQnVmZmVyOwogCWdmYmItPmxldmVsU3RlcCA9IGxl dmVsU3RlcDsKIApAQCAtNjAsNyArNjAsNyBAQCBnaXN0SW5pdEJ1aWxkQnVmZmVycyhpbnQg cGFnZXNQZXJCdWZmZXIsIGludCBsZXZlbFN0ZXAsIGludCBtYXhMZXZlbCkKIAkvKiBJbml0 aWFsaXplIGZyZWUgcGFnZSBtYW5hZ2VtZW50LiAqLwogCWdmYmItPm5GcmVlQmxvY2tzID0g MDsKIAlnZmJiLT5mcmVlQmxvY2tzTGVuID0gMzI7Ci0JZ2ZiYi0+ZnJlZUJsb2NrcyA9IChs b25nICopIHBhbGxvYyhnZmJiLT5mcmVlQmxvY2tzTGVuICogc2l6ZW9mKGxvbmcpKTsKKwln ZmJiLT5mcmVlQmxvY2tzID0gcGFsbG9jX2FycmF5KGxvbmcsIGdmYmItPmZyZWVCbG9ja3NM ZW4pOwogCiAJLyoKIAkgKiBDdXJyZW50IG1lbW9yeSBjb250ZXh0IHdpbGwgYmUgdXNlZCBm b3IgYWxsIGluLW1lbW9yeSBkYXRhIHN0cnVjdHVyZXMKQEAgLTg3LDggKzg3LDcgQEAgZ2lz dEluaXRCdWlsZEJ1ZmZlcnMoaW50IHBhZ2VzUGVyQnVmZmVyLCBpbnQgbGV2ZWxTdGVwLCBp bnQgbWF4TGV2ZWwpCiAJICogYnVmZmVycyBhcmUgaW5zZXJ0ZWQgaGVyZSB3aGVuIHRoZXkg YXJlIGNyZWF0ZWQuCiAJICovCiAJZ2ZiYi0+YnVmZmVyc09uTGV2ZWxzTGVuID0gMTsKLQln ZmJiLT5idWZmZXJzT25MZXZlbHMgPSAoTGlzdCAqKikgcGFsbG9jKHNpemVvZihMaXN0ICop ICoKLQkJCQkJCQkJCQkJIGdmYmItPmJ1ZmZlcnNPbkxldmVsc0xlbik7CisJZ2ZiYi0+YnVm ZmVyc09uTGV2ZWxzID0gKExpc3QgKiopIHBhbGxvY19hcnJheShMaXN0ICosIGdmYmItPmJ1 ZmZlcnNPbkxldmVsc0xlbik7CiAJZ2ZiYi0+YnVmZmVyc09uTGV2ZWxzWzBdID0gTklMOwog CiAJLyoKQEAgLTk2LDggKzk1LDcgQEAgZ2lzdEluaXRCdWlsZEJ1ZmZlcnMoaW50IHBhZ2Vz UGVyQnVmZmVyLCBpbnQgbGV2ZWxTdGVwLCBpbnQgbWF4TGV2ZWwpCiAJICogaW50byBtYWlu IG1lbW9yeS4KIAkgKi8KIAlnZmJiLT5sb2FkZWRCdWZmZXJzTGVuID0gMzI7Ci0JZ2ZiYi0+ bG9hZGVkQnVmZmVycyA9IChHSVNUTm9kZUJ1ZmZlciAqKikgcGFsbG9jKGdmYmItPmxvYWRl ZEJ1ZmZlcnNMZW4gKgotCQkJCQkJCQkJCQkJCSBzaXplb2YoR0lTVE5vZGVCdWZmZXIgKikp OworCWdmYmItPmxvYWRlZEJ1ZmZlcnMgPSAoR0lTVE5vZGVCdWZmZXIgKiopIHBhbGxvY19h cnJheShHSVNUTm9kZUJ1ZmZlciAqLCBnZmJiLT5sb2FkZWRCdWZmZXJzTGVuKTsKIAlnZmJi LT5sb2FkZWRCdWZmZXJzQ291bnQgPSAwOwogCiAJZ2ZiYi0+cm9vdGxldmVsID0gbWF4TGV2 ZWw7CkBAIC01ODIsOSArNTgwLDcgQEAgZ2lzdFJlbG9jYXRlQnVpbGRCdWZmZXJzT25TcGxp dChHSVNUQnVpbGRCdWZmZXJzICpnZmJiLCBHSVNUU1RBVEUgKmdpc3RzdGF0ZSwKIAkgKiBB bGxvY2F0ZSBtZW1vcnkgZm9yIGluZm9ybWF0aW9uIGFib3V0IHJlbG9jYXRpb24gYnVmZmVy cy4KIAkgKi8KIAlzcGxpdFBhZ2VzQ291bnQgPSBsaXN0X2xlbmd0aChzcGxpdGluZm8pOwot CXJlbG9jYXRpb25CdWZmZXJzSW5mb3MgPQotCQkoUmVsb2NhdGlvbkJ1ZmZlckluZm8gKikg cGFsbG9jKHNpemVvZihSZWxvY2F0aW9uQnVmZmVySW5mbykgKgotCQkJCQkJCQkJCXNwbGl0 UGFnZXNDb3VudCk7CisJcmVsb2NhdGlvbkJ1ZmZlcnNJbmZvcyA9IHBhbGxvY19hcnJheShS ZWxvY2F0aW9uQnVmZmVySW5mbywgc3BsaXRQYWdlc0NvdW50KTsKIAogCS8qCiAJICogRmls bCByZWxvY2F0aW9uIGJ1ZmZlcnMgaW5mb3JtYXRpb24gZm9yIG5vZGUgYnVmZmVycyBvZiBw YWdlcyBwcm9kdWNlZApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lz dHByb2MuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3Rwcm9jLmMKaW5kZXggZjJl YzZjYmUyZTUuLjlhYzA2NTA0YmUxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mv Z2lzdC9naXN0cHJvYy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3Rwcm9j LmMKQEAgLTE3MSw3ICsxNzEsNyBAQCBnaXN0X2JveF91bmlvbihQR19GVU5DVElPTl9BUkdT KQogCQkJICAgKnBhZ2V1bmlvbjsKIAogCW51bXJhbmdlcyA9IGVudHJ5dmVjLT5uOwotCXBh Z2V1bmlvbiA9IChCT1ggKikgcGFsbG9jKHNpemVvZihCT1gpKTsKKwlwYWdldW5pb24gPSBw YWxsb2Nfb2JqZWN0KEJPWCk7CiAJY3VyID0gRGF0dW1HZXRCb3hQKGVudHJ5dmVjLT52ZWN0 b3JbMF0ua2V5KTsKIAltZW1jcHkocGFnZXVuaW9uLCBjdXIsIHNpemVvZihCT1gpKTsKIApA QCAtMjM3LDcgKzIzNyw3IEBAIGZhbGxiYWNrU3BsaXQoR2lzdEVudHJ5VmVjdG9yICplbnRy eXZlYywgR0lTVF9TUExJVFZFQyAqdikKIAkJCXYtPnNwbF9sZWZ0W3YtPnNwbF9ubGVmdF0g PSBpOwogCQkJaWYgKHVuaW9uTCA9PSBOVUxMKQogCQkJewotCQkJCXVuaW9uTCA9IChCT1gg KikgcGFsbG9jKHNpemVvZihCT1gpKTsKKwkJCQl1bmlvbkwgPSBwYWxsb2Nfb2JqZWN0KEJP WCk7CiAJCQkJKnVuaW9uTCA9ICpjdXI7CiAJCQl9CiAJCQllbHNlCkBAIC0yNTAsNyArMjUw LDcgQEAgZmFsbGJhY2tTcGxpdChHaXN0RW50cnlWZWN0b3IgKmVudHJ5dmVjLCBHSVNUX1NQ TElUVkVDICp2KQogCQkJdi0+c3BsX3JpZ2h0W3YtPnNwbF9ucmlnaHRdID0gaTsKIAkJCWlm ICh1bmlvblIgPT0gTlVMTCkKIAkJCXsKLQkJCQl1bmlvblIgPSAoQk9YICopIHBhbGxvYyhz aXplb2YoQk9YKSk7CisJCQkJdW5pb25SID0gcGFsbG9jX29iamVjdChCT1gpOwogCQkJCSp1 bmlvblIgPSAqY3VyOwogCQkJfQogCQkJZWxzZQpAQCAtNjk4LDggKzY5OCw4IEBAIGdpc3Rf Ym94X3BpY2tzcGxpdChQR19GVU5DVElPTl9BUkdTKQogCXYtPnNwbF9ucmlnaHQgPSAwOwog CiAJLyogQWxsb2NhdGUgYm91bmRpbmcgYm94ZXMgb2YgbGVmdCBhbmQgcmlnaHQgZ3JvdXBz ICovCi0JbGVmdEJveCA9IHBhbGxvYzAoc2l6ZW9mKEJPWCkpOwotCXJpZ2h0Qm94ID0gcGFs bG9jMChzaXplb2YoQk9YKSk7CisJbGVmdEJveCA9IHBhbGxvYzBfb2JqZWN0KEJPWCk7CisJ cmlnaHRCb3ggPSBwYWxsb2MwX29iamVjdChCT1gpOwogCiAJLyoKIAkgKiBBbGxvY2F0ZSBh biBhcnJheSBmb3IgImNvbW1vbiBlbnRyaWVzIiAtIGVudHJpZXMgd2hpY2ggY2FuIGJlIHBs YWNlZCB0bwpAQCAtMTA0MiwxMCArMTA0MiwxMCBAQCBnaXN0X3BvbHlfY29tcHJlc3MoUEdf RlVOQ1RJT05fQVJHUykKIAkJUE9MWUdPTiAgICAqaW4gPSBEYXR1bUdldFBvbHlnb25QKGVu dHJ5LT5rZXkpOwogCQlCT1gJCSAgICpyOwogCi0JCXIgPSAoQk9YICopIHBhbGxvYyhzaXpl b2YoQk9YKSk7CisJCXIgPSBwYWxsb2Nfb2JqZWN0KEJPWCk7CiAJCW1lbWNweShyLCAmKGlu LT5ib3VuZGJveCksIHNpemVvZihCT1gpKTsKIAotCQlyZXR2YWwgPSAoR0lTVEVOVFJZICop IHBhbGxvYyhzaXplb2YoR0lTVEVOVFJZKSk7CisJCXJldHZhbCA9IHBhbGxvY19vYmplY3Qo R0lTVEVOVFJZKTsKIAkJZ2lzdGVudHJ5aW5pdCgqcmV0dmFsLCBQb2ludGVyR2V0RGF0dW0o ciksCiAJCQkJCSAgZW50cnktPnJlbCwgZW50cnktPnBhZ2UsCiAJCQkJCSAgZW50cnktPm9m ZnNldCwgZmFsc2UpOwpAQCAtMTEwNywxMyArMTEwNywxMyBAQCBnaXN0X2NpcmNsZV9jb21w cmVzcyhQR19GVU5DVElPTl9BUkdTKQogCQlDSVJDTEUJICAgKmluID0gRGF0dW1HZXRDaXJj bGVQKGVudHJ5LT5rZXkpOwogCQlCT1gJCSAgICpyOwogCi0JCXIgPSAoQk9YICopIHBhbGxv YyhzaXplb2YoQk9YKSk7CisJCXIgPSBwYWxsb2Nfb2JqZWN0KEJPWCk7CiAJCXItPmhpZ2gu eCA9IGZsb2F0OF9wbChpbi0+Y2VudGVyLngsIGluLT5yYWRpdXMpOwogCQlyLT5sb3cueCA9 IGZsb2F0OF9taShpbi0+Y2VudGVyLngsIGluLT5yYWRpdXMpOwogCQlyLT5oaWdoLnkgPSBm bG9hdDhfcGwoaW4tPmNlbnRlci55LCBpbi0+cmFkaXVzKTsKIAkJci0+bG93LnkgPSBmbG9h dDhfbWkoaW4tPmNlbnRlci55LCBpbi0+cmFkaXVzKTsKIAotCQlyZXR2YWwgPSAoR0lTVEVO VFJZICopIHBhbGxvYyhzaXplb2YoR0lTVEVOVFJZKSk7CisJCXJldHZhbCA9IHBhbGxvY19v YmplY3QoR0lTVEVOVFJZKTsKIAkJZ2lzdGVudHJ5aW5pdCgqcmV0dmFsLCBQb2ludGVyR2V0 RGF0dW0ociksCiAJCQkJCSAgZW50cnktPnJlbCwgZW50cnktPnBhZ2UsCiAJCQkJCSAgZW50 cnktPm9mZnNldCwgZmFsc2UpOwpAQCAtMTE3MSw5ICsxMTcxLDkgQEAgZ2lzdF9wb2ludF9j b21wcmVzcyhQR19GVU5DVElPTl9BUkdTKQogCiAJaWYgKGVudHJ5LT5sZWFma2V5KQkJCS8q IFBvaW50LCBhY3R1YWxseSAqLwogCXsKLQkJQk9YCQkgICAqYm94ID0gcGFsbG9jKHNpemVv ZihCT1gpKTsKKwkJQk9YCQkgICAqYm94ID0gcGFsbG9jX29iamVjdChCT1gpOwogCQlQb2lu dAkgICAqcG9pbnQgPSBEYXR1bUdldFBvaW50UChlbnRyeS0+a2V5KTsKLQkJR0lTVEVOVFJZ ICAqcmV0dmFsID0gcGFsbG9jKHNpemVvZihHSVNURU5UUlkpKTsKKwkJR0lTVEVOVFJZICAq cmV0dmFsID0gcGFsbG9jX29iamVjdChHSVNURU5UUlkpOwogCiAJCWJveC0+aGlnaCA9IGJv eC0+bG93ID0gKnBvaW50OwogCkBAIC0xMjAwLDkgKzEyMDAsOSBAQCBnaXN0X3BvaW50X2Zl dGNoKFBHX0ZVTkNUSU9OX0FSR1MpCiAJUG9pbnQJICAgKnI7CiAJR0lTVEVOVFJZICAqcmV0 dmFsOwogCi0JcmV0dmFsID0gcGFsbG9jKHNpemVvZihHSVNURU5UUlkpKTsKKwlyZXR2YWwg PSBwYWxsb2Nfb2JqZWN0KEdJU1RFTlRSWSk7CiAKLQlyID0gKFBvaW50ICopIHBhbGxvYyhz aXplb2YoUG9pbnQpKTsKKwlyID0gcGFsbG9jX29iamVjdChQb2ludCk7CiAJci0+eCA9IGlu LT5oaWdoLng7CiAJci0+eSA9IGluLT5oaWdoLnk7CiAJZ2lzdGVudHJ5aW5pdCgqcmV0dmFs LCBQb2ludGVyR2V0RGF0dW0ociksCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mv Z2lzdC9naXN0c2Nhbi5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHNjYW4uYwpp bmRleCA3MDBmYTk1OWQwMy4uMDFiOGZmMGI2ZmEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9naXN0L2dpc3RzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3Qv Z2lzdHNjYW4uYwpAQCAtOTAsNyArOTAsNyBAQCBnaXN0YmVnaW5zY2FuKFJlbGF0aW9uIHIs IGludCBua2V5cywgaW50IG5vcmRlcmJ5cykKIAlvbGRDeHQgPSBNZW1vcnlDb250ZXh0U3dp dGNoVG8oZ2lzdHN0YXRlLT5zY2FuQ3h0KTsKIAogCS8qIGluaXRpYWxpemUgb3BhcXVlIGRh dGEgKi8KLQlzbyA9IChHSVNUU2Nhbk9wYXF1ZSkgcGFsbG9jMChzaXplb2YoR0lTVFNjYW5P cGFxdWVEYXRhKSk7CisJc28gPSBwYWxsb2MwX29iamVjdChHSVNUU2Nhbk9wYXF1ZURhdGEp OwogCXNvLT5naXN0c3RhdGUgPSBnaXN0c3RhdGU7CiAJZ2lzdHN0YXRlLT50ZW1wQ3h0ID0g Y3JlYXRlVGVtcEdpc3RDb250ZXh0KCk7CiAJc28tPnF1ZXVlID0gTlVMTDsKQEAgLTEwMSw4 ICsxMDEsOCBAQCBnaXN0YmVnaW5zY2FuKFJlbGF0aW9uIHIsIGludCBua2V5cywgaW50IG5v cmRlcmJ5cykKIAlzby0+cXVhbF9vayA9IHRydWU7CQkJLyogaW4gY2FzZSB0aGVyZSBhcmUg emVybyBrZXlzICovCiAJaWYgKHNjYW4tPm51bWJlck9mT3JkZXJCeXMgPiAwKQogCXsKLQkJ c2Nhbi0+eHNfb3JkZXJieXZhbHMgPSBwYWxsb2MwKHNpemVvZihEYXR1bSkgKiBzY2FuLT5u dW1iZXJPZk9yZGVyQnlzKTsKLQkJc2Nhbi0+eHNfb3JkZXJieW51bGxzID0gcGFsbG9jKHNp emVvZihib29sKSAqIHNjYW4tPm51bWJlck9mT3JkZXJCeXMpOworCQlzY2FuLT54c19vcmRl cmJ5dmFscyA9IHBhbGxvYzBfYXJyYXkoRGF0dW0sIHNjYW4tPm51bWJlck9mT3JkZXJCeXMp OworCQlzY2FuLT54c19vcmRlcmJ5bnVsbHMgPSBwYWxsb2NfYXJyYXkoYm9vbCwgc2Nhbi0+ bnVtYmVyT2ZPcmRlckJ5cyk7CiAJCW1lbXNldChzY2FuLT54c19vcmRlcmJ5bnVsbHMsIHRy dWUsIHNpemVvZihib29sKSAqIHNjYW4tPm51bWJlck9mT3JkZXJCeXMpOwogCX0KIApkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHNwbGl0LmMgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvZ2lzdC9naXN0c3BsaXQuYwppbmRleCA0OTgzOGNlYjA3Yi4uNWIzYzY3 ZGJmM2EgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3RzcGxpdC5j CisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3RzcGxpdC5jCkBAIC01MSw3ICs1 MSw3IEBAIGdpc3R1bmlvbnN1YmtleXZlYyhHSVNUU1RBVEUgKmdpc3RzdGF0ZSwgSW5kZXhU dXBsZSAqaXR2ZWMsCiAJaW50CQkJaSwKIAkJCQljbGVhbmVkTGVuID0gMDsKIAotCWNsZWFu ZWRJdFZlYyA9IChJbmRleFR1cGxlICopIHBhbGxvYyhzaXplb2YoSW5kZXhUdXBsZSkgKiBn c3ZwLT5sZW4pOworCWNsZWFuZWRJdFZlYyA9IHBhbGxvY19hcnJheShJbmRleFR1cGxlLCBn c3ZwLT5sZW4pOwogCiAJZm9yIChpID0gMDsgaSA8IGdzdnAtPmxlbjsgaSsrKQogCXsKQEAg LTUwMSw3ICs1MDEsNyBAQCBnaXN0VXNlclBpY2tzcGxpdChSZWxhdGlvbiByLCBHaXN0RW50 cnlWZWN0b3IgKmVudHJ5dmVjLCBpbnQgYXR0bm8sIEdpc3RTcGxpdFZlYwogCQkgKiBMb2Nh dGUgZG9uJ3QtY2FyZSB0dXBsZXMsIGlmIGFueS4gIElmIHRoZXJlIGFyZSBub25lLCB0aGUg c3BsaXQgaXMKIAkJICogb3B0aW1hbCwgc28ganVzdCBmYWxsIG91dCBhbmQgcmV0dXJuIGZh bHNlLgogCQkgKi8KLQkJdi0+c3BsX2RvbnRjYXJlID0gKGJvb2wgKikgcGFsbG9jMChzaXpl b2YoYm9vbCkgKiAoZW50cnl2ZWMtPm4gKyAxKSk7CisJCXYtPnNwbF9kb250Y2FyZSA9IHBh bGxvYzBfYXJyYXkoYm9vbCwgZW50cnl2ZWMtPm4gKyAxKTsKIAogCQlOdW1Eb250Q2FyZSA9 IGZpbmREb250Q2FyZXMociwgZ2lzdHN0YXRlLCBlbnRyeXZlYy0+dmVjdG9yLCB2LCBhdHRu byk7CiAKQEAgLTczOCw5ICs3MzgsOSBAQCBnaXN0U3BsaXRCeUtleShSZWxhdGlvbiByLCBQ YWdlIHBhZ2UsIEluZGV4VHVwbGUgKml0dXAsIGludCBsZW4sCiAJCQkJICogY2FsbCB3aWxs IG92ZXJ3cml0ZSB0aGF0IHdpdGggaXRzIG93biByZXN1bHQuCiAJCQkJICovCiAJCQkJYmFj a3VwU3BsaXQgPSB2LT5zcGxpdFZlY3RvcjsKLQkJCQliYWNrdXBTcGxpdC5zcGxfbGVmdCA9 IChPZmZzZXROdW1iZXIgKikgcGFsbG9jKHNpemVvZihPZmZzZXROdW1iZXIpICogbGVuKTsK KwkJCQliYWNrdXBTcGxpdC5zcGxfbGVmdCA9IHBhbGxvY19hcnJheShPZmZzZXROdW1iZXIs IGxlbik7CiAJCQkJbWVtY3B5KGJhY2t1cFNwbGl0LnNwbF9sZWZ0LCB2LT5zcGxpdFZlY3Rv ci5zcGxfbGVmdCwgc2l6ZW9mKE9mZnNldE51bWJlcikgKiB2LT5zcGxpdFZlY3Rvci5zcGxf bmxlZnQpOwotCQkJCWJhY2t1cFNwbGl0LnNwbF9yaWdodCA9IChPZmZzZXROdW1iZXIgKikg cGFsbG9jKHNpemVvZihPZmZzZXROdW1iZXIpICogbGVuKTsKKwkJCQliYWNrdXBTcGxpdC5z cGxfcmlnaHQgPSBwYWxsb2NfYXJyYXkoT2Zmc2V0TnVtYmVyLCBsZW4pOwkKIAkJCQltZW1j cHkoYmFja3VwU3BsaXQuc3BsX3JpZ2h0LCB2LT5zcGxpdFZlY3Rvci5zcGxfcmlnaHQsIHNp emVvZihPZmZzZXROdW1iZXIpICogdi0+c3BsaXRWZWN0b3Iuc3BsX25yaWdodCk7CiAKIAkJ CQkvKiBSZWN1cnNpdmVseSBkZWNpZGUgaG93IHRvIHNwbGl0IHRoZSBkb24ndC1jYXJlIHR1 cGxlcyAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHV0aWwu YyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R1dGlsLmMKaW5kZXggNzUyNzI4Mjc4 MzcuLmEzNDZhODVhZGNiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9n aXN0dXRpbC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R1dGlsLmMKQEAg LTEwMCw3ICsxMDAsNyBAQCBnaXN0ZXh0cmFjdHBhZ2UoUGFnZSBwYWdlLCBpbnQgKmxlbiAv KiBvdXQgKi8gKQogCiAJbWF4b2ZmID0gUGFnZUdldE1heE9mZnNldE51bWJlcihwYWdlKTsK IAkqbGVuID0gbWF4b2ZmOwotCWl0dmVjID0gcGFsbG9jKHNpemVvZihJbmRleFR1cGxlKSAq IG1heG9mZik7CisJaXR2ZWMgPSBwYWxsb2NfYXJyYXkoSW5kZXhUdXBsZSwgbWF4b2ZmKTsK IAlmb3IgKGkgPSBGaXJzdE9mZnNldE51bWJlcjsgaSA8PSBtYXhvZmY7IGkgPSBPZmZzZXRO dW1iZXJOZXh0KGkpKQogCQlpdHZlY1tpIC0gRmlyc3RPZmZzZXROdW1iZXJdID0gKEluZGV4 VHVwbGUpIFBhZ2VHZXRJdGVtKHBhZ2UsIFBhZ2VHZXRJdGVtSWQocGFnZSwgaSkpOwogCkBA IC0xMTMsNyArMTEzLDcgQEAgZ2lzdGV4dHJhY3RwYWdlKFBhZ2UgcGFnZSwgaW50ICpsZW4g Lyogb3V0ICovICkKIEluZGV4VHVwbGUgKgogZ2lzdGpvaW52ZWN0b3IoSW5kZXhUdXBsZSAq aXR2ZWMsIGludCAqbGVuLCBJbmRleFR1cGxlICphZGRpdHZlYywgaW50IGFkZGxlbikKIHsK LQlpdHZlYyA9IChJbmRleFR1cGxlICopIHJlcGFsbG9jKGl0dmVjLCBzaXplb2YoSW5kZXhU dXBsZSkgKiAoKCpsZW4pICsgYWRkbGVuKSk7CisJaXR2ZWMgPSByZXBhbGxvY19hcnJheShp dHZlYywgSW5kZXhUdXBsZSwgKCpsZW4pICsgYWRkbGVuKTsKIAltZW1tb3ZlKCZpdHZlY1sq bGVuXSwgYWRkaXR2ZWMsIHNpemVvZihJbmRleFR1cGxlKSAqIGFkZGxlbik7CiAJKmxlbiAr PSBhZGRsZW47CiAJcmV0dXJuIGl0dmVjOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNj ZXNzL2dpc3QvZ2lzdHZhY3V1bS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHZh Y3V1bS5jCmluZGV4IGI5MjVlZGEyYjliLi43NTkxYWQ0ZGExYSAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHZhY3V1bS5jCisrKyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9naXN0L2dpc3R2YWN1dW0uYwpAQCAtNjEsNyArNjEsNyBAQCBnaXN0YnVsa2RlbGV0 ZShJbmRleFZhY3V1bUluZm8gKmluZm8sIEluZGV4QnVsa0RlbGV0ZVJlc3VsdCAqc3RhdHMs CiB7CiAJLyogYWxsb2NhdGUgc3RhdHMgaWYgZmlyc3QgdGltZSB0aHJvdWdoLCBlbHNlIHJl LXVzZSBleGlzdGluZyBzdHJ1Y3QgKi8KIAlpZiAoc3RhdHMgPT0gTlVMTCkKLQkJc3RhdHMg PSAoSW5kZXhCdWxrRGVsZXRlUmVzdWx0ICopIHBhbGxvYzAoc2l6ZW9mKEluZGV4QnVsa0Rl bGV0ZVJlc3VsdCkpOworCQlzdGF0cyA9IHBhbGxvYzBfb2JqZWN0KEluZGV4QnVsa0RlbGV0 ZVJlc3VsdCk7CiAKIAlnaXN0dmFjdXVtc2NhbihpbmZvLCBzdGF0cywgY2FsbGJhY2ssIGNh bGxiYWNrX3N0YXRlKTsKIApAQCAtODUsNyArODUsNyBAQCBnaXN0dmFjdXVtY2xlYW51cChJ bmRleFZhY3V1bUluZm8gKmluZm8sIEluZGV4QnVsa0RlbGV0ZVJlc3VsdCAqc3RhdHMpCiAJ ICovCiAJaWYgKHN0YXRzID09IE5VTEwpCiAJewotCQlzdGF0cyA9IChJbmRleEJ1bGtEZWxl dGVSZXN1bHQgKikgcGFsbG9jMChzaXplb2YoSW5kZXhCdWxrRGVsZXRlUmVzdWx0KSk7CisJ CXN0YXRzID0gcGFsbG9jMF9vYmplY3QoSW5kZXhCdWxrRGVsZXRlUmVzdWx0KTsKIAkJZ2lz dHZhY3V1bXNjYW4oaW5mbywgc3RhdHMsIE5VTEwsIE5VTEwpOwogCX0KIApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNz L2hhc2gvaGFzaC5jCmluZGV4IDUzMDYxYzgxOWZiLi5lMzg4MjUyYWZkYyAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaC5jCisrKyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oYXNoL2hhc2guYwpAQCAtMTkzLDcgKzE5Myw3IEBAIGhhc2hidWlsZChSZWxhdGlv biBoZWFwLCBSZWxhdGlvbiBpbmRleCwgSW5kZXhJbmZvICppbmRleEluZm8pCiAJLyoKIAkg KiBSZXR1cm4gc3RhdGlzdGljcwogCSAqLwotCXJlc3VsdCA9IChJbmRleEJ1aWxkUmVzdWx0 ICopIHBhbGxvYyhzaXplb2YoSW5kZXhCdWlsZFJlc3VsdCkpOworCXJlc3VsdCA9IHBhbGxv Y19vYmplY3QoSW5kZXhCdWlsZFJlc3VsdCk7CiAKIAlyZXN1bHQtPmhlYXBfdHVwbGVzID0g cmVsdHVwbGVzOwogCXJlc3VsdC0+aW5kZXhfdHVwbGVzID0gYnVpbGRzdGF0ZS5pbmR0dXBs ZXM7CkBAIC0zMTgsOCArMzE4LDcgQEAgaGFzaGdldHR1cGxlKEluZGV4U2NhbkRlc2Mgc2Nh biwgU2NhbkRpcmVjdGlvbiBkaXIpCiAJCQkgKiBlbnRyaWVzLgogCQkJICovCiAJCQlpZiAo c28tPmtpbGxlZEl0ZW1zID09IE5VTEwpCi0JCQkJc28tPmtpbGxlZEl0ZW1zID0gKGludCAq KQotCQkJCQlwYWxsb2MoTWF4SW5kZXhUdXBsZXNQZXJQYWdlICogc2l6ZW9mKGludCkpOwor CQkJCXNvLT5raWxsZWRJdGVtcyA9IHBhbGxvY19hcnJheShpbnQsIE1heEluZGV4VHVwbGVz UGVyUGFnZSk7CiAKIAkJCWlmIChzby0+bnVtS2lsbGVkIDwgTWF4SW5kZXhUdXBsZXNQZXJQ YWdlKQogCQkJCXNvLT5raWxsZWRJdGVtc1tzby0+bnVtS2lsbGVkKytdID0gc28tPmN1cnJQ b3MuaXRlbUluZGV4OwpAQCAtMzgxLDcgKzM4MCw3IEBAIGhhc2hiZWdpbnNjYW4oUmVsYXRp b24gcmVsLCBpbnQgbmtleXMsIGludCBub3JkZXJieXMpCiAKIAlzY2FuID0gUmVsYXRpb25H ZXRJbmRleFNjYW4ocmVsLCBua2V5cywgbm9yZGVyYnlzKTsKIAotCXNvID0gKEhhc2hTY2Fu T3BhcXVlKSBwYWxsb2Moc2l6ZW9mKEhhc2hTY2FuT3BhcXVlRGF0YSkpOworCXNvID0gKEhh c2hTY2FuT3BhcXVlKSBwYWxsb2Nfb2JqZWN0KEhhc2hTY2FuT3BhcXVlRGF0YSk7CiAJSGFz aFNjYW5Qb3NJbnZhbGlkYXRlKHNvLT5jdXJyUG9zKTsKIAlzby0+aGFzaHNvX2J1Y2tldF9i dWYgPSBJbnZhbGlkQnVmZmVyOwogCXNvLT5oYXNoc29fc3BsaXRfYnVja2V0X2J1ZiA9IElu dmFsaWRCdWZmZXI7CkBAIC02MzMsNyArNjMyLDcgQEAgbG9vcF90b3A6CiAKIAkvKiByZXR1 cm4gc3RhdGlzdGljcyAqLwogCWlmIChzdGF0cyA9PSBOVUxMKQotCQlzdGF0cyA9IChJbmRl eEJ1bGtEZWxldGVSZXN1bHQgKikgcGFsbG9jMChzaXplb2YoSW5kZXhCdWxrRGVsZXRlUmVz dWx0KSk7CisJCXN0YXRzID0gcGFsbG9jMF9vYmplY3QoSW5kZXhCdWxrRGVsZXRlUmVzdWx0 KTsKIAlzdGF0cy0+ZXN0aW1hdGVkX2NvdW50ID0gZmFsc2U7CiAJc3RhdHMtPm51bV9pbmRl eF90dXBsZXMgPSBudW1faW5kZXhfdHVwbGVzOwogCXN0YXRzLT50dXBsZXNfcmVtb3ZlZCAr PSB0dXBsZXNfcmVtb3ZlZDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oYXNo L2hhc2hzb3J0LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoc29ydC5jCmluZGV4 IDkyYWUzY2Y1M2Y1Li4wZmQ0MWY0ZjRjYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNj ZXNzL2hhc2gvaGFzaHNvcnQuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNo c29ydC5jCkBAIC01OSw3ICs1OSw3IEBAIHN0cnVjdCBIU3Bvb2wKIEhTcG9vbCAqCiBfaF9z cG9vbGluaXQoUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsIHVpbnQzMiBudW1fYnVj a2V0cykKIHsKLQlIU3Bvb2wJICAgKmhzcG9vbCA9IChIU3Bvb2wgKikgcGFsbG9jMChzaXpl b2YoSFNwb29sKSk7CisJSFNwb29sCSAgICpoc3Bvb2wgPSBwYWxsb2MwX29iamVjdChIU3Bv b2wpOwogCiAJaHNwb29sLT5pbmRleCA9IGluZGV4OwogCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hl YXBhbS5jCmluZGV4IDRiMGM0OWY0YmIwLi43MzY4ZTU2MDMzZCAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvaGVhcGFtLmMKQEAgLTExMTgsNyArMTExOCw3IEBAIGhlYXBfYmVnaW5zY2FuKFJl bGF0aW9uIHJlbGF0aW9uLCBTbmFwc2hvdCBzbmFwc2hvdCwKIAkgKi8KIAlpZiAoZmxhZ3Mg JiBTT19UWVBFX0JJVE1BUFNDQU4pCiAJewotCQlCaXRtYXBIZWFwU2NhbkRlc2MgYnNjYW4g PSBwYWxsb2Moc2l6ZW9mKEJpdG1hcEhlYXBTY2FuRGVzY0RhdGEpKTsKKwkJQml0bWFwSGVh cFNjYW5EZXNjIGJzY2FuID0gcGFsbG9jX29iamVjdChCaXRtYXBIZWFwU2NhbkRlc2NEYXRh KTsKIAogCQkvKgogCQkgKiBCaXRtYXAgSGVhcCBzY2FucyBkbyBub3QgaGF2ZSBhbnkgZmll bGRzIHRoYXQgYSBub3JtYWwgSGVhcCBTY2FuCkBAIC0xMTI3LDcgKzExMjcsNyBAQCBoZWFw X2JlZ2luc2NhbihSZWxhdGlvbiByZWxhdGlvbiwgU25hcHNob3Qgc25hcHNob3QsCiAJCXNj YW4gPSAoSGVhcFNjYW5EZXNjKSBic2NhbjsKIAl9CiAJZWxzZQotCQlzY2FuID0gKEhlYXBT Y2FuRGVzYykgcGFsbG9jKHNpemVvZihIZWFwU2NhbkRlc2NEYXRhKSk7CisJCXNjYW4gPSAo SGVhcFNjYW5EZXNjKSBwYWxsb2Nfb2JqZWN0KEhlYXBTY2FuRGVzY0RhdGEpOwogCiAJc2Nh bi0+cnNfYmFzZS5yc19yZCA9IHJlbGF0aW9uOwogCXNjYW4tPnJzX2Jhc2UucnNfc25hcHNo b3QgPSBzbmFwc2hvdDsKQEAgLTExODYsNyArMTE4Niw3IEBAIGhlYXBfYmVnaW5zY2FuKFJl bGF0aW9uIHJlbGF0aW9uLCBTbmFwc2hvdCBzbmFwc2hvdCwKIAkgKiB3aGVuIGRvaW5nIGEg cGFyYWxsZWwgc2Nhbi4KIAkgKi8KIAlpZiAocGFyYWxsZWxfc2NhbiAhPSBOVUxMKQotCQlz Y2FuLT5yc19wYXJhbGxlbHdvcmtlcmRhdGEgPSBwYWxsb2Moc2l6ZW9mKFBhcmFsbGVsQmxv Y2tUYWJsZVNjYW5Xb3JrZXJEYXRhKSk7CisJCXNjYW4tPnJzX3BhcmFsbGVsd29ya2VyZGF0 YSA9IHBhbGxvY19vYmplY3QoUGFyYWxsZWxCbG9ja1RhYmxlU2NhbldvcmtlckRhdGEpOwog CWVsc2UKIAkJc2Nhbi0+cnNfcGFyYWxsZWx3b3JrZXJkYXRhID0gTlVMTDsKIApAQCAtMTE5 NSw3ICsxMTk1LDcgQEAgaGVhcF9iZWdpbnNjYW4oUmVsYXRpb24gcmVsYXRpb24sIFNuYXBz aG90IHNuYXBzaG90LAogCSAqIGluaXRzY2FuKCkgYW5kIHdlIGRvbid0IHdhbnQgdG8gYWxs b2NhdGUgbWVtb3J5IGFnYWluCiAJICovCiAJaWYgKG5rZXlzID4gMCkKLQkJc2Nhbi0+cnNf YmFzZS5yc19rZXkgPSAoU2NhbktleSkgcGFsbG9jKHNpemVvZihTY2FuS2V5RGF0YSkgKiBu a2V5cyk7CisJCXNjYW4tPnJzX2Jhc2UucnNfa2V5ID0gcGFsbG9jX2FycmF5KFNjYW5LZXlE YXRhLCBua2V5cyk7CiAJZWxzZQogCQlzY2FuLT5yc19iYXNlLnJzX2tleSA9IE5VTEw7CiAK QEAgLTIwMjIsNyArMjAyMiw3IEBAIEdldEJ1bGtJbnNlcnRTdGF0ZSh2b2lkKQogewogCUJ1 bGtJbnNlcnRTdGF0ZSBiaXN0YXRlOwogCi0JYmlzdGF0ZSA9IChCdWxrSW5zZXJ0U3RhdGUp IHBhbGxvYyhzaXplb2YoQnVsa0luc2VydFN0YXRlRGF0YSkpOworCWJpc3RhdGUgPSAoQnVs a0luc2VydFN0YXRlKSBwYWxsb2Nfb2JqZWN0KEJ1bGtJbnNlcnRTdGF0ZURhdGEpOwogCWJp c3RhdGUtPnN0cmF0ZWd5ID0gR2V0QWNjZXNzU3RyYXRlZ3koQkFTX0JVTEtXUklURSk7CiAJ YmlzdGF0ZS0+Y3VycmVudF9idWYgPSBJbnZhbGlkQnVmZmVyOwogCWJpc3RhdGUtPm5leHRf ZnJlZSA9IEludmFsaWRCbG9ja051bWJlcjsKQEAgLTY4ODAsNyArNjg4MCw3IEBAIEZyZWV6 ZU11bHRpWGFjdElkKE11bHRpWGFjdElkIG11bHRpLCB1aW50MTYgdF9pbmZvbWFzaywKIAkg KiBldmVuIG1lbWJlciBYSURzID49IE9sZGVzdFhtaW4gb2Z0ZW4gd29uJ3QgYmUga2VwdCBi eSBzZWNvbmQgcGFzcy4KIAkgKi8KIAlubmV3bWVtYmVycyA9IDA7Ci0JbmV3bWVtYmVycyA9 IHBhbGxvYyhzaXplb2YoTXVsdGlYYWN0TWVtYmVyKSAqIG5tZW1iZXJzKTsKKwluZXdtZW1i ZXJzID0gcGFsbG9jX2FycmF5KE11bHRpWGFjdE1lbWJlciwgbm1lbWJlcnMpOwogCWhhc19s b2NrZXJzID0gZmFsc2U7CiAJdXBkYXRlX3hpZCA9IEludmFsaWRUcmFuc2FjdGlvbklkOwog CXVwZGF0ZV9jb21taXR0ZWQgPSBmYWxzZTsKQEAgLTg2OTYsNyArODY5Niw3IEBAIGJvdHRv bXVwX3NvcnRfYW5kX3NocmluayhUTV9JbmRleERlbGV0ZU9wICpkZWxzdGF0ZSkKIAlBc3Nl cnQoZGVsc3RhdGUtPm5kZWx0aWRzID4gMCk7CiAKIAkvKiBDYWxjdWxhdGUgcGVyLWhlYXAt YmxvY2sgY291bnQgb2YgVElEcyAqLwotCWJsb2NrZ3JvdXBzID0gcGFsbG9jKHNpemVvZihJ bmRleERlbGV0ZUNvdW50cykgKiBkZWxzdGF0ZS0+bmRlbHRpZHMpOworCWJsb2NrZ3JvdXBz ID0gcGFsbG9jX2FycmF5KEluZGV4RGVsZXRlQ291bnRzLCBkZWxzdGF0ZS0+bmRlbHRpZHMp OwogCWZvciAoaW50IGkgPSAwOyBpIDwgZGVsc3RhdGUtPm5kZWx0aWRzOyBpKyspCiAJewog CQlUTV9JbmRleERlbGV0ZSAqaWRlbHRpZCA9ICZkZWxzdGF0ZS0+ZGVsdGlkc1tpXTsKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMgYi9z cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCmluZGV4IGJjYmFjODQ0 YmI2Li5kZDRmZTZiZjYyZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv aGVhcGFtX2hhbmRsZXIuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1f aGFuZGxlci5jCkBAIC04MSw3ICs4MSw3IEBAIGhlYXBhbV9zbG90X2NhbGxiYWNrcyhSZWxh dGlvbiByZWxhdGlvbikKIHN0YXRpYyBJbmRleEZldGNoVGFibGVEYXRhICoKIGhlYXBhbV9p bmRleF9mZXRjaF9iZWdpbihSZWxhdGlvbiByZWwpCiB7Ci0JSW5kZXhGZXRjaEhlYXBEYXRh ICpoc2NhbiA9IHBhbGxvYzAoc2l6ZW9mKEluZGV4RmV0Y2hIZWFwRGF0YSkpOworCUluZGV4 RmV0Y2hIZWFwRGF0YSAqaHNjYW4gPSBwYWxsb2MwX29iamVjdChJbmRleEZldGNoSGVhcERh dGEpOwogCiAJaHNjYW4tPnhzX2Jhc2UucmVsID0gcmVsOwogCWhzY2FuLT54c19jYnVmID0g SW52YWxpZEJ1ZmZlcjsKQEAgLTcxNyw4ICs3MTcsOCBAQCBoZWFwYW1fcmVsYXRpb25fY29w eV9mb3JfY2x1c3RlcihSZWxhdGlvbiBPbGRIZWFwLCBSZWxhdGlvbiBOZXdIZWFwLAogCiAJ LyogUHJlYWxsb2NhdGUgdmFsdWVzL2lzbnVsbCBhcnJheXMgKi8KIAluYXR0cyA9IG5ld1R1 cERlc2MtPm5hdHRzOwotCXZhbHVlcyA9IChEYXR1bSAqKSBwYWxsb2MobmF0dHMgKiBzaXpl b2YoRGF0dW0pKTsKLQlpc251bGwgPSAoYm9vbCAqKSBwYWxsb2MobmF0dHMgKiBzaXplb2Yo Ym9vbCkpOworCXZhbHVlcyA9IHBhbGxvY19hcnJheShEYXR1bSwgbmF0dHMpOworCWlzbnVs bCA9IHBhbGxvY19hcnJheShib29sLCBuYXR0cyk7CiAKIAkvKiBJbml0aWFsaXplIHRoZSBy ZXdyaXRlIG9wZXJhdGlvbiAqLwogCXJ3c3RhdGUgPSBiZWdpbl9oZWFwX3Jld3JpdGUoT2xk SGVhcCwgTmV3SGVhcCwgT2xkZXN0WG1pbiwgKnhpZF9jdXRvZmYsCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9yZXdyaXRlaGVhcC5jIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvcmV3cml0ZWhlYXAuYwppbmRleCA2NmFiNDhmMGZlMC4uN2NlM2M1ZTI2ODUg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3Jld3JpdGVoZWFwLmMKKysr IGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcmV3cml0ZWhlYXAuYwpAQCAtMjQ5LDcgKzI0 OSw3IEBAIGJlZ2luX2hlYXBfcmV3cml0ZShSZWxhdGlvbiBvbGRfaGVhcCwgUmVsYXRpb24g bmV3X2hlYXAsIFRyYW5zYWN0aW9uSWQgb2xkZXN0X3htCiAJb2xkX2N4dCA9IE1lbW9yeUNv bnRleHRTd2l0Y2hUbyhyd19jeHQpOwogCiAJLyogQ3JlYXRlIGFuZCBmaWxsIGluIHRoZSBz dGF0ZSBzdHJ1Y3QgKi8KLQlzdGF0ZSA9IHBhbGxvYzAoc2l6ZW9mKFJld3JpdGVTdGF0ZURh dGEpKTsKKwlzdGF0ZSA9IHBhbGxvYzBfb2JqZWN0KFJld3JpdGVTdGF0ZURhdGEpOwogCiAJ c3RhdGUtPnJzX29sZF9yZWwgPSBvbGRfaGVhcDsKIAlzdGF0ZS0+cnNfbmV3X3JlbCA9IG5l d19oZWFwOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6 eS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCmluZGV4IDY1YmIw NTY4YTg2Li45MWUwYjhjOGE3MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvdmFjdXVtbGF6eS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxh enkuYwpAQCAtNjc3LDcgKzY3Nyw3IEBAIGhlYXBfdmFjdXVtX3JlbChSZWxhdGlvbiByZWws IGNvbnN0IFZhY3V1bVBhcmFtcyBwYXJhbXMsCiAJICogb2YgZWFjaCByZWwuICBJdCdzIGNv bnZlbmllbnQgZm9yIGNvZGUgaW4gbGF6eV9zY2FuX2hlYXAgdG8gYWx3YXlzIHVzZQogCSAq IHRoZXNlIHRlbXAgY29waWVzLgogCSAqLwotCXZhY3JlbCA9IChMVlJlbFN0YXRlICopIHBh bGxvYzAoc2l6ZW9mKExWUmVsU3RhdGUpKTsKKwl2YWNyZWwgPSBwYWxsb2MwX29iamVjdChM VlJlbFN0YXRlKTsKIAl2YWNyZWwtPmRibmFtZSA9IGdldF9kYXRhYmFzZV9uYW1lKE15RGF0 YWJhc2VJZCk7CiAJdmFjcmVsLT5yZWxuYW1lc3BhY2UgPSBnZXRfbmFtZXNwYWNlX25hbWUo UmVsYXRpb25HZXROYW1lc3BhY2UocmVsKSk7CiAJdmFjcmVsLT5yZWxuYW1lID0gcHN0cmR1 cChSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpKTsKQEAgLTY5Nyw3ICs2OTcsNyBAQCBo ZWFwX3ZhY3V1bV9yZWwoUmVsYXRpb24gcmVsLCBjb25zdCBWYWN1dW1QYXJhbXMgcGFyYW1z LAogCWlmIChpbnN0cnVtZW50ICYmIHZhY3JlbC0+bmluZGV4ZXMgPiAwKQogCXsKIAkJLyog Q29weSBpbmRleCBuYW1lcyB1c2VkIGJ5IGluc3RydW1lbnRhdGlvbiAobm90IGVycm9yIHJl cG9ydGluZykgKi8KLQkJaW5kbmFtZXMgPSBwYWxsb2Moc2l6ZW9mKGNoYXIgKikgKiB2YWNy ZWwtPm5pbmRleGVzKTsKKwkJaW5kbmFtZXMgPSBwYWxsb2NfYXJyYXkoY2hhciAqLCB2YWNy ZWwtPm5pbmRleGVzKTsKIAkJZm9yIChpbnQgaSA9IDA7IGkgPCB2YWNyZWwtPm5pbmRleGVz OyBpKyspCiAJCQlpbmRuYW1lc1tpXSA9IHBzdHJkdXAoUmVsYXRpb25HZXRSZWxhdGlvbk5h bWUodmFjcmVsLT5pbmRyZWxzW2ldKSk7CiAJfQpAQCAtMzU2Nyw3ICszNTY3LDcgQEAgZGVh ZF9pdGVtc19hbGxvYyhMVlJlbFN0YXRlICp2YWNyZWwsIGludCBud29ya2VycykKIAkgKiBs b2NhbGx5LgogCSAqLwogCi0JZGVhZF9pdGVtc19pbmZvID0gKFZhY0RlYWRJdGVtc0luZm8g KikgcGFsbG9jKHNpemVvZihWYWNEZWFkSXRlbXNJbmZvKSk7CisJZGVhZF9pdGVtc19pbmZv ID0gcGFsbG9jX29iamVjdChWYWNEZWFkSXRlbXNJbmZvKTsKIAlkZWFkX2l0ZW1zX2luZm8t Pm1heF9ieXRlcyA9IHZhY193b3JrX21lbSAqIChTaXplKSAxMDI0OwogCWRlYWRfaXRlbXNf aW5mby0+bnVtX2l0ZW1zID0gMDsKIAl2YWNyZWwtPmRlYWRfaXRlbXNfaW5mbyA9IGRlYWRf aXRlbXNfaW5mbzsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9hbXZh bGlkYXRlLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaW5kZXgvYW12YWxpZGF0ZS5jCmluZGV4 IDRjZjIzNzAxOWFkLi44ZDdlNzE3MWJkNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNj ZXNzL2luZGV4L2FtdmFsaWRhdGUuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaW5kZXgv YW12YWxpZGF0ZS5jCkBAIC0xMTgsNyArMTE4LDcgQEAgaWRlbnRpZnlfb3BmYW1pbHlfZ3Jv dXBzKENhdENMaXN0ICpvcHJsaXN0LCBDYXRDTGlzdCAqcHJvY2xpc3QpCiAJCX0KIAogCQkv KiBUaW1lIGZvciBhIG5ldyBncm91cCAqLwotCQl0aGlzZ3JvdXAgPSAoT3BGYW1pbHlPcEZ1 bmNHcm91cCAqKSBwYWxsb2Moc2l6ZW9mKE9wRmFtaWx5T3BGdW5jR3JvdXApKTsKKwkJdGhp c2dyb3VwID0gcGFsbG9jX29iamVjdChPcEZhbWlseU9wRnVuY0dyb3VwKTsKIAkJaWYgKG9w cmZvcm0gJiYKIAkJCSghcHJvY2Zvcm0gfHwKIAkJCSAob3ByZm9ybS0+YW1vcGxlZnR0eXBl IDwgcHJvY2Zvcm0tPmFtcHJvY2xlZnR0eXBlIHx8CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvaW5kZXgvZ2VuYW0uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9nZW5h bS5jCmluZGV4IDBjYjI3YWYxMzEwLi4xZTllYWRiNzIzZSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL2luZGV4L2dlbmFtLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2lu ZGV4L2dlbmFtLmMKQEAgLTgxLDcgKzgxLDcgQEAgUmVsYXRpb25HZXRJbmRleFNjYW4oUmVs YXRpb24gaW5kZXhSZWxhdGlvbiwgaW50IG5rZXlzLCBpbnQgbm9yZGVyYnlzKQogewogCUlu ZGV4U2NhbkRlc2Mgc2NhbjsKIAotCXNjYW4gPSAoSW5kZXhTY2FuRGVzYykgcGFsbG9jKHNp emVvZihJbmRleFNjYW5EZXNjRGF0YSkpOworCXNjYW4gPSAoSW5kZXhTY2FuRGVzYykgcGFs bG9jX29iamVjdChJbmRleFNjYW5EZXNjRGF0YSk7CiAKIAlzY2FuLT5oZWFwUmVsYXRpb24g PSBOVUxMOwkvKiBtYXkgYmUgc2V0IGxhdGVyICovCiAJc2Nhbi0+eHNfaGVhcGZldGNoID0g TlVMTDsKQEAgLTk0LDExICs5NCwxMSBAQCBSZWxhdGlvbkdldEluZGV4U2NhbihSZWxhdGlv biBpbmRleFJlbGF0aW9uLCBpbnQgbmtleXMsIGludCBub3JkZXJieXMpCiAJICogV2UgYWxs b2NhdGUga2V5IHdvcmtzcGFjZSBoZXJlLCBidXQgaXQgd29uJ3QgZ2V0IGZpbGxlZCB1bnRp bCBhbXJlc2Nhbi4KIAkgKi8KIAlpZiAobmtleXMgPiAwKQotCQlzY2FuLT5rZXlEYXRhID0g KFNjYW5LZXkpIHBhbGxvYyhzaXplb2YoU2NhbktleURhdGEpICogbmtleXMpOworCQlzY2Fu LT5rZXlEYXRhID0gcGFsbG9jX2FycmF5KFNjYW5LZXlEYXRhLCBua2V5cyk7IAogCWVsc2UK IAkJc2Nhbi0+a2V5RGF0YSA9IE5VTEw7CiAJaWYgKG5vcmRlcmJ5cyA+IDApCi0JCXNjYW4t Pm9yZGVyQnlEYXRhID0gKFNjYW5LZXkpIHBhbGxvYyhzaXplb2YoU2NhbktleURhdGEpICog bm9yZGVyYnlzKTsKKwkJc2Nhbi0+b3JkZXJCeURhdGEgPSBwYWxsb2NfYXJyYXkoU2Nhbktl eURhdGEsIG5vcmRlcmJ5cyk7CiAJZWxzZQogCQlzY2FuLT5vcmRlckJ5RGF0YSA9IE5VTEw7 CiAKQEAgLTMxMCw4ICszMTAsOCBAQCBpbmRleF9jb21wdXRlX3hpZF9ob3Jpem9uX2Zvcl90 dXBsZXMoUmVsYXRpb24gaXJlbCwKIAlkZWxzdGF0ZS5ib3R0b211cCA9IGZhbHNlOwogCWRl bHN0YXRlLmJvdHRvbXVwZnJlZXNwYWNlID0gMDsKIAlkZWxzdGF0ZS5uZGVsdGlkcyA9IDA7 Ci0JZGVsc3RhdGUuZGVsdGlkcyA9IHBhbGxvYyhuaXRlbXMgKiBzaXplb2YoVE1fSW5kZXhE ZWxldGUpKTsKLQlkZWxzdGF0ZS5zdGF0dXMgPSBwYWxsb2Mobml0ZW1zICogc2l6ZW9mKFRN X0luZGV4U3RhdHVzKSk7CisJZGVsc3RhdGUuZGVsdGlkcyA9IHBhbGxvY19hcnJheShUTV9J bmRleERlbGV0ZSwgbml0ZW1zKTsKKwlkZWxzdGF0ZS5zdGF0dXMgPSBwYWxsb2NfYXJyYXko VE1fSW5kZXhTdGF0dXMsIG5pdGVtcyk7CiAKIAkvKiBpZGVudGlmeSB3aGF0IHRoZSBpbmRl eCB0dXBsZXMgYWJvdXQgdG8gYmUgZGVsZXRlZCBwb2ludCB0byAqLwogCWZvciAoaW50IGkg PSAwOyBpIDwgbml0ZW1zOyBpKyspCkBAIC00MDEsNyArNDAxLDcgQEAgc3lzdGFibGVfYmVn aW5zY2FuKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAllbHNlCiAJCWlyZWwgPSBOVUxMOwog Ci0Jc3lzc2NhbiA9IChTeXNTY2FuRGVzYykgcGFsbG9jKHNpemVvZihTeXNTY2FuRGVzY0Rh dGEpKTsKKwlzeXNzY2FuID0gKFN5c1NjYW5EZXNjKSBwYWxsb2Nfb2JqZWN0KFN5c1NjYW5E ZXNjRGF0YSk7CiAKIAlzeXNzY2FuLT5oZWFwX3JlbCA9IGhlYXBSZWxhdGlvbjsKIAlzeXNz Y2FuLT5pcmVsID0gaXJlbDsKQEAgLTY2Nyw3ICs2NjcsNyBAQCBzeXN0YWJsZV9iZWdpbnNj YW5fb3JkZXJlZChSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJCWVsb2coV0FSTklORywgInVz aW5nIGluZGV4IFwiJXNcIiBkZXNwaXRlIElnbm9yZVN5c3RlbUluZGV4ZXMiLAogCQkJIFJl bGF0aW9uR2V0UmVsYXRpb25OYW1lKGluZGV4UmVsYXRpb24pKTsKIAotCXN5c3NjYW4gPSAo U3lzU2NhbkRlc2MpIHBhbGxvYyhzaXplb2YoU3lzU2NhbkRlc2NEYXRhKSk7CisJc3lzc2Nh biA9IChTeXNTY2FuRGVzYykgcGFsbG9jX29iamVjdChTeXNTY2FuRGVzY0RhdGEpOwogCiAJ c3lzc2Nhbi0+aGVhcF9yZWwgPSBoZWFwUmVsYXRpb247CiAJc3lzc2Nhbi0+aXJlbCA9IGlu ZGV4UmVsYXRpb247CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25i dGRlZHVwLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idGRlZHVwLmMKaW5kZXgg YTc0NmRlNDVkZDMuLmVjMDdlYTNkMTIzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nl c3MvbmJ0cmVlL25idGRlZHVwLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9u YnRkZWR1cC5jCkBAIC04Miw3ICs4Miw3IEBAIF9idF9kZWR1cF9wYXNzKFJlbGF0aW9uIHJl bCwgQnVmZmVyIGJ1ZiwgSW5kZXhUdXBsZSBuZXdpdGVtLCBTaXplIG5ld2l0ZW1zeiwKIAkg KiBUaGF0IG91Z2h0IHRvIGxlYXZlIHVzIHdpdGggYSBnb29kIHNwbGl0IHBvaW50IHdoZW4g cGFnZXMgZnVsbCBvZgogCSAqIGR1cGxpY2F0ZXMgY2FuIGJlIHNwbGl0IHNldmVyYWwgdGlt ZXMuCiAJICovCi0Jc3RhdGUgPSAoQlREZWR1cFN0YXRlKSBwYWxsb2Moc2l6ZW9mKEJURGVk dXBTdGF0ZURhdGEpKTsKKwlzdGF0ZSA9IChCVERlZHVwU3RhdGUpIHBhbGxvY19vYmplY3Qo QlREZWR1cFN0YXRlRGF0YSk7CiAJc3RhdGUtPmRlZHVwbGljYXRlID0gdHJ1ZTsKIAlzdGF0 ZS0+bm1heGl0ZW1zID0gMDsKIAlzdGF0ZS0+bWF4cG9zdGluZ3NpemUgPSBNaW4oQlRNYXhJ dGVtU2l6ZSAvIDIsIElOREVYX1NJWkVfTUFTSyk7CkBAIC0zMjEsNyArMzIxLDcgQEAgX2J0 X2JvdHRvbXVwZGVsX3Bhc3MoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLCBSZWxhdGlvbiBo ZWFwUmVsLAogCW5ld2l0ZW1zeiArPSBzaXplb2YoSXRlbUlkRGF0YSk7CiAKIAkvKiBJbml0 aWFsaXplIGRlZHVwbGljYXRpb24gc3RhdGUgKi8KLQlzdGF0ZSA9IChCVERlZHVwU3RhdGUp IHBhbGxvYyhzaXplb2YoQlREZWR1cFN0YXRlRGF0YSkpOworCXN0YXRlID0gKEJURGVkdXBT dGF0ZSkgcGFsbG9jX29iamVjdChCVERlZHVwU3RhdGVEYXRhKTsKIAlzdGF0ZS0+ZGVkdXBs aWNhdGUgPSB0cnVlOwogCXN0YXRlLT5ubWF4aXRlbXMgPSAwOwogCXN0YXRlLT5tYXhwb3N0 aW5nc2l6ZSA9IEJMQ0tTWjsgLyogV2UncmUgbm90IHJlYWxseSBkZWR1cGxpY2F0aW5nICov CkBAIC0zNTUsOCArMzU1LDggQEAgX2J0X2JvdHRvbXVwZGVsX3Bhc3MoUmVsYXRpb24gcmVs LCBCdWZmZXIgYnVmLCBSZWxhdGlvbiBoZWFwUmVsLAogCWRlbHN0YXRlLmJvdHRvbXVwID0g dHJ1ZTsKIAlkZWxzdGF0ZS5ib3R0b211cGZyZWVzcGFjZSA9IE1heChCTENLU1ogLyAxNiwg bmV3aXRlbXN6KTsKIAlkZWxzdGF0ZS5uZGVsdGlkcyA9IDA7Ci0JZGVsc3RhdGUuZGVsdGlk cyA9IHBhbGxvYyhNYXhUSURzUGVyQlRyZWVQYWdlICogc2l6ZW9mKFRNX0luZGV4RGVsZXRl KSk7Ci0JZGVsc3RhdGUuc3RhdHVzID0gcGFsbG9jKE1heFRJRHNQZXJCVHJlZVBhZ2UgKiBz aXplb2YoVE1fSW5kZXhTdGF0dXMpKTsKKwlkZWxzdGF0ZS5kZWx0aWRzID0gcGFsbG9jX2Fy cmF5KFRNX0luZGV4RGVsZXRlLCBNYXhUSURzUGVyQlRyZWVQYWdlKTsKKwlkZWxzdGF0ZS5z dGF0dXMgPSBwYWxsb2NfYXJyYXkoVE1fSW5kZXhTdGF0dXMsIE1heFRJRHNQZXJCVHJlZVBh Z2UpOwogCiAJbWlub2ZmID0gUF9GSVJTVERBVEFLRVkob3BhcXVlKTsKIAltYXhvZmYgPSBQ YWdlR2V0TWF4T2Zmc2V0TnVtYmVyKHBhZ2UpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv YWNjZXNzL25idHJlZS9uYnRpbnNlcnQuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUv bmJ0aW5zZXJ0LmMKaW5kZXggN2MxMTNjMDA3ZTUuLjBhZjdlM2ZlYjQwIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idGluc2VydC5jCisrKyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0aW5zZXJ0LmMKQEAgLTI5NTQsNyArMjk1NCw3IEBAIF9i dF9kZWFkYmxvY2tzKFBhZ2UgcGFnZSwgT2Zmc2V0TnVtYmVyICpkZWxldGFibGUsIGludCBu ZGVsZXRhYmxlLAogCSAqLwogCXNwYWNlbnRpZHMgPSBuZGVsZXRhYmxlICsgMTsKIAludGlk cyA9IDA7Ci0JdGlkYmxvY2tzID0gKEJsb2NrTnVtYmVyICopIHBhbGxvYyhzaXplb2YoQmxv Y2tOdW1iZXIpICogc3BhY2VudGlkcyk7CisJdGlkYmxvY2tzID0gcGFsbG9jX2FycmF5KEJs b2NrTnVtYmVyLCBzcGFjZW50aWRzKTsKIAogCS8qCiAJICogRmlyc3QgYWRkIHRoZSB0YWJs ZSBibG9jayBmb3IgdGhlIGluY29taW5nIG5ld2l0ZW0uICBUaGlzIGlzIHRoZSBvbmUKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0cGFnZS5jIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL25idHJlZS9uYnRwYWdlLmMKaW5kZXggMzBiNDNhNGRkMTguLmNmYTg3 NDVjYjZhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHBhZ2Uu YworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHBhZ2UuYwpAQCAtMjk3NSw3 ICsyOTc1LDcgQEAgX2J0X3BlbmRpbmdmc21faW5pdChSZWxhdGlvbiByZWwsIEJUVmFjU3Rh dGUgKnZzdGF0ZSwgYm9vbCBjbGVhbnVwb25seSkKIAl2c3RhdGUtPm1heGJ1ZnNpemUgPSAo aW50KSBtYXhidWZzaXplOwogCiAJLyogQWxsb2NhdGUgYnVmZmVyLCBpbmRpY2F0ZSB0aGF0 IHRoZXJlIGFyZSBjdXJyZW50bHkgMCBwZW5kaW5nIHBhZ2VzICovCi0JdnN0YXRlLT5wZW5k aW5ncGFnZXMgPSBwYWxsb2Moc2l6ZW9mKEJUUGVuZGluZ0ZTTSkgKiB2c3RhdGUtPmJ1ZnNp emUpOworCXZzdGF0ZS0+cGVuZGluZ3BhZ2VzID0gcGFsbG9jX2FycmF5KEJUUGVuZGluZ0ZT TSwgdnN0YXRlLT5idWZzaXplKTsKIAl2c3RhdGUtPm5wZW5kaW5ncGFnZXMgPSAwOwogfQog CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHJlZS5jIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRyZWUuYwppbmRleCBmZGZmOTYwYzEzMC4uYzg3 ZTRjZmE0MmYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0cmVl LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRyZWUuYwpAQCAtMjYwLDgg KzI2MCw3IEBAIGJ0Z2V0dHVwbGUoSW5kZXhTY2FuRGVzYyBzY2FuLCBTY2FuRGlyZWN0aW9u IGRpcikKIAkJCQkgKiBqdXN0IGZvcmdldCBhbnkgZXhjZXNzIGVudHJpZXMuCiAJCQkJICov CiAJCQkJaWYgKHNvLT5raWxsZWRJdGVtcyA9PSBOVUxMKQotCQkJCQlzby0+a2lsbGVkSXRl bXMgPSAoaW50ICopCi0JCQkJCQlwYWxsb2MoTWF4VElEc1BlckJUcmVlUGFnZSAqIHNpemVv ZihpbnQpKTsKKwkJCQkJc28tPmtpbGxlZEl0ZW1zID0gcGFsbG9jX2FycmF5KGludCwgTWF4 VElEc1BlckJUcmVlUGFnZSk7CiAJCQkJaWYgKHNvLT5udW1LaWxsZWQgPCBNYXhUSURzUGVy QlRyZWVQYWdlKQogCQkJCQlzby0+a2lsbGVkSXRlbXNbc28tPm51bUtpbGxlZCsrXSA9IHNv LT5jdXJyUG9zLml0ZW1JbmRleDsKIAkJCX0KQEAgLTM0NSw3ICszNDQsNyBAQCBidGJlZ2lu c2NhbihSZWxhdGlvbiByZWwsIGludCBua2V5cywgaW50IG5vcmRlcmJ5cykKIAlzY2FuID0g UmVsYXRpb25HZXRJbmRleFNjYW4ocmVsLCBua2V5cywgbm9yZGVyYnlzKTsKIAogCS8qIGFs bG9jYXRlIHByaXZhdGUgd29ya3NwYWNlICovCi0Jc28gPSAoQlRTY2FuT3BhcXVlKSBwYWxs b2Moc2l6ZW9mKEJUU2Nhbk9wYXF1ZURhdGEpKTsKKwlzbyA9IChCVFNjYW5PcGFxdWUpIHBh bGxvY19vYmplY3QoQlRTY2FuT3BhcXVlRGF0YSk7CiAJQlRTY2FuUG9zSW52YWxpZGF0ZShz by0+Y3VyclBvcyk7CiAJQlRTY2FuUG9zSW52YWxpZGF0ZShzby0+bWFya1Bvcyk7CiAJaWYg KHNjYW4tPm51bWJlck9mS2V5cyA+IDApCkBAIC0xMDcwLDcgKzEwNjksNyBAQCBidGJ1bGtk ZWxldGUoSW5kZXhWYWN1dW1JbmZvICppbmZvLCBJbmRleEJ1bGtEZWxldGVSZXN1bHQgKnN0 YXRzLAogCiAJLyogYWxsb2NhdGUgc3RhdHMgaWYgZmlyc3QgdGltZSB0aHJvdWdoLCBlbHNl IHJlLXVzZSBleGlzdGluZyBzdHJ1Y3QgKi8KIAlpZiAoc3RhdHMgPT0gTlVMTCkKLQkJc3Rh dHMgPSAoSW5kZXhCdWxrRGVsZXRlUmVzdWx0ICopIHBhbGxvYzAoc2l6ZW9mKEluZGV4QnVs a0RlbGV0ZVJlc3VsdCkpOworCQlzdGF0cyA9IHBhbGxvYzBfb2JqZWN0KEluZGV4QnVsa0Rl bGV0ZVJlc3VsdCk7CiAKIAkvKiBFc3RhYmxpc2ggdGhlIHZhY3V1bSBjeWNsZSBJRCB0byB1 c2UgZm9yIHRoaXMgc2NhbiAqLwogCS8qIFRoZSBFTlNVUkUgc3R1ZmYgZW5zdXJlcyB3ZSBj bGVhbiB1cCBzaGFyZWQgbWVtb3J5IG9uIGZhaWx1cmUgKi8KQEAgLTExMzEsNyArMTEzMCw3 IEBAIGJ0dmFjdXVtY2xlYW51cChJbmRleFZhY3V1bUluZm8gKmluZm8sIEluZGV4QnVsa0Rl bGV0ZVJlc3VsdCAqc3RhdHMpCiAJCSAqIFdlIGhhbmRsZSB0aGUgcHJvYmxlbSBieSBtYWtp bmcgbnVtX2luZGV4X3R1cGxlcyBhbiBlc3RpbWF0ZSBpbgogCQkgKiBjbGVhbnVwLW9ubHkg Y2FzZS4KIAkJICovCi0JCXN0YXRzID0gKEluZGV4QnVsa0RlbGV0ZVJlc3VsdCAqKSBwYWxs b2MwKHNpemVvZihJbmRleEJ1bGtEZWxldGVSZXN1bHQpKTsKKwkJc3RhdHMgPSBwYWxsb2Mw X29iamVjdChJbmRleEJ1bGtEZWxldGVSZXN1bHQpOwogCQlidHZhY3V1bXNjYW4oaW5mbywg c3RhdHMsIE5VTEwsIE5VTEwsIDApOwogCQlzdGF0cy0+ZXN0aW1hdGVkX2NvdW50ID0gdHJ1 ZTsKIAl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNlYXJj aC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzZWFyY2guYwppbmRleCAwNjA1 MzU2ZWM5Zi4uMmIzNGU3ZWVjZmMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9u YnRyZWUvbmJ0c2VhcmNoLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRz ZWFyY2guYwpAQCAtMTY5LDcgKzE2OSw3IEBAIF9idF9zZWFyY2goUmVsYXRpb24gcmVsLCBS ZWxhdGlvbiBoZWFwcmVsLCBCVFNjYW5JbnNlcnQga2V5LCBCdWZmZXIgKmJ1ZlAsCiAJCSAq IHBhZ2Ugb25lIGxldmVsIGRvd24sIGl0IHVzdWFsbHkgZW5kcyB1cCBpbnNlcnRpbmcgYSBu ZXcgcGl2b3QKIAkJICogdHVwbGUvZG93bmxpbmsgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIGxv Y2F0aW9uIHJlY29yZGVkIGhlcmUuCiAJCSAqLwotCQluZXdfc3RhY2sgPSAoQlRTdGFjaykg cGFsbG9jKHNpemVvZihCVFN0YWNrRGF0YSkpOworCQluZXdfc3RhY2sgPSAoQlRTdGFjaykg cGFsbG9jX29iamVjdChCVFN0YWNrRGF0YSk7CiAJCW5ld19zdGFjay0+YnRzX2Jsa25vID0g QnVmZmVyR2V0QmxvY2tOdW1iZXIoKmJ1ZlApOwogCQluZXdfc3RhY2stPmJ0c19vZmZzZXQg PSBvZmZudW07CiAJCW5ld19zdGFjay0+YnRzX3BhcmVudCA9IHN0YWNrX2luOwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMgYi9zcmMvYmFja2Vu ZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQuYwppbmRleCA0NTRhZGFlZTdkYy4uYmY3MGJmMjA5 YTUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jCisr KyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jCkBAIC0zMzUsNyArMzM1 LDcgQEAgYnRidWlsZChSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwgSW5kZXhJbmZv ICppbmRleEluZm8pCiAJaWYgKGJ1aWxkc3RhdGUuYnRsZWFkZXIpCiAJCV9idF9lbmRfcGFy YWxsZWwoYnVpbGRzdGF0ZS5idGxlYWRlcik7CiAKLQlyZXN1bHQgPSAoSW5kZXhCdWlsZFJl c3VsdCAqKSBwYWxsb2Moc2l6ZW9mKEluZGV4QnVpbGRSZXN1bHQpKTsKKwlyZXN1bHQgPSBw YWxsb2Nfb2JqZWN0KEluZGV4QnVpbGRSZXN1bHQpOwogCiAJcmVzdWx0LT5oZWFwX3R1cGxl cyA9IHJlbHR1cGxlczsKIAlyZXN1bHQtPmluZGV4X3R1cGxlcyA9IGJ1aWxkc3RhdGUuaW5k dHVwbGVzOwpAQCAtMzY2LDcgKzM2Niw3IEBAIHN0YXRpYyBkb3VibGUKIF9idF9zcG9vbHNf aGVhcHNjYW4oUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsIEJUQnVpbGRTdGF0ZSAq YnVpbGRzdGF0ZSwKIAkJCQkJSW5kZXhJbmZvICppbmRleEluZm8pCiB7Ci0JQlRTcG9vbCAg ICAqYnRzcG9vbCA9IChCVFNwb29sICopIHBhbGxvYzAoc2l6ZW9mKEJUU3Bvb2wpKTsKKwlC VFNwb29sICAgICpidHNwb29sID0gcGFsbG9jMF9vYmplY3QoQlRTcG9vbCk7CiAJU29ydENv b3JkaW5hdGUgY29vcmRpbmF0ZSA9IE5VTEw7CiAJZG91YmxlCQlyZWx0dXBsZXMgPSAwOwog CkBAIC0zOTksNyArMzk5LDcgQEAgX2J0X3Nwb29sc19oZWFwc2NhbihSZWxhdGlvbiBoZWFw LCBSZWxhdGlvbiBpbmRleCwgQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLAogCSAqLwogCWlm IChidWlsZHN0YXRlLT5idGxlYWRlcikKIAl7Ci0JCWNvb3JkaW5hdGUgPSAoU29ydENvb3Jk aW5hdGUpIHBhbGxvYzAoc2l6ZW9mKFNvcnRDb29yZGluYXRlRGF0YSkpOworCQljb29yZGlu YXRlID0gKFNvcnRDb29yZGluYXRlKSBwYWxsb2MwX29iamVjdChTb3J0Q29vcmRpbmF0ZURh dGEpOwogCQljb29yZGluYXRlLT5pc1dvcmtlciA9IGZhbHNlOwogCQljb29yZGluYXRlLT5u UGFydGljaXBhbnRzID0KIAkJCWJ1aWxkc3RhdGUtPmJ0bGVhZGVyLT5ucGFydGljaXBhbnR0 dXBsZXNvcnRzOwpAQCAtNDQwLDcgKzQ0MCw3IEBAIF9idF9zcG9vbHNfaGVhcHNjYW4oUmVs YXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsIEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwK IAkgKi8KIAlpZiAoaW5kZXhJbmZvLT5paV9VbmlxdWUpCiAJewotCQlCVFNwb29sICAgICpi dHNwb29sMiA9IChCVFNwb29sICopIHBhbGxvYzAoc2l6ZW9mKEJUU3Bvb2wpKTsKKwkJQlRT cG9vbCAgICAqYnRzcG9vbDIgPSBwYWxsb2MwX29iamVjdChCVFNwb29sKTsKIAkJU29ydENv b3JkaW5hdGUgY29vcmRpbmF0ZTIgPSBOVUxMOwogCiAJCS8qIEluaXRpYWxpemUgc2Vjb25k YXJ5IHNwb29sICovCkBAIC00NTcsNyArNDU3LDcgQEAgX2J0X3Nwb29sc19oZWFwc2NhbihS ZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwgQlRCdWlsZFN0YXRlICpidWlsZHN0YXRl LAogCQkJICogdHVwbGVzb3J0X2JlZ2luX2luZGV4X2J0cmVlKCkgYWJvdXQgdGhlIGJhc2lj IGhpZ2ggbGV2ZWwKIAkJCSAqIGNvb3JkaW5hdGlvbiBvZiBhIHBhcmFsbGVsIHNvcnQuCiAJ CQkgKi8KLQkJCWNvb3JkaW5hdGUyID0gKFNvcnRDb29yZGluYXRlKSBwYWxsb2MwKHNpemVv ZihTb3J0Q29vcmRpbmF0ZURhdGEpKTsKKwkJCWNvb3JkaW5hdGUyID0gKFNvcnRDb29yZGlu YXRlKSBwYWxsb2MwX29iamVjdChTb3J0Q29vcmRpbmF0ZURhdGEpOwogCQkJY29vcmRpbmF0 ZTItPmlzV29ya2VyID0gZmFsc2U7CiAJCQljb29yZGluYXRlMi0+blBhcnRpY2lwYW50cyA9 CiAJCQkJYnVpbGRzdGF0ZS0+YnRsZWFkZXItPm5wYXJ0aWNpcGFudHR1cGxlc29ydHM7CkBA IC02NDgsNyArNjQ4LDcgQEAgX2J0X2Jsd3JpdGVwYWdlKEJUV3JpdGVTdGF0ZSAqd3N0YXRl LCBCdWxrV3JpdGVCdWZmZXIgYnVmLCBCbG9ja051bWJlciBibGtubykKIHN0YXRpYyBCVFBh Z2VTdGF0ZSAqCiBfYnRfcGFnZXN0YXRlKEJUV3JpdGVTdGF0ZSAqd3N0YXRlLCB1aW50MzIg bGV2ZWwpCiB7Ci0JQlRQYWdlU3RhdGUgKnN0YXRlID0gKEJUUGFnZVN0YXRlICopIHBhbGxv YzAoc2l6ZW9mKEJUUGFnZVN0YXRlKSk7CisJQlRQYWdlU3RhdGUgKnN0YXRlID0gcGFsbG9j MF9vYmplY3QoQlRQYWdlU3RhdGUpOwogCiAJLyogY3JlYXRlIGluaXRpYWwgcGFnZSBmb3Ig bGV2ZWwgKi8KIAlzdGF0ZS0+YnRwc19idWYgPSBfYnRfYmxuZXdwYWdlKHdzdGF0ZSwgbGV2 ZWwpOwpAQCAtMTAwMiw3ICsxMDAyLDcgQEAgX2J0X2J1aWxkYWRkKEJUV3JpdGVTdGF0ZSAq d3N0YXRlLCBCVFBhZ2VTdGF0ZSAqc3RhdGUsIEluZGV4VHVwbGUgaXR1cCwKIAlpZiAobGFz dF9vZmYgPT0gUF9ISUtFWSkKIAl7CiAJCUFzc2VydChzdGF0ZS0+YnRwc19sb3drZXkgPT0g TlVMTCk7Ci0JCXN0YXRlLT5idHBzX2xvd2tleSA9IHBhbGxvYzAoc2l6ZW9mKEluZGV4VHVw bGVEYXRhKSk7CisJCXN0YXRlLT5idHBzX2xvd2tleSA9IHBhbGxvYzBfb2JqZWN0KEluZGV4 VHVwbGVEYXRhKTsKIAkJc3RhdGUtPmJ0cHNfbG93a2V5LT50X2luZm8gPSBzaXplb2YoSW5k ZXhUdXBsZURhdGEpOwogCQlCVHJlZVR1cGxlU2V0TkF0dHMoc3RhdGUtPmJ0cHNfbG93a2V5 LCAwLCBmYWxzZSk7CiAJfQpAQCAtMTE2NCw3ICsxMTY0LDcgQEAgX2J0X2xvYWQoQlRXcml0 ZVN0YXRlICp3c3RhdGUsIEJUU3Bvb2wgKmJ0c3Bvb2wsIEJUU3Bvb2wgKmJ0c3Bvb2wyKQog CQlpdHVwMiA9IHR1cGxlc29ydF9nZXRpbmRleHR1cGxlKGJ0c3Bvb2wyLT5zb3J0c3RhdGUs IHRydWUpOwogCiAJCS8qIFByZXBhcmUgU29ydFN1cHBvcnQgZGF0YSBmb3IgZWFjaCBjb2x1 bW4gKi8KLQkJc29ydEtleXMgPSAoU29ydFN1cHBvcnQpIHBhbGxvYzAoa2V5c3ogKiBzaXpl b2YoU29ydFN1cHBvcnREYXRhKSk7CisJCXNvcnRLZXlzID0gKFNvcnRTdXBwb3J0KSBwYWxs b2MwX2FycmF5KFNvcnRTdXBwb3J0RGF0YSwga2V5c3opOwogCiAJCWZvciAoaSA9IDA7IGkg PCBrZXlzejsgaSsrKQogCQl7CkBAIC0xMjY2LDcgKzEyNjYsNyBAQCBfYnRfbG9hZChCVFdy aXRlU3RhdGUgKndzdGF0ZSwgQlRTcG9vbCAqYnRzcG9vbCwgQlRTcG9vbCAqYnRzcG9vbDIp CiAJCS8qIG1lcmdlIGlzIHVubmVjZXNzYXJ5LCBkZWR1cGxpY2F0ZSBpbnRvIHBvc3Rpbmcg bGlzdHMgKi8KIAkJQlREZWR1cFN0YXRlIGRzdGF0ZTsKIAotCQlkc3RhdGUgPSAoQlREZWR1 cFN0YXRlKSBwYWxsb2Moc2l6ZW9mKEJURGVkdXBTdGF0ZURhdGEpKTsKKwkJZHN0YXRlID0g KEJURGVkdXBTdGF0ZSkgcGFsbG9jX29iamVjdChCVERlZHVwU3RhdGVEYXRhKTsKIAkJZHN0 YXRlLT5kZWR1cGxpY2F0ZSA9IHRydWU7IC8qIHVudXNlZCAqLwogCQlkc3RhdGUtPm5tYXhp dGVtcyA9IDA7CS8qIHVudXNlZCAqLwogCQlkc3RhdGUtPm1heHBvc3RpbmdzaXplID0gMDsg Lyogc2V0IGxhdGVyICovCkBAIC0xNDA0LDcgKzE0MDQsNyBAQCBfYnRfYmVnaW5fcGFyYWxs ZWwoQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLCBib29sIGlzY29uY3VycmVudCwgaW50IHJl cXVlc3QpCiAJU2hhcmVkc29ydCAqc2hhcmVkc29ydDsKIAlTaGFyZWRzb3J0ICpzaGFyZWRz b3J0MjsKIAlCVFNwb29sICAgICpidHNwb29sID0gYnVpbGRzdGF0ZS0+c3Bvb2w7Ci0JQlRM ZWFkZXIgICAqYnRsZWFkZXIgPSAoQlRMZWFkZXIgKikgcGFsbG9jMChzaXplb2YoQlRMZWFk ZXIpKTsKKwlCVExlYWRlciAgICpidGxlYWRlciA9IHBhbGxvYzBfb2JqZWN0KEJUTGVhZGVy KTsKIAlXYWxVc2FnZSAgICp3YWx1c2FnZTsKIAlCdWZmZXJVc2FnZSAqYnVmZmVydXNhZ2U7 CiAJYm9vbAkJbGVhZGVycGFydGljaXBhdGVzID0gdHJ1ZTsKQEAgLTE2OTMsNyArMTY5Myw3 IEBAIF9idF9sZWFkZXJfcGFydGljaXBhdGVfYXNfd29ya2VyKEJUQnVpbGRTdGF0ZSAqYnVp bGRzdGF0ZSkKIAlpbnQJCQlzb3J0bWVtOwogCiAJLyogQWxsb2NhdGUgbWVtb3J5IGFuZCBp bml0aWFsaXplIHByaXZhdGUgc3Bvb2wgKi8KLQlsZWFkZXJ3b3JrZXIgPSAoQlRTcG9vbCAq KSBwYWxsb2MwKHNpemVvZihCVFNwb29sKSk7CisJbGVhZGVyd29ya2VyID0gcGFsbG9jMF9v YmplY3QoQlRTcG9vbCk7CiAJbGVhZGVyd29ya2VyLT5oZWFwID0gYnVpbGRzdGF0ZS0+c3Bv b2wtPmhlYXA7CiAJbGVhZGVyd29ya2VyLT5pbmRleCA9IGJ1aWxkc3RhdGUtPnNwb29sLT5p bmRleDsKIAlsZWFkZXJ3b3JrZXItPmlzdW5pcXVlID0gYnVpbGRzdGF0ZS0+c3Bvb2wtPmlz dW5pcXVlOwpAQCAtMTcwNSw3ICsxNzA1LDcgQEAgX2J0X2xlYWRlcl9wYXJ0aWNpcGF0ZV9h c193b3JrZXIoQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlKQogCWVsc2UKIAl7CiAJCS8qIEFs bG9jYXRlIG1lbW9yeSBmb3Igd29ya2VyJ3Mgb3duIHByaXZhdGUgc2Vjb25kYXJ5IHNwb29s ICovCi0JCWxlYWRlcndvcmtlcjIgPSAoQlRTcG9vbCAqKSBwYWxsb2MwKHNpemVvZihCVFNw b29sKSk7CisJCWxlYWRlcndvcmtlcjIgPSBwYWxsb2MwX29iamVjdChCVFNwb29sKTsKIAog CQkvKiBJbml0aWFsaXplIHdvcmtlcidzIG93biBzZWNvbmRhcnkgc3Bvb2wgKi8KIAkJbGVh ZGVyd29ya2VyMi0+aGVhcCA9IGxlYWRlcndvcmtlci0+aGVhcDsKQEAgLTE3OTYsNyArMTc5 Niw3IEBAIF9idF9wYXJhbGxlbF9idWlsZF9tYWluKGRzbV9zZWdtZW50ICpzZWcsIHNobV90 b2MgKnRvYykKIAlpbmRleFJlbCA9IGluZGV4X29wZW4oYnRzaGFyZWQtPmluZGV4cmVsaWQs IGluZGV4TG9ja21vZGUpOwogCiAJLyogSW5pdGlhbGl6ZSB3b3JrZXIncyBvd24gc3Bvb2wg Ki8KLQlidHNwb29sID0gKEJUU3Bvb2wgKikgcGFsbG9jMChzaXplb2YoQlRTcG9vbCkpOwor CWJ0c3Bvb2wgPSBwYWxsb2MwX29iamVjdChCVFNwb29sKTsKIAlidHNwb29sLT5oZWFwID0g aGVhcFJlbDsKIAlidHNwb29sLT5pbmRleCA9IGluZGV4UmVsOwogCWJ0c3Bvb2wtPmlzdW5p cXVlID0gYnRzaGFyZWQtPmlzdW5pcXVlOwpAQCAtMTgxMyw3ICsxODEzLDcgQEAgX2J0X3Bh cmFsbGVsX2J1aWxkX21haW4oZHNtX3NlZ21lbnQgKnNlZywgc2htX3RvYyAqdG9jKQogCWVs c2UKIAl7CiAJCS8qIEFsbG9jYXRlIG1lbW9yeSBmb3Igd29ya2VyJ3Mgb3duIHByaXZhdGUg c2Vjb25kYXJ5IHNwb29sICovCi0JCWJ0c3Bvb2wyID0gKEJUU3Bvb2wgKikgcGFsbG9jMChz aXplb2YoQlRTcG9vbCkpOworCQlidHNwb29sMiA9IHBhbGxvYzBfb2JqZWN0KEJUU3Bvb2wp OwogCiAJCS8qIEluaXRpYWxpemUgd29ya2VyJ3Mgb3duIHNlY29uZGFyeSBzcG9vbCAqLwog CQlidHNwb29sMi0+aGVhcCA9IGJ0c3Bvb2wtPmhlYXA7CkBAIC0xODc0LDcgKzE4NzQsNyBA QCBfYnRfcGFyYWxsZWxfc2Nhbl9hbmRfc29ydChCVFNwb29sICpidHNwb29sLCBCVFNwb29s ICpidHNwb29sMiwKIAlJbmRleEluZm8gICppbmRleEluZm87CiAKIAkvKiBJbml0aWFsaXpl IGxvY2FsIHR1cGxlc29ydCBjb29yZGluYXRpb24gc3RhdGUgKi8KLQljb29yZGluYXRlID0g cGFsbG9jMChzaXplb2YoU29ydENvb3JkaW5hdGVEYXRhKSk7CisJY29vcmRpbmF0ZSA9IHBh bGxvYzBfb2JqZWN0KFNvcnRDb29yZGluYXRlRGF0YSk7CiAJY29vcmRpbmF0ZS0+aXNXb3Jr ZXIgPSB0cnVlOwogCWNvb3JkaW5hdGUtPm5QYXJ0aWNpcGFudHMgPSAtMTsKIAljb29yZGlu YXRlLT5zaGFyZWRzb3J0ID0gc2hhcmVkc29ydDsKQEAgLTE5MDEsNyArMTkwMSw3IEBAIF9i dF9wYXJhbGxlbF9zY2FuX2FuZF9zb3J0KEJUU3Bvb2wgKmJ0c3Bvb2wsIEJUU3Bvb2wgKmJ0 c3Bvb2wyLAogCQkgKiB3b3JrZXIpLiAgV29ya2VyIHByb2Nlc3NlcyBhcmUgZ2VuZXJhbGx5 IHBlcm1pdHRlZCB0byBhbGxvY2F0ZQogCQkgKiB3b3JrX21lbSBpbmRlcGVuZGVudGx5Lgog CQkgKi8KLQkJY29vcmRpbmF0ZTIgPSBwYWxsb2MwKHNpemVvZihTb3J0Q29vcmRpbmF0ZURh dGEpKTsKKwkJY29vcmRpbmF0ZTIgPSBwYWxsb2MwX29iamVjdChTb3J0Q29vcmRpbmF0ZURh dGEpOwogCQljb29yZGluYXRlMi0+aXNXb3JrZXIgPSB0cnVlOwogCQljb29yZGluYXRlMi0+ blBhcnRpY2lwYW50cyA9IC0xOwogCQljb29yZGluYXRlMi0+c2hhcmVkc29ydCA9IHNoYXJl ZHNvcnQyOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzcGxp dGxvYy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzcGxpdGxvYy5jCmluZGV4 IGYwMDgyZjg4Yzc2Li42NTFhYjAxMzAyNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNj ZXNzL25idHJlZS9uYnRzcGxpdGxvYy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRy ZWUvbmJ0c3BsaXRsb2MuYwpAQCAtMTk3LDcgKzE5Nyw3IEBAIF9idF9maW5kc3BsaXRsb2Mo UmVsYXRpb24gcmVsLAogCSAqIGJldHdlZW4gdHVwbGVzIHdpbGwgYmUgbGVnYWwpLgogCSAq LwogCXN0YXRlLm1heHNwbGl0cyA9IG1heG9mZjsKLQlzdGF0ZS5zcGxpdHMgPSBwYWxsb2Mo c2l6ZW9mKFNwbGl0UG9pbnQpICogc3RhdGUubWF4c3BsaXRzKTsKKwlzdGF0ZS5zcGxpdHMg PSBwYWxsb2NfYXJyYXkoU3BsaXRQb2ludCwgc3RhdGUubWF4c3BsaXRzKTsKIAlzdGF0ZS5u c3BsaXRzID0gMDsKIAogCS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0 cmVlL25idHhsb2cuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0eGxvZy5jCmlu ZGV4IGQ0YTI2ZGUwNmEzLi5kYmU2N2MxNjZmZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv YWNjZXNzL25idHJlZS9uYnR4bG9nLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJl ZS9uYnR4bG9nLmMKQEAgLTQ2OSw3ICs0NjksNyBAQCBidHJlZV94bG9nX2RlZHVwKFhMb2dS ZWFkZXJTdGF0ZSAqcmVjb3JkKQogCQlCVERlZHVwSW50ZXJ2YWwgKmludGVydmFsczsKIAkJ UGFnZQkJbmV3cGFnZTsKIAotCQlzdGF0ZSA9IChCVERlZHVwU3RhdGUpIHBhbGxvYyhzaXpl b2YoQlREZWR1cFN0YXRlRGF0YSkpOworCQlzdGF0ZSA9IHBhbGxvY19vYmplY3QoQlREZWR1 cFN0YXRlRGF0YSk7CiAJCXN0YXRlLT5kZWR1cGxpY2F0ZSA9IHRydWU7CS8qIHVudXNlZCAq LwogCQlzdGF0ZS0+bm1heGl0ZW1zID0gMDsJLyogdW51c2VkICovCiAJCS8qIENvbnNlcnZh dGl2ZWx5IHVzZSBsYXJnZXIgbWF4cG9zdGluZ3NpemUgdGhhbiBwcmltYXJ5ICovCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ2RvaW5zZXJ0LmMgYi9zcmMv YmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ2RvaW5zZXJ0LmMKaW5kZXggNGVhZGI1MTg3NzYu LjFlMWU2MWQyMDQ0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3Nw Z2RvaW5zZXJ0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGdkb2luc2Vy dC5jCkBAIC04OSw3ICs4OSw3IEBAIGFkZE5vZGUoU3BHaXN0U3RhdGUgKnN0YXRlLCBTcEdp c3RJbm5lclR1cGxlIHR1cGxlLCBEYXR1bSBsYWJlbCwgaW50IG9mZnNldCkKIAllbHNlIGlm IChvZmZzZXQgPiB0dXBsZS0+bk5vZGVzKQogCQllbG9nKEVSUk9SLCAiaW52YWxpZCBvZmZz ZXQgZm9yIGFkZGluZyBub2RlIHRvIFNQR2lTVCBpbm5lciB0dXBsZSIpOwogCi0Jbm9kZXMg PSBwYWxsb2Moc2l6ZW9mKFNwR2lzdE5vZGVUdXBsZSkgKiAodHVwbGUtPm5Ob2RlcyArIDEp KTsKKwlub2RlcyA9IHBhbGxvY19hcnJheShTcEdpc3ROb2RlVHVwbGUsIHR1cGxlLT5uTm9k ZXMgKyAxKTsKIAlTR0lUSVRFUkFURSh0dXBsZSwgaSwgbm9kZSkKIAl7CiAJCWlmIChpIDwg b2Zmc2V0KQpAQCAtNDA5LDggKzQwOSw4IEBAIG1vdmVMZWFmcyhSZWxhdGlvbiBpbmRleCwg U3BHaXN0U3RhdGUgKnN0YXRlLAogCiAJLyogTG9jYXRlIHRoZSB0dXBsZXMgdG8gYmUgbW92 ZWQsIGFuZCBjb3VudCB1cCB0aGUgc3BhY2UgbmVlZGVkICovCiAJaSA9IFBhZ2VHZXRNYXhP ZmZzZXROdW1iZXIoY3VycmVudC0+cGFnZSk7Ci0JdG9EZWxldGUgPSAoT2Zmc2V0TnVtYmVy ICopIHBhbGxvYyhzaXplb2YoT2Zmc2V0TnVtYmVyKSAqIGkpOwotCXRvSW5zZXJ0ID0gKE9m ZnNldE51bWJlciAqKSBwYWxsb2Moc2l6ZW9mKE9mZnNldE51bWJlcikgKiAoaSArIDEpKTsK Kwl0b0RlbGV0ZSA9IHBhbGxvY19hcnJheShPZmZzZXROdW1iZXIsIGkpOworCXRvSW5zZXJ0 ID0gcGFsbG9jX2FycmF5KE9mZnNldE51bWJlciwgaSArIDEpOwogCiAJc2l6ZSA9IG5ld0xl YWZUdXBsZS0+c2l6ZSArIHNpemVvZihJdGVtSWREYXRhKTsKIApAQCAtNjM0LDcgKzYzNCw3 IEBAIGNoZWNrQWxsVGhlU2FtZShzcGdQaWNrU3BsaXRJbiAqaW4sIHNwZ1BpY2tTcGxpdE91 dCAqb3V0LCBib29sIHRvb0JpZywKIAl7CiAJCURhdHVtCQl0aGVMYWJlbCA9IG91dC0+bm9k ZUxhYmVsc1t0aGVOb2RlXTsKIAotCQlvdXQtPm5vZGVMYWJlbHMgPSAoRGF0dW0gKikgcGFs bG9jKHNpemVvZihEYXR1bSkgKiBvdXQtPm5Ob2Rlcyk7CisJCW91dC0+bm9kZUxhYmVscyA9 IHBhbGxvY19hcnJheShEYXR1bSwgb3V0LT5uTm9kZXMpOwogCQlmb3IgKGkgPSAwOyBpIDwg b3V0LT5uTm9kZXM7IGkrKykKIAkJCW91dC0+bm9kZUxhYmVsc1tpXSA9IHRoZUxhYmVsOwog CX0KQEAgLTcxNywxMiArNzE3LDEyIEBAIGRvUGlja1NwbGl0KFJlbGF0aW9uIGluZGV4LCBT cEdpc3RTdGF0ZSAqc3RhdGUsCiAJICovCiAJbWF4ID0gUGFnZUdldE1heE9mZnNldE51bWJl cihjdXJyZW50LT5wYWdlKTsKIAluID0gbWF4ICsgMTsKLQlpbi5kYXR1bXMgPSAoRGF0dW0g KikgcGFsbG9jKHNpemVvZihEYXR1bSkgKiBuKTsKLQl0b0RlbGV0ZSA9IChPZmZzZXROdW1i ZXIgKikgcGFsbG9jKHNpemVvZihPZmZzZXROdW1iZXIpICogbik7Ci0JdG9JbnNlcnQgPSAo T2Zmc2V0TnVtYmVyICopIHBhbGxvYyhzaXplb2YoT2Zmc2V0TnVtYmVyKSAqIG4pOwotCW9s ZExlYWZzID0gKFNwR2lzdExlYWZUdXBsZSAqKSBwYWxsb2Moc2l6ZW9mKFNwR2lzdExlYWZU dXBsZSkgKiBuKTsKLQluZXdMZWFmcyA9IChTcEdpc3RMZWFmVHVwbGUgKikgcGFsbG9jKHNp emVvZihTcEdpc3RMZWFmVHVwbGUpICogbik7Ci0JbGVhZlBhZ2VTZWxlY3QgPSAodWludDgg KikgcGFsbG9jKHNpemVvZih1aW50OCkgKiBuKTsKKwlpbi5kYXR1bXMgPSBwYWxsb2NfYXJy YXkoRGF0dW0sIG4pOworCXRvRGVsZXRlID0gcGFsbG9jX2FycmF5KE9mZnNldE51bWJlciwg bik7CisJdG9JbnNlcnQgPSBwYWxsb2NfYXJyYXkoT2Zmc2V0TnVtYmVyLCBuKTsKKwlvbGRM ZWFmcyA9IHBhbGxvY19hcnJheShTcEdpc3RMZWFmVHVwbGUsIG4pOworCW5ld0xlYWZzID0g cGFsbG9jX2FycmF5KFNwR2lzdExlYWZUdXBsZSwgbik7CisJbGVhZlBhZ2VTZWxlY3QgPSBw YWxsb2NfYXJyYXkodWludDgsIG4pOwogCiAJU1RPUkVfU1RBVEUoc3RhdGUsIHhscmVjLnN0 YXRlU3JjKTsKIApAQCAtODU4LDcgKzg1OCw3IEBAIGRvUGlja1NwbGl0KFJlbGF0aW9uIGlu ZGV4LCBTcEdpc3RTdGF0ZSAqc3RhdGUsCiAJCW91dC5oYXNQcmVmaXggPSBmYWxzZTsKIAkJ b3V0Lm5Ob2RlcyA9IDE7CiAJCW91dC5ub2RlTGFiZWxzID0gTlVMTDsKLQkJb3V0Lm1hcFR1 cGxlc1RvTm9kZXMgPSBwYWxsb2MwKHNpemVvZihpbnQpICogaW4ublR1cGxlcyk7CisJCW91 dC5tYXBUdXBsZXNUb05vZGVzID0gcGFsbG9jMF9hcnJheShpbnQsIGluLm5UdXBsZXMpOwog CiAJCS8qCiAJCSAqIEZvcm0gbmV3IGxlYWYgdHVwbGVzIGFuZCBjb3VudCB1cCB0aGUgdG90 YWwgc3BhY2UgbmVlZGVkLgpAQCAtOTE0LDggKzkxNCw4IEBAIGRvUGlja1NwbGl0KFJlbGF0 aW9uIGluZGV4LCBTcEdpc3RTdGF0ZSAqc3RhdGUsCiAJICogb3V0Lm5Ob2RlcyB3aXRoIGEg dmFsdWUgbGFyZ2VyIHRoYW4gdGhlIG51bWJlciBvZiB0dXBsZXMgb24gdGhlIGlucHV0CiAJ ICogcGFnZSwgd2UgY2FuJ3QgYWxsb2NhdGUgdGhlc2UgYXJyYXlzIGJlZm9yZSBoZXJlLgog CSAqLwotCW5vZGVzID0gKFNwR2lzdE5vZGVUdXBsZSAqKSBwYWxsb2Moc2l6ZW9mKFNwR2lz dE5vZGVUdXBsZSkgKiBvdXQubk5vZGVzKTsKLQlsZWFmU2l6ZXMgPSAoaW50ICopIHBhbGxv YzAoc2l6ZW9mKGludCkgKiBvdXQubk5vZGVzKTsKKwlub2RlcyA9IHBhbGxvY19hcnJheShT cEdpc3ROb2RlVHVwbGUsIG91dC5uTm9kZXMpOworCWxlYWZTaXplcyA9IHBhbGxvYzBfYXJy YXkoaW50LCBvdXQubk5vZGVzKTsKIAogCS8qCiAJICogRm9ybSBub2RlcyBvZiBpbm5lciB0 dXBsZSBhbmQgaW5uZXIgdHVwbGUgaXRzZWxmCkBAIC0xMDU0LDcgKzEwNTQsNyBAQCBkb1Bp Y2tTcGxpdChSZWxhdGlvbiBpbmRleCwgU3BHaXN0U3RhdGUgKnN0YXRlLAogCQkgKiBkbyBz bywgZXZlbiBpZiB0b3RhbExlYWZTaXplcyBpcyBsZXNzIHRoYW4gdGhlIGF2YWlsYWJsZSBz cGFjZSwKIAkJICogYmVjYXVzZSB3ZSBjYW4ndCBzcGxpdCBhIGdyb3VwIGFjcm9zcyBwYWdl cy4KIAkJICovCi0JCW5vZGVQYWdlU2VsZWN0ID0gKHVpbnQ4ICopIHBhbGxvYyhzaXplb2Yo dWludDgpICogb3V0Lm5Ob2Rlcyk7CisJCW5vZGVQYWdlU2VsZWN0ID0gcGFsbG9jX2FycmF5 KHVpbnQ4LCBvdXQubk5vZGVzKTsKIAogCQljdXJzcGFjZSA9IGN1cnJlbnRGcmVlU3BhY2U7 CiAJCW5ld3NwYWNlID0gUGFnZUdldEV4YWN0RnJlZVNwYWNlKEJ1ZmZlckdldFBhZ2UobmV3 TGVhZkJ1ZmZlcikpOwpAQCAtMTc0MCw4ICsxNzQwLDcgQEAgc3BnU3BsaXROb2RlQWN0aW9u KFJlbGF0aW9uIGluZGV4LCBTcEdpc3RTdGF0ZSAqc3RhdGUsCiAJICogQ29uc3RydWN0IG5l dyBwcmVmaXggdHVwbGUgd2l0aCByZXF1ZXN0ZWQgbnVtYmVyIG9mIG5vZGVzLiAgV2UnbGwg ZmlsbAogCSAqIGluIHRoZSBjaGlsZE5vZGVOJ3RoIG5vZGUncyBkb3dubGluayBiZWxvdy4K IAkgKi8KLQlub2RlcyA9IChTcEdpc3ROb2RlVHVwbGUgKikgcGFsbG9jKHNpemVvZihTcEdp c3ROb2RlVHVwbGUpICoKLQkJCQkJCQkJCSAgIG91dC0+cmVzdWx0LnNwbGl0VHVwbGUucHJl Zml4Tk5vZGVzKTsKKwlub2RlcyA9IHBhbGxvY19hcnJheShTcEdpc3ROb2RlVHVwbGUsIG91 dC0+cmVzdWx0LnNwbGl0VHVwbGUucHJlZml4Tk5vZGVzKTsKIAogCWZvciAoaSA9IDA7IGkg PCBvdXQtPnJlc3VsdC5zcGxpdFR1cGxlLnByZWZpeE5Ob2RlczsgaSsrKQogCXsKQEAgLTE3 NjksNyArMTc2OCw3IEBAIHNwZ1NwbGl0Tm9kZUFjdGlvbihSZWxhdGlvbiBpbmRleCwgU3BH aXN0U3RhdGUgKnN0YXRlLAogCSAqIHNhbWUgbm9kZSBkYXR1bXMsIGJ1dCB3aXRoIHRoZSBw cmVmaXggc3BlY2lmaWVkIGJ5IHRoZSBwaWNrc3BsaXQKIAkgKiBmdW5jdGlvbi4KIAkgKi8K LQlub2RlcyA9IHBhbGxvYyhzaXplb2YoU3BHaXN0Tm9kZVR1cGxlKSAqIGlubmVyVHVwbGUt Pm5Ob2Rlcyk7CisJbm9kZXMgPSBwYWxsb2NfYXJyYXkoU3BHaXN0Tm9kZVR1cGxlLCBpbm5l clR1cGxlLT5uTm9kZXMpOwogCVNHSVRJVEVSQVRFKGlubmVyVHVwbGUsIGksIG5vZGUpCiAJ ewogCQlub2Rlc1tpXSA9IG5vZGU7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mv c3BnaXN0L3NwZ2luc2VydC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGdpbnNl cnQuYwppbmRleCA2YTYxZTA5M2ZhMC4uZGRhOTk3NTVmNjYgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BnaW5zZXJ0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL3NwZ2lzdC9zcGdpbnNlcnQuYwpAQCAtMTQwLDcgKzE0MCw3IEBAIHNwZ2J1aWxkKFJl bGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBJbmRleEluZm8gKmluZGV4SW5mbykKIAkJ CQkJCSAgdHJ1ZSk7CiAJfQogCi0JcmVzdWx0ID0gKEluZGV4QnVpbGRSZXN1bHQgKikgcGFs bG9jMChzaXplb2YoSW5kZXhCdWlsZFJlc3VsdCkpOworCXJlc3VsdCA9IHBhbGxvYzBfb2Jq ZWN0KEluZGV4QnVpbGRSZXN1bHQpOwogCXJlc3VsdC0+aGVhcF90dXBsZXMgPSByZWx0dXBs ZXM7CiAJcmVzdWx0LT5pbmRleF90dXBsZXMgPSBidWlsZHN0YXRlLmluZHR1cGxlczsKIApk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGdrZHRyZWVwcm9jLmMg Yi9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ2tkdHJlZXByb2MuYwppbmRleCBkNjk4 OTc1OWU1Zi4uZjAxNjdkNmZmYTYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9z cGdpc3Qvc3Bna2R0cmVlcHJvYy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qv c3Bna2R0cmVlcHJvYy5jCkBAIC0xMTQsNyArMTE0LDcgQEAgc3BnX2tkX3BpY2tzcGxpdChQ R19GVU5DVElPTl9BUkdTKQogCVNvcnRlZFBvaW50ICpzb3J0ZWQ7CiAJZG91YmxlCQljb29y ZDsKIAotCXNvcnRlZCA9IHBhbGxvYyhzaXplb2YoKnNvcnRlZCkgKiBpbi0+blR1cGxlcyk7 CisJc29ydGVkID0gcGFsbG9jX2FycmF5KFNvcnRlZFBvaW50LCBpbi0+blR1cGxlcyk7CiAJ Zm9yIChpID0gMDsgaSA8IGluLT5uVHVwbGVzOyBpKyspCiAJewogCQlzb3J0ZWRbaV0ucCA9 IERhdHVtR2V0UG9pbnRQKGluLT5kYXR1bXNbaV0pOwpAQCAtMTMyLDggKzEzMiw4IEBAIHNw Z19rZF9waWNrc3BsaXQoUEdfRlVOQ1RJT05fQVJHUykKIAlvdXQtPm5Ob2RlcyA9IDI7CiAJ b3V0LT5ub2RlTGFiZWxzID0gTlVMTDsJCS8qIHdlIGRvbid0IG5lZWQgbm9kZSBsYWJlbHMg Ki8KIAotCW91dC0+bWFwVHVwbGVzVG9Ob2RlcyA9IHBhbGxvYyhzaXplb2YoaW50KSAqIGlu LT5uVHVwbGVzKTsKLQlvdXQtPmxlYWZUdXBsZURhdHVtcyA9IHBhbGxvYyhzaXplb2YoRGF0 dW0pICogaW4tPm5UdXBsZXMpOworCW91dC0+bWFwVHVwbGVzVG9Ob2RlcyA9IHBhbGxvY19h cnJheShpbnQsIGluLT5uVHVwbGVzKTsKKwlvdXQtPmxlYWZUdXBsZURhdHVtcyA9IHBhbGxv Y19hcnJheShEYXR1bSwgaW4tPm5UdXBsZXMpOwogCiAJLyoKIAkgKiBOb3RlOiBwb2ludHMg dGhhdCBoYXZlIGNvb3JkaW5hdGVzIGV4YWN0bHkgZXF1YWwgdG8gY29vcmQgbWF5IGdldApA QCAtMjU5LDcgKzI1OSw3IEBAIHNwZ19rZF9pbm5lcl9jb25zaXN0ZW50KFBHX0ZVTkNUSU9O X0FSR1MpCiAJaWYgKCF3aGljaCkKIAkJUEdfUkVUVVJOX1ZPSUQoKTsKIAotCW91dC0+bm9k ZU51bWJlcnMgPSAoaW50ICopIHBhbGxvYyhzaXplb2YoaW50KSAqIDIpOworCW91dC0+bm9k ZU51bWJlcnMgPSBwYWxsb2NfYXJyYXkoaW50LCAyKTsKIAogCS8qCiAJICogV2hlbiBvcmRl cmluZyBzY2FuIGtleXMgYXJlIHNwZWNpZmllZCwgd2UndmUgdG8gY2FsY3VsYXRlIGRpc3Rh bmNlIGZvcgpAQCAtMjczLDggKzI3Myw4IEBAIHNwZ19rZF9pbm5lcl9jb25zaXN0ZW50KFBH X0ZVTkNUSU9OX0FSR1MpCiAJCUJPWAkJCWluZkFyZWE7CiAJCUJPWAkJICAgKmFyZWE7CiAK LQkJb3V0LT5kaXN0YW5jZXMgPSAoZG91YmxlICoqKSBwYWxsb2Moc2l6ZW9mKGRvdWJsZSAq KSAqIGluLT5uTm9kZXMpOwotCQlvdXQtPnRyYXZlcnNhbFZhbHVlcyA9ICh2b2lkICoqKSBw YWxsb2Moc2l6ZW9mKHZvaWQgKikgKiBpbi0+bk5vZGVzKTsKKwkJb3V0LT5kaXN0YW5jZXMg PSBwYWxsb2NfYXJyYXkoZG91YmxlICosIGluLT5uTm9kZXMpOworCQlvdXQtPnRyYXZlcnNh bFZhbHVlcyA9IHBhbGxvY19hcnJheSh2b2lkICosIGluLT5uTm9kZXMpOwogCiAJCWlmIChp bi0+bGV2ZWwgPT0gMCkKIAkJewpAQCAtMzM1LDcgKzMzNSw3IEBAIHNwZ19rZF9pbm5lcl9j b25zaXN0ZW50KFBHX0ZVTkNUSU9OX0FSR1MpCiAJfQogCiAJLyogU2V0IHVwIGxldmVsIGlu Y3JlbWVudHMsIHRvbyAqLwotCW91dC0+bGV2ZWxBZGRzID0gKGludCAqKSBwYWxsb2Moc2l6 ZW9mKGludCkgKiAyKTsKKwlvdXQtPmxldmVsQWRkcyA9IHBhbGxvY19hcnJheShpbnQsIDIp OwogCW91dC0+bGV2ZWxBZGRzWzBdID0gMTsKIAlvdXQtPmxldmVsQWRkc1sxXSA9IDE7CiAK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BncHJvYy5jIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGdwcm9jLmMKaW5kZXggNjYwMDA5MjkxZGEuLjA1 ZDU2MGI1YWQ5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3By b2MuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3Byb2MuYwpAQCAtNjQs NyArNjQsNyBAQCBzcGdfa2V5X29yZGVyYnlzX2Rpc3RhbmNlcyhEYXR1bSBrZXksIGJvb2wg aXNMZWFmLAogCQkJCQkJICAgU2NhbktleSBvcmRlcmJ5cywgaW50IG5vcmRlcmJ5cykKIHsK IAlpbnQJCQlza19udW07Ci0JZG91YmxlCSAgICpkaXN0YW5jZXMgPSAoZG91YmxlICopIHBh bGxvYyhub3JkZXJieXMgKiBzaXplb2YoZG91YmxlKSksCisJZG91YmxlCSAgICpkaXN0YW5j ZXMgPSBwYWxsb2NfYXJyYXkoZG91YmxlLCBub3JkZXJieXMpLAogCQkJICAgKmRpc3RhbmNl ID0gZGlzdGFuY2VzOwogCiAJZm9yIChza19udW0gPSAwOyBza19udW0gPCBub3JkZXJieXM7 ICsrc2tfbnVtLCArK29yZGVyYnlzLCArK2Rpc3RhbmNlKQpAQCAtODEsNyArODEsNyBAQCBz cGdfa2V5X29yZGVyYnlzX2Rpc3RhbmNlcyhEYXR1bSBrZXksIGJvb2wgaXNMZWFmLAogQk9Y ICoKIGJveF9jb3B5KEJPWCAqb3JpZykKIHsKLQlCT1gJCSAgICpyZXN1bHQgPSBwYWxsb2Mo c2l6ZW9mKEJPWCkpOworCUJPWAkJICAgKnJlc3VsdCA9IHBhbGxvY19vYmplY3QoQk9YKTsK IAogCSpyZXN1bHQgPSAqb3JpZzsKIAlyZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGdxdWFkdHJlZXByb2MuYyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy9zcGdpc3Qvc3BncXVhZHRyZWVwcm9jLmMKaW5kZXggM2U4Y2ZhMTcwOWEuLjc1 ZmZiMDljYTVhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3F1 YWR0cmVlcHJvYy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BncXVhZHRy ZWVwcm9jLmMKQEAgLTgyLDcgKzgyLDcgQEAgZ2V0UXVhZHJhbnQoUG9pbnQgKmNlbnRyb2lk LCBQb2ludCAqdHN0KQogc3RhdGljIEJPWCAqCiBnZXRRdWFkcmFudEFyZWEoQk9YICpiYm94 LCBQb2ludCAqY2VudHJvaWQsIGludCBxdWFkcmFudCkKIHsKLQlCT1gJCSAgICpyZXN1bHQg PSAoQk9YICopIHBhbGxvYyhzaXplb2YoQk9YKSk7CisJQk9YCQkgICAqcmVzdWx0ID0gcGFs bG9jX29iamVjdChCT1gpOwogCiAJc3dpdGNoIChxdWFkcmFudCkKIAl7CkBAIC0xNzcsMTEg KzE3NywxMSBAQCBzcGdfcXVhZF9waWNrc3BsaXQoUEdfRlVOQ1RJT05fQVJHUykKIAkvKiBV c2UgdGhlIG1lZGlhbiB2YWx1ZXMgb2YgeCBhbmQgeSBhcyB0aGUgY2VudHJvaWQgcG9pbnQg Ki8KIAlQb2ludAkgICoqc29ydGVkOwogCi0Jc29ydGVkID0gcGFsbG9jKHNpemVvZigqc29y dGVkKSAqIGluLT5uVHVwbGVzKTsKKwlzb3J0ZWQgPSBwYWxsb2NfYXJyYXkoUG9pbnQgKiwg aW4tPm5UdXBsZXMpOwogCWZvciAoaSA9IDA7IGkgPCBpbi0+blR1cGxlczsgaSsrKQogCQlz b3J0ZWRbaV0gPSBEYXR1bUdldFBvaW50UChpbi0+ZGF0dW1zW2ldKTsKIAotCWNlbnRyb2lk ID0gcGFsbG9jKHNpemVvZigqY2VudHJvaWQpKTsKKwljZW50cm9pZCA9IHBhbGxvY19vYmpl Y3QoUG9pbnQpOwogCiAJcXNvcnQoc29ydGVkLCBpbi0+blR1cGxlcywgc2l6ZW9mKCpzb3J0 ZWQpLCB4X2NtcCk7CiAJY2VudHJvaWQtPnggPSBzb3J0ZWRbaW4tPm5UdXBsZXMgPj4gMV0t Png7CkBAIC0xODksNyArMTg5LDcgQEAgc3BnX3F1YWRfcGlja3NwbGl0KFBHX0ZVTkNUSU9O X0FSR1MpCiAJY2VudHJvaWQtPnkgPSBzb3J0ZWRbaW4tPm5UdXBsZXMgPj4gMV0tPnk7CiAj ZWxzZQogCS8qIFVzZSB0aGUgYXZlcmFnZSB2YWx1ZXMgb2YgeCBhbmQgeSBhcyB0aGUgY2Vu dHJvaWQgcG9pbnQgKi8KLQljZW50cm9pZCA9IHBhbGxvYzAoc2l6ZW9mKCpjZW50cm9pZCkp OworCWNlbnRyb2lkID0gcGFsbG9jMF9vYmplY3QoUG9pbnQpOwogCiAJZm9yIChpID0gMDsg aSA8IGluLT5uVHVwbGVzOyBpKyspCiAJewpAQCAtMjA3LDggKzIwNyw4IEBAIHNwZ19xdWFk X3BpY2tzcGxpdChQR19GVU5DVElPTl9BUkdTKQogCW91dC0+bk5vZGVzID0gNDsKIAlvdXQt Pm5vZGVMYWJlbHMgPSBOVUxMOwkJLyogd2UgZG9uJ3QgbmVlZCBub2RlIGxhYmVscyAqLwog Ci0Jb3V0LT5tYXBUdXBsZXNUb05vZGVzID0gcGFsbG9jKHNpemVvZihpbnQpICogaW4tPm5U dXBsZXMpOwotCW91dC0+bGVhZlR1cGxlRGF0dW1zID0gcGFsbG9jKHNpemVvZihEYXR1bSkg KiBpbi0+blR1cGxlcyk7CisJb3V0LT5tYXBUdXBsZXNUb05vZGVzID0gcGFsbG9jX2FycmF5 KGludCwgaW4tPm5UdXBsZXMpOworCW91dC0+bGVhZlR1cGxlRGF0dW1zID0gcGFsbG9jX2Fy cmF5KERhdHVtLCBpbi0+blR1cGxlcyk7CiAKIAlmb3IgKGkgPSAwOyBpIDwgaW4tPm5UdXBs ZXM7IGkrKykKIAl7CkBAIC0yNDYsOCArMjQ2LDggQEAgc3BnX3F1YWRfaW5uZXJfY29uc2lz dGVudChQR19GVU5DVElPTl9BUkdTKQogCSAqLwogCWlmIChpbi0+bm9yZGVyYnlzID4gMCkK IAl7Ci0JCW91dC0+ZGlzdGFuY2VzID0gKGRvdWJsZSAqKikgcGFsbG9jKHNpemVvZihkb3Vi bGUgKikgKiBpbi0+bk5vZGVzKTsKLQkJb3V0LT50cmF2ZXJzYWxWYWx1ZXMgPSAodm9pZCAq KikgcGFsbG9jKHNpemVvZih2b2lkICopICogaW4tPm5Ob2Rlcyk7CisJCW91dC0+ZGlzdGFu Y2VzID0gcGFsbG9jX2FycmF5KGRvdWJsZSAqLCBpbi0+bk5vZGVzKTsKKwkJb3V0LT50cmF2 ZXJzYWxWYWx1ZXMgPSBwYWxsb2NfYXJyYXkodm9pZCAqLCBpbi0+bk5vZGVzKTsKIAogCQlp ZiAoaW4tPmxldmVsID09IDApCiAJCXsKQEAgLTI3MCw3ICsyNzAsNyBAQCBzcGdfcXVhZF9p bm5lcl9jb25zaXN0ZW50KFBHX0ZVTkNUSU9OX0FSR1MpCiAJewogCQkvKiBSZXBvcnQgdGhh dCBhbGwgbm9kZXMgc2hvdWxkIGJlIHZpc2l0ZWQgKi8KIAkJb3V0LT5uTm9kZXMgPSBpbi0+ bk5vZGVzOwotCQlvdXQtPm5vZGVOdW1iZXJzID0gKGludCAqKSBwYWxsb2Moc2l6ZW9mKGlu dCkgKiBpbi0+bk5vZGVzKTsKKwkJb3V0LT5ub2RlTnVtYmVycyA9IHBhbGxvY19hcnJheShp bnQsIGluLT5uTm9kZXMpOwogCQlmb3IgKGkgPSAwOyBpIDwgaW4tPm5Ob2RlczsgaSsrKQog CQl7CiAJCQlvdXQtPm5vZGVOdW1iZXJzW2ldID0gaTsKQEAgLTM2OCwxMiArMzY4LDEyIEBA IHNwZ19xdWFkX2lubmVyX2NvbnNpc3RlbnQoUEdfRlVOQ1RJT05fQVJHUykKIAkJCWJyZWFr OwkJCQkvKiBubyBuZWVkIHRvIGNvbnNpZGVyIHJlbWFpbmluZyBjb25kaXRpb25zICovCiAJ fQogCi0Jb3V0LT5sZXZlbEFkZHMgPSBwYWxsb2Moc2l6ZW9mKGludCkgKiA0KTsKKwlvdXQt PmxldmVsQWRkcyA9IHBhbGxvY19hcnJheShpbnQsIDQpOwogCWZvciAoaSA9IDA7IGkgPCA0 OyArK2kpCiAJCW91dC0+bGV2ZWxBZGRzW2ldID0gMTsKIAogCS8qIFdlIG11c3QgZGVzY2Vu ZCBpbnRvIHRoZSBxdWFkcmFudChzKSBpZGVudGlmaWVkIGJ5IHdoaWNoICovCi0Jb3V0LT5u b2RlTnVtYmVycyA9IChpbnQgKikgcGFsbG9jKHNpemVvZihpbnQpICogNCk7CisJb3V0LT5u b2RlTnVtYmVycyA9IHBhbGxvY19hcnJheShpbnQsIDQpOwogCW91dC0+bk5vZGVzID0gMDsK IAogCWZvciAoaSA9IDE7IGkgPD0gNDsgaSsrKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv YWNjZXNzL3NwZ2lzdC9zcGdzY2FuLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3Nw Z3NjYW4uYwppbmRleCAyNTg5MzA1MGM1OC4uMDViMzc5OWUwZTIgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3Bnc2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9zcGdpc3Qvc3Bnc2Nhbi5jCkBAIC0zMDksOSArMzA5LDkgQEAgc3BnYmVnaW5zY2Fu KFJlbGF0aW9uIHJlbCwgaW50IGtleXN6LCBpbnQgb3JkZXJieXN6KQogCiAJc2NhbiA9IFJl bGF0aW9uR2V0SW5kZXhTY2FuKHJlbCwga2V5c3osIG9yZGVyYnlzeik7CiAKLQlzbyA9IChT cEdpc3RTY2FuT3BhcXVlKSBwYWxsb2MwKHNpemVvZihTcEdpc3RTY2FuT3BhcXVlRGF0YSkp OworCXNvID0gcGFsbG9jMF9vYmplY3QoU3BHaXN0U2Nhbk9wYXF1ZURhdGEpOwogCWlmIChr ZXlzeiA+IDApCi0JCXNvLT5rZXlEYXRhID0gKFNjYW5LZXkpIHBhbGxvYyhzaXplb2YoU2Nh bktleURhdGEpICoga2V5c3opOworCQlzby0+a2V5RGF0YSA9IHBhbGxvY19hcnJheShTY2Fu S2V5RGF0YSwga2V5c3opOwogCWVsc2UKIAkJc28tPmtleURhdGEgPSBOVUxMOwogCWluaXRT cEdpc3RTdGF0ZSgmc28tPnN0YXRlLCBzY2FuLT5pbmRleFJlbGF0aW9uKTsKQEAgLTMzNiwx NiArMzM2LDEyIEBAIHNwZ2JlZ2luc2NhbihSZWxhdGlvbiByZWwsIGludCBrZXlzeiwgaW50 IG9yZGVyYnlzeikKIAlpZiAoc2Nhbi0+bnVtYmVyT2ZPcmRlckJ5cyA+IDApCiAJewogCQkv KiBUaGlzIHdpbGwgYmUgZmlsbGVkIGluIHNwZ3Jlc2NhbiwgYnV0IGFsbG9jYXRlIHRoZSBz cGFjZSBoZXJlICovCi0JCXNvLT5vcmRlckJ5VHlwZXMgPSAoT2lkICopCi0JCQlwYWxsb2Mo c2l6ZW9mKE9pZCkgKiBzY2FuLT5udW1iZXJPZk9yZGVyQnlzKTsKLQkJc28tPm5vbk51bGxP cmRlckJ5T2Zmc2V0cyA9IChpbnQgKikKLQkJCXBhbGxvYyhzaXplb2YoaW50KSAqIHNjYW4t Pm51bWJlck9mT3JkZXJCeXMpOworCQlzby0+b3JkZXJCeVR5cGVzID0gcGFsbG9jX2FycmF5 KE9pZCwgc2Nhbi0+bnVtYmVyT2ZPcmRlckJ5cyk7CisJCXNvLT5ub25OdWxsT3JkZXJCeU9m ZnNldHMgPSBwYWxsb2NfYXJyYXkoaW50LCBzY2FuLT5udW1iZXJPZk9yZGVyQnlzKTsKIAog CQkvKiBUaGVzZSBhcnJheXMgaGF2ZSBjb25zdGFudCBjb250ZW50cywgc28gd2UgY2FuIGZp bGwgdGhlbSBub3cgKi8KLQkJc28tPnplcm9EaXN0YW5jZXMgPSAoZG91YmxlICopCi0JCQlw YWxsb2Moc2l6ZW9mKGRvdWJsZSkgKiBzY2FuLT5udW1iZXJPZk9yZGVyQnlzKTsKLQkJc28t PmluZkRpc3RhbmNlcyA9IChkb3VibGUgKikKLQkJCXBhbGxvYyhzaXplb2YoZG91YmxlKSAq IHNjYW4tPm51bWJlck9mT3JkZXJCeXMpOworCQlzby0+emVyb0Rpc3RhbmNlcyA9IHBhbGxv Y19hcnJheShkb3VibGUsIHNjYW4tPm51bWJlck9mT3JkZXJCeXMpOworCQlzby0+aW5mRGlz dGFuY2VzID0gcGFsbG9jX2FycmF5KGRvdWJsZSwgc2Nhbi0+bnVtYmVyT2ZPcmRlckJ5cyk7 CiAKIAkJZm9yIChpID0gMDsgaSA8IHNjYW4tPm51bWJlck9mT3JkZXJCeXM7IGkrKykKIAkJ ewpAQCAtMzUzLDEwICszNDksOCBAQCBzcGdiZWdpbnNjYW4oUmVsYXRpb24gcmVsLCBpbnQg a2V5c3osIGludCBvcmRlcmJ5c3opCiAJCQlzby0+aW5mRGlzdGFuY2VzW2ldID0gZ2V0X2Zs b2F0OF9pbmZpbml0eSgpOwogCQl9CiAKLQkJc2Nhbi0+eHNfb3JkZXJieXZhbHMgPSAoRGF0 dW0gKikKLQkJCXBhbGxvYzAoc2l6ZW9mKERhdHVtKSAqIHNjYW4tPm51bWJlck9mT3JkZXJC eXMpOwotCQlzY2FuLT54c19vcmRlcmJ5bnVsbHMgPSAoYm9vbCAqKQotCQkJcGFsbG9jKHNp emVvZihib29sKSAqIHNjYW4tPm51bWJlck9mT3JkZXJCeXMpOworCQlzY2FuLT54c19vcmRl cmJ5dmFscyA9IHBhbGxvYzBfYXJyYXkoRGF0dW0sIHNjYW4tPm51bWJlck9mT3JkZXJCeXMp OworCQlzY2FuLT54c19vcmRlcmJ5bnVsbHMgPSBwYWxsb2NfYXJyYXkoYm9vbCwgc2Nhbi0+ bnVtYmVyT2ZPcmRlckJ5cyk7CiAJCW1lbXNldChzY2FuLT54c19vcmRlcmJ5bnVsbHMsIHRy dWUsCiAJCQkgICBzaXplb2YoYm9vbCkgKiBzY2FuLT5udW1iZXJPZk9yZGVyQnlzKTsKIAl9 CkBAIC02OTAsNyArNjg0LDcgQEAgc3BnSW5uZXJUZXN0KFNwR2lzdFNjYW5PcGFxdWUgc28s IFNwR2lzdFNlYXJjaEl0ZW0gKml0ZW0sCiAJewogCQkvKiBmb3JjZSBhbGwgY2hpbGRyZW4g dG8gYmUgdmlzaXRlZCAqLwogCQlvdXQubk5vZGVzID0gbk5vZGVzOwotCQlvdXQubm9kZU51 bWJlcnMgPSAoaW50ICopIHBhbGxvYyhzaXplb2YoaW50KSAqIG5Ob2Rlcyk7CisJCW91dC5u b2RlTnVtYmVycyA9IHBhbGxvY19hcnJheShpbnQsIG5Ob2Rlcyk7CiAJCWZvciAoaSA9IDA7 IGkgPCBuTm9kZXM7IGkrKykKIAkJCW91dC5ub2RlTnVtYmVyc1tpXSA9IGk7CiAJfQpAQCAt NzAzLDcgKzY5Nyw3IEBAIHNwZ0lubmVyVGVzdChTcEdpc3RTY2FuT3BhcXVlIHNvLCBTcEdp c3RTZWFyY2hJdGVtICppdGVtLAogCXsKIAkJLyogY29sbGVjdCBub2RlIHBvaW50ZXJzICov CiAJCVNwR2lzdE5vZGVUdXBsZSBub2RlOwotCQlTcEdpc3ROb2RlVHVwbGUgKm5vZGVzID0g KFNwR2lzdE5vZGVUdXBsZSAqKSBwYWxsb2Moc2l6ZW9mKFNwR2lzdE5vZGVUdXBsZSkgKiBu Tm9kZXMpOworCQlTcEdpc3ROb2RlVHVwbGUgKm5vZGVzID0gcGFsbG9jX2FycmF5KFNwR2lz dE5vZGVUdXBsZSwgbk5vZGVzKTsKIAogCQlTR0lUSVRFUkFURShpbm5lclR1cGxlLCBpLCBu b2RlKQogCQl7CkBAIC05NzIsOCArOTY2LDcgQEAgc3RvcmVHZXR0dXBsZShTcEdpc3RTY2Fu T3BhcXVlIHNvLCBJdGVtUG9pbnRlciBoZWFwUHRyLAogCQkJc28tPmRpc3RhbmNlc1tzby0+ blB0cnNdID0gTlVMTDsKIAkJZWxzZQogCQl7Ci0JCQlJbmRleE9yZGVyQnlEaXN0YW5jZSAq ZGlzdGFuY2VzID0KLQkJCQlwYWxsb2Moc2l6ZW9mKGRpc3RhbmNlc1swXSkgKiBzby0+bnVt YmVyT2ZPcmRlckJ5cyk7CisJCQlJbmRleE9yZGVyQnlEaXN0YW5jZSAqZGlzdGFuY2VzID0g cGFsbG9jX2FycmF5KEluZGV4T3JkZXJCeURpc3RhbmNlLCBzby0+bnVtYmVyT2ZPcmRlckJ5 cyk7CiAJCQlpbnQJCQlpOwogCiAJCQlmb3IgKGkgPSAwOyBpIDwgc28tPm51bWJlck9mT3Jk ZXJCeXM7IGkrKykKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3Bn dGV4dHByb2MuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BndGV4dHByb2MuYwpp bmRleCA5MWY0YWIyNjBjMi4uMDliZTdmZmU0N2UgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9zcGdpc3Qvc3BndGV4dHByb2MuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv c3BnaXN0L3NwZ3RleHRwcm9jLmMKQEAgLTIzMCw4ICsyMzAsNyBAQCBzcGdfdGV4dF9jaG9v c2UoUEdfRlVOQ1RJT05fQVJHUykKIAkJCQkJZm9ybVRleHREYXR1bShwcmVmaXhTdHIsIGNv bW1vbkxlbik7CiAJCQl9CiAJCQlvdXQtPnJlc3VsdC5zcGxpdFR1cGxlLnByZWZpeE5Ob2Rl cyA9IDE7Ci0JCQlvdXQtPnJlc3VsdC5zcGxpdFR1cGxlLnByZWZpeE5vZGVMYWJlbHMgPQot CQkJCShEYXR1bSAqKSBwYWxsb2Moc2l6ZW9mKERhdHVtKSk7CisJCQlvdXQtPnJlc3VsdC5z cGxpdFR1cGxlLnByZWZpeE5vZGVMYWJlbHMgPSBwYWxsb2Nfb2JqZWN0KERhdHVtKTsKIAkJ CW91dC0+cmVzdWx0LnNwbGl0VHVwbGUucHJlZml4Tm9kZUxhYmVsc1swXSA9CiAJCQkJSW50 MTZHZXREYXR1bSgqKHVuc2lnbmVkIGNoYXIgKikgKHByZWZpeFN0ciArIGNvbW1vbkxlbikp OwogCkBAIC0zMDMsNyArMzAyLDcgQEAgc3BnX3RleHRfY2hvb3NlKFBHX0ZVTkNUSU9OX0FS R1MpCiAJCW91dC0+cmVzdWx0LnNwbGl0VHVwbGUucHJlZml4SGFzUHJlZml4ID0gaW4tPmhh c1ByZWZpeDsKIAkJb3V0LT5yZXN1bHQuc3BsaXRUdXBsZS5wcmVmaXhQcmVmaXhEYXR1bSA9 IGluLT5wcmVmaXhEYXR1bTsKIAkJb3V0LT5yZXN1bHQuc3BsaXRUdXBsZS5wcmVmaXhOTm9k ZXMgPSAxOwotCQlvdXQtPnJlc3VsdC5zcGxpdFR1cGxlLnByZWZpeE5vZGVMYWJlbHMgPSAo RGF0dW0gKikgcGFsbG9jKHNpemVvZihEYXR1bSkpOworCQlvdXQtPnJlc3VsdC5zcGxpdFR1 cGxlLnByZWZpeE5vZGVMYWJlbHMgPSBwYWxsb2Nfb2JqZWN0KERhdHVtKTsKIAkJb3V0LT5y ZXN1bHQuc3BsaXRUdXBsZS5wcmVmaXhOb2RlTGFiZWxzWzBdID0gSW50MTZHZXREYXR1bSgt Mik7CiAJCW91dC0+cmVzdWx0LnNwbGl0VHVwbGUuY2hpbGROb2RlTiA9IDA7CiAJCW91dC0+ cmVzdWx0LnNwbGl0VHVwbGUucG9zdGZpeEhhc1ByZWZpeCA9IGZhbHNlOwpAQCAtMzcxLDcg KzM3MCw3IEBAIHNwZ190ZXh0X3BpY2tzcGxpdChQR19GVU5DVElPTl9BUkdTKQogCX0KIAog CS8qIEV4dHJhY3QgdGhlIG5vZGUgbGFiZWwgKGZpcnN0IG5vbi1jb21tb24gYnl0ZSkgZnJv bSBlYWNoIHZhbHVlICovCi0Jbm9kZXMgPSAoc3BnTm9kZVB0ciAqKSBwYWxsb2Moc2l6ZW9m KHNwZ05vZGVQdHIpICogaW4tPm5UdXBsZXMpOworCW5vZGVzID0gcGFsbG9jX2FycmF5KHNw Z05vZGVQdHIsIGluLT5uVHVwbGVzKTsKIAogCWZvciAoaSA9IDA7IGkgPCBpbi0+blR1cGxl czsgaSsrKQogCXsKQEAgLTM5NCw5ICszOTMsOSBAQCBzcGdfdGV4dF9waWNrc3BsaXQoUEdf RlVOQ1RJT05fQVJHUykKIAogCS8qIEFuZCBlbWl0IHJlc3VsdHMgKi8KIAlvdXQtPm5Ob2Rl cyA9IDA7Ci0Jb3V0LT5ub2RlTGFiZWxzID0gKERhdHVtICopIHBhbGxvYyhzaXplb2YoRGF0 dW0pICogaW4tPm5UdXBsZXMpOwotCW91dC0+bWFwVHVwbGVzVG9Ob2RlcyA9IChpbnQgKikg cGFsbG9jKHNpemVvZihpbnQpICogaW4tPm5UdXBsZXMpOwotCW91dC0+bGVhZlR1cGxlRGF0 dW1zID0gKERhdHVtICopIHBhbGxvYyhzaXplb2YoRGF0dW0pICogaW4tPm5UdXBsZXMpOwor CW91dC0+bm9kZUxhYmVscyA9IHBhbGxvY19hcnJheShEYXR1bSwgaW4tPm5UdXBsZXMpOwor CW91dC0+bWFwVHVwbGVzVG9Ob2RlcyA9IHBhbGxvY19hcnJheShpbnQsIGluLT5uVHVwbGVz KTsKKwlvdXQtPmxlYWZUdXBsZURhdHVtcyA9IHBhbGxvY19hcnJheShEYXR1bSwgaW4tPm5U dXBsZXMpOwogCiAJZm9yIChpID0gMDsgaSA8IGluLT5uVHVwbGVzOyBpKyspCiAJewpAQCAt NDc2LDkgKzQ3NSw5IEBAIHNwZ190ZXh0X2lubmVyX2NvbnNpc3RlbnQoUEdfRlVOQ1RJT05f QVJHUykKIAkgKiBhbmQgc2VlIGlmIGl0J3MgY29uc2lzdGVudCB3aXRoIHRoZSBxdWVyeS4g IElmIHNvLCBlbWl0IGFuIGVudHJ5IGludG8KIAkgKiB0aGUgb3V0cHV0IGFycmF5cy4KIAkg Ki8KLQlvdXQtPm5vZGVOdW1iZXJzID0gKGludCAqKSBwYWxsb2Moc2l6ZW9mKGludCkgKiBp bi0+bk5vZGVzKTsKLQlvdXQtPmxldmVsQWRkcyA9IChpbnQgKikgcGFsbG9jKHNpemVvZihp bnQpICogaW4tPm5Ob2Rlcyk7Ci0Jb3V0LT5yZWNvbnN0cnVjdGVkVmFsdWVzID0gKERhdHVt ICopIHBhbGxvYyhzaXplb2YoRGF0dW0pICogaW4tPm5Ob2Rlcyk7CisJb3V0LT5ub2RlTnVt YmVycyA9IHBhbGxvY19hcnJheShpbnQsIGluLT5uTm9kZXMpOworCW91dC0+bGV2ZWxBZGRz ID0gcGFsbG9jX2FycmF5KGludCwgaW4tPm5Ob2Rlcyk7CisJb3V0LT5yZWNvbnN0cnVjdGVk VmFsdWVzID0gcGFsbG9jX2FycmF5KERhdHVtLCBpbi0+bk5vZGVzKTsKIAlvdXQtPm5Ob2Rl cyA9IDA7CiAKIAlmb3IgKGkgPSAwOyBpIDwgaW4tPm5Ob2RlczsgaSsrKQpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd1dGlscy5jIGIvc3JjL2JhY2tlbmQv YWNjZXNzL3NwZ2lzdC9zcGd1dGlscy5jCmluZGV4IDg3YzMxZGE3MWE1Li5hNjBlYzg1ZThi ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd1dGlscy5jCisr KyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BndXRpbHMuYwpAQCAtMTE3Nyw3ICsx MTc3LDcgQEAgc3BnRXh0cmFjdE5vZGVMYWJlbHMoU3BHaXN0U3RhdGUgKnN0YXRlLCBTcEdp c3RJbm5lclR1cGxlIGlubmVyVHVwbGUpCiAJfQogCWVsc2UKIAl7Ci0JCW5vZGVMYWJlbHMg PSAoRGF0dW0gKikgcGFsbG9jKHNpemVvZihEYXR1bSkgKiBpbm5lclR1cGxlLT5uTm9kZXMp OworCQlub2RlTGFiZWxzID0gcGFsbG9jX2FycmF5KERhdHVtLCBpbm5lclR1cGxlLT5uTm9k ZXMpOwogCQlTR0lUSVRFUkFURShpbm5lclR1cGxlLCBpLCBub2RlKQogCQl7CiAJCQlpZiAo SW5kZXhUdXBsZUhhc051bGxzKG5vZGUpKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNj ZXNzL3NwZ2lzdC9zcGd2YWN1dW0uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3Bn dmFjdXVtLmMKaW5kZXggNzFlZjJlNTAzNmYuLmNiNTY3MWMxYTRlIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3ZhY3V1bS5jCisrKyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy9zcGdpc3Qvc3BndmFjdXVtLmMKQEAgLTc2LDcgKzc2LDcgQEAgc3BnQWRkUGVu ZGluZ1RJRChzcGdCdWxrRGVsZXRlU3RhdGUgKmJkcywgY29uc3QgSXRlbVBvaW50ZXJEYXRh ICp0aWQpCiAJCWxpc3RMaW5rID0gJnBpdGVtLT5uZXh0OwogCX0KIAkvKiBub3QgdGhlcmUs IHNvIGFwcGVuZCBuZXcgZW50cnkgKi8KLQlwaXRlbSA9IChzcGdWYWNQZW5kaW5nSXRlbSAq KSBwYWxsb2Moc2l6ZW9mKHNwZ1ZhY1BlbmRpbmdJdGVtKSk7CisJcGl0ZW0gPSBwYWxsb2Nf b2JqZWN0KHNwZ1ZhY1BlbmRpbmdJdGVtKTsKIAlwaXRlbS0+dGlkID0gKnRpZDsKIAlwaXRl bS0+ZG9uZSA9IGZhbHNlOwogCXBpdGVtLT5uZXh0ID0gTlVMTDsKQEAgLTk1NCw3ICs5NTQs NyBAQCBzcGdidWxrZGVsZXRlKEluZGV4VmFjdXVtSW5mbyAqaW5mbywgSW5kZXhCdWxrRGVs ZXRlUmVzdWx0ICpzdGF0cywKIAogCS8qIGFsbG9jYXRlIHN0YXRzIGlmIGZpcnN0IHRpbWUg dGhyb3VnaCwgZWxzZSByZS11c2UgZXhpc3Rpbmcgc3RydWN0ICovCiAJaWYgKHN0YXRzID09 IE5VTEwpCi0JCXN0YXRzID0gKEluZGV4QnVsa0RlbGV0ZVJlc3VsdCAqKSBwYWxsb2MwKHNp emVvZihJbmRleEJ1bGtEZWxldGVSZXN1bHQpKTsKKwkJc3RhdHMgPSBwYWxsb2MwX29iamVj dChJbmRleEJ1bGtEZWxldGVSZXN1bHQpOwogCWJkcy5pbmZvID0gaW5mbzsKIAliZHMuc3Rh dHMgPSBzdGF0czsKIAliZHMuY2FsbGJhY2sgPSBjYWxsYmFjazsKQEAgLTk5NCw3ICs5OTQs NyBAQCBzcGd2YWN1dW1jbGVhbnVwKEluZGV4VmFjdXVtSW5mbyAqaW5mbywgSW5kZXhCdWxr RGVsZXRlUmVzdWx0ICpzdGF0cykKIAkgKi8KIAlpZiAoc3RhdHMgPT0gTlVMTCkKIAl7Ci0J CXN0YXRzID0gKEluZGV4QnVsa0RlbGV0ZVJlc3VsdCAqKSBwYWxsb2MwKHNpemVvZihJbmRl eEJ1bGtEZWxldGVSZXN1bHQpKTsKKwkJc3RhdHMgPSBwYWxsb2MwX29iamVjdChJbmRleEJ1 bGtEZWxldGVSZXN1bHQpOwogCQliZHMuaW5mbyA9IGluZm87CiAJCWJkcy5zdGF0cyA9IHN0 YXRzOwogCQliZHMuY2FsbGJhY2sgPSBkdW1teV9jYWxsYmFjazsKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BneGxvZy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNz L3NwZ2lzdC9zcGd4bG9nLmMKaW5kZXggYjcxMTAzMDJiOTguLmY2MzViZTA2OThmIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3hsb2cuYworKysgYi9zcmMv YmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3hsb2cuYwpAQCAtOTAxLDcgKzkwMSw3IEBAIHNw Z1JlZG9WYWN1dW1SZWRpcmVjdChYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAkJCWludAkJ CW1heCA9IFBhZ2VHZXRNYXhPZmZzZXROdW1iZXIocGFnZSk7CiAJCQlPZmZzZXROdW1iZXIg KnRvRGVsZXRlOwogCi0JCQl0b0RlbGV0ZSA9IHBhbGxvYyhzaXplb2YoT2Zmc2V0TnVtYmVy KSAqIG1heCk7CisJCQl0b0RlbGV0ZSA9IHBhbGxvY19hcnJheShPZmZzZXROdW1iZXIsIG1h eCk7CiAKIAkJCWZvciAoaSA9IHhsZGF0YS0+Zmlyc3RQbGFjZWhvbGRlcjsgaSA8PSBtYXg7 IGkrKykKIAkJCQl0b0RlbGV0ZVtpIC0geGxkYXRhLT5maXJzdFBsYWNlaG9sZGVyXSA9IGk7 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdGFibGVzYW1wbGUvYmVybm91bGxp LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdGFibGVzYW1wbGUvYmVybm91bGxpLmMKaW5kZXgg NWUxYzVkMmI3MjMuLmNjZTYwM2QxYjdmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nl c3MvdGFibGVzYW1wbGUvYmVybm91bGxpLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3Rh Ymxlc2FtcGxlL2Jlcm5vdWxsaS5jCkBAIC0xMjYsNyArMTI2LDcgQEAgYmVybm91bGxpX3Nh bXBsZXNjYW5nZXRzYW1wbGVzaXplKFBsYW5uZXJJbmZvICpyb290LAogc3RhdGljIHZvaWQK IGJlcm5vdWxsaV9pbml0c2FtcGxlc2NhbihTYW1wbGVTY2FuU3RhdGUgKm5vZGUsIGludCBl ZmxhZ3MpCiB7Ci0Jbm9kZS0+dHNtX3N0YXRlID0gcGFsbG9jMChzaXplb2YoQmVybm91bGxp U2FtcGxlckRhdGEpKTsKKwlub2RlLT50c21fc3RhdGUgPSBwYWxsb2MwX29iamVjdChCZXJu b3VsbGlTYW1wbGVyRGF0YSk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9h Y2Nlc3MvdGFibGVzYW1wbGUvc3lzdGVtLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdGFibGVz YW1wbGUvc3lzdGVtLmMKaW5kZXggOGRiODEzYjg5ZmMuLmM2NzQwZGJkZDFiIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdGFibGVzYW1wbGUvc3lzdGVtLmMKKysrIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL3RhYmxlc2FtcGxlL3N5c3RlbS5jCkBAIC0xMjksNyArMTI5LDcg QEAgc3lzdGVtX3NhbXBsZXNjYW5nZXRzYW1wbGVzaXplKFBsYW5uZXJJbmZvICpyb290LAog c3RhdGljIHZvaWQKIHN5c3RlbV9pbml0c2FtcGxlc2NhbihTYW1wbGVTY2FuU3RhdGUgKm5v ZGUsIGludCBlZmxhZ3MpCiB7Ci0Jbm9kZS0+dHNtX3N0YXRlID0gcGFsbG9jMChzaXplb2Yo U3lzdGVtU2FtcGxlckRhdGEpKTsKKwlub2RlLT50c21fc3RhdGUgPSBwYWxsb2MwX29iamVj dChTeXN0ZW1TYW1wbGVyRGF0YSk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvdHJhbnNhbS9tdWx0aXhhY3QuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFu c2FtL211bHRpeGFjdC5jCmluZGV4IDlkNWYxMzBhZjdlLi45ZDU2ZTg4NmUyOCAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vbXVsdGl4YWN0LmMKKysrIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vbXVsdGl4YWN0LmMKQEAgLTU0OSw4ICs1NDksNyBA QCBNdWx0aVhhY3RJZEV4cGFuZChNdWx0aVhhY3RJZCBtdWx0aSwgVHJhbnNhY3Rpb25JZCB4 aWQsIE11bHRpWGFjdFN0YXR1cyBzdGF0dXMpCiAJICogTm90ZSB3ZSBoYXZlIHRoZSBzYW1l IHJhY2UgY29uZGl0aW9uIGhlcmUgYXMgYWJvdmU6IGogY291bGQgYmUgMCBhdCB0aGUKIAkg KiBlbmQgb2YgdGhlIGxvb3AuCiAJICovCi0JbmV3TWVtYmVycyA9IChNdWx0aVhhY3RNZW1i ZXIgKikKLQkJcGFsbG9jKHNpemVvZihNdWx0aVhhY3RNZW1iZXIpICogKG5tZW1iZXJzICsg MSkpOworCW5ld01lbWJlcnMgPSBwYWxsb2NfYXJyYXkoTXVsdGlYYWN0TWVtYmVyLCBubWVt YmVycyArIDEpOyAKIAogCWZvciAoaSA9IDAsIGogPSAwOyBpIDwgbm1lbWJlcnM7IGkrKykK IAl7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9wYXJhbGxlbC5j IGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vcGFyYWxsZWwuYwppbmRleCA5NGRiMWVj MzAxMi4uODQyODEwM2ViYTQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFu c2FtL3BhcmFsbGVsLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vcGFyYWxs ZWwuYwpAQCAtMTg2LDcgKzE4Niw3IEBAIENyZWF0ZVBhcmFsbGVsQ29udGV4dChjb25zdCBj aGFyICpsaWJyYXJ5X25hbWUsIGNvbnN0IGNoYXIgKmZ1bmN0aW9uX25hbWUsCiAJb2xkY29u dGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhUb3BUcmFuc2FjdGlvbkNvbnRleHQpOwog CiAJLyogSW5pdGlhbGl6ZSBhIG5ldyBQYXJhbGxlbENvbnRleHQuICovCi0JcGN4dCA9IHBh bGxvYzAoc2l6ZW9mKFBhcmFsbGVsQ29udGV4dCkpOworCXBjeHQgPSBwYWxsb2MwX29iamVj dChQYXJhbGxlbENvbnRleHQpOwogCXBjeHQtPnN1YmlkID0gR2V0Q3VycmVudFN1YlRyYW5z YWN0aW9uSWQoKTsKIAlwY3h0LT5ud29ya2VycyA9IG53b3JrZXJzOwogCXBjeHQtPm53b3Jr ZXJzX3RvX2xhdW5jaCA9IG53b3JrZXJzOwpAQCAtNDUzLDcgKzQ1Myw3IEBAIEluaXRpYWxp emVQYXJhbGxlbERTTShQYXJhbGxlbENvbnRleHQgKnBjeHQpCiAJCQkJCSAgIGNsaWVudGNv bm5pbmZvc3BhY2UpOwogCiAJCS8qIEFsbG9jYXRlIHNwYWNlIGZvciB3b3JrZXIgaW5mb3Jt YXRpb24uICovCi0JCXBjeHQtPndvcmtlciA9IHBhbGxvYzAoc2l6ZW9mKFBhcmFsbGVsV29y a2VySW5mbykgKiBwY3h0LT5ud29ya2Vycyk7CisJCXBjeHQtPndvcmtlciA9IHBhbGxvYzBf YXJyYXkoUGFyYWxsZWxXb3JrZXJJbmZvLCBwY3h0LT5ud29ya2Vycyk7CiAKIAkJLyoKIAkJ ICogRXN0YWJsaXNoIGVycm9yIHF1ZXVlcyBpbiBkeW5hbWljIHNoYXJlZCBtZW1vcnkuCkBA IC02NDgsOCArNjQ4LDcgQEAgTGF1bmNoUGFyYWxsZWxXb3JrZXJzKFBhcmFsbGVsQ29udGV4 dCAqcGN4dCkKIAkgKi8KIAlpZiAocGN4dC0+bndvcmtlcnNfbGF1bmNoZWQgPiAwKQogCXsK LQkJcGN4dC0+a25vd25fYXR0YWNoZWRfd29ya2VycyA9Ci0JCQlwYWxsb2MwKHNpemVvZihi b29sKSAqIHBjeHQtPm53b3JrZXJzX2xhdW5jaGVkKTsKKwkJcGN4dC0+a25vd25fYXR0YWNo ZWRfd29ya2VycyA9IHBhbGxvYzBfYXJyYXkoYm9vbCwgcGN4dC0+bndvcmtlcnNfbGF1bmNo ZWQpOwogCQlwY3h0LT5ua25vd25fYXR0YWNoZWRfd29ya2VycyA9IDA7CiAJfQogCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS90aW1lbGluZS5jIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL3RyYW5zYW0vdGltZWxpbmUuYwppbmRleCBlYzNlMzIzZWMwYy4uYjhh ZjI1ZTgyZDEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3RpbWVs aW5lLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vdGltZWxpbmUuYwpAQCAt ODcsNyArODcsNyBAQCByZWFkVGltZUxpbmVIaXN0b3J5KFRpbWVMaW5lSUQgdGFyZ2V0VExJ KQogCS8qIFRpbWVsaW5lIDEgZG9lcyBub3QgaGF2ZSBhIGhpc3RvcnkgZmlsZSwgc28gbm8g bmVlZCB0byBjaGVjayAqLwogCWlmICh0YXJnZXRUTEkgPT0gMSkKIAl7Ci0JCWVudHJ5ID0g KFRpbWVMaW5lSGlzdG9yeUVudHJ5ICopIHBhbGxvYyhzaXplb2YoVGltZUxpbmVIaXN0b3J5 RW50cnkpKTsKKwkJZW50cnkgPSBwYWxsb2Nfb2JqZWN0KFRpbWVMaW5lSGlzdG9yeUVudHJ5 KTsKIAkJZW50cnktPnRsaSA9IHRhcmdldFRMSTsKIAkJZW50cnktPmJlZ2luID0gZW50cnkt PmVuZCA9IEludmFsaWRYTG9nUmVjUHRyOwogCQlyZXR1cm4gbGlzdF9tYWtlMShlbnRyeSk7 CkBAIC0xMTAsNyArMTEwLDcgQEAgcmVhZFRpbWVMaW5lSGlzdG9yeShUaW1lTGluZUlEIHRh cmdldFRMSSkKIAkJCQkJKGVycmNvZGVfZm9yX2ZpbGVfYWNjZXNzKCksCiAJCQkJCSBlcnJt c2coImNvdWxkIG5vdCBvcGVuIGZpbGUgXCIlc1wiOiAlbSIsIHBhdGgpKSk7CiAJCS8qIE5v dCB0aGVyZSwgc28gYXNzdW1lIG5vIHBhcmVudHMgKi8KLQkJZW50cnkgPSAoVGltZUxpbmVI aXN0b3J5RW50cnkgKikgcGFsbG9jKHNpemVvZihUaW1lTGluZUhpc3RvcnlFbnRyeSkpOwor CQllbnRyeSA9IHBhbGxvY19vYmplY3QoVGltZUxpbmVIaXN0b3J5RW50cnkpOwogCQllbnRy eS0+dGxpID0gdGFyZ2V0VExJOwogCQllbnRyeS0+YmVnaW4gPSBlbnRyeS0+ZW5kID0gSW52 YWxpZFhMb2dSZWNQdHI7CiAJCXJldHVybiBsaXN0X21ha2UxKGVudHJ5KTsKQEAgLTE3NSw3 ICsxNzUsNyBAQCByZWFkVGltZUxpbmVIaXN0b3J5KFRpbWVMaW5lSUQgdGFyZ2V0VExJKQog CiAJCWxhc3R0bGkgPSB0bGk7CiAKLQkJZW50cnkgPSAoVGltZUxpbmVIaXN0b3J5RW50cnkg KikgcGFsbG9jKHNpemVvZihUaW1lTGluZUhpc3RvcnlFbnRyeSkpOworCQllbnRyeSA9IHBh bGxvY19vYmplY3QoVGltZUxpbmVIaXN0b3J5RW50cnkpOwogCQllbnRyeS0+dGxpID0gdGxp OwogCQllbnRyeS0+YmVnaW4gPSBwcmV2ZW5kOwogCQllbnRyeS0+ZW5kID0gKCh1aW50NjQp IChzd2l0Y2hwb2ludF9oaSkpIDw8IDMyIHwgKHVpbnQ2NCkgc3dpdGNocG9pbnRfbG87CkBA IC0xOTgsNyArMTk4LDcgQEAgcmVhZFRpbWVMaW5lSGlzdG9yeShUaW1lTGluZUlEIHRhcmdl dFRMSSkKIAkgKiBDcmVhdGUgb25lIG1vcmUgZW50cnkgZm9yIHRoZSAidGlwIiBvZiB0aGUg dGltZWxpbmUsIHdoaWNoIGhhcyBubyBlbnRyeQogCSAqIGluIHRoZSBoaXN0b3J5IGZpbGUu CiAJICovCi0JZW50cnkgPSAoVGltZUxpbmVIaXN0b3J5RW50cnkgKikgcGFsbG9jKHNpemVv ZihUaW1lTGluZUhpc3RvcnlFbnRyeSkpOworCWVudHJ5ID0gcGFsbG9jX29iamVjdChUaW1l TGluZUhpc3RvcnlFbnRyeSk7CiAJZW50cnktPnRsaSA9IHRhcmdldFRMSTsKIAllbnRyeS0+ YmVnaW4gPSBwcmV2ZW5kOwogCWVudHJ5LT5lbmQgPSBJbnZhbGlkWExvZ1JlY1B0cjsKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3R3b3BoYXNlLmMgYi9zcmMv YmFja2VuZC9hY2Nlc3MvdHJhbnNhbS90d29waGFzZS5jCmluZGV4IDg5ZDBiZmE3NzYwLi5h ZTQzNjg4YjM0YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vdHdv cGhhc2UuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS90d29waGFzZS5jCkBA IC02ODQsNyArNjg0LDcgQEAgR2V0UHJlcGFyZWRUcmFuc2FjdGlvbkxpc3QoR2xvYmFsVHJh bnNhY3Rpb24gKmd4YWN0cykKIAl9CiAKIAludW0gPSBUd29QaGFzZVN0YXRlLT5udW1QcmVw WGFjdHM7Ci0JYXJyYXkgPSAoR2xvYmFsVHJhbnNhY3Rpb24pIHBhbGxvYyhzaXplb2YoR2xv YmFsVHJhbnNhY3Rpb25EYXRhKSAqIG51bSk7CisJYXJyYXkgPSBwYWxsb2NfYXJyYXkoR2xv YmFsVHJhbnNhY3Rpb25EYXRhLCBudW0pOwogCSpneGFjdHMgPSBhcnJheTsKIAlmb3IgKGkg PSAwOyBpIDwgbnVtOyBpKyspCiAJCW1lbWNweShhcnJheSArIGksIFR3b1BoYXNlU3RhdGUt PnByZXBYYWN0c1tpXSwKQEAgLTc1MCw3ICs3NTAsNyBAQCBwZ19wcmVwYXJlZF94YWN0KFBH X0ZVTkNUSU9OX0FSR1MpCiAJCSAqIENvbGxlY3QgYWxsIHRoZSAyUEMgc3RhdHVzIGluZm9y bWF0aW9uIHRoYXQgd2Ugd2lsbCBmb3JtYXQgYW5kIHNlbmQKIAkJICogb3V0IGFzIGEgcmVz dWx0IHNldC4KIAkJICovCi0JCXN0YXR1cyA9IChXb3JraW5nX1N0YXRlICopIHBhbGxvYyhz aXplb2YoV29ya2luZ19TdGF0ZSkpOworCQlzdGF0dXMgPSBwYWxsb2Nfb2JqZWN0KFdvcmtp bmdfU3RhdGUpOwogCQlmdW5jY3R4LT51c2VyX2ZjdHggPSBzdGF0dXM7CiAKIAkJc3RhdHVz LT5uZ3hhY3RzID0gR2V0UHJlcGFyZWRUcmFuc2FjdGlvbkxpc3QoJnN0YXR1cy0+YXJyYXkp OwpAQCAtMTAyNyw3ICsxMDI3LDcgQEAgc2F2ZV9zdGF0ZV9kYXRhKGNvbnN0IHZvaWQgKmRh dGEsIHVpbnQzMiBsZW4pCiAKIAlpZiAocGFkbGVuID4gcmVjb3Jkcy5ieXRlc19mcmVlKQog CXsKLQkJcmVjb3Jkcy50YWlsLT5uZXh0ID0gcGFsbG9jMChzaXplb2YoU3RhdGVGaWxlQ2h1 bmspKTsKKwkJcmVjb3Jkcy50YWlsLT5uZXh0ID0gcGFsbG9jMF9vYmplY3QoU3RhdGVGaWxl Q2h1bmspOwogCQlyZWNvcmRzLnRhaWwgPSByZWNvcmRzLnRhaWwtPm5leHQ7CiAJCXJlY29y ZHMudGFpbC0+bGVuID0gMDsKIAkJcmVjb3Jkcy50YWlsLT5uZXh0ID0gTlVMTDsKQEAgLTEw NjIsNyArMTA2Miw3IEBAIFN0YXJ0UHJlcGFyZShHbG9iYWxUcmFuc2FjdGlvbiBneGFjdCkK IAlTaGFyZWRJbnZhbGlkYXRpb25NZXNzYWdlICppbnZhbG1zZ3M7CiAKIAkvKiBJbml0aWFs aXplIGxpbmtlZCBsaXN0ICovCi0JcmVjb3Jkcy5oZWFkID0gcGFsbG9jMChzaXplb2YoU3Rh dGVGaWxlQ2h1bmspKTsKKwlyZWNvcmRzLmhlYWQgPSBwYWxsb2MwX29iamVjdChTdGF0ZUZp bGVDaHVuayk7CiAJcmVjb3Jkcy5oZWFkLT5sZW4gPSAwOwogCXJlY29yZHMuaGVhZC0+bmV4 dCA9IE5VTEw7CiAKQEAgLTE0NTMsNyArMTQ1Myw3IEBAIFhsb2dSZWFkVHdvUGhhc2VEYXRh KFhMb2dSZWNQdHIgbHNuLCBjaGFyICoqYnVmLCBpbnQgKmxlbikKIAlpZiAobGVuICE9IE5V TEwpCiAJCSpsZW4gPSBYTG9nUmVjR2V0RGF0YUxlbih4bG9ncmVhZGVyKTsKIAotCSpidWYg PSBwYWxsb2Moc2l6ZW9mKGNoYXIpICogWExvZ1JlY0dldERhdGFMZW4oeGxvZ3JlYWRlcikp OworCSpidWYgPSBwYWxsb2NfYXJyYXkoY2hhciwgWExvZ1JlY0dldERhdGFMZW4oeGxvZ3Jl YWRlcikpOwogCW1lbWNweSgqYnVmLCBYTG9nUmVjR2V0RGF0YSh4bG9ncmVhZGVyKSwgc2l6 ZW9mKGNoYXIpICogWExvZ1JlY0dldERhdGFMZW4oeGxvZ3JlYWRlcikpOwogCiAJWExvZ1Jl YWRlckZyZWUoeGxvZ3JlYWRlcik7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mv dHJhbnNhbS94YWN0LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94YWN0LmMKaW5k ZXggMDkyZTE5N2ViYTMuLjAyNWRkMGJlNWZjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9h Y2Nlc3MvdHJhbnNhbS94YWN0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0v eGFjdC5jCkBAIC02NjQsNyArNjY0LDcgQEAgQXNzaWduVHJhbnNhY3Rpb25JZChUcmFuc2Fj dGlvblN0YXRlIHMpCiAJCVRyYW5zYWN0aW9uU3RhdGUgKnBhcmVudHM7CiAJCXNpemVfdAkJ cGFyZW50T2Zmc2V0ID0gMDsKIAotCQlwYXJlbnRzID0gcGFsbG9jKHNpemVvZihUcmFuc2Fj dGlvblN0YXRlKSAqIHMtPm5lc3RpbmdMZXZlbCk7CisJCXBhcmVudHMgPSBwYWxsb2NfYXJy YXkoVHJhbnNhY3Rpb25TdGF0ZSwgcy0+bmVzdGluZ0xldmVsKTsKIAkJd2hpbGUgKHAgIT0g TlVMTCAmJiAhRnVsbFRyYW5zYWN0aW9uSWRJc1ZhbGlkKHAtPmZ1bGxUcmFuc2FjdGlvbklk KSkKIAkJewogCQkJcGFyZW50c1twYXJlbnRPZmZzZXQrK10gPSBwOwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNz L3RyYW5zYW0veGxvZy5jCmluZGV4IDIyZDBhMmU4YzNhLi5lODFmNDNmNTI1NiAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jCisrKyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYwpAQCAtNDkwMiw3ICs0OTAyLDcgQEAgdm9pZAog TG9jYWxQcm9jZXNzQ29udHJvbEZpbGUoYm9vbCByZXNldCkKIHsKIAlBc3NlcnQocmVzZXQg fHwgQ29udHJvbEZpbGUgPT0gTlVMTCk7Ci0JQ29udHJvbEZpbGUgPSBwYWxsb2Moc2l6ZW9m KENvbnRyb2xGaWxlRGF0YSkpOworCUNvbnRyb2xGaWxlID0gcGFsbG9jX29iamVjdChDb250 cm9sRmlsZURhdGEpOwogCVJlYWRDb250cm9sRmlsZSgpOwogfQogCkBAIC05MTM1LDcgKzkx MzUsNyBAQCBkb19wZ19iYWNrdXBfc3RhcnQoY29uc3QgY2hhciAqYmFja3VwaWRzdHIsIGJv b2wgZmFzdCwgTGlzdCAqKnRhYmxlc3BhY2VzLAogCQkJCWNvbnRpbnVlOwogCQkJfQogCi0J CQl0aSA9IHBhbGxvYyhzaXplb2YodGFibGVzcGFjZWluZm8pKTsKKwkJCXRpID0gcGFsbG9j X29iamVjdCh0YWJsZXNwYWNlaW5mbyk7CiAJCQl0aS0+b2lkID0gdHNvaWQ7CiAJCQl0aS0+ cGF0aCA9IHBzdHJkdXAobGlua3BhdGgpOwogCQkJdGktPnJwYXRoID0gcmVscGF0aDsKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dmdW5jcy5jIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ2Z1bmNzLmMKaW5kZXggM2U0NWZjZTQzZWQu LmFkNmU0NGI2MDY0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94 bG9nZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nZnVuY3Mu YwpAQCAtOTAsNyArOTAsNyBAQCBwZ19iYWNrdXBfc3RhcnQoUEdfRlVOQ1RJT05fQVJHUykK IAl9CiAKIAlvbGRjb250ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKGJhY2t1cGNvbnRl eHQpOwotCWJhY2t1cF9zdGF0ZSA9IChCYWNrdXBTdGF0ZSAqKSBwYWxsb2MwKHNpemVvZihC YWNrdXBTdGF0ZSkpOworCWJhY2t1cF9zdGF0ZSA9IHBhbGxvYzBfb2JqZWN0KEJhY2t1cFN0 YXRlKTsKIAl0YWJsZXNwYWNlX21hcCA9IG1ha2VTdHJpbmdJbmZvKCk7CiAJTWVtb3J5Q29u dGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9h Y2Nlc3MvdHJhbnNhbS94bG9ncHJlZmV0Y2hlci5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3Ry YW5zYW0veGxvZ3ByZWZldGNoZXIuYwppbmRleCBlZDNhYWNhYmM5OC4uY2NjMjkxOTJjNWEg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dwcmVmZXRjaGVy LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3ByZWZldGNoZXIuYwpA QCAtMzY0LDcgKzM2NCw3IEBAIFhMb2dQcmVmZXRjaGVyQWxsb2NhdGUoWExvZ1JlYWRlclN0 YXRlICpyZWFkZXIpCiAJWExvZ1ByZWZldGNoZXIgKnByZWZldGNoZXI7CiAJSEFTSENUTAkJ Y3RsOwogCi0JcHJlZmV0Y2hlciA9IHBhbGxvYzAoc2l6ZW9mKFhMb2dQcmVmZXRjaGVyKSk7 CisJcHJlZmV0Y2hlciA9IHBhbGxvYzBfb2JqZWN0KFhMb2dQcmVmZXRjaGVyKTsKIAlwcmVm ZXRjaGVyLT5yZWFkZXIgPSByZWFkZXI7CiAKIAljdGwua2V5c2l6ZSA9IHNpemVvZihSZWxG aWxlTG9jYXRvcik7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94 bG9ncmVjb3ZlcnkuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dyZWNvdmVy eS5jCmluZGV4IDIxYjhmMTc5YmEwLi4yZTAzYmMxY2RmMiAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3JlY292ZXJ5LmMKKysrIGIvc3JjL2JhY2tlbmQv YWNjZXNzL3RyYW5zYW0veGxvZ3JlY292ZXJ5LmMKQEAgLTU1OSw3ICs1NTksNyBAQCBJbml0 V2FsUmVjb3ZlcnkoQ29udHJvbEZpbGVEYXRhICpDb250cm9sRmlsZSwgYm9vbCAqd2FzU2h1 dGRvd25fcHRyLAogCSAqIFNldCB0aGUgV0FMIHJlYWRpbmcgcHJvY2Vzc29yIG5vdywgYXMg aXQgd2lsbCBiZSBuZWVkZWQgd2hlbiByZWFkaW5nCiAJICogdGhlIGNoZWNrcG9pbnQgcmVj b3JkIHJlcXVpcmVkIChiYWNrdXBfbGFiZWwgb3Igbm90KS4KIAkgKi8KLQlwcml2YXRlID0g cGFsbG9jMChzaXplb2YoWExvZ1BhZ2VSZWFkUHJpdmF0ZSkpOworCXByaXZhdGUgPSBwYWxs b2MwX29iamVjdChYTG9nUGFnZVJlYWRQcml2YXRlKTsKIAl4bG9ncmVhZGVyID0KIAkJWExv Z1JlYWRlckFsbG9jYXRlKHdhbF9zZWdtZW50X3NpemUsIE5VTEwsCiAJCQkJCQkgICBYTF9S T1VUSU5FKC5wYWdlX3JlYWQgPSAmWExvZ1BhZ2VSZWFkLApAQCAtMTQxNiw3ICsxNDE2LDcg QEAgcmVhZF90YWJsZXNwYWNlX21hcChMaXN0ICoqdGFibGVzcGFjZXMpCiAJCQkJCQkgZXJy bXNnKCJpbnZhbGlkIGRhdGEgaW4gZmlsZSBcIiVzXCIiLCBUQUJMRVNQQUNFX01BUCkpKTsK IAkJCXN0cltuKytdID0gJ1wwJzsKIAotCQkJdGkgPSBwYWxsb2MwKHNpemVvZih0YWJsZXNw YWNlaW5mbykpOworCQkJdGkgPSBwYWxsb2MwX29iamVjdCh0YWJsZXNwYWNlaW5mbyk7CiAJ CQllcnJubyA9IDA7CiAJCQl0aS0+b2lkID0gc3RydG91bChzdHIsICZlbmRwLCAxMCk7CiAJ CQlpZiAoKmVuZHAgIT0gJ1wwJyB8fCBlcnJubyA9PSBFSU5WQUwgfHwgZXJybm8gPT0gRVJB TkdFKQpAQCAtMTQ2Nyw3ICsxNDY3LDcgQEAgcmVhZF90YWJsZXNwYWNlX21hcChMaXN0ICoq dGFibGVzcGFjZXMpCiBFbmRPZldhbFJlY292ZXJ5SW5mbyAqCiBGaW5pc2hXYWxSZWNvdmVy eSh2b2lkKQogewotCUVuZE9mV2FsUmVjb3ZlcnlJbmZvICpyZXN1bHQgPSBwYWxsb2Moc2l6 ZW9mKEVuZE9mV2FsUmVjb3ZlcnlJbmZvKSk7CisJRW5kT2ZXYWxSZWNvdmVyeUluZm8gKnJl c3VsdCA9IHBhbGxvY19vYmplY3QoRW5kT2ZXYWxSZWNvdmVyeUluZm8pOwogCVhMb2dSZWNQ dHIJbGFzdFJlYzsKIAlUaW1lTGluZUlECWxhc3RSZWNUTEk7CiAJWExvZ1JlY1B0cgllbmRP ZkxvZzsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2d1dGls cy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3V0aWxzLmMKaW5kZXggY2Uy YTNlNDIxNDYuLmRiNTVjMGM1YmQyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mv dHJhbnNhbS94bG9ndXRpbHMuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94 bG9ndXRpbHMuYwpAQCAtNTc0LDcgKzU3NCw3IEBAIENyZWF0ZUZha2VSZWxjYWNoZUVudHJ5 KFJlbEZpbGVMb2NhdG9yIHJsb2NhdG9yKQogCVJlbGF0aW9uCXJlbDsKIAogCS8qIEFsbG9j YXRlIHRoZSBSZWxhdGlvbiBzdHJ1Y3QgYW5kIGFsbCByZWxhdGVkIHNwYWNlIGluIG9uZSBi bG9jay4gKi8KLQlmYWtlZW50cnkgPSBwYWxsb2MwKHNpemVvZihGYWtlUmVsQ2FjaGVFbnRy eURhdGEpKTsKKwlmYWtlZW50cnkgPSBwYWxsb2MwX29iamVjdChGYWtlUmVsQ2FjaGVFbnRy eURhdGEpOwogCXJlbCA9IChSZWxhdGlvbikgZmFrZWVudHJ5OwogCiAJcmVsLT5yZF9yZWwg PSAmZmFrZWVudHJ5LT5wZ2M7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9iYWNrdXAvYmFz ZWJhY2t1cC5jIGIvc3JjL2JhY2tlbmQvYmFja3VwL2Jhc2ViYWNrdXAuYwppbmRleCAyYmU0 ZTA2OTgxNi4uMWY3YjQyZGEwMDkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2JhY2t1cC9i YXNlYmFja3VwLmMKKysrIGIvc3JjL2JhY2tlbmQvYmFja3VwL2Jhc2ViYWNrdXAuYwpAQCAt MjYyLDcgKzI2Miw3IEBAIHBlcmZvcm1fYmFzZV9iYWNrdXAoYmFzZWJhY2t1cF9vcHRpb25z ICpvcHQsIGJic2luayAqc2luaywKIAl0b3RhbF9jaGVja3N1bV9mYWlsdXJlcyA9IDA7CiAK IAkvKiBBbGxvY2F0ZSBiYWNrdXAgcmVsYXRlZCB2YXJpYWJsZXMuICovCi0JYmFja3VwX3N0 YXRlID0gKEJhY2t1cFN0YXRlICopIHBhbGxvYzAoc2l6ZW9mKEJhY2t1cFN0YXRlKSk7CisJ YmFja3VwX3N0YXRlID0gcGFsbG9jMF9vYmplY3QoQmFja3VwU3RhdGUpOwogCWluaXRTdHJp bmdJbmZvKCZ0YWJsZXNwYWNlX21hcCk7CiAKIAliYXNlYmFja3VwX3Byb2dyZXNzX3dhaXRf Y2hlY2twb2ludCgpOwpAQCAtMjg5LDcgKzI4OSw3IEBAIHBlcmZvcm1fYmFzZV9iYWNrdXAo YmFzZWJhY2t1cF9vcHRpb25zICpvcHQsIGJic2luayAqc2luaywKIAkJCVByZXBhcmVGb3JJ bmNyZW1lbnRhbEJhY2t1cChpYiwgYmFja3VwX3N0YXRlKTsKIAogCQkvKiBBZGQgYSBub2Rl IGZvciB0aGUgYmFzZSBkaXJlY3RvcnkgYXQgdGhlIGVuZCAqLwotCQluZXd0aSA9IHBhbGxv YzAoc2l6ZW9mKHRhYmxlc3BhY2VpbmZvKSk7CisJCW5ld3RpID0gcGFsbG9jMF9vYmplY3Qo dGFibGVzcGFjZWluZm8pOwogCQluZXd0aS0+c2l6ZSA9IC0xOwogCQlzdGF0ZS50YWJsZXNw YWNlcyA9IGxhcHBlbmQoc3RhdGUudGFibGVzcGFjZXMsIG5ld3RpKTsKIApAQCAtMTIwNiw3 ICsxMjA2LDcgQEAgc2VuZERpcihiYnNpbmsgKnNpbmssIGNvbnN0IGNoYXIgKnBhdGgsIGlu dCBiYXNlcGF0aGxlbiwgYm9vbCBzaXplb25seSwKIAkgKiBCdXQgd2UgZG9uJ3QgbmVlZCBp dCBhdCBhbGwgaWYgdGhpcyBpcyBub3QgYW4gaW5jcmVtZW50YWwgYmFja3VwLgogCSAqLwog CWlmIChpYiAhPSBOVUxMKQotCQlyZWxhdGl2ZV9ibG9ja19udW1iZXJzID0gcGFsbG9jKHNp emVvZihCbG9ja051bWJlcikgKiBSRUxTRUdfU0laRSk7CisJCXJlbGF0aXZlX2Jsb2NrX251 bWJlcnMgPSBwYWxsb2NfYXJyYXkoQmxvY2tOdW1iZXIsIFJFTFNFR19TSVpFKTsKIAogCS8q CiAJICogRGV0ZXJtaW5lIGlmIHRoZSBjdXJyZW50IHBhdGggaXMgYSBkYXRhYmFzZSBkaXJl Y3RvcnkgdGhhdCBjYW4gY29udGFpbgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYmFja3Vw L2Jhc2ViYWNrdXBfY29weS5jIGIvc3JjL2JhY2tlbmQvYmFja3VwL2Jhc2ViYWNrdXBfY29w eS5jCmluZGV4IGViNDVkM2JjYjY2Li44YmI4ZDM5MzlmZSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvYmFja3VwL2Jhc2ViYWNrdXBfY29weS5jCisrKyBiL3NyYy9iYWNrZW5kL2JhY2t1 cC9iYXNlYmFja3VwX2NvcHkuYwpAQCAtMTA3LDcgKzEwNyw3IEBAIHN0YXRpYyBjb25zdCBi YnNpbmtfb3BzIGJic2lua19jb3B5c3RyZWFtX29wcyA9IHsKIGJic2luayAqCiBiYnNpbmtf Y29weXN0cmVhbV9uZXcoYm9vbCBzZW5kX3RvX2NsaWVudCkKIHsKLQliYnNpbmtfY29weXN0 cmVhbSAqc2luayA9IHBhbGxvYzAoc2l6ZW9mKGJic2lua19jb3B5c3RyZWFtKSk7CisJYmJz aW5rX2NvcHlzdHJlYW0gKnNpbmsgPSBwYWxsb2MwX29iamVjdChiYnNpbmtfY29weXN0cmVh bSk7CiAKIAkqKChjb25zdCBiYnNpbmtfb3BzICoqKSAmc2luay0+YmFzZS5iYnNfb3BzKSA9 ICZiYnNpbmtfY29weXN0cmVhbV9vcHM7CiAJc2luay0+c2VuZF90b19jbGllbnQgPSBzZW5k X3RvX2NsaWVudDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2JhY2t1cC9iYXNlYmFja3Vw X2d6aXAuYyBiL3NyYy9iYWNrZW5kL2JhY2t1cC9iYXNlYmFja3VwX2d6aXAuYwppbmRleCBj NGNiYjVmNTI3Ni4uYWFhZDgzNDI5MWEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2JhY2t1 cC9iYXNlYmFja3VwX2d6aXAuYworKysgYi9zcmMvYmFja2VuZC9iYWNrdXAvYmFzZWJhY2t1 cF9nemlwLmMKQEAgLTc2LDcgKzc2LDcgQEAgYmJzaW5rX2d6aXBfbmV3KGJic2luayAqbmV4 dCwgcGdfY29tcHJlc3Nfc3BlY2lmaWNhdGlvbiAqY29tcHJlc3MpCiAJQXNzZXJ0KChjb21w cmVzc2xldmVsID49IDEgJiYgY29tcHJlc3NsZXZlbCA8PSA5KSB8fAogCQkgICBjb21wcmVz c2xldmVsID09IFpfREVGQVVMVF9DT01QUkVTU0lPTik7CiAKLQlzaW5rID0gcGFsbG9jMChz aXplb2YoYmJzaW5rX2d6aXApKTsKKwlzaW5rID0gcGFsbG9jMF9vYmplY3QoYmJzaW5rX2d6 aXApOwogCSooKGNvbnN0IGJic2lua19vcHMgKiopICZzaW5rLT5iYXNlLmJic19vcHMpID0g JmJic2lua19nemlwX29wczsKIAlzaW5rLT5iYXNlLmJic19uZXh0ID0gbmV4dDsKIAlzaW5r LT5jb21wcmVzc2xldmVsID0gY29tcHJlc3NsZXZlbDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2JhY2t1cC9iYXNlYmFja3VwX2luY3JlbWVudGFsLmMgYi9zcmMvYmFja2VuZC9iYWNr dXAvYmFzZWJhY2t1cF9pbmNyZW1lbnRhbC5jCmluZGV4IDg1MmFiNTc3MDQ1Li43Njc4ZTRm NmVjMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYmFja3VwL2Jhc2ViYWNrdXBfaW5jcmVt ZW50YWwuYworKysgYi9zcmMvYmFja2VuZC9iYWNrdXAvYmFzZWJhY2t1cF9pbmNyZW1lbnRh bC5jCkBAIC0xNTcsNyArMTU3LDcgQEAgQ3JlYXRlSW5jcmVtZW50YWxCYWNrdXBJbmZvKE1l bW9yeUNvbnRleHQgbWN4dCkKIAogCW9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNo VG8obWN4dCk7CiAKLQlpYiA9IHBhbGxvYzAoc2l6ZW9mKEluY3JlbWVudGFsQmFja3VwSW5m bykpOworCWliID0gcGFsbG9jMF9vYmplY3QoSW5jcmVtZW50YWxCYWNrdXBJbmZvKTsKIAlp Yi0+bWN4dCA9IG1jeHQ7CiAJaW5pdFN0cmluZ0luZm8oJmliLT5idWYpOwogCkBAIC0xNjks NyArMTY5LDcgQEAgQ3JlYXRlSW5jcmVtZW50YWxCYWNrdXBJbmZvKE1lbW9yeUNvbnRleHQg bWN4dCkKIAkgKi8KIAlpYi0+bWFuaWZlc3RfZmlsZXMgPSBiYWNrdXBfZmlsZV9jcmVhdGUo bWN4dCwgMTAwMDAsIE5VTEwpOwogCi0JY29udGV4dCA9IHBhbGxvYzAoc2l6ZW9mKEpzb25N YW5pZmVzdFBhcnNlQ29udGV4dCkpOworCWNvbnRleHQgPSBwYWxsb2MwX29iamVjdChKc29u TWFuaWZlc3RQYXJzZUNvbnRleHQpOwogCS8qIFBhcnNlIHRoZSBtYW5pZmVzdC4gKi8KIAlj b250ZXh0LT5wcml2YXRlX2RhdGEgPSBpYjsKIAljb250ZXh0LT52ZXJzaW9uX2NiID0gbWFu aWZlc3RfcHJvY2Vzc192ZXJzaW9uOwpAQCAtOTkzLDcgKzk5Myw3IEBAIG1hbmlmZXN0X3By b2Nlc3Nfd2FsX3JhbmdlKEpzb25NYW5pZmVzdFBhcnNlQ29udGV4dCAqY29udGV4dCwKIAkJ CQkJCSAgIFhMb2dSZWNQdHIgZW5kX2xzbikKIHsKIAlJbmNyZW1lbnRhbEJhY2t1cEluZm8g KmliID0gY29udGV4dC0+cHJpdmF0ZV9kYXRhOwotCWJhY2t1cF93YWxfcmFuZ2UgKnJhbmdl ID0gcGFsbG9jKHNpemVvZihiYWNrdXBfd2FsX3JhbmdlKSk7CisJYmFja3VwX3dhbF9yYW5n ZSAqcmFuZ2UgPSBwYWxsb2Nfb2JqZWN0KGJhY2t1cF93YWxfcmFuZ2UpOwogCiAJcmFuZ2Ut PnRsaSA9IHRsaTsKIAlyYW5nZS0+c3RhcnRfbHNuID0gc3RhcnRfbHNuOwpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvYmFja3VwL2Jhc2ViYWNrdXBfbHo0LmMgYi9zcmMvYmFja2VuZC9i YWNrdXAvYmFzZWJhY2t1cF9sejQuYwppbmRleCBjNWNlY2NiODQ2Zi4uYmQ1NzA0NTIwZmIg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2JhY2t1cC9iYXNlYmFja3VwX2x6NC5jCisrKyBi L3NyYy9iYWNrZW5kL2JhY2t1cC9iYXNlYmFja3VwX2x6NC5jCkBAIC03NSw3ICs3NSw3IEBA IGJic2lua19sejRfbmV3KGJic2luayAqbmV4dCwgcGdfY29tcHJlc3Nfc3BlY2lmaWNhdGlv biAqY29tcHJlc3MpCiAJY29tcHJlc3NsZXZlbCA9IGNvbXByZXNzLT5sZXZlbDsKIAlBc3Nl cnQoY29tcHJlc3NsZXZlbCA+PSAwICYmIGNvbXByZXNzbGV2ZWwgPD0gMTIpOwogCi0Jc2lu ayA9IHBhbGxvYzAoc2l6ZW9mKGJic2lua19sejQpKTsKKwlzaW5rID0gcGFsbG9jMF9vYmpl Y3QoYmJzaW5rX2x6NCk7CiAJKigoY29uc3QgYmJzaW5rX29wcyAqKikgJnNpbmstPmJhc2Uu YmJzX29wcykgPSAmYmJzaW5rX2x6NF9vcHM7CiAJc2luay0+YmFzZS5iYnNfbmV4dCA9IG5l eHQ7CiAJc2luay0+Y29tcHJlc3NsZXZlbCA9IGNvbXByZXNzbGV2ZWw7CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9iYWNrdXAvYmFzZWJhY2t1cF9wcm9ncmVzcy5jIGIvc3JjL2JhY2tl bmQvYmFja3VwL2Jhc2ViYWNrdXBfcHJvZ3Jlc3MuYwppbmRleCBkYWMyMDU5MzYyMi4uZDc4 M2M5ZjU3MzggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2JhY2t1cC9iYXNlYmFja3VwX3By b2dyZXNzLmMKKysrIGIvc3JjL2JhY2tlbmQvYmFja3VwL2Jhc2ViYWNrdXBfcHJvZ3Jlc3Mu YwpAQCAtNjIsNyArNjIsNyBAQCBiYnNpbmtfcHJvZ3Jlc3NfbmV3KGJic2luayAqbmV4dCwg Ym9vbCBlc3RpbWF0ZV9iYWNrdXBfc2l6ZSwgYm9vbCBpbmNyZW1lbnRhbCkKIAogCUFzc2Vy dChuZXh0ICE9IE5VTEwpOwogCi0Jc2luayA9IHBhbGxvYzAoc2l6ZW9mKGJic2luaykpOwor CXNpbmsgPSBwYWxsb2MwX29iamVjdChiYnNpbmspOwogCSooKGNvbnN0IGJic2lua19vcHMg KiopICZzaW5rLT5iYnNfb3BzKSA9ICZiYnNpbmtfcHJvZ3Jlc3Nfb3BzOwogCXNpbmstPmJi c19uZXh0ID0gbmV4dDsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYmFja3VwL2Jhc2Vi YWNrdXBfc2VydmVyLmMgYi9zcmMvYmFja2VuZC9iYWNrdXAvYmFzZWJhY2t1cF9zZXJ2ZXIu YwppbmRleCBmNWMwYzYxNjQwYS4uNzUxMGVjMDZmNWUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2JhY2t1cC9iYXNlYmFja3VwX3NlcnZlci5jCisrKyBiL3NyYy9iYWNrZW5kL2JhY2t1 cC9iYXNlYmFja3VwX3NlcnZlci5jCkBAIC01OSw3ICs1OSw3IEBAIHN0YXRpYyBjb25zdCBi YnNpbmtfb3BzIGJic2lua19zZXJ2ZXJfb3BzID0gewogYmJzaW5rICoKIGJic2lua19zZXJ2 ZXJfbmV3KGJic2luayAqbmV4dCwgY2hhciAqcGF0aG5hbWUpCiB7Ci0JYmJzaW5rX3NlcnZl ciAqc2luayA9IHBhbGxvYzAoc2l6ZW9mKGJic2lua19zZXJ2ZXIpKTsKKwliYnNpbmtfc2Vy dmVyICpzaW5rID0gcGFsbG9jMF9vYmplY3QoYmJzaW5rX3NlcnZlcik7CiAKIAkqKChjb25z dCBiYnNpbmtfb3BzICoqKSAmc2luay0+YmFzZS5iYnNfb3BzKSA9ICZiYnNpbmtfc2VydmVy X29wczsKIAlzaW5rLT5wYXRobmFtZSA9IHBhdGhuYW1lOwpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvYmFja3VwL2Jhc2ViYWNrdXBfdGFyZ2V0LmMgYi9zcmMvYmFja2VuZC9iYWNrdXAv YmFzZWJhY2t1cF90YXJnZXQuYwppbmRleCA4NGIxMzA5ZDNiZC4uOGI3NDgyOGFlZDYgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2JhY2t1cC9iYXNlYmFja3VwX3RhcmdldC5jCisrKyBi L3NyYy9iYWNrZW5kL2JhY2t1cC9iYXNlYmFja3VwX3RhcmdldC5jCkBAIC05Niw3ICs5Niw3 IEBAIEJhc2VCYWNrdXBBZGRUYXJnZXQoY2hhciAqbmFtZSwKIAkgKiBuYW1lIGludG8gYSBu ZXdseS1hbGxvY2F0ZWQgY2h1bmsgb2YgbWVtb3J5LgogCSAqLwogCW9sZGNvbnRleHQgPSBN ZW1vcnlDb250ZXh0U3dpdGNoVG8oVG9wTWVtb3J5Q29udGV4dCk7Ci0JbmV3dHlwZSA9IHBh bGxvYyhzaXplb2YoQmFzZUJhY2t1cFRhcmdldFR5cGUpKTsKKwluZXd0eXBlID0gcGFsbG9j X29iamVjdChCYXNlQmFja3VwVGFyZ2V0VHlwZSk7CiAJbmV3dHlwZS0+bmFtZSA9IHBzdHJk dXAobmFtZSk7CiAJbmV3dHlwZS0+Y2hlY2tfZGV0YWlsID0gY2hlY2tfZGV0YWlsOwogCW5l d3R5cGUtPmdldF9zaW5rID0gZ2V0X3Npbms7CkBAIC0xMzIsNyArMTMyLDcgQEAgQmFzZUJh Y2t1cEdldFRhcmdldEhhbmRsZShjaGFyICp0YXJnZXQsIGNoYXIgKnRhcmdldF9kZXRhaWwp CiAJCQlCYXNlQmFja3VwVGFyZ2V0SGFuZGxlICpoYW5kbGU7CiAKIAkJCS8qIEZvdW5kIHRo ZSB0YXJnZXQuICovCi0JCQloYW5kbGUgPSBwYWxsb2Moc2l6ZW9mKEJhc2VCYWNrdXBUYXJn ZXRIYW5kbGUpKTsKKwkJCWhhbmRsZSA9IHBhbGxvY19vYmplY3QoQmFzZUJhY2t1cFRhcmdl dEhhbmRsZSk7CiAJCQloYW5kbGUtPnR5cGUgPSB0dHlwZTsKIAkJCWhhbmRsZS0+ZGV0YWls X2FyZyA9IHR0eXBlLT5jaGVja19kZXRhaWwodGFyZ2V0LCB0YXJnZXRfZGV0YWlsKTsKIApk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYmFja3VwL2Jhc2ViYWNrdXBfdGhyb3R0bGUuYyBi L3NyYy9iYWNrZW5kL2JhY2t1cC9iYXNlYmFja3VwX3Rocm90dGxlLmMKaW5kZXggYjJiNzQz MjM4ZjkuLjk1NzQ2YzNlYTQwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9iYWNrdXAvYmFz ZWJhY2t1cF90aHJvdHRsZS5jCisrKyBiL3NyYy9iYWNrZW5kL2JhY2t1cC9iYXNlYmFja3Vw X3Rocm90dGxlLmMKQEAgLTcyLDcgKzcyLDcgQEAgYmJzaW5rX3Rocm90dGxlX25ldyhiYnNp bmsgKm5leHQsIHVpbnQzMiBtYXhyYXRlKQogCUFzc2VydChuZXh0ICE9IE5VTEwpOwogCUFz c2VydChtYXhyYXRlID4gMCk7CiAKLQlzaW5rID0gcGFsbG9jMChzaXplb2YoYmJzaW5rX3Ro cm90dGxlKSk7CisJc2luayA9IHBhbGxvYzBfb2JqZWN0KGJic2lua190aHJvdHRsZSk7CiAJ KigoY29uc3QgYmJzaW5rX29wcyAqKikgJnNpbmstPmJhc2UuYmJzX29wcykgPSAmYmJzaW5r X3Rocm90dGxlX29wczsKIAlzaW5rLT5iYXNlLmJic19uZXh0ID0gbmV4dDsKIApkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvYmFja3VwL2Jhc2ViYWNrdXBfenN0ZC5jIGIvc3JjL2JhY2tl bmQvYmFja3VwL2Jhc2ViYWNrdXBfenN0ZC5jCmluZGV4IDE4YjJlOGZiMGIzLi42NDdlZTBl Yjk3OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYmFja3VwL2Jhc2ViYWNrdXBfenN0ZC5j CisrKyBiL3NyYy9iYWNrZW5kL2JhY2t1cC9iYXNlYmFja3VwX3pzdGQuYwpAQCAtNzAsNyAr NzAsNyBAQCBiYnNpbmtfenN0ZF9uZXcoYmJzaW5rICpuZXh0LCBwZ19jb21wcmVzc19zcGVj aWZpY2F0aW9uICpjb21wcmVzcykKIAogCUFzc2VydChuZXh0ICE9IE5VTEwpOwogCi0Jc2lu ayA9IHBhbGxvYzAoc2l6ZW9mKGJic2lua196c3RkKSk7CisJc2luayA9IHBhbGxvYzBfb2Jq ZWN0KGJic2lua196c3RkKTsKIAkqKChjb25zdCBiYnNpbmtfb3BzICoqKSAmc2luay0+YmFz ZS5iYnNfb3BzKSA9ICZiYnNpbmtfenN0ZF9vcHM7CiAJc2luay0+YmFzZS5iYnNfbmV4dCA9 IG5leHQ7CiAJc2luay0+Y29tcHJlc3MgPSBjb21wcmVzczsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2JhY2t1cC93YWxzdW1tYXJ5LmMgYi9zcmMvYmFja2VuZC9iYWNrdXAvd2Fsc3Vt bWFyeS5jCmluZGV4IDI2ODllYWUzMzI4Li5hODQzODc2MzM3YiAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvYmFja3VwL3dhbHN1bW1hcnkuYworKysgYi9zcmMvYmFja2VuZC9iYWNrdXAv d2Fsc3VtbWFyeS5jCkBAIC03Myw3ICs3Myw3IEBAIEdldFdhbFN1bW1hcmllcyhUaW1lTGlu ZUlEIHRsaSwgWExvZ1JlY1B0ciBzdGFydF9sc24sIFhMb2dSZWNQdHIgZW5kX2xzbikKIAkJ CWNvbnRpbnVlOwogCiAJCS8qIEFkZCBpdCB0byB0aGUgbGlzdC4gKi8KLQkJd3MgPSBwYWxs b2Moc2l6ZW9mKFdhbFN1bW1hcnlGaWxlKSk7CisJCXdzID0gcGFsbG9jX29iamVjdChXYWxT dW1tYXJ5RmlsZSk7CiAJCXdzLT50bGkgPSBmaWxlX3RsaTsKIAkJd3MtPnN0YXJ0X2xzbiA9 IGZpbGVfc3RhcnRfbHNuOwogCQl3cy0+ZW5kX2xzbiA9IGZpbGVfZW5kX2xzbjsKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2Jvb3RzdHJhcC9ib290c3RyYXAuYyBiL3NyYy9iYWNrZW5k L2Jvb3RzdHJhcC9ib290c3RyYXAuYwppbmRleCBmYzg2MzhjMWI2MS4uNDk4NmIxZWE3ZWQg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Jvb3RzdHJhcC9ib290c3RyYXAuYworKysgYi9z cmMvYmFja2VuZC9ib290c3RyYXAvYm9vdHN0cmFwLmMKQEAgLTc0Miw3ICs3NDIsNyBAQCBw b3B1bGF0ZV90eXBfbGlzdCh2b2lkKQogCQlGb3JtX3BnX3R5cGUgdHlwRm9ybSA9IChGb3Jt X3BnX3R5cGUpIEdFVFNUUlVDVCh0dXApOwogCQlzdHJ1Y3QgdHlwbWFwICpuZXd0eXA7CiAK LQkJbmV3dHlwID0gKHN0cnVjdCB0eXBtYXAgKikgcGFsbG9jKHNpemVvZihzdHJ1Y3QgdHlw bWFwKSk7CisJCW5ld3R5cCA9IHBhbGxvY19vYmplY3Qoc3RydWN0IHR5cG1hcCk7CiAJCVR5 cCA9IGxhcHBlbmQoVHlwLCBuZXd0eXApOwogCiAJCW5ld3R5cC0+YW1fb2lkID0gdHlwRm9y bS0+b2lkOwpAQCAtOTUxLDEwICs5NTEsMTAgQEAgaW5kZXhfcmVnaXN0ZXIoT2lkIGhlYXAs CiAKIAlvbGRjeHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8obm9nYyk7CiAKLQluZXdpbmQg PSAoSW5kZXhMaXN0ICopIHBhbGxvYyhzaXplb2YoSW5kZXhMaXN0KSk7CisJbmV3aW5kID0g cGFsbG9jX29iamVjdChJbmRleExpc3QpOwogCW5ld2luZC0+aWxfaGVhcCA9IGhlYXA7CiAJ bmV3aW5kLT5pbF9pbmQgPSBpbmQ7Ci0JbmV3aW5kLT5pbF9pbmZvID0gKEluZGV4SW5mbyAq KSBwYWxsb2Moc2l6ZW9mKEluZGV4SW5mbykpOworCW5ld2luZC0+aWxfaW5mbyA9IHBhbGxv Y19vYmplY3QoSW5kZXhJbmZvKTsKIAogCW1lbWNweShuZXdpbmQtPmlsX2luZm8sIGluZGV4 SW5mbywgc2l6ZW9mKEluZGV4SW5mbykpOwogCS8qIGV4cHJlc3Npb25zIHdpbGwgbGlrZWx5 IGJlIG51bGwsIGJ1dCBtYXkgYXMgd2VsbCBjb3B5IGl0ICovCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9jYXRhbG9nL2RlcGVuZGVuY3kuYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvZGVw ZW5kZW5jeS5jCmluZGV4IDhlNzBhODVhM2Y3Li44MzhlZDI2ZDZiOSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvY2F0YWxvZy9kZXBlbmRlbmN5LmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0 YWxvZy9kZXBlbmRlbmN5LmMKQEAgLTgwMSw4ICs4MDEsNyBAQCBmaW5kRGVwZW5kZW50T2Jq ZWN0cyhjb25zdCBPYmplY3RBZGRyZXNzICpvYmplY3QsCiAJICogcmVncmVzc2lvbiB0ZXN0 aW5nLikKIAkgKi8KIAltYXhEZXBlbmRlbnRPYmplY3RzID0gMTI4OwkvKiBhcmJpdHJhcnkg aW5pdGlhbCBhbGxvY2F0aW9uICovCi0JZGVwZW5kZW50T2JqZWN0cyA9IChPYmplY3RBZGRy ZXNzQW5kRmxhZ3MgKikKLQkJcGFsbG9jKG1heERlcGVuZGVudE9iamVjdHMgKiBzaXplb2Yo T2JqZWN0QWRkcmVzc0FuZEZsYWdzKSk7CisJZGVwZW5kZW50T2JqZWN0cyA9IHBhbGxvY19h cnJheShPYmplY3RBZGRyZXNzQW5kRmxhZ3MsIG1heERlcGVuZGVudE9iamVjdHMpOwogCW51 bURlcGVuZGVudE9iamVjdHMgPSAwOwogCiAJU2NhbktleUluaXQoJmtleVswXSwKQEAgLTI2 MTYsMTIgKzI2MTUsMTEgQEAgbmV3X29iamVjdF9hZGRyZXNzZXModm9pZCkKIHsKIAlPYmpl Y3RBZGRyZXNzZXMgKmFkZHJzOwogCi0JYWRkcnMgPSBwYWxsb2Moc2l6ZW9mKE9iamVjdEFk ZHJlc3NlcykpOworCWFkZHJzID0gcGFsbG9jX29iamVjdChPYmplY3RBZGRyZXNzZXMpOwog CiAJYWRkcnMtPm51bXJlZnMgPSAwOwogCWFkZHJzLT5tYXhyZWZzID0gMzI7Ci0JYWRkcnMt PnJlZnMgPSAoT2JqZWN0QWRkcmVzcyAqKQotCQlwYWxsb2MoYWRkcnMtPm1heHJlZnMgKiBz aXplb2YoT2JqZWN0QWRkcmVzcykpOworCWFkZHJzLT5yZWZzID0gcGFsbG9jX2FycmF5KE9i amVjdEFkZHJlc3MsIGFkZHJzLT5tYXhyZWZzKTsKIAlhZGRycy0+ZXh0cmFzID0gTlVMTDsJ CS8qIHVudGlsL3VubGVzcyBuZWVkZWQgKi8KIAogCXJldHVybiBhZGRyczsKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaGVhcC5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9o ZWFwLmMKaW5kZXggZmQ2NTM3NTY3ZWEuLjI2NWNjM2U1ZmJmIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9jYXRhbG9nL2hlYXAuYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2hlYXAu YwpAQCAtNzMyLDcgKzczMiw3IEBAIEluc2VydFBnQXR0cmlidXRlVHVwbGVzKFJlbGF0aW9u IHBnX2F0dHJpYnV0ZV9yZWwsCiAJLyogSW5pdGlhbGl6ZSB0aGUgbnVtYmVyIG9mIHNsb3Rz IHRvIHVzZSAqLwogCW5zbG90cyA9IE1pbih0dXBkZXNjLT5uYXR0cywKIAkJCQkgKE1BWF9D QVRBTE9HX01VTFRJX0lOU0VSVF9CWVRFUyAvIHNpemVvZihGb3JtRGF0YV9wZ19hdHRyaWJ1 dGUpKSk7Ci0Jc2xvdCA9IHBhbGxvYyhzaXplb2YoVHVwbGVUYWJsZVNsb3QgKikgKiBuc2xv dHMpOworCXNsb3QgPSBwYWxsb2NfYXJyYXkoVHVwbGVUYWJsZVNsb3QgKiwgbnNsb3RzKTsK IAlmb3IgKGludCBpID0gMDsgaSA8IG5zbG90czsgaSsrKQogCQlzbG90W2ldID0gTWFrZVNp bmdsZVR1cGxlVGFibGVTbG90KHRkLCAmVFRTT3BzSGVhcFR1cGxlKTsKIApAQCAtMjQ1OSw3 ICsyNDU5LDcgQEAgQWRkUmVsYXRpb25OZXdDb25zdHJhaW50cyhSZWxhdGlvbiByZWwsCiAK IAkJZGVmT2lkID0gU3RvcmVBdHRyRGVmYXVsdChyZWwsIGNvbERlZi0+YXR0bnVtLCBleHBy LCBpc19pbnRlcm5hbCk7CiAKLQkJY29va2VkID0gKENvb2tlZENvbnN0cmFpbnQgKikgcGFs bG9jKHNpemVvZihDb29rZWRDb25zdHJhaW50KSk7CisJCWNvb2tlZCA9IHBhbGxvY19vYmpl Y3QoQ29va2VkQ29uc3RyYWludCk7CiAJCWNvb2tlZC0+Y29udHlwZSA9IENPTlNUUl9ERUZB VUxUOwogCQljb29rZWQtPmNvbm9pZCA9IGRlZk9pZDsKIAkJY29va2VkLT5uYW1lID0gTlVM TDsKQEAgLTI1OTMsNyArMjU5Myw3IEBAIEFkZFJlbGF0aW9uTmV3Q29uc3RyYWludHMoUmVs YXRpb24gcmVsLAogCiAJCQludW1jaGVja3MrKzsKIAotCQkJY29va2VkID0gKENvb2tlZENv bnN0cmFpbnQgKikgcGFsbG9jKHNpemVvZihDb29rZWRDb25zdHJhaW50KSk7CisJCQljb29r ZWQgPSBwYWxsb2Nfb2JqZWN0KENvb2tlZENvbnN0cmFpbnQpOwogCQkJY29va2VkLT5jb250 eXBlID0gQ09OU1RSX0NIRUNLOwogCQkJY29va2VkLT5jb25vaWQgPSBjb25zdHJPaWQ7CiAJ CQljb29rZWQtPm5hbWUgPSBjY25hbWU7CkBAIC0yNjY5LDcgKzI2NjksNyBAQCBBZGRSZWxh dGlvbk5ld0NvbnN0cmFpbnRzKFJlbGF0aW9uIHJlbCwKIAkJCQkJCQkJaW5oY291bnQsCiAJ CQkJCQkJCWNkZWYtPmlzX25vX2luaGVyaXQpOwogCi0JCQlubmNvb2tlZCA9IChDb29rZWRD b25zdHJhaW50ICopIHBhbGxvYyhzaXplb2YoQ29va2VkQ29uc3RyYWludCkpOworCQkJbm5j b29rZWQgPSBwYWxsb2Nfb2JqZWN0KENvb2tlZENvbnN0cmFpbnQpOwogCQkJbm5jb29rZWQt PmNvbnR5cGUgPSBDT05TVFJfTk9UTlVMTDsKIAkJCW5uY29va2VkLT5jb25vaWQgPSBjb25z dHJPaWQ7CiAJCQlubmNvb2tlZC0+bmFtZSA9IG5ubmFtZTsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2NhdGFsb2cvaW5kZXguYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYwpp bmRleCA1ZDlkYjE2N2U1OS4uZDk0Y2E3ZWE1M2EgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2NhdGFsb2cvaW5kZXguYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMKQEAg LTE0MTQsNyArMTQxNCw3IEBAIGluZGV4X2NvbmN1cnJlbnRseV9jcmVhdGVfY29weShSZWxh dGlvbiBoZWFwUmVsYXRpb24sIE9pZCBvbGRJbmRleElkLAogCX0KIAogCS8qIEV4dHJhY3Qg b3BjbGFzcyBvcHRpb25zIGZvciBlYWNoIGF0dHJpYnV0ZSAqLwotCW9wY2xhc3NPcHRpb25z ID0gcGFsbG9jMChzaXplb2YoRGF0dW0pICogbmV3SW5mby0+aWlfTnVtSW5kZXhBdHRycyk7 CisJb3BjbGFzc09wdGlvbnMgPSBwYWxsb2MwX2FycmF5KERhdHVtLCBuZXdJbmZvLT5paV9O dW1JbmRleEF0dHJzKTsKIAlmb3IgKGludCBpID0gMDsgaSA8IG5ld0luZm8tPmlpX051bUlu ZGV4QXR0cnM7IGkrKykKIAkJb3BjbGFzc09wdGlvbnNbaV0gPSBnZXRfYXR0b3B0aW9ucyhv bGRJbmRleElkLCBpICsgMSk7CiAKQEAgLTI2NzgsOSArMjY3OCw5IEBAIEJ1aWxkU3BlY3Vs YXRpdmVJbmRleEluZm8oUmVsYXRpb24gaW5kZXgsIEluZGV4SW5mbyAqaWkpCiAJICovCiAJ QXNzZXJ0KGlpLT5paV9VbmlxdWUpOwogCi0JaWktPmlpX1VuaXF1ZU9wcyA9IChPaWQgKikg cGFsbG9jKHNpemVvZihPaWQpICogaW5kbmtleWF0dHMpOwotCWlpLT5paV9VbmlxdWVQcm9j cyA9IChPaWQgKikgcGFsbG9jKHNpemVvZihPaWQpICogaW5kbmtleWF0dHMpOwotCWlpLT5p aV9VbmlxdWVTdHJhdHMgPSAodWludDE2ICopIHBhbGxvYyhzaXplb2YodWludDE2KSAqIGlu ZG5rZXlhdHRzKTsKKwlpaS0+aWlfVW5pcXVlT3BzID0gKE9pZCAqKSBwYWxsb2NfYXJyYXko T2lkLCBpbmRua2V5YXR0cyk7CisJaWktPmlpX1VuaXF1ZVByb2NzID0gKE9pZCAqKSBwYWxs b2NfYXJyYXkoT2lkLCBpbmRua2V5YXR0cyk7CisJaWktPmlpX1VuaXF1ZVN0cmF0cyA9ICh1 aW50MTYgKikgcGFsbG9jX2FycmF5KHVpbnQxNiwgaW5kbmtleWF0dHMpOwogCiAJLyoKIAkg KiBXZSBoYXZlIHRvIGxvb2sgdXAgdGhlIG9wZXJhdG9yJ3Mgc3RyYXRlZ3kgbnVtYmVyLiAg VGhpcyBwcm92aWRlcyBhCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL25hbWVz cGFjZS5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9uYW1lc3BhY2UuYwppbmRleCBkMjM0NzRk YTRmYi4uYzk0MDg5Y2FhNTggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvbmFt ZXNwYWNlLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9uYW1lc3BhY2UuYwpAQCAtMzky OSw3ICszOTI5LDcgQEAgR2V0U2VhcmNoUGF0aE1hdGNoZXIoTWVtb3J5Q29udGV4dCBjb250 ZXh0KQogCiAJb2xkY3h0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKGNvbnRleHQpOwogCi0J cmVzdWx0ID0gKFNlYXJjaFBhdGhNYXRjaGVyICopIHBhbGxvYzAoc2l6ZW9mKFNlYXJjaFBh dGhNYXRjaGVyKSk7CisJcmVzdWx0ID0gcGFsbG9jMF9vYmplY3QoU2VhcmNoUGF0aE1hdGNo ZXIpOwogCXNjaGVtYXMgPSBsaXN0X2NvcHkoYWN0aXZlU2VhcmNoUGF0aCk7CiAJd2hpbGUg KHNjaGVtYXMgJiYgbGluaXRpYWxfb2lkKHNjaGVtYXMpICE9IGFjdGl2ZUNyZWF0aW9uTmFt ZXNwYWNlKQogCXsKQEAgLTM5NjAsNyArMzk2MCw3IEBAIENvcHlTZWFyY2hQYXRoTWF0Y2hl cihTZWFyY2hQYXRoTWF0Y2hlciAqcGF0aCkKIHsKIAlTZWFyY2hQYXRoTWF0Y2hlciAqcmVz dWx0OwogCi0JcmVzdWx0ID0gKFNlYXJjaFBhdGhNYXRjaGVyICopIHBhbGxvYyhzaXplb2Yo U2VhcmNoUGF0aE1hdGNoZXIpKTsKKwlyZXN1bHQgPSBwYWxsb2Nfb2JqZWN0KFNlYXJjaFBh dGhNYXRjaGVyKTsKIAlyZXN1bHQtPnNjaGVtYXMgPSBsaXN0X2NvcHkocGF0aC0+c2NoZW1h cyk7CiAJcmVzdWx0LT5hZGRDYXRhbG9nID0gcGF0aC0+YWRkQ2F0YWxvZzsKIAlyZXN1bHQt PmFkZFRlbXAgPSBwYXRoLT5hZGRUZW1wOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0 YWxvZy9vYmplY3RhZGRyZXNzLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL29iamVjdGFkZHJl c3MuYwppbmRleCBjNzViNzEzMWVkNy4uZmE2YzZkZjU5OGEgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2NhdGFsb2cvb2JqZWN0YWRkcmVzcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFs b2cvb2JqZWN0YWRkcmVzcy5jCkBAIC02MTQ0LDggKzYxNDQsOCBAQCBzdHJsaXN0X3RvX3Rl eHRhcnJheShMaXN0ICpsaXN0KQogCQkJCQkJCQkgICBBTExPQ1NFVF9ERUZBVUxUX1NJWkVT KTsKIAlvbGRjeHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8obWVtY3h0KTsKIAotCWRhdHVt cyA9IChEYXR1bSAqKSBwYWxsb2Moc2l6ZW9mKERhdHVtKSAqIGxpc3RfbGVuZ3RoKGxpc3Qp KTsKLQludWxscyA9IHBhbGxvYyhzaXplb2YoYm9vbCkgKiBsaXN0X2xlbmd0aChsaXN0KSk7 CisJZGF0dW1zID0gcGFsbG9jX2FycmF5KERhdHVtLCBsaXN0X2xlbmd0aChsaXN0KSk7CisJ bnVsbHMgPSBwYWxsb2NfYXJyYXkoYm9vbCwgbGlzdF9sZW5ndGgobGlzdCkpOwogCiAJZm9y ZWFjaChjZWxsLCBsaXN0KQogCXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cv cGdfY29uc3RyYWludC5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19jb25zdHJhaW50LmMK aW5kZXggOTk0NGU0YmQyZDEuLmZhNzNjYTE3OGM1IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9jYXRhbG9nL3BnX2NvbnN0cmFpbnQuYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3Bn X2NvbnN0cmFpbnQuYwpAQCAtODQ2LDcgKzg0Niw3IEBAIFJlbGF0aW9uR2V0Tm90TnVsbENv bnN0cmFpbnRzKE9pZCByZWxpZCwgYm9vbCBjb29rZWQsIGJvb2wgaW5jbHVkZV9ub2luaCkK IAkJewogCQkJQ29va2VkQ29uc3RyYWludCAqY29va2VkOwogCi0JCQljb29rZWQgPSAoQ29v a2VkQ29uc3RyYWludCAqKSBwYWxsb2Moc2l6ZW9mKENvb2tlZENvbnN0cmFpbnQpKTsKKwkJ CWNvb2tlZCA9IHBhbGxvY19vYmplY3QoQ29va2VkQ29uc3RyYWludCk7CiAKIAkJCWNvb2tl ZC0+Y29udHlwZSA9IENPTlNUUl9OT1ROVUxMOwogCQkJY29va2VkLT5jb25vaWQgPSBjb25G b3JtLT5vaWQ7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX2RlcGVuZC5j IGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19kZXBlbmQuYwppbmRleCBjOGIxMWY4ODdlMi4u YTZmNjNlMTA3YmIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfZGVwZW5k LmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19kZXBlbmQuYwpAQCAtODgsNyArODgs NyBAQCByZWNvcmRNdWx0aXBsZURlcGVuZGVuY2llcyhjb25zdCBPYmplY3RBZGRyZXNzICpk ZXBlbmRlciwKIAkgKi8KIAltYXhfc2xvdHMgPSBNaW4obnJlZmVyZW5jZWQsCiAJCQkJCU1B WF9DQVRBTE9HX01VTFRJX0lOU0VSVF9CWVRFUyAvIHNpemVvZihGb3JtRGF0YV9wZ19kZXBl bmQpKTsKLQlzbG90ID0gcGFsbG9jKHNpemVvZihUdXBsZVRhYmxlU2xvdCAqKSAqIG1heF9z bG90cyk7CisJc2xvdCA9IHBhbGxvY19hcnJheShUdXBsZVRhYmxlU2xvdCAqLCBtYXhfc2xv dHMpOwogCiAJLyogRG9uJ3Qgb3BlbiBpbmRleGVzIHVubGVzcyB3ZSBuZWVkIHRvIG1ha2Ug YW4gdXBkYXRlICovCiAJaW5kc3RhdGUgPSBOVUxMOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvY2F0YWxvZy9wZ19lbnVtLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX2VudW0uYwpp bmRleCBkYTljMmE0NmNmYS4uMDc5OTg4MzlhZmYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2NhdGFsb2cvcGdfZW51bS5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfZW51bS5j CkBAIC0xMjAsNyArMTIwLDcgQEAgRW51bVZhbHVlc0NyZWF0ZShPaWQgZW51bVR5cGVPaWQs IExpc3QgKnZhbHMpCiAJICogYWxsb2NhdGluZyB0aGUgbmV4dCksIHRyb3VibGUgY291bGQg b25seSBvY2N1ciBpZiB0aGUgT0lEIGNvdW50ZXIgd3JhcHMKIAkgKiBhbGwgdGhlIHdheSBh cm91bmQgYmVmb3JlIHdlIGZpbmlzaC4gV2hpY2ggc2VlbXMgdW5saWtlbHkuCiAJICovCi0J b2lkcyA9IChPaWQgKikgcGFsbG9jKG51bV9lbGVtcyAqIHNpemVvZihPaWQpKTsKKwlvaWRz ID0gcGFsbG9jX2FycmF5KE9pZCwgbnVtX2VsZW1zKTsKIAogCWZvciAoZWxlbW5vID0gMDsg ZWxlbW5vIDwgbnVtX2VsZW1zOyBlbGVtbm8rKykKIAl7CkBAIC0xNDgsNyArMTQ4LDcgQEAg RW51bVZhbHVlc0NyZWF0ZShPaWQgZW51bVR5cGVPaWQsIExpc3QgKnZhbHMpCiAJLyogYWxs b2NhdGUgdGhlIHNsb3RzIHRvIHVzZSBhbmQgaW5pdGlhbGl6ZSB0aGVtICovCiAJbnNsb3Rz ID0gTWluKG51bV9lbGVtcywKIAkJCQkgTUFYX0NBVEFMT0dfTVVMVElfSU5TRVJUX0JZVEVT IC8gc2l6ZW9mKEZvcm1EYXRhX3BnX2VudW0pKTsKLQlzbG90ID0gcGFsbG9jKHNpemVvZihU dXBsZVRhYmxlU2xvdCAqKSAqIG5zbG90cyk7CisJc2xvdCA9IHBhbGxvY19hcnJheShUdXBs ZVRhYmxlU2xvdCAqLCBuc2xvdHMpOwogCWZvciAoaW50IGkgPSAwOyBpIDwgbnNsb3RzOyBp KyspCiAJCXNsb3RbaV0gPSBNYWtlU2luZ2xlVHVwbGVUYWJsZVNsb3QoUmVsYXRpb25HZXRE ZXNjcihwZ19lbnVtKSwKIAkJCQkJCQkJCQkgICAmVFRTT3BzSGVhcFR1cGxlKTsKQEAgLTM3 NSw3ICszNzUsNyBAQCByZXN0YXJ0OgogCW5lbGVtcyA9IGxpc3QtPm5fbWVtYmVyczsKIAog CS8qIFNvcnQgdGhlIGV4aXN0aW5nIG1lbWJlcnMgYnkgZW51bXNvcnRvcmRlciAqLwotCWV4 aXN0aW5nID0gKEhlYXBUdXBsZSAqKSBwYWxsb2MobmVsZW1zICogc2l6ZW9mKEhlYXBUdXBs ZSkpOworCWV4aXN0aW5nID0gcGFsbG9jX2FycmF5KEhlYXBUdXBsZSwgbmVsZW1zKTsKIAlm b3IgKGkgPSAwOyBpIDwgbmVsZW1zOyBpKyspCiAJCWV4aXN0aW5nW2ldID0gJihsaXN0LT5t ZW1iZXJzW2ldLT50dXBsZSk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cv cGdfcHVibGljYXRpb24uYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcHVibGljYXRpb24u YwppbmRleCAwOTk0MjIwYzUzZC4uYmU1ZWY1ZTRjMGUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2NhdGFsb2cvcGdfcHVibGljYXRpb24uYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9n L3BnX3B1YmxpY2F0aW9uLmMKQEAgLTEwODYsNyArMTA4Niw3IEBAIEdldFB1YmxpY2F0aW9u KE9pZCBwdWJpZCkKIAogCXB1YmZvcm0gPSAoRm9ybV9wZ19wdWJsaWNhdGlvbikgR0VUU1RS VUNUKHR1cCk7CiAKLQlwdWIgPSAoUHVibGljYXRpb24gKikgcGFsbG9jKHNpemVvZihQdWJs aWNhdGlvbikpOworCXB1YiA9IHBhbGxvY19vYmplY3QoUHVibGljYXRpb24pOwogCXB1Yi0+ b2lkID0gcHViaWQ7CiAJcHViLT5uYW1lID0gcHN0cmR1cChOYW1lU3RyKHB1YmZvcm0tPnB1 Ym5hbWUpKTsKIAlwdWItPmFsbHRhYmxlcyA9IHB1YmZvcm0tPnB1YmFsbHRhYmxlczsKQEAg LTExOTYsNyArMTE5Niw3IEBAIHBnX2dldF9wdWJsaWNhdGlvbl90YWJsZXMoUEdfRlVOQ1RJ T05fQVJHUykKIAkJCSAqLwogCQkJZm9yZWFjaChsYywgcHViX2VsZW1fdGFibGVzKQogCQkJ ewotCQkJCXB1Ymxpc2hlZF9yZWwgKnRhYmxlX2luZm8gPSAocHVibGlzaGVkX3JlbCAqKSBw YWxsb2Moc2l6ZW9mKHB1Ymxpc2hlZF9yZWwpKTsKKwkJCQlwdWJsaXNoZWRfcmVsICp0YWJs ZV9pbmZvID0gcGFsbG9jX29iamVjdChwdWJsaXNoZWRfcmVsKTsKIAogCQkJCXRhYmxlX2lu Zm8tPnJlbGlkID0gbGZpcnN0X29pZChsYyk7CiAJCQkJdGFibGVfaW5mby0+cHViaWQgPSBw dWJfZWxlbS0+b2lkOwpAQCAtMTI5OSw3ICsxMjk5LDcgQEAgcGdfZ2V0X3B1YmxpY2F0aW9u X3RhYmxlcyhQR19GVU5DVElPTl9BUkdTKQogCQkJVHVwbGVEZXNjCWRlc2MgPSBSZWxhdGlv bkdldERlc2NyKHJlbCk7CiAJCQlpbnQJCQlpOwogCi0JCQlhdHRudW1zID0gKGludDE2ICop IHBhbGxvYyhkZXNjLT5uYXR0cyAqIHNpemVvZihpbnQxNikpOworCQkJYXR0bnVtcyA9IHBh bGxvY19hcnJheShpbnQxNiwgZGVzYy0+bmF0dHMpOwogCiAJCQlmb3IgKGkgPSAwOyBpIDwg ZGVzYy0+bmF0dHM7IGkrKykKIAkJCXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFs b2cvcGdfc2hkZXBlbmQuYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfc2hkZXBlbmQuYwpp bmRleCAxNmUzZTVjNzQ1Ny4uZmU0ZTQ1MzY2NzYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2NhdGFsb2cvcGdfc2hkZXBlbmQuYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3No ZGVwZW5kLmMKQEAgLTc5MSw3ICs3OTEsNyBAQCBjaGVja1NoYXJlZERlcGVuZGVuY2llcyhP aWQgY2xhc3NJZCwgT2lkIG9iamVjdElkLAogCQkJfQogCQkJaWYgKCFzdG9yZWQpCiAJCQl7 Ci0JCQkJZGVwID0gKHJlbW90ZURlcCAqKSBwYWxsb2Moc2l6ZW9mKHJlbW90ZURlcCkpOwor CQkJCWRlcCA9IHBhbGxvY19vYmplY3QocmVtb3RlRGVwKTsKIAkJCQlkZXAtPmRiT2lkID0g c2RlcEZvcm0tPmRiaWQ7CiAJCQkJZGVwLT5jb3VudCA9IDE7CiAJCQkJcmVtRGVwcyA9IGxh cHBlbmQocmVtRGVwcywgZGVwKTsKQEAgLTkxMyw3ICs5MTMsNyBAQCBjb3B5VGVtcGxhdGVE ZXBlbmRlbmNpZXMoT2lkIHRlbXBsYXRlRGJJZCwgT2lkIG5ld0RiSWQpCiAJICoga25vdyB0 aGF0IHRoZXkgd2lsbCBiZSB1c2VkLgogCSAqLwogCW1heF9zbG90cyA9IE1BWF9DQVRBTE9H X01VTFRJX0lOU0VSVF9CWVRFUyAvIHNpemVvZihGb3JtRGF0YV9wZ19zaGRlcGVuZCk7Ci0J c2xvdCA9IHBhbGxvYyhzaXplb2YoVHVwbGVUYWJsZVNsb3QgKikgKiBtYXhfc2xvdHMpOwor CXNsb3QgPSBwYWxsb2NfYXJyYXkoVHVwbGVUYWJsZVNsb3QgKiwgbWF4X3Nsb3RzKTsKIAog CWluZHN0YXRlID0gQ2F0YWxvZ09wZW5JbmRleGVzKHNkZXBSZWwpOwogCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5jIGIvc3JjL2JhY2tlbmQv Y2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uYwppbmRleCAxODBlNzdlOTQ4NC4uYWQ2ZmJkNzdm ZmQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmMK KysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uYwpAQCAtODksNyAr ODksNyBAQCBHZXRTdWJzY3JpcHRpb24oT2lkIHN1YmlkLCBib29sIG1pc3Npbmdfb2spCiAK IAlzdWJmb3JtID0gKEZvcm1fcGdfc3Vic2NyaXB0aW9uKSBHRVRTVFJVQ1QodHVwKTsKIAot CXN1YiA9IChTdWJzY3JpcHRpb24gKikgcGFsbG9jKHNpemVvZihTdWJzY3JpcHRpb24pKTsK KwlzdWIgPSBwYWxsb2Nfb2JqZWN0KFN1YnNjcmlwdGlvbik7CiAJc3ViLT5vaWQgPSBzdWJp ZDsKIAlzdWItPmRiaWQgPSBzdWJmb3JtLT5zdWJkYmlkOwogCXN1Yi0+c2tpcGxzbiA9IHN1 YmZvcm0tPnN1YnNraXBsc247CkBAIC02MTgsNyArNjE4LDcgQEAgR2V0U3Vic2NyaXB0aW9u UmVsYXRpb25zKE9pZCBzdWJpZCwgYm9vbCB0YWJsZXMsIGJvb2wgc2VxdWVuY2VzLAogCQkJ IHJlbGtpbmQgPT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSkgJiYgIXRhYmxlcykKIAkJ CWNvbnRpbnVlOwogCi0JCXJlbHN0YXRlID0gKFN1YnNjcmlwdGlvblJlbFN0YXRlICopIHBh bGxvYyhzaXplb2YoU3Vic2NyaXB0aW9uUmVsU3RhdGUpKTsKKwkJcmVsc3RhdGUgPSBwYWxs b2Nfb2JqZWN0KFN1YnNjcmlwdGlvblJlbFN0YXRlKTsKIAkJcmVsc3RhdGUtPnJlbGlkID0g c3VicmVsLT5zcnJlbGlkOwogCQlyZWxzdGF0ZS0+c3RhdGUgPSBzdWJyZWwtPnNyc3Vic3Rh dGU7CiAJCWQgPSBTeXNDYWNoZUdldEF0dHIoU1VCU0NSSVBUSU9OUkVMTUFQLCB0dXAsCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3N0b3JhZ2UuYyBiL3NyYy9iYWNrZW5k L2NhdGFsb2cvc3RvcmFnZS5jCmluZGV4IGM1OGU5NDE4YWMzLi5kMDZjMWM2ODE3NCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zdG9yYWdlLmMKKysrIGIvc3JjL2JhY2tl bmQvY2F0YWxvZy9zdG9yYWdlLmMKQEAgLTcwNywxMiArNzA3LDEyIEBAIHNtZ3JEb1BlbmRp bmdEZWxldGVzKGJvb2wgaXNDb21taXQpCiAJCQkJaWYgKG1heHJlbHMgPT0gMCkKIAkJCQl7 CiAJCQkJCW1heHJlbHMgPSA4OwotCQkJCQlzcmVscyA9IHBhbGxvYyhzaXplb2YoU01nclJl bGF0aW9uKSAqIG1heHJlbHMpOworCQkJCQlzcmVscyA9IHBhbGxvY19hcnJheShTTWdyUmVs YXRpb24sIG1heHJlbHMpOwogCQkJCX0KIAkJCQllbHNlIGlmIChtYXhyZWxzIDw9IG5yZWxz KQogCQkJCXsKIAkJCQkJbWF4cmVscyAqPSAyOwotCQkJCQlzcmVscyA9IHJlcGFsbG9jKHNy ZWxzLCBzaXplb2YoU01nclJlbGF0aW9uKSAqIG1heHJlbHMpOworCQkJCQlzcmVscyA9IHJl cGFsbG9jX2FycmF5KHNyZWxzLCBTTWdyUmVsYXRpb24sIG1heHJlbHMpOwogCQkJCX0KIAog CQkJCXNyZWxzW25yZWxzKytdID0gc3JlbDsKQEAgLTgyOSwxMiArODI5LDEyIEBAIHNtZ3JE b1BlbmRpbmdTeW5jcyhib29sIGlzQ29tbWl0LCBib29sIGlzUGFyYWxsZWxXb3JrZXIpCiAJ CQlpZiAobWF4cmVscyA9PSAwKQogCQkJewogCQkJCW1heHJlbHMgPSA4OwotCQkJCXNyZWxz ID0gcGFsbG9jKHNpemVvZihTTWdyUmVsYXRpb24pICogbWF4cmVscyk7CisJCQkJc3JlbHMg PSBwYWxsb2NfYXJyYXkoU01nclJlbGF0aW9uLCBtYXhyZWxzKTsKIAkJCX0KIAkJCWVsc2Ug aWYgKG1heHJlbHMgPD0gbnJlbHMpCiAJCQl7CiAJCQkJbWF4cmVscyAqPSAyOwotCQkJCXNy ZWxzID0gcmVwYWxsb2Moc3JlbHMsIHNpemVvZihTTWdyUmVsYXRpb24pICogbWF4cmVscyk7 CisJCQkJc3JlbHMgPSByZXBhbGxvY19hcnJheShzcmVscywgU01nclJlbGF0aW9uLCBtYXhy ZWxzKTsKIAkJCX0KIAogCQkJc3JlbHNbbnJlbHMrK10gPSBzcmVsOwpAQCAtOTA5LDcgKzkw OSw3IEBAIHNtZ3JHZXRQZW5kaW5nRGVsZXRlcyhib29sIGZvckNvbW1pdCwgUmVsRmlsZUxv Y2F0b3IgKipwdHIpCiAJCSpwdHIgPSBOVUxMOwogCQlyZXR1cm4gMDsKIAl9Ci0JcnB0ciA9 IChSZWxGaWxlTG9jYXRvciAqKSBwYWxsb2MobnJlbHMgKiBzaXplb2YoUmVsRmlsZUxvY2F0 b3IpKTsKKwlycHRyID0gcGFsbG9jX2FycmF5KFJlbEZpbGVMb2NhdG9yLCBucmVscyk7CiAJ KnB0ciA9IHJwdHI7CiAJZm9yIChwZW5kaW5nID0gcGVuZGluZ0RlbGV0ZXM7IHBlbmRpbmcg IT0gTlVMTDsgcGVuZGluZyA9IHBlbmRpbmctPm5leHQpCiAJewpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvY29tbWFuZHMvYW5hbHl6ZS5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvYW5h bHl6ZS5jCmluZGV4IDI1MDg5ZmFlM2UwLi4yODJjNTM2ODNhZCAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvY29tbWFuZHMvYW5hbHl6ZS5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRz L2FuYWx5emUuYwpAQCAtMTA3Myw3ICsxMDczLDcgQEAgZXhhbWluZV9hdHRyaWJ1dGUoUmVs YXRpb24gb25lcmVsLCBpbnQgYXR0bnVtLCBOb2RlICppbmRleF9leHByKQogCS8qCiAJICog Q3JlYXRlIHRoZSBWYWNBdHRyU3RhdHMgc3RydWN0LgogCSAqLwotCXN0YXRzID0gKFZhY0F0 dHJTdGF0cyAqKSBwYWxsb2MwKHNpemVvZihWYWNBdHRyU3RhdHMpKTsKKwlzdGF0cyA9IHBh bGxvYzBfb2JqZWN0KFZhY0F0dHJTdGF0cyk7CiAJc3RhdHMtPmF0dHN0YXR0YXJnZXQgPSBh dHRzdGF0dGFyZ2V0OwogCiAJLyoKQEAgLTE5MDQsNyArMTkwNCw3IEBAIHN0ZF90eXBhbmFs eXplKFZhY0F0dHJTdGF0cyAqc3RhdHMpCiAJCQkJCQkJIE5VTEwpOwogCiAJLyogU2F2ZSB0 aGUgb3BlcmF0b3IgaW5mbyBmb3IgY29tcHV0ZV9zdGF0cyByb3V0aW5lcyAqLwotCW15c3Rh dHMgPSAoU3RkQW5hbHl6ZURhdGEgKikgcGFsbG9jKHNpemVvZihTdGRBbmFseXplRGF0YSkp OworCW15c3RhdHMgPSBwYWxsb2Nfb2JqZWN0KFN0ZEFuYWx5emVEYXRhKTsKIAlteXN0YXRz LT5lcW9wciA9IGVxb3ByOwogCW15c3RhdHMtPmVxZnVuYyA9IE9pZElzVmFsaWQoZXFvcHIp ID8gZ2V0X29wY29kZShlcW9wcikgOiBJbnZhbGlkT2lkOwogCW15c3RhdHMtPmx0b3ByID0g bHRvcHI7CkBAIC0yODU5LDcgKzI4NTksNyBAQCBjb21wdXRlX3NjYWxhcl9zdGF0cyhWYWNB dHRyU3RhdHNQIHN0YXRzLAogCiAJCQkvKiBNdXN0IGNvcHkgdGhlIHRhcmdldCB2YWx1ZXMg aW50byBhbmxfY29udGV4dCAqLwogCQkJb2xkX2NvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dp dGNoVG8oc3RhdHMtPmFubF9jb250ZXh0KTsKLQkJCWNvcnJzID0gKGZsb2F0NCAqKSBwYWxs b2Moc2l6ZW9mKGZsb2F0NCkpOworCQkJY29ycnMgPSBwYWxsb2Nfb2JqZWN0KGZsb2F0NCk7 CiAJCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkX2NvbnRleHQpOwogCiAJCQkvKi0tLS0t LS0tLS0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NsdXN0ZXIuYyBiL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL2NsdXN0ZXIuYwppbmRleCBiNTUyMjFkNDRjZC4uYTgzOGE3 MzQzMjEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NsdXN0ZXIuYworKysg Yi9zcmMvYmFja2VuZC9jb21tYW5kcy9jbHVzdGVyLmMKQEAgLTE2NzIsNyArMTY3Miw3IEBA IGdldF90YWJsZXNfdG9fY2x1c3RlcihNZW1vcnlDb250ZXh0IGNsdXN0ZXJfY29udGV4dCkK IAkJLyogVXNlIGEgcGVybWFuZW50IG1lbW9yeSBjb250ZXh0IGZvciB0aGUgcmVzdWx0IGxp c3QgKi8KIAkJb2xkX2NvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oY2x1c3Rlcl9j b250ZXh0KTsKIAotCQlydGMgPSAoUmVsVG9DbHVzdGVyICopIHBhbGxvYyhzaXplb2YoUmVs VG9DbHVzdGVyKSk7CisJCXJ0YyA9IHBhbGxvY19vYmplY3QoUmVsVG9DbHVzdGVyKTsKIAkJ cnRjLT50YWJsZU9pZCA9IGluZGV4LT5pbmRyZWxpZDsKIAkJcnRjLT5pbmRleE9pZCA9IGlu ZGV4LT5pbmRleHJlbGlkOwogCQlydGNzID0gbGFwcGVuZChydGNzLCBydGMpOwpAQCAtMTcy Niw3ICsxNzI2LDcgQEAgZ2V0X3RhYmxlc190b19jbHVzdGVyX3BhcnRpdGlvbmVkKE1lbW9y eUNvbnRleHQgY2x1c3Rlcl9jb250ZXh0LCBPaWQgaW5kZXhPaWQpCiAJCS8qIFVzZSBhIHBl cm1hbmVudCBtZW1vcnkgY29udGV4dCBmb3IgdGhlIHJlc3VsdCBsaXN0ICovCiAJCW9sZF9j b250ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKGNsdXN0ZXJfY29udGV4dCk7CiAKLQkJ cnRjID0gKFJlbFRvQ2x1c3RlciAqKSBwYWxsb2Moc2l6ZW9mKFJlbFRvQ2x1c3RlcikpOwor CQlydGMgPSBwYWxsb2Nfb2JqZWN0KFJlbFRvQ2x1c3Rlcik7CiAJCXJ0Yy0+dGFibGVPaWQg PSByZWxpZDsKIAkJcnRjLT5pbmRleE9pZCA9IGluZGV4cmVsaWQ7CiAJCXJ0Y3MgPSBsYXBw ZW5kKHJ0Y3MsIHJ0Yyk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5 LmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5LmMKaW5kZXggMjhlODc4YzM2ODguLjY0 NTRhMzlhMDFmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5LmMKKysr IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weS5jCkBAIC01NjEsNyArNTYxLDcgQEAgUHJv Y2Vzc0NvcHlPcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAogCS8qIFN1cHBvcnQgZXh0 ZXJuYWwgdXNlIGZvciBvcHRpb24gc2FuaXR5IGNoZWNraW5nICovCiAJaWYgKG9wdHNfb3V0 ID09IE5VTEwpCi0JCW9wdHNfb3V0ID0gKENvcHlGb3JtYXRPcHRpb25zICopIHBhbGxvYzAo c2l6ZW9mKENvcHlGb3JtYXRPcHRpb25zKSk7CisJCW9wdHNfb3V0ID0gcGFsbG9jMF9vYmpl Y3QoQ29weUZvcm1hdE9wdGlvbnMpOwogCiAJb3B0c19vdXQtPmZpbGVfZW5jb2RpbmcgPSAt MTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weWZyb20uYyBiL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL2NvcHlmcm9tLmMKaW5kZXggMTI3ODE5NjNiNGYuLjJhZTNk MmJhODZlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5ZnJvbS5jCisr KyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHlmcm9tLmMKQEAgLTM2NCw3ICszNjQsNyBA QCBDb3B5TXVsdGlJbnNlcnRCdWZmZXJJbml0KFJlc3VsdFJlbEluZm8gKnJyaSkKIHsKIAlD b3B5TXVsdGlJbnNlcnRCdWZmZXIgKmJ1ZmZlcjsKIAotCWJ1ZmZlciA9IChDb3B5TXVsdGlJ bnNlcnRCdWZmZXIgKikgcGFsbG9jKHNpemVvZihDb3B5TXVsdGlJbnNlcnRCdWZmZXIpKTsK KwlidWZmZXIgPSBwYWxsb2Nfb2JqZWN0KENvcHlNdWx0aUluc2VydEJ1ZmZlcik7CiAJbWVt c2V0KGJ1ZmZlci0+c2xvdHMsIDAsIHNpemVvZihUdXBsZVRhYmxlU2xvdCAqKSAqIE1BWF9C VUZGRVJFRF9UVVBMRVMpOwogCWJ1ZmZlci0+cmVzdWx0UmVsSW5mbyA9IHJyaTsKIAlidWZm ZXItPmJpc3RhdGUgPSAocnJpLT5yaV9GZHdSb3V0aW5lID09IE5VTEwpID8gR2V0QnVsa0lu c2VydFN0YXRlKCkgOiBOVUxMOwpAQCAtMTU1OCw3ICsxNTU4LDcgQEAgQmVnaW5Db3B5RnJv bShQYXJzZVN0YXRlICpwc3RhdGUsCiAJfTsKIAogCS8qIEFsbG9jYXRlIHdvcmtzcGFjZSBh bmQgemVybyBhbGwgZmllbGRzICovCi0JY3N0YXRlID0gKENvcHlGcm9tU3RhdGVEYXRhICop IHBhbGxvYzAoc2l6ZW9mKENvcHlGcm9tU3RhdGVEYXRhKSk7CisJY3N0YXRlID0gcGFsbG9j MF9vYmplY3QoQ29weUZyb21TdGF0ZURhdGEpOwogCiAJLyoKIAkgKiBXZSBhbGxvY2F0ZSBl dmVyeXRoaW5nIHVzZWQgYnkgYSBjc3RhdGUgaW4gYSBuZXcgbWVtb3J5IGNvbnRleHQuIFRo aXMKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jIGIvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvY29weXRvLmMKaW5kZXggY2VmNDUyNTg0ZTUuLmRhZTkxNjMwYWMz IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYworKysgYi9zcmMv YmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYwpAQCAtNzIwLDcgKzcyMCw3IEBAIEJlZ2luQ29w eVRvKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAogCiAJLyogQWxsb2NhdGUgd29ya3NwYWNlIGFu ZCB6ZXJvIGFsbCBmaWVsZHMgKi8KLQljc3RhdGUgPSAoQ29weVRvU3RhdGVEYXRhICopIHBh bGxvYzAoc2l6ZW9mKENvcHlUb1N0YXRlRGF0YSkpOworCWNzdGF0ZSA9IHBhbGxvYzBfb2Jq ZWN0KENvcHlUb1N0YXRlRGF0YSk7CiAKIAkvKgogCSAqIFdlIGFsbG9jYXRlIGV2ZXJ5dGhp bmcgdXNlZCBieSBhIGNzdGF0ZSBpbiBhIG5ldyBtZW1vcnkgY29udGV4dC4gVGhpcwpAQCAt MTUyNyw3ICsxNTI3LDcgQEAgY29weV9kZXN0X2Rlc3Ryb3koRGVzdFJlY2VpdmVyICpzZWxm KQogRGVzdFJlY2VpdmVyICoKIENyZWF0ZUNvcHlEZXN0UmVjZWl2ZXIodm9pZCkKIHsKLQlE Ul9jb3B5ICAgICpzZWxmID0gKERSX2NvcHkgKikgcGFsbG9jKHNpemVvZihEUl9jb3B5KSk7 CisJRFJfY29weSAgICAqc2VsZiA9IHBhbGxvY19vYmplY3QoRFJfY29weSk7CiAKIAlzZWxm LT5wdWIucmVjZWl2ZVNsb3QgPSBjb3B5X2Rlc3RfcmVjZWl2ZTsKIAlzZWxmLT5wdWIuclN0 YXJ0dXAgPSBjb3B5X2Rlc3Rfc3RhcnR1cDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL2NyZWF0ZWFzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jcmVhdGVhcy5jCmlu ZGV4IDFjY2MyZTU1YzY0Li5kZGM0NWUzYWEwZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvY3JlYXRlYXMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jcmVhdGVh cy5jCkBAIC00MzksNyArNDM5LDcgQEAgQ3JlYXRlVGFibGVBc1JlbEV4aXN0cyhDcmVhdGVU YWJsZUFzU3RtdCAqY3RhcykKIERlc3RSZWNlaXZlciAqCiBDcmVhdGVJbnRvUmVsRGVzdFJl Y2VpdmVyKEludG9DbGF1c2UgKmludG9DbGF1c2UpCiB7Ci0JRFJfaW50b3JlbCAqc2VsZiA9 IChEUl9pbnRvcmVsICopIHBhbGxvYzAoc2l6ZW9mKERSX2ludG9yZWwpKTsKKwlEUl9pbnRv cmVsICpzZWxmID0gcGFsbG9jMF9vYmplY3QoRFJfaW50b3JlbCk7CiAKIAlzZWxmLT5wdWIu cmVjZWl2ZVNsb3QgPSBpbnRvcmVsX3JlY2VpdmU7CiAJc2VsZi0+cHViLnJTdGFydHVwID0g aW50b3JlbF9zdGFydHVwOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZGJj b21tYW5kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZGJjb21tYW5kcy5jCmluZGV4IDRk NjVlOGM0NmMyLi5jMTI3NzdmNDQ2NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFu ZHMvZGJjb21tYW5kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2RiY29tbWFuZHMu YwpAQCAtNDMxLDcgKzQzMSw3IEBAIFNjYW5Tb3VyY2VEYXRhYmFzZVBnQ2xhc3NUdXBsZShI ZWFwVHVwbGVEYXRhICp0dXBsZSwgT2lkIHRiaWQsIE9pZCBkYmlkLAogCQkJIGNsYXNzRm9y bS0+b2lkKTsKIAogCS8qIFByZXBhcmUgYSByZWwgaW5mbyBlbGVtZW50IGFuZCBhZGQgaXQg dG8gdGhlIGxpc3QuICovCi0JcmVsaW5mbyA9IChDcmVhdGVEQlJlbEluZm8gKikgcGFsbG9j KHNpemVvZihDcmVhdGVEQlJlbEluZm8pKTsKKwlyZWxpbmZvID0gcGFsbG9jX29iamVjdChD cmVhdGVEQlJlbEluZm8pOwogCWlmIChPaWRJc1ZhbGlkKGNsYXNzRm9ybS0+cmVsdGFibGVz cGFjZSkpCiAJCXJlbGluZm8tPnJsb2NhdG9yLnNwY09pZCA9IGNsYXNzRm9ybS0+cmVsdGFi bGVzcGFjZTsKIAllbHNlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9ldmVu dF90cmlnZ2VyLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9ldmVudF90cmlnZ2VyLmMKaW5k ZXggZjM0ODY4ZGE1YWIuLmU3MTgyMzA4MTMwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9j b21tYW5kcy9ldmVudF90cmlnZ2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXZl bnRfdHJpZ2dlci5jCkBAIC0zNjQsNyArMzY0LDcgQEAgZmlsdGVyX2xpc3RfdG9fYXJyYXko TGlzdCAqZmlsdGVybGlzdCkKIAlpbnQJCQlpID0gMCwKIAkJCQlsID0gbGlzdF9sZW5ndGgo ZmlsdGVybGlzdCk7CiAKLQlkYXRhID0gKERhdHVtICopIHBhbGxvYyhsICogc2l6ZW9mKERh dHVtKSk7CisJZGF0YSA9IHBhbGxvY19hcnJheShEYXR1bSwgbCk7CiAKIAlmb3JlYWNoKGxj LCBmaWx0ZXJsaXN0KQogCXsKQEAgLTEyODYsNyArMTI4Niw3IEBAIEV2ZW50VHJpZ2dlclNR TERyb3BBZGRPYmplY3QoY29uc3QgT2JqZWN0QWRkcmVzcyAqb2JqZWN0LCBib29sIG9yaWdp bmFsLCBib29sIG5vCiAKIAlvbGRjeHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oY3VycmVu dEV2ZW50VHJpZ2dlclN0YXRlLT5jeHQpOwogCi0Jb2JqID0gcGFsbG9jMChzaXplb2YoU1FM RHJvcE9iamVjdCkpOworCW9iaiA9IHBhbGxvYzBfb2JqZWN0KFNRTERyb3BPYmplY3QpOwog CW9iai0+YWRkcmVzcyA9ICpvYmplY3Q7CiAJb2JqLT5vcmlnaW5hbCA9IG9yaWdpbmFsOwog CW9iai0+bm9ybWFsID0gbm9ybWFsOwpAQCAtMTcyNiw3ICsxNzI2LDcgQEAgRXZlbnRUcmln Z2VyQ29sbGVjdFNpbXBsZUNvbW1hbmQoT2JqZWN0QWRkcmVzcyBhZGRyZXNzLAogCiAJb2xk Y3h0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKGN1cnJlbnRFdmVudFRyaWdnZXJTdGF0ZS0+ Y3h0KTsKIAotCWNvbW1hbmQgPSBwYWxsb2Moc2l6ZW9mKENvbGxlY3RlZENvbW1hbmQpKTsK Kwljb21tYW5kID0gcGFsbG9jX29iamVjdChDb2xsZWN0ZWRDb21tYW5kKTsKIAogCWNvbW1h bmQtPnR5cGUgPSBTQ1RfU2ltcGxlOwogCWNvbW1hbmQtPmluX2V4dGVuc2lvbiA9IGNyZWF0 aW5nX2V4dGVuc2lvbjsKQEAgLTE3NjIsNyArMTc2Miw3IEBAIEV2ZW50VHJpZ2dlckFsdGVy VGFibGVTdGFydChOb2RlICpwYXJzZXRyZWUpCiAKIAlvbGRjeHQgPSBNZW1vcnlDb250ZXh0 U3dpdGNoVG8oY3VycmVudEV2ZW50VHJpZ2dlclN0YXRlLT5jeHQpOwogCi0JY29tbWFuZCA9 IHBhbGxvYyhzaXplb2YoQ29sbGVjdGVkQ29tbWFuZCkpOworCWNvbW1hbmQgPSBwYWxsb2Nf b2JqZWN0KENvbGxlY3RlZENvbW1hbmQpOwogCiAJY29tbWFuZC0+dHlwZSA9IFNDVF9BbHRl clRhYmxlOwogCWNvbW1hbmQtPmluX2V4dGVuc2lvbiA9IGNyZWF0aW5nX2V4dGVuc2lvbjsK QEAgLTE4MTgsNyArMTgxOCw3IEBAIEV2ZW50VHJpZ2dlckNvbGxlY3RBbHRlclRhYmxlU3Vi Y21kKE5vZGUgKnN1YmNtZCwgT2JqZWN0QWRkcmVzcyBhZGRyZXNzKQogCiAJb2xkY3h0ID0g TWVtb3J5Q29udGV4dFN3aXRjaFRvKGN1cnJlbnRFdmVudFRyaWdnZXJTdGF0ZS0+Y3h0KTsK IAotCW5ld3N1YiA9IHBhbGxvYyhzaXplb2YoQ29sbGVjdGVkQVRTdWJjbWQpKTsKKwluZXdz dWIgPSBwYWxsb2Nfb2JqZWN0KENvbGxlY3RlZEFUU3ViY21kKTsKIAluZXdzdWItPmFkZHJl c3MgPSBhZGRyZXNzOwogCW5ld3N1Yi0+cGFyc2V0cmVlID0gY29weU9iamVjdChzdWJjbWQp OwogCkBAIC0xODkyLDcgKzE4OTIsNyBAQCBFdmVudFRyaWdnZXJDb2xsZWN0R3JhbnQoSW50 ZXJuYWxHcmFudCAqaXN0bXQpCiAJLyoKIAkgKiBUaGlzIGlzIHRlZGlvdXMsIGJ1dCBuZWNl c3NhcnkuCiAJICovCi0JaWNvcHkgPSBwYWxsb2Moc2l6ZW9mKEludGVybmFsR3JhbnQpKTsK KwlpY29weSA9IHBhbGxvY19vYmplY3QoSW50ZXJuYWxHcmFudCk7CiAJbWVtY3B5KGljb3B5 LCBpc3RtdCwgc2l6ZW9mKEludGVybmFsR3JhbnQpKTsKIAlpY29weS0+b2JqZWN0cyA9IGxp c3RfY29weShpc3RtdC0+b2JqZWN0cyk7CiAJaWNvcHktPmdyYW50ZWVzID0gbGlzdF9jb3B5 KGlzdG10LT5ncmFudGVlcyk7CkBAIC0xOTAxLDcgKzE5MDEsNyBAQCBFdmVudFRyaWdnZXJD b2xsZWN0R3JhbnQoSW50ZXJuYWxHcmFudCAqaXN0bXQpCiAJCWljb3B5LT5jb2xfcHJpdnMg PSBsYXBwZW5kKGljb3B5LT5jb2xfcHJpdnMsIGNvcHlPYmplY3QobGZpcnN0KGNlbGwpKSk7 CiAKIAkvKiBOb3cgY29sbGVjdCBpdCwgdXNpbmcgdGhlIGNvcGllZCBJbnRlcm5hbEdyYW50 ICovCi0JY29tbWFuZCA9IHBhbGxvYyhzaXplb2YoQ29sbGVjdGVkQ29tbWFuZCkpOworCWNv bW1hbmQgPSBwYWxsb2Nfb2JqZWN0KENvbGxlY3RlZENvbW1hbmQpOwogCWNvbW1hbmQtPnR5 cGUgPSBTQ1RfR3JhbnQ7CiAJY29tbWFuZC0+aW5fZXh0ZW5zaW9uID0gY3JlYXRpbmdfZXh0 ZW5zaW9uOwogCWNvbW1hbmQtPmQuZ3JhbnQuaXN0bXQgPSBpY29weTsKQEAgLTE5MzIsNyAr MTkzMiw3IEBAIEV2ZW50VHJpZ2dlckNvbGxlY3RBbHRlck9wRmFtKEFsdGVyT3BGYW1pbHlT dG10ICpzdG10LCBPaWQgb3BmYW1vaWQsCiAKIAlvbGRjeHQgPSBNZW1vcnlDb250ZXh0U3dp dGNoVG8oY3VycmVudEV2ZW50VHJpZ2dlclN0YXRlLT5jeHQpOwogCi0JY29tbWFuZCA9IHBh bGxvYyhzaXplb2YoQ29sbGVjdGVkQ29tbWFuZCkpOworCWNvbW1hbmQgPSBwYWxsb2Nfb2Jq ZWN0KENvbGxlY3RlZENvbW1hbmQpOwogCWNvbW1hbmQtPnR5cGUgPSBTQ1RfQWx0ZXJPcEZh bWlseTsKIAljb21tYW5kLT5pbl9leHRlbnNpb24gPSBjcmVhdGluZ19leHRlbnNpb247CiAJ T2JqZWN0QWRkcmVzc1NldChjb21tYW5kLT5kLm9wZmFtLmFkZHJlc3MsCkBAIC0xOTY1LDcg KzE5NjUsNyBAQCBFdmVudFRyaWdnZXJDb2xsZWN0Q3JlYXRlT3BDbGFzcyhDcmVhdGVPcENs YXNzU3RtdCAqc3RtdCwgT2lkIG9wY29pZCwKIAogCW9sZGN4dCA9IE1lbW9yeUNvbnRleHRT d2l0Y2hUbyhjdXJyZW50RXZlbnRUcmlnZ2VyU3RhdGUtPmN4dCk7CiAKLQljb21tYW5kID0g cGFsbG9jMChzaXplb2YoQ29sbGVjdGVkQ29tbWFuZCkpOworCWNvbW1hbmQgPSBwYWxsb2Mw X29iamVjdChDb2xsZWN0ZWRDb21tYW5kKTsKIAljb21tYW5kLT50eXBlID0gU0NUX0NyZWF0 ZU9wQ2xhc3M7CiAJY29tbWFuZC0+aW5fZXh0ZW5zaW9uID0gY3JlYXRpbmdfZXh0ZW5zaW9u OwogCU9iamVjdEFkZHJlc3NTZXQoY29tbWFuZC0+ZC5jcmVhdGVvcGMuYWRkcmVzcywKQEAg LTE5OTksMTIgKzE5OTksMTIgQEAgRXZlbnRUcmlnZ2VyQ29sbGVjdEFsdGVyVFNDb25maWco QWx0ZXJUU0NvbmZpZ3VyYXRpb25TdG10ICpzdG10LCBPaWQgY2ZnSWQsCiAKIAlvbGRjeHQg PSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oY3VycmVudEV2ZW50VHJpZ2dlclN0YXRlLT5jeHQp OwogCi0JY29tbWFuZCA9IHBhbGxvYzAoc2l6ZW9mKENvbGxlY3RlZENvbW1hbmQpKTsKKwlj b21tYW5kID0gcGFsbG9jMF9vYmplY3QoQ29sbGVjdGVkQ29tbWFuZCk7CiAJY29tbWFuZC0+ dHlwZSA9IFNDVF9BbHRlclRTQ29uZmlnOwogCWNvbW1hbmQtPmluX2V4dGVuc2lvbiA9IGNy ZWF0aW5nX2V4dGVuc2lvbjsKIAlPYmplY3RBZGRyZXNzU2V0KGNvbW1hbmQtPmQuYXRzY2Zn LmFkZHJlc3MsCiAJCQkJCSBUU0NvbmZpZ1JlbGF0aW9uSWQsIGNmZ0lkKTsKLQljb21tYW5k LT5kLmF0c2NmZy5kaWN0SWRzID0gcGFsbG9jKHNpemVvZihPaWQpICogbmRpY3RzKTsKKwlj b21tYW5kLT5kLmF0c2NmZy5kaWN0SWRzID0gcGFsbG9jX2FycmF5KE9pZCwgbmRpY3RzKTsK IAltZW1jcHkoY29tbWFuZC0+ZC5hdHNjZmcuZGljdElkcywgZGljdElkcywgc2l6ZW9mKE9p ZCkgKiBuZGljdHMpOwogCWNvbW1hbmQtPmQuYXRzY2ZnLm5kaWN0cyA9IG5kaWN0czsKIAlj b21tYW5kLT5wYXJzZXRyZWUgPSAoTm9kZSAqKSBjb3B5T2JqZWN0KHN0bXQpOwpAQCAtMjAz Myw3ICsyMDMzLDcgQEAgRXZlbnRUcmlnZ2VyQ29sbGVjdEFsdGVyRGVmUHJpdnMoQWx0ZXJE ZWZhdWx0UHJpdmlsZWdlc1N0bXQgKnN0bXQpCiAKIAlvbGRjeHQgPSBNZW1vcnlDb250ZXh0 U3dpdGNoVG8oY3VycmVudEV2ZW50VHJpZ2dlclN0YXRlLT5jeHQpOwogCi0JY29tbWFuZCA9 IHBhbGxvYzAoc2l6ZW9mKENvbGxlY3RlZENvbW1hbmQpKTsKKwljb21tYW5kID0gcGFsbG9j MF9vYmplY3QoQ29sbGVjdGVkQ29tbWFuZCk7CiAJY29tbWFuZC0+dHlwZSA9IFNDVF9BbHRl ckRlZmF1bHRQcml2aWxlZ2VzOwogCWNvbW1hbmQtPmQuZGVmcHJpdnMub2JqdHlwZSA9IHN0 bXQtPmFjdGlvbi0+b2JqdHlwZTsKIAljb21tYW5kLT5pbl9leHRlbnNpb24gPSBjcmVhdGlu Z19leHRlbnNpb247CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWlu LmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKaW5kZXggN2U2OTlmODU5NWUu LjVhNjM5MDYzMWViIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWlu LmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCkBAIC00OTgwLDcgKzQ5 ODAsNyBAQCBFeHBsYWluQ3JlYXRlV29ya2Vyc1N0YXRlKGludCBudW1fd29ya2VycykKIHsK IAlFeHBsYWluV29ya2Vyc1N0YXRlICp3c3RhdGU7CiAKLQl3c3RhdGUgPSAoRXhwbGFpbldv cmtlcnNTdGF0ZSAqKSBwYWxsb2Moc2l6ZW9mKEV4cGxhaW5Xb3JrZXJzU3RhdGUpKTsKKwl3 c3RhdGUgPSBwYWxsb2Nfb2JqZWN0KEV4cGxhaW5Xb3JrZXJzU3RhdGUpOwogCXdzdGF0ZS0+ bnVtX3dvcmtlcnMgPSBudW1fd29ya2VyczsKIAl3c3RhdGUtPndvcmtlcl9pbml0ZWQgPSAo Ym9vbCAqKSBwYWxsb2MwKG51bV93b3JrZXJzICogc2l6ZW9mKGJvb2wpKTsKIAl3c3RhdGUt Pndvcmtlcl9zdHIgPSAoU3RyaW5nSW5mb0RhdGEgKikKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL2V4cGxhaW5fZHIuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxh aW5fZHIuYwppbmRleCA5NTY4NWQ3ZTg4ZC4uNTgzM2FhODBmYjUgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW5fZHIuYworKysgYi9zcmMvYmFja2VuZC9jb21t YW5kcy9leHBsYWluX2RyLmMKQEAgLTI3Niw3ICsyNzYsNyBAQCBDcmVhdGVFeHBsYWluU2Vy aWFsaXplRGVzdFJlY2VpdmVyKEV4cGxhaW5TdGF0ZSAqZXMpCiB7CiAJU2VyaWFsaXplRGVz dFJlY2VpdmVyICpzZWxmOwogCi0Jc2VsZiA9IChTZXJpYWxpemVEZXN0UmVjZWl2ZXIgKikg cGFsbG9jMChzaXplb2YoU2VyaWFsaXplRGVzdFJlY2VpdmVyKSk7CisJc2VsZiA9IHBhbGxv YzBfb2JqZWN0KFNlcmlhbGl6ZURlc3RSZWNlaXZlcik7CiAKIAlzZWxmLT5wdWIucmVjZWl2 ZVNsb3QgPSBzZXJpYWxpemVBbmFseXplUmVjZWl2ZTsKIAlzZWxmLT5wdWIuclN0YXJ0dXAg PSBzZXJpYWxpemVBbmFseXplU3RhcnR1cDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL2V4cGxhaW5fc3RhdGUuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW5f c3RhdGUuYwppbmRleCA5ZmRlZWFiNjQzNi4uNmUyNmVjOWIzMWUgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW5fc3RhdGUuYworKysgYi9zcmMvYmFja2VuZC9j b21tYW5kcy9leHBsYWluX3N0YXRlLmMKQEAgLTYwLDcgKzYwLDcgQEAgc3RhdGljIGludAlF eHBsYWluRXh0ZW5zaW9uT3B0aW9uc0FsbG9jYXRlZCA9IDA7CiBFeHBsYWluU3RhdGUgKgog TmV3RXhwbGFpblN0YXRlKHZvaWQpCiB7Ci0JRXhwbGFpblN0YXRlICplcyA9IChFeHBsYWlu U3RhdGUgKikgcGFsbG9jMChzaXplb2YoRXhwbGFpblN0YXRlKSk7CisJRXhwbGFpblN0YXRl ICplcyA9IHBhbGxvYzBfb2JqZWN0KEV4cGxhaW5TdGF0ZSk7CiAKIAkvKiBTZXQgZGVmYXVs dCBvcHRpb25zIChtb3N0IGZpZWxkcyBjYW4gYmUgbGVmdCBhcyB6ZXJvZXMpLiAqLwogCWVz LT5jb3N0cyA9IHRydWU7CkBAIC0yOTMsMTAgKzI5Myw3IEBAIFNldEV4cGxhaW5FeHRlbnNp b25TdGF0ZShFeHBsYWluU3RhdGUgKmVzLCBpbnQgZXh0ZW5zaW9uX2lkLCB2b2lkICpvcGFx dWUpCiAJCWludAkJCWk7CiAKIAkJaSA9IHBnX25leHRwb3dlcjJfMzIoZXh0ZW5zaW9uX2lk ICsgMSk7Ci0JCWVzLT5leHRlbnNpb25fc3RhdGUgPSAodm9pZCAqKikKLQkJCXJlcGFsbG9j MChlcy0+ZXh0ZW5zaW9uX3N0YXRlLAotCQkJCQkgIGVzLT5leHRlbnNpb25fc3RhdGVfYWxs b2NhdGVkICogc2l6ZW9mKHZvaWQgKiksCi0JCQkJCSAgaSAqIHNpemVvZih2b2lkICopKTsK KwkJZXMtPmV4dGVuc2lvbl9zdGF0ZSA9IHJlcGFsbG9jMF9hcnJheShlcy0+ZXh0ZW5zaW9u X3N0YXRlLCB2b2lkICosIGVzLT5leHRlbnNpb25fc3RhdGVfYWxsb2NhdGVkLCBpKTsKIAkJ ZXMtPmV4dGVuc2lvbl9zdGF0ZV9hbGxvY2F0ZWQgPSBpOwogCX0KIApkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvY29tbWFuZHMvZXh0ZW5zaW9uLmMgYi9zcmMvYmFja2VuZC9jb21tYW5k cy9leHRlbnNpb24uYwppbmRleCBlYmMyMDRjNDQ2Mi4uYzQzYjc0ZTMxOWUgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4dGVuc2lvbi5jCisrKyBiL3NyYy9iYWNrZW5k L2NvbW1hbmRzL2V4dGVuc2lvbi5jCkBAIC03MjQsNyArNzI0LDcgQEAgcmVhZF9leHRlbnNp b25fYXV4X2NvbnRyb2xfZmlsZShjb25zdCBFeHRlbnNpb25Db250cm9sRmlsZSAqcGNvbnRy b2wsCiAJLyoKIAkgKiBGbGF0LWNvcHkgdGhlIHN0cnVjdC4gIFBvaW50ZXIgZmllbGRzIHNo YXJlIHZhbHVlcyB3aXRoIG9yaWdpbmFsLgogCSAqLwotCWFjb250cm9sID0gKEV4dGVuc2lv bkNvbnRyb2xGaWxlICopIHBhbGxvYyhzaXplb2YoRXh0ZW5zaW9uQ29udHJvbEZpbGUpKTsK KwlhY29udHJvbCA9IHBhbGxvY19vYmplY3QoRXh0ZW5zaW9uQ29udHJvbEZpbGUpOwogCW1l bWNweShhY29udHJvbCwgcGNvbnRyb2wsIHNpemVvZihFeHRlbnNpb25Db250cm9sRmlsZSkp OwogCiAJLyoKQEAgLTEzNDksNyArMTM0OSw3IEBAIGdldF9leHRfdmVyX2luZm8oY29uc3Qg Y2hhciAqdmVyc2lvbm5hbWUsIExpc3QgKipldmlfbGlzdCkKIAkJCXJldHVybiBldmk7CiAJ fQogCi0JZXZpID0gKEV4dGVuc2lvblZlcnNpb25JbmZvICopIHBhbGxvYyhzaXplb2YoRXh0 ZW5zaW9uVmVyc2lvbkluZm8pKTsKKwlldmkgPSBwYWxsb2Nfb2JqZWN0KEV4dGVuc2lvblZl cnNpb25JbmZvKTsKIAlldmktPm5hbWUgPSBwc3RyZHVwKHZlcnNpb25uYW1lKTsKIAlldmkt PnJlYWNoYWJsZSA9IE5JTDsKIAlldmktPmluc3RhbGxhYmxlID0gZmFsc2U7CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9mdW5jdGlvbmNtZHMuYyBiL3NyYy9iYWNrZW5k L2NvbW1hbmRzL2Z1bmN0aW9uY21kcy5jCmluZGV4IDU5ZDAwNjM4ZWU2Li44YTQzNWNkOTNk YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZnVuY3Rpb25jbWRzLmMKKysr IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZnVuY3Rpb25jbWRzLmMKQEAgLTkxMyw3ICs5MTMs NyBAQCBpbnRlcnByZXRfQVNfY2xhdXNlKE9pZCBsYW5ndWFnZU9pZCwgY29uc3QgY2hhciAq bGFuZ3VhZ2VOYW1lLAogCXsKIAkJU1FMRnVuY3Rpb25QYXJzZUluZm9QdHIgcGluZm87CiAK LQkJcGluZm8gPSAoU1FMRnVuY3Rpb25QYXJzZUluZm9QdHIpIHBhbGxvYzAoc2l6ZW9mKFNR TEZ1bmN0aW9uUGFyc2VJbmZvKSk7CisJCXBpbmZvID0gcGFsbG9jMF9vYmplY3QoU1FMRnVu Y3Rpb25QYXJzZUluZm8pOwogCiAJCXBpbmZvLT5mbmFtZSA9IGZ1bmNuYW1lOwogCQlwaW5m by0+bmFyZ3MgPSBsaXN0X2xlbmd0aChwYXJhbWV0ZXJUeXBlcyk7CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9jb21tYW5kcy9tYXR2aWV3LmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9t YXR2aWV3LmMKaW5kZXggZWY3YzBkNjI0ZjEuLmY2M2Y4NzUzYjA1IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9jb21tYW5kcy9tYXR2aWV3LmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFu ZHMvbWF0dmlldy5jCkBAIC00NjMsNyArNDYzLDcgQEAgcmVmcmVzaF9tYXR2aWV3X2RhdGFm aWxsKERlc3RSZWNlaXZlciAqZGVzdCwgUXVlcnkgKnF1ZXJ5LAogRGVzdFJlY2VpdmVyICoK IENyZWF0ZVRyYW5zaWVudFJlbERlc3RSZWNlaXZlcihPaWQgdHJhbnNpZW50b2lkKQogewot CURSX3RyYW5zaWVudHJlbCAqc2VsZiA9IChEUl90cmFuc2llbnRyZWwgKikgcGFsbG9jMChz aXplb2YoRFJfdHJhbnNpZW50cmVsKSk7CisJRFJfdHJhbnNpZW50cmVsICpzZWxmID0gcGFs bG9jMF9vYmplY3QoRFJfdHJhbnNpZW50cmVsKTsKIAogCXNlbGYtPnB1Yi5yZWNlaXZlU2xv dCA9IHRyYW5zaWVudHJlbF9yZWNlaXZlOwogCXNlbGYtPnB1Yi5yU3RhcnR1cCA9IHRyYW5z aWVudHJlbF9zdGFydHVwOwpAQCAtNzEzLDcgKzcxMyw3IEBAIHJlZnJlc2hfYnlfbWF0Y2hf bWVyZ2UoT2lkIG1hdHZpZXdPaWQsIE9pZCB0ZW1wT2lkLCBPaWQgcmVsb3duZXIsCiAJICog aW5jbHVkZSBhbGwgcm93cy4KIAkgKi8KIAl0dXBkZXNjID0gbWF0dmlld1JlbC0+cmRfYXR0 OwotCW9wVXNlZEZvclF1YWwgPSAoT2lkICopIHBhbGxvYzAoc2l6ZW9mKE9pZCkgKiByZWxu YXR0cyk7CisJb3BVc2VkRm9yUXVhbCA9IHBhbGxvYzBfYXJyYXkoT2lkLCByZWxuYXR0cyk7 CiAJZm91bmRVbmlxdWVJbmRleCA9IGZhbHNlOwogCiAJaW5kZXhvaWRsaXN0ID0gUmVsYXRp b25HZXRJbmRleExpc3QobWF0dmlld1JlbCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9j b21tYW5kcy9vcGNsYXNzY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvb3BjbGFzc2Nt ZHMuYwppbmRleCBhNmRkOGVhYjUxOC4uOTkyYWU3ODliMDAgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2NvbW1hbmRzL29wY2xhc3NjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFu ZHMvb3BjbGFzc2NtZHMuYwpAQCAtNTIzLDcgKzUyMyw3IEBAIERlZmluZU9wQ2xhc3MoQ3Jl YXRlT3BDbGFzc1N0bXQgKnN0bXQpCiAjZW5kaWYKIAogCQkJCS8qIFNhdmUgdGhlIGluZm8g Ki8KLQkJCQltZW1iZXIgPSAoT3BGYW1pbHlNZW1iZXIgKikgcGFsbG9jMChzaXplb2YoT3BG YW1pbHlNZW1iZXIpKTsKKwkJCQltZW1iZXIgPSBwYWxsb2MwX29iamVjdChPcEZhbWlseU1l bWJlcik7CiAJCQkJbWVtYmVyLT5pc19mdW5jID0gZmFsc2U7CiAJCQkJbWVtYmVyLT5vYmpl Y3QgPSBvcGVyT2lkOwogCQkJCW1lbWJlci0+bnVtYmVyID0gaXRlbS0+bnVtYmVyOwpAQCAt NTQ3LDcgKzU0Nyw3IEBAIERlZmluZU9wQ2xhc3MoQ3JlYXRlT3BDbGFzc1N0bXQgKnN0bXQp CiAJCQkJCQkJCSAgIGdldF9mdW5jX25hbWUoZnVuY09pZCkpOwogI2VuZGlmCiAJCQkJLyog U2F2ZSB0aGUgaW5mbyAqLwotCQkJCW1lbWJlciA9IChPcEZhbWlseU1lbWJlciAqKSBwYWxs b2MwKHNpemVvZihPcEZhbWlseU1lbWJlcikpOworCQkJCW1lbWJlciA9IHBhbGxvYzBfb2Jq ZWN0KE9wRmFtaWx5TWVtYmVyKTsKIAkJCQltZW1iZXItPmlzX2Z1bmMgPSB0cnVlOwogCQkJ CW1lbWJlci0+b2JqZWN0ID0gZnVuY09pZDsKIAkJCQltZW1iZXItPm51bWJlciA9IGl0ZW0t Pm51bWJlcjsKQEAgLTk0MCw3ICs5NDAsNyBAQCBBbHRlck9wRmFtaWx5QWRkKEFsdGVyT3BG YW1pbHlTdG10ICpzdG10LCBPaWQgYW1vaWQsIE9pZCBvcGZhbWlseW9pZCwKICNlbmRpZgog CiAJCQkJLyogU2F2ZSB0aGUgaW5mbyAqLwotCQkJCW1lbWJlciA9IChPcEZhbWlseU1lbWJl ciAqKSBwYWxsb2MwKHNpemVvZihPcEZhbWlseU1lbWJlcikpOworCQkJCW1lbWJlciA9IHBh bGxvYzBfb2JqZWN0KE9wRmFtaWx5TWVtYmVyKTsKIAkJCQltZW1iZXItPmlzX2Z1bmMgPSBm YWxzZTsKIAkJCQltZW1iZXItPm9iamVjdCA9IG9wZXJPaWQ7CiAJCQkJbWVtYmVyLT5udW1i ZXIgPSBpdGVtLT5udW1iZXI7CkBAIC05NzAsNyArOTcwLDcgQEAgQWx0ZXJPcEZhbWlseUFk ZChBbHRlck9wRmFtaWx5U3RtdCAqc3RtdCwgT2lkIGFtb2lkLCBPaWQgb3BmYW1pbHlvaWQs CiAjZW5kaWYKIAogCQkJCS8qIFNhdmUgdGhlIGluZm8gKi8KLQkJCQltZW1iZXIgPSAoT3BG YW1pbHlNZW1iZXIgKikgcGFsbG9jMChzaXplb2YoT3BGYW1pbHlNZW1iZXIpKTsKKwkJCQlt ZW1iZXIgPSBwYWxsb2MwX29iamVjdChPcEZhbWlseU1lbWJlcik7CiAJCQkJbWVtYmVyLT5p c19mdW5jID0gdHJ1ZTsKIAkJCQltZW1iZXItPm9iamVjdCA9IGZ1bmNPaWQ7CiAJCQkJbWVt YmVyLT5udW1iZXIgPSBpdGVtLT5udW1iZXI7CkBAIC0xMDU4LDcgKzEwNTgsNyBAQCBBbHRl ck9wRmFtaWx5RHJvcChBbHRlck9wRmFtaWx5U3RtdCAqc3RtdCwgT2lkIGFtb2lkLCBPaWQg b3BmYW1pbHlvaWQsCiAJCQkJCQkJCQlpdGVtLT5udW1iZXIsIG1heE9wTnVtYmVyKSkpOwog CQkJCXByb2Nlc3NUeXBlc1NwZWMoaXRlbS0+Y2xhc3NfYXJncywgJmxlZnR0eXBlLCAmcmln aHR0eXBlKTsKIAkJCQkvKiBTYXZlIHRoZSBpbmZvICovCi0JCQkJbWVtYmVyID0gKE9wRmFt aWx5TWVtYmVyICopIHBhbGxvYzAoc2l6ZW9mKE9wRmFtaWx5TWVtYmVyKSk7CisJCQkJbWVt YmVyID0gcGFsbG9jMF9vYmplY3QoT3BGYW1pbHlNZW1iZXIpOwogCQkJCW1lbWJlci0+aXNf ZnVuYyA9IGZhbHNlOwogCQkJCW1lbWJlci0+bnVtYmVyID0gaXRlbS0+bnVtYmVyOwogCQkJ CW1lbWJlci0+bGVmdHR5cGUgPSBsZWZ0dHlwZTsKQEAgLTEwNzQsNyArMTA3NCw3IEBAIEFs dGVyT3BGYW1pbHlEcm9wKEFsdGVyT3BGYW1pbHlTdG10ICpzdG10LCBPaWQgYW1vaWQsIE9p ZCBvcGZhbWlseW9pZCwKIAkJCQkJCQkJCWl0ZW0tPm51bWJlciwgbWF4UHJvY051bWJlcikp KTsKIAkJCQlwcm9jZXNzVHlwZXNTcGVjKGl0ZW0tPmNsYXNzX2FyZ3MsICZsZWZ0dHlwZSwg JnJpZ2h0dHlwZSk7CiAJCQkJLyogU2F2ZSB0aGUgaW5mbyAqLwotCQkJCW1lbWJlciA9IChP cEZhbWlseU1lbWJlciAqKSBwYWxsb2MwKHNpemVvZihPcEZhbWlseU1lbWJlcikpOworCQkJ CW1lbWJlciA9IHBhbGxvYzBfb2JqZWN0KE9wRmFtaWx5TWVtYmVyKTsKIAkJCQltZW1iZXIt PmlzX2Z1bmMgPSB0cnVlOwogCQkJCW1lbWJlci0+bnVtYmVyID0gaXRlbS0+bnVtYmVyOwog CQkJCW1lbWJlci0+bGVmdHR5cGUgPSBsZWZ0dHlwZTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL3BvbGljeS5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcG9saWN5LmMK aW5kZXggODMwNTY5NjBmZTQuLjViZDVmOGM5OTY4IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9jb21tYW5kcy9wb2xpY3kuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9wb2xpY3ku YwpAQCAtMTQ0LDcgKzE0NCw3IEBAIHBvbGljeV9yb2xlX2xpc3RfdG9fYXJyYXkoTGlzdCAq cm9sZXMsIGludCAqbnVtX3JvbGVzKQogCWlmIChyb2xlcyA9PSBOSUwpCiAJewogCQkqbnVt X3JvbGVzID0gMTsKLQkJcm9sZV9vaWRzID0gKERhdHVtICopIHBhbGxvYygqbnVtX3JvbGVz ICogc2l6ZW9mKERhdHVtKSk7CisJCXJvbGVfb2lkcyA9IHBhbGxvY19hcnJheShEYXR1bSwg Km51bV9yb2xlcyk7CiAJCXJvbGVfb2lkc1swXSA9IE9iamVjdElkR2V0RGF0dW0oQUNMX0lE X1BVQkxJQyk7CiAKIAkJcmV0dXJuIHJvbGVfb2lkczsKQEAgLTQ3MSw3ICs0NzEsNyBAQCBS ZW1vdmVSb2xlRnJvbU9iamVjdFBvbGljeShPaWQgcm9sZWlkLCBPaWQgY2xhc3NpZCwgT2lk IHBvbGljeV9pZCkKIAkgKiBPcmRpbmFyaWx5IHRoZXJlJ2QgYmUgZXhhY3RseSBvbmUsIGJ1 dCB3ZSBtdXN0IGNvcGUgd2l0aCBkdXBsaWNhdGUKIAkgKiBtZW50aW9ucywgc2luY2UgQ1JF QVRFL0FMVEVSIFBPTElDWSBoaXN0b3JpY2FsbHkgaGF2ZSBhbGxvd2VkIHRoYXQuCiAJICov Ci0Jcm9sZV9vaWRzID0gKERhdHVtICopIHBhbGxvYyhudW1fcm9sZXMgKiBzaXplb2YoRGF0 dW0pKTsKKwlyb2xlX29pZHMgPSBwYWxsb2NfYXJyYXkoRGF0dW0sIG51bV9yb2xlcyk7CiAJ Zm9yIChpID0gMCwgaiA9IDA7IGkgPCBudW1fcm9sZXM7IGkrKykKIAl7CiAJCWlmIChyb2xl c1tpXSAhPSByb2xlaWQpCkBAIC05NDUsNyArOTQ1LDcgQEAgQWx0ZXJQb2xpY3koQWx0ZXJQ b2xpY3lTdG10ICpzdG10KQogCiAJCW5pdGVtcyA9IEFSUl9ESU1TKHBvbGljeV9yb2xlcylb MF07CiAKLQkJcm9sZV9vaWRzID0gKERhdHVtICopIHBhbGxvYyhuaXRlbXMgKiBzaXplb2Yo RGF0dW0pKTsKKwkJcm9sZV9vaWRzID0gcGFsbG9jX2FycmF5KERhdHVtLCBuaXRlbXMpOwog CiAJCWZvciAoaSA9IDA7IGkgPCBuaXRlbXM7IGkrKykKIAkJCXJvbGVfb2lkc1tpXSA9IE9i amVjdElkR2V0RGF0dW0ocm9sZXNbaV0pOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29t bWFuZHMvcHVibGljYXRpb25jbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNh dGlvbmNtZHMuYwppbmRleCAxZmFmM2E4YzM3Mi4uYTE5ODM1MDg5NTAgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5jCisrKyBiL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5jCkBAIC0xMzQ1LDcgKzEzNDUsNyBAQCBB bHRlclB1YmxpY2F0aW9uVGFibGVzKEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10LCBIZWFw VHVwbGUgdHVwLAogCQkJICovCiAJCQlpZiAoIWZvdW5kKQogCQkJewotCQkJCW9sZHJlbCA9 IHBhbGxvYyhzaXplb2YoUHVibGljYXRpb25SZWxJbmZvKSk7CisJCQkJb2xkcmVsID0gcGFs bG9jX29iamVjdChQdWJsaWNhdGlvblJlbEluZm8pOwogCQkJCW9sZHJlbC0+d2hlcmVDbGF1 c2UgPSBOVUxMOwogCQkJCW9sZHJlbC0+Y29sdW1ucyA9IE5JTDsKIAkJCQlvbGRyZWwtPnJl bGF0aW9uID0gdGFibGVfb3BlbihvbGRyZWxpZCwKQEAgLTE3NTcsNyArMTc1Nyw3IEBAIE9w ZW5UYWJsZUxpc3QoTGlzdCAqdGFibGVzKQogCQkJY29udGludWU7CiAJCX0KIAotCQlwdWJf cmVsID0gcGFsbG9jKHNpemVvZihQdWJsaWNhdGlvblJlbEluZm8pKTsKKwkJcHViX3JlbCA9 IHBhbGxvY19vYmplY3QoUHVibGljYXRpb25SZWxJbmZvKTsKIAkJcHViX3JlbC0+cmVsYXRp b24gPSByZWw7CiAJCXB1Yl9yZWwtPndoZXJlQ2xhdXNlID0gdC0+d2hlcmVDbGF1c2U7CiAJ CXB1Yl9yZWwtPmNvbHVtbnMgPSB0LT5jb2x1bW5zOwpAQCAtMTgyNiw3ICsxODI2LDcgQEAg T3BlblRhYmxlTGlzdChMaXN0ICp0YWJsZXMpCiAKIAkJCQkvKiBmaW5kX2FsbF9pbmhlcml0 b3JzIGFscmVhZHkgZ290IGxvY2sgKi8KIAkJCQlyZWwgPSB0YWJsZV9vcGVuKGNoaWxkcmVs aWQsIE5vTG9jayk7Ci0JCQkJcHViX3JlbCA9IHBhbGxvYyhzaXplb2YoUHVibGljYXRpb25S ZWxJbmZvKSk7CisJCQkJcHViX3JlbCA9IHBhbGxvY19vYmplY3QoUHVibGljYXRpb25SZWxJ bmZvKTsKIAkJCQlwdWJfcmVsLT5yZWxhdGlvbiA9IHJlbDsKIAkJCQkvKiBjaGlsZCBpbmhl cml0cyBXSEVSRSBjbGF1c2UgZnJvbSBwYXJlbnQgKi8KIAkJCQlwdWJfcmVsLT53aGVyZUNs YXVzZSA9IHQtPndoZXJlQ2xhdXNlOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFu ZHMvc2VjbGFiZWwuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3NlY2xhYmVsLmMKaW5kZXgg Y2VlNWQ3YmJiOWMuLjA3YmVkNmUxNDg3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21t YW5kcy9zZWNsYWJlbC5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3NlY2xhYmVsLmMK QEAgLTU3Myw3ICs1NzMsNyBAQCByZWdpc3Rlcl9sYWJlbF9wcm92aWRlcihjb25zdCBjaGFy ICpwcm92aWRlcl9uYW1lLCBjaGVja19vYmplY3RfcmVsYWJlbF90eXBlIGhvbwogCU1lbW9y eUNvbnRleHQgb2xkY3h0OwogCiAJb2xkY3h0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKFRv cE1lbW9yeUNvbnRleHQpOwotCXByb3ZpZGVyID0gcGFsbG9jKHNpemVvZihMYWJlbFByb3Zp ZGVyKSk7CisJcHJvdmlkZXIgPSBwYWxsb2Nfb2JqZWN0KExhYmVsUHJvdmlkZXIpOwogCXBy b3ZpZGVyLT5wcm92aWRlcl9uYW1lID0gcHN0cmR1cChwcm92aWRlcl9uYW1lKTsKIAlwcm92 aWRlci0+aG9vayA9IGhvb2s7CiAJbGFiZWxfcHJvdmlkZXJfbGlzdCA9IGxhcHBlbmQobGFi ZWxfcHJvdmlkZXJfbGlzdCwgcHJvdmlkZXIpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vi c2NyaXB0aW9uY21kcy5jCmluZGV4IDI0YjcwMjM0YjM1Li42ODU5OWE2ZmRlNSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jCisrKyBiL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYwpAQCAtNTY2LDcgKzU2Niw3 IEBAIHB1YmxpY2F0aW9uTGlzdFRvQXJyYXkoTGlzdCAqcHVibGlzdCkKIAkJCQkJCQkJICAg QUxMT0NTRVRfREVGQVVMVF9TSVpFUyk7CiAJb2xkY3h0ID0gTWVtb3J5Q29udGV4dFN3aXRj aFRvKG1lbWN4dCk7CiAKLQlkYXR1bXMgPSAoRGF0dW0gKikgcGFsbG9jKHNpemVvZihEYXR1 bSkgKiBsaXN0X2xlbmd0aChwdWJsaXN0KSk7CisJZGF0dW1zID0gcGFsbG9jX2FycmF5KERh dHVtLCBsaXN0X2xlbmd0aChwdWJsaXN0KSk7CiAKIAljaGVja19kdXBsaWNhdGVzX2luX3B1 Ymxpc3QocHVibGlzdCwgZGF0dW1zKTsKIApAQCAtMTA1NSw3ICsxMDU1LDcgQEAgQWx0ZXJT dWJzY3JpcHRpb25fcmVmcmVzaChTdWJzY3JpcHRpb24gKnN1YiwgYm9vbCBjb3B5X2RhdGEs CiAJCQl7CiAJCQkJY2hhcgkJc3RhdGU7CiAJCQkJWExvZ1JlY1B0cglzdGF0ZWxzbjsKLQkJ CQlTdWJSZW1vdmVSZWxzICpyZW1vdmVfcmVsID0gcGFsbG9jKHNpemVvZihTdWJSZW1vdmVS ZWxzKSk7CisJCQkJU3ViUmVtb3ZlUmVscyAqcmVtb3ZlX3JlbCA9IHBhbGxvY19vYmplY3Qo U3ViUmVtb3ZlUmVscyk7CiAKIAkJCQkvKgogCQkJCSAqIExvY2sgcGdfc3Vic2NyaXB0aW9u X3JlbCB3aXRoIEFjY2Vzc0V4Y2x1c2l2ZUxvY2sgdG8KZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVj bWRzLmMKaW5kZXggMjNlYmFhM2YyMzAuLjgwNGZjZGQ1NTM3IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5k cy90YWJsZWNtZHMuYwpAQCAtOTk5LDcgKzk5OSw3IEBAIERlZmluZVJlbGF0aW9uKENyZWF0 ZVN0bXQgKnN0bXQsIGNoYXIgcmVsa2luZCwgT2lkIG93bmVySWQsCiAKIAkJCUFzc2VydChj b2xEZWYtPmNvb2tlZF9kZWZhdWx0ID09IE5VTEwpOwogCi0JCQlyYXdFbnQgPSAoUmF3Q29s dW1uRGVmYXVsdCAqKSBwYWxsb2Moc2l6ZW9mKFJhd0NvbHVtbkRlZmF1bHQpKTsKKwkJCXJh d0VudCA9IHBhbGxvY19vYmplY3QoUmF3Q29sdW1uRGVmYXVsdCk7CiAJCQlyYXdFbnQtPmF0 dG51bSA9IGF0dG51bTsKIAkJCXJhd0VudC0+cmF3X2RlZmF1bHQgPSBjb2xEZWYtPnJhd19k ZWZhdWx0OwogCQkJcmF3RW50LT5nZW5lcmF0ZWQgPSBjb2xEZWYtPmdlbmVyYXRlZDsKQEAg LTEwMDksNyArMTAwOSw3IEBAIERlZmluZVJlbGF0aW9uKENyZWF0ZVN0bXQgKnN0bXQsIGNo YXIgcmVsa2luZCwgT2lkIG93bmVySWQsCiAJCXsKIAkJCUNvb2tlZENvbnN0cmFpbnQgKmNv b2tlZDsKIAotCQkJY29va2VkID0gKENvb2tlZENvbnN0cmFpbnQgKikgcGFsbG9jKHNpemVv ZihDb29rZWRDb25zdHJhaW50KSk7CisJCQljb29rZWQgPSBwYWxsb2Nfb2JqZWN0KENvb2tl ZENvbnN0cmFpbnQpOwogCQkJY29va2VkLT5jb250eXBlID0gQ09OU1RSX0RFRkFVTFQ7CiAJ CQljb29rZWQtPmNvbm9pZCA9IEludmFsaWRPaWQ7CS8qIHVudGlsIGNyZWF0ZWQgKi8KIAkJ CWNvb2tlZC0+bmFtZSA9IE5VTEw7CkBAIC02NTY4LDcgKzY1NjgsNyBAQCBBVEdldFF1ZXVl RW50cnkoTGlzdCAqKndxdWV1ZSwgUmVsYXRpb24gcmVsKQogCSAqIE5vdCB0aGVyZSwgc28g YWRkIGl0LiAgTm90ZSB0aGF0IHdlIG1ha2UgYSBjb3B5IG9mIHRoZSByZWxhdGlvbidzCiAJ ICogZXhpc3RpbmcgZGVzY3JpcHRvciBiZWZvcmUgYW55dGhpbmcgaW50ZXJlc3RpbmcgY2Fu IGhhcHBlbiB0byBpdC4KIAkgKi8KLQl0YWIgPSAoQWx0ZXJlZFRhYmxlSW5mbyAqKSBwYWxs b2MwKHNpemVvZihBbHRlcmVkVGFibGVJbmZvKSk7CisJdGFiID0gcGFsbG9jMF9vYmplY3Qo QWx0ZXJlZFRhYmxlSW5mbyk7CiAJdGFiLT5yZWxpZCA9IHJlbGlkOwogCXRhYi0+cmVsID0g TlVMTDsJCQkvKiBzZXQgbGF0ZXIgKi8KIAl0YWItPnJlbGtpbmQgPSByZWwtPnJkX3JlbC0+ cmVsa2luZDsKQEAgLTc0MDYsNyArNzQwNiw3IEBAIEFURXhlY0FkZENvbHVtbihMaXN0ICoq d3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIHJlbCwKIAl7CiAJCVJh d0NvbHVtbkRlZmF1bHQgKnJhd0VudDsKIAotCQlyYXdFbnQgPSAoUmF3Q29sdW1uRGVmYXVs dCAqKSBwYWxsb2Moc2l6ZW9mKFJhd0NvbHVtbkRlZmF1bHQpKTsKKwkJcmF3RW50ID0gcGFs bG9jX29iamVjdChSYXdDb2x1bW5EZWZhdWx0KTsKIAkJcmF3RW50LT5hdHRudW0gPSBhdHRy aWJ1dGUtPmF0dG51bTsKIAkJcmF3RW50LT5yYXdfZGVmYXVsdCA9IGNvcHlPYmplY3QoY29s RGVmLT5yYXdfZGVmYXVsdCk7CiAJCXJhd0VudC0+Z2VuZXJhdGVkID0gY29sRGVmLT5nZW5l cmF0ZWQ7CkBAIC03NTA3LDcgKzc1MDcsNyBAQCBBVEV4ZWNBZGRDb2x1bW4oTGlzdCAqKndx dWV1ZSwgQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLCBSZWxhdGlvbiByZWwsCiAJCQlkZWZ2YWwg PSBleHByZXNzaW9uX3BsYW5uZXIoZGVmdmFsKTsKIAogCQkJLyogQWRkIHRoZSBuZXcgZGVm YXVsdCB0byB0aGUgbmV3dmFscyBsaXN0ICovCi0JCQluZXd2YWwgPSAoTmV3Q29sdW1uVmFs dWUgKikgcGFsbG9jMChzaXplb2YoTmV3Q29sdW1uVmFsdWUpKTsKKwkJCW5ld3ZhbCA9IHBh bGxvYzBfb2JqZWN0KE5ld0NvbHVtblZhbHVlKTsKIAkJCW5ld3ZhbC0+YXR0bnVtID0gYXR0 cmlidXRlLT5hdHRudW07CiAJCQluZXd2YWwtPmV4cHIgPSBkZWZ2YWw7CiAJCQluZXd2YWwt PmlzX2dlbmVyYXRlZCA9IChjb2xEZWYtPmdlbmVyYXRlZCAhPSAnXDAnKTsKQEAgLTgxNzYs NyArODE3Niw3IEBAIEFURXhlY0NvbHVtbkRlZmF1bHQoUmVsYXRpb24gcmVsLCBjb25zdCBj aGFyICpjb2xOYW1lLAogCQkvKiBTRVQgREVGQVVMVCAqLwogCQlSYXdDb2x1bW5EZWZhdWx0 ICpyYXdFbnQ7CiAKLQkJcmF3RW50ID0gKFJhd0NvbHVtbkRlZmF1bHQgKikgcGFsbG9jKHNp emVvZihSYXdDb2x1bW5EZWZhdWx0KSk7CisJCXJhd0VudCA9IHBhbGxvY19vYmplY3QoUmF3 Q29sdW1uRGVmYXVsdCk7CiAJCXJhd0VudC0+YXR0bnVtID0gYXR0bnVtOwogCQlyYXdFbnQt PnJhd19kZWZhdWx0ID0gbmV3RGVmYXVsdDsKIAkJcmF3RW50LT5nZW5lcmF0ZWQgPSAnXDAn OwpAQCAtODcwNCw3ICs4NzA0LDcgQEAgQVRFeGVjU2V0RXhwcmVzc2lvbihBbHRlcmVkVGFi bGVJbmZvICp0YWIsIFJlbGF0aW9uIHJlbCwgY29uc3QgY2hhciAqY29sTmFtZSwKIAkJCQkJ ICBmYWxzZSwgZmFsc2UpOwogCiAJLyogUHJlcGFyZSB0byBzdG9yZSB0aGUgbmV3IGV4cHJl c3Npb24sIGluIHRoZSBjYXRhbG9ncyAqLwotCXJhd0VudCA9IChSYXdDb2x1bW5EZWZhdWx0 ICopIHBhbGxvYyhzaXplb2YoUmF3Q29sdW1uRGVmYXVsdCkpOworCXJhd0VudCA9IHBhbGxv Y19vYmplY3QoUmF3Q29sdW1uRGVmYXVsdCk7CiAJcmF3RW50LT5hdHRudW0gPSBhdHRudW07 CiAJcmF3RW50LT5yYXdfZGVmYXVsdCA9IG5ld0V4cHI7CiAJcmF3RW50LT5nZW5lcmF0ZWQg PSBhdHRnZW5lcmF0ZWQ7CkBAIC04NzIxLDcgKzg3MjEsNyBAQCBBVEV4ZWNTZXRFeHByZXNz aW9uKEFsdGVyZWRUYWJsZUluZm8gKnRhYiwgUmVsYXRpb24gcmVsLCBjb25zdCBjaGFyICpj b2xOYW1lLAogCQkvKiBQcmVwYXJlIGZvciB0YWJsZSByZXdyaXRlICovCiAJCWRlZnZhbCA9 IChFeHByICopIGJ1aWxkX2NvbHVtbl9kZWZhdWx0KHJlbCwgYXR0bnVtKTsKIAotCQluZXd2 YWwgPSAoTmV3Q29sdW1uVmFsdWUgKikgcGFsbG9jMChzaXplb2YoTmV3Q29sdW1uVmFsdWUp KTsKKwkJbmV3dmFsID0gcGFsbG9jMF9vYmplY3QoTmV3Q29sdW1uVmFsdWUpOwogCQluZXd2 YWwtPmF0dG51bSA9IGF0dG51bTsKIAkJbmV3dmFsLT5leHByID0gZXhwcmVzc2lvbl9wbGFu bmVyKGRlZnZhbCk7CiAJCW5ld3ZhbC0+aXNfZ2VuZXJhdGVkID0gdHJ1ZTsKQEAgLTk5NDks NyArOTk0OSw3IEBAIEFUQWRkQ2hlY2tOTkNvbnN0cmFpbnQoTGlzdCAqKndxdWV1ZSwgQWx0 ZXJlZFRhYmxlSW5mbyAqdGFiLCBSZWxhdGlvbiByZWwsCiAJCXsKIAkJCU5ld0NvbnN0cmFp bnQgKm5ld2NvbjsKIAotCQkJbmV3Y29uID0gKE5ld0NvbnN0cmFpbnQgKikgcGFsbG9jMChz aXplb2YoTmV3Q29uc3RyYWludCkpOworCQkJbmV3Y29uID0gcGFsbG9jMF9vYmplY3QoTmV3 Q29uc3RyYWludCk7CiAJCQluZXdjb24tPm5hbWUgPSBjY29uLT5uYW1lOwogCQkJbmV3Y29u LT5jb250eXBlID0gY2Nvbi0+Y29udHlwZTsKIAkJCW5ld2Nvbi0+cXVhbCA9IGNjb24tPmV4 cHI7CkBAIC0xMDk0Niw3ICsxMDk0Niw3IEBAIGFkZEZrUmVjdXJzZVJlZmVyZW5jZWQoQ29u c3RyYWludCAqZmtjb25zdHJhaW50LCBSZWxhdGlvbiByZWwsCiAJCQkJCQkJCQkJCSAgIGZh bHNlKTsKIAkJCWlmIChtYXApCiAJCQl7Ci0JCQkJbWFwcGVkX3BrYXR0bnVtID0gcGFsbG9j KHNpemVvZihBdHRyTnVtYmVyKSAqIG51bWZrcyk7CisJCQkJbWFwcGVkX3BrYXR0bnVtID0g cGFsbG9jX2FycmF5KEF0dHJOdW1iZXIsIG51bWZrcyk7CiAJCQkJZm9yIChpbnQgaiA9IDA7 IGogPCBudW1ma3M7IGorKykKIAkJCQkJbWFwcGVkX3BrYXR0bnVtW2pdID0gbWFwLT5hdHRu dW1zW3BrYXR0bnVtW2pdIC0gMV07CiAJCQl9CkBAIC0xMTA4MSw3ICsxMTA4MSw3IEBAIGFk ZEZrUmVjdXJzZVJlZmVyZW5jaW5nKExpc3QgKip3cXVldWUsIENvbnN0cmFpbnQgKmZrY29u c3RyYWludCwgUmVsYXRpb24gcmVsLAogCiAJCQl0YWIgPSBBVEdldFF1ZXVlRW50cnkod3F1 ZXVlLCByZWwpOwogCi0JCQluZXdjb24gPSAoTmV3Q29uc3RyYWludCAqKSBwYWxsb2MwKHNp emVvZihOZXdDb25zdHJhaW50KSk7CisJCQluZXdjb24gPSBwYWxsb2MwX29iamVjdChOZXdD b25zdHJhaW50KTsKIAkJCW5ld2Nvbi0+bmFtZSA9IGdldF9jb25zdHJhaW50X25hbWUocGFy ZW50Q29uc3RyKTsKIAkJCW5ld2Nvbi0+Y29udHlwZSA9IENPTlNUUl9GT1JFSUdOOwogCQkJ bmV3Y29uLT5yZWZyZWxpZCA9IFJlbGF0aW9uR2V0UmVsaWQocGtyZWwpOwpAQCAtMTI1MDMs NyArMTI1MDMsNyBAQCBBVEV4ZWNBbHRlckNvbnN0ckVuZm9yY2VhYmlsaXR5KExpc3QgKip3 cXVldWUsIEFUQWx0ZXJDb25zdHJhaW50ICpjbWRjb24sCiAJCQlBbHRlcmVkVGFibGVJbmZv ICp0YWI7CiAJCQlOZXdDb25zdHJhaW50ICpuZXdjb247CiAKLQkJCW5ld2NvbiA9IChOZXdD b25zdHJhaW50ICopIHBhbGxvYzAoc2l6ZW9mKE5ld0NvbnN0cmFpbnQpKTsKKwkJCW5ld2Nv biA9IHBhbGxvYzBfb2JqZWN0KE5ld0NvbnN0cmFpbnQpOwogCQkJbmV3Y29uLT5uYW1lID0g Zmtjb25zdHJhaW50LT5jb25uYW1lOwogCQkJbmV3Y29uLT5jb250eXBlID0gQ09OU1RSX0ZP UkVJR047CiAJCQluZXdjb24tPnJlZnJlbGlkID0gY3VycmNvbi0+Y29uZnJlbGlkOwpAQCAt MTMwMTksNyArMTMwMTksNyBAQCBRdWV1ZUZLQ29uc3RyYWludFZhbGlkYXRpb24oTGlzdCAq KndxdWV1ZSwgUmVsYXRpb24gY29ucmVsLCBSZWxhdGlvbiBma3JlbCwKIAkJLyogZm9yIG5v dyB0aGlzIGlzIGFsbCB3ZSBuZWVkICovCiAJCWZrY29uc3RyYWludC0+Y29ubmFtZSA9IHBz dHJkdXAoTmFtZVN0cihjb24tPmNvbm5hbWUpKTsKIAotCQluZXdjb24gPSAoTmV3Q29uc3Ry YWludCAqKSBwYWxsb2MwKHNpemVvZihOZXdDb25zdHJhaW50KSk7CisJCW5ld2NvbiA9IHBh bGxvYzBfb2JqZWN0KE5ld0NvbnN0cmFpbnQpOwogCQluZXdjb24tPm5hbWUgPSBma2NvbnN0 cmFpbnQtPmNvbm5hbWU7CiAJCW5ld2Nvbi0+Y29udHlwZSA9IENPTlNUUl9GT1JFSUdOOwog CQluZXdjb24tPnJlZnJlbGlkID0gY29uLT5jb25mcmVsaWQ7CkBAIC0xMzE2Nyw3ICsxMzE2 Nyw3IEBAIFF1ZXVlQ2hlY2tDb25zdHJhaW50VmFsaWRhdGlvbihMaXN0ICoqd3F1ZXVlLCBS ZWxhdGlvbiBjb25yZWwsIFJlbGF0aW9uIHJlbCwKIAl9CiAKIAkvKiBRdWV1ZSB2YWxpZGF0 aW9uIGZvciBwaGFzZSAzICovCi0JbmV3Y29uID0gKE5ld0NvbnN0cmFpbnQgKikgcGFsbG9j MChzaXplb2YoTmV3Q29uc3RyYWludCkpOworCW5ld2NvbiA9IHBhbGxvYzBfb2JqZWN0KE5l d0NvbnN0cmFpbnQpOwogCW5ld2Nvbi0+bmFtZSA9IGNvbnN0ck5hbWU7CiAJbmV3Y29uLT5j b250eXBlID0gQ09OU1RSX0NIRUNLOwogCW5ld2Nvbi0+cmVmcmVsaWQgPSBJbnZhbGlkT2lk OwpAQCAtMTQ1MjIsNyArMTQ1MjIsNyBAQCBBVFByZXBBbHRlckNvbHVtblR5cGUoTGlzdCAq KndxdWV1ZSwKIAkJICogQWRkIGEgd29yayBxdWV1ZSBpdGVtIHRvIG1ha2UgQVRSZXdyaXRl VGFibGUgdXBkYXRlIHRoZSBjb2x1bW4KIAkJICogY29udGVudHMuCiAJCSAqLwotCQluZXd2 YWwgPSAoTmV3Q29sdW1uVmFsdWUgKikgcGFsbG9jMChzaXplb2YoTmV3Q29sdW1uVmFsdWUp KTsKKwkJbmV3dmFsID0gcGFsbG9jMF9vYmplY3QoTmV3Q29sdW1uVmFsdWUpOwogCQluZXd2 YWwtPmF0dG51bSA9IGF0dG51bTsKIAkJbmV3dmFsLT5leHByID0gKEV4cHIgKikgdHJhbnNm b3JtOwogCQluZXd2YWwtPmlzX2dlbmVyYXRlZCA9IGZhbHNlOwpAQCAtMTkyNjIsNyArMTky NjIsNyBAQCByZWdpc3Rlcl9vbl9jb21taXRfYWN0aW9uKE9pZCByZWxpZCwgT25Db21taXRB Y3Rpb24gYWN0aW9uKQogCiAJb2xkY3h0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKENhY2hl TWVtb3J5Q29udGV4dCk7CiAKLQlvYyA9IChPbkNvbW1pdEl0ZW0gKikgcGFsbG9jKHNpemVv ZihPbkNvbW1pdEl0ZW0pKTsKKwlvYyA9IHBhbGxvY19vYmplY3QoT25Db21taXRJdGVtKTsK IAlvYy0+cmVsaWQgPSByZWxpZDsKIAlvYy0+b25jb21taXQgPSBhY3Rpb247CiAJb2MtPmNy ZWF0aW5nX3N1YmlkID0gR2V0Q3VycmVudFN1YlRyYW5zYWN0aW9uSWQoKTsKQEAgLTIwNTc1 LDggKzIwNTc1LDggQEAgQXR0YWNoUGFydGl0aW9uRW5zdXJlSW5kZXhlcyhMaXN0ICoqd3F1 ZXVlLCBSZWxhdGlvbiByZWwsIFJlbGF0aW9uIGF0dGFjaHJlbCkKIAogCWlkeGVzID0gUmVs YXRpb25HZXRJbmRleExpc3QocmVsKTsKIAlhdHRhY2hSZWxJZHhzID0gUmVsYXRpb25HZXRJ bmRleExpc3QoYXR0YWNocmVsKTsKLQlhdHRhY2hyZWxJZHhSZWxzID0gcGFsbG9jKHNpemVv ZihSZWxhdGlvbikgKiBsaXN0X2xlbmd0aChhdHRhY2hSZWxJZHhzKSk7Ci0JYXR0YWNoSW5m b3MgPSBwYWxsb2Moc2l6ZW9mKEluZGV4SW5mbyAqKSAqIGxpc3RfbGVuZ3RoKGF0dGFjaFJl bElkeHMpKTsKKwlhdHRhY2hyZWxJZHhSZWxzID0gcGFsbG9jX2FycmF5KFJlbGF0aW9uLCBs aXN0X2xlbmd0aChhdHRhY2hSZWxJZHhzKSk7CisJYXR0YWNoSW5mb3MgPSBwYWxsb2NfYXJy YXkoSW5kZXhJbmZvICosIGxpc3RfbGVuZ3RoKGF0dGFjaFJlbElkeHMpKTsKIAogCS8qIEJ1 aWxkIGFycmF5cyBvZiBhbGwgZXhpc3RpbmcgaW5kZXhlcyBhbmQgdGhlaXIgSW5kZXhJbmZv cyAqLwogCWZvcmVhY2hfb2lkKGNsZElkeElkLCBhdHRhY2hSZWxJZHhzKQpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdHJpZ2dlci5jIGIvc3JjL2JhY2tlbmQvY29tbWFu ZHMvdHJpZ2dlci5jCmluZGV4IDU3OWFjOGQ3NmFlLi4xMmM5N2YyYzAyMyAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdHJpZ2dlci5jCisrKyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL3RyaWdnZXIuYwpAQCAtMTk5MSw3ICsxOTkxLDcgQEAgUmVsYXRpb25CdWlsZFRy aWdnZXJzKFJlbGF0aW9uIHJlbGF0aW9uKQogCX0KIAogCS8qIEJ1aWxkIHRyaWdkZXNjICov Ci0JdHJpZ2Rlc2MgPSAoVHJpZ2dlckRlc2MgKikgcGFsbG9jMChzaXplb2YoVHJpZ2dlckRl c2MpKTsKKwl0cmlnZGVzYyA9IHBhbGxvYzBfb2JqZWN0KFRyaWdnZXJEZXNjKTsKIAl0cmln ZGVzYy0+dHJpZ2dlcnMgPSB0cmlnZ2VyczsKIAl0cmlnZGVzYy0+bnVtdHJpZ2dlcnMgPSBu dW10cmlnczsKIAlmb3IgKGkgPSAwOyBpIDwgbnVtdHJpZ3M7IGkrKykKQEAgLTIwOTYsNyAr MjA5Niw3IEBAIENvcHlUcmlnZ2VyRGVzYyhUcmlnZ2VyRGVzYyAqdHJpZ2Rlc2MpCiAJaWYg KHRyaWdkZXNjID09IE5VTEwgfHwgdHJpZ2Rlc2MtPm51bXRyaWdnZXJzIDw9IDApCiAJCXJl dHVybiBOVUxMOwogCi0JbmV3ZGVzYyA9IChUcmlnZ2VyRGVzYyAqKSBwYWxsb2Moc2l6ZW9m KFRyaWdnZXJEZXNjKSk7CisJbmV3ZGVzYyA9IHBhbGxvY19vYmplY3QoVHJpZ2dlckRlc2Mp OwogCW1lbWNweShuZXdkZXNjLCB0cmlnZGVzYywgc2l6ZW9mKFRyaWdnZXJEZXNjKSk7CiAK IAl0cmlnZ2VyID0gKFRyaWdnZXIgKikgcGFsbG9jKHRyaWdkZXNjLT5udW10cmlnZ2VycyAq IHNpemVvZihUcmlnZ2VyKSk7CkBAIC00OTAxLDcgKzQ5MDEsNyBAQCBHZXRBZnRlclRyaWdn ZXJzVGFibGVEYXRhKE9pZCByZWxpZCwgQ21kVHlwZSBjbWRUeXBlKQogCiAJb2xkY3h0ID0g TWVtb3J5Q29udGV4dFN3aXRjaFRvKEN1clRyYW5zYWN0aW9uQ29udGV4dCk7CiAKLQl0YWJs ZSA9IChBZnRlclRyaWdnZXJzVGFibGVEYXRhICopIHBhbGxvYzAoc2l6ZW9mKEFmdGVyVHJp Z2dlcnNUYWJsZURhdGEpKTsKKwl0YWJsZSA9IHBhbGxvYzBfb2JqZWN0KEFmdGVyVHJpZ2dl cnNUYWJsZURhdGEpOwogCXRhYmxlLT5yZWxpZCA9IHJlbGlkOwogCXRhYmxlLT5jbWRUeXBl ID0gY21kVHlwZTsKIAlxcy0+dGFibGVzID0gbGFwcGVuZChxcy0+dGFibGVzLCB0YWJsZSk7 CkBAIC01MDUwLDcgKzUwNTAsNyBAQCBNYWtlVHJhbnNpdGlvbkNhcHR1cmVTdGF0ZShUcmln Z2VyRGVzYyAqdHJpZ2Rlc2MsIE9pZCByZWxpZCwgQ21kVHlwZSBjbWRUeXBlKQogCU1lbW9y eUNvbnRleHRTd2l0Y2hUbyhvbGRjeHQpOwogCiAJLyogTm93IGJ1aWxkIHRoZSBUcmFuc2l0 aW9uQ2FwdHVyZVN0YXRlIHN0cnVjdCwgaW4gY2FsbGVyJ3MgY29udGV4dCAqLwotCXN0YXRl ID0gKFRyYW5zaXRpb25DYXB0dXJlU3RhdGUgKikgcGFsbG9jMChzaXplb2YoVHJhbnNpdGlv bkNhcHR1cmVTdGF0ZSkpOworCXN0YXRlID0gcGFsbG9jMF9vYmplY3QoVHJhbnNpdGlvbkNh cHR1cmVTdGF0ZSk7CiAJc3RhdGUtPnRjc19kZWxldGVfb2xkX3RhYmxlID0gbmVlZF9vbGRf ZGVsOwogCXN0YXRlLT50Y3NfdXBkYXRlX29sZF90YWJsZSA9IG5lZWRfb2xkX3VwZDsKIAlz dGF0ZS0+dGNzX3VwZGF0ZV9uZXdfdGFibGUgPSBuZWVkX25ld191cGQ7CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9jb21tYW5kcy90c2VhcmNoY21kcy5jIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvdHNlYXJjaGNtZHMuYwppbmRleCBkYzdkZjczNmZiOC4uZWM0NTgwZTE3YzkgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RzZWFyY2hjbWRzLmMKKysrIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvdHNlYXJjaGNtZHMuYwpAQCAtMTAyNyw3ICsxMDI3LDcgQEAg RGVmaW5lVFNDb25maWd1cmF0aW9uKExpc3QgKm5hbWVzLCBMaXN0ICpwYXJhbWV0ZXJzLCBP YmplY3RBZGRyZXNzICpjb3BpZWQpCiAJCSAqIGtub3cgdGhhdCB0aGV5IHdpbGwgYmUgdXNl ZC4KIAkJICovCiAJCW1heF9zbG90cyA9IE1BWF9DQVRBTE9HX01VTFRJX0lOU0VSVF9CWVRF UyAvIHNpemVvZihGb3JtRGF0YV9wZ190c19jb25maWdfbWFwKTsKLQkJc2xvdCA9IHBhbGxv YyhzaXplb2YoVHVwbGVUYWJsZVNsb3QgKikgKiBtYXhfc2xvdHMpOworCQlzbG90ID0gcGFs bG9jX2FycmF5KFR1cGxlVGFibGVTbG90ICosIG1heF9zbG90cyk7CiAKIAkJU2NhbktleUlu aXQoJnNrZXksCiAJCQkJCUFudW1fcGdfdHNfY29uZmlnX21hcF9tYXBjZmcsCkBAIC0xMjYx LDcgKzEyNjEsNyBAQCBnZXRUb2tlblR5cGVzKE9pZCBwcnNJZCwgTGlzdCAqdG9rZW5uYW1l cykKIAkJewogCQkJaWYgKHN0cmNtcChzdHJWYWwodmFsKSwgbGlzdFtqXS5hbGlhcykgPT0g MCkKIAkJCXsKLQkJCQlUU1Rva2VuVHlwZUl0ZW0gKnRzID0gKFRTVG9rZW5UeXBlSXRlbSAq KSBwYWxsb2MwKHNpemVvZihUU1Rva2VuVHlwZUl0ZW0pKTsKKwkJCQlUU1Rva2VuVHlwZUl0 ZW0gKnRzID0gcGFsbG9jMF9vYmplY3QoVFNUb2tlblR5cGVJdGVtKTsKIAogCQkJCXRzLT5u dW0gPSBsaXN0W2pdLmxleGlkOwogCQkJCXRzLT5uYW1lID0gcHN0cmR1cChzdHJWYWwodmFs KSk7CkBAIC0xMzQ0LDcgKzEzNDQsNyBAQCBNYWtlQ29uZmlndXJhdGlvbk1hcHBpbmcoQWx0 ZXJUU0NvbmZpZ3VyYXRpb25TdG10ICpzdG10LAogCSAqIENvbnZlcnQgbGlzdCBvZiBkaWN0 aW9uYXJ5IG5hbWVzIHRvIGFycmF5IG9mIGRpY3QgT0lEcwogCSAqLwogCW5kaWN0ID0gbGlz dF9sZW5ndGgoc3RtdC0+ZGljdHMpOwotCWRpY3RJZHMgPSAoT2lkICopIHBhbGxvYyhzaXpl b2YoT2lkKSAqIG5kaWN0KTsKKwlkaWN0SWRzID0gcGFsbG9jX2FycmF5KE9pZCwgbmRpY3Qp OwogCWkgPSAwOwogCWZvcmVhY2goYywgc3RtdC0+ZGljdHMpCiAJewpAQCAtMTQzMiw3ICsx NDMyLDcgQEAgTWFrZUNvbmZpZ3VyYXRpb25NYXBwaW5nKEFsdGVyVFNDb25maWd1cmF0aW9u U3RtdCAqc3RtdCwKIAkJLyogQWxsb2NhdGUgdGhlIHNsb3RzIHRvIHVzZSBhbmQgaW5pdGlh bGl6ZSB0aGVtICovCiAJCW5zbG90cyA9IE1pbihudG9rZW4gKiBuZGljdCwKIAkJCQkJIE1B WF9DQVRBTE9HX01VTFRJX0lOU0VSVF9CWVRFUyAvIHNpemVvZihGb3JtRGF0YV9wZ190c19j b25maWdfbWFwKSk7Ci0JCXNsb3QgPSBwYWxsb2Moc2l6ZW9mKFR1cGxlVGFibGVTbG90ICop ICogbnNsb3RzKTsKKwkJc2xvdCA9IHBhbGxvY19hcnJheShUdXBsZVRhYmxlU2xvdCAqLCBu c2xvdHMpOwogCQlmb3IgKGkgPSAwOyBpIDwgbnNsb3RzOyBpKyspCiAJCQlzbG90W2ldID0g TWFrZVNpbmdsZVR1cGxlVGFibGVTbG90KFJlbGF0aW9uR2V0RGVzY3IocmVsTWFwKSwKIAkJ CQkJCQkJCQkJICAgJlRUU09wc0hlYXBUdXBsZSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9jb21tYW5kcy90eXBlY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdHlwZWNtZHMu YwppbmRleCA0N2Q1MDQ3ZmU4Yi4uMGViOGUwYTJiYjAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL3R5cGVjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdHlw ZWNtZHMuYwpAQCAtMzQ0NywxMCArMzQ0NywxMCBAQCBnZXRfcmVsc193aXRoX2RvbWFpbihP aWQgZG9tYWluT2lkLCBMT0NLTU9ERSBsb2NrbW9kZSkKIAkJCX0KIAogCQkJLyogQnVpbGQg dGhlIFJlbFRvQ2hlY2sgZW50cnkgd2l0aCBlbm91Z2ggc3BhY2UgZm9yIGFsbCBhdHRzICov Ci0JCQlydGMgPSAoUmVsVG9DaGVjayAqKSBwYWxsb2Moc2l6ZW9mKFJlbFRvQ2hlY2spKTsK KwkJCXJ0YyA9IHBhbGxvY19vYmplY3QoUmVsVG9DaGVjayk7CiAJCQlydGMtPnJlbCA9IHJl bDsKIAkJCXJ0Yy0+bmF0dHMgPSAwOwotCQkJcnRjLT5hdHRzID0gKGludCAqKSBwYWxsb2Mo c2l6ZW9mKGludCkgKiBSZWxhdGlvbkdldE51bWJlck9mQXR0cmlidXRlcyhyZWwpKTsKKwkJ CXJ0Yy0+YXR0cyA9IHBhbGxvY19hcnJheShpbnQsIFJlbGF0aW9uR2V0TnVtYmVyT2ZBdHRy aWJ1dGVzKHJlbCkpOwogCQkJcmVzdWx0ID0gbGFwcGVuZChyZXN1bHQsIHJ0Yyk7CiAJCX0K IApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdXNlci5jIGIvc3JjL2JhY2tl bmQvY29tbWFuZHMvdXNlci5jCmluZGV4IDZhZTQyZWE1NjU2Li5lZjRkZTFlN2ZkMSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdXNlci5jCisrKyBiL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3VzZXIuYwpAQCAtMTkwNCw3ICsxOTA0LDcgQEAgQWRkUm9sZU1lbXMoT2lk IGN1cnJlbnRVc2VySWQsIGNvbnN0IGNoYXIgKnJvbGVuYW1lLCBPaWQgcm9sZWlkLAogCQll bHNlCiAJCXsKIAkJCU9pZAkJCW9iamVjdElkOwotCQkJT2lkCQkgICAqbmV3bWVtYmVycyA9 IHBhbGxvYyhzaXplb2YoT2lkKSk7CisJCQlPaWQJCSAgICpuZXdtZW1iZXJzID0gcGFsbG9j X29iamVjdChPaWQpOwogCiAJCQkvKgogCQkJICogVGhlIHZhbHVlcyBmb3IgdGhlc2Ugb3B0 aW9ucyBjYW4gYmUgdGFrZW4gZGlyZWN0bHkgZnJvbSAncG9wdCcuCkBAIC0yMjk1LDcgKzIy OTUsNyBAQCBpbml0aWFsaXplX3Jldm9rZV9hY3Rpb25zKENhdENMaXN0ICptZW1saXN0KQog CWlmIChtZW1saXN0LT5uX21lbWJlcnMgPT0gMCkKIAkJcmV0dXJuIE5VTEw7CiAKLQlyZXN1 bHQgPSBwYWxsb2Moc2l6ZW9mKFJldm9rZVJvbGVHcmFudEFjdGlvbikgKiBtZW1saXN0LT5u X21lbWJlcnMpOworCXJlc3VsdCA9IHBhbGxvY19hcnJheShSZXZva2VSb2xlR3JhbnRBY3Rp b24sIG1lbWxpc3QtPm5fbWVtYmVycyk7CiAJZm9yIChpID0gMDsgaSA8IG1lbWxpc3QtPm5f bWVtYmVyczsgaSsrKQogCQlyZXN1bHRbaV0gPSBSUkdfTk9PUDsKIAlyZXR1cm4gcmVzdWx0 OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYyBi L3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMKaW5kZXggMGZlZWExZDMw ZWMuLjhhMzdjMDg4NzFhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1 dW1wYXJhbGxlbC5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bXBhcmFsbGVs LmMKQEAgLTI2OCw3ICsyNjgsNyBAQCBwYXJhbGxlbF92YWN1dW1faW5pdChSZWxhdGlvbiBy ZWwsIFJlbGF0aW9uICppbmRyZWxzLCBpbnQgbmluZGV4ZXMsCiAJLyoKIAkgKiBDb21wdXRl IHRoZSBudW1iZXIgb2YgcGFyYWxsZWwgdmFjdXVtIHdvcmtlcnMgdG8gbGF1bmNoCiAJICov Ci0Jd2lsbF9wYXJhbGxlbF92YWN1dW0gPSAoYm9vbCAqKSBwYWxsb2MwKHNpemVvZihib29s KSAqIG5pbmRleGVzKTsKKwl3aWxsX3BhcmFsbGVsX3ZhY3V1bSA9IHBhbGxvYzBfYXJyYXko Ym9vbCwgbmluZGV4ZXMpOwogCXBhcmFsbGVsX3dvcmtlcnMgPSBwYXJhbGxlbF92YWN1dW1f Y29tcHV0ZV93b3JrZXJzKGluZHJlbHMsIG5pbmRleGVzLAogCQkJCQkJCQkJCQkJCSAgIG5y ZXF1ZXN0ZWRfd29ya2VycywKIAkJCQkJCQkJCQkJCQkgICB3aWxsX3BhcmFsbGVsX3ZhY3V1 bSk7CkBAIC0yNzksNyArMjc5LDcgQEAgcGFyYWxsZWxfdmFjdXVtX2luaXQoUmVsYXRpb24g cmVsLCBSZWxhdGlvbiAqaW5kcmVscywgaW50IG5pbmRleGVzLAogCQlyZXR1cm4gTlVMTDsK IAl9CiAKLQlwdnMgPSAoUGFyYWxsZWxWYWN1dW1TdGF0ZSAqKSBwYWxsb2MwKHNpemVvZihQ YXJhbGxlbFZhY3V1bVN0YXRlKSk7CisJcHZzID0gcGFsbG9jMF9vYmplY3QoUGFyYWxsZWxW YWN1dW1TdGF0ZSk7CiAJcHZzLT5pbmRyZWxzID0gaW5kcmVsczsKIAlwdnMtPm5pbmRleGVz ID0gbmluZGV4ZXM7CiAJcHZzLT53aWxsX3BhcmFsbGVsX3ZhY3V1bSA9IHdpbGxfcGFyYWxs ZWxfdmFjdXVtOwpAQCAtNDQ0LDcgKzQ0NCw3IEBAIHBhcmFsbGVsX3ZhY3V1bV9lbmQoUGFy YWxsZWxWYWN1dW1TdGF0ZSAqcHZzLCBJbmRleEJ1bGtEZWxldGVSZXN1bHQgKippc3RhdHMp CiAKIAkJaWYgKGluZHN0YXRzLT5pc3RhdF91cGRhdGVkKQogCQl7Ci0JCQlpc3RhdHNbaV0g PSAoSW5kZXhCdWxrRGVsZXRlUmVzdWx0ICopIHBhbGxvYzAoc2l6ZW9mKEluZGV4QnVsa0Rl bGV0ZVJlc3VsdCkpOworCQkJaXN0YXRzW2ldID0gcGFsbG9jMF9vYmplY3QoSW5kZXhCdWxr RGVsZXRlUmVzdWx0KTsKIAkJCW1lbWNweShpc3RhdHNbaV0sICZpbmRzdGF0cy0+aXN0YXQs IHNpemVvZihJbmRleEJ1bGtEZWxldGVSZXN1bHQpKTsKIAkJfQogCQllbHNlCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwci5jIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3IvZXhlY0V4cHIuYwppbmRleCBmMTU2OTg3OWI1Mi4uMzNmMWRmNzc2NGIgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHByLmMKKysrIGIvc3JjL2JhY2tl bmQvZXhlY3V0b3IvZXhlY0V4cHIuYwpAQCAtMTMxMiw3ICsxMzEyLDcgQEAgRXhlY0luaXRF eHByUmVjKEV4cHIgKm5vZGUsIEV4cHJTdGF0ZSAqc3RhdGUsCiAJCQkJfQogCiAJCQkJLyog U2V0IHVwIHRoZSBwcmltYXJ5IGZtZ3IgbG9va3VwIGluZm9ybWF0aW9uICovCi0JCQkJZmlu Zm8gPSBwYWxsb2MwKHNpemVvZihGbWdySW5mbykpOworCQkJCWZpbmZvID0gcGFsbG9jMF9v YmplY3QoRm1nckluZm8pOwogCQkJCWZjaW5mbyA9IHBhbGxvYzAoU2l6ZUZvckZ1bmN0aW9u Q2FsbEluZm8oMikpOwogCQkJCWZtZ3JfaW5mbyhjbXBmdW5jaWQsIGZpbmZvKTsKIAkJCQlm bWdyX2luZm9fc2V0X2V4cHIoKE5vZGUgKikgbm9kZSwgZmluZm8pOwpAQCAtMTM4OCw3ICsx Mzg4LDcgQEAgRXhlY0luaXRFeHByUmVjKEV4cHIgKm5vZGUsIEV4cHJTdGF0ZSAqc3RhdGUs CiAKIAkJCQkvKiBhbGxvY2F0ZSBzY3JhdGNoIG1lbW9yeSB1c2VkIGJ5IGFsbCBzdGVwcyBv ZiBBTkQvT1IgKi8KIAkJCQlpZiAoYm9vbGV4cHItPmJvb2xvcCAhPSBOT1RfRVhQUikKLQkJ CQkJc2NyYXRjaC5kLmJvb2xleHByLmFueW51bGwgPSAoYm9vbCAqKSBwYWxsb2Moc2l6ZW9m KGJvb2wpKTsKKwkJCQkJc2NyYXRjaC5kLmJvb2xleHByLmFueW51bGwgPSBwYWxsb2Nfb2Jq ZWN0KGJvb2wpOwogCiAJCQkJLyoKIAkJCQkgKiBGb3IgZWFjaCBhcmd1bWVudCBldmFsdWF0 ZSB0aGUgYXJndW1lbnQgaXRzZWxmLCB0aGVuCkBAIC0xNTIxLDExICsxNTIxLDExIEBAIEV4 ZWNJbml0RXhwclJlYyhFeHByICpub2RlLCBFeHByU3RhdGUgKnN0YXRlLAogCQkJCVJlbGVh c2VUdXBsZURlc2ModHVwRGVzYyk7CiAKIAkJCQkvKiBjcmVhdGUgd29ya3NwYWNlIGZvciBj b2x1bW4gdmFsdWVzICovCi0JCQkJdmFsdWVzID0gKERhdHVtICopIHBhbGxvYyhzaXplb2Yo RGF0dW0pICogbmNvbHVtbnMpOwotCQkJCW51bGxzID0gKGJvb2wgKikgcGFsbG9jKHNpemVv Zihib29sKSAqIG5jb2x1bW5zKTsKKwkJCQl2YWx1ZXMgPSBwYWxsb2NfYXJyYXkoRGF0dW0s IG5jb2x1bW5zKTsKKwkJCQludWxscyA9IHBhbGxvY19hcnJheShib29sLCBuY29sdW1ucyk7 CiAKIAkJCQkvKiBjcmVhdGUgc2hhcmVkIGNvbXBvc2l0ZS10eXBlLWxvb2t1cCBjYWNoZSBz dHJ1Y3QgKi8KLQkJCQlyb3djYWNoZXAgPSBwYWxsb2Moc2l6ZW9mKEV4cHJFdmFsUm93dHlw ZUNhY2hlKSk7CisJCQkJcm93Y2FjaGVwID0gcGFsbG9jX29iamVjdChFeHByRXZhbFJvd3R5 cGVDYWNoZSk7CiAJCQkJcm93Y2FjaGVwLT5jYWNoZXB0ciA9IE5VTEw7CiAKIAkJCQkvKiBl bWl0IGNvZGUgdG8gZXZhbHVhdGUgdGhlIGNvbXBvc2l0ZSBpbnB1dCB2YWx1ZSAqLwpAQCAt MTYzNCw3ICsxNjM0LDcgQEAgRXhlY0luaXRFeHByUmVjKEV4cHIgKm5vZGUsIEV4cHJTdGF0 ZSAqc3RhdGUsCiAJCQkJCXNjcmF0Y2gub3Bjb2RlID0gRUVPUF9JT0NPRVJDRV9TQUZFOwog CiAJCQkJLyogbG9va3VwIHRoZSBzb3VyY2UgdHlwZSdzIG91dHB1dCBmdW5jdGlvbiAqLwot CQkJCXNjcmF0Y2guZC5pb2NvZXJjZS5maW5mb19vdXQgPSBwYWxsb2MwKHNpemVvZihGbWdy SW5mbykpOworCQkJCXNjcmF0Y2guZC5pb2NvZXJjZS5maW5mb19vdXQgPSBwYWxsb2MwX29i amVjdChGbWdySW5mbyk7CiAJCQkJc2NyYXRjaC5kLmlvY29lcmNlLmZjaW5mb19kYXRhX291 dCA9IHBhbGxvYzAoU2l6ZUZvckZ1bmN0aW9uQ2FsbEluZm8oMSkpOwogCiAJCQkJZ2V0VHlw ZU91dHB1dEluZm8oZXhwclR5cGUoKE5vZGUgKikgaW9jb2VyY2UtPmFyZyksCkBAIC0xNjQ2 LDcgKzE2NDYsNyBAQCBFeGVjSW5pdEV4cHJSZWMoRXhwciAqbm9kZSwgRXhwclN0YXRlICpz dGF0ZSwKIAkJCQkJCQkJCQkgMSwgSW52YWxpZE9pZCwgTlVMTCwgTlVMTCk7CiAKIAkJCQkv KiBsb29rdXAgdGhlIHJlc3VsdCB0eXBlJ3MgaW5wdXQgZnVuY3Rpb24gKi8KLQkJCQlzY3Jh dGNoLmQuaW9jb2VyY2UuZmluZm9faW4gPSBwYWxsb2MwKHNpemVvZihGbWdySW5mbykpOwor CQkJCXNjcmF0Y2guZC5pb2NvZXJjZS5maW5mb19pbiA9IHBhbGxvYzBfb2JqZWN0KEZtZ3JJ bmZvKTsKIAkJCQlzY3JhdGNoLmQuaW9jb2VyY2UuZmNpbmZvX2RhdGFfaW4gPSBwYWxsb2Mw KFNpemVGb3JGdW5jdGlvbkNhbGxJbmZvKDMpKTsKIAogCQkJCWdldFR5cGVJbnB1dEluZm8o aW9jb2VyY2UtPnJlc3VsdHR5cGUsCkBAIC0xNjk5LDggKzE2OTksOCBAQCBFeGVjSW5pdEV4 cHJSZWMoRXhwciAqbm9kZSwgRXhwclN0YXRlICpzdGF0ZSwKIAkJCQllbGVtc3RhdGUtPnBh cmVudCA9IHN0YXRlLT5wYXJlbnQ7CiAJCQkJZWxlbXN0YXRlLT5leHRfcGFyYW1zID0gc3Rh dGUtPmV4dF9wYXJhbXM7CiAKLQkJCQllbGVtc3RhdGUtPmlubmVybW9zdF9jYXNldmFsID0g KERhdHVtICopIHBhbGxvYyhzaXplb2YoRGF0dW0pKTsKLQkJCQllbGVtc3RhdGUtPmlubmVy bW9zdF9jYXNlbnVsbCA9IChib29sICopIHBhbGxvYyhzaXplb2YoYm9vbCkpOworCQkJCWVs ZW1zdGF0ZS0+aW5uZXJtb3N0X2Nhc2V2YWwgPSBwYWxsb2Nfb2JqZWN0KERhdHVtKTsKKwkJ CQllbGVtc3RhdGUtPmlubmVybW9zdF9jYXNlbnVsbCA9IHBhbGxvY19vYmplY3QoYm9vbCk7 CiAKIAkJCQlFeGVjSW5pdEV4cHJSZWMoYWNvZXJjZS0+ZWxlbWV4cHIsIGVsZW1zdGF0ZSwK IAkJCQkJCQkJJmVsZW1zdGF0ZS0+cmVzdmFsdWUsICZlbGVtc3RhdGUtPnJlc251bGwpOwpA QCAtMTcyNyw4ICsxNzI3LDcgQEAgRXhlY0luaXRFeHByUmVjKEV4cHIgKm5vZGUsIEV4cHJT dGF0ZSAqc3RhdGUsCiAJCQkJaWYgKGVsZW1zdGF0ZSkKIAkJCQl7CiAJCQkJCS8qIFNldCB1 cCB3b3Jrc3BhY2UgZm9yIGFycmF5X21hcCAqLwotCQkJCQlzY3JhdGNoLmQuYXJyYXljb2Vy Y2UuYW1zdGF0ZSA9Ci0JCQkJCQkoQXJyYXlNYXBTdGF0ZSAqKSBwYWxsb2MwKHNpemVvZihB cnJheU1hcFN0YXRlKSk7CisJCQkJCXNjcmF0Y2guZC5hcnJheWNvZXJjZS5hbXN0YXRlID0g cGFsbG9jMF9vYmplY3QoQXJyYXlNYXBTdGF0ZSk7CiAJCQkJfQogCQkJCWVsc2UKIAkJCQl7 CkBAIC0xNzgzLDggKzE3ODIsOCBAQCBFeGVjSW5pdEV4cHJSZWMoRXhwciAqbm9kZSwgRXhw clN0YXRlICpzdGF0ZSwKIAkJCQlpZiAoY2FzZUV4cHItPmFyZyAhPSBOVUxMKQogCQkJCXsK IAkJCQkJLyogRXZhbHVhdGUgdGVzdGV4cHIgaW50byBjYXNldmFsL2Nhc2VudWxsIHdvcmtz cGFjZSAqLwotCQkJCQljYXNldmFsID0gcGFsbG9jKHNpemVvZihEYXR1bSkpOwotCQkJCQlj YXNlbnVsbCA9IHBhbGxvYyhzaXplb2YoYm9vbCkpOworCQkJCQljYXNldmFsID0gcGFsbG9j X29iamVjdChEYXR1bSk7CisJCQkJCWNhc2VudWxsID0gcGFsbG9jX29iamVjdChib29sKTsK IAogCQkJCQlFeGVjSW5pdEV4cHJSZWMoY2FzZUV4cHItPmFyZywgc3RhdGUsCiAJCQkJCQkJ CQljYXNldmFsLCBjYXNlbnVsbCk7CkBAIC0xOTMwLDkgKzE5MjksOSBAQCBFeGVjSW5pdEV4 cHJSZWMoRXhwciAqbm9kZSwgRXhwclN0YXRlICpzdGF0ZSwKIAkJCQkgKi8KIAkJCQlzY3Jh dGNoLm9wY29kZSA9IEVFT1BfQVJSQVlFWFBSOwogCQkJCXNjcmF0Y2guZC5hcnJheWV4cHIu ZWxlbXZhbHVlcyA9Ci0JCQkJCShEYXR1bSAqKSBwYWxsb2Moc2l6ZW9mKERhdHVtKSAqIG5l bGVtcyk7CisJCQkJCXBhbGxvY19hcnJheShEYXR1bSwgbmVsZW1zKTsKIAkJCQlzY3JhdGNo LmQuYXJyYXlleHByLmVsZW1udWxscyA9Ci0JCQkJCShib29sICopIHBhbGxvYyhzaXplb2Yo Ym9vbCkgKiBuZWxlbXMpOworCQkJCQlwYWxsb2NfYXJyYXkoYm9vbCwgbmVsZW1zKTsKIAkJ CQlzY3JhdGNoLmQuYXJyYXlleHByLm5lbGVtcyA9IG5lbGVtczsKIAogCQkJCS8qIGZpbGwg cmVtYWluaW5nIGZpZWxkcyBvZiBzdGVwICovCkBAIC0yMDA2LDkgKzIwMDUsOSBAQCBFeGVj SW5pdEV4cHJSZWMoRXhwciAqbm9kZSwgRXhwclN0YXRlICpzdGF0ZSwKIAogCQkJCS8qIHNw YWNlIGZvciB0aGUgaW5kaXZpZHVhbCBmaWVsZCBkYXR1bXMgKi8KIAkJCQlzY3JhdGNoLmQu cm93LmVsZW12YWx1ZXMgPQotCQkJCQkoRGF0dW0gKikgcGFsbG9jKHNpemVvZihEYXR1bSkg KiBuZWxlbXMpOworCQkJCQlwYWxsb2NfYXJyYXkoRGF0dW0sIG5lbGVtcyk7CiAJCQkJc2Ny YXRjaC5kLnJvdy5lbGVtbnVsbHMgPQotCQkJCQkoYm9vbCAqKSBwYWxsb2Moc2l6ZW9mKGJv b2wpICogbmVsZW1zKTsKKwkJCQkJcGFsbG9jX2FycmF5KGJvb2wsIG5lbGVtcyk7CiAJCQkJ LyogYXMgZXhwbGFpbmVkIGFib3ZlLCBtYWtlIHN1cmUgYW55IGV4dHJhIGNvbHVtbnMgYXJl IG51bGwgKi8KIAkJCQltZW1zZXQoc2NyYXRjaC5kLnJvdy5lbGVtbnVsbHMsIHRydWUsIHNp emVvZihib29sKSAqIG5lbGVtcyk7CiAKQEAgLTIxMDksNyArMjEwOCw3IEBAIEV4ZWNJbml0 RXhwclJlYyhFeHByICpub2RlLCBFeHByU3RhdGUgKnN0YXRlLAogCQkJCQkJCSBCVE9SREVS X1BST0MsIGxlZnR0eXBlLCByaWdodHR5cGUsIG9wZmFtaWx5KTsKIAogCQkJCQkvKiBTZXQg dXAgdGhlIHByaW1hcnkgZm1nciBsb29rdXAgaW5mb3JtYXRpb24gKi8KLQkJCQkJZmluZm8g PSBwYWxsb2MwKHNpemVvZihGbWdySW5mbykpOworCQkJCQlmaW5mbyA9IHBhbGxvYzBfb2Jq ZWN0KEZtZ3JJbmZvKTsKIAkJCQkJZmNpbmZvID0gcGFsbG9jMChTaXplRm9yRnVuY3Rpb25D YWxsSW5mbygyKSk7CiAJCQkJCWZtZ3JfaW5mbyhwcm9jLCBmaW5mbyk7CiAJCQkJCWZtZ3Jf aW5mb19zZXRfZXhwcigoTm9kZSAqKSBub2RlLCBmaW5mbyk7CkBAIC0yMjUyLDcgKzIyNTEs NyBAQCBFeGVjSW5pdEV4cHJSZWMoRXhwciAqbm9kZSwgRXhwclN0YXRlICpzdGF0ZSwKIAkJ CQkgKi8KIAogCQkJCS8qIFBlcmZvcm0gZnVuY3Rpb24gbG9va3VwICovCi0JCQkJZmluZm8g PSBwYWxsb2MwKHNpemVvZihGbWdySW5mbykpOworCQkJCWZpbmZvID0gcGFsbG9jMF9vYmpl Y3QoRm1nckluZm8pOwogCQkJCWZjaW5mbyA9IHBhbGxvYzAoU2l6ZUZvckZ1bmN0aW9uQ2Fs bEluZm8oMikpOwogCQkJCWZtZ3JfaW5mbyh0eXBlbnRyeS0+Y21wX3Byb2MsIGZpbmZvKTsK IAkJCQlmbWdyX2luZm9fc2V0X2V4cHIoKE5vZGUgKikgbm9kZSwgZmluZm8pOwpAQCAtMjI2 MSwxMCArMjI2MCw4IEBAIEV4ZWNJbml0RXhwclJlYyhFeHByICpub2RlLCBFeHByU3RhdGUg KnN0YXRlLAogCiAJCQkJc2NyYXRjaC5vcGNvZGUgPSBFRU9QX01JTk1BWDsKIAkJCQkvKiBh bGxvY2F0ZSBzcGFjZSB0byBzdG9yZSBhcmd1bWVudHMgKi8KLQkJCQlzY3JhdGNoLmQubWlu bWF4LnZhbHVlcyA9Ci0JCQkJCShEYXR1bSAqKSBwYWxsb2Moc2l6ZW9mKERhdHVtKSAqIG5l bGVtcyk7Ci0JCQkJc2NyYXRjaC5kLm1pbm1heC5udWxscyA9Ci0JCQkJCShib29sICopIHBh bGxvYyhzaXplb2YoYm9vbCkgKiBuZWxlbXMpOworCQkJCXNjcmF0Y2guZC5taW5tYXgudmFs dWVzID0gcGFsbG9jX2FycmF5KERhdHVtLCBuZWxlbXMpOworCQkJCXNjcmF0Y2guZC5taW5t YXgubnVsbHMgPSBwYWxsb2NfYXJyYXkoYm9vbCwgbmVsZW1zKTsKIAkJCQlzY3JhdGNoLmQu bWlubWF4Lm5lbGVtcyA9IG5lbGVtczsKIAogCQkJCXNjcmF0Y2guZC5taW5tYXgub3AgPSBt aW5tYXhleHByLT5vcDsKQEAgLTIzMTMsMTAgKzIzMTAsOCBAQCBFeGVjSW5pdEV4cHJSZWMo RXhwciAqbm9kZSwgRXhwclN0YXRlICpzdGF0ZSwKIAkJCQkvKiBhbGxvY2F0ZSBzcGFjZSBm b3Igc3RvcmluZyBhbGwgdGhlIGFyZ3VtZW50cyAqLwogCQkJCWlmIChubmFtZWQpCiAJCQkJ ewotCQkJCQlzY3JhdGNoLmQueG1sZXhwci5uYW1lZF9hcmd2YWx1ZSA9Ci0JCQkJCQkoRGF0 dW0gKikgcGFsbG9jKHNpemVvZihEYXR1bSkgKiBubmFtZWQpOwotCQkJCQlzY3JhdGNoLmQu eG1sZXhwci5uYW1lZF9hcmdudWxsID0KLQkJCQkJCShib29sICopIHBhbGxvYyhzaXplb2Yo Ym9vbCkgKiBubmFtZWQpOworCQkJCQlzY3JhdGNoLmQueG1sZXhwci5uYW1lZF9hcmd2YWx1 ZSA9IHBhbGxvY19hcnJheShEYXR1bSwgbm5hbWVkKTsKKwkJCQkJc2NyYXRjaC5kLnhtbGV4 cHIubmFtZWRfYXJnbnVsbCA9IHBhbGxvY19hcnJheShib29sLCBubmFtZWQpOwogCQkJCX0K IAkJCQllbHNlCiAJCQkJewpAQCAtMjMyNiwxMCArMjMyMSw4IEBAIEV4ZWNJbml0RXhwclJl YyhFeHByICpub2RlLCBFeHByU3RhdGUgKnN0YXRlLAogCiAJCQkJaWYgKG5hcmdzKQogCQkJ CXsKLQkJCQkJc2NyYXRjaC5kLnhtbGV4cHIuYXJndmFsdWUgPQotCQkJCQkJKERhdHVtICop IHBhbGxvYyhzaXplb2YoRGF0dW0pICogbmFyZ3MpOwotCQkJCQlzY3JhdGNoLmQueG1sZXhw ci5hcmdudWxsID0KLQkJCQkJCShib29sICopIHBhbGxvYyhzaXplb2YoYm9vbCkgKiBuYXJn cyk7CisJCQkJCXNjcmF0Y2guZC54bWxleHByLmFyZ3ZhbHVlID0gcGFsbG9jX2FycmF5KERh dHVtLCBuYXJncyk7CisJCQkJCXNjcmF0Y2guZC54bWxleHByLmFyZ251bGwgPSBwYWxsb2Nf YXJyYXkoYm9vbCwgbmFyZ3MpOwogCQkJCX0KIAkJCQllbHNlCiAJCQkJewpAQCAtMjM5OCwx NSArMjM5MSwxNSBAQCBFeGVjSW5pdEV4cHJSZWMoRXhwciAqbm9kZSwgRXhwclN0YXRlICpz dGF0ZSwKIAkJCQl7CiAJCQkJCUpzb25Db25zdHJ1Y3RvckV4cHJTdGF0ZSAqamNzdGF0ZTsK IAotCQkJCQlqY3N0YXRlID0gcGFsbG9jMChzaXplb2YoSnNvbkNvbnN0cnVjdG9yRXhwclN0 YXRlKSk7CisJCQkJCWpjc3RhdGUgPSBwYWxsb2MwX29iamVjdChKc29uQ29uc3RydWN0b3JF eHByU3RhdGUpOwogCiAJCQkJCXNjcmF0Y2gub3Bjb2RlID0gRUVPUF9KU09OX0NPTlNUUlVD VE9SOwogCQkJCQlzY3JhdGNoLmQuanNvbl9jb25zdHJ1Y3Rvci5qY3N0YXRlID0gamNzdGF0 ZTsKIAogCQkJCQlqY3N0YXRlLT5jb25zdHJ1Y3RvciA9IGN0b3I7Ci0JCQkJCWpjc3RhdGUt PmFyZ192YWx1ZXMgPSAoRGF0dW0gKikgcGFsbG9jKHNpemVvZihEYXR1bSkgKiBuYXJncyk7 Ci0JCQkJCWpjc3RhdGUtPmFyZ19udWxscyA9IChib29sICopIHBhbGxvYyhzaXplb2YoYm9v bCkgKiBuYXJncyk7Ci0JCQkJCWpjc3RhdGUtPmFyZ190eXBlcyA9IChPaWQgKikgcGFsbG9j KHNpemVvZihPaWQpICogbmFyZ3MpOworCQkJCQlqY3N0YXRlLT5hcmdfdmFsdWVzID0gcGFs bG9jX2FycmF5KERhdHVtLCBuYXJncyk7CisJCQkJCWpjc3RhdGUtPmFyZ19udWxscyA9IHBh bGxvY19hcnJheShib29sLCBuYXJncyk7CisJCQkJCWpjc3RhdGUtPmFyZ190eXBlcyA9IHBh bGxvY19hcnJheShPaWQsIG5hcmdzKTsKIAkJCQkJamNzdGF0ZS0+bmFyZ3MgPSBuYXJnczsK IAogCQkJCQlmb3JlYWNoKGxjLCBhcmdzKQpAQCAtMjY4MCw3ICsyNjczLDcgQEAgRXhwckV2 YWxQdXNoU3RlcChFeHByU3RhdGUgKmVzLCBjb25zdCBFeHByRXZhbFN0ZXAgKnMpCiAJaWYg KGVzLT5zdGVwc19hbGxvYyA9PSAwKQogCXsKIAkJZXMtPnN0ZXBzX2FsbG9jID0gMTY7Ci0J CWVzLT5zdGVwcyA9IHBhbGxvYyhzaXplb2YoRXhwckV2YWxTdGVwKSAqIGVzLT5zdGVwc19h bGxvYyk7CisJCWVzLT5zdGVwcyA9IHBhbGxvY19hcnJheShFeHByRXZhbFN0ZXAsIGVzLT5z dGVwc19hbGxvYyk7CiAJfQogCWVsc2UgaWYgKGVzLT5zdGVwc19hbGxvYyA9PSBlcy0+c3Rl cHNfbGVuKQogCXsKQEAgLTI3MzIsNyArMjcyNSw3IEBAIEV4ZWNJbml0RnVuYyhFeHByRXZh bFN0ZXAgKnNjcmF0Y2gsIEV4cHIgKm5vZGUsIExpc3QgKmFyZ3MsIE9pZCBmdW5jaWQsCiAJ CQkJCQkJICAgRlVOQ19NQVhfQVJHUykpKTsKIAogCS8qIEFsbG9jYXRlIGZ1bmN0aW9uIGxv b2t1cCBkYXRhIGFuZCBwYXJhbWV0ZXIgd29ya3NwYWNlIGZvciB0aGlzIGNhbGwgKi8KLQlz Y3JhdGNoLT5kLmZ1bmMuZmluZm8gPSBwYWxsb2MwKHNpemVvZihGbWdySW5mbykpOworCXNj cmF0Y2gtPmQuZnVuYy5maW5mbyA9IHBhbGxvYzBfb2JqZWN0KEZtZ3JJbmZvKTsKIAlzY3Jh dGNoLT5kLmZ1bmMuZmNpbmZvX2RhdGEgPSBwYWxsb2MwKFNpemVGb3JGdW5jdGlvbkNhbGxJ bmZvKG5hcmdzKSk7CiAJZmxpbmZvID0gc2NyYXRjaC0+ZC5mdW5jLmZpbmZvOwogCWZjaW5m byA9IHNjcmF0Y2gtPmQuZnVuYy5mY2luZm9fZGF0YTsKQEAgLTM1NTcsOCArMzU1MCw3IEBA IEV4ZWNJbml0Q29lcmNlVG9Eb21haW4oRXhwckV2YWxTdGVwICpzY3JhdGNoLCBDb2VyY2VU b0RvbWFpbiAqY3Rlc3QsCiAJICogZHVyaW5nIGV4ZWN1dG9yIGluaXRpYWxpemF0aW9uLiAg VGhhdCBtZWFucyB3ZSBkb24ndCBuZWVkIHR5cGNhY2hlLmMgdG8KIAkgKiBwcm92aWRlIGNv bXBpbGVkIGV4cHJzLgogCSAqLwotCWNvbnN0cmFpbnRfcmVmID0gKERvbWFpbkNvbnN0cmFp bnRSZWYgKikKLQkJcGFsbG9jKHNpemVvZihEb21haW5Db25zdHJhaW50UmVmKSk7CisJY29u c3RyYWludF9yZWYgPSBwYWxsb2Nfb2JqZWN0KERvbWFpbkNvbnN0cmFpbnRSZWYpOwogCUlu aXREb21haW5Db25zdHJhaW50UmVmKGN0ZXN0LT5yZXN1bHR0eXBlLAogCQkJCQkJCWNvbnN0 cmFpbnRfcmVmLAogCQkJCQkJCUN1cnJlbnRNZW1vcnlDb250ZXh0LApAQCAtMzU4OCw5ICsz NTgwLDkgQEAgRXhlY0luaXRDb2VyY2VUb0RvbWFpbihFeHByRXZhbFN0ZXAgKnNjcmF0Y2gs IENvZXJjZVRvRG9tYWluICpjdGVzdCwKIAkJCQlpZiAoc2NyYXRjaC0+ZC5kb21haW5jaGVj ay5jaGVja3ZhbHVlID09IE5VTEwpCiAJCQkJewogCQkJCQlzY3JhdGNoLT5kLmRvbWFpbmNo ZWNrLmNoZWNrdmFsdWUgPQotCQkJCQkJKERhdHVtICopIHBhbGxvYyhzaXplb2YoRGF0dW0p KTsKKwkJCQkJCXBhbGxvY19vYmplY3QoRGF0dW0pOwogCQkJCQlzY3JhdGNoLT5kLmRvbWFp bmNoZWNrLmNoZWNrbnVsbCA9Ci0JCQkJCQkoYm9vbCAqKSBwYWxsb2Moc2l6ZW9mKGJvb2wp KTsKKwkJCQkJCXBhbGxvY19vYmplY3QoYm9vbCk7CiAJCQkJfQogCiAJCQkJLyoKQEAgLTM2 MDgsOCArMzYwMCw4IEBAIEV4ZWNJbml0Q29lcmNlVG9Eb21haW4oRXhwckV2YWxTdGVwICpz Y3JhdGNoLCBDb2VyY2VUb0RvbWFpbiAqY3Rlc3QsCiAJCQkJCQlFeHByRXZhbFN0ZXAgc2Ny YXRjaDIgPSB7MH07CiAKIAkJCQkJCS8qIFllcywgc28gbWFrZSBvdXRwdXQgd29ya3NwYWNl IGZvciBNQUtFX1JFQURPTkxZICovCi0JCQkJCQlkb21haW52YWwgPSAoRGF0dW0gKikgcGFs bG9jKHNpemVvZihEYXR1bSkpOwotCQkJCQkJZG9tYWlubnVsbCA9IChib29sICopIHBhbGxv YyhzaXplb2YoYm9vbCkpOworCQkJCQkJZG9tYWludmFsID0gcGFsbG9jX29iamVjdChEYXR1 bSk7CisJCQkJCQlkb21haW5udWxsID0gcGFsbG9jX29iamVjdChib29sKTsKIAogCQkJCQkJ LyogRW1pdCBNQUtFX1JFQURPTkxZICovCiAJCQkJCQlzY3JhdGNoMi5vcGNvZGUgPSBFRU9Q X01BS0VfUkVBRE9OTFk7CkBAIC00MTU5LDcgKzQxNTEsNyBAQCBFeGVjQnVpbGRIYXNoMzJG cm9tQXR0cnMoVHVwbGVEZXNjIGRlc2MsIGNvbnN0IFR1cGxlVGFibGVTbG90T3BzICpvcHMs CiAJICogb25lIGNvbHVtbiB0byBoYXNoIG9yIGFuIGluaXRpYWwgdmFsdWUgcGx1cyBvbmUg Y29sdW1uLgogCSAqLwogCWlmICgoaW50NjQpIG51bUNvbHMgKyAoaW5pdF92YWx1ZSAhPSAw KSA+IDEpCi0JCWlyZXN1bHQgPSBwYWxsb2Moc2l6ZW9mKE51bGxhYmxlRGF0dW0pKTsKKwkJ aXJlc3VsdCA9IHBhbGxvY19vYmplY3QoTnVsbGFibGVEYXR1bSk7CiAKIAkvKiBmaW5kIHRo ZSBoaWdoZXN0IGF0dG51bSBzbyB3ZSBkZWZvcm0gdGhlIHR1cGxlIHRvIHRoYXQgcG9pbnQg Ki8KIAlmb3IgKGludCBpID0gMDsgaSA8IG51bUNvbHM7IGkrKykKQEAgLTQzMjUsNyArNDMx Nyw3IEBAIEV4ZWNCdWlsZEhhc2gzMkV4cHIoVHVwbGVEZXNjIGRlc2MsIGNvbnN0IFR1cGxl VGFibGVTbG90T3BzICpvcHMsCiAJICogdGhhbiBvbmUgZXhwcmVzc2lvbiB0byBoYXNoIG9y IGFuIGluaXRpYWwgdmFsdWUgcGx1cyBvbmUgZXhwcmVzc2lvbi4KIAkgKi8KIAlpZiAoKGlu dDY0KSBudW1fZXhwcnMgKyAoaW5pdF92YWx1ZSAhPSAwKSA+IDEpCi0JCWlyZXN1bHQgPSBw YWxsb2Moc2l6ZW9mKE51bGxhYmxlRGF0dW0pKTsKKwkJaXJlc3VsdCA9IHBhbGxvY19vYmpl Y3QoTnVsbGFibGVEYXR1bSk7CiAKIAlpZiAoaW5pdF92YWx1ZSA9PSAwKQogCXsKQEAgLTQz NzEsNyArNDM2Myw3IEBAIEV4ZWNCdWlsZEhhc2gzMkV4cHIoVHVwbGVEZXNjIGRlc2MsIGNv bnN0IFR1cGxlVGFibGVTbG90T3BzICpvcHMsCiAJCWZ1bmNpZCA9IGhhc2hmdW5jX29pZHNb aV07CiAKIAkJLyogQWxsb2NhdGUgaGFzaCBmdW5jdGlvbiBsb29rdXAgZGF0YS4gKi8KLQkJ ZmluZm8gPSBwYWxsb2MwKHNpemVvZihGbWdySW5mbykpOworCQlmaW5mbyA9IHBhbGxvYzBf b2JqZWN0KEZtZ3JJbmZvKTsKIAkJZmNpbmZvID0gcGFsbG9jMChTaXplRm9yRnVuY3Rpb25D YWxsSW5mbygxKSk7CiAKIAkJZm1ncl9pbmZvKGZ1bmNpZCwgZmluZm8pOwpAQCAtNDU0MCw3 ICs0NTMyLDcgQEAgRXhlY0J1aWxkR3JvdXBpbmdFcXVhbChUdXBsZURlc2MgbGRlc2MsIFR1 cGxlRGVzYyByZGVzYywKIAkJSW52b2tlRnVuY3Rpb25FeGVjdXRlSG9vayhmb2lkKTsKIAog CQkvKiBTZXQgdXAgdGhlIHByaW1hcnkgZm1nciBsb29rdXAgaW5mb3JtYXRpb24gKi8KLQkJ ZmluZm8gPSBwYWxsb2MwKHNpemVvZihGbWdySW5mbykpOworCQlmaW5mbyA9IHBhbGxvYzBf b2JqZWN0KEZtZ3JJbmZvKTsKIAkJZmNpbmZvID0gcGFsbG9jMChTaXplRm9yRnVuY3Rpb25D YWxsSW5mbygyKSk7CiAJCWZtZ3JfaW5mbyhmb2lkLCBmaW5mbyk7CiAJCWZtZ3JfaW5mb19z ZXRfZXhwcihOVUxMLCBmaW5mbyk7CkBAIC00Njc2LDcgKzQ2NjgsNyBAQCBFeGVjQnVpbGRQ YXJhbVNldEVxdWFsKFR1cGxlRGVzYyBkZXNjLAogCQlJbnZva2VGdW5jdGlvbkV4ZWN1dGVI b29rKGZvaWQpOwogCiAJCS8qIFNldCB1cCB0aGUgcHJpbWFyeSBmbWdyIGxvb2t1cCBpbmZv cm1hdGlvbiAqLwotCQlmaW5mbyA9IHBhbGxvYzAoc2l6ZW9mKEZtZ3JJbmZvKSk7CisJCWZp bmZvID0gcGFsbG9jMF9vYmplY3QoRm1nckluZm8pOwogCQlmY2luZm8gPSBwYWxsb2MwKFNp emVGb3JGdW5jdGlvbkNhbGxJbmZvKDIpKTsKIAkJZm1ncl9pbmZvKGZvaWQsIGZpbmZvKTsK IAkJZm1ncl9pbmZvX3NldF9leHByKE5VTEwsIGZpbmZvKTsKQEAgLTQ3NDksNyArNDc0MSw3 IEBAIEV4ZWNJbml0SnNvbkV4cHIoSnNvbkV4cHIgKmpzZXhwciwgRXhwclN0YXRlICpzdGF0 ZSwKIAkJCQkgRGF0dW0gKnJlc3YsIGJvb2wgKnJlc251bGwsCiAJCQkJIEV4cHJFdmFsU3Rl cCAqc2NyYXRjaCkKIHsKLQlKc29uRXhwclN0YXRlICpqc2VzdGF0ZSA9IHBhbGxvYzAoc2l6 ZW9mKEpzb25FeHByU3RhdGUpKTsKKwlKc29uRXhwclN0YXRlICpqc2VzdGF0ZSA9IHBhbGxv YzBfb2JqZWN0KEpzb25FeHByU3RhdGUpOwogCUxpc3RDZWxsICAgKmFyZ2V4cHJsYzsKIAlM aXN0Q2VsbCAgICphcmduYW1lbGM7CiAJTGlzdAkgICAqanVtcHNfcmV0dXJuX251bGwgPSBO SUw7CkBAIC00ODAwLDcgKzQ3OTIsNyBAQCBFeGVjSW5pdEpzb25FeHByKEpzb25FeHByICpq c2V4cHIsIEV4cHJTdGF0ZSAqc3RhdGUsCiAJewogCQlFeHByCSAgICphcmdleHByID0gKEV4 cHIgKikgbGZpcnN0KGFyZ2V4cHJsYyk7CiAJCVN0cmluZwkgICAqYXJnbmFtZSA9IGxmaXJz dF9ub2RlKFN0cmluZywgYXJnbmFtZWxjKTsKLQkJSnNvblBhdGhWYXJpYWJsZSAqdmFyID0g cGFsbG9jKHNpemVvZigqdmFyKSk7CisJCUpzb25QYXRoVmFyaWFibGUgKnZhciA9IHBhbGxv Y19vYmplY3QoSnNvblBhdGhWYXJpYWJsZSk7CiAKIAkJdmFyLT5uYW1lID0gYXJnbmFtZS0+ c3ZhbDsKIAkJdmFyLT5uYW1lbGVuID0gc3RybGVuKHZhci0+bmFtZSk7CkBAIC00ODc0LDcg KzQ4NjYsNyBAQCBFeGVjSW5pdEpzb25FeHByKEpzb25FeHByICpqc2V4cHIsIEV4cHJTdGF0 ZSAqc3RhdGUsCiAJCUZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvOwogCiAJCWdldFR5cGVJbnB1 dEluZm8oanNleHByLT5yZXR1cm5pbmctPnR5cGlkLCAmdHlwaW5wdXQsICZ0eXBpb3BhcmFt KTsKLQkJZmluZm8gPSBwYWxsb2MwKHNpemVvZihGbWdySW5mbykpOworCQlmaW5mbyA9IHBh bGxvYzBfb2JqZWN0KEZtZ3JJbmZvKTsKIAkJZmNpbmZvID0gcGFsbG9jMChTaXplRm9yRnVu Y3Rpb25DYWxsSW5mbygzKSk7CiAJCWZtZ3JfaW5mbyh0eXBpbnB1dCwgZmluZm8pOwogCQlm bWdyX2luZm9fc2V0X2V4cHIoKE5vZGUgKikganNleHByLT5yZXR1cm5pbmcsIGZpbmZvKTsK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNHcm91cGluZy5jIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3IvZXhlY0dyb3VwaW5nLmMKaW5kZXggOGI2NGE2MjVjYTUuLjMz MzZkZGFmZjc5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjR3JvdXBp bmcuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjR3JvdXBpbmcuYwpAQCAtMjI0 LDcgKzIyNCw3IEBAIEJ1aWxkVHVwbGVIYXNoVGFibGUoUGxhblN0YXRlICpwYXJlbnQsCiAK IAlvbGRjb250ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKG1ldGFjeHQpOwogCi0JaGFz aHRhYmxlID0gKFR1cGxlSGFzaFRhYmxlKSBwYWxsb2Moc2l6ZW9mKFR1cGxlSGFzaFRhYmxl RGF0YSkpOworCWhhc2h0YWJsZSA9IChUdXBsZUhhc2hUYWJsZSkgcGFsbG9jX29iamVjdChU dXBsZUhhc2hUYWJsZURhdGEpOwogCiAJaGFzaHRhYmxlLT5udW1Db2xzID0gbnVtQ29sczsK IAloYXNodGFibGUtPmtleUNvbElkeCA9IGtleUNvbElkeDsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL2V4ZWNJbmRleGluZy5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv ZXhlY0luZGV4aW5nLmMKaW5kZXggZDFjYmFiNTg3OTkuLjk5NTgxYmFlZWIwIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjSW5kZXhpbmcuYworKysgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9leGVjSW5kZXhpbmcuYwpAQCAtMTg4LDggKzE4OCw4IEBAIEV4ZWNP cGVuSW5kaWNlcyhSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLCBib29sIHNwZWN1bGF0 aXZlKQogCS8qCiAJICogYWxsb2NhdGUgc3BhY2UgZm9yIHJlc3VsdCBhcnJheXMKIAkgKi8K LQlyZWxhdGlvbkRlc2NzID0gKFJlbGF0aW9uUHRyKSBwYWxsb2MobGVuICogc2l6ZW9mKFJl bGF0aW9uKSk7Ci0JaW5kZXhJbmZvQXJyYXkgPSAoSW5kZXhJbmZvICoqKSBwYWxsb2MobGVu ICogc2l6ZW9mKEluZGV4SW5mbyAqKSk7CisJcmVsYXRpb25EZXNjcyA9IHBhbGxvY19hcnJh eShSZWxhdGlvbiwgbGVuKTsKKwlpbmRleEluZm9BcnJheSA9IHBhbGxvY19hcnJheShJbmRl eEluZm8gKiwgbGVuKTsKIAogCXJlc3VsdFJlbEluZm8tPnJpX051bUluZGljZXMgPSBsZW47 CiAJcmVzdWx0UmVsSW5mby0+cmlfSW5kZXhSZWxhdGlvbkRlc2NzID0gcmVsYXRpb25EZXNj czsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMgYi9zcmMv YmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCmluZGV4IDI3YzllZWM2OTdiLi4zYWUzNDlj YzhmOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYworKysg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCkBAIC0xODksNyArMTg5LDcgQEAg c3RhbmRhcmRfRXhlY3V0b3JTdGFydChRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFn cykKIAogCQluUGFyYW1FeGVjID0gbGlzdF9sZW5ndGgocXVlcnlEZXNjLT5wbGFubmVkc3Rt dC0+cGFyYW1FeGVjVHlwZXMpOwogCQllc3RhdGUtPmVzX3BhcmFtX2V4ZWNfdmFscyA9IChQ YXJhbUV4ZWNEYXRhICopCi0JCQlwYWxsb2MwKG5QYXJhbUV4ZWMgKiBzaXplb2YoUGFyYW1F eGVjRGF0YSkpOworCQkJcGFsbG9jMF9hcnJheShQYXJhbUV4ZWNEYXRhLCBuUGFyYW1FeGVj KTsKIAl9CiAKIAkvKiBXZSBub3cgcmVxdWlyZSBhbGwgY2FsbGVycyB0byBwcm92aWRlIHNv dXJjZVRleHQgKi8KQEAgLTg3Niw3ICs4NzYsNyBAQCBJbml0UGxhbihRdWVyeURlc2MgKnF1 ZXJ5RGVzYywgaW50IGVmbGFncykKIAlpZiAocGxhbm5lZHN0bXQtPnJvd01hcmtzKQogCXsK IAkJZXN0YXRlLT5lc19yb3dtYXJrcyA9IChFeGVjUm93TWFyayAqKikKLQkJCXBhbGxvYzAo ZXN0YXRlLT5lc19yYW5nZV90YWJsZV9zaXplICogc2l6ZW9mKEV4ZWNSb3dNYXJrICopKTsK KwkJCXBhbGxvYzBfYXJyYXkoRXhlY1Jvd01hcmsgKiwgZXN0YXRlLT5lc19yYW5nZV90YWJs ZV9zaXplKTsKIAkJZm9yZWFjaChsLCBwbGFubmVkc3RtdC0+cm93TWFya3MpCiAJCXsKIAkJ CVBsYW5Sb3dNYXJrICpyYyA9IChQbGFuUm93TWFyayAqKSBsZmlyc3QobCk7CkBAIC05MjAs NyArOTIwLDcgQEAgSW5pdFBsYW4oUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3Mp CiAJCQlpZiAocmVsYXRpb24pCiAJCQkJQ2hlY2tWYWxpZFJvd01hcmtSZWwocmVsYXRpb24s IHJjLT5tYXJrVHlwZSk7CiAKLQkJCWVybSA9IChFeGVjUm93TWFyayAqKSBwYWxsb2Moc2l6 ZW9mKEV4ZWNSb3dNYXJrKSk7CisJCQllcm0gPSBwYWxsb2Nfb2JqZWN0KEV4ZWNSb3dNYXJr KTsKIAkJCWVybS0+cmVsYXRpb24gPSByZWxhdGlvbjsKIAkJCWVybS0+cmVsaWQgPSByZWxp ZDsKIAkJCWVybS0+cnRpID0gcmMtPnJ0aTsKQEAgLTEyNjIsOSArMTI2Miw5IEBAIEluaXRS ZXN1bHRSZWxJbmZvKFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8sCiAJCWludAkJCW4g PSByZXN1bHRSZWxJbmZvLT5yaV9UcmlnRGVzYy0+bnVtdHJpZ2dlcnM7CiAKIAkJcmVzdWx0 UmVsSW5mby0+cmlfVHJpZ0Z1bmN0aW9ucyA9IChGbWdySW5mbyAqKQotCQkJcGFsbG9jMChu ICogc2l6ZW9mKEZtZ3JJbmZvKSk7CisJCQlwYWxsb2MwX2FycmF5KEZtZ3JJbmZvLCBuKTsK IAkJcmVzdWx0UmVsSW5mby0+cmlfVHJpZ1doZW5FeHBycyA9IChFeHByU3RhdGUgKiopCi0J CQlwYWxsb2MwKG4gKiBzaXplb2YoRXhwclN0YXRlICopKTsKKwkJCXBhbGxvYzBfYXJyYXko RXhwclN0YXRlICosIG4pOwogCQlpZiAoaW5zdHJ1bWVudF9vcHRpb25zKQogCQkJcmVzdWx0 UmVsSW5mby0+cmlfVHJpZ0luc3RydW1lbnQgPSBJbnN0ckFsbG9jKG4sIGluc3RydW1lbnRf b3B0aW9ucywgZmFsc2UpOwogCX0KQEAgLTI1NzgsNyArMjU3OCw3IEBAIEV4ZWNGaW5kUm93 TWFyayhFU3RhdGUgKmVzdGF0ZSwgSW5kZXggcnRpLCBib29sIG1pc3Npbmdfb2spCiBFeGVj QXV4Um93TWFyayAqCiBFeGVjQnVpbGRBdXhSb3dNYXJrKEV4ZWNSb3dNYXJrICplcm0sIExp c3QgKnRhcmdldGxpc3QpCiB7Ci0JRXhlY0F1eFJvd01hcmsgKmFlcm0gPSAoRXhlY0F1eFJv d01hcmsgKikgcGFsbG9jMChzaXplb2YoRXhlY0F1eFJvd01hcmspKTsKKwlFeGVjQXV4Um93 TWFyayAqYWVybSA9IHBhbGxvYzBfb2JqZWN0KEV4ZWNBdXhSb3dNYXJrKTsKIAljaGFyCQly ZXNuYW1lWzMyXTsKIAogCWFlcm0tPnJvd21hcmsgPSBlcm07CkBAIC0yNzM1LDcgKzI3MzUs NyBAQCBFdmFsUGxhblF1YWxJbml0KEVQUVN0YXRlICplcHFzdGF0ZSwgRVN0YXRlICpwYXJl bnRlc3RhdGUsCiAJICovCiAJZXBxc3RhdGUtPnR1cGxlX3RhYmxlID0gTklMOwogCWVwcXN0 YXRlLT5yZWxzdWJzX3Nsb3QgPSAoVHVwbGVUYWJsZVNsb3QgKiopCi0JCXBhbGxvYzAocnRz aXplICogc2l6ZW9mKFR1cGxlVGFibGVTbG90ICopKTsKKwkJcGFsbG9jMF9hcnJheShUdXBs ZVRhYmxlU2xvdCAqLCBydHNpemUpOwogCiAJLyogLi4uIGFuZCByZW1lbWJlciBkYXRhIHRo YXQgRXZhbFBsYW5RdWFsQmVnaW4gd2lsbCBuZWVkICovCiAJZXBxc3RhdGUtPnBsYW4gPSBz dWJwbGFuOwpAQCAtMzA3NSw3ICszMDc1LDcgQEAgRXZhbFBsYW5RdWFsU3RhcnQoRVBRU3Rh dGUgKmVwcXN0YXRlLCBQbGFuICpwbGFuVHJlZSkKIAkJLyogbm93IG1ha2UgdGhlIGludGVy bmFsIHBhcmFtIHdvcmtzcGFjZSAuLi4gKi8KIAkJaSA9IGxpc3RfbGVuZ3RoKHBhcmVudGVz dGF0ZS0+ZXNfcGxhbm5lZHN0bXQtPnBhcmFtRXhlY1R5cGVzKTsKIAkJcmNlc3RhdGUtPmVz X3BhcmFtX2V4ZWNfdmFscyA9IChQYXJhbUV4ZWNEYXRhICopCi0JCQlwYWxsb2MwKGkgKiBz aXplb2YoUGFyYW1FeGVjRGF0YSkpOworCQkJcGFsbG9jMF9hcnJheShQYXJhbUV4ZWNEYXRh LCBpKTsKIAkJLyogLi4uIGFuZCBjb3B5IGRvd24gYWxsIHZhbHVlcywgd2hldGhlciByZWFs bHkgbmVlZGVkIG9yIG5vdCAqLwogCQl3aGlsZSAoLS1pID49IDApCiAJCXsKQEAgLTMxMzEs NyArMzEzMSw3IEBAIEV2YWxQbGFuUXVhbFN0YXJ0KEVQUVN0YXRlICplcHFzdGF0ZSwgUGxh biAqcGxhblRyZWUpCiAJICogcm93bWFyay4KIAkgKi8KIAllcHFzdGF0ZS0+cmVsc3Vic19y b3dtYXJrID0gKEV4ZWNBdXhSb3dNYXJrICoqKQotCQlwYWxsb2MwKHJ0c2l6ZSAqIHNpemVv ZihFeGVjQXV4Um93TWFyayAqKSk7CisJCXBhbGxvYzBfYXJyYXkoRXhlY0F1eFJvd01hcmsg KiwgcnRzaXplKTsKIAlmb3JlYWNoKGwsIGVwcXN0YXRlLT5hcm93TWFya3MpCiAJewogCQlF eGVjQXV4Um93TWFyayAqZWFybSA9IChFeGVjQXV4Um93TWFyayAqKSBsZmlyc3QobCk7CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jCmluZGV4IGYwOThhNTU1N2NmLi5kMDg0 YzMyNTk3OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVs LmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMKQEAgLTYzNiw3 ICs2MzYsNyBAQCBFeGVjSW5pdFBhcmFsbGVsUGxhbihQbGFuU3RhdGUgKnBsYW5zdGF0ZSwg RVN0YXRlICplc3RhdGUsCiAJRXhlY1NldFBhcmFtUGxhbk11bHRpKHNlbmRQYXJhbXMsIEdl dFBlclR1cGxlRXhwckNvbnRleHQoZXN0YXRlKSk7CiAKIAkvKiBBbGxvY2F0ZSBvYmplY3Qg Zm9yIHJldHVybiB2YWx1ZS4gKi8KLQlwZWkgPSBwYWxsb2MwKHNpemVvZihQYXJhbGxlbEV4 ZWN1dG9ySW5mbykpOworCXBlaSA9IHBhbGxvYzBfb2JqZWN0KFBhcmFsbGVsRXhlY3V0b3JJ bmZvKTsKIAlwZWktPmZpbmlzaGVkID0gZmFsc2U7CiAJcGVpLT5wbGFuc3RhdGUgPSBwbGFu c3RhdGU7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRp b24uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYwppbmRleCAwZGNj ZTE4MWYwOS4uMGY4ZTM1MjI4MGQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L2V4ZWNQYXJ0aXRpb24uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0 aW9uLmMKQEAgLTIyNiw3ICsyMjYsNyBAQCBFeGVjU2V0dXBQYXJ0aXRpb25UdXBsZVJvdXRp bmcoRVN0YXRlICplc3RhdGUsIFJlbGF0aW9uIHJlbCkKIAkgKiBUaGUgcmVhc29uIGZvciB0 aGlzIGlzIHRoYXQgYSBjb21tb24gY2FzZSBpcyBmb3IgSU5TRVJUIHRvIGluc2VydCBhCiAJ ICogc2luZ2xlIHR1cGxlIGludG8gYSBwYXJ0aXRpb25lZCB0YWJsZSBhbmQgdGhpcyBtdXN0 IGJlIGZhc3QuCiAJICovCi0JcHJvdXRlID0gKFBhcnRpdGlvblR1cGxlUm91dGluZyAqKSBw YWxsb2MwKHNpemVvZihQYXJ0aXRpb25UdXBsZVJvdXRpbmcpKTsKKwlwcm91dGUgPSBwYWxs b2MwX29iamVjdChQYXJ0aXRpb25UdXBsZVJvdXRpbmcpOwogCXByb3V0ZS0+cGFydGl0aW9u X3Jvb3QgPSByZWw7CiAJcHJvdXRlLT5tZW1jeHQgPSBDdXJyZW50TWVtb3J5Q29udGV4dDsK IAkvKiBSZXN0IG9mIG1lbWJlcnMgaW5pdGlhbGl6ZWQgYnkgemVyb2luZyAqLwpAQCAtMTA2 NiwxMCArMTA2Niw4IEBAIEV4ZWNJbml0Um91dGluZ0luZm8oTW9kaWZ5VGFibGVTdGF0ZSAq bXRzdGF0ZSwKIAkJaWYgKHByb3V0ZS0+bWF4X3BhcnRpdGlvbnMgPT0gMCkKIAkJewogCQkJ cHJvdXRlLT5tYXhfcGFydGl0aW9ucyA9IDg7Ci0JCQlwcm91dGUtPnBhcnRpdGlvbnMgPSAo UmVzdWx0UmVsSW5mbyAqKikKLQkJCQlwYWxsb2Moc2l6ZW9mKFJlc3VsdFJlbEluZm8gKikg KiBwcm91dGUtPm1heF9wYXJ0aXRpb25zKTsKLQkJCXByb3V0ZS0+aXNfYm9ycm93ZWRfcmVs ID0gKGJvb2wgKikKLQkJCQlwYWxsb2Moc2l6ZW9mKGJvb2wpICogcHJvdXRlLT5tYXhfcGFy dGl0aW9ucyk7CisJCQlwcm91dGUtPnBhcnRpdGlvbnMgPSBwYWxsb2NfYXJyYXkoUmVzdWx0 UmVsSW5mbyAqLCBwcm91dGUtPm1heF9wYXJ0aXRpb25zKTsKKwkJCXByb3V0ZS0+aXNfYm9y cm93ZWRfcmVsID0gcGFsbG9jX2FycmF5KGJvb2wsIHByb3V0ZS0+bWF4X3BhcnRpdGlvbnMp OwogCQl9CiAJCWVsc2UKIAkJewpAQCAtMTE4NCwxMCArMTE4Miw4IEBAIEV4ZWNJbml0UGFy dGl0aW9uRGlzcGF0Y2hJbmZvKEVTdGF0ZSAqZXN0YXRlLAogCQlpZiAocHJvdXRlLT5tYXhf ZGlzcGF0Y2ggPT0gMCkKIAkJewogCQkJcHJvdXRlLT5tYXhfZGlzcGF0Y2ggPSA0OwotCQkJ cHJvdXRlLT5wYXJ0aXRpb25fZGlzcGF0Y2hfaW5mbyA9IChQYXJ0aXRpb25EaXNwYXRjaCAq KQotCQkJCXBhbGxvYyhzaXplb2YoUGFydGl0aW9uRGlzcGF0Y2gpICogcHJvdXRlLT5tYXhf ZGlzcGF0Y2gpOwotCQkJcHJvdXRlLT5ub25sZWFmX3BhcnRpdGlvbnMgPSAoUmVzdWx0UmVs SW5mbyAqKikKLQkJCQlwYWxsb2Moc2l6ZW9mKFJlc3VsdFJlbEluZm8gKikgKiBwcm91dGUt Pm1heF9kaXNwYXRjaCk7CisJCQlwcm91dGUtPnBhcnRpdGlvbl9kaXNwYXRjaF9pbmZvID0g cGFsbG9jX2FycmF5KFBhcnRpdGlvbkRpc3BhdGNoLCBwcm91dGUtPm1heF9kaXNwYXRjaCk7 CisJCQlwcm91dGUtPm5vbmxlYWZfcGFydGl0aW9ucyA9IHBhbGxvY19hcnJheShSZXN1bHRS ZWxJbmZvICosIHByb3V0ZS0+bWF4X2Rpc3BhdGNoKTsKIAkJfQogCQllbHNlCiAJCXsKQEAg LTIwNzksNyArMjA3NSw3IEBAIENyZWF0ZVBhcnRpdGlvblBydW5lU3RhdGUoRVN0YXRlICpl c3RhdGUsIFBhcnRpdGlvblBydW5lSW5mbyAqcHJ1bmVpbmZvLAogCQkJICogYXJyYXlzIGFy ZSBpbiBwYXJ0aXRpb24gYm91bmRzIG9yZGVyLgogCQkJICovCiAJCQlwcHJ1bmUtPm5wYXJ0 cyA9IHBhcnRkZXNjLT5ucGFydHM7Ci0JCQlwcHJ1bmUtPnN1YnBsYW5fbWFwID0gcGFsbG9j KHNpemVvZihpbnQpICogcGFydGRlc2MtPm5wYXJ0cyk7CisJCQlwcHJ1bmUtPnN1YnBsYW5f bWFwID0gcGFsbG9jX2FycmF5KGludCwgcGFydGRlc2MtPm5wYXJ0cyk7CiAKIAkJCWlmIChw YXJ0ZGVzYy0+bnBhcnRzID09IHBpbmZvLT5ucGFydHMgJiYKIAkJCQltZW1jbXAocGFydGRl c2MtPm9pZHMsIHBpbmZvLT5yZWxpZF9tYXAsCkBAIC0yMTA2LDggKzIxMDIsOCBAQCBDcmVh dGVQYXJ0aXRpb25QcnVuZVN0YXRlKEVTdGF0ZSAqZXN0YXRlLCBQYXJ0aXRpb25QcnVuZUlu Zm8gKnBydW5laW5mbywKIAkJCQkgKiBhdHRhY2hlZC4gIENvcGUgd2l0aCB0aGF0IGJ5IGNy ZWF0aW5nIGEgbWFwIHRoYXQgc2tpcHMgYW55CiAJCQkJICogbWlzbWF0Y2hlcy4KIAkJCQkg Ki8KLQkJCQlwcHJ1bmUtPnN1YnBhcnRfbWFwID0gcGFsbG9jKHNpemVvZihpbnQpICogcGFy dGRlc2MtPm5wYXJ0cyk7Ci0JCQkJcHBydW5lLT5sZWFmcGFydF9ydGlfbWFwID0gcGFsbG9j KHNpemVvZihpbnQpICogcGFydGRlc2MtPm5wYXJ0cyk7CisJCQkJcHBydW5lLT5zdWJwYXJ0 X21hcCA9IHBhbGxvY19hcnJheShpbnQsIHBhcnRkZXNjLT5ucGFydHMpOworCQkJCXBwcnVu ZS0+bGVhZnBhcnRfcnRpX21hcCA9IHBhbGxvY19hcnJheShpbnQsIHBhcnRkZXNjLT5ucGFy dHMpOwogCiAJCQkJZm9yIChwcF9pZHggPSAwOyBwcF9pZHggPCBwYXJ0ZGVzYy0+bnBhcnRz OyBwcF9pZHgrKykKIAkJCQl7CkBAIC0yMjU4LDE2ICsyMjU0LDE0IEBAIEluaXRQYXJ0aXRp b25QcnVuZUNvbnRleHQoUGFydGl0aW9uUHJ1bmVDb250ZXh0ICpjb250ZXh0LAogCWNvbnRl eHQtPnBhcnRzdXBmdW5jID0gcGFydGtleS0+cGFydHN1cGZ1bmM7CiAKIAkvKiBXZSdsbCBs b29rIHVwIHR5cGUtc3BlY2lmaWMgc3VwcG9ydCBmdW5jdGlvbnMgYXMgbmVlZGVkICovCi0J Y29udGV4dC0+c3RlcGNtcGZ1bmNzID0gKEZtZ3JJbmZvICopCi0JCXBhbGxvYzAoc2l6ZW9m KEZtZ3JJbmZvKSAqIG5fc3RlcHMgKiBwYXJ0bmF0dHMpOworCWNvbnRleHQtPnN0ZXBjbXBm dW5jcyA9IHBhbGxvYzBfYXJyYXkoRm1nckluZm8sIG5fc3RlcHMgKiBwYXJ0bmF0dHMpOwog CiAJY29udGV4dC0+cHBjY29udGV4dCA9IEN1cnJlbnRNZW1vcnlDb250ZXh0OwogCWNvbnRl eHQtPnBsYW5zdGF0ZSA9IHBsYW5zdGF0ZTsKIAljb250ZXh0LT5leHByY29udGV4dCA9IGVj b250ZXh0OwogCiAJLyogSW5pdGlhbGl6ZSBleHByZXNzaW9uIHN0YXRlIGZvciBlYWNoIGV4 cHJlc3Npb24gd2UgbmVlZCAqLwotCWNvbnRleHQtPmV4cHJzdGF0ZXMgPSAoRXhwclN0YXRl ICoqKQotCQlwYWxsb2MwKHNpemVvZihFeHByU3RhdGUgKikgKiBuX3N0ZXBzICogcGFydG5h dHRzKTsKKwljb250ZXh0LT5leHByc3RhdGVzID0gcGFsbG9jMF9hcnJheShFeHByU3RhdGUg Kiwgbl9zdGVwcyAqIHBhcnRuYXR0cyk7CiAJZm9yZWFjaChsYywgcHJ1bmluZ19zdGVwcykK IAl7CiAJCVBhcnRpdGlvblBydW5lU3RlcE9wICpzdGVwID0gKFBhcnRpdGlvblBydW5lU3Rl cE9wICopIGxmaXJzdChsYyk7CkBAIC0yMzY4LDcgKzIzNjIsNyBAQCBJbml0RXhlY1BhcnRp dGlvblBydW5lQ29udGV4dHMoUGFydGl0aW9uUHJ1bmVTdGF0ZSAqcHJ1bmVzdGF0ZSwKIAkJ ICogaW5kZXhlcyB0byBuZXcgb25lcy4gIEZvciBjb252ZW5pZW5jZSBvZiBpbml0aWFsaXph dGlvbiwgd2UgdXNlCiAJCSAqIDEtYmFzZWQgaW5kZXhlcyBpbiB0aGlzIGFycmF5IGFuZCBs ZWF2ZSBwcnVuZWQgaXRlbXMgYXMgMC4KIAkJICovCi0JCW5ld19zdWJwbGFuX2luZGV4ZXMg PSAoaW50ICopIHBhbGxvYzAoc2l6ZW9mKGludCkgKiBuX3RvdGFsX3N1YnBsYW5zKTsKKwkJ bmV3X3N1YnBsYW5faW5kZXhlcyA9IHBhbGxvYzBfYXJyYXkoaW50LCBuX3RvdGFsX3N1YnBs YW5zKTsKIAkJbmV3aWR4ID0gMTsKIAkJaSA9IC0xOwogCQl3aGlsZSAoKGkgPSBibXNfbmV4 dF9tZW1iZXIoaW5pdGlhbGx5X3ZhbGlkX3N1YnBsYW5zLCBpKSkgPj0gMCkKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNSZXBsaWNhdGlvbi5jIGIvc3JjL2JhY2tl bmQvZXhlY3V0b3IvZXhlY1JlcGxpY2F0aW9uLmMKaW5kZXggZGVmMzI3NzRjOTAuLjg2MGY3 OWY5Y2MxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUmVwbGljYXRp b24uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUmVwbGljYXRpb24uYwpAQCAt MjIxLDcgKzIyMSw3IEBAIHJldHJ5OgogCQlpZiAoIWlzSWR4U2FmZVRvU2tpcER1cGxpY2F0 ZXMpCiAJCXsKIAkJCWlmIChlcSA9PSBOVUxMKQotCQkJCWVxID0gcGFsbG9jMChzaXplb2Yo KmVxKSAqIG91dHNsb3QtPnR0c190dXBsZURlc2NyaXB0b3ItPm5hdHRzKTsKKwkJCQllcSA9 IHBhbGxvYzBfYXJyYXkoVHlwZUNhY2hlRW50cnkgKiwgb3V0c2xvdC0+dHRzX3R1cGxlRGVz Y3JpcHRvci0+bmF0dHMpOwogCiAJCQlpZiAoIXR1cGxlc19lcXVhbChvdXRzbG90LCBzZWFy Y2hzbG90LCBlcSwgTlVMTCkpCiAJCQkJY29udGludWU7CkBAIC0zNzgsNyArMzc4LDcgQEAg UmVsYXRpb25GaW5kUmVwbFR1cGxlU2VxKFJlbGF0aW9uIHJlbCwgTG9ja1R1cGxlTW9kZSBs b2NrbW9kZSwKIAogCUFzc2VydChlcXVhbFR1cGxlRGVzY3MoZGVzYywgb3V0c2xvdC0+dHRz X3R1cGxlRGVzY3JpcHRvcikpOwogCi0JZXEgPSBwYWxsb2MwKHNpemVvZigqZXEpICogb3V0 c2xvdC0+dHRzX3R1cGxlRGVzY3JpcHRvci0+bmF0dHMpOworCWVxID0gcGFsbG9jMF9hcnJh eShUeXBlQ2FjaGVFbnRyeSAqLCBvdXRzbG90LT50dHNfdHVwbGVEZXNjcmlwdG9yLT5uYXR0 cyk7CiAKIAkvKiBTdGFydCBhIGhlYXAgc2Nhbi4gKi8KIAlJbml0RGlydHlTbmFwc2hvdChz bmFwKTsKQEAgLTU5Myw3ICs1OTMsNyBAQCBSZWxhdGlvbkZpbmREZWxldGVkVHVwbGVJbmZv U2VxKFJlbGF0aW9uIHJlbCwgVHVwbGVUYWJsZVNsb3QgKnNlYXJjaHNsb3QsCiAJCWluZGV4 Yml0bWFwID0gUmVsYXRpb25HZXRJbmRleEF0dHJCaXRtYXAocmVsLAogCQkJCQkJCQkJCQkJ IElOREVYX0FUVFJfQklUTUFQX1BSSU1BUllfS0VZKTsKIAotCWVxID0gcGFsbG9jMChzaXpl b2YoKmVxKSAqIHNlYXJjaHNsb3QtPnR0c190dXBsZURlc2NyaXB0b3ItPm5hdHRzKTsKKwll cSA9IHBhbGxvYzBfYXJyYXkoVHlwZUNhY2hlRW50cnkgKiwgc2VhcmNoc2xvdC0+dHRzX3R1 cGxlRGVzY3JpcHRvci0+bmF0dHMpOwogCiAJLyoKIAkgKiBTdGFydCBhIGhlYXAgc2NhbiB1 c2luZyBTbmFwc2hvdEFueSB0byBpZGVudGlmeSBkZWFkIHR1cGxlcyB0aGF0IGFyZQpAQCAt Njc5LDcgKzY3OSw3IEBAIFJlbGF0aW9uRmluZERlbGV0ZWRUdXBsZUluZm9CeUluZGV4KFJl bGF0aW9uIHJlbCwgT2lkIGlkeG9pZCwKIAkJaWYgKCFpc0lkeFNhZmVUb1NraXBEdXBsaWNh dGVzKQogCQl7CiAJCQlpZiAoZXEgPT0gTlVMTCkKLQkJCQllcSA9IHBhbGxvYzAoc2l6ZW9m KCplcSkgKiBzY2Fuc2xvdC0+dHRzX3R1cGxlRGVzY3JpcHRvci0+bmF0dHMpOworCQkJCWVx ID0gcGFsbG9jMF9hcnJheShUeXBlQ2FjaGVFbnRyeSAqLCBzY2Fuc2xvdC0+dHRzX3R1cGxl RGVzY3JpcHRvci0+bmF0dHMpOwogCiAJCQlpZiAoIXR1cGxlc19lcXVhbChzY2Fuc2xvdCwg c2VhcmNoc2xvdCwgZXEsIE5VTEwpKQogCQkJCWNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvZXhlY3V0b3IvZXhlY1R1cGxlcy5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv ZXhlY1R1cGxlcy5jCmluZGV4IDhlMDJkNjg4MjRmLi5iMGRjMmNmYTY2ZiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1R1cGxlcy5jCisrKyBiL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNUdXBsZXMuYwpAQCAtMjI4Myw3ICsyMjgzLDcgQEAgVHVwbGVEZXNj R2V0QXR0SW5NZXRhZGF0YShUdXBsZURlc2MgdHVwZGVzYykKIAlpbnQzMgkgICAqYXR0dHlw bW9kczsKIAlBdHRJbk1ldGFkYXRhICphdHRpbm1ldGE7CiAKLQlhdHRpbm1ldGEgPSAoQXR0 SW5NZXRhZGF0YSAqKSBwYWxsb2Moc2l6ZW9mKEF0dEluTWV0YWRhdGEpKTsKKwlhdHRpbm1l dGEgPSBwYWxsb2Nfb2JqZWN0KEF0dEluTWV0YWRhdGEpOwogCiAJLyogIkJsZXNzIiB0aGUg dHVwbGVkZXNjIHNvIHRoYXQgd2UgY2FuIG1ha2Ugcm93dHlwZSBkYXR1bXMgd2l0aCBpdCAq LwogCWF0dGlubWV0YS0+dHVwZGVzYyA9IEJsZXNzVHVwbGVEZXNjKHR1cGRlc2MpOwpAQCAt MjQ0Nyw3ICsyNDQ3LDcgQEAgYmVnaW5fdHVwX291dHB1dF90dXBkZXNjKERlc3RSZWNlaXZl ciAqZGVzdCwKIHsKIAlUdXBPdXRwdXRTdGF0ZSAqdHN0YXRlOwogCi0JdHN0YXRlID0gKFR1 cE91dHB1dFN0YXRlICopIHBhbGxvYyhzaXplb2YoVHVwT3V0cHV0U3RhdGUpKTsKKwl0c3Rh dGUgPSBwYWxsb2Nfb2JqZWN0KFR1cE91dHB1dFN0YXRlKTsKIAogCXRzdGF0ZS0+c2xvdCA9 IE1ha2VTaW5nbGVUdXBsZVRhYmxlU2xvdCh0dXBkZXNjLCB0dHNfb3BzKTsKIAl0c3RhdGUt PmRlc3QgPSBkZXN0OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZnVuY3Rp b25zLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9mdW5jdGlvbnMuYwppbmRleCA2MzBkNzA4 ZDJhMy4uNjRlMmFkYTc5NjAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2Z1 bmN0aW9ucy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2Z1bmN0aW9ucy5jCkBAIC0y NTYsNyArMjU2LDcgQEAgcHJlcGFyZV9zcWxfZm5fcGFyc2VfaW5mbyhIZWFwVHVwbGUgcHJv Y2VkdXJlVHVwbGUsCiAJRm9ybV9wZ19wcm9jIHByb2NlZHVyZVN0cnVjdCA9IChGb3JtX3Bn X3Byb2MpIEdFVFNUUlVDVChwcm9jZWR1cmVUdXBsZSk7CiAJaW50CQkJbmFyZ3M7CiAKLQlw aW5mbyA9IChTUUxGdW5jdGlvblBhcnNlSW5mb1B0cikgcGFsbG9jMChzaXplb2YoU1FMRnVu Y3Rpb25QYXJzZUluZm8pKTsKKwlwaW5mbyA9IChTUUxGdW5jdGlvblBhcnNlSW5mb1B0cikg cGFsbG9jMF9vYmplY3QoU1FMRnVuY3Rpb25QYXJzZUluZm8pOyAKIAogCS8qIEZ1bmN0aW9u J3MgbmFtZSAob25seSkgY2FuIGJlIHVzZWQgdG8gcXVhbGlmeSBhcmd1bWVudCBuYW1lcyAq LwogCXBpbmZvLT5mbmFtZSA9IHBzdHJkdXAoTmFtZVN0cihwcm9jZWR1cmVTdHJ1Y3QtPnBy b25hbWUpKTsKQEAgLTI2MTYsNyArMjYxNiw3IEBAIGdldF9zcWxfZm5fcmVzdWx0X3RsaXN0 KExpc3QgKnF1ZXJ5VHJlZUxpc3QpCiBEZXN0UmVjZWl2ZXIgKgogQ3JlYXRlU1FMRnVuY3Rp b25EZXN0UmVjZWl2ZXIodm9pZCkKIHsKLQlEUl9zcWxmdW5jdGlvbiAqc2VsZiA9IChEUl9z cWxmdW5jdGlvbiAqKSBwYWxsb2MwKHNpemVvZihEUl9zcWxmdW5jdGlvbikpOworCURSX3Nx bGZ1bmN0aW9uICpzZWxmID0gcGFsbG9jMF9vYmplY3QoRFJfc3FsZnVuY3Rpb24pOwogCiAJ c2VsZi0+cHViLnJlY2VpdmVTbG90ID0gc3FsZnVuY3Rpb25fcmVjZWl2ZTsKIAlzZWxmLT5w dWIuclN0YXJ0dXAgPSBzcWxmdW5jdGlvbl9zdGFydHVwOwpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZUFnZy5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFn Zy5jCmluZGV4IDBiMDJmZDMyMTA3Li5hMTg1NTZmNjJlYyAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZUFnZy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVBZ2cuYwpAQCAtMTkyMCw3ICsxOTIwLDcgQEAgaGFzaF9hZ2dfZW50ZXJfc3BpbGxfbW9k ZShBZ2dTdGF0ZSAqYWdnc3RhdGUpCiAKIAkJYWdnc3RhdGUtPmhhc2hfdGFwZXNldCA9IExv Z2ljYWxUYXBlU2V0Q3JlYXRlKHRydWUsIE5VTEwsIC0xKTsKIAotCQlhZ2dzdGF0ZS0+aGFz aF9zcGlsbHMgPSBwYWxsb2Moc2l6ZW9mKEhhc2hBZ2dTcGlsbCkgKiBhZ2dzdGF0ZS0+bnVt X2hhc2hlcyk7CisJCWFnZ3N0YXRlLT5oYXNoX3NwaWxscyA9IHBhbGxvY19hcnJheShIYXNo QWdnU3BpbGwsIGFnZ3N0YXRlLT5udW1faGFzaGVzKTsKIAogCQlmb3IgKGludCBzZXRubyA9 IDA7IHNldG5vIDwgYWdnc3RhdGUtPm51bV9oYXNoZXM7IHNldG5vKyspCiAJCXsKQEAgLTI5 OTksOSArMjk5OSw5IEBAIGhhc2hhZ2dfc3BpbGxfaW5pdChIYXNoQWdnU3BpbGwgKnNwaWxs LCBMb2dpY2FsVGFwZVNldCAqdGFwZXNldCwgaW50IHVzZWRfYml0cywKIAl9CiAjZW5kaWYK IAotCXNwaWxsLT5wYXJ0aXRpb25zID0gcGFsbG9jMChzaXplb2YoTG9naWNhbFRhcGUgKikg KiBucGFydGl0aW9ucyk7Ci0Jc3BpbGwtPm50dXBsZXMgPSBwYWxsb2MwKHNpemVvZihpbnQ2 NCkgKiBucGFydGl0aW9ucyk7Ci0Jc3BpbGwtPmhsbF9jYXJkID0gcGFsbG9jMChzaXplb2Yo aHlwZXJMb2dMb2dTdGF0ZSkgKiBucGFydGl0aW9ucyk7CisJc3BpbGwtPnBhcnRpdGlvbnMg PSBwYWxsb2MwX2FycmF5KExvZ2ljYWxUYXBlICosIG5wYXJ0aXRpb25zKTsKKwlzcGlsbC0+ bnR1cGxlcyA9IHBhbGxvYzBfYXJyYXkoaW50NjQsIG5wYXJ0aXRpb25zKTsKKwlzcGlsbC0+ aGxsX2NhcmQgPSBwYWxsb2MwX2FycmF5KGh5cGVyTG9nTG9nU3RhdGUsIG5wYXJ0aXRpb25z KTsKIAogCWZvciAoaW50IGkgPSAwOyBpIDwgbnBhcnRpdGlvbnM7IGkrKykKIAkJc3BpbGwt PnBhcnRpdGlvbnNbaV0gPSBMb2dpY2FsVGFwZUNyZWF0ZSh0YXBlc2V0KTsKQEAgLTMwOTcs NyArMzA5Nyw3IEBAIHN0YXRpYyBIYXNoQWdnQmF0Y2ggKgogaGFzaGFnZ19iYXRjaF9uZXco TG9naWNhbFRhcGUgKmlucHV0X3RhcGUsIGludCBzZXRubywKIAkJCQkgIGludDY0IGlucHV0 X3R1cGxlcywgZG91YmxlIGlucHV0X2NhcmQsIGludCB1c2VkX2JpdHMpCiB7Ci0JSGFzaEFn Z0JhdGNoICpiYXRjaCA9IHBhbGxvYzAoc2l6ZW9mKEhhc2hBZ2dCYXRjaCkpOworCUhhc2hB Z2dCYXRjaCAqYmF0Y2ggPSBwYWxsb2MwX29iamVjdChIYXNoQWdnQmF0Y2gpOwogCiAJYmF0 Y2gtPnNldG5vID0gc2V0bm87CiAJYmF0Y2gtPnVzZWRfYml0cyA9IHVzZWRfYml0czsKQEAg LTMzNjgsOCArMzM2OCw3IEBAIEV4ZWNJbml0QWdnKEFnZyAqbm9kZSwgRVN0YXRlICplc3Rh dGUsIGludCBlZmxhZ3MpCiAJYWdnc3RhdGUtPm1heHNldHMgPSBudW1Hcm91cGluZ1NldHM7 CiAJYWdnc3RhdGUtPm51bXBoYXNlcyA9IG51bVBoYXNlczsKIAotCWFnZ3N0YXRlLT5hZ2dj b250ZXh0cyA9IChFeHByQ29udGV4dCAqKikKLQkJcGFsbG9jMChzaXplb2YoRXhwckNvbnRl eHQgKikgKiBudW1Hcm91cGluZ1NldHMpOworCWFnZ3N0YXRlLT5hZ2djb250ZXh0cyA9IHBh bGxvYzBfYXJyYXkoRXhwckNvbnRleHQgKiwgbnVtR3JvdXBpbmdTZXRzKTsKIAogCS8qCiAJ ICogQ3JlYXRlIGV4cHJlc3Npb24gY29udGV4dHMuICBXZSBuZWVkIHRocmVlIG9yIG1vcmUs IG9uZSBmb3IKQEAgLTM0OTIsMTUgKzM0OTEsMTUgQEAgRXhlY0luaXRBZ2coQWdnICpub2Rl LCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkgKiBGb3IgZWFjaCBwaGFzZSwgcHJl cGFyZSBncm91cGluZyBzZXQgZGF0YSBhbmQgZm1nciBsb29rdXAgZGF0YSBmb3IKIAkgKiBj b21wYXJlIGZ1bmN0aW9ucy4gIEFjY3VtdWxhdGUgYWxsX2dyb3VwZWRfY29scyBpbiBwYXNz aW5nLgogCSAqLwotCWFnZ3N0YXRlLT5waGFzZXMgPSBwYWxsb2MwKG51bVBoYXNlcyAqIHNp emVvZihBZ2dTdGF0ZVBlclBoYXNlRGF0YSkpOworCWFnZ3N0YXRlLT5waGFzZXMgPSBwYWxs b2MwX2FycmF5KEFnZ1N0YXRlUGVyUGhhc2VEYXRhLCBudW1QaGFzZXMpOwogCiAJYWdnc3Rh dGUtPm51bV9oYXNoZXMgPSBudW1IYXNoZXM7CiAJaWYgKG51bUhhc2hlcykKIAl7Ci0JCWFn Z3N0YXRlLT5wZXJoYXNoID0gcGFsbG9jMChzaXplb2YoQWdnU3RhdGVQZXJIYXNoRGF0YSkg KiBudW1IYXNoZXMpOworCQlhZ2dzdGF0ZS0+cGVyaGFzaCA9IHBhbGxvYzBfYXJyYXkoQWdn U3RhdGVQZXJIYXNoRGF0YSwgbnVtSGFzaGVzKTsKIAkJYWdnc3RhdGUtPnBoYXNlc1swXS5u dW1zZXRzID0gMDsKLQkJYWdnc3RhdGUtPnBoYXNlc1swXS5nc2V0X2xlbmd0aHMgPSBwYWxs b2MobnVtSGFzaGVzICogc2l6ZW9mKGludCkpOwotCQlhZ2dzdGF0ZS0+cGhhc2VzWzBdLmdy b3VwZWRfY29scyA9IHBhbGxvYyhudW1IYXNoZXMgKiBzaXplb2YoQml0bWFwc2V0ICopKTsK KwkJYWdnc3RhdGUtPnBoYXNlc1swXS5nc2V0X2xlbmd0aHMgPSBwYWxsb2NfYXJyYXkoaW50 LCBudW1IYXNoZXMpOworCQlhZ2dzdGF0ZS0+cGhhc2VzWzBdLmdyb3VwZWRfY29scyA9IHBh bGxvY19hcnJheShCaXRtYXBzZXQgKiwgbnVtSGFzaGVzKTsKIAl9CiAKIAlwaGFzZSA9IDA7 CkBAIC0zNTk4LDggKzM1OTcsNyBAQCBFeGVjSW5pdEFnZyhBZ2cgKm5vZGUsIEVTdGF0ZSAq ZXN0YXRlLCBpbnQgZWZsYWdzKQogCQkJCSAqIEJ1aWxkIGEgc2VwYXJhdGUgZnVuY3Rpb24g Zm9yIGVhY2ggc3Vic2V0IG9mIGNvbHVtbnMgdGhhdAogCQkJCSAqIG5lZWQgdG8gYmUgY29t cGFyZWQuCiAJCQkJICovCi0JCQkJcGhhc2VkYXRhLT5lcWZ1bmN0aW9ucyA9Ci0JCQkJCShF eHByU3RhdGUgKiopIHBhbGxvYzAoYWdnbm9kZS0+bnVtQ29scyAqIHNpemVvZihFeHByU3Rh dGUgKikpOworCQkJCXBoYXNlZGF0YS0+ZXFmdW5jdGlvbnMgPSBwYWxsb2MwX2FycmF5KEV4 cHJTdGF0ZSAqLCBhZ2dub2RlLT5udW1Db2xzKTsKIAogCQkJCS8qIGZvciBlYWNoIGdyb3Vw aW5nIHNldCAqLwogCQkJCWZvciAoaW50IGsgPSAwOyBrIDwgcGhhc2VkYXRhLT5udW1zZXRz OyBrKyspCkBAIC0zNjU1LDI3ICszNjUzLDI0IEBAIEV4ZWNJbml0QWdnKEFnZyAqbm9kZSwg RVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICogYWxsb2NhdGUgbXkgcHJpdmF0ZSBw ZXItYWdnIHdvcmtpbmcgc3RvcmFnZQogCSAqLwogCWVjb250ZXh0ID0gYWdnc3RhdGUtPnNz LnBzLnBzX0V4cHJDb250ZXh0OwotCWVjb250ZXh0LT5lY3h0X2FnZ3ZhbHVlcyA9IChEYXR1 bSAqKSBwYWxsb2MwKHNpemVvZihEYXR1bSkgKiBudW1hZ2dzKTsKLQllY29udGV4dC0+ZWN4 dF9hZ2dudWxscyA9IChib29sICopIHBhbGxvYzAoc2l6ZW9mKGJvb2wpICogbnVtYWdncyk7 CisJZWNvbnRleHQtPmVjeHRfYWdndmFsdWVzID0gcGFsbG9jMF9hcnJheShEYXR1bSwgbnVt YWdncyk7CisJZWNvbnRleHQtPmVjeHRfYWdnbnVsbHMgPSBwYWxsb2MwX2FycmF5KGJvb2ws IG51bWFnZ3MpOwogCi0JcGVyYWdncyA9IChBZ2dTdGF0ZVBlckFnZykgcGFsbG9jMChzaXpl b2YoQWdnU3RhdGVQZXJBZ2dEYXRhKSAqIG51bWFnZ3MpOwotCXBlcnRyYW5zc3RhdGVzID0g KEFnZ1N0YXRlUGVyVHJhbnMpIHBhbGxvYzAoc2l6ZW9mKEFnZ1N0YXRlUGVyVHJhbnNEYXRh KSAqIG51bXRyYW5zKTsKKwlwZXJhZ2dzID0gcGFsbG9jMF9hcnJheShBZ2dTdGF0ZVBlckFn Z0RhdGEsIG51bWFnZ3MpOworCXBlcnRyYW5zc3RhdGVzID0gcGFsbG9jMF9hcnJheShBZ2dT dGF0ZVBlclRyYW5zRGF0YSwgbnVtdHJhbnMpOwogCiAJYWdnc3RhdGUtPnBlcmFnZyA9IHBl cmFnZ3M7CiAJYWdnc3RhdGUtPnBlcnRyYW5zID0gcGVydHJhbnNzdGF0ZXM7CiAKIAotCWFn Z3N0YXRlLT5hbGxfcGVyZ3JvdXBzID0KLQkJKEFnZ1N0YXRlUGVyR3JvdXAgKikgcGFsbG9j MChzaXplb2YoQWdnU3RhdGVQZXJHcm91cCkKLQkJCQkJCQkJCSAqIChudW1Hcm91cGluZ1Nl dHMgKyBudW1IYXNoZXMpKTsKKwlhZ2dzdGF0ZS0+YWxsX3Blcmdyb3VwcyA9IHBhbGxvYzBf YXJyYXkoQWdnU3RhdGVQZXJHcm91cCwgbnVtR3JvdXBpbmdTZXRzICsgbnVtSGFzaGVzKTsK IAlwZXJncm91cHMgPSBhZ2dzdGF0ZS0+YWxsX3Blcmdyb3VwczsKIAogCWlmIChub2RlLT5h Z2dzdHJhdGVneSAhPSBBR0dfSEFTSEVEKQogCXsKIAkJZm9yIChpID0gMDsgaSA8IG51bUdy b3VwaW5nU2V0czsgaSsrKQogCQl7Ci0JCQlwZXJncm91cHNbaV0gPSAoQWdnU3RhdGVQZXJH cm91cCkgcGFsbG9jMChzaXplb2YoQWdnU3RhdGVQZXJHcm91cERhdGEpCi0JCQkJCQkJCQkJ CQkJICAqIG51bWFnZ3MpOworCQkJcGVyZ3JvdXBzW2ldID0gcGFsbG9jMF9hcnJheShBZ2dT dGF0ZVBlckdyb3VwRGF0YSwgbnVtYWdncyk7CiAJCX0KIAogCQlhZ2dzdGF0ZS0+cGVyZ3Jv dXBzID0gcGVyZ3JvdXBzOwpAQCAtNDM3NSw4ICs0MzcwLDcgQEAgYnVpbGRfcGVydHJhbnNf Zm9yX2FnZ3JlZihBZ2dTdGF0ZVBlclRyYW5zIHBlcnRyYW5zLAogCQlwZnJlZShvcHMpOwog CX0KIAotCXBlcnRyYW5zLT5zb3J0c3RhdGVzID0gKFR1cGxlc29ydHN0YXRlICoqKQotCQlw YWxsb2MwKHNpemVvZihUdXBsZXNvcnRzdGF0ZSAqKSAqIG51bUdyb3VwaW5nU2V0cyk7CisJ cGVydHJhbnMtPnNvcnRzdGF0ZXMgPSBwYWxsb2MwX2FycmF5KFR1cGxlc29ydHN0YXRlICos IG51bUdyb3VwaW5nU2V0cyk7CiB9CiAKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZUFwcGVuZC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFwcGVuZC5j CmluZGV4IGExMWIzNmM3MTc2Li43N2M0ZGQ5ZTRiMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZUFwcGVuZC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVBcHBlbmQuYwpAQCAtMjYzLDcgKzI2Myw3IEBAIEV4ZWNJbml0QXBwZW5kKEFwcGVuZCAq bm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJCXsKIAkJCUFzeW5jUmVxdWVz dCAqYXJlcTsKIAotCQkJYXJlcSA9IHBhbGxvYyhzaXplb2YoQXN5bmNSZXF1ZXN0KSk7CisJ CQlhcmVxID0gcGFsbG9jX29iamVjdChBc3luY1JlcXVlc3QpOwogCQkJYXJlcS0+cmVxdWVz dG9yID0gKFBsYW5TdGF0ZSAqKSBhcHBlbmRzdGF0ZTsKIAkJCWFyZXEtPnJlcXVlc3RlZSA9 IGFwcGVuZHBsYW5zdGF0ZXNbaV07CiAJCQlhcmVxLT5yZXF1ZXN0X2luZGV4ID0gaTsKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVGdW5jdGlvbnNjYW4uYyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVGdW5jdGlvbnNjYW4uYwppbmRleCA2NDQzNjM1ODJk OS4uYWY3NWRkOGZjNWUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVG dW5jdGlvbnNjYW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlRnVuY3Rpb25z Y2FuLmMKQEAgLTMzMyw3ICszMzMsNyBAQCBFeGVjSW5pdEZ1bmN0aW9uU2NhbihGdW5jdGlv blNjYW4gKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCSAqLwogCUV4ZWNB c3NpZ25FeHByQ29udGV4dChlc3RhdGUsICZzY2Fuc3RhdGUtPnNzLnBzKTsKIAotCXNjYW5z dGF0ZS0+ZnVuY3N0YXRlcyA9IHBhbGxvYyhuZnVuY3MgKiBzaXplb2YoRnVuY3Rpb25TY2Fu UGVyRnVuY1N0YXRlKSk7CisJc2NhbnN0YXRlLT5mdW5jc3RhdGVzID0gcGFsbG9jX2FycmF5 KEZ1bmN0aW9uU2NhblBlckZ1bmNTdGF0ZSwgbmZ1bmNzKTsKIAogCW5hdHRzID0gMDsKIAlp ID0gMDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHYXRoZXJNZXJn ZS5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUdhdGhlck1lcmdlLmMKaW5kZXggOTNm M2RiYzZjZjQuLmMwNDUyMmZlYTRkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlR2F0aGVyTWVyZ2UuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlR2F0 aGVyTWVyZ2UuYwpAQCAtMTQ1LDggKzE0NSw3IEBAIEV4ZWNJbml0R2F0aGVyTWVyZ2UoR2F0 aGVyTWVyZ2UgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCQlpbnQJCQlp OwogCiAJCWdtX3N0YXRlLT5nbV9ua2V5cyA9IG5vZGUtPm51bUNvbHM7Ci0JCWdtX3N0YXRl LT5nbV9zb3J0a2V5cyA9Ci0JCQlwYWxsb2MwKHNpemVvZihTb3J0U3VwcG9ydERhdGEpICog bm9kZS0+bnVtQ29scyk7CisJCWdtX3N0YXRlLT5nbV9zb3J0a2V5cyA9IHBhbGxvYzBfYXJy YXkoU29ydFN1cHBvcnREYXRhLCBub2RlLT5udW1Db2xzKTsKIAogCQlmb3IgKGkgPSAwOyBp IDwgbm9kZS0+bnVtQ29sczsgaSsrKQogCQl7CkBAIC00MTgsOCArNDE3LDcgQEAgZ2F0aGVy X21lcmdlX3NldHVwKEdhdGhlck1lcmdlU3RhdGUgKmdtX3N0YXRlKQogCWZvciAoaSA9IDA7 IGkgPCBucmVhZGVyczsgaSsrKQogCXsKIAkJLyogQWxsb2NhdGUgdGhlIHR1cGxlIGFycmF5 IHdpdGggbGVuZ3RoIE1BWF9UVVBMRV9TVE9SRSAqLwotCQlnbV9zdGF0ZS0+Z21fdHVwbGVf YnVmZmVyc1tpXS50dXBsZSA9Ci0JCQkoTWluaW1hbFR1cGxlICopIHBhbGxvYzAoc2l6ZW9m KE1pbmltYWxUdXBsZSkgKiBNQVhfVFVQTEVfU1RPUkUpOworCQlnbV9zdGF0ZS0+Z21fdHVw bGVfYnVmZmVyc1tpXS50dXBsZSA9IHBhbGxvYzBfYXJyYXkoTWluaW1hbFR1cGxlLCBNQVhf VFVQTEVfU1RPUkUpOwogCiAJCS8qIEluaXRpYWxpemUgdHVwbGUgc2xvdCBmb3Igd29ya2Vy ICovCiAJCWdtX3N0YXRlLT5nbV9zbG90c1tpICsgMV0gPQpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZUhhc2hqb2luLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlSGFzaGpvaW4uYwppbmRleCA1NjYxYWQ3NjgzMC4uY2M1MGJlZTE5ZWIgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVIYXNoam9pbi5jCisrKyBiL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVIYXNoam9pbi5jCkBAIC04OTksNyArODk5LDcgQEAgRXhlY0lu aXRIYXNoSm9pbihIYXNoSm9pbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3Mp CiAJCSAqLwogCQlpZiAoT2lkSXNWYWxpZChoYXNoLT5za2V3VGFibGUpKQogCQl7Ci0JCQlo YXNoc3RhdGUtPnNrZXdfaGFzaGZ1bmN0aW9uID0gcGFsbG9jMChzaXplb2YoRm1nckluZm8p KTsKKwkJCWhhc2hzdGF0ZS0+c2tld19oYXNoZnVuY3Rpb24gPSBwYWxsb2MwX29iamVjdChG bWdySW5mbyk7CiAJCQloYXNoc3RhdGUtPnNrZXdfY29sbGF0aW9uID0gbGluaXRpYWxfb2lk KG5vZGUtPmhhc2hjb2xsYXRpb25zKTsKIAkJCWZtZ3JfaW5mbyhvdXRlcl9oYXNoZnVuY2lk WzBdLCBoYXNoc3RhdGUtPnNrZXdfaGFzaGZ1bmN0aW9uKTsKIAkJfQpAQCAtMTU0MSw4ICsx NTQxLDcgQEAgRXhlY1JlU2Nhbkhhc2hKb2luKEhhc2hKb2luU3RhdGUgKm5vZGUpCiAJCQkv KiBhY2N1bXVsYXRlIHN0YXRzIGZyb20gb2xkIGhhc2ggdGFibGUsIGlmIHdhbnRlZCAqLwog CQkJLyogKHRoaXMgc2hvdWxkIG1hdGNoIEV4ZWNTaHV0ZG93bkhhc2gpICovCiAJCQlpZiAo aGFzaE5vZGUtPnBzLmluc3RydW1lbnQgJiYgIWhhc2hOb2RlLT5oaW5zdHJ1bWVudCkKLQkJ CQloYXNoTm9kZS0+aGluc3RydW1lbnQgPSAoSGFzaEluc3RydW1lbnRhdGlvbiAqKQotCQkJ CQlwYWxsb2MwKHNpemVvZihIYXNoSW5zdHJ1bWVudGF0aW9uKSk7CisJCQkJaGFzaE5vZGUt PmhpbnN0cnVtZW50ID0gcGFsbG9jMF9vYmplY3QoSGFzaEluc3RydW1lbnRhdGlvbik7CiAJ CQlpZiAoaGFzaE5vZGUtPmhpbnN0cnVtZW50KQogCQkJCUV4ZWNIYXNoQWNjdW1JbnN0cnVt ZW50YXRpb24oaGFzaE5vZGUtPmhpbnN0cnVtZW50LAogCQkJCQkJCQkJCQkgaGFzaE5vZGUt Pmhhc2h0YWJsZSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5k ZXhvbmx5c2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4b25seXNjYW4u YwppbmRleCBmNDY0Y2NhOTUwNy4uNmJlYTQyZjEyOGYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVJbmRleG9ubHlzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZUluZGV4b25seXNjYW4uYwpAQCAtNjkzLDggKzY5Myw3IEBAIEV4ZWNJbml0 SW5kZXhPbmx5U2NhbihJbmRleE9ubHlTY2FuICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50 IGVmbGFncykKIAkJICogTm93IGNyZWF0ZSBhbiBhcnJheSB0byBtYXJrIHRoZSBhdHRyaWJ1 dGUgbnVtYmVycyBvZiB0aGUga2V5cyB0aGF0CiAJCSAqIG5lZWQgdG8gYmUgY29udmVydGVk IGZyb20gY3N0cmluZyB0byBuYW1lLgogCQkgKi8KLQkJaW5kZXhzdGF0ZS0+aW9zc19OYW1l Q1N0cmluZ0F0dE51bXMgPSAoQXR0ck51bWJlciAqKQotCQkJcGFsbG9jKHNpemVvZihBdHRy TnVtYmVyKSAqIG5hbWVjb3VudCk7CisJCWluZGV4c3RhdGUtPmlvc3NfTmFtZUNTdHJpbmdB dHROdW1zID0gcGFsbG9jX2FycmF5KEF0dHJOdW1iZXIsIG5hbWVjb3VudCk7CiAKIAkJZm9y IChpbnQgYXR0bnVtID0gMDsgYXR0bnVtIDwgaW5kbmtleWF0dHM7IGF0dG51bSsrKQogCQl7 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhzY2FuLmMgYi9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhzY2FuLmMKaW5kZXggZjM2OTI5ZGVlYzMu LjcyYjEzNWU1ZGNmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5k ZXhzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4c2Nhbi5jCkBA IC00NjYsMTIgKzQ2NiwxMCBAQCByZW9yZGVycXVldWVfcHVzaChJbmRleFNjYW5TdGF0ZSAq bm9kZSwgVHVwbGVUYWJsZVNsb3QgKnNsb3QsCiAJUmVvcmRlclR1cGxlICpydDsKIAlpbnQJ CQlpOwogCi0JcnQgPSAoUmVvcmRlclR1cGxlICopIHBhbGxvYyhzaXplb2YoUmVvcmRlclR1 cGxlKSk7CisJcnQgPSBwYWxsb2Nfb2JqZWN0KFJlb3JkZXJUdXBsZSk7CiAJcnQtPmh0dXAg PSBFeGVjQ29weVNsb3RIZWFwVHVwbGUoc2xvdCk7Ci0JcnQtPm9yZGVyYnl2YWxzID0KLQkJ KERhdHVtICopIHBhbGxvYyhzaXplb2YoRGF0dW0pICogc2NhbmRlc2MtPm51bWJlck9mT3Jk ZXJCeXMpOwotCXJ0LT5vcmRlcmJ5bnVsbHMgPQotCQkoYm9vbCAqKSBwYWxsb2Moc2l6ZW9m KGJvb2wpICogc2NhbmRlc2MtPm51bWJlck9mT3JkZXJCeXMpOworCXJ0LT5vcmRlcmJ5dmFs cyA9IHBhbGxvY19hcnJheShEYXR1bSwgc2NhbmRlc2MtPm51bWJlck9mT3JkZXJCeXMpOwor CXJ0LT5vcmRlcmJ5bnVsbHMgPSBwYWxsb2NfYXJyYXkoYm9vbCwgc2NhbmRlc2MtPm51bWJl ck9mT3JkZXJCeXMpOwogCWZvciAoaSA9IDA7IGkgPCBub2RlLT5pc3NfTnVtT3JkZXJCeUtl eXM7IGkrKykKIAl7CiAJCWlmICghb3JkZXJieW51bGxzW2ldKQpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lbW9pemUuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVNZW1vaXplLmMKaW5kZXggZDY1MjY2M2NiNmEuLjc0NDQzOTFlOGExIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVtb2l6ZS5jCisrKyBiL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVNZW1vaXplLmMKQEAgLTU1NSw3ICs1NTUsNyBAQCBjYWNoZV9s b29rdXAoTWVtb2l6ZVN0YXRlICptc3RhdGUsIGJvb2wgKmZvdW5kKQogCW9sZGNvbnRleHQg PSBNZW1vcnlDb250ZXh0U3dpdGNoVG8obXN0YXRlLT50YWJsZUNvbnRleHQpOwogCiAJLyog QWxsb2NhdGUgYSBuZXcga2V5ICovCi0JZW50cnktPmtleSA9IGtleSA9IChNZW1vaXplS2V5 ICopIHBhbGxvYyhzaXplb2YoTWVtb2l6ZUtleSkpOworCWVudHJ5LT5rZXkgPSBrZXkgPSBw YWxsb2Nfb2JqZWN0KE1lbW9pemVLZXkpOwogCWtleS0+cGFyYW1zID0gRXhlY0NvcHlTbG90 TWluaW1hbFR1cGxlKG1zdGF0ZS0+cHJvYmVzbG90KTsKIAogCS8qIFVwZGF0ZSB0aGUgdG90 YWwgY2FjaGUgbWVtb3J5IHV0aWxpemF0aW9uICovCkBAIC02MzQsNyArNjM0LDcgQEAgY2Fj aGVfc3RvcmVfdHVwbGUoTWVtb2l6ZVN0YXRlICptc3RhdGUsIFR1cGxlVGFibGVTbG90ICpz bG90KQogCiAJb2xkY29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhtc3RhdGUtPnRh YmxlQ29udGV4dCk7CiAKLQl0dXBsZSA9IChNZW1vaXplVHVwbGUgKikgcGFsbG9jKHNpemVv ZihNZW1vaXplVHVwbGUpKTsKKwl0dXBsZSA9IHBhbGxvY19vYmplY3QoTWVtb2l6ZVR1cGxl KTsKIAl0dXBsZS0+bWludHVwbGUgPSBFeGVjQ29weVNsb3RNaW5pbWFsVHVwbGUoc2xvdCk7 CiAJdHVwbGUtPm5leHQgPSBOVUxMOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlTWVyZ2VBcHBlbmQuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJn ZUFwcGVuZC5jCmluZGV4IDQwNWU4Zjk0Mjg1Li4zMDBiY2Q1Y2YzMyAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlQXBwZW5kLmMKKysrIGIvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZU1lcmdlQXBwZW5kLmMKQEAgLTEyMiwxMSArMTIyLDExIEBAIEV4 ZWNJbml0TWVyZ2VBcHBlbmQoTWVyZ2VBcHBlbmQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBp bnQgZWZsYWdzKQogCQltZXJnZXN0YXRlLT5tc19wcnVuZV9zdGF0ZSA9IE5VTEw7CiAJfQog Ci0JbWVyZ2VwbGFuc3RhdGVzID0gKFBsYW5TdGF0ZSAqKikgcGFsbG9jKG5wbGFucyAqIHNp emVvZihQbGFuU3RhdGUgKikpOworCW1lcmdlcGxhbnN0YXRlcyA9IHBhbGxvY19hcnJheShQ bGFuU3RhdGUgKiwgbnBsYW5zKTsKIAltZXJnZXN0YXRlLT5tZXJnZXBsYW5zID0gbWVyZ2Vw bGFuc3RhdGVzOwogCW1lcmdlc3RhdGUtPm1zX25wbGFucyA9IG5wbGFuczsKIAotCW1lcmdl c3RhdGUtPm1zX3Nsb3RzID0gKFR1cGxlVGFibGVTbG90ICoqKSBwYWxsb2MwKHNpemVvZihU dXBsZVRhYmxlU2xvdCAqKSAqIG5wbGFucyk7CisJbWVyZ2VzdGF0ZS0+bXNfc2xvdHMgPSBw YWxsb2MwX2FycmF5KFR1cGxlVGFibGVTbG90ICosIG5wbGFucyk7CiAJbWVyZ2VzdGF0ZS0+ bXNfaGVhcCA9IGJpbmFyeWhlYXBfYWxsb2NhdGUobnBsYW5zLCBoZWFwX2NvbXBhcmVfc2xv dHMsCiAJCQkJCQkJCQkJCSAgbWVyZ2VzdGF0ZSk7CiAKQEAgLTE3NCw3ICsxNzQsNyBAQCBF eGVjSW5pdE1lcmdlQXBwZW5kKE1lcmdlQXBwZW5kICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwg aW50IGVmbGFncykKIAkgKiBpbml0aWFsaXplIHNvcnQta2V5IGluZm9ybWF0aW9uCiAJICov CiAJbWVyZ2VzdGF0ZS0+bXNfbmtleXMgPSBub2RlLT5udW1Db2xzOwotCW1lcmdlc3RhdGUt Pm1zX3NvcnRrZXlzID0gcGFsbG9jMChzaXplb2YoU29ydFN1cHBvcnREYXRhKSAqIG5vZGUt Pm51bUNvbHMpOworCW1lcmdlc3RhdGUtPm1zX3NvcnRrZXlzID0gcGFsbG9jMF9hcnJheShT b3J0U3VwcG9ydERhdGEsIG5vZGUtPm51bUNvbHMpOwogCiAJZm9yIChpID0gMDsgaSA8IG5v ZGUtPm51bUNvbHM7IGkrKykKIAl7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlTW9kaWZ5VGFibGUuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlU YWJsZS5jCmluZGV4IGU0NGYxMjIzODg2Li44NzRiNzFlNjYwOCAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMKKysrIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMKQEAgLTU4MSw4ICs1ODEsOCBAQCBFeGVjQ29t cHV0ZVN0b3JlZEdlbmVyYXRlZChSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLAogCiAJ b2xkQ29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhHZXRQZXJUdXBsZU1lbW9yeUNv bnRleHQoZXN0YXRlKSk7CiAKLQl2YWx1ZXMgPSBwYWxsb2Moc2l6ZW9mKCp2YWx1ZXMpICog bmF0dHMpOwotCW51bGxzID0gcGFsbG9jKHNpemVvZigqbnVsbHMpICogbmF0dHMpOworCXZh bHVlcyA9IHBhbGxvY19hcnJheShEYXR1bSwgbmF0dHMpOworCW51bGxzID0gcGFsbG9jX2Fy cmF5KGJvb2wsIG5hdHRzKTsKIAogCXNsb3RfZ2V0YWxsYXR0cnMoc2xvdCk7CiAJbWVtY3B5 KG51bGxzLCBzbG90LT50dHNfaXNudWxsLCBzaXplb2YoKm51bGxzKSAqIG5hdHRzKTsKQEAg LTk2MiwxMCArOTYyLDggQEAgRXhlY0luc2VydChNb2RpZnlUYWJsZUNvbnRleHQgKmNvbnRl eHQsCiAKIAkJCWlmIChyZXN1bHRSZWxJbmZvLT5yaV9TbG90cyA9PSBOVUxMKQogCQkJewot CQkJCXJlc3VsdFJlbEluZm8tPnJpX1Nsb3RzID0gcGFsbG9jKHNpemVvZihUdXBsZVRhYmxl U2xvdCAqKSAqCi0JCQkJCQkJCQkJCQkgcmVzdWx0UmVsSW5mby0+cmlfQmF0Y2hTaXplKTsK LQkJCQlyZXN1bHRSZWxJbmZvLT5yaV9QbGFuU2xvdHMgPSBwYWxsb2Moc2l6ZW9mKFR1cGxl VGFibGVTbG90ICopICoKLQkJCQkJCQkJCQkJCQkgcmVzdWx0UmVsSW5mby0+cmlfQmF0Y2hT aXplKTsKKwkJCQlyZXN1bHRSZWxJbmZvLT5yaV9TbG90cyA9IHBhbGxvY19hcnJheShUdXBs ZVRhYmxlU2xvdCAqLCByZXN1bHRSZWxJbmZvLT5yaV9CYXRjaFNpemUpOworCQkJCXJlc3Vs dFJlbEluZm8tPnJpX1BsYW5TbG90cyA9IHBhbGxvY19hcnJheShUdXBsZVRhYmxlU2xvdCAq LCByZXN1bHRSZWxJbmZvLT5yaV9CYXRjaFNpemUpOwogCQkJfQogCiAJCQkvKgpAQCAtNDc0 NSw4ICs0NzQzLDcgQEAgRXhlY0luaXRNb2RpZnlUYWJsZShNb2RpZnlUYWJsZSAqbm9kZSwg RVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJbXRzdGF0ZS0+bXRfZG9uZSA9IGZhbHNl OwogCiAJbXRzdGF0ZS0+bXRfbnJlbHMgPSBucmVsczsKLQltdHN0YXRlLT5yZXN1bHRSZWxJ bmZvID0gKFJlc3VsdFJlbEluZm8gKikKLQkJcGFsbG9jKG5yZWxzICogc2l6ZW9mKFJlc3Vs dFJlbEluZm8pKTsKKwltdHN0YXRlLT5yZXN1bHRSZWxJbmZvID0gcGFsbG9jX2FycmF5KFJl c3VsdFJlbEluZm8sIG5yZWxzKTsKIAogCW10c3RhdGUtPm10X21lcmdlX3BlbmRpbmdfbm90 X21hdGNoZWQgPSBOVUxMOwogCW10c3RhdGUtPm10X21lcmdlX2luc2VydGVkID0gMDsKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVQcm9qZWN0U2V0LmMgYi9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlUHJvamVjdFNldC5jCmluZGV4IDg4MGYzOWZiMmZmLi43 ZDYyMWNlYmM3YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVByb2pl Y3RTZXQuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUHJvamVjdFNldC5jCkBA IC0yNjcsMTAgKzI2Nyw4IEBAIEV4ZWNJbml0UHJvamVjdFNldChQcm9qZWN0U2V0ICpub2Rl LCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAogCS8qIENyZWF0ZSB3b3Jrc3BhY2Ug Zm9yIHBlci10bGlzdC1lbnRyeSBleHByIHN0YXRlICYgU1JGLWlzLWRvbmUgc3RhdGUgKi8K IAlzdGF0ZS0+bmVsZW1zID0gbGlzdF9sZW5ndGgobm9kZS0+cGxhbi50YXJnZXRsaXN0KTsK LQlzdGF0ZS0+ZWxlbXMgPSAoTm9kZSAqKikKLQkJcGFsbG9jKHNpemVvZihOb2RlICopICog c3RhdGUtPm5lbGVtcyk7Ci0Jc3RhdGUtPmVsZW1kb25lID0gKEV4cHJEb25lQ29uZCAqKQot CQlwYWxsb2Moc2l6ZW9mKEV4cHJEb25lQ29uZCkgKiBzdGF0ZS0+bmVsZW1zKTsKKwlzdGF0 ZS0+ZWxlbXMgPSBwYWxsb2NfYXJyYXkoTm9kZSAqLCBzdGF0ZS0+bmVsZW1zKTsKKwlzdGF0 ZS0+ZWxlbWRvbmUgPSBwYWxsb2NfYXJyYXkoRXhwckRvbmVDb25kLCBzdGF0ZS0+bmVsZW1z KTsKIAogCS8qCiAJICogQnVpbGQgZXhwcmVzc2lvbnMgdG8gZXZhbHVhdGUgdGFyZ2V0bGlz dC4gIFdlIGNhbid0IHVzZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZVNhbXBsZXNjYW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTYW1wbGVzY2FuLmMK aW5kZXggNmIzZGI3NTQ4ZWQuLmMyOGJjNmZjNjIwIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlU2FtcGxlc2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVTYW1wbGVzY2FuLmMKQEAgLTIyOCw3ICsyMjgsNyBAQCB0YWJsZXNhbXBsZV9pbml0 KFNhbXBsZVNjYW5TdGF0ZSAqc2NhbnN0YXRlKQogCUxpc3RDZWxsICAgKmFyZzsKIAogCXNj YW5zdGF0ZS0+ZG9uZXR1cGxlcyA9IDA7Ci0JcGFyYW1zID0gKERhdHVtICopIHBhbGxvYyhs aXN0X2xlbmd0aChzY2Fuc3RhdGUtPmFyZ3MpICogc2l6ZW9mKERhdHVtKSk7CisJcGFyYW1z ID0gcGFsbG9jX2FycmF5KERhdHVtLCBsaXN0X2xlbmd0aChzY2Fuc3RhdGUtPmFyZ3MpKTsK IAogCWkgPSAwOwogCWZvcmVhY2goYXJnLCBzY2Fuc3RhdGUtPmFyZ3MpCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGFibGVGdW5jc2Nhbi5jIGIvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZVRhYmxlRnVuY3NjYW4uYwppbmRleCA4M2FkZTNmOTQzNy4uZGZh ZDE5MDUyYTYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUYWJsZUZ1 bmNzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVRhYmxlRnVuY3NjYW4u YwpAQCAtMTkyLDggKzE5Miw4IEBAIEV4ZWNJbml0VGFibGVGdW5jU2NhbihUYWJsZUZ1bmNT Y2FuICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAlzY2Fuc3RhdGUtPm5v dG51bGxzID0gdGYtPm5vdG51bGxzOwogCiAJLyogdGhlc2UgYXJlIGFsbG9jYXRlZCBub3cg YW5kIGluaXRpYWxpemVkIGxhdGVyICovCi0Jc2NhbnN0YXRlLT5pbl9mdW5jdGlvbnMgPSBw YWxsb2Moc2l6ZW9mKEZtZ3JJbmZvKSAqIHR1cGRlc2MtPm5hdHRzKTsKLQlzY2Fuc3RhdGUt PnR5cGlvcGFyYW1zID0gcGFsbG9jKHNpemVvZihPaWQpICogdHVwZGVzYy0+bmF0dHMpOwor CXNjYW5zdGF0ZS0+aW5fZnVuY3Rpb25zID0gcGFsbG9jX2FycmF5KEZtZ3JJbmZvLCB0dXBk ZXNjLT5uYXR0cyk7CisJc2NhbnN0YXRlLT50eXBpb3BhcmFtcyA9IHBhbGxvY19hcnJheShP aWQsIHR1cGRlc2MtPm5hdHRzKTsKIAogCS8qCiAJICogRmlsbCBpbiB0aGUgbmVjZXNzYXJ5 IGZtZ3IgaW5mb3MuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGlk cmFuZ2VzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGlkcmFuZ2VzY2FuLmMK aW5kZXggMWJjZThkNmNiZmUuLjBlNDNmZGVkYjdmIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlVGlkcmFuZ2VzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZVRpZHJhbmdlc2Nhbi5jCkBAIC03Miw3ICs3Miw3IEBAIE1ha2VUaWRPcEV4cHIo T3BFeHByICpleHByLCBUaWRSYW5nZVNjYW5TdGF0ZSAqdGlkc3RhdGUpCiAJZWxzZQogCQll bG9nKEVSUk9SLCAiY291bGQgbm90IGlkZW50aWZ5IENUSUQgdmFyaWFibGUiKTsKIAotCXRp ZG9wZXhwciA9IChUaWRPcEV4cHIgKikgcGFsbG9jKHNpemVvZihUaWRPcEV4cHIpKTsKKwl0 aWRvcGV4cHIgPSBwYWxsb2Nfb2JqZWN0KFRpZE9wRXhwcik7CiAJdGlkb3BleHByLT5pbmNs dXNpdmUgPSBmYWxzZTsJLyogZm9yIG5vdyAqLwogCiAJc3dpdGNoIChleHByLT5vcG5vKQpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVRpZHNjYW4uYyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVUaWRzY2FuLmMKaW5kZXggZDUwYzY2MDAzNTguLjM1ZmNk NTYyNWRiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGlkc2Nhbi5j CisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUaWRzY2FuLmMKQEAgLTc4LDcgKzc4 LDcgQEAgVGlkRXhwckxpc3RDcmVhdGUoVGlkU2NhblN0YXRlICp0aWRzdGF0ZSkKIAlmb3Jl YWNoKGwsIG5vZGUtPnRpZHF1YWxzKQogCXsKIAkJRXhwcgkgICAqZXhwciA9IChFeHByICop IGxmaXJzdChsKTsKLQkJVGlkRXhwciAgICAqdGlkZXhwciA9IChUaWRFeHByICopIHBhbGxv YzAoc2l6ZW9mKFRpZEV4cHIpKTsKKwkJVGlkRXhwciAgICAqdGlkZXhwciA9IHBhbGxvYzBf b2JqZWN0KFRpZEV4cHIpOwogCiAJCWlmIChpc19vcGNsYXVzZShleHByKSkKIAkJewpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVdpbmRvd0FnZy5jIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZVdpbmRvd0FnZy5jCmluZGV4IDNhMGQxZjBjOTIyLi5jMGU1 YWI4ZGJiZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVdpbmRvd0Fn Zy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVXaW5kb3dBZ2cuYwpAQCAtMjY2 MSwxNCArMjY2MSwxNCBAQCBFeGVjSW5pdFdpbmRvd0FnZyhXaW5kb3dBZ2cgKm5vZGUsIEVT dGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCW51bWZ1bmNzID0gd2luc3RhdGUtPm51bWZ1 bmNzOwogCW51bWFnZ3MgPSB3aW5zdGF0ZS0+bnVtYWdnczsKIAllY29udGV4dCA9IHdpbnN0 YXRlLT5zcy5wcy5wc19FeHByQ29udGV4dDsKLQllY29udGV4dC0+ZWN4dF9hZ2d2YWx1ZXMg PSAoRGF0dW0gKikgcGFsbG9jMChzaXplb2YoRGF0dW0pICogbnVtZnVuY3MpOwotCWVjb250 ZXh0LT5lY3h0X2FnZ251bGxzID0gKGJvb2wgKikgcGFsbG9jMChzaXplb2YoYm9vbCkgKiBu dW1mdW5jcyk7CisJZWNvbnRleHQtPmVjeHRfYWdndmFsdWVzID0gcGFsbG9jMF9hcnJheShE YXR1bSwgbnVtZnVuY3MpOworCWVjb250ZXh0LT5lY3h0X2FnZ251bGxzID0gcGFsbG9jMF9h cnJheShib29sLCBudW1mdW5jcyk7CiAKIAkvKgogCSAqIGFsbG9jYXRlIHBlci13ZnVuYy9w ZXItYWdnIHN0YXRlIGluZm9ybWF0aW9uLgogCSAqLwotCXBlcmZ1bmMgPSAoV2luZG93U3Rh dGVQZXJGdW5jKSBwYWxsb2MwKHNpemVvZihXaW5kb3dTdGF0ZVBlckZ1bmNEYXRhKSAqIG51 bWZ1bmNzKTsKLQlwZXJhZ2cgPSAoV2luZG93U3RhdGVQZXJBZ2cpIHBhbGxvYzAoc2l6ZW9m KFdpbmRvd1N0YXRlUGVyQWdnRGF0YSkgKiBudW1hZ2dzKTsKKwlwZXJmdW5jID0gcGFsbG9j MF9hcnJheShXaW5kb3dTdGF0ZVBlckZ1bmNEYXRhLCBudW1mdW5jcyk7CisJcGVyYWdnID0g cGFsbG9jMF9hcnJheShXaW5kb3dTdGF0ZVBlckFnZ0RhdGEsIG51bWFnZ3MpOwogCXdpbnN0 YXRlLT5wZXJmdW5jID0gcGVyZnVuYzsKIAl3aW5zdGF0ZS0+cGVyYWdnID0gcGVyYWdnOwog CkBAIC0zNDY3LDggKzM0NjcsOCBAQCBpbml0X25vdG51bGxfaW5mbyhXaW5kb3dPYmplY3Qg d2lub2JqLCBXaW5kb3dTdGF0ZVBlckZ1bmMgcGVyZnVuY3N0YXRlKQogCiAJaWYgKHdpbm9i ai0+aWdub3JlX251bGxzID09IFBBUlNFUl9JR05PUkVfTlVMTFMpCiAJewotCQl3aW5vYmot Pm5vdG51bGxfaW5mbyA9IHBhbGxvYzAoc2l6ZW9mKHVpbnQ4ICopICogbnVtYXJncyk7Ci0J CXdpbm9iai0+bnVtX25vdG51bGxfaW5mbyA9IHBhbGxvYzAoc2l6ZW9mKGludDY0KSAqIG51 bWFyZ3MpOworCQl3aW5vYmotPm5vdG51bGxfaW5mbyA9IHBhbGxvYzBfYXJyYXkodWludDgg KiwgbnVtYXJncyk7CisJCXdpbm9iai0+bnVtX25vdG51bGxfaW5mbyA9IHBhbGxvYzBfYXJy YXkoaW50NjQsIG51bWFyZ3MpOwogCX0KIH0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivc3BpLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9zcGkuYwppbmRleCA2NTM1 MDBiMzhkYy4uMzRhNjNhOTc3YjYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L3NwaS5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL3NwaS5jCkBAIC0xMTMwLDggKzEx MzAsOCBAQCBTUElfbW9kaWZ5dHVwbGUoUmVsYXRpb24gcmVsLCBIZWFwVHVwbGUgdHVwbGUs IGludCBuYXR0cywgaW50ICphdHRudW0sCiAJU1BJX3Jlc3VsdCA9IDA7CiAKIAludW1iZXJP ZkF0dHJpYnV0ZXMgPSByZWwtPnJkX2F0dC0+bmF0dHM7Ci0JdiA9IChEYXR1bSAqKSBwYWxs b2MobnVtYmVyT2ZBdHRyaWJ1dGVzICogc2l6ZW9mKERhdHVtKSk7Ci0JbiA9IChib29sICop IHBhbGxvYyhudW1iZXJPZkF0dHJpYnV0ZXMgKiBzaXplb2YoYm9vbCkpOworCXYgPSBwYWxs b2NfYXJyYXkoRGF0dW0sIG51bWJlck9mQXR0cmlidXRlcyk7CisJbiA9IHBhbGxvY19hcnJh eShib29sLCBudW1iZXJPZkF0dHJpYnV0ZXMpOwogCiAJLyogZmV0Y2ggb2xkIHZhbHVlcyBh bmQgbnVsbHMgKi8KIAloZWFwX2RlZm9ybV90dXBsZSh0dXBsZSwgcmVsLT5yZF9hdHQsIHYs IG4pOwpAQCAtMjE0MSw4ICsyMTQxLDcgQEAgc3BpX2Rlc3Rfc3RhcnR1cChEZXN0UmVjZWl2 ZXIgKnNlbGYsIGludCBvcGVyYXRpb24sIFR1cGxlRGVzYyB0eXBlaW5mbykKIAkJCQkJCQkJ CSAgQUxMT0NTRVRfREVGQVVMVF9TSVpFUyk7CiAJTWVtb3J5Q29udGV4dFN3aXRjaFRvKHR1 cHRhYmN4dCk7CiAKLQlfU1BJX2N1cnJlbnQtPnR1cHRhYmxlID0gdHVwdGFibGUgPSAoU1BJ VHVwbGVUYWJsZSAqKQotCQlwYWxsb2MwKHNpemVvZihTUElUdXBsZVRhYmxlKSk7CisJX1NQ SV9jdXJyZW50LT50dXB0YWJsZSA9IHR1cHRhYmxlID0gcGFsbG9jMF9vYmplY3QoU1BJVHVw bGVUYWJsZSk7CiAJdHVwdGFibGUtPnR1cHRhYmN4dCA9IHR1cHRhYmN4dDsKIAl0dXB0YWJs ZS0+c3ViaWQgPSBHZXRDdXJyZW50U3ViVHJhbnNhY3Rpb25JZCgpOwogCkBAIC0yMTU1LDcg KzIxNTQsNyBAQCBzcGlfZGVzdF9zdGFydHVwKERlc3RSZWNlaXZlciAqc2VsZiwgaW50IG9w ZXJhdGlvbiwgVHVwbGVEZXNjIHR5cGVpbmZvKQogCiAJLyogc2V0IHVwIGluaXRpYWwgYWxs b2NhdGlvbnMgKi8KIAl0dXB0YWJsZS0+YWxsb2NlZCA9IDEyODsKLQl0dXB0YWJsZS0+dmFs cyA9IChIZWFwVHVwbGUgKikgcGFsbG9jKHR1cHRhYmxlLT5hbGxvY2VkICogc2l6ZW9mKEhl YXBUdXBsZSkpOworCXR1cHRhYmxlLT52YWxzID0gcGFsbG9jX2FycmF5KEhlYXBUdXBsZSwg dHVwdGFibGUtPmFsbG9jZWQpOwogCXR1cHRhYmxlLT5udW12YWxzID0gMDsKIAl0dXB0YWJs ZS0+dHVwZGVzYyA9IENyZWF0ZVR1cGxlRGVzY0NvcHkodHlwZWluZm8pOwogCkBAIC0zMTYy LDcgKzMxNjEsNyBAQCBfU1BJX21ha2VfcGxhbl9ub25fdGVtcChTUElQbGFuUHRyIHBsYW4p CiAJb2xkY3h0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKHBsYW5jeHQpOwogCiAJLyogQ29w eSB0aGUgX1NQSV9wbGFuIHN0cnVjdCBhbmQgc3Vic2lkaWFyeSBkYXRhIGludG8gdGhlIG5l dyBjb250ZXh0ICovCi0JbmV3cGxhbiA9IChTUElQbGFuUHRyKSBwYWxsb2MwKHNpemVvZihf U1BJX3BsYW4pKTsKKwluZXdwbGFuID0gcGFsbG9jMF9vYmplY3QoX1NQSV9wbGFuKTsKIAlu ZXdwbGFuLT5tYWdpYyA9IF9TUElfUExBTl9NQUdJQzsKIAluZXdwbGFuLT5wbGFuY3h0ID0g cGxhbmN4dDsKIAluZXdwbGFuLT5wYXJzZV9tb2RlID0gcGxhbi0+cGFyc2VfbW9kZTsKQEAg LTMxNzAsNyArMzE2OSw3IEBAIF9TUElfbWFrZV9wbGFuX25vbl90ZW1wKFNQSVBsYW5QdHIg cGxhbikKIAluZXdwbGFuLT5uYXJncyA9IHBsYW4tPm5hcmdzOwogCWlmIChwbGFuLT5uYXJn cyA+IDApCiAJewotCQluZXdwbGFuLT5hcmd0eXBlcyA9IChPaWQgKikgcGFsbG9jKHBsYW4t Pm5hcmdzICogc2l6ZW9mKE9pZCkpOworCQluZXdwbGFuLT5hcmd0eXBlcyA9IHBhbGxvY19h cnJheShPaWQsIHBsYW4tPm5hcmdzKTsKIAkJbWVtY3B5KG5ld3BsYW4tPmFyZ3R5cGVzLCBw bGFuLT5hcmd0eXBlcywgcGxhbi0+bmFyZ3MgKiBzaXplb2YoT2lkKSk7CiAJfQogCWVsc2UK QEAgLTMyMjcsNyArMzIyNiw3IEBAIF9TUElfc2F2ZV9wbGFuKFNQSVBsYW5QdHIgcGxhbikK IAlvbGRjeHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8ocGxhbmN4dCk7CiAKIAkvKiBDb3B5 IHRoZSBTUEkgcGxhbiBpbnRvIGl0cyBvd24gY29udGV4dCAqLwotCW5ld3BsYW4gPSAoU1BJ UGxhblB0cikgcGFsbG9jMChzaXplb2YoX1NQSV9wbGFuKSk7CisJbmV3cGxhbiA9IHBhbGxv YzBfb2JqZWN0KF9TUElfcGxhbik7CiAJbmV3cGxhbi0+bWFnaWMgPSBfU1BJX1BMQU5fTUFH SUM7CiAJbmV3cGxhbi0+cGxhbmN4dCA9IHBsYW5jeHQ7CiAJbmV3cGxhbi0+cGFyc2VfbW9k ZSA9IHBsYW4tPnBhcnNlX21vZGU7CkBAIC0zMjM1LDcgKzMyMzQsNyBAQCBfU1BJX3NhdmVf cGxhbihTUElQbGFuUHRyIHBsYW4pCiAJbmV3cGxhbi0+bmFyZ3MgPSBwbGFuLT5uYXJnczsK IAlpZiAocGxhbi0+bmFyZ3MgPiAwKQogCXsKLQkJbmV3cGxhbi0+YXJndHlwZXMgPSAoT2lk ICopIHBhbGxvYyhwbGFuLT5uYXJncyAqIHNpemVvZihPaWQpKTsKKwkJbmV3cGxhbi0+YXJn dHlwZXMgPSBwYWxsb2NfYXJyYXkoT2lkLCBwbGFuLT5uYXJncyk7CiAJCW1lbWNweShuZXdw bGFuLT5hcmd0eXBlcywgcGxhbi0+YXJndHlwZXMsIHBsYW4tPm5hcmdzICogc2l6ZW9mKE9p ZCkpOwogCX0KIAllbHNlCkBAIC0zMzY5LDcgKzMzNjgsNyBAQCBTUElfcmVnaXN0ZXJfdHJp Z2dlcl9kYXRhKFRyaWdnZXJEYXRhICp0ZGF0YSkKIAlpZiAodGRhdGEtPnRnX25ld3RhYmxl KQogCXsKIAkJRXBoZW1lcmFsTmFtZWRSZWxhdGlvbiBlbnIgPQotCQkJcGFsbG9jKHNpemVv ZihFcGhlbWVyYWxOYW1lZFJlbGF0aW9uRGF0YSkpOworCQkJcGFsbG9jX29iamVjdChFcGhl bWVyYWxOYW1lZFJlbGF0aW9uRGF0YSk7CiAJCWludAkJCXJjOwogCiAJCWVuci0+bWQubmFt ZSA9IHRkYXRhLT50Z190cmlnZ2VyLT50Z25ld3RhYmxlOwpAQCAtMzM4Niw3ICszMzg1LDcg QEAgU1BJX3JlZ2lzdGVyX3RyaWdnZXJfZGF0YShUcmlnZ2VyRGF0YSAqdGRhdGEpCiAJaWYg KHRkYXRhLT50Z19vbGR0YWJsZSkKIAl7CiAJCUVwaGVtZXJhbE5hbWVkUmVsYXRpb24gZW5y ID0KLQkJCXBhbGxvYyhzaXplb2YoRXBoZW1lcmFsTmFtZWRSZWxhdGlvbkRhdGEpKTsKKwkJ CXBhbGxvY19vYmplY3QoRXBoZW1lcmFsTmFtZWRSZWxhdGlvbkRhdGEpOwogCQlpbnQJCQly YzsKIAogCQllbnItPm1kLm5hbWUgPSB0ZGF0YS0+dGdfdHJpZ2dlci0+dGdvbGR0YWJsZTsK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL3RxdWV1ZS5jIGIvc3JjL2JhY2tl bmQvZXhlY3V0b3IvdHF1ZXVlLmMKaW5kZXggNmM1ZTFmMTI2MmQuLmQ5YmY1OWY2NzJkIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci90cXVldWUuYworKysgYi9zcmMvYmFj a2VuZC9leGVjdXRvci90cXVldWUuYwpAQCAtMTIwLDcgKzEyMCw3IEBAIENyZWF0ZVR1cGxl UXVldWVEZXN0UmVjZWl2ZXIoc2htX21xX2hhbmRsZSAqaGFuZGxlKQogewogCVRRdWV1ZURl c3RSZWNlaXZlciAqc2VsZjsKIAotCXNlbGYgPSAoVFF1ZXVlRGVzdFJlY2VpdmVyICopIHBh bGxvYzAoc2l6ZW9mKFRRdWV1ZURlc3RSZWNlaXZlcikpOworCXNlbGYgPSBwYWxsb2MwX29i amVjdChUUXVldWVEZXN0UmVjZWl2ZXIpOwogCiAJc2VsZi0+cHViLnJlY2VpdmVTbG90ID0g dHF1ZXVlUmVjZWl2ZVNsb3Q7CiAJc2VsZi0+cHViLnJTdGFydHVwID0gdHF1ZXVlU3RhcnR1 cFJlY2VpdmVyOwpAQCAtMTM4LDcgKzEzOCw3IEBAIENyZWF0ZVR1cGxlUXVldWVEZXN0UmVj ZWl2ZXIoc2htX21xX2hhbmRsZSAqaGFuZGxlKQogVHVwbGVRdWV1ZVJlYWRlciAqCiBDcmVh dGVUdXBsZVF1ZXVlUmVhZGVyKHNobV9tcV9oYW5kbGUgKmhhbmRsZSkKIHsKLQlUdXBsZVF1 ZXVlUmVhZGVyICpyZWFkZXIgPSBwYWxsb2MwKHNpemVvZihUdXBsZVF1ZXVlUmVhZGVyKSk7 CisJVHVwbGVRdWV1ZVJlYWRlciAqcmVhZGVyID0gcGFsbG9jMF9vYmplY3QoVHVwbGVRdWV1 ZVJlYWRlcik7CiAKIAlyZWFkZXItPnF1ZXVlID0gaGFuZGxlOwogCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9leGVjdXRvci90c3RvcmVSZWNlaXZlci5jIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3IvdHN0b3JlUmVjZWl2ZXIuYwppbmRleCAwMmEzYWQzYWE2OC4uMjAxMjYxOGUyMzAg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL3RzdG9yZVJlY2VpdmVyLmMKKysr IGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvdHN0b3JlUmVjZWl2ZXIuYwpAQCAtMjM4LDcgKzIz OCw3IEBAIHRzdG9yZURlc3Ryb3lSZWNlaXZlcihEZXN0UmVjZWl2ZXIgKnNlbGYpCiBEZXN0 UmVjZWl2ZXIgKgogQ3JlYXRlVHVwbGVzdG9yZURlc3RSZWNlaXZlcih2b2lkKQogewotCVRT dG9yZVN0YXRlICpzZWxmID0gKFRTdG9yZVN0YXRlICopIHBhbGxvYzAoc2l6ZW9mKFRTdG9y ZVN0YXRlKSk7CisJVFN0b3JlU3RhdGUgKnNlbGYgPSBwYWxsb2MwX29iamVjdChUU3RvcmVT dGF0ZSk7CiAKIAlzZWxmLT5wdWIucmVjZWl2ZVNsb3QgPSB0c3RvcmVSZWNlaXZlU2xvdF9u b3RvYXN0OwkvKiBtaWdodCBjaGFuZ2UgKi8KIAlzZWxmLT5wdWIuclN0YXJ0dXAgPSB0c3Rv cmVTdGFydHVwUmVjZWl2ZXI7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9mb3JlaWduL2Zv cmVpZ24uYyBiL3NyYy9iYWNrZW5kL2ZvcmVpZ24vZm9yZWlnbi5jCmluZGV4IGE1N2U1OWYy N2VhLi5mYTNmNGM3NTI0NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZm9yZWlnbi9mb3Jl aWduLmMKKysrIGIvc3JjL2JhY2tlbmQvZm9yZWlnbi9mb3JlaWduLmMKQEAgLTY2LDcgKzY2 LDcgQEAgR2V0Rm9yZWlnbkRhdGFXcmFwcGVyRXh0ZW5kZWQoT2lkIGZkd2lkLCBiaXRzMTYg ZmxhZ3MpCiAKIAlmZHdmb3JtID0gKEZvcm1fcGdfZm9yZWlnbl9kYXRhX3dyYXBwZXIpIEdF VFNUUlVDVCh0cCk7CiAKLQlmZHcgPSAoRm9yZWlnbkRhdGFXcmFwcGVyICopIHBhbGxvYyhz aXplb2YoRm9yZWlnbkRhdGFXcmFwcGVyKSk7CisJZmR3ID0gcGFsbG9jX29iamVjdChGb3Jl aWduRGF0YVdyYXBwZXIpOwogCWZkdy0+ZmR3aWQgPSBmZHdpZDsKIAlmZHctPm93bmVyID0g ZmR3Zm9ybS0+ZmR3b3duZXI7CiAJZmR3LT5mZHduYW1lID0gcHN0cmR1cChOYW1lU3RyKGZk d2Zvcm0tPmZkd25hbWUpKTsKQEAgLTE0MCw3ICsxNDAsNyBAQCBHZXRGb3JlaWduU2VydmVy RXh0ZW5kZWQoT2lkIHNlcnZlcmlkLCBiaXRzMTYgZmxhZ3MpCiAKIAlzZXJ2ZXJmb3JtID0g KEZvcm1fcGdfZm9yZWlnbl9zZXJ2ZXIpIEdFVFNUUlVDVCh0cCk7CiAKLQlzZXJ2ZXIgPSAo Rm9yZWlnblNlcnZlciAqKSBwYWxsb2Moc2l6ZW9mKEZvcmVpZ25TZXJ2ZXIpKTsKKwlzZXJ2 ZXIgPSBwYWxsb2Nfb2JqZWN0KEZvcmVpZ25TZXJ2ZXIpOwogCXNlcnZlci0+c2VydmVyaWQg PSBzZXJ2ZXJpZDsKIAlzZXJ2ZXItPnNlcnZlcm5hbWUgPSBwc3RyZHVwKE5hbWVTdHIoc2Vy dmVyZm9ybS0+c3J2bmFtZSkpOwogCXNlcnZlci0+b3duZXIgPSBzZXJ2ZXJmb3JtLT5zcnZv d25lcjsKQEAgLTIyNyw3ICsyMjcsNyBAQCBHZXRVc2VyTWFwcGluZyhPaWQgdXNlcmlkLCBP aWQgc2VydmVyaWQpCiAJCQkJCQlNYXBwaW5nVXNlck5hbWUodXNlcmlkKSwgc2VydmVyLT5z ZXJ2ZXJuYW1lKSkpOwogCX0KIAotCXVtID0gKFVzZXJNYXBwaW5nICopIHBhbGxvYyhzaXpl b2YoVXNlck1hcHBpbmcpKTsKKwl1bSA9IHBhbGxvY19vYmplY3QoVXNlck1hcHBpbmcpOwog CXVtLT51bWlkID0gKChGb3JtX3BnX3VzZXJfbWFwcGluZykgR0VUU1RSVUNUKHRwKSktPm9p ZDsKIAl1bS0+dXNlcmlkID0gdXNlcmlkOwogCXVtLT5zZXJ2ZXJpZCA9IHNlcnZlcmlkOwpA QCAtMjY1LDcgKzI2NSw3IEBAIEdldEZvcmVpZ25UYWJsZShPaWQgcmVsaWQpCiAJCWVsb2co RVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciBmb3JlaWduIHRhYmxlICV1IiwgcmVs aWQpOwogCXRhYmxlZm9ybSA9IChGb3JtX3BnX2ZvcmVpZ25fdGFibGUpIEdFVFNUUlVDVCh0 cCk7CiAKLQlmdCA9IChGb3JlaWduVGFibGUgKikgcGFsbG9jKHNpemVvZihGb3JlaWduVGFi bGUpKTsKKwlmdCA9IHBhbGxvY19vYmplY3QoRm9yZWlnblRhYmxlKTsKIAlmdC0+cmVsaWQg PSByZWxpZDsKIAlmdC0+c2VydmVyaWQgPSB0YWJsZWZvcm0tPmZ0c2VydmVyOwogCkBAIC00 NjMsNyArNDYzLDcgQEAgR2V0RmR3Um91dGluZUZvclJlbGF0aW9uKFJlbGF0aW9uIHJlbGF0 aW9uLCBib29sIG1ha2Vjb3B5KQogCS8qIFdlIGhhdmUgdmFsaWQgY2FjaGVkIGRhdGEgLS0t IGRvZXMgdGhlIGNhbGxlciB3YW50IGEgY29weT8gKi8KIAlpZiAobWFrZWNvcHkpCiAJewot CQlmZHdyb3V0aW5lID0gKEZkd1JvdXRpbmUgKikgcGFsbG9jKHNpemVvZihGZHdSb3V0aW5l KSk7CisJCWZkd3JvdXRpbmUgPSBwYWxsb2Nfb2JqZWN0KEZkd1JvdXRpbmUpOwogCQltZW1j cHkoZmR3cm91dGluZSwgcmVsYXRpb24tPnJkX2Zkd3JvdXRpbmUsIHNpemVvZihGZHdSb3V0 aW5lKSk7CiAJCXJldHVybiBmZHdyb3V0aW5lOwogCX0KZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2ppdC9sbHZtL2xsdm1qaXQuYyBiL3NyYy9iYWNrZW5kL2ppdC9sbHZtL2xsdm1qaXQu YwppbmRleCBlOTc4Yjk5NmJhZS4uMTVjMzQ3NWVkZTIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2ppdC9sbHZtL2xsdm1qaXQuYworKysgYi9zcmMvYmFja2VuZC9qaXQvbGx2bS9sbHZt aml0LmMKQEAgLTUwMCw3ICs1MDAsNyBAQCBsbHZtX2NvcHlfYXR0cmlidXRlc19hdF9pbmRl eChMTFZNVmFsdWVSZWYgdl9mcm9tLCBMTFZNVmFsdWVSZWYgdl90bywgdWludDMyIGluZAog CWlmIChudW1fYXR0cmlidXRlcyA9PSAwKQogCQlyZXR1cm47CiAKLQlhdHRycyA9IHBhbGxv YyhzaXplb2YoTExWTUF0dHJpYnV0ZVJlZikgKiBudW1fYXR0cmlidXRlcyk7CisJYXR0cnMg PSBwYWxsb2NfYXJyYXkoTExWTUF0dHJpYnV0ZVJlZiwgbnVtX2F0dHJpYnV0ZXMpOwogCUxM Vk1HZXRBdHRyaWJ1dGVzQXRJbmRleCh2X2Zyb20sIGluZGV4LCBhdHRycyk7CiAKIAlmb3Ig KGludCBhdHRubyA9IDA7IGF0dG5vIDwgbnVtX2F0dHJpYnV0ZXM7IGF0dG5vKyspCkBAIC0x MTIzLDkgKzExMjMsOSBAQCBsbHZtX3Jlc29sdmVfc3ltYm9scyhMTFZNT3JjRGVmaW5pdGlv bkdlbmVyYXRvclJlZiBHZW5lcmF0b3JPYmosIHZvaWQgKkN0eCwKIAkJCQkJIExMVk1PcmND TG9va3VwU2V0IExvb2t1cFNldCwgc2l6ZV90IExvb2t1cFNldFNpemUpCiB7CiAjaWYgTExW TV9WRVJTSU9OX01BSk9SID4gMTQKLQlMTFZNT3JjQ1N5bWJvbE1hcFBhaXJzIHN5bWJvbHMg PSBwYWxsb2MwKHNpemVvZihMTFZNT3JjQ1N5bWJvbE1hcFBhaXIpICogTG9va3VwU2V0U2l6 ZSk7CisJTExWTU9yY0NTeW1ib2xNYXBQYWlycyBzeW1ib2xzID0gcGFsbG9jMF9hcnJheShM TFZNT3JjQ1N5bWJvbE1hcFBhaXIsIExvb2t1cFNldFNpemUpOwogI2Vsc2UKLQlMTFZNT3Jj Q1N5bWJvbE1hcFBhaXJzIHN5bWJvbHMgPSBwYWxsb2MwKHNpemVvZihMTFZNSklUQ1N5bWJv bE1hcFBhaXIpICogTG9va3VwU2V0U2l6ZSk7CisJTExWTU9yY0NTeW1ib2xNYXBQYWlycyBz eW1ib2xzID0gcGFsbG9jMF9hcnJheShMTFZNSklUQ1N5bWJvbE1hcFBhaXIsIExvb2t1cFNl dFNpemUpOwogI2VuZGlmCiAJTExWTUVycm9yUmVmIGVycm9yOwogCUxMVk1PcmNNYXRlcmlh bGl6YXRpb25Vbml0UmVmIG11OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvaml0L2xsdm0v bGx2bWppdF9kZWZvcm0uYyBiL3NyYy9iYWNrZW5kL2ppdC9sbHZtL2xsdm1qaXRfZGVmb3Jt LmMKaW5kZXggZjUwMGNiZGE4OTMuLjg5MTY3ZDE1YzNmIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9qaXQvbGx2bS9sbHZtaml0X2RlZm9ybS5jCisrKyBiL3NyYy9iYWNrZW5kL2ppdC9s bHZtL2xsdm1qaXRfZGVmb3JtLmMKQEAgLTE1NiwxMiArMTU2LDEyIEBAIHNsb3RfY29tcGls ZV9kZWZvcm0oTExWTUppdENvbnRleHQgKmNvbnRleHQsIFR1cGxlRGVzYyBkZXNjLAogCiAJ YiA9IExMVk1DcmVhdGVCdWlsZGVySW5Db250ZXh0KGxjKTsKIAotCWF0dGNoZWNrYXR0bm9i bG9ja3MgPSBwYWxsb2Moc2l6ZW9mKExMVk1CYXNpY0Jsb2NrUmVmKSAqIG5hdHRzKTsKLQlh dHRzdGFydGJsb2NrcyA9IHBhbGxvYyhzaXplb2YoTExWTUJhc2ljQmxvY2tSZWYpICogbmF0 dHMpOwotCWF0dGlzbnVsbGJsb2NrcyA9IHBhbGxvYyhzaXplb2YoTExWTUJhc2ljQmxvY2tS ZWYpICogbmF0dHMpOwotCWF0dGNoZWNrYWxpZ25ibG9ja3MgPSBwYWxsb2Moc2l6ZW9mKExM Vk1CYXNpY0Jsb2NrUmVmKSAqIG5hdHRzKTsKLQlhdHRhbGlnbmJsb2NrcyA9IHBhbGxvYyhz aXplb2YoTExWTUJhc2ljQmxvY2tSZWYpICogbmF0dHMpOwotCWF0dHN0b3JlYmxvY2tzID0g cGFsbG9jKHNpemVvZihMTFZNQmFzaWNCbG9ja1JlZikgKiBuYXR0cyk7CisJYXR0Y2hlY2th dHRub2Jsb2NrcyA9IHBhbGxvY19hcnJheShMTFZNQmFzaWNCbG9ja1JlZiwgbmF0dHMpOwor CWF0dHN0YXJ0YmxvY2tzID0gcGFsbG9jX2FycmF5KExMVk1CYXNpY0Jsb2NrUmVmLCBuYXR0 cyk7CisJYXR0aXNudWxsYmxvY2tzID0gcGFsbG9jX2FycmF5KExMVk1CYXNpY0Jsb2NrUmVm LCBuYXR0cyk7CisJYXR0Y2hlY2thbGlnbmJsb2NrcyA9IHBhbGxvY19hcnJheShMTFZNQmFz aWNCbG9ja1JlZiwgbmF0dHMpOworCWF0dGFsaWduYmxvY2tzID0gcGFsbG9jX2FycmF5KExM Vk1CYXNpY0Jsb2NrUmVmLCBuYXR0cyk7CisJYXR0c3RvcmVibG9ja3MgPSBwYWxsb2NfYXJy YXkoTExWTUJhc2ljQmxvY2tSZWYsIG5hdHRzKTsKIAogCWtub3duX2FsaWdubWVudCA9IDA7 CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2ppdC9sbHZtL2xsdm1qaXRfZXhwci5jIGIv c3JjL2JhY2tlbmQvaml0L2xsdm0vbGx2bWppdF9leHByLmMKaW5kZXggYWM4ODg4MWU5OTUu LmMwNTg1ODNiY2I2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9qaXQvbGx2bS9sbHZtaml0 X2V4cHIuYworKysgYi9zcmMvYmFja2VuZC9qaXQvbGx2bS9sbHZtaml0X2V4cHIuYwpAQCAt Mjk3LDcgKzI5Nyw3IEBAIGxsdm1fY29tcGlsZV9leHByKEV4cHJTdGF0ZSAqc3RhdGUpCiAJ CQkJCQkJCSAgICJ2LmVjb250ZXh0LmFnZ251bGxzIik7CiAKIAkvKiBhbGxvY2F0ZSBibG9j a3MgZm9yIGVhY2ggb3AgdXBmcm9udCwgc28gd2UgY2FuIGRvIGp1bXBzIGVhc2lseSAqLwot CW9wYmxvY2tzID0gcGFsbG9jKHNpemVvZihMTFZNQmFzaWNCbG9ja1JlZikgKiBzdGF0ZS0+ c3RlcHNfbGVuKTsKKwlvcGJsb2NrcyA9IHBhbGxvY19hcnJheShMTFZNQmFzaWNCbG9ja1Jl Ziwgc3RhdGUtPnN0ZXBzX2xlbik7CiAJZm9yIChpbnQgb3BubyA9IDA7IG9wbm8gPCBzdGF0 ZS0+c3RlcHNfbGVuOyBvcG5vKyspCiAJCW9wYmxvY2tzW29wbm9dID0gbF9iYl9hcHBlbmRf dihldmFsX2ZuLCAiYi5vcC4lZC5zdGFydCIsIG9wbm8pOwogCkBAIC02OTksNyArNjk5LDcg QEAgbGx2bV9jb21waWxlX2V4cHIoRXhwclN0YXRlICpzdGF0ZSkKIAogCQkJCQkJLyogY3Jl YXRlIGJsb2NrcyBmb3IgY2hlY2tpbmcgYXJncywgb25lIGZvciBlYWNoICovCiAJCQkJCQli X2NoZWNrYXJnbnVsbHMgPQotCQkJCQkJCXBhbGxvYyhzaXplb2YoTExWTUJhc2ljQmxvY2tS ZWYgKikgKiBvcC0+ZC5mdW5jLm5hcmdzKTsKKwkJCQkJCQlwYWxsb2NfYXJyYXkoTExWTUJh c2ljQmxvY2tSZWYgKiwgb3AtPmQuZnVuYy5uYXJncyk7CiAJCQkJCQlmb3IgKGludCBhcmdu byA9IDA7IGFyZ25vIDwgb3AtPmQuZnVuYy5uYXJnczsgYXJnbm8rKykKIAkJCQkJCQliX2No ZWNrYXJnbnVsbHNbYXJnbm9dID0KIAkJCQkJCQkJbF9iYl9iZWZvcmVfdihiX25vbnVsbCwg ImIuJWQuaXNudWxsLiVkIiwgb3BubywKQEAgLTI1MDUsNyArMjUwNSw3IEBAIGxsdm1fY29t cGlsZV9leHByKEV4cHJTdGF0ZSAqc3RhdGUpCiAJCQkJCXZfbnVsbHNwID0gbF9wdHJfY29u c3QobnVsbHMsIGxfcHRyKFR5cGVTdG9yYWdlQm9vbCkpOwogCiAJCQkJCS8qIGNyZWF0ZSBi bG9ja3MgZm9yIGNoZWNraW5nIGFyZ3MgKi8KLQkJCQkJYl9jaGVja251bGxzID0gcGFsbG9j KHNpemVvZihMTFZNQmFzaWNCbG9ja1JlZikgKiBuYXJncyk7CisJCQkJCWJfY2hlY2tudWxs cyA9IHBhbGxvY19hcnJheShMTFZNQmFzaWNCbG9ja1JlZiwgbmFyZ3MpOwogCQkJCQlmb3Ig KGludCBhcmdubyA9IDA7IGFyZ25vIDwgbmFyZ3M7IGFyZ25vKyspCiAJCQkJCXsKIAkJCQkJ CWJfY2hlY2tudWxsc1thcmdub10gPQpAQCAtMjk1Niw3ICsyOTU2LDcgQEAgbGx2bV9jb21w aWxlX2V4cHIoRXhwclN0YXRlICpzdGF0ZSkKIAkgKi8KIAl7CiAKLQkJQ29tcGlsZWRFeHBy U3RhdGUgKmNzdGF0ZSA9IHBhbGxvYzAoc2l6ZW9mKENvbXBpbGVkRXhwclN0YXRlKSk7CisJ CUNvbXBpbGVkRXhwclN0YXRlICpjc3RhdGUgPSBwYWxsb2MwX29iamVjdChDb21waWxlZEV4 cHJTdGF0ZSk7CiAKIAkJY3N0YXRlLT5jb250ZXh0ID0gY29udGV4dDsKIAkJY3N0YXRlLT5m dW5jbmFtZSA9IGZ1bmNuYW1lOwpAQCAtMzA2OCw3ICszMDY4LDcgQEAgYnVpbGRfRXZhbFhG dW5jSW50KExMVk1CdWlsZGVyUmVmIGIsIExMVk1Nb2R1bGVSZWYgbW9kLCBjb25zdCBjaGFy ICpmdW5jbmFtZSwKIAkJZWxvZyhFUlJPUiwgInBhcmFtZXRlciBtaXNtYXRjaDogJXMgZXhw ZWN0cyAlZCBwYXNzZWQgJWQiLAogCQkJIGZ1bmNuYW1lLCBMTFZNQ291bnRQYXJhbXModl9m biksIG5hcmdzICsgMik7CiAKLQlwYXJhbXMgPSBwYWxsb2Moc2l6ZW9mKExMVk1WYWx1ZVJl ZikgKiAoMiArIG5hcmdzKSk7CisJcGFyYW1zID0gcGFsbG9jX2FycmF5KExMVk1WYWx1ZVJl ZiwgKDIgKyBuYXJncykpOwogCiAJcGFyYW1zW2FyZ25vKytdID0gdl9zdGF0ZTsKIAlwYXJh bXNbYXJnbm8rK10gPSBsX3B0cl9jb25zdChvcCwgbF9wdHIoU3RydWN0RXhwckV2YWxTdGVw KSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9saWIvYmlwYXJ0aXRlX21hdGNoLmMgYi9z cmMvYmFja2VuZC9saWIvYmlwYXJ0aXRlX21hdGNoLmMKaW5kZXggNWFmNzg5NjUyYzcuLmVk NTRmMTkwNDk0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9saWIvYmlwYXJ0aXRlX21hdGNo LmMKKysrIGIvc3JjL2JhY2tlbmQvbGliL2JpcGFydGl0ZV9tYXRjaC5jCkBAIC0zOCw3ICsz OCw3IEBAIHN0YXRpYyBib29sIGhrX2RlcHRoX3NlYXJjaChCaXBhcnRpdGVNYXRjaFN0YXRl ICpzdGF0ZSwgaW50IHUpOwogQmlwYXJ0aXRlTWF0Y2hTdGF0ZSAqCiBCaXBhcnRpdGVNYXRj aChpbnQgdV9zaXplLCBpbnQgdl9zaXplLCBzaG9ydCAqKmFkamFjZW5jeSkKIHsKLQlCaXBh cnRpdGVNYXRjaFN0YXRlICpzdGF0ZSA9IHBhbGxvYyhzaXplb2YoQmlwYXJ0aXRlTWF0Y2hT dGF0ZSkpOworCUJpcGFydGl0ZU1hdGNoU3RhdGUgKnN0YXRlID0gcGFsbG9jX29iamVjdChC aXBhcnRpdGVNYXRjaFN0YXRlKTsKIAogCWlmICh1X3NpemUgPCAwIHx8IHVfc2l6ZSA+PSBT SFJUX01BWCB8fAogCQl2X3NpemUgPCAwIHx8IHZfc2l6ZSA+PSBTSFJUX01BWCkKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2xpYi9kc2hhc2guYyBiL3NyYy9iYWNrZW5kL2xpYi9kc2hh c2guYwppbmRleCBlMWJhMzY3Y2YxNy4uODJmNmFhOTY2ZGUgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2xpYi9kc2hhc2guYworKysgYi9zcmMvYmFja2VuZC9saWIvZHNoYXNoLmMKQEAg LTIxMSw3ICsyMTEsNyBAQCBkc2hhc2hfY3JlYXRlKGRzYV9hcmVhICphcmVhLCBjb25zdCBk c2hhc2hfcGFyYW1ldGVycyAqcGFyYW1zLCB2b2lkICphcmcpCiAJZHNhX3BvaW50ZXIgY29u dHJvbDsKIAogCS8qIEFsbG9jYXRlIHRoZSBiYWNrZW5kLWxvY2FsIG9iamVjdCByZXByZXNl bnRpbmcgdGhlIGhhc2ggdGFibGUuICovCi0JaGFzaF90YWJsZSA9IHBhbGxvYyhzaXplb2Yo ZHNoYXNoX3RhYmxlKSk7CisJaGFzaF90YWJsZSA9IHBhbGxvY19vYmplY3QoZHNoYXNoX3Rh YmxlKTsKIAogCS8qIEFsbG9jYXRlIHRoZSBjb250cm9sIG9iamVjdCBpbiBzaGFyZWQgbWVt b3J5LiAqLwogCWNvbnRyb2wgPSBkc2FfYWxsb2NhdGUoYXJlYSwgc2l6ZW9mKGRzaGFzaF90 YWJsZV9jb250cm9sKSk7CkBAIC0yNzYsNyArMjc2LDcgQEAgZHNoYXNoX2F0dGFjaChkc2Ff YXJlYSAqYXJlYSwgY29uc3QgZHNoYXNoX3BhcmFtZXRlcnMgKnBhcmFtcywKIAlkc2FfcG9p bnRlciBjb250cm9sOwogCiAJLyogQWxsb2NhdGUgdGhlIGJhY2tlbmQtbG9jYWwgb2JqZWN0 IHJlcHJlc2VudGluZyB0aGUgaGFzaCB0YWJsZS4gKi8KLQloYXNoX3RhYmxlID0gcGFsbG9j KHNpemVvZihkc2hhc2hfdGFibGUpKTsKKwloYXNoX3RhYmxlID0gcGFsbG9jX29iamVjdChk c2hhc2hfdGFibGUpOwogCiAJLyogRmluZCB0aGUgY29udHJvbCBvYmplY3QgaW4gc2hhcmVk IG1lbW9yeS4gKi8KIAljb250cm9sID0gaGFuZGxlOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvbGliL2ludGVnZXJzZXQuYyBiL3NyYy9iYWNrZW5kL2xpYi9pbnRlZ2Vyc2V0LmMKaW5k ZXggZjQxNTNiMGUxNWEuLmFjYTFkZjJhZDVhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9s aWIvaW50ZWdlcnNldC5jCisrKyBiL3NyYy9iYWNrZW5kL2xpYi9pbnRlZ2Vyc2V0LmMKQEAg LTI4NCw3ICsyODQsNyBAQCBpbnRzZXRfY3JlYXRlKHZvaWQpCiB7CiAJSW50ZWdlclNldCAq aW50c2V0OwogCi0JaW50c2V0ID0gKEludGVnZXJTZXQgKikgcGFsbG9jKHNpemVvZihJbnRl Z2VyU2V0KSk7CisJaW50c2V0ID0gcGFsbG9jX29iamVjdChJbnRlZ2VyU2V0KTsKIAlpbnRz ZXQtPmNvbnRleHQgPSBDdXJyZW50TWVtb3J5Q29udGV4dDsKIAlpbnRzZXQtPm1lbV91c2Vk ID0gR2V0TWVtb3J5Q2h1bmtTcGFjZShpbnRzZXQpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9saWIvcGFpcmluZ2hlYXAuYyBiL3NyYy9iYWNrZW5kL2xpYi9wYWlyaW5naGVhcC5j CmluZGV4IGZhODQzMWY3OTQ2Li4zNDk3ZGM3OTAyYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvbGliL3BhaXJpbmdoZWFwLmMKKysrIGIvc3JjL2JhY2tlbmQvbGliL3BhaXJpbmdoZWFw LmMKQEAgLTQzLDcgKzQzLDcgQEAgcGFpcmluZ2hlYXBfYWxsb2NhdGUocGFpcmluZ2hlYXBf Y29tcGFyYXRvciBjb21wYXJlLCB2b2lkICphcmcpCiB7CiAJcGFpcmluZ2hlYXAgKmhlYXA7 CiAKLQloZWFwID0gKHBhaXJpbmdoZWFwICopIHBhbGxvYyhzaXplb2YocGFpcmluZ2hlYXAp KTsKKwloZWFwID0gcGFsbG9jX29iamVjdChwYWlyaW5naGVhcCk7CiAJcGFpcmluZ2hlYXBf aW5pdGlhbGl6ZShoZWFwLCBjb21wYXJlLCBhcmcpOwogCiAJcmV0dXJuIGhlYXA7CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9saWIvcmJ0cmVlLmMgYi9zcmMvYmFja2VuZC9saWIvcmJ0 cmVlLmMKaW5kZXggMWYwNTUzZjkxNGQuLjhmZTZiZmM1MzlhIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9saWIvcmJ0cmVlLmMKKysrIGIvc3JjL2JhY2tlbmQvbGliL3JidHJlZS5jCkBA IC0xMDYsNyArMTA2LDcgQEAgcmJ0X2NyZWF0ZShTaXplIG5vZGVfc2l6ZSwKIAkJICAgcmJ0 X2ZyZWVmdW5jIGZyZWVmdW5jLAogCQkgICB2b2lkICphcmcpCiB7Ci0JUkJUcmVlCSAgICp0 cmVlID0gKFJCVHJlZSAqKSBwYWxsb2Moc2l6ZW9mKFJCVHJlZSkpOworCVJCVHJlZQkgICAq dHJlZSA9IHBhbGxvY19vYmplY3QoUkJUcmVlKTsKIAogCUFzc2VydChub2RlX3NpemUgPiBz aXplb2YoUkJUTm9kZSkpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9saWJwcS9hdXRo LW9hdXRoLmMgYi9zcmMvYmFja2VuZC9saWJwcS9hdXRoLW9hdXRoLmMKaW5kZXggMjdmN2Fm N2JlMDAuLjMyYTM3MGVkZTExIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9saWJwcS9hdXRo LW9hdXRoLmMKKysrIGIvc3JjL2JhY2tlbmQvbGlicHEvYXV0aC1vYXV0aC5jCkBAIC0xMDgs NyArMTA4LDcgQEAgb2F1dGhfaW5pdChQb3J0ICpwb3J0LCBjb25zdCBjaGFyICpzZWxlY3Rl ZF9tZWNoLCBjb25zdCBjaGFyICpzaGFkb3dfcGFzcykKIAkJCQllcnJjb2RlKEVSUkNPREVf UFJPVE9DT0xfVklPTEFUSU9OKSwKIAkJCQllcnJtc2coImNsaWVudCBzZWxlY3RlZCBhbiBp bnZhbGlkIFNBU0wgYXV0aGVudGljYXRpb24gbWVjaGFuaXNtIikpOwogCi0JY3R4ID0gcGFs bG9jMChzaXplb2YoKmN0eCkpOworCWN0eCA9IHBhbGxvYzBfb2JqZWN0KHN0cnVjdCBvYXV0 aF9jdHgpOwogCiAJY3R4LT5zdGF0ZSA9IE9BVVRIX1NUQVRFX0lOSVQ7CiAJY3R4LT5wb3J0 ID0gcG9ydDsKQEAgLTY1Niw3ICs2NTYsNyBAQCB2YWxpZGF0ZShQb3J0ICpwb3J0LCBjb25z dCBjaGFyICphdXRoKQogCQkJCWVycm1zZygidmFsaWRhdGlvbiBvZiBPQXV0aCB0b2tlbiBy ZXF1ZXN0ZWQgd2l0aG91dCBhIHZhbGlkYXRvciBsb2FkZWQiKSk7CiAKIAkvKiBDYWxsIHRo ZSB2YWxpZGF0aW9uIGZ1bmN0aW9uIGZyb20gdGhlIHZhbGlkYXRvciBtb2R1bGUgKi8KLQly ZXQgPSBwYWxsb2MwKHNpemVvZihWYWxpZGF0b3JNb2R1bGVSZXN1bHQpKTsKKwlyZXQgPSBw YWxsb2MwX29iamVjdChWYWxpZGF0b3JNb2R1bGVSZXN1bHQpOwogCWlmICghVmFsaWRhdG9y Q2FsbGJhY2tzLT52YWxpZGF0ZV9jYih2YWxpZGF0b3JfbW9kdWxlX3N0YXRlLCB0b2tlbiwK IAkJCQkJCQkJCQkgcG9ydC0+dXNlcl9uYW1lLCByZXQpKQogCXsKQEAgLTc4NSwxNCArNzg1 LDE0IEBAIGxvYWRfdmFsaWRhdG9yX2xpYnJhcnkoY29uc3QgY2hhciAqbGlibmFtZSkKIAkJ CQkJICAgIk9BdXRoIHZhbGlkYXRvciIsIGxpYm5hbWUsICJ2YWxpZGF0ZV9jYiIpKTsKIAog CS8qIEFsbG9jYXRlIG1lbW9yeSBmb3IgdmFsaWRhdG9yIGxpYnJhcnkgcHJpdmF0ZSBzdGF0 ZSBkYXRhICovCi0JdmFsaWRhdG9yX21vZHVsZV9zdGF0ZSA9IChWYWxpZGF0b3JNb2R1bGVT dGF0ZSAqKSBwYWxsb2MwKHNpemVvZihWYWxpZGF0b3JNb2R1bGVTdGF0ZSkpOworCXZhbGlk YXRvcl9tb2R1bGVfc3RhdGUgPSBwYWxsb2MwX29iamVjdChWYWxpZGF0b3JNb2R1bGVTdGF0 ZSk7CiAJdmFsaWRhdG9yX21vZHVsZV9zdGF0ZS0+c3ZlcnNpb24gPSBQR19WRVJTSU9OX05V TTsKIAogCWlmIChWYWxpZGF0b3JDYWxsYmFja3MtPnN0YXJ0dXBfY2IgIT0gTlVMTCkKIAkJ VmFsaWRhdG9yQ2FsbGJhY2tzLT5zdGFydHVwX2NiKHZhbGlkYXRvcl9tb2R1bGVfc3RhdGUp OwogCiAJLyogU2h1dCBkb3duIHRoZSBsaWJyYXJ5IGJlZm9yZSBjbGVhbmluZyB1cCBpdHMg c3RhdGUuICovCi0JbWNiID0gcGFsbG9jMChzaXplb2YoKm1jYikpOworCW1jYiA9IHBhbGxv YzBfb2JqZWN0KE1lbW9yeUNvbnRleHRDYWxsYmFjayk7CiAJbWNiLT5mdW5jID0gc2h1dGRv d25fdmFsaWRhdG9yX2xpYnJhcnk7CiAKIAlNZW1vcnlDb250ZXh0UmVnaXN0ZXJSZXNldENh bGxiYWNrKEN1cnJlbnRNZW1vcnlDb250ZXh0LCBtY2IpOwpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvbGlicHEvYXV0aC1zY3JhbS5jIGIvc3JjL2JhY2tlbmQvbGlicHEvYXV0aC1zY3Jh bS5jCmluZGV4IGRiNzc4NDA1NzI0Li41ZjA5NGVmYzQ2ZCAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvbGlicHEvYXV0aC1zY3JhbS5jCisrKyBiL3NyYy9iYWNrZW5kL2xpYnBxL2F1dGgt c2NyYW0uYwpAQCAtMjQyLDcgKzI0Miw3IEBAIHNjcmFtX2luaXQoUG9ydCAqcG9ydCwgY29u c3QgY2hhciAqc2VsZWN0ZWRfbWVjaCwgY29uc3QgY2hhciAqc2hhZG93X3Bhc3MpCiAJc2Ny YW1fc3RhdGUgKnN0YXRlOwogCWJvb2wJCWdvdF9zZWNyZXQ7CiAKLQlzdGF0ZSA9IChzY3Jh bV9zdGF0ZSAqKSBwYWxsb2MwKHNpemVvZihzY3JhbV9zdGF0ZSkpOworCXN0YXRlID0gcGFs bG9jMF9vYmplY3Qoc2NyYW1fc3RhdGUpOwogCXN0YXRlLT5wb3J0ID0gcG9ydDsKIAlzdGF0 ZS0+c3RhdGUgPSBTQ1JBTV9BVVRIX0lOSVQ7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2xpYnBxL2hiYS5jIGIvc3JjL2JhY2tlbmQvbGlicHEvaGJhLmMKaW5kZXggOTdhMzU4NjAw MGIuLjYxZTFlNmJhZmI0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9saWJwcS9oYmEuYwor KysgYi9zcmMvYmFja2VuZC9saWJwcS9oYmEuYwpAQCAtMzEyLDcgKzMxMiw3IEBAIHJlZ2Nv bXBfYXV0aF90b2tlbihBdXRoVG9rZW4gKnRva2VuLCBjaGFyICpmaWxlbmFtZSwgaW50IGxp bmVfbnVtLAogCWlmICh0b2tlbi0+c3RyaW5nWzBdICE9ICcvJykKIAkJcmV0dXJuIDA7CQkJ CS8qIG5vdGhpbmcgdG8gY29tcGlsZSAqLwogCi0JdG9rZW4tPnJlZ2V4ID0gKHJlZ2V4X3Qg KikgcGFsbG9jMChzaXplb2YocmVnZXhfdCkpOworCXRva2VuLT5yZWdleCA9IHBhbGxvYzBf b2JqZWN0KHJlZ2V4X3QpOwogCXdzdHIgPSBwYWxsb2MoKHN0cmxlbih0b2tlbi0+c3RyaW5n ICsgMSkgKyAxKSAqIHNpemVvZihwZ193Y2hhcikpOwogCXdsZW4gPSBwZ19tYjJ3Y2hhcl93 aXRoX2xlbih0b2tlbi0+c3RyaW5nICsgMSwKIAkJCQkJCQkJd3N0ciwgc3RybGVuKHRva2Vu LT5zdHJpbmcgKyAxKSk7CkBAIC04OTQsNyArODk0LDcgQEAgcHJvY2Vzc19saW5lOgogCQkg KiB0byB0aGlzIGxpc3QuCiAJCSAqLwogCQlvbGRjeHQgPSBNZW1vcnlDb250ZXh0U3dpdGNo VG8odG9rZW5pemVfY29udGV4dCk7Ci0JCXRva19saW5lID0gKFRva2VuaXplZEF1dGhMaW5l ICopIHBhbGxvYzAoc2l6ZW9mKFRva2VuaXplZEF1dGhMaW5lKSk7CisJCXRva19saW5lID0g cGFsbG9jMF9vYmplY3QoVG9rZW5pemVkQXV0aExpbmUpOwogCQl0b2tfbGluZS0+ZmllbGRz ID0gY3VycmVudF9saW5lOwogCQl0b2tfbGluZS0+ZmlsZV9uYW1lID0gcHN0cmR1cChmaWxl bmFtZSk7CiAJCXRva19saW5lLT5saW5lX251bSA9IGxpbmVfbnVtYmVyOwpAQCAtMTM0Miw3 ICsxMzQyLDcgQEAgcGFyc2VfaGJhX2xpbmUoVG9rZW5pemVkQXV0aExpbmUgKnRva19saW5l LCBpbnQgZWxldmVsKQogCUF1dGhUb2tlbiAgKnRva2VuOwogCUhiYUxpbmUgICAgKnBhcnNl ZGxpbmU7CiAKLQlwYXJzZWRsaW5lID0gcGFsbG9jMChzaXplb2YoSGJhTGluZSkpOworCXBh cnNlZGxpbmUgPSBwYWxsb2MwX29iamVjdChIYmFMaW5lKTsKIAlwYXJzZWRsaW5lLT5zb3Vy Y2VmaWxlID0gcHN0cmR1cChmaWxlX25hbWUpOwogCXBhcnNlZGxpbmUtPmxpbmVudW1iZXIg PSBsaW5lX251bTsKIAlwYXJzZWRsaW5lLT5yYXdsaW5lID0gcHN0cmR1cCh0b2tfbGluZS0+ cmF3X2xpbmUpOwpAQCAtMjYyNSw3ICsyNjI1LDcgQEAgY2hlY2tfaGJhKFBvcnQgKnBvcnQp CiAJfQogCiAJLyogSWYgbm8gbWF0Y2hpbmcgZW50cnkgd2FzIGZvdW5kLCB0aGVuIGltcGxp Y2l0bHkgcmVqZWN0LiAqLwotCWhiYSA9IHBhbGxvYzAoc2l6ZW9mKEhiYUxpbmUpKTsKKwlo YmEgPSBwYWxsb2MwX29iamVjdChIYmFMaW5lKTsKIAloYmEtPmF1dGhfbWV0aG9kID0gdWFJ bXBsaWNpdFJlamVjdDsKIAlwb3J0LT5oYmEgPSBoYmE7CiB9CkBAIC0yNzYxLDcgKzI3NjEs NyBAQCBwYXJzZV9pZGVudF9saW5lKFRva2VuaXplZEF1dGhMaW5lICp0b2tfbGluZSwgaW50 IGVsZXZlbCkKIAlBc3NlcnQodG9rX2xpbmUtPmZpZWxkcyAhPSBOSUwpOwogCWZpZWxkID0g bGlzdF9oZWFkKHRva19saW5lLT5maWVsZHMpOwogCi0JcGFyc2VkbGluZSA9IHBhbGxvYzAo c2l6ZW9mKElkZW50TGluZSkpOworCXBhcnNlZGxpbmUgPSBwYWxsb2MwX29iamVjdChJZGVu dExpbmUpOwogCXBhcnNlZGxpbmUtPmxpbmVudW1iZXIgPSBsaW5lX251bTsKIAogCS8qIEdl dCB0aGUgbWFwIHRva2VuIChtdXN0IGV4aXN0KSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvbGlicHEvcHFjb21tLmMgYi9zcmMvYmFja2VuZC9saWJwcS9wcWNvbW0uYwppbmRleCAy NWY3MzlhNmExNy4uODk5ZDhiZWY5ZGMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2xpYnBx L3BxY29tbS5jCisrKyBiL3NyYy9iYWNrZW5kL2xpYnBxL3BxY29tbS5jCkBAIC0xNzgsNyAr MTc4LDcgQEAgcHFfaW5pdChDbGllbnRTb2NrZXQgKmNsaWVudF9zb2NrKQogCWludAkJCWxh dGNoX3BvcyBQR19VU0VEX0ZPUl9BU1NFUlRTX09OTFk7CiAKIAkvKiBhbGxvY2F0ZSB0aGUg UG9ydCBzdHJ1Y3QgYW5kIGNvcHkgdGhlIENsaWVudFNvY2tldCBjb250ZW50cyB0byBpdCAq LwotCXBvcnQgPSBwYWxsb2MwKHNpemVvZihQb3J0KSk7CisJcG9ydCA9IHBhbGxvYzBfb2Jq ZWN0KFBvcnQpOwogCXBvcnQtPnNvY2sgPSBjbGllbnRfc29jay0+c29jazsKIAltZW1jcHko JnBvcnQtPnJhZGRyLmFkZHIsICZjbGllbnRfc29jay0+cmFkZHIuYWRkciwgY2xpZW50X3Nv Y2stPnJhZGRyLnNhbGVuKTsKIAlwb3J0LT5yYWRkci5zYWxlbiA9IGNsaWVudF9zb2NrLT5y YWRkci5zYWxlbjsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL25vZGVGdW5jcy5j IGIvc3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMKaW5kZXggZDIyODMxOGRjNzIuLjAy NGEyYjJmZDg0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVuY3MuYwor KysgYi9zcmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVuY3MuYwpAQCAtMjk1Myw3ICsyOTUzLDcg QEAgZXhwcmVzc2lvbl90cmVlX211dGF0b3JfaW1wbChOb2RlICpub2RlLAogCSAqLwogCiAj ZGVmaW5lIEZMQVRDT1BZKG5ld25vZGUsIG5vZGUsIG5vZGV0eXBlKSAgXAotCSggKG5ld25v ZGUpID0gKG5vZGV0eXBlICopIHBhbGxvYyhzaXplb2Yobm9kZXR5cGUpKSwgXAorCSggKG5l d25vZGUpID0gcGFsbG9jX29iamVjdChub2RldHlwZSksIFwKIAkgIG1lbWNweSgobmV3bm9k ZSksIChub2RlKSwgc2l6ZW9mKG5vZGV0eXBlKSkgKQogCiAjZGVmaW5lIE1VVEFURShuZXdm aWVsZCwgb2xkZmllbGQsIGZpZWxkdHlwZSkgIFwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L25vZGVzL3F1ZXJ5anVtYmxlZnVuY3MuYyBiL3NyYy9iYWNrZW5kL25vZGVzL3F1ZXJ5anVt YmxlZnVuY3MuYwppbmRleCAzMWY5NzE1MTk3Ny4uZmZjMjMwYWY0MjcgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL25vZGVzL3F1ZXJ5anVtYmxlZnVuY3MuYworKysgYi9zcmMvYmFja2Vu ZC9ub2Rlcy9xdWVyeWp1bWJsZWZ1bmNzLmMKQEAgLTE4MSw3ICsxODEsNyBAQCBJbml0SnVt YmxlKHZvaWQpCiB7CiAJSnVtYmxlU3RhdGUgKmpzdGF0ZTsKIAotCWpzdGF0ZSA9IChKdW1i bGVTdGF0ZSAqKSBwYWxsb2Moc2l6ZW9mKEp1bWJsZVN0YXRlKSk7CisJanN0YXRlID0gcGFs bG9jX29iamVjdChKdW1ibGVTdGF0ZSk7CiAKIAkvKiBTZXQgdXAgd29ya3NwYWNlIGZvciBx dWVyeSBqdW1ibGluZyAqLwogCWpzdGF0ZS0+anVtYmxlID0gKHVuc2lnbmVkIGNoYXIgKikg cGFsbG9jKEpVTUJMRV9TSVpFKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL3Rp ZGJpdG1hcC5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvdGlkYml0bWFwLmMKaW5kZXggMWY4M2Qw ZDU1ZjUuLmEyZmE5NjMxN2RiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy90aWRi aXRtYXAuYworKysgYi9zcmMvYmFja2VuZC9ub2Rlcy90aWRiaXRtYXAuYwpAQCAtNjgzLDcg KzY4Myw3IEBAIHRibV9iZWdpbl9wcml2YXRlX2l0ZXJhdGUoVElEQml0bWFwICp0Ym0pCiAJ ICogQ3JlYXRlIHRoZSBUQk1Qcml2YXRlSXRlcmF0b3Igc3RydWN0LCB3aXRoIGVub3VnaCB0 cmFpbGluZyBzcGFjZSB0bwogCSAqIHNlcnZlIHRoZSBuZWVkcyBvZiB0aGUgVEJNSXRlcmF0 ZVJlc3VsdCBzdWItc3RydWN0LgogCSAqLwotCWl0ZXJhdG9yID0gKFRCTVByaXZhdGVJdGVy YXRvciAqKSBwYWxsb2Moc2l6ZW9mKFRCTVByaXZhdGVJdGVyYXRvcikpOworCWl0ZXJhdG9y ID0gcGFsbG9jX29iamVjdChUQk1Qcml2YXRlSXRlcmF0b3IpOwogCWl0ZXJhdG9yLT50Ym0g PSB0Ym07CiAKIAkvKgpAQCAtMTQ2OCw3ICsxNDY4LDcgQEAgdGJtX2F0dGFjaF9zaGFyZWRf aXRlcmF0ZShkc2FfYXJlYSAqZHNhLCBkc2FfcG9pbnRlciBkcCkKIAkgKiBDcmVhdGUgdGhl IFRCTVNoYXJlZEl0ZXJhdG9yIHN0cnVjdCwgd2l0aCBlbm91Z2ggdHJhaWxpbmcgc3BhY2Ug dG8KIAkgKiBzZXJ2ZSB0aGUgbmVlZHMgb2YgdGhlIFRCTUl0ZXJhdGVSZXN1bHQgc3ViLXN0 cnVjdC4KIAkgKi8KLQlpdGVyYXRvciA9IChUQk1TaGFyZWRJdGVyYXRvciAqKSBwYWxsb2Mw KHNpemVvZihUQk1TaGFyZWRJdGVyYXRvcikpOworCWl0ZXJhdG9yID0gcGFsbG9jMF9vYmpl Y3QoVEJNU2hhcmVkSXRlcmF0b3IpOwogCiAJaXN0YXRlID0gKFRCTVNoYXJlZEl0ZXJhdG9y U3RhdGUgKikgZHNhX2dldF9hZGRyZXNzKGRzYSwgZHApOwogCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9vcHRpbWl6ZXIvZ2Vxby9nZXFvX2VyeC5jIGIvc3JjL2JhY2tlbmQvb3B0aW1p emVyL2dlcW8vZ2Vxb19lcnguYwppbmRleCBhZjI4OWY3ZWViNy4uZjExYTU5ZTRhMjggMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9nZXFvL2dlcW9fZXJ4LmMKKysrIGIv c3JjL2JhY2tlbmQvb3B0aW1pemVyL2dlcW8vZ2Vxb19lcnguYwpAQCAtNjIsNyArNjIsNyBA QCBhbGxvY19lZGdlX3RhYmxlKFBsYW5uZXJJbmZvICpyb290LCBpbnQgbnVtX2dlbmUpCiAJ ICogZGlyZWN0bHk7IDAgd2lsbCBub3QgYmUgdXNlZAogCSAqLwogCi0JZWRnZV90YWJsZSA9 IChFZGdlICopIHBhbGxvYygobnVtX2dlbmUgKyAxKSAqIHNpemVvZihFZGdlKSk7CisJZWRn ZV90YWJsZSA9IHBhbGxvY19hcnJheShFZGdlLCBudW1fZ2VuZSArIDEpOwogCiAJcmV0dXJu IGVkZ2VfdGFibGU7CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvZ2Vx by9nZXFvX2V2YWwuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9nZXFvL2dlcW9fZXZhbC5j CmluZGV4IDgwMDU3NTRjOGM2Li5jNjVhMzFkMDY3OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvb3B0aW1pemVyL2dlcW8vZ2Vxb19ldmFsLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1p emVyL2dlcW8vZ2Vxb19ldmFsLmMKQEAgLTE5MSw3ICsxOTEsNyBAQCBnaW1tZV90cmVlKFBs YW5uZXJJbmZvICpyb290LCBHZW5lICp0b3VyLCBpbnQgbnVtX2dlbmUpCiAJCQkJCQkJCQkJ ICBjdXJfcmVsX2luZGV4IC0gMSk7CiAKIAkJLyogTWFrZSBpdCBpbnRvIGEgc2luZ2xlLXJl bCBjbHVtcCAqLwotCQljdXJfY2x1bXAgPSAoQ2x1bXAgKikgcGFsbG9jKHNpemVvZihDbHVt cCkpOworCQljdXJfY2x1bXAgPSBwYWxsb2Nfb2JqZWN0KENsdW1wKTsKIAkJY3VyX2NsdW1w LT5qb2lucmVsID0gY3VyX3JlbDsKIAkJY3VyX2NsdW1wLT5zaXplID0gMTsKIApkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL2dlcW8vZ2Vxb19wbXguYyBiL3NyYy9iYWNr ZW5kL29wdGltaXplci9nZXFvL2dlcW9fcG14LmMKaW5kZXggMDFkNTU3MTE5MjUuLmFmMWNi ODY4MzkxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvZ2Vxby9nZXFvX3Bt eC5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9nZXFvL2dlcW9fcG14LmMKQEAgLTQ4 LDEwICs0OCwxMCBAQAogdm9pZAogcG14KFBsYW5uZXJJbmZvICpyb290LCBHZW5lICp0b3Vy MSwgR2VuZSAqdG91cjIsIEdlbmUgKm9mZnNwcmluZywgaW50IG51bV9nZW5lKQogewotCWlu dAkJICAgKmZhaWxlZCA9IChpbnQgKikgcGFsbG9jKChudW1fZ2VuZSArIDEpICogc2l6ZW9m KGludCkpOwotCWludAkJICAgKmZyb20gPSAoaW50ICopIHBhbGxvYygobnVtX2dlbmUgKyAx KSAqIHNpemVvZihpbnQpKTsKLQlpbnQJCSAgICppbmR4ID0gKGludCAqKSBwYWxsb2MoKG51 bV9nZW5lICsgMSkgKiBzaXplb2YoaW50KSk7Ci0JaW50CQkgICAqY2hlY2tfbGlzdCA9IChp bnQgKikgcGFsbG9jKChudW1fZ2VuZSArIDEpICogc2l6ZW9mKGludCkpOworCWludAkJICAg KmZhaWxlZCA9IHBhbGxvY19hcnJheShpbnQsIG51bV9nZW5lICsgMSk7CisJaW50CQkgICAq ZnJvbSA9IHBhbGxvY19hcnJheShpbnQsIG51bV9nZW5lICsgMSk7CisJaW50CQkgICAqaW5k eCA9IHBhbGxvY19hcnJheShpbnQsIG51bV9nZW5lICsgMSk7CisJaW50CQkgICAqY2hlY2tf bGlzdCA9IHBhbGxvY19hcnJheShpbnQsIG51bV9nZW5lICsgMSk7CiAKIAlpbnQJCQlsZWZ0 LAogCQkJCXJpZ2h0LApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL2dlcW8v Z2Vxb19wb29sLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvZ2Vxby9nZXFvX3Bvb2wuYwpp bmRleCBiNmRlMGQ5M2YyOC4uZWNiMTc1MTRiNjIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L29wdGltaXplci9nZXFvL2dlcW9fcG9vbC5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXpl ci9nZXFvL2dlcW9fcG9vbC5jCkBAIC00NiwxNyArNDYsMTcgQEAgYWxsb2NfcG9vbChQbGFu bmVySW5mbyAqcm9vdCwgaW50IHBvb2xfc2l6ZSwgaW50IHN0cmluZ19sZW5ndGgpCiAJaW50 CQkJaTsKIAogCS8qIHBvb2wgKi8KLQluZXdfcG9vbCA9IChQb29sICopIHBhbGxvYyhzaXpl b2YoUG9vbCkpOworCW5ld19wb29sID0gcGFsbG9jX29iamVjdChQb29sKTsKIAluZXdfcG9v bC0+c2l6ZSA9IChpbnQpIHBvb2xfc2l6ZTsKIAluZXdfcG9vbC0+c3RyaW5nX2xlbmd0aCA9 IChpbnQpIHN0cmluZ19sZW5ndGg7CiAKIAkvKiBhbGwgY2hyb21vc29tZSAqLwotCW5ld19w b29sLT5kYXRhID0gKENocm9tb3NvbWUgKikgcGFsbG9jKHBvb2xfc2l6ZSAqIHNpemVvZihD aHJvbW9zb21lKSk7CisJbmV3X3Bvb2wtPmRhdGEgPSBwYWxsb2NfYXJyYXkoQ2hyb21vc29t ZSwgcG9vbF9zaXplKTsKIAogCS8qIGFsbCBnZW5lICovCiAJY2hyb21vID0gKENocm9tb3Nv bWUgKikgbmV3X3Bvb2wtPmRhdGE7IC8qIHZlY3RvciBvZiBhbGwgY2hyb21vcyAqLwogCWZv ciAoaSA9IDA7IGkgPCBwb29sX3NpemU7IGkrKykKLQkJY2hyb21vW2ldLnN0cmluZyA9IHBh bGxvYygoc3RyaW5nX2xlbmd0aCArIDEpICogc2l6ZW9mKEdlbmUpKTsKKwkJY2hyb21vW2ld LnN0cmluZyA9IHBhbGxvY19hcnJheShHZW5lLCBzdHJpbmdfbGVuZ3RoICsgMSk7CiAKIAly ZXR1cm4gbmV3X3Bvb2w7CiB9CkBAIC0xNjMsOCArMTYzLDggQEAgYWxsb2NfY2hyb21vKFBs YW5uZXJJbmZvICpyb290LCBpbnQgc3RyaW5nX2xlbmd0aCkKIHsKIAlDaHJvbW9zb21lICpj aHJvbW87CiAKLQljaHJvbW8gPSAoQ2hyb21vc29tZSAqKSBwYWxsb2Moc2l6ZW9mKENocm9t b3NvbWUpKTsKLQljaHJvbW8tPnN0cmluZyA9IChHZW5lICopIHBhbGxvYygoc3RyaW5nX2xl bmd0aCArIDEpICogc2l6ZW9mKEdlbmUpKTsKKwljaHJvbW8gPSBwYWxsb2Nfb2JqZWN0KENo cm9tb3NvbWUpOworCWNocm9tby0+c3RyaW5nID0gcGFsbG9jX2FycmF5KEdlbmUsIHN0cmlu Z19sZW5ndGggKyAxKTsKIAogCXJldHVybiBjaHJvbW87CiB9CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9vcHRpbWl6ZXIvZ2Vxby9nZXFvX3JlY29tYmluYXRpb24uYyBiL3NyYy9iYWNr ZW5kL29wdGltaXplci9nZXFvL2dlcW9fcmVjb21iaW5hdGlvbi5jCmluZGV4IGE1ZDNlNDdh ZDExLi40MWQzNWMxNzllMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL2dl cW8vZ2Vxb19yZWNvbWJpbmF0aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL2dl cW8vZ2Vxb19yZWNvbWJpbmF0aW9uLmMKQEAgLTc0LDcgKzc0LDcgQEAgYWxsb2NfY2l0eV90 YWJsZShQbGFubmVySW5mbyAqcm9vdCwgaW50IG51bV9nZW5lKQogCSAqIHBhbGxvYyBvbmUg ZXh0cmEgbG9jYXRpb24gc28gdGhhdCBub2RlcyBudW1iZXJlZCAxLi5uIGNhbiBiZSBpbmRl eGVkCiAJICogZGlyZWN0bHk7IDAgd2lsbCBub3QgYmUgdXNlZAogCSAqLwotCWNpdHlfdGFi bGUgPSAoQ2l0eSAqKSBwYWxsb2MoKG51bV9nZW5lICsgMSkgKiBzaXplb2YoQ2l0eSkpOwor CWNpdHlfdGFibGUgPSBwYWxsb2NfYXJyYXkoQ2l0eSwgbnVtX2dlbmUgKyAxKTsKIAogCXJl dHVybiBjaXR5X3RhYmxlOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVy L3BhdGgvY2xhdXNlc2VsLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9jbGF1c2Vz ZWwuYwppbmRleCBkMGY1MTZiNzY0NS4uZWI5YjdmM2VhYmQgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL29wdGltaXplci9wYXRoL2NsYXVzZXNlbC5jCisrKyBiL3NyYy9iYWNrZW5kL29w dGltaXplci9wYXRoL2NsYXVzZXNlbC5jCkBAIC00OTUsNyArNDk1LDcgQEAgYWRkUmFuZ2VD bGF1c2UoUmFuZ2VRdWVyeUNsYXVzZSAqKnJxbGlzdCwgTm9kZSAqY2xhdXNlLAogCX0KIAog CS8qIE5vIG1hdGNoaW5nIHZhciBmb3VuZCwgc28gbWFrZSBhIG5ldyBjbGF1c2UtcGFpciBk YXRhIHN0cnVjdHVyZSAqLwotCXJxZWxlbSA9IChSYW5nZVF1ZXJ5Q2xhdXNlICopIHBhbGxv YyhzaXplb2YoUmFuZ2VRdWVyeUNsYXVzZSkpOworCXJxZWxlbSA9IHBhbGxvY19vYmplY3Qo UmFuZ2VRdWVyeUNsYXVzZSk7CiAJcnFlbGVtLT52YXIgPSB2YXI7CiAJaWYgKGlzX2xvYm91 bmQpCiAJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvY29zdHNp emUuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2Nvc3RzaXplLmMKaW5kZXggODMz NWNmNWI1YzUuLjZmMjI4YzYwYmI0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6 ZXIvcGF0aC9jb3N0c2l6ZS5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2Nv c3RzaXplLmMKQEAgLTIxNjMsNyArMjE2Myw3IEBAIGFwcGVuZF9ub25wYXJ0aWFsX2Nvc3Qo TGlzdCAqc3VicGF0aHMsIGludCBudW1wYXRocywgaW50IHBhcmFsbGVsX3dvcmtlcnMpCiAJ ICogd2hpY2hldmVyIGlzIGxlc3MuCiAJICovCiAJYXJybGVuID0gTWluKHBhcmFsbGVsX3dv cmtlcnMsIG51bXBhdGhzKTsKLQljb3N0YXJyID0gKENvc3QgKikgcGFsbG9jKHNpemVvZihD b3N0KSAqIGFycmxlbik7CisJY29zdGFyciA9IHBhbGxvY19hcnJheShDb3N0LCBhcnJsZW4p OwogCiAJLyogVGhlIGZpcnN0IGZldyBwYXRocyB3aWxsIGVhY2ggYmUgY2xhaW1lZCBieSBh IGRpZmZlcmVudCB3b3JrZXIuICovCiAJcGF0aF9pbmRleCA9IDA7CkBAIC00MTIxLDcgKzQx MjEsNyBAQCBjYWNoZWRfc2NhbnNlbChQbGFubmVySW5mbyAqcm9vdCwgUmVzdHJpY3RJbmZv ICpyaW5mbywgUGF0aEtleSAqcGF0aGtleSkKIAkvKiBDYWNoZSB0aGUgcmVzdWx0IGluIHN1 aXRhYmx5IGxvbmctbGl2ZWQgd29ya3NwYWNlICovCiAJb2xkY29udGV4dCA9IE1lbW9yeUNv bnRleHRTd2l0Y2hUbyhyb290LT5wbGFubmVyX2N4dCk7CiAKLQljYWNoZSA9IChNZXJnZVNj YW5TZWxDYWNoZSAqKSBwYWxsb2Moc2l6ZW9mKE1lcmdlU2NhblNlbENhY2hlKSk7CisJY2Fj aGUgPSBwYWxsb2Nfb2JqZWN0KE1lcmdlU2NhblNlbENhY2hlKTsKIAljYWNoZS0+b3BmYW1p bHkgPSBwYXRoa2V5LT5wa19vcGZhbWlseTsKIAljYWNoZS0+Y29sbGF0aW9uID0gcGF0aGtl eS0+cGtfZWNsYXNzLT5lY19jb2xsYXRpb247CiAJY2FjaGUtPmNtcHR5cGUgPSBwYXRoa2V5 LT5wa19jbXB0eXBlOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgv aW5keHBhdGguYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2luZHhwYXRoLmMKaW5k ZXggYzYyZTNmODc3MjQuLjBjYjBjZTM1MTI4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9v cHRpbWl6ZXIvcGF0aC9pbmR4cGF0aC5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9w YXRoL2luZHhwYXRoLmMKQEAgLTEyOTEsNyArMTI5MSw3IEBAIGdyb3VwX3NpbWlsYXJfb3Jf YXJncyhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVsLCBSZXN0cmljdEluZm8g KnJpbmZvKQogCSAqIHdoaWNoIHdpbGwgYmUgdXNlZCB0byBzb3J0IHRoZXNlIGFyZ3VtZW50 cyBhdCB0aGUgbmV4dCBzdGVwLgogCSAqLwogCWkgPSAtMTsKLQltYXRjaGVzID0gKE9yQXJn SW5kZXhNYXRjaCAqKSBwYWxsb2Moc2l6ZW9mKE9yQXJnSW5kZXhNYXRjaCkgKiBuKTsKKwlt YXRjaGVzID0gcGFsbG9jX2FycmF5KE9yQXJnSW5kZXhNYXRjaCwgbik7CiAJZm9yZWFjaChs Yywgb3JhcmdzKQogCXsKIAkJTm9kZQkgICAqYXJnID0gbGZpcnN0KGxjKTsKQEAgLTE4NTMs OCArMTg1Myw3IEBAIGNob29zZV9iaXRtYXBfYW5kKFBsYW5uZXJJbmZvICpyb290LCBSZWxP cHRJbmZvICpyZWwsIExpc3QgKnBhdGhzKQogCSAqIHNhbWUgc2V0IG9mIGNsYXVzZXM7IGtl ZXAgb25seSB0aGUgY2hlYXBlc3QtdG8tc2NhbiBvZiBhbnkgc3VjaCBncm91cHMuCiAJICog VGhlIHN1cnZpdmluZyBwYXRocyBhcmUgcHV0IGludG8gYW4gYXJyYXkgZm9yIHFzb3J0J2lu Zy4KIAkgKi8KLQlwYXRoaW5mb2FycmF5ID0gKFBhdGhDbGF1c2VVc2FnZSAqKikKLQkJcGFs bG9jKG5wYXRocyAqIHNpemVvZihQYXRoQ2xhdXNlVXNhZ2UgKikpOworCXBhdGhpbmZvYXJy YXkgPSBwYWxsb2NfYXJyYXkoUGF0aENsYXVzZVVzYWdlICosIG5wYXRocyk7CiAJY2xhdXNl bGlzdCA9IE5JTDsKIAlucGF0aHMgPSAwOwogCWZvcmVhY2gobCwgcGF0aHMpCkBAIC0yMDkw LDcgKzIwODksNyBAQCBjbGFzc2lmeV9pbmRleF9jbGF1c2VfdXNhZ2UoUGF0aCAqcGF0aCwg TGlzdCAqKmNsYXVzZWxpc3QpCiAJQml0bWFwc2V0ICAqY2xhdXNlaWRzOwogCUxpc3RDZWxs ICAgKmxjOwogCi0JcmVzdWx0ID0gKFBhdGhDbGF1c2VVc2FnZSAqKSBwYWxsb2Moc2l6ZW9m KFBhdGhDbGF1c2VVc2FnZSkpOworCXJlc3VsdCA9IHBhbGxvY19vYmplY3QoUGF0aENsYXVz ZVVzYWdlKTsKIAlyZXN1bHQtPnBhdGggPSBwYXRoOwogCiAJLyogUmVjdXJzaXZlbHkgZmlu ZCB0aGUgcXVhbHMgYW5kIHByZWRzIHVzZWQgYnkgdGhlIHBhdGggKi8KZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2pvaW5yZWxzLmMgYi9zcmMvYmFja2VuZC9v cHRpbWl6ZXIvcGF0aC9qb2lucmVscy5jCmluZGV4IDVkMWZjMzg5OWRhLi44ODI3YjlhNTI0 NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvam9pbnJlbHMuYwor KysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9qb2lucmVscy5jCkBAIC0xOTkwLDgg KzE5OTAsNyBAQCBjb21wdXRlX3BhcnRpdGlvbl9ib3VuZHMoUGxhbm5lckluZm8gKnJvb3Qs IFJlbE9wdEluZm8gKnJlbDEsCiAJCUFzc2VydChucGFydHMgPiAwKTsKIAkJam9pbnJlbC0+ Ym91bmRpbmZvID0gYm91bmRpbmZvOwogCQlqb2lucmVsLT5ucGFydHMgPSBucGFydHM7Ci0J CWpvaW5yZWwtPnBhcnRfcmVscyA9Ci0JCQkoUmVsT3B0SW5mbyAqKikgcGFsbG9jMChzaXpl b2YoUmVsT3B0SW5mbyAqKSAqIG5wYXJ0cyk7CisJCWpvaW5yZWwtPnBhcnRfcmVscyA9IHBh bGxvYzBfYXJyYXkoUmVsT3B0SW5mbyAqLCBucGFydHMpOwogCX0KIAllbHNlCiAJewpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vYW5hbHl6ZWpvaW5zLmMgYi9z cmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9hbmFseXplam9pbnMuYwppbmRleCBlNTkyZTFh YzNkMS4uYTZhZjYxZjkyOWMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9w bGFuL2FuYWx5emVqb2lucy5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2Fu YWx5emVqb2lucy5jCkBAIC0yMzU4LDggKzIzNTgsNyBAQCByZW1vdmVfc2VsZl9qb2luc19y ZWN1cnNlKFBsYW5uZXJJbmZvICpyb290LCBMaXN0ICpqb2lubGlzdCwgUmVsaWRzIHRvUmVt b3ZlKQogCSAqIEluIG9yZGVyIHRvIGZpbmQgcmVsYXRpb25zIHdpdGggdGhlIHNhbWUgb2lk IHdlIGZpcnN0IGJ1aWxkIGFuIGFycmF5IG9mCiAJICogY2FuZGlkYXRlcyBhbmQgdGhlbiBz b3J0IGl0IGJ5IG9pZC4KIAkgKi8KLQljYW5kaWRhdGVzID0gKFNlbGZKb2luQ2FuZGlkYXRl ICopIHBhbGxvYyhzaXplb2YoU2VsZkpvaW5DYW5kaWRhdGUpICoKLQkJCQkJCQkJCQkJICBu dW1SZWxzKTsKKwljYW5kaWRhdGVzID0gcGFsbG9jX2FycmF5KFNlbGZKb2luQ2FuZGlkYXRl LCBudW1SZWxzKTsKIAlpID0gLTE7CiAJaiA9IDA7CiAJd2hpbGUgKChpID0gYm1zX25leHRf bWVtYmVyKHJlbGlkcywgaSkpID49IDApCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRp bWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9j cmVhdGVwbGFuLmMKaW5kZXggOGFmMDkxYmE2NDcuLmJjNDE3ZjkzODQwIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMKKysrIGIvc3JjL2Jh Y2tlbmQvb3B0aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5jCkBAIC0yMjA3LDcgKzIyMDcsNyBA QCByZW1hcF9ncm91cENvbElkeChQbGFubmVySW5mbyAqcm9vdCwgTGlzdCAqZ3JvdXBDbGF1 c2UpCiAKIAlBc3NlcnQoZ3JvdXBpbmdfbWFwKTsKIAotCW5ld19ncnBDb2xJZHggPSBwYWxs b2MwKHNpemVvZihBdHRyTnVtYmVyKSAqIGxpc3RfbGVuZ3RoKGdyb3VwQ2xhdXNlKSk7CisJ bmV3X2dycENvbElkeCA9IHBhbGxvYzBfYXJyYXkoQXR0ck51bWJlciwgbGlzdF9sZW5ndGgo Z3JvdXBDbGF1c2UpKTsKIAogCWkgPSAwOwogCWZvcmVhY2gobGMsIGdyb3VwQ2xhdXNlKQpA QCAtMjQ5Niw5ICsyNDk2LDkgQEAgY3JlYXRlX3dpbmRvd2FnZ19wbGFuKFBsYW5uZXJJbmZv ICpyb290LCBXaW5kb3dBZ2dQYXRoICpiZXN0X3BhdGgpCiAJICogQ29udmVydCBTb3J0R3Jv dXBDbGF1c2UgbGlzdHMgaW50byBhcnJheXMgb2YgYXR0ciBpbmRleGVzIGFuZCBlcXVhbGl0 eQogCSAqIG9wZXJhdG9ycywgYXMgd2FudGVkIGJ5IGV4ZWN1dG9yLgogCSAqLwotCXBhcnRD b2xJZHggPSAoQXR0ck51bWJlciAqKSBwYWxsb2Moc2l6ZW9mKEF0dHJOdW1iZXIpICogbnVt UGFydCk7Ci0JcGFydE9wZXJhdG9ycyA9IChPaWQgKikgcGFsbG9jKHNpemVvZihPaWQpICog bnVtUGFydCk7Ci0JcGFydENvbGxhdGlvbnMgPSAoT2lkICopIHBhbGxvYyhzaXplb2YoT2lk KSAqIG51bVBhcnQpOworCXBhcnRDb2xJZHggPSBwYWxsb2NfYXJyYXkoQXR0ck51bWJlciwg bnVtUGFydCk7CisJcGFydE9wZXJhdG9ycyA9IHBhbGxvY19hcnJheShPaWQsIG51bVBhcnQp OworCXBhcnRDb2xsYXRpb25zID0gcGFsbG9jX2FycmF5KE9pZCwgbnVtUGFydCk7CiAKIAlw YXJ0TnVtQ29scyA9IDA7CiAJZm9yZWFjaChsYywgd2MtPnBhcnRpdGlvbkNsYXVzZSkKQEAg LTI1MTMsOSArMjUxMyw5IEBAIGNyZWF0ZV93aW5kb3dhZ2dfcGxhbihQbGFubmVySW5mbyAq cm9vdCwgV2luZG93QWdnUGF0aCAqYmVzdF9wYXRoKQogCQlwYXJ0TnVtQ29scysrOwogCX0K IAotCW9yZENvbElkeCA9IChBdHRyTnVtYmVyICopIHBhbGxvYyhzaXplb2YoQXR0ck51bWJl cikgKiBudW1PcmRlcik7Ci0Jb3JkT3BlcmF0b3JzID0gKE9pZCAqKSBwYWxsb2Moc2l6ZW9m KE9pZCkgKiBudW1PcmRlcik7Ci0Jb3JkQ29sbGF0aW9ucyA9IChPaWQgKikgcGFsbG9jKHNp emVvZihPaWQpICogbnVtT3JkZXIpOworCW9yZENvbElkeCA9IHBhbGxvY19hcnJheShBdHRy TnVtYmVyLCBudW1PcmRlcik7CisJb3JkT3BlcmF0b3JzID0gcGFsbG9jX2FycmF5KE9pZCwg bnVtT3JkZXIpOworCW9yZENvbGxhdGlvbnMgPSBwYWxsb2NfYXJyYXkoT2lkLCBudW1PcmRl cik7CiAKIAlvcmROdW1Db2xzID0gMDsKIAlmb3JlYWNoKGxjLCB3Yy0+b3JkZXJDbGF1c2Up CkBAIC01ODYyLDkgKzU4NjIsOSBAQCBtYWtlX3JlY3Vyc2l2ZV91bmlvbihMaXN0ICp0bGlz dCwKIAkJT2lkCQkgICAqZHVwQ29sbGF0aW9uczsKIAkJTGlzdENlbGwgICAqc2xpdGVtOwog Ci0JCWR1cENvbElkeCA9IChBdHRyTnVtYmVyICopIHBhbGxvYyhzaXplb2YoQXR0ck51bWJl cikgKiBudW1Db2xzKTsKLQkJZHVwT3BlcmF0b3JzID0gKE9pZCAqKSBwYWxsb2Moc2l6ZW9m KE9pZCkgKiBudW1Db2xzKTsKLQkJZHVwQ29sbGF0aW9ucyA9IChPaWQgKikgcGFsbG9jKHNp emVvZihPaWQpICogbnVtQ29scyk7CisJCWR1cENvbElkeCA9IHBhbGxvY19hcnJheShBdHRy TnVtYmVyLCBudW1Db2xzKTsKKwkJZHVwT3BlcmF0b3JzID0gcGFsbG9jX2FycmF5KE9pZCwg bnVtQ29scyk7CisJCWR1cENvbGxhdGlvbnMgPSBwYWxsb2NfYXJyYXkoT2lkLCBudW1Db2xz KTsKIAogCQlmb3JlYWNoKHNsaXRlbSwgZGlzdGluY3RMaXN0KQogCQl7CkBAIC02Njk0LDkg KzY2OTQsOSBAQCBtYWtlX3VuaXF1ZV9mcm9tX3BhdGhrZXlzKFBsYW4gKmxlZnR0cmVlLCBM aXN0ICpwYXRoa2V5cywgaW50IG51bUNvbHMsCiAJICogcHJlcGFyZV9zb3J0X2Zyb21fcGF0 aGtleXMgLi4uIG1heWJlIHVuaWZ5IHNvbWV0aW1lPwogCSAqLwogCUFzc2VydChudW1Db2xz ID49IDAgJiYgbnVtQ29scyA8PSBsaXN0X2xlbmd0aChwYXRoa2V5cykpOwotCXVuaXFDb2xJ ZHggPSAoQXR0ck51bWJlciAqKSBwYWxsb2Moc2l6ZW9mKEF0dHJOdW1iZXIpICogbnVtQ29s cyk7Ci0JdW5pcU9wZXJhdG9ycyA9IChPaWQgKikgcGFsbG9jKHNpemVvZihPaWQpICogbnVt Q29scyk7Ci0JdW5pcUNvbGxhdGlvbnMgPSAoT2lkICopIHBhbGxvYyhzaXplb2YoT2lkKSAq IG51bUNvbHMpOworCXVuaXFDb2xJZHggPSBwYWxsb2NfYXJyYXkoQXR0ck51bWJlciwgbnVt Q29scyk7CisJdW5pcU9wZXJhdG9ycyA9IHBhbGxvY19hcnJheShPaWQsIG51bUNvbHMpOwor CXVuaXFDb2xsYXRpb25zID0gcGFsbG9jX2FycmF5KE9pZCwgbnVtQ29scyk7CiAKIAlmb3Jl YWNoKGxjLCBwYXRoa2V5cykKIAl7CkBAIC02ODMxLDEwICs2ODMxLDEwIEBAIG1ha2Vfc2V0 b3AoU2V0T3BDbWQgY21kLCBTZXRPcFN0cmF0ZWd5IHN0cmF0ZWd5LAogCSAqIGNvbnZlcnQg U29ydEdyb3VwQ2xhdXNlIGxpc3QgaW50byBhcnJheXMgb2YgYXR0ciBpbmRleGVzIGFuZCBj b21wYXJpc29uCiAJICogb3BlcmF0b3JzLCBhcyB3YW50ZWQgYnkgZXhlY3V0b3IKIAkgKi8K LQljbXBDb2xJZHggPSAoQXR0ck51bWJlciAqKSBwYWxsb2Moc2l6ZW9mKEF0dHJOdW1iZXIp ICogbnVtQ29scyk7Ci0JY21wT3BlcmF0b3JzID0gKE9pZCAqKSBwYWxsb2Moc2l6ZW9mKE9p ZCkgKiBudW1Db2xzKTsKLQljbXBDb2xsYXRpb25zID0gKE9pZCAqKSBwYWxsb2Moc2l6ZW9m KE9pZCkgKiBudW1Db2xzKTsKLQljbXBOdWxsc0ZpcnN0ID0gKGJvb2wgKikgcGFsbG9jKHNp emVvZihib29sKSAqIG51bUNvbHMpOworCWNtcENvbElkeCA9IHBhbGxvY19hcnJheShBdHRy TnVtYmVyLCBudW1Db2xzKTsKKwljbXBPcGVyYXRvcnMgPSBwYWxsb2NfYXJyYXkoT2lkLCBu dW1Db2xzKTsKKwljbXBDb2xsYXRpb25zID0gcGFsbG9jX2FycmF5KE9pZCwgbnVtQ29scyk7 CisJY21wTnVsbHNGaXJzdCA9IHBhbGxvY19hcnJheShib29sLCBudW1Db2xzKTsKIAogCWZv cmVhY2goc2xpdGVtLCBncm91cExpc3QpCiAJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv b3B0aW1pemVyL3BsYW4vaW5pdHNwbGFuLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxh bi9pbml0c3BsYW4uYwppbmRleCA2NWQ0NzNkOTViNi4uMWQ4NTlhYjFhMWMgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2luaXRzcGxhbi5jCisrKyBiL3NyYy9i YWNrZW5kL29wdGltaXplci9wbGFuL2luaXRzcGxhbi5jCkBAIC00MzgsOCArNDM4LDcgQEAg cmVtb3ZlX3VzZWxlc3NfZ3JvdXBieV9jb2x1bW5zKFBsYW5uZXJJbmZvICpyb290KQogCSAq IEZpbGwgZ3JvdXBieWF0dG5vc1trXSB3aXRoIGEgYml0bWFwc2V0IG9mIHRoZSBjb2x1bW4g YXR0bm9zIG9mIFJURSBrCiAJICogdGhhdCBhcmUgR1JPVVAgQlkgaXRlbXMuCiAJICovCi0J Z3JvdXBieWF0dG5vcyA9IChCaXRtYXBzZXQgKiopIHBhbGxvYzAoc2l6ZW9mKEJpdG1hcHNl dCAqKSAqCi0JCQkJCQkJCQkJICAgKGxpc3RfbGVuZ3RoKHBhcnNlLT5ydGFibGUpICsgMSkp OworCWdyb3VwYnlhdHRub3MgPSBwYWxsb2MwX2FycmF5KEJpdG1hcHNldCAqLCBsaXN0X2xl bmd0aChwYXJzZS0+cnRhYmxlKSArIDEpOwogCWZvcmVhY2gobGMsIHJvb3QtPnByb2Nlc3Nl ZF9ncm91cENsYXVzZSkKIAl7CiAJCVNvcnRHcm91cENsYXVzZSAqc2djID0gbGZpcnN0X25v ZGUoU29ydEdyb3VwQ2xhdXNlLCBsYyk7CkBAIC01OTcsOCArNTk2LDcgQEAgcmVtb3ZlX3Vz ZWxlc3NfZ3JvdXBieV9jb2x1bW5zKFBsYW5uZXJJbmZvICpyb290KQogCQkJICogYWxsb2Nh dGUgdGhlIHN1cnBsdXN2YXJzW10gYXJyYXkgdW50aWwgd2UgZmluZCBzb21ldGhpbmcuCiAJ CQkgKi8KIAkJCWlmIChzdXJwbHVzdmFycyA9PSBOVUxMKQotCQkJCXN1cnBsdXN2YXJzID0g KEJpdG1hcHNldCAqKikgcGFsbG9jMChzaXplb2YoQml0bWFwc2V0ICopICoKLQkJCQkJCQkJ CQkJCQkgKGxpc3RfbGVuZ3RoKHBhcnNlLT5ydGFibGUpICsgMSkpOworCQkJCXN1cnBsdXN2 YXJzID0gcGFsbG9jMF9hcnJheShCaXRtYXBzZXQgKiwgbGlzdF9sZW5ndGgocGFyc2UtPnJ0 YWJsZSkgKyAxKTsKIAogCQkJLyogUmVtZW1iZXIgdGhlIGF0dG5vcyBvZiB0aGUgcmVtb3Zh YmxlIGNvbHVtbnMgKi8KIAkJCXN1cnBsdXN2YXJzW3JlbGlkXSA9IGJtc19kaWZmZXJlbmNl KHJlbGF0dG5vcywgYmVzdF9rZXljb2x1bW5zKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L29wdGltaXplci9wbGFuL3BsYW5hZ2cuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFu L3BsYW5hZ2cuYwppbmRleCBhMmFjNThkMjQ2ZS4uMWEzNWMyNjllMDQgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5hZ2cuYworKysgYi9zcmMvYmFja2Vu ZC9vcHRpbWl6ZXIvcGxhbi9wbGFuYWdnLmMKQEAgLTMzNiw3ICszMzYsNyBAQCBidWlsZF9t aW5tYXhfcGF0aChQbGFubmVySW5mbyAqcm9vdCwgTWluTWF4QWdnSW5mbyAqbW1pbmZvLAog CSAqIHRoYW4gYmVmb3JlLiAgKFRoaXMgbWVhbnMgdGhhdCB3aGVuIHdlIGFyZSBkb25lLCB0 aGVyZSB3aWxsIGJlIG5vIFZhcnMKIAkgKiBvZiBsZXZlbCAxLCB3aGljaCBpcyB3aHkgdGhl IHN1YnF1ZXJ5IGNhbiBiZWNvbWUgYW4gaW5pdHBsYW4uKQogCSAqLwotCXN1YnJvb3QgPSAo UGxhbm5lckluZm8gKikgcGFsbG9jKHNpemVvZihQbGFubmVySW5mbykpOworCXN1YnJvb3Qg PSBwYWxsb2Nfb2JqZWN0KFBsYW5uZXJJbmZvKTsKIAltZW1jcHkoc3Vicm9vdCwgcm9vdCwg c2l6ZW9mKFBsYW5uZXJJbmZvKSk7CiAJc3Vicm9vdC0+cXVlcnlfbGV2ZWwrKzsKIAlzdWJy b290LT5wYXJlbnRfcm9vdCA9IHJvb3Q7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRp bWl6ZXIvcGxhbi9wbGFubmVyLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFu bmVyLmMKaW5kZXggYzRmZDY0NmI5OTkuLjk1ZTRjNDJlZWEzIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0 aW1pemVyL3BsYW4vcGxhbm5lci5jCkBAIC0yMjEzLDcgKzIyMTMsNyBAQCBwcmVwcm9jZXNz X2dyb3VwaW5nX3NldHMoUGxhbm5lckluZm8gKnJvb3QpCiAJTGlzdAkgICAqc2V0czsKIAlp bnQJCQltYXhyZWYgPSAwOwogCUxpc3RDZWxsICAgKmxjX3NldDsKLQlncm91cGluZ19zZXRz X2RhdGEgKmdkID0gcGFsbG9jMChzaXplb2YoZ3JvdXBpbmdfc2V0c19kYXRhKSk7CisJZ3Jv dXBpbmdfc2V0c19kYXRhICpnZCA9IHBhbGxvYzBfb2JqZWN0KGdyb3VwaW5nX3NldHNfZGF0 YSk7CiAKIAkvKgogCSAqIFdlIGRvbid0IGN1cnJlbnRseSBtYWtlIGFueSBhdHRlbXB0IHRv IG9wdGltaXplIHRoZSBncm91cENsYXVzZSB3aGVuCkBAIC01OTc3LDggKzU5NzcsNyBAQCBz ZWxlY3RfYWN0aXZlX3dpbmRvd3MoUGxhbm5lckluZm8gKnJvb3QsIFdpbmRvd0Z1bmNMaXN0 cyAqd2ZsaXN0cykKIAlMaXN0CSAgICpyZXN1bHQgPSBOSUw7CiAJTGlzdENlbGwgICAqbGM7 CiAJaW50CQkJbkFjdGl2ZSA9IDA7Ci0JV2luZG93Q2xhdXNlU29ydERhdGEgKmFjdGl2ZXMg PSBwYWxsb2Moc2l6ZW9mKFdpbmRvd0NsYXVzZVNvcnREYXRhKQotCQkJCQkJCQkJCSAgICog bGlzdF9sZW5ndGgod2luZG93Q2xhdXNlKSk7CisJV2luZG93Q2xhdXNlU29ydERhdGEgKmFj dGl2ZXMgPSBwYWxsb2NfYXJyYXkoV2luZG93Q2xhdXNlU29ydERhdGEsIGxpc3RfbGVuZ3Ro KHdpbmRvd0NsYXVzZSkpOwogCiAJLyogRmlyc3QsIGNvbnN0cnVjdCBhbiBhcnJheSBvZiB0 aGUgYWN0aXZlIHdpbmRvd3MgKi8KIAlmb3JlYWNoKGxjLCB3aW5kb3dDbGF1c2UpCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMgYi9zcmMvYmFj a2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMKaW5kZXggY2NkYzliYzI2NGEuLmNkN2Vh MWU2YjU4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZz LmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jCkBAIC0zMTIs NyArMzEyLDcgQEAgc2V0X3BsYW5fcmVmZXJlbmNlcyhQbGFubmVySW5mbyAqcm9vdCwgUGxh biAqcGxhbikKIAkJCSAgIHJvb3QtPnNpbXBsZV9ydGVfYXJyYXlbcmMtPnJ0aV0gIT0gTlVM TCk7CiAKIAkJLyogZmxhdCBjb3B5IGlzIGVub3VnaCBzaW5jZSBhbGwgZmllbGRzIGFyZSBz Y2FsYXJzICovCi0JCW5ld3JjID0gKFBsYW5Sb3dNYXJrICopIHBhbGxvYyhzaXplb2YoUGxh blJvd01hcmspKTsKKwkJbmV3cmMgPSBwYWxsb2Nfb2JqZWN0KFBsYW5Sb3dNYXJrKTsKIAkJ bWVtY3B5KG5ld3JjLCByYywgc2l6ZW9mKFBsYW5Sb3dNYXJrKSk7CiAKIAkJLyogYWRqdXN0 IGluZGV4ZXMgLi4uIGJ1dCAqbm90KiB0aGUgcm93bWFya0lkICovCkBAIC01NDUsNyArNTQ1 LDcgQEAgYWRkX3J0ZV90b19mbGF0X3J0YWJsZShQbGFubmVyR2xvYmFsICpnbG9iLCBMaXN0 ICpydGVwZXJtaW5mb3MsCiAJUmFuZ2VUYmxFbnRyeSAqbmV3cnRlOwogCiAJLyogZmxhdCBj b3B5IHRvIGR1cGxpY2F0ZSBhbGwgdGhlIHNjYWxhciBmaWVsZHMgKi8KLQluZXdydGUgPSAo UmFuZ2VUYmxFbnRyeSAqKSBwYWxsb2Moc2l6ZW9mKFJhbmdlVGJsRW50cnkpKTsKKwluZXdy dGUgPSBwYWxsb2Nfb2JqZWN0KFJhbmdlVGJsRW50cnkpOwogCW1lbWNweShuZXdydGUsIHJ0 ZSwgc2l6ZW9mKFJhbmdlVGJsRW50cnkpKTsKIAogCS8qIHphcCB1bm5lZWRlZCBzdWItc3Ry dWN0dXJlICovCkBAIC0yMDI4LDcgKzIwMjgsNyBAQCBvZmZzZXRfcmVsaWRfc2V0KFJlbGlk cyByZWxpZHMsIGludCBydG9mZnNldCkKIHN0YXRpYyBpbmxpbmUgVmFyICoKIGNvcHlWYXIo VmFyICp2YXIpCiB7Ci0JVmFyCQkgICAqbmV3dmFyID0gKFZhciAqKSBwYWxsb2Moc2l6ZW9m KFZhcikpOworCVZhcgkJICAgKm5ld3ZhciA9IHBhbGxvY19vYmplY3QoVmFyKTsKIAogCSpu ZXd2YXIgPSAqdmFyOwogCXJldHVybiBuZXd2YXI7CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9vcHRpbWl6ZXIvcHJlcC9wcmVwam9pbnRyZWUuYyBiL3NyYy9iYWNrZW5kL29wdGltaXpl ci9wcmVwL3ByZXBqb2ludHJlZS5jCmluZGV4IDc1ODE2OTU2NDdkLi5jM2I3MjZlOTNlNyAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3ByZXAvcHJlcGpvaW50cmVlLmMK KysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3ByZXAvcHJlcGpvaW50cmVlLmMKQEAgLTc0 MSw3ICs3NDEsNyBAQCBwdWxsX3VwX3N1YmxpbmtzX2pvaW50cmVlX3JlY3Vyc2UoUGxhbm5l ckluZm8gKnJvb3QsIE5vZGUgKmp0bm9kZSwKIAkJICogTWFrZSBhIG1vZGlmaWFibGUgY29w eSBvZiBqb2luIG5vZGUsIGJ1dCBkb24ndCBib3RoZXIgY29weWluZyBpdHMKIAkJICogc3Vi bm9kZXMgKHlldCkuCiAJCSAqLwotCQlqID0gKEpvaW5FeHByICopIHBhbGxvYyhzaXplb2Yo Sm9pbkV4cHIpKTsKKwkJaiA9IHBhbGxvY19vYmplY3QoSm9pbkV4cHIpOwogCQltZW1jcHko aiwganRub2RlLCBzaXplb2YoSm9pbkV4cHIpKTsKIAkJanRsaW5rID0gKE5vZGUgKikgajsK IApAQCAtMzI0MCw4ICszMjQwLDcgQEAgcmVkdWNlX291dGVyX2pvaW5zX3Bhc3MxKE5vZGUg Kmp0bm9kZSkKIHsKIAlyZWR1Y2Vfb3V0ZXJfam9pbnNfcGFzczFfc3RhdGUgKnJlc3VsdDsK IAotCXJlc3VsdCA9IChyZWR1Y2Vfb3V0ZXJfam9pbnNfcGFzczFfc3RhdGUgKikKLQkJcGFs bG9jKHNpemVvZihyZWR1Y2Vfb3V0ZXJfam9pbnNfcGFzczFfc3RhdGUpKTsKKwlyZXN1bHQg PSBwYWxsb2Nfb2JqZWN0KHJlZHVjZV9vdXRlcl9qb2luc19wYXNzMV9zdGF0ZSk7CiAJcmVz dWx0LT5yZWxpZHMgPSBOVUxMOwogCXJlc3VsdC0+Y29udGFpbnNfb3V0ZXIgPSBmYWxzZTsK IAlyZXN1bHQtPnN1Yl9zdGF0ZXMgPSBOSUw7CkBAIC0zNTkzLDcgKzM1OTIsNyBAQCByZXBv cnRfcmVkdWNlZF9mdWxsX2pvaW4ocmVkdWNlX291dGVyX2pvaW5zX3Bhc3MyX3N0YXRlICpz dGF0ZTIsCiB7CiAJcmVkdWNlX291dGVyX2pvaW5zX3BhcnRpYWxfc3RhdGUgKnN0YXRlcDsK IAotCXN0YXRlcCA9IHBhbGxvYyhzaXplb2YocmVkdWNlX291dGVyX2pvaW5zX3BhcnRpYWxf c3RhdGUpKTsKKwlzdGF0ZXAgPSBwYWxsb2Nfb2JqZWN0KHJlZHVjZV9vdXRlcl9qb2luc19w YXJ0aWFsX3N0YXRlKTsKIAlzdGF0ZXAtPmZ1bGxfam9pbl9ydGkgPSBydGluZGV4OwogCXN0 YXRlcC0+dW5yZWR1Y2VkX3NpZGUgPSByZWxpZHM7CiAJc3RhdGUyLT5wYXJ0aWFsX3JlZHVj ZWQgPSBsYXBwZW5kKHN0YXRlMi0+cGFydGlhbF9yZWR1Y2VkLCBzdGF0ZXApOwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3ByZXAvcHJlcHVuaW9uLmMgYi9zcmMvYmFj a2VuZC9vcHRpbWl6ZXIvcHJlcC9wcmVwdW5pb24uYwppbmRleCBmNTI4ZjA5NmE1Ni4uYTAx YjAyZjNhN2IgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wcmVwL3ByZXB1 bmlvbi5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wcmVwL3ByZXB1bmlvbi5jCkBA IC0xNjI5LDcgKzE2MjksNyBAQCBnZW5lcmF0ZV9hcHBlbmRfdGxpc3QoTGlzdCAqY29sVHlw ZXMsIExpc3QgKmNvbENvbGxhdGlvbnMsCiAJICogSWYgdGhlIGlucHV0cyBhbGwgYWdyZWUg b24gdHlwZSBhbmQgdHlwbW9kIG9mIGEgcGFydGljdWxhciBjb2x1bW4sIHVzZQogCSAqIHRo YXQgdHlwbW9kOyBlbHNlIHVzZSAtMS4KIAkgKi8KLQljb2xUeXBtb2RzID0gKGludDMyICop IHBhbGxvYyhsaXN0X2xlbmd0aChjb2xUeXBlcykgKiBzaXplb2YoaW50MzIpKTsKKwljb2xU eXBtb2RzID0gcGFsbG9jX2FycmF5KGludDMyLCBsaXN0X2xlbmd0aChjb2xUeXBlcykpOwog CiAJZm9yZWFjaCh0bGlzdGwsIGlucHV0X3RsaXN0cykKIAl7CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9hcHBlbmRpbmZvLmMgYi9zcmMvYmFja2VuZC9vcHRp bWl6ZXIvdXRpbC9hcHBlbmRpbmZvLmMKaW5kZXggNjliOGIwYzJhZTAuLjI3MWJiNGU2ODI4 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9hcHBlbmRpbmZvLmMK KysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvYXBwZW5kaW5mby5jCkBAIC04MDgs OCArODA4LDcgQEAgZmluZF9hcHBpbmZvc19ieV9yZWxpZHMoUGxhbm5lckluZm8gKnJvb3Qs IFJlbGlkcyByZWxpZHMsIGludCAqbmFwcGluZm9zKQogCWludAkJCWk7CiAKIAkvKiBBbGxv Y2F0ZSBhbiBhcnJheSB0aGF0J3MgY2VydGFpbmx5IGJpZyBlbm91Z2ggKi8KLQlhcHBpbmZv cyA9IChBcHBlbmRSZWxJbmZvICoqKQotCQlwYWxsb2Moc2l6ZW9mKEFwcGVuZFJlbEluZm8g KikgKiBibXNfbnVtX21lbWJlcnMocmVsaWRzKSk7CisJYXBwaW5mb3MgPSBwYWxsb2NfYXJy YXkoQXBwZW5kUmVsSW5mbyAqLCBibXNfbnVtX21lbWJlcnMocmVsaWRzKSk7CiAKIAlpID0g LTE7CiAJd2hpbGUgKChpID0gYm1zX25leHRfbWVtYmVyKHJlbGlkcywgaSkpID49IDApCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9jbGF1c2VzLmMgYi9zcmMv YmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9jbGF1c2VzLmMKaW5kZXggMjAyYmE4ZWQ0YmIuLjQz Y2ZhMTk3ZTZjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9jbGF1 c2VzLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvY2xhdXNlcy5jCkBAIC0y MzcsNyArMjM3LDcgQEAgY29udGFpbl93aW5kb3dfZnVuY3Rpb24oTm9kZSAqY2xhdXNlKQog V2luZG93RnVuY0xpc3RzICoKIGZpbmRfd2luZG93X2Z1bmN0aW9ucyhOb2RlICpjbGF1c2Us IEluZGV4IG1heFdpblJlZikKIHsKLQlXaW5kb3dGdW5jTGlzdHMgKmxpc3RzID0gcGFsbG9j KHNpemVvZihXaW5kb3dGdW5jTGlzdHMpKTsKKwlXaW5kb3dGdW5jTGlzdHMgKmxpc3RzID0g cGFsbG9jX29iamVjdChXaW5kb3dGdW5jTGlzdHMpOwogCiAJbGlzdHMtPm51bVdpbmRvd0Z1 bmNzID0gMDsKIAlsaXN0cy0+bWF4V2luUmVmID0gbWF4V2luUmVmOwpAQCAtNTY2OSw4ICs1 NjY5LDggQEAgbWFrZV9TQU9QX2V4cHIoT2lkIG9wZXIsIE5vZGUgKmxlZnRleHByLCBPaWQg Y29sdHlwZSwgT2lkIGFycmF5Y29sbGlkLAogCiAJCWdldF90eXBsZW5ieXZhbGFsaWduKGNv bHR5cGUsICZ0eXBsZW4sICZ0eXBieXZhbCwgJnR5cGFsaWduKTsKIAotCQllbGVtcyA9IChE YXR1bSAqKSBwYWxsb2Moc2l6ZW9mKERhdHVtKSAqIGxpc3RfbGVuZ3RoKGV4cHJzKSk7Ci0J CW51bGxzID0gKGJvb2wgKikgcGFsbG9jKHNpemVvZihib29sKSAqIGxpc3RfbGVuZ3RoKGV4 cHJzKSk7CisJCWVsZW1zID0gcGFsbG9jX2FycmF5KERhdHVtLCBsaXN0X2xlbmd0aChleHBy cykpOworCQludWxscyA9IHBhbGxvY19hcnJheShib29sLCBsaXN0X2xlbmd0aChleHBycykp OwogCQlmb3JlYWNoX25vZGUoQ29uc3QsIHZhbHVlLCBleHBycykKIAkJewogCQkJZWxlbXNb aV0gPSB2YWx1ZS0+Y29uc3R2YWx1ZTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGlt aXplci91dGlsL2V4dGVuZHBsYW4uYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL2V4 dGVuZHBsYW4uYwppbmRleCAwM2QzMjI3N2JhMS4uNGUyZjhkNGRhZGEgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL2V4dGVuZHBsYW4uYworKysgYi9zcmMvYmFj a2VuZC9vcHRpbWl6ZXIvdXRpbC9leHRlbmRwbGFuLmMKQEAgLTk4LDEwICs5OCw3IEBAIFNl dFBsYW5uZXJHbG9iYWxFeHRlbnNpb25TdGF0ZShQbGFubmVyR2xvYmFsICpnbG9iLCBpbnQg ZXh0ZW5zaW9uX2lkLAogCQlpbnQJCQlpOwogCiAJCWkgPSBwZ19uZXh0cG93ZXIyXzMyKGV4 dGVuc2lvbl9pZCArIDEpOwotCQlnbG9iLT5leHRlbnNpb25fc3RhdGUgPSAodm9pZCAqKikK LQkJCXJlcGFsbG9jMChnbG9iLT5leHRlbnNpb25fc3RhdGUsCi0JCQkJCSAgZ2xvYi0+ZXh0 ZW5zaW9uX3N0YXRlX2FsbG9jYXRlZCAqIHNpemVvZih2b2lkICopLAotCQkJCQkgIGkgKiBz aXplb2Yodm9pZCAqKSk7CisJCWdsb2ItPmV4dGVuc2lvbl9zdGF0ZSA9IHJlcGFsbG9jMF9h cnJheShnbG9iLT5leHRlbnNpb25fc3RhdGUsIHZvaWQgKiwgZ2xvYi0+ZXh0ZW5zaW9uX3N0 YXRlX2FsbG9jYXRlZCwgaSk7CiAJCWdsb2ItPmV4dGVuc2lvbl9zdGF0ZV9hbGxvY2F0ZWQg PSBpOwogCX0KIApAQCAtMTM0LDEwICsxMzEsNyBAQCBTZXRQbGFubmVySW5mb0V4dGVuc2lv blN0YXRlKFBsYW5uZXJJbmZvICpyb290LCBpbnQgZXh0ZW5zaW9uX2lkLAogCQlpbnQJCQlp OwogCiAJCWkgPSBwZ19uZXh0cG93ZXIyXzMyKGV4dGVuc2lvbl9pZCArIDEpOwotCQlyb290 LT5leHRlbnNpb25fc3RhdGUgPSAodm9pZCAqKikKLQkJCXJlcGFsbG9jMChyb290LT5leHRl bnNpb25fc3RhdGUsCi0JCQkJCSAgcm9vdC0+ZXh0ZW5zaW9uX3N0YXRlX2FsbG9jYXRlZCAq IHNpemVvZih2b2lkICopLAotCQkJCQkgIGkgKiBzaXplb2Yodm9pZCAqKSk7CisJCXJvb3Qt PmV4dGVuc2lvbl9zdGF0ZSA9IHJlcGFsbG9jMF9hcnJheShyb290LT5leHRlbnNpb25fc3Rh dGUsIHZvaWQgKiwgcm9vdC0+ZXh0ZW5zaW9uX3N0YXRlX2FsbG9jYXRlZCwgaSk7CiAJCXJv b3QtPmV4dGVuc2lvbl9zdGF0ZV9hbGxvY2F0ZWQgPSBpOwogCX0KIApAQCAtMTcyLDEwICsx NjYsNyBAQCBTZXRSZWxPcHRJbmZvRXh0ZW5zaW9uU3RhdGUoUmVsT3B0SW5mbyAqcmVsLCBp bnQgZXh0ZW5zaW9uX2lkLAogCQlpbnQJCQlpOwogCiAJCWkgPSBwZ19uZXh0cG93ZXIyXzMy KGV4dGVuc2lvbl9pZCArIDEpOwotCQlyZWwtPmV4dGVuc2lvbl9zdGF0ZSA9ICh2b2lkICoq KQotCQkJcmVwYWxsb2MwKHJlbC0+ZXh0ZW5zaW9uX3N0YXRlLAotCQkJCQkgIHJlbC0+ZXh0 ZW5zaW9uX3N0YXRlX2FsbG9jYXRlZCAqIHNpemVvZih2b2lkICopLAotCQkJCQkgIGkgKiBz aXplb2Yodm9pZCAqKSk7CisJCXJlbC0+ZXh0ZW5zaW9uX3N0YXRlID0gcmVwYWxsb2MwX2Fy cmF5KHJlbC0+ZXh0ZW5zaW9uX3N0YXRlLCB2b2lkICosIHJlbC0+ZXh0ZW5zaW9uX3N0YXRl X2FsbG9jYXRlZCwgaSk7CiAJCXJlbC0+ZXh0ZW5zaW9uX3N0YXRlX2FsbG9jYXRlZCA9IGk7 CiAJfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wbGFuY2F0 LmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wbGFuY2F0LmMKaW5kZXggN2FmOWEy MDY0ZTMuLjBjNWE3MzJkNmIzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIv dXRpbC9wbGFuY2F0LmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcGxhbmNh dC5jCkBAIC0yNzksMTEgKzI3OSwxMSBAQCBnZXRfcmVsYXRpb25faW5mbyhQbGFubmVySW5m byAqcm9vdCwgT2lkIHJlbGF0aW9uT2JqZWN0SWQsIGJvb2wgaW5ocGFyZW50LAogCQkJaW5m by0+bmNvbHVtbnMgPSBuY29sdW1ucyA9IGluZGV4LT5pbmRuYXR0czsKIAkJCWluZm8tPm5r ZXljb2x1bW5zID0gbmtleWNvbHVtbnMgPSBpbmRleC0+aW5kbmtleWF0dHM7CiAKLQkJCWlu Zm8tPmluZGV4a2V5cyA9IChpbnQgKikgcGFsbG9jKHNpemVvZihpbnQpICogbmNvbHVtbnMp OwotCQkJaW5mby0+aW5kZXhjb2xsYXRpb25zID0gKE9pZCAqKSBwYWxsb2Moc2l6ZW9mKE9p ZCkgKiBua2V5Y29sdW1ucyk7Ci0JCQlpbmZvLT5vcGZhbWlseSA9IChPaWQgKikgcGFsbG9j KHNpemVvZihPaWQpICogbmtleWNvbHVtbnMpOwotCQkJaW5mby0+b3BjaW50eXBlID0gKE9p ZCAqKSBwYWxsb2Moc2l6ZW9mKE9pZCkgKiBua2V5Y29sdW1ucyk7Ci0JCQlpbmZvLT5jYW5y ZXR1cm4gPSAoYm9vbCAqKSBwYWxsb2Moc2l6ZW9mKGJvb2wpICogbmNvbHVtbnMpOworCQkJ aW5mby0+aW5kZXhrZXlzID0gcGFsbG9jX2FycmF5KGludCwgbmNvbHVtbnMpOworCQkJaW5m by0+aW5kZXhjb2xsYXRpb25zID0gcGFsbG9jX2FycmF5KE9pZCwgbmtleWNvbHVtbnMpOwor CQkJaW5mby0+b3BmYW1pbHkgPSBwYWxsb2NfYXJyYXkoT2lkLCBua2V5Y29sdW1ucyk7CisJ CQlpbmZvLT5vcGNpbnR5cGUgPSBwYWxsb2NfYXJyYXkoT2lkLCBua2V5Y29sdW1ucyk7CisJ CQlpbmZvLT5jYW5yZXR1cm4gPSBwYWxsb2NfYXJyYXkoYm9vbCwgbmNvbHVtbnMpOwogCiAJ CQlmb3IgKGkgPSAwOyBpIDwgbmNvbHVtbnM7IGkrKykKIAkJCXsKQEAgLTMzNiw4ICszMzYs OCBAQCBnZXRfcmVsYXRpb25faW5mbyhQbGFubmVySW5mbyAqcm9vdCwgT2lkIHJlbGF0aW9u T2JqZWN0SWQsIGJvb2wgaW5ocGFyZW50LAogCQkJCQlBc3NlcnQoYW1yb3V0aW5lLT5hbWNh bm9yZGVyKTsKIAogCQkJCQlpbmZvLT5zb3J0b3BmYW1pbHkgPSBpbmZvLT5vcGZhbWlseTsK LQkJCQkJaW5mby0+cmV2ZXJzZV9zb3J0ID0gKGJvb2wgKikgcGFsbG9jKHNpemVvZihib29s KSAqIG5rZXljb2x1bW5zKTsKLQkJCQkJaW5mby0+bnVsbHNfZmlyc3QgPSAoYm9vbCAqKSBw YWxsb2Moc2l6ZW9mKGJvb2wpICogbmtleWNvbHVtbnMpOworCQkJCQlpbmZvLT5yZXZlcnNl X3NvcnQgPSBwYWxsb2NfYXJyYXkoYm9vbCwgbmtleWNvbHVtbnMpOworCQkJCQlpbmZvLT5u dWxsc19maXJzdCA9IHBhbGxvY19hcnJheShib29sLCBua2V5Y29sdW1ucyk7CiAKIAkJCQkJ Zm9yIChpID0gMDsgaSA8IG5rZXljb2x1bW5zOyBpKyspCiAJCQkJCXsKQEAgLTM1NiwxMyAr MzU2LDEzIEBAIGdldF9yZWxhdGlvbl9pbmZvKFBsYW5uZXJJbmZvICpyb290LCBPaWQgcmVs YXRpb25PYmplY3RJZCwgYm9vbCBpbmhwYXJlbnQsCiAJCQkJCSAqIG9yZGVyLCB0aGlzIGlz IGEgc3VmZmljaWVudCB0ZXN0LgogCQkJCQkgKgogCQkJCQkgKiBYWFggVGhpcyBtZXRob2Qg aXMgcmF0aGVyIHNsb3cgYW5kIGNvbXBsaWNhdGVkLiAgSXQnZAotCQkJCQkgKiBiZSBiZXR0 ZXIgdG8gaGF2ZSBhIHdheSB0byBleHBsaWNpdGx5IGRlY2xhcmUgdGhlCi0JCQkJCSAqIGNv cnJlc3BvbmRpbmcgYnRyZWUgb3BmYW1pbHkgZm9yIGVhY2ggb3BmYW1pbHkgb2YgdGhlCi0J CQkJCSAqIG90aGVyIGluZGV4IHR5cGUuCisJCQkJCSogYmUgYmV0dGVyIHRvIGhhdmUgYSB3 YXkgdG8gZXhwbGljaXRseSBkZWNsYXJlIHRoZQorCQkJCQkqIGNvcnJlc3BvbmRpbmcgYnRy ZWUgb3BmYW1pbHkgZm9yIGVhY2ggb3BmYW1pbHkgb2YgdGhlCisJCQkJCSogb3RoZXIgaW5k ZXggdHlwZS4KIAkJCQkJICovCi0JCQkJCWluZm8tPnNvcnRvcGZhbWlseSA9IChPaWQgKikg cGFsbG9jKHNpemVvZihPaWQpICogbmtleWNvbHVtbnMpOwotCQkJCQlpbmZvLT5yZXZlcnNl X3NvcnQgPSAoYm9vbCAqKSBwYWxsb2Moc2l6ZW9mKGJvb2wpICogbmtleWNvbHVtbnMpOwot CQkJCQlpbmZvLT5udWxsc19maXJzdCA9IChib29sICopIHBhbGxvYyhzaXplb2YoYm9vbCkg KiBua2V5Y29sdW1ucyk7CisJCQkJCWluZm8tPnNvcnRvcGZhbWlseSA9IHBhbGxvY19hcnJh eShPaWQsIG5rZXljb2x1bW5zKTsKKwkJCQkJaW5mby0+cmV2ZXJzZV9zb3J0ID0gcGFsbG9j X2FycmF5KGJvb2wsIG5rZXljb2x1bW5zKTsKKwkJCQkJaW5mby0+bnVsbHNfZmlyc3QgPSBw YWxsb2NfYXJyYXkoYm9vbCwgbmtleWNvbHVtbnMpOwogCiAJCQkJCWZvciAoaSA9IDA7IGkg PCBua2V5Y29sdW1uczsgaSsrKQogCQkJCQl7CkBAIC0yNjQ5LDMyICsyNjQ5LDMxIEBAIGZp bmRfcGFydGl0aW9uX3NjaGVtZShQbGFubmVySW5mbyAqcm9vdCwgUmVsYXRpb24gcmVsYXRp b24pCiAJICogYXJyYXkgc2luY2UgdGhlIHJlbGNhY2hlIGVudHJ5IG1heSBub3Qgc3Vydml2 ZSBhZnRlciB3ZSBoYXZlIGNsb3NlZCB0aGUKIAkgKiByZWxhdGlvbi4KIAkgKi8KLQlwYXJ0 X3NjaGVtZSA9IChQYXJ0aXRpb25TY2hlbWUpIHBhbGxvYzAoc2l6ZW9mKFBhcnRpdGlvblNj aGVtZURhdGEpKTsKKwlwYXJ0X3NjaGVtZSA9IHBhbGxvYzBfb2JqZWN0KFBhcnRpdGlvblNj aGVtZURhdGEpOwogCXBhcnRfc2NoZW1lLT5zdHJhdGVneSA9IHBhcnRrZXktPnN0cmF0ZWd5 OwogCXBhcnRfc2NoZW1lLT5wYXJ0bmF0dHMgPSBwYXJ0a2V5LT5wYXJ0bmF0dHM7CiAKLQlw YXJ0X3NjaGVtZS0+cGFydG9wZmFtaWx5ID0gKE9pZCAqKSBwYWxsb2Moc2l6ZW9mKE9pZCkg KiBwYXJ0bmF0dHMpOworCXBhcnRfc2NoZW1lLT5wYXJ0b3BmYW1pbHkgPSBwYWxsb2NfYXJy YXkoT2lkLCBwYXJ0bmF0dHMpOwogCW1lbWNweShwYXJ0X3NjaGVtZS0+cGFydG9wZmFtaWx5 LCBwYXJ0a2V5LT5wYXJ0b3BmYW1pbHksCiAJCSAgIHNpemVvZihPaWQpICogcGFydG5hdHRz KTsKIAotCXBhcnRfc2NoZW1lLT5wYXJ0b3BjaW50eXBlID0gKE9pZCAqKSBwYWxsb2Moc2l6 ZW9mKE9pZCkgKiBwYXJ0bmF0dHMpOworCXBhcnRfc2NoZW1lLT5wYXJ0b3BjaW50eXBlID0g cGFsbG9jX2FycmF5KE9pZCwgcGFydG5hdHRzKTsKIAltZW1jcHkocGFydF9zY2hlbWUtPnBh cnRvcGNpbnR5cGUsIHBhcnRrZXktPnBhcnRvcGNpbnR5cGUsCiAJCSAgIHNpemVvZihPaWQp ICogcGFydG5hdHRzKTsKIAotCXBhcnRfc2NoZW1lLT5wYXJ0Y29sbGF0aW9uID0gKE9pZCAq KSBwYWxsb2Moc2l6ZW9mKE9pZCkgKiBwYXJ0bmF0dHMpOworCXBhcnRfc2NoZW1lLT5wYXJ0 Y29sbGF0aW9uID0gcGFsbG9jX2FycmF5KE9pZCwgcGFydG5hdHRzKTsKIAltZW1jcHkocGFy dF9zY2hlbWUtPnBhcnRjb2xsYXRpb24sIHBhcnRrZXktPnBhcnRjb2xsYXRpb24sCiAJCSAg IHNpemVvZihPaWQpICogcGFydG5hdHRzKTsKIAotCXBhcnRfc2NoZW1lLT5wYXJ0dHlwbGVu ID0gKGludDE2ICopIHBhbGxvYyhzaXplb2YoaW50MTYpICogcGFydG5hdHRzKTsKKwlwYXJ0 X3NjaGVtZS0+cGFydHR5cGxlbiA9IHBhbGxvY19hcnJheShpbnQxNiwgcGFydG5hdHRzKTsK IAltZW1jcHkocGFydF9zY2hlbWUtPnBhcnR0eXBsZW4sIHBhcnRrZXktPnBhcnR0eXBsZW4s CiAJCSAgIHNpemVvZihpbnQxNikgKiBwYXJ0bmF0dHMpOwogCi0JcGFydF9zY2hlbWUtPnBh cnR0eXBieXZhbCA9IChib29sICopIHBhbGxvYyhzaXplb2YoYm9vbCkgKiBwYXJ0bmF0dHMp OworCXBhcnRfc2NoZW1lLT5wYXJ0dHlwYnl2YWwgPSBwYWxsb2NfYXJyYXkoYm9vbCwgcGFy dG5hdHRzKTsKIAltZW1jcHkocGFydF9zY2hlbWUtPnBhcnR0eXBieXZhbCwgcGFydGtleS0+ cGFydHR5cGJ5dmFsLAogCQkgICBzaXplb2YoYm9vbCkgKiBwYXJ0bmF0dHMpOwogCi0JcGFy dF9zY2hlbWUtPnBhcnRzdXBmdW5jID0gKEZtZ3JJbmZvICopCi0JCXBhbGxvYyhzaXplb2Yo Rm1nckluZm8pICogcGFydG5hdHRzKTsKKwlwYXJ0X3NjaGVtZS0+cGFydHN1cGZ1bmMgPSBw YWxsb2NfYXJyYXkoRm1nckluZm8sIHBhcnRuYXR0cyk7CiAJZm9yIChpID0gMDsgaSA8IHBh cnRuYXR0czsgaSsrKQogCQlmbWdyX2luZm9fY29weSgmcGFydF9zY2hlbWUtPnBhcnRzdXBm dW5jW2ldLCAmcGFydGtleS0+cGFydHN1cGZ1bmNbaV0sCiAJCQkJCSAgIEN1cnJlbnRNZW1v cnlDb250ZXh0KTsKQEAgLTI3MDgsNyArMjcwNyw3IEBAIHNldF9iYXNlcmVsX3BhcnRpdGlv bl9rZXlfZXhwcnMoUmVsYXRpb24gcmVsYXRpb24sCiAJQXNzZXJ0KHBhcnRrZXkgIT0gTlVM TCk7CiAKIAlwYXJ0bmF0dHMgPSBwYXJ0a2V5LT5wYXJ0bmF0dHM7Ci0JcGFydGV4cHJzID0g KExpc3QgKiopIHBhbGxvYyhzaXplb2YoTGlzdCAqKSAqIHBhcnRuYXR0cyk7CisJcGFydGV4 cHJzID0gcGFsbG9jX2FycmF5KExpc3QgKiwgcGFydG5hdHRzKTsKIAlsYyA9IGxpc3RfaGVh ZChwYXJ0a2V5LT5wYXJ0ZXhwcnMpOwogCiAJZm9yIChjbnQgPSAwOyBjbnQgPCBwYXJ0bmF0 dHM7IGNudCsrKQpAQCAtMjc0OSw3ICsyNzQ4LDcgQEAgc2V0X2Jhc2VyZWxfcGFydGl0aW9u X2tleV9leHBycyhSZWxhdGlvbiByZWxhdGlvbiwKIAkgKiBleHByZXNzaW9uIGxpc3RzIHRv IGtlZXAgcGFydGl0aW9uIGtleSBleHByZXNzaW9uIGhhbmRsaW5nIGNvZGUgc2ltcGxlLgog CSAqIFNlZSBidWlsZF9qb2lucmVsX3BhcnRpdGlvbl9pbmZvKCkgYW5kIG1hdGNoX2V4cHJf dG9fcGFydGl0aW9uX2tleXMoKS4KIAkgKi8KLQlyZWwtPm51bGxhYmxlX3BhcnRleHBycyA9 IChMaXN0ICoqKSBwYWxsb2MwKHNpemVvZihMaXN0ICopICogcGFydG5hdHRzKTsKKwlyZWwt Pm51bGxhYmxlX3BhcnRleHBycyA9IHBhbGxvYzBfYXJyYXkoTGlzdCAqLCBwYXJ0bmF0dHMp OwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcHJl ZHRlc3QuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3ByZWR0ZXN0LmMKaW5kZXgg YWMyODU3M2NkMGEuLjBhMTQ2NThlZDdkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRp bWl6ZXIvdXRpbC9wcmVkdGVzdC5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91dGls L3ByZWR0ZXN0LmMKQEAgLTk2Nyw3ICs5NjcsNyBAQCBhcnJheWNvbnN0X3N0YXJ0dXBfZm4o Tm9kZSAqY2xhdXNlLCBQcmVkSXRlckluZm8gaW5mbykKIAljaGFyCQllbG1hbGlnbjsKIAog CS8qIENyZWF0ZSB3b3JraW5nIHN0YXRlIHN0cnVjdCAqLwotCXN0YXRlID0gKEFycmF5Q29u c3RJdGVyU3RhdGUgKikgcGFsbG9jKHNpemVvZihBcnJheUNvbnN0SXRlclN0YXRlKSk7CisJ c3RhdGUgPSBwYWxsb2Nfb2JqZWN0KEFycmF5Q29uc3RJdGVyU3RhdGUpOwogCWluZm8tPnN0 YXRlID0gc3RhdGU7CiAKIAkvKiBEZWNvbnN0cnVjdCB0aGUgYXJyYXkgbGl0ZXJhbCAqLwpA QCAtMTA0Niw3ICsxMDQ2LDcgQEAgYXJyYXlleHByX3N0YXJ0dXBfZm4oTm9kZSAqY2xhdXNl LCBQcmVkSXRlckluZm8gaW5mbykKIAlBcnJheUV4cHIgICphcnJheWV4cHI7CiAKIAkvKiBD cmVhdGUgd29ya2luZyBzdGF0ZSBzdHJ1Y3QgKi8KLQlzdGF0ZSA9IChBcnJheUV4cHJJdGVy U3RhdGUgKikgcGFsbG9jKHNpemVvZihBcnJheUV4cHJJdGVyU3RhdGUpKTsKKwlzdGF0ZSA9 IHBhbGxvY19vYmplY3QoQXJyYXlFeHBySXRlclN0YXRlKTsKIAlpbmZvLT5zdGF0ZSA9IHN0 YXRlOwogCiAJLyogU2V0IHVwIGEgZHVtbXkgT3BFeHByIHRvIHJldHVybiBhcyB0aGUgcGVy LWl0ZW0gbm9kZSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwv cmVsbm9kZS5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcmVsbm9kZS5jCmluZGV4 IDExNThiYzE5NGMzLi4yZjQyM2ZjNDJiMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0 aW1pemVyL3V0aWwvcmVsbm9kZS5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91dGls L3JlbG5vZGUuYwpAQCAtMTIwLDExICsxMjAsMTEgQEAgc2V0dXBfc2ltcGxlX3JlbF9hcnJh eXMoUGxhbm5lckluZm8gKnJvb3QpCiAJICogZXhpc3QgeWV0LiAgSXQnbGwgYmUgZmlsbGVk IGJ5IGxhdGVyIGNhbGxzIHRvIGJ1aWxkX3NpbXBsZV9yZWwoKS4KIAkgKi8KIAlyb290LT5z aW1wbGVfcmVsX2FycmF5ID0gKFJlbE9wdEluZm8gKiopCi0JCXBhbGxvYzAoc2l6ZSAqIHNp emVvZihSZWxPcHRJbmZvICopKTsKKwkJcGFsbG9jMF9hcnJheShSZWxPcHRJbmZvICosIHNp emUpOwogCiAJLyogc2ltcGxlX3J0ZV9hcnJheSBpcyBhbiBhcnJheSBlcXVpdmFsZW50IG9m IHRoZSBydGFibGUgbGlzdCAqLwogCXJvb3QtPnNpbXBsZV9ydGVfYXJyYXkgPSAoUmFuZ2VU YmxFbnRyeSAqKikKLQkJcGFsbG9jMChzaXplICogc2l6ZW9mKFJhbmdlVGJsRW50cnkgKikp OworCQlwYWxsb2MwX2FycmF5KFJhbmdlVGJsRW50cnkgKiwgc2l6ZSk7CiAJcnRpID0gMTsK IAlmb3JlYWNoKGxjLCByb290LT5wYXJzZS0+cnRhYmxlKQogCXsKQEAgLTE0MSw3ICsxNDEs NyBAQCBzZXR1cF9zaW1wbGVfcmVsX2FycmF5cyhQbGFubmVySW5mbyAqcm9vdCkKIAl9CiAK IAlyb290LT5hcHBlbmRfcmVsX2FycmF5ID0gKEFwcGVuZFJlbEluZm8gKiopCi0JCXBhbGxv YzAoc2l6ZSAqIHNpemVvZihBcHBlbmRSZWxJbmZvICopKTsKKwkJcGFsbG9jMF9hcnJheShB cHBlbmRSZWxJbmZvICosIHNpemUpOwogCiAJLyoKIAkgKiBhcHBlbmRfcmVsX2FycmF5IGlz IGZpbGxlZCB3aXRoIGFueSBhbHJlYWR5LWV4aXN0aW5nIEFwcGVuZFJlbEluZm9zLApAQCAt MzczLDkgKzM3Myw5IEBAIGJ1aWxkX3NpbXBsZV9yZWwoUGxhbm5lckluZm8gKnJvb3QsIGlu dCByZWxpZCwgUmVsT3B0SW5mbyAqcGFyZW50KQogCQkJcmVsLT5taW5fYXR0ciA9IDA7CiAJ CQlyZWwtPm1heF9hdHRyID0gbGlzdF9sZW5ndGgocnRlLT5lcmVmLT5jb2xuYW1lcyk7CiAJ CQlyZWwtPmF0dHJfbmVlZGVkID0gKFJlbGlkcyAqKQotCQkJCXBhbGxvYzAoKHJlbC0+bWF4 X2F0dHIgLSByZWwtPm1pbl9hdHRyICsgMSkgKiBzaXplb2YoUmVsaWRzKSk7CisJCQkJcGFs bG9jMF9hcnJheShSZWxpZHMsIHJlbC0+bWF4X2F0dHIgLSByZWwtPm1pbl9hdHRyICsgMSk7 CiAJCQlyZWwtPmF0dHJfd2lkdGhzID0gKGludDMyICopCi0JCQkJcGFsbG9jMCgocmVsLT5t YXhfYXR0ciAtIHJlbC0+bWluX2F0dHIgKyAxKSAqIHNpemVvZihpbnQzMikpOworCQkJCXBh bGxvYzBfYXJyYXkoaW50MzIsIHJlbC0+bWF4X2F0dHIgLSByZWwtPm1pbl9hdHRyICsgMSk7 CiAJCQlicmVhazsKIAkJY2FzZSBSVEVfUkVTVUxUOgogCQkJLyogUlRFX1JFU1VMVCBoYXMg bm8gY29sdW1ucywgbm9yIGNvdWxkIGl0IGhhdmUgd2hvbGUtcm93IFZhciAqLwpAQCAtMjQ4 Niw5ICsyNDg2LDkgQEAgc2V0X2pvaW5yZWxfcGFydGl0aW9uX2tleV9leHBycyhSZWxPcHRJ bmZvICpqb2lucmVsLAogCVBhcnRpdGlvblNjaGVtZSBwYXJ0X3NjaGVtZSA9IGpvaW5yZWwt PnBhcnRfc2NoZW1lOwogCWludAkJCXBhcnRuYXR0cyA9IHBhcnRfc2NoZW1lLT5wYXJ0bmF0 dHM7CiAKLQlqb2lucmVsLT5wYXJ0ZXhwcnMgPSAoTGlzdCAqKikgcGFsbG9jMChzaXplb2Yo TGlzdCAqKSAqIHBhcnRuYXR0cyk7CisJam9pbnJlbC0+cGFydGV4cHJzID0gKExpc3QgKiop IHBhbGxvYzBfYXJyYXkoTGlzdCAqLCBwYXJ0bmF0dHMpOwogCWpvaW5yZWwtPm51bGxhYmxl X3BhcnRleHBycyA9Ci0JCShMaXN0ICoqKSBwYWxsb2MwKHNpemVvZihMaXN0ICopICogcGFy dG5hdHRzKTsKKwkJKExpc3QgKiopIHBhbGxvYzBfYXJyYXkoTGlzdCAqLCBwYXJ0bmF0dHMp OwogCiAJLyoKIAkgKiBUaGUgam9pbnJlbCdzIHBhcnRpdGlvbiBleHByZXNzaW9ucyBhcmUg dGhlIHNhbWUgYXMgdGhvc2Ugb2YgdGhlIGlucHV0CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9vcHRpbWl6ZXIvdXRpbC90bGlzdC5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwv dGxpc3QuYwppbmRleCBkMmI0ZWNjNWU1MS4uYWY3YjE5YmU1YzcgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL29wdGltaXplci91dGlsL3RsaXN0LmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0 aW1pemVyL3V0aWwvdGxpc3QuYwpAQCAtNDY3LDcgKzQ2Nyw3IEBAIGV4dHJhY3RfZ3JvdXBp bmdfb3BzKExpc3QgKmdyb3VwQ2xhdXNlKQogCU9pZAkJICAgKmdyb3VwT3BlcmF0b3JzOwog CUxpc3RDZWxsICAgKmdsaXRlbTsKIAotCWdyb3VwT3BlcmF0b3JzID0gKE9pZCAqKSBwYWxs b2Moc2l6ZW9mKE9pZCkgKiBudW1Db2xzKTsKKwlncm91cE9wZXJhdG9ycyA9IHBhbGxvY19h cnJheShPaWQsIG51bUNvbHMpOwogCiAJZm9yZWFjaChnbGl0ZW0sIGdyb3VwQ2xhdXNlKQog CXsKQEAgLTQ5Myw3ICs0OTMsNyBAQCBleHRyYWN0X2dyb3VwaW5nX2NvbGxhdGlvbnMoTGlz dCAqZ3JvdXBDbGF1c2UsIExpc3QgKnRsaXN0KQogCU9pZAkJICAgKmdycENvbGxhdGlvbnM7 CiAJTGlzdENlbGwgICAqZ2xpdGVtOwogCi0JZ3JwQ29sbGF0aW9ucyA9IChPaWQgKikgcGFs bG9jKHNpemVvZihPaWQpICogbnVtQ29scyk7CisJZ3JwQ29sbGF0aW9ucyA9IHBhbGxvY19h cnJheShPaWQsIG51bUNvbHMpOwogCiAJZm9yZWFjaChnbGl0ZW0sIGdyb3VwQ2xhdXNlKQog CXsKQEAgLTUxOCw3ICs1MTgsNyBAQCBleHRyYWN0X2dyb3VwaW5nX2NvbHMoTGlzdCAqZ3Jv dXBDbGF1c2UsIExpc3QgKnRsaXN0KQogCWludAkJCWNvbG5vID0gMDsKIAlMaXN0Q2VsbCAg ICpnbGl0ZW07CiAKLQlncnBDb2xJZHggPSAoQXR0ck51bWJlciAqKSBwYWxsb2Moc2l6ZW9m KEF0dHJOdW1iZXIpICogbnVtQ29scyk7CisJZ3JwQ29sSWR4ID0gcGFsbG9jX2FycmF5KEF0 dHJOdW1iZXIsIG51bUNvbHMpOwogCiAJZm9yZWFjaChnbGl0ZW0sIGdyb3VwQ2xhdXNlKQog CXsKQEAgLTEwODksNyArMTA4OSw3IEBAIHNwbGl0X3BhdGh0YXJnZXRfd2Fsa2VyKE5vZGUg Km5vZGUsIHNwbGl0X3BhdGh0YXJnZXRfY29udGV4dCAqY29udGV4dCkKIAkgKi8KIAlpZiAo bGlzdF9tZW1iZXIoY29udGV4dC0+aW5wdXRfdGFyZ2V0X2V4cHJzLCBub2RlKSkKIAl7Ci0J CXNwbGl0X3BhdGh0YXJnZXRfaXRlbSAqaXRlbSA9IHBhbGxvYyhzaXplb2Yoc3BsaXRfcGF0 aHRhcmdldF9pdGVtKSk7CisJCXNwbGl0X3BhdGh0YXJnZXRfaXRlbSAqaXRlbSA9IHBhbGxv Y19vYmplY3Qoc3BsaXRfcGF0aHRhcmdldF9pdGVtKTsKIAogCQlpdGVtLT5leHByID0gbm9k ZTsKIAkJaXRlbS0+c29ydGdyb3VwcmVmID0gY29udGV4dC0+Y3VycmVudF9zZ3JlZjsKQEAg LTExMDksNyArMTEwOSw3IEBAIHNwbGl0X3BhdGh0YXJnZXRfd2Fsa2VyKE5vZGUgKm5vZGUs IHNwbGl0X3BhdGh0YXJnZXRfY29udGV4dCAqY29udGV4dCkKIAkJSXNBKG5vZGUsIEdyb3Vw aW5nRnVuYykgfHwKIAkJSXNBKG5vZGUsIFdpbmRvd0Z1bmMpKQogCXsKLQkJc3BsaXRfcGF0 aHRhcmdldF9pdGVtICppdGVtID0gcGFsbG9jKHNpemVvZihzcGxpdF9wYXRodGFyZ2V0X2l0 ZW0pKTsKKwkJc3BsaXRfcGF0aHRhcmdldF9pdGVtICppdGVtID0gcGFsbG9jX29iamVjdChz cGxpdF9wYXRodGFyZ2V0X2l0ZW0pOwogCiAJCWl0ZW0tPmV4cHIgPSBub2RlOwogCQlpdGVt LT5zb3J0Z3JvdXByZWYgPSBjb250ZXh0LT5jdXJyZW50X3NncmVmOwpAQCAtMTEyNCw3ICsx MTI0LDcgQEAgc3BsaXRfcGF0aHRhcmdldF93YWxrZXIoTm9kZSAqbm9kZSwgc3BsaXRfcGF0 aHRhcmdldF9jb250ZXh0ICpjb250ZXh0KQogCSAqLwogCWlmIChJU19TUkZfQ0FMTChub2Rl KSkKIAl7Ci0JCXNwbGl0X3BhdGh0YXJnZXRfaXRlbSAqaXRlbSA9IHBhbGxvYyhzaXplb2Yo c3BsaXRfcGF0aHRhcmdldF9pdGVtKSk7CisJCXNwbGl0X3BhdGh0YXJnZXRfaXRlbSAqaXRl bSA9IHBhbGxvY19vYmplY3Qoc3BsaXRfcGF0aHRhcmdldF9pdGVtKTsKIAkJTGlzdAkgICAq c2F2ZV9pbnB1dF92YXJzID0gY29udGV4dC0+Y3VycmVudF9pbnB1dF92YXJzOwogCQlMaXN0 CSAgICpzYXZlX2lucHV0X3NyZnMgPSBjb250ZXh0LT5jdXJyZW50X2lucHV0X3NyZnM7CiAJ CWludAkJCXNhdmVfY3VycmVudF9kZXB0aCA9IGNvbnRleHQtPmN1cnJlbnRfZGVwdGg7CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvYW5hbHl6ZS5jIGIvc3JjL2JhY2tlbmQv cGFyc2VyL2FuYWx5emUuYwppbmRleCA3ODQzYTBjODU3ZS4uODkxMGNhYzZhOTkgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9hbmFseXplLmMKKysrIGIvc3JjL2JhY2tlbmQv cGFyc2VyL2FuYWx5emUuYwpAQCAtMjY0MSw4ICsyNjQxLDcgQEAgYWRkTlNJdGVtRm9yUmV0 dXJuaW5nKFBhcnNlU3RhdGUgKnBzdGF0ZSwgY29uc3QgY2hhciAqYWxpYXNuYW1lLAogCWNv bG5hbWVzID0gcHN0YXRlLT5wX3RhcmdldF9uc2l0ZW0tPnBfcnRlLT5lcmVmLT5jb2xuYW1l czsKIAludW1hdHRycyA9IGxpc3RfbGVuZ3RoKGNvbG5hbWVzKTsKIAotCW5zY29sdW1ucyA9 IChQYXJzZU5hbWVzcGFjZUNvbHVtbiAqKQotCQlwYWxsb2MobnVtYXR0cnMgKiBzaXplb2Yo UGFyc2VOYW1lc3BhY2VDb2x1bW4pKTsKKwluc2NvbHVtbnMgPSBwYWxsb2NfYXJyYXkoUGFy c2VOYW1lc3BhY2VDb2x1bW4sIG51bWF0dHJzKTsKIAogCW1lbWNweShuc2NvbHVtbnMsIHBz dGF0ZS0+cF90YXJnZXRfbnNpdGVtLT5wX25zY29sdW1ucywKIAkJICAgbnVtYXR0cnMgKiBz aXplb2YoUGFyc2VOYW1lc3BhY2VDb2x1bW4pKTsKQEAgLTI2NTIsNyArMjY1MSw3IEBAIGFk ZE5TSXRlbUZvclJldHVybmluZyhQYXJzZVN0YXRlICpwc3RhdGUsIGNvbnN0IGNoYXIgKmFs aWFzbmFtZSwKIAkJbnNjb2x1bW5zW2ldLnBfdmFycmV0dXJuaW5ndHlwZSA9IHJldHVybmlu Z190eXBlOwogCiAJLyogYnVpbGQgdGhlIG5zaXRlbSwgY29weWluZyBtb3N0IGZpZWxkcyBm cm9tIHRoZSB0YXJnZXQgcmVsYXRpb24gKi8KLQluc2l0ZW0gPSAoUGFyc2VOYW1lc3BhY2VJ dGVtICopIHBhbGxvYyhzaXplb2YoUGFyc2VOYW1lc3BhY2VJdGVtKSk7CisJbnNpdGVtID0g cGFsbG9jX29iamVjdChQYXJzZU5hbWVzcGFjZUl0ZW0pOwogCW5zaXRlbS0+cF9uYW1lcyA9 IG1ha2VBbGlhcyhhbGlhc25hbWUsIGNvbG5hbWVzKTsKIAluc2l0ZW0tPnBfcnRlID0gcHN0 YXRlLT5wX3RhcmdldF9uc2l0ZW0tPnBfcnRlOwogCW5zaXRlbS0+cF9ydGluZGV4ID0gcHN0 YXRlLT5wX3RhcmdldF9uc2l0ZW0tPnBfcnRpbmRleDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3BhcnNlci9ncmFtLnkgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CmluZGV4IGMz YTBhMzU0YTljLi43ODU2Y2U5ZDc4ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2Vy L2dyYW0ueQorKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CkBAIC00NTU1LDE5ICs0 NTU1LDE5IEBAIE9wdFdoZXJlQ2xhdXNlOgoga2V5X2FjdGlvbnM6CiAJCQlrZXlfdXBkYXRl CiAJCQkJewotCQkJCQlLZXlBY3Rpb25zICpuID0gcGFsbG9jKHNpemVvZihLZXlBY3Rpb25z KSk7CisJCQkJCUtleUFjdGlvbnMgKm4gPSBwYWxsb2Nfb2JqZWN0KEtleUFjdGlvbnMpOwog CiAJCQkJCW4tPnVwZGF0ZUFjdGlvbiA9ICQxOwotCQkJCQluLT5kZWxldGVBY3Rpb24gPSBw YWxsb2Moc2l6ZW9mKEtleUFjdGlvbikpOworCQkJCQluLT5kZWxldGVBY3Rpb24gPSBwYWxs b2Nfb2JqZWN0KEtleUFjdGlvbik7CiAJCQkJCW4tPmRlbGV0ZUFjdGlvbi0+YWN0aW9uID0g RktDT05TVFJfQUNUSU9OX05PQUNUSU9OOwogCQkJCQluLT5kZWxldGVBY3Rpb24tPmNvbHMg PSBOSUw7CiAJCQkJCSQkID0gbjsKIAkJCQl9CiAJCQl8IGtleV9kZWxldGUKIAkJCQl7Ci0J CQkJCUtleUFjdGlvbnMgKm4gPSBwYWxsb2Moc2l6ZW9mKEtleUFjdGlvbnMpKTsKKwkJCQkJ S2V5QWN0aW9ucyAqbiA9IHBhbGxvY19vYmplY3QoS2V5QWN0aW9ucyk7CiAKLQkJCQkJbi0+ dXBkYXRlQWN0aW9uID0gcGFsbG9jKHNpemVvZihLZXlBY3Rpb24pKTsKKwkJCQkJbi0+dXBk YXRlQWN0aW9uID0gcGFsbG9jX29iamVjdChLZXlBY3Rpb24pOwogCQkJCQluLT51cGRhdGVB Y3Rpb24tPmFjdGlvbiA9IEZLQ09OU1RSX0FDVElPTl9OT0FDVElPTjsKIAkJCQkJbi0+dXBk YXRlQWN0aW9uLT5jb2xzID0gTklMOwogCQkJCQluLT5kZWxldGVBY3Rpb24gPSAkMTsKQEAg LTQ1NzUsNyArNDU3NSw3IEBAIGtleV9hY3Rpb25zOgogCQkJCX0KIAkJCXwga2V5X3VwZGF0 ZSBrZXlfZGVsZXRlCiAJCQkJewotCQkJCQlLZXlBY3Rpb25zICpuID0gcGFsbG9jKHNpemVv ZihLZXlBY3Rpb25zKSk7CisJCQkJCUtleUFjdGlvbnMgKm4gPSBwYWxsb2Nfb2JqZWN0KEtl eUFjdGlvbnMpOwogCiAJCQkJCW4tPnVwZGF0ZUFjdGlvbiA9ICQxOwogCQkJCQluLT5kZWxl dGVBY3Rpb24gPSAkMjsKQEAgLTQ1ODMsNyArNDU4Myw3IEBAIGtleV9hY3Rpb25zOgogCQkJ CX0KIAkJCXwga2V5X2RlbGV0ZSBrZXlfdXBkYXRlCiAJCQkJewotCQkJCQlLZXlBY3Rpb25z ICpuID0gcGFsbG9jKHNpemVvZihLZXlBY3Rpb25zKSk7CisJCQkJCUtleUFjdGlvbnMgKm4g PSBwYWxsb2Nfb2JqZWN0KEtleUFjdGlvbnMpOwogCiAJCQkJCW4tPnVwZGF0ZUFjdGlvbiA9 ICQyOwogCQkJCQluLT5kZWxldGVBY3Rpb24gPSAkMTsKQEAgLTQ1OTEsMTIgKzQ1OTEsMTIg QEAga2V5X2FjdGlvbnM6CiAJCQkJfQogCQkJfCAvKkVNUFRZKi8KIAkJCQl7Ci0JCQkJCUtl eUFjdGlvbnMgKm4gPSBwYWxsb2Moc2l6ZW9mKEtleUFjdGlvbnMpKTsKKwkJCQkJS2V5QWN0 aW9ucyAqbiA9IHBhbGxvY19vYmplY3QoS2V5QWN0aW9ucyk7CiAKLQkJCQkJbi0+dXBkYXRl QWN0aW9uID0gcGFsbG9jKHNpemVvZihLZXlBY3Rpb24pKTsKKwkJCQkJbi0+dXBkYXRlQWN0 aW9uID0gcGFsbG9jX29iamVjdChLZXlBY3Rpb24pOwogCQkJCQluLT51cGRhdGVBY3Rpb24t PmFjdGlvbiA9IEZLQ09OU1RSX0FDVElPTl9OT0FDVElPTjsKIAkJCQkJbi0+dXBkYXRlQWN0 aW9uLT5jb2xzID0gTklMOwotCQkJCQluLT5kZWxldGVBY3Rpb24gPSBwYWxsb2Moc2l6ZW9m KEtleUFjdGlvbikpOworCQkJCQluLT5kZWxldGVBY3Rpb24gPSBwYWxsb2Nfb2JqZWN0KEtl eUFjdGlvbik7CiAJCQkJCW4tPmRlbGV0ZUFjdGlvbi0+YWN0aW9uID0gRktDT05TVFJfQUNU SU9OX05PQUNUSU9OOwogCQkJCQluLT5kZWxldGVBY3Rpb24tPmNvbHMgPSBOSUw7CiAJCQkJ CSQkID0gbjsKQEAgLTQ2MjQsNyArNDYyNCw3IEBAIGtleV9kZWxldGU6IE9OIERFTEVURV9Q IGtleV9hY3Rpb24KIGtleV9hY3Rpb246CiAJCQlOTyBBQ1RJT04KIAkJCQl7Ci0JCQkJCUtl eUFjdGlvbiAqbiA9IHBhbGxvYyhzaXplb2YoS2V5QWN0aW9uKSk7CisJCQkJCUtleUFjdGlv biAqbiA9IHBhbGxvY19vYmplY3QoS2V5QWN0aW9uKTsKIAogCQkJCQluLT5hY3Rpb24gPSBG S0NPTlNUUl9BQ1RJT05fTk9BQ1RJT047CiAJCQkJCW4tPmNvbHMgPSBOSUw7CkBAIC00NjMy LDcgKzQ2MzIsNyBAQCBrZXlfYWN0aW9uOgogCQkJCX0KIAkJCXwgUkVTVFJJQ1QKIAkJCQl7 Ci0JCQkJCUtleUFjdGlvbiAqbiA9IHBhbGxvYyhzaXplb2YoS2V5QWN0aW9uKSk7CisJCQkJ CUtleUFjdGlvbiAqbiA9IHBhbGxvY19vYmplY3QoS2V5QWN0aW9uKTsKIAogCQkJCQluLT5h Y3Rpb24gPSBGS0NPTlNUUl9BQ1RJT05fUkVTVFJJQ1Q7CiAJCQkJCW4tPmNvbHMgPSBOSUw7 CkBAIC00NjQwLDcgKzQ2NDAsNyBAQCBrZXlfYWN0aW9uOgogCQkJCX0KIAkJCXwgQ0FTQ0FE RQogCQkJCXsKLQkJCQkJS2V5QWN0aW9uICpuID0gcGFsbG9jKHNpemVvZihLZXlBY3Rpb24p KTsKKwkJCQkJS2V5QWN0aW9uICpuID0gcGFsbG9jX29iamVjdChLZXlBY3Rpb24pOwogCiAJ CQkJCW4tPmFjdGlvbiA9IEZLQ09OU1RSX0FDVElPTl9DQVNDQURFOwogCQkJCQluLT5jb2xz ID0gTklMOwpAQCAtNDY0OCw3ICs0NjQ4LDcgQEAga2V5X2FjdGlvbjoKIAkJCQl9CiAJCQl8 IFNFVCBOVUxMX1Agb3B0X2NvbHVtbl9saXN0CiAJCQkJewotCQkJCQlLZXlBY3Rpb24gKm4g PSBwYWxsb2Moc2l6ZW9mKEtleUFjdGlvbikpOworCQkJCQlLZXlBY3Rpb24gKm4gPSBwYWxs b2Nfb2JqZWN0KEtleUFjdGlvbik7CiAKIAkJCQkJbi0+YWN0aW9uID0gRktDT05TVFJfQUNU SU9OX1NFVE5VTEw7CiAJCQkJCW4tPmNvbHMgPSAkMzsKQEAgLTQ2NTYsNyArNDY1Niw3IEBA IGtleV9hY3Rpb246CiAJCQkJfQogCQkJfCBTRVQgREVGQVVMVCBvcHRfY29sdW1uX2xpc3QK IAkJCQl7Ci0JCQkJCUtleUFjdGlvbiAqbiA9IHBhbGxvYyhzaXplb2YoS2V5QWN0aW9uKSk7 CisJCQkJCUtleUFjdGlvbiAqbiA9IHBhbGxvY19vYmplY3QoS2V5QWN0aW9uKTsKIAogCQkJ CQluLT5hY3Rpb24gPSBGS0NPTlNUUl9BQ1RJT05fU0VUREVGQVVMVDsKIAkJCQkJbi0+Y29s cyA9ICQzOwpAQCAtNTg1Myw3ICs1ODUzLDcgQEAgaW1wb3J0X3F1YWxpZmljYXRpb25fdHlw ZToKIGltcG9ydF9xdWFsaWZpY2F0aW9uOgogCQlpbXBvcnRfcXVhbGlmaWNhdGlvbl90eXBl ICcoJyByZWxhdGlvbl9leHByX2xpc3QgJyknCiAJCQl7Ci0JCQkJSW1wb3J0UXVhbCAqbiA9 IChJbXBvcnRRdWFsICopIHBhbGxvYyhzaXplb2YoSW1wb3J0UXVhbCkpOworCQkJCUltcG9y dFF1YWwgKm4gPSBwYWxsb2Nfb2JqZWN0KEltcG9ydFF1YWwpOwogCiAJCQkJbi0+dHlwZSA9 ICQxOwogCQkJCW4tPnRhYmxlX25hbWVzID0gJDM7CkBAIC01ODYxLDcgKzU4NjEsNyBAQCBp bXBvcnRfcXVhbGlmaWNhdGlvbjoKIAkJCX0KIAkJfCAvKkVNUFRZKi8KIAkJCXsKLQkJCQlJ bXBvcnRRdWFsICpuID0gKEltcG9ydFF1YWwgKikgcGFsbG9jKHNpemVvZihJbXBvcnRRdWFs KSk7CisJCQkJSW1wb3J0UXVhbCAqbiA9IHBhbGxvY19vYmplY3QoSW1wb3J0UXVhbCk7CiAJ CQkJbi0+dHlwZSA9IEZEV19JTVBPUlRfU0NIRU1BX0FMTDsKIAkJCQluLT50YWJsZV9uYW1l cyA9IE5JTDsKIAkJCQkkJCA9IG47CkBAIC03OTE0LDcgKzc5MTQsNyBAQCBwYXJhbWV0ZXJf bmFtZToKIHByaXZpbGVnZV90YXJnZXQ6CiAJCQlxdWFsaWZpZWRfbmFtZV9saXN0CiAJCQkJ ewotCQkJCQlQcml2VGFyZ2V0ICpuID0gKFByaXZUYXJnZXQgKikgcGFsbG9jKHNpemVvZihQ cml2VGFyZ2V0KSk7CisJCQkJCVByaXZUYXJnZXQgKm4gPSBwYWxsb2Nfb2JqZWN0KFByaXZU YXJnZXQpOwogCiAJCQkJCW4tPnRhcmd0eXBlID0gQUNMX1RBUkdFVF9PQkpFQ1Q7CiAJCQkJ CW4tPm9ianR5cGUgPSBPQkpFQ1RfVEFCTEU7CkBAIC03OTIzLDcgKzc5MjMsNyBAQCBwcml2 aWxlZ2VfdGFyZ2V0OgogCQkJCX0KIAkJCXwgVEFCTEUgcXVhbGlmaWVkX25hbWVfbGlzdAog CQkJCXsKLQkJCQkJUHJpdlRhcmdldCAqbiA9IChQcml2VGFyZ2V0ICopIHBhbGxvYyhzaXpl b2YoUHJpdlRhcmdldCkpOworCQkJCQlQcml2VGFyZ2V0ICpuID0gcGFsbG9jX29iamVjdChQ cml2VGFyZ2V0KTsKIAogCQkJCQluLT50YXJndHlwZSA9IEFDTF9UQVJHRVRfT0JKRUNUOwog CQkJCQluLT5vYmp0eXBlID0gT0JKRUNUX1RBQkxFOwpAQCAtNzkzMiw3ICs3OTMyLDcgQEAg cHJpdmlsZWdlX3RhcmdldDoKIAkJCQl9CiAJCQl8IFNFUVVFTkNFIHF1YWxpZmllZF9uYW1l X2xpc3QKIAkJCQl7Ci0JCQkJCVByaXZUYXJnZXQgKm4gPSAoUHJpdlRhcmdldCAqKSBwYWxs b2Moc2l6ZW9mKFByaXZUYXJnZXQpKTsKKwkJCQkJUHJpdlRhcmdldCAqbiA9IHBhbGxvY19v YmplY3QoUHJpdlRhcmdldCk7CiAKIAkJCQkJbi0+dGFyZ3R5cGUgPSBBQ0xfVEFSR0VUX09C SkVDVDsKIAkJCQkJbi0+b2JqdHlwZSA9IE9CSkVDVF9TRVFVRU5DRTsKQEAgLTc5NDEsNyAr Nzk0MSw3IEBAIHByaXZpbGVnZV90YXJnZXQ6CiAJCQkJfQogCQkJfCBGT1JFSUdOIERBVEFf UCBXUkFQUEVSIG5hbWVfbGlzdAogCQkJCXsKLQkJCQkJUHJpdlRhcmdldCAqbiA9IChQcml2 VGFyZ2V0ICopIHBhbGxvYyhzaXplb2YoUHJpdlRhcmdldCkpOworCQkJCQlQcml2VGFyZ2V0 ICpuID0gcGFsbG9jX29iamVjdChQcml2VGFyZ2V0KTsKIAogCQkJCQluLT50YXJndHlwZSA9 IEFDTF9UQVJHRVRfT0JKRUNUOwogCQkJCQluLT5vYmp0eXBlID0gT0JKRUNUX0ZEVzsKQEAg LTc5NTAsNyArNzk1MCw3IEBAIHByaXZpbGVnZV90YXJnZXQ6CiAJCQkJfQogCQkJfCBGT1JF SUdOIFNFUlZFUiBuYW1lX2xpc3QKIAkJCQl7Ci0JCQkJCVByaXZUYXJnZXQgKm4gPSAoUHJp dlRhcmdldCAqKSBwYWxsb2Moc2l6ZW9mKFByaXZUYXJnZXQpKTsKKwkJCQkJUHJpdlRhcmdl dCAqbiA9IHBhbGxvY19vYmplY3QoUHJpdlRhcmdldCk7CiAKIAkJCQkJbi0+dGFyZ3R5cGUg PSBBQ0xfVEFSR0VUX09CSkVDVDsKIAkJCQkJbi0+b2JqdHlwZSA9IE9CSkVDVF9GT1JFSUdO X1NFUlZFUjsKQEAgLTc5NTksNyArNzk1OSw3IEBAIHByaXZpbGVnZV90YXJnZXQ6CiAJCQkJ fQogCQkJfCBGVU5DVElPTiBmdW5jdGlvbl93aXRoX2FyZ3R5cGVzX2xpc3QKIAkJCQl7Ci0J CQkJCVByaXZUYXJnZXQgKm4gPSAoUHJpdlRhcmdldCAqKSBwYWxsb2Moc2l6ZW9mKFByaXZU YXJnZXQpKTsKKwkJCQkJUHJpdlRhcmdldCAqbiA9IHBhbGxvY19vYmplY3QoUHJpdlRhcmdl dCk7CiAKIAkJCQkJbi0+dGFyZ3R5cGUgPSBBQ0xfVEFSR0VUX09CSkVDVDsKIAkJCQkJbi0+ b2JqdHlwZSA9IE9CSkVDVF9GVU5DVElPTjsKQEAgLTc5NjgsNyArNzk2OCw3IEBAIHByaXZp bGVnZV90YXJnZXQ6CiAJCQkJfQogCQkJfCBQUk9DRURVUkUgZnVuY3Rpb25fd2l0aF9hcmd0 eXBlc19saXN0CiAJCQkJewotCQkJCQlQcml2VGFyZ2V0ICpuID0gKFByaXZUYXJnZXQgKikg cGFsbG9jKHNpemVvZihQcml2VGFyZ2V0KSk7CisJCQkJCVByaXZUYXJnZXQgKm4gPSBwYWxs b2Nfb2JqZWN0KFByaXZUYXJnZXQpOwogCiAJCQkJCW4tPnRhcmd0eXBlID0gQUNMX1RBUkdF VF9PQkpFQ1Q7CiAJCQkJCW4tPm9ianR5cGUgPSBPQkpFQ1RfUFJPQ0VEVVJFOwpAQCAtNzk3 Nyw3ICs3OTc3LDcgQEAgcHJpdmlsZWdlX3RhcmdldDoKIAkJCQl9CiAJCQl8IFJPVVRJTkUg ZnVuY3Rpb25fd2l0aF9hcmd0eXBlc19saXN0CiAJCQkJewotCQkJCQlQcml2VGFyZ2V0ICpu ID0gKFByaXZUYXJnZXQgKikgcGFsbG9jKHNpemVvZihQcml2VGFyZ2V0KSk7CisJCQkJCVBy aXZUYXJnZXQgKm4gPSBwYWxsb2Nfb2JqZWN0KFByaXZUYXJnZXQpOwogCiAJCQkJCW4tPnRh cmd0eXBlID0gQUNMX1RBUkdFVF9PQkpFQ1Q7CiAJCQkJCW4tPm9ianR5cGUgPSBPQkpFQ1Rf Uk9VVElORTsKQEAgLTc5ODYsNyArNzk4Niw3IEBAIHByaXZpbGVnZV90YXJnZXQ6CiAJCQkJ fQogCQkJfCBEQVRBQkFTRSBuYW1lX2xpc3QKIAkJCQl7Ci0JCQkJCVByaXZUYXJnZXQgKm4g PSAoUHJpdlRhcmdldCAqKSBwYWxsb2Moc2l6ZW9mKFByaXZUYXJnZXQpKTsKKwkJCQkJUHJp dlRhcmdldCAqbiA9IHBhbGxvY19vYmplY3QoUHJpdlRhcmdldCk7CiAKIAkJCQkJbi0+dGFy Z3R5cGUgPSBBQ0xfVEFSR0VUX09CSkVDVDsKIAkJCQkJbi0+b2JqdHlwZSA9IE9CSkVDVF9E QVRBQkFTRTsKQEAgLTc5OTUsNyArNzk5NSw3IEBAIHByaXZpbGVnZV90YXJnZXQ6CiAJCQkJ fQogCQkJfCBET01BSU5fUCBhbnlfbmFtZV9saXN0CiAJCQkJewotCQkJCQlQcml2VGFyZ2V0 ICpuID0gKFByaXZUYXJnZXQgKikgcGFsbG9jKHNpemVvZihQcml2VGFyZ2V0KSk7CisJCQkJ CVByaXZUYXJnZXQgKm4gPSBwYWxsb2Nfb2JqZWN0KFByaXZUYXJnZXQpOwogCiAJCQkJCW4t PnRhcmd0eXBlID0gQUNMX1RBUkdFVF9PQkpFQ1Q7CiAJCQkJCW4tPm9ianR5cGUgPSBPQkpF Q1RfRE9NQUlOOwpAQCAtODAwNCw3ICs4MDA0LDcgQEAgcHJpdmlsZWdlX3RhcmdldDoKIAkJ CQl9CiAJCQl8IExBTkdVQUdFIG5hbWVfbGlzdAogCQkJCXsKLQkJCQkJUHJpdlRhcmdldCAq biA9IChQcml2VGFyZ2V0ICopIHBhbGxvYyhzaXplb2YoUHJpdlRhcmdldCkpOworCQkJCQlQ cml2VGFyZ2V0ICpuID0gcGFsbG9jX29iamVjdChQcml2VGFyZ2V0KTsKIAogCQkJCQluLT50 YXJndHlwZSA9IEFDTF9UQVJHRVRfT0JKRUNUOwogCQkJCQluLT5vYmp0eXBlID0gT0JKRUNU X0xBTkdVQUdFOwpAQCAtODAxMyw3ICs4MDEzLDcgQEAgcHJpdmlsZWdlX3RhcmdldDoKIAkJ CQl9CiAJCQl8IExBUkdFX1AgT0JKRUNUX1AgTnVtZXJpY09ubHlfbGlzdAogCQkJCXsKLQkJ CQkJUHJpdlRhcmdldCAqbiA9IChQcml2VGFyZ2V0ICopIHBhbGxvYyhzaXplb2YoUHJpdlRh cmdldCkpOworCQkJCQlQcml2VGFyZ2V0ICpuID0gcGFsbG9jX29iamVjdChQcml2VGFyZ2V0 KTsKIAogCQkJCQluLT50YXJndHlwZSA9IEFDTF9UQVJHRVRfT0JKRUNUOwogCQkJCQluLT5v Ymp0eXBlID0gT0JKRUNUX0xBUkdFT0JKRUNUOwpAQCAtODAyMiw3ICs4MDIyLDcgQEAgcHJp dmlsZWdlX3RhcmdldDoKIAkJCQl9CiAJCQl8IFBBUkFNRVRFUiBwYXJhbWV0ZXJfbmFtZV9s aXN0CiAJCQkJewotCQkJCQlQcml2VGFyZ2V0ICpuID0gKFByaXZUYXJnZXQgKikgcGFsbG9j KHNpemVvZihQcml2VGFyZ2V0KSk7CisJCQkJCVByaXZUYXJnZXQgKm4gPSBwYWxsb2Nfb2Jq ZWN0KFByaXZUYXJnZXQpOwogCQkJCQluLT50YXJndHlwZSA9IEFDTF9UQVJHRVRfT0JKRUNU OwogCQkJCQluLT5vYmp0eXBlID0gT0JKRUNUX1BBUkFNRVRFUl9BQ0w7CiAJCQkJCW4tPm9i anMgPSAkMjsKQEAgLTgwMzAsNyArODAzMCw3IEBAIHByaXZpbGVnZV90YXJnZXQ6CiAJCQkJ fQogCQkJfCBTQ0hFTUEgbmFtZV9saXN0CiAJCQkJewotCQkJCQlQcml2VGFyZ2V0ICpuID0g KFByaXZUYXJnZXQgKikgcGFsbG9jKHNpemVvZihQcml2VGFyZ2V0KSk7CisJCQkJCVByaXZU YXJnZXQgKm4gPSBwYWxsb2Nfb2JqZWN0KFByaXZUYXJnZXQpOwogCiAJCQkJCW4tPnRhcmd0 eXBlID0gQUNMX1RBUkdFVF9PQkpFQ1Q7CiAJCQkJCW4tPm9ianR5cGUgPSBPQkpFQ1RfU0NI RU1BOwpAQCAtODAzOSw3ICs4MDM5LDcgQEAgcHJpdmlsZWdlX3RhcmdldDoKIAkJCQl9CiAJ CQl8IFRBQkxFU1BBQ0UgbmFtZV9saXN0CiAJCQkJewotCQkJCQlQcml2VGFyZ2V0ICpuID0g KFByaXZUYXJnZXQgKikgcGFsbG9jKHNpemVvZihQcml2VGFyZ2V0KSk7CisJCQkJCVByaXZU YXJnZXQgKm4gPSBwYWxsb2Nfb2JqZWN0KFByaXZUYXJnZXQpOwogCiAJCQkJCW4tPnRhcmd0 eXBlID0gQUNMX1RBUkdFVF9PQkpFQ1Q7CiAJCQkJCW4tPm9ianR5cGUgPSBPQkpFQ1RfVEFC TEVTUEFDRTsKQEAgLTgwNDgsNyArODA0OCw3IEBAIHByaXZpbGVnZV90YXJnZXQ6CiAJCQkJ fQogCQkJfCBUWVBFX1AgYW55X25hbWVfbGlzdAogCQkJCXsKLQkJCQkJUHJpdlRhcmdldCAq biA9IChQcml2VGFyZ2V0ICopIHBhbGxvYyhzaXplb2YoUHJpdlRhcmdldCkpOworCQkJCQlQ cml2VGFyZ2V0ICpuID0gcGFsbG9jX29iamVjdChQcml2VGFyZ2V0KTsKIAogCQkJCQluLT50 YXJndHlwZSA9IEFDTF9UQVJHRVRfT0JKRUNUOwogCQkJCQluLT5vYmp0eXBlID0gT0JKRUNU X1RZUEU7CkBAIC04MDU3LDcgKzgwNTcsNyBAQCBwcml2aWxlZ2VfdGFyZ2V0OgogCQkJCX0K IAkJCXwgQUxMIFRBQkxFUyBJTl9QIFNDSEVNQSBuYW1lX2xpc3QKIAkJCQl7Ci0JCQkJCVBy aXZUYXJnZXQgKm4gPSAoUHJpdlRhcmdldCAqKSBwYWxsb2Moc2l6ZW9mKFByaXZUYXJnZXQp KTsKKwkJCQkJUHJpdlRhcmdldCAqbiA9IHBhbGxvY19vYmplY3QoUHJpdlRhcmdldCk7CiAK IAkJCQkJbi0+dGFyZ3R5cGUgPSBBQ0xfVEFSR0VUX0FMTF9JTl9TQ0hFTUE7CiAJCQkJCW4t Pm9ianR5cGUgPSBPQkpFQ1RfVEFCTEU7CkBAIC04MDY2LDcgKzgwNjYsNyBAQCBwcml2aWxl Z2VfdGFyZ2V0OgogCQkJCX0KIAkJCXwgQUxMIFNFUVVFTkNFUyBJTl9QIFNDSEVNQSBuYW1l X2xpc3QKIAkJCQl7Ci0JCQkJCVByaXZUYXJnZXQgKm4gPSAoUHJpdlRhcmdldCAqKSBwYWxs b2Moc2l6ZW9mKFByaXZUYXJnZXQpKTsKKwkJCQkJUHJpdlRhcmdldCAqbiA9IHBhbGxvY19v YmplY3QoUHJpdlRhcmdldCk7CiAKIAkJCQkJbi0+dGFyZ3R5cGUgPSBBQ0xfVEFSR0VUX0FM TF9JTl9TQ0hFTUE7CiAJCQkJCW4tPm9ianR5cGUgPSBPQkpFQ1RfU0VRVUVOQ0U7CkBAIC04 MDc1LDcgKzgwNzUsNyBAQCBwcml2aWxlZ2VfdGFyZ2V0OgogCQkJCX0KIAkJCXwgQUxMIEZV TkNUSU9OUyBJTl9QIFNDSEVNQSBuYW1lX2xpc3QKIAkJCQl7Ci0JCQkJCVByaXZUYXJnZXQg Km4gPSAoUHJpdlRhcmdldCAqKSBwYWxsb2Moc2l6ZW9mKFByaXZUYXJnZXQpKTsKKwkJCQkJ UHJpdlRhcmdldCAqbiA9IHBhbGxvY19vYmplY3QoUHJpdlRhcmdldCk7CiAKIAkJCQkJbi0+ dGFyZ3R5cGUgPSBBQ0xfVEFSR0VUX0FMTF9JTl9TQ0hFTUE7CiAJCQkJCW4tPm9ianR5cGUg PSBPQkpFQ1RfRlVOQ1RJT047CkBAIC04MDg0LDcgKzgwODQsNyBAQCBwcml2aWxlZ2VfdGFy Z2V0OgogCQkJCX0KIAkJCXwgQUxMIFBST0NFRFVSRVMgSU5fUCBTQ0hFTUEgbmFtZV9saXN0 CiAJCQkJewotCQkJCQlQcml2VGFyZ2V0ICpuID0gKFByaXZUYXJnZXQgKikgcGFsbG9jKHNp emVvZihQcml2VGFyZ2V0KSk7CisJCQkJCVByaXZUYXJnZXQgKm4gPSBwYWxsb2Nfb2JqZWN0 KFByaXZUYXJnZXQpOwogCiAJCQkJCW4tPnRhcmd0eXBlID0gQUNMX1RBUkdFVF9BTExfSU5f U0NIRU1BOwogCQkJCQluLT5vYmp0eXBlID0gT0JKRUNUX1BST0NFRFVSRTsKQEAgLTgwOTMs NyArODA5Myw3IEBAIHByaXZpbGVnZV90YXJnZXQ6CiAJCQkJfQogCQkJfCBBTEwgUk9VVElO RVMgSU5fUCBTQ0hFTUEgbmFtZV9saXN0CiAJCQkJewotCQkJCQlQcml2VGFyZ2V0ICpuID0g KFByaXZUYXJnZXQgKikgcGFsbG9jKHNpemVvZihQcml2VGFyZ2V0KSk7CisJCQkJCVByaXZU YXJnZXQgKm4gPSBwYWxsb2Nfb2JqZWN0KFByaXZUYXJnZXQpOwogCiAJCQkJCW4tPnRhcmd0 eXBlID0gQUNMX1RBUkdFVF9BTExfSU5fU0NIRU1BOwogCQkJCQluLT5vYmp0eXBlID0gT0JK RUNUX1JPVVRJTkU7CkBAIC0xMzM5Myw3ICsxMzM5Myw3IEBAIHNlbGVjdF9saW1pdDoKIAkJ CQl9CiAJCQl8IG9mZnNldF9jbGF1c2UKIAkJCQl7Ci0JCQkJCVNlbGVjdExpbWl0ICpuID0g KFNlbGVjdExpbWl0ICopIHBhbGxvYyhzaXplb2YoU2VsZWN0TGltaXQpKTsKKwkJCQkJU2Vs ZWN0TGltaXQgKm4gPSBwYWxsb2Nfb2JqZWN0KFNlbGVjdExpbWl0KTsKIAogCQkJCQluLT5s aW1pdE9mZnNldCA9ICQxOwogCQkJCQluLT5saW1pdENvdW50ID0gTlVMTDsKQEAgLTEzNDEz LDcgKzEzNDEzLDcgQEAgb3B0X3NlbGVjdF9saW1pdDoKIGxpbWl0X2NsYXVzZToKIAkJCUxJ TUlUIHNlbGVjdF9saW1pdF92YWx1ZQogCQkJCXsKLQkJCQkJU2VsZWN0TGltaXQgKm4gPSAo U2VsZWN0TGltaXQgKikgcGFsbG9jKHNpemVvZihTZWxlY3RMaW1pdCkpOworCQkJCQlTZWxl Y3RMaW1pdCAqbiA9IHBhbGxvY19vYmplY3QoU2VsZWN0TGltaXQpOwogCiAJCQkJCW4tPmxp bWl0T2Zmc2V0ID0gTlVMTDsKIAkJCQkJbi0+bGltaXRDb3VudCA9ICQyOwpAQCAtMTM0NDEs NyArMTM0NDEsNyBAQCBsaW1pdF9jbGF1c2U6CiAJCQkgKi8KIAkJCXwgRkVUQ0ggZmlyc3Rf b3JfbmV4dCBzZWxlY3RfZmV0Y2hfZmlyc3RfdmFsdWUgcm93X29yX3Jvd3MgT05MWQogCQkJ CXsKLQkJCQkJU2VsZWN0TGltaXQgKm4gPSAoU2VsZWN0TGltaXQgKikgcGFsbG9jKHNpemVv ZihTZWxlY3RMaW1pdCkpOworCQkJCQlTZWxlY3RMaW1pdCAqbiA9IHBhbGxvY19vYmplY3Qo U2VsZWN0TGltaXQpOwogCiAJCQkJCW4tPmxpbWl0T2Zmc2V0ID0gTlVMTDsKIAkJCQkJbi0+ bGltaXRDb3VudCA9ICQzOwpAQCAtMTM0NTMsNyArMTM0NTMsNyBAQCBsaW1pdF9jbGF1c2U6 CiAJCQkJfQogCQkJfCBGRVRDSCBmaXJzdF9vcl9uZXh0IHNlbGVjdF9mZXRjaF9maXJzdF92 YWx1ZSByb3dfb3Jfcm93cyBXSVRIIFRJRVMKIAkJCQl7Ci0JCQkJCVNlbGVjdExpbWl0ICpu ID0gKFNlbGVjdExpbWl0ICopIHBhbGxvYyhzaXplb2YoU2VsZWN0TGltaXQpKTsKKwkJCQkJ U2VsZWN0TGltaXQgKm4gPSBwYWxsb2Nfb2JqZWN0KFNlbGVjdExpbWl0KTsKIAogCQkJCQlu LT5saW1pdE9mZnNldCA9IE5VTEw7CiAJCQkJCW4tPmxpbWl0Q291bnQgPSAkMzsKQEAgLTEz NDY1LDcgKzEzNDY1LDcgQEAgbGltaXRfY2xhdXNlOgogCQkJCX0KIAkJCXwgRkVUQ0ggZmly c3Rfb3JfbmV4dCByb3dfb3Jfcm93cyBPTkxZCiAJCQkJewotCQkJCQlTZWxlY3RMaW1pdCAq biA9IChTZWxlY3RMaW1pdCAqKSBwYWxsb2Moc2l6ZW9mKFNlbGVjdExpbWl0KSk7CisJCQkJ CVNlbGVjdExpbWl0ICpuID0gcGFsbG9jX29iamVjdChTZWxlY3RMaW1pdCk7CiAKIAkJCQkJ bi0+bGltaXRPZmZzZXQgPSBOVUxMOwogCQkJCQluLT5saW1pdENvdW50ID0gbWFrZUludENv bnN0KDEsIC0xKTsKQEAgLTEzNDc3LDcgKzEzNDc3LDcgQEAgbGltaXRfY2xhdXNlOgogCQkJ CX0KIAkJCXwgRkVUQ0ggZmlyc3Rfb3JfbmV4dCByb3dfb3Jfcm93cyBXSVRIIFRJRVMKIAkJ CQl7Ci0JCQkJCVNlbGVjdExpbWl0ICpuID0gKFNlbGVjdExpbWl0ICopIHBhbGxvYyhzaXpl b2YoU2VsZWN0TGltaXQpKTsKKwkJCQkJU2VsZWN0TGltaXQgKm4gPSBwYWxsb2Nfb2JqZWN0 KFNlbGVjdExpbWl0KTsKIAogCQkJCQluLT5saW1pdE9mZnNldCA9IE5VTEw7CiAJCQkJCW4t PmxpbWl0Q291bnQgPSBtYWtlSW50Q29uc3QoMSwgLTEpOwpAQCAtMTM1NzIsNyArMTM1NzIs NyBAQCBmaXJzdF9vcl9uZXh0OiBGSVJTVF9QCQkJCQkJCQl7ICQkID0gMDsgfQogZ3JvdXBf Y2xhdXNlOgogCQkJR1JPVVBfUCBCWSBzZXRfcXVhbnRpZmllciBncm91cF9ieV9saXN0CiAJ CQkJewotCQkJCQlHcm91cENsYXVzZSAqbiA9IChHcm91cENsYXVzZSAqKSBwYWxsb2Moc2l6 ZW9mKEdyb3VwQ2xhdXNlKSk7CisJCQkJCUdyb3VwQ2xhdXNlICpuID0gcGFsbG9jX29iamVj dChHcm91cENsYXVzZSk7CiAKIAkJCQkJbi0+ZGlzdGluY3QgPSAkMyA9PSBTRVRfUVVBTlRJ RklFUl9ESVNUSU5DVDsKIAkJCQkJbi0+YWxsID0gZmFsc2U7CkBAIC0xMzU4MSw3ICsxMzU4 MSw3IEBAIGdyb3VwX2NsYXVzZToKIAkJCQl9CiAJCQl8IEdST1VQX1AgQlkgQUxMCiAJCQkJ ewotCQkJCQlHcm91cENsYXVzZSAqbiA9IChHcm91cENsYXVzZSAqKSBwYWxsb2Moc2l6ZW9m KEdyb3VwQ2xhdXNlKSk7CisJCQkJCUdyb3VwQ2xhdXNlICpuID0gcGFsbG9jX29iamVjdChH cm91cENsYXVzZSk7CiAJCQkJCW4tPmRpc3RpbmN0ID0gZmFsc2U7CiAJCQkJCW4tPmFsbCA9 IHRydWU7CiAJCQkJCW4tPmxpc3QgPSBOSUw7CkBAIC0xMzU4OSw3ICsxMzU4OSw3IEBAIGdy b3VwX2NsYXVzZToKIAkJCQl9CiAJCQl8IC8qRU1QVFkqLwogCQkJCXsKLQkJCQkJR3JvdXBD bGF1c2UgKm4gPSAoR3JvdXBDbGF1c2UgKikgcGFsbG9jKHNpemVvZihHcm91cENsYXVzZSkp OworCQkJCQlHcm91cENsYXVzZSAqbiA9IHBhbGxvY19vYmplY3QoR3JvdXBDbGF1c2UpOwog CiAJCQkJCW4tPmRpc3RpbmN0ID0gZmFsc2U7CiAJCQkJCW4tPmFsbCA9IGZhbHNlOwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2NsYXVzZS5jIGIvc3JjL2JhY2tl bmQvcGFyc2VyL3BhcnNlX2NsYXVzZS5jCmluZGV4IGNhMjZmNmY2MWYyLi45NDQ0ODIyMDdm MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2NsYXVzZS5jCisrKyBi L3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9jbGF1c2UuYwpAQCAtNzMzLDcgKzczMyw3IEBA IHRyYW5zZm9ybVJhbmdlVGFibGVGdW5jKFBhcnNlU3RhdGUgKnBzdGF0ZSwgUmFuZ2VUYWJs ZUZ1bmMgKnJ0ZikKIAl0Zi0+b3JkaW5hbGl0eWNvbCA9IC0xOwogCiAJLyogUHJvY2VzcyBj b2x1bW4gc3BlY3MgKi8KLQluYW1lcyA9IHBhbGxvYyhzaXplb2YoY2hhciAqKSAqIGxpc3Rf bGVuZ3RoKHJ0Zi0+Y29sdW1ucykpOworCW5hbWVzID0gcGFsbG9jX2FycmF5KGNoYXIgKiwg bGlzdF9sZW5ndGgocnRmLT5jb2x1bW5zKSk7CiAKIAljb2xubyA9IDA7CiAJZm9yZWFjaChj b2wsIHJ0Zi0+Y29sdW1ucykKQEAgLTE1NzMsNyArMTU3Myw3IEBAIHRyYW5zZm9ybUZyb21D bGF1c2VJdGVtKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAqbiwKIAkJewogCQkJUGFyc2VO YW1lc3BhY2VJdGVtICpqbnNpdGVtOwogCi0JCQlqbnNpdGVtID0gKFBhcnNlTmFtZXNwYWNl SXRlbSAqKSBwYWxsb2Moc2l6ZW9mKFBhcnNlTmFtZXNwYWNlSXRlbSkpOworCQkJam5zaXRl bSA9IHBhbGxvY19vYmplY3QoUGFyc2VOYW1lc3BhY2VJdGVtKTsKIAkJCWpuc2l0ZW0tPnBf bmFtZXMgPSBqLT5qb2luX3VzaW5nX2FsaWFzOwogCQkJam5zaXRlbS0+cF9ydGUgPSBuc2l0 ZW0tPnBfcnRlOwogCQkJam5zaXRlbS0+cF9ydGluZGV4ID0gbnNpdGVtLT5wX3J0aW5kZXg7 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jIGIvc3JjL2Jh Y2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYwppbmRleCAzMmQ2YWU5MThjYS4uZjNmYmI2Yjcz ODIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMKKysrIGIv c3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYwpAQCAtMjkwNiw3ICsyOTA2LDcgQEAg bWFrZV9yb3dfY29tcGFyaXNvbl9vcChQYXJzZVN0YXRlICpwc3RhdGUsIExpc3QgKm9wbmFt ZSwKIAkgKiBvcGVyYXRvcnMsIGFuZCBzZWUgd2hpY2ggaW50ZXJwcmV0YXRpb25zIChjbXB0 eXBlcykgZXhpc3QgZm9yIGVhY2gKIAkgKiBvcGVyYXRvci4KIAkgKi8KLQlvcGluZm9fbGlz dHMgPSAoTGlzdCAqKikgcGFsbG9jKG5vcGVycyAqIHNpemVvZihMaXN0ICopKTsKKwlvcGlu Zm9fbGlzdHMgPSBwYWxsb2NfYXJyYXkoTGlzdCAqLCBub3BlcnMpOwogCWNtcHR5cGVzID0g TlVMTDsKIAlpID0gMDsKIAlmb3JlYWNoKGwsIG9wZXhwcnMpCkBAIC0zMjQxLDcgKzMyNDEs NyBAQCBnZXRKc29uRW5jb2RpbmdDb25zdChKc29uRm9ybWF0ICpmb3JtYXQpCiB7CiAJSnNv bkVuY29kaW5nIGVuY29kaW5nOwogCWNvbnN0IGNoYXIgKmVuYzsKLQlOYW1lCQllbmNuYW1l ID0gcGFsbG9jKHNpemVvZihOYW1lRGF0YSkpOworCU5hbWUJCWVuY25hbWUgPSBwYWxsb2Nf b2JqZWN0KE5hbWVEYXRhKTsKIAogCWlmICghZm9ybWF0IHx8CiAJCWZvcm1hdC0+Zm9ybWF0 X3R5cGUgPT0gSlNfRk9STUFUX0RFRkFVTFQgfHwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3BhcnNlci9wYXJzZV9ub2RlLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2Vfbm9kZS5j CmluZGV4IDIwM2I3YTMyMTc4Li5jYWZlYjg3MjE3YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvcGFyc2VyL3BhcnNlX25vZGUuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2Vf bm9kZS5jCkBAIC00MCw3ICs0MCw3IEBAIG1ha2VfcGFyc2VzdGF0ZShQYXJzZVN0YXRlICpw YXJlbnRQYXJzZVN0YXRlKQogewogCVBhcnNlU3RhdGUgKnBzdGF0ZTsKIAotCXBzdGF0ZSA9 IHBhbGxvYzAoc2l6ZW9mKFBhcnNlU3RhdGUpKTsKKwlwc3RhdGUgPSBwYWxsb2MwX29iamVj dChQYXJzZVN0YXRlKTsKIAogCXBzdGF0ZS0+cGFyZW50UGFyc2VTdGF0ZSA9IHBhcmVudFBh cnNlU3RhdGU7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9wYXJh bS5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3BhcmFtLmMKaW5kZXggOTMwOTIxNjI2 YjYuLjc3MmYzZTNjMWQ4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2Vf cGFyYW0uYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfcGFyYW0uYwpAQCAtNjgs NyArNjgsNyBAQCB2b2lkCiBzZXR1cF9wYXJzZV9maXhlZF9wYXJhbWV0ZXJzKFBhcnNlU3Rh dGUgKnBzdGF0ZSwKIAkJCQkJCQkgY29uc3QgT2lkICpwYXJhbVR5cGVzLCBpbnQgbnVtUGFy YW1zKQogewotCUZpeGVkUGFyYW1TdGF0ZSAqcGFyc3RhdGUgPSBwYWxsb2Moc2l6ZW9mKEZp eGVkUGFyYW1TdGF0ZSkpOworCUZpeGVkUGFyYW1TdGF0ZSAqcGFyc3RhdGUgPSBwYWxsb2Nf b2JqZWN0KEZpeGVkUGFyYW1TdGF0ZSk7CiAKIAlwYXJzdGF0ZS0+cGFyYW1UeXBlcyA9IHBh cmFtVHlwZXM7CiAJcGFyc3RhdGUtPm51bVBhcmFtcyA9IG51bVBhcmFtczsKQEAgLTg0LDcg Kzg0LDcgQEAgdm9pZAogc2V0dXBfcGFyc2VfdmFyaWFibGVfcGFyYW1ldGVycyhQYXJzZVN0 YXRlICpwc3RhdGUsCiAJCQkJCQkJCU9pZCAqKnBhcmFtVHlwZXMsIGludCAqbnVtUGFyYW1z KQogewotCVZhclBhcmFtU3RhdGUgKnBhcnN0YXRlID0gcGFsbG9jKHNpemVvZihWYXJQYXJh bVN0YXRlKSk7CisJVmFyUGFyYW1TdGF0ZSAqcGFyc3RhdGUgPSBwYWxsb2Nfb2JqZWN0KFZh clBhcmFtU3RhdGUpOwogCiAJcGFyc3RhdGUtPnBhcmFtVHlwZXMgPSBwYXJhbVR5cGVzOwog CXBhcnN0YXRlLT5udW1QYXJhbXMgPSBudW1QYXJhbXM7CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9wYXJzZXIvcGFyc2VfcmVsYXRpb24uYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJz ZV9yZWxhdGlvbi5jCmluZGV4IGQ1NDRhNjlmYzgwLi5kZDY0ZjQ1NDc4YSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3JlbGF0aW9uLmMKKysrIGIvc3JjL2JhY2tl bmQvcGFyc2VyL3BhcnNlX3JlbGF0aW9uLmMKQEAgLTk2NCw3ICs5NjQsNyBAQCBzZWFyY2hS YW5nZVRhYmxlRm9yQ29sKFBhcnNlU3RhdGUgKnBzdGF0ZSwgY29uc3QgY2hhciAqYWxpYXMs IGNvbnN0IGNoYXIgKmNvbG5hbQogCQkJCQkgICBpbnQgbG9jYXRpb24pCiB7CiAJUGFyc2VT dGF0ZSAqb3JpZ19wc3RhdGUgPSBwc3RhdGU7Ci0JRnV6enlBdHRyTWF0Y2hTdGF0ZSAqZnV6 enlzdGF0ZSA9IHBhbGxvYyhzaXplb2YoRnV6enlBdHRyTWF0Y2hTdGF0ZSkpOworCUZ1enp5 QXR0ck1hdGNoU3RhdGUgKmZ1enp5c3RhdGUgPSBwYWxsb2Nfb2JqZWN0KEZ1enp5QXR0ck1h dGNoU3RhdGUpOwogCiAJZnV6enlzdGF0ZS0+ZGlzdGFuY2UgPSBNQVhfRlVaWllfRElTVEFO Q0UgKyAxOwogCWZ1enp5c3RhdGUtPnJmaXJzdCA9IE5VTEw7CkBAIC0xMzM2LDcgKzEzMzYs NyBAQCBidWlsZE5TSXRlbUZyb21UdXBsZURlc2MoUmFuZ2VUYmxFbnRyeSAqcnRlLCBJbmRl eCBydGluZGV4LAogCX0KIAogCS8qIC4uLiBhbmQgYnVpbGQgdGhlIG5zaXRlbSAqLwotCW5z aXRlbSA9IChQYXJzZU5hbWVzcGFjZUl0ZW0gKikgcGFsbG9jKHNpemVvZihQYXJzZU5hbWVz cGFjZUl0ZW0pKTsKKwluc2l0ZW0gPSBwYWxsb2Nfb2JqZWN0KFBhcnNlTmFtZXNwYWNlSXRl bSk7CiAJbnNpdGVtLT5wX25hbWVzID0gcnRlLT5lcmVmOwogCW5zaXRlbS0+cF9ydGUgPSBy dGU7CiAJbnNpdGVtLT5wX3J0aW5kZXggPSBydGluZGV4OwpAQCAtMTQwMCw3ICsxNDAwLDcg QEAgYnVpbGROU0l0ZW1Gcm9tTGlzdHMoUmFuZ2VUYmxFbnRyeSAqcnRlLCBJbmRleCBydGlu ZGV4LAogCX0KIAogCS8qIC4uLiBhbmQgYnVpbGQgdGhlIG5zaXRlbSAqLwotCW5zaXRlbSA9 IChQYXJzZU5hbWVzcGFjZUl0ZW0gKikgcGFsbG9jKHNpemVvZihQYXJzZU5hbWVzcGFjZUl0 ZW0pKTsKKwluc2l0ZW0gPSBwYWxsb2Nfb2JqZWN0KFBhcnNlTmFtZXNwYWNlSXRlbSk7CiAJ bnNpdGVtLT5wX25hbWVzID0gcnRlLT5lcmVmOwogCW5zaXRlbS0+cF9ydGUgPSBydGU7CiAJ bnNpdGVtLT5wX3J0aW5kZXggPSBydGluZGV4OwpAQCAtMTc5MSw3ICsxNzkxLDcgQEAgYWRk UmFuZ2VUYWJsZUVudHJ5Rm9yRnVuY3Rpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLAogCXJ0ZS0+ ZXJlZiA9IGVyZWY7CiAKIAkvKiBQcm9jZXNzIGVhY2ggZnVuY3Rpb24gLi4uICovCi0JZnVu Y3R1cGRlc2NzID0gKFR1cGxlRGVzYyAqKSBwYWxsb2MobmZ1bmNzICogc2l6ZW9mKFR1cGxl RGVzYykpOworCWZ1bmN0dXBkZXNjcyA9IHBhbGxvY19hcnJheShUdXBsZURlc2MsIG5mdW5j cyk7CiAKIAl0b3RhbGF0dHMgPSAwOwogCWZ1bmNubyA9IDA7CkBAIC0yMzAyLDcgKzIzMDIs NyBAQCBhZGRSYW5nZVRhYmxlRW50cnlGb3JKb2luKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkg KiBCdWlsZCBhIFBhcnNlTmFtZXNwYWNlSXRlbSwgYnV0IGRvbid0IGFkZCBpdCB0byB0aGUg cHN0YXRlJ3MgbmFtZXNwYWNlCiAJICogbGlzdCAtLS0gY2FsbGVyIG11c3QgZG8gdGhhdCBp ZiBhcHByb3ByaWF0ZS4KIAkgKi8KLQluc2l0ZW0gPSAoUGFyc2VOYW1lc3BhY2VJdGVtICop IHBhbGxvYyhzaXplb2YoUGFyc2VOYW1lc3BhY2VJdGVtKSk7CisJbnNpdGVtID0gcGFsbG9j X29iamVjdChQYXJzZU5hbWVzcGFjZUl0ZW0pOwogCW5zaXRlbS0+cF9uYW1lcyA9IHJ0ZS0+ ZXJlZjsKIAluc2l0ZW0tPnBfcnRlID0gcnRlOwogCW5zaXRlbS0+cF9wZXJtaW5mbyA9IE5V TEw7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdHlwZS5jIGIvc3Jj L2JhY2tlbmQvcGFyc2VyL3BhcnNlX3R5cGUuYwppbmRleCA3NzEzYmRjNmFmMC4uYzczMzVh ZDlkYjEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV90eXBlLmMKKysr IGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3R5cGUuYwpAQCAtMzY5LDcgKzM2OSw3IEBA IHR5cGVuYW1lVHlwZU1vZChQYXJzZVN0YXRlICpwc3RhdGUsIGNvbnN0IFR5cGVOYW1lICp0 eXBlTmFtZSwgVHlwZSB0eXApCiAJICogQ3VycmVudGx5LCB3ZSBhbGxvdyBzaW1wbGUgbnVt ZXJpYyBjb25zdGFudHMsIHN0cmluZyBsaXRlcmFscywgYW5kCiAJICogaWRlbnRpZmllcnM7 IHBvc3NpYmx5IHRoaXMgbGlzdCBjb3VsZCBiZSBleHRlbmRlZC4KIAkgKi8KLQlkYXR1bXMg PSAoRGF0dW0gKikgcGFsbG9jKGxpc3RfbGVuZ3RoKHR5cGVOYW1lLT50eXBtb2RzKSAqIHNp emVvZihEYXR1bSkpOworCWRhdHVtcyA9IHBhbGxvY19hcnJheShEYXR1bSwgbGlzdF9sZW5n dGgodHlwZU5hbWUtPnR5cG1vZHMpKTsKIAluID0gMDsKIAlmb3JlYWNoKGwsIHR5cGVOYW1l LT50eXBtb2RzKQogCXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9w YXJ0Ym91bmRzLmMgYi9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5jCmlu ZGV4IDhiYTAzOGM1ZWY0Li42ODdhMzM3MzIwZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv cGFydGl0aW9uaW5nL3BhcnRib3VuZHMuYworKysgYi9zcmMvYmFja2VuZC9wYXJ0aXRpb25p bmcvcGFydGJvdW5kcy5jCkBAIC0zMTksNyArMzE5LDcgQEAgcGFydGl0aW9uX2JvdW5kc19j cmVhdGUoUGFydGl0aW9uQm91bmRTcGVjICoqYm91bmRzcGVjcywgaW50IG5wYXJ0cywKIAkg KiBJbml0aWFsaXplIG1hcHBpbmcgYXJyYXkgd2l0aCBpbnZhbGlkIHZhbHVlcywgdGhpcyBp cyBmaWxsZWQgd2l0aGluCiAJICogZWFjaCBzdWItcm91dGluZSBiZWxvdyBkZXBlbmRpbmcg b24gdGhlIGJvdW5kIHR5cGUuCiAJICovCi0JKm1hcHBpbmcgPSAoaW50ICopIHBhbGxvYyhz aXplb2YoaW50KSAqIG5wYXJ0cyk7CisJKm1hcHBpbmcgPSBwYWxsb2NfYXJyYXkoaW50LCBu cGFydHMpOwogCWZvciAoaSA9IDA7IGkgPCBucGFydHM7IGkrKykKIAkJKCptYXBwaW5nKVtp XSA9IC0xOwogCkBAIC0zNTMsOCArMzUzLDcgQEAgY3JlYXRlX2hhc2hfYm91bmRzKFBhcnRp dGlvbkJvdW5kU3BlYyAqKmJvdW5kc3BlY3MsIGludCBucGFydHMsCiAJaW50CQkJZ3JlYXRl c3RfbW9kdWx1czsKIAlEYXR1bQkgICAqYm91bmREYXR1bXM7CiAKLQlib3VuZGluZm8gPSAo UGFydGl0aW9uQm91bmRJbmZvRGF0YSAqKQotCQlwYWxsb2MwKHNpemVvZihQYXJ0aXRpb25C b3VuZEluZm9EYXRhKSk7CisJYm91bmRpbmZvID0gcGFsbG9jMF9vYmplY3QoUGFydGl0aW9u Qm91bmRJbmZvRGF0YSk7CiAJYm91bmRpbmZvLT5zdHJhdGVneSA9IGtleS0+c3RyYXRlZ3k7 CiAJLyogTm8gc3BlY2lhbCBoYXNoIHBhcnRpdGlvbnMuICovCiAJYm91bmRpbmZvLT5udWxs X2luZGV4ID0gLTE7CkBAIC0zODQsNyArMzgzLDcgQEAgY3JlYXRlX2hhc2hfYm91bmRzKFBh cnRpdGlvbkJvdW5kU3BlYyAqKmJvdW5kc3BlY3MsIGludCBucGFydHMsCiAJZ3JlYXRlc3Rf bW9kdWx1cyA9IGhib3VuZHNbbnBhcnRzIC0gMV0ubW9kdWx1czsKIAogCWJvdW5kaW5mby0+ bmRhdHVtcyA9IG5wYXJ0czsKLQlib3VuZGluZm8tPmRhdHVtcyA9IChEYXR1bSAqKikgcGFs bG9jMChucGFydHMgKiBzaXplb2YoRGF0dW0gKikpOworCWJvdW5kaW5mby0+ZGF0dW1zID0g KERhdHVtICoqKSBwYWxsb2MwX2FycmF5KERhdHVtICosIG5wYXJ0cyk7CiAJYm91bmRpbmZv LT5raW5kID0gTlVMTDsKIAlib3VuZGluZm8tPmludGVybGVhdmVkX3BhcnRzID0gTlVMTDsK IAlib3VuZGluZm8tPm5pbmRleGVzID0gZ3JlYXRlc3RfbW9kdWx1czsKQEAgLTQ3Miw4ICs0 NzEsNyBAQCBjcmVhdGVfbGlzdF9ib3VuZHMoUGFydGl0aW9uQm91bmRTcGVjICoqYm91bmRz cGVjcywgaW50IG5wYXJ0cywKIAlpbnQJCQludWxsX2luZGV4ID0gLTE7CiAJRGF0dW0JICAg KmJvdW5kRGF0dW1zOwogCi0JYm91bmRpbmZvID0gKFBhcnRpdGlvbkJvdW5kSW5mb0RhdGEg KikKLQkJcGFsbG9jMChzaXplb2YoUGFydGl0aW9uQm91bmRJbmZvRGF0YSkpOworCWJvdW5k aW5mbyA9IHBhbGxvYzBfb2JqZWN0KFBhcnRpdGlvbkJvdW5kSW5mb0RhdGEpOwogCWJvdW5k aW5mby0+c3RyYXRlZ3kgPSBrZXktPnN0cmF0ZWd5OwogCS8qIFdpbGwgYmUgc2V0IGNvcnJl Y3RseSBiZWxvdy4gKi8KIAlib3VuZGluZm8tPm51bGxfaW5kZXggPSAtMTsKQEAgLTUzMyw3 ICs1MzEsNyBAQCBjcmVhdGVfbGlzdF9ib3VuZHMoUGFydGl0aW9uQm91bmRTcGVjICoqYm91 bmRzcGVjcywgaW50IG5wYXJ0cywKIAkJCSAgcXNvcnRfcGFydGl0aW9uX2xpc3RfdmFsdWVf Y21wLCBrZXkpOwogCiAJYm91bmRpbmZvLT5uZGF0dW1zID0gbmRhdHVtczsKLQlib3VuZGlu Zm8tPmRhdHVtcyA9IChEYXR1bSAqKikgcGFsbG9jMChuZGF0dW1zICogc2l6ZW9mKERhdHVt ICopKTsKKwlib3VuZGluZm8tPmRhdHVtcyA9IChEYXR1bSAqKikgcGFsbG9jMF9hcnJheShE YXR1bSAqLCBuZGF0dW1zKTsKIAlib3VuZGluZm8tPmtpbmQgPSBOVUxMOwogCWJvdW5kaW5m by0+aW50ZXJsZWF2ZWRfcGFydHMgPSBOVUxMOwogCWJvdW5kaW5mby0+bmluZGV4ZXMgPSBu ZGF0dW1zOwpAQCAtNjkwLDggKzY4OCw3IEBAIGNyZWF0ZV9yYW5nZV9ib3VuZHMoUGFydGl0 aW9uQm91bmRTcGVjICoqYm91bmRzcGVjcywgaW50IG5wYXJ0cywKIAlEYXR1bQkgICAqYm91 bmREYXR1bXM7CiAJUGFydGl0aW9uUmFuZ2VEYXR1bUtpbmQgKmJvdW5kS2luZHM7CiAKLQli b3VuZGluZm8gPSAoUGFydGl0aW9uQm91bmRJbmZvRGF0YSAqKQotCQlwYWxsb2MwKHNpemVv ZihQYXJ0aXRpb25Cb3VuZEluZm9EYXRhKSk7CisJYm91bmRpbmZvID0gcGFsbG9jMF9vYmpl Y3QoUGFydGl0aW9uQm91bmRJbmZvRGF0YSk7CiAJYm91bmRpbmZvLT5zdHJhdGVneSA9IGtl eS0+c3RyYXRlZ3k7CiAJLyogVGhlcmUgaXMgbm8gc3BlY2lhbCBudWxsLWFjY2VwdGluZyBy YW5nZSBwYXJ0aXRpb24uICovCiAJYm91bmRpbmZvLT5udWxsX2luZGV4ID0gLTE7CkBAIC02 OTksNyArNjk2LDcgQEAgY3JlYXRlX3JhbmdlX2JvdW5kcyhQYXJ0aXRpb25Cb3VuZFNwZWMg Kipib3VuZHNwZWNzLCBpbnQgbnBhcnRzLAogCWJvdW5kaW5mby0+ZGVmYXVsdF9pbmRleCA9 IC0xOwogCiAJYWxsX2JvdW5kcyA9IChQYXJ0aXRpb25SYW5nZUJvdW5kICoqKQotCQlwYWxs b2MwKDIgKiBucGFydHMgKiBzaXplb2YoUGFydGl0aW9uUmFuZ2VCb3VuZCAqKSk7CisJCXBh bGxvYzBfYXJyYXkoUGFydGl0aW9uUmFuZ2VCb3VuZCAqLCAyICogbnBhcnRzKTsKIAogCS8q IENyZWF0ZSBhIHVuaWZpZWQgbGlzdCBvZiByYW5nZSBib3VuZHMgYWNyb3NzIGFsbCB0aGUg cGFydGl0aW9ucy4gKi8KIAluZGF0dW1zID0gMDsKQEAgLTgwMyw3ICs4MDAsNyBAQCBjcmVh dGVfcmFuZ2VfYm91bmRzKFBhcnRpdGlvbkJvdW5kU3BlYyAqKmJvdW5kc3BlY3MsIGludCBu cGFydHMsCiAJICogYm91bmQuCiAJICovCiAJYm91bmRpbmZvLT5uZGF0dW1zID0gbmRhdHVt czsKLQlib3VuZGluZm8tPmRhdHVtcyA9IChEYXR1bSAqKikgcGFsbG9jMChuZGF0dW1zICog c2l6ZW9mKERhdHVtICopKTsKKwlib3VuZGluZm8tPmRhdHVtcyA9IChEYXR1bSAqKikgcGFs bG9jMF9hcnJheShEYXR1bSAqLCBuZGF0dW1zKTsKIAlib3VuZGluZm8tPmtpbmQgPSAoUGFy dGl0aW9uUmFuZ2VEYXR1bUtpbmQgKiopCiAJCXBhbGxvYyhuZGF0dW1zICoKIAkJCSAgIHNp emVvZihQYXJ0aXRpb25SYW5nZURhdHVtS2luZCAqKSk7CkBAIC0xMDA4LDcgKzEwMDUsNyBA QCBwYXJ0aXRpb25fYm91bmRzX2NvcHkoUGFydGl0aW9uQm91bmRJbmZvIHNyYywKIAlpbnQJ CQluaW5kZXhlczsKIAlpbnQJCQlwYXJ0bmF0dHM7CiAKLQlkZXN0ID0gKFBhcnRpdGlvbkJv dW5kSW5mbykgcGFsbG9jKHNpemVvZihQYXJ0aXRpb25Cb3VuZEluZm9EYXRhKSk7CisJZGVz dCA9IChQYXJ0aXRpb25Cb3VuZEluZm8pIHBhbGxvY19vYmplY3QoUGFydGl0aW9uQm91bmRJ bmZvRGF0YSk7CiAKIAlkZXN0LT5zdHJhdGVneSA9IHNyYy0+c3RyYXRlZ3k7CiAJbmRhdHVt cyA9IGRlc3QtPm5kYXR1bXMgPSBzcmMtPm5kYXR1bXM7CkBAIC0xMDE4LDcgKzEwMTUsNyBA QCBwYXJ0aXRpb25fYm91bmRzX2NvcHkoUGFydGl0aW9uQm91bmRJbmZvIHNyYywKIAkvKiBM aXN0IHBhcnRpdGlvbmVkIHRhYmxlcyBoYXZlIG9ubHkgYSBzaW5nbGUgcGFydGl0aW9uIGtl eS4gKi8KIAlBc3NlcnQoa2V5LT5zdHJhdGVneSAhPSBQQVJUSVRJT05fU1RSQVRFR1lfTElT VCB8fCBwYXJ0bmF0dHMgPT0gMSk7CiAKLQlkZXN0LT5kYXR1bXMgPSAoRGF0dW0gKiopIHBh bGxvYyhzaXplb2YoRGF0dW0gKikgKiBuZGF0dW1zKTsKKwlkZXN0LT5kYXR1bXMgPSBwYWxs b2NfYXJyYXkoRGF0dW0gKiwgbmRhdHVtcyk7CiAKIAlpZiAoc3JjLT5raW5kICE9IE5VTEwg JiYgbmRhdHVtcyA+IDApCiAJewpAQCAtMTA5Miw3ICsxMDg5LDcgQEAgcGFydGl0aW9uX2Jv dW5kc19jb3B5KFBhcnRpdGlvbkJvdW5kSW5mbyBzcmMsCiAJCX0KIAl9CiAKLQlkZXN0LT5p bmRleGVzID0gKGludCAqKSBwYWxsb2Moc2l6ZW9mKGludCkgKiBuaW5kZXhlcyk7CisJZGVz dC0+aW5kZXhlcyA9IHBhbGxvY19hcnJheShpbnQsIG5pbmRleGVzKTsKIAltZW1jcHkoZGVz dC0+aW5kZXhlcywgc3JjLT5pbmRleGVzLCBzaXplb2YoaW50KSAqIG5pbmRleGVzKTsKIAog CWRlc3QtPm51bGxfaW5kZXggPSBzcmMtPm51bGxfaW5kZXg7CkBAIC0xODE1LDEwICsxODEy LDEwIEBAIGluaXRfcGFydGl0aW9uX21hcChSZWxPcHRJbmZvICpyZWwsIFBhcnRpdGlvbk1h cCAqbWFwKQogCWludAkJCWk7CiAKIAltYXAtPm5wYXJ0cyA9IG5wYXJ0czsKLQltYXAtPm1l cmdlZF9pbmRleGVzID0gKGludCAqKSBwYWxsb2Moc2l6ZW9mKGludCkgKiBucGFydHMpOwot CW1hcC0+bWVyZ2VkID0gKGJvb2wgKikgcGFsbG9jKHNpemVvZihib29sKSAqIG5wYXJ0cyk7 CisJbWFwLT5tZXJnZWRfaW5kZXhlcyA9IHBhbGxvY19hcnJheShpbnQsIG5wYXJ0cyk7CisJ bWFwLT5tZXJnZWQgPSBwYWxsb2NfYXJyYXkoYm9vbCwgbnBhcnRzKTsKIAltYXAtPmRpZF9y ZW1hcHBpbmcgPSBmYWxzZTsKLQltYXAtPm9sZF9pbmRleGVzID0gKGludCAqKSBwYWxsb2Mo c2l6ZW9mKGludCkgKiBucGFydHMpOworCW1hcC0+b2xkX2luZGV4ZXMgPSBwYWxsb2NfYXJy YXkoaW50LCBucGFydHMpOwogCWZvciAoaSA9IDA7IGkgPCBucGFydHM7IGkrKykKIAl7CiAJ CW1hcC0+bWVyZ2VkX2luZGV4ZXNbaV0gPSBtYXAtPm9sZF9pbmRleGVzW2ldID0gLTE7CkBA IC0yMzkzLDcgKzIzOTAsNyBAQCBmaXhfbWVyZ2VkX2luZGV4ZXMoUGFydGl0aW9uTWFwICpv dXRlcl9tYXAsIFBhcnRpdGlvbk1hcCAqaW5uZXJfbWFwLAogCiAJQXNzZXJ0KG5tZXJnZWQg PiAwKTsKIAotCW5ld19pbmRleGVzID0gKGludCAqKSBwYWxsb2Moc2l6ZW9mKGludCkgKiBu bWVyZ2VkKTsKKwluZXdfaW5kZXhlcyA9IHBhbGxvY19hcnJheShpbnQsIG5tZXJnZWQpOwog CWZvciAoaSA9IDA7IGkgPCBubWVyZ2VkOyBpKyspCiAJCW5ld19pbmRleGVzW2ldID0gLTE7 CiAKQEAgLTI0NTMsOCArMjQ1MCw4IEBAIGdlbmVyYXRlX21hdGNoaW5nX3BhcnRfcGFpcnMo UmVsT3B0SW5mbyAqb3V0ZXJfcmVsLCBSZWxPcHRJbmZvICppbm5lcl9yZWwsCiAJQXNzZXJ0 KCpvdXRlcl9wYXJ0cyA9PSBOSUwpOwogCUFzc2VydCgqaW5uZXJfcGFydHMgPT0gTklMKTsK IAotCW91dGVyX2luZGV4ZXMgPSAoaW50ICopIHBhbGxvYyhzaXplb2YoaW50KSAqIG5tZXJn ZWQpOwotCWlubmVyX2luZGV4ZXMgPSAoaW50ICopIHBhbGxvYyhzaXplb2YoaW50KSAqIG5t ZXJnZWQpOworCW91dGVyX2luZGV4ZXMgPSBwYWxsb2NfYXJyYXkoaW50LCBubWVyZ2VkKTsK Kwlpbm5lcl9pbmRleGVzID0gcGFsbG9jX2FycmF5KGludCwgbm1lcmdlZCk7CiAJZm9yIChp ID0gMDsgaSA8IG5tZXJnZWQ7IGkrKykKIAkJb3V0ZXJfaW5kZXhlc1tpXSA9IGlubmVyX2lu ZGV4ZXNbaV0gPSAtMTsKIApAQCAtMjUyNSwxMSArMjUyMiwxMSBAQCBidWlsZF9tZXJnZWRf cGFydGl0aW9uX2JvdW5kcyhjaGFyIHN0cmF0ZWd5LCBMaXN0ICptZXJnZWRfZGF0dW1zLAog CWludAkJCXBvczsKIAlMaXN0Q2VsbCAgICpsYzsKIAotCW1lcmdlZF9ib3VuZHMgPSAoUGFy dGl0aW9uQm91bmRJbmZvKSBwYWxsb2Moc2l6ZW9mKFBhcnRpdGlvbkJvdW5kSW5mb0RhdGEp KTsKKwltZXJnZWRfYm91bmRzID0gKFBhcnRpdGlvbkJvdW5kSW5mbykgcGFsbG9jX29iamVj dChQYXJ0aXRpb25Cb3VuZEluZm9EYXRhKTsKIAltZXJnZWRfYm91bmRzLT5zdHJhdGVneSA9 IHN0cmF0ZWd5OwogCW1lcmdlZF9ib3VuZHMtPm5kYXR1bXMgPSBuZGF0dW1zOwogCi0JbWVy Z2VkX2JvdW5kcy0+ZGF0dW1zID0gKERhdHVtICoqKSBwYWxsb2Moc2l6ZW9mKERhdHVtICop ICogbmRhdHVtcyk7CisJbWVyZ2VkX2JvdW5kcy0+ZGF0dW1zID0gcGFsbG9jX2FycmF5KERh dHVtICosIG5kYXR1bXMpOwogCXBvcyA9IDA7CiAJZm9yZWFjaChsYywgbWVyZ2VkX2RhdHVt cykKIAkJbWVyZ2VkX2JvdW5kcy0+ZGF0dW1zW3BvcysrXSA9IChEYXR1bSAqKSBsZmlyc3Qo bGMpOwpAQCAtMjUzNyw4ICsyNTM0LDcgQEAgYnVpbGRfbWVyZ2VkX3BhcnRpdGlvbl9ib3Vu ZHMoY2hhciBzdHJhdGVneSwgTGlzdCAqbWVyZ2VkX2RhdHVtcywKIAlpZiAoc3RyYXRlZ3kg PT0gUEFSVElUSU9OX1NUUkFURUdZX1JBTkdFKQogCXsKIAkJQXNzZXJ0KGxpc3RfbGVuZ3Ro KG1lcmdlZF9raW5kcykgPT0gbmRhdHVtcyk7Ci0JCW1lcmdlZF9ib3VuZHMtPmtpbmQgPSAo UGFydGl0aW9uUmFuZ2VEYXR1bUtpbmQgKiopCi0JCQlwYWxsb2Moc2l6ZW9mKFBhcnRpdGlv blJhbmdlRGF0dW1LaW5kICopICogbmRhdHVtcyk7CisJCW1lcmdlZF9ib3VuZHMtPmtpbmQg PSBwYWxsb2NfYXJyYXkoUGFydGl0aW9uUmFuZ2VEYXR1bUtpbmQgKiwgbmRhdHVtcyk7CiAJ CXBvcyA9IDA7CiAJCWZvcmVhY2gobGMsIG1lcmdlZF9raW5kcykKIAkJCW1lcmdlZF9ib3Vu ZHMtPmtpbmRbcG9zKytdID0gKFBhcnRpdGlvblJhbmdlRGF0dW1LaW5kICopIGxmaXJzdChs Yyk7CkBAIC0yNTU5LDcgKzI1NTUsNyBAQCBidWlsZF9tZXJnZWRfcGFydGl0aW9uX2JvdW5k cyhjaGFyIHN0cmF0ZWd5LCBMaXN0ICptZXJnZWRfZGF0dW1zLAogCiAJQXNzZXJ0KGxpc3Rf bGVuZ3RoKG1lcmdlZF9pbmRleGVzKSA9PSBuZGF0dW1zKTsKIAltZXJnZWRfYm91bmRzLT5u aW5kZXhlcyA9IG5kYXR1bXM7Ci0JbWVyZ2VkX2JvdW5kcy0+aW5kZXhlcyA9IChpbnQgKikg cGFsbG9jKHNpemVvZihpbnQpICogbmRhdHVtcyk7CisJbWVyZ2VkX2JvdW5kcy0+aW5kZXhl cyA9IHBhbGxvY19hcnJheShpbnQsIG5kYXR1bXMpOwogCXBvcyA9IDA7CiAJZm9yZWFjaChs YywgbWVyZ2VkX2luZGV4ZXMpCiAJCW1lcmdlZF9ib3VuZHMtPmluZGV4ZXNbcG9zKytdID0g bGZpcnN0X2ludChsYyk7CkBAIC0zNDM0LDExICszNDMwLDEwIEBAIG1ha2Vfb25lX3BhcnRp dGlvbl9yYm91bmQoUGFydGl0aW9uS2V5IGtleSwgaW50IGluZGV4LCBMaXN0ICpkYXR1bXMs IGJvb2wgbG93ZXIpCiAKIAlBc3NlcnQoZGF0dW1zICE9IE5JTCk7CiAKLQlib3VuZCA9IChQ YXJ0aXRpb25SYW5nZUJvdW5kICopIHBhbGxvYzAoc2l6ZW9mKFBhcnRpdGlvblJhbmdlQm91 bmQpKTsKKwlib3VuZCA9IHBhbGxvYzBfb2JqZWN0KFBhcnRpdGlvblJhbmdlQm91bmQpOwog CWJvdW5kLT5pbmRleCA9IGluZGV4OwotCWJvdW5kLT5kYXR1bXMgPSAoRGF0dW0gKikgcGFs bG9jMChrZXktPnBhcnRuYXR0cyAqIHNpemVvZihEYXR1bSkpOwotCWJvdW5kLT5raW5kID0g KFBhcnRpdGlvblJhbmdlRGF0dW1LaW5kICopIHBhbGxvYzAoa2V5LT5wYXJ0bmF0dHMgKgot CQkJCQkJCQkJCQkJCSAgc2l6ZW9mKFBhcnRpdGlvblJhbmdlRGF0dW1LaW5kKSk7CisJYm91 bmQtPmRhdHVtcyA9IHBhbGxvYzBfYXJyYXkoRGF0dW0sIGtleS0+cGFydG5hdHRzKTsKKwli b3VuZC0+a2luZCA9IHBhbGxvYzBfYXJyYXkoUGFydGl0aW9uUmFuZ2VEYXR1bUtpbmQsIGtl eS0+cGFydG5hdHRzKTsKIAlib3VuZC0+bG93ZXIgPSBsb3dlcjsKIAogCWkgPSAwOwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRkZXNjLmMgYi9zcmMvYmFj a2VuZC9wYXJ0aXRpb25pbmcvcGFydGRlc2MuYwppbmRleCAzMjhiNGQ0NTBlNC4uNTYyNGY1 MDNmZWMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0ZGVzYy5j CisrKyBiL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0ZGVzYy5jCkBAIC00MjYsNyAr NDI2LDcgQEAgQ3JlYXRlUGFydGl0aW9uRGlyZWN0b3J5KE1lbW9yeUNvbnRleHQgbWN4dCwg Ym9vbCBvbWl0X2RldGFjaGVkKQogCVBhcnRpdGlvbkRpcmVjdG9yeSBwZGlyOwogCUhBU0hD VEwJCWN0bDsKIAotCXBkaXIgPSBwYWxsb2Moc2l6ZW9mKFBhcnRpdGlvbkRpcmVjdG9yeURh dGEpKTsKKwlwZGlyID0gcGFsbG9jX29iamVjdChQYXJ0aXRpb25EaXJlY3RvcnlEYXRhKTsK IAlwZGlyLT5wZGlyX21jeHQgPSBtY3h0OwogCiAJY3RsLmtleXNpemUgPSBzaXplb2YoT2lk KTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUuYyBi L3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUuYwppbmRleCA2ZmZmNDAzNGMy NC4uYmYzZjZkODBjN2EgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9w YXJ0cHJ1bmUuYworKysgYi9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydHBydW5lLmMK QEAgLTI0Niw3ICsyNDYsNyBAQCBtYWtlX3BhcnRpdGlvbl9wcnVuZWluZm8oUGxhbm5lcklu Zm8gKnJvb3QsIFJlbE9wdEluZm8gKnBhcmVudHJlbCwKIAkgKiB0aGF0IHplcm8gY2FuIHJl cHJlc2VudCBhbiB1bi1maWxsZWQgYXJyYXkgZW50cnkuCiAJICovCiAJYWxscGFydHJlbGlk cyA9IE5JTDsKLQlyZWxpZF9zdWJwbGFuX21hcCA9IHBhbGxvYzAoc2l6ZW9mKGludCkgKiBy b290LT5zaW1wbGVfcmVsX2FycmF5X3NpemUpOworCXJlbGlkX3N1YnBsYW5fbWFwID0gcGFs bG9jMF9hcnJheShpbnQsIHJvb3QtPnNpbXBsZV9yZWxfYXJyYXlfc2l6ZSk7CiAKIAlpID0g MTsKIAlmb3JlYWNoKGxjLCBzdWJwYXRocykKQEAgLTQ2NSw3ICs0NjUsNyBAQCBtYWtlX3Bh cnRpdGlvbmVkcmVsX3BydW5laW5mbyhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAq cGFyZW50cmVsLAogCSAqIEluIHRoaXMgcGhhc2Ugd2UgZGlzY292ZXIgd2hldGhlciBydW50 aW1lIHBydW5pbmcgaXMgbmVlZGVkIGF0IGFsbDsgaWYKIAkgKiBub3QsIHdlIGNhbiBhdm9p ZCBkb2luZyBmdXJ0aGVyIHdvcmsuCiAJICovCi0JcmVsaWRfc3VicGFydF9tYXAgPSBwYWxs b2MwKHNpemVvZihpbnQpICogcm9vdC0+c2ltcGxlX3JlbF9hcnJheV9zaXplKTsKKwlyZWxp ZF9zdWJwYXJ0X21hcCA9IHBhbGxvYzBfYXJyYXkoaW50LCByb290LT5zaW1wbGVfcmVsX2Fy cmF5X3NpemUpOwogCiAJaSA9IDE7CiAJcnRpID0gLTE7CkBAIC04MTgsOSArODE4LDkgQEAg cHJ1bmVfYXBwZW5kX3JlbF9wYXJ0aXRpb25zKFJlbE9wdEluZm8gKnJlbCkKIAljb250ZXh0 LmJvdW5kaW5mbyA9IHJlbC0+Ym91bmRpbmZvOwogCWNvbnRleHQucGFydGNvbGxhdGlvbiA9 IHJlbC0+cGFydF9zY2hlbWUtPnBhcnRjb2xsYXRpb247CiAJY29udGV4dC5wYXJ0c3VwZnVu YyA9IHJlbC0+cGFydF9zY2hlbWUtPnBhcnRzdXBmdW5jOwotCWNvbnRleHQuc3RlcGNtcGZ1 bmNzID0gKEZtZ3JJbmZvICopIHBhbGxvYzAoc2l6ZW9mKEZtZ3JJbmZvKSAqCi0JCQkJCQkJ CQkJCQljb250ZXh0LnBhcnRuYXR0cyAqCi0JCQkJCQkJCQkJCQlsaXN0X2xlbmd0aChwcnVu aW5nX3N0ZXBzKSk7CisJY29udGV4dC5zdGVwY21wZnVuY3MgPSBwYWxsb2MwX2FycmF5KEZt Z3JJbmZvLAorCQkJCQkJCQkJCQkgY29udGV4dC5wYXJ0bmF0dHMgKgorCQkJCQkJCQkJCQkJ IGxpc3RfbGVuZ3RoKHBydW5pbmdfc3RlcHMpKTsKIAljb250ZXh0LnBwY2NvbnRleHQgPSBD dXJyZW50TWVtb3J5Q29udGV4dDsKIAogCS8qIFRoZXNlIGFyZSBub3QgdmFsaWQgd2hlbiBi ZWluZyBjYWxsZWQgZnJvbSB0aGUgcGxhbm5lciAqLwpAQCAtMTg5MCw3ICsxODkwLDcgQEAg bWF0Y2hfY2xhdXNlX3RvX3BhcnRpdGlvbl9rZXkoR2VuZXJhdGVQcnVuaW5nU3RlcHNDb250 ZXh0ICpjb250ZXh0LAogCQkJcmV0dXJuIFBBUlRDTEFVU0VfTUFUQ0hfU1RFUFM7CiAJCX0K IAotCQlwYXJ0Y2xhdXNlID0gKFBhcnRDbGF1c2VJbmZvICopIHBhbGxvYyhzaXplb2YoUGFy dENsYXVzZUluZm8pKTsKKwkJcGFydGNsYXVzZSA9IHBhbGxvY19vYmplY3QoUGFydENsYXVz ZUluZm8pOwogCQlwYXJ0Y2xhdXNlLT5rZXlubyA9IHBhcnRrZXlpZHg7CiAJCS8qIERvIHBy dW5pbmcgd2l0aCB0aGUgQm9vbGVhbiBlcXVhbGl0eSBvcGVyYXRvci4gKi8KIAkJcGFydGNs YXVzZS0+b3BubyA9IEJvb2xlYW5FcXVhbE9wZXJhdG9yOwpAQCAtMjE0Nyw3ICsyMTQ3LDcg QEAgbWF0Y2hfY2xhdXNlX3RvX3BhcnRpdGlvbl9rZXkoR2VuZXJhdGVQcnVuaW5nU3RlcHND b250ZXh0ICpjb250ZXh0LAogCQkvKgogCQkgKiBCdWlsZCB0aGUgY2xhdXNlLCBwYXNzaW5n IHRoZSBuZWdhdG9yIGlmIGFwcGxpY2FibGUuCiAJCSAqLwotCQlwYXJ0Y2xhdXNlID0gKFBh cnRDbGF1c2VJbmZvICopIHBhbGxvYyhzaXplb2YoUGFydENsYXVzZUluZm8pKTsKKwkJcGFy dGNsYXVzZSA9IHBhbGxvY19vYmplY3QoUGFydENsYXVzZUluZm8pOwogCQlwYXJ0Y2xhdXNl LT5rZXlubyA9IHBhcnRrZXlpZHg7CiAJCWlmIChpc19vcG5lX2xpc3RwKQogCQl7CkBAIC0y NjkzLDcgKzI2OTMsNyBAQCBnZXRfbWF0Y2hpbmdfaGFzaF9ib3VuZHMoUGFydGl0aW9uUHJ1 bmVDb250ZXh0ICpjb250ZXh0LAogCQkJCQkJIFN0cmF0ZWd5TnVtYmVyIG9wc3RyYXRlZ3ks IGNvbnN0IERhdHVtICp2YWx1ZXMsIGludCBudmFsdWVzLAogCQkJCQkJIEZtZ3JJbmZvICpw YXJ0c3VwZnVuYywgQml0bWFwc2V0ICpudWxsa2V5cykKIHsKLQlQcnVuZVN0ZXBSZXN1bHQg KnJlc3VsdCA9IChQcnVuZVN0ZXBSZXN1bHQgKikgcGFsbG9jMChzaXplb2YoUHJ1bmVTdGVw UmVzdWx0KSk7CisJUHJ1bmVTdGVwUmVzdWx0ICpyZXN1bHQgPSBwYWxsb2MwX29iamVjdChQ cnVuZVN0ZXBSZXN1bHQpOwogCVBhcnRpdGlvbkJvdW5kSW5mbyBib3VuZGluZm8gPSBjb250 ZXh0LT5ib3VuZGluZm87CiAJaW50CQkgICAqcGFydGluZGljZXMgPSBib3VuZGluZm8tPmlu ZGV4ZXM7CiAJaW50CQkJcGFydG5hdHRzID0gY29udGV4dC0+cGFydG5hdHRzOwpAQCAtMjc3 MCw3ICsyNzcwLDcgQEAgZ2V0X21hdGNoaW5nX2xpc3RfYm91bmRzKFBhcnRpdGlvblBydW5l Q29udGV4dCAqY29udGV4dCwKIAkJCQkJCSBTdHJhdGVneU51bWJlciBvcHN0cmF0ZWd5LCBE YXR1bSB2YWx1ZSwgaW50IG52YWx1ZXMsCiAJCQkJCQkgRm1nckluZm8gKnBhcnRzdXBmdW5j LCBCaXRtYXBzZXQgKm51bGxrZXlzKQogewotCVBydW5lU3RlcFJlc3VsdCAqcmVzdWx0ID0g KFBydW5lU3RlcFJlc3VsdCAqKSBwYWxsb2MwKHNpemVvZihQcnVuZVN0ZXBSZXN1bHQpKTsK KwlQcnVuZVN0ZXBSZXN1bHQgKnJlc3VsdCA9IHBhbGxvYzBfb2JqZWN0KFBydW5lU3RlcFJl c3VsdCk7CiAJUGFydGl0aW9uQm91bmRJbmZvIGJvdW5kaW5mbyA9IGNvbnRleHQtPmJvdW5k aW5mbzsKIAlpbnQJCQlvZmYsCiAJCQkJbWlub2ZmLApAQCAtMjk4MSw3ICsyOTgxLDcgQEAg Z2V0X21hdGNoaW5nX3JhbmdlX2JvdW5kcyhQYXJ0aXRpb25QcnVuZUNvbnRleHQgKmNvbnRl eHQsCiAJCQkJCQkgIFN0cmF0ZWd5TnVtYmVyIG9wc3RyYXRlZ3ksIGNvbnN0IERhdHVtICp2 YWx1ZXMsIGludCBudmFsdWVzLAogCQkJCQkJICBGbWdySW5mbyAqcGFydHN1cGZ1bmMsIEJp dG1hcHNldCAqbnVsbGtleXMpCiB7Ci0JUHJ1bmVTdGVwUmVzdWx0ICpyZXN1bHQgPSAoUHJ1 bmVTdGVwUmVzdWx0ICopIHBhbGxvYzAoc2l6ZW9mKFBydW5lU3RlcFJlc3VsdCkpOworCVBy dW5lU3RlcFJlc3VsdCAqcmVzdWx0ID0gcGFsbG9jMF9vYmplY3QoUHJ1bmVTdGVwUmVzdWx0 KTsKIAlQYXJ0aXRpb25Cb3VuZEluZm8gYm91bmRpbmZvID0gY29udGV4dC0+Ym91bmRpbmZv OwogCU9pZAkJICAgKnBhcnRjb2xsYXRpb24gPSBjb250ZXh0LT5wYXJ0Y29sbGF0aW9uOwog CWludAkJCXBhcnRuYXR0cyA9IGNvbnRleHQtPnBhcnRuYXR0czsKQEAgLTM1MDQsNyArMzUw NCw3IEBAIHBlcmZvcm1fcHJ1bmluZ19iYXNlX3N0ZXAoUGFydGl0aW9uUHJ1bmVDb250ZXh0 ICpjb250ZXh0LAogCQkJewogCQkJCVBydW5lU3RlcFJlc3VsdCAqcmVzdWx0OwogCi0JCQkJ cmVzdWx0ID0gKFBydW5lU3RlcFJlc3VsdCAqKSBwYWxsb2Moc2l6ZW9mKFBydW5lU3RlcFJl c3VsdCkpOworCQkJCXJlc3VsdCA9IHBhbGxvY19vYmplY3QoUHJ1bmVTdGVwUmVzdWx0KTsK IAkJCQlyZXN1bHQtPmJvdW5kX29mZnNldHMgPSBOVUxMOwogCQkJCXJlc3VsdC0+c2Nhbl9k ZWZhdWx0ID0gZmFsc2U7CiAJCQkJcmVzdWx0LT5zY2FuX251bGwgPSBmYWxzZTsKQEAgLTM1 OTMsNyArMzU5Myw3IEBAIHBlcmZvcm1fcHJ1bmluZ19jb21iaW5lX3N0ZXAoUGFydGl0aW9u UHJ1bmVDb250ZXh0ICpjb250ZXh0LAogCQkJCQkJCSBQYXJ0aXRpb25QcnVuZVN0ZXBDb21i aW5lICpjc3RlcCwKIAkJCQkJCQkgUHJ1bmVTdGVwUmVzdWx0ICoqc3RlcF9yZXN1bHRzKQog ewotCVBydW5lU3RlcFJlc3VsdCAqcmVzdWx0ID0gKFBydW5lU3RlcFJlc3VsdCAqKSBwYWxs b2MwKHNpemVvZihQcnVuZVN0ZXBSZXN1bHQpKTsKKwlQcnVuZVN0ZXBSZXN1bHQgKnJlc3Vs dCA9IHBhbGxvYzBfb2JqZWN0KFBydW5lU3RlcFJlc3VsdCk7CiAJYm9vbAkJZmlyc3RzdGVw OwogCUxpc3RDZWxsICAgKmxjMTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1h c3Rlci9hdXRvdmFjdXVtLmMgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0u YwppbmRleCAxYzM4NDg4ZjJjYi4uZWQzZTcyNTU0NDIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0 ZXIvYXV0b3ZhY3V1bS5jCkBAIC0xODY1LDcgKzE4NjUsNyBAQCBnZXRfZGF0YWJhc2VfbGlz dCh2b2lkKQogCQkgKi8KIAkJb2xkY3h0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKHJlc3Vs dGN4dCk7CiAKLQkJYXZkYiA9IChhdndfZGJhc2UgKikgcGFsbG9jKHNpemVvZihhdndfZGJh c2UpKTsKKwkJYXZkYiA9IHBhbGxvY19vYmplY3QoYXZ3X2RiYXNlKTsKIAogCQlhdmRiLT5h ZHdfZGF0aWQgPSBwZ2RhdGFiYXNlLT5vaWQ7CiAJCWF2ZGItPmFkd19uYW1lID0gcHN0cmR1 cChOYW1lU3RyKHBnZGF0YWJhc2UtPmRhdG5hbWUpKTsKQEAgLTI3NTMsNyArMjc1Myw3IEBA IGV4dHJhY3RfYXV0b3ZhY19vcHRzKEhlYXBUdXBsZSB0dXAsIFR1cGxlRGVzYyBwZ19jbGFz c19kZXNjKQogCWlmIChyZWxvcHRzID09IE5VTEwpCiAJCXJldHVybiBOVUxMOwogCi0JYXYg PSBwYWxsb2Moc2l6ZW9mKEF1dG9WYWNPcHRzKSk7CisJYXYgPSBwYWxsb2Nfb2JqZWN0KEF1 dG9WYWNPcHRzKTsKIAltZW1jcHkoYXYsICYoKChTdGRSZE9wdGlvbnMgKikgcmVsb3B0cykt PmF1dG92YWN1dW0pLCBzaXplb2YoQXV0b1ZhY09wdHMpKTsKIAlwZnJlZShyZWxvcHRzKTsK IApAQCAtMjg1Nyw3ICsyODU3LDcgQEAgdGFibGVfcmVjaGVja19hdXRvdmFjKE9pZCByZWxp ZCwgSFRBQiAqdGFibGVfdG9hc3RfbWFwLAogCQkJPyBhdm9wdHMtPm11bHRpeGFjdF9mcmVl emVfdGFibGVfYWdlCiAJCQk6IGRlZmF1bHRfbXVsdGl4YWN0X2ZyZWV6ZV90YWJsZV9hZ2U7 CiAKLQkJdGFiID0gcGFsbG9jKHNpemVvZihhdXRvdmFjX3RhYmxlKSk7CisJCXRhYiA9IHBh bGxvY19vYmplY3QoYXV0b3ZhY190YWJsZSk7CiAJCXRhYi0+YXRfcmVsaWQgPSByZWxpZDsK IAkJdGFiLT5hdF9zaGFyZWRyZWwgPSBjbGFzc0Zvcm0tPnJlbGlzc2hhcmVkOwogCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2Jnd29ya2VyLmMgYi9zcmMvYmFja2Vu ZC9wb3N0bWFzdGVyL2Jnd29ya2VyLmMKaW5kZXggMTQyYTAyZWI1ZTkuLjhlMTA2ODk2OWFl IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2Jnd29ya2VyLmMKKysrIGIv c3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dvcmtlci5jCkBAIC0xMTMyLDcgKzExMzIsNyBA QCBSZWdpc3RlckR5bmFtaWNCYWNrZ3JvdW5kV29ya2VyKEJhY2tncm91bmRXb3JrZXIgKndv cmtlciwKIAkgKi8KIAlpZiAoc3VjY2VzcyAmJiBoYW5kbGUpCiAJewotCQkqaGFuZGxlID0g cGFsbG9jKHNpemVvZihCYWNrZ3JvdW5kV29ya2VySGFuZGxlKSk7CisJCSpoYW5kbGUgPSBw YWxsb2Nfb2JqZWN0KEJhY2tncm91bmRXb3JrZXJIYW5kbGUpOwogCQkoKmhhbmRsZSktPnNs b3QgPSBzbG90bm87CiAJCSgqaGFuZGxlKS0+Z2VuZXJhdGlvbiA9IGdlbmVyYXRpb247CiAJ fQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9jaGVja3BvaW50ZXIuYyBi L3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvY2hlY2twb2ludGVyLmMKaW5kZXggZTg0ZTg2NjNl OTYuLmY5ZDFkNWVjOTNjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2No ZWNrcG9pbnRlci5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvY2hlY2twb2ludGVy LmMKQEAgLTEzMTYsNyArMTMxNiw3IEBAIENvbXBhY3RDaGVja3BvaW50ZXJSZXF1ZXN0UXVl dWUodm9pZCkKIAludW1fcmVxdWVzdHMgPSBDaGVja3BvaW50ZXJTaG1lbS0+bnVtX3JlcXVl c3RzOwogCiAJLyogSW5pdGlhbGl6ZSBza2lwX3Nsb3QgYXJyYXkgKi8KLQlza2lwX3Nsb3Qg PSBwYWxsb2MwKHNpemVvZihib29sKSAqIG1heF9yZXF1ZXN0cyk7CisJc2tpcF9zbG90ID0g cGFsbG9jMF9hcnJheShib29sLCBtYXhfcmVxdWVzdHMpOwogCiAJaGVhZCA9IENoZWNrcG9p bnRlclNobWVtLT5oZWFkOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVy L2xhdW5jaF9iYWNrZW5kLmMgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2xhdW5jaF9iYWNr ZW5kLmMKaW5kZXggOTc2NjM4YTU4YWMuLjk4ZjdjNDg0OGM5IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9wb3N0bWFzdGVyL2xhdW5jaF9iYWNrZW5kLmMKKysrIGIvc3JjL2JhY2tlbmQv cG9zdG1hc3Rlci9sYXVuY2hfYmFja2VuZC5jCkBAIC0yNTgsNyArMjU4LDcgQEAgcG9zdG1h c3Rlcl9jaGlsZF9sYXVuY2goQmFja2VuZFR5cGUgY2hpbGRfdHlwZSwgaW50IGNoaWxkX3Ns b3QsCiAJCU15UE1DaGlsZFNsb3QgPSBjaGlsZF9zbG90OwogCQlpZiAoY2xpZW50X3NvY2sp CiAJCXsKLQkJCU15Q2xpZW50U29ja2V0ID0gcGFsbG9jKHNpemVvZihDbGllbnRTb2NrZXQp KTsKKwkJCU15Q2xpZW50U29ja2V0ID0gcGFsbG9jX29iamVjdChDbGllbnRTb2NrZXQpOwog CQkJbWVtY3B5KE15Q2xpZW50U29ja2V0LCBjbGllbnRfc29jaywgc2l6ZW9mKENsaWVudFNv Y2tldCkpOwogCQl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvcGdh cmNoLmMgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3BnYXJjaC5jCmluZGV4IGNlNmI1Mjk5 MzI0Li4zYTY1ZDg0MTcyNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9w Z2FyY2guYworKysgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3BnYXJjaC5jCkBAIC0yNTcs NyArMjU3LDcgQEAgUGdBcmNoaXZlck1haW4oY29uc3Qgdm9pZCAqc3RhcnR1cF9kYXRhLCBz aXplX3Qgc3RhcnR1cF9kYXRhX2xlbikKIAlQZ0FyY2gtPnBncHJvY25vID0gTXlQcm9jTnVt YmVyOwogCiAJLyogQ3JlYXRlIHdvcmtzcGFjZSBmb3IgcGdhcmNoX3JlYWR5WGxvZygpICov Ci0JYXJjaF9maWxlcyA9IHBhbGxvYyhzaXplb2Yoc3RydWN0IGFyY2hfZmlsZXNfc3RhdGUp KTsKKwlhcmNoX2ZpbGVzID0gcGFsbG9jX29iamVjdChzdHJ1Y3QgYXJjaF9maWxlc19zdGF0 ZSk7CiAJYXJjaF9maWxlcy0+YXJjaF9maWxlc19zaXplID0gMDsKIAogCS8qIEluaXRpYWxp emUgb3VyIG1heC1oZWFwIGZvciBwcmlvcml0aXppbmcgZmlsZXMgdG8gYXJjaGl2ZS4gKi8K QEAgLTk0NSw3ICs5NDUsNyBAQCBMb2FkQXJjaGl2ZUxpYnJhcnkodm9pZCkKIAkJZXJlcG9y dChFUlJPUiwKIAkJCQkoZXJybXNnKCJhcmNoaXZlIG1vZHVsZXMgbXVzdCByZWdpc3RlciBh biBhcmNoaXZlIGNhbGxiYWNrIikpKTsKIAotCWFyY2hpdmVfbW9kdWxlX3N0YXRlID0gKEFy Y2hpdmVNb2R1bGVTdGF0ZSAqKSBwYWxsb2MwKHNpemVvZihBcmNoaXZlTW9kdWxlU3RhdGUp KTsKKwlhcmNoaXZlX21vZHVsZV9zdGF0ZSA9IHBhbGxvYzBfb2JqZWN0KEFyY2hpdmVNb2R1 bGVTdGF0ZSk7CiAJaWYgKEFyY2hpdmVDYWxsYmFja3MtPnN0YXJ0dXBfY2IgIT0gTlVMTCkK IAkJQXJjaGl2ZUNhbGxiYWNrcy0+c3RhcnR1cF9jYihhcmNoaXZlX21vZHVsZV9zdGF0ZSk7 CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvcG9zdG1hc3Rlci5jIGIv c3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9wb3N0bWFzdGVyLmMKaW5kZXggN2MwNjRjZjlmYmIu LjU1ZGNhM2RiYTc5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3Bvc3Rt YXN0ZXIuYworKysgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3Bvc3RtYXN0ZXIuYwpAQCAt NDU2Miw3ICs0NTYyLDcgQEAgcGd3aW4zMl9yZWdpc3Rlcl9kZWFkY2hpbGRfY2FsbGJhY2so SEFORExFIHByb2NIYW5kbGUsIERXT1JEIHByb2NJZCkKIHsKIAl3aW4zMl9kZWFkY2hpbGRf d2FpdGluZm8gKmNoaWxkaW5mbzsKIAotCWNoaWxkaW5mbyA9IHBhbGxvYyhzaXplb2Yod2lu MzJfZGVhZGNoaWxkX3dhaXRpbmZvKSk7CisJY2hpbGRpbmZvID0gcGFsbG9jX29iamVjdCh3 aW4zMl9kZWFkY2hpbGRfd2FpdGluZm8pOwogCWNoaWxkaW5mby0+cHJvY0hhbmRsZSA9IHBy b2NIYW5kbGU7CiAJY2hpbGRpbmZvLT5wcm9jSWQgPSBwcm9jSWQ7CiAKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvc3lzbG9nZ2VyLmMgYi9zcmMvYmFja2VuZC9wb3N0 bWFzdGVyL3N5c2xvZ2dlci5jCmluZGV4IDUwYzJlZGVjMWY2Li41MjZhZDA1M2E0NSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9zeXNsb2dnZXIuYworKysgYi9zcmMv YmFja2VuZC9wb3N0bWFzdGVyL3N5c2xvZ2dlci5jCkBAIC05NjAsNyArOTYwLDcgQEAgcHJv Y2Vzc19waXBlX2lucHV0KGNoYXIgKmxvZ2J1ZmZlciwgaW50ICpieXRlc19pbl9sb2didWZm ZXIpCiAJCQkJCQkgKiBOZWVkIGEgZnJlZSBzbG90LCBidXQgdGhlcmUgaXNuJ3Qgb25lIGlu IHRoZSBsaXN0LAogCQkJCQkJICogc28gY3JlYXRlIGEgbmV3IG9uZSBhbmQgZXh0ZW5kIHRo ZSBsaXN0IHdpdGggaXQuCiAJCQkJCQkgKi8KLQkJCQkJCWZyZWVfc2xvdCA9IHBhbGxvYyhz aXplb2Yoc2F2ZV9idWZmZXIpKTsKKwkJCQkJCWZyZWVfc2xvdCA9IHBhbGxvY19vYmplY3Qo c2F2ZV9idWZmZXIpOwogCQkJCQkJYnVmZmVyX2xpc3QgPSBsYXBwZW5kKGJ1ZmZlcl9saXN0 LCBmcmVlX3Nsb3QpOwogCQkJCQkJYnVmZmVyX2xpc3RzW3AucGlkICUgTkJVRkZFUl9MSVNU U10gPSBidWZmZXJfbGlzdDsKIAkJCQkJfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9z dG1hc3Rlci93YWxzdW1tYXJpemVyLmMgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3dhbHN1 bW1hcml6ZXIuYwppbmRleCBjNGE4ODhhMDgxYy4uZTdlNGQ2NTJmOTcgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvd2Fsc3VtbWFyaXplci5jCisrKyBiL3NyYy9iYWNr ZW5kL3Bvc3RtYXN0ZXIvd2Fsc3VtbWFyaXplci5jCkBAIC05MjAsOCArOTIwLDcgQEAgU3Vt bWFyaXplV0FMKFRpbWVMaW5lSUQgdGxpLCBYTG9nUmVjUHRyIHN0YXJ0X2xzbiwgYm9vbCBl eGFjdCwKIAlib29sCQlmYXN0X2ZvcndhcmQgPSB0cnVlOwogCiAJLyogSW5pdGlhbGl6ZSBw cml2YXRlIGRhdGEgZm9yIHhsb2dyZWFkZXIuICovCi0JcHJpdmF0ZV9kYXRhID0gKFN1bW1h cml6ZXJSZWFkTG9jYWxYTG9nUHJpdmF0ZSAqKQotCQlwYWxsb2MwKHNpemVvZihTdW1tYXJp emVyUmVhZExvY2FsWExvZ1ByaXZhdGUpKTsKKwlwcml2YXRlX2RhdGEgPSBwYWxsb2MwX29i amVjdChTdW1tYXJpemVyUmVhZExvY2FsWExvZ1ByaXZhdGUpOwogCXByaXZhdGVfZGF0YS0+ dGxpID0gdGxpOwogCXByaXZhdGVfZGF0YS0+aGlzdG9yaWMgPSBYTG9nUmVjUHRySXNWYWxp ZChzd2l0Y2hfbHNuKTsKIAlwcml2YXRlX2RhdGEtPnJlYWRfdXB0byA9IG1heGltdW1fbHNu OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbGlicHF3YWxyZWNlaXZl ci9saWJwcXdhbHJlY2VpdmVyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9saWJwcXdh bHJlY2VpdmVyL2xpYnBxd2FscmVjZWl2ZXIuYwppbmRleCAyMzk2NDFiZmJiNi4uNWRkYzll ODEyZTcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xpYnBxd2FscmVj ZWl2ZXIvbGlicHF3YWxyZWNlaXZlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xpYnBxd2FscmVjZWl2ZXIvbGlicHF3YWxyZWNlaXZlci5jCkBAIC0yMTEsNyArMjExLDcg QEAgbGlicHFyY3ZfY29ubmVjdChjb25zdCBjaGFyICpjb25uaW5mbywgYm9vbCByZXBsaWNh dGlvbiwgYm9vbCBsb2dpY2FsLAogCiAJQXNzZXJ0KGkgPCBsZW5ndGhvZihrZXlzKSk7CiAK LQljb25uID0gcGFsbG9jMChzaXplb2YoV2FsUmVjZWl2ZXJDb25uKSk7CisJY29ubiA9IHBh bGxvYzBfb2JqZWN0KFdhbFJlY2VpdmVyQ29ubik7CiAJY29ubi0+c3RyZWFtQ29ubiA9CiAJ CWxpYnBxc3J2X2Nvbm5lY3RfcGFyYW1zKGtleXMsIHZhbHMsCiAJCQkJCQkJCSAvKiBleHBh bmRfZGJuYW1lID0gKi8gdHJ1ZSwKQEAgLTExMDIsNyArMTEwMiw3IEBAIGxpYnBxcmN2X2V4 ZWMoV2FsUmVjZWl2ZXJDb25uICpjb25uLCBjb25zdCBjaGFyICpxdWVyeSwKIAkJCSAgY29u c3QgaW50IG5SZXRUeXBlcywgY29uc3QgT2lkICpyZXRUeXBlcykKIHsKIAlQR3Jlc3VsdCAg ICpwZ3JlcyA9IE5VTEw7Ci0JV2FsUmN2RXhlY1Jlc3VsdCAqd2FscmVzID0gcGFsbG9jMChz aXplb2YoV2FsUmN2RXhlY1Jlc3VsdCkpOworCVdhbFJjdkV4ZWNSZXN1bHQgKndhbHJlcyA9 IHBhbGxvYzBfb2JqZWN0KFdhbFJjdkV4ZWNSZXN1bHQpOwogCWNoYXIJICAgKmRpYWdfc3Fs c3RhdGU7CiAKIAlpZiAoTXlEYXRhYmFzZUlkID09IEludmFsaWRPaWQpCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIu YyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtl ci5jCmluZGV4IGJhYTY4YzFhYjZjLi40M2JlYTMxZjE3NyAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMKKysrIGIv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMK QEAgLTQyNSw3ICs0MjUsNyBAQCBwYV9sYXVuY2hfcGFyYWxsZWxfd29ya2VyKHZvaWQpCiAJ ICovCiAJb2xkY29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhBcHBseUNvbnRleHQp OwogCi0Jd2luZm8gPSAoUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKikgcGFsbG9jMChzaXpl b2YoUGFyYWxsZWxBcHBseVdvcmtlckluZm8pKTsKKwl3aW5mbyA9IHBhbGxvYzBfb2JqZWN0 KFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvKTsKIAogCS8qIFNldHVwIHNoYXJlZCBtZW1vcnku ICovCiAJaWYgKCFwYV9zZXR1cF9kc20od2luZm8pKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbG9naWNhbC9sYXVuY2hlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC9sYXVuY2hlci5jCmluZGV4IGZkZjFjY2FkNDYyLi4zOTkxZTE0OTVk NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sYXVuY2hl ci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYwpA QCAtMTQ3LDcgKzE0Nyw3IEBAIGdldF9zdWJzY3JpcHRpb25fbGlzdCh2b2lkKQogCQkgKi8K IAkJb2xkY3h0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKHJlc3VsdGN4dCk7CiAKLQkJc3Vi ID0gKFN1YnNjcmlwdGlvbiAqKSBwYWxsb2MwKHNpemVvZihTdWJzY3JpcHRpb24pKTsKKwkJ c3ViID0gcGFsbG9jMF9vYmplY3QoU3Vic2NyaXB0aW9uKTsKIAkJc3ViLT5vaWQgPSBzdWJm b3JtLT5vaWQ7CiAJCXN1Yi0+ZGJpZCA9IHN1YmZvcm0tPnN1YmRiaWQ7CiAJCXN1Yi0+b3du ZXIgPSBzdWJmb3JtLT5zdWJvd25lcjsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvbG9naWNhbC5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC9sb2dpY2FsLmMKaW5kZXggODY2ZjkyY2Y3OTkuLjFiMTFlZDYzZGM2IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xvZ2ljYWwuYworKysgYi9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xvZ2ljYWwuYwpAQCAtMTcyLDcgKzE3 Miw3IEBAIFN0YXJ0dXBEZWNvZGluZ0NvbnRleHQoTGlzdCAqb3V0cHV0X3BsdWdpbl9vcHRp b25zLAogCQkJCQkJCQkJIkxvZ2ljYWwgZGVjb2RpbmcgY29udGV4dCIsCiAJCQkJCQkJCQlB TExPQ1NFVF9ERUZBVUxUX1NJWkVTKTsKIAlvbGRfY29udGV4dCA9IE1lbW9yeUNvbnRleHRT d2l0Y2hUbyhjb250ZXh0KTsKLQljdHggPSBwYWxsb2MwKHNpemVvZihMb2dpY2FsRGVjb2Rp bmdDb250ZXh0KSk7CisJY3R4ID0gcGFsbG9jMF9vYmplY3QoTG9naWNhbERlY29kaW5nQ29u dGV4dCk7CiAKIAljdHgtPmNvbnRleHQgPSBjb250ZXh0OwogCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xvZ2ljYWxmdW5jcy5jIGIvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbG9naWNhbC9sb2dpY2FsZnVuY3MuYwppbmRleCAyNWIyYjc5NTky NS4uY2Y3N2VlMjhkZmUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvbG9naWNhbGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC9sb2dpY2FsZnVuY3MuYwpAQCAtMTQwLDcgKzE0MCw3IEBAIHBnX2xvZ2ljYWxfc2xv dF9nZXRfY2hhbmdlc19ndXRzKEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvLCBib29sIGNvbmZp cm0sIGJvb2wgYmluCiAJYXJyID0gUEdfR0VUQVJHX0FSUkFZVFlQRV9QKDMpOwogCiAJLyog c3RhdGUgdG8gd3JpdGUgb3V0cHV0IHRvICovCi0JcCA9IHBhbGxvYzAoc2l6ZW9mKERlY29k aW5nT3V0cHV0U3RhdGUpKTsKKwlwID0gcGFsbG9jMF9vYmplY3QoRGVjb2RpbmdPdXRwdXRT dGF0ZSk7CiAKIAlwLT5iaW5hcnlfb3V0cHV0ID0gYmluYXJ5OwogCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Byb3RvLmMgYi9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL3Byb3RvLmMKaW5kZXggZjBhOTEzODkyYjkuLjI3YWQ3NGZk NzU5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Byb3Rv LmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9wcm90by5jCkBAIC02 OTcsNyArNjk3LDcgQEAgbG9naWNhbHJlcF93cml0ZV9yZWwoU3RyaW5nSW5mbyBvdXQsIFRy YW5zYWN0aW9uSWQgeGlkLCBSZWxhdGlvbiByZWwsCiBMb2dpY2FsUmVwUmVsYXRpb24gKgog bG9naWNhbHJlcF9yZWFkX3JlbChTdHJpbmdJbmZvIGluKQogewotCUxvZ2ljYWxSZXBSZWxh dGlvbiAqcmVsID0gcGFsbG9jKHNpemVvZihMb2dpY2FsUmVwUmVsYXRpb24pKTsKKwlMb2dp Y2FsUmVwUmVsYXRpb24gKnJlbCA9IHBhbGxvY19vYmplY3QoTG9naWNhbFJlcFJlbGF0aW9u KTsKIAogCXJlbC0+cmVtb3RlaWQgPSBwcV9nZXRtc2dpbnQoaW4sIDQpOwogCkBAIC04NzEs NyArODcxLDcgQEAgbG9naWNhbHJlcF9yZWFkX3R1cGxlKFN0cmluZ0luZm8gaW4sIExvZ2lj YWxSZXBUdXBsZURhdGEgKnR1cGxlKQogCiAJLyogQWxsb2NhdGUgc3BhY2UgZm9yIHBlci1j b2x1bW4gdmFsdWVzOyB6ZXJvIG91dCB1bnVzZWQgU3RyaW5nSW5mb0RhdGFzICovCiAJdHVw bGUtPmNvbHZhbHVlcyA9IChTdHJpbmdJbmZvRGF0YSAqKSBwYWxsb2MwKG5hdHRzICogc2l6 ZW9mKFN0cmluZ0luZm9EYXRhKSk7Ci0JdHVwbGUtPmNvbHN0YXR1cyA9IChjaGFyICopIHBh bGxvYyhuYXR0cyAqIHNpemVvZihjaGFyKSk7CisJdHVwbGUtPmNvbHN0YXR1cyA9IHBhbGxv Y19hcnJheShjaGFyLCBuYXR0cyk7CiAJdHVwbGUtPm5jb2xzID0gbmF0dHM7CiAKIAkvKiBS ZWFkIHRoZSBkYXRhICovCkBAIC05OTQsOCArOTk0LDggQEAgbG9naWNhbHJlcF9yZWFkX2F0 dHJzKFN0cmluZ0luZm8gaW4sIExvZ2ljYWxSZXBSZWxhdGlvbiAqcmVsKQogCUJpdG1hcHNl dCAgKmF0dGtleXMgPSBOVUxMOwogCiAJbmF0dHMgPSBwcV9nZXRtc2dpbnQoaW4sIDIpOwot CWF0dG5hbWVzID0gcGFsbG9jKG5hdHRzICogc2l6ZW9mKGNoYXIgKikpOwotCWF0dHR5cHMg PSBwYWxsb2MobmF0dHMgKiBzaXplb2YoT2lkKSk7CisJYXR0bmFtZXMgPSBwYWxsb2NfYXJy YXkoY2hhciAqLCBuYXR0cyk7CisJYXR0dHlwcyA9IHBhbGxvY19hcnJheShPaWQsIG5hdHRz KTsKIAogCS8qIHJlYWQgdGhlIGF0dHJpYnV0ZXMgKi8KIAlmb3IgKGkgPSAwOyBpIDwgbmF0 dHM7IGkrKykKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwv cmVsYXRpb24uYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVsYXRpb24u YwppbmRleCAxMGIzZDBkOWI4Mi4uMmM4NDg1Yjg4MWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVsYXRpb24uYworKysgYi9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL3JlbGF0aW9uLmMKQEAgLTE4OCw4ICsxODgsOCBAQCBsb2dp Y2FscmVwX3JlbG1hcF91cGRhdGUoTG9naWNhbFJlcFJlbGF0aW9uICpyZW1vdGVyZWwpCiAJ ZW50cnktPnJlbW90ZXJlbC5uc3BuYW1lID0gcHN0cmR1cChyZW1vdGVyZWwtPm5zcG5hbWUp OwogCWVudHJ5LT5yZW1vdGVyZWwucmVsbmFtZSA9IHBzdHJkdXAocmVtb3RlcmVsLT5yZWxu YW1lKTsKIAllbnRyeS0+cmVtb3RlcmVsLm5hdHRzID0gcmVtb3RlcmVsLT5uYXR0czsKLQll bnRyeS0+cmVtb3RlcmVsLmF0dG5hbWVzID0gcGFsbG9jKHJlbW90ZXJlbC0+bmF0dHMgKiBz aXplb2YoY2hhciAqKSk7Ci0JZW50cnktPnJlbW90ZXJlbC5hdHR0eXBzID0gcGFsbG9jKHJl bW90ZXJlbC0+bmF0dHMgKiBzaXplb2YoT2lkKSk7CisJZW50cnktPnJlbW90ZXJlbC5hdHRu YW1lcyA9IHBhbGxvY19hcnJheShjaGFyICosIHJlbW90ZXJlbC0+bmF0dHMpOworCWVudHJ5 LT5yZW1vdGVyZWwuYXR0dHlwcyA9IHBhbGxvY19hcnJheShPaWQsIHJlbW90ZXJlbC0+bmF0 dHMpOwogCWZvciAoaSA9IDA7IGkgPCByZW1vdGVyZWwtPm5hdHRzOyBpKyspCiAJewogCQll bnRyeS0+cmVtb3RlcmVsLmF0dG5hbWVzW2ldID0gcHN0cmR1cChyZW1vdGVyZWwtPmF0dG5h bWVzW2ldKTsKQEAgLTcwNCw4ICs3MDQsOCBAQCBsb2dpY2FscmVwX3BhcnRpdGlvbl9vcGVu KExvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqcm9vdCwKIAkJZW50cnktPnJlbW90ZXJlbC5uc3Bu YW1lID0gcHN0cmR1cChyZW1vdGVyZWwtPm5zcG5hbWUpOwogCQllbnRyeS0+cmVtb3RlcmVs LnJlbG5hbWUgPSBwc3RyZHVwKHJlbW90ZXJlbC0+cmVsbmFtZSk7CiAJCWVudHJ5LT5yZW1v dGVyZWwubmF0dHMgPSByZW1vdGVyZWwtPm5hdHRzOwotCQllbnRyeS0+cmVtb3RlcmVsLmF0 dG5hbWVzID0gcGFsbG9jKHJlbW90ZXJlbC0+bmF0dHMgKiBzaXplb2YoY2hhciAqKSk7Ci0J CWVudHJ5LT5yZW1vdGVyZWwuYXR0dHlwcyA9IHBhbGxvYyhyZW1vdGVyZWwtPm5hdHRzICog c2l6ZW9mKE9pZCkpOworCQllbnRyeS0+cmVtb3RlcmVsLmF0dG5hbWVzID0gcGFsbG9jX2Fy cmF5KGNoYXIgKiwgcmVtb3RlcmVsLT5uYXR0cyk7CisJCWVudHJ5LT5yZW1vdGVyZWwuYXR0 dHlwcyA9IHBhbGxvY19hcnJheShPaWQsIHJlbW90ZXJlbC0+bmF0dHMpOwogCQlmb3IgKGkg PSAwOyBpIDwgcmVtb3RlcmVsLT5uYXR0czsgaSsrKQogCQl7CiAJCQllbnRyeS0+cmVtb3Rl cmVsLmF0dG5hbWVzW2ldID0gcHN0cmR1cChyZW1vdGVyZWwtPmF0dG5hbWVzW2ldKTsKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZl ci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZW9yZGVyYnVmZmVyLmMK aW5kZXggZWI2YTg0NTU0YjcuLmYxOGM2ZmI1MmI1IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Jlb3JkZXJidWZmZXIuYworKysgYi9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Jlb3JkZXJidWZmZXIuYwpAQCAtMzQ4OSw4ICszNDg5 LDcgQEAgUmVvcmRlckJ1ZmZlclF1ZXVlSW52YWxpZGF0aW9ucyhSZW9yZGVyQnVmZmVyICpy YiwgVHJhbnNhY3Rpb25JZCB4aWQsCiAJY2hhbmdlID0gUmVvcmRlckJ1ZmZlckFsbG9jQ2hh bmdlKHJiKTsKIAljaGFuZ2UtPmFjdGlvbiA9IFJFT1JERVJfQlVGRkVSX0NIQU5HRV9JTlZB TElEQVRJT047CiAJY2hhbmdlLT5kYXRhLmludmFsLm5pbnZhbGlkYXRpb25zID0gbm1zZ3M7 Ci0JY2hhbmdlLT5kYXRhLmludmFsLmludmFsaWRhdGlvbnMgPSAoU2hhcmVkSW52YWxpZGF0 aW9uTWVzc2FnZSAqKQotCQlwYWxsb2Moc2l6ZW9mKFNoYXJlZEludmFsaWRhdGlvbk1lc3Nh Z2UpICogbm1zZ3MpOworCWNoYW5nZS0+ZGF0YS5pbnZhbC5pbnZhbGlkYXRpb25zID0gcGFs bG9jX2FycmF5KFNoYXJlZEludmFsaWRhdGlvbk1lc3NhZ2UsIG5tc2dzKTsKIAltZW1jcHko Y2hhbmdlLT5kYXRhLmludmFsLmludmFsaWRhdGlvbnMsIG1zZ3MsCiAJCSAgIHNpemVvZihT aGFyZWRJbnZhbGlkYXRpb25NZXNzYWdlKSAqIG5tc2dzKTsKIApAQCAtMzUxMSw4ICszNTEw LDcgQEAgUmVvcmRlckJ1ZmZlckFjY3VtdWxhdGVJbnZhbGlkYXRpb25zKFNoYXJlZEludmFs aWRhdGlvbk1lc3NhZ2UgKippbnZhbHNfb3V0LAogCWlmICgqbmludmFsc19vdXQgPT0gMCkK IAl7CiAJCSpuaW52YWxzX291dCA9IG5tc2dzX25ldzsKLQkJKmludmFsc19vdXQgPSAoU2hh cmVkSW52YWxpZGF0aW9uTWVzc2FnZSAqKQotCQkJcGFsbG9jKHNpemVvZihTaGFyZWRJbnZh bGlkYXRpb25NZXNzYWdlKSAqIG5tc2dzX25ldyk7CisJCSppbnZhbHNfb3V0ID0gcGFsbG9j X2FycmF5KFNoYXJlZEludmFsaWRhdGlvbk1lc3NhZ2UsIG5tc2dzX25ldyk7CiAJCW1lbWNw eSgqaW52YWxzX291dCwgbXNnc19uZXcsIHNpemVvZihTaGFyZWRJbnZhbGlkYXRpb25NZXNz YWdlKSAqIG5tc2dzX25ldyk7CiAJfQogCWVsc2UKQEAgLTM3MDEsOCArMzY5OSw3IEBAIFJl b3JkZXJCdWZmZXJHZXRDYXRhbG9nQ2hhbmdlc1hhY3RzKFJlb3JkZXJCdWZmZXIgKnJiKQog CQlyZXR1cm4gTlVMTDsKIAogCS8qIEluaXRpYWxpemUgWElEIGFycmF5ICovCi0JeGlkcyA9 IChUcmFuc2FjdGlvbklkICopIHBhbGxvYyhzaXplb2YoVHJhbnNhY3Rpb25JZCkgKgotCQkJ CQkJCQkJZGNsaXN0X2NvdW50KCZyYi0+Y2F0Y2hhbmdlX3R4bnMpKTsKKwl4aWRzID0gcGFs bG9jX2FycmF5KFRyYW5zYWN0aW9uSWQsIGRjbGlzdF9jb3VudCgmcmItPmNhdGNoYW5nZV90 eG5zKSk7CiAJZGNsaXN0X2ZvcmVhY2goaXRlciwgJnJiLT5jYXRjaGFuZ2VfdHhucykKIAl7 CiAJCVJlb3JkZXJCdWZmZXJUWE4gKnR4biA9IGRjbGlzdF9jb250YWluZXIoUmVvcmRlckJ1 ZmZlclRYTiwKQEAgLTUxMjQsOSArNTEyMSw5IEBAIFJlb3JkZXJCdWZmZXJUb2FzdFJlcGxh Y2UoUmVvcmRlckJ1ZmZlciAqcmIsIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwKIAl0b2FzdF9k ZXNjID0gUmVsYXRpb25HZXREZXNjcih0b2FzdF9yZWwpOwogCiAJLyogc2hvdWxkIHdlIGFs bG9jYXRlIGZyb20gc3RhY2sgaW5zdGVhZD8gKi8KLQlhdHRycyA9IHBhbGxvYzAoc2l6ZW9m KERhdHVtKSAqIGRlc2MtPm5hdHRzKTsKLQlpc251bGwgPSBwYWxsb2MwKHNpemVvZihib29s KSAqIGRlc2MtPm5hdHRzKTsKLQlmcmVlID0gcGFsbG9jMChzaXplb2YoYm9vbCkgKiBkZXNj LT5uYXR0cyk7CisJYXR0cnMgPSBwYWxsb2MwX2FycmF5KERhdHVtLCBkZXNjLT5uYXR0cyk7 CisJaXNudWxsID0gcGFsbG9jMF9hcnJheShib29sLCBkZXNjLT5uYXR0cyk7CisJZnJlZSA9 IHBhbGxvYzBfYXJyYXkoYm9vbCwgZGVzYy0+bmF0dHMpOwogCiAJbmV3dHVwID0gY2hhbmdl LT5kYXRhLnRwLm5ld3R1cGxlOwogCkBAIC01NTMxLDcgKzU1MjgsNyBAQCBVcGRhdGVMb2dp Y2FsTWFwcGluZ3MoSFRBQiAqdHVwbGVjaWRfZGF0YSwgT2lkIHJlbGlkLCBTbmFwc2hvdCBz bmFwc2hvdCkKIAkJCWNvbnRpbnVlOwogCiAJCS8qIG9rLCByZWxldmFudCwgcXVldWUgZm9y IGFwcGx5ICovCi0JCWYgPSBwYWxsb2Moc2l6ZW9mKFJld3JpdGVNYXBwaW5nRmlsZSkpOwor CQlmID0gcGFsbG9jX29iamVjdChSZXdyaXRlTWFwcGluZ0ZpbGUpOwogCQlmLT5sc24gPSBm X2xzbjsKIAkJc3RyY3B5KGYtPmZuYW1lLCBtYXBwaW5nX2RlLT5kX25hbWUpOwogCQlmaWxl cyA9IGxhcHBlbmQoZmlsZXMsIGYpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC9zbG90c3luYy5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC9zbG90c3luYy5jCmluZGV4IDFmNGYwNmQ0NjdiLi42Yzk4MmQ4Y2ExNyAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9zbG90c3luYy5jCisrKyBi L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvc2xvdHN5bmMuYwpAQCAtODg2LDcg Kzg4Niw3IEBAIHN5bmNocm9uaXplX3Nsb3RzKFdhbFJlY2VpdmVyQ29ubiAqd3Jjb25uKQog CXdoaWxlICh0dXBsZXN0b3JlX2dldHR1cGxlc2xvdChyZXMtPnR1cGxlc3RvcmUsIHRydWUs IGZhbHNlLCB0dXBzbG90KSkKIAl7CiAJCWJvb2wJCWlzbnVsbDsKLQkJUmVtb3RlU2xvdCAq cmVtb3RlX3Nsb3QgPSBwYWxsb2MwKHNpemVvZihSZW1vdGVTbG90KSk7CisJCVJlbW90ZVNs b3QgKnJlbW90ZV9zbG90ID0gcGFsbG9jMF9vYmplY3QoUmVtb3RlU2xvdCk7CiAJCURhdHVt CQlkOwogCQlpbnQJCQljb2wgPSAwOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9sb2dpY2FsL3NuYXBidWlsZC5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC9zbmFwYnVpbGQuYwppbmRleCA2ZTE4YmFhMzNjYi4uZDZhYjFlMDE3ZWIgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvc25hcGJ1aWxkLmMK KysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9zbmFwYnVpbGQuYwpAQCAt MTk5LDcgKzE5OSw3IEBAIEFsbG9jYXRlU25hcHNob3RCdWlsZGVyKFJlb3JkZXJCdWZmZXIg KnJlb3JkZXIsCiAJCQkJCQkJCQlBTExPQ1NFVF9ERUZBVUxUX1NJWkVTKTsKIAlvbGRjb250 ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKGNvbnRleHQpOwogCi0JYnVpbGRlciA9IHBh bGxvYzAoc2l6ZW9mKFNuYXBCdWlsZCkpOworCWJ1aWxkZXIgPSBwYWxsb2MwX29iamVjdChT bmFwQnVpbGQpOwogCiAJYnVpbGRlci0+c3RhdGUgPSBTTkFQQlVJTERfU1RBUlQ7CiAJYnVp bGRlci0+Y29udGV4dCA9IGNvbnRleHQ7CkBAIC00ODYsOCArNDg2LDcgQEAgU25hcEJ1aWxk SW5pdGlhbFNuYXBzaG90KFNuYXBCdWlsZCAqYnVpbGRlcikKIAlNeVByb2MtPnhtaW4gPSBz bmFwLT54bWluOwogCiAJLyogYWxsb2NhdGUgaW4gdHJhbnNhY3Rpb24gY29udGV4dCAqLwot CW5ld3hpcCA9IChUcmFuc2FjdGlvbklkICopCi0JCXBhbGxvYyhzaXplb2YoVHJhbnNhY3Rp b25JZCkgKiBHZXRNYXhTbmFwc2hvdFhpZENvdW50KCkpOworCW5ld3hpcCA9IHBhbGxvY19h cnJheShUcmFuc2FjdGlvbklkLCBHZXRNYXhTbmFwc2hvdFhpZENvdW50KCkpOwogCiAJLyoK IAkgKiBzbmFwYnVpbGQuYyBidWlsZHMgdHJhbnNhY3Rpb25zIGluIGFuICJpbnZlcnRlZCIg bWFubmVyLCB3aGljaCBtZWFucyBpdApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC9zeW5jdXRpbHMuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvc3luY3V0aWxzLmMKaW5kZXggYTY5NmIxZjJkYzAuLjMzMjgxOTgwNGJlIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3N5bmN1dGlscy5jCisr KyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvc3luY3V0aWxzLmMKQEAgLTI0 Myw3ICsyNDMsNyBAQCBGZXRjaFJlbGF0aW9uU3RhdGVzKGJvb2wgKmhhc19wZW5kaW5nX3N1 YnRhYmxlcywKIAkJCQloYXNfc3Vic2VxdWVuY2VzX25vbl9yZWFkeSA9IHRydWU7CiAJCQll bHNlCiAJCQl7Ci0JCQkJcnN0YXRlID0gcGFsbG9jKHNpemVvZihTdWJzY3JpcHRpb25SZWxT dGF0ZSkpOworCQkJCXJzdGF0ZSA9IHBhbGxvY19vYmplY3QoU3Vic2NyaXB0aW9uUmVsU3Rh dGUpOwogCQkJCW1lbWNweShyc3RhdGUsIHN1YnJlbCwgc2l6ZW9mKFN1YnNjcmlwdGlvblJl bFN0YXRlKSk7CiAJCQkJdGFibGVfc3RhdGVzX25vdF9yZWFkeSA9IGxhcHBlbmQodGFibGVf c3RhdGVzX25vdF9yZWFkeSwKIAkJCQkJCQkJCQkJCSByc3RhdGUpOwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYyBiL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKaW5kZXggOTM5NzBjNmFmMjkuLmZmZGUy ODRkZDNjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dv cmtlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMK QEAgLTg3NSw3ICs4NzUsNyBAQCBjcmVhdGVfZWRhdGFfZm9yX3JlbGF0aW9uKExvZ2ljYWxS ZXBSZWxNYXBFbnRyeSAqcmVsKQogCUxpc3QJICAgKnBlcm1pbmZvcyA9IE5JTDsKIAlSZXN1 bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvOwogCi0JZWRhdGEgPSAoQXBwbHlFeGVjdXRpb25E YXRhICopIHBhbGxvYzAoc2l6ZW9mKEFwcGx5RXhlY3V0aW9uRGF0YSkpOworCWVkYXRhID0g cGFsbG9jMF9vYmplY3QoQXBwbHlFeGVjdXRpb25EYXRhKTsKIAllZGF0YS0+dGFyZ2V0UmVs ID0gcmVsOwogCiAJZWRhdGEtPmVzdGF0ZSA9IGVzdGF0ZSA9IENyZWF0ZUV4ZWN1dG9yU3Rh dGUoKTsKQEAgLTE3MDIsNyArMTcwMiw3IEBAIHN0cmVhbV9zdGFydF9pbnRlcm5hbChUcmFu c2FjdGlvbklkIHhpZCwgYm9vbCBmaXJzdF9zZWdtZW50KQogCiAJCW9sZGN0eCA9IE1lbW9y eUNvbnRleHRTd2l0Y2hUbyhBcHBseUNvbnRleHQpOwogCi0JCU15TG9naWNhbFJlcFdvcmtl ci0+c3RyZWFtX2ZpbGVzZXQgPSBwYWxsb2Moc2l6ZW9mKEZpbGVTZXQpKTsKKwkJTXlMb2dp Y2FsUmVwV29ya2VyLT5zdHJlYW1fZmlsZXNldCA9IHBhbGxvY19vYmplY3QoRmlsZVNldCk7 CiAJCUZpbGVTZXRJbml0KE15TG9naWNhbFJlcFdvcmtlci0+c3RyZWFtX2ZpbGVzZXQpOwog CiAJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjdHgpOwpAQCAtMzk1MSw3ICszOTUxLDcg QEAgc3RvcmVfZmx1c2hfcG9zaXRpb24oWExvZ1JlY1B0ciByZW1vdGVfbHNuLCBYTG9nUmVj UHRyIGxvY2FsX2xzbikKIAlNZW1vcnlDb250ZXh0U3dpdGNoVG8oQXBwbHlDb250ZXh0KTsK IAogCS8qIFRyYWNrIGNvbW1pdCBsc24gICovCi0JZmx1c2hwb3MgPSAoRmx1c2hQb3NpdGlv biAqKSBwYWxsb2Moc2l6ZW9mKEZsdXNoUG9zaXRpb24pKTsKKwlmbHVzaHBvcyA9IHBhbGxv Y19vYmplY3QoRmx1c2hQb3NpdGlvbik7CiAJZmx1c2hwb3MtPmxvY2FsX2VuZCA9IGxvY2Fs X2xzbjsKIAlmbHVzaHBvcy0+cmVtb3RlX2VuZCA9IHJlbW90ZV9sc247CiAKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMgYi9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jCmluZGV4IDk0MmUxYWJk YjU4Li43ODc5OThhYmI4YSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v cGdvdXRwdXQvcGdvdXRwdXQuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291 dHB1dC9wZ291dHB1dC5jCkBAIC00NDcsNyArNDQ3LDcgQEAgc3RhdGljIHZvaWQKIHBnb3V0 cHV0X3N0YXJ0dXAoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LCBPdXRwdXRQbHVnaW5P cHRpb25zICpvcHQsCiAJCQkJIGJvb2wgaXNfaW5pdCkKIHsKLQlQR091dHB1dERhdGEgKmRh dGEgPSBwYWxsb2MwKHNpemVvZihQR091dHB1dERhdGEpKTsKKwlQR091dHB1dERhdGEgKmRh dGEgPSBwYWxsb2MwX29iamVjdChQR091dHB1dERhdGEpOwogCXN0YXRpYyBib29sIHB1Ymxp Y2F0aW9uX2NhbGxiYWNrX3JlZ2lzdGVyZWQgPSBmYWxzZTsKIAlNZW1vcnlDb250ZXh0Q2Fs bGJhY2sgKm1jYWxsYmFjazsKIApAQCAtNDY4LDcgKzQ2OCw3IEBAIHBnb3V0cHV0X3N0YXJ0 dXAoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LCBPdXRwdXRQbHVnaW5PcHRpb25zICpv cHQsCiAJICogRW5zdXJlIHRvIGNsZWFudXAgUmVsYXRpb25TeW5jQ2FjaGUgZXZlbiB3aGVu IGxvZ2ljYWwgZGVjb2RpbmcgaW52b2tlZAogCSAqIHZpYSBTUUwgaW50ZXJmYWNlIGVuZHMg dXAgd2l0aCBhbiBlcnJvci4KIAkgKi8KLQltY2FsbGJhY2sgPSBwYWxsb2MwKHNpemVvZihN ZW1vcnlDb250ZXh0Q2FsbGJhY2spKTsKKwltY2FsbGJhY2sgPSBwYWxsb2MwX29iamVjdChN ZW1vcnlDb250ZXh0Q2FsbGJhY2spOwogCW1jYWxsYmFjay0+ZnVuYyA9IHBnb3V0cHV0X21l bW9yeV9jb250ZXh0X3Jlc2V0OwogCU1lbW9yeUNvbnRleHRSZWdpc3RlclJlc2V0Q2FsbGJh Y2soY3R4LT5jb250ZXh0LCBtY2FsbGJhY2spOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9zeW5jcmVwLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zeW5j cmVwLmMKaW5kZXggYTBjNzk5NThmZDUuLjI5OGEzNzY2ZDc2IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9zeW5jcmVwLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vc3luY3JlcC5jCkBAIC03MDUsOSArNzA1LDkgQEAgU3luY1JlcEdldE50aExhdGVz dFN5bmNSZWNQdHIoWExvZ1JlY1B0ciAqd3JpdGVQdHIsCiAJLyogU2hvdWxkIGhhdmUgZW5v dWdoIGNhbmRpZGF0ZXMsIG9yIHNvbWVib2R5IG1lc3NlZCB1cCAqLwogCUFzc2VydChudGgg PiAwICYmIG50aCA8PSBudW1fc3RhbmRieXMpOwogCi0Jd3JpdGVfYXJyYXkgPSAoWExvZ1Jl Y1B0ciAqKSBwYWxsb2Moc2l6ZW9mKFhMb2dSZWNQdHIpICogbnVtX3N0YW5kYnlzKTsKLQlm bHVzaF9hcnJheSA9IChYTG9nUmVjUHRyICopIHBhbGxvYyhzaXplb2YoWExvZ1JlY1B0cikg KiBudW1fc3RhbmRieXMpOwotCWFwcGx5X2FycmF5ID0gKFhMb2dSZWNQdHIgKikgcGFsbG9j KHNpemVvZihYTG9nUmVjUHRyKSAqIG51bV9zdGFuZGJ5cyk7CisJd3JpdGVfYXJyYXkgPSBw YWxsb2NfYXJyYXkoWExvZ1JlY1B0ciwgbnVtX3N0YW5kYnlzKTsKKwlmbHVzaF9hcnJheSA9 IHBhbGxvY19hcnJheShYTG9nUmVjUHRyLCBudW1fc3RhbmRieXMpOworCWFwcGx5X2FycmF5 ID0gcGFsbG9jX2FycmF5KFhMb2dSZWNQdHIsIG51bV9zdGFuZGJ5cyk7CiAKIAlmb3IgKGkg PSAwOyBpIDwgbnVtX3N0YW5kYnlzOyBpKyspCiAJewpAQCAtNzU3LDggKzc1Nyw3IEBAIFN5 bmNSZXBHZXRDYW5kaWRhdGVTdGFuZGJ5cyhTeW5jUmVwU3RhbmRieURhdGEgKipzdGFuZGJ5 cykKIAlpbnQJCQluOwogCiAJLyogQ3JlYXRlIHJlc3VsdCBhcnJheSAqLwotCSpzdGFuZGJ5 cyA9IChTeW5jUmVwU3RhbmRieURhdGEgKikKLQkJcGFsbG9jKG1heF93YWxfc2VuZGVycyAq IHNpemVvZihTeW5jUmVwU3RhbmRieURhdGEpKTsKKwkqc3RhbmRieXMgPSBwYWxsb2NfYXJy YXkoU3luY1JlcFN0YW5kYnlEYXRhLCBtYXhfd2FsX3NlbmRlcnMpOwogCiAJLyogUXVpY2sg ZXhpdCBpZiBzeW5jIHJlcGxpY2F0aW9uIGlzIG5vdCByZXF1ZXN0ZWQgKi8KIAlpZiAoU3lu Y1JlcENvbmZpZyA9PSBOVUxMKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vd2FscmVjZWl2ZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVy LmMKaW5kZXggNDIxN2ZjNTRlMmUuLjNhYzQ4YTg0N2IzIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi93YWxyZWNlaXZlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL3dhbHJlY2VpdmVyLmMKQEAgLTE0NTAsOCArMTQ1MCw4IEBAIHBnX3N0YXRfZ2V0 X3dhbF9yZWNlaXZlcihQR19GVU5DVElPTl9BUkdTKQogCWlmIChnZXRfY2FsbF9yZXN1bHRf dHlwZShmY2luZm8sIE5VTEwsICZ0dXBkZXNjKSAhPSBUWVBFRlVOQ19DT01QT1NJVEUpCiAJ CWVsb2coRVJST1IsICJyZXR1cm4gdHlwZSBtdXN0IGJlIGEgcm93IHR5cGUiKTsKIAotCXZh bHVlcyA9IHBhbGxvYzAoc2l6ZW9mKERhdHVtKSAqIHR1cGRlc2MtPm5hdHRzKTsKLQludWxs cyA9IHBhbGxvYzAoc2l6ZW9mKGJvb2wpICogdHVwZGVzYy0+bmF0dHMpOworCXZhbHVlcyA9 IHBhbGxvYzBfYXJyYXkoRGF0dW0sIHR1cGRlc2MtPm5hdHRzKTsKKwludWxscyA9IHBhbGxv YzBfYXJyYXkoYm9vbCwgdHVwZGVzYy0+bmF0dHMpOwogCiAJLyogRmV0Y2ggdmFsdWVzICov CiAJdmFsdWVzWzBdID0gSW50MzJHZXREYXR1bShwaWQpOwpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi93YWxzZW5kZXIuYwppbmRleCBmYzhmODU1OTA3My4uZTVhY2NjM2QzYjAgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jCisrKyBiL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jCkBAIC0zOTczLDcgKzM5NzMsNyBAQCBXYWxT bmRHZXRTdGF0ZVN0cmluZyhXYWxTbmRTdGF0ZSBzdGF0ZSkKIHN0YXRpYyBJbnRlcnZhbCAq CiBvZmZzZXRfdG9faW50ZXJ2YWwoVGltZU9mZnNldCBvZmZzZXQpCiB7Ci0JSW50ZXJ2YWwg ICAqcmVzdWx0ID0gcGFsbG9jKHNpemVvZihJbnRlcnZhbCkpOworCUludGVydmFsICAgKnJl c3VsdCA9IHBhbGxvY19vYmplY3QoSW50ZXJ2YWwpOwogCiAJcmVzdWx0LT5tb250aCA9IDA7 CiAJcmVzdWx0LT5kYXkgPSAwOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmV3cml0ZS9y ZXdyaXRlSGFuZGxlci5jIGIvc3JjL2JhY2tlbmQvcmV3cml0ZS9yZXdyaXRlSGFuZGxlci5j CmluZGV4IGFkYzllNzYwMGUxLi5hODljNDU1NGMxOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvcmV3cml0ZS9yZXdyaXRlSGFuZGxlci5jCisrKyBiL3NyYy9iYWNrZW5kL3Jld3JpdGUv cmV3cml0ZUhhbmRsZXIuYwpAQCAtNDI2Nyw3ICs0MjY3LDcgQEAgUmV3cml0ZVF1ZXJ5KFF1 ZXJ5ICpwYXJzZXRyZWUsIExpc3QgKnJld3JpdGVfZXZlbnRzLCBpbnQgb3JpZ19ydF9sZW5n dGgpCiAJCQkJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShydF9lbnRyeV9yZWxhdGlv bikpKSk7CiAJCQl9CiAKLQkJCXJldiA9IChyZXdyaXRlX2V2ZW50ICopIHBhbGxvYyhzaXpl b2YocmV3cml0ZV9ldmVudCkpOworCQkJcmV2ID0gcGFsbG9jX29iamVjdChyZXdyaXRlX2V2 ZW50KTsKIAkJCXJldi0+cmVsYXRpb24gPSBSZWxhdGlvbkdldFJlbGlkKHJ0X2VudHJ5X3Jl bGF0aW9uKTsKIAkJCXJldi0+ZXZlbnQgPSBldmVudDsKIAkJCXJld3JpdGVfZXZlbnRzID0g bGFwcGVuZChyZXdyaXRlX2V2ZW50cywgcmV2KTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3Jld3JpdGUvcmV3cml0ZU1hbmlwLmMgYi9zcmMvYmFja2VuZC9yZXdyaXRlL3Jld3JpdGVN YW5pcC5jCmluZGV4IDBmY2QxZmJkMTRlLi5mM2MyODg2ZWQ1NCAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvcmV3cml0ZS9yZXdyaXRlTWFuaXAuYworKysgYi9zcmMvYmFja2VuZC9yZXdy aXRlL3Jld3JpdGVNYW5pcC5jCkBAIC0xNTkwLDcgKzE1OTAsNyBAQCBtYXBfdmFyaWFibGVf YXR0bm9zX211dGF0b3IoTm9kZSAqbm9kZSwKIAkJCXZhci0+dmFybGV2ZWxzdXAgPT0gY29u dGV4dC0+c3VibGV2ZWxzX3VwKQogCQl7CiAJCQkvKiBGb3VuZCBhIG1hdGNoaW5nIHZhcmlh YmxlLCBtYWtlIHRoZSBzdWJzdGl0dXRpb24gKi8KLQkJCVZhcgkJICAgKm5ld3ZhciA9IChW YXIgKikgcGFsbG9jKHNpemVvZihWYXIpKTsKKwkJCVZhcgkJICAgKm5ld3ZhciA9IHBhbGxv Y19vYmplY3QoVmFyKTsKIAkJCWludAkJCWF0dG5vID0gdmFyLT52YXJhdHRubzsKIAogCQkJ Km5ld3ZhciA9ICp2YXI7CQkvKiBpbml0aWFsbHkgY29weSBhbGwgZmllbGRzIG9mIHRoZSBW YXIgKi8KQEAgLTE2NjEsNyArMTY2MSw3IEBAIG1hcF92YXJpYWJsZV9hdHRub3NfbXV0YXRv cihOb2RlICpub2RlLAogCQkJY29udGV4dC0+dG9fcm93dHlwZSAhPSB2YXItPnZhcnR5cGUp CiAJCXsKIAkJCUNvbnZlcnRSb3d0eXBlRXhwciAqbmV3bm9kZTsKLQkJCVZhcgkJICAgKm5l d3ZhciA9IChWYXIgKikgcGFsbG9jKHNpemVvZihWYXIpKTsKKwkJCVZhcgkJICAgKm5ld3Zh ciA9IHBhbGxvY19vYmplY3QoVmFyKTsKIAogCQkJLyogd2hvbGUtcm93IHZhcmlhYmxlLCB3 YXJuIGNhbGxlciAqLwogCQkJKihjb250ZXh0LT5mb3VuZF93aG9sZV9yb3cpID0gdHJ1ZTsK QEAgLTE2NzQsNyArMTY3NCw3IEBAIG1hcF92YXJpYWJsZV9hdHRub3NfbXV0YXRvcihOb2Rl ICpub2RlLAogCQkJLyogVmFyIGl0c2VsZiBpcyBjaGFuZ2VkIHRvIHRoZSByZXF1ZXN0ZWQg dHlwZS4gKi8KIAkJCW5ld3Zhci0+dmFydHlwZSA9IGNvbnRleHQtPnRvX3Jvd3R5cGU7CiAK LQkJCW5ld25vZGUgPSAoQ29udmVydFJvd3R5cGVFeHByICopIHBhbGxvYyhzaXplb2YoQ29u dmVydFJvd3R5cGVFeHByKSk7CisJCQluZXdub2RlID0gcGFsbG9jX29iamVjdChDb252ZXJ0 Um93dHlwZUV4cHIpOwogCQkJKm5ld25vZGUgPSAqcjsJCS8qIGluaXRpYWxseSBjb3B5IGFs bCBmaWVsZHMgb2YgdGhlIENSRSAqLwogCQkJbmV3bm9kZS0+YXJnID0gKEV4cHIgKikgbmV3 dmFyOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zbm93YmFsbC9kaWN0X3Nub3diYWxs LmMgYi9zcmMvYmFja2VuZC9zbm93YmFsbC9kaWN0X3Nub3diYWxsLmMKaW5kZXggZTJiODEx YTM4MDYuLmQzYzAyMmFlNTQ4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zbm93YmFsbC9k aWN0X3Nub3diYWxsLmMKKysrIGIvc3JjL2JhY2tlbmQvc25vd2JhbGwvZGljdF9zbm93YmFs bC5jCkBAIC0yMjksNyArMjI5LDcgQEAgZHNub3diYWxsX2luaXQoUEdfRlVOQ1RJT05fQVJH UykKIAlib29sCQlzdG9wbG9hZGVkID0gZmFsc2U7CiAJTGlzdENlbGwgICAqbDsKIAotCWQg PSAoRGljdFNub3diYWxsICopIHBhbGxvYzAoc2l6ZW9mKERpY3RTbm93YmFsbCkpOworCWQg PSBwYWxsb2MwX29iamVjdChEaWN0U25vd2JhbGwpOwogCiAJZm9yZWFjaChsLCBkaWN0b3B0 aW9ucykKIAl7CkBAIC0yNzgsNyArMjc4LDcgQEAgZHNub3diYWxsX2xleGl6ZShQR19GVU5D VElPTl9BUkdTKQogCWNoYXIJICAgKmluID0gKGNoYXIgKikgUEdfR0VUQVJHX1BPSU5URVIo MSk7CiAJaW50MzIJCWxlbiA9IFBHX0dFVEFSR19JTlQzMigyKTsKIAljaGFyCSAgICp0eHQg PSBzdHJfdG9sb3dlcihpbiwgbGVuLCBERUZBVUxUX0NPTExBVElPTl9PSUQpOwotCVRTTGV4 ZW1lICAgKnJlcyA9IHBhbGxvYzAoc2l6ZW9mKFRTTGV4ZW1lKSAqIDIpOworCVRTTGV4ZW1l ICAgKnJlcyA9IHBhbGxvYzBfYXJyYXkoVFNMZXhlbWUsIDIpOwogCiAJLyoKIAkgKiBEbyBu b3QgcGFzcyBzdHJpbmdzIGV4Y2VlZGluZyAxMDAwIGJ5dGVzIHRvIHRoZSBzdGVtbWVyLCBh cyB0aGV5J3JlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdGF0aXN0aWNzL2RlcGVuZGVu Y2llcy5jIGIvc3JjL2JhY2tlbmQvc3RhdGlzdGljcy9kZXBlbmRlbmNpZXMuYwppbmRleCA2 ZjYzYjRmM2ZmYi4uNmNmYTQ0NzhkMjggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0YXRp c3RpY3MvZGVwZW5kZW5jaWVzLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RhdGlzdGljcy9kZXBl bmRlbmNpZXMuYwpAQCAtMTUwLDcgKzE1MCw3IEBAIGdlbmVyYXRlX2RlcGVuZGVuY2llc19y ZWN1cnNlKERlcGVuZGVuY3lHZW5lcmF0b3Igc3RhdGUsIGludCBpbmRleCwKIHN0YXRpYyB2 b2lkCiBnZW5lcmF0ZV9kZXBlbmRlbmNpZXMoRGVwZW5kZW5jeUdlbmVyYXRvciBzdGF0ZSkK IHsKLQlBdHRyTnVtYmVyICpjdXJyZW50ID0gKEF0dHJOdW1iZXIgKikgcGFsbG9jMChzaXpl b2YoQXR0ck51bWJlcikgKiBzdGF0ZS0+ayk7CisJQXR0ck51bWJlciAqY3VycmVudCA9IHBh bGxvYzBfYXJyYXkoQXR0ck51bWJlciwgc3RhdGUtPmspOwogCiAJZ2VuZXJhdGVfZGVwZW5k ZW5jaWVzX3JlY3Vyc2Uoc3RhdGUsIDAsIDAsIGN1cnJlbnQpOwogCkBAIC0xNzEsOCArMTcx LDggQEAgRGVwZW5kZW5jeUdlbmVyYXRvcl9pbml0KGludCBuLCBpbnQgaykKIAlBc3NlcnQo KG4gPj0gaykgJiYgKGsgPiAwKSk7CiAKIAkvKiBhbGxvY2F0ZSB0aGUgRGVwZW5kZW5jeUdl bmVyYXRvciBzdGF0ZSAqLwotCXN0YXRlID0gKERlcGVuZGVuY3lHZW5lcmF0b3IpIHBhbGxv YzAoc2l6ZW9mKERlcGVuZGVuY3lHZW5lcmF0b3JEYXRhKSk7Ci0Jc3RhdGUtPmRlcGVuZGVu Y2llcyA9IChBdHRyTnVtYmVyICopIHBhbGxvYyhrICogc2l6ZW9mKEF0dHJOdW1iZXIpKTsK KwlzdGF0ZSA9IHBhbGxvYzBfb2JqZWN0KERlcGVuZGVuY3lHZW5lcmF0b3JEYXRhKTsKKwlz dGF0ZS0+ZGVwZW5kZW5jaWVzID0gcGFsbG9jX2FycmF5KEF0dHJOdW1iZXIsIGspOwogCiAJ c3RhdGUtPm5kZXBlbmRlbmNpZXMgPSAwOwogCXN0YXRlLT5jdXJyZW50ID0gMDsKQEAgLTIz Nyw3ICsyMzcsNyBAQCBkZXBlbmRlbmN5X2RlZ3JlZShTdGF0c0J1aWxkRGF0YSAqZGF0YSwg aW50IGssIEF0dHJOdW1iZXIgKmRlcGVuZGVuY3kpCiAJICogVHJhbnNsYXRlIHRoZSBhcnJh eSBvZiBpbmRleGVzIHRvIHJlZ3VsYXIgYXR0bnVtcyBmb3IgdGhlIGRlcGVuZGVuY3kKIAkg KiAod2Ugd2lsbCBuZWVkIHRoaXMgdG8gaWRlbnRpZnkgdGhlIGNvbHVtbnMgaW4gU3RhdHNC dWlsZERhdGEpLgogCSAqLwotCWF0dG51bXNfZGVwID0gKEF0dHJOdW1iZXIgKikgcGFsbG9j KGsgKiBzaXplb2YoQXR0ck51bWJlcikpOworCWF0dG51bXNfZGVwID0gcGFsbG9jX2FycmF5 KEF0dHJOdW1iZXIsIGspOwogCWZvciAoaSA9IDA7IGkgPCBrOyBpKyspCiAJCWF0dG51bXNf ZGVwW2ldID0gZGF0YS0+YXR0bnVtc1tkZXBlbmRlbmN5W2ldXTsKIApAQCAtNDAyLDggKzQw Miw3IEBAIHN0YXRleHRfZGVwZW5kZW5jaWVzX2J1aWxkKFN0YXRzQnVpbGREYXRhICpkYXRh KQogCQkJLyogaW5pdGlhbGl6ZSB0aGUgbGlzdCBvZiBkZXBlbmRlbmNpZXMgKi8KIAkJCWlm IChkZXBlbmRlbmNpZXMgPT0gTlVMTCkKIAkJCXsKLQkJCQlkZXBlbmRlbmNpZXMKLQkJCQkJ PSAoTVZEZXBlbmRlbmNpZXMgKikgcGFsbG9jMChzaXplb2YoTVZEZXBlbmRlbmNpZXMpKTsK KwkJCQlkZXBlbmRlbmNpZXMgPSBwYWxsb2MwX29iamVjdChNVkRlcGVuZGVuY2llcyk7CiAK IAkJCQlkZXBlbmRlbmNpZXMtPm1hZ2ljID0gU1RBVFNfREVQU19NQUdJQzsKIAkJCQlkZXBl bmRlbmNpZXMtPnR5cGUgPSBTVEFUU19ERVBTX1RZUEVfQkFTSUM7CkBAIC01MDUsNyArNTA0 LDcgQEAgc3RhdGV4dF9kZXBlbmRlbmNpZXNfZGVzZXJpYWxpemUoYnl0ZWEgKmRhdGEpCiAJ CQkgVkFSU0laRV9BTllfRVhIRFIoZGF0YSksIFNpemVPZkhlYWRlcik7CiAKIAkvKiByZWFk IHRoZSBNVkRlcGVuZGVuY2llcyBoZWFkZXIgKi8KLQlkZXBlbmRlbmNpZXMgPSAoTVZEZXBl bmRlbmNpZXMgKikgcGFsbG9jMChzaXplb2YoTVZEZXBlbmRlbmNpZXMpKTsKKwlkZXBlbmRl bmNpZXMgPSBwYWxsb2MwX29iamVjdChNVkRlcGVuZGVuY2llcyk7CiAKIAkvKiBpbml0aWFs aXplIHBvaW50ZXIgdG8gdGhlIGRhdGEgcGFydCAoc2tpcCB0aGUgdmFybGVuYSBoZWFkZXIp ICovCiAJdG1wID0gVkFSREFUQV9BTlkoZGF0YSk7CkBAIC05NTksNyArOTU4LDcgQEAgY2xh dXNlbGlzdF9hcHBseV9kZXBlbmRlbmNpZXMoUGxhbm5lckluZm8gKnJvb3QsIExpc3QgKmNs YXVzZXMsCiAJICogYW5kIG1hcmsgYWxsIHRoZSBjb3JyZXNwb25kaW5nIGNsYXVzZXMgYXMg ZXN0aW1hdGVkLgogCSAqLwogCW5hdHRycyA9IGJtc19udW1fbWVtYmVycyhhdHRudW1zKTsK LQlhdHRyX3NlbCA9IChTZWxlY3Rpdml0eSAqKSBwYWxsb2Moc2l6ZW9mKFNlbGVjdGl2aXR5 KSAqIG5hdHRycyk7CisJYXR0cl9zZWwgPSBwYWxsb2NfYXJyYXkoU2VsZWN0aXZpdHksIG5h dHRycyk7CiAKIAlhdHRpZHggPSAwOwogCWkgPSAtMTsKQEAgLTEzMDYsOCArMTMwNSw3IEBA IGRlcGVuZGVuY2llc19jbGF1c2VsaXN0X3NlbGVjdGl2aXR5KFBsYW5uZXJJbmZvICpyb290 LAogCWlmICghaGFzX3N0YXRzX29mX2tpbmQocmVsLT5zdGF0bGlzdCwgU1RBVFNfRVhUX0RF UEVOREVOQ0lFUykpCiAJCXJldHVybiAxLjA7CiAKLQlsaXN0X2F0dG51bXMgPSAoQXR0ck51 bWJlciAqKSBwYWxsb2Moc2l6ZW9mKEF0dHJOdW1iZXIpICoKLQkJCQkJCQkJCQkgbGlzdF9s ZW5ndGgoY2xhdXNlcykpOworCWxpc3RfYXR0bnVtcyA9IHBhbGxvY19hcnJheShBdHRyTnVt YmVyLCBsaXN0X2xlbmd0aChjbGF1c2VzKSk7CiAKIAkvKgogCSAqIFdlIGFsbG9jYXRlIHNw YWNlIGFzIGlmIGV2ZXJ5IGNsYXVzZSB3YXMgYSB1bmlxdWUgZXhwcmVzc2lvbiwgYWx0aG91 Z2gKQEAgLTEzMTUsNyArMTMxMyw3IEBAIGRlcGVuZGVuY2llc19jbGF1c2VsaXN0X3NlbGVj dGl2aXR5KFBsYW5uZXJJbmZvICpyb290LAogCSAqIHdlJ2xsIHRyYW5zbGF0ZSB0byBhdHRu dW1zLCBhbmQgdGhlcmUgbWlnaHQgYmUgZHVwbGljYXRlcy4gQnV0IGl0J3MKIAkgKiBlYXNp ZXIgYW5kIGNoZWFwZXIgdG8ganVzdCBkbyBvbmUgYWxsb2NhdGlvbiB0aGFuIHJlcGFsbG9j IGxhdGVyLgogCSAqLwotCXVuaXF1ZV9leHBycyA9IChOb2RlICoqKSBwYWxsb2Moc2l6ZW9m KE5vZGUgKikgKiBsaXN0X2xlbmd0aChjbGF1c2VzKSk7CisJdW5pcXVlX2V4cHJzID0gcGFs bG9jX2FycmF5KE5vZGUgKiwgbGlzdF9sZW5ndGgoY2xhdXNlcykpOwogCXVuaXF1ZV9leHBy c19jbnQgPSAwOwogCiAJLyoKQEAgLTE0NjgsOCArMTQ2Niw3IEBAIGRlcGVuZGVuY2llc19j bGF1c2VsaXN0X3NlbGVjdGl2aXR5KFBsYW5uZXJJbmZvICpyb290LAogCSAqIG1ha2UgaXQg anVzdCB0aGUgcmlnaHQgc2l6ZSwgYnV0IGl0J3MgbGlrZWx5IHdhc3RlZnVsIGFueXdheSB0 aGFua3MgdG8KIAkgKiBtb3ZpbmcgdGhlIGZyZWVkIGNodW5rcyB0byBmcmVlbGlzdHMgZXRj LgogCSAqLwotCWZ1bmNfZGVwZW5kZW5jaWVzID0gKE1WRGVwZW5kZW5jaWVzICoqKSBwYWxs b2Moc2l6ZW9mKE1WRGVwZW5kZW5jaWVzICopICoKLQkJCQkJCQkJCQkJCSAgIGxpc3RfbGVu Z3RoKHJlbC0+c3RhdGxpc3QpKTsKKwlmdW5jX2RlcGVuZGVuY2llcyA9IHBhbGxvY19hcnJh eShNVkRlcGVuZGVuY2llcyAqLCBsaXN0X2xlbmd0aChyZWwtPnN0YXRsaXN0KSk7CiAJbmZ1 bmNfZGVwZW5kZW5jaWVzID0gMDsKIAl0b3RhbF9uZGVwcyA9IDA7CiAKQEAgLTE2OTIsOCAr MTY4OSw3IEBAIGRlcGVuZGVuY2llc19jbGF1c2VsaXN0X3NlbGVjdGl2aXR5KFBsYW5uZXJJ bmZvICpyb290LAogCSAqIFdvcmsgb3V0IHdoaWNoIGRlcGVuZGVuY2llcyB3ZSBjYW4gYXBw bHksIHN0YXJ0aW5nIHdpdGggdGhlCiAJICogd2lkZXN0L3N0cm9uZ2VzdCBvbmVzLCBhbmQg cHJvY2VlZGluZyB0byBzbWFsbGVyL3dlYWtlciBvbmVzLgogCSAqLwotCWRlcGVuZGVuY2ll cyA9IChNVkRlcGVuZGVuY3kgKiopIHBhbGxvYyhzaXplb2YoTVZEZXBlbmRlbmN5ICopICoK LQkJCQkJCQkJCQkJdG90YWxfbmRlcHMpOworCWRlcGVuZGVuY2llcyA9IHBhbGxvY19hcnJh eShNVkRlcGVuZGVuY3kgKiwgdG90YWxfbmRlcHMpOwogCW5kZXBlbmRlbmNpZXMgPSAwOwog CiAJd2hpbGUgKHRydWUpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdGF0aXN0aWNzL2V4 dGVuZGVkX3N0YXRzLmMgYi9zcmMvYmFja2VuZC9zdGF0aXN0aWNzL2V4dGVuZGVkX3N0YXRz LmMKaW5kZXggM2MzZDJkMzE1YzYuLjE3OWQxNWM1MWVlIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9zdGF0aXN0aWNzL2V4dGVuZGVkX3N0YXRzLmMKKysrIGIvc3JjL2JhY2tlbmQvc3Rh dGlzdGljcy9leHRlbmRlZF9zdGF0cy5jCkBAIC00NDYsNyArNDQ2LDcgQEAgZmV0Y2hfc3Rh dGVudHJpZXNfZm9yX3JlbGF0aW9uKFJlbGF0aW9uIHBnX3N0YXRleHQsIE9pZCByZWxpZCkK IAkJRm9ybV9wZ19zdGF0aXN0aWNfZXh0IHN0YUZvcm07CiAJCUxpc3QJICAgKmV4cHJzID0g TklMOwogCi0JCWVudHJ5ID0gcGFsbG9jMChzaXplb2YoU3RhdEV4dEVudHJ5KSk7CisJCWVu dHJ5ID0gcGFsbG9jMF9vYmplY3QoU3RhdEV4dEVudHJ5KTsKIAkJc3RhRm9ybSA9IChGb3Jt X3BnX3N0YXRpc3RpY19leHQpIEdFVFNUUlVDVChodHVwKTsKIAkJZW50cnktPnN0YXRPaWQg PSBzdGFGb3JtLT5vaWQ7CiAJCWVudHJ5LT5zY2hlbWEgPSBnZXRfbmFtZXNwYWNlX25hbWUo c3RhRm9ybS0+c3R4bmFtZXNwYWNlKTsKQEAgLTUzMiw3ICs1MzIsNyBAQCBleGFtaW5lX2F0 dHJpYnV0ZShOb2RlICpleHByKQogCS8qCiAJICogQ3JlYXRlIHRoZSBWYWNBdHRyU3RhdHMg c3RydWN0LgogCSAqLwotCXN0YXRzID0gKFZhY0F0dHJTdGF0cyAqKSBwYWxsb2MwKHNpemVv ZihWYWNBdHRyU3RhdHMpKTsKKwlzdGF0cyA9IHBhbGxvYzBfb2JqZWN0KFZhY0F0dHJTdGF0 cyk7CiAJc3RhdHMtPmF0dHN0YXR0YXJnZXQgPSAtMTsKIAogCS8qCkBAIC02MTMsNyArNjEz LDcgQEAgZXhhbWluZV9leHByZXNzaW9uKE5vZGUgKmV4cHIsIGludCBzdGF0dGFyZ2V0KQog CS8qCiAJICogQ3JlYXRlIHRoZSBWYWNBdHRyU3RhdHMgc3RydWN0LgogCSAqLwotCXN0YXRz ID0gKFZhY0F0dHJTdGF0cyAqKSBwYWxsb2MwKHNpemVvZihWYWNBdHRyU3RhdHMpKTsKKwlz dGF0cyA9IHBhbGxvYzBfb2JqZWN0KFZhY0F0dHJTdGF0cyk7CiAKIAkvKgogCSAqIFdlIGNh bid0IGhhdmUgc3RhdGlzdGljcyB0YXJnZXQgc3BlY2lmaWVkIGZvciB0aGUgZXhwcmVzc2lv biwgc28gd2UKQEAgLTk0Niw3ICs5NDYsNyBAQCBidWlsZF9hdHRudW1zX2FycmF5KEJpdG1h cHNldCAqYXR0cnMsIGludCBuZXhwcnMsIGludCAqbnVtYXR0cnMpCiAJCSpudW1hdHRycyA9 IG51bTsKIAogCS8qIGJ1aWxkIGF0dG51bXMgZnJvbSB0aGUgYml0bWFwc2V0ICovCi0JYXR0 bnVtcyA9IChBdHRyTnVtYmVyICopIHBhbGxvYyhzaXplb2YoQXR0ck51bWJlcikgKiBudW0p OworCWF0dG51bXMgPSBwYWxsb2NfYXJyYXkoQXR0ck51bWJlciwgbnVtKTsKIAlpID0gMDsK IAlqID0gLTE7CiAJd2hpbGUgKChqID0gYm1zX25leHRfbWVtYmVyKGF0dHJzLCBqKSkgPj0g MCkKQEAgLTEwMjgsNyArMTAyOCw3IEBAIGJ1aWxkX3NvcnRlZF9pdGVtcyhTdGF0c0J1aWxk RGF0YSAqZGF0YSwgaW50ICpuaXRlbXMsCiAJfQogCiAJLyogYnVpbGQgYSBsb2NhbCBjYWNo ZSBvZiB0eXBsZW4gZm9yIGFsbCBhdHRyaWJ1dGVzICovCi0JdHlwbGVuID0gKGludCAqKSBw YWxsb2Moc2l6ZW9mKGludCkgKiBkYXRhLT5uYXR0bnVtcyk7CisJdHlwbGVuID0gcGFsbG9j X2FycmF5KGludCwgZGF0YS0+bmF0dG51bXMpOwogCWZvciAoaSA9IDA7IGkgPCBkYXRhLT5u YXR0bnVtczsgaSsrKQogCQl0eXBsZW5baV0gPSBnZXRfdHlwbGVuKGRhdGEtPnN0YXRzW2ld LT5hdHRydHlwaWQpOwogCkBAIC0xNzA3LDExICsxNzA3LDEwIEBAIHN0YXRleHRfbWN2X2Ns YXVzZWxpc3Rfc2VsZWN0aXZpdHkoUGxhbm5lckluZm8gKnJvb3QsIExpc3QgKmNsYXVzZXMs IGludCB2YXJSZWxpCiAJaWYgKCFoYXNfc3RhdHNfb2Zfa2luZChyZWwtPnN0YXRsaXN0LCBT VEFUU19FWFRfTUNWKSkKIAkJcmV0dXJuIHNlbDsKIAotCWxpc3RfYXR0bnVtcyA9IChCaXRt YXBzZXQgKiopIHBhbGxvYyhzaXplb2YoQml0bWFwc2V0ICopICoKLQkJCQkJCQkJCQkgbGlz dF9sZW5ndGgoY2xhdXNlcykpOworCWxpc3RfYXR0bnVtcyA9IHBhbGxvY19hcnJheShCaXRt YXBzZXQgKiwgbGlzdF9sZW5ndGgoY2xhdXNlcykpOwogCiAJLyogZXhwcmVzc2lvbnMgZXh0 cmFjdGVkIGZyb20gY29tcGxleCBleHByZXNzaW9ucyAqLwotCWxpc3RfZXhwcnMgPSAoTGlz dCAqKikgcGFsbG9jKHNpemVvZihOb2RlICopICogbGlzdF9sZW5ndGgoY2xhdXNlcykpOwor CWxpc3RfZXhwcnMgPSBwYWxsb2NfYXJyYXkoTGlzdCAqLCBsaXN0X2xlbmd0aChjbGF1c2Vz KSk7CiAKIAkvKgogCSAqIFByZS1wcm9jZXNzIHRoZSBjbGF1c2VzIGxpc3QgdG8gZXh0cmFj dCB0aGUgYXR0bnVtcyBhbmQgZXhwcmVzc2lvbnMKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3N0YXRpc3RpY3MvbWN2LmMgYi9zcmMvYmFja2VuZC9zdGF0aXN0aWNzL21jdi5jCmluZGV4 IGY1OWZiODIxNTQzLi43YzkzNTQ5Y2Q3ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3Rh dGlzdGljcy9tY3YuYworKysgYi9zcmMvYmFja2VuZC9zdGF0aXN0aWNzL21jdi5jCkBAIC0y NzAsNyArMjcwLDcgQEAgc3RhdGV4dF9tY3ZfYnVpbGQoU3RhdHNCdWlsZERhdGEgKmRhdGEs IGRvdWJsZSB0b3RhbHJvd3MsIGludCBzdGF0dGFyZ2V0KQogCQkJCQkJCQkJCSsgc2l6ZW9m KFNvcnRTdXBwb3J0RGF0YSkpOwogCiAJCS8qIGNvbXB1dGUgZnJlcXVlbmNpZXMgZm9yIHZh bHVlcyBpbiBlYWNoIGNvbHVtbiAqLwotCQluZnJlcXMgPSAoaW50ICopIHBhbGxvYzAoc2l6 ZW9mKGludCkgKiBudW1hdHRycyk7CisJCW5mcmVxcyA9IChpbnQgKikgcGFsbG9jMF9hcnJh eShpbnQsIG51bWF0dHJzKTsKIAkJZnJlcXMgPSBidWlsZF9jb2x1bW5fZnJlcXVlbmNpZXMo Z3JvdXBzLCBuZ3JvdXBzLCBtc3MsIG5mcmVxcyk7CiAKIAkJLyoKQEAgLTI5NCw4ICsyOTQs OCBAQCBzdGF0ZXh0X21jdl9idWlsZChTdGF0c0J1aWxkRGF0YSAqZGF0YSwgZG91YmxlIHRv dGFscm93cywgaW50IHN0YXR0YXJnZXQpCiAJCQkvKiBqdXN0IHBvaW50IHRvIHRoZSBwcm9w ZXIgcGxhY2UgaW4gdGhlIGxpc3QgKi8KIAkJCU1DVkl0ZW0gICAgKml0ZW0gPSAmbWN2bGlz dC0+aXRlbXNbaV07CiAKLQkJCWl0ZW0tPnZhbHVlcyA9IChEYXR1bSAqKSBwYWxsb2Moc2l6 ZW9mKERhdHVtKSAqIG51bWF0dHJzKTsKLQkJCWl0ZW0tPmlzbnVsbCA9IChib29sICopIHBh bGxvYyhzaXplb2YoYm9vbCkgKiBudW1hdHRycyk7CisJCQlpdGVtLT52YWx1ZXMgPSBwYWxs b2NfYXJyYXkoRGF0dW0sIG51bWF0dHJzKTsKKwkJCWl0ZW0tPmlzbnVsbCA9IHBhbGxvY19h cnJheShib29sLCBudW1hdHRycyk7CiAKIAkJCS8qIGNvcHkgdmFsdWVzIGZvciB0aGUgZ3Jv dXAgKi8KIAkJCW1lbWNweShpdGVtLT52YWx1ZXMsIGdyb3Vwc1tpXS52YWx1ZXMsIHNpemVv ZihEYXR1bSkgKiBudW1hdHRycyk7CkBAIC02MzUsOCArNjM1LDggQEAgc3RhdGV4dF9tY3Zf c2VyaWFsaXplKE1DVkxpc3QgKm1jdmxpc3QsIFZhY0F0dHJTdGF0cyAqKnN0YXRzKQogCWNo YXIJICAgKmVuZHB0ciBQR19VU0VEX0ZPUl9BU1NFUlRTX09OTFk7CiAKIAkvKiB2YWx1ZXMg cGVyIGRpbWVuc2lvbiAoYW5kIG51bWJlciBvZiBub24tTlVMTCB2YWx1ZXMpICovCi0JRGF0 dW0JICAqKnZhbHVlcyA9IChEYXR1bSAqKikgcGFsbG9jMChzaXplb2YoRGF0dW0gKikgKiBu ZGltcyk7Ci0JaW50CQkgICAqY291bnRzID0gKGludCAqKSBwYWxsb2MwKHNpemVvZihpbnQp ICogbmRpbXMpOworCURhdHVtCSAgKip2YWx1ZXMgPSAoRGF0dW0gKiopIHBhbGxvYzBfYXJy YXkoRGF0dW0gKiwgbmRpbXMpOworCWludAkJICAgKmNvdW50cyA9IChpbnQgKikgcGFsbG9j MF9hcnJheShpbnQsIG5kaW1zKTsKIAogCS8qCiAJICogV2UnbGwgaW5jbHVkZSBzb21lIHJ1 ZGltZW50YXJ5IGluZm9ybWF0aW9uIGFib3V0IHRoZSBhdHRyaWJ1dGUgdHlwZXMKQEAgLTY0 NiwxMCArNjQ2LDEwIEBAIHN0YXRleHRfbWN2X3NlcmlhbGl6ZShNQ1ZMaXN0ICptY3ZsaXN0 LCBWYWNBdHRyU3RhdHMgKipzdGF0cykKIAkgKiB0aGUgc3RhdGlzdGljcyBnZXRzIGRyb3Bw ZWQgYXV0b21hdGljYWxseS4gIFdlIG5lZWQgdG8gc3RvcmUgdGhlIGluZm8KIAkgKiBhYm91 dCB0aGUgYXJyYXlzIG9mIGRlZHVwbGljYXRlZCB2YWx1ZXMgYW55d2F5LgogCSAqLwotCWlu Zm8gPSAoRGltZW5zaW9uSW5mbyAqKSBwYWxsb2MwKHNpemVvZihEaW1lbnNpb25JbmZvKSAq IG5kaW1zKTsKKwlpbmZvID0gKERpbWVuc2lvbkluZm8gKikgcGFsbG9jMF9hcnJheShEaW1l bnNpb25JbmZvLCBuZGltcyk7CiAKIAkvKiBzb3J0IHN1cHBvcnQgZGF0YSBmb3IgYWxsIGF0 dHJpYnV0ZXMgaW5jbHVkZWQgaW4gdGhlIE1DViBsaXN0ICovCi0Jc3N1cCA9IChTb3J0U3Vw cG9ydCkgcGFsbG9jMChzaXplb2YoU29ydFN1cHBvcnREYXRhKSAqIG5kaW1zKTsKKwlzc3Vw ID0gKFNvcnRTdXBwb3J0KSBwYWxsb2MwX2FycmF5KFNvcnRTdXBwb3J0RGF0YSwgbmRpbXMp OwogCiAJLyogY29sbGVjdCBhbmQgZGVkdXBsaWNhdGUgdmFsdWVzIGZvciBlYWNoIGRpbWVu c2lvbiAoYXR0cmlidXRlKSAqLwogCWZvciAoZGltID0gMDsgZGltIDwgbmRpbXM7IGRpbSsr KQpAQCAtNjY4LDcgKzY2OCw3IEBAIHN0YXRleHRfbWN2X3NlcmlhbGl6ZShNQ1ZMaXN0ICpt Y3ZsaXN0LCBWYWNBdHRyU3RhdHMgKipzdGF0cykKIAkJaW5mb1tkaW1dLnR5cGJ5dmFsID0g c3RhdHNbZGltXS0+YXR0cnR5cGUtPnR5cGJ5dmFsOwogCiAJCS8qIGFsbG9jYXRlIHNwYWNl IGZvciB2YWx1ZXMgaW4gdGhlIGF0dHJpYnV0ZSBhbmQgY29sbGVjdCB0aGVtICovCi0JCXZh bHVlc1tkaW1dID0gKERhdHVtICopIHBhbGxvYzAoc2l6ZW9mKERhdHVtKSAqIG1jdmxpc3Qt Pm5pdGVtcyk7CisJCXZhbHVlc1tkaW1dID0gKERhdHVtICopIHBhbGxvYzBfYXJyYXkoRGF0 dW0sIG1jdmxpc3QtPm5pdGVtcyk7CiAKIAkJZm9yIChpID0gMDsgaSA8IG1jdmxpc3QtPm5p dGVtczsgaSsrKQogCQl7CkBAIC0xMTM0LDExICsxMTM0LDExIEBAIHN0YXRleHRfbWN2X2Rl c2VyaWFsaXplKGJ5dGVhICpkYXRhKQogCSAqIG9yaWdpbmFsIHZhbHVlcyAoaXQgbWlnaHQg Z28gYXdheSkuCiAJICovCiAJZGF0YWxlbiA9IDA7CQkJCS8qIHNwYWNlIGZvciBieS1yZWYg ZGF0YSAqLwotCW1hcCA9IChEYXR1bSAqKikgcGFsbG9jKG5kaW1zICogc2l6ZW9mKERhdHVt ICopKTsKKwltYXAgPSBwYWxsb2NfYXJyYXkoRGF0dW0gKiwgbmRpbXMpOwogCiAJZm9yIChk aW0gPSAwOyBkaW0gPCBuZGltczsgZGltKyspCiAJewotCQltYXBbZGltXSA9IChEYXR1bSAq KSBwYWxsb2Moc2l6ZW9mKERhdHVtKSAqIGluZm9bZGltXS5udmFsdWVzKTsKKwkJbWFwW2Rp bV0gPSBwYWxsb2NfYXJyYXkoRGF0dW0sIGluZm9bZGltXS5udmFsdWVzKTsKIAogCQkvKiBz cGFjZSBuZWVkZWQgZm9yIGEgY29weSBvZiBkYXRhIGZvciBieS1yZWYgdHlwZXMgKi8KIAkJ ZGF0YWxlbiArPSBpbmZvW2RpbV0ubmJ5dGVzX2FsaWduZWQ7CkBAIC0xNjA5LDcgKzE2MDks NyBAQCBtY3ZfZ2V0X21hdGNoX2JpdG1hcChQbGFubmVySW5mbyAqcm9vdCwgTGlzdCAqY2xh dXNlcywKIAlBc3NlcnQobWN2bGlzdC0+bml0ZW1zID4gMCk7CiAJQXNzZXJ0KG1jdmxpc3Qt Pm5pdGVtcyA8PSBTVEFUU19NQ1ZMSVNUX01BWF9JVEVNUyk7CiAKLQltYXRjaGVzID0gcGFs bG9jKHNpemVvZihib29sKSAqIG1jdmxpc3QtPm5pdGVtcyk7CisJbWF0Y2hlcyA9IHBhbGxv Y19hcnJheShib29sLCBtY3ZsaXN0LT5uaXRlbXMpOwogCW1lbXNldChtYXRjaGVzLCAhaXNf b3IsIHNpemVvZihib29sKSAqIG1jdmxpc3QtPm5pdGVtcyk7CiAKIAkvKgpAQCAtMjEzNCw3 ICsyMTM0LDcgQEAgbWN2X2NsYXVzZV9zZWxlY3Rpdml0eV9vcihQbGFubmVySW5mbyAqcm9v dCwgU3RhdGlzdGljRXh0SW5mbyAqc3RhdCwKIAogCS8qIGJ1aWxkIHRoZSBPUi1tYXRjaGVz IGJpdG1hcCwgaWYgbm90IGJ1aWx0IGFscmVhZHkgKi8KIAlpZiAoKm9yX21hdGNoZXMgPT0g TlVMTCkKLQkJKm9yX21hdGNoZXMgPSBwYWxsb2MwKHNpemVvZihib29sKSAqIG1jdi0+bml0 ZW1zKTsKKwkJKm9yX21hdGNoZXMgPSBwYWxsb2MwX2FycmF5KGJvb2wsIG1jdi0+bml0ZW1z KTsKIAogCS8qIGJ1aWxkIHRoZSBtYXRjaCBiaXRtYXAgZm9yIHRoZSBuZXcgY2xhdXNlICov CiAJbmV3X21hdGNoZXMgPSBtY3ZfZ2V0X21hdGNoX2JpdG1hcChyb290LCBsaXN0X21ha2Ux KGNsYXVzZSksIHN0YXQtPmtleXMsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdGF0aXN0 aWNzL212ZGlzdGluY3QuYyBiL3NyYy9iYWNrZW5kL3N0YXRpc3RpY3MvbXZkaXN0aW5jdC5j CmluZGV4IGZlNDUyZjUzYWU0Li41ODA0NmQyYmQ2MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvc3RhdGlzdGljcy9tdmRpc3RpbmN0LmMKKysrIGIvc3JjL2JhY2tlbmQvc3RhdGlzdGlj cy9tdmRpc3RpbmN0LmMKQEAgLTExMCw3ICsxMTAsNyBAQCBzdGF0ZXh0X25kaXN0aW5jdF9i dWlsZChkb3VibGUgdG90YWxyb3dzLCBTdGF0c0J1aWxkRGF0YSAqZGF0YSkKIAkJCU1WTkRp c3RpbmN0SXRlbSAqaXRlbSA9ICZyZXN1bHQtPml0ZW1zW2l0ZW1jbnRdOwogCQkJaW50CQkJ ajsKIAotCQkJaXRlbS0+YXR0cmlidXRlcyA9IHBhbGxvYyhzaXplb2YoQXR0ck51bWJlcikg KiBrKTsKKwkJCWl0ZW0tPmF0dHJpYnV0ZXMgPSBwYWxsb2NfYXJyYXkoQXR0ck51bWJlciwg ayk7CiAJCQlpdGVtLT5uYXR0cmlidXRlcyA9IGs7CiAKIAkJCS8qIHRyYW5zbGF0ZSB0aGUg aW5kZXhlcyB0byBhdHRudW1zICovCkBAIC0zNTksOSArMzU5LDkgQEAgbmRpc3RpbmN0X2Zv cl9jb21iaW5hdGlvbihkb3VibGUgdG90YWxyb3dzLCBTdGF0c0J1aWxkRGF0YSAqZGF0YSwK IAkgKiB1c2luZyB0aGUgc3BlY2lmaWVkIGNvbHVtbiBjb21iaW5hdGlvbiBhcyBkaW1lbnNp b25zLiAgV2UgY291bGQgdHJ5IHRvCiAJICogc29ydCBpbiBwbGFjZSwgYnV0IGl0J2QgcHJv YmFibHkgYmUgbW9yZSBjb21wbGV4IGFuZCBidWctcHJvbmUuCiAJICovCi0JaXRlbXMgPSAo U29ydEl0ZW0gKikgcGFsbG9jKG51bXJvd3MgKiBzaXplb2YoU29ydEl0ZW0pKTsKLQl2YWx1 ZXMgPSAoRGF0dW0gKikgcGFsbG9jMChzaXplb2YoRGF0dW0pICogbnVtcm93cyAqIGspOwot CWlzbnVsbCA9IChib29sICopIHBhbGxvYzAoc2l6ZW9mKGJvb2wpICogbnVtcm93cyAqIGsp OworCWl0ZW1zID0gcGFsbG9jX2FycmF5KFNvcnRJdGVtLCBudW1yb3dzKTsKKwl2YWx1ZXMg PSBwYWxsb2MwX2FycmF5KERhdHVtLCBudW1yb3dzICogayk7CisJaXNudWxsID0gcGFsbG9j MF9hcnJheShib29sLCBudW1yb3dzICogayk7CiAKIAlmb3IgKGkgPSAwOyBpIDwgbnVtcm93 czsgaSsrKQogCXsKQEAgLTUwOCwxMiArNTA4LDEyIEBAIGdlbmVyYXRvcl9pbml0KGludCBu LCBpbnQgaykKIAlBc3NlcnQoKG4gPj0gaykgJiYgKGsgPiAwKSk7CiAKIAkvKiBhbGxvY2F0 ZSB0aGUgZ2VuZXJhdG9yIHN0YXRlIGFzIGEgc2luZ2xlIGNodW5rIG9mIG1lbW9yeSAqLwot CXN0YXRlID0gKENvbWJpbmF0aW9uR2VuZXJhdG9yICopIHBhbGxvYyhzaXplb2YoQ29tYmlu YXRpb25HZW5lcmF0b3IpKTsKKwlzdGF0ZSA9IHBhbGxvY19vYmplY3QoQ29tYmluYXRpb25H ZW5lcmF0b3IpOwogCiAJc3RhdGUtPm5jb21iaW5hdGlvbnMgPSBuX2Nob29zZV9rKG4sIGsp OwogCiAJLyogcHJlLWFsbG9jYXRlIHNwYWNlIGZvciBhbGwgY29tYmluYXRpb25zICovCi0J c3RhdGUtPmNvbWJpbmF0aW9ucyA9IChpbnQgKikgcGFsbG9jKHNpemVvZihpbnQpICogayAq IHN0YXRlLT5uY29tYmluYXRpb25zKTsKKwlzdGF0ZS0+Y29tYmluYXRpb25zID0gcGFsbG9j X2FycmF5KGludCwgayAqIHN0YXRlLT5uY29tYmluYXRpb25zKTsKIAogCXN0YXRlLT5jdXJy ZW50ID0gMDsKIAlzdGF0ZS0+ayA9IGs7CkBAIC02MDYsNyArNjA2LDcgQEAgZ2VuZXJhdGVf Y29tYmluYXRpb25zX3JlY3Vyc2UoQ29tYmluYXRpb25HZW5lcmF0b3IgKnN0YXRlLAogc3Rh dGljIHZvaWQKIGdlbmVyYXRlX2NvbWJpbmF0aW9ucyhDb21iaW5hdGlvbkdlbmVyYXRvciAq c3RhdGUpCiB7Ci0JaW50CQkgICAqY3VycmVudCA9IChpbnQgKikgcGFsbG9jMChzaXplb2Yo aW50KSAqIHN0YXRlLT5rKTsKKwlpbnQJCSAgICpjdXJyZW50ID0gcGFsbG9jMF9hcnJheShp bnQsIHN0YXRlLT5rKTsKIAogCWdlbmVyYXRlX2NvbWJpbmF0aW9uc19yZWN1cnNlKHN0YXRl LCAwLCAwLCBjdXJyZW50KTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9i dWZmZXIvYnVmbWdyLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9idWZtZ3IuYwpp bmRleCAzMjdkZGI3YWRjOC4uYjczYThlYTVlZmUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3N0b3JhZ2UvYnVmZmVyL2J1Zm1nci5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVm ZmVyL2J1Zm1nci5jCkBAIC00Njc2LDcgKzQ2NzYsNyBAQCBEcm9wUmVsYXRpb25zQWxsQnVm ZmVycyhTTWdyUmVsYXRpb24gKnNtZ3JfcmVsbiwgaW50IG5sb2NhdG9ycykKIAlpZiAobmxv Y2F0b3JzID09IDApCiAJCXJldHVybjsKIAotCXJlbHMgPSBwYWxsb2Moc2l6ZW9mKFNNZ3JS ZWxhdGlvbikgKiBubG9jYXRvcnMpOwkvKiBub24tbG9jYWwgcmVsYXRpb25zICovCisJcmVs cyA9IHBhbGxvY19hcnJheShTTWdyUmVsYXRpb24sIG5sb2NhdG9ycyk7CS8qIG5vbi1sb2Nh bCByZWxhdGlvbnMgKi8KIAogCS8qIElmIGl0J3MgYSBsb2NhbCByZWxhdGlvbiwgaXQncyBs b2NhbGJ1Zi5jJ3MgcHJvYmxlbS4gKi8KIAlmb3IgKGkgPSAwOyBpIDwgbmxvY2F0b3JzOyBp KyspCkBAIC00NzA1LDcgKzQ3MDUsNyBAQCBEcm9wUmVsYXRpb25zQWxsQnVmZmVycyhTTWdy UmVsYXRpb24gKnNtZ3JfcmVsbiwgaW50IG5sb2NhdG9ycykKIAkgKiBmb3Jrcy4KIAkgKi8K IAlibG9jayA9IChCbG9ja051bWJlciAoKilbTUFYX0ZPUktOVU0gKyAxXSkKLQkJcGFsbG9j KHNpemVvZihCbG9ja051bWJlcikgKiBuICogKE1BWF9GT1JLTlVNICsgMSkpOworCQlwYWxs b2NfYXJyYXkoQmxvY2tOdW1iZXIsIG4gKiAoTUFYX0ZPUktOVU0gKyAxKSk7CiAKIAkvKgog CSAqIFdlIGNhbiBhdm9pZCBzY2FubmluZyB0aGUgZW50aXJlIGJ1ZmZlciBwb29sIGlmIHdl IGtub3cgdGhlIGV4YWN0IHNpemUKQEAgLTQ3NTgsNyArNDc1OCw3IEBAIERyb3BSZWxhdGlv bnNBbGxCdWZmZXJzKFNNZ3JSZWxhdGlvbiAqc21ncl9yZWxuLCBpbnQgbmxvY2F0b3JzKQog CX0KIAogCXBmcmVlKGJsb2NrKTsKLQlsb2NhdG9ycyA9IHBhbGxvYyhzaXplb2YoUmVsRmls ZUxvY2F0b3IpICogbik7CS8qIG5vbi1sb2NhbCByZWxhdGlvbnMgKi8KKwlsb2NhdG9ycyA9 IHBhbGxvY19hcnJheShSZWxGaWxlTG9jYXRvciwgbik7CS8qIG5vbi1sb2NhbCByZWxhdGlv bnMgKi8KIAlmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKQogCQlsb2NhdG9yc1tpXSA9IHJlbHNb aV0tPnNtZ3JfcmxvY2F0b3IubG9jYXRvcjsKIApAQCAtNTAzNyw3ICs1MDM3LDcgQEAgRmx1 c2hSZWxhdGlvbnNBbGxCdWZmZXJzKFNNZ3JSZWxhdGlvbiAqc21ncnMsIGludCBucmVscykK IAkJcmV0dXJuOwogCiAJLyogZmlsbC1pbiBhcnJheSBmb3IgcXNvcnQgKi8KLQlzcmVscyA9 IHBhbGxvYyhzaXplb2YoU01nclNvcnRBcnJheSkgKiBucmVscyk7CisJc3JlbHMgPSBwYWxs b2NfYXJyYXkoU01nclNvcnRBcnJheSwgbnJlbHMpOwogCiAJZm9yIChpID0gMDsgaSA8IG5y ZWxzOyBpKyspCiAJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9maWxlL2J1 ZmZpbGUuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvZmlsZS9idWZmaWxlLmMKaW5kZXggMzY2 ZDcwZDM4YTEuLjRlNTIwMDY1YWUwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdl L2ZpbGUvYnVmZmlsZS5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvZmlsZS9idWZmaWxl LmMKQEAgLTExNyw3ICsxMTcsNyBAQCBzdGF0aWMgRmlsZSBNYWtlTmV3RmlsZVNldFNlZ21l bnQoQnVmRmlsZSAqYnVmZmlsZSwgaW50IHNlZ21lbnQpOwogc3RhdGljIEJ1ZkZpbGUgKgog bWFrZUJ1ZkZpbGVDb21tb24oaW50IG5maWxlcykKIHsKLQlCdWZGaWxlICAgICpmaWxlID0g KEJ1ZkZpbGUgKikgcGFsbG9jKHNpemVvZihCdWZGaWxlKSk7CisJQnVmRmlsZSAgICAqZmls ZSA9IHBhbGxvY19vYmplY3QoQnVmRmlsZSk7CiAKIAlmaWxlLT5udW1GaWxlcyA9IG5maWxl czsKIAlmaWxlLT5pc0ludGVyWGFjdCA9IGZhbHNlOwpAQCAtMTQwLDcgKzE0MCw3IEBAIG1h a2VCdWZGaWxlKEZpbGUgZmlyc3RmaWxlKQogewogCUJ1ZkZpbGUgICAgKmZpbGUgPSBtYWtl QnVmRmlsZUNvbW1vbigxKTsKIAotCWZpbGUtPmZpbGVzID0gKEZpbGUgKikgcGFsbG9jKHNp emVvZihGaWxlKSk7CisJZmlsZS0+ZmlsZXMgPSBwYWxsb2Nfb2JqZWN0KEZpbGUpOwogCWZp bGUtPmZpbGVzWzBdID0gZmlyc3RmaWxlOwogCWZpbGUtPnJlYWRPbmx5ID0gZmFsc2U7CiAJ ZmlsZS0+ZmlsZXNldCA9IE5VTEw7CkBAIC0yNzEsNyArMjcxLDcgQEAgQnVmRmlsZUNyZWF0 ZUZpbGVTZXQoRmlsZVNldCAqZmlsZXNldCwgY29uc3QgY2hhciAqbmFtZSkKIAlmaWxlID0g bWFrZUJ1ZkZpbGVDb21tb24oMSk7CiAJZmlsZS0+ZmlsZXNldCA9IGZpbGVzZXQ7CiAJZmls ZS0+bmFtZSA9IHBzdHJkdXAobmFtZSk7Ci0JZmlsZS0+ZmlsZXMgPSAoRmlsZSAqKSBwYWxs b2Moc2l6ZW9mKEZpbGUpKTsKKwlmaWxlLT5maWxlcyA9IHBhbGxvY19vYmplY3QoRmlsZSk7 CiAJZmlsZS0+ZmlsZXNbMF0gPSBNYWtlTmV3RmlsZVNldFNlZ21lbnQoZmlsZSwgMCk7CiAJ ZmlsZS0+cmVhZE9ubHkgPSBmYWxzZTsKIApAQCAtMjk3LDcgKzI5Nyw3IEBAIEJ1ZkZpbGVP cGVuRmlsZVNldChGaWxlU2V0ICpmaWxlc2V0LCBjb25zdCBjaGFyICpuYW1lLCBpbnQgbW9k ZSwKIAlGaWxlCSAgICpmaWxlczsKIAlpbnQJCQluZmlsZXMgPSAwOwogCi0JZmlsZXMgPSBw YWxsb2Moc2l6ZW9mKEZpbGUpICogY2FwYWNpdHkpOworCWZpbGVzID0gcGFsbG9jX2FycmF5 KEZpbGUsIGNhcGFjaXR5KTsKIAogCS8qCiAJICogV2UgZG9uJ3Qga25vdyBob3cgbWFueSBz ZWdtZW50cyB0aGVyZSBhcmUsIHNvIHdlJ2xsIHByb2JlIHRoZQpAQCAtMzA5LDcgKzMwOSw3 IEBAIEJ1ZkZpbGVPcGVuRmlsZVNldChGaWxlU2V0ICpmaWxlc2V0LCBjb25zdCBjaGFyICpu YW1lLCBpbnQgbW9kZSwKIAkJaWYgKG5maWxlcyArIDEgPiBjYXBhY2l0eSkKIAkJewogCQkJ Y2FwYWNpdHkgKj0gMjsKLQkJCWZpbGVzID0gcmVwYWxsb2MoZmlsZXMsIHNpemVvZihGaWxl KSAqIGNhcGFjaXR5KTsKKwkJCWZpbGVzID0gcmVwYWxsb2NfYXJyYXkoZmlsZXMsIEZpbGUs IGNhcGFjaXR5KTsKIAkJfQogCQkvKiBUcnkgdG8gbG9hZCBhIHNlZ21lbnQuICovCiAJCUZp bGVTZXRTZWdtZW50TmFtZShzZWdtZW50X25hbWUsIG5hbWUsIG5maWxlcyk7CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jYXJyYXkuYyBiL3NyYy9iYWNrZW5k L3N0b3JhZ2UvaXBjL3Byb2NhcnJheS5jCmluZGV4IDIwMGY3MmM2ZTI1Li5mM2ExNjAzMjA0 ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY2FycmF5LmMKKysr IGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY2FycmF5LmMKQEAgLTExNjIsNyArMTE2 Miw3IEBAIFByb2NBcnJheUFwcGx5UmVjb3ZlcnlJbmZvKFJ1bm5pbmdUcmFuc2FjdGlvbnMg cnVubmluZykKIAkgKiBBbGxvY2F0ZSBhIHRlbXBvcmFyeSBhcnJheSB0byBhdm9pZCBtb2Rp ZnlpbmcgdGhlIGFycmF5IHBhc3NlZCBhcwogCSAqIGFyZ3VtZW50LgogCSAqLwotCXhpZHMg PSBwYWxsb2Moc2l6ZW9mKFRyYW5zYWN0aW9uSWQpICogKHJ1bm5pbmctPnhjbnQgKyBydW5u aW5nLT5zdWJ4Y250KSk7CisJeGlkcyA9IHBhbGxvY19hcnJheShUcmFuc2FjdGlvbklkLCBy dW5uaW5nLT54Y250ICsgcnVubmluZy0+c3VieGNudCk7CiAKIAkvKgogCSAqIEFkZCB0byB0 aGUgdGVtcCBhcnJheSBhbnkgeGlkcyB3aGljaCBoYXZlIG5vdCBhbHJlYWR5IGNvbXBsZXRl ZC4KQEAgLTMwMTIsOCArMzAxMiw3IEBAIEdldFZpcnR1YWxYSURzRGVsYXlpbmdDaGtwdChp bnQgKm52eGlkcywgaW50IHR5cGUpCiAJQXNzZXJ0KHR5cGUgIT0gMCk7CiAKIAkvKiBhbGxv Y2F0ZSB3aGF0J3MgY2VydGFpbmx5IGVub3VnaCByZXN1bHQgc3BhY2UgKi8KLQl2eGlkcyA9 IChWaXJ0dWFsVHJhbnNhY3Rpb25JZCAqKQotCQlwYWxsb2Moc2l6ZW9mKFZpcnR1YWxUcmFu c2FjdGlvbklkKSAqIGFycmF5UC0+bWF4UHJvY3MpOworCXZ4aWRzID0gcGFsbG9jX2FycmF5 KFZpcnR1YWxUcmFuc2FjdGlvbklkLCBhcnJheVAtPm1heFByb2NzKTsKIAogCUxXTG9ja0Fj cXVpcmUoUHJvY0FycmF5TG9jaywgTFdfU0hBUkVEKTsKIApAQCAtMzI5Myw4ICszMjkyLDcg QEAgR2V0Q3VycmVudFZpcnR1YWxYSURzKFRyYW5zYWN0aW9uSWQgbGltaXRYbWluLCBib29s IGV4Y2x1ZGVYbWluMCwKIAlpbnQJCQlpbmRleDsKIAogCS8qIGFsbG9jYXRlIHdoYXQncyBj ZXJ0YWlubHkgZW5vdWdoIHJlc3VsdCBzcGFjZSAqLwotCXZ4aWRzID0gKFZpcnR1YWxUcmFu c2FjdGlvbklkICopCi0JCXBhbGxvYyhzaXplb2YoVmlydHVhbFRyYW5zYWN0aW9uSWQpICog YXJyYXlQLT5tYXhQcm9jcyk7CisJdnhpZHMgPSBwYWxsb2NfYXJyYXkoVmlydHVhbFRyYW5z YWN0aW9uSWQsIGFycmF5UC0+bWF4UHJvY3MpOwogCiAJTFdMb2NrQWNxdWlyZShQcm9jQXJy YXlMb2NrLCBMV19TSEFSRUQpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdl L2lwYy9zaG1fbXEuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NobV9tcS5jCmluZGV4 IDJjNzlhNjQ5ZjQ2Li45Yzg4OGQzZWI3OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3Rv cmFnZS9pcGMvc2htX21xLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2htX21x LmMKQEAgLTI4OSw3ICsyODksNyBAQCBzaG1fbXFfZ2V0X3NlbmRlcihzaG1fbXEgKm1xKQog c2htX21xX2hhbmRsZSAqCiBzaG1fbXFfYXR0YWNoKHNobV9tcSAqbXEsIGRzbV9zZWdtZW50 ICpzZWcsIEJhY2tncm91bmRXb3JrZXJIYW5kbGUgKmhhbmRsZSkKIHsKLQlzaG1fbXFfaGFu ZGxlICptcWggPSBwYWxsb2Moc2l6ZW9mKHNobV9tcV9oYW5kbGUpKTsKKwlzaG1fbXFfaGFu ZGxlICptcWggPSBwYWxsb2Nfb2JqZWN0KHNobV9tcV9oYW5kbGUpOwogCiAJQXNzZXJ0KG1x LT5tcV9yZWNlaXZlciA9PSBNeVByb2MgfHwgbXEtPm1xX3NlbmRlciA9PSBNeVByb2MpOwog CW1xaC0+bXFoX3F1ZXVlID0gbXE7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdl L2lwYy9zaG1lbS5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2htZW0uYwppbmRleCBl ZTM0MDhkZjMwMS4uN2I2M2M3ZGM5MGEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3Jh Z2UvaXBjL3NobWVtLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2htZW0uYwpA QCAtNTk5LDcgKzU5OSw3IEBAIHBnX2dldF9zaG1lbV9hbGxvY2F0aW9uc19udW1hKFBHX0ZV TkNUSU9OX0FSR1MpCiAJSW5pdE1hdGVyaWFsaXplZFNSRihmY2luZm8sIDApOwogCiAJbWF4 X25vZGVzID0gcGdfbnVtYV9nZXRfbWF4X25vZGUoKTsKLQlub2RlcyA9IHBhbGxvYyhzaXpl b2YoU2l6ZSkgKiAobWF4X25vZGVzICsgMSkpOworCW5vZGVzID0gcGFsbG9jX2FycmF5KFNp emUsIG1heF9ub2RlcyArIDEpOwogCiAJLyoKIAkgKiBTaGFyZWQgbWVtb3J5IGFsbG9jYXRp b25zIGNhbiB2YXJ5IGluIHNpemUgYW5kIG1heSBub3QgYWxpZ24gd2l0aCBPUwpAQCAtNjI0 LDggKzYyNCw4IEBAIHBnX2dldF9zaG1lbV9hbGxvY2F0aW9uc19udW1hKFBHX0ZVTkNUSU9O X0FSR1MpCiAJICogdGhlbSB1c2luZyBvbmx5IGZyYWN0aW9uIG9mIHRoZSB0b3RhbCBwYWdl cy4KIAkgKi8KIAlzaG1fdG90YWxfcGFnZV9jb3VudCA9IChTaG1lbVNlZ0hkci0+dG90YWxz aXplIC8gb3NfcGFnZV9zaXplKSArIDE7Ci0JcGFnZV9wdHJzID0gcGFsbG9jMChzaXplb2Yo dm9pZCAqKSAqIHNobV90b3RhbF9wYWdlX2NvdW50KTsKLQlwYWdlc19zdGF0dXMgPSBwYWxs b2Moc2l6ZW9mKGludCkgKiBzaG1fdG90YWxfcGFnZV9jb3VudCk7CisJcGFnZV9wdHJzID0g cGFsbG9jMF9hcnJheSh2b2lkICosIHNobV90b3RhbF9wYWdlX2NvdW50KTsKKwlwYWdlc19z dGF0dXMgPSBwYWxsb2NfYXJyYXkoaW50LCBzaG1fdG90YWxfcGFnZV9jb3VudCk7CiAKIAlp ZiAoZmlyc3ROdW1hVG91Y2gpCiAJCWVsb2coREVCVUcxLCAiTlVNQTogcGFnZS1mYXVsdGlu ZyBzaGFyZWQgbWVtb3J5IHNlZ21lbnRzIGZvciBwcm9wZXIgTlVNQSByZWFkb3V0cyIpOwpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2xvY2suYyBiL3NyYy9iYWNr ZW5kL3N0b3JhZ2UvbG1nci9sb2NrLmMKaW5kZXggOWNiNzhlYWQxMDUuLjkwMTViYTNjYWY3 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbG9jay5jCisrKyBiL3Ny Yy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sb2NrLmMKQEAgLTMxMDAsOSArMzEwMCw3IEBAIEdl dExvY2tDb25mbGljdHMoY29uc3QgTE9DS1RBRyAqbG9ja3RhZywgTE9DS01PREUgbG9ja21v ZGUsIGludCAqY291bnRwKQogCQkJCQkJCQkgICAoTWF4QmFja2VuZHMgKyBtYXhfcHJlcGFy ZWRfeGFjdHMgKyAxKSk7CiAJfQogCWVsc2UKLQkJdnhpZHMgPSAoVmlydHVhbFRyYW5zYWN0 aW9uSWQgKikKLQkJCXBhbGxvYzAoc2l6ZW9mKFZpcnR1YWxUcmFuc2FjdGlvbklkKSAqCi0J CQkJCShNYXhCYWNrZW5kcyArIG1heF9wcmVwYXJlZF94YWN0cyArIDEpKTsKKwkJdnhpZHMg PSBwYWxsb2MwX2FycmF5KFZpcnR1YWxUcmFuc2FjdGlvbklkLCAoTWF4QmFja2VuZHMgKyBt YXhfcHJlcGFyZWRfeGFjdHMgKyAxKSk7CiAKIAkvKiBDb21wdXRlIGhhc2ggY29kZSBhbmQg cGFydGl0aW9uIGxvY2ssIGFuZCBsb29rIHVwIGNvbmZsaWN0aW5nIG1vZGVzLiAqLwogCWhh c2hjb2RlID0gTG9ja1RhZ0hhc2hDb2RlKGxvY2t0YWcpOwpAQCAtMzgwMSwxMiArMzc5OSwx MiBAQCBHZXRMb2NrU3RhdHVzRGF0YSh2b2lkKQogCWludAkJCWVsOwogCWludAkJCWk7CiAK LQlkYXRhID0gKExvY2tEYXRhICopIHBhbGxvYyhzaXplb2YoTG9ja0RhdGEpKTsKKwlkYXRh ID0gcGFsbG9jX29iamVjdChMb2NrRGF0YSk7CiAKIAkvKiBHdWVzcyBob3cgbXVjaCBzcGFj ZSB3ZSdsbCBuZWVkLiAqLwogCWVscyA9IE1heEJhY2tlbmRzOwogCWVsID0gMDsKLQlkYXRh LT5sb2NrcyA9IChMb2NrSW5zdGFuY2VEYXRhICopIHBhbGxvYyhzaXplb2YoTG9ja0luc3Rh bmNlRGF0YSkgKiBlbHMpOworCWRhdGEtPmxvY2tzID0gcGFsbG9jX2FycmF5KExvY2tJbnN0 YW5jZURhdGEsIGVscyk7CiAKIAkvKgogCSAqIEZpcnN0LCB3ZSBpdGVyYXRlIHRocm91Z2gg dGhlIHBlci1iYWNrZW5kIGZhc3QtcGF0aCBhcnJheXMsIGxvY2tpbmcKQEAgLTQwMDEsNyAr Mzk5OSw3IEBAIEdldEJsb2NrZXJTdGF0dXNEYXRhKGludCBibG9ja2VkX3BpZCkKIAlQR1BS T0MJICAgKnByb2M7CiAJaW50CQkJaTsKIAotCWRhdGEgPSAoQmxvY2tlZFByb2NzRGF0YSAq KSBwYWxsb2Moc2l6ZW9mKEJsb2NrZWRQcm9jc0RhdGEpKTsKKwlkYXRhID0gcGFsbG9jX29i amVjdChCbG9ja2VkUHJvY3NEYXRhKTsKIAogCS8qCiAJICogR3Vlc3MgaG93IG11Y2ggc3Bh Y2Ugd2UnbGwgbmVlZCwgYW5kIHByZWFsbG9jYXRlLiAgTW9zdCBvZiB0aGUgdGltZQpAQCAt NDAxMSw5ICs0MDA5LDkgQEAgR2V0QmxvY2tlclN0YXR1c0RhdGEoaW50IGJsb2NrZWRfcGlk KQogCSAqLwogCWRhdGEtPm5wcm9jcyA9IGRhdGEtPm5sb2NrcyA9IGRhdGEtPm5waWRzID0g MDsKIAlkYXRhLT5tYXhwcm9jcyA9IGRhdGEtPm1heGxvY2tzID0gZGF0YS0+bWF4cGlkcyA9 IE1heEJhY2tlbmRzOwotCWRhdGEtPnByb2NzID0gKEJsb2NrZWRQcm9jRGF0YSAqKSBwYWxs b2Moc2l6ZW9mKEJsb2NrZWRQcm9jRGF0YSkgKiBkYXRhLT5tYXhwcm9jcyk7Ci0JZGF0YS0+ bG9ja3MgPSAoTG9ja0luc3RhbmNlRGF0YSAqKSBwYWxsb2Moc2l6ZW9mKExvY2tJbnN0YW5j ZURhdGEpICogZGF0YS0+bWF4bG9ja3MpOwotCWRhdGEtPndhaXRlcl9waWRzID0gKGludCAq KSBwYWxsb2Moc2l6ZW9mKGludCkgKiBkYXRhLT5tYXhwaWRzKTsKKwlkYXRhLT5wcm9jcyA9 IHBhbGxvY19hcnJheShCbG9ja2VkUHJvY0RhdGEsIGRhdGEtPm1heHByb2NzKTsKKwlkYXRh LT5sb2NrcyA9IHBhbGxvY19hcnJheShMb2NrSW5zdGFuY2VEYXRhLCBkYXRhLT5tYXhsb2Nr cyk7CisJZGF0YS0+d2FpdGVyX3BpZHMgPSBwYWxsb2NfYXJyYXkoaW50LCBkYXRhLT5tYXhw aWRzKTsKIAogCS8qCiAJICogSW4gb3JkZXIgdG8gc2VhcmNoIHRoZSBQcm9jQXJyYXkgZm9y IGJsb2NrZWRfcGlkIGFuZCBhc3N1bWUgdGhhdCB0aGF0CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9zdG9yYWdlL2xtZ3IvcHJlZGljYXRlLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2xt Z3IvcHJlZGljYXRlLmMKaW5kZXggYmI4MDdkOGM5Y2QuLjQwODgxMDdlMmUyIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJlZGljYXRlLmMKKysrIGIvc3JjL2Jh Y2tlbmQvc3RvcmFnZS9sbWdyL3ByZWRpY2F0ZS5jCkBAIC0xNDUxLDcgKzE0NTEsNyBAQCBH ZXRQcmVkaWNhdGVMb2NrU3RhdHVzRGF0YSh2b2lkKQogCUhBU0hfU0VRX1NUQVRVUyBzZXFz dGF0OwogCVBSRURJQ0FURUxPQ0sgKnByZWRsb2NrOwogCi0JZGF0YSA9IChQcmVkaWNhdGVM b2NrRGF0YSAqKSBwYWxsb2Moc2l6ZW9mKFByZWRpY2F0ZUxvY2tEYXRhKSk7CisJZGF0YSA9 IHBhbGxvY19vYmplY3QoUHJlZGljYXRlTG9ja0RhdGEpOwogCiAJLyoKIAkgKiBUbyBlbnN1 cmUgY29uc2lzdGVuY3ksIHRha2Ugc2ltdWx0YW5lb3VzIGxvY2tzIG9uIGFsbCBwYXJ0aXRp b24gbG9ja3MKQEAgLTE0NjQsMTAgKzE0NjQsOCBAQCBHZXRQcmVkaWNhdGVMb2NrU3RhdHVz RGF0YSh2b2lkKQogCS8qIEdldCBudW1iZXIgb2YgbG9ja3MgYW5kIGFsbG9jYXRlIGFwcHJv cHJpYXRlbHktc2l6ZWQgYXJyYXlzLiAqLwogCWVscyA9IGhhc2hfZ2V0X251bV9lbnRyaWVz KFByZWRpY2F0ZUxvY2tIYXNoKTsKIAlkYXRhLT5uZWxlbWVudHMgPSBlbHM7Ci0JZGF0YS0+ bG9ja3RhZ3MgPSAoUFJFRElDQVRFTE9DS1RBUkdFVFRBRyAqKQotCQlwYWxsb2Moc2l6ZW9m KFBSRURJQ0FURUxPQ0tUQVJHRVRUQUcpICogZWxzKTsKLQlkYXRhLT54YWN0cyA9IChTRVJJ QUxJWkFCTEVYQUNUICopCi0JCXBhbGxvYyhzaXplb2YoU0VSSUFMSVpBQkxFWEFDVCkgKiBl bHMpOworCWRhdGEtPmxvY2t0YWdzID0gcGFsbG9jX2FycmF5KFBSRURJQ0FURUxPQ0tUQVJH RVRUQUcsIGVscyk7CisJZGF0YS0+eGFjdHMgPSBwYWxsb2NfYXJyYXkoU0VSSUFMSVpBQkxF WEFDVCwgZWxzKTsKIAogCiAJLyogU2NhbiB0aHJvdWdoIFByZWRpY2F0ZUxvY2tIYXNoIGFu ZCBjb3B5IGNvbnRlbnRzICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL3Nt Z3IvYnVsa193cml0ZS5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9zbWdyL2J1bGtfd3JpdGUu YwppbmRleCBiOTU4YmUxNTcxNi4uZDQzYzMwZGE0OGUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3N0b3JhZ2Uvc21nci9idWxrX3dyaXRlLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFn ZS9zbWdyL2J1bGtfd3JpdGUuYwpAQCAtMTAxLDcgKzEwMSw3IEBAIHNtZ3JfYnVsa19zdGFy dF9zbWdyKFNNZ3JSZWxhdGlvbiBzbWdyLCBGb3JrTnVtYmVyIGZvcmtudW0sIGJvb2wgdXNl X3dhbCkKIHsKIAlCdWxrV3JpdGVTdGF0ZSAqc3RhdGU7CiAKLQlzdGF0ZSA9IHBhbGxvYyhz aXplb2YoQnVsa1dyaXRlU3RhdGUpKTsKKwlzdGF0ZSA9IHBhbGxvY19vYmplY3QoQnVsa1dy aXRlU3RhdGUpOwogCXN0YXRlLT5zbWdyID0gc21ncjsKIAlzdGF0ZS0+Zm9ya251bSA9IGZv cmtudW07CiAJc3RhdGUtPnVzZV93YWwgPSB1c2Vfd2FsOwpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvc3RvcmFnZS9zbWdyL21kLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL3NtZ3IvbWQu YwppbmRleCBlM2YzMzVhODM0MC4uNzFiY2RlYjY2MDEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3N0b3JhZ2Uvc21nci9tZC5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2Uvc21nci9t ZC5jCkBAIC0xNTk5LDcgKzE1OTksNyBAQCBEcm9wUmVsYXRpb25GaWxlcyhSZWxGaWxlTG9j YXRvciAqZGVscmVscywgaW50IG5kZWxyZWxzLCBib29sIGlzUmVkbykKIAlTTWdyUmVsYXRp b24gKnNyZWxzOwogCWludAkJCWk7CiAKLQlzcmVscyA9IHBhbGxvYyhzaXplb2YoU01nclJl bGF0aW9uKSAqIG5kZWxyZWxzKTsKKwlzcmVscyA9IHBhbGxvY19hcnJheShTTWdyUmVsYXRp b24sIG5kZWxyZWxzKTsKIAlmb3IgKGkgPSAwOyBpIDwgbmRlbHJlbHM7IGkrKykKIAl7CiAJ CVNNZ3JSZWxhdGlvbiBzcmVsID0gc21ncm9wZW4oZGVscmVsc1tpXSwgSU5WQUxJRF9QUk9D X05VTUJFUik7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL3NtZ3Ivc21nci5j IGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9zbWdyL3NtZ3IuYwppbmRleCBiY2UzN2EzNmQ1MS4u ZjkwNjZhYjhjNDkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2Uvc21nci9zbWdy LmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9zbWdyL3NtZ3IuYwpAQCAtNTYxLDcgKzU2 MSw3IEBAIHNtZ3Jkb3VubGlua2FsbChTTWdyUmVsYXRpb24gKnJlbHMsIGludCBucmVscywg Ym9vbCBpc1JlZG8pCiAJICogY3JlYXRlIGFuIGFycmF5IHdoaWNoIGNvbnRhaW5zIGFsbCBy ZWxhdGlvbnMgdG8gYmUgZHJvcHBlZCwgYW5kIGNsb3NlCiAJICogZWFjaCByZWxhdGlvbidz IGZvcmtzIGF0IHRoZSBzbWdyIGxldmVsIHdoaWxlIGF0IGl0CiAJICovCi0JcmxvY2F0b3Jz ID0gcGFsbG9jKHNpemVvZihSZWxGaWxlTG9jYXRvckJhY2tlbmQpICogbnJlbHMpOworCXJs b2NhdG9ycyA9IHBhbGxvY19hcnJheShSZWxGaWxlTG9jYXRvckJhY2tlbmQsIG5yZWxzKTsK IAlmb3IgKGkgPSAwOyBpIDwgbnJlbHM7IGkrKykKIAl7CiAJCVJlbEZpbGVMb2NhdG9yQmFj a2VuZCBybG9jYXRvciA9IHJlbHNbaV0tPnNtZ3JfcmxvY2F0b3I7CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9zdG9yYWdlL3N5bmMvc3luYy5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9z eW5jL3N5bmMuYwppbmRleCBmYzE2ZGI5MDEzMy4uOWQ0YzVlYWU1ZjYgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3N0b3JhZ2Uvc3luYy9zeW5jLmMKKysrIGIvc3JjL2JhY2tlbmQvc3Rv cmFnZS9zeW5jL3N5bmMuYwpAQCAtNTMxLDcgKzUzMSw3IEBAIFJlbWVtYmVyU3luY1JlcXVl c3QoY29uc3QgRmlsZVRhZyAqZnRhZywgU3luY1JlcXVlc3RUeXBlIHR5cGUpCiAJCU1lbW9y eUNvbnRleHQgb2xkY3h0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKHBlbmRpbmdPcHNDeHQp OwogCQlQZW5kaW5nVW5saW5rRW50cnkgKmVudHJ5OwogCi0JCWVudHJ5ID0gcGFsbG9jKHNp emVvZihQZW5kaW5nVW5saW5rRW50cnkpKTsKKwkJZW50cnkgPSBwYWxsb2Nfb2JqZWN0KFBl bmRpbmdVbmxpbmtFbnRyeSk7CiAJCWVudHJ5LT50YWcgPSAqZnRhZzsKIAkJZW50cnktPmN5 Y2xlX2N0ciA9IGNoZWNrcG9pbnRfY3ljbGVfY3RyOwogCQllbnRyeS0+Y2FuY2VsZWQgPSBm YWxzZTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Rjb3AvcHF1ZXJ5LmMgYi9zcmMvYmFj a2VuZC90Y29wL3BxdWVyeS5jCmluZGV4IGZkZTc4YzU1MTYwLi42ZGQ2NDcyNmYwNiAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvdGNvcC9wcXVlcnkuYworKysgYi9zcmMvYmFja2VuZC90 Y29wL3BxdWVyeS5jCkBAIC03NCw3ICs3NCw3IEBAIENyZWF0ZVF1ZXJ5RGVzYyhQbGFubmVk U3RtdCAqcGxhbm5lZHN0bXQsCiAJCQkJUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYsCiAJ CQkJaW50IGluc3RydW1lbnRfb3B0aW9ucykKIHsKLQlRdWVyeURlc2MgICpxZCA9IChRdWVy eURlc2MgKikgcGFsbG9jKHNpemVvZihRdWVyeURlc2MpKTsKKwlRdWVyeURlc2MgICpxZCA9 IHBhbGxvY19vYmplY3QoUXVlcnlEZXNjKTsKIAogCXFkLT5vcGVyYXRpb24gPSBwbGFubmVk c3RtdC0+Y29tbWFuZFR5cGU7CS8qIG9wZXJhdGlvbiAqLwogCXFkLT5wbGFubmVkc3RtdCA9 IHBsYW5uZWRzdG10OwkvKiBwbGFuICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC90c2Vh cmNoL2RpY3QuYyBiL3NyYy9iYWNrZW5kL3RzZWFyY2gvZGljdC5jCmluZGV4IGViOTY4ODU4 NjgzLi5kMDcyNTEwOGI4MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdHNlYXJjaC9kaWN0 LmMKKysrIGIvc3JjL2JhY2tlbmQvdHNlYXJjaC9kaWN0LmMKQEAgLTYxLDcgKzYxLDcgQEAg dHNfbGV4aXplKFBHX0ZVTkNUSU9OX0FSR1MpCiAJcHRyID0gcmVzOwogCXdoaWxlIChwdHIt PmxleGVtZSkKIAkJcHRyKys7Ci0JZGEgPSAoRGF0dW0gKikgcGFsbG9jKHNpemVvZihEYXR1 bSkgKiAocHRyIC0gcmVzKSk7CisJZGEgPSAoRGF0dW0gKikgcGFsbG9jX2FycmF5KERhdHVt LCBwdHIgLSByZXMpOyAKIAlwdHIgPSByZXM7CiAJd2hpbGUgKHB0ci0+bGV4ZW1lKQogCXsK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3RzZWFyY2gvZGljdF9pc3BlbGwuYyBiL3NyYy9i YWNrZW5kL3RzZWFyY2gvZGljdF9pc3BlbGwuYwppbmRleCBkZWJmYmY5NTZjYy4uMTRlNWRh NDg2ZTAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3RzZWFyY2gvZGljdF9pc3BlbGwuYwor KysgYi9zcmMvYmFja2VuZC90c2VhcmNoL2RpY3RfaXNwZWxsLmMKQEAgLTM3LDcgKzM3LDcg QEAgZGlzcGVsbF9pbml0KFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQkJc3RvcGxvYWRlZCA9IGZh bHNlOwogCUxpc3RDZWxsICAgKmw7CiAKLQlkID0gKERpY3RJU3BlbGwgKikgcGFsbG9jMChz aXplb2YoRGljdElTcGVsbCkpOworCWQgPSBwYWxsb2MwX29iamVjdChEaWN0SVNwZWxsKTsK IAogCU5JU3RhcnRCdWlsZCgmKGQtPm9iaikpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC90c2VhcmNoL2RpY3Rfc2ltcGxlLmMgYi9zcmMvYmFja2VuZC90c2VhcmNoL2RpY3Rfc2lt cGxlLmMKaW5kZXggMmM5NzJmYzA1MzguLmY2NjM5YWM3Yzk3IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC90c2VhcmNoL2RpY3Rfc2ltcGxlLmMKKysrIGIvc3JjL2JhY2tlbmQvdHNlYXJj aC9kaWN0X3NpbXBsZS5jCkBAIC0zMSw3ICszMSw3IEBAIERhdHVtCiBkc2ltcGxlX2luaXQo UEdfRlVOQ1RJT05fQVJHUykKIHsKIAlMaXN0CSAgICpkaWN0b3B0aW9ucyA9IChMaXN0ICop IFBHX0dFVEFSR19QT0lOVEVSKDApOwotCURpY3RTaW1wbGUgKmQgPSAoRGljdFNpbXBsZSAq KSBwYWxsb2MwKHNpemVvZihEaWN0U2ltcGxlKSk7CisJRGljdFNpbXBsZSAqZCA9IHBhbGxv YzBfb2JqZWN0KERpY3RTaW1wbGUpOwogCWJvb2wJCXN0b3Bsb2FkZWQgPSBmYWxzZSwKIAkJ CQlhY2NlcHRsb2FkZWQgPSBmYWxzZTsKIAlMaXN0Q2VsbCAgICpsOwpAQCAtODcsMTMgKzg3 LDEzIEBAIGRzaW1wbGVfbGV4aXplKFBHX0ZVTkNUSU9OX0FSR1MpCiAJewogCQkvKiByZWpl Y3QgYXMgc3RvcHdvcmQgKi8KIAkJcGZyZWUodHh0KTsKLQkJcmVzID0gcGFsbG9jMChzaXpl b2YoVFNMZXhlbWUpICogMik7CisJCXJlcyA9IHBhbGxvYzBfYXJyYXkoVFNMZXhlbWUsIDIp OwogCQlQR19SRVRVUk5fUE9JTlRFUihyZXMpOwogCX0KIAllbHNlIGlmIChkLT5hY2NlcHQp CiAJewogCQkvKiBhY2NlcHQgKi8KLQkJcmVzID0gcGFsbG9jMChzaXplb2YoVFNMZXhlbWUp ICogMik7CisJCXJlcyA9IHBhbGxvYzBfYXJyYXkoVFNMZXhlbWUsIDIpOwogCQlyZXNbMF0u bGV4ZW1lID0gdHh0OwogCQlQR19SRVRVUk5fUE9JTlRFUihyZXMpOwogCX0KZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3RzZWFyY2gvZGljdF9zeW5vbnltLmMgYi9zcmMvYmFja2VuZC90 c2VhcmNoL2RpY3Rfc3lub255bS5jCmluZGV4IGMyNzczZWIwMWFkLi5lMDc2NjYwYjVlYyAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdHNlYXJjaC9kaWN0X3N5bm9ueW0uYworKysgYi9z cmMvYmFja2VuZC90c2VhcmNoL2RpY3Rfc3lub255bS5jCkBAIC0xMzQsNyArMTM0LDcgQEAg ZHN5bm9ueW1faW5pdChQR19GVU5DVElPTl9BUkdTKQogCQkJCSBlcnJtc2coImNvdWxkIG5v dCBvcGVuIHN5bm9ueW0gZmlsZSBcIiVzXCI6ICVtIiwKIAkJCQkJCWZpbGVuYW1lKSkpOwog Ci0JZCA9IChEaWN0U3luICopIHBhbGxvYzAoc2l6ZW9mKERpY3RTeW4pKTsKKwlkID0gcGFs bG9jMF9vYmplY3QoRGljdFN5bik7CiAKIAl3aGlsZSAoKGxpbmUgPSB0c2VhcmNoX3JlYWRs aW5lKCZ0cnN0KSkgIT0gTlVMTCkKIAl7CkBAIC0xNjksMTIgKzE2OSwxMiBAQCBkc3lub255 bV9pbml0KFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQlpZiAoZC0+bGVuID09IDApCiAJCQl7CiAJ CQkJZC0+bGVuID0gNjQ7Ci0JCQkJZC0+c3luID0gKFN5biAqKSBwYWxsb2Moc2l6ZW9mKFN5 bikgKiBkLT5sZW4pOworCQkJCWQtPnN5biA9IHBhbGxvY19hcnJheShTeW4sIGQtPmxlbik7 CiAJCQl9CiAJCQllbHNlCiAJCQl7CiAJCQkJZC0+bGVuICo9IDI7Ci0JCQkJZC0+c3luID0g KFN5biAqKSByZXBhbGxvYyhkLT5zeW4sIHNpemVvZihTeW4pICogZC0+bGVuKTsKKwkJCQlk LT5zeW4gPSByZXBhbGxvY19hcnJheShkLT5zeW4sIFN5biwgZC0+bGVuKTsKIAkJCX0KIAkJ fQogCkBAIC0yMzYsNyArMjM2LDcgQEAgZHN5bm9ueW1fbGV4aXplKFBHX0ZVTkNUSU9OX0FS R1MpCiAJaWYgKCFmb3VuZCkKIAkJUEdfUkVUVVJOX1BPSU5URVIoTlVMTCk7CiAKLQlyZXMg PSBwYWxsb2MwKHNpemVvZihUU0xleGVtZSkgKiAyKTsKKwlyZXMgPSBwYWxsb2MwX2FycmF5 KFRTTGV4ZW1lLCAyKTsKIAlyZXNbMF0ubGV4ZW1lID0gcG5zdHJkdXAoZm91bmQtPm91dCwg Zm91bmQtPm91dGxlbik7CiAJcmVzWzBdLmZsYWdzID0gZm91bmQtPmZsYWdzOwogCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC90c2VhcmNoL2RpY3RfdGhlc2F1cnVzLmMgYi9zcmMvYmFj a2VuZC90c2VhcmNoL2RpY3RfdGhlc2F1cnVzLmMKaW5kZXggMWU2YmJkZTFjYTcuLjZhM2Qz MzY5ODU4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC90c2VhcmNoL2RpY3RfdGhlc2F1cnVz LmMKKysrIGIvc3JjL2JhY2tlbmQvdHNlYXJjaC9kaWN0X3RoZXNhdXJ1cy5jCkBAIC03OCwx MiArNzgsMTIgQEAgbmV3TGV4ZW1lKERpY3RUaGVzYXVydXMgKmQsIGNoYXIgKmIsIGNoYXIg KmUsIHVpbnQzMiBpZHN1YnN0LCB1aW50MTYgcG9zaW5zdWJzdCkKIAkJaWYgKGQtPm50d3Jk cyA9PSAwKQogCQl7CiAJCQlkLT5udHdyZHMgPSAxNjsKLQkJCWQtPndyZHMgPSAoVGhlTGV4 ZW1lICopIHBhbGxvYyhzaXplb2YoVGhlTGV4ZW1lKSAqIGQtPm50d3Jkcyk7CisJCQlkLT53 cmRzID0gcGFsbG9jX2FycmF5KFRoZUxleGVtZSwgZC0+bnR3cmRzKTsKIAkJfQogCQllbHNl CiAJCXsKIAkJCWQtPm50d3JkcyAqPSAyOwotCQkJZC0+d3JkcyA9IChUaGVMZXhlbWUgKikg cmVwYWxsb2MoZC0+d3Jkcywgc2l6ZW9mKFRoZUxleGVtZSkgKiBkLT5udHdyZHMpOworCQkJ ZC0+d3JkcyA9IHJlcGFsbG9jX2FycmF5KGQtPndyZHMsIFRoZUxleGVtZSwgZC0+bnR3cmRz KTsKIAkJfQogCX0KIApAQCAtOTUsNyArOTUsNyBAQCBuZXdMZXhlbWUoRGljdFRoZXNhdXJ1 cyAqZCwgY2hhciAqYiwgY2hhciAqZSwgdWludDMyIGlkc3Vic3QsIHVpbnQxNiBwb3NpbnN1 YnN0KQogCW1lbWNweShwdHItPmxleGVtZSwgYiwgZSAtIGIpOwogCXB0ci0+bGV4ZW1lW2Ug LSBiXSA9ICdcMCc7CiAKLQlwdHItPmVudHJpZXMgPSAoTGV4ZW1lSW5mbyAqKSBwYWxsb2Mo c2l6ZW9mKExleGVtZUluZm8pKTsKKwlwdHItPmVudHJpZXMgPSBwYWxsb2Nfb2JqZWN0KExl eGVtZUluZm8pOwogCiAJcHRyLT5lbnRyaWVzLT5uZXh0ZW50cnkgPSBOVUxMOwogCXB0ci0+ ZW50cmllcy0+aWRzdWJzdCA9IGlkc3Vic3Q7CkBAIC0xMTgsMTIgKzExOCwxMiBAQCBhZGRX cmQoRGljdFRoZXNhdXJ1cyAqZCwgY2hhciAqYiwgY2hhciAqZSwgdWludDMyIGlkc3Vic3Qs IHVpbnQxNiBud3JkLCB1aW50MTYgcAogCQkJaWYgKGQtPm5zdWJzdCA9PSAwKQogCQkJewog CQkJCWQtPm5zdWJzdCA9IDE2OwotCQkJCWQtPnN1YnN0ID0gKFRoZVN1YnN0aXR1dGUgKikg cGFsbG9jKHNpemVvZihUaGVTdWJzdGl0dXRlKSAqIGQtPm5zdWJzdCk7CisJCQkJZC0+c3Vi c3QgPSBwYWxsb2NfYXJyYXkoVGhlU3Vic3RpdHV0ZSwgZC0+bnN1YnN0KTsKIAkJCX0KIAkJ CWVsc2UKIAkJCXsKIAkJCQlkLT5uc3Vic3QgKj0gMjsKLQkJCQlkLT5zdWJzdCA9IChUaGVT dWJzdGl0dXRlICopIHJlcGFsbG9jKGQtPnN1YnN0LCBzaXplb2YoVGhlU3Vic3RpdHV0ZSkg KiBkLT5uc3Vic3QpOworCQkJCWQtPnN1YnN0ID0gcmVwYWxsb2NfYXJyYXkoZC0+c3Vic3Qs IFRoZVN1YnN0aXR1dGUsIGQtPm5zdWJzdCk7CiAJCQl9CiAJCX0KIAl9CkBAIC0xMzcsMTIg KzEzNywxMiBAQCBhZGRXcmQoRGljdFRoZXNhdXJ1cyAqZCwgY2hhciAqYiwgY2hhciAqZSwg dWludDMyIGlkc3Vic3QsIHVpbnQxNiBud3JkLCB1aW50MTYgcAogCQlpZiAobnRyZXMgPT0g MCkKIAkJewogCQkJbnRyZXMgPSAyOwotCQkJcHRyLT5yZXMgPSAoVFNMZXhlbWUgKikgcGFs bG9jKHNpemVvZihUU0xleGVtZSkgKiBudHJlcyk7CisJCQlwdHItPnJlcyA9IHBhbGxvY19h cnJheShUU0xleGVtZSwgbnRyZXMpOwogCQl9CiAJCWVsc2UKIAkJewogCQkJbnRyZXMgKj0g MjsKLQkJCXB0ci0+cmVzID0gKFRTTGV4ZW1lICopIHJlcGFsbG9jKHB0ci0+cmVzLCBzaXpl b2YoVFNMZXhlbWUpICogbnRyZXMpOworCQkJcHRyLT5yZXMgPSByZXBhbGxvY19hcnJheShw dHItPnJlcywgVFNMZXhlbWUsIG50cmVzKTsKIAkJfQogCX0KIApAQCAtMzA5LDcgKzMwOSw3 IEBAIGFkZENvbXBpbGVkTGV4ZW1lKFRoZUxleGVtZSAqbmV3d3JkcywgaW50ICpubncsIGlu dCAqdG5tLCBUU0xleGVtZSAqbGV4ZW1lLCBMZXhlCiAJCW5ld3dyZHMgPSAoVGhlTGV4ZW1l ICopIHJlcGFsbG9jKG5ld3dyZHMsIHNpemVvZihUaGVMZXhlbWUpICogKnRubSk7CiAJfQog Ci0JbmV3d3Jkc1sqbm53XS5lbnRyaWVzID0gKExleGVtZUluZm8gKikgcGFsbG9jKHNpemVv ZihMZXhlbWVJbmZvKSk7CisJbmV3d3Jkc1sqbm53XS5lbnRyaWVzID0gcGFsbG9jX29iamVj dChMZXhlbWVJbmZvKTsKIAogCWlmIChsZXhlbWUgJiYgbGV4ZW1lLT5sZXhlbWUpCiAJewpA QCAtMzk0LDcgKzM5NCw3IEBAIGNvbXBpbGVUaGVMZXhlbWUoRGljdFRoZXNhdXJ1cyAqZCkK IAlpbnQJCQlpLAogCQkJCW5udyA9IDAsCiAJCQkJdG5tID0gMTY7Ci0JVGhlTGV4ZW1lICAq bmV3d3JkcyA9IChUaGVMZXhlbWUgKikgcGFsbG9jKHNpemVvZihUaGVMZXhlbWUpICogdG5t KSwKKwlUaGVMZXhlbWUgICpuZXd3cmRzID0gcGFsbG9jX2FycmF5KFRoZUxleGVtZSwgdG5t KSwKIAkJCSAgICpwdHJ3cmRzOwogCiAJZm9yIChpID0gMDsgaSA8IGQtPm53cmRzOyBpKysp CkBAIC01MTEsNyArNTExLDcgQEAgY29tcGlsZVRoZVN1YnN0aXR1dGUoRGljdFRoZXNhdXJ1 cyAqZCkKIAkJCQkgICAqaW5wdHI7CiAJCWludAkJCW4gPSAyOwogCi0JCW91dHB0ciA9IGQt PnN1YnN0W2ldLnJlcyA9IChUU0xleGVtZSAqKSBwYWxsb2Moc2l6ZW9mKFRTTGV4ZW1lKSAq IG4pOworCQlvdXRwdHIgPSBkLT5zdWJzdFtpXS5yZXMgPSBwYWxsb2NfYXJyYXkoVFNMZXhl bWUsIG4pOwogCQlvdXRwdHItPmxleGVtZSA9IE5VTEw7CiAJCWlucHRyID0gcmVtOwogCkBA IC02MDMsNyArNjAzLDcgQEAgdGhlc2F1cnVzX2luaXQoUEdfRlVOQ1RJT05fQVJHUykKIAlM aXN0CSAgICpuYW1lbGlzdDsKIAlMaXN0Q2VsbCAgICpsOwogCi0JZCA9IChEaWN0VGhlc2F1 cnVzICopIHBhbGxvYzAoc2l6ZW9mKERpY3RUaGVzYXVydXMpKTsKKwlkID0gcGFsbG9jMF9v YmplY3QoRGljdFRoZXNhdXJ1cyk7CiAKIAlmb3JlYWNoKGwsIGRpY3RvcHRpb25zKQogCXsK QEAgLTc1Niw3ICs3NTYsNyBAQCBjb3B5VFNMZXhlbWUoVGhlU3Vic3RpdHV0ZSAqdHMpCiAJ VFNMZXhlbWUgICAqcmVzOwogCXVpbnQxNgkJaTsKIAotCXJlcyA9IChUU0xleGVtZSAqKSBw YWxsb2Moc2l6ZW9mKFRTTGV4ZW1lKSAqICh0cy0+cmVzbGVuICsgMSkpOworCXJlcyA9IHBh bGxvY19hcnJheShUU0xleGVtZSwgdHMtPnJlc2xlbiArIDEpOwogCWZvciAoaSA9IDA7IGkg PCB0cy0+cmVzbGVuOyBpKyspCiAJewogCQlyZXNbaV0gPSB0cy0+cmVzW2ldOwpAQCAtODM0 LDcgKzgzNCw3IEBAIHRoZXNhdXJ1c19sZXhpemUoUEdfRlVOQ1RJT05fQVJHUykKIAkJCQlw dHIrKzsKIAkJCX0KIAotCQkJaW5mb3MgPSAoTGV4ZW1lSW5mbyAqKikgcGFsbG9jKHNpemVv ZihMZXhlbWVJbmZvICopICogbmxleCk7CisJCQlpbmZvcyA9IHBhbGxvY19hcnJheShMZXhl bWVJbmZvICosIG5sZXgpOwogCQkJZm9yIChpID0gMDsgaSA8IG5sZXg7IGkrKykKIAkJCQlp ZiAoKGluZm9zW2ldID0gZmluZFRoZUxleGVtZShkLCBiYXNldmFyW2ldLmxleGVtZSkpID09 IE5VTEwpCiAJCQkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdHNlYXJjaC9z cGVsbC5jIGIvc3JjL2JhY2tlbmQvdHNlYXJjaC9zcGVsbC5jCmluZGV4IDE0NjgwMTg4NWQ3 Li43OWMzMzNlNjk0NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdHNlYXJjaC9zcGVsbC5j CisrKyBiL3NyYy9iYWNrZW5kL3RzZWFyY2gvc3BlbGwuYwpAQCAtNjkxLDcgKzY5MSw3IEBA IE5JQWRkQWZmaXgoSXNwZWxsRGljdCAqQ29uZiwgY29uc3QgY2hhciAqZmxhZywgY2hhciBm bGFnZmxhZ3MsIGNvbnN0IGNoYXIgKm1hc2ssCiAJCWVsc2UKIAkJewogCQkJQ29uZi0+bWFm Zml4ZXMgPSAxNjsKLQkJCUNvbmYtPkFmZml4ID0gKEFGRklYICopIHBhbGxvYyhDb25mLT5t YWZmaXhlcyAqIHNpemVvZihBRkZJWCkpOworCQkJQ29uZi0+QWZmaXggPSBwYWxsb2NfYXJy YXkoQUZGSVgsIENvbmYtPm1hZmZpeGVzKTsKIAkJfQogCX0KIApAQCAtNzM3LDcgKzczNyw3 IEBAIE5JQWRkQWZmaXgoSXNwZWxsRGljdCAqQ29uZiwgY29uc3QgY2hhciAqZmxhZywgY2hh ciBmbGFnZmxhZ3MsIGNvbnN0IGNoYXIgKm1hc2ssCiAJCSAqIGFsbG9jYXRlZCBpbiB0aGUg ZGljdGlvbmFyeSdzIG1lbW9yeSBjb250ZXh0LCBhbmQgd2lsbCBiZSBmcmVlZAogCQkgKiBh dXRvbWF0aWNhbGx5IHdoZW4gaXQgaXMgZGVzdHJveWVkLgogCQkgKi8KLQkJQWZmaXgtPnJl Zy5wcmVnZXggPSBwYWxsb2Moc2l6ZW9mKHJlZ2V4X3QpKTsKKwkJQWZmaXgtPnJlZy5wcmVn ZXggPSBwYWxsb2Nfb2JqZWN0KHJlZ2V4X3QpOwogCQllcnIgPSBwZ19yZWdjb21wKEFmZml4 LT5yZWcucHJlZ2V4LCB3bWFzaywgd21hc2tsZW4sCiAJCQkJCQkgUkVHX0FEVkFOQ0VEIHwg UkVHX05PU1VCLAogCQkJCQkJIERFRkFVTFRfQ09MTEFUSU9OX09JRCk7CkBAIC0xMzI3LDcg KzEzMjcsNyBAQCBOSUltcG9ydE9PQWZmaXhlcyhJc3BlbGxEaWN0ICpDb25mLCBjb25zdCBj aGFyICpmaWxlbmFtZSkKIAkJCQkvKiBBbHNvIHJlc2VydmUgcGxhY2UgZm9yIGVtcHR5IGZs YWcgc2V0ICovCiAJCQkJbmFmZml4Kys7CiAKLQkJCQlDb25mLT5BZmZpeERhdGEgPSAoY29u c3QgY2hhciAqKikgcGFsbG9jMChuYWZmaXggKiBzaXplb2YoY2hhciAqKSk7CisJCQkJQ29u Zi0+QWZmaXhEYXRhID0gKGNvbnN0IGNoYXIgKiopIHBhbGxvYzBfYXJyYXkoY2hhciAqLCBu YWZmaXgpOwogCQkJCUNvbmYtPmxlbkFmZml4RGF0YSA9IENvbmYtPm5BZmZpeERhdGEgPSBu YWZmaXg7CiAKIAkJCQkvKiBBZGQgZW1wdHkgZmxhZyBzZXQgaW50byBBZmZpeERhdGEgKi8K QEAgLTE3OTQsNyArMTc5NCw3IEBAIE5JU29ydERpY3Rpb25hcnkoSXNwZWxsRGljdCAqQ29u ZikKIAkJICogZGljdGlvbmFyeS4gUmVwbGFjZSB0ZXh0dWFsIGZsYWctZmllbGQgb2YgQ29u Zi0+U3BlbGwgZW50cmllcyB3aXRoCiAJCSAqIGluZGV4ZXMgaW50byBDb25mLT5BZmZpeERh dGEgYXJyYXkuCiAJCSAqLwotCQlDb25mLT5BZmZpeERhdGEgPSAoY29uc3QgY2hhciAqKikg cGFsbG9jMChuYWZmaXggKiBzaXplb2YoY29uc3QgY2hhciAqKSk7CisJCUNvbmYtPkFmZml4 RGF0YSA9IChjb25zdCBjaGFyICoqKSBwYWxsb2MwX2FycmF5KGNvbnN0IGNoYXIgKiwgbmFm Zml4KTsKIAogCQljdXJhZmZpeCA9IC0xOwogCQlmb3IgKGkgPSAwOyBpIDwgQ29uZi0+bnNw ZWxsOyBpKyspCkBAIC0xOTkxLDcgKzE5OTEsNyBAQCBOSVNvcnRBZmZpeGVzKElzcGVsbERp Y3QgKkNvbmYpCiAJLyogU3RvcmUgY29tcG91bmQgYWZmaXhlcyBpbiB0aGUgQ29uZi0+Q29t cG91bmRBZmZpeCBhcnJheSAqLwogCWlmIChDb25mLT5uYWZmaXhlcyA+IDEpCiAJCXFzb3J0 KENvbmYtPkFmZml4LCBDb25mLT5uYWZmaXhlcywgc2l6ZW9mKEFGRklYKSwgY21wYWZmaXgp OwotCUNvbmYtPkNvbXBvdW5kQWZmaXggPSBwdHIgPSAoQ01QREFmZml4ICopIHBhbGxvYyhz aXplb2YoQ01QREFmZml4KSAqIENvbmYtPm5hZmZpeGVzKTsKKwlDb25mLT5Db21wb3VuZEFm Zml4ID0gcHRyID0gcGFsbG9jX2FycmF5KENNUERBZmZpeCwgQ29uZi0+bmFmZml4ZXMpOwog CXB0ci0+YWZmaXggPSBOVUxMOwogCiAJZm9yIChpID0gMDsgaSA8IENvbmYtPm5hZmZpeGVz OyBpKyspCkBAIC0yMTQ3LDcgKzIxNDcsNyBAQCBDaGVja0FmZml4KGNvbnN0IGNoYXIgKndv cmQsIHNpemVfdCBsZW4sIEFGRklYICpBZmZpeCwgaW50IGZsYWdmbGFncywgY2hhciAqbmV3 dwogCiAJCS8qIENvbnZlcnQgZGF0YSBzdHJpbmcgdG8gd2lkZSBjaGFyYWN0ZXJzICovCiAJ CW5ld3dvcmRfbGVuID0gc3RybGVuKG5ld3dvcmQpOwotCQlkYXRhID0gKHBnX3djaGFyICop IHBhbGxvYygobmV3d29yZF9sZW4gKyAxKSAqIHNpemVvZihwZ193Y2hhcikpOworCQlkYXRh ID0gcGFsbG9jX2FycmF5KHBnX3djaGFyLCBuZXd3b3JkX2xlbiArIDEpOwogCQlkYXRhX2xl biA9IHBnX21iMndjaGFyX3dpdGhfbGVuKG5ld3dvcmQsIGRhdGEsIG5ld3dvcmRfbGVuKTsK IAogCQlpZiAocGdfcmVnZXhlYyhBZmZpeC0+cmVnLnByZWdleCwgZGF0YSwgZGF0YV9sZW4s CkBAIC0yMTk3LDcgKzIxOTcsNyBAQCBOb3JtYWxpemVTdWJXb3JkKElzcGVsbERpY3QgKkNv bmYsIGNvbnN0IGNoYXIgKndvcmQsIGludCBmbGFnKQogCiAJaWYgKHdyZGxlbiA+IE1BWE5P Uk1MRU4pCiAJCXJldHVybiBOVUxMOwotCWN1ciA9IGZvcm1zID0gKGNoYXIgKiopIHBhbGxv YyhNQVhfTk9STSAqIHNpemVvZihjaGFyICopKTsKKwljdXIgPSBmb3JtcyA9IHBhbGxvY19h cnJheShjaGFyICosIE1BWF9OT1JNKTsKIAkqY3VyID0gTlVMTDsKIAogCkBAIC0yMzQwLDcg KzIzNDAsNyBAQCBDaGVja0NvbXBvdW5kQWZmaXhlcyhDTVBEQWZmaXggKipwdHIsIGNvbnN0 IGNoYXIgKndvcmQsIGludCBsZW4sIGJvb2wgQ2hlY2tJblBsYQogc3RhdGljIFNwbGl0VmFy ICoKIENvcHlWYXIoU3BsaXRWYXIgKnMsIGludCBtYWtlZHVwKQogewotCVNwbGl0VmFyICAg KnYgPSAoU3BsaXRWYXIgKikgcGFsbG9jKHNpemVvZihTcGxpdFZhcikpOworCVNwbGl0VmFy ICAgKnYgPSBwYWxsb2Nfb2JqZWN0KFNwbGl0VmFyKTsKIAogCXYtPm5leHQgPSBOVUxMOwog CWlmIChzKQpAQCAtMjM0OCw3ICsyMzQ4LDcgQEAgQ29weVZhcihTcGxpdFZhciAqcywgaW50 IG1ha2VkdXApCiAJCWludAkJCWk7CiAKIAkJdi0+bGVuc3RlbSA9IHMtPmxlbnN0ZW07Ci0J CXYtPnN0ZW0gPSAoY2hhciAqKikgcGFsbG9jKHNpemVvZihjaGFyICopICogdi0+bGVuc3Rl bSk7CisJCXYtPnN0ZW0gPSBwYWxsb2NfYXJyYXkoY2hhciAqLCB2LT5sZW5zdGVtKTsKIAkJ di0+bnN0ZW0gPSBzLT5uc3RlbTsKIAkJZm9yIChpID0gMDsgaSA8IHMtPm5zdGVtOyBpKysp CiAJCQl2LT5zdGVtW2ldID0gKG1ha2VkdXApID8gcHN0cmR1cChzLT5zdGVtW2ldKSA6IHMt PnN0ZW1baV07CkBAIC0yMzU2LDcgKzIzNTYsNyBAQCBDb3B5VmFyKFNwbGl0VmFyICpzLCBp bnQgbWFrZWR1cCkKIAllbHNlCiAJewogCQl2LT5sZW5zdGVtID0gMTY7Ci0JCXYtPnN0ZW0g PSAoY2hhciAqKikgcGFsbG9jKHNpemVvZihjaGFyICopICogdi0+bGVuc3RlbSk7CisJCXYt PnN0ZW0gPSBwYWxsb2NfYXJyYXkoY2hhciAqLCB2LT5sZW5zdGVtKTsKIAkJdi0+bnN0ZW0g PSAwOwogCX0KIAlyZXR1cm4gdjsKQEAgLTI1MjksNyArMjUyOSw3IEBAIHN0YXRpYyB2b2lk CiBhZGROb3JtKFRTTGV4ZW1lICoqbHJlcywgVFNMZXhlbWUgKipsY3VyLCBjaGFyICp3b3Jk LCBpbnQgZmxhZ3MsIHVpbnQxNiBOVmFyaWFudCkKIHsKIAlpZiAoKmxyZXMgPT0gTlVMTCkK LQkJKmxjdXIgPSAqbHJlcyA9IChUU0xleGVtZSAqKSBwYWxsb2MoTUFYX05PUk0gKiBzaXpl b2YoVFNMZXhlbWUpKTsKKwkJKmxjdXIgPSAqbHJlcyA9IHBhbGxvY19hcnJheShUU0xleGVt ZSwgTUFYX05PUk0pOwogCiAJaWYgKCpsY3VyIC0gKmxyZXMgPCBNQVhfTk9STSAtIDEpCiAJ ewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdHNlYXJjaC90b190c2FueS5jIGIvc3JjL2Jh Y2tlbmQvdHNlYXJjaC90b190c2FueS5jCmluZGV4IDRkZmNjMmNkM2JkLi5iNmVmZTEwODQy NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdHNlYXJjaC90b190c2FueS5jCisrKyBiL3Ny Yy9iYWNrZW5kL3RzZWFyY2gvdG9fdHNhbnkuYwpAQCAtODQsNyArODQsNyBAQCB1bmlxdWVX T1JEKFBhcnNlZFdvcmQgKmEsIGludDMyIGwpCiAJewogCQl0bXBwb3MgPSBMSU1JVFBPUyhh LT5wb3MucG9zKTsKIAkJYS0+YWxlbiA9IDI7Ci0JCWEtPnBvcy5hcG9zID0gKHVpbnQxNiAq KSBwYWxsb2Moc2l6ZW9mKHVpbnQxNikgKiBhLT5hbGVuKTsKKwkJYS0+cG9zLmFwb3MgPSBw YWxsb2NfYXJyYXkodWludDE2LCBhLT5hbGVuKTsKIAkJYS0+cG9zLmFwb3NbMF0gPSAxOwog CQlhLT5wb3MuYXBvc1sxXSA9IHRtcHBvczsKIAkJcmV0dXJuIGw7CkBAIC0xMDMsNyArMTAz LDcgQEAgdW5pcXVlV09SRChQYXJzZWRXb3JkICphLCBpbnQzMiBsKQogCSAqLwogCXRtcHBv cyA9IExJTUlUUE9TKGEtPnBvcy5wb3MpOwogCWEtPmFsZW4gPSAyOwotCWEtPnBvcy5hcG9z ID0gKHVpbnQxNiAqKSBwYWxsb2Moc2l6ZW9mKHVpbnQxNikgKiBhLT5hbGVuKTsKKwlhLT5w b3MuYXBvcyA9IHBhbGxvY19hcnJheSh1aW50MTYsIGEtPmFsZW4pOwogCWEtPnBvcy5hcG9z WzBdID0gMTsKIAlhLT5wb3MuYXBvc1sxXSA9IHRtcHBvczsKIApAQCAtMTIzLDcgKzEyMyw3 IEBAIHVuaXF1ZVdPUkQoUGFyc2VkV29yZCAqYSwgaW50MzIgbCkKIAkJCXJlcy0+d29yZCA9 IHB0ci0+d29yZDsKIAkJCXRtcHBvcyA9IExJTUlUUE9TKHB0ci0+cG9zLnBvcyk7CiAJCQly ZXMtPmFsZW4gPSAyOwotCQkJcmVzLT5wb3MuYXBvcyA9ICh1aW50MTYgKikgcGFsbG9jKHNp emVvZih1aW50MTYpICogcmVzLT5hbGVuKTsKKwkJCXJlcy0+cG9zLmFwb3MgPSBwYWxsb2Nf YXJyYXkodWludDE2LCByZXMtPmFsZW4pOwogCQkJcmVzLT5wb3MuYXBvc1swXSA9IDE7CiAJ CQlyZXMtPnBvcy5hcG9zWzFdID0gdG1wcG9zOwogCQl9CkBAIC0xNDEsNyArMTQxLDcgQEAg dW5pcXVlV09SRChQYXJzZWRXb3JkICphLCBpbnQzMiBsKQogCQkJCWlmIChyZXMtPnBvcy5h cG9zWzBdICsgMSA+PSByZXMtPmFsZW4pCiAJCQkJewogCQkJCQlyZXMtPmFsZW4gKj0gMjsK LQkJCQkJcmVzLT5wb3MuYXBvcyA9ICh1aW50MTYgKikgcmVwYWxsb2MocmVzLT5wb3MuYXBv cywgc2l6ZW9mKHVpbnQxNikgKiByZXMtPmFsZW4pOworCQkJCQlyZXMtPnBvcy5hcG9zID0g cmVwYWxsb2NfYXJyYXkocmVzLT5wb3MuYXBvcywgdWludDE2LCByZXMtPmFsZW4pOwogCQkJ CX0KIAkJCQlpZiAocmVzLT5wb3MuYXBvc1swXSA9PSAwIHx8IHJlcy0+cG9zLmFwb3NbcmVz LT5wb3MuYXBvc1swXV0gIT0gTElNSVRQT1MocHRyLT5wb3MucG9zKSkKIAkJCQl7CkBAIC0y NTUsNyArMjU1LDcgQEAgdG9fdHN2ZWN0b3JfYnlpZChQR19GVU5DVElPTl9BUkdTKQogCQlw cnMubGVud29yZHMgPSBNYXhBbGxvY1NpemUgLyBzaXplb2YoUGFyc2VkV29yZCk7CiAJcHJz LmN1cndvcmRzID0gMDsKIAlwcnMucG9zID0gMDsKLQlwcnMud29yZHMgPSAoUGFyc2VkV29y ZCAqKSBwYWxsb2Moc2l6ZW9mKFBhcnNlZFdvcmQpICogcHJzLmxlbndvcmRzKTsKKwlwcnMu d29yZHMgPSBwYWxsb2NfYXJyYXkoUGFyc2VkV29yZCwgcHJzLmxlbndvcmRzKTsKIAogCXBh cnNldGV4dChjZmdJZCwgJnBycywgVkFSREFUQV9BTlkoaW4pLCBWQVJTSVpFX0FOWV9FWEhE UihpbikpOwogCkBAIC00NTMsNyArNDUzLDcgQEAgYWRkX3RvX3RzdmVjdG9yKHZvaWQgKl9z dGF0ZSwgY2hhciAqZWxlbV92YWx1ZSwgaW50IGVsZW1fbGVuKQogCQkgKiAocGFyc2V0ZXh0 KCkgd2lsbCByZWFsbG9jIGl0IGJpZ2dlciBhcyBuZWVkZWQuKQogCQkgKi8KIAkJcHJzLT5s ZW53b3JkcyA9IDE2OwotCQlwcnMtPndvcmRzID0gKFBhcnNlZFdvcmQgKikgcGFsbG9jKHNp emVvZihQYXJzZWRXb3JkKSAqIHBycy0+bGVud29yZHMpOworCQlwcnMtPndvcmRzID0gcGFs bG9jX2FycmF5KFBhcnNlZFdvcmQsIHBycy0+bGVud29yZHMpOwogCQlwcnMtPmN1cndvcmRz ID0gMDsKIAkJcHJzLT5wb3MgPSAwOwogCX0KQEAgLTUwMyw3ICs1MDMsNyBAQCBwdXNodmFs X21vcnBoKERhdHVtIG9wYXF1ZSwgVFNRdWVyeVBhcnNlclN0YXRlIHN0YXRlLCBjaGFyICpz dHJ2YWwsIGludCBsZW52YWwsCiAJcHJzLmxlbndvcmRzID0gNDsKIAlwcnMuY3Vyd29yZHMg PSAwOwogCXBycy5wb3MgPSAwOwotCXBycy53b3JkcyA9IChQYXJzZWRXb3JkICopIHBhbGxv YyhzaXplb2YoUGFyc2VkV29yZCkgKiBwcnMubGVud29yZHMpOworCXBycy53b3JkcyA9IHBh bGxvY19hcnJheShQYXJzZWRXb3JkLCBwcnMubGVud29yZHMpOwogCiAJcGFyc2V0ZXh0KGRh dGEtPmNmZ19pZCwgJnBycywgc3RydmFsLCBsZW52YWwpOwogCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC90c2VhcmNoL3RzX3BhcnNlLmMgYi9zcmMvYmFja2VuZC90c2VhcmNoL3RzX3Bh cnNlLmMKaW5kZXggY2JhNDIxODkyYmYuLjZlZWJmZjZjNDY3IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC90c2VhcmNoL3RzX3BhcnNlLmMKKysrIGIvc3JjL2JhY2tlbmQvdHNlYXJjaC90 c19wYXJzZS5jCkBAIC05OSw3ICs5OSw3IEBAIExQTFJlbW92ZUhlYWQoTGlzdFBhcnNlZExl eCAqbGlzdCkKIHN0YXRpYyB2b2lkCiBMZXhpemVBZGRMZW1tKExleGl6ZURhdGEgKmxkLCBp bnQgdHlwZSwgY2hhciAqbGVtbSwgaW50IGxlbmxlbW0pCiB7Ci0JUGFyc2VkTGV4ICAqbmV3 cGwgPSAoUGFyc2VkTGV4ICopIHBhbGxvYyhzaXplb2YoUGFyc2VkTGV4KSk7CisJUGFyc2Vk TGV4ICAqbmV3cGwgPSBwYWxsb2Nfb2JqZWN0KFBhcnNlZExleCk7CiAKIAluZXdwbC0+dHlw ZSA9IHR5cGU7CiAJbmV3cGwtPmxlbW0gPSBsZW1tOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvdHNlYXJjaC90c19zZWxmdW5jcy5jIGIvc3JjL2JhY2tlbmQvdHNlYXJjaC90c19zZWxm dW5jcy5jCmluZGV4IGZiMzY3YWQ3NGQyLi42M2E2ZWNkM2UyYSAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvdHNlYXJjaC90c19zZWxmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL3RzZWFy Y2gvdHNfc2VsZnVuY3MuYwpAQCAtMjI2LDcgKzIyNiw3IEBAIG1jZWxlbV90c3F1ZXJ5X3Nl bGVjKFRTUXVlcnkgcXVlcnksIGNvbnN0IERhdHVtICptY2VsZW0sIGludCBubWNlbGVtLAog CS8qCiAJICogVHJhbnNwb3NlIHRoZSBkYXRhIGludG8gYSBzaW5nbGUgYXJyYXkgc28gd2Ug Y2FuIHVzZSBic2VhcmNoKCkuCiAJICovCi0JbG9va3VwID0gKFRleHRGcmVxICopIHBhbGxv YyhzaXplb2YoVGV4dEZyZXEpICogbm1jZWxlbSk7CisJbG9va3VwID0gcGFsbG9jX2FycmF5 KFRleHRGcmVxLCBubWNlbGVtKTsKIAlmb3IgKGkgPSAwOyBpIDwgbm1jZWxlbTsgaSsrKQog CXsKIAkJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3RzZWFyY2gvdHNfdHlwYW5hbHl6 ZS5jIGIvc3JjL2JhY2tlbmQvdHNlYXJjaC90c190eXBhbmFseXplLmMKaW5kZXggOTNhYWIw MGEzY2EuLjliOGIwOTk1YWI3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC90c2VhcmNoL3Rz X3R5cGFuYWx5emUuYworKysgYi9zcmMvYmFja2VuZC90c2VhcmNoL3RzX3R5cGFuYWx5emUu YwpAQCAtMzIwLDcgKzMyMCw3IEBAIGNvbXB1dGVfdHN2ZWN0b3Jfc3RhdHMoVmFjQXR0clN0 YXRzICpzdGF0cywKIAkJY3V0b2ZmX2ZyZXEgPSA5ICogbGV4ZW1lX25vIC8gYnVja2V0X3dp ZHRoOwogCiAJCWkgPSBoYXNoX2dldF9udW1fZW50cmllcyhsZXhlbWVzX3RhYik7CS8qIHN1 cmVseSBlbm91Z2ggc3BhY2UgKi8KLQkJc29ydF90YWJsZSA9IChUcmFja0l0ZW0gKiopIHBh bGxvYyhzaXplb2YoVHJhY2tJdGVtICopICogaSk7CisJCXNvcnRfdGFibGUgPSBwYWxsb2Nf YXJyYXkoVHJhY2tJdGVtICosIGkpOwogCiAJCWhhc2hfc2VxX2luaXQoJnNjYW5fc3RhdHVz LCBsZXhlbWVzX3RhYik7CiAJCXRyYWNrX2xlbiA9IDA7CkBAIC00MTIsOCArNDEyLDggQEAg Y29tcHV0ZV90c3ZlY3Rvcl9zdGF0cyhWYWNBdHRyU3RhdHMgKnN0YXRzLAogCQkJICogY3Jl YXRlIHRoYXQgZm9yIGEgdHN2ZWN0b3IgY29sdW1uLCBzaW5jZSBudWxsIGVsZW1lbnRzIGFy ZW4ndAogCQkJICogcG9zc2libGUuKQogCQkJICovCi0JCQltY2VsZW1fdmFsdWVzID0gKERh dHVtICopIHBhbGxvYyhudW1fbWNlbGVtICogc2l6ZW9mKERhdHVtKSk7Ci0JCQltY2VsZW1f ZnJlcXMgPSAoZmxvYXQ0ICopIHBhbGxvYygobnVtX21jZWxlbSArIDIpICogc2l6ZW9mKGZs b2F0NCkpOworCQkJbWNlbGVtX3ZhbHVlcyA9IHBhbGxvY19hcnJheShEYXR1bSwgbnVtX21j ZWxlbSk7CisJCQltY2VsZW1fZnJlcXMgPSBwYWxsb2NfYXJyYXkoZmxvYXQ0LCBudW1fbWNl bGVtICsgMik7CiAKIAkJCS8qCiAJCQkgKiBTZWUgY29tbWVudHMgYWJvdmUgYWJvdXQgdXNl IG9mIG5vbm51bGxfY250IGFzIHRoZSBkaXZpc29yIGZvcgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvdHNlYXJjaC90c191dGlscy5jIGIvc3JjL2JhY2tlbmQvdHNlYXJjaC90c191dGls cy5jCmluZGV4IDBiNGE1Nzg2NjQ0Li42NDdlNDY0OTY0NCAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvdHNlYXJjaC90c191dGlscy5jCisrKyBiL3NyYy9iYWNrZW5kL3RzZWFyY2gvdHNf dXRpbHMuYwpAQCAtMTA1LDEyICsxMDUsMTIgQEAgcmVhZHN0b3BsaXN0KGNvbnN0IGNoYXIg KmZuYW1lLCBTdG9wTGlzdCAqcywgY2hhciAqKCp3b3Jkb3ApIChjb25zdCBjaGFyICosIHNp emUKIAkJCQlpZiAocmVhbGxlbiA9PSAwKQogCQkJCXsKIAkJCQkJcmVhbGxlbiA9IDY0Owot CQkJCQlzdG9wID0gKGNoYXIgKiopIHBhbGxvYyhzaXplb2YoY2hhciAqKSAqIHJlYWxsZW4p OworCQkJCQlzdG9wID0gcGFsbG9jX2FycmF5KGNoYXIgKiwgcmVhbGxlbik7CiAJCQkJfQog CQkJCWVsc2UKIAkJCQl7CiAJCQkJCXJlYWxsZW4gKj0gMjsKLQkJCQkJc3RvcCA9IChjaGFy ICoqKSByZXBhbGxvYyhzdG9wLCBzaXplb2YoY2hhciAqKSAqIHJlYWxsZW4pOworCQkJCQlz dG9wID0gcmVwYWxsb2NfYXJyYXkoc3RvcCwgY2hhciAqLCByZWFsbGVuKTsKIAkJCQl9CiAJ CQl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3RzZWFyY2gvd3BhcnNlci5jIGIvc3Jj L2JhY2tlbmQvdHNlYXJjaC93cGFyc2VyLmMKaW5kZXggNTUxNzFhYThkYTEuLjllNTNmNTcz MjRmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC90c2VhcmNoL3dwYXJzZXIuYworKysgYi9z cmMvYmFja2VuZC90c2VhcmNoL3dwYXJzZXIuYwpAQCAtNTgsNyArNTgsNyBAQCB0dF9zZXR1 cF9maXJzdGNhbGwoRnVuY0NhbGxDb250ZXh0ICpmdW5jY3R4LCBGdW5jdGlvbkNhbGxJbmZv IGZjaW5mbywKIAogCW9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oZnVuY2N0 eC0+bXVsdGlfY2FsbF9tZW1vcnlfY3R4KTsKIAotCXN0ID0gKFRTVG9rZW5UeXBlU3RvcmFn ZSAqKSBwYWxsb2Moc2l6ZW9mKFRTVG9rZW5UeXBlU3RvcmFnZSkpOworCXN0ID0gcGFsbG9j X29iamVjdChUU1Rva2VuVHlwZVN0b3JhZ2UpOwogCXN0LT5jdXIgPSAwOwogCS8qIGxleHR5 cGUgdGFrZXMgb25lIGR1bW15IGFyZ3VtZW50ICovCiAJc3QtPmxpc3QgPSAoTGV4RGVzY3Ig KikgRGF0dW1HZXRQb2ludGVyKE9pZEZ1bmN0aW9uQ2FsbDEocHJzLT5sZXh0eXBlT2lkLApA QCAtMTczLDEwICsxNzMsMTAgQEAgcHJzX3NldHVwX2ZpcnN0Y2FsbChGdW5jQ2FsbENvbnRl eHQgKmZ1bmNjdHgsIEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvLAogCiAJb2xkY29udGV4dCA9 IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhmdW5jY3R4LT5tdWx0aV9jYWxsX21lbW9yeV9jdHgp OwogCi0Jc3QgPSAoUHJzU3RvcmFnZSAqKSBwYWxsb2Moc2l6ZW9mKFByc1N0b3JhZ2UpKTsK KwlzdCA9IHBhbGxvY19vYmplY3QoUHJzU3RvcmFnZSk7CiAJc3QtPmN1ciA9IDA7CiAJc3Qt PmxlbiA9IDE2OwotCXN0LT5saXN0ID0gKExleGVtZUVudHJ5ICopIHBhbGxvYyhzaXplb2Yo TGV4ZW1lRW50cnkpICogc3QtPmxlbik7CisJc3QtPmxpc3QgPSBwYWxsb2NfYXJyYXkoTGV4 ZW1lRW50cnksIHN0LT5sZW4pOwogCiAJcHJzZGF0YSA9IERhdHVtR2V0UG9pbnRlcihGdW5j dGlvbkNhbGwyKCZwcnMtPnByc3N0YXJ0LAogCQkJCQkJCQkJCQlQb2ludGVyR2V0RGF0dW0o VkFSREFUQV9BTlkodHh0KSksCkBAIC0zMDcsNyArMzA3LDcgQEAgdHNfaGVhZGxpbmVfYnlp ZF9vcHQoUEdfRlVOQ1RJT05fQVJHUykKIAogCW1lbXNldCgmcHJzLCAwLCBzaXplb2YoSGVh ZGxpbmVQYXJzZWRUZXh0KSk7CiAJcHJzLmxlbndvcmRzID0gMzI7Ci0JcHJzLndvcmRzID0g KEhlYWRsaW5lV29yZEVudHJ5ICopIHBhbGxvYyhzaXplb2YoSGVhZGxpbmVXb3JkRW50cnkp ICogcHJzLmxlbndvcmRzKTsKKwlwcnMud29yZHMgPSBwYWxsb2NfYXJyYXkoSGVhZGxpbmVX b3JkRW50cnksIHBycy5sZW53b3Jkcyk7CiAKIAlobHBhcnNldGV4dChjZmctPmNmZ0lkLCAm cHJzLCBxdWVyeSwKIAkJCQlWQVJEQVRBX0FOWShpbiksIFZBUlNJWkVfQU5ZX0VYSERSKGlu KSk7CkBAIC0zNzMsMTEgKzM3MywxMSBAQCB0c19oZWFkbGluZV9qc29uYl9ieWlkX29wdChQ R19GVU5DVElPTl9BUkdTKQogCUpzb25iCSAgICpvdXQ7CiAJSnNvblRyYW5zZm9ybVN0cmlu Z1ZhbHVlc0FjdGlvbiBhY3Rpb24gPSAoSnNvblRyYW5zZm9ybVN0cmluZ1ZhbHVlc0FjdGlv bikgaGVhZGxpbmVfanNvbl92YWx1ZTsKIAlIZWFkbGluZVBhcnNlZFRleHQgcHJzOwotCUhl YWRsaW5lSnNvblN0YXRlICpzdGF0ZSA9IHBhbGxvYzAoc2l6ZW9mKEhlYWRsaW5lSnNvblN0 YXRlKSk7CisJSGVhZGxpbmVKc29uU3RhdGUgKnN0YXRlID0gcGFsbG9jMF9vYmplY3QoSGVh ZGxpbmVKc29uU3RhdGUpOwogCiAJbWVtc2V0KCZwcnMsIDAsIHNpemVvZihIZWFkbGluZVBh cnNlZFRleHQpKTsKIAlwcnMubGVud29yZHMgPSAzMjsKLQlwcnMud29yZHMgPSAoSGVhZGxp bmVXb3JkRW50cnkgKikgcGFsbG9jKHNpemVvZihIZWFkbGluZVdvcmRFbnRyeSkgKiBwcnMu bGVud29yZHMpOworCXBycy53b3JkcyA9IHBhbGxvY19hcnJheShIZWFkbGluZVdvcmRFbnRy eSwgcHJzLmxlbndvcmRzKTsKIAogCXN0YXRlLT5wcnMgPSAmcHJzOwogCXN0YXRlLT5jZmcg PSBsb29rdXBfdHNfY29uZmlnX2NhY2hlKHRzY29uZmlnKTsKQEAgLTQ1MCwxMSArNDUwLDEx IEBAIHRzX2hlYWRsaW5lX2pzb25fYnlpZF9vcHQoUEdfRlVOQ1RJT05fQVJHUykKIAlKc29u VHJhbnNmb3JtU3RyaW5nVmFsdWVzQWN0aW9uIGFjdGlvbiA9IChKc29uVHJhbnNmb3JtU3Ry aW5nVmFsdWVzQWN0aW9uKSBoZWFkbGluZV9qc29uX3ZhbHVlOwogCiAJSGVhZGxpbmVQYXJz ZWRUZXh0IHByczsKLQlIZWFkbGluZUpzb25TdGF0ZSAqc3RhdGUgPSBwYWxsb2MwKHNpemVv ZihIZWFkbGluZUpzb25TdGF0ZSkpOworCUhlYWRsaW5lSnNvblN0YXRlICpzdGF0ZSA9IHBh bGxvYzBfb2JqZWN0KEhlYWRsaW5lSnNvblN0YXRlKTsKIAogCW1lbXNldCgmcHJzLCAwLCBz aXplb2YoSGVhZGxpbmVQYXJzZWRUZXh0KSk7CiAJcHJzLmxlbndvcmRzID0gMzI7Ci0JcHJz LndvcmRzID0gKEhlYWRsaW5lV29yZEVudHJ5ICopIHBhbGxvYyhzaXplb2YoSGVhZGxpbmVX b3JkRW50cnkpICogcHJzLmxlbndvcmRzKTsKKwlwcnMud29yZHMgPSBwYWxsb2NfYXJyYXko SGVhZGxpbmVXb3JkRW50cnksIHBycy5sZW53b3Jkcyk7CiAKIAlzdGF0ZS0+cHJzID0gJnBy czsKIAlzdGF0ZS0+Y2ZnID0gbG9va3VwX3RzX2NvbmZpZ19jYWNoZSh0c2NvbmZpZyk7CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC90c2VhcmNoL3dwYXJzZXJfZGVmLmMgYi9zcmMvYmFj a2VuZC90c2VhcmNoL3dwYXJzZXJfZGVmLmMKaW5kZXggMjUxYTJhZTY1NjMuLjlmYmVhYjQ3 NTQ1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC90c2VhcmNoL3dwYXJzZXJfZGVmLmMKKysr IGIvc3JjL2JhY2tlbmQvdHNlYXJjaC93cGFyc2VyX2RlZi5jCkBAIC0yNjksNyArMjY5LDcg QEAgc3RhdGljIGJvb2wgVFBhcnNlckdldChUUGFyc2VyICpwcnMpOwogc3RhdGljIFRQYXJz ZXJQb3NpdGlvbiAqCiBuZXdUUGFyc2VyUG9zaXRpb24oVFBhcnNlclBvc2l0aW9uICpwcmV2 KQogewotCVRQYXJzZXJQb3NpdGlvbiAqcmVzID0gKFRQYXJzZXJQb3NpdGlvbiAqKSBwYWxs b2Moc2l6ZW9mKFRQYXJzZXJQb3NpdGlvbikpOworCVRQYXJzZXJQb3NpdGlvbiAqcmVzID0g cGFsbG9jX29iamVjdChUUGFyc2VyUG9zaXRpb24pOwogCiAJaWYgKHByZXYpCiAJCW1lbWNw eShyZXMsIHByZXYsIHNpemVvZihUUGFyc2VyUG9zaXRpb24pKTsKQEAgLTI4NiwxMiArMjg2 LDEyIEBAIG5ld1RQYXJzZXJQb3NpdGlvbihUUGFyc2VyUG9zaXRpb24gKnByZXYpCiBzdGF0 aWMgVFBhcnNlciAqCiBUUGFyc2VySW5pdChjaGFyICpzdHIsIGludCBsZW4pCiB7Ci0JVFBh cnNlciAgICAqcHJzID0gKFRQYXJzZXIgKikgcGFsbG9jMChzaXplb2YoVFBhcnNlcikpOwor CVRQYXJzZXIgICAgKnBycyA9IHBhbGxvYzBfb2JqZWN0KFRQYXJzZXIpOwogCiAJcHJzLT5j aGFybWF4bGVuID0gcGdfZGF0YWJhc2VfZW5jb2RpbmdfbWF4X2xlbmd0aCgpOwogCXBycy0+ c3RyID0gc3RyOwogCXBycy0+bGVuc3RyID0gbGVuOwotCXBycy0+cGd3c3RyID0gKHBnX3dj aGFyICopIHBhbGxvYyhzaXplb2YocGdfd2NoYXIpICogKHBycy0+bGVuc3RyICsgMSkpOwor CXBycy0+cGd3c3RyID0gcGFsbG9jX2FycmF5KHBnX3djaGFyLCBwcnMtPmxlbnN0ciArIDEp OwogCXBnX21iMndjaGFyX3dpdGhfbGVuKHBycy0+c3RyLCBwcnMtPnBnd3N0ciwgcHJzLT5s ZW5zdHIpOwogCiAJcHJzLT5zdGF0ZSA9IG5ld1RQYXJzZXJQb3NpdGlvbihOVUxMKTsKQEAg LTMxOCw3ICszMTgsNyBAQCBUUGFyc2VySW5pdChjaGFyICpzdHIsIGludCBsZW4pCiBzdGF0 aWMgVFBhcnNlciAqCiBUUGFyc2VyQ29weUluaXQoY29uc3QgVFBhcnNlciAqb3JpZykKIHsK LQlUUGFyc2VyICAgICpwcnMgPSAoVFBhcnNlciAqKSBwYWxsb2MwKHNpemVvZihUUGFyc2Vy KSk7CisJVFBhcnNlciAgICAqcHJzID0gcGFsbG9jMF9vYmplY3QoVFBhcnNlcik7CiAKIAlw cnMtPmNoYXJtYXhsZW4gPSBvcmlnLT5jaGFybWF4bGVuOwogCXBycy0+c3RyID0gb3JpZy0+ c3RyICsgb3JpZy0+c3RhdGUtPnBvc2J5dGU7CkBAIC0xODMyLDcgKzE4MzIsNyBAQCBUUGFy c2VyR2V0KFRQYXJzZXIgKnBycykKIERhdHVtCiBwcnNkX2xleHR5cGUoUEdfRlVOQ1RJT05f QVJHUykKIHsKLQlMZXhEZXNjciAgICpkZXNjciA9IChMZXhEZXNjciAqKSBwYWxsb2Moc2l6 ZW9mKExleERlc2NyKSAqIChMQVNUTlVNICsgMSkpOworCUxleERlc2NyICAgKmRlc2NyID0g cGFsbG9jX2FycmF5KExleERlc2NyLCBMQVNUTlVNICsgMSk7CiAJaW50CQkJaTsKIAogCWZv ciAoaSA9IDE7IGkgPD0gTEFTVE5VTTsgaSsrKQpAQCAtMTk0OSw3ICsxOTQ5LDcgQEAgY2hl Y2tjb25kaXRpb25fSEwodm9pZCAqb3BhcXVlLCBRdWVyeU9wZXJhbmQgKnZhbCwgRXhlY1Bo cmFzZURhdGEgKmRhdGEpCiAKIAkJCWlmICghZGF0YS0+cG9zKQogCQkJewotCQkJCWRhdGEt PnBvcyA9IHBhbGxvYyhzaXplb2YoV29yZEVudHJ5UG9zKSAqIGNoZWNrdmFsLT5sZW4pOwor CQkJCWRhdGEtPnBvcyA9IHBhbGxvY19hcnJheShXb3JkRW50cnlQb3MsIGNoZWNrdmFsLT5s ZW4pOwogCQkJCWRhdGEtPmFsbG9jYXRlZCA9IHRydWU7CiAJCQkJZGF0YS0+bnBvcyA9IDE7 CiAJCQkJZGF0YS0+cG9zWzBdID0gY2hlY2t2YWwtPndvcmRzW2ldLnBvczsKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9yZWxhdGlvbi5jIGIvc3Jj L2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0X3JlbGF0aW9uLmMKaW5kZXggMWRlNDc3 Y2JlZWIuLmI5MDc1NGY4NTc4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hY3Rp dml0eS9wZ3N0YXRfcmVsYXRpb24uYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0 eS9wZ3N0YXRfcmVsYXRpb24uYwpAQCAtNTE0LDcgKzUxNCw3IEBAIGZpbmRfdGFic3RhdF9l bnRyeShPaWQgcmVsX2lkKQogCX0KIAogCXRhYmVudHJ5ID0gKFBnU3RhdF9UYWJsZVN0YXR1 cyAqKSBlbnRyeV9yZWYtPnBlbmRpbmc7Ci0JdGFibGVzdGF0dXMgPSBwYWxsb2Moc2l6ZW9m KFBnU3RhdF9UYWJsZVN0YXR1cykpOworCXRhYmxlc3RhdHVzID0gcGFsbG9jX29iamVjdChQ Z1N0YXRfVGFibGVTdGF0dXMpOwogCSp0YWJsZXN0YXR1cyA9ICp0YWJlbnRyeTsKIAogCS8q CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS93YWl0X2V2ZW50LmMg Yi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS93YWl0X2V2ZW50LmMKaW5kZXggZDliOGYz NGEzNTUuLmU4MWI0Zjk2YTI0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hY3Rp dml0eS93YWl0X2V2ZW50LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2Fp dF9ldmVudC5jCkBAIC0zMTcsNyArMzE3LDcgQEAgR2V0V2FpdEV2ZW50Q3VzdG9tTmFtZXMo dWludDMyIGNsYXNzSWQsIGludCAqbndhaXRldmVudHMpCiAJZWxzID0gaGFzaF9nZXRfbnVt X2VudHJpZXMoV2FpdEV2ZW50Q3VzdG9tSGFzaEJ5TmFtZSk7CiAKIAkvKiBBbGxvY2F0ZSBl bm91Z2ggc3BhY2UgZm9yIGFsbCBlbnRyaWVzICovCi0Jd2FpdGV2ZW50bmFtZXMgPSBwYWxs b2MoZWxzICogc2l6ZW9mKGNoYXIgKikpOworCXdhaXRldmVudG5hbWVzID0gcGFsbG9jX2Fy cmF5KGNoYXIgKiwgZWxzKTsKIAogCS8qIE5vdyBzY2FuIHRoZSBoYXNoIHRhYmxlIHRvIGNv cHkgdGhlIGRhdGEgKi8KIAloYXNoX3NlcV9pbml0KCZoYXNoX3NlcSwgV2FpdEV2ZW50Q3Vz dG9tSGFzaEJ5TmFtZSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvYWNs LmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvYWNsLmMKaW5kZXggZmJjZDY0YTI2MDkuLjA1 ZDQ4NDEyZjgyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvYWNsLmMKKysr IGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2FjbC5jCkBAIC02MTgsNyArNjE4LDcgQEAgYWNs aXRlbWluKFBHX0ZVTkNUSU9OX0FSR1MpCiAJTm9kZQkgICAqZXNjb250ZXh0ID0gZmNpbmZv LT5jb250ZXh0OwogCUFjbEl0ZW0gICAgKmFpcDsKIAotCWFpcCA9IChBY2xJdGVtICopIHBh bGxvYyhzaXplb2YoQWNsSXRlbSkpOworCWFpcCA9IHBhbGxvY19vYmplY3QoQWNsSXRlbSk7 CiAKIAlzID0gYWNscGFyc2UocywgYWlwLCBlc2NvbnRleHQpOwogCWlmIChzID09IE5VTEwp CkBAIC0xNjYxLDcgKzE2NjEsNyBAQCBtYWtlYWNsaXRlbShQR19GVU5DVElPTl9BUkdTKQog CiAJcHJpdiA9IGNvbnZlcnRfYW55X3ByaXZfc3RyaW5nKHByaXZ0ZXh0LCBhbnlfcHJpdl9t YXApOwogCi0JcmVzdWx0ID0gKEFjbEl0ZW0gKikgcGFsbG9jKHNpemVvZihBY2xJdGVtKSk7 CisJcmVzdWx0ID0gcGFsbG9jX29iamVjdChBY2xJdGVtKTsKIAogCXJlc3VsdC0+YWlfZ3Jh bnRlZSA9IGdyYW50ZWU7CiAJcmVzdWx0LT5haV9ncmFudG9yID0gZ3JhbnRvcjsKQEAgLTE4 MjEsNyArMTgyMSw3IEBAIGFjbGV4cGxvZGUoUEdfRlVOQ1RJT05fQVJHUykKIAkJZnVuY2N0 eC0+dHVwbGVfZGVzYyA9IEJsZXNzVHVwbGVEZXNjKHR1cGRlc2MpOwogCiAJCS8qIGFsbG9j YXRlIG1lbW9yeSBmb3IgdXNlciBjb250ZXh0ICovCi0JCWlkeCA9IChpbnQgKikgcGFsbG9j KHNpemVvZihpbnRbMl0pKTsKKwkJaWR4ID0gcGFsbG9jX2FycmF5KGludCwgMik7CiAJCWlk eFswXSA9IDA7CQkJCS8qIEFDTCBhcnJheSBpdGVtIGluZGV4ICovCiAJCWlkeFsxXSA9IC0x OwkJCS8qIHByaXZpbGVnZSB0eXBlIGNvdW50ZXIgKi8KIAkJZnVuY2N0eC0+dXNlcl9mY3R4 ID0gaWR4OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2FycmF5X3NlbGZ1 bmNzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvYXJyYXlfc2VsZnVuY3MuYwppbmRleCA0 ZGFiMzViMDA1Ny4uY2QyMDE0NjFjMTcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxz L2FkdC9hcnJheV9zZWxmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9hcnJh eV9zZWxmdW5jcy5jCkBAIC03NTksNyArNzU5LDcgQEAgbWNlbGVtX2FycmF5X2NvbnRhaW5l ZF9zZWxlYyhjb25zdCBEYXR1bSAqbWNlbGVtLCBpbnQgbm1jZWxlbSwKIAkgKiBlbGVtX3Nl bGVjIGlzIGFycmF5IG9mIGVzdGltYXRlZCBmcmVxdWVuY2llcyBmb3IgZWxlbWVudHMgaW4g dGhlCiAJICogY29uc3RhbnQuCiAJICovCi0JZWxlbV9zZWxlYyA9IChmbG9hdCAqKSBwYWxs b2Moc2l6ZW9mKGZsb2F0KSAqIG5pdGVtcyk7CisJZWxlbV9zZWxlYyA9IHBhbGxvY19hcnJh eShmbG9hdCwgbml0ZW1zKTsKIAogCS8qIFNjYW4gbWNlbGVtIGFuZCBhcnJheSBpbiBwYXJh bGxlbC4gKi8KIAltY2VsZW1faW5kZXggPSAwOwpAQCAtOTM2LDcgKzkzNiw3IEBAIGNhbGNf aGlzdChjb25zdCBmbG9hdDQgKmhpc3QsIGludCBuaGlzdCwgaW50IG4pCiAJCQkJbmV4dF9p bnRlcnZhbDsKIAlmbG9hdAkJZnJhYzsKIAotCWhpc3RfcGFydCA9IChmbG9hdCAqKSBwYWxs b2MoKG4gKyAxKSAqIHNpemVvZihmbG9hdCkpOworCWhpc3RfcGFydCA9IHBhbGxvY19hcnJh eShmbG9hdCwgbiArIDEpOwogCiAJLyoKIAkgKiBmcmFjIGlzIGEgcHJvYmFiaWxpdHkgY29u dHJpYnV0aW9uIGZvciBlYWNoIGludGVydmFsIGJldHdlZW4gaGlzdG9ncmFtCkBAIC0xMDI4 LDggKzEwMjgsOCBAQCBjYWxjX2Rpc3RyKGNvbnN0IGZsb2F0ICpwLCBpbnQgbiwgaW50IG0s IGZsb2F0IHJlc3QpCiAJICogU2luY2Ugd2UgcmV0dXJuIG9ubHkgdGhlIGxhc3Qgcm93IG9m IHRoZSBtYXRyaXggYW5kIG5lZWQgb25seSB0aGUKIAkgKiBjdXJyZW50IGFuZCBwcmV2aW91 cyByb3cgZm9yIGNhbGN1bGF0aW9ucywgYWxsb2NhdGUgdHdvIHJvd3MuCiAJICovCi0Jcm93 ID0gKGZsb2F0ICopIHBhbGxvYygobSArIDEpICogc2l6ZW9mKGZsb2F0KSk7Ci0JcHJldl9y b3cgPSAoZmxvYXQgKikgcGFsbG9jKChtICsgMSkgKiBzaXplb2YoZmxvYXQpKTsKKwlyb3cg PSBwYWxsb2NfYXJyYXkoZmxvYXQsIG0gKyAxKTsKKwlwcmV2X3JvdyA9IHBhbGxvY19hcnJh eShmbG9hdCwgbSArIDEpOwogCiAJLyogTVswLDBdID0gMSAqLwogCXJvd1swXSA9IDEuMGY7 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvYXJyYXlfdHlwYW5hbHl6ZS5j IGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2FycmF5X3R5cGFuYWx5emUuYwppbmRleCA1NjBi MjdmM2NhNy4uNjFhZWRkMzFmZjEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2Fk dC9hcnJheV90eXBhbmFseXplLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2FycmF5 X3R5cGFuYWx5emUuYwpAQCAtMTMyLDcgKzEzMiw3IEBAIGFycmF5X3R5cGFuYWx5emUoUEdf RlVOQ1RJT05fQVJHUykKIAkJUEdfUkVUVVJOX0JPT0wodHJ1ZSk7CiAKIAkvKiBTdG9yZSBv dXIgZmluZGluZ3MgZm9yIHVzZSBieSBjb21wdXRlX2FycmF5X3N0YXRzKCkgKi8KLQlleHRy YV9kYXRhID0gKEFycmF5QW5hbHl6ZUV4dHJhRGF0YSAqKSBwYWxsb2Moc2l6ZW9mKEFycmF5 QW5hbHl6ZUV4dHJhRGF0YSkpOworCWV4dHJhX2RhdGEgPSBwYWxsb2Nfb2JqZWN0KEFycmF5 QW5hbHl6ZUV4dHJhRGF0YSk7CiAJZXh0cmFfZGF0YS0+dHlwZV9pZCA9IHR5cGVudHJ5LT50 eXBlX2lkOwogCWV4dHJhX2RhdGEtPmVxX29wciA9IHR5cGVudHJ5LT5lcV9vcHI7CiAJZXh0 cmFfZGF0YS0+Y29sbF9pZCA9IHN0YXRzLT5hdHRyY29sbGlkOwkvKiBjb2xsYXRpb24gd2Ug c2hvdWxkIHVzZSAqLwpAQCAtNDY5LDcgKzQ2OSw3IEBAIGNvbXB1dGVfYXJyYXlfc3RhdHMo VmFjQXR0clN0YXRzICpzdGF0cywgQW5hbHl6ZUF0dHJGZXRjaEZ1bmMgZmV0Y2hmdW5jLAog CQljdXRvZmZfZnJlcSA9IDkgKiBlbGVtZW50X25vIC8gYnVja2V0X3dpZHRoOwogCiAJCWkg PSBoYXNoX2dldF9udW1fZW50cmllcyhlbGVtZW50c190YWIpOyAvKiBzdXJlbHkgZW5vdWdo IHNwYWNlICovCi0JCXNvcnRfdGFibGUgPSAoVHJhY2tJdGVtICoqKSBwYWxsb2Moc2l6ZW9m KFRyYWNrSXRlbSAqKSAqIGkpOworCQlzb3J0X3RhYmxlID0gcGFsbG9jX2FycmF5KFRyYWNr SXRlbSAqLCBpKTsKIAogCQloYXNoX3NlcV9pbml0KCZzY2FuX3N0YXR1cywgZWxlbWVudHNf dGFiKTsKIAkJdHJhY2tfbGVuID0gMDsKQEAgLTYwNiw4ICs2MDYsNyBAQCBjb21wdXRlX2Fy cmF5X3N0YXRzKFZhY0F0dHJTdGF0cyAqc3RhdHMsIEFuYWx5emVBdHRyRmV0Y2hGdW5jIGZl dGNoZnVuYywKIAkJCSAqIENyZWF0ZSBhbiBhcnJheSBvZiBERUNvdW50SXRlbSBwb2ludGVy cywgYW5kIHNvcnQgdGhlbSBpbnRvCiAJCQkgKiBpbmNyZWFzaW5nIGNvdW50IG9yZGVyLgog CQkJICovCi0JCQlzb3J0ZWRfY291bnRfaXRlbXMgPSAoREVDb3VudEl0ZW0gKiopCi0JCQkJ cGFsbG9jKHNpemVvZihERUNvdW50SXRlbSAqKSAqIGNvdW50X2l0ZW1zX2NvdW50KTsKKwkJ CXNvcnRlZF9jb3VudF9pdGVtcyA9IHBhbGxvY19hcnJheShERUNvdW50SXRlbSAqLCBjb3Vu dF9pdGVtc19jb3VudCk7CiAJCQloYXNoX3NlcV9pbml0KCZzY2FuX3N0YXR1cywgY291bnRf dGFiKTsKIAkJCWogPSAwOwogCQkJd2hpbGUgKChjb3VudF9pdGVtID0gKERFQ291bnRJdGVt ICopIGhhc2hfc2VxX3NlYXJjaCgmc2Nhbl9zdGF0dXMpKSAhPSBOVUxMKQpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2FycmF5X3VzZXJmdW5jcy5jIGIvc3JjL2JhY2tl bmQvdXRpbHMvYWR0L2FycmF5X3VzZXJmdW5jcy5jCmluZGV4IDhlYjM0MmUzMzgyLi5jMDFi ZjQ2NjEyMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2FycmF5X3VzZXJm dW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9hcnJheV91c2VyZnVuY3MuYwpA QCAtNDMzLDggKzQzMyw4IEBAIGFycmF5X2NhdChQR19GVU5DVElPTl9BUkdTKQogCQkgKiB0 aGVtc2VsdmVzKSBvZiB0aGUgaW5wdXQgYXJndW1lbnQgYXJyYXlzCiAJCSAqLwogCQluZGlt cyA9IG5kaW1zMTsKLQkJZGltcyA9IChpbnQgKikgcGFsbG9jKG5kaW1zICogc2l6ZW9mKGlu dCkpOwotCQlsYnMgPSAoaW50ICopIHBhbGxvYyhuZGltcyAqIHNpemVvZihpbnQpKTsKKwkJ ZGltcyA9IHBhbGxvY19hcnJheShpbnQsIG5kaW1zKTsKKwkJbGJzID0gcGFsbG9jX2FycmF5 KGludCwgbmRpbXMpOwogCiAJCWRpbXNbMF0gPSBkaW1zMVswXSArIGRpbXMyWzBdOwogCQls YnNbMF0gPSBsYnMxWzBdOwpAQCAtNDU5LDggKzQ1OSw4IEBAIGFycmF5X2NhdChQR19GVU5D VElPTl9BUkdTKQogCQkgKiB0aGUgZmlyc3QgYXJndW1lbnQgaW5zZXJ0ZWQgYXQgdGhlIGZy b250IG9mIHRoZSBvdXRlciBkaW1lbnNpb24KIAkJICovCiAJCW5kaW1zID0gbmRpbXMyOwot CQlkaW1zID0gKGludCAqKSBwYWxsb2MobmRpbXMgKiBzaXplb2YoaW50KSk7Ci0JCWxicyA9 IChpbnQgKikgcGFsbG9jKG5kaW1zICogc2l6ZW9mKGludCkpOworCQlkaW1zID0gcGFsbG9j X2FycmF5KGludCwgbmRpbXMpOworCQlsYnMgPSBwYWxsb2NfYXJyYXkoaW50LCBuZGltcyk7 CiAJCW1lbWNweShkaW1zLCBkaW1zMiwgbmRpbXMgKiBzaXplb2YoaW50KSk7CiAJCW1lbWNw eShsYnMsIGxiczIsIG5kaW1zICogc2l6ZW9mKGludCkpOwogCkBAIC00ODcsOCArNDg3LDgg QEAgYXJyYXlfY2F0KFBHX0ZVTkNUSU9OX0FSR1MpCiAJCSAqIHNlY29uZCBhcmd1bWVudCBh cHBlbmRlZCB0byB0aGUgZW5kIG9mIHRoZSBvdXRlciBkaW1lbnNpb24KIAkJICovCiAJCW5k aW1zID0gbmRpbXMxOwotCQlkaW1zID0gKGludCAqKSBwYWxsb2MobmRpbXMgKiBzaXplb2Yo aW50KSk7Ci0JCWxicyA9IChpbnQgKikgcGFsbG9jKG5kaW1zICogc2l6ZW9mKGludCkpOwor CQlkaW1zID0gcGFsbG9jX2FycmF5KGludCwgbmRpbXMpOworCQlsYnMgPSBwYWxsb2NfYXJy YXkoaW50LCBuZGltcyk7CiAJCW1lbWNweShkaW1zLCBkaW1zMSwgbmRpbXMgKiBzaXplb2Yo aW50KSk7CiAJCW1lbWNweShsYnMsIGxiczEsIG5kaW1zICogc2l6ZW9mKGludCkpOwogCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvYXJyYXlmdW5jcy5jIGIvc3JjL2Jh Y2tlbmQvdXRpbHMvYWR0L2FycmF5ZnVuY3MuYwppbmRleCBhNDY0MzQ5ZWUzMy4uNDA5NWQ0 NDlmMzIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9hcnJheWZ1bmNzLmMK KysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2FycmF5ZnVuY3MuYwpAQCAtMzU4Miw3ICsz NTgyLDcgQEAgY29uc3RydWN0X2VtcHR5X2FycmF5KE9pZCBlbG10eXBlKQogewogCUFycmF5 VHlwZSAgKnJlc3VsdDsKIAotCXJlc3VsdCA9IChBcnJheVR5cGUgKikgcGFsbG9jMChzaXpl b2YoQXJyYXlUeXBlKSk7CisJcmVzdWx0ID0gKEFycmF5VHlwZSAqKSBwYWxsb2MwX29iamVj dChBcnJheVR5cGUpOwogCVNFVF9WQVJTSVpFKHJlc3VsdCwgc2l6ZW9mKEFycmF5VHlwZSkp OwogCXJlc3VsdC0+bmRpbSA9IDA7CiAJcmVzdWx0LT5kYXRhb2Zmc2V0ID0gMDsKQEAgLTM2 NDcsNyArMzY0Nyw3IEBAIGRlY29uc3RydWN0X2FycmF5KGNvbnN0IEFycmF5VHlwZSAqYXJy YXksCiAJbmVsZW1zID0gQXJyYXlHZXROSXRlbXMoQVJSX05ESU0oYXJyYXkpLCBBUlJfRElN UyhhcnJheSkpOwogCSplbGVtc3AgPSBlbGVtcyA9IChEYXR1bSAqKSBwYWxsb2MobmVsZW1z ICogc2l6ZW9mKERhdHVtKSk7CiAJaWYgKG51bGxzcCkKLQkJKm51bGxzcCA9IG51bGxzID0g KGJvb2wgKikgcGFsbG9jMChuZWxlbXMgKiBzaXplb2YoYm9vbCkpOworCQkqbnVsbHNwID0g bnVsbHMgPSAoYm9vbCAqKSBwYWxsb2MwX2FycmF5KGJvb2wsIG5lbGVtcyk7CiAJZWxzZQog CQludWxscyA9IE5VTEw7CiAJKm5lbGVtc3AgPSBuZWxlbXM7CkBAIC00MjA5LDcgKzQyMDks NyBAQCBoYXNoX2FycmF5KFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQkgKiBtb2RpZnkgdHlwZW50 cnksIHNpbmNlIHRoYXQgcG9pbnRzIGRpcmVjdGx5IGludG8gdGhlIHR5cGUKIAkJCSAqIGNh Y2hlLgogCQkJICovCi0JCQlyZWNvcmRfdHlwZW50cnkgPSBwYWxsb2MwKHNpemVvZigqcmVj b3JkX3R5cGVudHJ5KSk7CisJCQlyZWNvcmRfdHlwZW50cnkgPSBwYWxsb2MwX29iamVjdChU eXBlQ2FjaGVFbnRyeSk7CiAJCQlyZWNvcmRfdHlwZW50cnktPnR5cGVfaWQgPSBlbGVtZW50 X3R5cGU7CiAKIAkJCS8qIGZpbGwgaW4gd2hhdCB3ZSBuZWVkIGJlbG93ICovCkBAIC00NTk3 LDcgKzQ1OTcsNyBAQCBhcnJheWNvbnRhaW5lZChQR19GVU5DVElPTl9BUkdTKQogQXJyYXlJ dGVyYXRvcgogYXJyYXlfY3JlYXRlX2l0ZXJhdG9yKEFycmF5VHlwZSAqYXJyLCBpbnQgc2xp Y2VfbmRpbSwgQXJyYXlNZXRhU3RhdGUgKm1zdGF0ZSkKIHsKLQlBcnJheUl0ZXJhdG9yIGl0 ZXJhdG9yID0gcGFsbG9jMChzaXplb2YoQXJyYXlJdGVyYXRvckRhdGEpKTsKKwlBcnJheUl0 ZXJhdG9yIGl0ZXJhdG9yID0gcGFsbG9jMF9vYmplY3QoQXJyYXlJdGVyYXRvckRhdGEpOwog CiAJLyoKIAkgKiBTYW5pdHktY2hlY2sgaW5wdXRzIC0tLSBjYWxsZXIgc2hvdWxkIGhhdmUg Z290IHRoaXMgcmlnaHQgYWxyZWFkeQpAQCAtNTk0NCw3ICs1OTQ0LDcgQEAgZ2VuZXJhdGVf c3Vic2NyaXB0cyhQR19GVU5DVElPTl9BUkdTKQogCQkgKiBzd2l0Y2ggdG8gbWVtb3J5IGNv bnRleHQgYXBwcm9wcmlhdGUgZm9yIG11bHRpcGxlIGZ1bmN0aW9uIGNhbGxzCiAJCSAqLwog CQlvbGRjb250ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKGZ1bmNjdHgtPm11bHRpX2Nh bGxfbWVtb3J5X2N0eCk7Ci0JCWZjdHggPSAoZ2VuZXJhdGVfc3Vic2NyaXB0c19mY3R4ICop IHBhbGxvYyhzaXplb2YoZ2VuZXJhdGVfc3Vic2NyaXB0c19mY3R4KSk7CisJCWZjdHggPSBw YWxsb2Nfb2JqZWN0KGdlbmVyYXRlX3N1YnNjcmlwdHNfZmN0eCk7CiAKIAkJbGIgPSBBQVJS X0xCT1VORCh2KTsKIAkJZGltdiA9IEFBUlJfRElNUyh2KTsKQEAgLTYyOTEsNyArNjI5MSw3 IEBAIGFycmF5X3VubmVzdChQR19GVU5DVElPTl9BUkdTKQogCQlhcnIgPSBQR19HRVRBUkdf QU5ZX0FSUkFZX1AoMCk7CiAKIAkJLyogYWxsb2NhdGUgbWVtb3J5IGZvciB1c2VyIGNvbnRl eHQgKi8KLQkJZmN0eCA9IChhcnJheV91bm5lc3RfZmN0eCAqKSBwYWxsb2Moc2l6ZW9mKGFy cmF5X3VubmVzdF9mY3R4KSk7CisJCWZjdHggPSBwYWxsb2Nfb2JqZWN0KGFycmF5X3VubmVz dF9mY3R4KTsKIAogCQkvKiBpbml0aWFsaXplIHN0YXRlICovCiAJCWFycmF5X2l0ZXJfc2V0 dXAoJmZjdHgtPml0ZXIsIGFycik7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9h ZHQvYXJyYXlzdWJzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvYXJyYXlzdWJzLmMKaW5k ZXggMjk0MGZiOGU4ZDcuLjcxY2ExODFmYmE4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91 dGlscy9hZHQvYXJyYXlzdWJzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2FycmF5 c3Vicy5jCkBAIC00OTcsNyArNDk3LDcgQEAgYXJyYXlfZXhlY19zZXR1cChjb25zdCBTdWJz Y3JpcHRpbmdSZWYgKnNic3JlZiwKIAkvKgogCSAqIEFsbG9jYXRlIHR5cGUtc3BlY2lmaWMg d29ya3NwYWNlLgogCSAqLwotCXdvcmtzcGFjZSA9IChBcnJheVN1YldvcmtzcGFjZSAqKSBw YWxsb2Moc2l6ZW9mKEFycmF5U3ViV29ya3NwYWNlKSk7CisJd29ya3NwYWNlID0gcGFsbG9j X29iamVjdChBcnJheVN1YldvcmtzcGFjZSk7CiAJc2JzcmVmc3RhdGUtPndvcmtzcGFjZSA9 IHdvcmtzcGFjZTsKIAogCS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQv ZGF0ZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2RhdGUuYwppbmRleCAzNDRmNThiOTJm Ny4uM2Q3NDdmYzg1NmUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9kYXRl LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2RhdGUuYwpAQCAtMzU3LDcgKzM1Nyw3 IEBAIEdldFNRTEN1cnJlbnRUaW1lKGludDMyIHR5cG1vZCkKIAogCUdldEN1cnJlbnRUaW1l VXNlYyh0bSwgJmZzZWMsICZ0eik7CiAKLQlyZXN1bHQgPSAoVGltZVR6QURUICopIHBhbGxv YyhzaXplb2YoVGltZVR6QURUKSk7CisJcmVzdWx0ID0gcGFsbG9jX29iamVjdChUaW1lVHpB RFQpOwogCXRtMnRpbWV0eih0bSwgZnNlYywgdHosIHJlc3VsdCk7CiAJQWRqdXN0VGltZUZv clR5cG1vZCgmKHJlc3VsdC0+dGltZSksIHR5cG1vZCk7CiAJcmV0dXJuIHJlc3VsdDsKQEAg LTIxMzgsNyArMjEzOCw3IEBAIHRpbWVfaW50ZXJ2YWwoUEdfRlVOQ1RJT05fQVJHUykKIAlU aW1lQURUCQl0aW1lID0gUEdfR0VUQVJHX1RJTUVBRFQoMCk7CiAJSW50ZXJ2YWwgICAqcmVz dWx0OwogCi0JcmVzdWx0ID0gKEludGVydmFsICopIHBhbGxvYyhzaXplb2YoSW50ZXJ2YWwp KTsKKwlyZXN1bHQgPSBwYWxsb2Nfb2JqZWN0KEludGVydmFsKTsKIAogCXJlc3VsdC0+dGlt ZSA9IHRpbWU7CiAJcmVzdWx0LT5kYXkgPSAwOwpAQCAtMjE4Myw3ICsyMTgzLDcgQEAgdGlt ZV9taV90aW1lKFBHX0ZVTkNUSU9OX0FSR1MpCiAJVGltZUFEVAkJdGltZTIgPSBQR19HRVRB UkdfVElNRUFEVCgxKTsKIAlJbnRlcnZhbCAgICpyZXN1bHQ7CiAKLQlyZXN1bHQgPSAoSW50 ZXJ2YWwgKikgcGFsbG9jKHNpemVvZihJbnRlcnZhbCkpOworCXJlc3VsdCA9IHBhbGxvY19v YmplY3QoSW50ZXJ2YWwpOwogCiAJcmVzdWx0LT5tb250aCA9IDA7CiAJcmVzdWx0LT5kYXkg PSAwOwpAQCAtMjQ1MCw3ICsyNDUwLDcgQEAgdGltZXR6X2luKFBHX0ZVTkNUSU9OX0FSR1Mp CiAJCVBHX1JFVFVSTl9OVUxMKCk7CiAJfQogCi0JcmVzdWx0ID0gKFRpbWVUekFEVCAqKSBw YWxsb2Moc2l6ZW9mKFRpbWVUekFEVCkpOworCXJlc3VsdCA9IHBhbGxvY19vYmplY3QoVGlt ZVR6QURUKTsKIAl0bTJ0aW1ldHoodG0sIGZzZWMsIHR6LCByZXN1bHQpOwogCUFkanVzdFRp bWVGb3JUeXBtb2QoJihyZXN1bHQtPnRpbWUpLCB0eXBtb2QpOwogCkBAIC0yNDg5LDcgKzI0 ODksNyBAQCB0aW1ldHpfcmVjdihQR19GVU5DVElPTl9BUkdTKQogCWludDMyCQl0eXBtb2Qg PSBQR19HRVRBUkdfSU5UMzIoMik7CiAJVGltZVR6QURUICAqcmVzdWx0OwogCi0JcmVzdWx0 ID0gKFRpbWVUekFEVCAqKSBwYWxsb2Moc2l6ZW9mKFRpbWVUekFEVCkpOworCXJlc3VsdCA9 IHBhbGxvY19vYmplY3QoVGltZVR6QURUKTsKIAogCXJlc3VsdC0+dGltZSA9IHBxX2dldG1z Z2ludDY0KGJ1Zik7CiAKQEAgLTI1NzUsNyArMjU3NSw3IEBAIHRpbWV0el9zY2FsZShQR19G VU5DVElPTl9BUkdTKQogCWludDMyCQl0eXBtb2QgPSBQR19HRVRBUkdfSU5UMzIoMSk7CiAJ VGltZVR6QURUICAqcmVzdWx0OwogCi0JcmVzdWx0ID0gKFRpbWVUekFEVCAqKSBwYWxsb2Mo c2l6ZW9mKFRpbWVUekFEVCkpOworCXJlc3VsdCA9IHBhbGxvY19vYmplY3QoVGltZVR6QURU KTsKIAogCXJlc3VsdC0+dGltZSA9IHRpbWUtPnRpbWU7CiAJcmVzdWx0LT56b25lID0gdGlt ZS0+em9uZTsKQEAgLTI3NTEsNyArMjc1MSw3IEBAIHRpbWV0el9wbF9pbnRlcnZhbChQR19G VU5DVElPTl9BUkdTKQogCQkJCShlcnJjb2RlKEVSUkNPREVfREFURVRJTUVfVkFMVUVfT1VU X09GX1JBTkdFKSwKIAkJCQkgZXJybXNnKCJjYW5ub3QgYWRkIGluZmluaXRlIGludGVydmFs IHRvIHRpbWUiKSkpOwogCi0JcmVzdWx0ID0gKFRpbWVUekFEVCAqKSBwYWxsb2Moc2l6ZW9m KFRpbWVUekFEVCkpOworCXJlc3VsdCA9IHBhbGxvY19vYmplY3QoVGltZVR6QURUKTsKIAog CXJlc3VsdC0+dGltZSA9IHRpbWUtPnRpbWUgKyBzcGFuLT50aW1lOwogCXJlc3VsdC0+dGlt ZSAtPSByZXN1bHQtPnRpbWUgLyBVU0VDU19QRVJfREFZICogVVNFQ1NfUEVSX0RBWTsKQEAg LTI3NzgsNyArMjc3OCw3IEBAIHRpbWV0el9taV9pbnRlcnZhbChQR19GVU5DVElPTl9BUkdT KQogCQkJCShlcnJjb2RlKEVSUkNPREVfREFURVRJTUVfVkFMVUVfT1VUX09GX1JBTkdFKSwK IAkJCQkgZXJybXNnKCJjYW5ub3Qgc3VidHJhY3QgaW5maW5pdGUgaW50ZXJ2YWwgZnJvbSB0 aW1lIikpKTsKIAotCXJlc3VsdCA9IChUaW1lVHpBRFQgKikgcGFsbG9jKHNpemVvZihUaW1l VHpBRFQpKTsKKwlyZXN1bHQgPSBwYWxsb2Nfb2JqZWN0KFRpbWVUekFEVCk7CiAKIAlyZXN1 bHQtPnRpbWUgPSB0aW1lLT50aW1lIC0gc3Bhbi0+dGltZTsKIAlyZXN1bHQtPnRpbWUgLT0g cmVzdWx0LT50aW1lIC8gVVNFQ1NfUEVSX0RBWSAqIFVTRUNTX1BFUl9EQVk7CkBAIC0yOTg1 LDcgKzI5ODUsNyBAQCB0aW1lX3RpbWV0eihQR19GVU5DVElPTl9BUkdTKQogCXRpbWUydG0o dGltZSwgdG0sICZmc2VjKTsKIAl0eiA9IERldGVybWluZVRpbWVab25lT2Zmc2V0KHRtLCBz ZXNzaW9uX3RpbWV6b25lKTsKIAotCXJlc3VsdCA9IChUaW1lVHpBRFQgKikgcGFsbG9jKHNp emVvZihUaW1lVHpBRFQpKTsKKwlyZXN1bHQgPSBwYWxsb2Nfb2JqZWN0KFRpbWVUekFEVCk7 CiAKIAlyZXN1bHQtPnRpbWUgPSB0aW1lOwogCXJlc3VsdC0+em9uZSA9IHR6OwpAQCAtMzAx NSw3ICszMDE1LDcgQEAgdGltZXN0YW1wdHpfdGltZXR6KFBHX0ZVTkNUSU9OX0FSR1MpCiAJ CQkJKGVycmNvZGUoRVJSQ09ERV9EQVRFVElNRV9WQUxVRV9PVVRfT0ZfUkFOR0UpLAogCQkJ CSBlcnJtc2coInRpbWVzdGFtcCBvdXQgb2YgcmFuZ2UiKSkpOwogCi0JcmVzdWx0ID0gKFRp bWVUekFEVCAqKSBwYWxsb2Moc2l6ZW9mKFRpbWVUekFEVCkpOworCXJlc3VsdCA9IHBhbGxv Y19vYmplY3QoVGltZVR6QURUKTsKIAogCXRtMnRpbWV0eih0bSwgZnNlYywgdHosIHJlc3Vs dCk7CiAKQEAgLTMyNDgsNyArMzI0OCw3IEBAIHRpbWV0el96b25lKFBHX0ZVTkNUSU9OX0FS R1MpCiAJCQkJCSBlcnJtc2coInRpbWVzdGFtcCBvdXQgb2YgcmFuZ2UiKSkpOwogCX0KIAot CXJlc3VsdCA9IChUaW1lVHpBRFQgKikgcGFsbG9jKHNpemVvZihUaW1lVHpBRFQpKTsKKwly ZXN1bHQgPSBwYWxsb2Nfb2JqZWN0KFRpbWVUekFEVCk7CiAKIAlyZXN1bHQtPnRpbWUgPSB0 LT50aW1lICsgKHQtPnpvbmUgLSB0eikgKiBVU0VDU19QRVJfU0VDOwogCS8qIEM5OSBtb2R1 bG8gaGFzIHRoZSB3cm9uZyBzaWduIGNvbnZlbnRpb24gZm9yIG5lZ2F0aXZlIGlucHV0ICov CkBAIC0zMjg5LDcgKzMyODksNyBAQCB0aW1ldHpfaXpvbmUoUEdfRlVOQ1RJT05fQVJHUykK IAogCXR6ID0gLSh6b25lLT50aW1lIC8gVVNFQ1NfUEVSX1NFQyk7CiAKLQlyZXN1bHQgPSAo VGltZVR6QURUICopIHBhbGxvYyhzaXplb2YoVGltZVR6QURUKSk7CisJcmVzdWx0ID0gcGFs bG9jX29iamVjdChUaW1lVHpBRFQpOwogCiAJcmVzdWx0LT50aW1lID0gdGltZS0+dGltZSAr ICh0aW1lLT56b25lIC0gdHopICogVVNFQ1NfUEVSX1NFQzsKIAkvKiBDOTkgbW9kdWxvIGhh cyB0aGUgd3Jvbmcgc2lnbiBjb252ZW50aW9uIGZvciBuZWdhdGl2ZSBpbnB1dCAqLwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2RhdGV0aW1lLmMgYi9zcmMvYmFja2Vu ZC91dGlscy9hZHQvZGF0ZXRpbWUuYwppbmRleCA2ODBmZWUyYTg0NC4uZTNhMDk5ZWFhNjcg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9kYXRldGltZS5jCisrKyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL2FkdC9kYXRldGltZS5jCkBAIC01MTUyLDcgKzUxNTIsNyBAQCBw Z190aW1lem9uZV9hYmJyZXZzX3pvbmUoUEdfRlVOQ1RJT05fQVJHUykKIAkJb2xkY29udGV4 dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhmdW5jY3R4LT5tdWx0aV9jYWxsX21lbW9yeV9j dHgpOwogCiAJCS8qIGFsbG9jYXRlIG1lbW9yeSBmb3IgdXNlciBjb250ZXh0ICovCi0JCXBp bmRleCA9IChpbnQgKikgcGFsbG9jKHNpemVvZihpbnQpKTsKKwkJcGluZGV4ID0gcGFsbG9j X29iamVjdChpbnQpOwogCQkqcGluZGV4ID0gMDsKIAkJZnVuY2N0eC0+dXNlcl9mY3R4ID0g cGluZGV4OwogCkBAIC01MTg3LDcgKzUxODcsNyBAQCBwZ190aW1lem9uZV9hYmJyZXZzX3pv bmUoUEdfRlVOQ1RJT05fQVJHUykKIAkJLyogQ29udmVydCBvZmZzZXQgKGluIHNlY29uZHMp IHRvIGFuIGludGVydmFsOyBjYW4ndCBvdmVyZmxvdyAqLwogCQlNZW1TZXQoJml0bV9pbiwg MCwgc2l6ZW9mKHN0cnVjdCBwZ19pdG1faW4pKTsKIAkJaXRtX2luLnRtX3VzZWMgPSAoaW50 NjQpIGdtdG9mZiAqIFVTRUNTX1BFUl9TRUM7Ci0JCXJlc0ludGVydmFsID0gKEludGVydmFs ICopIHBhbGxvYyhzaXplb2YoSW50ZXJ2YWwpKTsKKwkJcmVzSW50ZXJ2YWwgPSBwYWxsb2Nf b2JqZWN0KEludGVydmFsKTsKIAkJKHZvaWQpIGl0bWluMmludGVydmFsKCZpdG1faW4sIHJl c0ludGVydmFsKTsKIAkJdmFsdWVzWzFdID0gSW50ZXJ2YWxQR2V0RGF0dW0ocmVzSW50ZXJ2 YWwpOwogCkBAIC01MjM5LDcgKzUyMzksNyBAQCBwZ190aW1lem9uZV9hYmJyZXZzX2FiYnJl dnMoUEdfRlVOQ1RJT05fQVJHUykKIAkJb2xkY29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0 Y2hUbyhmdW5jY3R4LT5tdWx0aV9jYWxsX21lbW9yeV9jdHgpOwogCiAJCS8qIGFsbG9jYXRl IG1lbW9yeSBmb3IgdXNlciBjb250ZXh0ICovCi0JCXBpbmRleCA9IChpbnQgKikgcGFsbG9j KHNpemVvZihpbnQpKTsKKwkJcGluZGV4ID0gcGFsbG9jX29iamVjdChpbnQpOwogCQkqcGlu ZGV4ID0gMDsKIAkJZnVuY2N0eC0+dXNlcl9mY3R4ID0gcGluZGV4OwogCkBAIC01MzEwLDcg KzUzMTAsNyBAQCBwZ190aW1lem9uZV9hYmJyZXZzX2FiYnJldnMoUEdfRlVOQ1RJT05fQVJH UykKIAkvKiBDb252ZXJ0IG9mZnNldCAoaW4gc2Vjb25kcykgdG8gYW4gaW50ZXJ2YWw7IGNh bid0IG92ZXJmbG93ICovCiAJTWVtU2V0KCZpdG1faW4sIDAsIHNpemVvZihzdHJ1Y3QgcGdf aXRtX2luKSk7CiAJaXRtX2luLnRtX3VzZWMgPSAoaW50NjQpIGdtdG9mZnNldCAqIFVTRUNT X1BFUl9TRUM7Ci0JcmVzSW50ZXJ2YWwgPSAoSW50ZXJ2YWwgKikgcGFsbG9jKHNpemVvZihJ bnRlcnZhbCkpOworCXJlc0ludGVydmFsID0gcGFsbG9jX29iamVjdChJbnRlcnZhbCk7CiAJ KHZvaWQpIGl0bWluMmludGVydmFsKCZpdG1faW4sIHJlc0ludGVydmFsKTsKIAl2YWx1ZXNb MV0gPSBJbnRlcnZhbFBHZXREYXR1bShyZXNJbnRlcnZhbCk7CiAKQEAgLTUzNzgsNyArNTM3 OCw3IEBAIHBnX3RpbWV6b25lX25hbWVzKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCS8qIENvbnZl cnQgdHpvZmYgdG8gYW4gaW50ZXJ2YWw7IGNhbid0IG92ZXJmbG93ICovCiAJCU1lbVNldCgm aXRtX2luLCAwLCBzaXplb2Yoc3RydWN0IHBnX2l0bV9pbikpOwogCQlpdG1faW4udG1fdXNl YyA9IChpbnQ2NCkgLXR6b2ZmICogVVNFQ1NfUEVSX1NFQzsKLQkJcmVzSW50ZXJ2YWwgPSAo SW50ZXJ2YWwgKikgcGFsbG9jKHNpemVvZihJbnRlcnZhbCkpOworCQlyZXNJbnRlcnZhbCA9 IHBhbGxvY19vYmplY3QoSW50ZXJ2YWwpOwogCQkodm9pZCkgaXRtaW4yaW50ZXJ2YWwoJml0 bV9pbiwgcmVzSW50ZXJ2YWwpOwogCQl2YWx1ZXNbMl0gPSBJbnRlcnZhbFBHZXREYXR1bShy ZXNJbnRlcnZhbCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9mb3Jt YXR0aW5nLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvZm9ybWF0dGluZy5jCmluZGV4IDVi ZmVkYTJmZmRlLi5hOWZhMjA5ZTM0NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMv YWR0L2Zvcm1hdHRpbmcuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvZm9ybWF0dGlu Zy5jCkBAIC00MjYzLDcgKzQyNjMsNyBAQCBwYXJzZV9kYXRldGltZSh0ZXh0ICpkYXRlX3R4 dCwgdGV4dCAqZm10LCBPaWQgY29sbGlkLCBib29sIHN0cmljdCwKIAl7CiAJCWlmIChmbGFn cyAmIERDSF9aT05FRCkKIAkJewotCQkJVGltZVR6QURUICAqcmVzdWx0ID0gcGFsbG9jKHNp emVvZihUaW1lVHpBRFQpKTsKKwkJCVRpbWVUekFEVCAgKnJlc3VsdCA9IHBhbGxvY19vYmpl Y3QoVGltZVR6QURUKTsKIAogCQkJaWYgKGZ0ei5oYXNfdHopCiAJCQl7CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC91dGlscy9hZHQvZ2VvX29wcy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMv YWR0L2dlb19vcHMuYwppbmRleCAzNzdhMWIzZjNhZC4uMjUzN2QwMGZmODcgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9nZW9fb3BzLmMKKysrIGIvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L2dlb19vcHMuYwpAQCAtNDIzLDcgKzQyMyw3IEBAIGJveF9pbihQR19GVU5D VElPTl9BUkdTKQogewogCWNoYXIJICAgKnN0ciA9IFBHX0dFVEFSR19DU1RSSU5HKDApOwog CU5vZGUJICAgKmVzY29udGV4dCA9IGZjaW5mby0+Y29udGV4dDsKLQlCT1gJCSAgICpib3gg PSAoQk9YICopIHBhbGxvYyhzaXplb2YoQk9YKSk7CisJQk9YCQkgICAqYm94ID0gcGFsbG9j X29iamVjdChCT1gpOwogCWJvb2wJCWlzb3BlbjsKIAlmbG9hdDgJCXgsCiAJCQkJeTsKQEAg LTQ3MCw3ICs0NzAsNyBAQCBib3hfcmVjdihQR19GVU5DVElPTl9BUkdTKQogCWZsb2F0OAkJ eCwKIAkJCQl5OwogCi0JYm94ID0gKEJPWCAqKSBwYWxsb2Moc2l6ZW9mKEJPWCkpOworCWJv eCA9IHBhbGxvY19vYmplY3QoQk9YKTsKIAogCWJveC0+aGlnaC54ID0gcHFfZ2V0bXNnZmxv YXQ4KGJ1Zik7CiAJYm94LT5oaWdoLnkgPSBwcV9nZXRtc2dmbG9hdDgoYnVmKTsKQEAgLTg0 OSw3ICs4NDksNyBAQCBEYXR1bQogYm94X2NlbnRlcihQR19GVU5DVElPTl9BUkdTKQogewog CUJPWAkJICAgKmJveCA9IFBHX0dFVEFSR19CT1hfUCgwKTsKLQlQb2ludAkgICAqcmVzdWx0 ID0gKFBvaW50ICopIHBhbGxvYyhzaXplb2YoUG9pbnQpKTsKKwlQb2ludAkgICAqcmVzdWx0 ID0gcGFsbG9jX29iamVjdChQb2ludCk7CiAKIAlib3hfY24ocmVzdWx0LCBib3gpOwogCkBA IC05MTQsNyArOTE0LDcgQEAgYm94X2ludGVyc2VjdChQR19GVU5DVElPTl9BUkdTKQogCWlm ICghYm94X292KGJveDEsIGJveDIpKQogCQlQR19SRVRVUk5fTlVMTCgpOwogCi0JcmVzdWx0 ID0gKEJPWCAqKSBwYWxsb2Moc2l6ZW9mKEJPWCkpOworCXJlc3VsdCA9IHBhbGxvY19vYmpl Y3QoQk9YKTsKIAogCXJlc3VsdC0+aGlnaC54ID0gZmxvYXQ4X21pbihib3gxLT5oaWdoLngs IGJveDItPmhpZ2gueCk7CiAJcmVzdWx0LT5sb3cueCA9IGZsb2F0OF9tYXgoYm94MS0+bG93 LngsIGJveDItPmxvdy54KTsKQEAgLTkzMyw3ICs5MzMsNyBAQCBEYXR1bQogYm94X2RpYWdv bmFsKFBHX0ZVTkNUSU9OX0FSR1MpCiB7CiAJQk9YCQkgICAqYm94ID0gUEdfR0VUQVJHX0JP WF9QKDApOwotCUxTRUcJICAgKnJlc3VsdCA9IChMU0VHICopIHBhbGxvYyhzaXplb2YoTFNF RykpOworCUxTRUcJICAgKnJlc3VsdCA9IHBhbGxvY19vYmplY3QoTFNFRyk7CiAKIAlzdGF0 bHNlZ19jb25zdHJ1Y3QocmVzdWx0LCAmYm94LT5oaWdoLCAmYm94LT5sb3cpOwogCkBAIC05 ODAsNyArOTgwLDcgQEAgbGluZV9pbihQR19GVU5DVElPTl9BUkdTKQogewogCWNoYXIJICAg KnN0ciA9IFBHX0dFVEFSR19DU1RSSU5HKDApOwogCU5vZGUJICAgKmVzY29udGV4dCA9IGZj aW5mby0+Y29udGV4dDsKLQlMSU5FCSAgICpsaW5lID0gKExJTkUgKikgcGFsbG9jKHNpemVv ZihMSU5FKSk7CisJTElORQkgICAqbGluZSA9IHBhbGxvY19vYmplY3QoTElORSk7CiAJTFNF RwkJbHNlZzsKIAlib29sCQlpc29wZW47CiAJY2hhcgkgICAqczsKQEAgLTEwNDAsNyArMTA0 MCw3IEBAIGxpbmVfcmVjdihQR19GVU5DVElPTl9BUkdTKQogCVN0cmluZ0luZm8JYnVmID0g KFN0cmluZ0luZm8pIFBHX0dFVEFSR19QT0lOVEVSKDApOwogCUxJTkUJICAgKmxpbmU7CiAK LQlsaW5lID0gKExJTkUgKikgcGFsbG9jKHNpemVvZihMSU5FKSk7CisJbGluZSA9IHBhbGxv Y19vYmplY3QoTElORSk7CiAKIAlsaW5lLT5BID0gcHFfZ2V0bXNnZmxvYXQ4KGJ1Zik7CiAJ bGluZS0+QiA9IHBxX2dldG1zZ2Zsb2F0OChidWYpOwpAQCAtMTExNiw3ICsxMTE2LDcgQEAg bGluZV9jb25zdHJ1Y3RfcHAoUEdfRlVOQ1RJT05fQVJHUykKIHsKIAlQb2ludAkgICAqcHQx ID0gUEdfR0VUQVJHX1BPSU5UX1AoMCk7CiAJUG9pbnQJICAgKnB0MiA9IFBHX0dFVEFSR19Q T0lOVF9QKDEpOwotCUxJTkUJICAgKnJlc3VsdCA9IChMSU5FICopIHBhbGxvYyhzaXplb2Yo TElORSkpOworCUxJTkUJICAgKnJlc3VsdCA9IHBhbGxvY19vYmplY3QoTElORSk7CiAKIAlp ZiAocG9pbnRfZXFfcG9pbnQocHQxLCBwdDIpKQogCQllcmVwb3J0KEVSUk9SLApAQCAtMTI4 OSw3ICsxMjg5LDcgQEAgbGluZV9pbnRlcnB0KFBHX0ZVTkNUSU9OX0FSR1MpCiAJTElORQkg ICAqbDIgPSBQR19HRVRBUkdfTElORV9QKDEpOwogCVBvaW50CSAgICpyZXN1bHQ7CiAKLQly ZXN1bHQgPSAoUG9pbnQgKikgcGFsbG9jKHNpemVvZihQb2ludCkpOworCXJlc3VsdCA9IHBh bGxvY19vYmplY3QoUG9pbnQpOwogCiAJaWYgKCFsaW5lX2ludGVycHRfbGluZShyZXN1bHQs IGwxLCBsMikpCiAJCVBHX1JFVFVSTl9OVUxMKCk7CkBAIC0xODMxLDcgKzE4MzEsNyBAQCBE YXR1bQogcG9pbnRfaW4oUEdfRlVOQ1RJT05fQVJHUykKIHsKIAljaGFyCSAgICpzdHIgPSBQ R19HRVRBUkdfQ1NUUklORygwKTsKLQlQb2ludAkgICAqcG9pbnQgPSAoUG9pbnQgKikgcGFs bG9jKHNpemVvZihQb2ludCkpOworCVBvaW50CSAgICpwb2ludCA9IHBhbGxvY19vYmplY3Qo UG9pbnQpOwogCiAJLyogSWdub3JlIGZhaWx1cmUgZnJvbSBwYWlyX2RlY29kZSwgc2luY2Ug b3VyIHJldHVybiB2YWx1ZSB3b24ndCBtYXR0ZXIgKi8KIAlwYWlyX2RlY29kZShzdHIsICZw b2ludC0+eCwgJnBvaW50LT55LCBOVUxMLCAicG9pbnQiLCBzdHIsIGZjaW5mby0+Y29udGV4 dCk7CkBAIC0xODU1LDcgKzE4NTUsNyBAQCBwb2ludF9yZWN2KFBHX0ZVTkNUSU9OX0FSR1Mp CiAJU3RyaW5nSW5mbwlidWYgPSAoU3RyaW5nSW5mbykgUEdfR0VUQVJHX1BPSU5URVIoMCk7 CiAJUG9pbnQJICAgKnBvaW50OwogCi0JcG9pbnQgPSAoUG9pbnQgKikgcGFsbG9jKHNpemVv ZihQb2ludCkpOworCXBvaW50ID0gcGFsbG9jX29iamVjdChQb2ludCk7CiAJcG9pbnQtPngg PSBwcV9nZXRtc2dmbG9hdDgoYnVmKTsKIAlwb2ludC0+eSA9IHBxX2dldG1zZ2Zsb2F0OChi dWYpOwogCVBHX1JFVFVSTl9QT0lOVF9QKHBvaW50KTsKQEAgLTIwNjYsNyArMjA2Niw3IEBA IGxzZWdfaW4oUEdfRlVOQ1RJT05fQVJHUykKIHsKIAljaGFyCSAgICpzdHIgPSBQR19HRVRB UkdfQ1NUUklORygwKTsKIAlOb2RlCSAgICplc2NvbnRleHQgPSBmY2luZm8tPmNvbnRleHQ7 Ci0JTFNFRwkgICAqbHNlZyA9IChMU0VHICopIHBhbGxvYyhzaXplb2YoTFNFRykpOworCUxT RUcJICAgKmxzZWcgPSBwYWxsb2Nfb2JqZWN0KExTRUcpOwogCWJvb2wJCWlzb3BlbjsKIAog CWlmICghcGF0aF9kZWNvZGUoc3RyLCB0cnVlLCAyLCAmbHNlZy0+cFswXSwgJmlzb3Blbiwg TlVMTCwgImxzZWciLCBzdHIsCkBAIC0yMDk0LDcgKzIwOTQsNyBAQCBsc2VnX3JlY3YoUEdf RlVOQ1RJT05fQVJHUykKIAlTdHJpbmdJbmZvCWJ1ZiA9IChTdHJpbmdJbmZvKSBQR19HRVRB UkdfUE9JTlRFUigwKTsKIAlMU0VHCSAgICpsc2VnOwogCi0JbHNlZyA9IChMU0VHICopIHBh bGxvYyhzaXplb2YoTFNFRykpOworCWxzZWcgPSBwYWxsb2Nfb2JqZWN0KExTRUcpOwogCiAJ bHNlZy0+cFswXS54ID0gcHFfZ2V0bXNnZmxvYXQ4KGJ1Zik7CiAJbHNlZy0+cFswXS55ID0g cHFfZ2V0bXNnZmxvYXQ4KGJ1Zik7CkBAIC0yMTMwLDcgKzIxMzAsNyBAQCBsc2VnX2NvbnN0 cnVjdChQR19GVU5DVElPTl9BUkdTKQogewogCVBvaW50CSAgICpwdDEgPSBQR19HRVRBUkdf UE9JTlRfUCgwKTsKIAlQb2ludAkgICAqcHQyID0gUEdfR0VUQVJHX1BPSU5UX1AoMSk7Ci0J TFNFRwkgICAqcmVzdWx0ID0gKExTRUcgKikgcGFsbG9jKHNpemVvZihMU0VHKSk7CisJTFNF RwkgICAqcmVzdWx0ID0gcGFsbG9jX29iamVjdChMU0VHKTsKIAogCXN0YXRsc2VnX2NvbnN0 cnVjdChyZXN1bHQsIHB0MSwgcHQyKTsKIApAQCAtMjMxOCw3ICsyMzE4LDcgQEAgbHNlZ19j ZW50ZXIoUEdfRlVOQ1RJT05fQVJHUykKIAlMU0VHCSAgICpsc2VnID0gUEdfR0VUQVJHX0xT RUdfUCgwKTsKIAlQb2ludAkgICAqcmVzdWx0OwogCi0JcmVzdWx0ID0gKFBvaW50ICopIHBh bGxvYyhzaXplb2YoUG9pbnQpKTsKKwlyZXN1bHQgPSBwYWxsb2Nfb2JqZWN0KFBvaW50KTsK IAogCXJlc3VsdC0+eCA9IGZsb2F0OF9kaXYoZmxvYXQ4X3BsKGxzZWctPnBbMF0ueCwgbHNl Zy0+cFsxXS54KSwgMi4wKTsKIAlyZXN1bHQtPnkgPSBmbG9hdDhfZGl2KGZsb2F0OF9wbChs c2VnLT5wWzBdLnksIGxzZWctPnBbMV0ueSksIDIuMCk7CkBAIC0yMzY0LDcgKzIzNjQsNyBA QCBsc2VnX2ludGVycHQoUEdfRlVOQ1RJT05fQVJHUykKIAlMU0VHCSAgICpsMiA9IFBHX0dF VEFSR19MU0VHX1AoMSk7CiAJUG9pbnQJICAgKnJlc3VsdDsKIAotCXJlc3VsdCA9IChQb2lu dCAqKSBwYWxsb2Moc2l6ZW9mKFBvaW50KSk7CisJcmVzdWx0ID0gcGFsbG9jX29iamVjdChQ b2ludCk7CiAKIAlpZiAoIWxzZWdfaW50ZXJwdF9sc2VnKHJlc3VsdCwgbDEsIGwyKSkKIAkJ UEdfUkVUVVJOX05VTEwoKTsKQEAgLTI3NTMsNyArMjc1Myw3IEBAIGNsb3NlX3BsKFBHX0ZV TkNUSU9OX0FSR1MpCiAJTElORQkgICAqbGluZSA9IFBHX0dFVEFSR19MSU5FX1AoMSk7CiAJ UG9pbnQJICAgKnJlc3VsdDsKIAotCXJlc3VsdCA9IChQb2ludCAqKSBwYWxsb2Moc2l6ZW9m KFBvaW50KSk7CisJcmVzdWx0ID0gcGFsbG9jX29iamVjdChQb2ludCk7CiAKIAlpZiAoaXNu YW4obGluZV9jbG9zZXB0X3BvaW50KHJlc3VsdCwgbGluZSwgcHQpKSkKIAkJUEdfUkVUVVJO X05VTEwoKTsKQEAgLTI3OTQsNyArMjc5NCw3IEBAIGNsb3NlX3BzKFBHX0ZVTkNUSU9OX0FS R1MpCiAJTFNFRwkgICAqbHNlZyA9IFBHX0dFVEFSR19MU0VHX1AoMSk7CiAJUG9pbnQJICAg KnJlc3VsdDsKIAotCXJlc3VsdCA9IChQb2ludCAqKSBwYWxsb2Moc2l6ZW9mKFBvaW50KSk7 CisJcmVzdWx0ID0gcGFsbG9jX29iamVjdChQb2ludCk7CiAKIAlpZiAoaXNuYW4obHNlZ19j bG9zZXB0X3BvaW50KHJlc3VsdCwgbHNlZywgcHQpKSkKIAkJUEdfUkVUVVJOX05VTEwoKTsK QEAgLTI4NTksNyArMjg1OSw3IEBAIGNsb3NlX2xzZWcoUEdfRlVOQ1RJT05fQVJHUykKIAlp ZiAobHNlZ19zbChsMSkgPT0gbHNlZ19zbChsMikpCiAJCVBHX1JFVFVSTl9OVUxMKCk7CiAK LQlyZXN1bHQgPSAoUG9pbnQgKikgcGFsbG9jKHNpemVvZihQb2ludCkpOworCXJlc3VsdCA9 IHBhbGxvY19vYmplY3QoUG9pbnQpOwogCiAJaWYgKGlzbmFuKGxzZWdfY2xvc2VwdF9sc2Vn KHJlc3VsdCwgbDIsIGwxKSkpCiAJCVBHX1JFVFVSTl9OVUxMKCk7CkBAIC0yOTM2LDcgKzI5 MzYsNyBAQCBjbG9zZV9wYihQR19GVU5DVElPTl9BUkdTKQogCUJPWAkJICAgKmJveCA9IFBH X0dFVEFSR19CT1hfUCgxKTsKIAlQb2ludAkgICAqcmVzdWx0OwogCi0JcmVzdWx0ID0gKFBv aW50ICopIHBhbGxvYyhzaXplb2YoUG9pbnQpKTsKKwlyZXN1bHQgPSBwYWxsb2Nfb2JqZWN0 KFBvaW50KTsKIAogCWlmIChpc25hbihib3hfY2xvc2VwdF9wb2ludChyZXN1bHQsIGJveCwg cHQpKSkKIAkJUEdfUkVUVVJOX05VTEwoKTsKQEAgLTI5OTQsNyArMjk5NCw3IEBAIGNsb3Nl X2xzKFBHX0ZVTkNUSU9OX0FSR1MpCiAJaWYgKGxzZWdfc2wobHNlZykgPT0gbGluZV9zbChs aW5lKSkKIAkJUEdfUkVUVVJOX05VTEwoKTsKIAotCXJlc3VsdCA9IChQb2ludCAqKSBwYWxs b2Moc2l6ZW9mKFBvaW50KSk7CisJcmVzdWx0ID0gcGFsbG9jX29iamVjdChQb2ludCk7CiAK IAlpZiAoaXNuYW4obHNlZ19jbG9zZXB0X2xpbmUocmVzdWx0LCBsc2VnLCBsaW5lKSkpCiAJ CVBHX1JFVFVSTl9OVUxMKCk7CkBAIC0zMDY2LDcgKzMwNjYsNyBAQCBjbG9zZV9zYihQR19G VU5DVElPTl9BUkdTKQogCUJPWAkJICAgKmJveCA9IFBHX0dFVEFSR19CT1hfUCgxKTsKIAlQ b2ludAkgICAqcmVzdWx0OwogCi0JcmVzdWx0ID0gKFBvaW50ICopIHBhbGxvYyhzaXplb2Yo UG9pbnQpKTsKKwlyZXN1bHQgPSBwYWxsb2Nfb2JqZWN0KFBvaW50KTsKIAogCWlmIChpc25h bihib3hfY2xvc2VwdF9sc2VnKHJlc3VsdCwgYm94LCBsc2VnKSkpCiAJCVBHX1JFVFVSTl9O VUxMKCk7CkBAIC00MDk5LDcgKzQwOTksNyBAQCBjb25zdHJ1Y3RfcG9pbnQoUEdfRlVOQ1RJ T05fQVJHUykKIAlmbG9hdDgJCXkgPSBQR19HRVRBUkdfRkxPQVQ4KDEpOwogCVBvaW50CSAg ICpyZXN1bHQ7CiAKLQlyZXN1bHQgPSAoUG9pbnQgKikgcGFsbG9jKHNpemVvZihQb2ludCkp OworCXJlc3VsdCA9IHBhbGxvY19vYmplY3QoUG9pbnQpOwogCiAJcG9pbnRfY29uc3RydWN0 KHJlc3VsdCwgeCwgeSk7CiAKQEAgLTQxMjIsNyArNDEyMiw3IEBAIHBvaW50X2FkZChQR19G VU5DVElPTl9BUkdTKQogCVBvaW50CSAgICpwMiA9IFBHX0dFVEFSR19QT0lOVF9QKDEpOwog CVBvaW50CSAgICpyZXN1bHQ7CiAKLQlyZXN1bHQgPSAoUG9pbnQgKikgcGFsbG9jKHNpemVv ZihQb2ludCkpOworCXJlc3VsdCA9IHBhbGxvY19vYmplY3QoUG9pbnQpOwogCiAJcG9pbnRf YWRkX3BvaW50KHJlc3VsdCwgcDEsIHAyKTsKIApAQCAtNDE0NSw3ICs0MTQ1LDcgQEAgcG9p bnRfc3ViKFBHX0ZVTkNUSU9OX0FSR1MpCiAJUG9pbnQJICAgKnAyID0gUEdfR0VUQVJHX1BP SU5UX1AoMSk7CiAJUG9pbnQJICAgKnJlc3VsdDsKIAotCXJlc3VsdCA9IChQb2ludCAqKSBw YWxsb2Moc2l6ZW9mKFBvaW50KSk7CisJcmVzdWx0ID0gcGFsbG9jX29iamVjdChQb2ludCk7 CiAKIAlwb2ludF9zdWJfcG9pbnQocmVzdWx0LCBwMSwgcDIpOwogCkBAIC00MTcwLDcgKzQx NzAsNyBAQCBwb2ludF9tdWwoUEdfRlVOQ1RJT05fQVJHUykKIAlQb2ludAkgICAqcDIgPSBQ R19HRVRBUkdfUE9JTlRfUCgxKTsKIAlQb2ludAkgICAqcmVzdWx0OwogCi0JcmVzdWx0ID0g KFBvaW50ICopIHBhbGxvYyhzaXplb2YoUG9pbnQpKTsKKwlyZXN1bHQgPSBwYWxsb2Nfb2Jq ZWN0KFBvaW50KTsKIAogCXBvaW50X211bF9wb2ludChyZXN1bHQsIHAxLCBwMik7CiAKQEAg LTQxOTksNyArNDE5OSw3IEBAIHBvaW50X2RpdihQR19GVU5DVElPTl9BUkdTKQogCVBvaW50 CSAgICpwMiA9IFBHX0dFVEFSR19QT0lOVF9QKDEpOwogCVBvaW50CSAgICpyZXN1bHQ7CiAK LQlyZXN1bHQgPSAoUG9pbnQgKikgcGFsbG9jKHNpemVvZihQb2ludCkpOworCXJlc3VsdCA9 IHBhbGxvY19vYmplY3QoUG9pbnQpOwogCiAJcG9pbnRfZGl2X3BvaW50KHJlc3VsdCwgcDEs IHAyKTsKIApAQCAtNDIyMCw3ICs0MjIwLDcgQEAgcG9pbnRzX2JveChQR19GVU5DVElPTl9B UkdTKQogCVBvaW50CSAgICpwMiA9IFBHX0dFVEFSR19QT0lOVF9QKDEpOwogCUJPWAkJICAg KnJlc3VsdDsKIAotCXJlc3VsdCA9IChCT1ggKikgcGFsbG9jKHNpemVvZihCT1gpKTsKKwly ZXN1bHQgPSBwYWxsb2Nfb2JqZWN0KEJPWCk7CiAKIAlib3hfY29uc3RydWN0KHJlc3VsdCwg cDEsIHAyKTsKIApAQCAtNDIzNCw3ICs0MjM0LDcgQEAgYm94X2FkZChQR19GVU5DVElPTl9B UkdTKQogCVBvaW50CSAgICpwID0gUEdfR0VUQVJHX1BPSU5UX1AoMSk7CiAJQk9YCQkgICAq cmVzdWx0OwogCi0JcmVzdWx0ID0gKEJPWCAqKSBwYWxsb2Moc2l6ZW9mKEJPWCkpOworCXJl c3VsdCA9IHBhbGxvY19vYmplY3QoQk9YKTsKIAogCXBvaW50X2FkZF9wb2ludCgmcmVzdWx0 LT5oaWdoLCAmYm94LT5oaWdoLCBwKTsKIAlwb2ludF9hZGRfcG9pbnQoJnJlc3VsdC0+bG93 LCAmYm94LT5sb3csIHApOwpAQCAtNDI0OSw3ICs0MjQ5LDcgQEAgYm94X3N1YihQR19GVU5D VElPTl9BUkdTKQogCVBvaW50CSAgICpwID0gUEdfR0VUQVJHX1BPSU5UX1AoMSk7CiAJQk9Y CQkgICAqcmVzdWx0OwogCi0JcmVzdWx0ID0gKEJPWCAqKSBwYWxsb2Moc2l6ZW9mKEJPWCkp OworCXJlc3VsdCA9IHBhbGxvY19vYmplY3QoQk9YKTsKIAogCXBvaW50X3N1Yl9wb2ludCgm cmVzdWx0LT5oaWdoLCAmYm94LT5oaWdoLCBwKTsKIAlwb2ludF9zdWJfcG9pbnQoJnJlc3Vs dC0+bG93LCAmYm94LT5sb3csIHApOwpAQCAtNDI2Niw3ICs0MjY2LDcgQEAgYm94X211bChQ R19GVU5DVElPTl9BUkdTKQogCVBvaW50CQloaWdoLAogCQkJCWxvdzsKIAotCXJlc3VsdCA9 IChCT1ggKikgcGFsbG9jKHNpemVvZihCT1gpKTsKKwlyZXN1bHQgPSBwYWxsb2Nfb2JqZWN0 KEJPWCk7CiAKIAlwb2ludF9tdWxfcG9pbnQoJmhpZ2gsICZib3gtPmhpZ2gsIHApOwogCXBv aW50X211bF9wb2ludCgmbG93LCAmYm94LT5sb3csIHApOwpAQCAtNDI4NSw3ICs0Mjg1LDcg QEAgYm94X2RpdihQR19GVU5DVElPTl9BUkdTKQogCVBvaW50CQloaWdoLAogCQkJCWxvdzsK IAotCXJlc3VsdCA9IChCT1ggKikgcGFsbG9jKHNpemVvZihCT1gpKTsKKwlyZXN1bHQgPSBw YWxsb2Nfb2JqZWN0KEJPWCk7CiAKIAlwb2ludF9kaXZfcG9pbnQoJmhpZ2gsICZib3gtPmhp Z2gsIHApOwogCXBvaW50X2Rpdl9wb2ludCgmbG93LCAmYm94LT5sb3csIHApOwpAQCAtNDMw NCw3ICs0MzA0LDcgQEAgcG9pbnRfYm94KFBHX0ZVTkNUSU9OX0FSR1MpCiAJUG9pbnQJICAg KnB0ID0gUEdfR0VUQVJHX1BPSU5UX1AoMCk7CiAJQk9YCQkgICAqYm94OwogCi0JYm94ID0g KEJPWCAqKSBwYWxsb2Moc2l6ZW9mKEJPWCkpOworCWJveCA9IHBhbGxvY19vYmplY3QoQk9Y KTsKIAogCWJveC0+aGlnaC54ID0gcHQtPng7CiAJYm94LT5sb3cueCA9IHB0LT54OwpAQCAt NDMyNCw3ICs0MzI0LDcgQEAgYm94ZXNfYm91bmRfYm94KFBHX0ZVTkNUSU9OX0FSR1MpCiAJ CQkgICAqYm94MiA9IFBHX0dFVEFSR19CT1hfUCgxKSwKIAkJCSAgICpjb250YWluZXI7CiAK LQljb250YWluZXIgPSAoQk9YICopIHBhbGxvYyhzaXplb2YoQk9YKSk7CisJY29udGFpbmVy ID0gcGFsbG9jX29iamVjdChCT1gpOwogCiAJY29udGFpbmVyLT5oaWdoLnggPSBmbG9hdDhf bWF4KGJveDEtPmhpZ2gueCwgYm94Mi0+aGlnaC54KTsKIAljb250YWluZXItPmxvdy54ID0g ZmxvYXQ4X21pbihib3gxLT5sb3cueCwgYm94Mi0+bG93LngpOwpAQCAtNDUwNiw3ICs0NTA2 LDcgQEAgcG9seV9jZW50ZXIoUEdfRlVOQ1RJT05fQVJHUykKIAlQb2ludAkgICAqcmVzdWx0 OwogCUNJUkNMRQkJY2lyY2xlOwogCi0JcmVzdWx0ID0gKFBvaW50ICopIHBhbGxvYyhzaXpl b2YoUG9pbnQpKTsKKwlyZXN1bHQgPSBwYWxsb2Nfb2JqZWN0KFBvaW50KTsKIAogCXBvbHlf dG9fY2lyY2xlKCZjaXJjbGUsIHBvbHkpOwogCSpyZXN1bHQgPSBjaXJjbGUuY2VudGVyOwpA QCAtNDUyMSw3ICs0NTIxLDcgQEAgcG9seV9ib3goUEdfRlVOQ1RJT05fQVJHUykKIAlQT0xZ R09OICAgICpwb2x5ID0gUEdfR0VUQVJHX1BPTFlHT05fUCgwKTsKIAlCT1gJCSAgICpib3g7 CiAKLQlib3ggPSAoQk9YICopIHBhbGxvYyhzaXplb2YoQk9YKSk7CisJYm94ID0gcGFsbG9j X29iamVjdChCT1gpOwogCSpib3ggPSBwb2x5LT5ib3VuZGJveDsKIAogCVBHX1JFVFVSTl9C T1hfUChib3gpOwpAQCAtNDYxMiw3ICs0NjEyLDcgQEAgY2lyY2xlX2luKFBHX0ZVTkNUSU9O X0FSR1MpCiB7CiAJY2hhcgkgICAqc3RyID0gUEdfR0VUQVJHX0NTVFJJTkcoMCk7CiAJTm9k ZQkgICAqZXNjb250ZXh0ID0gZmNpbmZvLT5jb250ZXh0OwotCUNJUkNMRQkgICAqY2lyY2xl ID0gKENJUkNMRSAqKSBwYWxsb2Moc2l6ZW9mKENJUkNMRSkpOworCUNJUkNMRQkgICAqY2ly Y2xlID0gcGFsbG9jX29iamVjdChDSVJDTEUpOwogCWNoYXIJICAgKnMsCiAJCQkgICAqY3A7 CiAJaW50CQkJZGVwdGggPSAwOwpAQCAtNDcwNSw3ICs0NzA1LDcgQEAgY2lyY2xlX3JlY3Yo UEdfRlVOQ1RJT05fQVJHUykKIAlTdHJpbmdJbmZvCWJ1ZiA9IChTdHJpbmdJbmZvKSBQR19H RVRBUkdfUE9JTlRFUigwKTsKIAlDSVJDTEUJICAgKmNpcmNsZTsKIAotCWNpcmNsZSA9IChD SVJDTEUgKikgcGFsbG9jKHNpemVvZihDSVJDTEUpKTsKKwljaXJjbGUgPSBwYWxsb2Nfb2Jq ZWN0KENJUkNMRSk7CiAKIAljaXJjbGUtPmNlbnRlci54ID0gcHFfZ2V0bXNnZmxvYXQ4KGJ1 Zik7CiAJY2lyY2xlLT5jZW50ZXIueSA9IHBxX2dldG1zZ2Zsb2F0OChidWYpOwpAQCAtNDk2 OCw3ICs0OTY4LDcgQEAgY2lyY2xlX2FkZF9wdChQR19GVU5DVElPTl9BUkdTKQogCVBvaW50 CSAgICpwb2ludCA9IFBHX0dFVEFSR19QT0lOVF9QKDEpOwogCUNJUkNMRQkgICAqcmVzdWx0 OwogCi0JcmVzdWx0ID0gKENJUkNMRSAqKSBwYWxsb2Moc2l6ZW9mKENJUkNMRSkpOworCXJl c3VsdCA9IHBhbGxvY19vYmplY3QoQ0lSQ0xFKTsKIAogCXBvaW50X2FkZF9wb2ludCgmcmVz dWx0LT5jZW50ZXIsICZjaXJjbGUtPmNlbnRlciwgcG9pbnQpOwogCXJlc3VsdC0+cmFkaXVz ID0gY2lyY2xlLT5yYWRpdXM7CkBAIC00OTgzLDcgKzQ5ODMsNyBAQCBjaXJjbGVfc3ViX3B0 KFBHX0ZVTkNUSU9OX0FSR1MpCiAJUG9pbnQJICAgKnBvaW50ID0gUEdfR0VUQVJHX1BPSU5U X1AoMSk7CiAJQ0lSQ0xFCSAgICpyZXN1bHQ7CiAKLQlyZXN1bHQgPSAoQ0lSQ0xFICopIHBh bGxvYyhzaXplb2YoQ0lSQ0xFKSk7CisJcmVzdWx0ID0gcGFsbG9jX29iamVjdChDSVJDTEUp OwogCiAJcG9pbnRfc3ViX3BvaW50KCZyZXN1bHQtPmNlbnRlciwgJmNpcmNsZS0+Y2VudGVy LCBwb2ludCk7CiAJcmVzdWx0LT5yYWRpdXMgPSBjaXJjbGUtPnJhZGl1czsKQEAgLTUwMDIs NyArNTAwMiw3IEBAIGNpcmNsZV9tdWxfcHQoUEdfRlVOQ1RJT05fQVJHUykKIAlQb2ludAkg ICAqcG9pbnQgPSBQR19HRVRBUkdfUE9JTlRfUCgxKTsKIAlDSVJDTEUJICAgKnJlc3VsdDsK IAotCXJlc3VsdCA9IChDSVJDTEUgKikgcGFsbG9jKHNpemVvZihDSVJDTEUpKTsKKwlyZXN1 bHQgPSBwYWxsb2Nfb2JqZWN0KENJUkNMRSk7CiAKIAlwb2ludF9tdWxfcG9pbnQoJnJlc3Vs dC0+Y2VudGVyLCAmY2lyY2xlLT5jZW50ZXIsIHBvaW50KTsKIAlyZXN1bHQtPnJhZGl1cyA9 IGZsb2F0OF9tdWwoY2lyY2xlLT5yYWRpdXMsIEhZUE9UKHBvaW50LT54LCBwb2ludC0+eSkp OwpAQCAtNTAxNyw3ICs1MDE3LDcgQEAgY2lyY2xlX2Rpdl9wdChQR19GVU5DVElPTl9BUkdT KQogCVBvaW50CSAgICpwb2ludCA9IFBHX0dFVEFSR19QT0lOVF9QKDEpOwogCUNJUkNMRQkg ICAqcmVzdWx0OwogCi0JcmVzdWx0ID0gKENJUkNMRSAqKSBwYWxsb2Moc2l6ZW9mKENJUkNM RSkpOworCXJlc3VsdCA9IHBhbGxvY19vYmplY3QoQ0lSQ0xFKTsKIAogCXBvaW50X2Rpdl9w b2ludCgmcmVzdWx0LT5jZW50ZXIsICZjaXJjbGUtPmNlbnRlciwgcG9pbnQpOwogCXJlc3Vs dC0+cmFkaXVzID0gZmxvYXQ4X2RpdihjaXJjbGUtPnJhZGl1cywgSFlQT1QocG9pbnQtPngs IHBvaW50LT55KSk7CkBAIC01MTQ1LDcgKzUxNDUsNyBAQCBjaXJjbGVfY2VudGVyKFBHX0ZV TkNUSU9OX0FSR1MpCiAJQ0lSQ0xFCSAgICpjaXJjbGUgPSBQR19HRVRBUkdfQ0lSQ0xFX1Ao MCk7CiAJUG9pbnQJICAgKnJlc3VsdDsKIAotCXJlc3VsdCA9IChQb2ludCAqKSBwYWxsb2Mo c2l6ZW9mKFBvaW50KSk7CisJcmVzdWx0ID0gcGFsbG9jX29iamVjdChQb2ludCk7CiAJcmVz dWx0LT54ID0gY2lyY2xlLT5jZW50ZXIueDsKIAlyZXN1bHQtPnkgPSBjaXJjbGUtPmNlbnRl ci55OwogCkBAIC01MTczLDcgKzUxNzMsNyBAQCBjcl9jaXJjbGUoUEdfRlVOQ1RJT05fQVJH UykKIAlmbG9hdDgJCXJhZGl1cyA9IFBHX0dFVEFSR19GTE9BVDgoMSk7CiAJQ0lSQ0xFCSAg ICpyZXN1bHQ7CiAKLQlyZXN1bHQgPSAoQ0lSQ0xFICopIHBhbGxvYyhzaXplb2YoQ0lSQ0xF KSk7CisJcmVzdWx0ID0gcGFsbG9jX29iamVjdChDSVJDTEUpOwogCiAJcmVzdWx0LT5jZW50 ZXIueCA9IGNlbnRlci0+eDsKIAlyZXN1bHQtPmNlbnRlci55ID0gY2VudGVyLT55OwpAQCAt NTE4OSw3ICs1MTg5LDcgQEAgY2lyY2xlX2JveChQR19GVU5DVElPTl9BUkdTKQogCUJPWAkJ ICAgKmJveDsKIAlmbG9hdDgJCWRlbHRhOwogCi0JYm94ID0gKEJPWCAqKSBwYWxsb2Moc2l6 ZW9mKEJPWCkpOworCWJveCA9IHBhbGxvY19vYmplY3QoQk9YKTsKIAogCWRlbHRhID0gZmxv YXQ4X2RpdihjaXJjbGUtPnJhZGl1cywgc3FydCgyLjApKTsKIApAQCAtNTIxMCw3ICs1MjEw LDcgQEAgYm94X2NpcmNsZShQR19GVU5DVElPTl9BUkdTKQogCUJPWAkJICAgKmJveCA9IFBH X0dFVEFSR19CT1hfUCgwKTsKIAlDSVJDTEUJICAgKmNpcmNsZTsKIAotCWNpcmNsZSA9IChD SVJDTEUgKikgcGFsbG9jKHNpemVvZihDSVJDTEUpKTsKKwljaXJjbGUgPSBwYWxsb2Nfb2Jq ZWN0KENJUkNMRSk7CiAKIAljaXJjbGUtPmNlbnRlci54ID0gZmxvYXQ4X2RpdihmbG9hdDhf cGwoYm94LT5oaWdoLngsIGJveC0+bG93LngpLCAyLjApOwogCWNpcmNsZS0+Y2VudGVyLnkg PSBmbG9hdDhfZGl2KGZsb2F0OF9wbChib3gtPmhpZ2gueSwgYm94LT5sb3cueSksIDIuMCk7 CkBAIC01MzA5LDcgKzUzMDksNyBAQCBwb2x5X2NpcmNsZShQR19GVU5DVElPTl9BUkdTKQog CVBPTFlHT04gICAgKnBvbHkgPSBQR19HRVRBUkdfUE9MWUdPTl9QKDApOwogCUNJUkNMRQkg ICAqcmVzdWx0OwogCi0JcmVzdWx0ID0gKENJUkNMRSAqKSBwYWxsb2Moc2l6ZW9mKENJUkNM RSkpOworCXJlc3VsdCA9IHBhbGxvY19vYmplY3QoQ0lSQ0xFKTsKIAogCXBvbHlfdG9fY2ly Y2xlKHJlc3VsdCwgcG9seSk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2Fk dC9nZW9fc3BnaXN0LmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvZ2VvX3NwZ2lzdC5jCmlu ZGV4IGZlYzMzZTk1MzcyLi5lNzFlNjg0OGQ5OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L2dlb19zcGdpc3QuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvZ2Vv X3NwZ2lzdC5jCkBAIC0xNTYsNyArMTU2LDcgQEAgZ2V0UXVhZHJhbnQoQk9YICpjZW50cm9p ZCwgQk9YICppbkJveCkKIHN0YXRpYyBSYW5nZUJveCAqCiBnZXRSYW5nZUJveChCT1ggKmJv eCkKIHsKLQlSYW5nZUJveCAgICpyYW5nZV9ib3ggPSAoUmFuZ2VCb3ggKikgcGFsbG9jKHNp emVvZihSYW5nZUJveCkpOworCVJhbmdlQm94ICAgKnJhbmdlX2JveCA9IHBhbGxvY19vYmpl Y3QoUmFuZ2VCb3gpOwogCiAJcmFuZ2VfYm94LT5sZWZ0LmxvdyA9IGJveC0+bG93Lng7CiAJ cmFuZ2VfYm94LT5sZWZ0LmhpZ2ggPSBib3gtPmhpZ2gueDsKQEAgLTE3Niw3ICsxNzYsNyBA QCBnZXRSYW5nZUJveChCT1ggKmJveCkKIHN0YXRpYyBSZWN0Qm94ICoKIGluaXRSZWN0Qm94 KHZvaWQpCiB7Ci0JUmVjdEJveCAgICAqcmVjdF9ib3ggPSAoUmVjdEJveCAqKSBwYWxsb2Mo c2l6ZW9mKFJlY3RCb3gpKTsKKwlSZWN0Qm94ICAgICpyZWN0X2JveCA9IHBhbGxvY19vYmpl Y3QoUmVjdEJveCk7CiAJZmxvYXQ4CQlpbmZpbml0eSA9IGdldF9mbG9hdDhfaW5maW5pdHko KTsKIAogCXJlY3RfYm94LT5yYW5nZV9ib3hfeC5sZWZ0LmxvdyA9IC1pbmZpbml0eTsKQEAg LTIwNCw3ICsyMDQsNyBAQCBpbml0UmVjdEJveCh2b2lkKQogc3RhdGljIFJlY3RCb3ggKgog bmV4dFJlY3RCb3goUmVjdEJveCAqcmVjdF9ib3gsIFJhbmdlQm94ICpjZW50cm9pZCwgdWlu dDggcXVhZHJhbnQpCiB7Ci0JUmVjdEJveCAgICAqbmV4dF9yZWN0X2JveCA9IChSZWN0Qm94 ICopIHBhbGxvYyhzaXplb2YoUmVjdEJveCkpOworCVJlY3RCb3ggICAgKm5leHRfcmVjdF9i b3ggPSBwYWxsb2Nfb2JqZWN0KFJlY3RCb3gpOwogCiAJbWVtY3B5KG5leHRfcmVjdF9ib3gs IHJlY3RfYm94LCBzaXplb2YoUmVjdEJveCkpOwogCkBAIC00NDUsMTAgKzQ0NSwxMCBAQCBz cGdfYm94X3F1YWRfcGlja3NwbGl0KFBHX0ZVTkNUSU9OX0FSR1MpCiAJQk9YCQkgICAqY2Vu dHJvaWQ7CiAJaW50CQkJbWVkaWFuLAogCQkJCWk7Ci0JZmxvYXQ4CSAgICpsb3dYcyA9IHBh bGxvYyhzaXplb2YoZmxvYXQ4KSAqIGluLT5uVHVwbGVzKTsKLQlmbG9hdDgJICAgKmhpZ2hY cyA9IHBhbGxvYyhzaXplb2YoZmxvYXQ4KSAqIGluLT5uVHVwbGVzKTsKLQlmbG9hdDgJICAg Kmxvd1lzID0gcGFsbG9jKHNpemVvZihmbG9hdDgpICogaW4tPm5UdXBsZXMpOwotCWZsb2F0 OAkgICAqaGlnaFlzID0gcGFsbG9jKHNpemVvZihmbG9hdDgpICogaW4tPm5UdXBsZXMpOwor CWZsb2F0OAkgICAqbG93WHMgPSBwYWxsb2NfYXJyYXkoZmxvYXQ4LCBpbi0+blR1cGxlcyk7 CisJZmxvYXQ4CSAgICpoaWdoWHMgPSBwYWxsb2NfYXJyYXkoZmxvYXQ4LCBpbi0+blR1cGxl cyk7CisJZmxvYXQ4CSAgICpsb3dZcyA9IHBhbGxvY19hcnJheShmbG9hdDgsIGluLT5uVHVw bGVzKTsKKwlmbG9hdDgJICAgKmhpZ2hZcyA9IHBhbGxvY19hcnJheShmbG9hdDgsIGluLT5u VHVwbGVzKTsKIAogCS8qIENhbGN1bGF0ZSBtZWRpYW4gb2YgYWxsIDREIGNvb3JkaW5hdGVz ICovCiAJZm9yIChpID0gMDsgaSA8IGluLT5uVHVwbGVzOyBpKyspCkBAIC00NjgsNyArNDY4 LDcgQEAgc3BnX2JveF9xdWFkX3BpY2tzcGxpdChQR19GVU5DVElPTl9BUkdTKQogCiAJbWVk aWFuID0gaW4tPm5UdXBsZXMgLyAyOwogCi0JY2VudHJvaWQgPSBwYWxsb2Moc2l6ZW9mKEJP WCkpOworCWNlbnRyb2lkID0gcGFsbG9jX29iamVjdChCT1gpOwogCiAJY2VudHJvaWQtPmxv dy54ID0gbG93WHNbbWVkaWFuXTsKIAljZW50cm9pZC0+aGlnaC54ID0gaGlnaFhzW21lZGlh bl07CkBAIC00ODIsOCArNDgyLDggQEAgc3BnX2JveF9xdWFkX3BpY2tzcGxpdChQR19GVU5D VElPTl9BUkdTKQogCW91dC0+bk5vZGVzID0gMTY7CiAJb3V0LT5ub2RlTGFiZWxzID0gTlVM TDsJCS8qIFdlIGRvbid0IG5lZWQgbm9kZSBsYWJlbHMuICovCiAKLQlvdXQtPm1hcFR1cGxl c1RvTm9kZXMgPSBwYWxsb2Moc2l6ZW9mKGludCkgKiBpbi0+blR1cGxlcyk7Ci0Jb3V0LT5s ZWFmVHVwbGVEYXR1bXMgPSBwYWxsb2Moc2l6ZW9mKERhdHVtKSAqIGluLT5uVHVwbGVzKTsK KwlvdXQtPm1hcFR1cGxlc1RvTm9kZXMgPSBwYWxsb2NfYXJyYXkoaW50LCBpbi0+blR1cGxl cyk7CisJb3V0LT5sZWFmVHVwbGVEYXR1bXMgPSBwYWxsb2NfYXJyYXkoRGF0dW0sIGluLT5u VHVwbGVzKTsKIAogCS8qCiAJICogQXNzaWduIHJhbmdlcyB0byBjb3JyZXNwb25kaW5nIG5v ZGVzIGFjY29yZGluZyB0byBxdWFkcmFudHMgcmVsYXRpdmUgdG8KQEAgLTU3NCwxMyArNTc0 LDEzIEBAIHNwZ19ib3hfcXVhZF9pbm5lcl9jb25zaXN0ZW50KFBHX0ZVTkNUSU9OX0FSR1Mp CiAJewogCQkvKiBSZXBvcnQgdGhhdCBhbGwgbm9kZXMgc2hvdWxkIGJlIHZpc2l0ZWQgKi8K IAkJb3V0LT5uTm9kZXMgPSBpbi0+bk5vZGVzOwotCQlvdXQtPm5vZGVOdW1iZXJzID0gKGlu dCAqKSBwYWxsb2Moc2l6ZW9mKGludCkgKiBpbi0+bk5vZGVzKTsKKwkJb3V0LT5ub2RlTnVt YmVycyA9IHBhbGxvY19hcnJheShpbnQsIGluLT5uTm9kZXMpOwogCQlmb3IgKGkgPSAwOyBp IDwgaW4tPm5Ob2RlczsgaSsrKQogCQkJb3V0LT5ub2RlTnVtYmVyc1tpXSA9IGk7CiAKIAkJ aWYgKGluLT5ub3JkZXJieXMgPiAwICYmIGluLT5uTm9kZXMgPiAwKQogCQl7Ci0JCQlkb3Vi bGUJICAgKmRpc3RhbmNlcyA9IHBhbGxvYyhzaXplb2YoZG91YmxlKSAqIGluLT5ub3JkZXJi eXMpOworCQkJZG91YmxlCSAgICpkaXN0YW5jZXMgPSBwYWxsb2NfYXJyYXkoZG91YmxlLCBp bi0+bm9yZGVyYnlzKTsKIAkJCWludAkJCWo7CiAKIAkJCWZvciAoaiA9IDA7IGogPCBpbi0+ bm9yZGVyYnlzOyBqKyspCkBAIC01OTAsMTIgKzU5MCwxMiBAQCBzcGdfYm94X3F1YWRfaW5u ZXJfY29uc2lzdGVudChQR19GVU5DVElPTl9BUkdTKQogCQkJCWRpc3RhbmNlc1tqXSA9IHBv aW50VG9SZWN0Qm94RGlzdGFuY2UocHQsIHJlY3RfYm94KTsKIAkJCX0KIAotCQkJb3V0LT5k aXN0YW5jZXMgPSAoZG91YmxlICoqKSBwYWxsb2Moc2l6ZW9mKGRvdWJsZSAqKSAqIGluLT5u Tm9kZXMpOworCQkJb3V0LT5kaXN0YW5jZXMgPSBwYWxsb2NfYXJyYXkoZG91YmxlICosIGlu LT5uTm9kZXMpOwogCQkJb3V0LT5kaXN0YW5jZXNbMF0gPSBkaXN0YW5jZXM7CiAKIAkJCWZv ciAoaSA9IDE7IGkgPCBpbi0+bk5vZGVzOyBpKyspCiAJCQl7Ci0JCQkJb3V0LT5kaXN0YW5j ZXNbaV0gPSBwYWxsb2Moc2l6ZW9mKGRvdWJsZSkgKiBpbi0+bm9yZGVyYnlzKTsKKwkJCQlv dXQtPmRpc3RhbmNlc1tpXSA9IHBhbGxvY19hcnJheShkb3VibGUsIGluLT5ub3JkZXJieXMp OwogCQkJCW1lbWNweShvdXQtPmRpc3RhbmNlc1tpXSwgZGlzdGFuY2VzLAogCQkJCQkgICBz aXplb2YoZG91YmxlKSAqIGluLT5ub3JkZXJieXMpOwogCQkJfQpAQCAtNjA5LDcgKzYwOSw3 IEBAIHNwZ19ib3hfcXVhZF9pbm5lcl9jb25zaXN0ZW50KFBHX0ZVTkNUSU9OX0FSR1MpCiAJ ICogZm9sbG93aW5nIG9wZXJhdGlvbnMuCiAJICovCiAJY2VudHJvaWQgPSBnZXRSYW5nZUJv eChEYXR1bUdldEJveFAoaW4tPnByZWZpeERhdHVtKSk7Ci0JcXVlcmllcyA9IChSYW5nZUJv eCAqKikgcGFsbG9jKGluLT5ua2V5cyAqIHNpemVvZihSYW5nZUJveCAqKSk7CisJcXVlcmll cyA9IHBhbGxvY19hcnJheShSYW5nZUJveCAqLCBpbi0+bmtleXMpOwogCWZvciAoaSA9IDA7 IGkgPCBpbi0+bmtleXM7IGkrKykKIAl7CiAJCUJPWAkJICAgKmJveCA9IHNwZ19ib3hfcXVh ZF9nZXRfc2NhbmtleV9iYm94KCZpbi0+c2NhbmtleXNbaV0sIE5VTEwpOwpAQCAtNjE5LDEw ICs2MTksMTAgQEAgc3BnX2JveF9xdWFkX2lubmVyX2NvbnNpc3RlbnQoUEdfRlVOQ1RJT05f QVJHUykKIAogCS8qIEFsbG9jYXRlIGVub3VnaCBtZW1vcnkgZm9yIG5vZGVzICovCiAJb3V0 LT5uTm9kZXMgPSAwOwotCW91dC0+bm9kZU51bWJlcnMgPSAoaW50ICopIHBhbGxvYyhzaXpl b2YoaW50KSAqIGluLT5uTm9kZXMpOwotCW91dC0+dHJhdmVyc2FsVmFsdWVzID0gKHZvaWQg KiopIHBhbGxvYyhzaXplb2Yodm9pZCAqKSAqIGluLT5uTm9kZXMpOworCW91dC0+bm9kZU51 bWJlcnMgPSBwYWxsb2NfYXJyYXkoaW50LCBpbi0+bk5vZGVzKTsKKwlvdXQtPnRyYXZlcnNh bFZhbHVlcyA9IHBhbGxvY19hcnJheSh2b2lkICosIGluLT5uTm9kZXMpOwogCWlmIChpbi0+ bm9yZGVyYnlzID4gMCkKLQkJb3V0LT5kaXN0YW5jZXMgPSAoZG91YmxlICoqKSBwYWxsb2Mo c2l6ZW9mKGRvdWJsZSAqKSAqIGluLT5uTm9kZXMpOworCQlvdXQtPmRpc3RhbmNlcyA9IHBh bGxvY19hcnJheShkb3VibGUgKiwgaW4tPm5Ob2Rlcyk7CiAKIAkvKgogCSAqIFdlIHN3aXRj aCBtZW1vcnkgY29udGV4dCwgYmVjYXVzZSB3ZSB3YW50IHRvIGFsbG9jYXRlIG1lbW9yeSBm b3IgbmV3CkBAIC03MDMsNyArNzAzLDcgQEAgc3BnX2JveF9xdWFkX2lubmVyX2NvbnNpc3Rl bnQoUEdfRlVOQ1RJT05fQVJHUykKIAogCQkJaWYgKGluLT5ub3JkZXJieXMgPiAwKQogCQkJ ewotCQkJCWRvdWJsZQkgICAqZGlzdGFuY2VzID0gcGFsbG9jKHNpemVvZihkb3VibGUpICog aW4tPm5vcmRlcmJ5cyk7CisJCQkJZG91YmxlCSAgICpkaXN0YW5jZXMgPSBwYWxsb2NfYXJy YXkoZG91YmxlLCBpbi0+bm9yZGVyYnlzKTsKIAkJCQlpbnQJCQlqOwogCiAJCQkJb3V0LT5k aXN0YW5jZXNbb3V0LT5uTm9kZXNdID0gZGlzdGFuY2VzOwpAQCAtODc4LDcgKzg3OCw3IEBA IHNwZ19wb2x5X3F1YWRfY29tcHJlc3MoUEdfRlVOQ1RJT05fQVJHUykKIAlQT0xZR09OICAg ICpwb2x5Z29uID0gUEdfR0VUQVJHX1BPTFlHT05fUCgwKTsKIAlCT1gJCSAgICpib3g7CiAK LQlib3ggPSAoQk9YICopIHBhbGxvYyhzaXplb2YoQk9YKSk7CisJYm94ID0gcGFsbG9jX29i amVjdChCT1gpOwogCSpib3ggPSBwb2x5Z29uLT5ib3VuZGJveDsKIAogCVBHX1JFVFVSTl9C T1hfUChib3gpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2ludC5jIGIv c3JjL2JhY2tlbmQvdXRpbHMvYWR0L2ludC5jCmluZGV4IGI1NzgxOTg5YTY0Li42MDQxMWVl MDI0ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2ludC5jCisrKyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL2FkdC9pbnQuYwpAQCAtMTUzNyw3ICsxNTM3LDcgQEAgZ2VuZXJh dGVfc2VyaWVzX3N0ZXBfaW50NChQR19GVU5DVElPTl9BUkdTKQogCQlvbGRjb250ZXh0ID0g TWVtb3J5Q29udGV4dFN3aXRjaFRvKGZ1bmNjdHgtPm11bHRpX2NhbGxfbWVtb3J5X2N0eCk7 CiAKIAkJLyogYWxsb2NhdGUgbWVtb3J5IGZvciB1c2VyIGNvbnRleHQgKi8KLQkJZmN0eCA9 IChnZW5lcmF0ZV9zZXJpZXNfZmN0eCAqKSBwYWxsb2Moc2l6ZW9mKGdlbmVyYXRlX3Nlcmll c19mY3R4KSk7CisJCWZjdHggPSBwYWxsb2Nfb2JqZWN0KGdlbmVyYXRlX3Nlcmllc19mY3R4 KTsKIAogCQkvKgogCQkgKiBVc2UgZmN0eCB0byBrZWVwIHN0YXRlIGZyb20gY2FsbCB0byBj YWxsLiBTZWVkIGN1cnJlbnQgd2l0aCB0aGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0 aWxzL2FkdC9pbnQ4LmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvaW50OC5jCmluZGV4IGJk ZWE0OTAyMDJhLi4xOGI3ZTllOGI2YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMv YWR0L2ludDguYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvaW50OC5jCkBAIC0xMzY0 LDcgKzEzNjQsNyBAQCBnZW5lcmF0ZV9zZXJpZXNfc3RlcF9pbnQ4KFBHX0ZVTkNUSU9OX0FS R1MpCiAJCW9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oZnVuY2N0eC0+bXVs dGlfY2FsbF9tZW1vcnlfY3R4KTsKIAogCQkvKiBhbGxvY2F0ZSBtZW1vcnkgZm9yIHVzZXIg Y29udGV4dCAqLwotCQlmY3R4ID0gKGdlbmVyYXRlX3Nlcmllc19mY3R4ICopIHBhbGxvYyhz aXplb2YoZ2VuZXJhdGVfc2VyaWVzX2ZjdHgpKTsKKwkJZmN0eCA9IHBhbGxvY19vYmplY3Qo Z2VuZXJhdGVfc2VyaWVzX2ZjdHgpOwogCiAJCS8qCiAJCSAqIFVzZSBmY3R4IHRvIGtlZXAg c3RhdGUgZnJvbSBjYWxsIHRvIGNhbGwuIFNlZWQgY3VycmVudCB3aXRoIHRoZQpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb24uYyBiL3NyYy9iYWNrZW5kL3V0aWxz L2FkdC9qc29uLmMKaW5kZXggMDZkZDYyZjAwMDguLjczY2FjZjMzZTYxIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbi5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxz L2FkdC9qc29uLmMKQEAgLTgwNyw3ICs4MDcsNyBAQCBqc29uX2FnZ190cmFuc2ZuX3dvcmtl cihGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbywgYm9vbCBhYnNlbnRfb25fbnVsbCkKIAkJICog dXNlIHRoZSByaWdodCBjb250ZXh0IHRvIGVubGFyZ2UgdGhlIG9iamVjdCBpZiBuZWNlc3Nh cnkuCiAJCSAqLwogCQlvbGRjb250ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKGFnZ2Nv bnRleHQpOwotCQlzdGF0ZSA9IChKc29uQWdnU3RhdGUgKikgcGFsbG9jKHNpemVvZihKc29u QWdnU3RhdGUpKTsKKwkJc3RhdGUgPSBwYWxsb2Nfb2JqZWN0KEpzb25BZ2dTdGF0ZSk7CiAJ CXN0YXRlLT5zdHIgPSBtYWtlU3RyaW5nSW5mbygpOwogCQlNZW1vcnlDb250ZXh0U3dpdGNo VG8ob2xkY29udGV4dCk7CiAKQEAgLTEwMjksNyArMTAyOSw3IEBAIGpzb25fb2JqZWN0X2Fn Z190cmFuc2ZuX3dvcmtlcihGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbywKIAkJICogc3VyZSB0 aGV5IHVzZSB0aGUgcmlnaHQgY29udGV4dCB0byBlbmxhcmdlIHRoZSBvYmplY3QgaWYgbmVj ZXNzYXJ5LgogCQkgKi8KIAkJb2xkY29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhh Z2djb250ZXh0KTsKLQkJc3RhdGUgPSAoSnNvbkFnZ1N0YXRlICopIHBhbGxvYyhzaXplb2Yo SnNvbkFnZ1N0YXRlKSk7CisJCXN0YXRlID0gcGFsbG9jX29iamVjdChKc29uQWdnU3RhdGUp OwogCQlzdGF0ZS0+c3RyID0gbWFrZVN0cmluZ0luZm8oKTsKIAkJaWYgKHVuaXF1ZV9rZXlz KQogCQkJanNvbl91bmlxdWVfYnVpbGRlcl9pbml0KCZzdGF0ZS0+dW5pcXVlX2NoZWNrKTsK QEAgLTE3NjIsNyArMTc2Miw3IEBAIGpzb25fdW5pcXVlX29iamVjdF9zdGFydCh2b2lkICpf c3RhdGUpCiAJCXJldHVybiBKU09OX1NVQ0NFU1M7CiAKIAkvKiBwdXNoIG9iamVjdCBlbnRy eSB0byBzdGFjayAqLwotCWVudHJ5ID0gcGFsbG9jKHNpemVvZigqZW50cnkpKTsKKwllbnRy eSA9IHBhbGxvY19vYmplY3QoSnNvblVuaXF1ZVN0YWNrRW50cnkpOwogCWVudHJ5LT5vYmpl Y3RfaWQgPSBzdGF0ZS0+aWRfY291bnRlcisrOwogCWVudHJ5LT5wYXJlbnQgPSBzdGF0ZS0+ c3RhY2s7CiAJc3RhdGUtPnN0YWNrID0gZW50cnk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC91dGlscy9hZHQvanNvbmIuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uYi5jCmlu ZGV4IDkzOTljZGI0OTFhLi4xY2M2NTBlNzE3YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L2pzb25iLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25iLmMK QEAgLTE0NzgsNyArMTQ3OCw3IEBAIGNsb25lX3BhcnNlX3N0YXRlKEpzb25iUGFyc2VTdGF0 ZSAqc3RhdGUpCiAJaWYgKHN0YXRlID09IE5VTEwpCiAJCXJldHVybiBOVUxMOwogCi0JcmVz dWx0ID0gcGFsbG9jKHNpemVvZihKc29uYlBhcnNlU3RhdGUpKTsKKwlyZXN1bHQgPSBwYWxs b2Nfb2JqZWN0KEpzb25iUGFyc2VTdGF0ZSk7CiAJaWN1cnNvciA9IHN0YXRlOwogCW9jdXJz b3IgPSByZXN1bHQ7CiAJZm9yICg7OykKQEAgLTE0OTAsNyArMTQ5MCw3IEBAIGNsb25lX3Bh cnNlX3N0YXRlKEpzb25iUGFyc2VTdGF0ZSAqc3RhdGUpCiAJCWljdXJzb3IgPSBpY3Vyc29y LT5uZXh0OwogCQlpZiAoaWN1cnNvciA9PSBOVUxMKQogCQkJYnJlYWs7Ci0JCW9jdXJzb3It Pm5leHQgPSBwYWxsb2Moc2l6ZW9mKEpzb25iUGFyc2VTdGF0ZSkpOworCQlvY3Vyc29yLT5u ZXh0ID0gcGFsbG9jX29iamVjdChKc29uYlBhcnNlU3RhdGUpOwogCQlvY3Vyc29yID0gb2N1 cnNvci0+bmV4dDsKIAl9CiAJb2N1cnNvci0+bmV4dCA9IE5VTEw7CkBAIC0xNTMxLDggKzE1 MzEsOCBAQCBqc29uYl9hZ2dfdHJhbnNmbl93b3JrZXIoRnVuY3Rpb25DYWxsSW5mbyBmY2lu Zm8sIGJvb2wgYWJzZW50X29uX251bGwpCiAJCQkJCSBlcnJtc2coImNvdWxkIG5vdCBkZXRl cm1pbmUgaW5wdXQgZGF0YSB0eXBlIikpKTsKIAogCQlvbGRjb250ZXh0ID0gTWVtb3J5Q29u dGV4dFN3aXRjaFRvKGFnZ2NvbnRleHQpOwotCQlzdGF0ZSA9IHBhbGxvYyhzaXplb2YoSnNv bmJBZ2dTdGF0ZSkpOwotCQlyZXN1bHQgPSBwYWxsb2MwKHNpemVvZihKc29uYkluU3RhdGUp KTsKKwkJc3RhdGUgPSBwYWxsb2Nfb2JqZWN0KEpzb25iQWdnU3RhdGUpOworCQlyZXN1bHQg PSBwYWxsb2MwX29iamVjdChKc29uYkluU3RhdGUpOwogCQlzdGF0ZS0+cmVzID0gcmVzdWx0 OwogCQlyZXN1bHQtPnJlcyA9IHB1c2hKc29uYlZhbHVlKCZyZXN1bHQtPnBhcnNlU3RhdGUs CiAJCQkJCQkJCQkgV0pCX0JFR0lOX0FSUkFZLCBOVUxMKTsKQEAgLTE3MDEsOCArMTcwMSw4 IEBAIGpzb25iX29iamVjdF9hZ2dfdHJhbnNmbl93b3JrZXIoRnVuY3Rpb25DYWxsSW5mbyBm Y2luZm8sCiAJCU9pZAkJCWFyZ190eXBlOwogCiAJCW9sZGNvbnRleHQgPSBNZW1vcnlDb250 ZXh0U3dpdGNoVG8oYWdnY29udGV4dCk7Ci0JCXN0YXRlID0gcGFsbG9jKHNpemVvZihKc29u YkFnZ1N0YXRlKSk7Ci0JCXJlc3VsdCA9IHBhbGxvYzAoc2l6ZW9mKEpzb25iSW5TdGF0ZSkp OworCQlzdGF0ZSA9IHBhbGxvY19vYmplY3QoSnNvbmJBZ2dTdGF0ZSk7CisJCXJlc3VsdCA9 IHBhbGxvYzBfb2JqZWN0KEpzb25iSW5TdGF0ZSk7CiAJCXN0YXRlLT5yZXMgPSByZXN1bHQ7 CiAJCXJlc3VsdC0+cmVzID0gcHVzaEpzb25iVmFsdWUoJnJlc3VsdC0+cGFyc2VTdGF0ZSwK IAkJCQkJCQkJCSBXSkJfQkVHSU5fT0JKRUNULCBOVUxMKTsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3V0aWxzL2FkdC9qc29uYl9naW4uYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9q c29uYl9naW4uYwppbmRleCA5YjU2MjQ4Y2YwYi4uMjE5MDA5MmIxNGYgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uYl9naW4uYworKysgYi9zcmMvYmFja2VuZC91 dGlscy9hZHQvanNvbmJfZ2luLmMKQEAgLTE2Myw3ICsxNjMsNyBAQCBzdGF0aWMgdm9pZAog aW5pdF9naW5fZW50cmllcyhHaW5FbnRyaWVzICplbnRyaWVzLCBpbnQgcHJlYWxsb2NhdGVk KQogewogCWVudHJpZXMtPmFsbG9jYXRlZCA9IHByZWFsbG9jYXRlZDsKLQllbnRyaWVzLT5i dWYgPSBwcmVhbGxvY2F0ZWQgPyBwYWxsb2Moc2l6ZW9mKERhdHVtKSAqIHByZWFsbG9jYXRl ZCkgOiBOVUxMOworCWVudHJpZXMtPmJ1ZiA9IHByZWFsbG9jYXRlZCA/IHBhbGxvY19hcnJh eShEYXR1bSwgcHJlYWxsb2NhdGVkKSA6IE5VTEw7CiAJZW50cmllcy0+Y291bnQgPSAwOwog fQogCkBAIC0xNzgsMTMgKzE3OCwxNCBAQCBhZGRfZ2luX2VudHJ5KEdpbkVudHJpZXMgKmVu dHJpZXMsIERhdHVtIGVudHJ5KQogCQlpZiAoZW50cmllcy0+YWxsb2NhdGVkKQogCQl7CiAJ CQllbnRyaWVzLT5hbGxvY2F0ZWQgKj0gMjsKLQkJCWVudHJpZXMtPmJ1ZiA9IHJlcGFsbG9j KGVudHJpZXMtPmJ1ZiwKLQkJCQkJCQkJCXNpemVvZihEYXR1bSkgKiBlbnRyaWVzLT5hbGxv Y2F0ZWQpOworCQkJZW50cmllcy0+YnVmID0gcmVwYWxsb2NfYXJyYXkoZW50cmllcy0+YnVm LAorCQkJCQkJCQkJCSBEYXR1bSwKKwkJCQkJCQkJCQkgZW50cmllcy0+YWxsb2NhdGVkKTsK IAkJfQogCQllbHNlCiAJCXsKIAkJCWVudHJpZXMtPmFsbG9jYXRlZCA9IDg7Ci0JCQllbnRy aWVzLT5idWYgPSBwYWxsb2Moc2l6ZW9mKERhdHVtKSAqIGVudHJpZXMtPmFsbG9jYXRlZCk7 CisJCQllbnRyaWVzLT5idWYgPSBwYWxsb2NfYXJyYXkoRGF0dW0sIGVudHJpZXMtPmFsbG9j YXRlZCk7CiAJCX0KIAl9CiAKQEAgLTMwNyw3ICszMDgsNyBAQCBqc29uYl9vcHNfX2FkZF9w YXRoX2l0ZW0oSnNvblBhdGhHaW5QYXRoICpwYXRoLCBKc29uUGF0aEl0ZW0gKmpzcCkKIAkJ CXJldHVybiBmYWxzZTsKIAl9CiAKLQlwZW50cnkgPSBwYWxsb2Moc2l6ZW9mKCpwZW50cnkp KTsKKwlwZW50cnkgPSBwYWxsb2Nfb2JqZWN0KEpzb25QYXRoR2luUGF0aEl0ZW0pOwogCiAJ cGVudHJ5LT50eXBlID0ganNwLT50eXBlOwogCXBlbnRyeS0+a2V5TmFtZSA9IGtleU5hbWU7 CkBAIC03ODUsNyArNzg2LDcgQEAgZXh0cmFjdF9qc3BfcXVlcnkoSnNvblBhdGggKmpwLCBT dHJhdGVneU51bWJlciBzdHJhdCwgYm9vbCBwYXRoT3BzLAogCWlmICghKm5lbnRyaWVzKQog CQlyZXR1cm4gTlVMTDsKIAotCSpleHRyYV9kYXRhID0gcGFsbG9jMChzaXplb2YoKipleHRy YV9kYXRhKSAqIGVudHJpZXMuY291bnQpOworCSpleHRyYV9kYXRhID0gcGFsbG9jMF9hcnJh eShQb2ludGVyLCBlbnRyaWVzLmNvdW50KTsKIAkqKmV4dHJhX2RhdGEgPSAoUG9pbnRlcikg bm9kZTsKIAogCXJldHVybiBlbnRyaWVzLmJ1ZjsKQEAgLTg2OSw3ICs4NzAsNyBAQCBnaW5f ZXh0cmFjdF9qc29uYl9xdWVyeShQR19GVU5DVElPTl9BUkdTKQogCQl0ZXh0CSAgICpxdWVy eSA9IFBHX0dFVEFSR19URVhUX1BQKDApOwogCiAJCSpuZW50cmllcyA9IDE7Ci0JCWVudHJp ZXMgPSAoRGF0dW0gKikgcGFsbG9jKHNpemVvZihEYXR1bSkpOworCQllbnRyaWVzID0gcGFs bG9jX29iamVjdChEYXR1bSk7CiAJCWVudHJpZXNbMF0gPSBtYWtlX3RleHRfa2V5KEpHSU5G TEFHX0tFWSwKIAkJCQkJCQkJICAgVkFSREFUQV9BTlkocXVlcnkpLAogCQkJCQkJCQkgICBW QVJTSVpFX0FOWV9FWEhEUihxdWVyeSkpOwpAQCAtODg3LDcgKzg4OCw3IEBAIGdpbl9leHRy YWN0X2pzb25iX3F1ZXJ5KFBHX0ZVTkNUSU9OX0FSR1MpCiAKIAkJZGVjb25zdHJ1Y3RfYXJy YXlfYnVpbHRpbihxdWVyeSwgVEVYVE9JRCwgJmtleV9kYXR1bXMsICZrZXlfbnVsbHMsICZr ZXlfY291bnQpOwogCi0JCWVudHJpZXMgPSAoRGF0dW0gKikgcGFsbG9jKHNpemVvZihEYXR1 bSkgKiBrZXlfY291bnQpOworCQllbnRyaWVzID0gcGFsbG9jX2FycmF5KERhdHVtLCBrZXlf Y291bnQpOwogCiAJCWZvciAoaSA9IDAsIGogPSAwOyBpIDwga2V5X2NvdW50OyBpKyspCiAJ CXsKQEAgLTExMjYsNyArMTEyNyw3IEBAIGdpbl9leHRyYWN0X2pzb25iX3BhdGgoUEdfRlVO Q1RJT05fQVJHUykKIAkJCWNhc2UgV0pCX0JFR0lOX09CSkVDVDoKIAkJCQkvKiBQdXNoIGEg c3RhY2sgbGV2ZWwgZm9yIHRoaXMgb2JqZWN0ICovCiAJCQkJcGFyZW50ID0gc3RhY2s7Ci0J CQkJc3RhY2sgPSAoUGF0aEhhc2hTdGFjayAqKSBwYWxsb2Moc2l6ZW9mKFBhdGhIYXNoU3Rh Y2spKTsKKwkJCQlzdGFjayA9IHBhbGxvY19vYmplY3QoUGF0aEhhc2hTdGFjayk7CiAKIAkJ CQkvKgogCQkJCSAqIFdlIHBhc3MgZm9yd2FyZCBoYXNoZXMgZnJvbSBvdXRlciBuZXN0aW5n IGxldmVscyBzbyB0aGF0CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvanNv bmJfdXRpbC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25iX3V0aWwuYwppbmRleCA4 MmI4MDdkMDY3YS4uNzE0YjA3YTU1NTUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxz L2FkdC9qc29uYl91dGlsLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25iX3V0 aWwuYwpAQCAtMzU2LDcgKzM1Niw3IEBAIGZpbmRKc29uYlZhbHVlRnJvbUNvbnRhaW5lcihK c29uYkNvbnRhaW5lciAqY29udGFpbmVyLCB1aW50MzIgZmxhZ3MsCiAKIAlpZiAoKGZsYWdz ICYgSkJfRkFSUkFZKSAmJiBKc29uQ29udGFpbmVySXNBcnJheShjb250YWluZXIpKQogCXsK LQkJSnNvbmJWYWx1ZSAqcmVzdWx0ID0gcGFsbG9jKHNpemVvZihKc29uYlZhbHVlKSk7CisJ CUpzb25iVmFsdWUgKnJlc3VsdCA9IHBhbGxvY19vYmplY3QoSnNvbmJWYWx1ZSk7CiAJCWNo YXIJICAgKmJhc2VfYWRkciA9IChjaGFyICopIChjaGlsZHJlbiArIGNvdW50KTsKIAkJdWlu dDMyCQlvZmZzZXQgPSAwOwogCQlpbnQJCQlpOwpAQCAtNDM5LDcgKzQzOSw3IEBAIGdldEtl eUpzb25WYWx1ZUZyb21Db250YWluZXIoSnNvbmJDb250YWluZXIgKmNvbnRhaW5lciwKIAkJ CWludAkJCWluZGV4ID0gc3RvcE1pZGRsZSArIGNvdW50OwogCiAJCQlpZiAoIXJlcykKLQkJ CQlyZXMgPSBwYWxsb2Moc2l6ZW9mKEpzb25iVmFsdWUpKTsKKwkJCQlyZXMgPSBwYWxsb2Nf b2JqZWN0KEpzb25iVmFsdWUpOwogCiAJCQlmaWxsSnNvbmJWYWx1ZShjb250YWluZXIsIGlu ZGV4LCBiYXNlQWRkciwKIAkJCQkJCSAgIGdldEpzb25iT2Zmc2V0KGNvbnRhaW5lciwgaW5k ZXgpLApAQCAtNDgxLDcgKzQ4MSw3IEBAIGdldEl0aEpzb25iVmFsdWVGcm9tQ29udGFpbmVy KEpzb25iQ29udGFpbmVyICpjb250YWluZXIsIHVpbnQzMiBpKQogCWlmIChpID49IG5lbGVt ZW50cykKIAkJcmV0dXJuIE5VTEw7CiAKLQlyZXN1bHQgPSBwYWxsb2Moc2l6ZW9mKEpzb25i VmFsdWUpKTsKKwlyZXN1bHQgPSBwYWxsb2Nfb2JqZWN0KEpzb25iVmFsdWUpOwogCiAJZmls bEpzb25iVmFsdWUoY29udGFpbmVyLCBpLCBiYXNlX2FkZHIsCiAJCQkJICAgZ2V0SnNvbmJP ZmZzZXQoY29udGFpbmVyLCBpKSwKQEAgLTY2Myw4ICs2NjMsOCBAQCBwdXNoSnNvbmJWYWx1 ZVNjYWxhcihKc29uYlBhcnNlU3RhdGUgKipwc3RhdGUsIEpzb25iSXRlcmF0b3JUb2tlbiBz ZXEsCiAJCQl7CiAJCQkJKCpwc3RhdGUpLT5zaXplID0gNDsKIAkJCX0KLQkJCSgqcHN0YXRl KS0+Y29udFZhbC52YWwuYXJyYXkuZWxlbXMgPSBwYWxsb2Moc2l6ZW9mKEpzb25iVmFsdWUp ICoKLQkJCQkJCQkJCQkJCQkJKCpwc3RhdGUpLT5zaXplKTsKKwkJCSgqcHN0YXRlKS0+Y29u dFZhbC52YWwuYXJyYXkuZWxlbXMgPSBwYWxsb2NfYXJyYXkoSnNvbmJWYWx1ZSwKKwkJCQkJ CQkJCQkJCQkJCSgqcHN0YXRlKS0+c2l6ZSk7CiAJCQlicmVhazsKIAkJY2FzZSBXSkJfQkVH SU5fT0JKRUNUOgogCQkJQXNzZXJ0KCFzY2FsYXJWYWwpOwpAQCAtNjczLDggKzY3Myw4IEBA IHB1c2hKc29uYlZhbHVlU2NhbGFyKEpzb25iUGFyc2VTdGF0ZSAqKnBzdGF0ZSwgSnNvbmJJ dGVyYXRvclRva2VuIHNlcSwKIAkJCSgqcHN0YXRlKS0+Y29udFZhbC50eXBlID0gamJ2T2Jq ZWN0OwogCQkJKCpwc3RhdGUpLT5jb250VmFsLnZhbC5vYmplY3QublBhaXJzID0gMDsKIAkJ CSgqcHN0YXRlKS0+c2l6ZSA9IDQ7Ci0JCQkoKnBzdGF0ZSktPmNvbnRWYWwudmFsLm9iamVj dC5wYWlycyA9IHBhbGxvYyhzaXplb2YoSnNvbmJQYWlyKSAqCi0JCQkJCQkJCQkJCQkJCSAo KnBzdGF0ZSktPnNpemUpOworCQkJKCpwc3RhdGUpLT5jb250VmFsLnZhbC5vYmplY3QucGFp cnMgPSBwYWxsb2NfYXJyYXkoSnNvbmJQYWlyLAorCQkJCQkJCQkJCQkJCQkJCSAoKnBzdGF0 ZSktPnNpemUpOwogCQkJYnJlYWs7CiAJCWNhc2UgV0pCX0tFWToKIAkJCUFzc2VydChzY2Fs YXJWYWwtPnR5cGUgPT0gamJ2U3RyaW5nKTsKQEAgLTczMSw3ICs3MzEsNyBAQCBwdXNoSnNv bmJWYWx1ZVNjYWxhcihKc29uYlBhcnNlU3RhdGUgKipwc3RhdGUsIEpzb25iSXRlcmF0b3JU b2tlbiBzZXEsCiBzdGF0aWMgSnNvbmJQYXJzZVN0YXRlICoKIHB1c2hTdGF0ZShKc29uYlBh cnNlU3RhdGUgKipwc3RhdGUpCiB7Ci0JSnNvbmJQYXJzZVN0YXRlICpucyA9IHBhbGxvYyhz aXplb2YoSnNvbmJQYXJzZVN0YXRlKSk7CisJSnNvbmJQYXJzZVN0YXRlICpucyA9IHBhbGxv Y19vYmplY3QoSnNvbmJQYXJzZVN0YXRlKTsKIAogCW5zLT5uZXh0ID0gKnBzdGF0ZTsKIAlu cy0+dW5pcXVlX2tleXMgPSBmYWxzZTsKQEAgLTEwMTAsNyArMTAxMCw3IEBAIGl0ZXJhdG9y RnJvbUNvbnRhaW5lcihKc29uYkNvbnRhaW5lciAqY29udGFpbmVyLCBKc29uYkl0ZXJhdG9y ICpwYXJlbnQpCiB7CiAJSnNvbmJJdGVyYXRvciAqaXQ7CiAKLQlpdCA9IHBhbGxvYzAoc2l6 ZW9mKEpzb25iSXRlcmF0b3IpKTsKKwlpdCA9IHBhbGxvYzBfb2JqZWN0KEpzb25iSXRlcmF0 b3IpOwogCWl0LT5jb250YWluZXIgPSBjb250YWluZXI7CiAJaXQtPnBhcmVudCA9IHBhcmVu dDsKIAlpdC0+bkVsZW1zID0gSnNvbkNvbnRhaW5lclNpemUoY29udGFpbmVyKTsKQEAgLTEy NTYsNyArMTI1Niw3IEBAIEpzb25iRGVlcENvbnRhaW5zKEpzb25iSXRlcmF0b3IgKip2YWws IEpzb25iSXRlcmF0b3IgKiptQ29udGFpbmVkKQogCQkJCQl1aW50MzIJCWogPSAwOwogCiAJ CQkJCS8qIE1ha2Ugcm9vbSBmb3IgYWxsIHBvc3NpYmxlIHZhbHVlcyAqLwotCQkJCQlsaHND b250cyA9IHBhbGxvYyhzaXplb2YoSnNvbmJWYWx1ZSkgKiBuTGhzRWxlbXMpOworCQkJCQls aHNDb250cyA9IHBhbGxvY19hcnJheShKc29uYlZhbHVlLCBuTGhzRWxlbXMpOwogCiAJCQkJ CWZvciAoaSA9IDA7IGkgPCBuTGhzRWxlbXM7IGkrKykKIAkJCQkJewpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25mdW5jcy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMv YWR0L2pzb25mdW5jcy5jCmluZGV4IDg4OThmMGY5MGExLi4zZTEyMmRhYjkzNCAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25mdW5jcy5jCisrKyBiL3NyYy9iYWNr ZW5kL3V0aWxzL2FkdC9qc29uZnVuY3MuYwpAQCAtNTkzLDEyICs1OTMsMTIgQEAganNvbmJf b2JqZWN0X2tleXMoUEdfRlVOQ1RJT05fQVJHUykKIAkJZnVuY2N0eCA9IFNSRl9GSVJTVENB TExfSU5JVCgpOwogCQlvbGRjb250ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKGZ1bmNj dHgtPm11bHRpX2NhbGxfbWVtb3J5X2N0eCk7CiAKLQkJc3RhdGUgPSBwYWxsb2Moc2l6ZW9m KE9rZXlzU3RhdGUpKTsKKwkJc3RhdGUgPSBwYWxsb2Nfb2JqZWN0KE9rZXlzU3RhdGUpOwog CiAJCXN0YXRlLT5yZXN1bHRfc2l6ZSA9IEpCX1JPT1RfQ09VTlQoamIpOwogCQlzdGF0ZS0+ cmVzdWx0X2NvdW50ID0gMDsKIAkJc3RhdGUtPnNlbnRfY291bnQgPSAwOwotCQlzdGF0ZS0+ cmVzdWx0ID0gcGFsbG9jKHN0YXRlLT5yZXN1bHRfc2l6ZSAqIHNpemVvZihjaGFyICopKTsK KwkJc3RhdGUtPnJlc3VsdCA9IHBhbGxvY19hcnJheShjaGFyICosIHN0YXRlLT5yZXN1bHRf c2l6ZSk7CiAKIAkJaXQgPSBKc29uYkl0ZXJhdG9ySW5pdCgmamItPnJvb3QpOwogCkBAIC03 NDQsMTQgKzc0NCwxNCBAQCBqc29uX29iamVjdF9rZXlzKFBHX0ZVTkNUSU9OX0FSR1MpCiAJ CWZ1bmNjdHggPSBTUkZfRklSU1RDQUxMX0lOSVQoKTsKIAkJb2xkY29udGV4dCA9IE1lbW9y eUNvbnRleHRTd2l0Y2hUbyhmdW5jY3R4LT5tdWx0aV9jYWxsX21lbW9yeV9jdHgpOwogCi0J CXN0YXRlID0gcGFsbG9jKHNpemVvZihPa2V5c1N0YXRlKSk7Ci0JCXNlbSA9IHBhbGxvYzAo c2l6ZW9mKEpzb25TZW1BY3Rpb24pKTsKKwkJc3RhdGUgPSBwYWxsb2Nfb2JqZWN0KE9rZXlz U3RhdGUpOworCQlzZW0gPSBwYWxsb2MwX29iamVjdChKc29uU2VtQWN0aW9uKTsKIAogCQlz dGF0ZS0+bGV4ID0gbWFrZUpzb25MZXhDb250ZXh0KCZsZXgsIGpzb24sIHRydWUpOwogCQlz dGF0ZS0+cmVzdWx0X3NpemUgPSAyNTY7CiAJCXN0YXRlLT5yZXN1bHRfY291bnQgPSAwOwog CQlzdGF0ZS0+c2VudF9jb3VudCA9IDA7Ci0JCXN0YXRlLT5yZXN1bHQgPSBwYWxsb2MoMjU2 ICogc2l6ZW9mKGNoYXIgKikpOworCQlzdGF0ZS0+cmVzdWx0ID0gcGFsbG9jX2FycmF5KGNo YXIgKiwgMjU2KTsKIAogCQlzZW0tPnNlbXN0YXRlID0gc3RhdGU7CiAJCXNlbS0+YXJyYXlf c3RhcnQgPSBva2V5c19hcnJheV9zdGFydDsKQEAgLTEwNDUsOCArMTA0NSw4IEBAIGdldF9w YXRoX2FsbChGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbywgYm9vbCBhc190ZXh0KQogCiAJZGVj b25zdHJ1Y3RfYXJyYXlfYnVpbHRpbihwYXRoLCBURVhUT0lELCAmcGF0aHRleHQsICZwYXRo bnVsbHMsICZucGF0aCk7CiAKLQl0cGF0aCA9IHBhbGxvYyhucGF0aCAqIHNpemVvZihjaGFy ICopKTsKLQlpcGF0aCA9IHBhbGxvYyhucGF0aCAqIHNpemVvZihpbnQpKTsKKwl0cGF0aCA9 IHBhbGxvY19hcnJheShjaGFyICosIG5wYXRoKTsKKwlpcGF0aCA9IHBhbGxvY19hcnJheShp bnQsIG5wYXRoKTsKIAogCWZvciAoaSA9IDA7IGkgPCBucGF0aDsgaSsrKQogCXsKQEAgLTEx MDYsOCArMTEwNiw4IEBAIGdldF93b3JrZXIodGV4dCAqanNvbiwKIAkJICAgaW50IG5wYXRo LAogCQkgICBib29sIG5vcm1hbGl6ZV9yZXN1bHRzKQogewotCUpzb25TZW1BY3Rpb24gKnNl bSA9IHBhbGxvYzAoc2l6ZW9mKEpzb25TZW1BY3Rpb24pKTsKLQlHZXRTdGF0ZSAgICpzdGF0 ZSA9IHBhbGxvYzAoc2l6ZW9mKEdldFN0YXRlKSk7CisJSnNvblNlbUFjdGlvbiAqc2VtID0g cGFsbG9jMF9vYmplY3QoSnNvblNlbUFjdGlvbik7CisJR2V0U3RhdGUgICAqc3RhdGUgPSBw YWxsb2MwX29iamVjdChHZXRTdGF0ZSk7CiAKIAlBc3NlcnQobnBhdGggPj0gMCk7CiAKQEAg LTExMTgsOCArMTExOCw4IEBAIGdldF93b3JrZXIodGV4dCAqanNvbiwKIAlzdGF0ZS0+bnBh dGggPSBucGF0aDsKIAlzdGF0ZS0+cGF0aF9uYW1lcyA9IHRwYXRoOwogCXN0YXRlLT5wYXRo X2luZGV4ZXMgPSBpcGF0aDsKLQlzdGF0ZS0+cGF0aG9rID0gcGFsbG9jMChzaXplb2YoYm9v bCkgKiBucGF0aCk7Ci0Jc3RhdGUtPmFycmF5X2N1cl9pbmRleCA9IHBhbGxvYyhzaXplb2Yo aW50KSAqIG5wYXRoKTsKKwlzdGF0ZS0+cGF0aG9rID0gcGFsbG9jMF9hcnJheShib29sLCBu cGF0aCk7CisJc3RhdGUtPmFycmF5X2N1cl9pbmRleCA9IHBhbGxvY19hcnJheShpbnQsIG5w YXRoKTsKIAogCWlmIChucGF0aCA+IDApCiAJCXN0YXRlLT5wYXRob2tbMF0gPSB0cnVlOwpA QCAtMTY4Miw3ICsxNjgyLDcgQEAganNvbmJfc2V0X2VsZW1lbnQoSnNvbmIgKmpiLCBjb25z dCBEYXR1bSAqcGF0aCwgaW50IHBhdGhfbGVuLAogCUpzb25iVmFsdWUgKnJlczsKIAlKc29u YlBhcnNlU3RhdGUgKnN0YXRlID0gTlVMTDsKIAlKc29uYkl0ZXJhdG9yICppdDsKLQlib29s CSAgICpwYXRoX251bGxzID0gcGFsbG9jMChwYXRoX2xlbiAqIHNpemVvZihib29sKSk7CisJ Ym9vbAkgICAqcGF0aF9udWxscyA9IHBhbGxvYzBfYXJyYXkoYm9vbCwgcGF0aF9sZW4pOwog CiAJaWYgKG5ld3ZhbC0+dHlwZSA9PSBqYnZBcnJheSAmJiBuZXd2YWwtPnZhbC5hcnJheS5y YXdTY2FsYXIpCiAJCSpuZXd2YWwgPSBuZXd2YWwtPnZhbC5hcnJheS5lbGVtc1swXTsKQEAg LTE3MjcsNyArMTcyNyw3IEBAIHB1c2hfcGF0aChKc29uYlBhcnNlU3RhdGUgKipzdCwgaW50 IGxldmVsLCBjb25zdCBEYXR1bSAqcGF0aF9lbGVtcywKIAkgKiBpdCBjb250YWlucyBvbmx5 IGluZm9ybWF0aW9uIGFib3V0IHBhdGggc2xpY2UgZnJvbSBsZXZlbCB0byB0aGUgZW5kLAog CSAqIHRoZSBhY2Nlc3MgaW5kZXggbXVzdCBiZSBub3JtYWxpemVkIGJ5IGxldmVsLgogCSAq LwotCWVudW0gamJ2VHlwZSAqdHBhdGggPSBwYWxsb2MwKChwYXRoX2xlbiAtIGxldmVsKSAq IHNpemVvZihlbnVtIGpidlR5cGUpKTsKKwllbnVtIGpidlR5cGUgKnRwYXRoID0gcGFsbG9j MF9hcnJheShlbnVtIGpidlR5cGUsIHBhdGhfbGVuIC0gbGV2ZWwpOwogCUpzb25iVmFsdWUJ bmV3a2V5OwogCiAJLyoKQEAgLTE4NTYsMTQgKzE4NTYsMTQgQEAganNvbl9hcnJheV9sZW5n dGgoUEdfRlVOQ1RJT05fQVJHUykKIAlKc29uTGV4Q29udGV4dCBsZXg7CiAJSnNvblNlbUFj dGlvbiAqc2VtOwogCi0Jc3RhdGUgPSBwYWxsb2MwKHNpemVvZihBbGVuU3RhdGUpKTsKKwlz dGF0ZSA9IHBhbGxvYzBfb2JqZWN0KEFsZW5TdGF0ZSk7CiAJc3RhdGUtPmxleCA9IG1ha2VK c29uTGV4Q29udGV4dCgmbGV4LCBqc29uLCBmYWxzZSk7CiAJLyogcGFsbG9jMCBkb2VzIHRo aXMgZm9yIHVzICovCiAjaWYgMAogCXN0YXRlLT5jb3VudCA9IDA7CiAjZW5kaWYKIAotCXNl bSA9IHBhbGxvYzAoc2l6ZW9mKEpzb25TZW1BY3Rpb24pKTsKKwlzZW0gPSBwYWxsb2MwX29i amVjdChKc29uU2VtQWN0aW9uKTsKIAlzZW0tPnNlbXN0YXRlID0gc3RhdGU7CiAJc2VtLT5v YmplY3Rfc3RhcnQgPSBhbGVuX29iamVjdF9zdGFydDsKIAlzZW0tPnNjYWxhciA9IGFsZW5f c2NhbGFyOwpAQCAtMjA2Myw4ICsyMDYzLDggQEAgZWFjaF93b3JrZXIoRnVuY3Rpb25DYWxs SW5mbyBmY2luZm8sIGJvb2wgYXNfdGV4dCkKIAlSZXR1cm5TZXRJbmZvICpyc2k7CiAJRWFj aFN0YXRlICAqc3RhdGU7CiAKLQlzdGF0ZSA9IHBhbGxvYzAoc2l6ZW9mKEVhY2hTdGF0ZSkp OwotCXNlbSA9IHBhbGxvYzAoc2l6ZW9mKEpzb25TZW1BY3Rpb24pKTsKKwlzdGF0ZSA9IHBh bGxvYzBfb2JqZWN0KEVhY2hTdGF0ZSk7CisJc2VtID0gcGFsbG9jMF9vYmplY3QoSnNvblNl bUFjdGlvbik7CiAKIAlyc2kgPSAoUmV0dXJuU2V0SW5mbyAqKSBmY2luZm8tPnJlc3VsdGlu Zm87CiAKQEAgLTIzMTYsOCArMjMxNiw4IEBAIGVsZW1lbnRzX3dvcmtlcihGdW5jdGlvbkNh bGxJbmZvIGZjaW5mbywgY29uc3QgY2hhciAqZnVuY25hbWUsIGJvb2wgYXNfdGV4dCkKIAkv KiBlbGVtZW50cyBvbmx5IG5lZWRzIGVzY2FwZWQgc3RyaW5ncyB3aGVuIGFzX3RleHQgKi8K IAltYWtlSnNvbkxleENvbnRleHQoJmxleCwganNvbiwgYXNfdGV4dCk7CiAKLQlzdGF0ZSA9 IHBhbGxvYzAoc2l6ZW9mKEVsZW1lbnRzU3RhdGUpKTsKLQlzZW0gPSBwYWxsb2MwKHNpemVv ZihKc29uU2VtQWN0aW9uKSk7CisJc3RhdGUgPSBwYWxsb2MwX29iamVjdChFbGVtZW50c1N0 YXRlKTsKKwlzZW0gPSBwYWxsb2MwX29iamVjdChKc29uU2VtQWN0aW9uKTsKIAogCUluaXRN YXRlcmlhbGl6ZWRTUkYoZmNpbmZvLCBNQVRfU1JGX1VTRV9FWFBFQ1RFRF9ERVNDIHwgTUFU X1NSRl9CTEVTUyk7CiAJcnNpID0gKFJldHVyblNldEluZm8gKikgZmNpbmZvLT5yZXN1bHRp bmZvOwpAQCAtMjU3Miw4ICsyNTcyLDggQEAgcG9wdWxhdGVfYXJyYXlfYXNzaWduX25kaW1z KFBvcHVsYXRlQXJyYXlDb250ZXh0ICpjdHgsIGludCBuZGltcykKIAl9CiAKIAljdHgtPm5k aW1zID0gbmRpbXM7Ci0JY3R4LT5kaW1zID0gcGFsbG9jKHNpemVvZihpbnQpICogbmRpbXMp OwotCWN0eC0+c2l6ZXMgPSBwYWxsb2MwKHNpemVvZihpbnQpICogbmRpbXMpOworCWN0eC0+ ZGltcyA9IHBhbGxvY19hcnJheShpbnQsIG5kaW1zKTsKKwljdHgtPnNpemVzID0gcGFsbG9j MF9hcnJheShpbnQsIG5kaW1zKTsKIAogCWZvciAoaSA9IDA7IGkgPCBuZGltczsgaSsrKQog CQljdHgtPmRpbXNbaV0gPSAtMTsJCS8qIGRpbWVuc2lvbnMgYXJlIHVua25vd24geWV0ICov CkBAIC0yOTU4LDcgKzI5NTgsNyBAQCBwb3B1bGF0ZV9hcnJheShBcnJheUlPRGF0YSAqYWlv LAogCiAJQXNzZXJ0KGN0eC5uZGltcyA+IDApOwogCi0JbGJzID0gcGFsbG9jKHNpemVvZihp bnQpICogY3R4Lm5kaW1zKTsKKwlsYnMgPSBwYWxsb2NfYXJyYXkoaW50LCBjdHgubmRpbXMp OwogCiAJZm9yIChpID0gMDsgaSA8IGN0eC5uZGltczsgaSsrKQogCQlsYnNbaV0gPSAxOwpA QCAtMzgyNCw4ICszODI0LDggQEAgZ2V0X2pzb25fb2JqZWN0X2FzX2hhc2goY29uc3QgY2hh ciAqanNvbiwgaW50IGxlbiwgY29uc3QgY2hhciAqZnVuY25hbWUsCiAJCQkJCSAgJmN0bCwK IAkJCQkJICBIQVNIX0VMRU0gfCBIQVNIX1NUUklOR1MgfCBIQVNIX0NPTlRFWFQpOwogCi0J c3RhdGUgPSBwYWxsb2MwKHNpemVvZihKSGFzaFN0YXRlKSk7Ci0Jc2VtID0gcGFsbG9jMChz aXplb2YoSnNvblNlbUFjdGlvbikpOworCXN0YXRlID0gcGFsbG9jMF9vYmplY3QoSkhhc2hT dGF0ZSk7CisJc2VtID0gcGFsbG9jMF9vYmplY3QoSnNvblNlbUFjdGlvbik7CiAKIAlzdGF0 ZS0+ZnVuY3Rpb25fbmFtZSA9IGZ1bmNuYW1lOwogCXN0YXRlLT5oYXNoID0gdGFiOwpAQCAt NDEyMiw3ICs0MTIyLDcgQEAgcG9wdWxhdGVfcmVjb3Jkc2V0X3dvcmtlcihGdW5jdGlvbkNh bGxJbmZvIGZjaW5mbywgY29uc3QgY2hhciAqZnVuY25hbWUsCiAJICovCiAJdXBkYXRlX2Nh Y2hlZF90dXBkZXNjKCZjYWNoZS0+Yy5pby5jb21wb3NpdGUsIGNhY2hlLT5mbl9tY3h0KTsK IAotCXN0YXRlID0gcGFsbG9jMChzaXplb2YoUG9wdWxhdGVSZWNvcmRzZXRTdGF0ZSkpOwor CXN0YXRlID0gcGFsbG9jMF9vYmplY3QoUG9wdWxhdGVSZWNvcmRzZXRTdGF0ZSk7CiAKIAkv KiBtYWtlIHR1cGxlc3RvcmUgaW4gYSBzdWZmaWNpZW50bHkgbG9uZy1saXZlZCBtZW1vcnkg Y29udGV4dCAqLwogCW9sZF9jeHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8ocnNpLT5lY29u dGV4dC0+ZWN4dF9wZXJfcXVlcnlfbWVtb3J5KTsKQEAgLTQxNDEsNyArNDE0MSw3IEBAIHBv cHVsYXRlX3JlY29yZHNldF93b3JrZXIoRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8sIGNvbnN0 IGNoYXIgKmZ1bmNuYW1lLAogCQlKc29uTGV4Q29udGV4dCBsZXg7CiAJCUpzb25TZW1BY3Rp b24gKnNlbTsKIAotCQlzZW0gPSBwYWxsb2MwKHNpemVvZihKc29uU2VtQWN0aW9uKSk7CisJ CXNlbSA9IHBhbGxvYzBfb2JqZWN0KEpzb25TZW1BY3Rpb24pOwogCiAJCW1ha2VKc29uTGV4 Q29udGV4dCgmbGV4LCBqc29uLCB0cnVlKTsKIApAQCAtNDUxMSw4ICs0NTExLDggQEAganNv bl9zdHJpcF9udWxscyhQR19GVU5DVElPTl9BUkdTKQogCUpzb25MZXhDb250ZXh0IGxleDsK IAlKc29uU2VtQWN0aW9uICpzZW07CiAKLQlzdGF0ZSA9IHBhbGxvYzAoc2l6ZW9mKFN0cmlw bnVsbFN0YXRlKSk7Ci0Jc2VtID0gcGFsbG9jMChzaXplb2YoSnNvblNlbUFjdGlvbikpOwor CXN0YXRlID0gcGFsbG9jMF9vYmplY3QoU3RyaXBudWxsU3RhdGUpOworCXNlbSA9IHBhbGxv YzBfb2JqZWN0KEpzb25TZW1BY3Rpb24pOwogCWluaXRTdHJpbmdJbmZvKCZzdHJidWYpOwog CiAJc3RhdGUtPmxleCA9IG1ha2VKc29uTGV4Q29udGV4dCgmbGV4LCBqc29uLCB0cnVlKTsK QEAgLTU3MzYsOCArNTczNiw4IEBAIGl0ZXJhdGVfanNvbl92YWx1ZXModGV4dCAqanNvbiwg dWludDMyIGZsYWdzLCB2b2lkICphY3Rpb25fc3RhdGUsCiAJCQkJCUpzb25JdGVyYXRlU3Ry aW5nVmFsdWVzQWN0aW9uIGFjdGlvbikKIHsKIAlKc29uTGV4Q29udGV4dCBsZXg7Ci0JSnNv blNlbUFjdGlvbiAqc2VtID0gcGFsbG9jMChzaXplb2YoSnNvblNlbUFjdGlvbikpOwotCUl0 ZXJhdGVKc29uU3RyaW5nVmFsdWVzU3RhdGUgKnN0YXRlID0gcGFsbG9jMChzaXplb2YoSXRl cmF0ZUpzb25TdHJpbmdWYWx1ZXNTdGF0ZSkpOworCUpzb25TZW1BY3Rpb24gKnNlbSA9IHBh bGxvYzBfb2JqZWN0KEpzb25TZW1BY3Rpb24pOworCUl0ZXJhdGVKc29uU3RyaW5nVmFsdWVz U3RhdGUgKnN0YXRlID0gcGFsbG9jMF9vYmplY3QoSXRlcmF0ZUpzb25TdHJpbmdWYWx1ZXNT dGF0ZSk7CiAKIAlzdGF0ZS0+bGV4ID0gbWFrZUpzb25MZXhDb250ZXh0KCZsZXgsIGpzb24s IHRydWUpOwogCXN0YXRlLT5hY3Rpb24gPSBhY3Rpb247CkBAIC01ODU3LDggKzU4NTcsOCBA QCB0cmFuc2Zvcm1fanNvbl9zdHJpbmdfdmFsdWVzKHRleHQgKmpzb24sIHZvaWQgKmFjdGlv bl9zdGF0ZSwKIAkJCQkJCQkgSnNvblRyYW5zZm9ybVN0cmluZ1ZhbHVlc0FjdGlvbiB0cmFu c2Zvcm1fYWN0aW9uKQogewogCUpzb25MZXhDb250ZXh0IGxleDsKLQlKc29uU2VtQWN0aW9u ICpzZW0gPSBwYWxsb2MwKHNpemVvZihKc29uU2VtQWN0aW9uKSk7Ci0JVHJhbnNmb3JtSnNv blN0cmluZ1ZhbHVlc1N0YXRlICpzdGF0ZSA9IHBhbGxvYzAoc2l6ZW9mKFRyYW5zZm9ybUpz b25TdHJpbmdWYWx1ZXNTdGF0ZSkpOworCUpzb25TZW1BY3Rpb24gKnNlbSA9IHBhbGxvYzBf b2JqZWN0KEpzb25TZW1BY3Rpb24pOworCVRyYW5zZm9ybUpzb25TdHJpbmdWYWx1ZXNTdGF0 ZSAqc3RhdGUgPSBwYWxsb2MwX29iamVjdChUcmFuc2Zvcm1Kc29uU3RyaW5nVmFsdWVzU3Rh dGUpOwogCVN0cmluZ0luZm9EYXRhIHN0cmJ1ZjsKIAogCWluaXRTdHJpbmdJbmZvKCZzdHJi dWYpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25wYXRoX2V4ZWMu YyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29ucGF0aF9leGVjLmMKaW5kZXggODE1NjY5 NWU5N2UuLjdhYTUxOTRiZTdhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQv anNvbnBhdGhfZXhlYy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29ucGF0aF9l eGVjLmMKQEAgLTc3NSw3ICs3NzUsNyBAQCBleGVjdXRlSXRlbU9wdFVud3JhcFRhcmdldChK c29uUGF0aEV4ZWNDb250ZXh0ICpjeHQsIEpzb25QYXRoSXRlbSAqanNwLAogCQkJCQlicmVh azsKIAkJCQl9CiAKLQkJCQl2ID0gaGFzTmV4dCA/ICZ2YnVmIDogcGFsbG9jKHNpemVvZigq dikpOworCQkJCXYgPSBoYXNOZXh0ID8gJnZidWYgOiBwYWxsb2Nfb2JqZWN0KEpzb25iVmFs dWUpOwogCiAJCQkJYmFzZU9iamVjdCA9IGN4dC0+YmFzZU9iamVjdDsKIAkJCQlnZXRKc29u UGF0aEl0ZW0oY3h0LCBqc3AsIHYpOwpAQCAtMTA4OCw3ICsxMDg4LDcgQEAgZXhlY3V0ZUl0 ZW1PcHRVbndyYXBUYXJnZXQoSnNvblBhdGhFeGVjQ29udGV4dCAqY3h0LCBKc29uUGF0aEl0 ZW0gKmpzcCwKIAogCQljYXNlIGpwaVR5cGU6CiAJCQl7Ci0JCQkJSnNvbmJWYWx1ZSAqamJ2 ID0gcGFsbG9jKHNpemVvZigqamJ2KSk7CisJCQkJSnNvbmJWYWx1ZSAqamJ2ID0gcGFsbG9j X29iamVjdChKc29uYlZhbHVlKTsKIAogCQkJCWpidi0+dHlwZSA9IGpidlN0cmluZzsKIAkJ CQlqYnYtPnZhbC5zdHJpbmcudmFsID0gcHN0cmR1cChKc29uYlR5cGVOYW1lKGpiKSk7CkBA IC0xMTE4LDcgKzExMTgsNyBAQCBleGVjdXRlSXRlbU9wdFVud3JhcFRhcmdldChKc29uUGF0 aEV4ZWNDb250ZXh0ICpjeHQsIEpzb25QYXRoSXRlbSAqanNwLAogCQkJCQlzaXplID0gMTsK IAkJCQl9CiAKLQkJCQlqYiA9IHBhbGxvYyhzaXplb2YoKmpiKSk7CisJCQkJamIgPSBwYWxs b2Nfb2JqZWN0KEpzb25iVmFsdWUpOwogCiAJCQkJamItPnR5cGUgPSBqYnZOdW1lcmljOwog CQkJCWpiLT52YWwubnVtZXJpYyA9IGludDY0X3RvX251bWVyaWMoc2l6ZSk7CkBAIC0xMjQ5 LDcgKzEyNDksNyBAQCBleGVjdXRlSXRlbU9wdFVud3JhcFRhcmdldChKc29uUGF0aEV4ZWND b250ZXh0ICpjeHQsIEpzb25QYXRoSXRlbSAqanNwLAogCiAJCQkJbGFzdCA9IGN4dC0+aW5u ZXJtb3N0QXJyYXlTaXplIC0gMTsKIAotCQkJCWxhc3RqYnYgPSBoYXNOZXh0ID8gJnRtcGpi diA6IHBhbGxvYyhzaXplb2YoKmxhc3RqYnYpKTsKKwkJCQlsYXN0amJ2ID0gaGFzTmV4dCA/ ICZ0bXBqYnYgOiBwYWxsb2Nfb2JqZWN0KEpzb25iVmFsdWUpOwogCiAJCQkJbGFzdGpidi0+ dHlwZSA9IGpidk51bWVyaWM7CiAJCQkJbGFzdGpidi0+dmFsLm51bWVyaWMgPSBpbnQ2NF90 b19udW1lcmljKGxhc3QpOwpAQCAtMjE2Miw3ICsyMTYyLDcgQEAgZXhlY3V0ZUJpbmFyeUFy aXRobUV4cHIoSnNvblBhdGhFeGVjQ29udGV4dCAqY3h0LCBKc29uUGF0aEl0ZW0gKmpzcCwK IAlpZiAoIWpzcEdldE5leHQoanNwLCAmZWxlbSkgJiYgIWZvdW5kKQogCQlyZXR1cm4ganBl ck9rOwogCi0JbHZhbCA9IHBhbGxvYyhzaXplb2YoKmx2YWwpKTsKKwlsdmFsID0gcGFsbG9j X29iamVjdChKc29uYlZhbHVlKTsKIAlsdmFsLT50eXBlID0gamJ2TnVtZXJpYzsKIAlsdmFs LT52YWwubnVtZXJpYyA9IHJlczsKIApAQCAtMjMxNyw3ICsyMzE3LDcgQEAgZXhlY3V0ZU51 bWVyaWNJdGVtTWV0aG9kKEpzb25QYXRoRXhlY0NvbnRleHQgKmN4dCwgSnNvblBhdGhJdGVt ICpqc3AsCiAJaWYgKCFqc3BHZXROZXh0KGpzcCwgJm5leHQpICYmICFmb3VuZCkKIAkJcmV0 dXJuIGpwZXJPazsKIAotCWpiID0gcGFsbG9jKHNpemVvZigqamIpKTsKKwlqYiA9IHBhbGxv Y19vYmplY3QoSnNvbmJWYWx1ZSk7CiAJamItPnR5cGUgPSBqYnZOdW1lcmljOwogCWpiLT52 YWwubnVtZXJpYyA9IERhdHVtR2V0TnVtZXJpYyhkYXR1bSk7CiAKQEAgLTI3ODMsNyArMjc4 Myw3IEBAIGV4ZWN1dGVEYXRlVGltZU1ldGhvZChKc29uUGF0aEV4ZWNDb250ZXh0ICpjeHQs IEpzb25QYXRoSXRlbSAqanNwLAogCWlmICghaGFzTmV4dCAmJiAhZm91bmQpCiAJCXJldHVy biByZXM7CiAKLQlqYiA9IGhhc05leHQgPyAmamJ2YnVmIDogcGFsbG9jKHNpemVvZigqamIp KTsKKwlqYiA9IGhhc05leHQgPyAmamJ2YnVmIDogcGFsbG9jX29iamVjdChKc29uYlZhbHVl KTsKIAogCWpiLT50eXBlID0gamJ2RGF0ZXRpbWU7CiAJamItPnZhbC5kYXRldGltZS52YWx1 ZSA9IHZhbHVlOwpAQCAtMzAxOCw3ICszMDE4LDcgQEAgR2V0SnNvblBhdGhWYXIodm9pZCAq Y3h0LCBjaGFyICp2YXJOYW1lLCBpbnQgdmFyTmFtZUxlbiwKIAkJcmV0dXJuIE5VTEw7CiAJ fQogCi0JcmVzdWx0ID0gcGFsbG9jKHNpemVvZihKc29uYlZhbHVlKSk7CisJcmVzdWx0ID0g cGFsbG9jX29iamVjdChKc29uYlZhbHVlKTsKIAlpZiAodmFyLT5pc251bGwpCiAJewogCQkq YmFzZU9iamVjdElkID0gMDsKQEAgLTM0NDUsNyArMzQ0NSw3IEBAIGNvbXBhcmVOdW1lcmlj KE51bWVyaWMgYSwgTnVtZXJpYyBiKQogc3RhdGljIEpzb25iVmFsdWUgKgogY29weUpzb25i VmFsdWUoSnNvbmJWYWx1ZSAqc3JjKQogewotCUpzb25iVmFsdWUgKmRzdCA9IHBhbGxvYyhz aXplb2YoKmRzdCkpOworCUpzb25iVmFsdWUgKmRzdCA9IHBhbGxvY19vYmplY3QoSnNvbmJW YWx1ZSk7CiAKIAkqZHN0ID0gKnNyYzsKIApAQCAtNDExOSw3ICs0MTE5LDcgQEAgSnNvblRh YmxlSW5pdE9wYXF1ZShUYWJsZUZ1bmNTY2FuU3RhdGUgKnN0YXRlLCBpbnQgbmF0dHMpCiAJ SnNvbkV4cHIgICAqamUgPSBjYXN0Tm9kZShKc29uRXhwciwgdGYtPmRvY2V4cHIpOwogCUxp c3QJICAgKmFyZ3MgPSBOSUw7CiAKLQljeHQgPSBwYWxsb2MwKHNpemVvZihKc29uVGFibGVF eGVjQ29udGV4dCkpOworCWN4dCA9IHBhbGxvYzBfb2JqZWN0KEpzb25UYWJsZUV4ZWNDb250 ZXh0KTsKIAljeHQtPm1hZ2ljID0gSlNPTl9UQUJMRV9FWEVDX0NPTlRFWFRfTUFHSUM7CiAK IAkvKgpAQCAtNDEzOCw3ICs0MTM4LDcgQEAgSnNvblRhYmxlSW5pdE9wYXF1ZShUYWJsZUZ1 bmNTY2FuU3RhdGUgKnN0YXRlLCBpbnQgbmF0dHMpCiAJCXsKIAkJCUV4cHJTdGF0ZSAgKnN0 YXRlID0gbGZpcnN0X25vZGUoRXhwclN0YXRlLCBleHBybGMpOwogCQkJU3RyaW5nCSAgICpu YW1lID0gbGZpcnN0X25vZGUoU3RyaW5nLCBuYW1lbGMpOwotCQkJSnNvblBhdGhWYXJpYWJs ZSAqdmFyID0gcGFsbG9jKHNpemVvZigqdmFyKSk7CisJCQlKc29uUGF0aFZhcmlhYmxlICp2 YXIgPSBwYWxsb2Nfb2JqZWN0KEpzb25QYXRoVmFyaWFibGUpOwogCiAJCQl2YXItPm5hbWUg PSBwc3RyZHVwKG5hbWUtPnN2YWwpOwogCQkJdmFyLT5uYW1lbGVuID0gc3RybGVuKHZhci0+ bmFtZSk7CkBAIC00MTU2LDggKzQxNTYsNyBAQCBKc29uVGFibGVJbml0T3BhcXVlKFRhYmxl RnVuY1NjYW5TdGF0ZSAqc3RhdGUsIGludCBuYXR0cykKIAkJfQogCX0KIAotCWN4dC0+Y29s cGxhbnN0YXRlcyA9IHBhbGxvYyhzaXplb2YoSnNvblRhYmxlUGxhblN0YXRlICopICoKLQkJ CQkJCQkJbGlzdF9sZW5ndGgodGYtPmNvbHZhbGV4cHJzKSk7CisJY3h0LT5jb2xwbGFuc3Rh dGVzID0gcGFsbG9jX2FycmF5KEpzb25UYWJsZVBsYW5TdGF0ZSAqLCBsaXN0X2xlbmd0aCh0 Zi0+Y29sdmFsZXhwcnMpKTsKIAogCS8qCiAJICogSW5pdGlhbGl6ZSBwbGFuIGZvciB0aGUg cm9vdCBwYXRoIGFuZCwgcmVjdXJzaXZlbHksIGFsc28gYW55IGNoaWxkCkBAIC00MTk1LDcg KzQxOTQsNyBAQCBKc29uVGFibGVJbml0UGxhbihKc29uVGFibGVFeGVjQ29udGV4dCAqY3h0 LCBKc29uVGFibGVQbGFuICpwbGFuLAogCQkJCSAgSnNvblRhYmxlUGxhblN0YXRlICpwYXJl bnRzdGF0ZSwKIAkJCQkgIExpc3QgKmFyZ3MsIE1lbW9yeUNvbnRleHQgbWN4dCkKIHsKLQlK c29uVGFibGVQbGFuU3RhdGUgKnBsYW5zdGF0ZSA9IHBhbGxvYzAoc2l6ZW9mKCpwbGFuc3Rh dGUpKTsKKwlKc29uVGFibGVQbGFuU3RhdGUgKnBsYW5zdGF0ZSA9IHBhbGxvYzBfb2JqZWN0 KEpzb25UYWJsZVBsYW5TdGF0ZSk7CiAKIAlwbGFuc3RhdGUtPnBsYW4gPSBwbGFuOwogCXBs YW5zdGF0ZS0+cGFyZW50ID0gcGFyZW50c3RhdGU7CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC91dGlscy9hZHQvanNvbnBhdGhfZ3JhbS55IGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pz b25wYXRoX2dyYW0ueQppbmRleCA0OTk3NDVhOGZlZi4uNDExYThiYWYzODAgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29ucGF0aF9ncmFtLnkKKysrIGIvc3JjL2Jh Y2tlbmQvdXRpbHMvYWR0L2pzb25wYXRoX2dyYW0ueQpAQCAtMTIwLDcgKzEyMCw3IEBAIHN0 YXRpYyBib29sIG1ha2VJdGVtTGlrZVJlZ2V4KEpzb25QYXRoUGFyc2VJdGVtICpleHByLAog CiByZXN1bHQ6CiAJbW9kZSBleHByX29yX3ByZWRpY2F0ZQkJCXsKLQkJCQkJCQkJCQkqcmVz dWx0ID0gcGFsbG9jKHNpemVvZihKc29uUGF0aFBhcnNlUmVzdWx0KSk7CisJCQkJCQkJCQkJ KnJlc3VsdCA9IHBhbGxvY19vYmplY3QoSnNvblBhdGhQYXJzZVJlc3VsdCk7CiAJCQkJCQkJ CQkJKCpyZXN1bHQpLT5leHByID0gJDI7CiAJCQkJCQkJCQkJKCpyZXN1bHQpLT5sYXggPSAk MTsKIAkJCQkJCQkJCQkodm9pZCkgeXluZXJyczsKQEAgLTM4NCw3ICszODQsNyBAQCBtZXRo b2Q6CiBzdGF0aWMgSnNvblBhdGhQYXJzZUl0ZW0gKgogbWFrZUl0ZW1UeXBlKEpzb25QYXRo SXRlbVR5cGUgdHlwZSkKIHsKLQlKc29uUGF0aFBhcnNlSXRlbSAqdiA9IHBhbGxvYyhzaXpl b2YoKnYpKTsKKwlKc29uUGF0aFBhcnNlSXRlbSAqdiA9IHBhbGxvY19vYmplY3QoSnNvblBh dGhQYXJzZUl0ZW0pOwogCiAJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKIApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2xvY2tmdW5jcy5jIGIvc3JjL2JhY2tlbmQvdXRp bHMvYWR0L2xvY2tmdW5jcy5jCmluZGV4IGRmOTM4ODEyZGQzLi5iZjM4ZDY4YWEwMyAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2xvY2tmdW5jcy5jCisrKyBiL3NyYy9i YWNrZW5kL3V0aWxzL2FkdC9sb2NrZnVuY3MuYwpAQCAtMTUyLDcgKzE1Miw3IEBAIHBnX2xv Y2tfc3RhdHVzKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCSAqIENvbGxlY3QgYWxsIHRoZSBsb2Nr aW5nIGluZm9ybWF0aW9uIHRoYXQgd2Ugd2lsbCBmb3JtYXQgYW5kIHNlbmQKIAkJICogb3V0 IGFzIGEgcmVzdWx0IHNldC4KIAkJICovCi0JCW15c3RhdHVzID0gKFBHX0xvY2tfU3RhdHVz ICopIHBhbGxvYyhzaXplb2YoUEdfTG9ja19TdGF0dXMpKTsKKwkJbXlzdGF0dXMgPSBwYWxs b2Nfb2JqZWN0KFBHX0xvY2tfU3RhdHVzKTsKIAkJZnVuY2N0eC0+dXNlcl9mY3R4ID0gbXlz dGF0dXM7CiAKIAkJbXlzdGF0dXMtPmxvY2tEYXRhID0gR2V0TG9ja1N0YXR1c0RhdGEoKTsK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9tYWMuYyBiL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC9tYWMuYwppbmRleCBiYjM4ZWYyZjVlNC4uMzUyMzRlNzAwZmYgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9tYWMuYworKysgYi9zcmMvYmFja2VuZC91 dGlscy9hZHQvbWFjLmMKQEAgLTEwMSw3ICsxMDEsNyBAQCBtYWNhZGRyX2luKFBHX0ZVTkNU SU9OX0FSR1MpCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9OVU1FUklDX1ZBTFVFX09VVF9PRl9S QU5HRSksCiAJCQkJIGVycm1zZygiaW52YWxpZCBvY3RldCB2YWx1ZSBpbiBcIm1hY2FkZHJc IiB2YWx1ZTogXCIlc1wiIiwgc3RyKSkpOwogCi0JcmVzdWx0ID0gKG1hY2FkZHIgKikgcGFs bG9jKHNpemVvZihtYWNhZGRyKSk7CisJcmVzdWx0ID0gcGFsbG9jX29iamVjdChtYWNhZGRy KTsKIAogCXJlc3VsdC0+YSA9IGE7CiAJcmVzdWx0LT5iID0gYjsKQEAgLTE0Miw3ICsxNDIs NyBAQCBtYWNhZGRyX3JlY3YoUEdfRlVOQ1RJT05fQVJHUykKIAlTdHJpbmdJbmZvCWJ1ZiA9 IChTdHJpbmdJbmZvKSBQR19HRVRBUkdfUE9JTlRFUigwKTsKIAltYWNhZGRyICAgICphZGRy OwogCi0JYWRkciA9IChtYWNhZGRyICopIHBhbGxvYyhzaXplb2YobWFjYWRkcikpOworCWFk ZHIgPSBwYWxsb2Nfb2JqZWN0KG1hY2FkZHIpOwogCiAJYWRkci0+YSA9IHBxX2dldG1zZ2J5 dGUoYnVmKTsKIAlhZGRyLT5iID0gcHFfZ2V0bXNnYnl0ZShidWYpOwpAQCAtMjg5LDcgKzI4 OSw3IEBAIG1hY2FkZHJfbm90KFBHX0ZVTkNUSU9OX0FSR1MpCiAJbWFjYWRkciAgICAqYWRk ciA9IFBHX0dFVEFSR19NQUNBRERSX1AoMCk7CiAJbWFjYWRkciAgICAqcmVzdWx0OwogCi0J cmVzdWx0ID0gKG1hY2FkZHIgKikgcGFsbG9jKHNpemVvZihtYWNhZGRyKSk7CisJcmVzdWx0 ID0gcGFsbG9jX29iamVjdChtYWNhZGRyKTsKIAlyZXN1bHQtPmEgPSB+YWRkci0+YTsKIAly ZXN1bHQtPmIgPSB+YWRkci0+YjsKIAlyZXN1bHQtPmMgPSB+YWRkci0+YzsKQEAgLTMwNiw3 ICszMDYsNyBAQCBtYWNhZGRyX2FuZChQR19GVU5DVElPTl9BUkdTKQogCW1hY2FkZHIgICAg KmFkZHIyID0gUEdfR0VUQVJHX01BQ0FERFJfUCgxKTsKIAltYWNhZGRyICAgICpyZXN1bHQ7 CiAKLQlyZXN1bHQgPSAobWFjYWRkciAqKSBwYWxsb2Moc2l6ZW9mKG1hY2FkZHIpKTsKKwly ZXN1bHQgPSBwYWxsb2Nfb2JqZWN0KG1hY2FkZHIpOwogCXJlc3VsdC0+YSA9IGFkZHIxLT5h ICYgYWRkcjItPmE7CiAJcmVzdWx0LT5iID0gYWRkcjEtPmIgJiBhZGRyMi0+YjsKIAlyZXN1 bHQtPmMgPSBhZGRyMS0+YyAmIGFkZHIyLT5jOwpAQCAtMzIzLDcgKzMyMyw3IEBAIG1hY2Fk ZHJfb3IoUEdfRlVOQ1RJT05fQVJHUykKIAltYWNhZGRyICAgICphZGRyMiA9IFBHX0dFVEFS R19NQUNBRERSX1AoMSk7CiAJbWFjYWRkciAgICAqcmVzdWx0OwogCi0JcmVzdWx0ID0gKG1h Y2FkZHIgKikgcGFsbG9jKHNpemVvZihtYWNhZGRyKSk7CisJcmVzdWx0ID0gcGFsbG9jX29i amVjdChtYWNhZGRyKTsKIAlyZXN1bHQtPmEgPSBhZGRyMS0+YSB8IGFkZHIyLT5hOwogCXJl c3VsdC0+YiA9IGFkZHIxLT5iIHwgYWRkcjItPmI7CiAJcmVzdWx0LT5jID0gYWRkcjEtPmMg fCBhZGRyMi0+YzsKQEAgLTM0Myw3ICszNDMsNyBAQCBtYWNhZGRyX3RydW5jKFBHX0ZVTkNU SU9OX0FSR1MpCiAJbWFjYWRkciAgICAqYWRkciA9IFBHX0dFVEFSR19NQUNBRERSX1AoMCk7 CiAJbWFjYWRkciAgICAqcmVzdWx0OwogCi0JcmVzdWx0ID0gKG1hY2FkZHIgKikgcGFsbG9j KHNpemVvZihtYWNhZGRyKSk7CisJcmVzdWx0ID0gcGFsbG9jX29iamVjdChtYWNhZGRyKTsK IAogCXJlc3VsdC0+YSA9IGFkZHItPmE7CiAJcmVzdWx0LT5iID0gYWRkci0+YjsKQEAgLTM3 NCw3ICszNzQsNyBAQCBtYWNhZGRyX3NvcnRzdXBwb3J0KFBHX0ZVTkNUSU9OX0FSR1MpCiAK IAkJb2xkY29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhzc3VwLT5zc3VwX2N4dCk7 CiAKLQkJdXNzID0gcGFsbG9jKHNpemVvZihtYWNhZGRyX3NvcnRzdXBwb3J0X3N0YXRlKSk7 CisJCXVzcyA9IHBhbGxvY19vYmplY3QobWFjYWRkcl9zb3J0c3VwcG9ydF9zdGF0ZSk7CiAJ CXVzcy0+aW5wdXRfY291bnQgPSAwOwogCQl1c3MtPmVzdGltYXRpbmcgPSB0cnVlOwogCQlp bml0SHlwZXJMb2dMb2coJnVzcy0+YWJicl9jYXJkLCAxMCk7CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC91dGlscy9hZHQvbWFjOC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L21hYzgu YwppbmRleCAwOGU0MWJhNGVlYS4uZWE3MTVhN2EwZDQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3V0aWxzL2FkdC9tYWM4LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L21hYzgu YwpAQCAtMjA3LDcgKzIwNyw3IEBAIG1hY2FkZHI4X2luKFBHX0ZVTkNUSU9OX0FSR1MpCiAJ ZWxzZSBpZiAoY291bnQgIT0gOCkKIAkJZ290byBmYWlsOwogCi0JcmVzdWx0ID0gKG1hY2Fk ZHI4ICopIHBhbGxvYzAoc2l6ZW9mKG1hY2FkZHI4KSk7CisJcmVzdWx0ID0gcGFsbG9jMF9v YmplY3QobWFjYWRkcjgpOwogCiAJcmVzdWx0LT5hID0gYTsKIAlyZXN1bHQtPmIgPSBiOwpA QCAtMjU2LDcgKzI1Niw3IEBAIG1hY2FkZHI4X3JlY3YoUEdfRlVOQ1RJT05fQVJHUykKIAlT dHJpbmdJbmZvCWJ1ZiA9IChTdHJpbmdJbmZvKSBQR19HRVRBUkdfUE9JTlRFUigwKTsKIAlt YWNhZGRyOCAgICphZGRyOwogCi0JYWRkciA9IChtYWNhZGRyOCAqKSBwYWxsb2MwKHNpemVv ZihtYWNhZGRyOCkpOworCWFkZHIgPSBwYWxsb2MwX29iamVjdChtYWNhZGRyOCk7CiAKIAlh ZGRyLT5hID0gcHFfZ2V0bXNnYnl0ZShidWYpOwogCWFkZHItPmIgPSBwcV9nZXRtc2dieXRl KGJ1Zik7CkBAIC00MTcsNyArNDE3LDcgQEAgbWFjYWRkcjhfbm90KFBHX0ZVTkNUSU9OX0FS R1MpCiAJbWFjYWRkcjggICAqYWRkciA9IFBHX0dFVEFSR19NQUNBRERSOF9QKDApOwogCW1h Y2FkZHI4ICAgKnJlc3VsdDsKIAotCXJlc3VsdCA9IChtYWNhZGRyOCAqKSBwYWxsb2MwKHNp emVvZihtYWNhZGRyOCkpOworCXJlc3VsdCA9IHBhbGxvYzBfb2JqZWN0KG1hY2FkZHI4KTsK IAlyZXN1bHQtPmEgPSB+YWRkci0+YTsKIAlyZXN1bHQtPmIgPSB+YWRkci0+YjsKIAlyZXN1 bHQtPmMgPSB+YWRkci0+YzsKQEAgLTQzNyw3ICs0MzcsNyBAQCBtYWNhZGRyOF9hbmQoUEdf RlVOQ1RJT05fQVJHUykKIAltYWNhZGRyOCAgICphZGRyMiA9IFBHX0dFVEFSR19NQUNBRERS OF9QKDEpOwogCW1hY2FkZHI4ICAgKnJlc3VsdDsKIAotCXJlc3VsdCA9IChtYWNhZGRyOCAq KSBwYWxsb2MwKHNpemVvZihtYWNhZGRyOCkpOworCXJlc3VsdCA9IHBhbGxvYzBfb2JqZWN0 KG1hY2FkZHI4KTsKIAlyZXN1bHQtPmEgPSBhZGRyMS0+YSAmIGFkZHIyLT5hOwogCXJlc3Vs dC0+YiA9IGFkZHIxLT5iICYgYWRkcjItPmI7CiAJcmVzdWx0LT5jID0gYWRkcjEtPmMgJiBh ZGRyMi0+YzsKQEAgLTQ1Nyw3ICs0NTcsNyBAQCBtYWNhZGRyOF9vcihQR19GVU5DVElPTl9B UkdTKQogCW1hY2FkZHI4ICAgKmFkZHIyID0gUEdfR0VUQVJHX01BQ0FERFI4X1AoMSk7CiAJ bWFjYWRkcjggICAqcmVzdWx0OwogCi0JcmVzdWx0ID0gKG1hY2FkZHI4ICopIHBhbGxvYzAo c2l6ZW9mKG1hY2FkZHI4KSk7CisJcmVzdWx0ID0gcGFsbG9jMF9vYmplY3QobWFjYWRkcjgp OwogCXJlc3VsdC0+YSA9IGFkZHIxLT5hIHwgYWRkcjItPmE7CiAJcmVzdWx0LT5iID0gYWRk cjEtPmIgfCBhZGRyMi0+YjsKIAlyZXN1bHQtPmMgPSBhZGRyMS0+YyB8IGFkZHIyLT5jOwpA QCAtNDc5LDcgKzQ3OSw3IEBAIG1hY2FkZHI4X3RydW5jKFBHX0ZVTkNUSU9OX0FSR1MpCiAJ bWFjYWRkcjggICAqYWRkciA9IFBHX0dFVEFSR19NQUNBRERSOF9QKDApOwogCW1hY2FkZHI4 ICAgKnJlc3VsdDsKIAotCXJlc3VsdCA9IChtYWNhZGRyOCAqKSBwYWxsb2MwKHNpemVvZiht YWNhZGRyOCkpOworCXJlc3VsdCA9IHBhbGxvYzBfb2JqZWN0KG1hY2FkZHI4KTsKIAogCXJl c3VsdC0+YSA9IGFkZHItPmE7CiAJcmVzdWx0LT5iID0gYWRkci0+YjsKQEAgLTUwMiw3ICs1 MDIsNyBAQCBtYWNhZGRyOF9zZXQ3Yml0KFBHX0ZVTkNUSU9OX0FSR1MpCiAJbWFjYWRkcjgg ICAqYWRkciA9IFBHX0dFVEFSR19NQUNBRERSOF9QKDApOwogCW1hY2FkZHI4ICAgKnJlc3Vs dDsKIAotCXJlc3VsdCA9IChtYWNhZGRyOCAqKSBwYWxsb2MwKHNpemVvZihtYWNhZGRyOCkp OworCXJlc3VsdCA9IHBhbGxvYzBfb2JqZWN0KG1hY2FkZHI4KTsKIAogCXJlc3VsdC0+YSA9 IGFkZHItPmEgfCAweDAyOwogCXJlc3VsdC0+YiA9IGFkZHItPmI7CkBAIC01MjYsNyArNTI2 LDcgQEAgbWFjYWRkcnRvbWFjYWRkcjgoUEdfRlVOQ1RJT05fQVJHUykKIAltYWNhZGRyICAg ICphZGRyNiA9IFBHX0dFVEFSR19NQUNBRERSX1AoMCk7CiAJbWFjYWRkcjggICAqcmVzdWx0 OwogCi0JcmVzdWx0ID0gKG1hY2FkZHI4ICopIHBhbGxvYzAoc2l6ZW9mKG1hY2FkZHI4KSk7 CisJcmVzdWx0ID0gcGFsbG9jMF9vYmplY3QobWFjYWRkcjgpOwogCiAJcmVzdWx0LT5hID0g YWRkcjYtPmE7CiAJcmVzdWx0LT5iID0gYWRkcjYtPmI7CkBAIC01NDcsNyArNTQ3LDcgQEAg bWFjYWRkcjh0b21hY2FkZHIoUEdfRlVOQ1RJT05fQVJHUykKIAltYWNhZGRyOCAgICphZGRy ID0gUEdfR0VUQVJHX01BQ0FERFI4X1AoMCk7CiAJbWFjYWRkciAgICAqcmVzdWx0OwogCi0J cmVzdWx0ID0gKG1hY2FkZHIgKikgcGFsbG9jMChzaXplb2YobWFjYWRkcikpOworCXJlc3Vs dCA9IHBhbGxvYzBfb2JqZWN0KG1hY2FkZHIpOwogCiAJaWYgKChhZGRyLT5kICE9IDB4RkYp IHx8IChhZGRyLT5lICE9IDB4RkUpKQogCQllcmVwb3J0KEVSUk9SLApkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvdXRpbHMvYWR0L21jeHRmdW5jcy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMv YWR0L21jeHRmdW5jcy5jCmluZGV4IGZlNmRjZTljYmEzLi40NmRmYjNkZDEzMyAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L21jeHRmdW5jcy5jCisrKyBiL3NyYy9iYWNr ZW5kL3V0aWxzL2FkdC9tY3h0ZnVuY3MuYwpAQCAtNTIsNyArNTIsNyBAQCBpbnRfbGlzdF90 b19hcnJheShjb25zdCBMaXN0ICpsaXN0KQogCUFycmF5VHlwZSAgKnJlc3VsdF9hcnJheTsK IAogCWxlbmd0aCA9IGxpc3RfbGVuZ3RoKGxpc3QpOwotCWRhdHVtX2FycmF5ID0gKERhdHVt ICopIHBhbGxvYyhsZW5ndGggKiBzaXplb2YoRGF0dW0pKTsKKwlkYXR1bV9hcnJheSA9IHBh bGxvY19hcnJheShEYXR1bSwgbGVuZ3RoKTsKIAogCWZvcmVhY2hfaW50KGksIGxpc3QpCiAJ CWRhdHVtX2FycmF5W2ZvcmVhY2hfY3VycmVudF9pbmRleChpKV0gPSBJbnQzMkdldERhdHVt KGkpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L21pc2MuYyBiL3NyYy9i YWNrZW5kL3V0aWxzL2FkdC9taXNjLmMKaW5kZXggYTM2NWM0MzJkMzQuLmMzMmYyNGZiZjk3 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvbWlzYy5jCisrKyBiL3NyYy9i YWNrZW5kL3V0aWxzL2FkdC9taXNjLmMKQEAgLTQ4Nyw3ICs0ODcsNyBAQCBwZ19nZXRfY2F0 YWxvZ19mb3JlaWduX2tleXMoUEdfRlVOQ1RJT05fQVJHUykKIAkJICogYXJyYXlfaW4sIGFu ZCBpdCB3b3VsZG4ndCBiZSB2ZXJ5IGVmZmljaWVudCBpZiB3ZSBjb3VsZC4gIEZpbGwgYW4K IAkJICogRm1nckluZm8gdG8gdXNlIGZvciB0aGUgY2FsbC4KIAkJICovCi0JCWFycmF5aW5w ID0gKEZtZ3JJbmZvICopIHBhbGxvYyhzaXplb2YoRm1nckluZm8pKTsKKwkJYXJyYXlpbnAg PSBwYWxsb2Nfb2JqZWN0KEZtZ3JJbmZvKTsKIAkJZm1ncl9pbmZvKEZfQVJSQVlfSU4sIGFy cmF5aW5wKTsKIAkJZnVuY2N0eC0+dXNlcl9mY3R4ID0gYXJyYXlpbnA7CiAKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9tdWx0aXJhbmdldHlwZXMuYyBiL3NyYy9iYWNr ZW5kL3V0aWxzL2FkdC9tdWx0aXJhbmdldHlwZXMuYwppbmRleCA1MjczYjk3ZjdmZS4uYTM0 ZWZlYTVjNjEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9tdWx0aXJhbmdl dHlwZXMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvbXVsdGlyYW5nZXR5cGVzLmMK QEAgLTEyNSw3ICsxMjUsNyBAQCBtdWx0aXJhbmdlX2luKFBHX0ZVTkNUSU9OX0FSR1MpCiAJ aW50MzIJCXJhbmdlX2NvdW50ID0gMDsKIAlpbnQzMgkJcmFuZ2VfY2FwYWNpdHkgPSA4Owog CVJhbmdlVHlwZSAgKnJhbmdlOwotCVJhbmdlVHlwZSAqKnJhbmdlcyA9IHBhbGxvYyhyYW5n ZV9jYXBhY2l0eSAqIHNpemVvZihSYW5nZVR5cGUgKikpOworCVJhbmdlVHlwZSAqKnJhbmdl cyA9IHBhbGxvY19hcnJheShSYW5nZVR5cGUgKiwgcmFuZ2VfY2FwYWNpdHkpOwogCU11bHRp cmFuZ2VJT0RhdGEgKmNhY2hlOwogCU11bHRpcmFuZ2VUeXBlICpyZXQ7CiAJTXVsdGlyYW5n ZVBhcnNlU3RhdGUgcGFyc2Vfc3RhdGU7CkBAIC0zNDgsNyArMzQ4LDcgQEAgbXVsdGlyYW5n ZV9yZWN2KFBHX0ZVTkNUSU9OX0FSR1MpCiAJY2FjaGUgPSBnZXRfbXVsdGlyYW5nZV9pb19k YXRhKGZjaW5mbywgbWx0cm5ndHlwb2lkLCBJT0Z1bmNfcmVjZWl2ZSk7CiAKIAlyYW5nZV9j b3VudCA9IHBxX2dldG1zZ2ludChidWYsIDQpOwotCXJhbmdlcyA9IHBhbGxvYyhyYW5nZV9j b3VudCAqIHNpemVvZihSYW5nZVR5cGUgKikpOworCXJhbmdlcyA9IHBhbGxvY19hcnJheShS YW5nZVR5cGUgKiwgcmFuZ2VfY291bnQpOwogCiAJaW5pdFN0cmluZ0luZm8oJnRtcGJ1Zik7 CiAJZm9yIChpbnQgaSA9IDA7IGkgPCByYW5nZV9jb3VudDsgaSsrKQpAQCAtODM2LDcgKzgz Niw3IEBAIG11bHRpcmFuZ2VfZGVzZXJpYWxpemUoVHlwZUNhY2hlRW50cnkgKnJhbmdldHlw LAogCXsKIAkJaW50CQkJaTsKIAotCQkqcmFuZ2VzID0gcGFsbG9jKCpyYW5nZV9jb3VudCAq IHNpemVvZihSYW5nZVR5cGUgKikpOworCQkqcmFuZ2VzID0gcGFsbG9jX2FycmF5KFJhbmdl VHlwZSAqLCAqcmFuZ2VfY291bnQpOwogCQlmb3IgKGkgPSAwOyBpIDwgKnJhbmdlX2NvdW50 OyBpKyspCiAJCQkoKnJhbmdlcylbaV0gPSBtdWx0aXJhbmdlX2dldF9yYW5nZShyYW5nZXR5 cCwgbXVsdGlyYW5nZSwgaSk7CiAJfQpAQCAtMjgxOCw3ICsyODE4LDcgQEAgbXVsdGlyYW5n ZV91bm5lc3QoUEdfRlVOQ1RJT05fQVJHUykKIAkJbXIgPSBQR19HRVRBUkdfTVVMVElSQU5H RV9QKDApOwogCiAJCS8qIGFsbG9jYXRlIG1lbW9yeSBmb3IgdXNlciBjb250ZXh0ICovCi0J CWZjdHggPSAobXVsdGlyYW5nZV91bm5lc3RfZmN0eCAqKSBwYWxsb2Moc2l6ZW9mKG11bHRp cmFuZ2VfdW5uZXN0X2ZjdHgpKTsKKwkJZmN0eCA9IHBhbGxvY19vYmplY3QobXVsdGlyYW5n ZV91bm5lc3RfZmN0eCk7CiAKIAkJLyogaW5pdGlhbGl6ZSBzdGF0ZSAqLwogCQlmY3R4LT5t ciA9IG1yOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L211bHRpcmFuZ2V0 eXBlc19zZWxmdW5jcy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L211bHRpcmFuZ2V0eXBl c19zZWxmdW5jcy5jCmluZGV4IDIxZjAyMDVkODAzLi5mYzVhNDM1NGZjZSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L211bHRpcmFuZ2V0eXBlc19zZWxmdW5jcy5jCisr KyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9tdWx0aXJhbmdldHlwZXNfc2VsZnVuY3MuYwpA QCAtNDk2LDggKzQ5Niw4IEBAIGNhbGNfaGlzdF9zZWxlY3Rpdml0eShUeXBlQ2FjaGVFbnRy eSAqdHlwY2FjaGUsIFZhcmlhYmxlU3RhdERhdGEgKnZhcmRhdGEsCiAJICogYm91bmRzLgog CSAqLwogCW5oaXN0ID0gaHNsb3QubnZhbHVlczsKLQloaXN0X2xvd2VyID0gKFJhbmdlQm91 bmQgKikgcGFsbG9jKHNpemVvZihSYW5nZUJvdW5kKSAqIG5oaXN0KTsKLQloaXN0X3VwcGVy ID0gKFJhbmdlQm91bmQgKikgcGFsbG9jKHNpemVvZihSYW5nZUJvdW5kKSAqIG5oaXN0KTsK KwloaXN0X2xvd2VyID0gcGFsbG9jX2FycmF5KFJhbmdlQm91bmQsIG5oaXN0KTsKKwloaXN0 X3VwcGVyID0gcGFsbG9jX2FycmF5KFJhbmdlQm91bmQsIG5oaXN0KTsKIAlmb3IgKGkgPSAw OyBpIDwgbmhpc3Q7IGkrKykKIAl7CiAJCWJvb2wJCWVtcHR5OwpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L211bHRpeGFjdGZ1bmNzLmMgYi9zcmMvYmFja2VuZC91dGls cy9hZHQvbXVsdGl4YWN0ZnVuY3MuYwppbmRleCBlNzRlYTkzODM0OC4uYTQyOGUxNDBiYzQg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9tdWx0aXhhY3RmdW5jcy5jCisr KyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9tdWx0aXhhY3RmdW5jcy5jCkBAIC01MCw3ICs1 MCw3IEBAIHBnX2dldF9tdWx0aXhhY3RfbWVtYmVycyhQR19GVU5DVElPTl9BUkdTKQogCQlm dW5jY3h0ID0gU1JGX0ZJUlNUQ0FMTF9JTklUKCk7CiAJCW9sZGN4dCA9IE1lbW9yeUNvbnRl eHRTd2l0Y2hUbyhmdW5jY3h0LT5tdWx0aV9jYWxsX21lbW9yeV9jdHgpOwogCi0JCW11bHRp ID0gcGFsbG9jKHNpemVvZihteGFjdCkpOworCQltdWx0aSA9IHBhbGxvY19vYmplY3QobXhh Y3QpOwogCQkvKiBubyBuZWVkIHRvIGFsbG93IGZvciBvbGQgdmFsdWVzIGhlcmUgKi8KIAkJ bXVsdGktPm5tZW1iZXJzID0gR2V0TXVsdGlYYWN0SWRNZW1iZXJzKG14aWQsICZtdWx0aS0+ bWVtYmVycywgZmFsc2UsCiAJCQkJCQkJCQkJCQlmYWxzZSk7CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC91dGlscy9hZHQvbmV0d29yay5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L25l dHdvcmsuYwppbmRleCAzY2IwYWI2ODI5YS4uM2EyMDAyMDk3ZGQgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3V0aWxzL2FkdC9uZXR3b3JrLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMv YWR0L25ldHdvcmsuYwpAQCAtNzUsNyArNzUsNyBAQCBuZXR3b3JrX2luKGNoYXIgKnNyYywg Ym9vbCBpc19jaWRyLCBOb2RlICplc2NvbnRleHQpCiAJaW50CQkJYml0czsKIAlpbmV0CSAg ICpkc3Q7CiAKLQlkc3QgPSAoaW5ldCAqKSBwYWxsb2MwKHNpemVvZihpbmV0KSk7CisJZHN0 ID0gKGluZXQgKikgcGFsbG9jMF9vYmplY3QoaW5ldCk7CiAKIAkvKgogCSAqIEZpcnN0LCBj aGVjayB0byBzZWUgaWYgdGhpcyBpcyBhbiBJUHY2IG9yIElQdjQgYWRkcmVzcy4gIElQdjYg YWRkcmVzc2VzCkBAIC0xOTYsNyArMTk2LDcgQEAgbmV0d29ya19yZWN2KFN0cmluZ0luZm8g YnVmLCBib29sIGlzX2NpZHIpCiAJCQkJaTsKIAogCS8qIG1ha2Ugc3VyZSBhbnkgdW51c2Vk IGJpdHMgaW4gYSBDSURSIHZhbHVlIGFyZSB6ZXJvZWQgKi8KLQlhZGRyID0gKGluZXQgKikg cGFsbG9jMChzaXplb2YoaW5ldCkpOworCWFkZHIgPSBwYWxsb2MwX29iamVjdChpbmV0KTsK IAogCWlwX2ZhbWlseShhZGRyKSA9IHBxX2dldG1zZ2J5dGUoYnVmKTsKIAlpZiAoaXBfZmFt aWx5KGFkZHIpICE9IFBHU1FMX0FGX0lORVQgJiYKQEAgLTM2Myw3ICszNjMsNyBAQCBjaWRy X3NldF9tYXNrbGVuKFBHX0ZVTkNUSU9OX0FSR1MpCiBpbmV0ICoKIGNpZHJfc2V0X21hc2ts ZW5faW50ZXJuYWwoY29uc3QgaW5ldCAqc3JjLCBpbnQgYml0cykKIHsKLQlpbmV0CSAgICpk c3QgPSAoaW5ldCAqKSBwYWxsb2MwKHNpemVvZihpbmV0KSk7CisJaW5ldAkgICAqZHN0ID0g cGFsbG9jMF9vYmplY3QoaW5ldCk7CiAKIAlpcF9mYW1pbHkoZHN0KSA9IGlwX2ZhbWlseShz cmMpOwogCWlwX2JpdHMoZHN0KSA9IGJpdHM7CkBAIC00NDQsNyArNDQ0LDcgQEAgbmV0d29y a19zb3J0c3VwcG9ydChQR19GVU5DVElPTl9BUkdTKQogCiAJCW9sZGNvbnRleHQgPSBNZW1v cnlDb250ZXh0U3dpdGNoVG8oc3N1cC0+c3N1cF9jeHQpOwogCi0JCXVzcyA9IHBhbGxvYyhz aXplb2YobmV0d29ya19zb3J0c3VwcG9ydF9zdGF0ZSkpOworCQl1c3MgPSBwYWxsb2Nfb2Jq ZWN0KG5ldHdvcmtfc29ydHN1cHBvcnRfc3RhdGUpOwogCQl1c3MtPmlucHV0X2NvdW50ID0g MDsKIAkJdXNzLT5lc3RpbWF0aW5nID0gdHJ1ZTsKIAkJaW5pdEh5cGVyTG9nTG9nKCZ1c3Mt PmFiYnJfY2FyZCwgMTApOwpAQCAtMTIyNyw3ICsxMjI3LDcgQEAgbmV0d29ya19icm9hZGNh c3QoUEdfRlVOQ1RJT05fQVJHUykKIAkJCSAgICpiOwogCiAJLyogbWFrZSBzdXJlIGFueSB1 bnVzZWQgYml0cyBhcmUgemVyb2VkICovCi0JZHN0ID0gKGluZXQgKikgcGFsbG9jMChzaXpl b2YoaW5ldCkpOworCWRzdCA9IHBhbGxvYzBfb2JqZWN0KGluZXQpOwogCiAJbWF4Ynl0ZXMg PSBpcF9hZGRyc2l6ZShpcCk7CiAJYml0cyA9IGlwX2JpdHMoaXApOwpAQCAtMTI3MSw3ICsx MjcxLDcgQEAgbmV0d29ya19uZXR3b3JrKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQkgICAqYjsK IAogCS8qIG1ha2Ugc3VyZSBhbnkgdW51c2VkIGJpdHMgYXJlIHplcm9lZCAqLwotCWRzdCA9 IChpbmV0ICopIHBhbGxvYzAoc2l6ZW9mKGluZXQpKTsKKwlkc3QgPSBwYWxsb2MwX29iamVj dChpbmV0KTsKIAogCWJpdHMgPSBpcF9iaXRzKGlwKTsKIAlhID0gaXBfYWRkcihpcCk7CkBA IC0xMzE0LDcgKzEzMTQsNyBAQCBuZXR3b3JrX25ldG1hc2soUEdfRlVOQ1RJT05fQVJHUykK IAl1bnNpZ25lZCBjaGFyICpiOwogCiAJLyogbWFrZSBzdXJlIGFueSB1bnVzZWQgYml0cyBh cmUgemVyb2VkICovCi0JZHN0ID0gKGluZXQgKikgcGFsbG9jMChzaXplb2YoaW5ldCkpOwor CWRzdCA9IHBhbGxvYzBfb2JqZWN0KGluZXQpOwogCiAJYml0cyA9IGlwX2JpdHMoaXApOwog CWIgPSBpcF9hZGRyKGRzdCk7CkBAIC0xMzU3LDcgKzEzNTcsNyBAQCBuZXR3b3JrX2hvc3Rt YXNrKFBHX0ZVTkNUSU9OX0FSR1MpCiAJdW5zaWduZWQgY2hhciAqYjsKIAogCS8qIG1ha2Ug c3VyZSBhbnkgdW51c2VkIGJpdHMgYXJlIHplcm9lZCAqLwotCWRzdCA9IChpbmV0ICopIHBh bGxvYzAoc2l6ZW9mKGluZXQpKTsKKwlkc3QgPSBwYWxsb2MwX29iamVjdChpbmV0KTsKIAog CW1heGJ5dGVzID0gaXBfYWRkcnNpemUoaXApOwogCWJpdHMgPSBpcF9tYXhiaXRzKGlwKSAt IGlwX2JpdHMoaXApOwpAQCAtMTc5Miw3ICsxNzkyLDcgQEAgaW5ldG5vdChQR19GVU5DVElP Tl9BUkdTKQogCWluZXQJICAgKmlwID0gUEdfR0VUQVJHX0lORVRfUFAoMCk7CiAJaW5ldAkg ICAqZHN0OwogCi0JZHN0ID0gKGluZXQgKikgcGFsbG9jMChzaXplb2YoaW5ldCkpOworCWRz dCA9IHBhbGxvYzBfb2JqZWN0KGluZXQpOwogCiAJewogCQlpbnQJCQluYiA9IGlwX2FkZHJz aXplKGlwKTsKQEAgLTE4MTgsNyArMTgxOCw3IEBAIGluZXRhbmQoUEdfRlVOQ1RJT05fQVJH UykKIAlpbmV0CSAgICppcDIgPSBQR19HRVRBUkdfSU5FVF9QUCgxKTsKIAlpbmV0CSAgICpk c3Q7CiAKLQlkc3QgPSAoaW5ldCAqKSBwYWxsb2MwKHNpemVvZihpbmV0KSk7CisJZHN0ID0g cGFsbG9jMF9vYmplY3QoaW5ldCk7CiAKIAlpZiAoaXBfZmFtaWx5KGlwKSAhPSBpcF9mYW1p bHkoaXAyKSkKIAkJZXJlcG9ydChFUlJPUiwKQEAgLTE4NTAsNyArMTg1MCw3IEBAIGluZXRv cihQR19GVU5DVElPTl9BUkdTKQogCWluZXQJICAgKmlwMiA9IFBHX0dFVEFSR19JTkVUX1BQ KDEpOwogCWluZXQJICAgKmRzdDsKIAotCWRzdCA9IChpbmV0ICopIHBhbGxvYzAoc2l6ZW9m KGluZXQpKTsKKwlkc3QgPSBwYWxsb2MwX29iamVjdChpbmV0KTsKIAogCWlmIChpcF9mYW1p bHkoaXApICE9IGlwX2ZhbWlseShpcDIpKQogCQllcmVwb3J0KEVSUk9SLApAQCAtMTg4MCw3 ICsxODgwLDcgQEAgaW50ZXJuYWxfaW5ldHBsKGluZXQgKmlwLCBpbnQ2NCBhZGRlbmQpCiB7 CiAJaW5ldAkgICAqZHN0OwogCi0JZHN0ID0gKGluZXQgKikgcGFsbG9jMChzaXplb2YoaW5l dCkpOworCWRzdCA9IHBhbGxvYzBfb2JqZWN0KGluZXQpOwogCiAJewogCQlpbnQJCQluYiA9 IGlwX2FkZHJzaXplKGlwKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9u ZXR3b3JrX2dpc3QuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9uZXR3b3JrX2dpc3QuYwpp bmRleCBhMDhjNDk1Mzc4OS4uMzAxNDVmNTk4NWEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC9uZXR3b3JrX2dpc3QuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQv bmV0d29ya19naXN0LmMKQEAgLTQ3NSw3ICs0NzUsNyBAQCBidWlsZF9pbmV0X3VuaW9uX2tl eShpbnQgZmFtaWx5LCBpbnQgbWluYml0cywgaW50IGNvbW1vbmJpdHMsCiAJR2lzdEluZXRL ZXkgKnJlc3VsdDsKIAogCS8qIE1ha2Ugc3VyZSBhbnkgdW51c2VkIGJpdHMgYXJlIHplcm9l ZC4gKi8KLQlyZXN1bHQgPSAoR2lzdEluZXRLZXkgKikgcGFsbG9jMChzaXplb2YoR2lzdElu ZXRLZXkpKTsKKwlyZXN1bHQgPSBwYWxsb2MwX29iamVjdChHaXN0SW5ldEtleSk7CiAKIAln a19pcF9mYW1pbHkocmVzdWx0KSA9IGZhbWlseTsKIAlna19pcF9taW5iaXRzKHJlc3VsdCkg PSBtaW5iaXRzOwpAQCAtNTQ2LDEzICs1NDYsMTMgQEAgaW5ldF9naXN0X2NvbXByZXNzKFBH X0ZVTkNUSU9OX0FSR1MpCiAKIAlpZiAoZW50cnktPmxlYWZrZXkpCiAJewotCQlyZXR2YWwg PSBwYWxsb2Moc2l6ZW9mKEdJU1RFTlRSWSkpOworCQlyZXR2YWwgPSBwYWxsb2Nfb2JqZWN0 KEdJU1RFTlRSWSk7CiAJCWlmIChEYXR1bUdldFBvaW50ZXIoZW50cnktPmtleSkgIT0gTlVM TCkKIAkJewogCQkJaW5ldAkgICAqaW4gPSBEYXR1bUdldEluZXRQUChlbnRyeS0+a2V5KTsK IAkJCUdpc3RJbmV0S2V5ICpyOwogCi0JCQlyID0gKEdpc3RJbmV0S2V5ICopIHBhbGxvYzAo c2l6ZW9mKEdpc3RJbmV0S2V5KSk7CisJCQlyID0gcGFsbG9jMF9vYmplY3QoR2lzdEluZXRL ZXkpOwogCiAJCQlna19pcF9mYW1pbHkocikgPSBpcF9mYW1pbHkoaW4pOwogCQkJZ2tfaXBf bWluYml0cyhyKSA9IGlwX2JpdHMoaW4pOwpAQCAtNTk0LDE0ICs1OTQsMTQgQEAgaW5ldF9n aXN0X2ZldGNoKFBHX0ZVTkNUSU9OX0FSR1MpCiAJR0lTVEVOVFJZICAqcmV0dmFsOwogCWlu ZXQJICAgKmRzdDsKIAotCWRzdCA9IChpbmV0ICopIHBhbGxvYzAoc2l6ZW9mKGluZXQpKTsK Kwlkc3QgPSBwYWxsb2MwX29iamVjdChpbmV0KTsKIAogCWlwX2ZhbWlseShkc3QpID0gZ2tf aXBfZmFtaWx5KGtleSk7CiAJaXBfYml0cyhkc3QpID0gZ2tfaXBfbWluYml0cyhrZXkpOwog CW1lbWNweShpcF9hZGRyKGRzdCksIGdrX2lwX2FkZHIoa2V5KSwgaXBfYWRkcnNpemUoZHN0 KSk7CiAJU0VUX0lORVRfVkFSU0laRShkc3QpOwogCi0JcmV0dmFsID0gcGFsbG9jKHNpemVv ZihHSVNURU5UUlkpKTsKKwlyZXR2YWwgPSBwYWxsb2Nfb2JqZWN0KEdJU1RFTlRSWSk7CiAJ Z2lzdGVudHJ5aW5pdCgqcmV0dmFsLCBJbmV0UEdldERhdHVtKGRzdCksIGVudHJ5LT5yZWws IGVudHJ5LT5wYWdlLAogCQkJCSAgZW50cnktPm9mZnNldCwgZmFsc2UpOwogCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvbmV0d29ya19zcGdpc3QuYyBiL3NyYy9iYWNr ZW5kL3V0aWxzL2FkdC9uZXR3b3JrX3NwZ2lzdC5jCmluZGV4IGE4NDc0N2Q5Mjc1Li4yZjFl NThlOWI1YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L25ldHdvcmtfc3Bn aXN0LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L25ldHdvcmtfc3BnaXN0LmMKQEAg LTE5Niw4ICsxOTYsOCBAQCBpbmV0X3NwZ19waWNrc3BsaXQoUEdfRlVOQ1RJT05fQVJHUykK IAogCS8qIERvbid0IG5lZWQgbGFiZWxzOyBhbGxvY2F0ZSBvdXRwdXQgYXJyYXlzICovCiAJ b3V0LT5ub2RlTGFiZWxzID0gTlVMTDsKLQlvdXQtPm1hcFR1cGxlc1RvTm9kZXMgPSAoaW50 ICopIHBhbGxvYyhzaXplb2YoaW50KSAqIGluLT5uVHVwbGVzKTsKLQlvdXQtPmxlYWZUdXBs ZURhdHVtcyA9IChEYXR1bSAqKSBwYWxsb2Moc2l6ZW9mKERhdHVtKSAqIGluLT5uVHVwbGVz KTsKKwlvdXQtPm1hcFR1cGxlc1RvTm9kZXMgPSBwYWxsb2NfYXJyYXkoaW50LCBpbi0+blR1 cGxlcyk7IAorCW91dC0+bGVhZlR1cGxlRGF0dW1zID0gcGFsbG9jX2FycmF5KERhdHVtLCBp bi0+blR1cGxlcyk7CiAKIAlpZiAoZGlmZmVyZW50RmFtaWxpZXMpCiAJewpAQCAtMzAxLDcg KzMwMSw3IEBAIGluZXRfc3BnX2lubmVyX2NvbnNpc3RlbnQoUEdfRlVOQ1RJT05fQVJHUykK IAogCWlmICh3aGljaCkKIAl7Ci0JCW91dC0+bm9kZU51bWJlcnMgPSAoaW50ICopIHBhbGxv YyhzaXplb2YoaW50KSAqIGluLT5uTm9kZXMpOworCQlvdXQtPm5vZGVOdW1iZXJzID0gcGFs bG9jX2FycmF5KGludCwgaW4tPm5Ob2Rlcyk7CiAKIAkJZm9yIChpID0gMDsgaSA8IGluLT5u Tm9kZXM7IGkrKykKIAkJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L251 bWVyaWMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9udW1lcmljLmMKaW5kZXggMjUwMTAw N2Q5ODEuLjZlODEwMmEwNDU5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQv bnVtZXJpYy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9udW1lcmljLmMKQEAgLTE3 NTksOCArMTc1OSw3IEBAIGdlbmVyYXRlX3Nlcmllc19zdGVwX251bWVyaWMoUEdfRlVOQ1RJ T05fQVJHUykKIAkJb2xkY29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhmdW5jY3R4 LT5tdWx0aV9jYWxsX21lbW9yeV9jdHgpOwogCiAJCS8qIGFsbG9jYXRlIG1lbW9yeSBmb3Ig dXNlciBjb250ZXh0ICovCi0JCWZjdHggPSAoZ2VuZXJhdGVfc2VyaWVzX251bWVyaWNfZmN0 eCAqKQotCQkJcGFsbG9jKHNpemVvZihnZW5lcmF0ZV9zZXJpZXNfbnVtZXJpY19mY3R4KSk7 CisJCWZjdHggPSBwYWxsb2Nfb2JqZWN0KGdlbmVyYXRlX3Nlcmllc19udW1lcmljX2ZjdHgp OwogCiAJCS8qCiAJCSAqIFVzZSBmY3R4IHRvIGtlZXAgc3RhdGUgZnJvbSBjYWxsIHRvIGNh bGwuIFNlZWQgY3VycmVudCB3aXRoIHRoZQpAQCAtMjExNyw3ICsyMTE2LDcgQEAgbnVtZXJp Y19zb3J0c3VwcG9ydChQR19GVU5DVElPTl9BUkdTKQogCQlOdW1lcmljU29ydFN1cHBvcnQg Km5zczsKIAkJTWVtb3J5Q29udGV4dCBvbGRjb250ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRj aFRvKHNzdXAtPnNzdXBfY3h0KTsKIAotCQluc3MgPSBwYWxsb2Moc2l6ZW9mKE51bWVyaWNT b3J0U3VwcG9ydCkpOworCQluc3MgPSBwYWxsb2Nfb2JqZWN0KE51bWVyaWNTb3J0U3VwcG9y dCk7CiAKIAkJLyoKIAkJICogcGFsbG9jIGEgYnVmZmVyIGZvciBoYW5kbGluZyB1bmFsaWdu ZWQgcGFja2VkIHZhbHVlcyBpbiBhZGRpdGlvbiB0bwpAQCAtNDc1NCw3ICs0NzUzLDcgQEAg bWFrZU51bWVyaWNBZ2dTdGF0ZShGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbywgYm9vbCBjYWxj U3VtWDIpCiAKIAlvbGRfY29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhhZ2dfY29u dGV4dCk7CiAKLQlzdGF0ZSA9IChOdW1lcmljQWdnU3RhdGUgKikgcGFsbG9jMChzaXplb2Yo TnVtZXJpY0FnZ1N0YXRlKSk7CisJc3RhdGUgPSBwYWxsb2MwX29iamVjdChOdW1lcmljQWdn U3RhdGUpOwogCXN0YXRlLT5jYWxjU3VtWDIgPSBjYWxjU3VtWDI7CiAJc3RhdGUtPmFnZ19j b250ZXh0ID0gYWdnX2NvbnRleHQ7CiAKQEAgLTQ3NzIsNyArNDc3MSw3IEBAIG1ha2VOdW1l cmljQWdnU3RhdGVDdXJyZW50Q29udGV4dChib29sIGNhbGNTdW1YMikKIHsKIAlOdW1lcmlj QWdnU3RhdGUgKnN0YXRlOwogCi0Jc3RhdGUgPSAoTnVtZXJpY0FnZ1N0YXRlICopIHBhbGxv YzAoc2l6ZW9mKE51bWVyaWNBZ2dTdGF0ZSkpOworCXN0YXRlID0gcGFsbG9jMF9vYmplY3Qo TnVtZXJpY0FnZ1N0YXRlKTsKIAlzdGF0ZS0+Y2FsY1N1bVgyID0gY2FsY1N1bVgyOwogCXN0 YXRlLT5hZ2dfY29udGV4dCA9IEN1cnJlbnRNZW1vcnlDb250ZXh0OwogCkBAIC01NDE4LDcg KzU0MTcsNyBAQCBtYWtlSW50MTI4QWdnU3RhdGUoRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8s IGJvb2wgY2FsY1N1bVgyKQogCiAJb2xkX2NvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNo VG8oYWdnX2NvbnRleHQpOwogCi0Jc3RhdGUgPSAoSW50MTI4QWdnU3RhdGUgKikgcGFsbG9j MChzaXplb2YoSW50MTI4QWdnU3RhdGUpKTsKKwlzdGF0ZSA9IHBhbGxvYzBfb2JqZWN0KElu dDEyOEFnZ1N0YXRlKTsKIAlzdGF0ZS0+Y2FsY1N1bVgyID0gY2FsY1N1bVgyOwogCiAJTWVt b3J5Q29udGV4dFN3aXRjaFRvKG9sZF9jb250ZXh0KTsKQEAgLTU0MzUsNyArNTQzNCw3IEBA IG1ha2VJbnQxMjhBZ2dTdGF0ZUN1cnJlbnRDb250ZXh0KGJvb2wgY2FsY1N1bVgyKQogewog CUludDEyOEFnZ1N0YXRlICpzdGF0ZTsKIAotCXN0YXRlID0gKEludDEyOEFnZ1N0YXRlICop IHBhbGxvYzAoc2l6ZW9mKEludDEyOEFnZ1N0YXRlKSk7CisJc3RhdGUgPSBwYWxsb2MwX29i amVjdChJbnQxMjhBZ2dTdGF0ZSk7CiAJc3RhdGUtPmNhbGNTdW1YMiA9IGNhbGNTdW1YMjsK IAogCXJldHVybiBzdGF0ZTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9v cmRlcmVkc2V0YWdncy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L29yZGVyZWRzZXRhZ2dz LmMKaW5kZXggMjEyMWNjMDVmMjguLmFjMzk2M2ZjM2UwIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC91dGlscy9hZHQvb3JkZXJlZHNldGFnZ3MuYworKysgYi9zcmMvYmFja2VuZC91dGls cy9hZHQvb3JkZXJlZHNldGFnZ3MuYwpAQCAtMTUzLDcgKzE1Myw3IEBAIG9yZGVyZWRfc2V0 X3N0YXJ0dXAoRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8sIGJvb2wgdXNlX3R1cGxlcykKIAkJ cWNvbnRleHQgPSBmY2luZm8tPmZsaW5mby0+Zm5fbWN4dDsKIAkJb2xkY29udGV4dCA9IE1l bW9yeUNvbnRleHRTd2l0Y2hUbyhxY29udGV4dCk7CiAKLQkJcXN0YXRlID0gKE9TQVBlclF1 ZXJ5U3RhdGUgKikgcGFsbG9jMChzaXplb2YoT1NBUGVyUXVlcnlTdGF0ZSkpOworCQlxc3Rh dGUgPSBwYWxsb2MwX29iamVjdChPU0FQZXJRdWVyeVN0YXRlKTsKIAkJcXN0YXRlLT5hZ2dy ZWYgPSBhZ2dyZWY7CiAJCXFzdGF0ZS0+cWNvbnRleHQgPSBxY29udGV4dDsKIApAQCAtMjc4 LDcgKzI3OCw3IEBAIG9yZGVyZWRfc2V0X3N0YXJ0dXAoRnVuY3Rpb25DYWxsSW5mbyBmY2lu Zm8sIGJvb2wgdXNlX3R1cGxlcykKIAkvKiBOb3cgYnVpbGQgdGhlIHN0dWZmIHdlIG5lZWQg aW4gZ3JvdXAtbGlmZXNwYW4gY29udGV4dCAqLwogCW9sZGNvbnRleHQgPSBNZW1vcnlDb250 ZXh0U3dpdGNoVG8oZ2NvbnRleHQpOwogCi0Jb3Nhc3RhdGUgPSAoT1NBUGVyR3JvdXBTdGF0 ZSAqKSBwYWxsb2Moc2l6ZW9mKE9TQVBlckdyb3VwU3RhdGUpKTsKKwlvc2FzdGF0ZSA9IHBh bGxvY19vYmplY3QoT1NBUGVyR3JvdXBTdGF0ZSk7CiAJb3Nhc3RhdGUtPnFzdGF0ZSA9IHFz dGF0ZTsKIAlvc2FzdGF0ZS0+Z2NvbnRleHQgPSBnY29udGV4dDsKIApkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvdXRpbHMvYWR0L3BnX2xvY2FsZV9saWJjLmMgYi9zcmMvYmFja2VuZC91 dGlscy9hZHQvcGdfbG9jYWxlX2xpYmMuYwppbmRleCA3MTZmMDA1MDY2YS4uNjNiMzBlZTU3 MmIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ19sb2NhbGVfbGliYy5j CisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ19sb2NhbGVfbGliYy5jCkBAIC00ODUs NyArNDg1LDcgQEAgc3RybG93ZXJfbGliY19tYihjaGFyICpkZXN0LCBzaXplX3QgZGVzdHNp emUsIGNvbnN0IGNoYXIgKnNyYywgc3NpemVfdCBzcmNsZW4sCiAJCQkJIGVycm1zZygib3V0 IG9mIG1lbW9yeSIpKSk7CiAKIAkvKiBPdXRwdXQgd29ya3NwYWNlIGNhbm5vdCBoYXZlIG1v cmUgY29kZXMgdGhhbiBpbnB1dCBieXRlcyAqLwotCXdvcmtzcGFjZSA9ICh3Y2hhcl90ICop IHBhbGxvYygoc3JjbGVuICsgMSkgKiBzaXplb2Yod2NoYXJfdCkpOworCXdvcmtzcGFjZSA9 IHBhbGxvY19hcnJheSh3Y2hhcl90LCBzcmNsZW4gKyAxKTsKIAogCWNoYXIyd2NoYXIod29y a3NwYWNlLCBzcmNsZW4gKyAxLCBzcmMsIHNyY2xlbiwgbG9jKTsKIApAQCAtNTkwLDcgKzU5 MCw3IEBAIHN0cnRpdGxlX2xpYmNfbWIoY2hhciAqZGVzdCwgc2l6ZV90IGRlc3RzaXplLCBj b25zdCBjaGFyICpzcmMsIHNzaXplX3Qgc3JjbGVuLAogCQkJCSBlcnJtc2coIm91dCBvZiBt ZW1vcnkiKSkpOwogCiAJLyogT3V0cHV0IHdvcmtzcGFjZSBjYW5ub3QgaGF2ZSBtb3JlIGNv ZGVzIHRoYW4gaW5wdXQgYnl0ZXMgKi8KLQl3b3Jrc3BhY2UgPSAod2NoYXJfdCAqKSBwYWxs b2MoKHNyY2xlbiArIDEpICogc2l6ZW9mKHdjaGFyX3QpKTsKKwl3b3Jrc3BhY2UgPSBwYWxs b2NfYXJyYXkod2NoYXJfdCwgc3JjbGVuICsgMSk7CiAKIAljaGFyMndjaGFyKHdvcmtzcGFj ZSwgc3JjbGVuICsgMSwgc3JjLCBzcmNsZW4sIGxvYyk7CiAKQEAgLTY4Myw3ICs2ODMsNyBA QCBzdHJ1cHBlcl9saWJjX21iKGNoYXIgKmRlc3QsIHNpemVfdCBkZXN0c2l6ZSwgY29uc3Qg Y2hhciAqc3JjLCBzc2l6ZV90IHNyY2xlbiwKIAkJCQkgZXJybXNnKCJvdXQgb2YgbWVtb3J5 IikpKTsKIAogCS8qIE91dHB1dCB3b3Jrc3BhY2UgY2Fubm90IGhhdmUgbW9yZSBjb2RlcyB0 aGFuIGlucHV0IGJ5dGVzICovCi0Jd29ya3NwYWNlID0gKHdjaGFyX3QgKikgcGFsbG9jKChz cmNsZW4gKyAxKSAqIHNpemVvZih3Y2hhcl90KSk7CisJd29ya3NwYWNlID0gcGFsbG9jX2Fy cmF5KHdjaGFyX3QsIHNyY2xlbiArIDEpOwogCiAJY2hhcjJ3Y2hhcih3b3Jrc3BhY2UsIHNy Y2xlbiArIDEsIHNyYywgc3JjbGVuLCBsb2MpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC91dGlscy9hZHQvcmFuZ2V0eXBlcy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Jhbmdl dHlwZXMuYwppbmRleCAwNjVhODAwMGNmMi4uZTMxZWJkMGEyZGUgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3V0aWxzL2FkdC9yYW5nZXR5cGVzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRp bHMvYWR0L3JhbmdldHlwZXMuYwpAQCAtMTI1OCw3ICsxMjU4LDcgQEAgcmFuZ2VfbWludXNf bXVsdGkoUEdfRlVOQ1RJT05fQVJHUykKIAkJCWVsb2coRVJST1IsICJyYW5nZSB0eXBlcyBk byBub3QgbWF0Y2giKTsKIAogCQkvKiBhbGxvY2F0ZSBtZW1vcnkgZm9yIHVzZXIgY29udGV4 dCAqLwotCQlmY3R4ID0gKHN0cnVjdCByYW5nZV9taW51c19tdWx0aV9mY3R4ICopIHBhbGxv YyhzaXplb2Yoc3RydWN0IHJhbmdlX21pbnVzX211bHRpX2ZjdHgpKTsKKwkJZmN0eCA9IHBh bGxvY19vYmplY3Qoc3RydWN0IHJhbmdlX21pbnVzX211bHRpX2ZjdHgpOwogCiAJCS8qCiAJ CSAqIEluaXRpYWxpemUgc3RhdGUuIFdlIGNhbid0IHN0b3JlIHRoZSByYW5nZSB0eXBjYWNo ZSBpbiBmbl9leHRyYQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Jhbmdl dHlwZXNfZ2lzdC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3JhbmdldHlwZXNfZ2lzdC5j CmluZGV4IGE2MGVlOTg1ZTc0Li4zM2M3MDVlNmE4NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvdXRpbHMvYWR0L3JhbmdldHlwZXNfZ2lzdC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxz L2FkdC9yYW5nZXR5cGVzX2dpc3QuYwpAQCAtMjUxLDcgKzI1MSw3IEBAIG11bHRpcmFuZ2Vf Z2lzdF9jb21wcmVzcyhQR19GVU5DVElPTl9BUkdTKQogCQlNdWx0aXJhbmdlVHlwZSAqbXIg PSBEYXR1bUdldE11bHRpcmFuZ2VUeXBlUChlbnRyeS0+a2V5KTsKIAkJUmFuZ2VUeXBlICAq cjsKIAkJVHlwZUNhY2hlRW50cnkgKnR5cGNhY2hlOwotCQlHSVNURU5UUlkgICpyZXR2YWwg PSBwYWxsb2Moc2l6ZW9mKEdJU1RFTlRSWSkpOworCQlHSVNURU5UUlkgICpyZXR2YWwgPSBw YWxsb2Nfb2JqZWN0KEdJU1RFTlRSWSk7CiAKIAkJdHlwY2FjaGUgPSBtdWx0aXJhbmdlX2dl dF90eXBjYWNoZShmY2luZm8sIE11bHRpcmFuZ2VUeXBlR2V0T2lkKG1yKSk7CiAJCXIgPSBt dWx0aXJhbmdlX2dldF91bmlvbl9yYW5nZSh0eXBjYWNoZS0+cm5ndHlwZSwgbXIpOwpAQCAt MTI0MCw4ICsxMjQwLDcgQEAgcmFuZ2VfZ2lzdF9zaW5nbGVfc29ydGluZ19zcGxpdChUeXBl Q2FjaGVFbnRyeSAqdHlwY2FjaGUsCiAKIAltYXhvZmYgPSBlbnRyeXZlYy0+biAtIDE7CiAK LQlzb3J0SXRlbXMgPSAoU2luZ2xlQm91bmRTb3J0SXRlbSAqKQotCQlwYWxsb2MobWF4b2Zm ICogc2l6ZW9mKFNpbmdsZUJvdW5kU29ydEl0ZW0pKTsKKwlzb3J0SXRlbXMgPSBwYWxsb2Nf YXJyYXkoU2luZ2xlQm91bmRTb3J0SXRlbSwgbWF4b2ZmKTsKIAogCS8qCiAJICogUHJlcGFy ZSBhdXhpbGlhcnkgYXJyYXkgYW5kIHNvcnQgdGhlIHZhbHVlcy4KQEAgLTEzNDMsOCArMTM0 Miw4IEBAIHJhbmdlX2dpc3RfZG91YmxlX3NvcnRpbmdfc3BsaXQoVHlwZUNhY2hlRW50cnkg KnR5cGNhY2hlLAogCWNvbnRleHQuZmlyc3QgPSB0cnVlOwogCiAJLyogQWxsb2NhdGUgYXJy YXlzIGZvciBzb3J0ZWQgcmFuZ2UgYm91bmRzICovCi0JYnlfbG93ZXIgPSAoTm9uRW1wdHlS YW5nZSAqKSBwYWxsb2MobmVudHJpZXMgKiBzaXplb2YoTm9uRW1wdHlSYW5nZSkpOwotCWJ5 X3VwcGVyID0gKE5vbkVtcHR5UmFuZ2UgKikgcGFsbG9jKG5lbnRyaWVzICogc2l6ZW9mKE5v bkVtcHR5UmFuZ2UpKTsKKwlieV9sb3dlciA9IHBhbGxvY19hcnJheShOb25FbXB0eVJhbmdl LCBuZW50cmllcyk7CisJYnlfdXBwZXIgPSBwYWxsb2NfYXJyYXkoTm9uRW1wdHlSYW5nZSwg bmVudHJpZXMpOwogCiAJLyogRmlsbCBhcnJheXMgb2YgYm91bmRzICovCiAJZm9yIChpID0g Rmlyc3RPZmZzZXROdW1iZXI7IGkgPD0gbWF4b2ZmOyBpID0gT2Zmc2V0TnVtYmVyTmV4dChp KSkKQEAgLTE0OTksOCArMTQ5OCw4IEBAIHJhbmdlX2dpc3RfZG91YmxlX3NvcnRpbmdfc3Bs aXQoVHlwZUNhY2hlRW50cnkgKnR5cGNhY2hlLAogCSAqLwogCiAJLyogQWxsb2NhdGUgdmVj dG9ycyBmb3IgcmVzdWx0cyAqLwotCXYtPnNwbF9sZWZ0ID0gKE9mZnNldE51bWJlciAqKSBw YWxsb2MobmVudHJpZXMgKiBzaXplb2YoT2Zmc2V0TnVtYmVyKSk7Ci0Jdi0+c3BsX3JpZ2h0 ID0gKE9mZnNldE51bWJlciAqKSBwYWxsb2MobmVudHJpZXMgKiBzaXplb2YoT2Zmc2V0TnVt YmVyKSk7CisJdi0+c3BsX2xlZnQgPSBwYWxsb2NfYXJyYXkoT2Zmc2V0TnVtYmVyLCBuZW50 cmllcyk7CisJdi0+c3BsX3JpZ2h0ID0gcGFsbG9jX2FycmF5KE9mZnNldE51bWJlciwgbmVu dHJpZXMpOwogCXYtPnNwbF9ubGVmdCA9IDA7CiAJdi0+c3BsX25yaWdodCA9IDA7CiAKQEAg LTE1MDksNyArMTUwOCw3IEBAIHJhbmdlX2dpc3RfZG91YmxlX3NvcnRpbmdfc3BsaXQoVHlw ZUNhY2hlRW50cnkgKnR5cGNhY2hlLAogCSAqIGVpdGhlciBncm91cCB3aXRob3V0IGFmZmVj dGluZyBvdmVybGFwIGFsb25nIHNlbGVjdGVkIGF4aXMuCiAJICovCiAJY29tbW9uX2VudHJp ZXNfY291bnQgPSAwOwotCWNvbW1vbl9lbnRyaWVzID0gKENvbW1vbkVudHJ5ICopIHBhbGxv YyhuZW50cmllcyAqIHNpemVvZihDb21tb25FbnRyeSkpOworCWNvbW1vbl9lbnRyaWVzID0g cGFsbG9jX2FycmF5KENvbW1vbkVudHJ5LCBuZW50cmllcyk7CiAKIAkvKgogCSAqIERpc3Ry aWJ1dGUgZW50cmllcyB3aGljaCBjYW4gYmUgZGlzdHJpYnV0ZWQgdW5hbWJpZ3VvdXNseSwg YW5kIGNvbGxlY3QKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9yYW5nZXR5 cGVzX3NlbGZ1bmNzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcmFuZ2V0eXBlc19zZWxm dW5jcy5jCmluZGV4IGQ4NTI1MmNhZmIyLi4yN2Q3MzZhNDBlNSAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L3JhbmdldHlwZXNfc2VsZnVuY3MuYworKysgYi9zcmMvYmFj a2VuZC91dGlscy9hZHQvcmFuZ2V0eXBlc19zZWxmdW5jcy5jCkBAIC00MTIsOCArNDEyLDgg QEAgY2FsY19oaXN0X3NlbGVjdGl2aXR5KFR5cGVDYWNoZUVudHJ5ICp0eXBjYWNoZSwgVmFy aWFibGVTdGF0RGF0YSAqdmFyZGF0YSwKIAkgKiBib3VuZHMuCiAJICovCiAJbmhpc3QgPSBo c2xvdC5udmFsdWVzOwotCWhpc3RfbG93ZXIgPSAoUmFuZ2VCb3VuZCAqKSBwYWxsb2Moc2l6 ZW9mKFJhbmdlQm91bmQpICogbmhpc3QpOwotCWhpc3RfdXBwZXIgPSAoUmFuZ2VCb3VuZCAq KSBwYWxsb2Moc2l6ZW9mKFJhbmdlQm91bmQpICogbmhpc3QpOworCWhpc3RfbG93ZXIgPSBw YWxsb2NfYXJyYXkoUmFuZ2VCb3VuZCwgbmhpc3QpOworCWhpc3RfdXBwZXIgPSBwYWxsb2Nf YXJyYXkoUmFuZ2VCb3VuZCwgbmhpc3QpOwogCWZvciAoaSA9IDA7IGkgPCBuaGlzdDsgaSsr KQogCXsKIAkJcmFuZ2VfZGVzZXJpYWxpemUodHlwY2FjaGUsIERhdHVtR2V0UmFuZ2VUeXBl UChoc2xvdC52YWx1ZXNbaV0pLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L3JhbmdldHlwZXNfc3BnaXN0LmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcmFuZ2V0eXBl c19zcGdpc3QuYwppbmRleCBiZTUxOTY1NDg4MC4uMTRlNWQ2MDY1ZjggMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9yYW5nZXR5cGVzX3NwZ2lzdC5jCisrKyBiL3NyYy9i YWNrZW5kL3V0aWxzL2FkdC9yYW5nZXR5cGVzX3NwZ2lzdC5jCkBAIC0yMTYsOCArMjE2LDgg QEAgc3BnX3JhbmdlX3F1YWRfcGlja3NwbGl0KFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQkJCQkJ CSAgUmFuZ2VUeXBlR2V0T2lkKERhdHVtR2V0UmFuZ2VUeXBlUChpbi0+ZGF0dW1zWzBdKSkp OwogCiAJLyogQWxsb2NhdGUgbWVtb3J5IGZvciBib3VuZHMgKi8KLQlsb3dlckJvdW5kcyA9 IHBhbGxvYyhzaXplb2YoUmFuZ2VCb3VuZCkgKiBpbi0+blR1cGxlcyk7Ci0JdXBwZXJCb3Vu ZHMgPSBwYWxsb2Moc2l6ZW9mKFJhbmdlQm91bmQpICogaW4tPm5UdXBsZXMpOworCWxvd2Vy Qm91bmRzID0gcGFsbG9jX2FycmF5KFJhbmdlQm91bmQsIGluLT5uVHVwbGVzKTsKKwl1cHBl ckJvdW5kcyA9IHBhbGxvY19hcnJheShSYW5nZUJvdW5kLCBpbi0+blR1cGxlcyk7CiAJaiA9 IDA7CiAKIAkvKiBEZXNlcmlhbGl6ZSBib3VuZHMgb2YgcmFuZ2VzLCBjb3VudCBub24tZW1w dHkgcmFuZ2VzICovCkBAIC0yNDMsOCArMjQzLDggQEAgc3BnX3JhbmdlX3F1YWRfcGlja3Nw bGl0KFBHX0ZVTkNUSU9OX0FSR1MpCiAJCW91dC0+cHJlZml4RGF0dW0gPSBQb2ludGVyR2V0 RGF0dW0oTlVMTCk7CiAJCW91dC0+bm9kZUxhYmVscyA9IE5VTEw7CiAKLQkJb3V0LT5tYXBU dXBsZXNUb05vZGVzID0gcGFsbG9jKHNpemVvZihpbnQpICogaW4tPm5UdXBsZXMpOwotCQlv dXQtPmxlYWZUdXBsZURhdHVtcyA9IHBhbGxvYyhzaXplb2YoRGF0dW0pICogaW4tPm5UdXBs ZXMpOworCQlvdXQtPm1hcFR1cGxlc1RvTm9kZXMgPSBwYWxsb2NfYXJyYXkoaW50LCBpbi0+ blR1cGxlcyk7CisJCW91dC0+bGVhZlR1cGxlRGF0dW1zID0gcGFsbG9jX2FycmF5KERhdHVt LCBpbi0+blR1cGxlcyk7CiAKIAkJLyogUGxhY2UgYWxsIHJhbmdlcyBpbnRvIG5vZGUgMCAq LwogCQlmb3IgKGkgPSAwOyBpIDwgaW4tPm5UdXBsZXM7IGkrKykKQEAgLTI3Myw4ICsyNzMs OCBAQCBzcGdfcmFuZ2VfcXVhZF9waWNrc3BsaXQoUEdfRlVOQ1RJT05fQVJHUykKIAlvdXQt Pm5Ob2RlcyA9IChpbi0+bGV2ZWwgPT0gMCkgPyA1IDogNDsKIAlvdXQtPm5vZGVMYWJlbHMg PSBOVUxMOwkJLyogd2UgZG9uJ3QgbmVlZCBub2RlIGxhYmVscyAqLwogCi0Jb3V0LT5tYXBU dXBsZXNUb05vZGVzID0gcGFsbG9jKHNpemVvZihpbnQpICogaW4tPm5UdXBsZXMpOwotCW91 dC0+bGVhZlR1cGxlRGF0dW1zID0gcGFsbG9jKHNpemVvZihEYXR1bSkgKiBpbi0+blR1cGxl cyk7CisJb3V0LT5tYXBUdXBsZXNUb05vZGVzID0gcGFsbG9jX2FycmF5KGludCwgaW4tPm5U dXBsZXMpOworCW91dC0+bGVhZlR1cGxlRGF0dW1zID0gcGFsbG9jX2FycmF5KERhdHVtLCBp bi0+blR1cGxlcyk7CiAKIAkvKgogCSAqIEFzc2lnbiByYW5nZXMgdG8gY29ycmVzcG9uZGlu ZyBub2RlcyBhY2NvcmRpbmcgdG8gcXVhZHJhbnRzIHJlbGF0aXZlIHRvCkBAIC0zMTYsNyAr MzE2LDcgQEAgc3BnX3JhbmdlX3F1YWRfaW5uZXJfY29uc2lzdGVudChQR19GVU5DVElPTl9B UkdTKQogCXsKIAkJLyogUmVwb3J0IHRoYXQgYWxsIG5vZGVzIHNob3VsZCBiZSB2aXNpdGVk ICovCiAJCW91dC0+bk5vZGVzID0gaW4tPm5Ob2RlczsKLQkJb3V0LT5ub2RlTnVtYmVycyA9 IChpbnQgKikgcGFsbG9jKHNpemVvZihpbnQpICogaW4tPm5Ob2Rlcyk7CisJCW91dC0+bm9k ZU51bWJlcnMgPSBwYWxsb2NfYXJyYXkoaW50LCBpbi0+bk5vZGVzKTsKIAkJZm9yIChpID0g MDsgaSA8IGluLT5uTm9kZXM7IGkrKykKIAkJCW91dC0+bm9kZU51bWJlcnNbaV0gPSBpOwog CQlQR19SRVRVUk5fVk9JRCgpOwpAQCAtNzMyLDkgKzczMiw5IEBAIHNwZ19yYW5nZV9xdWFk X2lubmVyX2NvbnNpc3RlbnQoUEdfRlVOQ1RJT05fQVJHUykKIAl9CiAKIAkvKiBXZSBtdXN0 IGRlc2NlbmQgaW50byB0aGUgcXVhZHJhbnQocykgaWRlbnRpZmllZCBieSAnd2hpY2gnICov Ci0Jb3V0LT5ub2RlTnVtYmVycyA9IChpbnQgKikgcGFsbG9jKHNpemVvZihpbnQpICogaW4t Pm5Ob2Rlcyk7CisJb3V0LT5ub2RlTnVtYmVycyA9IHBhbGxvY19hcnJheShpbnQsIGluLT5u Tm9kZXMpOwogCWlmIChuZWVkUHJldmlvdXMpCi0JCW91dC0+dHJhdmVyc2FsVmFsdWVzID0g KHZvaWQgKiopIHBhbGxvYyhzaXplb2Yodm9pZCAqKSAqIGluLT5uTm9kZXMpOworCQlvdXQt PnRyYXZlcnNhbFZhbHVlcyA9IHBhbGxvY19hcnJheSh2b2lkICosIGluLT5uTm9kZXMpOwog CW91dC0+bk5vZGVzID0gMDsKIAogCS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGls cy9hZHQvcmFuZ2V0eXBlc190eXBhbmFseXplLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQv cmFuZ2V0eXBlc190eXBhbmFseXplLmMKaW5kZXggMzZlODg1YWYyZGQuLjQ1ZWE2Y2JjNzgw IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcmFuZ2V0eXBlc190eXBhbmFs eXplLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3JhbmdldHlwZXNfdHlwYW5hbHl6 ZS5jCkBAIC0xNTEsOSArMTUxLDkgQEAgY29tcHV0ZV9yYW5nZV9zdGF0cyhWYWNBdHRyU3Rh dHMgKnN0YXRzLCBBbmFseXplQXR0ckZldGNoRnVuYyBmZXRjaGZ1bmMsCiAJaGFzX3N1YmRp ZmYgPSBPaWRJc1ZhbGlkKHR5cGNhY2hlLT5ybmdfc3ViZGlmZl9maW5mby5mbl9vaWQpOwog CiAJLyogQWxsb2NhdGUgbWVtb3J5IHRvIGhvbGQgcmFuZ2UgYm91bmRzIGFuZCBsZW5ndGhz IG9mIHRoZSBzYW1wbGUgcmFuZ2VzLiAqLwotCWxvd2VycyA9IChSYW5nZUJvdW5kICopIHBh bGxvYyhzaXplb2YoUmFuZ2VCb3VuZCkgKiBzYW1wbGVyb3dzKTsKLQl1cHBlcnMgPSAoUmFu Z2VCb3VuZCAqKSBwYWxsb2Moc2l6ZW9mKFJhbmdlQm91bmQpICogc2FtcGxlcm93cyk7Ci0J bGVuZ3RocyA9IChmbG9hdDggKikgcGFsbG9jKHNpemVvZihmbG9hdDgpICogc2FtcGxlcm93 cyk7CisJbG93ZXJzID0gcGFsbG9jX2FycmF5KFJhbmdlQm91bmQsIHNhbXBsZXJvd3MpOwor CXVwcGVycyA9IHBhbGxvY19hcnJheShSYW5nZUJvdW5kLCBzYW1wbGVyb3dzKTsKKwlsZW5n dGhzID0gcGFsbG9jX2FycmF5KGZsb2F0OCwgc2FtcGxlcm93cyk7CiAKIAkvKiBMb29wIG92 ZXIgdGhlIHNhbXBsZSByYW5nZXMuICovCiAJZm9yIChyYW5nZV9ubyA9IDA7IHJhbmdlX25v IDwgc2FtcGxlcm93czsgcmFuZ2Vfbm8rKykKQEAgLTQwMSw3ICs0MDEsNyBAQCBjb21wdXRl X3JhbmdlX3N0YXRzKFZhY0F0dHJTdGF0cyAqc3RhdHMsIEFuYWx5emVBdHRyRmV0Y2hGdW5j IGZldGNoZnVuYywKIAkJc3RhdHMtPnN0YXR5cGFsaWduW3Nsb3RfaWR4XSA9ICdkJzsKIAog CQkvKiBTdG9yZSB0aGUgZnJhY3Rpb24gb2YgZW1wdHkgcmFuZ2VzICovCi0JCWVtcHR5ZnJh YyA9IChmbG9hdDQgKikgcGFsbG9jKHNpemVvZihmbG9hdDQpKTsKKwkJZW1wdHlmcmFjID0g cGFsbG9jX29iamVjdChmbG9hdDQpOwogCQkqZW1wdHlmcmFjID0gKChkb3VibGUpIGVtcHR5 X2NudCkgLyAoKGRvdWJsZSkgbm9uX251bGxfY250KTsKIAkJc3RhdHMtPnN0YW51bWJlcnNb c2xvdF9pZHhdID0gZW1wdHlmcmFjOwogCQlzdGF0cy0+bnVtbnVtYmVyc1tzbG90X2lkeF0g PSAxOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3JlZ2V4cC5jIGIvc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L3JlZ2V4cC5jCmluZGV4IGIwY2RlZjliMTlmLi42NTQyZThj MWRmMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3JlZ2V4cC5jCisrKyBi L3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9yZWdleHAuYwpAQCAtMTg5LDcgKzE4OSw3IEBAIFJF X2NvbXBpbGVfYW5kX2NhY2hlKHRleHQgKnRleHRfcmUsIGludCBjZmxhZ3MsIE9pZCBjb2xs YXRpb24pCiAJICovCiAKIAkvKiBDb252ZXJ0IHBhdHRlcm4gc3RyaW5nIHRvIHdpZGUgY2hh cmFjdGVycyAqLwotCXBhdHRlcm4gPSAocGdfd2NoYXIgKikgcGFsbG9jKCh0ZXh0X3JlX2xl biArIDEpICogc2l6ZW9mKHBnX3djaGFyKSk7CisJcGF0dGVybiA9IHBhbGxvY19hcnJheShw Z193Y2hhciwgdGV4dF9yZV9sZW4gKyAxKTsKIAlwYXR0ZXJuX2xlbiA9IHBnX21iMndjaGFy X3dpdGhfbGVuKHRleHRfcmVfdmFsLAogCQkJCQkJCQkJICAgcGF0dGVybiwKIAkJCQkJCQkJ CSAgIHRleHRfcmVfbGVuKTsKQEAgLTMyOSw3ICszMjksNyBAQCBSRV9leGVjdXRlKHJlZ2V4 X3QgKnJlLCBjaGFyICpkYXQsIGludCBkYXRfbGVuLAogCWJvb2wJCW1hdGNoOwogCiAJLyog Q29udmVydCBkYXRhIHN0cmluZyB0byB3aWRlIGNoYXJhY3RlcnMgKi8KLQlkYXRhID0gKHBn X3djaGFyICopIHBhbGxvYygoZGF0X2xlbiArIDEpICogc2l6ZW9mKHBnX3djaGFyKSk7CisJ ZGF0YSA9IHBhbGxvY19hcnJheShwZ193Y2hhciwgZGF0X2xlbiArIDEpOwogCWRhdGFfbGVu ID0gcGdfbWIyd2NoYXJfd2l0aF9sZW4oZGF0LCBkYXRhLCBkYXRfbGVuKTsKIAogCS8qIFBl cmZvcm0gUkUgbWF0Y2ggYW5kIHJldHVybiByZXN1bHQgKi8KQEAgLTEzODksOCArMTM4OSw4 IEBAIHJlZ2V4cF9tYXRjaChQR19GVU5DVElPTl9BUkdTKQogCUFzc2VydChtYXRjaGN0eC0+ bm1hdGNoZXMgPT0gMSk7CiAKIAkvKiBDcmVhdGUgd29ya3NwYWNlIHRoYXQgYnVpbGRfcmVn ZXhwX21hdGNoX3Jlc3VsdCBuZWVkcyAqLwotCW1hdGNoY3R4LT5lbGVtcyA9IChEYXR1bSAq KSBwYWxsb2Moc2l6ZW9mKERhdHVtKSAqIG1hdGNoY3R4LT5ucGF0dGVybnMpOwotCW1hdGNo Y3R4LT5udWxscyA9IChib29sICopIHBhbGxvYyhzaXplb2YoYm9vbCkgKiBtYXRjaGN0eC0+ bnBhdHRlcm5zKTsKKwltYXRjaGN0eC0+ZWxlbXMgPSBwYWxsb2NfYXJyYXkoRGF0dW0sIG1h dGNoY3R4LT5ucGF0dGVybnMpOworCW1hdGNoY3R4LT5udWxscyA9IHBhbGxvY19hcnJheShi b29sLCBtYXRjaGN0eC0+bnBhdHRlcm5zKTsKIAogCVBHX1JFVFVSTl9EQVRVTShQb2ludGVy R2V0RGF0dW0oYnVpbGRfcmVnZXhwX21hdGNoX3Jlc3VsdChtYXRjaGN0eCkpKTsKIH0KQEAg LTE0MzIsOCArMTQzMiw4IEBAIHJlZ2V4cF9tYXRjaGVzKFBHX0ZVTkNUSU9OX0FSR1MpCiAJ CQkJCQkJCQkJdHJ1ZSwgZmFsc2UsIGZhbHNlKTsKIAogCQkvKiBQcmUtY3JlYXRlIHdvcmtz cGFjZSB0aGF0IGJ1aWxkX3JlZ2V4cF9tYXRjaF9yZXN1bHQgbmVlZHMgKi8KLQkJbWF0Y2hj dHgtPmVsZW1zID0gKERhdHVtICopIHBhbGxvYyhzaXplb2YoRGF0dW0pICogbWF0Y2hjdHgt Pm5wYXR0ZXJucyk7Ci0JCW1hdGNoY3R4LT5udWxscyA9IChib29sICopIHBhbGxvYyhzaXpl b2YoYm9vbCkgKiBtYXRjaGN0eC0+bnBhdHRlcm5zKTsKKwkJbWF0Y2hjdHgtPmVsZW1zID0g cGFsbG9jX2FycmF5KERhdHVtLCBtYXRjaGN0eC0+bnBhdHRlcm5zKTsKKwkJbWF0Y2hjdHgt Pm51bGxzID0gcGFsbG9jX2FycmF5KGJvb2wsIG1hdGNoY3R4LT5ucGF0dGVybnMpOwogCiAJ CU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKIAkJZnVuY2N0eC0+dXNlcl9m Y3R4ID0gbWF0Y2hjdHg7CkBAIC0xNDg5LDcgKzE0ODksNyBAQCBzZXR1cF9yZWdleHBfbWF0 Y2hlcyh0ZXh0ICpvcmlnX3N0ciwgdGV4dCAqcGF0dGVybiwgcGdfcmVfZmxhZ3MgKnJlX2Zs YWdzLAogCQkJCQkgYm9vbCBpZ25vcmVfZGVnZW5lcmF0ZSwKIAkJCQkJIGJvb2wgZmV0Y2hp bmdfdW5tYXRjaGVkKQogewotCXJlZ2V4cF9tYXRjaGVzX2N0eCAqbWF0Y2hjdHggPSBwYWxs b2MwKHNpemVvZihyZWdleHBfbWF0Y2hlc19jdHgpKTsKKwlyZWdleHBfbWF0Y2hlc19jdHgg Km1hdGNoY3R4ID0gcGFsbG9jMF9vYmplY3QocmVnZXhwX21hdGNoZXNfY3R4KTsKIAlpbnQJ CQllbWwgPSBwZ19kYXRhYmFzZV9lbmNvZGluZ19tYXhfbGVuZ3RoKCk7CiAJaW50CQkJb3Jp Z19sZW47CiAJcGdfd2NoYXIgICAqd2lkZV9zdHI7CkBAIC0xNTA5LDcgKzE1MDksNyBAQCBz ZXR1cF9yZWdleHBfbWF0Y2hlcyh0ZXh0ICpvcmlnX3N0ciwgdGV4dCAqcGF0dGVybiwgcGdf cmVfZmxhZ3MgKnJlX2ZsYWdzLAogCiAJLyogY29udmVydCBzdHJpbmcgdG8gcGdfd2NoYXIg Zm9ybSBmb3IgbWF0Y2hpbmcgKi8KIAlvcmlnX2xlbiA9IFZBUlNJWkVfQU5ZX0VYSERSKG9y aWdfc3RyKTsKLQl3aWRlX3N0ciA9IChwZ193Y2hhciAqKSBwYWxsb2Moc2l6ZW9mKHBnX3dj aGFyKSAqIChvcmlnX2xlbiArIDEpKTsKKwl3aWRlX3N0ciA9IHBhbGxvY19hcnJheShwZ193 Y2hhciwgb3JpZ19sZW4gKyAxKTsKIAl3aWRlX2xlbiA9IHBnX21iMndjaGFyX3dpdGhfbGVu KFZBUkRBVEFfQU5ZKG9yaWdfc3RyKSwgd2lkZV9zdHIsIG9yaWdfbGVuKTsKIAogCS8qIHNl dCB1cCB0aGUgY29tcGlsZWQgcGF0dGVybiAqLwpAQCAtMTUzMiw3ICsxNTMyLDcgQEAgc2V0 dXBfcmVnZXhwX21hdGNoZXModGV4dCAqb3JpZ19zdHIsIHRleHQgKnBhdHRlcm4sIHBnX3Jl X2ZsYWdzICpyZV9mbGFncywKIAl9CiAKIAkvKiB0ZW1wb3Jhcnkgb3V0cHV0IHNwYWNlIGZv ciBSRSBwYWNrYWdlICovCi0JcG1hdGNoID0gcGFsbG9jKHNpemVvZihyZWdtYXRjaF90KSAq IHBtYXRjaF9sZW4pOworCXBtYXRjaCA9IHBhbGxvY19hcnJheShyZWdtYXRjaF90LCBwbWF0 Y2hfbGVuKTsKIAogCS8qCiAJICogdGhlIHJlYWwgb3V0cHV0IHNwYWNlIChncm93biBkeW5h bWljYWxseSBpZiBuZWVkZWQpCkBAIC0xNTQxLDcgKzE1NDEsNyBAQCBzZXR1cF9yZWdleHBf bWF0Y2hlcyh0ZXh0ICpvcmlnX3N0ciwgdGV4dCAqcGF0dGVybiwgcGdfcmVfZmxhZ3MgKnJl X2ZsYWdzLAogCSAqIHRoYW4gYXQgMl4yNwogCSAqLwogCWFycmF5X2xlbiA9IHJlX2ZsYWdz LT5nbG9iID8gMjU1IDogMzE7Ci0JbWF0Y2hjdHgtPm1hdGNoX2xvY3MgPSAoaW50ICopIHBh bGxvYyhzaXplb2YoaW50KSAqIGFycmF5X2xlbik7CisJbWF0Y2hjdHgtPm1hdGNoX2xvY3Mg PSBwYWxsb2NfYXJyYXkoaW50LCBhcnJheV9sZW4pOwogCWFycmF5X2lkeCA9IDA7CiAKIAkv KiBzZWFyY2ggZm9yIHRoZSBwYXR0ZXJuLCBwZXJoYXBzIHJlcGVhdGVkbHkgKi8KZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9yb3d0eXBlcy5jIGIvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L3Jvd3R5cGVzLmMKaW5kZXggOWU1NDQ5ZjE3ZDcuLjgwZjU5YTgxMGZkIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcm93dHlwZXMuYworKysgYi9zcmMv YmFja2VuZC91dGlscy9hZHQvcm93dHlwZXMuYwpAQCAtMTQwLDggKzE0MCw4IEBAIHJlY29y ZF9pbihQR19GVU5DVElPTl9BUkdTKQogCQlteV9leHRyYS0+bmNvbHVtbnMgPSBuY29sdW1u czsKIAl9CiAKLQl2YWx1ZXMgPSAoRGF0dW0gKikgcGFsbG9jKG5jb2x1bW5zICogc2l6ZW9m KERhdHVtKSk7Ci0JbnVsbHMgPSAoYm9vbCAqKSBwYWxsb2MobmNvbHVtbnMgKiBzaXplb2Yo Ym9vbCkpOworCXZhbHVlcyA9IHBhbGxvY19hcnJheShEYXR1bSwgbmNvbHVtbnMpOworCW51 bGxzID0gcGFsbG9jX2FycmF5KGJvb2wsIG5jb2x1bW5zKTsKIAogCS8qCiAJICogU2NhbiB0 aGUgc3RyaW5nLiAgV2UgdXNlICJidWYiIHRvIGFjY3VtdWxhdGUgdGhlIGRlLXF1b3RlZCBk YXRhIGZvcgpAQCAtMzgzLDggKzM4Myw4IEBAIHJlY29yZF9vdXQoUEdfRlVOQ1RJT05fQVJH UykKIAkJbXlfZXh0cmEtPm5jb2x1bW5zID0gbmNvbHVtbnM7CiAJfQogCi0JdmFsdWVzID0g KERhdHVtICopIHBhbGxvYyhuY29sdW1ucyAqIHNpemVvZihEYXR1bSkpOwotCW51bGxzID0g KGJvb2wgKikgcGFsbG9jKG5jb2x1bW5zICogc2l6ZW9mKGJvb2wpKTsKKwl2YWx1ZXMgPSBw YWxsb2NfYXJyYXkoRGF0dW0sIG5jb2x1bW5zKTsKKwludWxscyA9IHBhbGxvY19hcnJheShi b29sLCBuY29sdW1ucyk7CiAKIAkvKiBCcmVhayBkb3duIHRoZSB0dXBsZSBpbnRvIGZpZWxk cyAqLwogCWhlYXBfZGVmb3JtX3R1cGxlKCZ0dXBsZSwgdHVwZGVzYywgdmFsdWVzLCBudWxs cyk7CkBAIC01MzksOCArNTM5LDggQEAgcmVjb3JkX3JlY3YoUEdfRlVOQ1RJT05fQVJHUykK IAkJbXlfZXh0cmEtPm5jb2x1bW5zID0gbmNvbHVtbnM7CiAJfQogCi0JdmFsdWVzID0gKERh dHVtICopIHBhbGxvYyhuY29sdW1ucyAqIHNpemVvZihEYXR1bSkpOwotCW51bGxzID0gKGJv b2wgKikgcGFsbG9jKG5jb2x1bW5zICogc2l6ZW9mKGJvb2wpKTsKKwl2YWx1ZXMgPSBwYWxs b2NfYXJyYXkoRGF0dW0sIG5jb2x1bW5zKTsKKwludWxscyA9IHBhbGxvY19hcnJheShib29s LCBuY29sdW1ucyk7CiAKIAkvKiBGZXRjaCBudW1iZXIgb2YgY29sdW1ucyB1c2VyIHRoaW5r cyBpdCBoYXMgKi8KIAl1c2VyY29scyA9IHBxX2dldG1zZ2ludChidWYsIDQpOwpAQCAtNzQx LDggKzc0MSw4IEBAIHJlY29yZF9zZW5kKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCW15X2V4dHJh LT5uY29sdW1ucyA9IG5jb2x1bW5zOwogCX0KIAotCXZhbHVlcyA9IChEYXR1bSAqKSBwYWxs b2MobmNvbHVtbnMgKiBzaXplb2YoRGF0dW0pKTsKLQludWxscyA9IChib29sICopIHBhbGxv YyhuY29sdW1ucyAqIHNpemVvZihib29sKSk7CisJdmFsdWVzID0gcGFsbG9jX2FycmF5KERh dHVtLCBuY29sdW1ucyk7CisJbnVsbHMgPSBwYWxsb2NfYXJyYXkoYm9vbCwgbmNvbHVtbnMp OwogCiAJLyogQnJlYWsgZG93biB0aGUgdHVwbGUgaW50byBmaWVsZHMgKi8KIAloZWFwX2Rl Zm9ybV90dXBsZSgmdHVwbGUsIHR1cGRlc2MsIHZhbHVlcywgbnVsbHMpOwpAQCAtMTg2Myw4 ICsxODYzLDggQEAgaGFzaF9yZWNvcmQoUEdfRlVOQ1RJT05fQVJHUykKIAl9CiAKIAkvKiBC cmVhayBkb3duIHRoZSB0dXBsZSBpbnRvIGZpZWxkcyAqLwotCXZhbHVlcyA9IChEYXR1bSAq KSBwYWxsb2MobmNvbHVtbnMgKiBzaXplb2YoRGF0dW0pKTsKLQludWxscyA9IChib29sICop IHBhbGxvYyhuY29sdW1ucyAqIHNpemVvZihib29sKSk7CisJdmFsdWVzID0gcGFsbG9jX2Fy cmF5KERhdHVtLCBuY29sdW1ucyk7CisJbnVsbHMgPSBwYWxsb2NfYXJyYXkoYm9vbCwgbmNv bHVtbnMpOwogCWhlYXBfZGVmb3JtX3R1cGxlKCZ0dXBsZSwgdHVwZGVzYywgdmFsdWVzLCBu dWxscyk7CiAKIAlmb3IgKGludCBpID0gMDsgaSA8IG5jb2x1bW5zOyBpKyspCkBAIC0xOTg0 LDggKzE5ODQsOCBAQCBoYXNoX3JlY29yZF9leHRlbmRlZChQR19GVU5DVElPTl9BUkdTKQog CX0KIAogCS8qIEJyZWFrIGRvd24gdGhlIHR1cGxlIGludG8gZmllbGRzICovCi0JdmFsdWVz ID0gKERhdHVtICopIHBhbGxvYyhuY29sdW1ucyAqIHNpemVvZihEYXR1bSkpOwotCW51bGxz ID0gKGJvb2wgKikgcGFsbG9jKG5jb2x1bW5zICogc2l6ZW9mKGJvb2wpKTsKKwl2YWx1ZXMg PSBwYWxsb2NfYXJyYXkoRGF0dW0sIG5jb2x1bW5zKTsKKwludWxscyA9IHBhbGxvY19hcnJh eShib29sLCBuY29sdW1ucyk7CiAJaGVhcF9kZWZvcm1fdHVwbGUoJnR1cGxlLCB0dXBkZXNj LCB2YWx1ZXMsIG51bGxzKTsKIAogCWZvciAoaW50IGkgPSAwOyBpIDwgbmNvbHVtbnM7IGkr KykKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYwppbmRleCA1NTZhYjA1N2U1YS4uZGQ2 NjM1N2Y1ZjggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMu YworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKQEAgLTM3MTMsNyAr MzcxMyw3IEBAIGRlcGFyc2VfY29udGV4dF9mb3IoY29uc3QgY2hhciAqYWxpYXNuYW1lLCBP aWQgcmVsaWQpCiAJZGVwYXJzZV9uYW1lc3BhY2UgKmRwbnM7CiAJUmFuZ2VUYmxFbnRyeSAq cnRlOwogCi0JZHBucyA9IChkZXBhcnNlX25hbWVzcGFjZSAqKSBwYWxsb2MwKHNpemVvZihk ZXBhcnNlX25hbWVzcGFjZSkpOworCWRwbnMgPSBwYWxsb2MwX29iamVjdChkZXBhcnNlX25h bWVzcGFjZSk7CiAKIAkvKiBCdWlsZCBhIG1pbmltYWwgUlRFIGZvciB0aGUgcmVsICovCiAJ cnRlID0gbWFrZU5vZGUoUmFuZ2VUYmxFbnRyeSk7CkBAIC0zNzU3LDcgKzM3NTcsNyBAQCBk ZXBhcnNlX2NvbnRleHRfZm9yX3BsYW5fdHJlZShQbGFubmVkU3RtdCAqcHN0bXQsIExpc3Qg KnJ0YWJsZV9uYW1lcykKIHsKIAlkZXBhcnNlX25hbWVzcGFjZSAqZHBuczsKIAotCWRwbnMg PSAoZGVwYXJzZV9uYW1lc3BhY2UgKikgcGFsbG9jMChzaXplb2YoZGVwYXJzZV9uYW1lc3Bh Y2UpKTsKKwlkcG5zID0gcGFsbG9jMF9vYmplY3QoZGVwYXJzZV9uYW1lc3BhY2UpOwogCiAJ LyogSW5pdGlhbGl6ZSBmaWVsZHMgdGhhdCBzdGF5IHRoZSBzYW1lIGFjcm9zcyB0aGUgd2hv bGUgcGxhbiB0cmVlICovCiAJZHBucy0+cnRhYmxlID0gcHN0bXQtPnJ0YWJsZTsKQEAgLTQw NTEsNyArNDA1MSw3IEBAIHNldF9kZXBhcnNlX2Zvcl9xdWVyeShkZXBhcnNlX25hbWVzcGFj ZSAqZHBucywgUXVlcnkgKnF1ZXJ5LAogCWRwbnMtPnJ0YWJsZV9jb2x1bW5zID0gTklMOwog CXdoaWxlIChsaXN0X2xlbmd0aChkcG5zLT5ydGFibGVfY29sdW1ucykgPCBsaXN0X2xlbmd0 aChkcG5zLT5ydGFibGUpKQogCQlkcG5zLT5ydGFibGVfY29sdW1ucyA9IGxhcHBlbmQoZHBu cy0+cnRhYmxlX2NvbHVtbnMsCi0JCQkJCQkJCQkgICBwYWxsb2MwKHNpemVvZihkZXBhcnNl X2NvbHVtbnMpKSk7CisJCQkJCQkJCQkgICBwYWxsb2MwX29iamVjdChkZXBhcnNlX2NvbHVt bnMpKTsKIAogCS8qIElmIGl0J3MgYSB1dGlsaXR5IHF1ZXJ5LCBpdCB3b24ndCBoYXZlIGEg am9pbnRyZWUgKi8KIAlpZiAocXVlcnktPmpvaW50cmVlKQpAQCAtNDEwNyw3ICs0MTA3LDcg QEAgc2V0X3NpbXBsZV9jb2x1bW5fbmFtZXMoZGVwYXJzZV9uYW1lc3BhY2UgKmRwbnMpCiAJ ZHBucy0+cnRhYmxlX2NvbHVtbnMgPSBOSUw7CiAJd2hpbGUgKGxpc3RfbGVuZ3RoKGRwbnMt PnJ0YWJsZV9jb2x1bW5zKSA8IGxpc3RfbGVuZ3RoKGRwbnMtPnJ0YWJsZSkpCiAJCWRwbnMt PnJ0YWJsZV9jb2x1bW5zID0gbGFwcGVuZChkcG5zLT5ydGFibGVfY29sdW1ucywKLQkJCQkJ CQkJCSAgIHBhbGxvYzAoc2l6ZW9mKGRlcGFyc2VfY29sdW1ucykpKTsKKwkJCQkJCQkJCSAg IHBhbGxvYzBfb2JqZWN0KGRlcGFyc2VfY29sdW1ucykpOwogCiAJLyogQXNzaWduIHVuaXF1 ZSBjb2x1bW4gYWxpYXNlcyB3aXRoaW4gZWFjaCBub24tam9pbiBSVEUgKi8KIAlmb3Jib3Ro KGxjLCBkcG5zLT5ydGFibGUsIGxjMiwgZHBucy0+cnRhYmxlX2NvbHVtbnMpCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvc2VsZnVuY3MuYyBiL3NyYy9iYWNrZW5kL3V0 aWxzL2FkdC9zZWxmdW5jcy5jCmluZGV4IDU0MGFhOTYyOGQ3Li5jNzYwYjE5ZGI1NSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3NlbGZ1bmNzLmMKKysrIGIvc3JjL2Jh Y2tlbmQvdXRpbHMvYWR0L3NlbGZ1bmNzLmMKQEAgLTM2ODMsNyArMzY4Myw3IEBAIGFkZF91 bmlxdWVfZ3JvdXBfdmFyKFBsYW5uZXJJbmZvICpyb290LCBMaXN0ICp2YXJpbmZvcywKIAkJ fQogCX0KIAotCXZhcmluZm8gPSAoR3JvdXBWYXJJbmZvICopIHBhbGxvYyhzaXplb2YoR3Jv dXBWYXJJbmZvKSk7CisJdmFyaW5mbyA9IHBhbGxvY19vYmplY3QoR3JvdXBWYXJJbmZvKTsK IAogCXZhcmluZm8tPnZhciA9IHZhcjsKIAl2YXJpbmZvLT5yZWwgPSB2YXJkYXRhLT5yZWw7 CkBAIC00MjY0LDcgKzQyNjQsNyBAQCBlc3RpbWF0ZV9tdWx0aXZhcmlhdGVfYnVja2V0c2l6 ZShQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqaW5uZXIsCiAJCQkJICogZXN0aW1h dGVfbXVsdGl2YXJpYXRlX25kaXN0aW5jdCgpLCB3aGljaCBkb2Vzbid0IGNhcmUgYWJvdXQK IAkJCQkgKiBuZGlzdGluY3QgYW5kIGlzZGVmYXVsdCBmaWVsZHMuICBUaHVzLCBza2lwIHRo ZXNlIGZpZWxkcy4KIAkJCQkgKi8KLQkJCQl2YXJpbmZvID0gKEdyb3VwVmFySW5mbyAqKSBw YWxsb2MwKHNpemVvZihHcm91cFZhckluZm8pKTsKKwkJCQl2YXJpbmZvID0gcGFsbG9jMF9v YmplY3QoR3JvdXBWYXJJbmZvKTsKIAkJCQl2YXJpbmZvLT52YXIgPSBleHByOwogCQkJCXZh cmluZm8tPnJlbCA9IHJvb3QtPnNpbXBsZV9yZWxfYXJyYXlbcmVsaWRdOwogCQkJCXZhcmlu Zm9zID0gbGFwcGVuZCh2YXJpbmZvcywgdmFyaW5mbyk7CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC91dGlscy9hZHQvc2tpcHN1cHBvcnQuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9z a2lwc3VwcG9ydC5jCmluZGV4IDJiZDM1ZDJkMjcyLi4yZmNmNTc4MmVjOCAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3NraXBzdXBwb3J0LmMKKysrIGIvc3JjL2JhY2tl bmQvdXRpbHMvYWR0L3NraXBzdXBwb3J0LmMKQEAgLTM4LDcgKzM4LDcgQEAgUHJlcGFyZVNr aXBTdXBwb3J0RnJvbU9wY2xhc3MoT2lkIG9wZmFtaWx5LCBPaWQgb3BjaW50eXBlLCBib29s IHJldmVyc2UpCiAJaWYgKCFPaWRJc1ZhbGlkKHNraXBTdXBwb3J0RnVuY3Rpb24pKQogCQly ZXR1cm4gTlVMTDsKIAotCXNrc3VwID0gcGFsbG9jKHNpemVvZihTa2lwU3VwcG9ydERhdGEp KTsKKwlza3N1cCA9IHBhbGxvY19vYmplY3QoU2tpcFN1cHBvcnREYXRhKTsKIAlPaWRGdW5j dGlvbkNhbGwxKHNraXBTdXBwb3J0RnVuY3Rpb24sIFBvaW50ZXJHZXREYXR1bShza3N1cCkp OwogCiAJaWYgKHJldmVyc2UpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQv dGlkLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvdGlkLmMKaW5kZXggMGNmYjBiZDM3MzUu LjQzNWQ0MGZlZTNlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvdGlkLmMK KysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3RpZC5jCkBAIC0xMDQsNyArMTA0LDcgQEAg dGlkaW4oUEdfRlVOQ1RJT05fQVJHUykKIAkJCQkJCSJ0aWQiLCBzdHIpKSk7CiAJb2Zmc2V0 TnVtYmVyID0gKE9mZnNldE51bWJlcikgY3Z0OwogCi0JcmVzdWx0ID0gKEl0ZW1Qb2ludGVy KSBwYWxsb2Moc2l6ZW9mKEl0ZW1Qb2ludGVyRGF0YSkpOworCXJlc3VsdCA9IChJdGVtUG9p bnRlcikgcGFsbG9jX29iamVjdChJdGVtUG9pbnRlckRhdGEpOwogCiAJSXRlbVBvaW50ZXJT ZXQocmVzdWx0LCBibG9ja051bWJlciwgb2Zmc2V0TnVtYmVyKTsKIApAQCAtMTQ2LDcgKzE0 Niw3IEBAIHRpZHJlY3YoUEdfRlVOQ1RJT05fQVJHUykKIAlibG9ja051bWJlciA9IHBxX2dl dG1zZ2ludChidWYsIHNpemVvZihibG9ja051bWJlcikpOwogCW9mZnNldE51bWJlciA9IHBx X2dldG1zZ2ludChidWYsIHNpemVvZihvZmZzZXROdW1iZXIpKTsKIAotCXJlc3VsdCA9IChJ dGVtUG9pbnRlcikgcGFsbG9jKHNpemVvZihJdGVtUG9pbnRlckRhdGEpKTsKKwlyZXN1bHQg PSAoSXRlbVBvaW50ZXIpIHBhbGxvY19vYmplY3QoSXRlbVBvaW50ZXJEYXRhKTsKIAogCUl0 ZW1Qb2ludGVyU2V0KHJlc3VsdCwgYmxvY2tOdW1iZXIsIG9mZnNldE51bWJlcik7CiAKQEAg LTMwMCw3ICszMDAsNyBAQCBjdXJydGlkX2ludGVybmFsKFJlbGF0aW9uIHJlbCwgY29uc3Qg SXRlbVBvaW50ZXJEYXRhICp0aWQpCiAJU25hcHNob3QJc25hcHNob3Q7CiAJVGFibGVTY2Fu RGVzYyBzY2FuOwogCi0JcmVzdWx0ID0gKEl0ZW1Qb2ludGVyKSBwYWxsb2Moc2l6ZW9mKEl0 ZW1Qb2ludGVyRGF0YSkpOworCXJlc3VsdCA9IChJdGVtUG9pbnRlcikgcGFsbG9jX29iamVj dChJdGVtUG9pbnRlckRhdGEpOwogCiAJYWNscmVzdWx0ID0gcGdfY2xhc3NfYWNsY2hlY2so UmVsYXRpb25HZXRSZWxpZChyZWwpLCBHZXRVc2VySWQoKSwKIAkJCQkJCQkJICBBQ0xfU0VM RUNUKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC90aW1lc3RhbXAuYyBi L3NyYy9iYWNrZW5kL3V0aWxzL2FkdC90aW1lc3RhbXAuYwppbmRleCAxNTZhNDgzMGZmZC4u Y2U1ZmE1ZTlhZTcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC90aW1lc3Rh bXAuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvdGltZXN0YW1wLmMKQEAgLTkzNyw3 ICs5MzcsNyBAQCBpbnRlcnZhbF9pbihQR19GVU5DVElPTl9BUkdTKQogCQlQR19SRVRVUk5f TlVMTCgpOwogCX0KIAotCXJlc3VsdCA9IChJbnRlcnZhbCAqKSBwYWxsb2Moc2l6ZW9mKElu dGVydmFsKSk7CisJcmVzdWx0ID0gcGFsbG9jX29iamVjdChJbnRlcnZhbCk7CiAKIAlzd2l0 Y2ggKGR0eXBlKQogCXsKQEAgLTEwMDQsNyArMTAwNCw3IEBAIGludGVydmFsX3JlY3YoUEdf RlVOQ1RJT05fQVJHUykKIAlpbnQzMgkJdHlwbW9kID0gUEdfR0VUQVJHX0lOVDMyKDIpOwog CUludGVydmFsICAgKmludGVydmFsOwogCi0JaW50ZXJ2YWwgPSAoSW50ZXJ2YWwgKikgcGFs bG9jKHNpemVvZihJbnRlcnZhbCkpOworCWludGVydmFsID0gcGFsbG9jX29iamVjdChJbnRl cnZhbCk7CiAKIAlpbnRlcnZhbC0+dGltZSA9IHBxX2dldG1zZ2ludDY0KGJ1Zik7CiAJaW50 ZXJ2YWwtPmRheSA9IHBxX2dldG1zZ2ludChidWYsIHNpemVvZihpbnRlcnZhbC0+ZGF5KSk7 CkBAIC0xMzMxLDcgKzEzMzEsNyBAQCBpbnRlcnZhbF9zY2FsZShQR19GVU5DVElPTl9BUkdT KQogCWludDMyCQl0eXBtb2QgPSBQR19HRVRBUkdfSU5UMzIoMSk7CiAJSW50ZXJ2YWwgICAq cmVzdWx0OwogCi0JcmVzdWx0ID0gcGFsbG9jKHNpemVvZihJbnRlcnZhbCkpOworCXJlc3Vs dCA9IHBhbGxvY19vYmplY3QoSW50ZXJ2YWwpOwogCSpyZXN1bHQgPSAqaW50ZXJ2YWw7CiAK IAlBZGp1c3RJbnRlcnZhbEZvclR5cG1vZChyZXN1bHQsIHR5cG1vZCwgTlVMTCk7CkBAIC0x NTQ1LDcgKzE1NDUsNyBAQCBtYWtlX2ludGVydmFsKFBHX0ZVTkNUSU9OX0FSR1MpCiAJaWYg KGlzaW5mKHNlY3MpIHx8IGlzbmFuKHNlY3MpKQogCQlnb3RvIG91dF9vZl9yYW5nZTsKIAot CXJlc3VsdCA9IChJbnRlcnZhbCAqKSBwYWxsb2Moc2l6ZW9mKEludGVydmFsKSk7CisJcmVz dWx0ID0gcGFsbG9jX29iamVjdChJbnRlcnZhbCk7CiAKIAkvKiB5ZWFycyBhbmQgbW9udGhz IC0+IG1vbnRocyAqLwogCWlmIChwZ19tdWxfczMyX292ZXJmbG93KHllYXJzLCBNT05USFNf UEVSX1lFQVIsICZyZXN1bHQtPm1vbnRoKSB8fApAQCAtMjgyNyw3ICsyODI3LDcgQEAgdGlt ZXN0YW1wX21pKFBHX0ZVTkNUSU9OX0FSR1MpCiAJVGltZXN0YW1wCWR0MiA9IFBHX0dFVEFS R19USU1FU1RBTVAoMSk7CiAJSW50ZXJ2YWwgICAqcmVzdWx0OwogCi0JcmVzdWx0ID0gKElu dGVydmFsICopIHBhbGxvYyhzaXplb2YoSW50ZXJ2YWwpKTsKKwlyZXN1bHQgPSBwYWxsb2Nf b2JqZWN0KEludGVydmFsKTsKIAogCS8qCiAJICogSGFuZGxlIGluZmluaXRpZXMuCkBAIC0y OTIyLDcgKzI5MjIsNyBAQCBpbnRlcnZhbF9qdXN0aWZ5X2ludGVydmFsKFBHX0ZVTkNUSU9O X0FSR1MpCiAJVGltZU9mZnNldAl3aG9sZWRheTsKIAlpbnQzMgkJd2hvbGVtb250aDsKIAot CXJlc3VsdCA9IChJbnRlcnZhbCAqKSBwYWxsb2Moc2l6ZW9mKEludGVydmFsKSk7CisJcmVz dWx0ID0gcGFsbG9jX29iamVjdChJbnRlcnZhbCk7CiAJcmVzdWx0LT5tb250aCA9IHNwYW4t Pm1vbnRoOwogCXJlc3VsdC0+ZGF5ID0gc3Bhbi0+ZGF5OwogCXJlc3VsdC0+dGltZSA9IHNw YW4tPnRpbWU7CkBAIC0zMDAxLDcgKzMwMDEsNyBAQCBpbnRlcnZhbF9qdXN0aWZ5X2hvdXJz KFBHX0ZVTkNUSU9OX0FSR1MpCiAJSW50ZXJ2YWwgICAqcmVzdWx0OwogCVRpbWVPZmZzZXQJ d2hvbGVkYXk7CiAKLQlyZXN1bHQgPSAoSW50ZXJ2YWwgKikgcGFsbG9jKHNpemVvZihJbnRl cnZhbCkpOworCXJlc3VsdCA9IHBhbGxvY19vYmplY3QoSW50ZXJ2YWwpOwogCXJlc3VsdC0+ bW9udGggPSBzcGFuLT5tb250aDsKIAlyZXN1bHQtPmRheSA9IHNwYW4tPmRheTsKIAlyZXN1 bHQtPnRpbWUgPSBzcGFuLT50aW1lOwpAQCAtMzA0Myw3ICszMDQzLDcgQEAgaW50ZXJ2YWxf anVzdGlmeV9kYXlzKFBHX0ZVTkNUSU9OX0FSR1MpCiAJSW50ZXJ2YWwgICAqcmVzdWx0Owog CWludDMyCQl3aG9sZW1vbnRoOwogCi0JcmVzdWx0ID0gKEludGVydmFsICopIHBhbGxvYyhz aXplb2YoSW50ZXJ2YWwpKTsKKwlyZXN1bHQgPSBwYWxsb2Nfb2JqZWN0KEludGVydmFsKTsK IAlyZXN1bHQtPm1vbnRoID0gc3Bhbi0+bW9udGg7CiAJcmVzdWx0LT5kYXkgPSBzcGFuLT5k YXk7CiAJcmVzdWx0LT50aW1lID0gc3Bhbi0+dGltZTsKQEAgLTM0NDUsNyArMzQ0NSw3IEBA IGludGVydmFsX3VtKFBHX0ZVTkNUSU9OX0FSR1MpCiAJSW50ZXJ2YWwgICAqaW50ZXJ2YWwg PSBQR19HRVRBUkdfSU5URVJWQUxfUCgwKTsKIAlJbnRlcnZhbCAgICpyZXN1bHQ7CiAKLQly ZXN1bHQgPSAoSW50ZXJ2YWwgKikgcGFsbG9jKHNpemVvZihJbnRlcnZhbCkpOworCXJlc3Vs dCA9IHBhbGxvY19vYmplY3QoSW50ZXJ2YWwpOwogCWludGVydmFsX3VtX2ludGVybmFsKGlu dGVydmFsLCByZXN1bHQpOwogCiAJUEdfUkVUVVJOX0lOVEVSVkFMX1AocmVzdWx0KTsKQEAg LTM1MDMsNyArMzUwMyw3IEBAIGludGVydmFsX3BsKFBHX0ZVTkNUSU9OX0FSR1MpCiAJSW50 ZXJ2YWwgICAqc3BhbjIgPSBQR19HRVRBUkdfSU5URVJWQUxfUCgxKTsKIAlJbnRlcnZhbCAg ICpyZXN1bHQ7CiAKLQlyZXN1bHQgPSAoSW50ZXJ2YWwgKikgcGFsbG9jKHNpemVvZihJbnRl cnZhbCkpOworCXJlc3VsdCA9IHBhbGxvY19vYmplY3QoSW50ZXJ2YWwpOwogCiAJLyoKIAkg KiBIYW5kbGUgaW5maW5pdGllcy4KQEAgLTM1NTksNyArMzU1OSw3IEBAIGludGVydmFsX21p KFBHX0ZVTkNUSU9OX0FSR1MpCiAJSW50ZXJ2YWwgICAqc3BhbjIgPSBQR19HRVRBUkdfSU5U RVJWQUxfUCgxKTsKIAlJbnRlcnZhbCAgICpyZXN1bHQ7CiAKLQlyZXN1bHQgPSAoSW50ZXJ2 YWwgKikgcGFsbG9jKHNpemVvZihJbnRlcnZhbCkpOworCXJlc3VsdCA9IHBhbGxvY19vYmpl Y3QoSW50ZXJ2YWwpOwogCiAJLyoKIAkgKiBIYW5kbGUgaW5maW5pdGllcy4KQEAgLTM2MTMs NyArMzYxMyw3IEBAIGludGVydmFsX211bChQR19GVU5DVElPTl9BUkdTKQogCQkJCW9yaWdf ZGF5ID0gc3Bhbi0+ZGF5OwogCUludGVydmFsICAgKnJlc3VsdDsKIAotCXJlc3VsdCA9IChJ bnRlcnZhbCAqKSBwYWxsb2Moc2l6ZW9mKEludGVydmFsKSk7CisJcmVzdWx0ID0gcGFsbG9j X29iamVjdChJbnRlcnZhbCk7CiAKIAkvKgogCSAqIEhhbmRsZSBOYU4gYW5kIGluZmluaXRp ZXMuCkBAIC0zNzQzLDcgKzM3NDMsNyBAQCBpbnRlcnZhbF9kaXYoUEdfRlVOQ1RJT05fQVJH UykKIAkJCQlvcmlnX2RheSA9IHNwYW4tPmRheTsKIAlJbnRlcnZhbCAgICpyZXN1bHQ7CiAK LQlyZXN1bHQgPSAoSW50ZXJ2YWwgKikgcGFsbG9jKHNpemVvZihJbnRlcnZhbCkpOworCXJl c3VsdCA9IHBhbGxvY19vYmplY3QoSW50ZXJ2YWwpOwogCiAJaWYgKGZhY3RvciA9PSAwLjAp CiAJCWVyZXBvcnQoRVJST1IsCkBAIC0zOTcyLDcgKzM5NzIsNyBAQCBtYWtlSW50ZXJ2YWxB Z2dTdGF0ZShGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbykKIAogCW9sZF9jb250ZXh0ID0gTWVt b3J5Q29udGV4dFN3aXRjaFRvKGFnZ19jb250ZXh0KTsKIAotCXN0YXRlID0gKEludGVydmFs QWdnU3RhdGUgKikgcGFsbG9jMChzaXplb2YoSW50ZXJ2YWxBZ2dTdGF0ZSkpOworCXN0YXRl ID0gcGFsbG9jMF9vYmplY3QoSW50ZXJ2YWxBZ2dTdGF0ZSk7CiAKIAlNZW1vcnlDb250ZXh0 U3dpdGNoVG8ob2xkX2NvbnRleHQpOwogCkBAIC00MTU5LDcgKzQxNTksNyBAQCBpbnRlcnZh bF9hdmdfZGVzZXJpYWxpemUoUEdfRlVOQ1RJT05fQVJHUykKIAlpbml0UmVhZE9ubHlTdHJp bmdJbmZvKCZidWYsIFZBUkRBVEFfQU5ZKHNzdGF0ZSksCiAJCQkJCQkgICBWQVJTSVpFX0FO WV9FWEhEUihzc3RhdGUpKTsKIAotCXJlc3VsdCA9IChJbnRlcnZhbEFnZ1N0YXRlICopIHBh bGxvYzAoc2l6ZW9mKEludGVydmFsQWdnU3RhdGUpKTsKKwlyZXN1bHQgPSBwYWxsb2MwX29i amVjdChJbnRlcnZhbEFnZ1N0YXRlKTsKIAogCS8qIE4gKi8KIAlyZXN1bHQtPk4gPSBwcV9n ZXRtc2dpbnQ2NCgmYnVmKTsKQEAgLTQyMjYsNyArNDIyNiw3IEBAIGludGVydmFsX2F2ZyhQ R19GVU5DVElPTl9BUkdTKQogCQkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEVUSU1FX1ZBTFVF X09VVF9PRl9SQU5HRSksCiAJCQkJCSBlcnJtc2coImludGVydmFsIG91dCBvZiByYW5nZSIp KSk7CiAKLQkJcmVzdWx0ID0gKEludGVydmFsICopIHBhbGxvYyhzaXplb2YoSW50ZXJ2YWwp KTsKKwkJcmVzdWx0ID0gcGFsbG9jX29iamVjdChJbnRlcnZhbCk7CiAJCWlmIChzdGF0ZS0+ cEluZmNvdW50ID4gMCkKIAkJCUlOVEVSVkFMX05PRU5EKHJlc3VsdCk7CiAJCWVsc2UKQEAg LTQyNjMsNyArNDI2Myw3IEBAIGludGVydmFsX3N1bShQR19GVU5DVElPTl9BUkdTKQogCQkJ CShlcnJjb2RlKEVSUkNPREVfREFURVRJTUVfVkFMVUVfT1VUX09GX1JBTkdFKSwKIAkJCQkg ZXJybXNnKCJpbnRlcnZhbCBvdXQgb2YgcmFuZ2UiKSkpOwogCi0JcmVzdWx0ID0gKEludGVy dmFsICopIHBhbGxvYyhzaXplb2YoSW50ZXJ2YWwpKTsKKwlyZXN1bHQgPSBwYWxsb2Nfb2Jq ZWN0KEludGVydmFsKTsKIAogCWlmIChzdGF0ZS0+cEluZmNvdW50ID4gMCkKIAkJSU5URVJW QUxfTk9FTkQocmVzdWx0KTsKQEAgLTQyOTYsNyArNDI5Niw3IEBAIHRpbWVzdGFtcF9hZ2Uo UEdfRlVOQ1RJT05fQVJHUykKIAlzdHJ1Y3QgcGdfdG0gdHQyLAogCQkJICAgKnRtMiA9ICZ0 dDI7CiAKLQlyZXN1bHQgPSAoSW50ZXJ2YWwgKikgcGFsbG9jKHNpemVvZihJbnRlcnZhbCkp OworCXJlc3VsdCA9IHBhbGxvY19vYmplY3QoSW50ZXJ2YWwpOwogCiAJLyoKIAkgKiBIYW5k bGUgaW5maW5pdGllcy4KQEAgLTQ0NDQsNyArNDQ0NCw3IEBAIHRpbWVzdGFtcHR6X2FnZShQ R19GVU5DVElPTl9BUkdTKQogCWludAkJCXR6MTsKIAlpbnQJCQl0ejI7CiAKLQlyZXN1bHQg PSAoSW50ZXJ2YWwgKikgcGFsbG9jKHNpemVvZihJbnRlcnZhbCkpOworCXJlc3VsdCA9IHBh bGxvY19vYmplY3QoSW50ZXJ2YWwpOwogCiAJLyoKIAkgKiBIYW5kbGUgaW5maW5pdGllcy4K QEAgLTUxMTcsNyArNTExNyw3IEBAIGludGVydmFsX3RydW5jKFBHX0ZVTkNUSU9OX0FSR1Mp CiAJc3RydWN0IHBnX2l0bSB0dCwKIAkJCSAgICp0bSA9ICZ0dDsKIAotCXJlc3VsdCA9IChJ bnRlcnZhbCAqKSBwYWxsb2Moc2l6ZW9mKEludGVydmFsKSk7CisJcmVzdWx0ID0gcGFsbG9j X29iamVjdChJbnRlcnZhbCk7CiAKIAlsb3d1bml0cyA9IGRvd25jYXNlX3RydW5jYXRlX2lk ZW50aWZpZXIoVkFSREFUQV9BTlkodW5pdHMpLAogCQkJCQkJCQkJCQlWQVJTSVpFX0FOWV9F WEhEUih1bml0cyksCkBAIC02NzIwLDggKzY3MjAsNyBAQCBnZW5lcmF0ZV9zZXJpZXNfdGlt ZXN0YW1wKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCW9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0 U3dpdGNoVG8oZnVuY2N0eC0+bXVsdGlfY2FsbF9tZW1vcnlfY3R4KTsKIAogCQkvKiBhbGxv Y2F0ZSBtZW1vcnkgZm9yIHVzZXIgY29udGV4dCAqLwotCQlmY3R4ID0gKGdlbmVyYXRlX3Nl cmllc190aW1lc3RhbXBfZmN0eCAqKQotCQkJcGFsbG9jKHNpemVvZihnZW5lcmF0ZV9zZXJp ZXNfdGltZXN0YW1wX2ZjdHgpKTsKKwkJZmN0eCA9IHBhbGxvY19vYmplY3QoZ2VuZXJhdGVf c2VyaWVzX3RpbWVzdGFtcF9mY3R4KTsKIAogCQkvKgogCQkgKiBVc2UgZmN0eCB0byBrZWVw IHN0YXRlIGZyb20gY2FsbCB0byBjYWxsLiBTZWVkIGN1cnJlbnQgd2l0aCB0aGUKQEAgLTY4 MDUsOCArNjgwNCw3IEBAIGdlbmVyYXRlX3Nlcmllc190aW1lc3RhbXB0el9pbnRlcm5hbChG dW5jdGlvbkNhbGxJbmZvIGZjaW5mbykKIAkJb2xkY29udGV4dCA9IE1lbW9yeUNvbnRleHRT d2l0Y2hUbyhmdW5jY3R4LT5tdWx0aV9jYWxsX21lbW9yeV9jdHgpOwogCiAJCS8qIGFsbG9j YXRlIG1lbW9yeSBmb3IgdXNlciBjb250ZXh0ICovCi0JCWZjdHggPSAoZ2VuZXJhdGVfc2Vy aWVzX3RpbWVzdGFtcHR6X2ZjdHggKikKLQkJCXBhbGxvYyhzaXplb2YoZ2VuZXJhdGVfc2Vy aWVzX3RpbWVzdGFtcHR6X2ZjdHgpKTsKKwkJZmN0eCA9IHBhbGxvY19vYmplY3QoZ2VuZXJh dGVfc2VyaWVzX3RpbWVzdGFtcHR6X2ZjdHgpOwogCiAJCS8qCiAJCSAqIFVzZSBmY3R4IHRv IGtlZXAgc3RhdGUgZnJvbSBjYWxsIHRvIGNhbGwuIFNlZWQgY3VycmVudCB3aXRoIHRoZQpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3RzZ2luaWR4LmMgYi9zcmMvYmFj a2VuZC91dGlscy9hZHQvdHNnaW5pZHguYwppbmRleCAyNzEyZmQ4OWRmMC4uMjRhMWNiZTg5 ZWQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC90c2dpbmlkeC5jCisrKyBi L3NyYy9iYWNrZW5kL3V0aWxzL2FkdC90c2dpbmlkeC5jCkBAIC03Myw3ICs3Myw3IEBAIGdp bl9leHRyYWN0X3RzdmVjdG9yKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCWludAkJCWk7CiAJCVdv cmRFbnRyeSAgKndlID0gQVJSUFRSKHZlY3Rvcik7CiAKLQkJZW50cmllcyA9IChEYXR1bSAq KSBwYWxsb2Moc2l6ZW9mKERhdHVtKSAqIHZlY3Rvci0+c2l6ZSk7CisJCWVudHJpZXMgPSBw YWxsb2NfYXJyYXkoRGF0dW0sIHZlY3Rvci0+c2l6ZSk7CiAKIAkJZm9yIChpID0gMDsgaSA8 IHZlY3Rvci0+c2l6ZTsgaSsrKQogCQl7CkBAIC0xMzMsMTYgKzEzMywxNiBAQCBnaW5fZXh0 cmFjdF90c3F1ZXJ5KFBHX0ZVTkNUSU9OX0FSR1MpCiAJCX0KIAkJKm5lbnRyaWVzID0gajsK IAotCQllbnRyaWVzID0gKERhdHVtICopIHBhbGxvYyhzaXplb2YoRGF0dW0pICogaik7Ci0J CXBhcnRpYWxtYXRjaCA9ICpwdHJfcGFydGlhbG1hdGNoID0gKGJvb2wgKikgcGFsbG9jKHNp emVvZihib29sKSAqIGopOworCQllbnRyaWVzID0gcGFsbG9jX2FycmF5KERhdHVtLCBqKTsK KwkJcGFydGlhbG1hdGNoID0gKnB0cl9wYXJ0aWFsbWF0Y2ggPSBwYWxsb2NfYXJyYXkoYm9v bCwgaik7CiAKIAkJLyoKIAkJICogTWFrZSBtYXAgdG8gY29udmVydCBpdGVtJ3MgbnVtYmVy IHRvIGNvcnJlc3BvbmRpbmcgb3BlcmFuZCdzICh0aGUKIAkJICogc2FtZSwgZW50cnkncykg bnVtYmVyLiBFbnRyeSdzIG51bWJlciBpcyB1c2VkIGluIGNoZWNrIGFycmF5IGluCiAJCSAq IGNvbnNpc3RlbnQgbWV0aG9kLiBXZSB1c2UgdGhlIHNhbWUgbWFwIGZvciBlYWNoIGVudHJ5 LgogCQkgKi8KLQkJKmV4dHJhX2RhdGEgPSAoUG9pbnRlciAqKSBwYWxsb2Moc2l6ZW9mKFBv aW50ZXIpICogaik7Ci0JCW1hcF9pdGVtX29wZXJhbmQgPSAoaW50ICopIHBhbGxvYzAoc2l6 ZW9mKGludCkgKiBxdWVyeS0+c2l6ZSk7CisJCSpleHRyYV9kYXRhID0gcGFsbG9jX2FycmF5 KFBvaW50ZXIsIGopOworCQltYXBfaXRlbV9vcGVyYW5kID0gcGFsbG9jMF9hcnJheShpbnQs IHF1ZXJ5LT5zaXplKTsKIAogCQkvKiBOb3cgcmVzY2FuIHRoZSBWQUwgaXRlbXMgYW5kIGZp bGwgaW4gdGhlIGFycmF5cyAqLwogCQlqID0gMDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC90c2dpc3RpZHguYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC90c2dpc3Rp ZHguYwppbmRleCA5MzUxODdiMzdjNy4uMDFlNDNmODYyMTQgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3V0aWxzL2FkdC90c2dpc3RpZHguYworKysgYi9zcmMvYmFja2VuZC91dGlscy9h ZHQvdHNnaXN0aWR4LmMKQEAgLTIxMiw3ICsyMTIsNyBAQCBndHN2ZWN0b3JfY29tcHJlc3Mo UEdfRlVOQ1RJT05fQVJHUykKIAkJCXJlcyA9IHJlc3NpZ247CiAJCX0KIAotCQlyZXR2YWwg PSAoR0lTVEVOVFJZICopIHBhbGxvYyhzaXplb2YoR0lTVEVOVFJZKSk7CisJCXJldHZhbCA9 IHBhbGxvY19vYmplY3QoR0lTVEVOVFJZKTsKIAkJZ2lzdGVudHJ5aW5pdCgqcmV0dmFsLCBQ b2ludGVyR2V0RGF0dW0ocmVzKSwKIAkJCQkJICBlbnRyeS0+cmVsLCBlbnRyeS0+cGFnZSwK IAkJCQkJICBlbnRyeS0+b2Zmc2V0LCBmYWxzZSk7CkBAIC0yMzEsNyArMjMxLDcgQEAgZ3Rz dmVjdG9yX2NvbXByZXNzKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCX0KIAogCQlyZXMgPSBndHN2 ZWN0b3JfYWxsb2MoU0lHTktFWSB8IEFMTElTVFJVRSwgc2lnbGVuLCBzaWduKTsKLQkJcmV0 dmFsID0gKEdJU1RFTlRSWSAqKSBwYWxsb2Moc2l6ZW9mKEdJU1RFTlRSWSkpOworCQlyZXR2 YWwgPSBwYWxsb2Nfb2JqZWN0KEdJU1RFTlRSWSk7CiAJCWdpc3RlbnRyeWluaXQoKnJldHZh bCwgUG9pbnRlckdldERhdHVtKHJlcyksCiAJCQkJCSAgZW50cnktPnJlbCwgZW50cnktPnBh Z2UsCiAJCQkJCSAgZW50cnktPm9mZnNldCwgZmFsc2UpOwpAQCAtMjUxLDcgKzI1MSw3IEBA IGd0c3ZlY3Rvcl9kZWNvbXByZXNzKFBHX0ZVTkNUSU9OX0FSR1MpCiAKIAlpZiAoa2V5ICE9 IChTaWduVFNWZWN0b3IgKikgRGF0dW1HZXRQb2ludGVyKGVudHJ5LT5rZXkpKQogCXsKLQkJ R0lTVEVOVFJZICAqcmV0dmFsID0gKEdJU1RFTlRSWSAqKSBwYWxsb2Moc2l6ZW9mKEdJU1RF TlRSWSkpOworCQlHSVNURU5UUlkgICpyZXR2YWwgPSBwYWxsb2Nfb2JqZWN0KEdJU1RFTlRS WSk7CiAKIAkJZ2lzdGVudHJ5aW5pdCgqcmV0dmFsLCBQb2ludGVyR2V0RGF0dW0oa2V5KSwK IAkJCQkJICBlbnRyeS0+cmVsLCBlbnRyeS0+cGFnZSwKQEAgLTY0MSw3ICs2NDEsNyBAQCBn dHN2ZWN0b3JfcGlja3NwbGl0KFBHX0ZVTkNUSU9OX0FSR1MpCiAJdi0+c3BsX2xlZnQgPSAo T2Zmc2V0TnVtYmVyICopIHBhbGxvYyhuYnl0ZXMpOwogCXYtPnNwbF9yaWdodCA9IChPZmZz ZXROdW1iZXIgKikgcGFsbG9jKG5ieXRlcyk7CiAKLQljYWNoZSA9IChDQUNIRVNJR04gKikg cGFsbG9jKHNpemVvZihDQUNIRVNJR04pICogKG1heG9mZiArIDIpKTsKKwljYWNoZSA9IHBh bGxvY19hcnJheShDQUNIRVNJR04sIG1heG9mZiArIDIpOwogCWNhY2hlX3NpZ24gPSBwYWxs b2Moc2lnbGVuICogKG1heG9mZiArIDIpKTsKIAogCWZvciAoaiA9IDA7IGogPCBtYXhvZmYg KyAyOyBqKyspCkBAIC02ODgsNyArNjg4LDcgQEAgZ3RzdmVjdG9yX3BpY2tzcGxpdChQR19G VU5DVElPTl9BUkdTKQogCW1heG9mZiA9IE9mZnNldE51bWJlck5leHQobWF4b2ZmKTsKIAlm aWxsY2FjaGUoJmNhY2hlW21heG9mZl0sIEdFVEVOVFJZKGVudHJ5dmVjLCBtYXhvZmYpLCBz aWdsZW4pOwogCS8qIHNvcnQgYmVmb3JlIC4uLiAqLwotCWNvc3R2ZWN0b3IgPSAoU1BMSVRD T1NUICopIHBhbGxvYyhzaXplb2YoU1BMSVRDT1NUKSAqIG1heG9mZik7CisJY29zdHZlY3Rv ciA9IHBhbGxvY19hcnJheShTUExJVENPU1QsIG1heG9mZik7CiAJZm9yIChqID0gRmlyc3RP ZmZzZXROdW1iZXI7IGogPD0gbWF4b2ZmOyBqID0gT2Zmc2V0TnVtYmVyTmV4dChqKSkKIAl7 CiAJCWNvc3R2ZWN0b3JbaiAtIDFdLnBvcyA9IGo7CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC91dGlscy9hZHQvdHNxdWVyeS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3RzcXVlcnku YwppbmRleCA3MTdkZTgwNzNkNS4uYTBjOTkwZmRmYTAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3V0aWxzL2FkdC90c3F1ZXJ5LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Rz cXVlcnkuYwpAQCAtNTM0LDcgKzUzNCw3IEBAIHB1c2hPcGVyYXRvcihUU1F1ZXJ5UGFyc2Vy U3RhdGUgc3RhdGUsIGludDggb3BlciwgaW50MTYgZGlzdGFuY2UpCiAKIAlBc3NlcnQob3Bl ciA9PSBPUF9OT1QgfHwgb3BlciA9PSBPUF9BTkQgfHwgb3BlciA9PSBPUF9PUiB8fCBvcGVy ID09IE9QX1BIUkFTRSk7CiAKLQl0bXAgPSAoUXVlcnlPcGVyYXRvciAqKSBwYWxsb2MwKHNp emVvZihRdWVyeU9wZXJhdG9yKSk7CisJdG1wID0gcGFsbG9jMF9vYmplY3QoUXVlcnlPcGVy YXRvcik7CiAJdG1wLT50eXBlID0gUUlfT1BSOwogCXRtcC0+b3BlciA9IG9wZXI7CiAJdG1w LT5kaXN0YW5jZSA9IChvcGVyID09IE9QX1BIUkFTRSkgPyBkaXN0YW5jZSA6IDA7CkBAIC01 NTksNyArNTU5LDcgQEAgcHVzaFZhbHVlX2ludGVybmFsKFRTUXVlcnlQYXJzZXJTdGF0ZSBz dGF0ZSwgcGdfY3JjMzIgdmFsY3JjLCBpbnQgZGlzdGFuY2UsIGludAogCQkJCSBlcnJtc2co Im9wZXJhbmQgaXMgdG9vIGxvbmcgaW4gdHNxdWVyeTogXCIlc1wiIiwKIAkJCQkJCXN0YXRl LT5idWZmZXIpKSk7CiAKLQl0bXAgPSAoUXVlcnlPcGVyYW5kICopIHBhbGxvYzAoc2l6ZW9m KFF1ZXJ5T3BlcmFuZCkpOworCXRtcCA9IHBhbGxvYzBfb2JqZWN0KFF1ZXJ5T3BlcmFuZCk7 CiAJdG1wLT50eXBlID0gUUlfVkFMOwogCXRtcC0+d2VpZ2h0ID0gd2VpZ2h0OwogCXRtcC0+ cHJlZml4ID0gcHJlZml4OwpAQCAtNjE3LDcgKzYxNyw3IEBAIHB1c2hTdG9wKFRTUXVlcnlQ YXJzZXJTdGF0ZSBzdGF0ZSkKIHsKIAlRdWVyeU9wZXJhbmQgKnRtcDsKIAotCXRtcCA9IChR dWVyeU9wZXJhbmQgKikgcGFsbG9jMChzaXplb2YoUXVlcnlPcGVyYW5kKSk7CisJdG1wID0g cGFsbG9jMF9vYmplY3QoUXVlcnlPcGVyYW5kKTsKIAl0bXAtPnR5cGUgPSBRSV9WQUxTVE9Q OwogCiAJc3RhdGUtPnBvbHN0ciA9IGxjb25zKHRtcCwgc3RhdGUtPnBvbHN0cik7CkBAIC0x MTAxLDcgKzExMDEsNyBAQCBpbmZpeChJTkZJWCAqaW4sIGludCBwYXJlbnRQcmlvcml0eSwg Ym9vbCByaWdodFBocmFzZU9wKQogCQlucm0uY3VycG9sID0gaW4tPmN1cnBvbDsKIAkJbnJt Lm9wID0gaW4tPm9wOwogCQlucm0uYnVmbGVuID0gMTY7Ci0JCW5ybS5jdXIgPSBucm0uYnVm ID0gKGNoYXIgKikgcGFsbG9jKHNpemVvZihjaGFyKSAqIG5ybS5idWZsZW4pOworCQlucm0u Y3VyID0gbnJtLmJ1ZiA9IHBhbGxvY19hcnJheShjaGFyLCBucm0uYnVmbGVuKTsKIAogCQkv KiBnZXQgcmlnaHQgb3BlcmFuZCAqLwogCQlpbmZpeCgmbnJtLCBwcmlvcml0eSwgKG9wID09 IE9QX1BIUkFTRSkpOwpAQCAtMTE1Nyw3ICsxMTU3LDcgQEAgdHNxdWVyeW91dChQR19GVU5D VElPTl9BUkdTKQogCX0KIAlucm0uY3VycG9sID0gR0VUUVVFUlkocXVlcnkpOwogCW5ybS5i dWZsZW4gPSAzMjsKLQlucm0uY3VyID0gbnJtLmJ1ZiA9IChjaGFyICopIHBhbGxvYyhzaXpl b2YoY2hhcikgKiBucm0uYnVmbGVuKTsKKwlucm0uY3VyID0gbnJtLmJ1ZiA9IHBhbGxvY19h cnJheShjaGFyLCBucm0uYnVmbGVuKTsKIAkqKG5ybS5jdXIpID0gJ1wwJzsKIAlucm0ub3Ag PSBHRVRPUEVSQU5EKHF1ZXJ5KTsKIAlpbmZpeCgmbnJtLCAtMSAvKiBsb3dlc3QgcHJpb3Jp dHkgKi8gLCBmYWxzZSk7CkBAIC0xMzg1LDcgKzEzODUsNyBAQCB0c3F1ZXJ5dHJlZShQR19G VU5DVElPTl9BUkdTKQogCXsKIAkJbnJtLmN1cnBvbCA9IHE7CiAJCW5ybS5idWZsZW4gPSAz MjsKLQkJbnJtLmN1ciA9IG5ybS5idWYgPSAoY2hhciAqKSBwYWxsb2Moc2l6ZW9mKGNoYXIp ICogbnJtLmJ1Zmxlbik7CisJCW5ybS5jdXIgPSBucm0uYnVmID0gcGFsbG9jX2FycmF5KGNo YXIsIG5ybS5idWZsZW4pOwogCQkqKG5ybS5jdXIpID0gJ1wwJzsKIAkJbnJtLm9wID0gR0VU T1BFUkFORChxdWVyeSk7CiAJCWluZml4KCZucm0sIC0xLCBmYWxzZSk7CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC91dGlscy9hZHQvdHNxdWVyeV9jbGVhbnVwLmMgYi9zcmMvYmFja2Vu ZC91dGlscy9hZHQvdHNxdWVyeV9jbGVhbnVwLmMKaW5kZXggNTkwZDdjNzk4OWMuLjQ1ZGUy ZGE5MDBjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvdHNxdWVyeV9jbGVh bnVwLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3RzcXVlcnlfY2xlYW51cC5jCkBA IC0zMiw3ICszMiw3IEBAIHR5cGVkZWYgc3RydWN0IE5PREUKIHN0YXRpYyBOT0RFICoKIG1h a2V0cmVlKFF1ZXJ5SXRlbSAqaW4pCiB7Ci0JTk9ERQkgICAqbm9kZSA9IChOT0RFICopIHBh bGxvYyhzaXplb2YoTk9ERSkpOworCU5PREUJICAgKm5vZGUgPSBwYWxsb2Nfb2JqZWN0KE5P REUpOwogCiAJLyogc2luY2UgdGhpcyBmdW5jdGlvbiByZWN1cnNlcywgaXQgY291bGQgYmUg ZHJpdmVuIHRvIHN0YWNrIG92ZXJmbG93LiAqLwogCWNoZWNrX3N0YWNrX2RlcHRoKCk7CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvdHNxdWVyeV9naXN0LmMgYi9zcmMv YmFja2VuZC91dGlscy9hZHQvdHNxdWVyeV9naXN0LmMKaW5kZXggZjdmOTRjMWM3NjAuLjU1 ZmM5M2ViZWY1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvdHNxdWVyeV9n aXN0LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3RzcXVlcnlfZ2lzdC5jCkBAIC0z Myw3ICszMyw3IEBAIGd0c3F1ZXJ5X2NvbXByZXNzKFBHX0ZVTkNUSU9OX0FSR1MpCiAJewog CQlUU1F1ZXJ5U2lnbiBzaWduOwogCi0JCXJldHZhbCA9IChHSVNURU5UUlkgKikgcGFsbG9j KHNpemVvZihHSVNURU5UUlkpKTsKKwkJcmV0dmFsID0gcGFsbG9jX29iamVjdChHSVNURU5U UlkpOwogCQlzaWduID0gbWFrZVRTUXVlcnlTaWduKERhdHVtR2V0VFNRdWVyeShlbnRyeS0+ a2V5KSk7CiAKIAkJZ2lzdGVudHJ5aW5pdCgqcmV0dmFsLCBUU1F1ZXJ5U2lnbkdldERhdHVt KHNpZ24pLApAQCAtMjEzLDcgKzIxMyw3IEBAIGd0c3F1ZXJ5X3BpY2tzcGxpdChQR19GVU5D VElPTl9BUkdTKQogCWRhdHVtX3IgPSBHRVRFTlRSWShlbnRyeXZlYywgc2VlZF8yKTsKIAog CW1heG9mZiA9IE9mZnNldE51bWJlck5leHQobWF4b2ZmKTsKLQljb3N0dmVjdG9yID0gKFNQ TElUQ09TVCAqKSBwYWxsb2Moc2l6ZW9mKFNQTElUQ09TVCkgKiBtYXhvZmYpOworCWNvc3R2 ZWN0b3IgPSBwYWxsb2NfYXJyYXkoU1BMSVRDT1NULCBtYXhvZmYpOwogCWZvciAoaiA9IEZp cnN0T2Zmc2V0TnVtYmVyOyBqIDw9IG1heG9mZjsgaiA9IE9mZnNldE51bWJlck5leHQoaikp CiAJewogCQljb3N0dmVjdG9yW2ogLSAxXS5wb3MgPSBqOwpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvdXRpbHMvYWR0L3RzcXVlcnlfb3AuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC90 c3F1ZXJ5X29wLmMKaW5kZXggYmI3N2U5MjMwNjIuLjg0YmYwNzBkZmYyIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC91dGlscy9hZHQvdHNxdWVyeV9vcC5jCisrKyBiL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC90c3F1ZXJ5X29wLmMKQEAgLTMyLDE3ICszMiwxNyBAQCB0c3F1ZXJ5X251 bW5vZGUoUEdfRlVOQ1RJT05fQVJHUykKIHN0YXRpYyBRVE5vZGUgKgogam9pbl90c3F1ZXJp ZXMoVFNRdWVyeSBhLCBUU1F1ZXJ5IGIsIGludDggb3BlcmF0b3IsIHVpbnQxNiBkaXN0YW5j ZSkKIHsKLQlRVE5vZGUJICAgKnJlcyA9IChRVE5vZGUgKikgcGFsbG9jMChzaXplb2YoUVRO b2RlKSk7CisJUVROb2RlCSAgICpyZXMgPSBwYWxsb2MwX29iamVjdChRVE5vZGUpOwogCiAJ cmVzLT5mbGFncyB8PSBRVE5fTkVFREZSRUU7CiAKLQlyZXMtPnZhbG5vZGUgPSAoUXVlcnlJ dGVtICopIHBhbGxvYzAoc2l6ZW9mKFF1ZXJ5SXRlbSkpOworCXJlcy0+dmFsbm9kZSA9IHBh bGxvYzBfb2JqZWN0KFF1ZXJ5SXRlbSk7CiAJcmVzLT52YWxub2RlLT50eXBlID0gUUlfT1BS OwogCXJlcy0+dmFsbm9kZS0+cW9wZXJhdG9yLm9wZXIgPSBvcGVyYXRvcjsKIAlpZiAob3Bl cmF0b3IgPT0gT1BfUEhSQVNFKQogCQlyZXMtPnZhbG5vZGUtPnFvcGVyYXRvci5kaXN0YW5j ZSA9IGRpc3RhbmNlOwogCi0JcmVzLT5jaGlsZCA9IChRVE5vZGUgKiopIHBhbGxvYzAoc2l6 ZW9mKFFUTm9kZSAqKSAqIDIpOworCXJlcy0+Y2hpbGQgPSBwYWxsb2MwX2FycmF5KFFUTm9k ZSAqLCAyKTsKIAlyZXMtPmNoaWxkWzBdID0gUVQyUVROKEdFVFFVRVJZKGIpLCBHRVRPUEVS QU5EKGIpKTsKIAlyZXMtPmNoaWxkWzFdID0gUVQyUVROKEdFVFFVRVJZKGEpLCBHRVRPUEVS QU5EKGEpKTsKIAlyZXMtPm5jaGlsZCA9IDI7CkBAIC0xNjUsMTUgKzE2NSwxNSBAQCB0c3F1 ZXJ5X25vdChQR19GVU5DVElPTl9BUkdTKQogCWlmIChhLT5zaXplID09IDApCiAJCVBHX1JF VFVSTl9QT0lOVEVSKGEpOwogCi0JcmVzID0gKFFUTm9kZSAqKSBwYWxsb2MwKHNpemVvZihR VE5vZGUpKTsKKwlyZXMgPSBwYWxsb2MwX29iamVjdChRVE5vZGUpOwogCiAJcmVzLT5mbGFn cyB8PSBRVE5fTkVFREZSRUU7CiAKLQlyZXMtPnZhbG5vZGUgPSAoUXVlcnlJdGVtICopIHBh bGxvYzAoc2l6ZW9mKFF1ZXJ5SXRlbSkpOworCXJlcy0+dmFsbm9kZSA9IHBhbGxvYzBfb2Jq ZWN0KFF1ZXJ5SXRlbSk7CiAJcmVzLT52YWxub2RlLT50eXBlID0gUUlfT1BSOwogCXJlcy0+ dmFsbm9kZS0+cW9wZXJhdG9yLm9wZXIgPSBPUF9OT1Q7CiAKLQlyZXMtPmNoaWxkID0gKFFU Tm9kZSAqKikgcGFsbG9jMChzaXplb2YoUVROb2RlICopKTsKKwlyZXMtPmNoaWxkID0gcGFs bG9jMF9vYmplY3QoUVROb2RlICopOwogCXJlcy0+Y2hpbGRbMF0gPSBRVDJRVE4oR0VUUVVF UlkoYSksIEdFVE9QRVJBTkQoYSkpOwogCXJlcy0+bmNoaWxkID0gMTsKIApAQCAtMjcyLDcg KzI3Miw3IEBAIGNvbGxlY3RUU1F1ZXJ5VmFsdWVzKFRTUXVlcnkgYSwgaW50ICpudmFsdWVz X3ApCiAJaW50CQkJbnZhbHVlcyA9IDA7CiAJaW50CQkJaTsKIAotCXZhbHVlcyA9IChjaGFy ICoqKSBwYWxsb2Moc2l6ZW9mKGNoYXIgKikgKiBhLT5zaXplKTsKKwl2YWx1ZXMgPSBwYWxs b2NfYXJyYXkoY2hhciAqLCBhLT5zaXplKTsKIAogCWZvciAoaSA9IDA7IGkgPCBhLT5zaXpl OyBpKyspCiAJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3RzcXVlcnlf dXRpbC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3RzcXVlcnlfdXRpbC5jCmluZGV4IDFj MjRiMDQxYWEyLi4yY2NmYzlkMzMwMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMv YWR0L3RzcXVlcnlfdXRpbC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC90c3F1ZXJ5 X3V0aWwuYwpAQCAtMjQsNyArMjQsNyBAQAogUVROb2RlICoKIFFUMlFUTihRdWVyeUl0ZW0g KmluLCBjaGFyICpvcGVyYW5kKQogewotCVFUTm9kZQkgICAqbm9kZSA9IChRVE5vZGUgKikg cGFsbG9jMChzaXplb2YoUVROb2RlKSk7CisJUVROb2RlCSAgICpub2RlID0gcGFsbG9jMF9v YmplY3QoUVROb2RlKTsKIAogCS8qIHNpbmNlIHRoaXMgZnVuY3Rpb24gcmVjdXJzZXMsIGl0 IGNvdWxkIGJlIGRyaXZlbiB0byBzdGFjayBvdmVyZmxvdy4gKi8KIAljaGVja19zdGFja19k ZXB0aCgpOwpAQCAtMzMsNyArMzMsNyBAQCBRVDJRVE4oUXVlcnlJdGVtICppbiwgY2hhciAq b3BlcmFuZCkKIAogCWlmIChpbi0+dHlwZSA9PSBRSV9PUFIpCiAJewotCQlub2RlLT5jaGls ZCA9IChRVE5vZGUgKiopIHBhbGxvYzAoc2l6ZW9mKFFUTm9kZSAqKSAqIDIpOworCQlub2Rl LT5jaGlsZCA9IHBhbGxvYzBfYXJyYXkoUVROb2RlICosIDIpOwogCQlub2RlLT5jaGlsZFsw XSA9IFFUMlFUTihpbiArIDEsIG9wZXJhbmQpOwogCQlub2RlLT5zaWduID0gbm9kZS0+Y2hp bGRbMF0tPnNpZ247CiAJCWlmIChpbi0+cW9wZXJhdG9yLm9wZXIgPT0gT1BfTk9UKQpAQCAt MjI2LDcgKzIyNiw3IEBAIFFUTlRlcm5hcnkoUVROb2RlICppbikKIAkJCWludAkJCW9sZG5j aGlsZCA9IGluLT5uY2hpbGQ7CiAKIAkJCWluLT5uY2hpbGQgKz0gY2MtPm5jaGlsZCAtIDE7 Ci0JCQlpbi0+Y2hpbGQgPSAoUVROb2RlICoqKSByZXBhbGxvYyhpbi0+Y2hpbGQsIGluLT5u Y2hpbGQgKiBzaXplb2YoUVROb2RlICopKTsKKwkJCWluLT5jaGlsZCA9IHJlcGFsbG9jX2Fy cmF5KGluLT5jaGlsZCwgUVROb2RlICosIGluLT5uY2hpbGQpOwogCiAJCQlpZiAoaSArIDEg IT0gb2xkbmNoaWxkKQogCQkJCW1lbW1vdmUoaW4tPmNoaWxkICsgaSArIGNjLT5uY2hpbGQs IGluLT5jaGlsZCArIGkgKyAxLApAQCAtMjYyLDEwICsyNjIsMTAgQEAgUVROQmluYXJ5KFFU Tm9kZSAqaW4pCiAKIAl3aGlsZSAoaW4tPm5jaGlsZCA+IDIpCiAJewotCQlRVE5vZGUJICAg Km5uID0gKFFUTm9kZSAqKSBwYWxsb2MwKHNpemVvZihRVE5vZGUpKTsKKwkJUVROb2RlCSAg ICpubiA9IHBhbGxvYzBfb2JqZWN0KFFUTm9kZSk7CiAKLQkJbm4tPnZhbG5vZGUgPSAoUXVl cnlJdGVtICopIHBhbGxvYzAoc2l6ZW9mKFF1ZXJ5SXRlbSkpOwotCQlubi0+Y2hpbGQgPSAo UVROb2RlICoqKSBwYWxsb2MwKHNpemVvZihRVE5vZGUgKikgKiAyKTsKKwkJbm4tPnZhbG5v ZGUgPSBwYWxsb2MwX29iamVjdChRdWVyeUl0ZW0pOworCQlubi0+Y2hpbGQgPSBwYWxsb2Mw X2FycmF5KFFUTm9kZSAqLCAyKTsKIAogCQlubi0+bmNoaWxkID0gMjsKIAkJbm4tPmZsYWdz ID0gUVROX05FRURGUkVFOwpAQCAtNDAwLDEwICs0MDAsMTAgQEAgUVROQ29weShRVE5vZGUg KmluKQogCS8qIHNpbmNlIHRoaXMgZnVuY3Rpb24gcmVjdXJzZXMsIGl0IGNvdWxkIGJlIGRy aXZlbiB0byBzdGFjayBvdmVyZmxvdy4gKi8KIAljaGVja19zdGFja19kZXB0aCgpOwogCi0J b3V0ID0gKFFUTm9kZSAqKSBwYWxsb2Moc2l6ZW9mKFFUTm9kZSkpOworCW91dCA9IHBhbGxv Y19vYmplY3QoUVROb2RlKTsKIAogCSpvdXQgPSAqaW47Ci0Jb3V0LT52YWxub2RlID0gKFF1 ZXJ5SXRlbSAqKSBwYWxsb2Moc2l6ZW9mKFF1ZXJ5SXRlbSkpOworCW91dC0+dmFsbm9kZSA9 IHBhbGxvY19vYmplY3QoUXVlcnlJdGVtKTsKIAkqKG91dC0+dmFsbm9kZSkgPSAqKGluLT52 YWxub2RlKTsKIAlvdXQtPmZsYWdzIHw9IFFUTl9ORUVERlJFRTsKIApAQCAtNDE4LDcgKzQx OCw3IEBAIFFUTkNvcHkoUVROb2RlICppbikKIAl7CiAJCWludAkJCWk7CiAKLQkJb3V0LT5j aGlsZCA9IChRVE5vZGUgKiopIHBhbGxvYyhzaXplb2YoUVROb2RlICopICogaW4tPm5jaGls ZCk7CisJCW91dC0+Y2hpbGQgPSBwYWxsb2NfYXJyYXkoUVROb2RlICosIGluLT5uY2hpbGQp OwogCiAJCWZvciAoaSA9IDA7IGkgPCBpbi0+bmNoaWxkOyBpKyspCiAJCQlvdXQtPmNoaWxk W2ldID0gUVROQ29weShpbi0+Y2hpbGRbaV0pOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L3RzcmFuay5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3RzcmFuay5jCmlu ZGV4IGU4NjNhYTU4NjUzLi40YTM0MTg0ODY0NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L3RzcmFuay5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC90c3Jhbmsu YwpAQCAtMTYwLDcgKzE2MCw3IEBAIFNvcnRBbmRVbmlxSXRlbXMoVFNRdWVyeSBxLCBpbnQg KnNpemUpCiAJCQkgICoqcHRyLAogCQkJICAqKnByZXZwdHI7CiAKLQlwdHIgPSByZXMgPSAo UXVlcnlPcGVyYW5kICoqKSBwYWxsb2Moc2l6ZW9mKFF1ZXJ5T3BlcmFuZCAqKSAqICpzaXpl KTsKKwlwdHIgPSByZXMgPSBwYWxsb2NfYXJyYXkoUXVlcnlPcGVyYW5kICosICpzaXplKTsK IAogCS8qIENvbGxlY3QgYWxsIG9wZXJhbmRzIGZyb20gdGhlIHRyZWUgdG8gcmVzICovCiAJ d2hpbGUgKCgqc2l6ZSktLSkKQEAgLTIyNSw3ICsyMjUsNyBAQCBjYWxjX3JhbmtfYW5kKGNv bnN0IGZsb2F0ICp3LCBUU1ZlY3RvciB0LCBUU1F1ZXJ5IHEpCiAJCXBmcmVlKGl0ZW0pOwog CQlyZXR1cm4gY2FsY19yYW5rX29yKHcsIHQsIHEpOwogCX0KLQlwb3MgPSAoV29yZEVudHJ5 UG9zVmVjdG9yICoqKSBwYWxsb2MwKHNpemVvZihXb3JkRW50cnlQb3NWZWN0b3IgKikgKiBx LT5zaXplKTsKKwlwb3MgPSBwYWxsb2MwX2FycmF5KFdvcmRFbnRyeVBvc1ZlY3RvciAqLCBx LT5zaXplKTsKIAogCS8qIEEgZHVtbXkgV29yZEVudHJ5UG9zIGFycmF5IHRvIHVzZSB3aGVu IGhhc3BvcyBpcyBmYWxzZSAqLwogCXBvc251bGwubnBvcyA9IDE7CkBAIC03NDMsNyArNzQz LDcgQEAgZ2V0X2RvY3JlcChUU1ZlY3RvciB0eHQsIFF1ZXJ5UmVwcmVzZW50YXRpb24gKnFy LCBpbnQgKmRvY2xlbikKIAkJCQljdXIgPSAwOwogCURvY1JlcHJlc2VudGF0aW9uICpkb2M7 CiAKLQlkb2MgPSAoRG9jUmVwcmVzZW50YXRpb24gKikgcGFsbG9jKHNpemVvZihEb2NSZXBy ZXNlbnRhdGlvbikgKiBsZW4pOworCWRvYyA9IHBhbGxvY19hcnJheShEb2NSZXByZXNlbnRh dGlvbiwgbGVuKTsKIAogCS8qCiAJICogSXRlcmF0ZSB0aHJvdWdoIHF1ZXJ5IHRvIG1ha2Ug RG9jUmVwcmVzZW50YXRpb24gZm9yIHdvcmRzIGFuZCBpdCdzCkBAIC04MTUsNyArODE1LDcg QEAgZ2V0X2RvY3JlcChUU1ZlY3RvciB0eHQsIFF1ZXJ5UmVwcmVzZW50YXRpb24gKnFyLCBp bnQgKmRvY2xlbikKIAkJICogSm9pbiBRdWVyeUl0ZW0gcGVyIFdvcmRFbnRyeSBhbmQgaXRz IHBvc2l0aW9uCiAJCSAqLwogCQlzdG9yYWdlLnBvcyA9IGRvYy0+cG9zOwotCQlzdG9yYWdl LmRhdGEucXVlcnkuaXRlbXMgPSBwYWxsb2Moc2l6ZW9mKFF1ZXJ5SXRlbSAqKSAqIHFyLT5x dWVyeS0+c2l6ZSk7CisJCXN0b3JhZ2UuZGF0YS5xdWVyeS5pdGVtcyA9IHBhbGxvY19hcnJh eShRdWVyeUl0ZW0gKiwgcXItPnF1ZXJ5LT5zaXplKTsKIAkJc3RvcmFnZS5kYXRhLnF1ZXJ5 Lml0ZW1zWzBdID0gZG9jLT5kYXRhLm1hcC5pdGVtOwogCQlzdG9yYWdlLmRhdGEucXVlcnku bml0ZW0gPSAxOwogCkBAIC04MzIsNyArODMyLDcgQEAgZ2V0X2RvY3JlcChUU1ZlY3RvciB0 eHQsIFF1ZXJ5UmVwcmVzZW50YXRpb24gKnFyLCBpbnQgKmRvY2xlbikKIAkJCQkqd3B0ciA9 IHN0b3JhZ2U7CiAJCQkJd3B0cisrOwogCQkJCXN0b3JhZ2UucG9zID0gcnB0ci0+cG9zOwot CQkJCXN0b3JhZ2UuZGF0YS5xdWVyeS5pdGVtcyA9IHBhbGxvYyhzaXplb2YoUXVlcnlJdGVt ICopICogcXItPnF1ZXJ5LT5zaXplKTsKKwkJCQlzdG9yYWdlLmRhdGEucXVlcnkuaXRlbXMg PSBwYWxsb2NfYXJyYXkoUXVlcnlJdGVtICosIHFyLT5xdWVyeS0+c2l6ZSk7CiAJCQkJc3Rv cmFnZS5kYXRhLnF1ZXJ5Lml0ZW1zWzBdID0gcnB0ci0+ZGF0YS5tYXAuaXRlbTsKIAkJCQlz dG9yYWdlLmRhdGEucXVlcnkubml0ZW0gPSAxOwogCQkJfQpAQCAtODc4LDggKzg3OCw3IEBA IGNhbGNfcmFua19jZChjb25zdCBmbG9hdDQgKmFycmRhdGEsIFRTVmVjdG9yIHR4dCwgVFNR dWVyeSBxdWVyeSwgaW50IG1ldGhvZCkKIAl9CiAKIAlxci5xdWVyeSA9IHF1ZXJ5OwotCXFy Lm9wZXJhbmREYXRhID0gKFF1ZXJ5UmVwcmVzZW50YXRpb25PcGVyYW5kICopCi0JCXBhbGxv YzAoc2l6ZW9mKFF1ZXJ5UmVwcmVzZW50YXRpb25PcGVyYW5kKSAqIHF1ZXJ5LT5zaXplKTsK Kwlxci5vcGVyYW5kRGF0YSA9IHBhbGxvYzBfYXJyYXkoUXVlcnlSZXByZXNlbnRhdGlvbk9w ZXJhbmQsIHF1ZXJ5LT5zaXplKTsKIAogCWRvYyA9IGdldF9kb2NyZXAodHh0LCAmcXIsICZk b2NsZW4pOwogCWlmICghZG9jKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L3RzdmVjdG9yLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvdHN2ZWN0b3IuYwppbmRleCAx ZmEyZTM3MjliZi4uMzliZTEwZjQ1YTQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxz L2FkdC90c3ZlY3Rvci5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC90c3ZlY3Rvci5j CkBAIC0yMDIsOCArMjAyLDggQEAgdHN2ZWN0b3JpbihQR19GVU5DVElPTl9BUkdTKQogCXN0 YXRlID0gaW5pdF90c3ZlY3Rvcl9wYXJzZXIoYnVmLCAwLCBlc2NvbnRleHQpOwogCiAJYXJy bGVuID0gNjQ7Ci0JYXJyID0gKFdvcmRFbnRyeUlOICopIHBhbGxvYyhzaXplb2YoV29yZEVu dHJ5SU4pICogYXJybGVuKTsKLQljdXIgPSB0bXBidWYgPSAoY2hhciAqKSBwYWxsb2MoYnVm bGVuKTsKKwlhcnIgPSBwYWxsb2NfYXJyYXkoV29yZEVudHJ5SU4sIGFycmxlbik7IAorCWN1 ciA9IHRtcGJ1ZiA9IHBhbGxvY19hcnJheShjaGFyLCBidWZsZW4pOwogCiAJd2hpbGUgKGdl dHRva2VuX3RzdmVjdG9yKHN0YXRlLCAmdG9rZW4sICZ0b2tsZW4sICZwb3MsICZwb3NsZW4s IE5VTEwpKQogCXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC90c3ZlY3Rv cl9vcC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3RzdmVjdG9yX29wLmMKaW5kZXggYzc1 MmNiZTU0NjMuLmI4MDkwODlhYzVkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9h ZHQvdHN2ZWN0b3Jfb3AuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvdHN2ZWN0b3Jf b3AuYwpAQCAtMTIxMiw3ICsxMjEyLDcgQEAgY2hlY2tjbGFzc19zdHIoQ0hLVkFMICpjaGt2 YWwsIFdvcmRFbnRyeSAqZW50cnksIFF1ZXJ5T3BlcmFuZCAqdmFsLAogCQkJLyoKIAkJCSAq IEZpbHRlciBwb3NpdGlvbiBpbmZvcm1hdGlvbiBieSB3ZWlnaHRzCiAJCQkgKi8KLQkJCWRw dHIgPSBkYXRhLT5wb3MgPSBwYWxsb2Moc2l6ZW9mKFdvcmRFbnRyeVBvcykgKiBwb3N2ZWMt Pm5wb3MpOworCQkJZHB0ciA9IGRhdGEtPnBvcyA9IHBhbGxvY19hcnJheShXb3JkRW50cnlQ b3MsIHBvc3ZlYy0+bnBvcyk7CiAJCQlkYXRhLT5hbGxvY2F0ZWQgPSB0cnVlOwogCiAJCQkv KiBJcyB0aGVyZSBhIHBvc2l0aW9uIHdpdGggYSBtYXRjaGluZyB3ZWlnaHQ/ICovCkBAIC0x MzkxLDEyICsxMzkxLDEyIEBAIGNoZWNrY29uZGl0aW9uX3N0cih2b2lkICpjaGVja3ZhbCwg UXVlcnlPcGVyYW5kICp2YWwsIEV4ZWNQaHJhc2VEYXRhICpkYXRhKQogCQkJCQkJaWYgKHRv dGFscG9zID09IDApCiAJCQkJCQl7CiAJCQkJCQkJdG90YWxwb3MgPSAyNTY7Ci0JCQkJCQkJ YWxscG9zID0gcGFsbG9jKHNpemVvZihXb3JkRW50cnlQb3MpICogdG90YWxwb3MpOworCQkJ CQkJCWFsbHBvcyA9IHBhbGxvY19hcnJheShXb3JkRW50cnlQb3MsIHRvdGFscG9zKTsKIAkJ CQkJCX0KIAkJCQkJCWVsc2UKIAkJCQkJCXsKIAkJCQkJCQl0b3RhbHBvcyAqPSAyOwotCQkJ CQkJCWFsbHBvcyA9IHJlcGFsbG9jKGFsbHBvcywgc2l6ZW9mKFdvcmRFbnRyeVBvcykgKiB0 b3RhbHBvcyk7CisJCQkJCQkJYWxscG9zID0gcmVwYWxsb2NfYXJyYXkoYWxscG9zLCBXb3Jk RW50cnlQb3MsIHRvdGFscG9zKTsKIAkJCQkJCX0KIAkJCQkJfQogCkBAIC0yNDU2LDcgKzI0 NTYsNyBAQCB0c19zZXR1cF9maXJzdGNhbGwoRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8sIEZ1 bmNDYWxsQ29udGV4dCAqZnVuY2N0eCwKIAogCW9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0 U3dpdGNoVG8oZnVuY2N0eC0+bXVsdGlfY2FsbF9tZW1vcnlfY3R4KTsKIAotCXN0YXQtPnN0 YWNrID0gcGFsbG9jMChzaXplb2YoU3RhdEVudHJ5ICopICogKHN0YXQtPm1heGRlcHRoICsg MSkpOworCXN0YXQtPnN0YWNrID0gcGFsbG9jMF9hcnJheShTdGF0RW50cnkgKiwgc3RhdC0+ bWF4ZGVwdGggKyAxKTsKIAlzdGF0LT5zdGFja3BvcyA9IDA7CiAKIAlub2RlID0gc3RhdC0+ cm9vdDsKQEAgLTI4MzksNyArMjgzOSw3IEBAIHRzdmVjdG9yX3VwZGF0ZV90cmlnZ2VyKFBH X0ZVTkNUSU9OX0FSR1MsIGJvb2wgY29uZmlnX2NvbHVtbikKIAlwcnMubGVud29yZHMgPSAz MjsKIAlwcnMuY3Vyd29yZHMgPSAwOwogCXBycy5wb3MgPSAwOwotCXBycy53b3JkcyA9IChQ YXJzZWRXb3JkICopIHBhbGxvYyhzaXplb2YoUGFyc2VkV29yZCkgKiBwcnMubGVud29yZHMp OworCXBycy53b3JkcyA9IHBhbGxvY19hcnJheShQYXJzZWRXb3JkLCBwcnMubGVud29yZHMp OwogCiAJLyogZmluZCBhbGwgd29yZHMgaW4gaW5kZXhhYmxlIGNvbHVtbihzKSAqLwogCWZv ciAoaSA9IDI7IGkgPCB0cmlnZ2VyLT50Z25hcmdzOyBpKyspCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC91dGlscy9hZHQvdHN2ZWN0b3JfcGFyc2VyLmMgYi9zcmMvYmFja2VuZC91dGls cy9hZHQvdHN2ZWN0b3JfcGFyc2VyLmMKaW5kZXggZTE2MjBkM2VkMWYuLjM5NWMzNDAzYjlh IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvdHN2ZWN0b3JfcGFyc2VyLmMK KysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3RzdmVjdG9yX3BhcnNlci5jCkBAIC01OCw3 ICs1OCw3IEBAIGluaXRfdHN2ZWN0b3JfcGFyc2VyKGNoYXIgKmlucHV0LCBpbnQgZmxhZ3Ms IE5vZGUgKmVzY29udGV4dCkKIHsKIAlUU1ZlY3RvclBhcnNlU3RhdGUgc3RhdGU7CiAKLQlz dGF0ZSA9IChUU1ZlY3RvclBhcnNlU3RhdGUpIHBhbGxvYyhzaXplb2Yoc3RydWN0IFRTVmVj dG9yUGFyc2VTdGF0ZURhdGEpKTsKKwlzdGF0ZSA9IHBhbGxvY19vYmplY3Qoc3RydWN0IFRT VmVjdG9yUGFyc2VTdGF0ZURhdGEpOwogCXN0YXRlLT5wcnNidWYgPSBpbnB1dDsKIAlzdGF0 ZS0+YnVmc3RhcnQgPSBpbnB1dDsKIAlzdGF0ZS0+bGVuID0gMzI7CkBAIC0zMjIsMTMgKzMy MiwxMyBAQCBnZXR0b2tlbl90c3ZlY3RvcihUU1ZlY3RvclBhcnNlU3RhdGUgc3RhdGUsCiAJ CQkJaWYgKHBvc2FsZW4gPT0gMCkKIAkJCQl7CiAJCQkJCXBvc2FsZW4gPSA0OwotCQkJCQlw b3MgPSAoV29yZEVudHJ5UG9zICopIHBhbGxvYyhzaXplb2YoV29yZEVudHJ5UG9zKSAqIHBv c2FsZW4pOworCQkJCQlwb3MgPSBwYWxsb2NfYXJyYXkoV29yZEVudHJ5UG9zLCBwb3NhbGVu KTsgCiAJCQkJCW5wb3MgPSAwOwogCQkJCX0KIAkJCQllbHNlIGlmIChucG9zICsgMSA+PSBw b3NhbGVuKQogCQkJCXsKIAkJCQkJcG9zYWxlbiAqPSAyOwotCQkJCQlwb3MgPSAoV29yZEVu dHJ5UG9zICopIHJlcGFsbG9jKHBvcywgc2l6ZW9mKFdvcmRFbnRyeVBvcykgKiBwb3NhbGVu KTsKKwkJCQkJcG9zID0gcmVwYWxsb2NfYXJyYXkocG9zLCBXb3JkRW50cnlQb3MsIHBvc2Fs ZW4pOwogCQkJCX0KIAkJCQlucG9zKys7CiAJCQkJV0VQX1NFVFBPUyhwb3NbbnBvcyAtIDFd LCBMSU1JVFBPUyhhdG9pKHN0YXRlLT5wcnNidWYpKSk7CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC91dGlscy9hZHQvdXVpZC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3V1aWQuYwpp bmRleCBlNWYyN2ZmODkyYi4uNDkzYWFjMzI3OTkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC91dWlkLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3V1aWQuYwpA QCAtODAsNyArODAsNyBAQCB1dWlkX2luKFBHX0ZVTkNUSU9OX0FSR1MpCiAJY2hhcgkgICAq dXVpZF9zdHIgPSBQR19HRVRBUkdfQ1NUUklORygwKTsKIAlwZ191dWlkX3QgICp1dWlkOwog Ci0JdXVpZCA9IChwZ191dWlkX3QgKikgcGFsbG9jKHNpemVvZigqdXVpZCkpOworCXV1aWQg PSBwYWxsb2Nfb2JqZWN0KHBnX3V1aWRfdCk7CiAJc3RyaW5nX3RvX3V1aWQodXVpZF9zdHIs IHV1aWQsIGZjaW5mby0+Y29udGV4dCk7CiAJUEdfUkVUVVJOX1VVSURfUCh1dWlkKTsKIH0K QEAgLTI4OCw3ICsyODgsNyBAQCB1dWlkX3NvcnRzdXBwb3J0KFBHX0ZVTkNUSU9OX0FSR1Mp CiAKIAkJb2xkY29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhzc3VwLT5zc3VwX2N4 dCk7CiAKLQkJdXNzID0gcGFsbG9jKHNpemVvZih1dWlkX3NvcnRzdXBwb3J0X3N0YXRlKSk7 CisJCXVzcyA9IHBhbGxvY19vYmplY3QodXVpZF9zb3J0c3VwcG9ydF9zdGF0ZSk7CiAJCXVz cy0+aW5wdXRfY291bnQgPSAwOwogCQl1c3MtPmVzdGltYXRpbmcgPSB0cnVlOwogCQlpbml0 SHlwZXJMb2dMb2coJnVzcy0+YWJicl9jYXJkLCAxMCk7CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC91dGlscy9hZHQvdmFybGVuYS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Zhcmxl bmEuYwppbmRleCAzODk0NDU3YWI0MC4uYzI2ZDU3ZWEyZWMgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3V0aWxzL2FkdC92YXJsZW5hLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L3ZhcmxlbmEuYwpAQCAtMTY5Miw3ICsxNjkyLDcgQEAgdmFyc3RyX3NvcnRzdXBwb3J0KFNv cnRTdXBwb3J0IHNzdXAsIE9pZCB0eXBpZCwgT2lkIGNvbGxpZCkKIAkgKi8KIAlpZiAoYWJi cmV2aWF0ZSB8fCAhY29sbGF0ZV9jKQogCXsKLQkJc3NzID0gcGFsbG9jKHNpemVvZihWYXJT dHJpbmdTb3J0U3VwcG9ydCkpOworCQlzc3MgPSBwYWxsb2Nfb2JqZWN0KFZhclN0cmluZ1Nv cnRTdXBwb3J0KTsKIAkJc3NzLT5idWYxID0gcGFsbG9jKFRFWFRCVUZMRU4pOwogCQlzc3Mt PmJ1ZmxlbjEgPSBURVhUQlVGTEVOOwogCQlzc3MtPmJ1ZjIgPSBwYWxsb2MoVEVYVEJVRkxF Tik7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQveG1sLmMgYi9zcmMvYmFj a2VuZC91dGlscy9hZHQveG1sLmMKaW5kZXggNDFlNzc1NTcwZWMuLmM4YWI5ZDYxYzY4IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQveG1sLmMKKysrIGIvc3JjL2JhY2tl bmQvdXRpbHMvYWR0L3htbC5jCkBAIC0xMjU1LDcgKzEyNTUsNyBAQCBwZ194bWxfaW5pdChQ Z1htbFN0cmljdG5lc3Mgc3RyaWN0bmVzcykKIAlwZ194bWxfaW5pdF9saWJyYXJ5KCk7CiAK IAkvKiBDcmVhdGUgZXJyb3IgaGFuZGxpbmcgY29udGV4dCBzdHJ1Y3R1cmUgKi8KLQllcnJj eHQgPSAoUGdYbWxFcnJvckNvbnRleHQgKikgcGFsbG9jKHNpemVvZihQZ1htbEVycm9yQ29u dGV4dCkpOworCWVycmN4dCA9IHBhbGxvY19vYmplY3QoUGdYbWxFcnJvckNvbnRleHQpOwog CWVycmN4dC0+bWFnaWMgPSBFUlJDWFRfTUFHSUM7CiAJZXJyY3h0LT5zdHJpY3RuZXNzID0g c3RyaWN0bmVzczsKIAllcnJjeHQtPmVycl9vY2N1cnJlZCA9IGZhbHNlOwpAQCAtNDczMywx MCArNDczMywxMCBAQCBYbWxUYWJsZUluaXRPcGFxdWUoVGFibGVGdW5jU2NhblN0YXRlICpz dGF0ZSwgaW50IG5hdHRzKQogCVhtbFRhYmxlQnVpbGRlckRhdGEgKnh0Q3h0OwogCVBnWG1s RXJyb3JDb250ZXh0ICp4bWxlcnJjeHQ7CiAKLQl4dEN4dCA9IHBhbGxvYzAoc2l6ZW9mKFht bFRhYmxlQnVpbGRlckRhdGEpKTsKKwl4dEN4dCA9IHBhbGxvYzBfb2JqZWN0KFhtbFRhYmxl QnVpbGRlckRhdGEpOwogCXh0Q3h0LT5tYWdpYyA9IFhNTFRBQkxFX0NPTlRFWFRfTUFHSUM7 CiAJeHRDeHQtPm5hdHRzID0gbmF0dHM7Ci0JeHRDeHQtPnhwYXRoc2NvbXAgPSBwYWxsb2Mw KHNpemVvZih4bWxYUGF0aENvbXBFeHByUHRyKSAqIG5hdHRzKTsKKwl4dEN4dC0+eHBhdGhz Y29tcCA9IHBhbGxvYzBfYXJyYXkoeG1sWFBhdGhDb21wRXhwclB0ciwgbmF0dHMpOwogCiAJ eG1sZXJyY3h0ID0gcGdfeG1sX2luaXQoUEdfWE1MX1NUUklDVE5FU1NfQUxMKTsKIApkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvY2F0Y2FjaGUuYyBiL3NyYy9iYWNr ZW5kL3V0aWxzL2NhY2hlL2NhdGNhY2hlLmMKaW5kZXggMDJhZTdkNWE4MzEuLjg0ZjFmODA2 MDdlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9jYXRjYWNoZS5jCisr KyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2NhdGNhY2hlLmMKQEAgLTkyMCw3ICs5MjAs NyBAQCBJbml0Q2F0Q2FjaGUoaW50IGlkLAogCSAqLwogCWlmIChDYWNoZUhkciA9PSBOVUxM KQogCXsKLQkJQ2FjaGVIZHIgPSAoQ2F0Q2FjaGVIZWFkZXIgKikgcGFsbG9jKHNpemVvZihD YXRDYWNoZUhlYWRlcikpOworCQlDYWNoZUhkciA9IHBhbGxvY19vYmplY3QoQ2F0Q2FjaGVI ZWFkZXIpOwogCQlzbGlzdF9pbml0KCZDYWNoZUhkci0+Y2hfY2FjaGVzKTsKIAkJQ2FjaGVI ZHItPmNoX250dXAgPSAwOwogI2lmZGVmIENBVENBQ0hFX1NUQVRTCkBAIC0yMjQzLDcgKzIy NDMsNyBAQCBDYXRhbG9nQ2FjaGVDcmVhdGVFbnRyeShDYXRDYWNoZSAqY2FjaGUsIEhlYXBU dXBsZSBudHAsIERhdHVtICphcmd1bWVudHMsCiAJewogCQkvKiBTZXQgdXAga2V5cyBmb3Ig YSBuZWdhdGl2ZSBjYWNoZSBlbnRyeSAqLwogCQlvbGRjeHQgPSBNZW1vcnlDb250ZXh0U3dp dGNoVG8oQ2FjaGVNZW1vcnlDb250ZXh0KTsKLQkJY3QgPSAoQ2F0Q1R1cCAqKSBwYWxsb2Mo c2l6ZW9mKENhdENUdXApKTsKKwkJY3QgPSBwYWxsb2Nfb2JqZWN0KENhdENUdXApOwogCiAJ CS8qCiAJCSAqIFN0b3JlIGtleXMgLSB0aGV5J2xsIHBvaW50IGludG8gc2VwYXJhdGVseSBh bGxvY2F0ZWQgbWVtb3J5IGlmIG5vdApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMv Y2FjaGUvZXZ0Y2FjaGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2V2dGNhY2hlLmMK aW5kZXggYjlkNWE1OTk4YmUuLjdmMDNjOTRhOTc0IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC91dGlscy9jYWNoZS9ldnRjYWNoZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hl L2V2dGNhY2hlLmMKQEAgLTE3Miw3ICsxNzIsNyBAQCBCdWlsZEV2ZW50VHJpZ2dlckNhY2hl KHZvaWQpCiAJCW9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oRXZlbnRUcmln Z2VyQ2FjaGVDb250ZXh0KTsKIAogCQkvKiBBbGxvY2F0ZSBuZXcgY2FjaGUgaXRlbS4gKi8K LQkJaXRlbSA9IHBhbGxvYzAoc2l6ZW9mKEV2ZW50VHJpZ2dlckNhY2hlSXRlbSkpOworCQlp dGVtID0gcGFsbG9jMF9vYmplY3QoRXZlbnRUcmlnZ2VyQ2FjaGVJdGVtKTsKIAkJaXRlbS0+ Zm5vaWQgPSBmb3JtLT5ldnRmb2lkOwogCQlpdGVtLT5lbmFibGVkID0gZm9ybS0+ZXZ0ZW5h YmxlZDsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvaW52YWwuYyBi L3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2ludmFsLmMKaW5kZXggMDZmNzM2Y2FiNDUuLjg2 OGY4ZjYxODhmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9pbnZhbC5j CisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2ludmFsLmMKQEAgLTc1OCw3ICs3NTgs NyBAQCBQcmVwYXJlSW5wbGFjZUludmFsaWRhdGlvblN0YXRlKHZvaWQpCiAJQXNzZXJ0KGlu cGxhY2VJbnZhbEluZm8gPT0gTlVMTCk7CiAKIAkvKiBnb25lIGFmdGVyIFdBTCBpbnNlcnRp b24gQ3JpdFNlY3Rpb24gZW5kcywgc28gdXNlIGN1cnJlbnQgY29udGV4dCAqLwotCW15SW5m byA9IChJbnZhbGlkYXRpb25JbmZvICopIHBhbGxvYzAoc2l6ZW9mKEludmFsaWRhdGlvbklu Zm8pKTsKKwlteUluZm8gPSBwYWxsb2MwX29iamVjdChJbnZhbGlkYXRpb25JbmZvKTsKIAog CS8qIFN0YXNoIG91ciBtZXNzYWdlcyBwYXN0IGVuZCBvZiB0aGUgdHJhbnNhY3Rpb25hbCBt ZXNzYWdlcywgaWYgYW55LiAqLwogCWlmICh0cmFuc0ludmFsSW5mbyAhPSBOVUxMKQpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5c2NhY2hlLmMgYi9zcmMvYmFj a2VuZC91dGlscy9jYWNoZS9sc3lzY2FjaGUuYwppbmRleCBmYTdjZDdlMDZhNy4uNWFhN2Ey NmQ5NWMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNoZS5j CisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNoZS5jCkBAIC03MDIsOCAr NzAyLDcgQEAgZ2V0X29wX2luZGV4X2ludGVycHJldGF0aW9uKE9pZCBvcG5vKQogCQlpZiAo Y21wdHlwZSA9PSBDT01QQVJFX0lOVkFMSUQpCiAJCQljb250aW51ZTsKIAotCQl0aGlzcmVz dWx0ID0gKE9wSW5kZXhJbnRlcnByZXRhdGlvbiAqKQotCQkJcGFsbG9jKHNpemVvZihPcElu ZGV4SW50ZXJwcmV0YXRpb24pKTsKKwkJdGhpc3Jlc3VsdCA9IHBhbGxvY19vYmplY3QoT3BJ bmRleEludGVycHJldGF0aW9uKTsKIAkJdGhpc3Jlc3VsdC0+b3BmYW1pbHlfaWQgPSBvcF9m b3JtLT5hbW9wZmFtaWx5OwogCQl0aGlzcmVzdWx0LT5jbXB0eXBlID0gY21wdHlwZTsKIAkJ dGhpc3Jlc3VsdC0+b3BsZWZ0dHlwZSA9IG9wX2Zvcm0tPmFtb3BsZWZ0dHlwZTsKQEAgLTc0 OCw4ICs3NDcsNyBAQCBnZXRfb3BfaW5kZXhfaW50ZXJwcmV0YXRpb24oT2lkIG9wbm8pCiAJ CQkJCWNvbnRpbnVlOwogCiAJCQkJLyogT0ssIHJlcG9ydCBpdCBhcyBDT01QQVJFX05FICov Ci0JCQkJdGhpc3Jlc3VsdCA9IChPcEluZGV4SW50ZXJwcmV0YXRpb24gKikKLQkJCQkJcGFs bG9jKHNpemVvZihPcEluZGV4SW50ZXJwcmV0YXRpb24pKTsKKwkJCQl0aGlzcmVzdWx0ID0g cGFsbG9jX29iamVjdChPcEluZGV4SW50ZXJwcmV0YXRpb24pOwogCQkJCXRoaXNyZXN1bHQt Pm9wZmFtaWx5X2lkID0gb3BfZm9ybS0+YW1vcGZhbWlseTsKIAkJCQl0aGlzcmVzdWx0LT5j bXB0eXBlID0gQ09NUEFSRV9ORTsKIAkJCQl0aGlzcmVzdWx0LT5vcGxlZnR0eXBlID0gb3Bf Zm9ybS0+YW1vcGxlZnR0eXBlOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2Fj aGUvcGFydGNhY2hlLmMgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9wYXJ0Y2FjaGUuYwpp bmRleCBmNWQ3ZDcwZGVmMC4uOTdmMmNlMzNlZmUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3V0aWxzL2NhY2hlL3BhcnRjYWNoZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hl L3BhcnRjYWNoZS5jCkBAIC0xNjcsMTggKzE2NywxOCBAQCBSZWxhdGlvbkJ1aWxkUGFydGl0 aW9uS2V5KFJlbGF0aW9uIHJlbGF0aW9uKQogCiAJLyogQWxsb2NhdGUgYXNzb3J0ZWQgYXJy YXlzIGluIHRoZSBwYXJ0a2V5Y3h0LCB3aGljaCB3ZSdsbCBmaWxsIGJlbG93ICovCiAJb2xk Y3h0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKHBhcnRrZXljeHQpOwotCWtleS0+cGFydGF0 dHJzID0gKEF0dHJOdW1iZXIgKikgcGFsbG9jMChrZXktPnBhcnRuYXR0cyAqIHNpemVvZihB dHRyTnVtYmVyKSk7Ci0Ja2V5LT5wYXJ0b3BmYW1pbHkgPSAoT2lkICopIHBhbGxvYzAoa2V5 LT5wYXJ0bmF0dHMgKiBzaXplb2YoT2lkKSk7Ci0Ja2V5LT5wYXJ0b3BjaW50eXBlID0gKE9p ZCAqKSBwYWxsb2MwKGtleS0+cGFydG5hdHRzICogc2l6ZW9mKE9pZCkpOwotCWtleS0+cGFy dHN1cGZ1bmMgPSAoRm1nckluZm8gKikgcGFsbG9jMChrZXktPnBhcnRuYXR0cyAqIHNpemVv ZihGbWdySW5mbykpOwotCi0Ja2V5LT5wYXJ0Y29sbGF0aW9uID0gKE9pZCAqKSBwYWxsb2Mw KGtleS0+cGFydG5hdHRzICogc2l6ZW9mKE9pZCkpOwotCWtleS0+cGFydHR5cGlkID0gKE9p ZCAqKSBwYWxsb2MwKGtleS0+cGFydG5hdHRzICogc2l6ZW9mKE9pZCkpOwotCWtleS0+cGFy dHR5cG1vZCA9IChpbnQzMiAqKSBwYWxsb2MwKGtleS0+cGFydG5hdHRzICogc2l6ZW9mKGlu dDMyKSk7Ci0Ja2V5LT5wYXJ0dHlwbGVuID0gKGludDE2ICopIHBhbGxvYzAoa2V5LT5wYXJ0 bmF0dHMgKiBzaXplb2YoaW50MTYpKTsKLQlrZXktPnBhcnR0eXBieXZhbCA9IChib29sICop IHBhbGxvYzAoa2V5LT5wYXJ0bmF0dHMgKiBzaXplb2YoYm9vbCkpOwotCWtleS0+cGFydHR5 cGFsaWduID0gKGNoYXIgKikgcGFsbG9jMChrZXktPnBhcnRuYXR0cyAqIHNpemVvZihjaGFy KSk7Ci0Ja2V5LT5wYXJ0dHlwY29sbCA9IChPaWQgKikgcGFsbG9jMChrZXktPnBhcnRuYXR0 cyAqIHNpemVvZihPaWQpKTsKKwlrZXktPnBhcnRhdHRycyA9IChBdHRyTnVtYmVyICopIHBh bGxvYzBfYXJyYXkoQXR0ck51bWJlciwga2V5LT5wYXJ0bmF0dHMpOworCWtleS0+cGFydG9w ZmFtaWx5ID0gKE9pZCAqKSBwYWxsb2MwX2FycmF5KE9pZCwga2V5LT5wYXJ0bmF0dHMpOwor CWtleS0+cGFydG9wY2ludHlwZSA9IChPaWQgKikgcGFsbG9jMF9hcnJheShPaWQsIGtleS0+ cGFydG5hdHRzKTsKKwlrZXktPnBhcnRzdXBmdW5jID0gKEZtZ3JJbmZvICopIHBhbGxvYzBf YXJyYXkoRm1nckluZm8sIGtleS0+cGFydG5hdHRzKTsKKworCWtleS0+cGFydGNvbGxhdGlv biA9IChPaWQgKikgcGFsbG9jMF9hcnJheShPaWQsIGtleS0+cGFydG5hdHRzKTsKKwlrZXkt PnBhcnR0eXBpZCA9IChPaWQgKikgcGFsbG9jMF9hcnJheShPaWQsIGtleS0+cGFydG5hdHRz KTsKKwlrZXktPnBhcnR0eXBtb2QgPSAoaW50MzIgKikgcGFsbG9jMF9hcnJheShpbnQzMiwg a2V5LT5wYXJ0bmF0dHMpOworCWtleS0+cGFydHR5cGxlbiA9IChpbnQxNiAqKSBwYWxsb2Mw X2FycmF5KGludDE2LCBrZXktPnBhcnRuYXR0cyk7CisJa2V5LT5wYXJ0dHlwYnl2YWwgPSAo Ym9vbCAqKSBwYWxsb2MwX2FycmF5KGJvb2wsIGtleS0+cGFydG5hdHRzKTsKKwlrZXktPnBh cnR0eXBhbGlnbiA9IChjaGFyICopIHBhbGxvYzBfYXJyYXkoY2hhciwga2V5LT5wYXJ0bmF0 dHMpOworCWtleS0+cGFydHR5cGNvbGwgPSAoT2lkICopIHBhbGxvYzBfYXJyYXkoT2lkLCBr ZXktPnBhcnRuYXR0cyk7CiAJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN4dCk7CiAKIAkv KiBkZXRlcm1pbmUgc3VwcG9ydCBmdW5jdGlvbiBudW1iZXIgdG8gc2VhcmNoIGZvciAqLwpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcGxhbmNhY2hlLmMgYi9zcmMv YmFja2VuZC91dGlscy9jYWNoZS9wbGFuY2FjaGUuYwppbmRleCA2NjYxZDJjNmI3My4uNDUy NjFjYWFmNDcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3BsYW5jYWNo ZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3BsYW5jYWNoZS5jCkBAIC0yMDcs NyArMjA3LDcgQEAgQ3JlYXRlQ2FjaGVkUGxhbihSYXdTdG10ICpyYXdfcGFyc2VfdHJlZSwK IAkgKi8KIAlvbGRjeHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oc291cmNlX2NvbnRleHQp OwogCi0JcGxhbnNvdXJjZSA9IChDYWNoZWRQbGFuU291cmNlICopIHBhbGxvYzAoc2l6ZW9m KENhY2hlZFBsYW5Tb3VyY2UpKTsKKwlwbGFuc291cmNlID0gcGFsbG9jMF9vYmplY3QoQ2Fj aGVkUGxhblNvdXJjZSk7CiAJcGxhbnNvdXJjZS0+bWFnaWMgPSBDQUNIRURQTEFOU09VUkNF X01BR0lDOwogCXBsYW5zb3VyY2UtPnJhd19wYXJzZV90cmVlID0gY29weU9iamVjdChyYXdf cGFyc2VfdHJlZSk7CiAJcGxhbnNvdXJjZS0+YW5hbHl6ZWRfcGFyc2VfdHJlZSA9IE5VTEw7 CkBAIC0zMDcsNyArMzA3LDcgQEAgQ3JlYXRlT25lU2hvdENhY2hlZFBsYW4oUmF3U3RtdCAq cmF3X3BhcnNlX3RyZWUsCiAJICogQ3JlYXRlIGFuZCBmaWxsIHRoZSBDYWNoZWRQbGFuU291 cmNlIHN0cnVjdCB3aXRoaW4gdGhlIGNhbGxlcidzIG1lbW9yeQogCSAqIGNvbnRleHQuICBN b3N0IGZpZWxkcyBhcmUganVzdCBsZWZ0IGVtcHR5IGZvciB0aGUgbW9tZW50LgogCSAqLwot CXBsYW5zb3VyY2UgPSAoQ2FjaGVkUGxhblNvdXJjZSAqKSBwYWxsb2MwKHNpemVvZihDYWNo ZWRQbGFuU291cmNlKSk7CisJcGxhbnNvdXJjZSA9IHBhbGxvYzBfb2JqZWN0KENhY2hlZFBs YW5Tb3VyY2UpOwogCXBsYW5zb3VyY2UtPm1hZ2ljID0gQ0FDSEVEUExBTlNPVVJDRV9NQUdJ QzsKIAlwbGFuc291cmNlLT5yYXdfcGFyc2VfdHJlZSA9IHJhd19wYXJzZV90cmVlOwogCXBs YW5zb3VyY2UtPmFuYWx5emVkX3BhcnNlX3RyZWUgPSBOVUxMOwpAQCAtNDY5LDcgKzQ2OSw3 IEBAIENvbXBsZXRlQ2FjaGVkUGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLAog CiAJaWYgKG51bV9wYXJhbXMgPiAwKQogCXsKLQkJcGxhbnNvdXJjZS0+cGFyYW1fdHlwZXMg PSAoT2lkICopIHBhbGxvYyhudW1fcGFyYW1zICogc2l6ZW9mKE9pZCkpOworCQlwbGFuc291 cmNlLT5wYXJhbV90eXBlcyA9IHBhbGxvY19hcnJheShPaWQsIG51bV9wYXJhbXMpOwogCQlt ZW1jcHkocGxhbnNvdXJjZS0+cGFyYW1fdHlwZXMsIHBhcmFtX3R5cGVzLCBudW1fcGFyYW1z ICogc2l6ZW9mKE9pZCkpOwogCX0KIAllbHNlCkBAIC0xMTE5LDcgKzExMTksNyBAQCBCdWls ZENhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwgTGlzdCAqcWxpc3Qs CiAJLyoKIAkgKiBDcmVhdGUgYW5kIGZpbGwgdGhlIENhY2hlZFBsYW4gc3RydWN0IHdpdGhp biB0aGUgbmV3IGNvbnRleHQuCiAJICovCi0JcGxhbiA9IChDYWNoZWRQbGFuICopIHBhbGxv YyhzaXplb2YoQ2FjaGVkUGxhbikpOworCXBsYW4gPSBwYWxsb2Nfb2JqZWN0KENhY2hlZFBs YW4pOwogCXBsYW4tPm1hZ2ljID0gQ0FDSEVEUExBTl9NQUdJQzsKIAlwbGFuLT5zdG10X2xp c3QgPSBwbGlzdDsKIApAQCAtMTY5MSw3ICsxNjkxLDcgQEAgQ29weUNhY2hlZFBsYW4oQ2Fj aGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSkKIAogCW9sZGN4dCA9IE1lbW9yeUNvbnRleHRT d2l0Y2hUbyhzb3VyY2VfY29udGV4dCk7CiAKLQluZXdzb3VyY2UgPSAoQ2FjaGVkUGxhblNv dXJjZSAqKSBwYWxsb2MwKHNpemVvZihDYWNoZWRQbGFuU291cmNlKSk7CisJbmV3c291cmNl ID0gcGFsbG9jMF9vYmplY3QoQ2FjaGVkUGxhblNvdXJjZSk7CiAJbmV3c291cmNlLT5tYWdp YyA9IENBQ0hFRFBMQU5TT1VSQ0VfTUFHSUM7CiAJbmV3c291cmNlLT5yYXdfcGFyc2VfdHJl ZSA9IGNvcHlPYmplY3QocGxhbnNvdXJjZS0+cmF3X3BhcnNlX3RyZWUpOwogCW5ld3NvdXJj ZS0+YW5hbHl6ZWRfcGFyc2VfdHJlZSA9IGNvcHlPYmplY3QocGxhbnNvdXJjZS0+YW5hbHl6 ZWRfcGFyc2VfdHJlZSk7CkBAIC0xNzAwLDggKzE3MDAsNyBAQCBDb3B5Q2FjaGVkUGxhbihD YWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlKQogCW5ld3NvdXJjZS0+Y29tbWFuZFRhZyA9 IHBsYW5zb3VyY2UtPmNvbW1hbmRUYWc7CiAJaWYgKHBsYW5zb3VyY2UtPm51bV9wYXJhbXMg PiAwKQogCXsKLQkJbmV3c291cmNlLT5wYXJhbV90eXBlcyA9IChPaWQgKikKLQkJCXBhbGxv YyhwbGFuc291cmNlLT5udW1fcGFyYW1zICogc2l6ZW9mKE9pZCkpOworCQluZXdzb3VyY2Ut PnBhcmFtX3R5cGVzID0gcGFsbG9jX2FycmF5KE9pZCwgcGxhbnNvdXJjZS0+bnVtX3BhcmFt cyk7CiAJCW1lbWNweShuZXdzb3VyY2UtPnBhcmFtX3R5cGVzLCBwbGFuc291cmNlLT5wYXJh bV90eXBlcywKIAkJCSAgIHBsYW5zb3VyY2UtPm51bV9wYXJhbXMgKiBzaXplb2YoT2lkKSk7 CiAJfQpAQCAtMTg0MCw3ICsxODM5LDcgQEAgR2V0Q2FjaGVkRXhwcmVzc2lvbihOb2RlICpl eHByKQogCiAJb2xkY3h0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKGNleHByX2NvbnRleHQp OwogCi0JY2V4cHIgPSAoQ2FjaGVkRXhwcmVzc2lvbiAqKSBwYWxsb2Moc2l6ZW9mKENhY2hl ZEV4cHJlc3Npb24pKTsKKwljZXhwciA9IHBhbGxvY19vYmplY3QoQ2FjaGVkRXhwcmVzc2lv bik7CiAJY2V4cHItPm1hZ2ljID0gQ0FDSEVERVhQUl9NQUdJQzsKIAljZXhwci0+ZXhwciA9 IGNvcHlPYmplY3QoZXhwcik7CiAJY2V4cHItPmlzX3ZhbGlkID0gdHJ1ZTsKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMgYi9zcmMvYmFja2VuZC91 dGlscy9jYWNoZS9yZWxjYWNoZS5jCmluZGV4IDkxNWQwYmM5MDg0Li5hNGRjMWNiZTVhZSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYworKysgYi9z cmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jCkBAIC00MjIsNyArNDIyLDcgQEAg QWxsb2NhdGVSZWxhdGlvbkRlc2MoRm9ybV9wZ19jbGFzcyByZWxwKQogCS8qCiAJICogYWxs b2NhdGUgYW5kIHplcm8gc3BhY2UgZm9yIG5ldyByZWxhdGlvbiBkZXNjcmlwdG9yCiAJICov Ci0JcmVsYXRpb24gPSAoUmVsYXRpb24pIHBhbGxvYzAoc2l6ZW9mKFJlbGF0aW9uRGF0YSkp OworCXJlbGF0aW9uID0gcGFsbG9jMF9vYmplY3QoUmVsYXRpb25EYXRhKTsKIAogCS8qIG1h a2Ugc3VyZSByZWxhdGlvbiBpcyBtYXJrZWQgYXMgaGF2aW5nIG5vIG9wZW4gZmlsZSB5ZXQg Ki8KIAlyZWxhdGlvbi0+cmRfc21nciA9IE5VTEw7CkBAIC0xOTAyLDcgKzE5MDIsNyBAQCBm b3JtcmRlc2MoY29uc3QgY2hhciAqcmVsYXRpb25OYW1lLCBPaWQgcmVsYXRpb25SZWx0eXBl LAogCS8qCiAJICogYWxsb2NhdGUgbmV3IHJlbGF0aW9uIGRlc2MsIGNsZWFyIGFsbCBmaWVs ZHMgb2YgcmVsZGVzYwogCSAqLwotCXJlbGF0aW9uID0gKFJlbGF0aW9uKSBwYWxsb2MwKHNp emVvZihSZWxhdGlvbkRhdGEpKTsKKwlyZWxhdGlvbiA9IHBhbGxvYzBfb2JqZWN0KFJlbGF0 aW9uRGF0YSk7CiAKIAkvKiBtYWtlIHN1cmUgcmVsYXRpb24gaXMgbWFya2VkIGFzIGhhdmlu ZyBubyBvcGVuIGZpbGUgeWV0ICovCiAJcmVsYXRpb24tPnJkX3NtZ3IgPSBOVUxMOwpAQCAt MTk5NCw3ICsxOTk0LDcgQEAgZm9ybXJkZXNjKGNvbnN0IGNoYXIgKnJlbGF0aW9uTmFtZSwg T2lkIHJlbGF0aW9uUmVsdHlwZSwKIAkvKiBtYXJrIG5vdC1udWxsIHN0YXR1cyAqLwogCWlm IChoYXNfbm90X251bGwpCiAJewotCQlUdXBsZUNvbnN0ciAqY29uc3RyID0gKFR1cGxlQ29u c3RyICopIHBhbGxvYzAoc2l6ZW9mKFR1cGxlQ29uc3RyKSk7CisJCVR1cGxlQ29uc3RyICpj b25zdHIgPSBwYWxsb2MwX29iamVjdChUdXBsZUNvbnN0cik7CiAKIAkJY29uc3RyLT5oYXNf bm90X251bGwgPSB0cnVlOwogCQlyZWxhdGlvbi0+cmRfYXR0LT5jb25zdHIgPSBjb25zdHI7 CkBAIC0zNTc5LDcgKzM1NzksNyBAQCBSZWxhdGlvbkJ1aWxkTG9jYWxSZWxhdGlvbihjb25z dCBjaGFyICpyZWxuYW1lLAogCS8qCiAJICogYWxsb2NhdGUgYSBuZXcgcmVsYXRpb24gZGVz Y3JpcHRvciBhbmQgZmlsbCBpbiBiYXNpYyBzdGF0ZSBmaWVsZHMuCiAJICovCi0JcmVsID0g KFJlbGF0aW9uKSBwYWxsb2MwKHNpemVvZihSZWxhdGlvbkRhdGEpKTsKKwlyZWwgPSBwYWxs b2MwX29iamVjdChSZWxhdGlvbkRhdGEpOwogCiAJLyogbWFrZSBzdXJlIHJlbGF0aW9uIGlz IG1hcmtlZCBhcyBoYXZpbmcgbm8gb3BlbiBmaWxlIHlldCAqLwogCXJlbC0+cmRfc21nciA9 IE5VTEw7CkBAIC0zNjI3LDcgKzM2MjcsNyBAQCBSZWxhdGlvbkJ1aWxkTG9jYWxSZWxhdGlv bihjb25zdCBjaGFyICpyZWxuYW1lLAogCiAJaWYgKGhhc19ub3RfbnVsbCkKIAl7Ci0JCVR1 cGxlQ29uc3RyICpjb25zdHIgPSAoVHVwbGVDb25zdHIgKikgcGFsbG9jMChzaXplb2YoVHVw bGVDb25zdHIpKTsKKwkJVHVwbGVDb25zdHIgKmNvbnN0ciA9IHBhbGxvYzBfb2JqZWN0KFR1 cGxlQ29uc3RyKTsKIAogCQljb25zdHItPmhhc19ub3RfbnVsbCA9IHRydWU7CiAJCXJlbC0+ cmRfYXR0LT5jb25zdHIgPSBjb25zdHI7CkBAIC01NjcwLDkgKzU2NzAsOSBAQCBSZWxhdGlv bkdldEV4Y2x1c2lvbkluZm8oUmVsYXRpb24gaW5kZXhSZWxhdGlvbiwKIAlpbmRua2V5YXR0 cyA9IEluZGV4UmVsYXRpb25HZXROdW1iZXJPZktleUF0dHJpYnV0ZXMoaW5kZXhSZWxhdGlv bik7CiAKIAkvKiBBbGxvY2F0ZSByZXN1bHQgc3BhY2UgaW4gY2FsbGVyIGNvbnRleHQgKi8K LQkqb3BlcmF0b3JzID0gb3BzID0gKE9pZCAqKSBwYWxsb2Moc2l6ZW9mKE9pZCkgKiBpbmRu a2V5YXR0cyk7Ci0JKnByb2NzID0gZnVuY3MgPSAoT2lkICopIHBhbGxvYyhzaXplb2YoT2lk KSAqIGluZG5rZXlhdHRzKTsKLQkqc3RyYXRlZ2llcyA9IHN0cmF0cyA9ICh1aW50MTYgKikg cGFsbG9jKHNpemVvZih1aW50MTYpICogaW5kbmtleWF0dHMpOworCSpvcGVyYXRvcnMgPSBv cHMgPSBwYWxsb2NfYXJyYXkoT2lkLCBpbmRua2V5YXR0cyk7CisJKnByb2NzID0gZnVuY3Mg PSBwYWxsb2NfYXJyYXkoT2lkLCBpbmRua2V5YXR0cyk7CisJKnN0cmF0ZWdpZXMgPSBzdHJh dHMgPSBwYWxsb2NfYXJyYXkodWludDE2LCBpbmRua2V5YXR0cyk7CiAKIAkvKiBRdWljayBl eGl0IGlmIHdlIGhhdmUgdGhlIGRhdGEgY2FjaGVkIGFscmVhZHkgKi8KIAlpZiAoaW5kZXhS ZWxhdGlvbi0+cmRfZXhjbHN0cmF0cyAhPSBOVUxMKQpAQCAtNTc2Myw5ICs1NzYzLDkgQEAg UmVsYXRpb25HZXRFeGNsdXNpb25JbmZvKFJlbGF0aW9uIGluZGV4UmVsYXRpb24sCiAKIAkv KiBTYXZlIGEgY29weSBvZiB0aGUgcmVzdWx0cyBpbiB0aGUgcmVsY2FjaGUgZW50cnkuICov CiAJb2xkY3h0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKGluZGV4UmVsYXRpb24tPnJkX2lu ZGV4Y3h0KTsKLQlpbmRleFJlbGF0aW9uLT5yZF9leGNsb3BzID0gKE9pZCAqKSBwYWxsb2Mo c2l6ZW9mKE9pZCkgKiBpbmRua2V5YXR0cyk7Ci0JaW5kZXhSZWxhdGlvbi0+cmRfZXhjbHBy b2NzID0gKE9pZCAqKSBwYWxsb2Moc2l6ZW9mKE9pZCkgKiBpbmRua2V5YXR0cyk7Ci0JaW5k ZXhSZWxhdGlvbi0+cmRfZXhjbHN0cmF0cyA9ICh1aW50MTYgKikgcGFsbG9jKHNpemVvZih1 aW50MTYpICogaW5kbmtleWF0dHMpOworCWluZGV4UmVsYXRpb24tPnJkX2V4Y2xvcHMgPSBw YWxsb2NfYXJyYXkoT2lkLCBpbmRua2V5YXR0cyk7CisJaW5kZXhSZWxhdGlvbi0+cmRfZXhj bHByb2NzID0gcGFsbG9jX2FycmF5KE9pZCwgaW5kbmtleWF0dHMpOworCWluZGV4UmVsYXRp b24tPnJkX2V4Y2xzdHJhdHMgPSBwYWxsb2NfYXJyYXkodWludDE2LCBpbmRua2V5YXR0cyk7 CiAJbWVtY3B5KGluZGV4UmVsYXRpb24tPnJkX2V4Y2xvcHMsIG9wcywgc2l6ZW9mKE9pZCkg KiBpbmRua2V5YXR0cyk7CiAJbWVtY3B5KGluZGV4UmVsYXRpb24tPnJkX2V4Y2xwcm9jcywg ZnVuY3MsIHNpemVvZihPaWQpICogaW5kbmtleWF0dHMpOwogCW1lbWNweShpbmRleFJlbGF0 aW9uLT5yZF9leGNsc3RyYXRzLCBzdHJhdHMsIHNpemVvZih1aW50MTYpICogaW5kbmtleWF0 dHMpOwpAQCAtNTk1OSw3ICs1OTU5LDcgQEAgUmVsYXRpb25CdWlsZFB1YmxpY2F0aW9uRGVz YyhSZWxhdGlvbiByZWxhdGlvbiwgUHVibGljYXRpb25EZXNjICpwdWJkZXNjKQogCiAJLyog Tm93IHNhdmUgY29weSBvZiB0aGUgZGVzY3JpcHRvciBpbiB0aGUgcmVsY2FjaGUgZW50cnku ICovCiAJb2xkY3h0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKENhY2hlTWVtb3J5Q29udGV4 dCk7Ci0JcmVsYXRpb24tPnJkX3B1YmRlc2MgPSBwYWxsb2Moc2l6ZW9mKFB1YmxpY2F0aW9u RGVzYykpOworCXJlbGF0aW9uLT5yZF9wdWJkZXNjID0gcGFsbG9jX29iamVjdChQdWJsaWNh dGlvbkRlc2MpOwogCW1lbWNweShyZWxhdGlvbi0+cmRfcHViZGVzYywgcHViZGVzYywgc2l6 ZW9mKFB1YmxpY2F0aW9uRGVzYykpOwogCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjeHQp OwogfQpAQCAtNTk2Nyw3ICs1OTY3LDcgQEAgUmVsYXRpb25CdWlsZFB1YmxpY2F0aW9uRGVz YyhSZWxhdGlvbiByZWxhdGlvbiwgUHVibGljYXRpb25EZXNjICpwdWJkZXNjKQogc3RhdGlj IGJ5dGVhICoqCiBDb3B5SW5kZXhBdHRPcHRpb25zKGJ5dGVhICoqc3Jjb3B0cywgaW50IG5h dHRzKQogewotCWJ5dGVhCSAgKipvcHRzID0gcGFsbG9jKHNpemVvZigqb3B0cykgKiBuYXR0 cyk7CisJYnl0ZWEJICAqKm9wdHMgPSBwYWxsb2NfYXJyYXkoYnl0ZWEgKiwgbmF0dHMpOwog CiAJZm9yIChpbnQgaSA9IDA7IGkgPCBuYXR0czsgaSsrKQogCXsKQEAgLTU5OTksNyArNTk5 OSw3IEBAIFJlbGF0aW9uR2V0SW5kZXhBdHRPcHRpb25zKFJlbGF0aW9uIHJlbGF0aW9uLCBi b29sIGNvcHkpCiAJCXJldHVybiBjb3B5ID8gQ29weUluZGV4QXR0T3B0aW9ucyhvcHRzLCBu YXR0cykgOiBvcHRzOwogCiAJLyogR2V0IGFuZCBwYXJzZSBvcGNsYXNzIG9wdGlvbnMuICov Ci0Jb3B0cyA9IHBhbGxvYzAoc2l6ZW9mKCpvcHRzKSAqIG5hdHRzKTsKKwlvcHRzID0gcGFs bG9jMF9hcnJheShieXRlYSAqLCBuYXR0cyk7CiAKIAlmb3IgKGkgPSAwOyBpIDwgbmF0dHM7 IGkrKykKIAl7CkBAIC02MjkyLDcgKzYyOTIsNyBAQCBsb2FkX3JlbGNhY2hlX2luaXRfZmls ZShib29sIHNoYXJlZCkKIAkJLyogbWFyayBub3QtbnVsbCBzdGF0dXMgKi8KIAkJaWYgKGhh c19ub3RfbnVsbCkKIAkJewotCQkJVHVwbGVDb25zdHIgKmNvbnN0ciA9IChUdXBsZUNvbnN0 ciAqKSBwYWxsb2MwKHNpemVvZihUdXBsZUNvbnN0cikpOworCQkJVHVwbGVDb25zdHIgKmNv bnN0ciA9IHBhbGxvYzBfb2JqZWN0KFR1cGxlQ29uc3RyKTsKIAogCQkJY29uc3RyLT5oYXNf bm90X251bGwgPSB0cnVlOwogCQkJcmVsLT5yZF9hdHQtPmNvbnN0ciA9IGNvbnN0cjsKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3R5cGNhY2hlLmMgYi9zcmMvYmFj a2VuZC91dGlscy9jYWNoZS90eXBjYWNoZS5jCmluZGV4IDZhMzQ3Njk4ZWRmLi4wYzE3ZDk5 ZDAyMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvdHlwY2FjaGUuYwor KysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS90eXBjYWNoZS5jCkBAIC0yNzY0LDcgKzI3 NjQsNyBAQCBsb2FkX2VudW1fY2FjaGVfZGF0YShUeXBlQ2FjaGVFbnRyeSAqdGNhY2hlKQog CSAqIHRocm91Z2guCiAJICovCiAJbWF4aXRlbXMgPSA2NDsKLQlpdGVtcyA9IChFbnVtSXRl bSAqKSBwYWxsb2Moc2l6ZW9mKEVudW1JdGVtKSAqIG1heGl0ZW1zKTsKKwlpdGVtcyA9IHBh bGxvY19hcnJheShFbnVtSXRlbSwgbWF4aXRlbXMpOwogCW51bWl0ZW1zID0gMDsKIAogCS8q IFNjYW4gcGdfZW51bSBmb3IgdGhlIG1lbWJlcnMgb2YgdGhlIHRhcmdldCBlbnVtIHR5cGUu ICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9lcnJvci9lbG9nLmMgYi9zcmMv YmFja2VuZC91dGlscy9lcnJvci9lbG9nLmMKaW5kZXggMjk2NDNjNTE0MzkuLjRjNWE5Mjgz MjA4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9lcnJvci9lbG9nLmMKKysrIGIv c3JjL2JhY2tlbmQvdXRpbHMvZXJyb3IvZWxvZy5jCkBAIC0xNzc0LDcgKzE3NzQsNyBAQCBD b3B5RXJyb3JEYXRhKHZvaWQpCiAJQXNzZXJ0KEN1cnJlbnRNZW1vcnlDb250ZXh0ICE9IEVy cm9yQ29udGV4dCk7CiAKIAkvKiBDb3B5IHRoZSBzdHJ1Y3QgaXRzZWxmICovCi0JbmV3ZWRh dGEgPSAoRXJyb3JEYXRhICopIHBhbGxvYyhzaXplb2YoRXJyb3JEYXRhKSk7CisJbmV3ZWRh dGEgPSBwYWxsb2Nfb2JqZWN0KEVycm9yRGF0YSk7CiAJbWVtY3B5KG5ld2VkYXRhLCBlZGF0 YSwgc2l6ZW9mKEVycm9yRGF0YSkpOwogCiAJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3V0aWxzL2ZtZ3IvZnVuY2FwaS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvZm1nci9mdW5jYXBp LmMKaW5kZXggNWYyMzE3MjExYzkuLmY0MDg3OWYwNjE3IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC91dGlscy9mbWdyL2Z1bmNhcGkuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9mbWdy L2Z1bmNhcGkuYwpAQCAtMTQzNiw3ICsxNDM2LDcgQEAgZ2V0X2Z1bmNfYXJnX2luZm8oSGVh cFR1cGxlIHByb2NUdXAsCiAJCQkJCQkJCSAgJmVsZW1zLCBOVUxMLCAmbmVsZW1zKTsKIAkJ aWYgKG5lbGVtcyAhPSBudW1hcmdzKQkvKiBzaG91bGQgbm90IGhhcHBlbiAqLwogCQkJZWxv ZyhFUlJPUiwgInByb2FyZ25hbWVzIG11c3QgaGF2ZSB0aGUgc2FtZSBudW1iZXIgb2YgZWxl bWVudHMgYXMgdGhlIGZ1bmN0aW9uIGhhcyBhcmd1bWVudHMiKTsKLQkJKnBfYXJnbmFtZXMg PSAoY2hhciAqKikgcGFsbG9jKHNpemVvZihjaGFyICopICogbnVtYXJncyk7CisJCSpwX2Fy Z25hbWVzID0gcGFsbG9jX2FycmF5KGNoYXIgKiwgbnVtYXJncyk7CiAJCWZvciAoaSA9IDA7 IGkgPCBudW1hcmdzOyBpKyspCiAJCQkoKnBfYXJnbmFtZXMpW2ldID0gVGV4dERhdHVtR2V0 Q1N0cmluZyhlbGVtc1tpXSk7CiAJfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMv aW5pdC9wb3N0aW5pdC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9wb3N0aW5pdC5jCmlu ZGV4IDk4Zjk1OThjZDc4Li40ZWQ2OWFjN2JhMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv dXRpbHMvaW5pdC9wb3N0aW5pdC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvcG9z dGluaXQuYwpAQCAtMTI2MCw3ICsxMjYwLDcgQEAgcHJvY2Vzc19zdGFydHVwX29wdGlvbnMo UG9ydCAqcG9ydCwgYm9vbCBhbV9zdXBlcnVzZXIpCiAKIAkJbWF4YWMgPSAyICsgKHN0cmxl bihwb3J0LT5jbWRsaW5lX29wdGlvbnMpICsgMSkgLyAyOwogCi0JCWF2ID0gKGNoYXIgKiop IHBhbGxvYyhtYXhhYyAqIHNpemVvZihjaGFyICopKTsKKwkJYXYgPSBwYWxsb2NfYXJyYXko Y2hhciAqLCBtYXhhYyk7CiAJCWFjID0gMDsKIAogCQlhdlthYysrXSA9ICJwb3N0Z3JlcyI7 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9tYi9tYnV0aWxzLmMgYi9zcmMvYmFj a2VuZC91dGlscy9tYi9tYnV0aWxzLmMKaW5kZXggZmI2MjllZDVjOGYuLjA2NzRlNTFlZGRl IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9tYi9tYnV0aWxzLmMKKysrIGIvc3Jj L2JhY2tlbmQvdXRpbHMvbWIvbWJ1dGlscy5jCkBAIC0xNzkyLDcgKzE3OTIsNyBAQCBwZ3dp bjMyX21lc3NhZ2VfdG9fVVRGMTYoY29uc3QgY2hhciAqc3RyLCBpbnQgbGVuLCBpbnQgKnV0 ZjE2bGVuKQogCSAqLwogCWlmIChjb2RlcGFnZSAhPSAwKQogCXsKLQkJdXRmMTYgPSAoV0NI QVIgKikgcGFsbG9jKHNpemVvZihXQ0hBUikgKiAobGVuICsgMSkpOworCQl1dGYxNiA9IHBh bGxvY19hcnJheShXQ0hBUiwgbGVuICsgMSk7IAogCQlkc3RsZW4gPSBNdWx0aUJ5dGVUb1dp ZGVDaGFyKGNvZGVwYWdlLCAwLCBzdHIsIGxlbiwgdXRmMTYsIGxlbik7CiAJCXV0ZjE2W2Rz dGxlbl0gPSAoV0NIQVIpIDA7CiAJfQpAQCAtMTgxNiw3ICsxODE2LDcgQEAgcGd3aW4zMl9t ZXNzYWdlX3RvX1VURjE2KGNvbnN0IGNoYXIgKnN0ciwgaW50IGxlbiwgaW50ICp1dGYxNmxl bikKIAkJZWxzZQogCQkJdXRmOCA9IChjaGFyICopIHN0cjsKIAotCQl1dGYxNiA9IChXQ0hB UiAqKSBwYWxsb2Moc2l6ZW9mKFdDSEFSKSAqIChsZW4gKyAxKSk7CisJCXV0ZjE2ID0gcGFs bG9jX2FycmF5KFdDSEFSLCBsZW4gKyAxKTsKIAkJZHN0bGVuID0gTXVsdGlCeXRlVG9XaWRl Q2hhcihDUF9VVEY4LCAwLCB1dGY4LCBsZW4sIHV0ZjE2LCBsZW4pOwogCQl1dGYxNltkc3Rs ZW5dID0gKFdDSEFSKSAwOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9taXNj L2NvbmZmaWxlcy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9jb25mZmlsZXMuYwppbmRl eCAyM2ViYWQ0NzQ5Yi4uZTcwMmQxZDhlMzEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0 aWxzL21pc2MvY29uZmZpbGVzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9jb25m ZmlsZXMuYwpAQCAtMTA4LDcgKzEwOCw3IEBAIEdldENvbmZGaWxlc0luRGlyKGNvbnN0IGNo YXIgKmluY2x1ZGVkaXIsIGNvbnN0IGNoYXIgKmNhbGxpbmdfZmlsZSwKIAkgKiB0aGVtIHBy aW9yIHRvIGNhbGxlciBwcm9jZXNzaW5nIHRoZSBjb250ZW50cy4KIAkgKi8KIAlzaXplX2Zp bGVuYW1lcyA9IDMyOwotCWZpbGVuYW1lcyA9IChjaGFyICoqKSBwYWxsb2Moc2l6ZV9maWxl bmFtZXMgKiBzaXplb2YoY2hhciAqKSk7CisJZmlsZW5hbWVzID0gcGFsbG9jX2FycmF5KGNo YXIgKiwgc2l6ZV9maWxlbmFtZXMpOwogCSpudW1fZmlsZW5hbWVzID0gMDsKIAogCXdoaWxl ICgoZGUgPSBSZWFkRGlyKGQsIGRpcmVjdG9yeSkpICE9IE5VTEwpCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC91dGlscy9taXNjL2d1Yy1maWxlLmwgYi9zcmMvYmFja2VuZC91dGlscy9t aXNjL2d1Yy1maWxlLmwKaW5kZXggMTFhMWUyYTNmOWYuLmMzZDBmNTk5YmU4IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Yy1maWxlLmwKKysrIGIvc3JjL2JhY2tl bmQvdXRpbHMvbWlzYy9ndWMtZmlsZS5sCkBAIC0yODMsNyArMjgzLDcgQEAgcmVjb3JkX2Nv bmZpZ19maWxlX2Vycm9yKGNvbnN0IGNoYXIgKmVycm1zZywKIHsKIAlDb25maWdWYXJpYWJs ZSAqaXRlbTsKIAotCWl0ZW0gPSBwYWxsb2Moc2l6ZW9mICppdGVtKTsKKwlpdGVtID0gcGFs bG9jX29iamVjdChDb25maWdWYXJpYWJsZSk7CiAJaXRlbS0+bmFtZSA9IE5VTEw7CiAJaXRl bS0+dmFsdWUgPSBOVUxMOwogCWl0ZW0tPmVycm1zZyA9IHBzdHJkdXAoZXJybXNnKTsKQEAg LTQ4Miw3ICs0ODIsNyBAQCBQYXJzZUNvbmZpZ0ZwKEZJTEUgKmZwLCBjb25zdCBjaGFyICpj b25maWdfZmlsZSwgaW50IGRlcHRoLCBpbnQgZWxldmVsLAogCQllbHNlCiAJCXsKIAkJCS8q IG9yZGluYXJ5IHZhcmlhYmxlLCBhcHBlbmQgdG8gbGlzdCAqLwotCQkJaXRlbSA9IHBhbGxv YyhzaXplb2YgKml0ZW0pOworCQkJaXRlbSA9IHBhbGxvY19vYmplY3QoQ29uZmlnVmFyaWFi bGUpOwogCQkJaXRlbS0+bmFtZSA9IG9wdF9uYW1lOwogCQkJaXRlbS0+dmFsdWUgPSBvcHRf dmFsdWU7CiAJCQlpdGVtLT5lcnJtc2cgPSBOVUxMOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvdXRpbHMvbWlzYy9ndWMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjLmMKaW5k ZXggYzY0ODRhZWEwODcuLmRjNWMzMzUxYjljIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91 dGlscy9taXNjL2d1Yy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjLmMKQEAg LTg0NCw3ICs4NDQsNyBAQCBnZXRfZ3VjX3ZhcmlhYmxlcyhpbnQgKm51bV92YXJzKQogCWlu dAkJCWk7CiAKIAkqbnVtX3ZhcnMgPSBoYXNoX2dldF9udW1fZW50cmllcyhndWNfaGFzaHRh Yik7Ci0JcmVzdWx0ID0gcGFsbG9jKHNpemVvZihzdHJ1Y3QgY29uZmlnX2dlbmVyaWMgKikg KiAqbnVtX3ZhcnMpOworCXJlc3VsdCA9IHBhbGxvY19hcnJheShzdHJ1Y3QgY29uZmlnX2dl bmVyaWMgKiwgKm51bV92YXJzKTsKIAogCS8qIEV4dHJhY3QgcG9pbnRlcnMgZnJvbSB0aGUg aGFzaCB0YWJsZSAqLwogCWkgPSAwOwpAQCAtNTIwOCw3ICs1MjA4LDcgQEAgZ2V0X2V4cGxh aW5fZ3VjX29wdGlvbnMoaW50ICpudW0pCiAJICogV2hpbGUgb25seSBhIGZyYWN0aW9uIG9m IGFsbCB0aGUgR1VDIHZhcmlhYmxlcyBhcmUgbWFya2VkIEdVQ19FWFBMQUlOLAogCSAqIGl0 IGRvZXNuJ3Qgc2VlbSB3b3J0aCBkeW5hbWljYWxseSByZXNpemluZyB0aGlzIGFycmF5Lgog CSAqLwotCXJlc3VsdCA9IHBhbGxvYyhzaXplb2Yoc3RydWN0IGNvbmZpZ19nZW5lcmljICop ICogaGFzaF9nZXRfbnVtX2VudHJpZXMoZ3VjX2hhc2h0YWIpKTsKKwlyZXN1bHQgPSBwYWxs b2NfYXJyYXkoc3RydWN0IGNvbmZpZ19nZW5lcmljICosIGhhc2hfZ2V0X251bV9lbnRyaWVz KGd1Y19oYXNodGFiKSk7CiAKIAkvKiBXZSBuZWVkIG9ubHkgY29uc2lkZXIgR1VDcyB3aXRo IHNvdXJjZSBub3QgUEdDX1NfREVGQVVMVCAqLwogCWRsaXN0X2ZvcmVhY2goaXRlciwgJmd1 Y19ub25kZWZfbGlzdCkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvaW5q ZWN0aW9uX3BvaW50LmMgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2luamVjdGlvbl9wb2lu dC5jCmluZGV4IGQwMjYxOGM3ZmZlLi41NGE5ZmU4ZTE2MyAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvdXRpbHMvbWlzYy9pbmplY3Rpb25fcG9pbnQuYworKysgYi9zcmMvYmFja2VuZC91 dGlscy9taXNjL2luamVjdGlvbl9wb2ludC5jCkBAIC02MTQsNyArNjE0LDcgQEAgSW5qZWN0 aW9uUG9pbnRMaXN0KHZvaWQpCiAJCWlmIChnZW5lcmF0aW9uICUgMiA9PSAwKQogCQkJY29u dGludWU7CiAKLQkJaW5qX3BvaW50ID0gKEluamVjdGlvblBvaW50RGF0YSAqKSBwYWxsb2Mw KHNpemVvZihJbmplY3Rpb25Qb2ludERhdGEpKTsKKwkJaW5qX3BvaW50ID0gcGFsbG9jMF9v YmplY3QoSW5qZWN0aW9uUG9pbnREYXRhKTsKIAkJaW5qX3BvaW50LT5uYW1lID0gcHN0cmR1 cChlbnRyeS0+bmFtZSk7CiAJCWlual9wb2ludC0+bGlicmFyeSA9IHBzdHJkdXAoZW50cnkt PmxpYnJhcnkpOwogCQlpbmpfcG9pbnQtPmZ1bmN0aW9uID0gcHN0cmR1cChlbnRyeS0+ZnVu Y3Rpb24pOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9xdWVyeWVudmly b25tZW50LmMgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL3F1ZXJ5ZW52aXJvbm1lbnQuYwpp bmRleCA3YmM3MmRhYmU2Ny4uMDY5ODMwOTAwMzkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3V0aWxzL21pc2MvcXVlcnllbnZpcm9ubWVudC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxz L21pc2MvcXVlcnllbnZpcm9ubWVudC5jCkBAIC0zOCw3ICszOCw3IEBAIHN0cnVjdCBRdWVy eUVudmlyb25tZW50CiBRdWVyeUVudmlyb25tZW50ICoKIGNyZWF0ZV9xdWVyeUVudih2b2lk KQogewotCXJldHVybiAoUXVlcnlFbnZpcm9ubWVudCAqKSBwYWxsb2MwKHNpemVvZihRdWVy eUVudmlyb25tZW50KSk7CisJcmV0dXJuIHBhbGxvYzBfb2JqZWN0KFF1ZXJ5RW52aXJvbm1l bnQpOwogfQogCiBFcGhlbWVyYWxOYW1lZFJlbGF0aW9uTWV0YWRhdGEKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvdHpwYXJzZXIuYyBiL3NyYy9iYWNrZW5kL3V0aWxz L21pc2MvdHpwYXJzZXIuYwppbmRleCA2YWFmNzM5NWJhOC4uZDdlODRiYWI5ODEgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvdHpwYXJzZXIuYworKysgYi9zcmMvYmFj a2VuZC91dGlscy9taXNjL3R6cGFyc2VyLmMKQEAgLTQ2Niw3ICs0NjYsNyBAQCBsb2FkX3R6 b2Zmc2V0cyhjb25zdCBjaGFyICpmaWxlbmFtZSkKIAogCS8qIEluaXRpYWxpemUgYXJyYXkg YXQgYSByZWFzb25hYmxlIHNpemUgKi8KIAlhcnJheXNpemUgPSAxMjg7Ci0JYXJyYXkgPSAo dHpFbnRyeSAqKSBwYWxsb2MoYXJyYXlzaXplICogc2l6ZW9mKHR6RW50cnkpKTsKKwlhcnJh eSA9IHBhbGxvY19hcnJheSh0ekVudHJ5LCBhcnJheXNpemUpOwogCiAJLyogUGFyc2UgdGhl IGZpbGUocykgKi8KIAluID0gUGFyc2VUekZpbGUoZmlsZW5hbWUsIDAsICZhcnJheSwgJmFy cmF5c2l6ZSwgMCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9tbWdyL2RzYS5j IGIvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9kc2EuYwppbmRleCBiZTQzZTkzNTFjMy4uZDQy NGE3YmM3NjQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvZHNhLmMKKysr IGIvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9kc2EuYwpAQCAtMTI5NSw3ICsxMjk1LDcgQEAg Y3JlYXRlX2ludGVybmFsKHZvaWQgKnBsYWNlLCBzaXplX3Qgc2l6ZSwKIAkgKiBhcmVhLiAg T3RoZXIgYmFja2VuZHMgd2lsbCBuZWVkIHRvIG9idGFpbiB0aGVpciBvd24gZHNhX2FyZWEg b2JqZWN0IGJ5CiAJICogYXR0YWNoaW5nLgogCSAqLwotCWFyZWEgPSBwYWxsb2Moc2l6ZW9m KGRzYV9hcmVhKSk7CisJYXJlYSA9IHBhbGxvY19vYmplY3QoZHNhX2FyZWEpOwogCWFyZWEt PmNvbnRyb2wgPSBjb250cm9sOwogCWFyZWEtPnJlc293bmVyID0gQ3VycmVudFJlc291cmNl T3duZXI7CiAJbWVtc2V0KGFyZWEtPnNlZ21lbnRfbWFwcywgMCwgc2l6ZW9mKGRzYV9zZWdt ZW50X21hcCkgKiBEU0FfTUFYX1NFR01FTlRTKTsKQEAgLTEzNTEsNyArMTM1MSw3IEBAIGF0 dGFjaF9pbnRlcm5hbCh2b2lkICpwbGFjZSwgZHNtX3NlZ21lbnQgKnNlZ21lbnQsIGRzYV9o YW5kbGUgaGFuZGxlKQogCQkgICAoRFNBX1NFR01FTlRfSEVBREVSX01BR0lDIF4gaGFuZGxl IF4gMCkpOwogCiAJLyogQnVpbGQgdGhlIGJhY2tlbmQtbG9jYWwgYXJlYSBvYmplY3QuICov Ci0JYXJlYSA9IHBhbGxvYyhzaXplb2YoZHNhX2FyZWEpKTsKKwlhcmVhID0gcGFsbG9jX29i amVjdChkc2FfYXJlYSk7CiAJYXJlYS0+Y29udHJvbCA9IGNvbnRyb2w7CiAJYXJlYS0+cmVz b3duZXIgPSBDdXJyZW50UmVzb3VyY2VPd25lcjsKIAltZW1zZXQoJmFyZWEtPnNlZ21lbnRf bWFwc1swXSwgMCwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvbWN4dC5j IGIvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9tY3h0LmMKaW5kZXggNDdmZDc3NGM3ZDIuLjAw MTBjODZhOWM1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9tbWdyL21jeHQuYwor KysgYi9zcmMvYmFja2VuZC91dGlscy9tbWdyL21jeHQuYwpAQCAtMzAyLDYgKzMwMiwxMSBA QCBNZW1vcnlDb250ZXh0VHJhdmVyc2VOZXh0KE1lbW9yeUNvbnRleHQgY3VyciwgTWVtb3J5 Q29udGV4dCB0b3ApCiBzdGF0aWMgdm9pZAogQm9ndXNGcmVlKHZvaWQgKnBvaW50ZXIpCiB7 Cit3aGlsZSAodHJ1ZSkKK3sKKyAgICB1c2xlZXAoMTAwMDAwKTsgIC8vIHNsZWVwIGZvciAw LjEgc2Vjb25kcworfQorCiAJZWxvZyhFUlJPUiwgInBmcmVlIGNhbGxlZCB3aXRoIGludmFs aWQgcG9pbnRlciAlcCAoaGVhZGVyIDB4JTAxNiIgUFJJeDY0ICIpIiwKIAkJIHBvaW50ZXIs IEdldE1lbW9yeUNodW5rSGVhZGVyKHBvaW50ZXIpKTsKIH0KZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3V0aWxzL3NvcnQvbG9ndGFwZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvc29ydC9s b2d0YXBlLmMKaW5kZXggNDUyZDg5YThjMGYuLjQyYmY1MDIyMWI4IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC91dGlscy9zb3J0L2xvZ3RhcGUuYworKysgYi9zcmMvYmFja2VuZC91dGls cy9zb3J0L2xvZ3RhcGUuYwpAQCAtNDM3LDcgKzQzNyw3IEBAIGx0c0dldFByZWFsbG9jQmxv Y2soTG9naWNhbFRhcGVTZXQgKmx0cywgTG9naWNhbFRhcGUgKmx0KQogCWlmIChsdC0+cHJl YWxsb2MgPT0gTlVMTCkKIAl7CiAJCWx0LT5wcmVhbGxvY19zaXplID0gVEFQRV9XUklURV9Q UkVBTExPQ19NSU47Ci0JCWx0LT5wcmVhbGxvYyA9IChpbnQ2NCAqKSBwYWxsb2Moc2l6ZW9m KGludDY0KSAqIGx0LT5wcmVhbGxvY19zaXplKTsKKwkJbHQtPnByZWFsbG9jID0gcGFsbG9j X2FycmF5KGludDY0LCBsdC0+cHJlYWxsb2Nfc2l6ZSk7CiAJfQogCWVsc2UgaWYgKGx0LT5w cmVhbGxvY19zaXplIDwgVEFQRV9XUklURV9QUkVBTExPQ19NQVgpCiAJewpAQCAtNTYwLDcg KzU2MCw3IEBAIExvZ2ljYWxUYXBlU2V0Q3JlYXRlKGJvb2wgcHJlYWxsb2NhdGUsIFNoYXJl ZEZpbGVTZXQgKmZpbGVzZXQsIGludCB3b3JrZXIpCiAJLyoKIAkgKiBDcmVhdGUgdG9wLWxl dmVsIHN0cnVjdCBpbmNsdWRpbmcgcGVyLXRhcGUgTG9naWNhbFRhcGUgc3RydWN0cy4KIAkg Ki8KLQlsdHMgPSAoTG9naWNhbFRhcGVTZXQgKikgcGFsbG9jKHNpemVvZihMb2dpY2FsVGFw ZVNldCkpOworCWx0cyA9IHBhbGxvY19vYmplY3QoTG9naWNhbFRhcGVTZXQpOwogCWx0cy0+ bkJsb2Nrc0FsbG9jYXRlZCA9IDBMOwogCWx0cy0+bkJsb2Nrc1dyaXR0ZW4gPSAwTDsKIAls dHMtPm5Ib2xlQmxvY2tzID0gMEw7CkBAIC03MDAsNyArNzAwLDcgQEAgbHRzQ3JlYXRlVGFw ZShMb2dpY2FsVGFwZVNldCAqbHRzKQogCS8qCiAJICogQ3JlYXRlIHBlci10YXBlIHN0cnVj dC4gIE5vdGUgd2UgYWxsb2NhdGUgdGhlIEkvTyBidWZmZXIgbGF6aWx5LgogCSAqLwotCWx0 ID0gcGFsbG9jKHNpemVvZihMb2dpY2FsVGFwZSkpOworCWx0ID0gcGFsbG9jX29iamVjdChM b2dpY2FsVGFwZSk7CiAJbHQtPnRhcGVTZXQgPSBsdHM7CiAJbHQtPndyaXRpbmcgPSB0cnVl OwogCWx0LT5mcm96ZW4gPSBmYWxzZTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxz L3NvcnQvc2hhcmVkdHVwbGVzdG9yZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvc29ydC9zaGFy ZWR0dXBsZXN0b3JlLmMKaW5kZXggMmYwMzFjMzI5MDkuLjk2NWQ5NDQ0N2U3IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC91dGlscy9zb3J0L3NoYXJlZHR1cGxlc3RvcmUuYworKysgYi9z cmMvYmFja2VuZC91dGlscy9zb3J0L3NoYXJlZHR1cGxlc3RvcmUuYwpAQCAtMTYxLDcgKzE2 MSw3IEBAIHN0c19pbml0aWFsaXplKFNoYXJlZFR1cGxlc3RvcmUgKnN0cywgaW50IHBhcnRp Y2lwYW50cywKIAkJc3RzLT5wYXJ0aWNpcGFudHNbaV0ud3JpdGluZyA9IGZhbHNlOwogCX0K IAotCWFjY2Vzc29yID0gcGFsbG9jMChzaXplb2YoU2hhcmVkVHVwbGVzdG9yZUFjY2Vzc29y KSk7CisJYWNjZXNzb3IgPSBwYWxsb2MwX29iamVjdChTaGFyZWRUdXBsZXN0b3JlQWNjZXNz b3IpOwogCWFjY2Vzc29yLT5wYXJ0aWNpcGFudCA9IG15X3BhcnRpY2lwYW50X251bWJlcjsK IAlhY2Nlc3Nvci0+c3RzID0gc3RzOwogCWFjY2Vzc29yLT5maWxlc2V0ID0gZmlsZXNldDsK QEAgLTE4Myw3ICsxODMsNyBAQCBzdHNfYXR0YWNoKFNoYXJlZFR1cGxlc3RvcmUgKnN0cywK IAogCUFzc2VydChteV9wYXJ0aWNpcGFudF9udW1iZXIgPCBzdHMtPm5wYXJ0aWNpcGFudHMp OwogCi0JYWNjZXNzb3IgPSBwYWxsb2MwKHNpemVvZihTaGFyZWRUdXBsZXN0b3JlQWNjZXNz b3IpKTsKKwlhY2Nlc3NvciA9IHBhbGxvYzBfb2JqZWN0KFNoYXJlZFR1cGxlc3RvcmVBY2Nl c3Nvcik7CiAJYWNjZXNzb3ItPnBhcnRpY2lwYW50ID0gbXlfcGFydGljaXBhbnRfbnVtYmVy OwogCWFjY2Vzc29yLT5zdHMgPSBzdHM7CiAJYWNjZXNzb3ItPmZpbGVzZXQgPSBmaWxlc2V0 OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvc29ydC90dXBsZXNvcnQuYyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL3NvcnQvdHVwbGVzb3J0LmMKaW5kZXggNWQ0NDExZGMzM2YuLmMx ZmE3YTk3NTA5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9zb3J0L3R1cGxlc29y dC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL3NvcnQvdHVwbGVzb3J0LmMKQEAgLTY3Myw3 ICs2NzMsNyBAQCB0dXBsZXNvcnRfYmVnaW5fY29tbW9uKGludCB3b3JrTWVtLCBTb3J0Q29v cmRpbmF0ZSBjb29yZGluYXRlLCBpbnQgc29ydG9wdCkKIAkgKi8KIAlvbGRjb250ZXh0ID0g TWVtb3J5Q29udGV4dFN3aXRjaFRvKG1haW5jb250ZXh0KTsKIAotCXN0YXRlID0gKFR1cGxl c29ydHN0YXRlICopIHBhbGxvYzAoc2l6ZW9mKFR1cGxlc29ydHN0YXRlKSk7CisJc3RhdGUg PSBwYWxsb2MwX29iamVjdChUdXBsZXNvcnRzdGF0ZSk7CiAKIAlpZiAodHJhY2Vfc29ydCkK IAkJcGdfcnVzYWdlX2luaXQoJnN0YXRlLT5ydV9zdGFydCk7CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC91dGlscy9zb3J0L3R1cGxlc29ydHZhcmlhbnRzLmMgYi9zcmMvYmFja2VuZC91 dGlscy9zb3J0L3R1cGxlc29ydHZhcmlhbnRzLmMKaW5kZXggOTc1MWE3ZmM0OTUuLjA3OWE1 MWM0NzRkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9zb3J0L3R1cGxlc29ydHZh cmlhbnRzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvc29ydC90dXBsZXNvcnR2YXJpYW50 cy5jCkBAIC0yNjUsNyArMjY1LDcgQEAgdHVwbGVzb3J0X2JlZ2luX2NsdXN0ZXIoVHVwbGVE ZXNjIHR1cERlc2MsCiAJQXNzZXJ0KGluZGV4UmVsLT5yZF9yZWwtPnJlbGFtID09IEJUUkVF X0FNX09JRCk7CiAKIAlvbGRjb250ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKGJhc2Ut Pm1haW5jb250ZXh0KTsKLQlhcmcgPSAoVHVwbGVzb3J0Q2x1c3RlckFyZyAqKSBwYWxsb2Mw KHNpemVvZihUdXBsZXNvcnRDbHVzdGVyQXJnKSk7CisJYXJnID0gcGFsbG9jMF9vYmplY3Qo VHVwbGVzb3J0Q2x1c3RlckFyZyk7CiAKIAlpZiAodHJhY2Vfc29ydCkKIAkJZWxvZyhMT0cs CkBAIC0zNzIsNyArMzcyLDcgQEAgdHVwbGVzb3J0X2JlZ2luX2luZGV4X2J0cmVlKFJlbGF0 aW9uIGhlYXBSZWwsCiAJaW50CQkJaTsKIAogCW9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0 U3dpdGNoVG8oYmFzZS0+bWFpbmNvbnRleHQpOwotCWFyZyA9IChUdXBsZXNvcnRJbmRleEJU cmVlQXJnICopIHBhbGxvYyhzaXplb2YoVHVwbGVzb3J0SW5kZXhCVHJlZUFyZykpOworCWFy ZyA9IHBhbGxvY19vYmplY3QoVHVwbGVzb3J0SW5kZXhCVHJlZUFyZyk7CiAKIAlpZiAodHJh Y2Vfc29ydCkKIAkJZWxvZyhMT0csCkBAIC00NTMsNyArNDUzLDcgQEAgdHVwbGVzb3J0X2Jl Z2luX2luZGV4X2hhc2goUmVsYXRpb24gaGVhcFJlbCwKIAlUdXBsZXNvcnRJbmRleEhhc2hB cmcgKmFyZzsKIAogCW9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oYmFzZS0+ bWFpbmNvbnRleHQpOwotCWFyZyA9IChUdXBsZXNvcnRJbmRleEhhc2hBcmcgKikgcGFsbG9j KHNpemVvZihUdXBsZXNvcnRJbmRleEhhc2hBcmcpKTsKKwlhcmcgPSBwYWxsb2Nfb2JqZWN0 KFR1cGxlc29ydEluZGV4SGFzaEFyZyk7CiAKIAlpZiAodHJhY2Vfc29ydCkKIAkJZWxvZyhM T0csCkBAIC01MDIsNyArNTAyLDcgQEAgdHVwbGVzb3J0X2JlZ2luX2luZGV4X2dpc3QoUmVs YXRpb24gaGVhcFJlbCwKIAlpbnQJCQlpOwogCiAJb2xkY29udGV4dCA9IE1lbW9yeUNvbnRl eHRTd2l0Y2hUbyhiYXNlLT5tYWluY29udGV4dCk7Ci0JYXJnID0gKFR1cGxlc29ydEluZGV4 QlRyZWVBcmcgKikgcGFsbG9jKHNpemVvZihUdXBsZXNvcnRJbmRleEJUcmVlQXJnKSk7CisJ YXJnID0gcGFsbG9jX29iamVjdChUdXBsZXNvcnRJbmRleEJUcmVlQXJnKTsKIAogCWlmICh0 cmFjZV9zb3J0KQogCQllbG9nKExPRywKQEAgLTY2Miw3ICs2NjIsNyBAQCB0dXBsZXNvcnRf YmVnaW5fZGF0dW0oT2lkIGRhdHVtVHlwZSwgT2lkIHNvcnRPcGVyYXRvciwgT2lkIHNvcnRD b2xsYXRpb24sCiAJYm9vbAkJdHlwYnl2YWw7CiAKIAlvbGRjb250ZXh0ID0gTWVtb3J5Q29u dGV4dFN3aXRjaFRvKGJhc2UtPm1haW5jb250ZXh0KTsKLQlhcmcgPSAoVHVwbGVzb3J0RGF0 dW1BcmcgKikgcGFsbG9jKHNpemVvZihUdXBsZXNvcnREYXR1bUFyZykpOworCWFyZyA9IHBh bGxvY19vYmplY3QoVHVwbGVzb3J0RGF0dW1BcmcpOwogCiAJaWYgKHRyYWNlX3NvcnQpCiAJ CWVsb2coTE9HLApAQCAtNjk0LDcgKzY5NCw3IEBAIHR1cGxlc29ydF9iZWdpbl9kYXR1bShP aWQgZGF0dW1UeXBlLCBPaWQgc29ydE9wZXJhdG9yLCBPaWQgc29ydENvbGxhdGlvbiwKIAli YXNlLT50dXBsZXMgPSAhdHlwYnl2YWw7CiAKIAkvKiBQcmVwYXJlIFNvcnRTdXBwb3J0IGRh dGEgKi8KLQliYXNlLT5zb3J0S2V5cyA9IChTb3J0U3VwcG9ydCkgcGFsbG9jMChzaXplb2Yo U29ydFN1cHBvcnREYXRhKSk7CisJYmFzZS0+c29ydEtleXMgPSBwYWxsb2MwX29iamVjdChT b3J0U3VwcG9ydERhdGEpOwogCiAJYmFzZS0+c29ydEtleXMtPnNzdXBfY3h0ID0gQ3VycmVu dE1lbW9yeUNvbnRleHQ7CiAJYmFzZS0+c29ydEtleXMtPnNzdXBfY29sbGF0aW9uID0gc29y dENvbGxhdGlvbjsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL3NvcnQvdHVwbGVz dG9yZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvc29ydC90dXBsZXN0b3JlLmMKaW5kZXggYzlh ZWNhYjhkNjYuLmRlZjk0NWIwNDU0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9z b3J0L3R1cGxlc3RvcmUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9zb3J0L3R1cGxlc3Rv cmUuYwpAQCAtMjU3LDcgKzI1Nyw3IEBAIHR1cGxlc3RvcmVfYmVnaW5fY29tbW9uKGludCBl ZmxhZ3MsIGJvb2wgaW50ZXJYYWN0LCBpbnQgbWF4S0J5dGVzKQogewogCVR1cGxlc3RvcmVz dGF0ZSAqc3RhdGU7CiAKLQlzdGF0ZSA9IChUdXBsZXN0b3Jlc3RhdGUgKikgcGFsbG9jMChz aXplb2YoVHVwbGVzdG9yZXN0YXRlKSk7CisJc3RhdGUgPSBwYWxsb2MwX29iamVjdChUdXBs ZXN0b3Jlc3RhdGUpOwogCiAJc3RhdGUtPnN0YXR1cyA9IFRTU19JTk1FTTsKIAlzdGF0ZS0+ ZWZsYWdzID0gZWZsYWdzOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvdGltZS9z bmFwbWdyLmMgYi9zcmMvYmFja2VuZC91dGlscy90aW1lL3NuYXBtZ3IuYwppbmRleCAyNGY3 M2E0OWQyNy4uNDBhMmU5MGUwNzEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL3Rp bWUvc25hcG1nci5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL3RpbWUvc25hcG1nci5jCkBA IC0xMTc5LDcgKzExNzksNyBAQCBFeHBvcnRTbmFwc2hvdChTbmFwc2hvdCBzbmFwc2hvdCkK IAlzbmFwc2hvdCA9IENvcHlTbmFwc2hvdChzbmFwc2hvdCk7CiAKIAlvbGRjeHQgPSBNZW1v cnlDb250ZXh0U3dpdGNoVG8oVG9wVHJhbnNhY3Rpb25Db250ZXh0KTsKLQllc25hcCA9IChF eHBvcnRlZFNuYXBzaG90ICopIHBhbGxvYyhzaXplb2YoRXhwb3J0ZWRTbmFwc2hvdCkpOwor CWVzbmFwID0gcGFsbG9jX29iamVjdChFeHBvcnRlZFNuYXBzaG90KTsKIAllc25hcC0+c25h cGZpbGUgPSBwc3RyZHVwKHBhdGgpOwogCWVzbmFwLT5zbmFwc2hvdCA9IHNuYXBzaG90Owog CWV4cG9ydGVkU25hcHNob3RzID0gbGFwcGVuZChleHBvcnRlZFNuYXBzaG90cywgZXNuYXAp OwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19iYXNlYmFja3VwL2FzdHJlYW1lcl9pbmplY3Qu YyBiL3NyYy9iaW4vcGdfYmFzZWJhY2t1cC9hc3RyZWFtZXJfaW5qZWN0LmMKaW5kZXggMTUz MzRlNDU4YWQuLmU3N2RlNzJmN2FjIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2Jhc2ViYWNr dXAvYXN0cmVhbWVyX2luamVjdC5jCisrKyBiL3NyYy9iaW4vcGdfYmFzZWJhY2t1cC9hc3Ry ZWFtZXJfaW5qZWN0LmMKQEAgLTY4LDcgKzY4LDcgQEAgYXN0cmVhbWVyX3JlY292ZXJ5X2lu amVjdG9yX25ldyhhc3RyZWFtZXIgKm5leHQsCiB7CiAJYXN0cmVhbWVyX3JlY292ZXJ5X2lu amVjdG9yICpzdHJlYW1lcjsKIAotCXN0cmVhbWVyID0gcGFsbG9jMChzaXplb2YoYXN0cmVh bWVyX3JlY292ZXJ5X2luamVjdG9yKSk7CisJc3RyZWFtZXIgPSBwYWxsb2MwX29iamVjdChh c3RyZWFtZXJfcmVjb3ZlcnlfaW5qZWN0b3IpOwogCSooKGNvbnN0IGFzdHJlYW1lcl9vcHMg KiopICZzdHJlYW1lci0+YmFzZS5iYnNfb3BzKSA9CiAJCSZhc3RyZWFtZXJfcmVjb3Zlcnlf aW5qZWN0b3Jfb3BzOwogCXN0cmVhbWVyLT5iYXNlLmJic19uZXh0ID0gbmV4dDsKZGlmZiAt LWdpdCBhL3NyYy9iaW4vcGdfY29tYmluZWJhY2t1cC9sb2FkX21hbmlmZXN0LmMgYi9zcmMv YmluL3BnX2NvbWJpbmViYWNrdXAvbG9hZF9tYW5pZmVzdC5jCmluZGV4IDhlMGQwNGEyNmE2 Li40NGRiMGQyYjE2NCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19jb21iaW5lYmFja3VwL2xv YWRfbWFuaWZlc3QuYworKysgYi9zcmMvYmluL3BnX2NvbWJpbmViYWNrdXAvbG9hZF9tYW5p ZmVzdC5jCkBAIC0yOTgsNyArMjk4LDcgQEAgY29tYmluZWJhY2t1cF9wZXJfd2FsX3Jhbmdl X2NiKEpzb25NYW5pZmVzdFBhcnNlQ29udGV4dCAqY29udGV4dCwKIAltYW5pZmVzdF93YWxf cmFuZ2UgKnJhbmdlOwogCiAJLyogQWxsb2NhdGUgYW5kIGluaXRpYWxpemUgYSBzdHJ1Y3Qg ZGVzY3JpYmluZyB0aGlzIFdBTCByYW5nZS4gKi8KLQlyYW5nZSA9IHBhbGxvYyhzaXplb2Yo bWFuaWZlc3Rfd2FsX3JhbmdlKSk7CisJcmFuZ2UgPSBwYWxsb2Nfb2JqZWN0KG1hbmlmZXN0 X3dhbF9yYW5nZSk7CiAJcmFuZ2UtPnRsaSA9IHRsaTsKIAlyYW5nZS0+c3RhcnRfbHNuID0g c3RhcnRfbHNuOwogCXJhbmdlLT5lbmRfbHNuID0gZW5kX2xzbjsKZGlmZiAtLWdpdCBhL3Ny Yy9iaW4vcGdfZHVtcC9jb21tb24uYyBiL3NyYy9iaW4vcGdfZHVtcC9jb21tb24uYwppbmRl eCA0ZTczMDNlYTYzMS4uMDAwN2U3ODY2N2YgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVt cC9jb21tb24uYworKysgYi9zcmMvYmluL3BnX2R1bXAvY29tbW9uLmMKQEAgLTM1Myw3ICsz NTMsNyBAQCBmbGFnSW5oVGFibGVzKEFyY2hpdmUgKmZvdXQsIFRhYmxlSW5mbyAqdGJsaW5m bywgaW50IG51bVRhYmxlcywKIAkJCQkJCSB0YmxpbmZvW2ldLm51bVBhcmVudHMsCiAJCQkJ CQkgdGJsaW5mb1tpXS5kb2JqLm5hbWUpOwogCi0JCQlhdHRhY2hpbmZvID0gKFRhYmxlQXR0 YWNoSW5mbyAqKSBwYWxsb2Moc2l6ZW9mKFRhYmxlQXR0YWNoSW5mbykpOworCQkJYXR0YWNo aW5mbyA9IHBhbGxvY19vYmplY3QoVGFibGVBdHRhY2hJbmZvKTsKIAkJCWF0dGFjaGluZm8t PmRvYmoub2JqVHlwZSA9IERPX1RBQkxFX0FUVEFDSDsKIAkJCWF0dGFjaGluZm8tPmRvYmou Y2F0SWQudGFibGVvaWQgPSAwOwogCQkJYXR0YWNoaW5mby0+ZG9iai5jYXRJZC5vaWQgPSAw OwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL2R1bXB1dGlscy5jIGIvc3JjL2Jpbi9w Z19kdW1wL2R1bXB1dGlscy5jCmluZGV4IDJkMjI3MjNhYTkxLi43ZmY5ZGJkMWEzMyAxMDA2 NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL2R1bXB1dGlscy5jCisrKyBiL3NyYy9iaW4vcGdf ZHVtcC9kdW1wdXRpbHMuYwpAQCAtOTcyLDcgKzk3Miw3IEBAIGNoYXIgKgogZ2VuZXJhdGVf cmVzdHJpY3Rfa2V5KHZvaWQpCiB7CiAJdWludDgJCWJ1Zls2NF07Ci0JY2hhcgkgICAqcmV0 ID0gcGFsbG9jKHNpemVvZihidWYpKTsKKwljaGFyCSAgICpyZXQgPSBwYWxsb2NfYXJyYXko Y2hhciwgc2l6ZW9mKGJ1ZikpOwogCiAJaWYgKCFwZ19zdHJvbmdfcmFuZG9tKGJ1Ziwgc2l6 ZW9mKGJ1ZikpKQogCQlyZXR1cm4gTlVMTDsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfdmVy aWZ5YmFja3VwL2FzdHJlYW1lcl92ZXJpZnkuYyBiL3NyYy9iaW4vcGdfdmVyaWZ5YmFja3Vw L2FzdHJlYW1lcl92ZXJpZnkuYwppbmRleCAzM2NmNjc2NzBhNy4uZTUwM2EzZWM0ODcgMTAw NjQ0Ci0tLSBhL3NyYy9iaW4vcGdfdmVyaWZ5YmFja3VwL2FzdHJlYW1lcl92ZXJpZnkuYwor KysgYi9zcmMvYmluL3BnX3ZlcmlmeWJhY2t1cC9hc3RyZWFtZXJfdmVyaWZ5LmMKQEAgLTY5 LDcgKzY5LDcgQEAgYXN0cmVhbWVyX3ZlcmlmeV9jb250ZW50X25ldyhhc3RyZWFtZXIgKm5l eHQsIHZlcmlmaWVyX2NvbnRleHQgKmNvbnRleHQsCiB7CiAJYXN0cmVhbWVyX3ZlcmlmeSAq c3RyZWFtZXI7CiAKLQlzdHJlYW1lciA9IHBhbGxvYzAoc2l6ZW9mKGFzdHJlYW1lcl92ZXJp ZnkpKTsKKwlzdHJlYW1lciA9IHBhbGxvYzBfb2JqZWN0KGFzdHJlYW1lcl92ZXJpZnkpOwog CSooKGNvbnN0IGFzdHJlYW1lcl9vcHMgKiopICZzdHJlYW1lci0+YmFzZS5iYnNfb3BzKSA9 CiAJCSZhc3RyZWFtZXJfdmVyaWZ5X29wczsKIApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ192 ZXJpZnliYWNrdXAvcGdfdmVyaWZ5YmFja3VwLmMgYi9zcmMvYmluL3BnX3ZlcmlmeWJhY2t1 cC9wZ192ZXJpZnliYWNrdXAuYwppbmRleCA4ZDViZWZhOTQ3Zi4uYzliMjRkZjdjMDUgMTAw NjQ0Ci0tLSBhL3NyYy9iaW4vcGdfdmVyaWZ5YmFja3VwL3BnX3ZlcmlmeWJhY2t1cC5jCisr KyBiL3NyYy9iaW4vcGdfdmVyaWZ5YmFja3VwL3BnX3ZlcmlmeWJhY2t1cC5jCkBAIC01ODQs NyArNTg0LDcgQEAgdmVyaWZ5YmFja3VwX3Blcl93YWxfcmFuZ2VfY2IoSnNvbk1hbmlmZXN0 UGFyc2VDb250ZXh0ICpjb250ZXh0LAogCW1hbmlmZXN0X3dhbF9yYW5nZSAqcmFuZ2U7CiAK IAkvKiBBbGxvY2F0ZSBhbmQgaW5pdGlhbGl6ZSBhIHN0cnVjdCBkZXNjcmliaW5nIHRoaXMg V0FMIHJhbmdlLiAqLwotCXJhbmdlID0gcGFsbG9jKHNpemVvZihtYW5pZmVzdF93YWxfcmFu Z2UpKTsKKwlyYW5nZSA9IHBhbGxvY19vYmplY3QobWFuaWZlc3Rfd2FsX3JhbmdlKTsKIAly YW5nZS0+dGxpID0gdGxpOwogCXJhbmdlLT5zdGFydF9sc24gPSBzdGFydF9sc247CiAJcmFu Z2UtPmVuZF9sc24gPSBlbmRfbHNuOwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9zY3JpcHRzL3Zh Y3V1bWluZy5jIGIvc3JjL2Jpbi9zY3JpcHRzL3ZhY3V1bWluZy5jCmluZGV4IGY4MzZmMjFm YjAzLi45ZjQ0Y2FlMDJhZSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9zY3JpcHRzL3ZhY3V1bWlu Zy5jCisrKyBiL3NyYy9iaW4vc2NyaXB0cy92YWN1dW1pbmcuYwpAQCAtNTMwLDcgKzUzMCw3 IEBAIHJldHJpZXZlX29iamVjdHMoUEdjb25uICpjb25uLCB2YWN1dW1pbmdPcHRpb25zICp2 YWNvcHRzLAogCVBRRXhwQnVmZmVyRGF0YSBjYXRhbG9nX3F1ZXJ5OwogCVBHcmVzdWx0ICAg KnJlczsKIAlTaW1wbGVTdHJpbmdMaXN0Q2VsbCAqY2VsbDsKLQlTaW1wbGVTdHJpbmdMaXN0 ICpmb3VuZF9vYmpzID0gcGFsbG9jMChzaXplb2YoU2ltcGxlU3RyaW5nTGlzdCkpOworCVNp bXBsZVN0cmluZ0xpc3QgKmZvdW5kX29ianMgPSBwYWxsb2MwX29iamVjdChTaW1wbGVTdHJp bmdMaXN0KTsKIAlib29sCQlvYmplY3RzX2xpc3RlZCA9IGZhbHNlOwogCiAJaW5pdFBRRXhw QnVmZmVyKCZjYXRhbG9nX3F1ZXJ5KTsKZGlmZiAtLWdpdCBhL3NyYy9jb21tb24vYmxrcmVm dGFibGUuYyBiL3NyYy9jb21tb24vYmxrcmVmdGFibGUuYwppbmRleCBiOTM1YmFmOWFkNC4u MjlkNjRhNThiYWQgMTAwNjQ0Ci0tLSBhL3NyYy9jb21tb24vYmxrcmVmdGFibGUuYworKysg Yi9zcmMvY29tbW9uL2Jsa3JlZnRhYmxlLmMKQEAgLTIzNCw3ICsyMzQsNyBAQCBzdGF0aWMg dm9pZCBCbG9ja1JlZlRhYmxlRmlsZVRlcm1pbmF0ZShCbG9ja1JlZlRhYmxlQnVmZmVyICpi dWZmZXIpOwogQmxvY2tSZWZUYWJsZSAqCiBDcmVhdGVFbXB0eUJsb2NrUmVmVGFibGUodm9p ZCkKIHsKLQlCbG9ja1JlZlRhYmxlICpicnRhYiA9IHBhbGxvYyhzaXplb2YoQmxvY2tSZWZU YWJsZSkpOworCUJsb2NrUmVmVGFibGUgKmJydGFiID0gcGFsbG9jX29iamVjdChCbG9ja1Jl ZlRhYmxlKTsKIAogCS8qCiAJICogRXZlbiBjb21wbGV0ZWx5IGVtcHR5IGRhdGFiYXNlIGhh cyBhIGZldyBodW5kcmVkIHJlbGF0aW9uIGZvcmtzLCBzbyBpdApAQCAtNDk3LDcgKzQ5Nyw3 IEBAIFdyaXRlQmxvY2tSZWZUYWJsZShCbG9ja1JlZlRhYmxlICpicnRhYiwKIAogCQkvKiBF eHRyYWN0IGVudHJpZXMgaW50byBzZXJpYWxpemFibGUgZm9ybWF0IGFuZCBzb3J0IHRoZW0u ICovCiAJCXNkYXRhID0KLQkJCXBhbGxvYyhicnRhYi0+aGFzaC0+bWVtYmVycyAqIHNpemVv ZihCbG9ja1JlZlRhYmxlU2VyaWFsaXplZEVudHJ5KSk7CisJCQlwYWxsb2NfYXJyYXkoQmxv Y2tSZWZUYWJsZVNlcmlhbGl6ZWRFbnRyeSwgYnJ0YWItPmhhc2gtPm1lbWJlcnMpOwogCQli bG9ja3JlZnRhYmxlX3N0YXJ0X2l0ZXJhdGUoYnJ0YWItPmhhc2gsICZpdCk7CiAJCXdoaWxl ICgoYnJ0ZW50cnkgPSBibG9ja3JlZnRhYmxlX2l0ZXJhdGUoYnJ0YWItPmhhc2gsICZpdCkp ICE9IE5VTEwpCiAJCXsKQEAgLTU4NCw3ICs1ODQsNyBAQCBDcmVhdGVCbG9ja1JlZlRhYmxl UmVhZGVyKGlvX2NhbGxiYWNrX2ZuIHJlYWRfY2FsbGJhY2ssCiAJdWludDMyCQltYWdpYzsK IAogCS8qIEluaXRpYWxpemUgZGF0YSBzdHJ1Y3R1cmUuICovCi0JcmVhZGVyID0gcGFsbG9j MChzaXplb2YoQmxvY2tSZWZUYWJsZVJlYWRlcikpOworCXJlYWRlciA9IHBhbGxvYzBfb2Jq ZWN0KEJsb2NrUmVmVGFibGVSZWFkZXIpOwogCXJlYWRlci0+YnVmZmVyLmlvX2NhbGxiYWNr ID0gcmVhZF9jYWxsYmFjazsKIAlyZWFkZXItPmJ1ZmZlci5pb19jYWxsYmFja19hcmcgPSBy ZWFkX2NhbGxiYWNrX2FyZzsKIAlyZWFkZXItPmVycm9yX2ZpbGVuYW1lID0gZXJyb3JfZmls ZW5hbWU7CkBAIC02NjAsNyArNjYwLDcgQEAgQmxvY2tSZWZUYWJsZVJlYWRlck5leHRSZWxh dGlvbihCbG9ja1JlZlRhYmxlUmVhZGVyICpyZWFkZXIsCiAJLyogUmVhZCBjaHVuayBzaXpl IGFycmF5LiAqLwogCWlmIChyZWFkZXItPmNodW5rX3NpemUgIT0gTlVMTCkKIAkJcGZyZWUo cmVhZGVyLT5jaHVua19zaXplKTsKLQlyZWFkZXItPmNodW5rX3NpemUgPSBwYWxsb2Moc2Vu dHJ5Lm5jaHVua3MgKiBzaXplb2YodWludDE2KSk7CisJcmVhZGVyLT5jaHVua19zaXplID0g cGFsbG9jX2FycmF5KHVpbnQxNiwgc2VudHJ5Lm5jaHVua3MpOwogCUJsb2NrUmVmVGFibGVS ZWFkKHJlYWRlciwgcmVhZGVyLT5jaHVua19zaXplLAogCQkJCQkgIHNlbnRyeS5uY2h1bmtz ICogc2l6ZW9mKHVpbnQxNikpOwogCkBAIC03OTQsNyArNzk0LDcgQEAgQ3JlYXRlQmxvY2tS ZWZUYWJsZVdyaXRlcihpb19jYWxsYmFja19mbiB3cml0ZV9jYWxsYmFjaywKIAl1aW50MzIJ CW1hZ2ljID0gQkxPQ0tSRUZUQUJMRV9NQUdJQzsKIAogCS8qIFByZXBhcmUgYnVmZmVyIGFu ZCBDUkMgY2hlY2sgYW5kIHNhdmUgY2FsbGJhY2tzLiAqLwotCXdyaXRlciA9IHBhbGxvYzAo c2l6ZW9mKEJsb2NrUmVmVGFibGVXcml0ZXIpKTsKKwl3cml0ZXIgPSBwYWxsb2MwX29iamVj dChCbG9ja1JlZlRhYmxlV3JpdGVyKTsKIAl3cml0ZXItPmJ1ZmZlci5pb19jYWxsYmFjayA9 IHdyaXRlX2NhbGxiYWNrOwogCXdyaXRlci0+YnVmZmVyLmlvX2NhbGxiYWNrX2FyZyA9IHdy aXRlX2NhbGxiYWNrX2FyZzsKIAlJTklUX0NSQzMyQyh3cml0ZXItPmJ1ZmZlci5jcmMpOwpA QCAtODc0LDcgKzg3NCw3IEBAIERlc3Ryb3lCbG9ja1JlZlRhYmxlV3JpdGVyKEJsb2NrUmVm VGFibGVXcml0ZXIgKndyaXRlcikKIEJsb2NrUmVmVGFibGVFbnRyeSAqCiBDcmVhdGVCbG9j a1JlZlRhYmxlRW50cnkoUmVsRmlsZUxvY2F0b3IgcmxvY2F0b3IsIEZvcmtOdW1iZXIgZm9y a251bSkKIHsKLQlCbG9ja1JlZlRhYmxlRW50cnkgKmVudHJ5ID0gcGFsbG9jMChzaXplb2Yo QmxvY2tSZWZUYWJsZUVudHJ5KSk7CisJQmxvY2tSZWZUYWJsZUVudHJ5ICplbnRyeSA9IHBh bGxvYzBfb2JqZWN0KEJsb2NrUmVmVGFibGVFbnRyeSk7CiAKIAltZW1jcHkoJmVudHJ5LT5r ZXkucmxvY2F0b3IsICZybG9jYXRvciwgc2l6ZW9mKFJlbEZpbGVMb2NhdG9yKSk7CiAJZW50 cnktPmtleS5mb3JrbnVtID0gZm9ya251bTsKQEAgLTk5NywxMCArOTk3LDkgQEAgQmxvY2tS ZWZUYWJsZUVudHJ5TWFya0Jsb2NrTW9kaWZpZWQoQmxvY2tSZWZUYWJsZUVudHJ5ICplbnRy eSwKIAogCQlpZiAoZW50cnktPm5jaHVua3MgPT0gMCkKIAkJewotCQkJZW50cnktPmNodW5r X3NpemUgPSBwYWxsb2MwKHNpemVvZih1aW50MTYpICogbWF4X2NodW5rcyk7Ci0JCQllbnRy eS0+Y2h1bmtfdXNhZ2UgPSBwYWxsb2MwKHNpemVvZih1aW50MTYpICogbWF4X2NodW5rcyk7 Ci0JCQllbnRyeS0+Y2h1bmtfZGF0YSA9Ci0JCQkJcGFsbG9jMChzaXplb2YoQmxvY2tSZWZU YWJsZUNodW5rKSAqIG1heF9jaHVua3MpOworCQkJZW50cnktPmNodW5rX3NpemUgPSBwYWxs b2MwX2FycmF5KHVpbnQxNiwgbWF4X2NodW5rcyk7IAorCQkJZW50cnktPmNodW5rX3VzYWdl ID0gcGFsbG9jMF9hcnJheSh1aW50MTYsIG1heF9jaHVua3MpOworCQkJZW50cnktPmNodW5r X2RhdGEgPSBwYWxsb2MwX2FycmF5KEJsb2NrUmVmVGFibGVDaHVuaywgbWF4X2NodW5rcyk7 CiAJCX0KIAkJZWxzZQogCQl7CkBAIC0xMDI5LDcgKzEwMjgsNyBAQCBCbG9ja1JlZlRhYmxl RW50cnlNYXJrQmxvY2tNb2RpZmllZChCbG9ja1JlZlRhYmxlRW50cnkgKmVudHJ5LAogCWlm IChlbnRyeS0+Y2h1bmtfc2l6ZVtjaHVua25vXSA9PSAwKQogCXsKIAkJZW50cnktPmNodW5r X2RhdGFbY2h1bmtub10gPQotCQkJcGFsbG9jKHNpemVvZih1aW50MTYpICogSU5JVElBTF9F TlRSSUVTX1BFUl9DSFVOSyk7CisJCQlwYWxsb2NfYXJyYXkodWludDE2LCBJTklUSUFMX0VO VFJJRVNfUEVSX0NIVU5LKTsKIAkJZW50cnktPmNodW5rX3NpemVbY2h1bmtub10gPSBJTklU SUFMX0VOVFJJRVNfUEVSX0NIVU5LOwogCQllbnRyeS0+Y2h1bmtfZGF0YVtjaHVua25vXVsw XSA9IGNodW5rb2Zmc2V0OwogCQllbnRyeS0+Y2h1bmtfdXNhZ2VbY2h1bmtub10gPSAxOwpk aWZmIC0tZ2l0IGEvc3JjL2NvbW1vbi9wYXJzZV9tYW5pZmVzdC5jIGIvc3JjL2NvbW1vbi9w YXJzZV9tYW5pZmVzdC5jCmluZGV4IDU4ZTA5NDgxMDBmLi5jYzVmYTBlNWUwNyAxMDA2NDQK LS0tIGEvc3JjL2NvbW1vbi9wYXJzZV9tYW5pZmVzdC5jCisrKyBiL3NyYy9jb21tb24vcGFy c2VfbWFuaWZlc3QuYwpAQCAtMTMyLDggKzEzMiw4IEBAIGpzb25fcGFyc2VfbWFuaWZlc3Rf aW5jcmVtZW50YWxfaW5pdChKc29uTWFuaWZlc3RQYXJzZUNvbnRleHQgKmNvbnRleHQpCiAJ SnNvbk1hbmlmZXN0UGFyc2VTdGF0ZSAqcGFyc2U7CiAJcGdfY3J5cHRvaGFzaF9jdHggKm1h bmlmZXN0X2N0eDsKIAotCWluY3N0YXRlID0gcGFsbG9jKHNpemVvZihKc29uTWFuaWZlc3RQ YXJzZUluY3JlbWVudGFsU3RhdGUpKTsKLQlwYXJzZSA9IHBhbGxvYyhzaXplb2YoSnNvbk1h bmlmZXN0UGFyc2VTdGF0ZSkpOworCWluY3N0YXRlID0gcGFsbG9jX29iamVjdChKc29uTWFu aWZlc3RQYXJzZUluY3JlbWVudGFsU3RhdGUpOworCXBhcnNlID0gcGFsbG9jX29iamVjdChK c29uTWFuaWZlc3RQYXJzZVN0YXRlKTsKIAogCXBhcnNlLT5jb250ZXh0ID0gY29udGV4dDsK IAlwYXJzZS0+c3RhdGUgPSBKTV9FWFBFQ1RfVE9QTEVWRUxfU1RBUlQ7CmRpZmYgLS1naXQg YS9zcmMvY29tbW9uL3BnZm5hbWVzLmMgYi9zcmMvY29tbW9uL3BnZm5hbWVzLmMKaW5kZXgg OGZiNzkxMDU3MTQuLjU5MTUzNWEyNGI4IDEwMDY0NAotLS0gYS9zcmMvY29tbW9uL3BnZm5h bWVzLmMKKysrIGIvc3JjL2NvbW1vbi9wZ2ZuYW1lcy5jCkBAIC00OSw3ICs0OSw3IEBAIHBn Zm5hbWVzKGNvbnN0IGNoYXIgKnBhdGgpCiAJCXJldHVybiBOVUxMOwogCX0KIAotCWZpbGVu YW1lcyA9IChjaGFyICoqKSBwYWxsb2MoZm5zaXplICogc2l6ZW9mKGNoYXIgKikpOworCWZp bGVuYW1lcyA9IHBhbGxvY19hcnJheShjaGFyICosIGZuc2l6ZSk7CiAKIAl3aGlsZSAoZXJy bm8gPSAwLCAoZmlsZSA9IHJlYWRkaXIoZGlyKSkgIT0gTlVMTCkKIAl7CkBAIC01OCw4ICs1 OCw3IEBAIHBnZm5hbWVzKGNvbnN0IGNoYXIgKnBhdGgpCiAJCQlpZiAobnVtbmFtZXMgKyAx ID49IGZuc2l6ZSkKIAkJCXsKIAkJCQlmbnNpemUgKj0gMjsKLQkJCQlmaWxlbmFtZXMgPSAo Y2hhciAqKikgcmVwYWxsb2MoZmlsZW5hbWVzLAotCQkJCQkJCQkJCQkgICBmbnNpemUgKiBz aXplb2YoY2hhciAqKSk7CisJCQkJZmlsZW5hbWVzID0gcmVwYWxsb2NfYXJyYXkoZmlsZW5h bWVzLCBjaGFyICosIGZuc2l6ZSk7CiAJCQl9CiAJCQlmaWxlbmFtZXNbbnVtbmFtZXMrK10g PSBwc3RyZHVwKGZpbGUtPmRfbmFtZSk7CiAJCX0KZGlmZiAtLWdpdCBhL3NyYy9jb21tb24v cm10cmVlLmMgYi9zcmMvY29tbW9uL3JtdHJlZS5jCmluZGV4IDJmMzY0Zjg0YWU1Li40N2Nk MGE0ZDhhMSAxMDA2NDQKLS0tIGEvc3JjL2NvbW1vbi9ybXRyZWUuYworKysgYi9zcmMvY29t bW9uL3JtdHJlZS5jCkBAIC02NCw3ICs2NCw3IEBAIHJtdHJlZShjb25zdCBjaGFyICpwYXRo LCBib29sIHJtdG9wZGlyKQogCQlyZXR1cm4gZmFsc2U7CiAJfQogCi0JZGlybmFtZXMgPSAo Y2hhciAqKikgcGFsbG9jKHNpemVvZihjaGFyICopICogZGlybmFtZXNfY2FwYWNpdHkpOwor CWRpcm5hbWVzID0gcGFsbG9jX2FycmF5KGNoYXIgKiwgZGlybmFtZXNfY2FwYWNpdHkpOwog CiAJd2hpbGUgKGVycm5vID0gMCwgKGRlID0gcmVhZGRpcihkaXIpKSkKIAl7CmRpZmYgLS1n aXQgYS9zcmMvY29tbW9uL3N0cmluZ2luZm8uYyBiL3NyYy9jb21tb24vc3RyaW5naW5mby5j CmluZGV4IDIyZDAzODA3Njk3Li5hM2U3NzA4OGY4ZSAxMDA2NDQKLS0tIGEvc3JjL2NvbW1v bi9zdHJpbmdpbmZvLmMKKysrIGIvc3JjL2NvbW1vbi9zdHJpbmdpbmZvLmMKQEAgLTU3LDcg KzU3LDcgQEAgaW5pdFN0cmluZ0luZm9JbnRlcm5hbChTdHJpbmdJbmZvIHN0ciwgaW50IGlu aXRzaXplKQogc3RhdGljIGlubGluZSBTdHJpbmdJbmZvCiBtYWtlU3RyaW5nSW5mb0ludGVy bmFsKGludCBpbml0c2l6ZSkKIHsKLQlTdHJpbmdJbmZvCXJlcyA9IChTdHJpbmdJbmZvKSBw YWxsb2Moc2l6ZW9mKFN0cmluZ0luZm9EYXRhKSk7CisJU3RyaW5nSW5mbwlyZXMgPSBwYWxs b2Nfb2JqZWN0KFN0cmluZ0luZm9EYXRhKTsKIAogCWluaXRTdHJpbmdJbmZvSW50ZXJuYWwo cmVzLCBpbml0c2l6ZSk7CiAJcmV0dXJuIHJlczsKZGlmZiAtLWdpdCBhL3NyYy9mZV91dGls cy9hc3RyZWFtZXJfZmlsZS5jIGIvc3JjL2ZlX3V0aWxzL2FzdHJlYW1lcl9maWxlLmMKaW5k ZXggYzY4NTYyODUwODYuLjk0MGYwZjVhMWE2IDEwMDY0NAotLS0gYS9zcmMvZmVfdXRpbHMv YXN0cmVhbWVyX2ZpbGUuYworKysgYi9zcmMvZmVfdXRpbHMvYXN0cmVhbWVyX2ZpbGUuYwpA QCAtODIsNyArODIsNyBAQCBhc3RyZWFtZXJfcGxhaW5fd3JpdGVyX25ldyhjaGFyICpwYXRo bmFtZSwgRklMRSAqZmlsZSkKIHsKIAlhc3RyZWFtZXJfcGxhaW5fd3JpdGVyICpzdHJlYW1l cjsKIAotCXN0cmVhbWVyID0gcGFsbG9jMChzaXplb2YoYXN0cmVhbWVyX3BsYWluX3dyaXRl cikpOworCXN0cmVhbWVyID0gcGFsbG9jMF9vYmplY3QoYXN0cmVhbWVyX3BsYWluX3dyaXRl cik7CiAJKigoY29uc3QgYXN0cmVhbWVyX29wcyAqKikgJnN0cmVhbWVyLT5iYXNlLmJic19v cHMpID0KIAkJJmFzdHJlYW1lcl9wbGFpbl93cml0ZXJfb3BzOwogCkBAIC0xODksNyArMTg5 LDcgQEAgYXN0cmVhbWVyX2V4dHJhY3Rvcl9uZXcoY29uc3QgY2hhciAqYmFzZXBhdGgsCiB7 CiAJYXN0cmVhbWVyX2V4dHJhY3RvciAqc3RyZWFtZXI7CiAKLQlzdHJlYW1lciA9IHBhbGxv YzAoc2l6ZW9mKGFzdHJlYW1lcl9leHRyYWN0b3IpKTsKKwlzdHJlYW1lciA9IHBhbGxvYzBf b2JqZWN0KGFzdHJlYW1lcl9leHRyYWN0b3IpOwogCSooKGNvbnN0IGFzdHJlYW1lcl9vcHMg KiopICZzdHJlYW1lci0+YmFzZS5iYnNfb3BzKSA9CiAJCSZhc3RyZWFtZXJfZXh0cmFjdG9y X29wczsKIAlzdHJlYW1lci0+YmFzZXBhdGggPSBwc3RyZHVwKGJhc2VwYXRoKTsKZGlmZiAt LWdpdCBhL3NyYy9mZV91dGlscy9hc3RyZWFtZXJfZ3ppcC5jIGIvc3JjL2ZlX3V0aWxzL2Fz dHJlYW1lcl9nemlwLmMKaW5kZXggYTM5NWY1N2VkY2QuLjA2ZTI2NzBkMzYzIDEwMDY0NAot LS0gYS9zcmMvZmVfdXRpbHMvYXN0cmVhbWVyX2d6aXAuYworKysgYi9zcmMvZmVfdXRpbHMv YXN0cmVhbWVyX2d6aXAuYwpAQCAtMTAyLDcgKzEwMiw3IEBAIGFzdHJlYW1lcl9nemlwX3dy aXRlcl9uZXcoY2hhciAqcGF0aG5hbWUsIEZJTEUgKmZpbGUsCiAjaWZkZWYgSEFWRV9MSUJa CiAJYXN0cmVhbWVyX2d6aXBfd3JpdGVyICpzdHJlYW1lcjsKIAotCXN0cmVhbWVyID0gcGFs bG9jMChzaXplb2YoYXN0cmVhbWVyX2d6aXBfd3JpdGVyKSk7CisJc3RyZWFtZXIgPSBwYWxs b2MwX29iamVjdChhc3RyZWFtZXJfZ3ppcF93cml0ZXIpOwogCSooKGNvbnN0IGFzdHJlYW1l cl9vcHMgKiopICZzdHJlYW1lci0+YmFzZS5iYnNfb3BzKSA9CiAJCSZhc3RyZWFtZXJfZ3pp cF93cml0ZXJfb3BzOwogCkBAIC0yNDEsNyArMjQxLDcgQEAgYXN0cmVhbWVyX2d6aXBfZGVj b21wcmVzc29yX25ldyhhc3RyZWFtZXIgKm5leHQpCiAKIAlBc3NlcnQobmV4dCAhPSBOVUxM KTsKIAotCXN0cmVhbWVyID0gcGFsbG9jMChzaXplb2YoYXN0cmVhbWVyX2d6aXBfZGVjb21w cmVzc29yKSk7CisJc3RyZWFtZXIgPSBwYWxsb2MwX29iamVjdChhc3RyZWFtZXJfZ3ppcF9k ZWNvbXByZXNzb3IpOwogCSooKGNvbnN0IGFzdHJlYW1lcl9vcHMgKiopICZzdHJlYW1lci0+ YmFzZS5iYnNfb3BzKSA9CiAJCSZhc3RyZWFtZXJfZ3ppcF9kZWNvbXByZXNzb3Jfb3BzOwog CmRpZmYgLS1naXQgYS9zcmMvZmVfdXRpbHMvYXN0cmVhbWVyX2x6NC5jIGIvc3JjL2ZlX3V0 aWxzL2FzdHJlYW1lcl9sejQuYwppbmRleCA1ZjU4MWQxZGUzNy4uNmFlYWQyMDlmZDIgMTAw NjQ0Ci0tLSBhL3NyYy9mZV91dGlscy9hc3RyZWFtZXJfbHo0LmMKKysrIGIvc3JjL2ZlX3V0 aWxzL2FzdHJlYW1lcl9sejQuYwpAQCAtNzgsNyArNzgsNyBAQCBhc3RyZWFtZXJfbHo0X2Nv bXByZXNzb3JfbmV3KGFzdHJlYW1lciAqbmV4dCwgcGdfY29tcHJlc3Nfc3BlY2lmaWNhdGlv biAqY29tcHJlcwogCiAJQXNzZXJ0KG5leHQgIT0gTlVMTCk7CiAKLQlzdHJlYW1lciA9IHBh bGxvYzAoc2l6ZW9mKGFzdHJlYW1lcl9sejRfZnJhbWUpKTsKKwlzdHJlYW1lciA9IHBhbGxv YzBfb2JqZWN0KGFzdHJlYW1lcl9sejRfZnJhbWUpOwogCSooKGNvbnN0IGFzdHJlYW1lcl9v cHMgKiopICZzdHJlYW1lci0+YmFzZS5iYnNfb3BzKSA9CiAJCSZhc3RyZWFtZXJfbHo0X2Nv bXByZXNzb3Jfb3BzOwogCkBAIC0yODIsNyArMjgyLDcgQEAgYXN0cmVhbWVyX2x6NF9kZWNv bXByZXNzb3JfbmV3KGFzdHJlYW1lciAqbmV4dCkKIAogCUFzc2VydChuZXh0ICE9IE5VTEwp OwogCi0Jc3RyZWFtZXIgPSBwYWxsb2MwKHNpemVvZihhc3RyZWFtZXJfbHo0X2ZyYW1lKSk7 CisJc3RyZWFtZXIgPSBwYWxsb2MwX29iamVjdChhc3RyZWFtZXJfbHo0X2ZyYW1lKTsKIAkq KChjb25zdCBhc3RyZWFtZXJfb3BzICoqKSAmc3RyZWFtZXItPmJhc2UuYmJzX29wcykgPQog CQkmYXN0cmVhbWVyX2x6NF9kZWNvbXByZXNzb3Jfb3BzOwogCmRpZmYgLS1naXQgYS9zcmMv ZmVfdXRpbHMvYXN0cmVhbWVyX3Rhci5jIGIvc3JjL2ZlX3V0aWxzL2FzdHJlYW1lcl90YXIu YwppbmRleCAwODhlMjM1NzkyMC4uODk2ZjhhYjQ5NzAgMTAwNjQ0Ci0tLSBhL3NyYy9mZV91 dGlscy9hc3RyZWFtZXJfdGFyLmMKKysrIGIvc3JjL2ZlX3V0aWxzL2FzdHJlYW1lcl90YXIu YwpAQCAtOTQsNyArOTQsNyBAQCBhc3RyZWFtZXJfdGFyX3BhcnNlcl9uZXcoYXN0cmVhbWVy ICpuZXh0KQogewogCWFzdHJlYW1lcl90YXJfcGFyc2VyICpzdHJlYW1lcjsKIAotCXN0cmVh bWVyID0gcGFsbG9jMChzaXplb2YoYXN0cmVhbWVyX3Rhcl9wYXJzZXIpKTsKKwlzdHJlYW1l ciA9IHBhbGxvYzBfb2JqZWN0KGFzdHJlYW1lcl90YXJfcGFyc2VyKTsKIAkqKChjb25zdCBh c3RyZWFtZXJfb3BzICoqKSAmc3RyZWFtZXItPmJhc2UuYmJzX29wcykgPQogCQkmYXN0cmVh bWVyX3Rhcl9wYXJzZXJfb3BzOwogCXN0cmVhbWVyLT5iYXNlLmJic19uZXh0ID0gbmV4dDsK QEAgLTM1Nyw3ICszNTcsNyBAQCBhc3RyZWFtZXJfdGFyX2FyY2hpdmVyX25ldyhhc3RyZWFt ZXIgKm5leHQpCiB7CiAJYXN0cmVhbWVyX3Rhcl9hcmNoaXZlciAqc3RyZWFtZXI7CiAKLQlz dHJlYW1lciA9IHBhbGxvYzAoc2l6ZW9mKGFzdHJlYW1lcl90YXJfYXJjaGl2ZXIpKTsKKwlz dHJlYW1lciA9IHBhbGxvYzBfb2JqZWN0KGFzdHJlYW1lcl90YXJfYXJjaGl2ZXIpOwogCSoo KGNvbnN0IGFzdHJlYW1lcl9vcHMgKiopICZzdHJlYW1lci0+YmFzZS5iYnNfb3BzKSA9CiAJ CSZhc3RyZWFtZXJfdGFyX2FyY2hpdmVyX29wczsKIAlzdHJlYW1lci0+YmFzZS5iYnNfbmV4 dCA9IG5leHQ7CkBAIC00NjMsNyArNDYzLDcgQEAgYXN0cmVhbWVyX3Rhcl90ZXJtaW5hdG9y X25ldyhhc3RyZWFtZXIgKm5leHQpCiB7CiAJYXN0cmVhbWVyICAqc3RyZWFtZXI7CiAKLQlz dHJlYW1lciA9IHBhbGxvYzAoc2l6ZW9mKGFzdHJlYW1lcikpOworCXN0cmVhbWVyID0gcGFs bG9jMF9vYmplY3QoYXN0cmVhbWVyKTsKIAkqKChjb25zdCBhc3RyZWFtZXJfb3BzICoqKSAm c3RyZWFtZXItPmJic19vcHMpID0KIAkJJmFzdHJlYW1lcl90YXJfdGVybWluYXRvcl9vcHM7 CiAJc3RyZWFtZXItPmJic19uZXh0ID0gbmV4dDsKZGlmZiAtLWdpdCBhL3NyYy9mZV91dGls cy9hc3RyZWFtZXJfenN0ZC5jIGIvc3JjL2ZlX3V0aWxzL2FzdHJlYW1lcl96c3RkLmMKaW5k ZXggYmFjZGNjMTUwYzQuLjY2NjZmMWFiZWIzIDEwMDY0NAotLS0gYS9zcmMvZmVfdXRpbHMv YXN0cmVhbWVyX3pzdGQuYworKysgYi9zcmMvZmVfdXRpbHMvYXN0cmVhbWVyX3pzdGQuYwpA QCAtNzUsNyArNzUsNyBAQCBhc3RyZWFtZXJfenN0ZF9jb21wcmVzc29yX25ldyhhc3RyZWFt ZXIgKm5leHQsIHBnX2NvbXByZXNzX3NwZWNpZmljYXRpb24gKmNvbXByZQogCiAJQXNzZXJ0 KG5leHQgIT0gTlVMTCk7CiAKLQlzdHJlYW1lciA9IHBhbGxvYzAoc2l6ZW9mKGFzdHJlYW1l cl96c3RkX2ZyYW1lKSk7CisJc3RyZWFtZXIgPSBwYWxsb2MwX29iamVjdChhc3RyZWFtZXJf enN0ZF9mcmFtZSk7CiAKIAkqKChjb25zdCBhc3RyZWFtZXJfb3BzICoqKSAmc3RyZWFtZXIt PmJhc2UuYmJzX29wcykgPQogCQkmYXN0cmVhbWVyX3pzdGRfY29tcHJlc3Nvcl9vcHM7CkBA IC0yNjYsNyArMjY2LDcgQEAgYXN0cmVhbWVyX3pzdGRfZGVjb21wcmVzc29yX25ldyhhc3Ry ZWFtZXIgKm5leHQpCiAKIAlBc3NlcnQobmV4dCAhPSBOVUxMKTsKIAotCXN0cmVhbWVyID0g cGFsbG9jMChzaXplb2YoYXN0cmVhbWVyX3pzdGRfZnJhbWUpKTsKKwlzdHJlYW1lciA9IHBh bGxvYzBfb2JqZWN0KGFzdHJlYW1lcl96c3RkX2ZyYW1lKTsKIAkqKChjb25zdCBhc3RyZWFt ZXJfb3BzICoqKSAmc3RyZWFtZXItPmJhc2UuYmJzX29wcykgPQogCQkmYXN0cmVhbWVyX3pz dGRfZGVjb21wcmVzc29yX29wczsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbGliL3Jh ZGl4dHJlZS5oIGIvc3JjL2luY2x1ZGUvbGliL3JhZGl4dHJlZS5oCmluZGV4IGVhZDc1MDBm ZTEzLi5hZGY4MWM2ZjBlYiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbGliL3JhZGl4dHJl ZS5oCisrKyBiL3NyYy9pbmNsdWRlL2xpYi9yYWRpeHRyZWUuaApAQCAtMTgyNSw3ICsxODI1 LDcgQEAgUlRfQ1JFQVRFKE1lbW9yeUNvbnRleHQgY3R4KQogCWRzYV9wb2ludGVyIGRwOwog I2VuZGlmCiAKLQl0cmVlID0gKFJUX1JBRElYX1RSRUUgKikgcGFsbG9jMChzaXplb2YoUlRf UkFESVhfVFJFRSkpOworCXRyZWUgPSBwYWxsb2MwX29iamVjdChSVF9SQURJWF9UUkVFKTsK IAogI2lmZGVmIFJUX1NITUVNCiAJdHJlZS0+ZHNhID0gZHNhOwpAQCAtMTgzNSw3ICsxODM1 LDcgQEAgUlRfQ1JFQVRFKE1lbW9yeUNvbnRleHQgY3R4KQogCXRyZWUtPmN0bC0+bWFnaWMg PSBSVF9SQURJWF9UUkVFX01BR0lDOwogCUxXTG9ja0luaXRpYWxpemUoJnRyZWUtPmN0bC0+ bG9jaywgdHJhbmNoZV9pZCk7CiAjZWxzZQotCXRyZWUtPmN0bCA9IChSVF9SQURJWF9UUkVF X0NPTlRST0wgKikgcGFsbG9jMChzaXplb2YoUlRfUkFESVhfVFJFRV9DT05UUk9MKSk7CisJ dHJlZS0+Y3RsID0gcGFsbG9jMF9vYmplY3QoUlRfUkFESVhfVFJFRV9DT05UUk9MKTsKIAog CS8qIENyZWF0ZSBhIHNsYWIgY29udGV4dCBmb3IgZWFjaCBzaXplIGNsYXNzICovCiAJZm9y IChpbnQgaSA9IDA7IGkgPCBSVF9OVU1fU0laRV9DTEFTU0VTOyBpKyspCkBAIC0xODY4LDcg KzE4NjgsNyBAQCBSVF9BVFRBQ0goZHNhX2FyZWEgKmRzYSwgUlRfSEFORExFIGhhbmRsZSkK IAlSVF9SQURJWF9UUkVFICp0cmVlOwogCWRzYV9wb2ludGVyIGNvbnRyb2w7CiAKLQl0cmVl ID0gKFJUX1JBRElYX1RSRUUgKikgcGFsbG9jMChzaXplb2YoUlRfUkFESVhfVFJFRSkpOwor CXRyZWUgPSBwYWxsb2MwX29iamVjdChSVF9SQURJWF9UUkVFKTsKIAogCS8qIEZpbmQgdGhl IGNvbnRyb2wgb2JqZWN0IGluIHNoYXJlZCBtZW1vcnkgKi8KIAljb250cm9sID0gaGFuZGxl OwpAQCAtMjA1Nyw3ICsyMDU3LDcgQEAgUlRfQkVHSU5fSVRFUkFURShSVF9SQURJWF9UUkVF ICogdHJlZSkKIAlSVF9JVEVSICAgICppdGVyOwogCVJUX0NISUxEX1BUUiByb290OwogCi0J aXRlciA9IChSVF9JVEVSICopIHBhbGxvYzAoc2l6ZW9mKFJUX0lURVIpKTsKKwlpdGVyID0g cGFsbG9jMF9vYmplY3QoUlRfSVRFUik7CiAJaXRlci0+dHJlZSA9IHRyZWU7CiAKIAlBc3Nl cnQoUlRfUFRSX0FMTE9DX0lTX1ZBTElEKHRyZWUtPmN0bC0+cm9vdCkpOwpkaWZmIC0tZ2l0 IGEvc3JjL3BsL3BscGVybC9wbHBlcmwuYyBiL3NyYy9wbC9wbHBlcmwvcGxwZXJsLmMKaW5k ZXggNzNiYTE3NDhmZTAuLjAyZWNlZDNiMmM1IDEwMDY0NAotLS0gYS9zcmMvcGwvcGxwZXJs L3BscGVybC5jCisrKyBiL3NyYy9wbC9wbHBlcmwvcGxwZXJsLmMKQEAgLTEwODIsOCArMTA4 Miw4IEBAIHBscGVybF9idWlsZF90dXBsZV9yZXN1bHQoSFYgKnBlcmxoYXNoLCBUdXBsZURl c2MgdGQpCiAJSEUJCSAgICpoZTsKIAlIZWFwVHVwbGUJdHVwOwogCi0JdmFsdWVzID0gcGFs bG9jMChzaXplb2YoRGF0dW0pICogdGQtPm5hdHRzKTsKLQludWxscyA9IHBhbGxvYyhzaXpl b2YoYm9vbCkgKiB0ZC0+bmF0dHMpOworCXZhbHVlcyA9IHBhbGxvYzBfYXJyYXkoRGF0dW0s IHRkLT5uYXR0cyk7CisJbnVsbHMgPSBwYWxsb2NfYXJyYXkoYm9vbCwgdGQtPm5hdHRzKTsK IAltZW1zZXQobnVsbHMsIHRydWUsIHNpemVvZihib29sKSAqIHRkLT5uYXR0cyk7CiAKIAlo dl9pdGVyaW5pdChwZXJsaGFzaCk7CkBAIC0xNTAyLDcgKzE1MDIsNyBAQCBwbHBlcmxfcmVm X2Zyb21fcGdfYXJyYXkoRGF0dW0gYXJnLCBPaWQgdHlwaWQpCiAJICogQ3VycmVudGx5IHdl IG1ha2Ugbm8gZWZmb3J0IHRvIGNhY2hlIGFueSBvZiB0aGUgc3R1ZmYgd2UgbG9vayB1cCBo ZXJlLAogCSAqIHdoaWNoIGlzIGJhZC4KIAkgKi8KLQlpbmZvID0gcGFsbG9jMChzaXplb2Yo cGxwZXJsX2FycmF5X2luZm8pKTsKKwlpbmZvID0gcGFsbG9jMF9vYmplY3QocGxwZXJsX2Fy cmF5X2luZm8pOwogCiAJLyogZ2V0IGVsZW1lbnQgdHlwZSBpbmZvcm1hdGlvbiwgaW5jbHVk aW5nIG91dHB1dCBjb252ZXJzaW9uIGZ1bmN0aW9uICovCiAJZ2V0X3R5cGVfaW9fZGF0YShl bGVtZW50dHlwZSwgSU9GdW5jX291dHB1dCwKQEAgLTE1MzgsNyArMTUzOCw3IEBAIHBscGVy bF9yZWZfZnJvbV9wZ19hcnJheShEYXR1bSBhcmcsIE9pZCB0eXBpZCkKIAkJCQkJCSAgJm5p dGVtcyk7CiAKIAkJLyogR2V0IHRvdGFsIG51bWJlciBvZiBlbGVtZW50cyBpbiBlYWNoIGRp bWVuc2lvbiAqLwotCQlpbmZvLT5uZWxlbXMgPSBwYWxsb2Moc2l6ZW9mKGludCkgKiBpbmZv LT5uZGltcyk7CisJCWluZm8tPm5lbGVtcyA9IHBhbGxvY19hcnJheShpbnQsIGluZm8tPm5k aW1zKTsKIAkJaW5mby0+bmVsZW1zWzBdID0gbml0ZW1zOwogCQlmb3IgKGkgPSAxOyBpIDwg aW5mby0+bmRpbXM7IGkrKykKIAkJCWluZm8tPm5lbGVtc1tpXSA9IGluZm8tPm5lbGVtc1tp IC0gMV0gLyBkaW1zW2kgLSAxXTsKQEAgLTI3OTcsNyArMjc5Nyw3IEBAIGNvbXBpbGVfcGxw ZXJsX2Z1bmN0aW9uKE9pZCBmbl9vaWQsIGJvb2wgaXNfdHJpZ2dlciwgYm9vbCBpc19ldmVu dF90cmlnZ2VyKQogCQkgKiBzdHJ1Y3QgcHJvZGVzYyBhbmQgc3Vic2lkaWFyeSBkYXRhIG11 c3QgYWxsIGxpdmUgaW4gcHJvY19jeHQuCiAJCSAqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAJCW9sZGNvbnRleHQgPSBN ZW1vcnlDb250ZXh0U3dpdGNoVG8ocHJvY19jeHQpOwotCQlwcm9kZXNjID0gKHBscGVybF9w cm9jX2Rlc2MgKikgcGFsbG9jMChzaXplb2YocGxwZXJsX3Byb2NfZGVzYykpOworCQlwcm9k ZXNjID0gcGFsbG9jMF9vYmplY3QocGxwZXJsX3Byb2NfZGVzYyk7CiAJCXByb2Rlc2MtPnBy b25hbWUgPSBwc3RyZHVwKE5hbWVTdHIocHJvY1N0cnVjdC0+cHJvbmFtZSkpOwogCQlNZW1v cnlDb250ZXh0U2V0SWRlbnRpZmllcihwcm9jX2N4dCwgcHJvZGVzYy0+cHJvbmFtZSk7CiAJ CXByb2Rlc2MtPmZuX2N4dCA9IHByb2NfY3h0OwpAQCAtMzU5Niw3ICszNTk2LDcgQEAgcGxw ZXJsX3NwaV9wcmVwYXJlKGNoYXIgKnF1ZXJ5LCBpbnQgYXJnYywgU1YgKiphcmd2KQogCQkJ CQkJCQkJCSAiUEwvUGVybCBzcGlfcHJlcGFyZSBxdWVyeSIsCiAJCQkJCQkJCQkJIEFMTE9D U0VUX1NNQUxMX1NJWkVTKTsKIAkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKHBsYW5fY3h0KTsK LQkJcWRlc2MgPSAocGxwZXJsX3F1ZXJ5X2Rlc2MgKikgcGFsbG9jMChzaXplb2YocGxwZXJs X3F1ZXJ5X2Rlc2MpKTsKKwkJcWRlc2MgPSBwYWxsb2MwX29iamVjdChwbHBlcmxfcXVlcnlf ZGVzYyk7CiAJCXNucHJpbnRmKHFkZXNjLT5xbmFtZSwgc2l6ZW9mKHFkZXNjLT5xbmFtZSks ICIlcCIsIHFkZXNjKTsKIAkJcWRlc2MtPnBsYW5fY3h0ID0gcGxhbl9jeHQ7CiAJCXFkZXNj LT5uYXJncyA9IGFyZ2M7CmRpZmYgLS1naXQgYS9zcmMvcGwvcGxwZ3NxbC9zcmMvcGxfY29t cC5jIGIvc3JjL3BsL3BscGdzcWwvc3JjL3BsX2NvbXAuYwppbmRleCBmNjk3NjY4OWE2OS4u NGQ5MGEwYzJmMDYgMTAwNjQ0Ci0tLSBhL3NyYy9wbC9wbHBnc3FsL3NyYy9wbF9jb21wLmMK KysrIGIvc3JjL3BsL3BscGdzcWwvc3JjL3BsX2NvbXAuYwpAQCAtMjk4LDggKzI5OCw4IEBA IHBscGdzcWxfY29tcGlsZV9jYWxsYmFjayhGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbywKIAkJ CQkJCQkJCQkJICAgZm9yVmFsaWRhdG9yLAogCQkJCQkJCQkJCQkgICBwbHBnc3FsX2Vycm9y X2Z1bmNuYW1lKTsKIAotCQkJaW5fYXJnX3Zhcm5vcyA9IChpbnQgKikgcGFsbG9jKG51bWFy Z3MgKiBzaXplb2YoaW50KSk7Ci0JCQlvdXRfYXJnX3ZhcmlhYmxlcyA9IChQTHBnU1FMX3Zh cmlhYmxlICoqKSBwYWxsb2MobnVtYXJncyAqIHNpemVvZihQTHBnU1FMX3ZhcmlhYmxlICop KTsKKwkJCWluX2FyZ192YXJub3MgPSBwYWxsb2NfYXJyYXkoaW50LCBudW1hcmdzKTsKKwkJ CW91dF9hcmdfdmFyaWFibGVzID0gcGFsbG9jX2FycmF5KFBMcGdTUUxfdmFyaWFibGUgKiwg bnVtYXJncyk7CiAKIAkJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhmdW5jX2N4dCk7CiAKQEAg LTc3Miw3ICs3NzIsNyBAQCBwbHBnc3FsX2NvbXBpbGVfaW5saW5lKGNoYXIgKnByb2Nfc291 cmNlKQogCXBscGdzcWxfY2hlY2tfc3ludGF4ID0gY2hlY2tfZnVuY3Rpb25fYm9kaWVzOwog CiAJLyogRnVuY3Rpb24gc3RydWN0IGRvZXMgbm90IGxpdmUgcGFzdCBjdXJyZW50IHN0YXRl bWVudCAqLwotCWZ1bmN0aW9uID0gKFBMcGdTUUxfZnVuY3Rpb24gKikgcGFsbG9jMChzaXpl b2YoUExwZ1NRTF9mdW5jdGlvbikpOworCWZ1bmN0aW9uID0gcGFsbG9jMF9vYmplY3QoUExw Z1NRTF9mdW5jdGlvbik7CiAKIAlwbHBnc3FsX2N1cnJfY29tcGlsZSA9IGZ1bmN0aW9uOwog CkBAIC05NTQsNyArOTU0LDcgQEAgYWRkX2R1bW15X3JldHVybihQTHBnU1FMX2Z1bmN0aW9u ICpmdW5jdGlvbikKIAl7CiAJCVBMcGdTUUxfc3RtdF9ibG9jayAqbmV3OwogCi0JCW5ldyA9 IHBhbGxvYzAoc2l6ZW9mKFBMcGdTUUxfc3RtdF9ibG9jaykpOworCQluZXcgPSBwYWxsb2Mw X29iamVjdChQTHBnU1FMX3N0bXRfYmxvY2spOwogCQluZXctPmNtZF90eXBlID0gUExQR1NR TF9TVE1UX0JMT0NLOwogCQluZXctPnN0bXRpZCA9ICsrZnVuY3Rpb24tPm5zdGF0ZW1lbnRz OwogCQluZXctPmJvZHkgPSBsaXN0X21ha2UxKGZ1bmN0aW9uLT5hY3Rpb24pOwpAQCAtOTY2 LDcgKzk2Niw3IEBAIGFkZF9kdW1teV9yZXR1cm4oUExwZ1NRTF9mdW5jdGlvbiAqZnVuY3Rp b24pCiAJewogCQlQTHBnU1FMX3N0bXRfcmV0dXJuICpuZXc7CiAKLQkJbmV3ID0gcGFsbG9j MChzaXplb2YoUExwZ1NRTF9zdG10X3JldHVybikpOworCQluZXcgPSBwYWxsb2MwX29iamVj dChQTHBnU1FMX3N0bXRfcmV0dXJuKTsKIAkJbmV3LT5jbWRfdHlwZSA9IFBMUEdTUUxfU1RN VF9SRVRVUk47CiAJCW5ldy0+c3RtdGlkID0gKytmdW5jdGlvbi0+bnN0YXRlbWVudHM7CiAJ CW5ldy0+ZXhwciA9IE5VTEw7CkBAIC0xNzc2LDcgKzE3NzYsNyBAQCBwbHBnc3FsX2J1aWxk X3ZhcmlhYmxlKGNvbnN0IGNoYXIgKnJlZm5hbWUsIGludCBsaW5lbm8sIFBMcGdTUUxfdHlw ZSAqZHR5cGUsCiAJCQkJLyogT3JkaW5hcnkgc2NhbGFyIGRhdGF0eXBlICovCiAJCQkJUExw Z1NRTF92YXIgKnZhcjsKIAotCQkJCXZhciA9IHBhbGxvYzAoc2l6ZW9mKFBMcGdTUUxfdmFy KSk7CisJCQkJdmFyID0gcGFsbG9jMF9vYmplY3QoUExwZ1NRTF92YXIpOwogCQkJCXZhci0+ ZHR5cGUgPSBQTFBHU1FMX0RUWVBFX1ZBUjsKIAkJCQl2YXItPnJlZm5hbWUgPSBwc3RyZHVw KHJlZm5hbWUpOwogCQkJCXZhci0+bGluZW5vID0gbGluZW5vOwpAQCAtMTgzMyw3ICsxODMz LDcgQEAgcGxwZ3NxbF9idWlsZF9yZWNvcmQoY29uc3QgY2hhciAqcmVmbmFtZSwgaW50IGxp bmVubywKIHsKIAlQTHBnU1FMX3JlYyAqcmVjOwogCi0JcmVjID0gcGFsbG9jMChzaXplb2Yo UExwZ1NRTF9yZWMpKTsKKwlyZWMgPSBwYWxsb2MwX29iamVjdChQTHBnU1FMX3JlYyk7CiAJ cmVjLT5kdHlwZSA9IFBMUEdTUUxfRFRZUEVfUkVDOwogCXJlYy0+cmVmbmFtZSA9IHBzdHJk dXAocmVmbmFtZSk7CiAJcmVjLT5saW5lbm8gPSBsaW5lbm87CkBAIC0xODU5LDE0ICsxODU5 LDE0IEBAIGJ1aWxkX3Jvd19mcm9tX3ZhcnMoUExwZ1NRTF92YXJpYWJsZSAqKnZhcnMsIGlu dCBudW12YXJzKQogCVBMcGdTUUxfcm93ICpyb3c7CiAJaW50CQkJaTsKIAotCXJvdyA9IHBh bGxvYzAoc2l6ZW9mKFBMcGdTUUxfcm93KSk7CisJcm93ID0gcGFsbG9jMF9vYmplY3QoUExw Z1NRTF9yb3cpOwogCXJvdy0+ZHR5cGUgPSBQTFBHU1FMX0RUWVBFX1JPVzsKIAlyb3ctPnJl Zm5hbWUgPSAiKHVubmFtZWQgcm93KSI7CiAJcm93LT5saW5lbm8gPSAtMTsKIAlyb3ctPnJv d3R1cGRlc2MgPSBDcmVhdGVUZW1wbGF0ZVR1cGxlRGVzYyhudW12YXJzKTsKIAlyb3ctPm5m aWVsZHMgPSBudW12YXJzOwotCXJvdy0+ZmllbGRuYW1lcyA9IHBhbGxvYyhudW12YXJzICog c2l6ZW9mKGNoYXIgKikpOwotCXJvdy0+dmFybm9zID0gcGFsbG9jKG51bXZhcnMgKiBzaXpl b2YoaW50KSk7CisJcm93LT5maWVsZG5hbWVzID0gcGFsbG9jX2FycmF5KGNoYXIgKiwgbnVt dmFycyk7CisJcm93LT52YXJub3MgPSBwYWxsb2NfYXJyYXkoaW50LCBudW12YXJzKTsKIAog CWZvciAoaSA9IDA7IGkgPCBudW12YXJzOyBpKyspCiAJewpAQCAtMTk0MCw3ICsxOTQwLDcg QEAgcGxwZ3NxbF9idWlsZF9yZWNmaWVsZChQTHBnU1FMX3JlYyAqcmVjLCBjb25zdCBjaGFy ICpmbGRuYW1lKQogCX0KIAogCS8qIG5vcGUsIHNvIG1ha2UgYSBuZXcgb25lICovCi0JcmVj ZmllbGQgPSBwYWxsb2MwKHNpemVvZihQTHBnU1FMX3JlY2ZpZWxkKSk7CisJcmVjZmllbGQg PSBwYWxsb2MwX29iamVjdChQTHBnU1FMX3JlY2ZpZWxkKTsKIAlyZWNmaWVsZC0+ZHR5cGUg PSBQTFBHU1FMX0RUWVBFX1JFQ0ZJRUxEOwogCXJlY2ZpZWxkLT5maWVsZG5hbWUgPSBwc3Ry ZHVwKGZsZG5hbWUpOwogCXJlY2ZpZWxkLT5yZWNwYXJlbnRubyA9IHJlYy0+ZG5vOwpAQCAt MjAwNCw3ICsyMDA0LDcgQEAgYnVpbGRfZGF0YXR5cGUoSGVhcFR1cGxlIHR5cGVUdXAsIGlu dDMyIHR5cG1vZCwKIAkJCQkgZXJybXNnKCJ0eXBlIFwiJXNcIiBpcyBvbmx5IGEgc2hlbGwi LAogCQkJCQkJTmFtZVN0cih0eXBlU3RydWN0LT50eXBuYW1lKSkpKTsKIAotCXR5cCA9IChQ THBnU1FMX3R5cGUgKikgcGFsbG9jKHNpemVvZihQTHBnU1FMX3R5cGUpKTsKKwl0eXAgPSBw YWxsb2Nfb2JqZWN0KFBMcGdTUUxfdHlwZSk7CiAKIAl0eXAtPnR5cG5hbWUgPSBwc3RyZHVw KE5hbWVTdHIodHlwZVN0cnVjdC0+dHlwbmFtZSkpOwogCXR5cC0+dHlwb2lkID0gdHlwZVN0 cnVjdC0+b2lkOwpAQCAtMjE4NCw3ICsyMTg0LDcgQEAgcGxwZ3NxbF9wYXJzZV9lcnJfY29u ZGl0aW9uKGNoYXIgKmNvbmRuYW1lKQogCiAJaWYgKHN0cmNtcChjb25kbmFtZSwgIm90aGVy cyIpID09IDApCiAJewotCQluZXcgPSBwYWxsb2Moc2l6ZW9mKFBMcGdTUUxfY29uZGl0aW9u KSk7CisJCW5ldyA9IHBhbGxvY19vYmplY3QoUExwZ1NRTF9jb25kaXRpb24pOwogCQluZXct PnNxbGVycnN0YXRlID0gUExQR1NRTF9PVEhFUlM7CiAJCW5ldy0+Y29uZG5hbWUgPSBjb25k bmFtZTsKIAkJbmV3LT5uZXh0ID0gTlVMTDsKQEAgLTIxOTYsNyArMjE5Niw3IEBAIHBscGdz cWxfcGFyc2VfZXJyX2NvbmRpdGlvbihjaGFyICpjb25kbmFtZSkKIAl7CiAJCWlmIChzdHJj bXAoY29uZG5hbWUsIGV4Y2VwdGlvbl9sYWJlbF9tYXBbaV0ubGFiZWwpID09IDApCiAJCXsK LQkJCW5ldyA9IHBhbGxvYyhzaXplb2YoUExwZ1NRTF9jb25kaXRpb24pKTsKKwkJCW5ldyA9 IHBhbGxvY19vYmplY3QoUExwZ1NRTF9jb25kaXRpb24pOwogCQkJbmV3LT5zcWxlcnJzdGF0 ZSA9IGV4Y2VwdGlvbl9sYWJlbF9tYXBbaV0uc3FsZXJyc3RhdGU7CiAJCQluZXctPmNvbmRu YW1lID0gY29uZG5hbWU7CiAJCQluZXctPm5leHQgPSBwcmV2OwpAQCAtMjI1OCw3ICsyMjU4 LDcgQEAgcGxwZ3NxbF9maW5pc2hfZGF0dW1zKFBMcGdTUUxfZnVuY3Rpb24gKmZ1bmN0aW9u KQogCWludAkJCWk7CiAKIAlmdW5jdGlvbi0+bmRhdHVtcyA9IHBscGdzcWxfbkRhdHVtczsK LQlmdW5jdGlvbi0+ZGF0dW1zID0gcGFsbG9jKHNpemVvZihQTHBnU1FMX2RhdHVtICopICog cGxwZ3NxbF9uRGF0dW1zKTsKKwlmdW5jdGlvbi0+ZGF0dW1zID0gcGFsbG9jX2FycmF5KFBM cGdTUUxfZGF0dW0gKiwgcGxwZ3NxbF9uRGF0dW1zKTsKIAlmb3IgKGkgPSAwOyBpIDwgcGxw Z3NxbF9uRGF0dW1zOyBpKyspCiAJewogCQlmdW5jdGlvbi0+ZGF0dW1zW2ldID0gcGxwZ3Nx bF9EYXR1bXNbaV07CkBAIC0yMzIzLDcgKzIzMjMsNyBAQCBwbHBnc3FsX2FkZF9pbml0ZGF0 dW1zKGludCAqKnZhcm5vcykKIAl7CiAJCWlmIChuID4gMCkKIAkJewotCQkJKnZhcm5vcyA9 IChpbnQgKikgcGFsbG9jKHNpemVvZihpbnQpICogbik7CisJCQkqdmFybm9zID0gcGFsbG9j X2FycmF5KGludCwgbik7CiAKIAkJCW4gPSAwOwogCQkJZm9yIChpID0gZGF0dW1zX2xhc3Q7 IGkgPCBwbHBnc3FsX25EYXR1bXM7IGkrKykKZGlmZiAtLWdpdCBhL3NyYy9wbC9wbHBnc3Fs L3NyYy9wbF9leGVjLmMgYi9zcmMvcGwvcGxwZ3NxbC9zcmMvcGxfZXhlYy5jCmluZGV4IGQx OTQyNWI3YTcxLi42MzU5OGFiYThhOCAxMDA2NDQKLS0tIGEvc3JjL3BsL3BscGdzcWwvc3Jj L3BsX2V4ZWMuYworKysgYi9zcmMvcGwvcGxwZ3NxbC9zcmMvcGxfZXhlYy5jCkBAIC0xMzE4 LDggKzEzMTgsNyBAQCBjb3B5X3BscGdzcWxfZGF0dW1zKFBMcGdTUUxfZXhlY3N0YXRlICpl c3RhdGUsCiAJaW50CQkJaTsKIAogCS8qIEFsbG9jYXRlIGxvY2FsIGRhdHVtLXBvaW50ZXIg YXJyYXkgKi8KLQllc3RhdGUtPmRhdHVtcyA9IChQTHBnU1FMX2RhdHVtICoqKQotCQlwYWxs b2Moc2l6ZW9mKFBMcGdTUUxfZGF0dW0gKikgKiBuZGF0dW1zKTsKKwllc3RhdGUtPmRhdHVt cyA9IHBhbGxvY19hcnJheShQTHBnU1FMX2RhdHVtICosIG5kYXR1bXMpOwogCiAJLyoKIAkg KiBUbyByZWR1Y2UgcGFsbG9jIG92ZXJoZWFkLCB3ZSBtYWtlIGEgc2luZ2xlIHBhbGxvYyBy ZXF1ZXN0IGZvciBhbGwgdGhlCkBAIC0xNDk3LDcgKzE0OTYsNyBAQCBwbHBnc3FsX2Z1bGZp bGxfcHJvbWlzZShQTHBnU1FMX2V4ZWNzdGF0ZSAqZXN0YXRlLAogCQkJCWludAkJCWxic1sx XTsKIAkJCQlpbnQJCQlpOwogCi0JCQkJZWxlbXMgPSBwYWxsb2Moc2l6ZW9mKERhdHVtKSAq IG5lbGVtcyk7CisJCQkJZWxlbXMgPSBwYWxsb2NfYXJyYXkoRGF0dW0sIG5lbGVtcyk7CiAJ CQkJZm9yIChpID0gMDsgaSA8IG5lbGVtczsgaSsrKQogCQkJCQllbGVtc1tpXSA9IENTdHJp bmdHZXRUZXh0RGF0dW0oZXN0YXRlLT50cmlnZGF0YS0+dGdfdHJpZ2dlci0+dGdhcmdzW2ld KTsKIAkJCQlkaW1zWzBdID0gbmVsZW1zOwpAQCAtMjM0MCwxMSArMjMzOSwxMSBAQCBtYWtl X2NhbGxzdG10X3RhcmdldChQTHBnU1FMX2V4ZWNzdGF0ZSAqZXN0YXRlLCBQTHBnU1FMX2V4 cHIgKmV4cHIpCiAJICovCiAJTWVtb3J5Q29udGV4dFN3aXRjaFRvKGVzdGF0ZS0+ZnVuYy0+ Zm5fY3h0KTsKIAotCXJvdyA9IChQTHBnU1FMX3JvdyAqKSBwYWxsb2MwKHNpemVvZihQTHBn U1FMX3JvdykpOworCXJvdyA9IHBhbGxvYzBfb2JqZWN0KFBMcGdTUUxfcm93KTsKIAlyb3ct PmR0eXBlID0gUExQR1NRTF9EVFlQRV9ST1c7CiAJcm93LT5yZWZuYW1lID0gIih1bm5hbWVk IHJvdykiOwogCXJvdy0+bGluZW5vID0gLTE7Ci0Jcm93LT52YXJub3MgPSAoaW50ICopIHBh bGxvYyhudW1hcmdzICogc2l6ZW9mKGludCkpOworCXJvdy0+dmFybm9zID0gcGFsbG9jX2Fy cmF5KGludCwgbnVtYXJncyk7CiAKIAlNZW1vcnlDb250ZXh0U3dpdGNoVG8oZ2V0X2V2YWxf bWNvbnRleHQoZXN0YXRlKSk7CiAKZGlmZiAtLWdpdCBhL3NyYy9wbC9wbHBnc3FsL3NyYy9w bF9ncmFtLnkgYi9zcmMvcGwvcGxwZ3NxbC9zcmMvcGxfZ3JhbS55CmluZGV4IDE3NTY4ZDgy NTU0Li5jZDFmZTVhNTA5ZiAxMDA2NDQKLS0tIGEvc3JjL3BsL3BscGdzcWwvc3JjL3BsX2dy YW0ueQorKysgYi9zcmMvcGwvcGxwZ3NxbC9zcmMvcGxfZ3JhbS55CkBAIC00MjYsNyArNDI2 LDcgQEAgcGxfYmxvY2sJCTogZGVjbF9zZWN0IEtfQkVHSU4gcHJvY19zZWN0IGV4Y2VwdGlv bl9zZWN0IEtfRU5EIG9wdF9sYWJlbAogCQkJCQl7CiAJCQkJCQlQTHBnU1FMX3N0bXRfYmxv Y2sgKm5ldzsKIAotCQkJCQkJbmV3ID0gcGFsbG9jMChzaXplb2YoUExwZ1NRTF9zdG10X2Js b2NrKSk7CisJCQkJCQluZXcgPSBwYWxsb2MwX29iamVjdChQTHBnU1FMX3N0bXRfYmxvY2sp OwogCiAJCQkJCQluZXctPmNtZF90eXBlCT0gUExQR1NRTF9TVE1UX0JMT0NLOwogCQkJCQkJ bmV3LT5saW5lbm8JCT0gcGxwZ3NxbF9sb2NhdGlvbl90b19saW5lbm8oQDIsIHl5c2Nhbm5l cik7CkBAIC02MDYsMTQgKzYwNiwxNCBAQCBkZWNsX2N1cnNvcl9hcmdzIDoKIAkJCQkJCWlu dAkJCWk7CiAJCQkJCQlMaXN0Q2VsbCAgICpsOwogCi0JCQkJCQluZXcgPSBwYWxsb2MwKHNp emVvZihQTHBnU1FMX3JvdykpOworCQkJCQkJbmV3ID0gcGFsbG9jMF9vYmplY3QoUExwZ1NR TF9yb3cpOwogCQkJCQkJbmV3LT5kdHlwZSA9IFBMUEdTUUxfRFRZUEVfUk9XOwogCQkJCQkJ bmV3LT5yZWZuYW1lID0gIih1bm5hbWVkIHJvdykiOwogCQkJCQkJbmV3LT5saW5lbm8gPSBw bHBnc3FsX2xvY2F0aW9uX3RvX2xpbmVubyhAMSwgeXlzY2FubmVyKTsKIAkJCQkJCW5ldy0+ cm93dHVwZGVzYyA9IE5VTEw7CiAJCQkJCQluZXctPm5maWVsZHMgPSBsaXN0X2xlbmd0aCgk Mik7Ci0JCQkJCQluZXctPmZpZWxkbmFtZXMgPSBwYWxsb2MobmV3LT5uZmllbGRzICogc2l6 ZW9mKGNoYXIgKikpOwotCQkJCQkJbmV3LT52YXJub3MgPSBwYWxsb2MobmV3LT5uZmllbGRz ICogc2l6ZW9mKGludCkpOworCQkJCQkJbmV3LT5maWVsZG5hbWVzID0gcGFsbG9jX2FycmF5 KGNoYXIgKiwgbmV3LT5uZmllbGRzKTsKKwkJCQkJCW5ldy0+dmFybm9zID0gcGFsbG9jX2Fy cmF5KGludCwgbmV3LT5uZmllbGRzKTsKIAogCQkJCQkJaSA9IDA7CiAJCQkJCQlmb3JlYWNo IChsLCAkMikKQEAgLTg5OCw3ICs4OTgsNyBAQCBzdG10X3BlcmZvcm0JOiBLX1BFUkZPUk0K IAkJCQkJCVBMcGdTUUxfc3RtdF9wZXJmb3JtICpuZXc7CiAJCQkJCQlpbnQJCQlzdGFydGxv YzsKIAotCQkJCQkJbmV3ID0gcGFsbG9jMChzaXplb2YoUExwZ1NRTF9zdG10X3BlcmZvcm0p KTsKKwkJCQkJCW5ldyA9IHBhbGxvYzBfb2JqZWN0KFBMcGdTUUxfc3RtdF9wZXJmb3JtKTsK IAkJCQkJCW5ldy0+Y21kX3R5cGUgPSBQTFBHU1FMX1NUTVRfUEVSRk9STTsKIAkJCQkJCW5l dy0+bGluZW5vICAgPSBwbHBnc3FsX2xvY2F0aW9uX3RvX2xpbmVubyhAMSwgeXlzY2FubmVy KTsKIAkJCQkJCW5ldy0+c3RtdGlkID0gKytwbHBnc3FsX2N1cnJfY29tcGlsZS0+bnN0YXRl bWVudHM7CkBAIC05MzQsNyArOTM0LDcgQEAgc3RtdF9jYWxsCQk6IEtfQ0FMTAogCQkJCQl7 CiAJCQkJCQlQTHBnU1FMX3N0bXRfY2FsbCAqbmV3OwogCi0JCQkJCQluZXcgPSBwYWxsb2Mw KHNpemVvZihQTHBnU1FMX3N0bXRfY2FsbCkpOworCQkJCQkJbmV3ID0gcGFsbG9jMF9vYmpl Y3QoUExwZ1NRTF9zdG10X2NhbGwpOwogCQkJCQkJbmV3LT5jbWRfdHlwZSA9IFBMUEdTUUxf U1RNVF9DQUxMOwogCQkJCQkJbmV3LT5saW5lbm8gPSBwbHBnc3FsX2xvY2F0aW9uX3RvX2xp bmVubyhAMSwgeXlzY2FubmVyKTsKIAkJCQkJCW5ldy0+c3RtdGlkID0gKytwbHBnc3FsX2N1 cnJfY29tcGlsZS0+bnN0YXRlbWVudHM7CkBAIC05NTMsNyArOTUzLDcgQEAgc3RtdF9jYWxs CQk6IEtfQ0FMTAogCQkJCQkJLyogdXNlIHRoZSBzYW1lIHN0cnVjdHVyZXMgYXMgZm9yIENB TEwsIGZvciBzaW1wbGljaXR5ICovCiAJCQkJCQlQTHBnU1FMX3N0bXRfY2FsbCAqbmV3Owog Ci0JCQkJCQluZXcgPSBwYWxsb2MwKHNpemVvZihQTHBnU1FMX3N0bXRfY2FsbCkpOworCQkJ CQkJbmV3ID0gcGFsbG9jMF9vYmplY3QoUExwZ1NRTF9zdG10X2NhbGwpOwogCQkJCQkJbmV3 LT5jbWRfdHlwZSA9IFBMUEdTUUxfU1RNVF9DQUxMOwogCQkJCQkJbmV3LT5saW5lbm8gPSBw bHBnc3FsX2xvY2F0aW9uX3RvX2xpbmVubyhAMSwgeXlzY2FubmVyKTsKIAkJCQkJCW5ldy0+ c3RtdGlkID0gKytwbHBnc3FsX2N1cnJfY29tcGlsZS0+bnN0YXRlbWVudHM7CkBAIC05OTIs NyArOTkyLDcgQEAgc3RtdF9hc3NpZ24JCTogVF9EQVRVTQogCQkJCQkJfQogCiAJCQkJCQlj aGVja19hc3NpZ25hYmxlKCQxLmRhdHVtLCBAMSwgeXlzY2FubmVyKTsKLQkJCQkJCW5ldyA9 IHBhbGxvYzAoc2l6ZW9mKFBMcGdTUUxfc3RtdF9hc3NpZ24pKTsKKwkJCQkJCW5ldyA9IHBh bGxvYzBfb2JqZWN0KFBMcGdTUUxfc3RtdF9hc3NpZ24pOwogCQkJCQkJbmV3LT5jbWRfdHlw ZSA9IFBMUEdTUUxfU1RNVF9BU1NJR047CiAJCQkJCQluZXctPmxpbmVubyA9IHBscGdzcWxf bG9jYXRpb25fdG9fbGluZW5vKEAxLCB5eXNjYW5uZXIpOwogCQkJCQkJbmV3LT5zdG10aWQg PSArK3BscGdzcWxfY3Vycl9jb21waWxlLT5uc3RhdGVtZW50czsKQEAgLTEwMTUsNyArMTAx NSw3IEBAIHN0bXRfZ2V0ZGlhZwk6IEtfR0VUIGdldGRpYWdfYXJlYV9vcHQgS19ESUFHTk9T VElDUyBnZXRkaWFnX2xpc3QgJzsnCiAJCQkJCQlQTHBnU1FMX3N0bXRfZ2V0ZGlhZyAqbmV3 OwogCQkJCQkJTGlzdENlbGwJICAgKmxjOwogCi0JCQkJCQluZXcgPSBwYWxsb2MwKHNpemVv ZihQTHBnU1FMX3N0bXRfZ2V0ZGlhZykpOworCQkJCQkJbmV3ID0gcGFsbG9jMF9vYmplY3Qo UExwZ1NRTF9zdG10X2dldGRpYWcpOwogCQkJCQkJbmV3LT5jbWRfdHlwZSA9IFBMUEdTUUxf U1RNVF9HRVRESUFHOwogCQkJCQkJbmV3LT5saW5lbm8gPSBwbHBnc3FsX2xvY2F0aW9uX3Rv X2xpbmVubyhAMSwgeXlzY2FubmVyKTsKIAkJCQkJCW5ldy0+c3RtdGlkID0gKytwbHBnc3Fs X2N1cnJfY29tcGlsZS0+bnN0YXRlbWVudHM7CkBAIC0xMTAxLDcgKzExMDEsNyBAQCBnZXRk aWFnX2xpc3RfaXRlbSA6IGdldGRpYWdfdGFyZ2V0IGFzc2lnbl9vcGVyYXRvciBnZXRkaWFn X2l0ZW0KIAkJCQkJewogCQkJCQkJUExwZ1NRTF9kaWFnX2l0ZW0gKm5ldzsKIAotCQkJCQkJ bmV3ID0gcGFsbG9jKHNpemVvZihQTHBnU1FMX2RpYWdfaXRlbSkpOworCQkJCQkJbmV3ID0g cGFsbG9jX29iamVjdChQTHBnU1FMX2RpYWdfaXRlbSk7CiAJCQkJCQluZXctPnRhcmdldCA9 ICQxLT5kbm87CiAJCQkJCQluZXctPmtpbmQgPSAkMzsKIApAQCAtMTE5MSw3ICsxMTkxLDcg QEAgc3RtdF9pZgkJCTogS19JRiBleHByX3VudGlsX3RoZW4gcHJvY19zZWN0IHN0bXRfZWxz aWZzIHN0bXRfZWxzZSBLX0VORCBLX0lGICc7JwogCQkJCQl7CiAJCQkJCQlQTHBnU1FMX3N0 bXRfaWYgKm5ldzsKIAotCQkJCQkJbmV3ID0gcGFsbG9jMChzaXplb2YoUExwZ1NRTF9zdG10 X2lmKSk7CisJCQkJCQluZXcgPSBwYWxsb2MwX29iamVjdChQTHBnU1FMX3N0bXRfaWYpOwog CQkJCQkJbmV3LT5jbWRfdHlwZSA9IFBMUEdTUUxfU1RNVF9JRjsKIAkJCQkJCW5ldy0+bGlu ZW5vID0gcGxwZ3NxbF9sb2NhdGlvbl90b19saW5lbm8oQDEsIHl5c2Nhbm5lcik7CiAJCQkJ CQluZXctPnN0bXRpZCA9ICsrcGxwZ3NxbF9jdXJyX2NvbXBpbGUtPm5zdGF0ZW1lbnRzOwpA QCAtMTIxMiw3ICsxMjEyLDcgQEAgc3RtdF9lbHNpZnMJCToKIAkJCQkJewogCQkJCQkJUExw Z1NRTF9pZl9lbHNpZiAqbmV3OwogCi0JCQkJCQluZXcgPSBwYWxsb2MwKHNpemVvZihQTHBn U1FMX2lmX2Vsc2lmKSk7CisJCQkJCQluZXcgPSBwYWxsb2MwX29iamVjdChQTHBnU1FMX2lm X2Vsc2lmKTsKIAkJCQkJCW5ldy0+bGluZW5vID0gcGxwZ3NxbF9sb2NhdGlvbl90b19saW5l bm8oQDIsIHl5c2Nhbm5lcik7CiAJCQkJCQluZXctPmNvbmQgPSAkMzsKIAkJCQkJCW5ldy0+ c3RtdHMgPSAkNDsKQEAgLTEyNjQsNyArMTI2NCw3IEBAIGNhc2Vfd2hlbl9saXN0CTogY2Fz ZV93aGVuX2xpc3QgY2FzZV93aGVuCiAKIGNhc2Vfd2hlbgkJOiBLX1dIRU4gZXhwcl91bnRp bF90aGVuIHByb2Nfc2VjdAogCQkJCQl7Ci0JCQkJCQlQTHBnU1FMX2Nhc2Vfd2hlbiAqbmV3 ID0gcGFsbG9jKHNpemVvZihQTHBnU1FMX2Nhc2Vfd2hlbikpOworCQkJCQkJUExwZ1NRTF9j YXNlX3doZW4gKm5ldyA9IHBhbGxvY19vYmplY3QoUExwZ1NRTF9jYXNlX3doZW4pOwogCiAJ CQkJCQluZXctPmxpbmVubwk9IHBscGdzcWxfbG9jYXRpb25fdG9fbGluZW5vKEAxLCB5eXNj YW5uZXIpOwogCQkJCQkJbmV3LT5leHByID0gJDI7CkBAIC0xMjk2LDcgKzEyOTYsNyBAQCBz dG10X2xvb3AJCTogb3B0X2xvb3BfbGFiZWwgS19MT09QIGxvb3BfYm9keQogCQkJCQl7CiAJ CQkJCQlQTHBnU1FMX3N0bXRfbG9vcCAqbmV3OwogCi0JCQkJCQluZXcgPSBwYWxsb2MwKHNp emVvZihQTHBnU1FMX3N0bXRfbG9vcCkpOworCQkJCQkJbmV3ID0gcGFsbG9jMF9vYmplY3Qo UExwZ1NRTF9zdG10X2xvb3ApOwogCQkJCQkJbmV3LT5jbWRfdHlwZSA9IFBMUEdTUUxfU1RN VF9MT09QOwogCQkJCQkJbmV3LT5saW5lbm8gPSBwbHBnc3FsX2xvY2F0aW9uX3RvX2xpbmVu byhAMiwgeXlzY2FubmVyKTsKIAkJCQkJCW5ldy0+c3RtdGlkID0gKytwbHBnc3FsX2N1cnJf Y29tcGlsZS0+bnN0YXRlbWVudHM7CkBAIC0xMzE0LDcgKzEzMTQsNyBAQCBzdG10X3doaWxl CQk6IG9wdF9sb29wX2xhYmVsIEtfV0hJTEUgZXhwcl91bnRpbF9sb29wIGxvb3BfYm9keQog CQkJCQl7CiAJCQkJCQlQTHBnU1FMX3N0bXRfd2hpbGUgKm5ldzsKIAotCQkJCQkJbmV3ID0g cGFsbG9jMChzaXplb2YoUExwZ1NRTF9zdG10X3doaWxlKSk7CisJCQkJCQluZXcgPSBwYWxs b2MwX29iamVjdChQTHBnU1FMX3N0bXRfd2hpbGUpOwogCQkJCQkJbmV3LT5jbWRfdHlwZSA9 IFBMUEdTUUxfU1RNVF9XSElMRTsKIAkJCQkJCW5ldy0+bGluZW5vID0gcGxwZ3NxbF9sb2Nh dGlvbl90b19saW5lbm8oQDIsIHl5c2Nhbm5lcik7CiAJCQkJCQluZXctPnN0bXRpZAk9ICsr cGxwZ3NxbF9jdXJyX2NvbXBpbGUtPm5zdGF0ZW1lbnRzOwpAQCAtMTM4MCw3ICsxMzgwLDcg QEAgZm9yX2NvbnRyb2wJCTogZm9yX3ZhcmlhYmxlIEtfSU4KIAkJCQkJCQkJCQkJCQkJIkxP T1Agb3IgVVNJTkciLAogCQkJCQkJCQkJCQkJCQkmdGVybSwgJnl5bHZhbCwgJnl5bGxvYywg eXlzY2FubmVyKTsKIAotCQkJCQkJCW5ldyA9IHBhbGxvYzAoc2l6ZW9mKFBMcGdTUUxfc3Rt dF9keW5mb3JzKSk7CisJCQkJCQkJbmV3ID0gcGFsbG9jMF9vYmplY3QoUExwZ1NRTF9zdG10 X2R5bmZvcnMpOwogCQkJCQkJCW5ldy0+Y21kX3R5cGUgPSBQTFBHU1FMX1NUTVRfRFlORk9S UzsKIAkJCQkJCQluZXctPnN0bXRpZCA9ICsrcGxwZ3NxbF9jdXJyX2NvbXBpbGUtPm5zdGF0 ZW1lbnRzOwogCQkJCQkJCWlmICgkMS5yb3cpCkBAIC0xNDI2LDcgKzE0MjYsNyBAQCBmb3Jf Y29udHJvbAkJOiBmb3JfdmFyaWFibGUgS19JTgogCQkJCQkJCVBMcGdTUUxfc3RtdF9mb3Jj ICpuZXc7CiAJCQkJCQkJUExwZ1NRTF92YXIJKmN1cnNvciA9IChQTHBnU1FMX3ZhciAqKSB5 eWx2YWwud2RhdHVtLmRhdHVtOwogCi0JCQkJCQkJbmV3ID0gKFBMcGdTUUxfc3RtdF9mb3Jj ICopIHBhbGxvYzAoc2l6ZW9mKFBMcGdTUUxfc3RtdF9mb3JjKSk7CisJCQkJCQkJbmV3ID0g cGFsbG9jMF9vYmplY3QoUExwZ1NRTF9zdG10X2ZvcmMpOwogCQkJCQkJCW5ldy0+Y21kX3R5 cGUgPSBQTFBHU1FMX1NUTVRfRk9SQzsKIAkJCQkJCQluZXctPnN0bXRpZCA9ICsrcGxwZ3Nx bF9jdXJyX2NvbXBpbGUtPm5zdGF0ZW1lbnRzOwogCQkJCQkJCW5ldy0+Y3VydmFyID0gY3Vy c29yLT5kbm87CkBAIC0xNTQ1LDcgKzE1NDUsNyBAQCBmb3JfY29udHJvbAkJOiBmb3JfdmFy aWFibGUgS19JTgogCQkJCQkJCQkJCQkJCQkJCQkJCQkgIE5VTEwpLAogCQkJCQkJCQkJCQkJ CQkgICB0cnVlKTsKIAotCQkJCQkJCQluZXcgPSBwYWxsb2MwKHNpemVvZihQTHBnU1FMX3N0 bXRfZm9yaSkpOworCQkJCQkJCQluZXcgPSBwYWxsb2MwX29iamVjdChQTHBnU1FMX3N0bXRf Zm9yaSk7CiAJCQkJCQkJCW5ldy0+Y21kX3R5cGUgPSBQTFBHU1FMX1NUTVRfRk9SSTsKIAkJ CQkJCQkJbmV3LT5zdG10aWQJPSArK3BscGdzcWxfY3Vycl9jb21waWxlLT5uc3RhdGVtZW50 czsKIAkJCQkJCQkJbmV3LT52YXIgPSBmdmFyOwpAQCAtMTU3Myw3ICsxNTczLDcgQEAgZm9y X2NvbnRyb2wJCTogZm9yX3ZhcmlhYmxlIEtfSU4KIAkJCQkJCQkJY2hlY2tfc3FsX2V4cHIo ZXhwcjEtPnF1ZXJ5LCBleHByMS0+cGFyc2VNb2RlLAogCQkJCQkJCQkJCQkgICBleHByMWxv YywgeXlzY2FubmVyKTsKIAotCQkJCQkJCQluZXcgPSBwYWxsb2MwKHNpemVvZihQTHBnU1FM X3N0bXRfZm9ycykpOworCQkJCQkJCQluZXcgPSBwYWxsb2MwX29iamVjdChQTHBnU1FMX3N0 bXRfZm9ycyk7CiAJCQkJCQkJCW5ldy0+Y21kX3R5cGUgPSBQTFBHU1FMX1NUTVRfRk9SUzsK IAkJCQkJCQkJbmV3LT5zdG10aWQgPSArK3BscGdzcWxfY3Vycl9jb21waWxlLT5uc3RhdGVt ZW50czsKIAkJCQkJCQkJaWYgKCQxLnJvdykKQEAgLTE2NzUsNyArMTY3NSw3IEBAIHN0bXRf Zm9yZWFjaF9hCTogb3B0X2xvb3BfbGFiZWwgS19GT1JFQUNIIGZvcl92YXJpYWJsZSBmb3Jl YWNoX3NsaWNlIEtfSU4gS19BUlJBCiAJCQkJCXsKIAkJCQkJCVBMcGdTUUxfc3RtdF9mb3Jl YWNoX2EgKm5ldzsKIAotCQkJCQkJbmV3ID0gcGFsbG9jMChzaXplb2YoUExwZ1NRTF9zdG10 X2ZvcmVhY2hfYSkpOworCQkJCQkJbmV3ID0gcGFsbG9jMF9vYmplY3QoUExwZ1NRTF9zdG10 X2ZvcmVhY2hfYSk7CiAJCQkJCQluZXctPmNtZF90eXBlID0gUExQR1NRTF9TVE1UX0ZPUkVB Q0hfQTsKIAkJCQkJCW5ldy0+bGluZW5vID0gcGxwZ3NxbF9sb2NhdGlvbl90b19saW5lbm8o QDIsIHl5c2Nhbm5lcik7CiAJCQkJCQluZXctPnN0bXRpZCA9ICsrcGxwZ3NxbF9jdXJyX2Nv bXBpbGUtPm5zdGF0ZW1lbnRzOwpAQCAtMTcyMyw3ICsxNzIzLDcgQEAgc3RtdF9leGl0CQk6 IGV4aXRfdHlwZSBvcHRfbGFiZWwgb3B0X2V4aXRjb25kCiAJCQkJCXsKIAkJCQkJCVBMcGdT UUxfc3RtdF9leGl0ICpuZXc7CiAKLQkJCQkJCW5ldyA9IHBhbGxvYzAoc2l6ZW9mKFBMcGdT UUxfc3RtdF9leGl0KSk7CisJCQkJCQluZXcgPSBwYWxsb2MwX29iamVjdChQTHBnU1FMX3N0 bXRfZXhpdCk7CiAJCQkJCQluZXctPmNtZF90eXBlID0gUExQR1NRTF9TVE1UX0VYSVQ7CiAJ CQkJCQluZXctPnN0bXRpZCA9ICsrcGxwZ3NxbF9jdXJyX2NvbXBpbGUtPm5zdGF0ZW1lbnRz OwogCQkJCQkJbmV3LT5pc19leGl0ID0gJDE7CkBAIC0xODEzLDcgKzE4MTMsNyBAQCBzdG10 X3JhaXNlCQk6IEtfUkFJU0UKIAkJCQkJCVBMcGdTUUxfc3RtdF9yYWlzZSAqbmV3OwogCQkJ CQkJaW50CQkJdG9rOwogCi0JCQkJCQluZXcgPSBwYWxsb2Moc2l6ZW9mKFBMcGdTUUxfc3Rt dF9yYWlzZSkpOworCQkJCQkJbmV3ID0gcGFsbG9jX29iamVjdChQTHBnU1FMX3N0bXRfcmFp c2UpOwogCiAJCQkJCQluZXctPmNtZF90eXBlID0gUExQR1NRTF9TVE1UX1JBSVNFOwogCQkJ CQkJbmV3LT5saW5lbm8gPSBwbHBnc3FsX2xvY2F0aW9uX3RvX2xpbmVubyhAMSwgeXlzY2Fu bmVyKTsKQEAgLTE5NTksNyArMTk1OSw3IEBAIHN0bXRfYXNzZXJ0CQk6IEtfQVNTRVJUCiAJ CQkJCQlQTHBnU1FMX3N0bXRfYXNzZXJ0CSpuZXc7CiAJCQkJCQlpbnQJCQl0b2s7CiAKLQkJ CQkJCW5ldyA9IHBhbGxvYyhzaXplb2YoUExwZ1NRTF9zdG10X2Fzc2VydCkpOworCQkJCQkJ bmV3ID0gcGFsbG9jX29iamVjdChQTHBnU1FMX3N0bXRfYXNzZXJ0KTsKIAogCQkJCQkJbmV3 LT5jbWRfdHlwZSA9IFBMUEdTUUxfU1RNVF9BU1NFUlQ7CiAJCQkJCQluZXctPmxpbmVubyA9 IHBscGdzcWxfbG9jYXRpb25fdG9fbGluZW5vKEAxLCB5eXNjYW5uZXIpOwpAQCAtMjA0NSw3 ICsyMDQ1LDcgQEAgc3RtdF9keW5leGVjdXRlIDogS19FWEVDVVRFCiAJCQkJCQkJCQkJCQkg IE5VTEwsICZlbmR0b2tlbiwKIAkJCQkJCQkJCQkJCSAgJnl5bHZhbCwgJnl5bGxvYywgeXlz Y2FubmVyKTsKIAotCQkJCQkJbmV3ID0gcGFsbG9jKHNpemVvZihQTHBnU1FMX3N0bXRfZHlu ZXhlY3V0ZSkpOworCQkJCQkJbmV3ID0gcGFsbG9jX29iamVjdChQTHBnU1FMX3N0bXRfZHlu ZXhlY3V0ZSk7CiAJCQkJCQluZXctPmNtZF90eXBlID0gUExQR1NRTF9TVE1UX0RZTkVYRUNV VEU7CiAJCQkJCQluZXctPmxpbmVubyA9IHBscGdzcWxfbG9jYXRpb25fdG9fbGluZW5vKEAx LCB5eXNjYW5uZXIpOwogCQkJCQkJbmV3LT5zdG10aWQgPSArK3BscGdzcWxfY3Vycl9jb21w aWxlLT5uc3RhdGVtZW50czsKQEAgLTIxMDMsNyArMjEwMyw3IEBAIHN0bXRfb3BlbgkJOiBL X09QRU4gY3Vyc29yX3ZhcmlhYmxlCiAJCQkJCQlQTHBnU1FMX3N0bXRfb3BlbiAqbmV3Owog CQkJCQkJaW50CQkJdG9rOwogCi0JCQkJCQluZXcgPSBwYWxsb2MwKHNpemVvZihQTHBnU1FM X3N0bXRfb3BlbikpOworCQkJCQkJbmV3ID0gcGFsbG9jMF9vYmplY3QoUExwZ1NRTF9zdG10 X29wZW4pOwogCQkJCQkJbmV3LT5jbWRfdHlwZSA9IFBMUEdTUUxfU1RNVF9PUEVOOwogCQkJ CQkJbmV3LT5saW5lbm8gPSBwbHBnc3FsX2xvY2F0aW9uX3RvX2xpbmVubyhAMSwgeXlzY2Fu bmVyKTsKIAkJCQkJCW5ldy0+c3RtdGlkID0gKytwbHBnc3FsX2N1cnJfY29tcGlsZS0+bnN0 YXRlbWVudHM7CkBAIC0yMjI5LDcgKzIyMjksNyBAQCBzdG10X2Nsb3NlCQk6IEtfQ0xPU0Ug Y3Vyc29yX3ZhcmlhYmxlICc7JwogCQkJCQl7CiAJCQkJCQlQTHBnU1FMX3N0bXRfY2xvc2Ug Km5ldzsKIAotCQkJCQkJbmV3ID0gcGFsbG9jKHNpemVvZihQTHBnU1FMX3N0bXRfY2xvc2Up KTsKKwkJCQkJCW5ldyA9IHBhbGxvY19vYmplY3QoUExwZ1NRTF9zdG10X2Nsb3NlKTsKIAkJ CQkJCW5ldy0+Y21kX3R5cGUgPSBQTFBHU1FMX1NUTVRfQ0xPU0U7CiAJCQkJCQluZXctPmxp bmVubyA9IHBscGdzcWxfbG9jYXRpb25fdG9fbGluZW5vKEAxLCB5eXNjYW5uZXIpOwogCQkJ CQkJbmV3LT5zdG10aWQgPSArK3BscGdzcWxfY3Vycl9jb21waWxlLT5uc3RhdGVtZW50czsK QEAgLTIyNTAsNyArMjI1MCw3IEBAIHN0bXRfY29tbWl0CQk6IEtfQ09NTUlUIG9wdF90cmFu c2FjdGlvbl9jaGFpbiAnOycKIAkJCQkJewogCQkJCQkJUExwZ1NRTF9zdG10X2NvbW1pdCAq bmV3OwogCi0JCQkJCQluZXcgPSBwYWxsb2Moc2l6ZW9mKFBMcGdTUUxfc3RtdF9jb21taXQp KTsKKwkJCQkJCW5ldyA9IHBhbGxvY19vYmplY3QoUExwZ1NRTF9zdG10X2NvbW1pdCk7CiAJ CQkJCQluZXctPmNtZF90eXBlID0gUExQR1NRTF9TVE1UX0NPTU1JVDsKIAkJCQkJCW5ldy0+ bGluZW5vID0gcGxwZ3NxbF9sb2NhdGlvbl90b19saW5lbm8oQDEsIHl5c2Nhbm5lcik7CiAJ CQkJCQluZXctPnN0bXRpZCA9ICsrcGxwZ3NxbF9jdXJyX2NvbXBpbGUtPm5zdGF0ZW1lbnRz OwpAQCAtMjI2NCw3ICsyMjY0LDcgQEAgc3RtdF9yb2xsYmFjawk6IEtfUk9MTEJBQ0sgb3B0 X3RyYW5zYWN0aW9uX2NoYWluICc7JwogCQkJCQl7CiAJCQkJCQlQTHBnU1FMX3N0bXRfcm9s bGJhY2sgKm5ldzsKIAotCQkJCQkJbmV3ID0gcGFsbG9jKHNpemVvZihQTHBnU1FMX3N0bXRf cm9sbGJhY2spKTsKKwkJCQkJCW5ldyA9IHBhbGxvY19vYmplY3QoUExwZ1NRTF9zdG10X3Jv bGxiYWNrKTsKIAkJCQkJCW5ldy0+Y21kX3R5cGUgPSBQTFBHU1FMX1NUTVRfUk9MTEJBQ0s7 CiAJCQkJCQluZXctPmxpbmVubyA9IHBscGdzcWxfbG9jYXRpb25fdG9fbGluZW5vKEAxLCB5 eXNjYW5uZXIpOwogCQkJCQkJbmV3LT5zdG10aWQgPSArK3BscGdzcWxfY3Vycl9jb21waWxl LT5uc3RhdGVtZW50czsKQEAgLTIzMjcsNyArMjMyNyw3IEBAIGV4Y2VwdGlvbl9zZWN0CToK IAkJCQkJCSAqIGN1cnJlbnQgYmxvY2suCiAJCQkJCQkgKi8KIAkJCQkJCWludAkJCWxpbmVu byA9IHBscGdzcWxfbG9jYXRpb25fdG9fbGluZW5vKEAxLCB5eXNjYW5uZXIpOwotCQkJCQkJ UExwZ1NRTF9leGNlcHRpb25fYmxvY2sgKm5ldyA9IHBhbGxvYyhzaXplb2YoUExwZ1NRTF9l eGNlcHRpb25fYmxvY2spKTsKKwkJCQkJCVBMcGdTUUxfZXhjZXB0aW9uX2Jsb2NrICpuZXcg PSBwYWxsb2Nfb2JqZWN0KFBMcGdTUUxfZXhjZXB0aW9uX2Jsb2NrKTsKIAkJCQkJCVBMcGdT UUxfdmFyaWFibGUgKnZhcjsKIAogCQkJCQkJcGxwZ3NxbF9jdXJyX2NvbXBpbGUtPmhhc19l eGNlcHRpb25fYmxvY2sgPSB0cnVlOwpAQCAtMjM3NSw3ICsyMzc1LDcgQEAgcHJvY19leGNl cHRpb24JOiBLX1dIRU4gcHJvY19jb25kaXRpb25zIEtfVEhFTiBwcm9jX3NlY3QKIAkJCQkJ ewogCQkJCQkJUExwZ1NRTF9leGNlcHRpb24gKm5ldzsKIAotCQkJCQkJbmV3ID0gcGFsbG9j MChzaXplb2YoUExwZ1NRTF9leGNlcHRpb24pKTsKKwkJCQkJCW5ldyA9IHBhbGxvYzBfb2Jq ZWN0KFBMcGdTUUxfZXhjZXB0aW9uKTsKIAkJCQkJCW5ldy0+bGluZW5vID0gcGxwZ3NxbF9s b2NhdGlvbl90b19saW5lbm8oQDEsIHl5c2Nhbm5lcik7CiAJCQkJCQluZXctPmNvbmRpdGlv bnMgPSAkMjsKIAkJCQkJCW5ldy0+YWN0aW9uID0gJDQ7CkBAIC0yNDIwLDcgKzI0MjAsNyBA QCBwcm9jX2NvbmRpdGlvbgk6IGFueV9pZGVudGlmaWVyCiAJCQkJCQkJCWlmIChzdHJzcG4o c3Fsc3RhdGVzdHIsICIwMTIzNDU2Nzg5QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVoiKSAh PSA1KQogCQkJCQkJCQkJeXllcnJvcigmeXlsbG9jLCBOVUxMLCB5eXNjYW5uZXIsICJpbnZh bGlkIFNRTFNUQVRFIGNvZGUiKTsKIAotCQkJCQkJCQluZXcgPSBwYWxsb2Moc2l6ZW9mKFBM cGdTUUxfY29uZGl0aW9uKSk7CisJCQkJCQkJCW5ldyA9IHBhbGxvY19vYmplY3QoUExwZ1NR TF9jb25kaXRpb24pOwogCQkJCQkJCQluZXctPnNxbGVycnN0YXRlID0KIAkJCQkJCQkJCU1B S0VfU1FMU1RBVEUoc3Fsc3RhdGVzdHJbMF0sCiAJCQkJCQkJCQkJCQkgIHNxbHN0YXRlc3Ry WzFdLApAQCAtMjY3MSw3ICsyNjcxLDcgQEAgc3RhdGljIFBMcGdTUUxfZXhwciAqCiBtYWtl X3BscGdzcWxfZXhwcihjb25zdCBjaGFyICpxdWVyeSwKIAkJCQkgIFJhd1BhcnNlTW9kZSBw YXJzZW1vZGUpCiB7Ci0JUExwZ1NRTF9leHByICpleHByID0gcGFsbG9jMChzaXplb2YoUExw Z1NRTF9leHByKSk7CisJUExwZ1NRTF9leHByICpleHByID0gcGFsbG9jMF9vYmplY3QoUExw Z1NRTF9leHByKTsKIAogCWV4cHItPnF1ZXJ5ID0gcHN0cmR1cChxdWVyeSk7CiAJZXhwci0+ cGFyc2VNb2RlID0gcGFyc2Vtb2RlOwpAQCAtMzE4MSw3ICszMTgxLDcgQEAgbWFrZV9leGVj c3FsX3N0bXQoaW50IGZpcnN0dG9rZW4sIGludCBsb2NhdGlvbiwgUEx3b3JkICp3b3JkLCBZ WVNUWVBFICp5eWx2YWxwLAogCiAJY2hlY2tfc3FsX2V4cHIoZXhwci0+cXVlcnksIGV4cHIt PnBhcnNlTW9kZSwgbG9jYXRpb24sIHl5c2Nhbm5lcik7CiAKLQlleGVjc3FsID0gcGFsbG9j MChzaXplb2YoUExwZ1NRTF9zdG10X2V4ZWNzcWwpKTsKKwlleGVjc3FsID0gcGFsbG9jMF9v YmplY3QoUExwZ1NRTF9zdG10X2V4ZWNzcWwpOwogCWV4ZWNzcWwtPmNtZF90eXBlID0gUExQ R1NRTF9TVE1UX0VYRUNTUUw7CiAJZXhlY3NxbC0+bGluZW5vID0gcGxwZ3NxbF9sb2NhdGlv bl90b19saW5lbm8obG9jYXRpb24sIHl5c2Nhbm5lcik7CiAJZXhlY3NxbC0+c3RtdGlkID0g KytwbHBnc3FsX2N1cnJfY29tcGlsZS0+bnN0YXRlbWVudHM7CkBAIC0zMjA4LDcgKzMyMDgs NyBAQCByZWFkX2ZldGNoX2RpcmVjdGlvbihZWVNUWVBFICp5eWx2YWxwLCBZWUxUWVBFICp5 eWxsb2NwLCB5eXNjYW5fdCB5eXNjYW5uZXIpCiAJICogV2UgY3JlYXRlIHRoZSBQTHBnU1FM X3N0bXRfZmV0Y2ggc3RydWN0IGhlcmUsIGJ1dCBvbmx5IGZpbGwgaW4gdGhlCiAJICogZmll bGRzIGFyaXNpbmcgZnJvbSB0aGUgb3B0aW9uYWwgZGlyZWN0aW9uIGNsYXVzZQogCSAqLwot CWZldGNoID0gKFBMcGdTUUxfc3RtdF9mZXRjaCAqKSBwYWxsb2MwKHNpemVvZihQTHBnU1FM X3N0bXRfZmV0Y2gpKTsKKwlmZXRjaCA9IChQTHBnU1FMX3N0bXRfZmV0Y2ggKikgcGFsbG9j MF9vYmplY3QoUExwZ1NRTF9zdG10X2ZldGNoKTsKIAlmZXRjaC0+Y21kX3R5cGUgPSBQTFBH U1FMX1NUTVRfRkVUQ0g7CiAJZmV0Y2gtPnN0bXRpZCA9ICsrcGxwZ3NxbF9jdXJyX2NvbXBp bGUtPm5zdGF0ZW1lbnRzOwogCS8qIHNldCBkaXJlY3Rpb24gZGVmYXVsdHM6ICovCkBAIC0z MzYwLDcgKzMzNjAsNyBAQCBtYWtlX3JldHVybl9zdG10KGludCBsb2NhdGlvbiwgWVlTVFlQ RSAqeXlsdmFscCwgWVlMVFlQRSAqeXlsbG9jcCwgeXlzY2FuX3QgeXlzYwogewogCVBMcGdT UUxfc3RtdF9yZXR1cm4gKm5ldzsKIAotCW5ldyA9IHBhbGxvYzAoc2l6ZW9mKFBMcGdTUUxf c3RtdF9yZXR1cm4pKTsKKwluZXcgPSBwYWxsb2MwX29iamVjdChQTHBnU1FMX3N0bXRfcmV0 dXJuKTsKIAluZXctPmNtZF90eXBlID0gUExQR1NRTF9TVE1UX1JFVFVSTjsKIAluZXctPmxp bmVubyA9IHBscGdzcWxfbG9jYXRpb25fdG9fbGluZW5vKGxvY2F0aW9uLCB5eXNjYW5uZXIp OwogCW5ldy0+c3RtdGlkID0gKytwbHBnc3FsX2N1cnJfY29tcGlsZS0+bnN0YXRlbWVudHM7 CkBAIC0zNDQ4LDcgKzM0NDgsNyBAQCBtYWtlX3JldHVybl9uZXh0X3N0bXQoaW50IGxvY2F0 aW9uLCBZWVNUWVBFICp5eWx2YWxwLCBZWUxUWVBFICp5eWxsb2NwLCB5eXNjYW5fdAogCQkJ CSBlcnJtc2coImNhbm5vdCB1c2UgUkVUVVJOIE5FWFQgaW4gYSBub24tU0VUT0YgZnVuY3Rp b24iKSwKIAkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKGxvY2F0aW9uKSkpOwogCi0JbmV3ID0g cGFsbG9jMChzaXplb2YoUExwZ1NRTF9zdG10X3JldHVybl9uZXh0KSk7CisJbmV3ID0gcGFs bG9jMF9vYmplY3QoUExwZ1NRTF9zdG10X3JldHVybl9uZXh0KTsKIAluZXctPmNtZF90eXBl ID0gUExQR1NRTF9TVE1UX1JFVFVSTl9ORVhUOwogCW5ldy0+bGluZW5vID0gcGxwZ3NxbF9s b2NhdGlvbl90b19saW5lbm8obG9jYXRpb24sIHl5c2Nhbm5lcik7CiAJbmV3LT5zdG10aWQg PSArK3BscGdzcWxfY3Vycl9jb21waWxlLT5uc3RhdGVtZW50czsKQEAgLTM1MTIsNyArMzUx Miw3IEBAIG1ha2VfcmV0dXJuX3F1ZXJ5X3N0bXQoaW50IGxvY2F0aW9uLCBZWVNUWVBFICp5 eWx2YWxwLCBZWUxUWVBFICp5eWxsb2NwLCB5eXNjYW5fCiAJCQkJIGVycm1zZygiY2Fubm90 IHVzZSBSRVRVUk4gUVVFUlkgaW4gYSBub24tU0VUT0YgZnVuY3Rpb24iKSwKIAkJCQkgcGFy c2VyX2VycnBvc2l0aW9uKGxvY2F0aW9uKSkpOwogCi0JbmV3ID0gcGFsbG9jMChzaXplb2Yo UExwZ1NRTF9zdG10X3JldHVybl9xdWVyeSkpOworCW5ldyA9IHBhbGxvYzBfb2JqZWN0KFBM cGdTUUxfc3RtdF9yZXR1cm5fcXVlcnkpOwogCW5ldy0+Y21kX3R5cGUgPSBQTFBHU1FMX1NU TVRfUkVUVVJOX1FVRVJZOwogCW5ldy0+bGluZW5vID0gcGxwZ3NxbF9sb2NhdGlvbl90b19s aW5lbm8obG9jYXRpb24sIHl5c2Nhbm5lcik7CiAJbmV3LT5zdG10aWQgPSArK3BscGdzcWxf Y3Vycl9jb21waWxlLT5uc3RhdGVtZW50czsKQEAgLTM3MDYsMTQgKzM3MDYsMTQgQEAgcmVh ZF9pbnRvX3NjYWxhcl9saXN0KGNoYXIgKmluaXRpYWxfbmFtZSwKIAkgKi8KIAlwbHBnc3Fs X3B1c2hfYmFja190b2tlbih0b2ssIHl5bHZhbHAsIHl5bGxvY3AsIHl5c2Nhbm5lcik7CiAK LQlyb3cgPSBwYWxsb2MwKHNpemVvZihQTHBnU1FMX3JvdykpOworCXJvdyA9IHBhbGxvYzBf b2JqZWN0KFBMcGdTUUxfcm93KTsKIAlyb3ctPmR0eXBlID0gUExQR1NRTF9EVFlQRV9ST1c7 CiAJcm93LT5yZWZuYW1lID0gIih1bm5hbWVkIHJvdykiOwogCXJvdy0+bGluZW5vID0gcGxw Z3NxbF9sb2NhdGlvbl90b19saW5lbm8oaW5pdGlhbF9sb2NhdGlvbiwgeXlzY2FubmVyKTsK IAlyb3ctPnJvd3R1cGRlc2MgPSBOVUxMOwogCXJvdy0+bmZpZWxkcyA9IG5maWVsZHM7Ci0J cm93LT5maWVsZG5hbWVzID0gcGFsbG9jKHNpemVvZihjaGFyICopICogbmZpZWxkcyk7Ci0J cm93LT52YXJub3MgPSBwYWxsb2Moc2l6ZW9mKGludCkgKiBuZmllbGRzKTsKKwlyb3ctPmZp ZWxkbmFtZXMgPSBwYWxsb2NfYXJyYXkoY2hhciAqLCBuZmllbGRzKTsKKwlyb3ctPnZhcm5v cyA9IHBhbGxvY19hcnJheShpbnQsIG5maWVsZHMpOwogCXdoaWxlICgtLW5maWVsZHMgPj0g MCkKIAl7CiAJCXJvdy0+ZmllbGRuYW1lc1tuZmllbGRzXSA9IGZpZWxkbmFtZXNbbmZpZWxk c107CkBAIC0zNzQxLDE0ICszNzQxLDE0IEBAIG1ha2Vfc2NhbGFyX2xpc3QxKGNoYXIgKmlu aXRpYWxfbmFtZSwKIAogCWNoZWNrX2Fzc2lnbmFibGUoaW5pdGlhbF9kYXR1bSwgbG9jYXRp b24sIHl5c2Nhbm5lcik7CiAKLQlyb3cgPSBwYWxsb2MwKHNpemVvZihQTHBnU1FMX3Jvdykp OworCXJvdyA9IHBhbGxvYzBfb2JqZWN0KFBMcGdTUUxfcm93KTsKIAlyb3ctPmR0eXBlID0g UExQR1NRTF9EVFlQRV9ST1c7CiAJcm93LT5yZWZuYW1lID0gIih1bm5hbWVkIHJvdykiOwog CXJvdy0+bGluZW5vID0gbGluZW5vOwogCXJvdy0+cm93dHVwZGVzYyA9IE5VTEw7CiAJcm93 LT5uZmllbGRzID0gMTsKLQlyb3ctPmZpZWxkbmFtZXMgPSBwYWxsb2Moc2l6ZW9mKGNoYXIg KikpOwotCXJvdy0+dmFybm9zID0gcGFsbG9jKHNpemVvZihpbnQpKTsKKwlyb3ctPmZpZWxk bmFtZXMgPSBwYWxsb2Nfb2JqZWN0KGNoYXIgKik7CisJcm93LT52YXJub3MgPSBwYWxsb2Nf b2JqZWN0KGludCk7CiAJcm93LT5maWVsZG5hbWVzWzBdID0gaW5pdGlhbF9uYW1lOwogCXJv dy0+dmFybm9zWzBdID0gaW5pdGlhbF9kYXR1bS0+ZG5vOwogCkBAIC0zOTU1LDcgKzM5NTUs NyBAQCByZWFkX2N1cnNvcl9hcmdzKFBMcGdTUUxfdmFyICpjdXJzb3IsIGludCB1bnRpbCwg WVlTVFlQRSAqeXlsdmFscCwgWVlMVFlQRSAqeXlsbAogCSAqIFJlYWQgdGhlIGFyZ3VtZW50 cywgb25lIGJ5IG9uZS4KIAkgKi8KIAlyb3cgPSAoUExwZ1NRTF9yb3cgKikgcGxwZ3NxbF9E YXR1bXNbY3Vyc29yLT5jdXJzb3JfZXhwbGljaXRfYXJncm93XTsKLQlhcmd2ID0gKGNoYXIg KiopIHBhbGxvYzAocm93LT5uZmllbGRzICogc2l6ZW9mKGNoYXIgKikpOworCWFyZ3YgPSAo Y2hhciAqKikgcGFsbG9jMF9hcnJheShjaGFyICosIHJvdy0+bmZpZWxkcyk7CiAKIAlmb3Ig KGFyZ2MgPSAwOyBhcmdjIDwgcm93LT5uZmllbGRzOyBhcmdjKyspCiAJewpAQCAtNDA5MSw3 ICs0MDkxLDcgQEAgcmVhZF9yYWlzZV9vcHRpb25zKFlZU1RZUEUgKnl5bHZhbHAsIFlZTFRZ UEUgKnl5bGxvY3AsIHl5c2Nhbl90IHl5c2Nhbm5lcikKIAkJaWYgKCh0b2sgPSB5eWxleCh5 eWx2YWxwLCB5eWxsb2NwLCB5eXNjYW5uZXIpKSA9PSAwKQogCQkJeXllcnJvcih5eWxsb2Nw LCBOVUxMLCB5eXNjYW5uZXIsICJ1bmV4cGVjdGVkIGVuZCBvZiBmdW5jdGlvbiBkZWZpbml0 aW9uIik7CiAKLQkJb3B0ID0gKFBMcGdTUUxfcmFpc2Vfb3B0aW9uICopIHBhbGxvYyhzaXpl b2YoUExwZ1NRTF9yYWlzZV9vcHRpb24pKTsKKwkJb3B0ID0gcGFsbG9jX29iamVjdChQTHBn U1FMX3JhaXNlX29wdGlvbik7CiAKIAkJaWYgKHRva19pc19rZXl3b3JkKHRvaywgeXlsdmFs cCwKIAkJCQkJCSAgIEtfRVJSQ09ERSwgImVycmNvZGUiKSkKQEAgLTQxODIsNyArNDE4Miw3 IEBAIG1ha2VfY2FzZShpbnQgbG9jYXRpb24sIFBMcGdTUUxfZXhwciAqdF9leHByLAogewog CVBMcGdTUUxfc3RtdF9jYXNlICpuZXc7CiAKLQluZXcgPSBwYWxsb2Moc2l6ZW9mKFBMcGdT UUxfc3RtdF9jYXNlKSk7CisJbmV3ID0gcGFsbG9jX29iamVjdChQTHBnU1FMX3N0bXRfY2Fz ZSk7CiAJbmV3LT5jbWRfdHlwZSA9IFBMUEdTUUxfU1RNVF9DQVNFOwogCW5ldy0+bGluZW5v ID0gcGxwZ3NxbF9sb2NhdGlvbl90b19saW5lbm8obG9jYXRpb24sIHl5c2Nhbm5lcik7CiAJ bmV3LT5zdG10aWQgPSArK3BscGdzcWxfY3Vycl9jb21waWxlLT5uc3RhdGVtZW50czsKZGlm ZiAtLWdpdCBhL3NyYy9wbC9wbHB5dGhvbi9wbHB5X3Byb2NlZHVyZS5jIGIvc3JjL3BsL3Bs cHl0aG9uL3BscHlfcHJvY2VkdXJlLmMKaW5kZXggNjU1YWIxZDA5ZWUuLjc1MGJhNTg2ZTBj IDEwMDY0NAotLS0gYS9zcmMvcGwvcGxweXRob24vcGxweV9wcm9jZWR1cmUuYworKysgYi9z cmMvcGwvcGxweXRob24vcGxweV9wcm9jZWR1cmUuYwpAQCAtMTc3LDcgKzE3Nyw3IEBAIFBM eV9wcm9jZWR1cmVfY3JlYXRlKEhlYXBUdXBsZSBwcm9jVHVwLCBPaWQgZm5fb2lkLCBQTHlU cmlnVHlwZSBpc190cmlnZ2VyKQogCiAJb2xkY3h0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRv KGN4dCk7CiAKLQlwcm9jID0gKFBMeVByb2NlZHVyZSAqKSBwYWxsb2MwKHNpemVvZihQTHlQ cm9jZWR1cmUpKTsKKwlwcm9jID0gcGFsbG9jMF9vYmplY3QoUEx5UHJvY2VkdXJlKTsKIAlw cm9jLT5tY3h0ID0gY3h0OwogCiAJUEdfVFJZKCk7CkBAIC0yOTMsOCArMjkzLDggQEAgUEx5 X3Byb2NlZHVyZV9jcmVhdGUoSGVhcFR1cGxlIHByb2NUdXAsIE9pZCBmbl9vaWQsIFBMeVRy aWdUeXBlIGlzX3RyaWdnZXIpCiAJCQl9CiAKIAkJCS8qIEFsbG9jYXRlIGFycmF5cyBmb3Ig cGVyLWlucHV0LWFyZ3VtZW50IGRhdGEgKi8KLQkJCXByb2MtPmFyZ25hbWVzID0gKGNoYXIg KiopIHBhbGxvYzAoc2l6ZW9mKGNoYXIgKikgKiBwcm9jLT5uYXJncyk7Ci0JCQlwcm9jLT5h cmdzID0gKFBMeURhdHVtVG9PYiAqKSBwYWxsb2MwKHNpemVvZihQTHlEYXR1bVRvT2IpICog cHJvYy0+bmFyZ3MpOworCQkJcHJvYy0+YXJnbmFtZXMgPSAoY2hhciAqKikgcGFsbG9jMF9h cnJheShjaGFyICosIHByb2MtPm5hcmdzKTsKKwkJCXByb2MtPmFyZ3MgPSAoUEx5RGF0dW1U b09iICopIHBhbGxvYzBfYXJyYXkoUEx5RGF0dW1Ub09iLCBwcm9jLT5uYXJncyk7CiAKIAkJ CWZvciAoaSA9IHBvcyA9IDA7IGkgPCB0b3RhbDsgaSsrKQogCQkJewpkaWZmIC0tZ2l0IGEv c3JjL3BsL3BscHl0aG9uL3BscHlfc3BpLmMgYi9zcmMvcGwvcGxweXRob24vcGxweV9zcGku YwppbmRleCAxZTM4NmFhZGNjYS4uNDZmMmNhMGY3OTIgMTAwNjQ0Ci0tLSBhL3NyYy9wbC9w bHB5dGhvbi9wbHB5X3NwaS5jCisrKyBiL3NyYy9wbC9wbHB5dGhvbi9wbHB5X3NwaS5jCkBA IC02NSw4ICs2NSw4IEBAIFBMeV9zcGlfcHJlcGFyZShQeU9iamVjdCAqc2VsZiwgUHlPYmpl Y3QgKmFyZ3MpCiAJbmFyZ3MgPSBsaXN0ID8gUHlTZXF1ZW5jZV9MZW5ndGgobGlzdCkgOiAw OwogCiAJcGxhbi0+bmFyZ3MgPSBuYXJnczsKLQlwbGFuLT50eXBlcyA9IG5hcmdzID8gcGFs bG9jMChzaXplb2YoT2lkKSAqIG5hcmdzKSA6IE5VTEw7Ci0JcGxhbi0+YXJncyA9IG5hcmdz ID8gcGFsbG9jMChzaXplb2YoUEx5T2JUb0RhdHVtKSAqIG5hcmdzKSA6IE5VTEw7CisJcGxh bi0+dHlwZXMgPSBuYXJncyA/IHBhbGxvYzBfYXJyYXkoT2lkLCBuYXJncykgOiBOVUxMOwor CXBsYW4tPmFyZ3MgPSBuYXJncyA/IHBhbGxvYzBfYXJyYXkoUEx5T2JUb0RhdHVtLCBuYXJn cykgOiBOVUxMOwogCiAJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOwogCmRp ZmYgLS1naXQgYS9zcmMvcGwvcGxweXRob24vcGxweV90eXBlaW8uYyBiL3NyYy9wbC9wbHB5 dGhvbi9wbHB5X3R5cGVpby5jCmluZGV4IGQ4OGQxMDA2OGYzLi4xZjY5MTA5YjA4MSAxMDA2 NDQKLS0tIGEvc3JjL3BsL3BscHl0aG9uL3BscHlfdHlwZWlvLmMKKysrIGIvc3JjL3BsL3Bs cHl0aG9uL3BscHlfdHlwZWlvLmMKQEAgLTEzNTMsOCArMTM1Myw4IEBAIFBMeU1hcHBpbmdf VG9Db21wb3NpdGUoUEx5T2JUb0RhdHVtICphcmcsIFR1cGxlRGVzYyBkZXNjLCBQeU9iamVj dCAqbWFwcGluZykKIAlBc3NlcnQoUHlNYXBwaW5nX0NoZWNrKG1hcHBpbmcpKTsKIAogCS8q IEJ1aWxkIHR1cGxlICovCi0JdmFsdWVzID0gcGFsbG9jKHNpemVvZihEYXR1bSkgKiBkZXNj LT5uYXR0cyk7Ci0JbnVsbHMgPSBwYWxsb2Moc2l6ZW9mKGJvb2wpICogZGVzYy0+bmF0dHMp OworCXZhbHVlcyA9IHBhbGxvY19hcnJheShEYXR1bSwgZGVzYy0+bmF0dHMpOworCW51bGxz ID0gcGFsbG9jX2FycmF5KGJvb2wsIGRlc2MtPm5hdHRzKTsKIAlmb3IgKGkgPSAwOyBpIDwg ZGVzYy0+bmF0dHM7ICsraSkKIAl7CiAJCWNoYXIJICAgKmtleTsKQEAgLTE0MzUsOCArMTQz NSw4IEBAIFBMeVNlcXVlbmNlX1RvQ29tcG9zaXRlKFBMeU9iVG9EYXR1bSAqYXJnLCBUdXBs ZURlc2MgZGVzYywgUHlPYmplY3QgKnNlcXVlbmNlKQogCQkJCSBlcnJtc2coImxlbmd0aCBv ZiByZXR1cm5lZCBzZXF1ZW5jZSBkaWQgbm90IG1hdGNoIG51bWJlciBvZiBjb2x1bW5zIGlu IHJvdyIpKSk7CiAKIAkvKiBCdWlsZCB0dXBsZSAqLwotCXZhbHVlcyA9IHBhbGxvYyhzaXpl b2YoRGF0dW0pICogZGVzYy0+bmF0dHMpOwotCW51bGxzID0gcGFsbG9jKHNpemVvZihib29s KSAqIGRlc2MtPm5hdHRzKTsKKwl2YWx1ZXMgPSBwYWxsb2NfYXJyYXkoRGF0dW0sIGRlc2Mt Pm5hdHRzKTsKKwludWxscyA9IHBhbGxvY19hcnJheShib29sLCBkZXNjLT5uYXR0cyk7CiAJ aWR4ID0gMDsKIAlmb3IgKGkgPSAwOyBpIDwgZGVzYy0+bmF0dHM7ICsraSkKIAl7CkBAIC0x NDkzLDggKzE0OTMsOCBAQCBQTHlHZW5lcmljT2JqZWN0X1RvQ29tcG9zaXRlKFBMeU9iVG9E YXR1bSAqYXJnLCBUdXBsZURlc2MgZGVzYywgUHlPYmplY3QgKm9iamVjdAogCXZvbGF0aWxl IGludCBpOwogCiAJLyogQnVpbGQgdHVwbGUgKi8KLQl2YWx1ZXMgPSBwYWxsb2Moc2l6ZW9m KERhdHVtKSAqIGRlc2MtPm5hdHRzKTsKLQludWxscyA9IHBhbGxvYyhzaXplb2YoYm9vbCkg KiBkZXNjLT5uYXR0cyk7CisJdmFsdWVzID0gcGFsbG9jX2FycmF5KERhdHVtLCBkZXNjLT5u YXR0cyk7CisJbnVsbHMgPSBwYWxsb2NfYXJyYXkoYm9vbCwgZGVzYy0+bmF0dHMpOwogCWZv ciAoaSA9IDA7IGkgPCBkZXNjLT5uYXR0czsgKytpKQogCXsKIAkJY2hhcgkgICAqa2V5Owpk aWZmIC0tZ2l0IGEvc3JjL3BsL3RjbC9wbHRjbC5jIGIvc3JjL3BsL3RjbC9wbHRjbC5jCmlu ZGV4IDczZDY2MGU4OGE2Li4xODc2OThjY2RkMiAxMDA2NDQKLS0tIGEvc3JjL3BsL3RjbC9w bHRjbC5jCisrKyBiL3NyYy9wbC90Y2wvcGx0Y2wuYwpAQCAtMTU4Niw3ICsxNTg2LDcgQEAg Y29tcGlsZV9wbHRjbF9mdW5jdGlvbihPaWQgZm5fb2lkLCBPaWQgdGdyZWxvaWQsCiAJCSAq IHN0cnVjdCBwcm9kZXNjIGFuZCBzdWJzaWRpYXJ5IGRhdGEgbXVzdCBhbGwgbGl2ZSBpbiBw cm9jX2N4dC4KIAkJICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKi8KIAkJb2xkY29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0 Y2hUbyhwcm9jX2N4dCk7Ci0JCXByb2Rlc2MgPSAocGx0Y2xfcHJvY19kZXNjICopIHBhbGxv YzAoc2l6ZW9mKHBsdGNsX3Byb2NfZGVzYykpOworCQlwcm9kZXNjID0gcGFsbG9jMF9vYmpl Y3QocGx0Y2xfcHJvY19kZXNjKTsKIAkJcHJvZGVzYy0+dXNlcl9wcm9uYW1lID0gcHN0cmR1 cCh1c2VyX3Byb25hbWUpOwogCQlNZW1vcnlDb250ZXh0U2V0SWRlbnRpZmllcihwcm9jX2N4 dCwgcHJvZGVzYy0+dXNlcl9wcm9uYW1lKTsKIAkJcHJvZGVzYy0+aW50ZXJuYWxfcHJvbmFt ZSA9IHBzdHJkdXAoaW50ZXJuYWxfcHJvbmFtZSk7CkBAIC0yNjY4LDcgKzI2NjgsNyBAQCBw bHRjbF9TUElfcHJlcGFyZShDbGllbnREYXRhIGNkYXRhLCBUY2xfSW50ZXJwICppbnRlcnAs CiAJCQkJCQkJCQkgIlBML1RjbCBzcGlfcHJlcGFyZSBxdWVyeSIsCiAJCQkJCQkJCQkgQUxM T0NTRVRfU01BTExfU0laRVMpOwogCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhwbGFuX2N4dCk7 Ci0JcWRlc2MgPSAocGx0Y2xfcXVlcnlfZGVzYyAqKSBwYWxsb2MwKHNpemVvZihwbHRjbF9x dWVyeV9kZXNjKSk7CisJcWRlc2MgPSBwYWxsb2MwX29iamVjdChwbHRjbF9xdWVyeV9kZXNj KTsKIAlzbnByaW50ZihxZGVzYy0+cW5hbWUsIHNpemVvZihxZGVzYy0+cW5hbWUpLCAiJXAi LCBxZGVzYyk7CiAJcWRlc2MtPm5hcmdzID0gbmFyZ3M7CiAJcWRlc2MtPmFyZ3R5cGVzID0g KE9pZCAqKSBwYWxsb2MobmFyZ3MgKiBzaXplb2YoT2lkKSk7CmRpZmYgLS1naXQgYS9zcmMv dGVzdC9tb2R1bGVzL2R1bW15X2luZGV4X2FtL2R1bW15X2luZGV4X2FtLmMgYi9zcmMvdGVz dC9tb2R1bGVzL2R1bW15X2luZGV4X2FtL2R1bW15X2luZGV4X2FtLmMKaW5kZXggOTRlZjYz OWI2ZmMuLmEzNDM4MmE1Zjc5IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL2R1bW15 X2luZGV4X2FtL2R1bW15X2luZGV4X2FtLmMKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9kdW1t eV9pbmRleF9hbS9kdW1teV9pbmRleF9hbS5jCkBAIC0xMzgsNyArMTM4LDcgQEAgZGlidWls ZChSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwgSW5kZXhJbmZvICppbmRleEluZm8p CiB7CiAJSW5kZXhCdWlsZFJlc3VsdCAqcmVzdWx0OwogCi0JcmVzdWx0ID0gKEluZGV4QnVp bGRSZXN1bHQgKikgcGFsbG9jKHNpemVvZihJbmRleEJ1aWxkUmVzdWx0KSk7CisJcmVzdWx0 ID0gcGFsbG9jX29iamVjdChJbmRleEJ1aWxkUmVzdWx0KTsKIAogCS8qIGxldCdzIHByZXRl bmQgdGhhdCBubyB0dXBsZXMgd2VyZSBzY2FubmVkICovCiAJcmVzdWx0LT5oZWFwX3R1cGxl cyA9IDA7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3NwZ2lzdF9uYW1lX29wcy9z cGdpc3RfbmFtZV9vcHMuYyBiL3NyYy90ZXN0L21vZHVsZXMvc3BnaXN0X25hbWVfb3BzL3Nw Z2lzdF9uYW1lX29wcy5jCmluZGV4IDM4ZTU0ZTBlMGE0Li5mMzJkZmIzMTdmYSAxMDA2NDQK LS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy9zcGdpc3RfbmFtZV9vcHMvc3BnaXN0X25hbWVfb3Bz LmMKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9zcGdpc3RfbmFtZV9vcHMvc3BnaXN0X25hbWVf b3BzLmMKQEAgLTE3MSw3ICsxNzEsNyBAQCBzcGdpc3RfbmFtZV9jaG9vc2UoUEdfRlVOQ1RJ T05fQVJHUykKIAkJCX0KIAkJCW91dC0+cmVzdWx0LnNwbGl0VHVwbGUucHJlZml4Tk5vZGVz ID0gMTsKIAkJCW91dC0+cmVzdWx0LnNwbGl0VHVwbGUucHJlZml4Tm9kZUxhYmVscyA9Ci0J CQkJKERhdHVtICopIHBhbGxvYyhzaXplb2YoRGF0dW0pKTsKKwkJCQlwYWxsb2Nfb2JqZWN0 KERhdHVtKTsKIAkJCW91dC0+cmVzdWx0LnNwbGl0VHVwbGUucHJlZml4Tm9kZUxhYmVsc1sw XSA9CiAJCQkJSW50MTZHZXREYXR1bSgqKHVuc2lnbmVkIGNoYXIgKikgKHByZWZpeFN0ciAr IGNvbW1vbkxlbikpOwogCkBAIC0yNDMsNyArMjQzLDcgQEAgc3BnaXN0X25hbWVfY2hvb3Nl KFBHX0ZVTkNUSU9OX0FSR1MpCiAJCW91dC0+cmVzdWx0LnNwbGl0VHVwbGUucHJlZml4SGFz UHJlZml4ID0gaW4tPmhhc1ByZWZpeDsKIAkJb3V0LT5yZXN1bHQuc3BsaXRUdXBsZS5wcmVm aXhQcmVmaXhEYXR1bSA9IGluLT5wcmVmaXhEYXR1bTsKIAkJb3V0LT5yZXN1bHQuc3BsaXRU dXBsZS5wcmVmaXhOTm9kZXMgPSAxOwotCQlvdXQtPnJlc3VsdC5zcGxpdFR1cGxlLnByZWZp eE5vZGVMYWJlbHMgPSAoRGF0dW0gKikgcGFsbG9jKHNpemVvZihEYXR1bSkpOworCQlvdXQt PnJlc3VsdC5zcGxpdFR1cGxlLnByZWZpeE5vZGVMYWJlbHMgPSBwYWxsb2Nfb2JqZWN0KERh dHVtKTsKIAkJb3V0LT5yZXN1bHQuc3BsaXRUdXBsZS5wcmVmaXhOb2RlTGFiZWxzWzBdID0g SW50MTZHZXREYXR1bSgtMik7CiAJCW91dC0+cmVzdWx0LnNwbGl0VHVwbGUuY2hpbGROb2Rl TiA9IDA7CiAJCW91dC0+cmVzdWx0LnNwbGl0VHVwbGUucG9zdGZpeEhhc1ByZWZpeCA9IGZh bHNlOwpAQCAtMzE4LDkgKzMxOCw5IEBAIHNwZ2lzdF9uYW1lX2lubmVyX2NvbnNpc3RlbnQo UEdfRlVOQ1RJT05fQVJHUykKIAkgKiBhbmQgc2VlIGlmIGl0J3MgY29uc2lzdGVudCB3aXRo IHRoZSBxdWVyeS4gIElmIHNvLCBlbWl0IGFuIGVudHJ5IGludG8KIAkgKiB0aGUgb3V0cHV0 IGFycmF5cy4KIAkgKi8KLQlvdXQtPm5vZGVOdW1iZXJzID0gKGludCAqKSBwYWxsb2Moc2l6 ZW9mKGludCkgKiBpbi0+bk5vZGVzKTsKLQlvdXQtPmxldmVsQWRkcyA9IChpbnQgKikgcGFs bG9jKHNpemVvZihpbnQpICogaW4tPm5Ob2Rlcyk7Ci0Jb3V0LT5yZWNvbnN0cnVjdGVkVmFs dWVzID0gKERhdHVtICopIHBhbGxvYyhzaXplb2YoRGF0dW0pICogaW4tPm5Ob2Rlcyk7CisJ b3V0LT5ub2RlTnVtYmVycyA9IHBhbGxvY19hcnJheShpbnQsIGluLT5uTm9kZXMpOworCW91 dC0+bGV2ZWxBZGRzID0gcGFsbG9jX2FycmF5KGludCwgaW4tPm5Ob2Rlcyk7CisJb3V0LT5y ZWNvbnN0cnVjdGVkVmFsdWVzID0gcGFsbG9jX2FycmF5KERhdHVtLCBpbi0+bk5vZGVzKTsK IAlvdXQtPm5Ob2RlcyA9IDA7CiAKIAlmb3IgKGkgPSAwOyBpIDwgaW4tPm5Ob2RlczsgaSsr KQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2JpdG1hcHNldC90ZXN0X2Jp dG1hcHNldC5jIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2JpdG1hcHNldC90ZXN0X2JpdG1h cHNldC5jCmluZGV4IDgxNjIyODVmY2IzLi42OTM4M2E5OGUzNyAxMDA2NDQKLS0tIGEvc3Jj L3Rlc3QvbW9kdWxlcy90ZXN0X2JpdG1hcHNldC90ZXN0X2JpdG1hcHNldC5jCisrKyBiL3Ny Yy90ZXN0L21vZHVsZXMvdGVzdF9iaXRtYXBzZXQvdGVzdF9iaXRtYXBzZXQuYwpAQCAtNjIy LDcgKzYyMiw3IEBAIHRlc3RfcmFuZG9tX29wZXJhdGlvbnMoUEdfRlVOQ1RJT05fQVJHUykK IAkgKiBzdGlsbCBwb3NzaWJsZSBpZiBhbGwgdGhlIG9wZXJhdGlvbnMgaGl0IHRoZSAiMCIg Y2FzZSBkdXJpbmcgcGhhc2UgNAogCSAqIHdoZXJlIG11bHRpcGxlIG9wZXJhdGlvbiB0eXBl cyBhcmUgbWl4ZWQgdG9nZXRoZXIuCiAJICovCi0JbWVtYmVycyA9IHBhbGxvYyhzaXplb2Yo aW50KSAqIG51bV9vcHMpOworCW1lbWJlcnMgPSBwYWxsb2NfYXJyYXkoaW50LCBudW1fb3Bz KTsKIAogCS8qIFBoYXNlIDE6IFJhbmRvbSBpbnNlcnRpb25zIGluIGZpcnN0IHNldCAqLwog CWZvciAoaW50IGkgPSAwOyBpIDwgbnVtX29wcyAvIDI7IGkrKykKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L21vZHVsZXMvdGVzdF9pbnRlZ2Vyc2V0L3Rlc3RfaW50ZWdlcnNldC5jIGIvc3Jj L3Rlc3QvbW9kdWxlcy90ZXN0X2ludGVnZXJzZXQvdGVzdF9pbnRlZ2Vyc2V0LmMKaW5kZXgg Y2ZkYzY3NjI3ODUuLjdhYzFmZTZjYjIzIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVz L3Rlc3RfaW50ZWdlcnNldC90ZXN0X2ludGVnZXJzZXQuYworKysgYi9zcmMvdGVzdC9tb2R1 bGVzL3Rlc3RfaW50ZWdlcnNldC90ZXN0X2ludGVnZXJzZXQuYwpAQCAtMzg1LDcgKzM4NSw3 IEBAIHRlc3Rfc2luZ2xlX3ZhbHVlX2FuZF9maWxsZXIodWludDY0IHZhbHVlLCB1aW50NjQg ZmlsbGVyX21pbiwgdWludDY0IGZpbGxlcl9tYXgpCiAKIAlpbnRzZXQgPSBpbnRzZXRfY3Jl YXRlKCk7CiAKLQlpdGVyX2V4cGVjdGVkID0gcGFsbG9jKHNpemVvZih1aW50NjQpICogKGZp bGxlcl9tYXggLSBmaWxsZXJfbWluICsgMSkpOworCWl0ZXJfZXhwZWN0ZWQgPSBwYWxsb2Nf YXJyYXkodWludDY0LCBmaWxsZXJfbWF4IC0gZmlsbGVyX21pbiArIDEpOwogCWlmICh2YWx1 ZSA8IGZpbGxlcl9taW4pCiAJewogCQlpbnRzZXRfYWRkX21lbWJlcihpbnRzZXQsIHZhbHVl KTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9qc29uX3BhcnNlci90ZXN0 X2pzb25fcGFyc2VyX2luY3JlbWVudGFsLmMgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfanNv bl9wYXJzZXIvdGVzdF9qc29uX3BhcnNlcl9pbmNyZW1lbnRhbC5jCmluZGV4IDhjNzgwNjFl ZTQ2Li5hOTVhYzc5ODQ4MSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2pz b25fcGFyc2VyL3Rlc3RfanNvbl9wYXJzZXJfaW5jcmVtZW50YWwuYworKysgYi9zcmMvdGVz dC9tb2R1bGVzL3Rlc3RfanNvbl9wYXJzZXIvdGVzdF9qc29uX3BhcnNlcl9pbmNyZW1lbnRh bC5jCkBAIC0xMjQsNyArMTI0LDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJ CQkJYnJlYWs7CiAJCQljYXNlICdzJzoJCQkvKiBkbyBzZW1hbnRpYyBwcm9jZXNzaW5nICov CiAJCQkJdGVzdHNlbSA9ICZzZW07Ci0JCQkJc2VtLnNlbXN0YXRlID0gcGFsbG9jKHNpemVv ZihzdHJ1Y3QgRG9TdGF0ZSkpOworCQkJCXNlbS5zZW1zdGF0ZSA9IHBhbGxvY19vYmplY3Qo c3RydWN0IERvU3RhdGUpOwogCQkJCSgoc3RydWN0IERvU3RhdGUgKikgc2VtLnNlbXN0YXRl KS0+bGV4ID0gbGV4OwogCQkJCSgoc3RydWN0IERvU3RhdGUgKikgc2VtLnNlbXN0YXRlKS0+ YnVmID0gbWFrZVN0cmluZ0luZm8oKTsKIAkJCQluZWVkX3N0cmluZ3MgPSB0cnVlOwpkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3BhcnNlci90ZXN0X3BhcnNlci5jIGIv c3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3BhcnNlci90ZXN0X3BhcnNlci5jCmluZGV4IDE1ZWQz NjE3Y2I1Li4zNTNmOTA3MjgxOSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0 X3BhcnNlci90ZXN0X3BhcnNlci5jCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9wYXJz ZXIvdGVzdF9wYXJzZXIuYwpAQCAtNDYsNyArNDYsNyBAQCBQR19GVU5DVElPTl9JTkZPX1Yx KHRlc3RwcnNfbGV4dHlwZSk7CiBEYXR1bQogdGVzdHByc19zdGFydChQR19GVU5DVElPTl9B UkdTKQogewotCVBhcnNlclN0YXRlICpwc3QgPSAoUGFyc2VyU3RhdGUgKikgcGFsbG9jMChz aXplb2YoUGFyc2VyU3RhdGUpKTsKKwlQYXJzZXJTdGF0ZSAqcHN0ID0gcGFsbG9jMF9vYmpl Y3QoUGFyc2VyU3RhdGUpOwogCiAJcHN0LT5idWZmZXIgPSAoY2hhciAqKSBQR19HRVRBUkdf UE9JTlRFUigwKTsKIAlwc3QtPmxlbiA9IFBHX0dFVEFSR19JTlQzMigxKTsKQEAgLTExMiw3 ICsxMTIsNyBAQCB0ZXN0cHJzX2xleHR5cGUoUEdfRlVOQ1RJT05fQVJHUykKIAkgKiB0aGUg c2FtZSBsZXhpZHMgbGlrZSBUZW9kb3IgaW4gdGhlIGRlZmF1bHQgd29yZCBwYXJzZXI7IGlu IHRoaXMgd2F5IHdlCiAJICogY2FuIHJldXNlIHRoZSBoZWFkbGluZSBmdW5jdGlvbiBvZiB0 aGUgZGVmYXVsdCB3b3JkIHBhcnNlci4KIAkgKi8KLQlMZXhEZXNjciAgICpkZXNjciA9IChM ZXhEZXNjciAqKSBwYWxsb2Moc2l6ZW9mKExleERlc2NyKSAqICgyICsgMSkpOworCUxleERl c2NyICAgKmRlc2NyID0gcGFsbG9jX2FycmF5KExleERlc2NyLCAyICsgMSk7CiAKIAkvKiB0 aGVyZSBhcmUgb25seSB0d28gdHlwZXMgaW4gdGhpcyBwYXJzZXIgKi8KIAlkZXNjclswXS5s ZXhpZCA9IDM7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfcmFkaXh0cmVl L3Rlc3RfcmFkaXh0cmVlLmMgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfcmFkaXh0cmVlL3Rl c3RfcmFkaXh0cmVlLmMKaW5kZXggNzg3MTYyYzg3OTMuLmRkZmNiMGM0YWM0IDEwMDY0NAot LS0gYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfcmFkaXh0cmVlL3Rlc3RfcmFkaXh0cmVlLmMK KysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3JhZGl4dHJlZS90ZXN0X3JhZGl4dHJlZS5j CkBAIC0xODMsNyArMTgzLDcgQEAgdGVzdF9iYXNpYyhydF9ub2RlX2NsYXNzX3Rlc3RfZWxl bSAqdGVzdF9pbmZvLCBpbnQgc2hpZnQsIGJvb2wgYXNjKQogCWVsb2coTk9USUNFLCAidGVz dGluZyBub2RlICVzIHdpdGggc2hpZnQgJWQgYW5kICVzIGtleXMiLAogCQkgdGVzdF9pbmZv LT5jbGFzc19uYW1lLCBzaGlmdCwgYXNjID8gImFzY2VuZGluZyIgOiAiZGVzY2VuZGluZyIp OwogCi0Ja2V5cyA9IHBhbGxvYyhzaXplb2YodWludDY0KSAqIGNoaWxkcmVuKTsKKwlrZXlz ID0gcGFsbG9jX2FycmF5KHVpbnQ2NCwgY2hpbGRyZW4pOwogCWZvciAoaW50IGkgPSAwOyBp IDwgY2hpbGRyZW47IGkrKykKIAl7CiAJCWlmIChhc2MpCmRpZmYgLS1naXQgYS9zcmMvdGVz dC9tb2R1bGVzL3Rlc3RfcmJ0cmVlL3Rlc3RfcmJ0cmVlLmMgYi9zcmMvdGVzdC9tb2R1bGVz L3Rlc3RfcmJ0cmVlL3Rlc3RfcmJ0cmVlLmMKaW5kZXggOTExM2YxYzhkNTIuLjc4N2MzYTYw NjA5IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfcmJ0cmVlL3Rlc3RfcmJ0 cmVlLmMKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3JidHJlZS90ZXN0X3JidHJlZS5j CkBAIC02Myw3ICs2Myw3IEBAIGlyYnRfY29tYmluZShSQlROb2RlICpleGlzdGluZywgY29u c3QgUkJUTm9kZSAqbmV3ZGF0YSwgdm9pZCAqYXJnKQogc3RhdGljIFJCVE5vZGUgKgogaXJi dF9hbGxvYyh2b2lkICphcmcpCiB7Ci0JcmV0dXJuIChSQlROb2RlICopIHBhbGxvYyhzaXpl b2YoSW50UkJUcmVlTm9kZSkpOworCXJldHVybiAmcGFsbG9jX29iamVjdChJbnRSQlRyZWVO b2RlKS0+cmJ0bm9kZTsKIH0KIAogLyogTm9kZSBmcmVlciAqLwpkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvbW9kdWxlcy90ZXN0X3JlZ2V4L3Rlc3RfcmVnZXguYyBiL3NyYy90ZXN0L21vZHVs ZXMvdGVzdF9yZWdleC90ZXN0X3JlZ2V4LmMKaW5kZXggMjU0OGEwZWY3YjEuLjY3NWE2Njc0 NzM2IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfcmVnZXgvdGVzdF9yZWdl eC5jCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9yZWdleC90ZXN0X3JlZ2V4LmMKQEAg LTEwNywxMCArMTA3LDggQEAgdGVzdF9yZWdleChQR19GVU5DVElPTl9BUkdTKQogCQkJCQkJ CQkJICB0cnVlKTsKIAogCQkvKiBQcmUtY3JlYXRlIHdvcmtzcGFjZSB0aGF0IGJ1aWxkX3Rl c3RfbWF0Y2hfcmVzdWx0IG5lZWRzICovCi0JCW1hdGNoY3R4LT5lbGVtcyA9IChEYXR1bSAq KSBwYWxsb2Moc2l6ZW9mKERhdHVtKSAqCi0JCQkJCQkJCQkJICAgKG1hdGNoY3R4LT5ucGF0 dGVybnMgKyAxKSk7Ci0JCW1hdGNoY3R4LT5udWxscyA9IChib29sICopIHBhbGxvYyhzaXpl b2YoYm9vbCkgKgotCQkJCQkJCQkJCSAgKG1hdGNoY3R4LT5ucGF0dGVybnMgKyAxKSk7CisJ CW1hdGNoY3R4LT5lbGVtcyA9IHBhbGxvY19hcnJheShEYXR1bSwgbWF0Y2hjdHgtPm5wYXR0 ZXJucyArIDEpOworCQltYXRjaGN0eC0+bnVsbHMgPSBwYWxsb2NfYXJyYXkoYm9vbCwgbWF0 Y2hjdHgtPm5wYXR0ZXJucyArIDEpOwogCiAJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRj b250ZXh0KTsKIAkJZnVuY2N0eC0+dXNlcl9mY3R4ID0gbWF0Y2hjdHg7CkBAIC00MzYsNyAr NDM0LDcgQEAgc2V0dXBfdGVzdF9tYXRjaGVzKHRleHQgKm9yaWdfc3RyLAogCQkJCSAgIE9p ZCBjb2xsYXRpb24sCiAJCQkJICAgYm9vbCB1c2Vfc3VicGF0dGVybnMpCiB7Ci0JdGVzdF9y ZWdleF9jdHggKm1hdGNoY3R4ID0gcGFsbG9jMChzaXplb2YodGVzdF9yZWdleF9jdHgpKTsK Kwl0ZXN0X3JlZ2V4X2N0eCAqbWF0Y2hjdHggPSBwYWxsb2MwX29iamVjdCh0ZXN0X3JlZ2V4 X2N0eCk7CiAJaW50CQkJZW1sID0gcGdfZGF0YWJhc2VfZW5jb2RpbmdfbWF4X2xlbmd0aCgp OwogCWludAkJCW9yaWdfbGVuOwogCXBnX3djaGFyICAgKndpZGVfc3RyOwpAQCAtNDU3LDcg KzQ1NSw3IEBAIHNldHVwX3Rlc3RfbWF0Y2hlcyh0ZXh0ICpvcmlnX3N0ciwKIAogCS8qIGNv bnZlcnQgc3RyaW5nIHRvIHBnX3djaGFyIGZvcm0gZm9yIG1hdGNoaW5nICovCiAJb3JpZ19s ZW4gPSBWQVJTSVpFX0FOWV9FWEhEUihvcmlnX3N0cik7Ci0Jd2lkZV9zdHIgPSAocGdfd2No YXIgKikgcGFsbG9jKHNpemVvZihwZ193Y2hhcikgKiAob3JpZ19sZW4gKyAxKSk7CisJd2lk ZV9zdHIgPSBwYWxsb2NfYXJyYXkocGdfd2NoYXIsIG9yaWdfbGVuICsgMSk7CiAJd2lkZV9s ZW4gPSBwZ19tYjJ3Y2hhcl93aXRoX2xlbihWQVJEQVRBX0FOWShvcmlnX3N0ciksIHdpZGVf c3RyLCBvcmlnX2xlbik7CiAKIAkvKiBkbyB3ZSB3YW50IHRvIHJlbWVtYmVyIHN1YnBhdHRl cm5zPyAqLwpAQCAtNDc0LDcgKzQ3Miw3IEBAIHNldHVwX3Rlc3RfbWF0Y2hlcyh0ZXh0ICpv cmlnX3N0ciwKIAl9CiAKIAkvKiB0ZW1wb3Jhcnkgb3V0cHV0IHNwYWNlIGZvciBSRSBwYWNr YWdlICovCi0JcG1hdGNoID0gcGFsbG9jKHNpemVvZihyZWdtYXRjaF90KSAqIHBtYXRjaF9s ZW4pOworCXBtYXRjaCA9IHBhbGxvY19hcnJheShyZWdtYXRjaF90LCBwbWF0Y2hfbGVuKTsg CiAKIAkvKgogCSAqIHRoZSByZWFsIG91dHB1dCBzcGFjZSAoZ3Jvd24gZHluYW1pY2FsbHkg aWYgbmVlZGVkKQpAQCAtNDgzLDcgKzQ4MSw3IEBAIHNldHVwX3Rlc3RfbWF0Y2hlcyh0ZXh0 ICpvcmlnX3N0ciwKIAkgKiB0aGFuIGF0IDJeMjcKIAkgKi8KIAlhcnJheV9sZW4gPSByZV9m bGFncy0+Z2xvYiA/IDI1NSA6IDMxOwotCW1hdGNoY3R4LT5tYXRjaF9sb2NzID0gKGludCAq KSBwYWxsb2Moc2l6ZW9mKGludCkgKiBhcnJheV9sZW4pOworCW1hdGNoY3R4LT5tYXRjaF9s b2NzID0gcGFsbG9jX2FycmF5KGludCwgYXJyYXlfbGVuKTsKIAlhcnJheV9pZHggPSAwOwog CiAJLyogc2VhcmNoIGZvciB0aGUgcGF0dGVybiwgcGVyaGFwcyByZXBlYXRlZGx5ICovCmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfcmVzb3duZXIvdGVzdF9yZXNvd25l cl9tYW55LmMgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfcmVzb3duZXIvdGVzdF9yZXNvd25l cl9tYW55LmMKaW5kZXggMWY2NDkzOTQwNGYuLmU0M2Y5MTEyNDRhIDEwMDY0NAotLS0gYS9z cmMvdGVzdC9tb2R1bGVzL3Rlc3RfcmVzb3duZXIvdGVzdF9yZXNvd25lcl9tYW55LmMKKysr IGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3Jlc293bmVyL3Rlc3RfcmVzb3duZXJfbWFueS5j CkBAIC0xMjEsNyArMTIxLDcgQEAgUmVtZW1iZXJNYW55VGVzdFJlc291cmNlcyhSZXNvdXJj ZU93bmVyIG93bmVyLAogCiAJZm9yIChpbnQgaSA9IDA7IGkgPCBucmVzb3VyY2VzOyBpKysp CiAJewotCQlNYW55VGVzdFJlc291cmNlICptcmVzID0gcGFsbG9jKHNpemVvZihNYW55VGVz dFJlc291cmNlKSk7CisJCU1hbnlUZXN0UmVzb3VyY2UgKm1yZXMgPSBwYWxsb2Nfb2JqZWN0 KE1hbnlUZXN0UmVzb3VyY2UpOwogCiAJCW1yZXMtPmtpbmQgPSAma2luZHNba2luZF9pZHhd OwogCQlkbGlzdF9ub2RlX2luaXQoJm1yZXMtPm5vZGUpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rl c3QvbW9kdWxlcy90ZXN0X3Jsc19ob29rcy90ZXN0X3Jsc19ob29rcy5jIGIvc3JjL3Rlc3Qv bW9kdWxlcy90ZXN0X3Jsc19ob29rcy90ZXN0X3Jsc19ob29rcy5jCmluZGV4IGIxZjE2MWNm N2JiLi44NjQ1M2Y5NjE0NyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3Js c19ob29rcy90ZXN0X3Jsc19ob29rcy5jCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9y bHNfaG9va3MvdGVzdF9ybHNfaG9va3MuYwpAQCAtNDQsNyArNDQsNyBAQCBMaXN0ICoKIHRl c3RfcmxzX2hvb2tzX3Blcm1pc3NpdmUoQ21kVHlwZSBjbWR0eXBlLCBSZWxhdGlvbiByZWxh dGlvbikKIHsKIAlMaXN0CSAgICpwb2xpY2llcyA9IE5JTDsKLQlSb3dTZWN1cml0eVBvbGlj eSAqcG9saWN5ID0gcGFsbG9jMChzaXplb2YoUm93U2VjdXJpdHlQb2xpY3kpKTsKKwlSb3dT ZWN1cml0eVBvbGljeSAqcG9saWN5ID0gcGFsbG9jMF9vYmplY3QoUm93U2VjdXJpdHlQb2xp Y3kpOwogCURhdHVtCQlyb2xlOwogCUZ1bmNDYWxsICAgKm47CiAJTm9kZQkgICAqZTsKQEAg LTExMiw3ICsxMTIsNyBAQCBMaXN0ICoKIHRlc3RfcmxzX2hvb2tzX3Jlc3RyaWN0aXZlKENt ZFR5cGUgY21kdHlwZSwgUmVsYXRpb24gcmVsYXRpb24pCiB7CiAJTGlzdAkgICAqcG9saWNp ZXMgPSBOSUw7Ci0JUm93U2VjdXJpdHlQb2xpY3kgKnBvbGljeSA9IHBhbGxvYzAoc2l6ZW9m KFJvd1NlY3VyaXR5UG9saWN5KSk7CisJUm93U2VjdXJpdHlQb2xpY3kgKnBvbGljeSA9IHBh bGxvYzBfb2JqZWN0KFJvd1NlY3VyaXR5UG9saWN5KTsKIAlEYXR1bQkJcm9sZTsKIAlGdW5j Q2FsbCAgICpuOwogCU5vZGUJICAgKmU7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVz L3dvcmtlcl9zcGkvd29ya2VyX3NwaS5jIGIvc3JjL3Rlc3QvbW9kdWxlcy93b3JrZXJfc3Bp L3dvcmtlcl9zcGkuYwppbmRleCBiZWE4MzM5ZjQ2NC4uMWEyMWI4Yzg4NzYgMTAwNjQ0Ci0t LSBhL3NyYy90ZXN0L21vZHVsZXMvd29ya2VyX3NwaS93b3JrZXJfc3BpLmMKKysrIGIvc3Jj L3Rlc3QvbW9kdWxlcy93b3JrZXJfc3BpL3dvcmtlcl9zcGkuYwpAQCAtMTQyLDcgKzE0Miw3 IEBAIHdvcmtlcl9zcGlfbWFpbihEYXR1bSBtYWluX2FyZykKIAljaGFyCSAgICpwOwogCWJp dHMzMgkJZmxhZ3MgPSAwOwogCi0JdGFibGUgPSBwYWxsb2Moc2l6ZW9mKHdvcmt0YWJsZSkp OworCXRhYmxlID0gcGFsbG9jX29iamVjdCh3b3JrdGFibGUpOwogCXNwcmludGYobmFtZSwg InNjaGVtYSVkIiwgaW5kZXgpOwogCXRhYmxlLT5zY2hlbWEgPSBwc3RyZHVwKG5hbWUpOwog CXRhYmxlLT5uYW1lID0gcHN0cmR1cCgiY291bnRlZCIpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rl c3QvcmVncmVzcy9yZWdyZXNzLmMgYi9zcmMvdGVzdC9yZWdyZXNzL3JlZ3Jlc3MuYwppbmRl eCA1NmNjMDU2N2IxYy4uYzI3MzA1Y2YxMGIgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jl c3MvcmVncmVzcy5jCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvcmVncmVzcy5jCkBAIC0xOTgs NyArMTk4LDcgQEAgd2lkZ2V0X2luKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQkJIGVycm1zZygi aW52YWxpZCBpbnB1dCBzeW50YXggZm9yIHR5cGUgJXM6IFwiJXNcIiIsCiAJCQkJCQkid2lk Z2V0Iiwgc3RyKSkpOwogCi0JcmVzdWx0ID0gKFdJREdFVCAqKSBwYWxsb2Moc2l6ZW9mKFdJ REdFVCkpOworCXJlc3VsdCA9IHBhbGxvY19vYmplY3QoV0lER0VUKTsKIAlyZXN1bHQtPmNl bnRlci54ID0gYXRvZihjb29yZFswXSk7CiAJcmVzdWx0LT5jZW50ZXIueSA9IGF0b2YoY29v cmRbMV0pOwogCXJlc3VsdC0+cmFkaXVzID0gYXRvZihjb29yZFsyXSk7CmRpZmYgLS1naXQg YS9zcmMvdGltZXpvbmUvcGd0ei5jIGIvc3JjL3RpbWV6b25lL3BndHouYwppbmRleCA1MDRj MDIzNWZmYi4uNTA1YTJkMzM4MzkgMTAwNjQ0Ci0tLSBhL3NyYy90aW1lem9uZS9wZ3R6LmMK KysrIGIvc3JjL3RpbWV6b25lL3BndHouYwpAQCAtMzk2LDcgKzM5Niw3IEBAIHN0cnVjdCBw Z190emVudW0KIHBnX3R6ZW51bSAqCiBwZ190emVudW1lcmF0ZV9zdGFydCh2b2lkKQogewot CXBnX3R6ZW51bSAgKnJldCA9IChwZ190emVudW0gKikgcGFsbG9jMChzaXplb2YocGdfdHpl bnVtKSk7CisJcGdfdHplbnVtICAqcmV0ID0gcGFsbG9jMF9vYmplY3QocGdfdHplbnVtKTsK IAljaGFyCSAgICpzdGFydGRpciA9IHBzdHJkdXAocGdfVFpESVIoKSk7CiAKIAlyZXQtPmJh c2VsZW4gPSBzdHJsZW4oc3RhcnRkaXIpICsgMTsKZGlmZiAtLWdpdCBhL3NyYy90dXRvcmlh bC9jb21wbGV4LmMgYi9zcmMvdHV0b3JpYWwvY29tcGxleC5jCmluZGV4IDY3OThhOWU2YmE2 Li40NmRjNTRlNjJkMCAxMDA2NDQKLS0tIGEvc3JjL3R1dG9yaWFsL2NvbXBsZXguYworKysg Yi9zcmMvdHV0b3JpYWwvY29tcGxleC5jCkBAIC00MSw3ICs0MSw3IEBAIGNvbXBsZXhfaW4o UEdfRlVOQ1RJT05fQVJHUykKIAkJCQkgZXJybXNnKCJpbnZhbGlkIGlucHV0IHN5bnRheCBm b3IgdHlwZSAlczogXCIlc1wiIiwKIAkJCQkJCSJjb21wbGV4Iiwgc3RyKSkpOwogCi0JcmVz dWx0ID0gKENvbXBsZXggKikgcGFsbG9jKHNpemVvZihDb21wbGV4KSk7CisJcmVzdWx0ID0g cGFsbG9jX29iamVjdChDb21wbGV4KTsKIAlyZXN1bHQtPnggPSB4OwogCXJlc3VsdC0+eSA9 IHk7CiAJUEdfUkVUVVJOX1BPSU5URVIocmVzdWx0KTsKQEAgLTczLDcgKzczLDcgQEAgY29t cGxleF9yZWN2KFBHX0ZVTkNUSU9OX0FSR1MpCiAJU3RyaW5nSW5mbwlidWYgPSAoU3RyaW5n SW5mbykgUEdfR0VUQVJHX1BPSU5URVIoMCk7CiAJQ29tcGxleCAgICAqcmVzdWx0OwogCi0J cmVzdWx0ID0gKENvbXBsZXggKikgcGFsbG9jKHNpemVvZihDb21wbGV4KSk7CisJcmVzdWx0 ID0gcGFsbG9jX29iamVjdChDb21wbGV4KTsKIAlyZXN1bHQtPnggPSBwcV9nZXRtc2dmbG9h dDgoYnVmKTsKIAlyZXN1bHQtPnkgPSBwcV9nZXRtc2dmbG9hdDgoYnVmKTsKIAlQR19SRVRV Uk5fUE9JTlRFUihyZXN1bHQpOwpAQCAtMTA4LDcgKzEwOCw3IEBAIGNvbXBsZXhfYWRkKFBH X0ZVTkNUSU9OX0FSR1MpCiAJQ29tcGxleCAgICAqYiA9IChDb21wbGV4ICopIFBHX0dFVEFS R19QT0lOVEVSKDEpOwogCUNvbXBsZXggICAgKnJlc3VsdDsKIAotCXJlc3VsdCA9IChDb21w bGV4ICopIHBhbGxvYyhzaXplb2YoQ29tcGxleCkpOworCXJlc3VsdCA9IHBhbGxvY19vYmpl Y3QoQ29tcGxleCk7CiAJcmVzdWx0LT54ID0gYS0+eCArIGItPng7CiAJcmVzdWx0LT55ID0g YS0+eSArIGItPnk7CiAJUEdfUkVUVVJOX1BPSU5URVIocmVzdWx0KTsKZGlmZiAtLWdpdCBh L3NyYy90dXRvcmlhbC9mdW5jcy5jIGIvc3JjL3R1dG9yaWFsL2Z1bmNzLmMKaW5kZXggM2Nj OTQ1MzQxODcuLjgwODgyY2YxNDE0IDEwMDY0NAotLS0gYS9zcmMvdHV0b3JpYWwvZnVuY3Mu YworKysgYi9zcmMvdHV0b3JpYWwvZnVuY3MuYwpAQCAtNTAsNyArNTAsNyBAQCBtYWtlcG9p bnQoUEdfRlVOQ1RJT05fQVJHUykKIHsKIAlQb2ludAkgICAqcG9pbnR4ID0gUEdfR0VUQVJH X1BPSU5UX1AoMCk7CiAJUG9pbnQJICAgKnBvaW50eSA9IFBHX0dFVEFSR19QT0lOVF9QKDEp OwotCVBvaW50CSAgICpuZXdfcG9pbnQgPSAoUG9pbnQgKikgcGFsbG9jKHNpemVvZihQb2lu dCkpOworCVBvaW50CSAgICpuZXdfcG9pbnQgPSBwYWxsb2Nfb2JqZWN0KFBvaW50KTsKIAog CW5ld19wb2ludC0+eCA9IHBvaW50eC0+eDsKIAluZXdfcG9pbnQtPnkgPSBwb2ludHktPnk7 Ci0tIAoyLjUxLjAKCg== --------------zk84nQkYWyEd1ikHs7MKd5aH--