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 1w9oBt-001mEv-2V for pgsql-hackers@arkaria.postgresql.org; Mon, 06 Apr 2026 17:56:50 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w9oBr-00AxcQ-0w for pgsql-hackers@arkaria.postgresql.org; Mon, 06 Apr 2026 17:56:47 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w9oBq-00AxcI-11 for pgsql-hackers@lists.postgresql.org; Mon, 06 Apr 2026 17:56:47 +0000 Received: from mail-lf1-x133.google.com ([2a00:1450:4864:20::133]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w9oBn-00000000tPx-311c for pgsql-hackers@lists.postgresql.org; Mon, 06 Apr 2026 17:56:45 +0000 Received: by mail-lf1-x133.google.com with SMTP id 2adb3069b0e04-59e4989dacdso4445598e87.1 for ; Mon, 06 Apr 2026 10:56:43 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1775498202; cv=none; d=google.com; s=arc-20240605; b=FlK9sUe1ZtVzCskiIayHckWy4WEFQGNOT7zaKAX14RjOndK9i1z3CAxcXMPSyBOi77 o5X+sYX9i7Lparw0l7LRxIsetNLCHI9RIC9xN/+j2NA9VA0eh/Aq4HTmkU08bfy3DlMm Sv6R35XMIkWE6S5u1FB9O4LiarxmPJvG9gn7QEB5Ed9RiE+z2tOtC4APDDIVnn1a16tZ AxZ5BgxZN5dgqf5F1SYPTl5bwQTsbMFHJutrprGkqh6e0ighJJ2SzCnOU/qRRiapJ5uR v8k3VZN42dgkikhI9HVAg/GRF+A2zzJa6ndAibsObZFoN/NAWqc5rvEiy3VcV+V59ZmS 8ZqQ== 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=QOOH8dtH72DQmJJw6+pmu3dAUh53nNvauKFGka6ztSQ=; fh=tBFpamE+6Amj1My6BTryAXJkuAmHGbhLFsdOr0Cj/S4=; b=NZeoGKsw8JfdBZ4+ZwzAUQKj/noylkfaBLWc3i09ugFSkSoahR59UvPpRqpurNjOZx 6Zt0jJUuGVgrCQrrLqzj63AaLE91Y3XTSxjHmHXo5HywdZKXdrmGjOfRacT4FDNvlPbw ORk2cWpbJpe/29tXp+GlaDzZHAn5LQQflbr16f3ZOB5tCdYFQWK3ZW8dzhWX2qo0ud5T upUkRwuThECLXYpNLO2RQPC/indOK8GGu+8hW1hTGmXfJ9yQaMrlY1O/dmdOeLfMzJqz D7OlHKuEOiln2wmISUfnqt+CwIdlB8/Z+VTcqyY/eW+vBzf36sOZzwDQJF2W8U9Q36gZ NpsQ==; 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=20251104; t=1775498202; x=1776103002; 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=QOOH8dtH72DQmJJw6+pmu3dAUh53nNvauKFGka6ztSQ=; b=BekqHmHkrkmCRkkxeIXQYjs/C2B/avjLOPNB1XF2UzhUJGSUxjz2GXW1wV3jp7QG8F aa7bQfpyimNfBdHSpevA3BOo9Qd4sZLVD3cE22xDFvh7PpHfecYPEB9nCYvekAFlPtZr qawh75/+Mz7nPVpFakqpUny9PTRlYLr5ci1+YVM+cOSQ3Uez/7xK1I5OEmCo4SElI9ig vt3sfuRUa5nZaFOxfWuxx8C5r/8aCzA1lnC1GdSo7uWvfsgHpI5uhCwtEmrn5YDw0pbm /TiV+CpWWScdtGeC2mZlbVUhqc8RemP8Ui+PJ6PlLI9t43TfqM8W/2NLmtYe+/mm65G6 jeBw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775498202; x=1776103002; 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=QOOH8dtH72DQmJJw6+pmu3dAUh53nNvauKFGka6ztSQ=; b=fr3uUQqKAbXorkNQhsXX1xMPzFravUBJhJvTnubGZQ3cExtMpW4zlnepBaGj35oInM BxqMLNrL+rEUkPbCwRIW8bJr8KH/Ri1hwixneWQFCr3w5hiKSq/cpVuGb0fU/VPyLF+d AAp0O8qqUjt5ytF/WNEBeEv56zCkVCqna0ApX28pM8oNw2btDTWT5k/2rKVnj+Kig/Hq Pk/dklc2AjO4xRHOk6VDoPepw25bdpJDo2KJWZEf26hJ5jTi5qRCIYcbYVWRODgE/Ion DtrpPGzQdOTX1jyPjqfLgqPejyupcRRVkTWTx9QchZlxwMRlD+aJqmzRjNKw2F6A3fcS bZgQ== X-Gm-Message-State: AOJu0Yzd31wBbWowE8Ds1CptT3GHfp6AA6np6Tev+vJXG6oZqmh91UGv 3PU4zM/Txtc/YOLtZaaEiBd8um4iPRfOfC+74WLt9gmgusKcTzskhaiZuE70Gr/uW1Pcx3TD7v2 cMypf0LQjVVCx50cU7igZhbhwOCs0yxc= X-Gm-Gg: AeBDiesgxp/qOt4J7B+72RU0FjmZobMOFYF3Xj0d4at24eKg3QMVjrs3CWV14RbR57P IjgLaSOdbR4DUe0evCCDhF0ZTR6F+H3HBLpllMRT3rBQX84LDy1WTineKTkPVyiPdBFAaVJdAb/ rQFF9qB+yaRUhhBa1LQOuZyzInzJ2gUxf+Ef7LaDqTWGJaOEAGI0QUDZg2JhgvkVmASaOaP6Sdg jYCfjVf1Y/Wz9+RbZSRTXnagI3czB0cedM127dvNVROCuWw8ktMcLF/mo/7qVj/hiqg1IWxAvgj Y99ewEWdrHrPqsCOABZHNOC/6Ajc3QUv5Bm6ToOdtigdkTmVxglDba01+KgPX9DFgaWk X-Received: by 2002:a05:6512:1283:b0:5a2:7c1c:74a with SMTP id 2adb3069b0e04-5a3375847e9mr5135415e87.29.1775498202014; Mon, 06 Apr 2026 10:56:42 -0700 (PDT) MIME-Version: 1.0 References: <202603201104.4wwpevsp4w57@alvherre.pgsql> In-Reply-To: From: Mihail Nikalayeu Date: Mon, 6 Apr 2026 19:55:00 +0200 X-Gm-Features: AQROBzBrZWfJbeZSSLgZ5sQcZA44u9H-XbRKikOY8H8HabAgfM3zYrA-PmN-MQg Message-ID: Subject: Re: Resetting snapshots during the first phase of [CREATE |RE]INDEX CONCURRENTLY To: =?UTF-8?Q?=C3=81lvaro_Herrera?= Cc: PostgreSQL Hackers , Matthias van de Meent , Antonin Houska , Sergey Sargsyan , Hannu Krosing Content-Type: multipart/mixed; boundary="000000000000a18566064ece63cb" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000a18566064ece63cb Content-Type: text/plain; charset="UTF-8" Hello! 0) Rebased 1) Added REPEATABLE READ isolation level 2) Some GUGs for developers 3) Some small refactorings --000000000000a18566064ece63cb Content-Type: application/octet-stream; name="v5-0001-Add-stress-tests-for-concurrent-index-builds.patch" Content-Disposition: attachment; filename="v5-0001-Add-stress-tests-for-concurrent-index-builds.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnnfi1kq0 RnJvbSA5ZDk5YjU0NWZiYjJmMmVlOTM4ODUxYzE1NGEzOTJiMmNiZTk0ODUwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogU2F0LCAzMCBOb3YgMjAyNCAxNjoyNDoyMCArMDEwMApTdWJqZWN0OiBb UEFUQ0ggdjUgMS80XSBBZGQgc3RyZXNzIHRlc3RzIGZvciBjb25jdXJyZW50IGluZGV4IGJ1aWxk cwoKSW50cm9kdWNlIHN0cmVzcyB0ZXN0cyBmb3IgY29uY3VycmVudCBpbmRleCBvcGVyYXRpb25z OgotIHRlc3QgY29uY3VycmVudCBpbnNlcnRzL3VwZGF0ZXMgZHVyaW5nIENSRUFURS9SRUlOREVY IElOREVYIENPTkNVUlJFTlRMWQotIGNvdmVyIHZhcmlvdXMgaW5kZXggdHlwZXMgKGJ0cmVlLCBn aW4sIGdpc3QsIGJyaW4sIGhhc2gsIHNwZ2lzdCkKLSB0ZXN0IHVuaXF1ZSBhbmQgbm9uLXVuaXF1 ZSBpbmRleGVzCi0gdGVzdCB3aXRoIGV4cHJlc3Npb25zIGFuZCBwcmVkaWNhdGVzCi0gdGVzdCBi b3RoIHBhcmFsbGVsIGFuZCBub24tcGFyYWxsZWwgb3BlcmF0aW9ucwoKVGhlc2UgdGVzdHMgdmVy aWZ5IHRoZSBiZWhhdmlvciBvZiB0aGUgZm9sbG93aW5nIGNvbW1pdHMuCi0tLQogc3JjL2Jpbi9w Z19hbWNoZWNrL21lc29uLmJ1aWxkICB8ICAgMSArCiBzcmMvYmluL3BnX2FtY2hlY2svdC8wMDZf Y2ljLnBsIHwgMjkzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiAyIGZpbGVzIGNo YW5nZWQsIDI5NCBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2Jpbi9wZ19h bWNoZWNrL3QvMDA2X2NpYy5wbAoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfYW1jaGVjay9tZXNv bi5idWlsZCBiL3NyYy9iaW4vcGdfYW1jaGVjay9tZXNvbi5idWlsZAppbmRleCA1OTJjZWY3NGVj Yi4uNTFhNjJkY2NiN2IgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfYW1jaGVjay9tZXNvbi5idWls ZAorKysgYi9zcmMvYmluL3BnX2FtY2hlY2svbWVzb24uYnVpbGQKQEAgLTI4LDYgKzI4LDcgQEAg dGVzdHMgKz0gewogICAgICAgJ3QvMDAzX2NoZWNrLnBsJywKICAgICAgICd0LzAwNF92ZXJpZnlf aGVhcGFtLnBsJywKICAgICAgICd0LzAwNV9vcGNsYXNzX2RhbWFnZS5wbCcsCisgICAgICAndC8w MDZfY2ljLnBsJywKICAgICBdLAogICB9LAogfQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19hbWNo ZWNrL3QvMDA2X2NpYy5wbCBiL3NyYy9iaW4vcGdfYW1jaGVjay90LzAwNl9jaWMucGwKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmRkN2ExZWZmMGVmCi0tLSAvZGV2L251 bGwKKysrIGIvc3JjL2Jpbi9wZ19hbWNoZWNrL3QvMDA2X2NpYy5wbApAQCAtMCwwICsxLDI5MyBA QAorIyBDb3B5cmlnaHQgKGMpIDIwMjYsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdy b3VwCisKKyMgVGVzdCBSRUlOREVYIENPTkNVUlJFTlRMWSB3aXRoIGNvbmN1cnJlbnQgbW9kaWZp Y2F0aW9ucyBhbmQgSE9UIHVwZGF0ZXMKK3VzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3MgRkFUQUwg PT4gJ2FsbCc7CisKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwordXNlIFBvc3RncmVT UUw6OlRlc3Q6OlV0aWxzOwordXNlIFRlc3Q6Ok1vcmU7CisKK3VzZSBjb25zdGFudCBTVFJFU1Nf UEdCRU5DSF9DTElFTlRTID0+IDMwOwordXNlIGNvbnN0YW50IFNUUkVTU19QR0JFTkNIX0pPQlMg PT4gODsKK3VzZSBjb25zdGFudCBTVFJFU1NfUEdCRU5DSF9UUkFOU0FDVElPTlMgPT4gMTAwMDA7 Cit1c2UgY29uc3RhbnQgU1RSRVNTX01BWF9TTEVFUF9NUyA9PiAxMDsKKwordXNlIGNvbnN0YW50 IERFRkFVTFRfUEdCRU5DSF9DTElFTlRTID0+IDE1OwordXNlIGNvbnN0YW50IERFRkFVTFRfUEdC RU5DSF9KT0JTID0+IDQ7Cit1c2UgY29uc3RhbnQgREVGQVVMVF9QR0JFTkNIX1RSQU5TQUNUSU9O UyA9PiA1MDA7Cit1c2UgY29uc3RhbnQgREVGQVVMVF9NQVhfU0xFRVBfTVMgPT4gMTsKKworVGVz dDo6TW9yZS0+YnVpbGRlci0+dG9kb19zdGFydCgnZmlsZXN5c3RlbSBidWcnKQorICBpZiBQb3N0 Z3JlU1FMOjpUZXN0OjpVdGlsczo6aGFzX3dhbF9yZWFkX2J1ZzsKKworbXkgJG5vZGU7CitteSAk cGdfdGVzdF9leHRyYSA9ICRFTlZ7UEdfVEVTVF9FWFRSQX0gLy8gJyc7CitteSAkaXNfc3RyZXNz ID0gJHBnX3Rlc3RfZXh0cmEgPX4gL1xic3RyZXNzXGIvID8gMSA6IDA7CitteSAkcGdiZW5jaF9j bGllbnRzID0KKyAgJGlzX3N0cmVzcyA/IFNUUkVTU19QR0JFTkNIX0NMSUVOVFMgOiBERUZBVUxU X1BHQkVOQ0hfQ0xJRU5UUzsKK215ICRwZ2JlbmNoX2pvYnMgPSAkaXNfc3RyZXNzID8gU1RSRVNT X1BHQkVOQ0hfSk9CUyA6IERFRkFVTFRfUEdCRU5DSF9KT0JTOworbXkgJHBnYmVuY2hfdHJhbnNh Y3Rpb25zID0KKyAgJGlzX3N0cmVzcyA/IFNUUkVTU19QR0JFTkNIX1RSQU5TQUNUSU9OUyA6IERF RkFVTFRfUEdCRU5DSF9UUkFOU0FDVElPTlM7CitteSAkbWF4X3NsZWVwX21zID0gJGlzX3N0cmVz cyA/IFNUUkVTU19NQVhfU0xFRVBfTVMgOiBERUZBVUxUX01BWF9TTEVFUF9NUzsKK215ICRwZ2Jl bmNoX29wdGlvbnMgPSBzcHJpbnRmKAorCSctLW5vLXZhY3V1bSAtLWNsaWVudD0lZCAtLWpvYnM9 JWQgLS1leGl0LW9uLWFib3J0IC0tdHJhbnNhY3Rpb25zPSVkJywKKwkkcGdiZW5jaF9jbGllbnRz LAorCSRwZ2JlbmNoX2pvYnMsCisJJHBnYmVuY2hfdHJhbnNhY3Rpb25zKTsKK215ICRub19ob3Qg PSAkaXNfc3RyZXNzID8gaW50KHJhbmQoMikpIDogMDsKKworcHJpbnQoCisJCXNwcmludGYoCisJ CSdzZXR0aW5nczogUEdfVEVTVF9FWFRSQT0lcyBzdHJlc3M9JWQgY2xpZW50cz0lZCBqb2JzPSVk IHRyYW5zYWN0aW9ucz0lZCBtYXhfc2xlZXBfbXM9JWQgbm9faG90PSVkJywKKwkJZGVmaW5lZCgk RU5We1BHX1RFU1RfRVhUUkF9KQorCQk/ICgkcGdfdGVzdF9leHRyYSBlcSAnJyA/ICcoZW1wdHkp JyA6ICRwZ190ZXN0X2V4dHJhKQorCQk6ICcodW5kZWYpJywKKwkJJGlzX3N0cmVzcywKKwkJJHBn YmVuY2hfY2xpZW50cywKKwkJJHBnYmVuY2hfam9icywKKwkJJHBnYmVuY2hfdHJhbnNhY3Rpb25z LAorCQkkbWF4X3NsZWVwX21zLAorCQkkbm9faG90KSk7CitwcmludCAiXG4iOworCisjCisjIFRl c3Qgc2V0LXVwCisjCiskbm9kZSA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygnUkNf dGVzdCcpOworJG5vZGUtPmluaXQ7Ciskbm9kZS0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29u ZicsCisJJ2xvY2tfdGltZW91dCA9ICcgLiAoMTAwMCAqICRQb3N0Z3JlU1FMOjpUZXN0OjpVdGls czo6dGltZW91dF9kZWZhdWx0KSk7Ciskbm9kZS0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29u ZicsICdmc3luYyA9IG9mZicpOworJG5vZGUtPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYn LCAnbWFpbnRlbmFuY2Vfd29ya19tZW0gPSAzMk1CJyk7ICMgdG8gYXZvaWQgT09NCiskbm9kZS0+ YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsICdzaGFyZWRfYnVmZmVycyA9IDMyTUInKTsg IyB0byBhdm9pZCBPT00KKyRub2RlLT5zdGFydDsKKyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywgcShDUkVBVEUgRVhURU5TSU9OIGFtY2hlY2spKTsKKyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywgcShDUkVBVEUgVU5MT0dHRUQgVEFCTEUgdGJsKGkgaW50IHByaW1hcnkga2V5LAorCQkJ CQkJCQljMSBtb25leSBkZWZhdWx0IDAsIGMyIG1vbmV5IGRlZmF1bHQgMCwKKwkJCQkJCQkJYzMg bW9uZXkgZGVmYXVsdCAwLCB1cGRhdGVkX2F0IHRpbWVzdGFtcCwKKwkJCQkJCQkJaWEgaW50NFtd LCBwIHBvaW50KSkpOworCitpZiAoJG5vX2hvdCkgeyAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsIHEoQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gdGJsKGksIHVwZGF0ZWRfYXQp OykpOyB9CisKKyMgY3JlYXRlIHNlcXVlbmNlCiskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs IHEoQ1JFQVRFIFVOTE9HR0VEIFNFUVVFTkNFIGluX3Jvd19yZWJ1aWxkIFNUQVJUIDEgSU5DUkVN RU5UIDE7KSk7Ciskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHEoU0VMRUNUIG5leHR2YWwo J2luX3Jvd19yZWJ1aWxkJyk7KSk7CisKKyMgQ3JlYXRlIGhlbHBlciBmdW5jdGlvbnMgZm9yIHBy ZWRpY2F0ZSB0ZXN0cworJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxKAorCUNSRUFURSBG VU5DVElPTiBwcmVkaWNhdGVfc3RhYmxlKCkgUkVUVVJOUyBib29sIElNTVVUQUJMRQorCUxBTkdV QUdFIHBscGdzcWwgQVMgJCQKKwlCRUdJTgorCQlFWEVDVVRFICdTRUxFQ1QgdHhpZF9jdXJyZW50 KCknOworCQlSRVRVUk4gdHJ1ZTsKKwlFTkQ7ICQkOworKSk7CisKKyRub2RlLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywgcSgKKwlDUkVBVEUgRlVOQ1RJT04gcHJlZGljYXRlX2NvbnN0KGludGVnZXIp IFJFVFVSTlMgYm9vbCBJTU1VVEFCTEUKKwlMQU5HVUFHRSBwbHBnc3FsIEFTICQkCisJQkVHSU4K KwkJUkVUVVJOIE1PRCgkMSwgMikgPSAwOworCUVORDsgJCQ7CispKTsKKworIyBSdW4gQ0lDL1JJ QyBpbiBkaWZmZXJlbnQgb3B0aW9ucyBjb25jdXJyZW50bHkgd2l0aCB1cHNlcnRzCiskbm9kZS0+ cGdiZW5jaCgKKwkkcGdiZW5jaF9vcHRpb25zLAorCTAsCisJW3Fye2FjdHVhbGx5IHByb2Nlc3Nl ZH1dLAorCVtxcnteJH1dLAorCSdjb25jdXJyZW50IG9wZXJhdGlvbnMgd2l0aCBSRUlOREVYL0NS RUFURSBJTkRFWCBDT05DVVJSRU5UTFknLAorCXsKKwkJJ2NvbmN1cnJlbnRfb3BzJyA9PiBzcHJp bnRmKHEoCisJCQlTRVQgZGVidWdfcGFyYWxsZWxfcXVlcnkgPSBvZmY7IC0tIHRoaXMgaXMgYmVj YXVzZSBwcmVkaWNhdGVfc3RhYmxlIGltcGxlbWVudGF0aW9uCisJCQlTRUxFQ1QgcGdfdHJ5X2Fk dmlzb3J5X2xvY2soNDIpOjppbnRlZ2VyIEFTIGdvdGxvY2sgXGdzZXQKKwkJCVxpZiA6Z290bG9j aworCQkJCVNFTEVDVCBuZXh0dmFsKCdpbl9yb3dfcmVidWlsZCcpIEFTIGxhc3RfdmFsdWUgXGdz ZXQKKwkJCQlcc2V0IHZhcmlhbnQgcmFuZG9tKDAsIDUpCisJCQkJXHNldCBwYXJhbGxlbHMgcmFu ZG9tKDAsIDQpCisJCQkJXHNldCB1c2VfcnIgcmFuZG9tKDAsIDkpCisJCQkJXGlmIDpsYXN0X3Zh bHVlIDwgMworCQkJCQlBTFRFUiBUQUJMRSB0YmwgU0VUIChwYXJhbGxlbF93b3JrZXJzPTpwYXJh bGxlbHMpOworCQkJCQlcaWYgOnVzZV9yciA9IDAKKwkJCQkJCVNFVCBkZWZhdWx0X3RyYW5zYWN0 aW9uX2lzb2xhdGlvbiA9ICdyZXBlYXRhYmxlIHJlYWQnOworCQkJCQlcZW5kaWYKKwkJCQkJXGlm IDp2YXJpYW50ID0gMAorCQkJCQkJQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBuZXdfaWR4IE9O IHRibChpLCB1cGRhdGVkX2F0KTsKKwkJCQkJXGVsaWYgOnZhcmlhbnQgPSAxCisJCQkJCQlDUkVB VEUgSU5ERVggQ09OQ1VSUkVOVExZIG5ld19pZHggT04gdGJsKGksIHVwZGF0ZWRfYXQpIFdIRVJF IHByZWRpY2F0ZV9zdGFibGUoKTsKKwkJCQkJXGVsaWYgOnZhcmlhbnQgPSAyCisJCQkJCQlDUkVB VEUgSU5ERVggQ09OQ1VSUkVOVExZIG5ld19pZHggT04gdGJsKGksIHVwZGF0ZWRfYXQpIFdIRVJF IE1PRChpLCAyKSA9IDA7CisJCQkJCVxlbGlmIDp2YXJpYW50ID0gMworCQkJCQkJQ1JFQVRFIElO REVYIENPTkNVUlJFTlRMWSBuZXdfaWR4IE9OIHRibChpLCB1cGRhdGVkX2F0KSBXSEVSRSBwcmVk aWNhdGVfY29uc3QoaSk7CisJCQkJCVxlbGlmIDp2YXJpYW50ID0gNAorCQkJCQkJQ1JFQVRFIElO REVYIENPTkNVUlJFTlRMWSBuZXdfaWR4IE9OIHRibChwcmVkaWNhdGVfY29uc3QoaSkpOworCQkJ CQlcZWxpZiA6dmFyaWFudCA9IDUKKwkJCQkJCUNSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgbmV3 X2lkeCBPTiB0YmwoaSwgcHJlZGljYXRlX2NvbnN0KGkpLCB1cGRhdGVkX2F0KSBXSEVSRSBwcmVk aWNhdGVfY29uc3QoaSk7CisJCQkJCVxlbmRpZgorCQkJCQlcc2V0IHNsZWVwX21zIHJhbmRvbSgw LCAlZCkKKwkJCQkJXHNsZWVwIDpzbGVlcF9tcyBtcworCQkJCQlTRUxFQ1QgYnRfaW5kZXhfY2hl Y2soJ25ld19pZHgnLCBoZWFwYWxsaW5kZXhlZCA9PiB0cnVlLCBjaGVja3VuaXF1ZSA9PiB0cnVl KTsKKwkJCQkJUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgbmV3X2lkeDsKKwkJCQkJXHNldCBz bGVlcF9tcyByYW5kb20oMCwgJWQpCisJCQkJCVxzbGVlcCA6c2xlZXBfbXMgbXMKKwkJCQkJU0VM RUNUIGJ0X2luZGV4X2NoZWNrKCduZXdfaWR4JywgaGVhcGFsbGluZGV4ZWQgPT4gdHJ1ZSwgY2hl Y2t1bmlxdWUgPT4gdHJ1ZSk7CisJCQkJCURST1AgSU5ERVggQ09OQ1VSUkVOVExZIG5ld19pZHg7 CisJCQkJCVJFU0VUIGRlZmF1bHRfdHJhbnNhY3Rpb25faXNvbGF0aW9uOworCQkJCVxlbmRpZgor CQkJCVNFTEVDVCBwZ19hZHZpc29yeV91bmxvY2soNDIpOworCQkJXGVsc2UKKwkJCQlcc2V0IG51 bSByYW5kb20oMTAwMCwgMTAwMDAwKQorCQkJCUJFR0lOOworCQkJCUlOU0VSVCBJTlRPIHRibCBW QUxVRVMoZmxvb3IocmFuZG9tKCkqOm51bSksMCwwLDAsbm93KCksQVJSQVlbZmxvb3IocmFuZG9t KCkqMTAwKTo6aW50XSxwb2ludChyYW5kb20oKSxyYW5kb20oKSkpCisJCQkJCU9OIENPTkZMSUNU KGkpIERPIFVQREFURSBTRVQgdXBkYXRlZF9hdCA9IG5vdygpLCBpYSA9IEFSUkFZW2Zsb29yKHJh bmRvbSgpKjEwMCk6OmludF0sIHAgPSBwb2ludChyYW5kb20oKSxyYW5kb20oKSk7CisJCQkJSU5T RVJUIElOVE8gdGJsIFZBTFVFUyhmbG9vcihyYW5kb20oKSo6bnVtKSwwLDAsMCxub3coKSxBUlJB WVtmbG9vcihyYW5kb20oKSoxMDApOjppbnRdLHBvaW50KHJhbmRvbSgpLHJhbmRvbSgpKSkKKwkJ CQkJT04gQ09ORkxJQ1QoaSkgRE8gVVBEQVRFIFNFVCB1cGRhdGVkX2F0ID0gbm93KCksIGlhID0g QVJSQVlbZmxvb3IocmFuZG9tKCkqMTAwKTo6aW50XSwgcCA9IHBvaW50KHJhbmRvbSgpLHJhbmRv bSgpKTsKKwkJCQlJTlNFUlQgSU5UTyB0YmwgVkFMVUVTKGZsb29yKHJhbmRvbSgpKjpudW0pLDAs MCwwLG5vdygpLEFSUkFZW2Zsb29yKHJhbmRvbSgpKjEwMCk6OmludF0scG9pbnQocmFuZG9tKCks cmFuZG9tKCkpKQorCQkJCQlPTiBDT05GTElDVChpKSBETyBVUERBVEUgU0VUIHVwZGF0ZWRfYXQg PSBub3coKSwgaWEgPSBBUlJBWVtmbG9vcihyYW5kb20oKSoxMDApOjppbnRdLCBwID0gcG9pbnQo cmFuZG9tKCkscmFuZG9tKCkpOworCQkJCUlOU0VSVCBJTlRPIHRibCBWQUxVRVMoZmxvb3IocmFu ZG9tKCkqOm51bSksMCwwLDAsbm93KCksQVJSQVlbZmxvb3IocmFuZG9tKCkqMTAwKTo6aW50XSxw b2ludChyYW5kb20oKSxyYW5kb20oKSkpCisJCQkJCU9OIENPTkZMSUNUKGkpIERPIFVQREFURSBT RVQgdXBkYXRlZF9hdCA9IG5vdygpLCBpYSA9IEFSUkFZW2Zsb29yKHJhbmRvbSgpKjEwMCk6Omlu dF0sIHAgPSBwb2ludChyYW5kb20oKSxyYW5kb20oKSk7CisJCQkJSU5TRVJUIElOVE8gdGJsIFZB TFVFUyhmbG9vcihyYW5kb20oKSo6bnVtKSwwLDAsMCxub3coKSxBUlJBWVtmbG9vcihyYW5kb20o KSoxMDApOjppbnRdLHBvaW50KHJhbmRvbSgpLHJhbmRvbSgpKSkKKwkJCQkJT04gQ09ORkxJQ1Qo aSkgRE8gVVBEQVRFIFNFVCB1cGRhdGVkX2F0ID0gbm93KCksIGlhID0gQVJSQVlbZmxvb3IocmFu ZG9tKCkqMTAwKTo6aW50XSwgcCA9IHBvaW50KHJhbmRvbSgpLHJhbmRvbSgpKTsKKwkJCQlTRUxF Q1Qgc2V0dmFsKCdpbl9yb3dfcmVidWlsZCcsIDEpOworCQkJCUNPTU1JVDsKKwkJCVxlbmRpZgor CQkJKSwgJG1heF9zbGVlcF9tcywgJG1heF9zbGVlcF9tcykKKwl9KTsKKworJG5vZGUtPnNhZmVf cHNxbCgncG9zdGdyZXMnLCBxKFRSVU5DQVRFIFRBQkxFIHRibDspKTsKKworIyBSdW4gQ0lDL1JJ QyBmb3IgdW5pcXVlIGluZGV4IGNvbmN1cnJlbnRseSB3aXRoIHVwc2VydHMKKyRub2RlLT5wZ2Jl bmNoKAorCSRwZ2JlbmNoX29wdGlvbnMsCisJMCwKKwlbcXJ7YWN0dWFsbHkgcHJvY2Vzc2VkfV0s CisJW3Fye14kfV0sCisJJ2NvbmN1cnJlbnQgb3BlcmF0aW9ucyB3aXRoIFJFSU5ERVgvQ1JFQVRF IElOREVYIENPTkNVUlJFTlRMWSBmb3IgdW5pcXVlIEJUUkVFJywKKwl7CisJCSdjb25jdXJyZW50 X29wc191bmlxdWVfaWR4JyA9PiBzcHJpbnRmKHEoCisJCQlTRUxFQ1QgcGdfdHJ5X2Fkdmlzb3J5 X2xvY2soNDIpOjppbnRlZ2VyIEFTIGdvdGxvY2sgXGdzZXQKKwkJCVxpZiA6Z290bG9jaworCQkJ CVNFTEVDVCBuZXh0dmFsKCdpbl9yb3dfcmVidWlsZCcpIEFTIGxhc3RfdmFsdWUgXGdzZXQKKwkJ CQlcc2V0IHBhcmFsbGVscyByYW5kb20oMCwgNCkKKwkJCQlcc2V0IHVzZV9yciByYW5kb20oMCwg OSkKKwkJCQlcaWYgOmxhc3RfdmFsdWUgPCAzCisJCQkJCUFMVEVSIFRBQkxFIHRibCBTRVQgKHBh cmFsbGVsX3dvcmtlcnM9OnBhcmFsbGVscyk7CisJCQkJCVxpZiA6dXNlX3JyID0gMAorCQkJCQkJ U0VUIGRlZmF1bHRfdHJhbnNhY3Rpb25faXNvbGF0aW9uID0gJ3JlcGVhdGFibGUgcmVhZCc7CisJ CQkJCVxlbmRpZgorCQkJCQlDUkVBVEUgVU5JUVVFIElOREVYIENPTkNVUlJFTlRMWSBuZXdfaWR4 IE9OIHRibChpKTsKKwkJCQkJXHNldCBzbGVlcF9tcyByYW5kb20oMCwgJWQpCisJCQkJCVxzbGVl cCA6c2xlZXBfbXMgbXMKKwkJCQkJU0VMRUNUIGJ0X2luZGV4X2NoZWNrKCduZXdfaWR4JywgaGVh cGFsbGluZGV4ZWQgPT4gdHJ1ZSwgY2hlY2t1bmlxdWUgPT4gdHJ1ZSk7CisJCQkJCVJFSU5ERVgg SU5ERVggQ09OQ1VSUkVOVExZIG5ld19pZHg7CisJCQkJCVxzZXQgc2xlZXBfbXMgcmFuZG9tKDAs ICVkKQorCQkJCQlcc2xlZXAgOnNsZWVwX21zIG1zCisJCQkJCVNFTEVDVCBidF9pbmRleF9jaGVj aygnbmV3X2lkeCcsIGhlYXBhbGxpbmRleGVkID0+IHRydWUsIGNoZWNrdW5pcXVlID0+IHRydWUp OworCQkJCQlEUk9QIElOREVYIENPTkNVUlJFTlRMWSBuZXdfaWR4OworCQkJCQlSRVNFVCBkZWZh dWx0X3RyYW5zYWN0aW9uX2lzb2xhdGlvbjsKKwkJCQlcZW5kaWYKKwkJCQlTRUxFQ1QgcGdfYWR2 aXNvcnlfdW5sb2NrKDQyKTsKKwkJCVxlbHNlCisJCQkJXHNldCBudW0gcmFuZG9tKDEsIHBvd2Vy KDEwLCByYW5kb20oMSwgNSkpKQorCQkJCUlOU0VSVCBJTlRPIHRibCBWQUxVRVMoZmxvb3IocmFu ZG9tKCkqOm51bSksMCwwLDAsbm93KCksQVJSQVlbZmxvb3IocmFuZG9tKCkqMTAwKTo6aW50XSxw b2ludChyYW5kb20oKSxyYW5kb20oKSkpCisJCQkJCU9OIENPTkZMSUNUKGkpIERPIFVQREFURSBT RVQgdXBkYXRlZF9hdCA9IG5vdygpLCBpYSA9IEFSUkFZW2Zsb29yKHJhbmRvbSgpKjEwMCk6Omlu dF0sIHAgPSBwb2ludChyYW5kb20oKSxyYW5kb20oKSk7CisJCQkJU0VMRUNUIHNldHZhbCgnaW5f cm93X3JlYnVpbGQnLCAxKTsKKwkJCVxlbmRpZgorCQkJKSwgJG1heF9zbGVlcF9tcywgJG1heF9z bGVlcF9tcykKKwl9KTsKKworJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxKFRSVU5DQVRF IFRBQkxFIHRibDspKTsKKworIyBSdW4gQ0lDL1JJQyBmb3IgR0lOIHdpdGggdXBzZXJ0cworJG5v ZGUtPnBnYmVuY2goCisJJHBnYmVuY2hfb3B0aW9ucywKKwkwLAorCVtxcnthY3R1YWxseSBwcm9j ZXNzZWR9XSwKKwlbcXJ7XiR9XSwKKwknY29uY3VycmVudCBvcGVyYXRpb25zIHdpdGggUkVJTkRF WC9DUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGZvciBHSU4nLAorCXsKKwkJJ2NvbmN1cnJlbnRf b3BzX2dpbl9pZHgnID0+IHNwcmludGYocSgKKwkJCVNFTEVDVCBwZ190cnlfYWR2aXNvcnlfbG9j ayg0Mik6OmludGVnZXIgQVMgZ290bG9jayBcZ3NldAorCQkJXGlmIDpnb3Rsb2NrCisJCQkJU0VM RUNUIG5leHR2YWwoJ2luX3Jvd19yZWJ1aWxkJykgQVMgbGFzdF92YWx1ZSBcZ3NldAorCQkJCVxz ZXQgcGFyYWxsZWxzIHJhbmRvbSgwLCA0KQorCQkJCVxzZXQgdXNlX3JyIHJhbmRvbSgwLCA5KQor CQkJCVxpZiA6bGFzdF92YWx1ZSA8IDMKKwkJCQkJQUxURVIgVEFCTEUgdGJsIFNFVCAocGFyYWxs ZWxfd29ya2Vycz06cGFyYWxsZWxzKTsKKwkJCQkJXGlmIDp1c2VfcnIgPSAwCisJCQkJCQlTRVQg ZGVmYXVsdF90cmFuc2FjdGlvbl9pc29sYXRpb24gPSAncmVwZWF0YWJsZSByZWFkJzsKKwkJCQkJ XGVuZGlmCisJCQkJCUNSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgbmV3X2lkeCBPTiB0YmwgVVNJ TkcgR0lOIChpYSk7CisJCQkJCVxzZXQgc2xlZXBfbXMgcmFuZG9tKDAsICVkKQorCQkJCQlcc2xl ZXAgOnNsZWVwX21zIG1zCisJCQkJCVNFTEVDVCBnaW5faW5kZXhfY2hlY2soJ25ld19pZHgnKTsK KwkJCQkJUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgbmV3X2lkeDsKKwkJCQkJXHNldCBzbGVl cF9tcyByYW5kb20oMCwgJWQpCisJCQkJCVxzbGVlcCA6c2xlZXBfbXMgbXMKKwkJCQkJU0VMRUNU IGdpbl9pbmRleF9jaGVjaygnbmV3X2lkeCcpOworCQkJCQlEUk9QIElOREVYIENPTkNVUlJFTlRM WSBuZXdfaWR4OworCQkJCQlSRVNFVCBkZWZhdWx0X3RyYW5zYWN0aW9uX2lzb2xhdGlvbjsKKwkJ CQlcZW5kaWYKKwkJCQlTRUxFQ1QgcGdfYWR2aXNvcnlfdW5sb2NrKDQyKTsKKwkJCVxlbHNlCisJ CQkJXHNldCBudW0gcmFuZG9tKDEsIHBvd2VyKDEwLCByYW5kb20oMSwgNSkpKQorCQkJCUlOU0VS VCBJTlRPIHRibCBWQUxVRVMoZmxvb3IocmFuZG9tKCkqOm51bSksMCwwLDAsbm93KCksQVJSQVlb Zmxvb3IocmFuZG9tKCkqMTAwKTo6aW50XSxwb2ludChyYW5kb20oKSxyYW5kb20oKSkpCisJCQkJ CU9OIENPTkZMSUNUKGkpIERPIFVQREFURSBTRVQgdXBkYXRlZF9hdCA9IG5vdygpLCBpYSA9IEFS UkFZW2Zsb29yKHJhbmRvbSgpKjEwMCk6OmludF0sIHAgPSBwb2ludChyYW5kb20oKSxyYW5kb20o KSk7CisJCQkJU0VMRUNUIHNldHZhbCgnaW5fcm93X3JlYnVpbGQnLCAxKTsKKwkJCVxlbmRpZgor CQkJKSwgJG1heF9zbGVlcF9tcywgJG1heF9zbGVlcF9tcykKKwl9KTsKKworJG5vZGUtPnNhZmVf cHNxbCgncG9zdGdyZXMnLCBxKFRSVU5DQVRFIFRBQkxFIHRibDspKTsKKworIyBSdW4gQ0lDL1JJ QyBmb3IgR0lTVC9CUklOL0hBU0gvU1BHSVNUIGluZGV4IGNvbmN1cnJlbnRseSB3aXRoIHVwc2Vy dHMKKyRub2RlLT5wZ2JlbmNoKAorCSRwZ2JlbmNoX29wdGlvbnMsCisJMCwKKwlbcXJ7YWN0dWFs bHkgcHJvY2Vzc2VkfV0sCisJW3Fye14kfV0sCisJJ2NvbmN1cnJlbnQgb3BlcmF0aW9ucyB3aXRo IFJFSU5ERVgvQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBmb3IgR0lTVC9CUklOL0hBU0gvU1BH SVNUJywKKwl7CisJCSdjb25jdXJyZW50X29wc19vdGhlcl9pZHgnID0+IHNwcmludGYocSgKKwkJ CVNFTEVDVCBwZ190cnlfYWR2aXNvcnlfbG9jayg0Mik6OmludGVnZXIgQVMgZ290bG9jayBcZ3Nl dAorCQkJXGlmIDpnb3Rsb2NrCisJCQkJU0VMRUNUIG5leHR2YWwoJ2luX3Jvd19yZWJ1aWxkJykg QVMgbGFzdF92YWx1ZSBcZ3NldAorCQkJCVxzZXQgcGFyYWxsZWxzIHJhbmRvbSgwLCA0KQorCQkJ CVxzZXQgdXNlX3JyIHJhbmRvbSgwLCA5KQorCQkJCVxpZiA6bGFzdF92YWx1ZSA8IDMKKwkJCQkJ QUxURVIgVEFCTEUgdGJsIFNFVCAocGFyYWxsZWxfd29ya2Vycz06cGFyYWxsZWxzKTsKKwkJCQkJ XGlmIDp1c2VfcnIgPSAwCisJCQkJCQlTRVQgZGVmYXVsdF90cmFuc2FjdGlvbl9pc29sYXRpb24g PSAncmVwZWF0YWJsZSByZWFkJzsKKwkJCQkJXGVuZGlmCisJCQkJCVxzZXQgdmFyaWFudCByYW5k b20oMCwgMykKKwkJCQkJXGlmIDp2YXJpYW50ID0gMAorCQkJCQkJQ1JFQVRFIElOREVYIENPTkNV UlJFTlRMWSBuZXdfaWR4IE9OIHRibCBVU0lORyBHSVNUIChwKTsKKwkJCQkJXGVsaWYgOnZhcmlh bnQgPSAxCisJCQkJCQlDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIG5ld19pZHggT04gdGJsIFVT SU5HIEJSSU4gKHVwZGF0ZWRfYXQpOworCQkJCQlcZWxpZiA6dmFyaWFudCA9IDIKKwkJCQkJCUNS RUFURSBJTkRFWCBDT05DVVJSRU5UTFkgbmV3X2lkeCBPTiB0YmwgVVNJTkcgSEFTSCAodXBkYXRl ZF9hdCk7CisJCQkJCVxlbGlmIDp2YXJpYW50ID0gMworCQkJCQkJQ1JFQVRFIElOREVYIENPTkNV UlJFTlRMWSBuZXdfaWR4IE9OIHRibCBVU0lORyBTUEdJU1QgKHApOworCQkJCQlcZW5kaWYKKwkJ CQkJXHNldCBzbGVlcF9tcyByYW5kb20oMCwgJWQpCisJCQkJCVxzbGVlcCA6c2xlZXBfbXMgbXMK KwkJCQkJUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgbmV3X2lkeDsKKwkJCQkJXHNldCBzbGVl cF9tcyByYW5kb20oMCwgJWQpCisJCQkJCVxzbGVlcCA6c2xlZXBfbXMgbXMKKwkJCQkJRFJPUCBJ TkRFWCBDT05DVVJSRU5UTFkgbmV3X2lkeDsKKwkJCQkJUkVTRVQgZGVmYXVsdF90cmFuc2FjdGlv bl9pc29sYXRpb247CisJCQkJXGVuZGlmCisJCQkJU0VMRUNUIHBnX2Fkdmlzb3J5X3VubG9jayg0 Mik7CisJCQlcZWxzZQorCQkJCVxzZXQgbnVtIHJhbmRvbSgxLCBwb3dlcigxMCwgcmFuZG9tKDEs IDUpKSkKKwkJCQlJTlNFUlQgSU5UTyB0YmwgVkFMVUVTKGZsb29yKHJhbmRvbSgpKjpudW0pLDAs MCwwLG5vdygpLEFSUkFZW2Zsb29yKHJhbmRvbSgpKjEwMCk6OmludF0scG9pbnQocmFuZG9tKCks cmFuZG9tKCkpKQorCQkJCQlPTiBDT05GTElDVChpKSBETyBVUERBVEUgU0VUIHVwZGF0ZWRfYXQg PSBub3coKSwgaWEgPSBBUlJBWVtmbG9vcihyYW5kb20oKSoxMDApOjppbnRdLCBwID0gcG9pbnQo cmFuZG9tKCkscmFuZG9tKCkpOworCQkJCVNFTEVDVCBzZXR2YWwoJ2luX3Jvd19yZWJ1aWxkJywg MSk7CisJCQlcZW5kaWYKKwkJCSksICRtYXhfc2xlZXBfbXMsICRtYXhfc2xlZXBfbXMpCisJCX0p OworCiskbm9kZS0+c3RvcDsKK2RvbmVfdGVzdGluZygpOwotLSAKMi40My4wCgo= --000000000000a18566064ece63cb Content-Type: application/octet-stream; name="v5-0004-Support-snapshot-resets-in-concurrent-builds-of-u.patch" Content-Disposition: attachment; filename="v5-0004-Support-snapshot-resets-in-concurrent-builds-of-u.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnnfi1l63 RnJvbSAyN2FhOWU1MzBmYzVjYjMyMmVmYzdhZGEzODhhYzYzNTUzMmYwMWE5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bmtleUB0b2xva2EuYWk+CkRh dGU6IFdlZCwgMTQgSmFuIDIwMjYgMTc6MDI6MzQgKzAxMDAKU3ViamVjdDogW1BBVENIIHY1IDQv NF0gU3VwcG9ydCBzbmFwc2hvdCByZXNldHMgaW4gY29uY3VycmVudCBidWlsZHMgb2YgdW5pcXVl CiBpbmRleGVzCgpQcmV2aW91c2x5LCBjb25jdXJyZW50IGJ1aWxkcyBvZiB1bmlxdWUgaW5kZXgg dXNlZCBhIGZpeGVkIHNuYXBzaG90IGZvciB0aGUgZW50aXJlIHNjYW4gdG8gZW5zdXJlIHByb3Bl ciB1bmlxdWVuZXNzIGNoZWNrcy4KCk5vdyByZXNldCBzbmFwc2hvdHMgcGVyaW9kaWNhbGx5IGR1 cmluZyBjb25jdXJyZW50IHVuaXF1ZSBpbmRleCBidWlsZHMsIHdoaWxlIHN0aWxsIG1haW50YWlu aW5nIHVuaXF1ZW5lc3MgYnk6Ci0gaWdub3JpbmcgU25hcHNob3RTZWxmIGRlYWQgdHVwbGVzIGR1 cmluZyB1bmlxdWVuZXNzIGNoZWNrcyBpbiB0dXBsZXNvcnQgYXMgbm90IGEgZ3VhcmFudGVlLCBi dXQgYSBmYWlsLWZhc3QgbWVjaGFuaWNzCi0gYWRkaW5nIGEgdW5pcXVlbmVzcyBjaGVjayBpbiBf YnRfbG9hZCB0aGF0IGRldGVjdHMgbXVsdGlwbGUgYWxpdmUgdHVwbGVzIHdpdGggdGhlIHNhbWUg a2V5IHZhbHVlcyBhcyBhIGd1YXJhbnRlZSBvZiBjb3JyZWN0bmVzcwoKVHVwbGVzIGFyZSBTbmFw c2hvdFNlbGYgdGVzdGVkIG9ubHkgaW4gdGhlIGNhc2Ugb2YgZXF1YWwgaW5kZXgga2V5IHZhbHVl cywgb3RoZXJ3aXNlIF9idF9sb2FkIHdvcmtzIGxpa2UgYmVmb3JlLgotLS0KIHNyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL1JFQURNRS5IT1QgICAgICAgICAgICB8ICAxMiArLQogc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYyAgICAgIHwgICA3ICstCiBzcmMvYmFja2VuZC9h Y2Nlc3MvbmJ0cmVlL25idGRlZHVwLmMgICAgICAgICAgfCAgIDggKy0KIHNyYy9iYWNrZW5kL2Fj Y2Vzcy9uYnRyZWUvbmJ0cmVhZHBhZ2UuYyAgICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvYWNj ZXNzL25idHJlZS9uYnRzb3J0LmMgICAgICAgICAgIHwgMTc1ICsrKysrKysrKysrKysrKy0tLQog c3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzcGxpdGxvYy5jICAgICAgIHwgIDEyICstCiBz cmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHV0aWxzLmMgICAgICAgICAgfCAgMzAgKystCiBz cmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMgICAgICAgICAgICAgICAgICAgfCAgIDYgKy0KIHNy Yy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jICAgICAgICAgICAgICB8ICAgNCArLQogc3Jj L2JhY2tlbmQvdXRpbHMvc29ydC90dXBsZXNvcnR2YXJpYW50cy5jICAgIHwgIDgwICsrKysrKy0t CiBzcmMvaW5jbHVkZS9hY2Nlc3MvbmJ0cmVlLmggICAgICAgICAgICAgICAgICAgfCAgIDQgKy0K IHNyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmggICAgICAgICAgICAgICAgICB8ICAgNyArLQog c3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRleC5oICAgICAgICAgICAgICAgICAgIHwgICAyIC0KIHNy Yy9pbmNsdWRlL3V0aWxzL3R1cGxlc29ydC5oICAgICAgICAgICAgICAgICB8ICAgMSArCiAuLi4v ZXhwZWN0ZWQvY2ljX3Jlc2V0X3NuYXBzaG90cy5vdXQgICAgICAgICAgfCAgIDYgKwogMTUgZmls ZXMgY2hhbmdlZCwgMjc0IGluc2VydGlvbnMoKyksIDgyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5IT1QgYi9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC9SRUFETUUuSE9UCmluZGV4IDc0ZTQwN2YzNzVhLi44MjlkYWQxMTk0ZSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvUkVBRE1FLkhPVAorKysgYi9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC9SRUFETUUuSE9UCkBAIC0zODYsMTIgKzM4NiwxMiBAQCBoYXZlIHRoZSBI T1Qtc2FmZXR5IHByb3BlcnR5IGVuZm9yY2VkIGJlZm9yZSB3ZSBzdGFydCB0byBidWlsZCB0aGUg bmV3CiBpbmRleC4KIAogQWZ0ZXIgd2FpdGluZyBmb3IgdHJhbnNhY3Rpb25zIHdoaWNoIGhhZCB0 aGUgdGFibGUgb3Blbiwgd2UgYnVpbGQgdGhlIGluZGV4Ci1mb3IgYWxsIHJvd3MgdGhhdCBhcmUg dmFsaWQgaW4gYSBmcmVzaCBzbmFwc2hvdC4gIEFueSB0dXBsZXMgdmlzaWJsZSBpbiB0aGUKLXNu YXBzaG90IHdpbGwgaGF2ZSBvbmx5IHZhbGlkIGZvcndhcmQtZ3Jvd2luZyBIT1QgY2hhaW5zLiAg KFRoZXkgbWlnaHQgaGF2ZQotb2xkZXIgSE9UIHVwZGF0ZXMgYmVoaW5kIHRoZW0gd2hpY2ggYXJl IGJyb2tlbiwgYnV0IHRoaXMgaXMgT0sgZm9yIHRoZSBzYW1lCi1yZWFzb24gaXQncyBPSyBpbiBh IHJlZ3VsYXIgaW5kZXggYnVpbGQuKSAgQXMgYWJvdmUsIHdlIHBvaW50IHRoZSBpbmRleAotZW50 cnkgYXQgdGhlIHJvb3Qgb2YgdGhlIEhPVC11cGRhdGUgY2hhaW4gYnV0IHdlIHVzZSB0aGUga2V5 IHZhbHVlIGZyb20gdGhlCi1saXZlIHR1cGxlLgorZm9yIGFsbCByb3dzIHRoYXQgYXJlIHZhbGlk IGluIGEgZnJlc2ggc25hcHNob3QsIHdoaWNoIGlzIHVwZGF0ZWQgZXZlcnkgc28KK29mdGVuLiBB bnkgdHVwbGVzIHZpc2libGUgaW4gdGhlIHNuYXBzaG90IHdpbGwgaGF2ZSBvbmx5IHZhbGlkIGZv cndhcmQtZ3Jvd2luZworSE9UIGNoYWlucy4gIChUaGV5IG1pZ2h0IGhhdmUgb2xkZXIgSE9UIHVw ZGF0ZXMgYmVoaW5kIHRoZW0gd2hpY2ggYXJlIGJyb2tlbiwKK2J1dCB0aGlzIGlzIE9LIGZvciB0 aGUgc2FtZSByZWFzb24gaXQncyBPSyBpbiBhIHJlZ3VsYXIgaW5kZXggYnVpbGQuKQorQXMgYWJv dmUsIHdlIHBvaW50IHRoZSBpbmRleCBlbnRyeSBhdCB0aGUgcm9vdCBvZiB0aGUgSE9ULXVwZGF0 ZSBjaGFpbiBidXQgd2UKK3VzZSB0aGUga2V5IHZhbHVlIGZyb20gdGhlIGxpdmUgdHVwbGUuCiAK IFdlIG1hcmsgdGhlIGluZGV4IG9wZW4gZm9yIGluc2VydHMgKGJ1dCBzdGlsbCBub3QgcmVhZHkg Zm9yIHJlYWRzKSB0aGVuCiB3ZSBhZ2FpbiB3YWl0IGZvciB0cmFuc2FjdGlvbnMgd2hpY2ggaGF2 ZSB0aGUgdGFibGUgb3Blbi4gIFRoZW4gd2UgdGFrZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hl YXBhbV9oYW5kbGVyLmMKaW5kZXggZmIyZDYxMzYwYzkuLjAwYjFiNWFjMWZiIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCisrKyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMKQEAgLTExNjUsMTMgKzExNjUsMTQgQEAg aGVhcGFtX2luZGV4X2J1aWxkX3JhbmdlX3NjYW4oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCSAq IHF1YWwgY2hlY2tzIChiZWNhdXNlIHdlIGhhdmUgdG8gaW5kZXggUkVDRU5UTFlfREVBRCB0dXBs ZXMpLiBJbiBhCiAJICogY29uY3VycmVudCBidWlsZCwgb3IgZHVyaW5nIGJvb3RzdHJhcCwgd2Ug dGFrZSBhIHJlZ3VsYXIgTVZDQyBzbmFwc2hvdAogCSAqIGFuZCBpbmRleCB3aGF0ZXZlcidzIGxp dmUgYWNjb3JkaW5nIHRvIHRoYXQgd2hpbGUgdGhhdCBzbmFwc2hvdCBpcyByZXNldAotCSAqIGV2 ZXJ5IHNvIG9mdGVuIChpbiB0aGUgY2FzZSBvZiBub24tdW5pcXVlIGluZGV4KS4KKwkgKiBldmVy eSBzbyBvZnRlbi4KIAkgKi8KIAlPbGRlc3RYbWluID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CiAK IAkvKgotCSAqIEZvciB1bmlxdWUgaW5kZXhlcyB3ZSBuZWVkIGEgY29uc2lzdGVudCBzbmFwc2hv dCBmb3IgdGhlIHdob2xlIHNjYW4uCi0JICogUmVzZXR0aW5nIHNuYXBzaG90cyBhbHNvIGRvZXNu J3Qgd29yayBpbiB4YWN0LXNuYXBzaG90IGlzb2xhdGlvbiBtb2RlcywKKwkgKiBGb3IgY29uY3Vy cmVudCBidWlsZHMgb2Ygbm9uLXN5c3RlbSBpbmRleGVzLCB3ZSB3YW50IHRvIHBlcmlvZGljYWxs eQorCSAqIHJlc2V0IHNuYXBzaG90cy4KKwkgKiBSZXNldHRpbmcgc25hcHNob3RzIGRvZXNuJ3Qg d29yayBpbiB4YWN0LXNuYXBzaG90IGlzb2xhdGlvbiBtb2RlcywKIAkgKiBiZWNhdXNlIHRob3Nl IGtlZXAgYSByZWdpc3RlcmVkIHRyYW5zYWN0aW9uIHNuYXBzaG90IGZvciB0aGUgd2hvbGUgeGFj dC4KIAkgKi8KIAlyZXNldF9zbmFwc2hvdHMgPSBJbmRleEJ1aWxkUmVzZXRzU25hcHNob3RzKGlu ZGV4SW5mbykgJiYKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0ZGVk dXAuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0ZGVkdXAuYwppbmRleCBhZjdhZmZk ZjQwOS4uMTBmNGY3ZWViYTkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUv bmJ0ZGVkdXAuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idGRlZHVwLmMKQEAg LTE0OSw3ICsxNDksNyBAQCBfYnRfZGVkdXBfcGFzcyhSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYs IEluZGV4VHVwbGUgbmV3aXRlbSwgU2l6ZSBuZXdpdGVtc3osCiAJCQlfYnRfZGVkdXBfc3RhcnRf cGVuZGluZyhzdGF0ZSwgaXR1cCwgb2ZmbnVtKTsKIAkJfQogCQllbHNlIGlmIChzdGF0ZS0+ZGVk dXBsaWNhdGUgJiYKLQkJCQkgX2J0X2tlZXBfbmF0dHNfZmFzdChyZWwsIHN0YXRlLT5iYXNlLCBp dHVwKSA+IG5rZXlhdHRzICYmCisJCQkJIF9idF9rZWVwX25hdHRzX2Zhc3QocmVsLCBzdGF0ZS0+ YmFzZSwgaXR1cCwgTlVMTCkgPiBua2V5YXR0cyAmJgogCQkJCSBfYnRfZGVkdXBfc2F2ZV9odGlk KHN0YXRlLCBpdHVwKSkKIAkJewogCQkJLyoKQEAgLTM3Niw3ICszNzYsNyBAQCBfYnRfYm90dG9t dXBkZWxfcGFzcyhSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYsIFJlbGF0aW9uIGhlYXBSZWwsCiAJ CQkvKiBpdHVwIHN0YXJ0cyBmaXJzdCBwZW5kaW5nIGludGVydmFsICovCiAJCQlfYnRfZGVkdXBf c3RhcnRfcGVuZGluZyhzdGF0ZSwgaXR1cCwgb2ZmbnVtKTsKIAkJfQotCQllbHNlIGlmIChfYnRf a2VlcF9uYXR0c19mYXN0KHJlbCwgc3RhdGUtPmJhc2UsIGl0dXApID4gbmtleWF0dHMgJiYKKwkJ ZWxzZSBpZiAoX2J0X2tlZXBfbmF0dHNfZmFzdChyZWwsIHN0YXRlLT5iYXNlLCBpdHVwLCBOVUxM KSA+IG5rZXlhdHRzICYmCiAJCQkJIF9idF9kZWR1cF9zYXZlX2h0aWQoc3RhdGUsIGl0dXApKQog CQl7CiAJCQkvKiBUdXBsZSBpcyBlcXVhbDsganVzdCBhZGRlZCBpdHMgVElEcyB0byBwZW5kaW5n IGludGVydmFsICovCkBAIC03ODksMTIgKzc4OSwxMiBAQCBfYnRfZG9fc2luZ2xldmFsKFJlbGF0 aW9uIHJlbCwgUGFnZSBwYWdlLCBCVERlZHVwU3RhdGUgc3RhdGUsCiAJaXRlbWlkID0gUGFnZUdl dEl0ZW1JZChwYWdlLCBtaW5vZmYpOwogCWl0dXAgPSAoSW5kZXhUdXBsZSkgUGFnZUdldEl0ZW0o cGFnZSwgaXRlbWlkKTsKIAotCWlmIChfYnRfa2VlcF9uYXR0c19mYXN0KHJlbCwgbmV3aXRlbSwg aXR1cCkgPiBua2V5YXR0cykKKwlpZiAoX2J0X2tlZXBfbmF0dHNfZmFzdChyZWwsIG5ld2l0ZW0s IGl0dXAsIE5VTEwpID4gbmtleWF0dHMpCiAJewogCQlpdGVtaWQgPSBQYWdlR2V0SXRlbUlkKHBh Z2UsIFBhZ2VHZXRNYXhPZmZzZXROdW1iZXIocGFnZSkpOwogCQlpdHVwID0gKEluZGV4VHVwbGUp IFBhZ2VHZXRJdGVtKHBhZ2UsIGl0ZW1pZCk7CiAKLQkJaWYgKF9idF9rZWVwX25hdHRzX2Zhc3Qo cmVsLCBuZXdpdGVtLCBpdHVwKSA+IG5rZXlhdHRzKQorCQlpZiAoX2J0X2tlZXBfbmF0dHNfZmFz dChyZWwsIG5ld2l0ZW0sIGl0dXAsIE5VTEwpID4gbmtleWF0dHMpCiAJCQlyZXR1cm4gdHJ1ZTsK IAl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0cmVhZHBhZ2Uu YyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0cmVhZHBhZ2UuYwppbmRleCAyYmExY2E2 NjAyMy4uYzRjMjc4ZTc3N2EgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUv bmJ0cmVhZHBhZ2UuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHJlYWRwYWdl LmMKQEAgLTYyMyw3ICs2MjMsNyBAQCBfYnRfc2V0X3N0YXJ0aWtleShJbmRleFNjYW5EZXNjIHNj YW4sIEJUUmVhZFBhZ2VTdGF0ZSAqcHN0YXRlKQogCWxhc3R0dXAgPSAoSW5kZXhUdXBsZSkgUGFn ZUdldEl0ZW0ocHN0YXRlLT5wYWdlLCBpaWQpOwogCiAJLyogRGV0ZXJtaW5lIHRoZSBmaXJzdCBh dHRyaWJ1dGUgd2hvc2UgdmFsdWVzIGNoYW5nZSBvbiBjYWxsZXIncyBwYWdlICovCi0JZmlyc3Rj aGFuZ2luZ2F0dG51bSA9IF9idF9rZWVwX25hdHRzX2Zhc3QocmVsLCBmaXJzdHR1cCwgbGFzdHR1 cCk7CisJZmlyc3RjaGFuZ2luZ2F0dG51bSA9IF9idF9rZWVwX25hdHRzX2Zhc3QocmVsLCBmaXJz dHR1cCwgbGFzdHR1cCwgTlVMTCk7CiAKIAlmb3IgKDsgc3RhcnRpa2V5IDwgc28tPm51bWJlck9m S2V5czsgc3RhcnRpa2V5KyspCiAJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL25i dHJlZS9uYnRzb3J0LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQuYwppbmRl eCA2YmIzNjVjOTUxZC4uZTAyYTRhNjBhOGIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9uYnRyZWUvbmJ0c29ydC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29y dC5jCkBAIC04Nyw2ICs4Nyw3IEBAIHR5cGVkZWYgc3RydWN0IEJUU3Bvb2wKIAlSZWxhdGlvbglp bmRleDsKIAlib29sCQlpc3VuaXF1ZTsKIAlib29sCQludWxsc19ub3RfZGlzdGluY3Q7CisJYm9v bAkJdW5pcXVlX2RlYWRfaWdub3JlZDsKIH0gQlRTcG9vbDsKIAogLyoKQEAgLTEwNSw2ICsxMDYs NyBAQCB0eXBlZGVmIHN0cnVjdCBCVFNoYXJlZAogCU9pZAkJCWluZGV4cmVsaWQ7CiAJYm9vbAkJ aXN1bmlxdWU7CiAJYm9vbAkJbnVsbHNfbm90X2Rpc3RpbmN0OworCWJvb2wJCXVuaXF1ZV9kZWFk X2lnbm9yZWQ7CiAJYm9vbAkJaXNjb25jdXJyZW50OwogCWludAkJCXNjYW50dXBsZXNvcnRzdGF0 ZXM7CiAKQEAgLTIwNywxNSArMjA5LDE0IEBAIHR5cGVkZWYgc3RydWN0IEJUTGVhZGVyCiAgKi8K IHR5cGVkZWYgc3RydWN0IEJUQnVpbGRTdGF0ZQogewotCWJvb2wJCWlzdW5pcXVlOwotCWJvb2wJ CW51bGxzX25vdF9kaXN0aW5jdDsKIAlib29sCQloYXZlZGVhZDsKIAlSZWxhdGlvbgloZWFwOwog CUJUU3Bvb2wgICAgKnNwb29sOwogCiAJLyoKLQkgKiBzcG9vbDIgaXMgbmVlZGVkIG9ubHkgd2hl biB0aGUgaW5kZXggaXMgYSB1bmlxdWUgaW5kZXguIERlYWQgdHVwbGVzIGFyZQotCSAqIHB1dCBp bnRvIHNwb29sMiBpbnN0ZWFkIG9mIHNwb29sIGluIG9yZGVyIHRvIGF2b2lkIHVuaXF1ZW5lc3Mg Y2hlY2suCisJICogc3Bvb2wyIGlzIG5lZWRlZCBvbmx5IHdoZW4gdGhlIGluZGV4IGlzIGEgdW5p cXVlIGluZGV4IGFuZCBidWlsdAorCSAqIG5vbi1jb25jdXJyZW50bHkuICBEZWFkIHR1cGxlcyBh cmUgcHV0IGludG8gc3Bvb2wyIGluc3RlYWQgb2Ygc3Bvb2wKKwkgKiBpbiBvcmRlciB0byBhdm9p ZCB1bmlxdWVuZXNzIGNoZWNrLgogCSAqLwogCUJUU3Bvb2wgICAgKnNwb29sMjsKIAlkb3VibGUJ CWluZHR1cGxlczsKQEAgLTI2Miw3ICsyNjMsNyBAQCBzdGF0aWMgZG91YmxlIF9idF9zcG9vbHNf aGVhcHNjYW4oUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiBzdGF0aWMgdm9pZCBfYnRf c3Bvb2xkZXN0cm95KEJUU3Bvb2wgKmJ0c3Bvb2wpOwogc3RhdGljIHZvaWQgX2J0X3Nwb29sKEJU U3Bvb2wgKmJ0c3Bvb2wsIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqc2VsZiwKIAkJCQkJICBjb25z dCBEYXR1bSAqdmFsdWVzLCBjb25zdCBib29sICppc251bGwpOwotc3RhdGljIHZvaWQgX2J0X2xl YWZidWlsZChCVFNwb29sICpidHNwb29sLCBCVFNwb29sICpidHNwb29sMiwgYm9vbCByZXNldF9z bmFwc2hvdHMpOworc3RhdGljIHZvaWQgX2J0X2xlYWZidWlsZChCVFNwb29sICpidHNwb29sLCBC VFNwb29sICpidHNwb29sMiwgYm9vbCBpc2NvbmN1cnJlbnQpOwogc3RhdGljIHZvaWQgX2J0X2J1 aWxkX2NhbGxiYWNrKFJlbGF0aW9uIGluZGV4LCBJdGVtUG9pbnRlciB0aWQsIERhdHVtICp2YWx1 ZXMsCiAJCQkJCQkJICAgYm9vbCAqaXNudWxsLCBib29sIHR1cGxlSXNBbGl2ZSwgdm9pZCAqc3Rh dGUpOwogc3RhdGljIEJ1bGtXcml0ZUJ1ZmZlciBfYnRfYmxuZXdwYWdlKEJUV3JpdGVTdGF0ZSAq d3N0YXRlLCB1aW50MzIgbGV2ZWwpOwpAQCAtMzA3LDggKzMwOCw2IEBAIGJ0YnVpbGQoUmVsYXRp b24gaGVhcCwgUmVsYXRpb24gaW5kZXgsIEluZGV4SW5mbyAqaW5kZXhJbmZvKQogCQlSZXNldFVz YWdlKCk7CiAjZW5kaWYJCQkJCQkJLyogQlRSRUVfQlVJTERfU1RBVFMgKi8KIAotCWJ1aWxkc3Rh dGUuaXN1bmlxdWUgPSBpbmRleEluZm8tPmlpX1VuaXF1ZTsKLQlidWlsZHN0YXRlLm51bGxzX25v dF9kaXN0aW5jdCA9IGluZGV4SW5mby0+aWlfTnVsbHNOb3REaXN0aW5jdDsKIAlidWlsZHN0YXRl LmhhdmVkZWFkID0gZmFsc2U7CiAJYnVpbGRzdGF0ZS5oZWFwID0gaGVhcDsKIAlidWlsZHN0YXRl LnNwb29sID0gTlVMTDsKQEAgLTM4NSw2ICszODQsMTIgQEAgX2J0X3Nwb29sc19oZWFwc2NhbihS ZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwgQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLAog CWJ0c3Bvb2wtPmluZGV4ID0gaW5kZXg7CiAJYnRzcG9vbC0+aXN1bmlxdWUgPSBpbmRleEluZm8t PmlpX1VuaXF1ZTsKIAlidHNwb29sLT5udWxsc19ub3RfZGlzdGluY3QgPSBpbmRleEluZm8tPmlp X051bGxzTm90RGlzdGluY3Q7CisJLyoKKwkgKiBXZSBuZWVkIHRvIGlnbm9yZSBkZWFkIHR1cGxl cyBmb3IgdW5pcXVlIGNoZWNrcyBvbmx5IHdoZW4gY29uY3VycmVudAorCSAqIHVuaXF1ZSBidWls ZHMgYWN0dWFsbHkgdXNlIHBlcmlvZGljIHNuYXBzaG90IHJlc2V0cy4KKwkgKi8KKwlidHNwb29s LT51bmlxdWVfZGVhZF9pZ25vcmVkID0gSW5kZXhCdWlsZFJlc2V0c1NuYXBzaG90cyhpbmRleElu Zm8pICYmCisJCWluZGV4SW5mby0+aWlfVW5pcXVlOwogCiAJLyogU2F2ZSBhcyBwcmltYXJ5IHNw b29sICovCiAJYnVpbGRzdGF0ZS0+c3Bvb2wgPSBidHNwb29sOwpAQCAtNDMzLDggKzQzOCw5IEBA IF9idF9zcG9vbHNfaGVhcHNjYW4oUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsIEJUQnVp bGRTdGF0ZSAqYnVpbGRzdGF0ZSwKIAkgKiB0aGUgdXNlIG9mIHBhcmFsbGVsaXNtIG9yIGFueSBv dGhlciBmYWN0b3IuCiAJICovCiAJYnVpbGRzdGF0ZS0+c3Bvb2wtPnNvcnRzdGF0ZSA9Ci0JCXR1 cGxlc29ydF9iZWdpbl9pbmRleF9idHJlZShoZWFwLCBpbmRleCwgYnVpbGRzdGF0ZS0+aXN1bmlx dWUsCi0JCQkJCQkJCQlidWlsZHN0YXRlLT5udWxsc19ub3RfZGlzdGluY3QsCisJCXR1cGxlc29y dF9iZWdpbl9pbmRleF9idHJlZShoZWFwLCBpbmRleCwgYnRzcG9vbC0+aXN1bmlxdWUsCisJCQkJ CQkJCQlidHNwb29sLT5udWxsc19ub3RfZGlzdGluY3QsCisJCQkJCQkJCQlidHNwb29sLT51bmlx dWVfZGVhZF9pZ25vcmVkLAogCQkJCQkJCQkJbWFpbnRlbmFuY2Vfd29ya19tZW0sIGNvb3JkaW5h dGUsCiAJCQkJCQkJCQlUVVBMRVNPUlRfTk9ORSk7CiAKQEAgLTQ0Miw4ICs0NDgsMTIgQEAgX2J0 X3Nwb29sc19oZWFwc2NhbihSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwgQlRCdWlsZFN0 YXRlICpidWlsZHN0YXRlLAogCSAqIElmIGJ1aWxkaW5nIGEgdW5pcXVlIGluZGV4LCBwdXQgZGVh ZCB0dXBsZXMgaW4gYSBzZWNvbmQgc3Bvb2wgdG8ga2VlcAogCSAqIHRoZW0gb3V0IG9mIHRoZSB1 bmlxdWVuZXNzIGNoZWNrLiAgV2UgZXhwZWN0IHRoYXQgdGhlIHNlY29uZCBzcG9vbCAoZm9yCiAJ ICogZGVhZCB0dXBsZXMpIHdvbid0IGdldCB2ZXJ5IGZ1bGwsIHNvIHdlIGdpdmUgaXQgb25seSB3 b3JrX21lbS4KKwkgKgorCSAqIEluIGNhc2Ugb2YgY29uY3VycmVudCBidWlsZCBkZWFkIHR1cGxl cyBkbyBub3QgbmVlZCB0byBiZSBwdXQgaW50byBpbmRleAorCSAqIHNpbmNlIHdlIHdhaXQgZm9y IGFsbCBzbmFwc2hvdHMgb2xkZXIgdGhhbiByZWZlcmVuY2Ugc25hcHNob3QgZHVyaW5nIHRoZQor CSAqIHZhbGlkYXRpb24gcGhhc2UuCiAJICovCi0JaWYgKGluZGV4SW5mby0+aWlfVW5pcXVlKQor CWlmIChpbmRleEluZm8tPmlpX1VuaXF1ZSAmJiAhSW5kZXhCdWlsZFJlc2V0c1NuYXBzaG90cyhp bmRleEluZm8pKQogCXsKIAkJQlRTcG9vbCAgICAqYnRzcG9vbDIgPSBwYWxsb2MwX29iamVjdChC VFNwb29sKTsKIAkJU29ydENvb3JkaW5hdGUgY29vcmRpbmF0ZTIgPSBOVUxMOwpAQCAtNDc0LDcg KzQ4NCw3IEBAIF9idF9zcG9vbHNfaGVhcHNjYW4oUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5k ZXgsIEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwKIAkJICogZnVsbCwgc28gd2UgZ2l2ZSBpdCBv bmx5IHdvcmtfbWVtCiAJCSAqLwogCQlidWlsZHN0YXRlLT5zcG9vbDItPnNvcnRzdGF0ZSA9Ci0J CQl0dXBsZXNvcnRfYmVnaW5faW5kZXhfYnRyZWUoaGVhcCwgaW5kZXgsIGZhbHNlLCBmYWxzZSwg d29ya19tZW0sCisJCQl0dXBsZXNvcnRfYmVnaW5faW5kZXhfYnRyZWUoaGVhcCwgaW5kZXgsIGZh bHNlLCBmYWxzZSwgZmFsc2UsIHdvcmtfbWVtLAogCQkJCQkJCQkJCWNvb3JkaW5hdGUyLCBUVVBM RVNPUlRfTk9ORSk7CiAJfQogCkBAIC0xMTU2LDEzICsxMTY2LDExOCBAQCBfYnRfbG9hZChCVFdy aXRlU3RhdGUgKndzdGF0ZSwgQlRTcG9vbCAqYnRzcG9vbCwgQlRTcG9vbCAqYnRzcG9vbDIpCiAJ U29ydFN1cHBvcnQgc29ydEtleXM7CiAJaW50NjQJCXR1cGxlc19kb25lID0gMDsKIAlib29sCQlk ZWR1cGxpY2F0ZTsKKwlib29sCQlmYWlsX29uX2FsaXZlX2R1cGxpY2F0ZTsKIAogCXdzdGF0ZS0+ YnVsa3N0YXRlID0gc21ncl9idWxrX3N0YXJ0X3JlbCh3c3RhdGUtPmluZGV4LCBNQUlOX0ZPUktO VU0pOwogCiAJZGVkdXBsaWNhdGUgPSB3c3RhdGUtPmluc2tleS0+YWxsZXF1YWxpbWFnZSAmJiAh YnRzcG9vbC0+aXN1bmlxdWUgJiYKIAkJQlRHZXREZWR1cGxpY2F0ZUl0ZW1zKHdzdGF0ZS0+aW5k ZXgpOworCS8qCisJICogVGhlIHVuaXF1ZV9kZWFkX2lnbm9yZWQgZG9lcyBub3QgZ3VhcmFudGVl IGFic2VuY2Ugb2YgbXVsdGlwbGUgYWxpdmUKKwkgKiB0dXBsZXMgd2l0aCB0aGUgc2FtZSB2YWx1 ZXMgaW4gdGhlIHNwb29sLiBTdWNoIGEgY2FzZSBtYXkgaGFwcGVuIGlmCisJICogYWxpdmUgdHVw bGVzIGFyZSBsb2NhdGVkIGJldHdlZW4gYSBmZXcgZGVhZCB0dXBsZXMsIGxpa2UgdGhpczogYWRk ZGEuCisJICovCisJZmFpbF9vbl9hbGl2ZV9kdXBsaWNhdGUgPSBidHNwb29sLT51bmlxdWVfZGVh ZF9pZ25vcmVkOwogCi0JaWYgKG1lcmdlKQorCWlmIChmYWlsX29uX2FsaXZlX2R1cGxpY2F0ZSkK Kwl7CisJCWJvb2wJc2Vlbl9hbGl2ZSA9IGZhbHNlLAorCQkJCXByZXZfdGVzdGVkID0gZmFsc2U7 CisJCUluZGV4VHVwbGUgcHJldiA9IE5VTEw7CisJCVR1cGxlVGFibGVTbG90ICpzbG90ID0gTWFr ZVNpbmdsZVR1cGxlVGFibGVTbG90KFJlbGF0aW9uR2V0RGVzY3Iod3N0YXRlLT5oZWFwKSwKKwkJ CQkJCQkJCQkJCQkgICAmVFRTT3BzQnVmZmVySGVhcFR1cGxlKTsKKwkJSW5kZXhGZXRjaFRhYmxl RGF0YSAqZmV0Y2ggPSB0YWJsZV9pbmRleF9mZXRjaF9iZWdpbih3c3RhdGUtPmhlYXAsIFNPX05P TkUpOworCisJCUFzc2VydChidHNwb29sLT5pc3VuaXF1ZSk7CisJCUFzc2VydCghYnRzcG9vbDIp OworCisJCXdoaWxlICgoaXR1cCA9IHR1cGxlc29ydF9nZXRpbmRleHR1cGxlKGJ0c3Bvb2wtPnNv cnRzdGF0ZSwgdHJ1ZSkpICE9IE5VTEwpCisJCXsKKwkJCWJvb2wJdHVwbGVzX2VxdWFsID0gZmFs c2U7CisKKwkJCS8qIFdoZW4gd2Ugc2VlIGZpcnN0IHR1cGxlLCBjcmVhdGUgZmlyc3QgaW5kZXgg cGFnZSAqLworCQkJaWYgKHN0YXRlID09IE5VTEwpCisJCQkJc3RhdGUgPSBfYnRfcGFnZXN0YXRl KHdzdGF0ZSwgMCk7CisKKwkJCWlmIChwcmV2ICE9IE5VTEwpIC8qIGlmIHRoaXMgaXMgbm90IHRo ZSBmaXJzdCB0dXBsZSAqLworCQkJeworCQkJCWJvb2wJaGFzX251bGxzID0gZmFsc2UsCisJCQkJ CQljYWxsX2FnYWluID0gZmFsc2UsCisJCQkJCQlpZ25vcmVkID0gZmFsc2UsCisJCQkJCQlub3df YWxpdmU7CisJCQkJSXRlbVBvaW50ZXJEYXRhIHRpZDsKKworCQkJCS8qIGlzIHRoaXMgdHVwbGUg ZXF1YWwgdG8gcHJldmlvdXMgb25lPyAqLworCQkJCWlmICh3c3RhdGUtPmluc2tleS0+YWxsZXF1 YWxpbWFnZSkKKwkJCQkJdHVwbGVzX2VxdWFsID0gX2J0X2tlZXBfbmF0dHNfZmFzdCh3c3RhdGUt PmluZGV4LCBwcmV2LCBpdHVwLCAmaGFzX251bGxzKSA+IGtleXN6OworCQkJCWVsc2UKKwkJCQkJ dHVwbGVzX2VxdWFsID0gX2J0X2tlZXBfbmF0dHMod3N0YXRlLT5pbmRleCwgcHJldiwgaXR1cCwg d3N0YXRlLT5pbnNrZXksICZoYXNfbnVsbHMpID4ga2V5c3o7CisKKwkJCQkvKiBoYW5kbGUgbnVs bCB2YWx1ZXMgY29ycmVjdGx5ICovCisJCQkJaWYgKGhhc19udWxscyAmJiAhYnRzcG9vbC0+bnVs bHNfbm90X2Rpc3RpbmN0KQorCQkJCQl0dXBsZXNfZXF1YWwgPSBmYWxzZTsKKworCQkJCWlmICh0 dXBsZXNfZXF1YWwpCisJCQkJeworCQkJCQkvKiBjaGVjayBwcmV2aW91cyB0dXBsZSBpZiBub3Qg eWV0ICovCisJCQkJCWlmICghcHJldl90ZXN0ZWQpCisJCQkJCXsKKwkJCQkJCWNhbGxfYWdhaW4g PSBmYWxzZTsKKwkJCQkJCXRpZCA9IHByZXYtPnRfdGlkOworCQkJCQkJc2Vlbl9hbGl2ZSA9IHRh YmxlX2luZGV4X2ZldGNoX3R1cGxlKGZldGNoLCAmdGlkLCBTbmFwc2hvdFNlbGYsIHNsb3QsICZj YWxsX2FnYWluLCAmaWdub3JlZCk7CisJCQkJCQlwcmV2X3Rlc3RlZCA9IHRydWU7CisJCQkJCX0K KworCQkJCQljYWxsX2FnYWluID0gZmFsc2U7CisJCQkJCXRpZCA9IGl0dXAtPnRfdGlkOworCQkJ CQlub3dfYWxpdmUgPSB0YWJsZV9pbmRleF9mZXRjaF90dXBsZShmZXRjaCwgJnRpZCwgU25hcHNo b3RTZWxmLCBzbG90LCAmY2FsbF9hZ2FpbiwgJmlnbm9yZWQpOworCisJCQkJCS8qIGFyZSBtdWx0 aXBsZSBhbGl2ZSB0dXBsZXMgZGV0ZWN0ZWQgaW4gZXF1YWwgZ3JvdXA/ICovCisJCQkJCWlmIChz ZWVuX2FsaXZlICYmIG5vd19hbGl2ZSkKKwkJCQkJeworCQkJCQkJY2hhciAqa2V5X2Rlc2M7CisJ CQkJCQlUdXBsZURlc2MgdHVwRGVzID0gUmVsYXRpb25HZXREZXNjcih3c3RhdGUtPmluZGV4KTsK KwkJCQkJCWJvb2wgaXNudWxsW0lOREVYX01BWF9LRVlTXTsKKwkJCQkJCURhdHVtIHZhbHVlc1tJ TkRFWF9NQVhfS0VZU107CisKKwkJCQkJCWluZGV4X2RlZm9ybV90dXBsZShpdHVwLCB0dXBEZXMs IHZhbHVlcywgaXNudWxsKTsKKworCQkJCQkJa2V5X2Rlc2MgPSBCdWlsZEluZGV4VmFsdWVEZXNj cmlwdGlvbih3c3RhdGUtPmluZGV4LCB2YWx1ZXMsIGlzbnVsbCk7CisKKwkJCQkJCS8qIGtlZXAg dGhpcyBtZXNzYWdlIGluIHN5bmMgd2l0aCB0aGUgc2FtZSBpbiBjb21wYXJldHVwX2luZGV4X2J0 cmVlX3RpZWJyZWFrICovCisJCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCQkoZXJyY29kZShF UlJDT0RFX1VOSVFVRV9WSU9MQVRJT04pLAorCQkJCQkJCQkJCWVycm1zZygiY291bGQgbm90IGNy ZWF0ZSB1bmlxdWUgaW5kZXggXCIlc1wiIiwKKwkJCQkJCQkJCQkJICAgUmVsYXRpb25HZXRSZWxh dGlvbk5hbWUod3N0YXRlLT5pbmRleCkpLAorCQkJCQkJCQkJCWtleV9kZXNjID8gZXJyZGV0YWls KCJLZXkgJXMgaXMgZHVwbGljYXRlZC4iLCBrZXlfZGVzYykgOgorCQkJCQkJCQkJCWVycmRldGFp bCgiRHVwbGljYXRlIGtleXMgZXhpc3QuIiksCisJCQkJCQkJCQkJZXJydGFibGVjb25zdHJhaW50 KHdzdGF0ZS0+aGVhcCwKKwkJCQkJCQkJCQkJCQkJICAgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUo d3N0YXRlLT5pbmRleCkpKSk7CisJCQkJCX0KKwkJCQkJc2Vlbl9hbGl2ZSB8PSBub3dfYWxpdmU7 CisJCQkJfQorCQkJfQorCisJCQlpZiAoIXR1cGxlc19lcXVhbCkKKwkJCXsKKwkJCQlzZWVuX2Fs aXZlID0gZmFsc2U7CisJCQkJcHJldl90ZXN0ZWQgPSBmYWxzZTsKKwkJCX0KKworCQkJX2J0X2J1 aWxkYWRkKHdzdGF0ZSwgc3RhdGUsIGl0dXAsIDApOworCQkJaWYgKHByZXYpIHBmcmVlKHByZXYp OworCQkJcHJldiA9IENvcHlJbmRleFR1cGxlKGl0dXApOworCisJCQkvKiBSZXBvcnQgcHJvZ3Jl c3MgKi8KKwkJCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ1JFQVRFSURY X1RVUExFU19ET05FLAorCQkJCQkJCQkJCSArK3R1cGxlc19kb25lKTsKKwkJfQorCQlpZiAocHJl dikgcGZyZWUocHJldik7CisJCUV4ZWNEcm9wU2luZ2xlVHVwbGVUYWJsZVNsb3Qoc2xvdCk7CisJ CXRhYmxlX2luZGV4X2ZldGNoX2VuZChmZXRjaCk7CisJCUFzc2VydCghVHJhbnNhY3Rpb25JZElz VmFsaWQoTXlQcm9jLT54bWluKSk7CisJfQorCWVsc2UgaWYgKG1lcmdlKQogCXsKIAkJLyoKIAkJ ICogQW5vdGhlciBCVFNwb29sIGZvciBkZWFkIHR1cGxlcyBleGlzdHMuIE5vdyB3ZSBoYXZlIHRv IG1lcmdlCkBAIC0xMzIyLDcgKzE0MzcsNyBAQCBfYnRfbG9hZChCVFdyaXRlU3RhdGUgKndzdGF0 ZSwgQlRTcG9vbCAqYnRzcG9vbCwgQlRTcG9vbCAqYnRzcG9vbDIpCiAJCQkJCQkJCQkJSW52YWxp ZE9mZnNldE51bWJlcik7CiAJCQl9CiAJCQllbHNlIGlmIChfYnRfa2VlcF9uYXR0c19mYXN0KHdz dGF0ZS0+aW5kZXgsIGRzdGF0ZS0+YmFzZSwKLQkJCQkJCQkJCQkgaXR1cCkgPiBrZXlzeiAmJgor CQkJCQkJCQkJCSBpdHVwLCBOVUxMKSA+IGtleXN6ICYmCiAJCQkJCSBfYnRfZGVkdXBfc2F2ZV9o dGlkKGRzdGF0ZSwgaXR1cCkpCiAJCQl7CiAJCQkJLyoKQEAgLTE0MzgsMTUgKzE1NTMsMTMgQEAg X2J0X2JlZ2luX3BhcmFsbGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9vbCBpc2NvbmN1 cnJlbnQsIGludCByZXF1ZXN0KQogCXNjYW50dXBsZXNvcnRzdGF0ZXMgPSBsZWFkZXJwYXJ0aWNp cGF0ZXMgPyByZXF1ZXN0ICsgMSA6IHJlcXVlc3Q7CiAKIAkvKgotCSAqIEZvciBjb25jdXJyZW50 IG5vbi11bmlxdWUgaW5kZXggYnVpbGRzLCB3ZSBjYW4gcGVyaW9kaWNhbGx5IHJlc2V0Ci0JICog c25hcHNob3RzIHRvIGFsbG93IHRoZSB4bWluIGhvcml6b24gdG8gYWR2YW5jZS4gIFRoaXMgaXMg c2FmZSBzaW5jZQotCSAqIHRoZXNlIGJ1aWxkcyBkb24ndCByZXF1aXJlIGEgY29uc2lzdGVudCB2 aWV3IGFjcm9zcyB0aGUgZW50aXJlIHNjYW4uCi0JICogVW5pcXVlIGluZGV4ZXMgc3RpbGwgbmVl ZCBhIHN0YWJsZSBzbmFwc2hvdCB0byBwcm9wZXJseSBlbmZvcmNlCi0JICogdW5pcXVlbmVzcyBj b25zdHJhaW50cy4gIElzb2xhdGlvbiBtb2RlcyB3aGVyZQorCSAqIEZvciBjb25jdXJyZW50IGlu ZGV4IGJ1aWxkcywgd2UgY2FuIHBlcmlvZGljYWxseSByZXNldCBzbmFwc2hvdHMgdG8KKwkgKiBh bGxvdyB0aGUgeG1pbiBob3Jpem9uIHRvIGFkdmFuY2UuCisJICogSXNvbGF0aW9uIG1vZGVzIHdo ZXJlCiAJICogSXNvbGF0aW9uVXNlc1hhY3RTbmFwc2hvdCgpIGlzIHRydWUgYWxzbyBwcmV2ZW50 IHJlc2V0dGluZyBiZWNhdXNlCiAJICogdGhleSBrZWVwIGEgcmVnaXN0ZXJlZCB0cmFuc2FjdGlv biBzbmFwc2hvdCBmb3IgdGhlIHdob2xlIHRyYW5zYWN0aW9uLgogCSAqLwotCXJlc2V0X3NuYXBz aG90ID0gaXNjb25jdXJyZW50ICYmICFJc29sYXRpb25Vc2VzWGFjdFNuYXBzaG90KCkgJiYgIWJ0 c3Bvb2wtPmlzdW5pcXVlOworCXJlc2V0X3NuYXBzaG90ID0gaXNjb25jdXJyZW50ICYmICFJc29s YXRpb25Vc2VzWGFjdFNuYXBzaG90KCk7CiAKIAkvKgogCSAqIFByZXBhcmUgZm9yIHNjYW4gb2Yg dGhlIGJhc2UgcmVsYXRpb24uICBJbiBhIG5vcm1hbCBpbmRleCBidWlsZCwgd2UgdXNlCkBAIC0x NDU0LDcgKzE1NjcsNyBAQCBfYnRfYmVnaW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRlICpidWlsZHN0 YXRlLCBib29sIGlzY29uY3VycmVudCwgaW50IHJlcXVlc3QpCiAJICogcXVhbCBjaGVja3MgKGJl Y2F1c2Ugd2UgaGF2ZSB0byBpbmRleCBSRUNFTlRMWV9ERUFEIHR1cGxlcykuICBJbiBhCiAJICog Y29uY3VycmVudCBidWlsZCwgd2UgdGFrZSBhIHJlZ3VsYXIgTVZDQyBzbmFwc2hvdCBhbmQgaW5k ZXggd2hhdGV2ZXIncwogCSAqIGxpdmUgYWNjb3JkaW5nIHRvIHRoYXQsIHdoaWxlIHRoYXQgc25h cHNob3QgbWF5IGJlIHJlc2V0IHBlcmlvZGljYWxseQotCSAqIGZvciBub24tdW5pcXVlIGluZGV4 ZXMgaW4gbm9uLXhhY3Qtc25hcHNob3QgaXNvbGF0aW9uIG1vZGVzLgorCSAqIGluIG5vbi14YWN0 LXNuYXBzaG90IGlzb2xhdGlvbiBtb2Rlcy4KIAkgKi8KIAlpZiAoIWlzY29uY3VycmVudCkKIAl7 CkBAIC0xNDgzLDEwICsxNTk2LDEwIEBAIF9idF9iZWdpbl9wYXJhbGxlbChCVEJ1aWxkU3RhdGUg KmJ1aWxkc3RhdGUsIGJvb2wgaXNjb25jdXJyZW50LCBpbnQgcmVxdWVzdCkKIAlzaG1fdG9jX2Vz dGltYXRlX2NodW5rKCZwY3h0LT5lc3RpbWF0b3IsIGVzdHNvcnQpOwogCiAJLyoKLQkgKiBVbmlx dWUgY2FzZSByZXF1aXJlcyBhIHNlY29uZCBzcG9vbCwgYW5kIHNvIHdlIG1heSBoYXZlIHRvIGFj Y291bnQgZm9yCi0JICogYW5vdGhlciBzaGFyZWQgd29ya3NwYWNlIGZvciB0aGF0IC0tIFBBUkFM TEVMX0tFWV9UVVBMRVNPUlRfU1BPT0wyCisJICogTm9uLWNvbmN1cnJlbnQgdW5pcXVlIGNhc2Ug cmVxdWlyZXMgYSBzZWNvbmQgc3Bvb2wsIGFuZCBzbyB3ZSBtYXkgaGF2ZQorCSAqIHRvIGFjY291 bnQgZm9yIGFub3RoZXIgc2hhcmVkIHdvcmtzcGFjZSAtLSBQQVJBTExFTF9LRVlfVFVQTEVTT1JU X1NQT09MMgogCSAqLwotCWlmICghYnRzcG9vbC0+aXN1bmlxdWUpCisJaWYgKCFidHNwb29sLT5p c3VuaXF1ZSB8fCByZXNldF9zbmFwc2hvdCkKIAkJc2htX3RvY19lc3RpbWF0ZV9rZXlzKCZwY3h0 LT5lc3RpbWF0b3IsIDIpOwogCWVsc2UKIAl7CkBAIC0xNTQxLDYgKzE2NTQsNyBAQCBfYnRfYmVn aW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLCBib29sIGlzY29uY3VycmVudCwg aW50IHJlcXVlc3QpCiAJYnRzaGFyZWQtPmluZGV4cmVsaWQgPSBSZWxhdGlvbkdldFJlbGlkKGJ0 c3Bvb2wtPmluZGV4KTsKIAlidHNoYXJlZC0+aXN1bmlxdWUgPSBidHNwb29sLT5pc3VuaXF1ZTsK IAlidHNoYXJlZC0+bnVsbHNfbm90X2Rpc3RpbmN0ID0gYnRzcG9vbC0+bnVsbHNfbm90X2Rpc3Rp bmN0OworCWJ0c2hhcmVkLT51bmlxdWVfZGVhZF9pZ25vcmVkID0gYnRzcG9vbC0+dW5pcXVlX2Rl YWRfaWdub3JlZDsKIAlidHNoYXJlZC0+aXNjb25jdXJyZW50ID0gaXNjb25jdXJyZW50OwogCWJ0 c2hhcmVkLT5zY2FudHVwbGVzb3J0c3RhdGVzID0gc2NhbnR1cGxlc29ydHN0YXRlczsKIAlidHNo YXJlZC0+cXVlcnlpZCA9IHBnc3RhdF9nZXRfbXlfcXVlcnlfaWQoKTsKQEAgLTE1NjgsOCArMTY4 Miw4IEBAIF9idF9iZWdpbl9wYXJhbGxlbChCVEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIGJvb2wg aXNjb25jdXJyZW50LCBpbnQgcmVxdWVzdCkKIAlzaG1fdG9jX2luc2VydChwY3h0LT50b2MsIFBB UkFMTEVMX0tFWV9CVFJFRV9TSEFSRUQsIGJ0c2hhcmVkKTsKIAlzaG1fdG9jX2luc2VydChwY3h0 LT50b2MsIFBBUkFMTEVMX0tFWV9UVVBMRVNPUlQsIHNoYXJlZHNvcnQpOwogCi0JLyogVW5pcXVl IGNhc2UgcmVxdWlyZXMgYSBzZWNvbmQgc3Bvb2wsIGFuZCBhc3NvY2lhdGVkIHNoYXJlZCBzdGF0 ZSAqLwotCWlmICghYnRzcG9vbC0+aXN1bmlxdWUpCisJLyogTm9uLWNvbmN1cnJlbnQgdW5pcXVl IGNhc2UgcmVxdWlyZXMgYSBzZWNvbmQgc3Bvb2wgYW5kIHNoYXJlZCBzdGF0ZSAqLworCWlmICgh YnRzcG9vbC0+aXN1bmlxdWUgfHwgcmVzZXRfc25hcHNob3QpCiAJCXNoYXJlZHNvcnQyID0gTlVM TDsKIAllbHNlCiAJewpAQCAtMTc1Miw5ICsxODY2LDEwIEBAIF9idF9sZWFkZXJfcGFydGljaXBh dGVfYXNfd29ya2VyKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSkKIAlsZWFkZXJ3b3JrZXItPmlu ZGV4ID0gYnVpbGRzdGF0ZS0+c3Bvb2wtPmluZGV4OwogCWxlYWRlcndvcmtlci0+aXN1bmlxdWUg PSBidWlsZHN0YXRlLT5zcG9vbC0+aXN1bmlxdWU7CiAJbGVhZGVyd29ya2VyLT5udWxsc19ub3Rf ZGlzdGluY3QgPSBidWlsZHN0YXRlLT5zcG9vbC0+bnVsbHNfbm90X2Rpc3RpbmN0OworCWxlYWRl cndvcmtlci0+dW5pcXVlX2RlYWRfaWdub3JlZCA9IGJ1aWxkc3RhdGUtPnNwb29sLT51bmlxdWVf ZGVhZF9pZ25vcmVkOwogCiAJLyogSW5pdGlhbGl6ZSBzZWNvbmQgc3Bvb2wsIGlmIHJlcXVpcmVk ICovCi0JaWYgKCFidGxlYWRlci0+YnRzaGFyZWQtPmlzdW5pcXVlKQorCWlmICghYnRsZWFkZXIt PmJ0c2hhcmVkLT5pc3VuaXF1ZSB8fCAoYnRsZWFkZXItPmJ0c2hhcmVkLT5pc2NvbmN1cnJlbnQg JiYgIUlzb2xhdGlvblVzZXNYYWN0U25hcHNob3QoKSkpCiAJCWxlYWRlcndvcmtlcjIgPSBOVUxM OwogCWVsc2UKIAl7CkBAIC0xODU1LDExICsxOTcwLDEyIEBAIF9idF9wYXJhbGxlbF9idWlsZF9t YWluKGRzbV9zZWdtZW50ICpzZWcsIHNobV90b2MgKnRvYykKIAlidHNwb29sLT5pbmRleCA9IGlu ZGV4UmVsOwogCWJ0c3Bvb2wtPmlzdW5pcXVlID0gYnRzaGFyZWQtPmlzdW5pcXVlOwogCWJ0c3Bv b2wtPm51bGxzX25vdF9kaXN0aW5jdCA9IGJ0c2hhcmVkLT5udWxsc19ub3RfZGlzdGluY3Q7CisJ YnRzcG9vbC0+dW5pcXVlX2RlYWRfaWdub3JlZCA9IGJ0c2hhcmVkLT51bmlxdWVfZGVhZF9pZ25v cmVkOwogCiAJLyogTG9vayB1cCBzaGFyZWQgc3RhdGUgcHJpdmF0ZSB0byB0dXBsZXNvcnQuYyAq LwogCXNoYXJlZHNvcnQgPSBzaG1fdG9jX2xvb2t1cCh0b2MsIFBBUkFMTEVMX0tFWV9UVVBMRVNP UlQsIGZhbHNlKTsKIAl0dXBsZXNvcnRfYXR0YWNoX3NoYXJlZChzaGFyZWRzb3J0LCBzZWcpOwot CWlmICghYnRzaGFyZWQtPmlzdW5pcXVlKQorCWlmICghYnRzaGFyZWQtPmlzdW5pcXVlIHx8IChi dHNoYXJlZC0+aXNjb25jdXJyZW50ICYmICFJc29sYXRpb25Vc2VzWGFjdFNuYXBzaG90KCkpKQog CXsKIAkJYnRzcG9vbDIgPSBOVUxMOwogCQlzaGFyZWRzb3J0MiA9IE5VTEw7CkBAIC0xOTM5LDYg KzIwNTUsNyBAQCBfYnRfcGFyYWxsZWxfc2Nhbl9hbmRfc29ydChCVFNwb29sICpidHNwb29sLCBC VFNwb29sICpidHNwb29sMiwKIAkJCQkJCQkJCQkJCQkgYnRzcG9vbC0+aW5kZXgsCiAJCQkJCQkJ CQkJCQkJIGJ0c3Bvb2wtPmlzdW5pcXVlLAogCQkJCQkJCQkJCQkJCSBidHNwb29sLT5udWxsc19u b3RfZGlzdGluY3QsCisJCQkJCQkJCQkJCQkJIGJ0c3Bvb2wtPnVuaXF1ZV9kZWFkX2lnbm9yZWQs CiAJCQkJCQkJCQkJCQkJIHNvcnRtZW0sIGNvb3JkaW5hdGUsCiAJCQkJCQkJCQkJCQkJIFRVUExF U09SVF9OT05FKTsKIApAQCAtMTk2MSwxNCArMjA3OCwxMiBAQCBfYnRfcGFyYWxsZWxfc2Nhbl9h bmRfc29ydChCVFNwb29sICpidHNwb29sLCBCVFNwb29sICpidHNwb29sMiwKIAkJY29vcmRpbmF0 ZTItPm5QYXJ0aWNpcGFudHMgPSAtMTsKIAkJY29vcmRpbmF0ZTItPnNoYXJlZHNvcnQgPSBzaGFy ZWRzb3J0MjsKIAkJYnRzcG9vbDItPnNvcnRzdGF0ZSA9Ci0JCQl0dXBsZXNvcnRfYmVnaW5faW5k ZXhfYnRyZWUoYnRzcG9vbC0+aGVhcCwgYnRzcG9vbC0+aW5kZXgsIGZhbHNlLCBmYWxzZSwKKwkJ CXR1cGxlc29ydF9iZWdpbl9pbmRleF9idHJlZShidHNwb29sLT5oZWFwLCBidHNwb29sLT5pbmRl eCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwKIAkJCQkJCQkJCQlNaW4oc29ydG1lbSwgd29ya19tZW0p LCBjb29yZGluYXRlMiwKIAkJCQkJCQkJCQlmYWxzZSk7CiAJfQogCiAJLyogRmlsbCBpbiBidWls ZHN0YXRlIGZvciBfYnRfYnVpbGRfY2FsbGJhY2soKSAqLwotCWJ1aWxkc3RhdGUuaXN1bmlxdWUg PSBidHNoYXJlZC0+aXN1bmlxdWU7Ci0JYnVpbGRzdGF0ZS5udWxsc19ub3RfZGlzdGluY3QgPSBi dHNoYXJlZC0+bnVsbHNfbm90X2Rpc3RpbmN0OwogCWJ1aWxkc3RhdGUuaGF2ZWRlYWQgPSBmYWxz ZTsKIAlidWlsZHN0YXRlLmhlYXAgPSBidHNwb29sLT5oZWFwOwogCWJ1aWxkc3RhdGUuc3Bvb2wg PSBidHNwb29sOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzcGxp dGxvYy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzcGxpdGxvYy5jCmluZGV4IGRl OWVjYTNjOGIyLi5iMTc0ZmI4ZDNlZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL25i dHJlZS9uYnRzcGxpdGxvYy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c3Bs aXRsb2MuYwpAQCAtNjg4LDcgKzY4OCw3IEBAIF9idF9hZnRlcm5ld2l0ZW1vZmYoRmluZFNwbGl0 RGF0YSAqc3RhdGUsIE9mZnNldE51bWJlciBtYXhvZmYsCiAJewogCQlpdGVtaWQgPSBQYWdlR2V0 SXRlbUlkKHN0YXRlLT5vcmlncGFnZSwgbWF4b2ZmKTsKIAkJdHVwID0gKEluZGV4VHVwbGUpIFBh Z2VHZXRJdGVtKHN0YXRlLT5vcmlncGFnZSwgaXRlbWlkKTsKLQkJa2VlcG5hdHRzID0gX2J0X2tl ZXBfbmF0dHNfZmFzdChzdGF0ZS0+cmVsLCB0dXAsIHN0YXRlLT5uZXdpdGVtKTsKKwkJa2VlcG5h dHRzID0gX2J0X2tlZXBfbmF0dHNfZmFzdChzdGF0ZS0+cmVsLCB0dXAsIHN0YXRlLT5uZXdpdGVt LCBOVUxMKTsKIAogCQlpZiAoa2VlcG5hdHRzID4gMSAmJiBrZWVwbmF0dHMgPD0gbmtleWF0dHMp CiAJCXsKQEAgLTcxOSw3ICs3MTksNyBAQCBfYnRfYWZ0ZXJuZXdpdGVtb2ZmKEZpbmRTcGxpdERh dGEgKnN0YXRlLCBPZmZzZXROdW1iZXIgbWF4b2ZmLAogCQkhX2J0X2FkamFjZW50aHRpZCgmdHVw LT50X3RpZCwgJnN0YXRlLT5uZXdpdGVtLT50X3RpZCkpCiAJCXJldHVybiBmYWxzZTsKIAkvKiBD aGVjayBzYW1lIGNvbmRpdGlvbnMgYXMgcmlnaHRtb3N0IGl0ZW0gY2FzZSwgdG9vICovCi0Ja2Vl cG5hdHRzID0gX2J0X2tlZXBfbmF0dHNfZmFzdChzdGF0ZS0+cmVsLCB0dXAsIHN0YXRlLT5uZXdp dGVtKTsKKwlrZWVwbmF0dHMgPSBfYnRfa2VlcF9uYXR0c19mYXN0KHN0YXRlLT5yZWwsIHR1cCwg c3RhdGUtPm5ld2l0ZW0sIE5VTEwpOwogCiAJaWYgKGtlZXBuYXR0cyA+IDEgJiYga2VlcG5hdHRz IDw9IG5rZXlhdHRzKQogCXsKQEAgLTk2OCw3ICs5NjgsNyBAQCBfYnRfc3RyYXRlZ3koRmluZFNw bGl0RGF0YSAqc3RhdGUsIFNwbGl0UG9pbnQgKmxlZnRwYWdlLAogCSAqIGF2b2lkIGFwcGVuZGlu ZyBhIGhlYXAgVElEIGluIG5ldyBoaWdoIGtleSwgd2UncmUgZG9uZS4gIEZpbmlzaCBzcGxpdAog CSAqIHdpdGggZGVmYXVsdCBzdHJhdGVneSBhbmQgaW5pdGlhbCBzcGxpdCBpbnRlcnZhbC4KIAkg Ki8KLQlwZXJmZWN0cGVuYWx0eSA9IF9idF9rZWVwX25hdHRzX2Zhc3Qoc3RhdGUtPnJlbCwgbGVm dG1vc3QsIHJpZ2h0bW9zdCk7CisJcGVyZmVjdHBlbmFsdHkgPSBfYnRfa2VlcF9uYXR0c19mYXN0 KHN0YXRlLT5yZWwsIGxlZnRtb3N0LCByaWdodG1vc3QsIE5VTEwpOwogCWlmIChwZXJmZWN0cGVu YWx0eSA8PSBpbmRua2V5YXR0cykKIAkJcmV0dXJuIHBlcmZlY3RwZW5hbHR5OwogCkBAIC05ODks NyArOTg5LDcgQEAgX2J0X3N0cmF0ZWd5KEZpbmRTcGxpdERhdGEgKnN0YXRlLCBTcGxpdFBvaW50 ICpsZWZ0cGFnZSwKIAkgKiBJZiBwYWdlIGlzIGVudGlyZWx5IGZ1bGwgb2YgZHVwbGljYXRlcywg YSBzaW5nbGUgdmFsdWUgc3RyYXRlZ3kgc3BsaXQKIAkgKiB3aWxsIGJlIHBlcmZvcm1lZC4KIAkg Ki8KLQlwZXJmZWN0cGVuYWx0eSA9IF9idF9rZWVwX25hdHRzX2Zhc3Qoc3RhdGUtPnJlbCwgbGVm dG1vc3QsIHJpZ2h0bW9zdCk7CisJcGVyZmVjdHBlbmFsdHkgPSBfYnRfa2VlcF9uYXR0c19mYXN0 KHN0YXRlLT5yZWwsIGxlZnRtb3N0LCByaWdodG1vc3QsIE5VTEwpOwogCWlmIChwZXJmZWN0cGVu YWx0eSA8PSBpbmRua2V5YXR0cykKIAl7CiAJCSpzdHJhdGVneSA9IFNQTElUX01BTllfRFVQTElD QVRFUzsKQEAgLTEwMjgsNyArMTAyOCw3IEBAIF9idF9zdHJhdGVneShGaW5kU3BsaXREYXRhICpz dGF0ZSwgU3BsaXRQb2ludCAqbGVmdHBhZ2UsCiAJCWl0ZW1pZCA9IFBhZ2VHZXRJdGVtSWQoc3Rh dGUtPm9yaWdwYWdlLCBQX0hJS0VZKTsKIAkJaGlrZXkgPSAoSW5kZXhUdXBsZSkgUGFnZUdldEl0 ZW0oc3RhdGUtPm9yaWdwYWdlLCBpdGVtaWQpOwogCQlwZXJmZWN0cGVuYWx0eSA9IF9idF9rZWVw X25hdHRzX2Zhc3Qoc3RhdGUtPnJlbCwgaGlrZXksCi0JCQkJCQkJCQkJCSBzdGF0ZS0+bmV3aXRl bSk7CisJCQkJCQkJCQkJCSBzdGF0ZS0+bmV3aXRlbSwgTlVMTCk7CiAJCWlmIChwZXJmZWN0cGVu YWx0eSA8PSBpbmRua2V5YXR0cykKIAkJCSpzdHJhdGVneSA9IFNQTElUX1NJTkdMRV9WQUxVRTsK IAkJZWxzZQpAQCAtMTE1MCw3ICsxMTUwLDcgQEAgX2J0X3NwbGl0X3BlbmFsdHkoRmluZFNwbGl0 RGF0YSAqc3RhdGUsIFNwbGl0UG9pbnQgKnNwbGl0KQogCWxhc3RsZWZ0ID0gX2J0X3NwbGl0X2xh c3RsZWZ0KHN0YXRlLCBzcGxpdCk7CiAJZmlyc3RyaWdodCA9IF9idF9zcGxpdF9maXJzdHJpZ2h0 KHN0YXRlLCBzcGxpdCk7CiAKLQlyZXR1cm4gX2J0X2tlZXBfbmF0dHNfZmFzdChzdGF0ZS0+cmVs LCBsYXN0bGVmdCwgZmlyc3RyaWdodCk7CisJcmV0dXJuIF9idF9rZWVwX25hdHRzX2Zhc3Qoc3Rh dGUtPnJlbCwgbGFzdGxlZnQsIGZpcnN0cmlnaHQsIE5VTEwpOwogfQogCiAvKgpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnR1dGlscy5jIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL25idHJlZS9uYnR1dGlscy5jCmluZGV4IDAxNGZhYTE2MjJmLi5iNjliYjYxY2U0MiAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnR1dGlscy5jCisrKyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0dXRpbHMuYwpAQCAtMzIsOSArMzIsNiBAQAogCiAKIHN0 YXRpYyBpbnQJX2J0X2NvbXBhcmVfaW50KGNvbnN0IHZvaWQgKnZhLCBjb25zdCB2b2lkICp2Yik7 Ci1zdGF0aWMgaW50CV9idF9rZWVwX25hdHRzKFJlbGF0aW9uIHJlbCwgSW5kZXhUdXBsZSBsYXN0 bGVmdCwKLQkJCQkJCSAgIEluZGV4VHVwbGUgZmlyc3RyaWdodCwgQlRTY2FuSW5zZXJ0IGl0dXBf a2V5KTsKLQogCiAvKgogICogX2J0X21rc2NhbmtleQpAQCAtNzA3LDcgKzcwNCw3IEBAIF9idF90 cnVuY2F0ZShSZWxhdGlvbiByZWwsIEluZGV4VHVwbGUgbGFzdGxlZnQsIEluZGV4VHVwbGUgZmly c3RyaWdodCwKIAlBc3NlcnQoIUJUcmVlVHVwbGVJc1Bpdm90KGxhc3RsZWZ0KSAmJiAhQlRyZWVU dXBsZUlzUGl2b3QoZmlyc3RyaWdodCkpOwogCiAJLyogRGV0ZXJtaW5lIGhvdyBtYW55IGF0dHJp YnV0ZXMgbXVzdCBiZSBrZXB0IGluIHRydW5jYXRlZCB0dXBsZSAqLwotCWtlZXBuYXR0cyA9IF9i dF9rZWVwX25hdHRzKHJlbCwgbGFzdGxlZnQsIGZpcnN0cmlnaHQsIGl0dXBfa2V5KTsKKwlrZWVw bmF0dHMgPSBfYnRfa2VlcF9uYXR0cyhyZWwsIGxhc3RsZWZ0LCBmaXJzdHJpZ2h0LCBpdHVwX2tl eSwgTlVMTCk7CiAKICNpZmRlZiBERUJVR19OT19UUlVOQ0FURQogCS8qIEZvcmNlIHRydW5jYXRp b24gdG8gYmUgaW5lZmZlY3RpdmUgZm9yIHRlc3RpbmcgcHVycG9zZXMgKi8KQEAgLTgyNSwxNyAr ODIyLDI0IEBAIF9idF90cnVuY2F0ZShSZWxhdGlvbiByZWwsIEluZGV4VHVwbGUgbGFzdGxlZnQs IEluZGV4VHVwbGUgZmlyc3RyaWdodCwKIC8qCiAgKiBfYnRfa2VlcF9uYXR0cyAtIGhvdyBtYW55 IGtleSBhdHRyaWJ1dGVzIHRvIGtlZXAgd2hlbiB0cnVuY2F0aW5nLgogICoKKyAqIFRoaXMgaXMg ZXhwb3J0ZWQgdG8gYmUgdXNlZCBhcyBjb21wYXJpc29uIGZ1bmN0aW9uIGR1cmluZyBjb25jdXJy ZW50CisgKiB1bmlxdWUgaW5kZXggYnVpbGQgaW4gY2FzZSBfYnRfa2VlcF9uYXR0c19mYXN0IGlz IG5vdCBzdWl0YWJsZSBiZWNhdXNlCisgKiBjb2xsYXRpb24gaXMgbm90ICJhbGxlcXVhbGltYWdl Ii9kZWR1cGxpY2F0aW9uLXNhZmUuCisgKgogICogQ2FsbGVyIHByb3ZpZGVzIHR3byB0dXBsZXMg dGhhdCBlbmNsb3NlIGEgc3BsaXQgcG9pbnQuICBDYWxsZXIncyBpbnNlcnRpb24KICAqIHNjYW5r ZXkgaXMgdXNlZCB0byBjb21wYXJlIHRoZSB0dXBsZXM7IHRoZSBzY2Fua2V5J3MgYXJndW1lbnQg dmFsdWVzIGFyZQogICogbm90IGNvbnNpZGVyZWQgaGVyZS4KICAqCisgKiBoYXNudWxscyB2YWx1 ZSBzZXQgdG8gdHJ1ZSBpbiBjYXNlIG9mIGFueSBudWxsIGNvbHVtbiBpbiBhbnkgdHVwbGUuCisg KgogICogVGhpcyBjYW4gcmV0dXJuIGEgbnVtYmVyIG9mIGF0dHJpYnV0ZXMgdGhhdCBpcyBvbmUg Z3JlYXRlciB0aGFuIHRoZQogICogbnVtYmVyIG9mIGtleSBhdHRyaWJ1dGVzIGZvciB0aGUgaW5k ZXggcmVsYXRpb24uICBUaGlzIGluZGljYXRlcyB0aGF0IHRoZQogICogY2FsbGVyIG11c3QgdXNl IGEgaGVhcCBUSUQgYXMgYSB1bmlxdWUtaWZpZXIgaW4gbmV3IHBpdm90IHR1cGxlLgogICovCi1z dGF0aWMgaW50CitpbnQKIF9idF9rZWVwX25hdHRzKFJlbGF0aW9uIHJlbCwgSW5kZXhUdXBsZSBs YXN0bGVmdCwgSW5kZXhUdXBsZSBmaXJzdHJpZ2h0LAotCQkJICAgQlRTY2FuSW5zZXJ0IGl0dXBf a2V5KQorCQkJICAgQlRTY2FuSW5zZXJ0IGl0dXBfa2V5LAorCQkJICAgYm9vbCAqaGFzbnVsbHMp CiB7CiAJaW50CQkJbmtleWF0dHMgPSBJbmRleFJlbGF0aW9uR2V0TnVtYmVyT2ZLZXlBdHRyaWJ1 dGVzKHJlbCk7CiAJVHVwbGVEZXNjCWl0dXBkZXNjID0gUmVsYXRpb25HZXREZXNjcihyZWwpOwpA QCAtODYxLDYgKzg2NSw4IEBAIF9idF9rZWVwX25hdHRzKFJlbGF0aW9uIHJlbCwgSW5kZXhUdXBs ZSBsYXN0bGVmdCwgSW5kZXhUdXBsZSBmaXJzdHJpZ2h0LAogCiAJCWRhdHVtMSA9IGluZGV4X2dl dGF0dHIobGFzdGxlZnQsIGF0dG51bSwgaXR1cGRlc2MsICZpc051bGwxKTsKIAkJZGF0dW0yID0g aW5kZXhfZ2V0YXR0cihmaXJzdHJpZ2h0LCBhdHRudW0sIGl0dXBkZXNjLCAmaXNOdWxsMik7CisJ CWlmIChoYXNudWxscykKKwkJCSpoYXNudWxscyB8PSBpc051bGwxIHwgaXNOdWxsMjsKIAogCQlp ZiAoaXNOdWxsMSAhPSBpc051bGwyKQogCQkJYnJlYWs7CkBAIC04ODAsNyArODg2LDcgQEAgX2J0 X2tlZXBfbmF0dHMoUmVsYXRpb24gcmVsLCBJbmRleFR1cGxlIGxhc3RsZWZ0LCBJbmRleFR1cGxl IGZpcnN0cmlnaHQsCiAJICogZXhwZWN0ZWQgaW4gYW4gYWxsZXF1YWxpbWFnZSBpbmRleC4KIAkg Ki8KIAlBc3NlcnQoIWl0dXBfa2V5LT5hbGxlcXVhbGltYWdlIHx8Ci0JCSAgIGtlZXBuYXR0cyA9 PSBfYnRfa2VlcF9uYXR0c19mYXN0KHJlbCwgbGFzdGxlZnQsIGZpcnN0cmlnaHQpKTsKKwkJICAg a2VlcG5hdHRzID09IF9idF9rZWVwX25hdHRzX2Zhc3QocmVsLCBsYXN0bGVmdCwgZmlyc3RyaWdo dCwgTlVMTCkpOwogCiAJcmV0dXJuIGtlZXBuYXR0czsKIH0KQEAgLTg5MSw3ICs4OTcsOCBAQCBf YnRfa2VlcF9uYXR0cyhSZWxhdGlvbiByZWwsIEluZGV4VHVwbGUgbGFzdGxlZnQsIEluZGV4VHVw bGUgZmlyc3RyaWdodCwKICAqIFRoaXMgaXMgZXhwb3J0ZWQgc28gdGhhdCBhIGNhbmRpZGF0ZSBz cGxpdCBwb2ludCBjYW4gaGF2ZSBpdHMgZWZmZWN0IG9uCiAgKiBzdWZmaXggdHJ1bmNhdGlvbiBp bmV4cGVuc2l2ZWx5IGV2YWx1YXRlZCBhaGVhZCBvZiB0aW1lIHdoZW4gZmluZGluZyBhCiAgKiBz cGxpdCBsb2NhdGlvbi4gIEEgbmFpdmUgYml0d2lzZSBhcHByb2FjaCB0byBkYXR1bSBjb21wYXJp c29ucyBpcyB1c2VkIHRvCi0gKiBzYXZlIGN5Y2xlcy4KKyAqIHNhdmUgY3ljbGVzLiBBbHNvLCBp dCBtYXkgYmUgdXNlZCBhcyBjb21wYXJpc29uIGZ1bmN0aW9uIGR1cmluZyBjb25jdXJyZW50Cisg KiBidWlsZCBvZiB1bmlxdWUgaW5kZXguCiAgKgogICogVGhlIGFwcHJvYWNoIHRha2VuIGhlcmUg dXN1YWxseSBwcm92aWRlcyB0aGUgc2FtZSBhbnN3ZXIgYXMgX2J0X2tlZXBfbmF0dHMKICAqIHdp bGwgKGZvciB0aGUgc2FtZSBwYWlyIG9mIHR1cGxlcyBmcm9tIGEgaGVhcGtleXNwYWNlIGluZGV4 KSwgc2luY2UgdGhlCkBAIC05MDAsNiArOTA3LDggQEAgX2J0X2tlZXBfbmF0dHMoUmVsYXRpb24g cmVsLCBJbmRleFR1cGxlIGxhc3RsZWZ0LCBJbmRleFR1cGxlIGZpcnN0cmlnaHQsCiAgKiAiZXF1 YWwgaW1hZ2UiIGNvbHVtbnMsIHJvdXRpbmUgaXMgZ3VhcmFudGVlZCB0byBnaXZlIHRoZSBzYW1l IHJlc3VsdCBhcwogICogX2J0X2tlZXBfbmF0dHMgd291bGQuCiAgKgorICogaGFzbnVsbHMgdmFs dWUgc2V0IHRvIHRydWUgaW4gY2FzZSBvZiBhbnkgbnVsbCBjb2x1bW4gaW4gYW55IHR1cGxlLgor ICoKICAqIENhbGxlcnMgY2FuIHJlbHkgb24gdGhlIGZhY3QgdGhhdCBhdHRyaWJ1dGVzIGNvbnNp ZGVyZWQgZXF1YWwgaGVyZSBhcmUKICAqIGRlZmluaXRlbHkgYWxzbyBlcXVhbCBhY2NvcmRpbmcg dG8gX2J0X2tlZXBfbmF0dHMsIGV2ZW4gd2hlbiB0aGUgaW5kZXggdXNlcwogICogYW4gb3BjbGFz cyBvciBjb2xsYXRpb24gdGhhdCBpcyBub3QgImFsbGVxdWFsaW1hZ2UiL2RlZHVwbGljYXRpb24t c2FmZS4KQEAgLTkwOCw3ICs5MTcsOCBAQCBfYnRfa2VlcF9uYXR0cyhSZWxhdGlvbiByZWwsIElu ZGV4VHVwbGUgbGFzdGxlZnQsIEluZGV4VHVwbGUgZmlyc3RyaWdodCwKICAqIG1vcmUgYmFsYW5j ZWQgc3BsaXQgcG9pbnQuCiAgKi8KIGludAotX2J0X2tlZXBfbmF0dHNfZmFzdChSZWxhdGlvbiBy ZWwsIEluZGV4VHVwbGUgbGFzdGxlZnQsIEluZGV4VHVwbGUgZmlyc3RyaWdodCkKK19idF9rZWVw X25hdHRzX2Zhc3QoUmVsYXRpb24gcmVsLCBJbmRleFR1cGxlIGxhc3RsZWZ0LCBJbmRleFR1cGxl IGZpcnN0cmlnaHQsCisJCQkJCWJvb2wgKmhhc251bGxzKQogewogCVR1cGxlRGVzYwlpdHVwZGVz YyA9IFJlbGF0aW9uR2V0RGVzY3IocmVsKTsKIAlpbnQJCQlrZXlzeiA9IEluZGV4UmVsYXRpb25H ZXROdW1iZXJPZktleUF0dHJpYnV0ZXMocmVsKTsKQEAgLTkyNSw2ICs5MzUsOCBAQCBfYnRfa2Vl cF9uYXR0c19mYXN0KFJlbGF0aW9uIHJlbCwgSW5kZXhUdXBsZSBsYXN0bGVmdCwgSW5kZXhUdXBs ZSBmaXJzdHJpZ2h0KQogCiAJCWRhdHVtMSA9IGluZGV4X2dldGF0dHIobGFzdGxlZnQsIGF0dG51 bSwgaXR1cGRlc2MsICZpc051bGwxKTsKIAkJZGF0dW0yID0gaW5kZXhfZ2V0YXR0cihmaXJzdHJp Z2h0LCBhdHRudW0sIGl0dXBkZXNjLCAmaXNOdWxsMik7CisJCWlmIChoYXNudWxscykKKwkJCSpo YXNudWxscyB8PSBpc051bGwxIHwgaXNOdWxsMjsKIAkJYXR0ID0gVHVwbGVEZXNjQ29tcGFjdEF0 dHIoaXR1cGRlc2MsIGF0dG51bSAtIDEpOwogCiAJCWlmIChpc051bGwxICE9IGlzTnVsbDIpCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMgYi9zcmMvYmFja2VuZC9jYXRh bG9nL2luZGV4LmMKaW5kZXggY2UwMTdlODM2YmUuLmZhMDczYTMzYjY1IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRl eC5jCkBAIC0zMzQ0LDkgKzMzNDQsOSBAQCBJbmRleENoZWNrRXhjbHVzaW9uKFJlbGF0aW9uIGhl YXBSZWxhdGlvbiwKICAqIGlmIHdlIHVzZWQgSGVhcFR1cGxlU2F0aXNmaWVzVmFjdXVtKS4gIFRo aXMgbGVhdmVzIHVzIHdpdGggYW4gaW5kZXggdGhhdAogICogZG9lcyBub3QgY29udGFpbiBhbnkg dHVwbGVzIGFkZGVkIHRvIHRoZSB0YWJsZSB3aGlsZSB3ZSBidWlsdCB0aGUgaW5kZXguCiAgKgot ICogRnVydGhlcm1vcmUsIGluIGNhc2Ugb2Ygbm9uLXVuaXF1ZSBpbmRleCB3ZSBzZXQgU09fUkVT RVRfU05BUFNIT1QgZm9yIHRoZQotICogc2Nhbiwgd2hpY2ggY2F1c2VzIG5ldyBzbmFwc2hvdCB0 byBiZSBzZXQgYXMgYWN0aXZlIGV2ZXJ5IHNvIG9mdGVuLiBUaGUgcmVhc29uCi0gKiBmb3IgdGhh dCBpcyB0byBwcm9wYWdhdGUgdGhlIHhtaW4gaG9yaXpvbiBmb3J3YXJkLgorICogRnVydGhlcm1v cmUsIHdlIHNldCBTT19SRVNFVF9TTkFQU0hPVCBmb3IgdGhlIHNjYW4sIHdoaWNoIGNhdXNlcyBu ZXcKKyAqIHNuYXBzaG90IHRvIGJlIHNldCBhcyBhY3RpdmUgZXZlcnkgc28gb2Z0ZW4uIFRoZSBy ZWFzb24gZm9yIHRoYXQgaXMgdG8KKyAqIHByb3BhZ2F0ZSB0aGUgeG1pbiBob3Jpem9uIGZvcndh cmQuCiAgKgogICogTmV4dCwgd2UgbWFyayB0aGUgaW5kZXggImluZGlzcmVhZHkiIChidXQgc3Rp bGwgbm90ICJpbmRpc3ZhbGlkIikgYW5kCiAgKiBjb21taXQgdGhlIHNlY29uZCB0cmFuc2FjdGlv biBhbmQgc3RhcnQgYSB0aGlyZC4gIEFnYWluIHdlIHdhaXQgZm9yIGFsbApkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9p bmRleGNtZHMuYwppbmRleCBiZTNkYzVlOGQyOC4uOWZmZjg2MzVkM2QgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRz L2luZGV4Y21kcy5jCkBAIC0xNzA0LDggKzE3MDQsOCBAQCBEZWZpbmVJbmRleChQYXJzZVN0YXRl ICpwc3RhdGUsCiAJICogY2hhaW5zIGNhbiBiZSBjcmVhdGVkIHdoZXJlIHRoZSBuZXcgdHVwbGUg YW5kIHRoZSBvbGQgdHVwbGUgaW4gdGhlCiAJICogY2hhaW4gaGF2ZSBkaWZmZXJlbnQgaW5kZXgg a2V5cy4KIAkgKgotCSAqIFdlIGJ1aWxkIHRoZSBpbmRleCB1c2luZyBhbGwgdHVwbGVzIHRoYXQg YXJlIHZpc2libGUgdXNpbmcgc2luZ2xlIG9yCi0JICogbXVsdGlwbGUgcmVmcmVzaGluZyBzbmFw c2hvdHMuIFdlIGNhbiBiZSBzdXJlIHRoYXQgYW55IEhPVCB1cGRhdGVzIHRvCisJICogV2UgYnVp bGQgdGhlIGluZGV4IHVzaW5nIGFsbCB0dXBsZXMgdGhhdCBhcmUgdmlzaWJsZSB1c2luZyBtdWx0 aXBsZQorCSAqIHJlZnJlc2hpbmcgc25hcHNob3RzLiBXZSBjYW4gYmUgc3VyZSB0aGF0IGFueSBI T1QgdXBkYXRlcyB0bwogCSAqIHRoZXNlIHR1cGxlcyB3aWxsIGJlIGNvbXBhdGlibGUgd2l0aCB0 aGUgaW5kZXgsIHNpbmNlIGFueSB1cGRhdGVzIG1hZGUKIAkgKiBieSB0cmFuc2FjdGlvbnMgdGhh dCBkaWRuJ3Qga25vdyBhYm91dCB0aGUgaW5kZXggYXJlIG5vdyBjb21taXR0ZWQgb3IKIAkgKiBy b2xsZWQgYmFjay4gIFRodXMsIGVhY2ggdmlzaWJsZSB0dXBsZSBpcyBlaXRoZXIgdGhlIGVuZCBv ZiBpdHMKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL3NvcnQvdHVwbGVzb3J0dmFyaWFu dHMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL3NvcnQvdHVwbGVzb3J0dmFyaWFudHMuYwppbmRleCAy NTA5YWMzZTNhNC4uMWEyYThiNjRhYTcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL3Nv cnQvdHVwbGVzb3J0dmFyaWFudHMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9zb3J0L3R1cGxl c29ydHZhcmlhbnRzLmMKQEAgLTI1LDYgKzI1LDggQEAKICNpbmNsdWRlICJhY2Nlc3MvaGFzaC5o IgogI2luY2x1ZGUgImFjY2Vzcy9odHVwX2RldGFpbHMuaCIKICNpbmNsdWRlICJhY2Nlc3MvbmJ0 cmVlLmgiCisjaW5jbHVkZSAiYWNjZXNzL3JlbHNjYW4uaCIKKyNpbmNsdWRlICJhY2Nlc3MvdGFi bGVhbS5oIgogI2luY2x1ZGUgImNhdGFsb2cvaW5kZXguaCIKICNpbmNsdWRlICJjYXRhbG9nL3Bn X2NvbGxhdGlvbi5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWN1dG9yLmgiCkBAIC0zNSw2ICsz Nyw3IEBACiAjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVs LmgiCiAjaW5jbHVkZSAidXRpbHMvdHVwbGVzb3J0LmgiCisjaW5jbHVkZSAic3RvcmFnZS9wcm9j LmgiCiAKIAogLyogc29ydC10eXBlIGNvZGVzIGZvciBzb3J0X19zdGFydCBwcm9iZXMgKi8KQEAg LTEzNiw2ICsxMzksNyBAQCB0eXBlZGVmIHN0cnVjdAogCiAJYm9vbAkJZW5mb3JjZVVuaXF1ZTsJ LyogY29tcGxhaW4gaWYgd2UgZmluZCBkdXBsaWNhdGUgdHVwbGVzICovCiAJYm9vbAkJdW5pcXVl TnVsbHNOb3REaXN0aW5jdDsgLyogdW5pcXVlIGNvbnN0cmFpbnQgbnVsbCB0cmVhdG1lbnQgKi8K Kwlib29sCQl1bmlxdWVEZWFkSWdub3JlZDsgLyogaWdub3JlIGRlYWQgdHVwbGVzIGluIHVuaXF1 ZSBjaGVjayAqLwogfSBUdXBsZXNvcnRJbmRleEJUcmVlQXJnOwogCiAvKgpAQCAtMzYxLDYgKzM2 NSw3IEBAIHR1cGxlc29ydF9iZWdpbl9pbmRleF9idHJlZShSZWxhdGlvbiBoZWFwUmVsLAogCQkJ CQkJCVJlbGF0aW9uIGluZGV4UmVsLAogCQkJCQkJCWJvb2wgZW5mb3JjZVVuaXF1ZSwKIAkJCQkJ CQlib29sIHVuaXF1ZU51bGxzTm90RGlzdGluY3QsCisJCQkJCQkJYm9vbCB1bmlxdWVEZWFkSWdu b3JlZCwKIAkJCQkJCQlpbnQgd29ya01lbSwKIAkJCQkJCQlTb3J0Q29vcmRpbmF0ZSBjb29yZGlu YXRlLAogCQkJCQkJCWludCBzb3J0b3B0KQpAQCAtNDAzLDYgKzQwOCw3IEBAIHR1cGxlc29ydF9i ZWdpbl9pbmRleF9idHJlZShSZWxhdGlvbiBoZWFwUmVsLAogCWFyZy0+aW5kZXguaW5kZXhSZWwg PSBpbmRleFJlbDsKIAlhcmctPmVuZm9yY2VVbmlxdWUgPSBlbmZvcmNlVW5pcXVlOwogCWFyZy0+ dW5pcXVlTnVsbHNOb3REaXN0aW5jdCA9IHVuaXF1ZU51bGxzTm90RGlzdGluY3Q7CisJYXJnLT51 bmlxdWVEZWFkSWdub3JlZCA9IHVuaXF1ZURlYWRJZ25vcmVkOwogCiAJaW5kZXhTY2FuS2V5ID0g X2J0X21rc2NhbmtleShpbmRleFJlbCwgTlVMTCk7CiAKQEAgLTE2NzAsNiArMTY3Niw3IEBAIGNv bXBhcmV0dXBfaW5kZXhfYnRyZWVfdGllYnJlYWsoY29uc3QgU29ydFR1cGxlICphLCBjb25zdCBT b3J0VHVwbGUgKmIsCiAJCURhdHVtCQl2YWx1ZXNbSU5ERVhfTUFYX0tFWVNdOwogCQlib29sCQlp c251bGxbSU5ERVhfTUFYX0tFWVNdOwogCQljaGFyCSAgICprZXlfZGVzYzsKKwkJYm9vbAkJdW5p cXVlQ2hlY2tGYWlsID0gdHJ1ZTsKIAogCQkvKgogCQkgKiBTb21lIHJhdGhlciBicmFpbi1kZWFk IGltcGxlbWVudGF0aW9ucyBvZiBxc29ydCAoc3VjaCBhcyB0aGUgb25lIGluCkBAIC0xNjc5LDE4 ICsxNjg2LDY3IEBAIGNvbXBhcmV0dXBfaW5kZXhfYnRyZWVfdGllYnJlYWsoY29uc3QgU29ydFR1 cGxlICphLCBjb25zdCBTb3J0VHVwbGUgKmIsCiAJCSAqLwogCQlBc3NlcnQodHVwbGUxICE9IHR1 cGxlMik7CiAKLQkJaW5kZXhfZGVmb3JtX3R1cGxlKHR1cGxlMSwgdHVwRGVzLCB2YWx1ZXMsIGlz bnVsbCk7Ci0KLQkJa2V5X2Rlc2MgPSBCdWlsZEluZGV4VmFsdWVEZXNjcmlwdGlvbihhcmctPmlu ZGV4LmluZGV4UmVsLCB2YWx1ZXMsIGlzbnVsbCk7Ci0KLQkJZXJlcG9ydChFUlJPUiwKLQkJCQko ZXJyY29kZShFUlJDT0RFX1VOSVFVRV9WSU9MQVRJT04pLAotCQkJCSBlcnJtc2coImNvdWxkIG5v dCBjcmVhdGUgdW5pcXVlIGluZGV4IFwiJXNcIiIsCi0JCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9u TmFtZShhcmctPmluZGV4LmluZGV4UmVsKSksCi0JCQkJIGtleV9kZXNjID8gZXJyZGV0YWlsKCJL ZXkgJXMgaXMgZHVwbGljYXRlZC4iLCBrZXlfZGVzYykgOgotCQkJCSBlcnJkZXRhaWwoIkR1cGxp Y2F0ZSBrZXlzIGV4aXN0LiIpLAotCQkJCSBlcnJ0YWJsZWNvbnN0cmFpbnQoYXJnLT5pbmRleC5o ZWFwUmVsLAotCQkJCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUoYXJnLT5pbmRleC5pbmRl eFJlbCkpKSk7CisJCS8qIFRoaXMgaXMgZmFpbC1mYXN0IGNoZWNrLCBzZWUgX2J0X2xvYWQgZm9y IGRldGFpbHMuICovCisJCWlmIChhcmctPnVuaXF1ZURlYWRJZ25vcmVkKQorCQl7CisJCQlib29s CWFueV90dXBsZV9kZWFkLAorCQkJCQljYWxsX2FnYWluID0gZmFsc2UsCisJCQkJCWlnbm9yZWQ7 CisJCQkvKgorCQkJICogS2VlcCB0aGUgc2xvdC9mZXRjaCBsaWZldGltZSBsb2NhbCB0byB0aGlz IGR1cGxpY2F0ZSBjaGVjayBzbyB0aGUKKwkJCSAqIHhtaW4gcHJvcGFnYXRpb24gYXNzZXJ0aW9u IGJlbG93IGNvbnRpbnVlcyB0byB2YWxpZGF0ZSBjbGVhbnVwLgorCQkJICoKKwkJCSAqIFhYWDog VGhpcyBmYWlsLWZhc3QgY2hlY2sgcGVyZm9ybXMgaGVhcCBmZXRjaGVzIGZyb20gdGhlIHNvcnQK KwkJCSAqIGNvbXBhcmF0b3IuICBUaGF0IGNhbiBiZSBleHBlbnNpdmUgd2hlbiBtYW55IGVxdWFs IGtleXMgYXJlCisJCQkgKiBjb21wYXJlZC4gIFJldmlzaXQgd2hldGhlciB0aGlzIG9wdGltaXph dGlvbiBpcyB3b3J0aCBrZWVwaW5nLCBvcgorCQkJICogd2hldGhlciBpdCBzaG91bGQgYmUgcmVw bGFjZWQgd2l0aCBhIGJvdW5kZWQvcHJvYmFiaWxpc3RpYyBjaGVjaworCQkJICogb3IgZGVmZXJy ZWQgZW50aXJlbHkgdG8gX2J0X2xvYWQoKS4KKwkJCSAqLworCQkJVHVwbGVUYWJsZVNsb3QJKnNs b3QgPSBNYWtlU2luZ2xlVHVwbGVUYWJsZVNsb3QoUmVsYXRpb25HZXREZXNjcihhcmctPmluZGV4 LmhlYXBSZWwpLAorCQkJCQkJCQkJCQkJCQkJICZUVFNPcHNCdWZmZXJIZWFwVHVwbGUpOworCQkJ SXRlbVBvaW50ZXJEYXRhIHRpZCA9IHR1cGxlMS0+dF90aWQ7CisKKwkJCUluZGV4RmV0Y2hUYWJs ZURhdGEgKmZldGNoID0gdGFibGVfaW5kZXhfZmV0Y2hfYmVnaW4oYXJnLT5pbmRleC5oZWFwUmVs LCBTT19OT05FKTsKKwkJCWFueV90dXBsZV9kZWFkID0gIXRhYmxlX2luZGV4X2ZldGNoX3R1cGxl KGZldGNoLCAmdGlkLCBTbmFwc2hvdFNlbGYsIHNsb3QsICZjYWxsX2FnYWluLCAmaWdub3JlZCk7 CisKKwkJCWlmICghYW55X3R1cGxlX2RlYWQpCisJCQl7CisJCQkJY2FsbF9hZ2FpbiA9IGZhbHNl OworCQkJCXRpZCA9IHR1cGxlMi0+dF90aWQ7CisJCQkJYW55X3R1cGxlX2RlYWQgPSAhdGFibGVf aW5kZXhfZmV0Y2hfdHVwbGUoZmV0Y2gsICZ0aWQsIFNuYXBzaG90U2VsZiwgc2xvdCwgJmNhbGxf YWdhaW4sCisJCQkJCQkJCQkJCQkJCSAgJmlnbm9yZWQpOworCQkJfQorCisJCQlpZiAoYW55X3R1 cGxlX2RlYWQpCisJCQl7CisJCQkJZWxvZyhERUJVRzUsICJza2lwcGluZyBkdXBsaWNhdGUgdmFs dWVzIGJlY2F1c2Ugc29tZSBvZiB0aGVtIGFyZSBkZWFkOiAoJXUsJXUpIHZzICgldSwldSkiLAor CQkJCQkgSXRlbVBvaW50ZXJHZXRCbG9ja051bWJlcigmdHVwbGUxLT50X3RpZCksCisJCQkJCSBJ dGVtUG9pbnRlckdldE9mZnNldE51bWJlcigmdHVwbGUxLT50X3RpZCksCisJCQkJCSBJdGVtUG9p bnRlckdldEJsb2NrTnVtYmVyKCZ0dXBsZTItPnRfdGlkKSwKKwkJCQkJIEl0ZW1Qb2ludGVyR2V0 T2Zmc2V0TnVtYmVyKCZ0dXBsZTItPnRfdGlkKSk7CisKKwkJCQl1bmlxdWVDaGVja0ZhaWwgPSBm YWxzZTsKKwkJCX0KKwkJCUV4ZWNEcm9wU2luZ2xlVHVwbGVUYWJsZVNsb3Qoc2xvdCk7CisJCQl0 YWJsZV9pbmRleF9mZXRjaF9lbmQoZmV0Y2gpOworCQkJQXNzZXJ0KCFUcmFuc2FjdGlvbklkSXNW YWxpZChNeVByb2MtPnhtaW4pKTsKKwkJfQorCQlpZiAodW5pcXVlQ2hlY2tGYWlsKQorCQl7CisJ CQlpbmRleF9kZWZvcm1fdHVwbGUodHVwbGUxLCB0dXBEZXMsIHZhbHVlcywgaXNudWxsKTsKKwor CQkJa2V5X2Rlc2MgPSBCdWlsZEluZGV4VmFsdWVEZXNjcmlwdGlvbihhcmctPmluZGV4LmluZGV4 UmVsLCB2YWx1ZXMsIGlzbnVsbCk7CisKKwkJCS8qIGtlZXAgdGhpcyBlcnJvciBtZXNzYWdlIGlu IHN5bmMgd2l0aCB0aGUgc2FtZSBpbiBfYnRfbG9hZCAqLworCQkJZXJlcG9ydChFUlJPUiwKKwkJ CQkJKGVycmNvZGUoRVJSQ09ERV9VTklRVUVfVklPTEFUSU9OKSwKKwkJCQkJCQllcnJtc2coImNv dWxkIG5vdCBjcmVhdGUgdW5pcXVlIGluZGV4IFwiJXNcIiIsCisJCQkJCQkJCSAgIFJlbGF0aW9u R2V0UmVsYXRpb25OYW1lKGFyZy0+aW5kZXguaW5kZXhSZWwpKSwKKwkJCQkJCQlrZXlfZGVzYyA/ IGVycmRldGFpbCgiS2V5ICVzIGlzIGR1cGxpY2F0ZWQuIiwga2V5X2Rlc2MpIDoKKwkJCQkJCQll cnJkZXRhaWwoIkR1cGxpY2F0ZSBrZXlzIGV4aXN0LiIpLAorCQkJCQkJCWVycnRhYmxlY29uc3Ry YWludChhcmctPmluZGV4LmhlYXBSZWwsCisJCQkJCQkJCQkJCSAgIFJlbGF0aW9uR2V0UmVsYXRp b25OYW1lKGFyZy0+aW5kZXguaW5kZXhSZWwpKSkpOworCQl9CiAJfQogCiAJLyoKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9uYnRyZWUuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9uYnRy ZWUuaAppbmRleCAzMDk3ZTliYjFhZi4uMTI2NmM4ZWVjZGYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL2FjY2Vzcy9uYnRyZWUuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvbmJ0cmVlLmgKQEAg LTEzMDcsOCArMTMwNywxMCBAQCBleHRlcm4gYm9vbCBidHByb3BlcnR5KE9pZCBpbmRleF9vaWQs IGludCBhdHRubywKIGV4dGVybiBjaGFyICpidGJ1aWxkcGhhc2VuYW1lKGludDY0IHBoYXNlbnVt KTsKIGV4dGVybiBJbmRleFR1cGxlIF9idF90cnVuY2F0ZShSZWxhdGlvbiByZWwsIEluZGV4VHVw bGUgbGFzdGxlZnQsCiAJCQkJCQkJICAgSW5kZXhUdXBsZSBmaXJzdHJpZ2h0LCBCVFNjYW5JbnNl cnQgaXR1cF9rZXkpOworZXh0ZXJuIGludAlfYnRfa2VlcF9uYXR0cyhSZWxhdGlvbiByZWwsIElu ZGV4VHVwbGUgbGFzdGxlZnQsIEluZGV4VHVwbGUgZmlyc3RyaWdodCwKKwkJCQkJCSAgIEJUU2Nh bkluc2VydCBpdHVwX2tleSwgYm9vbCAqaGFzbnVsbHMpOwogZXh0ZXJuIGludAlfYnRfa2VlcF9u YXR0c19mYXN0KFJlbGF0aW9uIHJlbCwgSW5kZXhUdXBsZSBsYXN0bGVmdCwKLQkJCQkJCQkJSW5k ZXhUdXBsZSBmaXJzdHJpZ2h0KTsKKwkJCQkJCQkJSW5kZXhUdXBsZSBmaXJzdHJpZ2h0LCBib29s ICpoYXNudWxscyk7CiBleHRlcm4gYm9vbCBfYnRfY2hlY2tfbmF0dHMoUmVsYXRpb24gcmVsLCBi b29sIGhlYXBrZXlzcGFjZSwgUGFnZSBwYWdlLAogCQkJCQkJCU9mZnNldE51bWJlciBvZmZudW0p OwogZXh0ZXJuIHZvaWQgX2J0X2NoZWNrX3RoaXJkX3BhZ2UoUmVsYXRpb24gcmVsLCBSZWxhdGlv biBoZWFwLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaCBiL3NyYy9p bmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgKaW5kZXggMDJjMzFjYWVkMmIuLjdlM2UzMjQyYTE2IDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oCisrKyBiL3NyYy9pbmNsdWRl L2FjY2Vzcy90YWJsZWFtLmgKQEAgLTE4NTMsOSArMTg1MywxMCBAQCB0YWJsZV9zY2FuX2FuYWx5 emVfbmV4dF90dXBsZShUYWJsZVNjYW5EZXNjIHNjYW4sCiAgKiBUaGlzIG9ubHkgcmVhbGx5IG1h a2VzIHNlbnNlIGZvciBoZWFwIEFNLCBpdCBtaWdodCBuZWVkIHRvIGJlIGdlbmVyYWxpemVkCiAg KiBmb3Igb3RoZXIgQU1zIGxhdGVyLgogICoKLSAqIEluIGNhc2Ugb2Ygbm9uLXVuaXF1ZSBjb25j dXJyZW50IGJ1aWxkLAotICogY29uY3VycmVudF9pbmRleF9yZXNldF9zbmFwc2hvdF9ldmVyeV9u X3BhZ2VzIGlzIGFwcGxpZWQgZm9yIHRoZSBzY2FuLgotICogVGhhdCBsZWFkcyB0byBjaGFuZ2lu ZyBzbmFwc2hvdHMgb24gdGhlIGZseSB0byBhbGxvdyB4bWluIGhvcml6b24gcHJvcGFnYXRlLgor ICogSW4gY2FzZSBvZiBjb25jdXJyZW50IGluZGV4IGJ1aWxkLAorICogY29uY3VycmVudF9pbmRl eF9yZXNldF9zbmFwc2hvdF9ldmVyeV9uX3BhZ2VzIGlzIGFwcGxpZWQgZm9yIHRoZQorICogc2Nh bi4gVGhhdCBsZWFkcyB0byBjaGFuZ2luZyBzbmFwc2hvdHMgb24gdGhlIGZseSB0byBhbGxvdyB4 bWluCisgKiBob3Jpem9uIHByb3BhZ2F0ZS4KICAqLwogc3RhdGljIGlubGluZSBkb3VibGUKIHRh YmxlX2luZGV4X2J1aWxkX3NjYW4oUmVsYXRpb24gdGFibGVfcmVsLApkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvY2F0YWxvZy9pbmRleC5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRleC5oCmlu ZGV4IDYwZjgzNTZlZDgyLi5lZDAwMGJmMTBkNSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0 YWxvZy9pbmRleC5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXguaApAQCAtMzIsMTMg KzMyLDExIEBAIHR5cGVkZWYgc3RydWN0IEF0dHJNYXAgQXR0ck1hcDsKICAqCiAgKiBTbmFwc2hv dCByZXNldHRpbmcgaXMgb25seSBhcHBsaWNhYmxlIHdoZW4gYWxsIG9mOgogICogLSB0aGUgYnVp bGQgaXMgY29uY3VycmVudCAoaWlfQ29uY3VycmVudCkKLSAqIC0gdGhlIGluZGV4IGlzIG5vbi11 bmlxdWUgKHVuaXF1ZSBuZWVkcyBjb25zaXN0ZW50IHNuYXBzaG90KQogICogLSBpc29sYXRpb24g bGV2ZWwgaXMgbm90IFJFUEVBVEFCTEUgUkVBRC9TRVJJQUxJWkFCTEUgKHRob3NlIGtlZXAgYQog ICogICByZWdpc3RlcmVkIHRyYW5zYWN0aW9uIHNuYXBzaG90KQogICovCiAjZGVmaW5lIEluZGV4 QnVpbGRSZXNldHNTbmFwc2hvdHMoaW5kZXhJbmZvKSBcCiAJKChpbmRleEluZm8pLT5paV9Db25j dXJyZW50ICYmIFwKLQkgIShpbmRleEluZm8pLT5paV9VbmlxdWUgJiYgXAogCSAhSXNvbGF0aW9u VXNlc1hhY3RTbmFwc2hvdCgpKQogCiAvKiBBY3Rpb24gY29kZSBmb3IgaW5kZXhfc2V0X3N0YXRl X2ZsYWdzICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy90dXBsZXNvcnQuaCBiL3Ny Yy9pbmNsdWRlL3V0aWxzL3R1cGxlc29ydC5oCmluZGV4IGRhNjhmNDVhY2YyLi40NDhkYzgzYWE1 OCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvdHVwbGVzb3J0LmgKKysrIGIvc3JjL2lu Y2x1ZGUvdXRpbHMvdHVwbGVzb3J0LmgKQEAgLTM5Niw2ICszOTYsNyBAQCBleHRlcm4gVHVwbGVz b3J0c3RhdGUgKnR1cGxlc29ydF9iZWdpbl9pbmRleF9idHJlZShSZWxhdGlvbiBoZWFwUmVsLAog CQkJCQkJCQkJCQkJICAgUmVsYXRpb24gaW5kZXhSZWwsCiAJCQkJCQkJCQkJCQkgICBib29sIGVu Zm9yY2VVbmlxdWUsCiAJCQkJCQkJCQkJCQkgICBib29sIHVuaXF1ZU51bGxzTm90RGlzdGluY3Qs CisJCQkJCQkJCQkJCQkgICBib29sCXVuaXF1ZURlYWRJZ25vcmVkLAogCQkJCQkJCQkJCQkJICAg aW50IHdvcmtNZW0sIFNvcnRDb29yZGluYXRlIGNvb3JkaW5hdGUsCiAJCQkJCQkJCQkJCQkgICBp bnQgc29ydG9wdCk7CiBleHRlcm4gVHVwbGVzb3J0c3RhdGUgKnR1cGxlc29ydF9iZWdpbl9pbmRl eF9oYXNoKFJlbGF0aW9uIGhlYXBSZWwsCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2lu amVjdGlvbl9wb2ludHMvZXhwZWN0ZWQvY2ljX3Jlc2V0X3NuYXBzaG90cy5vdXQgYi9zcmMvdGVz dC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvZXhwZWN0ZWQvY2ljX3Jlc2V0X3NuYXBzaG90cy5v dXQKaW5kZXggZTVhOGE3ZjNhNzkuLjc4MzVhNzk2Yjg4IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9t b2R1bGVzL2luamVjdGlvbl9wb2ludHMvZXhwZWN0ZWQvY2ljX3Jlc2V0X3NuYXBzaG90cy5vdXQK KysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL2V4cGVjdGVkL2NpY19yZXNl dF9zbmFwc2hvdHMub3V0CkBAIC00MSw3ICs0MSwxMSBAQCBFTkQ7ICQkOwogLS0tLS0tLS0tLS0t LS0tLQogQUxURVIgVEFCTEUgY2ljX3Jlc2V0X3NuYXAudGJsIFNFVCAocGFyYWxsZWxfd29ya2Vy cz0wKTsKIENSRUFURSBVTklRVUUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRf c25hcC50YmwoaSk7CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9p bnQgdGFibGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cworTk9USUNFOiAgbm90aWNl IHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9l ZmZlY3RpdmUKIFJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsK K05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9iZWdp bnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzCitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZv ciBpbmplY3Rpb24gcG9pbnQgaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZQogRFJP UCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogQ1JFQVRFIElOREVYIENP TkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGkpOwogTk9USUNFOiAgbm90aWNl IHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNl dF9zbmFwc2hvdHMKQEAgLTg2LDcgKzkwLDkgQEAgU0VMRUNUIGluamVjdGlvbl9wb2ludHNfZGV0 YWNoKCdoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3RfZWZmZWN0aXZlJyk7CiAoMSByb3cpCiAKIENS RUFURSBVTklRVUUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50Ymwo aSk7CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVf cGFyYWxsZWxzY2FuX2luaXRpYWxpemUKIFJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19y ZXNldF9zbmFwLmlkeDsKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBw b2ludCB0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZQogRFJPUCBJTkRFWCBDT05DVVJSRU5U TFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04g Y2ljX3Jlc2V0X3NuYXAudGJsKGkpOwogTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5q ZWN0aW9uIHBvaW50IHRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplCi0tIAoyLjQzLjAKCg== --000000000000a18566064ece63cb Content-Type: application/octet-stream; name="v5-0003-Support-snapshot-resets-in-parallel-concurrent-in.patch" Content-Disposition: attachment; filename="v5-0003-Support-snapshot-resets-in-parallel-concurrent-in.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnnfi1l42 RnJvbSAyODA5ZTk2ZDVjYjU1OTg2NWUzZTkxODgzMjg1YzRjYmVmYTRlMzMyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bmtleUB0b2xva2EuYWk+CkRh dGU6IEZyaSwgMyBBcHIgMjAyNiAxOTo1Njo0NCArMDIwMApTdWJqZWN0OiBbUEFUQ0ggdjUgMy80 XSBTdXBwb3J0IHNuYXBzaG90IHJlc2V0cyBpbiBwYXJhbGxlbCBjb25jdXJyZW50IGluZGV4CiBi dWlsZHMKCkV4dGVuZCBwZXJpb2RpYyBzbmFwc2hvdCByZXNldCBzdXBwb3J0IHRvIHBhcmFsbGVs IGJ1aWxkcywgcHJldmlvdXNseSBsaW1pdGVkIHRvIG5vbi1wYXJhbGxlbCBvcGVyYXRpb25zLiBU aGlzIGFsbG93cyB0aGUgeG1pbiBob3Jpem9uIHRvIGFkdmFuY2UgZHVyaW5nIHBhcmFsbGVsIGNv bmN1cnJlbnQgaW5kZXggYnVpbGRzIGFzIHdlbGwuCgpUaGUgbWFpbiBsaW1pdGF0aW9uIG9mIGFw cGx5aW5nIHRoYXQgdGVjaG5pcXVlIHRvIHBhcmFsbGVsIGJ1aWxkcyB3YXMgYSByZXF1aXJlbWVu dCB0byB3YWl0IHVudGlsIHdvcmtlciBwcm9jZXNzZXMgcmVzdG9yZSB0aGVpciBpbml0aWFsIHNu YXBzaG90IGZyb20gbGVhZGVyLgoKVG8gYWRkcmVzcyB0aGlzLCBmb2xsb3dpbmcgY2hhbmdlcyBh cHBsaWVkOgotIGFkZCBpbmZyYXN0cnVjdHVyZSB0byB0cmFjayBzbmFwc2hvdCByZXN0b3JhdGlv biBpbiBwYXJhbGxlbCB3b3JrZXJzCi0gZXh0ZW5kIHBhcmFsbGVsIHNjYW4gaW5pdGlhbGl6YXRp b24gdG8gc3VwcG9ydCBwZXJpb2RpYyBzbmFwc2hvdCByZXNldHMKLSB3YWl0IGZvciBwYXJhbGxl bCB3b3JrZXJzIHRvIHJlc3RvcmUgdGhlaXIgaW5pdGlhbCBzbmFwc2hvdHMgYmVmb3JlIHByb2Nl ZWRpbmcgd2l0aCBzY2FuCi0gcmVsYXggbGltaXRhdGlvbiBmb3IgcGFyYWxsZWwgd29ya2VyIHRv IGNhbGwgR2V0TGF0ZXN0U25hcHNob3QKLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmlu LmMgICAgICAgICAgICAgICAgfCA1NCArKysrKysrKysrKystLS0tCiBzcmMvYmFja2VuZC9hY2Nl c3MvZ2luL2dpbmluc2VydC5jICAgICAgICAgICAgfCA1MSArKysrKysrKysrKy0tLS0KIHNyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMgICAgICB8ICA3ICstLQogc3JjL2Jh Y2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMgICAgICAgICAgIHwgNTEgKysrKysrKysrKysr Ky0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvdGFibGUvdGFibGVhbS5jICAgICAgICAgICAgfCAzNyAr KysrKysrKystLQogc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vcGFyYWxsZWwuYyAgICAgICAg IHwgNjIgKysrKysrKysrKysrKysrKystLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNlcXNj YW4uYyAgICAgICAgICAgIHwgIDMgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUaWRyYW5n ZXNjYW4uYyAgICAgICB8ICAzICstCiBzcmMvYmFja2VuZC91dGlscy90aW1lL3NuYXBtZ3IuYyAg ICAgICAgICAgICAgfCAgOCAtLS0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9wYXJhbGxlbC5oICAgICAg ICAgICAgICAgICB8ICAzICstCiBzcmMvaW5jbHVkZS9hY2Nlc3MvcmVsc2Nhbi5oICAgICAgICAg ICAgICAgICAgfCAgMSArCiBzcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oICAgICAgICAgICAg ICAgICAgfCAgNSArLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRleC5oICAgICAgICAgICAgICAg ICAgIHwgIDQgKy0KIC4uLi9leHBlY3RlZC9jaWNfcmVzZXRfc25hcHNob3RzLm91dCAgICAgICAg ICB8IDI1ICsrKysrKystCiAuLi4vc3FsL2NpY19yZXNldF9zbmFwc2hvdHMuc3FsICAgICAgICAg ICAgICAgfCAgNSArLQogMTUgZmlsZXMgY2hhbmdlZCwgMjU5IGluc2VydGlvbnMoKyksIDYwIGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW4uYyBi L3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW4uYwppbmRleCAwOTc0MTE4NjI2NC4uZmY1N2Zl NjFhZGQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW4uYworKysgYi9z cmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMKQEAgLTEyNzUsNiArMTI3NSw5IEBAIGJyaW5i dWlsZChSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwgSW5kZXhJbmZvICppbmRleEluZm8p CiAJcmVzdWx0LT5oZWFwX3R1cGxlcyA9IHJlbHR1cGxlczsKIAlyZXN1bHQtPmluZGV4X3R1cGxl cyA9IGlkeHR1cGxlczsKIAorCUludmFsaWRhdGVDYXRhbG9nU25hcHNob3QoKTsKKwlBc3NlcnQo IUluZGV4QnVpbGRSZXNldHNTbmFwc2hvdHMoaW5kZXhJbmZvKSB8fCAhVHJhbnNhY3Rpb25JZElz VmFsaWQoTXlQcm9jLT54bWluKSk7CisKIAlyZXR1cm4gcmVzdWx0OwogfQogCkBAIC0yMzk0LDYg KzIzOTcsNyBAQCBfYnJpbl9iZWdpbl9wYXJhbGxlbChCcmluQnVpbGRTdGF0ZSAqYnVpbGRzdGF0 ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAJQnVmZmVyVXNhZ2UgKmJ1ZmZlcnVz YWdlOwogCWJvb2wJCWxlYWRlcnBhcnRpY2lwYXRlcyA9IHRydWU7CiAJYm9vbAkJbmVlZF9wb3Bf YWN0aXZlX3NuYXBzaG90ID0gdHJ1ZTsKKwlib29sCQlyZXNldF9zbmFwc2hvdDsKIAlpbnQJCQlx dWVyeWxlbjsKIAogI2lmZGVmIERJU0FCTEVfTEVBREVSX1BBUlRJQ0lQQVRJT04KQEAgLTI0MTEs MTIgKzI0MTUsMTYgQEAgX2JyaW5fYmVnaW5fcGFyYWxsZWwoQnJpbkJ1aWxkU3RhdGUgKmJ1aWxk c3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAogCiAJc2NhbnR1cGxlc29ydHN0 YXRlcyA9IGxlYWRlcnBhcnRpY2lwYXRlcyA/IHJlcXVlc3QgKyAxIDogcmVxdWVzdDsKIAorCXJl c2V0X3NuYXBzaG90ID0gaXNjb25jdXJyZW50ICYmICFJc29sYXRpb25Vc2VzWGFjdFNuYXBzaG90 KCk7CisKIAkvKgogCSAqIFByZXBhcmUgZm9yIHNjYW4gb2YgdGhlIGJhc2UgcmVsYXRpb24uICBJ biBhIG5vcm1hbCBpbmRleCBidWlsZCwgd2UgdXNlCiAJICogU25hcHNob3RBbnkgYmVjYXVzZSB3 ZSBtdXN0IHJldHJpZXZlIGFsbCB0dXBsZXMgYW5kIGRvIG91ciBvd24gdGltZQogCSAqIHF1YWwg Y2hlY2tzIChiZWNhdXNlIHdlIGhhdmUgdG8gaW5kZXggUkVDRU5UTFlfREVBRCB0dXBsZXMpLiAg SW4gYQotCSAqIGNvbmN1cnJlbnQgYnVpbGQsIHdlIHRha2UgYSByZWd1bGFyIE1WQ0Mgc25hcHNo b3QgYW5kIGluZGV4IHdoYXRldmVyJ3MKLQkgKiBsaXZlIGFjY29yZGluZyB0byB0aGF0LgorCSAq IGNvbmN1cnJlbnQgYnVpbGQsIHdlIHRha2UgYSByZWd1bGFyIE1WQ0Mgc25hcHNob3QgYW5kIHB1 c2ggaXQgYXMgYWN0aXZlLgorCSAqIExhdGVyIHdlIGluZGV4IHdoYXRldmVyJ3MgbGl2ZSBhY2Nv cmRpbmcgdG8gdGhhdCBzbmFwc2hvdCB3aGlsZSB0aGF0CisJICogc25hcHNob3QgbWF5IGJlIHJl c2V0IHBlcmlvZGljYWxseSAoaW4gbm9uLXhhY3Qtc25hcHNob3QgaXNvbGF0aW9uCisJICogbW9k ZXMpIHRvIGFsbG93IHRoZSB4bWluIGhvcml6b24gdG8gYWR2YW5jZS4KIAkgKi8KIAlpZiAoIWlz Y29uY3VycmVudCkKIAl7CkBAIC0yNDI0LDEwICsyNDMyLDE1IEBAIF9icmluX2JlZ2luX3BhcmFs bGVsKEJyaW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBp bmRleCwKIAkJc25hcHNob3QgPSBTbmFwc2hvdEFueTsKIAkJbmVlZF9wb3BfYWN0aXZlX3NuYXBz aG90ID0gZmFsc2U7CiAJfQorCWVsc2UgaWYgKHJlc2V0X3NuYXBzaG90KQorCXsKKwkJc25hcHNo b3QgPSBJbnZhbGlkU25hcHNob3Q7CisJCVB1c2hBY3RpdmVTbmFwc2hvdChHZXRUcmFuc2FjdGlv blNuYXBzaG90KCkpOworCX0KIAllbHNlCiAJewogCQlzbmFwc2hvdCA9IFJlZ2lzdGVyU25hcHNo b3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKLQkJUHVzaEFjdGl2ZVNuYXBzaG90KEdldFRy YW5zYWN0aW9uU25hcHNob3QoKSk7CisJCVB1c2hBY3RpdmVTbmFwc2hvdChzbmFwc2hvdCk7CiAJ fQogCiAJLyoKQEAgLTI0NzMsNyArMjQ4Niw3IEBAIF9icmluX2JlZ2luX3BhcmFsbGVsKEJyaW5C dWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIAl7 CiAJCWlmIChuZWVkX3BvcF9hY3RpdmVfc25hcHNob3QpCiAJCQlQb3BBY3RpdmVTbmFwc2hvdCgp OwotCQlpZiAoSXNNVkNDU25hcHNob3Qoc25hcHNob3QpKQorCQlpZiAoc25hcHNob3QgIT0gSW52 YWxpZFNuYXBzaG90ICYmIElzTVZDQ1NuYXBzaG90KHNuYXBzaG90KSkKIAkJCVVucmVnaXN0ZXJT bmFwc2hvdChzbmFwc2hvdCk7CiAJCURlc3Ryb3lQYXJhbGxlbENvbnRleHQocGN4dCk7CiAJCUV4 aXRQYXJhbGxlbE1vZGUoKTsKQEAgLTI0OTksNyArMjUxMiw4IEBAIF9icmluX2JlZ2luX3BhcmFs bGVsKEJyaW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBp bmRleCwKIAogCXRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplKGhlYXAsCiAJCQkJCQkJCSAg UGFyYWxsZWxUYWJsZVNjYW5Gcm9tQnJpblNoYXJlZChicmluc2hhcmVkKSwKLQkJCQkJCQkJICBz bmFwc2hvdCk7CisJCQkJCQkJCSAgc25hcHNob3QsCisJCQkJCQkJCSAgcmVzZXRfc25hcHNob3Qp OwogCiAJLyoKIAkgKiBTdG9yZSBzaGFyZWQgdHVwbGVzb3J0LXByaXZhdGUgc3RhdGUsIGZvciB3 aGljaCB3ZSByZXNlcnZlZCBzcGFjZS4KQEAgLTI1NjEsNiArMjU3NSwxMyBAQCBfYnJpbl9iZWdp bl9wYXJhbGxlbChCcmluQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVs YXRpb24gaW5kZXgsCiAJLyogU2F2ZSBsZWFkZXIgc3RhdGUgbm93IHRoYXQgaXQncyBjbGVhciBi dWlsZCB3aWxsIGJlIHBhcmFsbGVsICovCiAJYnVpbGRzdGF0ZS0+YnNfbGVhZGVyID0gYnJpbmxl YWRlcjsKIAorCS8qCisJICogSW4gY2FzZSBvZiBjb25jdXJyZW50IGJ1aWxkIHdpdGggc25hcHNo b3QgcmVzZXRzLCB3YWl0IHVudGlsIGFsbAorCSAqIHdvcmtlcnMgaW1wb3J0ZWQgaW5pdGlhbCBz bmFwc2hvdC4KKwkgKi8KKwlpZiAocmVzZXRfc25hcHNob3QpCisJCVdhaXRGb3JQYXJhbGxlbFdv cmtlcnNUb0F0dGFjaChwY3h0LCB0cnVlKTsKKwogCS8qIEpvaW4gaGVhcCBzY2FuIG91cnNlbHZl cyAqLwogCWlmIChsZWFkZXJwYXJ0aWNpcGF0ZXMpCiAJCV9icmluX2xlYWRlcl9wYXJ0aWNpcGF0 ZV9hc193b3JrZXIoYnVpbGRzdGF0ZSwgaGVhcCwgaW5kZXgpOwpAQCAtMjU2OSw5ICsyNTkwLDEz IEBAIF9icmluX2JlZ2luX3BhcmFsbGVsKEJyaW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxh dGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIAkgKiBDYWxsZXIgbmVlZHMgdG8gd2FpdCBmb3Ig YWxsIGxhdW5jaGVkIHdvcmtlcnMgd2hlbiB3ZSByZXR1cm4uICBNYWtlCiAJICogc3VyZSB0aGF0 IHRoZSBmYWlsdXJlLXRvLXN0YXJ0IGNhc2Ugd2lsbCBub3QgaGFuZyBmb3JldmVyLgogCSAqLwot CVdhaXRGb3JQYXJhbGxlbFdvcmtlcnNUb0F0dGFjaChwY3h0KTsKKwlpZiAoIXJlc2V0X3NuYXBz aG90KQorCQlXYWl0Rm9yUGFyYWxsZWxXb3JrZXJzVG9BdHRhY2gocGN4dCwgZmFsc2UpOwogCWlm IChuZWVkX3BvcF9hY3RpdmVfc25hcHNob3QpCiAJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CisKKwlJ bnZhbGlkYXRlQ2F0YWxvZ1NuYXBzaG90KCk7CisJQXNzZXJ0KCFyZXNldF9zbmFwc2hvdCB8fCAh VHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CiB9CiAKIC8qCkBAIC0yNTkyLDgg KzI2MTcsNyBAQCBfYnJpbl9lbmRfcGFyYWxsZWwoQnJpbkxlYWRlciAqYnJpbmxlYWRlciwgQnJp bkJ1aWxkU3RhdGUgKnN0YXRlKQogCWZvciAoaSA9IDA7IGkgPCBicmlubGVhZGVyLT5wY3h0LT5u d29ya2Vyc19sYXVuY2hlZDsgaSsrKQogCQlJbnN0ckFjY3VtUGFyYWxsZWxRdWVyeSgmYnJpbmxl YWRlci0+YnVmZmVydXNhZ2VbaV0sICZicmlubGVhZGVyLT53YWx1c2FnZVtpXSk7CiAKLQkvKiBG cmVlIGxhc3QgcmVmZXJlbmNlIHRvIE1WQ0Mgc25hcHNob3QsIGlmIG9uZSB3YXMgdXNlZCAqLwot CWlmIChJc01WQ0NTbmFwc2hvdChicmlubGVhZGVyLT5zbmFwc2hvdCkpCisJaWYgKGJyaW5sZWFk ZXItPnNuYXBzaG90ICE9IEludmFsaWRTbmFwc2hvdCAmJiBJc01WQ0NTbmFwc2hvdChicmlubGVh ZGVyLT5zbmFwc2hvdCkpCiAJCVVucmVnaXN0ZXJTbmFwc2hvdChicmlubGVhZGVyLT5zbmFwc2hv dCk7CiAJRGVzdHJveVBhcmFsbGVsQ29udGV4dChicmlubGVhZGVyLT5wY3h0KTsKIAlFeGl0UGFy YWxsZWxNb2RlKCk7CkBAIC0yNzk0LDcgKzI4MTgsNyBAQCBfYnJpbl9wYXJhbGxlbF9tZXJnZShC cmluQnVpbGRTdGF0ZSAqc3RhdGUpCiAKIC8qCiAgKiBSZXR1cm5zIHNpemUgb2Ygc2hhcmVkIG1l bW9yeSByZXF1aXJlZCB0byBzdG9yZSBzdGF0ZSBmb3IgYSBwYXJhbGxlbAotICogYnJpbiBpbmRl eCBidWlsZCBiYXNlZCBvbiB0aGUgc25hcHNob3QgaXRzIHBhcmFsbGVsIHNjYW4gd2lsbCB1c2Uu CisgKiBicmluIGluZGV4IGJ1aWxkLgogICovCiBzdGF0aWMgU2l6ZQogX2JyaW5fcGFyYWxsZWxf ZXN0aW1hdGVfc2hhcmVkKFJlbGF0aW9uIGhlYXAsIFNuYXBzaG90IHNuYXBzaG90KQpAQCAtMjg0 Myw2ICsyODY3LDcgQEAgX2JyaW5fcGFyYWxsZWxfc2Nhbl9hbmRfYnVpbGQoQnJpbkJ1aWxkU3Rh dGUgKnN0YXRlLAogewogCVNvcnRDb29yZGluYXRlIGNvb3JkaW5hdGU7CiAJVGFibGVTY2FuRGVz YyBzY2FuOworCVBhcmFsbGVsVGFibGVTY2FuRGVzYyBwc2NhbjsKIAlkb3VibGUJCXJlbHR1cGxl czsKIAlJbmRleEluZm8gICppbmRleEluZm87CiAKQEAgLTI4NTksMTMgKzI4ODQsMTggQEAgX2Jy aW5fcGFyYWxsZWxfc2Nhbl9hbmRfYnVpbGQoQnJpbkJ1aWxkU3RhdGUgKnN0YXRlLAogCS8qIEpv aW4gcGFyYWxsZWwgc2NhbiAqLwogCWluZGV4SW5mbyA9IEJ1aWxkSW5kZXhJbmZvKGluZGV4KTsK IAlpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgPSBicmluc2hhcmVkLT5pc2NvbmN1cnJlbnQ7CisJ cHNjYW4gPSBQYXJhbGxlbFRhYmxlU2NhbkZyb21CcmluU2hhcmVkKGJyaW5zaGFyZWQpOwogCiAJ c2NhbiA9IHRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxlbChoZWFwLAotCQkJCQkJCQkJUGFyYWxsZWxU YWJsZVNjYW5Gcm9tQnJpblNoYXJlZChicmluc2hhcmVkKSwKKwkJCQkJCQkJCXBzY2FuLAogCQkJ CQkJCQkJU09fTk9ORSk7CiAKIAlyZWx0dXBsZXMgPSB0YWJsZV9pbmRleF9idWlsZF9zY2FuKGhl YXAsIGluZGV4LCBpbmRleEluZm8sIHRydWUsIHRydWUsCiAJCQkJCQkJCQkgICBicmluYnVpbGRD YWxsYmFja1BhcmFsbGVsLCBzdGF0ZSwgc2Nhbik7CisJSW52YWxpZGF0ZUNhdGFsb2dTbmFwc2hv dCgpOworCWlmIChwc2Nhbi0+cGhzX3Jlc2V0X3NuYXBzaG90KQorCQlQb3BBY3RpdmVTbmFwc2hv dCgpOworCUFzc2VydCghcHNjYW4tPnBoc19yZXNldF9zbmFwc2hvdCB8fCAhVHJhbnNhY3Rpb25J ZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CiAKIAkvKiBpbnNlcnQgdGhlIGxhc3QgaXRlbSAqLwog CWZvcm1fYW5kX3NwaWxsX3R1cGxlKHN0YXRlKTsKQEAgLTI4ODgsNiArMjkxOCw5IEBAIF9icmlu X3BhcmFsbGVsX3NjYW5fYW5kX2J1aWxkKEJyaW5CdWlsZFN0YXRlICpzdGF0ZSwKIAlDb25kaXRp b25WYXJpYWJsZVNpZ25hbCgmYnJpbnNoYXJlZC0+d29ya2Vyc2RvbmVjdik7CiAKIAl0dXBsZXNv cnRfZW5kKHN0YXRlLT5ic19zb3J0c3RhdGUpOworCUFzc2VydCghcHNjYW4tPnBoc19yZXNldF9z bmFwc2hvdCB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CisJaWYgKHBz Y2FuLT5waHNfcmVzZXRfc25hcHNob3QpCisJCVB1c2hBY3RpdmVTbmFwc2hvdChHZXRUcmFuc2Fj dGlvblNuYXBzaG90KCkpOwogfQogCiAvKgpAQCAtMjk2NCw3ICsyOTk3LDYgQEAgX2JyaW5fcGFy YWxsZWxfYnVpbGRfbWFpbihkc21fc2VnbWVudCAqc2VnLCBzaG1fdG9jICp0b2MpCiAKIAlfYnJp bl9wYXJhbGxlbF9zY2FuX2FuZF9idWlsZChidWlsZHN0YXRlLCBicmluc2hhcmVkLCBzaGFyZWRz b3J0LAogCQkJCQkJCQkgIGhlYXBSZWwsIGluZGV4UmVsLCBzb3J0bWVtLCBmYWxzZSk7Ci0KIAkv KiBSZXBvcnQgV0FML2J1ZmZlciB1c2FnZSBkdXJpbmcgcGFyYWxsZWwgZXhlY3V0aW9uICovCiAJ YnVmZmVydXNhZ2UgPSBzaG1fdG9jX2xvb2t1cCh0b2MsIFBBUkFMTEVMX0tFWV9CVUZGRVJfVVNB R0UsIGZhbHNlKTsKIAl3YWx1c2FnZSA9IHNobV90b2NfbG9va3VwKHRvYywgUEFSQUxMRUxfS0VZ X1dBTF9VU0FHRSwgZmFsc2UpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9n aW5pbnNlcnQuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luaW5zZXJ0LmMKaW5kZXggNWIw MzVhYTVkZWMuLjMyNTFkYjBlNjE3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lu L2dpbmluc2VydC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luaW5zZXJ0LmMKQEAg LTgwOSw2ICs4MDksNyBAQCBnaW5idWlsZChSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwg SW5kZXhJbmZvICppbmRleEluZm8pCiAKIAlyZXN1bHQtPmhlYXBfdHVwbGVzID0gcmVsdHVwbGVz OwogCXJlc3VsdC0+aW5kZXhfdHVwbGVzID0gYnVpbGRzdGF0ZS5pbmR0dXBsZXM7CisJQXNzZXJ0 KCFJbmRleEJ1aWxkUmVzZXRzU25hcHNob3RzKGluZGV4SW5mbykgfHwgIVRyYW5zYWN0aW9uSWRJ c1ZhbGlkKE15UHJvYy0+eG1pbikpOwogCiAJcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTk1Nyw2ICs5 NTgsNyBAQCBfZ2luX2JlZ2luX3BhcmFsbGVsKEdpbkJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIFJl bGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAogCUJ1ZmZlclVzYWdlICpidWZmZXJ1c2FnZTsK IAlib29sCQlsZWFkZXJwYXJ0aWNpcGF0ZXMgPSB0cnVlOwogCWJvb2wJCW5lZWRfcG9wX2FjdGl2 ZV9zbmFwc2hvdCA9IHRydWU7CisJYm9vbAkJcmVzZXRfc25hcHNob3Q7CiAJaW50CQkJcXVlcnls ZW47CiAKICNpZmRlZiBESVNBQkxFX0xFQURFUl9QQVJUSUNJUEFUSU9OCkBAIC05NzMsMTIgKzk3 NSwxNiBAQCBfZ2luX2JlZ2luX3BhcmFsbGVsKEdpbkJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIFJl bGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAogCiAJc2NhbnR1cGxlc29ydHN0YXRlcyA9IGxl YWRlcnBhcnRpY2lwYXRlcyA/IHJlcXVlc3QgKyAxIDogcmVxdWVzdDsKIAorCXJlc2V0X3NuYXBz aG90ID0gaXNjb25jdXJyZW50ICYmICFJc29sYXRpb25Vc2VzWGFjdFNuYXBzaG90KCk7CisKIAkv KgogCSAqIFByZXBhcmUgZm9yIHNjYW4gb2YgdGhlIGJhc2UgcmVsYXRpb24uICBJbiBhIG5vcm1h bCBpbmRleCBidWlsZCwgd2UgdXNlCiAJICogU25hcHNob3RBbnkgYmVjYXVzZSB3ZSBtdXN0IHJl dHJpZXZlIGFsbCB0dXBsZXMgYW5kIGRvIG91ciBvd24gdGltZQogCSAqIHF1YWwgY2hlY2tzIChi ZWNhdXNlIHdlIGhhdmUgdG8gaW5kZXggUkVDRU5UTFlfREVBRCB0dXBsZXMpLiAgSW4gYQotCSAq IGNvbmN1cnJlbnQgYnVpbGQsIHdlIHRha2UgYSByZWd1bGFyIE1WQ0Mgc25hcHNob3QgYW5kIGlu ZGV4IHdoYXRldmVyJ3MKLQkgKiBsaXZlIGFjY29yZGluZyB0byB0aGF0LgorCSAqIGNvbmN1cnJl bnQgYnVpbGQsIHdlIHRha2UgYSByZWd1bGFyIE1WQ0Mgc25hcHNob3QgYW5kIHB1c2ggaXQgYXMg YWN0aXZlLgorCSAqIExhdGVyIHdlIGluZGV4IHdoYXRldmVyJ3MgbGl2ZSBhY2NvcmRpbmcgdG8g dGhhdCBzbmFwc2hvdCB3aGlsZSB0aGF0CisJICogc25hcHNob3QgbWF5IGJlIHJlc2V0IHBlcmlv ZGljYWxseSAoaW4gbm9uLXhhY3Qtc25hcHNob3QgaXNvbGF0aW9uCisJICogbW9kZXMpIHRvIGFs bG93IHRoZSB4bWluIGhvcml6b24gdG8gYWR2YW5jZS4KIAkgKi8KIAlpZiAoIWlzY29uY3VycmVu dCkKIAl7CkBAIC05ODYsMTAgKzk5MiwxNSBAQCBfZ2luX2JlZ2luX3BhcmFsbGVsKEdpbkJ1aWxk U3RhdGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAogCQlzbmFw c2hvdCA9IFNuYXBzaG90QW55OwogCQluZWVkX3BvcF9hY3RpdmVfc25hcHNob3QgPSBmYWxzZTsK IAl9CisJZWxzZSBpZiAocmVzZXRfc25hcHNob3QpCisJeworCQlzbmFwc2hvdCA9IEludmFsaWRT bmFwc2hvdDsKKwkJUHVzaEFjdGl2ZVNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7 CisJfQogCWVsc2UKIAl7CiAJCXNuYXBzaG90ID0gUmVnaXN0ZXJTbmFwc2hvdChHZXRUcmFuc2Fj dGlvblNuYXBzaG90KCkpOwotCQlQdXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFw c2hvdCgpKTsKKwkJUHVzaEFjdGl2ZVNuYXBzaG90KHNuYXBzaG90KTsKIAl9CiAKIAkvKgpAQCAt MTAzNSw3ICsxMDQ2LDcgQEAgX2dpbl9iZWdpbl9wYXJhbGxlbChHaW5CdWlsZFN0YXRlICpidWls ZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIAl7CiAJCWlmIChuZWVkX3Bv cF9hY3RpdmVfc25hcHNob3QpCiAJCQlQb3BBY3RpdmVTbmFwc2hvdCgpOwotCQlpZiAoSXNNVkND U25hcHNob3Qoc25hcHNob3QpKQorCQlpZiAoc25hcHNob3QgIT0gSW52YWxpZFNuYXBzaG90ICYm IElzTVZDQ1NuYXBzaG90KHNuYXBzaG90KSkKIAkJCVVucmVnaXN0ZXJTbmFwc2hvdChzbmFwc2hv dCk7CiAJCURlc3Ryb3lQYXJhbGxlbENvbnRleHQocGN4dCk7CiAJCUV4aXRQYXJhbGxlbE1vZGUo KTsKQEAgLTEwNjAsNyArMTA3MSw4IEBAIF9naW5fYmVnaW5fcGFyYWxsZWwoR2luQnVpbGRTdGF0 ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAKIAl0YWJsZV9w YXJhbGxlbHNjYW5faW5pdGlhbGl6ZShoZWFwLAogCQkJCQkJCQkgIFBhcmFsbGVsVGFibGVTY2Fu RnJvbUdpbkJ1aWxkU2hhcmVkKGdpbnNoYXJlZCksCi0JCQkJCQkJCSAgc25hcHNob3QpOworCQkJ CQkJCQkgIHNuYXBzaG90LAorCQkJCQkJCQkgIHJlc2V0X3NuYXBzaG90KTsKIAogCS8qCiAJICog U3RvcmUgc2hhcmVkIHR1cGxlc29ydC1wcml2YXRlIHN0YXRlLCBmb3Igd2hpY2ggd2UgcmVzZXJ2 ZWQgc3BhY2UuCkBAIC0xMTE4LDYgKzExMzAsMTMgQEAgX2dpbl9iZWdpbl9wYXJhbGxlbChHaW5C dWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIAkv KiBTYXZlIGxlYWRlciBzdGF0ZSBub3cgdGhhdCBpdCdzIGNsZWFyIGJ1aWxkIHdpbGwgYmUgcGFy YWxsZWwgKi8KIAlidWlsZHN0YXRlLT5ic19sZWFkZXIgPSBnaW5sZWFkZXI7CiAKKwkvKgorCSAq IEluIGNhc2Ugb2YgY29uY3VycmVudCBidWlsZCB3aXRoIHNuYXBzaG90IHJlc2V0cywgd2FpdCB1 bnRpbCBhbGwKKwkgKiB3b3JrZXJzIGltcG9ydGVkIGluaXRpYWwgc25hcHNob3QuCisJICovCisJ aWYgKHJlc2V0X3NuYXBzaG90KQorCQlXYWl0Rm9yUGFyYWxsZWxXb3JrZXJzVG9BdHRhY2gocGN4 dCwgdHJ1ZSk7CisKIAkvKiBKb2luIGhlYXAgc2NhbiBvdXJzZWx2ZXMgKi8KIAlpZiAobGVhZGVy cGFydGljaXBhdGVzKQogCQlfZ2luX2xlYWRlcl9wYXJ0aWNpcGF0ZV9hc193b3JrZXIoYnVpbGRz dGF0ZSwgaGVhcCwgaW5kZXgpOwpAQCAtMTEyNiw5ICsxMTQ1LDEyIEBAIF9naW5fYmVnaW5fcGFy YWxsZWwoR2luQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24g aW5kZXgsCiAJICogQ2FsbGVyIG5lZWRzIHRvIHdhaXQgZm9yIGFsbCBsYXVuY2hlZCB3b3JrZXJz IHdoZW4gd2UgcmV0dXJuLiAgTWFrZQogCSAqIHN1cmUgdGhhdCB0aGUgZmFpbHVyZS10by1zdGFy dCBjYXNlIHdpbGwgbm90IGhhbmcgZm9yZXZlci4KIAkgKi8KLQlXYWl0Rm9yUGFyYWxsZWxXb3Jr ZXJzVG9BdHRhY2gocGN4dCk7CisJaWYgKCFyZXNldF9zbmFwc2hvdCkKKwkJV2FpdEZvclBhcmFs bGVsV29ya2Vyc1RvQXR0YWNoKHBjeHQsIGZhbHNlKTsKIAlpZiAobmVlZF9wb3BfYWN0aXZlX3Nu YXBzaG90KQogCQlQb3BBY3RpdmVTbmFwc2hvdCgpOworCUludmFsaWRhdGVDYXRhbG9nU25hcHNo b3QoKTsKKwlBc3NlcnQoIXJlc2V0X3NuYXBzaG90IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChN eVByb2MtPnhtaW4pKTsKIH0KIAogLyoKQEAgLTExNDksOCArMTE3MSw3IEBAIF9naW5fZW5kX3Bh cmFsbGVsKEdpbkxlYWRlciAqZ2lubGVhZGVyLCBHaW5CdWlsZFN0YXRlICpzdGF0ZSkKIAlmb3Ig KGkgPSAwOyBpIDwgZ2lubGVhZGVyLT5wY3h0LT5ud29ya2Vyc19sYXVuY2hlZDsgaSsrKQogCQlJ bnN0ckFjY3VtUGFyYWxsZWxRdWVyeSgmZ2lubGVhZGVyLT5idWZmZXJ1c2FnZVtpXSwgJmdpbmxl YWRlci0+d2FsdXNhZ2VbaV0pOwogCi0JLyogRnJlZSBsYXN0IHJlZmVyZW5jZSB0byBNVkNDIHNu YXBzaG90LCBpZiBvbmUgd2FzIHVzZWQgKi8KLQlpZiAoSXNNVkNDU25hcHNob3QoZ2lubGVhZGVy LT5zbmFwc2hvdCkpCisJaWYgKGdpbmxlYWRlci0+c25hcHNob3QgIT0gSW52YWxpZFNuYXBzaG90 ICYmIElzTVZDQ1NuYXBzaG90KGdpbmxlYWRlci0+c25hcHNob3QpKQogCQlVbnJlZ2lzdGVyU25h cHNob3QoZ2lubGVhZGVyLT5zbmFwc2hvdCk7CiAJRGVzdHJveVBhcmFsbGVsQ29udGV4dChnaW5s ZWFkZXItPnBjeHQpOwogCUV4aXRQYXJhbGxlbE1vZGUoKTsKQEAgLTE4MjYsNyArMTg0Nyw3IEBA IF9naW5fcGFyYWxsZWxfbWVyZ2UoR2luQnVpbGRTdGF0ZSAqc3RhdGUpCiAKIC8qCiAgKiBSZXR1 cm5zIHNpemUgb2Ygc2hhcmVkIG1lbW9yeSByZXF1aXJlZCB0byBzdG9yZSBzdGF0ZSBmb3IgYSBw YXJhbGxlbAotICogZ2luIGluZGV4IGJ1aWxkIGJhc2VkIG9uIHRoZSBzbmFwc2hvdCBpdHMgcGFy YWxsZWwgc2NhbiB3aWxsIHVzZS4KKyAqIGdpbiBpbmRleCBidWlsZC4KICAqLwogc3RhdGljIFNp emUKIF9naW5fcGFyYWxsZWxfZXN0aW1hdGVfc2hhcmVkKFJlbGF0aW9uIGhlYXAsIFNuYXBzaG90 IHNuYXBzaG90KQpAQCAtMjA1OCw2ICsyMDc5LDcgQEAgX2dpbl9wYXJhbGxlbF9zY2FuX2FuZF9i dWlsZChHaW5CdWlsZFN0YXRlICpzdGF0ZSwKIHsKIAlTb3J0Q29vcmRpbmF0ZSBjb29yZGluYXRl OwogCVRhYmxlU2NhbkRlc2Mgc2NhbjsKKwlQYXJhbGxlbFRhYmxlU2NhbkRlc2MgcHNjYW47CiAJ ZG91YmxlCQlyZWx0dXBsZXM7CiAJSW5kZXhJbmZvICAqaW5kZXhJbmZvOwogCkBAIC0yMDg4LDEz ICsyMTEwLDE4IEBAIF9naW5fcGFyYWxsZWxfc2Nhbl9hbmRfYnVpbGQoR2luQnVpbGRTdGF0ZSAq c3RhdGUsCiAJLyogSm9pbiBwYXJhbGxlbCBzY2FuICovCiAJaW5kZXhJbmZvID0gQnVpbGRJbmRl eEluZm8oaW5kZXgpOwogCWluZGV4SW5mby0+aWlfQ29uY3VycmVudCA9IGdpbnNoYXJlZC0+aXNj b25jdXJyZW50OworCXBzY2FuID0gUGFyYWxsZWxUYWJsZVNjYW5Gcm9tR2luQnVpbGRTaGFyZWQo Z2luc2hhcmVkKTsKIAogCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW5fcGFyYWxsZWwoaGVhcCwKLQkJ CQkJCQkJCVBhcmFsbGVsVGFibGVTY2FuRnJvbUdpbkJ1aWxkU2hhcmVkKGdpbnNoYXJlZCksCisJ CQkJCQkJCQlwc2NhbiwKIAkJCQkJCQkJCVNPX05PTkUpOwogCiAJcmVsdHVwbGVzID0gdGFibGVf aW5kZXhfYnVpbGRfc2NhbihoZWFwLCBpbmRleCwgaW5kZXhJbmZvLCB0cnVlLCBwcm9ncmVzcywK IAkJCQkJCQkJCSAgIGdpbkJ1aWxkQ2FsbGJhY2tQYXJhbGxlbCwgc3RhdGUsIHNjYW4pOworCUlu dmFsaWRhdGVDYXRhbG9nU25hcHNob3QoKTsKKwlpZiAocHNjYW4tPnBoc19yZXNldF9zbmFwc2hv dCkKKwkJUG9wQWN0aXZlU25hcHNob3QoKTsKKwlBc3NlcnQoIXBzY2FuLT5waHNfcmVzZXRfc25h cHNob3QgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwogCiAJLyogd3Jp dGUgcmVtYWluaW5nIGFjY3VtdWxhdGVkIGVudHJpZXMgKi8KIAlnaW5GbHVzaEJ1aWxkU3RhdGUo c3RhdGUsIGluZGV4KTsKQEAgLTIxMjQsNiArMjE1MSw5IEBAIF9naW5fcGFyYWxsZWxfc2Nhbl9h bmRfYnVpbGQoR2luQnVpbGRTdGF0ZSAqc3RhdGUsCiAJQ29uZGl0aW9uVmFyaWFibGVTaWduYWwo JmdpbnNoYXJlZC0+d29ya2Vyc2RvbmVjdik7CiAKIAl0dXBsZXNvcnRfZW5kKHN0YXRlLT5ic19z b3J0c3RhdGUpOworCUFzc2VydCghcHNjYW4tPnBoc19yZXNldF9zbmFwc2hvdCB8fCAhVHJhbnNh Y3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CisJaWYgKHBzY2FuLT5waHNfcmVzZXRfc25h cHNob3QpCisJCVB1c2hBY3RpdmVTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOwog fQogCiAvKgpAQCAtMjIxOSw3ICsyMjQ5LDYgQEAgX2dpbl9wYXJhbGxlbF9idWlsZF9tYWluKGRz bV9zZWdtZW50ICpzZWcsIHNobV90b2MgKnRvYykKIAogCV9naW5fcGFyYWxsZWxfc2Nhbl9hbmRf YnVpbGQoJmJ1aWxkc3RhdGUsIGdpbnNoYXJlZCwgc2hhcmVkc29ydCwKIAkJCQkJCQkJIGhlYXBS ZWwsIGluZGV4UmVsLCBzb3J0bWVtLCBmYWxzZSk7Ci0KIAkvKiBSZXBvcnQgV0FML2J1ZmZlciB1 c2FnZSBkdXJpbmcgcGFyYWxsZWwgZXhlY3V0aW9uICovCiAJYnVmZmVydXNhZ2UgPSBzaG1fdG9j X2xvb2t1cCh0b2MsIFBBUkFMTEVMX0tFWV9CVUZGRVJfVVNBR0UsIGZhbHNlKTsKIAl3YWx1c2Fn ZSA9IHNobV90b2NfbG9va3VwKHRvYywgUEFSQUxMRUxfS0VZX1dBTF9VU0FHRSwgZmFsc2UpOwpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMKaW5kZXggNzU0ZjVhNzIwZGYu LmZiMmQ2MTM2MGM5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1f aGFuZGxlci5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMK QEAgLTExNjQsNyArMTE2NCw4IEBAIGhlYXBhbV9pbmRleF9idWlsZF9yYW5nZV9zY2FuKFJlbGF0 aW9uIGhlYXBSZWxhdGlvbiwKIAkgKiBTbmFwc2hvdEFueSBiZWNhdXNlIHdlIG11c3QgcmV0cmll dmUgYWxsIHR1cGxlcyBhbmQgZG8gb3VyIG93biB0aW1lCiAJICogcXVhbCBjaGVja3MgKGJlY2F1 c2Ugd2UgaGF2ZSB0byBpbmRleCBSRUNFTlRMWV9ERUFEIHR1cGxlcykuIEluIGEKIAkgKiBjb25j dXJyZW50IGJ1aWxkLCBvciBkdXJpbmcgYm9vdHN0cmFwLCB3ZSB0YWtlIGEgcmVndWxhciBNVkND IHNuYXBzaG90Ci0JICogYW5kIGluZGV4IHdoYXRldmVyJ3MgbGl2ZSBhY2NvcmRpbmcgdG8gdGhh dC4KKwkgKiBhbmQgaW5kZXggd2hhdGV2ZXIncyBsaXZlIGFjY29yZGluZyB0byB0aGF0IHdoaWxl IHRoYXQgc25hcHNob3QgaXMgcmVzZXQKKwkgKiBldmVyeSBzbyBvZnRlbiAoaW4gdGhlIGNhc2Ug b2Ygbm9uLXVuaXF1ZSBpbmRleCkuCiAJICovCiAJT2xkZXN0WG1pbiA9IEludmFsaWRUcmFuc2Fj dGlvbklkOwogCkBAIC0xMTcyLDggKzExNzMsNiBAQCBoZWFwYW1faW5kZXhfYnVpbGRfcmFuZ2Vf c2NhbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJICogRm9yIHVuaXF1ZSBpbmRleGVzIHdlIG5l ZWQgYSBjb25zaXN0ZW50IHNuYXBzaG90IGZvciB0aGUgd2hvbGUgc2Nhbi4KIAkgKiBSZXNldHRp bmcgc25hcHNob3RzIGFsc28gZG9lc24ndCB3b3JrIGluIHhhY3Qtc25hcHNob3QgaXNvbGF0aW9u IG1vZGVzLAogCSAqIGJlY2F1c2UgdGhvc2Uga2VlcCBhIHJlZ2lzdGVyZWQgdHJhbnNhY3Rpb24g c25hcHNob3QgZm9yIHRoZSB3aG9sZSB4YWN0LgotCSAqIEluIHRoZSBjYXNlIG9mIHBhcmFsbGVs IHNjYW4sIHNvbWUgYWRkaXRpb25hbCBpbmZyYXN0cnVjdHVyZSBpcyByZXF1aXJlZAotCSAqIHRv IHBlcmZvcm0gYSBzY2FuIHdpdGggU09fUkVTRVRfU05BUFNIT1Qgd2hpY2ggaXMgbm90IHlldCBy ZWFkeS4KIAkgKi8KIAlyZXNldF9zbmFwc2hvdHMgPSBJbmRleEJ1aWxkUmVzZXRzU25hcHNob3Rz KGluZGV4SW5mbykgJiYKIAkJCQkJICAhaXNfc3lzdGVtX2NhdGFsb2c7IC8qIGp1c3QgZm9yIHRo ZSBjYXNlICovCkBAIC0xMjM1LDcgKzEyMzQsNyBAQCBoZWFwYW1faW5kZXhfYnVpbGRfcmFuZ2Vf c2NhbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJCUFzc2VydCghSXNCb290c3RyYXBQcm9jZXNz aW5nTW9kZSgpKTsKIAkJQXNzZXJ0KGFsbG93X3N5bmMpOwogCQlzbmFwc2hvdCA9IHNjYW4tPnJz X3NuYXBzaG90OwotCQlpZiAoSXNNVkNDU25hcHNob3Qoc25hcHNob3QpKQorCQlpZiAoIXJlc2V0 X3NuYXBzaG90cyAmJiBJc01WQ0NTbmFwc2hvdChzbmFwc2hvdCkpCiAJCXsKIAkJCS8qIERvbid0 IGV4cG9zZSBTbmFwc2hvdEFueSB0byBTUUwgcnVuIGJ5IHByZWRpY2F0ZXMvZXhwcmVzc2lvbnMu ICovCiAJCQlQdXNoQWN0aXZlU25hcHNob3Qoc25hcHNob3QpOwpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVl L25idHNvcnQuYwppbmRleCA4ZDgwNGQ2YmNmZS4uNmJiMzY1Yzk1MWQgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9uYnRyZWUvbmJ0c29ydC5jCkBAIC0xNDE5LDYgKzE0MTksNyBAQCBfYnRfYmVnaW5fcGFyYWxs ZWwoQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLCBib29sIGlzY29uY3VycmVudCwgaW50IHJlcXVl c3QpCiAJQnVmZmVyVXNhZ2UgKmJ1ZmZlcnVzYWdlOwogCWJvb2wJCWxlYWRlcnBhcnRpY2lwYXRl cyA9IHRydWU7CiAJYm9vbAkJbmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90ID0gdHJ1ZTsKKwlib29s CQlyZXNldF9zbmFwc2hvdDsKIAlpbnQJCQlxdWVyeWxlbjsKIAogI2lmZGVmIERJU0FCTEVfTEVB REVSX1BBUlRJQ0lQQVRJT04KQEAgLTE0MzYsMTIgKzE0MzcsMjQgQEAgX2J0X2JlZ2luX3BhcmFs bGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9vbCBpc2NvbmN1cnJlbnQsIGludCByZXF1 ZXN0KQogCiAJc2NhbnR1cGxlc29ydHN0YXRlcyA9IGxlYWRlcnBhcnRpY2lwYXRlcyA/IHJlcXVl c3QgKyAxIDogcmVxdWVzdDsKIAorCS8qCisJICogRm9yIGNvbmN1cnJlbnQgbm9uLXVuaXF1ZSBp bmRleCBidWlsZHMsIHdlIGNhbiBwZXJpb2RpY2FsbHkgcmVzZXQKKwkgKiBzbmFwc2hvdHMgdG8g YWxsb3cgdGhlIHhtaW4gaG9yaXpvbiB0byBhZHZhbmNlLiAgVGhpcyBpcyBzYWZlIHNpbmNlCisJ ICogdGhlc2UgYnVpbGRzIGRvbid0IHJlcXVpcmUgYSBjb25zaXN0ZW50IHZpZXcgYWNyb3NzIHRo ZSBlbnRpcmUgc2Nhbi4KKwkgKiBVbmlxdWUgaW5kZXhlcyBzdGlsbCBuZWVkIGEgc3RhYmxlIHNu YXBzaG90IHRvIHByb3Blcmx5IGVuZm9yY2UKKwkgKiB1bmlxdWVuZXNzIGNvbnN0cmFpbnRzLiAg SXNvbGF0aW9uIG1vZGVzIHdoZXJlCisJICogSXNvbGF0aW9uVXNlc1hhY3RTbmFwc2hvdCgpIGlz IHRydWUgYWxzbyBwcmV2ZW50IHJlc2V0dGluZyBiZWNhdXNlCisJICogdGhleSBrZWVwIGEgcmVn aXN0ZXJlZCB0cmFuc2FjdGlvbiBzbmFwc2hvdCBmb3IgdGhlIHdob2xlIHRyYW5zYWN0aW9uLgor CSAqLworCXJlc2V0X3NuYXBzaG90ID0gaXNjb25jdXJyZW50ICYmICFJc29sYXRpb25Vc2VzWGFj dFNuYXBzaG90KCkgJiYgIWJ0c3Bvb2wtPmlzdW5pcXVlOworCiAJLyoKIAkgKiBQcmVwYXJlIGZv ciBzY2FuIG9mIHRoZSBiYXNlIHJlbGF0aW9uLiAgSW4gYSBub3JtYWwgaW5kZXggYnVpbGQsIHdl IHVzZQogCSAqIFNuYXBzaG90QW55IGJlY2F1c2Ugd2UgbXVzdCByZXRyaWV2ZSBhbGwgdHVwbGVz IGFuZCBkbyBvdXIgb3duIHRpbWUKIAkgKiBxdWFsIGNoZWNrcyAoYmVjYXVzZSB3ZSBoYXZlIHRv IGluZGV4IFJFQ0VOVExZX0RFQUQgdHVwbGVzKS4gIEluIGEKIAkgKiBjb25jdXJyZW50IGJ1aWxk LCB3ZSB0YWtlIGEgcmVndWxhciBNVkNDIHNuYXBzaG90IGFuZCBpbmRleCB3aGF0ZXZlcidzCi0J ICogbGl2ZSBhY2NvcmRpbmcgdG8gdGhhdC4KKwkgKiBsaXZlIGFjY29yZGluZyB0byB0aGF0LCB3 aGlsZSB0aGF0IHNuYXBzaG90IG1heSBiZSByZXNldCBwZXJpb2RpY2FsbHkKKwkgKiBmb3Igbm9u LXVuaXF1ZSBpbmRleGVzIGluIG5vbi14YWN0LXNuYXBzaG90IGlzb2xhdGlvbiBtb2Rlcy4KIAkg Ki8KIAlpZiAoIWlzY29uY3VycmVudCkKIAl7CkBAIC0xNDQ5LDYgKzE0NjIsMTEgQEAgX2J0X2Jl Z2luX3BhcmFsbGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9vbCBpc2NvbmN1cnJlbnQs IGludCByZXF1ZXN0KQogCQlzbmFwc2hvdCA9IFNuYXBzaG90QW55OwogCQluZWVkX3BvcF9hY3Rp dmVfc25hcHNob3QgPSBmYWxzZTsKIAl9CisJZWxzZSBpZiAocmVzZXRfc25hcHNob3QpCisJewor CQlzbmFwc2hvdCA9IEludmFsaWRTbmFwc2hvdDsKKwkJUHVzaEFjdGl2ZVNuYXBzaG90KEdldFRy YW5zYWN0aW9uU25hcHNob3QoKSk7CisJfQogCWVsc2UKIAl7CiAJCXNuYXBzaG90ID0gUmVnaXN0 ZXJTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOwpAQCAtMTUwOSw3ICsxNTI3LDcg QEAgX2J0X2JlZ2luX3BhcmFsbGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9vbCBpc2Nv bmN1cnJlbnQsIGludCByZXF1ZXN0KQogCXsKIAkJaWYgKG5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hv dCkKIAkJCVBvcEFjdGl2ZVNuYXBzaG90KCk7Ci0JCWlmIChJc01WQ0NTbmFwc2hvdChzbmFwc2hv dCkpCisJCWlmIChzbmFwc2hvdCAhPSBJbnZhbGlkU25hcHNob3QgJiYgSXNNVkNDU25hcHNob3Qo c25hcHNob3QpKQogCQkJVW5yZWdpc3RlclNuYXBzaG90KHNuYXBzaG90KTsKIAkJRGVzdHJveVBh cmFsbGVsQ29udGV4dChwY3h0KTsKIAkJRXhpdFBhcmFsbGVsTW9kZSgpOwpAQCAtMTUzNiw3ICsx NTU0LDggQEAgX2J0X2JlZ2luX3BhcmFsbGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9v bCBpc2NvbmN1cnJlbnQsIGludCByZXF1ZXN0KQogCWJ0c2hhcmVkLT5icm9rZW5ob3RjaGFpbiA9 IGZhbHNlOwogCXRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplKGJ0c3Bvb2wtPmhlYXAsCiAJ CQkJCQkJCSAgUGFyYWxsZWxUYWJsZVNjYW5Gcm9tQlRTaGFyZWQoYnRzaGFyZWQpLAotCQkJCQkJ CQkgIHNuYXBzaG90KTsKKwkJCQkJCQkJICBzbmFwc2hvdCwKKwkJCQkJCQkJICByZXNldF9zbmFw c2hvdCk7CiAKIAkvKgogCSAqIFN0b3JlIHNoYXJlZCB0dXBsZXNvcnQtcHJpdmF0ZSBzdGF0ZSwg Zm9yIHdoaWNoIHdlIHJlc2VydmVkIHNwYWNlLgpAQCAtMTYxMiw2ICsxNjMxLDEzIEBAIF9idF9i ZWdpbl9wYXJhbGxlbChCVEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIGJvb2wgaXNjb25jdXJyZW50 LCBpbnQgcmVxdWVzdCkKIAkvKiBTYXZlIGxlYWRlciBzdGF0ZSBub3cgdGhhdCBpdCdzIGNsZWFy IGJ1aWxkIHdpbGwgYmUgcGFyYWxsZWwgKi8KIAlidWlsZHN0YXRlLT5idGxlYWRlciA9IGJ0bGVh ZGVyOwogCisJLyoKKwkgKiBJbiB0aGUgY2FzZSBvZiBjb25jdXJyZW50IGJ1aWxkLCBzbmFwc2hv dHMgYXJlIGdvaW5nIHRvIGJlIHJlc2V0IHBlcmlvZGljYWxseS4KKwkgKiBXYWl0IHVudGlsIGFs bCB3b3JrZXJzIGltcG9ydGVkIGluaXRpYWwgc25hcHNob3QuCisJICovCisJaWYgKHJlc2V0X3Nu YXBzaG90KQorCQlXYWl0Rm9yUGFyYWxsZWxXb3JrZXJzVG9BdHRhY2gocGN4dCwgdHJ1ZSk7CisK IAkvKiBKb2luIGhlYXAgc2NhbiBvdXJzZWx2ZXMgKi8KIAlpZiAobGVhZGVycGFydGljaXBhdGVz KQogCQlfYnRfbGVhZGVyX3BhcnRpY2lwYXRlX2FzX3dvcmtlcihidWlsZHN0YXRlKTsKQEAgLTE2 MjAsOSArMTY0NiwxMyBAQCBfYnRfYmVnaW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRlICpidWlsZHN0 YXRlLCBib29sIGlzY29uY3VycmVudCwgaW50IHJlcXVlc3QpCiAJICogQ2FsbGVyIG5lZWRzIHRv IHdhaXQgZm9yIGFsbCBsYXVuY2hlZCB3b3JrZXJzIHdoZW4gd2UgcmV0dXJuLiAgTWFrZQogCSAq IHN1cmUgdGhhdCB0aGUgZmFpbHVyZS10by1zdGFydCBjYXNlIHdpbGwgbm90IGhhbmcgZm9yZXZl ci4KIAkgKi8KLQlXYWl0Rm9yUGFyYWxsZWxXb3JrZXJzVG9BdHRhY2gocGN4dCk7CisJaWYgKCFy ZXNldF9zbmFwc2hvdCkKKwkJV2FpdEZvclBhcmFsbGVsV29ya2Vyc1RvQXR0YWNoKHBjeHQsIGZh bHNlKTsKIAlpZiAobmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90KQogCQlQb3BBY3RpdmVTbmFwc2hv dCgpOworCisJSW52YWxpZGF0ZUNhdGFsb2dTbmFwc2hvdCgpOworCUFzc2VydCghcmVzZXRfc25h cHNob3QgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwogfQogCiAvKgpA QCAtMTY0NCw3ICsxNjc0LDcgQEAgX2J0X2VuZF9wYXJhbGxlbChCVExlYWRlciAqYnRsZWFkZXIp CiAJCUluc3RyQWNjdW1QYXJhbGxlbFF1ZXJ5KCZidGxlYWRlci0+YnVmZmVydXNhZ2VbaV0sICZi dGxlYWRlci0+d2FsdXNhZ2VbaV0pOwogCiAJLyogRnJlZSBsYXN0IHJlZmVyZW5jZSB0byBNVkND IHNuYXBzaG90LCBpZiBvbmUgd2FzIHVzZWQgKi8KLQlpZiAoSXNNVkNDU25hcHNob3QoYnRsZWFk ZXItPnNuYXBzaG90KSkKKwlpZiAoYnRsZWFkZXItPnNuYXBzaG90ICE9IEludmFsaWRTbmFwc2hv dCAmJiBJc01WQ0NTbmFwc2hvdChidGxlYWRlci0+c25hcHNob3QpKQogCQlVbnJlZ2lzdGVyU25h cHNob3QoYnRsZWFkZXItPnNuYXBzaG90KTsKIAlEZXN0cm95UGFyYWxsZWxDb250ZXh0KGJ0bGVh ZGVyLT5wY3h0KTsKIAlFeGl0UGFyYWxsZWxNb2RlKCk7CkBAIC0xODk0LDYgKzE5MjQsNyBAQCBf YnRfcGFyYWxsZWxfc2Nhbl9hbmRfc29ydChCVFNwb29sICpidHNwb29sLCBCVFNwb29sICpidHNw b29sMiwKIAlTb3J0Q29vcmRpbmF0ZSBjb29yZGluYXRlOwogCUJUQnVpbGRTdGF0ZSBidWlsZHN0 YXRlOwogCVRhYmxlU2NhbkRlc2Mgc2NhbjsKKwlQYXJhbGxlbFRhYmxlU2NhbkRlc2MgcHNjYW47 CiAJZG91YmxlCQlyZWx0dXBsZXM7CiAJSW5kZXhJbmZvICAqaW5kZXhJbmZvOwogCkBAIC0xOTQ4 LDEyICsxOTc5LDE3IEBAIF9idF9wYXJhbGxlbF9zY2FuX2FuZF9zb3J0KEJUU3Bvb2wgKmJ0c3Bv b2wsIEJUU3Bvb2wgKmJ0c3Bvb2wyLAogCS8qIEpvaW4gcGFyYWxsZWwgc2NhbiAqLwogCWluZGV4 SW5mbyA9IEJ1aWxkSW5kZXhJbmZvKGJ0c3Bvb2wtPmluZGV4KTsKIAlpbmRleEluZm8tPmlpX0Nv bmN1cnJlbnQgPSBidHNoYXJlZC0+aXNjb25jdXJyZW50OworCXBzY2FuID0gUGFyYWxsZWxUYWJs ZVNjYW5Gcm9tQlRTaGFyZWQoYnRzaGFyZWQpOwogCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW5fcGFy YWxsZWwoYnRzcG9vbC0+aGVhcCwKLQkJCQkJCQkJCVBhcmFsbGVsVGFibGVTY2FuRnJvbUJUU2hh cmVkKGJ0c2hhcmVkKSwKKwkJCQkJCQkJCXBzY2FuLAogCQkJCQkJCQkJU09fTk9ORSk7CiAJcmVs dHVwbGVzID0gdGFibGVfaW5kZXhfYnVpbGRfc2NhbihidHNwb29sLT5oZWFwLCBidHNwb29sLT5p bmRleCwgaW5kZXhJbmZvLAogCQkJCQkJCQkJICAgdHJ1ZSwgcHJvZ3Jlc3MsIF9idF9idWlsZF9j YWxsYmFjaywKIAkJCQkJCQkJCSAgICZidWlsZHN0YXRlLCBzY2FuKTsKKwlJbnZhbGlkYXRlQ2F0 YWxvZ1NuYXBzaG90KCk7CisJaWYgKHBzY2FuLT5waHNfcmVzZXRfc25hcHNob3QpCisJCVBvcEFj dGl2ZVNuYXBzaG90KCk7CisJQXNzZXJ0KCFwc2Nhbi0+cGhzX3Jlc2V0X3NuYXBzaG90IHx8ICFU cmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIAogCS8qIEV4ZWN1dGUgdGhpcyB3 b3JrZXIncyBwYXJ0IG9mIHRoZSBzb3J0ICovCiAJaWYgKHByb2dyZXNzKQpAQCAtMTk4OSw0ICsy MDI1LDcgQEAgX2J0X3BhcmFsbGVsX3NjYW5fYW5kX3NvcnQoQlRTcG9vbCAqYnRzcG9vbCwgQlRT cG9vbCAqYnRzcG9vbDIsCiAJdHVwbGVzb3J0X2VuZChidHNwb29sLT5zb3J0c3RhdGUpOwogCWlm IChidHNwb29sMikKIAkJdHVwbGVzb3J0X2VuZChidHNwb29sMi0+c29ydHN0YXRlKTsKKwlBc3Nl cnQoIXBzY2FuLT5waHNfcmVzZXRfc25hcHNob3QgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15 UHJvYy0+eG1pbikpOworCWlmIChwc2Nhbi0+cGhzX3Jlc2V0X3NuYXBzaG90KQorCQlQdXNoQWN0 aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKIH0KZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy90YWJsZS90YWJsZWFtLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdGFi bGUvdGFibGVhbS5jCmluZGV4IDY4ZmYwOTY2ZjFjLi5jZjMzN2VkYTVmNiAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvYWNjZXNzL3RhYmxlL3RhYmxlYW0uYworKysgYi9zcmMvYmFja2VuZC9hY2Nl c3MvdGFibGUvdGFibGVhbS5jCkBAIC0xMzIsMTAgKzEzMiwxMCBAQCB0YWJsZV9wYXJhbGxlbHNj YW5fZXN0aW1hdGUoUmVsYXRpb24gcmVsLCBTbmFwc2hvdCBzbmFwc2hvdCkKIHsKIAlTaXplCQlz eiA9IDA7CiAKLQlpZiAoSXNNVkNDU25hcHNob3Qoc25hcHNob3QpKQorCWlmIChzbmFwc2hvdCAh PSBJbnZhbGlkU25hcHNob3QgJiYgSXNNVkNDU25hcHNob3Qoc25hcHNob3QpKQogCQlzeiA9IGFk ZF9zaXplKHN6LCBFc3RpbWF0ZVNuYXBzaG90U3BhY2Uoc25hcHNob3QpKTsKIAllbHNlCi0JCUFz c2VydChzbmFwc2hvdCA9PSBTbmFwc2hvdEFueSk7CisJCUFzc2VydChzbmFwc2hvdCA9PSBTbmFw c2hvdEFueSB8fCBzbmFwc2hvdCA9PSBJbnZhbGlkU25hcHNob3QpOwogCiAJc3ogPSBhZGRfc2l6 ZShzeiwgcmVsLT5yZF90YWJsZWFtLT5wYXJhbGxlbHNjYW5fZXN0aW1hdGUocmVsKSk7CiAKQEAg LTE0NCwyMSArMTQ0LDM2IEBAIHRhYmxlX3BhcmFsbGVsc2Nhbl9lc3RpbWF0ZShSZWxhdGlvbiBy ZWwsIFNuYXBzaG90IHNuYXBzaG90KQogCiB2b2lkCiB0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlh bGl6ZShSZWxhdGlvbiByZWwsIFBhcmFsbGVsVGFibGVTY2FuRGVzYyBwc2NhbiwKLQkJCQkJCQkg IFNuYXBzaG90IHNuYXBzaG90KQorCQkJCQkJCSAgU25hcHNob3Qgc25hcHNob3QsIGJvb2wgcmVz ZXRfc25hcHNob3QpCiB7CiAJU2l6ZQkJc25hcHNob3Rfb2ZmID0gcmVsLT5yZF90YWJsZWFtLT5w YXJhbGxlbHNjYW5faW5pdGlhbGl6ZShyZWwsIHBzY2FuKTsKIAogCXBzY2FuLT5waHNfc25hcHNo b3Rfb2ZmID0gc25hcHNob3Rfb2ZmOwogCi0JaWYgKElzTVZDQ1NuYXBzaG90KHNuYXBzaG90KSkK KwkvKgorCSAqIEluaXRpYWxpemUgcGFyYWxsZWwgc2NhbiBkZXNjcmlwdGlvbi4gRm9yIG5vcm1h bCBzY2FucyB3aXRoIGEgcmVndWxhcgorCSAqIE1WQ0Mgc25hcHNob3QsIHNlcmlhbGl6ZSB0aGUg c25hcHNob3QgaW5mby4gRm9yIHNjYW5zIHRoYXQgdXNlIHBlcmlvZGljCisJICogc25hcHNob3Qg cmVzZXRzLCBtYXJrIHRoZSBzY2FuIGFjY29yZGluZ2x5LgorCSAqLworCWlmIChyZXNldF9zbmFw c2hvdCkKKwl7CisJCUFzc2VydChzbmFwc2hvdCA9PSBJbnZhbGlkU25hcHNob3QpOworCQlwc2Nh bi0+cGhzX3NuYXBzaG90X2FueSA9IGZhbHNlOworCQlwc2Nhbi0+cGhzX3Jlc2V0X3NuYXBzaG90 ID0gdHJ1ZTsKKwkJSU5KRUNUSU9OX1BPSU5UKCJ0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6 ZSIsIE5VTEwpOworCX0KKwllbHNlIGlmIChJc01WQ0NTbmFwc2hvdChzbmFwc2hvdCkpCiAJewog CQlTZXJpYWxpemVTbmFwc2hvdChzbmFwc2hvdCwgKGNoYXIgKikgcHNjYW4gKyBwc2Nhbi0+cGhz X3NuYXBzaG90X29mZik7CiAJCXBzY2FuLT5waHNfc25hcHNob3RfYW55ID0gZmFsc2U7CisJCXBz Y2FuLT5waHNfcmVzZXRfc25hcHNob3QgPSBmYWxzZTsKIAl9CiAJZWxzZQogCXsKIAkJQXNzZXJ0 KHNuYXBzaG90ID09IFNuYXBzaG90QW55KTsKKwkJQXNzZXJ0KCFyZXNldF9zbmFwc2hvdCk7CiAJ CXBzY2FuLT5waHNfc25hcHNob3RfYW55ID0gdHJ1ZTsKKwkJcHNjYW4tPnBoc19yZXNldF9zbmFw c2hvdCA9IGZhbHNlOwogCX0KIH0KIApAQCAtMTcyLDcgKzE4NywxOSBAQCB0YWJsZV9iZWdpbnNj YW5fcGFyYWxsZWwoUmVsYXRpb24gcmVsYXRpb24sIFBhcmFsbGVsVGFibGVTY2FuRGVzYyBwc2Nh biwKIAogCUFzc2VydChSZWxGaWxlTG9jYXRvckVxdWFscyhyZWxhdGlvbi0+cmRfbG9jYXRvciwg cHNjYW4tPnBoc19sb2NhdG9yKSk7CiAKLQlpZiAoIXBzY2FuLT5waHNfc25hcHNob3RfYW55KQor CS8qCisJICogRm9yIHNjYW5zIHRoYXQKKwkgKiB1c2UgcGVyaW9kaWMgc25hcHNob3QgcmVzZXRz LCBtYXJrIHRoZSBzY2FuIGFjY29yZGluZ2x5IGFuZCB1c2UgdGhlIGFjdGl2ZQorCSAqIHNuYXBz aG90IGFzIHRoZSBpbml0aWFsIHN0YXRlLgorCSAqLworCWlmIChwc2Nhbi0+cGhzX3Jlc2V0X3Nu YXBzaG90KQorCXsKKwkJQXNzZXJ0KEFjdGl2ZVNuYXBzaG90U2V0KCkpOworCQlpbnRlcm5hbF9m bGFncyB8PSBTT19SRVNFVF9TTkFQU0hPVDsKKwkJLyogU3RhcnQgd2l0aCBjdXJyZW50IGFjdGl2 ZSBzbmFwc2hvdC4gKi8KKwkJc25hcHNob3QgPSBHZXRBY3RpdmVTbmFwc2hvdCgpOworCX0KKwll bHNlIGlmICghcHNjYW4tPnBoc19zbmFwc2hvdF9hbnkpCiAJewogCQkvKiBTbmFwc2hvdCB3YXMg c2VyaWFsaXplZCAtLSByZXN0b3JlIGl0ICovCiAJCXNuYXBzaG90ID0gUmVzdG9yZVNuYXBzaG90 KChjaGFyICopIHBzY2FuICsgcHNjYW4tPnBoc19zbmFwc2hvdF9vZmYpOwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vcGFyYWxsZWwuYyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy90cmFuc2FtL3BhcmFsbGVsLmMKaW5kZXggODllOWQyMjRlZWMuLjZmNTBmNWFmZjljIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9wYXJhbGxlbC5jCisrKyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy90cmFuc2FtL3BhcmFsbGVsLmMKQEAgLTc5LDYgKzc5LDcgQEAKICNkZWZp bmUgUEFSQUxMRUxfS0VZX1JFTE1BUFBFUl9TVEFURQkJVUlOVDY0Q09OU1QoMHhGRkZGRkZGRkZG RkYwMDBEKQogI2RlZmluZSBQQVJBTExFTF9LRVlfVU5DT01NSVRURURFTlVNUwkJVUlOVDY0Q09O U1QoMHhGRkZGRkZGRkZGRkYwMDBFKQogI2RlZmluZSBQQVJBTExFTF9LRVlfQ0xJRU5UQ09OTklO Rk8JCQlVSU5UNjRDT05TVCgweEZGRkZGRkZGRkZGRjAwMEYpCisjZGVmaW5lIFBBUkFMTEVMX0tF WV9TTkFQU0hPVF9SRVNUT1JFRAkJVUlOVDY0Q09OU1QoMHhGRkZGRkZGRkZGRkYwMDEwKQogCiAv KiBGaXhlZC1zaXplIHBhcmFsbGVsIHN0YXRlLiAqLwogdHlwZWRlZiBzdHJ1Y3QgRml4ZWRQYXJh bGxlbFN0YXRlCkBAIC0zMDgsNiArMzA5LDEwIEBAIEluaXRpYWxpemVQYXJhbGxlbERTTShQYXJh bGxlbENvbnRleHQgKnBjeHQpCiAJCQkJCQkJCQkJcGN4dC0+bndvcmtlcnMpKTsKIAkJc2htX3Rv Y19lc3RpbWF0ZV9rZXlzKCZwY3h0LT5lc3RpbWF0b3IsIDEpOwogCisJCXNobV90b2NfZXN0aW1h dGVfY2h1bmsoJnBjeHQtPmVzdGltYXRvciwgbXVsX3NpemUoc2l6ZW9mKGJvb2wpLAorCQkJCQkJ CSAgIHBjeHQtPm53b3JrZXJzKSk7CisJCXNobV90b2NfZXN0aW1hdGVfa2V5cygmcGN4dC0+ZXN0 aW1hdG9yLCAxKTsKKwogCQkvKiBFc3RpbWF0ZSBob3cgbXVjaCB3ZSdsbCBuZWVkIGZvciB0aGUg ZW50cnlwb2ludCBpbmZvLiAqLwogCQlzaG1fdG9jX2VzdGltYXRlX2NodW5rKCZwY3h0LT5lc3Rp bWF0b3IsIHN0cmxlbihwY3h0LT5saWJyYXJ5X25hbWUpICsKIAkJCQkJCQkgICBzdHJsZW4ocGN4 dC0+ZnVuY3Rpb25fbmFtZSkgKyAyKTsKQEAgLTM3OSw2ICszODQsNyBAQCBJbml0aWFsaXplUGFy YWxsZWxEU00oUGFyYWxsZWxDb250ZXh0ICpwY3h0KQogCQljaGFyCSAgICplbnRyeXBvaW50c3Rh dGU7CiAJCWNoYXIJICAgKnVuY29tbWl0dGVkZW51bXNzcGFjZTsKIAkJY2hhcgkgICAqY2xpZW50 Y29ubmluZm9zcGFjZTsKKwkJYm9vbAkgICAqc25hcHNob3Rfc2V0X2ZsYWdfc3BhY2U7CiAJCVNp emUJCWxuYW1lbGVuOwogCiAJCS8qIFNlcmlhbGl6ZSBzaGFyZWQgbGlicmFyaWVzIHdlIGhhdmUg bG9hZGVkLiAqLwpAQCAtNDk0LDYgKzUwMCwxOSBAQCBJbml0aWFsaXplUGFyYWxsZWxEU00oUGFy YWxsZWxDb250ZXh0ICpwY3h0KQogCQlzdHJjcHkoZW50cnlwb2ludHN0YXRlLCBwY3h0LT5saWJy YXJ5X25hbWUpOwogCQlzdHJjcHkoZW50cnlwb2ludHN0YXRlICsgbG5hbWVsZW4gKyAxLCBwY3h0 LT5mdW5jdGlvbl9uYW1lKTsKIAkJc2htX3RvY19pbnNlcnQocGN4dC0+dG9jLCBQQVJBTExFTF9L RVlfRU5UUllQT0lOVCwgZW50cnlwb2ludHN0YXRlKTsKKworCQkvKgorCQkgKiBFc3RhYmxpc2gg ZHluYW1pYyBzaGFyZWQgbWVtb3J5IHRvIHBhc3MgaW5mb3JtYXRpb24gYWJvdXQgaW1wb3J0aW5n CisJCSAqIG9mIHNuYXBzaG90LgorCQkgKi8KKwkJc25hcHNob3Rfc2V0X2ZsYWdfc3BhY2UgPQor CQkJCXNobV90b2NfYWxsb2NhdGUocGN4dC0+dG9jLCBtdWxfc2l6ZShzaXplb2YoYm9vbCksIHBj eHQtPm53b3JrZXJzKSk7CisJCWZvciAoaSA9IDA7IGkgPCBwY3h0LT5ud29ya2VyczsgKytpKQor CQl7CisJCQlwY3h0LT53b3JrZXJbaV0uc25hcHNob3RfcmVzdG9yZWQgPSAmc25hcHNob3Rfc2V0 X2ZsYWdfc3BhY2VbaV07CisJCQkqcGN4dC0+d29ya2VyW2ldLnNuYXBzaG90X3Jlc3RvcmVkID0g ZmFsc2U7CisJCX0KKwkJc2htX3RvY19pbnNlcnQocGN4dC0+dG9jLCBQQVJBTExFTF9LRVlfU05B UFNIT1RfUkVTVE9SRUQsIHNuYXBzaG90X3NldF9mbGFnX3NwYWNlKTsKIAl9CiAKIAkvKiBVcGRh dGUgbndvcmtlcnNfdG9fbGF1bmNoLCBpbiBjYXNlIHdlIGNoYW5nZWQgbndvcmtlcnMgYWJvdmUu ICovCkBAIC02NzAsNiArNjg5LDEwIEBAIExhdW5jaFBhcmFsbGVsV29ya2VycyhQYXJhbGxlbENv bnRleHQgKnBjeHQpCiAgKiBXYWl0IGZvciBhbGwgd29ya2VycyB0byBhdHRhY2ggdG8gdGhlaXIg ZXJyb3IgcXVldWVzLCBhbmQgdGhyb3cgYW4gZXJyb3IgaWYKICAqIGFueSB3b3JrZXIgZmFpbHMg dG8gZG8gdGhpcy4KICAqCisgKiB3YWl0X2Zvcl9zbmFwc2hvdDogdHJhY2sgd2hldGhlciBlYWNo IHBhcmFsbGVsIHdvcmtlciBoYXMgc3VjY2Vzc2Z1bGx5IHJlc3RvcmVkCisgKiBpdHMgc25hcHNo b3QuIFRoaXMgaXMgbmVlZGVkIHdoZW4gdXNpbmcgcGVyaW9kaWMgc25hcHNob3QgcmVzZXRzIHRv IGVuc3VyZSBhbGwKKyAqIHdvcmtlcnMgaGF2ZSBhIHZhbGlkIGluaXRpYWwgc25hcHNob3QgYmVm b3JlIHByb2NlZWRpbmcgd2l0aCB0aGUgc2Nhbi4KKyAqCiAgKiBDYWxsZXJzIGNhbiBhc3N1bWUg dGhhdCBpZiB0aGlzIGZ1bmN0aW9uIHJldHVybnMgc3VjY2Vzc2Z1bGx5LCB0aGVuIHRoZQogICog bnVtYmVyIG9mIHdvcmtlcnMgZ2l2ZW4gYnkgcGN4dC0+bndvcmtlcnNfbGF1bmNoZWQgaGF2ZSBp bml0aWFsaXplZCBhbmQKICAqIGF0dGFjaGVkIHRvIHRoZWlyIGVycm9yIHF1ZXVlcy4gIFdoZXRo ZXIgb3Igbm90IHRoZXNlIHdvcmtlcnMgYXJlIGd1YXJhbnRlZWQKQEAgLTY5OSw3ICs3MjIsNyBA QCBMYXVuY2hQYXJhbGxlbFdvcmtlcnMoUGFyYWxsZWxDb250ZXh0ICpwY3h0KQogICogY2FsbCB0 aGlzIGZ1bmN0aW9uIGF0IGFsbC4KICAqLwogdm9pZAotV2FpdEZvclBhcmFsbGVsV29ya2Vyc1Rv QXR0YWNoKFBhcmFsbGVsQ29udGV4dCAqcGN4dCkKK1dhaXRGb3JQYXJhbGxlbFdvcmtlcnNUb0F0 dGFjaChQYXJhbGxlbENvbnRleHQgKnBjeHQsIGJvb2wgd2FpdF9mb3Jfc25hcHNob3QpCiB7CiAJ aW50CQkJaTsKIApAQCAtNzQzLDkgKzc2NiwyNCBAQCBXYWl0Rm9yUGFyYWxsZWxXb3JrZXJzVG9B dHRhY2goUGFyYWxsZWxDb250ZXh0ICpwY3h0KQogCQkJCW1xID0gc2htX21xX2dldF9xdWV1ZShw Y3h0LT53b3JrZXJbaV0uZXJyb3JfbXFoKTsKIAkJCQlpZiAoc2htX21xX2dldF9zZW5kZXIobXEp ICE9IE5VTEwpCiAJCQkJewotCQkJCQkvKiBZZXMsIHNvIGl0IGlzIGtub3duIHRvIGJlIGF0dGFj aGVkLiAqLwotCQkJCQlwY3h0LT5rbm93bl9hdHRhY2hlZF93b3JrZXJzW2ldID0gdHJ1ZTsKLQkJ CQkJKytwY3h0LT5ua25vd25fYXR0YWNoZWRfd29ya2VyczsKKwkJCQkJcGdfcmVhZF9iYXJyaWVy KCk7CisJCQkJCWlmICghd2FpdF9mb3Jfc25hcHNob3QgfHwgKnBjeHQtPndvcmtlcltpXS5zbmFw c2hvdF9yZXN0b3JlZCkKKwkJCQkJeworCQkJCQkJLyogV29ya2VyIGlzIGtub3duIHRvIGJlIGF0 dGFjaGVkLiAqLworCQkJCQkJcGN4dC0+a25vd25fYXR0YWNoZWRfd29ya2Vyc1tpXSA9IHRydWU7 CisJCQkJCQkrK3BjeHQtPm5rbm93bl9hdHRhY2hlZF93b3JrZXJzOworCQkJCQl9CisJCQkJCWVs c2UKKwkJCQkJeworCQkJCQkJLyoKKwkJCQkJCSAqIFdvcmtlciBhdHRhY2hlZCBidXQgaGFzbid0 IHJlc3RvcmVkIGl0cyBzbmFwc2hvdCB5ZXQuCisJCQkJCQkgKi8KKwkJCQkJCXJjID0gV2FpdExh dGNoKE15TGF0Y2gsCisJCQkJCQkJCQkgICBXTF9MQVRDSF9TRVQgfCBXTF9USU1FT1VUIHwgV0xf RVhJVF9PTl9QTV9ERUFUSCwKKwkJCQkJCQkJCSAgIDEwLCBXQUlUX0VWRU5UX0JHV09SS0VSX1NU QVJUVVApOworCQkJCQkJaWYgKHJjICYgV0xfTEFUQ0hfU0VUKQorCQkJCQkJCVJlc2V0TGF0Y2go TXlMYXRjaCk7CisJCQkJCX0KIAkJCQl9CiAJCQl9CiAJCQllbHNlIGlmIChzdGF0dXMgPT0gQkdX SF9TVE9QUEVEKQpAQCAtNzg4LDYgKzgyNiwxNiBAQCBXYWl0Rm9yUGFyYWxsZWxXb3JrZXJzVG9B dHRhY2goUGFyYWxsZWxDb250ZXh0ICpwY3h0KQogCQkJYnJlYWs7CiAJCX0KIAl9CisKKwkvKiBT ZXQgc25hcHNob3QgcmVzdG9yZWQgZmxhZyB0byBmYWxzZS4gKi8KKwlpZiAocGN4dC0+bndvcmtl cnMgPiAwKQorCXsKKwkJYm9vbAkgICAqc25hcHNob3RfcmVzdG9yZWRfc3BhY2U7CisJCXNuYXBz aG90X3Jlc3RvcmVkX3NwYWNlID0KKwkJCQlzaG1fdG9jX2xvb2t1cChwY3h0LT50b2MsIFBBUkFM TEVMX0tFWV9TTkFQU0hPVF9SRVNUT1JFRCwgZmFsc2UpOworCQlmb3IgKGkgPSAwOyBpIDwgcGN4 dC0+bndvcmtlcnM7ICsraSkKKwkJCXNuYXBzaG90X3Jlc3RvcmVkX3NwYWNlW2ldID0gZmFsc2U7 CisJfQogfQogCiAvKgpAQCAtMTMwNCw2ICsxMzUyLDcgQEAgUGFyYWxsZWxXb3JrZXJNYWluKERh dHVtIG1haW5fYXJnKQogCXNobV90b2MgICAgKnRvYzsKIAlGaXhlZFBhcmFsbGVsU3RhdGUgKmZw czsKIAljaGFyCSAgICplcnJvcl9xdWV1ZV9zcGFjZTsKKwlib29sCSAgICpzbmFwc2hvdF9yZXN0 b3JlZF9zcGFjZTsKIAlzaG1fbXEJICAgKm1xOwogCXNobV9tcV9oYW5kbGUgKm1xaDsKIAljaGFy CSAgICpsaWJyYXJ5c3BhY2U7CkBAIC0xNTA3LDYgKzE1NTYsMTEgQEAgUGFyYWxsZWxXb3JrZXJN YWluKERhdHVtIG1haW5fYXJnKQogCQkJCQkJCSAgIGZwcy0+cGFyYWxsZWxfbGVhZGVyX3BncHJv Yyk7CiAJUHVzaEFjdGl2ZVNuYXBzaG90KGFzbmFwc2hvdCk7CiAKKwkvKiBTbmFwc2hvdCBpcyBy ZXN0b3JlZCwgc2V0IGZsYWcgdG8gbWFrZSBsZWFkZXIga25vdyBhYm91dCBpdC4gKi8KKwlzbmFw c2hvdF9yZXN0b3JlZF9zcGFjZSA9IHNobV90b2NfbG9va3VwKHRvYywgUEFSQUxMRUxfS0VZX1NO QVBTSE9UX1JFU1RPUkVELCBmYWxzZSk7CisJc25hcHNob3RfcmVzdG9yZWRfc3BhY2VbUGFyYWxs ZWxXb3JrZXJOdW1iZXJdID0gdHJ1ZTsKKwlwZ193cml0ZV9iYXJyaWVyKCk7CisKIAkvKgogCSAq IFdlJ3ZlIGNoYW5nZWQgd2hpY2ggdHVwbGVzIHdlIGNhbiBzZWUsIGFuZCBtdXN0IHRoZXJlZm9y ZSBpbnZhbGlkYXRlCiAJICogc3lzdGVtIGNhY2hlcy4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVTZXFzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2Vxc2Nh bi5jCmluZGV4IDA0ODAzYjBlMzdkLi4zYjA5MGZkMmMzMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZVNlcXNjYW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl U2Vxc2Nhbi5jCkBAIC0zNzQsNyArMzc0LDggQEAgRXhlY1NlcVNjYW5Jbml0aWFsaXplRFNNKFNl cVNjYW5TdGF0ZSAqbm9kZSwKIAlwc2NhbiA9IHNobV90b2NfYWxsb2NhdGUocGN4dC0+dG9jLCBu b2RlLT5wc2Nhbl9sZW4pOwogCXRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplKG5vZGUtPnNz LnNzX2N1cnJlbnRSZWxhdGlvbiwKIAkJCQkJCQkJICBwc2NhbiwKLQkJCQkJCQkJICBlc3RhdGUt PmVzX3NuYXBzaG90KTsKKwkJCQkJCQkJICBlc3RhdGUtPmVzX3NuYXBzaG90LAorCQkJCQkJCQkg IGZhbHNlKTsKIAlzaG1fdG9jX2luc2VydChwY3h0LT50b2MsIG5vZGUtPnNzLnBzLnBsYW4tPnBs YW5fbm9kZV9pZCwgcHNjYW4pOwogCiAJbm9kZS0+c3Muc3NfY3VycmVudFNjYW5EZXNjID0KZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUaWRyYW5nZXNjYW4uYyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVUaWRyYW5nZXNjYW4uYwppbmRleCA0YThmZTkxYjJiMy4uNzRl MWNhODliN2IgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUaWRyYW5nZXNj YW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGlkcmFuZ2VzY2FuLmMKQEAgLTQ1 OCw3ICs0NTgsOCBAQCBFeGVjVGlkUmFuZ2VTY2FuSW5pdGlhbGl6ZURTTShUaWRSYW5nZVNjYW5T dGF0ZSAqbm9kZSwgUGFyYWxsZWxDb250ZXh0ICpwY3h0KQogCXBzY2FuID0gc2htX3RvY19hbGxv Y2F0ZShwY3h0LT50b2MsIG5vZGUtPnRyc3NfcHNjYW5sZW4pOwogCXRhYmxlX3BhcmFsbGVsc2Nh bl9pbml0aWFsaXplKG5vZGUtPnNzLnNzX2N1cnJlbnRSZWxhdGlvbiwKIAkJCQkJCQkJICBwc2Nh biwKLQkJCQkJCQkJICBlc3RhdGUtPmVzX3NuYXBzaG90KTsKKwkJCQkJCQkJICBlc3RhdGUtPmVz X3NuYXBzaG90LAorCQkJCQkJCQkgIGZhbHNlKTsKIAlzaG1fdG9jX2luc2VydChwY3h0LT50b2Ms IG5vZGUtPnNzLnBzLnBsYW4tPnBsYW5fbm9kZV9pZCwgcHNjYW4pOwogCW5vZGUtPnNzLnNzX2N1 cnJlbnRTY2FuRGVzYyA9CiAJCXRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxlbF90aWRyYW5nZShub2Rl LT5zcy5zc19jdXJyZW50UmVsYXRpb24sCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy90 aW1lL3NuYXBtZ3IuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL3RpbWUvc25hcG1nci5jCmluZGV4IDJl NjE5N2Y1ZjM1Li5kZjkxMTY1MzJjMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvdGlt ZS9zbmFwbWdyLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvdGltZS9zbmFwbWdyLmMKQEAgLTM1 MywxNCArMzUzLDYgQEAgR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCh2b2lkKQogU25hcHNob3QKIEdl dExhdGVzdFNuYXBzaG90KHZvaWQpCiB7Ci0JLyoKLQkgKiBXZSBtaWdodCBiZSBhYmxlIHRvIHJl bGF4IHRoaXMsIGJ1dCBub3RoaW5nIHRoYXQgY291bGQgb3RoZXJ3aXNlIHdvcmsKLQkgKiBuZWVk cyBpdC4KLQkgKi8KLQlpZiAoSXNJblBhcmFsbGVsTW9kZSgpKQotCQllbG9nKEVSUk9SLAotCQkJ ICJjYW5ub3QgdXBkYXRlIFNlY29uZGFyeVNuYXBzaG90IGR1cmluZyBhIHBhcmFsbGVsIG9wZXJh dGlvbiIpOwotCiAJLyoKIAkgKiBTbyBmYXIgdGhlcmUgYXJlIG5vIGNhc2VzIHJlcXVpcmluZyBz dXBwb3J0IGZvciBHZXRMYXRlc3RTbmFwc2hvdCgpCiAJICogZHVyaW5nIGxvZ2ljYWwgZGVjb2Rp bmcsIGJ1dCBpdCB3b3VsZG4ndCBiZSBoYXJkIHRvIGFkZCBpZiByZXF1aXJlZC4KZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9wYXJhbGxlbC5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3Bh cmFsbGVsLmgKaW5kZXggNjBmODU3Njc1ZTAuLjlhM2UxNGUwYzBlIDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9hY2Nlc3MvcGFyYWxsZWwuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvcGFyYWxs ZWwuaApAQCAtMjgsNiArMjgsNyBAQCB0eXBlZGVmIHN0cnVjdCBQYXJhbGxlbFdvcmtlckluZm8K IHsKIAlCYWNrZ3JvdW5kV29ya2VySGFuZGxlICpiZ3doYW5kbGU7CiAJc2htX21xX2hhbmRsZSAq ZXJyb3JfbXFoOworCWJvb2wJCSAgKnNuYXBzaG90X3Jlc3RvcmVkOwogfSBQYXJhbGxlbFdvcmtl ckluZm87CiAKIHR5cGVkZWYgc3RydWN0IFBhcmFsbGVsQ29udGV4dApAQCAtNjcsNyArNjgsNyBA QCBleHRlcm4gdm9pZCBJbml0aWFsaXplUGFyYWxsZWxEU00oUGFyYWxsZWxDb250ZXh0ICpwY3h0 KTsKIGV4dGVybiB2b2lkIFJlaW5pdGlhbGl6ZVBhcmFsbGVsRFNNKFBhcmFsbGVsQ29udGV4dCAq cGN4dCk7CiBleHRlcm4gdm9pZCBSZWluaXRpYWxpemVQYXJhbGxlbFdvcmtlcnMoUGFyYWxsZWxD b250ZXh0ICpwY3h0LCBpbnQgbndvcmtlcnNfdG9fbGF1bmNoKTsKIGV4dGVybiB2b2lkIExhdW5j aFBhcmFsbGVsV29ya2VycyhQYXJhbGxlbENvbnRleHQgKnBjeHQpOwotZXh0ZXJuIHZvaWQgV2Fp dEZvclBhcmFsbGVsV29ya2Vyc1RvQXR0YWNoKFBhcmFsbGVsQ29udGV4dCAqcGN4dCk7CitleHRl cm4gdm9pZCBXYWl0Rm9yUGFyYWxsZWxXb3JrZXJzVG9BdHRhY2goUGFyYWxsZWxDb250ZXh0ICpw Y3h0LCBib29sIHdhaXRfZm9yX3NuYXBzaG90KTsKIGV4dGVybiB2b2lkIFdhaXRGb3JQYXJhbGxl bFdvcmtlcnNUb0ZpbmlzaChQYXJhbGxlbENvbnRleHQgKnBjeHQpOwogZXh0ZXJuIHZvaWQgRGVz dHJveVBhcmFsbGVsQ29udGV4dChQYXJhbGxlbENvbnRleHQgKnBjeHQpOwogZXh0ZXJuIGJvb2wg UGFyYWxsZWxDb250ZXh0QWN0aXZlKHZvaWQpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNj ZXNzL3JlbHNjYW4uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9yZWxzY2FuLmgKaW5kZXggOTYwYWJm NmMyMTQuLjQyNDliYjQ1NzU1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvcmVsc2Nh bi5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9yZWxzY2FuLmgKQEAgLTgxLDYgKzgxLDcgQEAg dHlwZWRlZiBzdHJ1Y3QgUGFyYWxsZWxUYWJsZVNjYW5EZXNjRGF0YQogCVJlbEZpbGVMb2NhdG9y IHBoc19sb2NhdG9yOyAvKiBwaHlzaWNhbCByZWxhdGlvbiB0byBzY2FuICovCiAJYm9vbAkJcGhz X3N5bmNzY2FuOwkvKiByZXBvcnQgbG9jYXRpb24gdG8gc3luY3NjYW4gbG9naWM/ICovCiAJYm9v bAkJcGhzX3NuYXBzaG90X2FueTsJLyogU25hcHNob3RBbnksIG5vdCBwaHNfc25hcHNob3RfZGF0 YT8gKi8KKwlib29sCQlwaHNfcmVzZXRfc25hcHNob3Q7IC8qIHVzZSBTT19SRVNFVF9TTkFQU0hP VD8gKi8KIAlTaXplCQlwaHNfc25hcHNob3Rfb2ZmOwkvKiBkYXRhIGZvciBzbmFwc2hvdCAqLwog fSBQYXJhbGxlbFRhYmxlU2NhbkRlc2NEYXRhOwogdHlwZWRlZiBzdHJ1Y3QgUGFyYWxsZWxUYWJs ZVNjYW5EZXNjRGF0YSAqUGFyYWxsZWxUYWJsZVNjYW5EZXNjOwpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvYWNjZXNzL3RhYmxlYW0uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgKaW5k ZXggOTQxYWYwNWFkM2UuLjAyYzMxY2FlZDJiIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nl c3MvdGFibGVhbS5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgKQEAgLTEyMDcs NyArMTIwNyw4IEBAIGV4dGVybiBTaXplIHRhYmxlX3BhcmFsbGVsc2Nhbl9lc3RpbWF0ZShSZWxh dGlvbiByZWwsIFNuYXBzaG90IHNuYXBzaG90KTsKICAqLwogZXh0ZXJuIHZvaWQgdGFibGVfcGFy YWxsZWxzY2FuX2luaXRpYWxpemUoUmVsYXRpb24gcmVsLAogCQkJCQkJCQkJCSAgUGFyYWxsZWxU YWJsZVNjYW5EZXNjIHBzY2FuLAotCQkJCQkJCQkJCSAgU25hcHNob3Qgc25hcHNob3QpOworCQkJ CQkJCQkJCSAgU25hcHNob3Qgc25hcHNob3QsCisJCQkJCQkJCQkJICBib29sIHJlc2V0X3NuYXBz aG90KTsKIAogLyoKICAqIEJlZ2luIGEgcGFyYWxsZWwgc2Nhbi4gYHBzY2FuYCBuZWVkcyB0byBo YXZlIGJlZW4gaW5pdGlhbGl6ZWQgd2l0aApAQCAtMTg1Miw3ICsxODUzLDcgQEAgdGFibGVfc2Nh bl9hbmFseXplX25leHRfdHVwbGUoVGFibGVTY2FuRGVzYyBzY2FuLAogICogVGhpcyBvbmx5IHJl YWxseSBtYWtlcyBzZW5zZSBmb3IgaGVhcCBBTSwgaXQgbWlnaHQgbmVlZCB0byBiZSBnZW5lcmFs aXplZAogICogZm9yIG90aGVyIEFNcyBsYXRlci4KICAqCi0gKiBJbiBjYXNlIG9mIG5vbi11bmlx dWUgaW5kZXggYW5kIG5vbi1wYXJhbGxlbCBjb25jdXJyZW50IGJ1aWxkLAorICogSW4gY2FzZSBv ZiBub24tdW5pcXVlIGNvbmN1cnJlbnQgYnVpbGQsCiAgKiBjb25jdXJyZW50X2luZGV4X3Jlc2V0 X3NuYXBzaG90X2V2ZXJ5X25fcGFnZXMgaXMgYXBwbGllZCBmb3IgdGhlIHNjYW4uCiAgKiBUaGF0 IGxlYWRzIHRvIGNoYW5naW5nIHNuYXBzaG90cyBvbiB0aGUgZmx5IHRvIGFsbG93IHhtaW4gaG9y aXpvbiBwcm9wYWdhdGUuCiAgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvaW5k ZXguaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXguaAppbmRleCAzZDkzMjMyMzYxZi4uNjBm ODM1NmVkODIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXguaAorKysgYi9z cmMvaW5jbHVkZS9jYXRhbG9nL2luZGV4LmgKQEAgLTM1LDEzICszNSwxMSBAQCB0eXBlZGVmIHN0 cnVjdCBBdHRyTWFwIEF0dHJNYXA7CiAgKiAtIHRoZSBpbmRleCBpcyBub24tdW5pcXVlICh1bmlx dWUgbmVlZHMgY29uc2lzdGVudCBzbmFwc2hvdCkKICAqIC0gaXNvbGF0aW9uIGxldmVsIGlzIG5v dCBSRVBFQVRBQkxFIFJFQUQvU0VSSUFMSVpBQkxFICh0aG9zZSBrZWVwIGEKICAqICAgcmVnaXN0 ZXJlZCB0cmFuc2FjdGlvbiBzbmFwc2hvdCkKLSAqIC0gdGhlIGJ1aWxkIGlzIG5vdCBwYXJhbGxl bCAocGFyYWxsZWwgbmVlZHMgc2VwYXJhdGUgaW5mcmFzdHJ1Y3R1cmUpCiAgKi8KICNkZWZpbmUg SW5kZXhCdWlsZFJlc2V0c1NuYXBzaG90cyhpbmRleEluZm8pIFwKIAkoKGluZGV4SW5mbyktPmlp X0NvbmN1cnJlbnQgJiYgXAogCSAhKGluZGV4SW5mbyktPmlpX1VuaXF1ZSAmJiBcCi0JICFJc29s YXRpb25Vc2VzWGFjdFNuYXBzaG90KCkgJiYgXAotCSAhKGluZGV4SW5mbyktPmlpX1BhcmFsbGVs V29ya2VycykKKwkgIUlzb2xhdGlvblVzZXNYYWN0U25hcHNob3QoKSkKIAogLyogQWN0aW9uIGNv ZGUgZm9yIGluZGV4X3NldF9zdGF0ZV9mbGFncyAqLwogdHlwZWRlZiBlbnVtCmRpZmYgLS1naXQg YS9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvZXhwZWN0ZWQvY2ljX3Jlc2V0X3Nu YXBzaG90cy5vdXQgYi9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvZXhwZWN0ZWQv Y2ljX3Jlc2V0X3NuYXBzaG90cy5vdXQKaW5kZXggZWQ0YWFhZjM0NjMuLmU1YThhN2YzYTc5IDEw MDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvZXhwZWN0ZWQvY2lj X3Jlc2V0X3NuYXBzaG90cy5vdXQKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9p bnRzL2V4cGVjdGVkL2NpY19yZXNldF9zbmFwc2hvdHMub3V0CkBAIC0xNyw2ICsxNywxMiBAQCBT RUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ3RhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNl dF9zbmFwc2hvdHMnLCAnbm90aWNlJwogIAogKDEgcm93KQogCitTRUxFQ1QgaW5qZWN0aW9uX3Bv aW50c19hdHRhY2goJ3RhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplJywgJ25vdGljZScpOwor IGluamVjdGlvbl9wb2ludHNfYXR0YWNoIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAor KDEgcm93KQorCiBDUkVBVEUgU0NIRU1BIGNpY19yZXNldF9zbmFwOwogQ1JFQVRFIFRBQkxFIGNp Y19yZXNldF9zbmFwLnRibChpIGludCBwcmltYXJ5IGtleSwgaiBpbnQpOwogSU5TRVJUIElOVE8g Y2ljX3Jlc2V0X3NuYXAudGJsIFNFTEVDVCBpLCBpICogSSBGUk9NIGdlbmVyYXRlX3Nlcmllcygx LCAyMDApIHMoaSk7CkBAIC03MiwzMCArNzgsNDUgQEAgTk9USUNFOiAgbm90aWNlIHRyaWdnZXJl ZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUK IERST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKIC0tIFRoZSBzYW1l IGluIHBhcmFsbGVsIG1vZGUKIEFMVEVSIFRBQkxFIGNpY19yZXNldF9zbmFwLnRibCBTRVQgKHBh cmFsbGVsX3dvcmtlcnM9Mik7CistLSBEZXRhY2ggdG8ga2VlcCB0ZXN0IHN0YWJsZSwgc2luY2Ug cGFyYWxsZWwgd29ya2VyIG1heSBjb21wbGV0ZSBzY2FuIGJlZm9yZSBsZWFkZXIKK1NFTEVDVCBp bmplY3Rpb25fcG9pbnRzX2RldGFjaCgnaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2 ZScpOworIGluamVjdGlvbl9wb2ludHNfZGV0YWNoIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIAorKDEgcm93KQorCiBDUkVBVEUgVU5JUVVFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04g Y2ljX3Jlc2V0X3NuYXAudGJsKGkpOwogUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jl c2V0X3NuYXAuaWR4OwogRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4 OwogQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGkp OworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX3Bh cmFsbGVsc2Nhbl9pbml0aWFsaXplCiBSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVz ZXRfc25hcC5pZHg7CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9p bnQgdGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUKIERST1AgSU5ERVggQ09OQ1VSUkVOVExZ IGNpY19yZXNldF9zbmFwLmlkeDsKIENSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNp Y19yZXNldF9zbmFwLnRibChNT0QoaSwgMiksIGopIFdIRVJFIE1PRChpLCAyKSA9IDA7CitOT1RJ Q0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfcGFyYWxsZWxz Y2FuX2luaXRpYWxpemUKIFJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFw LmlkeDsKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJs ZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZQogRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jl c2V0X3NuYXAuaWR4OwogQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0 X3NuYXAudGJsKGksIGopIFdIRVJFIGNpY19yZXNldF9zbmFwLnByZWRpY2F0ZV9zdGFibGUoaSk7 CiBOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfYmVn aW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cwotTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBm b3IgaW5qZWN0aW9uIHBvaW50IGhlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUKIFJF SU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKIE5PVElDRTogIG5v dGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRf cmVzZXRfc25hcHNob3RzCi1OT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24g cG9pbnQgaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZQogRFJPUCBJTkRFWCBDT05D VVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBp ZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGksIGopIFdIRVJFIGNpY19yZXNldF9zbmFwLnByZWRp Y2F0ZV9zdGFibGVfbm9fcGFyYW0oKTsKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGlu amVjdGlvbiBwb2ludCB0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZQogUkVJTkRFWCBJTkRF WCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworTk9USUNFOiAgbm90aWNlIHRyaWdn ZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplCiBE Uk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CiBDUkVBVEUgSU5ERVgg Q09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSBERVNDIE5VTExTIExBU1Qp OworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX3Bh cmFsbGVsc2Nhbl9pbml0aWFsaXplCiBSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVz ZXRfc25hcC5pZHg7CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9p bnQgdGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUKIERST1AgSU5ERVggQ09OQ1VSUkVOVExZ IGNpY19yZXNldF9zbmFwLmlkeDsKIENSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNp Y19yZXNldF9zbmFwLnRibCBVU0lORyBCUklOKGkpOworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJl ZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplCiBSRUlO REVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitOT1RJQ0U6ICBub3Rp Y2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfcGFyYWxsZWxzY2FuX2luaXRp YWxpemUKIERST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKIEJFR0lO IFRSQU5TQUNUSU9OOwogQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0 X3NuYXAudGJsKGkpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9p bnRzL3NxbC9jaWNfcmVzZXRfc25hcHNob3RzLnNxbCBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0 aW9uX3BvaW50cy9zcWwvY2ljX3Jlc2V0X3NuYXBzaG90cy5zcWwKaW5kZXggNTUzNzg3NTM5YjMu LmE4NWIwY2JmNTc1IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2lu dHMvc3FsL2NpY19yZXNldF9zbmFwc2hvdHMuc3FsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvaW5q ZWN0aW9uX3BvaW50cy9zcWwvY2ljX3Jlc2V0X3NuYXBzaG90cy5zcWwKQEAgLTMsNyArMyw3IEBA IENSRUFURSBFWFRFTlNJT04gaW5qZWN0aW9uX3BvaW50czsKIFNFTEVDVCBpbmplY3Rpb25fcG9p bnRzX3NldF9sb2NhbCgpOwogU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdoZWFwX3Jl c2V0X3NjYW5fc25hcHNob3RfZWZmZWN0aXZlJywgJ25vdGljZScpOwogU0VMRUNUIGluamVjdGlv bl9wb2ludHNfYXR0YWNoKCd0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzJywg J25vdGljZScpOwotCitTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ3RhYmxlX3BhcmFs bGVsc2Nhbl9pbml0aWFsaXplJywgJ25vdGljZScpOwogCiBDUkVBVEUgU0NIRU1BIGNpY19yZXNl dF9zbmFwOwogQ1JFQVRFIFRBQkxFIGNpY19yZXNldF9zbmFwLnRibChpIGludCBwcmltYXJ5IGtl eSwgaiBpbnQpOwpAQCAtNTMsNiArNTMsOSBAQCBEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNf cmVzZXRfc25hcC5pZHg7CiAtLSBUaGUgc2FtZSBpbiBwYXJhbGxlbCBtb2RlCiBBTFRFUiBUQUJM RSBjaWNfcmVzZXRfc25hcC50YmwgU0VUIChwYXJhbGxlbF93b3JrZXJzPTIpOwogCistLSBEZXRh Y2ggdG8ga2VlcCB0ZXN0IHN0YWJsZSwgc2luY2UgcGFyYWxsZWwgd29ya2VyIG1heSBjb21wbGV0 ZSBzY2FuIGJlZm9yZSBsZWFkZXIKK1NFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2RldGFjaCgnaGVh cF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZScpOworCiBDUkVBVEUgVU5JUVVFIElOREVY IENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGkpOwogUkVJTkRFWCBJTkRF WCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogRFJPUCBJTkRFWCBDT05DVVJSRU5U TFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwotLSAKMi40My4wCgo= --000000000000a18566064ece63cb Content-Type: application/octet-stream; name="v5-0002-Reset-snapshots-periodically-in-non-unique-non-pa.patch" Content-Disposition: attachment; filename="v5-0002-Reset-snapshots-periodically-in-non-unique-non-pa.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnnfi1l11 RnJvbSAxODk5NDY2ODAzMjg1ODEyMmNkNTk5NDI5NTkxZTI2ZDQwNjE0NmMyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bmtleUB0b2xva2EuYWk+CkRh dGU6IEZyaSwgMyBBcHIgMjAyNiAxODoyMzowMSArMDIwMApTdWJqZWN0OiBbUEFUQ0ggdjUgMi80 XSBSZXNldCBzbmFwc2hvdHMgcGVyaW9kaWNhbGx5IGluIG5vbi11bmlxdWUKIG5vbi1wYXJhbGxl bCBjb25jdXJyZW50IGluZGV4IGJ1aWxkcyBMb25nLWxpdmluZyBzbmFwc2hvdHMgdXNlZCBieSBD UkVBVEUKIElOREVYIENPTkNVUlJFTlRMWSBhbmQgUkVJTkRFWCBDT05DVVJSRU5UTFkgY2FuIGhv bGQgYmFjayB0aGUgZ2xvYmFsIHhtaW4KIGhvcml6b24uIENvbW1pdCBkOWQwNzYyIGF0dGVtcHRl ZCB0byBhbGxvdyBWQUNVVU0gdG8gaWdub3JlIHN1Y2ggc25hcHNob3RzIHRvCiBtaXRpZ2F0ZSB0 aGlzIHByb2JsZW0uIEhvd2V2ZXIsIHRoaXMgd2FzIHJldmVydGVkIGluIGNvbW1pdCBlMjhiYjg4 IGJlY2F1c2UKIGl0IGNvdWxkIGNhdXNlIGluZGV4ZXMgdG8gbWlzcyBoZWFwIHR1cGxlcyB0aGF0 IHdlcmUgSE9ULXVwZGF0ZWQgYW5kCiBIT1QtcHJ1bmVkIGR1cmluZyB0aGUgaW5kZXggY3JlYXRp b24sIGxlYWRpbmcgdG8gaW5kZXggY29ycnVwdGlvbi4KClRoaXMgcGF0Y2ggaW50cm9kdWNlcyBh biBhbHRlcm5hdGl2ZSBieSBwZXJpb2RpY2FsbHkgcmVzZXR0aW5nIHRoZSBzbmFwc2hvdCB1c2Vk IGR1cmluZyB0aGUgZmlyc3QgcGhhc2UuIEJ5IHJlc2V0dGluZyB0aGUgc25hcHNob3QgZXZlcnkg TiBwYWdlcyBkdXJpbmcgdGhlIGhlYXAgc2NhbiwgaXQgYWxsb3dzIHRoZSB4bWluIGhvcml6b24g dG8gYWR2YW5jZS4KCkN1cnJlbnRseSwgdGhpcyB0ZWNobmlxdWUgaXMgYXBwbGllZCB0bzoKCi0g b25seSBkdXJpbmcgdGhlIGZpcnN0IHNjYW4gb2YgdGhlIGhlYXA6IFRoZSBzZWNvbmQgc2NhbiBk dXJpbmcgaW5kZXggdmFsaWRhdGlvbiBzdGlsbCB1c2VzIGEgc2luZ2xlIHNuYXBzaG90IHRvIGVu c3VyZSBpbmRleCBjb3JyZWN0bmVzcwotIG5vbi1wYXJhbGxlbCBpbmRleCBidWlsZHM6IFBhcmFs bGVsIGluZGV4IGJ1aWxkcyBhcmUgbm90IHlldCBzdXBwb3J0ZWQgYW5kIHdpbGwgYmUgYWRkcmVz c2VkIGluIGZvbGxvd2luZyBjb21taXRzCi0gbm9uLXVuaXF1ZSBpbmRleGVzOiBVbmlxdWUgaW5k ZXggYnVpbGRzIHN0aWxsIHJlcXVpcmUgYSBjb25zaXN0ZW50IHNuYXBzaG90IHRvIGVuZm9yY2Ug dW5pcXVlbmVzcyBjb25zdHJhaW50cywgd2lsbCBiZSBhZGRyZXNzZWQgaW4gZm9sbG93aW5nIGNv bW1pdHMKCkEgbmV3IHNjYW4gb3B0aW9uIFNPX1JFU0VUX1NOQVBTSE9UIGlzIGludHJvZHVjZWQu IFdoZW4gc2V0LCBpdCBjYXVzZXMgdGhlIHNuYXBzaG90IHRvIGJlIHJlc2V0ICJiZXR3ZWVuIiBl dmVyeSBTT19SRVNFVF9TTkFQU0hPVF9FQUNIX05fUEFHRSBwYWdlcyBkdXJpbmcgdGhlIHNjYW4u IFRoZSBoZWFwIHNjYW4gY29kZSBpcyBhZGp1c3RlZCB0byBzdXBwb3J0IHRoaXMgb3B0aW9uLCBh bmQgdGhlIGluZGV4IGJ1aWxkIGNvZGUgaXMgbW9kaWZpZWQgdG8gdXNlIGl0IGZvciBhcHBsaWNh YmxlIGNvbmN1cnJlbnQgaW5kZXggYnVpbGRzIHRoYXQgYXJlIG5vdCBvbiBzeXN0ZW0gY2F0YWxv Z3MgYW5kIG5vdCB1c2luZyBwYXJhbGxlbCB3b3JrZXJzLgotLS0KIGNvbnRyaWIvYW1jaGVjay92 ZXJpZnlfbmJ0cmVlLmMgICAgICAgICAgICAgICB8ICAgMyArLQogY29udHJpYi9wZ3N0YXR0dXBs ZS9wZ3N0YXR0dXBsZS5jICAgICAgICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9hY2Nlc3Mv YnJpbi9icmluLmMgICAgICAgICAgICAgICAgfCAgMTkgKystCiBzcmMvYmFja2VuZC9hY2Nlc3Mv Z2luL2dpbmluc2VydC5jICAgICAgICAgICAgfCAgMjIgKysrKwogc3JjL2JhY2tlbmQvYWNjZXNz L2dpc3QvZ2lzdGJ1aWxkLmMgICAgICAgICAgIHwgICA1ICsKIHNyYy9iYWNrZW5kL2FjY2Vzcy9o YXNoL2hhc2guYyAgICAgICAgICAgICAgICB8ICAgNCArCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC9oZWFwYW0uYyAgICAgICAgICAgICAgfCAgNTAgKysrKysrKy0KIHNyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMgICAgICB8ICA3NCArKysrKysrKystLQogc3JjL2JhY2tl bmQvYWNjZXNzL2luZGV4L2dlbmFtLmMgICAgICAgICAgICAgIHwgICAyICstCiBzcmMvYmFja2Vu ZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQuYyAgICAgICAgICAgfCAgMjcgKysrLQogc3JjL2JhY2tl bmQvYWNjZXNzL3NwZ2lzdC9zcGdpbnNlcnQuYyAgICAgICAgIHwgICA0ICsKIHNyYy9iYWNrZW5k L2NhdGFsb2cvaW5kZXguYyAgICAgICAgICAgICAgICAgICB8ICAzMCArKysrLQogc3JjL2JhY2tl bmQvY29tbWFuZHMvaW5kZXhjbWRzLmMgICAgICAgICAgICAgIHwgIDE0ICstLQogc3JjL2JhY2tl bmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jICAgICAgICAgIHwgIDEwICsrCiBzcmMvYmFja2Vu ZC91dGlscy9lcnJjb2Rlcy50eHQgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQv dXRpbHMvbWlzYy9ndWNfcGFyYW1ldGVycy5kYXQgICAgIHwgIDEwICsrCiBzcmMvaW5jbHVkZS9h Y2Nlc3MvdGFibGVhbS5oICAgICAgICAgICAgICAgICAgfCAgMzEgKysrKy0KIHNyYy9pbmNsdWRl L2NhdGFsb2cvaW5kZXguaCAgICAgICAgICAgICAgICAgICB8ICAxNyArKysKIHNyYy9pbmNsdWRl L21pc2NhZG1pbi5oICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvdGVzdC9tb2R1 bGVzL2luamVjdGlvbl9wb2ludHMvTWFrZWZpbGUgICAgfCAgIDIgKy0KIC4uLi9leHBlY3RlZC9j aWNfcmVzZXRfc25hcHNob3RzLm91dCAgICAgICAgICB8IDExOCArKysrKysrKysrKysrKysrKysK IHNyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9tZXNvbi5idWlsZCB8ICAgMSArCiAu Li4vc3FsL2NpY19yZXNldF9zbmFwc2hvdHMuc3FsICAgICAgICAgICAgICAgfCAxMDEgKysrKysr KysrKysrKysrCiAyMyBmaWxlcyBjaGFuZ2VkLCA1MDkgaW5zZXJ0aW9ucygrKSwgMzkgZGVsZXRp b25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9p bnRzL2V4cGVjdGVkL2NpY19yZXNldF9zbmFwc2hvdHMub3V0CiBjcmVhdGUgbW9kZSAxMDA2NDQg c3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL3NxbC9jaWNfcmVzZXRfc25hcHNob3Rz LnNxbAoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvYW1jaGVjay92ZXJpZnlfbmJ0cmVlLmMgYi9jb250 cmliL2FtY2hlY2svdmVyaWZ5X25idHJlZS5jCmluZGV4IGI3NGFiNWY3YTA1Li40MDg3NDE2NzYz MSAxMDA2NDQKLS0tIGEvY29udHJpYi9hbWNoZWNrL3ZlcmlmeV9uYnRyZWUuYworKysgYi9jb250 cmliL2FtY2hlY2svdmVyaWZ5X25idHJlZS5jCkBAIC01NTcsNyArNTU3LDggQEAgYnRfY2hlY2tf ZXZlcnlfbGV2ZWwoUmVsYXRpb24gcmVsLCBSZWxhdGlvbiBoZWFwcmVsLCBib29sIGhlYXBrZXlz cGFjZSwKIAkJCQkJCQkJCSAwLCAvKiBudW1iZXIgb2Yga2V5cyAqLwogCQkJCQkJCQkJIE5VTEws CS8qIHNjYW4ga2V5ICovCiAJCQkJCQkJCQkgdHJ1ZSwJLyogYnVmZmVyIGFjY2VzcyBzdHJhdGVn eSBPSyAqLwotCQkJCQkJCQkJIHRydWUpOyAvKiBzeW5jc2NhbiBPSz8gKi8KKwkJCQkJCQkJCSB0 cnVlLCAvKiBzeW5jc2NhbiBPSz8gKi8KKwkJCQkJCQkJCSBmYWxzZSk7CiAKIAkJLyoKIAkJICog U2NhbiB3aWxsIGJlaGF2ZSBhcyB0aGUgZmlyc3Qgc2NhbiBvZiBhIENSRUFURSBJTkRFWCBDT05D VVJSRU5UTFkKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdzdGF0dHVwbGUvcGdzdGF0dHVwbGUuYyBi L2NvbnRyaWIvcGdzdGF0dHVwbGUvcGdzdGF0dHVwbGUuYwppbmRleCA2YTdmOGNiNGE3Yy4uYTBl N2VkMmUxMzcgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcGdzdGF0dHVwbGUvcGdzdGF0dHVwbGUuYwor KysgYi9jb250cmliL3Bnc3RhdHR1cGxlL3Bnc3RhdHR1cGxlLmMKQEAgLTMzNSw3ICszMzUsNyBA QCBwZ3N0YXRfaGVhcChSZWxhdGlvbiByZWwsIEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvKQogCQkJ CSBlcnJtc2coIm9ubHkgaGVhcCBBTSBpcyBzdXBwb3J0ZWQiKSkpOwogCiAJLyogRGlzYWJsZSBz eW5jc2NhbiBiZWNhdXNlIHdlIGFzc3VtZSB3ZSBzY2FuIGZyb20gYmxvY2sgemVybyB1cHdhcmRz ICovCi0Jc2NhbiA9IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdChyZWwsIFNuYXBzaG90QW55LCAwLCBO VUxMLCB0cnVlLCBmYWxzZSk7CisJc2NhbiA9IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdChyZWwsIFNu YXBzaG90QW55LCAwLCBOVUxMLCB0cnVlLCBmYWxzZSwgZmFsc2UpOwogCWhzY2FuID0gKEhlYXBT Y2FuRGVzYykgc2NhbjsKIAogCUluaXREaXJ0eVNuYXBzaG90KFNuYXBzaG90RGlydHkpOwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2JyaW4vYnJpbi5jCmluZGV4IGJkYjMwNzUyZTA5Li4wOTc0MTE4NjI2NCAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9icmluL2JyaW4uYwpAQCAtMTIyMSwxMSArMTIyMSwxMiBAQCBicmluYnVpbGQoUmVsYXRpb24g aGVhcCwgUmVsYXRpb24gaW5kZXgsIEluZGV4SW5mbyAqaW5kZXhJbmZvKQogCQlzdGF0ZS0+YnNf c29ydHN0YXRlID0KIAkJCXR1cGxlc29ydF9iZWdpbl9pbmRleF9icmluKG1haW50ZW5hbmNlX3dv cmtfbWVtLCBjb29yZGluYXRlLAogCQkJCQkJCQkJICAgVFVQTEVTT1JUX05PTkUpOwotCisJCUlu dmFsaWRhdGVDYXRhbG9nU25hcHNob3QoKTsKIAkJLyogc2NhbiB0aGUgcmVsYXRpb24gYW5kIG1l cmdlIHBlci13b3JrZXIgcmVzdWx0cyAqLwogCQlyZWx0dXBsZXMgPSBfYnJpbl9wYXJhbGxlbF9t ZXJnZShzdGF0ZSk7CiAKIAkJX2JyaW5fZW5kX3BhcmFsbGVsKHN0YXRlLT5ic19sZWFkZXIsIHN0 YXRlKTsKKwkJQXNzZXJ0KCFJbmRleEJ1aWxkUmVzZXRzU25hcHNob3RzKGluZGV4SW5mbykgfHwg IVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwogCX0KIAllbHNlCQkJCQkJLyog bm8gcGFyYWxsZWwgaW5kZXggYnVpbGQgKi8KIAl7CkBAIC0xMjM4LDYgKzEyMzksNyBAQCBicmlu YnVpbGQoUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsIEluZGV4SW5mbyAqaW5kZXhJbmZv KQogCQlyZWx0dXBsZXMgPSB0YWJsZV9pbmRleF9idWlsZF9zY2FuKGhlYXAsIGluZGV4LCBpbmRl eEluZm8sIGZhbHNlLCB0cnVlLAogCQkJCQkJCQkJCSAgIGJyaW5idWlsZENhbGxiYWNrLCBzdGF0 ZSwgTlVMTCk7CiAKKwkJSW52YWxpZGF0ZUNhdGFsb2dTbmFwc2hvdCgpOwogCQkvKgogCQkgKiBw cm9jZXNzIHRoZSBmaW5hbCBiYXRjaAogCQkgKgpAQCAtMTI1Nyw2ICsxMjU5LDcgQEAgYnJpbmJ1 aWxkKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBJbmRleEluZm8gKmluZGV4SW5mbykK IAkJYnJpbl9maWxsX2VtcHR5X3JhbmdlcyhzdGF0ZSwKIAkJCQkJCQkgICBzdGF0ZS0+YnNfY3Vy clJhbmdlU3RhcnQsCiAJCQkJCQkJICAgc3RhdGUtPmJzX21heFJhbmdlU3RhcnQpOworCQlBc3Nl cnQoIUluZGV4QnVpbGRSZXNldHNTbmFwc2hvdHMoaW5kZXhJbmZvKSB8fCAhVHJhbnNhY3Rpb25J ZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CiAJfQogCiAJLyogcmVsZWFzZSByZXNvdXJjZXMgKi8K QEAgLTIzOTAsNiArMjM5Myw3IEBAIF9icmluX2JlZ2luX3BhcmFsbGVsKEJyaW5CdWlsZFN0YXRl ICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIAlXYWxVc2FnZSAg ICp3YWx1c2FnZTsKIAlCdWZmZXJVc2FnZSAqYnVmZmVydXNhZ2U7CiAJYm9vbAkJbGVhZGVycGFy dGljaXBhdGVzID0gdHJ1ZTsKKwlib29sCQluZWVkX3BvcF9hY3RpdmVfc25hcHNob3QgPSB0cnVl OwogCWludAkJCXF1ZXJ5bGVuOwogCiAjaWZkZWYgRElTQUJMRV9MRUFERVJfUEFSVElDSVBBVElP TgpAQCAtMjQxNSw5ICsyNDE5LDE2IEBAIF9icmluX2JlZ2luX3BhcmFsbGVsKEJyaW5CdWlsZFN0 YXRlICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIAkgKiBsaXZl IGFjY29yZGluZyB0byB0aGF0LgogCSAqLwogCWlmICghaXNjb25jdXJyZW50KQorCXsKKwkJQXNz ZXJ0KEFjdGl2ZVNuYXBzaG90U2V0KCkpOwogCQlzbmFwc2hvdCA9IFNuYXBzaG90QW55OworCQlu ZWVkX3BvcF9hY3RpdmVfc25hcHNob3QgPSBmYWxzZTsKKwl9CiAJZWxzZQorCXsKIAkJc25hcHNo b3QgPSBSZWdpc3RlclNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7CisJCVB1c2hB Y3RpdmVTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOworCX0KIAogCS8qCiAJICog RXN0aW1hdGUgc2l6ZSBmb3Igb3VyIG93biBQQVJBTExFTF9LRVlfQlJJTl9TSEFSRUQgd29ya3Nw YWNlLgpAQCAtMjQ2MCw2ICsyNDcxLDggQEAgX2JyaW5fYmVnaW5fcGFyYWxsZWwoQnJpbkJ1aWxk U3RhdGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAogCS8qIElm IG5vIERTTSBzZWdtZW50IHdhcyBhdmFpbGFibGUsIGJhY2sgb3V0IChkbyBzZXJpYWwgYnVpbGQp ICovCiAJaWYgKHBjeHQtPnNlZyA9PSBOVUxMKQogCXsKKwkJaWYgKG5lZWRfcG9wX2FjdGl2ZV9z bmFwc2hvdCkKKwkJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CiAJCWlmIChJc01WQ0NTbmFwc2hvdChz bmFwc2hvdCkpCiAJCQlVbnJlZ2lzdGVyU25hcHNob3Qoc25hcHNob3QpOwogCQlEZXN0cm95UGFy YWxsZWxDb250ZXh0KHBjeHQpOwpAQCAtMjUzOSw2ICsyNTUyLDggQEAgX2JyaW5fYmVnaW5fcGFy YWxsZWwoQnJpbkJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9u IGluZGV4LAogCS8qIElmIG5vIHdvcmtlcnMgd2VyZSBzdWNjZXNzZnVsbHkgbGF1bmNoZWQsIGJh Y2sgb3V0IChkbyBzZXJpYWwgYnVpbGQpICovCiAJaWYgKHBjeHQtPm53b3JrZXJzX2xhdW5jaGVk ID09IDApCiAJeworCQlpZiAobmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90KQorCQkJUG9wQWN0aXZl U25hcHNob3QoKTsKIAkJX2JyaW5fZW5kX3BhcmFsbGVsKGJyaW5sZWFkZXIsIE5VTEwpOwogCQly ZXR1cm47CiAJfQpAQCAtMjU1NSw2ICsyNTcwLDggQEAgX2JyaW5fYmVnaW5fcGFyYWxsZWwoQnJp bkJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAog CSAqIHN1cmUgdGhhdCB0aGUgZmFpbHVyZS10by1zdGFydCBjYXNlIHdpbGwgbm90IGhhbmcgZm9y ZXZlci4KIAkgKi8KIAlXYWl0Rm9yUGFyYWxsZWxXb3JrZXJzVG9BdHRhY2gocGN4dCk7CisJaWYg KG5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCkKKwkJUG9wQWN0aXZlU25hcHNob3QoKTsKIH0KIAog LyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luaW5zZXJ0LmMgYi9zcmMv YmFja2VuZC9hY2Nlc3MvZ2luL2dpbmluc2VydC5jCmluZGV4IDlkODNhNDk1Nzc1Li41YjAzNWFh NWRlYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW5pbnNlcnQuYworKysg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmluc2VydC5jCkBAIC0zMSw2ICszMSw3IEBACiAj aW5jbHVkZSAic3RvcmFnZS9jb25kaXRpb25fdmFyaWFibGUuaCIKICNpbmNsdWRlICJzdG9yYWdl L3Byb2MuaCIKICNpbmNsdWRlICJzdG9yYWdlL3ByZWRpY2F0ZS5oIgorI2luY2x1ZGUgInN0b3Jh Z2UvcHJvYy5oIgogI2luY2x1ZGUgInRjb3AvdGNvcHByb3QuaCIKICNpbmNsdWRlICJ1dGlscy9k YXR1bS5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCkBAIC02ODMsNiArNjg0LDkgQEAg Z2luYnVpbGQoUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsIEluZGV4SW5mbyAqaW5kZXhJ bmZvKQogCWJ1aWxkc3RhdGUuYWNjdW0uZ2luc3RhdGUgPSAmYnVpbGRzdGF0ZS5naW5zdGF0ZTsK IAlnaW5Jbml0QkEoJmJ1aWxkc3RhdGUuYWNjdW0pOwogCisJSW52YWxpZGF0ZUNhdGFsb2dTbmFw c2hvdCgpOworCUFzc2VydCghSW5kZXhCdWlsZFJlc2V0c1NuYXBzaG90cyhpbmRleEluZm8pIHx8 ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKKwogCS8qIFJlcG9ydCB0YWJs ZSBzY2FuIHBoYXNlIHN0YXJ0ZWQgKi8KIAlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBS T0dSRVNTX0NSRUFURUlEWF9TVUJQSEFTRSwKIAkJCQkJCQkJIFBST0dSRVNTX0dJTl9QSEFTRV9J TkRFWEJVSUxEX1RBQkxFU0NBTik7CkBAIC03NDUsMTEgKzc0OSwxMyBAQCBnaW5idWlsZChSZWxh dGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwgSW5kZXhJbmZvICppbmRleEluZm8pCiAJCQl0dXBs ZXNvcnRfYmVnaW5faW5kZXhfZ2luKGhlYXAsIGluZGV4LAogCQkJCQkJCQkJICBtYWludGVuYW5j ZV93b3JrX21lbSwgY29vcmRpbmF0ZSwKIAkJCQkJCQkJCSAgVFVQTEVTT1JUX05PTkUpOworCQlJ bnZhbGlkYXRlQ2F0YWxvZ1NuYXBzaG90KCk7CiAKIAkJLyogc2NhbiB0aGUgcmVsYXRpb24gaW4g cGFyYWxsZWwgYW5kIG1lcmdlIHBlci13b3JrZXIgcmVzdWx0cyAqLwogCQlyZWx0dXBsZXMgPSBf Z2luX3BhcmFsbGVsX21lcmdlKHN0YXRlKTsKIAogCQlfZ2luX2VuZF9wYXJhbGxlbChzdGF0ZS0+ YnNfbGVhZGVyLCBzdGF0ZSk7CisJCUFzc2VydCghSW5kZXhCdWlsZFJlc2V0c1NuYXBzaG90cyhp bmRleEluZm8pIHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIAl9CiAJ ZWxzZQkJCQkJCS8qIG5vIHBhcmFsbGVsIGluZGV4IGJ1aWxkICovCiAJewpAQCAtNzU5LDYgKzc2 NSw3IEBAIGdpbmJ1aWxkKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBJbmRleEluZm8g KmluZGV4SW5mbykKIAkJICovCiAJCXJlbHR1cGxlcyA9IHRhYmxlX2luZGV4X2J1aWxkX3NjYW4o aGVhcCwgaW5kZXgsIGluZGV4SW5mbywgZmFsc2UsIHRydWUsCiAJCQkJCQkJCQkJICAgZ2luQnVp bGRDYWxsYmFjaywgJmJ1aWxkc3RhdGUsIE5VTEwpOworCQlJbnZhbGlkYXRlQ2F0YWxvZ1NuYXBz aG90KCk7CiAKIAkJLyogZHVtcCByZW1haW5pbmcgZW50cmllcyB0byB0aGUgaW5kZXggKi8KIAkJ b2xkQ3R4ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKGJ1aWxkc3RhdGUudG1wQ3R4KTsKQEAgLTc3 Miw2ICs3NzksNyBAQCBnaW5idWlsZChSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwgSW5k ZXhJbmZvICppbmRleEluZm8pCiAJCQkJCQkgICBsaXN0LCBubGlzdCwgJmJ1aWxkc3RhdGUuYnVp bGRTdGF0cyk7CiAJCX0KIAkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZEN0eCk7CisJCUFzc2Vy dCghSW5kZXhCdWlsZFJlc2V0c1NuYXBzaG90cyhpbmRleEluZm8pIHx8ICFUcmFuc2FjdGlvbklk SXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIAl9CiAKIAlNZW1vcnlDb250ZXh0RGVsZXRlKGJ1aWxk c3RhdGUuZnVuY0N0eCk7CkBAIC05NDgsNiArOTU2LDcgQEAgX2dpbl9iZWdpbl9wYXJhbGxlbChH aW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwK IAlXYWxVc2FnZSAgICp3YWx1c2FnZTsKIAlCdWZmZXJVc2FnZSAqYnVmZmVydXNhZ2U7CiAJYm9v bAkJbGVhZGVycGFydGljaXBhdGVzID0gdHJ1ZTsKKwlib29sCQluZWVkX3BvcF9hY3RpdmVfc25h cHNob3QgPSB0cnVlOwogCWludAkJCXF1ZXJ5bGVuOwogCiAjaWZkZWYgRElTQUJMRV9MRUFERVJf UEFSVElDSVBBVElPTgpAQCAtOTcyLDkgKzk4MSwxNiBAQCBfZ2luX2JlZ2luX3BhcmFsbGVsKEdp bkJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAog CSAqIGxpdmUgYWNjb3JkaW5nIHRvIHRoYXQuCiAJICovCiAJaWYgKCFpc2NvbmN1cnJlbnQpCisJ eworCQlBc3NlcnQoQWN0aXZlU25hcHNob3RTZXQoKSk7CiAJCXNuYXBzaG90ID0gU25hcHNob3RB bnk7CisJCW5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCA9IGZhbHNlOworCX0KIAllbHNlCisJewog CQlzbmFwc2hvdCA9IFJlZ2lzdGVyU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsK KwkJUHVzaEFjdGl2ZVNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7CisJfQogCiAJ LyoKIAkgKiBFc3RpbWF0ZSBzaXplIGZvciBvdXIgb3duIFBBUkFMTEVMX0tFWV9HSU5fU0hBUkVE IHdvcmtzcGFjZS4KQEAgLTEwMTcsNiArMTAzMyw4IEBAIF9naW5fYmVnaW5fcGFyYWxsZWwoR2lu QnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAJ LyogSWYgbm8gRFNNIHNlZ21lbnQgd2FzIGF2YWlsYWJsZSwgYmFjayBvdXQgKGRvIHNlcmlhbCBi dWlsZCkgKi8KIAlpZiAocGN4dC0+c2VnID09IE5VTEwpCiAJeworCQlpZiAobmVlZF9wb3BfYWN0 aXZlX3NuYXBzaG90KQorCQkJUG9wQWN0aXZlU25hcHNob3QoKTsKIAkJaWYgKElzTVZDQ1NuYXBz aG90KHNuYXBzaG90KSkKIAkJCVVucmVnaXN0ZXJTbmFwc2hvdChzbmFwc2hvdCk7CiAJCURlc3Ry b3lQYXJhbGxlbENvbnRleHQocGN4dCk7CkBAIC0xMDkxLDYgKzExMDksOCBAQCBfZ2luX2JlZ2lu X3BhcmFsbGVsKEdpbkJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJlbGF0 aW9uIGluZGV4LAogCS8qIElmIG5vIHdvcmtlcnMgd2VyZSBzdWNjZXNzZnVsbHkgbGF1bmNoZWQs IGJhY2sgb3V0IChkbyBzZXJpYWwgYnVpbGQpICovCiAJaWYgKHBjeHQtPm53b3JrZXJzX2xhdW5j aGVkID09IDApCiAJeworCQlpZiAobmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90KQorCQkJUG9wQWN0 aXZlU25hcHNob3QoKTsKIAkJX2dpbl9lbmRfcGFyYWxsZWwoZ2lubGVhZGVyLCBOVUxMKTsKIAkJ cmV0dXJuOwogCX0KQEAgLTExMDcsNiArMTEyNyw4IEBAIF9naW5fYmVnaW5fcGFyYWxsZWwoR2lu QnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAJ ICogc3VyZSB0aGF0IHRoZSBmYWlsdXJlLXRvLXN0YXJ0IGNhc2Ugd2lsbCBub3QgaGFuZyBmb3Jl dmVyLgogCSAqLwogCVdhaXRGb3JQYXJhbGxlbFdvcmtlcnNUb0F0dGFjaChwY3h0KTsKKwlpZiAo bmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90KQorCQlQb3BBY3RpdmVTbmFwc2hvdCgpOwogfQogCiAv KgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdGJ1aWxkLmMgYi9zcmMv YmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0YnVpbGQuYwppbmRleCA3ZjU3Yzc4N2Y0Yy4uODZhZjFl MTEzMTcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3RidWlsZC5jCisr KyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3RidWlsZC5jCkBAIC0zOCwxMSArMzgsMTMg QEAKICNpbmNsdWRlICJhY2Nlc3MvZ2lzdF9wcml2YXRlLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3Rh YmxlYW0uaCIKICNpbmNsdWRlICJhY2Nlc3MveGxvZ2luc2VydC5oIgorI2luY2x1ZGUgImNhdGFs b2cvaW5kZXguaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJub2Rlcy9leGVj bm9kZXMuaCIKICNpbmNsdWRlICJvcHRpbWl6ZXIvb3B0aW1pemVyLmgiCiAjaW5jbHVkZSAic3Rv cmFnZS9idWZtZ3IuaCIKICNpbmNsdWRlICJzdG9yYWdlL2J1bGtfd3JpdGUuaCIKKyNpbmNsdWRl ICJzdG9yYWdlL3Byb2MuaCIKIAogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAjaW5jbHVk ZSAidXRpbHMvcmVsLmgiCkBAIC0yNTksNiArMjYxLDcgQEAgZ2lzdGJ1aWxkKFJlbGF0aW9uIGhl YXAsIFJlbGF0aW9uIGluZGV4LCBJbmRleEluZm8gKmluZGV4SW5mbykKIAlidWlsZHN0YXRlLmlu ZHR1cGxlcyA9IDA7CiAJYnVpbGRzdGF0ZS5pbmR0dXBsZXNTaXplID0gMDsKIAorCUFzc2VydCgh SW5kZXhCdWlsZFJlc2V0c1NuYXBzaG90cyhpbmRleEluZm8pIHx8ICFUcmFuc2FjdGlvbklkSXNW YWxpZChNeVByb2MtPnhtaW4pKTsKIAlpZiAoYnVpbGRzdGF0ZS5idWlsZE1vZGUgPT0gR0lTVF9T T1JURURfQlVJTEQpCiAJewogCQkvKgpAQCAtMzUwLDYgKzM1Myw4IEBAIGdpc3RidWlsZChSZWxh dGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwgSW5kZXhJbmZvICppbmRleEluZm8pCiAKIAlyZXN1 bHQtPmhlYXBfdHVwbGVzID0gcmVsdHVwbGVzOwogCXJlc3VsdC0+aW5kZXhfdHVwbGVzID0gKGRv dWJsZSkgYnVpbGRzdGF0ZS5pbmR0dXBsZXM7CisJSW52YWxpZGF0ZUNhdGFsb2dTbmFwc2hvdCgp OworCUFzc2VydCghSW5kZXhCdWlsZFJlc2V0c1NuYXBzaG90cyhpbmRleEluZm8pIHx8ICFUcmFu c2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIAogCXJldHVybiByZXN1bHQ7CiB9CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoLmMgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvaGFzaC9oYXNoLmMKaW5kZXggOGQ4Y2QzMGRjMzguLjQ0YTM3NGMwZDU3IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2hhc2gvaGFzaC5jCkBAIC0yNCwxMiArMjQsMTQgQEAKICNpbmNsdWRlICJhY2Nlc3Mvc3Ry YXRudW0uaCIKICNpbmNsdWRlICJhY2Nlc3MvdGFibGVhbS5oIgogI2luY2x1ZGUgImFjY2Vzcy94 bG9naW5zZXJ0LmgiCisjaW5jbHVkZSAiY2F0YWxvZy9pbmRleC5oIgogI2luY2x1ZGUgImNvbW1h bmRzL3Byb2dyZXNzLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvdmFjdXVtLmgiCiAjaW5jbHVkZSAi bWlzY2FkbWluLmgiCiAjaW5jbHVkZSAibm9kZXMvZXhlY25vZGVzLmgiCiAjaW5jbHVkZSAib3B0 aW1pemVyL3BsYW5jYXQuaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKKyNpbmNsdWRlICJzdG9yYWdl L3Byb2MuaCIKICNpbmNsdWRlICJzdG9yYWdlL3JlYWRfc3RyZWFtLmgiCiAjaW5jbHVkZSAidXRp bHMvZm1ncnByb3Rvcy5oIgogI2luY2x1ZGUgInV0aWxzL2luZGV4X3NlbGZ1bmNzLmgiCkBAIC0y MTAsNiArMjEyLDggQEAgaGFzaGJ1aWxkKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBJ bmRleEluZm8gKmluZGV4SW5mbykKIAogCXJlc3VsdC0+aGVhcF90dXBsZXMgPSByZWx0dXBsZXM7 CiAJcmVzdWx0LT5pbmRleF90dXBsZXMgPSBidWlsZHN0YXRlLmluZHR1cGxlczsKKwlJbnZhbGlk YXRlQ2F0YWxvZ1NuYXBzaG90KCk7CisJQXNzZXJ0KCFJbmRleEJ1aWxkUmVzZXRzU25hcHNob3Rz KGluZGV4SW5mbykgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwogCiAJ cmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hl YXBhbS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKaW5kZXggZTA2Y2UyZGIy Y2YuLjAzOTRlMDAyM2NkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFw YW0uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYwpAQCAtNTUsNiArNTUs OSBAQAogI2luY2x1ZGUgInV0aWxzL3NwY2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvc3lzY2Fj aGUuaCIKIAorLyogR1VDcyAqLworaW50CQkJY29uY3VycmVudF9pbmRleF9yZXNldF9zbmFwc2hv dF9ldmVyeV9uX3BhZ2VzID0gNDA5NjsKKwogCiBzdGF0aWMgSGVhcFR1cGxlIGhlYXBfcHJlcGFy ZV9pbnNlcnQoUmVsYXRpb24gcmVsYXRpb24sIEhlYXBUdXBsZSB0dXAsCiAJCQkJCQkJCQkgVHJh bnNhY3Rpb25JZCB4aWQsIENvbW1hbmRJZCBjaWQsIHVpbnQzMiBvcHRpb25zKTsKQEAgLTY5OCw2 ICs3MDEsMzYgQEAgaGVhcF9wcmVwYXJlX3BhZ2VzY2FuKFRhYmxlU2NhbkRlc2Mgc3NjYW4pCiAJ TG9ja0J1ZmZlcihidWZmZXIsIEJVRkZFUl9MT0NLX1VOTE9DSyk7CiB9CiAKKy8qCisgKiBSZXNl dCB0aGUgYWN0aXZlIHNuYXBzaG90IGR1cmluZyBhIHNjYW4uCisgKiBUaGlzIGVuc3VyZXMgdGhl IHhtaW4gaG9yaXpvbiBjYW4gYWR2YW5jZSB3aGlsZSBtYWludGFpbmluZyBzYWZlIHR1cGxlIHZp c2liaWxpdHkuCisgKiBOb3RlOiBObyBvdGhlciBzbmFwc2hvdCBzaG91bGQgYmUgYWN0aXZlIGR1 cmluZyB0aGlzIG9wZXJhdGlvbi4KKyAqLworc3RhdGljIGlubGluZSB2b2lkCitoZWFwX3Jlc2V0 X3NjYW5fc25hcHNob3QoVGFibGVTY2FuRGVzYyBzc2NhbikKK3sKKwkvKiBNYWtlIHN1cmUgbm8g b3RoZXIgc25hcHNob3Qgd2FzIHNldCBhcyBhY3RpdmUuICovCisJQXNzZXJ0KEdldEFjdGl2ZVNu YXBzaG90KCkgPT0gc3NjYW4tPnJzX3NuYXBzaG90KTsKKwkvKiBBbmQgbWFrZSBzdXJlIGFjdGl2 ZSBzbmFwc2hvdCBpcyBub3QgcmVnaXN0ZXJlZC4gKi8KKwlBc3NlcnQoR2V0QWN0aXZlU25hcHNo b3QoKS0+cmVnZF9jb3VudCA9PSAwKTsKKwlQb3BBY3RpdmVTbmFwc2hvdCgpOworCisJc3NjYW4t PnJzX3NuYXBzaG90ID0gSW52YWxpZFNuYXBzaG90OyAvKiBqdXN0IHRvIGJlIHRpZHkgKi8KKwlB c3NlcnQoIUhhdmVSZWdpc3RlcmVkT3JBY3RpdmVTbmFwc2hvdCgpKTsKKwlJbnZhbGlkYXRlQ2F0 YWxvZ1NuYXBzaG90KCk7CisKKwkvKiBUaGUgZ29hbCBvZiBzbmFwc2hvdCByZXNldCBpcyB0byBh bGxvdyBob3Jpem9uIHRvIGFkdmFuY2UuICovCisJQXNzZXJ0KCFUcmFuc2FjdGlvbklkSXNWYWxp ZChNeVByb2MtPnhtaW4pKTsKKyNpZiBVU0VfSU5KRUNUSU9OX1BPSU5UUworCS8qIEluIHNvbWUg Y2FzZXMgaXQgaXMgc3RpbGwgbm90IHBvc3NpYmxlIGR1ZSB4aWQgYXNzaWduLiAqLworCWlmICgh VHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54aWQpKQorCQlJTkpFQ1RJT05fUE9JTlQoImhl YXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUiLCBOVUxMKTsKKyNlbmRpZgorCisJUHVz aEFjdGl2ZVNuYXBzaG90KEdldExhdGVzdFNuYXBzaG90KCkpOworCXNzY2FuLT5yc19zbmFwc2hv dCA9IEdldEFjdGl2ZVNuYXBzaG90KCk7Cit9CisKIC8qCiAgKiBoZWFwX2ZldGNoX25leHRfYnVm ZmVyIC0gcmVhZCBhbmQgcGluIHRoZSBuZXh0IGJsb2NrIGZyb20gTUFJTl9GT1JLTlVNLgogICoK QEAgLTczOSw3ICs3NzIsMTMgQEAgaGVhcF9mZXRjaF9uZXh0X2J1ZmZlcihIZWFwU2NhbkRlc2Mg c2NhbiwgU2NhbkRpcmVjdGlvbiBkaXIpCiAKIAlzY2FuLT5yc19jYnVmID0gcmVhZF9zdHJlYW1f bmV4dF9idWZmZXIoc2Nhbi0+cnNfcmVhZF9zdHJlYW0sIE5VTEwpOwogCWlmIChCdWZmZXJJc1Zh bGlkKHNjYW4tPnJzX2NidWYpKQorCXsKIAkJc2Nhbi0+cnNfY2Jsb2NrID0gQnVmZmVyR2V0Qmxv Y2tOdW1iZXIoc2Nhbi0+cnNfY2J1Zik7CisJCWlmIChzY2FuLT5yc19iYXNlLnJzX2ZsYWdzICYg U09fUkVTRVRfU05BUFNIT1QgJiYKKwkJCWNvbmN1cnJlbnRfaW5kZXhfcmVzZXRfc25hcHNob3Rf ZXZlcnlfbl9wYWdlcyA+IDAgJiYKKwkJCXNjYW4tPnJzX2NibG9jayAlIGNvbmN1cnJlbnRfaW5k ZXhfcmVzZXRfc25hcHNob3RfZXZlcnlfbl9wYWdlcyA9PSAwKQorCQkJaGVhcF9yZXNldF9zY2Fu X3NuYXBzaG90KChUYWJsZVNjYW5EZXNjKSBzY2FuKTsKKwl9CiB9CiAKIC8qCkBAIC0xNDEwLDcg KzE0NDksMTYgQEAgaGVhcF9lbmRzY2FuKFRhYmxlU2NhbkRlc2Mgc3NjYW4pCiAKIAlpZiAoc2Nh bi0+cnNfcGFyYWxsZWx3b3JrZXJkYXRhICE9IE5VTEwpCiAJCXBmcmVlKHNjYW4tPnJzX3BhcmFs bGVsd29ya2VyZGF0YSk7Ci0KKyNpZmRlZiBVU0VfQVNTRVJUX0NIRUNLSU5HCisJaWYgKHNjYW4t PnJzX2Jhc2UucnNfZmxhZ3MgJiBTT19SRVNFVF9TTkFQU0hPVCkKKwl7CisJCUFzc2VydCghKHNj YW4tPnJzX2Jhc2UucnNfZmxhZ3MgJiBTT19URU1QX1NOQVBTSE9UKSk7CisJCS8qIE1ha2Ugc3Vy ZSBubyBvdGhlciBzbmFwc2hvdCB3YXMgc2V0IGFzIGFjdGl2ZS4gKi8KKwkJQXNzZXJ0KEdldEFj dGl2ZVNuYXBzaG90KCkgPT0gc3NjYW4tPnJzX3NuYXBzaG90KTsKKwkJLyogQW5kIG1ha2Ugc3Vy ZSBzbmFwc2hvdCBpcyBub3QgcmVnaXN0ZXJlZC4gKi8KKwkJQXNzZXJ0KEdldEFjdGl2ZVNuYXBz aG90KCktPnJlZ2RfY291bnQgPT0gMCk7CisJfQorI2VuZGlmCiAJaWYgKHNjYW4tPnJzX2Jhc2Uu cnNfZmxhZ3MgJiBTT19URU1QX1NOQVBTSE9UKQogCQlVbnJlZ2lzdGVyU25hcHNob3Qoc2Nhbi0+ cnNfYmFzZS5yc19zbmFwc2hvdCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL2hlYXBhbV9oYW5kbGVyLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFu ZGxlci5jCmluZGV4IDA3ZjA3MTg4ZDQ2Li43NTRmNWE3MjBkZiAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYworKysgYi9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCkBAIC0xMTE0LDggKzExMTQsMTcgQEAgaGVhcGFtX2lu ZGV4X2J1aWxkX3JhbmdlX3NjYW4oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCVR1cGxlVGFibGVT bG90ICpzbG90OwogCUVTdGF0ZQkgICAqZXN0YXRlOwogCUV4cHJDb250ZXh0ICplY29udGV4dDsK LQlTbmFwc2hvdAlzbmFwc2hvdDsKKwkvKgorCSAqIEluIGlzb2xhdGlvbiBtb2RlcyB3aGVyZSBJ c29sYXRpb25Vc2VzWGFjdFNuYXBzaG90KCkgaXMgdHJ1ZSwgdGhlCisJICogcmVnaXN0ZXJlZCBz Y2FuIHNuYXBzaG90IGNhbiBkaWZmZXIgZnJvbSB0aGUgYWN0aXZlIHNuYXBzaG90IGNvcHkKKwkg KiBwdXNoZWQgZm9yIGV4cHJlc3Npb24gZXZhbHVhdGlvbiwgc28gcmVtZW1iZXIgdGhlIHJlZ2lz dGVyZWQgb25lCisJICogc2VwYXJhdGVseSBmb3IgbGF0ZXIgVW5yZWdpc3RlclNuYXBzaG90KCku CisJICovCisJU25hcHNob3QJc25hcHNob3QsCisJCQkJcmVnaXN0ZXJlZF9zbmFwc2hvdCA9IElu dmFsaWRTbmFwc2hvdDsKIAlib29sCQluZWVkX3VucmVnaXN0ZXJfc25hcHNob3QgPSBmYWxzZTsK Kwlib29sCQluZWVkX3BvcF9hY3RpdmVfc25hcHNob3QgPSBmYWxzZTsKKwlib29sCQlyZXNldF9z bmFwc2hvdHMgPSBmYWxzZTsKIAlUcmFuc2FjdGlvbklkIE9sZGVzdFhtaW47CiAJQmxvY2tOdW1i ZXIgcHJldmlvdXNfYmxrbm8gPSBJbnZhbGlkQmxvY2tOdW1iZXI7CiAJQmxvY2tOdW1iZXIgcm9v dF9ibGtubyA9IEludmFsaWRCbG9ja051bWJlcjsKQEAgLTExNTAsOSArMTE1OSw2IEBAIGhlYXBh bV9pbmRleF9idWlsZF9yYW5nZV9zY2FuKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAkvKiBBcnJh bmdlIGZvciBlY29udGV4dCdzIHNjYW4gdHVwbGUgdG8gYmUgdGhlIHR1cGxlIHVuZGVyIHRlc3Qg Ki8KIAllY29udGV4dC0+ZWN4dF9zY2FudHVwbGUgPSBzbG90OwogCi0JLyogU2V0IHVwIGV4ZWN1 dGlvbiBzdGF0ZSBmb3IgcHJlZGljYXRlLCBpZiBhbnkuICovCi0JcHJlZGljYXRlID0gRXhlY1By ZXBhcmVRdWFsKGluZGV4SW5mby0+aWlfUHJlZGljYXRlLCBlc3RhdGUpOwotCiAJLyoKIAkgKiBQ cmVwYXJlIGZvciBzY2FuIG9mIHRoZSBiYXNlIHJlbGF0aW9uLiAgSW4gYSBub3JtYWwgaW5kZXgg YnVpbGQsIHdlIHVzZQogCSAqIFNuYXBzaG90QW55IGJlY2F1c2Ugd2UgbXVzdCByZXRyaWV2ZSBh bGwgdHVwbGVzIGFuZCBkbyBvdXIgb3duIHRpbWUKQEAgLTExNjIsNiArMTE2OCwxNiBAQCBoZWFw YW1faW5kZXhfYnVpbGRfcmFuZ2Vfc2NhbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJICovCiAJ T2xkZXN0WG1pbiA9IEludmFsaWRUcmFuc2FjdGlvbklkOwogCisJLyoKKwkgKiBGb3IgdW5pcXVl IGluZGV4ZXMgd2UgbmVlZCBhIGNvbnNpc3RlbnQgc25hcHNob3QgZm9yIHRoZSB3aG9sZSBzY2Fu LgorCSAqIFJlc2V0dGluZyBzbmFwc2hvdHMgYWxzbyBkb2Vzbid0IHdvcmsgaW4geGFjdC1zbmFw c2hvdCBpc29sYXRpb24gbW9kZXMsCisJICogYmVjYXVzZSB0aG9zZSBrZWVwIGEgcmVnaXN0ZXJl ZCB0cmFuc2FjdGlvbiBzbmFwc2hvdCBmb3IgdGhlIHdob2xlIHhhY3QuCisJICogSW4gdGhlIGNh c2Ugb2YgcGFyYWxsZWwgc2Nhbiwgc29tZSBhZGRpdGlvbmFsIGluZnJhc3RydWN0dXJlIGlzIHJl cXVpcmVkCisJICogdG8gcGVyZm9ybSBhIHNjYW4gd2l0aCBTT19SRVNFVF9TTkFQU0hPVCB3aGlj aCBpcyBub3QgeWV0IHJlYWR5LgorCSAqLworCXJlc2V0X3NuYXBzaG90cyA9IEluZGV4QnVpbGRS ZXNldHNTbmFwc2hvdHMoaW5kZXhJbmZvKSAmJgorCQkJCQkgICFpc19zeXN0ZW1fY2F0YWxvZzsg LyoganVzdCBmb3IgdGhlIGNhc2UgKi8KKwogCS8qIG9rYXkgdG8gaWdub3JlIGxhenkgVkFDVVVN cyBoZXJlICovCiAJaWYgKCFJc0Jvb3RzdHJhcFByb2Nlc3NpbmdNb2RlKCkgJiYgIWluZGV4SW5m by0+aWlfQ29uY3VycmVudCkKIAkJT2xkZXN0WG1pbiA9IEdldE9sZGVzdE5vblJlbW92YWJsZVRy YW5zYWN0aW9uSWQoaGVhcFJlbGF0aW9uKTsKQEAgLTExNzAsMjQgKzExODYsNDIgQEAgaGVhcGFt X2luZGV4X2J1aWxkX3JhbmdlX3NjYW4oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCXsKIAkJLyoK IAkJICogU2VyaWFsIGluZGV4IGJ1aWxkLgotCQkgKgotCQkgKiBNdXN0IGJlZ2luIG91ciBvd24g aGVhcCBzY2FuIGluIHRoaXMgY2FzZS4gIFdlIG1heSBhbHNvIG5lZWQgdG8KLQkJICogcmVnaXN0 ZXIgYSBzbmFwc2hvdCB3aG9zZSBsaWZldGltZSBpcyB1bmRlciBvdXIgZGlyZWN0IGNvbnRyb2wu CiAJCSAqLwogCQlpZiAoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE9sZGVzdFhtaW4pKQogCQl7Ci0J CQlzbmFwc2hvdCA9IFJlZ2lzdGVyU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsK LQkJCW5lZWRfdW5yZWdpc3Rlcl9zbmFwc2hvdCA9IHRydWU7CisJCQlzbmFwc2hvdCA9IEdldFRy YW5zYWN0aW9uU25hcHNob3QoKTsKKwkJCS8qCisJCQkgKiBNdXN0IGJlZ2luIG91ciBvd24gaGVh cCBzY2FuIGluIHRoaXMgY2FzZS4gIFdlIG1heSBhbHNvIG5lZWQgdG8KKwkJCSAqIHJlZ2lzdGVy IGEgc25hcHNob3Qgd2hvc2UgbGlmZXRpbWUgaXMgdW5kZXIgb3VyIGRpcmVjdCBjb250cm9sLgor CQkJICogSW4gY2FzZSBvZiByZXNldHRpbmcgb2YgYSBzbmFwc2hvdCBkdXJpbmcgdGhlIHNjYW4s IHJlZ2lzdHJhdGlvbiBpcworCQkJICogbm90IGFsbG93ZWQgYmVjYXVzZSBzbmFwc2hvdCBpcyBn b2luZyB0byBiZSBjaGFuZ2VkIGV2ZXJ5IHNvCisJCQkgKiBvZnRlbi4KKwkJCSAqLworCQkJaWYg KCFyZXNldF9zbmFwc2hvdHMpCisJCQl7CisJCQkJLyogU3RvcmUgYWN0aXZlIHNuYXBzaG90IGJl Y2F1c2UgUHVzaEFjdGl2ZVNuYXBzaG90KCkgbWF5IGNvcHkgKi8KKwkJCQlzbmFwc2hvdCA9IHJl Z2lzdGVyZWRfc25hcHNob3QgPSBSZWdpc3RlclNuYXBzaG90KHNuYXBzaG90KTsKKwkJCQluZWVk X3VucmVnaXN0ZXJfc25hcHNob3QgPSB0cnVlOworCQkJfQorCQkJQXNzZXJ0KCFBY3RpdmVTbmFw c2hvdFNldCgpKTsKKwkJCVB1c2hBY3RpdmVTbmFwc2hvdChzbmFwc2hvdCk7CisJCQkvKiB0YWJs ZV9iZWdpbnNjYW5fc3RyYXQoKSBuZWVkcyB0aGUgZXhhY3QgYWN0aXZlIHNuYXBzaG90IHBvaW50 ZXIgKi8KKwkJCXNuYXBzaG90ID0gR2V0QWN0aXZlU25hcHNob3QoKTsKKwkJCW5lZWRfcG9wX2Fj dGl2ZV9zbmFwc2hvdCA9IHRydWU7CiAJCX0KIAkJZWxzZQorCQl7CisJCQlBc3NlcnQoIWluZGV4 SW5mby0+aWlfQ29uY3VycmVudCk7CiAJCQlzbmFwc2hvdCA9IFNuYXBzaG90QW55OworCQl9CiAK IAkJc2NhbiA9IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdChoZWFwUmVsYXRpb24sCS8qIHJlbGF0aW9u ICovCiAJCQkJCQkJCQkgc25hcHNob3QsCS8qIHNuYXBzaG90ICovCiAJCQkJCQkJCQkgMCwgLyog bnVtYmVyIG9mIGtleXMgKi8KIAkJCQkJCQkJCSBOVUxMLAkvKiBzY2FuIGtleSAqLwogCQkJCQkJ CQkJIHRydWUsCS8qIGJ1ZmZlciBhY2Nlc3Mgc3RyYXRlZ3kgT0sgKi8KLQkJCQkJCQkJCSBhbGxv d19zeW5jKTsJLyogc3luY3NjYW4gT0s/ICovCisJCQkJCQkJCQkgYWxsb3dfc3luYywJLyogc3lu Y3NjYW4gT0s/ICovCisJCQkJCQkJCQkgcmVzZXRfc25hcHNob3RzIC8qIHJlc2V0IHNuYXBzaG90 cz8gKi8pOwogCX0KIAllbHNlCiAJewpAQCAtMTIwMSw2ICsxMjM1LDEyIEBAIGhlYXBhbV9pbmRl eF9idWlsZF9yYW5nZV9zY2FuKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAkJQXNzZXJ0KCFJc0Jv b3RzdHJhcFByb2Nlc3NpbmdNb2RlKCkpOwogCQlBc3NlcnQoYWxsb3dfc3luYyk7CiAJCXNuYXBz aG90ID0gc2Nhbi0+cnNfc25hcHNob3Q7CisJCWlmIChJc01WQ0NTbmFwc2hvdChzbmFwc2hvdCkp CisJCXsKKwkJCS8qIERvbid0IGV4cG9zZSBTbmFwc2hvdEFueSB0byBTUUwgcnVuIGJ5IHByZWRp Y2F0ZXMvZXhwcmVzc2lvbnMuICovCisJCQlQdXNoQWN0aXZlU25hcHNob3Qoc25hcHNob3QpOwor CQkJbmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90ID0gdHJ1ZTsKKwkJfQogCX0KIAogCWhzY2FuID0g KEhlYXBTY2FuRGVzYykgc2NhbjsKQEAgLTEyMTUsNiArMTI1NSwxMyBAQCBoZWFwYW1faW5kZXhf YnVpbGRfcmFuZ2Vfc2NhbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJQXNzZXJ0KHNuYXBzaG90 ID09IFNuYXBzaG90QW55ID8gVHJhbnNhY3Rpb25JZElzVmFsaWQoT2xkZXN0WG1pbikgOgogCQkg ICAhVHJhbnNhY3Rpb25JZElzVmFsaWQoT2xkZXN0WG1pbikpOwogCUFzc2VydChzbmFwc2hvdCA9 PSBTbmFwc2hvdEFueSB8fCAhYW55dmlzaWJsZSk7CisJQXNzZXJ0KHNuYXBzaG90ID09IFNuYXBz aG90QW55IHx8IEFjdGl2ZVNuYXBzaG90U2V0KCkpOworCisJLyogU2V0IHVwIGV4ZWN1dGlvbiBz dGF0ZSBmb3IgcHJlZGljYXRlLCBpZiBhbnkuICovCisJcHJlZGljYXRlID0gRXhlY1ByZXBhcmVR dWFsKGluZGV4SW5mby0+aWlfUHJlZGljYXRlLCBlc3RhdGUpOworCS8qIENsZWFyIHJlZmVyZW5j ZSB0byBzbmFwc2hvdCBzaW5jZSBpdCBtYXkgYmUgY2hhbmdlZCBieSB0aGUgc2NhbiBpdHNlbGYu ICovCisJaWYgKHJlc2V0X3NuYXBzaG90cykKKwkJc25hcHNob3QgPSBJbnZhbGlkU25hcHNob3Q7 CiAKIAkvKiBQdWJsaXNoIG51bWJlciBvZiBibG9ja3MgdG8gc2NhbiAqLwogCWlmIChwcm9ncmVz cykKQEAgLTE2NTAsOSArMTY5NywxMSBAQCBoZWFwYW1faW5kZXhfYnVpbGRfcmFuZ2Vfc2NhbihS ZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAKIAl0YWJsZV9lbmRzY2FuKHNjYW4pOwogCisJaWYgKG5l ZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCkKKwkJUG9wQWN0aXZlU25hcHNob3QoKTsKIAkvKiB3ZSBj YW4gbm93IGZvcmdldCBvdXIgc25hcHNob3QsIGlmIHNldCBhbmQgcmVnaXN0ZXJlZCBieSB1cyAq LwogCWlmIChuZWVkX3VucmVnaXN0ZXJfc25hcHNob3QpCi0JCVVucmVnaXN0ZXJTbmFwc2hvdChz bmFwc2hvdCk7CisJCVVucmVnaXN0ZXJTbmFwc2hvdChyZWdpc3RlcmVkX3NuYXBzaG90KTsKIAog CUV4ZWNEcm9wU2luZ2xlVHVwbGVUYWJsZVNsb3Qoc2xvdCk7CiAKQEAgLTE3MjIsNyArMTc3MSw4 IEBAIGhlYXBhbV9pbmRleF92YWxpZGF0ZV9zY2FuKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAkJ CQkJCQkJIDAsIC8qIG51bWJlciBvZiBrZXlzICovCiAJCQkJCQkJCSBOVUxMLAkvKiBzY2FuIGtl eSAqLwogCQkJCQkJCQkgdHJ1ZSwJLyogYnVmZmVyIGFjY2VzcyBzdHJhdGVneSBPSyAqLwotCQkJ CQkJCQkgZmFsc2UpOwkvKiBzeW5jc2NhbiBub3QgT0sgKi8KKwkJCQkJCQkJIGZhbHNlLAkvKiBz eW5jc2NhbiBub3QgT0sgKi8KKwkJCQkJCQkJIGZhbHNlKTsKIAloc2NhbiA9IChIZWFwU2NhbkRl c2MpIHNjYW47CiAKIAlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX1NDQU5f QkxPQ0tTX1RPVEFMLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4L2dlbmFt LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaW5kZXgvZ2VuYW0uYwppbmRleCAxNDA4OTg5YzU2OC4u ZWVmMTI3NDEyNDkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9nZW5hbS5j CisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9nZW5hbS5jCkBAIC00NzMsNyArNDczLDcg QEAgc3lzdGFibGVfYmVnaW5zY2FuKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAkJICovCiAJCXN5 c3NjYW4tPnNjYW4gPSB0YWJsZV9iZWdpbnNjYW5fc3RyYXQoaGVhcFJlbGF0aW9uLCBzbmFwc2hv dCwKIAkJCQkJCQkJCQkJICBua2V5cywga2V5LAotCQkJCQkJCQkJCQkgIHRydWUsIGZhbHNlKTsK KwkJCQkJCQkJCQkJICB0cnVlLCBmYWxzZSwgZmFsc2UpOwogCQlzeXNzY2FuLT5pc2NhbiA9IE5V TEw7CiAJfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQu YyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jCmluZGV4IDc1NmRmYTNkY2Y0 Li44ZDgwNGQ2YmNmZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRz b3J0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMKQEAgLTI2Miw3 ICsyNjIsNyBAQCBzdGF0aWMgZG91YmxlIF9idF9zcG9vbHNfaGVhcHNjYW4oUmVsYXRpb24gaGVh cCwgUmVsYXRpb24gaW5kZXgsCiBzdGF0aWMgdm9pZCBfYnRfc3Bvb2xkZXN0cm95KEJUU3Bvb2wg KmJ0c3Bvb2wpOwogc3RhdGljIHZvaWQgX2J0X3Nwb29sKEJUU3Bvb2wgKmJ0c3Bvb2wsIGNvbnN0 IEl0ZW1Qb2ludGVyRGF0YSAqc2VsZiwKIAkJCQkJICBjb25zdCBEYXR1bSAqdmFsdWVzLCBjb25z dCBib29sICppc251bGwpOwotc3RhdGljIHZvaWQgX2J0X2xlYWZidWlsZChCVFNwb29sICpidHNw b29sLCBCVFNwb29sICpidHNwb29sMik7CitzdGF0aWMgdm9pZCBfYnRfbGVhZmJ1aWxkKEJUU3Bv b2wgKmJ0c3Bvb2wsIEJUU3Bvb2wgKmJ0c3Bvb2wyLCBib29sIHJlc2V0X3NuYXBzaG90cyk7CiBz dGF0aWMgdm9pZCBfYnRfYnVpbGRfY2FsbGJhY2soUmVsYXRpb24gaW5kZXgsIEl0ZW1Qb2ludGVy IHRpZCwgRGF0dW0gKnZhbHVlcywKIAkJCQkJCQkgICBib29sICppc251bGwsIGJvb2wgdHVwbGVJ c0FsaXZlLCB2b2lkICpzdGF0ZSk7CiBzdGF0aWMgQnVsa1dyaXRlQnVmZmVyIF9idF9ibG5ld3Bh Z2UoQlRXcml0ZVN0YXRlICp3c3RhdGUsIHVpbnQzMiBsZXZlbCk7CkBAIC0zMjUsMTggKzMyNSwy MCBAQCBidGJ1aWxkKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBJbmRleEluZm8gKmlu ZGV4SW5mbykKIAkJCSBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShpbmRleCkpOwogCiAJcmVsdHVw bGVzID0gX2J0X3Nwb29sc19oZWFwc2NhbihoZWFwLCBpbmRleCwgJmJ1aWxkc3RhdGUsIGluZGV4 SW5mbyk7CisJQXNzZXJ0KCFJbmRleEJ1aWxkUmVzZXRzU25hcHNob3RzKGluZGV4SW5mbykgfHwg IVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwogCiAJLyoKIAkgKiBGaW5pc2gg dGhlIGJ1aWxkIGJ5ICgxKSBjb21wbGV0aW5nIHRoZSBzb3J0IG9mIHRoZSBzcG9vbCBmaWxlLCAo MikKIAkgKiBpbnNlcnRpbmcgdGhlIHNvcnRlZCB0dXBsZXMgaW50byBidHJlZSBwYWdlcyBhbmQg KDMpIGJ1aWxkaW5nIHRoZSB1cHBlcgogCSAqIGxldmVscy4gIEZpbmFsbHksIGl0IG1heSBhbHNv IGJlIG5lY2Vzc2FyeSB0byBlbmQgdXNlIG9mIHBhcmFsbGVsaXNtLgogCSAqLwotCV9idF9sZWFm YnVpbGQoYnVpbGRzdGF0ZS5zcG9vbCwgYnVpbGRzdGF0ZS5zcG9vbDIpOworCV9idF9sZWFmYnVp bGQoYnVpbGRzdGF0ZS5zcG9vbCwgYnVpbGRzdGF0ZS5zcG9vbDIsIEluZGV4QnVpbGRSZXNldHNT bmFwc2hvdHMoaW5kZXhJbmZvKSk7CiAJX2J0X3Nwb29sZGVzdHJveShidWlsZHN0YXRlLnNwb29s KTsKIAlpZiAoYnVpbGRzdGF0ZS5zcG9vbDIpCiAJCV9idF9zcG9vbGRlc3Ryb3koYnVpbGRzdGF0 ZS5zcG9vbDIpOwogCWlmIChidWlsZHN0YXRlLmJ0bGVhZGVyKQogCQlfYnRfZW5kX3BhcmFsbGVs KGJ1aWxkc3RhdGUuYnRsZWFkZXIpOworCUFzc2VydCghSW5kZXhCdWlsZFJlc2V0c1NuYXBzaG90 cyhpbmRleEluZm8pIHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIAog CXJlc3VsdCA9IHBhbGxvY19vYmplY3QoSW5kZXhCdWlsZFJlc3VsdCk7CiAKQEAgLTQ4NCw2ICs0 ODYsOCBAQCBfYnRfc3Bvb2xzX2hlYXBzY2FuKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4 LCBCVEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsCiAJZWxzZQogCQlyZWx0dXBsZXMgPSBfYnRfcGFy YWxsZWxfaGVhcHNjYW4oYnVpbGRzdGF0ZSwKIAkJCQkJCQkJCQkgICZpbmRleEluZm8tPmlpX0Jy b2tlbkhvdENoYWluKTsKKwlJbnZhbGlkYXRlQ2F0YWxvZ1NuYXBzaG90KCk7CisJQXNzZXJ0KCFJ bmRleEJ1aWxkUmVzZXRzU25hcHNob3RzKGluZGV4SW5mbykgfHwgIVRyYW5zYWN0aW9uSWRJc1Zh bGlkKE15UHJvYy0+eG1pbikpOwogCiAJLyoKIAkgKiBTZXQgdGhlIHByb2dyZXNzIHRhcmdldCBm b3IgdGhlIG5leHQgcGhhc2UuICBSZXNldCB0aGUgYmxvY2sgbnVtYmVyCkBAIC01MzksNyArNTQz LDcgQEAgX2J0X3Nwb29sKEJUU3Bvb2wgKmJ0c3Bvb2wsIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAq c2VsZiwgY29uc3QgRGF0dW0gKnZhbHVlcywgY28KICAqIGNyZWF0ZSBhbiBlbnRpcmUgYnRyZWUu CiAgKi8KIHN0YXRpYyB2b2lkCi1fYnRfbGVhZmJ1aWxkKEJUU3Bvb2wgKmJ0c3Bvb2wsIEJUU3Bv b2wgKmJ0c3Bvb2wyKQorX2J0X2xlYWZidWlsZChCVFNwb29sICpidHNwb29sLCBCVFNwb29sICpi dHNwb29sMiwgYm9vbCByZXNldF9zbmFwc2hvdHMpCiB7CiAJQlRXcml0ZVN0YXRlIHdzdGF0ZTsK IApAQCAtNTYxLDE4ICs1NjUsMjEgQEAgX2J0X2xlYWZidWlsZChCVFNwb29sICpidHNwb29sLCBC VFNwb29sICpidHNwb29sMikKIAkJCQkJCQkJCSBQUk9HUkVTU19CVFJFRV9QSEFTRV9QRVJGT1JN U09SVF8yKTsKIAkJdHVwbGVzb3J0X3BlcmZvcm1zb3J0KGJ0c3Bvb2wyLT5zb3J0c3RhdGUpOwog CX0KKwlBc3NlcnQoIXJlc2V0X3NuYXBzaG90cyB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQ cm9jLT54bWluKSk7CiAKIAl3c3RhdGUuaGVhcCA9IGJ0c3Bvb2wtPmhlYXA7CiAJd3N0YXRlLmlu ZGV4ID0gYnRzcG9vbC0+aW5kZXg7CiAJd3N0YXRlLmluc2tleSA9IF9idF9ta3NjYW5rZXkod3N0 YXRlLmluZGV4LCBOVUxMKTsKIAkvKiBfYnRfbWtzY2Fua2V5KCkgd29uJ3Qgc2V0IGFsbGVxdWFs aW1hZ2Ugd2l0aG91dCBtZXRhcGFnZSAqLwogCXdzdGF0ZS5pbnNrZXktPmFsbGVxdWFsaW1hZ2Ug PSBfYnRfYWxsZXF1YWxpbWFnZSh3c3RhdGUuaW5kZXgsIHRydWUpOworCUludmFsaWRhdGVDYXRh bG9nU25hcHNob3QoKTsKIAogCS8qIHJlc2VydmUgdGhlIG1ldGFwYWdlICovCiAJd3N0YXRlLmJ0 d3NfcGFnZXNfYWxsb2NlZCA9IEJUUkVFX01FVEFQQUdFICsgMTsKIAogCXBnc3RhdF9wcm9ncmVz c191cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ1JFQVRFSURYX1NVQlBIQVNFLAogCQkJCQkJCQkgUFJP R1JFU1NfQlRSRUVfUEhBU0VfTEVBRl9MT0FEKTsKKwlBc3NlcnQoIXJlc2V0X3NuYXBzaG90cyB8 fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CiAJX2J0X2xvYWQoJndzdGF0 ZSwgYnRzcG9vbCwgYnRzcG9vbDIpOwogfQogCkBAIC0xNDExLDYgKzE0MTgsNyBAQCBfYnRfYmVn aW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLCBib29sIGlzY29uY3VycmVudCwg aW50IHJlcXVlc3QpCiAJV2FsVXNhZ2UgICAqd2FsdXNhZ2U7CiAJQnVmZmVyVXNhZ2UgKmJ1ZmZl cnVzYWdlOwogCWJvb2wJCWxlYWRlcnBhcnRpY2lwYXRlcyA9IHRydWU7CisJYm9vbAkJbmVlZF9w b3BfYWN0aXZlX3NuYXBzaG90ID0gdHJ1ZTsKIAlpbnQJCQlxdWVyeWxlbjsKIAogI2lmZGVmIERJ U0FCTEVfTEVBREVSX1BBUlRJQ0lQQVRJT04KQEAgLTE0MzYsOSArMTQ0NCwxNiBAQCBfYnRfYmVn aW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLCBib29sIGlzY29uY3VycmVudCwg aW50IHJlcXVlc3QpCiAJICogbGl2ZSBhY2NvcmRpbmcgdG8gdGhhdC4KIAkgKi8KIAlpZiAoIWlz Y29uY3VycmVudCkKKwl7CisJCUFzc2VydChBY3RpdmVTbmFwc2hvdFNldCgpKTsKIAkJc25hcHNo b3QgPSBTbmFwc2hvdEFueTsKKwkJbmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90ID0gZmFsc2U7CisJ fQogCWVsc2UKKwl7CiAJCXNuYXBzaG90ID0gUmVnaXN0ZXJTbmFwc2hvdChHZXRUcmFuc2FjdGlv blNuYXBzaG90KCkpOworCQlQdXNoQWN0aXZlU25hcHNob3Qoc25hcHNob3QpOworCX0KIAogCS8q CiAJICogRXN0aW1hdGUgc2l6ZSBmb3Igb3VyIG93biBQQVJBTExFTF9LRVlfQlRSRUVfU0hBUkVE IHdvcmtzcGFjZSwgYW5kCkBAIC0xNDkyLDYgKzE1MDcsOCBAQCBfYnRfYmVnaW5fcGFyYWxsZWwo QlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLCBib29sIGlzY29uY3VycmVudCwgaW50IHJlcXVlc3Qp CiAJLyogSWYgbm8gRFNNIHNlZ21lbnQgd2FzIGF2YWlsYWJsZSwgYmFjayBvdXQgKGRvIHNlcmlh bCBidWlsZCkgKi8KIAlpZiAocGN4dC0+c2VnID09IE5VTEwpCiAJeworCQlpZiAobmVlZF9wb3Bf YWN0aXZlX3NuYXBzaG90KQorCQkJUG9wQWN0aXZlU25hcHNob3QoKTsKIAkJaWYgKElzTVZDQ1Nu YXBzaG90KHNuYXBzaG90KSkKIAkJCVVucmVnaXN0ZXJTbmFwc2hvdChzbmFwc2hvdCk7CiAJCURl c3Ryb3lQYXJhbGxlbENvbnRleHQocGN4dCk7CkBAIC0xNTg2LDYgKzE2MDMsOCBAQCBfYnRfYmVn aW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLCBib29sIGlzY29uY3VycmVudCwg aW50IHJlcXVlc3QpCiAJLyogSWYgbm8gd29ya2VycyB3ZXJlIHN1Y2Nlc3NmdWxseSBsYXVuY2hl ZCwgYmFjayBvdXQgKGRvIHNlcmlhbCBidWlsZCkgKi8KIAlpZiAocGN4dC0+bndvcmtlcnNfbGF1 bmNoZWQgPT0gMCkKIAl7CisJCWlmIChuZWVkX3BvcF9hY3RpdmVfc25hcHNob3QpCisJCQlQb3BB Y3RpdmVTbmFwc2hvdCgpOwogCQlfYnRfZW5kX3BhcmFsbGVsKGJ0bGVhZGVyKTsKIAkJcmV0dXJu OwogCX0KQEAgLTE2MDIsNiArMTYyMSw4IEBAIF9idF9iZWdpbl9wYXJhbGxlbChCVEJ1aWxkU3Rh dGUgKmJ1aWxkc3RhdGUsIGJvb2wgaXNjb25jdXJyZW50LCBpbnQgcmVxdWVzdCkKIAkgKiBzdXJl IHRoYXQgdGhlIGZhaWx1cmUtdG8tc3RhcnQgY2FzZSB3aWxsIG5vdCBoYW5nIGZvcmV2ZXIuCiAJ ICovCiAJV2FpdEZvclBhcmFsbGVsV29ya2Vyc1RvQXR0YWNoKHBjeHQpOworCWlmIChuZWVkX3Bv cF9hY3RpdmVfc25hcHNob3QpCisJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CiB9CiAKIC8qCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ2luc2VydC5jIGIvc3JjL2JhY2tl bmQvYWNjZXNzL3NwZ2lzdC9zcGdpbnNlcnQuYwppbmRleCA3ODBlZjY0NmE1NC4uZmY0NTdlM2Ji ZmEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BnaW5zZXJ0LmMKKysr IGIvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGdpbnNlcnQuYwpAQCAtMjAsMTAgKzIwLDEy IEBACiAjaW5jbHVkZSAiYWNjZXNzL3NwZ2lzdF9wcml2YXRlLmgiCiAjaW5jbHVkZSAiYWNjZXNz L3RhYmxlYW0uaCIKICNpbmNsdWRlICJhY2Nlc3MveGxvZ2luc2VydC5oIgorI2luY2x1ZGUgImNh dGFsb2cvaW5kZXguaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJub2Rlcy9l eGVjbm9kZXMuaCIKICNpbmNsdWRlICJzdG9yYWdlL2J1Zm1nci5oIgogI2luY2x1ZGUgInN0b3Jh Z2UvYnVsa193cml0ZS5oIgorI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgogI2luY2x1ZGUgInV0 aWxzL21lbXV0aWxzLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVsLmgiCiAKQEAgLTE0Myw2ICsxNDUs OCBAQCBzcGdidWlsZChSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwgSW5kZXhJbmZvICpp bmRleEluZm8pCiAJcmVzdWx0ID0gcGFsbG9jMF9vYmplY3QoSW5kZXhCdWlsZFJlc3VsdCk7CiAJ cmVzdWx0LT5oZWFwX3R1cGxlcyA9IHJlbHR1cGxlczsKIAlyZXN1bHQtPmluZGV4X3R1cGxlcyA9 IGJ1aWxkc3RhdGUuaW5kdHVwbGVzOworCUludmFsaWRhdGVDYXRhbG9nU25hcHNob3QoKTsKKwlB c3NlcnQoIUluZGV4QnVpbGRSZXNldHNTbmFwc2hvdHMoaW5kZXhJbmZvKSB8fCAhVHJhbnNhY3Rp b25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CiAKIAlyZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9p bmRleC5jCmluZGV4IDk0MDdjMzU3ZjI3Li5jZTAxN2U4MzZiZSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvY2F0YWxvZy9pbmRleC5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYwpA QCAtODEsNiArODEsNyBAQAogI2luY2x1ZGUgInV0aWxzL3NuYXBtZ3IuaCIKICNpbmNsdWRlICJ1 dGlscy9zeXNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL3R1cGxlc29ydC5oIgorI2luY2x1ZGUg InN0b3JhZ2UvcHJvYy5oIgogCiAvKiBQb3RlbnRpYWxseSBzZXQgYnkgcGdfdXBncmFkZV9zdXBw b3J0IGZ1bmN0aW9ucyAqLwogT2lkCQkJYmluYXJ5X3VwZ3JhZGVfbmV4dF9pbmRleF9wZ19jbGFz c19vaWQgPSBJbnZhbGlkT2lkOwpAQCAtMTUxMCw4ICsxNTExLDggQEAgaW5kZXhfY29uY3VycmVu dGx5X2J1aWxkKE9pZCBoZWFwUmVsYXRpb25JZCwKIAlSZWxhdGlvbglpbmRleFJlbGF0aW9uOwog CUluZGV4SW5mbyAgKmluZGV4SW5mbzsKIAotCS8qIFRoaXMgaGFkIGJldHRlciBtYWtlIHN1cmUg dGhhdCBhIHNuYXBzaG90IGlzIGFjdGl2ZSAqLwotCUFzc2VydChBY3RpdmVTbmFwc2hvdFNldCgp KTsKKwlBc3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOworCUFzc2Vy dCghVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54aWQpKTsKIAogCS8qIE9wZW4gYW5kIGxv Y2sgdGhlIHBhcmVudCBoZWFwIHJlbGF0aW9uICovCiAJaGVhcFJlbCA9IHRhYmxlX29wZW4oaGVh cFJlbGF0aW9uSWQsIFNoYXJlVXBkYXRlRXhjbHVzaXZlTG9jayk7CkBAIC0xNTI5LDE5ICsxNTMw LDI4IEBAIGluZGV4X2NvbmN1cnJlbnRseV9idWlsZChPaWQgaGVhcFJlbGF0aW9uSWQsCiAKIAlp bmRleFJlbGF0aW9uID0gaW5kZXhfb3BlbihpbmRleFJlbGF0aW9uSWQsIFJvd0V4Y2x1c2l2ZUxv Y2spOwogCisJLyogQnVpbGRJbmRleEluZm8gbWF5IHJlcXVpcmUgYXMgc25hcHNob3QgZm9yIGV4 cHJlc3Npb25zIGFuZCBwcmVkaWNhdGVzICovCisJUHVzaEFjdGl2ZVNuYXBzaG90KEdldFRyYW5z YWN0aW9uU25hcHNob3QoKSk7CiAJLyoKIAkgKiBXZSBoYXZlIHRvIHJlLWJ1aWxkIHRoZSBJbmRl eEluZm8gc3RydWN0LCBzaW5jZSBpdCB3YXMgbG9zdCBpbiB0aGUKIAkgKiBjb21taXQgb2YgdGhl IHRyYW5zYWN0aW9uIHdoZXJlIHRoaXMgY29uY3VycmVudCBpbmRleCB3YXMgY3JlYXRlZCBhdAog CSAqIHRoZSBjYXRhbG9nIGxldmVsLgogCSAqLwogCWluZGV4SW5mbyA9IEJ1aWxkSW5kZXhJbmZv KGluZGV4UmVsYXRpb24pOworCS8qIERvbmUgd2l0aCBzbmFwc2hvdCAqLworCVBvcEFjdGl2ZVNu YXBzaG90KCk7CiAJQXNzZXJ0KCFpbmRleEluZm8tPmlpX1JlYWR5Rm9ySW5zZXJ0cyk7CiAJaW5k ZXhJbmZvLT5paV9Db25jdXJyZW50ID0gdHJ1ZTsKIAlpbmRleEluZm8tPmlpX0Jyb2tlbkhvdENo YWluID0gZmFsc2U7CisJSW52YWxpZGF0ZUNhdGFsb2dTbmFwc2hvdCgpOworCUFzc2VydCghSW5k ZXhCdWlsZFJlc2V0c1NuYXBzaG90cyhpbmRleEluZm8pIHx8ICFUcmFuc2FjdGlvbklkSXNWYWxp ZChNeVByb2MtPnhtaW4pKTsKIAogCS8qIE5vdyBidWlsZCB0aGUgaW5kZXggKi8KIAlpbmRleF9i dWlsZChoZWFwUmVsLCBpbmRleFJlbGF0aW9uLCBpbmRleEluZm8sIGZhbHNlLCB0cnVlLCB0cnVl KTsKIAorCUludmFsaWRhdGVDYXRhbG9nU25hcHNob3QoKTsKKwlBc3NlcnQoIUluZGV4QnVpbGRS ZXNldHNTbmFwc2hvdHMoaW5kZXhJbmZvKSB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9j LT54bWluKSk7CisKIAkvKiBSb2xsIGJhY2sgYW55IEdVQyBjaGFuZ2VzIGV4ZWN1dGVkIGJ5IGlu ZGV4IGZ1bmN0aW9ucyAqLwogCUF0RU9YYWN0X0dVQyhmYWxzZSwgc2F2ZV9uZXN0bGV2ZWwpOwog CkBAIC0xNTUyLDEyICsxNTYyLDE5IEBAIGluZGV4X2NvbmN1cnJlbnRseV9idWlsZChPaWQgaGVh cFJlbGF0aW9uSWQsCiAJdGFibGVfY2xvc2UoaGVhcFJlbCwgTm9Mb2NrKTsKIAlpbmRleF9jbG9z ZShpbmRleFJlbGF0aW9uLCBOb0xvY2spOwogCisJLyoKKwkgKiBVcGRhdGluZyBwZ19pbmRleCBt aWdodCBpbnZvbHZlIFRPQVNUIHRhYmxlIGFjY2Vzcywgc28gZW5zdXJlIHdlCisJICogaGF2ZSBh IHZhbGlkIHNuYXBzaG90LgorCSAqLworCVB1c2hBY3RpdmVTbmFwc2hvdChHZXRUcmFuc2FjdGlv blNuYXBzaG90KCkpOwogCS8qCiAJICogVXBkYXRlIHRoZSBwZ19pbmRleCByb3cgdG8gbWFyayB0 aGUgaW5kZXggYXMgcmVhZHkgZm9yIGluc2VydHMuIE9uY2Ugd2UKIAkgKiBjb21taXQgdGhpcyB0 cmFuc2FjdGlvbiwgYW55IG5ldyB0cmFuc2FjdGlvbnMgdGhhdCBvcGVuIHRoZSB0YWJsZSBtdXN0 CiAJICogaW5zZXJ0IG5ldyBlbnRyaWVzIGludG8gdGhlIGluZGV4IGZvciBpbnNlcnRpb25zIGFu ZCBub24tSE9UIHVwZGF0ZXMuCiAJICovCiAJaW5kZXhfc2V0X3N0YXRlX2ZsYWdzKGluZGV4UmVs YXRpb25JZCwgSU5ERVhfQ1JFQVRFX1NFVF9SRUFEWSk7CisJLyogd2UgY2FuIGRvIGF3YXkgd2l0 aCBvdXIgc25hcHNob3QgKi8KKwlQb3BBY3RpdmVTbmFwc2hvdCgpOwogfQogCiAvKgpAQCAtMzI1 Nyw3ICszMjc0LDggQEAgSW5kZXhDaGVja0V4Y2x1c2lvbihSZWxhdGlvbiBoZWFwUmVsYXRpb24s CiAJCQkJCQkJCSAwLCAvKiBudW1iZXIgb2Yga2V5cyAqLwogCQkJCQkJCQkgTlVMTCwJLyogc2Nh biBrZXkgKi8KIAkJCQkJCQkJIHRydWUsCS8qIGJ1ZmZlciBhY2Nlc3Mgc3RyYXRlZ3kgT0sgKi8K LQkJCQkJCQkJIHRydWUpOyAvKiBzeW5jc2NhbiBPSyAqLworCQkJCQkJCQkgdHJ1ZSwgLyogc3lu Y3NjYW4gT0sgKi8KKwkJCQkJCQkJIGZhbHNlKTsKIAogCXdoaWxlICh0YWJsZV9zY2FuX2dldG5l eHRzbG90KHNjYW4sIEZvcndhcmRTY2FuRGlyZWN0aW9uLCBzbG90KSkKIAl7CkBAIC0zMzIwLDEy ICszMzM4LDE2IEBAIEluZGV4Q2hlY2tFeGNsdXNpb24oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAog ICogYXMgb2YgdGhlIHN0YXJ0IG9mIHRoZSBzY2FuIChzZWUgdGFibGVfaW5kZXhfYnVpbGRfc2Nh biksIHdoZXJlYXMgYSBub3JtYWwKICAqIGJ1aWxkIHRha2VzIGNhcmUgdG8gaW5jbHVkZSByZWNl bnRseS1kZWFkIHR1cGxlcy4gIFRoaXMgaXMgT0sgYmVjYXVzZQogICogd2Ugd29uJ3QgbWFyayB0 aGUgaW5kZXggdmFsaWQgdW50aWwgYWxsIHRyYW5zYWN0aW9ucyB0aGF0IG1pZ2h0IGJlIGFibGUK LSAqIHRvIHNlZSB0aG9zZSB0dXBsZXMgYXJlIGdvbmUuICBUaGUgcmVhc29uIGZvciBkb2luZyB0 aGF0IGlzIHRvIGF2b2lkCisgKiB0byBzZWUgdGhvc2UgdHVwbGVzIGFyZSBnb25lLiAgT25lIG9m IHJlYXNvbnMgZm9yIGRvaW5nIHRoYXQgaXMgdG8gYXZvaWQKICAqIGJvZ3VzIHVuaXF1ZS1pbmRl eCBmYWlsdXJlcyBkdWUgdG8gY29uY3VycmVudCBVUERBVEVzICh3ZSBtaWdodCBzZWUKICAqIGRp ZmZlcmVudCB2ZXJzaW9ucyBvZiB0aGUgc2FtZSByb3cgYXMgYmVpbmcgdmFsaWQgd2hlbiB3ZSBw YXNzIG92ZXIgdGhlbSwKICAqIGlmIHdlIHVzZWQgSGVhcFR1cGxlU2F0aXNmaWVzVmFjdXVtKS4g IFRoaXMgbGVhdmVzIHVzIHdpdGggYW4gaW5kZXggdGhhdAogICogZG9lcyBub3QgY29udGFpbiBh bnkgdHVwbGVzIGFkZGVkIHRvIHRoZSB0YWJsZSB3aGlsZSB3ZSBidWlsdCB0aGUgaW5kZXguCiAg KgorICogRnVydGhlcm1vcmUsIGluIGNhc2Ugb2Ygbm9uLXVuaXF1ZSBpbmRleCB3ZSBzZXQgU09f UkVTRVRfU05BUFNIT1QgZm9yIHRoZQorICogc2Nhbiwgd2hpY2ggY2F1c2VzIG5ldyBzbmFwc2hv dCB0byBiZSBzZXQgYXMgYWN0aXZlIGV2ZXJ5IHNvIG9mdGVuLiBUaGUgcmVhc29uCisgKiBmb3Ig dGhhdCBpcyB0byBwcm9wYWdhdGUgdGhlIHhtaW4gaG9yaXpvbiBmb3J3YXJkLgorICoKICAqIE5l eHQsIHdlIG1hcmsgdGhlIGluZGV4ICJpbmRpc3JlYWR5IiAoYnV0IHN0aWxsIG5vdCAiaW5kaXN2 YWxpZCIpIGFuZAogICogY29tbWl0IHRoZSBzZWNvbmQgdHJhbnNhY3Rpb24gYW5kIHN0YXJ0IGEg dGhpcmQuICBBZ2FpbiB3ZSB3YWl0IGZvciBhbGwKICAqIHRyYW5zYWN0aW9ucyB0aGF0IGNvdWxk IGhhdmUgYmVlbiBtb2RpZnlpbmcgdGhlIHRhYmxlIHRvIHRlcm1pbmF0ZS4gIE5vdwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21t YW5kcy9pbmRleGNtZHMuYwppbmRleCA5YWI3NGM4ZGYwYS4uYmUzZGM1ZThkMjggMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL2luZGV4Y21kcy5jCkBAIC0xNzA0LDIzICsxNzA0LDE3IEBAIERlZmluZUluZGV4KFBh cnNlU3RhdGUgKnBzdGF0ZSwKIAkgKiBjaGFpbnMgY2FuIGJlIGNyZWF0ZWQgd2hlcmUgdGhlIG5l dyB0dXBsZSBhbmQgdGhlIG9sZCB0dXBsZSBpbiB0aGUKIAkgKiBjaGFpbiBoYXZlIGRpZmZlcmVu dCBpbmRleCBrZXlzLgogCSAqCi0JICogV2Ugbm93IHRha2UgYSBuZXcgc25hcHNob3QsIGFuZCBi dWlsZCB0aGUgaW5kZXggdXNpbmcgYWxsIHR1cGxlcyB0aGF0Ci0JICogYXJlIHZpc2libGUgaW4g dGhpcyBzbmFwc2hvdC4gIFdlIGNhbiBiZSBzdXJlIHRoYXQgYW55IEhPVCB1cGRhdGVzIHRvCisJ ICogV2UgYnVpbGQgdGhlIGluZGV4IHVzaW5nIGFsbCB0dXBsZXMgdGhhdCBhcmUgdmlzaWJsZSB1 c2luZyBzaW5nbGUgb3IKKwkgKiBtdWx0aXBsZSByZWZyZXNoaW5nIHNuYXBzaG90cy4gV2UgY2Fu IGJlIHN1cmUgdGhhdCBhbnkgSE9UIHVwZGF0ZXMgdG8KIAkgKiB0aGVzZSB0dXBsZXMgd2lsbCBi ZSBjb21wYXRpYmxlIHdpdGggdGhlIGluZGV4LCBzaW5jZSBhbnkgdXBkYXRlcyBtYWRlCiAJICog YnkgdHJhbnNhY3Rpb25zIHRoYXQgZGlkbid0IGtub3cgYWJvdXQgdGhlIGluZGV4IGFyZSBub3cg Y29tbWl0dGVkIG9yCiAJICogcm9sbGVkIGJhY2suICBUaHVzLCBlYWNoIHZpc2libGUgdHVwbGUg aXMgZWl0aGVyIHRoZSBlbmQgb2YgaXRzCiAJICogSE9ULWNoYWluIG9yIHRoZSBleHRlbnNpb24g b2YgdGhlIGNoYWluIGlzIEhPVC1zYWZlIGZvciB0aGlzIGluZGV4LgogCSAqLwogCi0JLyogU2V0 IEFjdGl2ZVNuYXBzaG90IHNpbmNlIGZ1bmN0aW9ucyBpbiB0aGUgaW5kZXhlcyBtYXkgbmVlZCBp dCAqLwotCVB1c2hBY3RpdmVTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOwotCiAJ LyogUGVyZm9ybSBjb25jdXJyZW50IGJ1aWxkIG9mIGluZGV4ICovCiAJaW5kZXhfY29uY3VycmVu dGx5X2J1aWxkKHRhYmxlSWQsIGluZGV4UmVsYXRpb25JZCk7CiAKLQkvKiB3ZSBjYW4gZG8gYXdh eSB3aXRoIG91ciBzbmFwc2hvdCAqLwotCVBvcEFjdGl2ZVNuYXBzaG90KCk7Ci0KIAkvKgogCSAq IENvbW1pdCB0aGlzIHRyYW5zYWN0aW9uIHRvIG1ha2UgdGhlIGluZGlzcmVhZHkgdXBkYXRlIHZp c2libGUuCiAJICovCkBAIC00MTM3LDkgKzQxMzEsNiBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJy ZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVp bgogCQlpZiAobmV3aWR4LT5zYWZlKQogCQkJc2V0X2luZGV4c2FmZV9wcm9jZmxhZ3MoKTsKIAot CQkvKiBTZXQgQWN0aXZlU25hcHNob3Qgc2luY2UgZnVuY3Rpb25zIGluIHRoZSBpbmRleGVzIG1h eSBuZWVkIGl0ICovCi0JCVB1c2hBY3RpdmVTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90 KCkpOwotCiAJCS8qCiAJCSAqIFVwZGF0ZSBwcm9ncmVzcyBmb3IgdGhlIGluZGV4IHRvIGJ1aWxk LCB3aXRoIHRoZSBjb3JyZWN0IHBhcmVudAogCQkgKiB0YWJsZSBpbnZvbHZlZC4KQEAgLTQxNTQs NyArNDE0NSw2IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3Rt dCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJCS8qIFBlcmZvcm0gY29uY3Vy cmVudCBidWlsZCBvZiBuZXcgaW5kZXggKi8KIAkJaW5kZXhfY29uY3VycmVudGx5X2J1aWxkKG5l d2lkeC0+dGFibGVJZCwgbmV3aWR4LT5pbmRleElkKTsKIAotCQlQb3BBY3RpdmVTbmFwc2hvdCgp OwogCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAl9CiAKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9w bGFuL3BsYW5uZXIuYwppbmRleCA0ZWM3NmNlMzFhOS4uNmEwODZlMjNhNmMgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYworKysgYi9zcmMvYmFja2VuZC9v cHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMKQEAgLTYzLDYgKzYzLDcgQEAKICNpbmNsdWRlICJ1dGls cy9sc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy9yZWwuaCIKICNpbmNsdWRlICJ1dGlscy9z ZWxmdW5jcy5oIgorI2luY2x1ZGUgInV0aWxzL3NuYXBtZ3IuaCIKIAogLyogR1VDIHBhcmFtZXRl cnMgKi8KIGRvdWJsZQkJY3Vyc29yX3R1cGxlX2ZyYWN0aW9uID0gREVGQVVMVF9DVVJTT1JfVFVQ TEVfRlJBQ1RJT047CkBAIC03MDQ3LDYgKzcwNDgsNyBAQCBwbGFuX2NyZWF0ZV9pbmRleF93b3Jr ZXJzKE9pZCB0YWJsZU9pZCwgT2lkIGluZGV4T2lkKQogCVJlbGF0aW9uCWhlYXA7CiAJUmVsYXRp b24JaW5kZXg7CiAJUmVsT3B0SW5mbyAqcmVsOworCWJvb2wJCW5lZWRfcG9wX2FjdGl2ZV9zbmFw c2hvdCA9IGZhbHNlOwogCWludAkJCXBhcmFsbGVsX3dvcmtlcnM7CiAJQmxvY2tOdW1iZXIgaGVh cF9ibG9ja3M7CiAJZG91YmxlCQlyZWx0dXBsZXM7CkBAIC03MTAyLDYgKzcxMDQsMTIgQEAgcGxh bl9jcmVhdGVfaW5kZXhfd29ya2VycyhPaWQgdGFibGVPaWQsIE9pZCBpbmRleE9pZCkKIAloZWFw ID0gdGFibGVfb3Blbih0YWJsZU9pZCwgTm9Mb2NrKTsKIAlpbmRleCA9IGluZGV4X29wZW4oaW5k ZXhPaWQsIE5vTG9jayk7CiAKKwkvKiBTZXQgQWN0aXZlU25hcHNob3Qgc2luY2UgZnVuY3Rpb25z IGluIHRoZSBpbmRleGVzIG1heSBuZWVkIGl0ICovCisJaWYgKCFBY3RpdmVTbmFwc2hvdFNldCgp KQorCXsKKwkJUHVzaEFjdGl2ZVNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7CisJ CW5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCA9IHRydWU7CisJfQogCS8qCiAJICogRGV0ZXJtaW5l IGlmIGl0J3Mgc2FmZSB0byBwcm9jZWVkLgogCSAqCkBAIC03MTU5LDYgKzcxNjcsOCBAQCBwbGFu X2NyZWF0ZV9pbmRleF93b3JrZXJzKE9pZCB0YWJsZU9pZCwgT2lkIGluZGV4T2lkKQogCQlwYXJh bGxlbF93b3JrZXJzLS07CiAKIGRvbmU6CisJaWYgKG5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCkK KwkJUG9wQWN0aXZlU25hcHNob3QoKTsKIAlpbmRleF9jbG9zZShpbmRleCwgTm9Mb2NrKTsKIAl0 YWJsZV9jbG9zZShoZWFwLCBOb0xvY2spOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGls cy9lcnJjb2Rlcy50eHQgYi9zcmMvYmFja2VuZC91dGlscy9lcnJjb2Rlcy50eHQKaW5kZXggNWIy NTQwMmViYmUuLmE4MGYwOGFmMjQxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9lcnJj b2Rlcy50eHQKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvZXJyY29kZXMudHh0CkBAIC0yNTksNiAr MjU5LDcgQEAgU2VjdGlvbjogQ2xhc3MgMjUgLSBJbnZhbGlkIFRyYW5zYWN0aW9uIFN0YXRlCiAy NVAwMiAgICBFICAgIEVSUkNPREVfSU5fRkFJTEVEX1NRTF9UUkFOU0FDVElPTiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGluX2ZhaWxlZF9zcWxfdHJhbnNhY3Rpb24KIDI1UDAzICAgIEUg ICAgRVJSQ09ERV9JRExFX0lOX1RSQU5TQUNUSU9OX1NFU1NJT05fVElNRU9VVCAgICAgICAgICAg ICAgICAgICAgaWRsZV9pbl90cmFuc2FjdGlvbl9zZXNzaW9uX3RpbWVvdXQKIDI1UDA0ICAgIEUg ICAgRVJSQ09ERV9UUkFOU0FDVElPTl9USU1FT1VUICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdHJhbnNhY3Rpb25fdGltZW91dAorMjVQMDUgICAgRSAgICBFUlJDT0RFX0lOQVBQ Uk9QUklBVEVfSVNPTEFUSU9OX0xFVkVMX0ZPUl9DT01NQU5EICAgICAgICAgICAgICBpbmFwcHJv cHJpYXRlX2lzb2xhdGlvbl9sZXZlbF9mb3JfY29tbWFuZAogCiBTZWN0aW9uOiBDbGFzcyAyNiAt IEludmFsaWQgU1FMIFN0YXRlbWVudCBOYW1lCiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0 aWxzL21pc2MvZ3VjX3BhcmFtZXRlcnMuZGF0IGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNf cGFyYW1ldGVycy5kYXQKaW5kZXggN2E4YTVkMDc2NGMuLjQ3Y2IzMzM3OGJjIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y19wYXJhbWV0ZXJzLmRhdAorKysgYi9zcmMvYmFj a2VuZC91dGlscy9taXNjL2d1Y19wYXJhbWV0ZXJzLmRhdApAQCAtNTA5LDYgKzUwOSwxNiBAQAog ICBvcHRpb25zID0+ICdjb21wdXRlX3F1ZXJ5X2lkX29wdGlvbnMnLAogfSwKIAoreyBuYW1lID0+ ICdjb25jdXJyZW50X2luZGV4X3Jlc2V0X3NuYXBzaG90X2V2ZXJ5X25fcGFnZXMnLCB0eXBlID0+ ICdpbnQnLCBjb250ZXh0ID0+ICdQR0NfU1VTRVQnLCBncm91cCA9PiAnREVWRUxPUEVSX09QVElP TlMnLAorICBzaG9ydF9kZXNjID0+ICdTZXRzIGhvdyBvZnRlbiBjb25jdXJyZW50IGluZGV4IGJ1 aWxkcyByZWZyZXNoIHRoZWlyIHNuYXBzaG90LicsCisgIGxvbmdfZGVzYyA9PiAnWmVybyBkaXNh YmxlcyBwZXJpb2RpYyBzbmFwc2hvdCByZWZyZXNoIGR1cmluZyB0aGUgZmlyc3QgaGVhcCBzY2Fu IG9mIGVsaWdpYmxlIENSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgYW5kIFJFSU5ERVggQ09OQ1VS UkVOVExZIGJ1aWxkcy4nLAorICBmbGFncyA9PiAnR1VDX05PVF9JTl9TQU1QTEUnLAorICB2YXJp YWJsZSA9PiAnY29uY3VycmVudF9pbmRleF9yZXNldF9zbmFwc2hvdF9ldmVyeV9uX3BhZ2VzJywK KyAgYm9vdF92YWwgPT4gJzQwOTYnLAorICBtaW4gPT4gJzAnLAorICBtYXggPT4gJ0lOVF9NQVgn LAorfSwKKwogeyBuYW1lID0+ICdjb25maWdfZmlsZScsIHR5cGUgPT4gJ3N0cmluZycsIGNvbnRl eHQgPT4gJ1BHQ19QT1NUTUFTVEVSJywgZ3JvdXAgPT4gJ0ZJTEVfTE9DQVRJT05TJywKICAgc2hv cnRfZGVzYyA9PiAnU2V0cyB0aGUgc2VydmVyXCdzIG1haW4gY29uZmlndXJhdGlvbiBmaWxlLics CiAgIGZsYWdzID0+ICdHVUNfRElTQUxMT1dfSU5fRklMRSB8IEdVQ19TVVBFUlVTRVJfT05MWScs CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oIGIvc3JjL2luY2x1ZGUv YWNjZXNzL3RhYmxlYW0uaAppbmRleCA0NjQ3Nzg1ZmQzNS4uOTQxYWYwNWFkM2UgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNz L3RhYmxlYW0uaApAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUgInN0b3JhZ2UvcmVhZF9zdHJl YW0uaCIKICNpbmNsdWRlICJ1dGlscy9yZWwuaCIKICNpbmNsdWRlICJ1dGlscy9zbmFwc2hvdC5o IgorI2luY2x1ZGUgInV0aWxzL2luamVjdGlvbl9wb2ludC5oIgogCiAKICNkZWZpbmUgREVGQVVM VF9UQUJMRV9BQ0NFU1NfTUVUSE9ECSJoZWFwIgpAQCAtNjksNiArNzAsMTggQEAgdHlwZWRlZiBl bnVtIFNjYW5PcHRpb25zCiAKIAkvKiBzZXQgaWYgdGhlIHF1ZXJ5IGRvZXNuJ3QgbW9kaWZ5IHRo ZSByZWxhdGlvbiAqLwogCVNPX0hJTlRfUkVMX1JFQURfT05MWSA9IDEgPDwgMTAsCisJLyoKKwkg KiBSZXNldCBzY2FuIGFuZCBjYXRhbG9nIHNuYXBzaG90IGV2ZXJ5IHNvIG9mdGVuPyBJZiBzbywg dGhlCisJICogY29uY3VycmVudF9pbmRleF9yZXNldF9zbmFwc2hvdF9ldmVyeV9uX3BhZ2VzIEdV QyBkZWNpZGVzIHdoZW4gdGhlCisJICogYWN0aXZlIHNuYXBzaG90IGlzIHBvcHBlZCwgdGhlIGNh dGFsb2cgc25hcHNob3QgaW52YWxpZGF0ZWQsIGFuZCB0aGUKKwkgKiBsYXRlc3Qgc25hcHNob3Qg cHVzaGVkIGFzIGFjdGl2ZS4KKwkgKgorCSAqIEF0IHRoZSBlbmQgb2YgdGhlIHNjYW4gc25hcHNo b3QgaXMgbm90IHBvcHBlZC4KKwkgKiBHb2FsIG9mIHN1Y2ggbW9kZSBpcyBrZWVwIHhtaW4gcHJv cGFnYXRpbmcgaG9yaXpvbiBmb3J3YXJkLgorCSAqCisJICogc2VlIGhlYXBfcmVzZXRfc2Nhbl9z bmFwc2hvdCBmb3IgZGV0YWlscy4KKwkgKi8KKwlTT19SRVNFVF9TTkFQU0hPVCA9IDEgPDwgMTEs CiB9CQkJU2Nhbk9wdGlvbnM7CiAKIC8qCkBAIC04Miw3ICs5NSw3IEBAIHR5cGVkZWYgZW51bSBT Y2FuT3B0aW9ucwogCShTT19UWVBFX1NFUVNDQU4gfCBTT19UWVBFX0JJVE1BUFNDQU4gfCBTT19U WVBFX1NBTVBMRVNDQU4gfCBcCiAJIFNPX1RZUEVfVElEU0NBTiB8IFNPX1RZUEVfVElEUkFOR0VT Q0FOIHwgU09fVFlQRV9BTkFMWVpFIHwgXAogCSBTT19BTExPV19TVFJBVCB8IFNPX0FMTE9XX1NZ TkMgfCBTT19BTExPV19QQUdFTU9ERSB8IFwKLQkgU09fVEVNUF9TTkFQU0hPVCkKKwkgU09fVEVN UF9TTkFQU0hPVCB8IFNPX1JFU0VUX1NOQVBTSE9UKQogCiAvKgogICogUmVzdWx0IGNvZGVzIGZv ciB0YWJsZV97dXBkYXRlLGRlbGV0ZSxsb2NrX3R1cGxlfSwgYW5kIGZvciB2aXNpYmlsaXR5CkBA IC05NjIsNyArOTc1LDggQEAgZXh0ZXJuIFRhYmxlU2NhbkRlc2MgdGFibGVfYmVnaW5zY2FuX2Nh dGFsb2coUmVsYXRpb24gcmVsYXRpb24sIGludCBua2V5cywKIHN0YXRpYyBpbmxpbmUgVGFibGVT Y2FuRGVzYwogdGFibGVfYmVnaW5zY2FuX3N0cmF0KFJlbGF0aW9uIHJlbCwgU25hcHNob3Qgc25h cHNob3QsCiAJCQkJCSAgaW50IG5rZXlzLCBTY2FuS2V5RGF0YSAqa2V5LAotCQkJCQkgIGJvb2wg YWxsb3dfc3RyYXQsIGJvb2wgYWxsb3dfc3luYykKKwkJCQkJICBib29sIGFsbG93X3N0cmF0LCBi b29sIGFsbG93X3N5bmMsCisJCQkJCSAgYm9vbCByZXNldF9zbmFwc2hvdCkKIHsKIAl1aW50MzIJ CWZsYWdzID0gU09fVFlQRV9TRVFTQ0FOIHwgU09fQUxMT1dfUEFHRU1PREU7CiAKQEAgLTk3MCw2 ICs5ODQsMTUgQEAgdGFibGVfYmVnaW5zY2FuX3N0cmF0KFJlbGF0aW9uIHJlbCwgU25hcHNob3Qg c25hcHNob3QsCiAJCWZsYWdzIHw9IFNPX0FMTE9XX1NUUkFUOwogCWlmIChhbGxvd19zeW5jKQog CQlmbGFncyB8PSBTT19BTExPV19TWU5DOworCWlmIChyZXNldF9zbmFwc2hvdCkKKwl7CisJCUlO SkVDVElPTl9QT0lOVCgidGFibGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cyIsIE5V TEwpOworCQkvKiBBY3RpdmUgc25hcHNob3QgaXMgcmVxdWlyZWQgb24gc3RhcnQuICovCisJCUFz c2VydChHZXRBY3RpdmVTbmFwc2hvdCgpID09IHNuYXBzaG90KTsKKwkJLyogQWN0aXZlIHNuYXBz aG90IHNob3VsZCBub3QgYmUgcmVnaXN0ZXJlZCB0byBrZWVwIHhtaW4gcHJvcGFnYXRpbmcuICov CisJCUFzc2VydChHZXRBY3RpdmVTbmFwc2hvdCgpLT5yZWdkX2NvdW50ID09IDApOworCQlmbGFn cyB8PSAoU09fUkVTRVRfU05BUFNIT1QpOworCX0KIAogCXJldHVybiB0YWJsZV9iZWdpbnNjYW5f Y29tbW9uKHJlbCwgc25hcHNob3QsIG5rZXlzLCBrZXksIE5VTEwsCiAJCQkJCQkJCSAgZmxhZ3Ms IFNPX05PTkUpOwpAQCAtMTgyOCw2ICsxODUxLDEwIEBAIHRhYmxlX3NjYW5fYW5hbHl6ZV9uZXh0 X3R1cGxlKFRhYmxlU2NhbkRlc2Mgc2NhbiwKICAqIHZlcnkgaGFyZCB0byBkZXRlY3Qgd2hldGhl ciB0aGV5J3JlIHJlYWxseSBpbmNvbXBhdGlibGUgd2l0aCB0aGUgY2hhaW4gdGlwLgogICogVGhp cyBvbmx5IHJlYWxseSBtYWtlcyBzZW5zZSBmb3IgaGVhcCBBTSwgaXQgbWlnaHQgbmVlZCB0byBi ZSBnZW5lcmFsaXplZAogICogZm9yIG90aGVyIEFNcyBsYXRlci4KKyAqCisgKiBJbiBjYXNlIG9m IG5vbi11bmlxdWUgaW5kZXggYW5kIG5vbi1wYXJhbGxlbCBjb25jdXJyZW50IGJ1aWxkLAorICog Y29uY3VycmVudF9pbmRleF9yZXNldF9zbmFwc2hvdF9ldmVyeV9uX3BhZ2VzIGlzIGFwcGxpZWQg Zm9yIHRoZSBzY2FuLgorICogVGhhdCBsZWFkcyB0byBjaGFuZ2luZyBzbmFwc2hvdHMgb24gdGhl IGZseSB0byBhbGxvdyB4bWluIGhvcml6b24gcHJvcGFnYXRlLgogICovCiBzdGF0aWMgaW5saW5l IGRvdWJsZQogdGFibGVfaW5kZXhfYnVpbGRfc2NhbihSZWxhdGlvbiB0YWJsZV9yZWwsCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL2luZGV4LmggYi9zcmMvaW5jbHVkZS9jYXRhbG9n L2luZGV4LmgKaW5kZXggOWFlZTgyMjYzNDcuLjNkOTMyMzIzNjFmIDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9jYXRhbG9nL2luZGV4LmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRleC5o CkBAIC0xNCw2ICsxNCw3IEBACiAjaWZuZGVmIElOREVYX0gKICNkZWZpbmUgSU5ERVhfSAogCisj aW5jbHVkZSAiYWNjZXNzL3hhY3QuaCIKICNpbmNsdWRlICJjYXRhbG9nL29iamVjdGFkZHJlc3Mu aCIKICNpbmNsdWRlICJub2Rlcy9leGVjbm9kZXMuaCIKIApAQCAtMjYsNiArMjcsMjIgQEAgdHlw ZWRlZiBzdHJ1Y3QgQXR0ck1hcCBBdHRyTWFwOwogCiAjZGVmaW5lIERFRkFVTFRfSU5ERVhfVFlQ RQkiYnRyZWUiCiAKKy8qCisgKiBEb2VzIHRoaXMgY29uY3VycmVudCBpbmRleCBidWlsZCB1c2Ug cGVyaW9kaWMgc25hcHNob3QgcmVzZXRzPworICoKKyAqIFNuYXBzaG90IHJlc2V0dGluZyBpcyBv bmx5IGFwcGxpY2FibGUgd2hlbiBhbGwgb2Y6CisgKiAtIHRoZSBidWlsZCBpcyBjb25jdXJyZW50 IChpaV9Db25jdXJyZW50KQorICogLSB0aGUgaW5kZXggaXMgbm9uLXVuaXF1ZSAodW5pcXVlIG5l ZWRzIGNvbnNpc3RlbnQgc25hcHNob3QpCisgKiAtIGlzb2xhdGlvbiBsZXZlbCBpcyBub3QgUkVQ RUFUQUJMRSBSRUFEL1NFUklBTElaQUJMRSAodGhvc2Uga2VlcCBhCisgKiAgIHJlZ2lzdGVyZWQg dHJhbnNhY3Rpb24gc25hcHNob3QpCisgKiAtIHRoZSBidWlsZCBpcyBub3QgcGFyYWxsZWwgKHBh cmFsbGVsIG5lZWRzIHNlcGFyYXRlIGluZnJhc3RydWN0dXJlKQorICovCisjZGVmaW5lIEluZGV4 QnVpbGRSZXNldHNTbmFwc2hvdHMoaW5kZXhJbmZvKSBcCisJKChpbmRleEluZm8pLT5paV9Db25j dXJyZW50ICYmIFwKKwkgIShpbmRleEluZm8pLT5paV9VbmlxdWUgJiYgXAorCSAhSXNvbGF0aW9u VXNlc1hhY3RTbmFwc2hvdCgpICYmIFwKKwkgIShpbmRleEluZm8pLT5paV9QYXJhbGxlbFdvcmtl cnMpCisKIC8qIEFjdGlvbiBjb2RlIGZvciBpbmRleF9zZXRfc3RhdGVfZmxhZ3MgKi8KIHR5cGVk ZWYgZW51bQogewpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbWlzY2FkbWluLmggYi9zcmMvaW5j bHVkZS9taXNjYWRtaW4uaAppbmRleCA3Mjc3YzM3ZTc3OS4uYjZjOWZjNjRhOGQgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL21pc2NhZG1pbi5oCisrKyBiL3NyYy9pbmNsdWRlL21pc2NhZG1pbi5o CkBAIC0yNjksNiArMjY5LDcgQEAgZXh0ZXJuIFBHRExMSU1QT1JUIGludCB3b3JrX21lbTsKIGV4 dGVybiBQR0RMTElNUE9SVCBkb3VibGUgaGFzaF9tZW1fbXVsdGlwbGllcjsKIGV4dGVybiBQR0RM TElNUE9SVCBpbnQgbWFpbnRlbmFuY2Vfd29ya19tZW07CiBleHRlcm4gUEdETExJTVBPUlQgaW50 IG1heF9wYXJhbGxlbF9tYWludGVuYW5jZV93b3JrZXJzOworZXh0ZXJuIFBHRExMSU1QT1JUIGlu dCBjb25jdXJyZW50X2luZGV4X3Jlc2V0X3NuYXBzaG90X2V2ZXJ5X25fcGFnZXM7CiAKIC8qCiAg KiBVcHBlciBhbmQgbG93ZXIgaGFyZCBsaW1pdHMgZm9yIHRoZSBidWZmZXIgYWNjZXNzIHN0cmF0 ZWd5IHJpbmcgc2l6ZQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9p bnRzL01ha2VmaWxlIGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL01ha2VmaWxl CmluZGV4IGE0MWQ3ODFmOGM5Li5lZWFlYWFmMmNjNiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9k dWxlcy9pbmplY3Rpb25fcG9pbnRzL01ha2VmaWxlCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvaW5q ZWN0aW9uX3BvaW50cy9NYWtlZmlsZQpAQCAtOSw3ICs5LDcgQEAgRVhURU5TSU9OID0gaW5qZWN0 aW9uX3BvaW50cwogREFUQSA9IGluamVjdGlvbl9wb2ludHMtLTEuMC5zcWwKIFBHRklMRURFU0Mg PSAiaW5qZWN0aW9uX3BvaW50cyAtIGZhY2lsaXR5IGZvciBpbmplY3Rpb24gcG9pbnRzIgogCi1S RUdSRVNTID0gaW5qZWN0aW9uX3BvaW50cyBoYXNoYWdnIHJlaW5kZXhfY29uYyB2YWN1dW0KK1JF R1JFU1MgPSBpbmplY3Rpb25fcG9pbnRzIGhhc2hhZ2cgcmVpbmRleF9jb25jIHZhY3V1bSBjaWNf cmVzZXRfc25hcHNob3RzCiBSRUdSRVNTX09QVFMgPSAtLWRscGF0aD0kKHRvcF9idWlsZGRpcikv c3JjL3Rlc3QvcmVncmVzcwogCiBJU09MQVRJT04gPSBiYXNpYyBcCmRpZmYgLS1naXQgYS9zcmMv dGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvZXhwZWN0ZWQvY2ljX3Jlc2V0X3NuYXBzaG90 cy5vdXQgYi9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvZXhwZWN0ZWQvY2ljX3Jl c2V0X3NuYXBzaG90cy5vdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAu LmVkNGFhYWYzNDYzCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rp b25fcG9pbnRzL2V4cGVjdGVkL2NpY19yZXNldF9zbmFwc2hvdHMub3V0CkBAIC0wLDAgKzEsMTE4 IEBACitDUkVBVEUgRVhURU5TSU9OIGluamVjdGlvbl9wb2ludHM7CitTRUxFQ1QgaW5qZWN0aW9u X3BvaW50c19zZXRfbG9jYWwoKTsKKyBpbmplY3Rpb25fcG9pbnRzX3NldF9sb2NhbCAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIGluamVjdGlvbl9w b2ludHNfYXR0YWNoKCdoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3RfZWZmZWN0aXZlJywgJ25vdGlj ZScpOworIGluamVjdGlvbl9wb2ludHNfYXR0YWNoIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIAorKDEgcm93KQorCitTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ3RhYmxlX2Jl Z2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMnLCAnbm90aWNlJyk7CisgaW5qZWN0aW9uX3Bv aW50c19hdHRhY2ggCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK0NS RUFURSBTQ0hFTUEgY2ljX3Jlc2V0X3NuYXA7CitDUkVBVEUgVEFCTEUgY2ljX3Jlc2V0X3NuYXAu dGJsKGkgaW50IHByaW1hcnkga2V5LCBqIGludCk7CitJTlNFUlQgSU5UTyBjaWNfcmVzZXRfc25h cC50YmwgU0VMRUNUIGksIGkgKiBJIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDIwMCkgcyhpKTsK K0NSRUFURSBGVU5DVElPTiBjaWNfcmVzZXRfc25hcC5wcmVkaWNhdGVfc3RhYmxlKGludGVnZXIp IFJFVFVSTlMgYm9vbCBJTU1VVEFCTEUKKwkJCQkJCQkJCSAgTEFOR1VBR0UgcGxwZ3NxbCBBUyAk JAorQkVHSU4KKyAgICBFWEVDVVRFICdTRUxFQ1QgdHhpZF9jdXJyZW50KCknOworICAgIFJFVFVS TiBNT0QoJDEsIDIpID0gMDsKK0VORDsgJCQ7CitDUkVBVEUgRlVOQ1RJT04gY2ljX3Jlc2V0X3Nu YXAucHJlZGljYXRlX3N0YWJsZV9ub19wYXJhbSgpIFJFVFVSTlMgYm9vbCBJTU1VVEFCTEUKKwkJ CQkJCQkJCSAgTEFOR1VBR0UgcGxwZ3NxbCBBUyAkJAorQkVHSU4KKyAgICBFWEVDVVRFICdTRUxF Q1QgdHhpZF9jdXJyZW50KCknOworICAgIFJFVFVSTiBmYWxzZTsKK0VORDsgJCQ7CistLS0tLS0t LS0tLS0tLS0tCitBTFRFUiBUQUJMRSBjaWNfcmVzZXRfc25hcC50YmwgU0VUIChwYXJhbGxlbF93 b3JrZXJzPTApOworQ1JFQVRFIFVOSVFVRSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19y ZXNldF9zbmFwLnRibChpKTsKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9z bmFwLmlkeDsKK0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0NS RUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChpKTsKK05P VElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9iZWdpbnNj YW5fc3RyYXRfcmVzZXRfc25hcHNob3RzCitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBp bmplY3Rpb24gcG9pbnQgaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZQorUkVJTkRF WCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworTk9USUNFOiAgbm90aWNl IHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNl dF9zbmFwc2hvdHMKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2lu dCBoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3RfZWZmZWN0aXZlCitEUk9QIElOREVYIENPTkNVUlJF TlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBP TiBjaWNfcmVzZXRfc25hcC50YmwoTU9EKGksIDIpLCBqKSBXSEVSRSBNT0QoaSwgMikgPSAwOwor Tk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX2JlZ2lu c2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9y IGluamVjdGlvbiBwb2ludCBoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3RfZWZmZWN0aXZlCitSRUlO REVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitOT1RJQ0U6ICBub3Rp Y2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfYmVnaW5zY2FuX3N0cmF0X3Jl c2V0X3NuYXBzaG90cworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBv aW50IGhlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUKK0RST1AgSU5ERVggQ09OQ1VS UkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4 IE9OIGNpY19yZXNldF9zbmFwLnRibChpLCBqKSBXSEVSRSBjaWNfcmVzZXRfc25hcC5wcmVkaWNh dGVfc3RhYmxlKGkpOworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBv aW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMKK05PVElDRTogIG5vdGlj ZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3Rf ZWZmZWN0aXZlCitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7 CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfYmVn aW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBm b3IgaW5qZWN0aW9uIHBvaW50IGhlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUKK0RS T1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0NSRUFURSBJTkRFWCBD T05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChpLCBqKSBXSEVSRSBjaWNfcmVz ZXRfc25hcC5wcmVkaWNhdGVfc3RhYmxlX25vX3BhcmFtKCk7CitOT1RJQ0U6ICBub3RpY2UgdHJp Z2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3Nu YXBzaG90cworUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4Owor Tk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX2JlZ2lu c2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMKK0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19y ZXNldF9zbmFwLmlkeDsKK0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNl dF9zbmFwLnRibCBVU0lORyBCUklOKGkpOworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3Ig aW5qZWN0aW9uIHBvaW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMKK05P VElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFwX3Jlc2V0X3Nj YW5fc25hcHNob3RfZWZmZWN0aXZlCitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVz ZXRfc25hcC5pZHg7CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9p bnQgdGFibGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cworTk9USUNFOiAgbm90aWNl IHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9l ZmZlY3RpdmUKK0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKKy0t IFRoZSBzYW1lIGluIHBhcmFsbGVsIG1vZGUKK0FMVEVSIFRBQkxFIGNpY19yZXNldF9zbmFwLnRi bCBTRVQgKHBhcmFsbGVsX3dvcmtlcnM9Mik7CitDUkVBVEUgVU5JUVVFIElOREVYIENPTkNVUlJF TlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGkpOworUkVJTkRFWCBJTkRFWCBDT05DVVJS RU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jl c2V0X3NuYXAuaWR4OworQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0 X3NuYXAudGJsKGkpOworUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAu aWR4OworRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworQ1JFQVRF IElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKE1PRChpLCAyKSwg aikgV0hFUkUgTU9EKGksIDIpID0gMDsKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19y ZXNldF9zbmFwLmlkeDsKK0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlk eDsKK0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChp LCBqKSBXSEVSRSBjaWNfcmVzZXRfc25hcC5wcmVkaWNhdGVfc3RhYmxlKGkpOworTk9USUNFOiAg bm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJh dF9yZXNldF9zbmFwc2hvdHMKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlv biBwb2ludCBoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3RfZWZmZWN0aXZlCitSRUlOREVYIElOREVY IENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dl cmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBz aG90cworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhlYXBf cmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUKK0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNp Y19yZXNldF9zbmFwLmlkeDsKK0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19y ZXNldF9zbmFwLnRibChpLCBqKSBXSEVSRSBjaWNfcmVzZXRfc25hcC5wcmVkaWNhdGVfc3RhYmxl X25vX3BhcmFtKCk7CitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5p ZHg7CitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitDUkVBVEUg SU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSBERVNDIE5VTExT IExBU1QpOworUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4Owor RFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworQ1JFQVRFIElOREVY IENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsIFVTSU5HIEJSSU4oaSk7CitS RUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitEUk9QIElOREVY IENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitCRUdJTiBUUkFOU0FDVElPTjsKK0NS RUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChpKTsKK0VS Uk9SOiAgQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBjYW5ub3QgcnVuIGluc2lkZSBhIHRyYW5z YWN0aW9uIGJsb2NrCitST0xMQkFDSyA7CitTRVQgZGVmYXVsdF90cmFuc2FjdGlvbl9pc29sYXRp b24gPSAncmVwZWF0YWJsZSByZWFkJzsKK0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9O IGNpY19yZXNldF9zbmFwLnRibChpKTsKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19y ZXNldF9zbmFwLmlkeDsKK0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlk eDsKK1NFVCBkZWZhdWx0X3RyYW5zYWN0aW9uX2lzb2xhdGlvbiA9IHNlcmlhbGl6YWJsZTsKK0NS RUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChpKTsKK1JF SU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0RST1AgSU5ERVgg Q09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK1JFU0VUIGRlZmF1bHRfdHJhbnNhY3Rp b25faXNvbGF0aW9uOworRFJPUCBTQ0hFTUEgY2ljX3Jlc2V0X3NuYXAgQ0FTQ0FERTsKK05PVElD RTogIGRyb3AgY2FzY2FkZXMgdG8gMyBvdGhlciBvYmplY3RzCitERVRBSUw6ICBkcm9wIGNhc2Nh ZGVzIHRvIHRhYmxlIGNpY19yZXNldF9zbmFwLnRibAorZHJvcCBjYXNjYWRlcyB0byBmdW5jdGlv biBjaWNfcmVzZXRfc25hcC5wcmVkaWNhdGVfc3RhYmxlKGludGVnZXIpCitkcm9wIGNhc2NhZGVz IHRvIGZ1bmN0aW9uIGNpY19yZXNldF9zbmFwLnByZWRpY2F0ZV9zdGFibGVfbm9fcGFyYW0oKQor RFJPUCBFWFRFTlNJT04gaW5qZWN0aW9uX3BvaW50czsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21v ZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9tZXNvbi5idWlsZCBiL3NyYy90ZXN0L21vZHVsZXMvaW5q ZWN0aW9uX3BvaW50cy9tZXNvbi5idWlsZAppbmRleCBmY2M4NTQxNDUxNS4uNWQyOThjZDI3MTAg MTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9tZXNvbi5idWls ZAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvbWVzb24uYnVpbGQKQEAg LTM2LDYgKzM2LDcgQEAgdGVzdHMgKz0gewogICAgICAgJ2hhc2hhZ2cnLAogICAgICAgJ3JlaW5k ZXhfY29uYycsCiAgICAgICAndmFjdXVtJywKKyAgICAgICdjaWNfcmVzZXRfc25hcHNob3RzJywK ICAgICBdLAogICAgICdyZWdyZXNzX2FyZ3MnOiBbJy0tZGxwYXRoJywgbWVzb24ucHJvamVjdF9i dWlsZF9yb290KCkgLyAnc3JjL3Rlc3QvcmVncmVzcyddLAogICAgICMgVGhlIGluamVjdGlvbiBw b2ludHMgYXJlIGNsdXN0ZXItd2lkZSwgc28gZGlzYWJsZSBpbnN0YWxsY2hlY2sKZGlmZiAtLWdp dCBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9zcWwvY2ljX3Jlc2V0X3NuYXBz aG90cy5zcWwgYi9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvc3FsL2NpY19yZXNl dF9zbmFwc2hvdHMuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi41 NTM3ODc1MzliMwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9u X3BvaW50cy9zcWwvY2ljX3Jlc2V0X3NuYXBzaG90cy5zcWwKQEAgLTAsMCArMSwxMDEgQEAKK0NS RUFURSBFWFRFTlNJT04gaW5qZWN0aW9uX3BvaW50czsKKworU0VMRUNUIGluamVjdGlvbl9wb2lu dHNfc2V0X2xvY2FsKCk7CitTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ2hlYXBfcmVz ZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUnLCAnbm90aWNlJyk7CitTRUxFQ1QgaW5qZWN0aW9u X3BvaW50c19hdHRhY2goJ3RhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMnLCAn bm90aWNlJyk7CisKKworQ1JFQVRFIFNDSEVNQSBjaWNfcmVzZXRfc25hcDsKK0NSRUFURSBUQUJM RSBjaWNfcmVzZXRfc25hcC50YmwoaSBpbnQgcHJpbWFyeSBrZXksIGogaW50KTsKK0lOU0VSVCBJ TlRPIGNpY19yZXNldF9zbmFwLnRibCBTRUxFQ1QgaSwgaSAqIEkgRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoMSwgMjAwKSBzKGkpOworCitDUkVBVEUgRlVOQ1RJT04gY2ljX3Jlc2V0X3NuYXAucHJlZGlj YXRlX3N0YWJsZShpbnRlZ2VyKSBSRVRVUk5TIGJvb2wgSU1NVVRBQkxFCisJCQkJCQkJCQkgIExB TkdVQUdFIHBscGdzcWwgQVMgJCQKK0JFR0lOCisgICAgRVhFQ1VURSAnU0VMRUNUIHR4aWRfY3Vy cmVudCgpJzsKKyAgICBSRVRVUk4gTU9EKCQxLCAyKSA9IDA7CitFTkQ7ICQkOworCitDUkVBVEUg RlVOQ1RJT04gY2ljX3Jlc2V0X3NuYXAucHJlZGljYXRlX3N0YWJsZV9ub19wYXJhbSgpIFJFVFVS TlMgYm9vbCBJTU1VVEFCTEUKKwkJCQkJCQkJCSAgTEFOR1VBR0UgcGxwZ3NxbCBBUyAkJAorQkVH SU4KKyAgICBFWEVDVVRFICdTRUxFQ1QgdHhpZF9jdXJyZW50KCknOworICAgIFJFVFVSTiBmYWxz ZTsKK0VORDsgJCQ7CisKKy0tLS0tLS0tLS0tLS0tLS0KK0FMVEVSIFRBQkxFIGNpY19yZXNldF9z bmFwLnRibCBTRVQgKHBhcmFsbGVsX3dvcmtlcnM9MCk7CisKK0NSRUFURSBVTklRVUUgSU5ERVgg Q09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSk7CitSRUlOREVYIElOREVY IENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitEUk9QIElOREVYIENPTkNVUlJFTlRM WSBjaWNfcmVzZXRfc25hcC5pZHg7CisKK0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9O IGNpY19yZXNldF9zbmFwLnRibChpKTsKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19y ZXNldF9zbmFwLmlkeDsKK0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlk eDsKKworQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJs KE1PRChpLCAyKSwgaikgV0hFUkUgTU9EKGksIDIpID0gMDsKK1JFSU5ERVggSU5ERVggQ09OQ1VS UkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19y ZXNldF9zbmFwLmlkeDsKKworQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jl c2V0X3NuYXAudGJsKGksIGopIFdIRVJFIGNpY19yZXNldF9zbmFwLnByZWRpY2F0ZV9zdGFibGUo aSk7CitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitEUk9Q IElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CisKK0NSRUFURSBJTkRFWCBD T05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChpLCBqKSBXSEVSRSBjaWNfcmVz ZXRfc25hcC5wcmVkaWNhdGVfc3RhYmxlX25vX3BhcmFtKCk7CitSRUlOREVYIElOREVYIENPTkNV UlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNf cmVzZXRfc25hcC5pZHg7CisKK0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19y ZXNldF9zbmFwLnRibCBVU0lORyBCUklOKGkpOworUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkg Y2ljX3Jlc2V0X3NuYXAuaWR4OworRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3Nu YXAuaWR4OworCistLSBUaGUgc2FtZSBpbiBwYXJhbGxlbCBtb2RlCitBTFRFUiBUQUJMRSBjaWNf cmVzZXRfc25hcC50YmwgU0VUIChwYXJhbGxlbF93b3JrZXJzPTIpOworCitDUkVBVEUgVU5JUVVF IElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGkpOworUkVJTkRF WCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworRFJPUCBJTkRFWCBDT05D VVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworCitDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZ IGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSk7CitSRUlOREVYIElOREVYIENPTkNVUlJFTlRM WSBjaWNfcmVzZXRfc25hcC5pZHg7CitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRf c25hcC5pZHg7CisKK0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9z bmFwLnRibChNT0QoaSwgMiksIGopIFdIRVJFIE1PRChpLCAyKSA9IDA7CitSRUlOREVYIElOREVY IENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitEUk9QIElOREVYIENPTkNVUlJFTlRM WSBjaWNfcmVzZXRfc25hcC5pZHg7CisKK0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9O IGNpY19yZXNldF9zbmFwLnRibChpLCBqKSBXSEVSRSBjaWNfcmVzZXRfc25hcC5wcmVkaWNhdGVf c3RhYmxlKGkpOworUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4 OworRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworCitDUkVBVEUg SU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSwgaikgV0hFUkUg Y2ljX3Jlc2V0X3NuYXAucHJlZGljYXRlX3N0YWJsZV9ub19wYXJhbSgpOworUkVJTkRFWCBJTkRF WCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworRFJPUCBJTkRFWCBDT05DVVJSRU5U TFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworCitDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBP TiBjaWNfcmVzZXRfc25hcC50YmwoaSBERVNDIE5VTExTIExBU1QpOworUkVJTkRFWCBJTkRFWCBD T05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkg Y2ljX3Jlc2V0X3NuYXAuaWR4OworCitDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBj aWNfcmVzZXRfc25hcC50YmwgVVNJTkcgQlJJTihpKTsKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVO VExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNl dF9zbmFwLmlkeDsKKworQkVHSU4gVFJBTlNBQ1RJT047CitDUkVBVEUgSU5ERVggQ09OQ1VSUkVO VExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSk7CitST0xMQkFDSyA7CisKK1NFVCBkZWZh dWx0X3RyYW5zYWN0aW9uX2lzb2xhdGlvbiA9ICdyZXBlYXRhYmxlIHJlYWQnOworQ1JFQVRFIElO REVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGkpOworUkVJTkRFWCBJ TkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworRFJPUCBJTkRFWCBDT05DVVJS RU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworCitTRVQgZGVmYXVsdF90cmFuc2FjdGlvbl9pc29s YXRpb24gPSBzZXJpYWxpemFibGU7CitDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBj aWNfcmVzZXRfc25hcC50YmwoaSk7CitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVz ZXRfc25hcC5pZHg7CitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7 CitSRVNFVCBkZWZhdWx0X3RyYW5zYWN0aW9uX2lzb2xhdGlvbjsKKworRFJPUCBTQ0hFTUEgY2lj X3Jlc2V0X3NuYXAgQ0FTQ0FERTsKKworRFJPUCBFWFRFTlNJT04gaW5qZWN0aW9uX3BvaW50czsK LS0gCjIuNDMuMAoK --000000000000a18566064ece63cb--