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 1vzO5k-000xRI-2c for pgsql-hackers@arkaria.postgresql.org; Mon, 09 Mar 2026 00:03:25 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vzO5j-00CZOF-0c for pgsql-hackers@arkaria.postgresql.org; Mon, 09 Mar 2026 00:03:23 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vzO5i-00CZO6-27 for pgsql-hackers@lists.postgresql.org; Mon, 09 Mar 2026 00:03:23 +0000 Received: from mail-lf1-x134.google.com ([2a00:1450:4864:20::134]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1vzO5g-00000001hwO-0FMI for pgsql-hackers@lists.postgresql.org; Mon, 09 Mar 2026 00:03:22 +0000 Received: by mail-lf1-x134.google.com with SMTP id 2adb3069b0e04-5a13323ba85so4413865e87.3 for ; Sun, 08 Mar 2026 17:03:19 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1773014593; cv=none; d=google.com; s=arc-20240605; b=NC+4I20kGyL4rDVCsKgeEcMiNOG7KbOHBtylaawQFw3dbBnCXn/m+c1w/93iD8Bqo1 axP9oThU/GGZna6oXn4NEMgEYO4K5p9RjrT/oEHBRwaxn/ufB7Oo03keeVezWONHkTHz etUtJBFP24xYBEifyUO+nkgDs/07EMV7MAjlhCF8sas8DXIfW8RAEZWrmimRIAuIbnp8 5O+U+RvGw07y+WyfRWAkuobIQ9j98gwwzVZhYbez3xbPATU6wVfpu5mz7Ei03dbntalf k3N+StV3upZjyeUJQA06aHKdZUd9Q96+LGH1Gx8MwarwziJHw4P/ZMehymS1i6vOFPOo Rb7w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=1VJu666TiVwIUTklAXO2vBIoq2/qeJ8u5A0bxxVMxqM=; fh=uNlui2YEBCtEy2d3vA4RpK+pYZ1szBoDJllA5NTNn30=; b=DifygBnwDtd060NNwk1QYQG/R9a6Fo+ocJDO6WSF+m6rhnMfhnqeR8xMevKQeUTC/Q bEG3QRdHSjVgjSTvFN/3s+JAN6LpCACK9SUt5WbkIz2hvC5L0cFNH+5lzkCLbc+WeVKj /NLxwGzcYsNhCt9LH809i6ikQK4B1bo6Q8CUjBTjIccz3jjL9C/SEZQvKFbBOqNWRhmx Iqptnfjd/PqHVSv1iwd+65QtM3JDcEOqPTMEbza73lMgdmDyefmhbYSEf1yE0APqM/4w +f7pqUpxVrJA/ZQKJYWeXmpFFdQY2Z92uPUKkxjGQA/T0B8uRnfgAdhymAOJmrfVhC6t oHDw==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1773014593; x=1773619393; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=1VJu666TiVwIUTklAXO2vBIoq2/qeJ8u5A0bxxVMxqM=; b=Mx5r2mL5/Y/dPmhp9Hg1tGQCfSKk/1GE3e1YLjgRs0OASphvtwq18LziUjbiPO6gmv 1sMZhTUvSZrVO8LizrxATZeGlX933SzWQtw8dYlWhKnyBp7V6FxAQT+jg2P7ostVRhib aOs+7AoAiGPnkwkjcYKftSZ09cZQgATbfmLSeIVVxeFKHZlOcZwcDeU6NiKBoAtb7GHe XTJu6T65EpuLBl0yW3WSUkIog/7sdMYoLI3j1aouN8xuqWBzV2MemtcDQPGxjAcpAqPx sbbMp/BCCqmA5OIGZTBUxfR566AMj1I1pxObStu7qhsIqq+jRLSeNU2aZXuPQjcL1N/D 2IiA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1773014593; x=1773619393; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=1VJu666TiVwIUTklAXO2vBIoq2/qeJ8u5A0bxxVMxqM=; b=E9CaCgEXoSfYxv/kwrpDs3zvLHOSaI7joB4/8qE2nFG9j5CWR8WJURoLBmFrsQacAW 4t7d6ma46I9Yi+eIghOIyAo7i8BbMIUlIrQwg7QD96jb5GdbpJOB6qn6D8Ac6NnCmfrE ShatyORJhPkgzEKLkkRlcKEfpvc5WRv3mPC2LvlvRBBwOB3JMwhrc8/DBxdA4wFoFHrr Yt+f6+ZyXMNsiS/lXTWM5LM7sBgu3wwPm+PcclOs8HV8EgEPHotL5fLrM8OL305jlXB7 SyJPZKItSz9j+m2gYGkt1tyORf1PPYuBAMsxSBTYJZL9SIn+StaO/lslRmbhlh3STyxU fdVQ== X-Gm-Message-State: AOJu0Yyl9b0haokLis4DpC7XdTybLRBpTxOruU1dv9HKZdse45uAVn9O 2YdHtllA3eZqwNk002f2QB4YvZAFgAPa/ZJtZSo5wJAKqbXybpr8M3QOthlmee+saFYQ1tv3P2S JV0OmWffPUicDW4cfpBa0YFPYUvTSNvx6lw== X-Gm-Gg: ATEYQzxPvm2eu2TKtgVhO6kVhIWV7Xd6CDO3+AHCBoteif72BKk4/h+qQTToDsusD/A RVTjAGOvCtRgJ47uHwBqeN+j5Ag5VQBMV6lNwQabxpE0B0adPJnl3Ab5c4b6RSxSLg9z4Zk93ro 8yU6dqnxAv1WncFQIx3C5aeRiaVG69JGWb12VzBRcfLEcKqlpmjl2lis4TNyrUM8XZoIhVvP+Tn IJZqViXnsqwQ3ou10WnMLjyvm38TPD6ev5MAhnS/fqQEQFaUsdqnHou4/ZahPqcRaDyDNcBXz+z KG6dy7pCyy9CqUX3TixQyLZ5bh6yzjZOeA1aPZxBMKA4N6HdNjlD8/sOQ33/XU9NC6Af X-Received: by 2002:a05:6512:3994:b0:5a1:d06:573 with SMTP id 2adb3069b0e04-5a13cd1de01mr3582570e87.43.1773014593218; Sun, 08 Mar 2026 17:03:13 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Mihail Nikalayeu Date: Mon, 9 Mar 2026 01:03:00 +0100 X-Gm-Features: AaiRm52Bs76P1lPfLuUcac7Qb_qoY9KwVhpqXGnPes52oJZNEHJMuFxkNoO8E7s Message-ID: Subject: Re: Resetting snapshots during the first phase of [CREATE |RE]INDEX CONCURRENTLY To: PostgreSQL Hackers Cc: Matthias van de Meent , =?UTF-8?Q?=C3=81lvaro_Herrera?= , Antonin Houska , Sergey Sargsyan , Hannu Krosing Content-Type: multipart/mixed; boundary="00000000000002ed91064c8c21cc" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000002ed91064c8c21cc Content-Type: text/plain; charset="UTF-8" Hello, everyone! Rebased. --00000000000002ed91064c8c21cc Content-Type: application/x-patch; name="v2-0004-Support-snapshot-resets-in-concurrent-builds-of-u.patch" Content-Disposition: attachment; filename="v2-0004-Support-snapshot-resets-in-concurrent-builds-of-u.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmi3f2m10 RnJvbSBlNGYyMDczNTA2ODkzNjRmNmZiNGE1NTFmNzUxNjQ2MGUyN2YwM2VhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogV2VkLCAxNCBKYW4gMjAyNiAxOTowMjozNCArMDMwMApTdWJqZWN0OiBb UEFUQ0ggdjIgNC80XSBTdXBwb3J0IHNuYXBzaG90IHJlc2V0cyBpbiBjb25jdXJyZW50IGJ1aWxk cyBvZiB1bmlxdWUKIGluZGV4ZXMKClByZXZpb3VzbHksIGNvbmN1cnJlbnQgYnVpbGRzIG9mIHVu aXF1ZSBpbmRleCB1c2VkIGEgZml4ZWQgc25hcHNob3QgZm9yIHRoZSBlbnRpcmUgc2NhbiB0byBl bnN1cmUgcHJvcGVyIHVuaXF1ZW5lc3MgY2hlY2tzLgoKTm93IHJlc2V0IHNuYXBzaG90cyBwZXJp b2RpY2FsbHkgZHVyaW5nIGNvbmN1cnJlbnQgdW5pcXVlIGluZGV4IGJ1aWxkcywgd2hpbGUgc3Rp bGwgbWFpbnRhaW5pbmcgdW5pcXVlbmVzcyBieToKLSBpZ25vcmluZyBTbmFwc2hvdFNlbGYgZGVh ZCB0dXBsZXMgZHVyaW5nIHVuaXF1ZW5lc3MgY2hlY2tzIGluIHR1cGxlc29ydCBhcyBub3QgYSBn dWFyYW50ZWUsIGJ1dCBhIGZhaWwtZmFzdCBtZWNoYW5pY3MKLSBhZGRpbmcgYSB1bmlxdWVuZXNz IGNoZWNrIGluIF9idF9sb2FkIHRoYXQgZGV0ZWN0cyBtdWx0aXBsZSBhbGl2ZSB0dXBsZXMgd2l0 aCB0aGUgc2FtZSBrZXkgdmFsdWVzIGFzIGEgZ3VhcmFudGVlIG9mIGNvcnJlY3RuZXNzCgpUdXBs ZXMgYXJlIFNuYXBzaG90U2VsZiB0ZXN0ZWQgb25seSBpbiB0aGUgY2FzZSBvZiBlcXVhbCBpbmRl eCBrZXkgdmFsdWVzLCBvdGhlcndpc2UgX2J0X2xvYWQgd29ya3MgbGlrZSBiZWZvcmUuCi0tLQog c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvUkVBRE1FLkhPVCAgICAgICAgICAgIHwgIDEyICstCiBz cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jICAgICAgfCAgIDYgKy0KIHNy Yy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0ZGVkdXAuYyAgICAgICAgICB8ICAgOCArLQogc3Jj L2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRyZWFkcGFnZS5jICAgICAgIHwgICAyICstCiBzcmMv YmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQuYyAgICAgICAgICAgfCAxOTUgKysrKysrKysr KysrKystLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNwbGl0bG9jLmMgICAgICAg fCAgMTIgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0dXRpbHMuYyAgICAgICAgICB8 ICAzMCArKy0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYyAgICAgICAgICAgICAgICAgICB8 ICAgOCArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMgICAgICAgICAgICAgIHwg ICA0ICstCiBzcmMvYmFja2VuZC91dGlscy9zb3J0L3R1cGxlc29ydHZhcmlhbnRzLmMgICAgfCAg NzEgKysrKystLQogc3JjL2luY2x1ZGUvYWNjZXNzL25idHJlZS5oICAgICAgICAgICAgICAgICAg IHwgICA0ICstCiBzcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oICAgICAgICAgICAgICAgICAg fCAgIDIgKy0KIHNyYy9pbmNsdWRlL3V0aWxzL3R1cGxlc29ydC5oICAgICAgICAgICAgICAgICB8 ICAgMSArCiAuLi4vZXhwZWN0ZWQvY2ljX3Jlc2V0X3NuYXBzaG90cy5vdXQgICAgICAgICAgfCAg MzEgKystCiAxNCBmaWxlcyBjaGFuZ2VkLCAyOTAgaW5zZXJ0aW9ucygrKSwgOTYgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvUkVBRE1FLkhPVCBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5IT1QKaW5kZXggNzRlNDA3ZjM3NWEuLjgyOWRh ZDExOTRlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9SRUFETUUuSE9UCisr KyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5IT1QKQEAgLTM4NiwxMiArMzg2LDEy IEBAIGhhdmUgdGhlIEhPVC1zYWZldHkgcHJvcGVydHkgZW5mb3JjZWQgYmVmb3JlIHdlIHN0YXJ0 IHRvIGJ1aWxkIHRoZSBuZXcKIGluZGV4LgogCiBBZnRlciB3YWl0aW5nIGZvciB0cmFuc2FjdGlv bnMgd2hpY2ggaGFkIHRoZSB0YWJsZSBvcGVuLCB3ZSBidWlsZCB0aGUgaW5kZXgKLWZvciBhbGwg cm93cyB0aGF0IGFyZSB2YWxpZCBpbiBhIGZyZXNoIHNuYXBzaG90LiAgQW55IHR1cGxlcyB2aXNp YmxlIGluIHRoZQotc25hcHNob3Qgd2lsbCBoYXZlIG9ubHkgdmFsaWQgZm9yd2FyZC1ncm93aW5n IEhPVCBjaGFpbnMuICAoVGhleSBtaWdodCBoYXZlCi1vbGRlciBIT1QgdXBkYXRlcyBiZWhpbmQg dGhlbSB3aGljaCBhcmUgYnJva2VuLCBidXQgdGhpcyBpcyBPSyBmb3IgdGhlIHNhbWUKLXJlYXNv biBpdCdzIE9LIGluIGEgcmVndWxhciBpbmRleCBidWlsZC4pICBBcyBhYm92ZSwgd2UgcG9pbnQg dGhlIGluZGV4Ci1lbnRyeSBhdCB0aGUgcm9vdCBvZiB0aGUgSE9ULXVwZGF0ZSBjaGFpbiBidXQg d2UgdXNlIHRoZSBrZXkgdmFsdWUgZnJvbSB0aGUKLWxpdmUgdHVwbGUuCitmb3IgYWxsIHJvd3Mg dGhhdCBhcmUgdmFsaWQgaW4gYSBmcmVzaCBzbmFwc2hvdCwgd2hpY2ggaXMgdXBkYXRlZCBldmVy eSBzbworb2Z0ZW4uIEFueSB0dXBsZXMgdmlzaWJsZSBpbiB0aGUgc25hcHNob3Qgd2lsbCBoYXZl IG9ubHkgdmFsaWQgZm9yd2FyZC1ncm93aW5nCitIT1QgY2hhaW5zLiAgKFRoZXkgbWlnaHQgaGF2 ZSBvbGRlciBIT1QgdXBkYXRlcyBiZWhpbmQgdGhlbSB3aGljaCBhcmUgYnJva2VuLAorYnV0IHRo aXMgaXMgT0sgZm9yIHRoZSBzYW1lIHJlYXNvbiBpdCdzIE9LIGluIGEgcmVndWxhciBpbmRleCBi dWlsZC4pCitBcyBhYm92ZSwgd2UgcG9pbnQgdGhlIGluZGV4IGVudHJ5IGF0IHRoZSByb290IG9m IHRoZSBIT1QtdXBkYXRlIGNoYWluIGJ1dCB3ZQordXNlIHRoZSBrZXkgdmFsdWUgZnJvbSB0aGUg bGl2ZSB0dXBsZS4KIAogV2UgbWFyayB0aGUgaW5kZXggb3BlbiBmb3IgaW5zZXJ0cyAoYnV0IHN0 aWxsIG5vdCByZWFkeSBmb3IgcmVhZHMpIHRoZW4KIHdlIGFnYWluIHdhaXQgZm9yIHRyYW5zYWN0 aW9ucyB3aGljaCBoYXZlIHRoZSB0YWJsZSBvcGVuLiAgVGhlbiB3ZSB0YWtlCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYwppbmRleCAyNGE1NTRhMTBkNC4uNGJkMWVkZjg2 NWQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMK KysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYwpAQCAtMTI1Miwx NSArMTI1MiwxNSBAQCBoZWFwYW1faW5kZXhfYnVpbGRfcmFuZ2Vfc2NhbihSZWxhdGlvbiBoZWFw UmVsYXRpb24sCiAJICogcXVhbCBjaGVja3MgKGJlY2F1c2Ugd2UgaGF2ZSB0byBpbmRleCBSRUNF TlRMWV9ERUFEIHR1cGxlcykuIEluIGEKIAkgKiBjb25jdXJyZW50IGJ1aWxkLCBvciBkdXJpbmcg Ym9vdHN0cmFwLCB3ZSB0YWtlIGEgcmVndWxhciBNVkNDIHNuYXBzaG90CiAJICogYW5kIGluZGV4 IHdoYXRldmVyJ3MgbGl2ZSBhY2NvcmRpbmcgdG8gdGhhdCB3aGlsZSB0aGF0IHNuYXBzaG90IGlz IHJlc2V0Ci0JICogZXZlcnkgc28gb2Z0ZW4gKGluIGNhc2Ugb2Ygbm9uLXVuaXF1ZSBpbmRleCku CisJICogZXZlcnkgc28gb2Z0ZW4uCiAJICovCiAJT2xkZXN0WG1pbiA9IEludmFsaWRUcmFuc2Fj dGlvbklkOwogCiAJLyoKLQkgKiBGb3IgdW5pcXVlIGluZGV4IHdlIG5lZWQgY29uc2lzdGVudCBz bmFwc2hvdCBmb3IgdGhlIHdob2xlIHNjYW4uCisJICogRm9yIGNvbmN1cnJlbnQgYnVpbGRzIG9m IG5vbi1zeXN0ZW0gaW5kZXhlcywgd2UgbWF5IHdhbnQgdG8gcGVyaW9kaWNhbGx5CisJICogcmVz ZXQgc25hcHNob3RzIHRvIGFsbG93IHZhY3V1bSB0byBjbGVhbiB1cCB0dXBsZXMuCiAJICovCiAJ cmVzZXRfc25hcHNob3RzID0gaW5kZXhJbmZvLT5paV9Db25jdXJyZW50ICYmCi0JCQkJCSAgIWlu ZGV4SW5mby0+aWlfVW5pcXVlICYmCiAJCQkJCSAgIWlzX3N5c3RlbV9jYXRhbG9nOyAvKiBqdXN0 IGZvciB0aGUgY2FzZSAqLwogCiAJLyogb2theSB0byBpZ25vcmUgbGF6eSBWQUNVVU1zIGhlcmUg Ki8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0ZGVkdXAuYyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0ZGVkdXAuYwppbmRleCA5NWJlMGIxNzkzOS4uYmY4 Yzk2MTIxZTYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0ZGVkdXAu YworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idGRlZHVwLmMKQEAgLTE0OCw3ICsx NDgsNyBAQCBfYnRfZGVkdXBfcGFzcyhSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYsIEluZGV4VHVw bGUgbmV3aXRlbSwgU2l6ZSBuZXdpdGVtc3osCiAJCQlfYnRfZGVkdXBfc3RhcnRfcGVuZGluZyhz dGF0ZSwgaXR1cCwgb2ZmbnVtKTsKIAkJfQogCQllbHNlIGlmIChzdGF0ZS0+ZGVkdXBsaWNhdGUg JiYKLQkJCQkgX2J0X2tlZXBfbmF0dHNfZmFzdChyZWwsIHN0YXRlLT5iYXNlLCBpdHVwKSA+IG5r ZXlhdHRzICYmCisJCQkJIF9idF9rZWVwX25hdHRzX2Zhc3QocmVsLCBzdGF0ZS0+YmFzZSwgaXR1 cCwgTlVMTCkgPiBua2V5YXR0cyAmJgogCQkJCSBfYnRfZGVkdXBfc2F2ZV9odGlkKHN0YXRlLCBp dHVwKSkKIAkJewogCQkJLyoKQEAgLTM3NCw3ICszNzQsNyBAQCBfYnRfYm90dG9tdXBkZWxfcGFz cyhSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYsIFJlbGF0aW9uIGhlYXBSZWwsCiAJCQkvKiBpdHVw IHN0YXJ0cyBmaXJzdCBwZW5kaW5nIGludGVydmFsICovCiAJCQlfYnRfZGVkdXBfc3RhcnRfcGVu ZGluZyhzdGF0ZSwgaXR1cCwgb2ZmbnVtKTsKIAkJfQotCQllbHNlIGlmIChfYnRfa2VlcF9uYXR0 c19mYXN0KHJlbCwgc3RhdGUtPmJhc2UsIGl0dXApID4gbmtleWF0dHMgJiYKKwkJZWxzZSBpZiAo X2J0X2tlZXBfbmF0dHNfZmFzdChyZWwsIHN0YXRlLT5iYXNlLCBpdHVwLCBOVUxMKSA+IG5rZXlh dHRzICYmCiAJCQkJIF9idF9kZWR1cF9zYXZlX2h0aWQoc3RhdGUsIGl0dXApKQogCQl7CiAJCQkv KiBUdXBsZSBpcyBlcXVhbDsganVzdCBhZGRlZCBpdHMgVElEcyB0byBwZW5kaW5nIGludGVydmFs ICovCkBAIC03ODcsMTIgKzc4NywxMiBAQCBfYnRfZG9fc2luZ2xldmFsKFJlbGF0aW9uIHJlbCwg UGFnZSBwYWdlLCBCVERlZHVwU3RhdGUgc3RhdGUsCiAJaXRlbWlkID0gUGFnZUdldEl0ZW1JZChw YWdlLCBtaW5vZmYpOwogCWl0dXAgPSAoSW5kZXhUdXBsZSkgUGFnZUdldEl0ZW0ocGFnZSwgaXRl bWlkKTsKIAotCWlmIChfYnRfa2VlcF9uYXR0c19mYXN0KHJlbCwgbmV3aXRlbSwgaXR1cCkgPiBu a2V5YXR0cykKKwlpZiAoX2J0X2tlZXBfbmF0dHNfZmFzdChyZWwsIG5ld2l0ZW0sIGl0dXAsIE5V TEwpID4gbmtleWF0dHMpCiAJewogCQlpdGVtaWQgPSBQYWdlR2V0SXRlbUlkKHBhZ2UsIFBhZ2VH ZXRNYXhPZmZzZXROdW1iZXIocGFnZSkpOwogCQlpdHVwID0gKEluZGV4VHVwbGUpIFBhZ2VHZXRJ dGVtKHBhZ2UsIGl0ZW1pZCk7CiAKLQkJaWYgKF9idF9rZWVwX25hdHRzX2Zhc3QocmVsLCBuZXdp dGVtLCBpdHVwKSA+IG5rZXlhdHRzKQorCQlpZiAoX2J0X2tlZXBfbmF0dHNfZmFzdChyZWwsIG5l d2l0ZW0sIGl0dXAsIE5VTEwpID4gbmtleWF0dHMpCiAJCQlyZXR1cm4gdHJ1ZTsKIAl9CiAKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0cmVhZHBhZ2UuYyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0cmVhZHBhZ2UuYwppbmRleCAyYmExY2E2NjAyMy4uYzRj Mjc4ZTc3N2EgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0cmVhZHBh Z2UuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHJlYWRwYWdlLmMKQEAgLTYy Myw3ICs2MjMsNyBAQCBfYnRfc2V0X3N0YXJ0aWtleShJbmRleFNjYW5EZXNjIHNjYW4sIEJUUmVh ZFBhZ2VTdGF0ZSAqcHN0YXRlKQogCWxhc3R0dXAgPSAoSW5kZXhUdXBsZSkgUGFnZUdldEl0ZW0o cHN0YXRlLT5wYWdlLCBpaWQpOwogCiAJLyogRGV0ZXJtaW5lIHRoZSBmaXJzdCBhdHRyaWJ1dGUg d2hvc2UgdmFsdWVzIGNoYW5nZSBvbiBjYWxsZXIncyBwYWdlICovCi0JZmlyc3RjaGFuZ2luZ2F0 dG51bSA9IF9idF9rZWVwX25hdHRzX2Zhc3QocmVsLCBmaXJzdHR1cCwgbGFzdHR1cCk7CisJZmly c3RjaGFuZ2luZ2F0dG51bSA9IF9idF9rZWVwX25hdHRzX2Zhc3QocmVsLCBmaXJzdHR1cCwgbGFz dHR1cCwgTlVMTCk7CiAKIAlmb3IgKDsgc3RhcnRpa2V5IDwgc28tPm51bWJlck9mS2V5czsgc3Rh cnRpa2V5KyspCiAJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRz b3J0LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQuYwppbmRleCA5YzM5NWQx YWMzOC4uMjVkY2I5MTJhMzkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUv bmJ0c29ydC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jCkBAIC04 Niw2ICs4Niw3IEBAIHR5cGVkZWYgc3RydWN0IEJUU3Bvb2wKIAlSZWxhdGlvbglpbmRleDsKIAli b29sCQlpc3VuaXF1ZTsKIAlib29sCQludWxsc19ub3RfZGlzdGluY3Q7CisJYm9vbAkJdW5pcXVl X2RlYWRfaWdub3JlZDsKIH0gQlRTcG9vbDsKIAogLyoKQEAgLTEwNCw2ICsxMDUsNyBAQCB0eXBl ZGVmIHN0cnVjdCBCVFNoYXJlZAogCU9pZAkJCWluZGV4cmVsaWQ7CiAJYm9vbAkJaXN1bmlxdWU7 CiAJYm9vbAkJbnVsbHNfbm90X2Rpc3RpbmN0OworCWJvb2wJCXVuaXF1ZV9kZWFkX2lnbm9yZWQ7 CiAJYm9vbAkJaXNjb25jdXJyZW50OwogCWludAkJCXNjYW50dXBsZXNvcnRzdGF0ZXM7CiAKQEAg LTIwNiwxNSArMjA4LDEzIEBAIHR5cGVkZWYgc3RydWN0IEJUTGVhZGVyCiAgKi8KIHR5cGVkZWYg c3RydWN0IEJUQnVpbGRTdGF0ZQogewotCWJvb2wJCWlzdW5pcXVlOwotCWJvb2wJCW51bGxzX25v dF9kaXN0aW5jdDsKIAlib29sCQloYXZlZGVhZDsKIAlSZWxhdGlvbgloZWFwOwogCUJUU3Bvb2wg ICAgKnNwb29sOwogCiAJLyoKLQkgKiBzcG9vbDIgaXMgbmVlZGVkIG9ubHkgd2hlbiB0aGUgaW5k ZXggaXMgYSB1bmlxdWUgaW5kZXguIERlYWQgdHVwbGVzIGFyZQotCSAqIHB1dCBpbnRvIHNwb29s MiBpbnN0ZWFkIG9mIHNwb29sIGluIG9yZGVyIHRvIGF2b2lkIHVuaXF1ZW5lc3MgY2hlY2suCisJ ICogc3Bvb2wyIGlzIG5lZWRlZCBvbmx5IHdoZW4gdGhlIGluZGV4IGlzIGEgdW5pcXVlIGluZGV4 IGFuZCBidWlsdCBub24tY29uY3VycmVudGx5LgorCSAqIERlYWQgdHVwbGVzIGFyZSBwdXQgaW50 byBzcG9vbDIgaW5zdGVhZCBvZiBzcG9vbCBpbiBvcmRlciB0byBhdm9pZCB1bmlxdWVuZXNzIGNo ZWNrLgogCSAqLwogCUJUU3Bvb2wgICAgKnNwb29sMjsKIAlkb3VibGUJCWluZHR1cGxlczsKQEAg LTI2MSw3ICsyNjEsNyBAQCBzdGF0aWMgZG91YmxlIF9idF9zcG9vbHNfaGVhcHNjYW4oUmVsYXRp b24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiBzdGF0aWMgdm9pZCBfYnRfc3Bvb2xkZXN0cm95KEJU U3Bvb2wgKmJ0c3Bvb2wpOwogc3RhdGljIHZvaWQgX2J0X3Nwb29sKEJUU3Bvb2wgKmJ0c3Bvb2ws IGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqc2VsZiwKIAkJCQkJICBjb25zdCBEYXR1bSAqdmFsdWVz LCBjb25zdCBib29sICppc251bGwpOwotc3RhdGljIHZvaWQgX2J0X2xlYWZidWlsZChCVFNwb29s ICpidHNwb29sLCBCVFNwb29sICpidHNwb29sMiwgYm9vbCByZXNldF9zbmFwc2hvdHMpOworc3Rh dGljIHZvaWQgX2J0X2xlYWZidWlsZChCVFNwb29sICpidHNwb29sLCBCVFNwb29sICpidHNwb29s MiwgYm9vbCBpc2NvbmN1cnJlbnQpOwogc3RhdGljIHZvaWQgX2J0X2J1aWxkX2NhbGxiYWNrKFJl bGF0aW9uIGluZGV4LCBJdGVtUG9pbnRlciB0aWQsIERhdHVtICp2YWx1ZXMsCiAJCQkJCQkJICAg Ym9vbCAqaXNudWxsLCBib29sIHR1cGxlSXNBbGl2ZSwgdm9pZCAqc3RhdGUpOwogc3RhdGljIEJ1 bGtXcml0ZUJ1ZmZlciBfYnRfYmxuZXdwYWdlKEJUV3JpdGVTdGF0ZSAqd3N0YXRlLCB1aW50MzIg bGV2ZWwpOwpAQCAtMzA2LDggKzMwNiw2IEBAIGJ0YnVpbGQoUmVsYXRpb24gaGVhcCwgUmVsYXRp b24gaW5kZXgsIEluZGV4SW5mbyAqaW5kZXhJbmZvKQogCQlSZXNldFVzYWdlKCk7CiAjZW5kaWYJ CQkJCQkJLyogQlRSRUVfQlVJTERfU1RBVFMgKi8KIAotCWJ1aWxkc3RhdGUuaXN1bmlxdWUgPSBp bmRleEluZm8tPmlpX1VuaXF1ZTsKLQlidWlsZHN0YXRlLm51bGxzX25vdF9kaXN0aW5jdCA9IGlu ZGV4SW5mby0+aWlfTnVsbHNOb3REaXN0aW5jdDsKIAlidWlsZHN0YXRlLmhhdmVkZWFkID0gZmFs c2U7CiAJYnVpbGRzdGF0ZS5oZWFwID0gaGVhcDsKIAlidWlsZHN0YXRlLnNwb29sID0gTlVMTDsK QEAgLTMyNCwyMCArMzIyLDIwIEBAIGJ0YnVpbGQoUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5k ZXgsIEluZGV4SW5mbyAqaW5kZXhJbmZvKQogCQkJIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKGlu ZGV4KSk7CiAKIAlyZWx0dXBsZXMgPSBfYnRfc3Bvb2xzX2hlYXBzY2FuKGhlYXAsIGluZGV4LCAm YnVpbGRzdGF0ZSwgaW5kZXhJbmZvKTsKLQlBc3NlcnQoIWluZGV4SW5mby0+aWlfQ29uY3VycmVu dCB8fCBpbmRleEluZm8tPmlpX1VuaXF1ZSB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9j LT54bWluKSk7CisJQXNzZXJ0KCFpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgfHwgIVRyYW5zYWN0 aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwogCiAJLyoKIAkgKiBGaW5pc2ggdGhlIGJ1aWxk IGJ5ICgxKSBjb21wbGV0aW5nIHRoZSBzb3J0IG9mIHRoZSBzcG9vbCBmaWxlLCAoMikKIAkgKiBp bnNlcnRpbmcgdGhlIHNvcnRlZCB0dXBsZXMgaW50byBidHJlZSBwYWdlcyBhbmQgKDMpIGJ1aWxk aW5nIHRoZSB1cHBlcgogCSAqIGxldmVscy4gIEZpbmFsbHksIGl0IG1heSBhbHNvIGJlIG5lY2Vz c2FyeSB0byBlbmQgdXNlIG9mIHBhcmFsbGVsaXNtLgogCSAqLwotCV9idF9sZWFmYnVpbGQoYnVp bGRzdGF0ZS5zcG9vbCwgYnVpbGRzdGF0ZS5zcG9vbDIsICFpbmRleEluZm8tPmlpX1VuaXF1ZSAm JiBpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQpOworCV9idF9sZWFmYnVpbGQoYnVpbGRzdGF0ZS5z cG9vbCwgYnVpbGRzdGF0ZS5zcG9vbDIsIGluZGV4SW5mby0+aWlfQ29uY3VycmVudCk7CiAJX2J0 X3Nwb29sZGVzdHJveShidWlsZHN0YXRlLnNwb29sKTsKIAlpZiAoYnVpbGRzdGF0ZS5zcG9vbDIp CiAJCV9idF9zcG9vbGRlc3Ryb3koYnVpbGRzdGF0ZS5zcG9vbDIpOwogCWlmIChidWlsZHN0YXRl LmJ0bGVhZGVyKQogCQlfYnRfZW5kX3BhcmFsbGVsKGJ1aWxkc3RhdGUuYnRsZWFkZXIpOwotCUFz c2VydCghaW5kZXhJbmZvLT5paV9Db25jdXJyZW50IHx8IGluZGV4SW5mby0+aWlfVW5pcXVlIHx8 ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKKwlBc3NlcnQoIWluZGV4SW5m by0+aWlfQ29uY3VycmVudCB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7 CiAKIAlyZXN1bHQgPSBwYWxsb2Nfb2JqZWN0KEluZGV4QnVpbGRSZXN1bHQpOwogCkBAIC0zODQs NiArMzgyLDExIEBAIF9idF9zcG9vbHNfaGVhcHNjYW4oUmVsYXRpb24gaGVhcCwgUmVsYXRpb24g aW5kZXgsIEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwKIAlidHNwb29sLT5pbmRleCA9IGluZGV4 OwogCWJ0c3Bvb2wtPmlzdW5pcXVlID0gaW5kZXhJbmZvLT5paV9VbmlxdWU7CiAJYnRzcG9vbC0+ bnVsbHNfbm90X2Rpc3RpbmN0ID0gaW5kZXhJbmZvLT5paV9OdWxsc05vdERpc3RpbmN0OworCS8q CisJICogV2UgbmVlZCB0byBpZ25vcmUgZGVhZCB0dXBsZXMgZm9yIHVuaXF1ZSBjaGVja3MgaW4g Y2FzZSBvZiBjb25jdXJyZW50IGJ1aWxkLgorCSAqIEl0IGlzIHJlcXVpcmVkIGJlY2F1c2Ugb2Yg cGVyaW9kaWMgcmVzZXQgb2Ygc25hcHNob3QuCisJICovCisJYnRzcG9vbC0+dW5pcXVlX2RlYWRf aWdub3JlZCA9IGluZGV4SW5mby0+aWlfQ29uY3VycmVudCAmJiBpbmRleEluZm8tPmlpX1VuaXF1 ZTsKIAogCS8qIFNhdmUgYXMgcHJpbWFyeSBzcG9vbCAqLwogCWJ1aWxkc3RhdGUtPnNwb29sID0g YnRzcG9vbDsKQEAgLTQzMiw4ICs0MzUsOSBAQCBfYnRfc3Bvb2xzX2hlYXBzY2FuKFJlbGF0aW9u IGhlYXAsIFJlbGF0aW9uIGluZGV4LCBCVEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsCiAJICogdGhl IHVzZSBvZiBwYXJhbGxlbGlzbSBvciBhbnkgb3RoZXIgZmFjdG9yLgogCSAqLwogCWJ1aWxkc3Rh dGUtPnNwb29sLT5zb3J0c3RhdGUgPQotCQl0dXBsZXNvcnRfYmVnaW5faW5kZXhfYnRyZWUoaGVh cCwgaW5kZXgsIGJ1aWxkc3RhdGUtPmlzdW5pcXVlLAotCQkJCQkJCQkJYnVpbGRzdGF0ZS0+bnVs bHNfbm90X2Rpc3RpbmN0LAorCQl0dXBsZXNvcnRfYmVnaW5faW5kZXhfYnRyZWUoaGVhcCwgaW5k ZXgsIGJ0c3Bvb2wtPmlzdW5pcXVlLAorCQkJCQkJCQkJYnRzcG9vbC0+bnVsbHNfbm90X2Rpc3Rp bmN0LAorCQkJCQkJCQkJYnRzcG9vbC0+dW5pcXVlX2RlYWRfaWdub3JlZCwKIAkJCQkJCQkJCW1h aW50ZW5hbmNlX3dvcmtfbWVtLCBjb29yZGluYXRlLAogCQkJCQkJCQkJVFVQTEVTT1JUX05PTkUp OwogCkBAIC00NDEsOCArNDQ1LDEyIEBAIF9idF9zcG9vbHNfaGVhcHNjYW4oUmVsYXRpb24gaGVh cCwgUmVsYXRpb24gaW5kZXgsIEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwKIAkgKiBJZiBidWls ZGluZyBhIHVuaXF1ZSBpbmRleCwgcHV0IGRlYWQgdHVwbGVzIGluIGEgc2Vjb25kIHNwb29sIHRv IGtlZXAKIAkgKiB0aGVtIG91dCBvZiB0aGUgdW5pcXVlbmVzcyBjaGVjay4gIFdlIGV4cGVjdCB0 aGF0IHRoZSBzZWNvbmQgc3Bvb2wgKGZvcgogCSAqIGRlYWQgdHVwbGVzKSB3b24ndCBnZXQgdmVy eSBmdWxsLCBzbyB3ZSBnaXZlIGl0IG9ubHkgd29ya19tZW0uCisJICoKKwkgKiBJbiBjYXNlIG9m IGNvbmN1cnJlbnQgYnVpbGQgZGVhZCB0dXBsZXMgZG8gbm90IG5lZWQgdG8gYmUgcHV0IGludG8g aW5kZXgKKwkgKiBzaW5jZSB3ZSB3YWl0IGZvciBhbGwgc25hcHNob3RzIG9sZGVyIHRoYW4gcmVm ZXJlbmNlIHNuYXBzaG90IGR1cmluZyB0aGUKKwkgKiB2YWxpZGF0aW9uIHBoYXNlLgogCSAqLwot CWlmIChpbmRleEluZm8tPmlpX1VuaXF1ZSkKKwlpZiAoaW5kZXhJbmZvLT5paV9VbmlxdWUgJiYg IWluZGV4SW5mby0+aWlfQ29uY3VycmVudCkKIAl7CiAJCUJUU3Bvb2wgICAgKmJ0c3Bvb2wyID0g cGFsbG9jMF9vYmplY3QoQlRTcG9vbCk7CiAJCVNvcnRDb29yZGluYXRlIGNvb3JkaW5hdGUyID0g TlVMTDsKQEAgLTQ3Myw3ICs0ODEsNyBAQCBfYnRfc3Bvb2xzX2hlYXBzY2FuKFJlbGF0aW9uIGhl YXAsIFJlbGF0aW9uIGluZGV4LCBCVEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsCiAJCSAqIGZ1bGws IHNvIHdlIGdpdmUgaXQgb25seSB3b3JrX21lbQogCQkgKi8KIAkJYnVpbGRzdGF0ZS0+c3Bvb2wy LT5zb3J0c3RhdGUgPQotCQkJdHVwbGVzb3J0X2JlZ2luX2luZGV4X2J0cmVlKGhlYXAsIGluZGV4 LCBmYWxzZSwgZmFsc2UsIHdvcmtfbWVtLAorCQkJdHVwbGVzb3J0X2JlZ2luX2luZGV4X2J0cmVl KGhlYXAsIGluZGV4LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCB3b3JrX21lbSwKIAkJCQkJCQkJCQlj b29yZGluYXRlMiwgVFVQTEVTT1JUX05PTkUpOwogCX0KIApAQCAtNDg2LDcgKzQ5NCw3IEBAIF9i dF9zcG9vbHNfaGVhcHNjYW4oUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsIEJUQnVpbGRT dGF0ZSAqYnVpbGRzdGF0ZSwKIAkJcmVsdHVwbGVzID0gX2J0X3BhcmFsbGVsX2hlYXBzY2FuKGJ1 aWxkc3RhdGUsCiAJCQkJCQkJCQkJICAmaW5kZXhJbmZvLT5paV9Ccm9rZW5Ib3RDaGFpbik7CiAJ SW52YWxpZGF0ZUNhdGFsb2dTbmFwc2hvdCgpOwotCUFzc2VydCghaW5kZXhJbmZvLT5paV9Db25j dXJyZW50IHx8IGluZGV4SW5mby0+aWlfVW5pcXVlIHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChN eVByb2MtPnhtaW4pKTsKKwlBc3NlcnQoIWluZGV4SW5mby0+aWlfQ29uY3VycmVudCB8fCAhVHJh bnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CiAKIAkvKgogCSAqIFNldCB0aGUgcHJv Z3Jlc3MgdGFyZ2V0IGZvciB0aGUgbmV4dCBwaGFzZS4gIFJlc2V0IHRoZSBibG9jayBudW1iZXIK QEAgLTU0Miw3ICs1NTAsNyBAQCBfYnRfc3Bvb2woQlRTcG9vbCAqYnRzcG9vbCwgY29uc3QgSXRl bVBvaW50ZXJEYXRhICpzZWxmLCBjb25zdCBEYXR1bSAqdmFsdWVzLCBjbwogICogY3JlYXRlIGFu IGVudGlyZSBidHJlZS4KICAqLwogc3RhdGljIHZvaWQKLV9idF9sZWFmYnVpbGQoQlRTcG9vbCAq YnRzcG9vbCwgQlRTcG9vbCAqYnRzcG9vbDIsIGJvb2wgcmVzZXRfc25hcHNob3RzKQorX2J0X2xl YWZidWlsZChCVFNwb29sICpidHNwb29sLCBCVFNwb29sICpidHNwb29sMiwgYm9vbCBpc2NvbmN1 cnJlbnQpCiB7CiAJQlRXcml0ZVN0YXRlIHdzdGF0ZTsKIApAQCAtNTY0LDcgKzU3Miw3IEBAIF9i dF9sZWFmYnVpbGQoQlRTcG9vbCAqYnRzcG9vbCwgQlRTcG9vbCAqYnRzcG9vbDIsIGJvb2wgcmVz ZXRfc25hcHNob3RzKQogCQkJCQkJCQkJIFBST0dSRVNTX0JUUkVFX1BIQVNFX1BFUkZPUk1TT1JU XzIpOwogCQl0dXBsZXNvcnRfcGVyZm9ybXNvcnQoYnRzcG9vbDItPnNvcnRzdGF0ZSk7CiAJfQot CUFzc2VydCghcmVzZXRfc25hcHNob3RzIHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2Mt PnhtaW4pKTsKKwlBc3NlcnQoIWlzY29uY3VycmVudCB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQo TXlQcm9jLT54bWluKSk7CiAKIAl3c3RhdGUuaGVhcCA9IGJ0c3Bvb2wtPmhlYXA7CiAJd3N0YXRl LmluZGV4ID0gYnRzcG9vbC0+aW5kZXg7CkBAIC01NzgsNyArNTg2LDcgQEAgX2J0X2xlYWZidWls ZChCVFNwb29sICpidHNwb29sLCBCVFNwb29sICpidHNwb29sMiwgYm9vbCByZXNldF9zbmFwc2hv dHMpCiAKIAlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NSRUFURUlEWF9T VUJQSEFTRSwKIAkJCQkJCQkJIFBST0dSRVNTX0JUUkVFX1BIQVNFX0xFQUZfTE9BRCk7Ci0JQXNz ZXJ0KCFyZXNldF9zbmFwc2hvdHMgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1p bikpOworCUFzc2VydCghaXNjb25jdXJyZW50IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVBy b2MtPnhtaW4pKTsKIAlfYnRfbG9hZCgmd3N0YXRlLCBidHNwb29sLCBidHNwb29sMik7CiB9CiAK QEAgLTExNTUsMTMgKzExNjMsMTE4IEBAIF9idF9sb2FkKEJUV3JpdGVTdGF0ZSAqd3N0YXRlLCBC VFNwb29sICpidHNwb29sLCBCVFNwb29sICpidHNwb29sMikKIAlTb3J0U3VwcG9ydCBzb3J0S2V5 czsKIAlpbnQ2NAkJdHVwbGVzX2RvbmUgPSAwOwogCWJvb2wJCWRlZHVwbGljYXRlOworCWJvb2wJ CWZhaWxfb25fYWxpdmVfZHVwbGljYXRlOwogCiAJd3N0YXRlLT5idWxrc3RhdGUgPSBzbWdyX2J1 bGtfc3RhcnRfcmVsKHdzdGF0ZS0+aW5kZXgsIE1BSU5fRk9SS05VTSk7CiAKIAlkZWR1cGxpY2F0 ZSA9IHdzdGF0ZS0+aW5za2V5LT5hbGxlcXVhbGltYWdlICYmICFidHNwb29sLT5pc3VuaXF1ZSAm JgogCQlCVEdldERlZHVwbGljYXRlSXRlbXMod3N0YXRlLT5pbmRleCk7CisJLyoKKwkgKiBUaGUg dW5pcXVlX2RlYWRfaWdub3JlZCBkb2VzIG5vdCBndWFyYW50ZWUgYWJzZW5jZSBvZiBtdWx0aXBs ZSBhbGl2ZQorCSAqIHR1cGxlcyB3aXRoIHNhbWUgdmFsdWVzIGV4aXN0cyBpbiB0aGUgc3Bvb2wu IFN1Y2ggdGhpbmcgbWF5IGhhcHBlbiBpZgorCSAqIGFsaXZlIHR1cGxlcyBhcmUgbG9jYXRlZCBi ZXR3ZWVuIGEgZmV3IGRlYWQgdHVwbGVzLCBsaWtlIHRoaXM6IGFkZGRhLgorCSAqLworCWZhaWxf b25fYWxpdmVfZHVwbGljYXRlID0gYnRzcG9vbC0+dW5pcXVlX2RlYWRfaWdub3JlZDsKIAotCWlm IChtZXJnZSkKKwlpZiAoZmFpbF9vbl9hbGl2ZV9kdXBsaWNhdGUpCisJeworCQlib29sCXNlZW5f YWxpdmUgPSBmYWxzZSwKKwkJCQlwcmV2X3Rlc3RlZCA9IGZhbHNlOworCQlJbmRleFR1cGxlIHBy ZXYgPSBOVUxMOworCQlUdXBsZVRhYmxlU2xvdCAJCSpzbG90ID0gTWFrZVNpbmdsZVR1cGxlVGFi bGVTbG90KFJlbGF0aW9uR2V0RGVzY3Iod3N0YXRlLT5oZWFwKSwKKwkJCQkJCQkJCQkJCQkJCSAg ICZUVFNPcHNCdWZmZXJIZWFwVHVwbGUpOworCQlJbmRleEZldGNoVGFibGVEYXRhICpmZXRjaCA9 IHRhYmxlX2luZGV4X2ZldGNoX2JlZ2luKHdzdGF0ZS0+aGVhcCk7CisKKwkJQXNzZXJ0KGJ0c3Bv b2wtPmlzdW5pcXVlKTsKKwkJQXNzZXJ0KCFidHNwb29sMik7CisKKwkJd2hpbGUgKChpdHVwID0g dHVwbGVzb3J0X2dldGluZGV4dHVwbGUoYnRzcG9vbC0+c29ydHN0YXRlLCB0cnVlKSkgIT0gTlVM TCkKKwkJeworCQkJYm9vbAl0dXBsZXNfZXF1YWwgPSBmYWxzZTsKKworCQkJLyogV2hlbiB3ZSBz ZWUgZmlyc3QgdHVwbGUsIGNyZWF0ZSBmaXJzdCBpbmRleCBwYWdlICovCisJCQlpZiAoc3RhdGUg PT0gTlVMTCkKKwkJCQlzdGF0ZSA9IF9idF9wYWdlc3RhdGUod3N0YXRlLCAwKTsKKworCQkJaWYg KHByZXYgIT0gTlVMTCkgLyogaWYgaXMgbm90IHRoZSBmaXJzdCB0dXBsZSAqLworCQkJeworCQkJ CWJvb2wJaGFzX251bGxzID0gZmFsc2UsCisJCQkJCQljYWxsX2FnYWluLCAvKiBqdXN0IHRvIHBh c3Mgc29tZXRoaW5nICovCisJCQkJCQlpZ25vcmVkLCAgLyoganVzdCB0byBwYXNzIHNvbWV0aGlu ZyAqLworCQkJCQkJbm93X2FsaXZlOworCQkJCUl0ZW1Qb2ludGVyRGF0YSB0aWQ7CisKKwkJCQkv KiBpZiB0aGlzIHR1cGxlcyBlcXVhbCB0byBwcmV2aW91cyBvbmU/ICovCisJCQkJaWYgKHdzdGF0 ZS0+aW5za2V5LT5hbGxlcXVhbGltYWdlKQorCQkJCQl0dXBsZXNfZXF1YWwgPSBfYnRfa2VlcF9u YXR0c19mYXN0KHdzdGF0ZS0+aW5kZXgsIHByZXYsIGl0dXAsICZoYXNfbnVsbHMpID4ga2V5c3o7 CisJCQkJZWxzZQorCQkJCQl0dXBsZXNfZXF1YWwgPSBfYnRfa2VlcF9uYXR0cyh3c3RhdGUtPmlu ZGV4LCBwcmV2LCBpdHVwLCB3c3RhdGUtPmluc2tleSwgJmhhc19udWxscykgPiBrZXlzejsKKwor CQkJCS8qIGhhbmRsZSBudWxsIHZhbHVlcyBjb3JyZWN0bHkgKi8KKwkJCQlpZiAoaGFzX251bGxz ICYmICFidHNwb29sLT5udWxsc19ub3RfZGlzdGluY3QpCisJCQkJCXR1cGxlc19lcXVhbCA9IGZh bHNlOworCisJCQkJaWYgKHR1cGxlc19lcXVhbCkKKwkJCQl7CisJCQkJCS8qIGNoZWNrIHByZXZp b3VzIHR1cGxlIGlmIG5vdCB5ZXQgKi8KKwkJCQkJaWYgKCFwcmV2X3Rlc3RlZCkKKwkJCQkJewor CQkJCQkJY2FsbF9hZ2FpbiA9IGZhbHNlOworCQkJCQkJdGlkID0gcHJldi0+dF90aWQ7CisJCQkJ CQlzZWVuX2FsaXZlID0gdGFibGVfaW5kZXhfZmV0Y2hfdHVwbGUoZmV0Y2gsICZ0aWQsIFNuYXBz aG90U2VsZiwgc2xvdCwgJmNhbGxfYWdhaW4sICZpZ25vcmVkKTsKKwkJCQkJCXByZXZfdGVzdGVk ID0gdHJ1ZTsKKwkJCQkJfQorCisJCQkJCWNhbGxfYWdhaW4gPSBmYWxzZTsKKwkJCQkJdGlkID0g aXR1cC0+dF90aWQ7CisJCQkJCW5vd19hbGl2ZSA9IHRhYmxlX2luZGV4X2ZldGNoX3R1cGxlKGZl dGNoLCAmdGlkLCBTbmFwc2hvdFNlbGYsIHNsb3QsICZjYWxsX2FnYWluLCAmaWdub3JlZCk7CisK KwkJCQkJLyogYXJlIG11bHRpcGxlIGFsaXZlIHR1cGxlcyBkZXRlY3RlZCBpbiBlcXVhbCBncm91 cD8gKi8KKwkJCQkJaWYgKHNlZW5fYWxpdmUgJiYgbm93X2FsaXZlKQorCQkJCQl7CisJCQkJCQlj aGFyICprZXlfZGVzYzsKKwkJCQkJCVR1cGxlRGVzYyB0dXBEZXMgPSBSZWxhdGlvbkdldERlc2Ny KHdzdGF0ZS0+aW5kZXgpOworCQkJCQkJYm9vbCBpc251bGxbSU5ERVhfTUFYX0tFWVNdOworCQkJ CQkJRGF0dW0gdmFsdWVzW0lOREVYX01BWF9LRVlTXTsKKworCQkJCQkJaW5kZXhfZGVmb3JtX3R1 cGxlKGl0dXAsIHR1cERlcywgdmFsdWVzLCBpc251bGwpOworCisJCQkJCQlrZXlfZGVzYyA9IEJ1 aWxkSW5kZXhWYWx1ZURlc2NyaXB0aW9uKHdzdGF0ZS0+aW5kZXgsIHZhbHVlcywgaXNudWxsKTsK KworCQkJCQkJLyoga2VlcCB0aGlzIG1lc3NhZ2UgaW4gc3luYyB3aXRoIHRoZSBzYW1lIGluIGNv bXBhcmV0dXBfaW5kZXhfYnRyZWVfdGllYnJlYWsgKi8KKwkJCQkJCWVyZXBvcnQoRVJST1IsCisJ CQkJCQkJCShlcnJjb2RlKEVSUkNPREVfVU5JUVVFX1ZJT0xBVElPTiksCisJCQkJCQkJCQkJZXJy bXNnKCJjb3VsZCBub3QgY3JlYXRlIHVuaXF1ZSBpbmRleCBcIiVzXCIiLAorCQkJCQkJCQkJCQkg ICBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZSh3c3RhdGUtPmluZGV4KSksCisJCQkJCQkJCQkJa2V5 X2Rlc2MgPyBlcnJkZXRhaWwoIktleSAlcyBpcyBkdXBsaWNhdGVkLiIsIGtleV9kZXNjKSA6CisJ CQkJCQkJCQkJZXJyZGV0YWlsKCJEdXBsaWNhdGUga2V5cyBleGlzdC4iKSwKKwkJCQkJCQkJCQll cnJ0YWJsZWNvbnN0cmFpbnQod3N0YXRlLT5oZWFwLAorCQkJCQkJCQkJCQkJCQkgICBSZWxhdGlv bkdldFJlbGF0aW9uTmFtZSh3c3RhdGUtPmluZGV4KSkpKTsKKwkJCQkJfQorCQkJCQlzZWVuX2Fs aXZlIHw9IG5vd19hbGl2ZTsKKwkJCQl9CisJCQl9CisKKwkJCWlmICghdHVwbGVzX2VxdWFsKQor CQkJeworCQkJCXNlZW5fYWxpdmUgPSBmYWxzZTsKKwkJCQlwcmV2X3Rlc3RlZCA9IGZhbHNlOwor CQkJfQorCisJCQlfYnRfYnVpbGRhZGQod3N0YXRlLCBzdGF0ZSwgaXR1cCwgMCk7CisJCQlpZiAo cHJldikgcGZyZWUocHJldik7CisJCQlwcmV2ID0gQ29weUluZGV4VHVwbGUoaXR1cCk7CisKKwkJ CS8qIFJlcG9ydCBwcm9ncmVzcyAqLworCQkJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQ Uk9HUkVTU19DUkVBVEVJRFhfVFVQTEVTX0RPTkUsCisJCQkJCQkJCQkJICsrdHVwbGVzX2RvbmUp OworCQl9CisJCWlmIChwcmV2KSBwZnJlZShwcmV2KTsKKwkJRXhlY0Ryb3BTaW5nbGVUdXBsZVRh YmxlU2xvdChzbG90KTsKKwkJdGFibGVfaW5kZXhfZmV0Y2hfZW5kKGZldGNoKTsKKwkJQXNzZXJ0 KCFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKKwl9CisJZWxzZSBpZiAobWVy Z2UpCiAJewogCQkvKgogCQkgKiBBbm90aGVyIEJUU3Bvb2wgZm9yIGRlYWQgdHVwbGVzIGV4aXN0 cy4gTm93IHdlIGhhdmUgdG8gbWVyZ2UKQEAgLTEzMjEsNyArMTQzNCw3IEBAIF9idF9sb2FkKEJU V3JpdGVTdGF0ZSAqd3N0YXRlLCBCVFNwb29sICpidHNwb29sLCBCVFNwb29sICpidHNwb29sMikK IAkJCQkJCQkJCQlJbnZhbGlkT2Zmc2V0TnVtYmVyKTsKIAkJCX0KIAkJCWVsc2UgaWYgKF9idF9r ZWVwX25hdHRzX2Zhc3Qod3N0YXRlLT5pbmRleCwgZHN0YXRlLT5iYXNlLAotCQkJCQkJCQkJCSBp dHVwKSA+IGtleXN6ICYmCisJCQkJCQkJCQkJIGl0dXAsIE5VTEwpID4ga2V5c3ogJiYKIAkJCQkJ IF9idF9kZWR1cF9zYXZlX2h0aWQoZHN0YXRlLCBpdHVwKSkKIAkJCXsKIAkJCQkvKgpAQCAtMTQx OCw3ICsxNTMxLDYgQEAgX2J0X2JlZ2luX3BhcmFsbGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0 ZSwgYm9vbCBpc2NvbmN1cnJlbnQsIGludCByZXF1ZXN0KQogCUJ1ZmZlclVzYWdlICpidWZmZXJ1 c2FnZTsKIAlib29sCQlsZWFkZXJwYXJ0aWNpcGF0ZXMgPSB0cnVlOwogCWJvb2wJCW5lZWRfcG9w X2FjdGl2ZV9zbmFwc2hvdCA9IHRydWU7Ci0JYm9vbAkJcmVzZXRfc25hcHNob3Q7CiAJaW50CQkJ cXVlcnlsZW47CiAKICNpZmRlZiBESVNBQkxFX0xFQURFUl9QQVJUSUNJUEFUSU9OCkBAIC0xNDM2 LDIxICsxNTQ4LDEyIEBAIF9idF9iZWdpbl9wYXJhbGxlbChCVEJ1aWxkU3RhdGUgKmJ1aWxkc3Rh dGUsIGJvb2wgaXNjb25jdXJyZW50LCBpbnQgcmVxdWVzdCkKIAogCXNjYW50dXBsZXNvcnRzdGF0 ZXMgPSBsZWFkZXJwYXJ0aWNpcGF0ZXMgPyByZXF1ZXN0ICsgMSA6IHJlcXVlc3Q7CiAKLSAgICAv KgotCSAqIEZvciBjb25jdXJyZW50IG5vbi11bmlxdWUgaW5kZXggYnVpbGRzLCB3ZSBjYW4gcGVy aW9kaWNhbGx5IHJlc2V0IHNuYXBzaG90cwotCSAqIHRvIGFsbG93IHRoZSB4bWluIGhvcml6b24g dG8gYWR2YW5jZS4gVGhpcyBpcyBzYWZlIHNpbmNlIHRoZXNlIGJ1aWxkcyBkb24ndAotCSAqIHJl cXVpcmUgYSBjb25zaXN0ZW50IHZpZXcgYWNyb3NzIHRoZSBlbnRpcmUgc2Nhbi4gVW5pcXVlIGlu ZGV4ZXMgc3RpbGwgbmVlZAotCSAqIGEgc3RhYmxlIHNuYXBzaG90IHRvIHByb3Blcmx5IGVuZm9y Y2UgdW5pcXVlbmVzcyBjb25zdHJhaW50cy4KLSAgICAgKi8KLQlyZXNldF9zbmFwc2hvdCA9IGlz Y29uY3VycmVudCAmJiAhYnRzcG9vbC0+aXN1bmlxdWU7Ci0KIAkvKgogCSAqIFByZXBhcmUgZm9y IHNjYW4gb2YgdGhlIGJhc2UgcmVsYXRpb24uICBJbiBhIG5vcm1hbCBpbmRleCBidWlsZCwgd2Ug dXNlCiAJICogU25hcHNob3RBbnkgYmVjYXVzZSB3ZSBtdXN0IHJldHJpZXZlIGFsbCB0dXBsZXMg YW5kIGRvIG91ciBvd24gdGltZQogCSAqIHF1YWwgY2hlY2tzIChiZWNhdXNlIHdlIGhhdmUgdG8g aW5kZXggUkVDRU5UTFlfREVBRCB0dXBsZXMpLiAgSW4gYQogCSAqIGNvbmN1cnJlbnQgYnVpbGQs IHdlIHRha2UgYSByZWd1bGFyIE1WQ0Mgc25hcHNob3QgYW5kIGluZGV4IHdoYXRldmVyJ3MKLQkg KiBsaXZlIGFjY29yZGluZyB0byB0aGF0LCB3aGlsZSB0aGF0IHNuYXBzaG90IG1heSBiZSByZXNl dCBwZXJpb2RpY2FsbHkgaW4KLQkgKiBjYXNlIG9mIG5vbi11bmlxdWUgaW5kZXguCisJICogbGl2 ZSBhY2NvcmRpbmcgdG8gdGhhdCwgd2hpbGUgdGhhdCBzbmFwc2hvdCBtYXkgYmUgcmVzZXQgcGVy aW9kaWNhbGx5LgogCSAqLwogCWlmICghaXNjb25jdXJyZW50KQogCXsKQEAgLTE0NTgsMTYgKzE1 NjEsMTYgQEAgX2J0X2JlZ2luX3BhcmFsbGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9v bCBpc2NvbmN1cnJlbnQsIGludCByZXF1ZXN0KQogCQlzbmFwc2hvdCA9IFNuYXBzaG90QW55Owog CQluZWVkX3BvcF9hY3RpdmVfc25hcHNob3QgPSBmYWxzZTsKIAl9Ci0JZWxzZSBpZiAocmVzZXRf c25hcHNob3QpCisJZWxzZQogCXsKKwkJLyoKKwkJICogRm9yIGNvbmN1cnJlbnQgaW5kZXggYnVp bGRzLCB3ZSBjYW4gcGVyaW9kaWNhbGx5IHJlc2V0IHNuYXBzaG90cyB0byBhbGxvdworCQkgKiB0 aGUgeG1pbiBob3Jpem9uIHRvIGFkdmFuY2UuIFRoaXMgaXMgc2FmZSBzaW5jZSB0aGVzZSBidWls ZHMgZG9uJ3QKKwkJICogcmVxdWlyZSBhIGNvbnNpc3RlbnQgdmlldyBhY3Jvc3MgdGhlIGVudGly ZSBzY2FuLgorCQkgKi8KIAkJc25hcHNob3QgPSBJbnZhbGlkU25hcHNob3Q7CiAJCVB1c2hBY3Rp dmVTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOwogCX0KLQllbHNlCi0JewotCQlz bmFwc2hvdCA9IFJlZ2lzdGVyU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKLQkJ UHVzaEFjdGl2ZVNuYXBzaG90KHNuYXBzaG90KTsKLQl9CiAKIAkvKgogCSAqIEVzdGltYXRlIHNp emUgZm9yIG91ciBvd24gUEFSQUxMRUxfS0VZX0JUUkVFX1NIQVJFRCB3b3Jrc3BhY2UsIGFuZApA QCAtMTUzNyw2ICsxNjQwLDcgQEAgX2J0X2JlZ2luX3BhcmFsbGVsKEJUQnVpbGRTdGF0ZSAqYnVp bGRzdGF0ZSwgYm9vbCBpc2NvbmN1cnJlbnQsIGludCByZXF1ZXN0KQogCWJ0c2hhcmVkLT5pbmRl eHJlbGlkID0gUmVsYXRpb25HZXRSZWxpZChidHNwb29sLT5pbmRleCk7CiAJYnRzaGFyZWQtPmlz dW5pcXVlID0gYnRzcG9vbC0+aXN1bmlxdWU7CiAJYnRzaGFyZWQtPm51bGxzX25vdF9kaXN0aW5j dCA9IGJ0c3Bvb2wtPm51bGxzX25vdF9kaXN0aW5jdDsKKwlidHNoYXJlZC0+dW5pcXVlX2RlYWRf aWdub3JlZCA9IGJ0c3Bvb2wtPnVuaXF1ZV9kZWFkX2lnbm9yZWQ7CiAJYnRzaGFyZWQtPmlzY29u Y3VycmVudCA9IGlzY29uY3VycmVudDsKIAlidHNoYXJlZC0+c2NhbnR1cGxlc29ydHN0YXRlcyA9 IHNjYW50dXBsZXNvcnRzdGF0ZXM7CiAJYnRzaGFyZWQtPnF1ZXJ5aWQgPSBwZ3N0YXRfZ2V0X215 X3F1ZXJ5X2lkKCk7CkBAIC0xNTUxLDcgKzE2NTUsNyBAQCBfYnRfYmVnaW5fcGFyYWxsZWwoQlRC dWlsZFN0YXRlICpidWlsZHN0YXRlLCBib29sIGlzY29uY3VycmVudCwgaW50IHJlcXVlc3QpCiAJ dGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUoYnRzcG9vbC0+aGVhcCwKIAkJCQkJCQkJICBQ YXJhbGxlbFRhYmxlU2NhbkZyb21CVFNoYXJlZChidHNoYXJlZCksCiAJCQkJCQkJCSAgc25hcHNo b3QsCi0JCQkJCQkJCSAgcmVzZXRfc25hcHNob3QpOworCQkJCQkJCQkgIGlzY29uY3VycmVudCk7 CiAKIAkvKgogCSAqIFN0b3JlIHNoYXJlZCB0dXBsZXNvcnQtcHJpdmF0ZSBzdGF0ZSwgZm9yIHdo aWNoIHdlIHJlc2VydmVkIHNwYWNlLgpAQCAtMTYzMSw3ICsxNzM1LDcgQEAgX2J0X2JlZ2luX3Bh cmFsbGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9vbCBpc2NvbmN1cnJlbnQsIGludCBy ZXF1ZXN0KQogCSAqIEluIGNhc2Ugb2YgY29uY3VycmVudCBidWlsZCBzbmFwc2hvdHMgYXJlIGdv aW5nIHRvIGJlIHJlc2V0IHBlcmlvZGljYWxseS4KIAkgKiBXYWl0IHVudGlsIGFsbCB3b3JrZXJz IGltcG9ydGVkIGluaXRpYWwgc25hcHNob3QuCiAJICovCi0JaWYgKHJlc2V0X3NuYXBzaG90KQor CWlmIChpc2NvbmN1cnJlbnQpCiAJCVdhaXRGb3JQYXJhbGxlbFdvcmtlcnNUb0F0dGFjaChwY3h0 LCB0cnVlKTsKIAogCS8qIEpvaW4gaGVhcCBzY2FuIG91cnNlbHZlcyAqLwpAQCAtMTY0MiwxMyAr MTc0NiwxMyBAQCBfYnRfYmVnaW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLCBi b29sIGlzY29uY3VycmVudCwgaW50IHJlcXVlc3QpCiAJICogQ2FsbGVyIG5lZWRzIHRvIHdhaXQg Zm9yIGFsbCBsYXVuY2hlZCB3b3JrZXJzIHdoZW4gd2UgcmV0dXJuLiAgTWFrZQogCSAqIHN1cmUg dGhhdCB0aGUgZmFpbHVyZS10by1zdGFydCBjYXNlIHdpbGwgbm90IGhhbmcgZm9yZXZlci4KIAkg Ki8KLQlpZiAoIXJlc2V0X3NuYXBzaG90KQorCWlmICghaXNjb25jdXJyZW50KQogCQlXYWl0Rm9y UGFyYWxsZWxXb3JrZXJzVG9BdHRhY2gocGN4dCwgZmFsc2UpOwogCWlmIChuZWVkX3BvcF9hY3Rp dmVfc25hcHNob3QpCiAJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CiAKIAlJbnZhbGlkYXRlQ2F0YWxv Z1NuYXBzaG90KCk7Ci0JQXNzZXJ0KCFyZXNldF9zbmFwc2hvdHx8ICFUcmFuc2FjdGlvbklkSXNW YWxpZChNeVByb2MtPnhtaW4pKTsKKwlBc3NlcnQoIWlzY29uY3VycmVudCB8fCAhVHJhbnNhY3Rp b25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CiB9CiAKIC8qCkBAIC0xNzQ4LDYgKzE4NTIsNyBA QCBfYnRfbGVhZGVyX3BhcnRpY2lwYXRlX2FzX3dvcmtlcihCVEJ1aWxkU3RhdGUgKmJ1aWxkc3Rh dGUpCiAJbGVhZGVyd29ya2VyLT5pbmRleCA9IGJ1aWxkc3RhdGUtPnNwb29sLT5pbmRleDsKIAls ZWFkZXJ3b3JrZXItPmlzdW5pcXVlID0gYnVpbGRzdGF0ZS0+c3Bvb2wtPmlzdW5pcXVlOwogCWxl YWRlcndvcmtlci0+bnVsbHNfbm90X2Rpc3RpbmN0ID0gYnVpbGRzdGF0ZS0+c3Bvb2wtPm51bGxz X25vdF9kaXN0aW5jdDsKKwlsZWFkZXJ3b3JrZXItPnVuaXF1ZV9kZWFkX2lnbm9yZWQgPSBidWls ZHN0YXRlLT5zcG9vbC0+dW5pcXVlX2RlYWRfaWdub3JlZDsKIAogCS8qIEluaXRpYWxpemUgc2Vj b25kIHNwb29sLCBpZiByZXF1aXJlZCAqLwogCWlmICghYnRsZWFkZXItPmJ0c2hhcmVkLT5pc3Vu aXF1ZSkKQEAgLTE4NTEsMTEgKzE5NTYsMTIgQEAgX2J0X3BhcmFsbGVsX2J1aWxkX21haW4oZHNt X3NlZ21lbnQgKnNlZywgc2htX3RvYyAqdG9jKQogCWJ0c3Bvb2wtPmluZGV4ID0gaW5kZXhSZWw7 CiAJYnRzcG9vbC0+aXN1bmlxdWUgPSBidHNoYXJlZC0+aXN1bmlxdWU7CiAJYnRzcG9vbC0+bnVs bHNfbm90X2Rpc3RpbmN0ID0gYnRzaGFyZWQtPm51bGxzX25vdF9kaXN0aW5jdDsKKwlidHNwb29s LT51bmlxdWVfZGVhZF9pZ25vcmVkID0gYnRzaGFyZWQtPnVuaXF1ZV9kZWFkX2lnbm9yZWQ7CiAK IAkvKiBMb29rIHVwIHNoYXJlZCBzdGF0ZSBwcml2YXRlIHRvIHR1cGxlc29ydC5jICovCiAJc2hh cmVkc29ydCA9IHNobV90b2NfbG9va3VwKHRvYywgUEFSQUxMRUxfS0VZX1RVUExFU09SVCwgZmFs c2UpOwogCXR1cGxlc29ydF9hdHRhY2hfc2hhcmVkKHNoYXJlZHNvcnQsIHNlZyk7Ci0JaWYgKCFi dHNoYXJlZC0+aXN1bmlxdWUpCisJaWYgKCFidHNoYXJlZC0+aXN1bmlxdWUgfHwgYnRzaGFyZWQt PmlzY29uY3VycmVudCkKIAl7CiAJCWJ0c3Bvb2wyID0gTlVMTDsKIAkJc2hhcmVkc29ydDIgPSBO VUxMOwpAQCAtMTkzNSw2ICsyMDQxLDcgQEAgX2J0X3BhcmFsbGVsX3NjYW5fYW5kX3NvcnQoQlRT cG9vbCAqYnRzcG9vbCwgQlRTcG9vbCAqYnRzcG9vbDIsCiAJCQkJCQkJCQkJCQkJIGJ0c3Bvb2wt PmluZGV4LAogCQkJCQkJCQkJCQkJCSBidHNwb29sLT5pc3VuaXF1ZSwKIAkJCQkJCQkJCQkJCQkg YnRzcG9vbC0+bnVsbHNfbm90X2Rpc3RpbmN0LAorCQkJCQkJCQkJCQkJCSBidHNwb29sLT51bmlx dWVfZGVhZF9pZ25vcmVkLAogCQkJCQkJCQkJCQkJCSBzb3J0bWVtLCBjb29yZGluYXRlLAogCQkJ CQkJCQkJCQkJCSBUVVBMRVNPUlRfTk9ORSk7CiAKQEAgLTE5NTcsMTQgKzIwNjQsMTIgQEAgX2J0 X3BhcmFsbGVsX3NjYW5fYW5kX3NvcnQoQlRTcG9vbCAqYnRzcG9vbCwgQlRTcG9vbCAqYnRzcG9v bDIsCiAJCWNvb3JkaW5hdGUyLT5uUGFydGljaXBhbnRzID0gLTE7CiAJCWNvb3JkaW5hdGUyLT5z aGFyZWRzb3J0ID0gc2hhcmVkc29ydDI7CiAJCWJ0c3Bvb2wyLT5zb3J0c3RhdGUgPQotCQkJdHVw bGVzb3J0X2JlZ2luX2luZGV4X2J0cmVlKGJ0c3Bvb2wtPmhlYXAsIGJ0c3Bvb2wtPmluZGV4LCBm YWxzZSwgZmFsc2UsCisJCQl0dXBsZXNvcnRfYmVnaW5faW5kZXhfYnRyZWUoYnRzcG9vbC0+aGVh cCwgYnRzcG9vbC0+aW5kZXgsIGZhbHNlLCBmYWxzZSwgZmFsc2UsCiAJCQkJCQkJCQkJTWluKHNv cnRtZW0sIHdvcmtfbWVtKSwgY29vcmRpbmF0ZTIsCiAJCQkJCQkJCQkJZmFsc2UpOwogCX0KIAog CS8qIEZpbGwgaW4gYnVpbGRzdGF0ZSBmb3IgX2J0X2J1aWxkX2NhbGxiYWNrKCkgKi8KLQlidWls ZHN0YXRlLmlzdW5pcXVlID0gYnRzaGFyZWQtPmlzdW5pcXVlOwotCWJ1aWxkc3RhdGUubnVsbHNf bm90X2Rpc3RpbmN0ID0gYnRzaGFyZWQtPm51bGxzX25vdF9kaXN0aW5jdDsKIAlidWlsZHN0YXRl LmhhdmVkZWFkID0gZmFsc2U7CiAJYnVpbGRzdGF0ZS5oZWFwID0gYnRzcG9vbC0+aGVhcDsKIAli dWlsZHN0YXRlLnNwb29sID0gYnRzcG9vbDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9uYnRyZWUvbmJ0c3BsaXRsb2MuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c3Bs aXRsb2MuYwppbmRleCBkZTllY2EzYzhiMi4uYjE3NGZiOGQzZWUgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c3BsaXRsb2MuYworKysgYi9zcmMvYmFja2VuZC9hY2Nl c3MvbmJ0cmVlL25idHNwbGl0bG9jLmMKQEAgLTY4OCw3ICs2ODgsNyBAQCBfYnRfYWZ0ZXJuZXdp dGVtb2ZmKEZpbmRTcGxpdERhdGEgKnN0YXRlLCBPZmZzZXROdW1iZXIgbWF4b2ZmLAogCXsKIAkJ aXRlbWlkID0gUGFnZUdldEl0ZW1JZChzdGF0ZS0+b3JpZ3BhZ2UsIG1heG9mZik7CiAJCXR1cCA9 IChJbmRleFR1cGxlKSBQYWdlR2V0SXRlbShzdGF0ZS0+b3JpZ3BhZ2UsIGl0ZW1pZCk7Ci0JCWtl ZXBuYXR0cyA9IF9idF9rZWVwX25hdHRzX2Zhc3Qoc3RhdGUtPnJlbCwgdHVwLCBzdGF0ZS0+bmV3 aXRlbSk7CisJCWtlZXBuYXR0cyA9IF9idF9rZWVwX25hdHRzX2Zhc3Qoc3RhdGUtPnJlbCwgdHVw LCBzdGF0ZS0+bmV3aXRlbSwgTlVMTCk7CiAKIAkJaWYgKGtlZXBuYXR0cyA+IDEgJiYga2VlcG5h dHRzIDw9IG5rZXlhdHRzKQogCQl7CkBAIC03MTksNyArNzE5LDcgQEAgX2J0X2FmdGVybmV3aXRl bW9mZihGaW5kU3BsaXREYXRhICpzdGF0ZSwgT2Zmc2V0TnVtYmVyIG1heG9mZiwKIAkJIV9idF9h ZGphY2VudGh0aWQoJnR1cC0+dF90aWQsICZzdGF0ZS0+bmV3aXRlbS0+dF90aWQpKQogCQlyZXR1 cm4gZmFsc2U7CiAJLyogQ2hlY2sgc2FtZSBjb25kaXRpb25zIGFzIHJpZ2h0bW9zdCBpdGVtIGNh c2UsIHRvbyAqLwotCWtlZXBuYXR0cyA9IF9idF9rZWVwX25hdHRzX2Zhc3Qoc3RhdGUtPnJlbCwg dHVwLCBzdGF0ZS0+bmV3aXRlbSk7CisJa2VlcG5hdHRzID0gX2J0X2tlZXBfbmF0dHNfZmFzdChz dGF0ZS0+cmVsLCB0dXAsIHN0YXRlLT5uZXdpdGVtLCBOVUxMKTsKIAogCWlmIChrZWVwbmF0dHMg PiAxICYmIGtlZXBuYXR0cyA8PSBua2V5YXR0cykKIAl7CkBAIC05NjgsNyArOTY4LDcgQEAgX2J0 X3N0cmF0ZWd5KEZpbmRTcGxpdERhdGEgKnN0YXRlLCBTcGxpdFBvaW50ICpsZWZ0cGFnZSwKIAkg KiBhdm9pZCBhcHBlbmRpbmcgYSBoZWFwIFRJRCBpbiBuZXcgaGlnaCBrZXksIHdlJ3JlIGRvbmUu ICBGaW5pc2ggc3BsaXQKIAkgKiB3aXRoIGRlZmF1bHQgc3RyYXRlZ3kgYW5kIGluaXRpYWwgc3Bs aXQgaW50ZXJ2YWwuCiAJICovCi0JcGVyZmVjdHBlbmFsdHkgPSBfYnRfa2VlcF9uYXR0c19mYXN0 KHN0YXRlLT5yZWwsIGxlZnRtb3N0LCByaWdodG1vc3QpOworCXBlcmZlY3RwZW5hbHR5ID0gX2J0 X2tlZXBfbmF0dHNfZmFzdChzdGF0ZS0+cmVsLCBsZWZ0bW9zdCwgcmlnaHRtb3N0LCBOVUxMKTsK IAlpZiAocGVyZmVjdHBlbmFsdHkgPD0gaW5kbmtleWF0dHMpCiAJCXJldHVybiBwZXJmZWN0cGVu YWx0eTsKIApAQCAtOTg5LDcgKzk4OSw3IEBAIF9idF9zdHJhdGVneShGaW5kU3BsaXREYXRhICpz dGF0ZSwgU3BsaXRQb2ludCAqbGVmdHBhZ2UsCiAJICogSWYgcGFnZSBpcyBlbnRpcmVseSBmdWxs IG9mIGR1cGxpY2F0ZXMsIGEgc2luZ2xlIHZhbHVlIHN0cmF0ZWd5IHNwbGl0CiAJICogd2lsbCBi ZSBwZXJmb3JtZWQuCiAJICovCi0JcGVyZmVjdHBlbmFsdHkgPSBfYnRfa2VlcF9uYXR0c19mYXN0 KHN0YXRlLT5yZWwsIGxlZnRtb3N0LCByaWdodG1vc3QpOworCXBlcmZlY3RwZW5hbHR5ID0gX2J0 X2tlZXBfbmF0dHNfZmFzdChzdGF0ZS0+cmVsLCBsZWZ0bW9zdCwgcmlnaHRtb3N0LCBOVUxMKTsK IAlpZiAocGVyZmVjdHBlbmFsdHkgPD0gaW5kbmtleWF0dHMpCiAJewogCQkqc3RyYXRlZ3kgPSBT UExJVF9NQU5ZX0RVUExJQ0FURVM7CkBAIC0xMDI4LDcgKzEwMjgsNyBAQCBfYnRfc3RyYXRlZ3ko RmluZFNwbGl0RGF0YSAqc3RhdGUsIFNwbGl0UG9pbnQgKmxlZnRwYWdlLAogCQlpdGVtaWQgPSBQ YWdlR2V0SXRlbUlkKHN0YXRlLT5vcmlncGFnZSwgUF9ISUtFWSk7CiAJCWhpa2V5ID0gKEluZGV4 VHVwbGUpIFBhZ2VHZXRJdGVtKHN0YXRlLT5vcmlncGFnZSwgaXRlbWlkKTsKIAkJcGVyZmVjdHBl bmFsdHkgPSBfYnRfa2VlcF9uYXR0c19mYXN0KHN0YXRlLT5yZWwsIGhpa2V5LAotCQkJCQkJCQkJ CQkgc3RhdGUtPm5ld2l0ZW0pOworCQkJCQkJCQkJCQkgc3RhdGUtPm5ld2l0ZW0sIE5VTEwpOwog CQlpZiAocGVyZmVjdHBlbmFsdHkgPD0gaW5kbmtleWF0dHMpCiAJCQkqc3RyYXRlZ3kgPSBTUExJ VF9TSU5HTEVfVkFMVUU7CiAJCWVsc2UKQEAgLTExNTAsNyArMTE1MCw3IEBAIF9idF9zcGxpdF9w ZW5hbHR5KEZpbmRTcGxpdERhdGEgKnN0YXRlLCBTcGxpdFBvaW50ICpzcGxpdCkKIAlsYXN0bGVm dCA9IF9idF9zcGxpdF9sYXN0bGVmdChzdGF0ZSwgc3BsaXQpOwogCWZpcnN0cmlnaHQgPSBfYnRf c3BsaXRfZmlyc3RyaWdodChzdGF0ZSwgc3BsaXQpOwogCi0JcmV0dXJuIF9idF9rZWVwX25hdHRz X2Zhc3Qoc3RhdGUtPnJlbCwgbGFzdGxlZnQsIGZpcnN0cmlnaHQpOworCXJldHVybiBfYnRfa2Vl cF9uYXR0c19mYXN0KHN0YXRlLT5yZWwsIGxhc3RsZWZ0LCBmaXJzdHJpZ2h0LCBOVUxMKTsKIH0K IAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0dXRpbHMuYyBi L3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0dXRpbHMuYwppbmRleCA1YzUwZjBkZDFiZC4u MTMyNmQwZmRiYjcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0dXRp bHMuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHV0aWxzLmMKQEAgLTMwLDkg KzMwLDYgQEAKIAogCiBzdGF0aWMgaW50CV9idF9jb21wYXJlX2ludChjb25zdCB2b2lkICp2YSwg Y29uc3Qgdm9pZCAqdmIpOwotc3RhdGljIGludAlfYnRfa2VlcF9uYXR0cyhSZWxhdGlvbiByZWws IEluZGV4VHVwbGUgbGFzdGxlZnQsCi0JCQkJCQkgICBJbmRleFR1cGxlIGZpcnN0cmlnaHQsIEJU U2Nhbkluc2VydCBpdHVwX2tleSk7Ci0KIAogLyoKICAqIF9idF9ta3NjYW5rZXkKQEAgLTcxMyw3 ICs3MTAsNyBAQCBfYnRfdHJ1bmNhdGUoUmVsYXRpb24gcmVsLCBJbmRleFR1cGxlIGxhc3RsZWZ0 LCBJbmRleFR1cGxlIGZpcnN0cmlnaHQsCiAJQXNzZXJ0KCFCVHJlZVR1cGxlSXNQaXZvdChsYXN0 bGVmdCkgJiYgIUJUcmVlVHVwbGVJc1Bpdm90KGZpcnN0cmlnaHQpKTsKIAogCS8qIERldGVybWlu ZSBob3cgbWFueSBhdHRyaWJ1dGVzIG11c3QgYmUga2VwdCBpbiB0cnVuY2F0ZWQgdHVwbGUgKi8K LQlrZWVwbmF0dHMgPSBfYnRfa2VlcF9uYXR0cyhyZWwsIGxhc3RsZWZ0LCBmaXJzdHJpZ2h0LCBp dHVwX2tleSk7CisJa2VlcG5hdHRzID0gX2J0X2tlZXBfbmF0dHMocmVsLCBsYXN0bGVmdCwgZmly c3RyaWdodCwgaXR1cF9rZXksIE5VTEwpOwogCiAjaWZkZWYgREVCVUdfTk9fVFJVTkNBVEUKIAkv KiBGb3JjZSB0cnVuY2F0aW9uIHRvIGJlIGluZWZmZWN0aXZlIGZvciB0ZXN0aW5nIHB1cnBvc2Vz ICovCkBAIC04MzEsMTcgKzgyOCwyNCBAQCBfYnRfdHJ1bmNhdGUoUmVsYXRpb24gcmVsLCBJbmRl eFR1cGxlIGxhc3RsZWZ0LCBJbmRleFR1cGxlIGZpcnN0cmlnaHQsCiAvKgogICogX2J0X2tlZXBf bmF0dHMgLSBob3cgbWFueSBrZXkgYXR0cmlidXRlcyB0byBrZWVwIHdoZW4gdHJ1bmNhdGluZy4K ICAqCisgKiBUaGlzIGlzIGV4cG9ydGVkIHRvIGJlIHVzZWQgYXMgY29tcGFyaXNvbiBmdW5jdGlv biBkdXJpbmcgY29uY3VycmVudAorICogdW5pcXVlIGluZGV4IGJ1aWxkIGluIGNhc2UgX2J0X2tl ZXBfbmF0dHNfZmFzdCBpcyBub3Qgc3VpdGFibGUgYmVjYXVzZQorICogY29sbGF0aW9uIGlzIG5v dCAiYWxsZXF1YWxpbWFnZSIvZGVkdXBsaWNhdGlvbi1zYWZlLgorICoKICAqIENhbGxlciBwcm92 aWRlcyB0d28gdHVwbGVzIHRoYXQgZW5jbG9zZSBhIHNwbGl0IHBvaW50LiAgQ2FsbGVyJ3MgaW5z ZXJ0aW9uCiAgKiBzY2Fua2V5IGlzIHVzZWQgdG8gY29tcGFyZSB0aGUgdHVwbGVzOyB0aGUgc2Nh bmtleSdzIGFyZ3VtZW50IHZhbHVlcyBhcmUKICAqIG5vdCBjb25zaWRlcmVkIGhlcmUuCiAgKgor ICogaGFzbnVsbHMgdmFsdWUgc2V0IHRvIHRydWUgaW4gY2FzZSBvZiBhbnkgbnVsbCBjb2x1bW4g aW4gYW55IHR1cGxlLgorICoKICAqIFRoaXMgY2FuIHJldHVybiBhIG51bWJlciBvZiBhdHRyaWJ1 dGVzIHRoYXQgaXMgb25lIGdyZWF0ZXIgdGhhbiB0aGUKICAqIG51bWJlciBvZiBrZXkgYXR0cmli dXRlcyBmb3IgdGhlIGluZGV4IHJlbGF0aW9uLiAgVGhpcyBpbmRpY2F0ZXMgdGhhdCB0aGUKICAq IGNhbGxlciBtdXN0IHVzZSBhIGhlYXAgVElEIGFzIGEgdW5pcXVlLWlmaWVyIGluIG5ldyBwaXZv dCB0dXBsZS4KICAqLwotc3RhdGljIGludAoraW50CiBfYnRfa2VlcF9uYXR0cyhSZWxhdGlvbiBy ZWwsIEluZGV4VHVwbGUgbGFzdGxlZnQsIEluZGV4VHVwbGUgZmlyc3RyaWdodCwKLQkJCSAgIEJU U2Nhbkluc2VydCBpdHVwX2tleSkKKwkJCSAgIEJUU2Nhbkluc2VydCBpdHVwX2tleSwKKwkJCSAg IGJvb2wgKmhhc251bGxzKQogewogCWludAkJCW5rZXlhdHRzID0gSW5kZXhSZWxhdGlvbkdldE51 bWJlck9mS2V5QXR0cmlidXRlcyhyZWwpOwogCVR1cGxlRGVzYwlpdHVwZGVzYyA9IFJlbGF0aW9u R2V0RGVzY3IocmVsKTsKQEAgLTg2Nyw2ICs4NzEsOCBAQCBfYnRfa2VlcF9uYXR0cyhSZWxhdGlv biByZWwsIEluZGV4VHVwbGUgbGFzdGxlZnQsIEluZGV4VHVwbGUgZmlyc3RyaWdodCwKIAogCQlk YXR1bTEgPSBpbmRleF9nZXRhdHRyKGxhc3RsZWZ0LCBhdHRudW0sIGl0dXBkZXNjLCAmaXNOdWxs MSk7CiAJCWRhdHVtMiA9IGluZGV4X2dldGF0dHIoZmlyc3RyaWdodCwgYXR0bnVtLCBpdHVwZGVz YywgJmlzTnVsbDIpOworCQlpZiAoaGFzbnVsbHMpCisJCQkqaGFzbnVsbHMgfD0gaXNOdWxsMSB8 IGlzTnVsbDI7CiAKIAkJaWYgKGlzTnVsbDEgIT0gaXNOdWxsMikKIAkJCWJyZWFrOwpAQCAtODg2 LDcgKzg5Miw3IEBAIF9idF9rZWVwX25hdHRzKFJlbGF0aW9uIHJlbCwgSW5kZXhUdXBsZSBsYXN0 bGVmdCwgSW5kZXhUdXBsZSBmaXJzdHJpZ2h0LAogCSAqIGV4cGVjdGVkIGluIGFuIGFsbGVxdWFs aW1hZ2UgaW5kZXguCiAJICovCiAJQXNzZXJ0KCFpdHVwX2tleS0+YWxsZXF1YWxpbWFnZSB8fAot CQkgICBrZWVwbmF0dHMgPT0gX2J0X2tlZXBfbmF0dHNfZmFzdChyZWwsIGxhc3RsZWZ0LCBmaXJz dHJpZ2h0KSk7CisJCSAgIGtlZXBuYXR0cyA9PSBfYnRfa2VlcF9uYXR0c19mYXN0KHJlbCwgbGFz dGxlZnQsIGZpcnN0cmlnaHQsIE5VTEwpKTsKIAogCXJldHVybiBrZWVwbmF0dHM7CiB9CkBAIC04 OTcsNyArOTAzLDggQEAgX2J0X2tlZXBfbmF0dHMoUmVsYXRpb24gcmVsLCBJbmRleFR1cGxlIGxh c3RsZWZ0LCBJbmRleFR1cGxlIGZpcnN0cmlnaHQsCiAgKiBUaGlzIGlzIGV4cG9ydGVkIHNvIHRo YXQgYSBjYW5kaWRhdGUgc3BsaXQgcG9pbnQgY2FuIGhhdmUgaXRzIGVmZmVjdCBvbgogICogc3Vm Zml4IHRydW5jYXRpb24gaW5leHBlbnNpdmVseSBldmFsdWF0ZWQgYWhlYWQgb2YgdGltZSB3aGVu IGZpbmRpbmcgYQogICogc3BsaXQgbG9jYXRpb24uICBBIG5haXZlIGJpdHdpc2UgYXBwcm9hY2gg dG8gZGF0dW0gY29tcGFyaXNvbnMgaXMgdXNlZCB0bwotICogc2F2ZSBjeWNsZXMuCisgKiBzYXZl IGN5Y2xlcy4gQWxzbywgaXQgbWF5IGJlIHVzZWQgYXMgY29tcGFyaXNvbiBmdW5jdGlvbiBkdXJp bmcgY29uY3VycmVudAorICogYnVpbGQgb2YgdW5pcXVlIGluZGV4LgogICoKICAqIFRoZSBhcHBy b2FjaCB0YWtlbiBoZXJlIHVzdWFsbHkgcHJvdmlkZXMgdGhlIHNhbWUgYW5zd2VyIGFzIF9idF9r ZWVwX25hdHRzCiAgKiB3aWxsIChmb3IgdGhlIHNhbWUgcGFpciBvZiB0dXBsZXMgZnJvbSBhIGhl YXBrZXlzcGFjZSBpbmRleCksIHNpbmNlIHRoZQpAQCAtOTA2LDYgKzkxMyw4IEBAIF9idF9rZWVw X25hdHRzKFJlbGF0aW9uIHJlbCwgSW5kZXhUdXBsZSBsYXN0bGVmdCwgSW5kZXhUdXBsZSBmaXJz dHJpZ2h0LAogICogImVxdWFsIGltYWdlIiBjb2x1bW5zLCByb3V0aW5lIGlzIGd1YXJhbnRlZWQg dG8gZ2l2ZSB0aGUgc2FtZSByZXN1bHQgYXMKICAqIF9idF9rZWVwX25hdHRzIHdvdWxkLgogICoK KyAqIGhhc251bGxzIHZhbHVlIHNldCB0byB0cnVlIGluIGNhc2Ugb2YgYW55IG51bGwgY29sdW1u IGluIGFueSB0dXBsZS4KKyAqCiAgKiBDYWxsZXJzIGNhbiByZWx5IG9uIHRoZSBmYWN0IHRoYXQg YXR0cmlidXRlcyBjb25zaWRlcmVkIGVxdWFsIGhlcmUgYXJlCiAgKiBkZWZpbml0ZWx5IGFsc28g ZXF1YWwgYWNjb3JkaW5nIHRvIF9idF9rZWVwX25hdHRzLCBldmVuIHdoZW4gdGhlIGluZGV4IHVz ZXMKICAqIGFuIG9wY2xhc3Mgb3IgY29sbGF0aW9uIHRoYXQgaXMgbm90ICJhbGxlcXVhbGltYWdl Ii9kZWR1cGxpY2F0aW9uLXNhZmUuCkBAIC05MTQsNyArOTIzLDggQEAgX2J0X2tlZXBfbmF0dHMo UmVsYXRpb24gcmVsLCBJbmRleFR1cGxlIGxhc3RsZWZ0LCBJbmRleFR1cGxlIGZpcnN0cmlnaHQs CiAgKiBtb3JlIGJhbGFuY2VkIHNwbGl0IHBvaW50LgogICovCiBpbnQKLV9idF9rZWVwX25hdHRz X2Zhc3QoUmVsYXRpb24gcmVsLCBJbmRleFR1cGxlIGxhc3RsZWZ0LCBJbmRleFR1cGxlIGZpcnN0 cmlnaHQpCitfYnRfa2VlcF9uYXR0c19mYXN0KFJlbGF0aW9uIHJlbCwgSW5kZXhUdXBsZSBsYXN0 bGVmdCwgSW5kZXhUdXBsZSBmaXJzdHJpZ2h0LAorCQkJCQlib29sICpoYXNudWxscykKIHsKIAlU dXBsZURlc2MJaXR1cGRlc2MgPSBSZWxhdGlvbkdldERlc2NyKHJlbCk7CiAJaW50CQkJa2V5c3og PSBJbmRleFJlbGF0aW9uR2V0TnVtYmVyT2ZLZXlBdHRyaWJ1dGVzKHJlbCk7CkBAIC05MzEsNiAr OTQxLDggQEAgX2J0X2tlZXBfbmF0dHNfZmFzdChSZWxhdGlvbiByZWwsIEluZGV4VHVwbGUgbGFz dGxlZnQsIEluZGV4VHVwbGUgZmlyc3RyaWdodCkKIAogCQlkYXR1bTEgPSBpbmRleF9nZXRhdHRy KGxhc3RsZWZ0LCBhdHRudW0sIGl0dXBkZXNjLCAmaXNOdWxsMSk7CiAJCWRhdHVtMiA9IGluZGV4 X2dldGF0dHIoZmlyc3RyaWdodCwgYXR0bnVtLCBpdHVwZGVzYywgJmlzTnVsbDIpOworCQlpZiAo aGFzbnVsbHMpCisJCQkqaGFzbnVsbHMgfD0gaXNOdWxsMSB8IGlzTnVsbDI7CiAJCWF0dCA9IFR1 cGxlRGVzY0NvbXBhY3RBdHRyKGl0dXBkZXNjLCBhdHRudW0gLSAxKTsKIAogCQlpZiAoaXNOdWxs MSAhPSBpc051bGwyKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jIGIv c3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCmluZGV4IGI1NDkyMWFkNTQ2Li44ZGRlZjA4NThm MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCisrKyBiL3NyYy9iYWNr ZW5kL2NhdGFsb2cvaW5kZXguYwpAQCAtMTUzMSw3ICsxNTMxLDcgQEAgaW5kZXhfY29uY3VycmVu dGx5X2J1aWxkKE9pZCBoZWFwUmVsYXRpb25JZCwKIAlpbmRleF9idWlsZChoZWFwUmVsLCBpbmRl eFJlbGF0aW9uLCBpbmRleEluZm8sIGZhbHNlLCB0cnVlKTsKIAogCUludmFsaWRhdGVDYXRhbG9n U25hcHNob3QoKTsKLQlBc3NlcnQoaW5kZXhJbmZvLT5paV9VbmlxdWUgfHwgIVRyYW5zYWN0aW9u SWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOworCUFzc2VydCghVHJhbnNhY3Rpb25JZElzVmFsaWQo TXlQcm9jLT54bWluKSk7CiAKIAkvKiBSb2xsIGJhY2sgYW55IEdVQyBjaGFuZ2VzIGV4ZWN1dGVk IGJ5IGluZGV4IGZ1bmN0aW9ucyAqLwogCUF0RU9YYWN0X0dVQyhmYWxzZSwgc2F2ZV9uZXN0bGV2 ZWwpOwpAQCAtMzMyMiw5ICszMzIyLDkgQEAgSW5kZXhDaGVja0V4Y2x1c2lvbihSZWxhdGlvbiBo ZWFwUmVsYXRpb24sCiAgKiBpZiB3ZSB1c2VkIEhlYXBUdXBsZVNhdGlzZmllc1ZhY3V1bSkuICBU aGlzIGxlYXZlcyB1cyB3aXRoIGFuIGluZGV4IHRoYXQKICAqIGRvZXMgbm90IGNvbnRhaW4gYW55 IHR1cGxlcyBhZGRlZCB0byB0aGUgdGFibGUgd2hpbGUgd2UgYnVpbHQgdGhlIGluZGV4LgogICoK LSAqIEZ1cnRoZXJtb3JlLCBpbiBjYXNlIG9mIG5vbi11bmlxdWUgaW5kZXggd2Ugc2V0IFNPX1JF U0VUX1NOQVBTSE9UIGZvciB0aGUKLSAqIHNjYW4sIHdoaWNoIGNhdXNlcyBuZXcgc25hcHNob3Qg dG8gYmUgc2V0IGFzIGFjdGl2ZSBldmVyeSBzbyBvZnRlbi4gVGhlIHJlYXNvbgotICogZm9yIHRo YXQgaXMgdG8gcHJvcGFnYXRlIHRoZSB4bWluIGhvcml6b24gZm9yd2FyZC4KKyAqIEZ1cnRoZXJt b3JlLCB3ZSBzZXQgU09fUkVTRVRfU05BUFNIT1QgZm9yIHRoZSBzY2FuLCB3aGljaCBjYXVzZXMg bmV3CisgKiBzbmFwc2hvdCB0byBiZSBzZXQgYXMgYWN0aXZlIGV2ZXJ5IHNvIG9mdGVuLiBUaGUg cmVhc29uICBmb3IgdGhhdCBpcyB0bworICogcHJvcGFnYXRlIHRoZSB4bWluIGhvcml6b24gZm9y d2FyZC4KICAqCiAgKiBOZXh0LCB3ZSBtYXJrIHRoZSBpbmRleCAiaW5kaXNyZWFkeSIgKGJ1dCBz dGlsbCBub3QgImluZGlzdmFsaWQiKSBhbmQKICAqIGNvbW1pdCB0aGUgc2Vjb25kIHRyYW5zYWN0 aW9uIGFuZCBzdGFydCBhIHRoaXJkLiAgQWdhaW4gd2Ugd2FpdCBmb3IgYWxsCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRz L2luZGV4Y21kcy5jCmluZGV4IDY3ZTIwNzIyMGQxLi4yYzViMTliMzkxMCAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFu ZHMvaW5kZXhjbWRzLmMKQEAgLTE3MDEsOCArMTcwMSw4IEBAIERlZmluZUluZGV4KFBhcnNlU3Rh dGUgKnBzdGF0ZSwKIAkgKiBjaGFpbnMgY2FuIGJlIGNyZWF0ZWQgd2hlcmUgdGhlIG5ldyB0dXBs ZSBhbmQgdGhlIG9sZCB0dXBsZSBpbiB0aGUKIAkgKiBjaGFpbiBoYXZlIGRpZmZlcmVudCBpbmRl eCBrZXlzLgogCSAqCi0JICogV2UgYnVpbGQgdGhlIGluZGV4IHVzaW5nIGFsbCB0dXBsZXMgdGhh dCBhcmUgdmlzaWJsZSB1c2luZyBzaW5nbGUgb3IKLQkgKiBtdWx0aXBsZSByZWZyZXNoaW5nIHNu YXBzaG90cy4gV2UgY2FuIGJlIHN1cmUgdGhhdCBhbnkgSE9UIHVwZGF0ZXMgdG8KKwkgKiBXZSBi dWlsZCB0aGUgaW5kZXggdXNpbmcgYWxsIHR1cGxlcyB0aGF0IGFyZSB2aXNpYmxlIHVzaW5nIG11 bHRpcGxlCisJICogcmVmcmVzaGluZyBzbmFwc2hvdHMuIFdlIGNhbiBiZSBzdXJlIHRoYXQgYW55 IEhPVCB1cGRhdGVzIHRvCiAJICogdGhlc2UgdHVwbGVzIHdpbGwgYmUgY29tcGF0aWJsZSB3aXRo IHRoZSBpbmRleCwgc2luY2UgYW55IHVwZGF0ZXMgbWFkZQogCSAqIGJ5IHRyYW5zYWN0aW9ucyB0 aGF0IGRpZG4ndCBrbm93IGFib3V0IHRoZSBpbmRleCBhcmUgbm93IGNvbW1pdHRlZCBvcgogCSAq IHJvbGxlZCBiYWNrLiAgVGh1cywgZWFjaCB2aXNpYmxlIHR1cGxlIGlzIGVpdGhlciB0aGUgZW5k IG9mIGl0cwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvc29ydC90dXBsZXNvcnR2YXJp YW50cy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvc29ydC90dXBsZXNvcnR2YXJpYW50cy5jCmluZGV4 IDI1MDlhYzNlM2E0Li4xZWNmNzQ1YzY2MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMv c29ydC90dXBsZXNvcnR2YXJpYW50cy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL3NvcnQvdHVw bGVzb3J0dmFyaWFudHMuYwpAQCAtMjUsNiArMjUsOCBAQAogI2luY2x1ZGUgImFjY2Vzcy9oYXNo LmgiCiAjaW5jbHVkZSAiYWNjZXNzL2h0dXBfZGV0YWlscy5oIgogI2luY2x1ZGUgImFjY2Vzcy9u YnRyZWUuaCIKKyNpbmNsdWRlICJhY2Nlc3MvcmVsc2Nhbi5oIgorI2luY2x1ZGUgImFjY2Vzcy90 YWJsZWFtLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9pbmRleC5oIgogI2luY2x1ZGUgImNhdGFsb2cv cGdfY29sbGF0aW9uLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY3V0b3IuaCIKQEAgLTM1LDYg KzM3LDcgQEAKICNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy9y ZWwuaCIKICNpbmNsdWRlICJ1dGlscy90dXBsZXNvcnQuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3By b2MuaCIKIAogCiAvKiBzb3J0LXR5cGUgY29kZXMgZm9yIHNvcnRfX3N0YXJ0IHByb2JlcyAqLwpA QCAtMTM2LDYgKzEzOSw3IEBAIHR5cGVkZWYgc3RydWN0CiAKIAlib29sCQllbmZvcmNlVW5pcXVl OwkvKiBjb21wbGFpbiBpZiB3ZSBmaW5kIGR1cGxpY2F0ZSB0dXBsZXMgKi8KIAlib29sCQl1bmlx dWVOdWxsc05vdERpc3RpbmN0OyAvKiB1bmlxdWUgY29uc3RyYWludCBudWxsIHRyZWF0bWVudCAq LworCWJvb2wJCXVuaXF1ZURlYWRJZ25vcmVkOyAvKiBpZ25vcmUgZGVhZCB0dXBsZXMgaW4gdW5p cXVlIGNoZWNrICovCiB9IFR1cGxlc29ydEluZGV4QlRyZWVBcmc7CiAKIC8qCkBAIC0zNjEsNiAr MzY1LDcgQEAgdHVwbGVzb3J0X2JlZ2luX2luZGV4X2J0cmVlKFJlbGF0aW9uIGhlYXBSZWwsCiAJ CQkJCQkJUmVsYXRpb24gaW5kZXhSZWwsCiAJCQkJCQkJYm9vbCBlbmZvcmNlVW5pcXVlLAogCQkJ CQkJCWJvb2wgdW5pcXVlTnVsbHNOb3REaXN0aW5jdCwKKwkJCQkJCQlib29sIHVuaXF1ZURlYWRJ Z25vcmVkLAogCQkJCQkJCWludCB3b3JrTWVtLAogCQkJCQkJCVNvcnRDb29yZGluYXRlIGNvb3Jk aW5hdGUsCiAJCQkJCQkJaW50IHNvcnRvcHQpCkBAIC00MDMsNiArNDA4LDcgQEAgdHVwbGVzb3J0 X2JlZ2luX2luZGV4X2J0cmVlKFJlbGF0aW9uIGhlYXBSZWwsCiAJYXJnLT5pbmRleC5pbmRleFJl bCA9IGluZGV4UmVsOwogCWFyZy0+ZW5mb3JjZVVuaXF1ZSA9IGVuZm9yY2VVbmlxdWU7CiAJYXJn LT51bmlxdWVOdWxsc05vdERpc3RpbmN0ID0gdW5pcXVlTnVsbHNOb3REaXN0aW5jdDsKKwlhcmct PnVuaXF1ZURlYWRJZ25vcmVkID0gdW5pcXVlRGVhZElnbm9yZWQ7CiAKIAlpbmRleFNjYW5LZXkg PSBfYnRfbWtzY2Fua2V5KGluZGV4UmVsLCBOVUxMKTsKIApAQCAtMTY3MCw2ICsxNjc2LDcgQEAg Y29tcGFyZXR1cF9pbmRleF9idHJlZV90aWVicmVhayhjb25zdCBTb3J0VHVwbGUgKmEsIGNvbnN0 IFNvcnRUdXBsZSAqYiwKIAkJRGF0dW0JCXZhbHVlc1tJTkRFWF9NQVhfS0VZU107CiAJCWJvb2wJ CWlzbnVsbFtJTkRFWF9NQVhfS0VZU107CiAJCWNoYXIJICAgKmtleV9kZXNjOworCQlib29sCQl1 bmlxdWVDaGVja0ZhaWwgPSB0cnVlOwogCiAJCS8qCiAJCSAqIFNvbWUgcmF0aGVyIGJyYWluLWRl YWQgaW1wbGVtZW50YXRpb25zIG9mIHFzb3J0IChzdWNoIGFzIHRoZSBvbmUgaW4KQEAgLTE2Nzks MTggKzE2ODYsNTggQEAgY29tcGFyZXR1cF9pbmRleF9idHJlZV90aWVicmVhayhjb25zdCBTb3J0 VHVwbGUgKmEsIGNvbnN0IFNvcnRUdXBsZSAqYiwKIAkJICovCiAJCUFzc2VydCh0dXBsZTEgIT0g dHVwbGUyKTsKIAotCQlpbmRleF9kZWZvcm1fdHVwbGUodHVwbGUxLCB0dXBEZXMsIHZhbHVlcywg aXNudWxsKTsKLQotCQlrZXlfZGVzYyA9IEJ1aWxkSW5kZXhWYWx1ZURlc2NyaXB0aW9uKGFyZy0+ aW5kZXguaW5kZXhSZWwsIHZhbHVlcywgaXNudWxsKTsKLQotCQllcmVwb3J0KEVSUk9SLAotCQkJ CShlcnJjb2RlKEVSUkNPREVfVU5JUVVFX1ZJT0xBVElPTiksCi0JCQkJIGVycm1zZygiY291bGQg bm90IGNyZWF0ZSB1bmlxdWUgaW5kZXggXCIlc1wiIiwKLQkJCQkJCVJlbGF0aW9uR2V0UmVsYXRp b25OYW1lKGFyZy0+aW5kZXguaW5kZXhSZWwpKSwKLQkJCQkga2V5X2Rlc2MgPyBlcnJkZXRhaWwo IktleSAlcyBpcyBkdXBsaWNhdGVkLiIsIGtleV9kZXNjKSA6Ci0JCQkJIGVycmRldGFpbCgiRHVw bGljYXRlIGtleXMgZXhpc3QuIiksCi0JCQkJIGVycnRhYmxlY29uc3RyYWludChhcmctPmluZGV4 LmhlYXBSZWwsCi0JCQkJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShhcmctPmluZGV4Lmlu ZGV4UmVsKSkpKTsKKwkJLyogVGhpcyBpcyBmYWlsLWZhc3QgY2hlY2ssIHNlZSBfYnRfbG9hZCBm b3IgZGV0YWlscy4gKi8KKwkJaWYgKGFyZy0+dW5pcXVlRGVhZElnbm9yZWQpCisJCXsKKwkJCWJv b2wJYW55X3R1cGxlX2RlYWQsCisJCQkJCWNhbGxfYWdhaW4gPSBmYWxzZSwKKwkJCQkJaWdub3Jl ZDsKKworCQkJVHVwbGVUYWJsZVNsb3QJKnNsb3QgPSBNYWtlU2luZ2xlVHVwbGVUYWJsZVNsb3Qo UmVsYXRpb25HZXREZXNjcihhcmctPmluZGV4LmhlYXBSZWwpLAorCQkJCQkJCQkJCQkJCQkJICZU VFNPcHNCdWZmZXJIZWFwVHVwbGUpOworCQkJSXRlbVBvaW50ZXJEYXRhIHRpZCA9IHR1cGxlMS0+ dF90aWQ7CisKKwkJCUluZGV4RmV0Y2hUYWJsZURhdGEgKmZldGNoID0gdGFibGVfaW5kZXhfZmV0 Y2hfYmVnaW4oYXJnLT5pbmRleC5oZWFwUmVsKTsKKwkJCWFueV90dXBsZV9kZWFkID0gIXRhYmxl X2luZGV4X2ZldGNoX3R1cGxlKGZldGNoLCAmdGlkLCBTbmFwc2hvdFNlbGYsIHNsb3QsICZjYWxs X2FnYWluLCAmaWdub3JlZCk7CisKKwkJCWlmICghYW55X3R1cGxlX2RlYWQpCisJCQl7CisJCQkJ Y2FsbF9hZ2FpbiA9IGZhbHNlOworCQkJCXRpZCA9IHR1cGxlMi0+dF90aWQ7CisJCQkJYW55X3R1 cGxlX2RlYWQgPSAhdGFibGVfaW5kZXhfZmV0Y2hfdHVwbGUoZmV0Y2gsICZ0dXBsZTItPnRfdGlk LCBTbmFwc2hvdFNlbGYsIHNsb3QsICZjYWxsX2FnYWluLAorCQkJCQkJCQkJCQkJCQkgICZpZ25v cmVkKTsKKwkJCX0KKworCQkJaWYgKGFueV90dXBsZV9kZWFkKQorCQkJeworCQkJCWVsb2coREVC VUc1LCAic2tpcHBpbmcgZHVwbGljYXRlIHZhbHVlcyBiZWNhdXNlIHNvbWUgb2YgdGhlbSBhcmUg ZGVhZDogKCV1LCV1KSB2cyAoJXUsJXUpIiwKKwkJCQkJIEl0ZW1Qb2ludGVyR2V0QmxvY2tOdW1i ZXIoJnR1cGxlMS0+dF90aWQpLAorCQkJCQkgSXRlbVBvaW50ZXJHZXRPZmZzZXROdW1iZXIoJnR1 cGxlMS0+dF90aWQpLAorCQkJCQkgSXRlbVBvaW50ZXJHZXRCbG9ja051bWJlcigmdHVwbGUyLT50 X3RpZCksCisJCQkJCSBJdGVtUG9pbnRlckdldE9mZnNldE51bWJlcigmdHVwbGUyLT50X3RpZCkp OworCisJCQkJdW5pcXVlQ2hlY2tGYWlsID0gZmFsc2U7CisJCQl9CisJCQlFeGVjRHJvcFNpbmds ZVR1cGxlVGFibGVTbG90KHNsb3QpOworCQkJdGFibGVfaW5kZXhfZmV0Y2hfZW5kKGZldGNoKTsK KwkJCUFzc2VydCghVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CisJCX0KKwkJ aWYgKHVuaXF1ZUNoZWNrRmFpbCkKKwkJeworCQkJaW5kZXhfZGVmb3JtX3R1cGxlKHR1cGxlMSwg dHVwRGVzLCB2YWx1ZXMsIGlzbnVsbCk7CisKKwkJCWtleV9kZXNjID0gQnVpbGRJbmRleFZhbHVl RGVzY3JpcHRpb24oYXJnLT5pbmRleC5pbmRleFJlbCwgdmFsdWVzLCBpc251bGwpOworCisJCQkv KiBrZWVwIHRoaXMgZXJyb3IgbWVzc2FnZSBpbiBzeW5jIHdpdGggdGhlIHNhbWUgaW4gX2J0X2xv YWQgKi8KKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfVU5JUVVFX1ZJ T0xBVElPTiksCisJCQkJCQkJZXJybXNnKCJjb3VsZCBub3QgY3JlYXRlIHVuaXF1ZSBpbmRleCBc IiVzXCIiLAorCQkJCQkJCQkgICBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShhcmctPmluZGV4Lmlu ZGV4UmVsKSksCisJCQkJCQkJa2V5X2Rlc2MgPyBlcnJkZXRhaWwoIktleSAlcyBpcyBkdXBsaWNh dGVkLiIsIGtleV9kZXNjKSA6CisJCQkJCQkJZXJyZGV0YWlsKCJEdXBsaWNhdGUga2V5cyBleGlz dC4iKSwKKwkJCQkJCQllcnJ0YWJsZWNvbnN0cmFpbnQoYXJnLT5pbmRleC5oZWFwUmVsLAorCQkJ CQkJCQkJCQkgICBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShhcmctPmluZGV4LmluZGV4UmVsKSkp KTsKKwkJfQogCX0KIAogCS8qCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvbmJ0cmVl LmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvbmJ0cmVlLmgKaW5kZXggNzcyMjQ4NTk2ODUuLjc2ZTI3 N2MyZTNkIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvbmJ0cmVlLmgKKysrIGIvc3Jj L2luY2x1ZGUvYWNjZXNzL25idHJlZS5oCkBAIC0xMzEwLDggKzEzMTAsMTAgQEAgZXh0ZXJuIGJv b2wgYnRwcm9wZXJ0eShPaWQgaW5kZXhfb2lkLCBpbnQgYXR0bm8sCiBleHRlcm4gY2hhciAqYnRi dWlsZHBoYXNlbmFtZShpbnQ2NCBwaGFzZW51bSk7CiBleHRlcm4gSW5kZXhUdXBsZSBfYnRfdHJ1 bmNhdGUoUmVsYXRpb24gcmVsLCBJbmRleFR1cGxlIGxhc3RsZWZ0LAogCQkJCQkJCSAgIEluZGV4 VHVwbGUgZmlyc3RyaWdodCwgQlRTY2FuSW5zZXJ0IGl0dXBfa2V5KTsKK2V4dGVybiBpbnQJX2J0 X2tlZXBfbmF0dHMoUmVsYXRpb24gcmVsLCBJbmRleFR1cGxlIGxhc3RsZWZ0LCBJbmRleFR1cGxl IGZpcnN0cmlnaHQsCisJCQkJCQkgICBCVFNjYW5JbnNlcnQgaXR1cF9rZXksIGJvb2wgKmhhc251 bGxzKTsKIGV4dGVybiBpbnQJX2J0X2tlZXBfbmF0dHNfZmFzdChSZWxhdGlvbiByZWwsIEluZGV4 VHVwbGUgbGFzdGxlZnQsCi0JCQkJCQkJCUluZGV4VHVwbGUgZmlyc3RyaWdodCk7CisJCQkJCQkJ CUluZGV4VHVwbGUgZmlyc3RyaWdodCwgYm9vbCAqaGFzbnVsbHMpOwogZXh0ZXJuIGJvb2wgX2J0 X2NoZWNrX25hdHRzKFJlbGF0aW9uIHJlbCwgYm9vbCBoZWFwa2V5c3BhY2UsIFBhZ2UgcGFnZSwK IAkJCQkJCQlPZmZzZXROdW1iZXIgb2ZmbnVtKTsKIGV4dGVybiB2b2lkIF9idF9jaGVja190aGly ZF9wYWdlKFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gaGVhcCwKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL2FjY2Vzcy90YWJsZWFtLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oCmluZGV4 IDg0YjA2ZmZhNDJmLi45MjI5MGU3OTU5MSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNz L3RhYmxlYW0uaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oCkBAIC0xNzg0LDcg KzE3ODQsNyBAQCB0YWJsZV9zY2FuX2FuYWx5emVfbmV4dF90dXBsZShUYWJsZVNjYW5EZXNjIHNj YW4sCiAgKiBUaGlzIG9ubHkgcmVhbGx5IG1ha2VzIHNlbnNlIGZvciBoZWFwIEFNLCBpdCBtaWdo dCBuZWVkIHRvIGJlIGdlbmVyYWxpemVkCiAgKiBmb3Igb3RoZXIgQU1zIGxhdGVyLgogICoKLSAq IEluIGNhc2Ugb2Ygbm9uLXVuaXF1ZSBjb25jdXJyZW50IGluZGV4IGJ1aWxkLAorICogSW4gY2Fz ZSBvZiBjb25jdXJyZW50IGluZGV4IGJ1aWxkLAogICogU09fUkVTRVRfU05BUFNIT1QgaXMgYXBw bGllZCBmb3IgdGhlIHNjYW4uIFRoYXQgbGVhZHMgdG8gY2hhbmdpbmcgc25hcHNob3RzCiAgKiBv biB0aGUgZmx5IHRvIGFsbG93IHhtaW4gaG9yaXpvbiBwcm9wYWdhdGUuCiAgKi8KZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL3V0aWxzL3R1cGxlc29ydC5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvdHVw bGVzb3J0LmgKaW5kZXggZGE2OGY0NWFjZjIuLjQ0OGRjODNhYTU4IDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS91dGlscy90dXBsZXNvcnQuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy90dXBsZXNv cnQuaApAQCAtMzk2LDYgKzM5Niw3IEBAIGV4dGVybiBUdXBsZXNvcnRzdGF0ZSAqdHVwbGVzb3J0 X2JlZ2luX2luZGV4X2J0cmVlKFJlbGF0aW9uIGhlYXBSZWwsCiAJCQkJCQkJCQkJCQkgICBSZWxh dGlvbiBpbmRleFJlbCwKIAkJCQkJCQkJCQkJCSAgIGJvb2wgZW5mb3JjZVVuaXF1ZSwKIAkJCQkJ CQkJCQkJCSAgIGJvb2wgdW5pcXVlTnVsbHNOb3REaXN0aW5jdCwKKwkJCQkJCQkJCQkJCSAgIGJv b2wJdW5pcXVlRGVhZElnbm9yZWQsCiAJCQkJCQkJCQkJCQkgICBpbnQgd29ya01lbSwgU29ydENv b3JkaW5hdGUgY29vcmRpbmF0ZSwKIAkJCQkJCQkJCQkJCSAgIGludCBzb3J0b3B0KTsKIGV4dGVy biBUdXBsZXNvcnRzdGF0ZSAqdHVwbGVzb3J0X2JlZ2luX2luZGV4X2hhc2goUmVsYXRpb24gaGVh cFJlbCwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9leHBl Y3RlZC9jaWNfcmVzZXRfc25hcHNob3RzLm91dCBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9u X3BvaW50cy9leHBlY3RlZC9jaWNfcmVzZXRfc25hcHNob3RzLm91dAppbmRleCBiNGFkOTBlYjMz OS4uYmI4NGQ2MWY0MGQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3Bv aW50cy9leHBlY3RlZC9jaWNfcmVzZXRfc25hcHNob3RzLm91dAorKysgYi9zcmMvdGVzdC9tb2R1 bGVzL2luamVjdGlvbl9wb2ludHMvZXhwZWN0ZWQvY2ljX3Jlc2V0X3NuYXBzaG90cy5vdXQKQEAg LTE3LDYgKzE3LDEyIEBAIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgndGFibGVfYmVn aW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cycsICdub3RpY2UnCiAgCiAoMSByb3cpCiAKK1NF TEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgndGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxp emUnLCAnbm90aWNlJyk7CisgaW5qZWN0aW9uX3BvaW50c19hdHRhY2ggCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKIENSRUFURSBTQ0hFTUEgY2ljX3Jlc2V0X3NuYXA7 CiBDUkVBVEUgVEFCTEUgY2ljX3Jlc2V0X3NuYXAudGJsKGkgaW50IHByaW1hcnkga2V5LCBqIGlu dCk7CiBJTlNFUlQgSU5UTyBjaWNfcmVzZXRfc25hcC50YmwgU0VMRUNUIGksIGkgKiBJIEZST00g Z2VuZXJhdGVfc2VyaWVzKDEsIDIwMCkgcyhpKTsKQEAgLTM1LDcgKzQxLDExIEBAIEVORDsgJCQ7 CiAtLS0tLS0tLS0tLS0tLS0tCiBBTFRFUiBUQUJMRSBjaWNfcmVzZXRfc25hcC50YmwgU0VUIChw YXJhbGxlbF93b3JrZXJzPTApOwogQ1JFQVRFIFVOSVFVRSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4 IE9OIGNpY19yZXNldF9zbmFwLnRibChpKTsKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9y IGluamVjdGlvbiBwb2ludCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzCitO T1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcF9yZXNldF9z Y2FuX3NuYXBzaG90X2VmZmVjdGl2ZQogUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jl c2V0X3NuYXAuaWR4OworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBv aW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMKK05PVElDRTogIG5vdGlj ZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3Rf ZWZmZWN0aXZlCiBEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CiBD UkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSk7CiBO T1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfYmVnaW5z Y2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cwpAQCAtNzIsMzAgKzgyLDQ3IEBAIE5PVElDRTogIG5v dGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFwX3Jlc2V0X3NjYW5fc25hcHNo b3RfZWZmZWN0aXZlCiBEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7 CiAtLSBUaGUgc2FtZSBpbiBwYXJhbGxlbCBtb2RlCiBBTFRFUiBUQUJMRSBjaWNfcmVzZXRfc25h cC50YmwgU0VUIChwYXJhbGxlbF93b3JrZXJzPTIpOworLS0gRGV0YWNoIHRvIGtlZXAgdGVzdCBz dGFibGUsIHNpbmNlIHBhcmFsbGVsIHdvcmtlciBtYXkgY29tcGxldGUgc2NhbiBiZWZvcmUgbGVh ZGVyCitTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19kZXRhY2goJ2hlYXBfcmVzZXRfc2Nhbl9zbmFw c2hvdF9lZmZlY3RpdmUnKTsKKyBpbmplY3Rpb25fcG9pbnRzX2RldGFjaCAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKwogQ1JFQVRFIFVOSVFVRSBJTkRFWCBDT05DVVJS RU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChpKTsKK05PVElDRTogIG5vdGljZSB0cmln Z2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZQog UkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworTk9USUNFOiAg bm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX3BhcmFsbGVsc2Nhbl9p bml0aWFsaXplCiBEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CiBD UkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSk7CitO T1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfcGFyYWxs ZWxzY2FuX2luaXRpYWxpemUKIFJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9z bmFwLmlkeDsKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0 YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZQogRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2lj X3Jlc2V0X3NuYXAuaWR4OwogQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jl c2V0X3NuYXAudGJsKE1PRChpLCAyKSwgaikgV0hFUkUgTU9EKGksIDIpID0gMDsKK05PVElDRTog IG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9wYXJhbGxlbHNjYW5f aW5pdGlhbGl6ZQogUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4 OworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX3Bh cmFsbGVsc2Nhbl9pbml0aWFsaXplCiBEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRf c25hcC5pZHg7CiBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25h cC50YmwoaSwgaikgV0hFUkUgY2ljX3Jlc2V0X3NuYXAucHJlZGljYXRlX3N0YWJsZShpKTsKIE5P VElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9iZWdpbnNj YW5fc3RyYXRfcmVzZXRfc25hcHNob3RzCi1OT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBp bmplY3Rpb24gcG9pbnQgaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZQogUkVJTkRF WCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogTk9USUNFOiAgbm90aWNl IHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNl dF9zbmFwc2hvdHMKLU5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2lu dCBoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3RfZWZmZWN0aXZlCiBEUk9QIElOREVYIENPTkNVUlJF TlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CiBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBP TiBjaWNfcmVzZXRfc25hcC50YmwoaSwgaikgV0hFUkUgY2ljX3Jlc2V0X3NuYXAucHJlZGljYXRl X3N0YWJsZV9ub19wYXJhbSgpOworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0 aW9uIHBvaW50IHRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplCiBSRUlOREVYIElOREVYIENP TkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVk IGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUKIERST1Ag SU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKIENSRUFURSBJTkRFWCBDT05D VVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChpIERFU0MgTlVMTFMgTEFTVCk7CitO T1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfcGFyYWxs ZWxzY2FuX2luaXRpYWxpemUKIFJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9z bmFwLmlkeDsKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0 YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZQogRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2lj X3Jlc2V0X3NuYXAuaWR4OwogQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jl c2V0X3NuYXAudGJsIFVTSU5HIEJSSU4oaSk7CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZv ciBpbmplY3Rpb24gcG9pbnQgdGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUKIFJFSU5ERVgg SU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK05PVElDRTogIG5vdGljZSB0 cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6 ZQogRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogQkVHSU4gVFJB TlNBQ1RJT047CiBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25h cC50YmwoaSk7Ci0tIAoyLjQzLjAKCg== --00000000000002ed91064c8c21cc Content-Type: application/x-patch; name="v2-0002-Reset-snapshots-periodically-in-non-unique-non-pa.patch" Content-Disposition: attachment; filename="v2-0002-Reset-snapshots-periodically-in-non-unique-non-pa.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmi3f2m62 RnJvbSAyY2VjZmVkZTUyN2YzZjg4NmYzZGVmYjI3OTM4YjM2MTAyNTdlMWM2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogV2VkLCAxNCBKYW4gMjAyNiAxNTo1OTo0NyArMDMwMApTdWJqZWN0OiBb UEFUQ0ggdjIgMi80XSBSZXNldCBzbmFwc2hvdHMgcGVyaW9kaWNhbGx5IGluIG5vbi11bmlxdWUK IG5vbi1wYXJhbGxlbCBjb25jdXJyZW50IGluZGV4IGJ1aWxkcwoKTG9uZy1saXZpbmcgc25hcHNo b3RzIHVzZWQgYnkgQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBhbmQgUkVJTkRFWCBDT05DVVJS RU5UTFkgY2FuIGhvbGQgYmFjayB0aGUgZ2xvYmFsIHhtaW4gaG9yaXpvbi4gQ29tbWl0IGQ5ZDA3 NjIyMmY1YiBhdHRlbXB0ZWQgdG8gYWxsb3cgVkFDVVVNIHRvIGlnbm9yZSBzdWNoIHNuYXBzaG90 cyB0byBtaXRpZ2F0ZSB0aGlzIHByb2JsZW0uIEhvd2V2ZXIsIHRoaXMgd2FzIHJldmVydGVkIGlu IGNvbW1pdCBlMjhiYjg4NTE5NjkgYmVjYXVzZSBpdCBjb3VsZCBjYXVzZSBpbmRleGVzIHRvIG1p c3MgaGVhcCB0dXBsZXMgdGhhdCB3ZXJlIEhPVC11cGRhdGVkIGFuZCBIT1QtcHJ1bmVkIGR1cmlu ZyB0aGUgaW5kZXggY3JlYXRpb24sIGxlYWRpbmcgdG8gaW5kZXggY29ycnVwdGlvbi4KClRoaXMg cGF0Y2ggaW50cm9kdWNlcyBhbiBhbHRlcm5hdGl2ZSBieSBwZXJpb2RpY2FsbHkgcmVzZXR0aW5n IHRoZSBzbmFwc2hvdCB1c2VkIGR1cmluZyB0aGUgZmlyc3QgcGhhc2UuIEJ5IHJlc2V0dGluZyB0 aGUgc25hcHNob3QgZXZlcnkgTiBwYWdlcyBkdXJpbmcgdGhlIGhlYXAgc2NhbiwgaXQgYWxsb3dz IHRoZSB4bWluIGhvcml6b24gdG8gYWR2YW5jZS4KCkN1cnJlbnRseSwgdGhpcyB0ZWNobmlxdWUg aXMgYXBwbGllZCB0bzoKCi0gb25seSBkdXJpbmcgdGhlIGZpcnN0IHNjYW4gb2YgdGhlIGhlYXA6 IFRoZSBzZWNvbmQgc2NhbiBkdXJpbmcgaW5kZXggdmFsaWRhdGlvbiBzdGlsbCB1c2VzIGEgc2lu Z2xlIHNuYXBzaG90IHRvIGVuc3VyZSBpbmRleCBjb3JyZWN0bmVzcwotIG5vbi1wYXJhbGxlbCBp bmRleCBidWlsZHM6IFBhcmFsbGVsIGluZGV4IGJ1aWxkcyBhcmUgbm90IHlldCBzdXBwb3J0ZWQg YW5kIHdpbGwgYmUgYWRkcmVzc2VkIGluIGZvbGxvd2luZyBjb21taXRzCi0gbm9uLXVuaXF1ZSBp bmRleGVzOiBVbmlxdWUgaW5kZXggYnVpbGRzIHN0aWxsIHJlcXVpcmUgYSBjb25zaXN0ZW50IHNu YXBzaG90IHRvIGVuZm9yY2UgdW5pcXVlbmVzcyBjb25zdHJhaW50cywgd2lsbCBiZSBhZGRyZXNz ZWQgaW4gZm9sbG93aW5nIGNvbW1pdHMKCkEgbmV3IHNjYW4gb3B0aW9uIFNPX1JFU0VUX1NOQVBT SE9UIGlzIGludHJvZHVjZWQuIFdoZW4gc2V0LCBpdCBjYXVzZXMgdGhlIHNuYXBzaG90IHRvIGJl IHJlc2V0ICJiZXR3ZWVuIiBldmVyeSBTT19SRVNFVF9TTkFQU0hPVF9FQUNIX05fUEFHRSBwYWdl cyBkdXJpbmcgdGhlIHNjYW4uIFRoZSBoZWFwIHNjYW4gY29kZSBpcyBhZGp1c3RlZCB0byBzdXBw b3J0IHRoaXMgb3B0aW9uLCBhbmQgdGhlIGluZGV4IGJ1aWxkIGNvZGUgaXMgbW9kaWZpZWQgdG8g dXNlIGl0IGZvciBhcHBsaWNhYmxlIGNvbmN1cnJlbnQgaW5kZXggYnVpbGRzIHRoYXQgYXJlIG5v dCBvbiBzeXN0ZW0gY2F0YWxvZ3MgYW5kIG5vdCB1c2luZyBwYXJhbGxlbCB3b3JrZXJzLgotLS0K IGNvbnRyaWIvYW1jaGVjay92ZXJpZnlfbmJ0cmVlLmMgICAgICAgICAgICAgICB8ICAgMyArLQog Y29udHJpYi9wZ3N0YXR0dXBsZS9wZ3N0YXR0dXBsZS5jICAgICAgICAgICAgIHwgICAyICstCiBz cmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMgICAgICAgICAgICAgICAgfCAgMTkgKystCiBz cmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmluc2VydC5jICAgICAgICAgICAgfCAgMjIgKysrKwog c3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdGJ1aWxkLmMgICAgICAgICAgIHwgICA0ICsKIHNy Yy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2guYyAgICAgICAgICAgICAgICB8ICAgMyArCiBzcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYyAgICAgICAgICAgICAgfCAgNDcgKysrKysrLQog c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYyAgICAgIHwgIDU3ICsrKysr KystLQogc3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4L2dlbmFtLmMgICAgICAgICAgICAgIHwgICAy ICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQuYyAgICAgICAgICAgfCAgMzAg KysrKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BnaW5zZXJ0LmMgICAgICAgICB8ICAg MyArCiBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94YWN0LmMgICAgICAgICAgICAgfCAgMTEg KysKIHNyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYyAgICAgICAgICAgICAgICAgICB8ICAzMSAr KysrLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMgICAgICAgICAgICAgIHwgIDE3 ICstLQogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jICAgICAgICAgIHwgIDEw ICsrCiBzcmMvYmFja2VuZC90Y29wL3V0aWxpdHkuYyAgICAgICAgICAgICAgICAgICAgfCAgIDMg Kwogc3JjL2JhY2tlbmQvdXRpbHMvZXJyY29kZXMudHh0ICAgICAgICAgICAgICAgIHwgICAxICsK IHNyYy9iaW4vcGdfYW1jaGVjay90LzAwNl9jaWMucGwgICAgICAgICAgICAgICB8ICAgMiArLQog c3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oICAgICAgICAgICAgICAgICAgIHwgICAyICsKIHNy Yy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmggICAgICAgICAgICAgICAgICB8ICAyOCArKysrLQog c3JjL2luY2x1ZGUvYWNjZXNzL3hhY3QuaCAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIHNy Yy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9NYWtlZmlsZSAgICB8ICAgMiArLQogLi4u L2V4cGVjdGVkL2NpY19yZXNldF9zbmFwc2hvdHMub3V0ICAgICAgICAgIHwgMTE1ICsrKysrKysr KysrKysrKysrKwogc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL21lc29uLmJ1aWxk IHwgICAxICsKIC4uLi9zcWwvY2ljX3Jlc2V0X3NuYXBzaG90cy5zcWwgICAgICAgICAgICAgICB8 ICA5NSArKysrKysrKysrKysrKysKIDI1IGZpbGVzIGNoYW5nZWQsIDQ3NCBpbnNlcnRpb25zKCsp LCAzNyBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL2lu amVjdGlvbl9wb2ludHMvZXhwZWN0ZWQvY2ljX3Jlc2V0X3NuYXBzaG90cy5vdXQKIGNyZWF0ZSBt b2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvc3FsL2NpY19yZXNl dF9zbmFwc2hvdHMuc3FsCgpkaWZmIC0tZ2l0IGEvY29udHJpYi9hbWNoZWNrL3ZlcmlmeV9uYnRy ZWUuYyBiL2NvbnRyaWIvYW1jaGVjay92ZXJpZnlfbmJ0cmVlLmMKaW5kZXggZTA0YjdjYTY5NGUu LjAzMmRmMmQxOTk5IDEwMDY0NAotLS0gYS9jb250cmliL2FtY2hlY2svdmVyaWZ5X25idHJlZS5j CisrKyBiL2NvbnRyaWIvYW1jaGVjay92ZXJpZnlfbmJ0cmVlLmMKQEAgLTU1Nyw3ICs1NTcsOCBA QCBidF9jaGVja19ldmVyeV9sZXZlbChSZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhlYXByZWwsIGJv b2wgaGVhcGtleXNwYWNlLAogCQkJCQkJCQkJIDAsIC8qIG51bWJlciBvZiBrZXlzICovCiAJCQkJ CQkJCQkgTlVMTCwJLyogc2NhbiBrZXkgKi8KIAkJCQkJCQkJCSB0cnVlLAkvKiBidWZmZXIgYWNj ZXNzIHN0cmF0ZWd5IE9LICovCi0JCQkJCQkJCQkgdHJ1ZSk7IC8qIHN5bmNzY2FuIE9LPyAqLwor CQkJCQkJCQkJIHRydWUsIC8qIHN5bmNzY2FuIE9LPyAqLworCQkJCQkJCQkJIGZhbHNlKTsKIAog CQkvKgogCQkgKiBTY2FuIHdpbGwgYmVoYXZlIGFzIHRoZSBmaXJzdCBzY2FuIG9mIGEgQ1JFQVRF IElOREVYIENPTkNVUlJFTlRMWQpkaWZmIC0tZ2l0IGEvY29udHJpYi9wZ3N0YXR0dXBsZS9wZ3N0 YXR0dXBsZS5jIGIvY29udHJpYi9wZ3N0YXR0dXBsZS9wZ3N0YXR0dXBsZS5jCmluZGV4IDZhN2Y4 Y2I0YTdjLi5hMGU3ZWQyZTEzNyAxMDA2NDQKLS0tIGEvY29udHJpYi9wZ3N0YXR0dXBsZS9wZ3N0 YXR0dXBsZS5jCisrKyBiL2NvbnRyaWIvcGdzdGF0dHVwbGUvcGdzdGF0dHVwbGUuYwpAQCAtMzM1 LDcgKzMzNSw3IEBAIHBnc3RhdF9oZWFwKFJlbGF0aW9uIHJlbCwgRnVuY3Rpb25DYWxsSW5mbyBm Y2luZm8pCiAJCQkJIGVycm1zZygib25seSBoZWFwIEFNIGlzIHN1cHBvcnRlZCIpKSk7CiAKIAkv KiBEaXNhYmxlIHN5bmNzY2FuIGJlY2F1c2Ugd2UgYXNzdW1lIHdlIHNjYW4gZnJvbSBibG9jayB6 ZXJvIHVwd2FyZHMgKi8KLQlzY2FuID0gdGFibGVfYmVnaW5zY2FuX3N0cmF0KHJlbCwgU25hcHNo b3RBbnksIDAsIE5VTEwsIHRydWUsIGZhbHNlKTsKKwlzY2FuID0gdGFibGVfYmVnaW5zY2FuX3N0 cmF0KHJlbCwgU25hcHNob3RBbnksIDAsIE5VTEwsIHRydWUsIGZhbHNlLCBmYWxzZSk7CiAJaHNj YW4gPSAoSGVhcFNjYW5EZXNjKSBzY2FuOwogCiAJSW5pdERpcnR5U25hcHNob3QoU25hcHNob3RE aXJ0eSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMgYi9zcmMv YmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMKaW5kZXggMTQ2ZWU5N2E0N2QuLjQ5OGViMmI5OTFi IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMKKysrIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jCkBAIC0xMjE5LDExICsxMjE5LDEyIEBAIGJyaW5idWls ZChSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwgSW5kZXhJbmZvICppbmRleEluZm8pCiAJ CXN0YXRlLT5ic19zb3J0c3RhdGUgPQogCQkJdHVwbGVzb3J0X2JlZ2luX2luZGV4X2JyaW4obWFp bnRlbmFuY2Vfd29ya19tZW0sIGNvb3JkaW5hdGUsCiAJCQkJCQkJCQkgICBUVVBMRVNPUlRfTk9O RSk7Ci0KKwkJSW52YWxpZGF0ZUNhdGFsb2dTbmFwc2hvdCgpOwogCQkvKiBzY2FuIHRoZSByZWxh dGlvbiBhbmQgbWVyZ2UgcGVyLXdvcmtlciByZXN1bHRzICovCiAJCXJlbHR1cGxlcyA9IF9icmlu X3BhcmFsbGVsX21lcmdlKHN0YXRlKTsKIAogCQlfYnJpbl9lbmRfcGFyYWxsZWwoc3RhdGUtPmJz X2xlYWRlciwgc3RhdGUpOworCQlBc3NlcnQoIWluZGV4SW5mby0+aWlfQ29uY3VycmVudCB8fCAh VHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CiAJfQogCWVsc2UJCQkJCQkvKiBu byBwYXJhbGxlbCBpbmRleCBidWlsZCAqLwogCXsKQEAgLTEyMzYsNiArMTIzNyw3IEBAIGJyaW5i dWlsZChSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwgSW5kZXhJbmZvICppbmRleEluZm8p CiAJCXJlbHR1cGxlcyA9IHRhYmxlX2luZGV4X2J1aWxkX3NjYW4oaGVhcCwgaW5kZXgsIGluZGV4 SW5mbywgZmFsc2UsIHRydWUsCiAJCQkJCQkJCQkJICAgYnJpbmJ1aWxkQ2FsbGJhY2ssIHN0YXRl LCBOVUxMKTsKIAorCQlJbnZhbGlkYXRlQ2F0YWxvZ1NuYXBzaG90KCk7CiAJCS8qCiAJCSAqIHBy b2Nlc3MgdGhlIGZpbmFsIGJhdGNoCiAJCSAqCkBAIC0xMjU1LDYgKzEyNTcsNyBAQCBicmluYnVp bGQoUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsIEluZGV4SW5mbyAqaW5kZXhJbmZvKQog CQlicmluX2ZpbGxfZW1wdHlfcmFuZ2VzKHN0YXRlLAogCQkJCQkJCSAgIHN0YXRlLT5ic19jdXJy UmFuZ2VTdGFydCwKIAkJCQkJCQkgICBzdGF0ZS0+YnNfbWF4UmFuZ2VTdGFydCk7CisJCUFzc2Vy dCghaW5kZXhJbmZvLT5paV9Db25jdXJyZW50IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVBy b2MtPnhtaW4pKTsKIAl9CiAKIAkvKiByZWxlYXNlIHJlc291cmNlcyAqLwpAQCAtMjM5MSw2ICsy Mzk0LDcgQEAgX2JyaW5fYmVnaW5fcGFyYWxsZWwoQnJpbkJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUs IFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAogCVdhbFVzYWdlICAgKndhbHVzYWdlOwog CUJ1ZmZlclVzYWdlICpidWZmZXJ1c2FnZTsKIAlib29sCQlsZWFkZXJwYXJ0aWNpcGF0ZXMgPSB0 cnVlOworCWJvb2wJCW5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCA9IHRydWU7CiAJaW50CQkJcXVl cnlsZW47CiAKICNpZmRlZiBESVNBQkxFX0xFQURFUl9QQVJUSUNJUEFUSU9OCkBAIC0yNDE2LDkg KzI0MjAsMTYgQEAgX2JyaW5fYmVnaW5fcGFyYWxsZWwoQnJpbkJ1aWxkU3RhdGUgKmJ1aWxkc3Rh dGUsIFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAogCSAqIGxpdmUgYWNjb3JkaW5nIHRv IHRoYXQuCiAJICovCiAJaWYgKCFpc2NvbmN1cnJlbnQpCisJeworCQlBc3NlcnQoQWN0aXZlU25h cHNob3RTZXQoKSk7CiAJCXNuYXBzaG90ID0gU25hcHNob3RBbnk7CisJCW5lZWRfcG9wX2FjdGl2 ZV9zbmFwc2hvdCA9IGZhbHNlOworCX0KIAllbHNlCisJewogCQlzbmFwc2hvdCA9IFJlZ2lzdGVy U25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKKwkJUHVzaEFjdGl2ZVNuYXBzaG90 KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7CisJfQogCiAJLyoKIAkgKiBFc3RpbWF0ZSBzaXpl IGZvciBvdXIgb3duIFBBUkFMTEVMX0tFWV9CUklOX1NIQVJFRCB3b3Jrc3BhY2UuCkBAIC0yNDYx LDYgKzI0NzIsOCBAQCBfYnJpbl9iZWdpbl9wYXJhbGxlbChCcmluQnVpbGRTdGF0ZSAqYnVpbGRz dGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAJLyogSWYgbm8gRFNNIHNlZ21l bnQgd2FzIGF2YWlsYWJsZSwgYmFjayBvdXQgKGRvIHNlcmlhbCBidWlsZCkgKi8KIAlpZiAocGN4 dC0+c2VnID09IE5VTEwpCiAJeworCQlpZiAobmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90KQorCQkJ UG9wQWN0aXZlU25hcHNob3QoKTsKIAkJaWYgKElzTVZDQ1NuYXBzaG90KHNuYXBzaG90KSkKIAkJ CVVucmVnaXN0ZXJTbmFwc2hvdChzbmFwc2hvdCk7CiAJCURlc3Ryb3lQYXJhbGxlbENvbnRleHQo cGN4dCk7CkBAIC0yNTQwLDYgKzI1NTMsOCBAQCBfYnJpbl9iZWdpbl9wYXJhbGxlbChCcmluQnVp bGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAJLyog SWYgbm8gd29ya2VycyB3ZXJlIHN1Y2Nlc3NmdWxseSBsYXVuY2hlZCwgYmFjayBvdXQgKGRvIHNl cmlhbCBidWlsZCkgKi8KIAlpZiAocGN4dC0+bndvcmtlcnNfbGF1bmNoZWQgPT0gMCkKIAl7CisJ CWlmIChuZWVkX3BvcF9hY3RpdmVfc25hcHNob3QpCisJCQlQb3BBY3RpdmVTbmFwc2hvdCgpOwog CQlfYnJpbl9lbmRfcGFyYWxsZWwoYnJpbmxlYWRlciwgTlVMTCk7CiAJCXJldHVybjsKIAl9CkBA IC0yNTU2LDYgKzI1NzEsOCBAQCBfYnJpbl9iZWdpbl9wYXJhbGxlbChCcmluQnVpbGRTdGF0ZSAq YnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAJICogc3VyZSB0aGF0 IHRoZSBmYWlsdXJlLXRvLXN0YXJ0IGNhc2Ugd2lsbCBub3QgaGFuZyBmb3JldmVyLgogCSAqLwog CVdhaXRGb3JQYXJhbGxlbFdvcmtlcnNUb0F0dGFjaChwY3h0KTsKKwlpZiAobmVlZF9wb3BfYWN0 aXZlX3NuYXBzaG90KQorCQlQb3BBY3RpdmVTbmFwc2hvdCgpOwogfQogCiAvKgpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW5pbnNlcnQuYyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9naW4vZ2luaW5zZXJ0LmMKaW5kZXggYzdlMzhkYmUxOTMuLmIwMDg3Y2IxYTYyIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmluc2VydC5jCisrKyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy9naW4vZ2luaW5zZXJ0LmMKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJzdG9y YWdlL2J1Zm1nci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgogI2luY2x1ZGUgInN0b3Jh Z2UvcHJlZGljYXRlLmgiCisjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCiAjaW5jbHVkZSAidGNv cC90Y29wcHJvdC5oIgogI2luY2x1ZGUgInV0aWxzL2RhdHVtLmgiCiAjaW5jbHVkZSAidXRpbHMv bWVtdXRpbHMuaCIKQEAgLTY4MCw2ICs2ODEsOSBAQCBnaW5idWlsZChSZWxhdGlvbiBoZWFwLCBS ZWxhdGlvbiBpbmRleCwgSW5kZXhJbmZvICppbmRleEluZm8pCiAJYnVpbGRzdGF0ZS5hY2N1bS5n aW5zdGF0ZSA9ICZidWlsZHN0YXRlLmdpbnN0YXRlOwogCWdpbkluaXRCQSgmYnVpbGRzdGF0ZS5h Y2N1bSk7CiAKKwlJbnZhbGlkYXRlQ2F0YWxvZ1NuYXBzaG90KCk7CisJQXNzZXJ0KCFpbmRleElu Zm8tPmlpX0NvbmN1cnJlbnQgfHwgaW5kZXhJbmZvLT5paV9QYXJhbGxlbFdvcmtlcnMgfHwgIVRy YW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOworCiAJLyogUmVwb3J0IHRhYmxlIHNj YW4gcGhhc2Ugc3RhcnRlZCAqLwogCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JF U1NfQ1JFQVRFSURYX1NVQlBIQVNFLAogCQkJCQkJCQkgUFJPR1JFU1NfR0lOX1BIQVNFX0lOREVY QlVJTERfVEFCTEVTQ0FOKTsKQEAgLTc0MiwxMSArNzQ2LDEzIEBAIGdpbmJ1aWxkKFJlbGF0aW9u IGhlYXAsIFJlbGF0aW9uIGluZGV4LCBJbmRleEluZm8gKmluZGV4SW5mbykKIAkJCXR1cGxlc29y dF9iZWdpbl9pbmRleF9naW4oaGVhcCwgaW5kZXgsCiAJCQkJCQkJCQkgIG1haW50ZW5hbmNlX3dv cmtfbWVtLCBjb29yZGluYXRlLAogCQkJCQkJCQkJICBUVVBMRVNPUlRfTk9ORSk7CisJCUludmFs aWRhdGVDYXRhbG9nU25hcHNob3QoKTsKIAogCQkvKiBzY2FuIHRoZSByZWxhdGlvbiBpbiBwYXJh bGxlbCBhbmQgbWVyZ2UgcGVyLXdvcmtlciByZXN1bHRzICovCiAJCXJlbHR1cGxlcyA9IF9naW5f cGFyYWxsZWxfbWVyZ2Uoc3RhdGUpOwogCiAJCV9naW5fZW5kX3BhcmFsbGVsKHN0YXRlLT5ic19s ZWFkZXIsIHN0YXRlKTsKKwkJQXNzZXJ0KCFpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgfHwgIVRy YW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwogCX0KIAllbHNlCQkJCQkJLyogbm8g cGFyYWxsZWwgaW5kZXggYnVpbGQgKi8KIAl7CkBAIC03NTYsNiArNzYyLDcgQEAgZ2luYnVpbGQo UmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsIEluZGV4SW5mbyAqaW5kZXhJbmZvKQogCQkg Ki8KIAkJcmVsdHVwbGVzID0gdGFibGVfaW5kZXhfYnVpbGRfc2NhbihoZWFwLCBpbmRleCwgaW5k ZXhJbmZvLCBmYWxzZSwgdHJ1ZSwKIAkJCQkJCQkJCQkgICBnaW5CdWlsZENhbGxiYWNrLCAmYnVp bGRzdGF0ZSwgTlVMTCk7CisJCUludmFsaWRhdGVDYXRhbG9nU25hcHNob3QoKTsKIAogCQkvKiBk dW1wIHJlbWFpbmluZyBlbnRyaWVzIHRvIHRoZSBpbmRleCAqLwogCQlvbGRDdHggPSBNZW1vcnlD b250ZXh0U3dpdGNoVG8oYnVpbGRzdGF0ZS50bXBDdHgpOwpAQCAtNzY5LDYgKzc3Niw3IEBAIGdp bmJ1aWxkKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBJbmRleEluZm8gKmluZGV4SW5m bykKIAkJCQkJCSAgIGxpc3QsIG5saXN0LCAmYnVpbGRzdGF0ZS5idWlsZFN0YXRzKTsKIAkJfQog CQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkQ3R4KTsKKwkJQXNzZXJ0KCFpbmRleEluZm8tPmlp X0NvbmN1cnJlbnQgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwogCX0K IAogCU1lbW9yeUNvbnRleHREZWxldGUoYnVpbGRzdGF0ZS5mdW5jQ3R4KTsKQEAgLTk0MSw2ICs5 NDksNyBAQCBfZ2luX2JlZ2luX3BhcmFsbGVsKEdpbkJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIFJl bGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAogCVdhbFVzYWdlICAgKndhbHVzYWdlOwogCUJ1 ZmZlclVzYWdlICpidWZmZXJ1c2FnZTsKIAlib29sCQlsZWFkZXJwYXJ0aWNpcGF0ZXMgPSB0cnVl OworCWJvb2wJCW5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCA9IHRydWU7CiAJaW50CQkJcXVlcnls ZW47CiAKICNpZmRlZiBESVNBQkxFX0xFQURFUl9QQVJUSUNJUEFUSU9OCkBAIC05NjUsOSArOTc0 LDE2IEBAIF9naW5fYmVnaW5fcGFyYWxsZWwoR2luQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVs YXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAJICogbGl2ZSBhY2NvcmRpbmcgdG8gdGhhdC4K IAkgKi8KIAlpZiAoIWlzY29uY3VycmVudCkKKwl7CisJCUFzc2VydChBY3RpdmVTbmFwc2hvdFNl dCgpKTsKIAkJc25hcHNob3QgPSBTbmFwc2hvdEFueTsKKwkJbmVlZF9wb3BfYWN0aXZlX3NuYXBz aG90ID0gZmFsc2U7CisJfQogCWVsc2UKKwl7CiAJCXNuYXBzaG90ID0gUmVnaXN0ZXJTbmFwc2hv dChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOworCQlQdXNoQWN0aXZlU25hcHNob3QoR2V0VHJh bnNhY3Rpb25TbmFwc2hvdCgpKTsKKwl9CiAKIAkvKgogCSAqIEVzdGltYXRlIHNpemUgZm9yIG91 ciBvd24gUEFSQUxMRUxfS0VZX0dJTl9TSEFSRUQgd29ya3NwYWNlLgpAQCAtMTAxMCw2ICsxMDI2 LDggQEAgX2dpbl9iZWdpbl9wYXJhbGxlbChHaW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxh dGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIAkvKiBJZiBubyBEU00gc2VnbWVudCB3YXMgYXZh aWxhYmxlLCBiYWNrIG91dCAoZG8gc2VyaWFsIGJ1aWxkKSAqLwogCWlmIChwY3h0LT5zZWcgPT0g TlVMTCkKIAl7CisJCWlmIChuZWVkX3BvcF9hY3RpdmVfc25hcHNob3QpCisJCQlQb3BBY3RpdmVT bmFwc2hvdCgpOwogCQlpZiAoSXNNVkNDU25hcHNob3Qoc25hcHNob3QpKQogCQkJVW5yZWdpc3Rl clNuYXBzaG90KHNuYXBzaG90KTsKIAkJRGVzdHJveVBhcmFsbGVsQ29udGV4dChwY3h0KTsKQEAg LTEwODQsNiArMTEwMiw4IEBAIF9naW5fYmVnaW5fcGFyYWxsZWwoR2luQnVpbGRTdGF0ZSAqYnVp bGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAJLyogSWYgbm8gd29ya2Vy cyB3ZXJlIHN1Y2Nlc3NmdWxseSBsYXVuY2hlZCwgYmFjayBvdXQgKGRvIHNlcmlhbCBidWlsZCkg Ki8KIAlpZiAocGN4dC0+bndvcmtlcnNfbGF1bmNoZWQgPT0gMCkKIAl7CisJCWlmIChuZWVkX3Bv cF9hY3RpdmVfc25hcHNob3QpCisJCQlQb3BBY3RpdmVTbmFwc2hvdCgpOwogCQlfZ2luX2VuZF9w YXJhbGxlbChnaW5sZWFkZXIsIE5VTEwpOwogCQlyZXR1cm47CiAJfQpAQCAtMTEwMCw2ICsxMTIw LDggQEAgX2dpbl9iZWdpbl9wYXJhbGxlbChHaW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxh dGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIAkgKiBzdXJlIHRoYXQgdGhlIGZhaWx1cmUtdG8t c3RhcnQgY2FzZSB3aWxsIG5vdCBoYW5nIGZvcmV2ZXIuCiAJICovCiAJV2FpdEZvclBhcmFsbGVs V29ya2Vyc1RvQXR0YWNoKHBjeHQpOworCWlmIChuZWVkX3BvcF9hY3RpdmVfc25hcHNob3QpCisJ CVBvcEFjdGl2ZVNuYXBzaG90KCk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9h Y2Nlc3MvZ2lzdC9naXN0YnVpbGQuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3RidWls ZC5jCmluZGV4IDdmNTdjNzg3ZjRjLi42MjA3ZTlmNWQ4MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvYWNjZXNzL2dpc3QvZ2lzdGJ1aWxkLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3Qv Z2lzdGJ1aWxkLmMKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlICJvcHRpbWl6ZXIvb3B0aW1p emVyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9idWZtZ3IuaCIKICNpbmNsdWRlICJzdG9yYWdlL2J1 bGtfd3JpdGUuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKIAogI2luY2x1ZGUgInV0aWxz L21lbXV0aWxzLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVsLmgiCkBAIC0yNTksNiArMjYwLDcgQEAg Z2lzdGJ1aWxkKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBJbmRleEluZm8gKmluZGV4 SW5mbykKIAlidWlsZHN0YXRlLmluZHR1cGxlcyA9IDA7CiAJYnVpbGRzdGF0ZS5pbmR0dXBsZXNT aXplID0gMDsKIAorCUFzc2VydCghaW5kZXhJbmZvLT5paV9Db25jdXJyZW50IHx8ICFUcmFuc2Fj dGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIAlpZiAoYnVpbGRzdGF0ZS5idWlsZE1vZGUg PT0gR0lTVF9TT1JURURfQlVJTEQpCiAJewogCQkvKgpAQCAtMzUwLDYgKzM1Miw4IEBAIGdpc3Ri dWlsZChSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwgSW5kZXhJbmZvICppbmRleEluZm8p CiAKIAlyZXN1bHQtPmhlYXBfdHVwbGVzID0gcmVsdHVwbGVzOwogCXJlc3VsdC0+aW5kZXhfdHVw bGVzID0gKGRvdWJsZSkgYnVpbGRzdGF0ZS5pbmR0dXBsZXM7CisJSW52YWxpZGF0ZUNhdGFsb2dT bmFwc2hvdCgpOworCUFzc2VydCghaW5kZXhJbmZvLT5paV9Db25jdXJyZW50IHx8ICFUcmFuc2Fj dGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIAogCXJldHVybiByZXN1bHQ7CiB9CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoLmMgYi9zcmMvYmFja2VuZC9hY2Nl c3MvaGFzaC9oYXNoLmMKaW5kZXggZTg4ZGRiMzJhMDUuLjFlZTFkYTFlYzliIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNz L2hhc2gvaGFzaC5jCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAibm9kZXMvZXhlY25vZGVz LmgiCiAjaW5jbHVkZSAib3B0aW1pemVyL3BsYW5jYXQuaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIK KyNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKICNpbmNsdWRlICJ1dGlscy9mbWdycHJvdG9zLmgi CiAjaW5jbHVkZSAidXRpbHMvaW5kZXhfc2VsZnVuY3MuaCIKICNpbmNsdWRlICJ1dGlscy9yZWwu aCIKQEAgLTE5OCw2ICsxOTksOCBAQCBoYXNoYnVpbGQoUmVsYXRpb24gaGVhcCwgUmVsYXRpb24g aW5kZXgsIEluZGV4SW5mbyAqaW5kZXhJbmZvKQogCiAJcmVzdWx0LT5oZWFwX3R1cGxlcyA9IHJl bHR1cGxlczsKIAlyZXN1bHQtPmluZGV4X3R1cGxlcyA9IGJ1aWxkc3RhdGUuaW5kdHVwbGVzOwor CUludmFsaWRhdGVDYXRhbG9nU25hcHNob3QoKTsKKwlBc3NlcnQoIWluZGV4SW5mby0+aWlfQ29u Y3VycmVudCB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CiAKIAlyZXR1 cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFt LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYwppbmRleCBhMjMxNTYzZjBkZi4u NjI2NTdkMDdmMDQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5j CisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCkBAIC01NCw2ICs1NCw3IEBA CiAjaW5jbHVkZSAidXRpbHMvaW52YWwuaCIKICNpbmNsdWRlICJ1dGlscy9zcGNjYWNoZS5oIgog I2luY2x1ZGUgInV0aWxzL3N5c2NhY2hlLmgiCisjaW5jbHVkZSAidXRpbHMvaW5qZWN0aW9uX3Bv aW50LmgiCiAKIAogc3RhdGljIEhlYXBUdXBsZSBoZWFwX3ByZXBhcmVfaW5zZXJ0KFJlbGF0aW9u IHJlbGF0aW9uLCBIZWFwVHVwbGUgdHVwLApAQCAtNjk3LDYgKzY5OCwzNiBAQCBoZWFwX3ByZXBh cmVfcGFnZXNjYW4oVGFibGVTY2FuRGVzYyBzc2NhbikKIAlMb2NrQnVmZmVyKGJ1ZmZlciwgQlVG RkVSX0xPQ0tfVU5MT0NLKTsKIH0KIAorLyoKKyAqIFJlc2V0IHRoZSBhY3RpdmUgc25hcHNob3Qg ZHVyaW5nIGEgc2Nhbi4KKyAqIFRoaXMgZW5zdXJlcyB0aGUgeG1pbiBob3Jpem9uIGNhbiBhZHZh bmNlIHdoaWxlIG1haW50YWluaW5nIHNhZmUgdHVwbGUgdmlzaWJpbGl0eS4KKyAqIE5vdGU6IE5v IG90aGVyIHNuYXBzaG90IHNob3VsZCBiZSBhY3RpdmUgZHVyaW5nIHRoaXMgb3BlcmF0aW9uLgor ICovCitzdGF0aWMgaW5saW5lIHZvaWQKK2hlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdChUYWJsZVNj YW5EZXNjIHNzY2FuKQoreworCS8qIE1ha2Ugc3VyZSBubyBvdGhlciBzbmFwc2hvdCB3YXMgc2V0 IGFzIGFjdGl2ZS4gKi8KKwlBc3NlcnQoR2V0QWN0aXZlU25hcHNob3QoKSA9PSBzc2Nhbi0+cnNf c25hcHNob3QpOworCS8qIEFuZCBtYWtlIHN1cmUgYWN0aXZlIHNuYXBzaG90IGlzIG5vdCByZWdp c3RlcmVkLiAqLworCUFzc2VydChHZXRBY3RpdmVTbmFwc2hvdCgpLT5yZWdkX2NvdW50ID09IDAp OworCVBvcEFjdGl2ZVNuYXBzaG90KCk7CisKKwlzc2Nhbi0+cnNfc25hcHNob3QgPSBJbnZhbGlk U25hcHNob3Q7IC8qIGp1c3QgdG8gYmUgdGlkeSAqLworCUFzc2VydCghSGF2ZVJlZ2lzdGVyZWRP ckFjdGl2ZVNuYXBzaG90KCkpOworCUludmFsaWRhdGVDYXRhbG9nU25hcHNob3QoKTsKKworCS8q IFRoZSBnb2FsIG9mIHNuYXBzaG90IHJlc2V0IGlzIHRvIGFsbG93IGhvcml6b24gdG8gYWR2YW5j ZS4gKi8KKwlBc3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOworI2lm IFVTRV9JTkpFQ1RJT05fUE9JTlRTCisJLyogSW4gc29tZSBjYXNlcyBpdCBpcyBzdGlsbCBub3Qg cG9zc2libGUgZHVlIHhpZCBhc3NpZ24uICovCisJaWYgKCFUcmFuc2FjdGlvbklkSXNWYWxpZChN eVByb2MtPnhpZCkpCisJCUlOSkVDVElPTl9QT0lOVCgiaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90 X2VmZmVjdGl2ZSIsIE5VTEwpOworI2VuZGlmCisKKwlQdXNoQWN0aXZlU25hcHNob3QoR2V0TGF0 ZXN0U25hcHNob3QoKSk7CisJc3NjYW4tPnJzX3NuYXBzaG90ID0gR2V0QWN0aXZlU25hcHNob3Qo KTsKK30KKwogLyoKICAqIGhlYXBfZmV0Y2hfbmV4dF9idWZmZXIgLSByZWFkIGFuZCBwaW4gdGhl IG5leHQgYmxvY2sgZnJvbSBNQUlOX0ZPUktOVU0uCiAgKgpAQCAtNzM4LDcgKzc2OSwxMiBAQCBo ZWFwX2ZldGNoX25leHRfYnVmZmVyKEhlYXBTY2FuRGVzYyBzY2FuLCBTY2FuRGlyZWN0aW9uIGRp cikKIAogCXNjYW4tPnJzX2NidWYgPSByZWFkX3N0cmVhbV9uZXh0X2J1ZmZlcihzY2FuLT5yc19y ZWFkX3N0cmVhbSwgTlVMTCk7CiAJaWYgKEJ1ZmZlcklzVmFsaWQoc2Nhbi0+cnNfY2J1ZikpCisJ ewogCQlzY2FuLT5yc19jYmxvY2sgPSBCdWZmZXJHZXRCbG9ja051bWJlcihzY2FuLT5yc19jYnVm KTsKKwkJaWYgKHNjYW4tPnJzX2Jhc2UucnNfZmxhZ3MgJiBTT19SRVNFVF9TTkFQU0hPVCAmJgor CQkJc2Nhbi0+cnNfY2Jsb2NrICUgU09fUkVTRVRfU05BUFNIT1RfRUFDSF9OX1BBR0UgPT0gMCkK KwkJCWhlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdCgoVGFibGVTY2FuRGVzYykgc2Nhbik7CisJfQog fQogCiAvKgpAQCAtMTM5OSw3ICsxNDM1LDE2IEBAIGhlYXBfZW5kc2NhbihUYWJsZVNjYW5EZXNj IHNzY2FuKQogCiAJaWYgKHNjYW4tPnJzX3BhcmFsbGVsd29ya2VyZGF0YSAhPSBOVUxMKQogCQlw ZnJlZShzY2FuLT5yc19wYXJhbGxlbHdvcmtlcmRhdGEpOwotCisjaWZkZWYgVVNFX0FTU0VSVF9D SEVDS0lORworCWlmIChzY2FuLT5yc19iYXNlLnJzX2ZsYWdzICYgU09fUkVTRVRfU05BUFNIT1Qp CisJeworCQlBc3NlcnQoIShzY2FuLT5yc19iYXNlLnJzX2ZsYWdzICYgU09fVEVNUF9TTkFQU0hP VCkpOworCQkvKiBNYWtlIHN1cmUgbm8gb3RoZXIgc25hcHNob3Qgd2FzIHNldCBhcyBhY3RpdmUu ICovCisJCUFzc2VydChHZXRBY3RpdmVTbmFwc2hvdCgpID09IHNzY2FuLT5yc19zbmFwc2hvdCk7 CisJCS8qIEFuZCBtYWtlIHN1cmUgc25hcHNob3QgaXMgbm90IHJlZ2lzdGVyZWQuICovCisJCUFz c2VydChHZXRBY3RpdmVTbmFwc2hvdCgpLT5yZWdkX2NvdW50ID09IDApOworCX0KKyNlbmRpZgog CWlmIChzY2FuLT5yc19iYXNlLnJzX2ZsYWdzICYgU09fVEVNUF9TTkFQU0hPVCkKIAkJVW5yZWdp c3RlclNuYXBzaG90KHNjYW4tPnJzX2Jhc2UucnNfc25hcHNob3QpOwogCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYwppbmRleCAzZmYzNmY1OWJmOC4uMTZjNDYwYWEyM2Yg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMKKysr IGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYwpAQCAtMTIxMCw2ICsx MjEwLDggQEAgaGVhcGFtX2luZGV4X2J1aWxkX3JhbmdlX3NjYW4oUmVsYXRpb24gaGVhcFJlbGF0 aW9uLAogCUV4cHJDb250ZXh0ICplY29udGV4dDsKIAlTbmFwc2hvdAlzbmFwc2hvdDsKIAlib29s CQluZWVkX3VucmVnaXN0ZXJfc25hcHNob3QgPSBmYWxzZTsKKwlib29sCQluZWVkX3BvcF9hY3Rp dmVfc25hcHNob3QgPSBmYWxzZTsKKwlib29sCQlyZXNldF9zbmFwc2hvdHMgPSBmYWxzZTsKIAlU cmFuc2FjdGlvbklkIE9sZGVzdFhtaW47CiAJQmxvY2tOdW1iZXIgcHJldmlvdXNfYmxrbm8gPSBJ bnZhbGlkQmxvY2tOdW1iZXI7CiAJQmxvY2tOdW1iZXIgcm9vdF9ibGtubyA9IEludmFsaWRCbG9j a051bWJlcjsKQEAgLTEyNDQsOSArMTI0Niw2IEBAIGhlYXBhbV9pbmRleF9idWlsZF9yYW5nZV9z Y2FuKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAkvKiBBcnJhbmdlIGZvciBlY29udGV4dCdzIHNj YW4gdHVwbGUgdG8gYmUgdGhlIHR1cGxlIHVuZGVyIHRlc3QgKi8KIAllY29udGV4dC0+ZWN4dF9z Y2FudHVwbGUgPSBzbG90OwogCi0JLyogU2V0IHVwIGV4ZWN1dGlvbiBzdGF0ZSBmb3IgcHJlZGlj YXRlLCBpZiBhbnkuICovCi0JcHJlZGljYXRlID0gRXhlY1ByZXBhcmVRdWFsKGluZGV4SW5mby0+ aWlfUHJlZGljYXRlLCBlc3RhdGUpOwotCiAJLyoKIAkgKiBQcmVwYXJlIGZvciBzY2FuIG9mIHRo ZSBiYXNlIHJlbGF0aW9uLiAgSW4gYSBub3JtYWwgaW5kZXggYnVpbGQsIHdlIHVzZQogCSAqIFNu YXBzaG90QW55IGJlY2F1c2Ugd2UgbXVzdCByZXRyaWV2ZSBhbGwgdHVwbGVzIGFuZCBkbyBvdXIg b3duIHRpbWUKQEAgLTEyNTYsNiArMTI1NSwxNSBAQCBoZWFwYW1faW5kZXhfYnVpbGRfcmFuZ2Vf c2NhbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJICovCiAJT2xkZXN0WG1pbiA9IEludmFsaWRU cmFuc2FjdGlvbklkOwogCisJLyoKKwkgKiBGb3IgdW5pcXVlIGluZGV4IHdlIG5lZWQgY29uc2lz dGVudCBzbmFwc2hvdCBmb3IgdGhlIHdob2xlIHNjYW4uCisJICogSW4gY2FzZSBvZiBwYXJhbGxl bCBzY2FuIHNvbWUgYWRkaXRpb25hbCBpbmZyYXN0cnVjdHVyZSByZXF1aXJlZAorCSAqIHRvIHBl cmZvcm0gc2NhbiB3aXRoIFNPX1JFU0VUX1NOQVBTSE9UIHdoaWNoIGlzIG5vdCB5ZXQgcmVhZHku CisJICovCisJcmVzZXRfc25hcHNob3RzID0gaW5kZXhJbmZvLT5paV9Db25jdXJyZW50ICYmCisJ CQkJCSAgIWluZGV4SW5mby0+aWlfVW5pcXVlICYmCisJCQkJCSAgIWlzX3N5c3RlbV9jYXRhbG9n OyAvKiBqdXN0IGZvciB0aGUgY2FzZSAqLworCiAJLyogb2theSB0byBpZ25vcmUgbGF6eSBWQUNV VU1zIGhlcmUgKi8KIAlpZiAoIUlzQm9vdHN0cmFwUHJvY2Vzc2luZ01vZGUoKSAmJiAhaW5kZXhJ bmZvLT5paV9Db25jdXJyZW50KQogCQlPbGRlc3RYbWluID0gR2V0T2xkZXN0Tm9uUmVtb3ZhYmxl VHJhbnNhY3Rpb25JZChoZWFwUmVsYXRpb24pOwpAQCAtMTI2NCwyNCArMTI3Miw0MSBAQCBoZWFw YW1faW5kZXhfYnVpbGRfcmFuZ2Vfc2NhbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJewogCQkv KgogCQkgKiBTZXJpYWwgaW5kZXggYnVpbGQuCi0JCSAqCi0JCSAqIE11c3QgYmVnaW4gb3VyIG93 biBoZWFwIHNjYW4gaW4gdGhpcyBjYXNlLiAgV2UgbWF5IGFsc28gbmVlZCB0bwotCQkgKiByZWdp c3RlciBhIHNuYXBzaG90IHdob3NlIGxpZmV0aW1lIGlzIHVuZGVyIG91ciBkaXJlY3QgY29udHJv bC4KIAkJICovCiAJCWlmICghVHJhbnNhY3Rpb25JZElzVmFsaWQoT2xkZXN0WG1pbikpCiAJCXsK LQkJCXNuYXBzaG90ID0gUmVnaXN0ZXJTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkp OwotCQkJbmVlZF91bnJlZ2lzdGVyX3NuYXBzaG90ID0gdHJ1ZTsKKwkJCXNuYXBzaG90ID0gR2V0 VHJhbnNhY3Rpb25TbmFwc2hvdCgpOworCQkJLyoKKwkJCSAqIE11c3QgYmVnaW4gb3VyIG93biBo ZWFwIHNjYW4gaW4gdGhpcyBjYXNlLiAgV2UgbWF5IGFsc28gbmVlZCB0bworCQkJICogcmVnaXN0 ZXIgYSBzbmFwc2hvdCB3aG9zZSBsaWZldGltZSBpcyB1bmRlciBvdXIgZGlyZWN0IGNvbnRyb2wu CisJCQkgKiBJbiBjYXNlIG9mIHJlc2V0dGluZyBvZiBzbmFwc2hvdCBkdXJpbmcgdGhlIHNjYW4g cmVnaXN0cmF0aW9uIGlzCisJCQkgKiBub3QgYWxsb3dlZCBiZWNhdXNlIHNuYXBzaG90IGlzIGdv aW5nIHRvIGJlIGNoYW5nZWQgZXZlcnkgc28KKwkJCSAqIG9mdGVuLgorCQkJICovCisJCQlpZiAo IXJlc2V0X3NuYXBzaG90cykKKwkJCXsKKwkJCQlzbmFwc2hvdCA9IFJlZ2lzdGVyU25hcHNob3Qo c25hcHNob3QpOworCQkJCW5lZWRfdW5yZWdpc3Rlcl9zbmFwc2hvdCA9IHRydWU7CisJCQl9CisJ CQlBc3NlcnQoIUFjdGl2ZVNuYXBzaG90U2V0KCkpOworCQkJUHVzaEFjdGl2ZVNuYXBzaG90KHNu YXBzaG90KTsKKwkJCS8qIHN0b3JlIGxpbmsgdG8gc25hcHNob3QgYmVjYXVzZSBpdCBtYXkgYmUg Y29waWVkICovCisJCQlzbmFwc2hvdCA9IEdldEFjdGl2ZVNuYXBzaG90KCk7CisJCQluZWVkX3Bv cF9hY3RpdmVfc25hcHNob3QgPSB0cnVlOwogCQl9CiAJCWVsc2UKKwkJeworCQkJQXNzZXJ0KCFp bmRleEluZm8tPmlpX0NvbmN1cnJlbnQpOwogCQkJc25hcHNob3QgPSBTbmFwc2hvdEFueTsKKwkJ fQogCiAJCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW5fc3RyYXQoaGVhcFJlbGF0aW9uLAkvKiByZWxh dGlvbiAqLwogCQkJCQkJCQkJIHNuYXBzaG90LAkvKiBzbmFwc2hvdCAqLwogCQkJCQkJCQkJIDAs IC8qIG51bWJlciBvZiBrZXlzICovCiAJCQkJCQkJCQkgTlVMTCwJLyogc2NhbiBrZXkgKi8KIAkJ CQkJCQkJCSB0cnVlLAkvKiBidWZmZXIgYWNjZXNzIHN0cmF0ZWd5IE9LICovCi0JCQkJCQkJCQkg YWxsb3dfc3luYyk7CS8qIHN5bmNzY2FuIE9LPyAqLworCQkJCQkJCQkJIGFsbG93X3N5bmMsCS8q IHN5bmNzY2FuIE9LPyAqLworCQkJCQkJCQkJIHJlc2V0X3NuYXBzaG90cyAvKiByZXNldCBzbmFw c2hvdHM/ICovKTsKIAl9CiAJZWxzZQogCXsKQEAgLTEyOTUsNiArMTMyMCw4IEBAIGhlYXBhbV9p bmRleF9idWlsZF9yYW5nZV9zY2FuKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAkJQXNzZXJ0KCFJ c0Jvb3RzdHJhcFByb2Nlc3NpbmdNb2RlKCkpOwogCQlBc3NlcnQoYWxsb3dfc3luYyk7CiAJCXNu YXBzaG90ID0gc2Nhbi0+cnNfc25hcHNob3Q7CisJCVB1c2hBY3RpdmVTbmFwc2hvdChzbmFwc2hv dCk7CisJCW5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCA9IHRydWU7CiAJfQogCiAJaHNjYW4gPSAo SGVhcFNjYW5EZXNjKSBzY2FuOwpAQCAtMTMwOSw2ICsxMzM2LDEzIEBAIGhlYXBhbV9pbmRleF9i dWlsZF9yYW5nZV9zY2FuKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAlBc3NlcnQoc25hcHNob3Qg PT0gU25hcHNob3RBbnkgPyBUcmFuc2FjdGlvbklkSXNWYWxpZChPbGRlc3RYbWluKSA6CiAJCSAg ICFUcmFuc2FjdGlvbklkSXNWYWxpZChPbGRlc3RYbWluKSk7CiAJQXNzZXJ0KHNuYXBzaG90ID09 IFNuYXBzaG90QW55IHx8ICFhbnl2aXNpYmxlKTsKKwlBc3NlcnQoc25hcHNob3QgPT0gU25hcHNo b3RBbnkgfHwgQWN0aXZlU25hcHNob3RTZXQoKSk7CisKKwkvKiBTZXQgdXAgZXhlY3V0aW9uIHN0 YXRlIGZvciBwcmVkaWNhdGUsIGlmIGFueS4gKi8KKwlwcmVkaWNhdGUgPSBFeGVjUHJlcGFyZVF1 YWwoaW5kZXhJbmZvLT5paV9QcmVkaWNhdGUsIGVzdGF0ZSk7CisJLyogQ2xlYXIgcmVmZXJlbmNl IHRvIHNuYXBzaG90IHNpbmNlIGl0IG1heSBiZSBjaGFuZ2VkIGJ5IHRoZSBzY2FuIGl0c2VsZi4g Ki8KKwlpZiAocmVzZXRfc25hcHNob3RzKQorCQlzbmFwc2hvdCA9IEludmFsaWRTbmFwc2hvdDsK IAogCS8qIFB1Ymxpc2ggbnVtYmVyIG9mIGJsb2NrcyB0byBzY2FuICovCiAJaWYgKHByb2dyZXNz KQpAQCAtMTc0NCw2ICsxNzc4LDggQEAgaGVhcGFtX2luZGV4X2J1aWxkX3JhbmdlX3NjYW4oUmVs YXRpb24gaGVhcFJlbGF0aW9uLAogCiAJdGFibGVfZW5kc2NhbihzY2FuKTsKIAorCWlmIChuZWVk X3BvcF9hY3RpdmVfc25hcHNob3QpCisJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CiAJLyogd2UgY2Fu IG5vdyBmb3JnZXQgb3VyIHNuYXBzaG90LCBpZiBzZXQgYW5kIHJlZ2lzdGVyZWQgYnkgdXMgKi8K IAlpZiAobmVlZF91bnJlZ2lzdGVyX3NuYXBzaG90KQogCQlVbnJlZ2lzdGVyU25hcHNob3Qoc25h cHNob3QpOwpAQCAtMTgxNiw3ICsxODUyLDggQEAgaGVhcGFtX2luZGV4X3ZhbGlkYXRlX3NjYW4o UmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCQkJCQkJCQkgMCwgLyogbnVtYmVyIG9mIGtleXMgKi8K IAkJCQkJCQkJIE5VTEwsCS8qIHNjYW4ga2V5ICovCiAJCQkJCQkJCSB0cnVlLAkvKiBidWZmZXIg YWNjZXNzIHN0cmF0ZWd5IE9LICovCi0JCQkJCQkJCSBmYWxzZSk7CS8qIHN5bmNzY2FuIG5vdCBP SyAqLworCQkJCQkJCQkgZmFsc2UsCS8qIHN5bmNzY2FuIG5vdCBPSyAqLworCQkJCQkJCQkgZmFs c2UpOwogCWhzY2FuID0gKEhlYXBTY2FuRGVzYykgc2NhbjsKIAogCXBnc3RhdF9wcm9ncmVzc191 cGRhdGVfcGFyYW0oUFJPR1JFU1NfU0NBTl9CTE9DS1NfVE9UQUwsCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9hY2Nlc3MvaW5kZXgvZ2VuYW0uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9n ZW5hbS5jCmluZGV4IDVlODliODZhNjJjLi5lNDI4NDE4MTczOCAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL2luZGV4L2dlbmFtLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4 L2dlbmFtLmMKQEAgLTQ3Miw3ICs0NzIsNyBAQCBzeXN0YWJsZV9iZWdpbnNjYW4oUmVsYXRpb24g aGVhcFJlbGF0aW9uLAogCQkgKi8KIAkJc3lzc2Nhbi0+c2NhbiA9IHRhYmxlX2JlZ2luc2Nhbl9z dHJhdChoZWFwUmVsYXRpb24sIHNuYXBzaG90LAogCQkJCQkJCQkJCQkgIG5rZXlzLCBrZXksCi0J CQkJCQkJCQkJCSAgdHJ1ZSwgZmFsc2UpOworCQkJCQkJCQkJCQkgIHRydWUsIGZhbHNlLCBmYWxz ZSk7CiAJCXN5c3NjYW4tPmlzY2FuID0gTlVMTDsKIAl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9u YnRzb3J0LmMKaW5kZXggNjllZjE1MjdlMDYuLjZmYzcyYmQyYzk0IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv bmJ0cmVlL25idHNvcnQuYwpAQCAtMjYxLDcgKzI2MSw3IEBAIHN0YXRpYyBkb3VibGUgX2J0X3Nw b29sc19oZWFwc2NhbihSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIHN0YXRpYyB2b2lk IF9idF9zcG9vbGRlc3Ryb3koQlRTcG9vbCAqYnRzcG9vbCk7CiBzdGF0aWMgdm9pZCBfYnRfc3Bv b2woQlRTcG9vbCAqYnRzcG9vbCwgY29uc3QgSXRlbVBvaW50ZXJEYXRhICpzZWxmLAogCQkJCQkg IGNvbnN0IERhdHVtICp2YWx1ZXMsIGNvbnN0IGJvb2wgKmlzbnVsbCk7Ci1zdGF0aWMgdm9pZCBf YnRfbGVhZmJ1aWxkKEJUU3Bvb2wgKmJ0c3Bvb2wsIEJUU3Bvb2wgKmJ0c3Bvb2wyKTsKK3N0YXRp YyB2b2lkIF9idF9sZWFmYnVpbGQoQlRTcG9vbCAqYnRzcG9vbCwgQlRTcG9vbCAqYnRzcG9vbDIs IGJvb2wgcmVzZXRfc25hcHNob3RzKTsKIHN0YXRpYyB2b2lkIF9idF9idWlsZF9jYWxsYmFjayhS ZWxhdGlvbiBpbmRleCwgSXRlbVBvaW50ZXIgdGlkLCBEYXR1bSAqdmFsdWVzLAogCQkJCQkJCSAg IGJvb2wgKmlzbnVsbCwgYm9vbCB0dXBsZUlzQWxpdmUsIHZvaWQgKnN0YXRlKTsKIHN0YXRpYyBC dWxrV3JpdGVCdWZmZXIgX2J0X2JsbmV3cGFnZShCVFdyaXRlU3RhdGUgKndzdGF0ZSwgdWludDMy IGxldmVsKTsKQEAgLTMyNCwxOCArMzI0LDIyIEBAIGJ0YnVpbGQoUmVsYXRpb24gaGVhcCwgUmVs YXRpb24gaW5kZXgsIEluZGV4SW5mbyAqaW5kZXhJbmZvKQogCQkJIFJlbGF0aW9uR2V0UmVsYXRp b25OYW1lKGluZGV4KSk7CiAKIAlyZWx0dXBsZXMgPSBfYnRfc3Bvb2xzX2hlYXBzY2FuKGhlYXAs IGluZGV4LCAmYnVpbGRzdGF0ZSwgaW5kZXhJbmZvKTsKKwlBc3NlcnQoaW5kZXhJbmZvLT5paV9Q YXJhbGxlbFdvcmtlcnMgfHwgaW5kZXhJbmZvLT5paV9VbmlxdWUgfHwKKwkJICAhaW5kZXhJbmZv LT5paV9Db25jdXJyZW50IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsK IAogCS8qCiAJICogRmluaXNoIHRoZSBidWlsZCBieSAoMSkgY29tcGxldGluZyB0aGUgc29ydCBv ZiB0aGUgc3Bvb2wgZmlsZSwgKDIpCiAJICogaW5zZXJ0aW5nIHRoZSBzb3J0ZWQgdHVwbGVzIGlu dG8gYnRyZWUgcGFnZXMgYW5kICgzKSBidWlsZGluZyB0aGUgdXBwZXIKIAkgKiBsZXZlbHMuICBG aW5hbGx5LCBpdCBtYXkgYWxzbyBiZSBuZWNlc3NhcnkgdG8gZW5kIHVzZSBvZiBwYXJhbGxlbGlz bS4KIAkgKi8KLQlfYnRfbGVhZmJ1aWxkKGJ1aWxkc3RhdGUuc3Bvb2wsIGJ1aWxkc3RhdGUuc3Bv b2wyKTsKKwlfYnRfbGVhZmJ1aWxkKGJ1aWxkc3RhdGUuc3Bvb2wsIGJ1aWxkc3RhdGUuc3Bvb2wy LCAhaW5kZXhJbmZvLT5paV9QYXJhbGxlbFdvcmtlcnMgJiYgaW5kZXhJbmZvLT5paV9Db25jdXJy ZW50KTsKIAlfYnRfc3Bvb2xkZXN0cm95KGJ1aWxkc3RhdGUuc3Bvb2wpOwogCWlmIChidWlsZHN0 YXRlLnNwb29sMikKIAkJX2J0X3Nwb29sZGVzdHJveShidWlsZHN0YXRlLnNwb29sMik7CiAJaWYg KGJ1aWxkc3RhdGUuYnRsZWFkZXIpCiAJCV9idF9lbmRfcGFyYWxsZWwoYnVpbGRzdGF0ZS5idGxl YWRlcik7CisJQXNzZXJ0KGluZGV4SW5mby0+aWlfUGFyYWxsZWxXb3JrZXJzIHx8IGluZGV4SW5m by0+aWlfVW5pcXVlIHx8CisJCSAgIWluZGV4SW5mby0+aWlfQ29uY3VycmVudCB8fCAhVHJhbnNh Y3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CiAKIAlyZXN1bHQgPSBwYWxsb2Nfb2JqZWN0 KEluZGV4QnVpbGRSZXN1bHQpOwogCkBAIC00ODMsNiArNDg3LDkgQEAgX2J0X3Nwb29sc19oZWFw c2NhbihSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwgQlRCdWlsZFN0YXRlICpidWlsZHN0 YXRlLAogCWVsc2UKIAkJcmVsdHVwbGVzID0gX2J0X3BhcmFsbGVsX2hlYXBzY2FuKGJ1aWxkc3Rh dGUsCiAJCQkJCQkJCQkJICAmaW5kZXhJbmZvLT5paV9Ccm9rZW5Ib3RDaGFpbik7CisJSW52YWxp ZGF0ZUNhdGFsb2dTbmFwc2hvdCgpOworCUFzc2VydChpbmRleEluZm8tPmlpX1BhcmFsbGVsV29y a2VycyB8fCBpbmRleEluZm8tPmlpX1VuaXF1ZSB8fAorCQkgICFpbmRleEluZm8tPmlpX0NvbmN1 cnJlbnQgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwogCiAJLyoKIAkg KiBTZXQgdGhlIHByb2dyZXNzIHRhcmdldCBmb3IgdGhlIG5leHQgcGhhc2UuICBSZXNldCB0aGUg YmxvY2sgbnVtYmVyCkBAIC01MzgsNyArNTQ1LDcgQEAgX2J0X3Nwb29sKEJUU3Bvb2wgKmJ0c3Bv b2wsIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqc2VsZiwgY29uc3QgRGF0dW0gKnZhbHVlcywgY28K ICAqIGNyZWF0ZSBhbiBlbnRpcmUgYnRyZWUuCiAgKi8KIHN0YXRpYyB2b2lkCi1fYnRfbGVhZmJ1 aWxkKEJUU3Bvb2wgKmJ0c3Bvb2wsIEJUU3Bvb2wgKmJ0c3Bvb2wyKQorX2J0X2xlYWZidWlsZChC VFNwb29sICpidHNwb29sLCBCVFNwb29sICpidHNwb29sMiwgYm9vbCByZXNldF9zbmFwc2hvdHMp CiB7CiAJQlRXcml0ZVN0YXRlIHdzdGF0ZTsKIApAQCAtNTYwLDE4ICs1NjcsMjEgQEAgX2J0X2xl YWZidWlsZChCVFNwb29sICpidHNwb29sLCBCVFNwb29sICpidHNwb29sMikKIAkJCQkJCQkJCSBQ Uk9HUkVTU19CVFJFRV9QSEFTRV9QRVJGT1JNU09SVF8yKTsKIAkJdHVwbGVzb3J0X3BlcmZvcm1z b3J0KGJ0c3Bvb2wyLT5zb3J0c3RhdGUpOwogCX0KKwlBc3NlcnQoIXJlc2V0X3NuYXBzaG90cyB8 fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CiAKIAl3c3RhdGUuaGVhcCA9 IGJ0c3Bvb2wtPmhlYXA7CiAJd3N0YXRlLmluZGV4ID0gYnRzcG9vbC0+aW5kZXg7CiAJd3N0YXRl Lmluc2tleSA9IF9idF9ta3NjYW5rZXkod3N0YXRlLmluZGV4LCBOVUxMKTsKIAkvKiBfYnRfbWtz Y2Fua2V5KCkgd29uJ3Qgc2V0IGFsbGVxdWFsaW1hZ2Ugd2l0aG91dCBtZXRhcGFnZSAqLwogCXdz dGF0ZS5pbnNrZXktPmFsbGVxdWFsaW1hZ2UgPSBfYnRfYWxsZXF1YWxpbWFnZSh3c3RhdGUuaW5k ZXgsIHRydWUpOworCUludmFsaWRhdGVDYXRhbG9nU25hcHNob3QoKTsKIAogCS8qIHJlc2VydmUg dGhlIG1ldGFwYWdlICovCiAJd3N0YXRlLmJ0d3NfcGFnZXNfYWxsb2NlZCA9IEJUUkVFX01FVEFQ QUdFICsgMTsKIAogCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ1JFQVRF SURYX1NVQlBIQVNFLAogCQkJCQkJCQkgUFJPR1JFU1NfQlRSRUVfUEhBU0VfTEVBRl9MT0FEKTsK KwlBc3NlcnQoIXJlc2V0X3NuYXBzaG90cyB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9j LT54bWluKSk7CiAJX2J0X2xvYWQoJndzdGF0ZSwgYnRzcG9vbCwgYnRzcG9vbDIpOwogfQogCkBA IC0xNDEwLDYgKzE0MjAsNyBAQCBfYnRfYmVnaW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRlICpidWls ZHN0YXRlLCBib29sIGlzY29uY3VycmVudCwgaW50IHJlcXVlc3QpCiAJV2FsVXNhZ2UgICAqd2Fs dXNhZ2U7CiAJQnVmZmVyVXNhZ2UgKmJ1ZmZlcnVzYWdlOwogCWJvb2wJCWxlYWRlcnBhcnRpY2lw YXRlcyA9IHRydWU7CisJYm9vbAkJbmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90ID0gdHJ1ZTsKIAlp bnQJCQlxdWVyeWxlbjsKIAogI2lmZGVmIERJU0FCTEVfTEVBREVSX1BBUlRJQ0lQQVRJT04KQEAg LTE0MzUsOSArMTQ0NiwxNiBAQCBfYnRfYmVnaW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRlICpidWls ZHN0YXRlLCBib29sIGlzY29uY3VycmVudCwgaW50IHJlcXVlc3QpCiAJICogbGl2ZSBhY2NvcmRp bmcgdG8gdGhhdC4KIAkgKi8KIAlpZiAoIWlzY29uY3VycmVudCkKKwl7CisJCUFzc2VydChBY3Rp dmVTbmFwc2hvdFNldCgpKTsKIAkJc25hcHNob3QgPSBTbmFwc2hvdEFueTsKKwkJbmVlZF9wb3Bf YWN0aXZlX3NuYXBzaG90ID0gZmFsc2U7CisJfQogCWVsc2UKKwl7CiAJCXNuYXBzaG90ID0gUmVn aXN0ZXJTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOworCQlQdXNoQWN0aXZlU25h cHNob3Qoc25hcHNob3QpOworCX0KIAogCS8qCiAJICogRXN0aW1hdGUgc2l6ZSBmb3Igb3VyIG93 biBQQVJBTExFTF9LRVlfQlRSRUVfU0hBUkVEIHdvcmtzcGFjZSwgYW5kCkBAIC0xNDkxLDYgKzE1 MDksOCBAQCBfYnRfYmVnaW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLCBib29s IGlzY29uY3VycmVudCwgaW50IHJlcXVlc3QpCiAJLyogSWYgbm8gRFNNIHNlZ21lbnQgd2FzIGF2 YWlsYWJsZSwgYmFjayBvdXQgKGRvIHNlcmlhbCBidWlsZCkgKi8KIAlpZiAocGN4dC0+c2VnID09 IE5VTEwpCiAJeworCQlpZiAobmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90KQorCQkJUG9wQWN0aXZl U25hcHNob3QoKTsKIAkJaWYgKElzTVZDQ1NuYXBzaG90KHNuYXBzaG90KSkKIAkJCVVucmVnaXN0 ZXJTbmFwc2hvdChzbmFwc2hvdCk7CiAJCURlc3Ryb3lQYXJhbGxlbENvbnRleHQocGN4dCk7CkBA IC0xNTg1LDYgKzE2MDUsOCBAQCBfYnRfYmVnaW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRlICpidWls ZHN0YXRlLCBib29sIGlzY29uY3VycmVudCwgaW50IHJlcXVlc3QpCiAJLyogSWYgbm8gd29ya2Vy cyB3ZXJlIHN1Y2Nlc3NmdWxseSBsYXVuY2hlZCwgYmFjayBvdXQgKGRvIHNlcmlhbCBidWlsZCkg Ki8KIAlpZiAocGN4dC0+bndvcmtlcnNfbGF1bmNoZWQgPT0gMCkKIAl7CisJCWlmIChuZWVkX3Bv cF9hY3RpdmVfc25hcHNob3QpCisJCQlQb3BBY3RpdmVTbmFwc2hvdCgpOwogCQlfYnRfZW5kX3Bh cmFsbGVsKGJ0bGVhZGVyKTsKIAkJcmV0dXJuOwogCX0KQEAgLTE2MDEsNiArMTYyMyw4IEBAIF9i dF9iZWdpbl9wYXJhbGxlbChCVEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIGJvb2wgaXNjb25jdXJy ZW50LCBpbnQgcmVxdWVzdCkKIAkgKiBzdXJlIHRoYXQgdGhlIGZhaWx1cmUtdG8tc3RhcnQgY2Fz ZSB3aWxsIG5vdCBoYW5nIGZvcmV2ZXIuCiAJICovCiAJV2FpdEZvclBhcmFsbGVsV29ya2Vyc1Rv QXR0YWNoKHBjeHQpOworCWlmIChuZWVkX3BvcF9hY3RpdmVfc25hcHNob3QpCisJCVBvcEFjdGl2 ZVNuYXBzaG90KCk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mvc3Bn aXN0L3NwZ2luc2VydC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGdpbnNlcnQuYwpp bmRleCA3ODBlZjY0NmE1NC4uNDk4MzJhMzY0NzAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9zcGdpc3Qvc3BnaW5zZXJ0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9z cGdpbnNlcnQuYwpAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUgIm5vZGVzL2V4ZWNub2Rlcy5o IgogI2luY2x1ZGUgInN0b3JhZ2UvYnVmbWdyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9idWxrX3dy aXRlLmgiCisjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRp bHMuaCIKICNpbmNsdWRlICJ1dGlscy9yZWwuaCIKIApAQCAtMTQzLDYgKzE0NCw4IEBAIHNwZ2J1 aWxkKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBJbmRleEluZm8gKmluZGV4SW5mbykK IAlyZXN1bHQgPSBwYWxsb2MwX29iamVjdChJbmRleEJ1aWxkUmVzdWx0KTsKIAlyZXN1bHQtPmhl YXBfdHVwbGVzID0gcmVsdHVwbGVzOwogCXJlc3VsdC0+aW5kZXhfdHVwbGVzID0gYnVpbGRzdGF0 ZS5pbmR0dXBsZXM7CisJSW52YWxpZGF0ZUNhdGFsb2dTbmFwc2hvdCgpOworCUFzc2VydCghaW5k ZXhJbmZvLT5paV9Db25jdXJyZW50IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnht aW4pKTsKIAogCXJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nl c3MvdHJhbnNhbS94YWN0LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94YWN0LmMKaW5k ZXggYWFmYzUzZTAxNjQuLjc3NzJkMTM3OWJjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nl c3MvdHJhbnNhbS94YWN0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGFjdC5j CkBAIC0zNzA4LDYgKzM3MDgsMTcgQEAgUHJldmVudEluVHJhbnNhY3Rpb25CbG9jayhib29sIGlz VG9wTGV2ZWwsIGNvbnN0IGNoYXIgKnN0bXRUeXBlKQogCU15WGFjdEZsYWdzIHw9IFhBQ1RfRkxB R1NfTkVFRElNTUVESUFURUNPTU1JVDsKIH0KIAordm9pZAorUHJldmVudElzb2xhdGlvblVzZXNY YWN0U25hcHNob3QoY29uc3QgY2hhciAqc3RtdFR5cGUpCit7CisJaWYgKElzb2xhdGlvblVzZXNY YWN0U25hcHNob3QoKSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0lO QVBQUk9QUklBVEVfSVNPTEFUSU9OX0xFVkVMX0ZPUl9DT01NQU5EKSwKKwkJLyogdHJhbnNsYXRv cjogJXMgcmVwcmVzZW50cyBhbiBTUUwgc3RhdGVtZW50IG5hbWUgKi8KKwkJCQkgZXJybXNnKCIl cyBkb2VzIG5vdCBzdXBwb3J0IHRyYW5zYWN0aW9uIGlzb2xhdGlvbiBoaWdoZXIgdGhhbiBSRUFE IENPTU1JVFRFRCIsCisJCQkJCQlzdG10VHlwZSkpKTsKK30KKwogLyoKICAqCVdhcm5Ob1RyYW5z YWN0aW9uQmxvY2sKICAqCVJlcXVpcmVUcmFuc2FjdGlvbkJsb2NrCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9jYXRhbG9nL2luZGV4LmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMKaW5k ZXggNDNkZTQyY2UzOWUuLjJhY2U2MGMxZjA3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRh bG9nL2luZGV4LmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCkBAIC04MCw2ICs4 MCw3IEBACiAjaW5jbHVkZSAidXRpbHMvc25hcG1nci5oIgogI2luY2x1ZGUgInV0aWxzL3N5c2Nh Y2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvdHVwbGVzb3J0LmgiCisjaW5jbHVkZSAic3RvcmFnZS9w cm9jLmgiCiAKIC8qIFBvdGVudGlhbGx5IHNldCBieSBwZ191cGdyYWRlX3N1cHBvcnQgZnVuY3Rp b25zICovCiBPaWQJCQliaW5hcnlfdXBncmFkZV9uZXh0X2luZGV4X3BnX2NsYXNzX29pZCA9IElu dmFsaWRPaWQ7CkBAIC0xNDkwLDggKzE0OTEsOCBAQCBpbmRleF9jb25jdXJyZW50bHlfYnVpbGQo T2lkIGhlYXBSZWxhdGlvbklkLAogCVJlbGF0aW9uCWluZGV4UmVsYXRpb247CiAJSW5kZXhJbmZv ICAqaW5kZXhJbmZvOwogCi0JLyogVGhpcyBoYWQgYmV0dGVyIG1ha2Ugc3VyZSB0aGF0IGEgc25h cHNob3QgaXMgYWN0aXZlICovCi0JQXNzZXJ0KEFjdGl2ZVNuYXBzaG90U2V0KCkpOworCUFzc2Vy dCghVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CisJQXNzZXJ0KCFUcmFuc2Fj dGlvbklkSXNWYWxpZChNeVByb2MtPnhpZCkpOwogCiAJLyogT3BlbiBhbmQgbG9jayB0aGUgcGFy ZW50IGhlYXAgcmVsYXRpb24gKi8KIAloZWFwUmVsID0gdGFibGVfb3BlbihoZWFwUmVsYXRpb25J ZCwgU2hhcmVVcGRhdGVFeGNsdXNpdmVMb2NrKTsKQEAgLTE1MDksMTkgKzE1MTAsMjkgQEAgaW5k ZXhfY29uY3VycmVudGx5X2J1aWxkKE9pZCBoZWFwUmVsYXRpb25JZCwKIAogCWluZGV4UmVsYXRp b24gPSBpbmRleF9vcGVuKGluZGV4UmVsYXRpb25JZCwgUm93RXhjbHVzaXZlTG9jayk7CiAKKwkv KiBCdWlsZEluZGV4SW5mbyBtYXkgcmVxdWlyZSBhcyBzbmFwc2hvdCBmb3IgZXhwcmVzc2lvbnMg YW5kIHByZWRpY2F0ZXMgKi8KKwlQdXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFw c2hvdCgpKTsKIAkvKgogCSAqIFdlIGhhdmUgdG8gcmUtYnVpbGQgdGhlIEluZGV4SW5mbyBzdHJ1 Y3QsIHNpbmNlIGl0IHdhcyBsb3N0IGluIHRoZQogCSAqIGNvbW1pdCBvZiB0aGUgdHJhbnNhY3Rp b24gd2hlcmUgdGhpcyBjb25jdXJyZW50IGluZGV4IHdhcyBjcmVhdGVkIGF0CiAJICogdGhlIGNh dGFsb2cgbGV2ZWwuCiAJICovCiAJaW5kZXhJbmZvID0gQnVpbGRJbmRleEluZm8oaW5kZXhSZWxh dGlvbik7CisJLyogRG9uZSB3aXRoIHNuYXBzaG90ICovCisJUG9wQWN0aXZlU25hcHNob3QoKTsK IAlBc3NlcnQoIWluZGV4SW5mby0+aWlfUmVhZHlGb3JJbnNlcnRzKTsKIAlpbmRleEluZm8tPmlp X0NvbmN1cnJlbnQgPSB0cnVlOwogCWluZGV4SW5mby0+aWlfQnJva2VuSG90Q2hhaW4gPSBmYWxz ZTsKIAorCUludmFsaWRhdGVDYXRhbG9nU25hcHNob3QoKTsKKwlBc3NlcnQoIVRyYW5zYWN0aW9u SWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOworCiAJLyogTm93IGJ1aWxkIHRoZSBpbmRleCAqLwog CWluZGV4X2J1aWxkKGhlYXBSZWwsIGluZGV4UmVsYXRpb24sIGluZGV4SW5mbywgZmFsc2UsIHRy dWUpOwogCisJSW52YWxpZGF0ZUNhdGFsb2dTbmFwc2hvdCgpOworCUFzc2VydCgoaW5kZXhJbmZv LT5paV9QYXJhbGxlbFdvcmtlcnMgfHwgaW5kZXhJbmZvLT5paV9VbmlxdWUpIHx8ICFUcmFuc2Fj dGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKKwogCS8qIFJvbGwgYmFjayBhbnkgR1VDIGNo YW5nZXMgZXhlY3V0ZWQgYnkgaW5kZXggZnVuY3Rpb25zICovCiAJQXRFT1hhY3RfR1VDKGZhbHNl LCBzYXZlX25lc3RsZXZlbCk7CiAKQEAgLTE1MzIsMTIgKzE1NDMsMTkgQEAgaW5kZXhfY29uY3Vy cmVudGx5X2J1aWxkKE9pZCBoZWFwUmVsYXRpb25JZCwKIAl0YWJsZV9jbG9zZShoZWFwUmVsLCBO b0xvY2spOwogCWluZGV4X2Nsb3NlKGluZGV4UmVsYXRpb24sIE5vTG9jayk7CiAKKwkvKgorCSAq IFVwZGF0aW5nIHBnX2luZGV4IG1pZ2h0IGludm9sdmUgVE9BU1QgdGFibGUgYWNjZXNzLCBzbyBl bnN1cmUgd2UKKwkgKiBoYXZlIGEgdmFsaWQgc25hcHNob3QuCisJICovCisJUHVzaEFjdGl2ZVNu YXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7CiAJLyoKIAkgKiBVcGRhdGUgdGhlIHBn X2luZGV4IHJvdyB0byBtYXJrIHRoZSBpbmRleCBhcyByZWFkeSBmb3IgaW5zZXJ0cy4gT25jZSB3 ZQogCSAqIGNvbW1pdCB0aGlzIHRyYW5zYWN0aW9uLCBhbnkgbmV3IHRyYW5zYWN0aW9ucyB0aGF0 IG9wZW4gdGhlIHRhYmxlIG11c3QKIAkgKiBpbnNlcnQgbmV3IGVudHJpZXMgaW50byB0aGUgaW5k ZXggZm9yIGluc2VydGlvbnMgYW5kIG5vbi1IT1QgdXBkYXRlcy4KIAkgKi8KIAlpbmRleF9zZXRf c3RhdGVfZmxhZ3MoaW5kZXhSZWxhdGlvbklkLCBJTkRFWF9DUkVBVEVfU0VUX1JFQURZKTsKKwkv KiB3ZSBjYW4gZG8gYXdheSB3aXRoIG91ciBzbmFwc2hvdCAqLworCVBvcEFjdGl2ZVNuYXBzaG90 KCk7CiB9CiAKIC8qCkBAIC0zMjM0LDcgKzMyNTIsOCBAQCBJbmRleENoZWNrRXhjbHVzaW9uKFJl bGF0aW9uIGhlYXBSZWxhdGlvbiwKIAkJCQkJCQkJIDAsIC8qIG51bWJlciBvZiBrZXlzICovCiAJ CQkJCQkJCSBOVUxMLAkvKiBzY2FuIGtleSAqLwogCQkJCQkJCQkgdHJ1ZSwJLyogYnVmZmVyIGFj Y2VzcyBzdHJhdGVneSBPSyAqLwotCQkJCQkJCQkgdHJ1ZSk7IC8qIHN5bmNzY2FuIE9LICovCisJ CQkJCQkJCSB0cnVlLCAvKiBzeW5jc2NhbiBPSyAqLworCQkJCQkJCQkgZmFsc2UpOwogCiAJd2hp bGUgKHRhYmxlX3NjYW5fZ2V0bmV4dHNsb3Qoc2NhbiwgRm9yd2FyZFNjYW5EaXJlY3Rpb24sIHNs b3QpKQogCXsKQEAgLTMyOTcsMTIgKzMzMTYsMTYgQEAgSW5kZXhDaGVja0V4Y2x1c2lvbihSZWxh dGlvbiBoZWFwUmVsYXRpb24sCiAgKiBhcyBvZiB0aGUgc3RhcnQgb2YgdGhlIHNjYW4gKHNlZSB0 YWJsZV9pbmRleF9idWlsZF9zY2FuKSwgd2hlcmVhcyBhIG5vcm1hbAogICogYnVpbGQgdGFrZXMg Y2FyZSB0byBpbmNsdWRlIHJlY2VudGx5LWRlYWQgdHVwbGVzLiAgVGhpcyBpcyBPSyBiZWNhdXNl CiAgKiB3ZSB3b24ndCBtYXJrIHRoZSBpbmRleCB2YWxpZCB1bnRpbCBhbGwgdHJhbnNhY3Rpb25z IHRoYXQgbWlnaHQgYmUgYWJsZQotICogdG8gc2VlIHRob3NlIHR1cGxlcyBhcmUgZ29uZS4gIFRo ZSByZWFzb24gZm9yIGRvaW5nIHRoYXQgaXMgdG8gYXZvaWQKKyAqIHRvIHNlZSB0aG9zZSB0dXBs ZXMgYXJlIGdvbmUuICBPbmUgb2YgcmVhc29ucyBmb3IgZG9pbmcgdGhhdCBpcyB0byBhdm9pZAog ICogYm9ndXMgdW5pcXVlLWluZGV4IGZhaWx1cmVzIGR1ZSB0byBjb25jdXJyZW50IFVQREFURXMg KHdlIG1pZ2h0IHNlZQogICogZGlmZmVyZW50IHZlcnNpb25zIG9mIHRoZSBzYW1lIHJvdyBhcyBi ZWluZyB2YWxpZCB3aGVuIHdlIHBhc3Mgb3ZlciB0aGVtLAogICogaWYgd2UgdXNlZCBIZWFwVHVw bGVTYXRpc2ZpZXNWYWN1dW0pLiAgVGhpcyBsZWF2ZXMgdXMgd2l0aCBhbiBpbmRleCB0aGF0CiAg KiBkb2VzIG5vdCBjb250YWluIGFueSB0dXBsZXMgYWRkZWQgdG8gdGhlIHRhYmxlIHdoaWxlIHdl IGJ1aWx0IHRoZSBpbmRleC4KICAqCisgKiBGdXJ0aGVybW9yZSwgaW4gY2FzZSBvZiBub24tdW5p cXVlIGluZGV4IHdlIHNldCBTT19SRVNFVF9TTkFQU0hPVCBmb3IgdGhlCisgKiBzY2FuLCB3aGlj aCBjYXVzZXMgbmV3IHNuYXBzaG90IHRvIGJlIHNldCBhcyBhY3RpdmUgZXZlcnkgc28gb2Z0ZW4u IFRoZSByZWFzb24KKyAqIGZvciB0aGF0IGlzIHRvIHByb3BhZ2F0ZSB0aGUgeG1pbiBob3Jpem9u IGZvcndhcmQuCisgKgogICogTmV4dCwgd2UgbWFyayB0aGUgaW5kZXggImluZGlzcmVhZHkiIChi dXQgc3RpbGwgbm90ICJpbmRpc3ZhbGlkIikgYW5kCiAgKiBjb21taXQgdGhlIHNlY29uZCB0cmFu c2FjdGlvbiBhbmQgc3RhcnQgYSB0aGlyZC4gIEFnYWluIHdlIHdhaXQgZm9yIGFsbAogICogdHJh bnNhY3Rpb25zIHRoYXQgY291bGQgaGF2ZSBiZWVuIG1vZGlmeWluZyB0aGUgdGFibGUgdG8gdGVy bWluYXRlLiAgTm93CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMu YyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jCmluZGV4IDYzNTY3OWNjMWYyLi42 N2UyMDcyMjBkMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMK KysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKQEAgLTE3MDEsMjMgKzE3MDEs MTcgQEAgRGVmaW5lSW5kZXgoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCSAqIGNoYWlucyBjYW4gYmUg Y3JlYXRlZCB3aGVyZSB0aGUgbmV3IHR1cGxlIGFuZCB0aGUgb2xkIHR1cGxlIGluIHRoZQogCSAq IGNoYWluIGhhdmUgZGlmZmVyZW50IGluZGV4IGtleXMuCiAJICoKLQkgKiBXZSBub3cgdGFrZSBh IG5ldyBzbmFwc2hvdCwgYW5kIGJ1aWxkIHRoZSBpbmRleCB1c2luZyBhbGwgdHVwbGVzIHRoYXQK LQkgKiBhcmUgdmlzaWJsZSBpbiB0aGlzIHNuYXBzaG90LiAgV2UgY2FuIGJlIHN1cmUgdGhhdCBh bnkgSE9UIHVwZGF0ZXMgdG8KKwkgKiBXZSBidWlsZCB0aGUgaW5kZXggdXNpbmcgYWxsIHR1cGxl cyB0aGF0IGFyZSB2aXNpYmxlIHVzaW5nIHNpbmdsZSBvcgorCSAqIG11bHRpcGxlIHJlZnJlc2hp bmcgc25hcHNob3RzLiBXZSBjYW4gYmUgc3VyZSB0aGF0IGFueSBIT1QgdXBkYXRlcyB0bwogCSAq IHRoZXNlIHR1cGxlcyB3aWxsIGJlIGNvbXBhdGlibGUgd2l0aCB0aGUgaW5kZXgsIHNpbmNlIGFu eSB1cGRhdGVzIG1hZGUKIAkgKiBieSB0cmFuc2FjdGlvbnMgdGhhdCBkaWRuJ3Qga25vdyBhYm91 dCB0aGUgaW5kZXggYXJlIG5vdyBjb21taXR0ZWQgb3IKIAkgKiByb2xsZWQgYmFjay4gIFRodXMs IGVhY2ggdmlzaWJsZSB0dXBsZSBpcyBlaXRoZXIgdGhlIGVuZCBvZiBpdHMKIAkgKiBIT1QtY2hh aW4gb3IgdGhlIGV4dGVuc2lvbiBvZiB0aGUgY2hhaW4gaXMgSE9ULXNhZmUgZm9yIHRoaXMgaW5k ZXguCiAJICovCiAKLQkvKiBTZXQgQWN0aXZlU25hcHNob3Qgc2luY2UgZnVuY3Rpb25zIGluIHRo ZSBpbmRleGVzIG1heSBuZWVkIGl0ICovCi0JUHVzaEFjdGl2ZVNuYXBzaG90KEdldFRyYW5zYWN0 aW9uU25hcHNob3QoKSk7Ci0KIAkvKiBQZXJmb3JtIGNvbmN1cnJlbnQgYnVpbGQgb2YgaW5kZXgg Ki8KIAlpbmRleF9jb25jdXJyZW50bHlfYnVpbGQodGFibGVJZCwgaW5kZXhSZWxhdGlvbklkKTsK IAotCS8qIHdlIGNhbiBkbyBhd2F5IHdpdGggb3VyIHNuYXBzaG90ICovCi0JUG9wQWN0aXZlU25h cHNob3QoKTsKLQogCS8qCiAJICogQ29tbWl0IHRoaXMgdHJhbnNhY3Rpb24gdG8gbWFrZSB0aGUg aW5kaXNyZWFkeSB1cGRhdGUgdmlzaWJsZS4KIAkgKi8KQEAgLTI4NzQsOCArMjg2OCwxMSBAQCBF eGVjUmVpbmRleChQYXJzZVN0YXRlICpwc3RhdGUsIGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBi b29sIGlzVG9wTGV2ZWwpCiAJfQogCiAJaWYgKGNvbmN1cnJlbnRseSkKKwl7CiAJCVByZXZlbnRJ blRyYW5zYWN0aW9uQmxvY2soaXNUb3BMZXZlbCwKIAkJCQkJCQkJICAiUkVJTkRFWCBDT05DVVJS RU5UTFkiKTsKKwkJUHJldmVudElzb2xhdGlvblVzZXNYYWN0U25hcHNob3QoIlJFSU5ERVggQ09O Q1VSUkVOVExZIik7CisJfQogCiAJcGFyYW1zLm9wdGlvbnMgPQogCQkodmVyYm9zZSA/IFJFSU5E RVhPUFRfVkVSQk9TRSA6IDApIHwKQEAgLTQxMzEsOSArNDEyOCw2IEBAIFJlaW5kZXhSZWxhdGlv bkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBj b25zdCBSZWluCiAJCWlmIChuZXdpZHgtPnNhZmUpCiAJCQlzZXRfaW5kZXhzYWZlX3Byb2NmbGFn cygpOwogCi0JCS8qIFNldCBBY3RpdmVTbmFwc2hvdCBzaW5jZSBmdW5jdGlvbnMgaW4gdGhlIGlu ZGV4ZXMgbWF5IG5lZWQgaXQgKi8KLQkJUHVzaEFjdGl2ZVNuYXBzaG90KEdldFRyYW5zYWN0aW9u U25hcHNob3QoKSk7Ci0KIAkJLyoKIAkJICogVXBkYXRlIHByb2dyZXNzIGZvciB0aGUgaW5kZXgg dG8gYnVpbGQsIHdpdGggdGhlIGNvcnJlY3QgcGFyZW50CiAJCSAqIHRhYmxlIGludm9sdmVkLgpA QCAtNDE0OCw3ICs0MTQyLDYgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJl aW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAkJLyogUGVyZm9y bSBjb25jdXJyZW50IGJ1aWxkIG9mIG5ldyBpbmRleCAqLwogCQlpbmRleF9jb25jdXJyZW50bHlf YnVpbGQobmV3aWR4LT50YWJsZUlkLCBuZXdpZHgtPmluZGV4SWQpOwogCi0JCVBvcEFjdGl2ZVNu YXBzaG90KCk7CiAJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCX0KIApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jIGIvc3JjL2JhY2tlbmQvb3B0 aW1pemVyL3BsYW4vcGxhbm5lci5jCmluZGV4IDQyNjA0YTBmNzVjLi5kNmJiMzU0NmJlYSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jCisrKyBiL3NyYy9i YWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYwpAQCAtNjMsNiArNjMsNyBAQAogI2luY2x1 ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL3JlbC5oIgogI2luY2x1ZGUg InV0aWxzL3NlbGZ1bmNzLmgiCisjaW5jbHVkZSAidXRpbHMvc25hcG1nci5oIgogCiAvKiBHVUMg cGFyYW1ldGVycyAqLwogZG91YmxlCQljdXJzb3JfdHVwbGVfZnJhY3Rpb24gPSBERUZBVUxUX0NV UlNPUl9UVVBMRV9GUkFDVElPTjsKQEAgLTcwMjcsNiArNzAyOCw3IEBAIHBsYW5fY3JlYXRlX2lu ZGV4X3dvcmtlcnMoT2lkIHRhYmxlT2lkLCBPaWQgaW5kZXhPaWQpCiAJUmVsYXRpb24JaGVhcDsK IAlSZWxhdGlvbglpbmRleDsKIAlSZWxPcHRJbmZvICpyZWw7CisJYm9vbAkJbmVlZF9wb3BfYWN0 aXZlX3NuYXBzaG90ID0gZmFsc2U7CiAJaW50CQkJcGFyYWxsZWxfd29ya2VyczsKIAlCbG9ja051 bWJlciBoZWFwX2Jsb2NrczsKIAlkb3VibGUJCXJlbHR1cGxlczsKQEAgLTcwODIsNiArNzA4NCwx MiBAQCBwbGFuX2NyZWF0ZV9pbmRleF93b3JrZXJzKE9pZCB0YWJsZU9pZCwgT2lkIGluZGV4T2lk KQogCWhlYXAgPSB0YWJsZV9vcGVuKHRhYmxlT2lkLCBOb0xvY2spOwogCWluZGV4ID0gaW5kZXhf b3BlbihpbmRleE9pZCwgTm9Mb2NrKTsKIAorCS8qIFNldCBBY3RpdmVTbmFwc2hvdCBzaW5jZSBm dW5jdGlvbnMgaW4gdGhlIGluZGV4ZXMgbWF5IG5lZWQgaXQgKi8KKwlpZiAoIUFjdGl2ZVNuYXBz aG90U2V0KCkpCisJeworCQlQdXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hv dCgpKTsKKwkJbmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90ID0gdHJ1ZTsKKwl9CiAJLyoKIAkgKiBE ZXRlcm1pbmUgaWYgaXQncyBzYWZlIHRvIHByb2NlZWQuCiAJICoKQEAgLTcxMzksNiArNzE0Nyw4 IEBAIHBsYW5fY3JlYXRlX2luZGV4X3dvcmtlcnMoT2lkIHRhYmxlT2lkLCBPaWQgaW5kZXhPaWQp CiAJCXBhcmFsbGVsX3dvcmtlcnMtLTsKIAogZG9uZToKKwlpZiAobmVlZF9wb3BfYWN0aXZlX3Nu YXBzaG90KQorCQlQb3BBY3RpdmVTbmFwc2hvdCgpOwogCWluZGV4X2Nsb3NlKGluZGV4LCBOb0xv Y2spOwogCXRhYmxlX2Nsb3NlKGhlYXAsIE5vTG9jayk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3Rjb3AvdXRpbGl0eS5jIGIvc3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMKaW5kZXggYmY3 MDdmMmQ1N2YuLmEwODk1ZjJjNDZiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC90Y29wL3V0aWxp dHkuYworKysgYi9zcmMvYmFja2VuZC90Y29wL3V0aWxpdHkuYwpAQCAtMTQ2MCw4ICsxNDYwLDEx IEBAIFByb2Nlc3NVdGlsaXR5U2xvdyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJCWJvb2wJCWlz X2FsdGVyX3RhYmxlOwogCiAJCQkJCWlmIChzdG10LT5jb25jdXJyZW50KQorCQkJCQl7CiAJCQkJ CQlQcmV2ZW50SW5UcmFuc2FjdGlvbkJsb2NrKGlzVG9wTGV2ZWwsCiAJCQkJCQkJCQkJCQkgICJD UkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIik7CisJCQkJCQlQcmV2ZW50SXNvbGF0aW9uVXNlc1hh Y3RTbmFwc2hvdCgiQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSIpOworCQkJCQl9CiAKIAkJCQkJ LyoKIAkJCQkJICogTG9vayB1cCB0aGUgcmVsYXRpb24gT0lEIGp1c3Qgb25jZSwgcmlnaHQgaGVy ZSBhdCB0aGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2VycmNvZGVzLnR4dCBiL3Ny Yy9iYWNrZW5kL3V0aWxzL2VycmNvZGVzLnR4dAppbmRleCA1YjI1NDAyZWJiZS4uYTgwZjA4YWYy NDEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2VycmNvZGVzLnR4dAorKysgYi9zcmMv YmFja2VuZC91dGlscy9lcnJjb2Rlcy50eHQKQEAgLTI1OSw2ICsyNTksNyBAQCBTZWN0aW9uOiBD bGFzcyAyNSAtIEludmFsaWQgVHJhbnNhY3Rpb24gU3RhdGUKIDI1UDAyICAgIEUgICAgRVJSQ09E RV9JTl9GQUlMRURfU1FMX1RSQU5TQUNUSU9OICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg aW5fZmFpbGVkX3NxbF90cmFuc2FjdGlvbgogMjVQMDMgICAgRSAgICBFUlJDT0RFX0lETEVfSU5f VFJBTlNBQ1RJT05fU0VTU0lPTl9USU1FT1VUICAgICAgICAgICAgICAgICAgICBpZGxlX2luX3Ry YW5zYWN0aW9uX3Nlc3Npb25fdGltZW91dAogMjVQMDQgICAgRSAgICBFUlJDT0RFX1RSQU5TQUNU SU9OX1RJTUVPVVQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2FjdGlv bl90aW1lb3V0CisyNVAwNSAgICBFICAgIEVSUkNPREVfSU5BUFBST1BSSUFURV9JU09MQVRJT05f TEVWRUxfRk9SX0NPTU1BTkQgICAgICAgICAgICAgIGluYXBwcm9wcmlhdGVfaXNvbGF0aW9uX2xl dmVsX2Zvcl9jb21tYW5kCiAKIFNlY3Rpb246IENsYXNzIDI2IC0gSW52YWxpZCBTUUwgU3RhdGVt ZW50IE5hbWUKIApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19hbWNoZWNrL3QvMDA2X2NpYy5wbCBi L3NyYy9iaW4vcGdfYW1jaGVjay90LzAwNl9jaWMucGwKaW5kZXggNzBiMTg1MjEyZTcuLjRhZTdi Nzk2YzZlIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2FtY2hlY2svdC8wMDZfY2ljLnBsCisrKyBi L3NyYy9iaW4vcGdfYW1jaGVjay90LzAwNl9jaWMucGwKQEAgLTE1Miw3ICsxNTIsNyBAQCAkbm9k ZS0+cGdiZW5jaCgKIAkwLAogCVtxcnthY3R1YWxseSBwcm9jZXNzZWR9XSwKIAlbcXJ7XiR9XSwK LQknY29uY3VycmVudCBvcGVyYXRpb25zIHdpdGggUkVJTkRFWC9DUkVBVEUgSU5ERVggQ09OQ1VS UkVOVExZIGZvciBHSU4vR0lTVC9CUklOL0hBU0gvU1BHSVNUJywKKwknY29uY3VycmVudCBvcGVy YXRpb25zIHdpdGggUkVJTkRFWC9DUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGZvciBHSU4nLAog CXsKIAkJJ2NvbmN1cnJlbnRfb3BzX2dpbl9pZHgnID0+IHEoCiAJCQlTRUxFQ1QgcGdfdHJ5X2Fk dmlzb3J5X2xvY2soNDIpOjppbnRlZ2VyIEFTIGdvdGxvY2sgXGdzZXQKZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaApp bmRleCAyNGEyN2NjMDQzYS4uOTQ5OWQ1ZjA1YTkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2Fj Y2Vzcy9oZWFwYW0uaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKQEAgLTQzLDYg KzQzLDggQEAKICNkZWZpbmUgSEVBUF9QQUdFX1BSVU5FX01BUktfVU5VU0VEX05PVwkJKDEgPDwg MCkKICNkZWZpbmUgSEVBUF9QQUdFX1BSVU5FX0ZSRUVaRQkJCQkoMSA8PCAxKQogCisjZGVmaW5l IFNPX1JFU0VUX1NOQVBTSE9UX0VBQ0hfTl9QQUdFCQk0MDk2CisKIHR5cGVkZWYgc3RydWN0IEJ1 bGtJbnNlcnRTdGF0ZURhdGEgKkJ1bGtJbnNlcnRTdGF0ZTsKIHR5cGVkZWYgc3RydWN0IEdsb2Jh bFZpc1N0YXRlIEdsb2JhbFZpc1N0YXRlOwogdHlwZWRlZiBzdHJ1Y3QgVHVwbGVUYWJsZVNsb3Qg VHVwbGVUYWJsZVNsb3Q7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5o IGIvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaAppbmRleCAwNjA4NDc1MjI0NS4uZDA3MDk3 ODJkZGUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgKKysrIGIvc3Jj L2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaApAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgInN0 b3JhZ2UvcmVhZF9zdHJlYW0uaCIKICNpbmNsdWRlICJ1dGlscy9yZWwuaCIKICNpbmNsdWRlICJ1 dGlscy9zbmFwc2hvdC5oIgorI2luY2x1ZGUgInV0aWxzL2luamVjdGlvbl9wb2ludC5oIgogCiAK ICNkZWZpbmUgREVGQVVMVF9UQUJMRV9BQ0NFU1NfTUVUSE9ECSJoZWFwIgpAQCAtNjMsNiArNjQs MTcgQEAgdHlwZWRlZiBlbnVtIFNjYW5PcHRpb25zCiAKIAkvKiB1bnJlZ2lzdGVyIHNuYXBzaG90 IGF0IHNjYW4gZW5kPyAqLwogCVNPX1RFTVBfU05BUFNIT1QgPSAxIDw8IDksCisJLyoKKwkgKiBS ZXNldCBzY2FuIGFuZCBjYXRhbG9nIHNuYXBzaG90IGV2ZXJ5IHNvIG9mdGVuPyBJZiBzbywgZWFj aAorCSAqIFNPX1JFU0VUX1NOQVBTSE9UX0VBQ0hfTl9QQUdFIHBhZ2VzIGFjdGl2ZSBzbmFwc2hv dCBpcyBwb3BwZWQsCisJICogY2F0YWxvZyBzbmFwc2hvdCBpbnZhbGlkYXRlZCwgbGF0ZXN0IHNu YXBzaG90IHB1c2hlZCBhcyBhY3RpdmUuCisJICoKKwkgKiBBdCB0aGUgZW5kIG9mIHRoZSBzY2Fu IHNuYXBzaG90IGlzIG5vdCBwb3BwZWQuCisJICogR29hbCBvZiBzdWNoIG1vZGUgaXMga2VlcCB4 bWluIHByb3BhZ2F0aW5nIGhvcml6b24gZm9yd2FyZC4KKwkgKgorCSAqIHNlZSBoZWFwX3Jlc2V0 X3NjYW5fc25hcHNob3QgZm9yIGRldGFpbHMuCisJICovCisJU09fUkVTRVRfU05BUFNIT1QgPSAx IDw8IDEwLAogfQkJCVNjYW5PcHRpb25zOwogCiAvKgpAQCAtOTE5LDcgKzkzMSw4IEBAIGV4dGVy biBUYWJsZVNjYW5EZXNjIHRhYmxlX2JlZ2luc2Nhbl9jYXRhbG9nKFJlbGF0aW9uIHJlbGF0aW9u LCBpbnQgbmtleXMsCiBzdGF0aWMgaW5saW5lIFRhYmxlU2NhbkRlc2MKIHRhYmxlX2JlZ2luc2Nh bl9zdHJhdChSZWxhdGlvbiByZWwsIFNuYXBzaG90IHNuYXBzaG90LAogCQkJCQkgIGludCBua2V5 cywgU2NhbktleURhdGEgKmtleSwKLQkJCQkJICBib29sIGFsbG93X3N0cmF0LCBib29sIGFsbG93 X3N5bmMpCisJCQkJCSAgYm9vbCBhbGxvd19zdHJhdCwgYm9vbCBhbGxvd19zeW5jLAorCQkJCQkg IGJvb2wgcmVzZXRfc25hcHNob3QpCiB7CiAJdWludDMyCQlmbGFncyA9IFNPX1RZUEVfU0VRU0NB TiB8IFNPX0FMTE9XX1BBR0VNT0RFOwogCkBAIC05MjcsNiArOTQwLDE1IEBAIHRhYmxlX2JlZ2lu c2Nhbl9zdHJhdChSZWxhdGlvbiByZWwsIFNuYXBzaG90IHNuYXBzaG90LAogCQlmbGFncyB8PSBT T19BTExPV19TVFJBVDsKIAlpZiAoYWxsb3dfc3luYykKIAkJZmxhZ3MgfD0gU09fQUxMT1dfU1lO QzsKKwlpZiAocmVzZXRfc25hcHNob3QpCisJeworCQlJTkpFQ1RJT05fUE9JTlQoInRhYmxlX2Jl Z2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMiLCBOVUxMKTsKKwkJLyogQWN0aXZlIHNuYXBz aG90IGlzIHJlcXVpcmVkIG9uIHN0YXJ0LiAqLworCQlBc3NlcnQoR2V0QWN0aXZlU25hcHNob3Qo KSA9PSBzbmFwc2hvdCk7CisJCS8qIEFjdGl2ZSBzbmFwc2hvdCBzaG91bGQgbm90IGJlIHJlZ2lz dGVyZWQgdG8ga2VlcCB4bWluIHByb3BhZ2F0aW5nLiAqLworCQlBc3NlcnQoR2V0QWN0aXZlU25h cHNob3QoKS0+cmVnZF9jb3VudCA9PSAwKTsKKwkJZmxhZ3MgfD0gKFNPX1JFU0VUX1NOQVBTSE9U KTsKKwl9CiAKIAlyZXR1cm4gdGFibGVfYmVnaW5zY2FuX2NvbW1vbihyZWwsIHNuYXBzaG90LCBu a2V5cywga2V5LCBOVUxMLCBmbGFncyk7CiB9CkBAIC0xNzYwLDYgKzE3ODIsMTAgQEAgdGFibGVf c2Nhbl9hbmFseXplX25leHRfdHVwbGUoVGFibGVTY2FuRGVzYyBzY2FuLAogICogdmVyeSBoYXJk IHRvIGRldGVjdCB3aGV0aGVyIHRoZXkncmUgcmVhbGx5IGluY29tcGF0aWJsZSB3aXRoIHRoZSBj aGFpbiB0aXAuCiAgKiBUaGlzIG9ubHkgcmVhbGx5IG1ha2VzIHNlbnNlIGZvciBoZWFwIEFNLCBp dCBtaWdodCBuZWVkIHRvIGJlIGdlbmVyYWxpemVkCiAgKiBmb3Igb3RoZXIgQU1zIGxhdGVyLgor ICoKKyAqIEluIGNhc2Ugb2Ygbm9uLXVuaXF1ZSBpbmRleCBhbmQgbm9uLXBhcmFsbGVsIGNvbmN1 cnJlbnQgYnVpbGQsCisgKiBTT19SRVNFVF9TTkFQU0hPVCBpcyBhcHBsaWVkIGZvciB0aGUgc2Nh bi4gVGhhdCBsZWFkcyB0byBjaGFuZ2luZyBzbmFwc2hvdHMKKyAqIG9uIHRoZSBmbHkgdG8gYWxs b3cgeG1pbiBob3Jpem9uIHByb3BhZ2F0ZS4KICAqLwogc3RhdGljIGlubGluZSBkb3VibGUKIHRh YmxlX2luZGV4X2J1aWxkX3NjYW4oUmVsYXRpb24gdGFibGVfcmVsLApkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvYWNjZXNzL3hhY3QuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy94YWN0LmgKaW5kZXgg ZjBiNGQ3OTUwNzEuLjJlM2Y2MTdhOTQ5IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3Mv eGFjdC5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy94YWN0LmgKQEAgLTQ4OCw2ICs0ODgsNyBA QCBleHRlcm4gYm9vbCBJc1RyYW5zYWN0aW9uT3JUcmFuc2FjdGlvbkJsb2NrKHZvaWQpOwogZXh0 ZXJuIGNoYXIgVHJhbnNhY3Rpb25CbG9ja1N0YXR1c0NvZGUodm9pZCk7CiBleHRlcm4gdm9pZCBB Ym9ydE91dE9mQW55VHJhbnNhY3Rpb24odm9pZCk7CiBleHRlcm4gdm9pZCBQcmV2ZW50SW5UcmFu c2FjdGlvbkJsb2NrKGJvb2wgaXNUb3BMZXZlbCwgY29uc3QgY2hhciAqc3RtdFR5cGUpOworZXh0 ZXJuIHZvaWQgUHJldmVudElzb2xhdGlvblVzZXNYYWN0U25hcHNob3QoY29uc3QgY2hhciAqc3Rt dFR5cGUpOwogZXh0ZXJuIHZvaWQgUmVxdWlyZVRyYW5zYWN0aW9uQmxvY2soYm9vbCBpc1RvcExl dmVsLCBjb25zdCBjaGFyICpzdG10VHlwZSk7CiBleHRlcm4gdm9pZCBXYXJuTm9UcmFuc2FjdGlv bkJsb2NrKGJvb2wgaXNUb3BMZXZlbCwgY29uc3QgY2hhciAqc3RtdFR5cGUpOwogZXh0ZXJuIGJv b2wgSXNJblRyYW5zYWN0aW9uQmxvY2soYm9vbCBpc1RvcExldmVsKTsKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9NYWtlZmlsZSBiL3NyYy90ZXN0L21vZHVs ZXMvaW5qZWN0aW9uX3BvaW50cy9NYWtlZmlsZQppbmRleCBhNDFkNzgxZjhjOS4uZWVhZWFhZjJj YzYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9NYWtlZmls ZQorKysgYi9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvTWFrZWZpbGUKQEAgLTks NyArOSw3IEBAIEVYVEVOU0lPTiA9IGluamVjdGlvbl9wb2ludHMKIERBVEEgPSBpbmplY3Rpb25f cG9pbnRzLS0xLjAuc3FsCiBQR0ZJTEVERVNDID0gImluamVjdGlvbl9wb2ludHMgLSBmYWNpbGl0 eSBmb3IgaW5qZWN0aW9uIHBvaW50cyIKIAotUkVHUkVTUyA9IGluamVjdGlvbl9wb2ludHMgaGFz aGFnZyByZWluZGV4X2NvbmMgdmFjdXVtCitSRUdSRVNTID0gaW5qZWN0aW9uX3BvaW50cyBoYXNo YWdnIHJlaW5kZXhfY29uYyB2YWN1dW0gY2ljX3Jlc2V0X3NuYXBzaG90cwogUkVHUkVTU19PUFRT ID0gLS1kbHBhdGg9JCh0b3BfYnVpbGRkaXIpL3NyYy90ZXN0L3JlZ3Jlc3MKIAogSVNPTEFUSU9O ID0gYmFzaWMgXApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRz L2V4cGVjdGVkL2NpY19yZXNldF9zbmFwc2hvdHMub3V0IGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmpl Y3Rpb25fcG9pbnRzL2V4cGVjdGVkL2NpY19yZXNldF9zbmFwc2hvdHMub3V0Cm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5iNGFkOTBlYjMzOQotLS0gL2Rldi9udWxsCisr KyBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9leHBlY3RlZC9jaWNfcmVzZXRf c25hcHNob3RzLm91dApAQCAtMCwwICsxLDExNSBAQAorQ1JFQVRFIEVYVEVOU0lPTiBpbmplY3Rp b25fcG9pbnRzOworU0VMRUNUIGluamVjdGlvbl9wb2ludHNfc2V0X2xvY2FsKCk7CisgaW5qZWN0 aW9uX3BvaW50c19zZXRfbG9jYWwgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCiso MSByb3cpCisKK1NFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgnaGVhcF9yZXNldF9zY2Fu X3NuYXBzaG90X2VmZmVjdGl2ZScsICdub3RpY2UnKTsKKyBpbmplY3Rpb25fcG9pbnRzX2F0dGFj aCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIGluamVj dGlvbl9wb2ludHNfYXR0YWNoKCd0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3Rz JywgJ25vdGljZScpOworIGluamVjdGlvbl9wb2ludHNfYXR0YWNoIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIAorKDEgcm93KQorCitDUkVBVEUgU0NIRU1BIGNpY19yZXNldF9zbmFwOwor Q1JFQVRFIFRBQkxFIGNpY19yZXNldF9zbmFwLnRibChpIGludCBwcmltYXJ5IGtleSwgaiBpbnQp OworSU5TRVJUIElOVE8gY2ljX3Jlc2V0X3NuYXAudGJsIFNFTEVDVCBpLCBpICogSSBGUk9NIGdl bmVyYXRlX3NlcmllcygxLCAyMDApIHMoaSk7CitDUkVBVEUgRlVOQ1RJT04gY2ljX3Jlc2V0X3Nu YXAucHJlZGljYXRlX3N0YWJsZShpbnRlZ2VyKSBSRVRVUk5TIGJvb2wgSU1NVVRBQkxFCisJCQkJ CQkJCQkgIExBTkdVQUdFIHBscGdzcWwgQVMgJCQKK0JFR0lOCisgICAgRVhFQ1VURSAnU0VMRUNU IHR4aWRfY3VycmVudCgpJzsKKyAgICBSRVRVUk4gTU9EKCQxLCAyKSA9IDA7CitFTkQ7ICQkOwor Q1JFQVRFIEZVTkNUSU9OIGNpY19yZXNldF9zbmFwLnByZWRpY2F0ZV9zdGFibGVfbm9fcGFyYW0o KSBSRVRVUk5TIGJvb2wgSU1NVVRBQkxFCisJCQkJCQkJCQkgIExBTkdVQUdFIHBscGdzcWwgQVMg JCQKK0JFR0lOCisgICAgRVhFQ1VURSAnU0VMRUNUIHR4aWRfY3VycmVudCgpJzsKKyAgICBSRVRV Uk4gZmFsc2U7CitFTkQ7ICQkOworLS0tLS0tLS0tLS0tLS0tLQorQUxURVIgVEFCTEUgY2ljX3Jl c2V0X3NuYXAudGJsIFNFVCAocGFyYWxsZWxfd29ya2Vycz0wKTsKK0NSRUFURSBVTklRVUUgSU5E RVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSk7CitSRUlOREVYIElO REVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitEUk9QIElOREVYIENPTkNVUlJF TlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBP TiBjaWNfcmVzZXRfc25hcC50YmwoaSk7CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBp bmplY3Rpb24gcG9pbnQgdGFibGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cworTk9U SUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhlYXBfcmVzZXRfc2Nh bl9zbmFwc2hvdF9lZmZlY3RpdmUKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNl dF9zbmFwLmlkeDsKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2lu dCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzCitOT1RJQ0U6ICBub3RpY2Ug dHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2Vm ZmVjdGl2ZQorRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworQ1JF QVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKE1PRChpLCAy KSwgaikgV0hFUkUgTU9EKGksIDIpID0gMDsKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9y IGluamVjdGlvbiBwb2ludCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzCitO T1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcF9yZXNldF9z Y2FuX3NuYXBzaG90X2VmZmVjdGl2ZQorUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jl c2V0X3NuYXAuaWR4OworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBv aW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMKK05PVElDRTogIG5vdGlj ZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3Rf ZWZmZWN0aXZlCitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitD UkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSwgaikg V0hFUkUgY2ljX3Jlc2V0X3NuYXAucHJlZGljYXRlX3N0YWJsZShpKTsKK05PVElDRTogIG5vdGlj ZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVz ZXRfc25hcHNob3RzCitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9p bnQgaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZQorUkVJTkRFWCBJTkRFWCBDT05D VVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBm b3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMK K05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFwX3Jlc2V0 X3NjYW5fc25hcHNob3RfZWZmZWN0aXZlCitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVz ZXRfc25hcC5pZHg7CitDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRf c25hcC50YmwoaSwgaikgV0hFUkUgY2ljX3Jlc2V0X3NuYXAucHJlZGljYXRlX3N0YWJsZV9ub19w YXJhbSgpOworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRh YmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMKK1JFSU5ERVggSU5ERVggQ09OQ1VS UkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9y IGluamVjdGlvbiBwb2ludCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzCitE Uk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitDUkVBVEUgSU5ERVgg Q09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwgVVNJTkcgQlJJTihpKTsKK05P VElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9iZWdpbnNj YW5fc3RyYXRfcmVzZXRfc25hcHNob3RzCitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBp bmplY3Rpb24gcG9pbnQgaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZQorUkVJTkRF WCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworTk9USUNFOiAgbm90aWNl IHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNl dF9zbmFwc2hvdHMKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2lu dCBoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3RfZWZmZWN0aXZlCitEUk9QIElOREVYIENPTkNVUlJF TlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CistLSBUaGUgc2FtZSBpbiBwYXJhbGxlbCBtb2RlCitB TFRFUiBUQUJMRSBjaWNfcmVzZXRfc25hcC50YmwgU0VUIChwYXJhbGxlbF93b3JrZXJzPTIpOwor Q1JFQVRFIFVOSVFVRSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRi bChpKTsKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0RS T1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0NSRUFURSBJTkRFWCBD T05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChpKTsKK1JFSU5ERVggSU5ERVgg Q09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0RST1AgSU5ERVggQ09OQ1VSUkVOVExZ IGNpY19yZXNldF9zbmFwLmlkeDsKK0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNp Y19yZXNldF9zbmFwLnRibChNT0QoaSwgMiksIGopIFdIRVJFIE1PRChpLCAyKSA9IDA7CitSRUlO REVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitEUk9QIElOREVYIENP TkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZ IGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSwgaikgV0hFUkUgY2ljX3Jlc2V0X3NuYXAucHJl ZGljYXRlX3N0YWJsZShpKTsKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlv biBwb2ludCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzCitOT1RJQ0U6ICBu b3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcF9yZXNldF9zY2FuX3NuYXBz aG90X2VmZmVjdGl2ZQorUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAu aWR4OworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxl X2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMKK05PVElDRTogIG5vdGljZSB0cmlnZ2Vy ZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3RfZWZmZWN0aXZl CitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitDUkVBVEUgSU5E RVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSwgaikgV0hFUkUgY2lj X3Jlc2V0X3NuYXAucHJlZGljYXRlX3N0YWJsZV9ub19wYXJhbSgpOworUkVJTkRFWCBJTkRFWCBD T05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkg Y2ljX3Jlc2V0X3NuYXAuaWR4OworQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2lj X3Jlc2V0X3NuYXAudGJsKGkgREVTQyBOVUxMUyBMQVNUKTsKK1JFSU5ERVggSU5ERVggQ09OQ1VS UkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19y ZXNldF9zbmFwLmlkeDsKK0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNl dF9zbmFwLnRibCBVU0lORyBCUklOKGkpOworUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2lj X3Jlc2V0X3NuYXAuaWR4OworRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAu aWR4OworQkVHSU4gVFJBTlNBQ1RJT047CitDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBP TiBjaWNfcmVzZXRfc25hcC50YmwoaSk7CitFUlJPUjogIENSRUFURSBJTkRFWCBDT05DVVJSRU5U TFkgY2Fubm90IHJ1biBpbnNpZGUgYSB0cmFuc2FjdGlvbiBibG9jaworUk9MTEJBQ0sgOworU0VU IGRlZmF1bHRfdHJhbnNhY3Rpb25faXNvbGF0aW9uID0gc2VyaWFsaXphYmxlOworQ1JFQVRFIElO REVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGkpOworRVJST1I6ICBD UkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGRvZXMgbm90IHN1cHBvcnQgdHJhbnNhY3Rpb24gaXNv bGF0aW9uIGhpZ2hlciB0aGFuIFJFQUQgQ09NTUlUVEVECitSRUlOREVYIElOREVYIENPTkNVUlJF TlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitFUlJPUjogIFJFSU5ERVggQ09OQ1VSUkVOVExZIGRv ZXMgbm90IHN1cHBvcnQgdHJhbnNhY3Rpb24gaXNvbGF0aW9uIGhpZ2hlciB0aGFuIFJFQUQgQ09N TUlUVEVECitSRVNFVCBkZWZhdWx0X3RyYW5zYWN0aW9uX2lzb2xhdGlvbjsKK0RST1AgU0NIRU1B IGNpY19yZXNldF9zbmFwIENBU0NBREU7CitOT1RJQ0U6ICBkcm9wIGNhc2NhZGVzIHRvIDMgb3Ro ZXIgb2JqZWN0cworREVUQUlMOiAgZHJvcCBjYXNjYWRlcyB0byB0YWJsZSBjaWNfcmVzZXRfc25h cC50YmwKK2Ryb3AgY2FzY2FkZXMgdG8gZnVuY3Rpb24gY2ljX3Jlc2V0X3NuYXAucHJlZGljYXRl X3N0YWJsZShpbnRlZ2VyKQorZHJvcCBjYXNjYWRlcyB0byBmdW5jdGlvbiBjaWNfcmVzZXRfc25h cC5wcmVkaWNhdGVfc3RhYmxlX25vX3BhcmFtKCkKK0RST1AgRVhURU5TSU9OIGluamVjdGlvbl9w b2ludHM7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvbWVz b24uYnVpbGQgYi9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvbWVzb24uYnVpbGQK aW5kZXggZmNjODU0MTQ1MTUuLjVkMjk4Y2QyNzEwIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1 bGVzL2luamVjdGlvbl9wb2ludHMvbWVzb24uYnVpbGQKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9p bmplY3Rpb25fcG9pbnRzL21lc29uLmJ1aWxkCkBAIC0zNiw2ICszNiw3IEBAIHRlc3RzICs9IHsK ICAgICAgICdoYXNoYWdnJywKICAgICAgICdyZWluZGV4X2NvbmMnLAogICAgICAgJ3ZhY3V1bScs CisgICAgICAnY2ljX3Jlc2V0X3NuYXBzaG90cycsCiAgICAgXSwKICAgICAncmVncmVzc19hcmdz JzogWyctLWRscGF0aCcsIG1lc29uLnByb2plY3RfYnVpbGRfcm9vdCgpIC8gJ3NyYy90ZXN0L3Jl Z3Jlc3MnXSwKICAgICAjIFRoZSBpbmplY3Rpb24gcG9pbnRzIGFyZSBjbHVzdGVyLXdpZGUsIHNv IGRpc2FibGUgaW5zdGFsbGNoZWNrCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2luamVj dGlvbl9wb2ludHMvc3FsL2NpY19yZXNldF9zbmFwc2hvdHMuc3FsIGIvc3JjL3Rlc3QvbW9kdWxl cy9pbmplY3Rpb25fcG9pbnRzL3NxbC9jaWNfcmVzZXRfc25hcHNob3RzLnNxbApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uN2Y3ZGZmYTViZTQKLS0tIC9kZXYvbnVsbAor KysgYi9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvc3FsL2NpY19yZXNldF9zbmFw c2hvdHMuc3FsCkBAIC0wLDAgKzEsOTUgQEAKK0NSRUFURSBFWFRFTlNJT04gaW5qZWN0aW9uX3Bv aW50czsKKworU0VMRUNUIGluamVjdGlvbl9wb2ludHNfc2V0X2xvY2FsKCk7CitTRUxFQ1QgaW5q ZWN0aW9uX3BvaW50c19hdHRhY2goJ2hlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUn LCAnbm90aWNlJyk7CitTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ3RhYmxlX2JlZ2lu c2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMnLCAnbm90aWNlJyk7CisKKworQ1JFQVRFIFNDSEVN QSBjaWNfcmVzZXRfc25hcDsKK0NSRUFURSBUQUJMRSBjaWNfcmVzZXRfc25hcC50YmwoaSBpbnQg cHJpbWFyeSBrZXksIGogaW50KTsKK0lOU0VSVCBJTlRPIGNpY19yZXNldF9zbmFwLnRibCBTRUxF Q1QgaSwgaSAqIEkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMjAwKSBzKGkpOworCitDUkVBVEUg RlVOQ1RJT04gY2ljX3Jlc2V0X3NuYXAucHJlZGljYXRlX3N0YWJsZShpbnRlZ2VyKSBSRVRVUk5T IGJvb2wgSU1NVVRBQkxFCisJCQkJCQkJCQkgIExBTkdVQUdFIHBscGdzcWwgQVMgJCQKK0JFR0lO CisgICAgRVhFQ1VURSAnU0VMRUNUIHR4aWRfY3VycmVudCgpJzsKKyAgICBSRVRVUk4gTU9EKCQx LCAyKSA9IDA7CitFTkQ7ICQkOworCitDUkVBVEUgRlVOQ1RJT04gY2ljX3Jlc2V0X3NuYXAucHJl ZGljYXRlX3N0YWJsZV9ub19wYXJhbSgpIFJFVFVSTlMgYm9vbCBJTU1VVEFCTEUKKwkJCQkJCQkJ CSAgTEFOR1VBR0UgcGxwZ3NxbCBBUyAkJAorQkVHSU4KKyAgICBFWEVDVVRFICdTRUxFQ1QgdHhp ZF9jdXJyZW50KCknOworICAgIFJFVFVSTiBmYWxzZTsKK0VORDsgJCQ7CisKKy0tLS0tLS0tLS0t LS0tLS0KK0FMVEVSIFRBQkxFIGNpY19yZXNldF9zbmFwLnRibCBTRVQgKHBhcmFsbGVsX3dvcmtl cnM9MCk7CisKK0NSRUFURSBVTklRVUUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVz ZXRfc25hcC50YmwoaSk7CitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25h cC5pZHg7CitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CisKK0NS RUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChpKTsKK1JF SU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0RST1AgSU5ERVgg Q09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKKworQ1JFQVRFIElOREVYIENPTkNVUlJF TlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKE1PRChpLCAyKSwgaikgV0hFUkUgTU9EKGks IDIpID0gMDsKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsK K0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKKworQ1JFQVRFIElO REVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGksIGopIFdIRVJFIGNp Y19yZXNldF9zbmFwLnByZWRpY2F0ZV9zdGFibGUoaSk7CitSRUlOREVYIElOREVYIENPTkNVUlJF TlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVz ZXRfc25hcC5pZHg7CisKK0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNl dF9zbmFwLnRibChpLCBqKSBXSEVSRSBjaWNfcmVzZXRfc25hcC5wcmVkaWNhdGVfc3RhYmxlX25v X3BhcmFtKCk7CitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7 CitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CisKK0NSRUFURSBJ TkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibCBVU0lORyBCUklOKGkp OworUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworRFJPUCBJ TkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworCistLSBUaGUgc2FtZSBpbiBw YXJhbGxlbCBtb2RlCitBTFRFUiBUQUJMRSBjaWNfcmVzZXRfc25hcC50YmwgU0VUIChwYXJhbGxl bF93b3JrZXJzPTIpOworCitDUkVBVEUgVU5JUVVFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04g Y2ljX3Jlc2V0X3NuYXAudGJsKGkpOworUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jl c2V0X3NuYXAuaWR4OworRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4 OworCitDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50Ymwo aSk7CitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitEUk9Q IElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CisKK0NSRUFURSBJTkRFWCBD T05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChNT0QoaSwgMiksIGopIFdIRVJF IE1PRChpLCAyKSA9IDA7CitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25h cC5pZHg7CitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CisKK0NS RUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChpLCBqKSBX SEVSRSBjaWNfcmVzZXRfc25hcC5wcmVkaWNhdGVfc3RhYmxlKGkpOworUkVJTkRFWCBJTkRFWCBD T05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkg Y2ljX3Jlc2V0X3NuYXAuaWR4OworCitDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBj aWNfcmVzZXRfc25hcC50YmwoaSwgaikgV0hFUkUgY2ljX3Jlc2V0X3NuYXAucHJlZGljYXRlX3N0 YWJsZV9ub19wYXJhbSgpOworUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3Nu YXAuaWR4OworRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworCitD UkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSBERVND IE5VTExTIExBU1QpOworUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAu aWR4OworRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworCitDUkVB VEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwgVVNJTkcgQlJJ TihpKTsKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0RS T1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKKworQkVHSU4gVFJBTlNB Q1RJT047CitDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50 YmwoaSk7CitST0xMQkFDSyA7CisKK1NFVCBkZWZhdWx0X3RyYW5zYWN0aW9uX2lzb2xhdGlvbiA9 IHNlcmlhbGl6YWJsZTsKK0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNl dF9zbmFwLnRibChpKTsKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFw LmlkeDsKK1JFU0VUIGRlZmF1bHRfdHJhbnNhY3Rpb25faXNvbGF0aW9uOworCitEUk9QIFNDSEVN QSBjaWNfcmVzZXRfc25hcCBDQVNDQURFOworCitEUk9QIEVYVEVOU0lPTiBpbmplY3Rpb25fcG9p bnRzOwotLSAKMi40My4wCgo= --00000000000002ed91064c8c21cc Content-Type: application/x-patch; name="v2-0001-Add-stress-tests-for-concurrent-index-builds.patch" Content-Disposition: attachment; filename="v2-0001-Add-stress-tests-for-concurrent-index-builds.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmi3f2m83 RnJvbSBkZjNkYTc5Mjk5ZGI2OWQ3ZTA2OGQ3YTQ5N2VlYTFmMzUwNTU2MTA4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogU2F0LCAzMCBOb3YgMjAyNCAxNjoyNDoyMCArMDEwMApTdWJqZWN0OiBb UEFUQ0ggdjIgMS80XSBBZGQgc3RyZXNzIHRlc3RzIGZvciBjb25jdXJyZW50IGluZGV4IGJ1aWxk cwoKSW50cm9kdWNlIHN0cmVzcyB0ZXN0cyBmb3IgY29uY3VycmVudCBpbmRleCBvcGVyYXRpb25z OgotIHRlc3QgY29uY3VycmVudCBpbnNlcnRzL3VwZGF0ZXMgZHVyaW5nIENSRUFURS9SRUlOREVY IElOREVYIENPTkNVUlJFTlRMWQotIGNvdmVyIHZhcmlvdXMgaW5kZXggdHlwZXMgKGJ0cmVlLCBn aW4sIGdpc3QsIGJyaW4sIGhhc2gsIHNwZ2lzdCkKLSB0ZXN0IHVuaXF1ZSBhbmQgbm9uLXVuaXF1 ZSBpbmRleGVzCi0gdGVzdCB3aXRoIGV4cHJlc3Npb25zIGFuZCBwcmVkaWNhdGVzCi0gdGVzdCBi b3RoIHBhcmFsbGVsIGFuZCBub24tcGFyYWxsZWwgb3BlcmF0aW9ucwoKVGhlc2UgdGVzdHMgdmVy aWZ5IHRoZSBiZWhhdmlvciBvZiB0aGUgZm9sbG93aW5nIGNvbW1pdHMuCi0tLQogc3JjL2Jpbi9w Z19hbWNoZWNrL21lc29uLmJ1aWxkICB8ICAgMSArCiBzcmMvYmluL3BnX2FtY2hlY2svdC8wMDZf Y2ljLnBsIHwgMjI1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiAyIGZpbGVzIGNo YW5nZWQsIDIyNiBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2Jpbi9wZ19h bWNoZWNrL3QvMDA2X2NpYy5wbAoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfYW1jaGVjay9tZXNv bi5idWlsZCBiL3NyYy9iaW4vcGdfYW1jaGVjay9tZXNvbi5idWlsZAppbmRleCA1OTJjZWY3NGVj Yi4uNTFhNjJkY2NiN2IgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfYW1jaGVjay9tZXNvbi5idWls ZAorKysgYi9zcmMvYmluL3BnX2FtY2hlY2svbWVzb24uYnVpbGQKQEAgLTI4LDYgKzI4LDcgQEAg dGVzdHMgKz0gewogICAgICAgJ3QvMDAzX2NoZWNrLnBsJywKICAgICAgICd0LzAwNF92ZXJpZnlf aGVhcGFtLnBsJywKICAgICAgICd0LzAwNV9vcGNsYXNzX2RhbWFnZS5wbCcsCisgICAgICAndC8w MDZfY2ljLnBsJywKICAgICBdLAogICB9LAogfQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19hbWNo ZWNrL3QvMDA2X2NpYy5wbCBiL3NyYy9iaW4vcGdfYW1jaGVjay90LzAwNl9jaWMucGwKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjcwYjE4NTIxMmU3Ci0tLSAvZGV2L251 bGwKKysrIGIvc3JjL2Jpbi9wZ19hbWNoZWNrL3QvMDA2X2NpYy5wbApAQCAtMCwwICsxLDIyNSBA QAorIyBDb3B5cmlnaHQgKGMpIDIwMjYsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdy b3VwCisKKyMgVGVzdCBSRUlOREVYIENPTkNVUlJFTlRMWSB3aXRoIGNvbmN1cnJlbnQgbW9kaWZp Y2F0aW9ucyBhbmQgSE9UIHVwZGF0ZXMKK3VzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3MgRkFUQUwg PT4gJ2FsbCc7CisKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwordXNlIFBvc3RncmVT UUw6OlRlc3Q6OlV0aWxzOwordXNlIFRlc3Q6Ok1vcmU7CisKK1Rlc3Q6Ok1vcmUtPmJ1aWxkZXIt PnRvZG9fc3RhcnQoJ2ZpbGVzeXN0ZW0gYnVnJykKKyAgaWYgUG9zdGdyZVNRTDo6VGVzdDo6VXRp bHM6Omhhc193YWxfcmVhZF9idWc7CisKK215ICgkbm9kZSwgJHJlc3VsdCk7CisKKyMKKyMgVGVz dCBzZXQtdXAKKyMKKyRub2RlID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdSQ190 ZXN0Jyk7Ciskbm9kZS0+aW5pdDsKKyRub2RlLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25m JywKKwknbG9ja190aW1lb3V0ID0gJyAuICgxMDAwICogJFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxz Ojp0aW1lb3V0X2RlZmF1bHQpKTsKKyRub2RlLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25m JywgJ2ZzeW5jID0gb2ZmJyk7Ciskbm9kZS0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZics ICdtYWludGVuYW5jZV93b3JrX21lbSA9IDMyTUInKTsgIyB0byBhdm9pZCBPT00KKyRub2RlLT5h cHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywgJ3NoYXJlZF9idWZmZXJzID0gMzJNQicpOyAj IHRvIGF2b2lkIE9PTQorJG5vZGUtPnN0YXJ0OworJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMn LCBxKENSRUFURSBFWFRFTlNJT04gYW1jaGVjaykpOworJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCBxKENSRUFURSBUQUJMRSB0YmwoaSBpbnQgcHJpbWFyeSBrZXksCisJCQkJCQkJCWMxIG1v bmV5IGRlZmF1bHQgMCwgYzIgbW9uZXkgZGVmYXVsdCAwLAorCQkJCQkJCQljMyBtb25leSBkZWZh dWx0IDAsIHVwZGF0ZWRfYXQgdGltZXN0YW1wLAorCQkJCQkJCQlpYSBpbnQ0W10sIHAgcG9pbnQp KSk7CisjIHVuY29tbWVudCB0byBmb3JjZSBub24tSE9UIC0+ICRub2RlLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywgcShDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiB0YmwoaSwgdXBkYXRl ZF9hdCk7KSk7CisjIGNyZWF0ZSBzZXF1ZW5jZQorJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMn LCBxKENSRUFURSBVTkxPR0dFRCBTRVFVRU5DRSBpbl9yb3dfcmVidWlsZCBTVEFSVCAxIElOQ1JF TUVOVCAxOykpOworJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxKFNFTEVDVCBuZXh0dmFs KCdpbl9yb3dfcmVidWlsZCcpOykpOworCisjIENyZWF0ZSBoZWxwZXIgZnVuY3Rpb25zIGZvciBw cmVkaWNhdGUgdGVzdHMKKyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcSgKKwlDUkVBVEUg RlVOQ1RJT04gcHJlZGljYXRlX3N0YWJsZSgpIFJFVFVSTlMgYm9vbCBJTU1VVEFCTEUKKwlMQU5H VUFHRSBwbHBnc3FsIEFTICQkCisJQkVHSU4KKwkJRVhFQ1VURSAnU0VMRUNUIHR4aWRfY3VycmVu dCgpJzsKKwkJUkVUVVJOIHRydWU7CisJRU5EOyAkJDsKKykpOworCiskbm9kZS0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsIHEoCisJQ1JFQVRFIEZVTkNUSU9OIHByZWRpY2F0ZV9jb25zdChpbnRlZ2Vy KSBSRVRVUk5TIGJvb2wgSU1NVVRBQkxFCisJTEFOR1VBR0UgcGxwZ3NxbCBBUyAkJAorCUJFR0lO CisJCVJFVFVSTiBNT0QoJDEsIDIpID0gMDsKKwlFTkQ7ICQkOworKSk7CisKKyMgUnVuIENJQy9S SUMgaW4gZGlmZmVyZW50IG9wdGlvbnMgY29uY3VycmVudGx5IHdpdGggdXBzZXJ0cworJG5vZGUt PnBnYmVuY2goCisJJy0tbm8tdmFjdXVtIC0tY2xpZW50PTE1IC0tam9icz00IC0tZXhpdC1vbi1h Ym9ydCAtLXRyYW5zYWN0aW9ucz0xMDAwJywKKwkwLAorCVtxcnthY3R1YWxseSBwcm9jZXNzZWR9 XSwKKwlbcXJ7XiR9XSwKKwknY29uY3VycmVudCBvcGVyYXRpb25zIHdpdGggUkVJTkRFWC9DUkVB VEUgSU5ERVggQ09OQ1VSUkVOVExZJywKKwl7CisJCSdjb25jdXJyZW50X29wcycgPT4gcSgKKwkJ CVNFVCBkZWJ1Z19wYXJhbGxlbF9xdWVyeSA9IG9mZjsgLS0gdGhpcyBpcyBiZWNhdXNlIHByZWRp Y2F0ZV9zdGFibGUgaW1wbGVtZW50YXRpb24KKwkJCVNFTEVDVCBwZ190cnlfYWR2aXNvcnlfbG9j ayg0Mik6OmludGVnZXIgQVMgZ290bG9jayBcZ3NldAorCQkJXGlmIDpnb3Rsb2NrCisJCQkJU0VM RUNUIG5leHR2YWwoJ2luX3Jvd19yZWJ1aWxkJykgQVMgbGFzdF92YWx1ZSBcZ3NldAorCQkJCVxz ZXQgdmFyaWFudCByYW5kb20oMCwgNSkKKwkJCQlcc2V0IHBhcmFsbGVscyByYW5kb20oMCwgNCkK KwkJCQlcaWYgOmxhc3RfdmFsdWUgPCAzCisJCQkJCUFMVEVSIFRBQkxFIHRibCBTRVQgKHBhcmFs bGVsX3dvcmtlcnM9OnBhcmFsbGVscyk7CisJCQkJCVxpZiA6dmFyaWFudCA9IDAKKwkJCQkJCUNS RUFURSBJTkRFWCBDT05DVVJSRU5UTFkgbmV3X2lkeCBPTiB0YmwoaSwgdXBkYXRlZF9hdCk7CisJ CQkJCVxlbGlmIDp2YXJpYW50ID0gMQorCQkJCQkJQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBu ZXdfaWR4IE9OIHRibChpLCB1cGRhdGVkX2F0KSBXSEVSRSBwcmVkaWNhdGVfc3RhYmxlKCk7CisJ CQkJCVxlbGlmIDp2YXJpYW50ID0gMgorCQkJCQkJQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBu ZXdfaWR4IE9OIHRibChpLCB1cGRhdGVkX2F0KSBXSEVSRSBNT0QoaSwgMikgPSAwOworCQkJCQlc ZWxpZiA6dmFyaWFudCA9IDMKKwkJCQkJCUNSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgbmV3X2lk eCBPTiB0YmwoaSwgdXBkYXRlZF9hdCkgV0hFUkUgcHJlZGljYXRlX2NvbnN0KGkpOworCQkJCQlc ZWxpZiA6dmFyaWFudCA9IDQKKwkJCQkJCUNSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgbmV3X2lk eCBPTiB0YmwocHJlZGljYXRlX2NvbnN0KGkpKTsKKwkJCQkJXGVsaWYgOnZhcmlhbnQgPSA1CisJ CQkJCQlDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIG5ld19pZHggT04gdGJsKGksIHByZWRpY2F0 ZV9jb25zdChpKSwgdXBkYXRlZF9hdCkgV0hFUkUgcHJlZGljYXRlX2NvbnN0KGkpOworCQkJCQlc ZW5kaWYKKwkJCQkJXHNsZWVwIDEwIG1zCisJCQkJCVNFTEVDVCBidF9pbmRleF9jaGVjaygnbmV3 X2lkeCcsIGhlYXBhbGxpbmRleGVkID0+IHRydWUsIGNoZWNrdW5pcXVlID0+IHRydWUpOworCQkJ CQlSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBuZXdfaWR4OworCQkJCQlcc2xlZXAgMTAgbXMK KwkJCQkJU0VMRUNUIGJ0X2luZGV4X2NoZWNrKCduZXdfaWR4JywgaGVhcGFsbGluZGV4ZWQgPT4g dHJ1ZSwgY2hlY2t1bmlxdWUgPT4gdHJ1ZSk7CisJCQkJCURST1AgSU5ERVggQ09OQ1VSUkVOVExZ IG5ld19pZHg7CisJCQkJXGVuZGlmCisJCQkJU0VMRUNUIHBnX2Fkdmlzb3J5X3VubG9jayg0Mik7 CisJCQlcZWxzZQorCQkJCVxzZXQgbnVtIHJhbmRvbSgxMDAwLCAxMDAwMDApCisJCQkJQkVHSU47 CisJCQkJSU5TRVJUIElOVE8gdGJsIFZBTFVFUyhmbG9vcihyYW5kb20oKSo6bnVtKSwwLDAsMCxu b3coKSkKKwkJCQkJT04gQ09ORkxJQ1QoaSkgRE8gVVBEQVRFIFNFVCB1cGRhdGVkX2F0ID0gbm93 KCk7CisJCQkJSU5TRVJUIElOVE8gdGJsIFZBTFVFUyhmbG9vcihyYW5kb20oKSo6bnVtKSwwLDAs MCxub3coKSkKKwkJCQkJT04gQ09ORkxJQ1QoaSkgRE8gVVBEQVRFIFNFVCB1cGRhdGVkX2F0ID0g bm93KCk7CisJCQkJSU5TRVJUIElOVE8gdGJsIFZBTFVFUyhmbG9vcihyYW5kb20oKSo6bnVtKSww LDAsMCxub3coKSkKKwkJCQkJT04gQ09ORkxJQ1QoaSkgRE8gVVBEQVRFIFNFVCB1cGRhdGVkX2F0 ID0gbm93KCk7CisJCQkJSU5TRVJUIElOVE8gdGJsIFZBTFVFUyhmbG9vcihyYW5kb20oKSo6bnVt KSwwLDAsMCxub3coKSkKKwkJCQkJT04gQ09ORkxJQ1QoaSkgRE8gVVBEQVRFIFNFVCB1cGRhdGVk X2F0ID0gbm93KCk7CisJCQkJSU5TRVJUIElOVE8gdGJsIFZBTFVFUyhmbG9vcihyYW5kb20oKSo6 bnVtKSwwLDAsMCxub3coKSkKKwkJCQkJT04gQ09ORkxJQ1QoaSkgRE8gVVBEQVRFIFNFVCB1cGRh dGVkX2F0ID0gbm93KCk7CisJCQkJU0VMRUNUIHNldHZhbCgnaW5fcm93X3JlYnVpbGQnLCAxKTsK KwkJCQlDT01NSVQ7CisJCQlcZW5kaWYKKwkJKQorCX0pOworCiskbm9kZS0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsIHEoVFJVTkNBVEUgVEFCTEUgdGJsOykpOworCisjIFJ1biBDSUMvUklDIGZvciB1 bmlxdWUgaW5kZXggY29uY3VycmVudGx5IHdpdGggdXBzZXJ0cworJG5vZGUtPnBnYmVuY2goCisJ Jy0tbm8tdmFjdXVtIC0tY2xpZW50PTE1IC0tam9icz00IC0tZXhpdC1vbi1hYm9ydCAtLXRyYW5z YWN0aW9ucz0xMDAwJywKKwkwLAorCVtxcnthY3R1YWxseSBwcm9jZXNzZWR9XSwKKwlbcXJ7XiR9 XSwKKwknY29uY3VycmVudCBvcGVyYXRpb25zIHdpdGggUkVJTkRFWC9DUkVBVEUgSU5ERVggQ09O Q1VSUkVOVExZIGZvciB1bmlxdWUgQlRSRUUnLAorCXsKKwkJJ2NvbmN1cnJlbnRfb3BzX3VuaXF1 ZV9pZHgnID0+IHEoCisJCQlTRUxFQ1QgcGdfdHJ5X2Fkdmlzb3J5X2xvY2soNDIpOjppbnRlZ2Vy IEFTIGdvdGxvY2sgXGdzZXQKKwkJCVxpZiA6Z290bG9jaworCQkJCVNFTEVDVCBuZXh0dmFsKCdp bl9yb3dfcmVidWlsZCcpIEFTIGxhc3RfdmFsdWUgXGdzZXQKKwkJCQlcc2V0IHBhcmFsbGVscyBy YW5kb20oMCwgNCkKKwkJCQlcaWYgOmxhc3RfdmFsdWUgPCAzCisJCQkJCUFMVEVSIFRBQkxFIHRi bCBTRVQgKHBhcmFsbGVsX3dvcmtlcnM9OnBhcmFsbGVscyk7CisJCQkJCUNSRUFURSBVTklRVUUg SU5ERVggQ09OQ1VSUkVOVExZIG5ld19pZHggT04gdGJsKGkpOworCQkJCQlcc2xlZXAgMTAgbXMK KwkJCQkJU0VMRUNUIGJ0X2luZGV4X2NoZWNrKCduZXdfaWR4JywgaGVhcGFsbGluZGV4ZWQgPT4g dHJ1ZSwgY2hlY2t1bmlxdWUgPT4gdHJ1ZSk7CisJCQkJCVJFSU5ERVggSU5ERVggQ09OQ1VSUkVO VExZIG5ld19pZHg7CisJCQkJCVxzbGVlcCAxMCBtcworCQkJCQlTRUxFQ1QgYnRfaW5kZXhfY2hl Y2soJ25ld19pZHgnLCBoZWFwYWxsaW5kZXhlZCA9PiB0cnVlLCBjaGVja3VuaXF1ZSA9PiB0cnVl KTsKKwkJCQkJRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgbmV3X2lkeDsKKwkJCQlcZW5kaWYKKwkJ CQlTRUxFQ1QgcGdfYWR2aXNvcnlfdW5sb2NrKDQyKTsKKwkJCVxlbHNlCisJCQkJXHNldCBudW0g cmFuZG9tKDEsIHBvd2VyKDEwLCByYW5kb20oMSwgNSkpKQorCQkJCUlOU0VSVCBJTlRPIHRibCBW QUxVRVMoZmxvb3IocmFuZG9tKCkqOm51bSksMCwwLDAsbm93KCkpCisJCQkJCU9OIENPTkZMSUNU KGkpIERPIFVQREFURSBTRVQgdXBkYXRlZF9hdCA9IG5vdygpOworCQkJCVNFTEVDVCBzZXR2YWwo J2luX3Jvd19yZWJ1aWxkJywgMSk7CisJCQlcZW5kaWYKKwkJKQorCX0pOworCiskbm9kZS0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsIHEoVFJVTkNBVEUgVEFCTEUgdGJsOykpOworCisjIFJ1biBDSUMv UklDIGZvciBHSU4gd2l0aCB1cHNlcnRzCiskbm9kZS0+cGdiZW5jaCgKKwknLS1uby12YWN1dW0g LS1jbGllbnQ9MTUgLS1qb2JzPTQgLS1leGl0LW9uLWFib3J0IC0tdHJhbnNhY3Rpb25zPTEwMDAn LAorCTAsCisJW3Fye2FjdHVhbGx5IHByb2Nlc3NlZH1dLAorCVtxcnteJH1dLAorCSdjb25jdXJy ZW50IG9wZXJhdGlvbnMgd2l0aCBSRUlOREVYL0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgZm9y IEdJTi9HSVNUL0JSSU4vSEFTSC9TUEdJU1QnLAorCXsKKwkJJ2NvbmN1cnJlbnRfb3BzX2dpbl9p ZHgnID0+IHEoCisJCQlTRUxFQ1QgcGdfdHJ5X2Fkdmlzb3J5X2xvY2soNDIpOjppbnRlZ2VyIEFT IGdvdGxvY2sgXGdzZXQKKwkJCVxpZiA6Z290bG9jaworCQkJCVNFTEVDVCBuZXh0dmFsKCdpbl9y b3dfcmVidWlsZCcpIEFTIGxhc3RfdmFsdWUgXGdzZXQKKwkJCQlcc2V0IHBhcmFsbGVscyByYW5k b20oMCwgNCkKKwkJCQlcaWYgOmxhc3RfdmFsdWUgPCAzCisJCQkJCUFMVEVSIFRBQkxFIHRibCBT RVQgKHBhcmFsbGVsX3dvcmtlcnM9OnBhcmFsbGVscyk7CisJCQkJCUNSRUFURSBJTkRFWCBDT05D VVJSRU5UTFkgbmV3X2lkeCBPTiB0YmwgVVNJTkcgR0lOIChpYSk7CisJCQkJCVxzbGVlcCAxMCBt cworCQkJCQlTRUxFQ1QgZ2luX2luZGV4X2NoZWNrKCduZXdfaWR4Jyk7CisJCQkJCVJFSU5ERVgg SU5ERVggQ09OQ1VSUkVOVExZIG5ld19pZHg7CisJCQkJCVxzbGVlcCAxMCBtcworCQkJCQlTRUxF Q1QgZ2luX2luZGV4X2NoZWNrKCduZXdfaWR4Jyk7CisJCQkJCURST1AgSU5ERVggQ09OQ1VSUkVO VExZIG5ld19pZHg7CisJCQkJXGVuZGlmCisJCQkJU0VMRUNUIHBnX2Fkdmlzb3J5X3VubG9jayg0 Mik7CisJCQlcZWxzZQorCQkJCVxzZXQgbnVtIHJhbmRvbSgxLCBwb3dlcigxMCwgcmFuZG9tKDEs IDUpKSkKKwkJCQlJTlNFUlQgSU5UTyB0YmwgVkFMVUVTKGZsb29yKHJhbmRvbSgpKjpudW0pLDAs MCwwLG5vdygpKQorCQkJCQlPTiBDT05GTElDVChpKSBETyBVUERBVEUgU0VUIHVwZGF0ZWRfYXQg PSBub3coKTsKKwkJCQlTRUxFQ1Qgc2V0dmFsKCdpbl9yb3dfcmVidWlsZCcsIDEpOworCQkJXGVu ZGlmCisJCSkKKwl9KTsKKworJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxKFRSVU5DQVRF IFRBQkxFIHRibDspKTsKKworIyBSdW4gQ0lDL1JJQyBmb3IgR0lTVC9CUklOL0hBU0gvU1BHSVNU IGluZGV4IGNvbmN1cnJlbnRseSB3aXRoIHVwc2VydHMKKyRub2RlLT5wZ2JlbmNoKAorCSctLW5v LXZhY3V1bSAtLWNsaWVudD0xNSAtLWpvYnM9NCAtLWV4aXQtb24tYWJvcnQgLS10cmFuc2FjdGlv bnM9MTAwMCcsCisJMCwKKwlbcXJ7YWN0dWFsbHkgcHJvY2Vzc2VkfV0sCisJW3Fye14kfV0sCisJ J2NvbmN1cnJlbnQgb3BlcmF0aW9ucyB3aXRoIFJFSU5ERVgvQ1JFQVRFIElOREVYIENPTkNVUlJF TlRMWSBmb3IgR0lOL0dJU1QvQlJJTi9IQVNIL1NQR0lTVCcsCisJeworCQknY29uY3VycmVudF9v cHNfb3RoZXJfaWR4JyA9PiBxKAorCQkJU0VMRUNUIHBnX3RyeV9hZHZpc29yeV9sb2NrKDQyKTo6 aW50ZWdlciBBUyBnb3Rsb2NrIFxnc2V0CisJCQlcaWYgOmdvdGxvY2sKKwkJCQlTRUxFQ1QgbmV4 dHZhbCgnaW5fcm93X3JlYnVpbGQnKSBBUyBsYXN0X3ZhbHVlIFxnc2V0CisJCQkJXHNldCBwYXJh bGxlbHMgcmFuZG9tKDAsIDQpCisJCQkJXGlmIDpsYXN0X3ZhbHVlIDwgMworCQkJCQlBTFRFUiBU QUJMRSB0YmwgU0VUIChwYXJhbGxlbF93b3JrZXJzPTpwYXJhbGxlbHMpOworCQkJCQlcc2V0IHZh cmlhbnQgcmFuZG9tKDAsIDMpCisJCQkJCVxpZiA6dmFyaWFudCA9IDAKKwkJCQkJCUNSRUFURSBJ TkRFWCBDT05DVVJSRU5UTFkgbmV3X2lkeCBPTiB0YmwgVVNJTkcgR0lTVCAocCk7CisJCQkJCVxl bGlmIDp2YXJpYW50ID0gMQorCQkJCQkJQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBuZXdfaWR4 IE9OIHRibCBVU0lORyBCUklOICh1cGRhdGVkX2F0KTsKKwkJCQkJXGVsaWYgOnZhcmlhbnQgPSAy CisJCQkJCQlDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIG5ld19pZHggT04gdGJsIFVTSU5HIEhB U0ggKHVwZGF0ZWRfYXQpOworCQkJCQlcZWxpZiA6dmFyaWFudCA9IDMKKwkJCQkJCUNSRUFURSBJ TkRFWCBDT05DVVJSRU5UTFkgbmV3X2lkeCBPTiB0YmwgVVNJTkcgU1BHSVNUIChwKTsKKwkJCQkJ XGVuZGlmCisJCQkJCVxzbGVlcCAxMCBtcworCQkJCQlSRUlOREVYIElOREVYIENPTkNVUlJFTlRM WSBuZXdfaWR4OworCQkJCQlcc2xlZXAgMTAgbXMKKwkJCQkJRFJPUCBJTkRFWCBDT05DVVJSRU5U TFkgbmV3X2lkeDsKKwkJCQlcZW5kaWYKKwkJCQlTRUxFQ1QgcGdfYWR2aXNvcnlfdW5sb2NrKDQy KTsKKwkJCVxlbHNlCisJCQkJXHNldCBudW0gcmFuZG9tKDEsIHBvd2VyKDEwLCByYW5kb20oMSwg NSkpKQorCQkJCUlOU0VSVCBJTlRPIHRibCBWQUxVRVMoZmxvb3IocmFuZG9tKCkqOm51bSksMCww LDAsbm93KCkpCisJCQkJCU9OIENPTkZMSUNUKGkpIERPIFVQREFURSBTRVQgdXBkYXRlZF9hdCA9 IG5vdygpOworCQkJCVNFTEVDVCBzZXR2YWwoJ2luX3Jvd19yZWJ1aWxkJywgMSk7CisJCQlcZW5k aWYKKwkJKQorCX0pOworCiskbm9kZS0+c3RvcDsKK2RvbmVfdGVzdGluZygpOwpcIE5vIG5ld2xp bmUgYXQgZW5kIG9mIGZpbGUKLS0gCjIuNDMuMAoK --00000000000002ed91064c8c21cc Content-Type: application/x-patch; name="v2-0003-Support-snapshot-resets-in-parallel-concurrent-in.patch" Content-Disposition: attachment; filename="v2-0003-Support-snapshot-resets-in-parallel-concurrent-in.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmi3f2m51 RnJvbSAzOWIyNmY3ZGViMDc5MDEwNDhmZGYyZWU2MTkzYjM4ZjQ3ZmRjZWYzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogV2VkLCAxNCBKYW4gMjAyNiAxODo0NTo1NiArMDMwMApTdWJqZWN0OiBb UEFUQ0ggdjIgMy80XSBTdXBwb3J0IHNuYXBzaG90IHJlc2V0cyBpbiBwYXJhbGxlbCBjb25jdXJy ZW50IGluZGV4CiBidWlsZHMKCkV4dGVuZCBwZXJpb2RpYyBzbmFwc2hvdCByZXNldCBzdXBwb3J0 IHRvIHBhcmFsbGVsIGJ1aWxkcywgcHJldmlvdXNseSBsaW1pdGVkIHRvIG5vbi1wYXJhbGxlbCBv cGVyYXRpb25zLiBUaGlzIGFsbG93cyB0aGUgeG1pbiBob3Jpem9uIHRvIGFkdmFuY2UgZHVyaW5n IHBhcmFsbGVsIGNvbmN1cnJlbnQgaW5kZXggYnVpbGRzIGFzIHdlbGwuCgpUaGUgbWFpbiBsaW1p dGF0aW9uIG9mIGFwcGx5aW5nIHRoYXQgdGVjaG5pcXVlIHRvIHBhcmFsbGVsIGJ1aWxkcyB3YXMg YSByZXF1aXJlbWVudCB0byB3YWl0IHVudGlsIHdvcmtlciBwcm9jZXNzZXMgcmVzdG9yZSB0aGVp ciBpbml0aWFsIHNuYXBzaG90IGZyb20gbGVhZGVyLgoKVG8gYWRkcmVzcyB0aGlzLCBmb2xsb3dp bmcgY2hhbmdlcyBhcHBsaWVkOgotIGFkZCBpbmZyYXN0cnVjdHVyZSB0byB0cmFjayBzbmFwc2hv dCByZXN0b3JhdGlvbiBpbiBwYXJhbGxlbCB3b3JrZXJzCi0gZXh0ZW5kIHBhcmFsbGVsIHNjYW4g aW5pdGlhbGl6YXRpb24gdG8gc3VwcG9ydCBwZXJpb2RpYyBzbmFwc2hvdCByZXNldHMKLSB3YWl0 IGZvciBwYXJhbGxlbCB3b3JrZXJzIHRvIHJlc3RvcmUgdGhlaXIgaW5pdGlhbCBzbmFwc2hvdHMg YmVmb3JlIHByb2NlZWRpbmcgd2l0aCBzY2FuCi0gcmVsYXggbGltaXRhdGlvbiBmb3IgcGFyYWxs ZWwgd29ya2VyIHRvIGNhbGwgR2V0TGF0ZXN0U25hcHNob3QKLS0tCiBzcmMvYmFja2VuZC9hY2Nl c3MvYnJpbi9icmluLmMgICAgICAgICAgICAgICAgfCA1NCArKysrKysrKysrLS0tLS0tLQogc3Jj L2JhY2tlbmQvYWNjZXNzL2dpbi9naW5pbnNlcnQuYyAgICAgICAgICAgIHwgNTEgKysrKysrKysr LS0tLS0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYyAgICAgIHwg MTIgKystLQogc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMgICAgICAgICAgIHwg NjAgKysrKysrKysrKysrKystLS0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL3RhYmxlL3RhYmxlYW0u YyAgICAgICAgICAgIHwgMzcgKysrKysrKysrKy0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNh bS9wYXJhbGxlbC5jICAgICAgICAgfCA0OSArKysrKysrKysrKysrLS0KIHNyYy9iYWNrZW5kL2Nh dGFsb2cvaW5kZXguYyAgICAgICAgICAgICAgICAgICB8ICAyICstCiBzcmMvYmFja2VuZC9leGVj dXRvci9ub2RlU2Vxc2Nhbi5jICAgICAgICAgICAgfCAgMyArLQogc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZVRpZHJhbmdlc2Nhbi5jICAgICAgIHwgIDMgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL3Rp bWUvc25hcG1nci5jICAgICAgICAgICAgICB8ICA4IC0tLQogc3JjL2luY2x1ZGUvYWNjZXNzL3Bh cmFsbGVsLmggICAgICAgICAgICAgICAgIHwgIDMgKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9yZWxz Y2FuLmggICAgICAgICAgICAgICAgICB8ICAxICsKIHNyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFt LmggICAgICAgICAgICAgICAgICB8ICA1ICstCiAuLi4vc3FsL2NpY19yZXNldF9zbmFwc2hvdHMu c3FsICAgICAgICAgICAgICAgfCAgNSArLQogMTQgZmlsZXMgY2hhbmdlZCwgMjA4IGluc2VydGlv bnMoKyksIDg1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9i cmluL2JyaW4uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW4uYwppbmRleCA0OThlYjJi OTkxYi4uYzE4MzllMTVjOWQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2Jy aW4uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMKQEAgLTE0NSw3ICsxNDUs NiBAQCB0eXBlZGVmIHN0cnVjdCBCcmluTGVhZGVyCiAJICovCiAJQnJpblNoYXJlZCAqYnJpbnNo YXJlZDsKIAlTaGFyZWRzb3J0ICpzaGFyZWRzb3J0OwotCVNuYXBzaG90CXNuYXBzaG90OwogCVdh bFVzYWdlICAgKndhbHVzYWdlOwogCUJ1ZmZlclVzYWdlICpidWZmZXJ1c2FnZTsKIH0gQnJpbkxl YWRlcjsKQEAgLTIzMyw3ICsyMzIsNyBAQCBzdGF0aWMgdm9pZCBicmluX2ZpbGxfZW1wdHlfcmFu Z2VzKEJyaW5CdWlsZFN0YXRlICpzdGF0ZSwKIHN0YXRpYyB2b2lkIF9icmluX2JlZ2luX3BhcmFs bGVsKEJyaW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBp bmRleCwKIAkJCQkJCQkJIGJvb2wgaXNjb25jdXJyZW50LCBpbnQgcmVxdWVzdCk7CiBzdGF0aWMg dm9pZCBfYnJpbl9lbmRfcGFyYWxsZWwoQnJpbkxlYWRlciAqYnJpbmxlYWRlciwgQnJpbkJ1aWxk U3RhdGUgKnN0YXRlKTsKLXN0YXRpYyBTaXplIF9icmluX3BhcmFsbGVsX2VzdGltYXRlX3NoYXJl ZChSZWxhdGlvbiBoZWFwLCBTbmFwc2hvdCBzbmFwc2hvdCk7CitzdGF0aWMgU2l6ZSBfYnJpbl9w YXJhbGxlbF9lc3RpbWF0ZV9zaGFyZWQoUmVsYXRpb24gaGVhcCk7CiBzdGF0aWMgZG91YmxlIF9i cmluX3BhcmFsbGVsX2hlYXBzY2FuKEJyaW5CdWlsZFN0YXRlICpzdGF0ZSk7CiBzdGF0aWMgZG91 YmxlIF9icmluX3BhcmFsbGVsX21lcmdlKEJyaW5CdWlsZFN0YXRlICpzdGF0ZSk7CiBzdGF0aWMg dm9pZCBfYnJpbl9sZWFkZXJfcGFydGljaXBhdGVfYXNfd29ya2VyKEJyaW5CdWlsZFN0YXRlICpi dWlsZHN0YXRlLApAQCAtMTIyNCw3ICsxMjIzLDYgQEAgYnJpbmJ1aWxkKFJlbGF0aW9uIGhlYXAs IFJlbGF0aW9uIGluZGV4LCBJbmRleEluZm8gKmluZGV4SW5mbykKIAkJcmVsdHVwbGVzID0gX2Jy aW5fcGFyYWxsZWxfbWVyZ2Uoc3RhdGUpOwogCiAJCV9icmluX2VuZF9wYXJhbGxlbChzdGF0ZS0+ YnNfbGVhZGVyLCBzdGF0ZSk7Ci0JCUFzc2VydCghaW5kZXhJbmZvLT5paV9Db25jdXJyZW50IHx8 ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIAl9CiAJZWxzZQkJCQkJCS8q IG5vIHBhcmFsbGVsIGluZGV4IGJ1aWxkICovCiAJewpAQCAtMTI1Nyw3ICsxMjU1LDYgQEAgYnJp bmJ1aWxkKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBJbmRleEluZm8gKmluZGV4SW5m bykKIAkJYnJpbl9maWxsX2VtcHR5X3JhbmdlcyhzdGF0ZSwKIAkJCQkJCQkgICBzdGF0ZS0+YnNf Y3VyclJhbmdlU3RhcnQsCiAJCQkJCQkJICAgc3RhdGUtPmJzX21heFJhbmdlU3RhcnQpOwotCQlB c3NlcnQoIWluZGV4SW5mby0+aWlfQ29uY3VycmVudCB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQo TXlQcm9jLT54bWluKSk7CiAJfQogCiAJLyogcmVsZWFzZSByZXNvdXJjZXMgKi8KQEAgLTEyNzMs NiArMTI3MCw5IEBAIGJyaW5idWlsZChSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwgSW5k ZXhJbmZvICppbmRleEluZm8pCiAJcmVzdWx0LT5oZWFwX3R1cGxlcyA9IHJlbHR1cGxlczsKIAly ZXN1bHQtPmluZGV4X3R1cGxlcyA9IGlkeHR1cGxlczsKIAorCUludmFsaWRhdGVDYXRhbG9nU25h cHNob3QoKTsKKwlBc3NlcnQoIWluZGV4SW5mby0+aWlfQ29uY3VycmVudCB8fCAhVHJhbnNhY3Rp b25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CisKIAlyZXR1cm4gcmVzdWx0OwogfQogCkBAIC0y Mzg1LDcgKzIzODUsNiBAQCBfYnJpbl9iZWdpbl9wYXJhbGxlbChCcmluQnVpbGRTdGF0ZSAqYnVp bGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiB7CiAJUGFyYWxsZWxDb250 ZXh0ICpwY3h0OwogCWludAkJCXNjYW50dXBsZXNvcnRzdGF0ZXM7Ci0JU25hcHNob3QJc25hcHNo b3Q7CiAJU2l6ZQkJZXN0YnJpbnNoYXJlZDsKIAlTaXplCQllc3Rzb3J0OwogCUJyaW5TaGFyZWQg KmJyaW5zaGFyZWQ7CkBAIC0yNDE2LDI1ICsyNDE1LDI1IEBAIF9icmluX2JlZ2luX3BhcmFsbGVs KEJyaW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRl eCwKIAkgKiBQcmVwYXJlIGZvciBzY2FuIG9mIHRoZSBiYXNlIHJlbGF0aW9uLiAgSW4gYSBub3Jt YWwgaW5kZXggYnVpbGQsIHdlIHVzZQogCSAqIFNuYXBzaG90QW55IGJlY2F1c2Ugd2UgbXVzdCBy ZXRyaWV2ZSBhbGwgdHVwbGVzIGFuZCBkbyBvdXIgb3duIHRpbWUKIAkgKiBxdWFsIGNoZWNrcyAo YmVjYXVzZSB3ZSBoYXZlIHRvIGluZGV4IFJFQ0VOVExZX0RFQUQgdHVwbGVzKS4gIEluIGEKLQkg KiBjb25jdXJyZW50IGJ1aWxkLCB3ZSB0YWtlIGEgcmVndWxhciBNVkNDIHNuYXBzaG90IGFuZCBp bmRleCB3aGF0ZXZlcidzCi0JICogbGl2ZSBhY2NvcmRpbmcgdG8gdGhhdC4KKwkgKiBjb25jdXJy ZW50IGJ1aWxkLCB3ZSB0YWtlIGEgcmVndWxhciBNVkNDIHNuYXBzaG90IGFuZCBwdXNoIGl0IGFz IGFjdGl2ZS4KKwkgKiBMYXRlciB3ZSBpbmRleCB3aGF0ZXZlcidzIGxpdmUgYWNjb3JkaW5nIHRv IHRoYXQgc25hcHNob3Qgd2hpbGUgdGhhdAorCSAqIHNuYXBzaG90IGlzIHJlc2V0IHBlcmlvZGlj YWxseS4KIAkgKi8KIAlpZiAoIWlzY29uY3VycmVudCkKIAl7CiAJCUFzc2VydChBY3RpdmVTbmFw c2hvdFNldCgpKTsKLQkJc25hcHNob3QgPSBTbmFwc2hvdEFueTsKIAkJbmVlZF9wb3BfYWN0aXZl X3NuYXBzaG90ID0gZmFsc2U7CiAJfQogCWVsc2UKIAl7Ci0JCXNuYXBzaG90ID0gUmVnaXN0ZXJT bmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOworCQlBc3NlcnQoIUFjdGl2ZVNuYXBz aG90U2V0KCkpOwogCQlQdXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgp KTsKIAl9CiAKIAkvKgogCSAqIEVzdGltYXRlIHNpemUgZm9yIG91ciBvd24gUEFSQUxMRUxfS0VZ X0JSSU5fU0hBUkVEIHdvcmtzcGFjZS4KIAkgKi8KLQllc3Ricmluc2hhcmVkID0gX2JyaW5fcGFy YWxsZWxfZXN0aW1hdGVfc2hhcmVkKGhlYXAsIHNuYXBzaG90KTsKKwllc3Ricmluc2hhcmVkID0g X2JyaW5fcGFyYWxsZWxfZXN0aW1hdGVfc2hhcmVkKGhlYXApOwogCXNobV90b2NfZXN0aW1hdGVf Y2h1bmsoJnBjeHQtPmVzdGltYXRvciwgZXN0YnJpbnNoYXJlZCk7CiAJZXN0c29ydCA9IHR1cGxl c29ydF9lc3RpbWF0ZV9zaGFyZWQoc2NhbnR1cGxlc29ydHN0YXRlcyk7CiAJc2htX3RvY19lc3Rp bWF0ZV9jaHVuaygmcGN4dC0+ZXN0aW1hdG9yLCBlc3Rzb3J0KTsKQEAgLTI0NzQsOCArMjQ3Myw2 IEBAIF9icmluX2JlZ2luX3BhcmFsbGVsKEJyaW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxh dGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIAl7CiAJCWlmIChuZWVkX3BvcF9hY3RpdmVfc25h cHNob3QpCiAJCQlQb3BBY3RpdmVTbmFwc2hvdCgpOwotCQlpZiAoSXNNVkNDU25hcHNob3Qoc25h cHNob3QpKQotCQkJVW5yZWdpc3RlclNuYXBzaG90KHNuYXBzaG90KTsKIAkJRGVzdHJveVBhcmFs bGVsQ29udGV4dChwY3h0KTsKIAkJRXhpdFBhcmFsbGVsTW9kZSgpOwogCQlyZXR1cm47CkBAIC0y NTAwLDcgKzI0OTcsOCBAQCBfYnJpbl9iZWdpbl9wYXJhbGxlbChCcmluQnVpbGRTdGF0ZSAqYnVp bGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAKIAl0YWJsZV9wYXJhbGxl bHNjYW5faW5pdGlhbGl6ZShoZWFwLAogCQkJCQkJCQkgIFBhcmFsbGVsVGFibGVTY2FuRnJvbUJy aW5TaGFyZWQoYnJpbnNoYXJlZCksCi0JCQkJCQkJCSAgc25hcHNob3QpOworCQkJCQkJCQkgIGlz Y29uY3VycmVudCA/IEludmFsaWRTbmFwc2hvdCA6IFNuYXBzaG90QW55LAorCQkJCQkJCQkgIGlz Y29uY3VycmVudCk7CiAKIAkvKgogCSAqIFN0b3JlIHNoYXJlZCB0dXBsZXNvcnQtcHJpdmF0ZSBz dGF0ZSwgZm9yIHdoaWNoIHdlIHJlc2VydmVkIHNwYWNlLgpAQCAtMjU0Niw3ICsyNTQ0LDYgQEAg X2JyaW5fYmVnaW5fcGFyYWxsZWwoQnJpbkJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9u IGhlYXAsIFJlbGF0aW9uIGluZGV4LAogCQlicmlubGVhZGVyLT5ucGFydGljaXBhbnR0dXBsZXNv cnRzKys7CiAJYnJpbmxlYWRlci0+YnJpbnNoYXJlZCA9IGJyaW5zaGFyZWQ7CiAJYnJpbmxlYWRl ci0+c2hhcmVkc29ydCA9IHNoYXJlZHNvcnQ7Ci0JYnJpbmxlYWRlci0+c25hcHNob3QgPSBzbmFw c2hvdDsKIAlicmlubGVhZGVyLT53YWx1c2FnZSA9IHdhbHVzYWdlOwogCWJyaW5sZWFkZXItPmJ1 ZmZlcnVzYWdlID0gYnVmZmVydXNhZ2U7CiAKQEAgLTI1NjIsNiArMjU1OSwxMyBAQCBfYnJpbl9i ZWdpbl9wYXJhbGxlbChCcmluQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwg UmVsYXRpb24gaW5kZXgsCiAJLyogU2F2ZSBsZWFkZXIgc3RhdGUgbm93IHRoYXQgaXQncyBjbGVh ciBidWlsZCB3aWxsIGJlIHBhcmFsbGVsICovCiAJYnVpbGRzdGF0ZS0+YnNfbGVhZGVyID0gYnJp bmxlYWRlcjsKIAorCS8qCisJICogSW4gY2FzZSBvZiBjb25jdXJyZW50IGJ1aWxkIHNuYXBzaG90 cyBhcmUgZ29pbmcgdG8gYmUgcmVzZXQgcGVyaW9kaWNhbGx5LgorCSAqIFdlIG5lZWQgdG8gd2Fp dCB1bnRpbCBhbGwgd29ya2VycyBpbXBvcnRlZCBpbml0aWFsIHNuYXBzaG90LgorCSAqLworCWlm IChpc2NvbmN1cnJlbnQpCisJCVdhaXRGb3JQYXJhbGxlbFdvcmtlcnNUb0F0dGFjaChwY3h0LCB0 cnVlKTsKKwogCS8qIEpvaW4gaGVhcCBzY2FuIG91cnNlbHZlcyAqLwogCWlmIChsZWFkZXJwYXJ0 aWNpcGF0ZXMpCiAJCV9icmluX2xlYWRlcl9wYXJ0aWNpcGF0ZV9hc193b3JrZXIoYnVpbGRzdGF0 ZSwgaGVhcCwgaW5kZXgpOwpAQCAtMjU3MCw5ICsyNTc0LDEzIEBAIF9icmluX2JlZ2luX3BhcmFs bGVsKEJyaW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBp bmRleCwKIAkgKiBDYWxsZXIgbmVlZHMgdG8gd2FpdCBmb3IgYWxsIGxhdW5jaGVkIHdvcmtlcnMg d2hlbiB3ZSByZXR1cm4uICBNYWtlCiAJICogc3VyZSB0aGF0IHRoZSBmYWlsdXJlLXRvLXN0YXJ0 IGNhc2Ugd2lsbCBub3QgaGFuZyBmb3JldmVyLgogCSAqLwotCVdhaXRGb3JQYXJhbGxlbFdvcmtl cnNUb0F0dGFjaChwY3h0KTsKKwlpZiAoIWlzY29uY3VycmVudCkKKwkJV2FpdEZvclBhcmFsbGVs V29ya2Vyc1RvQXR0YWNoKHBjeHQsIGZhbHNlKTsKIAlpZiAobmVlZF9wb3BfYWN0aXZlX3NuYXBz aG90KQogCQlQb3BBY3RpdmVTbmFwc2hvdCgpOworCisJSW52YWxpZGF0ZUNhdGFsb2dTbmFwc2hv dCgpOworCUFzc2VydCghYnJpbmxlYWRlci0+YnJpbnNoYXJlZC0+aXNjb25jdXJyZW50IHx8ICFU cmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIH0KIAogLyoKQEAgLTI1OTMsOSAr MjYwMSw2IEBAIF9icmluX2VuZF9wYXJhbGxlbChCcmluTGVhZGVyICpicmlubGVhZGVyLCBCcmlu QnVpbGRTdGF0ZSAqc3RhdGUpCiAJZm9yIChpID0gMDsgaSA8IGJyaW5sZWFkZXItPnBjeHQtPm53 b3JrZXJzX2xhdW5jaGVkOyBpKyspCiAJCUluc3RyQWNjdW1QYXJhbGxlbFF1ZXJ5KCZicmlubGVh ZGVyLT5idWZmZXJ1c2FnZVtpXSwgJmJyaW5sZWFkZXItPndhbHVzYWdlW2ldKTsKIAotCS8qIEZy ZWUgbGFzdCByZWZlcmVuY2UgdG8gTVZDQyBzbmFwc2hvdCwgaWYgb25lIHdhcyB1c2VkICovCi0J aWYgKElzTVZDQ1NuYXBzaG90KGJyaW5sZWFkZXItPnNuYXBzaG90KSkKLQkJVW5yZWdpc3RlclNu YXBzaG90KGJyaW5sZWFkZXItPnNuYXBzaG90KTsKIAlEZXN0cm95UGFyYWxsZWxDb250ZXh0KGJy aW5sZWFkZXItPnBjeHQpOwogCUV4aXRQYXJhbGxlbE1vZGUoKTsKIH0KQEAgLTI3OTUsMTQgKzI4 MDAsMTQgQEAgX2JyaW5fcGFyYWxsZWxfbWVyZ2UoQnJpbkJ1aWxkU3RhdGUgKnN0YXRlKQogCiAv KgogICogUmV0dXJucyBzaXplIG9mIHNoYXJlZCBtZW1vcnkgcmVxdWlyZWQgdG8gc3RvcmUgc3Rh dGUgZm9yIGEgcGFyYWxsZWwKLSAqIGJyaW4gaW5kZXggYnVpbGQgYmFzZWQgb24gdGhlIHNuYXBz aG90IGl0cyBwYXJhbGxlbCBzY2FuIHdpbGwgdXNlLgorICogYnJpbiBpbmRleCBidWlsZC4KICAq Lwogc3RhdGljIFNpemUKLV9icmluX3BhcmFsbGVsX2VzdGltYXRlX3NoYXJlZChSZWxhdGlvbiBo ZWFwLCBTbmFwc2hvdCBzbmFwc2hvdCkKK19icmluX3BhcmFsbGVsX2VzdGltYXRlX3NoYXJlZChS ZWxhdGlvbiBoZWFwKQogewogCS8qIGMuZi4gc2htX3RvY19hbGxvY2F0ZSBhcyB0byB3aHkgQlVG RkVSQUxJR04gaXMgdXNlZCAqLwogCXJldHVybiBhZGRfc2l6ZShCVUZGRVJBTElHTihzaXplb2Yo QnJpblNoYXJlZCkpLAotCQkJCQl0YWJsZV9wYXJhbGxlbHNjYW5fZXN0aW1hdGUoaGVhcCwgc25h cHNob3QpKTsKKwkJCQkJdGFibGVfcGFyYWxsZWxzY2FuX2VzdGltYXRlKGhlYXAsIEludmFsaWRT bmFwc2hvdCkpOwogfQogCiAvKgpAQCAtMjk2NCw2ICsyOTY5LDEzIEBAIF9icmluX3BhcmFsbGVs X2J1aWxkX21haW4oZHNtX3NlZ21lbnQgKnNlZywgc2htX3RvYyAqdG9jKQogCiAJX2JyaW5fcGFy YWxsZWxfc2Nhbl9hbmRfYnVpbGQoYnVpbGRzdGF0ZSwgYnJpbnNoYXJlZCwgc2hhcmVkc29ydCwK IAkJCQkJCQkJICBoZWFwUmVsLCBpbmRleFJlbCwgc29ydG1lbSwgZmFsc2UpOworCWlmIChicmlu c2hhcmVkLT5pc2NvbmN1cnJlbnQpCisJeworCQlQb3BBY3RpdmVTbmFwc2hvdCgpOworCQlJbnZh bGlkYXRlQ2F0YWxvZ1NuYXBzaG90KCk7CisJCUFzc2VydCghVHJhbnNhY3Rpb25JZElzVmFsaWQo TXlQcm9jLT54bWluKSk7CisJCVB1c2hBY3RpdmVTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBz aG90KCkpOworCX0KIAogCS8qIFJlcG9ydCBXQUwvYnVmZmVyIHVzYWdlIGR1cmluZyBwYXJhbGxl bCBleGVjdXRpb24gKi8KIAlidWZmZXJ1c2FnZSA9IHNobV90b2NfbG9va3VwKHRvYywgUEFSQUxM RUxfS0VZX0JVRkZFUl9VU0FHRSwgZmFsc2UpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNj ZXNzL2dpbi9naW5pbnNlcnQuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luaW5zZXJ0LmMK aW5kZXggYjAwODdjYjFhNjIuLmQ0NmFkMjEwNjUxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9h Y2Nlc3MvZ2luL2dpbmluc2VydC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luaW5z ZXJ0LmMKQEAgLTEzNSw3ICsxMzUsNiBAQCB0eXBlZGVmIHN0cnVjdCBHaW5MZWFkZXIKIAkgKi8K IAlHaW5CdWlsZFNoYXJlZCAqZ2luc2hhcmVkOwogCVNoYXJlZHNvcnQgKnNoYXJlZHNvcnQ7Ci0J U25hcHNob3QJc25hcHNob3Q7CiAJV2FsVXNhZ2UgICAqd2FsdXNhZ2U7CiAJQnVmZmVyVXNhZ2Ug KmJ1ZmZlcnVzYWdlOwogfSBHaW5MZWFkZXI7CkBAIC0xODUsNyArMTg0LDcgQEAgdHlwZWRlZiBz dHJ1Y3QKIHN0YXRpYyB2b2lkIF9naW5fYmVnaW5fcGFyYWxsZWwoR2luQnVpbGRTdGF0ZSAqYnVp bGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAJCQkJCQkJCWJvb2wgaXNj b25jdXJyZW50LCBpbnQgcmVxdWVzdCk7CiBzdGF0aWMgdm9pZCBfZ2luX2VuZF9wYXJhbGxlbChH aW5MZWFkZXIgKmdpbmxlYWRlciwgR2luQnVpbGRTdGF0ZSAqc3RhdGUpOwotc3RhdGljIFNpemUg X2dpbl9wYXJhbGxlbF9lc3RpbWF0ZV9zaGFyZWQoUmVsYXRpb24gaGVhcCwgU25hcHNob3Qgc25h cHNob3QpOworc3RhdGljIFNpemUgX2dpbl9wYXJhbGxlbF9lc3RpbWF0ZV9zaGFyZWQoUmVsYXRp b24gaGVhcCk7CiBzdGF0aWMgZG91YmxlIF9naW5fcGFyYWxsZWxfaGVhcHNjYW4oR2luQnVpbGRT dGF0ZSAqc3RhdGUpOwogc3RhdGljIGRvdWJsZSBfZ2luX3BhcmFsbGVsX21lcmdlKEdpbkJ1aWxk U3RhdGUgKnN0YXRlKTsKIHN0YXRpYyB2b2lkIF9naW5fbGVhZGVyX3BhcnRpY2lwYXRlX2FzX3dv cmtlcihHaW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLApAQCAtNzUyLDcgKzc1MSw2IEBAIGdpbmJ1 aWxkKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBJbmRleEluZm8gKmluZGV4SW5mbykK IAkJcmVsdHVwbGVzID0gX2dpbl9wYXJhbGxlbF9tZXJnZShzdGF0ZSk7CiAKIAkJX2dpbl9lbmRf cGFyYWxsZWwoc3RhdGUtPmJzX2xlYWRlciwgc3RhdGUpOwotCQlBc3NlcnQoIWluZGV4SW5mby0+ aWlfQ29uY3VycmVudCB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CiAJ fQogCWVsc2UJCQkJCQkvKiBubyBwYXJhbGxlbCBpbmRleCBidWlsZCAqLwogCXsKQEAgLTc3Niw3 ICs3NzQsNiBAQCBnaW5idWlsZChSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwgSW5kZXhJ bmZvICppbmRleEluZm8pCiAJCQkJCQkgICBsaXN0LCBubGlzdCwgJmJ1aWxkc3RhdGUuYnVpbGRT dGF0cyk7CiAJCX0KIAkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZEN0eCk7Ci0JCUFzc2VydCgh aW5kZXhJbmZvLT5paV9Db25jdXJyZW50IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2Mt PnhtaW4pKTsKIAl9CiAKIAlNZW1vcnlDb250ZXh0RGVsZXRlKGJ1aWxkc3RhdGUuZnVuY0N0eCk7 CkBAIC04MDYsNiArODAzLDcgQEAgZ2luYnVpbGQoUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5k ZXgsIEluZGV4SW5mbyAqaW5kZXhJbmZvKQogCiAJcmVzdWx0LT5oZWFwX3R1cGxlcyA9IHJlbHR1 cGxlczsKIAlyZXN1bHQtPmluZGV4X3R1cGxlcyA9IGJ1aWxkc3RhdGUuaW5kdHVwbGVzOworCUFz c2VydCghaW5kZXhJbmZvLT5paV9Db25jdXJyZW50IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChN eVByb2MtPnhtaW4pKTsKIAogCXJldHVybiByZXN1bHQ7CiB9CkBAIC05NDAsNyArOTM4LDYgQEAg X2dpbl9iZWdpbl9wYXJhbGxlbChHaW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlvbiBo ZWFwLCBSZWxhdGlvbiBpbmRleCwKIHsKIAlQYXJhbGxlbENvbnRleHQgKnBjeHQ7CiAJaW50CQkJ c2NhbnR1cGxlc29ydHN0YXRlczsKLQlTbmFwc2hvdAlzbmFwc2hvdDsKIAlTaXplCQllc3RnaW5z aGFyZWQ7CiAJU2l6ZQkJZXN0c29ydDsKIAlHaW5CdWlsZFNoYXJlZCAqZ2luc2hhcmVkOwpAQCAt OTcwLDI1ICs5NjcsMjUgQEAgX2dpbl9iZWdpbl9wYXJhbGxlbChHaW5CdWlsZFN0YXRlICpidWls ZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIAkgKiBQcmVwYXJlIGZvciBz Y2FuIG9mIHRoZSBiYXNlIHJlbGF0aW9uLiAgSW4gYSBub3JtYWwgaW5kZXggYnVpbGQsIHdlIHVz ZQogCSAqIFNuYXBzaG90QW55IGJlY2F1c2Ugd2UgbXVzdCByZXRyaWV2ZSBhbGwgdHVwbGVzIGFu ZCBkbyBvdXIgb3duIHRpbWUKIAkgKiBxdWFsIGNoZWNrcyAoYmVjYXVzZSB3ZSBoYXZlIHRvIGlu ZGV4IFJFQ0VOVExZX0RFQUQgdHVwbGVzKS4gIEluIGEKLQkgKiBjb25jdXJyZW50IGJ1aWxkLCB3 ZSB0YWtlIGEgcmVndWxhciBNVkNDIHNuYXBzaG90IGFuZCBpbmRleCB3aGF0ZXZlcidzCi0JICog bGl2ZSBhY2NvcmRpbmcgdG8gdGhhdC4KKwkgKiBjb25jdXJyZW50IGJ1aWxkLCB3ZSB0YWtlIGEg cmVndWxhciBNVkNDIHNuYXBzaG90IGFuZCBwdXNoIGl0IGFzIGFjdGl2ZS4KKwkgKiBMYXRlciB3 ZSBpbmRleCB3aGF0ZXZlcidzIGxpdmUgYWNjb3JkaW5nIHRvIHRoYXQgc25hcHNob3Qgd2hpbGUg dGhhdAorCSAqIHNuYXBzaG90IGlzIHJlc2V0IHBlcmlvZGljYWxseS4KIAkgKi8KIAlpZiAoIWlz Y29uY3VycmVudCkKIAl7CiAJCUFzc2VydChBY3RpdmVTbmFwc2hvdFNldCgpKTsKLQkJc25hcHNo b3QgPSBTbmFwc2hvdEFueTsKIAkJbmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90ID0gZmFsc2U7CiAJ fQogCWVsc2UKIAl7Ci0JCXNuYXBzaG90ID0gUmVnaXN0ZXJTbmFwc2hvdChHZXRUcmFuc2FjdGlv blNuYXBzaG90KCkpOworCQlBc3NlcnQoIUFjdGl2ZVNuYXBzaG90U2V0KCkpOwogCQlQdXNoQWN0 aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKIAl9CiAKIAkvKgogCSAqIEVz dGltYXRlIHNpemUgZm9yIG91ciBvd24gUEFSQUxMRUxfS0VZX0dJTl9TSEFSRUQgd29ya3NwYWNl LgogCSAqLwotCWVzdGdpbnNoYXJlZCA9IF9naW5fcGFyYWxsZWxfZXN0aW1hdGVfc2hhcmVkKGhl YXAsIHNuYXBzaG90KTsKKwllc3RnaW5zaGFyZWQgPSBfZ2luX3BhcmFsbGVsX2VzdGltYXRlX3No YXJlZChoZWFwKTsKIAlzaG1fdG9jX2VzdGltYXRlX2NodW5rKCZwY3h0LT5lc3RpbWF0b3IsIGVz dGdpbnNoYXJlZCk7CiAJZXN0c29ydCA9IHR1cGxlc29ydF9lc3RpbWF0ZV9zaGFyZWQoc2NhbnR1 cGxlc29ydHN0YXRlcyk7CiAJc2htX3RvY19lc3RpbWF0ZV9jaHVuaygmcGN4dC0+ZXN0aW1hdG9y LCBlc3Rzb3J0KTsKQEAgLTEwMjgsOCArMTAyNSw2IEBAIF9naW5fYmVnaW5fcGFyYWxsZWwoR2lu QnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAJ ewogCQlpZiAobmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90KQogCQkJUG9wQWN0aXZlU25hcHNob3Qo KTsKLQkJaWYgKElzTVZDQ1NuYXBzaG90KHNuYXBzaG90KSkKLQkJCVVucmVnaXN0ZXJTbmFwc2hv dChzbmFwc2hvdCk7CiAJCURlc3Ryb3lQYXJhbGxlbENvbnRleHQocGN4dCk7CiAJCUV4aXRQYXJh bGxlbE1vZGUoKTsKIAkJcmV0dXJuOwpAQCAtMTA1Myw3ICsxMDQ4LDggQEAgX2dpbl9iZWdpbl9w YXJhbGxlbChHaW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlv biBpbmRleCwKIAogCXRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplKGhlYXAsCiAJCQkJCQkJ CSAgUGFyYWxsZWxUYWJsZVNjYW5Gcm9tR2luQnVpbGRTaGFyZWQoZ2luc2hhcmVkKSwKLQkJCQkJ CQkJICBzbmFwc2hvdCk7CisJCQkJCQkJCSAgaXNjb25jdXJyZW50ID8gSW52YWxpZFNuYXBzaG90 IDogU25hcHNob3RBbnksCisJCQkJCQkJCSAgaXNjb25jdXJyZW50KTsKIAogCS8qCiAJICogU3Rv cmUgc2hhcmVkIHR1cGxlc29ydC1wcml2YXRlIHN0YXRlLCBmb3Igd2hpY2ggd2UgcmVzZXJ2ZWQg c3BhY2UuCkBAIC0xMDk1LDcgKzEwOTEsNiBAQCBfZ2luX2JlZ2luX3BhcmFsbGVsKEdpbkJ1aWxk U3RhdGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAogCQlnaW5s ZWFkZXItPm5wYXJ0aWNpcGFudHR1cGxlc29ydHMrKzsKIAlnaW5sZWFkZXItPmdpbnNoYXJlZCA9 IGdpbnNoYXJlZDsKIAlnaW5sZWFkZXItPnNoYXJlZHNvcnQgPSBzaGFyZWRzb3J0OwotCWdpbmxl YWRlci0+c25hcHNob3QgPSBzbmFwc2hvdDsKIAlnaW5sZWFkZXItPndhbHVzYWdlID0gd2FsdXNh Z2U7CiAJZ2lubGVhZGVyLT5idWZmZXJ1c2FnZSA9IGJ1ZmZlcnVzYWdlOwogCkBAIC0xMTExLDYg KzExMDYsMTMgQEAgX2dpbl9iZWdpbl9wYXJhbGxlbChHaW5CdWlsZFN0YXRlICpidWlsZHN0YXRl LCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIAkvKiBTYXZlIGxlYWRlciBzdGF0ZSBu b3cgdGhhdCBpdCdzIGNsZWFyIGJ1aWxkIHdpbGwgYmUgcGFyYWxsZWwgKi8KIAlidWlsZHN0YXRl LT5ic19sZWFkZXIgPSBnaW5sZWFkZXI7CiAKKwkvKgorCSAqIEluIGNhc2Ugb2YgY29uY3VycmVu dCBidWlsZCBzbmFwc2hvdHMgYXJlIGdvaW5nIHRvIGJlIHJlc2V0IHBlcmlvZGljYWxseS4KKwkg KiBXZSBuZWVkIHRvIHdhaXQgdW50aWwgYWxsIHdvcmtlcnMgaW1wb3J0ZWQgaW5pdGlhbCBzbmFw c2hvdC4KKwkgKi8KKwlpZiAoaXNjb25jdXJyZW50KQorCQlXYWl0Rm9yUGFyYWxsZWxXb3JrZXJz VG9BdHRhY2gocGN4dCwgdHJ1ZSk7CisKIAkvKiBKb2luIGhlYXAgc2NhbiBvdXJzZWx2ZXMgKi8K IAlpZiAobGVhZGVycGFydGljaXBhdGVzKQogCQlfZ2luX2xlYWRlcl9wYXJ0aWNpcGF0ZV9hc193 b3JrZXIoYnVpbGRzdGF0ZSwgaGVhcCwgaW5kZXgpOwpAQCAtMTExOSw5ICsxMTIxLDEyIEBAIF9n aW5fYmVnaW5fcGFyYWxsZWwoR2luQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVh cCwgUmVsYXRpb24gaW5kZXgsCiAJICogQ2FsbGVyIG5lZWRzIHRvIHdhaXQgZm9yIGFsbCBsYXVu Y2hlZCB3b3JrZXJzIHdoZW4gd2UgcmV0dXJuLiAgTWFrZQogCSAqIHN1cmUgdGhhdCB0aGUgZmFp bHVyZS10by1zdGFydCBjYXNlIHdpbGwgbm90IGhhbmcgZm9yZXZlci4KIAkgKi8KLQlXYWl0Rm9y UGFyYWxsZWxXb3JrZXJzVG9BdHRhY2gocGN4dCk7CisJaWYgKCFpc2NvbmN1cnJlbnQpCisJCVdh aXRGb3JQYXJhbGxlbFdvcmtlcnNUb0F0dGFjaChwY3h0LCBmYWxzZSk7CiAJaWYgKG5lZWRfcG9w X2FjdGl2ZV9zbmFwc2hvdCkKIAkJUG9wQWN0aXZlU25hcHNob3QoKTsKKwlJbnZhbGlkYXRlQ2F0 YWxvZ1NuYXBzaG90KCk7CisJQXNzZXJ0KCFnaW5sZWFkZXItPmdpbnNoYXJlZC0+aXNjb25jdXJy ZW50IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIH0KIAogLyoKQEAg LTExNDIsOSArMTE0Nyw2IEBAIF9naW5fZW5kX3BhcmFsbGVsKEdpbkxlYWRlciAqZ2lubGVhZGVy LCBHaW5CdWlsZFN0YXRlICpzdGF0ZSkKIAlmb3IgKGkgPSAwOyBpIDwgZ2lubGVhZGVyLT5wY3h0 LT5ud29ya2Vyc19sYXVuY2hlZDsgaSsrKQogCQlJbnN0ckFjY3VtUGFyYWxsZWxRdWVyeSgmZ2lu bGVhZGVyLT5idWZmZXJ1c2FnZVtpXSwgJmdpbmxlYWRlci0+d2FsdXNhZ2VbaV0pOwogCi0JLyog RnJlZSBsYXN0IHJlZmVyZW5jZSB0byBNVkNDIHNuYXBzaG90LCBpZiBvbmUgd2FzIHVzZWQgKi8K LQlpZiAoSXNNVkNDU25hcHNob3QoZ2lubGVhZGVyLT5zbmFwc2hvdCkpCi0JCVVucmVnaXN0ZXJT bmFwc2hvdChnaW5sZWFkZXItPnNuYXBzaG90KTsKIAlEZXN0cm95UGFyYWxsZWxDb250ZXh0KGdp bmxlYWRlci0+cGN4dCk7CiAJRXhpdFBhcmFsbGVsTW9kZSgpOwogfQpAQCAtMTgxOSwxNCArMTgy MSwxNCBAQCBfZ2luX3BhcmFsbGVsX21lcmdlKEdpbkJ1aWxkU3RhdGUgKnN0YXRlKQogCiAvKgog ICogUmV0dXJucyBzaXplIG9mIHNoYXJlZCBtZW1vcnkgcmVxdWlyZWQgdG8gc3RvcmUgc3RhdGUg Zm9yIGEgcGFyYWxsZWwKLSAqIGdpbiBpbmRleCBidWlsZCBiYXNlZCBvbiB0aGUgc25hcHNob3Qg aXRzIHBhcmFsbGVsIHNjYW4gd2lsbCB1c2UuCisgKiBnaW4gaW5kZXggYnVpbGQuCiAgKi8KIHN0 YXRpYyBTaXplCi1fZ2luX3BhcmFsbGVsX2VzdGltYXRlX3NoYXJlZChSZWxhdGlvbiBoZWFwLCBT bmFwc2hvdCBzbmFwc2hvdCkKK19naW5fcGFyYWxsZWxfZXN0aW1hdGVfc2hhcmVkKFJlbGF0aW9u IGhlYXApCiB7CiAJLyogYy5mLiBzaG1fdG9jX2FsbG9jYXRlIGFzIHRvIHdoeSBCVUZGRVJBTElH TiBpcyB1c2VkICovCiAJcmV0dXJuIGFkZF9zaXplKEJVRkZFUkFMSUdOKHNpemVvZihHaW5CdWls ZFNoYXJlZCkpLAotCQkJCQl0YWJsZV9wYXJhbGxlbHNjYW5fZXN0aW1hdGUoaGVhcCwgc25hcHNo b3QpKTsKKwkJCQkJdGFibGVfcGFyYWxsZWxzY2FuX2VzdGltYXRlKGhlYXAsIEludmFsaWRTbmFw c2hvdCkpOwogfQogCiAvKgpAQCAtMjIxMSw2ICsyMjEzLDEzIEBAIF9naW5fcGFyYWxsZWxfYnVp bGRfbWFpbihkc21fc2VnbWVudCAqc2VnLCBzaG1fdG9jICp0b2MpCiAKIAlfZ2luX3BhcmFsbGVs X3NjYW5fYW5kX2J1aWxkKCZidWlsZHN0YXRlLCBnaW5zaGFyZWQsIHNoYXJlZHNvcnQsCiAJCQkJ CQkJCSBoZWFwUmVsLCBpbmRleFJlbCwgc29ydG1lbSwgZmFsc2UpOworCWlmIChnaW5zaGFyZWQt PmlzY29uY3VycmVudCkKKwl7CisJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CisJCUludmFsaWRhdGVD YXRhbG9nU25hcHNob3QoKTsKKwkJQXNzZXJ0KCFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2Mt PnhtaW4pKTsKKwkJUHVzaEFjdGl2ZVNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7 CisJfQogCiAJLyogUmVwb3J0IFdBTC9idWZmZXIgdXNhZ2UgZHVyaW5nIHBhcmFsbGVsIGV4ZWN1 dGlvbiAqLwogCWJ1ZmZlcnVzYWdlID0gc2htX3RvY19sb29rdXAodG9jLCBQQVJBTExFTF9LRVlf QlVGRkVSX1VTQUdFLCBmYWxzZSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC9oZWFwYW1faGFuZGxlci5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRs ZXIuYwppbmRleCAxNmM0NjBhYTIzZi4uMjRhNTU0YTEwZDQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvaGVhcGFtX2hhbmRsZXIuYwpAQCAtMTI1MSwxNCArMTI1MSwxMyBAQCBoZWFwYW1faW5k ZXhfYnVpbGRfcmFuZ2Vfc2NhbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJICogU25hcHNob3RB bnkgYmVjYXVzZSB3ZSBtdXN0IHJldHJpZXZlIGFsbCB0dXBsZXMgYW5kIGRvIG91ciBvd24gdGlt ZQogCSAqIHF1YWwgY2hlY2tzIChiZWNhdXNlIHdlIGhhdmUgdG8gaW5kZXggUkVDRU5UTFlfREVB RCB0dXBsZXMpLiBJbiBhCiAJICogY29uY3VycmVudCBidWlsZCwgb3IgZHVyaW5nIGJvb3RzdHJh cCwgd2UgdGFrZSBhIHJlZ3VsYXIgTVZDQyBzbmFwc2hvdAotCSAqIGFuZCBpbmRleCB3aGF0ZXZl cidzIGxpdmUgYWNjb3JkaW5nIHRvIHRoYXQuCisJICogYW5kIGluZGV4IHdoYXRldmVyJ3MgbGl2 ZSBhY2NvcmRpbmcgdG8gdGhhdCB3aGlsZSB0aGF0IHNuYXBzaG90IGlzIHJlc2V0CisJICogZXZl cnkgc28gb2Z0ZW4gKGluIGNhc2Ugb2Ygbm9uLXVuaXF1ZSBpbmRleCkuCiAJICovCiAJT2xkZXN0 WG1pbiA9IEludmFsaWRUcmFuc2FjdGlvbklkOwogCiAJLyoKIAkgKiBGb3IgdW5pcXVlIGluZGV4 IHdlIG5lZWQgY29uc2lzdGVudCBzbmFwc2hvdCBmb3IgdGhlIHdob2xlIHNjYW4uCi0JICogSW4g Y2FzZSBvZiBwYXJhbGxlbCBzY2FuIHNvbWUgYWRkaXRpb25hbCBpbmZyYXN0cnVjdHVyZSByZXF1 aXJlZAotCSAqIHRvIHBlcmZvcm0gc2NhbiB3aXRoIFNPX1JFU0VUX1NOQVBTSE9UIHdoaWNoIGlz IG5vdCB5ZXQgcmVhZHkuCiAJICovCiAJcmVzZXRfc25hcHNob3RzID0gaW5kZXhJbmZvLT5paV9D b25jdXJyZW50ICYmCiAJCQkJCSAgIWluZGV4SW5mby0+aWlfVW5pcXVlICYmCkBAIC0xMzIwLDgg KzEzMTksMTEgQEAgaGVhcGFtX2luZGV4X2J1aWxkX3JhbmdlX3NjYW4oUmVsYXRpb24gaGVhcFJl bGF0aW9uLAogCQlBc3NlcnQoIUlzQm9vdHN0cmFwUHJvY2Vzc2luZ01vZGUoKSk7CiAJCUFzc2Vy dChhbGxvd19zeW5jKTsKIAkJc25hcHNob3QgPSBzY2FuLT5yc19zbmFwc2hvdDsKLQkJUHVzaEFj dGl2ZVNuYXBzaG90KHNuYXBzaG90KTsKLQkJbmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90ID0gdHJ1 ZTsKKwkJaWYgKCFyZXNldF9zbmFwc2hvdHMpCisJCXsKKwkJCVB1c2hBY3RpdmVTbmFwc2hvdChz bmFwc2hvdCk7CisJCQluZWVkX3BvcF9hY3RpdmVfc25hcHNob3QgPSB0cnVlOworCQl9CiAJfQog CiAJaHNjYW4gPSAoSGVhcFNjYW5EZXNjKSBzY2FuOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv YWNjZXNzL25idHJlZS9uYnRzb3J0LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNv cnQuYwppbmRleCA2ZmM3MmJkMmM5NC4uOWMzOTVkMWFjMzggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRy ZWUvbmJ0c29ydC5jCkBAIC0zMjQsMjIgKzMyNCwyMCBAQCBidGJ1aWxkKFJlbGF0aW9uIGhlYXAs IFJlbGF0aW9uIGluZGV4LCBJbmRleEluZm8gKmluZGV4SW5mbykKIAkJCSBSZWxhdGlvbkdldFJl bGF0aW9uTmFtZShpbmRleCkpOwogCiAJcmVsdHVwbGVzID0gX2J0X3Nwb29sc19oZWFwc2Nhbiho ZWFwLCBpbmRleCwgJmJ1aWxkc3RhdGUsIGluZGV4SW5mbyk7Ci0JQXNzZXJ0KGluZGV4SW5mby0+ aWlfUGFyYWxsZWxXb3JrZXJzIHx8IGluZGV4SW5mby0+aWlfVW5pcXVlIHx8Ci0JCSAgIWluZGV4 SW5mby0+aWlfQ29uY3VycmVudCB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWlu KSk7CisJQXNzZXJ0KCFpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgfHwgaW5kZXhJbmZvLT5paV9V bmlxdWUgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwogCiAJLyoKIAkg KiBGaW5pc2ggdGhlIGJ1aWxkIGJ5ICgxKSBjb21wbGV0aW5nIHRoZSBzb3J0IG9mIHRoZSBzcG9v bCBmaWxlLCAoMikKIAkgKiBpbnNlcnRpbmcgdGhlIHNvcnRlZCB0dXBsZXMgaW50byBidHJlZSBw YWdlcyBhbmQgKDMpIGJ1aWxkaW5nIHRoZSB1cHBlcgogCSAqIGxldmVscy4gIEZpbmFsbHksIGl0 IG1heSBhbHNvIGJlIG5lY2Vzc2FyeSB0byBlbmQgdXNlIG9mIHBhcmFsbGVsaXNtLgogCSAqLwot CV9idF9sZWFmYnVpbGQoYnVpbGRzdGF0ZS5zcG9vbCwgYnVpbGRzdGF0ZS5zcG9vbDIsICFpbmRl eEluZm8tPmlpX1BhcmFsbGVsV29ya2VycyAmJiBpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQpOwor CV9idF9sZWFmYnVpbGQoYnVpbGRzdGF0ZS5zcG9vbCwgYnVpbGRzdGF0ZS5zcG9vbDIsICFpbmRl eEluZm8tPmlpX1VuaXF1ZSAmJiBpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQpOwogCV9idF9zcG9v bGRlc3Ryb3koYnVpbGRzdGF0ZS5zcG9vbCk7CiAJaWYgKGJ1aWxkc3RhdGUuc3Bvb2wyKQogCQlf YnRfc3Bvb2xkZXN0cm95KGJ1aWxkc3RhdGUuc3Bvb2wyKTsKIAlpZiAoYnVpbGRzdGF0ZS5idGxl YWRlcikKIAkJX2J0X2VuZF9wYXJhbGxlbChidWlsZHN0YXRlLmJ0bGVhZGVyKTsKLQlBc3NlcnQo aW5kZXhJbmZvLT5paV9QYXJhbGxlbFdvcmtlcnMgfHwgaW5kZXhJbmZvLT5paV9VbmlxdWUgfHwK LQkJICAhaW5kZXhJbmZvLT5paV9Db25jdXJyZW50IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChN eVByb2MtPnhtaW4pKTsKKwlBc3NlcnQoIWluZGV4SW5mby0+aWlfQ29uY3VycmVudCB8fCBpbmRl eEluZm8tPmlpX1VuaXF1ZSB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7 CiAKIAlyZXN1bHQgPSBwYWxsb2Nfb2JqZWN0KEluZGV4QnVpbGRSZXN1bHQpOwogCkBAIC00ODgs OCArNDg2LDcgQEAgX2J0X3Nwb29sc19oZWFwc2NhbihSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBp bmRleCwgQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLAogCQlyZWx0dXBsZXMgPSBfYnRfcGFyYWxs ZWxfaGVhcHNjYW4oYnVpbGRzdGF0ZSwKIAkJCQkJCQkJCQkgICZpbmRleEluZm8tPmlpX0Jyb2tl bkhvdENoYWluKTsKIAlJbnZhbGlkYXRlQ2F0YWxvZ1NuYXBzaG90KCk7Ci0JQXNzZXJ0KGluZGV4 SW5mby0+aWlfUGFyYWxsZWxXb3JrZXJzIHx8IGluZGV4SW5mby0+aWlfVW5pcXVlIHx8Ci0JCSAg IWluZGV4SW5mby0+aWlfQ29uY3VycmVudCB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9j LT54bWluKSk7CisJQXNzZXJ0KCFpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgfHwgaW5kZXhJbmZv LT5paV9VbmlxdWUgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwogCiAJ LyoKIAkgKiBTZXQgdGhlIHByb2dyZXNzIHRhcmdldCBmb3IgdGhlIG5leHQgcGhhc2UuICBSZXNl dCB0aGUgYmxvY2sgbnVtYmVyCkBAIC0xNDIxLDYgKzE0MTgsNyBAQCBfYnRfYmVnaW5fcGFyYWxs ZWwoQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLCBib29sIGlzY29uY3VycmVudCwgaW50IHJlcXVl c3QpCiAJQnVmZmVyVXNhZ2UgKmJ1ZmZlcnVzYWdlOwogCWJvb2wJCWxlYWRlcnBhcnRpY2lwYXRl cyA9IHRydWU7CiAJYm9vbAkJbmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90ID0gdHJ1ZTsKKwlib29s CQlyZXNldF9zbmFwc2hvdDsKIAlpbnQJCQlxdWVyeWxlbjsKIAogI2lmZGVmIERJU0FCTEVfTEVB REVSX1BBUlRJQ0lQQVRJT04KQEAgLTE0MzgsMTIgKzE0MzYsMjEgQEAgX2J0X2JlZ2luX3BhcmFs bGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9vbCBpc2NvbmN1cnJlbnQsIGludCByZXF1 ZXN0KQogCiAJc2NhbnR1cGxlc29ydHN0YXRlcyA9IGxlYWRlcnBhcnRpY2lwYXRlcyA/IHJlcXVl c3QgKyAxIDogcmVxdWVzdDsKIAorICAgIC8qCisJICogRm9yIGNvbmN1cnJlbnQgbm9uLXVuaXF1 ZSBpbmRleCBidWlsZHMsIHdlIGNhbiBwZXJpb2RpY2FsbHkgcmVzZXQgc25hcHNob3RzCisJICog dG8gYWxsb3cgdGhlIHhtaW4gaG9yaXpvbiB0byBhZHZhbmNlLiBUaGlzIGlzIHNhZmUgc2luY2Ug dGhlc2UgYnVpbGRzIGRvbid0CisJICogcmVxdWlyZSBhIGNvbnNpc3RlbnQgdmlldyBhY3Jvc3Mg dGhlIGVudGlyZSBzY2FuLiBVbmlxdWUgaW5kZXhlcyBzdGlsbCBuZWVkCisJICogYSBzdGFibGUg c25hcHNob3QgdG8gcHJvcGVybHkgZW5mb3JjZSB1bmlxdWVuZXNzIGNvbnN0cmFpbnRzLgorICAg ICAqLworCXJlc2V0X3NuYXBzaG90ID0gaXNjb25jdXJyZW50ICYmICFidHNwb29sLT5pc3VuaXF1 ZTsKKwogCS8qCiAJICogUHJlcGFyZSBmb3Igc2NhbiBvZiB0aGUgYmFzZSByZWxhdGlvbi4gIElu IGEgbm9ybWFsIGluZGV4IGJ1aWxkLCB3ZSB1c2UKIAkgKiBTbmFwc2hvdEFueSBiZWNhdXNlIHdl IG11c3QgcmV0cmlldmUgYWxsIHR1cGxlcyBhbmQgZG8gb3VyIG93biB0aW1lCiAJICogcXVhbCBj aGVja3MgKGJlY2F1c2Ugd2UgaGF2ZSB0byBpbmRleCBSRUNFTlRMWV9ERUFEIHR1cGxlcykuICBJ biBhCiAJICogY29uY3VycmVudCBidWlsZCwgd2UgdGFrZSBhIHJlZ3VsYXIgTVZDQyBzbmFwc2hv dCBhbmQgaW5kZXggd2hhdGV2ZXIncwotCSAqIGxpdmUgYWNjb3JkaW5nIHRvIHRoYXQuCisJICog bGl2ZSBhY2NvcmRpbmcgdG8gdGhhdCwgd2hpbGUgdGhhdCBzbmFwc2hvdCBtYXkgYmUgcmVzZXQg cGVyaW9kaWNhbGx5IGluCisJICogY2FzZSBvZiBub24tdW5pcXVlIGluZGV4LgogCSAqLwogCWlm ICghaXNjb25jdXJyZW50KQogCXsKQEAgLTE0NTEsNiArMTQ1OCwxMSBAQCBfYnRfYmVnaW5fcGFy YWxsZWwoQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLCBib29sIGlzY29uY3VycmVudCwgaW50IHJl cXVlc3QpCiAJCXNuYXBzaG90ID0gU25hcHNob3RBbnk7CiAJCW5lZWRfcG9wX2FjdGl2ZV9zbmFw c2hvdCA9IGZhbHNlOwogCX0KKwllbHNlIGlmIChyZXNldF9zbmFwc2hvdCkKKwl7CisJCXNuYXBz aG90ID0gSW52YWxpZFNuYXBzaG90OworCQlQdXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rp b25TbmFwc2hvdCgpKTsKKwl9CiAJZWxzZQogCXsKIAkJc25hcHNob3QgPSBSZWdpc3RlclNuYXBz aG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7CkBAIC0xNTExLDcgKzE1MjMsNyBAQCBfYnRf YmVnaW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLCBib29sIGlzY29uY3VycmVu dCwgaW50IHJlcXVlc3QpCiAJewogCQlpZiAobmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90KQogCQkJ UG9wQWN0aXZlU25hcHNob3QoKTsKLQkJaWYgKElzTVZDQ1NuYXBzaG90KHNuYXBzaG90KSkKKwkJ aWYgKHNuYXBzaG90ICE9IEludmFsaWRTbmFwc2hvdCAmJiBJc01WQ0NTbmFwc2hvdChzbmFwc2hv dCkpCiAJCQlVbnJlZ2lzdGVyU25hcHNob3Qoc25hcHNob3QpOwogCQlEZXN0cm95UGFyYWxsZWxD b250ZXh0KHBjeHQpOwogCQlFeGl0UGFyYWxsZWxNb2RlKCk7CkBAIC0xNTM4LDcgKzE1NTAsOCBA QCBfYnRfYmVnaW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLCBib29sIGlzY29u Y3VycmVudCwgaW50IHJlcXVlc3QpCiAJYnRzaGFyZWQtPmJyb2tlbmhvdGNoYWluID0gZmFsc2U7 CiAJdGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUoYnRzcG9vbC0+aGVhcCwKIAkJCQkJCQkJ ICBQYXJhbGxlbFRhYmxlU2NhbkZyb21CVFNoYXJlZChidHNoYXJlZCksCi0JCQkJCQkJCSAgc25h cHNob3QpOworCQkJCQkJCQkgIHNuYXBzaG90LAorCQkJCQkJCQkgIHJlc2V0X3NuYXBzaG90KTsK IAogCS8qCiAJICogU3RvcmUgc2hhcmVkIHR1cGxlc29ydC1wcml2YXRlIHN0YXRlLCBmb3Igd2hp Y2ggd2UgcmVzZXJ2ZWQgc3BhY2UuCkBAIC0xNjE0LDYgKzE2MjcsMTMgQEAgX2J0X2JlZ2luX3Bh cmFsbGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9vbCBpc2NvbmN1cnJlbnQsIGludCBy ZXF1ZXN0KQogCS8qIFNhdmUgbGVhZGVyIHN0YXRlIG5vdyB0aGF0IGl0J3MgY2xlYXIgYnVpbGQg d2lsbCBiZSBwYXJhbGxlbCAqLwogCWJ1aWxkc3RhdGUtPmJ0bGVhZGVyID0gYnRsZWFkZXI7CiAK KwkvKgorCSAqIEluIGNhc2Ugb2YgY29uY3VycmVudCBidWlsZCBzbmFwc2hvdHMgYXJlIGdvaW5n IHRvIGJlIHJlc2V0IHBlcmlvZGljYWxseS4KKwkgKiBXYWl0IHVudGlsIGFsbCB3b3JrZXJzIGlt cG9ydGVkIGluaXRpYWwgc25hcHNob3QuCisJICovCisJaWYgKHJlc2V0X3NuYXBzaG90KQorCQlX YWl0Rm9yUGFyYWxsZWxXb3JrZXJzVG9BdHRhY2gocGN4dCwgdHJ1ZSk7CisKIAkvKiBKb2luIGhl YXAgc2NhbiBvdXJzZWx2ZXMgKi8KIAlpZiAobGVhZGVycGFydGljaXBhdGVzKQogCQlfYnRfbGVh ZGVyX3BhcnRpY2lwYXRlX2FzX3dvcmtlcihidWlsZHN0YXRlKTsKQEAgLTE2MjIsOSArMTY0Miwx MyBAQCBfYnRfYmVnaW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLCBib29sIGlz Y29uY3VycmVudCwgaW50IHJlcXVlc3QpCiAJICogQ2FsbGVyIG5lZWRzIHRvIHdhaXQgZm9yIGFs bCBsYXVuY2hlZCB3b3JrZXJzIHdoZW4gd2UgcmV0dXJuLiAgTWFrZQogCSAqIHN1cmUgdGhhdCB0 aGUgZmFpbHVyZS10by1zdGFydCBjYXNlIHdpbGwgbm90IGhhbmcgZm9yZXZlci4KIAkgKi8KLQlX YWl0Rm9yUGFyYWxsZWxXb3JrZXJzVG9BdHRhY2gocGN4dCk7CisJaWYgKCFyZXNldF9zbmFwc2hv dCkKKwkJV2FpdEZvclBhcmFsbGVsV29ya2Vyc1RvQXR0YWNoKHBjeHQsIGZhbHNlKTsKIAlpZiAo bmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90KQogCQlQb3BBY3RpdmVTbmFwc2hvdCgpOworCisJSW52 YWxpZGF0ZUNhdGFsb2dTbmFwc2hvdCgpOworCUFzc2VydCghcmVzZXRfc25hcHNob3R8fCAhVHJh bnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CiB9CiAKIC8qCkBAIC0xNjQ2LDcgKzE2 NzAsNyBAQCBfYnRfZW5kX3BhcmFsbGVsKEJUTGVhZGVyICpidGxlYWRlcikKIAkJSW5zdHJBY2N1 bVBhcmFsbGVsUXVlcnkoJmJ0bGVhZGVyLT5idWZmZXJ1c2FnZVtpXSwgJmJ0bGVhZGVyLT53YWx1 c2FnZVtpXSk7CiAKIAkvKiBGcmVlIGxhc3QgcmVmZXJlbmNlIHRvIE1WQ0Mgc25hcHNob3QsIGlm IG9uZSB3YXMgdXNlZCAqLwotCWlmIChJc01WQ0NTbmFwc2hvdChidGxlYWRlci0+c25hcHNob3Qp KQorCWlmIChidGxlYWRlci0+c25hcHNob3QgIT0gSW52YWxpZFNuYXBzaG90ICYmIElzTVZDQ1Nu YXBzaG90KGJ0bGVhZGVyLT5zbmFwc2hvdCkpCiAJCVVucmVnaXN0ZXJTbmFwc2hvdChidGxlYWRl ci0+c25hcHNob3QpOwogCURlc3Ryb3lQYXJhbGxlbENvbnRleHQoYnRsZWFkZXItPnBjeHQpOwog CUV4aXRQYXJhbGxlbE1vZGUoKTsKQEAgLTE4OTYsNiArMTkyMCw3IEBAIF9idF9wYXJhbGxlbF9z Y2FuX2FuZF9zb3J0KEJUU3Bvb2wgKmJ0c3Bvb2wsIEJUU3Bvb2wgKmJ0c3Bvb2wyLAogCVNvcnRD b29yZGluYXRlIGNvb3JkaW5hdGU7CiAJQlRCdWlsZFN0YXRlIGJ1aWxkc3RhdGU7CiAJVGFibGVT Y2FuRGVzYyBzY2FuOworCVBhcmFsbGVsVGFibGVTY2FuRGVzYyBwc2NhbjsKIAlkb3VibGUJCXJl bHR1cGxlczsKIAlJbmRleEluZm8gICppbmRleEluZm87CiAKQEAgLTE5NTAsMTEgKzE5NzUsMTUg QEAgX2J0X3BhcmFsbGVsX3NjYW5fYW5kX3NvcnQoQlRTcG9vbCAqYnRzcG9vbCwgQlRTcG9vbCAq YnRzcG9vbDIsCiAJLyogSm9pbiBwYXJhbGxlbCBzY2FuICovCiAJaW5kZXhJbmZvID0gQnVpbGRJ bmRleEluZm8oYnRzcG9vbC0+aW5kZXgpOwogCWluZGV4SW5mby0+aWlfQ29uY3VycmVudCA9IGJ0 c2hhcmVkLT5pc2NvbmN1cnJlbnQ7Ci0Jc2NhbiA9IHRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxlbChi dHNwb29sLT5oZWFwLAotCQkJCQkJCQkJUGFyYWxsZWxUYWJsZVNjYW5Gcm9tQlRTaGFyZWQoYnRz aGFyZWQpKTsKKwlwc2NhbiA9IFBhcmFsbGVsVGFibGVTY2FuRnJvbUJUU2hhcmVkKGJ0c2hhcmVk KTsKKwlzY2FuID0gdGFibGVfYmVnaW5zY2FuX3BhcmFsbGVsKGJ0c3Bvb2wtPmhlYXAsIHBzY2Fu KTsKIAlyZWx0dXBsZXMgPSB0YWJsZV9pbmRleF9idWlsZF9zY2FuKGJ0c3Bvb2wtPmhlYXAsIGJ0 c3Bvb2wtPmluZGV4LCBpbmRleEluZm8sCiAJCQkJCQkJCQkgICB0cnVlLCBwcm9ncmVzcywgX2J0 X2J1aWxkX2NhbGxiYWNrLAogCQkJCQkJCQkJICAgJmJ1aWxkc3RhdGUsIHNjYW4pOworCUludmFs aWRhdGVDYXRhbG9nU25hcHNob3QoKTsKKwlpZiAocHNjYW4tPnBoc19yZXNldF9zbmFwc2hvdCkK KwkJUG9wQWN0aXZlU25hcHNob3QoKTsKKwlBc3NlcnQoIXBzY2FuLT5waHNfcmVzZXRfc25hcHNo b3QgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwogCiAJLyogRXhlY3V0 ZSB0aGlzIHdvcmtlcidzIHBhcnQgb2YgdGhlIHNvcnQgKi8KIAlpZiAocHJvZ3Jlc3MpCkBAIC0x OTkwLDQgKzIwMTksNyBAQCBfYnRfcGFyYWxsZWxfc2Nhbl9hbmRfc29ydChCVFNwb29sICpidHNw b29sLCBCVFNwb29sICpidHNwb29sMiwKIAl0dXBsZXNvcnRfZW5kKGJ0c3Bvb2wtPnNvcnRzdGF0 ZSk7CiAJaWYgKGJ0c3Bvb2wyKQogCQl0dXBsZXNvcnRfZW5kKGJ0c3Bvb2wyLT5zb3J0c3RhdGUp OworCUFzc2VydCghcHNjYW4tPnBoc19yZXNldF9zbmFwc2hvdCB8fCAhVHJhbnNhY3Rpb25JZElz VmFsaWQoTXlQcm9jLT54bWluKSk7CisJaWYgKHBzY2FuLT5waHNfcmVzZXRfc25hcHNob3QpCisJ CVB1c2hBY3RpdmVTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOwogfQpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RhYmxlL3RhYmxlYW0uYyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy90YWJsZS90YWJsZWFtLmMKaW5kZXggZGZkYTFhZjQxMmUuLjI2ZGY1NjM4OTIxIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdGFibGUvdGFibGVhbS5jCisrKyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy90YWJsZS90YWJsZWFtLmMKQEAgLTEzMiwxMCArMTMyLDEwIEBAIHRhYmxlX3Bh cmFsbGVsc2Nhbl9lc3RpbWF0ZShSZWxhdGlvbiByZWwsIFNuYXBzaG90IHNuYXBzaG90KQogewog CVNpemUJCXN6ID0gMDsKIAotCWlmIChJc01WQ0NTbmFwc2hvdChzbmFwc2hvdCkpCisJaWYgKHNu YXBzaG90ICE9IEludmFsaWRTbmFwc2hvdCAmJiBJc01WQ0NTbmFwc2hvdChzbmFwc2hvdCkpCiAJ CXN6ID0gYWRkX3NpemUoc3osIEVzdGltYXRlU25hcHNob3RTcGFjZShzbmFwc2hvdCkpOwogCWVs c2UKLQkJQXNzZXJ0KHNuYXBzaG90ID09IFNuYXBzaG90QW55KTsKKwkJQXNzZXJ0KHNuYXBzaG90 ID09IFNuYXBzaG90QW55IHx8IHNuYXBzaG90ID09IEludmFsaWRTbmFwc2hvdCk7CiAKIAlzeiA9 IGFkZF9zaXplKHN6LCByZWwtPnJkX3RhYmxlYW0tPnBhcmFsbGVsc2Nhbl9lc3RpbWF0ZShyZWwp KTsKIApAQCAtMTQ0LDIxICsxNDQsMzYgQEAgdGFibGVfcGFyYWxsZWxzY2FuX2VzdGltYXRlKFJl bGF0aW9uIHJlbCwgU25hcHNob3Qgc25hcHNob3QpCiAKIHZvaWQKIHRhYmxlX3BhcmFsbGVsc2Nh bl9pbml0aWFsaXplKFJlbGF0aW9uIHJlbCwgUGFyYWxsZWxUYWJsZVNjYW5EZXNjIHBzY2FuLAot CQkJCQkJCSAgU25hcHNob3Qgc25hcHNob3QpCisJCQkJCQkJICBTbmFwc2hvdCBzbmFwc2hvdCwg Ym9vbCByZXNldF9zbmFwc2hvdCkKIHsKIAlTaXplCQlzbmFwc2hvdF9vZmYgPSByZWwtPnJkX3Rh YmxlYW0tPnBhcmFsbGVsc2Nhbl9pbml0aWFsaXplKHJlbCwgcHNjYW4pOwogCiAJcHNjYW4tPnBo c19zbmFwc2hvdF9vZmYgPSBzbmFwc2hvdF9vZmY7CiAKLQlpZiAoSXNNVkNDU25hcHNob3Qoc25h cHNob3QpKQorCS8qCisJICogSW5pdGlhbGl6ZSBwYXJhbGxlbCBzY2FuIGRlc2NyaXB0aW9uLiBG b3Igbm9ybWFsIHNjYW5zIHdpdGggYSByZWd1bGFyCisJICogTVZDQyBzbmFwc2hvdCwgc2VyaWFs aXplIHRoZSBzbmFwc2hvdCBpbmZvLiBGb3Igc2NhbnMgdGhhdCB1c2UgcGVyaW9kaWMKKwkgKiBz bmFwc2hvdCByZXNldHMsIG1hcmsgdGhlIHNjYW4gYWNjb3JkaW5nbHkuCisJICovCisJaWYgKHJl c2V0X3NuYXBzaG90KQorCXsKKwkJQXNzZXJ0KHNuYXBzaG90ID09IEludmFsaWRTbmFwc2hvdCk7 CisJCXBzY2FuLT5waHNfc25hcHNob3RfYW55ID0gZmFsc2U7CisJCXBzY2FuLT5waHNfcmVzZXRf c25hcHNob3QgPSB0cnVlOworCQlJTkpFQ1RJT05fUE9JTlQoInRhYmxlX3BhcmFsbGVsc2Nhbl9p bml0aWFsaXplIiwgTlVMTCk7CisJfQorCWVsc2UgaWYgKElzTVZDQ1NuYXBzaG90KHNuYXBzaG90 KSkKIAl7CiAJCVNlcmlhbGl6ZVNuYXBzaG90KHNuYXBzaG90LCAoY2hhciAqKSBwc2NhbiArIHBz Y2FuLT5waHNfc25hcHNob3Rfb2ZmKTsKIAkJcHNjYW4tPnBoc19zbmFwc2hvdF9hbnkgPSBmYWxz ZTsKKwkJcHNjYW4tPnBoc19yZXNldF9zbmFwc2hvdCA9IGZhbHNlOwogCX0KIAllbHNlCiAJewog CQlBc3NlcnQoc25hcHNob3QgPT0gU25hcHNob3RBbnkpOworCQlBc3NlcnQoIXJlc2V0X3NuYXBz aG90KTsKIAkJcHNjYW4tPnBoc19zbmFwc2hvdF9hbnkgPSB0cnVlOworCQlwc2Nhbi0+cGhzX3Jl c2V0X3NuYXBzaG90ID0gZmFsc2U7CiAJfQogfQogCkBAIC0xNzEsNyArMTg2LDE5IEBAIHRhYmxl X2JlZ2luc2Nhbl9wYXJhbGxlbChSZWxhdGlvbiByZWxhdGlvbiwgUGFyYWxsZWxUYWJsZVNjYW5E ZXNjIHBzY2FuKQogCiAJQXNzZXJ0KFJlbEZpbGVMb2NhdG9yRXF1YWxzKHJlbGF0aW9uLT5yZF9s b2NhdG9yLCBwc2Nhbi0+cGhzX2xvY2F0b3IpKTsKIAotCWlmICghcHNjYW4tPnBoc19zbmFwc2hv dF9hbnkpCisJLyoKKwkgKiBGb3Igc2NhbnMgdGhhdAorCSAqIHVzZSBwZXJpb2RpYyBzbmFwc2hv dCByZXNldHMsIG1hcmsgdGhlIHNjYW4gYWNjb3JkaW5nbHkgYW5kIHVzZSB0aGUgYWN0aXZlCisJ ICogc25hcHNob3QgYXMgdGhlIGluaXRpYWwgc3RhdGUuCisJICovCisJaWYgKHBzY2FuLT5waHNf cmVzZXRfc25hcHNob3QpCisJeworCQlBc3NlcnQoQWN0aXZlU25hcHNob3RTZXQoKSk7CisJCWZs YWdzIHw9IFNPX1JFU0VUX1NOQVBTSE9UOworCQkvKiBTdGFydCB3aXRoIGN1cnJlbnQgYWN0aXZl IHNuYXBzaG90LiAqLworCQlzbmFwc2hvdCA9IEdldEFjdGl2ZVNuYXBzaG90KCk7CisJfQorCWVs c2UgaWYgKCFwc2Nhbi0+cGhzX3NuYXBzaG90X2FueSkKIAl7CiAJCS8qIFNuYXBzaG90IHdhcyBz ZXJpYWxpemVkIC0tIHJlc3RvcmUgaXQgKi8KIAkJc25hcHNob3QgPSBSZXN0b3JlU25hcHNob3Qo KGNoYXIgKikgcHNjYW4gKyBwc2Nhbi0+cGhzX3NuYXBzaG90X29mZik7CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9wYXJhbGxlbC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNz L3RyYW5zYW0vcGFyYWxsZWwuYwppbmRleCBhYjFkZmIzMGU3My4uMDQ5OGMwN2MzN2IgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3BhcmFsbGVsLmMKKysrIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL3RyYW5zYW0vcGFyYWxsZWwuYwpAQCAtNzksNiArNzksNyBAQAogI2RlZmlu ZSBQQVJBTExFTF9LRVlfUkVMTUFQUEVSX1NUQVRFCQlVSU5UNjRDT05TVCgweEZGRkZGRkZGRkZG RjAwMEQpCiAjZGVmaW5lIFBBUkFMTEVMX0tFWV9VTkNPTU1JVFRFREVOVU1TCQlVSU5UNjRDT05T VCgweEZGRkZGRkZGRkZGRjAwMEUpCiAjZGVmaW5lIFBBUkFMTEVMX0tFWV9DTElFTlRDT05OSU5G TwkJCVVJTlQ2NENPTlNUKDB4RkZGRkZGRkZGRkZGMDAwRikKKyNkZWZpbmUgUEFSQUxMRUxfS0VZ X1NOQVBTSE9UX1JFU1RPUkVECQlVSU5UNjRDT05TVCgweEZGRkZGRkZGRkZGRjAwMTApCiAKIC8q IEZpeGVkLXNpemUgcGFyYWxsZWwgc3RhdGUuICovCiB0eXBlZGVmIHN0cnVjdCBGaXhlZFBhcmFs bGVsU3RhdGUKQEAgLTMwOCw2ICszMDksMTAgQEAgSW5pdGlhbGl6ZVBhcmFsbGVsRFNNKFBhcmFs bGVsQ29udGV4dCAqcGN4dCkKIAkJCQkJCQkJCQlwY3h0LT5ud29ya2VycykpOwogCQlzaG1fdG9j X2VzdGltYXRlX2tleXMoJnBjeHQtPmVzdGltYXRvciwgMSk7CiAKKwkJc2htX3RvY19lc3RpbWF0 ZV9jaHVuaygmcGN4dC0+ZXN0aW1hdG9yLCBtdWxfc2l6ZShzaXplb2YoYm9vbCksCisJCQkJCQkJ ICAgcGN4dC0+bndvcmtlcnMpKTsKKwkJc2htX3RvY19lc3RpbWF0ZV9rZXlzKCZwY3h0LT5lc3Rp bWF0b3IsIDEpOworCiAJCS8qIEVzdGltYXRlIGhvdyBtdWNoIHdlJ2xsIG5lZWQgZm9yIHRoZSBl bnRyeXBvaW50IGluZm8uICovCiAJCXNobV90b2NfZXN0aW1hdGVfY2h1bmsoJnBjeHQtPmVzdGlt YXRvciwgc3RybGVuKHBjeHQtPmxpYnJhcnlfbmFtZSkgKwogCQkJCQkJCSAgIHN0cmxlbihwY3h0 LT5mdW5jdGlvbl9uYW1lKSArIDIpOwpAQCAtMzc5LDYgKzM4NCw3IEBAIEluaXRpYWxpemVQYXJh bGxlbERTTShQYXJhbGxlbENvbnRleHQgKnBjeHQpCiAJCWNoYXIJICAgKmVudHJ5cG9pbnRzdGF0 ZTsKIAkJY2hhcgkgICAqdW5jb21taXR0ZWRlbnVtc3NwYWNlOwogCQljaGFyCSAgICpjbGllbnRj b25uaW5mb3NwYWNlOworCQlib29sCSAgICpzbmFwc2hvdF9zZXRfZmxhZ19zcGFjZTsKIAkJU2l6 ZQkJbG5hbWVsZW47CiAKIAkJLyogU2VyaWFsaXplIHNoYXJlZCBsaWJyYXJpZXMgd2UgaGF2ZSBs b2FkZWQuICovCkBAIC00OTQsNiArNTAwLDE5IEBAIEluaXRpYWxpemVQYXJhbGxlbERTTShQYXJh bGxlbENvbnRleHQgKnBjeHQpCiAJCXN0cmNweShlbnRyeXBvaW50c3RhdGUsIHBjeHQtPmxpYnJh cnlfbmFtZSk7CiAJCXN0cmNweShlbnRyeXBvaW50c3RhdGUgKyBsbmFtZWxlbiArIDEsIHBjeHQt PmZ1bmN0aW9uX25hbWUpOwogCQlzaG1fdG9jX2luc2VydChwY3h0LT50b2MsIFBBUkFMTEVMX0tF WV9FTlRSWVBPSU5ULCBlbnRyeXBvaW50c3RhdGUpOworCisJCS8qCisJCSAqIEVzdGFibGlzaCBk eW5hbWljIHNoYXJlZCBtZW1vcnkgdG8gcGFzcyBpbmZvcm1hdGlvbiBhYm91dCBpbXBvcnRpbmcK KwkJICogb2Ygc25hcHNob3QuCisJCSAqLworCQlzbmFwc2hvdF9zZXRfZmxhZ19zcGFjZSA9CisJ CQkJc2htX3RvY19hbGxvY2F0ZShwY3h0LT50b2MsIG11bF9zaXplKHNpemVvZihib29sKSwgcGN4 dC0+bndvcmtlcnMpKTsKKwkJZm9yIChpID0gMDsgaSA8IHBjeHQtPm53b3JrZXJzOyArK2kpCisJ CXsKKwkJCXBjeHQtPndvcmtlcltpXS5zbmFwc2hvdF9yZXN0b3JlZCA9ICZzbmFwc2hvdF9zZXRf ZmxhZ19zcGFjZVtpXTsKKwkJCSpwY3h0LT53b3JrZXJbaV0uc25hcHNob3RfcmVzdG9yZWQgPSBm YWxzZTsKKwkJfQorCQlzaG1fdG9jX2luc2VydChwY3h0LT50b2MsIFBBUkFMTEVMX0tFWV9TTkFQ U0hPVF9SRVNUT1JFRCwgc25hcHNob3Rfc2V0X2ZsYWdfc3BhY2UpOwogCX0KIAogCS8qIFVwZGF0 ZSBud29ya2Vyc190b19sYXVuY2gsIGluIGNhc2Ugd2UgY2hhbmdlZCBud29ya2VycyBhYm92ZS4g Ki8KQEAgLTY3MCw2ICs2ODksMTAgQEAgTGF1bmNoUGFyYWxsZWxXb3JrZXJzKFBhcmFsbGVsQ29u dGV4dCAqcGN4dCkKICAqIFdhaXQgZm9yIGFsbCB3b3JrZXJzIHRvIGF0dGFjaCB0byB0aGVpciBl cnJvciBxdWV1ZXMsIGFuZCB0aHJvdyBhbiBlcnJvciBpZgogICogYW55IHdvcmtlciBmYWlscyB0 byBkbyB0aGlzLgogICoKKyAqIHdhaXRfZm9yX3NuYXBzaG90OiB0cmFjayB3aGV0aGVyIGVhY2gg cGFyYWxsZWwgd29ya2VyIGhhcyBzdWNjZXNzZnVsbHkgcmVzdG9yZWQKKyAqIGl0cyBzbmFwc2hv dC4gVGhpcyBpcyBuZWVkZWQgd2hlbiB1c2luZyBwZXJpb2RpYyBzbmFwc2hvdCByZXNldHMgdG8g ZW5zdXJlIGFsbAorICogd29ya2VycyBoYXZlIGEgdmFsaWQgaW5pdGlhbCBzbmFwc2hvdCBiZWZv cmUgcHJvY2VlZGluZyB3aXRoIHRoZSBzY2FuLgorICoKICAqIENhbGxlcnMgY2FuIGFzc3VtZSB0 aGF0IGlmIHRoaXMgZnVuY3Rpb24gcmV0dXJucyBzdWNjZXNzZnVsbHksIHRoZW4gdGhlCiAgKiBu dW1iZXIgb2Ygd29ya2VycyBnaXZlbiBieSBwY3h0LT5ud29ya2Vyc19sYXVuY2hlZCBoYXZlIGlu aXRpYWxpemVkIGFuZAogICogYXR0YWNoZWQgdG8gdGhlaXIgZXJyb3IgcXVldWVzLiAgV2hldGhl ciBvciBub3QgdGhlc2Ugd29ya2VycyBhcmUgZ3VhcmFudGVlZApAQCAtNjk5LDcgKzcyMiw3IEBA IExhdW5jaFBhcmFsbGVsV29ya2VycyhQYXJhbGxlbENvbnRleHQgKnBjeHQpCiAgKiBjYWxsIHRo aXMgZnVuY3Rpb24gYXQgYWxsLgogICovCiB2b2lkCi1XYWl0Rm9yUGFyYWxsZWxXb3JrZXJzVG9B dHRhY2goUGFyYWxsZWxDb250ZXh0ICpwY3h0KQorV2FpdEZvclBhcmFsbGVsV29ya2Vyc1RvQXR0 YWNoKFBhcmFsbGVsQ29udGV4dCAqcGN4dCwgYm9vbCB3YWl0X2Zvcl9zbmFwc2hvdCkKIHsKIAlp bnQJCQlpOwogCkBAIC03NDMsOSArNzY2LDEyIEBAIFdhaXRGb3JQYXJhbGxlbFdvcmtlcnNUb0F0 dGFjaChQYXJhbGxlbENvbnRleHQgKnBjeHQpCiAJCQkJbXEgPSBzaG1fbXFfZ2V0X3F1ZXVlKHBj eHQtPndvcmtlcltpXS5lcnJvcl9tcWgpOwogCQkJCWlmIChzaG1fbXFfZ2V0X3NlbmRlcihtcSkg IT0gTlVMTCkKIAkJCQl7Ci0JCQkJCS8qIFllcywgc28gaXQgaXMga25vd24gdG8gYmUgYXR0YWNo ZWQuICovCi0JCQkJCXBjeHQtPmtub3duX2F0dGFjaGVkX3dvcmtlcnNbaV0gPSB0cnVlOwotCQkJ CQkrK3BjeHQtPm5rbm93bl9hdHRhY2hlZF93b3JrZXJzOworCQkJCQlpZiAoIXdhaXRfZm9yX3Nu YXBzaG90IHx8ICoocGN4dC0+d29ya2VyW2ldLnNuYXBzaG90X3Jlc3RvcmVkKSkKKwkJCQkJewor CQkJCQkJLyogWWVzLCBzbyBpdCBpcyBrbm93biB0byBiZSBhdHRhY2hlZC4gKi8KKwkJCQkJCXBj eHQtPmtub3duX2F0dGFjaGVkX3dvcmtlcnNbaV0gPSB0cnVlOworCQkJCQkJKytwY3h0LT5ua25v d25fYXR0YWNoZWRfd29ya2VyczsKKwkJCQkJfQogCQkJCX0KIAkJCX0KIAkJCWVsc2UgaWYgKHN0 YXR1cyA9PSBCR1dIX1NUT1BQRUQpCkBAIC03ODgsNiArODE0LDE2IEBAIFdhaXRGb3JQYXJhbGxl bFdvcmtlcnNUb0F0dGFjaChQYXJhbGxlbENvbnRleHQgKnBjeHQpCiAJCQlicmVhazsKIAkJfQog CX0KKworCS8qIFNldCBzbmFwc2hvdCByZXN0b3JlZCBmbGFnIHRvIGZhbHNlLiAqLworCWlmIChw Y3h0LT5ud29ya2VycyA+IDApCisJeworCQlib29sCSAgICpzbmFwc2hvdF9yZXN0b3JlZF9zcGFj ZTsKKwkJc25hcHNob3RfcmVzdG9yZWRfc3BhY2UgPQorCQkJCXNobV90b2NfbG9va3VwKHBjeHQt PnRvYywgUEFSQUxMRUxfS0VZX1NOQVBTSE9UX1JFU1RPUkVELCBmYWxzZSk7CisJCWZvciAoaSA9 IDA7IGkgPCBwY3h0LT5ud29ya2VyczsgKytpKQorCQkJc25hcHNob3RfcmVzdG9yZWRfc3BhY2Vb aV0gPSBmYWxzZTsKKwl9CiB9CiAKIC8qCkBAIC0xMzA0LDYgKzEzNDAsNyBAQCBQYXJhbGxlbFdv cmtlck1haW4oRGF0dW0gbWFpbl9hcmcpCiAJc2htX3RvYyAgICAqdG9jOwogCUZpeGVkUGFyYWxs ZWxTdGF0ZSAqZnBzOwogCWNoYXIJICAgKmVycm9yX3F1ZXVlX3NwYWNlOworCWJvb2wJICAgKnNu YXBzaG90X3Jlc3RvcmVkX3NwYWNlOwogCXNobV9tcQkgICAqbXE7CiAJc2htX21xX2hhbmRsZSAq bXFoOwogCWNoYXIJICAgKmxpYnJhcnlzcGFjZTsKQEAgLTE1MDcsNiArMTU0NCwxMCBAQCBQYXJh bGxlbFdvcmtlck1haW4oRGF0dW0gbWFpbl9hcmcpCiAJCQkJCQkJICAgZnBzLT5wYXJhbGxlbF9s ZWFkZXJfcGdwcm9jKTsKIAlQdXNoQWN0aXZlU25hcHNob3QoYXNuYXBzaG90KTsKIAorCS8qIFNu YXBzaG90IGlzIHJlc3RvcmVkLCBzZXQgZmxhZyB0byBtYWtlIGxlYWRlciBrbm93IGFib3V0IGl0 LiAqLworCXNuYXBzaG90X3Jlc3RvcmVkX3NwYWNlID0gc2htX3RvY19sb29rdXAodG9jLCBQQVJB TExFTF9LRVlfU05BUFNIT1RfUkVTVE9SRUQsIGZhbHNlKTsKKwlzbmFwc2hvdF9yZXN0b3JlZF9z cGFjZVtQYXJhbGxlbFdvcmtlck51bWJlcl0gPSB0cnVlOworCiAJLyoKIAkgKiBXZSd2ZSBjaGFu Z2VkIHdoaWNoIHR1cGxlcyB3ZSBjYW4gc2VlLCBhbmQgbXVzdCB0aGVyZWZvcmUgaW52YWxpZGF0 ZQogCSAqIHN5c3RlbSBjYWNoZXMuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL2lu ZGV4LmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMKaW5kZXggMmFjZTYwYzFmMDcuLmI1 NDkyMWFkNTQ2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMKKysrIGIv c3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCkBAIC0xNTMxLDcgKzE1MzEsNyBAQCBpbmRleF9j b25jdXJyZW50bHlfYnVpbGQoT2lkIGhlYXBSZWxhdGlvbklkLAogCWluZGV4X2J1aWxkKGhlYXBS ZWwsIGluZGV4UmVsYXRpb24sIGluZGV4SW5mbywgZmFsc2UsIHRydWUpOwogCiAJSW52YWxpZGF0 ZUNhdGFsb2dTbmFwc2hvdCgpOwotCUFzc2VydCgoaW5kZXhJbmZvLT5paV9QYXJhbGxlbFdvcmtl cnMgfHwgaW5kZXhJbmZvLT5paV9VbmlxdWUpIHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVBy b2MtPnhtaW4pKTsKKwlBc3NlcnQoaW5kZXhJbmZvLT5paV9VbmlxdWUgfHwgIVRyYW5zYWN0aW9u SWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwogCiAJLyogUm9sbCBiYWNrIGFueSBHVUMgY2hhbmdl cyBleGVjdXRlZCBieSBpbmRleCBmdW5jdGlvbnMgKi8KIAlBdEVPWGFjdF9HVUMoZmFsc2UsIHNh dmVfbmVzdGxldmVsKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTZXFz Y2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2Vxc2Nhbi5jCmluZGV4IGFmM2M3ODhj ZThiLi4wMWY5ZjMzMGVlZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNl cXNjYW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2Vxc2Nhbi5jCkBAIC0zNzEs NyArMzcxLDggQEAgRXhlY1NlcVNjYW5Jbml0aWFsaXplRFNNKFNlcVNjYW5TdGF0ZSAqbm9kZSwK IAlwc2NhbiA9IHNobV90b2NfYWxsb2NhdGUocGN4dC0+dG9jLCBub2RlLT5wc2Nhbl9sZW4pOwog CXRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplKG5vZGUtPnNzLnNzX2N1cnJlbnRSZWxhdGlv biwKIAkJCQkJCQkJICBwc2NhbiwKLQkJCQkJCQkJICBlc3RhdGUtPmVzX3NuYXBzaG90KTsKKwkJ CQkJCQkJICBlc3RhdGUtPmVzX3NuYXBzaG90LAorCQkJCQkJCQkgIGZhbHNlKTsKIAlzaG1fdG9j X2luc2VydChwY3h0LT50b2MsIG5vZGUtPnNzLnBzLnBsYW4tPnBsYW5fbm9kZV9pZCwgcHNjYW4p OwogCW5vZGUtPnNzLnNzX2N1cnJlbnRTY2FuRGVzYyA9CiAJCXRhYmxlX2JlZ2luc2Nhbl9wYXJh bGxlbChub2RlLT5zcy5zc19jdXJyZW50UmVsYXRpb24sIHBzY2FuKTsKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUaWRyYW5nZXNjYW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVUaWRyYW5nZXNjYW4uYwppbmRleCA1MDM4MTdkYTY1Yi4uZjMxNjY3MTE3YWQgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUaWRyYW5nZXNjYW4uYworKysgYi9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGlkcmFuZ2VzY2FuLmMKQEAgLTQ1NSw3ICs0NTUsOCBA QCBFeGVjVGlkUmFuZ2VTY2FuSW5pdGlhbGl6ZURTTShUaWRSYW5nZVNjYW5TdGF0ZSAqbm9kZSwg UGFyYWxsZWxDb250ZXh0ICpwY3h0KQogCXBzY2FuID0gc2htX3RvY19hbGxvY2F0ZShwY3h0LT50 b2MsIG5vZGUtPnRyc3NfcHNjYW5sZW4pOwogCXRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXpl KG5vZGUtPnNzLnNzX2N1cnJlbnRSZWxhdGlvbiwKIAkJCQkJCQkJICBwc2NhbiwKLQkJCQkJCQkJ ICBlc3RhdGUtPmVzX3NuYXBzaG90KTsKKwkJCQkJCQkJICBlc3RhdGUtPmVzX3NuYXBzaG90LAor CQkJCQkJCQkgIGZhbHNlKTsKIAlzaG1fdG9jX2luc2VydChwY3h0LT50b2MsIG5vZGUtPnNzLnBz LnBsYW4tPnBsYW5fbm9kZV9pZCwgcHNjYW4pOwogCW5vZGUtPnNzLnNzX2N1cnJlbnRTY2FuRGVz YyA9CiAJCXRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxlbF90aWRyYW5nZShub2RlLT5zcy5zc19jdXJy ZW50UmVsYXRpb24sCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy90aW1lL3NuYXBtZ3Iu YyBiL3NyYy9iYWNrZW5kL3V0aWxzL3RpbWUvc25hcG1nci5jCmluZGV4IDJlNjE5N2Y1ZjM1Li5k ZjkxMTY1MzJjMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvdGltZS9zbmFwbWdyLmMK KysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvdGltZS9zbmFwbWdyLmMKQEAgLTM1MywxNCArMzUzLDYg QEAgR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCh2b2lkKQogU25hcHNob3QKIEdldExhdGVzdFNuYXBz aG90KHZvaWQpCiB7Ci0JLyoKLQkgKiBXZSBtaWdodCBiZSBhYmxlIHRvIHJlbGF4IHRoaXMsIGJ1 dCBub3RoaW5nIHRoYXQgY291bGQgb3RoZXJ3aXNlIHdvcmsKLQkgKiBuZWVkcyBpdC4KLQkgKi8K LQlpZiAoSXNJblBhcmFsbGVsTW9kZSgpKQotCQllbG9nKEVSUk9SLAotCQkJICJjYW5ub3QgdXBk YXRlIFNlY29uZGFyeVNuYXBzaG90IGR1cmluZyBhIHBhcmFsbGVsIG9wZXJhdGlvbiIpOwotCiAJ LyoKIAkgKiBTbyBmYXIgdGhlcmUgYXJlIG5vIGNhc2VzIHJlcXVpcmluZyBzdXBwb3J0IGZvciBH ZXRMYXRlc3RTbmFwc2hvdCgpCiAJICogZHVyaW5nIGxvZ2ljYWwgZGVjb2RpbmcsIGJ1dCBpdCB3 b3VsZG4ndCBiZSBoYXJkIHRvIGFkZCBpZiByZXF1aXJlZC4KZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL2FjY2Vzcy9wYXJhbGxlbC5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3BhcmFsbGVsLmgKaW5k ZXggNjBmODU3Njc1ZTAuLjlhM2UxNGUwYzBlIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nl c3MvcGFyYWxsZWwuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvcGFyYWxsZWwuaApAQCAtMjgs NiArMjgsNyBAQCB0eXBlZGVmIHN0cnVjdCBQYXJhbGxlbFdvcmtlckluZm8KIHsKIAlCYWNrZ3Jv dW5kV29ya2VySGFuZGxlICpiZ3doYW5kbGU7CiAJc2htX21xX2hhbmRsZSAqZXJyb3JfbXFoOwor CWJvb2wJCSAgKnNuYXBzaG90X3Jlc3RvcmVkOwogfSBQYXJhbGxlbFdvcmtlckluZm87CiAKIHR5 cGVkZWYgc3RydWN0IFBhcmFsbGVsQ29udGV4dApAQCAtNjcsNyArNjgsNyBAQCBleHRlcm4gdm9p ZCBJbml0aWFsaXplUGFyYWxsZWxEU00oUGFyYWxsZWxDb250ZXh0ICpwY3h0KTsKIGV4dGVybiB2 b2lkIFJlaW5pdGlhbGl6ZVBhcmFsbGVsRFNNKFBhcmFsbGVsQ29udGV4dCAqcGN4dCk7CiBleHRl cm4gdm9pZCBSZWluaXRpYWxpemVQYXJhbGxlbFdvcmtlcnMoUGFyYWxsZWxDb250ZXh0ICpwY3h0 LCBpbnQgbndvcmtlcnNfdG9fbGF1bmNoKTsKIGV4dGVybiB2b2lkIExhdW5jaFBhcmFsbGVsV29y a2VycyhQYXJhbGxlbENvbnRleHQgKnBjeHQpOwotZXh0ZXJuIHZvaWQgV2FpdEZvclBhcmFsbGVs V29ya2Vyc1RvQXR0YWNoKFBhcmFsbGVsQ29udGV4dCAqcGN4dCk7CitleHRlcm4gdm9pZCBXYWl0 Rm9yUGFyYWxsZWxXb3JrZXJzVG9BdHRhY2goUGFyYWxsZWxDb250ZXh0ICpwY3h0LCBib29sIHdh aXRfZm9yX3NuYXBzaG90KTsKIGV4dGVybiB2b2lkIFdhaXRGb3JQYXJhbGxlbFdvcmtlcnNUb0Zp bmlzaChQYXJhbGxlbENvbnRleHQgKnBjeHQpOwogZXh0ZXJuIHZvaWQgRGVzdHJveVBhcmFsbGVs Q29udGV4dChQYXJhbGxlbENvbnRleHQgKnBjeHQpOwogZXh0ZXJuIGJvb2wgUGFyYWxsZWxDb250 ZXh0QWN0aXZlKHZvaWQpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3JlbHNjYW4u aCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9yZWxzY2FuLmgKaW5kZXggY2UzNDBjMDc2ZjguLmFjZmEw NmFlZDc4IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvcmVsc2Nhbi5oCisrKyBiL3Ny Yy9pbmNsdWRlL2FjY2Vzcy9yZWxzY2FuLmgKQEAgLTgxLDYgKzgxLDcgQEAgdHlwZWRlZiBzdHJ1 Y3QgUGFyYWxsZWxUYWJsZVNjYW5EZXNjRGF0YQogCVJlbEZpbGVMb2NhdG9yIHBoc19sb2NhdG9y OyAvKiBwaHlzaWNhbCByZWxhdGlvbiB0byBzY2FuICovCiAJYm9vbAkJcGhzX3N5bmNzY2FuOwkv KiByZXBvcnQgbG9jYXRpb24gdG8gc3luY3NjYW4gbG9naWM/ICovCiAJYm9vbAkJcGhzX3NuYXBz aG90X2FueTsJLyogU25hcHNob3RBbnksIG5vdCBwaHNfc25hcHNob3RfZGF0YT8gKi8KKwlib29s CQlwaHNfcmVzZXRfc25hcHNob3Q7IC8qIHVzZSBTT19SRVNFVF9TTkFQU0hPVD8gKi8KIAlTaXpl CQlwaHNfc25hcHNob3Rfb2ZmOwkvKiBkYXRhIGZvciBzbmFwc2hvdCAqLwogfSBQYXJhbGxlbFRh YmxlU2NhbkRlc2NEYXRhOwogdHlwZWRlZiBzdHJ1Y3QgUGFyYWxsZWxUYWJsZVNjYW5EZXNjRGF0 YSAqUGFyYWxsZWxUYWJsZVNjYW5EZXNjOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNz L3RhYmxlYW0uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgKaW5kZXggZDA3MDk3ODJk ZGUuLjg0YjA2ZmZhNDJmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5o CisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgKQEAgLTExNTEsNyArMTE1MSw4IEBA IGV4dGVybiBTaXplIHRhYmxlX3BhcmFsbGVsc2Nhbl9lc3RpbWF0ZShSZWxhdGlvbiByZWwsIFNu YXBzaG90IHNuYXBzaG90KTsKICAqLwogZXh0ZXJuIHZvaWQgdGFibGVfcGFyYWxsZWxzY2FuX2lu aXRpYWxpemUoUmVsYXRpb24gcmVsLAogCQkJCQkJCQkJCSAgUGFyYWxsZWxUYWJsZVNjYW5EZXNj IHBzY2FuLAotCQkJCQkJCQkJCSAgU25hcHNob3Qgc25hcHNob3QpOworCQkJCQkJCQkJCSAgU25h cHNob3Qgc25hcHNob3QsCisJCQkJCQkJCQkJICBib29sIHJlc2V0X3NuYXBzaG90KTsKIAogLyoK ICAqIEJlZ2luIGEgcGFyYWxsZWwgc2Nhbi4gYHBzY2FuYCBuZWVkcyB0byBoYXZlIGJlZW4gaW5p dGlhbGl6ZWQgd2l0aApAQCAtMTc4Myw3ICsxNzg0LDcgQEAgdGFibGVfc2Nhbl9hbmFseXplX25l eHRfdHVwbGUoVGFibGVTY2FuRGVzYyBzY2FuLAogICogVGhpcyBvbmx5IHJlYWxseSBtYWtlcyBz ZW5zZSBmb3IgaGVhcCBBTSwgaXQgbWlnaHQgbmVlZCB0byBiZSBnZW5lcmFsaXplZAogICogZm9y IG90aGVyIEFNcyBsYXRlci4KICAqCi0gKiBJbiBjYXNlIG9mIG5vbi11bmlxdWUgaW5kZXggYW5k IG5vbi1wYXJhbGxlbCBjb25jdXJyZW50IGJ1aWxkLAorICogSW4gY2FzZSBvZiBub24tdW5pcXVl IGNvbmN1cnJlbnQgaW5kZXggYnVpbGQsCiAgKiBTT19SRVNFVF9TTkFQU0hPVCBpcyBhcHBsaWVk IGZvciB0aGUgc2Nhbi4gVGhhdCBsZWFkcyB0byBjaGFuZ2luZyBzbmFwc2hvdHMKICAqIG9uIHRo ZSBmbHkgdG8gYWxsb3cgeG1pbiBob3Jpem9uIHByb3BhZ2F0ZS4KICAqLwpkaWZmIC0tZ2l0IGEv c3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL3NxbC9jaWNfcmVzZXRfc25hcHNob3Rz LnNxbCBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9zcWwvY2ljX3Jlc2V0X3Nu YXBzaG90cy5zcWwKaW5kZXggN2Y3ZGZmYTViZTQuLjM3ODE5YmYwZmI3IDEwMDY0NAotLS0gYS9z cmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvc3FsL2NpY19yZXNldF9zbmFwc2hvdHMu c3FsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9zcWwvY2ljX3Jlc2V0 X3NuYXBzaG90cy5zcWwKQEAgLTMsNyArMyw3IEBAIENSRUFURSBFWFRFTlNJT04gaW5qZWN0aW9u X3BvaW50czsKIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3NldF9sb2NhbCgpOwogU0VMRUNUIGlu amVjdGlvbl9wb2ludHNfYXR0YWNoKCdoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3RfZWZmZWN0aXZl JywgJ25vdGljZScpOwogU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCd0YWJsZV9iZWdp bnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzJywgJ25vdGljZScpOwotCitTRUxFQ1QgaW5qZWN0 aW9uX3BvaW50c19hdHRhY2goJ3RhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplJywgJ25vdGlj ZScpOwogCiBDUkVBVEUgU0NIRU1BIGNpY19yZXNldF9zbmFwOwogQ1JFQVRFIFRBQkxFIGNpY19y ZXNldF9zbmFwLnRibChpIGludCBwcmltYXJ5IGtleSwgaiBpbnQpOwpAQCAtNTMsNiArNTMsOSBA QCBEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CiAtLSBUaGUgc2Ft ZSBpbiBwYXJhbGxlbCBtb2RlCiBBTFRFUiBUQUJMRSBjaWNfcmVzZXRfc25hcC50YmwgU0VUIChw YXJhbGxlbF93b3JrZXJzPTIpOwogCistLSBEZXRhY2ggdG8ga2VlcCB0ZXN0IHN0YWJsZSwgc2lu Y2UgcGFyYWxsZWwgd29ya2VyIG1heSBjb21wbGV0ZSBzY2FuIGJlZm9yZSBsZWFkZXIKK1NFTEVD VCBpbmplY3Rpb25fcG9pbnRzX2RldGFjaCgnaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVj dGl2ZScpOworCiBDUkVBVEUgVU5JUVVFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jl c2V0X3NuYXAudGJsKGkpOwogUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3Nu YXAuaWR4OwogRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwotLSAK Mi40My4wCgo= --00000000000002ed91064c8c21cc--