Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1gdddH-0001dS-80 for pgsql-hackers@arkaria.postgresql.org; Sun, 30 Dec 2018 16:08:08 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1gdddF-0000AI-4W for pgsql-hackers@arkaria.postgresql.org; Sun, 30 Dec 2018 16:08:05 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1gdddD-0008Qr-LL for pgsql-hackers@lists.postgresql.org; Sun, 30 Dec 2018 16:08:04 +0000 Received: from out1-smtp.messagingengine.com ([66.111.4.25]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1gddcu-0000sc-D4 for pgsql-hackers@postgresql.org; Sun, 30 Dec 2018 16:08:03 +0000 Received: from compute7.internal (compute7.nyi.internal [10.202.2.47]) by mailout.nyi.internal (Postfix) with ESMTP id 99AF72094D for ; Sun, 30 Dec 2018 11:07:42 -0500 (EST) Received: from mailfrontend1 ([10.202.2.162]) by compute7.internal (MEProxy); Sun, 30 Dec 2018 11:07:42 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=content-type:date:from:message-id :mime-version:subject:to:x-me-proxy:x-me-proxy:x-me-sender :x-me-sender:x-sasl-enc; s=fm1; bh=XWv9d1ATNa1yxd/f8px7Tp9SBTbpF sPlCkfIUoZosUs=; b=hnZUoVdLgBjkJyBSzB25yG3n9Xmt6l9mkOuAfyYZ5CKyg PARTUyk4z6ULz1/RUEU5dzNZBzh4g+12MEbXmo1kBPuuHUG3GeDzMosy8Wija9ig c3Y9ZvmFC4Ozre2g0bY70B7HOJii08LtDxkYI2C/gunsLiF5LgyEVP4qNvPOGP3J x9yv9xLvVSNNi0J/0euhGWdJuKWXwHDuRRq409dfbAgIczruYVQUXibKLvXGPzKB zBzQCoV+y1dLEtrr+M2cf1wTH8upHqOZWITFAi9YqngG+5IvYlFwyETLnvwMhMmZ iRmcDF1FB4CiP5wb8DofefejPX3Hct9b28emTbmlA== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedtledruddtgdekieculddtuddrgedtkedrtddtmd cutefuodetggdotefrodftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpqfhuthen uceurghilhhouhhtmecufedttdenucenucfjughrpefhuffvohfkffgfgggtsehmtderre dtfeejnecuhfhrohhmpefrvghtvghrucfgihhsvghnthhrrghuthcuoehpvghtvghrrdgv ihhsvghnthhrrghuthesvdhnughquhgrughrrghnthdrtghomheqnecuffhomhgrihhnpe dvnhguqhhurggurhgrnhhtrdgtohhmnecukfhppeelfedrvdegfedrudduledrvdefleen ucfrrghrrghmpehmrghilhhfrhhomhepphgvthgvrhdrvghishgvnhhtrhgruhhtsedvnh guqhhurggurhgrnhhtrdgtohhmnecuvehluhhsthgvrhfuihiivgeptd X-ME-Proxy: Received: from april.pezone.net (p5df377ef.dip0.t-ipconnect.de [93.243.119.239]) by mail.messagingengine.com (Postfix) with ESMTPA id D3686E409D for ; Sun, 30 Dec 2018 11:07:39 -0500 (EST) From: Peter Eisentraut Subject: Unified logging system for command-line programs Openpgp: preference=signencrypt Autocrypt: addr=peter.eisentraut@2ndquadrant.com; prefer-encrypt=mutual; keydata= xsFNBFUUt6kBEADZd9NNTBJbHmAXXJgPGOdd6Q73l80oifIVgn2tRxP9dYkCfTlo/yLqbKTl JNqTcyM6XrJDnB2sMEUGYCewYZXl+9C4bBJWyNqcEI1ae9u71vEq/fknFLArJ+2wN+f7QuRx Q8d94ZJAiJQ5g3fNk2HVeedCQCKP5dCzU+ZLt2dbsx1PDZLjTO9gf+JswWuGFb5wY5PZVM5V hq66Xk7ZJzHuARacza2RT7J2fkMmQBY+kr7L98Perb0GhafnlhXB0PvUB+N3xpmggMfwuhTu BngS/G/r3GvemxJuFxouw8xsMqrsfdksJXA2gLXYtwRCssdPV3PO0rlD9twqDo8URfIJ5fb6 1g/MV8aTOKjg3Q8MpJPtkwJqN4o3PvbwYdedeFnOVkkYAJdu/aX1v1BeCBDu7Hy3sF52scD3 pQbyQSl9vUDpTLarASAxNbAV0NRJE8dp4vfW6AH1ccryGiFqw/czPK/iN0+MT8wsjAW6WW4w hvjm5UPA1KTwi3ZT8eT5uycuH7QpuNk7LnGGXQ6KaRALFywzkr0A0V0AvFNa+l4wstMaXaB6 dmMXyF0/hfryqyOeu1gAdq4q0/PNC2dPgb/6uoh4eMjN6A5GXcprilhz5DulmsilY21hfSoU S64ODed96pKhprsOxjZiDRsN1QM5MwB+uwVWUNfsX7fIxE0BrwARAQABzSdQZXRlciBFaXNl bnRyYXV0IDxwZXRlckBlaXNlbnRyYXV0Lm9yZz7CwXoEEwEIACQCGwMFCwkIBwMFFQoJCAsF FgIDAQACHgECF4AFAlUUuKQCGQEACgkQoZ8SQ+xBJp8llw//RbGoXnF72FZTlOFsnNyxnWbF vViPCfdAlZl1GGK9OYCvV1dp/956HuhB0wpaGQHiBmQfOPJf/jLOPjXFYm2iEChEycrBChuE j4TSYemMp5BSPILYk9Uwd16kVD/+U6fQfK6H5pOhfBvbM6asMnmpY2wQuvktxHvaGlytFw84 EzFWNZtAZfxkw28w3AhIQkKe9hJanfyDL750RcbyEr8AAHty5IErrvS7tM5vQwIeh5BF26ND CyKPRdZgOgMpcwFfROKBDpAt052CgWIpNdhBdfIKlkCs4/ILxmC3rT/Mb/qZiHcoMMwEu6k+ T7vRAFZZAk62Yrr/U8/vUGKlzRZQoo86fyojCfI0ibCIc0z8rwCVY9P40G9wD9BTCZS/z8Vh jjpBlNnIKw2hM6hbxavKndCJjFFJD08rXrTyrLF/of18xD37vNdYooP9VATB5QjOWFRrscSZ 4a89e+to3m7YVnd4xdXwGp47dYusoax84C8tg1gZrH38ol9dPmnKX6GZrXeS7tH9k8VeUpJ8 HQbRThQRWAT936QpYbLConBmOtmbLmjQOGtiXPo1oK57X/7U/WBja5vWmm2q+Yxtt+3uHGVg DdDU4CJpXo4lX0v2n3QV5EBSW9hjdF3bNfl6GFBb1pPEhqNcMDUc7zkx/2uENdAdk/BnqMgH umip7b0pVfvOwU0EVRS3qQEQAJf6p0P7D+hMYUgCPkvgrcz6OJYsAYdUMUmokfqmkKwK0oJM ew8TNGM53ocKAgQGma5f10rwbZNPlpVPNRX5hwUmwVlcwSut0oE+JfUBH7mpysWvpF05RKIy q9RCoJZrAbXS7Tig56A1QD8IcM00rERZMcCOlI1+q9m4u9AOI+0LyGGSH+VvoyDHD/Jew4R2 TmPEF8Pu7lYiNYK88Q6u0kBkc+Tz3BNlyc6fi3HxnFfp0b75HLXPSTu2SwA/0Q31wHZXwrEU BR9KgSn/qbgy8ydPc97i82fhiFE3cbGexfPrQSMYmDGi+dcQ0s+AMQwC3XyMC0JkHpYUuFkR QdlIvaIhgFUUN2Vr4xF2ADaNTNFc4DYaiPHFAgHZw+3pZWqS4uIiWgJynrEaHw4F3QWU8/JB iyEWDhNq4WBrRA0u914TCCAoFOOKMnRdl8eJrRQKM/5/lXbHFjjlI/LDKhLRFsuQsnJJ3331 RjCzpHPZG5/p5KR1RHiAXa0p/DW5lXyq21hS3kjDlleoHqOxCN/cy0Jgz7qLDq1vZoCl67Sy RAH60c2Xu4may9SVltmot0OzWVHdrfS+85FQGp9580DaeLio7YMFKy2bfEvwQJ/c9xD2QPB+ oSb3V8ueSznXBG5+dyfOsZFRPxceA0wA2rSWZSjxLdKxvyGTj9vsCjaDu13rABEBAAHCwV8E GAEIAAkFAlUUt6kCGwwACgkQoZ8SQ+xBJp+HJhAAxmSTsC5y7p9Zu+nnLpucv/h88oEx985e qWeXzQiwM3pfRZS+PdTH9TyzHK0KOgKoAiubk0vt+BrT91D9d0G5kVQaTctAErGBoMkTaZJT XVEcNphiPzysdSqvprjojMp1y7rG8AP+Xd6m0rE1LRnkRRm8HyI8vdXsuLQPITGWXDLMjaNq AOV3BUnzkgtjMuIYw7SCr+12ZOb5dEKvaG4kjC4kaJ/TLbuBhVANcXkC90yp0AOZLs/cB1Dj OAXno/RUUruJ3r27a+pFv768UAi9QWcdw58yPxreMNMLqAgsS9oTHwHfGNWcB2dJ4UW+GMLJ hTf9TjQ2f+N/sIx5XMQ9pYw6CAJMK29qPx6/ZayrPxf22EXf0D3zTwIEZgwfSkynFVwV25L7 awQq60fifdMYheSxq7GbhpsixmcD+e161cCmLIt75YDt5bQ0B1yf7EmxG8n7pGZAOM6LoNsU fkSldba5XVwh8LuN5mK0nQBELGW6Os4TDq4REggLpfcvFC215zpuo0iCGnmE/Bns4nowqUSP u4tkWL+nxW4qgv8wo8HJ52jd79EJ8iqfIBoidBfy9AIUiEUApGQzWPu6yWcI8fY0rN5D+tc+ Yw1Zt6Mm+huYJpgCRsTcfzEcahnBn521CWcWvhW1ff3KFileFMtNmnBBhMncmRKHphtTKEpN 3jI= To: pgsql-hackers Organization: 2ndQuadrant Message-ID: <6a609b43-4f57-7348-6480-bd022f924310@2ndquadrant.com> Date: Sun, 30 Dec 2018 17:07:37 +0100 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:52.0) Gecko/20100101 Thunderbird/52.9.1 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------------0E40B15A4ED038D4B1C84F07" Content-Language: en-US List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk This is a multi-part message in MIME format. --------------0E40B15A4ED038D4B1C84F07 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit I have developed a patch that unifies the various ad hoc logging (message printing, error printing) systems used throughout the command-line programs. Examples: - fprintf(stderr, _("%s: could not open file \"%s\" for writing: %s\n"), - progname, path, strerror(errno)); + pg_log_error("could not open file \"%s\" for writing: %m", path); - if (debug) - fprintf(stderr, - _("%s: file \"%s\" would be removed\n"), - progname, WALFilePath); + pg_log_debug("file \"%s\" would be removed", WALFilePath); Features: - Program name is automatically prefixed. - Message string does not end with newline. This removes a common source of inconsistencies and omissions. - Additionally, a final newline is automatically stripped, simplifying use of PQerrorMessage() etc., another common source of mistakes. - I converted error message strings to use %m where possible. (I had originally intended to implement %m here like elog used to do, but that was thankfully already done elsewhere.) - As a result of the above several points, more translatable message strings can be shared between different components and between frontends and backend, without gratuitous punctuation or whitespace differences. - There is support for setting a "log level". This is not meant to be user-facing, but can be used internally to implement debug or verbose modes, as in the above example. - Lazy argument evaluation, so no significant overhead if logging at some level is disabled. - Bonus: Some color in the messages, similar to gcc and clang. Export PG_COLOR=auto to try it out. The colors are currently hardcoded, so some configuration there might be added. - Common files (common/, fe_utils/, etc.) can handle logging much more simply by just using one API without worrying too much about the context of the calling program, requiring callbacks, or having to pass "progname" around everywhere. Soft goals: - Reduces vertical space use and visual complexity of error reporting in the source code. - Encourages more deliberate classification of messages. For example, in some cases it wasn't clear without analyzing the surrounding code whether a message was meant as an error or just an info. - Concepts and terms are vaguely aligned with popular logging frameworks such as log4j and Python logging. - Future possibilities. Maybe something like log_line_prefix or different log formats could be added. Just a theory right now, but this would make it easier. Non-goals/out of scope: - Flow control. This is all just about printing stuff out. Nothing affects program flow (e.g., fatal exits). The uses are just too varied to do that. Some existing code had wrappers that do some kind of print-and-exit, and I adapted those. It didn't seem worth going any further. It's not fully complete but most of it works well. I didn't do pg_upgrade and pg_ctl yet. pg_dump has some remaining special cases to work through. I tried to keep the output mostly the same, but there is a lot of historical baggage to unwind and special cases to consider, and I might not always have succeeded. One significant change is that pg_rewind used to write all error messages to stdout. That is now changed to stderr. -- Peter Eisentraut http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services --------------0E40B15A4ED038D4B1C84F07 Content-Type: text/plain; charset=UTF-8; x-mac-type="0"; x-mac-creator="0"; name="v1-0001-Unified-logging-system-for-command-line-programs.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename*0="v1-0001-Unified-logging-system-for-command-line-programs.pat"; filename*1="ch" RnJvbSAzNGUzYjhjNTBkYjc1MTVmYjZlZWU4NTViODJlZTAxZjZmM2JmZTYzIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogU3VuLCAzMCBEZWMgMjAxOCAxNjoyMjo0OCArMDEwMApTdWJqZWN0 OiBbUEFUQ0ggdjFdIFVuaWZpZWQgbG9nZ2luZyBzeXN0ZW0gZm9yIGNvbW1hbmQtbGluZSBw cm9ncmFtcwoKVGhpcyB1bmlmaWVzIHRoZSB2YXJpb3VzIGFkIGhvYyBsb2dnaW5nIChtZXNz YWdlIHByaW50aW5nLCBlcnJvcgpwcmludGluZykgc3lzdGVtcyB1c2VkIHRocm91Z2hvdXQg dGhlIGNvbW1hbmQtbGluZSBwcm9ncmFtcy4KLS0tCiBzcmMvZmVfdXRpbHMvbG9nZ2luZy5j ICAgICAgICAgICAgICAgICAgICAgICAgfCAxNjUgKysrKysrKwogc3JjL2luY2x1ZGUvZmVf dXRpbHMvbG9nZ2luZy5oICAgICAgICAgICAgICAgIHwgIDk0ICsrKysKIHNyYy9ubHMtZ2xv YmFsLm1rICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgOCArCiBzcmMvYmFja2Vu ZC91dGlscy9taXNjL3BnX2NvbnRyb2xkYXRhLmMgICAgICAgfCAgIDggKy0KIHNyYy9iaW4v aW5pdGRiL2luaXRkYi5jICAgICAgICAgICAgICAgICAgICAgICB8IDI2MiArKysrKy0tLS0t LQogc3JjL2Jpbi9pbml0ZGIvbmxzLm1rICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA1 ICstCiBzcmMvYmluL3BnX2FyY2hpdmVjbGVhbnVwL01ha2VmaWxlICAgICAgICAgICAgfCAg IDQgKy0KIHNyYy9iaW4vcGdfYXJjaGl2ZWNsZWFudXAvbmxzLm1rICAgICAgICAgICAgICB8 ICAgNCArLQogc3JjL2Jpbi9wZ19hcmNoaXZlY2xlYW51cC9wZ19hcmNoaXZlY2xlYW51cC5j IHwgIDUzICstLQogc3JjL2Jpbi9wZ19iYXNlYmFja3VwL25scy5tayAgICAgICAgICAgICAg ICAgIHwgICA1ICstCiBzcmMvYmluL3BnX2Jhc2ViYWNrdXAvcGdfYmFzZWJhY2t1cC5jICAg ICAgICAgfCA0MTEgKysrKysrKy0tLS0tLS0tLS0tCiBzcmMvYmluL3BnX2Jhc2ViYWNrdXAv cGdfcmVjZWl2ZXdhbC5jICAgICAgICAgfCAxMjQgKysrLS0tCiBzcmMvYmluL3BnX2Jhc2Vi YWNrdXAvcGdfcmVjdmxvZ2ljYWwuYyAgICAgICAgfCAxNTcgKysrLS0tLQogc3JjL2Jpbi9w Z19iYXNlYmFja3VwL3JlY2VpdmVsb2cuYyAgICAgICAgICAgIHwgMjE2ICsrKystLS0tLQog c3JjL2Jpbi9wZ19iYXNlYmFja3VwL3N0cmVhbXV0aWwuYyAgICAgICAgICAgIHwgIDk3ICsr LS0tCiBzcmMvYmluL3BnX2Jhc2ViYWNrdXAvd2FsbWV0aG9kcy5jICAgICAgICAgICAgfCAg MTYgKy0KIHNyYy9iaW4vcGdfY29udHJvbGRhdGEvTWFrZWZpbGUgICAgICAgICAgICAgICB8 ICAgNCArLQogc3JjL2Jpbi9wZ19jb250cm9sZGF0YS9wZ19jb250cm9sZGF0YS5jICAgICAg IHwgICA1ICstCiBzcmMvYmluL3BnX2N0bC9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAg ICAgfCAgIDQgKy0KIHNyYy9iaW4vcGdfY3RsL3BnX2N0bC5jICAgICAgICAgICAgICAgICAg ICAgICB8ICAgNCArLQogc3JjL2Jpbi9wZ19kdW1wL2NvbW1vbi5jICAgICAgICAgICAgICAg ICAgICAgIHwgMTI0ICsrLS0tLQogc3JjL2Jpbi9wZ19kdW1wL2NvbXByZXNzX2lvLmMgICAg ICAgICAgICAgICAgIHwgIDQ2ICstCiBzcmMvYmluL3BnX2R1bXAvbmxzLm1rICAgICAgICAg ICAgICAgICAgICAgICAgfCAgMTMgKy0KIHNyYy9iaW4vcGdfZHVtcC9wYXJhbGxlbC5jICAg ICAgICAgICAgICAgICAgICB8ICA2MCArLS0KIHNyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBf YXJjaGl2ZXIuYyAgICAgICAgICB8IDIyNiArKysrKy0tLS0tCiBzcmMvYmluL3BnX2R1bXAv cGdfYmFja3VwX2FyY2hpdmVyLmggICAgICAgICAgfCAgMTMgKy0KIHNyYy9iaW4vcGdfZHVt cC9wZ19iYWNrdXBfY3VzdG9tLmMgICAgICAgICAgICB8ICA5MyArKy0tCiBzcmMvYmluL3Bn X2R1bXAvcGdfYmFja3VwX2RiLmMgICAgICAgICAgICAgICAgfCAgNDAgKy0KIHNyYy9iaW4v cGdfZHVtcC9wZ19iYWNrdXBfZGlyZWN0b3J5LmMgICAgICAgICB8ICA3MiArKy0KIHNyYy9i aW4vcGdfZHVtcC9wZ19iYWNrdXBfbnVsbC5jICAgICAgICAgICAgICB8ICAgNCArLQogc3Jj L2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF90YXIuYyAgICAgICAgICAgICAgIHwgIDg4ICsrLS0K IHNyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfdXRpbHMuYyAgICAgICAgICAgICB8ICAyMiAr LQogc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF91dGlscy5oICAgICAgICAgICAgIHwgICA0 ICstCiBzcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jICAgICAgICAgICAgICAgICAgICAgfCAz MzAgKysrKysrKy0tLS0tLS0KIHNyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmggICAgICAgICAg ICAgICAgICAgICB8ICAgMSAtCiBzcmMvYmluL3BnX2R1bXAvcGdfZHVtcF9zb3J0LmMgICAg ICAgICAgICAgICAgfCAgMjYgKy0KIHNyYy9iaW4vcGdfZHVtcC9wZ19kdW1wYWxsLmMgICAg ICAgICAgICAgICAgICB8IDExOCArKystLQogc3JjL2Jpbi9wZ19kdW1wL3BnX3Jlc3RvcmUu YyAgICAgICAgICAgICAgICAgIHwgIDM2ICstCiBzcmMvYmluL3BnX2R1bXAvdC8wMDFfYmFz aWMucGwgICAgICAgICAgICAgICAgfCAgNTIgKy0tCiBzcmMvYmluL3BnX2R1bXAvdC8wMDJf cGdfZHVtcC5wbCAgICAgICAgICAgICAgfCAgMTYgKy0KIHNyYy9iaW4vcGdfcmVzZXR3YWwv TWFrZWZpbGUgICAgICAgICAgICAgICAgICB8ICAgNCArLQogc3JjL2Jpbi9wZ19yZXNldHdh bC9ubHMubWsgICAgICAgICAgICAgICAgICAgIHwgICA0ICstCiBzcmMvYmluL3BnX3Jlc2V0 d2FsL3BnX3Jlc2V0d2FsLmMgICAgICAgICAgICAgfCAxODEgKysrKy0tLS0KIHNyYy9iaW4v cGdfcmVzZXR3YWwvdC8wMDJfY29ycnVwdGVkLnBsICAgICAgICB8ICAgNCArLQogc3JjL2Jp bi9wZ19yZXdpbmQvTWFrZWZpbGUgICAgICAgICAgICAgICAgICAgIHwgICA0ICstCiBzcmMv YmluL3BnX3Jld2luZC9jb3B5X2ZldGNoLmMgICAgICAgICAgICAgICAgfCAgMzggKy0KIHNy Yy9iaW4vcGdfcmV3aW5kL2RhdGFwYWdlbWFwLmMgICAgICAgICAgICAgICB8ICAgNSArLQog c3JjL2Jpbi9wZ19yZXdpbmQvZmlsZV9vcHMuYyAgICAgICAgICAgICAgICAgIHwgIDYwICst LQogc3JjL2Jpbi9wZ19yZXdpbmQvZmlsZW1hcC5jICAgICAgICAgICAgICAgICAgIHwgIDM0 ICstCiBzcmMvYmluL3BnX3Jld2luZC9saWJwcV9mZXRjaC5jICAgICAgICAgICAgICAgfCAg MzYgKy0KIHNyYy9iaW4vcGdfcmV3aW5kL2xvZ2dpbmcuYyAgICAgICAgICAgICAgICAgICB8 ICA2OSArLS0KIHNyYy9iaW4vcGdfcmV3aW5kL2xvZ2dpbmcuaCAgICAgICAgICAgICAgICAg ICB8ICAxOCArLQogc3JjL2Jpbi9wZ19yZXdpbmQvbmxzLm1rICAgICAgICAgICAgICAgICAg ICAgIHwgICA3ICstCiBzcmMvYmluL3BnX3Jld2luZC9wYXJzZXhsb2cuYyAgICAgICAgICAg ICAgICAgfCAgMjIgKy0KIHNyYy9iaW4vcGdfcmV3aW5kL3BnX3Jld2luZC5jICAgICAgICAg ICAgICAgICB8ICA3MCArLS0KIHNyYy9iaW4vcGdfcmV3aW5kL3BnX3Jld2luZC5oICAgICAg ICAgICAgICAgICB8ICAgMSAtCiBzcmMvYmluL3BnX3Jld2luZC90aW1lbGluZS5jICAgICAg ICAgICAgICAgICAgfCAgMTcgKy0KIHNyYy9iaW4vcGdfdGVzdF9mc3luYy9NYWtlZmlsZSAg ICAgICAgICAgICAgICB8ICAgNCArLQogc3JjL2Jpbi9wZ190ZXN0X2ZzeW5jL3BnX3Rlc3Rf ZnN5bmMuYyAgICAgICAgIHwgIDE5ICstCiBzcmMvYmluL3BnX3VwZ3JhZGUvcGdfdXBncmFk ZS5jICAgICAgICAgICAgICAgfCAgIDQgKy0KIHNyYy9iaW4vcGdfdmVyaWZ5X2NoZWNrc3Vt cy9NYWtlZmlsZSAgICAgICAgICB8ICAgNCArLQogc3JjL2Jpbi9wZ192ZXJpZnlfY2hlY2tz dW1zL25scy5tayAgICAgICAgICAgIHwgICA0ICstCiAuLi4vcGdfdmVyaWZ5X2NoZWNrc3Vt cy9wZ192ZXJpZnlfY2hlY2tzdW1zLmMgfCAgNDMgKy0KIHNyYy9iaW4vcGdfd2FsZHVtcC9N YWtlZmlsZSAgICAgICAgICAgICAgICAgICB8ICAgMyArLQogc3JjL2Jpbi9wZ193YWxkdW1w L25scy5tayAgICAgICAgICAgICAgICAgICAgIHwgICA2ICstCiBzcmMvYmluL3BnX3dhbGR1 bXAvcGdfd2FsZHVtcC5jICAgICAgICAgICAgICAgfCAgNzEgKy0tCiBzcmMvYmluL3BnYmVu Y2gvcGdiZW5jaC5jICAgICAgICAgICAgICAgICAgICAgfCAgMTggKy0KIHNyYy9iaW4vcHNx bC9jb21tYW5kLmMgICAgICAgICAgICAgICAgICAgICAgICB8IDE1NyArKystLS0tCiBzcmMv YmluL3BzcWwvY29tbW9uLmMgICAgICAgICAgICAgICAgICAgICAgICAgfCAgODEgKystLQog c3JjL2Jpbi9wc3FsL2NvbW1vbi5oICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyIC0K IHNyYy9iaW4vcHNxbC9jb3B5LmMgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA0MiAr LQogc3JjL2Jpbi9wc3FsL2Nyb3NzdGFidmlldy5jICAgICAgICAgICAgICAgICAgIHwgIDE5 ICstCiBzcmMvYmluL3BzcWwvZGVzY3JpYmUuYyAgICAgICAgICAgICAgICAgICAgICAgfCAg NzUgKystLQogc3JjL2Jpbi9wc3FsL2hlbHAuYyAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgICAzICstCiBzcmMvYmluL3BzcWwvaW5wdXQuYyAgICAgICAgICAgICAgICAgICAgICAg ICAgfCAgMTUgKy0KIHNyYy9iaW4vcHNxbC9sYXJnZV9vYmouYyAgICAgICAgICAgICAgICAg ICAgICB8ICAxNSArLQogc3JjL2Jpbi9wc3FsL21haW5sb29wLmMgICAgICAgICAgICAgICAg ICAgICAgIHwgIDE0ICstCiBzcmMvYmluL3BzcWwvbmxzLm1rICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCAgIDggKy0KIHNyYy9iaW4vcHNxbC9wc3Fsc2NhbnNsYXNoLmwgICAgICAg ICAgICAgICAgICB8ICAxMSArLQogc3JjL2Jpbi9wc3FsL3N0YXJ0dXAuYyAgICAgICAgICAg ICAgICAgICAgICAgIHwgIDQyICstCiBzcmMvYmluL3BzcWwvdmFyaWFibGVzLmMgICAgICAg ICAgICAgICAgICAgICAgfCAgMTEgKy0KIHNyYy9iaW4vc2NyaXB0cy9jbHVzdGVyZGIuYyAg ICAgICAgICAgICAgICAgICB8ICAyMCArLQogc3JjL2Jpbi9zY3JpcHRzL2NvbW1vbi5jICAg ICAgICAgICAgICAgICAgICAgIHwgIDMwICstCiBzcmMvYmluL3NjcmlwdHMvY3JlYXRlZGIu YyAgICAgICAgICAgICAgICAgICAgfCAgMjIgKy0KIHNyYy9iaW4vc2NyaXB0cy9jcmVhdGV1 c2VyLmMgICAgICAgICAgICAgICAgICB8ICAxMyArLQogc3JjL2Jpbi9zY3JpcHRzL2Ryb3Bk Yi5jICAgICAgICAgICAgICAgICAgICAgIHwgIDExICstCiBzcmMvYmluL3NjcmlwdHMvZHJv cHVzZXIuYyAgICAgICAgICAgICAgICAgICAgfCAgMTIgKy0KIHNyYy9iaW4vc2NyaXB0cy9u bHMubWsgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNiArLQogc3JjL2Jpbi9zY3JpcHRz L3BnX2lzcmVhZHkuYyAgICAgICAgICAgICAgICAgIHwgIDEwICstCiBzcmMvYmluL3Njcmlw dHMvcmVpbmRleGRiLmMgICAgICAgICAgICAgICAgICAgfCAgNDIgKy0KIHNyYy9iaW4vc2Ny aXB0cy92YWN1dW1kYi5jICAgICAgICAgICAgICAgICAgICB8ICA0MCArLQogc3JjL2NvbW1v bi9jb250cm9sZGF0YV91dGlscy5jICAgICAgICAgICAgICAgIHwgIDI2ICstCiBzcmMvY29t bW9uL2ZpbGVfdXRpbHMuYyAgICAgICAgICAgICAgICAgICAgICAgfCAgODQgKystLQogc3Jj L2NvbW1vbi9wZ2ZuYW1lcy5jICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDMxICstCiBz cmMvY29tbW9uL3Jlc3RyaWN0ZWRfdG9rZW4uYyAgICAgICAgICAgICAgICAgfCAgMjMgKy0K IHNyYy9jb21tb24vcm10cmVlLmMgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAyNyAr LQogc3JjL2ZlX3V0aWxzL01ha2VmaWxlICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAy ICstCiBzcmMvZmVfdXRpbHMvcHNxbHNjYW4ubCAgICAgICAgICAgICAgICAgICAgICAgfCAg IDMgKy0KIHNyYy9pbmNsdWRlL2NvbW1vbi9jb250cm9sZGF0YV91dGlscy5oICAgICAgICB8 ICAgMiArLQogc3JjL2luY2x1ZGUvY29tbW9uL2ZpbGVfdXRpbHMuaCAgICAgICAgICAgICAg IHwgIDEzICstCiBzcmMvaW5jbHVkZS9jb21tb24vcmVzdHJpY3RlZF90b2tlbi5oICAgICAg ICAgfCAgIDQgKy0KIHNyYy9pbmNsdWRlL2ZlX3V0aWxzL3BzcWxzY2FuLmggICAgICAgICAg ICAgICB8ICAgNyAtCiBzcmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3QvTWFrZWZpbGUgICAgICAg ICAgICAgfCAgIDIgKwogc3JjL3Rlc3QvaXNvbGF0aW9uL01ha2VmaWxlICAgICAgICAgICAg ICAgICAgIHwgICAzICstCiBzcmMvdGVzdC9yZWdyZXNzL0dOVW1ha2VmaWxlICAgICAgICAg ICAgICAgICAgfCAgIDQgKy0KIHNyYy90ZXN0L3JlZ3Jlc3MvcGdfcmVncmVzcy5jICAgICAg ICAgICAgICAgICB8ICAgNiArLQogMTA2IGZpbGVzIGNoYW5nZWQsIDIxNzggaW5zZXJ0aW9u cygrKSwgMjU0MCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvZmVfdXRp bHMvbG9nZ2luZy5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2luY2x1ZGUvZmVfdXRpbHMv bG9nZ2luZy5oCgpkaWZmIC0tZ2l0IGEvc3JjL2ZlX3V0aWxzL2xvZ2dpbmcuYyBiL3NyYy9m ZV91dGlscy9sb2dnaW5nLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MC4uOGFhOGRhNjBmNAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9mZV91dGlscy9sb2dnaW5n LmMKQEAgLTAsMCArMSwxNjUgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogTG9nZ2lu ZyBmcmFtZXdvcmsgZm9yIGZyb250ZW5kIHByb2dyYW1zCisgKgorICogQ29weXJpZ2h0IChj KSAyMDE4LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICoKKyAqIHNy Yy9mZV91dGlscy9sb2dnaW5nLmMKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLwor I2luY2x1ZGUgInBvc3RncmVzX2ZlLmgiCisKKyNpbmNsdWRlIDx1bmlzdGQuaD4KKworI2lu Y2x1ZGUgImZlX3V0aWxzL2xvZ2dpbmcuaCIKKworc3RhdGljIGNvbnN0IGNoYXIgKnByb2du YW1lOworCitlbnVtIHBnX2xvZ19sZXZlbCBfX3BnX2xvZ19sZXZlbDsKK3N0YXRpYyBpbnQg bG9nX2ZsYWdzOwordm9pZCAoKmxvZ19wcmVfY2FsbGJhY2spKHZvaWQpOwordm9pZCAoKmxv Z19sb2N1c19jYWxsYmFjaykoY29uc3QgY2hhciAqKiwgdWludDY0ICopOworc3RhdGljIGJv b2wgbG9nX2NvbG9yOworCitjb25zdCBjaGFyICpzZ3JfZXJyb3IgPSAiMDE7MzEiOworY29u c3QgY2hhciAqc2dyX3dhcm5pbmcgPSAiMDE7MzUiOworY29uc3QgY2hhciAqc2dyX2xvY3Vz ID0gIjAxIjsKKworI2RlZmluZSBBTlNJX0VTQ0FQRV9GTVQgIlx4MWJbJXNtIgorI2RlZmlu ZSBBTlNJX0VTQ0FQRV9SRVNFVCAiXHgxYlswbSIKKwordm9pZAorcGdfbG9nZ2luZ19pbml0 KGNvbnN0IGNoYXIgKmFyZ3YwKQoreworCWNvbnN0IGNoYXIgKnBnX2NvbG9yX2VudiA9IGdl dGVudigiUEdfQ09MT1IiKTsKKworCXByb2duYW1lID0gZ2V0X3Byb2duYW1lKGFyZ3YwKTsK KwlfX3BnX2xvZ19sZXZlbCA9IFBHX0xPR19JTkZPOworCisJaWYgKHBnX2NvbG9yX2VudikK Kwl7CisJCWlmIChzdHJjbXAocGdfY29sb3JfZW52LCAiYWx3YXlzIikgPT0gMCB8fAorCQkJ KHN0cmNtcChwZ19jb2xvcl9lbnYsICJhdXRvIikgPT0gMCAmJiBpc2F0dHkoZmlsZW5vKHN0 ZGVycikpKSkKKwkJCWxvZ19jb2xvciA9IHRydWU7CisJfQorfQorCit2b2lkCitwZ19sb2dn aW5nX2NvbmZpZyhpbnQgbmV3X2ZsYWdzKQoreworCWxvZ19mbGFncyA9IG5ld19mbGFnczsK K30KKwordm9pZAorcGdfbG9nZ2luZ19zZXRfbGV2ZWwoZW51bSBwZ19sb2dfbGV2ZWwgbmV3 X2xldmVsKQoreworCV9fcGdfbG9nX2xldmVsID0gbmV3X2xldmVsOworfQorCit2b2lkCitw Z19sb2dnaW5nX3NldF9wcmVfY2FsbGJhY2sodm9pZCAoKmNiKSh2b2lkKSkKK3sKKwlsb2df cHJlX2NhbGxiYWNrID0gY2I7Cit9CisKK3ZvaWQKK3BnX2xvZ2dpbmdfc2V0X2xvY3VzX2Nh bGxiYWNrKHZvaWQgKCpjYikoY29uc3QgY2hhciAqKmZpbGVuYW1lLCB1aW50NjQgKmxpbmVu bykpCit7CisJbG9nX2xvY3VzX2NhbGxiYWNrID0gY2I7Cit9CisKK3ZvaWQKK3BnX2xvZ19n ZW5lcmljKGVudW0gcGdfbG9nX2xldmVsIGxldmVsLCBjb25zdCBjaGFyICogcGdfcmVzdHJp Y3QgZm10LCAuLi4pCit7CisJaW50CQkJc2F2ZV9lcnJubyA9IGVycm5vOworCWNvbnN0IGNo YXIgKmZpbGVuYW1lID0gTlVMTDsKKwl1aW50NjQJCWxpbmVubyA9IDA7CisJdmFfbGlzdAkJ YXA7CisJc2l6ZV90CQlyZXF1aXJlZF9sZW47CisJY2hhcgkgICAqYnVmOworCisJQXNzZXJ0 KHByb2duYW1lKTsKKwlBc3NlcnQobGV2ZWwpOworCUFzc2VydChmbXQpOworCUFzc2VydChm bXRbc3RybGVuKGZtdCkgLSAxXSAhPSAnXG4nKTsKKworCWZmbHVzaChzdGRvdXQpOworCWlm IChsb2dfcHJlX2NhbGxiYWNrKQorCQlsb2dfcHJlX2NhbGxiYWNrKCk7CisKKwlpZiAobG9n X2xvY3VzX2NhbGxiYWNrKQorCQlsb2dfbG9jdXNfY2FsbGJhY2soJmZpbGVuYW1lLCAmbGlu ZW5vKTsKKworCWZtdCA9IF8oZm10KTsKKworCWlmIChsb2dfY29sb3IpCisJCWZwcmludGYo c3RkZXJyLCBBTlNJX0VTQ0FQRV9GTVQsIHNncl9sb2N1cyk7CisJaWYgKCEobG9nX2ZsYWdz ICYgUEdfTE9HX0ZMQUdfVEVSU0UpKQorCQlmcHJpbnRmKHN0ZGVyciwgIiVzOiIsIHByb2du YW1lKTsKKwlpZiAoZmlsZW5hbWUpCisJeworCQlmcHJpbnRmKHN0ZGVyciwgIiVzOiIsIGZp bGVuYW1lKTsKKwkJaWYgKGxpbmVubyA+IDApCisJCQlmcHJpbnRmKHN0ZGVyciwgVUlOVDY0 X0ZPUk1BVCAiOiIsIGxpbmVubyk7CisJfQorCWlmICghKGxvZ19mbGFncyAmIFBHX0xPR19G TEFHX1RFUlNFKSB8fCBmaWxlbmFtZSkKKwkJZnByaW50ZihzdGRlcnIsICIgIik7CisJaWYg KGxvZ19jb2xvcikKKwkJZnByaW50ZihzdGRlcnIsIEFOU0lfRVNDQVBFX1JFU0VUKTsKKwor CWlmICghKGxvZ19mbGFncyAmIFBHX0xPR19GTEFHX1RFUlNFKSkKKwlzd2l0Y2ggKGxldmVs KQorCXsKKwkJY2FzZSBQR19MT0dfRkFUQUw6CisJCQlpZiAobG9nX2NvbG9yKQorCQkJCWZw cmludGYoc3RkZXJyLCBBTlNJX0VTQ0FQRV9GTVQsIHNncl9lcnJvcik7CisJCQlmcHJpbnRm KHN0ZGVyciwgXygiZmF0YWw6ICIpKTsKKwkJCWlmIChsb2dfY29sb3IpCisJCQkJZnByaW50 ZihzdGRlcnIsIEFOU0lfRVNDQVBFX1JFU0VUKTsKKwkJCWJyZWFrOworCQljYXNlIFBHX0xP R19FUlJPUjoKKwkJCWlmIChsb2dfY29sb3IpCisJCQkJZnByaW50ZihzdGRlcnIsIEFOU0lf RVNDQVBFX0ZNVCwgc2dyX2Vycm9yKTsKKwkJCWZwcmludGYoc3RkZXJyLCBfKCJlcnJvcjog IikpOworCQkJaWYgKGxvZ19jb2xvcikKKwkJCQlmcHJpbnRmKHN0ZGVyciwgQU5TSV9FU0NB UEVfUkVTRVQpOworCQkJYnJlYWs7CisJCWNhc2UgUEdfTE9HX1dBUk5JTkc6CisJCQlpZiAo bG9nX2NvbG9yKQorCQkJCWZwcmludGYoc3RkZXJyLCBBTlNJX0VTQ0FQRV9GTVQsIHNncl93 YXJuaW5nKTsKKwkJCWZwcmludGYoc3RkZXJyLCBfKCJ3YXJuaW5nOiAiKSk7CisJCQlpZiAo bG9nX2NvbG9yKQorCQkJCWZwcmludGYoc3RkZXJyLCBBTlNJX0VTQ0FQRV9SRVNFVCk7CisJ CQlicmVhazsKKwkJZGVmYXVsdDoKKwkJCWJyZWFrOworCX0KKworCWVycm5vID0gc2F2ZV9l cnJubzsKKworCXZhX3N0YXJ0KGFwLCBmbXQpOworCXJlcXVpcmVkX2xlbiA9IHZzbnByaW50 ZihOVUxMLCAwLCBmbXQsIGFwKSArIDE7CisJdmFfZW5kKGFwKTsKKworCWJ1ZiA9IHBnX21h bGxvY19leHRlbmRlZChyZXF1aXJlZF9sZW4sIE1DWFRfQUxMT0NfTk9fT09NKTsKKworCWlm ICghYnVmKQorCXsKKwkJLyogbWVtb3J5IHRyb3VibGUsIGp1c3QgcHJpbnQgd2hhdCB3ZSBj YW4gYW5kIGdldCBvdXQgb2YgaGVyZSAqLworCQl2YV9zdGFydChhcCwgZm10KTsKKwkJdmZw cmludGYoc3RkZXJyLCBmbXQsIGFwKTsKKwkJdmFfZW5kKGFwKTsKKwkJcmV0dXJuOworCX0K KworCXZhX3N0YXJ0KGFwLCBmbXQpOworCXZzbnByaW50ZihidWYsIHJlcXVpcmVkX2xlbiwg Zm10LCBhcCk7CisJdmFfZW5kKGFwKTsKKworCS8qIHN0cmlwIG9uZSBuZXdsaW5lLCBmb3Ig UFFlcnJvck1lc3NhZ2UoKSAqLworCWlmIChidWZbcmVxdWlyZWRfbGVuIC0gMl0gPT0gJ1xu JykKKwkJYnVmW3JlcXVpcmVkX2xlbiAtIDJdID0gJ1wwJzsKKworCWZwcmludGYoc3RkZXJy LCAiJXNcbiIsIGJ1Zik7CisJZnJlZShidWYpOworfQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvZmVfdXRpbHMvbG9nZ2luZy5oIGIvc3JjL2luY2x1ZGUvZmVfdXRpbHMvbG9nZ2luZy5o Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjliNTc4ZDQ2MzMKLS0t IC9kZXYvbnVsbAorKysgYi9zcmMvaW5jbHVkZS9mZV91dGlscy9sb2dnaW5nLmgKQEAgLTAs MCArMSw5NCBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBMb2dnaW5nIGZyYW1ld29y ayBmb3IgZnJvbnRlbmQgcHJvZ3JhbXMKKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTgsIFBv c3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKgorICogc3JjL2luY2x1ZGUv ZmVfdXRpbHMvbG9nZ2luZy5oCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKyNp Zm5kZWYgRkVfVVRJTFNfTE9HR0lOR19ICisjZGVmaW5lIEZFX1VUSUxTX0xPR0dJTkdfSAor CisvKgorICogTG9nIGxldmVscyBhcmUgaW5mb3JtYXRpb25hbCBvbmx5LiAgVGhleSBkbyBu b3QgYWZmZWN0IHByb2dyYW0gZmxvdy4KKyAqLworZW51bSBwZ19sb2dfbGV2ZWwKK3sKKwkv KgorCSAqIE5vdCBpbml0aWFsaXplZCB5ZXQKKwkgKi8KKwlQR19MT0dfTk9UU0VUID0gMCwK KworCS8qCisJICogTG93IGxldmVsIG1lc3NhZ2VzIHRoYXQgYXJlIG5vcm1hbGx5IG9mZiBi eSBkZWZhdWx0LgorCSAqLworCVBHX0xPR19ERUJVRywKKworCS8qCisJICogQW55IHByb2dy YW0gbWVzc2FnZXMgdGhhdCBnbyB0byBzdGRlcnIsIHNob3duIGJ5IGRlZmF1bHQuICAoVGhl CisJICogcHJvZ3JhbSdzIG5vcm1hbCBvdXRwdXQgc2hvdWxkIGdvIHRvIHN0ZG91dCBhbmQg bm90IHVzZSB0aGUgbG9nZ2luZworCSAqIHN5c3RlbS4pCisJICovCisJUEdfTE9HX0lORk8s CisKKwkvKgorCSAqIFdhcm5pbmdzIGFuZCAiYWxtb3N0IiBlcnJvcnMsIGRlcGVuZHMgb24g dGhlIHByb2dyYW0KKwkgKi8KKwlQR19MT0dfV0FSTklORywKKworCS8qCisJICogRXJyb3Jz CisJICovCisJUEdfTE9HX0VSUk9SLAorCisJLyoKKwkgKiBTZXZlcmUgZXJyb3JzIHRoYXQg Y2F1c2UgcHJvZ3JhbSB0ZXJtaW5hdGlvbi4gIChPbmUtc2hvdCBwcm9ncmFtcyBtYXkKKwkg KiBjaG9zZSB0byBsYWJlbCBldmVuIGZhdGFsIGVycm9ycyBhcyBtZXJlbHkgImVycm9ycyIu ICBUaGUgZGlzdGluY3Rpb24KKwkgKiBpcyB1cCB0byB0aGUgcHJvZ3JhbS4pCisJICovCisJ UEdfTE9HX0ZBVEFMLAorCisJLyoKKwkgKiBUdXJuIGFsbCBsb2dnaW5nIG9mZi4KKwkgKi8K KwlQR19MT0dfT0ZGLAorfTsKKworZXh0ZXJuIGVudW0gcGdfbG9nX2xldmVsIF9fcGdfbG9n X2xldmVsOworCisvKgorICogS2luZCBvZiBhIGhhY2sgdG8gYmUgYWJsZSB0byBwcm9kdWNl IHRoZSBwc3FsIG91dHB1dCBleGFjdGx5IGFzIHJlcXVpcmVkIGJ5CisgKiB0aGUgcmVncmVz c2lvbiB0ZXN0cy4KKyAqLworI2RlZmluZSBQR19MT0dfRkxBR19URVJTRQkxCisKK3ZvaWQg cGdfbG9nZ2luZ19pbml0KGNvbnN0IGNoYXIgKmFyZ3YwKTsKK3ZvaWQgcGdfbG9nZ2luZ19j b25maWcoaW50IG5ld19mbGFncyk7Cit2b2lkIHBnX2xvZ2dpbmdfc2V0X2xldmVsKGVudW0g cGdfbG9nX2xldmVsIG5ld19sZXZlbCk7Cit2b2lkIHBnX2xvZ2dpbmdfc2V0X3ByZV9jYWxs YmFjayh2b2lkICgqY2IpKHZvaWQpKTsKK3ZvaWQgcGdfbG9nZ2luZ19zZXRfbG9jdXNfY2Fs bGJhY2sodm9pZCAoKmNiKShjb25zdCBjaGFyICoqZmlsZW5hbWUsIHVpbnQ2NCAqbGluZW5v KSk7CisKK3ZvaWQgcGdfbG9nX2dlbmVyaWMoZW51bSBwZ19sb2dfbGV2ZWwgbGV2ZWwsIGNv bnN0IGNoYXIgKiBwZ19yZXN0cmljdCBmbXQsIC4uLikgcGdfYXR0cmlidXRlX3ByaW50Zigy LCAzKTsKKworI2RlZmluZSBwZ19sb2dfZmF0YWwoLi4uKSBkbyB7IFwKKwkJaWYgKGxpa2Vs eShfX3BnX2xvZ19sZXZlbCA8PSBQR19MT0dfRkFUQUwpKSBwZ19sb2dfZ2VuZXJpYyhQR19M T0dfRkFUQUwsIF9fVkFfQVJHU19fKTsgXAorCX0gd2hpbGUoMCkKKworI2RlZmluZSBwZ19s b2dfZXJyb3IoLi4uKSBkbyB7IFwKKwkJaWYgKGxpa2VseShfX3BnX2xvZ19sZXZlbCA8PSBQ R19MT0dfRVJST1IpKSBwZ19sb2dfZ2VuZXJpYyhQR19MT0dfRVJST1IsIF9fVkFfQVJHU19f KTsgXAorCX0gd2hpbGUoMCkKKworI2RlZmluZSBwZ19sb2dfd2FybmluZyguLi4pIGRvIHsg XAorCQlpZiAobGlrZWx5KF9fcGdfbG9nX2xldmVsIDw9IFBHX0xPR19XQVJOSU5HKSkgcGdf bG9nX2dlbmVyaWMoUEdfTE9HX1dBUk5JTkcsIF9fVkFfQVJHU19fKTsgXAorCX0gd2hpbGUo MCkKKworI2RlZmluZSBwZ19sb2dfaW5mbyguLi4pIGRvIHsgXAorCQlpZiAobGlrZWx5KF9f cGdfbG9nX2xldmVsIDw9IFBHX0xPR19JTkZPKSkgcGdfbG9nX2dlbmVyaWMoUEdfTE9HX0lO Rk8sIF9fVkFfQVJHU19fKTsgXAorCX0gd2hpbGUoMCkKKworI2RlZmluZSBwZ19sb2dfZGVi dWcoLi4uKSBkbyB7IFwKKwkJaWYgKHVubGlrZWx5KF9fcGdfbG9nX2xldmVsIDw9IFBHX0xP R19ERUJVRykpIHBnX2xvZ19nZW5lcmljKFBHX0xPR19ERUJVRywgX19WQV9BUkdTX18pOyBc CisJfSB3aGlsZSgwKQorCisjZW5kaWYJLyogRkVfVVRJTFNfTE9HR0lOR19IICovCmRpZmYg LS1naXQgYS9zcmMvbmxzLWdsb2JhbC5tayBiL3NyYy9ubHMtZ2xvYmFsLm1rCmluZGV4IDRm Yzk5Mzc5OTEuLmM1MDJhYzNmYzkgMTAwNjQ0Ci0tLSBhL3NyYy9ubHMtZ2xvYmFsLm1rCisr KyBiL3NyYy9ubHMtZ2xvYmFsLm1rCkBAIC02Nyw2ICs2NywxNCBAQCBCQUNLRU5EX0NPTU1P Tl9HRVRURVhUX0ZMQUdTID0gXAogICAgIGVycmhpbnQ6MTpjLWZvcm1hdCBcCiAgICAgZXJy Y29udGV4dDoxOmMtZm9ybWF0CiAKK0ZST05URU5EX0NPTU1PTl9HRVRURVhUX0ZJTEVTID0g JCh0b3Bfc3JjZGlyKS9zcmMvZmVfdXRpbHMvbG9nZ2luZy5jCisKK0ZST05URU5EX0NPTU1P Tl9HRVRURVhUX1RSSUdHRVJTID0gXAorICAgIHBnX2xvZ19mYXRhbCBwZ19sb2dfZXJyb3Ig cGdfbG9nX3dhcm5pbmcgcGdfbG9nX2luZm8KKworRlJPTlRFTkRfQ09NTU9OX0dFVFRFWFRf RkxBR1MgPSBcCisgICAgcGdfbG9nX2ZhdGFsOjE6Yy1mb3JtYXQgcGdfbG9nX2Vycm9yOjE6 Yy1mb3JtYXQgcGdfbG9nX3dhcm5pbmc6MTpjLWZvcm1hdCBwZ19sb2dfaW5mbzoxOmMtZm9y bWF0CisKIAogYWxsLXBvOiAkKE1PX0ZJTEVTKQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC91dGlscy9taXNjL3BnX2NvbnRyb2xkYXRhLmMgYi9zcmMvYmFja2VuZC91dGlscy9taXNj L3BnX2NvbnRyb2xkYXRhLmMKaW5kZXggYTM3Njg3NTI2OS4uYjY2OTI3N2E0MyAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wZ19jb250cm9sZGF0YS5jCisrKyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL21pc2MvcGdfY29udHJvbGRhdGEuYwpAQCAtNTMsNyArNTMsNyBA QCBwZ19jb250cm9sX3N5c3RlbShQR19GVU5DVElPTl9BUkdTKQogCXR1cGRlc2MgPSBCbGVz c1R1cGxlRGVzYyh0dXBkZXNjKTsKIAogCS8qIHJlYWQgdGhlIGNvbnRyb2wgZmlsZSAqLwot CUNvbnRyb2xGaWxlID0gZ2V0X2NvbnRyb2xmaWxlKERhdGFEaXIsIE5VTEwsICZjcmNfb2sp OworCUNvbnRyb2xGaWxlID0gZ2V0X2NvbnRyb2xmaWxlKERhdGFEaXIsICZjcmNfb2spOwog CWlmICghY3JjX29rKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJtc2coImNhbGN1bGF0 ZWQgQ1JDIGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIHZhbHVlIHN0b3JlZCBpbiBmaWxlIikp KTsKQEAgLTEzMSw3ICsxMzEsNyBAQCBwZ19jb250cm9sX2NoZWNrcG9pbnQoUEdfRlVOQ1RJ T05fQVJHUykKIAl0dXBkZXNjID0gQmxlc3NUdXBsZURlc2ModHVwZGVzYyk7CiAKIAkvKiBS ZWFkIHRoZSBjb250cm9sIGZpbGUuICovCi0JQ29udHJvbEZpbGUgPSBnZXRfY29udHJvbGZp bGUoRGF0YURpciwgTlVMTCwgJmNyY19vayk7CisJQ29udHJvbEZpbGUgPSBnZXRfY29udHJv bGZpbGUoRGF0YURpciwgJmNyY19vayk7CiAJaWYgKCFjcmNfb2spCiAJCWVyZXBvcnQoRVJS T1IsCiAJCQkJKGVycm1zZygiY2FsY3VsYXRlZCBDUkMgY2hlY2tzdW0gZG9lcyBub3QgbWF0 Y2ggdmFsdWUgc3RvcmVkIGluIGZpbGUiKSkpOwpAQCAtMjM1LDcgKzIzNSw3IEBAIHBnX2Nv bnRyb2xfcmVjb3ZlcnkoUEdfRlVOQ1RJT05fQVJHUykKIAl0dXBkZXNjID0gQmxlc3NUdXBs ZURlc2ModHVwZGVzYyk7CiAKIAkvKiByZWFkIHRoZSBjb250cm9sIGZpbGUgKi8KLQlDb250 cm9sRmlsZSA9IGdldF9jb250cm9sZmlsZShEYXRhRGlyLCBOVUxMLCAmY3JjX29rKTsKKwlD b250cm9sRmlsZSA9IGdldF9jb250cm9sZmlsZShEYXRhRGlyLCAmY3JjX29rKTsKIAlpZiAo IWNyY19vaykKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJybXNnKCJjYWxjdWxhdGVkIENS QyBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCB2YWx1ZSBzdG9yZWQgaW4gZmlsZSIpKSk7CkBA IC0zMDIsNyArMzAyLDcgQEAgcGdfY29udHJvbF9pbml0KFBHX0ZVTkNUSU9OX0FSR1MpCiAJ dHVwZGVzYyA9IEJsZXNzVHVwbGVEZXNjKHR1cGRlc2MpOwogCiAJLyogcmVhZCB0aGUgY29u dHJvbCBmaWxlICovCi0JQ29udHJvbEZpbGUgPSBnZXRfY29udHJvbGZpbGUoRGF0YURpciwg TlVMTCwgJmNyY19vayk7CisJQ29udHJvbEZpbGUgPSBnZXRfY29udHJvbGZpbGUoRGF0YURp ciwgJmNyY19vayk7CiAJaWYgKCFjcmNfb2spCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVy cm1zZygiY2FsY3VsYXRlZCBDUkMgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggdmFsdWUgc3Rv cmVkIGluIGZpbGUiKSkpOwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9pbml0ZGIvaW5pdGRiLmMg Yi9zcmMvYmluL2luaXRkYi9pbml0ZGIuYwppbmRleCAwMTdjMTFiYzk0Li5kYjljOGIyNDIw IDEwMDY0NAotLS0gYS9zcmMvYmluL2luaXRkYi9pbml0ZGIuYworKysgYi9zcmMvYmluL2lu aXRkYi9pbml0ZGIuYwpAQCAtNjcsNiArNjcsNyBAQAogI2luY2x1ZGUgImNvbW1vbi9maWxl X3V0aWxzLmgiCiAjaW5jbHVkZSAiY29tbW9uL3Jlc3RyaWN0ZWRfdG9rZW4uaCIKICNpbmNs dWRlICJjb21tb24vdXNlcm5hbWUuaCIKKyNpbmNsdWRlICJmZV91dGlscy9sb2dnaW5nLmgi CiAjaW5jbHVkZSAiZmVfdXRpbHMvc3RyaW5nX3V0aWxzLmgiCiAjaW5jbHVkZSAiZ2V0YWRk cmluZm8uaCIKICNpbmNsdWRlICJnZXRvcHRfbG9uZy5oIgpAQCAtMTg0LDcgKzE4NSw3IEBA IHN0YXRpYyBjb25zdCBjaGFyICpkZWZhdWx0X3RpbWV6b25lID0gTlVMTDsKICIjIGFsbG93 cyBhbnkgbG9jYWwgdXNlciB0byBjb25uZWN0IGFzIGFueSBQb3N0Z3JlU1FMIHVzZXIsIGlu Y2x1ZGluZ1xuIiBcCiAiIyB0aGUgZGF0YWJhc2Ugc3VwZXJ1c2VyLiAgSWYgeW91IGRvIG5v dCB0cnVzdCBhbGwgeW91ciBsb2NhbCB1c2VycyxcbiIgXAogIiMgdXNlIGFub3RoZXIgYXV0 aGVudGljYXRpb24gbWV0aG9kLlxuIgotc3RhdGljIGNoYXIgKmF1dGh3YXJuaW5nID0gTlVM TDsKK3N0YXRpYyBib29sCWF1dGh3YXJuaW5nID0gZmFsc2U7CiAKIC8qCiAgKiBDZW50cmFs aXplZCBrbm93bGVkZ2Ugb2Ygc3dpdGNoZXMgdG8gcGFzcyB0byBiYWNrZW5kCkBAIC0zMzcs NyArMzM4LDcgQEAgZXNjYXBlX3F1b3Rlcyhjb25zdCBjaGFyICpzcmMpCiAKIAlpZiAoIXJl c3VsdCkKIAl7Ci0JCWZwcmludGYoc3RkZXJyLCBfKCIlczogb3V0IG9mIG1lbW9yeVxuIiks IHByb2duYW1lKTsKKwkJcGdfbG9nX2Vycm9yKCJvdXQgb2YgbWVtb3J5Iik7CiAJCWV4aXQo MSk7CiAJfQogCXJldHVybiByZXN1bHQ7CkBAIC00OTMsOCArNDk0LDcgQEAgcmVhZGZpbGUo Y29uc3QgY2hhciAqcGF0aCkKIAogCWlmICgoaW5maWxlID0gZm9wZW4ocGF0aCwgInIiKSkg PT0gTlVMTCkKIAl7Ci0JCWZwcmludGYoc3RkZXJyLCBfKCIlczogY291bGQgbm90IG9wZW4g ZmlsZSBcIiVzXCIgZm9yIHJlYWRpbmc6ICVzXG4iKSwKLQkJCQlwcm9nbmFtZSwgcGF0aCwg c3RyZXJyb3IoZXJybm8pKTsKKwkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3Qgb3BlbiBmaWxl IFwiJXNcIiBmb3IgcmVhZGluZzogJW0iLCBwYXRoKTsKIAkJZXhpdF9uaWNlbHkoKTsKIAl9 CiAKQEAgLTU0OSwyNCArNTQ5LDIxIEBAIHdyaXRlZmlsZShjaGFyICpwYXRoLCBjaGFyICoq bGluZXMpCiAKIAlpZiAoKG91dF9maWxlID0gZm9wZW4ocGF0aCwgInciKSkgPT0gTlVMTCkK IAl7Ci0JCWZwcmludGYoc3RkZXJyLCBfKCIlczogY291bGQgbm90IG9wZW4gZmlsZSBcIiVz XCIgZm9yIHdyaXRpbmc6ICVzXG4iKSwKLQkJCQlwcm9nbmFtZSwgcGF0aCwgc3RyZXJyb3Io ZXJybm8pKTsKKwkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3Qgb3BlbiBmaWxlIFwiJXNcIiBm b3Igd3JpdGluZzogJW0iLCBwYXRoKTsKIAkJZXhpdF9uaWNlbHkoKTsKIAl9CiAJZm9yIChs aW5lID0gbGluZXM7ICpsaW5lICE9IE5VTEw7IGxpbmUrKykKIAl7CiAJCWlmIChmcHV0cygq bGluZSwgb3V0X2ZpbGUpIDwgMCkKIAkJewotCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBj b3VsZCBub3Qgd3JpdGUgZmlsZSBcIiVzXCI6ICVzXG4iKSwKLQkJCQkJcHJvZ25hbWUsIHBh dGgsIHN0cmVycm9yKGVycm5vKSk7CisJCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCB3cml0 ZSBmaWxlIFwiJXNcIjogJW0iLCBwYXRoKTsKIAkJCWV4aXRfbmljZWx5KCk7CiAJCX0KIAkJ ZnJlZSgqbGluZSk7CiAJfQogCWlmIChmY2xvc2Uob3V0X2ZpbGUpKQogCXsKLQkJZnByaW50 ZihzdGRlcnIsIF8oIiVzOiBjb3VsZCBub3Qgd3JpdGUgZmlsZSBcIiVzXCI6ICVzXG4iKSwK LQkJCQlwcm9nbmFtZSwgcGF0aCwgc3RyZXJyb3IoZXJybm8pKTsKKwkJcGdfbG9nX2Vycm9y KCJjb3VsZCBub3Qgd3JpdGUgZmlsZSBcIiVzXCI6ICVtIiwgcGF0aCk7CiAJCWV4aXRfbmlj ZWx5KCk7CiAJfQogfQpAQCAtNTg0LDggKzU4MSw3IEBAIHBvcGVuX2NoZWNrKGNvbnN0IGNo YXIgKmNvbW1hbmQsIGNvbnN0IGNoYXIgKm1vZGUpCiAJZXJybm8gPSAwOwogCWNtZGZkID0g cG9wZW4oY29tbWFuZCwgbW9kZSk7CiAJaWYgKGNtZGZkID09IE5VTEwpCi0JCWZwcmludGYo c3RkZXJyLCBfKCIlczogY291bGQgbm90IGV4ZWN1dGUgY29tbWFuZCBcIiVzXCI6ICVzXG4i KSwKLQkJCQlwcm9nbmFtZSwgY29tbWFuZCwgc3RyZXJyb3IoZXJybm8pKTsKKwkJcGdfbG9n X2Vycm9yKCJjb3VsZCBub3QgZXhlY3V0ZSBjb21tYW5kIFwiJXNcIjogJW0iLCBjb21tYW5k KTsKIAlyZXR1cm4gY21kZmQ7CiB9CiAKQEAgLTYwMCw1MiArNTk2LDQxIEBAIGV4aXRfbmlj ZWx5KHZvaWQpCiAJewogCQlpZiAobWFkZV9uZXdfcGdkYXRhKQogCQl7Ci0JCQlmcHJpbnRm KHN0ZGVyciwgXygiJXM6IHJlbW92aW5nIGRhdGEgZGlyZWN0b3J5IFwiJXNcIlxuIiksCi0J CQkJCXByb2duYW1lLCBwZ19kYXRhKTsKKwkJCXBnX2xvZ19pbmZvKCJyZW1vdmluZyBkYXRh IGRpcmVjdG9yeSBcIiVzXCIiLCBwZ19kYXRhKTsKIAkJCWlmICghcm10cmVlKHBnX2RhdGEs IHRydWUpKQotCQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczogZmFpbGVkIHRvIHJlbW92ZSBk YXRhIGRpcmVjdG9yeVxuIiksCi0JCQkJCQlwcm9nbmFtZSk7CisJCQkJcGdfbG9nX2Vycm9y KCJmYWlsZWQgdG8gcmVtb3ZlIGRhdGEgZGlyZWN0b3J5Iik7CiAJCX0KIAkJZWxzZSBpZiAo Zm91bmRfZXhpc3RpbmdfcGdkYXRhKQogCQl7Ci0JCQlmcHJpbnRmKHN0ZGVyciwKLQkJCQkJ XygiJXM6IHJlbW92aW5nIGNvbnRlbnRzIG9mIGRhdGEgZGlyZWN0b3J5IFwiJXNcIlxuIiks Ci0JCQkJCXByb2duYW1lLCBwZ19kYXRhKTsKKwkJCXBnX2xvZ19pbmZvKCJyZW1vdmluZyBj b250ZW50cyBvZiBkYXRhIGRpcmVjdG9yeSBcIiVzXCIiLAorCQkJCQkJcGdfZGF0YSk7CiAJ CQlpZiAoIXJtdHJlZShwZ19kYXRhLCBmYWxzZSkpCi0JCQkJZnByaW50ZihzdGRlcnIsIF8o IiVzOiBmYWlsZWQgdG8gcmVtb3ZlIGNvbnRlbnRzIG9mIGRhdGEgZGlyZWN0b3J5XG4iKSwK LQkJCQkJCXByb2duYW1lKTsKKwkJCQlwZ19sb2dfZXJyb3IoImZhaWxlZCB0byByZW1vdmUg Y29udGVudHMgb2YgZGF0YSBkaXJlY3RvcnkiKTsKIAkJfQogCiAJCWlmIChtYWRlX25ld194 bG9nZGlyKQogCQl7Ci0JCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IHJlbW92aW5nIFdBTCBk aXJlY3RvcnkgXCIlc1wiXG4iKSwKLQkJCQkJcHJvZ25hbWUsIHhsb2dfZGlyKTsKKwkJCXBn X2xvZ19pbmZvKCJyZW1vdmluZyBXQUwgZGlyZWN0b3J5IFwiJXNcIiIsIHhsb2dfZGlyKTsK IAkJCWlmICghcm10cmVlKHhsb2dfZGlyLCB0cnVlKSkKLQkJCQlmcHJpbnRmKHN0ZGVyciwg XygiJXM6IGZhaWxlZCB0byByZW1vdmUgV0FMIGRpcmVjdG9yeVxuIiksCi0JCQkJCQlwcm9n bmFtZSk7CisJCQkJcGdfbG9nX2Vycm9yKCJmYWlsZWQgdG8gcmVtb3ZlIFdBTCBkaXJlY3Rv cnkiKTsKIAkJfQogCQllbHNlIGlmIChmb3VuZF9leGlzdGluZ194bG9nZGlyKQogCQl7Ci0J CQlmcHJpbnRmKHN0ZGVyciwKLQkJCQkJXygiJXM6IHJlbW92aW5nIGNvbnRlbnRzIG9mIFdB TCBkaXJlY3RvcnkgXCIlc1wiXG4iKSwKLQkJCQkJcHJvZ25hbWUsIHhsb2dfZGlyKTsKKwkJ CXBnX2xvZ19pbmZvKCJyZW1vdmluZyBjb250ZW50cyBvZiBXQUwgZGlyZWN0b3J5IFwiJXNc IiIsIHhsb2dfZGlyKTsKIAkJCWlmICghcm10cmVlKHhsb2dfZGlyLCBmYWxzZSkpCi0JCQkJ ZnByaW50ZihzdGRlcnIsIF8oIiVzOiBmYWlsZWQgdG8gcmVtb3ZlIGNvbnRlbnRzIG9mIFdB TCBkaXJlY3RvcnlcbiIpLAotCQkJCQkJcHJvZ25hbWUpOworCQkJCXBnX2xvZ19lcnJvcigi ZmFpbGVkIHRvIHJlbW92ZSBjb250ZW50cyBvZiBXQUwgZGlyZWN0b3J5Iik7CiAJCX0KIAkJ Lyogb3RoZXJ3aXNlIGRpZWQgZHVyaW5nIHN0YXJ0dXAsIGRvIG5vdGhpbmchICovCiAJfQog CWVsc2UKIAl7CiAJCWlmIChtYWRlX25ld19wZ2RhdGEgfHwgZm91bmRfZXhpc3RpbmdfcGdk YXRhKQotCQkJZnByaW50ZihzdGRlcnIsCi0JCQkJCV8oIiVzOiBkYXRhIGRpcmVjdG9yeSBc IiVzXCIgbm90IHJlbW92ZWQgYXQgdXNlcidzIHJlcXVlc3RcbiIpLAotCQkJCQlwcm9nbmFt ZSwgcGdfZGF0YSk7CisJCQlwZ19sb2dfaW5mbygiZGF0YSBkaXJlY3RvcnkgXCIlc1wiIG5v dCByZW1vdmVkIGF0IHVzZXIncyByZXF1ZXN0IiwKKwkJCQkJCXBnX2RhdGEpOwogCiAJCWlm IChtYWRlX25ld194bG9nZGlyIHx8IGZvdW5kX2V4aXN0aW5nX3hsb2dkaXIpCi0JCQlmcHJp bnRmKHN0ZGVyciwKLQkJCQkJXygiJXM6IFdBTCBkaXJlY3RvcnkgXCIlc1wiIG5vdCByZW1v dmVkIGF0IHVzZXIncyByZXF1ZXN0XG4iKSwKLQkJCQkJcHJvZ25hbWUsIHhsb2dfZGlyKTsK KwkJCXBnX2xvZ19pbmZvKCJXQUwgZGlyZWN0b3J5IFwiJXNcIiBub3QgcmVtb3ZlZCBhdCB1 c2VyJ3MgcmVxdWVzdCIsCisJCQkJCQl4bG9nX2Rpcik7CiAJfQogCiAJZXhpdCgxKTsKQEAg LTY2NCwxMiArNjQ5LDEwIEBAIGdldF9pZCh2b2lkKQogI2lmbmRlZiBXSU4zMgogCWlmIChn ZXRldWlkKCkgPT0gMCkJCQkvKiAwIGlzIHJvb3QncyB1aWQgKi8KIAl7CisJCXBnX2xvZ19l cnJvcigiY2Fubm90IGJlIHJ1biBhcyByb290Iik7CiAJCWZwcmludGYoc3RkZXJyLAotCQkJ CV8oIiVzOiBjYW5ub3QgYmUgcnVuIGFzIHJvb3RcbiIKLQkJCQkgICJQbGVhc2UgbG9nIGlu ICh1c2luZywgZS5nLiwgXCJzdVwiKSBhcyB0aGUgIgotCQkJCSAgIih1bnByaXZpbGVnZWQp IHVzZXIgdGhhdCB3aWxsXG4iCi0JCQkJICAib3duIHRoZSBzZXJ2ZXIgcHJvY2Vzcy5cbiIp LAotCQkJCXByb2duYW1lKTsKKwkJCQlfKCJQbGVhc2UgbG9nIGluICh1c2luZywgZS5nLiwg XCJzdVwiKSBhcyB0aGUgKHVucHJpdmlsZWdlZCkgdXNlciB0aGF0IHdpbGxcbiIKKwkJCQkg ICJvd24gdGhlIHNlcnZlciBwcm9jZXNzLlxuIikpOwogCQlleGl0KDEpOwogCX0KICNlbmRp ZgpAQCAtNzAxLDggKzY4NCw4IEBAIGdldF9lbmNvZGluZ19pZChjb25zdCBjaGFyICplbmNv ZGluZ19uYW1lKQogCQlpZiAoKGVuYyA9IHBnX3ZhbGlkX3NlcnZlcl9lbmNvZGluZyhlbmNv ZGluZ19uYW1lKSkgPj0gMCkKIAkJCXJldHVybiBlbmM7CiAJfQotCWZwcmludGYoc3RkZXJy LCBfKCIlczogXCIlc1wiIGlzIG5vdCBhIHZhbGlkIHNlcnZlciBlbmNvZGluZyBuYW1lXG4i KSwKLQkJCXByb2duYW1lLCBlbmNvZGluZ19uYW1lID8gZW5jb2RpbmdfbmFtZSA6ICIobnVs bCkiKTsKKwlwZ19sb2dfZXJyb3IoIlwiJXNcIiBpcyBub3QgYSB2YWxpZCBzZXJ2ZXIgZW5j b2RpbmcgbmFtZSIsCisJCQkJIGVuY29kaW5nX25hbWUgPyBlbmNvZGluZ19uYW1lIDogIihu dWxsKSIpOwogCWV4aXQoMSk7CiB9CiAKQEAgLTgzMiwxNyArODE1LDE0IEBAIGNoZWNrX2lu cHV0KGNoYXIgKnBhdGgpCiAJewogCQlpZiAoZXJybm8gPT0gRU5PRU5UKQogCQl7Ci0JCQlm cHJpbnRmKHN0ZGVyciwKLQkJCQkJXygiJXM6IGZpbGUgXCIlc1wiIGRvZXMgbm90IGV4aXN0 XG4iKSwgcHJvZ25hbWUsIHBhdGgpOworCQkJcGdfbG9nX2Vycm9yKCJmaWxlIFwiJXNcIiBk b2VzIG5vdCBleGlzdCIsIHBhdGgpOwogCQkJZnByaW50ZihzdGRlcnIsCiAJCQkJCV8oIlRo aXMgbWlnaHQgbWVhbiB5b3UgaGF2ZSBhIGNvcnJ1cHRlZCBpbnN0YWxsYXRpb24gb3IgaWRl bnRpZmllZFxuIgogCQkJCQkgICJ0aGUgd3JvbmcgZGlyZWN0b3J5IHdpdGggdGhlIGludm9j YXRpb24gb3B0aW9uIC1MLlxuIikpOwogCQl9CiAJCWVsc2UKIAkJewotCQkJZnByaW50Zihz dGRlcnIsCi0JCQkJCV8oIiVzOiBjb3VsZCBub3QgYWNjZXNzIGZpbGUgXCIlc1wiOiAlc1xu IiksIHByb2duYW1lLCBwYXRoLAotCQkJCQlzdHJlcnJvcihlcnJubykpOworCQkJcGdfbG9n X2Vycm9yKCJjb3VsZCBub3QgYWNjZXNzIGZpbGUgXCIlc1wiOiAlbSIsIHBhdGgpOwogCQkJ ZnByaW50ZihzdGRlcnIsCiAJCQkJCV8oIlRoaXMgbWlnaHQgbWVhbiB5b3UgaGF2ZSBhIGNv cnJ1cHRlZCBpbnN0YWxsYXRpb24gb3IgaWRlbnRpZmllZFxuIgogCQkJCQkgICJ0aGUgd3Jv bmcgZGlyZWN0b3J5IHdpdGggdGhlIGludm9jYXRpb24gb3B0aW9uIC1MLlxuIikpOwpAQCAt ODUxLDggKzgzMSw3IEBAIGNoZWNrX2lucHV0KGNoYXIgKnBhdGgpCiAJfQogCWlmICghU19J U1JFRyhzdGF0YnVmLnN0X21vZGUpKQogCXsKLQkJZnByaW50ZihzdGRlcnIsCi0JCQkJXygi JXM6IGZpbGUgXCIlc1wiIGlzIG5vdCBhIHJlZ3VsYXIgZmlsZVxuIiksIHByb2duYW1lLCBw YXRoKTsKKwkJcGdfbG9nX2Vycm9yKCJmaWxlIFwiJXNcIiBpcyBub3QgYSByZWd1bGFyIGZp bGUiLCBwYXRoKTsKIAkJZnByaW50ZihzdGRlcnIsCiAJCQkJXygiVGhpcyBtaWdodCBtZWFu IHlvdSBoYXZlIGEgY29ycnVwdGVkIGluc3RhbGxhdGlvbiBvciBpZGVudGlmaWVkXG4iCiAJ CQkJICAidGhlIHdyb25nIGRpcmVjdG9yeSB3aXRoIHRoZSBpbnZvY2F0aW9uIG9wdGlvbiAt TC5cbiIpKTsKQEAgLTg3NywxNSArODU2LDEzIEBAIHdyaXRlX3ZlcnNpb25fZmlsZShjb25z dCBjaGFyICpleHRyYXBhdGgpCiAKIAlpZiAoKHZlcnNpb25fZmlsZSA9IGZvcGVuKHBhdGgs IFBHX0JJTkFSWV9XKSkgPT0gTlVMTCkKIAl7Ci0JCWZwcmludGYoc3RkZXJyLCBfKCIlczog Y291bGQgbm90IG9wZW4gZmlsZSBcIiVzXCIgZm9yIHdyaXRpbmc6ICVzXG4iKSwKLQkJCQlw cm9nbmFtZSwgcGF0aCwgc3RyZXJyb3IoZXJybm8pKTsKKwkJcGdfbG9nX2Vycm9yKCJjb3Vs ZCBub3Qgb3BlbiBmaWxlIFwiJXNcIiBmb3Igd3JpdGluZzogJW0iLCBwYXRoKTsKIAkJZXhp dF9uaWNlbHkoKTsKIAl9CiAJaWYgKGZwcmludGYodmVyc2lvbl9maWxlLCAiJXNcbiIsIFBH X01BSk9SVkVSU0lPTikgPCAwIHx8CiAJCWZjbG9zZSh2ZXJzaW9uX2ZpbGUpKQogCXsKLQkJ ZnByaW50ZihzdGRlcnIsIF8oIiVzOiBjb3VsZCBub3Qgd3JpdGUgZmlsZSBcIiVzXCI6ICVz XG4iKSwKLQkJCQlwcm9nbmFtZSwgcGF0aCwgc3RyZXJyb3IoZXJybm8pKTsKKwkJcGdfbG9n X2Vycm9yKCJjb3VsZCBub3Qgd3JpdGUgZmlsZSBcIiVzXCI6ICVtIiwgcGF0aCk7CiAJCWV4 aXRfbmljZWx5KCk7CiAJfQogCWZyZWUocGF0aCk7CkBAIC05MDUsMTQgKzg4MiwxMiBAQCBz ZXRfbnVsbF9jb25mKHZvaWQpCiAJY29uZl9maWxlID0gZm9wZW4ocGF0aCwgUEdfQklOQVJZ X1cpOwogCWlmIChjb25mX2ZpbGUgPT0gTlVMTCkKIAl7Ci0JCWZwcmludGYoc3RkZXJyLCBf KCIlczogY291bGQgbm90IG9wZW4gZmlsZSBcIiVzXCIgZm9yIHdyaXRpbmc6ICVzXG4iKSwK LQkJCQlwcm9nbmFtZSwgcGF0aCwgc3RyZXJyb3IoZXJybm8pKTsKKwkJcGdfbG9nX2Vycm9y KCJjb3VsZCBub3Qgb3BlbiBmaWxlIFwiJXNcIiBmb3Igd3JpdGluZzogJW0iLCBwYXRoKTsK IAkJZXhpdF9uaWNlbHkoKTsKIAl9CiAJaWYgKGZjbG9zZShjb25mX2ZpbGUpKQogCXsKLQkJ ZnByaW50ZihzdGRlcnIsIF8oIiVzOiBjb3VsZCBub3Qgd3JpdGUgZmlsZSBcIiVzXCI6ICVz XG4iKSwKLQkJCQlwcm9nbmFtZSwgcGF0aCwgc3RyZXJyb3IoZXJybm8pKTsKKwkJcGdfbG9n X2Vycm9yKCJjb3VsZCBub3Qgd3JpdGUgZmlsZSBcIiVzXCI6ICVtIiwgcGF0aCk7CiAJCWV4 aXRfbmljZWx5KCk7CiAJfQogCWZyZWUocGF0aCk7CkBAIC0xMjYyLDggKzEyMzcsNyBAQCBz ZXR1cF9jb25maWcodm9pZCkKIAl3cml0ZWZpbGUocGF0aCwgY29uZmxpbmVzKTsKIAlpZiAo Y2htb2QocGF0aCwgcGdfZmlsZV9jcmVhdGVfbW9kZSkgIT0gMCkKIAl7Ci0JCWZwcmludGYo c3RkZXJyLCBfKCIlczogY291bGQgbm90IGNoYW5nZSBwZXJtaXNzaW9ucyBvZiBcIiVzXCI6 ICVzXG4iKSwKLQkJCQlwcm9nbmFtZSwgcGF0aCwgc3RyZXJyb3IoZXJybm8pKTsKKwkJcGdf bG9nX2Vycm9yKCJjb3VsZCBub3QgY2hhbmdlIHBlcm1pc3Npb25zIG9mIFwiJXNcIjogJW0i LCBwYXRoKTsKIAkJZXhpdF9uaWNlbHkoKTsKIAl9CiAKQEAgLTEyODIsOCArMTI1Niw3IEBA IHNldHVwX2NvbmZpZyh2b2lkKQogCXdyaXRlZmlsZShwYXRoLCBhdXRvY29uZmxpbmVzKTsK IAlpZiAoY2htb2QocGF0aCwgcGdfZmlsZV9jcmVhdGVfbW9kZSkgIT0gMCkKIAl7Ci0JCWZw cmludGYoc3RkZXJyLCBfKCIlczogY291bGQgbm90IGNoYW5nZSBwZXJtaXNzaW9ucyBvZiBc IiVzXCI6ICVzXG4iKSwKLQkJCQlwcm9nbmFtZSwgcGF0aCwgc3RyZXJyb3IoZXJybm8pKTsK KwkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgY2hhbmdlIHBlcm1pc3Npb25zIG9mIFwiJXNc IjogJW0iLCBwYXRoKTsKIAkJZXhpdF9uaWNlbHkoKTsKIAl9CiAKQEAgLTEzNjksOCArMTM0 Miw3IEBAIHNldHVwX2NvbmZpZyh2b2lkKQogCXdyaXRlZmlsZShwYXRoLCBjb25mbGluZXMp OwogCWlmIChjaG1vZChwYXRoLCBwZ19maWxlX2NyZWF0ZV9tb2RlKSAhPSAwKQogCXsKLQkJ ZnByaW50ZihzdGRlcnIsIF8oIiVzOiBjb3VsZCBub3QgY2hhbmdlIHBlcm1pc3Npb25zIG9m IFwiJXNcIjogJXNcbiIpLAotCQkJCXByb2duYW1lLCBwYXRoLCBzdHJlcnJvcihlcnJubykp OworCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBjaGFuZ2UgcGVybWlzc2lvbnMgb2YgXCIl c1wiOiAlbSIsIHBhdGgpOwogCQlleGl0X25pY2VseSgpOwogCX0KIApAQCAtMTM4NSw4ICsx MzU3LDcgQEAgc2V0dXBfY29uZmlnKHZvaWQpCiAJd3JpdGVmaWxlKHBhdGgsIGNvbmZsaW5l cyk7CiAJaWYgKGNobW9kKHBhdGgsIHBnX2ZpbGVfY3JlYXRlX21vZGUpICE9IDApCiAJewot CQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCBjaGFuZ2UgcGVybWlzc2lvbnMg b2YgXCIlc1wiOiAlc1xuIiksCi0JCQkJcHJvZ25hbWUsIHBhdGgsIHN0cmVycm9yKGVycm5v KSk7CisJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IGNoYW5nZSBwZXJtaXNzaW9ucyBvZiBc IiVzXCI6ICVtIiwgcGF0aCk7CiAJCWV4aXRfbmljZWx5KCk7CiAJfQogCkBAIC0xNDIwLDEx ICsxMzkxLDkgQEAgYm9vdHN0cmFwX3RlbXBsYXRlMSh2b2lkKQogCiAJaWYgKHN0cmNtcCho ZWFkZXJsaW5lLCAqYmtpX2xpbmVzKSAhPSAwKQogCXsKLQkJZnByaW50ZihzdGRlcnIsCi0J CQkJXygiJXM6IGlucHV0IGZpbGUgXCIlc1wiIGRvZXMgbm90IGJlbG9uZyB0byBQb3N0Z3Jl U1FMICVzXG4iCi0JCQkJICAiQ2hlY2sgeW91ciBpbnN0YWxsYXRpb24gb3Igc3BlY2lmeSB0 aGUgY29ycmVjdCBwYXRoICIKLQkJCQkgICJ1c2luZyB0aGUgb3B0aW9uIC1MLlxuIiksCi0J CQkJcHJvZ25hbWUsIGJraV9maWxlLCBQR19WRVJTSU9OKTsKKwkJcGdfbG9nX2Vycm9yKCJp bnB1dCBmaWxlIFwiJXNcIiBkb2VzIG5vdCBiZWxvbmcgdG8gUG9zdGdyZVNRTCAlcyIsCisJ CQkJCSBia2lfZmlsZSwgUEdfVkVSU0lPTik7CisJCWZwcmludGYoc3RkZXJyLCBfKCJDaGVj ayB5b3VyIGluc3RhbGxhdGlvbiBvciBzcGVjaWZ5IHRoZSBjb3JyZWN0IHBhdGggdXNpbmcg dGhlIG9wdGlvbiAtTC5cbiIpKTsKIAkJZXhpdF9uaWNlbHkoKTsKIAl9CiAKQEAgLTE1NjEs MTggKzE1MzAsMTggQEAgZ2V0X3N1X3B3ZCh2b2lkKQogCiAJCWlmICghcHdmKQogCQl7Ci0J CQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCBvcGVuIGZpbGUgXCIlc1wiIGZv ciByZWFkaW5nOiAlc1xuIiksCi0JCQkJCXByb2duYW1lLCBwd2ZpbGVuYW1lLCBzdHJlcnJv cihlcnJubykpOworCQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3Qgb3BlbiBmaWxlIFwiJXNc IiBmb3IgcmVhZGluZzogJW0iLAorCQkJCQkJIHB3ZmlsZW5hbWUpOwogCQkJZXhpdF9uaWNl bHkoKTsKIAkJfQogCQlpZiAoIWZnZXRzKHB3ZDEsIHNpemVvZihwd2QxKSwgcHdmKSkKIAkJ ewogCQkJaWYgKGZlcnJvcihwd2YpKQotCQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczogY291 bGQgbm90IHJlYWQgcGFzc3dvcmQgZnJvbSBmaWxlIFwiJXNcIjogJXNcbiIpLAotCQkJCQkJ cHJvZ25hbWUsIHB3ZmlsZW5hbWUsIHN0cmVycm9yKGVycm5vKSk7CisJCQkJcGdfbG9nX2Vy cm9yKCJjb3VsZCBub3QgcmVhZCBwYXNzd29yZCBmcm9tIGZpbGUgXCIlc1wiOiAlbSIsCisJ CQkJCQkJIHB3ZmlsZW5hbWUpOwogCQkJZWxzZQotCQkJCWZwcmludGYoc3RkZXJyLCBfKCIl czogcGFzc3dvcmQgZmlsZSBcIiVzXCIgaXMgZW1wdHlcbiIpLAotCQkJCQkJcHJvZ25hbWUs IHB3ZmlsZW5hbWUpOworCQkJCXBnX2xvZ19lcnJvcigicGFzc3dvcmQgZmlsZSBcIiVzXCIg aXMgZW1wdHkiLAorCQkJCQkJCSBwd2ZpbGVuYW1lKTsKIAkJCWV4aXRfbmljZWx5KCk7CiAJ CX0KIAkJZmNsb3NlKHB3Zik7CkBAIC0yMjU4LDggKzIyMjcsNyBAQCBjaGVja19sb2NhbGVf bmFtZShpbnQgY2F0ZWdvcnksIGNvbnN0IGNoYXIgKmxvY2FsZSwgY2hhciAqKmNhbm9ubmFt ZSkKIAlzYXZlID0gc2V0bG9jYWxlKGNhdGVnb3J5LCBOVUxMKTsKIAlpZiAoIXNhdmUpCiAJ ewotCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IHNldGxvY2FsZSgpIGZhaWxlZFxuIiksCi0J CQkJcHJvZ25hbWUpOworCQlwZ19sb2dfZXJyb3IoInNldGxvY2FsZSgpIGZhaWxlZCIpOwog CQlleGl0KDEpOwogCX0KIApAQCAtMjI4MCw4ICsyMjQ4LDcgQEAgY2hlY2tfbG9jYWxlX25h bWUoaW50IGNhdGVnb3J5LCBjb25zdCBjaGFyICpsb2NhbGUsIGNoYXIgKipjYW5vbm5hbWUp CiAJLyogcmVzdG9yZSBvbGQgdmFsdWUuICovCiAJaWYgKCFzZXRsb2NhbGUoY2F0ZWdvcnks IHNhdmUpKQogCXsKLQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBmYWlsZWQgdG8gcmVzdG9y ZSBvbGQgbG9jYWxlIFwiJXNcIlxuIiksCi0JCQkJcHJvZ25hbWUsIHNhdmUpOworCQlwZ19s b2dfZXJyb3IoImZhaWxlZCB0byByZXN0b3JlIG9sZCBsb2NhbGUgXCIlc1wiIiwgc2F2ZSk7 CiAJCWV4aXQoMSk7CiAJfQogCWZyZWUoc2F2ZSk7CkBAIC0yMjkwLDggKzIyNTcsNyBAQCBj aGVja19sb2NhbGVfbmFtZShpbnQgY2F0ZWdvcnksIGNvbnN0IGNoYXIgKmxvY2FsZSwgY2hh ciAqKmNhbm9ubmFtZSkKIAlpZiAocmVzID09IE5VTEwpCiAJewogCQlpZiAoKmxvY2FsZSkK LQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczogaW52YWxpZCBsb2NhbGUgbmFtZSBcIiVzXCJc biIpLAotCQkJCQlwcm9nbmFtZSwgbG9jYWxlKTsKKwkJCXBnX2xvZ19lcnJvcigiaW52YWxp ZCBsb2NhbGUgbmFtZSBcIiVzXCIiLCBsb2NhbGUpOwogCQllbHNlCiAJCXsKIAkJCS8qCkBA IC0yMzAyLDggKzIyNjgsNyBAQCBjaGVja19sb2NhbGVfbmFtZShpbnQgY2F0ZWdvcnksIGNv bnN0IGNoYXIgKmxvY2FsZSwgY2hhciAqKmNhbm9ubmFtZSkKIAkJCSAqIHNldGxvY2FsZSdz IGJlaGF2aW9yIGlzIGltcGxlbWVudGF0aW9uLXNwZWNpZmljLCBpdCdzIGhhcmQgdG8KIAkJ CSAqIGJlIHN1cmUgd2hhdCBpdCBkaWRuJ3QgbGlrZS4gIFByaW50IGEgc2FmZSBnZW5lcmlj IG1lc3NhZ2UuCiAJCQkgKi8KLQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczogaW52YWxpZCBs b2NhbGUgc2V0dGluZ3M7IGNoZWNrIExBTkcgYW5kIExDXyogZW52aXJvbm1lbnQgdmFyaWFi bGVzXG4iKSwKLQkJCQkJcHJvZ25hbWUpOworCQkJcGdfbG9nX2Vycm9yKCJpbnZhbGlkIGxv Y2FsZSBzZXR0aW5nczsgY2hlY2sgTEFORyBhbmQgTENfKiBlbnZpcm9ubWVudCB2YXJpYWJs ZXMiKTsKIAkJfQogCQlleGl0KDEpOwogCX0KQEAgLTIzMzAsNyArMjI5NSw3IEBAIGNoZWNr X2xvY2FsZV9lbmNvZGluZyhjb25zdCBjaGFyICpsb2NhbGUsIGludCB1c2VyX2VuYykKICNl bmRpZgogCQkgIHVzZXJfZW5jID09IFBHX1NRTF9BU0NJSSkpCiAJewotCQlmcHJpbnRmKHN0 ZGVyciwgXygiJXM6IGVuY29kaW5nIG1pc21hdGNoXG4iKSwgcHJvZ25hbWUpOworCQlwZ19s b2dfZXJyb3IoImVuY29kaW5nIG1pc21hdGNoIik7CiAJCWZwcmludGYoc3RkZXJyLAogCQkJ CV8oIlRoZSBlbmNvZGluZyB5b3Ugc2VsZWN0ZWQgKCVzKSBhbmQgdGhlIGVuY29kaW5nIHRo YXQgdGhlXG4iCiAJCQkJICAic2VsZWN0ZWQgbG9jYWxlIHVzZXMgKCVzKSBkbyBub3QgbWF0 Y2guICBUaGlzIHdvdWxkIGxlYWQgdG9cbiIKQEAgLTI0NDgsOSArMjQxMyw3IEBAIGNoZWNr X2F1dGhtZXRob2RfdW5zcGVjaWZpZWQoY29uc3QgY2hhciAqKmF1dGhtZXRob2QpCiB7CiAJ aWYgKCphdXRobWV0aG9kID09IE5VTEwpCiAJewotCQlhdXRod2FybmluZyA9IF8oIlxuV0FS TklORzogZW5hYmxpbmcgXCJ0cnVzdFwiIGF1dGhlbnRpY2F0aW9uIGZvciBsb2NhbCBjb25u ZWN0aW9uc1xuIgotCQkJCQkJIllvdSBjYW4gY2hhbmdlIHRoaXMgYnkgZWRpdGluZyBwZ19o YmEuY29uZiBvciB1c2luZyB0aGUgb3B0aW9uIC1BLCBvclxuIgotCQkJCQkJIi0tYXV0aC1s b2NhbCBhbmQgLS1hdXRoLWhvc3QsIHRoZSBuZXh0IHRpbWUgeW91IHJ1biBpbml0ZGIuXG4i KTsKKwkJYXV0aHdhcm5pbmcgPSB0cnVlOwogCQkqYXV0aG1ldGhvZCA9ICJ0cnVzdCI7CiAJ fQogfQpAQCAtMjQ3MCw4ICsyNDMzLDggQEAgY2hlY2tfYXV0aG1ldGhvZF92YWxpZChjb25z dCBjaGFyICphdXRobWV0aG9kLCBjb25zdCBjaGFyICpjb25zdCAqdmFsaWRfbWV0aG9kcywK IAkJCQlyZXR1cm47CiAJfQogCi0JZnByaW50ZihzdGRlcnIsIF8oIiVzOiBpbnZhbGlkIGF1 dGhlbnRpY2F0aW9uIG1ldGhvZCBcIiVzXCIgZm9yIFwiJXNcIiBjb25uZWN0aW9uc1xuIiks Ci0JCQlwcm9nbmFtZSwgYXV0aG1ldGhvZCwgY29ubnR5cGUpOworCXBnX2xvZ19lcnJvcigi aW52YWxpZCBhdXRoZW50aWNhdGlvbiBtZXRob2QgXCIlc1wiIGZvciBcIiVzXCIgY29ubmVj dGlvbnMiLAorCQkJCSBhdXRobWV0aG9kLCBjb25udHlwZSk7CiAJZXhpdCgxKTsKIH0KIApA QCAtMjQ4Niw3ICsyNDQ5LDcgQEAgY2hlY2tfbmVlZF9wYXNzd29yZChjb25zdCBjaGFyICph dXRobWV0aG9kbG9jYWwsIGNvbnN0IGNoYXIgKmF1dGhtZXRob2Rob3N0KQogCQkgc3RyY21w KGF1dGhtZXRob2Rob3N0LCAic2NyYW0tc2hhLTI1NiIpID09IDApICYmCiAJCSEocHdwcm9t cHQgfHwgcHdmaWxlbmFtZSkpCiAJewotCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IG11c3Qg c3BlY2lmeSBhIHBhc3N3b3JkIGZvciB0aGUgc3VwZXJ1c2VyIHRvIGVuYWJsZSAlcyBhdXRo ZW50aWNhdGlvblxuIiksIHByb2duYW1lLAorCQlwZ19sb2dfZXJyb3IoIm11c3Qgc3BlY2lm eSBhIHBhc3N3b3JkIGZvciB0aGUgc3VwZXJ1c2VyIHRvIGVuYWJsZSAlcyBhdXRoZW50aWNh dGlvbiIsCiAJCQkJKHN0cmNtcChhdXRobWV0aG9kbG9jYWwsICJtZDUiKSA9PSAwIHx8CiAJ CQkJIHN0cmNtcChhdXRobWV0aG9kbG9jYWwsICJwYXNzd29yZCIpID09IDAgfHwKIAkJCQkg c3RyY21wKGF1dGhtZXRob2Rsb2NhbCwgInNjcmFtLXNoYS0yNTYiKSA9PSAwKQpAQCAtMjUx MywxMiArMjQ3NiwxMSBAQCBzZXR1cF9wZ2RhdGEodm9pZCkKIAkJfQogCQllbHNlCiAJCXsK KwkJCXBnX2xvZ19lcnJvcigibm8gZGF0YSBkaXJlY3Rvcnkgc3BlY2lmaWVkIik7CiAJCQlm cHJpbnRmKHN0ZGVyciwKLQkJCQkJXygiJXM6IG5vIGRhdGEgZGlyZWN0b3J5IHNwZWNpZmll ZFxuIgotCQkJCQkgICJZb3UgbXVzdCBpZGVudGlmeSB0aGUgZGlyZWN0b3J5IHdoZXJlIHRo ZSBkYXRhIGZvciB0aGlzIGRhdGFiYXNlIHN5c3RlbVxuIgorCQkJCQlfKCJZb3UgbXVzdCBp ZGVudGlmeSB0aGUgZGlyZWN0b3J5IHdoZXJlIHRoZSBkYXRhIGZvciB0aGlzIGRhdGFiYXNl IHN5c3RlbVxuIgogCQkJCQkgICJ3aWxsIHJlc2lkZS4gIERvIHRoaXMgd2l0aCBlaXRoZXIg dGhlIGludm9jYXRpb24gb3B0aW9uIC1EIG9yIHRoZVxuIgotCQkJCQkgICJlbnZpcm9ubWVu dCB2YXJpYWJsZSBQR0RBVEEuXG4iKSwKLQkJCQkJcHJvZ25hbWUpOworCQkJCQkgICJlbnZp cm9ubWVudCB2YXJpYWJsZSBQR0RBVEEuXG4iKSk7CiAJCQlleGl0KDEpOwogCQl9CiAJfQpA QCAtMjU1MSwxOCArMjUxMywxNSBAQCBzZXR1cF9iaW5fcGF0aHMoY29uc3QgY2hhciAqYXJn djApCiAJCQlzdHJsY3B5KGZ1bGxfcGF0aCwgcHJvZ25hbWUsIHNpemVvZihmdWxsX3BhdGgp KTsKIAogCQlpZiAocmV0ID09IC0xKQotCQkJZnByaW50ZihzdGRlcnIsCi0JCQkJCV8oIlRo ZSBwcm9ncmFtIFwicG9zdGdyZXNcIiBpcyBuZWVkZWQgYnkgJXMgIgotCQkJCQkgICJidXQg d2FzIG5vdCBmb3VuZCBpbiB0aGVcbiIKLQkJCQkJICAic2FtZSBkaXJlY3RvcnkgYXMgXCIl c1wiLlxuIgotCQkJCQkgICJDaGVjayB5b3VyIGluc3RhbGxhdGlvbi5cbiIpLAotCQkJCQlw cm9nbmFtZSwgZnVsbF9wYXRoKTsKKwkJCXBnX2xvZ19lcnJvcigiVGhlIHByb2dyYW0gXCJw b3N0Z3Jlc1wiIGlzIG5lZWRlZCBieSAlcyBidXQgd2FzIG5vdCBmb3VuZCBpbiB0aGVcbiIK KwkJCQkJCSAic2FtZSBkaXJlY3RvcnkgYXMgXCIlc1wiLlxuIgorCQkJCQkJICJDaGVjayB5 b3VyIGluc3RhbGxhdGlvbi4iLAorCQkJCQkJIGZ1bGxfcGF0aCwgcHJvZ25hbWUpOwogCQll bHNlCi0JCQlmcHJpbnRmKHN0ZGVyciwKLQkJCQkJXygiVGhlIHByb2dyYW0gXCJwb3N0Z3Jl c1wiIHdhcyBmb3VuZCBieSBcIiVzXCJcbiIKLQkJCQkJICAiYnV0IHdhcyBub3QgdGhlIHNh bWUgdmVyc2lvbiBhcyAlcy5cbiIKLQkJCQkJICAiQ2hlY2sgeW91ciBpbnN0YWxsYXRpb24u XG4iKSwKLQkJCQkJZnVsbF9wYXRoLCBwcm9nbmFtZSk7CisJCQlwZ19sb2dfZXJyb3IoIlRo ZSBwcm9ncmFtIFwicG9zdGdyZXNcIiB3YXMgZm91bmQgYnkgXCIlc1wiXG4iCisJCQkJCQkg ImJ1dCB3YXMgbm90IHRoZSBzYW1lIHZlcnNpb24gYXMgJXMuXG4iCisJCQkJCQkgIkNoZWNr IHlvdXIgaW5zdGFsbGF0aW9uLiIsCisJCQkJCQkgZnVsbF9wYXRoLCBwcm9nbmFtZSk7CiAJ CWV4aXQoMSk7CiAJfQogCkBAIC0yNTc4LDcgKzI1MzcsNyBAQCBzZXR1cF9iaW5fcGF0aHMo Y29uc3QgY2hhciAqYXJndjApCiAJfQogCWVsc2UgaWYgKCFpc19hYnNvbHV0ZV9wYXRoKHNo YXJlX3BhdGgpKQogCXsKLQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBpbnB1dCBmaWxlIGxv Y2F0aW9uIG11c3QgYmUgYW4gYWJzb2x1dGUgcGF0aFxuIiksIHByb2duYW1lKTsKKwkJcGdf bG9nX2Vycm9yKCJpbnB1dCBmaWxlIGxvY2F0aW9uIG11c3QgYmUgYW4gYWJzb2x1dGUgcGF0 aCIpOwogCQlleGl0KDEpOwogCX0KIApAQCAtMjYyMiw4ICsyNTgxLDggQEAgc2V0dXBfbG9j YWxlX2VuY29kaW5nKHZvaWQpCiAJCWlmIChjdHlwZV9lbmMgPT0gLTEpCiAJCXsKIAkJCS8q IENvdWxkbid0IHJlY29nbml6ZSB0aGUgbG9jYWxlJ3MgY29kZXNldCAqLwotCQkJZnByaW50 ZihzdGRlcnIsIF8oIiVzOiBjb3VsZCBub3QgZmluZCBzdWl0YWJsZSBlbmNvZGluZyBmb3Ig bG9jYWxlIFwiJXNcIlxuIiksCi0JCQkJCXByb2duYW1lLCBsY19jdHlwZSk7CisJCQlwZ19s b2dfZXJyb3IoImNvdWxkIG5vdCBmaW5kIHN1aXRhYmxlIGVuY29kaW5nIGZvciBsb2NhbGUg XCIlc1wiIiwKKwkJCQkJCSBsY19jdHlwZSk7CiAJCQlmcHJpbnRmKHN0ZGVyciwgXygiUmVy dW4gJXMgd2l0aCB0aGUgLUUgb3B0aW9uLlxuIiksIHByb2duYW1lKTsKIAkJCWZwcmludGYo c3RkZXJyLCBfKCJUcnkgXCIlcyAtLWhlbHBcIiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiIp LAogCQkJCQlwcm9nbmFtZSk7CkBAIC0yNjQzLDkgKzI2MDIsOCBAQCBzZXR1cF9sb2NhbGVf ZW5jb2Rpbmcodm9pZCkKIAkJCQkgICBwZ19lbmNvZGluZ190b19jaGFyKGN0eXBlX2VuYyks CiAJCQkJICAgcGdfZW5jb2RpbmdfdG9fY2hhcihlbmNvZGluZ2lkKSk7CiAjZWxzZQotCQkJ ZnByaW50ZihzdGRlcnIsCi0JCQkJCV8oIiVzOiBsb2NhbGUgXCIlc1wiIHJlcXVpcmVzIHVu c3VwcG9ydGVkIGVuY29kaW5nIFwiJXNcIlxuIiksCi0JCQkJCXByb2duYW1lLCBsY19jdHlw ZSwgcGdfZW5jb2RpbmdfdG9fY2hhcihjdHlwZV9lbmMpKTsKKwkJCXBnX2xvZ19lcnJvcigi bG9jYWxlIFwiJXNcIiByZXF1aXJlcyB1bnN1cHBvcnRlZCBlbmNvZGluZyBcIiVzXCIiLAor CQkJCQkJIGxjX2N0eXBlLCBwZ19lbmNvZGluZ190b19jaGFyKGN0eXBlX2VuYykpOwogCQkJ ZnByaW50ZihzdGRlcnIsCiAJCQkJCV8oIkVuY29kaW5nIFwiJXNcIiBpcyBub3QgYWxsb3dl ZCBhcyBhIHNlcnZlci1zaWRlIGVuY29kaW5nLlxuIgogCQkJCQkgICJSZXJ1biAlcyB3aXRo IGEgZGlmZmVyZW50IGxvY2FsZSBzZWxlY3Rpb24uXG4iKSwKQEAgLTI3OTcsOCArMjc1NSw3 IEBAIGNyZWF0ZV9kYXRhX2RpcmVjdG9yeSh2b2lkKQogCiAJCQlpZiAocGdfbWtkaXJfcChw Z19kYXRhLCBwZ19kaXJfY3JlYXRlX21vZGUpICE9IDApCiAJCQl7Ci0JCQkJZnByaW50Zihz dGRlcnIsIF8oIiVzOiBjb3VsZCBub3QgY3JlYXRlIGRpcmVjdG9yeSBcIiVzXCI6ICVzXG4i KSwKLQkJCQkJCXByb2duYW1lLCBwZ19kYXRhLCBzdHJlcnJvcihlcnJubykpOworCQkJCXBn X2xvZ19lcnJvcigiY291bGQgbm90IGNyZWF0ZSBkaXJlY3RvcnkgXCIlc1wiOiAlbSIsIHBn X2RhdGEpOwogCQkJCWV4aXRfbmljZWx5KCk7CiAJCQl9CiAJCQllbHNlCkBAIC0yODE1LDgg KzI3NzIsOCBAQCBjcmVhdGVfZGF0YV9kaXJlY3Rvcnkodm9pZCkKIAogCQkJaWYgKGNobW9k KHBnX2RhdGEsIHBnX2Rpcl9jcmVhdGVfbW9kZSkgIT0gMCkKIAkJCXsKLQkJCQlmcHJpbnRm KHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCBjaGFuZ2UgcGVybWlzc2lvbnMgb2YgZGlyZWN0 b3J5IFwiJXNcIjogJXNcbiIpLAotCQkJCQkJcHJvZ25hbWUsIHBnX2RhdGEsIHN0cmVycm9y KGVycm5vKSk7CisJCQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgY2hhbmdlIHBlcm1pc3Np b25zIG9mIGRpcmVjdG9yeSBcIiVzXCI6ICVtIiwKKwkJCQkJCQkgcGdfZGF0YSk7CiAJCQkJ ZXhpdF9uaWNlbHkoKTsKIAkJCX0KIAkJCWVsc2UKQEAgLTI4MjksOSArMjc4Niw3IEBAIGNy ZWF0ZV9kYXRhX2RpcmVjdG9yeSh2b2lkKQogCQljYXNlIDM6CiAJCWNhc2UgNDoKIAkJCS8q IFByZXNlbnQgYW5kIG5vdCBlbXB0eSAqLwotCQkJZnByaW50ZihzdGRlcnIsCi0JCQkJCV8o IiVzOiBkaXJlY3RvcnkgXCIlc1wiIGV4aXN0cyBidXQgaXMgbm90IGVtcHR5XG4iKSwKLQkJ CQkJcHJvZ25hbWUsIHBnX2RhdGEpOworCQkJcGdfbG9nX2Vycm9yKCJkaXJlY3RvcnkgXCIl c1wiIGV4aXN0cyBidXQgaXMgbm90IGVtcHR5IiwgcGdfZGF0YSk7CiAJCQlpZiAocmV0ICE9 IDQpCiAJCQkJd2Fybl9vbl9tb3VudF9wb2ludChyZXQpOwogCQkJZWxzZQpAQCAtMjg0NCw4 ICsyNzk5LDcgQEAgY3JlYXRlX2RhdGFfZGlyZWN0b3J5KHZvaWQpCiAKIAkJZGVmYXVsdDoK IAkJCS8qIFRyb3VibGUgYWNjZXNzaW5nIGRpcmVjdG9yeSAqLwotCQkJZnByaW50ZihzdGRl cnIsIF8oIiVzOiBjb3VsZCBub3QgYWNjZXNzIGRpcmVjdG9yeSBcIiVzXCI6ICVzXG4iKSwK LQkJCQkJcHJvZ25hbWUsIHBnX2RhdGEsIHN0cmVycm9yKGVycm5vKSk7CisJCQlwZ19sb2df ZXJyb3IoImNvdWxkIG5vdCBhY2Nlc3MgZGlyZWN0b3J5IFwiJXNcIjogJW0iLCBwZ19kYXRh KTsKIAkJCWV4aXRfbmljZWx5KCk7CiAJfQogfQpAQCAtMjg2OCw3ICsyODIyLDcgQEAgY3Jl YXRlX3hsb2dfb3Jfc3ltbGluayh2b2lkKQogCQljYW5vbmljYWxpemVfcGF0aCh4bG9nX2Rp cik7CiAJCWlmICghaXNfYWJzb2x1dGVfcGF0aCh4bG9nX2RpcikpCiAJCXsKLQkJCWZwcmlu dGYoc3RkZXJyLCBfKCIlczogV0FMIGRpcmVjdG9yeSBsb2NhdGlvbiBtdXN0IGJlIGFuIGFi c29sdXRlIHBhdGhcbiIpLCBwcm9nbmFtZSk7CisJCQlwZ19sb2dfZXJyb3IoIldBTCBkaXJl Y3RvcnkgbG9jYXRpb24gbXVzdCBiZSBhbiBhYnNvbHV0ZSBwYXRoIik7CiAJCQlleGl0X25p Y2VseSgpOwogCQl9CiAKQEAgLTI4ODMsOCArMjgzNyw4IEBAIGNyZWF0ZV94bG9nX29yX3N5 bWxpbmsodm9pZCkKIAogCQkJCWlmIChwZ19ta2Rpcl9wKHhsb2dfZGlyLCBwZ19kaXJfY3Jl YXRlX21vZGUpICE9IDApCiAJCQkJewotCQkJCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNv dWxkIG5vdCBjcmVhdGUgZGlyZWN0b3J5IFwiJXNcIjogJXNcbiIpLAotCQkJCQkJCXByb2du YW1lLCB4bG9nX2Rpciwgc3RyZXJyb3IoZXJybm8pKTsKKwkJCQkJcGdfbG9nX2Vycm9yKCJj b3VsZCBub3QgY3JlYXRlIGRpcmVjdG9yeSBcIiVzXCI6ICVtIiwKKwkJCQkJCQkJIHhsb2df ZGlyKTsKIAkJCQkJZXhpdF9uaWNlbHkoKTsKIAkJCQl9CiAJCQkJZWxzZQpAQCAtMjkwMSw4 ICsyODU1LDggQEAgY3JlYXRlX3hsb2dfb3Jfc3ltbGluayh2b2lkKQogCiAJCQkJaWYgKGNo bW9kKHhsb2dfZGlyLCBwZ19kaXJfY3JlYXRlX21vZGUpICE9IDApCiAJCQkJewotCQkJCQlm cHJpbnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCBjaGFuZ2UgcGVybWlzc2lvbnMgb2Yg ZGlyZWN0b3J5IFwiJXNcIjogJXNcbiIpLAotCQkJCQkJCXByb2duYW1lLCB4bG9nX2Rpciwg c3RyZXJyb3IoZXJybm8pKTsKKwkJCQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgY2hhbmdl IHBlcm1pc3Npb25zIG9mIGRpcmVjdG9yeSBcIiVzXCI6ICVtIiwKKwkJCQkJCQkJIHhsb2df ZGlyKTsKIAkJCQkJZXhpdF9uaWNlbHkoKTsKIAkJCQl9CiAJCQkJZWxzZQpAQCAtMjkxNSw5 ICsyODY5LDcgQEAgY3JlYXRlX3hsb2dfb3Jfc3ltbGluayh2b2lkKQogCQkJY2FzZSAzOgog CQkJY2FzZSA0OgogCQkJCS8qIFByZXNlbnQgYW5kIG5vdCBlbXB0eSAqLwotCQkJCWZwcmlu dGYoc3RkZXJyLAotCQkJCQkJXygiJXM6IGRpcmVjdG9yeSBcIiVzXCIgZXhpc3RzIGJ1dCBp cyBub3QgZW1wdHlcbiIpLAotCQkJCQkJcHJvZ25hbWUsIHhsb2dfZGlyKTsKKwkJCQlwZ19s b2dfZXJyb3IoImRpcmVjdG9yeSBcIiVzXCIgZXhpc3RzIGJ1dCBpcyBub3QgZW1wdHkiLCB4 bG9nX2Rpcik7CiAJCQkJaWYgKHJldCAhPSA0KQogCQkJCQl3YXJuX29uX21vdW50X3BvaW50 KHJldCk7CiAJCQkJZWxzZQpAQCAtMjkyOSwyMCArMjg4MSwxOSBAQCBjcmVhdGVfeGxvZ19v cl9zeW1saW5rKHZvaWQpCiAKIAkJCWRlZmF1bHQ6CiAJCQkJLyogVHJvdWJsZSBhY2Nlc3Np bmcgZGlyZWN0b3J5ICovCi0JCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBjb3VsZCBub3Qg YWNjZXNzIGRpcmVjdG9yeSBcIiVzXCI6ICVzXG4iKSwKLQkJCQkJCXByb2duYW1lLCB4bG9n X2Rpciwgc3RyZXJyb3IoZXJybm8pKTsKKwkJCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBh Y2Nlc3MgZGlyZWN0b3J5IFwiJXNcIjogJW0iLCB4bG9nX2Rpcik7CiAJCQkJZXhpdF9uaWNl bHkoKTsKIAkJfQogCiAjaWZkZWYgSEFWRV9TWU1MSU5LCiAJCWlmIChzeW1saW5rKHhsb2df ZGlyLCBzdWJkaXJsb2MpICE9IDApCiAJCXsKLQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczog Y291bGQgbm90IGNyZWF0ZSBzeW1ib2xpYyBsaW5rIFwiJXNcIjogJXNcbiIpLAotCQkJCQlw cm9nbmFtZSwgc3ViZGlybG9jLCBzdHJlcnJvcihlcnJubykpOworCQkJcGdfbG9nX2Vycm9y KCJjb3VsZCBub3QgY3JlYXRlIHN5bWJvbGljIGxpbmsgXCIlc1wiOiAlbSIsCisJCQkJCQkg c3ViZGlybG9jKTsKIAkJCWV4aXRfbmljZWx5KCk7CiAJCX0KICNlbHNlCi0JCWZwcmludGYo c3RkZXJyLCBfKCIlczogc3ltbGlua3MgYXJlIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBwbGF0 Zm9ybVxuIiksIHByb2duYW1lKTsKKwkJcGdfbG9nX2Vycm9yKCJzeW1saW5rcyBhcmUgbm90 IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtIik7CiAJCWV4aXRfbmljZWx5KCk7CiAjZW5k aWYKIAl9CkBAIC0yOTUxLDggKzI5MDIsOCBAQCBjcmVhdGVfeGxvZ19vcl9zeW1saW5rKHZv aWQpCiAJCS8qIFdpdGhvdXQgLVggb3B0aW9uLCBqdXN0IG1ha2UgdGhlIHN1YmRpcmVjdG9y eSBub3JtYWxseSAqLwogCQlpZiAobWtkaXIoc3ViZGlybG9jLCBwZ19kaXJfY3JlYXRlX21v ZGUpIDwgMCkKIAkJewotCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBjb3VsZCBub3QgY3Jl YXRlIGRpcmVjdG9yeSBcIiVzXCI6ICVzXG4iKSwKLQkJCQkJcHJvZ25hbWUsIHN1YmRpcmxv Yywgc3RyZXJyb3IoZXJybm8pKTsKKwkJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IGNyZWF0 ZSBkaXJlY3RvcnkgXCIlc1wiOiAlbSIsCisJCQkJCQkgc3ViZGlybG9jKTsKIAkJCWV4aXRf bmljZWx5KCk7CiAJCX0KIAl9CkBAIC0zMDEzLDggKzI5NjQsNyBAQCBpbml0aWFsaXplX2Rh dGFfZGlyZWN0b3J5KHZvaWQpCiAJCSAqLwogCQlpZiAobWtkaXIocGF0aCwgcGdfZGlyX2Ny ZWF0ZV9tb2RlKSA8IDApCiAJCXsKLQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczogY291bGQg bm90IGNyZWF0ZSBkaXJlY3RvcnkgXCIlc1wiOiAlc1xuIiksCi0JCQkJCXByb2duYW1lLCBw YXRoLCBzdHJlcnJvcihlcnJubykpOworCQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgY3Jl YXRlIGRpcmVjdG9yeSBcIiVzXCI6ICVtIiwgcGF0aCk7CiAJCQlleGl0X25pY2VseSgpOwog CQl9CiAKQEAgLTMxNTAsNiArMzEwMCw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3Zb XSkKIAogCXByb2duYW1lID0gZ2V0X3Byb2duYW1lKGFyZ3ZbMF0pOwogCXNldF9wZ2xvY2Fs ZV9wZ3NlcnZpY2UoYXJndlswXSwgUEdfVEVYVERPTUFJTigiaW5pdGRiIikpOworCXBnX2xv Z2dpbmdfaW5pdChhcmd2WzBdKTsKIAogCWlmIChhcmdjID4gMSkKIAl7CkBAIC0zMjg1LDgg KzMyMzYsOCBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAKIAlpZiAob3B0aW5k IDwgYXJnYykKIAl7Ci0JCWZwcmludGYoc3RkZXJyLCBfKCIlczogdG9vIG1hbnkgY29tbWFu ZC1saW5lIGFyZ3VtZW50cyAoZmlyc3QgaXMgXCIlc1wiKVxuIiksCi0JCQkJcHJvZ25hbWUs IGFyZ3Zbb3B0aW5kXSk7CisJCXBnX2xvZ19lcnJvcigidG9vIG1hbnkgY29tbWFuZC1saW5l IGFyZ3VtZW50cyAoZmlyc3QgaXMgXCIlc1wiKSIsCisJCQkJCSBhcmd2W29wdGluZF0pOwog CQlmcHJpbnRmKHN0ZGVyciwgXygiVHJ5IFwiJXMgLS1oZWxwXCIgZm9yIG1vcmUgaW5mb3Jt YXRpb24uXG4iKSwKIAkJCQlwcm9nbmFtZSk7CiAJCWV4aXQoMSk7CkBAIC0zMzAwLDIxICsz MjUxLDIwIEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkJLyogbXVzdCBjaGVj ayB0aGF0IGRpcmVjdG9yeSBpcyByZWFkYWJsZSAqLwogCQlpZiAocGdfY2hlY2tfZGlyKHBn X2RhdGEpIDw9IDApCiAJCXsKLQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczogY291bGQgbm90 IGFjY2VzcyBkaXJlY3RvcnkgXCIlc1wiOiAlc1xuIiksCi0JCQkJCXByb2duYW1lLCBwZ19k YXRhLCBzdHJlcnJvcihlcnJubykpOworCQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgYWNj ZXNzIGRpcmVjdG9yeSBcIiVzXCI6ICVtIiwgcGdfZGF0YSk7CiAJCQlleGl0X25pY2VseSgp OwogCQl9CiAKIAkJZnB1dHMoXygic3luY2luZyBkYXRhIHRvIGRpc2sgLi4uICIpLCBzdGRv dXQpOwogCQlmZmx1c2goc3Rkb3V0KTsKLQkJZnN5bmNfcGdkYXRhKHBnX2RhdGEsIHByb2du YW1lLCBQR19WRVJTSU9OX05VTSk7CisJCWZzeW5jX3BnZGF0YShwZ19kYXRhLCBQR19WRVJT SU9OX05VTSk7CiAJCWNoZWNrX29rKCk7CiAJCXJldHVybiAwOwogCX0KIAogCWlmIChwd3By b21wdCAmJiBwd2ZpbGVuYW1lKQogCXsKLQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBwYXNz d29yZCBwcm9tcHQgYW5kIHBhc3N3b3JkIGZpbGUgY2Fubm90IGJlIHNwZWNpZmllZCB0b2dl dGhlclxuIiksIHByb2duYW1lKTsKKwkJcGdfbG9nX2Vycm9yKCJwYXNzd29yZCBwcm9tcHQg YW5kIHBhc3N3b3JkIGZpbGUgY2Fubm90IGJlIHNwZWNpZmllZCB0b2dldGhlciIpOwogCQll eGl0KDEpOwogCX0KIApAQCAtMzMzOSwyMSArMzI4OSwxNyBAQCBtYWluKGludCBhcmdjLCBj aGFyICphcmd2W10pCiAJCS8qIHZlcmlmeSB0aGF0IHdhbCBzZWdtZW50IHNpemUgaXMgdmFs aWQgKi8KIAkJaWYgKGVuZHB0ciA9PSBzdHJfd2FsX3NlZ21lbnRfc2l6ZV9tYiB8fCAqZW5k cHRyICE9ICdcMCcpCiAJCXsKLQkJCWZwcmludGYoc3RkZXJyLAotCQkJCQlfKCIlczogYXJn dW1lbnQgb2YgLS13YWwtc2Vnc2l6ZSBtdXN0IGJlIGEgbnVtYmVyXG4iKSwKLQkJCQkJcHJv Z25hbWUpOworCQkJcGdfbG9nX2Vycm9yKCJhcmd1bWVudCBvZiAtLXdhbC1zZWdzaXplIG11 c3QgYmUgYSBudW1iZXIiKTsKIAkJCWV4aXQoMSk7CiAJCX0KIAkJaWYgKCFJc1ZhbGlkV2Fs U2VnU2l6ZSh3YWxfc2VnbWVudF9zaXplX21iICogMTAyNCAqIDEwMjQpKQogCQl7Ci0JCQlm cHJpbnRmKHN0ZGVyciwKLQkJCQkJXygiJXM6IGFyZ3VtZW50IG9mIC0td2FsLXNlZ3NpemUg bXVzdCBiZSBhIHBvd2VyIG9mIDIgYmV0d2VlbiAxIGFuZCAxMDI0XG4iKSwKLQkJCQkJcHJv Z25hbWUpOworCQkJcGdfbG9nX2Vycm9yKCJhcmd1bWVudCBvZiAtLXdhbC1zZWdzaXplIG11 c3QgYmUgYSBwb3dlciBvZiAyIGJldHdlZW4gMSBhbmQgMTAyNCIpOwogCQkJZXhpdCgxKTsK IAkJfQogCX0KIAotCWdldF9yZXN0cmljdGVkX3Rva2VuKHByb2duYW1lKTsKKwlnZXRfcmVz dHJpY3RlZF90b2tlbigpOwogCiAJc2V0dXBfcGdkYXRhKCk7CiAKQEAgLTMzNjUsNyArMzMx MSw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAogCWlmIChzdHJuY21wKHVz ZXJuYW1lLCAicGdfIiwgMykgPT0gMCkKIAl7Ci0JCWZwcmludGYoc3RkZXJyLCBfKCIlczog c3VwZXJ1c2VyIG5hbWUgXCIlc1wiIGlzIGRpc2FsbG93ZWQ7IHJvbGUgbmFtZXMgY2Fubm90 IGJlZ2luIHdpdGggXCJwZ19cIlxuIiksIHByb2duYW1lLCB1c2VybmFtZSk7CisJCXBnX2xv Z19lcnJvcigic3VwZXJ1c2VyIG5hbWUgXCIlc1wiIGlzIGRpc2FsbG93ZWQ7IHJvbGUgbmFt ZXMgY2Fubm90IGJlZ2luIHdpdGggXCJwZ19cIiIsIHVzZXJuYW1lKTsKIAkJZXhpdCgxKTsK IAl9CiAKQEAgLTM0MDAsMTQgKzMzNDYsMTggQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJn dltdKQogCXsKIAkJZnB1dHMoXygic3luY2luZyBkYXRhIHRvIGRpc2sgLi4uICIpLCBzdGRv dXQpOwogCQlmZmx1c2goc3Rkb3V0KTsKLQkJZnN5bmNfcGdkYXRhKHBnX2RhdGEsIHByb2du YW1lLCBQR19WRVJTSU9OX05VTSk7CisJCWZzeW5jX3BnZGF0YShwZ19kYXRhLCBQR19WRVJT SU9OX05VTSk7CiAJCWNoZWNrX29rKCk7CiAJfQogCWVsc2UKIAkJcHJpbnRmKF8oIlxuU3lu YyB0byBkaXNrIHNraXBwZWQuXG5UaGUgZGF0YSBkaXJlY3RvcnkgbWlnaHQgYmVjb21lIGNv cnJ1cHQgaWYgdGhlIG9wZXJhdGluZyBzeXN0ZW0gY3Jhc2hlcy5cbiIpKTsKIAotCWlmIChh dXRod2FybmluZyAhPSBOVUxMKQotCQlmcHJpbnRmKHN0ZGVyciwgIiVzIiwgYXV0aHdhcm5p bmcpOworCWlmIChhdXRod2FybmluZykKKwl7CisJCXBnX2xvZ193YXJuaW5nKCJlbmFibGlu ZyBcInRydXN0XCIgYXV0aGVudGljYXRpb24gZm9yIGxvY2FsIGNvbm5lY3Rpb25zIik7CisJ CWZwcmludGYoc3RkZXJyLCBfKCJZb3UgY2FuIGNoYW5nZSB0aGlzIGJ5IGVkaXRpbmcgcGdf aGJhLmNvbmYgb3IgdXNpbmcgdGhlIG9wdGlvbiAtQSwgb3JcbiIKKwkJCQkJCSAgIi0tYXV0 aC1sb2NhbCBhbmQgLS1hdXRoLWhvc3QsIHRoZSBuZXh0IHRpbWUgeW91IHJ1biBpbml0ZGIu XG4iKSk7CisJfQogCiAJLyoKIAkgKiBCdWlsZCB1cCBhIHNoZWxsIGNvbW1hbmQgdG8gdGVs bCB0aGUgdXNlciBob3cgdG8gc3RhcnQgdGhlIHNlcnZlcgpkaWZmIC0tZ2l0IGEvc3JjL2Jp bi9pbml0ZGIvbmxzLm1rIGIvc3JjL2Jpbi9pbml0ZGIvbmxzLm1rCmluZGV4IGIwY2U2Mjk4 MGEuLjgwMzM4OGQ0YzcgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vaW5pdGRiL25scy5taworKysg Yi9zcmMvYmluL2luaXRkYi9ubHMubWsKQEAgLTEsNSArMSw2IEBACiAjIHNyYy9iaW4vaW5p dGRiL25scy5tawogQ0FUQUxPR19OQU1FICAgICA9IGluaXRkYgogQVZBSUxfTEFOR1VBR0VT ICA9IGNzIGRlIGVzIGZyIGhlIGl0IGphIGtvIHBsIHB0X0JSIHJ1IHN2IHRyIHZpIHpoX0NO Ci1HRVRURVhUX0ZJTEVTICAgID0gZmluZHRpbWV6b25lLmMgaW5pdGRiLmMgLi4vLi4vY29t bW9uL2V4ZWMuYyAuLi8uLi9jb21tb24vZmVfbWVtdXRpbHMuYyAuLi8uLi9jb21tb24vZmls ZV91dGlscy5jIC4uLy4uL2NvbW1vbi9wZ2ZuYW1lcy5jIC4uLy4uL2NvbW1vbi9yZXN0cmlj dGVkX3Rva2VuLmMgLi4vLi4vY29tbW9uL3JtdHJlZS5jIC4uLy4uL2NvbW1vbi91c2VybmFt ZS5jIC4uLy4uL2NvbW1vbi93YWl0X2Vycm9yLmMgLi4vLi4vcG9ydC9kaXJtb2QuYwotR0VU VEVYVF9UUklHR0VSUyA9IHNpbXBsZV9wcm9tcHQKK0dFVFRFWFRfRklMRVMgICAgPSAkKEZS T05URU5EX0NPTU1PTl9HRVRURVhUX0ZJTEVTKSBmaW5kdGltZXpvbmUuYyBpbml0ZGIuYyAu Li8uLi9jb21tb24vZXhlYy5jIC4uLy4uL2NvbW1vbi9mZV9tZW11dGlscy5jIC4uLy4uL2Nv bW1vbi9maWxlX3V0aWxzLmMgLi4vLi4vY29tbW9uL3BnZm5hbWVzLmMgLi4vLi4vY29tbW9u L3Jlc3RyaWN0ZWRfdG9rZW4uYyAuLi8uLi9jb21tb24vcm10cmVlLmMgLi4vLi4vY29tbW9u L3VzZXJuYW1lLmMgLi4vLi4vY29tbW9uL3dhaXRfZXJyb3IuYyAuLi8uLi9wb3J0L2Rpcm1v ZC5jCitHRVRURVhUX1RSSUdHRVJTID0gJChGUk9OVEVORF9DT01NT05fR0VUVEVYVF9UUklH R0VSUykgc2ltcGxlX3Byb21wdAorR0VUVEVYVF9GTEFHUyAgICA9ICQoRlJPTlRFTkRfQ09N TU9OX0dFVFRFWFRfRkxBR1MpCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2FyY2hpdmVjbGVh bnVwL01ha2VmaWxlIGIvc3JjL2Jpbi9wZ19hcmNoaXZlY2xlYW51cC9NYWtlZmlsZQppbmRl eCBjNWJmOTlkYjBmLi4xNGU4MzQ2NzdiIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2FyY2hp dmVjbGVhbnVwL01ha2VmaWxlCisrKyBiL3NyYy9iaW4vcGdfYXJjaGl2ZWNsZWFudXAvTWFr ZWZpbGUKQEAgLTcsMTEgKzcsMTMgQEAgc3ViZGlyID0gc3JjL2Jpbi9wZ19hcmNoaXZlY2xl YW51cAogdG9wX2J1aWxkZGlyID0gLi4vLi4vLi4KIGluY2x1ZGUgJCh0b3BfYnVpbGRkaXIp L3NyYy9NYWtlZmlsZS5nbG9iYWwKIAorTERGTEFHU19JTlRFUk5BTCArPSAtTCQodG9wX2J1 aWxkZGlyKS9zcmMvZmVfdXRpbHMgLWxwZ2ZldXRpbHMKKwogT0JKUwk9IHBnX2FyY2hpdmVj bGVhbnVwLm8gJChXSU4zMlJFUykKIAogYWxsOiBwZ19hcmNoaXZlY2xlYW51cAogCi1wZ19h cmNoaXZlY2xlYW51cDogJChPQkpTKSB8IHN1Ym1ha2UtbGlicGdwb3J0CitwZ19hcmNoaXZl Y2xlYW51cDogJChPQkpTKSB8IHN1Ym1ha2UtbGlicGdwb3J0IHN1Ym1ha2UtbGlicGdmZXV0 aWxzCiAJJChDQykgJChDRkxBR1MpICReICQoTERGTEFHUykgJChMREZMQUdTX0VYKSAkKExJ QlMpIC1vICRAJChYKQogCiBpbnN0YWxsOiBhbGwgaW5zdGFsbGRpcnMKZGlmZiAtLWdpdCBh L3NyYy9iaW4vcGdfYXJjaGl2ZWNsZWFudXAvbmxzLm1rIGIvc3JjL2Jpbi9wZ19hcmNoaXZl Y2xlYW51cC9ubHMubWsKaW5kZXggMmNkODFkMzJhNy4uYzJkNjI1YzUyZiAxMDA2NDQKLS0t IGEvc3JjL2Jpbi9wZ19hcmNoaXZlY2xlYW51cC9ubHMubWsKKysrIGIvc3JjL2Jpbi9wZ19h cmNoaXZlY2xlYW51cC9ubHMubWsKQEAgLTEsNCArMSw2IEBACiAjIHNyYy9iaW4vcGdfYXJj aGl2ZWNsZWFudXAvbmxzLm1rCiBDQVRBTE9HX05BTUUgICAgID0gcGdfYXJjaGl2ZWNsZWFu dXAKIEFWQUlMX0xBTkdVQUdFUyAgPWRlIGVzIGZyIGphIGtvIHBsIHJ1IHN2IHRyIHZpCi1H RVRURVhUX0ZJTEVTICAgID0gcGdfYXJjaGl2ZWNsZWFudXAuYworR0VUVEVYVF9GSUxFUyAg ICA9ICQoRlJPTlRFTkRfQ09NTU9OX0dFVFRFWFRfRklMRVMpIHBnX2FyY2hpdmVjbGVhbnVw LmMKK0dFVFRFWFRfVFJJR0dFUlMgPSAkKEZST05URU5EX0NPTU1PTl9HRVRURVhUX1RSSUdH RVJTKQorR0VUVEVYVF9GTEFHUyAgICA9ICQoRlJPTlRFTkRfQ09NTU9OX0dFVFRFWFRfRkxB R1MpCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2FyY2hpdmVjbGVhbnVwL3BnX2FyY2hpdmVj bGVhbnVwLmMgYi9zcmMvYmluL3BnX2FyY2hpdmVjbGVhbnVwL3BnX2FyY2hpdmVjbGVhbnVw LmMKaW5kZXggYzYyNDc4ZGJkNi4uOTAzOTY1Y2M4YiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9w Z19hcmNoaXZlY2xlYW51cC9wZ19hcmNoaXZlY2xlYW51cC5jCisrKyBiL3NyYy9iaW4vcGdf YXJjaGl2ZWNsZWFudXAvcGdfYXJjaGl2ZWNsZWFudXAuYwpAQCAtMTcsMTggKzE3LDE4IEBA CiAKICNpbmNsdWRlICJwZ19nZXRvcHQuaCIKIAorI2luY2x1ZGUgImZlX3V0aWxzL2xvZ2dp bmcuaCIKKwogI2luY2x1ZGUgImFjY2Vzcy94bG9nX2ludGVybmFsLmgiCiAKIGNvbnN0IGNo YXIgKnByb2duYW1lOwogCiAvKiBPcHRpb25zIGFuZCBkZWZhdWx0cyAqLwotYm9vbAkJZGVi dWcgPSBmYWxzZTsJCS8qIGFyZSB3ZSBkZWJ1Z2dpbmc/ICovCiBib29sCQlkcnlydW4gPSBm YWxzZTsJCS8qIGFyZSB3ZSBwZXJmb3JtaW5nIGEgZHJ5LXJ1biBvcGVyYXRpb24/ICovCiBj aGFyCSAgICphZGRpdGlvbmFsX2V4dCA9IE5VTEw7CS8qIEV4dGVuc2lvbiB0byByZW1vdmUg ZnJvbSBmaWxlbmFtZXMgKi8KIAogY2hhcgkgICAqYXJjaGl2ZUxvY2F0aW9uOwkvKiB3aGVy ZSB0byBmaW5kIHRoZSBhcmNoaXZlPyAqLwogY2hhcgkgICAqcmVzdGFydFdBTEZpbGVOYW1l OyAvKiB0aGUgZmlsZSBmcm9tIHdoaWNoIHdlIGNhbiByZXN0YXJ0IHJlc3RvcmUgKi8KLWNo YXIJCVdBTEZpbGVQYXRoW01BWFBHUEFUSCAqIDJdOyAvKiB0aGUgZmlsZSBwYXRoIGluY2x1 ZGluZyBhcmNoaXZlICovCiBjaGFyCQlleGNsdXNpdmVDbGVhbnVwRmlsZU5hbWVbTUFYRk5B TUVMRU5dOwkvKiB0aGUgb2xkZXN0IGZpbGUgd2Ugd2FudAogCQkJCQkJCQkJCQkJCSAqIHRv IHJlbWFpbiBpbiBhcmNoaXZlICovCiAKQEAgLTY1LDggKzY1LDggQEAgSW5pdGlhbGl6ZSh2 b2lkKQogCWlmIChzdGF0KGFyY2hpdmVMb2NhdGlvbiwgJnN0YXRfYnVmKSAhPSAwIHx8CiAJ CSFTX0lTRElSKHN0YXRfYnVmLnN0X21vZGUpKQogCXsKLQkJZnByaW50ZihzdGRlcnIsIF8o IiVzOiBhcmNoaXZlIGxvY2F0aW9uIFwiJXNcIiBkb2VzIG5vdCBleGlzdFxuIiksCi0JCQkJ cHJvZ25hbWUsIGFyY2hpdmVMb2NhdGlvbik7CisJCXBnX2xvZ19lcnJvcigiYXJjaGl2ZSBs b2NhdGlvbiBcIiVzXCIgZG9lcyBub3QgZXhpc3QiLAorCQkJCQkgYXJjaGl2ZUxvY2F0aW9u KTsKIAkJZXhpdCgyKTsKIAl9CiB9CkBAIC0xMjMsNiArMTIzLDggQEAgQ2xlYW51cFByaW9y V0FMRmlsZXModm9pZCkKIAkJCWlmICgoSXNYTG9nRmlsZU5hbWUod2FsZmlsZSkgfHwgSXNQ YXJ0aWFsWExvZ0ZpbGVOYW1lKHdhbGZpbGUpKSAmJgogCQkJCXN0cmNtcCh3YWxmaWxlICsg OCwgZXhjbHVzaXZlQ2xlYW51cEZpbGVOYW1lICsgOCkgPCAwKQogCQkJeworCQkJCWNoYXIJ CVdBTEZpbGVQYXRoW01BWFBHUEFUSCAqIDJdOyAvKiB0aGUgZmlsZSBwYXRoIGluY2x1ZGlu ZyBhcmNoaXZlICovCisKIAkJCQkvKgogCQkJCSAqIFVzZSB0aGUgb3JpZ2luYWwgZmlsZSBu YW1lIGFnYWluIG5vdywgaW5jbHVkaW5nIGFueQogCQkJCSAqIGV4dGVuc2lvbiB0aGF0IG1p Z2h0IGhhdmUgYmVlbiBjaG9wcGVkIG9mZiBiZWZvcmUgdGVzdGluZwpAQCAtMTM5LDM3ICsx NDEsMzIgQEAgQ2xlYW51cFByaW9yV0FMRmlsZXModm9pZCkKIAkJCQkJICogdXNlciBjYW4g cGlwZSB0aGUgb3V0cHV0IGludG8gc29tZSBvdGhlciBwcm9ncmFtLgogCQkJCQkgKi8KIAkJ CQkJcHJpbnRmKCIlc1xuIiwgV0FMRmlsZVBhdGgpOwotCQkJCQlpZiAoZGVidWcpCi0JCQkJ CQlmcHJpbnRmKHN0ZGVyciwKLQkJCQkJCQkJXygiJXM6IGZpbGUgXCIlc1wiIHdvdWxkIGJl IHJlbW92ZWRcbiIpLAotCQkJCQkJCQlwcm9nbmFtZSwgV0FMRmlsZVBhdGgpOworCQkJCQlw Z19sb2dfZGVidWcoImZpbGUgXCIlc1wiIHdvdWxkIGJlIHJlbW92ZWQiLCBXQUxGaWxlUGF0 aCk7CiAJCQkJCWNvbnRpbnVlOwogCQkJCX0KIAotCQkJCWlmIChkZWJ1ZykKLQkJCQkJZnBy aW50ZihzdGRlcnIsIF8oIiVzOiByZW1vdmluZyBmaWxlIFwiJXNcIlxuIiksCi0JCQkJCQkJ cHJvZ25hbWUsIFdBTEZpbGVQYXRoKTsKKwkJCQlwZ19sb2dfZGVidWcoInJlbW92aW5nIGZp bGUgXCIlc1wiIiwgV0FMRmlsZVBhdGgpOwogCiAJCQkJcmMgPSB1bmxpbmsoV0FMRmlsZVBh dGgpOwogCQkJCWlmIChyYyAhPSAwKQogCQkJCXsKLQkJCQkJZnByaW50ZihzdGRlcnIsIF8o IiVzOiBFUlJPUjogY291bGQgbm90IHJlbW92ZSBmaWxlIFwiJXNcIjogJXNcbiIpLAotCQkJ CQkJCXByb2duYW1lLCBXQUxGaWxlUGF0aCwgc3RyZXJyb3IoZXJybm8pKTsKKwkJCQkJcGdf bG9nX2Vycm9yKCJjb3VsZCBub3QgcmVtb3ZlIGZpbGUgXCIlc1wiOiAlbSIsCisJCQkJCQkJ CSBXQUxGaWxlUGF0aCk7CiAJCQkJCWJyZWFrOwogCQkJCX0KIAkJCX0KIAkJfQogCiAJCWlm IChlcnJubykKLQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczogY291bGQgbm90IHJlYWQgYXJj aGl2ZSBsb2NhdGlvbiBcIiVzXCI6ICVzXG4iKSwKLQkJCQkJcHJvZ25hbWUsIGFyY2hpdmVM b2NhdGlvbiwgc3RyZXJyb3IoZXJybm8pKTsKKwkJCXBnX2xvZ19lcnJvcigiY291bGQgbm90 IHJlYWQgYXJjaGl2ZSBsb2NhdGlvbiBcIiVzXCI6ICVtIiwKKwkJCQkJCSBhcmNoaXZlTG9j YXRpb24pOwogCQlpZiAoY2xvc2VkaXIoeGxkaXIpKQotCQkJZnByaW50ZihzdGRlcnIsIF8o IiVzOiBjb3VsZCBub3QgY2xvc2UgYXJjaGl2ZSBsb2NhdGlvbiBcIiVzXCI6ICVzXG4iKSwK LQkJCQkJcHJvZ25hbWUsIGFyY2hpdmVMb2NhdGlvbiwgc3RyZXJyb3IoZXJybm8pKTsKKwkJ CXBnX2xvZ19lcnJvcigiY291bGQgbm90IGNsb3NlIGFyY2hpdmUgbG9jYXRpb24gXCIlc1wi OiAlbSIsCisJCQkJCQkgYXJjaGl2ZUxvY2F0aW9uKTsKIAl9CiAJZWxzZQotCQlmcHJpbnRm KHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCBvcGVuIGFyY2hpdmUgbG9jYXRpb24gXCIlc1wi OiAlc1xuIiksCi0JCQkJcHJvZ25hbWUsIGFyY2hpdmVMb2NhdGlvbiwgc3RyZXJyb3IoZXJy bm8pKTsKKwkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3Qgb3BlbiBhcmNoaXZlIGxvY2F0aW9u IFwiJXNcIjogJW0iLAorCQkJCQkgYXJjaGl2ZUxvY2F0aW9uKTsKIH0KIAogLyoKQEAgLTI0 MSw3ICsyMzgsNyBAQCBTZXRXQUxGaWxlTmFtZUZvckNsZWFudXAodm9pZCkKIAogCWlmICgh Zm5hbWVPSykKIAl7Ci0JCWZwcmludGYoc3RkZXJyLCBfKCIlczogaW52YWxpZCBmaWxlIG5h bWUgYXJndW1lbnRcbiIpLCBwcm9nbmFtZSk7CisJCXBnX2xvZ19lcnJvcigiaW52YWxpZCBm aWxlIG5hbWUgYXJndW1lbnQiKTsKIAkJZnByaW50ZihzdGRlcnIsIF8oIlRyeSBcIiVzIC0t aGVscFwiIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuIiksIHByb2duYW1lKTsKIAkJZXhpdCgy KTsKIAl9CkBAIC0yODMsNiArMjgwLDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3Yp CiAJaW50CQkJYzsKIAogCXNldF9wZ2xvY2FsZV9wZ3NlcnZpY2UoYXJndlswXSwgUEdfVEVY VERPTUFJTigicGdfYXJjaGl2ZWNsZWFudXAiKSk7CisJcGdfbG9nZ2luZ19pbml0KGFyZ3Zb MF0pOwogCXByb2duYW1lID0gZ2V0X3Byb2duYW1lKGFyZ3ZbMF0pOwogCiAJaWYgKGFyZ2Mg PiAxKQpAQCAtMzA0LDcgKzMwMiw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQog CQlzd2l0Y2ggKGMpCiAJCXsKIAkJCWNhc2UgJ2QnOgkJCS8qIERlYnVnIG1vZGUgKi8KLQkJ CQlkZWJ1ZyA9IHRydWU7CisJCQkJcGdfbG9nZ2luZ19zZXRfbGV2ZWwoUEdfTE9HX0RFQlVH KTsKIAkJCQlicmVhazsKIAkJCWNhc2UgJ24nOgkJCS8qIERyeS1SdW4gbW9kZSAqLwogCQkJ CWRyeXJ1biA9IHRydWU7CkBAIC0zMzQsNyArMzMyLDcgQEAgbWFpbihpbnQgYXJnYywgY2hh ciAqKmFyZ3YpCiAJfQogCWVsc2UKIAl7Ci0JCWZwcmludGYoc3RkZXJyLCBfKCIlczogbXVz dCBzcGVjaWZ5IGFyY2hpdmUgbG9jYXRpb25cbiIpLCBwcm9nbmFtZSk7CisJCXBnX2xvZ19l cnJvcigibXVzdCBzcGVjaWZ5IGFyY2hpdmUgbG9jYXRpb24iKTsKIAkJZnByaW50ZihzdGRl cnIsIF8oIlRyeSBcIiVzIC0taGVscFwiIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuIiksIHBy b2duYW1lKTsKIAkJZXhpdCgyKTsKIAl9CkBAIC0zNDYsMTQgKzM0NCwxNCBAQCBtYWluKGlu dCBhcmdjLCBjaGFyICoqYXJndikKIAl9CiAJZWxzZQogCXsKLQkJZnByaW50ZihzdGRlcnIs IF8oIiVzOiBtdXN0IHNwZWNpZnkgb2xkZXN0IGtlcHQgV0FMIGZpbGVcbiIpLCBwcm9nbmFt ZSk7CisJCXBnX2xvZ19lcnJvcigibXVzdCBzcGVjaWZ5IG9sZGVzdCBrZXB0IFdBTCBmaWxl Iik7CiAJCWZwcmludGYoc3RkZXJyLCBfKCJUcnkgXCIlcyAtLWhlbHBcIiBmb3IgbW9yZSBp bmZvcm1hdGlvbi5cbiIpLCBwcm9nbmFtZSk7CiAJCWV4aXQoMik7CiAJfQogCiAJaWYgKG9w dGluZCA8IGFyZ2MpCiAJewotCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IHRvbyBtYW55IGNv bW1hbmQtbGluZSBhcmd1bWVudHNcbiIpLCBwcm9nbmFtZSk7CisJCXBnX2xvZ19lcnJvcigi dG9vIG1hbnkgY29tbWFuZC1saW5lIGFyZ3VtZW50cyIpOwogCQlmcHJpbnRmKHN0ZGVyciwg XygiVHJ5IFwiJXMgLS1oZWxwXCIgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4iKSwgcHJvZ25h bWUpOwogCQlleGl0KDIpOwogCX0KQEAgLTM2OCwxMyArMzY2LDggQEAgbWFpbihpbnQgYXJn YywgY2hhciAqKmFyZ3YpCiAJICovCiAJU2V0V0FMRmlsZU5hbWVGb3JDbGVhbnVwKCk7CiAK LQlpZiAoZGVidWcpCi0JewotCQlzbnByaW50ZihXQUxGaWxlUGF0aCwgTUFYUEdQQVRILCAi JXMvJXMiLAorCXBnX2xvZ19kZWJ1Zygia2VlcGluZyBXQUwgZmlsZSBcIiVzLyVzXCIgYW5k IGxhdGVyIiwKIAkJCQkgYXJjaGl2ZUxvY2F0aW9uLCBleGNsdXNpdmVDbGVhbnVwRmlsZU5h bWUpOwotCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGtlZXBpbmcgV0FMIGZpbGUgXCIlc1wi IGFuZCBsYXRlclxuIiksCi0JCQkJcHJvZ25hbWUsIFdBTEZpbGVQYXRoKTsKLQl9CiAKIAkv KgogCSAqIFJlbW92ZSBXQUwgZmlsZXMgb2xkZXIgdGhhbiBjdXQtb2ZmCmRpZmYgLS1naXQg YS9zcmMvYmluL3BnX2Jhc2ViYWNrdXAvbmxzLm1rIGIvc3JjL2Jpbi9wZ19iYXNlYmFja3Vw L25scy5tawppbmRleCBmNzY5NDM0M2ZjLi5mZWNlNTU1MWJkIDEwMDY0NAotLS0gYS9zcmMv YmluL3BnX2Jhc2ViYWNrdXAvbmxzLm1rCisrKyBiL3NyYy9iaW4vcGdfYmFzZWJhY2t1cC9u bHMubWsKQEAgLTEsNSArMSw2IEBACiAjIHNyYy9iaW4vcGdfYmFzZWJhY2t1cC9ubHMubWsK IENBVEFMT0dfTkFNRSAgICAgPSBwZ19iYXNlYmFja3VwCiBBVkFJTF9MQU5HVUFHRVMgID0g ZGUgZXMgZnIgaGUgaXQgamEga28gcGwgcHRfQlIgcnUgc3YgdHIgdmkgemhfQ04KLUdFVFRF WFRfRklMRVMgICAgPSBwZ19iYXNlYmFja3VwLmMgcGdfcmVjZWl2ZXdhbC5jIHBnX3JlY3Zs b2dpY2FsLmMgcmVjZWl2ZWxvZy5jIHN0cmVhbXV0aWwuYyB3YWxtZXRob2RzLmMgLi4vLi4v Y29tbW9uL2ZlX21lbXV0aWxzLmMgLi4vLi4vY29tbW9uL2ZpbGVfdXRpbHMuYwotR0VUVEVY VF9UUklHR0VSUyA9IHNpbXBsZV9wcm9tcHQgdGFyX3NldF9lcnJvcgorR0VUVEVYVF9GSUxF UyAgICA9ICQoRlJPTlRFTkRfQ09NTU9OX0dFVFRFWFRfRklMRVMpIHBnX2Jhc2ViYWNrdXAu YyBwZ19yZWNlaXZld2FsLmMgcGdfcmVjdmxvZ2ljYWwuYyByZWNlaXZlbG9nLmMgc3RyZWFt dXRpbC5jIHdhbG1ldGhvZHMuYyAuLi8uLi9jb21tb24vZmVfbWVtdXRpbHMuYyAuLi8uLi9j b21tb24vZmlsZV91dGlscy5jCitHRVRURVhUX1RSSUdHRVJTID0gJChGUk9OVEVORF9DT01N T05fR0VUVEVYVF9UUklHR0VSUykgc2ltcGxlX3Byb21wdCB0YXJfc2V0X2Vycm9yCitHRVRU RVhUX0ZMQUdTICAgID0gJChGUk9OVEVORF9DT01NT05fR0VUVEVYVF9GTEFHUykKZGlmZiAt LWdpdCBhL3NyYy9iaW4vcGdfYmFzZWJhY2t1cC9wZ19iYXNlYmFja3VwLmMgYi9zcmMvYmlu L3BnX2Jhc2ViYWNrdXAvcGdfYmFzZWJhY2t1cC5jCmluZGV4IGU0MzA0YzRhOTAuLmU5ZGI5 NmMwMGIgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfYmFzZWJhY2t1cC9wZ19iYXNlYmFja3Vw LmMKKysrIGIvc3JjL2Jpbi9wZ19iYXNlYmFja3VwL3BnX2Jhc2ViYWNrdXAuYwpAQCAtMzAs NiArMzAsNyBAQAogI2luY2x1ZGUgImNvbW1vbi9maWxlX3Blcm0uaCIKICNpbmNsdWRlICJj b21tb24vZmlsZV91dGlscy5oIgogI2luY2x1ZGUgImNvbW1vbi9zdHJpbmcuaCIKKyNpbmNs dWRlICJmZV91dGlscy9sb2dnaW5nLmgiCiAjaW5jbHVkZSAiZmVfdXRpbHMvc3RyaW5nX3V0 aWxzLmgiCiAjaW5jbHVkZSAiZ2V0b3B0X2xvbmcuaCIKICNpbmNsdWRlICJsaWJwcS1mZS5o IgpAQCAtMTYzLDU3ICsxNjQsNDEgQEAgY2xlYW51cF9kaXJlY3Rvcmllc19hdGV4aXQodm9p ZCkKIAl7CiAJCWlmIChtYWRlX25ld19wZ2RhdGEpCiAJCXsKLQkJCWZwcmludGYoc3RkZXJy LCBfKCIlczogcmVtb3ZpbmcgZGF0YSBkaXJlY3RvcnkgXCIlc1wiXG4iKSwKLQkJCQkJcHJv Z25hbWUsIGJhc2VkaXIpOworCQkJcGdfbG9nX2luZm8oInJlbW92aW5nIGRhdGEgZGlyZWN0 b3J5IFwiJXNcIiIsIGJhc2VkaXIpOwogCQkJaWYgKCFybXRyZWUoYmFzZWRpciwgdHJ1ZSkp Ci0JCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBmYWlsZWQgdG8gcmVtb3ZlIGRhdGEgZGly ZWN0b3J5XG4iKSwKLQkJCQkJCXByb2duYW1lKTsKKwkJCQlwZ19sb2dfZXJyb3IoImZhaWxl ZCB0byByZW1vdmUgZGF0YSBkaXJlY3RvcnkiKTsKIAkJfQogCQllbHNlIGlmIChmb3VuZF9l eGlzdGluZ19wZ2RhdGEpCiAJCXsKLQkJCWZwcmludGYoc3RkZXJyLAotCQkJCQlfKCIlczog cmVtb3ZpbmcgY29udGVudHMgb2YgZGF0YSBkaXJlY3RvcnkgXCIlc1wiXG4iKSwKLQkJCQkJ cHJvZ25hbWUsIGJhc2VkaXIpOworCQkJcGdfbG9nX2luZm8oInJlbW92aW5nIGNvbnRlbnRz IG9mIGRhdGEgZGlyZWN0b3J5IFwiJXNcIiIsIGJhc2VkaXIpOwogCQkJaWYgKCFybXRyZWUo YmFzZWRpciwgZmFsc2UpKQotCQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczogZmFpbGVkIHRv IHJlbW92ZSBjb250ZW50cyBvZiBkYXRhIGRpcmVjdG9yeVxuIiksCi0JCQkJCQlwcm9nbmFt ZSk7CisJCQkJcGdfbG9nX2Vycm9yKCJmYWlsZWQgdG8gcmVtb3ZlIGNvbnRlbnRzIG9mIGRh dGEgZGlyZWN0b3J5Iik7CiAJCX0KIAogCQlpZiAobWFkZV9uZXdfeGxvZ2RpcikKIAkJewot CQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiByZW1vdmluZyBXQUwgZGlyZWN0b3J5IFwiJXNc IlxuIiksCi0JCQkJCXByb2duYW1lLCB4bG9nX2Rpcik7CisJCQlwZ19sb2dfaW5mbygicmVt b3ZpbmcgV0FMIGRpcmVjdG9yeSBcIiVzXCIiLCB4bG9nX2Rpcik7CiAJCQlpZiAoIXJtdHJl ZSh4bG9nX2RpciwgdHJ1ZSkpCi0JCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBmYWlsZWQg dG8gcmVtb3ZlIFdBTCBkaXJlY3RvcnlcbiIpLAotCQkJCQkJcHJvZ25hbWUpOworCQkJCXBn X2xvZ19lcnJvcigiZmFpbGVkIHRvIHJlbW92ZSBXQUwgZGlyZWN0b3J5Iik7CiAJCX0KIAkJ ZWxzZSBpZiAoZm91bmRfZXhpc3RpbmdfeGxvZ2RpcikKIAkJewotCQkJZnByaW50ZihzdGRl cnIsCi0JCQkJCV8oIiVzOiByZW1vdmluZyBjb250ZW50cyBvZiBXQUwgZGlyZWN0b3J5IFwi JXNcIlxuIiksCi0JCQkJCXByb2duYW1lLCB4bG9nX2Rpcik7CisJCQlwZ19sb2dfaW5mbygi cmVtb3ZpbmcgY29udGVudHMgb2YgV0FMIGRpcmVjdG9yeSBcIiVzXCIiLCB4bG9nX2Rpcik7 CiAJCQlpZiAoIXJtdHJlZSh4bG9nX2RpciwgZmFsc2UpKQotCQkJCWZwcmludGYoc3RkZXJy LCBfKCIlczogZmFpbGVkIHRvIHJlbW92ZSBjb250ZW50cyBvZiBXQUwgZGlyZWN0b3J5XG4i KSwKLQkJCQkJCXByb2duYW1lKTsKKwkJCQlwZ19sb2dfZXJyb3IoImZhaWxlZCB0byByZW1v dmUgY29udGVudHMgb2YgV0FMIGRpcmVjdG9yeSIpOwogCQl9CiAJfQogCWVsc2UKIAl7CiAJ CWlmICgobWFkZV9uZXdfcGdkYXRhIHx8IGZvdW5kX2V4aXN0aW5nX3BnZGF0YSkgJiYgIWNo ZWNrc3VtX2ZhaWx1cmUpCi0JCQlmcHJpbnRmKHN0ZGVyciwKLQkJCQkJXygiJXM6IGRhdGEg ZGlyZWN0b3J5IFwiJXNcIiBub3QgcmVtb3ZlZCBhdCB1c2VyJ3MgcmVxdWVzdFxuIiksCi0J CQkJCXByb2duYW1lLCBiYXNlZGlyKTsKKwkJCXBnX2xvZ19pbmZvKCJkYXRhIGRpcmVjdG9y eSBcIiVzXCIgbm90IHJlbW92ZWQgYXQgdXNlcidzIHJlcXVlc3QiLCBiYXNlZGlyKTsKIAog CQlpZiAobWFkZV9uZXdfeGxvZ2RpciB8fCBmb3VuZF9leGlzdGluZ194bG9nZGlyKQotCQkJ ZnByaW50ZihzdGRlcnIsCi0JCQkJCV8oIiVzOiBXQUwgZGlyZWN0b3J5IFwiJXNcIiBub3Qg cmVtb3ZlZCBhdCB1c2VyJ3MgcmVxdWVzdFxuIiksCi0JCQkJCXByb2duYW1lLCB4bG9nX2Rp cik7CisJCQlwZ19sb2dfaW5mbygiV0FMIGRpcmVjdG9yeSBcIiVzXCIgbm90IHJlbW92ZWQg YXQgdXNlcidzIHJlcXVlc3QiLCB4bG9nX2Rpcik7CiAJfQogCiAJaWYgKChtYWRlX3RhYmxl c3BhY2VfZGlycyB8fCBmb3VuZF90YWJsZXNwYWNlX2RpcnMpICYmICFjaGVja3N1bV9mYWls dXJlKQotCQlmcHJpbnRmKHN0ZGVyciwKLQkJCQlfKCIlczogY2hhbmdlcyB0byB0YWJsZXNw YWNlIGRpcmVjdG9yaWVzIHdpbGwgbm90IGJlIHVuZG9uZVxuIiksCi0JCQkJcHJvZ25hbWUp OworCQlwZ19sb2dfaW5mbygiY2hhbmdlcyB0byB0YWJsZXNwYWNlIGRpcmVjdG9yaWVzIHdp bGwgbm90IGJlIHVuZG9uZSIpOwogfQogCiBzdGF0aWMgdm9pZApAQCAtMjU0LDcgKzIzOSw3 IEBAIHRhYmxlc3BhY2VfbGlzdF9hcHBlbmQoY29uc3QgY2hhciAqYXJnKQogCXsKIAkJaWYg KGRzdF9wdHIgLSBkc3QgPj0gTUFYUEdQQVRIKQogCQl7Ci0JCQlmcHJpbnRmKHN0ZGVyciwg XygiJXM6IGRpcmVjdG9yeSBuYW1lIHRvbyBsb25nXG4iKSwgcHJvZ25hbWUpOworCQkJcGdf bG9nX2Vycm9yKCJkaXJlY3RvcnkgbmFtZSB0b28gbG9uZyIpOwogCQkJZXhpdCgxKTsKIAkJ fQogCkBAIC0yNjQsNyArMjQ5LDcgQEAgdGFibGVzcGFjZV9saXN0X2FwcGVuZChjb25zdCBj aGFyICphcmcpCiAJCXsKIAkJCWlmICgqY2VsbC0+bmV3X2RpcikKIAkJCXsKLQkJCQlmcHJp bnRmKHN0ZGVyciwgXygiJXM6IG11bHRpcGxlIFwiPVwiIHNpZ25zIGluIHRhYmxlc3BhY2Ug bWFwcGluZ1xuIiksIHByb2duYW1lKTsKKwkJCQlwZ19sb2dfZXJyb3IoIm11bHRpcGxlIFwi PVwiIHNpZ25zIGluIHRhYmxlc3BhY2UgbWFwcGluZyIpOwogCQkJCWV4aXQoMSk7CiAJCQl9 CiAJCQllbHNlCkBAIC0yNzYsOSArMjYxLDcgQEAgdGFibGVzcGFjZV9saXN0X2FwcGVuZChj b25zdCBjaGFyICphcmcpCiAKIAlpZiAoISpjZWxsLT5vbGRfZGlyIHx8ICEqY2VsbC0+bmV3 X2RpcikKIAl7Ci0JCWZwcmludGYoc3RkZXJyLAotCQkJCV8oIiVzOiBpbnZhbGlkIHRhYmxl c3BhY2UgbWFwcGluZyBmb3JtYXQgXCIlc1wiLCBtdXN0IGJlIFwiT0xERElSPU5FV0RJUlwi XG4iKSwKLQkJCQlwcm9nbmFtZSwgYXJnKTsKKwkJcGdfbG9nX2Vycm9yKCJpbnZhbGlkIHRh Ymxlc3BhY2UgbWFwcGluZyBmb3JtYXQgXCIlc1wiLCBtdXN0IGJlIFwiT0xERElSPU5FV0RJ UlwiIiwgYXJnKTsKIAkJZXhpdCgxKTsKIAl9CiAKQEAgLTI5MCwxNSArMjczLDE1IEBAIHRh Ymxlc3BhY2VfbGlzdF9hcHBlbmQoY29uc3QgY2hhciAqYXJnKQogCSAqLwogCWlmICghaXNf YWJzb2x1dGVfcGF0aChjZWxsLT5vbGRfZGlyKSkKIAl7Ci0JCWZwcmludGYoc3RkZXJyLCBf KCIlczogb2xkIGRpcmVjdG9yeSBpcyBub3QgYW4gYWJzb2x1dGUgcGF0aCBpbiB0YWJsZXNw YWNlIG1hcHBpbmc6ICVzXG4iKSwKLQkJCQlwcm9nbmFtZSwgY2VsbC0+b2xkX2Rpcik7CisJ CXBnX2xvZ19lcnJvcigib2xkIGRpcmVjdG9yeSBpcyBub3QgYW4gYWJzb2x1dGUgcGF0aCBp biB0YWJsZXNwYWNlIG1hcHBpbmc6ICVzIiwKKwkJCQkJIGNlbGwtPm9sZF9kaXIpOwogCQll eGl0KDEpOwogCX0KIAogCWlmICghaXNfYWJzb2x1dGVfcGF0aChjZWxsLT5uZXdfZGlyKSkK IAl7Ci0JCWZwcmludGYoc3RkZXJyLCBfKCIlczogbmV3IGRpcmVjdG9yeSBpcyBub3QgYW4g YWJzb2x1dGUgcGF0aCBpbiB0YWJsZXNwYWNlIG1hcHBpbmc6ICVzXG4iKSwKLQkJCQlwcm9n bmFtZSwgY2VsbC0+bmV3X2Rpcik7CisJCXBnX2xvZ19lcnJvcigibmV3IGRpcmVjdG9yeSBp cyBub3QgYW4gYWJzb2x1dGUgcGF0aCBpbiB0YWJsZXNwYWNlIG1hcHBpbmc6ICVzIiwKKwkJ CQkJIGNlbGwtPm5ld19kaXIpOwogCQlleGl0KDEpOwogCX0KIApAQCAtNDIxLDE2ICs0MDQs MTQgQEAgcmVhY2hlZF9lbmRfcG9zaXRpb24oWExvZ1JlY1B0ciBzZWdlbmRwb3MsIHVpbnQz MiB0aW1lbGluZSwKIAkJCXIgPSByZWFkKGJncGlwZVswXSwgeGxvZ2VuZCwgc2l6ZW9mKHhs b2dlbmQpIC0gMSk7CiAJCQlpZiAociA8IDApCiAJCQl7Ci0JCQkJZnByaW50ZihzdGRlcnIs IF8oIiVzOiBjb3VsZCBub3QgcmVhZCBmcm9tIHJlYWR5IHBpcGU6ICVzXG4iKSwKLQkJCQkJ CXByb2duYW1lLCBzdHJlcnJvcihlcnJubykpOworCQkJCXBnX2xvZ19lcnJvcigiY291bGQg bm90IHJlYWQgZnJvbSByZWFkeSBwaXBlOiAlbSIpOwogCQkJCWV4aXQoMSk7CiAJCQl9CiAK IAkJCWlmIChzc2NhbmYoeGxvZ2VuZCwgIiVYLyVYIiwgJmhpLCAmbG8pICE9IDIpCiAJCQl7 Ci0JCQkJZnByaW50ZihzdGRlcnIsCi0JCQkJCQlfKCIlczogY291bGQgbm90IHBhcnNlIHdy aXRlLWFoZWFkIGxvZyBsb2NhdGlvbiBcIiVzXCJcbiIpLAotCQkJCQkJcHJvZ25hbWUsIHhs b2dlbmQpOworCQkJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IHBhcnNlIHdyaXRlLWFoZWFk IGxvZyBsb2NhdGlvbiBcIiVzXCIiLAorCQkJCQkJCSB4bG9nZW5kKTsKIAkJCQlleGl0KDEp OwogCQkJfQogCQkJeGxvZ2VuZHB0ciA9ICgodWludDY0KSBoaSkgPDwgMzIgfCBsbzsKQEAg LTUyMiw5ICs1MDMsNyBAQCBMb2dTdHJlYW1lck1haW4obG9nc3RyZWFtZXJfcGFyYW0gKnBh cmFtKQogCiAJaWYgKCFzdHJlYW0ud2FsbWV0aG9kLT5maW5pc2goKSkKIAl7Ci0JCWZwcmlu dGYoc3RkZXJyLAotCQkJCV8oIiVzOiBjb3VsZCBub3QgZmluaXNoIHdyaXRpbmcgV0FMIGZp bGVzOiAlc1xuIiksCi0JCQkJcHJvZ25hbWUsIHN0cmVycm9yKGVycm5vKSk7CisJCXBnX2xv Z19lcnJvcigiY291bGQgbm90IGZpbmlzaCB3cml0aW5nIFdBTCBmaWxlczogJW0iKTsKIAkJ cmV0dXJuIDE7CiAJfQogCkBAIC01NTksOSArNTM4LDggQEAgU3RhcnRMb2dTdHJlYW1lcihj aGFyICpzdGFydHBvcywgdWludDMyIHRpbWVsaW5lLCBjaGFyICpzeXNpZGVudGlmaWVyKQog CS8qIENvbnZlcnQgdGhlIHN0YXJ0aW5nIHBvc2l0aW9uICovCiAJaWYgKHNzY2FuZihzdGFy dHBvcywgIiVYLyVYIiwgJmhpLCAmbG8pICE9IDIpCiAJewotCQlmcHJpbnRmKHN0ZGVyciwK LQkJCQlfKCIlczogY291bGQgbm90IHBhcnNlIHdyaXRlLWFoZWFkIGxvZyBsb2NhdGlvbiBc IiVzXCJcbiIpLAotCQkJCXByb2duYW1lLCBzdGFydHBvcyk7CisJCXBnX2xvZ19lcnJvcigi Y291bGQgbm90IHBhcnNlIHdyaXRlLWFoZWFkIGxvZyBsb2NhdGlvbiBcIiVzXCIiLAorCQkJ CQkgc3RhcnRwb3MpOwogCQlkaXNjb25uZWN0X2FuZF9leGl0KDEpOwogCX0KIAlwYXJhbS0+ c3RhcnRwdHIgPSAoKHVpbnQ2NCkgaGkpIDw8IDMyIHwgbG87CkBAIC01NzIsOSArNTUwLDcg QEAgU3RhcnRMb2dTdHJlYW1lcihjaGFyICpzdGFydHBvcywgdWludDMyIHRpbWVsaW5lLCBj aGFyICpzeXNpZGVudGlmaWVyKQogCS8qIENyZWF0ZSBvdXIgYmFja2dyb3VuZCBwaXBlICov CiAJaWYgKHBpcGUoYmdwaXBlKSA8IDApCiAJewotCQlmcHJpbnRmKHN0ZGVyciwKLQkJCQlf KCIlczogY291bGQgbm90IGNyZWF0ZSBwaXBlIGZvciBiYWNrZ3JvdW5kIHByb2Nlc3M6ICVz XG4iKSwKLQkJCQlwcm9nbmFtZSwgc3RyZXJyb3IoZXJybm8pKTsKKwkJcGdfbG9nX2Vycm9y KCJjb3VsZCBub3QgY3JlYXRlIHBpcGUgZm9yIGJhY2tncm91bmQgcHJvY2VzczogJW0iKTsK IAkJZGlzY29ubmVjdF9hbmRfZXhpdCgxKTsKIAl9CiAjZW5kaWYKQEAgLTYwOSwxMSArNTg1 LDExIEBAIFN0YXJ0TG9nU3RyZWFtZXIoY2hhciAqc3RhcnRwb3MsIHVpbnQzMiB0aW1lbGlu ZSwgY2hhciAqc3lzaWRlbnRpZmllcikKIAkJaWYgKHZlcmJvc2UpCiAJCXsKIAkJCWlmICh0 ZW1wX3JlcGxpY2F0aW9uX3Nsb3QpCi0JCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBjcmVh dGVkIHRlbXBvcmFyeSByZXBsaWNhdGlvbiBzbG90IFwiJXNcIlxuIiksCi0JCQkJCQlwcm9n bmFtZSwgcmVwbGljYXRpb25fc2xvdCk7CisJCQkJcGdfbG9nX2luZm8oImNyZWF0ZWQgdGVt cG9yYXJ5IHJlcGxpY2F0aW9uIHNsb3QgXCIlc1wiIiwKKwkJCQkJCQlyZXBsaWNhdGlvbl9z bG90KTsKIAkJCWVsc2UKLQkJCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNyZWF0ZWQgcmVw bGljYXRpb24gc2xvdCBcIiVzXCJcbiIpLAotCQkJCQkJcHJvZ25hbWUsIHJlcGxpY2F0aW9u X3Nsb3QpOworCQkJCXBnX2xvZ19pbmZvKCJjcmVhdGVkIHJlcGxpY2F0aW9uIHNsb3QgXCIl c1wiIiwKKwkJCQkJCQlyZXBsaWNhdGlvbl9zbG90KTsKIAkJfQogCX0KIApAQCAtNjMyLDkg KzYwOCw3IEBAIFN0YXJ0TG9nU3RyZWFtZXIoY2hhciAqc3RhcnRwb3MsIHVpbnQzMiB0aW1l bGluZSwgY2hhciAqc3lzaWRlbnRpZmllcikKIAogCQlpZiAocGdfbWtkaXJfcChzdGF0dXNk aXIsIHBnX2Rpcl9jcmVhdGVfbW9kZSkgIT0gMCAmJiBlcnJubyAhPSBFRVhJU1QpCiAJCXsK LQkJCWZwcmludGYoc3RkZXJyLAotCQkJCQlfKCIlczogY291bGQgbm90IGNyZWF0ZSBkaXJl Y3RvcnkgXCIlc1wiOiAlc1xuIiksCi0JCQkJCXByb2duYW1lLCBzdGF0dXNkaXIsIHN0cmVy cm9yKGVycm5vKSk7CisJCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBjcmVhdGUgZGlyZWN0 b3J5IFwiJXNcIjogJW0iLCBzdGF0dXNkaXIpOwogCQkJZGlzY29ubmVjdF9hbmRfZXhpdCgx KTsKIAkJfQogCX0KQEAgLTY1Miw4ICs2MjYsNyBAQCBTdGFydExvZ1N0cmVhbWVyKGNoYXIg KnN0YXJ0cG9zLCB1aW50MzIgdGltZWxpbmUsIGNoYXIgKnN5c2lkZW50aWZpZXIpCiAJfQog CWVsc2UgaWYgKGJnY2hpbGQgPCAwKQogCXsKLQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBj b3VsZCBub3QgY3JlYXRlIGJhY2tncm91bmQgcHJvY2VzczogJXNcbiIpLAotCQkJCXByb2du YW1lLCBzdHJlcnJvcihlcnJubykpOworCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBjcmVh dGUgYmFja2dyb3VuZCBwcm9jZXNzOiAlbSIpOwogCQlkaXNjb25uZWN0X2FuZF9leGl0KDEp OwogCX0KIApAQCAtNjY0LDggKzYzNyw3IEBAIFN0YXJ0TG9nU3RyZWFtZXIoY2hhciAqc3Rh cnRwb3MsIHVpbnQzMiB0aW1lbGluZSwgY2hhciAqc3lzaWRlbnRpZmllcikKIAliZ2NoaWxk ID0gX2JlZ2ludGhyZWFkZXgoTlVMTCwgMCwgKHZvaWQgKikgTG9nU3RyZWFtZXJNYWluLCBw YXJhbSwgMCwgTlVMTCk7CiAJaWYgKGJnY2hpbGQgPT0gMCkKIAl7Ci0JCWZwcmludGYoc3Rk ZXJyLCBfKCIlczogY291bGQgbm90IGNyZWF0ZSBiYWNrZ3JvdW5kIHRocmVhZDogJXNcbiIp LAotCQkJCXByb2duYW1lLCBzdHJlcnJvcihlcnJubykpOworCQlwZ19sb2dfZXJyb3IoImNv dWxkIG5vdCBjcmVhdGUgYmFja2dyb3VuZCB0aHJlYWQ6ICVtIik7CiAJCWRpc2Nvbm5lY3Rf YW5kX2V4aXQoMSk7CiAJfQogI2VuZGlmCkBAIC02ODgsOSArNjYwLDcgQEAgdmVyaWZ5X2Rp cl9pc19lbXB0eV9vcl9jcmVhdGUoY2hhciAqZGlybmFtZSwgYm9vbCAqY3JlYXRlZCwgYm9v bCAqZm91bmQpCiAJCQkgKi8KIAkJCWlmIChwZ19ta2Rpcl9wKGRpcm5hbWUsIHBnX2Rpcl9j cmVhdGVfbW9kZSkgPT0gLTEpCiAJCQl7Ci0JCQkJZnByaW50ZihzdGRlcnIsCi0JCQkJCQlf KCIlczogY291bGQgbm90IGNyZWF0ZSBkaXJlY3RvcnkgXCIlc1wiOiAlc1xuIiksCi0JCQkJ CQlwcm9nbmFtZSwgZGlybmFtZSwgc3RyZXJyb3IoZXJybm8pKTsKKwkJCQlwZ19sb2dfZXJy b3IoImNvdWxkIG5vdCBjcmVhdGUgZGlyZWN0b3J5IFwiJXNcIjogJW0iLCBkaXJuYW1lKTsK IAkJCQlkaXNjb25uZWN0X2FuZF9leGl0KDEpOwogCQkJfQogCQkJaWYgKGNyZWF0ZWQpCkBA IC03MTEsMTcgKzY4MSwxNCBAQCB2ZXJpZnlfZGlyX2lzX2VtcHR5X29yX2NyZWF0ZShjaGFy ICpkaXJuYW1lLCBib29sICpjcmVhdGVkLCBib29sICpmb3VuZCkKIAkJCS8qCiAJCQkgKiBF eGlzdHMsIG5vdCBlbXB0eQogCQkJICovCi0JCQlmcHJpbnRmKHN0ZGVyciwKLQkJCQkJXygi JXM6IGRpcmVjdG9yeSBcIiVzXCIgZXhpc3RzIGJ1dCBpcyBub3QgZW1wdHlcbiIpLAotCQkJ CQlwcm9nbmFtZSwgZGlybmFtZSk7CisJCQlwZ19sb2dfZXJyb3IoImRpcmVjdG9yeSBcIiVz XCIgZXhpc3RzIGJ1dCBpcyBub3QgZW1wdHkiLCBkaXJuYW1lKTsKIAkJCWRpc2Nvbm5lY3Rf YW5kX2V4aXQoMSk7CiAJCWNhc2UgLTE6CiAKIAkJCS8qCiAJCQkgKiBBY2Nlc3MgcHJvYmxl bQogCQkJICovCi0JCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCBhY2Nlc3Mg ZGlyZWN0b3J5IFwiJXNcIjogJXNcbiIpLAotCQkJCQlwcm9nbmFtZSwgZGlybmFtZSwgc3Ry ZXJyb3IoZXJybm8pKTsKKwkJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IGFjY2VzcyBkaXJl Y3RvcnkgXCIlc1wiOiAlbSIsIGRpcm5hbWUpOwogCQkJZGlzY29ubmVjdF9hbmRfZXhpdCgx KTsKIAl9CiB9CkBAIC04MzQsMTYgKzgwMSwxMiBAQCBwYXJzZV9tYXhfcmF0ZShjaGFyICpz cmMpCiAJcmVzdWx0ID0gc3RydG9kKHNyYywgJmFmdGVyX251bSk7CiAJaWYgKHNyYyA9PSBh ZnRlcl9udW0pCiAJewotCQlmcHJpbnRmKHN0ZGVyciwKLQkJCQlfKCIlczogdHJhbnNmZXIg cmF0ZSBcIiVzXCIgaXMgbm90IGEgdmFsaWQgdmFsdWVcbiIpLAotCQkJCXByb2duYW1lLCBz cmMpOworCQlwZ19sb2dfZXJyb3IoInRyYW5zZmVyIHJhdGUgXCIlc1wiIGlzIG5vdCBhIHZh bGlkIHZhbHVlIiwgc3JjKTsKIAkJZXhpdCgxKTsKIAl9CiAJaWYgKGVycm5vICE9IDApCiAJ ewotCQlmcHJpbnRmKHN0ZGVyciwKLQkJCQlfKCIlczogaW52YWxpZCB0cmFuc2ZlciByYXRl IFwiJXNcIjogJXNcbiIpLAotCQkJCXByb2duYW1lLCBzcmMsIHN0cmVycm9yKGVycm5vKSk7 CisJCXBnX2xvZ19lcnJvcigiaW52YWxpZCB0cmFuc2ZlciByYXRlIFwiJXNcIjogJW0iLCBz cmMpOwogCQlleGl0KDEpOwogCX0KIApAQCAtODUyLDggKzgxNSw3IEBAIHBhcnNlX21heF9y YXRlKGNoYXIgKnNyYykKIAkJLyoKIAkJICogUmVqZWN0IG9idmlvdXNseSB3cm9uZyB2YWx1 ZXMgaGVyZS4KIAkJICovCi0JCWZwcmludGYoc3RkZXJyLCBfKCIlczogdHJhbnNmZXIgcmF0 ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvXG4iKSwKLQkJCQlwcm9nbmFtZSk7CisJCXBn X2xvZ19lcnJvcigidHJhbnNmZXIgcmF0ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvIik7 CiAJCWV4aXQoMSk7CiAJfQogCkBAIC04ODUsMTggKzg0NywxNCBAQCBwYXJzZV9tYXhfcmF0 ZShjaGFyICpzcmMpCiAKIAlpZiAoKmFmdGVyX251bSAhPSAnXDAnKQogCXsKLQkJZnByaW50 ZihzdGRlcnIsCi0JCQkJXygiJXM6IGludmFsaWQgLS1tYXgtcmF0ZSB1bml0OiBcIiVzXCJc biIpLAotCQkJCXByb2duYW1lLCBzdWZmaXgpOworCQlwZ19sb2dfZXJyb3IoImludmFsaWQg LS1tYXgtcmF0ZSB1bml0OiBcIiVzXCIiLCBzdWZmaXgpOwogCQlleGl0KDEpOwogCX0KIAog CS8qIFZhbGlkIGludGVnZXI/ICovCiAJaWYgKCh1aW50NjQpIHJlc3VsdCAhPSAodWludDY0 KSAoKHVpbnQzMikgcmVzdWx0KSkKIAl7Ci0JCWZwcmludGYoc3RkZXJyLAotCQkJCV8oIiVz OiB0cmFuc2ZlciByYXRlIFwiJXNcIiBleGNlZWRzIGludGVnZXIgcmFuZ2VcbiIpLAotCQkJ CXByb2duYW1lLCBzcmMpOworCQlwZ19sb2dfZXJyb3IoInRyYW5zZmVyIHJhdGUgXCIlc1wi IGV4Y2VlZHMgaW50ZWdlciByYW5nZSIsIHNyYyk7CiAJCWV4aXQoMSk7CiAJfQogCkBAIC05 MDYsOSArODY0LDcgQEAgcGFyc2VfbWF4X3JhdGUoY2hhciAqc3JjKQogCSAqLwogCWlmIChy ZXN1bHQgPCBNQVhfUkFURV9MT1dFUiB8fCByZXN1bHQgPiBNQVhfUkFURV9VUFBFUikKIAl7 Ci0JCWZwcmludGYoc3RkZXJyLAotCQkJCV8oIiVzOiB0cmFuc2ZlciByYXRlIFwiJXNcIiBp cyBvdXQgb2YgcmFuZ2VcbiIpLAotCQkJCXByb2duYW1lLCBzcmMpOworCQlwZ19sb2dfZXJy b3IoInRyYW5zZmVyIHJhdGUgXCIlc1wiIGlzIG91dCBvZiByYW5nZSIsIHNyYyk7CiAJCWV4 aXQoMSk7CiAJfQogCkBAIC05MzAsOSArODg2LDggQEAgd3JpdGVUYXJEYXRhKAogCXsKIAkJ aWYgKGd6d3JpdGUoenRhcmZpbGUsIGJ1ZiwgcikgIT0gcikKIAkJewotCQkJZnByaW50Zihz dGRlcnIsCi0JCQkJCV8oIiVzOiBjb3VsZCBub3Qgd3JpdGUgdG8gY29tcHJlc3NlZCBmaWxl IFwiJXNcIjogJXNcbiIpLAotCQkJCQlwcm9nbmFtZSwgY3VycmVudF9maWxlLCBnZXRfZ3pf ZXJyb3IoenRhcmZpbGUpKTsKKwkJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IHdyaXRlIHRv IGNvbXByZXNzZWQgZmlsZSBcIiVzXCI6ICVzIiwKKwkJCQkJCSBjdXJyZW50X2ZpbGUsIGdl dF9nel9lcnJvcih6dGFyZmlsZSkpOwogCQkJZGlzY29ubmVjdF9hbmRfZXhpdCgxKTsKIAkJ fQogCX0KQEAgLTk0MSw4ICs4OTYsNyBAQCB3cml0ZVRhckRhdGEoCiAJewogCQlpZiAoZndy aXRlKGJ1ZiwgciwgMSwgdGFyZmlsZSkgIT0gMSkKIAkJewotCQkJZnByaW50ZihzdGRlcnIs IF8oIiVzOiBjb3VsZCBub3Qgd3JpdGUgdG8gZmlsZSBcIiVzXCI6ICVzXG4iKSwKLQkJCQkJ cHJvZ25hbWUsIGN1cnJlbnRfZmlsZSwgc3RyZXJyb3IoZXJybm8pKTsKKwkJCXBnX2xvZ19l cnJvcigiY291bGQgbm90IHdyaXRlIHRvIGZpbGUgXCIlc1wiOiAlbSIsIGN1cnJlbnRfZmls ZSk7CiAJCQlkaXNjb25uZWN0X2FuZF9leGl0KDEpOwogCQl9CiAJfQpAQCAtMTAwMiw5ICs5 NTYsOCBAQCBSZWNlaXZlVGFyRmlsZShQR2Nvbm4gKmNvbm4sIFBHcmVzdWx0ICpyZXMsIGlu dCByb3dudW0pCiAJCQkJaWYgKGd6c2V0cGFyYW1zKHp0YXJmaWxlLCBjb21wcmVzc2xldmVs LAogCQkJCQkJCQlaX0RFRkFVTFRfU1RSQVRFR1kpICE9IFpfT0spCiAJCQkJewotCQkJCQlm cHJpbnRmKHN0ZGVyciwKLQkJCQkJCQlfKCIlczogY291bGQgbm90IHNldCBjb21wcmVzc2lv biBsZXZlbCAlZDogJXNcbiIpLAotCQkJCQkJCXByb2duYW1lLCBjb21wcmVzc2xldmVsLCBn ZXRfZ3pfZXJyb3IoenRhcmZpbGUpKTsKKwkJCQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3Qg c2V0IGNvbXByZXNzaW9uIGxldmVsICVkOiAlcyIsCisJCQkJCQkJCSBjb21wcmVzc2xldmVs LCBnZXRfZ3pfZXJyb3IoenRhcmZpbGUpKTsKIAkJCQkJZGlzY29ubmVjdF9hbmRfZXhpdCgx KTsKIAkJCQl9CiAJCQl9CkBAIC0xMDIzLDkgKzk3Niw4IEBAIFJlY2VpdmVUYXJGaWxlKFBH Y29ubiAqY29ubiwgUEdyZXN1bHQgKnJlcywgaW50IHJvd251bSkKIAkJCQlpZiAoZ3pzZXRw YXJhbXMoenRhcmZpbGUsIGNvbXByZXNzbGV2ZWwsCiAJCQkJCQkJCVpfREVGQVVMVF9TVFJB VEVHWSkgIT0gWl9PSykKIAkJCQl7Ci0JCQkJCWZwcmludGYoc3RkZXJyLAotCQkJCQkJCV8o IiVzOiBjb3VsZCBub3Qgc2V0IGNvbXByZXNzaW9uIGxldmVsICVkOiAlc1xuIiksCi0JCQkJ CQkJcHJvZ25hbWUsIGNvbXByZXNzbGV2ZWwsIGdldF9nel9lcnJvcih6dGFyZmlsZSkpOwor CQkJCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBzZXQgY29tcHJlc3Npb24gbGV2ZWwgJWQ6 ICVzIiwKKwkJCQkJCQkJIGNvbXByZXNzbGV2ZWwsIGdldF9nel9lcnJvcih6dGFyZmlsZSkp OwogCQkJCQlkaXNjb25uZWN0X2FuZF9leGl0KDEpOwogCQkJCX0KIAkJCX0KQEAgLTEwNTEs OSArMTAwMyw4IEBAIFJlY2VpdmVUYXJGaWxlKFBHY29ubiAqY29ubiwgUEdyZXN1bHQgKnJl cywgaW50IHJvd251bSkKIAkJCWlmIChnenNldHBhcmFtcyh6dGFyZmlsZSwgY29tcHJlc3Ns ZXZlbCwKIAkJCQkJCQlaX0RFRkFVTFRfU1RSQVRFR1kpICE9IFpfT0spCiAJCQl7Ci0JCQkJ ZnByaW50ZihzdGRlcnIsCi0JCQkJCQlfKCIlczogY291bGQgbm90IHNldCBjb21wcmVzc2lv biBsZXZlbCAlZDogJXNcbiIpLAotCQkJCQkJcHJvZ25hbWUsIGNvbXByZXNzbGV2ZWwsIGdl dF9nel9lcnJvcih6dGFyZmlsZSkpOworCQkJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IHNl dCBjb21wcmVzc2lvbiBsZXZlbCAlZDogJXMiLAorCQkJCQkJCSBjb21wcmVzc2xldmVsLCBn ZXRfZ3pfZXJyb3IoenRhcmZpbGUpKTsKIAkJCQlkaXNjb25uZWN0X2FuZF9leGl0KDEpOwog CQkJfQogCQl9CkBAIC0xMDcyLDkgKzEwMjMsOCBAQCBSZWNlaXZlVGFyRmlsZShQR2Nvbm4g KmNvbm4sIFBHcmVzdWx0ICpyZXMsIGludCByb3dudW0pCiAJCWlmICghenRhcmZpbGUpCiAJ CXsKIAkJCS8qIENvbXByZXNzaW9uIGlzIGluIHVzZSAqLwotCQkJZnByaW50ZihzdGRlcnIs Ci0JCQkJCV8oIiVzOiBjb3VsZCBub3QgY3JlYXRlIGNvbXByZXNzZWQgZmlsZSBcIiVzXCI6 ICVzXG4iKSwKLQkJCQkJcHJvZ25hbWUsIGZpbGVuYW1lLCBnZXRfZ3pfZXJyb3IoenRhcmZp bGUpKTsKKwkJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IGNyZWF0ZSBjb21wcmVzc2VkIGZp bGUgXCIlc1wiOiAlcyIsCisJCQkJCQkgZmlsZW5hbWUsIGdldF9nel9lcnJvcih6dGFyZmls ZSkpOwogCQkJZGlzY29ubmVjdF9hbmRfZXhpdCgxKTsKIAkJfQogCX0KQEAgLTEwODQsOCAr MTAzNCw3IEBAIFJlY2VpdmVUYXJGaWxlKFBHY29ubiAqY29ubiwgUEdyZXN1bHQgKnJlcywg aW50IHJvd251bSkKIAkJLyogRWl0aGVyIG5vIHpsaWIgc3VwcG9ydCwgb3IgemxpYiBzdXBw b3J0IGJ1dCBjb21wcmVzc2xldmVsID0gMCAqLwogCQlpZiAoIXRhcmZpbGUpCiAJCXsKLQkJ CWZwcmludGYoc3RkZXJyLCBfKCIlczogY291bGQgbm90IGNyZWF0ZSBmaWxlIFwiJXNcIjog JXNcbiIpLAotCQkJCQlwcm9nbmFtZSwgZmlsZW5hbWUsIHN0cmVycm9yKGVycm5vKSk7CisJ CQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBjcmVhdGUgZmlsZSBcIiVzXCI6ICVtIiwgZmls ZW5hbWUpOwogCQkJZGlzY29ubmVjdF9hbmRfZXhpdCgxKTsKIAkJfQogCX0KQEAgLTEwOTYs OCArMTA0NSw4IEBAIFJlY2VpdmVUYXJGaWxlKFBHY29ubiAqY29ubiwgUEdyZXN1bHQgKnJl cywgaW50IHJvd251bSkKIAlyZXMgPSBQUWdldFJlc3VsdChjb25uKTsKIAlpZiAoUFFyZXN1 bHRTdGF0dXMocmVzKSAhPSBQR1JFU19DT1BZX09VVCkKIAl7Ci0JCWZwcmludGYoc3RkZXJy LCBfKCIlczogY291bGQgbm90IGdldCBDT1BZIGRhdGEgc3RyZWFtOiAlcyIpLAotCQkJCXBy b2duYW1lLCBQUWVycm9yTWVzc2FnZShjb25uKSk7CisJCXBnX2xvZ19lcnJvcigiY291bGQg bm90IGdldCBDT1BZIGRhdGEgc3RyZWFtOiAlcyIsCisJCQkJCSBQUWVycm9yTWVzc2FnZShj b25uKSk7CiAJCWRpc2Nvbm5lY3RfYW5kX2V4aXQoMSk7CiAJfQogCkBAIC0xMTY0LDkgKzEx MTMsOCBAQCBSZWNlaXZlVGFyRmlsZShQR2Nvbm4gKmNvbm4sIFBHcmVzdWx0ICpyZXMsIGlu dCByb3dudW0pCiAJCQl7CiAJCQkJaWYgKGd6Y2xvc2UoenRhcmZpbGUpICE9IDApCiAJCQkJ ewotCQkJCQlmcHJpbnRmKHN0ZGVyciwKLQkJCQkJCQlfKCIlczogY291bGQgbm90IGNsb3Nl IGNvbXByZXNzZWQgZmlsZSBcIiVzXCI6ICVzXG4iKSwKLQkJCQkJCQlwcm9nbmFtZSwgZmls ZW5hbWUsIGdldF9nel9lcnJvcih6dGFyZmlsZSkpOworCQkJCQlwZ19sb2dfZXJyb3IoImNv dWxkIG5vdCBjbG9zZSBjb21wcmVzc2VkIGZpbGUgXCIlc1wiOiAlcyIsCisJCQkJCQkJCSBm aWxlbmFtZSwgZ2V0X2d6X2Vycm9yKHp0YXJmaWxlKSk7CiAJCQkJCWRpc2Nvbm5lY3RfYW5k X2V4aXQoMSk7CiAJCQkJfQogCQkJfQpAQCAtMTE3Nyw5ICsxMTI1LDggQEAgUmVjZWl2ZVRh ckZpbGUoUEdjb25uICpjb25uLCBQR3Jlc3VsdCAqcmVzLCBpbnQgcm93bnVtKQogCQkJCXsK IAkJCQkJaWYgKGZjbG9zZSh0YXJmaWxlKSAhPSAwKQogCQkJCQl7Ci0JCQkJCQlmcHJpbnRm KHN0ZGVyciwKLQkJCQkJCQkJXygiJXM6IGNvdWxkIG5vdCBjbG9zZSBmaWxlIFwiJXNcIjog JXNcbiIpLAotCQkJCQkJCQlwcm9nbmFtZSwgZmlsZW5hbWUsIHN0cmVycm9yKGVycm5vKSk7 CisJCQkJCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBjbG9zZSBmaWxlIFwiJXNcIjogJW0i LAorCQkJCQkJCQkJIGZpbGVuYW1lKTsKIAkJCQkJCWRpc2Nvbm5lY3RfYW5kX2V4aXQoMSk7 CiAJCQkJCX0KIAkJCQl9CkBAIC0xMTg5LDggKzExMzYsOCBAQCBSZWNlaXZlVGFyRmlsZShQ R2Nvbm4gKmNvbm4sIFBHcmVzdWx0ICpyZXMsIGludCByb3dudW0pCiAJCX0KIAkJZWxzZSBp ZiAociA9PSAtMikKIAkJewotCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBjb3VsZCBub3Qg cmVhZCBDT1BZIGRhdGE6ICVzIiksCi0JCQkJCXByb2duYW1lLCBQUWVycm9yTWVzc2FnZShj b25uKSk7CisJCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCByZWFkIENPUFkgZGF0YTogJXMi LAorCQkJCQkJIFBRZXJyb3JNZXNzYWdlKGNvbm4pKTsKIAkJCWRpc2Nvbm5lY3RfYW5kX2V4 aXQoMSk7CiAJCX0KIApAQCAtMTM2NCw3ICsxMzExLDcgQEAgUmVjZWl2ZVRhckZpbGUoUEdj b25uICpjb25uLCBQR3Jlc3VsdCAqcmVzLCBpbnQgcm93bnVtKQogCiAJLyogc3luYyB0aGUg cmVzdWx0aW5nIHRhciBmaWxlLCBlcnJvcnMgYXJlIG5vdCBjb25zaWRlcmVkIGZhdGFsICov CiAJaWYgKGRvX3N5bmMgJiYgc3RyY21wKGJhc2VkaXIsICItIikgIT0gMCkKLQkJKHZvaWQp IGZzeW5jX2ZuYW1lKGZpbGVuYW1lLCBmYWxzZSwgcHJvZ25hbWUpOworCQkodm9pZCkgZnN5 bmNfZm5hbWUoZmlsZW5hbWUsIGZhbHNlKTsKIH0KIAogCkBAIC0xNDI1LDggKzEzNzIsOCBA QCBSZWNlaXZlQW5kVW5wYWNrVGFyRmlsZShQR2Nvbm4gKmNvbm4sIFBHcmVzdWx0ICpyZXMs IGludCByb3dudW0pCiAJcmVzID0gUFFnZXRSZXN1bHQoY29ubik7CiAJaWYgKFBRcmVzdWx0 U3RhdHVzKHJlcykgIT0gUEdSRVNfQ09QWV9PVVQpCiAJewotCQlmcHJpbnRmKHN0ZGVyciwg XygiJXM6IGNvdWxkIG5vdCBnZXQgQ09QWSBkYXRhIHN0cmVhbTogJXMiKSwKLQkJCQlwcm9n bmFtZSwgUFFlcnJvck1lc3NhZ2UoY29ubikpOworCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5v dCBnZXQgQ09QWSBkYXRhIHN0cmVhbTogJXMiLAorCQkJCQkgUFFlcnJvck1lc3NhZ2UoY29u bikpOwogCQlkaXNjb25uZWN0X2FuZF9leGl0KDEpOwogCX0KIApAQCAtMTQ1NCw4ICsxNDAx LDggQEAgUmVjZWl2ZUFuZFVucGFja1RhckZpbGUoUEdjb25uICpjb25uLCBQR3Jlc3VsdCAq cmVzLCBpbnQgcm93bnVtKQogCQl9CiAJCWVsc2UgaWYgKHIgPT0gLTIpCiAJCXsKLQkJCWZw cmludGYoc3RkZXJyLCBfKCIlczogY291bGQgbm90IHJlYWQgQ09QWSBkYXRhOiAlcyIpLAot CQkJCQlwcm9nbmFtZSwgUFFlcnJvck1lc3NhZ2UoY29ubikpOworCQkJcGdfbG9nX2Vycm9y KCJjb3VsZCBub3QgcmVhZCBDT1BZIGRhdGE6ICVzIiwKKwkJCQkJCSBQUWVycm9yTWVzc2Fn ZShjb25uKSk7CiAJCQlkaXNjb25uZWN0X2FuZF9leGl0KDEpOwogCQl9CiAKQEAgLTE0Njgs OCArMTQxNSw3IEBAIFJlY2VpdmVBbmRVbnBhY2tUYXJGaWxlKFBHY29ubiAqY29ubiwgUEdy ZXN1bHQgKnJlcywgaW50IHJvd251bSkKIAkJCSAqLwogCQkJaWYgKHIgIT0gNTEyKQogCQkJ ewotCQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczogaW52YWxpZCB0YXIgYmxvY2sgaGVhZGVy IHNpemU6ICVkXG4iKSwKLQkJCQkJCXByb2duYW1lLCByKTsKKwkJCQlwZ19sb2dfZXJyb3Io ImludmFsaWQgdGFyIGJsb2NrIGhlYWRlciBzaXplOiAlZCIsIHIpOwogCQkJCWRpc2Nvbm5l Y3RfYW5kX2V4aXQoMSk7CiAJCQl9CiAJCQl0b3RhbGRvbmUgKz0gNTEyOwpAQCAtMTUxNywx NyArMTQ2MywxNSBAQCBSZWNlaXZlQW5kVW5wYWNrVGFyRmlsZShQR2Nvbm4gKmNvbm4sIFBH cmVzdWx0ICpyZXMsIGludCByb3dudW0pCiAJCQkJCQkJICAgcGdfc3RyX2VuZHN3aXRoKGZp bGVuYW1lLCAiL2FyY2hpdmVfc3RhdHVzIikpICYmCiAJCQkJCQkJICBlcnJubyA9PSBFRVhJ U1QpKQogCQkJCQkJewotCQkJCQkJCWZwcmludGYoc3RkZXJyLAotCQkJCQkJCQkJXygiJXM6 IGNvdWxkIG5vdCBjcmVhdGUgZGlyZWN0b3J5IFwiJXNcIjogJXNcbiIpLAotCQkJCQkJCQkJ cHJvZ25hbWUsIGZpbGVuYW1lLCBzdHJlcnJvcihlcnJubykpOworCQkJCQkJCXBnX2xvZ19l cnJvcigiY291bGQgbm90IGNyZWF0ZSBkaXJlY3RvcnkgXCIlc1wiOiAlbSIsCisJCQkJCQkJ CQkJIGZpbGVuYW1lKTsKIAkJCQkJCQlkaXNjb25uZWN0X2FuZF9leGl0KDEpOwogCQkJCQkJ fQogCQkJCQl9CiAjaWZuZGVmIFdJTjMyCiAJCQkJCWlmIChjaG1vZChmaWxlbmFtZSwgKG1v ZGVfdCkgZmlsZW1vZGUpKQotCQkJCQkJZnByaW50ZihzdGRlcnIsCi0JCQkJCQkJCV8oIiVz OiBjb3VsZCBub3Qgc2V0IHBlcm1pc3Npb25zIG9uIGRpcmVjdG9yeSBcIiVzXCI6ICVzXG4i KSwKLQkJCQkJCQkJcHJvZ25hbWUsIGZpbGVuYW1lLCBzdHJlcnJvcihlcnJubykpOworCQkJ CQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3Qgc2V0IHBlcm1pc3Npb25zIG9uIGRpcmVjdG9y eSBcIiVzXCI6ICVtIiwKKwkJCQkJCQkJCSBmaWxlbmFtZSk7CiAjZW5kaWYKIAkJCQl9CiAJ CQkJZWxzZSBpZiAoY29weWJ1ZlsxNTZdID09ICcyJykKQEAgLTE1NDksMTggKzE0OTMsMTUg QEAgUmVjZWl2ZUFuZFVucGFja1RhckZpbGUoUEdjb25uICpjb25uLCBQR3Jlc3VsdCAqcmVz LCBpbnQgcm93bnVtKQogCQkJCQltYXBwZWRfdGJsc3BjX3BhdGggPSBnZXRfdGFibGVzcGFj ZV9tYXBwaW5nKCZjb3B5YnVmWzE1N10pOwogCQkJCQlpZiAoc3ltbGluayhtYXBwZWRfdGJs c3BjX3BhdGgsIGZpbGVuYW1lKSAhPSAwKQogCQkJCQl7Ci0JCQkJCQlmcHJpbnRmKHN0ZGVy ciwKLQkJCQkJCQkJXygiJXM6IGNvdWxkIG5vdCBjcmVhdGUgc3ltYm9saWMgbGluayBmcm9t IFwiJXNcIiB0byBcIiVzXCI6ICVzXG4iKSwKLQkJCQkJCQkJcHJvZ25hbWUsIGZpbGVuYW1l LCBtYXBwZWRfdGJsc3BjX3BhdGgsCi0JCQkJCQkJCXN0cmVycm9yKGVycm5vKSk7CisJCQkJ CQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBjcmVhdGUgc3ltYm9saWMgbGluayBmcm9tIFwi JXNcIiB0byBcIiVzXCI6ICVtIiwKKwkJCQkJCQkJCSBmaWxlbmFtZSwgbWFwcGVkX3RibHNw Y19wYXRoKTsKIAkJCQkJCWRpc2Nvbm5lY3RfYW5kX2V4aXQoMSk7CiAJCQkJCX0KIAkJCQl9 CiAJCQkJZWxzZQogCQkJCXsKLQkJCQkJZnByaW50ZihzdGRlcnIsCi0JCQkJCQkJXygiJXM6 IHVucmVjb2duaXplZCBsaW5rIGluZGljYXRvciBcIiVjXCJcbiIpLAotCQkJCQkJCXByb2du YW1lLCBjb3B5YnVmWzE1Nl0pOworCQkJCQlwZ19sb2dfZXJyb3IoInVucmVjb2duaXplZCBs aW5rIGluZGljYXRvciBcIiVjXCIiLAorCQkJCQkJCQkgY29weWJ1ZlsxNTZdKTsKIAkJCQkJ ZGlzY29ubmVjdF9hbmRfZXhpdCgxKTsKIAkJCQl9CiAJCQkJY29udGludWU7CQkvKiBkaXJl Y3Rvcnkgb3IgbGluayBoYW5kbGVkICovCkBAIC0xNTcyLDE1ICsxNTEzLDE0IEBAIFJlY2Vp dmVBbmRVbnBhY2tUYXJGaWxlKFBHY29ubiAqY29ubiwgUEdyZXN1bHQgKnJlcywgaW50IHJv d251bSkKIAkJCWZpbGUgPSBmb3BlbihmaWxlbmFtZSwgIndiIik7CiAJCQlpZiAoIWZpbGUp CiAJCQl7Ci0JCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBjb3VsZCBub3QgY3JlYXRlIGZp bGUgXCIlc1wiOiAlc1xuIiksCi0JCQkJCQlwcm9nbmFtZSwgZmlsZW5hbWUsIHN0cmVycm9y KGVycm5vKSk7CisJCQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgY3JlYXRlIGZpbGUgXCIl c1wiOiAlbSIsIGZpbGVuYW1lKTsKIAkJCQlkaXNjb25uZWN0X2FuZF9leGl0KDEpOwogCQkJ fQogCiAjaWZuZGVmIFdJTjMyCiAJCQlpZiAoY2htb2QoZmlsZW5hbWUsIChtb2RlX3QpIGZp bGVtb2RlKSkKLQkJCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCBzZXQgcGVy bWlzc2lvbnMgb24gZmlsZSBcIiVzXCI6ICVzXG4iKSwKLQkJCQkJCXByb2duYW1lLCBmaWxl bmFtZSwgc3RyZXJyb3IoZXJybm8pKTsKKwkJCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBz ZXQgcGVybWlzc2lvbnMgb24gZmlsZSBcIiVzXCI6ICVtIiwKKwkJCQkJCQkgZmlsZW5hbWUp OwogI2VuZGlmCiAKIAkJCWlmIChjdXJyZW50X2xlbl9sZWZ0ID09IDApCkBAIC0xNjEyLDgg KzE1NTIsNyBAQCBSZWNlaXZlQW5kVW5wYWNrVGFyRmlsZShQR2Nvbm4gKmNvbm4sIFBHcmVz dWx0ICpyZXMsIGludCByb3dudW0pCiAKIAkJCWlmIChmd3JpdGUoY29weWJ1ZiwgciwgMSwg ZmlsZSkgIT0gMSkKIAkJCXsKLQkJCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5v dCB3cml0ZSB0byBmaWxlIFwiJXNcIjogJXNcbiIpLAotCQkJCQkJcHJvZ25hbWUsIGZpbGVu YW1lLCBzdHJlcnJvcihlcnJubykpOworCQkJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IHdy aXRlIHRvIGZpbGUgXCIlc1wiOiAlbSIsIGZpbGVuYW1lKTsKIAkJCQlkaXNjb25uZWN0X2Fu ZF9leGl0KDEpOwogCQkJfQogCQkJdG90YWxkb25lICs9IHI7CkBAIC0xNjM3LDkgKzE1NzYs NyBAQCBSZWNlaXZlQW5kVW5wYWNrVGFyRmlsZShQR2Nvbm4gKmNvbm4sIFBHcmVzdWx0ICpy ZXMsIGludCByb3dudW0pCiAKIAlpZiAoZmlsZSAhPSBOVUxMKQogCXsKLQkJZnByaW50Zihz dGRlcnIsCi0JCQkJXygiJXM6IENPUFkgc3RyZWFtIGVuZGVkIGJlZm9yZSBsYXN0IGZpbGUg d2FzIGZpbmlzaGVkXG4iKSwKLQkJCQlwcm9nbmFtZSk7CisJCXBnX2xvZ19lcnJvcigiQ09Q WSBzdHJlYW0gZW5kZWQgYmVmb3JlIGxhc3QgZmlsZSB3YXMgZmluaXNoZWQiKTsKIAkJZGlz Y29ubmVjdF9hbmRfZXhpdCgxKTsKIAl9CiAKQEAgLTE2NjYsNyArMTYwMyw3IEBAIGVzY2Fw ZV9xdW90ZXMoY29uc3QgY2hhciAqc3JjKQogCiAJaWYgKCFyZXN1bHQpCiAJewotCQlmcHJp bnRmKHN0ZGVyciwgXygiJXM6IG91dCBvZiBtZW1vcnlcbiIpLCBwcm9nbmFtZSk7CisJCXBn X2xvZ19lcnJvcigib3V0IG9mIG1lbW9yeSIpOwogCQlleGl0KDEpOwogCX0KIAlyZXR1cm4g cmVzdWx0OwpAQCAtMTY4NiwxNCArMTYyMywxNCBAQCBHZW5lcmF0ZVJlY292ZXJ5Q29uZihQ R2Nvbm4gKmNvbm4pCiAJcmVjb3Zlcnljb25mY29udGVudHMgPSBjcmVhdGVQUUV4cEJ1ZmZl cigpOwogCWlmICghcmVjb3Zlcnljb25mY29udGVudHMpCiAJewotCQlmcHJpbnRmKHN0ZGVy ciwgXygiJXM6IG91dCBvZiBtZW1vcnlcbiIpLCBwcm9nbmFtZSk7CisJCXBnX2xvZ19lcnJv cigib3V0IG9mIG1lbW9yeSIpOwogCQlkaXNjb25uZWN0X2FuZF9leGl0KDEpOwogCX0KIAog CWNvbm5PcHRpb25zID0gUFFjb25uaW5mbyhjb25uKTsKIAlpZiAoY29ubk9wdGlvbnMgPT0g TlVMTCkKIAl7Ci0JCWZwcmludGYoc3RkZXJyLCBfKCIlczogb3V0IG9mIG1lbW9yeVxuIiks IHByb2duYW1lKTsKKwkJcGdfbG9nX2Vycm9yKCJvdXQgb2YgbWVtb3J5Iik7CiAJCWRpc2Nv bm5lY3RfYW5kX2V4aXQoMSk7CiAJfQogCkBAIC0xNzQ0LDcgKzE2ODEsNyBAQCBHZW5lcmF0 ZVJlY292ZXJ5Q29uZihQR2Nvbm4gKmNvbm4pCiAJaWYgKFBRRXhwQnVmZmVyQnJva2VuKHJl Y292ZXJ5Y29uZmNvbnRlbnRzKSB8fAogCQlQUUV4cEJ1ZmZlckRhdGFCcm9rZW4oY29ubmlu Zm9fYnVmKSkKIAl7Ci0JCWZwcmludGYoc3RkZXJyLCBfKCIlczogb3V0IG9mIG1lbW9yeVxu IiksIHByb2duYW1lKTsKKwkJcGdfbG9nX2Vycm9yKCJvdXQgb2YgbWVtb3J5Iik7CiAJCWRp c2Nvbm5lY3RfYW5kX2V4aXQoMSk7CiAJfQogCkBAIC0xNzcwLDE1ICsxNzA3LDEzIEBAIFdy aXRlUmVjb3ZlcnlDb25mKHZvaWQpCiAJY2YgPSBmb3BlbihmaWxlbmFtZSwgImEiKTsKIAlp ZiAoY2YgPT0gTlVMTCkKIAl7Ci0JCWZwcmludGYoc3RkZXJyLCBfKCIlczogY291bGQgbm90 IG9wZW4gZmlsZSBcIiVzXCI6ICVzXG4iKSwgcHJvZ25hbWUsIGZpbGVuYW1lLCBzdHJlcnJv cihlcnJubykpOworCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBvcGVuIGZpbGUgXCIlc1wi OiAlbSIsIGZpbGVuYW1lKTsKIAkJZGlzY29ubmVjdF9hbmRfZXhpdCgxKTsKIAl9CiAKIAlp ZiAoZndyaXRlKHJlY292ZXJ5Y29uZmNvbnRlbnRzLT5kYXRhLCByZWNvdmVyeWNvbmZjb250 ZW50cy0+bGVuLCAxLCBjZikgIT0gMSkKIAl7Ci0JCWZwcmludGYoc3RkZXJyLAotCQkJCV8o IiVzOiBjb3VsZCBub3Qgd3JpdGUgdG8gZmlsZSBcIiVzXCI6ICVzXG4iKSwKLQkJCQlwcm9n bmFtZSwgZmlsZW5hbWUsIHN0cmVycm9yKGVycm5vKSk7CisJCXBnX2xvZ19lcnJvcigiY291 bGQgbm90IHdyaXRlIHRvIGZpbGUgXCIlc1wiOiAlbSIsIGZpbGVuYW1lKTsKIAkJZGlzY29u bmVjdF9hbmRfZXhpdCgxKTsKIAl9CiAKQEAgLTE3ODgsNyArMTcyMyw3IEBAIFdyaXRlUmVj b3ZlcnlDb25mKHZvaWQpCiAJY2YgPSBmb3BlbihmaWxlbmFtZSwgInciKTsKIAlpZiAoY2Yg PT0gTlVMTCkKIAl7Ci0JCWZwcmludGYoc3RkZXJyLCBfKCIlczogY291bGQgbm90IGNyZWF0 ZSBmaWxlIFwiJXNcIjogJXNcbiIpLCBwcm9nbmFtZSwgZmlsZW5hbWUsIHN0cmVycm9yKGVy cm5vKSk7CisJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IGNyZWF0ZSBmaWxlIFwiJXNcIjog JW0iLCBmaWxlbmFtZSk7CiAJCWRpc2Nvbm5lY3RfYW5kX2V4aXQoMSk7CiAJfQogCkBAIC0x ODI4LDggKzE3NjMsOCBAQCBCYXNlQmFja3VwKHZvaWQpCiAJewogCQljb25zdCBjaGFyICpz ZXJ2ZXJ2ZXIgPSBQUXBhcmFtZXRlclN0YXR1cyhjb25uLCAic2VydmVyX3ZlcnNpb24iKTsK IAotCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGluY29tcGF0aWJsZSBzZXJ2ZXIgdmVyc2lv biAlc1xuIiksCi0JCQkJcHJvZ25hbWUsIHNlcnZlcnZlciA/IHNlcnZlcnZlciA6ICIndW5r bm93biciKTsKKwkJcGdfbG9nX2Vycm9yKCJpbmNvbXBhdGlibGUgc2VydmVyIHZlcnNpb24g JXMiLAorCQkJCQkgc2VydmVydmVyID8gc2VydmVydmVyIDogIid1bmtub3duJyIpOwogCQlk aXNjb25uZWN0X2FuZF9leGl0KDEpOwogCX0KIApAQCAtMTg0Myw3ICsxNzc4LDcgQEAgQmFz ZUJhY2t1cCh2b2lkKQogCQkgKiBFcnJvciBtZXNzYWdlIGFscmVhZHkgd3JpdHRlbiBpbiBD aGVja1NlcnZlclZlcnNpb25Gb3JTdHJlYW1pbmcoKSwKIAkJICogYnV0IGFkZCBhIGhpbnQg YWJvdXQgdXNpbmcgLVggbm9uZS4KIAkJICovCi0JCWZwcmludGYoc3RkZXJyLCBfKCJISU5U OiB1c2UgLVggbm9uZSBvciAtWCBmZXRjaCB0byBkaXNhYmxlIGxvZyBzdHJlYW1pbmdcbiIp KTsKKwkJcGdfbG9nX2luZm8oIkhJTlQ6IHVzZSAtWCBub25lIG9yIC1YIGZldGNoIHRvIGRp c2FibGUgbG9nIHN0cmVhbWluZyIpOwogCQlkaXNjb25uZWN0X2FuZF9leGl0KDEpOwogCX0K IApAQCAtMTg2OCw5ICsxODAzLDcgQEAgQmFzZUJhY2t1cCh2b2lkKQogCQltYXhyYXRlX2Ns YXVzZSA9IHBzcHJpbnRmKCJNQVhfUkFURSAldSIsIG1heHJhdGUpOwogCiAJaWYgKHZlcmJv c2UpCi0JCWZwcmludGYoc3RkZXJyLAotCQkJCV8oIiVzOiBpbml0aWF0aW5nIGJhc2UgYmFj a3VwLCB3YWl0aW5nIGZvciBjaGVja3BvaW50IHRvIGNvbXBsZXRlXG4iKSwKLQkJCQlwcm9n bmFtZSk7CisJCXBnX2xvZ19pbmZvKCJpbml0aWF0aW5nIGJhc2UgYmFja3VwLCB3YWl0aW5n IGZvciBjaGVja3BvaW50IHRvIGNvbXBsZXRlIik7CiAKIAlpZiAoc2hvd3Byb2dyZXNzICYm ICF2ZXJib3NlKQogCXsKQEAgLTE4OTQsOCArMTgyNyw4IEBAIEJhc2VCYWNrdXAodm9pZCkK IAogCWlmIChQUXNlbmRRdWVyeShjb25uLCBiYXNlYmtwKSA9PSAwKQogCXsKLQkJZnByaW50 ZihzdGRlcnIsIF8oIiVzOiBjb3VsZCBub3Qgc2VuZCByZXBsaWNhdGlvbiBjb21tYW5kIFwi JXNcIjogJXMiKSwKLQkJCQlwcm9nbmFtZSwgIkJBU0VfQkFDS1VQIiwgUFFlcnJvck1lc3Nh Z2UoY29ubikpOworCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBzZW5kIHJlcGxpY2F0aW9u IGNvbW1hbmQgXCIlc1wiOiAlcyIsCisJCQkJCSAiQkFTRV9CQUNLVVAiLCBQUWVycm9yTWVz c2FnZShjb25uKSk7CiAJCWRpc2Nvbm5lY3RfYW5kX2V4aXQoMSk7CiAJfQogCkBAIC0xOTA1 LDIyICsxODM4LDIxIEBAIEJhc2VCYWNrdXAodm9pZCkKIAlyZXMgPSBQUWdldFJlc3VsdChj b25uKTsKIAlpZiAoUFFyZXN1bHRTdGF0dXMocmVzKSAhPSBQR1JFU19UVVBMRVNfT0spCiAJ ewotCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCBpbml0aWF0ZSBiYXNlIGJh Y2t1cDogJXMiKSwKLQkJCQlwcm9nbmFtZSwgUFFlcnJvck1lc3NhZ2UoY29ubikpOworCQlw Z19sb2dfZXJyb3IoImNvdWxkIG5vdCBpbml0aWF0ZSBiYXNlIGJhY2t1cDogJXMiLAorCQkJ CQkgUFFlcnJvck1lc3NhZ2UoY29ubikpOwogCQlkaXNjb25uZWN0X2FuZF9leGl0KDEpOwog CX0KIAlpZiAoUFFudHVwbGVzKHJlcykgIT0gMSkKIAl7Ci0JCWZwcmludGYoc3RkZXJyLAot CQkJCV8oIiVzOiBzZXJ2ZXIgcmV0dXJuZWQgdW5leHBlY3RlZCByZXNwb25zZSB0byBCQVNF X0JBQ0tVUCBjb21tYW5kOyBnb3QgJWQgcm93cyBhbmQgJWQgZmllbGRzLCBleHBlY3RlZCAl ZCByb3dzIGFuZCAlZCBmaWVsZHNcbiIpLAotCQkJCXByb2duYW1lLCBQUW50dXBsZXMocmVz KSwgUFFuZmllbGRzKHJlcyksIDEsIDIpOworCQlwZ19sb2dfZXJyb3IoInNlcnZlciByZXR1 cm5lZCB1bmV4cGVjdGVkIHJlc3BvbnNlIHRvIEJBU0VfQkFDS1VQIGNvbW1hbmQ7IGdvdCAl ZCByb3dzIGFuZCAlZCBmaWVsZHMsIGV4cGVjdGVkICVkIHJvd3MgYW5kICVkIGZpZWxkcyIs CisJCQkJCSBQUW50dXBsZXMocmVzKSwgUFFuZmllbGRzKHJlcyksIDEsIDIpOwogCQlkaXNj b25uZWN0X2FuZF9leGl0KDEpOwogCX0KIAogCXN0cmxjcHkoeGxvZ3N0YXJ0LCBQUWdldHZh bHVlKHJlcywgMCwgMCksIHNpemVvZih4bG9nc3RhcnQpKTsKIAogCWlmICh2ZXJib3NlKQot CQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNoZWNrcG9pbnQgY29tcGxldGVkXG4iKSwgcHJv Z25hbWUpOworCQlwZ19sb2dfaW5mbygiY2hlY2twb2ludCBjb21wbGV0ZWQiKTsKIAogCS8q CiAJICogOS4zIGFuZCBsYXRlciBzZW5kcyB0aGUgVExJIG9mIHRoZSBzdGFydGluZyBwb2lu dC4gV2l0aCBvbGRlciBzZXJ2ZXJzLApAQCAtMTkzNSw4ICsxODY3LDggQEAgQmFzZUJhY2t1 cCh2b2lkKQogCU1lbVNldCh4bG9nZW5kLCAwLCBzaXplb2YoeGxvZ2VuZCkpOwogCiAJaWYg KHZlcmJvc2UgJiYgaW5jbHVkZXdhbCAhPSBOT19XQUwpCi0JCWZwcmludGYoc3RkZXJyLCBf KCIlczogd3JpdGUtYWhlYWQgbG9nIHN0YXJ0IHBvaW50OiAlcyBvbiB0aW1lbGluZSAldVxu IiksCi0JCQkJcHJvZ25hbWUsIHhsb2dzdGFydCwgc3RhcnR0bGkpOworCQlwZ19sb2dfaW5m bygid3JpdGUtYWhlYWQgbG9nIHN0YXJ0IHBvaW50OiAlcyBvbiB0aW1lbGluZSAldSIsCisJ CQkJCXhsb2dzdGFydCwgc3RhcnR0bGkpOwogCiAJLyoKIAkgKiBHZXQgdGhlIGhlYWRlcgpA QCAtMTk0NCwxMyArMTg3NiwxMyBAQCBCYXNlQmFja3VwKHZvaWQpCiAJcmVzID0gUFFnZXRS ZXN1bHQoY29ubik7CiAJaWYgKFBRcmVzdWx0U3RhdHVzKHJlcykgIT0gUEdSRVNfVFVQTEVT X09LKQogCXsKLQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBjb3VsZCBub3QgZ2V0IGJhY2t1 cCBoZWFkZXI6ICVzIiksCi0JCQkJcHJvZ25hbWUsIFBRZXJyb3JNZXNzYWdlKGNvbm4pKTsK KwkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgZ2V0IGJhY2t1cCBoZWFkZXI6ICVzIiwKKwkJ CQkJIFBRZXJyb3JNZXNzYWdlKGNvbm4pKTsKIAkJZGlzY29ubmVjdF9hbmRfZXhpdCgxKTsK IAl9CiAJaWYgKFBRbnR1cGxlcyhyZXMpIDwgMSkKIAl7Ci0JCWZwcmludGYoc3RkZXJyLCBf KCIlczogbm8gZGF0YSByZXR1cm5lZCBmcm9tIHNlcnZlclxuIiksIHByb2duYW1lKTsKKwkJ cGdfbG9nX2Vycm9yKCJubyBkYXRhIHJldHVybmVkIGZyb20gc2VydmVyIik7CiAJCWRpc2Nv bm5lY3RfYW5kX2V4aXQoMSk7CiAJfQogCkBAIC0xOTgxLDkgKzE5MTMsOCBAQCBCYXNlQmFj a3VwKHZvaWQpCiAJICovCiAJaWYgKGZvcm1hdCA9PSAndCcgJiYgc3RyY21wKGJhc2VkaXIs ICItIikgPT0gMCAmJiBQUW50dXBsZXMocmVzKSA+IDEpCiAJewotCQlmcHJpbnRmKHN0ZGVy ciwKLQkJCQlfKCIlczogY2FuIG9ubHkgd3JpdGUgc2luZ2xlIHRhYmxlc3BhY2UgdG8gc3Rk b3V0LCBkYXRhYmFzZSBoYXMgJWRcbiIpLAotCQkJCXByb2duYW1lLCBQUW50dXBsZXMocmVz KSk7CisJCXBnX2xvZ19lcnJvcigiY2FuIG9ubHkgd3JpdGUgc2luZ2xlIHRhYmxlc3BhY2Ug dG8gc3Rkb3V0LCBkYXRhYmFzZSBoYXMgJWQiLAorCQkJCQkgUFFudHVwbGVzKHJlcykpOwog CQlkaXNjb25uZWN0X2FuZF9leGl0KDEpOwogCX0KIApAQCAtMTk5NCw4ICsxOTI1LDcgQEAg QmFzZUJhY2t1cCh2b2lkKQogCWlmIChpbmNsdWRld2FsID09IFNUUkVBTV9XQUwpCiAJewog CQlpZiAodmVyYm9zZSkKLQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczogc3RhcnRpbmcgYmFj a2dyb3VuZCBXQUwgcmVjZWl2ZXJcbiIpLAotCQkJCQlwcm9nbmFtZSk7CisJCQlwZ19sb2df aW5mbygic3RhcnRpbmcgYmFja2dyb3VuZCBXQUwgcmVjZWl2ZXIiKTsKIAkJU3RhcnRMb2dT dHJlYW1lcih4bG9nc3RhcnQsIHN0YXJ0dGxpLCBzeXNpZGVudGlmaWVyKTsKIAl9CiAKQEAg LTIwMjUsMjEgKzE5NTUsMTggQEAgQmFzZUJhY2t1cCh2b2lkKQogCXJlcyA9IFBRZ2V0UmVz dWx0KGNvbm4pOwogCWlmIChQUXJlc3VsdFN0YXR1cyhyZXMpICE9IFBHUkVTX1RVUExFU19P SykKIAl7Ci0JCWZwcmludGYoc3RkZXJyLAotCQkJCV8oIiVzOiBjb3VsZCBub3QgZ2V0IHdy aXRlLWFoZWFkIGxvZyBlbmQgcG9zaXRpb24gZnJvbSBzZXJ2ZXI6ICVzIiksCi0JCQkJcHJv Z25hbWUsIFBRZXJyb3JNZXNzYWdlKGNvbm4pKTsKKwkJcGdfbG9nX2Vycm9yKCJjb3VsZCBu b3QgZ2V0IHdyaXRlLWFoZWFkIGxvZyBlbmQgcG9zaXRpb24gZnJvbSBzZXJ2ZXI6ICVzIiwK KwkJCQkJIFBRZXJyb3JNZXNzYWdlKGNvbm4pKTsKIAkJZGlzY29ubmVjdF9hbmRfZXhpdCgx KTsKIAl9CiAJaWYgKFBRbnR1cGxlcyhyZXMpICE9IDEpCiAJewotCQlmcHJpbnRmKHN0ZGVy ciwKLQkJCQlfKCIlczogbm8gd3JpdGUtYWhlYWQgbG9nIGVuZCBwb3NpdGlvbiByZXR1cm5l ZCBmcm9tIHNlcnZlclxuIiksCi0JCQkJcHJvZ25hbWUpOworCQlwZ19sb2dfZXJyb3IoIm5v IHdyaXRlLWFoZWFkIGxvZyBlbmQgcG9zaXRpb24gcmV0dXJuZWQgZnJvbSBzZXJ2ZXIiKTsK IAkJZGlzY29ubmVjdF9hbmRfZXhpdCgxKTsKIAl9CiAJc3RybGNweSh4bG9nZW5kLCBQUWdl dHZhbHVlKHJlcywgMCwgMCksIHNpemVvZih4bG9nZW5kKSk7CiAJaWYgKHZlcmJvc2UgJiYg aW5jbHVkZXdhbCAhPSBOT19XQUwpCi0JCWZwcmludGYoc3RkZXJyLCBfKCIlczogd3JpdGUt YWhlYWQgbG9nIGVuZCBwb2ludDogJXNcbiIpLCBwcm9nbmFtZSwgeGxvZ2VuZCk7CisJCXBn X2xvZ19pbmZvKCJ3cml0ZS1haGVhZCBsb2cgZW5kIHBvaW50OiAlcyIsIHhsb2dlbmQpOwog CVBRY2xlYXIocmVzKTsKIAogCXJlcyA9IFBRZ2V0UmVzdWx0KGNvbm4pOwpAQCAtMjA1MCwx NCArMTk3NywxMyBAQCBCYXNlQmFja3VwKHZvaWQpCiAJCWlmIChzcWxzdGF0ZSAmJgogCQkJ c3RyY21wKHNxbHN0YXRlLCBFUlJDT0RFX0RBVEFfQ09SUlVQVEVEKSA9PSAwKQogCQl7Ci0J CQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNoZWNrc3VtIGVycm9yIG9jY3VycmVkXG4iKSwK LQkJCQkJcHJvZ25hbWUpOworCQkJcGdfbG9nX2Vycm9yKCJjaGVja3N1bSBlcnJvciBvY2N1 cnJlZCIpOwogCQkJY2hlY2tzdW1fZmFpbHVyZSA9IHRydWU7CiAJCX0KIAkJZWxzZQogCQl7 Ci0JCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGZpbmFsIHJlY2VpdmUgZmFpbGVkOiAlcyIp LAotCQkJCQlwcm9nbmFtZSwgUFFlcnJvck1lc3NhZ2UoY29ubikpOworCQkJcGdfbG9nX2Vy cm9yKCJmaW5hbCByZWNlaXZlIGZhaWxlZDogJXMiLAorCQkJCQkJIFBRZXJyb3JNZXNzYWdl KGNvbm4pKTsKIAkJfQogCQlkaXNjb25uZWN0X2FuZF9leGl0KDEpOwogCX0KQEAgLTIwODAs MTUgKzIwMDYsMTIgQEAgQmFzZUJhY2t1cCh2b2lkKQogI2VuZGlmCiAKIAkJaWYgKHZlcmJv c2UpCi0JCQlmcHJpbnRmKHN0ZGVyciwKLQkJCQkJXygiJXM6IHdhaXRpbmcgZm9yIGJhY2tn cm91bmQgcHJvY2VzcyB0byBmaW5pc2ggc3RyZWFtaW5nIC4uLlxuIiksIHByb2duYW1lKTsK KwkJCXBnX2xvZ19pbmZvKCJ3YWl0aW5nIGZvciBiYWNrZ3JvdW5kIHByb2Nlc3MgdG8gZmlu aXNoIHN0cmVhbWluZyAuLi4iKTsKIAogI2lmbmRlZiBXSU4zMgogCQlpZiAod3JpdGUoYmdw aXBlWzFdLCB4bG9nZW5kLCBzdHJsZW4oeGxvZ2VuZCkpICE9IHN0cmxlbih4bG9nZW5kKSkK IAkJewotCQkJZnByaW50ZihzdGRlcnIsCi0JCQkJCV8oIiVzOiBjb3VsZCBub3Qgc2VuZCBj b21tYW5kIHRvIGJhY2tncm91bmQgcGlwZTogJXNcbiIpLAotCQkJCQlwcm9nbmFtZSwgc3Ry ZXJyb3IoZXJybm8pKTsKKwkJCXBnX2xvZ19pbmZvKCJjb3VsZCBub3Qgc2VuZCBjb21tYW5k IHRvIGJhY2tncm91bmQgcGlwZTogJW0iKTsKIAkJCWRpc2Nvbm5lY3RfYW5kX2V4aXQoMSk7 CiAJCX0KIApAQCAtMjA5NiwyMCArMjAxOSwxNyBAQCBCYXNlQmFja3VwKHZvaWQpCiAJCXIg PSB3YWl0cGlkKGJnY2hpbGQsICZzdGF0dXMsIDApOwogCQlpZiAociA9PSAocGlkX3QpIC0x KQogCQl7Ci0JCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCB3YWl0IGZvciBj aGlsZCBwcm9jZXNzOiAlc1xuIiksCi0JCQkJCXByb2duYW1lLCBzdHJlcnJvcihlcnJubykp OworCQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3Qgd2FpdCBmb3IgY2hpbGQgcHJvY2Vzczog JW0iKTsKIAkJCWRpc2Nvbm5lY3RfYW5kX2V4aXQoMSk7CiAJCX0KIAkJaWYgKHIgIT0gYmdj aGlsZCkKIAkJewotCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBjaGlsZCAlZCBkaWVkLCBl eHBlY3RlZCAlZFxuIiksCi0JCQkJCXByb2duYW1lLCAoaW50KSByLCAoaW50KSBiZ2NoaWxk KTsKKwkJCXBnX2xvZ19lcnJvcigiY2hpbGQgJWQgZGllZCwgZXhwZWN0ZWQgJWQiLCAoaW50 KSByLCAoaW50KSBiZ2NoaWxkKTsKIAkJCWRpc2Nvbm5lY3RfYW5kX2V4aXQoMSk7CiAJCX0K IAkJaWYgKHN0YXR1cyAhPSAwKQogCQl7Ci0JCQlmcHJpbnRmKHN0ZGVyciwgIiVzOiAlc1xu IiwKLQkJCQkJcHJvZ25hbWUsIHdhaXRfcmVzdWx0X3RvX3N0cihzdGF0dXMpKTsKKwkJCXBn X2xvZ19lcnJvcigiJXMiLCB3YWl0X3Jlc3VsdF90b19zdHIoc3RhdHVzKSk7CiAJCQlkaXNj b25uZWN0X2FuZF9leGl0KDEpOwogCQl9CiAJCS8qIEV4aXRlZCBub3JtYWxseSwgd2UncmUg aGFwcHkhICovCkBAIC0yMTIyLDkgKzIwNDIsOCBAQCBCYXNlQmFja3VwKHZvaWQpCiAJCSAq LwogCQlpZiAoc3NjYW5mKHhsb2dlbmQsICIlWC8lWCIsICZoaSwgJmxvKSAhPSAyKQogCQl7 Ci0JCQlmcHJpbnRmKHN0ZGVyciwKLQkJCQkJXygiJXM6IGNvdWxkIG5vdCBwYXJzZSB3cml0 ZS1haGVhZCBsb2cgbG9jYXRpb24gXCIlc1wiXG4iKSwKLQkJCQkJcHJvZ25hbWUsIHhsb2dl bmQpOworCQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgcGFyc2Ugd3JpdGUtYWhlYWQgbG9n IGxvY2F0aW9uIFwiJXNcIiIsCisJCQkJCQkgeGxvZ2VuZCk7CiAJCQlkaXNjb25uZWN0X2Fu ZF9leGl0KDEpOwogCQl9CiAJCXhsb2dlbmRwdHIgPSAoKHVpbnQ2NCkgaGkpIDw8IDMyIHwg bG87CkBAIC0yMTM1LDIxICsyMDU0LDE5IEBAIEJhc2VCYWNrdXAodm9pZCkKIAkJCVdBSVRf T0JKRUNUXzApCiAJCXsKIAkJCV9kb3NtYXBlcnIoR2V0TGFzdEVycm9yKCkpOwotCQkJZnBy aW50ZihzdGRlcnIsIF8oIiVzOiBjb3VsZCBub3Qgd2FpdCBmb3IgY2hpbGQgdGhyZWFkOiAl c1xuIiksCi0JCQkJCXByb2duYW1lLCBzdHJlcnJvcihlcnJubykpOworCQkJcGdfbG9nX2Vy cm9yKCJjb3VsZCBub3Qgd2FpdCBmb3IgY2hpbGQgdGhyZWFkOiAlbSIpOwogCQkJZGlzY29u bmVjdF9hbmRfZXhpdCgxKTsKIAkJfQogCQlpZiAoR2V0RXhpdENvZGVUaHJlYWQoKEhBTkRM RSkgYmdjaGlsZF9oYW5kbGUsICZzdGF0dXMpID09IDApCiAJCXsKIAkJCV9kb3NtYXBlcnIo R2V0TGFzdEVycm9yKCkpOwotCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBjb3VsZCBub3Qg Z2V0IGNoaWxkIHRocmVhZCBleGl0IHN0YXR1czogJXNcbiIpLAotCQkJCQlwcm9nbmFtZSwg c3RyZXJyb3IoZXJybm8pKTsKKwkJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IGdldCBjaGls ZCB0aHJlYWQgZXhpdCBzdGF0dXM6ICVtIik7CiAJCQlkaXNjb25uZWN0X2FuZF9leGl0KDEp OwogCQl9CiAJCWlmIChzdGF0dXMgIT0gMCkKIAkJewotCQkJZnByaW50ZihzdGRlcnIsIF8o IiVzOiBjaGlsZCB0aHJlYWQgZXhpdGVkIHdpdGggZXJyb3IgJXVcbiIpLAotCQkJCQlwcm9n bmFtZSwgKHVuc2lnbmVkIGludCkgc3RhdHVzKTsKKwkJCXBnX2xvZ19lcnJvcigiY2hpbGQg dGhyZWFkIGV4aXRlZCB3aXRoIGVycm9yICV1IiwKKwkJCQkJCSAodW5zaWduZWQgaW50KSBz dGF0dXMpOwogCQkJZGlzY29ubmVjdF9hbmRfZXhpdCgxKTsKIAkJfQogCQkvKiBFeGl0ZWQg bm9ybWFsbHksIHdlJ3JlIGhhcHB5ICovCkBAIC0yMTc1LDIxICsyMDkyLDIwIEBAIEJhc2VC YWNrdXAodm9pZCkKIAlpZiAoZG9fc3luYykKIAl7CiAJCWlmICh2ZXJib3NlKQotCQkJZnBy aW50ZihzdGRlcnIsCi0JCQkJCV8oIiVzOiBzeW5jaW5nIGRhdGEgdG8gZGlzayAuLi5cbiIp LCBwcm9nbmFtZSk7CisJCQlwZ19sb2dfaW5mbygic3luY2luZyBkYXRhIHRvIGRpc2sgLi4u Iik7CiAJCWlmIChmb3JtYXQgPT0gJ3QnKQogCQl7CiAJCQlpZiAoc3RyY21wKGJhc2VkaXIs ICItIikgIT0gMCkKLQkJCQkodm9pZCkgZnN5bmNfZm5hbWUoYmFzZWRpciwgdHJ1ZSwgcHJv Z25hbWUpOworCQkJCSh2b2lkKSBmc3luY19mbmFtZShiYXNlZGlyLCB0cnVlKTsKIAkJfQog CQllbHNlCiAJCXsKLQkJCSh2b2lkKSBmc3luY19wZ2RhdGEoYmFzZWRpciwgcHJvZ25hbWUs IHNlcnZlclZlcnNpb24pOworCQkJKHZvaWQpIGZzeW5jX3BnZGF0YShiYXNlZGlyLCBzZXJ2 ZXJWZXJzaW9uKTsKIAkJfQogCX0KIAogCWlmICh2ZXJib3NlKQotCQlmcHJpbnRmKHN0ZGVy ciwgXygiJXM6IGJhc2UgYmFja3VwIGNvbXBsZXRlZFxuIiksIHByb2duYW1lKTsKKwkJcGdf bG9nX2luZm8oImJhc2UgYmFja3VwIGNvbXBsZXRlZCIpOwogfQogCiAKQEAgLTIyMzMsNiAr MjE0OSw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCiAJcHJvZ25hbWUgPSBn ZXRfcHJvZ25hbWUoYXJndlswXSk7CiAJc2V0X3BnbG9jYWxlX3Bnc2VydmljZShhcmd2WzBd LCBQR19URVhURE9NQUlOKCJwZ19iYXNlYmFja3VwIikpOworCXBnX2xvZ2dpbmdfaW5pdChh cmd2WzBdKTsKIAogCWlmIChhcmdjID4gMSkKIAl7CkBAIC0yMjY5LDkgKzIxODYsOCBAQCBt YWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAkJCQkJZm9ybWF0ID0gJ3QnOwogCQkJCWVs c2UKIAkJCQl7Ci0JCQkJCWZwcmludGYoc3RkZXJyLAotCQkJCQkJCV8oIiVzOiBpbnZhbGlk IG91dHB1dCBmb3JtYXQgXCIlc1wiLCBtdXN0IGJlIFwicGxhaW5cIiBvciBcInRhclwiXG4i KSwKLQkJCQkJCQlwcm9nbmFtZSwgb3B0YXJnKTsKKwkJCQkJcGdfbG9nX2Vycm9yKCJpbnZh bGlkIG91dHB1dCBmb3JtYXQgXCIlc1wiLCBtdXN0IGJlIFwicGxhaW5cIiBvciBcInRhclwi XG4iLAorCQkJCQkJCQkgb3B0YXJnKTsKIAkJCQkJZXhpdCgxKTsKIAkJCQl9CiAJCQkJYnJl YWs7CkBAIC0yMzE0LDkgKzIyMzAsOCBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikK IAkJCQl9CiAJCQkJZWxzZQogCQkJCXsKLQkJCQkJZnByaW50ZihzdGRlcnIsCi0JCQkJCQkJ XygiJXM6IGludmFsaWQgd2FsLW1ldGhvZCBvcHRpb24gXCIlc1wiLCBtdXN0IGJlIFwiZmV0 Y2hcIiwgXCJzdHJlYW1cIiwgb3IgXCJub25lXCJcbiIpLAotCQkJCQkJCXByb2duYW1lLCBv cHRhcmcpOworCQkJCQlwZ19sb2dfZXJyb3IoImludmFsaWQgd2FsLW1ldGhvZCBvcHRpb24g XCIlc1wiLCBtdXN0IGJlIFwiZmV0Y2hcIiwgXCJzdHJlYW1cIiwgb3IgXCJub25lXCIiLAor CQkJCQkJCQkgb3B0YXJnKTsKIAkJCQkJZXhpdCgxKTsKIAkJCQl9CiAJCQkJYnJlYWs7CkBA IC0yMzQzLDggKzIyNTgsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAkJCQlj b21wcmVzc2xldmVsID0gYXRvaShvcHRhcmcpOwogCQkJCWlmIChjb21wcmVzc2xldmVsIDwg MCB8fCBjb21wcmVzc2xldmVsID4gOSkKIAkJCQl7Ci0JCQkJCWZwcmludGYoc3RkZXJyLCBf KCIlczogaW52YWxpZCBjb21wcmVzc2lvbiBsZXZlbCBcIiVzXCJcbiIpLAotCQkJCQkJCXBy b2duYW1lLCBvcHRhcmcpOworCQkJCQlwZ19sb2dfZXJyb3IoImludmFsaWQgY29tcHJlc3Np b24gbGV2ZWwgXCIlc1wiXG4iLCBvcHRhcmcpOwogCQkJCQlleGl0KDEpOwogCQkJCX0KIAkJ CQlicmVhazsKQEAgLTIzNTUsOCArMjI2OSw4IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiph cmd2KQogCQkJCQlmYXN0Y2hlY2twb2ludCA9IGZhbHNlOwogCQkJCWVsc2UKIAkJCQl7Ci0J CQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczogaW52YWxpZCBjaGVja3BvaW50IGFyZ3VtZW50 IFwiJXNcIiwgbXVzdCBiZSBcImZhc3RcIiBvciBcInNwcmVhZFwiXG4iKSwKLQkJCQkJCQlw cm9nbmFtZSwgb3B0YXJnKTsKKwkJCQkJcGdfbG9nX2Vycm9yKCJpbnZhbGlkIGNoZWNrcG9p bnQgYXJndW1lbnQgXCIlc1wiLCBtdXN0IGJlIFwiZmFzdFwiIG9yIFwic3ByZWFkXCIiLAor CQkJCQkJCQkgb3B0YXJnKTsKIAkJCQkJZXhpdCgxKTsKIAkJCQl9CiAJCQkJYnJlYWs7CkBA IC0yMzgyLDggKzIyOTYsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAkJCQlz dGFuZGJ5X21lc3NhZ2VfdGltZW91dCA9IGF0b2kob3B0YXJnKSAqIDEwMDA7CiAJCQkJaWYg KHN0YW5kYnlfbWVzc2FnZV90aW1lb3V0IDwgMCkKIAkJCQl7Ci0JCQkJCWZwcmludGYoc3Rk ZXJyLCBfKCIlczogaW52YWxpZCBzdGF0dXMgaW50ZXJ2YWwgXCIlc1wiXG4iKSwKLQkJCQkJ CQlwcm9nbmFtZSwgb3B0YXJnKTsKKwkJCQkJcGdfbG9nX2Vycm9yKCJpbnZhbGlkIHN0YXR1 cyBpbnRlcnZhbCBcIiVzXCIiLCBvcHRhcmcpOwogCQkJCQlleGl0KDEpOwogCQkJCX0KIAkJ CQlicmVhazsKQEAgLTI0MTIsOSArMjMyNSw4IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiph cmd2KQogCSAqLwogCWlmIChvcHRpbmQgPCBhcmdjKQogCXsKLQkJZnByaW50ZihzdGRlcnIs Ci0JCQkJXygiJXM6IHRvbyBtYW55IGNvbW1hbmQtbGluZSBhcmd1bWVudHMgKGZpcnN0IGlz IFwiJXNcIilcbiIpLAotCQkJCXByb2duYW1lLCBhcmd2W29wdGluZF0pOworCQlwZ19sb2df ZXJyb3IoInRvbyBtYW55IGNvbW1hbmQtbGluZSBhcmd1bWVudHMgKGZpcnN0IGlzIFwiJXNc IikiLAorCQkJCQkgYXJndltvcHRpbmRdKTsKIAkJZnByaW50ZihzdGRlcnIsIF8oIlRyeSBc IiVzIC0taGVscFwiIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuIiksCiAJCQkJcHJvZ25hbWUp OwogCQlleGl0KDEpOwpAQCAtMjQyNSw3ICsyMzM3LDcgQEAgbWFpbihpbnQgYXJnYywgY2hh ciAqKmFyZ3YpCiAJICovCiAJaWYgKGJhc2VkaXIgPT0gTlVMTCkKIAl7Ci0JCWZwcmludGYo c3RkZXJyLCBfKCIlczogbm8gdGFyZ2V0IGRpcmVjdG9yeSBzcGVjaWZpZWRcbiIpLCBwcm9n bmFtZSk7CisJCXBnX2xvZ19lcnJvcigibm8gdGFyZ2V0IGRpcmVjdG9yeSBzcGVjaWZpZWQi KTsKIAkJZnByaW50ZihzdGRlcnIsIF8oIlRyeSBcIiVzIC0taGVscFwiIGZvciBtb3JlIGlu Zm9ybWF0aW9uLlxuIiksCiAJCQkJcHJvZ25hbWUpOwogCQlleGl0KDEpOwpAQCAtMjQzNiw5 ICsyMzQ4LDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJICovCiAJaWYgKGZv cm1hdCA9PSAncCcgJiYgY29tcHJlc3NsZXZlbCAhPSAwKQogCXsKLQkJZnByaW50ZihzdGRl cnIsCi0JCQkJXygiJXM6IG9ubHkgdGFyIG1vZGUgYmFja3VwcyBjYW4gYmUgY29tcHJlc3Nl ZFxuIiksCi0JCQkJcHJvZ25hbWUpOworCQlwZ19sb2dfZXJyb3IoIm9ubHkgdGFyIG1vZGUg YmFja3VwcyBjYW4gYmUgY29tcHJlc3NlZCIpOwogCQlmcHJpbnRmKHN0ZGVyciwgXygiVHJ5 IFwiJXMgLS1oZWxwXCIgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4iKSwKIAkJCQlwcm9nbmFt ZSk7CiAJCWV4aXQoMSk7CkBAIC0yNDQ2LDkgKzIzNTYsNyBAQCBtYWluKGludCBhcmdjLCBj aGFyICoqYXJndikKIAogCWlmIChmb3JtYXQgPT0gJ3QnICYmIGluY2x1ZGV3YWwgPT0gU1RS RUFNX1dBTCAmJiBzdHJjbXAoYmFzZWRpciwgIi0iKSA9PSAwKQogCXsKLQkJZnByaW50Zihz dGRlcnIsCi0JCQkJXygiJXM6IGNhbm5vdCBzdHJlYW0gd3JpdGUtYWhlYWQgbG9ncyBpbiB0 YXIgbW9kZSB0byBzdGRvdXRcbiIpLAotCQkJCXByb2duYW1lKTsKKwkJcGdfbG9nX2Vycm9y KCJjYW5ub3Qgc3RyZWFtIHdyaXRlLWFoZWFkIGxvZ3MgaW4gdGFyIG1vZGUgdG8gc3Rkb3V0 Iik7CiAJCWZwcmludGYoc3RkZXJyLCBfKCJUcnkgXCIlcyAtLWhlbHBcIiBmb3IgbW9yZSBp bmZvcm1hdGlvbi5cbiIpLAogCQkJCXByb2duYW1lKTsKIAkJZXhpdCgxKTsKQEAgLTI0NTYs OSArMjM2NCw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCiAJaWYgKHJlcGxp Y2F0aW9uX3Nsb3QgJiYgaW5jbHVkZXdhbCAhPSBTVFJFQU1fV0FMKQogCXsKLQkJZnByaW50 ZihzdGRlcnIsCi0JCQkJXygiJXM6IHJlcGxpY2F0aW9uIHNsb3RzIGNhbiBvbmx5IGJlIHVz ZWQgd2l0aCBXQUwgc3RyZWFtaW5nXG4iKSwKLQkJCQlwcm9nbmFtZSk7CisJCXBnX2xvZ19l cnJvcigicmVwbGljYXRpb24gc2xvdHMgY2FuIG9ubHkgYmUgdXNlZCB3aXRoIFdBTCBzdHJl YW1pbmciKTsKIAkJZnByaW50ZihzdGRlcnIsIF8oIlRyeSBcIiVzIC0taGVscFwiIGZvciBt b3JlIGluZm9ybWF0aW9uLlxuIiksCiAJCQkJcHJvZ25hbWUpOwogCQlleGl0KDEpOwpAQCAt MjQ2OCw5ICsyMzc0LDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJewogCQlp ZiAocmVwbGljYXRpb25fc2xvdCkKIAkJewotCQkJZnByaW50ZihzdGRlcnIsCi0JCQkJCV8o IiVzOiAtLW5vLXNsb3QgY2Fubm90IGJlIHVzZWQgd2l0aCBzbG90IG5hbWVcbiIpLAotCQkJ CQlwcm9nbmFtZSk7CisJCQlwZ19sb2dfZXJyb3IoIi0tbm8tc2xvdCBjYW5ub3QgYmUgdXNl ZCB3aXRoIHNsb3QgbmFtZSIpOwogCQkJZnByaW50ZihzdGRlcnIsIF8oIlRyeSBcIiVzIC0t aGVscFwiIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuIiksCiAJCQkJCXByb2duYW1lKTsKIAkJ CWV4aXQoMSk7CkBAIC0yNDgyLDkgKzIzODYsOCBAQCBtYWluKGludCBhcmdjLCBjaGFyICoq YXJndikKIAl7CiAJCWlmICghcmVwbGljYXRpb25fc2xvdCkKIAkJewotCQkJZnByaW50Zihz dGRlcnIsCi0JCQkJCV8oIiVzOiAlcyBuZWVkcyBhIHNsb3QgdG8gYmUgc3BlY2lmaWVkIHVz aW5nIC0tc2xvdFxuIiksCi0JCQkJCXByb2duYW1lLCAiLS1jcmVhdGUtc2xvdCIpOworCQkJ cGdfbG9nX2Vycm9yKCIlcyBuZWVkcyBhIHNsb3QgdG8gYmUgc3BlY2lmaWVkIHVzaW5nIC0t c2xvdCIsCisJCQkJCQkgIi0tY3JlYXRlLXNsb3QiKTsKIAkJCWZwcmludGYoc3RkZXJyLCBf KCJUcnkgXCIlcyAtLWhlbHBcIiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiIpLAogCQkJCQlw cm9nbmFtZSk7CiAJCQlleGl0KDEpOwpAQCAtMjQ5Miw5ICsyMzk1LDcgQEAgbWFpbihpbnQg YXJnYywgY2hhciAqKmFyZ3YpCiAKIAkJaWYgKG5vX3Nsb3QpCiAJCXsKLQkJCWZwcmludGYo c3RkZXJyLAotCQkJCQlfKCIlczogLS1jcmVhdGUtc2xvdCBhbmQgLS1uby1zbG90IGFyZSBp bmNvbXBhdGlibGUgb3B0aW9uc1xuIiksCi0JCQkJCXByb2duYW1lKTsKKwkJCXBnX2xvZ19l cnJvcigiLS1jcmVhdGUtc2xvdCBhbmQgLS1uby1zbG90IGFyZSBpbmNvbXBhdGlibGUgb3B0 aW9ucyIpOwogCQkJZnByaW50ZihzdGRlcnIsIF8oIlRyeSBcIiVzIC0taGVscFwiIGZvciBt b3JlIGluZm9ybWF0aW9uLlxuIiksCiAJCQkJCXByb2duYW1lKTsKIAkJCWV4aXQoMSk7CkBA IC0yNTA1LDkgKzI0MDYsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAl7CiAJ CWlmIChmb3JtYXQgIT0gJ3AnKQogCQl7Ci0JCQlmcHJpbnRmKHN0ZGVyciwKLQkJCQkJXygi JXM6IFdBTCBkaXJlY3RvcnkgbG9jYXRpb24gY2FuIG9ubHkgYmUgc3BlY2lmaWVkIGluIHBs YWluIG1vZGVcbiIpLAotCQkJCQlwcm9nbmFtZSk7CisJCQlwZ19sb2dfZXJyb3IoIldBTCBk aXJlY3RvcnkgbG9jYXRpb24gY2FuIG9ubHkgYmUgc3BlY2lmaWVkIGluIHBsYWluIG1vZGUi KTsKIAkJCWZwcmludGYoc3RkZXJyLCBfKCJUcnkgXCIlcyAtLWhlbHBcIiBmb3IgbW9yZSBp bmZvcm1hdGlvbi5cbiIpLAogCQkJCQlwcm9nbmFtZSk7CiAJCQlleGl0KDEpOwpAQCAtMjUx Nyw4ICsyNDE2LDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJCWNhbm9uaWNh bGl6ZV9wYXRoKHhsb2dfZGlyKTsKIAkJaWYgKCFpc19hYnNvbHV0ZV9wYXRoKHhsb2dfZGly KSkKIAkJewotCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBXQUwgZGlyZWN0b3J5IGxvY2F0 aW9uIG11c3QgYmUgIgotCQkJCQkJCSAgImFuIGFic29sdXRlIHBhdGhcbiIpLCBwcm9nbmFt ZSk7CisJCQlwZ19sb2dfZXJyb3IoIldBTCBkaXJlY3RvcnkgbG9jYXRpb24gbXVzdCBiZSBh biBhYnNvbHV0ZSBwYXRoIik7CiAJCQlmcHJpbnRmKHN0ZGVyciwgXygiVHJ5IFwiJXMgLS1o ZWxwXCIgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4iKSwKIAkJCQkJcHJvZ25hbWUpOwogCQkJ ZXhpdCgxKTsKQEAgLTI1MjgsOSArMjQyNiw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiph cmd2KQogI2lmbmRlZiBIQVZFX0xJQloKIAlpZiAoY29tcHJlc3NsZXZlbCAhPSAwKQogCXsK LQkJZnByaW50ZihzdGRlcnIsCi0JCQkJXygiJXM6IHRoaXMgYnVpbGQgZG9lcyBub3Qgc3Vw cG9ydCBjb21wcmVzc2lvblxuIiksCi0JCQkJcHJvZ25hbWUpOworCQlwZ19sb2dfZXJyb3Io InRoaXMgYnVpbGQgZG9lcyBub3Qgc3VwcG9ydCBjb21wcmVzc2lvbiIpOwogCQlleGl0KDEp OwogCX0KICNlbmRpZgpAQCAtMjU4MywxMiArMjQ3OSwxMSBAQCBtYWluKGludCBhcmdjLCBj aGFyICoqYXJndikKICNpZmRlZiBIQVZFX1NZTUxJTksKIAkJaWYgKHN5bWxpbmsoeGxvZ19k aXIsIGxpbmtsb2MpICE9IDApCiAJCXsKLQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczogY291 bGQgbm90IGNyZWF0ZSBzeW1ib2xpYyBsaW5rIFwiJXNcIjogJXNcbiIpLAotCQkJCQlwcm9n bmFtZSwgbGlua2xvYywgc3RyZXJyb3IoZXJybm8pKTsKKwkJCXBnX2xvZ19lcnJvcigiY291 bGQgbm90IGNyZWF0ZSBzeW1ib2xpYyBsaW5rIFwiJXNcIjogJW0iLCBsaW5rbG9jKTsKIAkJ CWRpc2Nvbm5lY3RfYW5kX2V4aXQoMSk7CiAJCX0KICNlbHNlCi0JCWZwcmludGYoc3RkZXJy LCBfKCIlczogc3ltbGlua3MgYXJlIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9ybVxu IiksIHByb2duYW1lKTsKKwkJcGdfbG9nX2Vycm9yKCJzeW1saW5rcyBhcmUgbm90IHN1cHBv cnRlZCBvbiB0aGlzIHBsYXRmb3JtIik7CiAJCWRpc2Nvbm5lY3RfYW5kX2V4aXQoMSk7CiAj ZW5kaWYKIAkJZnJlZShsaW5rbG9jKTsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfYmFzZWJh Y2t1cC9wZ19yZWNlaXZld2FsLmMgYi9zcmMvYmluL3BnX2Jhc2ViYWNrdXAvcGdfcmVjZWl2 ZXdhbC5jCmluZGV4IDkxMmFlZDhkN2MuLmY1MzUzYWVhODEgMTAwNjQ0Ci0tLSBhL3NyYy9i aW4vcGdfYmFzZWJhY2t1cC9wZ19yZWNlaXZld2FsLmMKKysrIGIvc3JjL2Jpbi9wZ19iYXNl YmFja3VwL3BnX3JlY2VpdmV3YWwuYwpAQCAtMjAsNiArMjAsNyBAQAogI2luY2x1ZGUgPHVu aXN0ZC5oPgogCiAjaW5jbHVkZSAiY29tbW9uL2ZpbGVfcGVybS5oIgorI2luY2x1ZGUgImZl X3V0aWxzL2xvZ2dpbmcuaCIKICNpbmNsdWRlICJsaWJwcS1mZS5oIgogI2luY2x1ZGUgImFj Y2Vzcy94bG9nX2ludGVybmFsLmgiCiAjaW5jbHVkZSAiZ2V0b3B0X2xvbmcuaCIKQEAgLTEx MywxNiArMTE0LDE2IEBAIHN0b3Bfc3RyZWFtaW5nKFhMb2dSZWNQdHIgeGxvZ3BvcywgdWlu dDMyIHRpbWVsaW5lLCBib29sIHNlZ21lbnRfZmluaXNoZWQpCiAKIAkvKiB3ZSBhc3N1bWUg dGhhdCB3ZSBnZXQgY2FsbGVkIG9uY2UgYXQgdGhlIGVuZCBvZiBlYWNoIHNlZ21lbnQgKi8K IAlpZiAodmVyYm9zZSAmJiBzZWdtZW50X2ZpbmlzaGVkKQotCQlmcHJpbnRmKHN0ZGVyciwg XygiJXM6IGZpbmlzaGVkIHNlZ21lbnQgYXQgJVgvJVggKHRpbWVsaW5lICV1KVxuIiksCi0J CQkJcHJvZ25hbWUsICh1aW50MzIpICh4bG9ncG9zID4+IDMyKSwgKHVpbnQzMikgeGxvZ3Bv cywKLQkJCQl0aW1lbGluZSk7CisJCXBnX2xvZ19pbmZvKCJmaW5pc2hlZCBzZWdtZW50IGF0 ICVYLyVYICh0aW1lbGluZSAldSkiLAorCQkJCQkodWludDMyKSAoeGxvZ3BvcyA+PiAzMiks ICh1aW50MzIpIHhsb2dwb3MsCisJCQkJCXRpbWVsaW5lKTsKIAogCWlmICghWExvZ1JlY1B0 cklzSW52YWxpZChlbmRwb3MpICYmIGVuZHBvcyA8IHhsb2dwb3MpCiAJewogCQlpZiAodmVy Ym9zZSkKLQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczogc3RvcHBlZCBsb2cgc3RyZWFtaW5n IGF0ICVYLyVYICh0aW1lbGluZSAldSlcbiIpLAotCQkJCQlwcm9nbmFtZSwgKHVpbnQzMikg KHhsb2dwb3MgPj4gMzIpLCAodWludDMyKSB4bG9ncG9zLAotCQkJCQl0aW1lbGluZSk7CisJ CQlwZ19sb2dfaW5mbygic3RvcHBlZCBsb2cgc3RyZWFtaW5nIGF0ICVYLyVYICh0aW1lbGlu ZSAldSkiLAorCQkJCQkJKHVpbnQzMikgKHhsb2dwb3MgPj4gMzIpLCAodWludDMyKSB4bG9n cG9zLAorCQkJCQkJdGltZWxpbmUpOwogCQl0aW1lX3RvX3N0b3AgPSB0cnVlOwogCQlyZXR1 cm4gdHJ1ZTsKIAl9CkBAIC0xMzYsOSArMTM3LDkgQEAgc3RvcF9zdHJlYW1pbmcoWExvZ1Jl Y1B0ciB4bG9ncG9zLCB1aW50MzIgdGltZWxpbmUsIGJvb2wgc2VnbWVudF9maW5pc2hlZCkK IAkgKiB0aW1lbGluZSwgYnV0IGl0J3MgY2xvc2UgZW5vdWdoIGZvciByZXBvcnRpbmcgcHVy cG9zZXMuCiAJICovCiAJaWYgKHZlcmJvc2UgJiYgcHJldnRpbWVsaW5lICE9IDAgJiYgcHJl dnRpbWVsaW5lICE9IHRpbWVsaW5lKQotCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IHN3aXRj aGVkIHRvIHRpbWVsaW5lICV1IGF0ICVYLyVYXG4iKSwKLQkJCQlwcm9nbmFtZSwgdGltZWxp bmUsCi0JCQkJKHVpbnQzMikgKHByZXZwb3MgPj4gMzIpLCAodWludDMyKSBwcmV2cG9zKTsK KwkJcGdfbG9nX2luZm8oInN3aXRjaGVkIHRvIHRpbWVsaW5lICV1IGF0ICVYLyVYIiwKKwkJ CQkJdGltZWxpbmUsCisJCQkJCSh1aW50MzIpIChwcmV2cG9zID4+IDMyKSwgKHVpbnQzMikg cHJldnBvcyk7CiAKIAlwcmV2dGltZWxpbmUgPSB0aW1lbGluZTsKIAlwcmV2cG9zID0geGxv Z3BvczsKQEAgLTE0Niw4ICsxNDcsNyBAQCBzdG9wX3N0cmVhbWluZyhYTG9nUmVjUHRyIHhs b2dwb3MsIHVpbnQzMiB0aW1lbGluZSwgYm9vbCBzZWdtZW50X2ZpbmlzaGVkKQogCWlmICh0 aW1lX3RvX3N0b3ApCiAJewogCQlpZiAodmVyYm9zZSkKLQkJCWZwcmludGYoc3RkZXJyLCBf KCIlczogcmVjZWl2ZWQgaW50ZXJydXB0IHNpZ25hbCwgZXhpdGluZ1xuIiksCi0JCQkJCXBy b2duYW1lKTsKKwkJCXBnX2xvZ19pbmZvKCJyZWNlaXZlZCBpbnRlcnJ1cHQgc2lnbmFsLCBl eGl0aW5nIik7CiAJCXJldHVybiB0cnVlOwogCX0KIAlyZXR1cm4gZmFsc2U7CkBAIC0xNjYs OCArMTY2LDcgQEAgZ2V0X2Rlc3RpbmF0aW9uX2RpcihjaGFyICpkZXN0X2ZvbGRlcikKIAlk aXIgPSBvcGVuZGlyKGRlc3RfZm9sZGVyKTsKIAlpZiAoZGlyID09IE5VTEwpCiAJewotCQlm cHJpbnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCBvcGVuIGRpcmVjdG9yeSBcIiVzXCI6 ICVzXG4iKSwKLQkJCQlwcm9nbmFtZSwgYmFzZWRpciwgc3RyZXJyb3IoZXJybm8pKTsKKwkJ cGdfbG9nX2Vycm9yKCJjb3VsZCBub3Qgb3BlbiBkaXJlY3RvcnkgXCIlc1wiOiAlbSIsIGJh c2VkaXIpOwogCQlkaXNjb25uZWN0X2FuZF9leGl0KDEpOwogCX0KIApAQCAtMTg0LDggKzE4 Myw3IEBAIGNsb3NlX2Rlc3RpbmF0aW9uX2RpcihESVIgKmRlc3RfZGlyLCBjaGFyICpkZXN0 X2ZvbGRlcikKIAlBc3NlcnQoZGVzdF9kaXIgIT0gTlVMTCAmJiBkZXN0X2ZvbGRlciAhPSBO VUxMKTsKIAlpZiAoY2xvc2VkaXIoZGVzdF9kaXIpKQogCXsKLQkJZnByaW50ZihzdGRlcnIs IF8oIiVzOiBjb3VsZCBub3QgY2xvc2UgZGlyZWN0b3J5IFwiJXNcIjogJXNcbiIpLAotCQkJ CXByb2duYW1lLCBkZXN0X2ZvbGRlciwgc3RyZXJyb3IoZXJybm8pKTsKKwkJcGdfbG9nX2Vy cm9yKCJjb3VsZCBub3QgY2xvc2UgZGlyZWN0b3J5IFwiJXNcIjogJW0iLCBkZXN0X2ZvbGRl cik7CiAJCWRpc2Nvbm5lY3RfYW5kX2V4aXQoMSk7CiAJfQogfQpAQCAtMjY1LDE2ICsyNjMs MTQgQEAgRmluZFN0cmVhbWluZ1N0YXJ0KHVpbnQzMiAqdGxpKQogCQkJc25wcmludGYoZnVs bHBhdGgsIHNpemVvZihmdWxscGF0aCksICIlcy8lcyIsIGJhc2VkaXIsIGRpcmVudC0+ZF9u YW1lKTsKIAkJCWlmIChzdGF0KGZ1bGxwYXRoLCAmc3RhdGJ1ZikgIT0gMCkKIAkJCXsKLQkJ CQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCBzdGF0IGZpbGUgXCIlc1wiOiAl c1xuIiksCi0JCQkJCQlwcm9nbmFtZSwgZnVsbHBhdGgsIHN0cmVycm9yKGVycm5vKSk7CisJ CQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3Qgc3RhdCBmaWxlIFwiJXNcIjogJW0iLCBmdWxs cGF0aCk7CiAJCQkJZGlzY29ubmVjdF9hbmRfZXhpdCgxKTsKIAkJCX0KIAogCQkJaWYgKHN0 YXRidWYuc3Rfc2l6ZSAhPSBXYWxTZWdTeikKIAkJCXsKLQkJCQlmcHJpbnRmKHN0ZGVyciwK LQkJCQkJCV8oIiVzOiBzZWdtZW50IGZpbGUgXCIlc1wiIGhhcyBpbmNvcnJlY3Qgc2l6ZSAl ZCwgc2tpcHBpbmdcbiIpLAotCQkJCQkJcHJvZ25hbWUsIGRpcmVudC0+ZF9uYW1lLCAoaW50 KSBzdGF0YnVmLnN0X3NpemUpOworCQkJCXBnX2xvZ193YXJuaW5nKCJzZWdtZW50IGZpbGUg XCIlc1wiIGhhcyBpbmNvcnJlY3Qgc2l6ZSAlZCwgc2tpcHBpbmciLAorCQkJCQkJCSAgIGRp cmVudC0+ZF9uYW1lLCAoaW50KSBzdGF0YnVmLnN0X3NpemUpOwogCQkJCWNvbnRpbnVlOwog CQkJfQogCQl9CkBAIC0yOTEsMjUgKzI4NywyNSBAQCBGaW5kU3RyZWFtaW5nU3RhcnQodWlu dDMyICp0bGkpCiAJCQlmZCA9IG9wZW4oZnVsbHBhdGgsIE9fUkRPTkxZIHwgUEdfQklOQVJZ LCAwKTsKIAkJCWlmIChmZCA8IDApCiAJCQl7Ci0JCQkJZnByaW50ZihzdGRlcnIsIF8oIiVz OiBjb3VsZCBub3Qgb3BlbiBjb21wcmVzc2VkIGZpbGUgXCIlc1wiOiAlc1xuIiksCi0JCQkJ CQlwcm9nbmFtZSwgZnVsbHBhdGgsIHN0cmVycm9yKGVycm5vKSk7CisJCQkJcGdfbG9nX2Vy cm9yKCJjb3VsZCBub3Qgb3BlbiBjb21wcmVzc2VkIGZpbGUgXCIlc1wiOiAlbSIsCisJCQkJ CQkJIGZ1bGxwYXRoKTsKIAkJCQlkaXNjb25uZWN0X2FuZF9leGl0KDEpOwogCQkJfQogCQkJ aWYgKGxzZWVrKGZkLCAob2ZmX3QpICgtNCksIFNFRUtfRU5EKSA8IDApCiAJCQl7Ci0JCQkJ ZnByaW50ZihzdGRlcnIsIF8oIiVzOiBjb3VsZCBub3Qgc2VlayBpbiBjb21wcmVzc2VkIGZp bGUgXCIlc1wiOiAlc1xuIiksCi0JCQkJCQlwcm9nbmFtZSwgZnVsbHBhdGgsIHN0cmVycm9y KGVycm5vKSk7CisJCQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3Qgc2VlayBpbiBjb21wcmVz c2VkIGZpbGUgXCIlc1wiOiAlbSIsCisJCQkJCQkJIGZ1bGxwYXRoKTsKIAkJCQlkaXNjb25u ZWN0X2FuZF9leGl0KDEpOwogCQkJfQogCQkJciA9IHJlYWQoZmQsIChjaGFyICopIGJ1Ziwg c2l6ZW9mKGJ1ZikpOwogCQkJaWYgKHIgIT0gc2l6ZW9mKGJ1ZikpCiAJCQl7CiAJCQkJaWYg KHIgPCAwKQotCQkJCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCByZWFkIGNv bXByZXNzZWQgZmlsZSBcIiVzXCI6ICVzXG4iKSwKLQkJCQkJCQlwcm9nbmFtZSwgZnVsbHBh dGgsIHN0cmVycm9yKGVycm5vKSk7CisJCQkJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IHJl YWQgY29tcHJlc3NlZCBmaWxlIFwiJXNcIjogJW0iLAorCQkJCQkJCQkgZnVsbHBhdGgpOwog CQkJCWVsc2UKLQkJCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBjb3VsZCBub3QgcmVhZCBj b21wcmVzc2VkIGZpbGUgXCIlc1wiOiByZWFkICVkIG9mICV6dVxuIiksCi0JCQkJCQkJcHJv Z25hbWUsIGZ1bGxwYXRoLCByLCBzaXplb2YoYnVmKSk7CisJCQkJCXBnX2xvZ19lcnJvcigi Y291bGQgbm90IHJlYWQgY29tcHJlc3NlZCBmaWxlIFwiJXNcIjogcmVhZCAlZCBvZiAlenUi LAorCQkJCQkJCQkgZnVsbHBhdGgsIHIsIHNpemVvZihidWYpKTsKIAkJCQlkaXNjb25uZWN0 X2FuZF9leGl0KDEpOwogCQkJfQogCkBAIC0zMTksOSArMzE1LDggQEAgRmluZFN0cmVhbWlu Z1N0YXJ0KHVpbnQzMiAqdGxpKQogCiAJCQlpZiAoYnl0ZXNfb3V0ICE9IFdhbFNlZ1N6KQog CQkJewotCQkJCWZwcmludGYoc3RkZXJyLAotCQkJCQkJXygiJXM6IGNvbXByZXNzZWQgc2Vn bWVudCBmaWxlIFwiJXNcIiBoYXMgaW5jb3JyZWN0IHVuY29tcHJlc3NlZCBzaXplICVkLCBz a2lwcGluZ1xuIiksCi0JCQkJCQlwcm9nbmFtZSwgZGlyZW50LT5kX25hbWUsIGJ5dGVzX291 dCk7CisJCQkJcGdfbG9nX3dhcm5pbmcoImNvbXByZXNzZWQgc2VnbWVudCBmaWxlIFwiJXNc IiBoYXMgaW5jb3JyZWN0IHVuY29tcHJlc3NlZCBzaXplICVkLCBza2lwcGluZyIsCisJCQkJ CQkJICAgZGlyZW50LT5kX25hbWUsIGJ5dGVzX291dCk7CiAJCQkJY29udGludWU7CiAJCQl9 CiAJCX0KQEAgLTMzOSw4ICszMzQsNyBAQCBGaW5kU3RyZWFtaW5nU3RhcnQodWludDMyICp0 bGkpCiAKIAlpZiAoZXJybm8pCiAJewotCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNvdWxk IG5vdCByZWFkIGRpcmVjdG9yeSBcIiVzXCI6ICVzXG4iKSwKLQkJCQlwcm9nbmFtZSwgYmFz ZWRpciwgc3RyZXJyb3IoZXJybm8pKTsKKwkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgcmVh ZCBkaXJlY3RvcnkgXCIlc1wiOiAlbSIsIGJhc2VkaXIpOwogCQlkaXNjb25uZWN0X2FuZF9l eGl0KDEpOwogCX0KIApAQCAtNDI1LDEwICs0MTksOSBAQCBTdHJlYW1Mb2codm9pZCkKIAkg KiBTdGFydCB0aGUgcmVwbGljYXRpb24KIAkgKi8KIAlpZiAodmVyYm9zZSkKLQkJZnByaW50 ZihzdGRlcnIsCi0JCQkJXygiJXM6IHN0YXJ0aW5nIGxvZyBzdHJlYW1pbmcgYXQgJVgvJVgg KHRpbWVsaW5lICV1KVxuIiksCi0JCQkJcHJvZ25hbWUsICh1aW50MzIpIChzdHJlYW0uc3Rh cnRwb3MgPj4gMzIpLCAodWludDMyKSBzdHJlYW0uc3RhcnRwb3MsCi0JCQkJc3RyZWFtLnRp bWVsaW5lKTsKKwkJcGdfbG9nX2luZm8oInN0YXJ0aW5nIGxvZyBzdHJlYW1pbmcgYXQgJVgv JVggKHRpbWVsaW5lICV1KSIsCisJCQkJCSh1aW50MzIpIChzdHJlYW0uc3RhcnRwb3MgPj4g MzIpLCAodWludDMyKSBzdHJlYW0uc3RhcnRwb3MsCisJCQkJCXN0cmVhbS50aW1lbGluZSk7 CiAKIAlzdHJlYW0uc3RyZWFtX3N0b3AgPSBzdG9wX3N0cmVhbWluZzsKIAlzdHJlYW0uc3Rv cF9zb2NrZXQgPSBQR0lOVkFMSURfU09DS0VUOwpAQCAtNDQ1LDkgKzQzOCw3IEBAIFN0cmVh bUxvZyh2b2lkKQogCiAJaWYgKCFzdHJlYW0ud2FsbWV0aG9kLT5maW5pc2goKSkKIAl7Ci0J CWZwcmludGYoc3RkZXJyLAotCQkJCV8oIiVzOiBjb3VsZCBub3QgZmluaXNoIHdyaXRpbmcg V0FMIGZpbGVzOiAlc1xuIiksCi0JCQkJcHJvZ25hbWUsIHN0cmVycm9yKGVycm5vKSk7CisJ CXBnX2xvZ19pbmZvKCJjb3VsZCBub3QgZmluaXNoIHdyaXRpbmcgV0FMIGZpbGVzOiAlbSIp OwogCQlyZXR1cm47CiAJfQogCkBAIC01MDgsNiArNDk5LDcgQEAgbWFpbihpbnQgYXJnYywg Y2hhciAqKmFyZ3YpCiAKIAlwcm9nbmFtZSA9IGdldF9wcm9nbmFtZShhcmd2WzBdKTsKIAlz ZXRfcGdsb2NhbGVfcGdzZXJ2aWNlKGFyZ3ZbMF0sIFBHX1RFWFRET01BSU4oInBnX2Jhc2Vi YWNrdXAiKSk7CisJcGdfbG9nZ2luZ19pbml0KGFyZ3ZbMF0pOwogCiAJaWYgKGFyZ2MgPiAx KQogCXsKQEAgLTU0MSw4ICs1MzMsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikK IAkJCWNhc2UgJ3AnOgogCQkJCWlmIChhdG9pKG9wdGFyZykgPD0gMCkKIAkJCQl7Ci0JCQkJ CWZwcmludGYoc3RkZXJyLCBfKCIlczogaW52YWxpZCBwb3J0IG51bWJlciBcIiVzXCJcbiIp LAotCQkJCQkJCXByb2duYW1lLCBvcHRhcmcpOworCQkJCQlwZ19sb2dfZXJyb3IoImludmFs aWQgcG9ydCBudW1iZXIgXCIlc1wiIiwgb3B0YXJnKTsKIAkJCQkJZXhpdCgxKTsKIAkJCQl9 CiAJCQkJZGJwb3J0ID0gcGdfc3RyZHVwKG9wdGFyZyk7CkBAIC01NjAsOCArNTUxLDcgQEAg bWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJCQkJc3RhbmRieV9tZXNzYWdlX3RpbWVv dXQgPSBhdG9pKG9wdGFyZykgKiAxMDAwOwogCQkJCWlmIChzdGFuZGJ5X21lc3NhZ2VfdGlt ZW91dCA8IDApCiAJCQkJewotCQkJCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGludmFsaWQg c3RhdHVzIGludGVydmFsIFwiJXNcIlxuIiksCi0JCQkJCQkJcHJvZ25hbWUsIG9wdGFyZyk7 CisJCQkJCXBnX2xvZ19lcnJvcigiaW52YWxpZCBzdGF0dXMgaW50ZXJ2YWwgXCIlc1wiIiwg b3B0YXJnKTsKIAkJCQkJZXhpdCgxKTsKIAkJCQl9CiAJCQkJYnJlYWs7CkBAIC01NzEsOSAr NTYxLDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJCQljYXNlICdFJzoKIAkJ CQlpZiAoc3NjYW5mKG9wdGFyZywgIiVYLyVYIiwgJmhpLCAmbG8pICE9IDIpCiAJCQkJewot CQkJCQlmcHJpbnRmKHN0ZGVyciwKLQkJCQkJCQlfKCIlczogY291bGQgbm90IHBhcnNlIGVu ZCBwb3NpdGlvbiBcIiVzXCJcbiIpLAotCQkJCQkJCXByb2duYW1lLCBvcHRhcmcpOworCQkJ CQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBwYXJzZSBlbmQgcG9zaXRpb24gXCIlc1wiIiwg b3B0YXJnKTsKIAkJCQkJZXhpdCgxKTsKIAkJCQl9CiAJCQkJZW5kcG9zID0gKCh1aW50NjQp IGhpKSA8PCAzMiB8IGxvOwpAQCAtNTg4LDggKzU3Niw3IEBAIG1haW4oaW50IGFyZ2MsIGNo YXIgKiphcmd2KQogCQkJCWNvbXByZXNzbGV2ZWwgPSBhdG9pKG9wdGFyZyk7CiAJCQkJaWYg KGNvbXByZXNzbGV2ZWwgPCAwIHx8IGNvbXByZXNzbGV2ZWwgPiA5KQogCQkJCXsKLQkJCQkJ ZnByaW50ZihzdGRlcnIsIF8oIiVzOiBpbnZhbGlkIGNvbXByZXNzaW9uIGxldmVsIFwiJXNc IlxuIiksCi0JCQkJCQkJcHJvZ25hbWUsIG9wdGFyZyk7CisJCQkJCXBnX2xvZ19lcnJvcigi aW52YWxpZCBjb21wcmVzc2lvbiBsZXZlbCBcIiVzXCIiLCBvcHRhcmcpOwogCQkJCQlleGl0 KDEpOwogCQkJCX0KIAkJCQlicmVhazsKQEAgLTYyNSw5ICs2MTIsOCBAQCBtYWluKGludCBh cmdjLCBjaGFyICoqYXJndikKIAkgKi8KIAlpZiAob3B0aW5kIDwgYXJnYykKIAl7Ci0JCWZw cmludGYoc3RkZXJyLAotCQkJCV8oIiVzOiB0b28gbWFueSBjb21tYW5kLWxpbmUgYXJndW1l bnRzIChmaXJzdCBpcyBcIiVzXCIpXG4iKSwKLQkJCQlwcm9nbmFtZSwgYXJndltvcHRpbmRd KTsKKwkJcGdfbG9nX2Vycm9yKCJ0b28gbWFueSBjb21tYW5kLWxpbmUgYXJndW1lbnRzIChm aXJzdCBpcyBcIiVzXCIpIiwKKwkJCQkJIGFyZ3Zbb3B0aW5kXSk7CiAJCWZwcmludGYoc3Rk ZXJyLCBfKCJUcnkgXCIlcyAtLWhlbHBcIiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiIpLAog CQkJCXByb2duYW1lKTsKIAkJZXhpdCgxKTsKQEAgLTYzNSw3ICs2MjEsNyBAQCBtYWluKGlu dCBhcmdjLCBjaGFyICoqYXJndikKIAogCWlmIChkb19kcm9wX3Nsb3QgJiYgZG9fY3JlYXRl X3Nsb3QpCiAJewotCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNhbm5vdCB1c2UgLS1jcmVh dGUtc2xvdCB0b2dldGhlciB3aXRoIC0tZHJvcC1zbG90XG4iKSwgcHJvZ25hbWUpOworCQlw Z19sb2dfZXJyb3IoImNhbm5vdCB1c2UgLS1jcmVhdGUtc2xvdCB0b2dldGhlciB3aXRoIC0t ZHJvcC1zbG90Iik7CiAJCWZwcmludGYoc3RkZXJyLCBfKCJUcnkgXCIlcyAtLWhlbHBcIiBm b3IgbW9yZSBpbmZvcm1hdGlvbi5cbiIpLAogCQkJCXByb2duYW1lKTsKIAkJZXhpdCgxKTsK QEAgLTY0NCw4ICs2MzAsOCBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAlpZiAo cmVwbGljYXRpb25fc2xvdCA9PSBOVUxMICYmIChkb19kcm9wX3Nsb3QgfHwgZG9fY3JlYXRl X3Nsb3QpKQogCXsKIAkJLyogdHJhbnNsYXRvcjogc2Vjb25kICVzIGlzIGFuIG9wdGlvbiBu YW1lICovCi0JCWZwcmludGYoc3RkZXJyLCBfKCIlczogJXMgbmVlZHMgYSBzbG90IHRvIGJl IHNwZWNpZmllZCB1c2luZyAtLXNsb3RcbiIpLCBwcm9nbmFtZSwKLQkJCQlkb19kcm9wX3Ns b3QgPyAiLS1kcm9wLXNsb3QiIDogIi0tY3JlYXRlLXNsb3QiKTsKKwkJcGdfbG9nX2Vycm9y KCIlcyBuZWVkcyBhIHNsb3QgdG8gYmUgc3BlY2lmaWVkIHVzaW5nIC0tc2xvdCIsCisJCQkJ CSBkb19kcm9wX3Nsb3QgPyAiLS1kcm9wLXNsb3QiIDogIi0tY3JlYXRlLXNsb3QiKTsKIAkJ ZnByaW50ZihzdGRlcnIsIF8oIlRyeSBcIiVzIC0taGVscFwiIGZvciBtb3JlIGluZm9ybWF0 aW9uLlxuIiksCiAJCQkJcHJvZ25hbWUpOwogCQlleGl0KDEpOwpAQCAtNjUzLDcgKzYzOSw3 IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCiAJaWYgKHN5bmNocm9ub3VzICYm ICFkb19zeW5jKQogCXsKLQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBjYW5ub3QgdXNlIC0t c3luY2hyb25vdXMgdG9nZXRoZXIgd2l0aCAtLW5vLXN5bmNcbiIpLCBwcm9nbmFtZSk7CisJ CXBnX2xvZ19lcnJvcigiY2Fubm90IHVzZSAtLXN5bmNocm9ub3VzIHRvZ2V0aGVyIHdpdGgg LS1uby1zeW5jIik7CiAJCWZwcmludGYoc3RkZXJyLCBfKCJUcnkgXCIlcyAtLWhlbHBcIiBm b3IgbW9yZSBpbmZvcm1hdGlvbi5cbiIpLAogCQkJCXByb2duYW1lKTsKIAkJZXhpdCgxKTsK QEAgLTY2NCw3ICs2NTAsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAkgKi8K IAlpZiAoYmFzZWRpciA9PSBOVUxMICYmICFkb19kcm9wX3Nsb3QgJiYgIWRvX2NyZWF0ZV9z bG90KQogCXsKLQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBubyB0YXJnZXQgZGlyZWN0b3J5 IHNwZWNpZmllZFxuIiksIHByb2duYW1lKTsKKwkJcGdfbG9nX2Vycm9yKCJubyB0YXJnZXQg ZGlyZWN0b3J5IHNwZWNpZmllZCIpOwogCQlmcHJpbnRmKHN0ZGVyciwgXygiVHJ5IFwiJXMg LS1oZWxwXCIgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4iKSwKIAkJCQlwcm9nbmFtZSk7CiAJ CWV4aXQoMSk7CkBAIC02NzMsOSArNjU5LDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFy Z3YpCiAjaWZuZGVmIEhBVkVfTElCWgogCWlmIChjb21wcmVzc2xldmVsICE9IDApCiAJewot CQlmcHJpbnRmKHN0ZGVyciwKLQkJCQlfKCIlczogdGhpcyBidWlsZCBkb2VzIG5vdCBzdXBw b3J0IGNvbXByZXNzaW9uXG4iKSwKLQkJCQlwcm9nbmFtZSk7CisJCXBnX2xvZ19lcnJvcigi dGhpcyBidWlsZCBkb2VzIG5vdCBzdXBwb3J0IGNvbXByZXNzaW9uIik7CiAJCWV4aXQoMSk7 CiAJfQogI2VuZGlmCkBAIC03MzAsOSArNzE0LDggQEAgbWFpbihpbnQgYXJnYywgY2hhciAq KmFyZ3YpCiAJICovCiAJaWYgKGRiX25hbWUpCiAJewotCQlmcHJpbnRmKHN0ZGVyciwKLQkJ CQlfKCIlczogcmVwbGljYXRpb24gY29ubmVjdGlvbiB1c2luZyBzbG90IFwiJXNcIiBpcyB1 bmV4cGVjdGVkbHkgZGF0YWJhc2Ugc3BlY2lmaWNcbiIpLAotCQkJCXByb2duYW1lLCByZXBs aWNhdGlvbl9zbG90KTsKKwkJcGdfbG9nX2Vycm9yKCJyZXBsaWNhdGlvbiBjb25uZWN0aW9u IHVzaW5nIHNsb3QgXCIlc1wiIGlzIHVuZXhwZWN0ZWRseSBkYXRhYmFzZSBzcGVjaWZpYyIs CisJCQkJCSByZXBsaWNhdGlvbl9zbG90KTsKIAkJZGlzY29ubmVjdF9hbmRfZXhpdCgxKTsK IAl9CiAKQEAgLTc0Miw5ICs3MjUsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikK IAlpZiAoZG9fZHJvcF9zbG90KQogCXsKIAkJaWYgKHZlcmJvc2UpCi0JCQlmcHJpbnRmKHN0 ZGVyciwKLQkJCQkJXygiJXM6IGRyb3BwaW5nIHJlcGxpY2F0aW9uIHNsb3QgXCIlc1wiXG4i KSwKLQkJCQkJcHJvZ25hbWUsIHJlcGxpY2F0aW9uX3Nsb3QpOworCQkJcGdfbG9nX2luZm8o ImRyb3BwaW5nIHJlcGxpY2F0aW9uIHNsb3QgXCIlc1wiIiwJcmVwbGljYXRpb25fc2xvdCk7 CiAKIAkJaWYgKCFEcm9wUmVwbGljYXRpb25TbG90KGNvbm4sIHJlcGxpY2F0aW9uX3Nsb3Qp KQogCQkJZGlzY29ubmVjdF9hbmRfZXhpdCgxKTsKQEAgLTc1NSw5ICs3MzYsNyBAQCBtYWlu KGludCBhcmdjLCBjaGFyICoqYXJndikKIAlpZiAoZG9fY3JlYXRlX3Nsb3QpCiAJewogCQlp ZiAodmVyYm9zZSkKLQkJCWZwcmludGYoc3RkZXJyLAotCQkJCQlfKCIlczogY3JlYXRpbmcg cmVwbGljYXRpb24gc2xvdCBcIiVzXCJcbiIpLAotCQkJCQlwcm9nbmFtZSwgcmVwbGljYXRp b25fc2xvdCk7CisJCQlwZ19sb2dfaW5mbygiY3JlYXRpbmcgcmVwbGljYXRpb24gc2xvdCBc IiVzXCIiLCByZXBsaWNhdGlvbl9zbG90KTsKIAogCQlpZiAoIUNyZWF0ZVJlcGxpY2F0aW9u U2xvdChjb25uLCByZXBsaWNhdGlvbl9zbG90LCBOVUxMLCBmYWxzZSwgdHJ1ZSwgZmFsc2Us CiAJCQkJCQkJCSAgIHNsb3RfZXhpc3RzX29rKSkKQEAgLTc4MywxNSArNzYyLDE0IEBAIG1h aW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCQl9CiAJCWVsc2UgaWYgKG5vbG9vcCkKIAkJ ewotCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBkaXNjb25uZWN0ZWRcbiIpLCBwcm9nbmFt ZSk7CisJCQlwZ19sb2dfZXJyb3IoImRpc2Nvbm5lY3RlZCIpOwogCQkJZXhpdCgxKTsKIAkJ fQogCQllbHNlCiAJCXsKLQkJCWZwcmludGYoc3RkZXJyLAogCQkJLyogdHJhbnNsYXRvcjog Y2hlY2sgc291cmNlIGZvciB2YWx1ZSBmb3IgJWQgKi8KLQkJCQkJXygiJXM6IGRpc2Nvbm5l Y3RlZDsgd2FpdGluZyAlZCBzZWNvbmRzIHRvIHRyeSBhZ2FpblxuIiksCi0JCQkJCXByb2du YW1lLCBSRUNPTk5FQ1RfU0xFRVBfVElNRSk7CisJCQlwZ19sb2dfaW5mbygiZGlzY29ubmVj dGVkOyB3YWl0aW5nICVkIHNlY29uZHMgdG8gdHJ5IGFnYWluIiwKKwkJCQkJCVJFQ09OTkVD VF9TTEVFUF9USU1FKTsKIAkJCXBnX3VzbGVlcChSRUNPTk5FQ1RfU0xFRVBfVElNRSAqIDEw MDAwMDApOwogCQl9CiAJfQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19iYXNlYmFja3VwL3Bn X3JlY3Zsb2dpY2FsLmMgYi9zcmMvYmluL3BnX2Jhc2ViYWNrdXAvcGdfcmVjdmxvZ2ljYWwu YwppbmRleCBhMjQyZTBiZTg4Li5lMWUxZjc5OTcyIDEwMDY0NAotLS0gYS9zcmMvYmluL3Bn X2Jhc2ViYWNrdXAvcGdfcmVjdmxvZ2ljYWwuYworKysgYi9zcmMvYmluL3BnX2Jhc2ViYWNr dXAvcGdfcmVjdmxvZ2ljYWwuYwpAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgImFjY2Vz cy94bG9nX2ludGVybmFsLmgiCiAjaW5jbHVkZSAiY29tbW9uL2ZpbGVfcGVybS5oIgogI2lu Y2x1ZGUgImNvbW1vbi9mZV9tZW11dGlscy5oIgorI2luY2x1ZGUgImZlX3V0aWxzL2xvZ2dp bmcuaCIKICNpbmNsdWRlICJnZXRvcHRfbG9uZy5oIgogI2luY2x1ZGUgImxpYnBxLWZlLmgi CiAjaW5jbHVkZSAibGlicHEvcHFzaWduYWwuaCIKQEAgLTEzMiwxMiArMTMzLDEwIEBAIHNl bmRGZWVkYmFjayhQR2Nvbm4gKmNvbm4sIFRpbWVzdGFtcFR6IG5vdywgYm9vbCBmb3JjZSwg Ym9vbCByZXBseVJlcXVlc3RlZCkKIAkJcmV0dXJuIHRydWU7CiAKIAlpZiAodmVyYm9zZSkK LQkJZnByaW50ZihzdGRlcnIsCi0JCQkJXygiJXM6IGNvbmZpcm1pbmcgd3JpdGUgdXAgdG8g JVgvJVgsIGZsdXNoIHRvICVYLyVYIChzbG90ICVzKVxuIiksCi0JCQkJcHJvZ25hbWUsCi0J CQkJKHVpbnQzMikgKG91dHB1dF93cml0dGVuX2xzbiA+PiAzMiksICh1aW50MzIpIG91dHB1 dF93cml0dGVuX2xzbiwKLQkJCQkodWludDMyKSAob3V0cHV0X2ZzeW5jX2xzbiA+PiAzMiks ICh1aW50MzIpIG91dHB1dF9mc3luY19sc24sCi0JCQkJcmVwbGljYXRpb25fc2xvdCk7CisJ CXBnX2xvZ19pbmZvKCJjb25maXJtaW5nIHdyaXRlIHVwIHRvICVYLyVYLCBmbHVzaCB0byAl WC8lWCAoc2xvdCAlcykiLAorCQkJCQkodWludDMyKSAob3V0cHV0X3dyaXR0ZW5fbHNuID4+ IDMyKSwgKHVpbnQzMikgb3V0cHV0X3dyaXR0ZW5fbHNuLAorCQkJCQkodWludDMyKSAob3V0 cHV0X2ZzeW5jX2xzbiA+PiAzMiksICh1aW50MzIpIG91dHB1dF9mc3luY19sc24sCisJCQkJ CXJlcGxpY2F0aW9uX3Nsb3QpOwogCiAJcmVwbHlidWZbbGVuXSA9ICdyJzsKIAlsZW4gKz0g MTsKQEAgLTE1OCw4ICsxNTcsOCBAQCBzZW5kRmVlZGJhY2soUEdjb25uICpjb25uLCBUaW1l c3RhbXBUeiBub3csIGJvb2wgZm9yY2UsIGJvb2wgcmVwbHlSZXF1ZXN0ZWQpCiAKIAlpZiAo UFFwdXRDb3B5RGF0YShjb25uLCByZXBseWJ1ZiwgbGVuKSA8PSAwIHx8IFBRZmx1c2goY29u bikpCiAJewotCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCBzZW5kIGZlZWRi YWNrIHBhY2tldDogJXMiKSwKLQkJCQlwcm9nbmFtZSwgUFFlcnJvck1lc3NhZ2UoY29ubikp OworCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBzZW5kIGZlZWRiYWNrIHBhY2tldDogJXMi LAorCQkJCQkgUFFlcnJvck1lc3NhZ2UoY29ubikpOwogCQlyZXR1cm4gZmFsc2U7CiAJfQog CkBAIC0xOTYsOSArMTk1LDcgQEAgT3V0cHV0RnN5bmMoVGltZXN0YW1wVHogbm93KQogCiAJ aWYgKGZzeW5jKG91dGZkKSAhPSAwKQogCXsKLQkJZnByaW50ZihzdGRlcnIsCi0JCQkJXygi JXM6IGNvdWxkIG5vdCBmc3luYyBmaWxlIFwiJXNcIjogJXNcbiIpLAotCQkJCXByb2duYW1l LCBvdXRmaWxlLCBzdHJlcnJvcihlcnJubykpOworCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5v dCBmc3luYyBmaWxlIFwiJXNcIjogJW0iLCBvdXRmaWxlKTsKIAkJcmV0dXJuIGZhbHNlOwog CX0KIApAQCAtMjM1LDEwICsyMzIsOSBAQCBTdHJlYW1Mb2dpY2FsTG9nKHZvaWQpCiAJICog U3RhcnQgdGhlIHJlcGxpY2F0aW9uCiAJICovCiAJaWYgKHZlcmJvc2UpCi0JCWZwcmludGYo c3RkZXJyLAotCQkJCV8oIiVzOiBzdGFydGluZyBsb2cgc3RyZWFtaW5nIGF0ICVYLyVYIChz bG90ICVzKVxuIiksCi0JCQkJcHJvZ25hbWUsICh1aW50MzIpIChzdGFydHBvcyA+PiAzMiks ICh1aW50MzIpIHN0YXJ0cG9zLAotCQkJCXJlcGxpY2F0aW9uX3Nsb3QpOworCQlwZ19sb2df aW5mbygic3RhcnRpbmcgbG9nIHN0cmVhbWluZyBhdCAlWC8lWCAoc2xvdCAlcykiLAorCQkJ CQkodWludDMyKSAoc3RhcnRwb3MgPj4gMzIpLCAodWludDMyKSBzdGFydHBvcywKKwkJCQkJ cmVwbGljYXRpb25fc2xvdCk7CiAKIAkvKiBJbml0aWF0ZSB0aGUgcmVwbGljYXRpb24gc3Ry ZWFtIGF0IHNwZWNpZmllZCBsb2NhdGlvbiAqLwogCWFwcGVuZFBRRXhwQnVmZmVyKHF1ZXJ5 LCAiU1RBUlRfUkVQTElDQVRJT04gU0xPVCBcIiVzXCIgTE9HSUNBTCAlWC8lWCIsCkBAIC0y NjgsOCArMjY0LDggQEAgU3RyZWFtTG9naWNhbExvZyh2b2lkKQogCXJlcyA9IFBRZXhlYyhj b25uLCBxdWVyeS0+ZGF0YSk7CiAJaWYgKFBRcmVzdWx0U3RhdHVzKHJlcykgIT0gUEdSRVNf Q09QWV9CT1RIKQogCXsKLQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBjb3VsZCBub3Qgc2Vu ZCByZXBsaWNhdGlvbiBjb21tYW5kIFwiJXNcIjogJXMiKSwKLQkJCQlwcm9nbmFtZSwgcXVl cnktPmRhdGEsIFBRcmVzdWx0RXJyb3JNZXNzYWdlKHJlcykpOworCQlwZ19sb2dfZXJyb3Io ImNvdWxkIG5vdCBzZW5kIHJlcGxpY2F0aW9uIGNvbW1hbmQgXCIlc1wiOiAlcyIsCisJCQkJ CSBxdWVyeS0+ZGF0YSwgUFFyZXN1bHRFcnJvck1lc3NhZ2UocmVzKSk7CiAJCVBRY2xlYXIo cmVzKTsKIAkJZ290byBlcnJvcjsKIAl9CkBAIC0yNzcsOSArMjczLDcgQEAgU3RyZWFtTG9n aWNhbExvZyh2b2lkKQogCXJlc2V0UFFFeHBCdWZmZXIocXVlcnkpOwogCiAJaWYgKHZlcmJv c2UpCi0JCWZwcmludGYoc3RkZXJyLAotCQkJCV8oIiVzOiBzdHJlYW1pbmcgaW5pdGlhdGVk XG4iKSwKLQkJCQlwcm9nbmFtZSk7CisJCXBnX2xvZ19pbmZvKCJzdHJlYW1pbmcgaW5pdGlh dGVkIik7CiAKIAl3aGlsZSAoIXRpbWVfdG9fYWJvcnQpCiAJewpAQCAtMzQzLDE2ICszMzcs MTIgQEAgU3RyZWFtTG9naWNhbExvZyh2b2lkKQogCQkJCQkJCSBTX0lSVVNSIHwgU19JV1VT Uik7CiAJCQlpZiAob3V0ZmQgPT0gLTEpCiAJCQl7Ci0JCQkJZnByaW50ZihzdGRlcnIsCi0J CQkJCQlfKCIlczogY291bGQgbm90IG9wZW4gbG9nIGZpbGUgXCIlc1wiOiAlc1xuIiksCi0J CQkJCQlwcm9nbmFtZSwgb3V0ZmlsZSwgc3RyZXJyb3IoZXJybm8pKTsKKwkJCQlwZ19sb2df ZXJyb3IoImNvdWxkIG5vdCBvcGVuIGxvZyBmaWxlIFwiJXNcIjogJW0iLCBvdXRmaWxlKTsK IAkJCQlnb3RvIGVycm9yOwogCQkJfQogCiAJCQlpZiAoZnN0YXQob3V0ZmQsICZzdGF0YnVm KSAhPSAwKQotCQkJCWZwcmludGYoc3RkZXJyLAotCQkJCQkJXygiJXM6IGNvdWxkIG5vdCBz dGF0IGZpbGUgXCIlc1wiOiAlc1xuIiksCi0JCQkJCQlwcm9nbmFtZSwgb3V0ZmlsZSwgc3Ry ZXJyb3IoZXJybm8pKTsKKwkJCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBzdGF0IGZpbGUg XCIlc1wiOiAlbSIsIG91dGZpbGUpOwogCiAJCQlvdXRwdXRfaXNmaWxlID0gU19JU1JFRyhz dGF0YnVmLnN0X21vZGUpICYmICFpc2F0dHkob3V0ZmQpOwogCQl9CkBAIC0zNzMsOSArMzYz LDcgQEAgU3RyZWFtTG9naWNhbExvZyh2b2lkKQogCiAJCQlpZiAoUFFzb2NrZXQoY29ubikg PCAwKQogCQkJewotCQkJCWZwcmludGYoc3RkZXJyLAotCQkJCQkJXygiJXM6IGludmFsaWQg c29ja2V0OiAlcyIpLAotCQkJCQkJcHJvZ25hbWUsIFBRZXJyb3JNZXNzYWdlKGNvbm4pKTsK KwkJCQlwZ19sb2dfZXJyb3IoImludmFsaWQgc29ja2V0OiAlcyIsIFBRZXJyb3JNZXNzYWdl KGNvbm4pKTsKIAkJCQlnb3RvIGVycm9yOwogCQkJfQogCkBAIC00MjgsMTcgKzQxNiwxNSBA QCBTdHJlYW1Mb2dpY2FsTG9nKHZvaWQpCiAJCQl9CiAJCQllbHNlIGlmIChyIDwgMCkKIAkJ CXsKLQkJCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IHNlbGVjdCgpIGZhaWxlZDogJXNcbiIp LAotCQkJCQkJcHJvZ25hbWUsIHN0cmVycm9yKGVycm5vKSk7CisJCQkJcGdfbG9nX2Vycm9y KCJzZWxlY3QoKSBmYWlsZWQ6ICVtIik7CiAJCQkJZ290byBlcnJvcjsKIAkJCX0KIAogCQkJ LyogRWxzZSB0aGVyZSBpcyBhY3R1YWxseSBkYXRhIG9uIHRoZSBzb2NrZXQgKi8KIAkJCWlm IChQUWNvbnN1bWVJbnB1dChjb25uKSA9PSAwKQogCQkJewotCQkJCWZwcmludGYoc3RkZXJy LAotCQkJCQkJXygiJXM6IGNvdWxkIG5vdCByZWNlaXZlIGRhdGEgZnJvbSBXQUwgc3RyZWFt OiAlcyIpLAotCQkJCQkJcHJvZ25hbWUsIFBRZXJyb3JNZXNzYWdlKGNvbm4pKTsKKwkJCQlw Z19sb2dfZXJyb3IoImNvdWxkIG5vdCByZWNlaXZlIGRhdGEgZnJvbSBXQUwgc3RyZWFtOiAl cyIsCisJCQkJCQkJIFBRZXJyb3JNZXNzYWdlKGNvbm4pKTsKIAkJCQlnb3RvIGVycm9yOwog CQkJfQogCQkJY29udGludWU7CkBAIC00NTEsOCArNDM3LDggQEAgU3RyZWFtTG9naWNhbExv Zyh2b2lkKQogCQkvKiBGYWlsdXJlIHdoaWxlIHJlYWRpbmcgdGhlIGNvcHkgc3RyZWFtICov CiAJCWlmIChyID09IC0yKQogCQl7Ci0JCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNvdWxk IG5vdCByZWFkIENPUFkgZGF0YTogJXMiKSwKLQkJCQkJcHJvZ25hbWUsIFBRZXJyb3JNZXNz YWdlKGNvbm4pKTsKKwkJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IHJlYWQgQ09QWSBkYXRh OiAlcyIsCisJCQkJCQkgUFFlcnJvck1lc3NhZ2UoY29ubikpOwogCQkJZ290byBlcnJvcjsK IAkJfQogCkBAIC00NzksOCArNDY1LDcgQEAgU3RyZWFtTG9naWNhbExvZyh2b2lkKQogCiAJ CQlpZiAociA8IHBvcyArIDEpCiAJCQl7Ci0JCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBz dHJlYW1pbmcgaGVhZGVyIHRvbyBzbWFsbDogJWRcbiIpLAotCQkJCQkJcHJvZ25hbWUsIHIp OworCQkJCXBnX2xvZ19lcnJvcigic3RyZWFtaW5nIGhlYWRlciB0b28gc21hbGw6ICVkIiwg cik7CiAJCQkJZ290byBlcnJvcjsKIAkJCX0KIAkJCXJlcGx5UmVxdWVzdGVkID0gY29weWJ1 Zltwb3NdOwpAQCAtNTE1LDggKzUwMCw4IEBAIFN0cmVhbUxvZ2ljYWxMb2codm9pZCkKIAkJ fQogCQllbHNlIGlmIChjb3B5YnVmWzBdICE9ICd3JykKIAkJewotCQkJZnByaW50ZihzdGRl cnIsIF8oIiVzOiB1bnJlY29nbml6ZWQgc3RyZWFtaW5nIGhlYWRlcjogXCIlY1wiXG4iKSwK LQkJCQkJcHJvZ25hbWUsIGNvcHlidWZbMF0pOworCQkJcGdfbG9nX2Vycm9yKCJ1bnJlY29n bml6ZWQgc3RyZWFtaW5nIGhlYWRlcjogXCIlY1wiIiwKKwkJCQkJCSBjb3B5YnVmWzBdKTsK IAkJCWdvdG8gZXJyb3I7CiAJCX0KIApAQCAtNTMxLDggKzUxNiw3IEBAIFN0cmVhbUxvZ2lj YWxMb2codm9pZCkKIAkJaGRyX2xlbiArPSA4OwkJCS8qIHNlbmRUaW1lICovCiAJCWlmIChy IDwgaGRyX2xlbiArIDEpCiAJCXsKLQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczogc3RyZWFt aW5nIGhlYWRlciB0b28gc21hbGw6ICVkXG4iKSwKLQkJCQkJcHJvZ25hbWUsIHIpOworCQkJ cGdfbG9nX2Vycm9yKCJzdHJlYW1pbmcgaGVhZGVyIHRvbyBzbWFsbDogJWQiLCByKTsKIAkJ CWdvdG8gZXJyb3I7CiAJCX0KIApAQCAtNTcwLDEwICs1NTQsOCBAQCBTdHJlYW1Mb2dpY2Fs TG9nKHZvaWQpCiAKIAkJCWlmIChyZXQgPCAwKQogCQkJewotCQkJCWZwcmludGYoc3RkZXJy LAotCQkJCQkJXygiJXM6IGNvdWxkIG5vdCB3cml0ZSAldSBieXRlcyB0byBsb2cgZmlsZSBc IiVzXCI6ICVzXG4iKSwKLQkJCQkJCXByb2duYW1lLCBieXRlc19sZWZ0LCBvdXRmaWxlLAot CQkJCQkJc3RyZXJyb3IoZXJybm8pKTsKKwkJCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCB3 cml0ZSAldSBieXRlcyB0byBsb2cgZmlsZSBcIiVzXCI6ICVtIiwKKwkJCQkJCQkgYnl0ZXNf bGVmdCwgb3V0ZmlsZSk7CiAJCQkJZ290byBlcnJvcjsKIAkJCX0KIApAQCAtNTg0LDEwICs1 NjYsOCBAQCBTdHJlYW1Mb2dpY2FsTG9nKHZvaWQpCiAKIAkJaWYgKHdyaXRlKG91dGZkLCAi XG4iLCAxKSAhPSAxKQogCQl7Ci0JCQlmcHJpbnRmKHN0ZGVyciwKLQkJCQkJXygiJXM6IGNv dWxkIG5vdCB3cml0ZSAldSBieXRlcyB0byBsb2cgZmlsZSBcIiVzXCI6ICVzXG4iKSwKLQkJ CQkJcHJvZ25hbWUsIDEsIG91dGZpbGUsCi0JCQkJCXN0cmVycm9yKGVycm5vKSk7CisJCQlw Z19sb2dfZXJyb3IoImNvdWxkIG5vdCB3cml0ZSAldSBieXRlcyB0byBsb2cgZmlsZSBcIiVz XCI6ICVtIiwKKwkJCQkJCSAxLCBvdXRmaWxlKTsKIAkJCWdvdG8gZXJyb3I7CiAJCX0KIApA QCAtNjE0LDkgKzU5NCw4IEBAIFN0cmVhbUxvZ2ljYWxMb2codm9pZCkKIAl9CiAJZWxzZSBp ZiAoUFFyZXN1bHRTdGF0dXMocmVzKSAhPSBQR1JFU19DT01NQU5EX09LKQogCXsKLQkJZnBy aW50ZihzdGRlcnIsCi0JCQkJXygiJXM6IHVuZXhwZWN0ZWQgdGVybWluYXRpb24gb2YgcmVw bGljYXRpb24gc3RyZWFtOiAlcyIpLAotCQkJCXByb2duYW1lLCBQUXJlc3VsdEVycm9yTWVz c2FnZShyZXMpKTsKKwkJcGdfbG9nX2Vycm9yKCJ1bmV4cGVjdGVkIHRlcm1pbmF0aW9uIG9m IHJlcGxpY2F0aW9uIHN0cmVhbTogJXMiLAorCQkJCQkgUFFyZXN1bHRFcnJvck1lc3NhZ2Uo cmVzKSk7CiAJCWdvdG8gZXJyb3I7CiAJfQogCVBRY2xlYXIocmVzKTsKQEAgLTYyOSw4ICs2 MDgsNyBAQCBTdHJlYW1Mb2dpY2FsTG9nKHZvaWQpCiAJCU91dHB1dEZzeW5jKHQpOwogCiAJ CWlmIChjbG9zZShvdXRmZCkgIT0gMCkKLQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczogY291 bGQgbm90IGNsb3NlIGZpbGUgXCIlc1wiOiAlc1xuIiksCi0JCQkJCXByb2duYW1lLCBvdXRm aWxlLCBzdHJlcnJvcihlcnJubykpOworCQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgY2xv c2UgZmlsZSBcIiVzXCI6ICVtIiwgb3V0ZmlsZSk7CiAJfQogCW91dGZkID0gLTE7CiBlcnJv cjoKQEAgLTcxMCw2ICs2ODgsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAog CXByb2duYW1lID0gZ2V0X3Byb2duYW1lKGFyZ3ZbMF0pOwogCXNldF9wZ2xvY2FsZV9wZ3Nl cnZpY2UoYXJndlswXSwgUEdfVEVYVERPTUFJTigicGdfYmFzZWJhY2t1cCIpKTsKKwlwZ19s b2dnaW5nX2luaXQoYXJndlswXSk7CiAKIAlpZiAoYXJnYyA+IDEpCiAJewpAQCAtNzM5LDgg KzcxOCw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCQkJCWZzeW5jX2ludGVy dmFsID0gYXRvaShvcHRhcmcpICogMTAwMDsKIAkJCQlpZiAoZnN5bmNfaW50ZXJ2YWwgPCAw KQogCQkJCXsKLQkJCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBpbnZhbGlkIGZzeW5jIGlu dGVydmFsIFwiJXNcIlxuIiksCi0JCQkJCQkJcHJvZ25hbWUsIG9wdGFyZyk7CisJCQkJCXBn X2xvZ19lcnJvcigiaW52YWxpZCBmc3luYyBpbnRlcnZhbCBcIiVzXCIiLCBvcHRhcmcpOwog CQkJCQlleGl0KDEpOwogCQkJCX0KIAkJCQlicmVhazsKQEAgLTc2MCw4ICs3MzgsNyBAQCBt YWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAkJCWNhc2UgJ3AnOgogCQkJCWlmIChhdG9p KG9wdGFyZykgPD0gMCkKIAkJCQl7Ci0JCQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczogaW52 YWxpZCBwb3J0IG51bWJlciBcIiVzXCJcbiIpLAotCQkJCQkJCXByb2duYW1lLCBvcHRhcmcp OworCQkJCQlwZ19sb2dfZXJyb3IoImludmFsaWQgcG9ydCBudW1iZXIgXCIlc1wiIiwgb3B0 YXJnKTsKIAkJCQkJZXhpdCgxKTsKIAkJCQl9CiAJCQkJZGJwb3J0ID0gcGdfc3RyZHVwKG9w dGFyZyk7CkBAIC03NzksOSArNzU2LDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3Yp CiAJCQljYXNlICdJJzoKIAkJCQlpZiAoc3NjYW5mKG9wdGFyZywgIiVYLyVYIiwgJmhpLCAm bG8pICE9IDIpCiAJCQkJewotCQkJCQlmcHJpbnRmKHN0ZGVyciwKLQkJCQkJCQlfKCIlczog Y291bGQgbm90IHBhcnNlIHN0YXJ0IHBvc2l0aW9uIFwiJXNcIlxuIiksCi0JCQkJCQkJcHJv Z25hbWUsIG9wdGFyZyk7CisJCQkJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IHBhcnNlIHN0 YXJ0IHBvc2l0aW9uIFwiJXNcIiIsIG9wdGFyZyk7CiAJCQkJCWV4aXQoMSk7CiAJCQkJfQog CQkJCXN0YXJ0cG9zID0gKCh1aW50NjQpIGhpKSA8PCAzMiB8IGxvOwpAQCAtNzg5LDkgKzc2 NCw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCQkJY2FzZSAnRSc6CiAJCQkJ aWYgKHNzY2FuZihvcHRhcmcsICIlWC8lWCIsICZoaSwgJmxvKSAhPSAyKQogCQkJCXsKLQkJ CQkJZnByaW50ZihzdGRlcnIsCi0JCQkJCQkJXygiJXM6IGNvdWxkIG5vdCBwYXJzZSBlbmQg cG9zaXRpb24gXCIlc1wiXG4iKSwKLQkJCQkJCQlwcm9nbmFtZSwgb3B0YXJnKTsKKwkJCQkJ cGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgcGFyc2UgZW5kIHBvc2l0aW9uIFwiJXNcIiIsIG9w dGFyZyk7CiAJCQkJCWV4aXQoMSk7CiAJCQkJfQogCQkJCWVuZHBvcyA9ICgodWludDY0KSBo aSkgPDwgMzIgfCBsbzsKQEAgLTgyMyw4ICs3OTYsNyBAQCBtYWluKGludCBhcmdjLCBjaGFy ICoqYXJndikKIAkJCQlzdGFuZGJ5X21lc3NhZ2VfdGltZW91dCA9IGF0b2kob3B0YXJnKSAq IDEwMDA7CiAJCQkJaWYgKHN0YW5kYnlfbWVzc2FnZV90aW1lb3V0IDwgMCkKIAkJCQl7Ci0J CQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczogaW52YWxpZCBzdGF0dXMgaW50ZXJ2YWwgXCIl c1wiXG4iKSwKLQkJCQkJCQlwcm9nbmFtZSwgb3B0YXJnKTsKKwkJCQkJcGdfbG9nX2Vycm9y KCJpbnZhbGlkIHN0YXR1cyBpbnRlcnZhbCBcIiVzXCIiLCBvcHRhcmcpOwogCQkJCQlleGl0 KDEpOwogCQkJCX0KIAkJCQlicmVhazsKQEAgLTg2MSw5ICs4MzMsOCBAQCBtYWluKGludCBh cmdjLCBjaGFyICoqYXJndikKIAkgKi8KIAlpZiAob3B0aW5kIDwgYXJnYykKIAl7Ci0JCWZw cmludGYoc3RkZXJyLAotCQkJCV8oIiVzOiB0b28gbWFueSBjb21tYW5kLWxpbmUgYXJndW1l bnRzIChmaXJzdCBpcyBcIiVzXCIpXG4iKSwKLQkJCQlwcm9nbmFtZSwgYXJndltvcHRpbmRd KTsKKwkJcGdfbG9nX2Vycm9yKCJ0b28gbWFueSBjb21tYW5kLWxpbmUgYXJndW1lbnRzIChm aXJzdCBpcyBcIiVzXCIpIiwKKwkJCQkJIGFyZ3Zbb3B0aW5kXSk7CiAJCWZwcmludGYoc3Rk ZXJyLCBfKCJUcnkgXCIlcyAtLWhlbHBcIiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiIpLAog CQkJCXByb2duYW1lKTsKIAkJZXhpdCgxKTsKQEAgLTg3NCw3ICs4NDUsNyBAQCBtYWluKGlu dCBhcmdjLCBjaGFyICoqYXJndikKIAkgKi8KIAlpZiAocmVwbGljYXRpb25fc2xvdCA9PSBO VUxMKQogCXsKLQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBubyBzbG90IHNwZWNpZmllZFxu IiksIHByb2duYW1lKTsKKwkJcGdfbG9nX2Vycm9yKCJubyBzbG90IHNwZWNpZmllZCIpOwog CQlmcHJpbnRmKHN0ZGVyciwgXygiVHJ5IFwiJXMgLS1oZWxwXCIgZm9yIG1vcmUgaW5mb3Jt YXRpb24uXG4iKSwKIAkJCQlwcm9nbmFtZSk7CiAJCWV4aXQoMSk7CkBAIC04ODIsNyArODUz LDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAKIAlpZiAoZG9fc3RhcnRfc2xv dCAmJiBvdXRmaWxlID09IE5VTEwpCiAJewotCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IG5v IHRhcmdldCBmaWxlIHNwZWNpZmllZFxuIiksIHByb2duYW1lKTsKKwkJcGdfbG9nX2Vycm9y KCJubyB0YXJnZXQgZmlsZSBzcGVjaWZpZWQiKTsKIAkJZnByaW50ZihzdGRlcnIsIF8oIlRy eSBcIiVzIC0taGVscFwiIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuIiksCiAJCQkJcHJvZ25h bWUpOwogCQlleGl0KDEpOwpAQCAtODkwLDcgKzg2MSw3IEBAIG1haW4oaW50IGFyZ2MsIGNo YXIgKiphcmd2KQogCiAJaWYgKCFkb19kcm9wX3Nsb3QgJiYgZGJuYW1lID09IE5VTEwpCiAJ ewotCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IG5vIGRhdGFiYXNlIHNwZWNpZmllZFxuIiks IHByb2duYW1lKTsKKwkJcGdfbG9nX2Vycm9yKCJubyBkYXRhYmFzZSBzcGVjaWZpZWQiKTsK IAkJZnByaW50ZihzdGRlcnIsIF8oIlRyeSBcIiVzIC0taGVscFwiIGZvciBtb3JlIGluZm9y bWF0aW9uLlxuIiksCiAJCQkJcHJvZ25hbWUpOwogCQlleGl0KDEpOwpAQCAtODk4LDcgKzg2 OSw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCiAJaWYgKCFkb19kcm9wX3Ns b3QgJiYgIWRvX2NyZWF0ZV9zbG90ICYmICFkb19zdGFydF9zbG90KQogCXsKLQkJZnByaW50 ZihzdGRlcnIsIF8oIiVzOiBhdCBsZWFzdCBvbmUgYWN0aW9uIG5lZWRzIHRvIGJlIHNwZWNp ZmllZFxuIiksIHByb2duYW1lKTsKKwkJcGdfbG9nX2Vycm9yKCJhdCBsZWFzdCBvbmUgYWN0 aW9uIG5lZWRzIHRvIGJlIHNwZWNpZmllZCIpOwogCQlmcHJpbnRmKHN0ZGVyciwgXygiVHJ5 IFwiJXMgLS1oZWxwXCIgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4iKSwKIAkJCQlwcm9nbmFt ZSk7CiAJCWV4aXQoMSk7CkBAIC05MDYsNyArODc3LDcgQEAgbWFpbihpbnQgYXJnYywgY2hh ciAqKmFyZ3YpCiAKIAlpZiAoZG9fZHJvcF9zbG90ICYmIChkb19jcmVhdGVfc2xvdCB8fCBk b19zdGFydF9zbG90KSkKIAl7Ci0JCWZwcmludGYoc3RkZXJyLCBfKCIlczogY2Fubm90IHVz ZSAtLWNyZWF0ZS1zbG90IG9yIC0tc3RhcnQgdG9nZXRoZXIgd2l0aCAtLWRyb3Atc2xvdFxu IiksIHByb2duYW1lKTsKKwkJcGdfbG9nX2Vycm9yKCJjYW5ub3QgdXNlIC0tY3JlYXRlLXNs b3Qgb3IgLS1zdGFydCB0b2dldGhlciB3aXRoIC0tZHJvcC1zbG90Iik7CiAJCWZwcmludGYo c3RkZXJyLCBfKCJUcnkgXCIlcyAtLWhlbHBcIiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiIp LAogCQkJCXByb2duYW1lKTsKIAkJZXhpdCgxKTsKQEAgLTkxNCw3ICs4ODUsNyBAQCBtYWlu KGludCBhcmdjLCBjaGFyICoqYXJndikKIAogCWlmIChzdGFydHBvcyAhPSBJbnZhbGlkWExv Z1JlY1B0ciAmJiAoZG9fY3JlYXRlX3Nsb3QgfHwgZG9fZHJvcF9zbG90KSkKIAl7Ci0JCWZw cmludGYoc3RkZXJyLCBfKCIlczogY2Fubm90IHVzZSAtLWNyZWF0ZS1zbG90IG9yIC0tZHJv cC1zbG90IHRvZ2V0aGVyIHdpdGggLS1zdGFydHBvc1xuIiksIHByb2duYW1lKTsKKwkJcGdf bG9nX2Vycm9yKCJjYW5ub3QgdXNlIC0tY3JlYXRlLXNsb3Qgb3IgLS1kcm9wLXNsb3QgdG9n ZXRoZXIgd2l0aCAtLXN0YXJ0cG9zIik7CiAJCWZwcmludGYoc3RkZXJyLCBfKCJUcnkgXCIl cyAtLWhlbHBcIiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiIpLAogCQkJCXByb2duYW1lKTsK IAkJZXhpdCgxKTsKQEAgLTkyMiw5ICs4OTMsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoq YXJndikKIAogCWlmIChlbmRwb3MgIT0gSW52YWxpZFhMb2dSZWNQdHIgJiYgIWRvX3N0YXJ0 X3Nsb3QpCiAJewotCQlmcHJpbnRmKHN0ZGVyciwKLQkJCQlfKCIlczogLS1lbmRwb3MgbWF5 IG9ubHkgYmUgc3BlY2lmaWVkIHdpdGggLS1zdGFydFxuIiksCi0JCQkJcHJvZ25hbWUpOwor CQlwZ19sb2dfZXJyb3IoIi0tZW5kcG9zIG1heSBvbmx5IGJlIHNwZWNpZmllZCB3aXRoIC0t c3RhcnQiKTsKIAkJZnByaW50ZihzdGRlcnIsIF8oIlRyeSBcIiVzIC0taGVscFwiIGZvciBt b3JlIGluZm9ybWF0aW9uLlxuIiksCiAJCQkJcHJvZ25hbWUpOwogCQlleGl0KDEpOwpAQCAt OTU0LDkgKzkyMyw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCiAJaWYgKGRi X25hbWUgPT0gTlVMTCkKIAl7Ci0JCWZwcmludGYoc3RkZXJyLAotCQkJCV8oIiVzOiBjb3Vs ZCBub3QgZXN0YWJsaXNoIGRhdGFiYXNlLXNwZWNpZmljIHJlcGxpY2F0aW9uIGNvbm5lY3Rp b25cbiIpLAotCQkJCXByb2duYW1lKTsKKwkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgZXN0 YWJsaXNoIGRhdGFiYXNlLXNwZWNpZmljIHJlcGxpY2F0aW9uIGNvbm5lY3Rpb24iKTsKIAkJ ZGlzY29ubmVjdF9hbmRfZXhpdCgxKTsKIAl9CiAKQEAgLTk3NCw5ICs5NDEsNyBAQCBtYWlu KGludCBhcmdjLCBjaGFyICoqYXJndikKIAlpZiAoZG9fZHJvcF9zbG90KQogCXsKIAkJaWYg KHZlcmJvc2UpCi0JCQlmcHJpbnRmKHN0ZGVyciwKLQkJCQkJXygiJXM6IGRyb3BwaW5nIHJl cGxpY2F0aW9uIHNsb3QgXCIlc1wiXG4iKSwKLQkJCQkJcHJvZ25hbWUsIHJlcGxpY2F0aW9u X3Nsb3QpOworCQkJcGdfbG9nX2luZm8oImRyb3BwaW5nIHJlcGxpY2F0aW9uIHNsb3QgXCIl c1wiIiwgcmVwbGljYXRpb25fc2xvdCk7CiAKIAkJaWYgKCFEcm9wUmVwbGljYXRpb25TbG90 KGNvbm4sIHJlcGxpY2F0aW9uX3Nsb3QpKQogCQkJZGlzY29ubmVjdF9hbmRfZXhpdCgxKTsK QEAgLTk4Niw5ICs5NTEsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAlpZiAo ZG9fY3JlYXRlX3Nsb3QpCiAJewogCQlpZiAodmVyYm9zZSkKLQkJCWZwcmludGYoc3RkZXJy LAotCQkJCQlfKCIlczogY3JlYXRpbmcgcmVwbGljYXRpb24gc2xvdCBcIiVzXCJcbiIpLAot CQkJCQlwcm9nbmFtZSwgcmVwbGljYXRpb25fc2xvdCk7CisJCQlwZ19sb2dfaW5mbygiY3Jl YXRpbmcgcmVwbGljYXRpb24gc2xvdCBcIiVzXCIiLCByZXBsaWNhdGlvbl9zbG90KTsKIAog CQlpZiAoIUNyZWF0ZVJlcGxpY2F0aW9uU2xvdChjb25uLCByZXBsaWNhdGlvbl9zbG90LCBw bHVnaW4sIGZhbHNlLAogCQkJCQkJCQkgICBmYWxzZSwgZmFsc2UsIHNsb3RfZXhpc3RzX29r KSkKQEAgLTEwMTMsMTUgKzk3NiwxNCBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikK IAkJfQogCQllbHNlIGlmIChub2xvb3ApCiAJCXsKLQkJCWZwcmludGYoc3RkZXJyLCBfKCIl czogZGlzY29ubmVjdGVkXG4iKSwgcHJvZ25hbWUpOworCQkJcGdfbG9nX2Vycm9yKCJkaXNj b25uZWN0ZWQiKTsKIAkJCWV4aXQoMSk7CiAJCX0KIAkJZWxzZQogCQl7Ci0JCQlmcHJpbnRm KHN0ZGVyciwKIAkJCS8qIHRyYW5zbGF0b3I6IGNoZWNrIHNvdXJjZSBmb3IgdmFsdWUgZm9y ICVkICovCi0JCQkJCV8oIiVzOiBkaXNjb25uZWN0ZWQ7IHdhaXRpbmcgJWQgc2Vjb25kcyB0 byB0cnkgYWdhaW5cbiIpLAotCQkJCQlwcm9nbmFtZSwgUkVDT05ORUNUX1NMRUVQX1RJTUUp OworCQkJcGdfbG9nX2luZm8oImRpc2Nvbm5lY3RlZDsgd2FpdGluZyAlZCBzZWNvbmRzIHRv IHRyeSBhZ2FpbiIsCisJCQkJCQlSRUNPTk5FQ1RfU0xFRVBfVElNRSk7CiAJCQlwZ191c2xl ZXAoUkVDT05ORUNUX1NMRUVQX1RJTUUgKiAxMDAwMDAwKTsKIAkJfQogCX0KQEAgLTEwNjAs MTMgKzEwMjIsMTIgQEAgcHJlcGFyZVRvVGVybWluYXRlKFBHY29ubiAqY29ubiwgWExvZ1Jl Y1B0ciBlbmRwb3MsIGJvb2wga2VlcGFsaXZlLCBYTG9nUmVjUHRyIGwKIAlpZiAodmVyYm9z ZSkKIAl7CiAJCWlmIChrZWVwYWxpdmUpCi0JCQlmcHJpbnRmKHN0ZGVyciwgIiVzOiBlbmRw b3MgJVgvJVggcmVhY2hlZCBieSBrZWVwYWxpdmVcbiIsCi0JCQkJCXByb2duYW1lLAotCQkJ CQkodWludDMyKSAoZW5kcG9zID4+IDMyKSwgKHVpbnQzMikgZW5kcG9zKTsKKwkJCXBnX2xv Z19pbmZvKCJlbmRwb3MgJVgvJVggcmVhY2hlZCBieSBrZWVwYWxpdmUiLAorCQkJCQkJKHVp bnQzMikgKGVuZHBvcyA+PiAzMiksICh1aW50MzIpIGVuZHBvcyk7CiAJCWVsc2UKLQkJCWZw cmludGYoc3RkZXJyLCAiJXM6IGVuZHBvcyAlWC8lWCByZWFjaGVkIGJ5IHJlY29yZCBhdCAl WC8lWFxuIiwKLQkJCQkJcHJvZ25hbWUsICh1aW50MzIpIChlbmRwb3MgPj4gMzIpLCAodWlu dDMyKSAoZW5kcG9zKSwKLQkJCQkJKHVpbnQzMikgKGxzbiA+PiAzMiksICh1aW50MzIpIGxz bik7CisJCQlwZ19sb2dfaW5mbygiZW5kcG9zICVYLyVYIHJlYWNoZWQgYnkgcmVjb3JkIGF0 ICVYLyVYIiwKKwkJCQkJCSh1aW50MzIpIChlbmRwb3MgPj4gMzIpLCAodWludDMyKSAoZW5k cG9zKSwKKwkJCQkJCSh1aW50MzIpIChsc24gPj4gMzIpLCAodWludDMyKSBsc24pOwogCiAJ fQogfQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19iYXNlYmFja3VwL3JlY2VpdmVsb2cuYyBi L3NyYy9iaW4vcGdfYmFzZWJhY2t1cC9yZWNlaXZlbG9nLmMKaW5kZXggMTA3Njg3ODYzMC4u OWY2ODVkYjkxZSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19iYXNlYmFja3VwL3JlY2VpdmVs b2cuYworKysgYi9zcmMvYmluL3BnX2Jhc2ViYWNrdXAvcmVjZWl2ZWxvZy5jCkBAIC0yNyw2 ICsyNyw3IEBACiAjaW5jbHVkZSAibGlicHEtZmUuaCIKICNpbmNsdWRlICJhY2Nlc3MveGxv Z19pbnRlcm5hbC5oIgogI2luY2x1ZGUgImNvbW1vbi9maWxlX3V0aWxzLmgiCisjaW5jbHVk ZSAiZmVfdXRpbHMvbG9nZ2luZy5oIgogCiAKIC8qIGZkIGFuZCBmaWxlbmFtZSBmb3IgY3Vy cmVudGx5IG9wZW4gV0FMIGZpbGUgKi8KQEAgLTY4LDggKzY5LDggQEAgbWFya19maWxlX2Fz X2FyY2hpdmVkKFN0cmVhbUN0bCAqc3RyZWFtLCBjb25zdCBjaGFyICpmbmFtZSkKIAlmID0g c3RyZWFtLT53YWxtZXRob2QtPm9wZW5fZm9yX3dyaXRlKHRtcHBhdGgsIE5VTEwsIDApOwog CWlmIChmID09IE5VTEwpCiAJewotCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5v dCBjcmVhdGUgYXJjaGl2ZSBzdGF0dXMgZmlsZSBcIiVzXCI6ICVzXG4iKSwKLQkJCQlwcm9n bmFtZSwgdG1wcGF0aCwgc3RyZWFtLT53YWxtZXRob2QtPmdldGxhc3RlcnJvcigpKTsKKwkJ cGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgY3JlYXRlIGFyY2hpdmUgc3RhdHVzIGZpbGUgXCIl c1wiOiAlcyIsCisJCQkJCSB0bXBwYXRoLCBzdHJlYW0tPndhbG1ldGhvZC0+Z2V0bGFzdGVy cm9yKCkpOwogCQlyZXR1cm4gZmFsc2U7CiAJfQogCkBAIC0xMTUsOSArMTE2LDggQEAgb3Bl bl93YWxmaWxlKFN0cmVhbUN0bCAqc3RyZWFtLCBYTG9nUmVjUHRyIHN0YXJ0cG9pbnQpCiAJ CXNpemUgPSBzdHJlYW0tPndhbG1ldGhvZC0+Z2V0X2ZpbGVfc2l6ZShmbik7CiAJCWlmIChz aXplIDwgMCkKIAkJewotCQkJZnByaW50ZihzdGRlcnIsCi0JCQkJCV8oIiVzOiBjb3VsZCBu b3QgZ2V0IHNpemUgb2Ygd3JpdGUtYWhlYWQgbG9nIGZpbGUgXCIlc1wiOiAlc1xuIiksCi0J CQkJCXByb2duYW1lLCBmbiwgc3RyZWFtLT53YWxtZXRob2QtPmdldGxhc3RlcnJvcigpKTsK KwkJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IGdldCBzaXplIG9mIHdyaXRlLWFoZWFkIGxv ZyBmaWxlIFwiJXNcIjogJXMiLAorCQkJCQkJIGZuLCBzdHJlYW0tPndhbG1ldGhvZC0+Z2V0 bGFzdGVycm9yKCkpOwogCQkJcmV0dXJuIGZhbHNlOwogCQl9CiAJCWlmIChzaXplID09IFdh bFNlZ1N6KQpAQCAtMTI2LDE4ICsxMjYsMTYgQEAgb3Blbl93YWxmaWxlKFN0cmVhbUN0bCAq c3RyZWFtLCBYTG9nUmVjUHRyIHN0YXJ0cG9pbnQpCiAJCQlmID0gc3RyZWFtLT53YWxtZXRo b2QtPm9wZW5fZm9yX3dyaXRlKGN1cnJlbnRfd2FsZmlsZV9uYW1lLCBzdHJlYW0tPnBhcnRp YWxfc3VmZml4LCAwKTsKIAkJCWlmIChmID09IE5VTEwpCiAJCQl7Ci0JCQkJZnByaW50Zihz dGRlcnIsCi0JCQkJCQlfKCIlczogY291bGQgbm90IG9wZW4gZXhpc3Rpbmcgd3JpdGUtYWhl YWQgbG9nIGZpbGUgXCIlc1wiOiAlc1xuIiksCi0JCQkJCQlwcm9nbmFtZSwgZm4sIHN0cmVh bS0+d2FsbWV0aG9kLT5nZXRsYXN0ZXJyb3IoKSk7CisJCQkJcGdfbG9nX2Vycm9yKCJjb3Vs ZCBub3Qgb3BlbiBleGlzdGluZyB3cml0ZS1haGVhZCBsb2cgZmlsZSBcIiVzXCI6ICVzIiwK KwkJCQkJCQkgZm4sIHN0cmVhbS0+d2FsbWV0aG9kLT5nZXRsYXN0ZXJyb3IoKSk7CiAJCQkJ cmV0dXJuIGZhbHNlOwogCQkJfQogCiAJCQkvKiBmc3luYyBmaWxlIGluIGNhc2Ugb2YgYSBw cmV2aW91cyBjcmFzaCAqLwogCQkJaWYgKHN0cmVhbS0+d2FsbWV0aG9kLT5zeW5jKGYpICE9 IDApCiAJCQl7Ci0JCQkJZnByaW50ZihzdGRlcnIsCi0JCQkJCQlfKCIlczogY291bGQgbm90 IGZzeW5jIGV4aXN0aW5nIHdyaXRlLWFoZWFkIGxvZyBmaWxlIFwiJXNcIjogJXNcbiIpLAot CQkJCQkJcHJvZ25hbWUsIGZuLCBzdHJlYW0tPndhbG1ldGhvZC0+Z2V0bGFzdGVycm9yKCkp OworCQkJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IGZzeW5jIGV4aXN0aW5nIHdyaXRlLWFo ZWFkIGxvZyBmaWxlIFwiJXNcIjogJXMiLAorCQkJCQkJCSBmbiwgc3RyZWFtLT53YWxtZXRo b2QtPmdldGxhc3RlcnJvcigpKTsKIAkJCQlzdHJlYW0tPndhbG1ldGhvZC0+Y2xvc2UoZiwg Q0xPU0VfVU5MSU5LKTsKIAkJCQlyZXR1cm4gZmFsc2U7CiAJCQl9CkBAIC0xNTAsMTEgKzE0 OCwxMCBAQCBvcGVuX3dhbGZpbGUoU3RyZWFtQ3RsICpzdHJlYW0sIFhMb2dSZWNQdHIgc3Rh cnRwb2ludCkKIAkJCS8qIGlmIHdyaXRlIGRpZG4ndCBzZXQgZXJybm8sIGFzc3VtZSBwcm9i bGVtIGlzIG5vIGRpc2sgc3BhY2UgKi8KIAkJCWlmIChlcnJubyA9PSAwKQogCQkJCWVycm5v ID0gRU5PU1BDOwotCQkJZnByaW50ZihzdGRlcnIsCi0JCQkJCW5nZXR0ZXh0KCIlczogd3Jp dGUtYWhlYWQgbG9nIGZpbGUgXCIlc1wiIGhhcyAlZCBieXRlLCBzaG91bGQgYmUgMCBvciAl ZFxuIiwKLQkJCQkJCQkgIiVzOiB3cml0ZS1haGVhZCBsb2cgZmlsZSBcIiVzXCIgaGFzICVk IGJ5dGVzLCBzaG91bGQgYmUgMCBvciAlZFxuIiwKLQkJCQkJCQkgc2l6ZSksCi0JCQkJCXBy b2duYW1lLCBmbiwgKGludCkgc2l6ZSwgV2FsU2VnU3opOworCQkJcGdfbG9nX2Vycm9yKG5n ZXR0ZXh0KCJ3cml0ZS1haGVhZCBsb2cgZmlsZSBcIiVzXCIgaGFzICVkIGJ5dGUsIHNob3Vs ZCBiZSAwIG9yICVkIiwKKwkJCQkJCQkJICAid3JpdGUtYWhlYWQgbG9nIGZpbGUgXCIlc1wi IGhhcyAlZCBieXRlcywgc2hvdWxkIGJlIDAgb3IgJWQiLAorCQkJCQkJCQkgIHNpemUpLAor CQkJCQkJIGZuLCAoaW50KSBzaXplLCBXYWxTZWdTeik7CiAJCQlyZXR1cm4gZmFsc2U7CiAJ CX0KIAkJLyogRmlsZSBleGlzdGVkIGFuZCB3YXMgZW1wdHksIHNvIGZhbGwgdGhyb3VnaCBh bmQgb3BlbiAqLwpAQCAtMTY2LDkgKzE2Myw4IEBAIG9wZW5fd2FsZmlsZShTdHJlYW1DdGwg KnN0cmVhbSwgWExvZ1JlY1B0ciBzdGFydHBvaW50KQogCQkJCQkJCQkJCSAgc3RyZWFtLT5w YXJ0aWFsX3N1ZmZpeCwgV2FsU2VnU3opOwogCWlmIChmID09IE5VTEwpCiAJewotCQlmcHJp bnRmKHN0ZGVyciwKLQkJCQlfKCIlczogY291bGQgbm90IG9wZW4gd3JpdGUtYWhlYWQgbG9n IGZpbGUgXCIlc1wiOiAlc1xuIiksCi0JCQkJcHJvZ25hbWUsIGZuLCBzdHJlYW0tPndhbG1l dGhvZC0+Z2V0bGFzdGVycm9yKCkpOworCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBvcGVu IHdyaXRlLWFoZWFkIGxvZyBmaWxlIFwiJXNcIjogJXMiLAorCQkJCQkgZm4sIHN0cmVhbS0+ d2FsbWV0aG9kLT5nZXRsYXN0ZXJyb3IoKSk7CiAJCXJldHVybiBmYWxzZTsKIAl9CiAKQEAg LTE5Myw5ICsxODksOCBAQCBjbG9zZV93YWxmaWxlKFN0cmVhbUN0bCAqc3RyZWFtLCBYTG9n UmVjUHRyIHBvcykKIAljdXJycG9zID0gc3RyZWFtLT53YWxtZXRob2QtPmdldF9jdXJyZW50 X3Bvcyh3YWxmaWxlKTsKIAlpZiAoY3VycnBvcyA9PSAtMSkKIAl7Ci0JCWZwcmludGYoc3Rk ZXJyLAotCQkJCV8oIiVzOiBjb3VsZCBub3QgZGV0ZXJtaW5lIHNlZWsgcG9zaXRpb24gaW4g ZmlsZSBcIiVzXCI6ICVzXG4iKSwKLQkJCQlwcm9nbmFtZSwgY3VycmVudF93YWxmaWxlX25h bWUsIHN0cmVhbS0+d2FsbWV0aG9kLT5nZXRsYXN0ZXJyb3IoKSk7CisJCXBnX2xvZ19lcnJv cigiY291bGQgbm90IGRldGVybWluZSBzZWVrIHBvc2l0aW9uIGluIGZpbGUgXCIlc1wiOiAl cyIsCisJCQkJCSBjdXJyZW50X3dhbGZpbGVfbmFtZSwgc3RyZWFtLT53YWxtZXRob2QtPmdl dGxhc3RlcnJvcigpKTsKIAkJc3RyZWFtLT53YWxtZXRob2QtPmNsb3NlKHdhbGZpbGUsIENM T1NFX1VOTElOSyk7CiAJCXdhbGZpbGUgPSBOVUxMOwogCkBAIC0yMDgsOSArMjAzLDggQEAg Y2xvc2Vfd2FsZmlsZShTdHJlYW1DdGwgKnN0cmVhbSwgWExvZ1JlY1B0ciBwb3MpCiAJCQly ID0gc3RyZWFtLT53YWxtZXRob2QtPmNsb3NlKHdhbGZpbGUsIENMT1NFX05PUk1BTCk7CiAJ CWVsc2UKIAkJewotCQkJZnByaW50ZihzdGRlcnIsCi0JCQkJCV8oIiVzOiBub3QgcmVuYW1p bmcgXCIlcyVzXCIsIHNlZ21lbnQgaXMgbm90IGNvbXBsZXRlXG4iKSwKLQkJCQkJcHJvZ25h bWUsIGN1cnJlbnRfd2FsZmlsZV9uYW1lLCBzdHJlYW0tPnBhcnRpYWxfc3VmZml4KTsKKwkJ CXBnX2xvZ19pbmZvKCJub3QgcmVuYW1pbmcgXCIlcyVzXCIsIHNlZ21lbnQgaXMgbm90IGNv bXBsZXRlIiwKKwkJCQkJCWN1cnJlbnRfd2FsZmlsZV9uYW1lLCBzdHJlYW0tPnBhcnRpYWxf c3VmZml4KTsKIAkJCXIgPSBzdHJlYW0tPndhbG1ldGhvZC0+Y2xvc2Uod2FsZmlsZSwgQ0xP U0VfTk9fUkVOQU1FKTsKIAkJfQogCX0KQEAgLTIyMSw4ICsyMTUsOCBAQCBjbG9zZV93YWxm aWxlKFN0cmVhbUN0bCAqc3RyZWFtLCBYTG9nUmVjUHRyIHBvcykKIAogCWlmIChyICE9IDAp CiAJewotCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCBjbG9zZSBmaWxlIFwi JXNcIjogJXNcbiIpLAotCQkJCXByb2duYW1lLCBjdXJyZW50X3dhbGZpbGVfbmFtZSwgc3Ry ZWFtLT53YWxtZXRob2QtPmdldGxhc3RlcnJvcigpKTsKKwkJcGdfbG9nX2Vycm9yKCJjb3Vs ZCBub3QgY2xvc2UgZmlsZSBcIiVzXCI6ICVzIiwKKwkJCQkJIGN1cnJlbnRfd2FsZmlsZV9u YW1lLCBzdHJlYW0tPndhbG1ldGhvZC0+Z2V0bGFzdGVycm9yKCkpOwogCQlyZXR1cm4gZmFs c2U7CiAJfQogCkBAIC0yNzgsMjMgKzI3MiwyMyBAQCB3cml0ZVRpbWVMaW5lSGlzdG9yeUZp bGUoU3RyZWFtQ3RsICpzdHJlYW0sIGNoYXIgKmZpbGVuYW1lLCBjaGFyICpjb250ZW50KQog CVRMSGlzdG9yeUZpbGVOYW1lKGhpc3RmbmFtZSwgc3RyZWFtLT50aW1lbGluZSk7CiAJaWYg KHN0cmNtcChoaXN0Zm5hbWUsIGZpbGVuYW1lKSAhPSAwKQogCXsKLQkJZnByaW50ZihzdGRl cnIsIF8oIiVzOiBzZXJ2ZXIgcmVwb3J0ZWQgdW5leHBlY3RlZCBoaXN0b3J5IGZpbGUgbmFt ZSBmb3IgdGltZWxpbmUgJXU6ICVzXG4iKSwKLQkJCQlwcm9nbmFtZSwgc3RyZWFtLT50aW1l bGluZSwgZmlsZW5hbWUpOworCQlwZ19sb2dfZXJyb3IoInNlcnZlciByZXBvcnRlZCB1bmV4 cGVjdGVkIGhpc3RvcnkgZmlsZSBuYW1lIGZvciB0aW1lbGluZSAldTogJXMiLAorCQkJCQkg c3RyZWFtLT50aW1lbGluZSwgZmlsZW5hbWUpOwogCQlyZXR1cm4gZmFsc2U7CiAJfQogCiAJ ZiA9IHN0cmVhbS0+d2FsbWV0aG9kLT5vcGVuX2Zvcl93cml0ZShoaXN0Zm5hbWUsICIudG1w IiwgMCk7CiAJaWYgKGYgPT0gTlVMTCkKIAl7Ci0JCWZwcmludGYoc3RkZXJyLCBfKCIlczog Y291bGQgbm90IGNyZWF0ZSB0aW1lbGluZSBoaXN0b3J5IGZpbGUgXCIlc1wiOiAlc1xuIiks Ci0JCQkJcHJvZ25hbWUsIGhpc3RmbmFtZSwgc3RyZWFtLT53YWxtZXRob2QtPmdldGxhc3Rl cnJvcigpKTsKKwkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgY3JlYXRlIHRpbWVsaW5lIGhp c3RvcnkgZmlsZSBcIiVzXCI6ICVzIiwKKwkJCQkJIGhpc3RmbmFtZSwgc3RyZWFtLT53YWxt ZXRob2QtPmdldGxhc3RlcnJvcigpKTsKIAkJcmV0dXJuIGZhbHNlOwogCX0KIAogCWlmICgo aW50KSBzdHJlYW0tPndhbG1ldGhvZC0+d3JpdGUoZiwgY29udGVudCwgc2l6ZSkgIT0gc2l6 ZSkKIAl7Ci0JCWZwcmludGYoc3RkZXJyLCBfKCIlczogY291bGQgbm90IHdyaXRlIHRpbWVs aW5lIGhpc3RvcnkgZmlsZSBcIiVzXCI6ICVzXG4iKSwKLQkJCQlwcm9nbmFtZSwgaGlzdGZu YW1lLCBzdHJlYW0tPndhbG1ldGhvZC0+Z2V0bGFzdGVycm9yKCkpOworCQlwZ19sb2dfZXJy b3IoImNvdWxkIG5vdCB3cml0ZSB0aW1lbGluZSBoaXN0b3J5IGZpbGUgXCIlc1wiOiAlcyIs CisJCQkJCSBoaXN0Zm5hbWUsIHN0cmVhbS0+d2FsbWV0aG9kLT5nZXRsYXN0ZXJyb3IoKSk7 CiAKIAkJLyoKIAkJICogSWYgd2UgZmFpbCB0byBtYWtlIHRoZSBmaWxlLCBkZWxldGUgaXQg dG8gcmVsZWFzZSBkaXNrIHNwYWNlCkBAIC0zMDYsOCArMzAwLDggQEAgd3JpdGVUaW1lTGlu ZUhpc3RvcnlGaWxlKFN0cmVhbUN0bCAqc3RyZWFtLCBjaGFyICpmaWxlbmFtZSwgY2hhciAq Y29udGVudCkKIAogCWlmIChzdHJlYW0tPndhbG1ldGhvZC0+Y2xvc2UoZiwgQ0xPU0VfTk9S TUFMKSAhPSAwKQogCXsKLQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBjb3VsZCBub3QgY2xv c2UgZmlsZSBcIiVzXCI6ICVzXG4iKSwKLQkJCQlwcm9nbmFtZSwgaGlzdGZuYW1lLCBzdHJl YW0tPndhbG1ldGhvZC0+Z2V0bGFzdGVycm9yKCkpOworCQlwZ19sb2dfZXJyb3IoImNvdWxk IG5vdCBjbG9zZSBmaWxlIFwiJXNcIjogJXMiLAorCQkJCQkgaGlzdGZuYW1lLCBzdHJlYW0t PndhbG1ldGhvZC0+Z2V0bGFzdGVycm9yKCkpOwogCQlyZXR1cm4gZmFsc2U7CiAJfQogCkBA IC0zNDksOCArMzQzLDggQEAgc2VuZEZlZWRiYWNrKFBHY29ubiAqY29ubiwgWExvZ1JlY1B0 ciBibG9ja3BvcywgVGltZXN0YW1wVHogbm93LCBib29sIHJlcGx5UmVxdWUKIAogCWlmIChQ UXB1dENvcHlEYXRhKGNvbm4sIHJlcGx5YnVmLCBsZW4pIDw9IDAgfHwgUFFmbHVzaChjb25u KSkKIAl7Ci0JCWZwcmludGYoc3RkZXJyLCBfKCIlczogY291bGQgbm90IHNlbmQgZmVlZGJh Y2sgcGFja2V0OiAlcyIpLAotCQkJCXByb2duYW1lLCBQUWVycm9yTWVzc2FnZShjb25uKSk7 CisJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IHNlbmQgZmVlZGJhY2sgcGFja2V0OiAlcyIs CisJCQkJCSBQUWVycm9yTWVzc2FnZShjb25uKSk7CiAJCXJldHVybiBmYWxzZTsKIAl9CiAK QEAgLTM4MywyMCArMzc3LDE4IEBAIENoZWNrU2VydmVyVmVyc2lvbkZvclN0cmVhbWluZyhQ R2Nvbm4gKmNvbm4pCiAJewogCQljb25zdCBjaGFyICpzZXJ2ZXJ2ZXIgPSBQUXBhcmFtZXRl clN0YXR1cyhjb25uLCAic2VydmVyX3ZlcnNpb24iKTsKIAotCQlmcHJpbnRmKHN0ZGVyciwg XygiJXM6IGluY29tcGF0aWJsZSBzZXJ2ZXIgdmVyc2lvbiAlczsgY2xpZW50IGRvZXMgbm90 IHN1cHBvcnQgc3RyZWFtaW5nIGZyb20gc2VydmVyIHZlcnNpb25zIG9sZGVyIHRoYW4gJXNc biIpLAotCQkJCXByb2duYW1lLAotCQkJCXNlcnZlcnZlciA/IHNlcnZlcnZlciA6ICIndW5r bm93biciLAotCQkJCSI5LjMiKTsKKwkJcGdfbG9nX2Vycm9yKCJpbmNvbXBhdGlibGUgc2Vy dmVyIHZlcnNpb24gJXM7IGNsaWVudCBkb2VzIG5vdCBzdXBwb3J0IHN0cmVhbWluZyBmcm9t IHNlcnZlciB2ZXJzaW9ucyBvbGRlciB0aGFuICVzIiwKKwkJCQkJIHNlcnZlcnZlciA/IHNl cnZlcnZlciA6ICIndW5rbm93biciLAorCQkJCQkgIjkuMyIpOwogCQlyZXR1cm4gZmFsc2U7 CiAJfQogCWVsc2UgaWYgKHNlcnZlck1ham9yID4gbWF4U2VydmVyTWFqb3IpCiAJewogCQlj b25zdCBjaGFyICpzZXJ2ZXJ2ZXIgPSBQUXBhcmFtZXRlclN0YXR1cyhjb25uLCAic2VydmVy X3ZlcnNpb24iKTsKIAotCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGluY29tcGF0aWJsZSBz ZXJ2ZXIgdmVyc2lvbiAlczsgY2xpZW50IGRvZXMgbm90IHN1cHBvcnQgc3RyZWFtaW5nIGZy b20gc2VydmVyIHZlcnNpb25zIG5ld2VyIHRoYW4gJXNcbiIpLAotCQkJCXByb2duYW1lLAot CQkJCXNlcnZlcnZlciA/IHNlcnZlcnZlciA6ICIndW5rbm93biciLAotCQkJCVBHX1ZFUlNJ T04pOworCQlwZ19sb2dfZXJyb3IoImluY29tcGF0aWJsZSBzZXJ2ZXIgdmVyc2lvbiAlczsg Y2xpZW50IGRvZXMgbm90IHN1cHBvcnQgc3RyZWFtaW5nIGZyb20gc2VydmVyIHZlcnNpb25z IG5ld2VyIHRoYW4gJXMiLAorCQkJCQkgc2VydmVydmVyID8gc2VydmVydmVyIDogIid1bmtu b3duJyIsCisJCQkJCSBQR19WRVJTSU9OKTsKIAkJcmV0dXJuIGZhbHNlOwogCX0KIAlyZXR1 cm4gdHJ1ZTsKQEAgLTQ4OSwzMyArNDgxLDI4IEBAIFJlY2VpdmVYbG9nU3RyZWFtKFBHY29u biAqY29ubiwgU3RyZWFtQ3RsICpzdHJlYW0pCiAJCXJlcyA9IFBRZXhlYyhjb25uLCAiSURF TlRJRllfU1lTVEVNIik7CiAJCWlmIChQUXJlc3VsdFN0YXR1cyhyZXMpICE9IFBHUkVTX1RV UExFU19PSykKIAkJewotCQkJZnByaW50ZihzdGRlcnIsCi0JCQkJCV8oIiVzOiBjb3VsZCBu b3Qgc2VuZCByZXBsaWNhdGlvbiBjb21tYW5kIFwiJXNcIjogJXMiKSwKLQkJCQkJcHJvZ25h bWUsICJJREVOVElGWV9TWVNURU0iLCBQUWVycm9yTWVzc2FnZShjb25uKSk7CisJCQlwZ19s b2dfZXJyb3IoImNvdWxkIG5vdCBzZW5kIHJlcGxpY2F0aW9uIGNvbW1hbmQgXCIlc1wiOiAl cyIsCisJCQkJCQkgIklERU5USUZZX1NZU1RFTSIsIFBRZXJyb3JNZXNzYWdlKGNvbm4pKTsK IAkJCVBRY2xlYXIocmVzKTsKIAkJCXJldHVybiBmYWxzZTsKIAkJfQogCQlpZiAoUFFudHVw bGVzKHJlcykgIT0gMSB8fCBQUW5maWVsZHMocmVzKSA8IDMpCiAJCXsKLQkJCWZwcmludGYo c3RkZXJyLAotCQkJCQlfKCIlczogY291bGQgbm90IGlkZW50aWZ5IHN5c3RlbTogZ290ICVk IHJvd3MgYW5kICVkIGZpZWxkcywgZXhwZWN0ZWQgJWQgcm93cyBhbmQgJWQgb3IgbW9yZSBm aWVsZHNcbiIpLAotCQkJCQlwcm9nbmFtZSwgUFFudHVwbGVzKHJlcyksIFBRbmZpZWxkcyhy ZXMpLCAxLCAzKTsKKwkJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IGlkZW50aWZ5IHN5c3Rl bTogZ290ICVkIHJvd3MgYW5kICVkIGZpZWxkcywgZXhwZWN0ZWQgJWQgcm93cyBhbmQgJWQg b3IgbW9yZSBmaWVsZHMiLAorCQkJCQkJIFBRbnR1cGxlcyhyZXMpLCBQUW5maWVsZHMocmVz KSwgMSwgMyk7CiAJCQlQUWNsZWFyKHJlcyk7CiAJCQlyZXR1cm4gZmFsc2U7CiAJCX0KIAkJ aWYgKHN0cmNtcChzdHJlYW0tPnN5c2lkZW50aWZpZXIsIFBRZ2V0dmFsdWUocmVzLCAwLCAw KSkgIT0gMCkKIAkJewotCQkJZnByaW50ZihzdGRlcnIsCi0JCQkJCV8oIiVzOiBzeXN0ZW0g aWRlbnRpZmllciBkb2VzIG5vdCBtYXRjaCBiZXR3ZWVuIGJhc2UgYmFja3VwIGFuZCBzdHJl YW1pbmcgY29ubmVjdGlvblxuIiksCi0JCQkJCXByb2duYW1lKTsKKwkJCXBnX2xvZ19lcnJv cigic3lzdGVtIGlkZW50aWZpZXIgZG9lcyBub3QgbWF0Y2ggYmV0d2VlbiBiYXNlIGJhY2t1 cCBhbmQgc3RyZWFtaW5nIGNvbm5lY3Rpb24iKTsKIAkJCVBRY2xlYXIocmVzKTsKIAkJCXJl dHVybiBmYWxzZTsKIAkJfQogCQlpZiAoc3RyZWFtLT50aW1lbGluZSA+IGF0b2koUFFnZXR2 YWx1ZShyZXMsIDAsIDEpKSkKIAkJewotCQkJZnByaW50ZihzdGRlcnIsCi0JCQkJCV8oIiVz OiBzdGFydGluZyB0aW1lbGluZSAldSBpcyBub3QgcHJlc2VudCBpbiB0aGUgc2VydmVyXG4i KSwKLQkJCQkJcHJvZ25hbWUsIHN0cmVhbS0+dGltZWxpbmUpOworCQkJcGdfbG9nX2Vycm9y KCJzdGFydGluZyB0aW1lbGluZSAldSBpcyBub3QgcHJlc2VudCBpbiB0aGUgc2VydmVyIiwK KwkJCQkJCSBzdHJlYW0tPnRpbWVsaW5lKTsKIAkJCVBRY2xlYXIocmVzKTsKIAkJCXJldHVy biBmYWxzZTsKIAkJfQpAQCAtNTQzLDggKzUzMCw4IEBAIFJlY2VpdmVYbG9nU3RyZWFtKFBH Y29ubiAqY29ubiwgU3RyZWFtQ3RsICpzdHJlYW0pCiAJCQlpZiAoUFFyZXN1bHRTdGF0dXMo cmVzKSAhPSBQR1JFU19UVVBMRVNfT0spCiAJCQl7CiAJCQkJLyogRklYTUU6IHdlIG1pZ2h0 IHNlbmQgaXQgb2ssIGJ1dCBnZXQgYW4gZXJyb3IgKi8KLQkJCQlmcHJpbnRmKHN0ZGVyciwg XygiJXM6IGNvdWxkIG5vdCBzZW5kIHJlcGxpY2F0aW9uIGNvbW1hbmQgXCIlc1wiOiAlcyIp LAotCQkJCQkJcHJvZ25hbWUsICJUSU1FTElORV9ISVNUT1JZIiwgUFFyZXN1bHRFcnJvck1l c3NhZ2UocmVzKSk7CisJCQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3Qgc2VuZCByZXBsaWNh dGlvbiBjb21tYW5kIFwiJXNcIjogJXMiLAorCQkJCQkJCSAiVElNRUxJTkVfSElTVE9SWSIs IFBRcmVzdWx0RXJyb3JNZXNzYWdlKHJlcykpOwogCQkJCVBRY2xlYXIocmVzKTsKIAkJCQly ZXR1cm4gZmFsc2U7CiAJCQl9CkBAIC01NTUsOSArNTQyLDggQEAgUmVjZWl2ZVhsb2dTdHJl YW0oUEdjb25uICpjb25uLCBTdHJlYW1DdGwgKnN0cmVhbSkKIAkJCSAqLwogCQkJaWYgKFBR bmZpZWxkcyhyZXMpICE9IDIgfHwgUFFudHVwbGVzKHJlcykgIT0gMSkKIAkJCXsKLQkJCQlm cHJpbnRmKHN0ZGVyciwKLQkJCQkJCV8oIiVzOiB1bmV4cGVjdGVkIHJlc3BvbnNlIHRvIFRJ TUVMSU5FX0hJU1RPUlkgY29tbWFuZDogZ290ICVkIHJvd3MgYW5kICVkIGZpZWxkcywgZXhw ZWN0ZWQgJWQgcm93cyBhbmQgJWQgZmllbGRzXG4iKSwKLQkJCQkJCXByb2duYW1lLCBQUW50 dXBsZXMocmVzKSwgUFFuZmllbGRzKHJlcyksIDEsIDIpOworCQkJCXBnX2xvZ193YXJuaW5n KCJ1bmV4cGVjdGVkIHJlc3BvbnNlIHRvIFRJTUVMSU5FX0hJU1RPUlkgY29tbWFuZDogZ290 ICVkIHJvd3MgYW5kICVkIGZpZWxkcywgZXhwZWN0ZWQgJWQgcm93cyBhbmQgJWQgZmllbGRz IiwKKwkJCQkJCQkgICBQUW50dXBsZXMocmVzKSwgUFFuZmllbGRzKHJlcyksIDEsIDIpOwog CQkJfQogCiAJCQkvKiBXcml0ZSB0aGUgaGlzdG9yeSBmaWxlIHRvIGRpc2sgKi8KQEAgLTU4 Myw4ICs1NjksOCBAQCBSZWNlaXZlWGxvZ1N0cmVhbShQR2Nvbm4gKmNvbm4sIFN0cmVhbUN0 bCAqc3RyZWFtKQogCQlyZXMgPSBQUWV4ZWMoY29ubiwgcXVlcnkpOwogCQlpZiAoUFFyZXN1 bHRTdGF0dXMocmVzKSAhPSBQR1JFU19DT1BZX0JPVEgpCiAJCXsKLQkJCWZwcmludGYoc3Rk ZXJyLCBfKCIlczogY291bGQgbm90IHNlbmQgcmVwbGljYXRpb24gY29tbWFuZCBcIiVzXCI6 ICVzIiksCi0JCQkJCXByb2duYW1lLCAiU1RBUlRfUkVQTElDQVRJT04iLCBQUXJlc3VsdEVy cm9yTWVzc2FnZShyZXMpKTsKKwkJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IHNlbmQgcmVw bGljYXRpb24gY29tbWFuZCBcIiVzXCI6ICVzIiwKKwkJCQkJCSAiU1RBUlRfUkVQTElDQVRJ T04iLCBQUXJlc3VsdEVycm9yTWVzc2FnZShyZXMpKTsKIAkJCVBRY2xlYXIocmVzKTsKIAkJ CXJldHVybiBmYWxzZTsKIAkJfQpAQCAtNjI3LDE4ICs2MTMsMTUgQEAgUmVjZWl2ZVhsb2dT dHJlYW0oUEdjb25uICpjb25uLCBTdHJlYW1DdGwgKnN0cmVhbSkKIAkJCS8qIFNhbml0eSBj aGVjayB0aGUgdmFsdWVzIHRoZSBzZXJ2ZXIgZ2F2ZSB1cyAqLwogCQkJaWYgKG5ld3RpbWVs aW5lIDw9IHN0cmVhbS0+dGltZWxpbmUpCiAJCQl7Ci0JCQkJZnByaW50ZihzdGRlcnIsCi0J CQkJCQlfKCIlczogc2VydmVyIHJlcG9ydGVkIHVuZXhwZWN0ZWQgbmV4dCB0aW1lbGluZSAl dSwgZm9sbG93aW5nIHRpbWVsaW5lICV1XG4iKSwKLQkJCQkJCXByb2duYW1lLCBuZXd0aW1l bGluZSwgc3RyZWFtLT50aW1lbGluZSk7CisJCQkJcGdfbG9nX2Vycm9yKCJzZXJ2ZXIgcmVw b3J0ZWQgdW5leHBlY3RlZCBuZXh0IHRpbWVsaW5lICV1LCBmb2xsb3dpbmcgdGltZWxpbmUg JXUiLAorCQkJCQkJCSBuZXd0aW1lbGluZSwgc3RyZWFtLT50aW1lbGluZSk7CiAJCQkJZ290 byBlcnJvcjsKIAkJCX0KIAkJCWlmIChzdHJlYW0tPnN0YXJ0cG9zID4gc3RvcHBvcykKIAkJ CXsKLQkJCQlmcHJpbnRmKHN0ZGVyciwKLQkJCQkJCV8oIiVzOiBzZXJ2ZXIgc3RvcHBlZCBz dHJlYW1pbmcgdGltZWxpbmUgJXUgYXQgJVgvJVgsIGJ1dCByZXBvcnRlZCBuZXh0IHRpbWVs aW5lICV1IHRvIGJlZ2luIGF0ICVYLyVYXG4iKSwKLQkJCQkJCXByb2duYW1lLAotCQkJCQkJ c3RyZWFtLT50aW1lbGluZSwgKHVpbnQzMikgKHN0b3Bwb3MgPj4gMzIpLCAodWludDMyKSBz dG9wcG9zLAotCQkJCQkJbmV3dGltZWxpbmUsICh1aW50MzIpIChzdHJlYW0tPnN0YXJ0cG9z ID4+IDMyKSwgKHVpbnQzMikgc3RyZWFtLT5zdGFydHBvcyk7CisJCQkJcGdfbG9nX2Vycm9y KCJzZXJ2ZXIgc3RvcHBlZCBzdHJlYW1pbmcgdGltZWxpbmUgJXUgYXQgJVgvJVgsIGJ1dCBy ZXBvcnRlZCBuZXh0IHRpbWVsaW5lICV1IHRvIGJlZ2luIGF0ICVYLyVYIiwKKwkJCQkJCQkg c3RyZWFtLT50aW1lbGluZSwgKHVpbnQzMikgKHN0b3Bwb3MgPj4gMzIpLCAodWludDMyKSBz dG9wcG9zLAorCQkJCQkJCSBuZXd0aW1lbGluZSwgKHVpbnQzMikgKHN0cmVhbS0+c3RhcnRw b3MgPj4gMzIpLCAodWludDMyKSBzdHJlYW0tPnN0YXJ0cG9zKTsKIAkJCQlnb3RvIGVycm9y OwogCQkJfQogCkBAIC02NDYsOSArNjI5LDggQEAgUmVjZWl2ZVhsb2dTdHJlYW0oUEdjb25u ICpjb25uLCBTdHJlYW1DdGwgKnN0cmVhbSkKIAkJCXJlcyA9IFBRZ2V0UmVzdWx0KGNvbm4p OwogCQkJaWYgKFBRcmVzdWx0U3RhdHVzKHJlcykgIT0gUEdSRVNfQ09NTUFORF9PSykKIAkJ CXsKLQkJCQlmcHJpbnRmKHN0ZGVyciwKLQkJCQkJCV8oIiVzOiB1bmV4cGVjdGVkIHRlcm1p bmF0aW9uIG9mIHJlcGxpY2F0aW9uIHN0cmVhbTogJXMiKSwKLQkJCQkJCXByb2duYW1lLCBQ UXJlc3VsdEVycm9yTWVzc2FnZShyZXMpKTsKKwkJCQlwZ19sb2dfZXJyb3IoInVuZXhwZWN0 ZWQgdGVybWluYXRpb24gb2YgcmVwbGljYXRpb24gc3RyZWFtOiAlcyIsCisJCQkJCQkJIFBR cmVzdWx0RXJyb3JNZXNzYWdlKHJlcykpOwogCQkJCVBRY2xlYXIocmVzKTsKIAkJCQlnb3Rv IGVycm9yOwogCQkJfQpAQCAtNjc3LDE3ICs2NTksMTUgQEAgUmVjZWl2ZVhsb2dTdHJlYW0o UEdjb25uICpjb25uLCBTdHJlYW1DdGwgKnN0cmVhbSkKIAkJCQlyZXR1cm4gdHJ1ZTsKIAkJ CWVsc2UKIAkJCXsKLQkJCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IHJlcGxpY2F0aW9uIHN0 cmVhbSB3YXMgdGVybWluYXRlZCBiZWZvcmUgc3RvcCBwb2ludFxuIiksCi0JCQkJCQlwcm9n bmFtZSk7CisJCQkJcGdfbG9nX2Vycm9yKCJyZXBsaWNhdGlvbiBzdHJlYW0gd2FzIHRlcm1p bmF0ZWQgYmVmb3JlIHN0b3AgcG9pbnQiKTsKIAkJCQlnb3RvIGVycm9yOwogCQkJfQogCQl9 CiAJCWVsc2UKIAkJewogCQkJLyogU2VydmVyIHJldHVybmVkIGFuIGVycm9yLiAqLwotCQkJ ZnByaW50ZihzdGRlcnIsCi0JCQkJCV8oIiVzOiB1bmV4cGVjdGVkIHRlcm1pbmF0aW9uIG9m IHJlcGxpY2F0aW9uIHN0cmVhbTogJXMiKSwKLQkJCQkJcHJvZ25hbWUsIFBRcmVzdWx0RXJy b3JNZXNzYWdlKHJlcykpOworCQkJcGdfbG9nX2Vycm9yKCJ1bmV4cGVjdGVkIHRlcm1pbmF0 aW9uIG9mIHJlcGxpY2F0aW9uIHN0cmVhbTogJXMiLAorCQkJCQkJIFBRcmVzdWx0RXJyb3JN ZXNzYWdlKHJlcykpOwogCQkJUFFjbGVhcihyZXMpOwogCQkJZ290byBlcnJvcjsKIAkJfQpA QCAtNjk1LDggKzY3NSw4IEBAIFJlY2VpdmVYbG9nU3RyZWFtKFBHY29ubiAqY29ubiwgU3Ry ZWFtQ3RsICpzdHJlYW0pCiAKIGVycm9yOgogCWlmICh3YWxmaWxlICE9IE5VTEwgJiYgc3Ry ZWFtLT53YWxtZXRob2QtPmNsb3NlKHdhbGZpbGUsIENMT1NFX05PX1JFTkFNRSkgIT0gMCkK LQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBjb3VsZCBub3QgY2xvc2UgZmlsZSBcIiVzXCI6 ICVzXG4iKSwKLQkJCQlwcm9nbmFtZSwgY3VycmVudF93YWxmaWxlX25hbWUsIHN0cmVhbS0+ d2FsbWV0aG9kLT5nZXRsYXN0ZXJyb3IoKSk7CisJCXBnX2xvZ19lcnJvcigiY291bGQgbm90 IGNsb3NlIGZpbGUgXCIlc1wiOiAlcyIsCisJCQkJCSBjdXJyZW50X3dhbGZpbGVfbmFtZSwg c3RyZWFtLT53YWxtZXRob2QtPmdldGxhc3RlcnJvcigpKTsKIAl3YWxmaWxlID0gTlVMTDsK IAlyZXR1cm4gZmFsc2U7CiB9CkBAIC03MjUsOSArNzA1LDggQEAgUmVhZEVuZE9mU3RyZWFt aW5nUmVzdWx0KFBHcmVzdWx0ICpyZXMsIFhMb2dSZWNQdHIgKnN0YXJ0cG9zLCB1aW50MzIg KnRpbWVsaW5lKQogCSAqLwogCWlmIChQUW5maWVsZHMocmVzKSA8IDIgfHwgUFFudHVwbGVz KHJlcykgIT0gMSkKIAl7Ci0JCWZwcmludGYoc3RkZXJyLAotCQkJCV8oIiVzOiB1bmV4cGVj dGVkIHJlc3VsdCBzZXQgYWZ0ZXIgZW5kLW9mLXRpbWVsaW5lOiBnb3QgJWQgcm93cyBhbmQg JWQgZmllbGRzLCBleHBlY3RlZCAlZCByb3dzIGFuZCAlZCBmaWVsZHNcbiIpLAotCQkJCXBy b2duYW1lLCBQUW50dXBsZXMocmVzKSwgUFFuZmllbGRzKHJlcyksIDEsIDIpOworCQlwZ19s b2dfZXJyb3IoInVuZXhwZWN0ZWQgcmVzdWx0IHNldCBhZnRlciBlbmQtb2YtdGltZWxpbmU6 IGdvdCAlZCByb3dzIGFuZCAlZCBmaWVsZHMsIGV4cGVjdGVkICVkIHJvd3MgYW5kICVkIGZp ZWxkcyIsCisJCQkJCSBQUW50dXBsZXMocmVzKSwgUFFuZmllbGRzKHJlcyksIDEsIDIpOwog CQlyZXR1cm4gZmFsc2U7CiAJfQogCkBAIC03MzUsOSArNzE0LDggQEAgUmVhZEVuZE9mU3Ry ZWFtaW5nUmVzdWx0KFBHcmVzdWx0ICpyZXMsIFhMb2dSZWNQdHIgKnN0YXJ0cG9zLCB1aW50 MzIgKnRpbWVsaW5lKQogCWlmIChzc2NhbmYoUFFnZXR2YWx1ZShyZXMsIDAsIDEpLCAiJVgv JVgiLCAmc3RhcnRwb3NfeGxvZ2lkLAogCQkJICAgJnN0YXJ0cG9zX3hyZWNvZmYpICE9IDIp CiAJewotCQlmcHJpbnRmKHN0ZGVyciwKLQkJCQlfKCIlczogY291bGQgbm90IHBhcnNlIG5l eHQgdGltZWxpbmUncyBzdGFydGluZyBwb2ludCBcIiVzXCJcbiIpLAotCQkJCXByb2duYW1l LCBQUWdldHZhbHVlKHJlcywgMCwgMSkpOworCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBw YXJzZSBuZXh0IHRpbWVsaW5lJ3Mgc3RhcnRpbmcgcG9pbnQgXCIlc1wiIiwKKwkJCQkJIFBR Z2V0dmFsdWUocmVzLCAwLCAxKSk7CiAJCXJldHVybiBmYWxzZTsKIAl9CiAJKnN0YXJ0cG9z ID0gKCh1aW50NjQpIHN0YXJ0cG9zX3hsb2dpZCA8PCAzMikgfCBzdGFydHBvc194cmVjb2Zm OwpAQCAtNzg1LDggKzc2Myw4IEBAIEhhbmRsZUNvcHlTdHJlYW0oUEdjb25uICpjb25uLCBT dHJlYW1DdGwgKnN0cmVhbSwKIAkJewogCQkJaWYgKHN0cmVhbS0+d2FsbWV0aG9kLT5zeW5j KHdhbGZpbGUpICE9IDApCiAJCQl7Ci0JCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBjb3Vs ZCBub3QgZnN5bmMgZmlsZSBcIiVzXCI6ICVzXG4iKSwKLQkJCQkJCXByb2duYW1lLCBjdXJy ZW50X3dhbGZpbGVfbmFtZSwgc3RyZWFtLT53YWxtZXRob2QtPmdldGxhc3RlcnJvcigpKTsK KwkJCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBmc3luYyBmaWxlIFwiJXNcIjogJXMiLAor CQkJCQkJCSBjdXJyZW50X3dhbGZpbGVfbmFtZSwgc3RyZWFtLT53YWxtZXRob2QtPmdldGxh c3RlcnJvcigpKTsKIAkJCQlnb3RvIGVycm9yOwogCQkJfQogCQkJbGFzdEZsdXNoUG9zaXRp b24gPSBibG9ja3BvczsKQEAgLTg1NSw4ICs4MzMsOCBAQCBIYW5kbGVDb3B5U3RyZWFtKFBH Y29ubiAqY29ubiwgU3RyZWFtQ3RsICpzdHJlYW0sCiAJCQl9CiAJCQllbHNlCiAJCQl7Ci0J CQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiB1bnJlY29nbml6ZWQgc3RyZWFtaW5nIGhlYWRl cjogXCIlY1wiXG4iKSwKLQkJCQkJCXByb2duYW1lLCBjb3B5YnVmWzBdKTsKKwkJCQlwZ19s b2dfZXJyb3IoInVucmVjb2duaXplZCBzdHJlYW1pbmcgaGVhZGVyOiBcIiVjXCIiLAorCQkJ CQkJCSBjb3B5YnVmWzBdKTsKIAkJCQlnb3RvIGVycm9yOwogCQkJfQogCkBAIC04OTUsOCAr ODczLDcgQEAgQ29weVN0cmVhbVBvbGwoUEdjb25uICpjb25uLCBsb25nIHRpbWVvdXRfbXMs IHBnc29ja2V0IHN0b3Bfc29ja2V0KQogCWNvbm5zb2NrZXQgPSBQUXNvY2tldChjb25uKTsK IAlpZiAoY29ubnNvY2tldCA8IDApCiAJewotCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGlu dmFsaWQgc29ja2V0OiAlcyIpLCBwcm9nbmFtZSwKLQkJCQlQUWVycm9yTWVzc2FnZShjb25u KSk7CisJCXBnX2xvZ19lcnJvcigiaW52YWxpZCBzb2NrZXQ6ICVzIiwgUFFlcnJvck1lc3Nh Z2UoY29ubikpOwogCQlyZXR1cm4gLTE7CiAJfQogCkBAIC05MjQsOCArOTAxLDcgQEAgQ29w eVN0cmVhbVBvbGwoUEdjb25uICpjb25uLCBsb25nIHRpbWVvdXRfbXMsIHBnc29ja2V0IHN0 b3Bfc29ja2V0KQogCXsKIAkJaWYgKGVycm5vID09IEVJTlRSKQogCQkJcmV0dXJuIDA7CQkJ LyogR290IGEgc2lnbmFsLCBzbyBub3QgYW4gZXJyb3IgKi8KLQkJZnByaW50ZihzdGRlcnIs IF8oIiVzOiBzZWxlY3QoKSBmYWlsZWQ6ICVzXG4iKSwKLQkJCQlwcm9nbmFtZSwgc3RyZXJy b3IoZXJybm8pKTsKKwkJcGdfbG9nX2Vycm9yKCJzZWxlY3QoKSBmYWlsZWQ6ICVtIik7CiAJ CXJldHVybiAtMTsKIAl9CiAJaWYgKHJldCA+IDAgJiYgRkRfSVNTRVQoY29ubnNvY2tldCwg JmlucHV0X21hc2spKQpAQCAtOTc1LDkgKzk1MSw4IEBAIENvcHlTdHJlYW1SZWNlaXZlKFBH Y29ubiAqY29ubiwgbG9uZyB0aW1lb3V0LCBwZ3NvY2tldCBzdG9wX3NvY2tldCwKIAkJLyog Tm93IHRoZXJlIGlzIGFjdHVhbGx5IGRhdGEgb24gdGhlIHNvY2tldCAqLwogCQlpZiAoUFFj b25zdW1lSW5wdXQoY29ubikgPT0gMCkKIAkJewotCQkJZnByaW50ZihzdGRlcnIsCi0JCQkJ CV8oIiVzOiBjb3VsZCBub3QgcmVjZWl2ZSBkYXRhIGZyb20gV0FMIHN0cmVhbTogJXMiKSwK LQkJCQkJcHJvZ25hbWUsIFBRZXJyb3JNZXNzYWdlKGNvbm4pKTsKKwkJCXBnX2xvZ19lcnJv cigiY291bGQgbm90IHJlY2VpdmUgZGF0YSBmcm9tIFdBTCBzdHJlYW06ICVzIiwKKwkJCQkJ CSBQUWVycm9yTWVzc2FnZShjb25uKSk7CiAJCQlyZXR1cm4gLTE7CiAJCX0KIApAQCAtOTkw LDggKzk2NSw3IEBAIENvcHlTdHJlYW1SZWNlaXZlKFBHY29ubiAqY29ubiwgbG9uZyB0aW1l b3V0LCBwZ3NvY2tldCBzdG9wX3NvY2tldCwKIAkJcmV0dXJuIC0yOwogCWlmIChyYXdsZW4g PT0gLTIpCiAJewotCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCByZWFkIENP UFkgZGF0YTogJXMiKSwKLQkJCQlwcm9nbmFtZSwgUFFlcnJvck1lc3NhZ2UoY29ubikpOwor CQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCByZWFkIENPUFkgZGF0YTogJXMiLCBQUWVycm9y TWVzc2FnZShjb25uKSk7CiAJCXJldHVybiAtMTsKIAl9CiAKQEAgLTEwMjEsOCArOTk1LDcg QEAgUHJvY2Vzc0tlZXBhbGl2ZU1zZyhQR2Nvbm4gKmNvbm4sIFN0cmVhbUN0bCAqc3RyZWFt LCBjaGFyICpjb3B5YnVmLCBpbnQgbGVuLAogCiAJaWYgKGxlbiA8IHBvcyArIDEpCiAJewot CQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IHN0cmVhbWluZyBoZWFkZXIgdG9vIHNtYWxsOiAl ZFxuIiksCi0JCQkJcHJvZ25hbWUsIGxlbik7CisJCXBnX2xvZ19lcnJvcigic3RyZWFtaW5n IGhlYWRlciB0b28gc21hbGw6ICVkIiwgbGVuKTsKIAkJcmV0dXJuIGZhbHNlOwogCX0KIAly ZXBseVJlcXVlc3RlZCA9IGNvcHlidWZbcG9zXTsKQEAgLTEwNDIsOCArMTAxNSw4IEBAIFBy b2Nlc3NLZWVwYWxpdmVNc2coUEdjb25uICpjb25uLCBTdHJlYW1DdGwgKnN0cmVhbSwgY2hh ciAqY29weWJ1ZiwgaW50IGxlbiwKIAkJCSAqLwogCQkJaWYgKHN0cmVhbS0+d2FsbWV0aG9k LT5zeW5jKHdhbGZpbGUpICE9IDApCiAJCQl7Ci0JCQkJZnByaW50ZihzdGRlcnIsIF8oIiVz OiBjb3VsZCBub3QgZnN5bmMgZmlsZSBcIiVzXCI6ICVzXG4iKSwKLQkJCQkJCXByb2duYW1l LCBjdXJyZW50X3dhbGZpbGVfbmFtZSwgc3RyZWFtLT53YWxtZXRob2QtPmdldGxhc3RlcnJv cigpKTsKKwkJCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBmc3luYyBmaWxlIFwiJXNcIjog JXMiLAorCQkJCQkJCSBjdXJyZW50X3dhbGZpbGVfbmFtZSwgc3RyZWFtLT53YWxtZXRob2Qt PmdldGxhc3RlcnJvcigpKTsKIAkJCQlyZXR1cm4gZmFsc2U7CiAJCQl9CiAJCQlsYXN0Rmx1 c2hQb3NpdGlvbiA9IGJsb2NrcG9zOwpAQCAtMTA4OCw4ICsxMDYxLDcgQEAgUHJvY2Vzc1hM b2dEYXRhTXNnKFBHY29ubiAqY29ubiwgU3RyZWFtQ3RsICpzdHJlYW0sIGNoYXIgKmNvcHli dWYsIGludCBsZW4sCiAJaGRyX2xlbiArPSA4OwkJCQkvKiBzZW5kVGltZSAqLwogCWlmIChs ZW4gPCBoZHJfbGVuKQogCXsKLQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBzdHJlYW1pbmcg aGVhZGVyIHRvbyBzbWFsbDogJWRcbiIpLAotCQkJCXByb2duYW1lLCBsZW4pOworCQlwZ19s b2dfZXJyb3IoInN0cmVhbWluZyBoZWFkZXIgdG9vIHNtYWxsOiAlZCIsIGxlbik7CiAJCXJl dHVybiBmYWxzZTsKIAl9CiAJKmJsb2NrcG9zID0gZmVfcmVjdmludDY0KCZjb3B5YnVmWzFd KTsKQEAgLTExMDYsOSArMTA3OCw4IEBAIFByb2Nlc3NYTG9nRGF0YU1zZyhQR2Nvbm4gKmNv bm4sIFN0cmVhbUN0bCAqc3RyZWFtLCBjaGFyICpjb3B5YnVmLCBpbnQgbGVuLAogCQkvKiBO byBmaWxlIG9wZW4geWV0ICovCiAJCWlmICh4bG9nb2ZmICE9IDApCiAJCXsKLQkJCWZwcmlu dGYoc3RkZXJyLAotCQkJCQlfKCIlczogcmVjZWl2ZWQgd3JpdGUtYWhlYWQgbG9nIHJlY29y ZCBmb3Igb2Zmc2V0ICV1IHdpdGggbm8gZmlsZSBvcGVuXG4iKSwKLQkJCQkJcHJvZ25hbWUs IHhsb2dvZmYpOworCQkJcGdfbG9nX2Vycm9yKCJyZWNlaXZlZCB3cml0ZS1haGVhZCBsb2cg cmVjb3JkIGZvciBvZmZzZXQgJXUgd2l0aCBubyBmaWxlIG9wZW4iLAorCQkJCQkJIHhsb2dv ZmYpOwogCQkJcmV0dXJuIGZhbHNlOwogCQl9CiAJfQpAQCAtMTExNyw5ICsxMDg4LDggQEAg UHJvY2Vzc1hMb2dEYXRhTXNnKFBHY29ubiAqY29ubiwgU3RyZWFtQ3RsICpzdHJlYW0sIGNo YXIgKmNvcHlidWYsIGludCBsZW4sCiAJCS8qIE1vcmUgZGF0YSBpbiBleGlzdGluZyBzZWdt ZW50ICovCiAJCWlmIChzdHJlYW0tPndhbG1ldGhvZC0+Z2V0X2N1cnJlbnRfcG9zKHdhbGZp bGUpICE9IHhsb2dvZmYpCiAJCXsKLQkJCWZwcmludGYoc3RkZXJyLAotCQkJCQlfKCIlczog Z290IFdBTCBkYXRhIG9mZnNldCAlMDh4LCBleHBlY3RlZCAlMDh4XG4iKSwKLQkJCQkJcHJv Z25hbWUsIHhsb2dvZmYsIChpbnQpIHN0cmVhbS0+d2FsbWV0aG9kLT5nZXRfY3VycmVudF9w b3Mod2FsZmlsZSkpOworCQkJcGdfbG9nX2Vycm9yKCJnb3QgV0FMIGRhdGEgb2Zmc2V0ICUw OHgsIGV4cGVjdGVkICUwOHgiLAorCQkJCQkJIHhsb2dvZmYsIChpbnQpIHN0cmVhbS0+d2Fs bWV0aG9kLT5nZXRfY3VycmVudF9wb3Mod2FsZmlsZSkpOwogCQkJcmV0dXJuIGZhbHNlOwog CQl9CiAJfQpAQCAtMTE1MiwxMCArMTEyMiw5IEBAIFByb2Nlc3NYTG9nRGF0YU1zZyhQR2Nv bm4gKmNvbm4sIFN0cmVhbUN0bCAqc3RyZWFtLCBjaGFyICpjb3B5YnVmLCBpbnQgbGVuLAog CQlpZiAoc3RyZWFtLT53YWxtZXRob2QtPndyaXRlKHdhbGZpbGUsIGNvcHlidWYgKyBoZHJf bGVuICsgYnl0ZXNfd3JpdHRlbiwKIAkJCQkJCQkJCSBieXRlc190b193cml0ZSkgIT0gYnl0 ZXNfdG9fd3JpdGUpCiAJCXsKLQkJCWZwcmludGYoc3RkZXJyLAotCQkJCQlfKCIlczogY291 bGQgbm90IHdyaXRlICV1IGJ5dGVzIHRvIFdBTCBmaWxlIFwiJXNcIjogJXNcbiIpLAotCQkJ CQlwcm9nbmFtZSwgYnl0ZXNfdG9fd3JpdGUsIGN1cnJlbnRfd2FsZmlsZV9uYW1lLAotCQkJ CQlzdHJlYW0tPndhbG1ldGhvZC0+Z2V0bGFzdGVycm9yKCkpOworCQkJcGdfbG9nX2Vycm9y KCJjb3VsZCBub3Qgd3JpdGUgJXUgYnl0ZXMgdG8gV0FMIGZpbGUgXCIlc1wiOiAlcyIsCisJ CQkJCQkgYnl0ZXNfdG9fd3JpdGUsIGN1cnJlbnRfd2FsZmlsZV9uYW1lLAorCQkJCQkJIHN0 cmVhbS0+d2FsbWV0aG9kLT5nZXRsYXN0ZXJyb3IoKSk7CiAJCQlyZXR1cm4gZmFsc2U7CiAJ CX0KIApAQCAtMTE3OCw4ICsxMTQ3LDggQEAgUHJvY2Vzc1hMb2dEYXRhTXNnKFBHY29ubiAq Y29ubiwgU3RyZWFtQ3RsICpzdHJlYW0sIGNoYXIgKmNvcHlidWYsIGludCBsZW4sCiAJCQl7 CiAJCQkJaWYgKFBRcHV0Q29weUVuZChjb25uLCBOVUxMKSA8PSAwIHx8IFBRZmx1c2goY29u bikpCiAJCQkJewotCQkJCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCBzZW5k IGNvcHktZW5kIHBhY2tldDogJXMiKSwKLQkJCQkJCQlwcm9nbmFtZSwgUFFlcnJvck1lc3Nh Z2UoY29ubikpOworCQkJCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBzZW5kIGNvcHktZW5k IHBhY2tldDogJXMiLAorCQkJCQkJCQkgUFFlcnJvck1lc3NhZ2UoY29ubikpOwogCQkJCQly ZXR1cm4gZmFsc2U7CiAJCQkJfQogCQkJCXN0aWxsX3NlbmRpbmcgPSBmYWxzZTsKQEAgLTEy MTgsOSArMTE4Nyw4IEBAIEhhbmRsZUVuZE9mQ29weVN0cmVhbShQR2Nvbm4gKmNvbm4sIFN0 cmVhbUN0bCAqc3RyZWFtLCBjaGFyICpjb3B5YnVmLAogCQl7CiAJCQlpZiAoUFFwdXRDb3B5 RW5kKGNvbm4sIE5VTEwpIDw9IDAgfHwgUFFmbHVzaChjb25uKSkKIAkJCXsKLQkJCQlmcHJp bnRmKHN0ZGVyciwKLQkJCQkJCV8oIiVzOiBjb3VsZCBub3Qgc2VuZCBjb3B5LWVuZCBwYWNr ZXQ6ICVzIiksCi0JCQkJCQlwcm9nbmFtZSwgUFFlcnJvck1lc3NhZ2UoY29ubikpOworCQkJ CXBnX2xvZ19lcnJvcigiY291bGQgbm90IHNlbmQgY29weS1lbmQgcGFja2V0OiAlcyIsCisJ CQkJCQkJIFBRZXJyb3JNZXNzYWdlKGNvbm4pKTsKIAkJCQlQUWNsZWFyKHJlcyk7CiAJCQkJ cmV0dXJuIE5VTEw7CiAJCQl9CkBAIC0xMjUwLDggKzEyMTgsOCBAQCBDaGVja0NvcHlTdHJl YW1TdG9wKFBHY29ubiAqY29ubiwgU3RyZWFtQ3RsICpzdHJlYW0sIFhMb2dSZWNQdHIgYmxv Y2twb3MsCiAJCX0KIAkJaWYgKFBRcHV0Q29weUVuZChjb25uLCBOVUxMKSA8PSAwIHx8IFBR Zmx1c2goY29ubikpCiAJCXsKLQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczogY291bGQgbm90 IHNlbmQgY29weS1lbmQgcGFja2V0OiAlcyIpLAotCQkJCQlwcm9nbmFtZSwgUFFlcnJvck1l c3NhZ2UoY29ubikpOworCQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3Qgc2VuZCBjb3B5LWVu ZCBwYWNrZXQ6ICVzIiwKKwkJCQkJCSBQUWVycm9yTWVzc2FnZShjb25uKSk7CiAJCQlyZXR1 cm4gZmFsc2U7CiAJCX0KIAkJc3RpbGxfc2VuZGluZyA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEv c3JjL2Jpbi9wZ19iYXNlYmFja3VwL3N0cmVhbXV0aWwuYyBiL3NyYy9iaW4vcGdfYmFzZWJh Y2t1cC9zdHJlYW11dGlsLmMKaW5kZXggNTJmMWU1NTliNy4uYWEzYTFmNWJkZCAxMDA2NDQK LS0tIGEvc3JjL2Jpbi9wZ19iYXNlYmFja3VwL3N0cmVhbXV0aWwuYworKysgYi9zcmMvYmlu L3BnX2Jhc2ViYWNrdXAvc3RyZWFtdXRpbC5jCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVk ZSAiY29tbW9uL2ZpbGVfcGVybS5oIgogI2luY2x1ZGUgImRhdGF0eXBlL3RpbWVzdGFtcC5o IgogI2luY2x1ZGUgImZlX3V0aWxzL2Nvbm5lY3QuaCIKKyNpbmNsdWRlICJmZV91dGlscy9s b2dnaW5nLmgiCiAjaW5jbHVkZSAicG9ydC9wZ19ic3dhcC5oIgogI2luY2x1ZGUgInBxZXhw YnVmZmVyLmgiCiAKQEAgLTkwLDcgKzkxLDcgQEAgR2V0Q29ubmVjdGlvbih2b2lkKQogCQlj b25uX29wdHMgPSBQUWNvbm5pbmZvUGFyc2UoY29ubmVjdGlvbl9zdHJpbmcsICZlcnJfbXNn KTsKIAkJaWYgKGNvbm5fb3B0cyA9PSBOVUxMKQogCQl7Ci0JCQlmcHJpbnRmKHN0ZGVyciwg IiVzOiAlcyIsIHByb2duYW1lLCBlcnJfbXNnKTsKKwkJCXBnX2xvZ19lcnJvcigiJXMiLCBl cnJfbXNnKTsKIAkJCWV4aXQoMSk7CiAJCX0KIApAQCAtMTgzLDggKzE4NCw3IEBAIEdldENv bm5lY3Rpb24odm9pZCkKIAkJICovCiAJCWlmICghdG1wY29ubikKIAkJewotCQkJZnByaW50 ZihzdGRlcnIsIF8oIiVzOiBjb3VsZCBub3QgY29ubmVjdCB0byBzZXJ2ZXJcbiIpLAotCQkJ CQlwcm9nbmFtZSk7CisJCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBjb25uZWN0IHRvIHNl cnZlciIpOwogCQkJZXhpdCgxKTsKIAkJfQogCkBAIC0yMDEsOCArMjAxLDggQEAgR2V0Q29u bmVjdGlvbih2b2lkKQogCiAJaWYgKFBRc3RhdHVzKHRtcGNvbm4pICE9IENPTk5FQ1RJT05f T0spCiAJewotCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCBjb25uZWN0IHRv IHNlcnZlcjogJXMiKSwKLQkJCQlwcm9nbmFtZSwgUFFlcnJvck1lc3NhZ2UodG1wY29ubikp OworCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBjb25uZWN0IHRvIHNlcnZlcjogJXMiLAor CQkJCQkgUFFlcnJvck1lc3NhZ2UodG1wY29ubikpOwogCQlQUWZpbmlzaCh0bXBjb25uKTsK IAkJZnJlZSh2YWx1ZXMpOwogCQlmcmVlKGtleXdvcmRzKTsKQEAgLTIzMCw4ICsyMzAsOCBA QCBHZXRDb25uZWN0aW9uKHZvaWQpCiAJCXJlcyA9IFBRZXhlYyh0bXBjb25uLCBBTFdBWVNf U0VDVVJFX1NFQVJDSF9QQVRIX1NRTCk7CiAJCWlmIChQUXJlc3VsdFN0YXR1cyhyZXMpICE9 IFBHUkVTX1RVUExFU19PSykKIAkJewotCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBjb3Vs ZCBub3QgY2xlYXIgc2VhcmNoX3BhdGg6ICVzIiksCi0JCQkJCXByb2duYW1lLCBQUWVycm9y TWVzc2FnZSh0bXBjb25uKSk7CisJCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBjbGVhciBz ZWFyY2hfcGF0aDogJXMiLAorCQkJCQkJIFBRZXJyb3JNZXNzYWdlKHRtcGNvbm4pKTsKIAkJ CVBRY2xlYXIocmVzKTsKIAkJCVBRZmluaXNoKHRtcGNvbm4pOwogCQkJZXhpdCgxKTsKQEAg LTI0NiwxOCArMjQ2LDE0IEBAIEdldENvbm5lY3Rpb24odm9pZCkKIAl0bXBwYXJhbSA9IFBR cGFyYW1ldGVyU3RhdHVzKHRtcGNvbm4sICJpbnRlZ2VyX2RhdGV0aW1lcyIpOwogCWlmICgh dG1wcGFyYW0pCiAJewotCQlmcHJpbnRmKHN0ZGVyciwKLQkJCQlfKCIlczogY291bGQgbm90 IGRldGVybWluZSBzZXJ2ZXIgc2V0dGluZyBmb3IgaW50ZWdlcl9kYXRldGltZXNcbiIpLAot CQkJCXByb2duYW1lKTsKKwkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgZGV0ZXJtaW5lIHNl cnZlciBzZXR0aW5nIGZvciBpbnRlZ2VyX2RhdGV0aW1lcyIpOwogCQlQUWZpbmlzaCh0bXBj b25uKTsKIAkJZXhpdCgxKTsKIAl9CiAKIAlpZiAoc3RyY21wKHRtcHBhcmFtLCAib24iKSAh PSAwKQogCXsKLQkJZnByaW50ZihzdGRlcnIsCi0JCQkJXygiJXM6IGludGVnZXJfZGF0ZXRp bWVzIGNvbXBpbGUgZmxhZyBkb2VzIG5vdCBtYXRjaCBzZXJ2ZXJcbiIpLAotCQkJCXByb2du YW1lKTsKKwkJcGdfbG9nX2Vycm9yKCJpbnRlZ2VyX2RhdGV0aW1lcyBjb21waWxlIGZsYWcg ZG9lcyBub3QgbWF0Y2ggc2VydmVyIik7CiAJCVBRZmluaXNoKHRtcGNvbm4pOwogCQlleGl0 KDEpOwogCX0KQEAgLTMwMCwxNyArMjk2LDE2IEBAIFJldHJpZXZlV2FsU2VnU2l6ZShQR2Nv bm4gKmNvbm4pCiAJcmVzID0gUFFleGVjKGNvbm4sICJTSE9XIHdhbF9zZWdtZW50X3NpemUi KTsKIAlpZiAoUFFyZXN1bHRTdGF0dXMocmVzKSAhPSBQR1JFU19UVVBMRVNfT0spCiAJewot CQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCBzZW5kIHJlcGxpY2F0aW9uIGNv bW1hbmQgXCIlc1wiOiAlcyIpLAotCQkJCXByb2duYW1lLCAiU0hPVyB3YWxfc2VnbWVudF9z aXplIiwgUFFlcnJvck1lc3NhZ2UoY29ubikpOworCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5v dCBzZW5kIHJlcGxpY2F0aW9uIGNvbW1hbmQgXCIlc1wiOiAlcyIsCisJCQkJCSAiU0hPVyB3 YWxfc2VnbWVudF9zaXplIiwgUFFlcnJvck1lc3NhZ2UoY29ubikpOwogCiAJCVBRY2xlYXIo cmVzKTsKIAkJcmV0dXJuIGZhbHNlOwogCX0KIAlpZiAoUFFudHVwbGVzKHJlcykgIT0gMSB8 fCBQUW5maWVsZHMocmVzKSA8IDEpCiAJewotCQlmcHJpbnRmKHN0ZGVyciwKLQkJCQlfKCIl czogY291bGQgbm90IGZldGNoIFdBTCBzZWdtZW50IHNpemU6IGdvdCAlZCByb3dzIGFuZCAl ZCBmaWVsZHMsIGV4cGVjdGVkICVkIHJvd3MgYW5kICVkIG9yIG1vcmUgZmllbGRzXG4iKSwK LQkJCQlwcm9nbmFtZSwgUFFudHVwbGVzKHJlcyksIFBRbmZpZWxkcyhyZXMpLCAxLCAxKTsK KwkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgZmV0Y2ggV0FMIHNlZ21lbnQgc2l6ZTogZ290 ICVkIHJvd3MgYW5kICVkIGZpZWxkcywgZXhwZWN0ZWQgJWQgcm93cyBhbmQgJWQgb3IgbW9y ZSBmaWVsZHMiLAorCQkJCQkgUFFudHVwbGVzKHJlcyksIFBRbmZpZWxkcyhyZXMpLCAxLCAx KTsKIAogCQlQUWNsZWFyKHJlcyk7CiAJCXJldHVybiBmYWxzZTsKQEAgLTMxOSw4ICszMTQs NyBAQCBSZXRyaWV2ZVdhbFNlZ1NpemUoUEdjb25uICpjb25uKQogCS8qIGZldGNoIHhsb2cg dmFsdWUgYW5kIHVuaXQgZnJvbSB0aGUgcmVzdWx0ICovCiAJaWYgKHNzY2FuZihQUWdldHZh bHVlKHJlcywgMCwgMCksICIlZCVzIiwgJnhsb2dfdmFsLCB4bG9nX3VuaXQpICE9IDIpCiAJ ewotCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IFdBTCBzZWdtZW50IHNpemUgY291bGQgbm90 IGJlIHBhcnNlZFxuIiksCi0JCQkJcHJvZ25hbWUpOworCQlwZ19sb2dfZXJyb3IoIldBTCBz ZWdtZW50IHNpemUgY291bGQgbm90IGJlIHBhcnNlZCIpOwogCQlyZXR1cm4gZmFsc2U7CiAJ fQogCkBAIC0zMzUsMTEgKzMyOSwxMCBAQCBSZXRyaWV2ZVdhbFNlZ1NpemUoUEdjb25uICpj b25uKQogCiAJaWYgKCFJc1ZhbGlkV2FsU2VnU2l6ZShXYWxTZWdTeikpCiAJewotCQlmcHJp bnRmKHN0ZGVyciwKLQkJCQluZ2V0dGV4dCgiJXM6IFdBTCBzZWdtZW50IHNpemUgbXVzdCBi ZSBhIHBvd2VyIG9mIHR3byBiZXR3ZWVuIDEgTUIgYW5kIDEgR0IsIGJ1dCB0aGUgcmVtb3Rl IHNlcnZlciByZXBvcnRlZCBhIHZhbHVlIG9mICVkIGJ5dGVcbiIsCi0JCQkJCQkgIiVzOiBX QUwgc2VnbWVudCBzaXplIG11c3QgYmUgYSBwb3dlciBvZiB0d28gYmV0d2VlbiAxIE1CIGFu ZCAxIEdCLCBidXQgdGhlIHJlbW90ZSBzZXJ2ZXIgcmVwb3J0ZWQgYSB2YWx1ZSBvZiAlZCBi eXRlc1xuIiwKLQkJCQkJCSBXYWxTZWdTeiksCi0JCQkJcHJvZ25hbWUsIFdhbFNlZ1N6KTsK KwkJcGdfbG9nX2Vycm9yKG5nZXR0ZXh0KCJXQUwgc2VnbWVudCBzaXplIG11c3QgYmUgYSBw b3dlciBvZiB0d28gYmV0d2VlbiAxIE1CIGFuZCAxIEdCLCBidXQgdGhlIHJlbW90ZSBzZXJ2 ZXIgcmVwb3J0ZWQgYSB2YWx1ZSBvZiAlZCBieXRlIiwKKwkJCQkJCQkgICJXQUwgc2VnbWVu dCBzaXplIG11c3QgYmUgYSBwb3dlciBvZiB0d28gYmV0d2VlbiAxIE1CIGFuZCAxIEdCLCBi dXQgdGhlIHJlbW90ZSBzZXJ2ZXIgcmVwb3J0ZWQgYSB2YWx1ZSBvZiAlZCBieXRlcyIsCisJ CQkJCQkJICBXYWxTZWdTeiksCisJCQkJCSBXYWxTZWdTeik7CiAJCXJldHVybiBmYWxzZTsK IAl9CiAKQEAgLTM3NCwxNyArMzY3LDE2IEBAIFJldHJpZXZlRGF0YURpckNyZWF0ZVBlcm0o UEdjb25uICpjb25uKQogCXJlcyA9IFBRZXhlYyhjb25uLCAiU0hPVyBkYXRhX2RpcmVjdG9y eV9tb2RlIik7CiAJaWYgKFBRcmVzdWx0U3RhdHVzKHJlcykgIT0gUEdSRVNfVFVQTEVTX09L KQogCXsKLQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBjb3VsZCBub3Qgc2VuZCByZXBsaWNh dGlvbiBjb21tYW5kIFwiJXNcIjogJXMiKSwKLQkJCQlwcm9nbmFtZSwgIlNIT1cgZGF0YV9k aXJlY3RvcnlfbW9kZSIsIFBRZXJyb3JNZXNzYWdlKGNvbm4pKTsKKwkJcGdfbG9nX2Vycm9y KCJjb3VsZCBub3Qgc2VuZCByZXBsaWNhdGlvbiBjb21tYW5kIFwiJXNcIjogJXMiLAorCQkJ CQkgIlNIT1cgZGF0YV9kaXJlY3RvcnlfbW9kZSIsIFBRZXJyb3JNZXNzYWdlKGNvbm4pKTsK IAogCQlQUWNsZWFyKHJlcyk7CiAJCXJldHVybiBmYWxzZTsKIAl9CiAJaWYgKFBRbnR1cGxl cyhyZXMpICE9IDEgfHwgUFFuZmllbGRzKHJlcykgPCAxKQogCXsKLQkJZnByaW50ZihzdGRl cnIsCi0JCQkJXygiJXM6IGNvdWxkIG5vdCBmZXRjaCBncm91cCBhY2Nlc3MgZmxhZzogZ290 ICVkIHJvd3MgYW5kICVkIGZpZWxkcywgZXhwZWN0ZWQgJWQgcm93cyBhbmQgJWQgb3IgbW9y ZSBmaWVsZHNcbiIpLAotCQkJCXByb2duYW1lLCBQUW50dXBsZXMocmVzKSwgUFFuZmllbGRz KHJlcyksIDEsIDEpOworCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBmZXRjaCBncm91cCBh Y2Nlc3MgZmxhZzogZ290ICVkIHJvd3MgYW5kICVkIGZpZWxkcywgZXhwZWN0ZWQgJWQgcm93 cyBhbmQgJWQgb3IgbW9yZSBmaWVsZHMiLAorCQkJCQkgUFFudHVwbGVzKHJlcyksIFBRbmZp ZWxkcyhyZXMpLCAxLCAxKTsKIAogCQlQUWNsZWFyKHJlcyk7CiAJCXJldHVybiBmYWxzZTsK QEAgLTM5Miw4ICszODQsOCBAQCBSZXRyaWV2ZURhdGFEaXJDcmVhdGVQZXJtKFBHY29ubiAq Y29ubikKIAogCWlmIChzc2NhbmYoUFFnZXR2YWx1ZShyZXMsIDAsIDApLCAiJW8iLCAmZGF0 YV9kaXJlY3RvcnlfbW9kZSkgIT0gMSkKIAl7Ci0JCWZwcmludGYoc3RkZXJyLCBfKCIlczog Z3JvdXAgYWNjZXNzIGZsYWcgY291bGQgbm90IGJlIHBhcnNlZDogJXNcbiIpLAotCQkJCXBy b2duYW1lLCBQUWdldHZhbHVlKHJlcywgMCwgMCkpOworCQlwZ19sb2dfZXJyb3IoImdyb3Vw IGFjY2VzcyBmbGFnIGNvdWxkIG5vdCBiZSBwYXJzZWQ6ICVzIiwKKwkJCQkJIFBRZ2V0dmFs dWUocmVzLCAwLCAwKSk7CiAKIAkJUFFjbGVhcihyZXMpOwogCQlyZXR1cm4gZmFsc2U7CkBA IC00MjcsMTcgKzQxOSwxNiBAQCBSdW5JZGVudGlmeVN5c3RlbShQR2Nvbm4gKmNvbm4sIGNo YXIgKipzeXNpZCwgVGltZUxpbmVJRCAqc3RhcnR0bGksCiAJcmVzID0gUFFleGVjKGNvbm4s ICJJREVOVElGWV9TWVNURU0iKTsKIAlpZiAoUFFyZXN1bHRTdGF0dXMocmVzKSAhPSBQR1JF U19UVVBMRVNfT0spCiAJewotCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCBz ZW5kIHJlcGxpY2F0aW9uIGNvbW1hbmQgXCIlc1wiOiAlcyIpLAotCQkJCXByb2duYW1lLCAi SURFTlRJRllfU1lTVEVNIiwgUFFlcnJvck1lc3NhZ2UoY29ubikpOworCQlwZ19sb2dfZXJy b3IoImNvdWxkIG5vdCBzZW5kIHJlcGxpY2F0aW9uIGNvbW1hbmQgXCIlc1wiOiAlcyIsCisJ CQkJCSAiSURFTlRJRllfU1lTVEVNIiwgUFFlcnJvck1lc3NhZ2UoY29ubikpOwogCiAJCVBR Y2xlYXIocmVzKTsKIAkJcmV0dXJuIGZhbHNlOwogCX0KIAlpZiAoUFFudHVwbGVzKHJlcykg IT0gMSB8fCBQUW5maWVsZHMocmVzKSA8IDMpCiAJewotCQlmcHJpbnRmKHN0ZGVyciwKLQkJ CQlfKCIlczogY291bGQgbm90IGlkZW50aWZ5IHN5c3RlbTogZ290ICVkIHJvd3MgYW5kICVk IGZpZWxkcywgZXhwZWN0ZWQgJWQgcm93cyBhbmQgJWQgb3IgbW9yZSBmaWVsZHNcbiIpLAot CQkJCXByb2duYW1lLCBQUW50dXBsZXMocmVzKSwgUFFuZmllbGRzKHJlcyksIDEsIDMpOwor CQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBpZGVudGlmeSBzeXN0ZW06IGdvdCAlZCByb3dz IGFuZCAlZCBmaWVsZHMsIGV4cGVjdGVkICVkIHJvd3MgYW5kICVkIG9yIG1vcmUgZmllbGRz IiwKKwkJCQkJIFBRbnR1cGxlcyhyZXMpLCBQUW5maWVsZHMocmVzKSwgMSwgMyk7CiAKIAkJ UFFjbGVhcihyZXMpOwogCQlyZXR1cm4gZmFsc2U7CkBAIC00NTYsOSArNDQ3LDggQEAgUnVu SWRlbnRpZnlTeXN0ZW0oUEdjb25uICpjb25uLCBjaGFyICoqc3lzaWQsIFRpbWVMaW5lSUQg KnN0YXJ0dGxpLAogCXsKIAkJaWYgKHNzY2FuZihQUWdldHZhbHVlKHJlcywgMCwgMiksICIl WC8lWCIsICZoaSwgJmxvKSAhPSAyKQogCQl7Ci0JCQlmcHJpbnRmKHN0ZGVyciwKLQkJCQkJ XygiJXM6IGNvdWxkIG5vdCBwYXJzZSB3cml0ZS1haGVhZCBsb2cgbG9jYXRpb24gXCIlc1wi XG4iKSwKLQkJCQkJcHJvZ25hbWUsIFBRZ2V0dmFsdWUocmVzLCAwLCAyKSk7CisJCQlwZ19s b2dfZXJyb3IoImNvdWxkIG5vdCBwYXJzZSB3cml0ZS1haGVhZCBsb2cgbG9jYXRpb24gXCIl c1wiIiwKKwkJCQkJCSBQUWdldHZhbHVlKHJlcywgMCwgMikpOwogCiAJCQlQUWNsZWFyKHJl cyk7CiAJCQlyZXR1cm4gZmFsc2U7CkBAIC00NzQsOSArNDY0LDggQEAgUnVuSWRlbnRpZnlT eXN0ZW0oUEdjb25uICpjb25uLCBjaGFyICoqc3lzaWQsIFRpbWVMaW5lSUQgKnN0YXJ0dGxp LAogCQl7CiAJCQlpZiAoUFFuZmllbGRzKHJlcykgPCA0KQogCQkJewotCQkJCWZwcmludGYo c3RkZXJyLAotCQkJCQkJXygiJXM6IGNvdWxkIG5vdCBpZGVudGlmeSBzeXN0ZW06IGdvdCAl ZCByb3dzIGFuZCAlZCBmaWVsZHMsIGV4cGVjdGVkICVkIHJvd3MgYW5kICVkIG9yIG1vcmUg ZmllbGRzXG4iKSwKLQkJCQkJCXByb2duYW1lLCBQUW50dXBsZXMocmVzKSwgUFFuZmllbGRz KHJlcyksIDEsIDQpOworCQkJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IGlkZW50aWZ5IHN5 c3RlbTogZ290ICVkIHJvd3MgYW5kICVkIGZpZWxkcywgZXhwZWN0ZWQgJWQgcm93cyBhbmQg JWQgb3IgbW9yZSBmaWVsZHMiLAorCQkJCQkJCSBQUW50dXBsZXMocmVzKSwgUFFuZmllbGRz KHJlcyksIDEsIDQpOwogCiAJCQkJUFFjbGVhcihyZXMpOwogCQkJCXJldHVybiBmYWxzZTsK QEAgLTU0MSw4ICs1MzAsOCBAQCBDcmVhdGVSZXBsaWNhdGlvblNsb3QoUEdjb25uICpjb25u LCBjb25zdCBjaGFyICpzbG90X25hbWUsIGNvbnN0IGNoYXIgKnBsdWdpbiwKIAkJfQogCQll bHNlCiAJCXsKLQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczogY291bGQgbm90IHNlbmQgcmVw bGljYXRpb24gY29tbWFuZCBcIiVzXCI6ICVzIiksCi0JCQkJCXByb2duYW1lLCBxdWVyeS0+ ZGF0YSwgUFFlcnJvck1lc3NhZ2UoY29ubikpOworCQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBu b3Qgc2VuZCByZXBsaWNhdGlvbiBjb21tYW5kIFwiJXNcIjogJXMiLAorCQkJCQkJIHF1ZXJ5 LT5kYXRhLCBQUWVycm9yTWVzc2FnZShjb25uKSk7CiAKIAkJCWRlc3Ryb3lQUUV4cEJ1ZmZl cihxdWVyeSk7CiAJCQlQUWNsZWFyKHJlcyk7CkBAIC01NTIsMTAgKzU0MSw5IEBAIENyZWF0 ZVJlcGxpY2F0aW9uU2xvdChQR2Nvbm4gKmNvbm4sIGNvbnN0IGNoYXIgKnNsb3RfbmFtZSwg Y29uc3QgY2hhciAqcGx1Z2luLAogCiAJaWYgKFBRbnR1cGxlcyhyZXMpICE9IDEgfHwgUFFu ZmllbGRzKHJlcykgIT0gNCkKIAl7Ci0JCWZwcmludGYoc3RkZXJyLAotCQkJCV8oIiVzOiBj b3VsZCBub3QgY3JlYXRlIHJlcGxpY2F0aW9uIHNsb3QgXCIlc1wiOiBnb3QgJWQgcm93cyBh bmQgJWQgZmllbGRzLCBleHBlY3RlZCAlZCByb3dzIGFuZCAlZCBmaWVsZHNcbiIpLAotCQkJ CXByb2duYW1lLCBzbG90X25hbWUsCi0JCQkJUFFudHVwbGVzKHJlcyksIFBRbmZpZWxkcyhy ZXMpLCAxLCA0KTsKKwkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgY3JlYXRlIHJlcGxpY2F0 aW9uIHNsb3QgXCIlc1wiOiBnb3QgJWQgcm93cyBhbmQgJWQgZmllbGRzLCBleHBlY3RlZCAl ZCByb3dzIGFuZCAlZCBmaWVsZHMiLAorCQkJCQkgc2xvdF9uYW1lLAorCQkJCQkgUFFudHVw bGVzKHJlcyksIFBRbmZpZWxkcyhyZXMpLCAxLCA0KTsKIAogCQlkZXN0cm95UFFFeHBCdWZm ZXIocXVlcnkpOwogCQlQUWNsZWFyKHJlcyk7CkBAIC01ODcsOCArNTc1LDggQEAgRHJvcFJl cGxpY2F0aW9uU2xvdChQR2Nvbm4gKmNvbm4sIGNvbnN0IGNoYXIgKnNsb3RfbmFtZSkKIAly ZXMgPSBQUWV4ZWMoY29ubiwgcXVlcnktPmRhdGEpOwogCWlmIChQUXJlc3VsdFN0YXR1cyhy ZXMpICE9IFBHUkVTX0NPTU1BTkRfT0spCiAJewotCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6 IGNvdWxkIG5vdCBzZW5kIHJlcGxpY2F0aW9uIGNvbW1hbmQgXCIlc1wiOiAlcyIpLAotCQkJ CXByb2duYW1lLCBxdWVyeS0+ZGF0YSwgUFFlcnJvck1lc3NhZ2UoY29ubikpOworCQlwZ19s b2dfZXJyb3IoImNvdWxkIG5vdCBzZW5kIHJlcGxpY2F0aW9uIGNvbW1hbmQgXCIlc1wiOiAl cyIsCisJCQkJCSBxdWVyeS0+ZGF0YSwgUFFlcnJvck1lc3NhZ2UoY29ubikpOwogCiAJCWRl c3Ryb3lQUUV4cEJ1ZmZlcihxdWVyeSk7CiAJCVBRY2xlYXIocmVzKTsKQEAgLTU5NywxMCAr NTg1LDkgQEAgRHJvcFJlcGxpY2F0aW9uU2xvdChQR2Nvbm4gKmNvbm4sIGNvbnN0IGNoYXIg KnNsb3RfbmFtZSkKIAogCWlmIChQUW50dXBsZXMocmVzKSAhPSAwIHx8IFBRbmZpZWxkcyhy ZXMpICE9IDApCiAJewotCQlmcHJpbnRmKHN0ZGVyciwKLQkJCQlfKCIlczogY291bGQgbm90 IGRyb3AgcmVwbGljYXRpb24gc2xvdCBcIiVzXCI6IGdvdCAlZCByb3dzIGFuZCAlZCBmaWVs ZHMsIGV4cGVjdGVkICVkIHJvd3MgYW5kICVkIGZpZWxkc1xuIiksCi0JCQkJcHJvZ25hbWUs IHNsb3RfbmFtZSwKLQkJCQlQUW50dXBsZXMocmVzKSwgUFFuZmllbGRzKHJlcyksIDAsIDAp OworCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBkcm9wIHJlcGxpY2F0aW9uIHNsb3QgXCIl c1wiOiBnb3QgJWQgcm93cyBhbmQgJWQgZmllbGRzLCBleHBlY3RlZCAlZCByb3dzIGFuZCAl ZCBmaWVsZHMiLAorCQkJCQkgc2xvdF9uYW1lLAorCQkJCQkgUFFudHVwbGVzKHJlcyksIFBR bmZpZWxkcyhyZXMpLCAwLCAwKTsKIAogCQlkZXN0cm95UFFFeHBCdWZmZXIocXVlcnkpOwog CQlQUWNsZWFyKHJlcyk7CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2Jhc2ViYWNrdXAvd2Fs bWV0aG9kcy5jIGIvc3JjL2Jpbi9wZ19iYXNlYmFja3VwL3dhbG1ldGhvZHMuYwppbmRleCA2 OGVmN2ZhNmQ3Li4xODkwMmJhNzQ5IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2Jhc2ViYWNr dXAvd2FsbWV0aG9kcy5jCisrKyBiL3NyYy9iaW4vcGdfYmFzZWJhY2t1cC93YWxtZXRob2Rz LmMKQEAgLTE1NSw4ICsxNTUsOCBAQCBkaXJfb3Blbl9mb3Jfd3JpdGUoY29uc3QgY2hhciAq cGF0aG5hbWUsIGNvbnN0IGNoYXIgKnRlbXBfc3VmZml4LCBzaXplX3QgcGFkX3RvXwogCSAq LwogCWlmIChkaXJfZGF0YS0+c3luYykKIAl7Ci0JCWlmIChmc3luY19mbmFtZSh0bXBwYXRo LCBmYWxzZSwgcHJvZ25hbWUpICE9IDAgfHwKLQkJCWZzeW5jX3BhcmVudF9wYXRoKHRtcHBh dGgsIHByb2duYW1lKSAhPSAwKQorCQlpZiAoZnN5bmNfZm5hbWUodG1wcGF0aCwgZmFsc2Up ICE9IDAgfHwKKwkJCWZzeW5jX3BhcmVudF9wYXRoKHRtcHBhdGgpICE9IDApCiAJCXsKICNp ZmRlZiBIQVZFX0xJQloKIAkJCWlmIChkaXJfZGF0YS0+Y29tcHJlc3Npb24gPiAwKQpAQCAt MjQ0LDcgKzI0NCw3IEBAIGRpcl9jbG9zZShXYWxmaWxlIGYsIFdhbENsb3NlTWV0aG9kIG1l dGhvZCkKIAkJCXNucHJpbnRmKHRtcHBhdGgyLCBzaXplb2YodG1wcGF0aDIpLCAiJXMvJXMl cyIsCiAJCQkJCSBkaXJfZGF0YS0+YmFzZWRpciwgZGYtPnBhdGhuYW1lLAogCQkJCQkgZGly X2RhdGEtPmNvbXByZXNzaW9uID4gMCA/ICIuZ3oiIDogIiIpOwotCQkJciA9IGR1cmFibGVf cmVuYW1lKHRtcHBhdGgsIHRtcHBhdGgyLCBwcm9nbmFtZSk7CisJCQlyID0gZHVyYWJsZV9y ZW5hbWUodG1wcGF0aCwgdG1wcGF0aDIpOwogCQl9CiAJCWVsc2UgaWYgKG1ldGhvZCA9PSBD TE9TRV9VTkxJTkspCiAJCXsKQEAgLTI2NCw5ICsyNjQsOSBAQCBkaXJfY2xvc2UoV2FsZmls ZSBmLCBXYWxDbG9zZU1ldGhvZCBtZXRob2QpCiAJCQkgKi8KIAkJCWlmIChkaXJfZGF0YS0+ c3luYykKIAkJCXsKLQkJCQlyID0gZnN5bmNfZm5hbWUoZGYtPmZ1bGxwYXRoLCBmYWxzZSwg cHJvZ25hbWUpOworCQkJCXIgPSBmc3luY19mbmFtZShkZi0+ZnVsbHBhdGgsIGZhbHNlKTsK IAkJCQlpZiAociA9PSAwKQotCQkJCQlyID0gZnN5bmNfcGFyZW50X3BhdGgoZGYtPmZ1bGxw YXRoLCBwcm9nbmFtZSk7CisJCQkJCXIgPSBmc3luY19wYXJlbnRfcGF0aChkZi0+ZnVsbHBh dGgpOwogCQkJfQogCQl9CiAJfQpAQCAtMzM5LDcgKzMzOSw3IEBAIGRpcl9maW5pc2godm9p ZCkKIAkJICogRmlsZXMgYXJlIGZzeW5jZWQgd2hlbiB0aGV5IGFyZSBjbG9zZWQsIGJ1dCB3 ZSBuZWVkIHRvIGZzeW5jIHRoZQogCQkgKiBkaXJlY3RvcnkgZW50cnkgaGVyZSBhcyB3ZWxs LgogCQkgKi8KLQkJaWYgKGZzeW5jX2ZuYW1lKGRpcl9kYXRhLT5iYXNlZGlyLCB0cnVlLCBw cm9nbmFtZSkgIT0gMCkKKwkJaWYgKGZzeW5jX2ZuYW1lKGRpcl9kYXRhLT5iYXNlZGlyLCB0 cnVlKSAhPSAwKQogCQkJcmV0dXJuIGZhbHNlOwogCX0KIAlyZXR1cm4gdHJ1ZTsKQEAgLTk3 MCw5ICs5NzAsOSBAQCB0YXJfZmluaXNoKHZvaWQpCiAKIAlpZiAodGFyX2RhdGEtPnN5bmMp CiAJewotCQlpZiAoZnN5bmNfZm5hbWUodGFyX2RhdGEtPnRhcmZpbGVuYW1lLCBmYWxzZSwg cHJvZ25hbWUpICE9IDApCisJCWlmIChmc3luY19mbmFtZSh0YXJfZGF0YS0+dGFyZmlsZW5h bWUsIGZhbHNlKSAhPSAwKQogCQkJcmV0dXJuIGZhbHNlOwotCQlpZiAoZnN5bmNfcGFyZW50 X3BhdGgodGFyX2RhdGEtPnRhcmZpbGVuYW1lLCBwcm9nbmFtZSkgIT0gMCkKKwkJaWYgKGZz eW5jX3BhcmVudF9wYXRoKHRhcl9kYXRhLT50YXJmaWxlbmFtZSkgIT0gMCkKIAkJCXJldHVy biBmYWxzZTsKIAl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfY29udHJvbGRhdGEvTWFr ZWZpbGUgYi9zcmMvYmluL3BnX2NvbnRyb2xkYXRhL01ha2VmaWxlCmluZGV4IDI4ZDZkNjY2 ZmUuLmYwYTRjOTUzNmMgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfY29udHJvbGRhdGEvTWFr ZWZpbGUKKysrIGIvc3JjL2Jpbi9wZ19jb250cm9sZGF0YS9NYWtlZmlsZQpAQCAtMTUsMTEg KzE1LDEzIEBAIHN1YmRpciA9IHNyYy9iaW4vcGdfY29udHJvbGRhdGEKIHRvcF9idWlsZGRp ciA9IC4uLy4uLy4uCiBpbmNsdWRlICQodG9wX2J1aWxkZGlyKS9zcmMvTWFrZWZpbGUuZ2xv YmFsCiAKK0xERkxBR1NfSU5URVJOQUwgKz0gLUwkKHRvcF9idWlsZGRpcikvc3JjL2ZlX3V0 aWxzIC1scGdmZXV0aWxzCisKIE9CSlM9IHBnX2NvbnRyb2xkYXRhLm8gJChXSU4zMlJFUykK IAogYWxsOiBwZ19jb250cm9sZGF0YQogCi1wZ19jb250cm9sZGF0YTogJChPQkpTKSB8IHN1 Ym1ha2UtbGlicGdwb3J0CitwZ19jb250cm9sZGF0YTogJChPQkpTKSB8IHN1Ym1ha2UtbGli cGdwb3J0IHN1Ym1ha2UtbGlicGdmZXV0aWxzCiAJJChDQykgJChDRkxBR1MpICReICQoTERG TEFHUykgJChMREZMQUdTX0VYKSAkKExJQlMpIC1vICRAJChYKQogCiBpbnN0YWxsOiBhbGwg aW5zdGFsbGRpcnMKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfY29udHJvbGRhdGEvcGdfY29u dHJvbGRhdGEuYyBiL3NyYy9iaW4vcGdfY29udHJvbGRhdGEvcGdfY29udHJvbGRhdGEuYwpp bmRleCA4OTVhNTFmODlkLi45YmI5N2EyNmVjIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2Nv bnRyb2xkYXRhL3BnX2NvbnRyb2xkYXRhLmMKKysrIGIvc3JjL2Jpbi9wZ19jb250cm9sZGF0 YS9wZ19jb250cm9sZGF0YS5jCkBAIC0yNCw2ICsyNCw3IEBACiAjaW5jbHVkZSAiYWNjZXNz L3hsb2dfaW50ZXJuYWwuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2NvbnRyb2wuaCIKICNp bmNsdWRlICJjb21tb24vY29udHJvbGRhdGFfdXRpbHMuaCIKKyNpbmNsdWRlICJmZV91dGls cy9sb2dnaW5nLmgiCiAjaW5jbHVkZSAicGdfZ2V0b3B0LmgiCiAjaW5jbHVkZSAiZ2V0b3B0 X2xvbmcuaCIKIApAQCAtMTA3LDcgKzEwOCw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFy Z3ZbXSkKIAlpbnQJCQlXYWxTZWdTejsKIAogCXNldF9wZ2xvY2FsZV9wZ3NlcnZpY2UoYXJn dlswXSwgUEdfVEVYVERPTUFJTigicGdfY29udHJvbGRhdGEiKSk7Ci0KKwlwZ19sb2dnaW5n X2luaXQoYXJndlswXSk7CiAJcHJvZ25hbWUgPSBnZXRfcHJvZ25hbWUoYXJndlswXSk7CiAK IAlpZiAoYXJnYyA+IDEpCkBAIC0xNjQsNyArMTY1LDcgQEAgbWFpbihpbnQgYXJnYywgY2hh ciAqYXJndltdKQogCX0KIAogCS8qIGdldCBhIGNvcHkgb2YgdGhlIGNvbnRyb2wgZmlsZSAq LwotCUNvbnRyb2xGaWxlID0gZ2V0X2NvbnRyb2xmaWxlKERhdGFEaXIsIHByb2duYW1lLCAm Y3JjX29rKTsKKwlDb250cm9sRmlsZSA9IGdldF9jb250cm9sZmlsZShEYXRhRGlyLCAmY3Jj X29rKTsKIAlpZiAoIWNyY19vaykKIAkJcHJpbnRmKF8oIldBUk5JTkc6IENhbGN1bGF0ZWQg Q1JDIGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIHZhbHVlIHN0b3JlZCBpbiBmaWxlLlxuIgog CQkJCSAiRWl0aGVyIHRoZSBmaWxlIGlzIGNvcnJ1cHQsIG9yIGl0IGhhcyBhIGRpZmZlcmVu dCBsYXlvdXQgdGhhbiB0aGlzIHByb2dyYW1cbiIKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdf Y3RsL01ha2VmaWxlIGIvc3JjL2Jpbi9wZ19jdGwvTWFrZWZpbGUKaW5kZXggMDIwMjg1Mzg3 MS4uNGQwYmZlMGIzMSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19jdGwvTWFrZWZpbGUKKysr IGIvc3JjL2Jpbi9wZ19jdGwvTWFrZWZpbGUKQEAgLTE2LDYgKzE2LDggQEAgc3ViZGlyID0g c3JjL2Jpbi9wZ19jdGwKIHRvcF9idWlsZGRpciA9IC4uLy4uLy4uCiBpbmNsdWRlICQodG9w X2J1aWxkZGlyKS9zcmMvTWFrZWZpbGUuZ2xvYmFsCiAKK0xERkxBR1NfSU5URVJOQUwgKz0g LUwkKHRvcF9idWlsZGRpcikvc3JjL2ZlX3V0aWxzIC1scGdmZXV0aWxzCisKICMgT24gV2lu ZG93cywgd2UgbmVlZCB0byBsaW5rIHdpdGggbGlicHEsIGp1c3QgZm9yIHVzZSBvZiBwcWV4 cGJ1ZmZlcjsKICMgYnV0IGxldCdzIG5vdCBwdWxsIHRoYXQgaW4gb24gcGxhdGZvcm1zIHdo ZXJlIHdlIGRvbid0IG5lZWQgaXQuCiBpZmVxICgkKFBPUlROQU1FKSwgd2luMzIpCkBAIC0y OCw3ICszMCw3IEBAIE9CSlM9CXBnX2N0bC5vICQoV0lOMzJSRVMpCiAKIGFsbDogcGdfY3Rs CiAKLXBnX2N0bDogJChPQkpTKSB8IHN1Ym1ha2UtbGlicGdwb3J0ICQoU1VCTUFLRV9MSUJQ USkKK3BnX2N0bDogJChPQkpTKSB8IHN1Ym1ha2UtbGlicGdwb3J0IHN1Ym1ha2UtbGlicGdm ZXV0aWxzICQoU1VCTUFLRV9MSUJQUSkKIAkkKENDKSAkKENGTEFHUykgJChPQkpTKSAkKExE RkxBR1MpICQoTERGTEFHU19FWCkgJChMSUJTKSAtbyAkQCQoWCkKIAogaW5zdGFsbDogYWxs IGluc3RhbGxkaXJzCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2N0bC9wZ19jdGwuYyBiL3Ny Yy9iaW4vcGdfY3RsL3BnX2N0bC5jCmluZGV4IDFkMGIwNTZkZGUuLjY2OGI2NWZlOGUgMTAw NjQ0Ci0tLSBhL3NyYy9iaW4vcGdfY3RsL3BnX2N0bC5jCisrKyBiL3NyYy9iaW4vcGdfY3Rs L3BnX2N0bC5jCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19jb250 cm9sLmgiCiAjaW5jbHVkZSAiY29tbW9uL2NvbnRyb2xkYXRhX3V0aWxzLmgiCiAjaW5jbHVk ZSAiY29tbW9uL2ZpbGVfcGVybS5oIgorI2luY2x1ZGUgImZlX3V0aWxzL2xvZ2dpbmcuaCIK ICNpbmNsdWRlICJnZXRvcHRfbG9uZy5oIgogI2luY2x1ZGUgInV0aWxzL3BpZGZpbGUuaCIK IApAQCAtMjE4MSw3ICsyMTgyLDcgQEAgZ2V0X2NvbnRyb2xfZGJzdGF0ZSh2b2lkKQogewog CURCU3RhdGUJCXJldDsKIAlib29sCQljcmNfb2s7Ci0JQ29udHJvbEZpbGVEYXRhICpjb250 cm9sX2ZpbGVfZGF0YSA9IGdldF9jb250cm9sZmlsZShwZ19kYXRhLCBwcm9nbmFtZSwgJmNy Y19vayk7CisJQ29udHJvbEZpbGVEYXRhICpjb250cm9sX2ZpbGVfZGF0YSA9IGdldF9jb250 cm9sZmlsZShwZ19kYXRhLCAmY3JjX29rKTsKIAogCWlmICghY3JjX29rKQogCXsKQEAgLTIy MjQsNiArMjIyNSw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCiAJcHJvZ25h bWUgPSBnZXRfcHJvZ25hbWUoYXJndlswXSk7CiAJc2V0X3BnbG9jYWxlX3Bnc2VydmljZShh cmd2WzBdLCBQR19URVhURE9NQUlOKCJwZ19jdGwiKSk7CisJcGdfbG9nZ2luZ19pbml0KGFy Z3ZbMF0pOwogCXN0YXJ0X3RpbWUgPSB0aW1lKE5VTEwpOwogCiAJLyoKZGlmZiAtLWdpdCBh L3NyYy9iaW4vcGdfZHVtcC9jb21tb24uYyBiL3NyYy9iaW4vcGdfZHVtcC9jb21tb24uYwpp bmRleCA5YjU4NjlhZGQ4Li40YTU2NzA5NzA2IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1 bXAvY29tbW9uLmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL2NvbW1vbi5jCkBAIC0yMiw2ICsy Miw3IEBACiAjaW5jbHVkZSA8Y3R5cGUuaD4KIAogI2luY2x1ZGUgImNhdGFsb2cvcGdfY2xh c3NfZC5oIgorI2luY2x1ZGUgImZlX3V0aWxzL2xvZ2dpbmcuaCIKICNpbmNsdWRlICJmZV91 dGlscy9zdHJpbmdfdXRpbHMuaCIKIAogCkBAIC0xMjAsMTcgKzEyMSwxNCBAQCBnZXRTY2hl bWFEYXRhKEFyY2hpdmUgKmZvdXQsIGludCAqbnVtVGFibGVzUHRyKQogCSAqIGV4dGVuc2lv biBtZW1iZXJzaGlwIG5lZWRzIHRvIGJlIGNvbnN1bHRhYmxlIGR1cmluZyBkZWNpc2lvbnMg YWJvdXQKIAkgKiB3aGV0aGVyIG90aGVyIG9iamVjdHMgYXJlIHRvIGJlIGR1bXBlZC4KIAkg Ki8KLQlpZiAoZ192ZXJib3NlKQotCQl3cml0ZV9tc2coTlVMTCwgInJlYWRpbmcgZXh0ZW5z aW9uc1xuIik7CisJcGdfbG9nX2luZm8oInJlYWRpbmcgZXh0ZW5zaW9ucyIpOwogCWV4dGlu Zm8gPSBnZXRFeHRlbnNpb25zKGZvdXQsICZudW1FeHRlbnNpb25zKTsKIAlleHRpbmZvaW5k ZXggPSBidWlsZEluZGV4QXJyYXkoZXh0aW5mbywgbnVtRXh0ZW5zaW9ucywgc2l6ZW9mKEV4 dGVuc2lvbkluZm8pKTsKIAotCWlmIChnX3ZlcmJvc2UpCi0JCXdyaXRlX21zZyhOVUxMLCAi aWRlbnRpZnlpbmcgZXh0ZW5zaW9uIG1lbWJlcnNcbiIpOworCXBnX2xvZ19pbmZvKCJpZGVu dGlmeWluZyBleHRlbnNpb24gbWVtYmVycyIpOwogCWdldEV4dGVuc2lvbk1lbWJlcnNoaXAo Zm91dCwgZXh0aW5mbywgbnVtRXh0ZW5zaW9ucyk7CiAKLQlpZiAoZ192ZXJib3NlKQotCQl3 cml0ZV9tc2coTlVMTCwgInJlYWRpbmcgc2NoZW1hc1xuIik7CisJcGdfbG9nX2luZm8oInJl YWRpbmcgc2NoZW1hcyIpOwogCW5zcGluZm8gPSBnZXROYW1lc3BhY2VzKGZvdXQsICZudW1O YW1lc3BhY2VzKTsKIAluc3BpbmZvaW5kZXggPSBidWlsZEluZGV4QXJyYXkobnNwaW5mbywg bnVtTmFtZXNwYWNlcywgc2l6ZW9mKE5hbWVzcGFjZUluZm8pKTsKIApAQCAtMTQwLDE2MCAr MTM4LDEyNCBAQCBnZXRTY2hlbWFEYXRhKEFyY2hpdmUgKmZvdXQsIGludCAqbnVtVGFibGVz UHRyKQogCSAqIEhvd2V2ZXIsIHdlIGhhdmUgdG8gZG8gZ2V0TmFtZXNwYWNlcyBmaXJzdCBi ZWNhdXNlIHRoZSB0YWJsZXMgZ2V0CiAJICogbGlua2VkIHRvIHRoZWlyIGNvbnRhaW5pbmcg bmFtZXNwYWNlcyBkdXJpbmcgZ2V0VGFibGVzLgogCSAqLwotCWlmIChnX3ZlcmJvc2UpCi0J CXdyaXRlX21zZyhOVUxMLCAicmVhZGluZyB1c2VyLWRlZmluZWQgdGFibGVzXG4iKTsKKwlw Z19sb2dfaW5mbygicmVhZGluZyB1c2VyLWRlZmluZWQgdGFibGVzIik7CiAJdGJsaW5mbyA9 IGdldFRhYmxlcyhmb3V0LCAmbnVtVGFibGVzKTsKIAl0YmxpbmZvaW5kZXggPSBidWlsZElu ZGV4QXJyYXkodGJsaW5mbywgbnVtVGFibGVzLCBzaXplb2YoVGFibGVJbmZvKSk7CiAKIAkv KiBEbyB0aGlzIGFmdGVyIHdlJ3ZlIGJ1aWx0IHRibGluZm9pbmRleCAqLwogCWdldE93bmVk U2Vxcyhmb3V0LCB0YmxpbmZvLCBudW1UYWJsZXMpOwogCi0JaWYgKGdfdmVyYm9zZSkKLQkJ d3JpdGVfbXNnKE5VTEwsICJyZWFkaW5nIHVzZXItZGVmaW5lZCBmdW5jdGlvbnNcbiIpOwor CXBnX2xvZ19pbmZvKCJyZWFkaW5nIHVzZXItZGVmaW5lZCBmdW5jdGlvbnMiKTsKIAlmdW5p bmZvID0gZ2V0RnVuY3MoZm91dCwgJm51bUZ1bmNzKTsKIAlmdW5pbmZvaW5kZXggPSBidWls ZEluZGV4QXJyYXkoZnVuaW5mbywgbnVtRnVuY3MsIHNpemVvZihGdW5jSW5mbykpOwogCiAJ LyogdGhpcyBtdXN0IGJlIGFmdGVyIGdldFRhYmxlcyBhbmQgZ2V0RnVuY3MgKi8KLQlpZiAo Z192ZXJib3NlKQotCQl3cml0ZV9tc2coTlVMTCwgInJlYWRpbmcgdXNlci1kZWZpbmVkIHR5 cGVzXG4iKTsKKwlwZ19sb2dfaW5mbygicmVhZGluZyB1c2VyLWRlZmluZWQgdHlwZXMiKTsK IAl0eXBpbmZvID0gZ2V0VHlwZXMoZm91dCwgJm51bVR5cGVzKTsKIAl0eXBpbmZvaW5kZXgg PSBidWlsZEluZGV4QXJyYXkodHlwaW5mbywgbnVtVHlwZXMsIHNpemVvZihUeXBlSW5mbykp OwogCiAJLyogdGhpcyBtdXN0IGJlIGFmdGVyIGdldEZ1bmNzLCB0b28gKi8KLQlpZiAoZ192 ZXJib3NlKQotCQl3cml0ZV9tc2coTlVMTCwgInJlYWRpbmcgcHJvY2VkdXJhbCBsYW5ndWFn ZXNcbiIpOworCXBnX2xvZ19pbmZvKCJyZWFkaW5nIHByb2NlZHVyYWwgbGFuZ3VhZ2VzIik7 CiAJZ2V0UHJvY0xhbmdzKGZvdXQsICZudW1Qcm9jTGFuZ3MpOwogCi0JaWYgKGdfdmVyYm9z ZSkKLQkJd3JpdGVfbXNnKE5VTEwsICJyZWFkaW5nIHVzZXItZGVmaW5lZCBhZ2dyZWdhdGUg ZnVuY3Rpb25zXG4iKTsKKwlwZ19sb2dfaW5mbygicmVhZGluZyB1c2VyLWRlZmluZWQgYWdn cmVnYXRlIGZ1bmN0aW9ucyIpOwogCWdldEFnZ3JlZ2F0ZXMoZm91dCwgJm51bUFnZ3JlZ2F0 ZXMpOwogCi0JaWYgKGdfdmVyYm9zZSkKLQkJd3JpdGVfbXNnKE5VTEwsICJyZWFkaW5nIHVz ZXItZGVmaW5lZCBvcGVyYXRvcnNcbiIpOworCXBnX2xvZ19pbmZvKCJyZWFkaW5nIHVzZXIt ZGVmaW5lZCBvcGVyYXRvcnMiKTsKIAlvcHJpbmZvID0gZ2V0T3BlcmF0b3JzKGZvdXQsICZu dW1PcGVyYXRvcnMpOwogCW9wcmluZm9pbmRleCA9IGJ1aWxkSW5kZXhBcnJheShvcHJpbmZv LCBudW1PcGVyYXRvcnMsIHNpemVvZihPcHJJbmZvKSk7CiAKLQlpZiAoZ192ZXJib3NlKQot CQl3cml0ZV9tc2coTlVMTCwgInJlYWRpbmcgdXNlci1kZWZpbmVkIGFjY2VzcyBtZXRob2Rz XG4iKTsKKwlwZ19sb2dfaW5mbygicmVhZGluZyB1c2VyLWRlZmluZWQgYWNjZXNzIG1ldGhv ZHMiKTsKIAlnZXRBY2Nlc3NNZXRob2RzKGZvdXQsICZudW1BY2Nlc3NNZXRob2RzKTsKIAot CWlmIChnX3ZlcmJvc2UpCi0JCXdyaXRlX21zZyhOVUxMLCAicmVhZGluZyB1c2VyLWRlZmlu ZWQgb3BlcmF0b3IgY2xhc3Nlc1xuIik7CisJcGdfbG9nX2luZm8oInJlYWRpbmcgdXNlci1k ZWZpbmVkIG9wZXJhdG9yIGNsYXNzZXMiKTsKIAlnZXRPcGNsYXNzZXMoZm91dCwgJm51bU9w Y2xhc3Nlcyk7CiAKLQlpZiAoZ192ZXJib3NlKQotCQl3cml0ZV9tc2coTlVMTCwgInJlYWRp bmcgdXNlci1kZWZpbmVkIG9wZXJhdG9yIGZhbWlsaWVzXG4iKTsKKwlwZ19sb2dfaW5mbygi cmVhZGluZyB1c2VyLWRlZmluZWQgb3BlcmF0b3IgZmFtaWxpZXMiKTsKIAlnZXRPcGZhbWls aWVzKGZvdXQsICZudW1PcGZhbWlsaWVzKTsKIAotCWlmIChnX3ZlcmJvc2UpCi0JCXdyaXRl X21zZyhOVUxMLCAicmVhZGluZyB1c2VyLWRlZmluZWQgdGV4dCBzZWFyY2ggcGFyc2Vyc1xu Iik7CisJcGdfbG9nX2luZm8oInJlYWRpbmcgdXNlci1kZWZpbmVkIHRleHQgc2VhcmNoIHBh cnNlcnMiKTsKIAlnZXRUU1BhcnNlcnMoZm91dCwgJm51bVRTUGFyc2Vycyk7CiAKLQlpZiAo Z192ZXJib3NlKQotCQl3cml0ZV9tc2coTlVMTCwgInJlYWRpbmcgdXNlci1kZWZpbmVkIHRl eHQgc2VhcmNoIHRlbXBsYXRlc1xuIik7CisJcGdfbG9nX2luZm8oInJlYWRpbmcgdXNlci1k ZWZpbmVkIHRleHQgc2VhcmNoIHRlbXBsYXRlcyIpOwogCWdldFRTVGVtcGxhdGVzKGZvdXQs ICZudW1UU1RlbXBsYXRlcyk7CiAKLQlpZiAoZ192ZXJib3NlKQotCQl3cml0ZV9tc2coTlVM TCwgInJlYWRpbmcgdXNlci1kZWZpbmVkIHRleHQgc2VhcmNoIGRpY3Rpb25hcmllc1xuIik7 CisJcGdfbG9nX2luZm8oInJlYWRpbmcgdXNlci1kZWZpbmVkIHRleHQgc2VhcmNoIGRpY3Rp b25hcmllcyIpOwogCWdldFRTRGljdGlvbmFyaWVzKGZvdXQsICZudW1UU0RpY3RzKTsKIAot CWlmIChnX3ZlcmJvc2UpCi0JCXdyaXRlX21zZyhOVUxMLCAicmVhZGluZyB1c2VyLWRlZmlu ZWQgdGV4dCBzZWFyY2ggY29uZmlndXJhdGlvbnNcbiIpOworCXBnX2xvZ19pbmZvKCJyZWFk aW5nIHVzZXItZGVmaW5lZCB0ZXh0IHNlYXJjaCBjb25maWd1cmF0aW9ucyIpOwogCWdldFRT Q29uZmlndXJhdGlvbnMoZm91dCwgJm51bVRTQ29uZmlncyk7CiAKLQlpZiAoZ192ZXJib3Nl KQotCQl3cml0ZV9tc2coTlVMTCwgInJlYWRpbmcgdXNlci1kZWZpbmVkIGZvcmVpZ24tZGF0 YSB3cmFwcGVyc1xuIik7CisJcGdfbG9nX2luZm8oInJlYWRpbmcgdXNlci1kZWZpbmVkIGZv cmVpZ24tZGF0YSB3cmFwcGVycyIpOwogCWdldEZvcmVpZ25EYXRhV3JhcHBlcnMoZm91dCwg Jm51bUZvcmVpZ25EYXRhV3JhcHBlcnMpOwogCi0JaWYgKGdfdmVyYm9zZSkKLQkJd3JpdGVf bXNnKE5VTEwsICJyZWFkaW5nIHVzZXItZGVmaW5lZCBmb3JlaWduIHNlcnZlcnNcbiIpOwor CXBnX2xvZ19pbmZvKCJyZWFkaW5nIHVzZXItZGVmaW5lZCBmb3JlaWduIHNlcnZlcnMiKTsK IAlnZXRGb3JlaWduU2VydmVycyhmb3V0LCAmbnVtRm9yZWlnblNlcnZlcnMpOwogCi0JaWYg KGdfdmVyYm9zZSkKLQkJd3JpdGVfbXNnKE5VTEwsICJyZWFkaW5nIGRlZmF1bHQgcHJpdmls ZWdlc1xuIik7CisJcGdfbG9nX2luZm8oInJlYWRpbmcgZGVmYXVsdCBwcml2aWxlZ2VzIik7 CiAJZ2V0RGVmYXVsdEFDTHMoZm91dCwgJm51bURlZmF1bHRBQ0xzKTsKIAotCWlmIChnX3Zl cmJvc2UpCi0JCXdyaXRlX21zZyhOVUxMLCAicmVhZGluZyB1c2VyLWRlZmluZWQgY29sbGF0 aW9uc1xuIik7CisJcGdfbG9nX2luZm8oInJlYWRpbmcgdXNlci1kZWZpbmVkIGNvbGxhdGlv bnMiKTsKIAljb2xsaW5mbyA9IGdldENvbGxhdGlvbnMoZm91dCwgJm51bUNvbGxhdGlvbnMp OwogCWNvbGxpbmZvaW5kZXggPSBidWlsZEluZGV4QXJyYXkoY29sbGluZm8sIG51bUNvbGxh dGlvbnMsIHNpemVvZihDb2xsSW5mbykpOwogCi0JaWYgKGdfdmVyYm9zZSkKLQkJd3JpdGVf bXNnKE5VTEwsICJyZWFkaW5nIHVzZXItZGVmaW5lZCBjb252ZXJzaW9uc1xuIik7CisJcGdf bG9nX2luZm8oInJlYWRpbmcgdXNlci1kZWZpbmVkIGNvbnZlcnNpb25zIik7CiAJZ2V0Q29u dmVyc2lvbnMoZm91dCwgJm51bUNvbnZlcnNpb25zKTsKIAotCWlmIChnX3ZlcmJvc2UpCi0J CXdyaXRlX21zZyhOVUxMLCAicmVhZGluZyB0eXBlIGNhc3RzXG4iKTsKKwlwZ19sb2dfaW5m bygicmVhZGluZyB0eXBlIGNhc3RzIik7CiAJZ2V0Q2FzdHMoZm91dCwgJm51bUNhc3RzKTsK IAotCWlmIChnX3ZlcmJvc2UpCi0JCXdyaXRlX21zZyhOVUxMLCAicmVhZGluZyB0cmFuc2Zv cm1zXG4iKTsKKwlwZ19sb2dfaW5mbygicmVhZGluZyB0cmFuc2Zvcm1zIik7CiAJZ2V0VHJh bnNmb3Jtcyhmb3V0LCAmbnVtVHJhbnNmb3Jtcyk7CiAKLQlpZiAoZ192ZXJib3NlKQotCQl3 cml0ZV9tc2coTlVMTCwgInJlYWRpbmcgdGFibGUgaW5oZXJpdGFuY2UgaW5mb3JtYXRpb25c biIpOworCXBnX2xvZ19pbmZvKCJyZWFkaW5nIHRhYmxlIGluaGVyaXRhbmNlIGluZm9ybWF0 aW9uIik7CiAJaW5oaW5mbyA9IGdldEluaGVyaXRzKGZvdXQsICZudW1Jbmhlcml0cyk7CiAK LQlpZiAoZ192ZXJib3NlKQotCQl3cml0ZV9tc2coTlVMTCwgInJlYWRpbmcgZXZlbnQgdHJp Z2dlcnNcbiIpOworCXBnX2xvZ19pbmZvKCJyZWFkaW5nIGV2ZW50IHRyaWdnZXJzIik7CiAJ Z2V0RXZlbnRUcmlnZ2Vycyhmb3V0LCAmbnVtRXZlbnRUcmlnZ2Vycyk7CiAKIAkvKiBJZGVu dGlmeSBleHRlbnNpb24gY29uZmlndXJhdGlvbiB0YWJsZXMgdGhhdCBzaG91bGQgYmUgZHVt cGVkICovCi0JaWYgKGdfdmVyYm9zZSkKLQkJd3JpdGVfbXNnKE5VTEwsICJmaW5kaW5nIGV4 dGVuc2lvbiB0YWJsZXNcbiIpOworCXBnX2xvZ19pbmZvKCJmaW5kaW5nIGV4dGVuc2lvbiB0 YWJsZXMiKTsKIAlwcm9jZXNzRXh0ZW5zaW9uVGFibGVzKGZvdXQsIGV4dGluZm8sIG51bUV4 dGVuc2lvbnMpOwogCiAJLyogTGluayB0YWJsZXMgdG8gcGFyZW50cywgbWFyayBwYXJlbnRz IG9mIHRhcmdldCB0YWJsZXMgaW50ZXJlc3RpbmcgKi8KLQlpZiAoZ192ZXJib3NlKQotCQl3 cml0ZV9tc2coTlVMTCwgImZpbmRpbmcgaW5oZXJpdGFuY2UgcmVsYXRpb25zaGlwc1xuIik7 CisJcGdfbG9nX2luZm8oImZpbmRpbmcgaW5oZXJpdGFuY2UgcmVsYXRpb25zaGlwcyIpOwog CWZsYWdJbmhUYWJsZXMoZm91dCwgdGJsaW5mbywgbnVtVGFibGVzLCBpbmhpbmZvLCBudW1J bmhlcml0cyk7CiAKLQlpZiAoZ192ZXJib3NlKQotCQl3cml0ZV9tc2coTlVMTCwgInJlYWRp bmcgY29sdW1uIGluZm8gZm9yIGludGVyZXN0aW5nIHRhYmxlc1xuIik7CisJcGdfbG9nX2lu Zm8oInJlYWRpbmcgY29sdW1uIGluZm8gZm9yIGludGVyZXN0aW5nIHRhYmxlcyIpOwogCWdl dFRhYmxlQXR0cnMoZm91dCwgdGJsaW5mbywgbnVtVGFibGVzKTsKIAotCWlmIChnX3ZlcmJv c2UpCi0JCXdyaXRlX21zZyhOVUxMLCAiZmxhZ2dpbmcgaW5oZXJpdGVkIGNvbHVtbnMgaW4g c3VidGFibGVzXG4iKTsKKwlwZ19sb2dfaW5mbygiZmxhZ2dpbmcgaW5oZXJpdGVkIGNvbHVt bnMgaW4gc3VidGFibGVzIik7CiAJZmxhZ0luaEF0dHJzKGZvdXQtPmRvcHQsIHRibGluZm8s IG51bVRhYmxlcyk7CiAKLQlpZiAoZ192ZXJib3NlKQotCQl3cml0ZV9tc2coTlVMTCwgInJl YWRpbmcgaW5kZXhlc1xuIik7CisJcGdfbG9nX2luZm8oInJlYWRpbmcgaW5kZXhlcyIpOwog CWdldEluZGV4ZXMoZm91dCwgdGJsaW5mbywgbnVtVGFibGVzKTsKIAotCWlmIChnX3ZlcmJv c2UpCi0JCXdyaXRlX21zZyhOVUxMLCAiZmxhZ2dpbmcgaW5kZXhlcyBpbiBwYXJ0aXRpb25l ZCB0YWJsZXNcbiIpOworCXBnX2xvZ19pbmZvKCJmbGFnZ2luZyBpbmRleGVzIGluIHBhcnRp dGlvbmVkIHRhYmxlcyIpOwogCWZsYWdJbmhJbmRleGVzKGZvdXQsIHRibGluZm8sIG51bVRh Ymxlcyk7CiAKLQlpZiAoZ192ZXJib3NlKQotCQl3cml0ZV9tc2coTlVMTCwgInJlYWRpbmcg ZXh0ZW5kZWQgc3RhdGlzdGljc1xuIik7CisJcGdfbG9nX2luZm8oInJlYWRpbmcgZXh0ZW5k ZWQgc3RhdGlzdGljcyIpOwogCWdldEV4dGVuZGVkU3RhdGlzdGljcyhmb3V0KTsKIAotCWlm IChnX3ZlcmJvc2UpCi0JCXdyaXRlX21zZyhOVUxMLCAicmVhZGluZyBjb25zdHJhaW50c1xu Iik7CisJcGdfbG9nX2luZm8oInJlYWRpbmcgY29uc3RyYWludHMiKTsKIAlnZXRDb25zdHJh aW50cyhmb3V0LCB0YmxpbmZvLCBudW1UYWJsZXMpOwogCi0JaWYgKGdfdmVyYm9zZSkKLQkJ d3JpdGVfbXNnKE5VTEwsICJyZWFkaW5nIHRyaWdnZXJzXG4iKTsKKwlwZ19sb2dfaW5mbygi cmVhZGluZyB0cmlnZ2VycyIpOwogCWdldFRyaWdnZXJzKGZvdXQsIHRibGluZm8sIG51bVRh Ymxlcyk7CiAKLQlpZiAoZ192ZXJib3NlKQotCQl3cml0ZV9tc2coTlVMTCwgInJlYWRpbmcg cmV3cml0ZSBydWxlc1xuIik7CisJcGdfbG9nX2luZm8oInJlYWRpbmcgcmV3cml0ZSBydWxl cyIpOwogCWdldFJ1bGVzKGZvdXQsICZudW1SdWxlcyk7CiAKLQlpZiAoZ192ZXJib3NlKQot CQl3cml0ZV9tc2coTlVMTCwgInJlYWRpbmcgcG9saWNpZXNcbiIpOworCXBnX2xvZ19pbmZv KCJyZWFkaW5nIHBvbGljaWVzIik7CiAJZ2V0UG9saWNpZXMoZm91dCwgdGJsaW5mbywgbnVt VGFibGVzKTsKIAotCWlmIChnX3ZlcmJvc2UpCi0JCXdyaXRlX21zZyhOVUxMLCAicmVhZGlu ZyBwdWJsaWNhdGlvbnNcbiIpOworCXBnX2xvZ19pbmZvKCJyZWFkaW5nIHB1YmxpY2F0aW9u cyIpOwogCWdldFB1YmxpY2F0aW9ucyhmb3V0KTsKIAotCWlmIChnX3ZlcmJvc2UpCi0JCXdy aXRlX21zZyhOVUxMLCAicmVhZGluZyBwdWJsaWNhdGlvbiBtZW1iZXJzaGlwXG4iKTsKKwlw Z19sb2dfaW5mbygicmVhZGluZyBwdWJsaWNhdGlvbiBtZW1iZXJzaGlwIik7CiAJZ2V0UHVi bGljYXRpb25UYWJsZXMoZm91dCwgdGJsaW5mbywgbnVtVGFibGVzKTsKIAotCWlmIChnX3Zl cmJvc2UpCi0JCXdyaXRlX21zZyhOVUxMLCAicmVhZGluZyBzdWJzY3JpcHRpb25zXG4iKTsK KwlwZ19sb2dfaW5mbygicmVhZGluZyBzdWJzY3JpcHRpb25zIik7CiAJZ2V0U3Vic2NyaXB0 aW9ucyhmb3V0KTsKIAogCSpudW1UYWJsZXNQdHIgPSBudW1UYWJsZXM7CkBAIC0xMDU5LDcg KzEwMjEsNyBAQCBmaW5kUGFyZW50c0J5T2lkKFRhYmxlSW5mbyAqc2VsZiwKIAkJCQlwYXJl bnQgPSBmaW5kVGFibGVCeU9pZChpbmhpbmZvW2ldLmluaHBhcmVudCk7CiAJCQkJaWYgKHBh cmVudCA9PSBOVUxMKQogCQkJCXsKLQkJCQkJd3JpdGVfbXNnKE5VTEwsICJmYWlsZWQgc2Fu aXR5IGNoZWNrLCBwYXJlbnQgT0lEICV1IG9mIHRhYmxlIFwiJXNcIiAoT0lEICV1KSBub3Qg Zm91bmRcbiIsCisJCQkJCXBnX2xvZ19lcnJvcigiZmFpbGVkIHNhbml0eSBjaGVjaywgcGFy ZW50IE9JRCAldSBvZiB0YWJsZSBcIiVzXCIgKE9JRCAldSkgbm90IGZvdW5kIiwKIAkJCQkJ CQkgIGluaGluZm9baV0uaW5ocGFyZW50LAogCQkJCQkJCSAgc2VsZi0+ZG9iai5uYW1lLAog CQkJCQkJCSAgb2lkKTsKQEAgLTExMDEsNyArMTA2Myw3IEBAIHBhcnNlT2lkQXJyYXkoY29u c3QgY2hhciAqc3RyLCBPaWQgKmFycmF5LCBpbnQgYXJyYXlzaXplKQogCQkJewogCQkJCWlm IChhcmdOdW0gPj0gYXJyYXlzaXplKQogCQkJCXsKLQkJCQkJd3JpdGVfbXNnKE5VTEwsICJj b3VsZCBub3QgcGFyc2UgbnVtZXJpYyBhcnJheSBcIiVzXCI6IHRvbyBtYW55IG51bWJlcnNc biIsIHN0cik7CisJCQkJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IHBhcnNlIG51bWVyaWMg YXJyYXkgXCIlc1wiOiB0b28gbWFueSBudW1iZXJzIiwgc3RyKTsKIAkJCQkJZXhpdF9uaWNl bHkoMSk7CiAJCQkJfQogCQkJCXRlbXBbal0gPSAnXDAnOwpAQCAtMTExNiw3ICsxMDc4LDcg QEAgcGFyc2VPaWRBcnJheShjb25zdCBjaGFyICpzdHIsIE9pZCAqYXJyYXksIGludCBhcnJh eXNpemUpCiAJCQlpZiAoIShpc2RpZ2l0KCh1bnNpZ25lZCBjaGFyKSBzKSB8fCBzID09ICct JykgfHwKIAkJCQlqID49IHNpemVvZih0ZW1wKSAtIDEpCiAJCQl7Ci0JCQkJd3JpdGVfbXNn KE5VTEwsICJjb3VsZCBub3QgcGFyc2UgbnVtZXJpYyBhcnJheSBcIiVzXCI6IGludmFsaWQg Y2hhcmFjdGVyIGluIG51bWJlclxuIiwgc3RyKTsKKwkJCQlwZ19sb2dfZXJyb3IoImNvdWxk IG5vdCBwYXJzZSBudW1lcmljIGFycmF5IFwiJXNcIjogaW52YWxpZCBjaGFyYWN0ZXIgaW4g bnVtYmVyIiwgc3RyKTsKIAkJCQlleGl0X25pY2VseSgxKTsKIAkJCX0KIAkJCXRlbXBbaisr XSA9IHM7CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvY29tcHJlc3NfaW8uYyBiL3Ny Yy9iaW4vcGdfZHVtcC9jb21wcmVzc19pby5jCmluZGV4IGE5NmRhMTVkYzEuLjk3NjEwNjEx ZTAgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9jb21wcmVzc19pby5jCisrKyBiL3Ny Yy9iaW4vcGdfZHVtcC9jb21wcmVzc19pby5jCkBAIC03NCw5ICs3NCw2IEBAIHN0cnVjdCBD b21wcmVzc29yU3RhdGUKICNlbmRpZgogfTsKIAotLyogdHJhbnNsYXRvcjogdGhpcyBpcyBh IG1vZHVsZSBuYW1lICovCi1zdGF0aWMgY29uc3QgY2hhciAqbW9kdWxlbmFtZSA9IGdldHRl eHRfbm9vcCgiY29tcHJlc3NfaW8iKTsKLQogc3RhdGljIHZvaWQgUGFyc2VDb21wcmVzc2lv bk9wdGlvbihpbnQgY29tcHJlc3Npb24sIENvbXByZXNzaW9uQWxnb3JpdGhtICphbGcsCiAJ CQkJCSAgIGludCAqbGV2ZWwpOwogCkBAIC0xMTEsOCArMTA4LDcgQEAgUGFyc2VDb21wcmVz c2lvbk9wdGlvbihpbnQgY29tcHJlc3Npb24sIENvbXByZXNzaW9uQWxnb3JpdGhtICphbGcs IGludCAqbGV2ZWwpCiAJCSphbGcgPSBDT01QUl9BTEdfTk9ORTsKIAllbHNlCiAJewotCQll eGl0X2hvcnJpYmx5KG1vZHVsZW5hbWUsICJpbnZhbGlkIGNvbXByZXNzaW9uIGNvZGU6ICVk XG4iLAotCQkJCQkgIGNvbXByZXNzaW9uKTsKKwkJZmF0YWwoImludmFsaWQgY29tcHJlc3Np b24gY29kZTogJWQiLCBjb21wcmVzc2lvbik7CiAJCSphbGcgPSBDT01QUl9BTEdfTk9ORTsJ Lyoga2VlcCBjb21waWxlciBxdWlldCAqLwogCX0KIApAQCAtMTM1LDcgKzEzMSw3IEBAIEFs bG9jYXRlQ29tcHJlc3NvcihpbnQgY29tcHJlc3Npb24sIFdyaXRlRnVuYyB3cml0ZUYpCiAK ICNpZm5kZWYgSEFWRV9MSUJaCiAJaWYgKGFsZyA9PSBDT01QUl9BTEdfTElCWikKLQkJZXhp dF9ob3JyaWJseShtb2R1bGVuYW1lLCAibm90IGJ1aWx0IHdpdGggemxpYiBzdXBwb3J0XG4i KTsKKwkJZmF0YWwoIm5vdCBidWlsdCB3aXRoIHpsaWIgc3VwcG9ydCIpOwogI2VuZGlmCiAK IAljcyA9IChDb21wcmVzc29yU3RhdGUgKikgcGdfbWFsbG9jMChzaXplb2YoQ29tcHJlc3Nv clN0YXRlKSk7CkBAIC0xNzEsNyArMTY3LDcgQEAgUmVhZERhdGFGcm9tQXJjaGl2ZShBcmNo aXZlSGFuZGxlICpBSCwgaW50IGNvbXByZXNzaW9uLCBSZWFkRnVuYyByZWFkRikKICNpZmRl ZiBIQVZFX0xJQloKIAkJUmVhZERhdGFGcm9tQXJjaGl2ZVpsaWIoQUgsIHJlYWRGKTsKICNl bHNlCi0JCWV4aXRfaG9ycmlibHkobW9kdWxlbmFtZSwgIm5vdCBidWlsdCB3aXRoIHpsaWIg c3VwcG9ydFxuIik7CisJCWZhdGFsKCJub3QgYnVpbHQgd2l0aCB6bGliIHN1cHBvcnQiKTsK ICNlbmRpZgogCX0KIH0KQEAgLTE4OSw3ICsxODUsNyBAQCBXcml0ZURhdGFUb0FyY2hpdmUo QXJjaGl2ZUhhbmRsZSAqQUgsIENvbXByZXNzb3JTdGF0ZSAqY3MsCiAjaWZkZWYgSEFWRV9M SUJaCiAJCQlXcml0ZURhdGFUb0FyY2hpdmVabGliKEFILCBjcywgZGF0YSwgZExlbik7CiAj ZWxzZQotCQkJZXhpdF9ob3JyaWJseShtb2R1bGVuYW1lLCAibm90IGJ1aWx0IHdpdGggemxp YiBzdXBwb3J0XG4iKTsKKwkJCWZhdGFsKCJub3QgYnVpbHQgd2l0aCB6bGliIHN1cHBvcnQi KTsKICNlbmRpZgogCQkJYnJlYWs7CiAJCWNhc2UgQ09NUFJfQUxHX05PTkU6CkBAIC0yMzgs OCArMjM0LDcgQEAgSW5pdENvbXByZXNzb3JabGliKENvbXByZXNzb3JTdGF0ZSAqY3MsIGlu dCBsZXZlbCkKIAljcy0+emxpYk91dFNpemUgPSBaTElCX09VVF9TSVpFOwogCiAJaWYgKGRl ZmxhdGVJbml0KHpwLCBsZXZlbCkgIT0gWl9PSykKLQkJZXhpdF9ob3JyaWJseShtb2R1bGVu YW1lLAotCQkJCQkgICJjb3VsZCBub3QgaW5pdGlhbGl6ZSBjb21wcmVzc2lvbiBsaWJyYXJ5 OiAlc1xuIiwKKwkJZmF0YWwoImNvdWxkIG5vdCBpbml0aWFsaXplIGNvbXByZXNzaW9uIGxp YnJhcnk6ICVzIiwKIAkJCQkJICB6cC0+bXNnKTsKIAogCS8qIEp1c3QgYmUgcGFyYW5vaWQg LSBtYXliZSBFbmQgaXMgY2FsbGVkIGFmdGVyIFN0YXJ0LCB3aXRoIG5vIFdyaXRlICovCkBA IC0yNTksOCArMjU0LDcgQEAgRW5kQ29tcHJlc3NvclpsaWIoQXJjaGl2ZUhhbmRsZSAqQUgs IENvbXByZXNzb3JTdGF0ZSAqY3MpCiAJRGVmbGF0ZUNvbXByZXNzb3JabGliKEFILCBjcywg dHJ1ZSk7CiAKIAlpZiAoZGVmbGF0ZUVuZCh6cCkgIT0gWl9PSykKLQkJZXhpdF9ob3JyaWJs eShtb2R1bGVuYW1lLAotCQkJCQkgICJjb3VsZCBub3QgY2xvc2UgY29tcHJlc3Npb24gc3Ry ZWFtOiAlc1xuIiwgenAtPm1zZyk7CisJCWZhdGFsKCJjb3VsZCBub3QgY2xvc2UgY29tcHJl c3Npb24gc3RyZWFtOiAlcyIsIHpwLT5tc2cpOwogCiAJZnJlZShjcy0+emxpYk91dCk7CiAJ ZnJlZShjcy0+enApOwpAQCAtMjc3LDggKzI3MSw3IEBAIERlZmxhdGVDb21wcmVzc29yWmxp YihBcmNoaXZlSGFuZGxlICpBSCwgQ29tcHJlc3NvclN0YXRlICpjcywgYm9vbCBmbHVzaCkK IAl7CiAJCXJlcyA9IGRlZmxhdGUoenAsIGZsdXNoID8gWl9GSU5JU0ggOiBaX05PX0ZMVVNI KTsKIAkJaWYgKHJlcyA9PSBaX1NUUkVBTV9FUlJPUikKLQkJCWV4aXRfaG9ycmlibHkobW9k dWxlbmFtZSwKLQkJCQkJCSAgImNvdWxkIG5vdCBjb21wcmVzcyBkYXRhOiAlc1xuIiwgenAt Pm1zZyk7CisJCQlmYXRhbCgiY291bGQgbm90IGNvbXByZXNzIGRhdGE6ICVzIiwgenAtPm1z Zyk7CiAJCWlmICgoZmx1c2ggJiYgKHpwLT5hdmFpbF9vdXQgPCBjcy0+emxpYk91dFNpemUp KQogCQkJfHwgKHpwLT5hdmFpbF9vdXQgPT0gMCkKIAkJCXx8ICh6cC0+YXZhaWxfaW4gIT0g MCkKQEAgLTM0MCw4ICszMzMsNyBAQCBSZWFkRGF0YUZyb21BcmNoaXZlWmxpYihBcmNoaXZl SGFuZGxlICpBSCwgUmVhZEZ1bmMgcmVhZEYpCiAJb3V0ID0gcGdfbWFsbG9jKFpMSUJfT1VU X1NJWkUgKyAxKTsKIAogCWlmIChpbmZsYXRlSW5pdCh6cCkgIT0gWl9PSykKLQkJZXhpdF9o b3JyaWJseShtb2R1bGVuYW1lLAotCQkJCQkgICJjb3VsZCBub3QgaW5pdGlhbGl6ZSBjb21w cmVzc2lvbiBsaWJyYXJ5OiAlc1xuIiwKKwkJZmF0YWwoImNvdWxkIG5vdCBpbml0aWFsaXpl IGNvbXByZXNzaW9uIGxpYnJhcnk6ICVzIiwKIAkJCQkJICB6cC0+bXNnKTsKIAogCS8qIG5v IG1pbmltYWwgY2h1bmsgc2l6ZSBmb3IgemxpYiAqLwpAQCAtMzU3LDggKzM0OSw3IEBAIFJl YWREYXRhRnJvbUFyY2hpdmVabGliKEFyY2hpdmVIYW5kbGUgKkFILCBSZWFkRnVuYyByZWFk RikKIAogCQkJcmVzID0gaW5mbGF0ZSh6cCwgMCk7CiAJCQlpZiAocmVzICE9IFpfT0sgJiYg cmVzICE9IFpfU1RSRUFNX0VORCkKLQkJCQlleGl0X2hvcnJpYmx5KG1vZHVsZW5hbWUsCi0J CQkJCQkJICAiY291bGQgbm90IHVuY29tcHJlc3MgZGF0YTogJXNcbiIsIHpwLT5tc2cpOwor CQkJCWZhdGFsKCJjb3VsZCBub3QgdW5jb21wcmVzcyBkYXRhOiAlcyIsIHpwLT5tc2cpOwog CiAJCQlvdXRbWkxJQl9PVVRfU0laRSAtIHpwLT5hdmFpbF9vdXRdID0gJ1wwJzsKIAkJCWFo d3JpdGUob3V0LCAxLCBaTElCX09VVF9TSVpFIC0genAtPmF2YWlsX291dCwgQUgpOwpAQCAt MzczLDE2ICszNjQsMTQgQEAgUmVhZERhdGFGcm9tQXJjaGl2ZVpsaWIoQXJjaGl2ZUhhbmRs ZSAqQUgsIFJlYWRGdW5jIHJlYWRGKQogCQl6cC0+YXZhaWxfb3V0ID0gWkxJQl9PVVRfU0la RTsKIAkJcmVzID0gaW5mbGF0ZSh6cCwgMCk7CiAJCWlmIChyZXMgIT0gWl9PSyAmJiByZXMg IT0gWl9TVFJFQU1fRU5EKQotCQkJZXhpdF9ob3JyaWJseShtb2R1bGVuYW1lLAotCQkJCQkJ ICAiY291bGQgbm90IHVuY29tcHJlc3MgZGF0YTogJXNcbiIsIHpwLT5tc2cpOworCQkJZmF0 YWwoImNvdWxkIG5vdCB1bmNvbXByZXNzIGRhdGE6ICVzIiwgenAtPm1zZyk7CiAKIAkJb3V0 W1pMSUJfT1VUX1NJWkUgLSB6cC0+YXZhaWxfb3V0XSA9ICdcMCc7CiAJCWFod3JpdGUob3V0 LCAxLCBaTElCX09VVF9TSVpFIC0genAtPmF2YWlsX291dCwgQUgpOwogCX0KIAogCWlmIChp bmZsYXRlRW5kKHpwKSAhPSBaX09LKQotCQlleGl0X2hvcnJpYmx5KG1vZHVsZW5hbWUsCi0J CQkJCSAgImNvdWxkIG5vdCBjbG9zZSBjb21wcmVzc2lvbiBsaWJyYXJ5OiAlc1xuIiwgenAt Pm1zZyk7CisJCWZhdGFsKCJjb3VsZCBub3QgY2xvc2UgY29tcHJlc3Npb24gbGlicmFyeTog JXMiLCB6cC0+bXNnKTsKIAogCWZyZWUoYnVmKTsKIAlmcmVlKG91dCk7CkBAIC01MTYsNyAr NTA1LDcgQEAgY2ZvcGVuX3dyaXRlKGNvbnN0IGNoYXIgKnBhdGgsIGNvbnN0IGNoYXIgKm1v ZGUsIGludCBjb21wcmVzc2lvbikKIAkJZnAgPSBjZm9wZW4oZm5hbWUsIG1vZGUsIGNvbXBy ZXNzaW9uKTsKIAkJZnJlZV9rZWVwX2Vycm5vKGZuYW1lKTsKICNlbHNlCi0JCWV4aXRfaG9y cmlibHkobW9kdWxlbmFtZSwgIm5vdCBidWlsdCB3aXRoIHpsaWIgc3VwcG9ydFxuIik7CisJ CWZhdGFsKCJub3QgYnVpbHQgd2l0aCB6bGliIHN1cHBvcnQiKTsKIAkJZnAgPSBOVUxMOwkJ CQkvKiBrZWVwIGNvbXBpbGVyIHF1aWV0ICovCiAjZW5kaWYKIAl9CkBAIC01NTksNyArNTQ4 LDcgQEAgY2ZvcGVuKGNvbnN0IGNoYXIgKnBhdGgsIGNvbnN0IGNoYXIgKm1vZGUsIGludCBj b21wcmVzc2lvbikKIAkJCWZwID0gTlVMTDsKIAkJfQogI2Vsc2UKLQkJZXhpdF9ob3JyaWJs eShtb2R1bGVuYW1lLCAibm90IGJ1aWx0IHdpdGggemxpYiBzdXBwb3J0XG4iKTsKKwkJZmF0 YWwoIm5vdCBidWlsdCB3aXRoIHpsaWIgc3VwcG9ydCIpOwogI2VuZGlmCiAJfQogCWVsc2UK QEAgLTU5Niw4ICs1ODUsNyBAQCBjZnJlYWQodm9pZCAqcHRyLCBpbnQgc2l6ZSwgY2ZwICpm cCkKIAkJCWludAkJCWVycm51bTsKIAkJCWNvbnN0IGNoYXIgKmVycm1zZyA9IGd6ZXJyb3Io ZnAtPmNvbXByZXNzZWRmcCwgJmVycm51bSk7CiAKLQkJCWV4aXRfaG9ycmlibHkobW9kdWxl bmFtZSwKLQkJCQkJCSAgImNvdWxkIG5vdCByZWFkIGZyb20gaW5wdXQgZmlsZTogJXNcbiIs CisJCQlmYXRhbCgiY291bGQgbm90IHJlYWQgZnJvbSBpbnB1dCBmaWxlOiAlcyIsCiAJCQkJ CQkgIGVycm51bSA9PSBaX0VSUk5PID8gc3RyZXJyb3IoZXJybm8pIDogZXJybXNnKTsKIAkJ fQogCX0KQEAgLTYzNCwxMSArNjIyLDkgQEAgY2ZnZXRjKGNmcCAqZnApCiAJCWlmIChyZXQg PT0gRU9GKQogCQl7CiAJCQlpZiAoIWd6ZW9mKGZwLT5jb21wcmVzc2VkZnApKQotCQkJCWV4 aXRfaG9ycmlibHkobW9kdWxlbmFtZSwKLQkJCQkJCQkgICJjb3VsZCBub3QgcmVhZCBmcm9t IGlucHV0IGZpbGU6ICVzXG4iLCBzdHJlcnJvcihlcnJubykpOworCQkJCWZhdGFsKCJjb3Vs ZCBub3QgcmVhZCBmcm9tIGlucHV0IGZpbGU6ICVzIiwgc3RyZXJyb3IoZXJybm8pKTsKIAkJ CWVsc2UKLQkJCQlleGl0X2hvcnJpYmx5KG1vZHVsZW5hbWUsCi0JCQkJCQkJICAiY291bGQg bm90IHJlYWQgZnJvbSBpbnB1dCBmaWxlOiBlbmQgb2YgZmlsZVxuIik7CisJCQkJZmF0YWwo ImNvdWxkIG5vdCByZWFkIGZyb20gaW5wdXQgZmlsZTogZW5kIG9mIGZpbGUiKTsKIAkJfQog CX0KIAllbHNlCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvbmxzLm1rIGIvc3JjL2Jp bi9wZ19kdW1wL25scy5tawppbmRleCAzNzIzNDcxN2NiLi4zNzg2MzVmYmNjIDEwMDY0NAot LS0gYS9zcmMvYmluL3BnX2R1bXAvbmxzLm1rCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9ubHMu bWsKQEAgLTEsNyArMSw4IEBACiAjIHNyYy9iaW4vcGdfZHVtcC9ubHMubWsKIENBVEFMT0df TkFNRSAgICAgPSBwZ19kdW1wCiBBVkFJTF9MQU5HVUFHRVMgID0gY3MgZGUgZXMgZnIgaGUg aXQgamEga28gcGwgcHRfQlIgcnUgc3YgdHIgemhfQ04KLUdFVFRFWFRfRklMRVMgICAgPSBw Z19iYWNrdXBfYXJjaGl2ZXIuYyBwZ19iYWNrdXBfZGIuYyBwZ19iYWNrdXBfY3VzdG9tLmMg XAorR0VUVEVYVF9GSUxFUyAgICA9ICQoRlJPTlRFTkRfQ09NTU9OX0dFVFRFWFRfRklMRVMp IFwKKyAgICAgICAgICAgICAgICAgICBwZ19iYWNrdXBfYXJjaGl2ZXIuYyBwZ19iYWNrdXBf ZGIuYyBwZ19iYWNrdXBfY3VzdG9tLmMgXAogICAgICAgICAgICAgICAgICAgIHBnX2JhY2t1 cF9udWxsLmMgcGdfYmFja3VwX3Rhci5jIFwKICAgICAgICAgICAgICAgICAgICBwZ19iYWNr dXBfZGlyZWN0b3J5LmMgZHVtcHV0aWxzLmMgY29tcHJlc3NfaW8uYyBcCiAgICAgICAgICAg ICAgICAgICAgcGdfZHVtcC5jIGNvbW1vbi5jIHBnX2R1bXBfc29ydC5jIFwKQEAgLTksMTAg KzEwLDEwIEBAIEdFVFRFWFRfRklMRVMgICAgPSBwZ19iYWNrdXBfYXJjaGl2ZXIuYyBwZ19i YWNrdXBfZGIuYyBwZ19iYWNrdXBfY3VzdG9tLmMgXAogICAgICAgICAgICAgICAgICAgIHBh cmFsbGVsLmMgcGFyYWxsZWwuaCBwZ19iYWNrdXBfdXRpbHMuYyBwZ19iYWNrdXBfdXRpbHMu aCBcCiAgICAgICAgICAgICAgICAgICAgLi4vLi4vY29tbW9uL2V4ZWMuYyAuLi8uLi9jb21t b24vZmVfbWVtdXRpbHMuYyBcCiAgICAgICAgICAgICAgICAgICAgLi4vLi4vY29tbW9uL3dh aXRfZXJyb3IuYwotR0VUVEVYVF9UUklHR0VSUyA9IHdyaXRlX21zZzoyIGV4aXRfaG9ycmli bHk6MiBzaW1wbGVfcHJvbXB0IFwKLSAgICAgICAgICAgICAgICAgICBFeGVjdXRlU3FsQ29t bWFuZDozIGFobG9nOjMgd2Fybl9vcl9leGl0X2hvcnJpYmx5OjMKLUdFVFRFWFRfRkxBR1Mg ID0gXAorR0VUVEVYVF9UUklHR0VSUyA9ICQoRlJPTlRFTkRfQ09NTU9OX0dFVFRFWFRfVFJJ R0dFUlMpIFwKKyAgICAgICAgICAgICAgICAgICBmYXRhbCB3cml0ZV9tc2c6MiBzaW1wbGVf cHJvbXB0IFwKKyAgICAgICAgICAgICAgICAgICBFeGVjdXRlU3FsQ29tbWFuZDozIHdhcm5f b3JfZXhpdF9ob3JyaWJseTozCitHRVRURVhUX0ZMQUdTICAgID0gJChGUk9OVEVORF9DT01N T05fR0VUVEVYVF9GTEFHUykgXAorICAgIGZhdGFsOjE6Yy1mb3JtYXQgXAogICAgIHdyaXRl X21zZzoyOmMtZm9ybWF0IFwKLSAgICBleGl0X2hvcnJpYmx5OjI6Yy1mb3JtYXQgXAotICAg IGFobG9nOjM6Yy1mb3JtYXQgXAogICAgIHdhcm5fb3JfZXhpdF9ob3JyaWJseTozOmMtZm9y bWF0CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGFyYWxsZWwuYyBiL3NyYy9iaW4v cGdfZHVtcC9wYXJhbGxlbC5jCmluZGV4IDM3ZjBkMGQzOWEuLjEyODk4NTFhYjcgMTAwNjQ0 Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wYXJhbGxlbC5jCisrKyBiL3NyYy9iaW4vcGdfZHVt cC9wYXJhbGxlbC5jCkBAIC0xOTcsOCArMTk3LDYgQEAgYm9vbAkJcGFyYWxsZWxfaW5pdF9k b25lID0gZmFsc2U7CiBEV09SRAkJbWFpblRocmVhZElkOwogI2VuZGlmCQkJCQkJCS8qIFdJ TjMyICovCiAKLXN0YXRpYyBjb25zdCBjaGFyICptb2R1bGVuYW1lID0gZ2V0dGV4dF9ub29w KCJwYXJhbGxlbCBhcmNoaXZlciIpOwotCiAvKiBMb2NhbCBmdW5jdGlvbiBwcm90b3R5cGVz ICovCiBzdGF0aWMgUGFyYWxsZWxTbG90ICpHZXRNeVBTbG90KFBhcmFsbGVsU3RhdGUgKnBz dGF0ZSk7CiBzdGF0aWMgdm9pZCBhcmNoaXZlX2Nsb3NlX2Nvbm5lY3Rpb24oaW50IGNvZGUs IHZvaWQgKmFyZyk7CkBAIC00MDYsOCArNDA0LDggQEAgYXJjaGl2ZV9jbG9zZV9jb25uZWN0 aW9uKGludCBjb2RlLCB2b2lkICphcmcpCiAgKiBGb3JjaWJseSBzaHV0IGRvd24gYW55IHJl bWFpbmluZyB3b3JrZXJzLCB3YWl0aW5nIGZvciB0aGVtIHRvIGZpbmlzaC4KICAqCiAgKiBO b3RlIHRoYXQgd2UgZG9uJ3QgZXhwZWN0IHRvIGNvbWUgaGVyZSBkdXJpbmcgbm9ybWFsIGV4 aXQgKHRoZSB3b3JrZXJzCi0gKiBzaG91bGQgYmUgbG9uZyBnb25lLCBhbmQgdGhlIFBhcmFs bGVsU3RhdGUgdG9vKS4gIFdlJ3JlIG9ubHkgaGVyZSBpbiBhbgotICogZXhpdF9ob3JyaWJs eSgpIHNpdHVhdGlvbiwgc28gaW50ZXJ2ZW5pbmcgdG8gY2FuY2VsIGFjdGl2ZSBjb21tYW5k cyBpcworICogc2hvdWxkIGJlIGxvbmcgZ29uZSwgYW5kIHRoZSBQYXJhbGxlbFN0YXRlIHRv bykuICBXZSdyZSBvbmx5IGhlcmUgaW4gYQorICogZmF0YWwoKSBzaXR1YXRpb24sIHNvIGlu dGVydmVuaW5nIHRvIGNhbmNlbCBhY3RpdmUgY29tbWFuZHMgaXMKICAqIGFwcHJvcHJpYXRl LgogICovCiBzdGF0aWMgdm9pZApAQCAtNjk5LDcgKzY5Nyw3IEBAIGNvbnNvbGVIYW5kbGVy KERXT1JEIGR3Q3RybFR5cGUpCiAKIAkJLyoKIAkJICogUmVwb3J0IHdlJ3JlIHF1aXR0aW5n LCB1c2luZyBub3RoaW5nIG1vcmUgY29tcGxpY2F0ZWQgdGhhbgotCQkgKiB3cml0ZSgyKS4g IChXZSBtaWdodCBiZSBhYmxlIHRvIGdldCBhd2F5IHdpdGggdXNpbmcgd3JpdGVfbXNnKCkK KwkJICogd3JpdGUoMikuICAoV2UgbWlnaHQgYmUgYWJsZSB0byBnZXQgYXdheSB3aXRoIHVz aW5nIHBnX2xvZ18qKCkKIAkJICogaGVyZSwgYnV0IHNpbmNlIHdlIHRlcm1pbmF0ZWQgb3Ro ZXIgdGhyZWFkcyB1bmNsZWFubHkgYWJvdmUsIGl0CiAJCSAqIHNlZW1zIGJldHRlciB0byBh c3N1bWUgYXMgbGl0dGxlIGFzIHBvc3NpYmxlLikKIAkJICovCkBAIC05NjksOSArOTY3LDcg QEAgUGFyYWxsZWxCYWNrdXBTdGFydChBcmNoaXZlSGFuZGxlICpBSCkKIAogCQkvKiBDcmVh dGUgY29tbXVuaWNhdGlvbiBwaXBlcyBmb3IgdGhpcyB3b3JrZXIgKi8KIAkJaWYgKHBncGlw ZShwaXBlTVcpIDwgMCB8fCBwZ3BpcGUocGlwZVdNKSA8IDApCi0JCQlleGl0X2hvcnJpYmx5 KG1vZHVsZW5hbWUsCi0JCQkJCQkgICJjb3VsZCBub3QgY3JlYXRlIGNvbW11bmljYXRpb24g Y2hhbm5lbHM6ICVzXG4iLAotCQkJCQkJICBzdHJlcnJvcihlcnJubykpOworCQkJZmF0YWwo ImNvdWxkIG5vdCBjcmVhdGUgY29tbXVuaWNhdGlvbiBjaGFubmVsczogJW0iKTsKIAogCQlw c3RhdGUtPnRlW2ldID0gTlVMTDsJLyoganVzdCBmb3Igc2FmZXR5ICovCiAKQEAgLTEwMzQs OSArMTAzMCw3IEBAIFBhcmFsbGVsQmFja3VwU3RhcnQoQXJjaGl2ZUhhbmRsZSAqQUgpCiAJ CWVsc2UgaWYgKHBpZCA8IDApCiAJCXsKIAkJCS8qIGZvcmsgZmFpbGVkICovCi0JCQlleGl0 X2hvcnJpYmx5KG1vZHVsZW5hbWUsCi0JCQkJCQkgICJjb3VsZCBub3QgY3JlYXRlIHdvcmtl ciBwcm9jZXNzOiAlc1xuIiwKLQkJCQkJCSAgc3RyZXJyb3IoZXJybm8pKTsKKwkJCWZhdGFs KCJjb3VsZCBub3QgY3JlYXRlIHdvcmtlciBwcm9jZXNzOiAlbSIpOwogCQl9CiAKIAkJLyog SW4gTWFzdGVyIGFmdGVyIHN1Y2Nlc3NmdWwgZm9yayAqLwpAQCAtMTE2NSw4ICsxMTU5LDcg QEAgcGFyc2VXb3JrZXJDb21tYW5kKEFyY2hpdmVIYW5kbGUgKkFILCBUb2NFbnRyeSAqKnRl LCBUX0FjdGlvbiAqYWN0LAogCQlBc3NlcnQoKnRlICE9IE5VTEwpOwogCX0KIAllbHNlCi0J CWV4aXRfaG9ycmlibHkobW9kdWxlbmFtZSwKLQkJCQkJICAidW5yZWNvZ25pemVkIGNvbW1h bmQgcmVjZWl2ZWQgZnJvbSBtYXN0ZXI6IFwiJXNcIlxuIiwKKwkJZmF0YWwoInVucmVjb2du aXplZCBjb21tYW5kIHJlY2VpdmVkIGZyb20gbWFzdGVyOiBcIiVzXCIiLAogCQkJCQkgIG1z Zyk7CiB9CiAKQEAgLTEyMDksOCArMTIwMiw3IEBAIHBhcnNlV29ya2VyUmVzcG9uc2UoQXJj aGl2ZUhhbmRsZSAqQUgsIFRvY0VudHJ5ICp0ZSwKIAkJQUgtPnB1YmxpYy5uX2Vycm9ycyAr PSBuX2Vycm9yczsKIAl9CiAJZWxzZQotCQlleGl0X2hvcnJpYmx5KG1vZHVsZW5hbWUsCi0J CQkJCSAgImludmFsaWQgbWVzc2FnZSByZWNlaXZlZCBmcm9tIHdvcmtlcjogXCIlc1wiXG4i LAorCQlmYXRhbCgiaW52YWxpZCBtZXNzYWdlIHJlY2VpdmVkIGZyb20gd29ya2VyOiBcIiVz XCIiLAogCQkJCQkgIG1zZyk7CiAKIAlyZXR1cm4gc3RhdHVzOwpAQCAtMTM0MiwxMSArMTMz NCwxMCBAQCBsb2NrVGFibGVGb3JXb3JrZXIoQXJjaGl2ZUhhbmRsZSAqQUgsIFRvY0VudHJ5 ICp0ZSkKIAlyZXMgPSBQUWV4ZWMoQUgtPmNvbm5lY3Rpb24sIHF1ZXJ5LT5kYXRhKTsKIAog CWlmICghcmVzIHx8IFBRcmVzdWx0U3RhdHVzKHJlcykgIT0gUEdSRVNfQ09NTUFORF9PSykK LQkJZXhpdF9ob3JyaWJseShtb2R1bGVuYW1lLAotCQkJCQkgICJjb3VsZCBub3Qgb2J0YWlu IGxvY2sgb24gcmVsYXRpb24gXCIlc1wiXG4iCi0JCQkJCSAgIlRoaXMgdXN1YWxseSBtZWFu cyB0aGF0IHNvbWVvbmUgcmVxdWVzdGVkIGFuIEFDQ0VTUyBFWENMVVNJVkUgbG9jayAiCi0J CQkJCSAgIm9uIHRoZSB0YWJsZSBhZnRlciB0aGUgcGdfZHVtcCBwYXJlbnQgcHJvY2VzcyBo YWQgZ290dGVuIHRoZSAiCi0JCQkJCSAgImluaXRpYWwgQUNDRVNTIFNIQVJFIGxvY2sgb24g dGhlIHRhYmxlLlxuIiwgcXVhbElkKTsKKwkJZmF0YWwoImNvdWxkIG5vdCBvYnRhaW4gbG9j ayBvbiByZWxhdGlvbiBcIiVzXCJcbiIKKwkJCSAgIlRoaXMgdXN1YWxseSBtZWFucyB0aGF0 IHNvbWVvbmUgcmVxdWVzdGVkIGFuIEFDQ0VTUyBFWENMVVNJVkUgbG9jayAiCisJCQkgICJv biB0aGUgdGFibGUgYWZ0ZXIgdGhlIHBnX2R1bXAgcGFyZW50IHByb2Nlc3MgaGFkIGdvdHRl biB0aGUgIgorCQkJICAiaW5pdGlhbCBBQ0NFU1MgU0hBUkUgbG9jayBvbiB0aGUgdGFibGUu IiwgcXVhbElkKTsKIAogCVBRY2xlYXIocmVzKTsKIAlkZXN0cm95UFFFeHBCdWZmZXIocXVl cnkpOwpAQCAtMTQzMiw3ICsxNDIzLDcgQEAgTGlzdGVuVG9Xb3JrZXJzKEFyY2hpdmVIYW5k bGUgKkFILCBQYXJhbGxlbFN0YXRlICpwc3RhdGUsIGJvb2wgZG9fd2FpdCkKIAl7CiAJCS8q IElmIGRvX3dhaXQgaXMgdHJ1ZSwgd2UgbXVzdCBoYXZlIGRldGVjdGVkIEVPRiBvbiBzb21l IHNvY2tldCAqLwogCQlpZiAoZG9fd2FpdCkKLQkJCWV4aXRfaG9ycmlibHkobW9kdWxlbmFt ZSwgImEgd29ya2VyIHByb2Nlc3MgZGllZCB1bmV4cGVjdGVkbHlcbiIpOworCQkJZmF0YWwo ImEgd29ya2VyIHByb2Nlc3MgZGllZCB1bmV4cGVjdGVkbHkiKTsKIAkJcmV0dXJuIGZhbHNl OwogCX0KIApAQCAtMTQ0OSw4ICsxNDQwLDcgQEAgTGlzdGVuVG9Xb3JrZXJzKEFyY2hpdmVI YW5kbGUgKkFILCBQYXJhbGxlbFN0YXRlICpwc3RhdGUsIGJvb2wgZG9fd2FpdCkKIAkJcHN0 YXRlLT50ZVt3b3JrZXJdID0gTlVMTDsKIAl9CiAJZWxzZQotCQlleGl0X2hvcnJpYmx5KG1v ZHVsZW5hbWUsCi0JCQkJCSAgImludmFsaWQgbWVzc2FnZSByZWNlaXZlZCBmcm9tIHdvcmtl cjogXCIlc1wiXG4iLAorCQlmYXRhbCgiaW52YWxpZCBtZXNzYWdlIHJlY2VpdmVkIGZyb20g d29ya2VyOiBcIiVzXCIiLAogCQkJCQkgIG1zZyk7CiAKIAkvKiBGcmVlIHRoZSBzdHJpbmcg cmV0dXJuZWQgZnJvbSBnZXRNZXNzYWdlRnJvbVdvcmtlciAqLwpAQCAtMTU1NSw5ICsxNTQ1 LDcgQEAgc2VuZE1lc3NhZ2VUb01hc3RlcihpbnQgcGlwZWZkWzJdLCBjb25zdCBjaGFyICpz dHIpCiAJaW50CQkJbGVuID0gc3RybGVuKHN0cikgKyAxOwogCiAJaWYgKHBpcGV3cml0ZShw aXBlZmRbUElQRV9XUklURV0sIHN0ciwgbGVuKSAhPSBsZW4pCi0JCWV4aXRfaG9ycmlibHko bW9kdWxlbmFtZSwKLQkJCQkJICAiY291bGQgbm90IHdyaXRlIHRvIHRoZSBjb21tdW5pY2F0 aW9uIGNoYW5uZWw6ICVzXG4iLAotCQkJCQkgIHN0cmVycm9yKGVycm5vKSk7CisJCWZhdGFs KCJjb3VsZCBub3Qgd3JpdGUgdG8gdGhlIGNvbW11bmljYXRpb24gY2hhbm5lbDogJW0iKTsK IH0KIAogLyoKQEAgLTE2MzQsNyArMTYyMiw3IEBAIGdldE1lc3NhZ2VGcm9tV29ya2VyKFBh cmFsbGVsU3RhdGUgKnBzdGF0ZSwgYm9vbCBkb193YWl0LCBpbnQgKndvcmtlcikKIAl9CiAK IAlpZiAoaSA8IDApCi0JCWV4aXRfaG9ycmlibHkobW9kdWxlbmFtZSwgInNlbGVjdCgpIGZh aWxlZDogJXNcbiIsIHN0cmVycm9yKGVycm5vKSk7CisJCWZhdGFsKCJzZWxlY3QoKSBmYWls ZWQ6ICVtIik7CiAKIAlmb3IgKGkgPSAwOyBpIDwgcHN0YXRlLT5udW1Xb3JrZXJzOyBpKysp CiAJewpAQCAtMTY3Myw5ICsxNjYxLDcgQEAgc2VuZE1lc3NhZ2VUb1dvcmtlcihQYXJhbGxl bFN0YXRlICpwc3RhdGUsIGludCB3b3JrZXIsIGNvbnN0IGNoYXIgKnN0cikKIAogCWlmIChw aXBld3JpdGUocHN0YXRlLT5wYXJhbGxlbFNsb3Rbd29ya2VyXS5waXBlV3JpdGUsIHN0ciwg bGVuKSAhPSBsZW4pCiAJewotCQlleGl0X2hvcnJpYmx5KG1vZHVsZW5hbWUsCi0JCQkJCSAg ImNvdWxkIG5vdCB3cml0ZSB0byB0aGUgY29tbXVuaWNhdGlvbiBjaGFubmVsOiAlc1xuIiwK LQkJCQkJICBzdHJlcnJvcihlcnJubykpOworCQlmYXRhbCgiY291bGQgbm90IHdyaXRlIHRv IHRoZSBjb21tdW5pY2F0aW9uIGNoYW5uZWw6ICVtIik7CiAJfQogfQogCkBAIC0xNzU5LDcg KzE3NDUsNyBAQCBwZ3BpcGUoaW50IGhhbmRsZXNbMl0pCiAJICovCiAJaWYgKChzID0gc29j a2V0KEFGX0lORVQsIFNPQ0tfU1RSRUFNLCAwKSkgPT0gUEdJTlZBTElEX1NPQ0tFVCkKIAl7 Ci0JCXdyaXRlX21zZyhtb2R1bGVuYW1lLCAicGdwaXBlOiBjb3VsZCBub3QgY3JlYXRlIHNv Y2tldDogZXJyb3IgY29kZSAlZFxuIiwKKwkJcGdfbG9nX2Vycm9yKCJwZ3BpcGU6IGNvdWxk IG5vdCBjcmVhdGUgc29ja2V0OiBlcnJvciBjb2RlICVkIiwKIAkJCQkgIFdTQUdldExhc3RF cnJvcigpKTsKIAkJcmV0dXJuIC0xOwogCX0KQEAgLTE3NzAsMjEgKzE3NTYsMjEgQEAgcGdw aXBlKGludCBoYW5kbGVzWzJdKQogCXNlcnZfYWRkci5zaW5fYWRkci5zX2FkZHIgPSBwZ19o dG9uMzIoSU5BRERSX0xPT1BCQUNLKTsKIAlpZiAoYmluZChzLCAoU09DS0FERFIgKikgJnNl cnZfYWRkciwgbGVuKSA9PSBTT0NLRVRfRVJST1IpCiAJewotCQl3cml0ZV9tc2cobW9kdWxl bmFtZSwgInBncGlwZTogY291bGQgbm90IGJpbmQ6IGVycm9yIGNvZGUgJWRcbiIsCisJCXBn X2xvZ19lcnJvcigicGdwaXBlOiBjb3VsZCBub3QgYmluZDogZXJyb3IgY29kZSAlZCIsCiAJ CQkJICBXU0FHZXRMYXN0RXJyb3IoKSk7CiAJCWNsb3Nlc29ja2V0KHMpOwogCQlyZXR1cm4g LTE7CiAJfQogCWlmIChsaXN0ZW4ocywgMSkgPT0gU09DS0VUX0VSUk9SKQogCXsKLQkJd3Jp dGVfbXNnKG1vZHVsZW5hbWUsICJwZ3BpcGU6IGNvdWxkIG5vdCBsaXN0ZW46IGVycm9yIGNv ZGUgJWRcbiIsCisJCXBnX2xvZ19lcnJvcigicGdwaXBlOiBjb3VsZCBub3QgbGlzdGVuOiBl cnJvciBjb2RlICVkIiwKIAkJCQkgIFdTQUdldExhc3RFcnJvcigpKTsKIAkJY2xvc2Vzb2Nr ZXQocyk7CiAJCXJldHVybiAtMTsKIAl9CiAJaWYgKGdldHNvY2tuYW1lKHMsIChTT0NLQURE UiAqKSAmc2Vydl9hZGRyLCAmbGVuKSA9PSBTT0NLRVRfRVJST1IpCiAJewotCQl3cml0ZV9t c2cobW9kdWxlbmFtZSwgInBncGlwZTogZ2V0c29ja25hbWUoKSBmYWlsZWQ6IGVycm9yIGNv ZGUgJWRcbiIsCisJCXBnX2xvZ19lcnJvcigicGdwaXBlOiBnZXRzb2NrbmFtZSgpIGZhaWxl ZDogZXJyb3IgY29kZSAlZCIsCiAJCQkJICBXU0FHZXRMYXN0RXJyb3IoKSk7CiAJCWNsb3Nl c29ja2V0KHMpOwogCQlyZXR1cm4gLTE7CkBAIC0xNzk1LDcgKzE3ODEsNyBAQCBwZ3BpcGUo aW50IGhhbmRsZXNbMl0pCiAJICovCiAJaWYgKCh0bXBfc29jayA9IHNvY2tldChBRl9JTkVU LCBTT0NLX1NUUkVBTSwgMCkpID09IFBHSU5WQUxJRF9TT0NLRVQpCiAJewotCQl3cml0ZV9t c2cobW9kdWxlbmFtZSwgInBncGlwZTogY291bGQgbm90IGNyZWF0ZSBzZWNvbmQgc29ja2V0 OiBlcnJvciBjb2RlICVkXG4iLAorCQlwZ19sb2dfZXJyb3IoInBncGlwZTogY291bGQgbm90 IGNyZWF0ZSBzZWNvbmQgc29ja2V0OiBlcnJvciBjb2RlICVkIiwKIAkJCQkgIFdTQUdldExh c3RFcnJvcigpKTsKIAkJY2xvc2Vzb2NrZXQocyk7CiAJCXJldHVybiAtMTsKQEAgLTE4MDQs NyArMTc5MCw3IEBAIHBncGlwZShpbnQgaGFuZGxlc1syXSkKIAogCWlmIChjb25uZWN0KGhh bmRsZXNbMV0sIChTT0NLQUREUiAqKSAmc2Vydl9hZGRyLCBsZW4pID09IFNPQ0tFVF9FUlJP UikKIAl7Ci0JCXdyaXRlX21zZyhtb2R1bGVuYW1lLCAicGdwaXBlOiBjb3VsZCBub3QgY29u bmVjdCBzb2NrZXQ6IGVycm9yIGNvZGUgJWRcbiIsCisJCXBnX2xvZ19lcnJvcigicGdwaXBl OiBjb3VsZCBub3QgY29ubmVjdCBzb2NrZXQ6IGVycm9yIGNvZGUgJWQiLAogCQkJCSAgV1NB R2V0TGFzdEVycm9yKCkpOwogCQljbG9zZXNvY2tldChoYW5kbGVzWzFdKTsKIAkJaGFuZGxl c1sxXSA9IC0xOwpAQCAtMTgxMyw3ICsxNzk5LDcgQEAgcGdwaXBlKGludCBoYW5kbGVzWzJd KQogCX0KIAlpZiAoKHRtcF9zb2NrID0gYWNjZXB0KHMsIChTT0NLQUREUiAqKSAmc2Vydl9h ZGRyLCAmbGVuKSkgPT0gUEdJTlZBTElEX1NPQ0tFVCkKIAl7Ci0JCXdyaXRlX21zZyhtb2R1 bGVuYW1lLCAicGdwaXBlOiBjb3VsZCBub3QgYWNjZXB0IGNvbm5lY3Rpb246IGVycm9yIGNv ZGUgJWRcbiIsCisJCXBnX2xvZ19lcnJvcigicGdwaXBlOiBjb3VsZCBub3QgYWNjZXB0IGNv bm5lY3Rpb246IGVycm9yIGNvZGUgJWQiLAogCQkJCSAgV1NBR2V0TGFzdEVycm9yKCkpOwog CQljbG9zZXNvY2tldChoYW5kbGVzWzFdKTsKIAkJaGFuZGxlc1sxXSA9IC0xOwpkaWZmIC0t Z2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9hcmNoaXZlci5jIGIvc3JjL2Jpbi9w Z19kdW1wL3BnX2JhY2t1cF9hcmNoaXZlci5jCmluZGV4IDJjMmY2ZmI0YTkuLjgzYTkzMzVh YTYgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfYXJjaGl2ZXIuYwor KysgYi9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2FyY2hpdmVyLmMKQEAgLTM1LDYgKzM1 LDcgQEAKICNpbmNsdWRlICJwZ19iYWNrdXBfZGIuaCIKICNpbmNsdWRlICJwZ19iYWNrdXBf dXRpbHMuaCIKICNpbmNsdWRlICJkdW1wdXRpbHMuaCIKKyNpbmNsdWRlICJmZV91dGlscy9s b2dnaW5nLmgiCiAjaW5jbHVkZSAiZmVfdXRpbHMvc3RyaW5nX3V0aWxzLmgiCiAKICNpbmNs dWRlICJsaWJwcS9saWJwcS1mcy5oIgpAQCAtMjcxLDggKzI3Miw3IEBAIENsb3NlQXJjaGl2 ZShBcmNoaXZlICpBSFgpCiAJCXJlcyA9IGZjbG9zZShBSC0+T0YpOwogCiAJaWYgKHJlcyAh PSAwKQotCQlleGl0X2hvcnJpYmx5KG1vZHVsZW5hbWUsICJjb3VsZCBub3QgY2xvc2Ugb3V0 cHV0IGZpbGU6ICVzXG4iLAotCQkJCQkgIHN0cmVycm9yKGVycm5vKSk7CisJCWZhdGFsKCJj b3VsZCBub3QgY2xvc2Ugb3V0cHV0IGZpbGU6ICVtIik7CiB9CiAKIC8qIFB1YmxpYyAqLwpA QCAtMzE2LDE5ICszMTYsMTcgQEAgUHJvY2Vzc0FyY2hpdmVSZXN0b3JlT3B0aW9ucyhBcmNo aXZlICpBSFgpCiAJCQkJCWJyZWFrOwogCQkJCWNhc2UgU0VDVElPTl9QUkVfREFUQToKIAkJ CQkJaWYgKGN1clNlY3Rpb24gIT0gU0VDVElPTl9QUkVfREFUQSkKLQkJCQkJCXdyaXRlX21z Zyhtb2R1bGVuYW1lLAotCQkJCQkJCQkgICJXQVJOSU5HOiBhcmNoaXZlIGl0ZW1zIG5vdCBp biBjb3JyZWN0IHNlY3Rpb24gb3JkZXJcbiIpOworCQkJCQkJcGdfbG9nX3dhcm5pbmcoImFy Y2hpdmUgaXRlbXMgbm90IGluIGNvcnJlY3Qgc2VjdGlvbiBvcmRlciIpOwogCQkJCQlicmVh azsKIAkJCQljYXNlIFNFQ1RJT05fREFUQToKIAkJCQkJaWYgKGN1clNlY3Rpb24gPT0gU0VD VElPTl9QT1NUX0RBVEEpCi0JCQkJCQl3cml0ZV9tc2cobW9kdWxlbmFtZSwKLQkJCQkJCQkJ ICAiV0FSTklORzogYXJjaGl2ZSBpdGVtcyBub3QgaW4gY29ycmVjdCBzZWN0aW9uIG9yZGVy XG4iKTsKKwkJCQkJCXBnX2xvZ193YXJuaW5nKCJhcmNoaXZlIGl0ZW1zIG5vdCBpbiBjb3Jy ZWN0IHNlY3Rpb24gb3JkZXIiKTsKIAkJCQkJYnJlYWs7CiAJCQkJY2FzZSBTRUNUSU9OX1BP U1RfREFUQToKIAkJCQkJLyogb2sgbm8gbWF0dGVyIHdoaWNoIHNlY3Rpb24gd2Ugd2VyZSBp biAqLwogCQkJCQlicmVhazsKIAkJCQlkZWZhdWx0OgotCQkJCQlleGl0X2hvcnJpYmx5KG1v ZHVsZW5hbWUsICJ1bmV4cGVjdGVkIHNlY3Rpb24gY29kZSAlZFxuIiwKKwkJCQkJZmF0YWwo InVuZXhwZWN0ZWQgc2VjdGlvbiBjb2RlICVkIiwKIAkJCQkJCQkJICAoaW50KSB0ZS0+c2Vj dGlvbik7CiAJCQkJCWJyZWFrOwogCQkJfQpAQCAtMzY1LDExICszNjMsMTEgQEAgUmVzdG9y ZUFyY2hpdmUoQXJjaGl2ZSAqQUhYKQogCXsKIAkJLyogV2UgaGF2ZW4ndCBnb3Qgcm91bmQg dG8gbWFraW5nIHRoaXMgd29yayBmb3IgYWxsIGFyY2hpdmUgZm9ybWF0cyAqLwogCQlpZiAo QUgtPkNsb25lUHRyID09IE5VTEwgfHwgQUgtPlJlb3BlblB0ciA9PSBOVUxMKQotCQkJZXhp dF9ob3JyaWJseShtb2R1bGVuYW1lLCAicGFyYWxsZWwgcmVzdG9yZSBpcyBub3Qgc3VwcG9y dGVkIHdpdGggdGhpcyBhcmNoaXZlIGZpbGUgZm9ybWF0XG4iKTsKKwkJCWZhdGFsKCJwYXJh bGxlbCByZXN0b3JlIGlzIG5vdCBzdXBwb3J0ZWQgd2l0aCB0aGlzIGFyY2hpdmUgZmlsZSBm b3JtYXQiKTsKIAogCQkvKiBEb2Vzbid0IHdvcmsgaWYgdGhlIGFyY2hpdmUgcmVwcmVzZW50 cyBkZXBlbmRlbmNpZXMgYXMgT0lEcyAqLwogCQlpZiAoQUgtPnZlcnNpb24gPCBLX1ZFUlNf MV84KQotCQkJZXhpdF9ob3JyaWJseShtb2R1bGVuYW1lLCAicGFyYWxsZWwgcmVzdG9yZSBp cyBub3Qgc3VwcG9ydGVkIHdpdGggYXJjaGl2ZXMgbWFkZSBieSBwcmUtOC4wIHBnX2R1bXBc biIpOworCQkJZmF0YWwoInBhcmFsbGVsIHJlc3RvcmUgaXMgbm90IHN1cHBvcnRlZCB3aXRo IGFyY2hpdmVzIG1hZGUgYnkgcHJlLTguMCBwZ19kdW1wIik7CiAKIAkJLyoKIAkJICogSXQn cyBhbHNvIG5vdCBnb25uYSB3b3JrIGlmIHdlIGNhbid0IHJlb3BlbiB0aGUgaW5wdXQgZmls ZSwgc28KQEAgLTM4Nyw3ICszODUsNyBAQCBSZXN0b3JlQXJjaGl2ZShBcmNoaXZlICpBSFgp CiAJCWZvciAodGUgPSBBSC0+dG9jLT5uZXh0OyB0ZSAhPSBBSC0+dG9jOyB0ZSA9IHRlLT5u ZXh0KQogCQl7CiAJCQlpZiAodGUtPmhhZER1bXBlciAmJiAodGUtPnJlcXMgJiBSRVFfREFU QSkgIT0gMCkKLQkJCQlleGl0X2hvcnJpYmx5KG1vZHVsZW5hbWUsICJjYW5ub3QgcmVzdG9y ZSBmcm9tIGNvbXByZXNzZWQgYXJjaGl2ZSAoY29tcHJlc3Npb24gbm90IHN1cHBvcnRlZCBp biB0aGlzIGluc3RhbGxhdGlvbilcbiIpOworCQkJCWZhdGFsKCJjYW5ub3QgcmVzdG9yZSBm cm9tIGNvbXByZXNzZWQgYXJjaGl2ZSAoY29tcHJlc3Npb24gbm90IHN1cHBvcnRlZCBpbiB0 aGlzIGluc3RhbGxhdGlvbikiKTsKIAkJfQogCX0KICNlbmRpZgpAQCAtNDA0LDkgKzQwMiw5 IEBAIFJlc3RvcmVBcmNoaXZlKEFyY2hpdmUgKkFIWCkKIAkgKi8KIAlpZiAocm9wdC0+dXNl REIpCiAJewotCQlhaGxvZyhBSCwgMSwgImNvbm5lY3RpbmcgdG8gZGF0YWJhc2UgZm9yIHJl c3RvcmVcbiIpOworCQlwZ19sb2dfaW5mbygiY29ubmVjdGluZyB0byBkYXRhYmFzZSBmb3Ig cmVzdG9yZSIpOwogCQlpZiAoQUgtPnZlcnNpb24gPCBLX1ZFUlNfMV8zKQotCQkJZXhpdF9o b3JyaWJseShtb2R1bGVuYW1lLCAiZGlyZWN0IGRhdGFiYXNlIGNvbm5lY3Rpb25zIGFyZSBu b3Qgc3VwcG9ydGVkIGluIHByZS0xLjMgYXJjaGl2ZXNcbiIpOworCQkJZmF0YWwoImRpcmVj dCBkYXRhYmFzZSBjb25uZWN0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCBpbiBwcmUtMS4zIGFy Y2hpdmVzIik7CiAKIAkJLyoKIAkJICogV2UgZG9uJ3Qgd2FudCB0byBndWVzcyBhdCB3aGV0 aGVyIHRoZSBkdW1wIHdpbGwgc3VjY2Vzc2Z1bGx5CkBAIC00NTEsNyArNDQ5LDcgQEAgUmVz dG9yZUFyY2hpdmUoQXJjaGl2ZSAqQUhYKQogCQlpZiAoaW1wbGllZERhdGFPbmx5KQogCQl7 CiAJCQlyb3B0LT5kYXRhT25seSA9IGltcGxpZWREYXRhT25seTsKLQkJCWFobG9nKEFILCAx LCAiaW1wbGllZCBkYXRhLW9ubHkgcmVzdG9yZVxuIik7CisJCQlwZ19sb2dfaW5mbygiaW1w bGllZCBkYXRhLW9ubHkgcmVzdG9yZSIpOwogCQl9CiAJfQogCkBAIC01MTcsNyArNTE1LDcg QEAgUmVzdG9yZUFyY2hpdmUoQXJjaGl2ZSAqQUhYKQogCQkJLyogT3RoZXJ3aXNlLCBkcm9w IGFueXRoaW5nIHRoYXQncyBzZWxlY3RlZCBhbmQgaGFzIGEgZHJvcFN0bXQgKi8KIAkJCWlm ICgoKHRlLT5yZXFzICYgKFJFUV9TQ0hFTUEgfCBSRVFfREFUQSkpICE9IDApICYmIHRlLT5k cm9wU3RtdCkKIAkJCXsKLQkJCQlhaGxvZyhBSCwgMSwgImRyb3BwaW5nICVzICVzXG4iLCB0 ZS0+ZGVzYywgdGUtPnRhZyk7CisJCQkJcGdfbG9nX2luZm8oImRyb3BwaW5nICVzICVzIiwg dGUtPmRlc2MsIHRlLT50YWcpOwogCQkJCS8qIFNlbGVjdCBvd25lciBhbmQgc2NoZW1hIGFz IG5lY2Vzc2FyeSAqLwogCQkJCV9iZWNvbWVPd25lcihBSCwgdGUpOwogCQkJCV9zZWxlY3RP dXRwdXRTY2hlbWEoQUgsIHRlLT5uYW1lc3BhY2UpOwpAQCAtNjEyLDggKzYxMCw3IEBAIFJl c3RvcmVBcmNoaXZlKEFyY2hpdmUgKkFIWCkKIAkJCQkJCQkJZWxzZQogCQkJCQkJCQl7CiAJ CQkJCQkJCQkvKiBjb21wbGFpbiBhbmQgZW1pdCB1bm1vZGlmaWVkIGNvbW1hbmQgKi8KLQkJ CQkJCQkJCXdyaXRlX21zZyhtb2R1bGVuYW1lLAotCQkJCQkJCQkJCQkgICJXQVJOSU5HOiBj b3VsZCBub3QgZmluZCB3aGVyZSB0byBpbnNlcnQgSUYgRVhJU1RTIGluIHN0YXRlbWVudCBc IiVzXCJcbiIsCisJCQkJCQkJCQlwZ19sb2dfd2FybmluZygiY291bGQgbm90IGZpbmQgd2hl cmUgdG8gaW5zZXJ0IElGIEVYSVNUUyBpbiBzdGF0ZW1lbnQgXCIlc1wiIiwKIAkJCQkJCQkJ CQkJICBkcm9wU3RtdE9yaWcpOwogCQkJCQkJCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoZnRT dG10LCBkcm9wU3RtdCk7CiAJCQkJCQkJCX0KQEAgLTc2OSw5ICs3NjYsOSBAQCByZXN0b3Jl X3RvY19lbnRyeShBcmNoaXZlSGFuZGxlICpBSCwgVG9jRW50cnkgKnRlLCBib29sIGlzX3Bh cmFsbGVsKQogCWlmICghcm9wdC0+c3VwcHJlc3NEdW1wV2FybmluZ3MgJiYgc3RyY21wKHRl LT5kZXNjLCAiV0FSTklORyIpID09IDApCiAJewogCQlpZiAoIXJvcHQtPmRhdGFPbmx5ICYm IHRlLT5kZWZuICE9IE5VTEwgJiYgc3RybGVuKHRlLT5kZWZuKSAhPSAwKQotCQkJd3JpdGVf bXNnKG1vZHVsZW5hbWUsICJ3YXJuaW5nIGZyb20gb3JpZ2luYWwgZHVtcCBmaWxlOiAlc1xu IiwgdGUtPmRlZm4pOworCQkJcGdfbG9nX3dhcm5pbmcoIndhcm5pbmcgZnJvbSBvcmlnaW5h bCBkdW1wIGZpbGU6ICVzIiwgdGUtPmRlZm4pOwogCQllbHNlIGlmICh0ZS0+Y29weVN0bXQg IT0gTlVMTCAmJiBzdHJsZW4odGUtPmNvcHlTdG10KSAhPSAwKQotCQkJd3JpdGVfbXNnKG1v ZHVsZW5hbWUsICJ3YXJuaW5nIGZyb20gb3JpZ2luYWwgZHVtcCBmaWxlOiAlc1xuIiwgdGUt PmNvcHlTdG10KTsKKwkJCXBnX2xvZ193YXJuaW5nKCJ3YXJuaW5nIGZyb20gb3JpZ2luYWwg ZHVtcCBmaWxlOiAlcyIsIHRlLT5jb3B5U3RtdCk7CiAJfQogCiAJLyogV29yayBvdXQgd2hh dCwgaWYgYW55dGhpbmcsIHdlIHdhbnQgZnJvbSB0aGlzIGVudHJ5ICovCkBAIC03ODYsMTAg Kzc4MywxMSBAQCByZXN0b3JlX3RvY19lbnRyeShBcmNoaXZlSGFuZGxlICpBSCwgVG9jRW50 cnkgKnRlLCBib29sIGlzX3BhcmFsbGVsKQogCXsKIAkJLyogU2hvdyBuYW1lc3BhY2UgaW4g bG9nIG1lc3NhZ2UgaWYgYXZhaWxhYmxlICovCiAJCWlmICh0ZS0+bmFtZXNwYWNlKQotCQkJ YWhsb2coQUgsIDEsICJjcmVhdGluZyAlcyBcIiVzLiVzXCJcbiIsCi0JCQkJICB0ZS0+ZGVz YywgdGUtPm5hbWVzcGFjZSwgdGUtPnRhZyk7CisJCQlwZ19sb2dfaW5mbygiY3JlYXRpbmcg JXMgXCIlcy4lc1wiIiwKKwkJCQkJCXRlLT5kZXNjLCB0ZS0+bmFtZXNwYWNlLCB0ZS0+dGFn KTsKIAkJZWxzZQotCQkJYWhsb2coQUgsIDEsICJjcmVhdGluZyAlcyBcIiVzXCJcbiIsIHRl LT5kZXNjLCB0ZS0+dGFnKTsKKwkJCXBnX2xvZ19pbmZvKCJjcmVhdGluZyAlcyBcIiVzXCIi LAorCQkJCQkJdGUtPmRlc2MsIHRlLT50YWcpOwogCiAJCV9wcmludFRvY0VudHJ5KEFILCB0 ZSwgZmFsc2UpOwogCQlkZWZuRHVtcGVkID0gdHJ1ZTsKQEAgLTg0NSw3ICs4NDMsNyBAQCBy ZXN0b3JlX3RvY19lbnRyeShBcmNoaXZlSGFuZGxlICpBSCwgVG9jRW50cnkgKnRlLCBib29s IGlzX3BhcmFsbGVsKQogCQkJYXBwZW5kQ29ublN0clZhbCgmY29ubnN0ciwgdGUtPnRhZyk7 CiAJCQkvKiBBYmFuZG9uIHN0cnVjdCwgYnV0IGtlZXAgaXRzIGJ1ZmZlciB1bnRpbCBwcm9j ZXNzIGV4aXQuICovCiAKLQkJCWFobG9nKEFILCAxLCAiY29ubmVjdGluZyB0byBuZXcgZGF0 YWJhc2UgXCIlc1wiXG4iLCB0ZS0+dGFnKTsKKwkJCXBnX2xvZ19pbmZvKCJjb25uZWN0aW5n IHRvIG5ldyBkYXRhYmFzZSBcIiVzXCIiLCB0ZS0+dGFnKTsKIAkJCV9yZWNvbm5lY3RUb0RC KEFILCB0ZS0+dGFnKTsKIAkJCXJvcHQtPmRibmFtZSA9IGNvbm5zdHIuZGF0YTsKIAkJfQpA QCAtODczLDcgKzg3MSw3IEBAIHJlc3RvcmVfdG9jX2VudHJ5KEFyY2hpdmVIYW5kbGUgKkFI LCBUb2NFbnRyeSAqdGUsIGJvb2wgaXNfcGFyYWxsZWwpCiAJCQkJaWYgKHN0cmNtcCh0ZS0+ ZGVzYywgIkJMT0JTIikgPT0gMCB8fAogCQkJCQlzdHJjbXAodGUtPmRlc2MsICJCTE9CIENP TU1FTlRTIikgPT0gMCkKIAkJCQl7Ci0JCQkJCWFobG9nKEFILCAxLCAicHJvY2Vzc2luZyAl c1xuIiwgdGUtPmRlc2MpOworCQkJCQlwZ19sb2dfaW5mbygicHJvY2Vzc2luZyAlcyIsIHRl LT5kZXNjKTsKIAogCQkJCQlfc2VsZWN0T3V0cHV0U2NoZW1hKEFILCAicGdfY2F0YWxvZyIp OwogCkBAIC04OTMsNyArODkxLDcgQEAgcmVzdG9yZV90b2NfZW50cnkoQXJjaGl2ZUhhbmRs ZSAqQUgsIFRvY0VudHJ5ICp0ZSwgYm9vbCBpc19wYXJhbGxlbCkKIAkJCQkJX2JlY29tZU93 bmVyKEFILCB0ZSk7CiAJCQkJCV9zZWxlY3RPdXRwdXRTY2hlbWEoQUgsIHRlLT5uYW1lc3Bh Y2UpOwogCi0JCQkJCWFobG9nKEFILCAxLCAicHJvY2Vzc2luZyBkYXRhIGZvciB0YWJsZSBc IiVzLiVzXCJcbiIsCisJCQkJCXBnX2xvZ19pbmZvKCJwcm9jZXNzaW5nIGRhdGEgZm9yIHRh YmxlIFwiJXMuJXNcIiIsCiAJCQkJCQkgIHRlLT5uYW1lc3BhY2UsIHRlLT50YWcpOwogCiAJ CQkJCS8qCkBAIC05NTUsNyArOTUzLDcgQEAgcmVzdG9yZV90b2NfZW50cnkoQXJjaGl2ZUhh bmRsZSAqQUgsIFRvY0VudHJ5ICp0ZSwgYm9vbCBpc19wYXJhbGxlbCkKIAkJZWxzZSBpZiAo IWRlZm5EdW1wZWQpCiAJCXsKIAkJCS8qIElmIHdlIGhhdmVuJ3QgYWxyZWFkeSBkdW1wZWQg dGhlIGRlZm4gcGFydCwgZG8gc28gbm93ICovCi0JCQlhaGxvZyhBSCwgMSwgImV4ZWN1dGlu ZyAlcyAlc1xuIiwgdGUtPmRlc2MsIHRlLT50YWcpOworCQkJcGdfbG9nX2luZm8oImV4ZWN1 dGluZyAlcyAlcyIsIHRlLT5kZXNjLCB0ZS0+dGFnKTsKIAkJCV9wcmludFRvY0VudHJ5KEFI LCB0ZSwgZmFsc2UpOwogCQl9CiAJfQpAQCAtOTk0LDcgKzk5Miw3IEBAIF9kaXNhYmxlVHJp Z2dlcnNJZk5lY2Vzc2FyeShBcmNoaXZlSGFuZGxlICpBSCwgVG9jRW50cnkgKnRlKQogCWlm ICghcm9wdC0+ZGF0YU9ubHkgfHwgIXJvcHQtPmRpc2FibGVfdHJpZ2dlcnMpCiAJCXJldHVy bjsKIAotCWFobG9nKEFILCAxLCAiZGlzYWJsaW5nIHRyaWdnZXJzIGZvciAlc1xuIiwgdGUt PnRhZyk7CisJcGdfbG9nX2luZm8oImRpc2FibGluZyB0cmlnZ2VycyBmb3IgJXMiLCB0ZS0+ dGFnKTsKIAogCS8qCiAJICogQmVjb21lIHN1cGVydXNlciBpZiBwb3NzaWJsZSwgc2luY2Ug dGhleSBhcmUgdGhlIG9ubHkgb25lcyB3aG8gY2FuCkBAIC0xMDIwLDcgKzEwMTgsNyBAQCBf ZW5hYmxlVHJpZ2dlcnNJZk5lY2Vzc2FyeShBcmNoaXZlSGFuZGxlICpBSCwgVG9jRW50cnkg KnRlKQogCWlmICghcm9wdC0+ZGF0YU9ubHkgfHwgIXJvcHQtPmRpc2FibGVfdHJpZ2dlcnMp CiAJCXJldHVybjsKIAotCWFobG9nKEFILCAxLCAiZW5hYmxpbmcgdHJpZ2dlcnMgZm9yICVz XG4iLCB0ZS0+dGFnKTsKKwlwZ19sb2dfaW5mbygiZW5hYmxpbmcgdHJpZ2dlcnMgZm9yICVz IiwgdGUtPnRhZyk7CiAKIAkvKgogCSAqIEJlY29tZSBzdXBlcnVzZXIgaWYgcG9zc2libGUs IHNpbmNlIHRoZXkgYXJlIHRoZSBvbmx5IG9uZXMgd2hvIGNhbgpAQCAtMTA0OCw3ICsxMDQ2 LDcgQEAgV3JpdGVEYXRhKEFyY2hpdmUgKkFIWCwgY29uc3Qgdm9pZCAqZGF0YSwgc2l6ZV90 IGRMZW4pCiAJQXJjaGl2ZUhhbmRsZSAqQUggPSAoQXJjaGl2ZUhhbmRsZSAqKSBBSFg7CiAK IAlpZiAoIUFILT5jdXJyVG9jKQotCQlleGl0X2hvcnJpYmx5KG1vZHVsZW5hbWUsICJpbnRl cm5hbCBlcnJvciAtLSBXcml0ZURhdGEgY2Fubm90IGJlIGNhbGxlZCBvdXRzaWRlIHRoZSBj b250ZXh0IG9mIGEgRGF0YUR1bXBlciByb3V0aW5lXG4iKTsKKwkJZmF0YWwoImludGVybmFs IGVycm9yIC0tIFdyaXRlRGF0YSBjYW5ub3QgYmUgY2FsbGVkIG91dHNpZGUgdGhlIGNvbnRl eHQgb2YgYSBEYXRhRHVtcGVyIHJvdXRpbmUiKTsKIAogCUFILT5Xcml0ZURhdGFQdHIoQUgs IGRhdGEsIGRMZW4pOwogCkBAIC0xMjUyLDcgKzEyNTAsNyBAQCBTdGFydEJsb2IoQXJjaGl2 ZSAqQUhYLCBPaWQgb2lkKQogCUFyY2hpdmVIYW5kbGUgKkFIID0gKEFyY2hpdmVIYW5kbGUg KikgQUhYOwogCiAJaWYgKCFBSC0+U3RhcnRCbG9iUHRyKQotCQlleGl0X2hvcnJpYmx5KG1v ZHVsZW5hbWUsICJsYXJnZS1vYmplY3Qgb3V0cHV0IG5vdCBzdXBwb3J0ZWQgaW4gY2hvc2Vu IGZvcm1hdFxuIik7CisJCWZhdGFsKCJsYXJnZS1vYmplY3Qgb3V0cHV0IG5vdCBzdXBwb3J0 ZWQgaW4gY2hvc2VuIGZvcm1hdCIpOwogCiAJQUgtPlN0YXJ0QmxvYlB0cihBSCwgQUgtPmN1 cnJUb2MsIG9pZCk7CiAKQEAgLTEzMTAsOCArMTMwOCw4IEBAIEVuZFJlc3RvcmVCbG9icyhB cmNoaXZlSGFuZGxlICpBSCkKIAkJCWFocHJpbnRmKEFILCAiQ09NTUlUO1xuXG4iKTsKIAl9 CiAKLQlhaGxvZyhBSCwgMSwgbmdldHRleHQoInJlc3RvcmVkICVkIGxhcmdlIG9iamVjdFxu IiwKLQkJCQkJCSAgInJlc3RvcmVkICVkIGxhcmdlIG9iamVjdHNcbiIsCisJcGdfbG9nX2lu Zm8obmdldHRleHQoInJlc3RvcmVkICVkIGxhcmdlIG9iamVjdCIsCisJCQkJCQkgInJlc3Rv cmVkICVkIGxhcmdlIG9iamVjdHMiLAogCQkJCQkJICBBSC0+YmxvYkNvdW50KSwKIAkJICBB SC0+YmxvYkNvdW50KTsKIH0KQEAgLTEzMzEsNyArMTMyOSw3IEBAIFN0YXJ0UmVzdG9yZUJs b2IoQXJjaGl2ZUhhbmRsZSAqQUgsIE9pZCBvaWQsIGJvb2wgZHJvcCkKIAkvKiBJbml0aWFs aXplIHRoZSBMTyBCdWZmZXIgKi8KIAlBSC0+bG9fYnVmX3VzZWQgPSAwOwogCi0JYWhsb2co QUgsIDEsICJyZXN0b3JpbmcgbGFyZ2Ugb2JqZWN0IHdpdGggT0lEICV1XG4iLCBvaWQpOwor CXBnX2xvZ19pbmZvKCJyZXN0b3JpbmcgbGFyZ2Ugb2JqZWN0IHdpdGggT0lEICV1Iiwgb2lk KTsKIAogCS8qIFdpdGggYW4gb2xkIGFyY2hpdmUgd2UgbXVzdCBkbyBkcm9wIGFuZCBjcmVh dGUgbG9naWMgaGVyZSAqLwogCWlmIChvbGRfYmxvYl9zdHlsZSAmJiBkcm9wKQpAQCAtMTM0 MywxMiArMTM0MSwxMiBAQCBTdGFydFJlc3RvcmVCbG9iKEFyY2hpdmVIYW5kbGUgKkFILCBP aWQgb2lkLCBib29sIGRyb3ApCiAJCXsKIAkJCWxvT2lkID0gbG9fY3JlYXRlKEFILT5jb25u ZWN0aW9uLCBvaWQpOwogCQkJaWYgKGxvT2lkID09IDAgfHwgbG9PaWQgIT0gb2lkKQotCQkJ CWV4aXRfaG9ycmlibHkobW9kdWxlbmFtZSwgImNvdWxkIG5vdCBjcmVhdGUgbGFyZ2Ugb2Jq ZWN0ICV1OiAlcyIsCisJCQkJZmF0YWwoImNvdWxkIG5vdCBjcmVhdGUgbGFyZ2Ugb2JqZWN0 ICV1OiAlcyIsCiAJCQkJCQkJICBvaWQsIFBRZXJyb3JNZXNzYWdlKEFILT5jb25uZWN0aW9u KSk7CiAJCX0KIAkJQUgtPmxvRmQgPSBsb19vcGVuKEFILT5jb25uZWN0aW9uLCBvaWQsIElO Vl9XUklURSk7CiAJCWlmIChBSC0+bG9GZCA9PSAtMSkKLQkJCWV4aXRfaG9ycmlibHkobW9k dWxlbmFtZSwgImNvdWxkIG5vdCBvcGVuIGxhcmdlIG9iamVjdCAldTogJXMiLAorCQkJZmF0 YWwoImNvdWxkIG5vdCBvcGVuIGxhcmdlIG9iamVjdCAldTogJXMiLAogCQkJCQkJICBvaWQs IFBRZXJyb3JNZXNzYWdlKEFILT5jb25uZWN0aW9uKSk7CiAJfQogCWVsc2UKQEAgLTE0MDYs OCArMTQwNCw3IEBAIFNvcnRUb2NGcm9tRmlsZShBcmNoaXZlICpBSFgpCiAJLyogU2V0dXAg dGhlIGZpbGUgKi8KIAlmaCA9IGZvcGVuKHJvcHQtPnRvY0ZpbGUsIFBHX0JJTkFSWV9SKTsK IAlpZiAoIWZoKQotCQlleGl0X2hvcnJpYmx5KG1vZHVsZW5hbWUsICJjb3VsZCBub3Qgb3Bl biBUT0MgZmlsZSBcIiVzXCI6ICVzXG4iLAotCQkJCQkgIHJvcHQtPnRvY0ZpbGUsIHN0cmVy cm9yKGVycm5vKSk7CisJCWZhdGFsKCJjb3VsZCBub3Qgb3BlbiBUT0MgZmlsZSBcIiVzXCI6 ICVtIiwgcm9wdC0+dG9jRmlsZSk7CiAKIAlpbmNvbXBsZXRlX2xpbmUgPSBmYWxzZTsKIAl3 aGlsZSAoZmdldHMoYnVmLCBzaXplb2YoYnVmKSwgZmgpICE9IE5VTEwpCkBAIC0xNDQ3LDE0 ICsxNDQ0LDE0IEBAIFNvcnRUb2NGcm9tRmlsZShBcmNoaXZlICpBSFgpCiAJCWlmIChlbmRw dHIgPT0gYnVmIHx8IGlkIDw9IDAgfHwgaWQgPiBBSC0+bWF4RHVtcElkIHx8CiAJCQlyb3B0 LT5pZFdhbnRlZFtpZCAtIDFdKQogCQl7Ci0JCQl3cml0ZV9tc2cobW9kdWxlbmFtZSwgIldB Uk5JTkc6IGxpbmUgaWdub3JlZDogJXNcbiIsIGJ1Zik7CisJCQlwZ19sb2dfd2FybmluZygi bGluZSBpZ25vcmVkOiAlcyIsIGJ1Zik7CiAJCQljb250aW51ZTsKIAkJfQogCiAJCS8qIEZp bmQgVE9DIGVudHJ5ICovCiAJCXRlID0gZ2V0VG9jRW50cnlCeUR1bXBJZChBSCwgaWQpOwog CQlpZiAoIXRlKQotCQkJZXhpdF9ob3JyaWJseShtb2R1bGVuYW1lLCAiY291bGQgbm90IGZp bmQgZW50cnkgZm9yIElEICVkXG4iLAorCQkJZmF0YWwoImNvdWxkIG5vdCBmaW5kIGVudHJ5 IGZvciBJRCAlZCIsCiAJCQkJCQkgIGlkKTsKIAogCQkvKiBNYXJrIGl0IHdhbnRlZCAqLwpA QCAtMTQ3NSw4ICsxNDcyLDcgQEAgU29ydFRvY0Zyb21GaWxlKEFyY2hpdmUgKkFIWCkKIAl9 CiAKIAlpZiAoZmNsb3NlKGZoKSAhPSAwKQotCQlleGl0X2hvcnJpYmx5KG1vZHVsZW5hbWUs ICJjb3VsZCBub3QgY2xvc2UgVE9DIGZpbGU6ICVzXG4iLAotCQkJCQkgIHN0cmVycm9yKGVy cm5vKSk7CisJCWZhdGFsKCJjb3VsZCBub3QgY2xvc2UgVE9DIGZpbGU6ICVtIik7CiB9CiAK IC8qKioqKioqKioqKioqKioqKioqKioqCkBAIC0xNTg2LDExICsxNTgyLDkgQEAgU2V0T3V0 cHV0KEFyY2hpdmVIYW5kbGUgKkFILCBjb25zdCBjaGFyICpmaWxlbmFtZSwgaW50IGNvbXBy ZXNzaW9uKQogCWlmICghQUgtPk9GKQogCXsKIAkJaWYgKGZpbGVuYW1lKQotCQkJZXhpdF9o b3JyaWJseShtb2R1bGVuYW1lLCAiY291bGQgbm90IG9wZW4gb3V0cHV0IGZpbGUgXCIlc1wi OiAlc1xuIiwKLQkJCQkJCSAgZmlsZW5hbWUsIHN0cmVycm9yKGVycm5vKSk7CisJCQlmYXRh bCgiY291bGQgbm90IG9wZW4gb3V0cHV0IGZpbGUgXCIlc1wiOiAlbSIsIGZpbGVuYW1lKTsK IAkJZWxzZQotCQkJZXhpdF9ob3JyaWJseShtb2R1bGVuYW1lLCAiY291bGQgbm90IG9wZW4g b3V0cHV0IGZpbGU6ICVzXG4iLAotCQkJCQkJICBzdHJlcnJvcihlcnJubykpOworCQkJZmF0 YWwoImNvdWxkIG5vdCBvcGVuIG91dHB1dCBmaWxlOiAlbSIpOwogCX0KIH0KIApAQCAtMTYx Niw4ICsxNjEwLDcgQEAgUmVzdG9yZU91dHB1dChBcmNoaXZlSGFuZGxlICpBSCwgT3V0cHV0 Q29udGV4dCBzYXZlZENvbnRleHQpCiAJCXJlcyA9IGZjbG9zZShBSC0+T0YpOwogCiAJaWYg KHJlcyAhPSAwKQotCQlleGl0X2hvcnJpYmx5KG1vZHVsZW5hbWUsICJjb3VsZCBub3QgY2xv c2Ugb3V0cHV0IGZpbGU6ICVzXG4iLAotCQkJCQkgIHN0cmVycm9yKGVycm5vKSk7CisJCWZh dGFsKCJjb3VsZCBub3QgY2xvc2Ugb3V0cHV0IGZpbGU6ICVtIik7CiAKIAlBSC0+Z3pPdXQg PSBzYXZlZENvbnRleHQuZ3pPdXQ7CiAJQUgtPk9GID0gc2F2ZWRDb250ZXh0Lk9GOwpAQCAt MTY2MiwxOSArMTY1NSw2IEBAIGFocHJpbnRmKEFyY2hpdmVIYW5kbGUgKkFILCBjb25zdCBj aGFyICpmbXQsLi4uKQogCXJldHVybiAoaW50KSBjbnQ7CiB9CiAKLXZvaWQKLWFobG9nKEFy Y2hpdmVIYW5kbGUgKkFILCBpbnQgbGV2ZWwsIGNvbnN0IGNoYXIgKmZtdCwuLi4pCi17Ci0J dmFfbGlzdAkJYXA7Ci0KLQlpZiAoQUgtPmRlYnVnTGV2ZWwgPCBsZXZlbCAmJiAoIUFILT5w dWJsaWMudmVyYm9zZSB8fCBsZXZlbCA+IDEpKQotCQlyZXR1cm47Ci0KLQl2YV9zdGFydChh cCwgZm10KTsKLQl2d3JpdGVfbXNnKE5VTEwsIGZtdCwgYXApOwotCXZhX2VuZChhcCk7Ci19 Ci0KIC8qCiAgKiBTaW5nbGUgcGxhY2UgZm9yIGxvZ2ljIHdoaWNoIHNheXMgJ1dlIGFyZSBy ZXN0b3JpbmcgdG8gYSBkaXJlY3QgREIgY29ubmVjdGlvbicuCiAgKi8KQEAgLTE2OTcsMTMg KzE2NzcsMTIgQEAgZHVtcF9sb19idWYoQXJjaGl2ZUhhbmRsZSAqQUgpCiAJCXNpemVfdAkJ cmVzOwogCiAJCXJlcyA9IGxvX3dyaXRlKEFILT5jb25uZWN0aW9uLCBBSC0+bG9GZCwgQUgt PmxvX2J1ZiwgQUgtPmxvX2J1Zl91c2VkKTsKLQkJYWhsb2coQUgsIDUsIG5nZXR0ZXh0KCJ3 cm90ZSAlbHUgYnl0ZSBvZiBsYXJnZSBvYmplY3QgZGF0YSAocmVzdWx0ID0gJWx1KVxuIiwK KwkJcGdfbG9nX2RlYnVnKG5nZXR0ZXh0KCJ3cm90ZSAlbHUgYnl0ZSBvZiBsYXJnZSBvYmpl Y3QgZGF0YSAocmVzdWx0ID0gJWx1KVxuIiwKIAkJCQkJCQkgICJ3cm90ZSAlbHUgYnl0ZXMg b2YgbGFyZ2Ugb2JqZWN0IGRhdGEgKHJlc3VsdCA9ICVsdSlcbiIsCiAJCQkJCQkJICBBSC0+ bG9fYnVmX3VzZWQpLAogCQkJICAodW5zaWduZWQgbG9uZykgQUgtPmxvX2J1Zl91c2VkLCAo dW5zaWduZWQgbG9uZykgcmVzKTsKIAkJaWYgKHJlcyAhPSBBSC0+bG9fYnVmX3VzZWQpCi0J CQlleGl0X2hvcnJpYmx5KG1vZHVsZW5hbWUsCi0JCQkJCQkgICJjb3VsZCBub3Qgd3JpdGUg dG8gbGFyZ2Ugb2JqZWN0IChyZXN1bHQ6ICVsdSwgZXhwZWN0ZWQ6ICVsdSlcbiIsCisJCQlm YXRhbCgiY291bGQgbm90IHdyaXRlIHRvIGxhcmdlIG9iamVjdCAocmVzdWx0OiAlbHUsIGV4 cGVjdGVkOiAlbHUpIiwKIAkJCQkJCSAgKHVuc2lnbmVkIGxvbmcpIHJlcywgKHVuc2lnbmVk IGxvbmcpIEFILT5sb19idWZfdXNlZCk7CiAJfQogCWVsc2UKQEAgLTE4ODQsNyArMTg2Myw3 IEBAIGJ1aWxkVG9jRW50cnlBcnJheXMoQXJjaGl2ZUhhbmRsZSAqQUgpCiAJewogCQkvKiB0 aGlzIGNoZWNrIGlzIHB1cmVseSBwYXJhbm9pYSwgbWF4RHVtcElkIHNob3VsZCBiZSBjb3Jy ZWN0ICovCiAJCWlmICh0ZS0+ZHVtcElkIDw9IDAgfHwgdGUtPmR1bXBJZCA+IG1heER1bXBJ ZCkKLQkJCWV4aXRfaG9ycmlibHkobW9kdWxlbmFtZSwgImJhZCBkdW1wSWRcbiIpOworCQkJ ZmF0YWwoImJhZCBkdW1wSWQiKTsKIAogCQkvKiB0b2NzQnlEdW1wSWQgaW5kZXhlcyBhbGwg VE9DcyBieSB0aGVpciBkdW1wIElEICovCiAJCUFILT50b2NzQnlEdW1wSWRbdGUtPmR1bXBJ ZF0gPSB0ZTsKQEAgLTE5MDUsNyArMTg4NCw3IEBAIGJ1aWxkVG9jRW50cnlBcnJheXMoQXJj aGl2ZUhhbmRsZSAqQUgpCiAJCQkgKiBpdGVtJ3MgZHVtcCBJRCwgc28gdGhlcmUgc2hvdWxk IGJlIGEgcGxhY2UgZm9yIGl0IGluIHRoZSBhcnJheS4KIAkJCSAqLwogCQkJaWYgKHRhYmxl SWQgPD0gMCB8fCB0YWJsZUlkID4gbWF4RHVtcElkKQotCQkJCWV4aXRfaG9ycmlibHkobW9k dWxlbmFtZSwgImJhZCB0YWJsZSBkdW1wSWQgZm9yIFRBQkxFIERBVEEgaXRlbVxuIik7CisJ CQkJZmF0YWwoImJhZCB0YWJsZSBkdW1wSWQgZm9yIFRBQkxFIERBVEEgaXRlbSIpOwogCiAJ CQlBSC0+dGFibGVEYXRhSWRbdGFibGVJZF0gPSB0ZS0+ZHVtcElkOwogCQl9CkBAIC0xOTk3 LDcgKzE5NzYsNyBAQCBSZWFkT2Zmc2V0KEFyY2hpdmVIYW5kbGUgKkFILCBwZ29mZl90ICog bykKIAkJCWJyZWFrOwogCiAJCWRlZmF1bHQ6Ci0JCQlleGl0X2hvcnJpYmx5KG1vZHVsZW5h bWUsICJ1bmV4cGVjdGVkIGRhdGEgb2Zmc2V0IGZsYWcgJWRcbiIsIG9mZnNldEZsZyk7CisJ CQlmYXRhbCgidW5leHBlY3RlZCBkYXRhIG9mZnNldCBmbGFnICVkIiwgb2Zmc2V0RmxnKTsK IAl9CiAKIAkvKgpAQCAtMjAxMCw3ICsxOTg5LDcgQEAgUmVhZE9mZnNldChBcmNoaXZlSGFu ZGxlICpBSCwgcGdvZmZfdCAqIG8pCiAJCWVsc2UKIAkJewogCQkJaWYgKEFILT5SZWFkQnl0 ZVB0cihBSCkgIT0gMCkKLQkJCQlleGl0X2hvcnJpYmx5KG1vZHVsZW5hbWUsICJmaWxlIG9m ZnNldCBpbiBkdW1wIGZpbGUgaXMgdG9vIGxhcmdlXG4iKTsKKwkJCQlmYXRhbCgiZmlsZSBv ZmZzZXQgaW4gZHVtcCBmaWxlIGlzIHRvbyBsYXJnZSIpOwogCQl9CiAJfQogCkBAIC0yMTIy LDkgKzIxMDEsNyBAQCBfZGlzY292ZXJBcmNoaXZlRm9ybWF0KEFyY2hpdmVIYW5kbGUgKkFI KQogCXNpemVfdAkJY250OwogCWludAkJCXdhbnRDbG9zZSA9IDA7CiAKLSNpZiAwCi0Jd3Jp dGVfbXNnKG1vZHVsZW5hbWUsICJhdHRlbXB0aW5nIHRvIGFzY2VydGFpbiBhcmNoaXZlIGZv cm1hdFxuIik7Ci0jZW5kaWYKKwlwZ19sb2dfZGVidWcoImF0dGVtcHRpbmcgdG8gYXNjZXJ0 YWluIGFyY2hpdmUgZm9ybWF0Iik7CiAKIAlpZiAoQUgtPmxvb2thaGVhZCkKIAkJZnJlZShB SC0+bG9va2FoZWFkKTsKQEAgLTIxNDksNyArMjEyNiw3IEBAIF9kaXNjb3ZlckFyY2hpdmVG b3JtYXQoQXJjaGl2ZUhhbmRsZSAqQUgpCiAJCQljaGFyCQlidWZbTUFYUEdQQVRIXTsKIAog CQkJaWYgKHNucHJpbnRmKGJ1ZiwgTUFYUEdQQVRILCAiJXMvdG9jLmRhdCIsIEFILT5mU3Bl YykgPj0gTUFYUEdQQVRIKQotCQkJCWV4aXRfaG9ycmlibHkobW9kdWxlbmFtZSwgImRpcmVj dG9yeSBuYW1lIHRvbyBsb25nOiBcIiVzXCJcbiIsCisJCQkJZmF0YWwoImRpcmVjdG9yeSBu YW1lIHRvbyBsb25nOiBcIiVzXCIiLAogCQkJCQkJCSAgQUgtPmZTcGVjKTsKIAkJCWlmIChz dGF0KGJ1ZiwgJnN0KSA9PSAwICYmIFNfSVNSRUcoc3Quc3RfbW9kZSkpCiAJCQl7CkBAIC0y MTU5LDcgKzIxMzYsNyBAQCBfZGlzY292ZXJBcmNoaXZlRm9ybWF0KEFyY2hpdmVIYW5kbGUg KkFIKQogCiAjaWZkZWYgSEFWRV9MSUJaCiAJCQlpZiAoc25wcmludGYoYnVmLCBNQVhQR1BB VEgsICIlcy90b2MuZGF0Lmd6IiwgQUgtPmZTcGVjKSA+PSBNQVhQR1BBVEgpCi0JCQkJZXhp dF9ob3JyaWJseShtb2R1bGVuYW1lLCAiZGlyZWN0b3J5IG5hbWUgdG9vIGxvbmc6IFwiJXNc IlxuIiwKKwkJCQlmYXRhbCgiZGlyZWN0b3J5IG5hbWUgdG9vIGxvbmc6IFwiJXNcIiIsCiAJ CQkJCQkJICBBSC0+ZlNwZWMpOwogCQkJaWYgKHN0YXQoYnVmLCAmc3QpID09IDAgJiYgU19J U1JFRyhzdC5zdF9tb2RlKSkKIAkJCXsKQEAgLTIxNjcsNyArMjE0NCw3IEBAIF9kaXNjb3Zl ckFyY2hpdmVGb3JtYXQoQXJjaGl2ZUhhbmRsZSAqQUgpCiAJCQkJcmV0dXJuIEFILT5mb3Jt YXQ7CiAJCQl9CiAjZW5kaWYKLQkJCWV4aXRfaG9ycmlibHkobW9kdWxlbmFtZSwgImRpcmVj dG9yeSBcIiVzXCIgZG9lcyBub3QgYXBwZWFyIHRvIGJlIGEgdmFsaWQgYXJjaGl2ZSAoXCJ0 b2MuZGF0XCIgZG9lcyBub3QgZXhpc3QpXG4iLAorCQkJZmF0YWwoImRpcmVjdG9yeSBcIiVz XCIgZG9lcyBub3QgYXBwZWFyIHRvIGJlIGEgdmFsaWQgYXJjaGl2ZSAoXCJ0b2MuZGF0XCIg ZG9lcyBub3QgZXhpc3QpIiwKIAkJCQkJCSAgQUgtPmZTcGVjKTsKIAkJCWZoID0gTlVMTDsJ CQkvKiBrZWVwIGNvbXBpbGVyIHF1aWV0ICovCiAJCX0KQEAgLTIxNzUsMjQgKzIxNTIsMjIg QEAgX2Rpc2NvdmVyQXJjaGl2ZUZvcm1hdChBcmNoaXZlSGFuZGxlICpBSCkKIAkJewogCQkJ ZmggPSBmb3BlbihBSC0+ZlNwZWMsIFBHX0JJTkFSWV9SKTsKIAkJCWlmICghZmgpCi0JCQkJ ZXhpdF9ob3JyaWJseShtb2R1bGVuYW1lLCAiY291bGQgbm90IG9wZW4gaW5wdXQgZmlsZSBc IiVzXCI6ICVzXG4iLAotCQkJCQkJCSAgQUgtPmZTcGVjLCBzdHJlcnJvcihlcnJubykpOwor CQkJCWZhdGFsKCJjb3VsZCBub3Qgb3BlbiBpbnB1dCBmaWxlIFwiJXNcIjogJW0iLCBBSC0+ ZlNwZWMpOwogCQl9CiAJfQogCWVsc2UKIAl7CiAJCWZoID0gc3RkaW47CiAJCWlmICghZmgp Ci0JCQlleGl0X2hvcnJpYmx5KG1vZHVsZW5hbWUsICJjb3VsZCBub3Qgb3BlbiBpbnB1dCBm aWxlOiAlc1xuIiwKLQkJCQkJCSAgc3RyZXJyb3IoZXJybm8pKTsKKwkJCWZhdGFsKCJjb3Vs ZCBub3Qgb3BlbiBpbnB1dCBmaWxlOiAlbSIpOwogCX0KIAogCWlmICgoY250ID0gZnJlYWQo c2lnLCAxLCA1LCBmaCkpICE9IDUpCiAJewogCQlpZiAoZmVycm9yKGZoKSkKLQkJCWV4aXRf aG9ycmlibHkobW9kdWxlbmFtZSwgImNvdWxkIG5vdCByZWFkIGlucHV0IGZpbGU6ICVzXG4i LCBzdHJlcnJvcihlcnJubykpOworCQkJZmF0YWwoImNvdWxkIG5vdCByZWFkIGlucHV0IGZp bGU6ICVtIik7CiAJCWVsc2UKLQkJCWV4aXRfaG9ycmlibHkobW9kdWxlbmFtZSwgImlucHV0 IGZpbGUgaXMgdG9vIHNob3J0IChyZWFkICVsdSwgZXhwZWN0ZWQgNSlcbiIsCisJCQlmYXRh bCgiaW5wdXQgZmlsZSBpcyB0b28gc2hvcnQgKHJlYWQgJWx1LCBleHBlY3RlZCA1KSIsCiAJ CQkJCQkgICh1bnNpZ25lZCBsb25nKSBjbnQpOwogCX0KIApAQCAtMjI3NywxOSArMjI1Miwx OSBAQCBfZGlzY292ZXJBcmNoaXZlRm9ybWF0KEFyY2hpdmVIYW5kbGUgKkFIKQogCQkJICog bG9va3MgbGlrZSBpdCdzIHByb2JhYmx5IGEgdGV4dCBmb3JtYXQgZHVtcC4gc28gc3VnZ2Vz dCB0aGV5CiAJCQkgKiB0cnkgcHNxbAogCQkJICovCi0JCQlleGl0X2hvcnJpYmx5KG1vZHVs ZW5hbWUsICJpbnB1dCBmaWxlIGFwcGVhcnMgdG8gYmUgYSB0ZXh0IGZvcm1hdCBkdW1wLiBQ bGVhc2UgdXNlIHBzcWwuXG4iKTsKKwkJCWZhdGFsKCJpbnB1dCBmaWxlIGFwcGVhcnMgdG8g YmUgYSB0ZXh0IGZvcm1hdCBkdW1wLiBQbGVhc2UgdXNlIHBzcWwuIik7CiAJCX0KIAogCQlp ZiAoQUgtPmxvb2thaGVhZExlbiAhPSA1MTIpCiAJCXsKIAkJCWlmIChmZW9mKGZoKSkKLQkJ CQlleGl0X2hvcnJpYmx5KG1vZHVsZW5hbWUsICJpbnB1dCBmaWxlIGRvZXMgbm90IGFwcGVh ciB0byBiZSBhIHZhbGlkIGFyY2hpdmUgKHRvbyBzaG9ydD8pXG4iKTsKKwkJCQlmYXRhbCgi aW5wdXQgZmlsZSBkb2VzIG5vdCBhcHBlYXIgdG8gYmUgYSB2YWxpZCBhcmNoaXZlICh0b28g c2hvcnQ/KSIpOwogCQkJZWxzZQogCQkJCVJFQURfRVJST1JfRVhJVChmaCk7CiAJCX0KIAog CQlpZiAoIWlzVmFsaWRUYXJIZWFkZXIoQUgtPmxvb2thaGVhZCkpCi0JCQlleGl0X2hvcnJp Ymx5KG1vZHVsZW5hbWUsICJpbnB1dCBmaWxlIGRvZXMgbm90IGFwcGVhciB0byBiZSBhIHZh bGlkIGFyY2hpdmVcbiIpOworCQkJZmF0YWwoImlucHV0IGZpbGUgZG9lcyBub3QgYXBwZWFy IHRvIGJlIGEgdmFsaWQgYXJjaGl2ZSIpOwogCiAJCUFILT5mb3JtYXQgPSBhcmNoVGFyOwog CX0KQEAgLTIzMDksOCArMjI4NCw3IEBAIF9kaXNjb3ZlckFyY2hpdmVGb3JtYXQoQXJjaGl2 ZUhhbmRsZSAqQUgpCiAJLyogQ2xvc2UgdGhlIGZpbGUgKi8KIAlpZiAod2FudENsb3NlKQog CQlpZiAoZmNsb3NlKGZoKSAhPSAwKQotCQkJZXhpdF9ob3JyaWJseShtb2R1bGVuYW1lLCAi Y291bGQgbm90IGNsb3NlIGlucHV0IGZpbGU6ICVzXG4iLAotCQkJCQkJICBzdHJlcnJvcihl cnJubykpOworCQkJZmF0YWwoImNvdWxkIG5vdCBjbG9zZSBpbnB1dCBmaWxlOiAlbSIpOwog CiAJcmV0dXJuIEFILT5mb3JtYXQ7CiB9CkBAIC0yMzI2LDE0ICsyMzAwLDEwIEBAIF9hbGxv Y0FIKGNvbnN0IGNoYXIgKkZpbGVTcGVjLCBjb25zdCBBcmNoaXZlRm9ybWF0IGZtdCwKIHsK IAlBcmNoaXZlSGFuZGxlICpBSDsKIAotI2lmIDAKLQl3cml0ZV9tc2cobW9kdWxlbmFtZSwg ImFsbG9jYXRpbmcgQUggZm9yICVzLCBmb3JtYXQgJWRcbiIsIEZpbGVTcGVjLCBmbXQpOwot I2VuZGlmCisJcGdfbG9nX2RlYnVnKCJhbGxvY2F0aW5nIEFIIGZvciAlcywgZm9ybWF0ICVk IiwgRmlsZVNwZWMsIGZtdCk7CiAKIAlBSCA9IChBcmNoaXZlSGFuZGxlICopIHBnX21hbGxv YzAoc2l6ZW9mKEFyY2hpdmVIYW5kbGUpKTsKIAotCS8qIEFILT5kZWJ1Z0xldmVsID0gMTAw OyAqLwotCiAJQUgtPnZlcnNpb24gPSBLX1ZFUlNfU0VMRjsKIAogCS8qIGluaXRpYWxpemUg Zm9yIGJhY2t3YXJkcyBjb21wYXRpYmxlIHN0cmluZyBwcm9jZXNzaW5nICovCkBAIC0yNDI3 LDcgKzIzOTcsNyBAQCBfYWxsb2NBSChjb25zdCBjaGFyICpGaWxlU3BlYywgY29uc3QgQXJj aGl2ZUZvcm1hdCBmbXQsCiAJCQlicmVhazsKIAogCQlkZWZhdWx0OgotCQkJZXhpdF9ob3Jy aWJseShtb2R1bGVuYW1lLCAidW5yZWNvZ25pemVkIGZpbGUgZm9ybWF0IFwiJWRcIlxuIiwg Zm10KTsKKwkJCWZhdGFsKCJ1bnJlY29nbml6ZWQgZmlsZSBmb3JtYXQgXCIlZFwiIiwgZm10 KTsKIAl9CiAKIAlyZXR1cm4gQUg7CkBAIC0yNTA5LDExICsyNDc5LDExIEBAIG1hcmtfZHVt cF9qb2JfZG9uZShBcmNoaXZlSGFuZGxlICpBSCwKIAkJCQkgICBpbnQgc3RhdHVzLAogCQkJ CSAgIHZvaWQgKmNhbGxiYWNrX2RhdGEpCiB7Ci0JYWhsb2coQUgsIDEsICJmaW5pc2hlZCBp dGVtICVkICVzICVzXG4iLAorCXBnX2xvZ19pbmZvKCJmaW5pc2hlZCBpdGVtICVkICVzICVz IiwKIAkJICB0ZS0+ZHVtcElkLCB0ZS0+ZGVzYywgdGUtPnRhZyk7CiAKIAlpZiAoc3RhdHVz ICE9IDApCi0JCWV4aXRfaG9ycmlibHkobW9kdWxlbmFtZSwgIndvcmtlciBwcm9jZXNzIGZh aWxlZDogZXhpdCBjb2RlICVkXG4iLAorCQlmYXRhbCgid29ya2VyIHByb2Nlc3MgZmFpbGVk OiBleGl0IGNvZGUgJWQiLAogCQkJCQkgIHN0YXR1cyk7CiB9CiAKQEAgLTI2MzIsOCArMjYw Miw3IEBAIFJlYWRUb2MoQXJjaGl2ZUhhbmRsZSAqQUgpCiAKIAkJLyogU2FuaXR5IGNoZWNr ICovCiAJCWlmICh0ZS0+ZHVtcElkIDw9IDApCi0JCQlleGl0X2hvcnJpYmx5KG1vZHVsZW5h bWUsCi0JCQkJCQkgICJlbnRyeSBJRCAlZCBvdXQgb2YgcmFuZ2UgLS0gcGVyaGFwcyBhIGNv cnJ1cHQgVE9DXG4iLAorCQkJZmF0YWwoImVudHJ5IElEICVkIG91dCBvZiByYW5nZSAtLSBw ZXJoYXBzIGEgY29ycnVwdCBUT0MiLAogCQkJCQkJICB0ZS0+ZHVtcElkKTsKIAogCQl0ZS0+ aGFkRHVtcGVyID0gUmVhZEludChBSCk7CkBAIC0yNjk3LDggKzI2NjYsNyBAQCBSZWFkVG9j KEFyY2hpdmVIYW5kbGUgKkFIKQogCiAJCXRlLT5vd25lciA9IFJlYWRTdHIoQUgpOwogCQlp ZiAoQUgtPnZlcnNpb24gPCBLX1ZFUlNfMV85IHx8IHN0cmNtcChSZWFkU3RyKEFIKSwgInRy dWUiKSA9PSAwKQotCQkJd3JpdGVfbXNnKG1vZHVsZW5hbWUsCi0JCQkJCSAgIldBUk5JTkc6 IHJlc3RvcmluZyB0YWJsZXMgV0lUSCBPSURTIGlzIG5vdCBzdXBwb3J0ZWQgYW55bW9yZVxu Iik7CisJCQlwZ19sb2dfd2FybmluZygicmVzdG9yaW5nIHRhYmxlcyBXSVRIIE9JRFMgaXMg bm90IHN1cHBvcnRlZCBhbnltb3JlIik7CiAKIAkJLyogUmVhZCBUT0MgZW50cnkgZGVwZW5k ZW5jaWVzICovCiAJCWlmIChBSC0+dmVyc2lvbiA+PSBLX1ZFUlNfMV81KQpAQCAtMjc0NCw3 ICsyNzEyLDcgQEAgUmVhZFRvYyhBcmNoaXZlSGFuZGxlICpBSCkKIAkJaWYgKEFILT5SZWFk RXh0cmFUb2NQdHIpCiAJCQlBSC0+UmVhZEV4dHJhVG9jUHRyKEFILCB0ZSk7CiAKLQkJYWhs b2coQUgsIDMsICJyZWFkIFRPQyBlbnRyeSAlZCAoSUQgJWQpIGZvciAlcyAlc1xuIiwKKwkJ cGdfbG9nX2RlYnVnKCJyZWFkIFRPQyBlbnRyeSAlZCAoSUQgJWQpIGZvciAlcyAlcyIsCiAJ CQkgIGksIHRlLT5kdW1wSWQsIHRlLT5kZXNjLCB0ZS0+dGFnKTsKIAogCQkvKiBsaW5rIGNv bXBsZXRlZCBlbnRyeSBpbnRvIFRPQyBjaXJjdWxhciBsaXN0ICovCkBAIC0yNzgwLDEyICsy NzQ4LDEyIEBAIHByb2Nlc3NFbmNvZGluZ0VudHJ5KEFyY2hpdmVIYW5kbGUgKkFILCBUb2NF bnRyeSAqdGUpCiAJCSpwdHIyID0gJ1wwJzsKIAkJZW5jb2RpbmcgPSBwZ19jaGFyX3RvX2Vu Y29kaW5nKHB0cjEpOwogCQlpZiAoZW5jb2RpbmcgPCAwKQotCQkJZXhpdF9ob3JyaWJseSht b2R1bGVuYW1lLCAidW5yZWNvZ25pemVkIGVuY29kaW5nIFwiJXNcIlxuIiwKKwkJCWZhdGFs KCJ1bnJlY29nbml6ZWQgZW5jb2RpbmcgXCIlc1wiIiwKIAkJCQkJCSAgcHRyMSk7CiAJCUFI LT5wdWJsaWMuZW5jb2RpbmcgPSBlbmNvZGluZzsKIAl9CiAJZWxzZQotCQlleGl0X2hvcnJp Ymx5KG1vZHVsZW5hbWUsICJpbnZhbGlkIEVOQ09ESU5HIGl0ZW06ICVzXG4iLAorCQlmYXRh bCgiaW52YWxpZCBFTkNPRElORyBpdGVtOiAlcyIsCiAJCQkJCSAgdGUtPmRlZm4pOwogCiAJ ZnJlZShkZWZuKTsKQEAgLTI4MDMsNyArMjc3MSw3IEBAIHByb2Nlc3NTdGRTdHJpbmdzRW50 cnkoQXJjaGl2ZUhhbmRsZSAqQUgsIFRvY0VudHJ5ICp0ZSkKIAllbHNlIGlmIChwdHIxICYm IHN0cm5jbXAocHRyMSwgIidvZmYnIiwgNSkgPT0gMCkKIAkJQUgtPnB1YmxpYy5zdGRfc3Ry aW5ncyA9IGZhbHNlOwogCWVsc2UKLQkJZXhpdF9ob3JyaWJseShtb2R1bGVuYW1lLCAiaW52 YWxpZCBTVERTVFJJTkdTIGl0ZW06ICVzXG4iLAorCQlmYXRhbCgiaW52YWxpZCBTVERTVFJJ TkdTIGl0ZW06ICVzIiwKIAkJCQkJICB0ZS0+ZGVmbik7CiB9CiAKQEAgLTI4MjgsMzUgKzI3 OTYsMzUgQEAgU3RyaWN0TmFtZXNDaGVjayhSZXN0b3JlT3B0aW9ucyAqcm9wdCkKIAl7CiAJ CW1pc3NpbmdfbmFtZSA9IHNpbXBsZV9zdHJpbmdfbGlzdF9ub3RfdG91Y2hlZCgmcm9wdC0+ c2NoZW1hTmFtZXMpOwogCQlpZiAobWlzc2luZ19uYW1lICE9IE5VTEwpCi0JCQlleGl0X2hv cnJpYmx5KG1vZHVsZW5hbWUsICJzY2hlbWEgXCIlc1wiIG5vdCBmb3VuZFxuIiwgbWlzc2lu Z19uYW1lKTsKKwkJCWZhdGFsKCJzY2hlbWEgXCIlc1wiIG5vdCBmb3VuZCIsIG1pc3Npbmdf bmFtZSk7CiAJfQogCiAJaWYgKHJvcHQtPnRhYmxlTmFtZXMuaGVhZCAhPSBOVUxMKQogCXsK IAkJbWlzc2luZ19uYW1lID0gc2ltcGxlX3N0cmluZ19saXN0X25vdF90b3VjaGVkKCZyb3B0 LT50YWJsZU5hbWVzKTsKIAkJaWYgKG1pc3NpbmdfbmFtZSAhPSBOVUxMKQotCQkJZXhpdF9o b3JyaWJseShtb2R1bGVuYW1lLCAidGFibGUgXCIlc1wiIG5vdCBmb3VuZFxuIiwgbWlzc2lu Z19uYW1lKTsKKwkJCWZhdGFsKCJ0YWJsZSBcIiVzXCIgbm90IGZvdW5kIiwgbWlzc2luZ19u YW1lKTsKIAl9CiAKIAlpZiAocm9wdC0+aW5kZXhOYW1lcy5oZWFkICE9IE5VTEwpCiAJewog CQltaXNzaW5nX25hbWUgPSBzaW1wbGVfc3RyaW5nX2xpc3Rfbm90X3RvdWNoZWQoJnJvcHQt PmluZGV4TmFtZXMpOwogCQlpZiAobWlzc2luZ19uYW1lICE9IE5VTEwpCi0JCQlleGl0X2hv cnJpYmx5KG1vZHVsZW5hbWUsICJpbmRleCBcIiVzXCIgbm90IGZvdW5kXG4iLCBtaXNzaW5n X25hbWUpOworCQkJZmF0YWwoImluZGV4IFwiJXNcIiBub3QgZm91bmQiLCBtaXNzaW5nX25h bWUpOwogCX0KIAogCWlmIChyb3B0LT5mdW5jdGlvbk5hbWVzLmhlYWQgIT0gTlVMTCkKIAl7 CiAJCW1pc3NpbmdfbmFtZSA9IHNpbXBsZV9zdHJpbmdfbGlzdF9ub3RfdG91Y2hlZCgmcm9w dC0+ZnVuY3Rpb25OYW1lcyk7CiAJCWlmIChtaXNzaW5nX25hbWUgIT0gTlVMTCkKLQkJCWV4 aXRfaG9ycmlibHkobW9kdWxlbmFtZSwgImZ1bmN0aW9uIFwiJXNcIiBub3QgZm91bmRcbiIs IG1pc3NpbmdfbmFtZSk7CisJCQlmYXRhbCgiZnVuY3Rpb24gXCIlc1wiIG5vdCBmb3VuZCIs IG1pc3NpbmdfbmFtZSk7CiAJfQogCiAJaWYgKHJvcHQtPnRyaWdnZXJOYW1lcy5oZWFkICE9 IE5VTEwpCiAJewogCQltaXNzaW5nX25hbWUgPSBzaW1wbGVfc3RyaW5nX2xpc3Rfbm90X3Rv dWNoZWQoJnJvcHQtPnRyaWdnZXJOYW1lcyk7CiAJCWlmIChtaXNzaW5nX25hbWUgIT0gTlVM TCkKLQkJCWV4aXRfaG9ycmlibHkobW9kdWxlbmFtZSwgInRyaWdnZXIgXCIlc1wiIG5vdCBm b3VuZFxuIiwgbWlzc2luZ19uYW1lKTsKKwkJCWZhdGFsKCJ0cmlnZ2VyIFwiJXNcIiBub3Qg Zm91bmQiLCBtaXNzaW5nX25hbWUpOwogCX0KIH0KIApAQCAtMzIzMiw3ICszMjAwLDcgQEAg X2RvU2V0U2Vzc2lvbkF1dGgoQXJjaGl2ZUhhbmRsZSAqQUgsIGNvbnN0IGNoYXIgKnVzZXIp CiAKIAkJaWYgKCFyZXMgfHwgUFFyZXN1bHRTdGF0dXMocmVzKSAhPSBQR1JFU19DT01NQU5E X09LKQogCQkJLyogTk9UIHdhcm5fb3JfZXhpdF9ob3JyaWJseS4uLiB1c2UgLU8gaW5zdGVh ZCB0byBza2lwIHRoaXMuICovCi0JCQlleGl0X2hvcnJpYmx5KG1vZHVsZW5hbWUsICJjb3Vs ZCBub3Qgc2V0IHNlc3Npb24gdXNlciB0byBcIiVzXCI6ICVzIiwKKwkJCWZhdGFsKCJjb3Vs ZCBub3Qgc2V0IHNlc3Npb24gdXNlciB0byBcIiVzXCI6ICVzIiwKIAkJCQkJCSAgdXNlciwg UFFlcnJvck1lc3NhZ2UoQUgtPmNvbm5lY3Rpb24pKTsKIAogCQlQUWNsZWFyKHJlcyk7CkBA IC0zNTI3LDcgKzM0OTUsNyBAQCBfZ2V0T2JqZWN0RGVzY3JpcHRpb24oUFFFeHBCdWZmZXIg YnVmLCBUb2NFbnRyeSAqdGUsIEFyY2hpdmVIYW5kbGUgKkFIKQogCQlyZXR1cm47CiAJfQog Ci0Jd3JpdGVfbXNnKG1vZHVsZW5hbWUsICJXQVJOSU5HOiBkb24ndCBrbm93IGhvdyB0byBz ZXQgb3duZXIgZm9yIG9iamVjdCB0eXBlIFwiJXNcIlxuIiwKKwlwZ19sb2dfd2FybmluZygi ZG9uJ3Qga25vdyBob3cgdG8gc2V0IG93bmVyIGZvciBvYmplY3QgdHlwZSBcIiVzXCIiLAog CQkJICB0eXBlKTsKIH0KIApAQCAtMzY5NSw3ICszNjYzLDcgQEAgX3ByaW50VG9jRW50cnko QXJjaGl2ZUhhbmRsZSAqQUgsIFRvY0VudHJ5ICp0ZSwgYm9vbCBpc0RhdGEpCiAJCX0KIAkJ ZWxzZQogCQl7Ci0JCQl3cml0ZV9tc2cobW9kdWxlbmFtZSwgIldBUk5JTkc6IGRvbid0IGtu b3cgaG93IHRvIHNldCBvd25lciBmb3Igb2JqZWN0IHR5cGUgXCIlc1wiXG4iLAorCQkJcGdf bG9nX3dhcm5pbmcoImRvbid0IGtub3cgaG93IHRvIHNldCBvd25lciBmb3Igb2JqZWN0IHR5 cGUgXCIlc1wiIiwKIAkJCQkJICB0ZS0+ZGVzYyk7CiAJCX0KIAl9CkBAIC0zNzg1LDcgKzM3 NTMsNyBAQCBSZWFkSGVhZChBcmNoaXZlSGFuZGxlICpBSCkKIAkJQUgtPlJlYWRCdWZQdHIo QUgsIHRtcE1hZywgNSk7CiAKIAkJaWYgKHN0cm5jbXAodG1wTWFnLCAiUEdETVAiLCA1KSAh PSAwKQotCQkJZXhpdF9ob3JyaWJseShtb2R1bGVuYW1lLCAiZGlkIG5vdCBmaW5kIG1hZ2lj IHN0cmluZyBpbiBmaWxlIGhlYWRlclxuIik7CisJCQlmYXRhbCgiZGlkIG5vdCBmaW5kIG1h Z2ljIHN0cmluZyBpbiBmaWxlIGhlYWRlciIpOwogCiAJCXZtYWogPSBBSC0+UmVhZEJ5dGVQ dHIoQUgpOwogCQl2bWluID0gQUgtPlJlYWRCeXRlUHRyKEFIKTsKQEAgLTM3OTgsMTYgKzM3 NjYsMTYgQEAgUmVhZEhlYWQoQXJjaGl2ZUhhbmRsZSAqQUgpCiAJCUFILT52ZXJzaW9uID0g TUFLRV9BUkNISVZFX1ZFUlNJT04odm1haiwgdm1pbiwgdnJldik7CiAKIAkJaWYgKEFILT52 ZXJzaW9uIDwgS19WRVJTXzFfMCB8fCBBSC0+dmVyc2lvbiA+IEtfVkVSU19NQVgpCi0JCQll eGl0X2hvcnJpYmx5KG1vZHVsZW5hbWUsICJ1bnN1cHBvcnRlZCB2ZXJzaW9uICglZC4lZCkg aW4gZmlsZSBoZWFkZXJcbiIsCisJCQlmYXRhbCgidW5zdXBwb3J0ZWQgdmVyc2lvbiAoJWQu JWQpIGluIGZpbGUgaGVhZGVyIiwKIAkJCQkJCSAgdm1haiwgdm1pbik7CiAKIAkJQUgtPmlu dFNpemUgPSBBSC0+UmVhZEJ5dGVQdHIoQUgpOwogCQlpZiAoQUgtPmludFNpemUgPiAzMikK LQkJCWV4aXRfaG9ycmlibHkobW9kdWxlbmFtZSwgInNhbml0eSBjaGVjayBvbiBpbnRlZ2Vy IHNpemUgKCVsdSkgZmFpbGVkXG4iLAorCQkJZmF0YWwoInNhbml0eSBjaGVjayBvbiBpbnRl Z2VyIHNpemUgKCVsdSkgZmFpbGVkIiwKIAkJCQkJCSAgKHVuc2lnbmVkIGxvbmcpIEFILT5p bnRTaXplKTsKIAogCQlpZiAoQUgtPmludFNpemUgPiBzaXplb2YoaW50KSkKLQkJCXdyaXRl X21zZyhtb2R1bGVuYW1lLCAiV0FSTklORzogYXJjaGl2ZSB3YXMgbWFkZSBvbiBhIG1hY2hp bmUgd2l0aCBsYXJnZXIgaW50ZWdlcnMsIHNvbWUgb3BlcmF0aW9ucyBtaWdodCBmYWlsXG4i KTsKKwkJCXBnX2xvZ193YXJuaW5nKCJhcmNoaXZlIHdhcyBtYWRlIG9uIGEgbWFjaGluZSB3 aXRoIGxhcmdlciBpbnRlZ2Vycywgc29tZSBvcGVyYXRpb25zIG1pZ2h0IGZhaWwiKTsKIAog CQlpZiAoQUgtPnZlcnNpb24gPj0gS19WRVJTXzFfNykKIAkJCUFILT5vZmZTaXplID0gQUgt PlJlYWRCeXRlUHRyKEFIKTsKQEAgLTM4MTcsNyArMzc4NSw3IEBAIFJlYWRIZWFkKEFyY2hp dmVIYW5kbGUgKkFIKQogCQlmbXQgPSBBSC0+UmVhZEJ5dGVQdHIoQUgpOwogCiAJCWlmIChB SC0+Zm9ybWF0ICE9IGZtdCkKLQkJCWV4aXRfaG9ycmlibHkobW9kdWxlbmFtZSwgImV4cGVj dGVkIGZvcm1hdCAoJWQpIGRpZmZlcnMgZnJvbSBmb3JtYXQgZm91bmQgaW4gZmlsZSAoJWQp XG4iLAorCQkJZmF0YWwoImV4cGVjdGVkIGZvcm1hdCAoJWQpIGRpZmZlcnMgZnJvbSBmb3Jt YXQgZm91bmQgaW4gZmlsZSAoJWQpIiwKIAkJCQkJCSAgQUgtPmZvcm1hdCwgZm10KTsKIAl9 CiAKQEAgLTM4MzMsNyArMzgwMSw3IEBAIFJlYWRIZWFkKEFyY2hpdmVIYW5kbGUgKkFIKQog CiAjaWZuZGVmIEhBVkVfTElCWgogCWlmIChBSC0+Y29tcHJlc3Npb24gIT0gMCkKLQkJd3Jp dGVfbXNnKG1vZHVsZW5hbWUsICJXQVJOSU5HOiBhcmNoaXZlIGlzIGNvbXByZXNzZWQsIGJ1 dCB0aGlzIGluc3RhbGxhdGlvbiBkb2VzIG5vdCBzdXBwb3J0IGNvbXByZXNzaW9uIC0tIG5v IGRhdGEgd2lsbCBiZSBhdmFpbGFibGVcbiIpOworCQlwZ19sb2dfd2FybmluZygiYXJjaGl2 ZSBpcyBjb21wcmVzc2VkLCBidXQgdGhpcyBpbnN0YWxsYXRpb24gZG9lcyBub3Qgc3VwcG9y dCBjb21wcmVzc2lvbiAtLSBubyBkYXRhIHdpbGwgYmUgYXZhaWxhYmxlIik7CiAjZW5kaWYK IAogCWlmIChBSC0+dmVyc2lvbiA+PSBLX1ZFUlNfMV80KQpAQCAtMzg1MSw3ICszODE5LDcg QEAgUmVhZEhlYWQoQXJjaGl2ZUhhbmRsZSAqQUgpCiAJCUFILT5jcmVhdGVEYXRlID0gbWt0 aW1lKCZjcnRtKTsKIAogCQlpZiAoQUgtPmNyZWF0ZURhdGUgPT0gKHRpbWVfdCkgLTEpCi0J CQl3cml0ZV9tc2cobW9kdWxlbmFtZSwgIldBUk5JTkc6IGludmFsaWQgY3JlYXRpb24gZGF0 ZSBpbiBoZWFkZXJcbiIpOworCQkJcGdfbG9nX3dhcm5pbmcoImludmFsaWQgY3JlYXRpb24g ZGF0ZSBpbiBoZWFkZXIiKTsKIAl9CiAKIAlpZiAoQUgtPnZlcnNpb24gPj0gS19WRVJTXzFf MTApCkBAIC0zOTI0LDcgKzM4OTIsNyBAQCByZXN0b3JlX3RvY19lbnRyaWVzX3ByZWZvcmso QXJjaGl2ZUhhbmRsZSAqQUgsIFRvY0VudHJ5ICpwZW5kaW5nX2xpc3QpCiAJYm9vbAkJc2tp cHBlZF9zb21lOwogCVRvY0VudHJ5ICAgKm5leHRfd29ya19pdGVtOwogCi0JYWhsb2coQUgs IDIsICJlbnRlcmluZyByZXN0b3JlX3RvY19lbnRyaWVzX3ByZWZvcmtcbiIpOworCXBnX2xv Z19kZWJ1ZygiZW50ZXJpbmcgcmVzdG9yZV90b2NfZW50cmllc19wcmVmb3JrIik7CiAKIAkv KiBBZGp1c3QgZGVwZW5kZW5jeSBpbmZvcm1hdGlvbiAqLwogCWZpeF9kZXBlbmRlbmNpZXMo QUgpOwpAQCAtMzk4OCw3ICszOTU2LDcgQEAgcmVzdG9yZV90b2NfZW50cmllc19wcmVmb3Jr KEFyY2hpdmVIYW5kbGUgKkFILCBUb2NFbnRyeSAqcGVuZGluZ19saXN0KQogCQlpZiAoZG9f bm93KQogCQl7CiAJCQkvKiBPSywgcmVzdG9yZSB0aGUgaXRlbSBhbmQgdXBkYXRlIGl0cyBk ZXBlbmRlbmNpZXMgKi8KLQkJCWFobG9nKEFILCAxLCAicHJvY2Vzc2luZyBpdGVtICVkICVz ICVzXG4iLAorCQkJcGdfbG9nX2luZm8oInByb2Nlc3NpbmcgaXRlbSAlZCAlcyAlcyIsCiAJ CQkJICBuZXh0X3dvcmtfaXRlbS0+ZHVtcElkLAogCQkJCSAgbmV4dF93b3JrX2l0ZW0tPmRl c2MsIG5leHRfd29ya19pdGVtLT50YWcpOwogCkBAIC00MDQxLDcgKzQwMDksNyBAQCByZXN0 b3JlX3RvY19lbnRyaWVzX3BhcmFsbGVsKEFyY2hpdmVIYW5kbGUgKkFILCBQYXJhbGxlbFN0 YXRlICpwc3RhdGUsCiAJUGFyYWxsZWxSZWFkeUxpc3QgcmVhZHlfbGlzdDsKIAlUb2NFbnRy eSAgICpuZXh0X3dvcmtfaXRlbTsKIAotCWFobG9nKEFILCAyLCAiZW50ZXJpbmcgcmVzdG9y ZV90b2NfZW50cmllc19wYXJhbGxlbFxuIik7CisJcGdfbG9nX2RlYnVnKCJlbnRlcmluZyBy ZXN0b3JlX3RvY19lbnRyaWVzX3BhcmFsbGVsIik7CiAKIAkvKiBTZXQgdXAgcmVhZHlfbGlz dCB3aXRoIGVub3VnaCByb29tIGZvciBhbGwga25vd24gVG9jRW50cnlzICovCiAJcmVhZHlf bGlzdF9pbml0KCZyZWFkeV9saXN0LCBBSC0+dG9jQ291bnQpOwpAQCAtNDA2NCw3ICs0MDMy LDcgQEAgcmVzdG9yZV90b2NfZW50cmllc19wYXJhbGxlbChBcmNoaXZlSGFuZGxlICpBSCwg UGFyYWxsZWxTdGF0ZSAqcHN0YXRlLAogCSAqIGxlZnQgdG8gYmUgZG9uZS4gIE5vdGUgaW52 YXJpYW50OiBhdCB0b3Agb2YgbG9vcCwgdGhlcmUgc2hvdWxkIGFsd2F5cwogCSAqIGJlIGF0 IGxlYXN0IG9uZSB3b3JrZXIgYXZhaWxhYmxlIHRvIGRpc3BhdGNoIGEgam9iIHRvLgogCSAq LwotCWFobG9nKEFILCAxLCAiZW50ZXJpbmcgbWFpbiBwYXJhbGxlbCBsb29wXG4iKTsKKwlw Z19sb2dfaW5mbygiZW50ZXJpbmcgbWFpbiBwYXJhbGxlbCBsb29wIik7CiAKIAlmb3IgKDs7 KQogCXsKQEAgLTQwNzUsNyArNDA0Myw3IEBAIHJlc3RvcmVfdG9jX2VudHJpZXNfcGFyYWxs ZWwoQXJjaGl2ZUhhbmRsZSAqQUgsIFBhcmFsbGVsU3RhdGUgKnBzdGF0ZSwKIAkJCS8qIElm IG5vdCB0byBiZSByZXN0b3JlZCwgZG9uJ3Qgd2FzdGUgdGltZSBsYXVuY2hpbmcgYSB3b3Jr ZXIgKi8KIAkJCWlmICgobmV4dF93b3JrX2l0ZW0tPnJlcXMgJiAoUkVRX1NDSEVNQSB8IFJF UV9EQVRBKSkgPT0gMCkKIAkJCXsKLQkJCQlhaGxvZyhBSCwgMSwgInNraXBwaW5nIGl0ZW0g JWQgJXMgJXNcbiIsCisJCQkJcGdfbG9nX2luZm8oInNraXBwaW5nIGl0ZW0gJWQgJXMgJXMi LAogCQkJCQkgIG5leHRfd29ya19pdGVtLT5kdW1wSWQsCiAJCQkJCSAgbmV4dF93b3JrX2l0 ZW0tPmRlc2MsIG5leHRfd29ya19pdGVtLT50YWcpOwogCQkJCS8qIFVwZGF0ZSBpdHMgZGVw ZW5kZW5jaWVzIGFzIHRob3VnaCB3ZSdkIGNvbXBsZXRlZCBpdCAqLwpAQCAtNDA4NCw3ICs0 MDUyLDcgQEAgcmVzdG9yZV90b2NfZW50cmllc19wYXJhbGxlbChBcmNoaXZlSGFuZGxlICpB SCwgUGFyYWxsZWxTdGF0ZSAqcHN0YXRlLAogCQkJCWNvbnRpbnVlOwogCQkJfQogCi0JCQlh aGxvZyhBSCwgMSwgImxhdW5jaGluZyBpdGVtICVkICVzICVzXG4iLAorCQkJcGdfbG9nX2lu Zm8oImxhdW5jaGluZyBpdGVtICVkICVzICVzIiwKIAkJCQkgIG5leHRfd29ya19pdGVtLT5k dW1wSWQsCiAJCQkJICBuZXh0X3dvcmtfaXRlbS0+ZGVzYywgbmV4dF93b3JrX2l0ZW0tPnRh Zyk7CiAKQEAgLTQxMzgsNyArNDEwNiw3IEBAIHJlc3RvcmVfdG9jX2VudHJpZXNfcGFyYWxs ZWwoQXJjaGl2ZUhhbmRsZSAqQUgsIFBhcmFsbGVsU3RhdGUgKnBzdGF0ZSwKIAogCXJlYWR5 X2xpc3RfZnJlZSgmcmVhZHlfbGlzdCk7CiAKLQlhaGxvZyhBSCwgMSwgImZpbmlzaGVkIG1h aW4gcGFyYWxsZWwgbG9vcFxuIik7CisJcGdfbG9nX2luZm8oImZpbmlzaGVkIG1haW4gcGFy YWxsZWwgbG9vcCIpOwogfQogCiAvKgpAQCAtNDE1Niw3ICs0MTI0LDcgQEAgcmVzdG9yZV90 b2NfZW50cmllc19wb3N0Zm9yayhBcmNoaXZlSGFuZGxlICpBSCwgVG9jRW50cnkgKnBlbmRp bmdfbGlzdCkKIAlSZXN0b3JlT3B0aW9ucyAqcm9wdCA9IEFILT5wdWJsaWMucm9wdDsKIAlU b2NFbnRyeSAgICp0ZTsKIAotCWFobG9nKEFILCAyLCAiZW50ZXJpbmcgcmVzdG9yZV90b2Nf ZW50cmllc19wb3N0Zm9ya1xuIik7CisJcGdfbG9nX2RlYnVnKCJlbnRlcmluZyByZXN0b3Jl X3RvY19lbnRyaWVzX3Bvc3Rmb3JrIik7CiAKIAkvKgogCSAqIE5vdyByZWNvbm5lY3QgdGhl IHNpbmdsZSBwYXJlbnQgY29ubmVjdGlvbi4KQEAgLTQxNzYsNyArNDE0NCw3IEBAIHJlc3Rv cmVfdG9jX2VudHJpZXNfcG9zdGZvcmsoQXJjaGl2ZUhhbmRsZSAqQUgsIFRvY0VudHJ5ICpw ZW5kaW5nX2xpc3QpCiAJICovCiAJZm9yICh0ZSA9IHBlbmRpbmdfbGlzdC0+cGVuZGluZ19u ZXh0OyB0ZSAhPSBwZW5kaW5nX2xpc3Q7IHRlID0gdGUtPnBlbmRpbmdfbmV4dCkKIAl7Ci0J CWFobG9nKEFILCAxLCAicHJvY2Vzc2luZyBtaXNzZWQgaXRlbSAlZCAlcyAlc1xuIiwKKwkJ cGdfbG9nX2luZm8oInByb2Nlc3NpbmcgbWlzc2VkIGl0ZW0gJWQgJXMgJXMiLAogCQkJICB0 ZS0+ZHVtcElkLCB0ZS0+ZGVzYywgdGUtPnRhZyk7CiAJCSh2b2lkKSByZXN0b3JlX3RvY19l bnRyeShBSCwgdGUsIGZhbHNlKTsKIAl9CkBAIC00NDE4LDcgKzQzODYsNyBAQCBwb3BfbmV4 dF93b3JrX2l0ZW0oQXJjaGl2ZUhhbmRsZSAqQUgsIFBhcmFsbGVsUmVhZHlMaXN0ICpyZWFk eV9saXN0LAogCQlyZXR1cm4gdGU7CiAJfQogCi0JYWhsb2coQUgsIDIsICJubyBpdGVtIHJl YWR5XG4iKTsKKwlwZ19sb2dfZGVidWcoIm5vIGl0ZW0gcmVhZHkiKTsKIAlyZXR1cm4gTlVM TDsKIH0KIApAQCAtNDQ2Miw3ICs0NDMwLDcgQEAgbWFya19yZXN0b3JlX2pvYl9kb25lKEFy Y2hpdmVIYW5kbGUgKkFILAogewogCVBhcmFsbGVsUmVhZHlMaXN0ICpyZWFkeV9saXN0ID0g KFBhcmFsbGVsUmVhZHlMaXN0ICopIGNhbGxiYWNrX2RhdGE7CiAKLQlhaGxvZyhBSCwgMSwg ImZpbmlzaGVkIGl0ZW0gJWQgJXMgJXNcbiIsCisJcGdfbG9nX2luZm8oImZpbmlzaGVkIGl0 ZW0gJWQgJXMgJXMiLAogCQkgIHRlLT5kdW1wSWQsIHRlLT5kZXNjLCB0ZS0+dGFnKTsKIAog CWlmIChzdGF0dXMgPT0gV09SS0VSX0NSRUFURV9ET05FKQpAQCAtNDQ3NSw3ICs0NDQzLDcg QEAgbWFya19yZXN0b3JlX2pvYl9kb25lKEFyY2hpdmVIYW5kbGUgKkFILAogCWVsc2UgaWYg KHN0YXR1cyA9PSBXT1JLRVJfSUdOT1JFRF9FUlJPUlMpCiAJCUFILT5wdWJsaWMubl9lcnJv cnMrKzsKIAllbHNlIGlmIChzdGF0dXMgIT0gMCkKLQkJZXhpdF9ob3JyaWJseShtb2R1bGVu YW1lLCAid29ya2VyIHByb2Nlc3MgZmFpbGVkOiBleGl0IGNvZGUgJWRcbiIsCisJCWZhdGFs KCJ3b3JrZXIgcHJvY2VzcyBmYWlsZWQ6IGV4aXQgY29kZSAlZCIsCiAJCQkJCSAgc3RhdHVz KTsKIAogCXJlZHVjZV9kZXBlbmRlbmNpZXMoQUgsIHRlLCByZWFkeV9saXN0KTsKQEAgLTQ2 NDcsNyArNDYxNSw3IEBAIHJlcG9pbnRfdGFibGVfZGVwZW5kZW5jaWVzKEFyY2hpdmVIYW5k bGUgKkFIKQogCiAJCQkJdGUtPmRlcGVuZGVuY2llc1tpXSA9IHRhYmxlZGF0YWlkOwogCQkJ CXRlLT5kYXRhTGVuZ3RoID0gTWF4KHRlLT5kYXRhTGVuZ3RoLCB0YWJsZWRhdGF0ZS0+ZGF0 YUxlbmd0aCk7Ci0JCQkJYWhsb2coQUgsIDIsICJ0cmFuc2ZlcnJpbmcgZGVwZW5kZW5jeSAl ZCAtPiAlZCB0byAlZFxuIiwKKwkJCQlwZ19sb2dfZGVidWcoInRyYW5zZmVycmluZyBkZXBl bmRlbmN5ICVkIC0+ICVkIHRvICVkIiwKIAkJCQkJICB0ZS0+ZHVtcElkLCBvbGRkZXAsIHRh YmxlZGF0YWlkKTsKIAkJCX0KIAkJfQpAQCAtNDcyOSw3ICs0Njk3LDcgQEAgcmVkdWNlX2Rl cGVuZGVuY2llcyhBcmNoaXZlSGFuZGxlICpBSCwgVG9jRW50cnkgKnRlLAogewogCWludAkJ CWk7CiAKLQlhaGxvZyhBSCwgMiwgInJlZHVjaW5nIGRlcGVuZGVuY2llcyBmb3IgJWRcbiIs IHRlLT5kdW1wSWQpOworCXBnX2xvZ19kZWJ1ZygicmVkdWNpbmcgZGVwZW5kZW5jaWVzIGZv ciAlZCIsIHRlLT5kdW1wSWQpOwogCiAJZm9yIChpID0gMDsgaSA8IHRlLT5uUmV2RGVwczsg aSsrKQogCXsKQEAgLTQ3ODEsNyArNDc0OSw3IEBAIG1hcmtfY3JlYXRlX2RvbmUoQXJjaGl2 ZUhhbmRsZSAqQUgsIFRvY0VudHJ5ICp0ZSkKIHN0YXRpYyB2b2lkCiBpbmhpYml0X2RhdGFf Zm9yX2ZhaWxlZF90YWJsZShBcmNoaXZlSGFuZGxlICpBSCwgVG9jRW50cnkgKnRlKQogewot CWFobG9nKEFILCAxLCAidGFibGUgXCIlc1wiIGNvdWxkIG5vdCBiZSBjcmVhdGVkLCB3aWxs IG5vdCByZXN0b3JlIGl0cyBkYXRhXG4iLAorCXBnX2xvZ19pbmZvKCJ0YWJsZSBcIiVzXCIg Y291bGQgbm90IGJlIGNyZWF0ZWQsIHdpbGwgbm90IHJlc3RvcmUgaXRzIGRhdGEiLAogCQkg IHRlLT50YWcpOwogCiAJaWYgKEFILT50YWJsZURhdGFJZFt0ZS0+ZHVtcElkXSAhPSAwKQpk aWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9hcmNoaXZlci5oIGIvc3Jj L2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9hcmNoaXZlci5oCmluZGV4IDMwNmQyY2ViYTkuLjFl MzY2MTU1YjQgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfYXJjaGl2 ZXIuaAorKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2FyY2hpdmVyLmgKQEAgLTEy NiwxNyArMTI2LDE0IEBAIHN0cnVjdCBQYXJhbGxlbFN0YXRlOwogI2RlZmluZSBSRUFEX0VS Uk9SX0VYSVQoZmQpIFwKIAlkbyB7IFwKIAkJaWYgKGZlb2YoZmQpKSBcCi0JCQlleGl0X2hv cnJpYmx5KG1vZHVsZW5hbWUsIFwKLQkJCQkJCSAgImNvdWxkIG5vdCByZWFkIGZyb20gaW5w dXQgZmlsZTogZW5kIG9mIGZpbGVcbiIpOyBcCisJCQlmYXRhbCgiY291bGQgbm90IHJlYWQg ZnJvbSBpbnB1dCBmaWxlOiBlbmQgb2YgZmlsZSIpOyBcCiAJCWVsc2UgXAotCQkJZXhpdF9o b3JyaWJseShtb2R1bGVuYW1lLCBcCi0JCQkJCSJjb3VsZCBub3QgcmVhZCBmcm9tIGlucHV0 IGZpbGU6ICVzXG4iLCBzdHJlcnJvcihlcnJubykpOyBcCisJCQlmYXRhbCgiY291bGQgbm90 IHJlYWQgZnJvbSBpbnB1dCBmaWxlOiAlbSIpOyBcCiAJfSB3aGlsZSAoMCkKIAogI2RlZmlu ZSBXUklURV9FUlJPUl9FWElUIFwKIAlkbyB7IFwKLQkJZXhpdF9ob3JyaWJseShtb2R1bGVu YW1lLCAiY291bGQgbm90IHdyaXRlIHRvIG91dHB1dCBmaWxlOiAlc1xuIiwgXAotCQkJCQkg IHN0cmVycm9yKGVycm5vKSk7IFwKKwkJZmF0YWwoImNvdWxkIG5vdCB3cml0ZSB0byBvdXRw dXQgZmlsZTogJW0iKTsgXAogCX0gd2hpbGUgKDApCiAKIHR5cGVkZWYgZW51bSBUX0FjdGlv bgpAQCAtMjQ2LDggKzI0Myw2IEBAIHN0cnVjdCBfYXJjaGl2ZUhhbmRsZQogCWNoYXIJICAg KmFyY2hpdmVEdW1wVmVyc2lvbjsgLyogV2hlbiByZWFkaW5nIGFuIGFyY2hpdmUsIHRoZSB2 ZXJzaW9uIG9mCiAJCQkJCQkJCQkgKiB0aGUgZHVtcGVyICovCiAKLQlpbnQJCQlkZWJ1Z0xl dmVsOwkJLyogVXNlZCBmb3IgbG9nZ2luZyAoY3VycmVudGx5IG9ubHkgYnkKLQkJCQkJCQkJ ICogLS12ZXJib3NlKSAqLwogCXNpemVfdAkJaW50U2l6ZTsJCS8qIFNpemUgb2YgYW4gaW50 ZWdlciBpbiB0aGUgYXJjaGl2ZSAqLwogCXNpemVfdAkJb2ZmU2l6ZTsJCS8qIFNpemUgb2Yg YSBmaWxlIG9mZnNldCBpbiB0aGUgYXJjaGl2ZSAtCiAJCQkJCQkJCSAqIEFkZGVkIFYxLjcg Ki8KQEAgLTQ2OCw2ICs0NjMsNCBAQCBleHRlcm4gdm9pZCBEcm9wQmxvYklmRXhpc3RzKEFy Y2hpdmVIYW5kbGUgKkFILCBPaWQgb2lkKTsKIHZvaWQJCWFod3JpdGUoY29uc3Qgdm9pZCAq cHRyLCBzaXplX3Qgc2l6ZSwgc2l6ZV90IG5tZW1iLCBBcmNoaXZlSGFuZGxlICpBSCk7CiBp bnQJCQlhaHByaW50ZihBcmNoaXZlSGFuZGxlICpBSCwgY29uc3QgY2hhciAqZm10LC4uLikg cGdfYXR0cmlidXRlX3ByaW50ZigyLCAzKTsKIAotdm9pZAkJYWhsb2coQXJjaGl2ZUhhbmRs ZSAqQUgsIGludCBsZXZlbCwgY29uc3QgY2hhciAqZm10LC4uLikgcGdfYXR0cmlidXRlX3By aW50ZigzLCA0KTsKLQogI2VuZGlmCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdf YmFja3VwX2N1c3RvbS5jIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9jdXN0b20uYwpp bmRleCA5NmY0NGU4OGIxLi5lODExYzZjOTFhIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1 bXAvcGdfYmFja3VwX2N1c3RvbS5jCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBf Y3VzdG9tLmMKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJwYXJhbGxlbC5oIgogI2lu Y2x1ZGUgInBnX2JhY2t1cF91dGlscy5oIgogI2luY2x1ZGUgImNvbW1vbi9maWxlX3V0aWxz LmgiCisjaW5jbHVkZSAiZmVfdXRpbHMvbG9nZ2luZy5oIgogCiAvKi0tLS0tLS0tCiAgKiBS b3V0aW5lcyBpbiB0aGUgZm9ybWF0IGludGVyZmFjZQpAQCAtOTEsOSArOTIsNiBAQCBzdGF0 aWMgcGdvZmZfdCBfZ2V0RmlsZVBvcyhBcmNoaXZlSGFuZGxlICpBSCwgbGNsQ29udGV4dCAq Y3R4KTsKIHN0YXRpYyB2b2lkIF9DdXN0b21Xcml0ZUZ1bmMoQXJjaGl2ZUhhbmRsZSAqQUgs IGNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90IGxlbik7CiBzdGF0aWMgc2l6ZV90IF9DdXN0b21S ZWFkRnVuYyhBcmNoaXZlSGFuZGxlICpBSCwgY2hhciAqKmJ1Ziwgc2l6ZV90ICpidWZsZW4p OwogCi0vKiB0cmFuc2xhdG9yOiB0aGlzIGlzIGEgbW9kdWxlIG5hbWUgKi8KLXN0YXRpYyBj b25zdCBjaGFyICptb2R1bGVuYW1lID0gZ2V0dGV4dF9ub29wKCJjdXN0b20gYXJjaGl2ZXIi KTsKLQogCiAKIC8qCkBAIC0xNTksMTUgKzE1NywxMyBAQCBJbml0QXJjaGl2ZUZtdF9DdXN0 b20oQXJjaGl2ZUhhbmRsZSAqQUgpCiAJCXsKIAkJCUFILT5GSCA9IGZvcGVuKEFILT5mU3Bl YywgUEdfQklOQVJZX1cpOwogCQkJaWYgKCFBSC0+RkgpCi0JCQkJZXhpdF9ob3JyaWJseSht b2R1bGVuYW1lLCAiY291bGQgbm90IG9wZW4gb3V0cHV0IGZpbGUgXCIlc1wiOiAlc1xuIiwK LQkJCQkJCQkgIEFILT5mU3BlYywgc3RyZXJyb3IoZXJybm8pKTsKKwkJCQlmYXRhbCgiY291 bGQgbm90IG9wZW4gb3V0cHV0IGZpbGUgXCIlc1wiOiAlbSIsIEFILT5mU3BlYyk7CiAJCX0K IAkJZWxzZQogCQl7CiAJCQlBSC0+RkggPSBzdGRvdXQ7CiAJCQlpZiAoIUFILT5GSCkKLQkJ CQlleGl0X2hvcnJpYmx5KG1vZHVsZW5hbWUsICJjb3VsZCBub3Qgb3BlbiBvdXRwdXQgZmls ZTogJXNcbiIsCi0JCQkJCQkJICBzdHJlcnJvcihlcnJubykpOworCQkJCWZhdGFsKCJjb3Vs ZCBub3Qgb3BlbiBvdXRwdXQgZmlsZTogJW0iKTsKIAkJfQogCiAJCWN0eC0+aGFzU2VlayA9 IGNoZWNrU2VlayhBSC0+RkgpOwpAQCAtMTc4LDE1ICsxNzQsMTMgQEAgSW5pdEFyY2hpdmVG bXRfQ3VzdG9tKEFyY2hpdmVIYW5kbGUgKkFIKQogCQl7CiAJCQlBSC0+RkggPSBmb3BlbihB SC0+ZlNwZWMsIFBHX0JJTkFSWV9SKTsKIAkJCWlmICghQUgtPkZIKQotCQkJCWV4aXRfaG9y cmlibHkobW9kdWxlbmFtZSwgImNvdWxkIG5vdCBvcGVuIGlucHV0IGZpbGUgXCIlc1wiOiAl c1xuIiwKLQkJCQkJCQkgIEFILT5mU3BlYywgc3RyZXJyb3IoZXJybm8pKTsKKwkJCQlmYXRh bCgiY291bGQgbm90IG9wZW4gaW5wdXQgZmlsZSBcIiVzXCI6ICVtIiwgQUgtPmZTcGVjKTsK IAkJfQogCQllbHNlCiAJCXsKIAkJCUFILT5GSCA9IHN0ZGluOwogCQkJaWYgKCFBSC0+Rkgp Ci0JCQkJZXhpdF9ob3JyaWJseShtb2R1bGVuYW1lLCAiY291bGQgbm90IG9wZW4gaW5wdXQg ZmlsZTogJXNcbiIsCi0JCQkJCQkJICBzdHJlcnJvcihlcnJubykpOworCQkJCWZhdGFsKCJj b3VsZCBub3Qgb3BlbiBpbnB1dCBmaWxlOiAlbSIpOwogCQl9CiAKIAkJY3R4LT5oYXNTZWVr ID0gY2hlY2tTZWVrKEFILT5GSCk7CkBAIC0zODEsNyArMzc1LDcgQEAgX1N0YXJ0QmxvYihB cmNoaXZlSGFuZGxlICpBSCwgVG9jRW50cnkgKnRlLCBPaWQgb2lkKQogCWxjbENvbnRleHQg KmN0eCA9IChsY2xDb250ZXh0ICopIEFILT5mb3JtYXREYXRhOwogCiAJaWYgKG9pZCA9PSAw KQotCQlleGl0X2hvcnJpYmx5KG1vZHVsZW5hbWUsICJpbnZhbGlkIE9JRCBmb3IgbGFyZ2Ug b2JqZWN0XG4iKTsKKwkJZmF0YWwoImludmFsaWQgT0lEIGZvciBsYXJnZSBvYmplY3QiKTsK IAogCVdyaXRlSW50KEFILCBvaWQpOwogCkBAIC00NTEsOCArNDQ1LDcgQEAgX1ByaW50VG9j RGF0YShBcmNoaXZlSGFuZGxlICpBSCwgVG9jRW50cnkgKnRlKQogCQkJCQlicmVhazsKIAog CQkJCWRlZmF1bHQ6CQkvKiBBbHdheXMgaGF2ZSBhIGRlZmF1bHQgKi8KLQkJCQkJZXhpdF9o b3JyaWJseShtb2R1bGVuYW1lLAotCQkJCQkJCQkgICJ1bnJlY29nbml6ZWQgZGF0YSBibG9j ayB0eXBlICglZCkgd2hpbGUgc2VhcmNoaW5nIGFyY2hpdmVcbiIsCisJCQkJCWZhdGFsKCJ1 bnJlY29nbml6ZWQgZGF0YSBibG9jayB0eXBlICglZCkgd2hpbGUgc2VhcmNoaW5nIGFyY2hp dmUiLAogCQkJCQkJCQkgIGJsa1R5cGUpOwogCQkJCQlicmVhazsKIAkJCX0KQEAgLTQ2Myw4 ICs0NTYsNyBAQCBfUHJpbnRUb2NEYXRhKEFyY2hpdmVIYW5kbGUgKkFILCBUb2NFbnRyeSAq dGUpCiAJewogCQkvKiBXZSBjYW4ganVzdCBzZWVrIHRvIHRoZSBwbGFjZSB3ZSBuZWVkIHRv IGJlLiAqLwogCQlpZiAoZnNlZWtvKEFILT5GSCwgdGN0eC0+ZGF0YVBvcywgU0VFS19TRVQp ICE9IDApCi0JCQlleGl0X2hvcnJpYmx5KG1vZHVsZW5hbWUsICJlcnJvciBkdXJpbmcgZmls ZSBzZWVrOiAlc1xuIiwKLQkJCQkJCSAgc3RyZXJyb3IoZXJybm8pKTsKKwkJCWZhdGFsKCJl cnJvciBkdXJpbmcgZmlsZSBzZWVrOiAlbSIpOwogCiAJCV9yZWFkQmxvY2tIZWFkZXIoQUgs ICZibGtUeXBlLCAmaWQpOwogCX0KQEAgLTQ3MywyNCArNDY1LDI0IEBAIF9QcmludFRvY0Rh dGEoQXJjaGl2ZUhhbmRsZSAqQUgsIFRvY0VudHJ5ICp0ZSkKIAlpZiAoYmxrVHlwZSA9PSBF T0YpCiAJewogCQlpZiAodGN0eC0+ZGF0YVN0YXRlID09IEtfT0ZGU0VUX1BPU19OT1RfU0VU KQotCQkJZXhpdF9ob3JyaWJseShtb2R1bGVuYW1lLCAiY291bGQgbm90IGZpbmQgYmxvY2sg SUQgJWQgaW4gYXJjaGl2ZSAtLSAiCi0JCQkJCQkgICJwb3NzaWJseSBkdWUgdG8gb3V0LW9m LW9yZGVyIHJlc3RvcmUgcmVxdWVzdCwgIgotCQkJCQkJICAid2hpY2ggY2Fubm90IGJlIGhh bmRsZWQgZHVlIHRvIGxhY2sgb2YgZGF0YSBvZmZzZXRzIGluIGFyY2hpdmVcbiIsCi0JCQkJ CQkgIHRlLT5kdW1wSWQpOworCQkJZmF0YWwoImNvdWxkIG5vdCBmaW5kIGJsb2NrIElEICVk IGluIGFyY2hpdmUgLS0gIgorCQkJCSAgInBvc3NpYmx5IGR1ZSB0byBvdXQtb2Ytb3JkZXIg cmVzdG9yZSByZXF1ZXN0LCAiCisJCQkJICAid2hpY2ggY2Fubm90IGJlIGhhbmRsZWQgZHVl IHRvIGxhY2sgb2YgZGF0YSBvZmZzZXRzIGluIGFyY2hpdmUiLAorCQkJCSAgdGUtPmR1bXBJ ZCk7CiAJCWVsc2UgaWYgKCFjdHgtPmhhc1NlZWspCi0JCQlleGl0X2hvcnJpYmx5KG1vZHVs ZW5hbWUsICJjb3VsZCBub3QgZmluZCBibG9jayBJRCAlZCBpbiBhcmNoaXZlIC0tICIKLQkJ CQkJCSAgInBvc3NpYmx5IGR1ZSB0byBvdXQtb2Ytb3JkZXIgcmVzdG9yZSByZXF1ZXN0LCAi Ci0JCQkJCQkgICJ3aGljaCBjYW5ub3QgYmUgaGFuZGxlZCBkdWUgdG8gbm9uLXNlZWthYmxl IGlucHV0IGZpbGVcbiIsCi0JCQkJCQkgIHRlLT5kdW1wSWQpOworCQkJZmF0YWwoImNvdWxk IG5vdCBmaW5kIGJsb2NrIElEICVkIGluIGFyY2hpdmUgLS0gIgorCQkJCSAgInBvc3NpYmx5 IGR1ZSB0byBvdXQtb2Ytb3JkZXIgcmVzdG9yZSByZXF1ZXN0LCAiCisJCQkJICAid2hpY2gg Y2Fubm90IGJlIGhhbmRsZWQgZHVlIHRvIG5vbi1zZWVrYWJsZSBpbnB1dCBmaWxlIiwKKwkJ CQkgIHRlLT5kdW1wSWQpOwogCQllbHNlCQkJCQkvKiBodWgsIHRoZSBkYXRhUG9zIGxlZCB1 cyB0byBFT0Y/ICovCi0JCQlleGl0X2hvcnJpYmx5KG1vZHVsZW5hbWUsICJjb3VsZCBub3Qg ZmluZCBibG9jayBJRCAlZCBpbiBhcmNoaXZlIC0tICIKLQkJCQkJCSAgInBvc3NpYmx5IGNv cnJ1cHQgYXJjaGl2ZVxuIiwKLQkJCQkJCSAgdGUtPmR1bXBJZCk7CisJCQlmYXRhbCgiY291 bGQgbm90IGZpbmQgYmxvY2sgSUQgJWQgaW4gYXJjaGl2ZSAtLSAiCisJCQkJICAicG9zc2li bHkgY29ycnVwdCBhcmNoaXZlIiwKKwkJCQkgIHRlLT5kdW1wSWQpOwogCX0KIAogCS8qIEFy ZSB3ZSBzYW5lPyAqLwogCWlmIChpZCAhPSB0ZS0+ZHVtcElkKQotCQlleGl0X2hvcnJpYmx5 KG1vZHVsZW5hbWUsICJmb3VuZCB1bmV4cGVjdGVkIGJsb2NrIElEICglZCkgd2hlbiByZWFk aW5nIGRhdGEgLS0gZXhwZWN0ZWQgJWRcbiIsCisJCWZhdGFsKCJmb3VuZCB1bmV4cGVjdGVk IGJsb2NrIElEICglZCkgd2hlbiByZWFkaW5nIGRhdGEgLS0gZXhwZWN0ZWQgJWQiLAogCQkJ CQkgIGlkLCB0ZS0+ZHVtcElkKTsKIAogCXN3aXRjaCAoYmxrVHlwZSkKQEAgLTUwNCw3ICs0 OTYsNyBAQCBfUHJpbnRUb2NEYXRhKEFyY2hpdmVIYW5kbGUgKkFILCBUb2NFbnRyeSAqdGUp CiAJCQlicmVhazsKIAogCQlkZWZhdWx0OgkJCQkvKiBBbHdheXMgaGF2ZSBhIGRlZmF1bHQg Ki8KLQkJCWV4aXRfaG9ycmlibHkobW9kdWxlbmFtZSwgInVucmVjb2duaXplZCBkYXRhIGJs b2NrIHR5cGUgJWQgd2hpbGUgcmVzdG9yaW5nIGFyY2hpdmVcbiIsCisJCQlmYXRhbCgidW5y ZWNvZ25pemVkIGRhdGEgYmxvY2sgdHlwZSAlZCB3aGlsZSByZXN0b3JpbmcgYXJjaGl2ZSIs CiAJCQkJCQkgIGJsa1R5cGUpOwogCQkJYnJlYWs7CiAJfQpAQCAtNTg0LDExICs1NzYsOSBA QCBfc2tpcERhdGEoQXJjaGl2ZUhhbmRsZSAqQUgpCiAJCWlmICgoY250ID0gZnJlYWQoYnVm LCAxLCBibGtMZW4sIEFILT5GSCkpICE9IGJsa0xlbikKIAkJewogCQkJaWYgKGZlb2YoQUgt PkZIKSkKLQkJCQlleGl0X2hvcnJpYmx5KG1vZHVsZW5hbWUsCi0JCQkJCQkJICAiY291bGQg bm90IHJlYWQgZnJvbSBpbnB1dCBmaWxlOiBlbmQgb2YgZmlsZVxuIik7CisJCQkJZmF0YWwo ImNvdWxkIG5vdCByZWFkIGZyb20gaW5wdXQgZmlsZTogZW5kIG9mIGZpbGUiKTsKIAkJCWVs c2UKLQkJCQlleGl0X2hvcnJpYmx5KG1vZHVsZW5hbWUsCi0JCQkJCQkJICAiY291bGQgbm90 IHJlYWQgZnJvbSBpbnB1dCBmaWxlOiAlc1xuIiwgc3RyZXJyb3IoZXJybm8pKTsKKwkJCQlm YXRhbCgiY291bGQgbm90IHJlYWQgZnJvbSBpbnB1dCBmaWxlOiAlbSIpOwogCQl9CiAKIAkJ Y3R4LT5maWxlUG9zICs9IGJsa0xlbjsKQEAgLTcwNiw4ICs2OTYsNyBAQCBfQ2xvc2VBcmNo aXZlKEFyY2hpdmVIYW5kbGUgKkFIKQogCQkvKiBSZW1lbWJlciBUT0MncyBzZWVrIHBvc2l0 aW9uIGZvciB1c2UgYmVsb3cgKi8KIAkJdHBvcyA9IGZ0ZWxsbyhBSC0+RkgpOwogCQlpZiAo dHBvcyA8IDAgJiYgY3R4LT5oYXNTZWVrKQotCQkJZXhpdF9ob3JyaWJseShtb2R1bGVuYW1l LCAiY291bGQgbm90IGRldGVybWluZSBzZWVrIHBvc2l0aW9uIGluIGFyY2hpdmUgZmlsZTog JXNcbiIsCi0JCQkJCQkgIHN0cmVycm9yKGVycm5vKSk7CisJCQlmYXRhbCgiY291bGQgbm90 IGRldGVybWluZSBzZWVrIHBvc2l0aW9uIGluIGFyY2hpdmUgZmlsZTogJW0iKTsKIAkJV3Jp dGVUb2MoQUgpOwogCQljdHgtPmRhdGFTdGFydCA9IF9nZXRGaWxlUG9zKEFILCBjdHgpOwog CQlXcml0ZURhdGFDaHVua3MoQUgsIE5VTEwpOwpAQCAtNzI0LDExICs3MTMsMTEgQEAgX0Ns b3NlQXJjaGl2ZShBcmNoaXZlSGFuZGxlICpBSCkKIAl9CiAKIAlpZiAoZmNsb3NlKEFILT5G SCkgIT0gMCkKLQkJZXhpdF9ob3JyaWJseShtb2R1bGVuYW1lLCAiY291bGQgbm90IGNsb3Nl IGFyY2hpdmUgZmlsZTogJXNcbiIsIHN0cmVycm9yKGVycm5vKSk7CisJCWZhdGFsKCJjb3Vs ZCBub3QgY2xvc2UgYXJjaGl2ZSBmaWxlOiAlbSIpOwogCiAJLyogU3luYyB0aGUgb3V0cHV0 IGZpbGUgaWYgb25lIGlzIGRlZmluZWQgKi8KIAlpZiAoQUgtPmRvc3luYyAmJiBBSC0+bW9k ZSA9PSBhcmNoTW9kZVdyaXRlICYmIEFILT5mU3BlYykKLQkJKHZvaWQpIGZzeW5jX2ZuYW1l KEFILT5mU3BlYywgZmFsc2UsIHByb2duYW1lKTsKKwkJKHZvaWQpIGZzeW5jX2ZuYW1lKEFI LT5mU3BlYywgZmFsc2UpOwogCiAJQUgtPkZIID0gTlVMTDsKIH0KQEAgLTc0NywzNiArNzM2 LDMyIEBAIF9SZW9wZW5BcmNoaXZlKEFyY2hpdmVIYW5kbGUgKkFIKQogCXBnb2ZmX3QJCXRw b3M7CiAKIAlpZiAoQUgtPm1vZGUgPT0gYXJjaE1vZGVXcml0ZSkKLQkJZXhpdF9ob3JyaWJs eShtb2R1bGVuYW1lLCAiY2FuIG9ubHkgcmVvcGVuIGlucHV0IGFyY2hpdmVzXG4iKTsKKwkJ ZmF0YWwoImNhbiBvbmx5IHJlb3BlbiBpbnB1dCBhcmNoaXZlcyIpOwogCiAJLyoKIAkgKiBU aGVzZSB0d28gY2FzZXMgYXJlIHVzZXItZmFjaW5nIGVycm9ycyBzaW5jZSB0aGV5IHJlcHJl c2VudCB1bnN1cHBvcnRlZAogCSAqIChidXQgbm90IGludmFsaWQpIHVzZS1jYXNlcy4gIFdv cmQgdGhlIGVycm9yIG1lc3NhZ2VzIGFwcHJvcHJpYXRlbHkuCiAJICovCiAJaWYgKEFILT5m U3BlYyA9PSBOVUxMIHx8IHN0cmNtcChBSC0+ZlNwZWMsICIiKSA9PSAwKQotCQlleGl0X2hv cnJpYmx5KG1vZHVsZW5hbWUsICJwYXJhbGxlbCByZXN0b3JlIGZyb20gc3RhbmRhcmQgaW5w dXQgaXMgbm90IHN1cHBvcnRlZFxuIik7CisJCWZhdGFsKCJwYXJhbGxlbCByZXN0b3JlIGZy b20gc3RhbmRhcmQgaW5wdXQgaXMgbm90IHN1cHBvcnRlZCIpOwogCWlmICghY3R4LT5oYXNT ZWVrKQotCQlleGl0X2hvcnJpYmx5KG1vZHVsZW5hbWUsICJwYXJhbGxlbCByZXN0b3JlIGZy b20gbm9uLXNlZWthYmxlIGZpbGUgaXMgbm90IHN1cHBvcnRlZFxuIik7CisJCWZhdGFsKCJw YXJhbGxlbCByZXN0b3JlIGZyb20gbm9uLXNlZWthYmxlIGZpbGUgaXMgbm90IHN1cHBvcnRl ZCIpOwogCiAJdHBvcyA9IGZ0ZWxsbyhBSC0+RkgpOwogCWlmICh0cG9zIDwgMCkKLQkJZXhp dF9ob3JyaWJseShtb2R1bGVuYW1lLCAiY291bGQgbm90IGRldGVybWluZSBzZWVrIHBvc2l0 aW9uIGluIGFyY2hpdmUgZmlsZTogJXNcbiIsCi0JCQkJCSAgc3RyZXJyb3IoZXJybm8pKTsK KwkJZmF0YWwoImNvdWxkIG5vdCBkZXRlcm1pbmUgc2VlayBwb3NpdGlvbiBpbiBhcmNoaXZl IGZpbGU6ICVtIik7CiAKICNpZm5kZWYgV0lOMzIKIAlpZiAoZmNsb3NlKEFILT5GSCkgIT0g MCkKLQkJZXhpdF9ob3JyaWJseShtb2R1bGVuYW1lLCAiY291bGQgbm90IGNsb3NlIGFyY2hp dmUgZmlsZTogJXNcbiIsCi0JCQkJCSAgc3RyZXJyb3IoZXJybm8pKTsKKwkJZmF0YWwoImNv dWxkIG5vdCBjbG9zZSBhcmNoaXZlIGZpbGU6ICVtIik7CiAjZW5kaWYKIAogCUFILT5GSCA9 IGZvcGVuKEFILT5mU3BlYywgUEdfQklOQVJZX1IpOwogCWlmICghQUgtPkZIKQotCQlleGl0 X2hvcnJpYmx5KG1vZHVsZW5hbWUsICJjb3VsZCBub3Qgb3BlbiBpbnB1dCBmaWxlIFwiJXNc IjogJXNcbiIsCi0JCQkJCSAgQUgtPmZTcGVjLCBzdHJlcnJvcihlcnJubykpOworCQlmYXRh bCgiY291bGQgbm90IG9wZW4gaW5wdXQgZmlsZSBcIiVzXCI6ICVtIiwgQUgtPmZTcGVjKTsK IAogCWlmIChmc2Vla28oQUgtPkZILCB0cG9zLCBTRUVLX1NFVCkgIT0gMCkKLQkJZXhpdF9o b3JyaWJseShtb2R1bGVuYW1lLCAiY291bGQgbm90IHNldCBzZWVrIHBvc2l0aW9uIGluIGFy Y2hpdmUgZmlsZTogJXNcbiIsCi0JCQkJCSAgc3RyZXJyb3IoZXJybm8pKTsKKwkJZmF0YWwo ImNvdWxkIG5vdCBzZXQgc2VlayBwb3NpdGlvbiBpbiBhcmNoaXZlIGZpbGU6ICVtIik7CiB9 CiAKIC8qCkBAIC04MzEsOCArODE2LDcgQEAgX1ByZXBQYXJhbGxlbFJlc3RvcmUoQXJjaGl2 ZUhhbmRsZSAqQUgpCiAJCXBnb2ZmX3QJCWVuZHBvczsKIAogCQlpZiAoZnNlZWtvKEFILT5G SCwgMCwgU0VFS19FTkQpICE9IDApCi0JCQlleGl0X2hvcnJpYmx5KG1vZHVsZW5hbWUsICJl cnJvciBkdXJpbmcgZmlsZSBzZWVrOiAlc1xuIiwKLQkJCQkJCSAgc3RyZXJyb3IoZXJybm8p KTsKKwkJCWZhdGFsKCJlcnJvciBkdXJpbmcgZmlsZSBzZWVrOiAlbSIpOwogCQllbmRwb3Mg PSBmdGVsbG8oQUgtPkZIKTsKIAkJaWYgKGVuZHBvcyA+IHByZXZfdGN0eC0+ZGF0YVBvcykK IAkJCXByZXZfdGUtPmRhdGFMZW5ndGggPSBlbmRwb3MgLSBwcmV2X3RjdHgtPmRhdGFQb3M7 CkBAIC04NTMsNyArODM3LDcgQEAgX0Nsb25lKEFyY2hpdmVIYW5kbGUgKkFIKQogCiAJLyog c2FuaXR5IGNoZWNrLCBzaG91bGRuJ3QgaGFwcGVuICovCiAJaWYgKGN0eC0+Y3MgIT0gTlVM TCkKLQkJZXhpdF9ob3JyaWJseShtb2R1bGVuYW1lLCAiY29tcHJlc3NvciBhY3RpdmVcbiIp OworCQlmYXRhbCgiY29tcHJlc3NvciBhY3RpdmUiKTsKIAogCS8qCiAJICogTm90ZTogd2Ug ZG8gbm90IG1ha2UgYSBsb2NhbCBsb19idWYgYmVjYXVzZSB3ZSBleHBlY3QgYXQgbW9zdCBv bmUgQkxPQlMKQEAgLTkwNSwxMSArODg5LDEwIEBAIF9nZXRGaWxlUG9zKEFyY2hpdmVIYW5k bGUgKkFILCBsY2xDb250ZXh0ICpjdHgpCiAJCSAqLwogCQlwb3MgPSBmdGVsbG8oQUgtPkZI KTsKIAkJaWYgKHBvcyA8IDApCi0JCQlleGl0X2hvcnJpYmx5KG1vZHVsZW5hbWUsICJjb3Vs ZCBub3QgZGV0ZXJtaW5lIHNlZWsgcG9zaXRpb24gaW4gYXJjaGl2ZSBmaWxlOiAlc1xuIiwK LQkJCQkJCSAgc3RyZXJyb3IoZXJybm8pKTsKKwkJCWZhdGFsKCJjb3VsZCBub3QgZGV0ZXJt aW5lIHNlZWsgcG9zaXRpb24gaW4gYXJjaGl2ZSBmaWxlOiAlbSIpOwogCiAJCWlmIChwb3Mg IT0gY3R4LT5maWxlUG9zKQotCQkJd3JpdGVfbXNnKG1vZHVsZW5hbWUsICJXQVJOSU5HOiBm dGVsbCBtaXNtYXRjaCB3aXRoIGV4cGVjdGVkIHBvc2l0aW9uIC0tIGZ0ZWxsIHVzZWRcbiIp OworCQkJcGdfbG9nX3dhcm5pbmcoImZ0ZWxsIG1pc21hdGNoIHdpdGggZXhwZWN0ZWQgcG9z aXRpb24gLS0gZnRlbGwgdXNlZCIpOwogCX0KIAllbHNlCiAJCXBvcyA9IGN0eC0+ZmlsZVBv czsKQEAgLTkyOCw3ICs5MTEsNyBAQCBfcmVhZEJsb2NrSGVhZGVyKEFyY2hpdmVIYW5kbGUg KkFILCBpbnQgKnR5cGUsIGludCAqaWQpCiAJaW50CQkJYnl0OwogCiAJLyoKLQkgKiBOb3Rl OiBpZiB3ZSBhcmUgYXQgRU9GIHdpdGggYSBwcmUtMS4zIGlucHV0IGZpbGUsIHdlJ2xsIGV4 aXRfaG9ycmlibHkKKwkgKiBOb3RlOiBpZiB3ZSBhcmUgYXQgRU9GIHdpdGggYSBwcmUtMS4z IGlucHV0IGZpbGUsIHdlJ2xsIGZhdGFsKCkKIAkgKiBpbnNpZGUgUmVhZEludCByYXRoZXIg dGhhbiByZXR1cm5pbmcgRU9GLiAgSXQgZG9lc24ndCBzZWVtIHdvcnRoCiAJICoganVtcGlu ZyB0aHJvdWdoIGhvb3BzIHRvIGRlYWwgd2l0aCB0aGF0IGNhc2UgYmV0dGVyLCBiZWNhdXNl IG5vIHN1Y2gKIAkgKiBmaWxlcyBhcmUgbGlrZWx5IHRvIGV4aXN0IGluIHRoZSB3aWxkOiBv bmx5IHNvbWUgNy4xIGRldmVsb3BtZW50CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAv cGdfYmFja3VwX2RiLmMgYi9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2RiLmMKaW5kZXgg NWUzMmVlOGE1Yi4uZmE1NzZlYjU4ZiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3Bn X2JhY2t1cF9kYi5jCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfZGIuYwpAQCAt MTMsNiArMTMsNyBAQAogCiAjaW5jbHVkZSAiZHVtcHV0aWxzLmgiCiAjaW5jbHVkZSAiZmVf dXRpbHMvY29ubmVjdC5oIgorI2luY2x1ZGUgImZlX3V0aWxzL2xvZ2dpbmcuaCIKICNpbmNs dWRlICJmZV91dGlscy9zdHJpbmdfdXRpbHMuaCIKICNpbmNsdWRlICJwYXJhbGxlbC5oIgog I2luY2x1ZGUgInBnX2JhY2t1cF9hcmNoaXZlci5oIgpAQCAtNDMsNyArNDQsNyBAQCBfY2hl Y2tfZGF0YWJhc2VfdmVyc2lvbihBcmNoaXZlSGFuZGxlICpBSCkKIAlyZW1vdGV2ZXJzaW9u X3N0ciA9IFBRcGFyYW1ldGVyU3RhdHVzKEFILT5jb25uZWN0aW9uLCAic2VydmVyX3ZlcnNp b24iKTsKIAlyZW1vdGV2ZXJzaW9uID0gUFFzZXJ2ZXJWZXJzaW9uKEFILT5jb25uZWN0aW9u KTsKIAlpZiAocmVtb3RldmVyc2lvbiA9PSAwIHx8ICFyZW1vdGV2ZXJzaW9uX3N0cikKLQkJ ZXhpdF9ob3JyaWJseShtb2R1bGVuYW1lLCAiY291bGQgbm90IGdldCBzZXJ2ZXJfdmVyc2lv biBmcm9tIGxpYnBxXG4iKTsKKwkJZmF0YWwoImNvdWxkIG5vdCBnZXQgc2VydmVyX3ZlcnNp b24gZnJvbSBsaWJwcSIpOwogCiAJQUgtPnB1YmxpYy5yZW1vdGVWZXJzaW9uU3RyID0gcGdf c3RyZHVwKHJlbW90ZXZlcnNpb25fc3RyKTsKIAlBSC0+cHVibGljLnJlbW90ZVZlcnNpb24g PSByZW1vdGV2ZXJzaW9uOwpAQCAtNTQsOSArNTUsOSBAQCBfY2hlY2tfZGF0YWJhc2VfdmVy c2lvbihBcmNoaXZlSGFuZGxlICpBSCkKIAkJJiYgKHJlbW90ZXZlcnNpb24gPCBBSC0+cHVi bGljLm1pblJlbW90ZVZlcnNpb24gfHwKIAkJCXJlbW90ZXZlcnNpb24gPiBBSC0+cHVibGlj Lm1heFJlbW90ZVZlcnNpb24pKQogCXsKLQkJd3JpdGVfbXNnKE5VTEwsICJzZXJ2ZXIgdmVy c2lvbjogJXM7ICVzIHZlcnNpb246ICVzXG4iLAorCQlwZ19sb2dfZXJyb3IoInNlcnZlciB2 ZXJzaW9uOiAlczsgJXMgdmVyc2lvbjogJXMiLAogCQkJCSAgcmVtb3RldmVyc2lvbl9zdHIs IHByb2duYW1lLCBQR19WRVJTSU9OKTsKLQkJZXhpdF9ob3JyaWJseShOVUxMLCAiYWJvcnRp bmcgYmVjYXVzZSBvZiBzZXJ2ZXIgdmVyc2lvbiBtaXNtYXRjaFxuIik7CisJCWZhdGFsKCJh Ym9ydGluZyBiZWNhdXNlIG9mIHNlcnZlciB2ZXJzaW9uIG1pc21hdGNoIik7CiAJfQogCiAJ LyoKQEAgLTEzOSw3ICsxNDAsNyBAQCBfY29ubmVjdERCKEFyY2hpdmVIYW5kbGUgKkFILCBj b25zdCBjaGFyICpyZXFkYiwgY29uc3QgY2hhciAqcmVxdXNlcikKIAllbHNlCiAJCW5ld3Vz ZXIgPSByZXF1c2VyOwogCi0JYWhsb2coQUgsIDEsICJjb25uZWN0aW5nIHRvIGRhdGFiYXNl IFwiJXNcIiBhcyB1c2VyIFwiJXNcIlxuIiwKKwlwZ19sb2dfaW5mbygiY29ubmVjdGluZyB0 byBkYXRhYmFzZSBcIiVzXCIgYXMgdXNlciBcIiVzXCIiLAogCQkgIG5ld2RiLCBuZXd1c2Vy KTsKIAogCXBhc3N3b3JkID0gQUgtPnNhdmVkUGFzc3dvcmQ7CkBAIC0xNzgsMTIgKzE3OSwx MiBAQCBfY29ubmVjdERCKEFyY2hpdmVIYW5kbGUgKkFILCBjb25zdCBjaGFyICpyZXFkYiwg Y29uc3QgY2hhciAqcmVxdXNlcikKIAkJbmV3Q29ubiA9IFBRY29ubmVjdGRiUGFyYW1zKGtl eXdvcmRzLCB2YWx1ZXMsIHRydWUpOwogCiAJCWlmICghbmV3Q29ubikKLQkJCWV4aXRfaG9y cmlibHkobW9kdWxlbmFtZSwgImZhaWxlZCB0byByZWNvbm5lY3QgdG8gZGF0YWJhc2VcbiIp OworCQkJZmF0YWwoImZhaWxlZCB0byByZWNvbm5lY3QgdG8gZGF0YWJhc2UiKTsKIAogCQlp ZiAoUFFzdGF0dXMobmV3Q29ubikgPT0gQ09OTkVDVElPTl9CQUQpCiAJCXsKIAkJCWlmICgh UFFjb25uZWN0aW9uTmVlZHNQYXNzd29yZChuZXdDb25uKSkKLQkJCQlleGl0X2hvcnJpYmx5 KG1vZHVsZW5hbWUsICJjb3VsZCBub3QgcmVjb25uZWN0IHRvIGRhdGFiYXNlOiAlcyIsCisJ CQkJZmF0YWwoImNvdWxkIG5vdCByZWNvbm5lY3QgdG8gZGF0YWJhc2U6ICVzIiwKIAkJCQkJ CQkgIFBRZXJyb3JNZXNzYWdlKG5ld0Nvbm4pKTsKIAkJCVBRZmluaXNoKG5ld0Nvbm4pOwog CkBAIC0xOTksNyArMjAwLDcgQEAgX2Nvbm5lY3REQihBcmNoaXZlSGFuZGxlICpBSCwgY29u c3QgY2hhciAqcmVxZGIsIGNvbnN0IGNoYXIgKnJlcXVzZXIpCiAJCQkJcGFzc3dvcmQgPSBw YXNzYnVmOwogCQkJfQogCQkJZWxzZQotCQkJCWV4aXRfaG9ycmlibHkobW9kdWxlbmFtZSwg ImNvbm5lY3Rpb24gbmVlZHMgcGFzc3dvcmRcbiIpOworCQkJCWZhdGFsKCJjb25uZWN0aW9u IG5lZWRzIHBhc3N3b3JkIik7CiAKIAkJCW5ld19wYXNzID0gdHJ1ZTsKIAkJfQpAQCAtMjUw LDcgKzI1MSw3IEBAIENvbm5lY3REYXRhYmFzZShBcmNoaXZlICpBSFgsCiAJYm9vbAkJbmV3 X3Bhc3M7CiAKIAlpZiAoQUgtPmNvbm5lY3Rpb24pCi0JCWV4aXRfaG9ycmlibHkobW9kdWxl bmFtZSwgImFscmVhZHkgY29ubmVjdGVkIHRvIGEgZGF0YWJhc2VcbiIpOworCQlmYXRhbCgi YWxyZWFkeSBjb25uZWN0ZWQgdG8gYSBkYXRhYmFzZSIpOwogCiAJcGFzc3dvcmQgPSBBSC0+ c2F2ZWRQYXNzd29yZDsKIApAQCAtMjg5LDcgKzI5MCw3IEBAIENvbm5lY3REYXRhYmFzZShB cmNoaXZlICpBSFgsCiAJCUFILT5jb25uZWN0aW9uID0gUFFjb25uZWN0ZGJQYXJhbXMoa2V5 d29yZHMsIHZhbHVlcywgdHJ1ZSk7CiAKIAkJaWYgKCFBSC0+Y29ubmVjdGlvbikKLQkJCWV4 aXRfaG9ycmlibHkobW9kdWxlbmFtZSwgImZhaWxlZCB0byBjb25uZWN0IHRvIGRhdGFiYXNl XG4iKTsKKwkJCWZhdGFsKCJmYWlsZWQgdG8gY29ubmVjdCB0byBkYXRhYmFzZSIpOwogCiAJ CWlmIChQUXN0YXR1cyhBSC0+Y29ubmVjdGlvbikgPT0gQ09OTkVDVElPTl9CQUQgJiYKIAkJ CVBRY29ubmVjdGlvbk5lZWRzUGFzc3dvcmQoQUgtPmNvbm5lY3Rpb24pICYmCkBAIC0zMDUs NyArMzA2LDcgQEAgQ29ubmVjdERhdGFiYXNlKEFyY2hpdmUgKkFIWCwKIAogCS8qIGNoZWNr IHRvIHNlZSB0aGF0IHRoZSBiYWNrZW5kIGNvbm5lY3Rpb24gd2FzIHN1Y2Nlc3NmdWxseSBt YWRlICovCiAJaWYgKFBRc3RhdHVzKEFILT5jb25uZWN0aW9uKSA9PSBDT05ORUNUSU9OX0JB RCkKLQkJZXhpdF9ob3JyaWJseShtb2R1bGVuYW1lLCAiY29ubmVjdGlvbiB0byBkYXRhYmFz ZSBcIiVzXCIgZmFpbGVkOiAlcyIsCisJCWZhdGFsKCJjb25uZWN0aW9uIHRvIGRhdGFiYXNl IFwiJXNcIiBmYWlsZWQ6ICVzIiwKIAkJCQkJICBQUWRiKEFILT5jb25uZWN0aW9uKSA/IFBR ZGIoQUgtPmNvbm5lY3Rpb24pIDogIiIsCiAJCQkJCSAgUFFlcnJvck1lc3NhZ2UoQUgtPmNv bm5lY3Rpb24pKTsKIApAQCAtMzUxLDcgKzM1Miw3IEBAIERpc2Nvbm5lY3REYXRhYmFzZShB cmNoaXZlICpBSFgpCiAJCS8qCiAJCSAqIElmIHdlIGhhdmUgYW4gYWN0aXZlIHF1ZXJ5LCBz ZW5kIGEgY2FuY2VsIGJlZm9yZSBjbG9zaW5nLCBpZ25vcmluZwogCQkgKiBhbnkgZXJyb3Jz LiAgVGhpcyBpcyBvZiBubyB1c2UgZm9yIGEgbm9ybWFsIGV4aXQsIGJ1dCBtaWdodCBiZQot CQkgKiBoZWxwZnVsIGR1cmluZyBleGl0X2hvcnJpYmx5KCkuCisJCSAqIGhlbHBmdWwgZHVy aW5nIGZhdGFsKCkuCiAJCSAqLwogCQlpZiAoUFF0cmFuc2FjdGlvblN0YXR1cyhBSC0+Y29u bmVjdGlvbikgPT0gUFFUUkFOU19BQ1RJVkUpCiAJCQkodm9pZCkgUFFjYW5jZWwoQUgtPmNv bm5DYW5jZWwsIGVycmJ1Ziwgc2l6ZW9mKGVycmJ1ZikpOwpAQCAtMzgwLDEzICszODEsMTMg QEAgbm90aWNlX3Byb2Nlc3Nvcih2b2lkICphcmcsIGNvbnN0IGNoYXIgKm1lc3NhZ2UpCiAJ d3JpdGVfbXNnKE5VTEwsICIlcyIsIG1lc3NhZ2UpOwogfQogCi0vKiBMaWtlIGV4aXRfaG9y cmlibHkoKSwgYnV0IHdpdGggYSBjb21wbGFpbnQgYWJvdXQgYSBwYXJ0aWN1bGFyIHF1ZXJ5 LiAqLworLyogTGlrZSBleGl0X2ZhdGFsKCksIGJ1dCB3aXRoIGEgY29tcGxhaW50IGFib3V0 IGEgcGFydGljdWxhciBxdWVyeS4gKi8KIHN0YXRpYyB2b2lkCiBkaWVfb25fcXVlcnlfZmFp bHVyZShBcmNoaXZlSGFuZGxlICpBSCwgY29uc3QgY2hhciAqbW9kdWxlbmFtZSwgY29uc3Qg Y2hhciAqcXVlcnkpCiB7Ci0Jd3JpdGVfbXNnKG1vZHVsZW5hbWUsICJxdWVyeSBmYWlsZWQ6 ICVzIiwKKwlwZ19sb2dfZXJyb3IoInF1ZXJ5IGZhaWxlZDogJXMiLAogCQkJICBQUWVycm9y TWVzc2FnZShBSC0+Y29ubmVjdGlvbikpOwotCWV4aXRfaG9ycmlibHkobW9kdWxlbmFtZSwg InF1ZXJ5IHdhczogJXNcbiIsIHF1ZXJ5KTsKKwlmYXRhbCgicXVlcnkgd2FzOiAlcyIsIHF1 ZXJ5KTsKIH0KIAogdm9pZApAQCAtNDI3LDkgKzQyOCw4IEBAIEV4ZWN1dGVTcWxRdWVyeUZv clNpbmdsZVJvdyhBcmNoaXZlICpmb3V0LCBjb25zdCBjaGFyICpxdWVyeSkKIAkvKiBFeHBl Y3RpbmcgYSBzaW5nbGUgcmVzdWx0IG9ubHkgKi8KIAludHVwcyA9IFBRbnR1cGxlcyhyZXMp OwogCWlmIChudHVwcyAhPSAxKQotCQlleGl0X2hvcnJpYmx5KE5VTEwsCi0JCQkJCSAgbmdl dHRleHQoInF1ZXJ5IHJldHVybmVkICVkIHJvdyBpbnN0ZWFkIG9mIG9uZTogJXNcbiIsCi0J CQkJCQkJICAgInF1ZXJ5IHJldHVybmVkICVkIHJvd3MgaW5zdGVhZCBvZiBvbmU6ICVzXG4i LAorCQlmYXRhbChuZ2V0dGV4dCgicXVlcnkgcmV0dXJuZWQgJWQgcm93IGluc3RlYWQgb2Yg b25lOiAlcyIsCisJCQkJCSAgICJxdWVyeSByZXR1cm5lZCAlZCByb3dzIGluc3RlYWQgb2Yg b25lOiAlcyIsCiAJCQkJCQkJICAgbnR1cHMpLAogCQkJCQkgIG50dXBzLCBxdWVyeSk7CiAK QEAgLTU3Myw3ICs1NzMsNyBAQCBFeGVjdXRlU3FsQ29tbWFuZEJ1ZihBcmNoaXZlICpBSFgs IGNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1ZkxlbikKIAkJICovCiAJCWlmIChBSC0+cGdD b3B5SW4gJiYKIAkJCVBRcHV0Q29weURhdGEoQUgtPmNvbm5lY3Rpb24sIGJ1ZiwgYnVmTGVu KSA8PSAwKQotCQkJZXhpdF9ob3JyaWJseShtb2R1bGVuYW1lLCAiZXJyb3IgcmV0dXJuZWQg YnkgUFFwdXRDb3B5RGF0YTogJXMiLAorCQkJZmF0YWwoImVycm9yIHJldHVybmVkIGJ5IFBR cHV0Q29weURhdGE6ICVzIiwKIAkJCQkJCSAgUFFlcnJvck1lc3NhZ2UoQUgtPmNvbm5lY3Rp b24pKTsKIAl9CiAJZWxzZSBpZiAoQUgtPm91dHB1dEtpbmQgPT0gT1VUUFVUX09USEVSREFU QSkKQEAgLTYyMiw3ICs2MjIsNyBAQCBFbmREQkNvcHlNb2RlKEFyY2hpdmUgKkFIWCwgY29u c3QgY2hhciAqdG9jRW50cnlUYWcpCiAJCVBHcmVzdWx0ICAgKnJlczsKIAogCQlpZiAoUFFw dXRDb3B5RW5kKEFILT5jb25uZWN0aW9uLCBOVUxMKSA8PSAwKQotCQkJZXhpdF9ob3JyaWJs eShtb2R1bGVuYW1lLCAiZXJyb3IgcmV0dXJuZWQgYnkgUFFwdXRDb3B5RW5kOiAlcyIsCisJ CQlmYXRhbCgiZXJyb3IgcmV0dXJuZWQgYnkgUFFwdXRDb3B5RW5kOiAlcyIsCiAJCQkJCQkg IFBRZXJyb3JNZXNzYWdlKEFILT5jb25uZWN0aW9uKSk7CiAKIAkJLyogQ2hlY2sgY29tbWFu ZCBzdGF0dXMgYW5kIHJldHVybiB0byBub3JtYWwgbGlicHEgc3RhdGUgKi8KQEAgLTYzNCw3 ICs2MzQsNyBAQCBFbmREQkNvcHlNb2RlKEFyY2hpdmUgKkFIWCwgY29uc3QgY2hhciAqdG9j RW50cnlUYWcpCiAKIAkJLyogRG8gdGhpcyB0byBlbnN1cmUgd2UndmUgcHVtcGVkIGxpYnBx IGJhY2sgdG8gaWRsZSBzdGF0ZSAqLwogCQlpZiAoUFFnZXRSZXN1bHQoQUgtPmNvbm5lY3Rp b24pICE9IE5VTEwpCi0JCQl3cml0ZV9tc2coTlVMTCwgIldBUk5JTkc6IHVuZXhwZWN0ZWQg ZXh0cmEgcmVzdWx0cyBkdXJpbmcgQ09QWSBvZiB0YWJsZSBcIiVzXCJcbiIsCisJCQlwZ19s b2dfd2FybmluZygidW5leHBlY3RlZCBleHRyYSByZXN1bHRzIGR1cmluZyBDT1BZIG9mIHRh YmxlIFwiJXNcIiIsCiAJCQkJCSAgdG9jRW50cnlUYWcpOwogCiAJCUFILT5wZ0NvcHlJbiA9 IGZhbHNlOwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9kaXJlY3Rv cnkuYyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfZGlyZWN0b3J5LmMKaW5kZXggY2Rh OTBiOWEyYS4uN2U1OGMzNzgyNSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2Jh Y2t1cF9kaXJlY3RvcnkuYworKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2RpcmVj dG9yeS5jCkBAIC02MSw5ICs2MSw2IEBAIHR5cGVkZWYgc3RydWN0CiAJY2hhcgkgICAqZmls ZW5hbWU7CQkvKiBmaWxlbmFtZSBleGNsdWRpbmcgdGhlIGRpcmVjdG9yeSAoYmFzZW5hbWUp ICovCiB9IGxjbFRvY0VudHJ5OwogCi0vKiB0cmFuc2xhdG9yOiB0aGlzIGlzIGEgbW9kdWxl IG5hbWUgKi8KLXN0YXRpYyBjb25zdCBjaGFyICptb2R1bGVuYW1lID0gZ2V0dGV4dF9ub29w KCJkaXJlY3RvcnkgYXJjaGl2ZXIiKTsKLQogLyogcHJvdG90eXBlcyBmb3IgcHJpdmF0ZSBm dW5jdGlvbnMgKi8KIHN0YXRpYyB2b2lkIF9BcmNoaXZlRW50cnkoQXJjaGl2ZUhhbmRsZSAq QUgsIFRvY0VudHJ5ICp0ZSk7CiBzdGF0aWMgdm9pZCBfU3RhcnREYXRhKEFyY2hpdmVIYW5k bGUgKkFILCBUb2NFbnRyeSAqdGUpOwpAQCAtMTU2LDcgKzE1Myw3IEBAIEluaXRBcmNoaXZl Rm10X0RpcmVjdG9yeShBcmNoaXZlSGFuZGxlICpBSCkKIAkgKi8KIAogCWlmICghQUgtPmZT cGVjIHx8IHN0cmNtcChBSC0+ZlNwZWMsICIiKSA9PSAwKQotCQlleGl0X2hvcnJpYmx5KG1v ZHVsZW5hbWUsICJubyBvdXRwdXQgZGlyZWN0b3J5IHNwZWNpZmllZFxuIik7CisJCWZhdGFs KCJubyBvdXRwdXQgZGlyZWN0b3J5IHNwZWNpZmllZCIpOwogCiAJY3R4LT5kaXJlY3Rvcnkg PSBBSC0+ZlNwZWM7CiAKQEAgLTE4NSwxOCArMTgyLDE4IEBAIEluaXRBcmNoaXZlRm10X0Rp cmVjdG9yeShBcmNoaXZlSGFuZGxlICpBSCkKIAkJCQl9CiAKIAkJCQlpZiAoZXJybm8pCi0J CQkJCWV4aXRfaG9ycmlibHkobW9kdWxlbmFtZSwgImNvdWxkIG5vdCByZWFkIGRpcmVjdG9y eSBcIiVzXCI6ICVzXG4iLAotCQkJCQkJCQkgIGN0eC0+ZGlyZWN0b3J5LCBzdHJlcnJvcihl cnJubykpOworCQkJCQlmYXRhbCgiY291bGQgbm90IHJlYWQgZGlyZWN0b3J5IFwiJXNcIjog JW0iLAorCQkJCQkJICBjdHgtPmRpcmVjdG9yeSk7CiAKIAkJCQlpZiAoY2xvc2VkaXIoZGly KSkKLQkJCQkJZXhpdF9ob3JyaWJseShtb2R1bGVuYW1lLCAiY291bGQgbm90IGNsb3NlIGRp cmVjdG9yeSBcIiVzXCI6ICVzXG4iLAotCQkJCQkJCQkgIGN0eC0+ZGlyZWN0b3J5LCBzdHJl cnJvcihlcnJubykpOworCQkJCQlmYXRhbCgiY291bGQgbm90IGNsb3NlIGRpcmVjdG9yeSBc IiVzXCI6ICVtIiwKKwkJCQkJCSAgY3R4LT5kaXJlY3RvcnkpOwogCQkJfQogCQl9CiAKIAkJ aWYgKCFpc19lbXB0eSAmJiBta2RpcihjdHgtPmRpcmVjdG9yeSwgMDcwMCkgPCAwKQotCQkJ ZXhpdF9ob3JyaWJseShtb2R1bGVuYW1lLCAiY291bGQgbm90IGNyZWF0ZSBkaXJlY3Rvcnkg XCIlc1wiOiAlc1xuIiwKLQkJCQkJCSAgY3R4LT5kaXJlY3RvcnksIHN0cmVycm9yKGVycm5v KSk7CisJCQlmYXRhbCgiY291bGQgbm90IGNyZWF0ZSBkaXJlY3RvcnkgXCIlc1wiOiAlbSIs CisJCQkJICBjdHgtPmRpcmVjdG9yeSk7CiAJfQogCWVsc2UKIAl7CQkJCQkJCS8qIFJlYWQg TW9kZSAqLwpAQCAtMjA3LDkgKzIwNCw3IEBAIEluaXRBcmNoaXZlRm10X0RpcmVjdG9yeShB cmNoaXZlSGFuZGxlICpBSCkKIAogCQl0b2NGSCA9IGNmb3Blbl9yZWFkKGZuYW1lLCBQR19C SU5BUllfUik7CiAJCWlmICh0b2NGSCA9PSBOVUxMKQotCQkJZXhpdF9ob3JyaWJseShtb2R1 bGVuYW1lLAotCQkJCQkJICAiY291bGQgbm90IG9wZW4gaW5wdXQgZmlsZSBcIiVzXCI6ICVz XG4iLAotCQkJCQkJICBmbmFtZSwgc3RyZXJyb3IoZXJybm8pKTsKKwkJCWZhdGFsKCJjb3Vs ZCBub3Qgb3BlbiBpbnB1dCBmaWxlIFwiJXNcIjogJW0iLCBmbmFtZSk7CiAKIAkJY3R4LT5k YXRhRkggPSB0b2NGSDsKIApAQCAtMjI0LDggKzIxOSw3IEBAIEluaXRBcmNoaXZlRm10X0Rp cmVjdG9yeShBcmNoaXZlSGFuZGxlICpBSCkKIAogCQkvKiBOb3RoaW5nIGVsc2UgaW4gdGhl IGZpbGUsIHNvIGNsb3NlIGl0IGFnYWluLi4uICovCiAJCWlmIChjZmNsb3NlKHRvY0ZIKSAh PSAwKQotCQkJZXhpdF9ob3JyaWJseShtb2R1bGVuYW1lLCAiY291bGQgbm90IGNsb3NlIFRP QyBmaWxlOiAlc1xuIiwKLQkJCQkJCSAgc3RyZXJyb3IoZXJybm8pKTsKKwkJCWZhdGFsKCJj b3VsZCBub3QgY2xvc2UgVE9DIGZpbGU6ICVtIik7CiAJCWN0eC0+ZGF0YUZIID0gTlVMTDsK IAl9CiB9CkBAIC0zMzUsOCArMzI5LDcgQEAgX1N0YXJ0RGF0YShBcmNoaXZlSGFuZGxlICpB SCwgVG9jRW50cnkgKnRlKQogCiAJY3R4LT5kYXRhRkggPSBjZm9wZW5fd3JpdGUoZm5hbWUs IFBHX0JJTkFSWV9XLCBBSC0+Y29tcHJlc3Npb24pOwogCWlmIChjdHgtPmRhdGFGSCA9PSBO VUxMKQotCQlleGl0X2hvcnJpYmx5KG1vZHVsZW5hbWUsICJjb3VsZCBub3Qgb3BlbiBvdXRw dXQgZmlsZSBcIiVzXCI6ICVzXG4iLAotCQkJCQkgIGZuYW1lLCBzdHJlcnJvcihlcnJubykp OworCQlmYXRhbCgiY291bGQgbm90IG9wZW4gb3V0cHV0IGZpbGUgXCIlc1wiOiAlbSIsIGZu YW1lKTsKIH0KIAogLyoKQEAgLTM1NCw3ICszNDcsNyBAQCBfV3JpdGVEYXRhKEFyY2hpdmVI YW5kbGUgKkFILCBjb25zdCB2b2lkICpkYXRhLCBzaXplX3QgZExlbikKIAlsY2xDb250ZXh0 ICpjdHggPSAobGNsQ29udGV4dCAqKSBBSC0+Zm9ybWF0RGF0YTsKIAogCWlmIChkTGVuID4g MCAmJiBjZndyaXRlKGRhdGEsIGRMZW4sIGN0eC0+ZGF0YUZIKSAhPSBkTGVuKQotCQlleGl0 X2hvcnJpYmx5KG1vZHVsZW5hbWUsICJjb3VsZCBub3Qgd3JpdGUgdG8gb3V0cHV0IGZpbGU6 ICVzXG4iLAorCQlmYXRhbCgiY291bGQgbm90IHdyaXRlIHRvIG91dHB1dCBmaWxlOiAlcyIs CiAJCQkJCSAgZ2V0X2NmcF9lcnJvcihjdHgtPmRhdGFGSCkpOwogCiAKQEAgLTM5NSw4ICsz ODgsNyBAQCBfUHJpbnRGaWxlRGF0YShBcmNoaXZlSGFuZGxlICpBSCwgY2hhciAqZmlsZW5h bWUpCiAJY2ZwID0gY2ZvcGVuX3JlYWQoZmlsZW5hbWUsIFBHX0JJTkFSWV9SKTsKIAogCWlm ICghY2ZwKQotCQlleGl0X2hvcnJpYmx5KG1vZHVsZW5hbWUsICJjb3VsZCBub3Qgb3BlbiBp bnB1dCBmaWxlIFwiJXNcIjogJXNcbiIsCi0JCQkJCSAgZmlsZW5hbWUsIHN0cmVycm9yKGVy cm5vKSk7CisJCWZhdGFsKCJjb3VsZCBub3Qgb3BlbiBpbnB1dCBmaWxlIFwiJXNcIjogJW0i LCBmaWxlbmFtZSk7CiAKIAlidWYgPSBwZ19tYWxsb2MoWkxJQl9PVVRfU0laRSk7CiAJYnVm bGVuID0gWkxJQl9PVVRfU0laRTsKQEAgLTQwOCw4ICs0MDAsNyBAQCBfUHJpbnRGaWxlRGF0 YShBcmNoaXZlSGFuZGxlICpBSCwgY2hhciAqZmlsZW5hbWUpCiAKIAlmcmVlKGJ1Zik7CiAJ aWYgKGNmY2xvc2UoY2ZwKSAhPTApCi0JCWV4aXRfaG9ycmlibHkobW9kdWxlbmFtZSwgImNv dWxkIG5vdCBjbG9zZSBkYXRhIGZpbGU6ICVzXG4iLAotCQkJCQkgIHN0cmVycm9yKGVycm5v KSk7CisJCWZhdGFsKCJjb3VsZCBub3QgY2xvc2UgZGF0YSBmaWxlOiAlbSIpOwogfQogCiAv KgpAQCAtNDQ5LDggKzQ0MCw4IEBAIF9Mb2FkQmxvYnMoQXJjaGl2ZUhhbmRsZSAqQUgpCiAJ Y3R4LT5ibG9ic1RvY0ZIID0gY2ZvcGVuX3JlYWQoZm5hbWUsIFBHX0JJTkFSWV9SKTsKIAog CWlmIChjdHgtPmJsb2JzVG9jRkggPT0gTlVMTCkKLQkJZXhpdF9ob3JyaWJseShtb2R1bGVu YW1lLCAiY291bGQgbm90IG9wZW4gbGFyZ2Ugb2JqZWN0IFRPQyBmaWxlIFwiJXNcIiBmb3Ig aW5wdXQ6ICVzXG4iLAotCQkJCQkgIGZuYW1lLCBzdHJlcnJvcihlcnJubykpOworCQlmYXRh bCgiY291bGQgbm90IG9wZW4gbGFyZ2Ugb2JqZWN0IFRPQyBmaWxlIFwiJXNcIiBmb3IgaW5w dXQ6ICVtIiwKKwkJCSAgZm5hbWUpOwogCiAJLyogUmVhZCB0aGUgYmxvYnMgVE9DIGZpbGUg bGluZS1ieS1saW5lLCBhbmQgcHJvY2VzcyBlYWNoIGJsb2IgKi8KIAl3aGlsZSAoKGNmZ2V0 cyhjdHgtPmJsb2JzVG9jRkgsIGxpbmUsIE1BWFBHUEFUSCkpICE9IE5VTEwpCkBAIC00NjAs NyArNDUxLDcgQEAgX0xvYWRCbG9icyhBcmNoaXZlSGFuZGxlICpBSCkKIAogCQkvKiBDYW4n dCBvdmVyZmxvdyBiZWNhdXNlIGxpbmUgYW5kIGZuYW1lIGFyZSB0aGUgc2FtZSBsZW5ndGgu ICovCiAJCWlmIChzc2NhbmYobGluZSwgIiV1ICVzXG4iLCAmb2lkLCBmbmFtZSkgIT0gMikK LQkJCWV4aXRfaG9ycmlibHkobW9kdWxlbmFtZSwgImludmFsaWQgbGluZSBpbiBsYXJnZSBv YmplY3QgVE9DIGZpbGUgXCIlc1wiOiBcIiVzXCJcbiIsCisJCQlmYXRhbCgiaW52YWxpZCBs aW5lIGluIGxhcmdlIG9iamVjdCBUT0MgZmlsZSBcIiVzXCI6IFwiJXNcIiIsCiAJCQkJCQkg IGZuYW1lLCBsaW5lKTsKIAogCQlTdGFydFJlc3RvcmVCbG9iKEFILCBvaWQsIEFILT5wdWJs aWMucm9wdC0+ZHJvcFNjaGVtYSk7CkBAIC00NjksMTIgKzQ2MCwxMiBAQCBfTG9hZEJsb2Jz KEFyY2hpdmVIYW5kbGUgKkFIKQogCQlFbmRSZXN0b3JlQmxvYihBSCwgb2lkKTsKIAl9CiAJ aWYgKCFjZmVvZihjdHgtPmJsb2JzVG9jRkgpKQotCQlleGl0X2hvcnJpYmx5KG1vZHVsZW5h bWUsICJlcnJvciByZWFkaW5nIGxhcmdlIG9iamVjdCBUT0MgZmlsZSBcIiVzXCJcbiIsCisJ CWZhdGFsKCJlcnJvciByZWFkaW5nIGxhcmdlIG9iamVjdCBUT0MgZmlsZSBcIiVzXCIiLAog CQkJCQkgIGZuYW1lKTsKIAogCWlmIChjZmNsb3NlKGN0eC0+YmxvYnNUb2NGSCkgIT0gMCkK LQkJZXhpdF9ob3JyaWJseShtb2R1bGVuYW1lLCAiY291bGQgbm90IGNsb3NlIGxhcmdlIG9i amVjdCBUT0MgZmlsZSBcIiVzXCI6ICVzXG4iLAotCQkJCQkgIGZuYW1lLCBzdHJlcnJvcihl cnJubykpOworCQlmYXRhbCgiY291bGQgbm90IGNsb3NlIGxhcmdlIG9iamVjdCBUT0MgZmls ZSBcIiVzXCI6ICVtIiwKKwkJCSAgZm5hbWUpOwogCiAJY3R4LT5ibG9ic1RvY0ZIID0gTlVM TDsKIApAQCAtNDk0LDcgKzQ4NSw3IEBAIF9Xcml0ZUJ5dGUoQXJjaGl2ZUhhbmRsZSAqQUgs IGNvbnN0IGludCBpKQogCWxjbENvbnRleHQgKmN0eCA9IChsY2xDb250ZXh0ICopIEFILT5m b3JtYXREYXRhOwogCiAJaWYgKGNmd3JpdGUoJmMsIDEsIGN0eC0+ZGF0YUZIKSAhPSAxKQot CQlleGl0X2hvcnJpYmx5KG1vZHVsZW5hbWUsICJjb3VsZCBub3Qgd3JpdGUgdG8gb3V0cHV0 IGZpbGU6ICVzXG4iLAorCQlmYXRhbCgiY291bGQgbm90IHdyaXRlIHRvIG91dHB1dCBmaWxl OiAlcyIsCiAJCQkJCSAgZ2V0X2NmcF9lcnJvcihjdHgtPmRhdGFGSCkpOwogCiAJcmV0dXJu IDE7CkBAIC01MjQsNyArNTE1LDcgQEAgX1dyaXRlQnVmKEFyY2hpdmVIYW5kbGUgKkFILCBj b25zdCB2b2lkICpidWYsIHNpemVfdCBsZW4pCiAJbGNsQ29udGV4dCAqY3R4ID0gKGxjbENv bnRleHQgKikgQUgtPmZvcm1hdERhdGE7CiAKIAlpZiAoY2Z3cml0ZShidWYsIGxlbiwgY3R4 LT5kYXRhRkgpICE9IGxlbikKLQkJZXhpdF9ob3JyaWJseShtb2R1bGVuYW1lLCAiY291bGQg bm90IHdyaXRlIHRvIG91dHB1dCBmaWxlOiAlc1xuIiwKKwkJZmF0YWwoImNvdWxkIG5vdCB3 cml0ZSB0byBvdXRwdXQgZmlsZTogJXMiLAogCQkJCQkgIGdldF9jZnBfZXJyb3IoY3R4LT5k YXRhRkgpKTsKIAogCXJldHVybjsKQEAgLTU0NSw4ICs1MzYsNyBAQCBfUmVhZEJ1ZihBcmNo aXZlSGFuZGxlICpBSCwgdm9pZCAqYnVmLCBzaXplX3QgbGVuKQogCSAqIGV4aXQgb24gc2hv cnQgcmVhZHMuCiAJICovCiAJaWYgKGNmcmVhZChidWYsIGxlbiwgY3R4LT5kYXRhRkgpICE9 IGxlbikKLQkJZXhpdF9ob3JyaWJseShtb2R1bGVuYW1lLAotCQkJCQkgICJjb3VsZCBub3Qg cmVhZCBmcm9tIGlucHV0IGZpbGU6IGVuZCBvZiBmaWxlXG4iKTsKKwkJZmF0YWwoImNvdWxk IG5vdCByZWFkIGZyb20gaW5wdXQgZmlsZTogZW5kIG9mIGZpbGUiKTsKIAogCXJldHVybjsK IH0KQEAgLTU4MSw4ICs1NzEsNyBAQCBfQ2xvc2VBcmNoaXZlKEFyY2hpdmVIYW5kbGUgKkFI KQogCQkvKiBUaGUgVE9DIGlzIGFsd2F5cyBjcmVhdGVkIHVuY29tcHJlc3NlZCAqLwogCQl0 b2NGSCA9IGNmb3Blbl93cml0ZShmbmFtZSwgUEdfQklOQVJZX1csIDApOwogCQlpZiAodG9j RkggPT0gTlVMTCkKLQkJCWV4aXRfaG9ycmlibHkobW9kdWxlbmFtZSwgImNvdWxkIG5vdCBv cGVuIG91dHB1dCBmaWxlIFwiJXNcIjogJXNcbiIsCi0JCQkJCQkgIGZuYW1lLCBzdHJlcnJv cihlcnJubykpOworCQkJZmF0YWwoImNvdWxkIG5vdCBvcGVuIG91dHB1dCBmaWxlIFwiJXNc IjogJW0iLCBmbmFtZSk7CiAJCWN0eC0+ZGF0YUZIID0gdG9jRkg7CiAKIAkJLyoKQEAgLTU5 NSw4ICs1ODQsNyBAQCBfQ2xvc2VBcmNoaXZlKEFyY2hpdmVIYW5kbGUgKkFIKQogCQlBSC0+ Zm9ybWF0ID0gYXJjaERpcmVjdG9yeTsKIAkJV3JpdGVUb2MoQUgpOwogCQlpZiAoY2ZjbG9z ZSh0b2NGSCkgIT0gMCkKLQkJCWV4aXRfaG9ycmlibHkobW9kdWxlbmFtZSwgImNvdWxkIG5v dCBjbG9zZSBUT0MgZmlsZTogJXNcbiIsCi0JCQkJCQkgIHN0cmVycm9yKGVycm5vKSk7CisJ CQlmYXRhbCgiY291bGQgbm90IGNsb3NlIFRPQyBmaWxlOiAlbSIpOwogCQlXcml0ZURhdGFD aHVua3MoQUgsIGN0eC0+cHN0YXRlKTsKIAogCQlQYXJhbGxlbEJhY2t1cEVuZChBSCwgY3R4 LT5wc3RhdGUpOwpAQCAtNjA2LDcgKzU5NCw3IEBAIF9DbG9zZUFyY2hpdmUoQXJjaGl2ZUhh bmRsZSAqQUgpCiAJCSAqIGluZGl2aWR1YWxseS4gSnVzdCByZWN1cnNlIG9uY2UgdGhyb3Vn aCBhbGwgdGhlIGZpbGVzIGdlbmVyYXRlZC4KIAkJICovCiAJCWlmIChBSC0+ZG9zeW5jKQot CQkJZnN5bmNfZGlyX3JlY3Vyc2UoY3R4LT5kaXJlY3RvcnksIHByb2duYW1lKTsKKwkJCWZz eW5jX2Rpcl9yZWN1cnNlKGN0eC0+ZGlyZWN0b3J5KTsKIAl9CiAJQUgtPkZIID0gTlVMTDsK IH0KQEAgLTY0Niw4ICs2MzQsNyBAQCBfU3RhcnRCbG9icyhBcmNoaXZlSGFuZGxlICpBSCwg VG9jRW50cnkgKnRlKQogCS8qIFRoZSBibG9iIFRPQyBmaWxlIGlzIG5ldmVyIGNvbXByZXNz ZWQgKi8KIAljdHgtPmJsb2JzVG9jRkggPSBjZm9wZW5fd3JpdGUoZm5hbWUsICJhYiIsIDAp OwogCWlmIChjdHgtPmJsb2JzVG9jRkggPT0gTlVMTCkKLQkJZXhpdF9ob3JyaWJseShtb2R1 bGVuYW1lLCAiY291bGQgbm90IG9wZW4gb3V0cHV0IGZpbGUgXCIlc1wiOiAlc1xuIiwKLQkJ CQkJICBmbmFtZSwgc3RyZXJyb3IoZXJybm8pKTsKKwkJZmF0YWwoImNvdWxkIG5vdCBvcGVu IG91dHB1dCBmaWxlIFwiJXNcIjogJW0iLCBmbmFtZSk7CiB9CiAKIC8qCkBAIC02NjYsOCAr NjUzLDcgQEAgX1N0YXJ0QmxvYihBcmNoaXZlSGFuZGxlICpBSCwgVG9jRW50cnkgKnRlLCBP aWQgb2lkKQogCWN0eC0+ZGF0YUZIID0gY2ZvcGVuX3dyaXRlKGZuYW1lLCBQR19CSU5BUllf VywgQUgtPmNvbXByZXNzaW9uKTsKIAogCWlmIChjdHgtPmRhdGFGSCA9PSBOVUxMKQotCQll eGl0X2hvcnJpYmx5KG1vZHVsZW5hbWUsICJjb3VsZCBub3Qgb3BlbiBvdXRwdXQgZmlsZSBc IiVzXCI6ICVzXG4iLAotCQkJCQkgIGZuYW1lLCBzdHJlcnJvcihlcnJubykpOworCQlmYXRh bCgiY291bGQgbm90IG9wZW4gb3V0cHV0IGZpbGUgXCIlc1wiOiAlbSIsIGZuYW1lKTsKIH0K IAogLyoKQEAgLTY4OSw3ICs2NzUsNyBAQCBfRW5kQmxvYihBcmNoaXZlSGFuZGxlICpBSCwg VG9jRW50cnkgKnRlLCBPaWQgb2lkKQogCS8qIHJlZ2lzdGVyIHRoZSBibG9iIGluIGJsb2Jz LnRvYyAqLwogCWxlbiA9IHNucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksICIldSBibG9iXyV1 LmRhdFxuIiwgb2lkLCBvaWQpOwogCWlmIChjZndyaXRlKGJ1ZiwgbGVuLCBjdHgtPmJsb2Jz VG9jRkgpICE9IGxlbikKLQkJZXhpdF9ob3JyaWJseShtb2R1bGVuYW1lLCAiY291bGQgbm90 IHdyaXRlIHRvIGJsb2JzIFRPQyBmaWxlXG4iKTsKKwkJZmF0YWwoImNvdWxkIG5vdCB3cml0 ZSB0byBibG9icyBUT0MgZmlsZSIpOwogfQogCiAvKgpAQCAtNzIxLDcgKzcwNyw3IEBAIHNl dEZpbGVQYXRoKEFyY2hpdmVIYW5kbGUgKkFILCBjaGFyICpidWYsIGNvbnN0IGNoYXIgKnJl bGF0aXZlRmlsZW5hbWUpCiAJZG5hbWUgPSBjdHgtPmRpcmVjdG9yeTsKIAogCWlmIChzdHJs ZW4oZG5hbWUpICsgMSArIHN0cmxlbihyZWxhdGl2ZUZpbGVuYW1lKSArIDEgPiBNQVhQR1BB VEgpCi0JCWV4aXRfaG9ycmlibHkobW9kdWxlbmFtZSwgImZpbGUgbmFtZSB0b28gbG9uZzog XCIlc1wiXG4iLCBkbmFtZSk7CisJCWZhdGFsKCJmaWxlIG5hbWUgdG9vIGxvbmc6IFwiJXNc IiIsIGRuYW1lKTsKIAogCXN0cmNweShidWYsIGRuYW1lKTsKIAlzdHJjYXQoYnVmLCAiLyIp OwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9udWxsLmMgYi9zcmMv YmluL3BnX2R1bXAvcGdfYmFja3VwX251bGwuYwppbmRleCA2MmY2ZTYyNGYwLi5mMzNmN2Jh NDIxIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX251bGwuYworKysg Yi9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX251bGwuYwpAQCAtNzIsNyArNzIsNyBAQCBJ bml0QXJjaGl2ZUZtdF9OdWxsKEFyY2hpdmVIYW5kbGUgKkFIKQogCSAqIE5vdyBwcmV2ZW50 IHJlYWRpbmcuLi4KIAkgKi8KIAlpZiAoQUgtPm1vZGUgPT0gYXJjaE1vZGVSZWFkKQotCQll eGl0X2hvcnJpYmx5KE5VTEwsICJ0aGlzIGZvcm1hdCBjYW5ub3QgYmUgcmVhZFxuIik7CisJ CWZhdGFsKCJ0aGlzIGZvcm1hdCBjYW5ub3QgYmUgcmVhZCIpOwogfQogCiAvKgpAQCAtMTQ3 LDcgKzE0Nyw3IEBAIF9TdGFydEJsb2IoQXJjaGl2ZUhhbmRsZSAqQUgsIFRvY0VudHJ5ICp0 ZSwgT2lkIG9pZCkKIAlib29sCQlvbGRfYmxvYl9zdHlsZSA9IChBSC0+dmVyc2lvbiA8IEtf VkVSU18xXzEyKTsKIAogCWlmIChvaWQgPT0gMCkKLQkJZXhpdF9ob3JyaWJseShOVUxMLCAi aW52YWxpZCBPSUQgZm9yIGxhcmdlIG9iamVjdFxuIik7CisJCWZhdGFsKCJpbnZhbGlkIE9J RCBmb3IgbGFyZ2Ugb2JqZWN0Iik7CiAKIAkvKiBXaXRoIGFuIG9sZCBhcmNoaXZlIHdlIG11 c3QgZG8gZHJvcCBhbmQgY3JlYXRlIGxvZ2ljIGhlcmUgKi8KIAlpZiAob2xkX2Jsb2Jfc3R5 bGUgJiYgQUgtPnB1YmxpYy5yb3B0LT5kcm9wU2NoZW1hKQpkaWZmIC0tZ2l0IGEvc3JjL2Jp bi9wZ19kdW1wL3BnX2JhY2t1cF90YXIuYyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBf dGFyLmMKaW5kZXggNDA3YTU2ZDhkNC4uYjUyNTkzYzNjMCAxMDA2NDQKLS0tIGEvc3JjL2Jp bi9wZ19kdW1wL3BnX2JhY2t1cF90YXIuYworKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfYmFj a3VwX3Rhci5jCkBAIC05OSw5ICs5OSw2IEBAIHR5cGVkZWYgc3RydWN0CiAJY2hhcgkgICAq ZmlsZW5hbWU7CiB9IGxjbFRvY0VudHJ5OwogCi0vKiB0cmFuc2xhdG9yOiB0aGlzIGlzIGEg bW9kdWxlIG5hbWUgKi8KLXN0YXRpYyBjb25zdCBjaGFyICptb2R1bGVuYW1lID0gZ2V0dGV4 dF9ub29wKCJ0YXIgYXJjaGl2ZXIiKTsKLQogc3RhdGljIHZvaWQgX0xvYWRCbG9icyhBcmNo aXZlSGFuZGxlICpBSCk7CiAKIHN0YXRpYyBUQVJfTUVNQkVSICp0YXJPcGVuKEFyY2hpdmVI YW5kbGUgKkFILCBjb25zdCBjaGFyICpmaWxlbmFtZSwgY2hhciBtb2RlKTsKQEAgLTE3Nywx NyArMTc0LDE0IEBAIEluaXRBcmNoaXZlRm10X1RhcihBcmNoaXZlSGFuZGxlICpBSCkKIAkJ ewogCQkJY3R4LT50YXJGSCA9IGZvcGVuKEFILT5mU3BlYywgUEdfQklOQVJZX1cpOwogCQkJ aWYgKGN0eC0+dGFyRkggPT0gTlVMTCkKLQkJCQlleGl0X2hvcnJpYmx5KG1vZHVsZW5hbWUs Ci0JCQkJCQkJICAiY291bGQgbm90IG9wZW4gVE9DIGZpbGUgXCIlc1wiIGZvciBvdXRwdXQ6 ICVzXG4iLAotCQkJCQkJCSAgQUgtPmZTcGVjLCBzdHJlcnJvcihlcnJubykpOworCQkJCWZh dGFsKCJjb3VsZCBub3Qgb3BlbiBUT0MgZmlsZSBcIiVzXCIgZm9yIG91dHB1dDogJW0iLAor CQkJCQkgIEFILT5mU3BlYyk7CiAJCX0KIAkJZWxzZQogCQl7CiAJCQljdHgtPnRhckZIID0g c3Rkb3V0OwogCQkJaWYgKGN0eC0+dGFyRkggPT0gTlVMTCkKLQkJCQlleGl0X2hvcnJpYmx5 KG1vZHVsZW5hbWUsCi0JCQkJCQkJICAiY291bGQgbm90IG9wZW4gVE9DIGZpbGUgZm9yIG91 dHB1dDogJXNcbiIsCi0JCQkJCQkJICBzdHJlcnJvcihlcnJubykpOworCQkJCWZhdGFsKCJj b3VsZCBub3Qgb3BlbiBUT0MgZmlsZSBmb3Igb3V0cHV0OiAlbSIpOwogCQl9CiAKIAkJY3R4 LT50YXJGSHBvcyA9IDA7CkBAIC0yMDYsOCArMjAwLDcgQEAgSW5pdEFyY2hpdmVGbXRfVGFy KEFyY2hpdmVIYW5kbGUgKkFIKQogCQkgKiBwb3NpdGlvbmluZy4KIAkJICovCiAJCWlmIChB SC0+Y29tcHJlc3Npb24gIT0gMCkKLQkJCWV4aXRfaG9ycmlibHkobW9kdWxlbmFtZSwKLQkJ CQkJCSAgImNvbXByZXNzaW9uIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGFyIGFyY2hpdmUgZm9y bWF0XG4iKTsKKwkJCWZhdGFsKCJjb21wcmVzc2lvbiBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRh ciBhcmNoaXZlIGZvcm1hdCIpOwogCX0KIAllbHNlCiAJewkJCQkJCQkvKiBSZWFkIE1vZGUg Ki8KQEAgLTIxNSwxNSArMjA4LDE0IEBAIEluaXRBcmNoaXZlRm10X1RhcihBcmNoaXZlSGFu ZGxlICpBSCkKIAkJewogCQkJY3R4LT50YXJGSCA9IGZvcGVuKEFILT5mU3BlYywgUEdfQklO QVJZX1IpOwogCQkJaWYgKGN0eC0+dGFyRkggPT0gTlVMTCkKLQkJCQlleGl0X2hvcnJpYmx5 KG1vZHVsZW5hbWUsICJjb3VsZCBub3Qgb3BlbiBUT0MgZmlsZSBcIiVzXCIgZm9yIGlucHV0 OiAlc1xuIiwKLQkJCQkJCQkgIEFILT5mU3BlYywgc3RyZXJyb3IoZXJybm8pKTsKKwkJCQlm YXRhbCgiY291bGQgbm90IG9wZW4gVE9DIGZpbGUgXCIlc1wiIGZvciBpbnB1dDogJW0iLAor CQkJCQkgIEFILT5mU3BlYyk7CiAJCX0KIAkJZWxzZQogCQl7CiAJCQljdHgtPnRhckZIID0g c3RkaW47CiAJCQlpZiAoY3R4LT50YXJGSCA9PSBOVUxMKQotCQkJCWV4aXRfaG9ycmlibHko bW9kdWxlbmFtZSwgImNvdWxkIG5vdCBvcGVuIFRPQyBmaWxlIGZvciBpbnB1dDogJXNcbiIs Ci0JCQkJCQkJICBzdHJlcnJvcihlcnJubykpOworCQkJCWZhdGFsKCJjb3VsZCBub3Qgb3Bl biBUT0MgZmlsZSBmb3IgaW5wdXQ6ICVtIik7CiAJCX0KIAogCQkvKgpAQCAtMzQ5LDcgKzM0 MSw3IEBAIHRhck9wZW4oQXJjaGl2ZUhhbmRsZSAqQUgsIGNvbnN0IGNoYXIgKmZpbGVuYW1l LCBjaGFyIG1vZGUpCiAJCQkJICogQ291bGRuJ3QgZmluZCB0aGUgcmVxdWVzdGVkIGZpbGUu IEZ1dHVyZTogZG8gU0VFSygwKSBhbmQKIAkJCQkgKiByZXRyeS4KIAkJCQkgKi8KLQkJCQll eGl0X2hvcnJpYmx5KG1vZHVsZW5hbWUsICJjb3VsZCBub3QgZmluZCBmaWxlIFwiJXNcIiBp biBhcmNoaXZlXG4iLCBmaWxlbmFtZSk7CisJCQkJZmF0YWwoImNvdWxkIG5vdCBmaW5kIGZp bGUgXCIlc1wiIGluIGFyY2hpdmUiLCBmaWxlbmFtZSk7CiAJCQl9CiAJCQllbHNlCiAJCQl7 CkBAIC0zNjMsNyArMzU1LDcgQEAgdGFyT3BlbihBcmNoaXZlSGFuZGxlICpBSCwgY29uc3Qg Y2hhciAqZmlsZW5hbWUsIGNoYXIgbW9kZSkKIAkJaWYgKEFILT5jb21wcmVzc2lvbiA9PSAw KQogCQkJdG0tPm5GSCA9IGN0eC0+dGFyRkg7CiAJCWVsc2UKLQkJCWV4aXRfaG9ycmlibHko bW9kdWxlbmFtZSwgImNvbXByZXNzaW9uIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGFyIGFyY2hp dmUgZm9ybWF0XG4iKTsKKwkJCWZhdGFsKCJjb21wcmVzc2lvbiBpcyBub3Qgc3VwcG9ydGVk IGJ5IHRhciBhcmNoaXZlIGZvcm1hdCIpOwogCQkvKiB0bS0+ekZIID0gZ3pkb3BlbihkdXAo ZmlsZW5vKGN0eC0+dGFyRkgpKSwgInJiIik7ICovCiAjZWxzZQogCQl0bS0+bkZIID0gY3R4 LT50YXJGSDsKQEAgLTQxNSw3ICs0MDcsNyBAQCB0YXJPcGVuKEFyY2hpdmVIYW5kbGUgKkFI LCBjb25zdCBjaGFyICpmaWxlbmFtZSwgY2hhciBtb2RlKQogI2VuZGlmCiAKIAkJaWYgKHRt LT50bXBGSCA9PSBOVUxMKQotCQkJZXhpdF9ob3JyaWJseShtb2R1bGVuYW1lLCAiY291bGQg bm90IGdlbmVyYXRlIHRlbXBvcmFyeSBmaWxlIG5hbWU6ICVzXG4iLCBzdHJlcnJvcihlcnJu bykpOworCQkJZmF0YWwoImNvdWxkIG5vdCBnZW5lcmF0ZSB0ZW1wb3JhcnkgZmlsZSBuYW1l OiAlbSIpOwogCiAJCXVtYXNrKG9sZF91bWFzayk7CiAKQEAgLTQyNiw3ICs0MTgsNyBAQCB0 YXJPcGVuKEFyY2hpdmVIYW5kbGUgKkFILCBjb25zdCBjaGFyICpmaWxlbmFtZSwgY2hhciBt b2RlKQogCQkJc3ByaW50ZihmbW9kZSwgIndiJWQiLCBBSC0+Y29tcHJlc3Npb24pOwogCQkJ dG0tPnpGSCA9IGd6ZG9wZW4oZHVwKGZpbGVubyh0bS0+dG1wRkgpKSwgZm1vZGUpOwogCQkJ aWYgKHRtLT56RkggPT0gTlVMTCkKLQkJCQlleGl0X2hvcnJpYmx5KG1vZHVsZW5hbWUsICJj b3VsZCBub3Qgb3BlbiB0ZW1wb3JhcnkgZmlsZVxuIik7CisJCQkJZmF0YWwoImNvdWxkIG5v dCBvcGVuIHRlbXBvcmFyeSBmaWxlIik7CiAJCX0KIAkJZWxzZQogCQkJdG0tPm5GSCA9IHRt LT50bXBGSDsKQEAgLTQ1Myw3ICs0NDUsNyBAQCB0YXJDbG9zZShBcmNoaXZlSGFuZGxlICpB SCwgVEFSX01FTUJFUiAqdGgpCiAJICovCiAJaWYgKEFILT5jb21wcmVzc2lvbiAhPSAwKQog CQlpZiAoR1pDTE9TRSh0aC0+ekZIKSAhPSAwKQotCQkJZXhpdF9ob3JyaWJseShtb2R1bGVu YW1lLCAiY291bGQgbm90IGNsb3NlIHRhciBtZW1iZXJcbiIpOworCQkJZmF0YWwoImNvdWxk IG5vdCBjbG9zZSB0YXIgbWVtYmVyIik7CiAKIAlpZiAodGgtPm1vZGUgPT0gJ3cnKQogCQlf dGFyQWRkRmlsZShBSCwgdGgpOwkvKiBUaGlzIHdpbGwgY2xvc2UgdGhlIHRlbXAgZmlsZSAq LwpAQCAtNTYwLDEyICs1NTIsMTAgQEAgX3RhclJlYWRSYXcoQXJjaGl2ZUhhbmRsZSAqQUgs IHZvaWQgKmJ1Ziwgc2l6ZV90IGxlbiwgVEFSX01FTUJFUiAqdGgsIEZJTEUgKmZoKQogCQkJ CQlpbnQJCQllcnJudW07CiAJCQkJCWNvbnN0IGNoYXIgKmVycm1zZyA9IGd6ZXJyb3IodGgt PnpGSCwgJmVycm51bSk7CiAKLQkJCQkJZXhpdF9ob3JyaWJseShtb2R1bGVuYW1lLAotCQkJ CQkJCQkgICJjb3VsZCBub3QgcmVhZCBmcm9tIGlucHV0IGZpbGU6ICVzXG4iLAorCQkJCQlm YXRhbCgiY291bGQgbm90IHJlYWQgZnJvbSBpbnB1dCBmaWxlOiAlcyIsCiAJCQkJCQkJCSAg ZXJybnVtID09IFpfRVJSTk8gPyBzdHJlcnJvcihlcnJubykgOiBlcnJtc2cpOwogI2Vsc2UK LQkJCQkJZXhpdF9ob3JyaWJseShtb2R1bGVuYW1lLAotCQkJCQkJCQkgICJjb3VsZCBub3Qg cmVhZCBmcm9tIGlucHV0IGZpbGU6ICVzXG4iLAorCQkJCQlmYXRhbCgiY291bGQgbm90IHJl YWQgZnJvbSBpbnB1dCBmaWxlOiAlcyIsCiAJCQkJCQkJCSAgc3RyZXJyb3IoZXJybm8pKTsK ICNlbmRpZgogCQkJCX0KQEAgLTU3OCw3ICs1NjgsNyBAQCBfdGFyUmVhZFJhdyhBcmNoaXZl SGFuZGxlICpBSCwgdm9pZCAqYnVmLCBzaXplX3QgbGVuLCBUQVJfTUVNQkVSICp0aCwgRklM RSAqZmgpCiAJCQl9CiAJCX0KIAkJZWxzZQotCQkJZXhpdF9ob3JyaWJseShtb2R1bGVuYW1l LCAiaW50ZXJuYWwgZXJyb3IgLS0gbmVpdGhlciB0aCBub3IgZmggc3BlY2lmaWVkIGluIHRh clJlYWRSYXcoKVxuIik7CisJCQlmYXRhbCgiaW50ZXJuYWwgZXJyb3IgLS0gbmVpdGhlciB0 aCBub3IgZmggc3BlY2lmaWVkIGluIHRhclJlYWRSYXcoKVxuIik7CiAJfQogCiAJY3R4LT50 YXJGSHBvcyArPSByZXMgKyB1c2VkOwpAQCAtNzAwLDggKzY5MCw3IEBAIF9QcmludFRvY0Rh dGEoQXJjaGl2ZUhhbmRsZSAqQUgsIFRvY0VudHJ5ICp0ZSkKIAkJCXBvczEgPSAoaW50KSBz dHJsZW4odGUtPmNvcHlTdG10KSAtIDEzOwogCQkJaWYgKHBvczEgPCA2IHx8IHN0cm5jbXAo dGUtPmNvcHlTdG10LCAiQ09QWSAiLCA1KSAhPSAwIHx8CiAJCQkJc3RyY21wKHRlLT5jb3B5 U3RtdCArIHBvczEsICIgRlJPTSBzdGRpbjtcbiIpICE9IDApCi0JCQkJZXhpdF9ob3JyaWJs eShtb2R1bGVuYW1lLAotCQkJCQkJCSAgInVuZXhwZWN0ZWQgQ09QWSBzdGF0ZW1lbnQgc3lu dGF4OiBcIiVzXCJcbiIsCisJCQkJZmF0YWwoInVuZXhwZWN0ZWQgQ09QWSBzdGF0ZW1lbnQg c3ludGF4OiBcIiVzXCIiLAogCQkJCQkJCSAgdGUtPmNvcHlTdG10KTsKIAogCQkJLyogRW1p dCBhbGwgYnV0IHRoZSBGUk9NIHBhcnQgLi4uICovCkBAIC03NDYsNyArNzM1LDcgQEAgX0xv YWRCbG9icyhBcmNoaXZlSGFuZGxlICpBSCkKIAkJCW9pZCA9IGF0b29pZCgmdGgtPnRhcmdl dEZpbGVbNV0pOwogCQkJaWYgKG9pZCAhPSAwKQogCQkJewotCQkJCWFobG9nKEFILCAxLCAi cmVzdG9yaW5nIGxhcmdlIG9iamVjdCB3aXRoIE9JRCAldVxuIiwgb2lkKTsKKwkJCQlwZ19s b2dfaW5mbygicmVzdG9yaW5nIGxhcmdlIG9iamVjdCB3aXRoIE9JRCAldSIsIG9pZCk7CiAK IAkJCQlTdGFydFJlc3RvcmVCbG9iKEFILCBvaWQsIEFILT5wdWJsaWMucm9wdC0+ZHJvcFNj aGVtYSk7CiAKQEAgLTgwMyw4ICs3OTIsNyBAQCBfUmVhZEJ5dGUoQXJjaGl2ZUhhbmRsZSAq QUgpCiAJcmVzID0gdGFyUmVhZCgmYywgMSwgY3R4LT5GSCk7CiAJaWYgKHJlcyAhPSAxKQog CQkvKiBXZSBhbHJlYWR5IHdvdWxkIGhhdmUgZXhpdGVkIGZvciBlcnJvcnMgb24gcmVhZHMs IG11c3QgYmUgRU9GICovCi0JCWV4aXRfaG9ycmlibHkobW9kdWxlbmFtZSwKLQkJCQkJICAi Y291bGQgbm90IHJlYWQgZnJvbSBpbnB1dCBmaWxlOiBlbmQgb2YgZmlsZVxuIik7CisJCWZh dGFsKCJjb3VsZCBub3QgcmVhZCBmcm9tIGlucHV0IGZpbGU6IGVuZCBvZiBmaWxlIik7CiAJ Y3R4LT5maWxlUG9zICs9IDE7CiAJcmV0dXJuIGM7CiB9CkBAIC04MjcsOCArODE1LDcgQEAg X1JlYWRCdWYoQXJjaGl2ZUhhbmRsZSAqQUgsIHZvaWQgKmJ1Ziwgc2l6ZV90IGxlbikKIAog CWlmICh0YXJSZWFkKGJ1ZiwgbGVuLCBjdHgtPkZIKSAhPSBsZW4pCiAJCS8qIFdlIGFscmVh ZHkgd291bGQgaGF2ZSBleGl0ZWQgZm9yIGVycm9ycyBvbiByZWFkcywgbXVzdCBiZSBFT0Yg Ki8KLQkJZXhpdF9ob3JyaWJseShtb2R1bGVuYW1lLAotCQkJCQkgICJjb3VsZCBub3QgcmVh ZCBmcm9tIGlucHV0IGZpbGU6IGVuZCBvZiBmaWxlXG4iKTsKKwkJZmF0YWwoImNvdWxkIG5v dCByZWFkIGZyb20gaW5wdXQgZmlsZTogZW5kIG9mIGZpbGUiKTsKIAogCWN0eC0+ZmlsZVBv cyArPSBsZW47CiAJcmV0dXJuOwpAQCAtOTE3LDcgKzkwNCw3IEBAIF9DbG9zZUFyY2hpdmUo QXJjaGl2ZUhhbmRsZSAqQUgpCiAKIAkJLyogU3luYyB0aGUgb3V0cHV0IGZpbGUgaWYgb25l IGlzIGRlZmluZWQgKi8KIAkJaWYgKEFILT5kb3N5bmMgJiYgQUgtPmZTcGVjKQotCQkJKHZv aWQpIGZzeW5jX2ZuYW1lKEFILT5mU3BlYywgZmFsc2UsIHByb2duYW1lKTsKKwkJCSh2b2lk KSBmc3luY19mbmFtZShBSC0+ZlNwZWMsIGZhbHNlKTsKIAl9CiAKIAlBSC0+RkggPSBOVUxM OwpAQCAtOTcxLDcgKzk1OCw3IEBAIF9TdGFydEJsb2IoQXJjaGl2ZUhhbmRsZSAqQUgsIFRv Y0VudHJ5ICp0ZSwgT2lkIG9pZCkKIAljaGFyCSAgICpzZng7CiAKIAlpZiAob2lkID09IDAp Ci0JCWV4aXRfaG9ycmlibHkobW9kdWxlbmFtZSwgImludmFsaWQgT0lEIGZvciBsYXJnZSBv YmplY3QgKCV1KVxuIiwgb2lkKTsKKwkJZmF0YWwoImludmFsaWQgT0lEIGZvciBsYXJnZSBv YmplY3QgKCV1KSIsIG9pZCk7CiAKIAlpZiAoQUgtPmNvbXByZXNzaW9uICE9IDApCiAJCXNm eCA9ICIuZ3oiOwpAQCAtMTEwMSw4ICsxMDg4LDcgQEAgX3RhckFkZEZpbGUoQXJjaGl2ZUhh bmRsZSAqQUgsIFRBUl9NRU1CRVIgKnRoKQogCWZzZWVrbyh0bXAsIDAsIFNFRUtfRU5EKTsK IAl0aC0+ZmlsZUxlbiA9IGZ0ZWxsbyh0bXApOwogCWlmICh0aC0+ZmlsZUxlbiA8IDApCi0J CWV4aXRfaG9ycmlibHkobW9kdWxlbmFtZSwgImNvdWxkIG5vdCBkZXRlcm1pbmUgc2VlayBw b3NpdGlvbiBpbiBhcmNoaXZlIGZpbGU6ICVzXG4iLAotCQkJCQkgIHN0cmVycm9yKGVycm5v KSk7CisJCWZhdGFsKCJjb3VsZCBub3QgZGV0ZXJtaW5lIHNlZWsgcG9zaXRpb24gaW4gYXJj aGl2ZSBmaWxlOiAlbSIpOwogCWZzZWVrbyh0bXAsIDAsIFNFRUtfU0VUKTsKIAogCV90YXJX cml0ZUhlYWRlcih0aCk7CkBAIC0xMTE3LDggKzExMDMsNyBAQCBfdGFyQWRkRmlsZShBcmNo aXZlSGFuZGxlICpBSCwgVEFSX01FTUJFUiAqdGgpCiAJCVJFQURfRVJST1JfRVhJVCh0bXAp OwogCiAJaWYgKGZjbG9zZSh0bXApICE9IDApCQkvKiBUaGlzICpzaG91bGQqIGRlbGV0ZSBp dC4uLiAqLwotCQlleGl0X2hvcnJpYmx5KG1vZHVsZW5hbWUsICJjb3VsZCBub3QgY2xvc2Ug dGVtcG9yYXJ5IGZpbGU6ICVzXG4iLAotCQkJCQkgIHN0cmVycm9yKGVycm5vKSk7CisJCWZh dGFsKCJjb3VsZCBub3QgY2xvc2UgdGVtcG9yYXJ5IGZpbGU6ICVtIik7CiAKIAlpZiAobGVu ICE9IHRoLT5maWxlTGVuKQogCXsKQEAgLTExMjcsNyArMTExMiw3IEBAIF90YXJBZGRGaWxl KEFyY2hpdmVIYW5kbGUgKkFILCBUQVJfTUVNQkVSICp0aCkKIAogCQlzbnByaW50ZihidWYx LCBzaXplb2YoYnVmMSksIElOVDY0X0ZPUk1BVCwgKGludDY0KSBsZW4pOwogCQlzbnByaW50 ZihidWYyLCBzaXplb2YoYnVmMiksIElOVDY0X0ZPUk1BVCwgKGludDY0KSB0aC0+ZmlsZUxl bik7Ci0JCWV4aXRfaG9ycmlibHkobW9kdWxlbmFtZSwgImFjdHVhbCBmaWxlIGxlbmd0aCAo JXMpIGRvZXMgbm90IG1hdGNoIGV4cGVjdGVkICglcylcbiIsCisJCWZhdGFsKCJhY3R1YWwg ZmlsZSBsZW5ndGggKCVzKSBkb2VzIG5vdCBtYXRjaCBleHBlY3RlZCAoJXMpIiwKIAkJCQkJ ICBidWYxLCBidWYyKTsKIAl9CiAKQEAgLTExNjQsNyArMTE0OSw3IEBAIF90YXJQb3NpdGlv blRvKEFyY2hpdmVIYW5kbGUgKkFILCBjb25zdCBjaGFyICpmaWxlbmFtZSkKIAogCQlzbnBy aW50ZihidWYxLCBzaXplb2YoYnVmMSksIElOVDY0X0ZPUk1BVCwgKGludDY0KSBjdHgtPnRh ckZIcG9zKTsKIAkJc25wcmludGYoYnVmMiwgc2l6ZW9mKGJ1ZjIpLCBJTlQ2NF9GT1JNQVQs IChpbnQ2NCkgY3R4LT50YXJOZXh0TWVtYmVyKTsKLQkJYWhsb2coQUgsIDQsICJtb3Zpbmcg ZnJvbSBwb3NpdGlvbiAlcyB0byBuZXh0IG1lbWJlciBhdCBmaWxlIHBvc2l0aW9uICVzXG4i LAorCQlwZ19sb2dfZGVidWcoIm1vdmluZyBmcm9tIHBvc2l0aW9uICVzIHRvIG5leHQgbWVt YmVyIGF0IGZpbGUgcG9zaXRpb24gJXMiLAogCQkJICBidWYxLCBidWYyKTsKIAogCQl3aGls ZSAoY3R4LT50YXJGSHBvcyA8IGN0eC0+dGFyTmV4dE1lbWJlcikKQEAgLTExNzUsNyArMTE2 MCw3IEBAIF90YXJQb3NpdGlvblRvKEFyY2hpdmVIYW5kbGUgKkFILCBjb25zdCBjaGFyICpm aWxlbmFtZSkKIAkJY2hhcgkJYnVmWzEwMF07CiAKIAkJc25wcmludGYoYnVmLCBzaXplb2Yo YnVmKSwgSU5UNjRfRk9STUFULCAoaW50NjQpIGN0eC0+dGFyRkhwb3MpOwotCQlhaGxvZyhB SCwgNCwgIm5vdyBhdCBmaWxlIHBvc2l0aW9uICVzXG4iLCBidWYpOworCQlwZ19sb2dfZGVi dWcoIm5vdyBhdCBmaWxlIHBvc2l0aW9uICVzIiwgYnVmKTsKIAl9CiAKIAkvKiBXZSBhcmUg YXQgdGhlIHN0YXJ0IG9mIHRoZSBmaWxlLCBvciBhdCB0aGUgbmV4dCBtZW1iZXIgKi8KQEAg LTExODQsNyArMTE2OSw3IEBAIF90YXJQb3NpdGlvblRvKEFyY2hpdmVIYW5kbGUgKkFILCBj b25zdCBjaGFyICpmaWxlbmFtZSkKIAlpZiAoIV90YXJHZXRIZWFkZXIoQUgsIHRoKSkKIAl7 CiAJCWlmIChmaWxlbmFtZSkKLQkJCWV4aXRfaG9ycmlibHkobW9kdWxlbmFtZSwgImNvdWxk IG5vdCBmaW5kIGhlYWRlciBmb3IgZmlsZSBcIiVzXCIgaW4gdGFyIGFyY2hpdmVcbiIsIGZp bGVuYW1lKTsKKwkJCWZhdGFsKCJjb3VsZCBub3QgZmluZCBoZWFkZXIgZm9yIGZpbGUgXCIl c1wiIGluIHRhciBhcmNoaXZlIiwgZmlsZW5hbWUpOwogCQllbHNlCiAJCXsKIAkJCS8qCkBA IC0xMTk4LDEyICsxMTgzLDEyIEBAIF90YXJQb3NpdGlvblRvKEFyY2hpdmVIYW5kbGUgKkFI LCBjb25zdCBjaGFyICpmaWxlbmFtZSkKIAogCXdoaWxlIChmaWxlbmFtZSAhPSBOVUxMICYm IHN0cmNtcCh0aC0+dGFyZ2V0RmlsZSwgZmlsZW5hbWUpICE9IDApCiAJewotCQlhaGxvZyhB SCwgNCwgInNraXBwaW5nIHRhciBtZW1iZXIgJXNcbiIsIHRoLT50YXJnZXRGaWxlKTsKKwkJ cGdfbG9nX2RlYnVnKCJza2lwcGluZyB0YXIgbWVtYmVyICVzIiwgdGgtPnRhcmdldEZpbGUp OwogCiAJCWlkID0gYXRvaSh0aC0+dGFyZ2V0RmlsZSk7CiAJCWlmICgoVG9jSURSZXF1aXJl ZChBSCwgaWQpICYgUkVRX0RBVEEpICE9IDApCi0JCQlleGl0X2hvcnJpYmx5KG1vZHVsZW5h bWUsICJyZXN0b3JpbmcgZGF0YSBvdXQgb2Ygb3JkZXIgaXMgbm90IHN1cHBvcnRlZCBpbiB0 aGlzIGFyY2hpdmUgZm9ybWF0OiAiCi0JCQkJCQkgICJcIiVzXCIgaXMgcmVxdWlyZWQsIGJ1 dCBjb21lcyBiZWZvcmUgXCIlc1wiIGluIHRoZSBhcmNoaXZlIGZpbGUuXG4iLAorCQkJZmF0 YWwoInJlc3RvcmluZyBkYXRhIG91dCBvZiBvcmRlciBpcyBub3Qgc3VwcG9ydGVkIGluIHRo aXMgYXJjaGl2ZSBmb3JtYXQ6ICIKKwkJCQkJCSAgIlwiJXNcIiBpcyByZXF1aXJlZCwgYnV0 IGNvbWVzIGJlZm9yZSBcIiVzXCIgaW4gdGhlIGFyY2hpdmUgZmlsZS4iLAogCQkJCQkJICB0 aC0+dGFyZ2V0RmlsZSwgZmlsZW5hbWUpOwogCiAJCS8qIEhlYWRlciBkb2Vzbid0IG1hdGNo LCBzbyByZWFkIHRvIG5leHQgaGVhZGVyICovCkBAIC0xMjE0LDcgKzExOTksNyBAQCBfdGFy UG9zaXRpb25UbyhBcmNoaXZlSGFuZGxlICpBSCwgY29uc3QgY2hhciAqZmlsZW5hbWUpCiAJ CQlfdGFyUmVhZFJhdyhBSCwgJmhlYWRlclswXSwgNTEyLCBOVUxMLCBjdHgtPnRhckZIKTsK IAogCQlpZiAoIV90YXJHZXRIZWFkZXIoQUgsIHRoKSkKLQkJCWV4aXRfaG9ycmlibHkobW9k dWxlbmFtZSwgImNvdWxkIG5vdCBmaW5kIGhlYWRlciBmb3IgZmlsZSBcIiVzXCIgaW4gdGFy IGFyY2hpdmVcbiIsIGZpbGVuYW1lKTsKKwkJCWZhdGFsKCJjb3VsZCBub3QgZmluZCBoZWFk ZXIgZm9yIGZpbGUgXCIlc1wiIGluIHRhciBhcmNoaXZlIiwgZmlsZW5hbWUpOwogCX0KIAog CWN0eC0+dGFyTmV4dE1lbWJlciA9IGN0eC0+dGFyRkhwb3MgKyAoKHRoLT5maWxlTGVuICsg NTExKSAmIH41MTEpOwpAQCAtMTI0Nyw5ICsxMjMyLDggQEAgX3RhckdldEhlYWRlcihBcmNo aXZlSGFuZGxlICpBSCwgVEFSX01FTUJFUiAqdGgpCiAJCQlyZXR1cm4gMDsKIAogCQlpZiAo bGVuICE9IDUxMikKLQkJCWV4aXRfaG9ycmlibHkobW9kdWxlbmFtZSwKLQkJCQkJCSAgbmdl dHRleHQoImluY29tcGxldGUgdGFyIGhlYWRlciBmb3VuZCAoJWx1IGJ5dGUpXG4iLAotCQkJ CQkJCQkgICAiaW5jb21wbGV0ZSB0YXIgaGVhZGVyIGZvdW5kICglbHUgYnl0ZXMpXG4iLAor CQkJZmF0YWwobmdldHRleHQoImluY29tcGxldGUgdGFyIGhlYWRlciBmb3VuZCAoJWx1IGJ5 dGUpIiwKKwkJCQkJCSAgICJpbmNvbXBsZXRlIHRhciBoZWFkZXIgZm91bmQgKCVsdSBieXRl cykiLAogCQkJCQkJCQkgICBsZW4pLAogCQkJCQkJICAodW5zaWduZWQgbG9uZykgbGVuKTsK IApAQCAtMTI4OSw3ICsxMjczLDcgQEAgX3RhckdldEhlYWRlcihBcmNoaXZlSGFuZGxlICpB SCwgVEFSX01FTUJFUiAqdGgpCiAKIAkJc25wcmludGYocG9zYnVmLCBzaXplb2YocG9zYnVm KSwgVUlOVDY0X0ZPUk1BVCwgKHVpbnQ2NCkgaFBvcyk7CiAJCXNucHJpbnRmKGxlbmJ1Ziwg c2l6ZW9mKGxlbmJ1ZiksIFVJTlQ2NF9GT1JNQVQsICh1aW50NjQpIGxlbik7Ci0JCWFobG9n KEFILCAzLCAiVE9DIEVudHJ5ICVzIGF0ICVzIChsZW5ndGggJXMsIGNoZWNrc3VtICVkKVxu IiwKKwkJcGdfbG9nX2RlYnVnKCJUT0MgRW50cnkgJXMgYXQgJXMgKGxlbmd0aCAlcywgY2hl Y2tzdW0gJWQpIiwKIAkJCSAgdGFnLCBwb3NidWYsIGxlbmJ1Ziwgc3VtKTsKIAl9CiAKQEAg LTEyOTksOSArMTI4Myw3IEBAIF90YXJHZXRIZWFkZXIoQXJjaGl2ZUhhbmRsZSAqQUgsIFRB Ul9NRU1CRVIgKnRoKQogCiAJCXNucHJpbnRmKHBvc2J1Ziwgc2l6ZW9mKHBvc2J1ZiksIFVJ TlQ2NF9GT1JNQVQsCiAJCQkJICh1aW50NjQpIGZ0ZWxsbyhjdHgtPnRhckZIKSk7Ci0JCWV4 aXRfaG9ycmlibHkobW9kdWxlbmFtZSwKLQkJCQkJICAiY29ycnVwdCB0YXIgaGVhZGVyIGZv dW5kIGluICVzICIKLQkJCQkJICAiKGV4cGVjdGVkICVkLCBjb21wdXRlZCAlZCkgZmlsZSBw b3NpdGlvbiAlc1xuIiwKKwkJZmF0YWwoImNvcnJ1cHQgdGFyIGhlYWRlciBmb3VuZCBpbiAl cyAoZXhwZWN0ZWQgJWQsIGNvbXB1dGVkICVkKSBmaWxlIHBvc2l0aW9uICVzIiwKIAkJCQkJ ICB0YWcsIHN1bSwgY2hrLCBwb3NidWYpOwogCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9w Z19kdW1wL3BnX2JhY2t1cF91dGlscy5jIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF91 dGlscy5jCmluZGV4IGRmNWZlNzA4YmEuLjE3ODFhODljZDkgMTAwNjQ0Ci0tLSBhL3NyYy9i aW4vcGdfZHVtcC9wZ19iYWNrdXBfdXRpbHMuYworKysgYi9zcmMvYmluL3BnX2R1bXAvcGdf YmFja3VwX3V0aWxzLmMKQEAgLTkzLDI5ICs5MywxNSBAQCB2d3JpdGVfbXNnKGNvbnN0IGNo YXIgKm1vZHVsZW5hbWUsIGNvbnN0IGNoYXIgKmZtdCwgdmFfbGlzdCBhcCkKIAl2ZnByaW50 ZihzdGRlcnIsIF8oZm10KSwgYXApOwogfQogCi0vKgotICogRmFpbCBhbmQgZGllLCB3aXRo IGEgbWVzc2FnZSB0byBzdGRlcnIuICBQYXJhbWV0ZXJzIGFzIGZvciB3cml0ZV9tc2cuCi0g KgotICogTm90ZSB0aGF0IG9uX2V4aXRfbmljZWx5IGNhbGxiYWNrcyB3aWxsIGdldCBydW4u Ci0gKi8KLXZvaWQKLWV4aXRfaG9ycmlibHkoY29uc3QgY2hhciAqbW9kdWxlbmFtZSwgY29u c3QgY2hhciAqZm10LC4uLikKLXsKLQl2YV9saXN0CQlhcDsKLQotCXZhX3N0YXJ0KGFwLCBm bXQpOwotCXZ3cml0ZV9tc2cobW9kdWxlbmFtZSwgZm10LCBhcCk7Ci0JdmFfZW5kKGFwKTsK LQotCWV4aXRfbmljZWx5KDEpOwotfQotCiAvKiBSZWdpc3RlciBhIGNhbGxiYWNrIHRvIGJl IHJ1biB3aGVuIGV4aXRfbmljZWx5IGlzIGludm9rZWQuICovCiB2b2lkCiBvbl9leGl0X25p Y2VseShvbl9leGl0X25pY2VseV9jYWxsYmFjayBmdW5jdGlvbiwgdm9pZCAqYXJnKQogewog CWlmIChvbl9leGl0X25pY2VseV9pbmRleCA+PSBNQVhfT05fRVhJVF9OSUNFTFkpCi0JCWV4 aXRfaG9ycmlibHkoTlVMTCwgIm91dCBvZiBvbl9leGl0X25pY2VseSBzbG90c1xuIik7CisJ eworCQlwZ19sb2dfZmF0YWwoIm91dCBvZiBvbl9leGl0X25pY2VseSBzbG90cyIpOworCQll eGl0X25pY2VseSgxKTsKKwl9CiAJb25fZXhpdF9uaWNlbHlfbGlzdFtvbl9leGl0X25pY2Vs eV9pbmRleF0uZnVuY3Rpb24gPSBmdW5jdGlvbjsKIAlvbl9leGl0X25pY2VseV9saXN0W29u X2V4aXRfbmljZWx5X2luZGV4XS5hcmcgPSBhcmc7CiAJb25fZXhpdF9uaWNlbHlfaW5kZXgr KzsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfdXRpbHMuaCBiL3Ny Yy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfdXRpbHMuaAppbmRleCA2ZWFmMzAyZmM3Li5mMDhl MTJjNTg0IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX3V0aWxzLmgK KysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF91dGlscy5oCkBAIC0xNSw2ICsxNSw4 IEBACiAjaWZuZGVmIFBHX0JBQ0tVUF9VVElMU19ICiAjZGVmaW5lIFBHX0JBQ0tVUF9VVElM U19ICiAKKyNpbmNsdWRlICJmZV91dGlscy9sb2dnaW5nLmgiCisKIHR5cGVkZWYgZW51bQkJ CQkJLyogYml0cyByZXR1cm5lZCBieSBzZXRfZHVtcF9zZWN0aW9uICovCiB7CiAJRFVNUF9Q UkVfREFUQSA9IDB4MDEsCkBAIC0zMyw2ICszNSw2IEBAIGV4dGVybiB2b2lkIHZ3cml0ZV9t c2coY29uc3QgY2hhciAqbW9kdWxlbmFtZSwgY29uc3QgY2hhciAqZm10LCB2YV9saXN0IGFw KSBwZ19hCiBleHRlcm4gdm9pZCBvbl9leGl0X25pY2VseShvbl9leGl0X25pY2VseV9jYWxs YmFjayBmdW5jdGlvbiwgdm9pZCAqYXJnKTsKIGV4dGVybiB2b2lkIGV4aXRfbmljZWx5KGlu dCBjb2RlKSBwZ19hdHRyaWJ1dGVfbm9yZXR1cm4oKTsKIAotZXh0ZXJuIHZvaWQgZXhpdF9o b3JyaWJseShjb25zdCBjaGFyICptb2R1bGVuYW1lLCBjb25zdCBjaGFyICpmbXQsLi4uKSBw Z19hdHRyaWJ1dGVfcHJpbnRmKDIsIDMpIHBnX2F0dHJpYnV0ZV9ub3JldHVybigpOworI2Rl ZmluZSBmYXRhbCguLi4pIGRvIHsgcGdfbG9nX2Vycm9yKF9fVkFfQVJHU19fKTsgZXhpdF9u aWNlbHkoMSk7IH0gd2hpbGUoMCkKIAogI2VuZGlmCQkJCQkJCS8qIFBHX0JBQ0tVUF9VVElM U19IICovCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jIGIvc3JjL2Jp bi9wZ19kdW1wL3BnX2R1bXAuYwppbmRleCAzNDFiMWE1MWYyLi43ZDk0ZjhmZmQ1IDEwMDY0 NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCisrKyBiL3NyYy9iaW4vcGdfZHVt cC9wZ19kdW1wLmMKQEAgLTYyLDYgKzYyLDcgQEAKICNpbmNsdWRlICJwZ19iYWNrdXBfdXRp bHMuaCIKICNpbmNsdWRlICJwZ19kdW1wLmgiCiAjaW5jbHVkZSAiZmVfdXRpbHMvY29ubmVj dC5oIgorI2luY2x1ZGUgImZlX3V0aWxzL2xvZ2dpbmcuaCIKICNpbmNsdWRlICJmZV91dGls cy9zdHJpbmdfdXRpbHMuaCIKIAogCkBAIC05MSw4ICs5Miw2IEBAIHR5cGVkZWYgZW51bSBP aWRPcHRpb25zCiB9IE9pZE9wdGlvbnM7CiAKIC8qIGdsb2JhbCBkZWNscyAqLwotYm9vbAkJ Z192ZXJib3NlOwkJCS8qIFVzZXIgd2FudHMgdmVyYm9zZSBuYXJyYXRpb24gb2Ygb3VyCi0J CQkJCQkJCSAqIGFjdGl2aXRpZXMuICovCiBzdGF0aWMgYm9vbCBkb3N5bmMgPSB0cnVlOwkJ LyogSXNzdWUgZnN5bmMoKSB0byBtYWtlIGR1bXAgZHVyYWJsZSBvbiBkaXNrLiAqLwogCiAv KiBzdWJxdWVyeSB1c2VkIHRvIGNvbnZlcnQgdXNlciBJRCAoZWcsIGRhdGRiYSkgdG8gdXNl ciBuYW1lICovCkBAIC0zMDQsNiArMzAzLDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFy Z3YpCiAJaW50CQkJb3B0aW5kZXg7CiAJUmVzdG9yZU9wdGlvbnMgKnJvcHQ7CiAJQXJjaGl2 ZSAgICAqZm91dDsJCQkvKiB0aGUgc2NyaXB0IGZpbGUgKi8KKwlib29sCQlnX3ZlcmJvc2Ug PSBmYWxzZTsKIAljb25zdCBjaGFyICpkdW1wZW5jb2RpbmcgPSBOVUxMOwogCWNvbnN0IGNo YXIgKmR1bXBzbmFwc2hvdCA9IE5VTEw7CiAJY2hhcgkgICAqdXNlX3JvbGUgPSBOVUxMOwpA QCAtMzgyLDYgKzM4Miw4IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCX07CiAK IAlzZXRfcGdsb2NhbGVfcGdzZXJ2aWNlKGFyZ3ZbMF0sIFBHX1RFWFRET01BSU4oInBnX2R1 bXAiKSk7CisJcGdfbG9nZ2luZ19pbml0KGFyZ3ZbMF0pOworCXBnX2xvZ2dpbmdfc2V0X2xl dmVsKFBHX0xPR19XQVJOSU5HKTsKIAogCS8qCiAJICogSW5pdGlhbGl6ZSB3aGF0IHdlIG5l ZWQgZm9yIHBhcmFsbGVsIGV4ZWN1dGlvbiwgZXNwZWNpYWxseSBmb3IgdGhyZWFkCkBAIC0z ODksOCArMzkxLDYgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJICovCiAJaW5p dF9wYXJhbGxlbF9kdW1wX3V0aWxzKCk7CiAKLQlnX3ZlcmJvc2UgPSBmYWxzZTsKLQogCXN0 cmNweShnX2NvbW1lbnRfc3RhcnQsICItLSAiKTsKIAlnX2NvbW1lbnRfZW5kWzBdID0gJ1ww JzsKIAlzdHJjcHkoZ19vcGFxdWVfdHlwZSwgIm9wYXF1ZSIpOwpAQCAtNTA2LDYgKzUwNiw3 IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCiAJCQljYXNlICd2JzoJCQkvKiB2 ZXJib3NlICovCiAJCQkJZ192ZXJib3NlID0gdHJ1ZTsKKwkJCQlwZ19sb2dnaW5nX3NldF9s ZXZlbChQR19MT0dfSU5GTyk7CiAJCQkJYnJlYWs7CiAKIAkJCWNhc2UgJ3cnOgpAQCAtNTI0 LDcgKzUyNSw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCQkJCWNvbXByZXNz TGV2ZWwgPSBhdG9pKG9wdGFyZyk7CiAJCQkJaWYgKGNvbXByZXNzTGV2ZWwgPCAwIHx8IGNv bXByZXNzTGV2ZWwgPiA5KQogCQkJCXsKLQkJCQkJd3JpdGVfbXNnKE5VTEwsICJjb21wcmVz c2lvbiBsZXZlbCBtdXN0IGJlIGluIHJhbmdlIDAuLjlcbiIpOworCQkJCQlwZ19sb2dfZXJy b3IoImNvbXByZXNzaW9uIGxldmVsIG11c3QgYmUgaW4gcmFuZ2UgMC4uOSIpOwogCQkJCQll eGl0X25pY2VseSgxKTsKIAkJCQl9CiAJCQkJYnJlYWs7CkBAIC01NzMsOCArNTc0LDggQEAg bWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJLyogQ29tcGxhaW4gaWYgYW55IGFyZ3Vt ZW50cyByZW1haW4gKi8KIAlpZiAob3B0aW5kIDwgYXJnYykKIAl7Ci0JCWZwcmludGYoc3Rk ZXJyLCBfKCIlczogdG9vIG1hbnkgY29tbWFuZC1saW5lIGFyZ3VtZW50cyAoZmlyc3QgaXMg XCIlc1wiKVxuIiksCi0JCQkJcHJvZ25hbWUsIGFyZ3Zbb3B0aW5kXSk7CisJCXBnX2xvZ19l cnJvcigidG9vIG1hbnkgY29tbWFuZC1saW5lIGFyZ3VtZW50cyAoZmlyc3QgaXMgXCIlc1wi KSIsCisJCQkJCSBhcmd2W29wdGluZF0pOwogCQlmcHJpbnRmKHN0ZGVyciwgXygiVHJ5IFwi JXMgLS1oZWxwXCIgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4iKSwKIAkJCQlwcm9nbmFtZSk7 CiAJCWV4aXRfbmljZWx5KDEpOwpAQCAtNTk0LDIxICs1OTUsMjEgQEAgbWFpbihpbnQgYXJn YywgY2hhciAqKmFyZ3YpCiAKIAlpZiAoZG9wdC5kYXRhT25seSAmJiBkb3B0LnNjaGVtYU9u bHkpCiAJewotCQl3cml0ZV9tc2coTlVMTCwgIm9wdGlvbnMgLXMvLS1zY2hlbWEtb25seSBh bmQgLWEvLS1kYXRhLW9ubHkgY2Fubm90IGJlIHVzZWQgdG9nZXRoZXJcbiIpOworCQlwZ19s b2dfZXJyb3IoIm9wdGlvbnMgLXMvLS1zY2hlbWEtb25seSBhbmQgLWEvLS1kYXRhLW9ubHkg Y2Fubm90IGJlIHVzZWQgdG9nZXRoZXIiKTsKIAkJZXhpdF9uaWNlbHkoMSk7CiAJfQogCiAJ aWYgKGRvcHQuZGF0YU9ubHkgJiYgZG9wdC5vdXRwdXRDbGVhbikKIAl7Ci0JCXdyaXRlX21z ZyhOVUxMLCAib3B0aW9ucyAtYy8tLWNsZWFuIGFuZCAtYS8tLWRhdGEtb25seSBjYW5ub3Qg YmUgdXNlZCB0b2dldGhlclxuIik7CisJCXBnX2xvZ19lcnJvcigib3B0aW9ucyAtYy8tLWNs ZWFuIGFuZCAtYS8tLWRhdGEtb25seSBjYW5ub3QgYmUgdXNlZCB0b2dldGhlciIpOwogCQll eGl0X25pY2VseSgxKTsKIAl9CiAKIAlpZiAoZG9wdC5pZl9leGlzdHMgJiYgIWRvcHQub3V0 cHV0Q2xlYW4pCi0JCWV4aXRfaG9ycmlibHkoTlVMTCwgIm9wdGlvbiAtLWlmLWV4aXN0cyBy ZXF1aXJlcyBvcHRpb24gLWMvLS1jbGVhblxuIik7CisJCWZhdGFsKCJvcHRpb24gLS1pZi1l eGlzdHMgcmVxdWlyZXMgb3B0aW9uIC1jLy0tY2xlYW4iKTsKIAogCWlmIChkb3B0LmRvX25v dGhpbmcgJiYgIShkb3B0LmR1bXBfaW5zZXJ0cyB8fCBkb3B0LmNvbHVtbl9pbnNlcnRzKSkK LQkJZXhpdF9ob3JyaWJseShOVUxMLCAib3B0aW9uIC0tb24tY29uZmxpY3QtZG8tbm90aGlu ZyByZXF1aXJlcyBvcHRpb24gLS1pbnNlcnRzIG9yIC0tY29sdW1uLWluc2VydHNcbiIpOwor CQlmYXRhbCgib3B0aW9uIC0tb24tY29uZmxpY3QtZG8tbm90aGluZyByZXF1aXJlcyBvcHRp b24gLS1pbnNlcnRzIG9yIC0tY29sdW1uLWluc2VydHMiKTsKIAogCS8qIElkZW50aWZ5IGFy Y2hpdmUgZm9ybWF0IHRvIGVtaXQgKi8KIAlhcmNoaXZlRm9ybWF0ID0gcGFyc2VBcmNoaXZl Rm9ybWF0KGZvcm1hdCwgJmFyY2hpdmVNb2RlKTsKQEAgLTYzMCw4ICs2MzEsNyBAQCBtYWlu KGludCBhcmdjLCBjaGFyICoqYXJndikKIAogI2lmbmRlZiBIQVZFX0xJQloKIAlpZiAoY29t cHJlc3NMZXZlbCAhPSAwKQotCQl3cml0ZV9tc2coTlVMTCwgIldBUk5JTkc6IHJlcXVlc3Rl ZCBjb21wcmVzc2lvbiBub3QgYXZhaWxhYmxlIGluIHRoaXMgIgotCQkJCSAgImluc3RhbGxh dGlvbiAtLSBhcmNoaXZlIHdpbGwgYmUgdW5jb21wcmVzc2VkXG4iKTsKKwkJcGdfbG9nX3dh cm5pbmcoInJlcXVlc3RlZCBjb21wcmVzc2lvbiBub3QgYXZhaWxhYmxlIGluIHRoaXMgaW5z dGFsbGF0aW9uIC0tIGFyY2hpdmUgd2lsbCBiZSB1bmNvbXByZXNzZWQiKTsKIAljb21wcmVz c0xldmVsID0gMDsKICNlbmRpZgogCkBAIC02NTIsMTEgKzY1MiwxMSBAQCBtYWluKGludCBh cmdjLCBjaGFyICoqYXJndikKIAkJfHwgbnVtV29ya2VycyA+IE1BWElNVU1fV0FJVF9PQkpF Q1RTCiAjZW5kaWYKIAkJKQotCQlleGl0X2hvcnJpYmx5KE5VTEwsICJpbnZhbGlkIG51bWJl ciBvZiBwYXJhbGxlbCBqb2JzXG4iKTsKKwkJZmF0YWwoImludmFsaWQgbnVtYmVyIG9mIHBh cmFsbGVsIGpvYnMiKTsKIAogCS8qIFBhcmFsbGVsIGJhY2t1cCBvbmx5IGluIHRoZSBkaXJl Y3RvcnkgYXJjaGl2ZSBmb3JtYXQgc28gZmFyICovCiAJaWYgKGFyY2hpdmVGb3JtYXQgIT0g YXJjaERpcmVjdG9yeSAmJiBudW1Xb3JrZXJzID4gMSkKLQkJZXhpdF9ob3JyaWJseShOVUxM LCAicGFyYWxsZWwgYmFja3VwIG9ubHkgc3VwcG9ydGVkIGJ5IHRoZSBkaXJlY3RvcnkgZm9y bWF0XG4iKTsKKwkJZmF0YWwoInBhcmFsbGVsIGJhY2t1cCBvbmx5IHN1cHBvcnRlZCBieSB0 aGUgZGlyZWN0b3J5IGZvcm1hdCIpOwogCiAJLyogT3BlbiB0aGUgb3V0cHV0IGZpbGUgKi8K IAlmb3V0ID0gQ3JlYXRlQXJjaGl2ZShmaWxlbmFtZSwgYXJjaGl2ZUZvcm1hdCwgY29tcHJl c3NMZXZlbCwgZG9zeW5jLApAQCAtNjcxLDYgKzY3MSw3IEBAIG1haW4oaW50IGFyZ2MsIGNo YXIgKiphcmd2KQogCS8qIExldCB0aGUgYXJjaGl2ZXIga25vdyBob3cgbm9pc3kgdG8gYmUg Ki8KIAlmb3V0LT52ZXJib3NlID0gZ192ZXJib3NlOwogCisKIAkvKgogCSAqIFdlIGFsbG93 IHRoZSBzZXJ2ZXIgdG8gYmUgYmFjayB0byA4LjAsIGFuZCB1cCB0byBhbnkgbWlub3IgcmVs ZWFzZSBvZgogCSAqIG91ciBvd24gbWFqb3IgdmVyc2lvbi4gIChTZWUgYWxzbyB2ZXJzaW9u IGNoZWNrIGluIHBnX2R1bXBhbGwuYy4pCkBAIC03MTAsMTUgKzcxMSwxMyBAQCBtYWluKGlu dCBhcmdjLCBjaGFyICoqYXJndikKIAkvKiBjaGVjayB0aGUgdmVyc2lvbiBmb3IgdGhlIHN5 bmNocm9uaXplZCBzbmFwc2hvdHMgZmVhdHVyZSAqLwogCWlmIChudW1Xb3JrZXJzID4gMSAm JiBmb3V0LT5yZW1vdGVWZXJzaW9uIDwgOTAyMDAKIAkJJiYgIWRvcHQubm9fc3luY2hyb25p emVkX3NuYXBzaG90cykKLQkJZXhpdF9ob3JyaWJseShOVUxMLAotCQkJCQkgICJTeW5jaHJv bml6ZWQgc25hcHNob3RzIGFyZSBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgc2VydmVyIHZlcnNp b24uXG4iCi0JCQkJCSAgIlJ1biB3aXRoIC0tbm8tc3luY2hyb25pemVkLXNuYXBzaG90cyBp bnN0ZWFkIGlmIHlvdSBkbyBub3QgbmVlZFxuIgotCQkJCQkgICJzeW5jaHJvbml6ZWQgc25h cHNob3RzLlxuIik7CisJCWZhdGFsKCJTeW5jaHJvbml6ZWQgc25hcHNob3RzIGFyZSBub3Qg c3VwcG9ydGVkIGJ5IHRoaXMgc2VydmVyIHZlcnNpb24uXG4iCisJCQkgICJSdW4gd2l0aCAt LW5vLXN5bmNocm9uaXplZC1zbmFwc2hvdHMgaW5zdGVhZCBpZiB5b3UgZG8gbm90IG5lZWRc biIKKwkJCSAgInN5bmNocm9uaXplZCBzbmFwc2hvdHMuIik7CiAKIAkvKiBjaGVjayB0aGUg dmVyc2lvbiB3aGVuIGEgc25hcHNob3QgaXMgZXhwbGljaXRseSBzcGVjaWZpZWQgYnkgdXNl ciAqLwogCWlmIChkdW1wc25hcHNob3QgJiYgZm91dC0+cmVtb3RlVmVyc2lvbiA8IDkwMjAw KQotCQlleGl0X2hvcnJpYmx5KE5VTEwsCi0JCQkJCSAgIkV4cG9ydGVkIHNuYXBzaG90cyBh cmUgbm90IHN1cHBvcnRlZCBieSB0aGlzIHNlcnZlciB2ZXJzaW9uLlxuIik7CisJCWZhdGFs KCJFeHBvcnRlZCBzbmFwc2hvdHMgYXJlIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBzZXJ2ZXIg dmVyc2lvbi4iKTsKIAogCS8qCiAJICogRmluZCB0aGUgbGFzdCBidWlsdC1pbiBPSUQsIGlm IG5lZWRlZCAocHJpb3IgdG8gOC4xKQpAQCAtNzMwLDggKzcyOSw3IEBAIG1haW4oaW50IGFy Z2MsIGNoYXIgKiphcmd2KQogCWVsc2UKIAkJZ19sYXN0X2J1aWx0aW5fb2lkID0gRmlyc3RO b3JtYWxPYmplY3RJZCAtIDE7CiAKLQlpZiAoZ192ZXJib3NlKQotCQl3cml0ZV9tc2coTlVM TCwgImxhc3QgYnVpbHQtaW4gT0lEIGlzICV1XG4iLCBnX2xhc3RfYnVpbHRpbl9vaWQpOwor CXBnX2xvZ19pbmZvKCJsYXN0IGJ1aWx0LWluIE9JRCBpcyAldSIsIGdfbGFzdF9idWlsdGlu X29pZCk7CiAKIAkvKiBFeHBhbmQgc2NoZW1hIHNlbGVjdGlvbiBwYXR0ZXJucyBpbnRvIE9J RCBsaXN0cyAqLwogCWlmIChzY2hlbWFfaW5jbHVkZV9wYXR0ZXJucy5oZWFkICE9IE5VTEwp CkBAIC03NDAsNyArNzM4LDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJCQkJ CQkJCQkmc2NoZW1hX2luY2x1ZGVfb2lkcywKIAkJCQkJCQkJCXN0cmljdF9uYW1lcyk7CiAJ CWlmIChzY2hlbWFfaW5jbHVkZV9vaWRzLmhlYWQgPT0gTlVMTCkKLQkJCWV4aXRfaG9ycmli bHkoTlVMTCwgIm5vIG1hdGNoaW5nIHNjaGVtYXMgd2VyZSBmb3VuZFxuIik7CisJCQlmYXRh bCgibm8gbWF0Y2hpbmcgc2NoZW1hcyB3ZXJlIGZvdW5kIik7CiAJfQogCWV4cGFuZF9zY2hl bWFfbmFtZV9wYXR0ZXJucyhmb3V0LCAmc2NoZW1hX2V4Y2x1ZGVfcGF0dGVybnMsCiAJCQkJ CQkJCSZzY2hlbWFfZXhjbHVkZV9vaWRzLApAQCAtNzU0LDcgKzc1Miw3IEBAIG1haW4oaW50 IGFyZ2MsIGNoYXIgKiphcmd2KQogCQkJCQkJCQkgICAmdGFibGVfaW5jbHVkZV9vaWRzLAog CQkJCQkJCQkgICBzdHJpY3RfbmFtZXMpOwogCQlpZiAodGFibGVfaW5jbHVkZV9vaWRzLmhl YWQgPT0gTlVMTCkKLQkJCWV4aXRfaG9ycmlibHkoTlVMTCwgIm5vIG1hdGNoaW5nIHRhYmxl cyB3ZXJlIGZvdW5kXG4iKTsKKwkJCWZhdGFsKCJubyBtYXRjaGluZyB0YWJsZXMgd2VyZSBm b3VuZCIpOwogCX0KIAlleHBhbmRfdGFibGVfbmFtZV9wYXR0ZXJucyhmb3V0LCAmdGFibGVf ZXhjbHVkZV9wYXR0ZXJucywKIAkJCQkJCQkgICAmdGFibGVfZXhjbHVkZV9vaWRzLApAQCAt MTAxNiw4ICsxMDE0LDggQEAgc2V0dXBfY29ubmVjdGlvbihBcmNoaXZlICpBSCwgY29uc3Qg Y2hhciAqZHVtcGVuY29kaW5nLAogCWlmIChkdW1wZW5jb2RpbmcpCiAJewogCQlpZiAoUFFz ZXRDbGllbnRFbmNvZGluZyhjb25uLCBkdW1wZW5jb2RpbmcpIDwgMCkKLQkJCWV4aXRfaG9y cmlibHkoTlVMTCwgImludmFsaWQgY2xpZW50IGVuY29kaW5nIFwiJXNcIiBzcGVjaWZpZWRc biIsCi0JCQkJCQkgIGR1bXBlbmNvZGluZyk7CisJCQlmYXRhbCgiaW52YWxpZCBjbGllbnQg ZW5jb2RpbmcgXCIlc1wiIHNwZWNpZmllZCIsCisJCQkJICBkdW1wZW5jb2RpbmcpOwogCX0K IAogCS8qCkBAIC0xMTUyLDEwICsxMTUwLDkgQEAgc2V0dXBfY29ubmVjdGlvbihBcmNoaXZl ICpBSCwgY29uc3QgY2hhciAqZHVtcGVuY29kaW5nLAogCQkJICFkb3B0LT5ub19zeW5jaHJv bml6ZWRfc25hcHNob3RzKQogCXsKIAkJaWYgKEFILT5pc1N0YW5kYnkgJiYgQUgtPnJlbW90 ZVZlcnNpb24gPCAxMDAwMDApCi0JCQlleGl0X2hvcnJpYmx5KE5VTEwsCi0JCQkJCQkgICJT eW5jaHJvbml6ZWQgc25hcHNob3RzIG9uIHN0YW5kYnkgc2VydmVycyBhcmUgbm90IHN1cHBv cnRlZCBieSB0aGlzIHNlcnZlciB2ZXJzaW9uLlxuIgotCQkJCQkJICAiUnVuIHdpdGggLS1u by1zeW5jaHJvbml6ZWQtc25hcHNob3RzIGluc3RlYWQgaWYgeW91IGRvIG5vdCBuZWVkXG4i Ci0JCQkJCQkgICJzeW5jaHJvbml6ZWQgc25hcHNob3RzLlxuIik7CisJCQlmYXRhbCgiU3lu Y2hyb25pemVkIHNuYXBzaG90cyBvbiBzdGFuZGJ5IHNlcnZlcnMgYXJlIG5vdCBzdXBwb3J0 ZWQgYnkgdGhpcyBzZXJ2ZXIgdmVyc2lvbi5cbiIKKwkJCQkgICJSdW4gd2l0aCAtLW5vLXN5 bmNocm9uaXplZC1zbmFwc2hvdHMgaW5zdGVhZCBpZiB5b3UgZG8gbm90IG5lZWRcbiIKKwkJ CQkgICJzeW5jaHJvbml6ZWQgc25hcHNob3RzLiIpOwogCiAKIAkJQUgtPnN5bmNfc25hcHNo b3RfaWQgPSBnZXRfc3luY2hyb25pemVkX3NuYXBzaG90KEFIKTsKQEAgLTEyMjIsNyArMTIx OSw3IEBAIHBhcnNlQXJjaGl2ZUZvcm1hdChjb25zdCBjaGFyICpmb3JtYXQsIEFyY2hpdmVN b2RlICptb2RlKQogCWVsc2UgaWYgKHBnX3N0cmNhc2VjbXAoZm9ybWF0LCAidGFyIikgPT0g MCkKIAkJYXJjaGl2ZUZvcm1hdCA9IGFyY2hUYXI7CiAJZWxzZQotCQlleGl0X2hvcnJpYmx5 KE5VTEwsICJpbnZhbGlkIG91dHB1dCBmb3JtYXQgXCIlc1wiIHNwZWNpZmllZFxuIiwgZm9y bWF0KTsKKwkJZmF0YWwoImludmFsaWQgb3V0cHV0IGZvcm1hdCBcIiVzXCIgc3BlY2lmaWVk IiwgZm9ybWF0KTsKIAlyZXR1cm4gYXJjaGl2ZUZvcm1hdDsKIH0KIApAQCAtMTI2MCw3ICsx MjU3LDcgQEAgZXhwYW5kX3NjaGVtYV9uYW1lX3BhdHRlcm5zKEFyY2hpdmUgKmZvdXQsCiAK IAkJcmVzID0gRXhlY3V0ZVNxbFF1ZXJ5KGZvdXQsIHF1ZXJ5LT5kYXRhLCBQR1JFU19UVVBM RVNfT0spOwogCQlpZiAoc3RyaWN0X25hbWVzICYmIFBRbnR1cGxlcyhyZXMpID09IDApCi0J CQlleGl0X2hvcnJpYmx5KE5VTEwsICJubyBtYXRjaGluZyBzY2hlbWFzIHdlcmUgZm91bmQg Zm9yIHBhdHRlcm4gXCIlc1wiXG4iLCBjZWxsLT52YWwpOworCQkJZmF0YWwoIm5vIG1hdGNo aW5nIHNjaGVtYXMgd2VyZSBmb3VuZCBmb3IgcGF0dGVybiBcIiVzXCIiLCBjZWxsLT52YWwp OwogCiAJCWZvciAoaSA9IDA7IGkgPCBQUW50dXBsZXMocmVzKTsgaSsrKQogCQl7CkBAIC0x MzI0LDcgKzEzMjEsNyBAQCBleHBhbmRfdGFibGVfbmFtZV9wYXR0ZXJucyhBcmNoaXZlICpm b3V0LAogCQlQUWNsZWFyKEV4ZWN1dGVTcWxRdWVyeUZvclNpbmdsZVJvdyhmb3V0LAogCQkJ CQkJCQkJCQlBTFdBWVNfU0VDVVJFX1NFQVJDSF9QQVRIX1NRTCkpOwogCQlpZiAoc3RyaWN0 X25hbWVzICYmIFBRbnR1cGxlcyhyZXMpID09IDApCi0JCQlleGl0X2hvcnJpYmx5KE5VTEws ICJubyBtYXRjaGluZyB0YWJsZXMgd2VyZSBmb3VuZCBmb3IgcGF0dGVybiBcIiVzXCJcbiIs IGNlbGwtPnZhbCk7CisJCQlmYXRhbCgibm8gbWF0Y2hpbmcgdGFibGVzIHdlcmUgZm91bmQg Zm9yIHBhdHRlcm4gXCIlc1wiIiwgY2VsbC0+dmFsKTsKIAogCQlmb3IgKGkgPSAwOyBpIDwg UFFudHVwbGVzKHJlcyk7IGkrKykKIAkJewpAQCAtMTczOCw5ICsxNzM1LDggQEAgZHVtcFRh YmxlRGF0YV9jb3B5KEFyY2hpdmUgKmZvdXQsIHZvaWQgKmRjb250ZXh0KQogCWNoYXIJICAg KmNvcHlidWY7CiAJY29uc3QgY2hhciAqY29sdW1uX2xpc3Q7CiAKLQlpZiAoZ192ZXJib3Nl KQotCQl3cml0ZV9tc2coTlVMTCwgImR1bXBpbmcgY29udGVudHMgb2YgdGFibGUgXCIlcy4l c1wiXG4iLAotCQkJCSAgdGJpbmZvLT5kb2JqLm5hbWVzcGFjZS0+ZG9iai5uYW1lLCBjbGFz c25hbWUpOworCXBnX2xvZ19pbmZvKCJkdW1waW5nIGNvbnRlbnRzIG9mIHRhYmxlIFwiJXMu JXNcIiIsCisJCQkJdGJpbmZvLT5kb2JqLm5hbWVzcGFjZS0+ZG9iai5uYW1lLCBjbGFzc25h bWUpOwogCiAJLyoKIAkgKiBTcGVjaWZ5IHRoZSBjb2x1bW4gbGlzdCBleHBsaWNpdGx5IHNv IHRoYXQgd2UgaGF2ZSBubyBwb3NzaWJpbGl0eSBvZgpAQCAtMTg0MCw5ICsxODM2LDkgQEAg ZHVtcFRhYmxlRGF0YV9jb3B5KEFyY2hpdmUgKmZvdXQsIHZvaWQgKmRjb250ZXh0KQogCWlm IChyZXQgPT0gLTIpCiAJewogCQkvKiBjb3B5IGRhdGEgdHJhbnNmZXIgZmFpbGVkICovCi0J CXdyaXRlX21zZyhOVUxMLCAiRHVtcGluZyB0aGUgY29udGVudHMgb2YgdGFibGUgXCIlc1wi IGZhaWxlZDogUFFnZXRDb3B5RGF0YSgpIGZhaWxlZC5cbiIsIGNsYXNzbmFtZSk7Ci0JCXdy aXRlX21zZyhOVUxMLCAiRXJyb3IgbWVzc2FnZSBmcm9tIHNlcnZlcjogJXMiLCBQUWVycm9y TWVzc2FnZShjb25uKSk7Ci0JCXdyaXRlX21zZyhOVUxMLCAiVGhlIGNvbW1hbmQgd2FzOiAl c1xuIiwgcS0+ZGF0YSk7CisJCXBnX2xvZ19lcnJvcigiRHVtcGluZyB0aGUgY29udGVudHMg b2YgdGFibGUgXCIlc1wiIGZhaWxlZDogUFFnZXRDb3B5RGF0YSgpIGZhaWxlZC4iLCBjbGFz c25hbWUpOworCQlwZ19sb2dfZXJyb3IoIkVycm9yIG1lc3NhZ2UgZnJvbSBzZXJ2ZXI6ICVz IiwgUFFlcnJvck1lc3NhZ2UoY29ubikpOworCQlwZ19sb2dfZXJyb3IoIlRoZSBjb21tYW5k IHdhczogJXMiLCBxLT5kYXRhKTsKIAkJZXhpdF9uaWNlbHkoMSk7CiAJfQogCkBAIC0xODUw LDE2ICsxODQ2LDE2IEBAIGR1bXBUYWJsZURhdGFfY29weShBcmNoaXZlICpmb3V0LCB2b2lk ICpkY29udGV4dCkKIAlyZXMgPSBQUWdldFJlc3VsdChjb25uKTsKIAlpZiAoUFFyZXN1bHRT dGF0dXMocmVzKSAhPSBQR1JFU19DT01NQU5EX09LKQogCXsKLQkJd3JpdGVfbXNnKE5VTEws ICJEdW1waW5nIHRoZSBjb250ZW50cyBvZiB0YWJsZSBcIiVzXCIgZmFpbGVkOiBQUWdldFJl c3VsdCgpIGZhaWxlZC5cbiIsIGNsYXNzbmFtZSk7Ci0JCXdyaXRlX21zZyhOVUxMLCAiRXJy b3IgbWVzc2FnZSBmcm9tIHNlcnZlcjogJXMiLCBQUWVycm9yTWVzc2FnZShjb25uKSk7Ci0J CXdyaXRlX21zZyhOVUxMLCAiVGhlIGNvbW1hbmQgd2FzOiAlc1xuIiwgcS0+ZGF0YSk7CisJ CXBnX2xvZ19lcnJvcigiRHVtcGluZyB0aGUgY29udGVudHMgb2YgdGFibGUgXCIlc1wiIGZh aWxlZDogUFFnZXRSZXN1bHQoKSBmYWlsZWQuIiwgY2xhc3NuYW1lKTsKKwkJcGdfbG9nX2Vy cm9yKCJFcnJvciBtZXNzYWdlIGZyb20gc2VydmVyOiAlcyIsIFBRZXJyb3JNZXNzYWdlKGNv bm4pKTsKKwkJcGdfbG9nX2Vycm9yKCJUaGUgY29tbWFuZCB3YXM6ICVzIiwgcS0+ZGF0YSk7 CiAJCWV4aXRfbmljZWx5KDEpOwogCX0KIAlQUWNsZWFyKHJlcyk7CiAKIAkvKiBEbyB0aGlz IHRvIGVuc3VyZSB3ZSd2ZSBwdW1wZWQgbGlicHEgYmFjayB0byBpZGxlIHN0YXRlICovCiAJ aWYgKFBRZ2V0UmVzdWx0KGNvbm4pICE9IE5VTEwpCi0JCXdyaXRlX21zZyhOVUxMLCAiV0FS TklORzogdW5leHBlY3RlZCBleHRyYSByZXN1bHRzIGR1cmluZyBDT1BZIG9mIHRhYmxlIFwi JXNcIlxuIiwKKwkJcGdfbG9nX3dhcm5pbmcoInVuZXhwZWN0ZWQgZXh0cmEgcmVzdWx0cyBk dXJpbmcgQ09QWSBvZiB0YWJsZSBcIiVzXCIiLAogCQkJCSAgY2xhc3NuYW1lKTsKIAogCWRl c3Ryb3lQUUV4cEJ1ZmZlcihxKTsKQEAgLTI1NjAsOCArMjU1Niw3IEBAIGR1bXBEYXRhYmFz ZShBcmNoaXZlICpmb3V0KQogCQkJCW1pbm14aWQ7CiAJY2hhcgkgICAqcWRhdG5hbWU7CiAK LQlpZiAoZ192ZXJib3NlKQotCQl3cml0ZV9tc2coTlVMTCwgInNhdmluZyBkYXRhYmFzZSBk ZWZpbml0aW9uXG4iKTsKKwlwZ19sb2dfaW5mbygic2F2aW5nIGRhdGFiYXNlIGRlZmluaXRp b24iKTsKIAogCS8qIEZldGNoIHRoZSBkYXRhYmFzZS1sZXZlbCBwcm9wZXJ0aWVzIGZvciB0 aGlzIGRhdGFiYXNlICovCiAJaWYgKGZvdXQtPnJlbW90ZVZlcnNpb24gPj0gOTA2MDApCkBA IC0zMDA2LDggKzMwMDEsNyBAQCBkdW1wRW5jb2RpbmcoQXJjaGl2ZSAqQUgpCiAJY29uc3Qg Y2hhciAqZW5jbmFtZSA9IHBnX2VuY29kaW5nX3RvX2NoYXIoQUgtPmVuY29kaW5nKTsKIAlQ UUV4cEJ1ZmZlciBxcnkgPSBjcmVhdGVQUUV4cEJ1ZmZlcigpOwogCi0JaWYgKGdfdmVyYm9z ZSkKLQkJd3JpdGVfbXNnKE5VTEwsICJzYXZpbmcgZW5jb2RpbmcgPSAlc1xuIiwgZW5jbmFt ZSk7CisJcGdfbG9nX2luZm8oInNhdmluZyBlbmNvZGluZyA9ICVzIiwgZW5jbmFtZSk7CiAK IAlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxcnksICJTRVQgY2xpZW50X2VuY29kaW5nID0gIik7 CiAJYXBwZW5kU3RyaW5nTGl0ZXJhbEFIKHFyeSwgZW5jbmFtZSwgQUgpOwpAQCAtMzAzMyw5 ICszMDI3LDggQEAgZHVtcFN0ZFN0cmluZ3MoQXJjaGl2ZSAqQUgpCiAJY29uc3QgY2hhciAq c3Rkc3RyaW5ncyA9IEFILT5zdGRfc3RyaW5ncyA/ICJvbiIgOiAib2ZmIjsKIAlQUUV4cEJ1 ZmZlciBxcnkgPSBjcmVhdGVQUUV4cEJ1ZmZlcigpOwogCi0JaWYgKGdfdmVyYm9zZSkKLQkJ d3JpdGVfbXNnKE5VTEwsICJzYXZpbmcgc3RhbmRhcmRfY29uZm9ybWluZ19zdHJpbmdzID0g JXNcbiIsCi0JCQkJICBzdGRzdHJpbmdzKTsKKwlwZ19sb2dfaW5mbygic2F2aW5nIHN0YW5k YXJkX2NvbmZvcm1pbmdfc3RyaW5ncyA9ICVzIiwKKwkJCQlzdGRzdHJpbmdzKTsKIAogCWFw cGVuZFBRRXhwQnVmZmVyKHFyeSwgIlNFVCBzdGFuZGFyZF9jb25mb3JtaW5nX3N0cmluZ3Mg PSAnJXMnO1xuIiwKIAkJCQkJICBzdGRzdHJpbmdzKTsKQEAgLTMwNzQsNyArMzA2Nyw3IEBA IGR1bXBTZWFyY2hQYXRoKEFyY2hpdmUgKkFIKQogCQkJCQkJCQkJICAiU0VMRUNUIHBnX2Nh dGFsb2cuY3VycmVudF9zY2hlbWFzKGZhbHNlKSIpOwogCiAJaWYgKCFwYXJzZVBHQXJyYXko UFFnZXR2YWx1ZShyZXMsIDAsIDApLCAmc2NoZW1hbmFtZXMsICZuc2NoZW1hbmFtZXMpKQot CQlleGl0X2hvcnJpYmx5KE5VTEwsICJjb3VsZCBub3QgcGFyc2UgcmVzdWx0IG9mIGN1cnJl bnRfc2NoZW1hcygpXG4iKTsKKwkJZmF0YWwoImNvdWxkIG5vdCBwYXJzZSByZXN1bHQgb2Yg Y3VycmVudF9zY2hlbWFzKCkiKTsKIAogCS8qCiAJICogV2UgdXNlIHNldF9jb25maWcoKSwg bm90IGEgc2ltcGxlICJTRVQgc2VhcmNoX3BhdGgiIGNvbW1hbmQsIGJlY2F1c2UKQEAgLTMw OTMsOCArMzA4Niw3IEBAIGR1bXBTZWFyY2hQYXRoKEFyY2hpdmUgKkFIKQogCWFwcGVuZFN0 cmluZ0xpdGVyYWxBSChxcnksIHBhdGgtPmRhdGEsIEFIKTsKIAlhcHBlbmRQUUV4cEJ1ZmZl clN0cihxcnksICIsIGZhbHNlKTtcbiIpOwogCi0JaWYgKGdfdmVyYm9zZSkKLQkJd3JpdGVf bXNnKE5VTEwsICJzYXZpbmcgc2VhcmNoX3BhdGggPSAlc1xuIiwgcGF0aC0+ZGF0YSk7CisJ cGdfbG9nX2luZm8oInNhdmluZyBzZWFyY2hfcGF0aCA9ICVzIiwgcGF0aC0+ZGF0YSk7CiAK IAlBcmNoaXZlRW50cnkoQUgsIG5pbENhdGFsb2dJZCwgY3JlYXRlRHVtcElkKCksCiAJCQkJ ICJTRUFSQ0hQQVRIIiwgTlVMTCwgTlVMTCwgIiIsCkBAIC0zMTM1LDkgKzMxMjcsNyBAQCBn ZXRCbG9icyhBcmNoaXZlICpmb3V0KQogCWludAkJCWlfaW5pdGxvbWFjbDsKIAlpbnQJCQlp X2luaXRybG9tYWNsOwogCi0JLyogVmVyYm9zZSBtZXNzYWdlICovCi0JaWYgKGdfdmVyYm9z ZSkKLQkJd3JpdGVfbXNnKE5VTEwsICJyZWFkaW5nIGxhcmdlIG9iamVjdHNcbiIpOworCXBn X2xvZ19pbmZvKCJyZWFkaW5nIGxhcmdlIG9iamVjdHMiKTsKIAogCS8qIEZldGNoIEJMT0Ig T0lEcywgYW5kIG93bmVyL0FDTCBkYXRhIGlmID49IDkuMCAqLwogCWlmIChmb3V0LT5yZW1v dGVWZXJzaW9uID49IDkwNjAwKQpAQCAtMzMyMCw4ICszMzEwLDcgQEAgZHVtcEJsb2JzKEFy Y2hpdmUgKmZvdXQsIHZvaWQgKmFyZykKIAlpbnQJCQlpOwogCWludAkJCWNudDsKIAotCWlm IChnX3ZlcmJvc2UpCi0JCXdyaXRlX21zZyhOVUxMLCAic2F2aW5nIGxhcmdlIG9iamVjdHNc biIpOworCXBnX2xvZ19pbmZvKCJzYXZpbmcgbGFyZ2Ugb2JqZWN0cyIpOwogCiAJLyoKIAkg KiBDdXJyZW50bHksIHdlIHJlLWZldGNoIGFsbCBCTE9CIE9JRHMgdXNpbmcgYSBjdXJzb3Iu ICBDb25zaWRlciBzY2FubmluZwpAQCAtMzM1Nyw3ICszMzQ2LDcgQEAgZHVtcEJsb2JzKEFy Y2hpdmUgKmZvdXQsIHZvaWQgKmFyZykKIAkJCS8qIE9wZW4gdGhlIEJMT0IgKi8KIAkJCWxv RmQgPSBsb19vcGVuKGNvbm4sIGJsb2JPaWQsIElOVl9SRUFEKTsKIAkJCWlmIChsb0ZkID09 IC0xKQotCQkJCWV4aXRfaG9ycmlibHkoTlVMTCwgImNvdWxkIG5vdCBvcGVuIGxhcmdlIG9i amVjdCAldTogJXMiLAorCQkJCWZhdGFsKCJjb3VsZCBub3Qgb3BlbiBsYXJnZSBvYmplY3Qg JXU6ICVzIiwKIAkJCQkJCQkgIGJsb2JPaWQsIFBRZXJyb3JNZXNzYWdlKGNvbm4pKTsKIAog CQkJU3RhcnRCbG9iKGZvdXQsIGJsb2JPaWQpOwpAQCAtMzM2Nyw3ICszMzU2LDcgQEAgZHVt cEJsb2JzKEFyY2hpdmUgKmZvdXQsIHZvaWQgKmFyZykKIAkJCXsKIAkJCQljbnQgPSBsb19y ZWFkKGNvbm4sIGxvRmQsIGJ1ZiwgTE9CQlVGU0laRSk7CiAJCQkJaWYgKGNudCA8IDApCi0J CQkJCWV4aXRfaG9ycmlibHkoTlVMTCwgImVycm9yIHJlYWRpbmcgbGFyZ2Ugb2JqZWN0ICV1 OiAlcyIsCisJCQkJCWZhdGFsKCJlcnJvciByZWFkaW5nIGxhcmdlIG9iamVjdCAldTogJXMi LAogCQkJCQkJCQkgIGJsb2JPaWQsIFBRZXJyb3JNZXNzYWdlKGNvbm4pKTsKIAogCQkJCVdy aXRlRGF0YShmb3V0LCBidWYsIGNudCk7CkBAIC0zNDE5LDEwICszNDA4LDkgQEAgZ2V0UG9s aWNpZXMoQXJjaGl2ZSAqZm91dCwgVGFibGVJbmZvIHRibGluZm9bXSwgaW50IG51bVRhYmxl cykKIAkJaWYgKCEodGJpbmZvLT5kb2JqLmR1bXAgJiBEVU1QX0NPTVBPTkVOVF9QT0xJQ1kp KQogCQkJY29udGludWU7CiAKLQkJaWYgKGdfdmVyYm9zZSkKLQkJCXdyaXRlX21zZyhOVUxM LCAicmVhZGluZyByb3cgc2VjdXJpdHkgZW5hYmxlZCBmb3IgdGFibGUgXCIlcy4lc1wiXG4i LAotCQkJCQkgIHRiaW5mby0+ZG9iai5uYW1lc3BhY2UtPmRvYmoubmFtZSwKLQkJCQkJICB0 YmluZm8tPmRvYmoubmFtZSk7CisJCXBnX2xvZ19pbmZvKCJyZWFkaW5nIHJvdyBzZWN1cml0 eSBlbmFibGVkIGZvciB0YWJsZSBcIiVzLiVzXCIiLAorCQkJCQl0YmluZm8tPmRvYmoubmFt ZXNwYWNlLT5kb2JqLm5hbWUsCisJCQkJCXRiaW5mby0+ZG9iai5uYW1lKTsKIAogCQkvKgog CQkgKiBHZXQgcm93IHNlY3VyaXR5IGVuYWJsZWQgaW5mb3JtYXRpb24gZm9yIHRoZSB0YWJs ZS4gV2UgcmVwcmVzZW50CkBAIC0zNDUxLDEwICszNDM5LDkgQEAgZ2V0UG9saWNpZXMoQXJj aGl2ZSAqZm91dCwgVGFibGVJbmZvIHRibGluZm9bXSwgaW50IG51bVRhYmxlcykKIAkJCXBv bGluZm8tPnBvbHdpdGhjaGVjayA9IE5VTEw7CiAJCX0KIAotCQlpZiAoZ192ZXJib3NlKQot CQkJd3JpdGVfbXNnKE5VTEwsICJyZWFkaW5nIHBvbGljaWVzIGZvciB0YWJsZSBcIiVzLiVz XCJcbiIsCi0JCQkJCSAgdGJpbmZvLT5kb2JqLm5hbWVzcGFjZS0+ZG9iai5uYW1lLAotCQkJ CQkgIHRiaW5mby0+ZG9iai5uYW1lKTsKKwkJcGdfbG9nX2luZm8oInJlYWRpbmcgcG9saWNp ZXMgZm9yIHRhYmxlIFwiJXMuJXNcIiIsCisJCQkJCXRiaW5mby0+ZG9iai5uYW1lc3BhY2Ut PmRvYmoubmFtZSwKKwkJCQkJdGJpbmZvLT5kb2JqLm5hbWUpOwogCiAJCXJlc2V0UFFFeHBC dWZmZXIocXVlcnkpOwogCkBAIC0zNjAyLDcgKzM1ODksNyBAQCBkdW1wUG9saWN5KEFyY2hp dmUgKmZvdXQsIFBvbGljeUluZm8gKnBvbGluZm8pCiAJCWNtZCA9ICIgRk9SIERFTEVURSI7 CiAJZWxzZQogCXsKLQkJd3JpdGVfbXNnKE5VTEwsICJ1bmV4cGVjdGVkIHBvbGljeSBjb21t YW5kIHR5cGU6ICVjXG4iLAorCQlwZ19sb2dfZXJyb3IoInVuZXhwZWN0ZWQgcG9saWN5IGNv bW1hbmQgdHlwZTogJWMiLAogCQkJCSAgcG9saW5mby0+cG9sY21kKTsKIAkJZXhpdF9uaWNl bHkoMSk7CiAJfQpAQCAtMzczMCw3ICszNzE3LDcgQEAgZ2V0UHVibGljYXRpb25zKEFyY2hp dmUgKmZvdXQpCiAJCQkoc3RyY21wKFBRZ2V0dmFsdWUocmVzLCBpLCBpX3B1YnRydW5jYXRl KSwgInQiKSA9PSAwKTsKIAogCQlpZiAoc3RybGVuKHB1YmluZm9baV0ucm9sbmFtZSkgPT0g MCkKLQkJCXdyaXRlX21zZyhOVUxMLCAiV0FSTklORzogb3duZXIgb2YgcHVibGljYXRpb24g XCIlc1wiIGFwcGVhcnMgdG8gYmUgaW52YWxpZFxuIiwKKwkJCXBnX2xvZ193YXJuaW5nKCJv d25lciBvZiBwdWJsaWNhdGlvbiBcIiVzXCIgYXBwZWFycyB0byBiZSBpbnZhbGlkIiwKIAkJ CQkJICBwdWJpbmZvW2ldLmRvYmoubmFtZSk7CiAKIAkJLyogRGVjaWRlIHdoZXRoZXIgd2Ug d2FudCB0byBkdW1wIGl0ICovCkBAIC0zODY5LDEwICszODU2LDkgQEAgZ2V0UHVibGljYXRp b25UYWJsZXMoQXJjaGl2ZSAqZm91dCwgVGFibGVJbmZvIHRibGluZm9bXSwgaW50IG51bVRh YmxlcykKIAkJaWYgKCEodGJpbmZvLT5kb2JqLmR1bXAgJiBEVU1QX0NPTVBPTkVOVF9ERUZJ TklUSU9OKSkKIAkJCWNvbnRpbnVlOwogCi0JCWlmIChnX3ZlcmJvc2UpCi0JCQl3cml0ZV9t c2coTlVMTCwgInJlYWRpbmcgcHVibGljYXRpb24gbWVtYmVyc2hpcCBmb3IgdGFibGUgXCIl cy4lc1wiXG4iLAotCQkJCQkgIHRiaW5mby0+ZG9iai5uYW1lc3BhY2UtPmRvYmoubmFtZSwK LQkJCQkJICB0YmluZm8tPmRvYmoubmFtZSk7CisJCXBnX2xvZ19pbmZvKCJyZWFkaW5nIHB1 YmxpY2F0aW9uIG1lbWJlcnNoaXAgZm9yIHRhYmxlIFwiJXMuJXNcIiIsCisJCQkJCXRiaW5m by0+ZG9iai5uYW1lc3BhY2UtPmRvYmoubmFtZSwKKwkJCQkJdGJpbmZvLT5kb2JqLm5hbWUp OwogCiAJCXJlc2V0UFFFeHBCdWZmZXIocXVlcnkpOwogCkBAIC00MDE2LDcgKzQwMDIsNyBA QCBnZXRTdWJzY3JpcHRpb25zKEFyY2hpdmUgKmZvdXQpCiAJCQkJCQkJICBQR1JFU19UVVBM RVNfT0spOwogCQluID0gYXRvaShQUWdldHZhbHVlKHJlcywgMCwgMCkpOwogCQlpZiAobiA+ IDApCi0JCQl3cml0ZV9tc2coTlVMTCwgIldBUk5JTkc6IHN1YnNjcmlwdGlvbnMgbm90IGR1 bXBlZCBiZWNhdXNlIGN1cnJlbnQgdXNlciBpcyBub3QgYSBzdXBlcnVzZXJcbiIpOworCQkJ cGdfbG9nX3dhcm5pbmcoInN1YnNjcmlwdGlvbnMgbm90IGR1bXBlZCBiZWNhdXNlIGN1cnJl bnQgdXNlciBpcyBub3QgYSBzdXBlcnVzZXIiKTsKIAkJUFFjbGVhcihyZXMpOwogCQlyZXR1 cm47CiAJfQpAQCAtNDA3MCw3ICs0MDU2LDcgQEAgZ2V0U3Vic2NyaXB0aW9ucyhBcmNoaXZl ICpmb3V0KQogCQkJcGdfc3RyZHVwKFBRZ2V0dmFsdWUocmVzLCBpLCBpX3N1YnB1YmxpY2F0 aW9ucykpOwogCiAJCWlmIChzdHJsZW4oc3ViaW5mb1tpXS5yb2xuYW1lKSA9PSAwKQotCQkJ d3JpdGVfbXNnKE5VTEwsICJXQVJOSU5HOiBvd25lciBvZiBzdWJzY3JpcHRpb24gXCIlc1wi IGFwcGVhcnMgdG8gYmUgaW52YWxpZFxuIiwKKwkJCXBnX2xvZ193YXJuaW5nKCJvd25lciBv ZiBzdWJzY3JpcHRpb24gXCIlc1wiIGFwcGVhcnMgdG8gYmUgaW52YWxpZCIsCiAJCQkJCSAg c3ViaW5mb1tpXS5kb2JqLm5hbWUpOwogCiAJCS8qIERlY2lkZSB3aGV0aGVyIHdlIHdhbnQg dG8gZHVtcCBpdCAqLwpAQCAtNDExNCw4ICs0MTAwLDcgQEAgZHVtcFN1YnNjcmlwdGlvbihB cmNoaXZlICpmb3V0LCBTdWJzY3JpcHRpb25JbmZvICpzdWJpbmZvKQogCS8qIEJ1aWxkIGxp c3Qgb2YgcXVvdGVkIHB1YmxpY2F0aW9ucyBhbmQgYXBwZW5kIHRoZW0gdG8gcXVlcnkuICov CiAJaWYgKCFwYXJzZVBHQXJyYXkoc3ViaW5mby0+c3VicHVibGljYXRpb25zLCAmcHVibmFt ZXMsICZucHVibmFtZXMpKQogCXsKLQkJd3JpdGVfbXNnKE5VTEwsCi0JCQkJICAiV0FSTklO RzogY291bGQgbm90IHBhcnNlIHN1YnB1YmxpY2F0aW9ucyBhcnJheVxuIik7CisJCXBnX2xv Z193YXJuaW5nKCJjb3VsZCBub3QgcGFyc2Ugc3VicHVibGljYXRpb25zIGFycmF5Iik7CiAJ CWlmIChwdWJuYW1lcykKIAkJCWZyZWUocHVibmFtZXMpOwogCQlwdWJuYW1lcyA9IE5VTEw7 CkBAIC00MzgzLDcgKzQzNjgsNyBAQCBiaW5hcnlfdXBncmFkZV9leHRlbnNpb25fbWVtYmVy KFBRRXhwQnVmZmVyIHVwZ3JhZGVfYnVmZmVyLAogCQlleHRvYmogPSBOVUxMOwogCX0KIAlp ZiAoZXh0b2JqID09IE5VTEwpCi0JCWV4aXRfaG9ycmlibHkoTlVMTCwgImNvdWxkIG5vdCBm aW5kIHBhcmVudCBleHRlbnNpb24gZm9yICVzICVzXG4iLAorCQlmYXRhbCgiY291bGQgbm90 IGZpbmQgcGFyZW50IGV4dGVuc2lvbiBmb3IgJXMgJXMiLAogCQkJCQkgIG9ianR5cGUsIG9i am5hbWUpOwogCiAJYXBwZW5kUFFFeHBCdWZmZXJTdHIodXBncmFkZV9idWZmZXIsCkBAIC00 NTE1LDcgKzQ1MDAsNyBAQCBnZXROYW1lc3BhY2VzKEFyY2hpdmUgKmZvdXQsIGludCAqbnVt TmFtZXNwYWNlcykKIAkJCW5zaW5mb1tpXS5kb2JqLmR1bXAgJj0gfkRVTVBfQ09NUE9ORU5U X0FDTDsKIAogCQlpZiAoc3RybGVuKG5zaW5mb1tpXS5yb2xuYW1lKSA9PSAwKQotCQkJd3Jp dGVfbXNnKE5VTEwsICJXQVJOSU5HOiBvd25lciBvZiBzY2hlbWEgXCIlc1wiIGFwcGVhcnMg dG8gYmUgaW52YWxpZFxuIiwKKwkJCXBnX2xvZ193YXJuaW5nKCJvd25lciBvZiBzY2hlbWEg XCIlc1wiIGFwcGVhcnMgdG8gYmUgaW52YWxpZCIsCiAJCQkJCSAgbnNpbmZvW2ldLmRvYmou bmFtZSk7CiAJfQogCkBAIC00NTM4LDcgKzQ1MjMsNyBAQCBmaW5kTmFtZXNwYWNlKEFyY2hp dmUgKmZvdXQsIE9pZCBuc29pZCkKIAogCW5zaW5mbyA9IGZpbmROYW1lc3BhY2VCeU9pZChu c29pZCk7CiAJaWYgKG5zaW5mbyA9PSBOVUxMKQotCQlleGl0X2hvcnJpYmx5KE5VTEwsICJz Y2hlbWEgd2l0aCBPSUQgJXUgZG9lcyBub3QgZXhpc3RcbiIsIG5zb2lkKTsKKwkJZmF0YWwo InNjaGVtYSB3aXRoIE9JRCAldSBkb2VzIG5vdCBleGlzdCIsIG5zb2lkKTsKIAlyZXR1cm4g bnNpbmZvOwogfQogCkBAIC00ODYzLDcgKzQ4NDgsNyBAQCBnZXRUeXBlcyhBcmNoaXZlICpm b3V0LCBpbnQgKm51bVR5cGVzKQogCQl9CiAKIAkJaWYgKHN0cmxlbih0eWluZm9baV0ucm9s bmFtZSkgPT0gMCkKLQkJCXdyaXRlX21zZyhOVUxMLCAiV0FSTklORzogb3duZXIgb2YgZGF0 YSB0eXBlIFwiJXNcIiBhcHBlYXJzIHRvIGJlIGludmFsaWRcbiIsCisJCQlwZ19sb2dfd2Fy bmluZygib3duZXIgb2YgZGF0YSB0eXBlIFwiJXNcIiBhcHBlYXJzIHRvIGJlIGludmFsaWQi LAogCQkJCQkgIHR5aW5mb1tpXS5kb2JqLm5hbWUpOwogCX0KIApAQCAtNDk0OCw3ICs0OTMz LDcgQEAgZ2V0T3BlcmF0b3JzKEFyY2hpdmUgKmZvdXQsIGludCAqbnVtT3BycykKIAkJb3By aW5mb1tpXS5kb2JqLmR1bXAgJj0gfkRVTVBfQ09NUE9ORU5UX0FDTDsKIAogCQlpZiAoc3Ry bGVuKG9wcmluZm9baV0ucm9sbmFtZSkgPT0gMCkKLQkJCXdyaXRlX21zZyhOVUxMLCAiV0FS TklORzogb3duZXIgb2Ygb3BlcmF0b3IgXCIlc1wiIGFwcGVhcnMgdG8gYmUgaW52YWxpZFxu IiwKKwkJCXBnX2xvZ193YXJuaW5nKCJvd25lciBvZiBvcGVyYXRvciBcIiVzXCIgYXBwZWFy cyB0byBiZSBpbnZhbGlkIiwKIAkJCQkJICBvcHJpbmZvW2ldLmRvYmoubmFtZSk7CiAJfQog CkBAIC01MjUwLDcgKzUyMzUsNyBAQCBnZXRPcGNsYXNzZXMoQXJjaGl2ZSAqZm91dCwgaW50 ICpudW1PcGNsYXNzZXMpCiAJCW9wY2luZm9baV0uZG9iai5kdW1wICY9IH5EVU1QX0NPTVBP TkVOVF9BQ0w7CiAKIAkJaWYgKHN0cmxlbihvcGNpbmZvW2ldLnJvbG5hbWUpID09IDApCi0J CQl3cml0ZV9tc2coTlVMTCwgIldBUk5JTkc6IG93bmVyIG9mIG9wZXJhdG9yIGNsYXNzIFwi JXNcIiBhcHBlYXJzIHRvIGJlIGludmFsaWRcbiIsCisJCQlwZ19sb2dfd2FybmluZygib3du ZXIgb2Ygb3BlcmF0b3IgY2xhc3MgXCIlc1wiIGFwcGVhcnMgdG8gYmUgaW52YWxpZCIsCiAJ CQkJCSAgb3BjaW5mb1tpXS5kb2JqLm5hbWUpOwogCX0KIApAQCAtNTMzNCw3ICs1MzE5LDcg QEAgZ2V0T3BmYW1pbGllcyhBcmNoaXZlICpmb3V0LCBpbnQgKm51bU9wZmFtaWxpZXMpCiAJ CW9wZmluZm9baV0uZG9iai5kdW1wICY9IH5EVU1QX0NPTVBPTkVOVF9BQ0w7CiAKIAkJaWYg KHN0cmxlbihvcGZpbmZvW2ldLnJvbG5hbWUpID09IDApCi0JCQl3cml0ZV9tc2coTlVMTCwg IldBUk5JTkc6IG93bmVyIG9mIG9wZXJhdG9yIGZhbWlseSBcIiVzXCIgYXBwZWFycyB0byBi ZSBpbnZhbGlkXG4iLAorCQkJcGdfbG9nX3dhcm5pbmcoIm93bmVyIG9mIG9wZXJhdG9yIGZh bWlseSBcIiVzXCIgYXBwZWFycyB0byBiZSBpbnZhbGlkIiwKIAkJCQkJICBvcGZpbmZvW2ld LmRvYmoubmFtZSk7CiAJfQogCkBAIC01NTAzLDcgKzU0ODgsNyBAQCBnZXRBZ2dyZWdhdGVz KEFyY2hpdmUgKmZvdXQsIGludCAqbnVtQWdncykKIAkJCQkJCSAgYXRvb2lkKFBRZ2V0dmFs dWUocmVzLCBpLCBpX2FnZ25hbWVzcGFjZSkpKTsKIAkJYWdnaW5mb1tpXS5hZ2dmbi5yb2xu YW1lID0gcGdfc3RyZHVwKFBRZ2V0dmFsdWUocmVzLCBpLCBpX3JvbG5hbWUpKTsKIAkJaWYg KHN0cmxlbihhZ2dpbmZvW2ldLmFnZ2ZuLnJvbG5hbWUpID09IDApCi0JCQl3cml0ZV9tc2co TlVMTCwgIldBUk5JTkc6IG93bmVyIG9mIGFnZ3JlZ2F0ZSBmdW5jdGlvbiBcIiVzXCIgYXBw ZWFycyB0byBiZSBpbnZhbGlkXG4iLAorCQkJcGdfbG9nX3dhcm5pbmcoIm93bmVyIG9mIGFn Z3JlZ2F0ZSBmdW5jdGlvbiBcIiVzXCIgYXBwZWFycyB0byBiZSBpbnZhbGlkIiwKIAkJCQkJ ICBhZ2dpbmZvW2ldLmFnZ2ZuLmRvYmoubmFtZSk7CiAJCWFnZ2luZm9baV0uYWdnZm4ubGFu ZyA9IEludmFsaWRPaWQ7IC8qIG5vdCBjdXJyZW50bHkgaW50ZXJlc3RpbmcgKi8KIAkJYWdn aW5mb1tpXS5hZ2dmbi5wcm9yZXR0eXBlID0gSW52YWxpZE9pZDsJLyogbm90IHNhdmVkICov CkBAIC01NzYzLDggKzU3NDgsNyBAQCBnZXRGdW5jcyhBcmNoaXZlICpmb3V0LCBpbnQgKm51 bUZ1bmNzKQogCQkJZmluZm9baV0uZG9iai5kdW1wICY9IH5EVU1QX0NPTVBPTkVOVF9BQ0w7 CiAKIAkJaWYgKHN0cmxlbihmaW5mb1tpXS5yb2xuYW1lKSA9PSAwKQotCQkJd3JpdGVfbXNn KE5VTEwsCi0JCQkJCSAgIldBUk5JTkc6IG93bmVyIG9mIGZ1bmN0aW9uIFwiJXNcIiBhcHBl YXJzIHRvIGJlIGludmFsaWRcbiIsCisJCQlwZ19sb2dfd2FybmluZygib3duZXIgb2YgZnVu Y3Rpb24gXCIlc1wiIGFwcGVhcnMgdG8gYmUgaW52YWxpZCIsCiAJCQkJCSAgZmluZm9baV0u ZG9iai5uYW1lKTsKIAl9CiAKQEAgLTY1NDgsNyArNjUzMiw3IEBAIGdldFRhYmxlcyhBcmNo aXZlICpmb3V0LCBpbnQgKm51bVRhYmxlcykKIAogCQkvKiBFbWl0IG5vdGljZSBpZiBqb2lu IGZvciBvd25lciBmYWlsZWQgKi8KIAkJaWYgKHN0cmxlbih0YmxpbmZvW2ldLnJvbG5hbWUp ID09IDApCi0JCQl3cml0ZV9tc2coTlVMTCwgIldBUk5JTkc6IG93bmVyIG9mIHRhYmxlIFwi JXNcIiBhcHBlYXJzIHRvIGJlIGludmFsaWRcbiIsCisJCQlwZ19sb2dfd2FybmluZygib3du ZXIgb2YgdGFibGUgXCIlc1wiIGFwcGVhcnMgdG8gYmUgaW52YWxpZCIsCiAJCQkJCSAgdGJs aW5mb1tpXS5kb2JqLm5hbWUpOwogCX0KIApAQCAtNjU5MCw3ICs2NTc0LDcgQEAgZ2V0T3du ZWRTZXFzKEFyY2hpdmUgKmZvdXQsIFRhYmxlSW5mbyB0YmxpbmZvW10sIGludCBudW1UYWJs ZXMpCiAKIAkJb3duaW5nX3RhYiA9IGZpbmRUYWJsZUJ5T2lkKHNlcWluZm8tPm93bmluZ190 YWIpOwogCQlpZiAob3duaW5nX3RhYiA9PSBOVUxMKQotCQkJZXhpdF9ob3JyaWJseShOVUxM LCAiZmFpbGVkIHNhbml0eSBjaGVjaywgcGFyZW50IHRhYmxlIHdpdGggT0lEICV1IG9mIHNl cXVlbmNlIHdpdGggT0lEICV1IG5vdCBmb3VuZFxuIiwKKwkJCWZhdGFsKCJmYWlsZWQgc2Fu aXR5IGNoZWNrLCBwYXJlbnQgdGFibGUgd2l0aCBPSUQgJXUgb2Ygc2VxdWVuY2Ugd2l0aCBP SUQgJXUgbm90IGZvdW5kIiwKIAkJCQkJCSAgc2VxaW5mby0+b3duaW5nX3RhYiwgc2VxaW5m by0+ZG9iai5jYXRJZC5vaWQpOwogCiAJCS8qCkBAIC02NzM0LDEwICs2NzE4LDkgQEAgZ2V0 SW5kZXhlcyhBcmNoaXZlICpmb3V0LCBUYWJsZUluZm8gdGJsaW5mb1tdLCBpbnQgbnVtVGFi bGVzKQogCQkJIXRiaW5mby0+aW50ZXJlc3RpbmcpCiAJCQljb250aW51ZTsKIAotCQlpZiAo Z192ZXJib3NlKQotCQkJd3JpdGVfbXNnKE5VTEwsICJyZWFkaW5nIGluZGV4ZXMgZm9yIHRh YmxlIFwiJXMuJXNcIlxuIiwKLQkJCQkJICB0YmluZm8tPmRvYmoubmFtZXNwYWNlLT5kb2Jq Lm5hbWUsCi0JCQkJCSAgdGJpbmZvLT5kb2JqLm5hbWUpOworCQlwZ19sb2dfaW5mbygicmVh ZGluZyBpbmRleGVzIGZvciB0YWJsZSBcIiVzLiVzXCIiLAorCQkJCQl0YmluZm8tPmRvYmou bmFtZXNwYWNlLT5kb2JqLm5hbWUsCisJCQkJCXRiaW5mby0+ZG9iai5uYW1lKTsKIAogCQkv KgogCQkgKiBUaGUgcG9pbnQgb2YgdGhlIG1lc3N5LWxvb2tpbmcgb3V0ZXIgam9pbiBpcyB0 byBmaW5kIGEgY29uc3RyYWludApAQCAtNzEzNiwxMCArNzExOSw5IEBAIGdldENvbnN0cmFp bnRzKEFyY2hpdmUgKmZvdXQsIFRhYmxlSW5mbyB0YmxpbmZvW10sIGludCBudW1UYWJsZXMp CiAJCQkhKHRiaW5mby0+ZG9iai5kdW1wICYgRFVNUF9DT01QT05FTlRfREVGSU5JVElPTikp CiAJCQljb250aW51ZTsKIAotCQlpZiAoZ192ZXJib3NlKQotCQkJd3JpdGVfbXNnKE5VTEws ICJyZWFkaW5nIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnRzIGZvciB0YWJsZSBcIiVzLiVzXCJc biIsCi0JCQkJCSAgdGJpbmZvLT5kb2JqLm5hbWVzcGFjZS0+ZG9iai5uYW1lLAotCQkJCQkg IHRiaW5mby0+ZG9iai5uYW1lKTsKKwkJcGdfbG9nX2luZm8oInJlYWRpbmcgZm9yZWlnbiBr ZXkgY29uc3RyYWludHMgZm9yIHRhYmxlIFwiJXMuJXNcIiIsCisJCQkJCXRiaW5mby0+ZG9i ai5uYW1lc3BhY2UtPmRvYmoubmFtZSwKKwkJCQkJdGJpbmZvLT5kb2JqLm5hbWUpOwogCiAJ CXJlc2V0UFFFeHBCdWZmZXIocXVlcnkpOwogCQlpZiAoZm91dC0+cmVtb3RlVmVyc2lvbiA+ PSAxMTAwMDApCkBAIC03MzU2LDcgKzczMzgsNyBAQCBnZXRSdWxlcyhBcmNoaXZlICpmb3V0 LCBpbnQgKm51bVJ1bGVzKQogCQlydWxldGFibGVvaWQgPSBhdG9vaWQoUFFnZXR2YWx1ZShy ZXMsIGksIGlfcnVsZXRhYmxlKSk7CiAJCXJ1bGVpbmZvW2ldLnJ1bGV0YWJsZSA9IGZpbmRU YWJsZUJ5T2lkKHJ1bGV0YWJsZW9pZCk7CiAJCWlmIChydWxlaW5mb1tpXS5ydWxldGFibGUg PT0gTlVMTCkKLQkJCWV4aXRfaG9ycmlibHkoTlVMTCwgImZhaWxlZCBzYW5pdHkgY2hlY2ss IHBhcmVudCB0YWJsZSB3aXRoIE9JRCAldSBvZiBwZ19yZXdyaXRlIGVudHJ5IHdpdGggT0lE ICV1IG5vdCBmb3VuZFxuIiwKKwkJCWZhdGFsKCJmYWlsZWQgc2FuaXR5IGNoZWNrLCBwYXJl bnQgdGFibGUgd2l0aCBPSUQgJXUgb2YgcGdfcmV3cml0ZSBlbnRyeSB3aXRoIE9JRCAldSBu b3QgZm91bmQiLAogCQkJCQkJICBydWxldGFibGVvaWQsIHJ1bGVpbmZvW2ldLmRvYmouY2F0 SWQub2lkKTsKIAkJcnVsZWluZm9baV0uZG9iai5uYW1lc3BhY2UgPSBydWxlaW5mb1tpXS5y dWxldGFibGUtPmRvYmoubmFtZXNwYWNlOwogCQlydWxlaW5mb1tpXS5kb2JqLmR1bXAgPSBy dWxlaW5mb1tpXS5ydWxldGFibGUtPmRvYmouZHVtcDsKQEAgLTc0MzksMTAgKzc0MjEsOSBA QCBnZXRUcmlnZ2VycyhBcmNoaXZlICpmb3V0LCBUYWJsZUluZm8gdGJsaW5mb1tdLCBpbnQg bnVtVGFibGVzKQogCQkJISh0YmluZm8tPmRvYmouZHVtcCAmIERVTVBfQ09NUE9ORU5UX0RF RklOSVRJT04pKQogCQkJY29udGludWU7CiAKLQkJaWYgKGdfdmVyYm9zZSkKLQkJCXdyaXRl X21zZyhOVUxMLCAicmVhZGluZyB0cmlnZ2VycyBmb3IgdGFibGUgXCIlcy4lc1wiXG4iLAot CQkJCQkgIHRiaW5mby0+ZG9iai5uYW1lc3BhY2UtPmRvYmoubmFtZSwKLQkJCQkJICB0Ymlu Zm8tPmRvYmoubmFtZSk7CisJCXBnX2xvZ19pbmZvKCJyZWFkaW5nIHRyaWdnZXJzIGZvciB0 YWJsZSBcIiVzLiVzXCIiLAorCQkJCQl0YmluZm8tPmRvYmoubmFtZXNwYWNlLT5kb2JqLm5h bWUsCisJCQkJCXRiaW5mby0+ZG9iai5uYW1lKTsKIAogCQlyZXNldFBRRXhwQnVmZmVyKHF1 ZXJ5KTsKIAkJaWYgKGZvdXQtPnJlbW90ZVZlcnNpb24gPj0gOTAwMDApCkBAIC03NTczLDcg Kzc1NTQsNyBAQCBnZXRUcmlnZ2VycyhBcmNoaXZlICpmb3V0LCBUYWJsZUluZm8gdGJsaW5m b1tdLCBpbnQgbnVtVGFibGVzKQogCQkJCQlpZiAoT2lkSXNWYWxpZCh0Z2luZm9bal0udGdj b25zdHJyZWxpZCkpCiAJCQkJCXsKIAkJCQkJCWlmIChQUWdldGlzbnVsbChyZXMsIGosIGlf dGdjb25zdHJyZWxuYW1lKSkKLQkJCQkJCQlleGl0X2hvcnJpYmx5KE5VTEwsICJxdWVyeSBw cm9kdWNlZCBudWxsIHJlZmVyZW5jZWQgdGFibGUgbmFtZSBmb3IgZm9yZWlnbiBrZXkgdHJp Z2dlciBcIiVzXCIgb24gdGFibGUgXCIlc1wiIChPSUQgb2YgdGFibGU6ICV1KVxuIiwKKwkJ CQkJCQlmYXRhbCgicXVlcnkgcHJvZHVjZWQgbnVsbCByZWZlcmVuY2VkIHRhYmxlIG5hbWUg Zm9yIGZvcmVpZ24ga2V5IHRyaWdnZXIgXCIlc1wiIG9uIHRhYmxlIFwiJXNcIiAoT0lEIG9m IHRhYmxlOiAldSkiLAogCQkJCQkJCQkJCSAgdGdpbmZvW2pdLmRvYmoubmFtZSwKIAkJCQkJ CQkJCQkgIHRiaW5mby0+ZG9iai5uYW1lLAogCQkJCQkJCQkJCSAgdGdpbmZvW2pdLnRnY29u c3RycmVsaWQpOwpAQCAtODEyNywxMCArODEwOCw5IEBAIGdldFRhYmxlQXR0cnMoQXJjaGl2 ZSAqZm91dCwgVGFibGVJbmZvICp0YmxpbmZvLCBpbnQgbnVtVGFibGVzKQogCQkgKiB3ZSBt dXN0IHJlYWQgdGhlIGF0dHJpYnV0ZSBuYW1lcyBpbiBhdHRyaWJ1dGUgbnVtYmVyIG9yZGVy ISBiZWNhdXNlCiAJCSAqIHdlIHdpbGwgdXNlIHRoZSBhdHRudW0gdG8gaW5kZXggaW50byB0 aGUgYXR0bmFtZXMgYXJyYXkgbGF0ZXIuCiAJCSAqLwotCQlpZiAoZ192ZXJib3NlKQotCQkJ d3JpdGVfbXNnKE5VTEwsICJmaW5kaW5nIHRoZSBjb2x1bW5zIGFuZCB0eXBlcyBvZiB0YWJs ZSBcIiVzLiVzXCJcbiIsCi0JCQkJCSAgdGJpbmZvLT5kb2JqLm5hbWVzcGFjZS0+ZG9iai5u YW1lLAotCQkJCQkgIHRiaW5mby0+ZG9iai5uYW1lKTsKKwkJcGdfbG9nX2luZm8oImZpbmRp bmcgdGhlIGNvbHVtbnMgYW5kIHR5cGVzIG9mIHRhYmxlIFwiJXMuJXNcIiIsCisJCQkJCXRi aW5mby0+ZG9iai5uYW1lc3BhY2UtPmRvYmoubmFtZSwKKwkJCQkJdGJpbmZvLT5kb2JqLm5h bWUpOwogCiAJCXJlc2V0UFFFeHBCdWZmZXIocSk7CiAKQEAgLTgyNTUsOCArODIzNSw3IEBA IGdldFRhYmxlQXR0cnMoQXJjaGl2ZSAqZm91dCwgVGFibGVJbmZvICp0YmxpbmZvLCBpbnQg bnVtVGFibGVzKQogCQlmb3IgKGogPSAwOyBqIDwgbnR1cHM7IGorKykKIAkJewogCQkJaWYg KGogKyAxICE9IGF0b2koUFFnZXR2YWx1ZShyZXMsIGosIGlfYXR0bnVtKSkpCi0JCQkJZXhp dF9ob3JyaWJseShOVUxMLAotCQkJCQkJCSAgImludmFsaWQgY29sdW1uIG51bWJlcmluZyBp biB0YWJsZSBcIiVzXCJcbiIsCisJCQkJZmF0YWwoImludmFsaWQgY29sdW1uIG51bWJlcmlu ZyBpbiB0YWJsZSBcIiVzXCIiLAogCQkJCQkJCSAgdGJpbmZvLT5kb2JqLm5hbWUpOwogCQkJ dGJpbmZvLT5hdHRuYW1lc1tqXSA9IHBnX3N0cmR1cChQUWdldHZhbHVlKHJlcywgaiwgaV9h dHRuYW1lKSk7CiAJCQl0YmluZm8tPmF0dHR5cG5hbWVzW2pdID0gcGdfc3RyZHVwKFBRZ2V0 dmFsdWUocmVzLCBqLCBpX2F0dHR5cG5hbWUpKTsKQEAgLTgyOTIsMTAgKzgyNzEsOSBAQCBn ZXRUYWJsZUF0dHJzKEFyY2hpdmUgKmZvdXQsIFRhYmxlSW5mbyAqdGJsaW5mbywgaW50IG51 bVRhYmxlcykKIAkJCUF0dHJEZWZJbmZvICphdHRyZGVmczsKIAkJCWludAkJCW51bURlZmF1 bHRzOwogCi0JCQlpZiAoZ192ZXJib3NlKQotCQkJCXdyaXRlX21zZyhOVUxMLCAiZmluZGlu ZyBkZWZhdWx0IGV4cHJlc3Npb25zIG9mIHRhYmxlIFwiJXMuJXNcIlxuIiwKLQkJCQkJCSAg dGJpbmZvLT5kb2JqLm5hbWVzcGFjZS0+ZG9iai5uYW1lLAotCQkJCQkJICB0YmluZm8tPmRv YmoubmFtZSk7CisJCQlwZ19sb2dfaW5mbygiZmluZGluZyBkZWZhdWx0IGV4cHJlc3Npb25z IG9mIHRhYmxlIFwiJXMuJXNcIiIsCisJCQkJCQl0YmluZm8tPmRvYmoubmFtZXNwYWNlLT5k b2JqLm5hbWUsCisJCQkJCQl0YmluZm8tPmRvYmoubmFtZSk7CiAKIAkJCXByaW50ZlBRRXhw QnVmZmVyKHEsICJTRUxFQ1QgdGFibGVvaWQsIG9pZCwgYWRudW0sICIKIAkJCQkJCQkgICJw Z19jYXRhbG9nLnBnX2dldF9leHByKGFkYmluLCBhZHJlbGlkKSBBUyBhZHNyYyAiCkBAIC04 MzE1LDggKzgyOTMsNyBAQCBnZXRUYWJsZUF0dHJzKEFyY2hpdmUgKmZvdXQsIFRhYmxlSW5m byAqdGJsaW5mbywgaW50IG51bVRhYmxlcykKIAkJCQlhZG51bSA9IGF0b2koUFFnZXR2YWx1 ZShyZXMsIGosIDIpKTsKIAogCQkJCWlmIChhZG51bSA8PSAwIHx8IGFkbnVtID4gbnR1cHMp Ci0JCQkJCWV4aXRfaG9ycmlibHkoTlVMTCwKLQkJCQkJCQkJICAiaW52YWxpZCBhZG51bSB2 YWx1ZSAlZCBmb3IgdGFibGUgXCIlc1wiXG4iLAorCQkJCQlmYXRhbCgiaW52YWxpZCBhZG51 bSB2YWx1ZSAlZCBmb3IgdGFibGUgXCIlc1wiIiwKIAkJCQkJCQkJICBhZG51bSwgdGJpbmZv LT5kb2JqLm5hbWUpOwogCiAJCQkJLyoKQEAgLTgzODEsMTAgKzgzNTgsOSBAQCBnZXRUYWJs ZUF0dHJzKEFyY2hpdmUgKmZvdXQsIFRhYmxlSW5mbyAqdGJsaW5mbywgaW50IG51bVRhYmxl cykKIAkJCUNvbnN0cmFpbnRJbmZvICpjb25zdHJzOwogCQkJaW50CQkJbnVtQ29uc3RyczsK IAotCQkJaWYgKGdfdmVyYm9zZSkKLQkJCQl3cml0ZV9tc2coTlVMTCwgImZpbmRpbmcgY2hl Y2sgY29uc3RyYWludHMgZm9yIHRhYmxlIFwiJXMuJXNcIlxuIiwKLQkJCQkJCSAgdGJpbmZv LT5kb2JqLm5hbWVzcGFjZS0+ZG9iai5uYW1lLAotCQkJCQkJICB0YmluZm8tPmRvYmoubmFt ZSk7CisJCQlwZ19sb2dfaW5mbygiZmluZGluZyBjaGVjayBjb25zdHJhaW50cyBmb3IgdGFi bGUgXCIlcy4lc1wiIiwKKwkJCQkJCXRiaW5mby0+ZG9iai5uYW1lc3BhY2UtPmRvYmoubmFt ZSwKKwkJCQkJCXRiaW5mby0+ZG9iai5uYW1lKTsKIAogCQkJcmVzZXRQUUV4cEJ1ZmZlcihx KTsKIAkJCWlmIChmb3V0LT5yZW1vdGVWZXJzaW9uID49IDkwMjAwKQpAQCAtODQzMSwxMSAr ODQwNywxMSBAQCBnZXRUYWJsZUF0dHJzKEFyY2hpdmUgKmZvdXQsIFRhYmxlSW5mbyAqdGJs aW5mbywgaW50IG51bVRhYmxlcykKIAkJCW51bUNvbnN0cnMgPSBQUW50dXBsZXMocmVzKTsK IAkJCWlmIChudW1Db25zdHJzICE9IHRiaW5mby0+bmNoZWNrKQogCQkJewotCQkJCXdyaXRl X21zZyhOVUxMLCBuZ2V0dGV4dCgiZXhwZWN0ZWQgJWQgY2hlY2sgY29uc3RyYWludCBvbiB0 YWJsZSBcIiVzXCIgYnV0IGZvdW5kICVkXG4iLAotCQkJCQkJCQkJCSAiZXhwZWN0ZWQgJWQg Y2hlY2sgY29uc3RyYWludHMgb24gdGFibGUgXCIlc1wiIGJ1dCBmb3VuZCAlZFxuIiwKLQkJ CQkJCQkJCQkgdGJpbmZvLT5uY2hlY2spLAorCQkJCXBnX2xvZ19lcnJvcihuZ2V0dGV4dCgi ZXhwZWN0ZWQgJWQgY2hlY2sgY29uc3RyYWludCBvbiB0YWJsZSBcIiVzXCIgYnV0IGZvdW5k ICVkIiwKKwkJCQkJCQkJCSAgImV4cGVjdGVkICVkIGNoZWNrIGNvbnN0cmFpbnRzIG9uIHRh YmxlIFwiJXNcIiBidXQgZm91bmQgJWQiLAorCQkJCQkJCQkJICB0YmluZm8tPm5jaGVjayks CiAJCQkJCQkgIHRiaW5mby0+bmNoZWNrLCB0YmluZm8tPmRvYmoubmFtZSwgbnVtQ29uc3Ry cyk7Ci0JCQkJd3JpdGVfbXNnKE5VTEwsICIoVGhlIHN5c3RlbSBjYXRhbG9ncyBtaWdodCBi ZSBjb3JydXB0ZWQuKVxuIik7CisJCQkJcGdfbG9nX2Vycm9yKCIoVGhlIHN5c3RlbSBjYXRh bG9ncyBtaWdodCBiZSBjb3JydXB0ZWQuKSIpOwogCQkJCWV4aXRfbmljZWx5KDEpOwogCQkJ fQogCkBAIC0xMDAxMCw3ICs5OTg2LDcgQEAgZHVtcFR5cGUoQXJjaGl2ZSAqZm91dCwgVHlw ZUluZm8gKnR5aW5mbykKIAllbHNlIGlmICh0eWluZm8tPnR5cHR5cGUgPT0gVFlQVFlQRV9Q U0VVRE8gJiYgIXR5aW5mby0+aXNEZWZpbmVkKQogCQlkdW1wVW5kZWZpbmVkVHlwZShmb3V0 LCB0eWluZm8pOwogCWVsc2UKLQkJd3JpdGVfbXNnKE5VTEwsICJXQVJOSU5HOiB0eXB0eXBl IG9mIGRhdGEgdHlwZSBcIiVzXCIgYXBwZWFycyB0byBiZSBpbnZhbGlkXG4iLAorCQlwZ19s b2dfd2FybmluZygidHlwdHlwZSBvZiBkYXRhIHR5cGUgXCIlc1wiIGFwcGVhcnMgdG8gYmUg aW52YWxpZCIsCiAJCQkJICB0eWluZm8tPmRvYmoubmFtZSk7CiB9CiAKQEAgLTExMzcwLDcg KzExMzQ2LDcgQEAgZm9ybWF0X2Z1bmN0aW9uX2FyZ3VtZW50c19vbGQoQXJjaGl2ZSAqZm91 dCwKIAkJCQkJYXJnbW9kZSA9ICJJTk9VVCAiOwogCQkJCQlicmVhazsKIAkJCQlkZWZhdWx0 OgotCQkJCQl3cml0ZV9tc2coTlVMTCwgIldBUk5JTkc6IGJvZ3VzIHZhbHVlIGluIHByb2Fy Z21vZGVzIGFycmF5XG4iKTsKKwkJCQkJcGdfbG9nX3dhcm5pbmcoImJvZ3VzIHZhbHVlIGlu IHByb2FyZ21vZGVzIGFycmF5Iik7CiAJCQkJCWFyZ21vZGUgPSAiIjsKIAkJCQkJYnJlYWs7 CiAJCQl9CkBAIC0xMTcxNSw3ICsxMTY5MSw3IEBAIGR1bXBGdW5jKEFyY2hpdmUgKmZvdXQs IEZ1bmNJbmZvICpmaW5mbykKIAkJaWYgKCFwYXJzZVBHQXJyYXkocHJvYWxsYXJndHlwZXMs ICZhbGxhcmd0eXBlcywgJm5pdGVtcykgfHwKIAkJCW5pdGVtcyA8IGZpbmZvLT5uYXJncykK IAkJewotCQkJd3JpdGVfbXNnKE5VTEwsICJXQVJOSU5HOiBjb3VsZCBub3QgcGFyc2UgcHJv YWxsYXJndHlwZXMgYXJyYXlcbiIpOworCQkJcGdfbG9nX3dhcm5pbmcoImNvdWxkIG5vdCBw YXJzZSBwcm9hbGxhcmd0eXBlcyBhcnJheSIpOwogCQkJaWYgKGFsbGFyZ3R5cGVzKQogCQkJ CWZyZWUoYWxsYXJndHlwZXMpOwogCQkJYWxsYXJndHlwZXMgPSBOVUxMOwpAQCAtMTE3MzEs NyArMTE3MDcsNyBAQCBkdW1wRnVuYyhBcmNoaXZlICpmb3V0LCBGdW5jSW5mbyAqZmluZm8p CiAJCWlmICghcGFyc2VQR0FycmF5KHByb2FyZ21vZGVzLCAmYXJnbW9kZXMsICZuaXRlbXMp IHx8CiAJCQluaXRlbXMgIT0gbmFsbGFyZ3MpCiAJCXsKLQkJCXdyaXRlX21zZyhOVUxMLCAi V0FSTklORzogY291bGQgbm90IHBhcnNlIHByb2FyZ21vZGVzIGFycmF5XG4iKTsKKwkJCXBn X2xvZ193YXJuaW5nKCJjb3VsZCBub3QgcGFyc2UgcHJvYXJnbW9kZXMgYXJyYXkiKTsKIAkJ CWlmIChhcmdtb2RlcykKIAkJCQlmcmVlKGFyZ21vZGVzKTsKIAkJCWFyZ21vZGVzID0gTlVM TDsKQEAgLTExNzQ1LDcgKzExNzIxLDcgQEAgZHVtcEZ1bmMoQXJjaGl2ZSAqZm91dCwgRnVu Y0luZm8gKmZpbmZvKQogCQlpZiAoIXBhcnNlUEdBcnJheShwcm9hcmduYW1lcywgJmFyZ25h bWVzLCAmbml0ZW1zKSB8fAogCQkJbml0ZW1zICE9IG5hbGxhcmdzKQogCQl7Ci0JCQl3cml0 ZV9tc2coTlVMTCwgIldBUk5JTkc6IGNvdWxkIG5vdCBwYXJzZSBwcm9hcmduYW1lcyBhcnJh eVxuIik7CisJCQlwZ19sb2dfd2FybmluZygiY291bGQgbm90IHBhcnNlIHByb2FyZ25hbWVz IGFycmF5Iik7CiAJCQlpZiAoYXJnbmFtZXMpCiAJCQkJZnJlZShhcmduYW1lcyk7CiAJCQlh cmduYW1lcyA9IE5VTEw7CkBAIC0xMTc1Niw3ICsxMTczMiw3IEBAIGR1bXBGdW5jKEFyY2hp dmUgKmZvdXQsIEZ1bmNJbmZvICpmaW5mbykKIAl7CiAJCWlmICghcGFyc2VQR0FycmF5KHBy b2NvbmZpZywgJmNvbmZpZ2l0ZW1zLCAmbmNvbmZpZ2l0ZW1zKSkKIAkJewotCQkJd3JpdGVf bXNnKE5VTEwsICJXQVJOSU5HOiBjb3VsZCBub3QgcGFyc2UgcHJvY29uZmlnIGFycmF5XG4i KTsKKwkJCXBnX2xvZ193YXJuaW5nKCJjb3VsZCBub3QgcGFyc2UgcHJvY29uZmlnIGFycmF5 Iik7CiAJCQlpZiAoY29uZmlnaXRlbXMpCiAJCQkJZnJlZShjb25maWdpdGVtcyk7CiAJCQlj b25maWdpdGVtcyA9IE5VTEw7CkBAIC0xMTgzNiw3ICsxMTgxMiw3IEBAIGR1bXBGdW5jKEFy Y2hpdmUgKmZvdXQsIEZ1bmNJbmZvICpmaW5mbykKIAkJZWxzZSBpZiAocHJvdm9sYXRpbGVb MF0gPT0gUFJPVk9MQVRJTEVfU1RBQkxFKQogCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocSwg IiBTVEFCTEUiKTsKIAkJZWxzZSBpZiAocHJvdm9sYXRpbGVbMF0gIT0gUFJPVk9MQVRJTEVf Vk9MQVRJTEUpCi0JCQlleGl0X2hvcnJpYmx5KE5VTEwsICJ1bnJlY29nbml6ZWQgcHJvdm9s YXRpbGUgdmFsdWUgZm9yIGZ1bmN0aW9uIFwiJXNcIlxuIiwKKwkJCWZhdGFsKCJ1bnJlY29n bml6ZWQgcHJvdm9sYXRpbGUgdmFsdWUgZm9yIGZ1bmN0aW9uIFwiJXNcIiIsCiAJCQkJCQkg IGZpbmZvLT5kb2JqLm5hbWUpOwogCX0KIApAQCAtMTE4ODAsNyArMTE4NTYsNyBAQCBkdW1w RnVuYyhBcmNoaXZlICpmb3V0LCBGdW5jSW5mbyAqZmluZm8pCiAJCWVsc2UgaWYgKHByb3Bh cmFsbGVsWzBdID09IFBST1BBUkFMTEVMX1JFU1RSSUNURUQpCiAJCQlhcHBlbmRQUUV4cEJ1 ZmZlclN0cihxLCAiIFBBUkFMTEVMIFJFU1RSSUNURUQiKTsKIAkJZWxzZSBpZiAocHJvcGFy YWxsZWxbMF0gIT0gUFJPUEFSQUxMRUxfVU5TQUZFKQotCQkJZXhpdF9ob3JyaWJseShOVUxM LCAidW5yZWNvZ25pemVkIHByb3BhcmFsbGVsIHZhbHVlIGZvciBmdW5jdGlvbiBcIiVzXCJc biIsCisJCQlmYXRhbCgidW5yZWNvZ25pemVkIHByb3BhcmFsbGVsIHZhbHVlIGZvciBmdW5j dGlvbiBcIiVzXCIiLAogCQkJCQkJICBmaW5mby0+ZG9iai5uYW1lKTsKIAl9CiAKQEAgLTEy MDE0LDcgKzExOTkwLDcgQEAgZHVtcENhc3QoQXJjaGl2ZSAqZm91dCwgQ2FzdEluZm8gKmNh c3QpCiAJewogCQlmdW5jSW5mbyA9IGZpbmRGdW5jQnlPaWQoY2FzdC0+Y2FzdGZ1bmMpOwog CQlpZiAoZnVuY0luZm8gPT0gTlVMTCkKLQkJCWV4aXRfaG9ycmlibHkoTlVMTCwgImNvdWxk IG5vdCBmaW5kIGZ1bmN0aW9uIGRlZmluaXRpb24gZm9yIGZ1bmN0aW9uIHdpdGggT0lEICV1 XG4iLAorCQkJZmF0YWwoImNvdWxkIG5vdCBmaW5kIGZ1bmN0aW9uIGRlZmluaXRpb24gZm9y IGZ1bmN0aW9uIHdpdGggT0lEICV1IiwKIAkJCQkJCSAgY2FzdC0+Y2FzdGZ1bmMpOwogCX0K IApAQCAtMTIwNTMsMTAgKzEyMDI5LDEwIEBAIGR1bXBDYXN0KEFyY2hpdmUgKmZvdXQsIENh c3RJbmZvICpjYXN0KQogCQkJCWZyZWUoZnNpZyk7CiAJCQl9CiAJCQllbHNlCi0JCQkJd3Jp dGVfbXNnKE5VTEwsICJXQVJOSU5HOiBib2d1cyB2YWx1ZSBpbiBwZ19jYXN0LmNhc3RmdW5j IG9yIHBnX2Nhc3QuY2FzdG1ldGhvZCBmaWVsZFxuIik7CisJCQkJcGdfbG9nX3dhcm5pbmco ImJvZ3VzIHZhbHVlIGluIHBnX2Nhc3QuY2FzdGZ1bmMgb3IgcGdfY2FzdC5jYXN0bWV0aG9k IGZpZWxkIik7CiAJCQlicmVhazsKIAkJZGVmYXVsdDoKLQkJCXdyaXRlX21zZyhOVUxMLCAi V0FSTklORzogYm9ndXMgdmFsdWUgaW4gcGdfY2FzdC5jYXN0bWV0aG9kIGZpZWxkXG4iKTsK KwkJCXBnX2xvZ193YXJuaW5nKCJib2d1cyB2YWx1ZSBpbiBwZ19jYXN0LmNhc3RtZXRob2Qg ZmllbGQiKTsKIAl9CiAKIAlpZiAoY2FzdC0+Y2FzdGNvbnRleHQgPT0gJ2EnKQpAQCAtMTIx MjQsMTQgKzEyMTAwLDE0IEBAIGR1bXBUcmFuc2Zvcm0oQXJjaGl2ZSAqZm91dCwgVHJhbnNm b3JtSW5mbyAqdHJhbnNmb3JtKQogCXsKIAkJZnJvbXNxbEZ1bmNJbmZvID0gZmluZEZ1bmNC eU9pZCh0cmFuc2Zvcm0tPnRyZmZyb21zcWwpOwogCQlpZiAoZnJvbXNxbEZ1bmNJbmZvID09 IE5VTEwpCi0JCQlleGl0X2hvcnJpYmx5KE5VTEwsICJjb3VsZCBub3QgZmluZCBmdW5jdGlv biBkZWZpbml0aW9uIGZvciBmdW5jdGlvbiB3aXRoIE9JRCAldVxuIiwKKwkJCWZhdGFsKCJj b3VsZCBub3QgZmluZCBmdW5jdGlvbiBkZWZpbml0aW9uIGZvciBmdW5jdGlvbiB3aXRoIE9J RCAldSIsCiAJCQkJCQkgIHRyYW5zZm9ybS0+dHJmZnJvbXNxbCk7CiAJfQogCWlmIChPaWRJ c1ZhbGlkKHRyYW5zZm9ybS0+dHJmdG9zcWwpKQogCXsKIAkJdG9zcWxGdW5jSW5mbyA9IGZp bmRGdW5jQnlPaWQodHJhbnNmb3JtLT50cmZ0b3NxbCk7CiAJCWlmICh0b3NxbEZ1bmNJbmZv ID09IE5VTEwpCi0JCQlleGl0X2hvcnJpYmx5KE5VTEwsICJjb3VsZCBub3QgZmluZCBmdW5j dGlvbiBkZWZpbml0aW9uIGZvciBmdW5jdGlvbiB3aXRoIE9JRCAldVxuIiwKKwkJCWZhdGFs KCJjb3VsZCBub3QgZmluZCBmdW5jdGlvbiBkZWZpbml0aW9uIGZvciBmdW5jdGlvbiB3aXRo IE9JRCAldSIsCiAJCQkJCQkgIHRyYW5zZm9ybS0+dHJmdG9zcWwpOwogCX0KIApAQCAtMTIx NTAsNyArMTIxMjYsNyBAQCBkdW1wVHJhbnNmb3JtKEFyY2hpdmUgKmZvdXQsIFRyYW5zZm9y bUluZm8gKnRyYW5zZm9ybSkKIAkJCQkJICB0cmFuc2Zvcm1UeXBlLCBsYW5uYW1lKTsKIAog CWlmICghdHJhbnNmb3JtLT50cmZmcm9tc3FsICYmICF0cmFuc2Zvcm0tPnRyZnRvc3FsKQot CQl3cml0ZV9tc2coTlVMTCwgIldBUk5JTkc6IGJvZ3VzIHRyYW5zZm9ybSBkZWZpbml0aW9u LCBhdCBsZWFzdCBvbmUgb2YgdHJmZnJvbXNxbCBhbmQgdHJmdG9zcWwgc2hvdWxkIGJlIG5v bnplcm9cbiIpOworCQlwZ19sb2dfd2FybmluZygiYm9ndXMgdHJhbnNmb3JtIGRlZmluaXRp b24sIGF0IGxlYXN0IG9uZSBvZiB0cmZmcm9tc3FsIGFuZCB0cmZ0b3NxbCBzaG91bGQgYmUg bm9uemVybyIpOwogCiAJaWYgKHRyYW5zZm9ybS0+dHJmZnJvbXNxbCkKIAl7CkBAIC0xMjE2 Nyw3ICsxMjE0Myw3IEBAIGR1bXBUcmFuc2Zvcm0oQXJjaGl2ZSAqZm91dCwgVHJhbnNmb3Jt SW5mbyAqdHJhbnNmb3JtKQogCQkJZnJlZShmc2lnKTsKIAkJfQogCQllbHNlCi0JCQl3cml0 ZV9tc2coTlVMTCwgIldBUk5JTkc6IGJvZ3VzIHZhbHVlIGluIHBnX3RyYW5zZm9ybS50cmZm cm9tc3FsIGZpZWxkXG4iKTsKKwkJCXBnX2xvZ193YXJuaW5nKCJib2d1cyB2YWx1ZSBpbiBw Z190cmFuc2Zvcm0udHJmZnJvbXNxbCBmaWVsZCIpOwogCX0KIAogCWlmICh0cmFuc2Zvcm0t PnRyZnRvc3FsKQpAQCAtMTIxODgsNyArMTIxNjQsNyBAQCBkdW1wVHJhbnNmb3JtKEFyY2hp dmUgKmZvdXQsIFRyYW5zZm9ybUluZm8gKnRyYW5zZm9ybSkKIAkJCWZyZWUoZnNpZyk7CiAJ CX0KIAkJZWxzZQotCQkJd3JpdGVfbXNnKE5VTEwsICJXQVJOSU5HOiBib2d1cyB2YWx1ZSBp biBwZ190cmFuc2Zvcm0udHJmdG9zcWwgZmllbGRcbiIpOworCQkJcGdfbG9nX3dhcm5pbmco ImJvZ3VzIHZhbHVlIGluIHBnX3RyYW5zZm9ybS50cmZ0b3NxbCBmaWVsZCIpOwogCX0KIAog CWFwcGVuZFBRRXhwQnVmZmVyKGRlZnFyeSwgIik7XG4iKTsKQEAgLTEyNTA0LDcgKzEyNDgw LDcgQEAgZ2V0Rm9ybWF0dGVkT3BlcmF0b3JOYW1lKEFyY2hpdmUgKmZvdXQsIGNvbnN0IGNo YXIgKm9wcm9pZCkKIAlvcHJJbmZvID0gZmluZE9wckJ5T2lkKGF0b29pZChvcHJvaWQpKTsK IAlpZiAob3BySW5mbyA9PSBOVUxMKQogCXsKLQkJd3JpdGVfbXNnKE5VTEwsICJXQVJOSU5H OiBjb3VsZCBub3QgZmluZCBvcGVyYXRvciB3aXRoIE9JRCAlc1xuIiwKKwkJcGdfbG9nX3dh cm5pbmcoImNvdWxkIG5vdCBmaW5kIG9wZXJhdG9yIHdpdGggT0lEICVzIiwKIAkJCQkgIG9w cm9pZCk7CiAJCXJldHVybiBOVUxMOwogCX0KQEAgLTEyNTY5LDcgKzEyNTQ1LDcgQEAgZHVt cEFjY2Vzc01ldGhvZChBcmNoaXZlICpmb3V0LCBBY2Nlc3NNZXRob2RJbmZvICphbWluZm8p CiAJCQlhcHBlbmRQUUV4cEJ1ZmZlcihxLCAiVFlQRSBJTkRFWCAiKTsKIAkJCWJyZWFrOwog CQlkZWZhdWx0OgotCQkJd3JpdGVfbXNnKE5VTEwsICJXQVJOSU5HOiBpbnZhbGlkIHR5cGUg XCIlY1wiIG9mIGFjY2VzcyBtZXRob2QgXCIlc1wiXG4iLAorCQkJcGdfbG9nX3dhcm5pbmco ImludmFsaWQgdHlwZSBcIiVjXCIgb2YgYWNjZXNzIG1ldGhvZCBcIiVzXCIiLAogCQkJCQkg IGFtaW5mby0+YW10eXBlLCBxYW1uYW1lKTsKIAkJCWRlc3Ryb3lQUUV4cEJ1ZmZlcihxKTsK IAkJCWRlc3Ryb3lQUUV4cEJ1ZmZlcihkZWxxKTsKQEAgLTEzMzIwLDggKzEzMjk2LDcgQEAg ZHVtcENvbGxhdGlvbihBcmNoaXZlICpmb3V0LCBDb2xsSW5mbyAqY29sbGluZm8pCiAJCS8q IHRvIGFsbG93IGR1bXBpbmcgcGdfY2F0YWxvZzsgbm90IGFjY2VwdGVkIG9uIGlucHV0ICov CiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHEsICJkZWZhdWx0Iik7CiAJZWxzZQotCQlleGl0 X2hvcnJpYmx5KE5VTEwsCi0JCQkJCSAgInVucmVjb2duaXplZCBjb2xsYXRpb24gcHJvdmlk ZXI6ICVzXG4iLAorCQlmYXRhbCgidW5yZWNvZ25pemVkIGNvbGxhdGlvbiBwcm92aWRlcjog JXNcbiIsCiAJCQkJCSAgY29sbHByb3ZpZGVyKTsKIAogCWlmIChzdHJjbXAoY29sbGNvbGxh dGUsIGNvbGxjdHlwZSkgPT0gMCkKQEAgLTEzNzkyLDcgKzEzNzY3LDcgQEAgZHVtcEFnZyhB cmNoaXZlICpmb3V0LCBBZ2dJbmZvICphZ2dpbmZvKQogCiAJaWYgKCFjb252ZXJ0b2spCiAJ ewotCQl3cml0ZV9tc2coTlVMTCwgIldBUk5JTkc6IGFnZ3JlZ2F0ZSBmdW5jdGlvbiAlcyBj b3VsZCBub3QgYmUgZHVtcGVkIGNvcnJlY3RseSBmb3IgdGhpcyBkYXRhYmFzZSB2ZXJzaW9u OyBpZ25vcmVkXG4iLAorCQlwZ19sb2dfd2FybmluZygiYWdncmVnYXRlIGZ1bmN0aW9uICVz IGNvdWxkIG5vdCBiZSBkdW1wZWQgY29ycmVjdGx5IGZvciB0aGlzIGRhdGFiYXNlIHZlcnNp b247IGlnbm9yZWQiLAogCQkJCSAgYWdnc2lnKTsKIAogCQlpZiAoYWdnZnVsbHNpZykKQEAg LTEzODQ3LDcgKzEzODIyLDcgQEAgZHVtcEFnZyhBcmNoaXZlICpmb3V0LCBBZ2dJbmZvICph Z2dpbmZvKQogCQkJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihkZXRhaWxzLCAiLFxuICAgIEZJ TkFMRlVOQ19NT0RJRlkgPSBSRUFEX1dSSVRFIik7CiAJCQkJCWJyZWFrOwogCQkJCWRlZmF1 bHQ6Ci0JCQkJCWV4aXRfaG9ycmlibHkoTlVMTCwgInVucmVjb2duaXplZCBhZ2dmaW5hbG1v ZGlmeSB2YWx1ZSBmb3IgYWdncmVnYXRlIFwiJXNcIlxuIiwKKwkJCQkJZmF0YWwoInVucmVj b2duaXplZCBhZ2dmaW5hbG1vZGlmeSB2YWx1ZSBmb3IgYWdncmVnYXRlIFwiJXNcIiIsCiAJ CQkJCQkJCSAgYWdnaW5mby0+YWdnZm4uZG9iai5uYW1lKTsKIAkJCQkJYnJlYWs7CiAJCQl9 CkBAIC0xMzkwMyw3ICsxMzg3OCw3IEBAIGR1bXBBZ2coQXJjaGl2ZSAqZm91dCwgQWdnSW5m byAqYWdnaW5mbykKIAkJCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoZGV0YWlscywgIixcbiAg ICBNRklOQUxGVU5DX01PRElGWSA9IFJFQURfV1JJVEUiKTsKIAkJCQkJYnJlYWs7CiAJCQkJ ZGVmYXVsdDoKLQkJCQkJZXhpdF9ob3JyaWJseShOVUxMLCAidW5yZWNvZ25pemVkIGFnZ21m aW5hbG1vZGlmeSB2YWx1ZSBmb3IgYWdncmVnYXRlIFwiJXNcIlxuIiwKKwkJCQkJZmF0YWwo InVucmVjb2duaXplZCBhZ2dtZmluYWxtb2RpZnkgdmFsdWUgZm9yIGFnZ3JlZ2F0ZSBcIiVz XCIiLAogCQkJCQkJCQkgIGFnZ2luZm8tPmFnZ2ZuLmRvYmoubmFtZSk7CiAJCQkJCWJyZWFr OwogCQkJfQpAQCAtMTM5MjgsNyArMTM5MDMsNyBAQCBkdW1wQWdnKEFyY2hpdmUgKmZvdXQs IEFnZ0luZm8gKmFnZ2luZm8pCiAJCWVsc2UgaWYgKHByb3BhcmFsbGVsWzBdID09IFBST1BB UkFMTEVMX1JFU1RSSUNURUQpCiAJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihkZXRhaWxzLCAi LFxuICAgIFBBUkFMTEVMID0gcmVzdHJpY3RlZCIpOwogCQllbHNlIGlmIChwcm9wYXJhbGxl bFswXSAhPSBQUk9QQVJBTExFTF9VTlNBRkUpCi0JCQlleGl0X2hvcnJpYmx5KE5VTEwsICJ1 bnJlY29nbml6ZWQgcHJvcGFyYWxsZWwgdmFsdWUgZm9yIGZ1bmN0aW9uIFwiJXNcIlxuIiwK KwkJCWZhdGFsKCJ1bnJlY29nbml6ZWQgcHJvcGFyYWxsZWwgdmFsdWUgZm9yIGZ1bmN0aW9u IFwiJXNcIiIsCiAJCQkJCQkgIGFnZ2luZm8tPmFnZ2ZuLmRvYmoubmFtZSk7CiAJfQogCkBA IC0xNDYzNyw4ICsxNDYxMiw3IEBAIGR1bXBEZWZhdWx0QUNMKEFyY2hpdmUgKmZvdXQsIERl ZmF1bHRBQ0xJbmZvICpkYWNsaW5mbykKIAkJCWJyZWFrOwogCQlkZWZhdWx0OgogCQkJLyog c2hvdWxkbid0IGdldCBoZXJlICovCi0JCQlleGl0X2hvcnJpYmx5KE5VTEwsCi0JCQkJCQkg ICJ1bnJlY29nbml6ZWQgb2JqZWN0IHR5cGUgaW4gZGVmYXVsdCBwcml2aWxlZ2VzOiAlZFxu IiwKKwkJCWZhdGFsKCJ1bnJlY29nbml6ZWQgb2JqZWN0IHR5cGUgaW4gZGVmYXVsdCBwcml2 aWxlZ2VzOiAlZCIsCiAJCQkJCQkgIChpbnQpIGRhY2xpbmZvLT5kZWZhY2xvYmp0eXBlKTsK IAkJCXR5cGUgPSAiIjsJCQkvKiBrZWVwIGNvbXBpbGVyIHF1aWV0ICovCiAJfQpAQCAtMTQ2 NTYsNyArMTQ2MzAsNyBAQCBkdW1wRGVmYXVsdEFDTChBcmNoaXZlICpmb3V0LCBEZWZhdWx0 QUNMSW5mbyAqZGFjbGluZm8pCiAJCQkJCQkJCSBkYWNsaW5mby0+ZGVmYWNscm9sZSwKIAkJ CQkJCQkJIGZvdXQtPnJlbW90ZVZlcnNpb24sCiAJCQkJCQkJCSBxKSkKLQkJZXhpdF9ob3Jy aWJseShOVUxMLCAiY291bGQgbm90IHBhcnNlIGRlZmF1bHQgQUNMIGxpc3QgKCVzKVxuIiwK KwkJZmF0YWwoImNvdWxkIG5vdCBwYXJzZSBkZWZhdWx0IEFDTCBsaXN0ICglcykiLAogCQkJ CQkgIGRhY2xpbmZvLT5kZWZhY2xhY2wpOwogCiAJaWYgKGRhY2xpbmZvLT5kb2JqLmR1bXAg JiBEVU1QX0NPTVBPTkVOVF9BQ0wpCkBAIC0xNDczNyw4ICsxNDcxMSw3IEBAIGR1bXBBQ0wo QXJjaGl2ZSAqZm91dCwgQ2F0YWxvZ0lkIG9iakNhdElkLCBEdW1wSWQgb2JqRHVtcElkLAog CQlpZiAoIWJ1aWxkQUNMQ29tbWFuZHMobmFtZSwgc3VibmFtZSwgbnNwbmFtZSwgdHlwZSwK IAkJCQkJCQkgIGluaXRhY2xzLCBpbml0cmFjbHMsIG93bmVyLAogCQkJCQkJCSAgIiIsIGZv dXQtPnJlbW90ZVZlcnNpb24sIHNxbCkpCi0JCQlleGl0X2hvcnJpYmx5KE5VTEwsCi0JCQkJ CQkgICJjb3VsZCBub3QgcGFyc2UgaW5pdGlhbCBHUkFOVCBBQ0wgbGlzdCAoJXMpIG9yIGlu aXRpYWwgUkVWT0tFIEFDTCBsaXN0ICglcykgZm9yIG9iamVjdCBcIiVzXCIgKCVzKVxuIiwK KwkJCWZhdGFsKCJjb3VsZCBub3QgcGFyc2UgaW5pdGlhbCBHUkFOVCBBQ0wgbGlzdCAoJXMp IG9yIGluaXRpYWwgUkVWT0tFIEFDTCBsaXN0ICglcykgZm9yIG9iamVjdCBcIiVzXCIgKCVz KSIsCiAJCQkJCQkgIGluaXRhY2xzLCBpbml0cmFjbHMsIG5hbWUsIHR5cGUpOwogCQlhcHBl bmRQUUV4cEJ1ZmZlcihzcWwsICJTRUxFQ1QgcGdfY2F0YWxvZy5iaW5hcnlfdXBncmFkZV9z ZXRfcmVjb3JkX2luaXRfcHJpdnMoZmFsc2UpO1xuIik7CiAJfQpAQCAtMTQ3NDYsOCArMTQ3 MTksNyBAQCBkdW1wQUNMKEFyY2hpdmUgKmZvdXQsIENhdGFsb2dJZCBvYmpDYXRJZCwgRHVt cElkIG9iakR1bXBJZCwKIAlpZiAoIWJ1aWxkQUNMQ29tbWFuZHMobmFtZSwgc3VibmFtZSwg bnNwbmFtZSwgdHlwZSwKIAkJCQkJCSAgYWNscywgcmFjbHMsIG93bmVyLAogCQkJCQkJICAi IiwgZm91dC0+cmVtb3RlVmVyc2lvbiwgc3FsKSkKLQkJZXhpdF9ob3JyaWJseShOVUxMLAot CQkJCQkgICJjb3VsZCBub3QgcGFyc2UgR1JBTlQgQUNMIGxpc3QgKCVzKSBvciBSRVZPS0Ug QUNMIGxpc3QgKCVzKSBmb3Igb2JqZWN0IFwiJXNcIiAoJXMpXG4iLAorCQlmYXRhbCgiY291 bGQgbm90IHBhcnNlIEdSQU5UIEFDTCBsaXN0ICglcykgb3IgUkVWT0tFIEFDTCBsaXN0ICgl cykgZm9yIG9iamVjdCBcIiVzXCIgKCVzKSIsCiAJCQkJCSAgYWNscywgcmFjbHMsIG5hbWUs IHR5cGUpOwogCiAJaWYgKHNxbC0+bGVuID4gMCkKQEAgLTE1MjQxLDE3ICsxNTIxMywxNyBA QCBjcmVhdGVWaWV3QXNDbGF1c2UoQXJjaGl2ZSAqZm91dCwgVGFibGVJbmZvICp0YmluZm8p CiAJaWYgKFBRbnR1cGxlcyhyZXMpICE9IDEpCiAJewogCQlpZiAoUFFudHVwbGVzKHJlcykg PCAxKQotCQkJZXhpdF9ob3JyaWJseShOVUxMLCAicXVlcnkgdG8gb2J0YWluIGRlZmluaXRp b24gb2YgdmlldyBcIiVzXCIgcmV0dXJuZWQgbm8gZGF0YVxuIiwKKwkJCWZhdGFsKCJxdWVy eSB0byBvYnRhaW4gZGVmaW5pdGlvbiBvZiB2aWV3IFwiJXNcIiByZXR1cm5lZCBubyBkYXRh IiwKIAkJCQkJCSAgdGJpbmZvLT5kb2JqLm5hbWUpOwogCQllbHNlCi0JCQlleGl0X2hvcnJp Ymx5KE5VTEwsICJxdWVyeSB0byBvYnRhaW4gZGVmaW5pdGlvbiBvZiB2aWV3IFwiJXNcIiBy ZXR1cm5lZCBtb3JlIHRoYW4gb25lIGRlZmluaXRpb25cbiIsCisJCQlmYXRhbCgicXVlcnkg dG8gb2J0YWluIGRlZmluaXRpb24gb2YgdmlldyBcIiVzXCIgcmV0dXJuZWQgbW9yZSB0aGFu IG9uZSBkZWZpbml0aW9uIiwKIAkJCQkJCSAgdGJpbmZvLT5kb2JqLm5hbWUpOwogCX0KIAog CWxlbiA9IFBRZ2V0bGVuZ3RoKHJlcywgMCwgMCk7CiAKIAlpZiAobGVuID09IDApCi0JCWV4 aXRfaG9ycmlibHkoTlVMTCwgImRlZmluaXRpb24gb2YgdmlldyBcIiVzXCIgYXBwZWFycyB0 byBiZSBlbXB0eSAobGVuZ3RoIHplcm8pXG4iLAorCQlmYXRhbCgiZGVmaW5pdGlvbiBvZiB2 aWV3IFwiJXNcIiBhcHBlYXJzIHRvIGJlIGVtcHR5IChsZW5ndGggemVybykiLAogCQkJCQkg IHRiaW5mby0+ZG9iai5uYW1lKTsKIAogCS8qIFN0cmlwIG9mZiB0aGUgdHJhaWxpbmcgc2Vt aWNvbG9uIHNvIHRoYXQgb3RoZXIgdGhpbmdzIG1heSBmb2xsb3cuICovCkBAIC0xNTMzMyw4 ICsxNTMwNSw3IEBAIGR1bXBUYWJsZVNjaGVtYShBcmNoaXZlICpmb3V0LCBUYWJsZUluZm8g KnRiaW5mbykKIAogCiAJaWYgKHRiaW5mby0+aGFzb2lkcykKLQkJd3JpdGVfbXNnKE5VTEws Ci0JCQkJICAiV0FSTklORzogV0lUSCBPSURTIGlzIG5vdCBzdXBwb3J0ZWQgYW55bW9yZSAo dGFibGUgXCIlc1wiKVxuIiwKKwkJcGdfbG9nX3dhcm5pbmcoIldJVEggT0lEUyBpcyBub3Qg c3VwcG9ydGVkIGFueW1vcmUgKHRhYmxlIFwiJXNcIikiLAogCQkJCSAgcXJlbG5hbWUpOwog CiAJaWYgKGRvcHQtPmJpbmFyeV91cGdyYWRlKQpAQCAtMTU0NjEsNyArMTU0MzIsNyBAQCBk dW1wVGFibGVTY2hlbWEoQXJjaGl2ZSAqZm91dCwgVGFibGVJbmZvICp0YmluZm8pCiAJCQkg KiBwYXJlbnQuCiAJCQkgKi8KIAkJCWlmICh0YmluZm8tPm51bVBhcmVudHMgIT0gMSkKLQkJ CQlleGl0X2hvcnJpYmx5KE5VTEwsICJpbnZhbGlkIG51bWJlciBvZiBwYXJlbnRzICVkIGZv ciB0YWJsZSBcIiVzXCJcbiIsCisJCQkJZmF0YWwoImludmFsaWQgbnVtYmVyIG9mIHBhcmVu dHMgJWQgZm9yIHRhYmxlIFwiJXNcIiIsCiAJCQkJCQkJICB0YmluZm8tPm51bVBhcmVudHMs IHRiaW5mby0+ZG9iai5uYW1lKTsKIAogCQkJYXBwZW5kUFFFeHBCdWZmZXIocSwgIiBQQVJU SVRJT04gT0YgJXMiLApAQCAtMTYxMzQsNyArMTYxMDUsNyBAQCBnZXRBdHRyTmFtZShpbnQg YXR0cm51bSwgVGFibGVJbmZvICp0YmxJbmZvKQogCQljYXNlIFRhYmxlT2lkQXR0cmlidXRl TnVtYmVyOgogCQkJcmV0dXJuICJ0YWJsZW9pZCI7CiAJfQotCWV4aXRfaG9ycmlibHkoTlVM TCwgImludmFsaWQgY29sdW1uIG51bWJlciAlZCBmb3IgdGFibGUgXCIlc1wiXG4iLAorCWZh dGFsKCJpbnZhbGlkIGNvbHVtbiBudW1iZXIgJWQgZm9yIHRhYmxlIFwiJXNcIiIsCiAJCQkJ ICBhdHRybnVtLCB0YmxJbmZvLT5kb2JqLm5hbWUpOwogCXJldHVybiBOVUxMOwkJCQkvKiBr ZWVwIGNvbXBpbGVyIHF1aWV0ICovCiB9CkBAIC0xNjQwMCw3ICsxNjM3MSw3IEBAIGR1bXBD b25zdHJhaW50KEFyY2hpdmUgKmZvdXQsIENvbnN0cmFpbnRJbmZvICpjb25pbmZvKQogCQlp bmR4aW5mbyA9IChJbmR4SW5mbyAqKSBmaW5kT2JqZWN0QnlEdW1wSWQoY29uaW5mby0+Y29u aW5kZXgpOwogCiAJCWlmIChpbmR4aW5mbyA9PSBOVUxMKQotCQkJZXhpdF9ob3JyaWJseShO VUxMLCAibWlzc2luZyBpbmRleCBmb3IgY29uc3RyYWludCBcIiVzXCJcbiIsCisJCQlmYXRh bCgibWlzc2luZyBpbmRleCBmb3IgY29uc3RyYWludCBcIiVzXCIiLAogCQkJCQkJICBjb25p bmZvLT5kb2JqLm5hbWUpOwogCiAJCWlmIChkb3B0LT5iaW5hcnlfdXBncmFkZSkKQEAgLTE2 NjIzLDcgKzE2NTk0LDcgQEAgZHVtcENvbnN0cmFpbnQoQXJjaGl2ZSAqZm91dCwgQ29uc3Ry YWludEluZm8gKmNvbmluZm8pCiAJfQogCWVsc2UKIAl7Ci0JCWV4aXRfaG9ycmlibHkoTlVM TCwgInVucmVjb2duaXplZCBjb25zdHJhaW50IHR5cGU6ICVjXG4iLAorCQlmYXRhbCgidW5y ZWNvZ25pemVkIGNvbnN0cmFpbnQgdHlwZTogJWMiLAogCQkJCQkgIGNvbmluZm8tPmNvbnR5 cGUpOwogCX0KIApAQCAtMTY3NTUsOCArMTY3MjYsOCBAQCBkdW1wU2VxdWVuY2UoQXJjaGl2 ZSAqZm91dCwgVGFibGVJbmZvICp0YmluZm8pCiAKIAlpZiAoUFFudHVwbGVzKHJlcykgIT0g MSkKIAl7Ci0JCXdyaXRlX21zZyhOVUxMLCBuZ2V0dGV4dCgicXVlcnkgdG8gZ2V0IGRhdGEg b2Ygc2VxdWVuY2UgXCIlc1wiIHJldHVybmVkICVkIHJvdyAoZXhwZWN0ZWQgMSlcbiIsCi0J CQkJCQkJCSAicXVlcnkgdG8gZ2V0IGRhdGEgb2Ygc2VxdWVuY2UgXCIlc1wiIHJldHVybmVk ICVkIHJvd3MgKGV4cGVjdGVkIDEpXG4iLAorCQlwZ19sb2dfZXJyb3IobmdldHRleHQoInF1 ZXJ5IHRvIGdldCBkYXRhIG9mIHNlcXVlbmNlIFwiJXNcIiByZXR1cm5lZCAlZCByb3cgKGV4 cGVjdGVkIDEpIiwKKwkJCQkJCQkgICJxdWVyeSB0byBnZXQgZGF0YSBvZiBzZXF1ZW5jZSBc IiVzXCIgcmV0dXJuZWQgJWQgcm93cyAoZXhwZWN0ZWQgMSkiLAogCQkJCQkJCQkgUFFudHVw bGVzKHJlcykpLAogCQkJCSAgdGJpbmZvLT5kb2JqLm5hbWUsIFBRbnR1cGxlcyhyZXMpKTsK IAkJZXhpdF9uaWNlbHkoMSk7CkBAIC0xNjc4OSw3ICsxNjc2MCw3IEBAIGR1bXBTZXF1ZW5j ZShBcmNoaXZlICpmb3V0LCBUYWJsZUluZm8gKnRiaW5mbykKIAl9CiAJZWxzZQogCXsKLQkJ ZXhpdF9ob3JyaWJseShOVUxMLCAidW5yZWNvZ25pemVkIHNlcXVlbmNlIHR5cGU6ICVzXG4i LCBzZXF0eXBlKTsKKwkJZmF0YWwoInVucmVjb2duaXplZCBzZXF1ZW5jZSB0eXBlOiAlcyIs IHNlcXR5cGUpOwogCQlkZWZhdWx0X21pbnYgPSBkZWZhdWx0X21heHYgPSAwOwkvKiBrZWVw IGNvbXBpbGVyIHF1aWV0ICovCiAJfQogCkBAIC0xNjkxMSw3ICsxNjg4Miw3IEBAIGR1bXBT ZXF1ZW5jZShBcmNoaXZlICpmb3V0LCBUYWJsZUluZm8gKnRiaW5mbykKIAkJVGFibGVJbmZv ICAqb3duaW5nX3RhYiA9IGZpbmRUYWJsZUJ5T2lkKHRiaW5mby0+b3duaW5nX3RhYik7CiAK IAkJaWYgKG93bmluZ190YWIgPT0gTlVMTCkKLQkJCWV4aXRfaG9ycmlibHkoTlVMTCwgImZh aWxlZCBzYW5pdHkgY2hlY2ssIHBhcmVudCB0YWJsZSB3aXRoIE9JRCAldSBvZiBzZXF1ZW5j ZSB3aXRoIE9JRCAldSBub3QgZm91bmRcbiIsCisJCQlmYXRhbCgiZmFpbGVkIHNhbml0eSBj aGVjaywgcGFyZW50IHRhYmxlIHdpdGggT0lEICV1IG9mIHNlcXVlbmNlIHdpdGggT0lEICV1 IG5vdCBmb3VuZCIsCiAJCQkJCQkgIHRiaW5mby0+b3duaW5nX3RhYiwgdGJpbmZvLT5kb2Jq LmNhdElkLm9pZCk7CiAKIAkJaWYgKG93bmluZ190YWItPmRvYmouZHVtcCAmIERVTVBfQ09N UE9ORU5UX0RFRklOSVRJT04pCkBAIC0xNjk3Niw4ICsxNjk0Nyw4IEBAIGR1bXBTZXF1ZW5j ZURhdGEoQXJjaGl2ZSAqZm91dCwgVGFibGVEYXRhSW5mbyAqdGRpbmZvKQogCiAJaWYgKFBR bnR1cGxlcyhyZXMpICE9IDEpCiAJewotCQl3cml0ZV9tc2coTlVMTCwgbmdldHRleHQoInF1 ZXJ5IHRvIGdldCBkYXRhIG9mIHNlcXVlbmNlIFwiJXNcIiByZXR1cm5lZCAlZCByb3cgKGV4 cGVjdGVkIDEpXG4iLAotCQkJCQkJCQkgInF1ZXJ5IHRvIGdldCBkYXRhIG9mIHNlcXVlbmNl IFwiJXNcIiByZXR1cm5lZCAlZCByb3dzIChleHBlY3RlZCAxKVxuIiwKKwkJcGdfbG9nX2Vy cm9yKG5nZXR0ZXh0KCJxdWVyeSB0byBnZXQgZGF0YSBvZiBzZXF1ZW5jZSBcIiVzXCIgcmV0 dXJuZWQgJWQgcm93IChleHBlY3RlZCAxKSIsCisJCQkJCQkJICAicXVlcnkgdG8gZ2V0IGRh dGEgb2Ygc2VxdWVuY2UgXCIlc1wiIHJldHVybmVkICVkIHJvd3MgKGV4cGVjdGVkIDEpIiwK IAkJCQkJCQkJIFBRbnR1cGxlcyhyZXMpKSwKIAkJCQkgIHRiaW5mby0+ZG9iai5uYW1lLCBQ UW50dXBsZXMocmVzKSk7CiAJCWV4aXRfbmljZWx5KDEpOwpAQCAtMTcwNzIsNyArMTcwNDMs NyBAQCBkdW1wVHJpZ2dlcihBcmNoaXZlICpmb3V0LCBUcmlnZ2VySW5mbyAqdGdpbmZvKQog CQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICJJTlNURUFEIE9GIik7CiAJCWVsc2UK IAkJewotCQkJd3JpdGVfbXNnKE5VTEwsICJ1bmV4cGVjdGVkIHRndHlwZSB2YWx1ZTogJWRc biIsIHRnaW5mby0+dGd0eXBlKTsKKwkJCXBnX2xvZ19lcnJvcigidW5leHBlY3RlZCB0Z3R5 cGUgdmFsdWU6ICVkIiwgdGdpbmZvLT50Z3R5cGUpOwogCQkJZXhpdF9uaWNlbHkoMSk7CiAJ CX0KIApAQCAtMTcxNDYsNyArMTcxMTcsNyBAQCBkdW1wVHJpZ2dlcihBcmNoaXZlICpmb3V0 LCBUcmlnZ2VySW5mbyAqdGdpbmZvKQogCQkJaWYgKHAgKyB0bGVuID49IHRnYXJncyArIGxl bnRnYXJncykKIAkJCXsKIAkJCQkvKiBobSwgbm90IGZvdW5kIGJlZm9yZSBlbmQgb2YgYnl0 ZWEgdmFsdWUuLi4gKi8KLQkJCQl3cml0ZV9tc2coTlVMTCwgImludmFsaWQgYXJndW1lbnQg c3RyaW5nICglcykgZm9yIHRyaWdnZXIgXCIlc1wiIG9uIHRhYmxlIFwiJXNcIlxuIiwKKwkJ CQlwZ19sb2dfZXJyb3IoImludmFsaWQgYXJndW1lbnQgc3RyaW5nICglcykgZm9yIHRyaWdn ZXIgXCIlc1wiIG9uIHRhYmxlIFwiJXNcIiIsCiAJCQkJCQkgIHRnaW5mby0+dGdhcmdzLAog CQkJCQkJICB0Z2luZm8tPmRvYmoubmFtZSwKIAkJCQkJCSAgdGJpbmZvLT5kb2JqLm5hbWUp OwpAQCAtMTczNzYsNyArMTczNDcsNyBAQCBkdW1wUnVsZShBcmNoaXZlICpmb3V0LCBSdWxl SW5mbyAqcmluZm8pCiAKIAkJaWYgKFBRbnR1cGxlcyhyZXMpICE9IDEpCiAJCXsKLQkJCXdy aXRlX21zZyhOVUxMLCAicXVlcnkgdG8gZ2V0IHJ1bGUgXCIlc1wiIGZvciB0YWJsZSBcIiVz XCIgZmFpbGVkOiB3cm9uZyBudW1iZXIgb2Ygcm93cyByZXR1cm5lZFxuIiwKKwkJCXBnX2xv Z19lcnJvcigicXVlcnkgdG8gZ2V0IHJ1bGUgXCIlc1wiIGZvciB0YWJsZSBcIiVzXCIgZmFp bGVkOiB3cm9uZyBudW1iZXIgb2Ygcm93cyByZXR1cm5lZCIsCiAJCQkJCSAgcmluZm8tPmRv YmoubmFtZSwgdGJpbmZvLT5kb2JqLm5hbWUpOwogCQkJZXhpdF9uaWNlbHkoMSk7CiAJCX0K QEAgLTE3NTM5LDcgKzE3NTEwLDcgQEAgZ2V0RXh0ZW5zaW9uTWVtYmVyc2hpcChBcmNoaXZl ICpmb3V0LCBFeHRlbnNpb25JbmZvIGV4dGluZm9bXSwKIAkJaWYgKGV4dCA9PSBOVUxMKQog CQl7CiAJCQkvKiBzaG91bGRuJ3QgaGFwcGVuICovCi0JCQlmcHJpbnRmKHN0ZGVyciwgImNv dWxkIG5vdCBmaW5kIHJlZmVyZW5jZWQgZXh0ZW5zaW9uICV1XG4iLCBleHRJZCk7CisJCQlw Z19sb2dfd2FybmluZygiY291bGQgbm90IGZpbmQgcmVmZXJlbmNlZCBleHRlbnNpb24gJXUi LCBleHRJZCk7CiAJCQljb250aW51ZTsKIAkJfQogCkBAIC0xNzc1MSw4ICsxNzcyMiw3IEBA IGdldERlcGVuZGVuY2llcyhBcmNoaXZlICpmb3V0KQogCUR1bXBhYmxlT2JqZWN0ICpkb2Jq LAogCQkJICAgKnJlZmRvYmo7CiAKLQlpZiAoZ192ZXJib3NlKQotCQl3cml0ZV9tc2coTlVM TCwgInJlYWRpbmcgZGVwZW5kZW5jeSBkYXRhXG4iKTsKKwlwZ19sb2dfaW5mbygicmVhZGlu ZyBkZXBlbmRlbmN5IGRhdGEiKTsKIAogCXF1ZXJ5ID0gY3JlYXRlUFFFeHBCdWZmZXIoKTsK IApAQCAtMTc4MDcsNyArMTc3NzcsNyBAQCBnZXREZXBlbmRlbmNpZXMoQXJjaGl2ZSAqZm91 dCkKIAkJaWYgKGRvYmogPT0gTlVMTCkKIAkJewogI2lmZGVmIE5PVF9VU0VECi0JCQlmcHJp bnRmKHN0ZGVyciwgIm5vIHJlZmVyZW5jaW5nIG9iamVjdCAldSAldVxuIiwKKwkJCXBnX2xv Z193YXJuaW5nKCJubyByZWZlcmVuY2luZyBvYmplY3QgJXUgJXUiLAogCQkJCQlvYmpJZC50 YWJsZW9pZCwgb2JqSWQub2lkKTsKICNlbmRpZgogCQkJY29udGludWU7CkBAIC0xNzgxOCw3 ICsxNzc4OCw3IEBAIGdldERlcGVuZGVuY2llcyhBcmNoaXZlICpmb3V0KQogCQlpZiAocmVm ZG9iaiA9PSBOVUxMKQogCQl7CiAjaWZkZWYgTk9UX1VTRUQKLQkJCWZwcmludGYoc3RkZXJy LCAibm8gcmVmZXJlbmNlZCBvYmplY3QgJXUgJXVcbiIsCisJCQlwZ19sb2dfd2FybmluZygi bm8gcmVmZXJlbmNlZCBvYmplY3QgJXUgJXUiLAogCQkJCQlyZWZvYmpJZC50YWJsZW9pZCwg cmVmb2JqSWQub2lkKTsKICNlbmRpZgogCQkJY29udGludWU7CkBAIC0xODE4Myw1ICsxODE1 Myw1IEBAIGFwcGVuZFJlbG9wdGlvbnNBcnJheUFIKFBRRXhwQnVmZmVyIGJ1ZmZlciwgY29u c3QgY2hhciAqcmVsb3B0aW9ucywKIAlyZXMgPSBhcHBlbmRSZWxvcHRpb25zQXJyYXkoYnVm ZmVyLCByZWxvcHRpb25zLCBwcmVmaXgsIGZvdXQtPmVuY29kaW5nLAogCQkJCQkJCQlmb3V0 LT5zdGRfc3RyaW5ncyk7CiAJaWYgKCFyZXMpCi0JCXdyaXRlX21zZyhOVUxMLCAiV0FSTklO RzogY291bGQgbm90IHBhcnNlIHJlbG9wdGlvbnMgYXJyYXlcbiIpOworCQlwZ19sb2dfd2Fy bmluZygiY291bGQgbm90IHBhcnNlIHJlbG9wdGlvbnMgYXJyYXkiKTsKIH0KZGlmZiAtLWdp dCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmggYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVt cC5oCmluZGV4IDFkOTk3ZmEzNmYuLjFkOTAwYzk0OGUgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4v cGdfZHVtcC9wZ19kdW1wLmgKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaApAQCAt NjM3LDcgKzYzNyw2IEBAIHR5cGVkZWYgc3RydWN0IF9leHRlbnNpb25NZW1iZXJJZAogCiAv KiBnbG9iYWwgZGVjbHMgKi8KIGV4dGVybiBib29sIGZvcmNlX3F1b3RlczsJCS8qIGRvdWJs ZS1xdW90ZXMgZm9yIGlkZW50aWZpZXJzIGZsYWcgKi8KLWV4dGVybiBib29sIGdfdmVyYm9z ZTsJCQkvKiB2ZXJib3NlIGZsYWcgKi8KIAogLyogcGxhY2Vob2xkZXJzIGZvciBjb21tZW50 IHN0YXJ0aW5nIGFuZCBlbmRpbmcgZGVsaW1pdGVycyAqLwogZXh0ZXJuIGNoYXIgZ19jb21t ZW50X3N0YXJ0WzEwXTsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wX3Nv cnQuYyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wX3NvcnQuYwppbmRleCBhMWQzY2VkMzE4 Li42NzM1ZGUzMjQyIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcF9zb3J0 LmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXBfc29ydC5jCkBAIC0yMCw5ICsyMCw3 IEBACiAjaW5jbHVkZSAicGdfZHVtcC5oIgogCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19jbGFz c19kLmgiCi0KLS8qIHRyYW5zbGF0b3I6IHRoaXMgaXMgYSBtb2R1bGUgbmFtZSAqLwotc3Rh dGljIGNvbnN0IGNoYXIgKm1vZHVsZW5hbWUgPSBnZXR0ZXh0X25vb3AoInNvcnRlciIpOwor I2luY2x1ZGUgImZlX3V0aWxzL2xvZ2dpbmcuaCIKIAogLyoKICAqIFNvcnQgcHJpb3JpdHkg Zm9yIGRhdGFiYXNlIG9iamVjdCB0eXBlcy4KQEAgLTMyOCwxMyArMzI2LDEzIEBAIFRvcG9T b3J0KER1bXBhYmxlT2JqZWN0ICoqb2JqcywKIAkJb2JqID0gb2Jqc1tpXTsKIAkJaiA9IG9i ai0+ZHVtcElkOwogCQlpZiAoaiA8PSAwIHx8IGogPiBtYXhEdW1wSWQpCi0JCQlleGl0X2hv cnJpYmx5KG1vZHVsZW5hbWUsICJpbnZhbGlkIGR1bXBJZCAlZFxuIiwgaik7CisJCQlmYXRh bCgiaW52YWxpZCBkdW1wSWQgJWQiLCBqKTsKIAkJaWRNYXBbal0gPSBpOwogCQlmb3IgKGog PSAwOyBqIDwgb2JqLT5uRGVwczsgaisrKQogCQl7CiAJCQlrID0gb2JqLT5kZXBlbmRlbmNp ZXNbal07CiAJCQlpZiAoayA8PSAwIHx8IGsgPiBtYXhEdW1wSWQpCi0JCQkJZXhpdF9ob3Jy aWJseShtb2R1bGVuYW1lLCAiaW52YWxpZCBkZXBlbmRlbmN5ICVkXG4iLCBrKTsKKwkJCQlm YXRhbCgiaW52YWxpZCBkZXBlbmRlbmN5ICVkIiwgayk7CiAJCQliZWZvcmVDb25zdHJhaW50 c1trXSsrOwogCQl9CiAJfQpAQCAtNTY3LDcgKzU2NSw3IEBAIGZpbmREZXBlbmRlbmN5TG9v cHMoRHVtcGFibGVPYmplY3QgKipvYmpzLCBpbnQgbk9ianMsIGludCB0b3RPYmpzKQogCiAJ LyogV2UnZCBiZXR0ZXIgaGF2ZSBmaXhlZCBhdCBsZWFzdCBvbmUgbG9vcCAqLwogCWlmICgh Zml4ZWRsb29wKQotCQlleGl0X2hvcnJpYmx5KG1vZHVsZW5hbWUsICJjb3VsZCBub3QgaWRl bnRpZnkgZGVwZW5kZW5jeSBsb29wXG4iKTsKKwkJZmF0YWwoImNvdWxkIG5vdCBpZGVudGlm eSBkZXBlbmRlbmN5IGxvb3AiKTsKIAogCWZyZWUod29ya3NwYWNlKTsKIAlmcmVlKHNlYXJj aEZhaWxlZCk7CkBAIC0xMTE0LDEzICsxMTEyLDEzIEBAIHJlcGFpckRlcGVuZGVuY3lMb29w KER1bXBhYmxlT2JqZWN0ICoqbG9vcCwKIAl9CiAJaWYgKGkgPj0gbkxvb3ApCiAJewotCQl3 cml0ZV9tc2coTlVMTCwgbmdldHRleHQoIk5PVElDRTogdGhlcmUgYXJlIGNpcmN1bGFyIGZv cmVpZ24ta2V5IGNvbnN0cmFpbnRzIG9uIHRoaXMgdGFibGU6XG4iLAotCQkJCQkJCQkgIk5P VElDRTogdGhlcmUgYXJlIGNpcmN1bGFyIGZvcmVpZ24ta2V5IGNvbnN0cmFpbnRzIGFtb25n IHRoZXNlIHRhYmxlczpcbiIsCi0JCQkJCQkJCSBuTG9vcCkpOworCQlwZ19sb2dfd2Fybmlu ZyhuZ2V0dGV4dCgidGhlcmUgYXJlIGNpcmN1bGFyIGZvcmVpZ24ta2V5IGNvbnN0cmFpbnRz IG9uIHRoaXMgdGFibGU6IiwKKwkJCQkJCQkJInRoZXJlIGFyZSBjaXJjdWxhciBmb3JlaWdu LWtleSBjb25zdHJhaW50cyBhbW9uZyB0aGVzZSB0YWJsZXM6IiwKKwkJCQkJCQkJbkxvb3Ap KTsKIAkJZm9yIChpID0gMDsgaSA8IG5Mb29wOyBpKyspCi0JCQl3cml0ZV9tc2coTlVMTCwg IiAgJXNcbiIsIGxvb3BbaV0tPm5hbWUpOwotCQl3cml0ZV9tc2coTlVMTCwgIllvdSBtaWdo dCBub3QgYmUgYWJsZSB0byByZXN0b3JlIHRoZSBkdW1wIHdpdGhvdXQgdXNpbmcgLS1kaXNh YmxlLXRyaWdnZXJzIG9yIHRlbXBvcmFyaWx5IGRyb3BwaW5nIHRoZSBjb25zdHJhaW50cy5c biIpOwotCQl3cml0ZV9tc2coTlVMTCwgIkNvbnNpZGVyIHVzaW5nIGEgZnVsbCBkdW1wIGlu c3RlYWQgb2YgYSAtLWRhdGEtb25seSBkdW1wIHRvIGF2b2lkIHRoaXMgcHJvYmxlbS5cbiIp OworCQkJcGdfbG9nX3dhcm5pbmcoIiAgJXMiLCBsb29wW2ldLT5uYW1lKTsKKwkJcGdfbG9n X3dhcm5pbmcoIllvdSBtaWdodCBub3QgYmUgYWJsZSB0byByZXN0b3JlIHRoZSBkdW1wIHdp dGhvdXQgdXNpbmcgLS1kaXNhYmxlLXRyaWdnZXJzIG9yIHRlbXBvcmFyaWx5IGRyb3BwaW5n IHRoZSBjb25zdHJhaW50cy4iKTsKKwkJcGdfbG9nX3dhcm5pbmcoIkNvbnNpZGVyIHVzaW5n IGEgZnVsbCBkdW1wIGluc3RlYWQgb2YgYSAtLWRhdGEtb25seSBkdW1wIHRvIGF2b2lkIHRo aXMgcHJvYmxlbS4iKTsKIAkJaWYgKG5Mb29wID4gMSkKIAkJCXJlbW92ZU9iamVjdERlcGVu ZGVuY3kobG9vcFswXSwgbG9vcFsxXS0+ZHVtcElkKTsKIAkJZWxzZQkJCQkJLyogbXVzdCBi ZSBhIHNlbGYtZGVwZW5kZW5jeSAqLwpAQCAtMTEzMiwxMyArMTEzMCwxMyBAQCByZXBhaXJE ZXBlbmRlbmN5TG9vcChEdW1wYWJsZU9iamVjdCAqKmxvb3AsCiAJICogSWYgd2UgY2FuJ3Qg ZmluZCBhIHByaW5jaXBsZWQgd2F5IHRvIGJyZWFrIHRoZSBsb29wLCBjb21wbGFpbiBhbmQg YnJlYWsKIAkgKiBpdCBpbiBhbiBhcmJpdHJhcnkgZmFzaGlvbi4KIAkgKi8KLQl3cml0ZV9t c2cobW9kdWxlbmFtZSwgIldBUk5JTkc6IGNvdWxkIG5vdCByZXNvbHZlIGRlcGVuZGVuY3kg bG9vcCBhbW9uZyB0aGVzZSBpdGVtczpcbiIpOworCXBnX2xvZ193YXJuaW5nKCJjb3VsZCBu b3QgcmVzb2x2ZSBkZXBlbmRlbmN5IGxvb3AgYW1vbmcgdGhlc2UgaXRlbXM6Iik7CiAJZm9y IChpID0gMDsgaSA8IG5Mb29wOyBpKyspCiAJewogCQljaGFyCQlidWZbMTAyNF07CiAKIAkJ ZGVzY3JpYmVEdW1wYWJsZU9iamVjdChsb29wW2ldLCBidWYsIHNpemVvZihidWYpKTsKLQkJ d3JpdGVfbXNnKG1vZHVsZW5hbWUsICIgICVzXG4iLCBidWYpOworCQlwZ19sb2dfd2Fybmlu ZygiICAlcyIsIGJ1Zik7CiAJfQogCiAJaWYgKG5Mb29wID4gMSkKZGlmZiAtLWdpdCBhL3Ny Yy9iaW4vcGdfZHVtcC9wZ19kdW1wYWxsLmMgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcGFs bC5jCmluZGV4IDUxNzY2MjY0NzYuLjFlYmYxYzVhZDUgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4v cGdfZHVtcC9wZ19kdW1wYWxsLmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXBhbGwu YwpAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUgInBnX2JhY2t1cC5oIgogI2luY2x1ZGUg ImNvbW1vbi9maWxlX3V0aWxzLmgiCiAjaW5jbHVkZSAiZmVfdXRpbHMvY29ubmVjdC5oIgor I2luY2x1ZGUgImZlX3V0aWxzL2xvZ2dpbmcuaCIKICNpbmNsdWRlICJmZV91dGlscy9zdHJp bmdfdXRpbHMuaCIKIAogLyogdmVyc2lvbiBzdHJpbmcgd2UgZXhwZWN0IGJhY2sgZnJvbSBw Z19kdW1wICovCkBAIC0xNjIsNyArMTYzLDggQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJn dltdKQogCWludAkJCW9wdGluZGV4OwogCiAJc2V0X3BnbG9jYWxlX3Bnc2VydmljZShhcmd2 WzBdLCBQR19URVhURE9NQUlOKCJwZ19kdW1wIikpOwotCisJcGdfbG9nZ2luZ19pbml0KGFy Z3ZbMF0pOworCXBnX2xvZ2dpbmdfc2V0X2xldmVsKFBHX0xPR19XQVJOSU5HKTsKIAlwcm9n bmFtZSA9IGdldF9wcm9nbmFtZShhcmd2WzBdKTsKIAogCWlmIChhcmdjID4gMSkKQEAgLTE4 OCwxOCArMTkwLDE1IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkJCXN0cmxj cHkoZnVsbF9wYXRoLCBwcm9nbmFtZSwgc2l6ZW9mKGZ1bGxfcGF0aCkpOwogCiAJCWlmIChy ZXQgPT0gLTEpCi0JCQlmcHJpbnRmKHN0ZGVyciwKLQkJCQkJXygiVGhlIHByb2dyYW0gXCJw Z19kdW1wXCIgaXMgbmVlZGVkIGJ5ICVzICIKLQkJCQkJICAiYnV0IHdhcyBub3QgZm91bmQg aW4gdGhlXG4iCi0JCQkJCSAgInNhbWUgZGlyZWN0b3J5IGFzIFwiJXNcIi5cbiIKLQkJCQkJ ICAiQ2hlY2sgeW91ciBpbnN0YWxsYXRpb24uXG4iKSwKLQkJCQkJcHJvZ25hbWUsIGZ1bGxf cGF0aCk7CisJCQlwZ19sb2dfZXJyb3IoIlRoZSBwcm9ncmFtIFwicGdfZHVtcFwiIGlzIG5l ZWRlZCBieSAlcyBidXQgd2FzIG5vdCBmb3VuZCBpbiB0aGVcbiIKKwkJCQkJCSAic2FtZSBk aXJlY3RvcnkgYXMgXCIlc1wiLlxuIgorCQkJCQkJICJDaGVjayB5b3VyIGluc3RhbGxhdGlv bi4iLAorCQkJCQkJIHByb2duYW1lLCBmdWxsX3BhdGgpOwogCQllbHNlCi0JCQlmcHJpbnRm KHN0ZGVyciwKLQkJCQkJXygiVGhlIHByb2dyYW0gXCJwZ19kdW1wXCIgd2FzIGZvdW5kIGJ5 IFwiJXNcIlxuIgotCQkJCQkgICJidXQgd2FzIG5vdCB0aGUgc2FtZSB2ZXJzaW9uIGFzICVz LlxuIgotCQkJCQkgICJDaGVjayB5b3VyIGluc3RhbGxhdGlvbi5cbiIpLAotCQkJCQlmdWxs X3BhdGgsIHByb2duYW1lKTsKKwkJCXBnX2xvZ19lcnJvcigiVGhlIHByb2dyYW0gXCJwZ19k dW1wXCIgd2FzIGZvdW5kIGJ5IFwiJXNcIlxuIgorCQkJCQkJICJidXQgd2FzIG5vdCB0aGUg c2FtZSB2ZXJzaW9uIGFzICVzLlxuIgorCQkJCQkJICJDaGVjayB5b3VyIGluc3RhbGxhdGlv bi4iLAorCQkJCQkJIGZ1bGxfcGF0aCwgcHJvZ25hbWUpOwogCQlleGl0X25pY2VseSgxKTsK IAl9CiAKQEAgLTI4MSw2ICsyODAsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10p CiAKIAkJCWNhc2UgJ3YnOgogCQkJCXZlcmJvc2UgPSB0cnVlOworCQkJCXBnX2xvZ2dpbmdf c2V0X2xldmVsKFBHX0xPR19JTkZPKTsKIAkJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihwZ2R1 bXBvcHRzLCAiIC12Iik7CiAJCQkJYnJlYWs7CiAKQEAgLTMyNyw4ICszMjcsOCBAQCBtYWlu KGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJLyogQ29tcGxhaW4gaWYgYW55IGFyZ3VtZW50 cyByZW1haW4gKi8KIAlpZiAob3B0aW5kIDwgYXJnYykKIAl7Ci0JCWZwcmludGYoc3RkZXJy LCBfKCIlczogdG9vIG1hbnkgY29tbWFuZC1saW5lIGFyZ3VtZW50cyAoZmlyc3QgaXMgXCIl c1wiKVxuIiksCi0JCQkJcHJvZ25hbWUsIGFyZ3Zbb3B0aW5kXSk7CisJCXBnX2xvZ19lcnJv cigidG9vIG1hbnkgY29tbWFuZC1saW5lIGFyZ3VtZW50cyAoZmlyc3QgaXMgXCIlc1wiKSIs CisJCQkJCSBhcmd2W29wdGluZF0pOwogCQlmcHJpbnRmKHN0ZGVyciwgXygiVHJ5IFwiJXMg LS1oZWxwXCIgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4iKSwKIAkJCQlwcm9nbmFtZSk7CiAJ CWV4aXRfbmljZWx5KDEpOwpAQCAtMzM3LDggKzMzNyw3IEBAIG1haW4oaW50IGFyZ2MsIGNo YXIgKmFyZ3ZbXSkKIAkvKiBNYWtlIHN1cmUgdGhlIHVzZXIgaGFzbid0IHNwZWNpZmllZCBh IG1peCBvZiBnbG9iYWxzLW9ubHkgb3B0aW9ucyAqLwogCWlmIChnbG9iYWxzX29ubHkgJiYg cm9sZXNfb25seSkKIAl7Ci0JCWZwcmludGYoc3RkZXJyLCBfKCIlczogb3B0aW9ucyAtZy8t LWdsb2JhbHMtb25seSBhbmQgLXIvLS1yb2xlcy1vbmx5IGNhbm5vdCBiZSB1c2VkIHRvZ2V0 aGVyXG4iKSwKLQkJCQlwcm9nbmFtZSk7CisJCXBnX2xvZ19lcnJvcigib3B0aW9ucyAtZy8t LWdsb2JhbHMtb25seSBhbmQgLXIvLS1yb2xlcy1vbmx5IGNhbm5vdCBiZSB1c2VkIHRvZ2V0 aGVyIik7CiAJCWZwcmludGYoc3RkZXJyLCBfKCJUcnkgXCIlcyAtLWhlbHBcIiBmb3IgbW9y ZSBpbmZvcm1hdGlvbi5cbiIpLAogCQkJCXByb2duYW1lKTsKIAkJZXhpdF9uaWNlbHkoMSk7 CkBAIC0zNDYsOCArMzQ1LDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCiAJ aWYgKGdsb2JhbHNfb25seSAmJiB0YWJsZXNwYWNlc19vbmx5KQogCXsKLQkJZnByaW50Zihz dGRlcnIsIF8oIiVzOiBvcHRpb25zIC1nLy0tZ2xvYmFscy1vbmx5IGFuZCAtdC8tLXRhYmxl c3BhY2VzLW9ubHkgY2Fubm90IGJlIHVzZWQgdG9nZXRoZXJcbiIpLAotCQkJCXByb2duYW1l KTsKKwkJcGdfbG9nX2Vycm9yKCJvcHRpb25zIC1nLy0tZ2xvYmFscy1vbmx5IGFuZCAtdC8t LXRhYmxlc3BhY2VzLW9ubHkgY2Fubm90IGJlIHVzZWQgdG9nZXRoZXIiKTsKIAkJZnByaW50 ZihzdGRlcnIsIF8oIlRyeSBcIiVzIC0taGVscFwiIGZvciBtb3JlIGluZm9ybWF0aW9uLlxu IiksCiAJCQkJcHJvZ25hbWUpOwogCQlleGl0X25pY2VseSgxKTsKQEAgLTM1NSwxNSArMzUz LDEzIEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAogCWlmIChpZl9leGlzdHMg JiYgIW91dHB1dF9jbGVhbikKIAl7Ci0JCWZwcmludGYoc3RkZXJyLCBfKCIlczogb3B0aW9u IC0taWYtZXhpc3RzIHJlcXVpcmVzIG9wdGlvbiAtYy8tLWNsZWFuXG4iKSwKLQkJCQlwcm9n bmFtZSk7CisJCXBnX2xvZ19lcnJvcigib3B0aW9uIC0taWYtZXhpc3RzIHJlcXVpcmVzIG9w dGlvbiAtYy8tLWNsZWFuIik7CiAJCWV4aXRfbmljZWx5KDEpOwogCX0KIAogCWlmIChyb2xl c19vbmx5ICYmIHRhYmxlc3BhY2VzX29ubHkpCiAJewotCQlmcHJpbnRmKHN0ZGVyciwgXygi JXM6IG9wdGlvbnMgLXIvLS1yb2xlcy1vbmx5IGFuZCAtdC8tLXRhYmxlc3BhY2VzLW9ubHkg Y2Fubm90IGJlIHVzZWQgdG9nZXRoZXJcbiIpLAotCQkJCXByb2duYW1lKTsKKwkJcGdfbG9n X2Vycm9yKCJvcHRpb25zIC1yLy0tcm9sZXMtb25seSBhbmQgLXQvLS10YWJsZXNwYWNlcy1v bmx5IGNhbm5vdCBiZSB1c2VkIHRvZ2V0aGVyIik7CiAJCWZwcmludGYoc3RkZXJyLCBfKCJU cnkgXCIlcyAtLWhlbHBcIiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiIpLAogCQkJCXByb2du YW1lKTsKIAkJZXhpdF9uaWNlbHkoMSk7CkBAIC00MjQsOCArNDIwLDcgQEAgbWFpbihpbnQg YXJnYywgY2hhciAqYXJndltdKQogCiAJCWlmICghY29ubikKIAkJewotCQkJZnByaW50Zihz dGRlcnIsIF8oIiVzOiBjb3VsZCBub3QgY29ubmVjdCB0byBkYXRhYmFzZSBcIiVzXCJcbiIp LAotCQkJCQlwcm9nbmFtZSwgcGdkYik7CisJCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBj b25uZWN0IHRvIGRhdGFiYXNlIFwiJXNcIiIsIHBnZGIpOwogCQkJZXhpdF9uaWNlbHkoMSk7 CiAJCX0KIAl9CkBAIC00MzksOSArNDM0LDggQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJn dltdKQogCiAJCWlmICghY29ubikKIAkJewotCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBj b3VsZCBub3QgY29ubmVjdCB0byBkYXRhYmFzZXMgXCJwb3N0Z3Jlc1wiIG9yIFwidGVtcGxh dGUxXCJcbiIKLQkJCQkJCQkgICJQbGVhc2Ugc3BlY2lmeSBhbiBhbHRlcm5hdGl2ZSBkYXRh YmFzZS5cbiIpLAotCQkJCQlwcm9nbmFtZSk7CisJCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5v dCBjb25uZWN0IHRvIGRhdGFiYXNlcyBcInBvc3RncmVzXCIgb3IgXCJ0ZW1wbGF0ZTFcIlxu IgorCQkJCQkJICJQbGVhc2Ugc3BlY2lmeSBhbiBhbHRlcm5hdGl2ZSBkYXRhYmFzZS4iKTsK IAkJCWZwcmludGYoc3RkZXJyLCBfKCJUcnkgXCIlcyAtLWhlbHBcIiBmb3IgbW9yZSBpbmZv cm1hdGlvbi5cbiIpLAogCQkJCQlwcm9nbmFtZSk7CiAJCQlleGl0X25pY2VseSgxKTsKQEAg LTQ1Niw4ICs0NTAsOCBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJCU9QRiA9 IGZvcGVuKGZpbGVuYW1lLCBQR19CSU5BUllfVyk7CiAJCWlmICghT1BGKQogCQl7Ci0JCQlm cHJpbnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCBvcGVuIHRoZSBvdXRwdXQgZmlsZSBc IiVzXCI6ICVzXG4iKSwKLQkJCQkJcHJvZ25hbWUsIGZpbGVuYW1lLCBzdHJlcnJvcihlcnJu bykpOworCQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3Qgb3BlbiB0aGUgb3V0cHV0IGZpbGUg XCIlc1wiOiAlbSIsCisJCQkJCQkgZmlsZW5hbWUpOwogCQkJZXhpdF9uaWNlbHkoMSk7CiAJ CX0KIAl9CkBAIC00NzEsOCArNDY1LDggQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltd KQogCXsKIAkJaWYgKFBRc2V0Q2xpZW50RW5jb2RpbmcoY29ubiwgZHVtcGVuY29kaW5nKSA8 IDApCiAJCXsKLQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczogaW52YWxpZCBjbGllbnQgZW5j b2RpbmcgXCIlc1wiIHNwZWNpZmllZFxuIiksCi0JCQkJCXByb2duYW1lLCBkdW1wZW5jb2Rp bmcpOworCQkJcGdfbG9nX2Vycm9yKCJpbnZhbGlkIGNsaWVudCBlbmNvZGluZyBcIiVzXCIg c3BlY2lmaWVkIiwKKwkJCQkJCSBkdW1wZW5jb2RpbmcpOwogCQkJZXhpdF9uaWNlbHkoMSk7 CiAJCX0KIAl9CkBAIC01NzgsNyArNTcyLDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJn dltdKQogCiAJCS8qIHN5bmMgdGhlIHJlc3VsdGluZyBmaWxlLCBlcnJvcnMgYXJlIG5vdCBm YXRhbCAqLwogCQlpZiAoZG9zeW5jKQotCQkJKHZvaWQpIGZzeW5jX2ZuYW1lKGZpbGVuYW1l LCBmYWxzZSwgcHJvZ25hbWUpOworCQkJKHZvaWQpIGZzeW5jX2ZuYW1lKGZpbGVuYW1lLCBm YWxzZSk7CiAJfQogCiAJZXhpdF9uaWNlbHkoMCk7CkBAIC04NDYsOCArODQwLDggQEAgZHVt cFJvbGVzKFBHY29ubiAqY29ubikKIAogCQlpZiAoc3RybmNtcChyb2xlbmFtZSwgInBnXyIs IDMpID09IDApCiAJCXsKLQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczogcm9sZSBuYW1lIHN0 YXJ0aW5nIHdpdGggXCJwZ19cIiBza2lwcGVkICglcylcbiIpLAotCQkJCQlwcm9nbmFtZSwg cm9sZW5hbWUpOworCQkJcGdfbG9nX3dhcm5pbmcoInJvbGUgbmFtZSBzdGFydGluZyB3aXRo IFwicGdfXCIgc2tpcHBlZCAoJXMpIiwKKwkJCQkJCSAgIHJvbGVuYW1lKTsKIAkJCWNvbnRp bnVlOwogCQl9CiAKQEAgLTEyMjgsOCArMTIyMiw4IEBAIGR1bXBUYWJsZXNwYWNlcyhQR2Nv bm4gKmNvbm4pCiAJCQkJCQkJICBzcGNhY2wsIHJzcGNhY2wsCiAJCQkJCQkJICBzcGNvd25l ciwgIiIsIHNlcnZlcl92ZXJzaW9uLCBidWYpKQogCQl7Ci0JCQlmcHJpbnRmKHN0ZGVyciwg XygiJXM6IGNvdWxkIG5vdCBwYXJzZSBBQ0wgbGlzdCAoJXMpIGZvciB0YWJsZXNwYWNlIFwi JXNcIlxuIiksCi0JCQkJCXByb2duYW1lLCBzcGNhY2wsIHNwY25hbWUpOworCQkJcGdfbG9n X2Vycm9yKCJjb3VsZCBub3QgcGFyc2UgQUNMIGxpc3QgKCVzKSBmb3IgdGFibGVzcGFjZSBc IiVzXCIiLAorCQkJCQkJIHNwY2FjbCwgc3BjbmFtZSk7CiAJCQlQUWZpbmlzaChjb25uKTsK IAkJCWV4aXRfbmljZWx5KDEpOwogCQl9CkBAIC0xMzg4LDggKzEzODIsNyBAQCBkdW1wRGF0 YWJhc2VzKFBHY29ubiAqY29ubikKIAkJaWYgKHN0cmNtcChkYm5hbWUsICJ0ZW1wbGF0ZTAi KSA9PSAwKQogCQkJY29udGludWU7CiAKLQkJaWYgKHZlcmJvc2UpCi0JCQlmcHJpbnRmKHN0 ZGVyciwgXygiJXM6IGR1bXBpbmcgZGF0YWJhc2UgXCIlc1wiLi4uXG4iKSwgcHJvZ25hbWUs IGRibmFtZSk7CisJCXBnX2xvZ19pbmZvKCJkdW1waW5nIGRhdGFiYXNlIFwiJXNcIi4uLiIs IGRibmFtZSk7CiAKIAkJLyoKIAkJICogV2UgYXNzdW1lIHRoYXQgInRlbXBsYXRlMSIgYW5k ICJwb3N0Z3JlcyIgYWxyZWFkeSBleGlzdCBpbiB0aGUKQEAgLTE0MTksNyArMTQxMiw3IEBA IGR1bXBEYXRhYmFzZXMoUEdjb25uICpjb25uKQogCQlyZXQgPSBydW5QZ0R1bXAoZGJuYW1l LCBjcmVhdGVfb3B0cyk7CiAJCWlmIChyZXQgIT0gMCkKIAkJewotCQkJZnByaW50ZihzdGRl cnIsIF8oIiVzOiBwZ19kdW1wIGZhaWxlZCBvbiBkYXRhYmFzZSBcIiVzXCIsIGV4aXRpbmdc biIpLCBwcm9nbmFtZSwgZGJuYW1lKTsKKwkJCXBnX2xvZ19lcnJvcigicGdfZHVtcCBmYWls ZWQgb24gZGF0YWJhc2UgXCIlc1wiLCBleGl0aW5nIiwgZGJuYW1lKTsKIAkJCWV4aXRfbmlj ZWx5KDEpOwogCQl9CiAKQEAgLTE0MjgsOCArMTQyMSw4IEBAIGR1bXBEYXRhYmFzZXMoUEdj b25uICpjb25uKQogCQkJT1BGID0gZm9wZW4oZmlsZW5hbWUsIFBHX0JJTkFSWV9BKTsKIAkJ CWlmICghT1BGKQogCQkJewotCQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczogY291bGQgbm90 IHJlLW9wZW4gdGhlIG91dHB1dCBmaWxlIFwiJXNcIjogJXNcbiIpLAotCQkJCQkJcHJvZ25h bWUsIGZpbGVuYW1lLCBzdHJlcnJvcihlcnJubykpOworCQkJCXBnX2xvZ19lcnJvcigiY291 bGQgbm90IHJlLW9wZW4gdGhlIG91dHB1dCBmaWxlIFwiJXNcIjogJW0iLAorCQkJCQkJCSBm aWxlbmFtZSk7CiAJCQkJZXhpdF9uaWNlbHkoMSk7CiAJCQl9CiAJCX0KQEAgLTE0NzIsOCAr MTQ2NSw3IEBAIHJ1blBnRHVtcChjb25zdCBjaGFyICpkYm5hbWUsIGNvbnN0IGNoYXIgKmNy ZWF0ZV9vcHRzKQogCiAJYXBwZW5kU2hlbGxTdHJpbmcoY21kLCBjb25uc3RyYnVmLT5kYXRh KTsKIAotCWlmICh2ZXJib3NlKQotCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IHJ1bm5pbmcg XCIlc1wiXG4iKSwgcHJvZ25hbWUsIGNtZC0+ZGF0YSk7CisJcGdfbG9nX2luZm8oInJ1bm5p bmcgXCIlc1wiIiwgY21kLT5kYXRhKTsKIAogCWZmbHVzaChzdGRvdXQpOwogCWZmbHVzaChz dGRlcnIpOwpAQCAtMTU3Myw3ICsxNTY1LDcgQEAgY29ubmVjdERhdGFiYXNlKGNvbnN0IGNo YXIgKmRibmFtZSwgY29uc3QgY2hhciAqY29ubmVjdGlvbl9zdHJpbmcsCiAJCQljb25uX29w dHMgPSBQUWNvbm5pbmZvUGFyc2UoY29ubmVjdGlvbl9zdHJpbmcsICZlcnJfbXNnKTsKIAkJ CWlmIChjb25uX29wdHMgPT0gTlVMTCkKIAkJCXsKLQkJCQlmcHJpbnRmKHN0ZGVyciwgIiVz OiAlcyIsIHByb2duYW1lLCBlcnJfbXNnKTsKKwkJCQlwZ19sb2dfZXJyb3IoIiVzIiwgZXJy X21zZyk7CiAJCQkJZXhpdF9uaWNlbHkoMSk7CiAJCQl9CiAKQEAgLTE2NDMsOCArMTYzNSw3 IEBAIGNvbm5lY3REYXRhYmFzZShjb25zdCBjaGFyICpkYm5hbWUsIGNvbnN0IGNoYXIgKmNv bm5lY3Rpb25fc3RyaW5nLAogCiAJCWlmICghY29ubikKIAkJewotCQkJZnByaW50ZihzdGRl cnIsIF8oIiVzOiBjb3VsZCBub3QgY29ubmVjdCB0byBkYXRhYmFzZSBcIiVzXCJcbiIpLAot CQkJCQlwcm9nbmFtZSwgZGJuYW1lKTsKKwkJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IGNv bm5lY3QgdG8gZGF0YWJhc2UgXCIlc1wiIiwgZGJuYW1lKTsKIAkJCWV4aXRfbmljZWx5KDEp OwogCQl9CiAKQEAgLTE2NjUsOSArMTY1Niw4IEBAIGNvbm5lY3REYXRhYmFzZShjb25zdCBj aGFyICpkYm5hbWUsIGNvbnN0IGNoYXIgKmNvbm5lY3Rpb25fc3RyaW5nLAogCXsKIAkJaWYg KGZhaWxfb25fZXJyb3IpCiAJCXsKLQkJCWZwcmludGYoc3RkZXJyLAotCQkJCQlfKCIlczog Y291bGQgbm90IGNvbm5lY3QgdG8gZGF0YWJhc2UgXCIlc1wiOiAlcyIpLAotCQkJCQlwcm9n bmFtZSwgZGJuYW1lLCBQUWVycm9yTWVzc2FnZShjb25uKSk7CisJCQlwZ19sb2dfZXJyb3Io ImNvdWxkIG5vdCBjb25uZWN0IHRvIGRhdGFiYXNlIFwiJXNcIjogJXMiLAorCQkJCQkJIGRi bmFtZSwgUFFlcnJvck1lc3NhZ2UoY29ubikpOwogCQkJZXhpdF9uaWNlbHkoMSk7CiAJCX0K IAkJZWxzZQpAQCAtMTY5NiwxNCArMTY4NiwxNCBAQCBjb25uZWN0RGF0YWJhc2UoY29uc3Qg Y2hhciAqZGJuYW1lLCBjb25zdCBjaGFyICpjb25uZWN0aW9uX3N0cmluZywKIAlyZW1vdGV2 ZXJzaW9uX3N0ciA9IFBRcGFyYW1ldGVyU3RhdHVzKGNvbm4sICJzZXJ2ZXJfdmVyc2lvbiIp OwogCWlmICghcmVtb3RldmVyc2lvbl9zdHIpCiAJewotCQlmcHJpbnRmKHN0ZGVyciwgXygi JXM6IGNvdWxkIG5vdCBnZXQgc2VydmVyIHZlcnNpb25cbiIpLCBwcm9nbmFtZSk7CisJCXBn X2xvZ19lcnJvcigiY291bGQgbm90IGdldCBzZXJ2ZXIgdmVyc2lvbiIpOwogCQlleGl0X25p Y2VseSgxKTsKIAl9CiAJc2VydmVyX3ZlcnNpb24gPSBQUXNlcnZlclZlcnNpb24oY29ubik7 CiAJaWYgKHNlcnZlcl92ZXJzaW9uID09IDApCiAJewotCQlmcHJpbnRmKHN0ZGVyciwgXygi JXM6IGNvdWxkIG5vdCBwYXJzZSBzZXJ2ZXIgdmVyc2lvbiBcIiVzXCJcbiIpLAotCQkJCXBy b2duYW1lLCByZW1vdGV2ZXJzaW9uX3N0cik7CisJCXBnX2xvZ19lcnJvcigiY291bGQgbm90 IHBhcnNlIHNlcnZlciB2ZXJzaW9uIFwiJXNcIiIsCisJCQkJCSByZW1vdGV2ZXJzaW9uX3N0 cik7CiAJCWV4aXRfbmljZWx5KDEpOwogCX0KIApAQCAtMTcxNyw5ICsxNzA3LDkgQEAgY29u bmVjdERhdGFiYXNlKGNvbnN0IGNoYXIgKmRibmFtZSwgY29uc3QgY2hhciAqY29ubmVjdGlv bl9zdHJpbmcsCiAJCSYmIChzZXJ2ZXJfdmVyc2lvbiA8IDgwMDAwIHx8CiAJCQkoc2VydmVy X3ZlcnNpb24gLyAxMDApID4gKG15X3ZlcnNpb24gLyAxMDApKSkKIAl7Ci0JCWZwcmludGYo c3RkZXJyLCBfKCJzZXJ2ZXIgdmVyc2lvbjogJXM7ICVzIHZlcnNpb246ICVzXG4iKSwKLQkJ CQlyZW1vdGV2ZXJzaW9uX3N0ciwgcHJvZ25hbWUsIFBHX1ZFUlNJT04pOwotCQlmcHJpbnRm KHN0ZGVyciwgXygiYWJvcnRpbmcgYmVjYXVzZSBvZiBzZXJ2ZXIgdmVyc2lvbiBtaXNtYXRj aFxuIikpOworCQlwZ19sb2dfZXJyb3IoInNlcnZlciB2ZXJzaW9uOiAlczsgJXMgdmVyc2lv bjogJXMiLAorCQkJCQkgcmVtb3RldmVyc2lvbl9zdHIsIHByb2duYW1lLCBQR19WRVJTSU9O KTsKKwkJcGdfbG9nX2Vycm9yKCJhYm9ydGluZyBiZWNhdXNlIG9mIHNlcnZlciB2ZXJzaW9u IG1pc21hdGNoIik7CiAJCWV4aXRfbmljZWx5KDEpOwogCX0KIApAQCAtMTc3NCwxNyArMTc2 NCwxNCBAQCBleGVjdXRlUXVlcnkoUEdjb25uICpjb25uLCBjb25zdCBjaGFyICpxdWVyeSkK IHsKIAlQR3Jlc3VsdCAgICpyZXM7CiAKLQlpZiAodmVyYm9zZSkKLQkJZnByaW50ZihzdGRl cnIsIF8oIiVzOiBleGVjdXRpbmcgJXNcbiIpLCBwcm9nbmFtZSwgcXVlcnkpOworCXBnX2xv Z19pbmZvKCJleGVjdXRpbmcgJXMiLCBxdWVyeSk7CiAKIAlyZXMgPSBQUWV4ZWMoY29ubiwg cXVlcnkpOwogCWlmICghcmVzIHx8CiAJCVBRcmVzdWx0U3RhdHVzKHJlcykgIT0gUEdSRVNf VFVQTEVTX09LKQogCXsKLQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBxdWVyeSBmYWlsZWQ6 ICVzIiksCi0JCQkJcHJvZ25hbWUsIFBRZXJyb3JNZXNzYWdlKGNvbm4pKTsKLQkJZnByaW50 ZihzdGRlcnIsIF8oIiVzOiBxdWVyeSB3YXM6ICVzXG4iKSwKLQkJCQlwcm9nbmFtZSwgcXVl cnkpOworCQlwZ19sb2dfZXJyb3IoInF1ZXJ5IGZhaWxlZDogJXMiLCBQUWVycm9yTWVzc2Fn ZShjb25uKSk7CisJCXBnX2xvZ19lcnJvcigicXVlcnkgd2FzOiAlcyIsIHF1ZXJ5KTsKIAkJ UFFmaW5pc2goY29ubik7CiAJCWV4aXRfbmljZWx5KDEpOwogCX0KQEAgLTE4MDAsMTcgKzE3 ODcsMTQgQEAgZXhlY3V0ZUNvbW1hbmQoUEdjb25uICpjb25uLCBjb25zdCBjaGFyICpxdWVy eSkKIHsKIAlQR3Jlc3VsdCAgICpyZXM7CiAKLQlpZiAodmVyYm9zZSkKLQkJZnByaW50Zihz dGRlcnIsIF8oIiVzOiBleGVjdXRpbmcgJXNcbiIpLCBwcm9nbmFtZSwgcXVlcnkpOworCXBn X2xvZ19pbmZvKCJleGVjdXRpbmcgJXMiLCBxdWVyeSk7CiAKIAlyZXMgPSBQUWV4ZWMoY29u biwgcXVlcnkpOwogCWlmICghcmVzIHx8CiAJCVBRcmVzdWx0U3RhdHVzKHJlcykgIT0gUEdS RVNfQ09NTUFORF9PSykKIAl7Ci0JCWZwcmludGYoc3RkZXJyLCBfKCIlczogcXVlcnkgZmFp bGVkOiAlcyIpLAotCQkJCXByb2duYW1lLCBQUWVycm9yTWVzc2FnZShjb25uKSk7Ci0JCWZw cmludGYoc3RkZXJyLCBfKCIlczogcXVlcnkgd2FzOiAlc1xuIiksCi0JCQkJcHJvZ25hbWUs IHF1ZXJ5KTsKKwkJcGdfbG9nX2Vycm9yKCJxdWVyeSBmYWlsZWQ6ICVzIiwgUFFlcnJvck1l c3NhZ2UoY29ubikpOworCQlwZ19sb2dfZXJyb3IoInF1ZXJ5IHdhczogJXMiLCBxdWVyeSk7 CiAJCVBRZmluaXNoKGNvbm4pOwogCQlleGl0X25pY2VseSgxKTsKIAl9CmRpZmYgLS1naXQg YS9zcmMvYmluL3BnX2R1bXAvcGdfcmVzdG9yZS5jIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX3Jl c3RvcmUuYwppbmRleCA0NDAxMmZmNDRkLi45NmMxZDQxZDAxIDEwMDY0NAotLS0gYS9zcmMv YmluL3BnX2R1bXAvcGdfcmVzdG9yZS5jCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19yZXN0 b3JlLmMKQEAgLTUxLDYgKzUxLDggQEAKICNpbmNsdWRlICJwYXJhbGxlbC5oIgogI2luY2x1 ZGUgInBnX2JhY2t1cF91dGlscy5oIgogCisjaW5jbHVkZSAiZmVfdXRpbHMvbG9nZ2luZy5o IgorCiAKIHN0YXRpYyB2b2lkIHVzYWdlKGNvbnN0IGNoYXIgKnByb2duYW1lKTsKIApAQCAt MTI5LDYgKzEzMSw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCX07CiAKIAlz ZXRfcGdsb2NhbGVfcGdzZXJ2aWNlKGFyZ3ZbMF0sIFBHX1RFWFRET01BSU4oInBnX2R1bXAi KSk7CisJcGdfbG9nZ2luZ19pbml0KGFyZ3ZbMF0pOwogCiAJaW5pdF9wYXJhbGxlbF9kdW1w X3V0aWxzKCk7CiAKQEAgLTI5Niw4ICsyOTksOCBAQCBtYWluKGludCBhcmdjLCBjaGFyICoq YXJndikKIAkvKiBDb21wbGFpbiBpZiBhbnkgYXJndW1lbnRzIHJlbWFpbiAqLwogCWlmIChv cHRpbmQgPCBhcmdjKQogCXsKLQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiB0b28gbWFueSBj b21tYW5kLWxpbmUgYXJndW1lbnRzIChmaXJzdCBpcyBcIiVzXCIpXG4iKSwKLQkJCQlwcm9n bmFtZSwgYXJndltvcHRpbmRdKTsKKwkJcGdfbG9nX2Vycm9yKCJ0b28gbWFueSBjb21tYW5k LWxpbmUgYXJndW1lbnRzIChmaXJzdCBpcyBcIiVzXCIpIiwKKwkJCQkJIGFyZ3Zbb3B0aW5k XSk7CiAJCWZwcmludGYoc3RkZXJyLCBfKCJUcnkgXCIlcyAtLWhlbHBcIiBmb3IgbW9yZSBp bmZvcm1hdGlvbi5cbiIpLAogCQkJCXByb2duYW1lKTsKIAkJZXhpdF9uaWNlbHkoMSk7CkBA IC0zMDgsOCArMzExLDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJewogCQlp ZiAob3B0cy0+ZmlsZW5hbWUpCiAJCXsKLQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczogb3B0 aW9ucyAtZC8tLWRibmFtZSBhbmQgLWYvLS1maWxlIGNhbm5vdCBiZSB1c2VkIHRvZ2V0aGVy XG4iKSwKLQkJCQkJcHJvZ25hbWUpOworCQkJcGdfbG9nX2Vycm9yKCJvcHRpb25zIC1kLy0t ZGJuYW1lIGFuZCAtZi8tLWZpbGUgY2Fubm90IGJlIHVzZWQgdG9nZXRoZXIiKTsKIAkJCWZw cmludGYoc3RkZXJyLCBfKCJUcnkgXCIlcyAtLWhlbHBcIiBmb3IgbW9yZSBpbmZvcm1hdGlv bi5cbiIpLAogCQkJCQlwcm9nbmFtZSk7CiAJCQlleGl0X25pY2VseSgxKTsKQEAgLTMxOSwx NSArMzIxLDEzIEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCiAJaWYgKG9wdHMt PmRhdGFPbmx5ICYmIG9wdHMtPnNjaGVtYU9ubHkpCiAJewotCQlmcHJpbnRmKHN0ZGVyciwg XygiJXM6IG9wdGlvbnMgLXMvLS1zY2hlbWEtb25seSBhbmQgLWEvLS1kYXRhLW9ubHkgY2Fu bm90IGJlIHVzZWQgdG9nZXRoZXJcbiIpLAotCQkJCXByb2duYW1lKTsKKwkJcGdfbG9nX2Vy cm9yKCJvcHRpb25zIC1zLy0tc2NoZW1hLW9ubHkgYW5kIC1hLy0tZGF0YS1vbmx5IGNhbm5v dCBiZSB1c2VkIHRvZ2V0aGVyIik7CiAJCWV4aXRfbmljZWx5KDEpOwogCX0KIAogCWlmIChv cHRzLT5kYXRhT25seSAmJiBvcHRzLT5kcm9wU2NoZW1hKQogCXsKLQkJZnByaW50ZihzdGRl cnIsIF8oIiVzOiBvcHRpb25zIC1jLy0tY2xlYW4gYW5kIC1hLy0tZGF0YS1vbmx5IGNhbm5v dCBiZSB1c2VkIHRvZ2V0aGVyXG4iKSwKLQkJCQlwcm9nbmFtZSk7CisJCXBnX2xvZ19lcnJv cigib3B0aW9ucyAtYy8tLWNsZWFuIGFuZCAtYS8tLWRhdGEtb25seSBjYW5ub3QgYmUgdXNl ZCB0b2dldGhlciIpOwogCQlleGl0X25pY2VseSgxKTsKIAl9CiAKQEAgLTMzNywxNCArMzM3 LDEzIEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCSAqLwogCWlmIChvcHRzLT5j cmVhdGVEQiAmJiBvcHRzLT5zaW5nbGVfdHhuKQogCXsKLQkJZnByaW50ZihzdGRlcnIsIF8o IiVzOiBvcHRpb25zIC1DLy0tY3JlYXRlIGFuZCAtMS8tLXNpbmdsZS10cmFuc2FjdGlvbiBj YW5ub3QgYmUgdXNlZCB0b2dldGhlclxuIiksCi0JCQkJcHJvZ25hbWUpOworCQlwZ19sb2df ZXJyb3IoIm9wdGlvbnMgLUMvLS1jcmVhdGUgYW5kIC0xLy0tc2luZ2xlLXRyYW5zYWN0aW9u IGNhbm5vdCBiZSB1c2VkIHRvZ2V0aGVyIik7CiAJCWV4aXRfbmljZWx5KDEpOwogCX0KIAog CWlmIChudW1Xb3JrZXJzIDw9IDApCiAJewotCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGlu dmFsaWQgbnVtYmVyIG9mIHBhcmFsbGVsIGpvYnNcbiIpLCBwcm9nbmFtZSk7CisJCXBnX2xv Z19lcnJvcigiaW52YWxpZCBudW1iZXIgb2YgcGFyYWxsZWwgam9icyIpOwogCQlleGl0KDEp OwogCX0KIApAQCAtMzUyLDggKzM1MSw4IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2 KQogI2lmZGVmIFdJTjMyCiAJaWYgKG51bVdvcmtlcnMgPiBNQVhJTVVNX1dBSVRfT0JKRUNU UykKIAl7Ci0JCWZwcmludGYoc3RkZXJyLCBfKCIlczogbWF4aW11bSBudW1iZXIgb2YgcGFy YWxsZWwgam9icyBpcyAlZFxuIiksCi0JCQkJcHJvZ25hbWUsIE1BWElNVU1fV0FJVF9PQkpF Q1RTKTsKKwkJcGdfbG9nX2Vycm9yKCJtYXhpbXVtIG51bWJlciBvZiBwYXJhbGxlbCBqb2Jz IGlzICVkIiwKKwkJCQkJIE1BWElNVU1fV0FJVF9PQkpFQ1RTKTsKIAkJZXhpdCgxKTsKIAl9 CiAjZW5kaWYKQEAgLTM2MSw4ICszNjAsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJn dikKIAkvKiBDYW4ndCBkbyBzaW5nbGUtdHhuIG1vZGUgd2l0aCBtdWx0aXBsZSBjb25uZWN0 aW9ucyAqLwogCWlmIChvcHRzLT5zaW5nbGVfdHhuICYmIG51bVdvcmtlcnMgPiAxKQogCXsK LQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBjYW5ub3Qgc3BlY2lmeSBib3RoIC0tc2luZ2xl LXRyYW5zYWN0aW9uIGFuZCBtdWx0aXBsZSBqb2JzXG4iKSwKLQkJCQlwcm9nbmFtZSk7CisJ CXBnX2xvZ19lcnJvcigiY2Fubm90IHNwZWNpZnkgYm90aCAtLXNpbmdsZS10cmFuc2FjdGlv biBhbmQgbXVsdGlwbGUgam9icyIpOwogCQlleGl0X25pY2VseSgxKTsKIAl9CiAKQEAgLTM3 OCw4ICszNzYsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAogCWlmIChpZl9l eGlzdHMgJiYgIW9wdHMtPmRyb3BTY2hlbWEpCiAJewotCQlmcHJpbnRmKHN0ZGVyciwgXygi JXM6IG9wdGlvbiAtLWlmLWV4aXN0cyByZXF1aXJlcyBvcHRpb24gLWMvLS1jbGVhblxuIiks Ci0JCQkJcHJvZ25hbWUpOworCQlwZ19sb2dfZXJyb3IoIm9wdGlvbiAtLWlmLWV4aXN0cyBy ZXF1aXJlcyBvcHRpb24gLWMvLS1jbGVhbiIpOwogCQlleGl0X25pY2VseSgxKTsKIAl9CiAJ b3B0cy0+aWZfZXhpc3RzID0gaWZfZXhpc3RzOwpAQCAtNDA1LDcgKzQwMiw3IEBAIG1haW4o aW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCQkJCWJyZWFrOwogCiAJCQlkZWZhdWx0OgotCQkJ CXdyaXRlX21zZyhOVUxMLCAidW5yZWNvZ25pemVkIGFyY2hpdmUgZm9ybWF0IFwiJXNcIjsg cGxlYXNlIHNwZWNpZnkgXCJjXCIsIFwiZFwiLCBvciBcInRcIlxuIiwKKwkJCQlwZ19sb2df ZXJyb3IoInVucmVjb2duaXplZCBhcmNoaXZlIGZvcm1hdCBcIiVzXCI7IHBsZWFzZSBzcGVj aWZ5IFwiY1wiLCBcImRcIiwgb3IgXCJ0XCIiLAogCQkJCQkJICBvcHRzLT5mb3JtYXROYW1l KTsKIAkJCQlleGl0X25pY2VseSgxKTsKIAkJfQpAQCAtNDQ1LDggKzQ0Miw3IEBAIG1haW4o aW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCiAJLyogZG9uZSwgcHJpbnQgYSBzdW1tYXJ5IG9m IGlnbm9yZWQgZXJyb3JzICovCiAJaWYgKEFILT5uX2Vycm9ycykKLQkJZnByaW50ZihzdGRl cnIsIF8oIldBUk5JTkc6IGVycm9ycyBpZ25vcmVkIG9uIHJlc3RvcmU6ICVkXG4iKSwKLQkJ CQlBSC0+bl9lcnJvcnMpOworCQlwZ19sb2dfd2FybmluZygiZXJyb3JzIGlnbm9yZWQgb24g cmVzdG9yZTogJWQiLCBBSC0+bl9lcnJvcnMpOwogCiAJLyogQUggbWF5IGJlIGZyZWVkIGlu IENsb3NlQXJjaGl2ZT8gKi8KIAlleGl0X2NvZGUgPSBBSC0+bl9lcnJvcnMgPyAxIDogMDsK ZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC90LzAwMV9iYXNpYy5wbCBiL3NyYy9iaW4v cGdfZHVtcC90LzAwMV9iYXNpYy5wbAppbmRleCBhODc1ZDU0MGI4Li44N2QyNTA5OWFjIDEw MDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvdC8wMDFfYmFzaWMucGwKKysrIGIvc3JjL2Jp bi9wZ19kdW1wL3QvMDAxX2Jhc2ljLnBsCkBAIC0zMCwxMjMgKzMwLDEyMyBAQAogCiBjb21t YW5kX2ZhaWxzX2xpa2UoCiAJWyAncGdfZHVtcCcsICdxcXEnLCAnYWJjJyBdLAotCXFyL1xR cGdfZHVtcDogdG9vIG1hbnkgY29tbWFuZC1saW5lIGFyZ3VtZW50cyAoZmlyc3QgaXMgImFi YyIpXEUvLAotCSdwZ19kdW1wOiB0b28gbWFueSBjb21tYW5kLWxpbmUgYXJndW1lbnRzIChm aXJzdCBpcyAiYXNkIiknKTsKKwlxci9cUXBnX2R1bXA6IGVycm9yOiB0b28gbWFueSBjb21t YW5kLWxpbmUgYXJndW1lbnRzIChmaXJzdCBpcyAiYWJjIilcRS8sCisJJ3BnX2R1bXA6IHRv byBtYW55IGNvbW1hbmQtbGluZSBhcmd1bWVudHMnKTsKIAogY29tbWFuZF9mYWlsc19saWtl KAogCVsgJ3BnX3Jlc3RvcmUnLCAncXFxJywgJ2FiYycgXSwKLQlxci9cUXBnX3Jlc3RvcmU6 IHRvbyBtYW55IGNvbW1hbmQtbGluZSBhcmd1bWVudHMgKGZpcnN0IGlzICJhYmMiKVxFLywK LQkncGdfcmVzdG9yZSB0b28gbWFueSBjb21tYW5kLWxpbmUgYXJndW1lbnRzIChmaXJzdCBp cyAiYWJjIiknKTsKKwlxci9cUXBnX3Jlc3RvcmU6IGVycm9yOiB0b28gbWFueSBjb21tYW5k LWxpbmUgYXJndW1lbnRzIChmaXJzdCBpcyAiYWJjIilcRS8sCisJJ3BnX3Jlc3RvcmU6IHRv byBtYW55IGNvbW1hbmQtbGluZSBhcmd1bWVudHMnKTsKIAogY29tbWFuZF9mYWlsc19saWtl KAogCVsgJ3BnX2R1bXBhbGwnLCAncXFxJywgJ2FiYycgXSwKLQlxci9cUXBnX2R1bXBhbGw6 IHRvbyBtYW55IGNvbW1hbmQtbGluZSBhcmd1bWVudHMgKGZpcnN0IGlzICJxcXEiKVxFLywK LQkncGdfZHVtcGFsbDogdG9vIG1hbnkgY29tbWFuZC1saW5lIGFyZ3VtZW50cyAoZmlyc3Qg aXMgInFxcSIpJyk7CisJcXIvXFFwZ19kdW1wYWxsOiBlcnJvcjogdG9vIG1hbnkgY29tbWFu ZC1saW5lIGFyZ3VtZW50cyAoZmlyc3QgaXMgInFxcSIpXEUvLAorCSdwZ19kdW1wYWxsOiB0 b28gbWFueSBjb21tYW5kLWxpbmUgYXJndW1lbnRzJyk7CiAKIGNvbW1hbmRfZmFpbHNfbGlr ZSgKIAlbICdwZ19kdW1wJywgJy1zJywgJy1hJyBdLAotCXFyL1xRcGdfZHVtcDogb3B0aW9u cyAtc1wvLS1zY2hlbWEtb25seSBhbmQgLWFcLy0tZGF0YS1vbmx5IGNhbm5vdCBiZSB1c2Vk IHRvZ2V0aGVyXEUvLAorCXFyL1xRcGdfZHVtcDogZXJyb3I6IG9wdGlvbnMgLXNcLy0tc2No ZW1hLW9ubHkgYW5kIC1hXC8tLWRhdGEtb25seSBjYW5ub3QgYmUgdXNlZCB0b2dldGhlclxF LywKIAkncGdfZHVtcDogb3B0aW9ucyAtcy8tLXNjaGVtYS1vbmx5IGFuZCAtYS8tLWRhdGEt b25seSBjYW5ub3QgYmUgdXNlZCB0b2dldGhlcicKICk7CiAKIGNvbW1hbmRfZmFpbHNfbGlr ZSgKIAlbICdwZ19yZXN0b3JlJywgJy1zJywgJy1hJyBdLAotCXFyL1xRcGdfcmVzdG9yZTog b3B0aW9ucyAtc1wvLS1zY2hlbWEtb25seSBhbmQgLWFcLy0tZGF0YS1vbmx5IGNhbm5vdCBi ZSB1c2VkIHRvZ2V0aGVyXEUvLAorCXFyL1xRcGdfcmVzdG9yZTogZXJyb3I6IG9wdGlvbnMg LXNcLy0tc2NoZW1hLW9ubHkgYW5kIC1hXC8tLWRhdGEtb25seSBjYW5ub3QgYmUgdXNlZCB0 b2dldGhlclxFLywKIAkncGdfcmVzdG9yZTogb3B0aW9ucyAtcy8tLXNjaGVtYS1vbmx5IGFu ZCAtYS8tLWRhdGEtb25seSBjYW5ub3QgYmUgdXNlZCB0b2dldGhlcicKICk7CiAKIGNvbW1h bmRfZmFpbHNfbGlrZSgKIAlbICdwZ19yZXN0b3JlJywgJy1kJywgJ3h4eCcsICctZicsICd4 eHgnIF0sCi0JcXIvXFFwZ19yZXN0b3JlOiBvcHRpb25zIC1kXC8tLWRibmFtZSBhbmQgLWZc Ly0tZmlsZSBjYW5ub3QgYmUgdXNlZCB0b2dldGhlclxFLywKKwlxci9cUXBnX3Jlc3RvcmU6 IGVycm9yOiBvcHRpb25zIC1kXC8tLWRibmFtZSBhbmQgLWZcLy0tZmlsZSBjYW5ub3QgYmUg dXNlZCB0b2dldGhlclxFLywKIAkncGdfcmVzdG9yZTogb3B0aW9ucyAtZC8tLWRibmFtZSBh bmQgLWYvLS1maWxlIGNhbm5vdCBiZSB1c2VkIHRvZ2V0aGVyJyk7CiAKIGNvbW1hbmRfZmFp bHNfbGlrZSgKIAlbICdwZ19kdW1wJywgJy1jJywgJy1hJyBdLAotCXFyL1xRcGdfZHVtcDog b3B0aW9ucyAtY1wvLS1jbGVhbiBhbmQgLWFcLy0tZGF0YS1vbmx5IGNhbm5vdCBiZSB1c2Vk IHRvZ2V0aGVyXEUvLAorCXFyL1xRcGdfZHVtcDogZXJyb3I6IG9wdGlvbnMgLWNcLy0tY2xl YW4gYW5kIC1hXC8tLWRhdGEtb25seSBjYW5ub3QgYmUgdXNlZCB0b2dldGhlclxFLywKIAkn cGdfZHVtcDogb3B0aW9ucyAtYy8tLWNsZWFuIGFuZCAtYS8tLWRhdGEtb25seSBjYW5ub3Qg YmUgdXNlZCB0b2dldGhlcicpOwogCiBjb21tYW5kX2ZhaWxzX2xpa2UoCiAJWyAncGdfcmVz dG9yZScsICctYycsICctYScgXSwKLQlxci9cUXBnX3Jlc3RvcmU6IG9wdGlvbnMgLWNcLy0t Y2xlYW4gYW5kIC1hXC8tLWRhdGEtb25seSBjYW5ub3QgYmUgdXNlZCB0b2dldGhlclxFLywK Kwlxci9cUXBnX3Jlc3RvcmU6IGVycm9yOiBvcHRpb25zIC1jXC8tLWNsZWFuIGFuZCAtYVwv LS1kYXRhLW9ubHkgY2Fubm90IGJlIHVzZWQgdG9nZXRoZXJcRS8sCiAJJ3BnX3Jlc3RvcmU6 IG9wdGlvbnMgLWMvLS1jbGVhbiBhbmQgLWEvLS1kYXRhLW9ubHkgY2Fubm90IGJlIHVzZWQg dG9nZXRoZXInCiApOwogCiBjb21tYW5kX2ZhaWxzX2xpa2UoCiAJWyAncGdfZHVtcCcsICct LWlmLWV4aXN0cycgXSwKLQlxci9cUXBnX2R1bXA6IG9wdGlvbiAtLWlmLWV4aXN0cyByZXF1 aXJlcyBvcHRpb24gLWNcLy0tY2xlYW5cRS8sCisJcXIvXFFwZ19kdW1wOiBlcnJvcjogb3B0 aW9uIC0taWYtZXhpc3RzIHJlcXVpcmVzIG9wdGlvbiAtY1wvLS1jbGVhblxFLywKIAkncGdf ZHVtcDogb3B0aW9uIC0taWYtZXhpc3RzIHJlcXVpcmVzIG9wdGlvbiAtYy8tLWNsZWFuJyk7 CiAKIGNvbW1hbmRfZmFpbHNfbGlrZSgKIAlbICdwZ19kdW1wJywgJy1qMycgXSwKLQlxci9c UXBnX2R1bXA6IHBhcmFsbGVsIGJhY2t1cCBvbmx5IHN1cHBvcnRlZCBieSB0aGUgZGlyZWN0 b3J5IGZvcm1hdFxFLywKKwlxci9cUXBnX2R1bXA6IGVycm9yOiBwYXJhbGxlbCBiYWNrdXAg b25seSBzdXBwb3J0ZWQgYnkgdGhlIGRpcmVjdG9yeSBmb3JtYXRcRS8sCiAJJ3BnX2R1bXA6 IHBhcmFsbGVsIGJhY2t1cCBvbmx5IHN1cHBvcnRlZCBieSB0aGUgZGlyZWN0b3J5IGZvcm1h dCcpOwogCiBjb21tYW5kX2ZhaWxzX2xpa2UoCiAJWyAncGdfZHVtcCcsICctaicsICctMScg XSwKLQlxci9cUXBnX2R1bXA6IGludmFsaWQgbnVtYmVyIG9mIHBhcmFsbGVsIGpvYnNcRS8s CisJcXIvXFFwZ19kdW1wOiBlcnJvcjogaW52YWxpZCBudW1iZXIgb2YgcGFyYWxsZWwgam9i c1xFLywKIAkncGdfZHVtcDogaW52YWxpZCBudW1iZXIgb2YgcGFyYWxsZWwgam9icycpOwog CiBjb21tYW5kX2ZhaWxzX2xpa2UoCiAJWyAncGdfZHVtcCcsICctRicsICdnYXJiYWdlJyBd LAotCXFyL1xRcGdfZHVtcDogaW52YWxpZCBvdXRwdXQgZm9ybWF0XEUvLAorCXFyL1xRcGdf ZHVtcDogZXJyb3I6IGludmFsaWQgb3V0cHV0IGZvcm1hdFxFLywKIAkncGdfZHVtcDogaW52 YWxpZCBvdXRwdXQgZm9ybWF0Jyk7CiAKIGNvbW1hbmRfZmFpbHNfbGlrZSgKIAlbICdwZ19y ZXN0b3JlJywgJy1qJywgJy0xJyBdLAotCXFyL1xRcGdfcmVzdG9yZTogaW52YWxpZCBudW1i ZXIgb2YgcGFyYWxsZWwgam9ic1xFLywKKwlxci9cUXBnX3Jlc3RvcmU6IGVycm9yOiBpbnZh bGlkIG51bWJlciBvZiBwYXJhbGxlbCBqb2JzXEUvLAogCSdwZ19yZXN0b3JlOiBpbnZhbGlk IG51bWJlciBvZiBwYXJhbGxlbCBqb2JzJyk7CiAKIGNvbW1hbmRfZmFpbHNfbGlrZSgKIAlb ICdwZ19yZXN0b3JlJywgJy0tc2luZ2xlLXRyYW5zYWN0aW9uJywgJy1qMycgXSwKLQlxci9c UXBnX3Jlc3RvcmU6IGNhbm5vdCBzcGVjaWZ5IGJvdGggLS1zaW5nbGUtdHJhbnNhY3Rpb24g YW5kIG11bHRpcGxlIGpvYnNcRS8sCisJcXIvXFFwZ19yZXN0b3JlOiBlcnJvcjogY2Fubm90 IHNwZWNpZnkgYm90aCAtLXNpbmdsZS10cmFuc2FjdGlvbiBhbmQgbXVsdGlwbGUgam9ic1xF LywKIAkncGdfcmVzdG9yZTogY2Fubm90IHNwZWNpZnkgYm90aCAtLXNpbmdsZS10cmFuc2Fj dGlvbiBhbmQgbXVsdGlwbGUgam9icycpOwogCiBjb21tYW5kX2ZhaWxzX2xpa2UoCiAJWyAn cGdfZHVtcCcsICctWicsICctMScgXSwKLQlxci9cUXBnX2R1bXA6IGNvbXByZXNzaW9uIGxl dmVsIG11c3QgYmUgaW4gcmFuZ2UgMC4uOVxFLywKKwlxci9cUXBnX2R1bXA6IGVycm9yOiBj b21wcmVzc2lvbiBsZXZlbCBtdXN0IGJlIGluIHJhbmdlIDAuLjlcRS8sCiAJJ3BnX2R1bXA6 IGNvbXByZXNzaW9uIGxldmVsIG11c3QgYmUgaW4gcmFuZ2UgMC4uOScpOwogCiBjb21tYW5k X2ZhaWxzX2xpa2UoCiAJWyAncGdfcmVzdG9yZScsICctLWlmLWV4aXN0cycgXSwKLQlxci9c UXBnX3Jlc3RvcmU6IG9wdGlvbiAtLWlmLWV4aXN0cyByZXF1aXJlcyBvcHRpb24gLWNcLy0t Y2xlYW5cRS8sCisJcXIvXFFwZ19yZXN0b3JlOiBlcnJvcjogb3B0aW9uIC0taWYtZXhpc3Rz IHJlcXVpcmVzIG9wdGlvbiAtY1wvLS1jbGVhblxFLywKIAkncGdfcmVzdG9yZTogb3B0aW9u IC0taWYtZXhpc3RzIHJlcXVpcmVzIG9wdGlvbiAtYy8tLWNsZWFuJyk7CiAKIGNvbW1hbmRf ZmFpbHNfbGlrZSgKIAlbICdwZ19yZXN0b3JlJywgJy1GJywgJ2dhcmJhZ2UnIF0sCi0JcXIv XFFwZ19yZXN0b3JlOiB1bnJlY29nbml6ZWQgYXJjaGl2ZSBmb3JtYXQgImdhcmJhZ2UiO1xF LywKKwlxci9cUXBnX3Jlc3RvcmU6IGVycm9yOiB1bnJlY29nbml6ZWQgYXJjaGl2ZSBmb3Jt YXQgImdhcmJhZ2UiO1xFLywKIAkncGdfZHVtcDogdW5yZWNvZ25pemVkIGFyY2hpdmUgZm9y bWF0Jyk7CiAKIGNvbW1hbmRfZmFpbHNfbGlrZSgKIAlbICdwZ19kdW1wJywgJy0tb24tY29u ZmxpY3QtZG8tbm90aGluZycgXSwKLQlxci9cUXBnX2R1bXA6IG9wdGlvbiAtLW9uLWNvbmZs aWN0LWRvLW5vdGhpbmcgcmVxdWlyZXMgb3B0aW9uIC0taW5zZXJ0cyBvciAtLWNvbHVtbi1p bnNlcnRzXEUvLAorCXFyL1xRcGdfZHVtcDogZXJyb3I6IG9wdGlvbiAtLW9uLWNvbmZsaWN0 LWRvLW5vdGhpbmcgcmVxdWlyZXMgb3B0aW9uIC0taW5zZXJ0cyBvciAtLWNvbHVtbi1pbnNl cnRzXEUvLAogCSdwZ19kdW1wOiBvcHRpb24gLS1vbi1jb25mbGljdC1kby1ub3RoaW5nIHJl cXVpcmVzIG9wdGlvbiAtLWluc2VydHMgb3IgLS1jb2x1bW4taW5zZXJ0cycpOwogCiAjIHBn X2R1bXBhbGwgY29tbWFuZC1saW5lIGFyZ3VtZW50IGNoZWNrcwogY29tbWFuZF9mYWlsc19s aWtlKAogCVsgJ3BnX2R1bXBhbGwnLCAnLWcnLCAnLXInIF0sCi0JcXIvXFFwZ19kdW1wYWxs OiBvcHRpb25zIC1nXC8tLWdsb2JhbHMtb25seSBhbmQgLXJcLy0tcm9sZXMtb25seSBjYW5u b3QgYmUgdXNlZCB0b2dldGhlclxFLywKKwlxci9cUXBnX2R1bXBhbGw6IGVycm9yOiBvcHRp b25zIC1nXC8tLWdsb2JhbHMtb25seSBhbmQgLXJcLy0tcm9sZXMtb25seSBjYW5ub3QgYmUg dXNlZCB0b2dldGhlclxFLywKIAkncGdfZHVtcGFsbDogb3B0aW9ucyAtZy8tLWdsb2JhbHMt b25seSBhbmQgLXIvLS1yb2xlcy1vbmx5IGNhbm5vdCBiZSB1c2VkIHRvZ2V0aGVyJwogKTsK IAogY29tbWFuZF9mYWlsc19saWtlKAogCVsgJ3BnX2R1bXBhbGwnLCAnLWcnLCAnLXQnIF0s Ci0JcXIvXFFwZ19kdW1wYWxsOiBvcHRpb25zIC1nXC8tLWdsb2JhbHMtb25seSBhbmQgLXRc Ly0tdGFibGVzcGFjZXMtb25seSBjYW5ub3QgYmUgdXNlZCB0b2dldGhlclxFLywKKwlxci9c UXBnX2R1bXBhbGw6IGVycm9yOiBvcHRpb25zIC1nXC8tLWdsb2JhbHMtb25seSBhbmQgLXRc Ly0tdGFibGVzcGFjZXMtb25seSBjYW5ub3QgYmUgdXNlZCB0b2dldGhlclxFLywKIAkncGdf ZHVtcGFsbDogb3B0aW9ucyAtZy8tLWdsb2JhbHMtb25seSBhbmQgLXQvLS10YWJsZXNwYWNl cy1vbmx5IGNhbm5vdCBiZSB1c2VkIHRvZ2V0aGVyJwogKTsKIAogY29tbWFuZF9mYWlsc19s aWtlKAogCVsgJ3BnX2R1bXBhbGwnLCAnLXInLCAnLXQnIF0sCi0JcXIvXFFwZ19kdW1wYWxs OiBvcHRpb25zIC1yXC8tLXJvbGVzLW9ubHkgYW5kIC10XC8tLXRhYmxlc3BhY2VzLW9ubHkg Y2Fubm90IGJlIHVzZWQgdG9nZXRoZXJcRS8sCisJcXIvXFFwZ19kdW1wYWxsOiBlcnJvcjog b3B0aW9ucyAtclwvLS1yb2xlcy1vbmx5IGFuZCAtdFwvLS10YWJsZXNwYWNlcy1vbmx5IGNh bm5vdCBiZSB1c2VkIHRvZ2V0aGVyXEUvLAogCSdwZ19kdW1wYWxsOiBvcHRpb25zIC1yLy0t cm9sZXMtb25seSBhbmQgLXQvLS10YWJsZXNwYWNlcy1vbmx5IGNhbm5vdCBiZSB1c2VkIHRv Z2V0aGVyJwogKTsKIAogY29tbWFuZF9mYWlsc19saWtlKAogCVsgJ3BnX2R1bXBhbGwnLCAn LS1pZi1leGlzdHMnIF0sCi0JcXIvXFFwZ19kdW1wYWxsOiBvcHRpb24gLS1pZi1leGlzdHMg cmVxdWlyZXMgb3B0aW9uIC1jXC8tLWNsZWFuXEUvLAorCXFyL1xRcGdfZHVtcGFsbDogZXJy b3I6IG9wdGlvbiAtLWlmLWV4aXN0cyByZXF1aXJlcyBvcHRpb24gLWNcLy0tY2xlYW5cRS8s CiAJJ3BnX2R1bXBhbGw6IG9wdGlvbiAtLWlmLWV4aXN0cyByZXF1aXJlcyBvcHRpb24gLWMv LS1jbGVhbicpOwogCiBjb21tYW5kX2ZhaWxzX2xpa2UoCiAJWyAncGdfcmVzdG9yZScsICct QycsICctMScgXSwKLQlxci9cUXBnX3Jlc3RvcmU6IG9wdGlvbnMgLUNcLy0tY3JlYXRlIGFu ZCAtMVwvLS1zaW5nbGUtdHJhbnNhY3Rpb24gY2Fubm90IGJlIHVzZWQgdG9nZXRoZXJcRS8s CisJcXIvXFFwZ19yZXN0b3JlOiBlcnJvcjogb3B0aW9ucyAtQ1wvLS1jcmVhdGUgYW5kIC0x XC8tLXNpbmdsZS10cmFuc2FjdGlvbiBjYW5ub3QgYmUgdXNlZCB0b2dldGhlclxFLywKIAkn cGdfcmVzdG9yZTogb3B0aW9ucyAtQ1wvLS1jcmVhdGUgYW5kIC0xXC8tLXNpbmdsZS10cmFu c2FjdGlvbiBjYW5ub3QgYmUgdXNlZCB0b2dldGhlcicKICk7CmRpZmYgLS1naXQgYS9zcmMv YmluL3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5wbCBiL3NyYy9iaW4vcGdfZHVtcC90LzAwMl9w Z19kdW1wLnBsCmluZGV4IDI0NWZjYmY1Y2UuLmE5NDkzZWNjYzQgMTAwNjQ0Ci0tLSBhL3Ny Yy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsCisrKyBiL3NyYy9iaW4vcGdfZHVtcC90 LzAwMl9wZ19kdW1wLnBsCkBAIC0zMjAxLDggKzMyMDEsOCBAQAogCiBjb21tYW5kX2ZhaWxz X2xpa2UoCiAJWyAncGdfZHVtcCcsICctcCcsICIkcG9ydCIsICdxcXEnIF0sCi0JcXIvXFFw Z19kdW1wOiBbYXJjaGl2ZXIgKGRiKV0gY29ubmVjdGlvbiB0byBkYXRhYmFzZSAicXFxIiBm YWlsZWQ6IEZBVEFMOiAgZGF0YWJhc2UgInFxcSIgZG9lcyBub3QgZXhpc3RcRS8sCi0JJ3Bn X2R1bXA6IFthcmNoaXZlciAoZGIpXSBjb25uZWN0aW9uIHRvIGRhdGFiYXNlICJxcXEiIGZh aWxlZDogRkFUQUw6ICBkYXRhYmFzZSAicXFxIiBkb2VzIG5vdCBleGlzdCcKKwlxci9cUXBn X2R1bXA6IGVycm9yOiBjb25uZWN0aW9uIHRvIGRhdGFiYXNlICJxcXEiIGZhaWxlZDogRkFU QUw6ICBkYXRhYmFzZSAicXFxIiBkb2VzIG5vdCBleGlzdFxFLywKKwkncGdfZHVtcDogZXJy b3I6IGNvbm5lY3Rpb24gdG8gZGF0YWJhc2UgInFxcSIgZmFpbGVkOiBGQVRBTDogIGRhdGFi YXNlICJxcXEiIGRvZXMgbm90IGV4aXN0JwogKTsKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMKQEAgLTMyMTAsMzAgKzMyMTAsMzAgQEAKIAogY29tbWFu ZF9mYWlsc19saWtlKAogCVsgJ3BnX2R1bXAnLCAnLXAnLCAiJHBvcnQiLCAnLS1yb2xlPXJl Z3Jlc3NfZHVtcF90ZXN0X3JvbGUnIF0sCi0JcXIvXFFwZ19kdW1wOiBbYXJjaGl2ZXIgKGRi KV0gcXVlcnkgZmFpbGVkOiBFUlJPUjogIHBlcm1pc3Npb24gZGVuaWVkIGZvclxFLywKLQkn cGdfZHVtcDogW2FyY2hpdmVyIChkYildIHF1ZXJ5IGZhaWxlZDogRVJST1I6ICBwZXJtaXNz aW9uIGRlbmllZCBmb3InKTsKKwlxci9cUXBnX2R1bXA6IGVycm9yOiBxdWVyeSBmYWlsZWQ6 IEVSUk9SOiAgcGVybWlzc2lvbiBkZW5pZWQgZm9yXEUvLAorCSdwZ19kdW1wOiBlcnJvcjog cXVlcnkgZmFpbGVkOiBFUlJPUjogIHBlcm1pc3Npb24gZGVuaWVkIGZvcicpOwogCiAjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyBUZXN0IGR1bXBpbmcg YSBub24tZXhpc3RlbnQgc2NoZW1hLCB0YWJsZSwgYW5kIHBhdHRlcm5zIHdpdGggLS1zdHJp Y3QtbmFtZXMKIAogY29tbWFuZF9mYWlsc19saWtlKAogCVsgJ3BnX2R1bXAnLCAnLXAnLCAi JHBvcnQiLCAnLW4nLCAnbm9uZXhpc3RhbnQnIF0sCi0JcXIvXFFwZ19kdW1wOiBubyBtYXRj aGluZyBzY2hlbWFzIHdlcmUgZm91bmRcRS8sCisJcXIvXFFwZ19kdW1wOiBlcnJvcjogbm8g bWF0Y2hpbmcgc2NoZW1hcyB3ZXJlIGZvdW5kXEUvLAogCSdwZ19kdW1wOiBubyBtYXRjaGlu ZyBzY2hlbWFzIHdlcmUgZm91bmQnKTsKIAogY29tbWFuZF9mYWlsc19saWtlKAogCVsgJ3Bn X2R1bXAnLCAnLXAnLCAiJHBvcnQiLCAnLXQnLCAnbm9uZXhpc3RhbnQnIF0sCi0JcXIvXFFw Z19kdW1wOiBubyBtYXRjaGluZyB0YWJsZXMgd2VyZSBmb3VuZFxFLywKKwlxci9cUXBnX2R1 bXA6IGVycm9yOiBubyBtYXRjaGluZyB0YWJsZXMgd2VyZSBmb3VuZFxFLywKIAkncGdfZHVt cDogbm8gbWF0Y2hpbmcgdGFibGVzIHdlcmUgZm91bmQnKTsKIAogY29tbWFuZF9mYWlsc19s aWtlKAogCVsgJ3BnX2R1bXAnLCAnLXAnLCAiJHBvcnQiLCAnLS1zdHJpY3QtbmFtZXMnLCAn LW4nLCAnbm9uZXhpc3RhbnQqJyBdLAotCXFyL1xRcGdfZHVtcDogbm8gbWF0Y2hpbmcgc2No ZW1hcyB3ZXJlIGZvdW5kIGZvciBwYXR0ZXJuXEUvLAorCXFyL1xRcGdfZHVtcDogZXJyb3I6 IG5vIG1hdGNoaW5nIHNjaGVtYXMgd2VyZSBmb3VuZCBmb3IgcGF0dGVyblxFLywKIAkncGdf ZHVtcDogbm8gbWF0Y2hpbmcgc2NoZW1hcyB3ZXJlIGZvdW5kIGZvciBwYXR0ZXJuJyk7CiAK IGNvbW1hbmRfZmFpbHNfbGlrZSgKIAlbICdwZ19kdW1wJywgJy1wJywgIiRwb3J0IiwgJy0t c3RyaWN0LW5hbWVzJywgJy10JywgJ25vbmV4aXN0YW50KicgXSwKLQlxci9cUXBnX2R1bXA6 IG5vIG1hdGNoaW5nIHRhYmxlcyB3ZXJlIGZvdW5kIGZvciBwYXR0ZXJuXEUvLAorCXFyL1xR cGdfZHVtcDogZXJyb3I6IG5vIG1hdGNoaW5nIHRhYmxlcyB3ZXJlIGZvdW5kIGZvciBwYXR0 ZXJuXEUvLAogCSdwZ19kdW1wOiBubyBtYXRjaGluZyB0YWJsZXMgd2VyZSBmb3VuZCBmb3Ig cGF0dGVybicpOwogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19yZXNldHdhbC9NYWtlZmlsZSBiL3NyYy9iaW4v cGdfcmVzZXR3YWwvTWFrZWZpbGUKaW5kZXggZTQ5ZDUyYjkyOC4uNTk2MDZlZjNiNCAxMDA2 NDQKLS0tIGEvc3JjL2Jpbi9wZ19yZXNldHdhbC9NYWtlZmlsZQorKysgYi9zcmMvYmluL3Bn X3Jlc2V0d2FsL01ha2VmaWxlCkBAIC0xNSwxMSArMTUsMTMgQEAgc3ViZGlyID0gc3JjL2Jp bi9wZ19yZXNldHdhbAogdG9wX2J1aWxkZGlyID0gLi4vLi4vLi4KIGluY2x1ZGUgJCh0b3Bf YnVpbGRkaXIpL3NyYy9NYWtlZmlsZS5nbG9iYWwKIAorTERGTEFHU19JTlRFUk5BTCArPSAt TCQodG9wX2J1aWxkZGlyKS9zcmMvZmVfdXRpbHMgLWxwZ2ZldXRpbHMKKwogT0JKUz0gcGdf cmVzZXR3YWwubyAkKFdJTjMyUkVTKQogCiBhbGw6IHBnX3Jlc2V0d2FsCiAKLXBnX3Jlc2V0 d2FsOiAkKE9CSlMpIHwgc3VibWFrZS1saWJwZ3BvcnQKK3BnX3Jlc2V0d2FsOiAkKE9CSlMp IHwgc3VibWFrZS1saWJwZ3BvcnQgc3VibWFrZS1saWJwZ2ZldXRpbHMKIAkkKENDKSAkKENG TEFHUykgJF4gJChMREZMQUdTKSAkKExERkxBR1NfRVgpICQoTElCUykgLW8gJEAkKFgpCiAK IGluc3RhbGw6IGFsbCBpbnN0YWxsZGlycwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19yZXNl dHdhbC9ubHMubWsgYi9zcmMvYmluL3BnX3Jlc2V0d2FsL25scy5tawppbmRleCA4MmVjNGY3 NDNjLi5jYzQwODc1YjQ4IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX3Jlc2V0d2FsL25scy5t aworKysgYi9zcmMvYmluL3BnX3Jlc2V0d2FsL25scy5tawpAQCAtMSw0ICsxLDYgQEAKICMg c3JjL2Jpbi9wZ19yZXNldHdhbC9ubHMubWsKIENBVEFMT0dfTkFNRSAgICAgPSBwZ19yZXNl dHdhbAogQVZBSUxfTEFOR1VBR0VTICA9IGNzIGRlIGVzIGZyIGl0IGphIGtvIHBsIHB0X0JS IHJ1IHN2IHRyIHpoX0NOCi1HRVRURVhUX0ZJTEVTICAgID0gcGdfcmVzZXR3YWwuYyAuLi8u Li9jb21tb24vcmVzdHJpY3RlZF90b2tlbi5jCitHRVRURVhUX0ZJTEVTICAgID0gJChGUk9O VEVORF9DT01NT05fR0VUVEVYVF9GSUxFUykgcGdfcmVzZXR3YWwuYyAuLi8uLi9jb21tb24v cmVzdHJpY3RlZF90b2tlbi5jCitHRVRURVhUX1RSSUdHRVJTID0gJChGUk9OVEVORF9DT01N T05fR0VUVEVYVF9UUklHR0VSUykKK0dFVFRFWFRfRkxBR1MgICAgPSAkKEZST05URU5EX0NP TU1PTl9HRVRURVhUX0ZMQUdTKQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19yZXNldHdhbC9w Z19yZXNldHdhbC5jIGIvc3JjL2Jpbi9wZ19yZXNldHdhbC9wZ19yZXNldHdhbC5jCmluZGV4 IDZmYjQwM2E1YTguLjRkYmNkNmE5NGQgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfcmVzZXR3 YWwvcGdfcmVzZXR3YWwuYworKysgYi9zcmMvYmluL3BnX3Jlc2V0d2FsL3BnX3Jlc2V0d2Fs LmMKQEAgLTU0LDYgKzU0LDcgQEAKICNpbmNsdWRlICJjb21tb24vZmVfbWVtdXRpbHMuaCIK ICNpbmNsdWRlICJjb21tb24vZmlsZV9wZXJtLmgiCiAjaW5jbHVkZSAiY29tbW9uL3Jlc3Ry aWN0ZWRfdG9rZW4uaCIKKyNpbmNsdWRlICJmZV91dGlscy9sb2dnaW5nLmgiCiAjaW5jbHVk ZSAic3RvcmFnZS9sYXJnZV9vYmplY3QuaCIKICNpbmNsdWRlICJwZ19nZXRvcHQuaCIKICNp bmNsdWRlICJnZXRvcHRfbG9uZy5oIgpAQCAtMTE3LDcgKzExOCw3IEBAIG1haW4oaW50IGFy Z2MsIGNoYXIgKmFyZ3ZbXSkKIAlpbnQJCQlmZDsKIAogCXNldF9wZ2xvY2FsZV9wZ3NlcnZp Y2UoYXJndlswXSwgUEdfVEVYVERPTUFJTigicGdfcmVzZXR3YWwiKSk7Ci0KKwlwZ19sb2dn aW5nX2luaXQoYXJndlswXSk7CiAJcHJvZ25hbWUgPSBnZXRfcHJvZ25hbWUoYXJndlswXSk7 CiAKIAlpZiAoYXJnYyA+IDEpCkBAIC0xNTcsMTMgKzE1OCwxMyBAQCBtYWluKGludCBhcmdj LCBjaGFyICphcmd2W10pCiAJCQkJewogCQkJCQkvKi0tLS0tLQogCQkJCQkgIHRyYW5zbGF0 b3I6IHRoZSBzZWNvbmQgJXMgaXMgYSBjb21tYW5kIGxpbmUgYXJndW1lbnQgKC1lLCBldGMp ICovCi0JCQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczogaW52YWxpZCBhcmd1bWVudCBmb3Ig b3B0aW9uICVzXG4iKSwgcHJvZ25hbWUsICItZSIpOworCQkJCQlwZ19sb2dfZXJyb3IoImlu dmFsaWQgYXJndW1lbnQgZm9yIG9wdGlvbiAlcyIsICItZSIpOwogCQkJCQlmcHJpbnRmKHN0 ZGVyciwgXygiVHJ5IFwiJXMgLS1oZWxwXCIgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4iKSwg cHJvZ25hbWUpOwogCQkJCQlleGl0KDEpOwogCQkJCX0KIAkJCQlpZiAoc2V0X3hpZF9lcG9j aCA9PSAtMSkKIAkJCQl7Ci0JCQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczogdHJhbnNhY3Rp b24gSUQgZXBvY2ggKC1lKSBtdXN0IG5vdCBiZSAtMVxuIiksIHByb2duYW1lKTsKKwkJCQkJ cGdfbG9nX2Vycm9yKCJ0cmFuc2FjdGlvbiBJRCBlcG9jaCAoLWUpIG11c3Qgbm90IGJlIC0x Iik7CiAJCQkJCWV4aXQoMSk7CiAJCQkJfQogCQkJCWJyZWFrOwpAQCAtMTcyLDEzICsxNzMs MTMgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCQkJCXNldF94aWQgPSBzdHJ0 b3VsKG9wdGFyZywgJmVuZHB0ciwgMCk7CiAJCQkJaWYgKGVuZHB0ciA9PSBvcHRhcmcgfHwg KmVuZHB0ciAhPSAnXDAnKQogCQkJCXsKLQkJCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBp bnZhbGlkIGFyZ3VtZW50IGZvciBvcHRpb24gJXNcbiIpLCBwcm9nbmFtZSwgIi14Iik7CisJ CQkJCXBnX2xvZ19lcnJvcigiaW52YWxpZCBhcmd1bWVudCBmb3Igb3B0aW9uICVzIiwgIi14 Iik7CiAJCQkJCWZwcmludGYoc3RkZXJyLCBfKCJUcnkgXCIlcyAtLWhlbHBcIiBmb3IgbW9y ZSBpbmZvcm1hdGlvbi5cbiIpLCBwcm9nbmFtZSk7CiAJCQkJCWV4aXQoMSk7CiAJCQkJfQog CQkJCWlmIChzZXRfeGlkID09IDApCiAJCQkJewotCQkJCQlmcHJpbnRmKHN0ZGVyciwgXygi JXM6IHRyYW5zYWN0aW9uIElEICgteCkgbXVzdCBub3QgYmUgMFxuIiksIHByb2duYW1lKTsK KwkJCQkJcGdfbG9nX2Vycm9yKCJ0cmFuc2FjdGlvbiBJRCAoLXgpIG11c3Qgbm90IGJlIDAi KTsKIAkJCQkJZXhpdCgxKTsKIAkJCQl9CiAJCQkJYnJlYWs7CkBAIC0xODcsMTQgKzE4OCwx NCBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJCQkJc2V0X29sZGVzdF9jb21t aXRfdHNfeGlkID0gc3RydG91bChvcHRhcmcsICZlbmRwdHIsIDApOwogCQkJCWlmIChlbmRw dHIgPT0gb3B0YXJnIHx8ICplbmRwdHIgIT0gJywnKQogCQkJCXsKLQkJCQkJZnByaW50Zihz dGRlcnIsIF8oIiVzOiBpbnZhbGlkIGFyZ3VtZW50IGZvciBvcHRpb24gJXNcbiIpLCBwcm9n bmFtZSwgIi1jIik7CisJCQkJCXBnX2xvZ19lcnJvcigiaW52YWxpZCBhcmd1bWVudCBmb3Ig b3B0aW9uICVzIiwgIi1jIik7CiAJCQkJCWZwcmludGYoc3RkZXJyLCBfKCJUcnkgXCIlcyAt LWhlbHBcIiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiIpLCBwcm9nbmFtZSk7CiAJCQkJCWV4 aXQoMSk7CiAJCQkJfQogCQkJCXNldF9uZXdlc3RfY29tbWl0X3RzX3hpZCA9IHN0cnRvdWwo ZW5kcHRyICsgMSwgJmVuZHB0cjIsIDApOwogCQkJCWlmIChlbmRwdHIyID09IGVuZHB0ciAr IDEgfHwgKmVuZHB0cjIgIT0gJ1wwJykKIAkJCQl7Ci0JCQkJCWZwcmludGYoc3RkZXJyLCBf KCIlczogaW52YWxpZCBhcmd1bWVudCBmb3Igb3B0aW9uICVzXG4iKSwgcHJvZ25hbWUsICIt YyIpOworCQkJCQlwZ19sb2dfZXJyb3IoImludmFsaWQgYXJndW1lbnQgZm9yIG9wdGlvbiAl cyIsICItYyIpOwogCQkJCQlmcHJpbnRmKHN0ZGVyciwgXygiVHJ5IFwiJXMgLS1oZWxwXCIg Zm9yIG1vcmUgaW5mb3JtYXRpb24uXG4iKSwgcHJvZ25hbWUpOwogCQkJCQlleGl0KDEpOwog CQkJCX0KQEAgLTIwMiwxNCArMjAzLDE0IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3Zb XSkKIAkJCQlpZiAoc2V0X29sZGVzdF9jb21taXRfdHNfeGlkIDwgMiAmJgogCQkJCQlzZXRf b2xkZXN0X2NvbW1pdF90c194aWQgIT0gMCkKIAkJCQl7Ci0JCQkJCWZwcmludGYoc3RkZXJy LCBfKCIlczogdHJhbnNhY3Rpb24gSUQgKC1jKSBtdXN0IGJlIGVpdGhlciAwIG9yIGdyZWF0 ZXIgdGhhbiBvciBlcXVhbCB0byAyXG4iKSwgcHJvZ25hbWUpOworCQkJCQlwZ19sb2dfZXJy b3IoInRyYW5zYWN0aW9uIElEICgtYykgbXVzdCBiZSBlaXRoZXIgMCBvciBncmVhdGVyIHRo YW4gb3IgZXF1YWwgdG8gMiIpOwogCQkJCQlleGl0KDEpOwogCQkJCX0KIAogCQkJCWlmIChz ZXRfbmV3ZXN0X2NvbW1pdF90c194aWQgPCAyICYmCiAJCQkJCXNldF9uZXdlc3RfY29tbWl0 X3RzX3hpZCAhPSAwKQogCQkJCXsKLQkJCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiB0cmFu c2FjdGlvbiBJRCAoLWMpIG11c3QgYmUgZWl0aGVyIDAgb3IgZ3JlYXRlciB0aGFuIG9yIGVx dWFsIHRvIDJcbiIpLCBwcm9nbmFtZSk7CisJCQkJCXBnX2xvZ19lcnJvcigidHJhbnNhY3Rp b24gSUQgKC1jKSBtdXN0IGJlIGVpdGhlciAwIG9yIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0 byAyIik7CiAJCQkJCWV4aXQoMSk7CiAJCQkJfQogCQkJCWJyZWFrOwpAQCAtMjE4LDEzICsy MTksMTMgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCQkJCXNldF9vaWQgPSBz dHJ0b3VsKG9wdGFyZywgJmVuZHB0ciwgMCk7CiAJCQkJaWYgKGVuZHB0ciA9PSBvcHRhcmcg fHwgKmVuZHB0ciAhPSAnXDAnKQogCQkJCXsKLQkJCQkJZnByaW50ZihzdGRlcnIsIF8oIiVz OiBpbnZhbGlkIGFyZ3VtZW50IGZvciBvcHRpb24gJXNcbiIpLCBwcm9nbmFtZSwgIi1vIik7 CisJCQkJCXBnX2xvZ19lcnJvcigiaW52YWxpZCBhcmd1bWVudCBmb3Igb3B0aW9uICVzIiwg Ii1vIik7CiAJCQkJCWZwcmludGYoc3RkZXJyLCBfKCJUcnkgXCIlcyAtLWhlbHBcIiBmb3Ig bW9yZSBpbmZvcm1hdGlvbi5cbiIpLCBwcm9nbmFtZSk7CiAJCQkJCWV4aXQoMSk7CiAJCQkJ fQogCQkJCWlmIChzZXRfb2lkID09IDApCiAJCQkJewotCQkJCQlmcHJpbnRmKHN0ZGVyciwg XygiJXM6IE9JRCAoLW8pIG11c3Qgbm90IGJlIDBcbiIpLCBwcm9nbmFtZSk7CisJCQkJCXBn X2xvZ19lcnJvcigiT0lEICgtbykgbXVzdCBub3QgYmUgMCIpOwogCQkJCQlleGl0KDEpOwog CQkJCX0KIAkJCQlicmVhazsKQEAgLTIzMyw3ICsyMzQsNyBAQCBtYWluKGludCBhcmdjLCBj aGFyICphcmd2W10pCiAJCQkJc2V0X214aWQgPSBzdHJ0b3VsKG9wdGFyZywgJmVuZHB0ciwg MCk7CiAJCQkJaWYgKGVuZHB0ciA9PSBvcHRhcmcgfHwgKmVuZHB0ciAhPSAnLCcpCiAJCQkJ ewotCQkJCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGludmFsaWQgYXJndW1lbnQgZm9yIG9w dGlvbiAlc1xuIiksIHByb2duYW1lLCAiLW0iKTsKKwkJCQkJcGdfbG9nX2Vycm9yKCJpbnZh bGlkIGFyZ3VtZW50IGZvciBvcHRpb24gJXMiLCAiLW0iKTsKIAkJCQkJZnByaW50ZihzdGRl cnIsIF8oIlRyeSBcIiVzIC0taGVscFwiIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuIiksIHBy b2duYW1lKTsKIAkJCQkJZXhpdCgxKTsKIAkJCQl9CkBAIC0yNDEsMTMgKzI0MiwxMyBAQCBt YWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJCQkJc2V0X29sZGVzdG14aWQgPSBzdHJ0 b3VsKGVuZHB0ciArIDEsICZlbmRwdHIyLCAwKTsKIAkJCQlpZiAoZW5kcHRyMiA9PSBlbmRw dHIgKyAxIHx8ICplbmRwdHIyICE9ICdcMCcpCiAJCQkJewotCQkJCQlmcHJpbnRmKHN0ZGVy ciwgXygiJXM6IGludmFsaWQgYXJndW1lbnQgZm9yIG9wdGlvbiAlc1xuIiksIHByb2duYW1l LCAiLW0iKTsKKwkJCQkJcGdfbG9nX2Vycm9yKCJpbnZhbGlkIGFyZ3VtZW50IGZvciBvcHRp b24gJXMiLCAiLW0iKTsKIAkJCQkJZnByaW50ZihzdGRlcnIsIF8oIlRyeSBcIiVzIC0taGVs cFwiIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuIiksIHByb2duYW1lKTsKIAkJCQkJZXhpdCgx KTsKIAkJCQl9CiAJCQkJaWYgKHNldF9teGlkID09IDApCiAJCQkJewotCQkJCQlmcHJpbnRm KHN0ZGVyciwgXygiJXM6IG11bHRpdHJhbnNhY3Rpb24gSUQgKC1tKSBtdXN0IG5vdCBiZSAw XG4iKSwgcHJvZ25hbWUpOworCQkJCQlwZ19sb2dfZXJyb3IoIm11bHRpdHJhbnNhY3Rpb24g SUQgKC1tKSBtdXN0IG5vdCBiZSAwIik7CiAJCQkJCWV4aXQoMSk7CiAJCQkJfQogCkBAIC0y NTcsOCArMjU4LDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCQkJCSAqLwog CQkJCWlmIChzZXRfb2xkZXN0bXhpZCA9PSAwKQogCQkJCXsKLQkJCQkJZnByaW50ZihzdGRl cnIsIF8oIiVzOiBvbGRlc3QgbXVsdGl0cmFuc2FjdGlvbiBJRCAoLW0pIG11c3Qgbm90IGJl IDBcbiIpLAotCQkJCQkJCXByb2duYW1lKTsKKwkJCQkJcGdfbG9nX2Vycm9yKCJvbGRlc3Qg bXVsdGl0cmFuc2FjdGlvbiBJRCAoLW0pIG11c3Qgbm90IGJlIDAiKTsKIAkJCQkJZXhpdCgx KTsKIAkJCQl9CiAJCQkJYnJlYWs7CkBAIC0yNjcsMTMgKzI2NywxMyBAQCBtYWluKGludCBh cmdjLCBjaGFyICphcmd2W10pCiAJCQkJc2V0X214b2ZmID0gc3RydG91bChvcHRhcmcsICZl bmRwdHIsIDApOwogCQkJCWlmIChlbmRwdHIgPT0gb3B0YXJnIHx8ICplbmRwdHIgIT0gJ1ww JykKIAkJCQl7Ci0JCQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczogaW52YWxpZCBhcmd1bWVu dCBmb3Igb3B0aW9uICVzXG4iKSwgcHJvZ25hbWUsICItTyIpOworCQkJCQlwZ19sb2dfZXJy b3IoImludmFsaWQgYXJndW1lbnQgZm9yIG9wdGlvbiAlcyIsICItTyIpOwogCQkJCQlmcHJp bnRmKHN0ZGVyciwgXygiVHJ5IFwiJXMgLS1oZWxwXCIgZm9yIG1vcmUgaW5mb3JtYXRpb24u XG4iKSwgcHJvZ25hbWUpOwogCQkJCQlleGl0KDEpOwogCQkJCX0KIAkJCQlpZiAoc2V0X214 b2ZmID09IC0xKQogCQkJCXsKLQkJCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBtdWx0aXRy YW5zYWN0aW9uIG9mZnNldCAoLU8pIG11c3Qgbm90IGJlIC0xXG4iKSwgcHJvZ25hbWUpOwor CQkJCQlwZ19sb2dfZXJyb3IoIm11bHRpdHJhbnNhY3Rpb24gb2Zmc2V0ICgtTykgbXVzdCBu b3QgYmUgLTEiKTsKIAkJCQkJZXhpdCgxKTsKIAkJCQl9CiAJCQkJYnJlYWs7CkBAIC0yODEs NyArMjgxLDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCQkJY2FzZSAnbCc6 CiAJCQkJaWYgKHN0cnNwbihvcHRhcmcsICIwMTIzNDU2Nzg5MEFCQ0RFRmFiY2RlZiIpICE9 IFhMT0dfRk5BTUVfTEVOKQogCQkJCXsKLQkJCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBp bnZhbGlkIGFyZ3VtZW50IGZvciBvcHRpb24gJXNcbiIpLCBwcm9nbmFtZSwgIi1sIik7CisJ CQkJCXBnX2xvZ19lcnJvcigiaW52YWxpZCBhcmd1bWVudCBmb3Igb3B0aW9uICVzIiwgIi1s Iik7CiAJCQkJCWZwcmludGYoc3RkZXJyLCBfKCJUcnkgXCIlcyAtLWhlbHBcIiBmb3IgbW9y ZSBpbmZvcm1hdGlvbi5cbiIpLCBwcm9nbmFtZSk7CiAJCQkJCWV4aXQoMSk7CiAJCQkJfQpA QCAtMjk3LDE2ICsyOTcsMTIgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCQkJ CXNldF93YWxfc2Vnc2l6ZSA9IHN0cnRvbChvcHRhcmcsICZlbmRwdHIsIDEwKSAqIDEwMjQg KiAxMDI0OwogCQkJCWlmIChlbmRwdHIgPT0gb3B0YXJnIHx8ICplbmRwdHIgIT0gJ1wwJykK IAkJCQl7Ci0JCQkJCWZwcmludGYoc3RkZXJyLAotCQkJCQkJCV8oIiVzOiBhcmd1bWVudCBv ZiAtLXdhbC1zZWdzaXplIG11c3QgYmUgYSBudW1iZXJcbiIpLAotCQkJCQkJCXByb2duYW1l KTsKKwkJCQkJcGdfbG9nX2Vycm9yKCJhcmd1bWVudCBvZiAtLXdhbC1zZWdzaXplIG11c3Qg YmUgYSBudW1iZXIiKTsKIAkJCQkJZXhpdCgxKTsKIAkJCQl9CiAJCQkJaWYgKCFJc1ZhbGlk V2FsU2VnU2l6ZShzZXRfd2FsX3NlZ3NpemUpKQogCQkJCXsKLQkJCQkJZnByaW50ZihzdGRl cnIsCi0JCQkJCQkJXygiJXM6IGFyZ3VtZW50IG9mIC0td2FsLXNlZ3NpemUgbXVzdCBiZSBh IHBvd2VyIG9mIDIgYmV0d2VlbiAxIGFuZCAxMDI0XG4iKSwKLQkJCQkJCQlwcm9nbmFtZSk7 CisJCQkJCXBnX2xvZ19lcnJvcigiYXJndW1lbnQgb2YgLS13YWwtc2Vnc2l6ZSBtdXN0IGJl IGEgcG93ZXIgb2YgMiBiZXR3ZWVuIDEgYW5kIDEwMjQiKTsKIAkJCQkJZXhpdCgxKTsKIAkJ CQl9CiAJCQkJYnJlYWs7CkBAIC0zMjMsOCArMzE5LDggQEAgbWFpbihpbnQgYXJnYywgY2hh ciAqYXJndltdKQogCS8qIENvbXBsYWluIGlmIGFueSBhcmd1bWVudHMgcmVtYWluICovCiAJ aWYgKG9wdGluZCA8IGFyZ2MpCiAJewotCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IHRvbyBt YW55IGNvbW1hbmQtbGluZSBhcmd1bWVudHMgKGZpcnN0IGlzIFwiJXNcIilcbiIpLAotCQkJ CXByb2duYW1lLCBhcmd2W29wdGluZF0pOworCQlwZ19sb2dfZXJyb3IoInRvbyBtYW55IGNv bW1hbmQtbGluZSBhcmd1bWVudHMgKGZpcnN0IGlzIFwiJXNcIikiLAorCQkJCQkgYXJndltv cHRpbmRdKTsKIAkJZnByaW50ZihzdGRlcnIsIF8oIlRyeSBcIiVzIC0taGVscFwiIGZvciBt b3JlIGluZm9ybWF0aW9uLlxuIiksCiAJCQkJcHJvZ25hbWUpOwogCQlleGl0KDEpOwpAQCAt MzMyLDcgKzMyOCw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAogCWlmIChE YXRhRGlyID09IE5VTEwpCiAJewotCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IG5vIGRhdGEg ZGlyZWN0b3J5IHNwZWNpZmllZFxuIiksIHByb2duYW1lKTsKKwkJcGdfbG9nX2Vycm9yKCJu byBkYXRhIGRpcmVjdG9yeSBzcGVjaWZpZWQiKTsKIAkJZnByaW50ZihzdGRlcnIsIF8oIlRy eSBcIiVzIC0taGVscFwiIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuIiksIHByb2duYW1lKTsK IAkJZXhpdCgxKTsKIAl9CkBAIC0zNDYsMjEgKzM0MiwyMCBAQCBtYWluKGludCBhcmdjLCBj aGFyICphcmd2W10pCiAjaWZuZGVmIFdJTjMyCiAJaWYgKGdldGV1aWQoKSA9PSAwKQogCXsK LQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBjYW5ub3QgYmUgZXhlY3V0ZWQgYnkgXCJyb290 XCJcbiIpLAotCQkJCXByb2duYW1lKTsKLQkJZnByaW50ZihzdGRlcnIsIF8oIllvdSBtdXN0 IHJ1biAlcyBhcyB0aGUgUG9zdGdyZVNRTCBzdXBlcnVzZXIuXG4iKSwKLQkJCQlwcm9nbmFt ZSk7CisJCXBnX2xvZ19lcnJvcigiY2Fubm90IGJlIGV4ZWN1dGVkIGJ5IFwicm9vdFwiIik7 CisJCXBnX2xvZ19pbmZvKCJZb3UgbXVzdCBydW4gJXMgYXMgdGhlIFBvc3RncmVTUUwgc3Vw ZXJ1c2VyLiIsCisJCQkJCXByb2duYW1lKTsKIAkJZXhpdCgxKTsKIAl9CiAjZW5kaWYKIAot CWdldF9yZXN0cmljdGVkX3Rva2VuKHByb2duYW1lKTsKKwlnZXRfcmVzdHJpY3RlZF90b2tl bigpOwogCiAJLyogU2V0IG1hc2sgYmFzZWQgb24gUEdEQVRBIHBlcm1pc3Npb25zICovCiAJ aWYgKCFHZXREYXRhRGlyZWN0b3J5Q3JlYXRlUGVybShEYXRhRGlyKSkKIAl7Ci0JCWZwcmlu dGYoc3RkZXJyLCBfKCIlczogY291bGQgbm90IHJlYWQgcGVybWlzc2lvbnMgb2YgZGlyZWN0 b3J5IFwiJXNcIjogJXNcbiIpLAotCQkJCXByb2duYW1lLCBEYXRhRGlyLCBzdHJlcnJvcihl cnJubykpOworCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCByZWFkIHBlcm1pc3Npb25zIG9m IGRpcmVjdG9yeSBcIiVzXCI6ICVtIiwKKwkJCQkJIERhdGFEaXIpOwogCQlleGl0KDEpOwog CX0KIApAQCAtMzY4LDggKzM2Myw4IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkK IAogCWlmIChjaGRpcihEYXRhRGlyKSA8IDApCiAJewotCQlmcHJpbnRmKHN0ZGVyciwgXygi JXM6IGNvdWxkIG5vdCBjaGFuZ2UgZGlyZWN0b3J5IHRvIFwiJXNcIjogJXNcbiIpLAotCQkJ CXByb2duYW1lLCBEYXRhRGlyLCBzdHJlcnJvcihlcnJubykpOworCQlwZ19sb2dfZXJyb3Io ImNvdWxkIG5vdCBjaGFuZ2UgZGlyZWN0b3J5IHRvIFwiJXNcIjogJW0iLAorCQkJCQkgRGF0 YURpcik7CiAJCWV4aXQoMSk7CiAJfQogCkBAIC0zODQsMTYgKzM3OSwxNSBAQCBtYWluKGlu dCBhcmdjLCBjaGFyICphcmd2W10pCiAJewogCQlpZiAoZXJybm8gIT0gRU5PRU5UKQogCQl7 Ci0JCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCBvcGVuIGZpbGUgXCIlc1wi IGZvciByZWFkaW5nOiAlc1xuIiksCi0JCQkJCXByb2duYW1lLCAicG9zdG1hc3Rlci5waWQi LCBzdHJlcnJvcihlcnJubykpOworCQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3Qgb3BlbiBm aWxlIFwiJXNcIiBmb3IgcmVhZGluZzogJW0iLAorCQkJCQkJICJwb3N0bWFzdGVyLnBpZCIp OwogCQkJZXhpdCgxKTsKIAkJfQogCX0KIAllbHNlCiAJewotCQlmcHJpbnRmKHN0ZGVyciwg XygiJXM6IGxvY2sgZmlsZSBcIiVzXCIgZXhpc3RzXG4iCi0JCQkJCQkgICJJcyBhIHNlcnZl ciBydW5uaW5nPyAgSWYgbm90LCBkZWxldGUgdGhlIGxvY2sgZmlsZSBhbmQgdHJ5IGFnYWlu LlxuIiksCi0JCQkJcHJvZ25hbWUsICJwb3N0bWFzdGVyLnBpZCIpOworCQlwZ19sb2dfZXJy b3IoImxvY2sgZmlsZSBcIiVzXCIgZXhpc3RzIiwgInBvc3RtYXN0ZXIucGlkIik7CisJCXBn X2xvZ19pbmZvKCJJcyBhIHNlcnZlciBydW5uaW5nPyAgSWYgbm90LCBkZWxldGUgdGhlIGxv Y2sgZmlsZSBhbmQgdHJ5IGFnYWluLiIpOwogCQlleGl0KDEpOwogCX0KIApAQCAtNTQ1LDgg KzUzOSw4IEBAIENoZWNrRGF0YVZlcnNpb24odm9pZCkKIAogCWlmICgodmVyX2ZkID0gZm9w ZW4odmVyX2ZpbGUsICJyIikpID09IE5VTEwpCiAJewotCQlmcHJpbnRmKHN0ZGVyciwgXygi JXM6IGNvdWxkIG5vdCBvcGVuIGZpbGUgXCIlc1wiIGZvciByZWFkaW5nOiAlc1xuIiksCi0J CQkJcHJvZ25hbWUsIHZlcl9maWxlLCBzdHJlcnJvcihlcnJubykpOworCQlwZ19sb2dfZXJy b3IoImNvdWxkIG5vdCBvcGVuIGZpbGUgXCIlc1wiIGZvciByZWFkaW5nOiAlbSIsCisJCQkJ CSB2ZXJfZmlsZSk7CiAJCWV4aXQoMSk7CiAJfQogCkBAIC01NTQsMTUgKzU0OCw5IEBAIENo ZWNrRGF0YVZlcnNpb24odm9pZCkKIAlpZiAoIWZnZXRzKHJhd2xpbmUsIHNpemVvZihyYXds aW5lKSwgdmVyX2ZkKSkKIAl7CiAJCWlmICghZmVycm9yKHZlcl9mZCkpCi0JCXsKLQkJCWZw cmludGYoc3RkZXJyLCBfKCIlczogdW5leHBlY3RlZCBlbXB0eSBmaWxlIFwiJXNcIlxuIiks Ci0JCQkJCXByb2duYW1lLCB2ZXJfZmlsZSk7Ci0JCX0KKwkJCXBnX2xvZ19lcnJvcigidW5l eHBlY3RlZCBlbXB0eSBmaWxlIFwiJXNcIiIsIHZlcl9maWxlKTsKIAkJZWxzZQotCQl7Ci0J CQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCByZWFkIGZpbGUgXCIlc1wiOiAl c1xuIiksCi0JCQkJCXByb2duYW1lLCB2ZXJfZmlsZSwgc3RyZXJyb3IoZXJybm8pKTsKLQkJ fQorCQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgcmVhZCBmaWxlIFwiJXNcIjogJW0iLCB2 ZXJfZmlsZSk7CiAJCWV4aXQoMSk7CiAJfQogCkBAIC01NzcsOSArNTY1LDkgQEAgQ2hlY2tE YXRhVmVyc2lvbih2b2lkKQogCiAJaWYgKHN0cmNtcChyYXdsaW5lLCBQR19NQUpPUlZFUlNJ T04pICE9IDApCiAJewotCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGRhdGEgZGlyZWN0b3J5 IGlzIG9mIHdyb25nIHZlcnNpb25cbiIKLQkJCQkJCSAgIkZpbGUgXCIlc1wiIGNvbnRhaW5z IFwiJXNcIiwgd2hpY2ggaXMgbm90IGNvbXBhdGlibGUgd2l0aCB0aGlzIHByb2dyYW0ncyB2 ZXJzaW9uIFwiJXNcIi5cbiIpLAotCQkJCXByb2duYW1lLCB2ZXJfZmlsZSwgcmF3bGluZSwg UEdfTUFKT1JWRVJTSU9OKTsKKwkJcGdfbG9nX2Vycm9yKCJkYXRhIGRpcmVjdG9yeSBpcyBv ZiB3cm9uZyB2ZXJzaW9uIik7CisJCXBnX2xvZ19pbmZvKCJGaWxlIFwiJXNcIiBjb250YWlu cyBcIiVzXCIsIHdoaWNoIGlzIG5vdCBjb21wYXRpYmxlIHdpdGggdGhpcyBwcm9ncmFtJ3Mg dmVyc2lvbiBcIiVzXCIuIiwKKwkJCQkJdmVyX2ZpbGUsIHJhd2xpbmUsIFBHX01BSk9SVkVS U0lPTik7CiAJCWV4aXQoMSk7CiAJfQogCkBAIC02MDgsMTMgKzU5NiwxMyBAQCBSZWFkQ29u dHJvbEZpbGUodm9pZCkKIAkJICogYXJlIHdlJ3ZlIGJlZW4gaGFuZGVkIGEgYmFkIERhdGFE aXIgcGF0aCwgc28gZ2l2ZSB1cC4gVXNlciBjYW4gZG8KIAkJICogInRvdWNoIHBnX2NvbnRy b2wiIHRvIGZvcmNlIHVzIHRvIHByb2NlZWQuCiAJCSAqLwotCQlmcHJpbnRmKHN0ZGVyciwg XygiJXM6IGNvdWxkIG5vdCBvcGVuIGZpbGUgXCIlc1wiIGZvciByZWFkaW5nOiAlc1xuIiks Ci0JCQkJcHJvZ25hbWUsIFhMT0dfQ09OVFJPTF9GSUxFLCBzdHJlcnJvcihlcnJubykpOwor CQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBvcGVuIGZpbGUgXCIlc1wiIGZvciByZWFkaW5n OiAlbSIsCisJCQkJCSBYTE9HX0NPTlRST0xfRklMRSk7CiAJCWlmIChlcnJubyA9PSBFTk9F TlQpCi0JCQlmcHJpbnRmKHN0ZGVyciwgXygiSWYgeW91IGFyZSBzdXJlIHRoZSBkYXRhIGRp cmVjdG9yeSBwYXRoIGlzIGNvcnJlY3QsIGV4ZWN1dGVcbiIKLQkJCQkJCQkgICIgIHRvdWNo ICVzXG4iCi0JCQkJCQkJICAiYW5kIHRyeSBhZ2Fpbi5cbiIpLAotCQkJCQlYTE9HX0NPTlRS T0xfRklMRSk7CisJCQlwZ19sb2dfaW5mbygiSWYgeW91IGFyZSBzdXJlIHRoZSBkYXRhIGRp cmVjdG9yeSBwYXRoIGlzIGNvcnJlY3QsIGV4ZWN1dGVcbiIKKwkJCQkJCSIgIHRvdWNoICVz XG4iCisJCQkJCQkiYW5kIHRyeSBhZ2Fpbi4iLAorCQkJCQkJWExPR19DT05UUk9MX0ZJTEUp OwogCQlleGl0KDEpOwogCX0KIApAQCAtNjI0LDggKzYxMiw3IEBAIFJlYWRDb250cm9sRmls ZSh2b2lkKQogCWxlbiA9IHJlYWQoZmQsIGJ1ZmZlciwgUEdfQ09OVFJPTF9GSUxFX1NJWkUp OwogCWlmIChsZW4gPCAwKQogCXsKLQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBjb3VsZCBu b3QgcmVhZCBmaWxlIFwiJXNcIjogJXNcbiIpLAotCQkJCXByb2duYW1lLCBYTE9HX0NPTlRS T0xfRklMRSwgc3RyZXJyb3IoZXJybm8pKTsKKwkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3Qg cmVhZCBmaWxlIFwiJXNcIjogJW0iLCBYTE9HX0NPTlRST0xfRklMRSk7CiAJCWV4aXQoMSk7 CiAJfQogCWNsb3NlKGZkKTsKQEAgLTY0Myw5ICs2MzAsNyBAQCBSZWFkQ29udHJvbEZpbGUo dm9pZCkKIAkJaWYgKCFFUV9DUkMzMkMoY3JjLCAoKENvbnRyb2xGaWxlRGF0YSAqKSBidWZm ZXIpLT5jcmMpKQogCQl7CiAJCQkvKiBXZSB3aWxsIHVzZSB0aGUgZGF0YSBidXQgdHJlYXQg aXQgYXMgZ3Vlc3NlZC4gKi8KLQkJCWZwcmludGYoc3RkZXJyLAotCQkJCQlfKCIlczogcGdf Y29udHJvbCBleGlzdHMgYnV0IGhhcyBpbnZhbGlkIENSQzsgcHJvY2VlZCB3aXRoIGNhdXRp b25cbiIpLAotCQkJCQlwcm9nbmFtZSk7CisJCQlwZ19sb2dfd2FybmluZygicGdfY29udHJv bCBleGlzdHMgYnV0IGhhcyBpbnZhbGlkIENSQzsgcHJvY2VlZCB3aXRoIGNhdXRpb24iKTsK IAkJCWd1ZXNzZWQgPSB0cnVlOwogCQl9CiAKQEAgLTY1NCwxMSArNjM5LDEwIEBAIFJlYWRD b250cm9sRmlsZSh2b2lkKQogCQkvKiByZXR1cm4gZmFsc2UgaWYgV0FMIHNlZ21lbnQgc2l6 ZSBpcyBub3QgdmFsaWQgKi8KIAkJaWYgKCFJc1ZhbGlkV2FsU2VnU2l6ZShDb250cm9sRmls ZS54bG9nX3NlZ19zaXplKSkKIAkJewotCQkJZnByaW50ZihzdGRlcnIsCi0JCQkJCW5nZXR0 ZXh0KCIlczogcGdfY29udHJvbCBzcGVjaWZpZXMgaW52YWxpZCBXQUwgc2VnbWVudCBzaXpl ICglZCBieXRlKTsgcHJvY2VlZCB3aXRoIGNhdXRpb25cbiIsCi0JCQkJCQkJICIlczogcGdf Y29udHJvbCBzcGVjaWZpZXMgaW52YWxpZCBXQUwgc2VnbWVudCBzaXplICglZCBieXRlcyk7 IHByb2NlZWQgd2l0aCBjYXV0aW9uXG4iLAotCQkJCQkJCSBDb250cm9sRmlsZS54bG9nX3Nl Z19zaXplKSwKLQkJCQkJcHJvZ25hbWUsIENvbnRyb2xGaWxlLnhsb2dfc2VnX3NpemUpOwor CQkJcGdfbG9nX3dhcm5pbmcobmdldHRleHQoInBnX2NvbnRyb2wgc3BlY2lmaWVzIGludmFs aWQgV0FMIHNlZ21lbnQgc2l6ZSAoJWQgYnl0ZSk7IHByb2NlZWQgd2l0aCBjYXV0aW9uIiwK KwkJCQkJCQkJCSJwZ19jb250cm9sIHNwZWNpZmllcyBpbnZhbGlkIFdBTCBzZWdtZW50IHNp emUgKCVkIGJ5dGVzKTsgcHJvY2VlZCB3aXRoIGNhdXRpb24iLAorCQkJCQkJCQkJQ29udHJv bEZpbGUueGxvZ19zZWdfc2l6ZSksCisJCQkJCQkgICBDb250cm9sRmlsZS54bG9nX3NlZ19z aXplKTsKIAkJCXJldHVybiBmYWxzZTsKIAkJfQogCkBAIC02NjYsOCArNjUwLDcgQEAgUmVh ZENvbnRyb2xGaWxlKHZvaWQpCiAJfQogCiAJLyogTG9va3MgbGlrZSBpdCdzIGEgbWVzcy4g Ki8KLQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IHBnX2NvbnRyb2wgZXhpc3RzIGJ1dCBpcyBi cm9rZW4gb3Igd3JvbmcgdmVyc2lvbjsgaWdub3JpbmcgaXRcbiIpLAotCQkJcHJvZ25hbWUp OworCXBnX2xvZ193YXJuaW5nKCJwZ19jb250cm9sIGV4aXN0cyBidXQgaXMgYnJva2VuIG9y IHdyb25nIHZlcnNpb247IGlnbm9yaW5nIGl0Iik7CiAJcmV0dXJuIGZhbHNlOwogfQogCkBA IC05ODMsOCArOTY2LDcgQEAgUmV3cml0ZUNvbnRyb2xGaWxlKHZvaWQpCiAJCQkgIHBnX2Zp bGVfY3JlYXRlX21vZGUpOwogCWlmIChmZCA8IDApCiAJewotCQlmcHJpbnRmKHN0ZGVyciwg XygiJXM6IGNvdWxkIG5vdCBjcmVhdGUgcGdfY29udHJvbCBmaWxlOiAlc1xuIiksCi0JCQkJ cHJvZ25hbWUsIHN0cmVycm9yKGVycm5vKSk7CisJCXBnX2xvZ19lcnJvcigiY291bGQgbm90 IGNyZWF0ZSBwZ19jb250cm9sIGZpbGU6ICVtIik7CiAJCWV4aXQoMSk7CiAJfQogCkBAIC05 OTQsMTQgKzk3NiwxMyBAQCBSZXdyaXRlQ29udHJvbEZpbGUodm9pZCkKIAkJLyogaWYgd3Jp dGUgZGlkbid0IHNldCBlcnJubywgYXNzdW1lIHByb2JsZW0gaXMgbm8gZGlzayBzcGFjZSAq LwogCQlpZiAoZXJybm8gPT0gMCkKIAkJCWVycm5vID0gRU5PU1BDOwotCQlmcHJpbnRmKHN0 ZGVyciwgXygiJXM6IGNvdWxkIG5vdCB3cml0ZSBwZ19jb250cm9sIGZpbGU6ICVzXG4iKSwK LQkJCQlwcm9nbmFtZSwgc3RyZXJyb3IoZXJybm8pKTsKKwkJcGdfbG9nX2Vycm9yKCJjb3Vs ZCBub3Qgd3JpdGUgcGdfY29udHJvbCBmaWxlOiAlbSIpOwogCQlleGl0KDEpOwogCX0KIAog CWlmIChmc3luYyhmZCkgIT0gMCkKIAl7Ci0JCWZwcmludGYoc3RkZXJyLCBfKCIlczogZnN5 bmMgZXJyb3I6ICVzXG4iKSwgcHJvZ25hbWUsIHN0cmVycm9yKGVycm5vKSk7CisJCXBnX2xv Z19lcnJvcigiZnN5bmMgZXJyb3I6ICVtIik7CiAJCWV4aXQoMSk7CiAJfQogCkBAIC0xMDQx LDggKzEwMjIsNyBAQCBGaW5kRW5kT2ZYTE9HKHZvaWQpCiAJeGxkaXIgPSBvcGVuZGlyKFhM T0dESVIpOwogCWlmICh4bGRpciA9PSBOVUxMKQogCXsKLQkJZnByaW50ZihzdGRlcnIsIF8o IiVzOiBjb3VsZCBub3Qgb3BlbiBkaXJlY3RvcnkgXCIlc1wiOiAlc1xuIiksCi0JCQkJcHJv Z25hbWUsIFhMT0dESVIsIHN0cmVycm9yKGVycm5vKSk7CisJCXBnX2xvZ19lcnJvcigiY291 bGQgbm90IG9wZW4gZGlyZWN0b3J5IFwiJXNcIjogJW0iLCBYTE9HRElSKTsKIAkJZXhpdCgx KTsKIAl9CiAKQEAgLTEwNzcsMTUgKzEwNTcsMTMgQEAgRmluZEVuZE9mWExPRyh2b2lkKQog CiAJaWYgKGVycm5vKQogCXsKLQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBjb3VsZCBub3Qg cmVhZCBkaXJlY3RvcnkgXCIlc1wiOiAlc1xuIiksCi0JCQkJcHJvZ25hbWUsIFhMT0dESVIs IHN0cmVycm9yKGVycm5vKSk7CisJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IHJlYWQgZGly ZWN0b3J5IFwiJXNcIjogJW0iLCBYTE9HRElSKTsKIAkJZXhpdCgxKTsKIAl9CiAKIAlpZiAo Y2xvc2VkaXIoeGxkaXIpKQogCXsKLQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBjb3VsZCBu b3QgY2xvc2UgZGlyZWN0b3J5IFwiJXNcIjogJXNcbiIpLAotCQkJCXByb2duYW1lLCBYTE9H RElSLCBzdHJlcnJvcihlcnJubykpOworCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBjbG9z ZSBkaXJlY3RvcnkgXCIlc1wiOiAlbSIsIFhMT0dESVIpOwogCQlleGl0KDEpOwogCX0KIApA QCAtMTExMiw4ICsxMDkwLDcgQEAgS2lsbEV4aXN0aW5nWExPRyh2b2lkKQogCXhsZGlyID0g b3BlbmRpcihYTE9HRElSKTsKIAlpZiAoeGxkaXIgPT0gTlVMTCkKIAl7Ci0JCWZwcmludGYo c3RkZXJyLCBfKCIlczogY291bGQgbm90IG9wZW4gZGlyZWN0b3J5IFwiJXNcIjogJXNcbiIp LAotCQkJCXByb2duYW1lLCBYTE9HRElSLCBzdHJlcnJvcihlcnJubykpOworCQlwZ19sb2df ZXJyb3IoImNvdWxkIG5vdCBvcGVuIGRpcmVjdG9yeSBcIiVzXCI6ICVtIiwgWExPR0RJUik7 CiAJCWV4aXQoMSk7CiAJfQogCkBAIC0xMTI1LDggKzExMDIsNyBAQCBLaWxsRXhpc3RpbmdY TE9HKHZvaWQpCiAJCQlzbnByaW50ZihwYXRoLCBzaXplb2YocGF0aCksICIlcy8lcyIsIFhM T0dESVIsIHhsZGUtPmRfbmFtZSk7CiAJCQlpZiAodW5saW5rKHBhdGgpIDwgMCkKIAkJCXsK LQkJCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCBkZWxldGUgZmlsZSBcIiVz XCI6ICVzXG4iKSwKLQkJCQkJCXByb2duYW1lLCBwYXRoLCBzdHJlcnJvcihlcnJubykpOwor CQkJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IGRlbGV0ZSBmaWxlIFwiJXNcIjogJW0iLCBw YXRoKTsKIAkJCQlleGl0KDEpOwogCQkJfQogCQl9CkBAIC0xMTM0LDE1ICsxMTEwLDEzIEBA IEtpbGxFeGlzdGluZ1hMT0codm9pZCkKIAogCWlmIChlcnJubykKIAl7Ci0JCWZwcmludGYo c3RkZXJyLCBfKCIlczogY291bGQgbm90IHJlYWQgZGlyZWN0b3J5IFwiJXNcIjogJXNcbiIp LAotCQkJCXByb2duYW1lLCBYTE9HRElSLCBzdHJlcnJvcihlcnJubykpOworCQlwZ19sb2df ZXJyb3IoImNvdWxkIG5vdCByZWFkIGRpcmVjdG9yeSBcIiVzXCI6ICVtIiwgWExPR0RJUik7 CiAJCWV4aXQoMSk7CiAJfQogCiAJaWYgKGNsb3NlZGlyKHhsZGlyKSkKIAl7Ci0JCWZwcmlu dGYoc3RkZXJyLCBfKCIlczogY291bGQgbm90IGNsb3NlIGRpcmVjdG9yeSBcIiVzXCI6ICVz XG4iKSwKLQkJCQlwcm9nbmFtZSwgWExPR0RJUiwgc3RyZXJyb3IoZXJybm8pKTsKKwkJcGdf bG9nX2Vycm9yKCJjb3VsZCBub3QgY2xvc2UgZGlyZWN0b3J5IFwiJXNcIjogJW0iLCBYTE9H RElSKTsKIAkJZXhpdCgxKTsKIAl9CiB9CkBAIC0xMTYzLDggKzExMzcsNyBAQCBLaWxsRXhp c3RpbmdBcmNoaXZlU3RhdHVzKHZvaWQpCiAJeGxkaXIgPSBvcGVuZGlyKEFSQ0hTVEFURElS KTsKIAlpZiAoeGxkaXIgPT0gTlVMTCkKIAl7Ci0JCWZwcmludGYoc3RkZXJyLCBfKCIlczog Y291bGQgbm90IG9wZW4gZGlyZWN0b3J5IFwiJXNcIjogJXNcbiIpLAotCQkJCXByb2duYW1l LCBBUkNIU1RBVERJUiwgc3RyZXJyb3IoZXJybm8pKTsKKwkJcGdfbG9nX2Vycm9yKCJjb3Vs ZCBub3Qgb3BlbiBkaXJlY3RvcnkgXCIlc1wiOiAlbSIsIEFSQ0hTVEFURElSKTsKIAkJZXhp dCgxKTsKIAl9CiAKQEAgLTExNzksOCArMTE1Miw3IEBAIEtpbGxFeGlzdGluZ0FyY2hpdmVT dGF0dXModm9pZCkKIAkJCXNucHJpbnRmKHBhdGgsIHNpemVvZihwYXRoKSwgIiVzLyVzIiwg QVJDSFNUQVRESVIsIHhsZGUtPmRfbmFtZSk7CiAJCQlpZiAodW5saW5rKHBhdGgpIDwgMCkK IAkJCXsKLQkJCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCBkZWxldGUgZmls ZSBcIiVzXCI6ICVzXG4iKSwKLQkJCQkJCXByb2duYW1lLCBwYXRoLCBzdHJlcnJvcihlcnJu bykpOworCQkJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IGRlbGV0ZSBmaWxlIFwiJXNcIjog JW0iLCBwYXRoKTsKIAkJCQlleGl0KDEpOwogCQkJfQogCQl9CkBAIC0xMTg4LDE1ICsxMTYw LDEzIEBAIEtpbGxFeGlzdGluZ0FyY2hpdmVTdGF0dXModm9pZCkKIAogCWlmIChlcnJubykK IAl7Ci0JCWZwcmludGYoc3RkZXJyLCBfKCIlczogY291bGQgbm90IHJlYWQgZGlyZWN0b3J5 IFwiJXNcIjogJXNcbiIpLAotCQkJCXByb2duYW1lLCBBUkNIU1RBVERJUiwgc3RyZXJyb3Io ZXJybm8pKTsKKwkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgcmVhZCBkaXJlY3RvcnkgXCIl c1wiOiAlbSIsIEFSQ0hTVEFURElSKTsKIAkJZXhpdCgxKTsKIAl9CiAKIAlpZiAoY2xvc2Vk aXIoeGxkaXIpKQogCXsKLQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBjb3VsZCBub3QgY2xv c2UgZGlyZWN0b3J5IFwiJXNcIjogJXNcbiIpLAotCQkJCXByb2duYW1lLCBBUkNIU1RBVERJ Uiwgc3RyZXJyb3IoZXJybm8pKTsKKwkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgY2xvc2Ug ZGlyZWN0b3J5IFwiJXNcIjogJW0iLCBBUkNIU1RBVERJUik7CiAJCWV4aXQoMSk7CiAJfQog fQpAQCAtMTI2Myw4ICsxMjMzLDcgQEAgV3JpdGVFbXB0eVhMT0codm9pZCkKIAkJCSAgcGdf ZmlsZV9jcmVhdGVfbW9kZSk7CiAJaWYgKGZkIDwgMCkKIAl7Ci0JCWZwcmludGYoc3RkZXJy LCBfKCIlczogY291bGQgbm90IG9wZW4gZmlsZSBcIiVzXCI6ICVzXG4iKSwKLQkJCQlwcm9n bmFtZSwgcGF0aCwgc3RyZXJyb3IoZXJybm8pKTsKKwkJcGdfbG9nX2Vycm9yKCJjb3VsZCBu b3Qgb3BlbiBmaWxlIFwiJXNcIjogJW0iLCBwYXRoKTsKIAkJZXhpdCgxKTsKIAl9CiAKQEAg LTEyNzQsOCArMTI0Myw3IEBAIFdyaXRlRW1wdHlYTE9HKHZvaWQpCiAJCS8qIGlmIHdyaXRl IGRpZG4ndCBzZXQgZXJybm8sIGFzc3VtZSBwcm9ibGVtIGlzIG5vIGRpc2sgc3BhY2UgKi8K IAkJaWYgKGVycm5vID09IDApCiAJCQllcnJubyA9IEVOT1NQQzsKLQkJZnByaW50ZihzdGRl cnIsIF8oIiVzOiBjb3VsZCBub3Qgd3JpdGUgZmlsZSBcIiVzXCI6ICVzXG4iKSwKLQkJCQlw cm9nbmFtZSwgcGF0aCwgc3RyZXJyb3IoZXJybm8pKTsKKwkJcGdfbG9nX2Vycm9yKCJjb3Vs ZCBub3Qgd3JpdGUgZmlsZSBcIiVzXCI6ICVtIiwgcGF0aCk7CiAJCWV4aXQoMSk7CiAJfQog CkBAIC0xMjg4LDE1ICsxMjU2LDE0IEBAIFdyaXRlRW1wdHlYTE9HKHZvaWQpCiAJCXsKIAkJ CWlmIChlcnJubyA9PSAwKQogCQkJCWVycm5vID0gRU5PU1BDOwotCQkJZnByaW50ZihzdGRl cnIsIF8oIiVzOiBjb3VsZCBub3Qgd3JpdGUgZmlsZSBcIiVzXCI6ICVzXG4iKSwKLQkJCQkJ cHJvZ25hbWUsIHBhdGgsIHN0cmVycm9yKGVycm5vKSk7CisJCQlwZ19sb2dfZXJyb3IoImNv dWxkIG5vdCB3cml0ZSBmaWxlIFwiJXNcIjogJW0iLCBwYXRoKTsKIAkJCWV4aXQoMSk7CiAJ CX0KIAl9CiAKIAlpZiAoZnN5bmMoZmQpICE9IDApCiAJewotCQlmcHJpbnRmKHN0ZGVyciwg XygiJXM6IGZzeW5jIGVycm9yOiAlc1xuIiksIHByb2duYW1lLCBzdHJlcnJvcihlcnJubykp OworCQlwZ19sb2dfZXJyb3IoImZzeW5jIGVycm9yOiAlbSIpOwogCQlleGl0KDEpOwogCX0K IApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19yZXNldHdhbC90LzAwMl9jb3JydXB0ZWQucGwg Yi9zcmMvYmluL3BnX3Jlc2V0d2FsL3QvMDAyX2NvcnJ1cHRlZC5wbAppbmRleCAwMDIyZGNi OGZmLi5mOTk0MGQ3ZmM1IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX3Jlc2V0d2FsL3QvMDAy X2NvcnJ1cHRlZC5wbAorKysgYi9zcmMvYmluL3BnX3Jlc2V0d2FsL3QvMDAyX2NvcnJ1cHRl ZC5wbApAQCAtMzIsNyArMzIsNyBAQAogCTAsCiAJW3FyL3BnX2NvbnRyb2wgdmVyc2lvbiBu dW1iZXIvXSwKIAlbCi0JCXFyL3BnX3Jlc2V0d2FsOiBwZ19jb250cm9sIGV4aXN0cyBidXQg aXMgYnJva2VuIG9yIHdyb25nIHZlcnNpb247IGlnbm9yaW5nIGl0LworCQlxci9wZ19yZXNl dHdhbDogd2FybmluZzogcGdfY29udHJvbCBleGlzdHMgYnV0IGlzIGJyb2tlbiBvciB3cm9u ZyB2ZXJzaW9uOyBpZ25vcmluZyBpdC8KIAldLAogCSdwcm9jZXNzZXMgY29ycnVwdGVkIHBn X2NvbnRyb2wgYWxsIHplcm9lcycpOwogCkBAIC00OCw2ICs0OCw2IEBACiAJMCwKIAlbcXIv cGdfY29udHJvbCB2ZXJzaW9uIG51bWJlci9dLAogCVsKLQkJcXIvXFFwZ19yZXNldHdhbDog cGdfY29udHJvbCBzcGVjaWZpZXMgaW52YWxpZCBXQUwgc2VnbWVudCBzaXplICgwIGJ5dGVz KTsgcHJvY2VlZCB3aXRoIGNhdXRpb25cRS8KKwkJcXIvXFFwZ19yZXNldHdhbDogd2Fybmlu ZzogcGdfY29udHJvbCBzcGVjaWZpZXMgaW52YWxpZCBXQUwgc2VnbWVudCBzaXplICgwIGJ5 dGVzKTsgcHJvY2VlZCB3aXRoIGNhdXRpb25cRS8KIAldLAogCSdwcm9jZXNzZXMgemVybyBX QUwgc2VnbWVudCBzaXplJyk7CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX3Jld2luZC9NYWtl ZmlsZSBiL3NyYy9iaW4vcGdfcmV3aW5kL01ha2VmaWxlCmluZGV4IDJiY2ZjYzYxYWYuLjBk MjZhMzk4OWMgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfcmV3aW5kL01ha2VmaWxlCisrKyBi L3NyYy9iaW4vcGdfcmV3aW5kL01ha2VmaWxlCkBAIC0xNiw3ICsxNiw3IEBAIHRvcF9idWls ZGRpciA9IC4uLy4uLy4uCiBpbmNsdWRlICQodG9wX2J1aWxkZGlyKS9zcmMvTWFrZWZpbGUu Z2xvYmFsCiAKIG92ZXJyaWRlIENQUEZMQUdTIDo9IC1JJChsaWJwcV9zcmNkaXIpIC1ERlJP TlRFTkQgJChDUFBGTEFHUykKLUxERkxBR1NfSU5URVJOQUwgKz0gJChsaWJwcV9wZ3BvcnQp CitMREZMQUdTX0lOVEVSTkFMICs9IC1MJCh0b3BfYnVpbGRkaXIpL3NyYy9mZV91dGlscyAt bHBnZmV1dGlscyAkKGxpYnBxX3BncG9ydCkKIAogT0JKUwk9IHBnX3Jld2luZC5vIHBhcnNl eGxvZy5vIHhsb2dyZWFkZXIubyBkYXRhcGFnZW1hcC5vIHRpbWVsaW5lLm8gXAogCWZldGNo Lm8gZmlsZV9vcHMubyBjb3B5X2ZldGNoLm8gbGlicHFfZmV0Y2gubyBmaWxlbWFwLm8gbG9n Z2luZy5vIFwKQEAgLTI2LDcgKzI2LDcgQEAgRVhUUkFfQ0xFQU4gPSB4bG9ncmVhZGVyLmMK IAogYWxsOiBwZ19yZXdpbmQKIAotcGdfcmV3aW5kOiAkKE9CSlMpIHwgc3VibWFrZS1saWJw cSBzdWJtYWtlLWxpYnBncG9ydAorcGdfcmV3aW5kOiAkKE9CSlMpIHwgc3VibWFrZS1saWJw cSBzdWJtYWtlLWxpYnBncG9ydCBzdWJtYWtlLWxpYnBnZmV1dGlscwogCSQoQ0MpICQoQ0ZM QUdTKSAkXiAkKExERkxBR1MpICQoTERGTEFHU19FWCkgJChMSUJTKSAtbyAkQCQoWCkKIAog eGxvZ3JlYWRlci5jOiAlIDogJCh0b3Bfc3JjZGlyKS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJh bnNhbS8lCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX3Jld2luZC9jb3B5X2ZldGNoLmMgYi9z cmMvYmluL3BnX3Jld2luZC9jb3B5X2ZldGNoLmMKaW5kZXggMzZkNDg4OTlmNy4uMWE3YzQ1 M2JjMSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19yZXdpbmQvY29weV9mZXRjaC5jCisrKyBi L3NyYy9iaW4vcGdfcmV3aW5kL2NvcHlfZmV0Y2guYwpAQCAtNTcsOCArNTcsOCBAQCByZWN1 cnNlX2Rpcihjb25zdCBjaGFyICpkYXRhZGlyLCBjb25zdCBjaGFyICpwYXJlbnRwYXRoLAog CiAJeGxkaXIgPSBvcGVuZGlyKGZ1bGxwYXJlbnRwYXRoKTsKIAlpZiAoeGxkaXIgPT0gTlVM TCkKLQkJcGdfZmF0YWwoImNvdWxkIG5vdCBvcGVuIGRpcmVjdG9yeSBcIiVzXCI6ICVzXG4i LAotCQkJCSBmdWxscGFyZW50cGF0aCwgc3RyZXJyb3IoZXJybm8pKTsKKwkJcGdfZmF0YWwo ImNvdWxkIG5vdCBvcGVuIGRpcmVjdG9yeSBcIiVzXCI6ICVtIiwKKwkJCQkgZnVsbHBhcmVu dHBhdGgpOwogCiAJd2hpbGUgKGVycm5vID0gMCwgKHhsZGUgPSByZWFkZGlyKHhsZGlyKSkg IT0gTlVMTCkKIAl7CkBAIC04Niw4ICs4Niw4IEBAIHJlY3Vyc2VfZGlyKGNvbnN0IGNoYXIg KmRhdGFkaXIsIGNvbnN0IGNoYXIgKnBhcmVudHBhdGgsCiAJCQkJICovCiAJCQl9CiAJCQll bHNlCi0JCQkJcGdfZmF0YWwoImNvdWxkIG5vdCBzdGF0IGZpbGUgXCIlc1wiOiAlc1xuIiwK LQkJCQkJCSBmdWxscGF0aCwgc3RyZXJyb3IoZXJybm8pKTsKKwkJCQlwZ19mYXRhbCgiY291 bGQgbm90IHN0YXQgZmlsZSBcIiVzXCI6ICVtIiwKKwkJCQkJCSBmdWxscGF0aCk7CiAJCX0K IAogCQlpZiAocGFyZW50cGF0aCkKQEAgLTExNSwxMCArMTE1LDEwIEBAIHJlY3Vyc2VfZGly KGNvbnN0IGNoYXIgKmRhdGFkaXIsIGNvbnN0IGNoYXIgKnBhcmVudHBhdGgsCiAKIAkJCWxl biA9IHJlYWRsaW5rKGZ1bGxwYXRoLCBsaW5rX3RhcmdldCwgc2l6ZW9mKGxpbmtfdGFyZ2V0 KSk7CiAJCQlpZiAobGVuIDwgMCkKLQkJCQlwZ19mYXRhbCgiY291bGQgbm90IHJlYWQgc3lt Ym9saWMgbGluayBcIiVzXCI6ICVzXG4iLAotCQkJCQkJIGZ1bGxwYXRoLCBzdHJlcnJvcihl cnJubykpOworCQkJCXBnX2ZhdGFsKCJjb3VsZCBub3QgcmVhZCBzeW1ib2xpYyBsaW5rIFwi JXNcIjogJW0iLAorCQkJCQkJIGZ1bGxwYXRoKTsKIAkJCWlmIChsZW4gPj0gc2l6ZW9mKGxp bmtfdGFyZ2V0KSkKLQkJCQlwZ19mYXRhbCgic3ltYm9saWMgbGluayBcIiVzXCIgdGFyZ2V0 IGlzIHRvbyBsb25nXG4iLAorCQkJCXBnX2ZhdGFsKCJzeW1ib2xpYyBsaW5rIFwiJXNcIiB0 YXJnZXQgaXMgdG9vIGxvbmciLAogCQkJCQkJIGZ1bGxwYXRoKTsKIAkJCWxpbmtfdGFyZ2V0 W2xlbl0gPSAnXDAnOwogCkBAIC0xMzMsMTkgKzEzMywxOSBAQCByZWN1cnNlX2Rpcihjb25z dCBjaGFyICpkYXRhZGlyLCBjb25zdCBjaGFyICpwYXJlbnRwYXRoLAogCQkJCXN0cmNtcChw YXRoLCAicGdfd2FsIikgPT0gMCkKIAkJCQlyZWN1cnNlX2RpcihkYXRhZGlyLCBwYXRoLCBj YWxsYmFjayk7CiAjZWxzZQotCQkJcGdfZmF0YWwoIlwiJXNcIiBpcyBhIHN5bWJvbGljIGxp bmssIGJ1dCBzeW1ib2xpYyBsaW5rcyBhcmUgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRm b3JtXG4iLAorCQkJcGdfZmF0YWwoIlwiJXNcIiBpcyBhIHN5bWJvbGljIGxpbmssIGJ1dCBz eW1ib2xpYyBsaW5rcyBhcmUgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtIiwKIAkJ CQkJIGZ1bGxwYXRoKTsKICNlbmRpZgkJCQkJCQkvKiBIQVZFX1JFQURMSU5LICovCiAJCX0K IAl9CiAKIAlpZiAoZXJybm8pCi0JCXBnX2ZhdGFsKCJjb3VsZCBub3QgcmVhZCBkaXJlY3Rv cnkgXCIlc1wiOiAlc1xuIiwKLQkJCQkgZnVsbHBhcmVudHBhdGgsIHN0cmVycm9yKGVycm5v KSk7CisJCXBnX2ZhdGFsKCJjb3VsZCBub3QgcmVhZCBkaXJlY3RvcnkgXCIlc1wiOiAlbSIs CisJCQkJIGZ1bGxwYXJlbnRwYXRoKTsKIAogCWlmIChjbG9zZWRpcih4bGRpcikpCi0JCXBn X2ZhdGFsKCJjb3VsZCBub3QgY2xvc2UgZGlyZWN0b3J5IFwiJXNcIjogJXNcbiIsCi0JCQkJ IGZ1bGxwYXJlbnRwYXRoLCBzdHJlcnJvcihlcnJubykpOworCQlwZ19mYXRhbCgiY291bGQg bm90IGNsb3NlIGRpcmVjdG9yeSBcIiVzXCI6ICVtIiwKKwkJCQkgZnVsbHBhcmVudHBhdGgp OwogfQogCiAvKgpAQCAtMTY0LDExICsxNjQsMTEgQEAgcmV3aW5kX2NvcHlfZmlsZV9yYW5n ZShjb25zdCBjaGFyICpwYXRoLCBvZmZfdCBiZWdpbiwgb2ZmX3QgZW5kLCBib29sIHRydW5j KQogCiAJc3JjZmQgPSBvcGVuKHNyY3BhdGgsIE9fUkRPTkxZIHwgUEdfQklOQVJZLCAwKTsK IAlpZiAoc3JjZmQgPCAwKQotCQlwZ19mYXRhbCgiY291bGQgbm90IG9wZW4gc291cmNlIGZp bGUgXCIlc1wiOiAlc1xuIiwKLQkJCQkgc3JjcGF0aCwgc3RyZXJyb3IoZXJybm8pKTsKKwkJ cGdfZmF0YWwoImNvdWxkIG5vdCBvcGVuIHNvdXJjZSBmaWxlIFwiJXNcIjogJW0iLAorCQkJ CSBzcmNwYXRoKTsKIAogCWlmIChsc2VlayhzcmNmZCwgYmVnaW4sIFNFRUtfU0VUKSA9PSAt MSkKLQkJcGdfZmF0YWwoImNvdWxkIG5vdCBzZWVrIGluIHNvdXJjZSBmaWxlOiAlc1xuIiwg c3RyZXJyb3IoZXJybm8pKTsKKwkJcGdfZmF0YWwoImNvdWxkIG5vdCBzZWVrIGluIHNvdXJj ZSBmaWxlOiAlbSIpOwogCiAJb3Blbl90YXJnZXRfZmlsZShwYXRoLCB0cnVuYyk7CiAKQEAg LTE4NSwxNyArMTg1LDE3IEBAIHJld2luZF9jb3B5X2ZpbGVfcmFuZ2UoY29uc3QgY2hhciAq cGF0aCwgb2ZmX3QgYmVnaW4sIG9mZl90IGVuZCwgYm9vbCB0cnVuYykKIAkJcmVhZGxlbiA9 IHJlYWQoc3JjZmQsIGJ1Zi5kYXRhLCBsZW4pOwogCiAJCWlmIChyZWFkbGVuIDwgMCkKLQkJ CXBnX2ZhdGFsKCJjb3VsZCBub3QgcmVhZCBmaWxlIFwiJXNcIjogJXNcbiIsCi0JCQkJCSBz cmNwYXRoLCBzdHJlcnJvcihlcnJubykpOworCQkJcGdfZmF0YWwoImNvdWxkIG5vdCByZWFk IGZpbGUgXCIlc1wiOiAlbSIsCisJCQkJCSBzcmNwYXRoKTsKIAkJZWxzZSBpZiAocmVhZGxl biA9PSAwKQotCQkJcGdfZmF0YWwoInVuZXhwZWN0ZWQgRU9GIHdoaWxlIHJlYWRpbmcgZmls ZSBcIiVzXCJcbiIsIHNyY3BhdGgpOworCQkJcGdfZmF0YWwoInVuZXhwZWN0ZWQgRU9GIHdo aWxlIHJlYWRpbmcgZmlsZSBcIiVzXCIiLCBzcmNwYXRoKTsKIAogCQl3cml0ZV90YXJnZXRf cmFuZ2UoYnVmLmRhdGEsIGJlZ2luLCByZWFkbGVuKTsKIAkJYmVnaW4gKz0gcmVhZGxlbjsK IAl9CiAKIAlpZiAoY2xvc2Uoc3JjZmQpICE9IDApCi0JCXBnX2ZhdGFsKCJjb3VsZCBub3Qg Y2xvc2UgZmlsZSBcIiVzXCI6ICVzXG4iLCBzcmNwYXRoLCBzdHJlcnJvcihlcnJubykpOwor CQlwZ19mYXRhbCgiY291bGQgbm90IGNsb3NlIGZpbGUgXCIlc1wiOiAlbSIsIHNyY3BhdGgp OwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19yZXdpbmQvZGF0YXBhZ2VtYXAu YyBiL3NyYy9iaW4vcGdfcmV3aW5kL2RhdGFwYWdlbWFwLmMKaW5kZXggMDFiYjFhNDY5NC4u NGQxOWViNjYzYyAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19yZXdpbmQvZGF0YXBhZ2VtYXAu YworKysgYi9zcmMvYmluL3BnX3Jld2luZC9kYXRhcGFnZW1hcC5jCkBAIC0xMyw3ICsxMyw4 IEBACiAjaW5jbHVkZSAicG9zdGdyZXNfZmUuaCIKIAogI2luY2x1ZGUgImRhdGFwYWdlbWFw LmgiCi0jaW5jbHVkZSAibG9nZ2luZy5oIgorCisjaW5jbHVkZSAiZmVfdXRpbHMvbG9nZ2lu Zy5oIgogCiBzdHJ1Y3QgZGF0YXBhZ2VtYXBfaXRlcmF0b3IKIHsKQEAgLTEyMSw3ICsxMjIs NyBAQCBkYXRhcGFnZW1hcF9wcmludChkYXRhcGFnZW1hcF90ICptYXApCiAKIAlpdGVyID0g ZGF0YXBhZ2VtYXBfaXRlcmF0ZShtYXApOwogCXdoaWxlIChkYXRhcGFnZW1hcF9uZXh0KGl0 ZXIsICZibG9ja251bSkpCi0JCXBnX2xvZyhQR19ERUJVRywgIiAgYmxvY2sgJXVcbiIsIGJs b2NrbnVtKTsKKwkJcGdfbG9nX2RlYnVnKCJibG9jayAldSIsIGJsb2NrbnVtKTsKIAogCXBn X2ZyZWUoaXRlcik7CiB9CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX3Jld2luZC9maWxlX29w cy5jIGIvc3JjL2Jpbi9wZ19yZXdpbmQvZmlsZV9vcHMuYwppbmRleCAwYmQxMTBmOWIwLi5m NDhkY2Y5ZDQ2IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX3Jld2luZC9maWxlX29wcy5jCisr KyBiL3NyYy9iaW4vcGdfcmV3aW5kL2ZpbGVfb3BzLmMKQEAgLTYwLDggKzYwLDggQEAgb3Bl bl90YXJnZXRfZmlsZShjb25zdCBjaGFyICpwYXRoLCBib29sIHRydW5jKQogCQltb2RlIHw9 IE9fVFJVTkM7CiAJZHN0ZmQgPSBvcGVuKGRzdHBhdGgsIG1vZGUsIHBnX2ZpbGVfY3JlYXRl X21vZGUpOwogCWlmIChkc3RmZCA8IDApCi0JCXBnX2ZhdGFsKCJjb3VsZCBub3Qgb3BlbiB0 YXJnZXQgZmlsZSBcIiVzXCI6ICVzXG4iLAotCQkJCSBkc3RwYXRoLCBzdHJlcnJvcihlcnJu bykpOworCQlwZ19mYXRhbCgiY291bGQgbm90IG9wZW4gdGFyZ2V0IGZpbGUgXCIlc1wiOiAl bSIsCisJCQkJIGRzdHBhdGgpOwogfQogCiAvKgpAQCAtNzQsOCArNzQsOCBAQCBjbG9zZV90 YXJnZXRfZmlsZSh2b2lkKQogCQlyZXR1cm47CiAKIAlpZiAoY2xvc2UoZHN0ZmQpICE9IDAp Ci0JCXBnX2ZhdGFsKCJjb3VsZCBub3QgY2xvc2UgdGFyZ2V0IGZpbGUgXCIlc1wiOiAlc1xu IiwKLQkJCQkgZHN0cGF0aCwgc3RyZXJyb3IoZXJybm8pKTsKKwkJcGdfZmF0YWwoImNvdWxk IG5vdCBjbG9zZSB0YXJnZXQgZmlsZSBcIiVzXCI6ICVtIiwKKwkJCQkgZHN0cGF0aCk7CiAK IAlkc3RmZCA9IC0xOwogfQpAQCAtOTQsOCArOTQsOCBAQCB3cml0ZV90YXJnZXRfcmFuZ2Uo Y2hhciAqYnVmLCBvZmZfdCBiZWdpbiwgc2l6ZV90IHNpemUpCiAJCXJldHVybjsKIAogCWlm IChsc2Vlayhkc3RmZCwgYmVnaW4sIFNFRUtfU0VUKSA9PSAtMSkKLQkJcGdfZmF0YWwoImNv dWxkIG5vdCBzZWVrIGluIHRhcmdldCBmaWxlIFwiJXNcIjogJXNcbiIsCi0JCQkJIGRzdHBh dGgsIHN0cmVycm9yKGVycm5vKSk7CisJCXBnX2ZhdGFsKCJjb3VsZCBub3Qgc2VlayBpbiB0 YXJnZXQgZmlsZSBcIiVzXCI6ICVtIiwKKwkJCQkgZHN0cGF0aCk7CiAKIAl3cml0ZWxlZnQg PSBzaXplOwogCXAgPSBidWY7CkBAIC0xMTAsOCArMTEwLDggQEAgd3JpdGVfdGFyZ2V0X3Jh bmdlKGNoYXIgKmJ1Ziwgb2ZmX3QgYmVnaW4sIHNpemVfdCBzaXplKQogCQkJLyogaWYgd3Jp dGUgZGlkbid0IHNldCBlcnJubywgYXNzdW1lIHByb2JsZW0gaXMgbm8gZGlzayBzcGFjZSAq LwogCQkJaWYgKGVycm5vID09IDApCiAJCQkJZXJybm8gPSBFTk9TUEM7Ci0JCQlwZ19mYXRh bCgiY291bGQgbm90IHdyaXRlIGZpbGUgXCIlc1wiOiAlc1xuIiwKLQkJCQkJIGRzdHBhdGgs IHN0cmVycm9yKGVycm5vKSk7CisJCQlwZ19mYXRhbCgiY291bGQgbm90IHdyaXRlIGZpbGUg XCIlc1wiOiAlbSIsCisJCQkJCSBkc3RwYXRoKTsKIAkJfQogCiAJCXAgKz0gd3JpdGVsZW47 CkBAIC0xNjAsNyArMTYwLDcgQEAgY3JlYXRlX3RhcmdldChmaWxlX2VudHJ5X3QgKmVudHJ5 KQogCiAJCWNhc2UgRklMRV9UWVBFX1JFR1VMQVI6CiAJCQkvKiBjYW4ndCBoYXBwZW4uIFJl Z3VsYXIgZmlsZXMgYXJlIGNyZWF0ZWQgd2l0aCBvcGVuX3RhcmdldF9maWxlLiAqLwotCQkJ cGdfZmF0YWwoImludmFsaWQgYWN0aW9uIChDUkVBVEUpIGZvciByZWd1bGFyIGZpbGVcbiIp OworCQkJcGdfZmF0YWwoImludmFsaWQgYWN0aW9uIChDUkVBVEUpIGZvciByZWd1bGFyIGZp bGUiKTsKIAkJCWJyZWFrOwogCX0KIH0KQEAgLTE4Myw4ICsxODMsOCBAQCByZW1vdmVfdGFy Z2V0X2ZpbGUoY29uc3QgY2hhciAqcGF0aCwgYm9vbCBtaXNzaW5nX29rKQogCQlpZiAoZXJy bm8gPT0gRU5PRU5UICYmIG1pc3Npbmdfb2spCiAJCQlyZXR1cm47CiAKLQkJcGdfZmF0YWwo ImNvdWxkIG5vdCByZW1vdmUgZmlsZSBcIiVzXCI6ICVzXG4iLAotCQkJCSBkc3RwYXRoLCBz dHJlcnJvcihlcnJubykpOworCQlwZ19mYXRhbCgiY291bGQgbm90IHJlbW92ZSBmaWxlIFwi JXNcIjogJW0iLAorCQkJCSBkc3RwYXRoKTsKIAl9CiB9CiAKQEAgLTIwMSwxMiArMjAxLDEy IEBAIHRydW5jYXRlX3RhcmdldF9maWxlKGNvbnN0IGNoYXIgKnBhdGgsIG9mZl90IG5ld3Np emUpCiAKIAlmZCA9IG9wZW4oZHN0cGF0aCwgT19XUk9OTFksIHBnX2ZpbGVfY3JlYXRlX21v ZGUpOwogCWlmIChmZCA8IDApCi0JCXBnX2ZhdGFsKCJjb3VsZCBub3Qgb3BlbiBmaWxlIFwi JXNcIiBmb3IgdHJ1bmNhdGlvbjogJXNcbiIsCi0JCQkJIGRzdHBhdGgsIHN0cmVycm9yKGVy cm5vKSk7CisJCXBnX2ZhdGFsKCJjb3VsZCBub3Qgb3BlbiBmaWxlIFwiJXNcIiBmb3IgdHJ1 bmNhdGlvbjogJW0iLAorCQkJCSBkc3RwYXRoKTsKIAogCWlmIChmdHJ1bmNhdGUoZmQsIG5l d3NpemUpICE9IDApCi0JCXBnX2ZhdGFsKCJjb3VsZCBub3QgdHJ1bmNhdGUgZmlsZSBcIiVz XCIgdG8gJXU6ICVzXG4iLAotCQkJCSBkc3RwYXRoLCAodW5zaWduZWQgaW50KSBuZXdzaXpl LCBzdHJlcnJvcihlcnJubykpOworCQlwZ19mYXRhbCgiY291bGQgbm90IHRydW5jYXRlIGZp bGUgXCIlc1wiIHRvICV1OiAlbSIsCisJCQkJIGRzdHBhdGgsICh1bnNpZ25lZCBpbnQpIG5l d3NpemUpOwogCiAJY2xvc2UoZmQpOwogfQpAQCAtMjIxLDggKzIyMSw4IEBAIGNyZWF0ZV90 YXJnZXRfZGlyKGNvbnN0IGNoYXIgKnBhdGgpCiAKIAlzbnByaW50Zihkc3RwYXRoLCBzaXpl b2YoZHN0cGF0aCksICIlcy8lcyIsIGRhdGFkaXJfdGFyZ2V0LCBwYXRoKTsKIAlpZiAobWtk aXIoZHN0cGF0aCwgcGdfZGlyX2NyZWF0ZV9tb2RlKSAhPSAwKQotCQlwZ19mYXRhbCgiY291 bGQgbm90IGNyZWF0ZSBkaXJlY3RvcnkgXCIlc1wiOiAlc1xuIiwKLQkJCQkgZHN0cGF0aCwg c3RyZXJyb3IoZXJybm8pKTsKKwkJcGdfZmF0YWwoImNvdWxkIG5vdCBjcmVhdGUgZGlyZWN0 b3J5IFwiJXNcIjogJW0iLAorCQkJCSBkc3RwYXRoKTsKIH0KIAogc3RhdGljIHZvaWQKQEAg LTIzNSw4ICsyMzUsOCBAQCByZW1vdmVfdGFyZ2V0X2Rpcihjb25zdCBjaGFyICpwYXRoKQog CiAJc25wcmludGYoZHN0cGF0aCwgc2l6ZW9mKGRzdHBhdGgpLCAiJXMvJXMiLCBkYXRhZGly X3RhcmdldCwgcGF0aCk7CiAJaWYgKHJtZGlyKGRzdHBhdGgpICE9IDApCi0JCXBnX2ZhdGFs KCJjb3VsZCBub3QgcmVtb3ZlIGRpcmVjdG9yeSBcIiVzXCI6ICVzXG4iLAotCQkJCSBkc3Rw YXRoLCBzdHJlcnJvcihlcnJubykpOworCQlwZ19mYXRhbCgiY291bGQgbm90IHJlbW92ZSBk aXJlY3RvcnkgXCIlc1wiOiAlbSIsCisJCQkJIGRzdHBhdGgpOwogfQogCiBzdGF0aWMgdm9p ZApAQCAtMjQ5LDggKzI0OSw4IEBAIGNyZWF0ZV90YXJnZXRfc3ltbGluayhjb25zdCBjaGFy ICpwYXRoLCBjb25zdCBjaGFyICpsaW5rKQogCiAJc25wcmludGYoZHN0cGF0aCwgc2l6ZW9m KGRzdHBhdGgpLCAiJXMvJXMiLCBkYXRhZGlyX3RhcmdldCwgcGF0aCk7CiAJaWYgKHN5bWxp bmsobGluaywgZHN0cGF0aCkgIT0gMCkKLQkJcGdfZmF0YWwoImNvdWxkIG5vdCBjcmVhdGUg c3ltYm9saWMgbGluayBhdCBcIiVzXCI6ICVzXG4iLAotCQkJCSBkc3RwYXRoLCBzdHJlcnJv cihlcnJubykpOworCQlwZ19mYXRhbCgiY291bGQgbm90IGNyZWF0ZSBzeW1ib2xpYyBsaW5r IGF0IFwiJXNcIjogJW0iLAorCQkJCSBkc3RwYXRoKTsKIH0KIAogc3RhdGljIHZvaWQKQEAg LTI2Myw4ICsyNjMsOCBAQCByZW1vdmVfdGFyZ2V0X3N5bWxpbmsoY29uc3QgY2hhciAqcGF0 aCkKIAogCXNucHJpbnRmKGRzdHBhdGgsIHNpemVvZihkc3RwYXRoKSwgIiVzLyVzIiwgZGF0 YWRpcl90YXJnZXQsIHBhdGgpOwogCWlmICh1bmxpbmsoZHN0cGF0aCkgIT0gMCkKLQkJcGdf ZmF0YWwoImNvdWxkIG5vdCByZW1vdmUgc3ltYm9saWMgbGluayBcIiVzXCI6ICVzXG4iLAot CQkJCSBkc3RwYXRoLCBzdHJlcnJvcihlcnJubykpOworCQlwZ19mYXRhbCgiY291bGQgbm90 IHJlbW92ZSBzeW1ib2xpYyBsaW5rIFwiJXNcIjogJW0iLAorCQkJCSBkc3RwYXRoKTsKIH0K IAogCkBAIC0yOTQsMTIgKzI5NCwxMiBAQCBzbHVycEZpbGUoY29uc3QgY2hhciAqZGF0YWRp ciwgY29uc3QgY2hhciAqcGF0aCwgc2l6ZV90ICpmaWxlc2l6ZSkKIAlzbnByaW50ZihmdWxs cGF0aCwgc2l6ZW9mKGZ1bGxwYXRoKSwgIiVzLyVzIiwgZGF0YWRpciwgcGF0aCk7CiAKIAlp ZiAoKGZkID0gb3BlbihmdWxscGF0aCwgT19SRE9OTFkgfCBQR19CSU5BUlksIDApKSA9PSAt MSkKLQkJcGdfZmF0YWwoImNvdWxkIG5vdCBvcGVuIGZpbGUgXCIlc1wiIGZvciByZWFkaW5n OiAlc1xuIiwKLQkJCQkgZnVsbHBhdGgsIHN0cmVycm9yKGVycm5vKSk7CisJCXBnX2ZhdGFs KCJjb3VsZCBub3Qgb3BlbiBmaWxlIFwiJXNcIiBmb3IgcmVhZGluZzogJW0iLAorCQkJCSBm dWxscGF0aCk7CiAKIAlpZiAoZnN0YXQoZmQsICZzdGF0YnVmKSA8IDApCi0JCXBnX2ZhdGFs KCJjb3VsZCBub3Qgb3BlbiBmaWxlIFwiJXNcIiBmb3IgcmVhZGluZzogJXNcbiIsCi0JCQkJ IGZ1bGxwYXRoLCBzdHJlcnJvcihlcnJubykpOworCQlwZ19mYXRhbCgiY291bGQgbm90IG9w ZW4gZmlsZSBcIiVzXCIgZm9yIHJlYWRpbmc6ICVtIiwKKwkJCQkgZnVsbHBhdGgpOwogCiAJ bGVuID0gc3RhdGJ1Zi5zdF9zaXplOwogCkBAIC0zMDksMTAgKzMwOSwxMCBAQCBzbHVycEZp bGUoY29uc3QgY2hhciAqZGF0YWRpciwgY29uc3QgY2hhciAqcGF0aCwgc2l6ZV90ICpmaWxl c2l6ZSkKIAlpZiAociAhPSBsZW4pCiAJewogCQlpZiAociA8IDApCi0JCQlwZ19mYXRhbCgi Y291bGQgbm90IHJlYWQgZmlsZSBcIiVzXCI6ICVzXG4iLAotCQkJCQkgZnVsbHBhdGgsIHN0 cmVycm9yKGVycm5vKSk7CisJCQlwZ19mYXRhbCgiY291bGQgbm90IHJlYWQgZmlsZSBcIiVz XCI6ICVtIiwKKwkJCQkJIGZ1bGxwYXRoKTsKIAkJZWxzZQotCQkJcGdfZmF0YWwoImNvdWxk IG5vdCByZWFkIGZpbGUgXCIlc1wiOiByZWFkICVkIG9mICV6dVxuIiwKKwkJCXBnX2ZhdGFs KCJjb3VsZCBub3QgcmVhZCBmaWxlIFwiJXNcIjogcmVhZCAlZCBvZiAlenUiLAogCQkJCQkg ZnVsbHBhdGgsIHIsIChTaXplKSBsZW4pOwogCX0KIAljbG9zZShmZCk7CmRpZmYgLS1naXQg YS9zcmMvYmluL3BnX3Jld2luZC9maWxlbWFwLmMgYi9zcmMvYmluL3BnX3Jld2luZC9maWxl bWFwLmMKaW5kZXggMjIyYjU2ZjU4YS4uYTcxZTVjODI2YiAxMDA2NDQKLS0tIGEvc3JjL2Jp bi9wZ19yZXdpbmQvZmlsZW1hcC5jCisrKyBiL3NyYy9iaW4vcGdfcmV3aW5kL2ZpbGVtYXAu YwpAQCAtMjAsNiArMjAsNyBAQAogCiAjaW5jbHVkZSAiY29tbW9uL3N0cmluZy5oIgogI2lu Y2x1ZGUgImNhdGFsb2cvcGdfdGFibGVzcGFjZV9kLmgiCisjaW5jbHVkZSAiZmVfdXRpbHMv bG9nZ2luZy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvZmQuaCIKIAogZmlsZW1hcF90ICAqZmls ZW1hcCA9IE5VTEw7CkBAIC0xNzQsNyArMTc1LDcgQEAgcHJvY2Vzc19zb3VyY2VfZmlsZShj b25zdCBjaGFyICpwYXRoLCBmaWxlX3R5cGVfdCB0eXBlLCBzaXplX3QgbmV3c2l6ZSwKIAkg KiByZWd1bGFyIGZpbGUKIAkgKi8KIAlpZiAodHlwZSAhPSBGSUxFX1RZUEVfUkVHVUxBUiAm JiBpc1JlbERhdGFGaWxlKHBhdGgpKQotCQlwZ19mYXRhbCgiZGF0YSBmaWxlIFwiJXNcIiBp biBzb3VyY2UgaXMgbm90IGEgcmVndWxhciBmaWxlXG4iLCBwYXRoKTsKKwkJcGdfZmF0YWwo ImRhdGEgZmlsZSBcIiVzXCIgaW4gc291cmNlIGlzIG5vdCBhIHJlZ3VsYXIgZmlsZSIsIHBh dGgpOwogCiAJc25wcmludGYobG9jYWxwYXRoLCBzaXplb2YobG9jYWxwYXRoKSwgIiVzLyVz IiwgZGF0YWRpcl90YXJnZXQsIHBhdGgpOwogCkBAIC0xODIsOCArMTgzLDggQEAgcHJvY2Vz c19zb3VyY2VfZmlsZShjb25zdCBjaGFyICpwYXRoLCBmaWxlX3R5cGVfdCB0eXBlLCBzaXpl X3QgbmV3c2l6ZSwKIAlpZiAobHN0YXQobG9jYWxwYXRoLCAmc3RhdGJ1ZikgPCAwKQogCXsK IAkJaWYgKGVycm5vICE9IEVOT0VOVCkKLQkJCXBnX2ZhdGFsKCJjb3VsZCBub3Qgc3RhdCBm aWxlIFwiJXNcIjogJXNcbiIsCi0JCQkJCSBsb2NhbHBhdGgsIHN0cmVycm9yKGVycm5vKSk7 CisJCQlwZ19mYXRhbCgiY291bGQgbm90IHN0YXQgZmlsZSBcIiVzXCI6ICVtIiwKKwkJCQkJ IGxvY2FscGF0aCk7CiAKIAkJZXhpc3RzID0gZmFsc2U7CiAJfQpAQCAtMTk2LDcgKzE5Nyw3 IEBAIHByb2Nlc3Nfc291cmNlX2ZpbGUoY29uc3QgY2hhciAqcGF0aCwgZmlsZV90eXBlX3Qg dHlwZSwgc2l6ZV90IG5ld3NpemUsCiAJCQlpZiAoZXhpc3RzICYmICFTX0lTRElSKHN0YXRi dWYuc3RfbW9kZSkgJiYgc3RyY21wKHBhdGgsICJwZ193YWwiKSAhPSAwKQogCQkJewogCQkJ CS8qIGl0J3MgYSBkaXJlY3RvcnkgaW4gc291cmNlLCBidXQgbm90IGluIHRhcmdldC4gU3Ry YW5nZS4uICovCi0JCQkJcGdfZmF0YWwoIlwiJXNcIiBpcyBub3QgYSBkaXJlY3RvcnlcbiIs IGxvY2FscGF0aCk7CisJCQkJcGdfZmF0YWwoIlwiJXNcIiBpcyBub3QgYSBkaXJlY3Rvcnki LCBsb2NhbHBhdGgpOwogCQkJfQogCiAJCQlpZiAoIWV4aXN0cykKQEAgLTIxOSw3ICsyMjAs NyBAQCBwcm9jZXNzX3NvdXJjZV9maWxlKGNvbnN0IGNoYXIgKnBhdGgsIGZpbGVfdHlwZV90 IHR5cGUsIHNpemVfdCBuZXdzaXplLAogCQkJCSAqIEl0J3MgYSBzeW1ib2xpYyBsaW5rIGlu IHNvdXJjZSwgYnV0IG5vdCBpbiB0YXJnZXQuCiAJCQkJICogU3RyYW5nZS4uCiAJCQkJICov Ci0JCQkJcGdfZmF0YWwoIlwiJXNcIiBpcyBub3QgYSBzeW1ib2xpYyBsaW5rXG4iLCBsb2Nh bHBhdGgpOworCQkJCXBnX2ZhdGFsKCJcIiVzXCIgaXMgbm90IGEgc3ltYm9saWMgbGluayIs IGxvY2FscGF0aCk7CiAJCQl9CiAKIAkJCWlmICghZXhpc3RzKQpAQCAtMjMxLDcgKzIzMiw3 IEBAIHByb2Nlc3Nfc291cmNlX2ZpbGUoY29uc3QgY2hhciAqcGF0aCwgZmlsZV90eXBlX3Qg dHlwZSwgc2l6ZV90IG5ld3NpemUsCiAKIAkJY2FzZSBGSUxFX1RZUEVfUkVHVUxBUjoKIAkJ CWlmIChleGlzdHMgJiYgIVNfSVNSRUcoc3RhdGJ1Zi5zdF9tb2RlKSkKLQkJCQlwZ19mYXRh bCgiXCIlc1wiIGlzIG5vdCBhIHJlZ3VsYXIgZmlsZVxuIiwgbG9jYWxwYXRoKTsKKwkJCQlw Z19mYXRhbCgiXCIlc1wiIGlzIG5vdCBhIHJlZ3VsYXIgZmlsZSIsIGxvY2FscGF0aCk7CiAK IAkJCWlmICghZXhpc3RzIHx8ICFpc1JlbERhdGFGaWxlKHBhdGgpKQogCQkJewpAQCAtMzQ1 LDggKzM0Niw4IEBAIHByb2Nlc3NfdGFyZ2V0X2ZpbGUoY29uc3QgY2hhciAqcGF0aCwgZmls ZV90eXBlX3QgdHlwZSwgc2l6ZV90IG9sZHNpemUsCiAJaWYgKGxzdGF0KGxvY2FscGF0aCwg JnN0YXRidWYpIDwgMCkKIAl7CiAJCWlmIChlcnJubyAhPSBFTk9FTlQpCi0JCQlwZ19mYXRh bCgiY291bGQgbm90IHN0YXQgZmlsZSBcIiVzXCI6ICVzXG4iLAotCQkJCQkgbG9jYWxwYXRo LCBzdHJlcnJvcihlcnJubykpOworCQkJcGdfZmF0YWwoImNvdWxkIG5vdCBzdGF0IGZpbGUg XCIlc1wiOiAlbSIsCisJCQkJCSBsb2NhbHBhdGgpOwogCiAJCWV4aXN0cyA9IGZhbHNlOwog CX0KQEAgLTM1Nyw3ICszNTgsNyBAQCBwcm9jZXNzX3RhcmdldF9maWxlKGNvbnN0IGNoYXIg KnBhdGgsIGZpbGVfdHlwZV90IHR5cGUsIHNpemVfdCBvbGRzaXplLAogCQlpZiAobWFwLT5u bGlzdCA9PSAwKQogCQl7CiAJCQkvKiBzaG91bGQgbm90IGhhcHBlbiAqLwotCQkJcGdfZmF0 YWwoInNvdXJjZSBmaWxlIGxpc3QgaXMgZW1wdHlcbiIpOworCQkJcGdfZmF0YWwoInNvdXJj ZSBmaWxlIGxpc3QgaXMgZW1wdHkiKTsKIAkJfQogCiAJCWZpbGVtYXBfbGlzdF90b19hcnJh eShtYXApOwpAQCAtNDcyLDcgKzQ3Myw3IEBAIHByb2Nlc3NfYmxvY2tfY2hhbmdlKEZvcmtO dW1iZXIgZm9ya251bSwgUmVsRmlsZU5vZGUgcm5vZGUsIEJsb2NrTnVtYmVyIGJsa25vKQog CQkJCWJyZWFrOwogCiAJCQljYXNlIEZJTEVfQUNUSU9OX0NSRUFURToKLQkJCQlwZ19mYXRh bCgidW5leHBlY3RlZCBwYWdlIG1vZGlmaWNhdGlvbiBmb3IgZGlyZWN0b3J5IG9yIHN5bWJv bGljIGxpbmsgXCIlc1wiXG4iLCBlbnRyeS0+cGF0aCk7CisJCQkJcGdfZmF0YWwoInVuZXhw ZWN0ZWQgcGFnZSBtb2RpZmljYXRpb24gZm9yIGRpcmVjdG9yeSBvciBzeW1ib2xpYyBsaW5r IFwiJXNcIiIsIGVudHJ5LT5wYXRoKTsKIAkJfQogCX0KIAllbHNlCkBAIC01MDcsMTAgKzUw OCwxMCBAQCBjaGVja19maWxlX2V4Y2x1ZGVkKGNvbnN0IGNoYXIgKnBhdGgsIGJvb2wgaXNf c291cmNlKQogCQlpZiAoc3RyY21wKGZpbGVuYW1lLCBleGNsdWRlRmlsZXNbZXhjbHVkZUlk eF0pID09IDApCiAJCXsKIAkJCWlmIChpc19zb3VyY2UpCi0JCQkJcGdfbG9nKFBHX0RFQlVH LCAiZW50cnkgXCIlc1wiIGV4Y2x1ZGVkIGZyb20gc291cmNlIGZpbGUgbGlzdFxuIiwKKwkJ CQlwZ19sb2dfZGVidWcoImVudHJ5IFwiJXNcIiBleGNsdWRlZCBmcm9tIHNvdXJjZSBmaWxl IGxpc3QiLAogCQkJCQkgICBwYXRoKTsKIAkJCWVsc2UKLQkJCQlwZ19sb2coUEdfREVCVUcs ICJlbnRyeSBcIiVzXCIgZXhjbHVkZWQgZnJvbSB0YXJnZXQgZmlsZSBsaXN0XG4iLAorCQkJ CXBnX2xvZ19kZWJ1ZygiZW50cnkgXCIlc1wiIGV4Y2x1ZGVkIGZyb20gdGFyZ2V0IGZpbGUg bGlzdCIsCiAJCQkJCSAgIHBhdGgpOwogCQkJcmV0dXJuIHRydWU7CiAJCX0KQEAgLTUyNywx MCArNTI4LDEwIEBAIGNoZWNrX2ZpbGVfZXhjbHVkZWQoY29uc3QgY2hhciAqcGF0aCwgYm9v bCBpc19zb3VyY2UpCiAJCWlmIChzdHJzdHIocGF0aCwgbG9jYWxwYXRoKSA9PSBwYXRoKQog CQl7CiAJCQlpZiAoaXNfc291cmNlKQotCQkJCXBnX2xvZyhQR19ERUJVRywgImVudHJ5IFwi JXNcIiBleGNsdWRlZCBmcm9tIHNvdXJjZSBmaWxlIGxpc3RcbiIsCisJCQkJcGdfbG9nX2Rl YnVnKCJlbnRyeSBcIiVzXCIgZXhjbHVkZWQgZnJvbSBzb3VyY2UgZmlsZSBsaXN0IiwKIAkJ CQkJICAgcGF0aCk7CiAJCQllbHNlCi0JCQkJcGdfbG9nKFBHX0RFQlVHLCAiZW50cnkgXCIl c1wiIGV4Y2x1ZGVkIGZyb20gdGFyZ2V0IGZpbGUgbGlzdFxuIiwKKwkJCQlwZ19sb2dfZGVi dWcoImVudHJ5IFwiJXNcIiBleGNsdWRlZCBmcm9tIHRhcmdldCBmaWxlIGxpc3QiLAogCQkJ CQkgICBwYXRoKTsKIAkJCXJldHVybiB0cnVlOwogCQl9CkBAIC02NTgsMTAgKzY1OSw3IEBA IHByaW50X2ZpbGVtYXAodm9pZCkKIAkJaWYgKGVudHJ5LT5hY3Rpb24gIT0gRklMRV9BQ1RJ T05fTk9ORSB8fAogCQkJZW50cnktPnBhZ2VtYXAuYml0bWFwc2l6ZSA+IDApCiAJCXsKLQkJ CXBnX2xvZyhQR19ERUJVRywKLQkJCS8qLS0tLS0tCi0JCQkgICB0cmFuc2xhdG9yOiBmaXJz dCAlcyBpcyBhIGZpbGUgcGF0aCwgc2Vjb25kIGlzIGEga2V5d29yZCBzdWNoIGFzIENPUFkg Ki8KLQkJCQkgICAiJXMgKCVzKVxuIiwgZW50cnktPnBhdGgsCisJCQlwZ19sb2dfZGVidWco IiVzICglcykiLCBlbnRyeS0+cGF0aCwKIAkJCQkgICBhY3Rpb25fdG9fc3RyKGVudHJ5LT5h Y3Rpb24pKTsKIAogCQkJaWYgKGVudHJ5LT5wYWdlbWFwLmJpdG1hcHNpemUgPiAwKQpkaWZm IC0tZ2l0IGEvc3JjL2Jpbi9wZ19yZXdpbmQvbGlicHFfZmV0Y2guYyBiL3NyYy9iaW4vcGdf cmV3aW5kL2xpYnBxX2ZldGNoLmMKaW5kZXggOWEwODVlYTI1OC4uZTU2ZTgyZTNkYiAxMDA2 NDQKLS0tIGEvc3JjL2Jpbi9wZ19yZXdpbmQvbGlicHFfZmV0Y2guYworKysgYi9zcmMvYmlu L3BnX3Jld2luZC9saWJwcV9mZXRjaC5jCkBAIC0yNCw2ICsyNCw3IEBACiAjaW5jbHVkZSAi bGlicHEtZmUuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGVfZC5oIgogI2luY2x1ZGUg ImZlX3V0aWxzL2Nvbm5lY3QuaCIKKyNpbmNsdWRlICJmZV91dGlscy9sb2dnaW5nLmgiCiAj aW5jbHVkZSAicG9ydC9wZ19ic3dhcC5oIgogCiBzdGF0aWMgUEdjb25uICpjb25uID0gTlVM TDsKQEAgLTUyLDcgKzUzLDcgQEAgbGlicHFDb25uZWN0KGNvbnN0IGNoYXIgKmNvbm5zdHIp CiAJCXBnX2ZhdGFsKCJjb3VsZCBub3QgY29ubmVjdCB0byBzZXJ2ZXI6ICVzIiwKIAkJCQkg UFFlcnJvck1lc3NhZ2UoY29ubikpOwogCi0JcGdfbG9nKFBHX1BST0dSRVNTLCAiY29ubmVj dGVkIHRvIHNlcnZlclxuIik7CisJcGdfbG9nX2luZm8oImNvbm5lY3RlZCB0byBzZXJ2ZXIi KTsKIAogCXJlcyA9IFBRZXhlYyhjb25uLCBBTFdBWVNfU0VDVVJFX1NFQVJDSF9QQVRIX1NR TCk7CiAJaWYgKFBRcmVzdWx0U3RhdHVzKHJlcykgIT0gUEdSRVNfVFVQTEVTX09LKQpAQCAt NjgsNyArNjksNyBAQCBsaWJwcUNvbm5lY3QoY29uc3QgY2hhciAqY29ubnN0cikKIAkgKi8K IAlzdHIgPSBydW5fc2ltcGxlX3F1ZXJ5KCJTRUxFQ1QgcGdfaXNfaW5fcmVjb3ZlcnkoKSIp OwogCWlmIChzdHJjbXAoc3RyLCAiZiIpICE9IDApCi0JCXBnX2ZhdGFsKCJzb3VyY2Ugc2Vy dmVyIG11c3Qgbm90IGJlIGluIHJlY292ZXJ5IG1vZGVcbiIpOworCQlwZ19mYXRhbCgic291 cmNlIHNlcnZlciBtdXN0IG5vdCBiZSBpbiByZWNvdmVyeSBtb2RlIik7CiAJcGdfZnJlZShz dHIpOwogCiAJLyoKQEAgLTc4LDcgKzc5LDcgQEAgbGlicHFDb25uZWN0KGNvbnN0IGNoYXIg KmNvbm5zdHIpCiAJICovCiAJc3RyID0gcnVuX3NpbXBsZV9xdWVyeSgiU0hPVyBmdWxsX3Bh Z2Vfd3JpdGVzIik7CiAJaWYgKHN0cmNtcChzdHIsICJvbiIpICE9IDApCi0JCXBnX2ZhdGFs KCJmdWxsX3BhZ2Vfd3JpdGVzIG11c3QgYmUgZW5hYmxlZCBpbiB0aGUgc291cmNlIHNlcnZl clxuIik7CisJCXBnX2ZhdGFsKCJmdWxsX3BhZ2Vfd3JpdGVzIG11c3QgYmUgZW5hYmxlZCBp biB0aGUgc291cmNlIHNlcnZlciIpOwogCXBnX2ZyZWUoc3RyKTsKIAogCS8qCkBAIC0xMTMs NyArMTE0LDcgQEAgcnVuX3NpbXBsZV9xdWVyeShjb25zdCBjaGFyICpzcWwpCiAKIAkvKiBz YW5pdHkgY2hlY2sgdGhlIHJlc3VsdCBzZXQgKi8KIAlpZiAoUFFuZmllbGRzKHJlcykgIT0g MSB8fCBQUW50dXBsZXMocmVzKSAhPSAxIHx8IFBRZ2V0aXNudWxsKHJlcywgMCwgMCkpCi0J CXBnX2ZhdGFsKCJ1bmV4cGVjdGVkIHJlc3VsdCBzZXQgZnJvbSBxdWVyeVxuIik7CisJCXBn X2ZhdGFsKCJ1bmV4cGVjdGVkIHJlc3VsdCBzZXQgZnJvbSBxdWVyeSIpOwogCiAJcmVzdWx0 ID0gcGdfc3RyZHVwKFBRZ2V0dmFsdWUocmVzLCAwLCAwKSk7CiAKQEAgLTEzNiw3ICsxMzcs NyBAQCBsaWJwcUdldEN1cnJlbnRYbG9nSW5zZXJ0TG9jYXRpb24odm9pZCkKIAl2YWwgPSBy dW5fc2ltcGxlX3F1ZXJ5KCJTRUxFQ1QgcGdfY3VycmVudF93YWxfaW5zZXJ0X2xzbigpIik7 CiAKIAlpZiAoc3NjYW5mKHZhbCwgIiVYLyVYIiwgJmhpLCAmbG8pICE9IDIpCi0JCXBnX2Zh dGFsKCJ1bnJlY29nbml6ZWQgcmVzdWx0IFwiJXNcIiBmb3IgY3VycmVudCBXQUwgaW5zZXJ0 IGxvY2F0aW9uXG4iLCB2YWwpOworCQlwZ19mYXRhbCgidW5yZWNvZ25pemVkIHJlc3VsdCBc IiVzXCIgZm9yIGN1cnJlbnQgV0FMIGluc2VydCBsb2NhdGlvbiIsIHZhbCk7CiAKIAlyZXN1 bHQgPSAoKHVpbnQ2NCkgaGkpIDw8IDMyIHwgbG87CiAKQEAgLTE5MSw3ICsxOTIsNyBAQCBs aWJwcVByb2Nlc3NGaWxlTGlzdCh2b2lkKQogCiAJLyogc2FuaXR5IGNoZWNrIHRoZSByZXN1 bHQgc2V0ICovCiAJaWYgKFBRbmZpZWxkcyhyZXMpICE9IDQpCi0JCXBnX2ZhdGFsKCJ1bmV4 cGVjdGVkIHJlc3VsdCBzZXQgd2hpbGUgZmV0Y2hpbmcgZmlsZSBsaXN0XG4iKTsKKwkJcGdf ZmF0YWwoInVuZXhwZWN0ZWQgcmVzdWx0IHNldCB3aGlsZSBmZXRjaGluZyBmaWxlIGxpc3Qi KTsKIAogCS8qIFJlYWQgcmVzdWx0IHRvIGxvY2FsIHZhcmlhYmxlcyAqLwogCWZvciAoaSA9 IDA7IGkgPCBQUW50dXBsZXMocmVzKTsgaSsrKQpAQCAtMjQxLDEwICsyNDIsMTAgQEAgcmVj ZWl2ZUZpbGVDaHVua3MoY29uc3QgY2hhciAqc3FsKQogCWlmIChQUXNlbmRRdWVyeVBhcmFt cyhjb25uLCBzcWwsIDAsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIDEpICE9IDEpCiAJCXBn X2ZhdGFsKCJjb3VsZCBub3Qgc2VuZCBxdWVyeTogJXMiLCBQUWVycm9yTWVzc2FnZShjb25u KSk7CiAKLQlwZ19sb2coUEdfREVCVUcsICJnZXR0aW5nIGZpbGUgY2h1bmtzXG4iKTsKKwlw Z19sb2dfZGVidWcoImdldHRpbmcgZmlsZSBjaHVua3MiKTsKIAogCWlmIChQUXNldFNpbmds ZVJvd01vZGUoY29ubikgIT0gMSkKLQkJcGdfZmF0YWwoImNvdWxkIG5vdCBzZXQgbGlicHEg Y29ubmVjdGlvbiB0byBzaW5nbGUgcm93IG1vZGVcbiIpOworCQlwZ19mYXRhbCgiY291bGQg bm90IHNldCBsaWJwcSBjb25uZWN0aW9uIHRvIHNpbmdsZSByb3cgbW9kZSIpOwogCiAJd2hp bGUgKChyZXMgPSBQUWdldFJlc3VsdChjb25uKSkgIT0gTlVMTCkKIAl7CkBAIC0yNzEsMTMg KzI3MiwxMyBAQCByZWNlaXZlRmlsZUNodW5rcyhjb25zdCBjaGFyICpzcWwpCiAKIAkJLyog c2FuaXR5IGNoZWNrIHRoZSByZXN1bHQgc2V0ICovCiAJCWlmIChQUW5maWVsZHMocmVzKSAh PSAzIHx8IFBRbnR1cGxlcyhyZXMpICE9IDEpCi0JCQlwZ19mYXRhbCgidW5leHBlY3RlZCBy ZXN1bHQgc2V0IHNpemUgd2hpbGUgZmV0Y2hpbmcgcmVtb3RlIGZpbGVzXG4iKTsKKwkJCXBn X2ZhdGFsKCJ1bmV4cGVjdGVkIHJlc3VsdCBzZXQgc2l6ZSB3aGlsZSBmZXRjaGluZyByZW1v dGUgZmlsZXMiKTsKIAogCQlpZiAoUFFmdHlwZShyZXMsIDApICE9IFRFWFRPSUQgfHwKIAkJ CVBRZnR5cGUocmVzLCAxKSAhPSBJTlQ4T0lEIHx8CiAJCQlQUWZ0eXBlKHJlcywgMikgIT0g QllURUFPSUQpCiAJCXsKLQkJCXBnX2ZhdGFsKCJ1bmV4cGVjdGVkIGRhdGEgdHlwZXMgaW4g cmVzdWx0IHNldCB3aGlsZSBmZXRjaGluZyByZW1vdGUgZmlsZXM6ICV1ICV1ICV1XG4iLAor CQkJcGdfZmF0YWwoInVuZXhwZWN0ZWQgZGF0YSB0eXBlcyBpbiByZXN1bHQgc2V0IHdoaWxl IGZldGNoaW5nIHJlbW90ZSBmaWxlczogJXUgJXUgJXUiLAogCQkJCQkgUFFmdHlwZShyZXMs IDApLCBQUWZ0eXBlKHJlcywgMSksIFBRZnR5cGUocmVzLCAyKSk7CiAJCX0KIApAQCAtMjg1 LDE3ICsyODYsMTcgQEAgcmVjZWl2ZUZpbGVDaHVua3MoY29uc3QgY2hhciAqc3FsKQogCQkJ UFFmZm9ybWF0KHJlcywgMSkgIT0gMSAmJgogCQkJUFFmZm9ybWF0KHJlcywgMikgIT0gMSkK IAkJewotCQkJcGdfZmF0YWwoInVuZXhwZWN0ZWQgcmVzdWx0IGZvcm1hdCB3aGlsZSBmZXRj aGluZyByZW1vdGUgZmlsZXNcbiIpOworCQkJcGdfZmF0YWwoInVuZXhwZWN0ZWQgcmVzdWx0 IGZvcm1hdCB3aGlsZSBmZXRjaGluZyByZW1vdGUgZmlsZXMiKTsKIAkJfQogCiAJCWlmIChQ UWdldGlzbnVsbChyZXMsIDAsIDApIHx8CiAJCQlQUWdldGlzbnVsbChyZXMsIDAsIDEpKQog CQl7Ci0JCQlwZ19mYXRhbCgidW5leHBlY3RlZCBudWxsIHZhbHVlcyBpbiByZXN1bHQgd2hp bGUgZmV0Y2hpbmcgcmVtb3RlIGZpbGVzXG4iKTsKKwkJCXBnX2ZhdGFsKCJ1bmV4cGVjdGVk IG51bGwgdmFsdWVzIGluIHJlc3VsdCB3aGlsZSBmZXRjaGluZyByZW1vdGUgZmlsZXMiKTsK IAkJfQogCiAJCWlmIChQUWdldGxlbmd0aChyZXMsIDAsIDEpICE9IHNpemVvZihpbnQ2NCkp Ci0JCQlwZ19mYXRhbCgidW5leHBlY3RlZCByZXN1bHQgbGVuZ3RoIHdoaWxlIGZldGNoaW5n IHJlbW90ZSBmaWxlc1xuIik7CisJCQlwZ19mYXRhbCgidW5leHBlY3RlZCByZXN1bHQgbGVu Z3RoIHdoaWxlIGZldGNoaW5nIHJlbW90ZSBmaWxlcyIpOwogCiAJCS8qIFJlYWQgcmVzdWx0 IHNldCB0byBsb2NhbCB2YXJpYWJsZXMgKi8KIAkJbWVtY3B5KCZjaHVua29mZiwgUFFnZXR2 YWx1ZShyZXMsIDAsIDEpLCBzaXplb2YoaW50NjQpKTsKQEAgLTMxOSw4ICszMjAsNyBAQCBy ZWNlaXZlRmlsZUNodW5rcyhjb25zdCBjaGFyICpzcWwpCiAJCSAqLwogCQlpZiAoUFFnZXRp c251bGwocmVzLCAwLCAyKSkKIAkJewotCQkJcGdfbG9nKFBHX0RFQlVHLAotCQkJCSAgICJy ZWNlaXZlZCBudWxsIHZhbHVlIGZvciBjaHVuayBmb3IgZmlsZSBcIiVzXCIsIGZpbGUgaGFz IGJlZW4gZGVsZXRlZFxuIiwKKwkJCXBnX2xvZ19kZWJ1ZygicmVjZWl2ZWQgbnVsbCB2YWx1 ZSBmb3IgY2h1bmsgZm9yIGZpbGUgXCIlc1wiLCBmaWxlIGhhcyBiZWVuIGRlbGV0ZWQiLAog CQkJCSAgIGZpbGVuYW1lKTsKIAkJCXJlbW92ZV90YXJnZXRfZmlsZShmaWxlbmFtZSwgdHJ1 ZSk7CiAJCQlwZ19mcmVlKGZpbGVuYW1lKTsKQEAgLTMzMyw3ICszMzMsNyBAQCByZWNlaXZl RmlsZUNodW5rcyhjb25zdCBjaGFyICpzcWwpCiAJCSAqIHRyYW5zbGF0YWJsZSBzdHJpbmdz LgogCQkgKi8KIAkJc25wcmludGYoY2h1bmtvZmZfc3RyLCBzaXplb2YoY2h1bmtvZmZfc3Ry KSwgSU5UNjRfRk9STUFULCBjaHVua29mZik7Ci0JCXBnX2xvZyhQR19ERUJVRywgInJlY2Vp dmVkIGNodW5rIGZvciBmaWxlIFwiJXNcIiwgb2Zmc2V0ICVzLCBzaXplICVkXG4iLAorCQlw Z19sb2dfZGVidWcoInJlY2VpdmVkIGNodW5rIGZvciBmaWxlIFwiJXNcIiwgb2Zmc2V0ICVz LCBzaXplICVkIiwKIAkJCSAgIGZpbGVuYW1lLCBjaHVua29mZl9zdHIsIGNodW5rc2l6ZSk7 CiAKIAkJb3Blbl90YXJnZXRfZmlsZShmaWxlbmFtZSwgZmFsc2UpOwpAQCAtMzY3LDcgKzM2 Nyw3IEBAIGxpYnBxR2V0RmlsZShjb25zdCBjaGFyICpmaWxlbmFtZSwgc2l6ZV90ICpmaWxl c2l6ZSkKIAogCS8qIHNhbml0eSBjaGVjayB0aGUgcmVzdWx0IHNldCAqLwogCWlmIChQUW50 dXBsZXMocmVzKSAhPSAxIHx8IFBRZ2V0aXNudWxsKHJlcywgMCwgMCkpCi0JCXBnX2ZhdGFs KCJ1bmV4cGVjdGVkIHJlc3VsdCBzZXQgd2hpbGUgZmV0Y2hpbmcgcmVtb3RlIGZpbGUgXCIl c1wiXG4iLAorCQlwZ19mYXRhbCgidW5leHBlY3RlZCByZXN1bHQgc2V0IHdoaWxlIGZldGNo aW5nIHJlbW90ZSBmaWxlIFwiJXNcIiIsCiAJCQkJIGZpbGVuYW1lKTsKIAogCS8qIFJlYWQg cmVzdWx0IHRvIGxvY2FsIHZhcmlhYmxlcyAqLwpAQCAtMzc4LDcgKzM3OCw3IEBAIGxpYnBx R2V0RmlsZShjb25zdCBjaGFyICpmaWxlbmFtZSwgc2l6ZV90ICpmaWxlc2l6ZSkKIAogCVBR Y2xlYXIocmVzKTsKIAotCXBnX2xvZyhQR19ERUJVRywgImZldGNoZWQgZmlsZSBcIiVzXCIs IGxlbmd0aCAlZFxuIiwgZmlsZW5hbWUsIGxlbik7CisJcGdfbG9nX2RlYnVnKCJmZXRjaGVk IGZpbGUgXCIlc1wiLCBsZW5ndGggJWQiLCBmaWxlbmFtZSwgbGVuKTsKIAogCWlmIChmaWxl c2l6ZSkKIAkJKmZpbGVzaXplID0gbGVuOwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19yZXdp bmQvbG9nZ2luZy5jIGIvc3JjL2Jpbi9wZ19yZXdpbmQvbG9nZ2luZy5jCmluZGV4IGFmNzM4 ZjIwOWMuLjM0ZmUwNGJkZTQgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfcmV3aW5kL2xvZ2dp bmcuYworKysgYi9zcmMvYmluL3BnX3Jld2luZC9sb2dnaW5nLmMKQEAgLTIzLDcyICsyMyw2 IEBAIHVpbnQ2NAkJZmV0Y2hfZG9uZTsKIAogc3RhdGljIHBnX3RpbWVfdCBsYXN0X3Byb2dy ZXNzX3JlcG9ydCA9IDA7CiAKLSNkZWZpbmUgUVVFUllfQUxMT0MJCQk4MTkyCi0KLXN0YXRp YwotcGdfYXR0cmlidXRlX3ByaW50ZigyLCAwKQotdm9pZAotcGdfbG9nX3YoZUxvZ1R5cGUg dHlwZSwgY29uc3QgY2hhciAqZm10LCB2YV9saXN0IGFwKQotewotCWNoYXIJCW1lc3NhZ2Vb UVVFUllfQUxMT0NdOwotCi0JdnNucHJpbnRmKG1lc3NhZ2UsIHNpemVvZihtZXNzYWdlKSwg XyhmbXQpLCBhcCk7Ci0KLQlzd2l0Y2ggKHR5cGUpCi0JewotCQljYXNlIFBHX0RFQlVHOgot CQkJaWYgKGRlYnVnKQotCQkJCXByaW50ZigiJXMiLCBtZXNzYWdlKTsKLQkJCWJyZWFrOwot Ci0JCWNhc2UgUEdfUFJPR1JFU1M6Ci0JCQlpZiAoc2hvd3Byb2dyZXNzKQotCQkJCXByaW50 ZigiJXMiLCBtZXNzYWdlKTsKLQkJCWJyZWFrOwotCi0JCWNhc2UgUEdfV0FSTklORzoKLQkJ CXByaW50ZigiJXMiLCBtZXNzYWdlKTsKLQkJCWJyZWFrOwotCi0JCWNhc2UgUEdfRkFUQUw6 Ci0JCQlwcmludGYoIlxuJXMiLCBtZXNzYWdlKTsKLQkJCXByaW50ZigiJXMiLCBfKCJGYWls dXJlLCBleGl0aW5nXG4iKSk7Ci0JCQlleGl0KDEpOwotCQkJYnJlYWs7Ci0KLQkJZGVmYXVs dDoKLQkJCWJyZWFrOwotCX0KLQlmZmx1c2goc3Rkb3V0KTsKLX0KLQotCi12b2lkCi1wZ19s b2coZUxvZ1R5cGUgdHlwZSwgY29uc3QgY2hhciAqZm10LC4uLikKLXsKLQl2YV9saXN0CQlh cmdzOwotCi0JdmFfc3RhcnQoYXJncywgZm10KTsKLQlwZ19sb2dfdih0eXBlLCBmbXQsIGFy Z3MpOwotCXZhX2VuZChhcmdzKTsKLX0KLQotCi0vKgotICogUHJpbnQgYW4gZXJyb3IgbWVz c2FnZSwgYW5kIGV4aXQuCi0gKi8KLXZvaWQKLXBnX2ZhdGFsKGNvbnN0IGNoYXIgKmZtdCwu Li4pCi17Ci0JdmFfbGlzdAkJYXJnczsKLQotCXZhX3N0YXJ0KGFyZ3MsIGZtdCk7Ci0JcGdf bG9nX3YoUEdfRkFUQUwsIGZtdCwgYXJncyk7Ci0JdmFfZW5kKGFyZ3MpOwotCS8qIHNob3Vs ZCBub3QgZ2V0IGhlcmUsIHBnX2xvZ192KCkgZXhpdGVkIGFscmVhZHkgKi8KLQlleGl0KDEp OwotfQotCiAKIC8qCiAgKiBQcmludCBhIHByb2dyZXNzIHJlcG9ydCBiYXNlZCBvbiB0aGUg Z2xvYmFsIHZhcmlhYmxlcy4KQEAgLTEzNSw4ICs2OSw5IEBAIHByb2dyZXNzX3JlcG9ydChi b29sIGZvcmNlKQogCXNucHJpbnRmKGZldGNoX3NpemVfc3RyLCBzaXplb2YoZmV0Y2hfc2l6 ZV9zdHIpLCBJTlQ2NF9GT1JNQVQsCiAJCQkgZmV0Y2hfc2l6ZSAvIDEwMjQpOwogCi0JcGdf bG9nKFBHX1BST0dSRVNTLCAiJSpzLyVzIGtCICglZCUlKSBjb3BpZWQiLAorCXByaW50Zihf KCIlKnMvJXMga0IgKCVkJSUpIGNvcGllZCIpLAogCQkgICAoaW50KSBzdHJsZW4oZmV0Y2hf c2l6ZV9zdHIpLCBmZXRjaF9kb25lX3N0ciwgZmV0Y2hfc2l6ZV9zdHIsCiAJCSAgIHBlcmNl bnQpOwogCXByaW50ZigiXHIiKTsKKwlmZmx1c2goc3Rkb3V0KTsKIH0KZGlmZiAtLWdpdCBh L3NyYy9iaW4vcGdfcmV3aW5kL2xvZ2dpbmcuaCBiL3NyYy9iaW4vcGdfcmV3aW5kL2xvZ2dp bmcuaAppbmRleCA2NjQ1NTAzOWRiLi4yZGMyMjUzZGE4IDEwMDY0NAotLS0gYS9zcmMvYmlu L3BnX3Jld2luZC9sb2dnaW5nLmgKKysrIGIvc3JjL2Jpbi9wZ19yZXdpbmQvbG9nZ2luZy5o CkBAIC0xMiwyNCArMTIsMTQgQEAKICNpZm5kZWYgUEdfUkVXSU5EX0xPR0dJTkdfSAogI2Rl ZmluZSBQR19SRVdJTkRfTE9HR0lOR19ICiAKKyNpbmNsdWRlICJmZV91dGlscy9sb2dnaW5n LmgiCisKIC8qIHByb2dyZXNzIGNvdW50ZXJzICovCiBleHRlcm4gdWludDY0IGZldGNoX3Np emU7CiBleHRlcm4gdWludDY0IGZldGNoX2RvbmU7CiAKLS8qCi0gKiBFbnVtZXJhdGlvbiB0 byBkZW5vdGUgcGdfbG9nIG1vZGVzCi0gKi8KLXR5cGVkZWYgZW51bQotewotCVBHX0RFQlVH LAotCVBHX1BST0dSRVNTLAotCVBHX1dBUk5JTkcsCi0JUEdfRkFUQUwKLX0gZUxvZ1R5cGU7 Ci0KLWV4dGVybiB2b2lkIHBnX2xvZyhlTG9nVHlwZSB0eXBlLCBjb25zdCBjaGFyICpmbXQs Li4uKSBwZ19hdHRyaWJ1dGVfcHJpbnRmKDIsIDMpOwotZXh0ZXJuIHZvaWQgcGdfZmF0YWwo Y29uc3QgY2hhciAqZm10LC4uLikgcGdfYXR0cmlidXRlX3ByaW50ZigxLCAyKSBwZ19hdHRy aWJ1dGVfbm9yZXR1cm4oKTsKLQogZXh0ZXJuIHZvaWQgcHJvZ3Jlc3NfcmVwb3J0KGJvb2wg Zm9yY2UpOwogCisjZGVmaW5lIHBnX2ZhdGFsKC4uLikgZG8geyBwZ19sb2dfZmF0YWwoX19W QV9BUkdTX18pOyBleGl0KDEpOyB9IHdoaWxlKDApCisKICNlbmRpZgkJCQkJCQkvKiBQR19S RVdJTkRfTE9HR0lOR19IICovCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX3Jld2luZC9ubHMu bWsgYi9zcmMvYmluL3BnX3Jld2luZC9ubHMubWsKaW5kZXggMmZiNjNiZWFkOC4uNThjOWVk ZTU0OCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19yZXdpbmQvbmxzLm1rCisrKyBiL3NyYy9i aW4vcGdfcmV3aW5kL25scy5tawpAQCAtMSw5ICsxLDggQEAKICMgc3JjL2Jpbi9wZ19yZXdp bmQvbmxzLm1rCiBDQVRBTE9HX05BTUUgICAgID0gcGdfcmV3aW5kCiBBVkFJTF9MQU5HVUFH RVMgID1kZSBlcyBmciBpdCBqYSBrbyBwbCBwdF9CUiBydSBzdiB0ciB6aF9DTgotR0VUVEVY VF9GSUxFUyAgICA9IGNvcHlfZmV0Y2guYyBkYXRhcGFnZW1hcC5jIGZldGNoLmMgZmlsZV9v cHMuYyBmaWxlbWFwLmMgbGlicHFfZmV0Y2guYyBsb2dnaW5nLmMgcGFyc2V4bG9nLmMgcGdf cmV3aW5kLmMgdGltZWxpbmUuYyAuLi8uLi9jb21tb24vZmVfbWVtdXRpbHMuYyAuLi8uLi9j b21tb24vcmVzdHJpY3RlZF90b2tlbi5jIHhsb2dyZWFkZXIuYwotCi1HRVRURVhUX1RSSUdH RVJTID0gcGdfbG9nOjIgcGdfZmF0YWwgcmVwb3J0X2ludmFsaWRfcmVjb3JkOjIKLUdFVFRF WFRfRkxBR1MgICAgPSBwZ19sb2c6MjpjLWZvcm1hdCBcCitHRVRURVhUX0ZJTEVTICAgID0g JChGUk9OVEVORF9DT01NT05fR0VUVEVYVF9GSUxFUykgY29weV9mZXRjaC5jIGRhdGFwYWdl bWFwLmMgZmV0Y2guYyBmaWxlX29wcy5jIGZpbGVtYXAuYyBsaWJwcV9mZXRjaC5jIGxvZ2dp bmcuYyBwYXJzZXhsb2cuYyBwZ19yZXdpbmQuYyB0aW1lbGluZS5jIC4uLy4uL2NvbW1vbi9m ZV9tZW11dGlscy5jIC4uLy4uL2NvbW1vbi9yZXN0cmljdGVkX3Rva2VuLmMgeGxvZ3JlYWRl ci5jCitHRVRURVhUX1RSSUdHRVJTID0gJChGUk9OVEVORF9DT01NT05fR0VUVEVYVF9UUklH R0VSUykgcGdfZmF0YWwgcmVwb3J0X2ludmFsaWRfcmVjb3JkOjIKK0dFVFRFWFRfRkxBR1Mg ICAgPSAkKEZST05URU5EX0NPTU1PTl9HRVRURVhUX0ZMQUdTKSBcCiAgICAgcGdfZmF0YWw6 MTpjLWZvcm1hdCBcCiAgICAgcmVwb3J0X2ludmFsaWRfcmVjb3JkOjI6Yy1mb3JtYXQKZGlm ZiAtLWdpdCBhL3NyYy9iaW4vcGdfcmV3aW5kL3BhcnNleGxvZy5jIGIvc3JjL2Jpbi9wZ19y ZXdpbmQvcGFyc2V4bG9nLmMKaW5kZXggNDAwMjg0NzFiZi4uNzZmOWRmZmRmMSAxMDA2NDQK LS0tIGEvc3JjL2Jpbi9wZ19yZXdpbmQvcGFyc2V4bG9nLmMKKysrIGIvc3JjL2Jpbi9wZ19y ZXdpbmQvcGFyc2V4bG9nLmMKQEAgLTcyLDcgKzcyLDcgQEAgZXh0cmFjdFBhZ2VNYXAoY29u c3QgY2hhciAqZGF0YWRpciwgWExvZ1JlY1B0ciBzdGFydHBvaW50LCBpbnQgdGxpSW5kZXgs CiAJeGxvZ3JlYWRlciA9IFhMb2dSZWFkZXJBbGxvY2F0ZShXYWxTZWdTeiwgJlNpbXBsZVhM b2dQYWdlUmVhZCwKIAkJCQkJCQkJCSZwcml2YXRlKTsKIAlpZiAoeGxvZ3JlYWRlciA9PSBO VUxMKQotCQlwZ19mYXRhbCgib3V0IG9mIG1lbW9yeVxuIik7CisJCXBnX2ZhdGFsKCJvdXQg b2YgbWVtb3J5Iik7CiAKIAlkbwogCXsKQEAgLTg1LDExICs4NSwxMSBAQCBleHRyYWN0UGFn ZU1hcChjb25zdCBjaGFyICpkYXRhZGlyLCBYTG9nUmVjUHRyIHN0YXJ0cG9pbnQsIGludCB0 bGlJbmRleCwKIAkJCWVycnB0ciA9IHN0YXJ0cG9pbnQgPyBzdGFydHBvaW50IDogeGxvZ3Jl YWRlci0+RW5kUmVjUHRyOwogCiAJCQlpZiAoZXJyb3Jtc2cpCi0JCQkJcGdfZmF0YWwoImNv dWxkIG5vdCByZWFkIFdBTCByZWNvcmQgYXQgJVgvJVg6ICVzXG4iLAorCQkJCXBnX2ZhdGFs KCJjb3VsZCBub3QgcmVhZCBXQUwgcmVjb3JkIGF0ICVYLyVYOiAlcyIsCiAJCQkJCQkgKHVp bnQzMikgKGVycnB0ciA+PiAzMiksICh1aW50MzIpIChlcnJwdHIpLAogCQkJCQkJIGVycm9y bXNnKTsKIAkJCWVsc2UKLQkJCQlwZ19mYXRhbCgiY291bGQgbm90IHJlYWQgV0FMIHJlY29y ZCBhdCAlWC8lWFxuIiwKKwkJCQlwZ19mYXRhbCgiY291bGQgbm90IHJlYWQgV0FMIHJlY29y ZCBhdCAlWC8lWCIsCiAJCQkJCQkgKHVpbnQzMikgKHN0YXJ0cG9pbnQgPj4gMzIpLAogCQkJ CQkJICh1aW50MzIpIChzdGFydHBvaW50KSk7CiAJCX0KQEAgLTEyNiwxNiArMTI2LDE2IEBA IHJlYWRPbmVSZWNvcmQoY29uc3QgY2hhciAqZGF0YWRpciwgWExvZ1JlY1B0ciBwdHIsIGlu dCB0bGlJbmRleCkKIAl4bG9ncmVhZGVyID0gWExvZ1JlYWRlckFsbG9jYXRlKFdhbFNlZ1N6 LCAmU2ltcGxlWExvZ1BhZ2VSZWFkLAogCQkJCQkJCQkJJnByaXZhdGUpOwogCWlmICh4bG9n cmVhZGVyID09IE5VTEwpCi0JCXBnX2ZhdGFsKCJvdXQgb2YgbWVtb3J5XG4iKTsKKwkJcGdf ZmF0YWwoIm91dCBvZiBtZW1vcnkiKTsKIAogCXJlY29yZCA9IFhMb2dSZWFkUmVjb3JkKHhs b2dyZWFkZXIsIHB0ciwgJmVycm9ybXNnKTsKIAlpZiAocmVjb3JkID09IE5VTEwpCiAJewog CQlpZiAoZXJyb3Jtc2cpCi0JCQlwZ19mYXRhbCgiY291bGQgbm90IHJlYWQgV0FMIHJlY29y ZCBhdCAlWC8lWDogJXNcbiIsCisJCQlwZ19mYXRhbCgiY291bGQgbm90IHJlYWQgV0FMIHJl Y29yZCBhdCAlWC8lWDogJXMiLAogCQkJCQkgKHVpbnQzMikgKHB0ciA+PiAzMiksICh1aW50 MzIpIChwdHIpLCBlcnJvcm1zZyk7CiAJCWVsc2UKLQkJCXBnX2ZhdGFsKCJjb3VsZCBub3Qg cmVhZCBXQUwgcmVjb3JkIGF0ICVYLyVYXG4iLAorCQkJcGdfZmF0YWwoImNvdWxkIG5vdCBy ZWFkIFdBTCByZWNvcmQgYXQgJVgvJVgiLAogCQkJCQkgKHVpbnQzMikgKHB0ciA+PiAzMiks ICh1aW50MzIpIChwdHIpKTsKIAl9CiAJZW5kcHRyID0geGxvZ3JlYWRlci0+RW5kUmVjUHRy OwpAQCAtMTg0LDcgKzE4NCw3IEBAIGZpbmRMYXN0Q2hlY2twb2ludChjb25zdCBjaGFyICpk YXRhZGlyLCBYTG9nUmVjUHRyIGZvcmtwdHIsIGludCB0bGlJbmRleCwKIAl4bG9ncmVhZGVy ID0gWExvZ1JlYWRlckFsbG9jYXRlKFdhbFNlZ1N6LCAmU2ltcGxlWExvZ1BhZ2VSZWFkLAog CQkJCQkJCQkJJnByaXZhdGUpOwogCWlmICh4bG9ncmVhZGVyID09IE5VTEwpCi0JCXBnX2Zh dGFsKCJvdXQgb2YgbWVtb3J5XG4iKTsKKwkJcGdfZmF0YWwoIm91dCBvZiBtZW1vcnkiKTsK IAogCXNlYXJjaHB0ciA9IGZvcmtwdHI7CiAJZm9yICg7OykKQEAgLTE5NiwxMSArMTk2LDEx IEBAIGZpbmRMYXN0Q2hlY2twb2ludChjb25zdCBjaGFyICpkYXRhZGlyLCBYTG9nUmVjUHRy IGZvcmtwdHIsIGludCB0bGlJbmRleCwKIAkJaWYgKHJlY29yZCA9PSBOVUxMKQogCQl7CiAJ CQlpZiAoZXJyb3Jtc2cpCi0JCQkJcGdfZmF0YWwoImNvdWxkIG5vdCBmaW5kIHByZXZpb3Vz IFdBTCByZWNvcmQgYXQgJVgvJVg6ICVzXG4iLAorCQkJCXBnX2ZhdGFsKCJjb3VsZCBub3Qg ZmluZCBwcmV2aW91cyBXQUwgcmVjb3JkIGF0ICVYLyVYOiAlcyIsCiAJCQkJCQkgKHVpbnQz MikgKHNlYXJjaHB0ciA+PiAzMiksICh1aW50MzIpIChzZWFyY2hwdHIpLAogCQkJCQkJIGVy cm9ybXNnKTsKIAkJCWVsc2UKLQkJCQlwZ19mYXRhbCgiY291bGQgbm90IGZpbmQgcHJldmlv dXMgV0FMIHJlY29yZCBhdCAlWC8lWFxuIiwKKwkJCQlwZ19mYXRhbCgiY291bGQgbm90IGZp bmQgcHJldmlvdXMgV0FMIHJlY29yZCBhdCAlWC8lWCIsCiAJCQkJCQkgKHVpbnQzMikgKHNl YXJjaHB0ciA+PiAzMiksICh1aW50MzIpIChzZWFyY2hwdHIpKTsKIAkJfQogCkBAIC0zODcs OCArMzg3LDggQEAgZXh0cmFjdFBhZ2VJbmZvKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQog CQkgKiB3ZSBkb24ndCByZWNvZ25pemUgdGhlIHR5cGUuIFRoYXQncyBiYWQgLSB3ZSBkb24n dCBrbm93IGhvdyB0bwogCQkgKiB0cmFjayB0aGF0IGNoYW5nZS4KIAkJICovCi0JCXBnX2Zh dGFsKCJXQUwgcmVjb3JkIG1vZGlmaWVzIGEgcmVsYXRpb24sIGJ1dCByZWNvcmQgdHlwZSBp cyBub3QgcmVjb2duaXplZFxuIgotCQkJCSAibHNuOiAlWC8lWCwgcm1ncjogJXMsIGluZm86 ICUwMlhcbiIsCisJCXBnX2ZhdGFsKCJXQUwgcmVjb3JkIG1vZGlmaWVzIGEgcmVsYXRpb24s IGJ1dCByZWNvcmQgdHlwZSBpcyBub3QgcmVjb2duaXplZDogIgorCQkJCSAibHNuOiAlWC8l WCwgcm1ncjogJXMsIGluZm86ICUwMlgiLAogCQkJCSAodWludDMyKSAocmVjb3JkLT5SZWFk UmVjUHRyID4+IDMyKSwgKHVpbnQzMikgKHJlY29yZC0+UmVhZFJlY1B0ciksCiAJCQkJIFJt Z3JOYW1lc1tybWlkXSwgaW5mbyk7CiAJfQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19yZXdp bmQvcGdfcmV3aW5kLmMgYi9zcmMvYmluL3BnX3Jld2luZC9wZ19yZXdpbmQuYwppbmRleCA1 NTIyNmQxZGMwLi40MTFiMTA3MmRlIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX3Jld2luZC9w Z19yZXdpbmQuYworKysgYi9zcmMvYmluL3BnX3Jld2luZC9wZ19yZXdpbmQuYwpAQCAtMjcs NiArMjcsNyBAQAogI2luY2x1ZGUgImNvbW1vbi9maWxlX3Blcm0uaCIKICNpbmNsdWRlICJj b21tb24vZmlsZV91dGlscy5oIgogI2luY2x1ZGUgImNvbW1vbi9yZXN0cmljdGVkX3Rva2Vu LmgiCisjaW5jbHVkZSAiZmVfdXRpbHMvbG9nZ2luZy5oIgogI2luY2x1ZGUgImdldG9wdF9s b25nLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9idWZwYWdlLmgiCiAKQEAgLTUzLDcgKzU0LDcg QEAgY2hhcgkgICAqZGF0YWRpcl90YXJnZXQgPSBOVUxMOwogY2hhcgkgICAqZGF0YWRpcl9z b3VyY2UgPSBOVUxMOwogY2hhcgkgICAqY29ubnN0cl9zb3VyY2UgPSBOVUxMOwogCi1ib29s CQlkZWJ1ZyA9IGZhbHNlOworc3RhdGljIGJvb2wJZGVidWcgPSBmYWxzZTsKIGJvb2wJCXNo b3dwcm9ncmVzcyA9IGZhbHNlOwogYm9vbAkJZHJ5X3J1biA9IGZhbHNlOwogYm9vbAkJZG9f c3luYyA9IHRydWU7CkBAIC0xMTIsNiArMTEzLDggQEAgbWFpbihpbnQgYXJnYywgY2hhciAq KmFyZ3YpCiAJQ29udHJvbEZpbGVEYXRhIENvbnRyb2xGaWxlX25ldzsKIAogCXNldF9wZ2xv Y2FsZV9wZ3NlcnZpY2UoYXJndlswXSwgUEdfVEVYVERPTUFJTigicGdfcmV3aW5kIikpOwor CXBnX2xvZ2dpbmdfaW5pdChhcmd2WzBdKTsKKwlwZ19sb2dnaW5nX3NldF9sZXZlbChQR19M T0dfV0FSTklORyk7CiAJcHJvZ25hbWUgPSBnZXRfcHJvZ25hbWUoYXJndlswXSk7CiAKIAkv KiBQcm9jZXNzIGNvbW1hbmQtbGluZSBhcmd1bWVudHMgKi8KQEAgLTEzOSw2ICsxNDIsNyBA QCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAogCQkJY2FzZSAnUCc6CiAJCQkJc2hv d3Byb2dyZXNzID0gdHJ1ZTsKKwkJCQlwZ19sb2dnaW5nX3NldF9sZXZlbChQR19MT0dfSU5G Tyk7CiAJCQkJYnJlYWs7CiAKIAkJCWNhc2UgJ24nOgpAQCAtMTUxLDYgKzE1NSw3IEBAIG1h aW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCiAJCQljYXNlIDM6CiAJCQkJZGVidWcgPSB0 cnVlOworCQkJCXBnX2xvZ2dpbmdfc2V0X2xldmVsKFBHX0xPR19ERUJVRyk7CiAJCQkJYnJl YWs7CiAKIAkJCWNhc2UgJ0QnOgkJCS8qIC1EIG9yIC0tdGFyZ2V0LXBnZGF0YSAqLwpAQCAt MTY4LDI5ICsxNzMsMjkgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAKIAlpZiAo ZGF0YWRpcl9zb3VyY2UgPT0gTlVMTCAmJiBjb25uc3RyX3NvdXJjZSA9PSBOVUxMKQogCXsK LQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBubyBzb3VyY2Ugc3BlY2lmaWVkICgtLXNvdXJj ZS1wZ2RhdGEgb3IgLS1zb3VyY2Utc2VydmVyKVxuIiksIHByb2duYW1lKTsKKwkJcGdfbG9n X2Vycm9yKCJubyBzb3VyY2Ugc3BlY2lmaWVkICgtLXNvdXJjZS1wZ2RhdGEgb3IgLS1zb3Vy Y2Utc2VydmVyKSIpOwogCQlmcHJpbnRmKHN0ZGVyciwgXygiVHJ5IFwiJXMgLS1oZWxwXCIg Zm9yIG1vcmUgaW5mb3JtYXRpb24uXG4iKSwgcHJvZ25hbWUpOwogCQlleGl0KDEpOwogCX0K IAogCWlmIChkYXRhZGlyX3NvdXJjZSAhPSBOVUxMICYmIGNvbm5zdHJfc291cmNlICE9IE5V TEwpCiAJewotCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IG9ubHkgb25lIG9mIC0tc291cmNl LXBnZGF0YSBvciAtLXNvdXJjZS1zZXJ2ZXIgY2FuIGJlIHNwZWNpZmllZFxuIiksIHByb2du YW1lKTsKKwkJcGdfbG9nX2Vycm9yKCJvbmx5IG9uZSBvZiAtLXNvdXJjZS1wZ2RhdGEgb3Ig LS1zb3VyY2Utc2VydmVyIGNhbiBiZSBzcGVjaWZpZWQiKTsKIAkJZnByaW50ZihzdGRlcnIs IF8oIlRyeSBcIiVzIC0taGVscFwiIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuIiksIHByb2du YW1lKTsKIAkJZXhpdCgxKTsKIAl9CiAKIAlpZiAoZGF0YWRpcl90YXJnZXQgPT0gTlVMTCkK IAl7Ci0JCWZwcmludGYoc3RkZXJyLCBfKCIlczogbm8gdGFyZ2V0IGRhdGEgZGlyZWN0b3J5 IHNwZWNpZmllZCAoLS10YXJnZXQtcGdkYXRhKVxuIiksIHByb2duYW1lKTsKKwkJcGdfbG9n X2Vycm9yKCJubyB0YXJnZXQgZGF0YSBkaXJlY3Rvcnkgc3BlY2lmaWVkICgtLXRhcmdldC1w Z2RhdGEpIik7CiAJCWZwcmludGYoc3RkZXJyLCBfKCJUcnkgXCIlcyAtLWhlbHBcIiBmb3Ig bW9yZSBpbmZvcm1hdGlvbi5cbiIpLCBwcm9nbmFtZSk7CiAJCWV4aXQoMSk7CiAJfQogCiAJ aWYgKG9wdGluZCA8IGFyZ2MpCiAJewotCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IHRvbyBt YW55IGNvbW1hbmQtbGluZSBhcmd1bWVudHMgKGZpcnN0IGlzIFwiJXNcIilcbiIpLAotCQkJ CXByb2duYW1lLCBhcmd2W29wdGluZF0pOworCQlwZ19sb2dfZXJyb3IoInRvbyBtYW55IGNv bW1hbmQtbGluZSBhcmd1bWVudHMgKGZpcnN0IGlzIFwiJXNcIikiLAorCQkJCQkgYXJndltv cHRpbmRdKTsKIAkJZnByaW50ZihzdGRlcnIsIF8oIlRyeSBcIiVzIC0taGVscFwiIGZvciBt b3JlIGluZm9ybWF0aW9uLlxuIiksIHByb2duYW1lKTsKIAkJZXhpdCgxKTsKIAl9CkBAIC0y MDQsMjAgKzIwOSwyMCBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKICNpZm5kZWYg V0lOMzIKIAlpZiAoZ2V0ZXVpZCgpID09IDApCiAJewotCQlmcHJpbnRmKHN0ZGVyciwgXygi Y2Fubm90IGJlIGV4ZWN1dGVkIGJ5IFwicm9vdFwiXG4iKSk7CisJCXBnX2xvZ19lcnJvcigi Y2Fubm90IGJlIGV4ZWN1dGVkIGJ5IFwicm9vdFwiIik7CiAJCWZwcmludGYoc3RkZXJyLCBf KCJZb3UgbXVzdCBydW4gJXMgYXMgdGhlIFBvc3RncmVTUUwgc3VwZXJ1c2VyLlxuIiksCiAJ CQkJcHJvZ25hbWUpOwogCQlleGl0KDEpOwogCX0KICNlbmRpZgogCi0JZ2V0X3Jlc3RyaWN0 ZWRfdG9rZW4ocHJvZ25hbWUpOworCWdldF9yZXN0cmljdGVkX3Rva2VuKCk7CiAKIAkvKiBT ZXQgbWFzayBiYXNlZCBvbiBQR0RBVEEgcGVybWlzc2lvbnMgKi8KIAlpZiAoIUdldERhdGFE aXJlY3RvcnlDcmVhdGVQZXJtKGRhdGFkaXJfdGFyZ2V0KSkKIAl7Ci0JCWZwcmludGYoc3Rk ZXJyLCBfKCIlczogY291bGQgbm90IHJlYWQgcGVybWlzc2lvbnMgb2YgZGlyZWN0b3J5IFwi JXNcIjogJXNcbiIpLAotCQkJCXByb2duYW1lLCBkYXRhZGlyX3RhcmdldCwgc3RyZXJyb3Io ZXJybm8pKTsKKwkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgcmVhZCBwZXJtaXNzaW9ucyBv ZiBkaXJlY3RvcnkgXCIlc1wiOiAlbSIsCisJCQkJCSBkYXRhZGlyX3RhcmdldCk7CiAJCWV4 aXQoMSk7CiAJfQogCkBAIC0zMDUsOSArMzEwLDkgQEAgbWFpbihpbnQgYXJnYywgY2hhciAq KmFyZ3YpCiAJICogQnVpbGQgdGhlIGZpbGVtYXAsIGJ5IGNvbXBhcmluZyB0aGUgc291cmNl IGFuZCB0YXJnZXQgZGF0YSBkaXJlY3Rvcmllcy4KIAkgKi8KIAlmaWxlbWFwX2NyZWF0ZSgp OwotCXBnX2xvZyhQR19QUk9HUkVTUywgInJlYWRpbmcgc291cmNlIGZpbGUgbGlzdFxuIik7 CisJcGdfbG9nX2luZm8oInJlYWRpbmcgc291cmNlIGZpbGUgbGlzdCIpOwogCWZldGNoU291 cmNlRmlsZUxpc3QoKTsKLQlwZ19sb2coUEdfUFJPR1JFU1MsICJyZWFkaW5nIHRhcmdldCBm aWxlIGxpc3RcbiIpOworCXBnX2xvZ19pbmZvKCJyZWFkaW5nIHRhcmdldCBmaWxlIGxpc3Qi KTsKIAl0cmF2ZXJzZV9kYXRhZGlyKGRhdGFkaXJfdGFyZ2V0LCAmcHJvY2Vzc190YXJnZXRf ZmlsZSk7CiAKIAkvKgpAQCAtMzE3LDcgKzMyMiw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIg Kiphcmd2KQogCSAqIFhYWDogSWYgd2Ugc3VwcG9ydGVkIHJld2luZGluZyBhIHNlcnZlciB0 aGF0IHdhcyBub3Qgc2h1dCBkb3duIGNsZWFubHksCiAJICogd2Ugd291bGQgbmVlZCB0byBy ZXBsYXkgdW50aWwgdGhlIGVuZCBvZiBXQUwgaGVyZS4KIAkgKi8KLQlwZ19sb2coUEdfUFJP R1JFU1MsICJyZWFkaW5nIFdBTCBpbiB0YXJnZXRcbiIpOworCXBnX2xvZ19pbmZvKCJyZWFk aW5nIFdBTCBpbiB0YXJnZXQiKTsKIAlleHRyYWN0UGFnZU1hcChkYXRhZGlyX3RhcmdldCwg Y2hrcHRyZWMsIGxhc3Rjb21tb250bGlJbmRleCwKIAkJCQkgICBDb250cm9sRmlsZV90YXJn ZXQuY2hlY2tQb2ludCk7CiAJZmlsZW1hcF9maW5hbGl6ZSgpOwpAQCAtMzM0LDcgKzMzOSw3 IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCSAqLwogCWlmIChzaG93cHJvZ3Jl c3MpCiAJewotCQlwZ19sb2coUEdfUFJPR1JFU1MsICJuZWVkIHRvIGNvcHkgJWx1IE1CICh0 b3RhbCBzb3VyY2UgZGlyZWN0b3J5IHNpemUgaXMgJWx1IE1CKVxuIiwKKwkJcGdfbG9nX2lu Zm8oIm5lZWQgdG8gY29weSAlbHUgTUIgKHRvdGFsIHNvdXJjZSBkaXJlY3Rvcnkgc2l6ZSBp cyAlbHUgTUIpIiwKIAkJCSAgICh1bnNpZ25lZCBsb25nKSAoZmlsZW1hcC0+ZmV0Y2hfc2l6 ZSAvICgxMDI0ICogMTAyNCkpLAogCQkJICAgKHVuc2lnbmVkIGxvbmcpIChmaWxlbWFwLT50 b3RhbF9zaXplIC8gKDEwMjQgKiAxMDI0KSkpOwogCkBAIC0zNTAsOCArMzU1LDkgQEAgbWFp bihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJZXhlY3V0ZUZpbGVNYXAoKTsKIAogCXByb2dy ZXNzX3JlcG9ydCh0cnVlKTsKKwlwcmludGYoIlxuIik7CiAKLQlwZ19sb2coUEdfUFJPR1JF U1MsICJcbmNyZWF0aW5nIGJhY2t1cCBsYWJlbCBhbmQgdXBkYXRpbmcgY29udHJvbCBmaWxl XG4iKTsKKwlwZ19sb2dfaW5mbygiY3JlYXRpbmcgYmFja3VwIGxhYmVsIGFuZCB1cGRhdGlu ZyBjb250cm9sIGZpbGUiKTsKIAljcmVhdGVCYWNrdXBMYWJlbChjaGtwdHJlZG8sIGNoa3B0 dGxpLCBjaGtwdHJlYyk7CiAKIAkvKgpAQCAtMzc5LDcgKzM4NSw3IEBAIG1haW4oaW50IGFy Z2MsIGNoYXIgKiphcmd2KQogCUNvbnRyb2xGaWxlX25ldy5zdGF0ZSA9IERCX0lOX0FSQ0hJ VkVfUkVDT1ZFUlk7CiAJdXBkYXRlQ29udHJvbEZpbGUoJkNvbnRyb2xGaWxlX25ldyk7CiAK LQlwZ19sb2coUEdfUFJPR1JFU1MsICJzeW5jaW5nIHRhcmdldCBkYXRhIGRpcmVjdG9yeVxu Iik7CisJcGdfbG9nX2luZm8oInN5bmNpbmcgdGFyZ2V0IGRhdGEgZGlyZWN0b3J5Iik7CiAJ c3luY1RhcmdldERpcmVjdG9yeShhcmd2WzBdKTsKIAogCXByaW50ZihfKCJEb25lIVxuIikp OwpAQCAtMzk0LDcgKzQwMCw3IEBAIHNhbml0eUNoZWNrcyh2b2lkKQogCiAJLyogQ2hlY2sg c3lzdGVtX2lkIG1hdGNoICovCiAJaWYgKENvbnRyb2xGaWxlX3RhcmdldC5zeXN0ZW1faWRl bnRpZmllciAhPSBDb250cm9sRmlsZV9zb3VyY2Uuc3lzdGVtX2lkZW50aWZpZXIpCi0JCXBn X2ZhdGFsKCJzb3VyY2UgYW5kIHRhcmdldCBjbHVzdGVycyBhcmUgZnJvbSBkaWZmZXJlbnQg c3lzdGVtc1xuIik7CisJCXBnX2ZhdGFsKCJzb3VyY2UgYW5kIHRhcmdldCBjbHVzdGVycyBh cmUgZnJvbSBkaWZmZXJlbnQgc3lzdGVtcyIpOwogCiAJLyogY2hlY2sgdmVyc2lvbiAqLwog CWlmIChDb250cm9sRmlsZV90YXJnZXQucGdfY29udHJvbF92ZXJzaW9uICE9IFBHX0NPTlRS T0xfVkVSU0lPTiB8fApAQCAtNDAyLDcgKzQwOCw3IEBAIHNhbml0eUNoZWNrcyh2b2lkKQog CQlDb250cm9sRmlsZV90YXJnZXQuY2F0YWxvZ192ZXJzaW9uX25vICE9IENBVEFMT0dfVkVS U0lPTl9OTyB8fAogCQlDb250cm9sRmlsZV9zb3VyY2UuY2F0YWxvZ192ZXJzaW9uX25vICE9 IENBVEFMT0dfVkVSU0lPTl9OTykKIAl7Ci0JCXBnX2ZhdGFsKCJjbHVzdGVycyBhcmUgbm90 IGNvbXBhdGlibGUgd2l0aCB0aGlzIHZlcnNpb24gb2YgcGdfcmV3aW5kXG4iKTsKKwkJcGdf ZmF0YWwoImNsdXN0ZXJzIGFyZSBub3QgY29tcGF0aWJsZSB3aXRoIHRoaXMgdmVyc2lvbiBv ZiBwZ19yZXdpbmQiKTsKIAl9CiAKIAkvKgpAQCAtNDEyLDcgKzQxOCw3IEBAIHNhbml0eUNo ZWNrcyh2b2lkKQogCWlmIChDb250cm9sRmlsZV90YXJnZXQuZGF0YV9jaGVja3N1bV92ZXJz aW9uICE9IFBHX0RBVEFfQ0hFQ0tTVU1fVkVSU0lPTiAmJgogCQkhQ29udHJvbEZpbGVfdGFy Z2V0LndhbF9sb2dfaGludHMpCiAJewotCQlwZ19mYXRhbCgidGFyZ2V0IHNlcnZlciBuZWVk cyB0byB1c2UgZWl0aGVyIGRhdGEgY2hlY2tzdW1zIG9yIFwid2FsX2xvZ19oaW50cyA9IG9u XCJcbiIpOworCQlwZ19mYXRhbCgidGFyZ2V0IHNlcnZlciBuZWVkcyB0byB1c2UgZWl0aGVy IGRhdGEgY2hlY2tzdW1zIG9yIFwid2FsX2xvZ19oaW50cyA9IG9uXCIiKTsKIAl9CiAKIAkv KgpAQCAtNDIzLDcgKzQyOSw3IEBAIHNhbml0eUNoZWNrcyh2b2lkKQogCSAqLwogCWlmIChD b250cm9sRmlsZV90YXJnZXQuc3RhdGUgIT0gREJfU0hVVERPV05FRCAmJgogCQlDb250cm9s RmlsZV90YXJnZXQuc3RhdGUgIT0gREJfU0hVVERPV05FRF9JTl9SRUNPVkVSWSkKLQkJcGdf ZmF0YWwoInRhcmdldCBzZXJ2ZXIgbXVzdCBiZSBzaHV0IGRvd24gY2xlYW5seVxuIik7CisJ CXBnX2ZhdGFsKCJ0YXJnZXQgc2VydmVyIG11c3QgYmUgc2h1dCBkb3duIGNsZWFubHkiKTsK IAogCS8qCiAJICogV2hlbiB0aGUgc291cmNlIGlzIGEgZGF0YSBkaXJlY3RvcnksIGFsc28g cmVxdWlyZSB0aGF0IHRoZSBzb3VyY2UKQEAgLTQzMyw3ICs0MzksNyBAQCBzYW5pdHlDaGVj a3Modm9pZCkKIAlpZiAoZGF0YWRpcl9zb3VyY2UgJiYKIAkJQ29udHJvbEZpbGVfc291cmNl LnN0YXRlICE9IERCX1NIVVRET1dORUQgJiYKIAkJQ29udHJvbEZpbGVfc291cmNlLnN0YXRl ICE9IERCX1NIVVRET1dORURfSU5fUkVDT1ZFUlkpCi0JCXBnX2ZhdGFsKCJzb3VyY2UgZGF0 YSBkaXJlY3RvcnkgbXVzdCBiZSBzaHV0IGRvd24gY2xlYW5seVxuIik7CisJCXBnX2ZhdGFs KCJzb3VyY2UgZGF0YSBkaXJlY3RvcnkgbXVzdCBiZSBzaHV0IGRvd24gY2xlYW5seSIpOwog fQogCiAvKgpAQCAtNDk5LDkgKzUwNSw5IEBAIGdldFRpbWVsaW5lSGlzdG9yeShDb250cm9s RmlsZURhdGEgKmNvbnRyb2xGaWxlLCBpbnQgKm5lbnRyaWVzKQogCQlpbnQJCQlpOwogCiAJ CWlmIChjb250cm9sRmlsZSA9PSAmQ29udHJvbEZpbGVfc291cmNlKQotCQkJcGdfbG9nKFBH X0RFQlVHLCAiU291cmNlIHRpbWVsaW5lIGhpc3Rvcnk6XG4iKTsKKwkJCXBnX2xvZ19kZWJ1 ZygiU291cmNlIHRpbWVsaW5lIGhpc3Rvcnk6Iik7CiAJCWVsc2UgaWYgKGNvbnRyb2xGaWxl ID09ICZDb250cm9sRmlsZV90YXJnZXQpCi0JCQlwZ19sb2coUEdfREVCVUcsICJUYXJnZXQg dGltZWxpbmUgaGlzdG9yeTpcbiIpOworCQkJcGdfbG9nX2RlYnVnKCJUYXJnZXQgdGltZWxp bmUgaGlzdG9yeToiKTsKIAkJZWxzZQogCQkJQXNzZXJ0KGZhbHNlKTsKIApAQCAtNTEzLDkg KzUxOSw3IEBAIGdldFRpbWVsaW5lSGlzdG9yeShDb250cm9sRmlsZURhdGEgKmNvbnRyb2xG aWxlLCBpbnQgKm5lbnRyaWVzKQogCQkJVGltZUxpbmVIaXN0b3J5RW50cnkgKmVudHJ5Owog CiAJCQllbnRyeSA9ICZoaXN0b3J5W2ldOwotCQkJcGdfbG9nKFBHX0RFQlVHLAotCQkJLyog dHJhbnNsYXRvcjogJWQgaXMgYSB0aW1lbGluZSBudW1iZXIsIG90aGVycyBhcmUgTFNOIHBv c2l0aW9ucyAqLwotCQkJCSAgICIlZDogJVgvJVggLSAlWC8lWFxuIiwgZW50cnktPnRsaSwK KwkJCXBnX2xvZ19kZWJ1ZygiJWQ6ICVYLyVYIC0gJVgvJVgiLCBlbnRyeS0+dGxpLAogCQkJ CSAgICh1aW50MzIpIChlbnRyeS0+YmVnaW4gPj4gMzIpLCAodWludDMyKSAoZW50cnktPmJl Z2luKSwKIAkJCQkgICAodWludDMyKSAoZW50cnktPmVuZCA+PiAzMiksICh1aW50MzIpIChl bnRyeS0+ZW5kKSk7CiAJCX0KQEAgLTU3NCw3ICs1NzgsNyBAQCBmaW5kQ29tbW9uQW5jZXN0 b3JUaW1lbGluZShYTG9nUmVjUHRyICpyZWNwdHIsIGludCAqdGxpSW5kZXgpCiAJfQogCWVs c2UKIAl7Ci0JCXBnX2ZhdGFsKCJjb3VsZCBub3QgZmluZCBjb21tb24gYW5jZXN0b3Igb2Yg dGhlIHNvdXJjZSBhbmQgdGFyZ2V0IGNsdXN0ZXIncyB0aW1lbGluZXNcbiIpOworCQlwZ19m YXRhbCgiY291bGQgbm90IGZpbmQgY29tbW9uIGFuY2VzdG9yIG9mIHRoZSBzb3VyY2UgYW5k IHRhcmdldCBjbHVzdGVyJ3MgdGltZWxpbmVzIik7CiAJfQogfQogCkBAIC02MTUsNyArNjE5 LDcgQEAgY3JlYXRlQmFja3VwTGFiZWwoWExvZ1JlY1B0ciBzdGFydHBvaW50LCBUaW1lTGlu ZUlEIHN0YXJ0dGxpLCBYTG9nUmVjUHRyIGNoZWNrcG8KIAkJCQkgICAodWludDMyKSAoY2hl Y2twb2ludGxvYyA+PiAzMiksICh1aW50MzIpIGNoZWNrcG9pbnRsb2MsCiAJCQkJICAgc3Ry ZmJ1Zik7CiAJaWYgKGxlbiA+PSBzaXplb2YoYnVmKSkKLQkJcGdfZmF0YWwoImJhY2t1cCBs YWJlbCBidWZmZXIgdG9vIHNtYWxsXG4iKTsJLyogc2hvdWxkbid0IGhhcHBlbiAqLworCQlw Z19mYXRhbCgiYmFja3VwIGxhYmVsIGJ1ZmZlciB0b28gc21hbGwiKTsJLyogc2hvdWxkbid0 IGhhcHBlbiAqLwogCiAJLyogVE9ETzogbW92ZSBvbGQgZmlsZSBvdXQgb2YgdGhlIHdheSwg aWYgYW55LiAqLwogCW9wZW5fdGFyZ2V0X2ZpbGUoImJhY2t1cF9sYWJlbCIsIHRydWUpOyAv KiBCQUNLVVBfTEFCRUxfRklMRSAqLwpAQCAtNjM4LDcgKzY0Miw3IEBAIGNoZWNrQ29udHJv bEZpbGUoQ29udHJvbEZpbGVEYXRhICpDb250cm9sRmlsZSkKIAogCS8qIEFuZCBzaW1wbHkg Y29tcGFyZSBpdCAqLwogCWlmICghRVFfQ1JDMzJDKGNyYywgQ29udHJvbEZpbGUtPmNyYykp Ci0JCXBnX2ZhdGFsKCJ1bmV4cGVjdGVkIGNvbnRyb2wgZmlsZSBDUkNcbiIpOworCQlwZ19m YXRhbCgidW5leHBlY3RlZCBjb250cm9sIGZpbGUgQ1JDIik7CiB9CiAKIC8qCkBAIC02NDgs NyArNjUyLDcgQEAgc3RhdGljIHZvaWQKIGRpZ2VzdENvbnRyb2xGaWxlKENvbnRyb2xGaWxl RGF0YSAqQ29udHJvbEZpbGUsIGNoYXIgKnNyYywgc2l6ZV90IHNpemUpCiB7CiAJaWYgKHNp emUgIT0gUEdfQ09OVFJPTF9GSUxFX1NJWkUpCi0JCXBnX2ZhdGFsKCJ1bmV4cGVjdGVkIGNv bnRyb2wgZmlsZSBzaXplICVkLCBleHBlY3RlZCAlZFxuIiwKKwkJcGdfZmF0YWwoInVuZXhw ZWN0ZWQgY29udHJvbCBmaWxlIHNpemUgJWQsIGV4cGVjdGVkICVkIiwKIAkJCQkgKGludCkg c2l6ZSwgUEdfQ09OVFJPTF9GSUxFX1NJWkUpOwogCiAJbWVtY3B5KENvbnRyb2xGaWxlLCBz cmMsIHNpemVvZihDb250cm9sRmlsZURhdGEpKTsKQEAgLTY1Nyw4ICs2NjEsOCBAQCBkaWdl c3RDb250cm9sRmlsZShDb250cm9sRmlsZURhdGEgKkNvbnRyb2xGaWxlLCBjaGFyICpzcmMs IHNpemVfdCBzaXplKQogCVdhbFNlZ1N6ID0gQ29udHJvbEZpbGUtPnhsb2dfc2VnX3NpemU7 CiAKIAlpZiAoIUlzVmFsaWRXYWxTZWdTaXplKFdhbFNlZ1N6KSkKLQkJcGdfZmF0YWwobmdl dHRleHQoIldBTCBzZWdtZW50IHNpemUgbXVzdCBiZSBhIHBvd2VyIG9mIHR3byBiZXR3ZWVu IDEgTUIgYW5kIDEgR0IsIGJ1dCB0aGUgY29udHJvbCBmaWxlIHNwZWNpZmllcyAlZCBieXRl XG4iLAotCQkJCQkJICAiV0FMIHNlZ21lbnQgc2l6ZSBtdXN0IGJlIGEgcG93ZXIgb2YgdHdv IGJldHdlZW4gMSBNQiBhbmQgMSBHQiwgYnV0IHRoZSBjb250cm9sIGZpbGUgc3BlY2lmaWVz ICVkIGJ5dGVzXG4iLAorCQlwZ19mYXRhbChuZ2V0dGV4dCgiV0FMIHNlZ21lbnQgc2l6ZSBt dXN0IGJlIGEgcG93ZXIgb2YgdHdvIGJldHdlZW4gMSBNQiBhbmQgMSBHQiwgYnV0IHRoZSBj b250cm9sIGZpbGUgc3BlY2lmaWVzICVkIGJ5dGUiLAorCQkJCQkJICAiV0FMIHNlZ21lbnQg c2l6ZSBtdXN0IGJlIGEgcG93ZXIgb2YgdHdvIGJldHdlZW4gMSBNQiBhbmQgMSBHQiwgYnV0 IHRoZSBjb250cm9sIGZpbGUgc3BlY2lmaWVzICVkIGJ5dGVzIiwKIAkJCQkJCSAgV2FsU2Vn U3opLAogCQkJCSBXYWxTZWdTeik7CiAKQEAgLTcyMCw1ICs3MjQsNSBAQCBzeW5jVGFyZ2V0 RGlyZWN0b3J5KGNvbnN0IGNoYXIgKmFyZ3YwKQogCWlmICghZG9fc3luYyB8fCBkcnlfcnVu KQogCQlyZXR1cm47CiAKLQlmc3luY19wZ2RhdGEoZGF0YWRpcl90YXJnZXQsIHByb2duYW1l LCBQR19WRVJTSU9OX05VTSk7CisJZnN5bmNfcGdkYXRhKGRhdGFkaXJfdGFyZ2V0LCBQR19W RVJTSU9OX05VTSk7CiB9CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX3Jld2luZC9wZ19yZXdp bmQuaCBiL3NyYy9iaW4vcGdfcmV3aW5kL3BnX3Jld2luZC5oCmluZGV4IDNmNGJhN2EyNjcu LjRkNGFlYjJlN2YgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfcmV3aW5kL3BnX3Jld2luZC5o CisrKyBiL3NyYy9iaW4vcGdfcmV3aW5kL3BnX3Jld2luZC5oCkBAIC0yMSw3ICsyMSw2IEBA CiBleHRlcm4gY2hhciAqZGF0YWRpcl90YXJnZXQ7CiBleHRlcm4gY2hhciAqZGF0YWRpcl9z b3VyY2U7CiBleHRlcm4gY2hhciAqY29ubnN0cl9zb3VyY2U7Ci1leHRlcm4gYm9vbCBkZWJ1 ZzsKIGV4dGVybiBib29sIHNob3dwcm9ncmVzczsKIGV4dGVybiBib29sIGRyeV9ydW47CiBl eHRlcm4gaW50CVdhbFNlZ1N6OwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19yZXdpbmQvdGlt ZWxpbmUuYyBiL3NyYy9iaW4vcGdfcmV3aW5kL3RpbWVsaW5lLmMKaW5kZXggOGE4YzU4NzQ0 MC4uZjVmMTA3ZmJmNCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19yZXdpbmQvdGltZWxpbmUu YworKysgYi9zcmMvYmluL3BnX3Jld2luZC90aW1lbGluZS5jCkBAIC0xMyw2ICsxMyw3IEBA CiAKICNpbmNsdWRlICJhY2Nlc3MvdGltZWxpbmUuaCIKICNpbmNsdWRlICJhY2Nlc3MveGxv Z19pbnRlcm5hbC5oIgorI2luY2x1ZGUgImZlX3V0aWxzL2xvZ2dpbmcuaCIKIAogLyoKICAq IFRoaXMgaXMgY29weS1wYXN0ZWQgZnJvbSB0aGUgYmFja2VuZCByZWFkVGltZUxpbmVIaXN0 b3J5LCBtb2RpZmllZCB0bwpAQCAtNzMsMjAgKzc0LDIwIEBAIHJld2luZF9wYXJzZVRpbWVM aW5lSGlzdG9yeShjaGFyICpidWZmZXIsIFRpbWVMaW5lSUQgdGFyZ2V0VExJLCBpbnQgKm5l bnRyaWVzKQogCQlpZiAobmZpZWxkcyA8IDEpCiAJCXsKIAkJCS8qIGV4cGVjdCBhIG51bWVy aWMgdGltZWxpbmUgSUQgYXMgZmlyc3QgZmllbGQgb2YgbGluZSAqLwotCQkJZnByaW50Zihz dGRlcnIsIF8oInN5bnRheCBlcnJvciBpbiBoaXN0b3J5IGZpbGU6ICVzXG4iKSwgZmxpbmUp OwotCQkJZnByaW50ZihzdGRlcnIsIF8oIkV4cGVjdGVkIGEgbnVtZXJpYyB0aW1lbGluZSBJ RC5cbiIpKTsKKwkJCXBnX2xvZ19lcnJvcigic3ludGF4IGVycm9yIGluIGhpc3RvcnkgZmls ZTogJXMiLCBmbGluZSk7CisJCQlwZ19sb2dfZXJyb3IoIkV4cGVjdGVkIGEgbnVtZXJpYyB0 aW1lbGluZSBJRC4iKTsKIAkJCWV4aXQoMSk7CiAJCX0KIAkJaWYgKG5maWVsZHMgIT0gMykK IAkJewotCQkJZnByaW50ZihzdGRlcnIsIF8oInN5bnRheCBlcnJvciBpbiBoaXN0b3J5IGZp bGU6ICVzXG4iKSwgZmxpbmUpOwotCQkJZnByaW50ZihzdGRlcnIsIF8oIkV4cGVjdGVkIGEg d3JpdGUtYWhlYWQgbG9nIHN3aXRjaHBvaW50IGxvY2F0aW9uLlxuIikpOworCQkJcGdfbG9n X2Vycm9yKCJzeW50YXggZXJyb3IgaW4gaGlzdG9yeSBmaWxlOiAlcyIsIGZsaW5lKTsKKwkJ CXBnX2xvZ19lcnJvcigiRXhwZWN0ZWQgYSB3cml0ZS1haGVhZCBsb2cgc3dpdGNocG9pbnQg bG9jYXRpb24uIik7CiAJCQlleGl0KDEpOwogCQl9CiAJCWlmIChlbnRyaWVzICYmIHRsaSA8 PSBsYXN0dGxpKQogCQl7Ci0JCQlmcHJpbnRmKHN0ZGVyciwgXygiaW52YWxpZCBkYXRhIGlu IGhpc3RvcnkgZmlsZTogJXNcbiIpLCBmbGluZSk7Ci0JCQlmcHJpbnRmKHN0ZGVyciwgXygi VGltZWxpbmUgSURzIG11c3QgYmUgaW4gaW5jcmVhc2luZyBzZXF1ZW5jZS5cbiIpKTsKKwkJ CXBnX2xvZ19lcnJvcigiaW52YWxpZCBkYXRhIGluIGhpc3RvcnkgZmlsZTogJXMiLCBmbGlu ZSk7CisJCQlwZ19sb2dfZXJyb3IoIlRpbWVsaW5lIElEcyBtdXN0IGJlIGluIGluY3JlYXNp bmcgc2VxdWVuY2UuIik7CiAJCQlleGl0KDEpOwogCQl9CiAKQEAgLTEwNiw4ICsxMDcsOCBA QCByZXdpbmRfcGFyc2VUaW1lTGluZUhpc3RvcnkoY2hhciAqYnVmZmVyLCBUaW1lTGluZUlE IHRhcmdldFRMSSwgaW50ICpuZW50cmllcykKIAogCWlmIChlbnRyaWVzICYmIHRhcmdldFRM SSA8PSBsYXN0dGxpKQogCXsKLQkJZnByaW50ZihzdGRlcnIsIF8oImludmFsaWQgZGF0YSBp biBoaXN0b3J5IGZpbGVcbiIpKTsKLQkJZnByaW50ZihzdGRlcnIsIF8oIlRpbWVsaW5lIElE cyBtdXN0IGJlIGxlc3MgdGhhbiBjaGlsZCB0aW1lbGluZSdzIElELlxuIikpOworCQlwZ19s b2dfZXJyb3IoImludmFsaWQgZGF0YSBpbiBoaXN0b3J5IGZpbGUiKTsKKwkJcGdfbG9nX2Vy cm9yKCJUaW1lbGluZSBJRHMgbXVzdCBiZSBsZXNzIHRoYW4gY2hpbGQgdGltZWxpbmUncyBJ RC4iKTsKIAkJZXhpdCgxKTsKIAl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfdGVzdF9m c3luYy9NYWtlZmlsZSBiL3NyYy9iaW4vcGdfdGVzdF9mc3luYy9NYWtlZmlsZQppbmRleCA5 MDQ5NmRmNTY2Li43NjlkYWVjZjJiIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX3Rlc3RfZnN5 bmMvTWFrZWZpbGUKKysrIGIvc3JjL2Jpbi9wZ190ZXN0X2ZzeW5jL01ha2VmaWxlCkBAIC03 LDExICs3LDEzIEBAIHN1YmRpciA9IHNyYy9iaW4vcGdfdGVzdF9mc3luYwogdG9wX2J1aWxk ZGlyID0gLi4vLi4vLi4KIGluY2x1ZGUgJCh0b3BfYnVpbGRkaXIpL3NyYy9NYWtlZmlsZS5n bG9iYWwKIAorTERGTEFHU19JTlRFUk5BTCArPSAtTCQodG9wX2J1aWxkZGlyKS9zcmMvZmVf dXRpbHMgLWxwZ2ZldXRpbHMKKwogT0JKUyA9IHBnX3Rlc3RfZnN5bmMubyAkKFdJTjMyUkVT KQogCiBhbGw6IHBnX3Rlc3RfZnN5bmMKIAotcGdfdGVzdF9mc3luYzogJChPQkpTKSB8IHN1 Ym1ha2UtbGlicGdwb3J0CitwZ190ZXN0X2ZzeW5jOiAkKE9CSlMpIHwgc3VibWFrZS1saWJw Z3BvcnQgc3VibWFrZS1saWJwZ2ZldXRpbHMKIAkkKENDKSAkKENGTEFHUykgJF4gJChMREZM QUdTKSAkKExERkxBR1NfRVgpICQoTElCUykgLW8gJEAkKFgpCiAKIGluc3RhbGw6IGFsbCBp bnN0YWxsZGlycwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ190ZXN0X2ZzeW5jL3BnX3Rlc3Rf ZnN5bmMuYyBiL3NyYy9iaW4vcGdfdGVzdF9mc3luYy9wZ190ZXN0X2ZzeW5jLmMKaW5kZXgg ZTZmN2VmODU1Ny4uMmMwMDVhOTQyYSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ190ZXN0X2Zz eW5jL3BnX3Rlc3RfZnN5bmMuYworKysgYi9zcmMvYmluL3BnX3Rlc3RfZnN5bmMvcGdfdGVz dF9mc3luYy5jCkBAIC0xNCw2ICsxNCw3IEBACiAKICNpbmNsdWRlICJnZXRvcHRfbG9uZy5o IgogI2luY2x1ZGUgImFjY2Vzcy94bG9nZGVmcy5oIgorI2luY2x1ZGUgImZlX3V0aWxzL2xv Z2dpbmcuaCIKIAogCiAvKgpAQCAtNDYsNyArNDcsNyBAQCBkbyB7IFwKIAlpZiAoQ3JlYXRl VGhyZWFkKE5VTEwsIDAsIHByb2Nlc3NfYWxhcm0sIE5VTEwsIDAsIE5VTEwpID09IFwKIAkJ SU5WQUxJRF9IQU5ETEVfVkFMVUUpIFwKIAl7IFwKLQkJZnByaW50ZihzdGRlcnIsIF8oIkNv dWxkIG5vdCBjcmVhdGUgdGhyZWFkIGZvciBhbGFybVxuIikpOyBcCisJCXBnX2xvZ19lcnJv cigiY291bGQgbm90IGNyZWF0ZSB0aHJlYWQgZm9yIGFsYXJtIik7IFwKIAkJZXhpdCgxKTsg XAogCX0gXAogCWdldHRpbWVvZmRheSgmc3RhcnRfdCwgTlVMTCk7IFwKQEAgLTkyLDEzICs5 MywxNSBAQCBzdGF0aWMgdm9pZCBzaWduYWxfY2xlYW51cChpbnQgc2lnKTsKIHN0YXRpYyBp bnQJcGdfZnN5bmNfd3JpdGV0aHJvdWdoKGludCBmZCk7CiAjZW5kaWYKIHN0YXRpYyB2b2lk IHByaW50X2VsYXBzZShzdHJ1Y3QgdGltZXZhbCBzdGFydF90LCBzdHJ1Y3QgdGltZXZhbCBz dG9wX3QsIGludCBvcHMpOwotc3RhdGljIHZvaWQgZGllKGNvbnN0IGNoYXIgKnN0cik7CisK KyNkZWZpbmUgZGllKG1zZykgZG8geyBwZ19sb2dfZXJyb3IoIiVzOiAlbSIsIF8obXNnKSk7 IGV4aXQoMSk7IH0gd2hpbGUoMCkKIAogCiBpbnQKIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFy Z3ZbXSkKIHsKIAlzZXRfcGdsb2NhbGVfcGdzZXJ2aWNlKGFyZ3ZbMF0sIFBHX1RFWFRET01B SU4oInBnX3Rlc3RfZnN5bmMiKSk7CisJcGdfbG9nZ2luZ19pbml0KGFyZ3ZbMF0pOwogCXBy b2duYW1lID0gZ2V0X3Byb2duYW1lKGFyZ3ZbMF0pOwogCiAJaGFuZGxlX2FyZ3MoYXJnYywg YXJndik7CkBAIC0xODQsOSArMTg3LDggQEAgaGFuZGxlX2FyZ3MoaW50IGFyZ2MsIGNoYXIg KmFyZ3ZbXSkKIAogCWlmIChhcmdjID4gb3B0aW5kKQogCXsKLQkJZnByaW50ZihzdGRlcnIs Ci0JCQkJXygiJXM6IHRvbyBtYW55IGNvbW1hbmQtbGluZSBhcmd1bWVudHMgKGZpcnN0IGlz IFwiJXNcIilcbiIpLAotCQkJCXByb2duYW1lLCBhcmd2W29wdGluZF0pOworCQlwZ19sb2df ZXJyb3IoInRvbyBtYW55IGNvbW1hbmQtbGluZSBhcmd1bWVudHMgKGZpcnN0IGlzIFwiJXNc IikiLAorCQkJCQkgYXJndltvcHRpbmRdKTsKIAkJZnByaW50ZihzdGRlcnIsIF8oIlRyeSBc IiVzIC0taGVscFwiIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuIiksCiAJCQkJcHJvZ25hbWUp OwogCQlleGl0KDEpOwpAQCAtNjAxLDEwICs2MDMsMyBAQCBwcm9jZXNzX2FsYXJtKExQVk9J RCBwYXJhbSkKIAlFeGl0VGhyZWFkKDApOwogfQogI2VuZGlmCi0KLXN0YXRpYyB2b2lkCi1k aWUoY29uc3QgY2hhciAqc3RyKQotewotCWZwcmludGYoc3RkZXJyLCBfKCIlczogJXNcbiIp LCBfKHN0ciksIHN0cmVycm9yKGVycm5vKSk7Ci0JZXhpdCgxKTsKLX0KZGlmZiAtLWdpdCBh L3NyYy9iaW4vcGdfdXBncmFkZS9wZ191cGdyYWRlLmMgYi9zcmMvYmluL3BnX3VwZ3JhZGUv cGdfdXBncmFkZS5jCmluZGV4IDQ3MTE5ZGM0MmQuLmFjNmFjOTYxMzAgMTAwNjQ0Ci0tLSBh L3NyYy9iaW4vcGdfdXBncmFkZS9wZ191cGdyYWRlLmMKKysrIGIvc3JjL2Jpbi9wZ191cGdy YWRlL3BnX3VwZ3JhZGUuYwpAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgImNhdGFsb2cv cGdfY2xhc3NfZC5oIgogI2luY2x1ZGUgImNvbW1vbi9maWxlX3Blcm0uaCIKICNpbmNsdWRl ICJjb21tb24vcmVzdHJpY3RlZF90b2tlbi5oIgorI2luY2x1ZGUgImZlX3V0aWxzL2xvZ2dp bmcuaCIKICNpbmNsdWRlICJmZV91dGlscy9zdHJpbmdfdXRpbHMuaCIKIAogI2lmZGVmIEhB VkVfTEFOR0lORk9fSApAQCAtNzksMTMgKzgwLDE0IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIg Kiphcmd2KQogCWJvb2wJCWxpdmVfY2hlY2sgPSBmYWxzZTsKIAogCXNldF9wZ2xvY2FsZV9w Z3NlcnZpY2UoYXJndlswXSwgUEdfVEVYVERPTUFJTigicGdfdXBncmFkZSIpKTsKKwlwZ19s b2dnaW5nX2luaXQoYXJndlswXSk7CiAKIAkvKiBTZXQgZGVmYXVsdCByZXN0cmljdGl2ZSBt YXNrIHVudGlsIG5ldyBjbHVzdGVyIHBlcm1pc3Npb25zIGFyZSByZWFkICovCiAJdW1hc2so UEdfTU9ERV9NQVNLX09XTkVSKTsKIAogCXBhcnNlQ29tbWFuZExpbmUoYXJnYywgYXJndik7 CiAKLQlnZXRfcmVzdHJpY3RlZF90b2tlbihvc19pbmZvLnByb2duYW1lKTsKKwlnZXRfcmVz dHJpY3RlZF90b2tlbigpOwogCiAJYWRqdXN0X2RhdGFfZGlyKCZvbGRfY2x1c3Rlcik7CiAJ YWRqdXN0X2RhdGFfZGlyKCZuZXdfY2x1c3Rlcik7CmRpZmYgLS1naXQgYS9zcmMvYmluL3Bn X3ZlcmlmeV9jaGVja3N1bXMvTWFrZWZpbGUgYi9zcmMvYmluL3BnX3ZlcmlmeV9jaGVja3N1 bXMvTWFrZWZpbGUKaW5kZXggY2ZlNGFiMWI4Yi4uMzM4MTM3MDk3YyAxMDA2NDQKLS0tIGEv c3JjL2Jpbi9wZ192ZXJpZnlfY2hlY2tzdW1zL01ha2VmaWxlCisrKyBiL3NyYy9iaW4vcGdf dmVyaWZ5X2NoZWNrc3Vtcy9NYWtlZmlsZQpAQCAtMTUsMTEgKzE1LDEzIEBAIHN1YmRpciA9 IHNyYy9iaW4vcGdfdmVyaWZ5X2NoZWNrc3VtcwogdG9wX2J1aWxkZGlyID0gLi4vLi4vLi4K IGluY2x1ZGUgJCh0b3BfYnVpbGRkaXIpL3NyYy9NYWtlZmlsZS5nbG9iYWwKIAorTERGTEFH U19JTlRFUk5BTCArPSAtTCQodG9wX2J1aWxkZGlyKS9zcmMvZmVfdXRpbHMgLWxwZ2ZldXRp bHMKKwogT0JKUz0gcGdfdmVyaWZ5X2NoZWNrc3Vtcy5vICQoV0lOMzJSRVMpCiAKIGFsbDog cGdfdmVyaWZ5X2NoZWNrc3VtcwogCi1wZ192ZXJpZnlfY2hlY2tzdW1zOiAkKE9CSlMpIHwg c3VibWFrZS1saWJwZ3BvcnQKK3BnX3ZlcmlmeV9jaGVja3N1bXM6ICQoT0JKUykgfCBzdWJt YWtlLWxpYnBncG9ydCBzdWJtYWtlLWxpYnBnZmV1dGlscwogCSQoQ0MpICQoQ0ZMQUdTKSAk XiAkKExERkxBR1MpICQoTERGTEFHU19FWCkgJChMSUJTKSAtbyAkQCQoWCkKIAogaW5zdGFs bDogYWxsIGluc3RhbGxkaXJzCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX3ZlcmlmeV9jaGVj a3N1bXMvbmxzLm1rIGIvc3JjL2Jpbi9wZ192ZXJpZnlfY2hlY2tzdW1zL25scy5tawppbmRl eCA4OTNlZmFmMGYwLi45ZTFmYTk5ZDNmIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX3Zlcmlm eV9jaGVja3N1bXMvbmxzLm1rCisrKyBiL3NyYy9iaW4vcGdfdmVyaWZ5X2NoZWNrc3Vtcy9u bHMubWsKQEAgLTEsNCArMSw2IEBACiAjIHNyYy9iaW4vcGdfdmVyaWZ5X2NoZWNrc3Vtcy9u bHMubWsKIENBVEFMT0dfTkFNRSAgICAgPSBwZ192ZXJpZnlfY2hlY2tzdW1zCiBBVkFJTF9M QU5HVUFHRVMgID0KLUdFVFRFWFRfRklMRVMgICAgPSBwZ192ZXJpZnlfY2hlY2tzdW1zLmMK K0dFVFRFWFRfRklMRVMgICAgPSAkKEZST05URU5EX0NPTU1PTl9HRVRURVhUX0ZJTEVTKSBw Z192ZXJpZnlfY2hlY2tzdW1zLmMKK0dFVFRFWFRfVFJJR0dFUlMgPSAkKEZST05URU5EX0NP TU1PTl9HRVRURVhUX1RSSUdHRVJTKQorR0VUVEVYVF9GTEFHUyAgICA9ICQoRlJPTlRFTkRf Q09NTU9OX0dFVFRFWFRfRkxBR1MpCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX3ZlcmlmeV9j aGVja3N1bXMvcGdfdmVyaWZ5X2NoZWNrc3Vtcy5jIGIvc3JjL2Jpbi9wZ192ZXJpZnlfY2hl Y2tzdW1zL3BnX3ZlcmlmeV9jaGVja3N1bXMuYwppbmRleCA2NDQ0ZmM5Y2E0Li4zMTA0NDRm ZGQ4IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX3ZlcmlmeV9jaGVja3N1bXMvcGdfdmVyaWZ5 X2NoZWNrc3Vtcy5jCisrKyBiL3NyYy9iaW4vcGdfdmVyaWZ5X2NoZWNrc3Vtcy9wZ192ZXJp ZnlfY2hlY2tzdW1zLmMKQEAgLTE1LDYgKzE1LDcgQEAKIAogI2luY2x1ZGUgImNhdGFsb2cv cGdfY29udHJvbC5oIgogI2luY2x1ZGUgImNvbW1vbi9jb250cm9sZGF0YV91dGlscy5oIgor I2luY2x1ZGUgImZlX3V0aWxzL2xvZ2dpbmcuaCIKICNpbmNsdWRlICJnZXRvcHRfbG9uZy5o IgogI2luY2x1ZGUgInBnX2dldG9wdC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvYnVmcGFnZS5o IgpAQCAtOTAsOCArOTEsNyBAQCBzY2FuX2ZpbGUoY29uc3QgY2hhciAqZm4sIEJsb2NrTnVt YmVyIHNlZ21lbnRubykKIAlmID0gb3BlbihmbiwgT19SRE9OTFkgfCBQR19CSU5BUlksIDAp OwogCWlmIChmIDwgMCkKIAl7Ci0JCWZwcmludGYoc3RkZXJyLCBfKCIlczogY291bGQgbm90 IG9wZW4gZmlsZSBcIiVzXCI6ICVzXG4iKSwKLQkJCQlwcm9nbmFtZSwgZm4sIHN0cmVycm9y KGVycm5vKSk7CisJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IG9wZW4gZmlsZSBcIiVzXCI6 ICVtIiwgZm4pOwogCQlleGl0KDEpOwogCX0KIApAQCAtMTA2LDggKzEwNiw4IEBAIHNjYW5f ZmlsZShjb25zdCBjaGFyICpmbiwgQmxvY2tOdW1iZXIgc2VnbWVudG5vKQogCQkJYnJlYWs7 CiAJCWlmIChyICE9IEJMQ0tTWikKIAkJewotCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBj b3VsZCBub3QgcmVhZCBibG9jayAldSBpbiBmaWxlIFwiJXNcIjogcmVhZCAlZCBvZiAlZFxu IiksCi0JCQkJCXByb2duYW1lLCBibG9ja25vLCBmbiwgciwgQkxDS1NaKTsKKwkJCXBnX2xv Z19lcnJvcigiY291bGQgbm90IHJlYWQgYmxvY2sgJXUgaW4gZmlsZSBcIiVzXCI6IHJlYWQg JWQgb2YgJWQiLAorCQkJCQkJIGJsb2Nrbm8sIGZuLCByLCBCTENLU1opOwogCQkJZXhpdCgx KTsKIAkJfQogCQlibG9ja3MrKzsKQEAgLTEyMCwxNSArMTIwLDE0IEBAIHNjYW5fZmlsZShj b25zdCBjaGFyICpmbiwgQmxvY2tOdW1iZXIgc2VnbWVudG5vKQogCQlpZiAoY3N1bSAhPSBo ZWFkZXItPnBkX2NoZWNrc3VtKQogCQl7CiAJCQlpZiAoQ29udHJvbEZpbGUtPmRhdGFfY2hl Y2tzdW1fdmVyc2lvbiA9PSBQR19EQVRBX0NIRUNLU1VNX1ZFUlNJT04pCi0JCQkJZnByaW50 ZihzdGRlcnIsIF8oIiVzOiBjaGVja3N1bSB2ZXJpZmljYXRpb24gZmFpbGVkIGluIGZpbGUg XCIlc1wiLCBibG9jayAldTogY2FsY3VsYXRlZCBjaGVja3N1bSAlWCBidXQgYmxvY2sgY29u dGFpbnMgJVhcbiIpLAotCQkJCQkJcHJvZ25hbWUsIGZuLCBibG9ja25vLCBjc3VtLCBoZWFk ZXItPnBkX2NoZWNrc3VtKTsKKwkJCQlwZ19sb2dfZXJyb3IoImNoZWNrc3VtIHZlcmlmaWNh dGlvbiBmYWlsZWQgaW4gZmlsZSBcIiVzXCIsIGJsb2NrICV1OiBjYWxjdWxhdGVkIGNoZWNr c3VtICVYIGJ1dCBibG9jayBjb250YWlucyAlWCIsCisJCQkJCQkJIGZuLCBibG9ja25vLCBj c3VtLCBoZWFkZXItPnBkX2NoZWNrc3VtKTsKIAkJCWJhZGJsb2NrcysrOwogCQl9CiAJfQog CiAJaWYgKHZlcmJvc2UpCi0JCWZwcmludGYoc3RkZXJyLAotCQkJCV8oIiVzOiBjaGVja3N1 bXMgdmVyaWZpZWQgaW4gZmlsZSBcIiVzXCJcbiIpLCBwcm9nbmFtZSwgZm4pOworCQlwZ19s b2dfaW5mbygiY2hlY2tzdW1zIHZlcmlmaWVkIGluIGZpbGUgXCIlc1wiIiwgZm4pOwogCiAJ Y2xvc2UoZik7CiB9CkBAIC0xNDQsOCArMTQzLDcgQEAgc2Nhbl9kaXJlY3RvcnkoY29uc3Qg Y2hhciAqYmFzZWRpciwgY29uc3QgY2hhciAqc3ViZGlyKQogCWRpciA9IG9wZW5kaXIocGF0 aCk7CiAJaWYgKCFkaXIpCiAJewotCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5v dCBvcGVuIGRpcmVjdG9yeSBcIiVzXCI6ICVzXG4iKSwKLQkJCQlwcm9nbmFtZSwgcGF0aCwg c3RyZXJyb3IoZXJybm8pKTsKKwkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3Qgb3BlbiBkaXJl Y3RvcnkgXCIlc1wiOiAlbSIsIHBhdGgpOwogCQlleGl0KDEpOwogCX0KIAl3aGlsZSAoKGRl ID0gcmVhZGRpcihkaXIpKSAhPSBOVUxMKQpAQCAtMTcyLDggKzE3MCw3IEBAIHNjYW5fZGly ZWN0b3J5KGNvbnN0IGNoYXIgKmJhc2VkaXIsIGNvbnN0IGNoYXIgKnN1YmRpcikKIAkJc25w cmludGYoZm4sIHNpemVvZihmbiksICIlcy8lcyIsIHBhdGgsIGRlLT5kX25hbWUpOwogCQlp ZiAobHN0YXQoZm4sICZzdCkgPCAwKQogCQl7Ci0JCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6 IGNvdWxkIG5vdCBzdGF0IGZpbGUgXCIlc1wiOiAlc1xuIiksCi0JCQkJCXByb2duYW1lLCBm biwgc3RyZXJyb3IoZXJybm8pKTsKKwkJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IHN0YXQg ZmlsZSBcIiVzXCI6ICVtIiwgZm4pOwogCQkJZXhpdCgxKTsKIAkJfQogCQlpZiAoU19JU1JF RyhzdC5zdF9tb2RlKSkKQEAgLTIwMCw4ICsxOTcsOCBAQCBzY2FuX2RpcmVjdG9yeShjb25z dCBjaGFyICpiYXNlZGlyLCBjb25zdCBjaGFyICpzdWJkaXIpCiAJCQkJc2VnbWVudG5vID0g YXRvaShzZWdtZW50cGF0aCk7CiAJCQkJaWYgKHNlZ21lbnRubyA9PSAwKQogCQkJCXsKLQkJ CQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBpbnZhbGlkIHNlZ21lbnQgbnVtYmVyICVkIGlu IGZpbGUgbmFtZSBcIiVzXCJcbiIpLAotCQkJCQkJCXByb2duYW1lLCBzZWdtZW50bm8sIGZu KTsKKwkJCQkJcGdfbG9nX2Vycm9yKCJpbnZhbGlkIHNlZ21lbnQgbnVtYmVyICVkIGluIGZp bGUgbmFtZSBcIiVzXCIiLAorCQkJCQkJCQkgc2VnbWVudG5vLCBmbik7CiAJCQkJCWV4aXQo MSk7CiAJCQkJfQogCQkJfQpAQCAtMjQxLDcgKzIzOCw3IEBAIG1haW4oaW50IGFyZ2MsIGNo YXIgKmFyZ3ZbXSkKIAlib29sCQljcmNfb2s7CiAKIAlzZXRfcGdsb2NhbGVfcGdzZXJ2aWNl KGFyZ3ZbMF0sIFBHX1RFWFRET01BSU4oInBnX3ZlcmlmeV9jaGVja3N1bXMiKSk7Ci0KKwlw Z19sb2dnaW5nX2luaXQoYXJndlswXSk7CiAJcHJvZ25hbWUgPSBnZXRfcHJvZ25hbWUoYXJn dlswXSk7CiAKIAlpZiAoYXJnYyA+IDEpCkBAIC0yNzEsNyArMjY4LDcgQEAgbWFpbihpbnQg YXJnYywgY2hhciAqYXJndltdKQogCQkJY2FzZSAncic6CiAJCQkJaWYgKGF0b2kob3B0YXJn KSA9PSAwKQogCQkJCXsKLQkJCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBpbnZhbGlkIHJl bGZpbGVub2RlIHNwZWNpZmljYXRpb24sIG11c3QgYmUgbnVtZXJpYzogJXNcbiIpLCBwcm9n bmFtZSwgb3B0YXJnKTsKKwkJCQkJcGdfbG9nX2Vycm9yKCJpbnZhbGlkIHJlbGZpbGVub2Rl IHNwZWNpZmljYXRpb24sIG11c3QgYmUgbnVtZXJpYzogJXMiLCBvcHRhcmcpOwogCQkJCQll eGl0KDEpOwogCQkJCX0KIAkJCQlvbmx5X3JlbGZpbGVub2RlID0gcHN0cmR1cChvcHRhcmcp OwpAQCAtMjkyLDcgKzI4OSw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkJ LyogSWYgbm8gRGF0YURpciB3YXMgc3BlY2lmaWVkLCBhbmQgbm9uZSBjb3VsZCBiZSBmb3Vu ZCwgZXJyb3Igb3V0ICovCiAJCWlmIChEYXRhRGlyID09IE5VTEwpCiAJCXsKLQkJCWZwcmlu dGYoc3RkZXJyLCBfKCIlczogbm8gZGF0YSBkaXJlY3Rvcnkgc3BlY2lmaWVkXG4iKSwgcHJv Z25hbWUpOworCQkJcGdfbG9nX2Vycm9yKCJubyBkYXRhIGRpcmVjdG9yeSBzcGVjaWZpZWQi KTsKIAkJCWZwcmludGYoc3RkZXJyLCBfKCJUcnkgXCIlcyAtLWhlbHBcIiBmb3IgbW9yZSBp bmZvcm1hdGlvbi5cbiIpLCBwcm9nbmFtZSk7CiAJCQlleGl0KDEpOwogCQl9CkBAIC0zMDEs MzEgKzI5OCwzMSBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJLyogQ29tcGxh aW4gaWYgYW55IGFyZ3VtZW50cyByZW1haW4gKi8KIAlpZiAob3B0aW5kIDwgYXJnYykKIAl7 Ci0JCWZwcmludGYoc3RkZXJyLCBfKCIlczogdG9vIG1hbnkgY29tbWFuZC1saW5lIGFyZ3Vt ZW50cyAoZmlyc3QgaXMgXCIlc1wiKVxuIiksCi0JCQkJcHJvZ25hbWUsIGFyZ3Zbb3B0aW5k XSk7CisJCXBnX2xvZ19lcnJvcigidG9vIG1hbnkgY29tbWFuZC1saW5lIGFyZ3VtZW50cyAo Zmlyc3QgaXMgXCIlc1wiKSIsCisJCQkJCSBhcmd2W29wdGluZF0pOwogCQlmcHJpbnRmKHN0 ZGVyciwgXygiVHJ5IFwiJXMgLS1oZWxwXCIgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4iKSwK IAkJCQlwcm9nbmFtZSk7CiAJCWV4aXQoMSk7CiAJfQogCiAJLyogQ2hlY2sgaWYgY2x1c3Rl ciBpcyBydW5uaW5nICovCi0JQ29udHJvbEZpbGUgPSBnZXRfY29udHJvbGZpbGUoRGF0YURp ciwgcHJvZ25hbWUsICZjcmNfb2spOworCUNvbnRyb2xGaWxlID0gZ2V0X2NvbnRyb2xmaWxl KERhdGFEaXIsICZjcmNfb2spOwogCWlmICghY3JjX29rKQogCXsKLQkJZnByaW50ZihzdGRl cnIsIF8oIiVzOiBwZ19jb250cm9sIENSQyB2YWx1ZSBpcyBpbmNvcnJlY3RcbiIpLCBwcm9n bmFtZSk7CisJCXBnX2xvZ19lcnJvcigicGdfY29udHJvbCBDUkMgdmFsdWUgaXMgaW5jb3Jy ZWN0Iik7CiAJCWV4aXQoMSk7CiAJfQogCiAJaWYgKENvbnRyb2xGaWxlLT5zdGF0ZSAhPSBE Ql9TSFVURE9XTkVEICYmCiAJCUNvbnRyb2xGaWxlLT5zdGF0ZSAhPSBEQl9TSFVURE9XTkVE X0lOX1JFQ09WRVJZKQogCXsKLQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBjbHVzdGVyIG11 c3QgYmUgc2h1dCBkb3duIHRvIHZlcmlmeSBjaGVja3N1bXNcbiIpLCBwcm9nbmFtZSk7CisJ CXBnX2xvZ19lcnJvcigiY2x1c3RlciBtdXN0IGJlIHNodXQgZG93biB0byB2ZXJpZnkgY2hl Y2tzdW1zIik7CiAJCWV4aXQoMSk7CiAJfQogCiAJaWYgKENvbnRyb2xGaWxlLT5kYXRhX2No ZWNrc3VtX3ZlcnNpb24gPT0gMCkKIAl7Ci0JCWZwcmludGYoc3RkZXJyLCBfKCIlczogZGF0 YSBjaGVja3N1bXMgYXJlIG5vdCBlbmFibGVkIGluIGNsdXN0ZXJcbiIpLCBwcm9nbmFtZSk7 CisJCXBnX2xvZ19lcnJvcigiZGF0YSBjaGVja3N1bXMgYXJlIG5vdCBlbmFibGVkIGluIGNs dXN0ZXIiKTsKIAkJZXhpdCgxKTsKIAl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfd2Fs ZHVtcC9NYWtlZmlsZSBiL3NyYy9iaW4vcGdfd2FsZHVtcC9NYWtlZmlsZQppbmRleCBmNTk1 N2JkNzVhLi5iZmU5NDk4YjgwIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX3dhbGR1bXAvTWFr ZWZpbGUKKysrIGIvc3JjL2Jpbi9wZ193YWxkdW1wL01ha2VmaWxlCkBAIC0xMSw2ICsxMSw3 IEBAIE9CSlMgPSBwZ193YWxkdW1wLm8gY29tcGF0Lm8geGxvZ3JlYWRlci5vIHJtZ3JkZXNj Lm8gXAogCSQoUk1HUkRFU0NPQkpTKSAkKFdJTjMyUkVTKQogCiBvdmVycmlkZSBDUFBGTEFH UyA6PSAtREZST05URU5EICQoQ1BQRkxBR1MpCitMREZMQUdTX0lOVEVSTkFMICs9IC1MJCh0 b3BfYnVpbGRkaXIpL3NyYy9mZV91dGlscyAtbHBnZmV1dGlscwogCiBSTUdSREVTQ1NPVVJD RVMgPSAkKHNvcnQgJChub3RkaXIgJCh3aWxkY2FyZCAkKHRvcF9zcmNkaXIpL3NyYy9iYWNr ZW5kL2FjY2Vzcy9ybWdyZGVzYy8qZGVzYy5jKSkpCiBSTUdSREVTQ09CSlMgPSAkKHBhdHN1 YnN0ICUuYywlLm8sJChSTUdSREVTQ1NPVVJDRVMpKQpAQCAtMTgsNyArMTksNyBAQCBSTUdS REVTQ09CSlMgPSAkKHBhdHN1YnN0ICUuYywlLm8sJChSTUdSREVTQ1NPVVJDRVMpKQogCiBh bGw6IHBnX3dhbGR1bXAKIAotcGdfd2FsZHVtcDogJChPQkpTKSB8IHN1Ym1ha2UtbGlicGdw b3J0CitwZ193YWxkdW1wOiAkKE9CSlMpIHwgc3VibWFrZS1saWJwZ3BvcnQgc3VibWFrZS1s aWJwZ2ZldXRpbHMKIAkkKENDKSAkKENGTEFHUykgJF4gJChMREZMQUdTKSAkKExERkxBR1Nf RVgpICQoTElCUykgLW8gJEAkKFgpCiAKIHhsb2dyZWFkZXIuYzogJSA6ICQodG9wX3NyY2Rp cikvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vJQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9w Z193YWxkdW1wL25scy5tayBiL3NyYy9iaW4vcGdfd2FsZHVtcC9ubHMubWsKaW5kZXggYzYx OGY5MzE0NS4uMmVlMmRhNzkwMSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ193YWxkdW1wL25s cy5taworKysgYi9zcmMvYmluL3BnX3dhbGR1bXAvbmxzLm1rCkBAIC0xLDYgKzEsNiBAQAog IyBzcmMvYmluL3BnX3dhbGR1bXAvbmxzLm1rCiBDQVRBTE9HX05BTUUgICAgID0gcGdfd2Fs ZHVtcAogQVZBSUxfTEFOR1VBR0VTICA9IGRlIGVzIGZyIGphIGtvIHJ1IHN2IHRyIHZpCi1H RVRURVhUX0ZJTEVTICAgID0gcGdfd2FsZHVtcC5jCi1HRVRURVhUX1RSSUdHRVJTID0gZmF0 YWxfZXJyb3IKLUdFVFRFWFRfRkxBR1MgICAgPSBmYXRhbF9lcnJvcjoxOmMtZm9ybWF0CitH RVRURVhUX0ZJTEVTICAgID0gJChGUk9OVEVORF9DT01NT05fR0VUVEVYVF9GSUxFUykgcGdf d2FsZHVtcC5jCitHRVRURVhUX1RSSUdHRVJTID0gJChGUk9OVEVORF9DT01NT05fR0VUVEVY VF9UUklHR0VSUykgZmF0YWxfZXJyb3IKK0dFVFRFWFRfRkxBR1MgICAgPSAkKEZST05URU5E X0NPTU1PTl9HRVRURVhUX0ZMQUdTKSBmYXRhbF9lcnJvcjoxOmMtZm9ybWF0CmRpZmYgLS1n aXQgYS9zcmMvYmluL3BnX3dhbGR1bXAvcGdfd2FsZHVtcC5jIGIvc3JjL2Jpbi9wZ193YWxk dW1wL3BnX3dhbGR1bXAuYwppbmRleCBhZDI4MzMzYTFlLi5mZjFkMTJhMmE4IDEwMDY0NAot LS0gYS9zcmMvYmluL3BnX3dhbGR1bXAvcGdfd2FsZHVtcC5jCisrKyBiL3NyYy9iaW4vcGdf d2FsZHVtcC9wZ193YWxkdW1wLmMKQEAgLTIxLDYgKzIxLDcgQEAKICNpbmNsdWRlICJhY2Nl c3MveGxvZ19pbnRlcm5hbC5oIgogI2luY2x1ZGUgImFjY2Vzcy90cmFuc2FtLmgiCiAjaW5j bHVkZSAiY29tbW9uL2ZlX21lbXV0aWxzLmgiCisjaW5jbHVkZSAiZmVfdXRpbHMvbG9nZ2lu Zy5oIgogI2luY2x1ZGUgImdldG9wdF9sb25nLmgiCiAjaW5jbHVkZSAicm1ncmRlc2MuaCIK IApAQCAtNzAsMjYgKzcxLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgWExvZ0R1bXBTdGF0cwogCVN0 YXRzCQlyZWNvcmRfc3RhdHNbUk1fTkVYVF9JRF1bTUFYX1hMSU5GT19UWVBFU107CiB9IFhM b2dEdW1wU3RhdHM7CiAKLXN0YXRpYyB2b2lkIGZhdGFsX2Vycm9yKGNvbnN0IGNoYXIgKmZt dCwuLi4pIHBnX2F0dHJpYnV0ZV9wcmludGYoMSwgMik7Ci0KLS8qCi0gKiBCaWcgcmVkIGJ1 dHRvbiB0byBwdXNoIHdoZW4gdGhpbmdzIGdvIGhvcnJpYmx5IHdyb25nLgotICovCi1zdGF0 aWMgdm9pZAotZmF0YWxfZXJyb3IoY29uc3QgY2hhciAqZm10LC4uLikKLXsKLQl2YV9saXN0 CQlhcmdzOwotCi0JZmZsdXNoKHN0ZG91dCk7Ci0KLQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6 IEZBVEFMOiAgIiksIHByb2duYW1lKTsKLQl2YV9zdGFydChhcmdzLCBmbXQpOwotCXZmcHJp bnRmKHN0ZGVyciwgXyhmbXQpLCBhcmdzKTsKLQl2YV9lbmQoYXJncyk7Ci0JZnB1dGMoJ1xu Jywgc3RkZXJyKTsKLQotCWV4aXQoRVhJVF9GQUlMVVJFKTsKLX0KKyNkZWZpbmUgZmF0YWxf ZXJyb3IoLi4uKSBkbyB7IHBnX2xvZ19lcnJvcihfX1ZBX0FSR1NfXyk7IGV4aXQoRVhJVF9G QUlMVVJFKTsgfSB3aGlsZSgwKQogCiBzdGF0aWMgdm9pZAogcHJpbnRfcm1ncl9saXN0KHZv aWQpCkBAIC04NTksNiArODQxLDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJ aW50CQkJb3B0aW5kZXggPSAwOwogCiAJc2V0X3BnbG9jYWxlX3Bnc2VydmljZShhcmd2WzBd LCBQR19URVhURE9NQUlOKCJwZ193YWxkdW1wIikpOworCXBnX2xvZ2dpbmdfaW5pdChhcmd2 WzBdKTsKIAlwcm9nbmFtZSA9IGdldF9wcm9nbmFtZShhcmd2WzBdKTsKIAogCW1lbXNldCgm cHJpdmF0ZSwgMCwgc2l6ZW9mKFhMb2dEdW1wUHJpdmF0ZSkpOwpAQCAtODgyLDcgKzg2NSw3 IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCiAJaWYgKGFyZ2MgPD0gMSkKIAl7 Ci0JCWZwcmludGYoc3RkZXJyLCBfKCIlczogbm8gYXJndW1lbnRzIHNwZWNpZmllZFxuIiks IHByb2duYW1lKTsKKwkJcGdfbG9nX2Vycm9yKCJubyBhcmd1bWVudHMgc3BlY2lmaWVkIik7 CiAJCWdvdG8gYmFkX2FyZ3VtZW50OwogCX0KIApAQCAtODk3LDggKzg4MCw4IEBAIG1haW4o aW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCQkJY2FzZSAnZSc6CiAJCQkJaWYgKHNzY2FuZihv cHRhcmcsICIlWC8lWCIsICZ4bG9naWQsICZ4cmVjb2ZmKSAhPSAyKQogCQkJCXsKLQkJCQkJ ZnByaW50ZihzdGRlcnIsIF8oIiVzOiBjb3VsZCBub3QgcGFyc2UgZW5kIFdBTCBsb2NhdGlv biBcIiVzXCJcbiIpLAotCQkJCQkJCXByb2duYW1lLCBvcHRhcmcpOworCQkJCQlwZ19sb2df ZXJyb3IoImNvdWxkIG5vdCBwYXJzZSBlbmQgV0FMIGxvY2F0aW9uIFwiJXNcIiIsCisJCQkJ CQkJCSBvcHRhcmcpOwogCQkJCQlnb3RvIGJhZF9hcmd1bWVudDsKIAkJCQl9CiAJCQkJcHJp dmF0ZS5lbmRwdHIgPSAodWludDY0KSB4bG9naWQgPDwgMzIgfCB4cmVjb2ZmOwpAQCAtOTEz LDggKzg5Niw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCQkJY2FzZSAnbic6 CiAJCQkJaWYgKHNzY2FuZihvcHRhcmcsICIlZCIsICZjb25maWcuc3RvcF9hZnRlcl9yZWNv cmRzKSAhPSAxKQogCQkJCXsKLQkJCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBjb3VsZCBu b3QgcGFyc2UgbGltaXQgXCIlc1wiXG4iKSwKLQkJCQkJCQlwcm9nbmFtZSwgb3B0YXJnKTsK KwkJCQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgcGFyc2UgbGltaXQgXCIlc1wiIiwgb3B0 YXJnKTsKIAkJCQkJZ290byBiYWRfYXJndW1lbnQ7CiAJCQkJfQogCQkJCWJyZWFrOwpAQCAt OTQyLDggKzkyNCw4IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCiAJCQkJCWlm IChjb25maWcuZmlsdGVyX2J5X3JtZ3IgPT0gLTEpCiAJCQkJCXsKLQkJCQkJCWZwcmludGYo c3RkZXJyLCBfKCIlczogcmVzb3VyY2UgbWFuYWdlciBcIiVzXCIgZG9lcyBub3QgZXhpc3Rc biIpLAotCQkJCQkJCQlwcm9nbmFtZSwgb3B0YXJnKTsKKwkJCQkJCXBnX2xvZ19lcnJvcigi cmVzb3VyY2UgbWFuYWdlciBcIiVzXCIgZG9lcyBub3QgZXhpc3QiLAorCQkJCQkJCQkJIG9w dGFyZyk7CiAJCQkJCQlnb3RvIGJhZF9hcmd1bWVudDsKIAkJCQkJfQogCQkJCX0KQEAgLTk1 MSw4ICs5MzMsOCBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAkJCWNhc2UgJ3Mn OgogCQkJCWlmIChzc2NhbmYob3B0YXJnLCAiJVgvJVgiLCAmeGxvZ2lkLCAmeHJlY29mZikg IT0gMikKIAkJCQl7Ci0JCQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczogY291bGQgbm90IHBh cnNlIHN0YXJ0IFdBTCBsb2NhdGlvbiBcIiVzXCJcbiIpLAotCQkJCQkJCXByb2duYW1lLCBv cHRhcmcpOworCQkJCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBwYXJzZSBzdGFydCBXQUwg bG9jYXRpb24gXCIlc1wiIiwKKwkJCQkJCQkJIG9wdGFyZyk7CiAJCQkJCWdvdG8gYmFkX2Fy Z3VtZW50OwogCQkJCX0KIAkJCQllbHNlCkBAIC05NjEsOCArOTQzLDcgQEAgbWFpbihpbnQg YXJnYywgY2hhciAqKmFyZ3YpCiAJCQljYXNlICd0JzoKIAkJCQlpZiAoc3NjYW5mKG9wdGFy ZywgIiVkIiwgJnByaXZhdGUudGltZWxpbmUpICE9IDEpCiAJCQkJewotCQkJCQlmcHJpbnRm KHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCBwYXJzZSB0aW1lbGluZSBcIiVzXCJcbiIpLAot CQkJCQkJCXByb2duYW1lLCBvcHRhcmcpOworCQkJCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5v dCBwYXJzZSB0aW1lbGluZSBcIiVzXCIiLCBvcHRhcmcpOwogCQkJCQlnb3RvIGJhZF9hcmd1 bWVudDsKIAkJCQl9CiAJCQkJYnJlYWs7CkBAIC05NzMsOCArOTU0LDggQEAgbWFpbihpbnQg YXJnYywgY2hhciAqKmFyZ3YpCiAJCQljYXNlICd4JzoKIAkJCQlpZiAoc3NjYW5mKG9wdGFy ZywgIiV1IiwgJmNvbmZpZy5maWx0ZXJfYnlfeGlkKSAhPSAxKQogCQkJCXsKLQkJCQkJZnBy aW50ZihzdGRlcnIsIF8oIiVzOiBjb3VsZCBub3QgcGFyc2UgXCIlc1wiIGFzIGEgdHJhbnNh Y3Rpb24gSURcbiIpLAotCQkJCQkJCXByb2duYW1lLCBvcHRhcmcpOworCQkJCQlwZ19sb2df ZXJyb3IoImNvdWxkIG5vdCBwYXJzZSBcIiVzXCIgYXMgYSB0cmFuc2FjdGlvbiBJRCIsCisJ CQkJCQkJCSBvcHRhcmcpOwogCQkJCQlnb3RvIGJhZF9hcmd1bWVudDsKIAkJCQl9CiAJCQkJ Y29uZmlnLmZpbHRlcl9ieV94aWRfZW5hYmxlZCA9IHRydWU7CkBAIC05ODgsOCArOTY5LDgg QEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJCQkJCQljb25maWcuc3RhdHNfcGVy X3JlY29yZCA9IHRydWU7CiAJCQkJCWVsc2UgaWYgKHN0cmNtcChvcHRhcmcsICJybWdyIikg IT0gMCkKIAkJCQkJewotCQkJCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiB1bnJlY29nbml6 ZWQgYXJndW1lbnQgdG8gLS1zdGF0czogJXNcbiIpLAotCQkJCQkJCQlwcm9nbmFtZSwgb3B0 YXJnKTsKKwkJCQkJCXBnX2xvZ19lcnJvcigidW5yZWNvZ25pemVkIGFyZ3VtZW50IHRvIC0t c3RhdHM6ICVzIiwKKwkJCQkJCQkJCSBvcHRhcmcpOwogCQkJCQkJZ290byBiYWRfYXJndW1l bnQ7CiAJCQkJCX0KIAkJCQl9CkBAIC0xMDAxLDkgKzk4Miw4IEBAIG1haW4oaW50IGFyZ2Ms IGNoYXIgKiphcmd2KQogCiAJaWYgKChvcHRpbmQgKyAyKSA8IGFyZ2MpCiAJewotCQlmcHJp bnRmKHN0ZGVyciwKLQkJCQlfKCIlczogdG9vIG1hbnkgY29tbWFuZC1saW5lIGFyZ3VtZW50 cyAoZmlyc3QgaXMgXCIlc1wiKVxuIiksCi0JCQkJcHJvZ25hbWUsIGFyZ3Zbb3B0aW5kICsg Ml0pOworCQlwZ19sb2dfZXJyb3IoInRvbyBtYW55IGNvbW1hbmQtbGluZSBhcmd1bWVudHMg KGZpcnN0IGlzIFwiJXNcIikiLAorCQkJCQkgYXJndltvcHRpbmQgKyAyXSk7CiAJCWdvdG8g YmFkX2FyZ3VtZW50OwogCX0KIApAQCAtMTAxMiw5ICs5OTIsOCBAQCBtYWluKGludCBhcmdj LCBjaGFyICoqYXJndikKIAkJLyogdmFsaWRhdGUgcGF0aCBwb2ludHMgdG8gZGlyZWN0b3J5 ICovCiAJCWlmICghdmVyaWZ5X2RpcmVjdG9yeShwcml2YXRlLmlucGF0aCkpCiAJCXsKLQkJ CWZwcmludGYoc3RkZXJyLAotCQkJCQlfKCIlczogcGF0aCBcIiVzXCIgY291bGQgbm90IGJl IG9wZW5lZDogJXNcbiIpLAotCQkJCQlwcm9nbmFtZSwgcHJpdmF0ZS5pbnBhdGgsIHN0cmVy cm9yKGVycm5vKSk7CisJCQlwZ19sb2dfZXJyb3IoInBhdGggXCIlc1wiIGNvdWxkIG5vdCBi ZSBvcGVuZWQ6ICVzIiwKKwkJCQkJCSBwcml2YXRlLmlucGF0aCwgc3RyZXJyb3IoZXJybm8p KTsKIAkJCWdvdG8gYmFkX2FyZ3VtZW50OwogCQl9CiAJfQpAQCAtMTA1MSw5ICsxMDMwLDcg QEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJCQlYTG9nU2VnTm9PZmZzZXRUb1Jl Y1B0cihzZWdubywgMCwgV2FsU2VnU3osIHByaXZhdGUuc3RhcnRwdHIpOwogCQllbHNlIGlm ICghWExCeXRlSW5TZWcocHJpdmF0ZS5zdGFydHB0ciwgc2Vnbm8sIFdhbFNlZ1N6KSkKIAkJ ewotCQkJZnByaW50ZihzdGRlcnIsCi0JCQkJCV8oIiVzOiBzdGFydCBXQUwgbG9jYXRpb24g JVgvJVggaXMgbm90IGluc2lkZSBmaWxlIFwiJXNcIlxuIiksCi0JCQkJCXByb2duYW1lLAor CQkJcGdfbG9nX2Vycm9yKCJzdGFydCBXQUwgbG9jYXRpb24gJVgvJVggaXMgbm90IGluc2lk ZSBmaWxlIFwiJXNcIiIsCiAJCQkJCSh1aW50MzIpIChwcml2YXRlLnN0YXJ0cHRyID4+IDMy KSwKIAkJCQkJKHVpbnQzMikgcHJpdmF0ZS5zdGFydHB0ciwKIAkJCQkJZm5hbWUpOwpAQCAt MTA5Niw5ICsxMDczLDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJCWlmICgh WExCeXRlSW5TZWcocHJpdmF0ZS5lbmRwdHIsIHNlZ25vLCBXYWxTZWdTeikgJiYKIAkJCXBy aXZhdGUuZW5kcHRyICE9IChzZWdubyArIDEpICogV2FsU2VnU3opCiAJCXsKLQkJCWZwcmlu dGYoc3RkZXJyLAotCQkJCQlfKCIlczogZW5kIFdBTCBsb2NhdGlvbiAlWC8lWCBpcyBub3Qg aW5zaWRlIGZpbGUgXCIlc1wiXG4iKSwKLQkJCQkJcHJvZ25hbWUsCisJCQlwZ19sb2dfZXJy b3IoImVuZCBXQUwgbG9jYXRpb24gJVgvJVggaXMgbm90IGluc2lkZSBmaWxlIFwiJXNcIiIs CiAJCQkJCSh1aW50MzIpIChwcml2YXRlLmVuZHB0ciA+PiAzMiksCiAJCQkJCSh1aW50MzIp IHByaXZhdGUuZW5kcHRyLAogCQkJCQlhcmd2W2FyZ2MgLSAxXSk7CkBAIC0xMTExLDcgKzEw ODYsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAkvKiB3ZSBkb24ndCBrbm93 IHdoYXQgdG8gcHJpbnQgKi8KIAlpZiAoWExvZ1JlY1B0cklzSW52YWxpZChwcml2YXRlLnN0 YXJ0cHRyKSkKIAl7Ci0JCWZwcmludGYoc3RkZXJyLCBfKCIlczogbm8gc3RhcnQgV0FMIGxv Y2F0aW9uIGdpdmVuXG4iKSwgcHJvZ25hbWUpOworCQlwZ19sb2dfZXJyb3IoIm5vIHN0YXJ0 IFdBTCBsb2NhdGlvbiBnaXZlbiIpOwogCQlnb3RvIGJhZF9hcmd1bWVudDsKIAl9CiAKZGlm ZiAtLWdpdCBhL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMgYi9zcmMvYmluL3BnYmVuY2gv cGdiZW5jaC5jCmluZGV4IGM2NGUxNjE4N2EuLmVhMzM0ZDBkNDQgMTAwNjQ0Ci0tLSBhL3Ny Yy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMKKysrIGIvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2gu YwpAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgInBvc3RncmVzX2ZlLmgiCiAjaW5jbHVk ZSAiY29tbW9uL2ludC5oIgogI2luY2x1ZGUgImZlX3V0aWxzL2NvbmRpdGlvbmFsLmgiCisj aW5jbHVkZSAiZmVfdXRpbHMvbG9nZ2luZy5oIgogI2luY2x1ZGUgImdldG9wdF9sb25nLmgi CiAjaW5jbHVkZSAibGlicHEtZmUuaCIKICNpbmNsdWRlICJwb3J0YWJpbGl0eS9pbnN0cl90 aW1lLmgiCkBAIC01ODYsNyArNTg3LDYgQEAgc3RhdGljIHZvaWQgZG9Mb2coVFN0YXRlICp0 aHJlYWQsIENTdGF0ZSAqc3QsCiAJICBTdGF0c0RhdGEgKmFnZywgYm9vbCBza2lwcGVkLCBk b3VibGUgbGF0ZW5jeSwgZG91YmxlIGxhZyk7CiBzdGF0aWMgdm9pZCBwcm9jZXNzWGFjdFN0 YXRzKFRTdGF0ZSAqdGhyZWFkLCBDU3RhdGUgKnN0LCBpbnN0cl90aW1lICpub3csCiAJCQkJ IGJvb2wgc2tpcHBlZCwgU3RhdHNEYXRhICphZ2cpOwotc3RhdGljIHZvaWQgcGdiZW5jaF9l cnJvcihjb25zdCBjaGFyICpmbXQsLi4uKSBwZ19hdHRyaWJ1dGVfcHJpbnRmKDEsIDIpOwog c3RhdGljIHZvaWQgYWRkU2NyaXB0KFBhcnNlZFNjcmlwdCBzY3JpcHQpOwogc3RhdGljIHZv aWQgKnRocmVhZFJ1bih2b2lkICphcmcpOwogc3RhdGljIHZvaWQgZmluaXNoQ29uKENTdGF0 ZSAqc3QpOwpAQCAtNjAyLDcgKzYwMiw2IEBAIHN0YXRpYyBib29sIHNvY2tldF9oYXNfaW5w dXQoc29ja2V0X3NldCAqc2EsIGludCBmZCwgaW50IGlkeCk7CiAvKiBjYWxsYmFjayBmdW5j dGlvbnMgZm9yIG91ciBmbGV4IGxleGVyICovCiBzdGF0aWMgY29uc3QgUHNxbFNjYW5DYWxs YmFja3MgcGdiZW5jaF9jYWxsYmFja3MgPSB7CiAJTlVMTCwJCQkJCQkvKiBkb24ndCBuZWVk IGdldF92YXJpYWJsZSBmdW5jdGlvbmFsaXR5ICovCi0JcGdiZW5jaF9lcnJvcgogfTsKIAog CkBAIC00MDI2LDIwICs0MDI1LDYgQEAgcGFyc2VRdWVyeShDb21tYW5kICpjbWQpCiAJcmV0 dXJuIHRydWU7CiB9CiAKLS8qCi0gKiBTaW1wbGUgZXJyb3ItcHJpbnRpbmcgZnVuY3Rpb24s IG1pZ2h0IGJlIG5lZWRlZCBieSBsZXhlcgotICovCi1zdGF0aWMgdm9pZAotcGdiZW5jaF9l cnJvcihjb25zdCBjaGFyICpmbXQsLi4uKQotewotCXZhX2xpc3QJCWFwOwotCi0JZmZsdXNo KHN0ZG91dCk7Ci0JdmFfc3RhcnQoYXAsIGZtdCk7Ci0JdmZwcmludGYoc3RkZXJyLCBfKGZt dCksIGFwKTsKLQl2YV9lbmQoYXApOwotfQotCiAvKgogICogc3ludGF4IGVycm9yIHdoaWxl IHBhcnNpbmcgYSBzY3JpcHQgKGluIHByYWN0aWNlLCB3aGlsZSBwYXJzaW5nIGEKICAqIGJh Y2tzbGFzaCBjb21tYW5kLCBiZWNhdXNlIHdlIGRvbid0IGRldGVjdCBzeW50YXggZXJyb3Jz IGluIFNRTCkKQEAgLTQ5NTgsNiArNDk0Myw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiph cmd2KQogCWludAkJCWV4aXRfY29kZSA9IDA7CiAKIAlwcm9nbmFtZSA9IGdldF9wcm9nbmFt ZShhcmd2WzBdKTsKKwlwZ19sb2dnaW5nX2luaXQoYXJndlswXSk7CiAKIAlpZiAoYXJnYyA+ IDEpCiAJewpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL2NvbW1hbmQuYyBiL3NyYy9iaW4v cHNxbC9jb21tYW5kLmMKaW5kZXggMWNmOTc2ODY5Yy4uMDlhNWY3YjFhNyAxMDA2NDQKLS0t IGEvc3JjL2Jpbi9wc3FsL2NvbW1hbmQuYworKysgYi9zcmMvYmluL3BzcWwvY29tbWFuZC5j CkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJsaWJwcS1mZS5oIgogI2luY2x1ZGUg InBxZXhwYnVmZmVyLmgiCisjaW5jbHVkZSAiZmVfdXRpbHMvbG9nZ2luZy5oIgogI2luY2x1 ZGUgImZlX3V0aWxzL3N0cmluZ191dGlscy5oIgogCiAjaW5jbHVkZSAiY29tbW9uLmgiCkBA IC0yMTYsMTAgKzIxNyw5IEBAIEhhbmRsZVNsYXNoQ21kcyhQc3FsU2NhblN0YXRlIHNjYW5f c3RhdGUsCiAKIAlpZiAoc3RhdHVzID09IFBTUUxfQ01EX1VOS05PV04pCiAJeworCQlwZ19s b2dfZXJyb3IoImludmFsaWQgY29tbWFuZCBcXCVzIiwgY21kKTsKIAkJaWYgKHBzZXQuY3Vy X2NtZF9pbnRlcmFjdGl2ZSkKLQkJCXBzcWxfZXJyb3IoIkludmFsaWQgY29tbWFuZCBcXCVz LiBUcnkgXFw/IGZvciBoZWxwLlxuIiwgY21kKTsKLQkJZWxzZQotCQkJcHNxbF9lcnJvcigi aW52YWxpZCBjb21tYW5kIFxcJXNcbiIsIGNtZCk7CisJCQlwZ19sb2dfaW5mbygiVHJ5IFxc PyBmb3IgaGVscC4iKTsKIAkJc3RhdHVzID0gUFNRTF9DTURfRVJST1I7CiAJfQogCkBAIC0y MzcsNyArMjM3LDcgQEAgSGFuZGxlU2xhc2hDbWRzKFBzcWxTY2FuU3RhdGUgc2Nhbl9zdGF0 ZSwKIAkJCQkJCQkJCQkJIE9UX05PUk1BTCwgTlVMTCwgZmFsc2UpKSkKIAkJewogCQkJaWYg KGFjdGl2ZV9icmFuY2gpCi0JCQkJcHNxbF9lcnJvcigiXFwlczogZXh0cmEgYXJndW1lbnQg XCIlc1wiIGlnbm9yZWRcbiIsIGNtZCwgYXJnKTsKKwkJCQlwZ19sb2dfd2FybmluZygiXFwl czogZXh0cmEgYXJndW1lbnQgXCIlc1wiIGlnbm9yZWQiLCBjbWQsIGFyZyk7CiAJCQlmcmVl KGFyZyk7CiAJCX0KIAkJY29uZGl0aW9uYWxfc3RhY2tfcG9wKGNzdGFjayk7CkBAIC0yODks NyArMjg5LDcgQEAgZXhlY19jb21tYW5kKGNvbnN0IGNoYXIgKmNtZCwKIAlpZiAocHNldC5j dXJfY21kX2ludGVyYWN0aXZlICYmICFhY3RpdmVfYnJhbmNoICYmCiAJCSFpc19icmFuY2hp bmdfY29tbWFuZChjbWQpKQogCXsKLQkJcHNxbF9lcnJvcigiXFwlcyBjb21tYW5kIGlnbm9y ZWQ7IHVzZSBcXGVuZGlmIG9yIEN0cmwtQyB0byBleGl0IGN1cnJlbnQgXFxpZiBibG9ja1xu IiwKKwkJcGdfbG9nX3dhcm5pbmcoIlxcJXMgY29tbWFuZCBpZ25vcmVkOyB1c2UgXFxlbmRp ZiBvciBDdHJsLUMgdG8gZXhpdCBjdXJyZW50IFxcaWYgYmxvY2siLAogCQkJCSAgIGNtZCk7 CiAJfQogCkBAIC01NDksNyArNTQ5LDcgQEAgZXhlY19jb21tYW5kX2NkKFBzcWxTY2FuU3Rh dGUgc2Nhbl9zdGF0ZSwgYm9vbCBhY3RpdmVfYnJhbmNoLCBjb25zdCBjaGFyICpjbWQpCiAJ CQlwdyA9IGdldHB3dWlkKHVzZXJfaWQpOwogCQkJaWYgKCFwdykKIAkJCXsKLQkJCQlwc3Fs X2Vycm9yKCJjb3VsZCBub3QgZ2V0IGhvbWUgZGlyZWN0b3J5IGZvciB1c2VyIElEICVsZDog JXNcbiIsCisJCQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgZ2V0IGhvbWUgZGlyZWN0b3J5 IGZvciB1c2VyIElEICVsZDogJXMiLAogCQkJCQkJICAgKGxvbmcpIHVzZXJfaWQsCiAJCQkJ CQkgICBlcnJubyA/IHN0cmVycm9yKGVycm5vKSA6IF8oInVzZXIgZG9lcyBub3QgZXhpc3Qi KSk7CiAJCQkJZXhpdChFWElUX0ZBSUxVUkUpOwpAQCAtNTY3LDggKzU2Nyw4IEBAIGV4ZWNf Y29tbWFuZF9jZChQc3FsU2NhblN0YXRlIHNjYW5fc3RhdGUsIGJvb2wgYWN0aXZlX2JyYW5j aCwgY29uc3QgY2hhciAqY21kKQogCiAJCWlmIChjaGRpcihkaXIpID09IC0xKQogCQl7Ci0J CQlwc3FsX2Vycm9yKCJcXCVzOiBjb3VsZCBub3QgY2hhbmdlIGRpcmVjdG9yeSB0byBcIiVz XCI6ICVzXG4iLAotCQkJCQkgICBjbWQsIGRpciwgc3RyZXJyb3IoZXJybm8pKTsKKwkJCXBn X2xvZ19lcnJvcigiXFwlczogY291bGQgbm90IGNoYW5nZSBkaXJlY3RvcnkgdG8gXCIlc1wi OiAlbSIsCisJCQkJCQkgY21kLCBkaXIpOwogCQkJc3VjY2VzcyA9IGZhbHNlOwogCQl9CiAK QEAgLTkwOCw3ICs5MDgsNyBAQCBleGVjX2NvbW1hbmRfZWRpdChQc3FsU2NhblN0YXRlIHNj YW5fc3RhdGUsIGJvb2wgYWN0aXZlX2JyYW5jaCwKIAl7CiAJCWlmICghcXVlcnlfYnVmKQog CQl7Ci0JCQlwc3FsX2Vycm9yKCJubyBxdWVyeSBidWZmZXJcbiIpOworCQkJcGdfbG9nX2Vy cm9yKCJubyBxdWVyeSBidWZmZXIiKTsKIAkJCXN0YXR1cyA9IFBTUUxfQ01EX0VSUk9SOwog CQl9CiAJCWVsc2UKQEAgLTk0MSw3ICs5NDEsNyBAQCBleGVjX2NvbW1hbmRfZWRpdChQc3Fs U2NhblN0YXRlIHNjYW5fc3RhdGUsIGJvb2wgYWN0aXZlX2JyYW5jaCwKIAkJCQlsaW5lbm8g PSBhdG9pKGxuKTsKIAkJCQlpZiAobGluZW5vIDwgMSkKIAkJCQl7Ci0JCQkJCXBzcWxfZXJy b3IoImludmFsaWQgbGluZSBudW1iZXI6ICVzXG4iLCBsbik7CisJCQkJCXBnX2xvZ19lcnJv cigiaW52YWxpZCBsaW5lIG51bWJlcjogJXMiLCBsbik7CiAJCQkJCXN0YXR1cyA9IFBTUUxf Q01EX0VSUk9SOwogCQkJCX0KIAkJCX0KQEAgLTk5NSwxNiArOTk1LDE2IEBAIGV4ZWNfY29t bWFuZF9lZl9ldihQc3FsU2NhblN0YXRlIHNjYW5fc3RhdGUsIGJvb2wgYWN0aXZlX2JyYW5j aCwKIAkJCWZvcm1hdFBHVmVyc2lvbk51bWJlcihwc2V0LnN2ZXJzaW9uLCBmYWxzZSwKIAkJ CQkJCQkJICBzdmVyYnVmLCBzaXplb2Yoc3ZlcmJ1ZikpOwogCQkJaWYgKGlzX2Z1bmMpCi0J CQkJcHNxbF9lcnJvcigiVGhlIHNlcnZlciAodmVyc2lvbiAlcykgZG9lcyBub3Qgc3VwcG9y dCBlZGl0aW5nIGZ1bmN0aW9uIHNvdXJjZS5cbiIsCisJCQkJcGdfbG9nX2Vycm9yKCJUaGUg c2VydmVyICh2ZXJzaW9uICVzKSBkb2VzIG5vdCBzdXBwb3J0IGVkaXRpbmcgZnVuY3Rpb24g c291cmNlLiIsCiAJCQkJCQkgICBzdmVyYnVmKTsKIAkJCWVsc2UKLQkJCQlwc3FsX2Vycm9y KCJUaGUgc2VydmVyICh2ZXJzaW9uICVzKSBkb2VzIG5vdCBzdXBwb3J0IGVkaXRpbmcgdmll dyBkZWZpbml0aW9ucy5cbiIsCisJCQkJcGdfbG9nX2Vycm9yKCJUaGUgc2VydmVyICh2ZXJz aW9uICVzKSBkb2VzIG5vdCBzdXBwb3J0IGVkaXRpbmcgdmlldyBkZWZpbml0aW9ucy4iLAog CQkJCQkJICAgc3ZlcmJ1Zik7CiAJCQlzdGF0dXMgPSBQU1FMX0NNRF9FUlJPUjsKIAkJfQog CQllbHNlIGlmICghcXVlcnlfYnVmKQogCQl7Ci0JCQlwc3FsX2Vycm9yKCJubyBxdWVyeSBi dWZmZXJcbiIpOworCQkJcGdfbG9nX2Vycm9yKCJubyBxdWVyeSBidWZmZXIiKTsKIAkJCXN0 YXR1cyA9IFBTUUxfQ01EX0VSUk9SOwogCQl9CiAJCWVsc2UKQEAgLTExNTcsNyArMTE1Nyw3 IEBAIGV4ZWNfY29tbWFuZF9lbmNvZGluZyhQc3FsU2NhblN0YXRlIHNjYW5fc3RhdGUsIGJv b2wgYWN0aXZlX2JyYW5jaCkKIAkJewogCQkJLyogc2V0IGVuY29kaW5nICovCiAJCQlpZiAo UFFzZXRDbGllbnRFbmNvZGluZyhwc2V0LmRiLCBlbmNvZGluZykgPT0gLTEpCi0JCQkJcHNx bF9lcnJvcigiJXM6IGludmFsaWQgZW5jb2RpbmcgbmFtZSBvciBjb252ZXJzaW9uIHByb2Nl ZHVyZSBub3QgZm91bmRcbiIsIGVuY29kaW5nKTsKKwkJCQlwZ19sb2dfZXJyb3IoIiVzOiBp bnZhbGlkIGVuY29kaW5nIG5hbWUgb3IgY29udmVyc2lvbiBwcm9jZWR1cmUgbm90IGZvdW5k IiwgZW5jb2RpbmcpOwogCQkJZWxzZQogCQkJewogCQkJCS8qIHNhdmUgZW5jb2RpbmcgaW5m byBpbnRvIHBzcWwgaW50ZXJuYWwgZGF0YSAqLwpAQCAtMTE5Miw3ICsxMTkyLDcgQEAgZXhl Y19jb21tYW5kX2VycnZlcmJvc2UoUHNxbFNjYW5TdGF0ZSBzY2FuX3N0YXRlLCBib29sIGFj dGl2ZV9icmFuY2gpCiAJCQkJCQkJCQkJCSAgUFFTSE9XX0NPTlRFWFRfQUxXQVlTKTsKIAkJ CWlmIChtc2cpCiAJCQl7Ci0JCQkJcHNxbF9lcnJvcigiJXMiLCBtc2cpOworCQkJCXBnX2xv Z19lcnJvcigiJXMiLCBtc2cpOwogCQkJCVBRZnJlZW1lbShtc2cpOwogCQkJfQogCQkJZWxz ZQpAQCAtMTM4Nyw3ICsxMzg3LDcgQEAgZXhlY19jb21tYW5kX2luY2x1ZGUoUHNxbFNjYW5T dGF0ZSBzY2FuX3N0YXRlLCBib29sIGFjdGl2ZV9icmFuY2gsIGNvbnN0IGNoYXIgKmMKIAog CQlpZiAoIWZuYW1lKQogCQl7Ci0JCQlwc3FsX2Vycm9yKCJcXCVzOiBtaXNzaW5nIHJlcXVp cmVkIGFyZ3VtZW50XG4iLCBjbWQpOworCQkJcGdfbG9nX2Vycm9yKCJcXCVzOiBtaXNzaW5n IHJlcXVpcmVkIGFyZ3VtZW50IiwgY21kKTsKIAkJCXN1Y2Nlc3MgPSBmYWxzZTsKIAkJfQog CQllbHNlCkBAIC0xNTE4LDEyICsxNTE4LDEyIEBAIGV4ZWNfY29tbWFuZF9lbGlmKFBzcWxT Y2FuU3RhdGUgc2Nhbl9zdGF0ZSwgQ29uZGl0aW9uYWxTdGFjayBjc3RhY2ssCiAJCQlicmVh azsKIAkJY2FzZSBJRlNUQVRFX0VMU0VfVFJVRToKIAkJY2FzZSBJRlNUQVRFX0VMU0VfRkFM U0U6Ci0JCQlwc3FsX2Vycm9yKCJcXGVsaWY6IGNhbm5vdCBvY2N1ciBhZnRlciBcXGVsc2Vc biIpOworCQkJcGdfbG9nX2Vycm9yKCJcXGVsaWY6IGNhbm5vdCBvY2N1ciBhZnRlciBcXGVs c2UiKTsKIAkJCXN1Y2Nlc3MgPSBmYWxzZTsKIAkJCWJyZWFrOwogCQljYXNlIElGU1RBVEVf Tk9ORToKIAkJCS8qIG5vIFxpZiB0byBlbGlmIGZyb20gKi8KLQkJCXBzcWxfZXJyb3IoIlxc ZWxpZjogbm8gbWF0Y2hpbmcgXFxpZlxuIik7CisJCQlwZ19sb2dfZXJyb3IoIlxcZWxpZjog bm8gbWF0Y2hpbmcgXFxpZiIpOwogCQkJc3VjY2VzcyA9IGZhbHNlOwogCQkJYnJlYWs7CiAJ fQpAQCAtMTU4NywxMiArMTU4NywxMiBAQCBleGVjX2NvbW1hbmRfZWxzZShQc3FsU2NhblN0 YXRlIHNjYW5fc3RhdGUsIENvbmRpdGlvbmFsU3RhY2sgY3N0YWNrLAogCQkJYnJlYWs7CiAJ CWNhc2UgSUZTVEFURV9FTFNFX1RSVUU6CiAJCWNhc2UgSUZTVEFURV9FTFNFX0ZBTFNFOgot CQkJcHNxbF9lcnJvcigiXFxlbHNlOiBjYW5ub3Qgb2NjdXIgYWZ0ZXIgXFxlbHNlXG4iKTsK KwkJCXBnX2xvZ19lcnJvcigiXFxlbHNlOiBjYW5ub3Qgb2NjdXIgYWZ0ZXIgXFxlbHNlIik7 CiAJCQlzdWNjZXNzID0gZmFsc2U7CiAJCQlicmVhazsKIAkJY2FzZSBJRlNUQVRFX05PTkU6 CiAJCQkvKiBubyBcaWYgdG8gZWxzZSBmcm9tICovCi0JCQlwc3FsX2Vycm9yKCJcXGVsc2U6 IG5vIG1hdGNoaW5nIFxcaWZcbiIpOworCQkJcGdfbG9nX2Vycm9yKCJcXGVsc2U6IG5vIG1h dGNoaW5nIFxcaWYiKTsKIAkJCXN1Y2Nlc3MgPSBmYWxzZTsKIAkJCWJyZWFrOwogCX0KQEAg LTE2MzIsNyArMTYzMiw3IEBAIGV4ZWNfY29tbWFuZF9lbmRpZihQc3FsU2NhblN0YXRlIHNj YW5fc3RhdGUsIENvbmRpdGlvbmFsU3RhY2sgY3N0YWNrLAogCQkJYnJlYWs7CiAJCWNhc2Ug SUZTVEFURV9OT05FOgogCQkJLyogbm8gXGlmIHRvIGVuZCAqLwotCQkJcHNxbF9lcnJvcigi XFxlbmRpZjogbm8gbWF0Y2hpbmcgXFxpZlxuIik7CisJCQlwZ19sb2dfZXJyb3IoIlxcZW5k aWY6IG5vIG1hdGNoaW5nIFxcaWYiKTsKIAkJCXN1Y2Nlc3MgPSBmYWxzZTsKIAkJCWJyZWFr OwogCX0KQEAgLTE2OTIsNyArMTY5Miw3IEBAIGV4ZWNfY29tbWFuZF9sbyhQc3FsU2NhblN0 YXRlIHNjYW5fc3RhdGUsIGJvb2wgYWN0aXZlX2JyYW5jaCwgY29uc3QgY2hhciAqY21kKQog CQl7CiAJCQlpZiAoIW9wdDIpCiAJCQl7Ci0JCQkJcHNxbF9lcnJvcigiXFwlczogbWlzc2lu ZyByZXF1aXJlZCBhcmd1bWVudFxuIiwgY21kKTsKKwkJCQlwZ19sb2dfZXJyb3IoIlxcJXM6 IG1pc3NpbmcgcmVxdWlyZWQgYXJndW1lbnQiLCBjbWQpOwogCQkJCXN1Y2Nlc3MgPSBmYWxz ZTsKIAkJCX0KIAkJCWVsc2UKQEAgLTE3MDYsNyArMTcwNiw3IEBAIGV4ZWNfY29tbWFuZF9s byhQc3FsU2NhblN0YXRlIHNjYW5fc3RhdGUsIGJvb2wgYWN0aXZlX2JyYW5jaCwgY29uc3Qg Y2hhciAqY21kKQogCQl7CiAJCQlpZiAoIW9wdDEpCiAJCQl7Ci0JCQkJcHNxbF9lcnJvcigi XFwlczogbWlzc2luZyByZXF1aXJlZCBhcmd1bWVudFxuIiwgY21kKTsKKwkJCQlwZ19sb2df ZXJyb3IoIlxcJXM6IG1pc3NpbmcgcmVxdWlyZWQgYXJndW1lbnQiLCBjbWQpOwogCQkJCXN1 Y2Nlc3MgPSBmYWxzZTsKIAkJCX0KIAkJCWVsc2UKQEAgLTE3MjMsNyArMTcyMyw3IEBAIGV4 ZWNfY29tbWFuZF9sbyhQc3FsU2NhblN0YXRlIHNjYW5fc3RhdGUsIGJvb2wgYWN0aXZlX2Jy YW5jaCwgY29uc3QgY2hhciAqY21kKQogCQl7CiAJCQlpZiAoIW9wdDEpCiAJCQl7Ci0JCQkJ cHNxbF9lcnJvcigiXFwlczogbWlzc2luZyByZXF1aXJlZCBhcmd1bWVudFxuIiwgY21kKTsK KwkJCQlwZ19sb2dfZXJyb3IoIlxcJXM6IG1pc3NpbmcgcmVxdWlyZWQgYXJndW1lbnQiLCBj bWQpOwogCQkJCXN1Y2Nlc3MgPSBmYWxzZTsKIAkJCX0KIAkJCWVsc2UKQEAgLTE4MTQsNyAr MTgxNCw3IEBAIGV4ZWNfY29tbWFuZF9wYXNzd29yZChQc3FsU2NhblN0YXRlIHNjYW5fc3Rh dGUsIGJvb2wgYWN0aXZlX2JyYW5jaCkKIAogCQlpZiAoc3RyY21wKHB3MSwgcHcyKSAhPSAw KQogCQl7Ci0JCQlwc3FsX2Vycm9yKCJQYXNzd29yZHMgZGlkbid0IG1hdGNoLlxuIik7CisJ CQlwZ19sb2dfZXJyb3IoIlBhc3N3b3JkcyBkaWRuJ3QgbWF0Y2guIik7CiAJCQlzdWNjZXNz ID0gZmFsc2U7CiAJCX0KIAkJZWxzZQpAQCAtMTgzMSw3ICsxODMxLDcgQEAgZXhlY19jb21t YW5kX3Bhc3N3b3JkKFBzcWxTY2FuU3RhdGUgc2Nhbl9zdGF0ZSwgYm9vbCBhY3RpdmVfYnJh bmNoKQogCiAJCQlpZiAoIWVuY3J5cHRlZF9wYXNzd29yZCkKIAkJCXsKLQkJCQlwc3FsX2Vy cm9yKCIlcyIsIFBRZXJyb3JNZXNzYWdlKHBzZXQuZGIpKTsKKwkJCQlwZ19sb2dfZXJyb3Io IiVzIiwgUFFlcnJvck1lc3NhZ2UocHNldC5kYikpOwogCQkJCXN1Y2Nlc3MgPSBmYWxzZTsK IAkJCX0KIAkJCWVsc2UKQEAgLTE4ODMsNyArMTg4Myw3IEBAIGV4ZWNfY29tbWFuZF9wcm9t cHQoUHNxbFNjYW5TdGF0ZSBzY2FuX3N0YXRlLCBib29sIGFjdGl2ZV9icmFuY2gsCiAKIAkJ aWYgKCFhcmcxKQogCQl7Ci0JCQlwc3FsX2Vycm9yKCJcXCVzOiBtaXNzaW5nIHJlcXVpcmVk IGFyZ3VtZW50XG4iLCBjbWQpOworCQkJcGdfbG9nX2Vycm9yKCJcXCVzOiBtaXNzaW5nIHJl cXVpcmVkIGFyZ3VtZW50IiwgY21kKTsKIAkJCXN1Y2Nlc3MgPSBmYWxzZTsKIAkJfQogCQll bHNlCkBAIC0xOTEzLDcgKzE5MTMsNyBAQCBleGVjX2NvbW1hbmRfcHJvbXB0KFBzcWxTY2Fu U3RhdGUgc2Nhbl9zdGF0ZSwgYm9vbCBhY3RpdmVfYnJhbmNoLAogCQkJCXJlc3VsdCA9IGdl dHNfZnJvbUZpbGUoc3RkaW4pOwogCQkJCWlmICghcmVzdWx0KQogCQkJCXsKLQkJCQkJcHNx bF9lcnJvcigiXFwlczogY291bGQgbm90IHJlYWQgdmFsdWUgZm9yIHZhcmlhYmxlXG4iLAor CQkJCQlwZ19sb2dfZXJyb3IoIlxcJXM6IGNvdWxkIG5vdCByZWFkIHZhbHVlIGZvciB2YXJp YWJsZSIsCiAJCQkJCQkJICAgY21kKTsKIAkJCQkJc3VjY2VzcyA9IGZhbHNlOwogCQkJCX0K QEAgLTIxMjAsMTIgKzIxMjAsMTIgQEAgZXhlY19jb21tYW5kX3NldGVudihQc3FsU2NhblN0 YXRlIHNjYW5fc3RhdGUsIGJvb2wgYWN0aXZlX2JyYW5jaCwKIAogCQlpZiAoIWVudnZhcikK IAkJewotCQkJcHNxbF9lcnJvcigiXFwlczogbWlzc2luZyByZXF1aXJlZCBhcmd1bWVudFxu IiwgY21kKTsKKwkJCXBnX2xvZ19lcnJvcigiXFwlczogbWlzc2luZyByZXF1aXJlZCBhcmd1 bWVudCIsIGNtZCk7CiAJCQlzdWNjZXNzID0gZmFsc2U7CiAJCX0KIAkJZWxzZSBpZiAoc3Ry Y2hyKGVudnZhciwgJz0nKSAhPSBOVUxMKQogCQl7Ci0JCQlwc3FsX2Vycm9yKCJcXCVzOiBl bnZpcm9ubWVudCB2YXJpYWJsZSBuYW1lIG11c3Qgbm90IGNvbnRhaW4gXCI9XCJcbiIsCisJ CQlwZ19sb2dfZXJyb3IoIlxcJXM6IGVudmlyb25tZW50IHZhcmlhYmxlIG5hbWUgbXVzdCBu b3QgY29udGFpbiBcIj1cIiIsCiAJCQkJCSAgIGNtZCk7CiAJCQlzdWNjZXNzID0gZmFsc2U7 CiAJCX0KQEAgLTIxODYsMTkgKzIxODYsMTkgQEAgZXhlY19jb21tYW5kX3NmX3N2KFBzcWxT Y2FuU3RhdGUgc2Nhbl9zdGF0ZSwgYm9vbCBhY3RpdmVfYnJhbmNoLAogCQkJZm9ybWF0UEdW ZXJzaW9uTnVtYmVyKHBzZXQuc3ZlcnNpb24sIGZhbHNlLAogCQkJCQkJCQkgIHN2ZXJidWYs IHNpemVvZihzdmVyYnVmKSk7CiAJCQlpZiAoaXNfZnVuYykKLQkJCQlwc3FsX2Vycm9yKCJU aGUgc2VydmVyICh2ZXJzaW9uICVzKSBkb2VzIG5vdCBzdXBwb3J0IHNob3dpbmcgZnVuY3Rp b24gc291cmNlLlxuIiwKKwkJCQlwZ19sb2dfZXJyb3IoIlRoZSBzZXJ2ZXIgKHZlcnNpb24g JXMpIGRvZXMgbm90IHN1cHBvcnQgc2hvd2luZyBmdW5jdGlvbiBzb3VyY2UuIiwKIAkJCQkJ CSAgIHN2ZXJidWYpOwogCQkJZWxzZQotCQkJCXBzcWxfZXJyb3IoIlRoZSBzZXJ2ZXIgKHZl cnNpb24gJXMpIGRvZXMgbm90IHN1cHBvcnQgc2hvd2luZyB2aWV3IGRlZmluaXRpb25zLlxu IiwKKwkJCQlwZ19sb2dfZXJyb3IoIlRoZSBzZXJ2ZXIgKHZlcnNpb24gJXMpIGRvZXMgbm90 IHN1cHBvcnQgc2hvd2luZyB2aWV3IGRlZmluaXRpb25zLiIsCiAJCQkJCQkgICBzdmVyYnVm KTsKIAkJCXN0YXR1cyA9IFBTUUxfQ01EX0VSUk9SOwogCQl9CiAJCWVsc2UgaWYgKCFvYmpf ZGVzYykKIAkJewogCQkJaWYgKGlzX2Z1bmMpCi0JCQkJcHNxbF9lcnJvcigiZnVuY3Rpb24g bmFtZSBpcyByZXF1aXJlZFxuIik7CisJCQkJcGdfbG9nX2Vycm9yKCJmdW5jdGlvbiBuYW1l IGlzIHJlcXVpcmVkIik7CiAJCQllbHNlCi0JCQkJcHNxbF9lcnJvcigidmlldyBuYW1lIGlz IHJlcXVpcmVkXG4iKTsKKwkJCQlwZ19sb2dfZXJyb3IoInZpZXcgbmFtZSBpcyByZXF1aXJl ZCIpOwogCQkJc3RhdHVzID0gUFNRTF9DTURfRVJST1I7CiAJCX0KIAkJZWxzZSBpZiAoIWxv b2t1cF9vYmplY3Rfb2lkKGVvdCwgb2JqX2Rlc2MsICZvYmpfb2lkKSkKQEAgLTIzNTYsNyAr MjM1Niw3IEBAIGV4ZWNfY29tbWFuZF91bnNldChQc3FsU2NhblN0YXRlIHNjYW5fc3RhdGUs IGJvb2wgYWN0aXZlX2JyYW5jaCwKIAogCQlpZiAoIW9wdCkKIAkJewotCQkJcHNxbF9lcnJv cigiXFwlczogbWlzc2luZyByZXF1aXJlZCBhcmd1bWVudFxuIiwgY21kKTsKKwkJCXBnX2xv Z19lcnJvcigiXFwlczogbWlzc2luZyByZXF1aXJlZCBhcmd1bWVudCIsIGNtZCk7CiAJCQlz dWNjZXNzID0gZmFsc2U7CiAJCX0KIAkJZWxzZSBpZiAoIVNldFZhcmlhYmxlKHBzZXQudmFy cywgb3B0LCBOVUxMKSkKQEAgLTIzODksMTQgKzIzODksMTQgQEAgZXhlY19jb21tYW5kX3dy aXRlKFBzcWxTY2FuU3RhdGUgc2Nhbl9zdGF0ZSwgYm9vbCBhY3RpdmVfYnJhbmNoLAogCiAJ CWlmICghcXVlcnlfYnVmKQogCQl7Ci0JCQlwc3FsX2Vycm9yKCJubyBxdWVyeSBidWZmZXJc biIpOworCQkJcGdfbG9nX2Vycm9yKCJubyBxdWVyeSBidWZmZXIiKTsKIAkJCXN0YXR1cyA9 IFBTUUxfQ01EX0VSUk9SOwogCQl9CiAJCWVsc2UKIAkJewogCQkJaWYgKCFmbmFtZSkKIAkJ CXsKLQkJCQlwc3FsX2Vycm9yKCJcXCVzOiBtaXNzaW5nIHJlcXVpcmVkIGFyZ3VtZW50XG4i LCBjbWQpOworCQkJCXBnX2xvZ19lcnJvcigiXFwlczogbWlzc2luZyByZXF1aXJlZCBhcmd1 bWVudCIsIGNtZCk7CiAJCQkJc3RhdHVzID0gUFNRTF9DTURfRVJST1I7CiAJCQl9CiAJCQll bHNlCkBAIC0yNDE1LDcgKzI0MTUsNyBAQCBleGVjX2NvbW1hbmRfd3JpdGUoUHNxbFNjYW5T dGF0ZSBzY2FuX3N0YXRlLCBib29sIGFjdGl2ZV9icmFuY2gsCiAJCQkJfQogCQkJCWlmICgh ZmQpCiAJCQkJewotCQkJCQlwc3FsX2Vycm9yKCIlczogJXNcbiIsIGZuYW1lLCBzdHJlcnJv cihlcnJubykpOworCQkJCQlwZ19sb2dfZXJyb3IoIiVzOiAlbSIsIGZuYW1lKTsKIAkJCQkJ c3RhdHVzID0gUFNRTF9DTURfRVJST1I7CiAJCQkJfQogCQkJfQpAQCAtMjQ0Myw3ICsyNDQz LDcgQEAgZXhlY19jb21tYW5kX3dyaXRlKFBzcWxTY2FuU3RhdGUgc2Nhbl9zdGF0ZSwgYm9v bCBhY3RpdmVfYnJhbmNoLAogCiAJCQlpZiAocmVzdWx0ID09IEVPRikKIAkJCXsKLQkJCQlw c3FsX2Vycm9yKCIlczogJXNcbiIsIGZuYW1lLCBzdHJlcnJvcihlcnJubykpOworCQkJCXBn X2xvZ19lcnJvcigiJXM6ICVtIiwgZm5hbWUpOwogCQkJCXN0YXR1cyA9IFBTUUxfQ01EX0VS Uk9SOwogCQkJfQogCQl9CkBAIC0yODgzLDggKzI4ODMsOCBAQCBkb19jb25uZWN0KGVudW0g dHJpdmFsdWUgcmV1c2VfcHJldmlvdXNfc3BlY2lmaWNhdGlvbiwKIAkJICogY29ubmVjdCB0 byB0aGUgd3JvbmcgZGF0YWJhc2UgYnkgdXNpbmcgZGVmYXVsdHMsIHNvIHJlcXVpcmUgYWxs CiAJCSAqIHBhcmFtZXRlcnMgdG8gYmUgc3BlY2lmaWVkLgogCQkgKi8KLQkJcHNxbF9lcnJv cigiQWxsIGNvbm5lY3Rpb24gcGFyYW1ldGVycyBtdXN0IGJlIHN1cHBsaWVkIGJlY2F1c2Ug bm8gIgotCQkJCSAgICJkYXRhYmFzZSBjb25uZWN0aW9uIGV4aXN0c1xuIik7CisJCXBnX2xv Z19lcnJvcigiQWxsIGNvbm5lY3Rpb24gcGFyYW1ldGVycyBtdXN0IGJlIHN1cHBsaWVkIGJl Y2F1c2Ugbm8gIgorCQkJCQkgImRhdGFiYXNlIGNvbm5lY3Rpb24gZXhpc3RzIik7CiAJCXJl dHVybiBmYWxzZTsKIAl9CiAKQEAgLTMwNjcsMTUgKzMwNjcsMTUgQEAgZG9fY29ubmVjdChl bnVtIHRyaXZhbHVlIHJldXNlX3ByZXZpb3VzX3NwZWNpZmljYXRpb24sCiAJCSAqLwogCQlp ZiAocHNldC5jdXJfY21kX2ludGVyYWN0aXZlKQogCQl7Ci0JCQlwc3FsX2Vycm9yKCIlcyIs IFBRZXJyb3JNZXNzYWdlKG5fY29ubikpOworCQkJcGdfbG9nX2Vycm9yKCIlcyIsIFBRZXJy b3JNZXNzYWdlKG5fY29ubikpOwogCiAJCQkvKiBwc2V0LmRiIGlzIGxlZnQgdW5tb2RpZmll ZCAqLwogCQkJaWYgKG9fY29ubikKLQkJCQlwc3FsX2Vycm9yKCJQcmV2aW91cyBjb25uZWN0 aW9uIGtlcHRcbiIpOworCQkJCXBnX2xvZ19lcnJvcigiUHJldmlvdXMgY29ubmVjdGlvbiBr ZXB0Iik7CiAJCX0KIAkJZWxzZQogCQl7Ci0JCQlwc3FsX2Vycm9yKCJcXGNvbm5lY3Q6ICVz IiwgUFFlcnJvck1lc3NhZ2Uobl9jb25uKSk7CisJCQlwZ19sb2dfZXJyb3IoIlxcY29ubmVj dDogJXMiLCBQUWVycm9yTWVzc2FnZShuX2Nvbm4pKTsKIAkJCWlmIChvX2Nvbm4pCiAJCQl7 CiAJCQkJUFFmaW5pc2gob19jb25uKTsKQEAgLTMzMzcsNyArMzMzNyw3IEBAIGVkaXRGaWxl KGNvbnN0IGNoYXIgKmZuYW1lLCBpbnQgbGluZW5vKQogI2VuZGlmCiAJCWlmICghZWRpdG9y X2xpbmVub19hcmcpCiAJCXsKLQkJCXBzcWxfZXJyb3IoImVudmlyb25tZW50IHZhcmlhYmxl IFBTUUxfRURJVE9SX0xJTkVOVU1CRVJfQVJHIG11c3QgYmUgc2V0IHRvIHNwZWNpZnkgYSBs aW5lIG51bWJlclxuIik7CisJCQlwZ19sb2dfZXJyb3IoImVudmlyb25tZW50IHZhcmlhYmxl IFBTUUxfRURJVE9SX0xJTkVOVU1CRVJfQVJHIG11c3QgYmUgc2V0IHRvIHNwZWNpZnkgYSBs aW5lIG51bWJlciIpOwogCQkJcmV0dXJuIGZhbHNlOwogCQl9CiAJfQpAQCAtMzM2Niw5ICsz MzY2LDkgQEAgZWRpdEZpbGUoY29uc3QgY2hhciAqZm5hbWUsIGludCBsaW5lbm8pCiAjZW5k aWYKIAlyZXN1bHQgPSBzeXN0ZW0oc3lzKTsKIAlpZiAocmVzdWx0ID09IC0xKQotCQlwc3Fs X2Vycm9yKCJjb3VsZCBub3Qgc3RhcnQgZWRpdG9yIFwiJXNcIlxuIiwgZWRpdG9yTmFtZSk7 CisJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IHN0YXJ0IGVkaXRvciBcIiVzXCIiLCBlZGl0 b3JOYW1lKTsKIAllbHNlIGlmIChyZXN1bHQgPT0gMTI3KQotCQlwc3FsX2Vycm9yKCJjb3Vs ZCBub3Qgc3RhcnQgL2Jpbi9zaFxuIik7CisJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IHN0 YXJ0IC9iaW4vc2giKTsKIAlmcmVlKHN5cyk7CiAKIAlyZXR1cm4gcmVzdWx0ID09IDA7CkBA IC0zNDA2LDcgKzM0MDYsNyBAQCBkb19lZGl0KGNvbnN0IGNoYXIgKmZpbGVuYW1lX2FyZywg UFFFeHBCdWZmZXIgcXVlcnlfYnVmLAogCQlyZXQgPSBHZXRUZW1wUGF0aChNQVhQR1BBVEgs IHRtcGRpcik7CiAJCWlmIChyZXQgPT0gMCB8fCByZXQgPiBNQVhQR1BBVEgpCiAJCXsKLQkJ CXBzcWxfZXJyb3IoImNvdWxkIG5vdCBsb2NhdGUgdGVtcG9yYXJ5IGRpcmVjdG9yeTogJXNc biIsCisJCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBsb2NhdGUgdGVtcG9yYXJ5IGRpcmVj dG9yeTogJXMiLAogCQkJCQkgICAhcmV0ID8gc3RyZXJyb3IoZXJybm8pIDogIiIpOwogCQkJ cmV0dXJuIGZhbHNlOwogCQl9CkBAIC0zNDMzLDcgKzM0MzMsNyBAQCBkb19lZGl0KGNvbnN0 IGNoYXIgKmZpbGVuYW1lX2FyZywgUFFFeHBCdWZmZXIgcXVlcnlfYnVmLAogCiAJCWlmIChm ZCA9PSAtMSB8fCAhc3RyZWFtKQogCQl7Ci0JCQlwc3FsX2Vycm9yKCJjb3VsZCBub3Qgb3Bl biB0ZW1wb3JhcnkgZmlsZSBcIiVzXCI6ICVzXG4iLCBmbmFtZSwgc3RyZXJyb3IoZXJybm8p KTsKKwkJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IG9wZW4gdGVtcG9yYXJ5IGZpbGUgXCIl c1wiOiAlbSIsIGZuYW1lKTsKIAkJCWVycm9yID0gdHJ1ZTsKIAkJfQogCQllbHNlCkBAIC0z NDQ4LDIxICszNDQ4LDIxIEBAIGRvX2VkaXQoY29uc3QgY2hhciAqZmlsZW5hbWVfYXJnLCBQ UUV4cEJ1ZmZlciBxdWVyeV9idWYsCiAKIAkJCWlmIChmd3JpdGUocXVlcnlfYnVmLT5kYXRh LCAxLCBxbCwgc3RyZWFtKSAhPSBxbCkKIAkJCXsKLQkJCQlwc3FsX2Vycm9yKCIlczogJXNc biIsIGZuYW1lLCBzdHJlcnJvcihlcnJubykpOworCQkJCXBnX2xvZ19lcnJvcigiJXM6ICVt IiwgZm5hbWUpOwogCiAJCQkJaWYgKGZjbG9zZShzdHJlYW0pICE9IDApCi0JCQkJCXBzcWxf ZXJyb3IoIiVzOiAlc1xuIiwgZm5hbWUsIHN0cmVycm9yKGVycm5vKSk7CisJCQkJCXBnX2xv Z19lcnJvcigiJXM6ICVtIiwgZm5hbWUpOwogCiAJCQkJaWYgKHJlbW92ZShmbmFtZSkgIT0g MCkKLQkJCQkJcHNxbF9lcnJvcigiJXM6ICVzXG4iLCBmbmFtZSwgc3RyZXJyb3IoZXJybm8p KTsKKwkJCQkJcGdfbG9nX2Vycm9yKCIlczogJW0iLCBmbmFtZSk7CiAKIAkJCQllcnJvciA9 IHRydWU7CiAJCQl9CiAJCQllbHNlIGlmIChmY2xvc2Uoc3RyZWFtKSAhPSAwKQogCQkJewot CQkJCXBzcWxfZXJyb3IoIiVzOiAlc1xuIiwgZm5hbWUsIHN0cmVycm9yKGVycm5vKSk7CisJ CQkJcGdfbG9nX2Vycm9yKCIlczogJW0iLCBmbmFtZSk7CiAJCQkJaWYgKHJlbW92ZShmbmFt ZSkgIT0gMCkKLQkJCQkJcHNxbF9lcnJvcigiJXM6ICVzXG4iLCBmbmFtZSwgc3RyZXJyb3Io ZXJybm8pKTsKKwkJCQkJcGdfbG9nX2Vycm9yKCIlczogJW0iLCBmbmFtZSk7CiAJCQkJZXJy b3IgPSB0cnVlOwogCQkJfQogCQl9CkBAIC0zNDcwLDcgKzM0NzAsNyBAQCBkb19lZGl0KGNv bnN0IGNoYXIgKmZpbGVuYW1lX2FyZywgUFFFeHBCdWZmZXIgcXVlcnlfYnVmLAogCiAJaWYg KCFlcnJvciAmJiBzdGF0KGZuYW1lLCAmYmVmb3JlKSAhPSAwKQogCXsKLQkJcHNxbF9lcnJv cigiJXM6ICVzXG4iLCBmbmFtZSwgc3RyZXJyb3IoZXJybm8pKTsKKwkJcGdfbG9nX2Vycm9y KCIlczogJW0iLCBmbmFtZSk7CiAJCWVycm9yID0gdHJ1ZTsKIAl9CiAKQEAgLTM0ODAsNyAr MzQ4MCw3IEBAIGRvX2VkaXQoY29uc3QgY2hhciAqZmlsZW5hbWVfYXJnLCBQUUV4cEJ1ZmZl ciBxdWVyeV9idWYsCiAKIAlpZiAoIWVycm9yICYmIHN0YXQoZm5hbWUsICZhZnRlcikgIT0g MCkKIAl7Ci0JCXBzcWxfZXJyb3IoIiVzOiAlc1xuIiwgZm5hbWUsIHN0cmVycm9yKGVycm5v KSk7CisJCXBnX2xvZ19lcnJvcigiJXM6ICVtIiwgZm5hbWUpOwogCQllcnJvciA9IHRydWU7 CiAJfQogCkBAIC0zNDg5LDcgKzM0ODksNyBAQCBkb19lZGl0KGNvbnN0IGNoYXIgKmZpbGVu YW1lX2FyZywgUFFFeHBCdWZmZXIgcXVlcnlfYnVmLAogCQlzdHJlYW0gPSBmb3BlbihmbmFt ZSwgUEdfQklOQVJZX1IpOwogCQlpZiAoIXN0cmVhbSkKIAkJewotCQkJcHNxbF9lcnJvcigi JXM6ICVzXG4iLCBmbmFtZSwgc3RyZXJyb3IoZXJybm8pKTsKKwkJCXBnX2xvZ19lcnJvcigi JXM6ICVtIiwgZm5hbWUpOwogCQkJZXJyb3IgPSB0cnVlOwogCQl9CiAJCWVsc2UKQEAgLTM1 MDMsNyArMzUwMyw3IEBAIGRvX2VkaXQoY29uc3QgY2hhciAqZmlsZW5hbWVfYXJnLCBQUUV4 cEJ1ZmZlciBxdWVyeV9idWYsCiAKIAkJCWlmIChmZXJyb3Ioc3RyZWFtKSkKIAkJCXsKLQkJ CQlwc3FsX2Vycm9yKCIlczogJXNcbiIsIGZuYW1lLCBzdHJlcnJvcihlcnJubykpOworCQkJ CXBnX2xvZ19lcnJvcigiJXM6ICVtIiwgZm5hbWUpOwogCQkJCWVycm9yID0gdHJ1ZTsKIAkJ CX0KIAkJCWVsc2UgaWYgKGVkaXRlZCkKQEAgLTM1MjAsNyArMzUyMCw3IEBAIGRvX2VkaXQo Y29uc3QgY2hhciAqZmlsZW5hbWVfYXJnLCBQUUV4cEJ1ZmZlciBxdWVyeV9idWYsCiAJewog CQlpZiAocmVtb3ZlKGZuYW1lKSA9PSAtMSkKIAkJewotCQkJcHNxbF9lcnJvcigiJXM6ICVz XG4iLCBmbmFtZSwgc3RyZXJyb3IoZXJybm8pKTsKKwkJCXBnX2xvZ19lcnJvcigiJXM6ICVt IiwgZm5hbWUpOwogCQkJZXJyb3IgPSB0cnVlOwogCQl9CiAJfQpAQCAtMzU3OCw3ICszNTc4 LDcgQEAgcHJvY2Vzc19maWxlKGNoYXIgKmZpbGVuYW1lLCBib29sIHVzZV9yZWxhdGl2ZV9w YXRoKQogCiAJCWlmICghZmQpCiAJCXsKLQkJCXBzcWxfZXJyb3IoIiVzOiAlc1xuIiwgZmls ZW5hbWUsIHN0cmVycm9yKGVycm5vKSk7CisJCQlwZ19sb2dfZXJyb3IoIiVzOiAlbSIsIGZp bGVuYW1lKTsKIAkJCXJldHVybiBFWElUX0ZBSUxVUkU7CiAJCX0KIAl9CkBAIC0zNTkxLDEy ICszNTkxLDE3IEBAIHByb2Nlc3NfZmlsZShjaGFyICpmaWxlbmFtZSwgYm9vbCB1c2VfcmVs YXRpdmVfcGF0aCkKIAlvbGRmaWxlbmFtZSA9IHBzZXQuaW5wdXRmaWxlOwogCXBzZXQuaW5w dXRmaWxlID0gZmlsZW5hbWU7CiAKKwlwZ19sb2dnaW5nX2NvbmZpZyhwc2V0LmlucHV0Zmls ZSA/IDAgOiBQR19MT0dfRkxBR19URVJTRSk7CisKIAlyZXN1bHQgPSBNYWluTG9vcChmZCk7 CiAKIAlpZiAoZmQgIT0gc3RkaW4pCiAJCWZjbG9zZShmZCk7CiAKIAlwc2V0LmlucHV0Zmls ZSA9IG9sZGZpbGVuYW1lOworCisJcGdfbG9nZ2luZ19jb25maWcocHNldC5pbnB1dGZpbGUg PyAwIDogUEdfTE9HX0ZMQUdfVEVSU0UpOworCiAJcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAt MzcyMSw3ICszNzI2LDcgQEAgZG9fcHNldChjb25zdCBjaGFyICpwYXJhbSwgY29uc3QgY2hh ciAqdmFsdWUsIHByaW50UXVlcnlPcHQgKnBvcHQsIGJvb2wgcXVpZXQpCiAJCQkJCQltYXRj aF9wb3MgPSBpOwogCQkJCQllbHNlCiAJCQkJCXsKLQkJCQkJCXBzcWxfZXJyb3IoIlxccHNl dDogYW1iaWd1b3VzIGFiYnJldmlhdGlvbiBcIiVzXCIgbWF0Y2hlcyBib3RoIFwiJXNcIiBh bmQgXCIlc1wiXG4iLAorCQkJCQkJcGdfbG9nX2Vycm9yKCJcXHBzZXQ6IGFtYmlndW91cyBh YmJyZXZpYXRpb24gXCIlc1wiIG1hdGNoZXMgYm90aCBcIiVzXCIgYW5kIFwiJXNcIiIsCiAJ CQkJCQkJCSAgIHZhbHVlLAogCQkJCQkJCQkgICBmb3JtYXRzW21hdGNoX3Bvc10ubmFtZSwg Zm9ybWF0c1tpXS5uYW1lKTsKIAkJCQkJCXJldHVybiBmYWxzZTsKQEAgLTM3NDEsNyArMzc0 Niw3IEBAIGRvX3BzZXQoY29uc3QgY2hhciAqcGFyYW0sIGNvbnN0IGNoYXIgKnZhbHVlLCBw cmludFF1ZXJ5T3B0ICpwb3B0LCBib29sIHF1aWV0KQogCQkJfQogCQkJZWxzZQogCQkJewot CQkJCXBzcWxfZXJyb3IoIlxccHNldDogYWxsb3dlZCBmb3JtYXRzIGFyZSBhbGlnbmVkLCBh c2NpaWRvYywgY3N2LCBodG1sLCBsYXRleCwgbGF0ZXgtbG9uZ3RhYmxlLCB0cm9mZi1tcywg dW5hbGlnbmVkLCB3cmFwcGVkXG4iKTsKKwkJCQlwZ19sb2dfZXJyb3IoIlxccHNldDogYWxs b3dlZCBmb3JtYXRzIGFyZSBhbGlnbmVkLCBhc2NpaWRvYywgY3N2LCBodG1sLCBsYXRleCwg bGF0ZXgtbG9uZ3RhYmxlLCB0cm9mZi1tcywgdW5hbGlnbmVkLCB3cmFwcGVkIik7CiAJCQkJ cmV0dXJuIGZhbHNlOwogCQkJfQogCQl9CkBAIC0zNzYwLDcgKzM3NjUsNyBAQCBkb19wc2V0 KGNvbnN0IGNoYXIgKnBhcmFtLCBjb25zdCBjaGFyICp2YWx1ZSwgcHJpbnRRdWVyeU9wdCAq cG9wdCwgYm9vbCBxdWlldCkKIAkJCXBvcHQtPnRvcHQubGluZV9zdHlsZSA9ICZwZ191dGY4 Zm9ybWF0OwogCQllbHNlCiAJCXsKLQkJCXBzcWxfZXJyb3IoIlxccHNldDogYWxsb3dlZCBs aW5lIHN0eWxlcyBhcmUgYXNjaWksIG9sZC1hc2NpaSwgdW5pY29kZVxuIik7CisJCQlwZ19s b2dfZXJyb3IoIlxccHNldDogYWxsb3dlZCBsaW5lIHN0eWxlcyBhcmUgYXNjaWksIG9sZC1h c2NpaSwgdW5pY29kZSIpOwogCQkJcmV0dXJuIGZhbHNlOwogCQl9CiAJfQpAQCAtMzc3NSw3 ICszNzgwLDcgQEAgZG9fcHNldChjb25zdCBjaGFyICpwYXJhbSwgY29uc3QgY2hhciAqdmFs dWUsIHByaW50UXVlcnlPcHQgKnBvcHQsIGJvb2wgcXVpZXQpCiAJCQlyZWZyZXNoX3V0Zjhm b3JtYXQoJihwb3B0LT50b3B0KSk7CiAJCWVsc2UKIAkJewotCQkJcHNxbF9lcnJvcigiXFxw c2V0OiBhbGxvd2VkIFVuaWNvZGUgYm9yZGVyIGxpbmUgc3R5bGVzIGFyZSBzaW5nbGUsIGRv dWJsZVxuIik7CisJCQlwZ19sb2dfZXJyb3IoIlxccHNldDogYWxsb3dlZCBVbmljb2RlIGJv cmRlciBsaW5lIHN0eWxlcyBhcmUgc2luZ2xlLCBkb3VibGUiKTsKIAkJCXJldHVybiBmYWxz ZTsKIAkJfQogCX0KQEAgLTM3OTAsNyArMzc5NSw3IEBAIGRvX3BzZXQoY29uc3QgY2hhciAq cGFyYW0sIGNvbnN0IGNoYXIgKnZhbHVlLCBwcmludFF1ZXJ5T3B0ICpwb3B0LCBib29sIHF1 aWV0KQogCQkJcmVmcmVzaF91dGY4Zm9ybWF0KCYocG9wdC0+dG9wdCkpOwogCQllbHNlCiAJ CXsKLQkJCXBzcWxfZXJyb3IoIlxccHNldDogYWxsb3dlZCBVbmljb2RlIGNvbHVtbiBsaW5l IHN0eWxlcyBhcmUgc2luZ2xlLCBkb3VibGVcbiIpOworCQkJcGdfbG9nX2Vycm9yKCJcXHBz ZXQ6IGFsbG93ZWQgVW5pY29kZSBjb2x1bW4gbGluZSBzdHlsZXMgYXJlIHNpbmdsZSwgZG91 YmxlIik7CiAJCQlyZXR1cm4gZmFsc2U7CiAJCX0KIAl9CkBAIC0zODA1LDcgKzM4MTAsNyBA QCBkb19wc2V0KGNvbnN0IGNoYXIgKnBhcmFtLCBjb25zdCBjaGFyICp2YWx1ZSwgcHJpbnRR dWVyeU9wdCAqcG9wdCwgYm9vbCBxdWlldCkKIAkJCXJlZnJlc2hfdXRmOGZvcm1hdCgmKHBv cHQtPnRvcHQpKTsKIAkJZWxzZQogCQl7Ci0JCQlwc3FsX2Vycm9yKCJcXHBzZXQ6IGFsbG93 ZWQgVW5pY29kZSBoZWFkZXIgbGluZSBzdHlsZXMgYXJlIHNpbmdsZSwgZG91YmxlXG4iKTsK KwkJCXBnX2xvZ19lcnJvcigiXFxwc2V0OiBhbGxvd2VkIFVuaWNvZGUgaGVhZGVyIGxpbmUg c3R5bGVzIGFyZSBzaW5nbGUsIGRvdWJsZSIpOwogCQkJcmV0dXJuIGZhbHNlOwogCQl9CiAJ fQpAQCAtMzg0OCwxMiArMzg1MywxMiBAQCBkb19wc2V0KGNvbnN0IGNoYXIgKnBhcmFtLCBj b25zdCBjaGFyICp2YWx1ZSwgcHJpbnRRdWVyeU9wdCAqcG9wdCwgYm9vbCBxdWlldCkKIAkJ CS8qIENTViBzZXBhcmF0b3IgaGFzIHRvIGJlIGEgb25lLWJ5dGUgY2hhcmFjdGVyICovCiAJ CQlpZiAoc3RybGVuKHZhbHVlKSAhPSAxKQogCQkJewotCQkJCXBzcWxfZXJyb3IoIlxccHNl dDogY3N2X2ZpZWxkc2VwIG11c3QgYmUgYSBzaW5nbGUgb25lLWJ5dGUgY2hhcmFjdGVyXG4i KTsKKwkJCQlwZ19sb2dfZXJyb3IoIlxccHNldDogY3N2X2ZpZWxkc2VwIG11c3QgYmUgYSBz aW5nbGUgb25lLWJ5dGUgY2hhcmFjdGVyIik7CiAJCQkJcmV0dXJuIGZhbHNlOwogCQkJfQog CQkJaWYgKHZhbHVlWzBdID09ICciJyB8fCB2YWx1ZVswXSA9PSAnXG4nIHx8IHZhbHVlWzBd ID09ICdccicpCiAJCQl7Ci0JCQkJcHNxbF9lcnJvcigiXFxwc2V0OiBjc3ZfZmllbGRzZXAg Y2Fubm90IGJlIGEgZG91YmxlIHF1b3RlLCBhIG5ld2xpbmUsIG9yIGEgY2FycmlhZ2UgcmV0 dXJuXG4iKTsKKwkJCQlwZ19sb2dfZXJyb3IoIlxccHNldDogY3N2X2ZpZWxkc2VwIGNhbm5v dCBiZSBhIGRvdWJsZSBxdW90ZSwgYSBuZXdsaW5lLCBvciBhIGNhcnJpYWdlIHJldHVybiIp OwogCQkJCXJldHVybiBmYWxzZTsKIAkJCX0KIAkJCXBvcHQtPnRvcHQuY3N2RmllbGRTZXBb MF0gPSB2YWx1ZVswXTsKQEAgLTM5OTAsNyArMzk5NSw3IEBAIGRvX3BzZXQoY29uc3QgY2hh ciAqcGFyYW0sIGNvbnN0IGNoYXIgKnZhbHVlLCBwcmludFF1ZXJ5T3B0ICpwb3B0LCBib29s IHF1aWV0KQogCX0KIAllbHNlCiAJewotCQlwc3FsX2Vycm9yKCJcXHBzZXQ6IHVua25vd24g b3B0aW9uOiAlc1xuIiwgcGFyYW0pOworCQlwZ19sb2dfZXJyb3IoIlxccHNldDogdW5rbm93 biBvcHRpb246ICVzIiwgcGFyYW0pOwogCQlyZXR1cm4gZmFsc2U7CiAJfQogCkBAIC00MTc2 LDcgKzQxODEsNyBAQCBwcmludFBzZXRJbmZvKGNvbnN0IGNoYXIgKnBhcmFtLCBzdHJ1Y3Qg cHJpbnRRdWVyeU9wdCAqcG9wdCkKIAogCWVsc2UKIAl7Ci0JCXBzcWxfZXJyb3IoIlxccHNl dDogdW5rbm93biBvcHRpb246ICVzXG4iLCBwYXJhbSk7CisJCXBnX2xvZ19lcnJvcigiXFxw c2V0OiB1bmtub3duIG9wdGlvbjogJXMiLCBwYXJhbSk7CiAJCXJldHVybiBmYWxzZTsKIAl9 CiAKQEAgLTQzMzIsNyArNDMzNyw3IEBAIGRvX3NoZWxsKGNvbnN0IGNoYXIgKmNvbW1hbmQp CiAKIAlpZiAocmVzdWx0ID09IDEyNyB8fCByZXN1bHQgPT0gLTEpCiAJewotCQlwc3FsX2Vy cm9yKCJcXCE6IGZhaWxlZFxuIik7CisJCXBnX2xvZ19lcnJvcigiXFwhOiBmYWlsZWQiKTsK IAkJcmV0dXJuIGZhbHNlOwogCX0KIAlyZXR1cm4gdHJ1ZTsKQEAgLTQzNTcsNyArNDM2Miw3 IEBAIGRvX3dhdGNoKFBRRXhwQnVmZmVyIHF1ZXJ5X2J1ZiwgZG91YmxlIHNsZWVwKQogCiAJ aWYgKCFxdWVyeV9idWYgfHwgcXVlcnlfYnVmLT5sZW4gPD0gMCkKIAl7Ci0JCXBzcWxfZXJy b3IoIlxcd2F0Y2ggY2Fubm90IGJlIHVzZWQgd2l0aCBhbiBlbXB0eSBxdWVyeVxuIik7CisJ CXBnX2xvZ19lcnJvcigiXFx3YXRjaCBjYW5ub3QgYmUgdXNlZCB3aXRoIGFuIGVtcHR5IHF1 ZXJ5Iik7CiAJCXJldHVybiBmYWxzZTsKIAl9CiAKQEAgLTQ2NTQsNyArNDY1OSw3IEBAIGdl dF9jcmVhdGVfb2JqZWN0X2NtZChFZGl0YWJsZU9iamVjdFR5cGUgb2JqX3R5cGUsIE9pZCBv aWQsCiAJCQkJCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoYnVmLCAiQ1JFQVRFIE9SIFJFUExB Q0UgVklFVyAiKTsKIAkJCQkJCQlicmVhazsKIAkJCQkJCWRlZmF1bHQ6Ci0JCQkJCQkJcHNx bF9lcnJvcigiXCIlcy4lc1wiIGlzIG5vdCBhIHZpZXdcbiIsCisJCQkJCQkJcGdfbG9nX2Vy cm9yKCJcIiVzLiVzXCIgaXMgbm90IGEgdmlldyIsCiAJCQkJCQkJCQkgICBuc3BuYW1lLCBy ZWxuYW1lKTsKIAkJCQkJCQlyZXN1bHQgPSBmYWxzZTsKIAkJCQkJCQlicmVhazsKQEAgLTQ2 NzAsNyArNDY3NSw3IEBAIGdldF9jcmVhdGVfb2JqZWN0X2NtZChFZGl0YWJsZU9iamVjdFR5 cGUgb2JqX3R5cGUsIE9pZCBvaWQsCiAJCQkJCQkJCQkJCQkgICBwc2V0LmVuY29kaW5nLAog CQkJCQkJCQkJCQkJICAgc3RhbmRhcmRfc3RyaW5ncygpKSkKIAkJCQkJCXsKLQkJCQkJCQlw c3FsX2Vycm9yKCJjb3VsZCBub3QgcGFyc2UgcmVsb3B0aW9ucyBhcnJheVxuIik7CisJCQkJ CQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgcGFyc2UgcmVsb3B0aW9ucyBhcnJheSIpOwog CQkJCQkJCXJlc3VsdCA9IGZhbHNlOwogCQkJCQkJfQogCQkJCQkJYXBwZW5kUFFFeHBCdWZm ZXJDaGFyKGJ1ZiwgJyknKTsKQEAgLTQ3NTksNyArNDc2NCw3IEBAIHN0cmlwX2xpbmVub19m cm9tX29iamRlc2MoY2hhciAqb2JqKQogCWxpbmVubyA9IGF0b2koYyk7CiAJaWYgKGxpbmVu byA8IDEpCiAJewotCQlwc3FsX2Vycm9yKCJpbnZhbGlkIGxpbmUgbnVtYmVyOiAlc1xuIiwg Yyk7CisJCXBnX2xvZ19lcnJvcigiaW52YWxpZCBsaW5lIG51bWJlcjogJXMiLCBjKTsKIAkJ cmV0dXJuIDA7CiAJfQogCkBAIC00ODYxLDcgKzQ4NjYsNyBAQCBtaW5pbWFsX2Vycm9yX21l c3NhZ2UoUEdyZXN1bHQgKnJlcykKIAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIobXNnLCAiKG5v dCBhdmFpbGFibGUpIik7CiAJYXBwZW5kUFFFeHBCdWZmZXJDaGFyKG1zZywgJ1xuJyk7CiAK LQlwc3FsX2Vycm9yKCIlcyIsIG1zZy0+ZGF0YSk7CisJcGdfbG9nX2Vycm9yKCIlcyIsIG1z Zy0+ZGF0YSk7CiAKIAlkZXN0cm95UFFFeHBCdWZmZXIobXNnKTsKIH0KZGlmZiAtLWdpdCBh L3NyYy9iaW4vcHNxbC9jb21tb24uYyBiL3NyYy9iaW4vcHNxbC9jb21tb24uYwppbmRleCA4 YWYxNmE1ZmI0Li43ZjljN2I5NDlkIDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwvY29tbW9u LmMKKysrIGIvc3JjL2Jpbi9wc3FsL2NvbW1vbi5jCkBAIC0xOSw2ICsxOSw3IEBACiAjaW5j bHVkZSA8d2luMzIuaD4KICNlbmRpZgogCisjaW5jbHVkZSAiZmVfdXRpbHMvbG9nZ2luZy5o IgogI2luY2x1ZGUgImZlX3V0aWxzL3N0cmluZ191dGlscy5oIgogI2luY2x1ZGUgInBvcnRh YmlsaXR5L2luc3RyX3RpbWUuaCIKIApAQCAtNjcsNyArNjgsNyBAQCBvcGVuUXVlcnlPdXRw dXRGaWxlKGNvbnN0IGNoYXIgKmZuYW1lLCBGSUxFICoqZm91dCwgYm9vbCAqaXNfcGlwZSkK IAogCWlmICgqZm91dCA9PSBOVUxMKQogCXsKLQkJcHNxbF9lcnJvcigiJXM6ICVzXG4iLCBm bmFtZSwgc3RyZXJyb3IoZXJybm8pKTsKKwkJcGdfbG9nX2Vycm9yKCIlczogJW0iLCBmbmFt ZSk7CiAJCXJldHVybiBmYWxzZTsKIAl9CiAKQEAgLTE1Niw3ICsxNTcsNyBAQCBwc3FsX2dl dF92YXJpYWJsZShjb25zdCBjaGFyICp2YXJuYW1lLCBQc3FsU2NhblF1b3RlVHlwZSBxdW90 ZSwKIAogCQkJCWlmICghcHNldC5kYikKIAkJCQl7Ci0JCQkJCXBzcWxfZXJyb3IoImNhbm5v dCBlc2NhcGUgd2l0aG91dCBhY3RpdmUgY29ubmVjdGlvblxuIik7CisJCQkJCXBnX2xvZ19l cnJvcigiY2Fubm90IGVzY2FwZSB3aXRob3V0IGFjdGl2ZSBjb25uZWN0aW9uIik7CiAJCQkJ CXJldHVybiBOVUxMOwogCQkJCX0KIApAQCAtMTcxLDcgKzE3Miw3IEBAIHBzcWxfZ2V0X3Zh cmlhYmxlKGNvbnN0IGNoYXIgKnZhcm5hbWUsIFBzcWxTY2FuUXVvdGVUeXBlIHF1b3RlLAog CQkJCXsKIAkJCQkJY29uc3QgY2hhciAqZXJyb3IgPSBQUWVycm9yTWVzc2FnZShwc2V0LmRi KTsKIAotCQkJCQlwc3FsX2Vycm9yKCIlcyIsIGVycm9yKTsKKwkJCQkJcGdfbG9nX2Vycm9y KCIlcyIsIGVycm9yKTsKIAkJCQkJcmV0dXJuIE5VTEw7CiAJCQkJfQogCkBAIC0xOTcsNyAr MTk4LDcgQEAgcHNxbF9nZXRfdmFyaWFibGUoY29uc3QgY2hhciAqdmFybmFtZSwgUHNxbFNj YW5RdW90ZVR5cGUgcXVvdGUsCiAJCQkJaW5pdFBRRXhwQnVmZmVyKCZidWYpOwogCQkJCWlm ICghYXBwZW5kU2hlbGxTdHJpbmdOb0Vycm9yKCZidWYsIHZhbHVlKSkKIAkJCQl7Ci0JCQkJ CXBzcWxfZXJyb3IoInNoZWxsIGNvbW1hbmQgYXJndW1lbnQgY29udGFpbnMgYSBuZXdsaW5l IG9yIGNhcnJpYWdlIHJldHVybjogXCIlc1wiXG4iLAorCQkJCQlwZ19sb2dfZXJyb3IoInNo ZWxsIGNvbW1hbmQgYXJndW1lbnQgY29udGFpbnMgYSBuZXdsaW5lIG9yIGNhcnJpYWdlIHJl dHVybjogXCIlc1wiIiwKIAkJCQkJCQkgICB2YWx1ZSk7CiAJCQkJCWZyZWUoYnVmLmRhdGEp OwogCQkJCQlyZXR1cm4gTlVMTDsKQEAgLTIxMywyOCArMjE0LDYgQEAgcHNxbF9nZXRfdmFy aWFibGUoY29uc3QgY2hhciAqdmFybmFtZSwgUHNxbFNjYW5RdW90ZVR5cGUgcXVvdGUsCiB9 CiAKIAotLyoKLSAqIEVycm9yIHJlcG9ydGluZyBmb3Igc2NyaXB0cy4gRXJyb3JzIHNob3Vs ZCBsb29rIGxpa2UKLSAqCSBwc3FsOmZpbGVuYW1lOmxpbmVubzogbWVzc2FnZQotICovCi12 b2lkCi1wc3FsX2Vycm9yKGNvbnN0IGNoYXIgKmZtdCwuLi4pCi17Ci0JdmFfbGlzdAkJYXA7 Ci0KLQlmZmx1c2goc3Rkb3V0KTsKLQlpZiAocHNldC5xdWVyeUZvdXQgJiYgcHNldC5xdWVy eUZvdXQgIT0gc3Rkb3V0KQotCQlmZmx1c2gocHNldC5xdWVyeUZvdXQpOwotCi0JaWYgKHBz ZXQuaW5wdXRmaWxlKQotCQlmcHJpbnRmKHN0ZGVyciwgIiVzOiVzOiIgVUlOVDY0X0ZPUk1B VCAiOiAiLCBwc2V0LnByb2duYW1lLCBwc2V0LmlucHV0ZmlsZSwgcHNldC5saW5lbm8pOwot CXZhX3N0YXJ0KGFwLCBmbXQpOwotCXZmcHJpbnRmKHN0ZGVyciwgXyhmbXQpLCBhcCk7Ci0J dmFfZW5kKGFwKTsKLX0KLQotCi0KIC8qCiAgKiBmb3IgYmFja2VuZCBOb3RpY2UgbWVzc2Fn ZXMgKElORk8sIFdBUk5JTkcsIGV0YykKICAqLwpAQCAtMjQyLDcgKzIyMSw3IEBAIHZvaWQK IE5vdGljZVByb2Nlc3Nvcih2b2lkICphcmcsIGNvbnN0IGNoYXIgKm1lc3NhZ2UpCiB7CiAJ KHZvaWQpIGFyZzsJCQkJCS8qIG5vdCB1c2VkICovCi0JcHNxbF9lcnJvcigiJXMiLCBtZXNz YWdlKTsKKwlwZ19sb2dfaW5mbygiJXMiLCBtZXNzYWdlKTsKIH0KIAogCkBAIC00MTMsMjMg KzM5MiwyMyBAQCBDaGVja0Nvbm5lY3Rpb24odm9pZCkKIAl7CiAJCWlmICghcHNldC5jdXJf Y21kX2ludGVyYWN0aXZlKQogCQl7Ci0JCQlwc3FsX2Vycm9yKCJjb25uZWN0aW9uIHRvIHNl cnZlciB3YXMgbG9zdFxuIik7CisJCQlwZ19sb2dfZmF0YWwoImNvbm5lY3Rpb24gdG8gc2Vy dmVyIHdhcyBsb3N0Iik7CiAJCQlleGl0KEVYSVRfQkFEQ09OTik7CiAJCX0KIAotCQlwc3Fs X2Vycm9yKCJUaGUgY29ubmVjdGlvbiB0byB0aGUgc2VydmVyIHdhcyBsb3N0LiBBdHRlbXB0 aW5nIHJlc2V0OiAiKTsKKwkJZnByaW50ZihzdGRlcnIsIF8oIlRoZSBjb25uZWN0aW9uIHRv IHRoZSBzZXJ2ZXIgd2FzIGxvc3QuIEF0dGVtcHRpbmcgcmVzZXQ6ICIpKTsKIAkJUFFyZXNl dChwc2V0LmRiKTsKIAkJT0sgPSBDb25uZWN0aW9uVXAoKTsKIAkJaWYgKCFPSykKIAkJewot CQkJcHNxbF9lcnJvcigiRmFpbGVkLlxuIik7CisJCQlmcHJpbnRmKHN0ZGVyciwgXygiRmFp bGVkLlxuIikpOwogCQkJUFFmaW5pc2gocHNldC5kYik7CiAJCQlwc2V0LmRiID0gTlVMTDsK IAkJCVJlc2V0Q2FuY2VsQ29ubigpOwogCQkJVW5zeW5jVmFyaWFibGVzKCk7CiAJCX0KIAkJ ZWxzZQotCQkJcHNxbF9lcnJvcigiU3VjY2VlZGVkLlxuIik7CisJCQlmcHJpbnRmKHN0ZGVy ciwgXygiU3VjY2VlZGVkLlxuIikpOwogCX0KIAogCXJldHVybiBPSzsKQEAgLTUyOSw3ICs1 MDgsNyBAQCBBY2NlcHRSZXN1bHQoY29uc3QgUEdyZXN1bHQgKnJlc3VsdCkKIAogCQkJZGVm YXVsdDoKIAkJCQlPSyA9IGZhbHNlOwotCQkJCXBzcWxfZXJyb3IoInVuZXhwZWN0ZWQgUFFy ZXN1bHRTdGF0dXM6ICVkXG4iLAorCQkJCXBnX2xvZ19lcnJvcigidW5leHBlY3RlZCBQUXJl c3VsdFN0YXR1czogJWQiLAogCQkJCQkJICAgUFFyZXN1bHRTdGF0dXMocmVzdWx0KSk7CiAJ CQkJYnJlYWs7CiAJCX0KQEAgLTUzOSw3ICs1MTgsNyBAQCBBY2NlcHRSZXN1bHQoY29uc3Qg UEdyZXN1bHQgKnJlc3VsdCkKIAkJY29uc3QgY2hhciAqZXJyb3IgPSBQUWVycm9yTWVzc2Fn ZShwc2V0LmRiKTsKIAogCQlpZiAoc3RybGVuKGVycm9yKSkKLQkJCXBzcWxfZXJyb3IoIiVz IiwgZXJyb3IpOworCQkJcGdfbG9nX2Vycm9yKCIlcyIsIGVycm9yKTsKIAogCQlDaGVja0Nv bm5lY3Rpb24oKTsKIAl9CkBAIC02OTMsNyArNjcyLDcgQEAgUFNRTGV4ZWMoY29uc3QgY2hh ciAqcXVlcnkpCiAKIAlpZiAoIXBzZXQuZGIpCiAJewotCQlwc3FsX2Vycm9yKCJZb3UgYXJl IGN1cnJlbnRseSBub3QgY29ubmVjdGVkIHRvIGEgZGF0YWJhc2UuXG4iKTsKKwkJcGdfbG9n X2Vycm9yKCJZb3UgYXJlIGN1cnJlbnRseSBub3QgY29ubmVjdGVkIHRvIGEgZGF0YWJhc2Uu Iik7CiAJCXJldHVybiBOVUxMOwogCX0KIApAQCAtNzUxLDcgKzczMCw3IEBAIFBTUUxleGVj V2F0Y2goY29uc3QgY2hhciAqcXVlcnksIGNvbnN0IHByaW50UXVlcnlPcHQgKm9wdCkKIAog CWlmICghcHNldC5kYikKIAl7Ci0JCXBzcWxfZXJyb3IoIllvdSBhcmUgY3VycmVudGx5IG5v dCBjb25uZWN0ZWQgdG8gYSBkYXRhYmFzZS5cbiIpOworCQlwZ19sb2dfZXJyb3IoIllvdSBh cmUgY3VycmVudGx5IG5vdCBjb25uZWN0ZWQgdG8gYSBkYXRhYmFzZS4iKTsKIAkJcmV0dXJu IDA7CiAJfQogCkBAIC03OTksMTkgKzc3OCwxOSBAQCBQU1FMZXhlY1dhdGNoKGNvbnN0IGNo YXIgKnF1ZXJ5LCBjb25zdCBwcmludFF1ZXJ5T3B0ICpvcHQpCiAJCQlicmVhazsKIAogCQlj YXNlIFBHUkVTX0VNUFRZX1FVRVJZOgotCQkJcHNxbF9lcnJvcigiXFx3YXRjaCBjYW5ub3Qg YmUgdXNlZCB3aXRoIGFuIGVtcHR5IHF1ZXJ5XG4iKTsKKwkJCXBnX2xvZ19lcnJvcigiXFx3 YXRjaCBjYW5ub3QgYmUgdXNlZCB3aXRoIGFuIGVtcHR5IHF1ZXJ5Iik7CiAJCQlQUWNsZWFy KHJlcyk7CiAJCQlyZXR1cm4gLTE7CiAKIAkJY2FzZSBQR1JFU19DT1BZX09VVDoKIAkJY2Fz ZSBQR1JFU19DT1BZX0lOOgogCQljYXNlIFBHUkVTX0NPUFlfQk9USDoKLQkJCXBzcWxfZXJy b3IoIlxcd2F0Y2ggY2Fubm90IGJlIHVzZWQgd2l0aCBDT1BZXG4iKTsKKwkJCXBnX2xvZ19l cnJvcigiXFx3YXRjaCBjYW5ub3QgYmUgdXNlZCB3aXRoIENPUFkiKTsKIAkJCVBRY2xlYXIo cmVzKTsKIAkJCXJldHVybiAtMTsKIAogCQlkZWZhdWx0OgotCQkJcHNxbF9lcnJvcigidW5l eHBlY3RlZCByZXN1bHQgc3RhdHVzIGZvciBcXHdhdGNoXG4iKTsKKwkJCXBnX2xvZ19lcnJv cigidW5leHBlY3RlZCByZXN1bHQgc3RhdHVzIGZvciBcXHdhdGNoIik7CiAJCQlQUWNsZWFy KHJlcyk7CiAJCQlyZXR1cm4gLTE7CiAJfQpAQCAtOTA3LDEyICs4ODYsMTIgQEAgU3RvcmVR dWVyeVR1cGxlKGNvbnN0IFBHcmVzdWx0ICpyZXN1bHQpCiAKIAlpZiAoUFFudHVwbGVzKHJl c3VsdCkgPCAxKQogCXsKLQkJcHNxbF9lcnJvcigibm8gcm93cyByZXR1cm5lZCBmb3IgXFxn c2V0XG4iKTsKKwkJcGdfbG9nX2Vycm9yKCJubyByb3dzIHJldHVybmVkIGZvciBcXGdzZXQi KTsKIAkJc3VjY2VzcyA9IGZhbHNlOwogCX0KIAllbHNlIGlmIChQUW50dXBsZXMocmVzdWx0 KSA+IDEpCiAJewotCQlwc3FsX2Vycm9yKCJtb3JlIHRoYW4gb25lIHJvdyByZXR1cm5lZCBm b3IgXFxnc2V0XG4iKTsKKwkJcGdfbG9nX2Vycm9yKCJtb3JlIHRoYW4gb25lIHJvdyByZXR1 cm5lZCBmb3IgXFxnc2V0Iik7CiAJCXN1Y2Nlc3MgPSBmYWxzZTsKIAl9CiAJZWxzZQpAQCAt MTA4MSw3ICsxMDYwLDcgQEAgUHJvY2Vzc1Jlc3VsdChQR3Jlc3VsdCAqKnJlc3VsdHMpCiAJ CQlkZWZhdWx0OgogCQkJCS8qIEFjY2VwdFJlc3VsdCgpIHNob3VsZCBoYXZlIGNhdWdodCBh bnl0aGluZyBlbHNlLiAqLwogCQkJCWlzX2NvcHkgPSBmYWxzZTsKLQkJCQlwc3FsX2Vycm9y KCJ1bmV4cGVjdGVkIFBRcmVzdWx0U3RhdHVzOiAlZFxuIiwgcmVzdWx0X3N0YXR1cyk7CisJ CQkJcGdfbG9nX2Vycm9yKCJ1bmV4cGVjdGVkIFBRcmVzdWx0U3RhdHVzOiAlZCIsIHJlc3Vs dF9zdGF0dXMpOwogCQkJCWJyZWFrOwogCQl9CiAKQEAgLTEyNTUsNyArMTIzNCw3IEBAIFBy aW50UXVlcnlSZXN1bHRzKFBHcmVzdWx0ICpyZXN1bHRzKQogCiAJCWRlZmF1bHQ6CiAJCQlz dWNjZXNzID0gZmFsc2U7Ci0JCQlwc3FsX2Vycm9yKCJ1bmV4cGVjdGVkIFBRcmVzdWx0U3Rh dHVzOiAlZFxuIiwKKwkJCXBnX2xvZ19lcnJvcigidW5leHBlY3RlZCBQUXJlc3VsdFN0YXR1 czogJWQiLAogCQkJCQkgICBQUXJlc3VsdFN0YXR1cyhyZXN1bHRzKSk7CiAJCQlicmVhazsK IAl9CkBAIC0xMjkxLDcgKzEyNzAsNyBAQCBTZW5kUXVlcnkoY29uc3QgY2hhciAqcXVlcnkp CiAKIAlpZiAoIXBzZXQuZGIpCiAJewotCQlwc3FsX2Vycm9yKCJZb3UgYXJlIGN1cnJlbnRs eSBub3QgY29ubmVjdGVkIHRvIGEgZGF0YWJhc2UuXG4iKTsKKwkJcGdfbG9nX2Vycm9yKCJZ b3UgYXJlIGN1cnJlbnRseSBub3QgY29ubmVjdGVkIHRvIGEgZGF0YWJhc2UuIik7CiAJCWdv dG8gc2VuZHF1ZXJ5X2NsZWFudXA7CiAJfQogCkBAIC0xMzM3LDcgKzEzMTYsNyBAQCBTZW5k UXVlcnkoY29uc3QgY2hhciAqcXVlcnkpCiAJCXJlc3VsdHMgPSBQUWV4ZWMocHNldC5kYiwg IkJFR0lOIik7CiAJCWlmIChQUXJlc3VsdFN0YXR1cyhyZXN1bHRzKSAhPSBQR1JFU19DT01N QU5EX09LKQogCQl7Ci0JCQlwc3FsX2Vycm9yKCIlcyIsIFBRZXJyb3JNZXNzYWdlKHBzZXQu ZGIpKTsKKwkJCXBnX2xvZ19lcnJvcigiJXMiLCBQUWVycm9yTWVzc2FnZShwc2V0LmRiKSk7 CiAJCQlDbGVhck9yU2F2ZVJlc3VsdChyZXN1bHRzKTsKIAkJCVJlc2V0Q2FuY2VsQ29ubigp OwogCQkJZ290byBzZW5kcXVlcnlfY2xlYW51cDsKQEAgLTEzNTUsNyArMTMzNCw3IEBAIFNl bmRRdWVyeShjb25zdCBjaGFyICpxdWVyeSkKIAkJewogCQkJY2hhcgkJc3ZlcmJ1ZlszMl07 CiAKLQkJCXBzcWxfZXJyb3IoIlRoZSBzZXJ2ZXIgKHZlcnNpb24gJXMpIGRvZXMgbm90IHN1 cHBvcnQgc2F2ZXBvaW50cyBmb3IgT05fRVJST1JfUk9MTEJBQ0suXG4iLAorCQkJcGdfbG9n X3dhcm5pbmcoIlRoZSBzZXJ2ZXIgKHZlcnNpb24gJXMpIGRvZXMgbm90IHN1cHBvcnQgc2F2 ZXBvaW50cyBmb3IgT05fRVJST1JfUk9MTEJBQ0suIiwKIAkJCQkJICAgZm9ybWF0UEdWZXJz aW9uTnVtYmVyKHBzZXQuc3ZlcnNpb24sIGZhbHNlLAogCQkJCQkJCQkJCQkgc3ZlcmJ1Ziwg c2l6ZW9mKHN2ZXJidWYpKSk7CiAJCQlvbl9lcnJvcl9yb2xsYmFja193YXJuaW5nID0gdHJ1 ZTsKQEAgLTEzNjUsNyArMTM0NCw3IEBAIFNlbmRRdWVyeShjb25zdCBjaGFyICpxdWVyeSkK IAkJCXJlc3VsdHMgPSBQUWV4ZWMocHNldC5kYiwgIlNBVkVQT0lOVCBwZ19wc3FsX3RlbXBv cmFyeV9zYXZlcG9pbnQiKTsKIAkJCWlmIChQUXJlc3VsdFN0YXR1cyhyZXN1bHRzKSAhPSBQ R1JFU19DT01NQU5EX09LKQogCQkJewotCQkJCXBzcWxfZXJyb3IoIiVzIiwgUFFlcnJvck1l c3NhZ2UocHNldC5kYikpOworCQkJCXBnX2xvZ19lcnJvcigiJXMiLCBQUWVycm9yTWVzc2Fn ZShwc2V0LmRiKSk7CiAJCQkJQ2xlYXJPclNhdmVSZXN1bHQocmVzdWx0cyk7CiAJCQkJUmVz ZXRDYW5jZWxDb25uKCk7CiAJCQkJZ290byBzZW5kcXVlcnlfY2xlYW51cDsKQEAgLTE0MTgs NyArMTM5Nyw3IEBAIFNlbmRRdWVyeShjb25zdCBjaGFyICpxdWVyeSkKIAl9CiAKIAlpZiAo IU9LICYmIHBzZXQuZWNobyA9PSBQU1FMX0VDSE9fRVJST1JTKQotCQlwc3FsX2Vycm9yKCJT VEFURU1FTlQ6ICAlc1xuIiwgcXVlcnkpOworCQlwZ19sb2dfaW5mbygiU1RBVEVNRU5UOiAg JXMiLCBxdWVyeSk7CiAKIAkvKiBJZiB3ZSBtYWRlIGEgdGVtcG9yYXJ5IHNhdmVwb2ludCwg cG9zc2libHkgcmVsZWFzZS9yb2xsYmFjayAqLwogCWlmIChvbl9lcnJvcl9yb2xsYmFja19z YXZlcG9pbnQpCkBAIC0xNDYxLDcgKzE0NDAsNyBAQCBTZW5kUXVlcnkoY29uc3QgY2hhciAq cXVlcnkpCiAJCQkJT0sgPSBmYWxzZTsKIAkJCQkvKiBQUVRSQU5TX1VOS05PV04gaXMgZXhw ZWN0ZWQgZ2l2ZW4gYSBicm9rZW4gY29ubmVjdGlvbi4gKi8KIAkJCQlpZiAodHJhbnNhY3Rp b25fc3RhdHVzICE9IFBRVFJBTlNfVU5LTk9XTiB8fCBDb25uZWN0aW9uVXAoKSkKLQkJCQkJ cHNxbF9lcnJvcigidW5leHBlY3RlZCB0cmFuc2FjdGlvbiBzdGF0dXMgKCVkKVxuIiwKKwkJ CQkJcGdfbG9nX2Vycm9yKCJ1bmV4cGVjdGVkIHRyYW5zYWN0aW9uIHN0YXR1cyAoJWQpIiwK IAkJCQkJCQkgICB0cmFuc2FjdGlvbl9zdGF0dXMpOwogCQkJCWJyZWFrOwogCQl9CkBAIC0x NDczLDcgKzE0NTIsNyBAQCBTZW5kUXVlcnkoY29uc3QgY2hhciAqcXVlcnkpCiAJCQlzdnB0 cmVzID0gUFFleGVjKHBzZXQuZGIsIHN2cHRjbWQpOwogCQkJaWYgKFBRcmVzdWx0U3RhdHVz KHN2cHRyZXMpICE9IFBHUkVTX0NPTU1BTkRfT0spCiAJCQl7Ci0JCQkJcHNxbF9lcnJvcigi JXMiLCBQUWVycm9yTWVzc2FnZShwc2V0LmRiKSk7CisJCQkJcGdfbG9nX2Vycm9yKCIlcyIs IFBRZXJyb3JNZXNzYWdlKHBzZXQuZGIpKTsKIAkJCQlDbGVhck9yU2F2ZVJlc3VsdChzdnB0 cmVzKTsKIAkJCQlPSyA9IGZhbHNlOwogCkBAIC0xNTc2LDcgKzE1NTUsNyBAQCBEZXNjcmli ZVF1ZXJ5KGNvbnN0IGNoYXIgKnF1ZXJ5LCBkb3VibGUgKmVsYXBzZWRfbXNlYykKIAlyZXN1 bHRzID0gUFFwcmVwYXJlKHBzZXQuZGIsICIiLCBxdWVyeSwgMCwgTlVMTCk7CiAJaWYgKFBR cmVzdWx0U3RhdHVzKHJlc3VsdHMpICE9IFBHUkVTX0NPTU1BTkRfT0spCiAJewotCQlwc3Fs X2Vycm9yKCIlcyIsIFBRZXJyb3JNZXNzYWdlKHBzZXQuZGIpKTsKKwkJcGdfbG9nX2Vycm9y KCIlcyIsIFBRZXJyb3JNZXNzYWdlKHBzZXQuZGIpKTsKIAkJU2V0UmVzdWx0VmFyaWFibGVz KHJlc3VsdHMsIGZhbHNlKTsKIAkJQ2xlYXJPclNhdmVSZXN1bHQocmVzdWx0cyk7CiAJCXJl dHVybiBmYWxzZTsKQEAgLTE2MTQsNyArMTU5Myw3IEBAIERlc2NyaWJlUXVlcnkoY29uc3Qg Y2hhciAqcXVlcnksIGRvdWJsZSAqZWxhcHNlZF9tc2VjKQogCiAJCQkJaWYgKGVzY25hbWUg PT0gTlVMTCkKIAkJCQl7Ci0JCQkJCXBzcWxfZXJyb3IoIiVzIiwgUFFlcnJvck1lc3NhZ2Uo cHNldC5kYikpOworCQkJCQlwZ19sb2dfZXJyb3IoIiVzIiwgUFFlcnJvck1lc3NhZ2UocHNl dC5kYikpOwogCQkJCQlQUWNsZWFyKHJlc3VsdHMpOwogCQkJCQl0ZXJtUFFFeHBCdWZmZXIo JmJ1Zik7CiAJCQkJCXJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC9j b21tb24uaCBiL3NyYy9iaW4vcHNxbC9jb21tb24uaAppbmRleCA0MzE0MmE3YWE2Li5jNmU0 MjM1YmEwIDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwvY29tbW9uLmgKKysrIGIvc3JjL2Jp bi9wc3FsL2NvbW1vbi5oCkBAIC0yMCw4ICsyMCw2IEBAIGV4dGVybiBib29sIHNldFFGb3V0 KGNvbnN0IGNoYXIgKmZuYW1lKTsKIGV4dGVybiBjaGFyICpwc3FsX2dldF92YXJpYWJsZShj b25zdCBjaGFyICp2YXJuYW1lLCBQc3FsU2NhblF1b3RlVHlwZSBxdW90ZSwKIAkJCQkgIHZv aWQgKnBhc3N0aHJvdWdoKTsKIAotZXh0ZXJuIHZvaWQgcHNxbF9lcnJvcihjb25zdCBjaGFy ICpmbXQsLi4uKSBwZ19hdHRyaWJ1dGVfcHJpbnRmKDEsIDIpOwotCiBleHRlcm4gdm9pZCBO b3RpY2VQcm9jZXNzb3Iodm9pZCAqYXJnLCBjb25zdCBjaGFyICptZXNzYWdlKTsKIAogZXh0 ZXJuIHZvbGF0aWxlIGJvb2wgc2lnaW50X2ludGVycnVwdF9lbmFibGVkOwpkaWZmIC0tZ2l0 IGEvc3JjL2Jpbi9wc3FsL2NvcHkuYyBiL3NyYy9iaW4vcHNxbC9jb3B5LmMKaW5kZXggNTU1 YzYzMzFhMy4uMjJlMjg3MzU3ZCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL2NvcHkuYwor KysgYi9zcmMvYmluL3BzcWwvY29weS5jCkBAIC0yNCw2ICsyNCw3IEBACiAjaW5jbHVkZSAi cHJvbXB0LmgiCiAjaW5jbHVkZSAic3RyaW5ndXRpbHMuaCIKIAorI2luY2x1ZGUgImZlX3V0 aWxzL2xvZ2dpbmcuaCIKIAogLyoKICAqIHBhcnNlX3NsYXNoX2NvcHkKQEAgLTk2LDcgKzk3 LDcgQEAgcGFyc2Vfc2xhc2hfY29weShjb25zdCBjaGFyICphcmdzKQogCiAJaWYgKCFhcmdz KQogCXsKLQkJcHNxbF9lcnJvcigiXFxjb3B5OiBhcmd1bWVudHMgcmVxdWlyZWRcbiIpOwor CQlwZ19sb2dfZXJyb3IoIlxcY29weTogYXJndW1lbnRzIHJlcXVpcmVkIik7CiAJCXJldHVy biBOVUxMOwogCX0KIApAQCAtMjUxLDkgKzI1Miw5IEBAIHBhcnNlX3NsYXNoX2NvcHkoY29u c3QgY2hhciAqYXJncykKIAogZXJyb3I6CiAJaWYgKHRva2VuKQotCQlwc3FsX2Vycm9yKCJc XGNvcHk6IHBhcnNlIGVycm9yIGF0IFwiJXNcIlxuIiwgdG9rZW4pOworCQlwZ19sb2dfZXJy b3IoIlxcY29weTogcGFyc2UgZXJyb3IgYXQgXCIlc1wiIiwgdG9rZW4pOwogCWVsc2UKLQkJ cHNxbF9lcnJvcigiXFxjb3B5OiBwYXJzZSBlcnJvciBhdCBlbmQgb2YgbGluZVxuIik7CisJ CXBnX2xvZ19lcnJvcigiXFxjb3B5OiBwYXJzZSBlcnJvciBhdCBlbmQgb2YgbGluZSIpOwog CWZyZWVfY29weV9vcHRpb25zKHJlc3VsdCk7CiAKIAlyZXR1cm4gTlVMTDsKQEAgLTMyNiwx MSArMzI3LDExIEBAIGRvX2NvcHkoY29uc3QgY2hhciAqYXJncykKIAlpZiAoIWNvcHlzdHJl YW0pCiAJewogCQlpZiAob3B0aW9ucy0+cHJvZ3JhbSkKLQkJCXBzcWxfZXJyb3IoImNvdWxk IG5vdCBleGVjdXRlIGNvbW1hbmQgXCIlc1wiOiAlc1xuIiwKLQkJCQkJICAgb3B0aW9ucy0+ ZmlsZSwgc3RyZXJyb3IoZXJybm8pKTsKKwkJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IGV4 ZWN1dGUgY29tbWFuZCBcIiVzXCI6ICVtIiwKKwkJCQkJCSBvcHRpb25zLT5maWxlKTsKIAkJ ZWxzZQotCQkJcHNxbF9lcnJvcigiJXM6ICVzXG4iLAotCQkJCQkgICBvcHRpb25zLT5maWxl LCBzdHJlcnJvcihlcnJubykpOworCQkJcGdfbG9nX2Vycm9yKCIlczogJW0iLAorCQkJCQkJ IG9wdGlvbnMtPmZpbGUpOwogCQlmcmVlX2NvcHlfb3B0aW9ucyhvcHRpb25zKTsKIAkJcmV0 dXJuIGZhbHNlOwogCX0KQEAgLTM0MiwxMiArMzQzLDEyIEBAIGRvX2NvcHkoY29uc3QgY2hh ciAqYXJncykKIAogCQkvKiBtYWtlIHN1cmUgdGhlIHNwZWNpZmllZCBmaWxlIGlzIG5vdCBh IGRpcmVjdG9yeSAqLwogCQlpZiAoKHJlc3VsdCA9IGZzdGF0KGZpbGVubyhjb3B5c3RyZWFt KSwgJnN0KSkgPCAwKQotCQkJcHNxbF9lcnJvcigiY291bGQgbm90IHN0YXQgZmlsZSBcIiVz XCI6ICVzXG4iLAotCQkJCQkgICBvcHRpb25zLT5maWxlLCBzdHJlcnJvcihlcnJubykpOwor CQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3Qgc3RhdCBmaWxlIFwiJXNcIjogJW0iLAorCQkJ CQkJIG9wdGlvbnMtPmZpbGUpOwogCiAJCWlmIChyZXN1bHQgPT0gMCAmJiBTX0lTRElSKHN0 LnN0X21vZGUpKQotCQkJcHNxbF9lcnJvcigiJXM6IGNhbm5vdCBjb3B5IGZyb20vdG8gYSBk aXJlY3RvcnlcbiIsCi0JCQkJCSAgIG9wdGlvbnMtPmZpbGUpOworCQkJcGdfbG9nX2Vycm9y KCIlczogY2Fubm90IGNvcHkgZnJvbS90byBhIGRpcmVjdG9yeSIsCisJCQkJCQkgb3B0aW9u cy0+ZmlsZSk7CiAKIAkJaWYgKHJlc3VsdCA8IDAgfHwgU19JU0RJUihzdC5zdF9tb2RlKSkK IAkJewpAQCAtMzgzLDEzICszODQsMTIgQEAgZG9fY29weShjb25zdCBjaGFyICphcmdzKQog CQkJaWYgKHBjbG9zZV9yYyAhPSAwKQogCQkJewogCQkJCWlmIChwY2xvc2VfcmMgPCAwKQot CQkJCQlwc3FsX2Vycm9yKCJjb3VsZCBub3QgY2xvc2UgcGlwZSB0byBleHRlcm5hbCBjb21t YW5kOiAlc1xuIiwKLQkJCQkJCQkgICBzdHJlcnJvcihlcnJubykpOworCQkJCQlwZ19sb2df ZXJyb3IoImNvdWxkIG5vdCBjbG9zZSBwaXBlIHRvIGV4dGVybmFsIGNvbW1hbmQ6ICVtIik7 CiAJCQkJZWxzZQogCQkJCXsKIAkJCQkJY2hhcgkgICAqcmVhc29uID0gd2FpdF9yZXN1bHRf dG9fc3RyKHBjbG9zZV9yYyk7CiAKLQkJCQkJcHNxbF9lcnJvcigiJXM6ICVzXG4iLCBvcHRp b25zLT5maWxlLAorCQkJCQlwZ19sb2dfZXJyb3IoIiVzOiAlcyIsIG9wdGlvbnMtPmZpbGUs CiAJCQkJCQkJICAgcmVhc29uID8gcmVhc29uIDogIiIpOwogCQkJCQlpZiAocmVhc29uKQog CQkJCQkJZnJlZShyZWFzb24pOwpAQCAtNDAyLDcgKzQwMiw3IEBAIGRvX2NvcHkoY29uc3Qg Y2hhciAqYXJncykKIAkJewogCQkJaWYgKGZjbG9zZShjb3B5c3RyZWFtKSAhPSAwKQogCQkJ ewotCQkJCXBzcWxfZXJyb3IoIiVzOiAlc1xuIiwgb3B0aW9ucy0+ZmlsZSwgc3RyZXJyb3Io ZXJybm8pKTsKKwkJCQlwZ19sb2dfZXJyb3IoIiVzOiAlbSIsIG9wdGlvbnMtPmZpbGUpOwog CQkJCXN1Y2Nlc3MgPSBmYWxzZTsKIAkJCX0KIAkJfQpAQCAtNDQ5LDggKzQ0OSw3IEBAIGhh bmRsZUNvcHlPdXQoUEdjb25uICpjb25uLCBGSUxFICpjb3B5c3RyZWFtLCBQR3Jlc3VsdCAq KnJlcykKIAkJewogCQkJaWYgKE9LICYmIGZ3cml0ZShidWYsIDEsIHJldCwgY29weXN0cmVh bSkgIT0gcmV0KQogCQkJewotCQkJCXBzcWxfZXJyb3IoImNvdWxkIG5vdCB3cml0ZSBDT1BZ IGRhdGE6ICVzXG4iLAotCQkJCQkJICAgc3RyZXJyb3IoZXJybm8pKTsKKwkJCQlwZ19sb2df ZXJyb3IoImNvdWxkIG5vdCB3cml0ZSBDT1BZIGRhdGE6ICVtIik7CiAJCQkJLyogY29tcGxh aW4gb25seSBvbmNlLCBrZWVwIHJlYWRpbmcgZGF0YSBmcm9tIHNlcnZlciAqLwogCQkJCU9L ID0gZmFsc2U7CiAJCQl9CkBAIC00NjAsMTQgKzQ1OSwxMyBAQCBoYW5kbGVDb3B5T3V0KFBH Y29ubiAqY29ubiwgRklMRSAqY29weXN0cmVhbSwgUEdyZXN1bHQgKipyZXMpCiAKIAlpZiAo T0sgJiYgZmZsdXNoKGNvcHlzdHJlYW0pKQogCXsKLQkJcHNxbF9lcnJvcigiY291bGQgbm90 IHdyaXRlIENPUFkgZGF0YTogJXNcbiIsCi0JCQkJICAgc3RyZXJyb3IoZXJybm8pKTsKKwkJ cGdfbG9nX2Vycm9yKCJjb3VsZCBub3Qgd3JpdGUgQ09QWSBkYXRhOiAlbSIpOwogCQlPSyA9 IGZhbHNlOwogCX0KIAogCWlmIChyZXQgPT0gLTIpCiAJewotCQlwc3FsX2Vycm9yKCJDT1BZ IGRhdGEgdHJhbnNmZXIgZmFpbGVkOiAlcyIsIFBRZXJyb3JNZXNzYWdlKGNvbm4pKTsKKwkJ cGdfbG9nX2Vycm9yKCJDT1BZIGRhdGEgdHJhbnNmZXIgZmFpbGVkOiAlcyIsIFBRZXJyb3JN ZXNzYWdlKGNvbm4pKTsKIAkJT0sgPSBmYWxzZTsKIAl9CiAKQEAgLTQ4Niw3ICs0ODQsNyBA QCBoYW5kbGVDb3B5T3V0KFBHY29ubiAqY29ubiwgRklMRSAqY29weXN0cmVhbSwgUEdyZXN1 bHQgKipyZXMpCiAJKnJlcyA9IFBRZ2V0UmVzdWx0KGNvbm4pOwogCWlmIChQUXJlc3VsdFN0 YXR1cygqcmVzKSAhPSBQR1JFU19DT01NQU5EX09LKQogCXsKLQkJcHNxbF9lcnJvcigiJXMi LCBQUWVycm9yTWVzc2FnZShjb25uKSk7CisJCXBnX2xvZ19lcnJvcigiJXMiLCBQUWVycm9y TWVzc2FnZShjb25uKSk7CiAJCU9LID0gZmFsc2U7CiAJfQogCkBAIC03MDUsNyArNzAzLDcg QEAgaGFuZGxlQ29weUluKFBHY29ubiAqY29ubiwgRklMRSAqY29weXN0cmVhbSwgYm9vbCBp c2JpbmFyeSwgUEdyZXN1bHQgKipyZXMpCiAJfQogCWlmIChQUXJlc3VsdFN0YXR1cygqcmVz KSAhPSBQR1JFU19DT01NQU5EX09LKQogCXsKLQkJcHNxbF9lcnJvcigiJXMiLCBQUWVycm9y TWVzc2FnZShjb25uKSk7CisJCXBnX2xvZ19lcnJvcigiJXMiLCBQUWVycm9yTWVzc2FnZShj b25uKSk7CiAJCU9LID0gZmFsc2U7CiAJfQogCmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwv Y3Jvc3N0YWJ2aWV3LmMgYi9zcmMvYmluL3BzcWwvY3Jvc3N0YWJ2aWV3LmMKaW5kZXggMDUw NDJiM2UxMy4uNzQ5NjY5ZGM1NiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL2Nyb3NzdGFi dmlldy5jCisrKyBiL3NyYy9iaW4vcHNxbC9jcm9zc3RhYnZpZXcuYwpAQCAtMTMsNiArMTMs NyBAQAogI2luY2x1ZGUgInBzcWxzY2Fuc2xhc2guaCIKICNpbmNsdWRlICJzZXR0aW5ncy5o IgogCisjaW5jbHVkZSAiZmVfdXRpbHMvbG9nZ2luZy5oIgogCiAvKgogICogVmFsdWUvcG9z aXRpb24gZnJvbSB0aGUgcmVzdWx0c2V0IHRoYXQgZ29lcyBpbnRvIHRoZSBob3Jpem9udGFs IG9yIHZlcnRpY2FsCkBAIC0xMjAsMTMgKzEyMSwxMyBAQCBQcmludFJlc3VsdHNJbkNyb3Nz dGFiKGNvbnN0IFBHcmVzdWx0ICpyZXMpCiAKIAlpZiAoUFFyZXN1bHRTdGF0dXMocmVzKSAh PSBQR1JFU19UVVBMRVNfT0spCiAJewotCQlwc3FsX2Vycm9yKCJcXGNyb3NzdGFidmlldzog c3RhdGVtZW50IGRpZCBub3QgcmV0dXJuIGEgcmVzdWx0IHNldFxuIik7CisJCXBnX2xvZ19l cnJvcigiXFxjcm9zc3RhYnZpZXc6IHN0YXRlbWVudCBkaWQgbm90IHJldHVybiBhIHJlc3Vs dCBzZXQiKTsKIAkJZ290byBlcnJvcl9yZXR1cm47CiAJfQogCiAJaWYgKFBRbmZpZWxkcyhy ZXMpIDwgMykKIAl7Ci0JCXBzcWxfZXJyb3IoIlxcY3Jvc3N0YWJ2aWV3OiBxdWVyeSBtdXN0 IHJldHVybiBhdCBsZWFzdCB0aHJlZSBjb2x1bW5zXG4iKTsKKwkJcGdfbG9nX2Vycm9yKCJc XGNyb3NzdGFidmlldzogcXVlcnkgbXVzdCByZXR1cm4gYXQgbGVhc3QgdGhyZWUgY29sdW1u cyIpOwogCQlnb3RvIGVycm9yX3JldHVybjsKIAl9CiAKQEAgLTE1Myw3ICsxNTQsNyBAQCBQ cmludFJlc3VsdHNJbkNyb3NzdGFiKGNvbnN0IFBHcmVzdWx0ICpyZXMpCiAJLyogSW5zaXN0 IHRoYXQgaGVhZGVyIGNvbHVtbnMgYmUgZGlzdGluY3QgKi8KIAlpZiAoZmllbGRfZm9yX2Nv bHVtbnMgPT0gZmllbGRfZm9yX3Jvd3MpCiAJewotCQlwc3FsX2Vycm9yKCJcXGNyb3NzdGFi dmlldzogdmVydGljYWwgYW5kIGhvcml6b250YWwgaGVhZGVycyBtdXN0IGJlIGRpZmZlcmVu dCBjb2x1bW5zXG4iKTsKKwkJcGdfbG9nX2Vycm9yKCJcXGNyb3NzdGFidmlldzogdmVydGlj YWwgYW5kIGhvcml6b250YWwgaGVhZGVycyBtdXN0IGJlIGRpZmZlcmVudCBjb2x1bW5zIik7 CiAJCWdvdG8gZXJyb3JfcmV0dXJuOwogCX0KIApAQCAtMTY5LDcgKzE3MCw3IEBAIFByaW50 UmVzdWx0c0luQ3Jvc3N0YWIoY29uc3QgUEdyZXN1bHQgKnJlcykKIAkJICovCiAJCWlmIChQ UW5maWVsZHMocmVzKSAhPSAzKQogCQl7Ci0JCQlwc3FsX2Vycm9yKCJcXGNyb3NzdGFidmll dzogZGF0YSBjb2x1bW4gbXVzdCBiZSBzcGVjaWZpZWQgd2hlbiBxdWVyeSByZXR1cm5zIG1v cmUgdGhhbiB0aHJlZSBjb2x1bW5zXG4iKTsKKwkJCXBnX2xvZ19lcnJvcigiXFxjcm9zc3Rh YnZpZXc6IGRhdGEgY29sdW1uIG11c3QgYmUgc3BlY2lmaWVkIHdoZW4gcXVlcnkgcmV0dXJu cyBtb3JlIHRoYW4gdGhyZWUgY29sdW1ucyIpOwogCQkJZ290byBlcnJvcl9yZXR1cm47CiAJ CX0KIApAQCAtMjI1LDcgKzIyNiw3IEBAIFByaW50UmVzdWx0c0luQ3Jvc3N0YWIoY29uc3Qg UEdyZXN1bHQgKnJlcykKIAogCQlpZiAocGl2X2NvbHVtbnMuY291bnQgPiBDUk9TU1RBQlZJ RVdfTUFYX0NPTFVNTlMpCiAJCXsKLQkJCXBzcWxfZXJyb3IoIlxcY3Jvc3N0YWJ2aWV3OiBt YXhpbXVtIG51bWJlciBvZiBjb2x1bW5zICglZCkgZXhjZWVkZWRcbiIsCisJCQlwZ19sb2df ZXJyb3IoIlxcY3Jvc3N0YWJ2aWV3OiBtYXhpbXVtIG51bWJlciBvZiBjb2x1bW5zICglZCkg ZXhjZWVkZWQiLAogCQkJCQkgICBDUk9TU1RBQlZJRVdfTUFYX0NPTFVNTlMpOwogCQkJZ290 byBlcnJvcl9yZXR1cm47CiAJCX0KQEAgLTM5NCw3ICszOTUsNyBAQCBwcmludENyb3NzdGFi KGNvbnN0IFBHcmVzdWx0ICpyZXN1bHRzLAogCQkJICovCiAJCQlpZiAoY29udC5jZWxsc1tp ZHhdICE9IE5VTEwpCiAJCQl7Ci0JCQkJcHNxbF9lcnJvcigiXFxjcm9zc3RhYnZpZXc6IHF1 ZXJ5IHJlc3VsdCBjb250YWlucyBtdWx0aXBsZSBkYXRhIHZhbHVlcyBmb3Igcm93IFwiJXNc IiwgY29sdW1uIFwiJXNcIlxuIiwKKwkJCQlwZ19sb2dfZXJyb3IoIlxcY3Jvc3N0YWJ2aWV3 OiBxdWVyeSByZXN1bHQgY29udGFpbnMgbXVsdGlwbGUgZGF0YSB2YWx1ZXMgZm9yIHJvdyBc IiVzXCIsIGNvbHVtbiBcIiVzXCIiLAogCQkJCQkJICAgcnAtPm5hbWUgPyBycC0+bmFtZSA6 CiAJCQkJCQkgICAocG9wdC5udWxsUHJpbnQgPyBwb3B0Lm51bGxQcmludCA6ICIobnVsbCki KSwKIAkJCQkJCSAgIGNwLT5uYW1lID8gY3AtPm5hbWUgOgpAQCAtNjQyLDcgKzY0Myw3IEBA IGluZGV4T2ZDb2x1bW4oY2hhciAqYXJnLCBjb25zdCBQR3Jlc3VsdCAqcmVzKQogCQlpZHgg PSBhdG9pKGFyZykgLSAxOwogCQlpZiAoaWR4IDwgMCB8fCBpZHggPj0gUFFuZmllbGRzKHJl cykpCiAJCXsKLQkJCXBzcWxfZXJyb3IoIlxcY3Jvc3N0YWJ2aWV3OiBjb2x1bW4gbnVtYmVy ICVkIGlzIG91dCBvZiByYW5nZSAxLi4lZFxuIiwKKwkJCXBnX2xvZ19lcnJvcigiXFxjcm9z c3RhYnZpZXc6IGNvbHVtbiBudW1iZXIgJWQgaXMgb3V0IG9mIHJhbmdlIDEuLiVkIiwKIAkJ CQkJICAgaWR4ICsgMSwgUFFuZmllbGRzKHJlcykpOwogCQkJcmV0dXJuIC0xOwogCQl9CkBA IC02NjcsNyArNjY4LDcgQEAgaW5kZXhPZkNvbHVtbihjaGFyICphcmcsIGNvbnN0IFBHcmVz dWx0ICpyZXMpCiAJCQkJaWYgKGlkeCA+PSAwKQogCQkJCXsKIAkJCQkJLyogYW5vdGhlciBp ZHggd2FzIGFscmVhZHkgZm91bmQgZm9yIHRoZSBzYW1lIG5hbWUgKi8KLQkJCQkJcHNxbF9l cnJvcigiXFxjcm9zc3RhYnZpZXc6IGFtYmlndW91cyBjb2x1bW4gbmFtZTogXCIlc1wiXG4i LCBhcmcpOworCQkJCQlwZ19sb2dfZXJyb3IoIlxcY3Jvc3N0YWJ2aWV3OiBhbWJpZ3VvdXMg Y29sdW1uIG5hbWU6IFwiJXNcIiIsIGFyZyk7CiAJCQkJCXJldHVybiAtMTsKIAkJCQl9CiAJ CQkJaWR4ID0gaTsKQEAgLTY3NSw3ICs2NzYsNyBAQCBpbmRleE9mQ29sdW1uKGNoYXIgKmFy ZywgY29uc3QgUEdyZXN1bHQgKnJlcykKIAkJfQogCQlpZiAoaWR4ID09IC0xKQogCQl7Ci0J CQlwc3FsX2Vycm9yKCJcXGNyb3NzdGFidmlldzogY29sdW1uIG5hbWUgbm90IGZvdW5kOiBc IiVzXCJcbiIsIGFyZyk7CisJCQlwZ19sb2dfZXJyb3IoIlxcY3Jvc3N0YWJ2aWV3OiBjb2x1 bW4gbmFtZSBub3QgZm91bmQ6IFwiJXNcIiIsIGFyZyk7CiAJCQlyZXR1cm4gLTE7CiAJCX0K IAl9CmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYyBiL3NyYy9iaW4vcHNx bC9kZXNjcmliZS5jCmluZGV4IDBhMTgxYjAxZDkuLjEzZDE0YTM1MjEgMTAwNjQ0Ci0tLSBh L3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jCisrKyBiL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5j CkBAIC0xOCw2ICsxOCw3IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19jYXN0X2QuaCIKICNp bmNsdWRlICJjYXRhbG9nL3BnX2NsYXNzX2QuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2Rl ZmF1bHRfYWNsX2QuaCIKKyNpbmNsdWRlICJmZV91dGlscy9sb2dnaW5nLmgiCiAjaW5jbHVk ZSAiZmVfdXRpbHMvc3RyaW5nX3V0aWxzLmgiCiAKICNpbmNsdWRlICJjb21tb24uaCIKQEAg LTE1Nyw3ICsxNTgsNyBAQCBkZXNjcmliZUFjY2Vzc01ldGhvZHMoY29uc3QgY2hhciAqcGF0 dGVybiwgYm9vbCB2ZXJib3NlKQogCXsKIAkJY2hhcgkJc3ZlcmJ1ZlszMl07CiAKLQkJcHNx bF9lcnJvcigiVGhlIHNlcnZlciAodmVyc2lvbiAlcykgZG9lcyBub3Qgc3VwcG9ydCBhY2Nl c3MgbWV0aG9kcy5cbiIsCisJCXBnX2xvZ19lcnJvcigiVGhlIHNlcnZlciAodmVyc2lvbiAl cykgZG9lcyBub3Qgc3VwcG9ydCBhY2Nlc3MgbWV0aG9kcy4iLAogCQkJCSAgIGZvcm1hdFBH VmVyc2lvbk51bWJlcihwc2V0LnN2ZXJzaW9uLCBmYWxzZSwKIAkJCQkJCQkJCQkgc3ZlcmJ1 Ziwgc2l6ZW9mKHN2ZXJidWYpKSk7CiAJCXJldHVybiB0cnVlOwpAQCAtMjI0LDcgKzIyNSw3 IEBAIGRlc2NyaWJlVGFibGVzcGFjZXMoY29uc3QgY2hhciAqcGF0dGVybiwgYm9vbCB2ZXJi b3NlKQogCXsKIAkJY2hhcgkJc3ZlcmJ1ZlszMl07CiAKLQkJcHNxbF9lcnJvcigiVGhlIHNl cnZlciAodmVyc2lvbiAlcykgZG9lcyBub3Qgc3VwcG9ydCB0YWJsZXNwYWNlcy5cbiIsCisJ CXBnX2xvZ19pbmZvKCJUaGUgc2VydmVyICh2ZXJzaW9uICVzKSBkb2VzIG5vdCBzdXBwb3J0 IHRhYmxlc3BhY2VzLiIsCiAJCQkJICAgZm9ybWF0UEdWZXJzaW9uTnVtYmVyKHBzZXQuc3Zl cnNpb24sIGZhbHNlLAogCQkJCQkJCQkJCSBzdmVyYnVmLCBzaXplb2Yoc3ZlcmJ1ZikpKTsK IAkJcmV0dXJuIHRydWU7CkBAIC0zMjcsNyArMzI4LDcgQEAgZGVzY3JpYmVGdW5jdGlvbnMo Y29uc3QgY2hhciAqZnVuY3R5cGVzLCBjb25zdCBjaGFyICpwYXR0ZXJuLCBib29sIHZlcmJv c2UsIGJvb2wKIAogCWlmIChzdHJsZW4oZnVuY3R5cGVzKSAhPSBzdHJzcG4oZnVuY3R5cGVz LCAiYW5wdHdTKyIpKQogCXsKLQkJcHNxbF9lcnJvcigiXFxkZiBvbmx5IHRha2VzIFthbnB0 d1MrXSBhcyBvcHRpb25zXG4iKTsKKwkJcGdfbG9nX2Vycm9yKCJcXGRmIG9ubHkgdGFrZXMg W2FucHR3UytdIGFzIG9wdGlvbnMiKTsKIAkJcmV0dXJuIHRydWU7CiAJfQogCkBAIC0zMzUs NyArMzM2LDcgQEAgZGVzY3JpYmVGdW5jdGlvbnMoY29uc3QgY2hhciAqZnVuY3R5cGVzLCBj b25zdCBjaGFyICpwYXR0ZXJuLCBib29sIHZlcmJvc2UsIGJvb2wKIAl7CiAJCWNoYXIJCXN2 ZXJidWZbMzJdOwogCi0JCXBzcWxfZXJyb3IoIlxcZGYgZG9lcyBub3QgdGFrZSBhIFwiJWNc IiBvcHRpb24gd2l0aCBzZXJ2ZXIgdmVyc2lvbiAlc1xuIiwKKwkJcGdfbG9nX2Vycm9yKCJc XGRmIGRvZXMgbm90IHRha2UgYSBcIiVjXCIgb3B0aW9uIHdpdGggc2VydmVyIHZlcnNpb24g JXMiLAogCQkJCSAgICdwJywKIAkJCQkgICBmb3JtYXRQR1ZlcnNpb25OdW1iZXIocHNldC5z dmVyc2lvbiwgZmFsc2UsCiAJCQkJCQkJCQkJIHN2ZXJidWYsIHNpemVvZihzdmVyYnVmKSkp OwpAQCAtMzQ2LDcgKzM0Nyw3IEBAIGRlc2NyaWJlRnVuY3Rpb25zKGNvbnN0IGNoYXIgKmZ1 bmN0eXBlcywgY29uc3QgY2hhciAqcGF0dGVybiwgYm9vbCB2ZXJib3NlLCBib29sCiAJewog CQljaGFyCQlzdmVyYnVmWzMyXTsKIAotCQlwc3FsX2Vycm9yKCJcXGRmIGRvZXMgbm90IHRh a2UgYSBcIiVjXCIgb3B0aW9uIHdpdGggc2VydmVyIHZlcnNpb24gJXNcbiIsCisJCXBnX2xv Z19lcnJvcigiXFxkZiBkb2VzIG5vdCB0YWtlIGEgXCIlY1wiIG9wdGlvbiB3aXRoIHNlcnZl ciB2ZXJzaW9uICVzIiwKIAkJCQkgICAndycsCiAJCQkJICAgZm9ybWF0UEdWZXJzaW9uTnVt YmVyKHBzZXQuc3ZlcnNpb24sIGZhbHNlLAogCQkJCQkJCQkJCSBzdmVyYnVmLCBzaXplb2Yo c3ZlcmJ1ZikpKTsKQEAgLTEwOTUsNyArMTA5Niw3IEBAIGxpc3REZWZhdWx0QUNMcyhjb25z dCBjaGFyICpwYXR0ZXJuKQogCXsKIAkJY2hhcgkJc3ZlcmJ1ZlszMl07CiAKLQkJcHNxbF9l cnJvcigiVGhlIHNlcnZlciAodmVyc2lvbiAlcykgZG9lcyBub3Qgc3VwcG9ydCBhbHRlcmlu ZyBkZWZhdWx0IHByaXZpbGVnZXMuXG4iLAorCQlwZ19sb2dfZXJyb3IoIlRoZSBzZXJ2ZXIg KHZlcnNpb24gJXMpIGRvZXMgbm90IHN1cHBvcnQgYWx0ZXJpbmcgZGVmYXVsdCBwcml2aWxl Z2VzLiIsCiAJCQkJICAgZm9ybWF0UEdWZXJzaW9uTnVtYmVyKHBzZXQuc3ZlcnNpb24sIGZh bHNlLAogCQkJCQkJCQkJCSBzdmVyYnVmLCBzaXplb2Yoc3ZlcmJ1ZikpKTsKIAkJcmV0dXJu IHRydWU7CkBAIC0xMzk2LDEwICsxMzk3LDEwIEBAIGRlc2NyaWJlVGFibGVEZXRhaWxzKGNv bnN0IGNoYXIgKnBhdHRlcm4sIGJvb2wgdmVyYm9zZSwgYm9vbCBzaG93U3lzdGVtKQogCQlp ZiAoIXBzZXQucXVpZXQpCiAJCXsKIAkJCWlmIChwYXR0ZXJuKQotCQkJCXBzcWxfZXJyb3Io IkRpZCBub3QgZmluZCBhbnkgcmVsYXRpb24gbmFtZWQgXCIlc1wiLlxuIiwKKwkJCQlwZ19s b2dfZXJyb3IoIkRpZCBub3QgZmluZCBhbnkgcmVsYXRpb24gbmFtZWQgXCIlc1wiLiIsCiAJ CQkJCQkgICBwYXR0ZXJuKTsKIAkJCWVsc2UKLQkJCQlwc3FsX2Vycm9yKCJEaWQgbm90IGZp bmQgYW55IHJlbGF0aW9ucy5cbiIpOworCQkJCXBnX2xvZ19lcnJvcigiRGlkIG5vdCBmaW5k IGFueSByZWxhdGlvbnMuIik7CiAJCX0KIAkJUFFjbGVhcihyZXMpOwogCQlyZXR1cm4gZmFs c2U7CkBAIC0xNjMzLDcgKzE2MzQsNyBAQCBkZXNjcmliZU9uZVRhYmxlRGV0YWlscyhjb25z dCBjaGFyICpzY2hlbWFuYW1lLAogCWlmIChQUW50dXBsZXMocmVzKSA9PSAwKQogCXsKIAkJ aWYgKCFwc2V0LnF1aWV0KQotCQkJcHNxbF9lcnJvcigiRGlkIG5vdCBmaW5kIGFueSByZWxh dGlvbiB3aXRoIE9JRCAlcy5cbiIsIG9pZCk7CisJCQlwZ19sb2dfZXJyb3IoIkRpZCBub3Qg ZmluZCBhbnkgcmVsYXRpb24gd2l0aCBPSUQgJXMuIiwgb2lkKTsKIAkJZ290byBlcnJvcl9y ZXR1cm47CiAJfQogCkBAIC0zNDI3LDcgKzM0MjgsNyBAQCBsaXN0RGJSb2xlU2V0dGluZ3Mo Y29uc3QgY2hhciAqcGF0dGVybiwgY29uc3QgY2hhciAqcGF0dGVybjIpCiAJewogCQljaGFy CQlzdmVyYnVmWzMyXTsKIAotCQlwc3FsX2Vycm9yKCJUaGUgc2VydmVyICh2ZXJzaW9uICVz KSBkb2VzIG5vdCBzdXBwb3J0IHBlci1kYXRhYmFzZSByb2xlIHNldHRpbmdzLlxuIiwKKwkJ cGdfbG9nX2Vycm9yKCJUaGUgc2VydmVyICh2ZXJzaW9uICVzKSBkb2VzIG5vdCBzdXBwb3J0 IHBlci1kYXRhYmFzZSByb2xlIHNldHRpbmdzLiIsCiAJCQkJICAgZm9ybWF0UEdWZXJzaW9u TnVtYmVyKHBzZXQuc3ZlcnNpb24sIGZhbHNlLAogCQkJCQkJCQkJCSBzdmVyYnVmLCBzaXpl b2Yoc3ZlcmJ1ZikpKTsKIAkJcmV0dXJuIHRydWU7CkBAIC0zNDYzLDEzICszNDY0LDEzIEBA IGxpc3REYlJvbGVTZXR0aW5ncyhjb25zdCBjaGFyICpwYXR0ZXJuLCBjb25zdCBjaGFyICpw YXR0ZXJuMikKIAlpZiAoUFFudHVwbGVzKHJlcykgPT0gMCAmJiAhcHNldC5xdWlldCkKIAl7 CiAJCWlmIChwYXR0ZXJuICYmIHBhdHRlcm4yKQotCQkJcHNxbF9lcnJvcigiRGlkIG5vdCBm aW5kIGFueSBzZXR0aW5ncyBmb3Igcm9sZSBcIiVzXCIgYW5kIGRhdGFiYXNlIFwiJXNcIi5c biIsCisJCQlwZ19sb2dfZXJyb3IoIkRpZCBub3QgZmluZCBhbnkgc2V0dGluZ3MgZm9yIHJv bGUgXCIlc1wiIGFuZCBkYXRhYmFzZSBcIiVzXCIuIiwKIAkJCQkJICAgcGF0dGVybiwgcGF0 dGVybjIpOwogCQllbHNlIGlmIChwYXR0ZXJuKQotCQkJcHNxbF9lcnJvcigiRGlkIG5vdCBm aW5kIGFueSBzZXR0aW5ncyBmb3Igcm9sZSBcIiVzXCIuXG4iLAorCQkJcGdfbG9nX2Vycm9y KCJEaWQgbm90IGZpbmQgYW55IHNldHRpbmdzIGZvciByb2xlIFwiJXNcIi4iLAogCQkJCQkg ICBwYXR0ZXJuKTsKIAkJZWxzZQotCQkJcHNxbF9lcnJvcigiRGlkIG5vdCBmaW5kIGFueSBz ZXR0aW5ncy5cbiIpOworCQkJcGdfbG9nX2Vycm9yKCJEaWQgbm90IGZpbmQgYW55IHNldHRp bmdzLiIpOwogCX0KIAllbHNlCiAJewpAQCAtMzYzOSwxMCArMzY0MCwxMCBAQCBsaXN0VGFi bGVzKGNvbnN0IGNoYXIgKnRhYnR5cGVzLCBjb25zdCBjaGFyICpwYXR0ZXJuLCBib29sIHZl cmJvc2UsIGJvb2wgc2hvd1N5cwogCWlmIChQUW50dXBsZXMocmVzKSA9PSAwICYmICFwc2V0 LnF1aWV0KQogCXsKIAkJaWYgKHBhdHRlcm4pCi0JCQlwc3FsX2Vycm9yKCJEaWQgbm90IGZp bmQgYW55IHJlbGF0aW9uIG5hbWVkIFwiJXNcIi5cbiIsCisJCQlwZ19sb2dfZXJyb3IoIkRp ZCBub3QgZmluZCBhbnkgcmVsYXRpb24gbmFtZWQgXCIlc1wiLiIsCiAJCQkJCSAgIHBhdHRl cm4pOwogCQllbHNlCi0JCQlwc3FsX2Vycm9yKCJEaWQgbm90IGZpbmQgYW55IHJlbGF0aW9u cy5cbiIpOworCQkJcGdfbG9nX2Vycm9yKCJEaWQgbm90IGZpbmQgYW55IHJlbGF0aW9ucy4i KTsKIAl9CiAJZWxzZQogCXsKQEAgLTQwOTgsNyArNDA5OSw3IEBAIGxpc3RDb2xsYXRpb25z KGNvbnN0IGNoYXIgKnBhdHRlcm4sIGJvb2wgdmVyYm9zZSwgYm9vbCBzaG93U3lzdGVtKQog CXsKIAkJY2hhcgkJc3ZlcmJ1ZlszMl07CiAKLQkJcHNxbF9lcnJvcigiVGhlIHNlcnZlciAo dmVyc2lvbiAlcykgZG9lcyBub3Qgc3VwcG9ydCBjb2xsYXRpb25zLlxuIiwKKwkJcGdfbG9n X2Vycm9yKCJUaGUgc2VydmVyICh2ZXJzaW9uICVzKSBkb2VzIG5vdCBzdXBwb3J0IGNvbGxh dGlvbnMuIiwKIAkJCQkgICBmb3JtYXRQR1ZlcnNpb25OdW1iZXIocHNldC5zdmVyc2lvbiwg ZmFsc2UsCiAJCQkJCQkJCQkJIHN2ZXJidWYsIHNpemVvZihzdmVyYnVmKSkpOwogCQlyZXR1 cm4gdHJ1ZTsKQEAgLTQyMzgsNyArNDIzOSw3IEBAIGxpc3RUU1BhcnNlcnMoY29uc3QgY2hh ciAqcGF0dGVybiwgYm9vbCB2ZXJib3NlKQogCXsKIAkJY2hhcgkJc3ZlcmJ1ZlszMl07CiAK LQkJcHNxbF9lcnJvcigiVGhlIHNlcnZlciAodmVyc2lvbiAlcykgZG9lcyBub3Qgc3VwcG9y dCBmdWxsIHRleHQgc2VhcmNoLlxuIiwKKwkJcGdfbG9nX2Vycm9yKCJUaGUgc2VydmVyICh2 ZXJzaW9uICVzKSBkb2VzIG5vdCBzdXBwb3J0IGZ1bGwgdGV4dCBzZWFyY2guIiwKIAkJCQkg ICBmb3JtYXRQR1ZlcnNpb25OdW1iZXIocHNldC5zdmVyc2lvbiwgZmFsc2UsCiAJCQkJCQkJ CQkJIHN2ZXJidWYsIHNpemVvZihzdmVyYnVmKSkpOwogCQlyZXR1cm4gdHJ1ZTsKQEAgLTQz MTgsMTAgKzQzMTksMTAgQEAgbGlzdFRTUGFyc2Vyc1ZlcmJvc2UoY29uc3QgY2hhciAqcGF0 dGVybikKIAkJaWYgKCFwc2V0LnF1aWV0KQogCQl7CiAJCQlpZiAocGF0dGVybikKLQkJCQlw c3FsX2Vycm9yKCJEaWQgbm90IGZpbmQgYW55IHRleHQgc2VhcmNoIHBhcnNlciBuYW1lZCBc IiVzXCIuXG4iLAorCQkJCXBnX2xvZ19lcnJvcigiRGlkIG5vdCBmaW5kIGFueSB0ZXh0IHNl YXJjaCBwYXJzZXIgbmFtZWQgXCIlc1wiLiIsCiAJCQkJCQkgICBwYXR0ZXJuKTsKIAkJCWVs c2UKLQkJCQlwc3FsX2Vycm9yKCJEaWQgbm90IGZpbmQgYW55IHRleHQgc2VhcmNoIHBhcnNl cnMuXG4iKTsKKwkJCQlwZ19sb2dfZXJyb3IoIkRpZCBub3QgZmluZCBhbnkgdGV4dCBzZWFy Y2ggcGFyc2Vycy4iKTsKIAkJfQogCQlQUWNsZWFyKHJlcyk7CiAJCXJldHVybiBmYWxzZTsK QEAgLTQ0ODUsNyArNDQ4Niw3IEBAIGxpc3RUU0RpY3Rpb25hcmllcyhjb25zdCBjaGFyICpw YXR0ZXJuLCBib29sIHZlcmJvc2UpCiAJewogCQljaGFyCQlzdmVyYnVmWzMyXTsKIAotCQlw c3FsX2Vycm9yKCJUaGUgc2VydmVyICh2ZXJzaW9uICVzKSBkb2VzIG5vdCBzdXBwb3J0IGZ1 bGwgdGV4dCBzZWFyY2guXG4iLAorCQlwZ19sb2dfZXJyb3IoIlRoZSBzZXJ2ZXIgKHZlcnNp b24gJXMpIGRvZXMgbm90IHN1cHBvcnQgZnVsbCB0ZXh0IHNlYXJjaC4iLAogCQkJCSAgIGZv cm1hdFBHVmVyc2lvbk51bWJlcihwc2V0LnN2ZXJzaW9uLCBmYWxzZSwKIAkJCQkJCQkJCQkg c3ZlcmJ1Ziwgc2l6ZW9mKHN2ZXJidWYpKSk7CiAJCXJldHVybiB0cnVlOwpAQCAtNDU1Niw3 ICs0NTU3LDcgQEAgbGlzdFRTVGVtcGxhdGVzKGNvbnN0IGNoYXIgKnBhdHRlcm4sIGJvb2wg dmVyYm9zZSkKIAl7CiAJCWNoYXIJCXN2ZXJidWZbMzJdOwogCi0JCXBzcWxfZXJyb3IoIlRo ZSBzZXJ2ZXIgKHZlcnNpb24gJXMpIGRvZXMgbm90IHN1cHBvcnQgZnVsbCB0ZXh0IHNlYXJj aC5cbiIsCisJCXBnX2xvZ19lcnJvcigiVGhlIHNlcnZlciAodmVyc2lvbiAlcykgZG9lcyBu b3Qgc3VwcG9ydCBmdWxsIHRleHQgc2VhcmNoLiIsCiAJCQkJICAgZm9ybWF0UEdWZXJzaW9u TnVtYmVyKHBzZXQuc3ZlcnNpb24sIGZhbHNlLAogCQkJCQkJCQkJCSBzdmVyYnVmLCBzaXpl b2Yoc3ZlcmJ1ZikpKTsKIAkJcmV0dXJuIHRydWU7CkBAIC00NjI3LDcgKzQ2MjgsNyBAQCBs aXN0VFNDb25maWdzKGNvbnN0IGNoYXIgKnBhdHRlcm4sIGJvb2wgdmVyYm9zZSkKIAl7CiAJ CWNoYXIJCXN2ZXJidWZbMzJdOwogCi0JCXBzcWxfZXJyb3IoIlRoZSBzZXJ2ZXIgKHZlcnNp b24gJXMpIGRvZXMgbm90IHN1cHBvcnQgZnVsbCB0ZXh0IHNlYXJjaC5cbiIsCisJCXBnX2xv Z19lcnJvcigiVGhlIHNlcnZlciAodmVyc2lvbiAlcykgZG9lcyBub3Qgc3VwcG9ydCBmdWxs IHRleHQgc2VhcmNoLiIsCiAJCQkJICAgZm9ybWF0UEdWZXJzaW9uTnVtYmVyKHBzZXQuc3Zl cnNpb24sIGZhbHNlLAogCQkJCQkJCQkJCSBzdmVyYnVmLCBzaXplb2Yoc3ZlcmJ1ZikpKTsK IAkJcmV0dXJuIHRydWU7CkBAIC00NzA4LDEwICs0NzA5LDEwIEBAIGxpc3RUU0NvbmZpZ3NW ZXJib3NlKGNvbnN0IGNoYXIgKnBhdHRlcm4pCiAJCWlmICghcHNldC5xdWlldCkKIAkJewog CQkJaWYgKHBhdHRlcm4pCi0JCQkJcHNxbF9lcnJvcigiRGlkIG5vdCBmaW5kIGFueSB0ZXh0 IHNlYXJjaCBjb25maWd1cmF0aW9uIG5hbWVkIFwiJXNcIi5cbiIsCisJCQkJcGdfbG9nX2Vy cm9yKCJEaWQgbm90IGZpbmQgYW55IHRleHQgc2VhcmNoIGNvbmZpZ3VyYXRpb24gbmFtZWQg XCIlc1wiLiIsCiAJCQkJCQkgICBwYXR0ZXJuKTsKIAkJCWVsc2UKLQkJCQlwc3FsX2Vycm9y KCJEaWQgbm90IGZpbmQgYW55IHRleHQgc2VhcmNoIGNvbmZpZ3VyYXRpb25zLlxuIik7CisJ CQkJcGdfbG9nX2Vycm9yKCJEaWQgbm90IGZpbmQgYW55IHRleHQgc2VhcmNoIGNvbmZpZ3Vy YXRpb25zLiIpOwogCQl9CiAJCVBRY2xlYXIocmVzKTsKIAkJcmV0dXJuIGZhbHNlOwpAQCAt NDgzMyw3ICs0ODM0LDcgQEAgbGlzdEZvcmVpZ25EYXRhV3JhcHBlcnMoY29uc3QgY2hhciAq cGF0dGVybiwgYm9vbCB2ZXJib3NlKQogCXsKIAkJY2hhcgkJc3ZlcmJ1ZlszMl07CiAKLQkJ cHNxbF9lcnJvcigiVGhlIHNlcnZlciAodmVyc2lvbiAlcykgZG9lcyBub3Qgc3VwcG9ydCBm b3JlaWduLWRhdGEgd3JhcHBlcnMuXG4iLAorCQlwZ19sb2dfZXJyb3IoIlRoZSBzZXJ2ZXIg KHZlcnNpb24gJXMpIGRvZXMgbm90IHN1cHBvcnQgZm9yZWlnbi1kYXRhIHdyYXBwZXJzLiIs CiAJCQkJICAgZm9ybWF0UEdWZXJzaW9uTnVtYmVyKHBzZXQuc3ZlcnNpb24sIGZhbHNlLAog CQkJCQkJCQkJCSBzdmVyYnVmLCBzaXplb2Yoc3ZlcmJ1ZikpKTsKIAkJcmV0dXJuIHRydWU7 CkBAIC00OTE2LDcgKzQ5MTcsNyBAQCBsaXN0Rm9yZWlnblNlcnZlcnMoY29uc3QgY2hhciAq cGF0dGVybiwgYm9vbCB2ZXJib3NlKQogCXsKIAkJY2hhcgkJc3ZlcmJ1ZlszMl07CiAKLQkJ cHNxbF9lcnJvcigiVGhlIHNlcnZlciAodmVyc2lvbiAlcykgZG9lcyBub3Qgc3VwcG9ydCBm b3JlaWduIHNlcnZlcnMuXG4iLAorCQlwZ19sb2dfZXJyb3IoIlRoZSBzZXJ2ZXIgKHZlcnNp b24gJXMpIGRvZXMgbm90IHN1cHBvcnQgZm9yZWlnbiBzZXJ2ZXJzLiIsCiAJCQkJICAgZm9y bWF0UEdWZXJzaW9uTnVtYmVyKHBzZXQuc3ZlcnNpb24sIGZhbHNlLAogCQkJCQkJCQkJCSBz dmVyYnVmLCBzaXplb2Yoc3ZlcmJ1ZikpKTsKIAkJcmV0dXJuIHRydWU7CkBAIC00OTk4LDcg KzQ5OTksNyBAQCBsaXN0VXNlck1hcHBpbmdzKGNvbnN0IGNoYXIgKnBhdHRlcm4sIGJvb2wg dmVyYm9zZSkKIAl7CiAJCWNoYXIJCXN2ZXJidWZbMzJdOwogCi0JCXBzcWxfZXJyb3IoIlRo ZSBzZXJ2ZXIgKHZlcnNpb24gJXMpIGRvZXMgbm90IHN1cHBvcnQgdXNlciBtYXBwaW5ncy5c biIsCisJCXBnX2xvZ19lcnJvcigiVGhlIHNlcnZlciAodmVyc2lvbiAlcykgZG9lcyBub3Qg c3VwcG9ydCB1c2VyIG1hcHBpbmdzLiIsCiAJCQkJICAgZm9ybWF0UEdWZXJzaW9uTnVtYmVy KHBzZXQuc3ZlcnNpb24sIGZhbHNlLAogCQkJCQkJCQkJCSBzdmVyYnVmLCBzaXplb2Yoc3Zl cmJ1ZikpKTsKIAkJcmV0dXJuIHRydWU7CkBAIC01MDU5LDcgKzUwNjAsNyBAQCBsaXN0Rm9y ZWlnblRhYmxlcyhjb25zdCBjaGFyICpwYXR0ZXJuLCBib29sIHZlcmJvc2UpCiAJewogCQlj aGFyCQlzdmVyYnVmWzMyXTsKIAotCQlwc3FsX2Vycm9yKCJUaGUgc2VydmVyICh2ZXJzaW9u ICVzKSBkb2VzIG5vdCBzdXBwb3J0IGZvcmVpZ24gdGFibGVzLlxuIiwKKwkJcGdfbG9nX2Vy cm9yKCJUaGUgc2VydmVyICh2ZXJzaW9uICVzKSBkb2VzIG5vdCBzdXBwb3J0IGZvcmVpZ24g dGFibGVzLiIsCiAJCQkJICAgZm9ybWF0UEdWZXJzaW9uTnVtYmVyKHBzZXQuc3ZlcnNpb24s IGZhbHNlLAogCQkJCQkJCQkJCSBzdmVyYnVmLCBzaXplb2Yoc3ZlcmJ1ZikpKTsKIAkJcmV0 dXJuIHRydWU7CkBAIC01MTM3LDcgKzUxMzgsNyBAQCBsaXN0RXh0ZW5zaW9ucyhjb25zdCBj aGFyICpwYXR0ZXJuKQogCXsKIAkJY2hhcgkJc3ZlcmJ1ZlszMl07CiAKLQkJcHNxbF9lcnJv cigiVGhlIHNlcnZlciAodmVyc2lvbiAlcykgZG9lcyBub3Qgc3VwcG9ydCBleHRlbnNpb25z LlxuIiwKKwkJcGdfbG9nX2Vycm9yKCJUaGUgc2VydmVyICh2ZXJzaW9uICVzKSBkb2VzIG5v dCBzdXBwb3J0IGV4dGVuc2lvbnMuIiwKIAkJCQkgICBmb3JtYXRQR1ZlcnNpb25OdW1iZXIo cHNldC5zdmVyc2lvbiwgZmFsc2UsCiAJCQkJCQkJCQkJIHN2ZXJidWYsIHNpemVvZihzdmVy YnVmKSkpOwogCQlyZXR1cm4gdHJ1ZTsKQEAgLTUxOTQsNyArNTE5NSw3IEBAIGxpc3RFeHRl bnNpb25Db250ZW50cyhjb25zdCBjaGFyICpwYXR0ZXJuKQogCXsKIAkJY2hhcgkJc3ZlcmJ1 ZlszMl07CiAKLQkJcHNxbF9lcnJvcigiVGhlIHNlcnZlciAodmVyc2lvbiAlcykgZG9lcyBu b3Qgc3VwcG9ydCBleHRlbnNpb25zLlxuIiwKKwkJcGdfbG9nX2Vycm9yKCJUaGUgc2VydmVy ICh2ZXJzaW9uICVzKSBkb2VzIG5vdCBzdXBwb3J0IGV4dGVuc2lvbnMuIiwKIAkJCQkgICBm b3JtYXRQR1ZlcnNpb25OdW1iZXIocHNldC5zdmVyc2lvbiwgZmFsc2UsCiAJCQkJCQkJCQkJ IHN2ZXJidWYsIHNpemVvZihzdmVyYnVmKSkpOwogCQlyZXR1cm4gdHJ1ZTsKQEAgLTUyMjIs MTAgKzUyMjMsMTAgQEAgbGlzdEV4dGVuc2lvbkNvbnRlbnRzKGNvbnN0IGNoYXIgKnBhdHRl cm4pCiAJCWlmICghcHNldC5xdWlldCkKIAkJewogCQkJaWYgKHBhdHRlcm4pCi0JCQkJcHNx bF9lcnJvcigiRGlkIG5vdCBmaW5kIGFueSBleHRlbnNpb24gbmFtZWQgXCIlc1wiLlxuIiwK KwkJCQlwZ19sb2dfZXJyb3IoIkRpZCBub3QgZmluZCBhbnkgZXh0ZW5zaW9uIG5hbWVkIFwi JXNcIi4iLAogCQkJCQkJICAgcGF0dGVybik7CiAJCQllbHNlCi0JCQkJcHNxbF9lcnJvcigi RGlkIG5vdCBmaW5kIGFueSBleHRlbnNpb25zLlxuIik7CisJCQkJcGdfbG9nX2Vycm9yKCJE aWQgbm90IGZpbmQgYW55IGV4dGVuc2lvbnMuIik7CiAJCX0KIAkJUFFjbGVhcihyZXMpOwog CQlyZXR1cm4gZmFsc2U7CkBAIC01MzA4LDcgKzUzMDksNyBAQCBsaXN0UHVibGljYXRpb25z KGNvbnN0IGNoYXIgKnBhdHRlcm4pCiAJewogCQljaGFyCQlzdmVyYnVmWzMyXTsKIAotCQlw c3FsX2Vycm9yKCJUaGUgc2VydmVyICh2ZXJzaW9uICVzKSBkb2VzIG5vdCBzdXBwb3J0IHB1 YmxpY2F0aW9ucy5cbiIsCisJCXBnX2xvZ19lcnJvcigiVGhlIHNlcnZlciAodmVyc2lvbiAl cykgZG9lcyBub3Qgc3VwcG9ydCBwdWJsaWNhdGlvbnMuIiwKIAkJCQkgICBmb3JtYXRQR1Zl cnNpb25OdW1iZXIocHNldC5zdmVyc2lvbiwgZmFsc2UsCiAJCQkJCQkJCQkJIHN2ZXJidWYs IHNpemVvZihzdmVyYnVmKSkpOwogCQlyZXR1cm4gdHJ1ZTsKQEAgLTUzNzksNyArNTM4MCw3 IEBAIGRlc2NyaWJlUHVibGljYXRpb25zKGNvbnN0IGNoYXIgKnBhdHRlcm4pCiAJewogCQlj aGFyCQlzdmVyYnVmWzMyXTsKIAotCQlwc3FsX2Vycm9yKCJUaGUgc2VydmVyICh2ZXJzaW9u ICVzKSBkb2VzIG5vdCBzdXBwb3J0IHB1YmxpY2F0aW9ucy5cbiIsCisJCXBnX2xvZ19lcnJv cigiVGhlIHNlcnZlciAodmVyc2lvbiAlcykgZG9lcyBub3Qgc3VwcG9ydCBwdWJsaWNhdGlv bnMuIiwKIAkJCQkgICBmb3JtYXRQR1ZlcnNpb25OdW1iZXIocHNldC5zdmVyc2lvbiwgZmFs c2UsCiAJCQkJCQkJCQkJIHN2ZXJidWYsIHNpemVvZihzdmVyYnVmKSkpOwogCQlyZXR1cm4g dHJ1ZTsKQEAgLTU0MTcsMTAgKzU0MTgsMTAgQEAgZGVzY3JpYmVQdWJsaWNhdGlvbnMoY29u c3QgY2hhciAqcGF0dGVybikKIAkJaWYgKCFwc2V0LnF1aWV0KQogCQl7CiAJCQlpZiAocGF0 dGVybikKLQkJCQlwc3FsX2Vycm9yKCJEaWQgbm90IGZpbmQgYW55IHB1YmxpY2F0aW9uIG5h bWVkIFwiJXNcIi5cbiIsCisJCQkJcGdfbG9nX2Vycm9yKCJEaWQgbm90IGZpbmQgYW55IHB1 YmxpY2F0aW9uIG5hbWVkIFwiJXNcIi4iLAogCQkJCQkJICAgcGF0dGVybik7CiAJCQllbHNl Ci0JCQkJcHNxbF9lcnJvcigiRGlkIG5vdCBmaW5kIGFueSBwdWJsaWNhdGlvbnMuXG4iKTsK KwkJCQlwZ19sb2dfZXJyb3IoIkRpZCBub3QgZmluZCBhbnkgcHVibGljYXRpb25zLiIpOwog CQl9CiAKIAkJdGVybVBRRXhwQnVmZmVyKCZidWYpOwpAQCAtNTUzNSw3ICs1NTM2LDcgQEAg ZGVzY3JpYmVTdWJzY3JpcHRpb25zKGNvbnN0IGNoYXIgKnBhdHRlcm4sIGJvb2wgdmVyYm9z ZSkKIAl7CiAJCWNoYXIJCXN2ZXJidWZbMzJdOwogCi0JCXBzcWxfZXJyb3IoIlRoZSBzZXJ2 ZXIgKHZlcnNpb24gJXMpIGRvZXMgbm90IHN1cHBvcnQgc3Vic2NyaXB0aW9ucy5cbiIsCisJ CXBnX2xvZ19lcnJvcigiVGhlIHNlcnZlciAodmVyc2lvbiAlcykgZG9lcyBub3Qgc3VwcG9y dCBzdWJzY3JpcHRpb25zLiIsCiAJCQkJICAgZm9ybWF0UEdWZXJzaW9uTnVtYmVyKHBzZXQu c3ZlcnNpb24sIGZhbHNlLAogCQkJCQkJCQkJCSBzdmVyYnVmLCBzaXplb2Yoc3ZlcmJ1Zikp KTsKIAkJcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvaGVscC5jIGIv c3JjL2Jpbi9wc3FsL2hlbHAuYwppbmRleCAyZTlmZTc2MGViLi40YmYwZTgyNDk2IDEwMDY0 NAotLS0gYS9zcmMvYmluL3BzcWwvaGVscC5jCisrKyBiL3NyYy9iaW4vcHNxbC9oZWxwLmMK QEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJzZXR0aW5ncy5oIgogI2luY2x1ZGUgInNx bF9oZWxwLmgiCiAKKyNpbmNsdWRlICJmZV91dGlscy9sb2dnaW5nLmgiCiAKIC8qCiAgKiBQ TEVBU0U6CkBAIC01OSw3ICs2MCw3IEBAIHVzYWdlKHVuc2lnbmVkIHNob3J0IGludCBwYWdl cikKIAkJdXNlciA9IGdldF91c2VyX25hbWUoJmVycnN0cik7CiAJCWlmICghdXNlcikKIAkJ ewotCQkJcHNxbF9lcnJvcigiJXNcbiIsIGVycnN0cik7CisJCQlwZ19sb2dfZmF0YWwoIiVz IiwgZXJyc3RyKTsKIAkJCWV4aXQoRVhJVF9GQUlMVVJFKTsKIAkJfQogCX0KZGlmZiAtLWdp dCBhL3NyYy9iaW4vcHNxbC9pbnB1dC5jIGIvc3JjL2Jpbi9wc3FsL2lucHV0LmMKaW5kZXgg OGUzMmNkMGIzMy4uYmI2MzdmNDY4ZCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL2lucHV0 LmMKKysrIGIvc3JjL2Jpbi9wc3FsL2lucHV0LmMKQEAgLTE4LDYgKzE4LDggQEAKICNpbmNs dWRlICJ0YWItY29tcGxldGUuaCIKICNpbmNsdWRlICJjb21tb24uaCIKIAorI2luY2x1ZGUg ImZlX3V0aWxzL2xvZ2dpbmcuaCIKKwogI2lmbmRlZiBXSU4zMgogI2RlZmluZSBQU1FMSElT VE9SWSAiLnBzcWxfaGlzdG9yeSIKICNlbHNlCkBAIC0yMTMsOCArMjE1LDcgQEAgZ2V0c19m cm9tRmlsZShGSUxFICpzb3VyY2UpCiAJCXsKIAkJCWlmIChmZXJyb3Ioc291cmNlKSkKIAkJ CXsKLQkJCQlwc3FsX2Vycm9yKCJjb3VsZCBub3QgcmVhZCBmcm9tIGlucHV0IGZpbGU6ICVz XG4iLAotCQkJCQkJICAgc3RyZXJyb3IoZXJybm8pKTsKKwkJCQlwZ19sb2dfZXJyb3IoImNv dWxkIG5vdCByZWFkIGZyb20gaW5wdXQgZmlsZTogJW0iKTsKIAkJCQlyZXR1cm4gTlVMTDsK IAkJCX0KIAkJCWJyZWFrOwpAQCAtMjI0LDcgKzIyNSw3IEBAIGdldHNfZnJvbUZpbGUoRklM RSAqc291cmNlKQogCiAJCWlmIChQUUV4cEJ1ZmZlckJyb2tlbihidWZmZXIpKQogCQl7Ci0J CQlwc3FsX2Vycm9yKCJvdXQgb2YgbWVtb3J5XG4iKTsKKwkJCXBnX2xvZ19lcnJvcigib3V0 IG9mIG1lbW9yeSIpOwogCQkJcmV0dXJuIE5VTEw7CiAJCX0KIApAQCAtNDY4LDggKzQ2OSw3 IEBAIHNhdmVIaXN0b3J5KGNoYXIgKmZuYW1lLCBpbnQgbWF4X2xpbmVzKQogCQl9CiAjZW5k aWYKIAotCQlwc3FsX2Vycm9yKCJjb3VsZCBub3Qgc2F2ZSBoaXN0b3J5IHRvIGZpbGUgXCIl c1wiOiAlc1xuIiwKLQkJCQkgICBmbmFtZSwgc3RyZXJyb3IoZXJybnVtKSk7CisJCXBnX2xv Z19lcnJvcigiY291bGQgbm90IHNhdmUgaGlzdG9yeSB0byBmaWxlIFwiJXNcIjogJW0iLCBm bmFtZSk7CiAJfQogCXJldHVybiBmYWxzZTsKIH0KQEAgLTUwNyw4ICs1MDcsNyBAQCBwcmlu dEhpc3RvcnkoY29uc3QgY2hhciAqZm5hbWUsIHVuc2lnbmVkIHNob3J0IGludCBwYWdlcikK IAkJb3V0cHV0ID0gZm9wZW4oZm5hbWUsICJ3Iik7CiAJCWlmIChvdXRwdXQgPT0gTlVMTCkK IAkJewotCQkJcHNxbF9lcnJvcigiY291bGQgbm90IHNhdmUgaGlzdG9yeSB0byBmaWxlIFwi JXNcIjogJXNcbiIsCi0JCQkJCSAgIGZuYW1lLCBzdHJlcnJvcihlcnJubykpOworCQkJcGdf bG9nX2Vycm9yKCJjb3VsZCBub3Qgc2F2ZSBoaXN0b3J5IHRvIGZpbGUgXCIlc1wiOiAlbSIs IGZuYW1lKTsKIAkJCXJldHVybiBmYWxzZTsKIAkJfQogCQlpc19wYWdlciA9IGZhbHNlOwpA QCAtNTI3LDcgKzUyNiw3IEBAIHByaW50SGlzdG9yeShjb25zdCBjaGFyICpmbmFtZSwgdW5z aWduZWQgc2hvcnQgaW50IHBhZ2VyKQogCiAJcmV0dXJuIHRydWU7CiAjZWxzZQotCXBzcWxf ZXJyb3IoImhpc3RvcnkgaXMgbm90IHN1cHBvcnRlZCBieSB0aGlzIGluc3RhbGxhdGlvblxu Iik7CisJcGdfbG9nX2Vycm9yKCJoaXN0b3J5IGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBp bnN0YWxsYXRpb24iKTsKIAlyZXR1cm4gZmFsc2U7CiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBh L3NyYy9iaW4vcHNxbC9sYXJnZV9vYmouYyBiL3NyYy9iaW4vcHNxbC9sYXJnZV9vYmouYwpp bmRleCA3ZmFmNTU5MWIzLi42ZjU1ZjlkNGMwIDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwv bGFyZ2Vfb2JqLmMKKysrIGIvc3JjL2Jpbi9wc3FsL2xhcmdlX29iai5jCkBAIC04LDEwICs4 LDExIEBACiAjaW5jbHVkZSAicG9zdGdyZXNfZmUuaCIKICNpbmNsdWRlICJsYXJnZV9vYmou aCIKIAotCiAjaW5jbHVkZSAic2V0dGluZ3MuaCIKICNpbmNsdWRlICJjb21tb24uaCIKIAor I2luY2x1ZGUgImZlX3V0aWxzL2xvZ2dpbmcuaCIKKwogc3RhdGljIHZvaWQgcHJpbnRfbG9f cmVzdWx0KGNvbnN0IGNoYXIgKmZtdCwuLi4pIHBnX2F0dHJpYnV0ZV9wcmludGYoMSwgMik7 CiAKIHN0YXRpYyB2b2lkCkBAIC02MSw3ICs2Miw3IEBAIHN0YXJ0X2xvX3hhY3QoY29uc3Qg Y2hhciAqb3BlcmF0aW9uLCBib29sICpvd25fdHJhbnNhY3Rpb24pCiAKIAlpZiAoIXBzZXQu ZGIpCiAJewotCQlwc3FsX2Vycm9yKCIlczogbm90IGNvbm5lY3RlZCB0byBhIGRhdGFiYXNl XG4iLCBvcGVyYXRpb24pOworCQlwZ19sb2dfZXJyb3IoIiVzOiBub3QgY29ubmVjdGVkIHRv IGEgZGF0YWJhc2UiLCBvcGVyYXRpb24pOwogCQlyZXR1cm4gZmFsc2U7CiAJfQogCkBAIC04 MCwxMCArODEsMTAgQEAgc3RhcnRfbG9feGFjdChjb25zdCBjaGFyICpvcGVyYXRpb24sIGJv b2wgKm93bl90cmFuc2FjdGlvbikKIAkJCS8qIHVzZSB0aGUgZXhpc3RpbmcgeGFjdCAqLwog CQkJYnJlYWs7CiAJCWNhc2UgUFFUUkFOU19JTkVSUk9SOgotCQkJcHNxbF9lcnJvcigiJXM6 IGN1cnJlbnQgdHJhbnNhY3Rpb24gaXMgYWJvcnRlZFxuIiwgb3BlcmF0aW9uKTsKKwkJCXBn X2xvZ19lcnJvcigiJXM6IGN1cnJlbnQgdHJhbnNhY3Rpb24gaXMgYWJvcnRlZCIsIG9wZXJh dGlvbik7CiAJCQlyZXR1cm4gZmFsc2U7CiAJCWRlZmF1bHQ6Ci0JCQlwc3FsX2Vycm9yKCIl czogdW5rbm93biB0cmFuc2FjdGlvbiBzdGF0dXNcbiIsIG9wZXJhdGlvbik7CisJCQlwZ19s b2dfZXJyb3IoIiVzOiB1bmtub3duIHRyYW5zYWN0aW9uIHN0YXR1cyIsIG9wZXJhdGlvbik7 CiAJCQlyZXR1cm4gZmFsc2U7CiAJfQogCkBAIC0xNTMsNyArMTU0LDcgQEAgZG9fbG9fZXhw b3J0KGNvbnN0IGNoYXIgKmxvaWRfYXJnLCBjb25zdCBjaGFyICpmaWxlbmFtZV9hcmcpCiAJ Lyogb2YgY291cnNlIHRoaXMgc3RhdHVzIGlzIGRvY3VtZW50ZWQgbm93aGVyZSA6KCAqLwog CWlmIChzdGF0dXMgIT0gMSkKIAl7Ci0JCXBzcWxfZXJyb3IoIiVzIiwgUFFlcnJvck1lc3Nh Z2UocHNldC5kYikpOworCQlwZ19sb2dfZXJyb3IoIiVzIiwgUFFlcnJvck1lc3NhZ2UocHNl dC5kYikpOwogCQlyZXR1cm4gZmFpbF9sb194YWN0KCJcXGxvX2V4cG9ydCIsIG93bl90cmFu c2FjdGlvbik7CiAJfQogCkBAIC0xODgsNyArMTg5LDcgQEAgZG9fbG9faW1wb3J0KGNvbnN0 IGNoYXIgKmZpbGVuYW1lX2FyZywgY29uc3QgY2hhciAqY29tbWVudF9hcmcpCiAKIAlpZiAo bG9pZCA9PSBJbnZhbGlkT2lkKQogCXsKLQkJcHNxbF9lcnJvcigiJXMiLCBQUWVycm9yTWVz c2FnZShwc2V0LmRiKSk7CisJCXBnX2xvZ19lcnJvcigiJXMiLCBQUWVycm9yTWVzc2FnZShw c2V0LmRiKSk7CiAJCXJldHVybiBmYWlsX2xvX3hhY3QoIlxcbG9faW1wb3J0Iiwgb3duX3Ry YW5zYWN0aW9uKTsKIAl9CiAKQEAgLTI1MCw3ICsyNTEsNyBAQCBkb19sb191bmxpbmsoY29u c3QgY2hhciAqbG9pZF9hcmcpCiAKIAlpZiAoc3RhdHVzID09IC0xKQogCXsKLQkJcHNxbF9l cnJvcigiJXMiLCBQUWVycm9yTWVzc2FnZShwc2V0LmRiKSk7CisJCXBnX2xvZ19lcnJvcigi JXMiLCBQUWVycm9yTWVzc2FnZShwc2V0LmRiKSk7CiAJCXJldHVybiBmYWlsX2xvX3hhY3Qo IlxcbG9fdW5saW5rIiwgb3duX3RyYW5zYWN0aW9uKTsKIAl9CiAKZGlmZiAtLWdpdCBhL3Ny Yy9iaW4vcHNxbC9tYWlubG9vcC5jIGIvc3JjL2Jpbi9wc3FsL21haW5sb29wLmMKaW5kZXgg NmNhY2EyZTU3NS4uM2EzOGU1ODA5YyAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL21haW5s b29wLmMKKysrIGIvc3JjL2Jpbi9wc3FsL21haW5sb29wLmMKQEAgLTE0LDEzICsxNCwxMyBA QAogI2luY2x1ZGUgInByb21wdC5oIgogI2luY2x1ZGUgInNldHRpbmdzLmgiCiAKKyNpbmNs dWRlICJmZV91dGlscy9sb2dnaW5nLmgiCiAjaW5jbHVkZSAibWIvcGdfd2NoYXIuaCIKIAog CiAvKiBjYWxsYmFjayBmdW5jdGlvbnMgZm9yIG91ciBmbGV4IGxleGVyICovCiBjb25zdCBQ c3FsU2NhbkNhbGxiYWNrcyBwc3Fsc2Nhbl9jYWxsYmFja3MgPSB7CiAJcHNxbF9nZXRfdmFy aWFibGUsCi0JcHNxbF9lcnJvcgogfTsKIAogCkBAIC03OSw3ICs3OSw3IEBAIE1haW5Mb29w KEZJTEUgKnNvdXJjZSkKIAkJUFFFeHBCdWZmZXJCcm9rZW4ocHJldmlvdXNfYnVmKSB8fAog CQlQUUV4cEJ1ZmZlckJyb2tlbihoaXN0b3J5X2J1ZikpCiAJewotCQlwc3FsX2Vycm9yKCJv dXQgb2YgbWVtb3J5XG4iKTsKKwkJcGdfbG9nX2Vycm9yKCJvdXQgb2YgbWVtb3J5Iik7CiAJ CWV4aXQoRVhJVF9GQUlMVVJFKTsKIAl9CiAKQEAgLTEzMyw3ICsxMzMsNyBAQCBNYWluTG9v cChGSUxFICpzb3VyY2UpCiAJCQkJICovCiAJCQkJaWYgKCFjb25kaXRpb25hbF9zdGFja19l bXB0eShjb25kX3N0YWNrKSkKIAkJCQl7Ci0JCQkJCXBzcWxfZXJyb3IoIlxcaWY6IGVzY2Fw ZWRcbiIpOworCQkJCQlwZ19sb2dfZXJyb3IoIlxcaWY6IGVzY2FwZWQiKTsKIAkJCQkJY29u ZGl0aW9uYWxfc3RhY2tfcG9wKGNvbmRfc3RhY2spOwogCQkJCX0KIAkJCX0KQEAgLTM4Myw3 ICszODMsNyBAQCBNYWluTG9vcChGSUxFICpzb3VyY2UpCiAKIAkJCWlmIChQUUV4cEJ1ZmZl ckJyb2tlbihxdWVyeV9idWYpKQogCQkJewotCQkJCXBzcWxfZXJyb3IoIm91dCBvZiBtZW1v cnlcbiIpOworCQkJCXBnX2xvZ19lcnJvcigib3V0IG9mIG1lbW9yeSIpOwogCQkJCWV4aXQo RVhJVF9GQUlMVVJFKTsKIAkJCX0KIApAQCAtNDQ2LDcgKzQ0Niw3IEBAIE1haW5Mb29wKEZJ TEUgKnNvdXJjZSkKIAkJCQl7CiAJCQkJCS8qIGlmIGludGVyYWN0aXZlLCB3YXJuIGFib3V0 IG5vbi1leGVjdXRlZCBxdWVyeSAqLwogCQkJCQlpZiAocHNldC5jdXJfY21kX2ludGVyYWN0 aXZlKQotCQkJCQkJcHNxbF9lcnJvcigicXVlcnkgaWdub3JlZDsgdXNlIFxcZW5kaWYgb3Ig Q3RybC1DIHRvIGV4aXQgY3VycmVudCBcXGlmIGJsb2NrXG4iKTsKKwkJCQkJCXBnX2xvZ19l cnJvcigicXVlcnkgaWdub3JlZDsgdXNlIFxcZW5kaWYgb3IgQ3RybC1DIHRvIGV4aXQgY3Vy cmVudCBcXGlmIGJsb2NrIik7CiAJCQkJCS8qIGZha2UgYW4gT0sgcmVzdWx0IGZvciBwdXJw b3NlcyBvZiBsb29wIGNoZWNrcyAqLwogCQkJCQlzdWNjZXNzID0gdHJ1ZTsKIAkJCQkJc2xh c2hDbWRTdGF0dXMgPSBQU1FMX0NNRF9TRU5EOwpAQCAtNTg4LDcgKzU4OCw3IEBAIE1haW5M b29wKEZJTEUgKnNvdXJjZSkKIAkJZWxzZQogCQl7CiAJCQlpZiAocHNldC5jdXJfY21kX2lu dGVyYWN0aXZlKQotCQkJCXBzcWxfZXJyb3IoInF1ZXJ5IGlnbm9yZWQ7IHVzZSBcXGVuZGlm IG9yIEN0cmwtQyB0byBleGl0IGN1cnJlbnQgXFxpZiBibG9ja1xuIik7CisJCQkJcGdfbG9n X2Vycm9yKCJxdWVyeSBpZ25vcmVkOyB1c2UgXFxlbmRpZiBvciBDdHJsLUMgdG8gZXhpdCBj dXJyZW50IFxcaWYgYmxvY2siKTsKIAkJCXN1Y2Nlc3MgPSB0cnVlOwogCQl9CiAKQEAgLTYw Niw3ICs2MDYsNyBAQCBNYWluTG9vcChGSUxFICpzb3VyY2UpCiAJCXN1Y2Nlc3NSZXN1bHQg IT0gRVhJVF9VU0VSICYmCiAJCSFjb25kaXRpb25hbF9zdGFja19lbXB0eShjb25kX3N0YWNr KSkKIAl7Ci0JCXBzcWxfZXJyb3IoInJlYWNoZWQgRU9GIHdpdGhvdXQgZmluZGluZyBjbG9z aW5nIFxcZW5kaWYocylcbiIpOworCQlwZ19sb2dfZXJyb3IoInJlYWNoZWQgRU9GIHdpdGhv dXQgZmluZGluZyBjbG9zaW5nIFxcZW5kaWYocykiKTsKIAkJaWYgKGRpZV9vbl9lcnJvciAm JiAhcHNldC5jdXJfY21kX2ludGVyYWN0aXZlKQogCQkJc3VjY2Vzc1Jlc3VsdCA9IEVYSVRf VVNFUjsKIAl9CmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvbmxzLm1rIGIvc3JjL2Jpbi9w c3FsL25scy5tawppbmRleCBlMzU1ZjIxOWI5Li4yZTcwN2Y0NDFjIDEwMDY0NAotLS0gYS9z cmMvYmluL3BzcWwvbmxzLm1rCisrKyBiL3NyYy9iaW4vcHNxbC9ubHMubWsKQEAgLTEsMTIg KzEsMTQgQEAKICMgc3JjL2Jpbi9wc3FsL25scy5tawogQ0FUQUxPR19OQU1FICAgICA9IHBz cWwKIEFWQUlMX0xBTkdVQUdFUyAgPSBjcyBkZSBlcyBmciBoZSBpdCBqYSBrbyBwbCBwdF9C UiBydSBzdiB6aF9DTiB6aF9UVwotR0VUVEVYVF9GSUxFUyAgICA9IGNvbW1hbmQuYyBjb21t b24uYyBjb3B5LmMgY3Jvc3N0YWJ2aWV3LmMgaGVscC5jIGlucHV0LmMgbGFyZ2Vfb2JqLmMg XAorR0VUVEVYVF9GSUxFUyAgICA9ICQoRlJPTlRFTkRfQ09NTU9OX0dFVFRFWFRfRklMRVMp IFwKKyAgICAgICAgICAgICAgICAgICBjb21tYW5kLmMgY29tbW9uLmMgY29weS5jIGNyb3Nz dGFidmlldy5jIGhlbHAuYyBpbnB1dC5jIGxhcmdlX29iai5jIFwKICAgICAgICAgICAgICAg ICAgICBtYWlubG9vcC5jIHBzcWxzY2Fuc2xhc2guYyBzdGFydHVwLmMgXAogICAgICAgICAg ICAgICAgICAgIGRlc2NyaWJlLmMgc3FsX2hlbHAuaCBzcWxfaGVscC5jIFwKICAgICAgICAg ICAgICAgICAgICB0YWItY29tcGxldGUuYyB2YXJpYWJsZXMuYyBcCiAgICAgICAgICAgICAg ICAgICAgLi4vLi4vZmVfdXRpbHMvcHJpbnQuYyAuLi8uLi9mZV91dGlscy9wc3Fsc2Nhbi5j IFwKICAgICAgICAgICAgICAgICAgICAuLi8uLi9jb21tb24vZXhlYy5jIC4uLy4uL2NvbW1v bi9mZV9tZW11dGlscy5jIC4uLy4uL2NvbW1vbi91c2VybmFtZS5jIFwKICAgICAgICAgICAg ICAgICAgICAuLi8uLi9jb21tb24vd2FpdF9lcnJvci5jCi1HRVRURVhUX1RSSUdHRVJTID0g Tl8gcHNxbF9lcnJvciBzaW1wbGVfcHJvbXB0IHdyaXRlX2Vycm9yCi1HRVRURVhUX0ZMQUdT ICAgID0gcHNxbF9lcnJvcjoxOmMtZm9ybWF0IHdyaXRlX2Vycm9yOjE6Yy1mb3JtYXQKK0dF VFRFWFRfVFJJR0dFUlMgPSAkKEZST05URU5EX0NPTU1PTl9HRVRURVhUX1RSSUdHRVJTKSBc CisgICAgICAgICAgICAgICAgICAgTl8gc2ltcGxlX3Byb21wdAorR0VUVEVYVF9GTEFHUyAg ICA9ICQoRlJPTlRFTkRfQ09NTU9OX0dFVFRFWFRfRkxBR1MpCmRpZmYgLS1naXQgYS9zcmMv YmluL3BzcWwvcHNxbHNjYW5zbGFzaC5sIGIvc3JjL2Jpbi9wc3FsL3BzcWxzY2Fuc2xhc2gu bAppbmRleCAzNGRmMzVlNWY0Li5iMmJkMTI4NDA4IDEwMDY0NAotLS0gYS9zcmMvYmluL3Bz cWwvcHNxbHNjYW5zbGFzaC5sCisrKyBiL3NyYy9iaW4vcHNxbC9wc3Fsc2NhbnNsYXNoLmwK QEAgLTIwLDYgKzIwLDcgQEAKIAogI2luY2x1ZGUgInBzcWxzY2Fuc2xhc2guaCIKICNpbmNs dWRlICJmZV91dGlscy9jb25kaXRpb25hbC5oIgorI2luY2x1ZGUgImZlX3V0aWxzL2xvZ2dp bmcuaCIKIAogI2luY2x1ZGUgImxpYnBxLWZlLmgiCiB9CkBAIC02MzMsNyArNjM0LDcgQEAg cHNxbF9zY2FuX3NsYXNoX29wdGlvbihQc3FsU2NhblN0YXRlIHN0YXRlLAogCQljYXNlIHhz bGFzaGJhY2txdW90ZToKIAkJY2FzZSB4c2xhc2hkcXVvdGU6CiAJCQkvKiBtdXN0IGhhdmUg aGl0IEVPTCBpbnNpZGUgcXVvdGVzICovCi0JCQlzdGF0ZS0+Y2FsbGJhY2tzLT53cml0ZV9l cnJvcigidW50ZXJtaW5hdGVkIHF1b3RlZCBzdHJpbmdcbiIpOworCQkJcGdfbG9nX2Vycm9y KCJ1bnRlcm1pbmF0ZWQgcXVvdGVkIHN0cmluZyIpOwogCQkJdGVybVBRRXhwQnVmZmVyKCZt eWJ1Zik7CiAJCQlyZXR1cm4gTlVMTDsKIAkJY2FzZSB4c2xhc2h3aG9sZWxpbmU6CkBAIC03 NzksNyArNzgwLDcgQEAgZXZhbHVhdGVfYmFja3RpY2soUHNxbFNjYW5TdGF0ZSBzdGF0ZSkK IAlmZCA9IHBvcGVuKGNtZCwgUEdfQklOQVJZX1IpOwogCWlmICghZmQpCiAJewotCQlzdGF0 ZS0+Y2FsbGJhY2tzLT53cml0ZV9lcnJvcigiJXM6ICVzXG4iLCBjbWQsIHN0cmVycm9yKGVy cm5vKSk7CisJCXBnX2xvZ19lcnJvcigiJXM6ICVtIiwgY21kKTsKIAkJZXJyb3IgPSB0cnVl OwogCX0KIApAQCAtNzkwLDcgKzc5MSw3IEBAIGV2YWx1YXRlX2JhY2t0aWNrKFBzcWxTY2Fu U3RhdGUgc3RhdGUpCiAJCQlyZXN1bHQgPSBmcmVhZChidWYsIDEsIHNpemVvZihidWYpLCBm ZCk7CiAJCQlpZiAoZmVycm9yKGZkKSkKIAkJCXsKLQkJCQlzdGF0ZS0+Y2FsbGJhY2tzLT53 cml0ZV9lcnJvcigiJXM6ICVzXG4iLCBjbWQsIHN0cmVycm9yKGVycm5vKSk7CisJCQkJcGdf bG9nX2Vycm9yKCIlczogJW0iLCBjbWQpOwogCQkJCWVycm9yID0gdHJ1ZTsKIAkJCQlicmVh azsKIAkJCX0KQEAgLTgwMCwxMyArODAxLDEzIEBAIGV2YWx1YXRlX2JhY2t0aWNrKFBzcWxT Y2FuU3RhdGUgc3RhdGUpCiAKIAlpZiAoZmQgJiYgcGNsb3NlKGZkKSA9PSAtMSkKIAl7Ci0J CXN0YXRlLT5jYWxsYmFja3MtPndyaXRlX2Vycm9yKCIlczogJXNcbiIsIGNtZCwgc3RyZXJy b3IoZXJybm8pKTsKKwkJcGdfbG9nX2Vycm9yKCIlczogJW0iLCBjbWQpOwogCQllcnJvciA9 IHRydWU7CiAJfQogCiAJaWYgKFBRRXhwQnVmZmVyRGF0YUJyb2tlbihjbWRfb3V0cHV0KSkK IAl7Ci0JCXN0YXRlLT5jYWxsYmFja3MtPndyaXRlX2Vycm9yKCIlczogb3V0IG9mIG1lbW9y eVxuIiwgY21kKTsKKwkJcGdfbG9nX2Vycm9yKCIlczogb3V0IG9mIG1lbW9yeSIsIGNtZCk7 CiAJCWVycm9yID0gdHJ1ZTsKIAl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC9zdGFy dHVwLmMgYi9zcmMvYmluL3BzcWwvc3RhcnR1cC5jCmluZGV4IGU3NTM2YThhMDYuLjRmZDUx MzViMGQgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC9zdGFydHVwLmMKKysrIGIvc3JjL2Jp bi9wc3FsL3N0YXJ0dXAuYwpAQCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUgImhlbHAuaCIK ICNpbmNsdWRlICJpbnB1dC5oIgogI2luY2x1ZGUgIm1haW5sb29wLmgiCisjaW5jbHVkZSAi ZmVfdXRpbHMvbG9nZ2luZy5oIgogI2luY2x1ZGUgImZlX3V0aWxzL3ByaW50LmgiCiAjaW5j bHVkZSAic2V0dGluZ3MuaCIKIApAQCAtODksNiArOTAsMjggQEAgc3RhdGljIHZvaWQgRXN0 YWJsaXNoVmFyaWFibGVTcGFjZSh2b2lkKTsKIAogI2RlZmluZSBOT1BBR0VSCQkwCiAKK3N0 YXRpYyB2b2lkCitsb2dfcHJlX2NhbGxiYWNrKHZvaWQpCit7CisJaWYgKHBzZXQucXVlcnlG b3V0ICYmIHBzZXQucXVlcnlGb3V0ICE9IHN0ZG91dCkKKwkJZmZsdXNoKHBzZXQucXVlcnlG b3V0KTsKK30KKworc3RhdGljIHZvaWQKK2xvZ19sb2N1c19jYWxsYmFjayhjb25zdCBjaGFy ICoqZmlsZW5hbWUsIHVpbnQ2NCAqbGluZW5vKQoreworCWlmIChwc2V0LmlucHV0ZmlsZSkK Kwl7CisJCSpmaWxlbmFtZSA9IHBzZXQuaW5wdXRmaWxlOworCQkqbGluZW5vID0gIHBzZXQu bGluZW5vOworCX0KKwllbHNlCisJeworCQkqZmlsZW5hbWUgPSBOVUxMOworCQkqbGluZW5v ID0gMDsKKwl9Cit9CisKIC8qCiAgKgogICogbWFpbgpAQCAtMTA0LDYgKzEyNyw5IEBAIG1h aW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAlib29sCQluZXdfcGFzczsKIAogCXNldF9w Z2xvY2FsZV9wZ3NlcnZpY2UoYXJndlswXSwgUEdfVEVYVERPTUFJTigicHNxbCIpKTsKKwlw Z19sb2dnaW5nX2luaXQoYXJndlswXSk7CisJcGdfbG9nZ2luZ19zZXRfcHJlX2NhbGxiYWNr KGxvZ19wcmVfY2FsbGJhY2spOworCXBnX2xvZ2dpbmdfc2V0X2xvY3VzX2NhbGxiYWNrKGxv Z19sb2N1c19jYWxsYmFjayk7CiAKIAlpZiAoYXJnYyA+IDEpCiAJewpAQCAtMTkwLDcgKzIx Niw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkvKiBCYWlsIG91dCBpZiAt MSB3YXMgc3BlY2lmaWVkIGJ1dCB3aWxsIGJlIGlnbm9yZWQuICovCiAJaWYgKG9wdGlvbnMu c2luZ2xlX3R4biAmJiBvcHRpb25zLmFjdGlvbnMuaGVhZCA9PSBOVUxMKQogCXsKLQkJZnBy aW50ZihzdGRlcnIsIF8oIiVzOiAtMSBjYW4gb25seSBiZSB1c2VkIGluIG5vbi1pbnRlcmFj dGl2ZSBtb2RlXG4iKSwgcHNldC5wcm9nbmFtZSk7CisJCXBnX2xvZ19mYXRhbCgiLTEgY2Fu IG9ubHkgYmUgdXNlZCBpbiBub24taW50ZXJhY3RpdmUgbW9kZSIpOwogCQlleGl0KEVYSVRf RkFJTFVSRSk7CiAJfQogCkBAIC0yNzcsNyArMzAzLDcgQEAgbWFpbihpbnQgYXJnYywgY2hh ciAqYXJndltdKQogCiAJaWYgKFBRc3RhdHVzKHBzZXQuZGIpID09IENPTk5FQ1RJT05fQkFE KQogCXsKLQkJZnByaW50ZihzdGRlcnIsICIlczogJXMiLCBwc2V0LnByb2duYW1lLCBQUWVy cm9yTWVzc2FnZShwc2V0LmRiKSk7CisJCXBnX2xvZ19mYXRhbCgiJXMiLCBQUWVycm9yTWVz c2FnZShwc2V0LmRiKSk7CiAJCVBRZmluaXNoKHBzZXQuZGIpOwogCQlleGl0KEVYSVRfQkFE Q09OTik7CiAJfQpAQCAtMzA1LDggKzMzMSw4IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFy Z3ZbXSkKIAkJcHNldC5sb2dmaWxlID0gZm9wZW4ob3B0aW9ucy5sb2dmaWxlbmFtZSwgImEi KTsKIAkJaWYgKCFwc2V0LmxvZ2ZpbGUpCiAJCXsKLQkJCWZwcmludGYoc3RkZXJyLCBfKCIl czogY291bGQgbm90IG9wZW4gbG9nIGZpbGUgXCIlc1wiOiAlc1xuIiksCi0JCQkJCXBzZXQu cHJvZ25hbWUsIG9wdGlvbnMubG9nZmlsZW5hbWUsIHN0cmVycm9yKGVycm5vKSk7CisJCQlw Z19sb2dfZmF0YWwoImNvdWxkIG5vdCBvcGVuIGxvZyBmaWxlIFwiJXNcIjogJW0iLAorCQkJ CQkJIG9wdGlvbnMubG9nZmlsZW5hbWUpOwogCQkJZXhpdChFWElUX0ZBSUxVUkUpOwogCQl9 CiAJfQpAQCAtNTYyLDcgKzU4OCw3IEBAIHBhcnNlX3BzcWxfb3B0aW9ucyhpbnQgYXJnYywg Y2hhciAqYXJndltdLCBzdHJ1Y3QgYWRob2Nfb3B0cyAqb3B0aW9ucykKIAogCQkJCQlpZiAo IXJlc3VsdCkKIAkJCQkJewotCQkJCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBjb3VsZCBu b3Qgc2V0IHByaW50aW5nIHBhcmFtZXRlciBcIiVzXCJcbiIpLCBwc2V0LnByb2duYW1lLCB2 YWx1ZSk7CisJCQkJCQlwZ19sb2dfZmF0YWwoImNvdWxkIG5vdCBzZXQgcHJpbnRpbmcgcGFy YW1ldGVyIFwiJXNcIiIsIHZhbHVlKTsKIAkJCQkJCWV4aXQoRVhJVF9GQUlMVVJFKTsKIAkJ CQkJfQogCkBAIC02ODQsOCArNzEwLDggQEAgcGFyc2VfcHNxbF9vcHRpb25zKGludCBhcmdj LCBjaGFyICphcmd2W10sIHN0cnVjdCBhZGhvY19vcHRzICpvcHRpb25zKQogCQllbHNlIGlm ICghb3B0aW9ucy0+dXNlcm5hbWUpCiAJCQlvcHRpb25zLT51c2VybmFtZSA9IGFyZ3Zbb3B0 aW5kXTsKIAkJZWxzZSBpZiAoIXBzZXQucXVpZXQpCi0JCQlmcHJpbnRmKHN0ZGVyciwgXygi JXM6IHdhcm5pbmc6IGV4dHJhIGNvbW1hbmQtbGluZSBhcmd1bWVudCBcIiVzXCIgaWdub3Jl ZFxuIiksCi0JCQkJCXBzZXQucHJvZ25hbWUsIGFyZ3Zbb3B0aW5kXSk7CisJCQlwZ19sb2df d2FybmluZygiZXh0cmEgY29tbWFuZC1saW5lIGFyZ3VtZW50IFwiJXNcIiBpZ25vcmVkIiwK KwkJCQkJCSAgIGFyZ3Zbb3B0aW5kXSk7CiAKIAkJb3B0aW5kKys7CiAJfQpAQCAtNzMzLDcg Kzc1OSw3IEBAIHByb2Nlc3NfcHNxbHJjKGNoYXIgKmFyZ3YwKQogCiAJaWYgKGZpbmRfbXlf ZXhlYyhhcmd2MCwgbXlfZXhlY19wYXRoKSA8IDApCiAJewotCQlmcHJpbnRmKHN0ZGVyciwg XygiJXM6IGNvdWxkIG5vdCBmaW5kIG93biBwcm9ncmFtIGV4ZWN1dGFibGVcbiIpLCBhcmd2 MCk7CisJCXBnX2xvZ19mYXRhbCgiY291bGQgbm90IGZpbmQgb3duIHByb2dyYW0gZXhlY3V0 YWJsZSIpOwogCQlleGl0KEVYSVRfRkFJTFVSRSk7CiAJfQogCmRpZmYgLS1naXQgYS9zcmMv YmluL3BzcWwvdmFyaWFibGVzLmMgYi9zcmMvYmluL3BzcWwvdmFyaWFibGVzLmMKaW5kZXgg ZjA5MzQ0MjY0NC4uYTRhNWVmZTE4YiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL3Zhcmlh Ymxlcy5jCisrKyBiL3NyYy9iaW4vcHNxbC92YXJpYWJsZXMuYwpAQCAtMTAsNiArMTAsOCBA QAogI2luY2x1ZGUgImNvbW1vbi5oIgogI2luY2x1ZGUgInZhcmlhYmxlcy5oIgogCisjaW5j bHVkZSAiZmVfdXRpbHMvbG9nZ2luZy5oIgorCiAKIC8qCiAgKiBDaGVjayB3aGV0aGVyIGEg dmFyaWFibGUncyBuYW1lIGlzIGFsbG93ZWQuCkBAIC0xMzYsNyArMTM4LDcgQEAgUGFyc2VW YXJpYWJsZUJvb2woY29uc3QgY2hhciAqdmFsdWUsIGNvbnN0IGNoYXIgKm5hbWUsIGJvb2wg KnJlc3VsdCkKIAl7CiAJCS8qIHN0cmluZyBpcyBub3QgcmVjb2duaXplZDsgZG9uJ3QgY2xv YmJlciAqcmVzdWx0ICovCiAJCWlmIChuYW1lKQotCQkJcHNxbF9lcnJvcigidW5yZWNvZ25p emVkIHZhbHVlIFwiJXNcIiBmb3IgXCIlc1wiOiBCb29sZWFuIGV4cGVjdGVkXG4iLAorCQkJ cGdfbG9nX2Vycm9yKCJ1bnJlY29nbml6ZWQgdmFsdWUgXCIlc1wiIGZvciBcIiVzXCI6IEJv b2xlYW4gZXhwZWN0ZWQiLAogCQkJCQkgICB2YWx1ZSwgbmFtZSk7CiAJCXZhbGlkID0gZmFs c2U7CiAJfQpAQCAtMTczLDcgKzE3NSw3IEBAIFBhcnNlVmFyaWFibGVOdW0oY29uc3QgY2hh ciAqdmFsdWUsIGNvbnN0IGNoYXIgKm5hbWUsIGludCAqcmVzdWx0KQogCXsKIAkJLyogc3Ry aW5nIGlzIG5vdCByZWNvZ25pemVkOyBkb24ndCBjbG9iYmVyICpyZXN1bHQgKi8KIAkJaWYg KG5hbWUpCi0JCQlwc3FsX2Vycm9yKCJpbnZhbGlkIHZhbHVlIFwiJXNcIiBmb3IgXCIlc1wi OiBpbnRlZ2VyIGV4cGVjdGVkXG4iLAorCQkJcGdfbG9nX2Vycm9yKCJpbnZhbGlkIHZhbHVl IFwiJXNcIiBmb3IgXCIlc1wiOiBpbnRlZ2VyIGV4cGVjdGVkIiwKIAkJCQkJICAgdmFsdWUs IG5hbWUpOwogCQlyZXR1cm4gZmFsc2U7CiAJfQpAQCAtMjIxLDcgKzIyMyw3IEBAIFNldFZh cmlhYmxlKFZhcmlhYmxlU3BhY2Ugc3BhY2UsIGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNo YXIgKnZhbHVlKQogCQkvKiBEZWxldGlvbiBvZiBub24tZXhpc3RlbnQgdmFyaWFibGUgaXMg bm90IGFuIGVycm9yICovCiAJCWlmICghdmFsdWUpCiAJCQlyZXR1cm4gdHJ1ZTsKLQkJcHNx bF9lcnJvcigiaW52YWxpZCB2YXJpYWJsZSBuYW1lOiBcIiVzXCJcbiIsIG5hbWUpOworCQlw Z19sb2dfZXJyb3IoImludmFsaWQgdmFyaWFibGUgbmFtZTogXCIlc1wiIiwgbmFtZSk7CiAJ CXJldHVybiBmYWxzZTsKIAl9CiAKQEAgLTM5MCw2ICszOTIsNyBAQCBEZWxldGVWYXJpYWJs ZShWYXJpYWJsZVNwYWNlIHNwYWNlLCBjb25zdCBjaGFyICpuYW1lKQogdm9pZAogUHNxbFZh ckVudW1FcnJvcihjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICp2YWx1ZSwgY29uc3Qg Y2hhciAqc3VnZ2VzdGlvbnMpCiB7Ci0JcHNxbF9lcnJvcigidW5yZWNvZ25pemVkIHZhbHVl IFwiJXNcIiBmb3IgXCIlc1wiXG5BdmFpbGFibGUgdmFsdWVzIGFyZTogJXMuXG4iLAorCXBn X2xvZ19lcnJvcigidW5yZWNvZ25pemVkIHZhbHVlIFwiJXNcIiBmb3IgXCIlc1wiXG4iCisJ CQkJICJBdmFpbGFibGUgdmFsdWVzIGFyZTogJXMuIiwKIAkJCSAgIHZhbHVlLCBuYW1lLCBz dWdnZXN0aW9ucyk7CiB9CmRpZmYgLS1naXQgYS9zcmMvYmluL3NjcmlwdHMvY2x1c3RlcmRi LmMgYi9zcmMvYmluL3NjcmlwdHMvY2x1c3RlcmRiLmMKaW5kZXggNjUwZDJhZTI2MS4uZTk3 ZjhlZWI0YyAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9zY3JpcHRzL2NsdXN0ZXJkYi5jCisrKyBi L3NyYy9iaW4vc2NyaXB0cy9jbHVzdGVyZGIuYwpAQCAtMTEsNiArMTEsNyBAQAogCiAjaW5j bHVkZSAicG9zdGdyZXNfZmUuaCIKICNpbmNsdWRlICJjb21tb24uaCIKKyNpbmNsdWRlICJm ZV91dGlscy9sb2dnaW5nLmgiCiAjaW5jbHVkZSAiZmVfdXRpbHMvc2ltcGxlX2xpc3QuaCIK ICNpbmNsdWRlICJmZV91dGlscy9zdHJpbmdfdXRpbHMuaCIKIApAQCAtNjQsNiArNjUsNyBA QCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAKIAlwcm9nbmFtZSA9IGdldF9wcm9n bmFtZShhcmd2WzBdKTsKIAlzZXRfcGdsb2NhbGVfcGdzZXJ2aWNlKGFyZ3ZbMF0sIFBHX1RF WFRET01BSU4oInBnc2NyaXB0cyIpKTsKKwlwZ19sb2dnaW5nX2luaXQoYXJndlswXSk7CiAK IAloYW5kbGVfaGVscF92ZXJzaW9uX29wdHMoYXJnYywgYXJndiwgImNsdXN0ZXJkYiIsIGhl bHApOwogCkBAIC0xMjUsOCArMTI3LDggQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltd KQogCiAJaWYgKG9wdGluZCA8IGFyZ2MpCiAJewotCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6 IHRvbyBtYW55IGNvbW1hbmQtbGluZSBhcmd1bWVudHMgKGZpcnN0IGlzIFwiJXNcIilcbiIp LAotCQkJCXByb2duYW1lLCBhcmd2W29wdGluZF0pOworCQlwZ19sb2dfZXJyb3IoInRvbyBt YW55IGNvbW1hbmQtbGluZSBhcmd1bWVudHMgKGZpcnN0IGlzIFwiJXNcIikiLAorCQkJCQkg YXJndltvcHRpbmRdKTsKIAkJZnByaW50ZihzdGRlcnIsIF8oIlRyeSBcIiVzIC0taGVscFwi IGZvciBtb3JlIGluZm9ybWF0aW9uLlxuIiksIHByb2duYW1lKTsKIAkJZXhpdCgxKTsKIAl9 CkBAIC0xMzcsMTUgKzEzOSwxMyBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJ ewogCQlpZiAoZGJuYW1lKQogCQl7Ci0JCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNhbm5v dCBjbHVzdGVyIGFsbCBkYXRhYmFzZXMgYW5kIGEgc3BlY2lmaWMgb25lIGF0IHRoZSBzYW1l IHRpbWVcbiIpLAotCQkJCQlwcm9nbmFtZSk7CisJCQlwZ19sb2dfZXJyb3IoImNhbm5vdCBj bHVzdGVyIGFsbCBkYXRhYmFzZXMgYW5kIGEgc3BlY2lmaWMgb25lIGF0IHRoZSBzYW1lIHRp bWUiKTsKIAkJCWV4aXQoMSk7CiAJCX0KIAogCQlpZiAodGFibGVzLmhlYWQgIT0gTlVMTCkK IAkJewotCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBjYW5ub3QgY2x1c3RlciBzcGVjaWZp YyB0YWJsZShzKSBpbiBhbGwgZGF0YWJhc2VzXG4iKSwKLQkJCQkJcHJvZ25hbWUpOworCQkJ cGdfbG9nX2Vycm9yKCJjYW5ub3QgY2x1c3RlciBzcGVjaWZpYyB0YWJsZShzKSBpbiBhbGwg ZGF0YWJhc2VzIik7CiAJCQlleGl0KDEpOwogCQl9CiAKQEAgLTIxMywxMSArMjEzLDExIEBA IGNsdXN0ZXJfb25lX2RhdGFiYXNlKGNvbnN0IGNoYXIgKmRibmFtZSwgYm9vbCB2ZXJib3Nl LCBjb25zdCBjaGFyICp0YWJsZSwKIAlpZiAoIWV4ZWN1dGVNYWludGVuYW5jZUNvbW1hbmQo Y29ubiwgc3FsLmRhdGEsIGVjaG8pKQogCXsKIAkJaWYgKHRhYmxlKQotCQkJZnByaW50Zihz dGRlcnIsIF8oIiVzOiBjbHVzdGVyaW5nIG9mIHRhYmxlIFwiJXNcIiBpbiBkYXRhYmFzZSBc IiVzXCIgZmFpbGVkOiAlcyIpLAotCQkJCQlwcm9nbmFtZSwgdGFibGUsIFBRZGIoY29ubiks IFBRZXJyb3JNZXNzYWdlKGNvbm4pKTsKKwkJCXBnX2xvZ19lcnJvcigiY2x1c3RlcmluZyBv ZiB0YWJsZSBcIiVzXCIgaW4gZGF0YWJhc2UgXCIlc1wiIGZhaWxlZDogJXMiLAorCQkJCQkJ IHRhYmxlLCBQUWRiKGNvbm4pLCBQUWVycm9yTWVzc2FnZShjb25uKSk7CiAJCWVsc2UKLQkJ CWZwcmludGYoc3RkZXJyLCBfKCIlczogY2x1c3RlcmluZyBvZiBkYXRhYmFzZSBcIiVzXCIg ZmFpbGVkOiAlcyIpLAotCQkJCQlwcm9nbmFtZSwgUFFkYihjb25uKSwgUFFlcnJvck1lc3Nh Z2UoY29ubikpOworCQkJcGdfbG9nX2Vycm9yKCJjbHVzdGVyaW5nIG9mIGRhdGFiYXNlIFwi JXNcIiBmYWlsZWQ6ICVzIiwKKwkJCQkJCSBQUWRiKGNvbm4pLCBQUWVycm9yTWVzc2FnZShj b25uKSk7CiAJCVBRZmluaXNoKGNvbm4pOwogCQlleGl0KDEpOwogCX0KZGlmZiAtLWdpdCBh L3NyYy9iaW4vc2NyaXB0cy9jb21tb24uYyBiL3NyYy9iaW4vc2NyaXB0cy9jb21tb24uYwpp bmRleCBiYTYxMjA3MDZkLi41NGY0OWRjMTA0IDEwMDY0NAotLS0gYS9zcmMvYmluL3Njcmlw dHMvY29tbW9uLmMKKysrIGIvc3JjL2Jpbi9zY3JpcHRzL2NvbW1vbi5jCkBAIC0xOSw2ICsx OSw3IEBACiAKICNpbmNsdWRlICJjb21tb24uaCIKICNpbmNsdWRlICJmZV91dGlscy9jb25u ZWN0LmgiCisjaW5jbHVkZSAiZmVfdXRpbHMvbG9nZ2luZy5oIgogI2luY2x1ZGUgImZlX3V0 aWxzL3N0cmluZ191dGlscy5oIgogCiAKQEAgLTExMyw4ICsxMTQsOCBAQCBjb25uZWN0RGF0 YWJhc2UoY29uc3QgY2hhciAqZGJuYW1lLCBjb25zdCBjaGFyICpwZ2hvc3QsCiAKIAkJaWYg KCFjb25uKQogCQl7Ci0JCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCBjb25u ZWN0IHRvIGRhdGFiYXNlICVzOiBvdXQgb2YgbWVtb3J5XG4iKSwKLQkJCQkJcHJvZ25hbWUs IGRibmFtZSk7CisJCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBjb25uZWN0IHRvIGRhdGFi YXNlICVzOiBvdXQgb2YgbWVtb3J5IiwKKwkJCQkJCSBkYm5hbWUpOwogCQkJZXhpdCgxKTsK IAkJfQogCkBAIC0xNDAsOCArMTQxLDggQEAgY29ubmVjdERhdGFiYXNlKGNvbnN0IGNoYXIg KmRibmFtZSwgY29uc3QgY2hhciAqcGdob3N0LAogCQkJUFFmaW5pc2goY29ubik7CiAJCQly ZXR1cm4gTlVMTDsKIAkJfQotCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCBj b25uZWN0IHRvIGRhdGFiYXNlICVzOiAlcyIpLAotCQkJCXByb2duYW1lLCBkYm5hbWUsIFBR ZXJyb3JNZXNzYWdlKGNvbm4pKTsKKwkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgY29ubmVj dCB0byBkYXRhYmFzZSAlczogJXMiLAorCQkJCQkgZGJuYW1lLCBQUWVycm9yTWVzc2FnZShj b25uKSk7CiAJCWV4aXQoMSk7CiAJfQogCkBAIC0xOTMsMTAgKzE5NCw4IEBAIGV4ZWN1dGVR dWVyeShQR2Nvbm4gKmNvbm4sIGNvbnN0IGNoYXIgKnF1ZXJ5LCBjb25zdCBjaGFyICpwcm9n bmFtZSwgYm9vbCBlY2hvKQogCWlmICghcmVzIHx8CiAJCVBRcmVzdWx0U3RhdHVzKHJlcykg IT0gUEdSRVNfVFVQTEVTX09LKQogCXsKLQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBxdWVy eSBmYWlsZWQ6ICVzIiksCi0JCQkJcHJvZ25hbWUsIFBRZXJyb3JNZXNzYWdlKGNvbm4pKTsK LQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBxdWVyeSB3YXM6ICVzXG4iKSwKLQkJCQlwcm9n bmFtZSwgcXVlcnkpOworCQlwZ19sb2dfZXJyb3IoInF1ZXJ5IGZhaWxlZDogJXMiLCBQUWVy cm9yTWVzc2FnZShjb25uKSk7CisJCXBnX2xvZ19pbmZvKCJxdWVyeSB3YXM6ICVzIiwgcXVl cnkpOwogCQlQUWZpbmlzaChjb25uKTsKIAkJZXhpdCgxKTsKIAl9CkBAIC0yMjEsMTAgKzIy MCw4IEBAIGV4ZWN1dGVDb21tYW5kKFBHY29ubiAqY29ubiwgY29uc3QgY2hhciAqcXVlcnks CiAJaWYgKCFyZXMgfHwKIAkJUFFyZXN1bHRTdGF0dXMocmVzKSAhPSBQR1JFU19DT01NQU5E X09LKQogCXsKLQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBxdWVyeSBmYWlsZWQ6ICVzIiks Ci0JCQkJcHJvZ25hbWUsIFBRZXJyb3JNZXNzYWdlKGNvbm4pKTsKLQkJZnByaW50ZihzdGRl cnIsIF8oIiVzOiBxdWVyeSB3YXM6ICVzXG4iKSwKLQkJCQlwcm9nbmFtZSwgcXVlcnkpOwor CQlwZ19sb2dfZXJyb3IoInF1ZXJ5IGZhaWxlZDogJXMiLCBQUWVycm9yTWVzc2FnZShjb25u KSk7CisJCXBnX2xvZ19pbmZvKCJxdWVyeSB3YXM6ICVzIiwgcXVlcnkpOwogCQlQUWZpbmlz aChjb25uKTsKIAkJZXhpdCgxKTsKIAl9CkBAIC0zNDcsMTEgKzM0NCwxMCBAQCBhcHBlbmRR dWFsaWZpZWRSZWxhdGlvbihQUUV4cEJ1ZmZlciBidWYsIGNvbnN0IGNoYXIgKnNwZWMsCiAJ bnR1cHMgPSBQUW50dXBsZXMocmVzKTsKIAlpZiAobnR1cHMgIT0gMSkKIAl7Ci0JCWZwcmlu dGYoc3RkZXJyLAotCQkJCW5nZXR0ZXh0KCIlczogcXVlcnkgcmV0dXJuZWQgJWQgcm93IGlu c3RlYWQgb2Ygb25lOiAlc1xuIiwKLQkJCQkJCSAiJXM6IHF1ZXJ5IHJldHVybmVkICVkIHJv d3MgaW5zdGVhZCBvZiBvbmU6ICVzXG4iLAotCQkJCQkJIG50dXBzKSwKLQkJCQlwcm9nbmFt ZSwgbnR1cHMsIHNxbC5kYXRhKTsKKwkJcGdfbG9nX2Vycm9yKG5nZXR0ZXh0KCJxdWVyeSBy ZXR1cm5lZCAlZCByb3cgaW5zdGVhZCBvZiBvbmU6ICVzIiwKKwkJCQkJCQkgICJxdWVyeSBy ZXR1cm5lZCAlZCByb3dzIGluc3RlYWQgb2Ygb25lOiAlcyIsCisJCQkJCQkJICBudHVwcyks CisJCQkJCSBudHVwcywgc3FsLmRhdGEpOwogCQlQUWZpbmlzaChjb25uKTsKIAkJZXhpdCgx KTsKIAl9CmRpZmYgLS1naXQgYS9zcmMvYmluL3NjcmlwdHMvY3JlYXRlZGIuYyBiL3NyYy9i aW4vc2NyaXB0cy9jcmVhdGVkYi5jCmluZGV4IGZjMTA4ODgyZTQuLjQxZTRjZWFlM2YgMTAw NjQ0Ci0tLSBhL3NyYy9iaW4vc2NyaXB0cy9jcmVhdGVkYi5jCisrKyBiL3NyYy9iaW4vc2Ny aXB0cy9jcmVhdGVkYi5jCkBAIC0xMiw2ICsxMiw3IEBACiAjaW5jbHVkZSAicG9zdGdyZXNf ZmUuaCIKIAogI2luY2x1ZGUgImNvbW1vbi5oIgorI2luY2x1ZGUgImZlX3V0aWxzL2xvZ2dp bmcuaCIKICNpbmNsdWRlICJmZV91dGlscy9zdHJpbmdfdXRpbHMuaCIKIAogCkBAIC02Niw2 ICs2Nyw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAogCXByb2duYW1lID0g Z2V0X3Byb2duYW1lKGFyZ3ZbMF0pOwogCXNldF9wZ2xvY2FsZV9wZ3NlcnZpY2UoYXJndlsw XSwgUEdfVEVYVERPTUFJTigicGdzY3JpcHRzIikpOworCXBnX2xvZ2dpbmdfaW5pdChhcmd2 WzBdKTsKIAogCWhhbmRsZV9oZWxwX3ZlcnNpb25fb3B0cyhhcmdjLCBhcmd2LCAiY3JlYXRl ZGIiLCBoZWxwKTsKIApAQCAtMTMzLDggKzEzNSw4IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIg KmFyZ3ZbXSkKIAkJCWNvbW1lbnQgPSBhcmd2W29wdGluZCArIDFdOwogCQkJYnJlYWs7CiAJ CWRlZmF1bHQ6Ci0JCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IHRvbyBtYW55IGNvbW1hbmQt bGluZSBhcmd1bWVudHMgKGZpcnN0IGlzIFwiJXNcIilcbiIpLAotCQkJCQlwcm9nbmFtZSwg YXJndltvcHRpbmQgKyAyXSk7CisJCQlwZ19sb2dfZXJyb3IoInRvbyBtYW55IGNvbW1hbmQt bGluZSBhcmd1bWVudHMgKGZpcnN0IGlzIFwiJXNcIikiLAorCQkJCQkJIGFyZ3Zbb3B0aW5k ICsgMl0pOwogCQkJZnByaW50ZihzdGRlcnIsIF8oIlRyeSBcIiVzIC0taGVscFwiIGZvciBt b3JlIGluZm9ybWF0aW9uLlxuIiksIHByb2duYW1lKTsKIAkJCWV4aXQoMSk7CiAJfQpAQCAt MTQzLDE0ICsxNDUsMTIgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCXsKIAkJ aWYgKGxjX2N0eXBlKQogCQl7Ci0JCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IG9ubHkgb25l IG9mIC0tbG9jYWxlIGFuZCAtLWxjLWN0eXBlIGNhbiBiZSBzcGVjaWZpZWRcbiIpLAotCQkJ CQlwcm9nbmFtZSk7CisJCQlwZ19sb2dfZXJyb3IoIm9ubHkgb25lIG9mIC0tbG9jYWxlIGFu ZCAtLWxjLWN0eXBlIGNhbiBiZSBzcGVjaWZpZWQiKTsKIAkJCWV4aXQoMSk7CiAJCX0KIAkJ aWYgKGxjX2NvbGxhdGUpCiAJCXsKLQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczogb25seSBv bmUgb2YgLS1sb2NhbGUgYW5kIC0tbGMtY29sbGF0ZSBjYW4gYmUgc3BlY2lmaWVkXG4iKSwK LQkJCQkJcHJvZ25hbWUpOworCQkJcGdfbG9nX2Vycm9yKCJvbmx5IG9uZSBvZiAtLWxvY2Fs ZSBhbmQgLS1sYy1jb2xsYXRlIGNhbiBiZSBzcGVjaWZpZWQiKTsKIAkJCWV4aXQoMSk7CiAJ CX0KIAkJbGNfY3R5cGUgPSBsb2NhbGU7CkBAIC0xNjEsOCArMTYxLDcgQEAgbWFpbihpbnQg YXJnYywgY2hhciAqYXJndltdKQogCXsKIAkJaWYgKHBnX2NoYXJfdG9fZW5jb2RpbmcoZW5j b2RpbmcpIDwgMCkKIAkJewotCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBcIiVzXCIgaXMg bm90IGEgdmFsaWQgZW5jb2RpbmcgbmFtZVxuIiksCi0JCQkJCXByb2duYW1lLCBlbmNvZGlu Zyk7CisJCQlwZ19sb2dfZXJyb3IoIlwiJXNcIiBpcyBub3QgYSB2YWxpZCBlbmNvZGluZyBu YW1lIiwgZW5jb2RpbmcpOwogCQkJZXhpdCgxKTsKIAkJfQogCX0KQEAgLTIxMCw4ICsyMDks NyBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAKIAlpZiAoUFFyZXN1bHRTdGF0 dXMocmVzdWx0KSAhPSBQR1JFU19DT01NQU5EX09LKQogCXsKLQkJZnByaW50ZihzdGRlcnIs IF8oIiVzOiBkYXRhYmFzZSBjcmVhdGlvbiBmYWlsZWQ6ICVzIiksCi0JCQkJcHJvZ25hbWUs IFBRZXJyb3JNZXNzYWdlKGNvbm4pKTsKKwkJcGdfbG9nX2Vycm9yKCJkYXRhYmFzZSBjcmVh dGlvbiBmYWlsZWQ6ICVzIiwgUFFlcnJvck1lc3NhZ2UoY29ubikpOwogCQlQUWZpbmlzaChj b25uKTsKIAkJZXhpdCgxKTsKIAl9CkBAIC0yMzAsOCArMjI4LDggQEAgbWFpbihpbnQgYXJn YywgY2hhciAqYXJndltdKQogCiAJCWlmIChQUXJlc3VsdFN0YXR1cyhyZXN1bHQpICE9IFBH UkVTX0NPTU1BTkRfT0spCiAJCXsKLQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczogY29tbWVu dCBjcmVhdGlvbiBmYWlsZWQgKGRhdGFiYXNlIHdhcyBjcmVhdGVkKTogJXMiKSwKLQkJCQkJ cHJvZ25hbWUsIFBRZXJyb3JNZXNzYWdlKGNvbm4pKTsKKwkJCXBnX2xvZ19lcnJvcigiY29t bWVudCBjcmVhdGlvbiBmYWlsZWQgKGRhdGFiYXNlIHdhcyBjcmVhdGVkKTogJXMiLAorCQkJ CQkJIFBRZXJyb3JNZXNzYWdlKGNvbm4pKTsKIAkJCVBRZmluaXNoKGNvbm4pOwogCQkJZXhp dCgxKTsKIAkJfQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9zY3JpcHRzL2NyZWF0ZXVzZXIuYyBi L3NyYy9iaW4vc2NyaXB0cy9jcmVhdGV1c2VyLmMKaW5kZXggMzQyMGU2MmZkZC4uNWNhMTUz MzRkMyAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9zY3JpcHRzL2NyZWF0ZXVzZXIuYworKysgYi9z cmMvYmluL3NjcmlwdHMvY3JlYXRldXNlci5jCkBAIC0xMiw2ICsxMiw3IEBACiAKICNpbmNs dWRlICJwb3N0Z3Jlc19mZS5oIgogI2luY2x1ZGUgImNvbW1vbi5oIgorI2luY2x1ZGUgImZl X3V0aWxzL2xvZ2dpbmcuaCIKICNpbmNsdWRlICJmZV91dGlscy9zaW1wbGVfbGlzdC5oIgog I2luY2x1ZGUgImZlX3V0aWxzL3N0cmluZ191dGlscy5oIgogCkBAIC04Myw2ICs4NCw3IEBA IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAogCXByb2duYW1lID0gZ2V0X3Byb2du YW1lKGFyZ3ZbMF0pOwogCXNldF9wZ2xvY2FsZV9wZ3NlcnZpY2UoYXJndlswXSwgUEdfVEVY VERPTUFJTigicGdzY3JpcHRzIikpOworCXBnX2xvZ2dpbmdfaW5pdChhcmd2WzBdKTsKIAog CWhhbmRsZV9oZWxwX3ZlcnNpb25fb3B0cyhhcmdjLCBhcmd2LCAiY3JlYXRldXNlciIsIGhl bHApOwogCkBAIC0xNzYsOCArMTc4LDggQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltd KQogCQkJbmV3dXNlciA9IGFyZ3Zbb3B0aW5kXTsKIAkJCWJyZWFrOwogCQlkZWZhdWx0Ogot CQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiB0b28gbWFueSBjb21tYW5kLWxpbmUgYXJndW1l bnRzIChmaXJzdCBpcyBcIiVzXCIpXG4iKSwKLQkJCQkJcHJvZ25hbWUsIGFyZ3Zbb3B0aW5k ICsgMV0pOworCQkJcGdfbG9nX2Vycm9yKCJ0b28gbWFueSBjb21tYW5kLWxpbmUgYXJndW1l bnRzIChmaXJzdCBpcyBcIiVzXCIpIiwKKwkJCQkJCSBhcmd2W29wdGluZCArIDFdKTsKIAkJ CWZwcmludGYoc3RkZXJyLCBfKCJUcnkgXCIlcyAtLWhlbHBcIiBmb3IgbW9yZSBpbmZvcm1h dGlvbi5cbiIpLCBwcm9nbmFtZSk7CiAJCQlleGl0KDEpOwogCX0KQEAgLTI2OSw4ICsyNzEs OCBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJCQkJCQkJCQkJCQkgICBOVUxM KTsKIAkJaWYgKCFlbmNyeXB0ZWRfcGFzc3dvcmQpCiAJCXsKLQkJCWZwcmludGYoc3RkZXJy LCBfKCIlczogcGFzc3dvcmQgZW5jcnlwdGlvbiBmYWlsZWQ6ICVzIiksCi0JCQkJCXByb2du YW1lLCBQUWVycm9yTWVzc2FnZShjb25uKSk7CisJCQlwZ19sb2dfZXJyb3IoInBhc3N3b3Jk IGVuY3J5cHRpb24gZmFpbGVkOiAlcyIsCisJCQkJCQkgUFFlcnJvck1lc3NhZ2UoY29ubikp OwogCQkJZXhpdCgxKTsKIAkJfQogCQlhcHBlbmRTdHJpbmdMaXRlcmFsQ29ubigmc3FsLCBl bmNyeXB0ZWRfcGFzc3dvcmQsIGNvbm4pOwpAQCAtMzI0LDggKzMyNiw3IEBAIG1haW4oaW50 IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAogCWlmIChQUXJlc3VsdFN0YXR1cyhyZXN1bHQpICE9 IFBHUkVTX0NPTU1BTkRfT0spCiAJewotCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNyZWF0 aW9uIG9mIG5ldyByb2xlIGZhaWxlZDogJXMiKSwKLQkJCQlwcm9nbmFtZSwgUFFlcnJvck1l c3NhZ2UoY29ubikpOworCQlwZ19sb2dfZXJyb3IoImNyZWF0aW9uIG9mIG5ldyByb2xlIGZh aWxlZDogJXMiLCBQUWVycm9yTWVzc2FnZShjb25uKSk7CiAJCVBRZmluaXNoKGNvbm4pOwog CQlleGl0KDEpOwogCX0KZGlmZiAtLWdpdCBhL3NyYy9iaW4vc2NyaXB0cy9kcm9wZGIuYyBi L3NyYy9iaW4vc2NyaXB0cy9kcm9wZGIuYwppbmRleCBiYTAwMzg4OTFkLi5jYTZmZjMyNjJm IDEwMDY0NAotLS0gYS9zcmMvYmluL3NjcmlwdHMvZHJvcGRiLmMKKysrIGIvc3JjL2Jpbi9z Y3JpcHRzL2Ryb3BkYi5jCkBAIC0xMiw2ICsxMiw3IEBACiAKICNpbmNsdWRlICJwb3N0Z3Jl c19mZS5oIgogI2luY2x1ZGUgImNvbW1vbi5oIgorI2luY2x1ZGUgImZlX3V0aWxzL2xvZ2dp bmcuaCIKICNpbmNsdWRlICJmZV91dGlscy9zdHJpbmdfdXRpbHMuaCIKIAogCkBAIC01Niw2 ICs1Nyw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAogCXByb2duYW1lID0g Z2V0X3Byb2duYW1lKGFyZ3ZbMF0pOwogCXNldF9wZ2xvY2FsZV9wZ3NlcnZpY2UoYXJndlsw XSwgUEdfVEVYVERPTUFJTigicGdzY3JpcHRzIikpOworCXBnX2xvZ2dpbmdfaW5pdChhcmd2 WzBdKTsKIAogCWhhbmRsZV9oZWxwX3ZlcnNpb25fb3B0cyhhcmdjLCBhcmd2LCAiZHJvcGRi IiwgaGVscCk7CiAKQEAgLTk5LDE1ICsxMDEsMTUgQEAgbWFpbihpbnQgYXJnYywgY2hhciAq YXJndltdKQogCXN3aXRjaCAoYXJnYyAtIG9wdGluZCkKIAl7CiAJCWNhc2UgMDoKLQkJCWZw cmludGYoc3RkZXJyLCBfKCIlczogbWlzc2luZyByZXF1aXJlZCBhcmd1bWVudCBkYXRhYmFz ZSBuYW1lXG4iKSwgcHJvZ25hbWUpOworCQkJcGdfbG9nX2Vycm9yKCJtaXNzaW5nIHJlcXVp cmVkIGFyZ3VtZW50IGRhdGFiYXNlIG5hbWUiKTsKIAkJCWZwcmludGYoc3RkZXJyLCBfKCJU cnkgXCIlcyAtLWhlbHBcIiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiIpLCBwcm9nbmFtZSk7 CiAJCQlleGl0KDEpOwogCQljYXNlIDE6CiAJCQlkYm5hbWUgPSBhcmd2W29wdGluZF07CiAJ CQlicmVhazsKIAkJZGVmYXVsdDoKLQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczogdG9vIG1h bnkgY29tbWFuZC1saW5lIGFyZ3VtZW50cyAoZmlyc3QgaXMgXCIlc1wiKVxuIiksCi0JCQkJ CXByb2duYW1lLCBhcmd2W29wdGluZCArIDFdKTsKKwkJCXBnX2xvZ19lcnJvcigidG9vIG1h bnkgY29tbWFuZC1saW5lIGFyZ3VtZW50cyAoZmlyc3QgaXMgXCIlc1wiKSIsCisJCQkJCQkg YXJndltvcHRpbmQgKyAxXSk7CiAJCQlmcHJpbnRmKHN0ZGVyciwgXygiVHJ5IFwiJXMgLS1o ZWxwXCIgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4iKSwgcHJvZ25hbWUpOwogCQkJZXhpdCgx KTsKIAl9CkBAIC0xMzcsOCArMTM5LDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltd KQogCXJlc3VsdCA9IFBRZXhlYyhjb25uLCBzcWwuZGF0YSk7CiAJaWYgKFBRcmVzdWx0U3Rh dHVzKHJlc3VsdCkgIT0gUEdSRVNfQ09NTUFORF9PSykKIAl7Ci0JCWZwcmludGYoc3RkZXJy LCBfKCIlczogZGF0YWJhc2UgcmVtb3ZhbCBmYWlsZWQ6ICVzIiksCi0JCQkJcHJvZ25hbWUs IFBRZXJyb3JNZXNzYWdlKGNvbm4pKTsKKwkJcGdfbG9nX2Vycm9yKCJkYXRhYmFzZSByZW1v dmFsIGZhaWxlZDogJXMiLCBQUWVycm9yTWVzc2FnZShjb25uKSk7CiAJCVBRZmluaXNoKGNv bm4pOwogCQlleGl0KDEpOwogCX0KZGlmZiAtLWdpdCBhL3NyYy9iaW4vc2NyaXB0cy9kcm9w dXNlci5jIGIvc3JjL2Jpbi9zY3JpcHRzL2Ryb3B1c2VyLmMKaW5kZXggZDllN2Y3YjAzNi4u MWFlOWE0M2UyMyAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9zY3JpcHRzL2Ryb3B1c2VyLmMKKysr IGIvc3JjL2Jpbi9zY3JpcHRzL2Ryb3B1c2VyLmMKQEAgLTEyLDYgKzEyLDcgQEAKIAogI2lu Y2x1ZGUgInBvc3RncmVzX2ZlLmgiCiAjaW5jbHVkZSAiY29tbW9uLmgiCisjaW5jbHVkZSAi ZmVfdXRpbHMvbG9nZ2luZy5oIgogI2luY2x1ZGUgImZlX3V0aWxzL3N0cmluZ191dGlscy5o IgogCiAKQEAgLTU1LDYgKzU2LDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQog CiAJcHJvZ25hbWUgPSBnZXRfcHJvZ25hbWUoYXJndlswXSk7CiAJc2V0X3BnbG9jYWxlX3Bn c2VydmljZShhcmd2WzBdLCBQR19URVhURE9NQUlOKCJwZ3NjcmlwdHMiKSk7CisJcGdfbG9n Z2luZ19pbml0KGFyZ3ZbMF0pOwogCiAJaGFuZGxlX2hlbHBfdmVyc2lvbl9vcHRzKGFyZ2Ms IGFyZ3YsICJkcm9wdXNlciIsIGhlbHApOwogCkBAIC0xMDAsOCArMTAyLDggQEAgbWFpbihp bnQgYXJnYywgY2hhciAqYXJndltdKQogCQkJZHJvcHVzZXIgPSBhcmd2W29wdGluZF07CiAJ CQlicmVhazsKIAkJZGVmYXVsdDoKLQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczogdG9vIG1h bnkgY29tbWFuZC1saW5lIGFyZ3VtZW50cyAoZmlyc3QgaXMgXCIlc1wiKVxuIiksCi0JCQkJ CXByb2duYW1lLCBhcmd2W29wdGluZCArIDFdKTsKKwkJCXBnX2xvZ19lcnJvcigidG9vIG1h bnkgY29tbWFuZC1saW5lIGFyZ3VtZW50cyAoZmlyc3QgaXMgXCIlc1wiKSIsCisJCQkJCQkg YXJndltvcHRpbmQgKyAxXSk7CiAJCQlmcHJpbnRmKHN0ZGVyciwgXygiVHJ5IFwiJXMgLS1o ZWxwXCIgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4iKSwgcHJvZ25hbWUpOwogCQkJZXhpdCgx KTsKIAl9CkBAIC0xMTYsNyArMTE4LDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltd KQogCQl9CiAJCWVsc2UKIAkJewotCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBtaXNzaW5n IHJlcXVpcmVkIGFyZ3VtZW50IHJvbGUgbmFtZVxuIiksIHByb2duYW1lKTsKKwkJCXBnX2xv Z19lcnJvcigibWlzc2luZyByZXF1aXJlZCBhcmd1bWVudCByb2xlIG5hbWUiKTsKIAkJCWZw cmludGYoc3RkZXJyLCBfKCJUcnkgXCIlcyAtLWhlbHBcIiBmb3IgbW9yZSBpbmZvcm1hdGlv bi5cbiIpLCBwcm9nbmFtZSk7CiAJCQlleGl0KDEpOwogCQl9CkBAIC0xNDIsOCArMTQ0LDgg QEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCiAJaWYgKFBRcmVzdWx0U3RhdHVz KHJlc3VsdCkgIT0gUEdSRVNfQ09NTUFORF9PSykKIAl7Ci0JCWZwcmludGYoc3RkZXJyLCBf KCIlczogcmVtb3ZhbCBvZiByb2xlIFwiJXNcIiBmYWlsZWQ6ICVzIiksCi0JCQkJcHJvZ25h bWUsIGRyb3B1c2VyLCBQUWVycm9yTWVzc2FnZShjb25uKSk7CisJCXBnX2xvZ19lcnJvcigi cmVtb3ZhbCBvZiByb2xlIFwiJXNcIiBmYWlsZWQ6ICVzIiwKKwkJCQkJIGRyb3B1c2VyLCBQ UWVycm9yTWVzc2FnZShjb25uKSk7CiAJCVBRZmluaXNoKGNvbm4pOwogCQlleGl0KDEpOwog CX0KZGlmZiAtLWdpdCBhL3NyYy9iaW4vc2NyaXB0cy9ubHMubWsgYi9zcmMvYmluL3Njcmlw dHMvbmxzLm1rCmluZGV4IDQwMzhjZGIzYjYuLjJjOTlhNmE0NjEgMTAwNjQ0Ci0tLSBhL3Ny Yy9iaW4vc2NyaXB0cy9ubHMubWsKKysrIGIvc3JjL2Jpbi9zY3JpcHRzL25scy5tawpAQCAt MSwxMSArMSwxMyBAQAogIyBzcmMvYmluL3NjcmlwdHMvbmxzLm1rCiBDQVRBTE9HX05BTUUg ICAgID0gcGdzY3JpcHRzCiBBVkFJTF9MQU5HVUFHRVMgID0gY3MgZGUgZXMgZnIgaGUgaXQg amEga28gcGwgcHRfQlIgcnUgc3YgdHIgemhfQ04KLUdFVFRFWFRfRklMRVMgICAgPSBjcmVh dGVkYi5jIGNyZWF0ZXVzZXIuYyBcCitHRVRURVhUX0ZJTEVTICAgID0gJChGUk9OVEVORF9D T01NT05fR0VUVEVYVF9GSUxFUykgXAorICAgICAgICAgICAgICAgICAgIGNyZWF0ZWRiLmMg Y3JlYXRldXNlci5jIFwKICAgICAgICAgICAgICAgICAgICBkcm9wZGIuYyBkcm9wdXNlci5j IFwKICAgICAgICAgICAgICAgICAgICBjbHVzdGVyZGIuYyB2YWN1dW1kYi5jIHJlaW5kZXhk Yi5jIFwKICAgICAgICAgICAgICAgICAgICBwZ19pc3JlYWR5LmMgXAogICAgICAgICAgICAg ICAgICAgIGNvbW1vbi5jIFwKICAgICAgICAgICAgICAgICAgICAuLi8uLi9mZV91dGlscy9w cmludC5jIFwKICAgICAgICAgICAgICAgICAgICAuLi8uLi9jb21tb24vZmVfbWVtdXRpbHMu YyAuLi8uLi9jb21tb24vdXNlcm5hbWUuYwotR0VUVEVYVF9UUklHR0VSUyA9IHNpbXBsZV9w cm9tcHQgeWVzbm9fcHJvbXB0CitHRVRURVhUX1RSSUdHRVJTID0gJChGUk9OVEVORF9DT01N T05fR0VUVEVYVF9UUklHR0VSUykgc2ltcGxlX3Byb21wdCB5ZXNub19wcm9tcHQKK0dFVFRF WFRfRkxBR1MgICAgPSAkKEZST05URU5EX0NPTU1PTl9HRVRURVhUX0ZMQUdTKQpkaWZmIC0t Z2l0IGEvc3JjL2Jpbi9zY3JpcHRzL3BnX2lzcmVhZHkuYyBiL3NyYy9iaW4vc2NyaXB0cy9w Z19pc3JlYWR5LmMKaW5kZXggZjdhZDdiNDBmMC4uZmI4YTBlN2Q4ZiAxMDA2NDQKLS0tIGEv c3JjL2Jpbi9zY3JpcHRzL3BnX2lzcmVhZHkuYworKysgYi9zcmMvYmluL3NjcmlwdHMvcGdf aXNyZWFkeS5jCkBAIC0xMSw2ICsxMSw3IEBACiAKICNpbmNsdWRlICJwb3N0Z3Jlc19mZS5o IgogI2luY2x1ZGUgImNvbW1vbi5oIgorI2luY2x1ZGUgImZlX3V0aWxzL2xvZ2dpbmcuaCIK IAogI2RlZmluZSBERUZBVUxUX0NPTk5FQ1RfVElNRU9VVCAiMyIKIApAQCAtNjUsNiArNjYs NyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAogCXByb2duYW1lID0gZ2V0X3By b2duYW1lKGFyZ3ZbMF0pOwogCXNldF9wZ2xvY2FsZV9wZ3NlcnZpY2UoYXJndlswXSwgUEdf VEVYVERPTUFJTigicGdzY3JpcHRzIikpOworCXBnX2xvZ2dpbmdfaW5pdChhcmd2WzBdKTsK IAloYW5kbGVfaGVscF92ZXJzaW9uX29wdHMoYXJnYywgYXJndiwgcHJvZ25hbWUsIGhlbHAp OwogCiAJd2hpbGUgKChjID0gZ2V0b3B0X2xvbmcoYXJnYywgYXJndiwgImQ6aDpwOnF0OlU6 IiwgbG9uZ19vcHRpb25zLCBOVUxMKSkgIT0gLTEpCkBAIC0xMDIsOCArMTA0LDggQEAgbWFp bihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAKIAlpZiAob3B0aW5kIDwgYXJnYykKIAl7Ci0J CWZwcmludGYoc3RkZXJyLCBfKCIlczogdG9vIG1hbnkgY29tbWFuZC1saW5lIGFyZ3VtZW50 cyAoZmlyc3QgaXMgXCIlc1wiKVxuIiksCi0JCQkJcHJvZ25hbWUsIGFyZ3Zbb3B0aW5kXSk7 CisJCXBnX2xvZ19lcnJvcigidG9vIG1hbnkgY29tbWFuZC1saW5lIGFyZ3VtZW50cyAoZmly c3QgaXMgXCIlc1wiKSIsCisJCQkJCSBhcmd2W29wdGluZF0pOwogCQlmcHJpbnRmKHN0ZGVy ciwgXygiVHJ5IFwiJXMgLS1oZWxwXCIgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4iKSwgcHJv Z25hbWUpOwogCiAJCS8qCkBAIC0xMzksNyArMTQxLDcgQEAgbWFpbihpbnQgYXJnYywgY2hh ciAqKmFyZ3YpCiAJCW9wdHMgPSBQUWNvbm5pbmZvUGFyc2UocGdkYm5hbWUsICZlcnJtc2cp OwogCQlpZiAob3B0cyA9PSBOVUxMKQogCQl7Ci0JCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6 ICVzIiksIHByb2duYW1lLCBlcnJtc2cpOworCQkJcGdfbG9nX2Vycm9yKCIlcyIsIGVycm1z Zyk7CiAJCQlleGl0KFBRUElOR19OT19BVFRFTVBUKTsKIAkJfQogCX0KQEAgLTE0Nyw3ICsx NDksNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAlkZWZzID0gUFFjb25uZGVm YXVsdHMoKTsKIAlpZiAoZGVmcyA9PSBOVUxMKQogCXsKLQkJZnByaW50ZihzdGRlcnIsIF8o IiVzOiBjb3VsZCBub3QgZmV0Y2ggZGVmYXVsdCBvcHRpb25zXG4iKSwgcHJvZ25hbWUpOwor CQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBmZXRjaCBkZWZhdWx0IG9wdGlvbnMiKTsKIAkJ ZXhpdChQUVBJTkdfTk9fQVRURU1QVCk7CiAJfQogCmRpZmYgLS1naXQgYS9zcmMvYmluL3Nj cmlwdHMvcmVpbmRleGRiLmMgYi9zcmMvYmluL3NjcmlwdHMvcmVpbmRleGRiLmMKaW5kZXgg YmUxYzA2ZWJiZC4uMDYyM2Q0Y2YyNCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9zY3JpcHRzL3Jl aW5kZXhkYi5jCisrKyBiL3NyYy9iaW4vc2NyaXB0cy9yZWluZGV4ZGIuYwpAQCAtMTEsNiAr MTEsNyBAQAogCiAjaW5jbHVkZSAicG9zdGdyZXNfZmUuaCIKICNpbmNsdWRlICJjb21tb24u aCIKKyNpbmNsdWRlICJmZV91dGlscy9sb2dnaW5nLmgiCiAjaW5jbHVkZSAiZmVfdXRpbHMv c2ltcGxlX2xpc3QuaCIKICNpbmNsdWRlICJmZV91dGlscy9zdHJpbmdfdXRpbHMuaCIKIApA QCAtNzQsNiArNzUsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAKIAlwcm9n bmFtZSA9IGdldF9wcm9nbmFtZShhcmd2WzBdKTsKIAlzZXRfcGdsb2NhbGVfcGdzZXJ2aWNl KGFyZ3ZbMF0sIFBHX1RFWFRET01BSU4oInBnc2NyaXB0cyIpKTsKKwlwZ19sb2dnaW5nX2lu aXQoYXJndlswXSk7CiAKIAloYW5kbGVfaGVscF92ZXJzaW9uX29wdHMoYXJnYywgYXJndiwg InJlaW5kZXhkYiIsIGhlbHApOwogCkBAIC0xNDUsOCArMTQ3LDggQEAgbWFpbihpbnQgYXJn YywgY2hhciAqYXJndltdKQogCiAJaWYgKG9wdGluZCA8IGFyZ2MpCiAJewotCQlmcHJpbnRm KHN0ZGVyciwgXygiJXM6IHRvbyBtYW55IGNvbW1hbmQtbGluZSBhcmd1bWVudHMgKGZpcnN0 IGlzIFwiJXNcIilcbiIpLAotCQkJCXByb2duYW1lLCBhcmd2W29wdGluZF0pOworCQlwZ19s b2dfZXJyb3IoInRvbyBtYW55IGNvbW1hbmQtbGluZSBhcmd1bWVudHMgKGZpcnN0IGlzIFwi JXNcIikiLAorCQkJCQkgYXJndltvcHRpbmRdKTsKIAkJZnByaW50ZihzdGRlcnIsIF8oIlRy eSBcIiVzIC0taGVscFwiIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuIiksIHByb2duYW1lKTsK IAkJZXhpdCgxKTsKIAl9CkBAIC0xNTcsMjcgKzE1OSwyNyBAQCBtYWluKGludCBhcmdjLCBj aGFyICphcmd2W10pCiAJewogCQlpZiAoZGJuYW1lKQogCQl7Ci0JCQlmcHJpbnRmKHN0ZGVy ciwgXygiJXM6IGNhbm5vdCByZWluZGV4IGFsbCBkYXRhYmFzZXMgYW5kIGEgc3BlY2lmaWMg b25lIGF0IHRoZSBzYW1lIHRpbWVcbiIpLCBwcm9nbmFtZSk7CisJCQlwZ19sb2dfZXJyb3Io ImNhbm5vdCByZWluZGV4IGFsbCBkYXRhYmFzZXMgYW5kIGEgc3BlY2lmaWMgb25lIGF0IHRo ZSBzYW1lIHRpbWUiKTsKIAkJCWV4aXQoMSk7CiAJCX0KIAkJaWYgKHN5c2NhdGFsb2cpCiAJ CXsKLQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczogY2Fubm90IHJlaW5kZXggYWxsIGRhdGFi YXNlcyBhbmQgc3lzdGVtIGNhdGFsb2dzIGF0IHRoZSBzYW1lIHRpbWVcbiIpLCBwcm9nbmFt ZSk7CisJCQlwZ19sb2dfZXJyb3IoImNhbm5vdCByZWluZGV4IGFsbCBkYXRhYmFzZXMgYW5k IHN5c3RlbSBjYXRhbG9ncyBhdCB0aGUgc2FtZSB0aW1lIik7CiAJCQlleGl0KDEpOwogCQl9 CiAJCWlmIChzY2hlbWFzLmhlYWQgIT0gTlVMTCkKIAkJewotCQkJZnByaW50ZihzdGRlcnIs IF8oIiVzOiBjYW5ub3QgcmVpbmRleCBzcGVjaWZpYyBzY2hlbWEocykgaW4gYWxsIGRhdGFi YXNlc1xuIiksIHByb2duYW1lKTsKKwkJCXBnX2xvZ19lcnJvcigiY2Fubm90IHJlaW5kZXgg c3BlY2lmaWMgc2NoZW1hKHMpIGluIGFsbCBkYXRhYmFzZXMiKTsKIAkJCWV4aXQoMSk7CiAJ CX0KIAkJaWYgKHRhYmxlcy5oZWFkICE9IE5VTEwpCiAJCXsKLQkJCWZwcmludGYoc3RkZXJy LCBfKCIlczogY2Fubm90IHJlaW5kZXggc3BlY2lmaWMgdGFibGUocykgaW4gYWxsIGRhdGFi YXNlc1xuIiksIHByb2duYW1lKTsKKwkJCXBnX2xvZ19lcnJvcigiY2Fubm90IHJlaW5kZXgg c3BlY2lmaWMgdGFibGUocykgaW4gYWxsIGRhdGFiYXNlcyIpOwogCQkJZXhpdCgxKTsKIAkJ fQogCQlpZiAoaW5kZXhlcy5oZWFkICE9IE5VTEwpCiAJCXsKLQkJCWZwcmludGYoc3RkZXJy LCBfKCIlczogY2Fubm90IHJlaW5kZXggc3BlY2lmaWMgaW5kZXgoZXMpIGluIGFsbCBkYXRh YmFzZXNcbiIpLCBwcm9nbmFtZSk7CisJCQlwZ19sb2dfZXJyb3IoImNhbm5vdCByZWluZGV4 IHNwZWNpZmljIGluZGV4KGVzKSBpbiBhbGwgZGF0YWJhc2VzIik7CiAJCQlleGl0KDEpOwog CQl9CiAKQEAgLTE4OCwxNyArMTkwLDE3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3Zb XSkKIAl7CiAJCWlmIChzY2hlbWFzLmhlYWQgIT0gTlVMTCkKIAkJewotCQkJZnByaW50Zihz dGRlcnIsIF8oIiVzOiBjYW5ub3QgcmVpbmRleCBzcGVjaWZpYyBzY2hlbWEocykgYW5kIHN5 c3RlbSBjYXRhbG9ncyBhdCB0aGUgc2FtZSB0aW1lXG4iKSwgcHJvZ25hbWUpOworCQkJcGdf bG9nX2Vycm9yKCJjYW5ub3QgcmVpbmRleCBzcGVjaWZpYyBzY2hlbWEocykgYW5kIHN5c3Rl bSBjYXRhbG9ncyBhdCB0aGUgc2FtZSB0aW1lIik7CiAJCQlleGl0KDEpOwogCQl9CiAJCWlm ICh0YWJsZXMuaGVhZCAhPSBOVUxMKQogCQl7Ci0JCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6 IGNhbm5vdCByZWluZGV4IHNwZWNpZmljIHRhYmxlKHMpIGFuZCBzeXN0ZW0gY2F0YWxvZ3Mg YXQgdGhlIHNhbWUgdGltZVxuIiksIHByb2duYW1lKTsKKwkJCXBnX2xvZ19lcnJvcigiY2Fu bm90IHJlaW5kZXggc3BlY2lmaWMgdGFibGUocykgYW5kIHN5c3RlbSBjYXRhbG9ncyBhdCB0 aGUgc2FtZSB0aW1lIik7CiAJCQlleGl0KDEpOwogCQl9CiAJCWlmIChpbmRleGVzLmhlYWQg IT0gTlVMTCkKIAkJewotCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBjYW5ub3QgcmVpbmRl eCBzcGVjaWZpYyBpbmRleChlcykgYW5kIHN5c3RlbSBjYXRhbG9ncyBhdCB0aGUgc2FtZSB0 aW1lXG4iKSwgcHJvZ25hbWUpOworCQkJcGdfbG9nX2Vycm9yKCJjYW5ub3QgcmVpbmRleCBz cGVjaWZpYyBpbmRleChlcykgYW5kIHN5c3RlbSBjYXRhbG9ncyBhdCB0aGUgc2FtZSB0aW1l Iik7CiAJCQlleGl0KDEpOwogCQl9CiAKQEAgLTMwNSwxNyArMzA3LDE3IEBAIHJlaW5kZXhf b25lX2RhdGFiYXNlKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKmRibmFtZSwgY29u c3QgY2hhciAqdHlwZSwKIAlpZiAoIWV4ZWN1dGVNYWludGVuYW5jZUNvbW1hbmQoY29ubiwg c3FsLmRhdGEsIGVjaG8pKQogCXsKIAkJaWYgKHN0cmNtcCh0eXBlLCAiVEFCTEUiKSA9PSAw KQotCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiByZWluZGV4aW5nIG9mIHRhYmxlIFwiJXNc IiBpbiBkYXRhYmFzZSBcIiVzXCIgZmFpbGVkOiAlcyIpLAotCQkJCQlwcm9nbmFtZSwgbmFt ZSwgUFFkYihjb25uKSwgUFFlcnJvck1lc3NhZ2UoY29ubikpOworCQkJcGdfbG9nX2Vycm9y KCJyZWluZGV4aW5nIG9mIHRhYmxlIFwiJXNcIiBpbiBkYXRhYmFzZSBcIiVzXCIgZmFpbGVk OiAlcyIsCisJCQkJCQkgbmFtZSwgUFFkYihjb25uKSwgUFFlcnJvck1lc3NhZ2UoY29ubikp OwogCQlpZiAoc3RyY21wKHR5cGUsICJJTkRFWCIpID09IDApCi0JCQlmcHJpbnRmKHN0ZGVy ciwgXygiJXM6IHJlaW5kZXhpbmcgb2YgaW5kZXggXCIlc1wiIGluIGRhdGFiYXNlIFwiJXNc IiBmYWlsZWQ6ICVzIiksCi0JCQkJCXByb2duYW1lLCBuYW1lLCBQUWRiKGNvbm4pLCBQUWVy cm9yTWVzc2FnZShjb25uKSk7CisJCQlwZ19sb2dfZXJyb3IoInJlaW5kZXhpbmcgb2YgaW5k ZXggXCIlc1wiIGluIGRhdGFiYXNlIFwiJXNcIiBmYWlsZWQ6ICVzIiwKKwkJCQkJCSBuYW1l LCBQUWRiKGNvbm4pLCBQUWVycm9yTWVzc2FnZShjb25uKSk7CiAJCWlmIChzdHJjbXAodHlw ZSwgIlNDSEVNQSIpID09IDApCi0JCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IHJlaW5kZXhp bmcgb2Ygc2NoZW1hIFwiJXNcIiBpbiBkYXRhYmFzZSBcIiVzXCIgZmFpbGVkOiAlcyIpLAot CQkJCQlwcm9nbmFtZSwgbmFtZSwgUFFkYihjb25uKSwgUFFlcnJvck1lc3NhZ2UoY29ubikp OworCQkJcGdfbG9nX2Vycm9yKCJyZWluZGV4aW5nIG9mIHNjaGVtYSBcIiVzXCIgaW4gZGF0 YWJhc2UgXCIlc1wiIGZhaWxlZDogJXMiLAorCQkJCQkJIG5hbWUsIFBRZGIoY29ubiksIFBR ZXJyb3JNZXNzYWdlKGNvbm4pKTsKIAkJZWxzZQotCQkJZnByaW50ZihzdGRlcnIsIF8oIiVz OiByZWluZGV4aW5nIG9mIGRhdGFiYXNlIFwiJXNcIiBmYWlsZWQ6ICVzIiksCi0JCQkJCXBy b2duYW1lLCBQUWRiKGNvbm4pLCBQUWVycm9yTWVzc2FnZShjb25uKSk7CisJCQlwZ19sb2df ZXJyb3IoInJlaW5kZXhpbmcgb2YgZGF0YWJhc2UgXCIlc1wiIGZhaWxlZDogJXMiLAorCQkJ CQkJIFBRZGIoY29ubiksIFBRZXJyb3JNZXNzYWdlKGNvbm4pKTsKIAkJUFFmaW5pc2goY29u bik7CiAJCWV4aXQoMSk7CiAJfQpAQCAtMzg2LDggKzM4OCw4IEBAIHJlaW5kZXhfc3lzdGVt X2NhdGFsb2dzKGNvbnN0IGNoYXIgKmRibmFtZSwgY29uc3QgY2hhciAqaG9zdCwgY29uc3Qg Y2hhciAqcG9ydCwKIAogCWlmICghZXhlY3V0ZU1haW50ZW5hbmNlQ29tbWFuZChjb25uLCBz cWwuZGF0YSwgZWNobykpCiAJewotCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IHJlaW5kZXhp bmcgb2Ygc3lzdGVtIGNhdGFsb2dzIGZhaWxlZDogJXMiKSwKLQkJCQlwcm9nbmFtZSwgUFFl cnJvck1lc3NhZ2UoY29ubikpOworCQlwZ19sb2dfZXJyb3IoInJlaW5kZXhpbmcgb2Ygc3lz dGVtIGNhdGFsb2dzIGZhaWxlZDogJXMiLAorCQkJCQkgUFFlcnJvck1lc3NhZ2UoY29ubikp OwogCQlQUWZpbmlzaChjb25uKTsKIAkJZXhpdCgxKTsKIAl9CmRpZmYgLS1naXQgYS9zcmMv YmluL3NjcmlwdHMvdmFjdXVtZGIuYyBiL3NyYy9iaW4vc2NyaXB0cy92YWN1dW1kYi5jCmlu ZGV4IGJjZWE5ZTU1NmQuLjU0MTc3NWY4MmYgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vc2NyaXB0 cy92YWN1dW1kYi5jCisrKyBiL3NyYy9iaW4vc2NyaXB0cy92YWN1dW1kYi5jCkBAIC0xOSw2 ICsxOSw3IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19jbGFzc19kLmgiCiAKICNpbmNsdWRl ICJjb21tb24uaCIKKyNpbmNsdWRlICJmZV91dGlscy9sb2dnaW5nLmgiCiAjaW5jbHVkZSAi ZmVfdXRpbHMvc2ltcGxlX2xpc3QuaCIKICNpbmNsdWRlICJmZV91dGlscy9zdHJpbmdfdXRp bHMuaCIKIApAQCAtMTM3LDYgKzEzOCw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3Zb XSkKIAlwcm9nbmFtZSA9IGdldF9wcm9nbmFtZShhcmd2WzBdKTsKIAogCXNldF9wZ2xvY2Fs ZV9wZ3NlcnZpY2UoYXJndlswXSwgUEdfVEVYVERPTUFJTigicGdzY3JpcHRzIikpOworCXBn X2xvZ2dpbmdfaW5pdChhcmd2WzBdKTsKIAogCWhhbmRsZV9oZWxwX3ZlcnNpb25fb3B0cyhh cmdjLCBhcmd2LCAidmFjdXVtZGIiLCBoZWxwKTsKIApAQCAtMTk2LDE0ICsxOTgsMTMgQEAg bWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCQkJCWNvbmN1cnJlbnRDb25zID0gYXRv aShvcHRhcmcpOwogCQkJCWlmIChjb25jdXJyZW50Q29ucyA8PSAwKQogCQkJCXsKLQkJCQkJ ZnByaW50ZihzdGRlcnIsIF8oIiVzOiBudW1iZXIgb2YgcGFyYWxsZWwgam9icyBtdXN0IGJl IGF0IGxlYXN0IDFcbiIpLAotCQkJCQkJCXByb2duYW1lKTsKKwkJCQkJcGdfbG9nX2Vycm9y KCJudW1iZXIgb2YgcGFyYWxsZWwgam9icyBtdXN0IGJlIGF0IGxlYXN0IDEiKTsKIAkJCQkJ ZXhpdCgxKTsKIAkJCQl9CiAJCQkJaWYgKGNvbmN1cnJlbnRDb25zID4gRkRfU0VUU0laRSAt IDEpCiAJCQkJewotCQkJCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IHRvbyBtYW55IHBhcmFs bGVsIGpvYnMgcmVxdWVzdGVkIChtYXhpbXVtOiAlZClcbiIpLAotCQkJCQkJCXByb2duYW1l LCBGRF9TRVRTSVpFIC0gMSk7CisJCQkJCXBnX2xvZ19lcnJvcigidG9vIG1hbnkgcGFyYWxs ZWwgam9icyByZXF1ZXN0ZWQgKG1heGltdW06ICVkKSIsCisJCQkJCQkJCSBGRF9TRVRTSVpF IC0gMSk7CiAJCQkJCWV4aXQoMSk7CiAJCQkJfQogCQkJCWJyZWFrOwpAQCAtMjMxLDggKzIz Miw4IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAogCWlmIChvcHRpbmQgPCBh cmdjKQogCXsKLQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiB0b28gbWFueSBjb21tYW5kLWxp bmUgYXJndW1lbnRzIChmaXJzdCBpcyBcIiVzXCIpXG4iKSwKLQkJCQlwcm9nbmFtZSwgYXJn dltvcHRpbmRdKTsKKwkJcGdfbG9nX2Vycm9yKCJ0b28gbWFueSBjb21tYW5kLWxpbmUgYXJn dW1lbnRzIChmaXJzdCBpcyBcIiVzXCIpIiwKKwkJCQkJIGFyZ3Zbb3B0aW5kXSk7CiAJCWZw cmludGYoc3RkZXJyLCBfKCJUcnkgXCIlcyAtLWhlbHBcIiBmb3IgbW9yZSBpbmZvcm1hdGlv bi5cbiIpLCBwcm9nbmFtZSk7CiAJCWV4aXQoMSk7CiAJfQpAQCAtMjQxLDE0ICsyNDIsMTQg QEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCXsKIAkJaWYgKHZhY29wdHMuZnVs bCkKIAkJewotCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBjYW5ub3QgdXNlIHRoZSBcIiVz XCIgb3B0aW9uIHdoZW4gcGVyZm9ybWluZyBvbmx5IGFuYWx5emVcbiIpLAotCQkJCQlwcm9n bmFtZSwgImZ1bGwiKTsKKwkJCXBnX2xvZ19lcnJvcigiY2Fubm90IHVzZSB0aGUgXCIlc1wi IG9wdGlvbiB3aGVuIHBlcmZvcm1pbmcgb25seSBhbmFseXplIiwKKwkJCQkJCSAiZnVsbCIp OwogCQkJZXhpdCgxKTsKIAkJfQogCQlpZiAodmFjb3B0cy5mcmVlemUpCiAJCXsKLQkJCWZw cmludGYoc3RkZXJyLCBfKCIlczogY2Fubm90IHVzZSB0aGUgXCIlc1wiIG9wdGlvbiB3aGVu IHBlcmZvcm1pbmcgb25seSBhbmFseXplXG4iKSwKLQkJCQkJcHJvZ25hbWUsICJmcmVlemUi KTsKKwkJCXBnX2xvZ19lcnJvcigiY2Fubm90IHVzZSB0aGUgXCIlc1wiIG9wdGlvbiB3aGVu IHBlcmZvcm1pbmcgb25seSBhbmFseXplIiwKKwkJCQkJCSAiZnJlZXplIik7CiAJCQlleGl0 KDEpOwogCQl9CiAJCS8qIGFsbG93ICdhbmRfYW5hbHl6ZScgd2l0aCAnYW5hbHl6ZV9vbmx5 JyAqLwpAQCAtMjY0LDE0ICsyNjUsMTIgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltd KQogCXsKIAkJaWYgKGRibmFtZSkKIAkJewotCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBj YW5ub3QgdmFjdXVtIGFsbCBkYXRhYmFzZXMgYW5kIGEgc3BlY2lmaWMgb25lIGF0IHRoZSBz YW1lIHRpbWVcbiIpLAotCQkJCQlwcm9nbmFtZSk7CisJCQlwZ19sb2dfZXJyb3IoImNhbm5v dCB2YWN1dW0gYWxsIGRhdGFiYXNlcyBhbmQgYSBzcGVjaWZpYyBvbmUgYXQgdGhlIHNhbWUg dGltZSIpOwogCQkJZXhpdCgxKTsKIAkJfQogCQlpZiAodGFibGVzLmhlYWQgIT0gTlVMTCkK IAkJewotCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBjYW5ub3QgdmFjdXVtIHNwZWNpZmlj IHRhYmxlKHMpIGluIGFsbCBkYXRhYmFzZXNcbiIpLAotCQkJCQlwcm9nbmFtZSk7CisJCQlw Z19sb2dfZXJyb3IoImNhbm5vdCB2YWN1dW0gc3BlY2lmaWMgdGFibGUocykgaW4gYWxsIGRh dGFiYXNlcyIpOwogCQkJZXhpdCgxKTsKIAkJfQogCkBAIC03MjAsMTIgKzcxOSwxMSBAQCBy dW5fdmFjdXVtX2NvbW1hbmQoUEdjb25uICpjb25uLCBjb25zdCBjaGFyICpzcWwsIGJvb2wg ZWNobywKIAlpZiAoIXN0YXR1cykKIAl7CiAJCWlmICh0YWJsZSkKLQkJCWZwcmludGYoc3Rk ZXJyLAotCQkJCQlfKCIlczogdmFjdXVtaW5nIG9mIHRhYmxlIFwiJXNcIiBpbiBkYXRhYmFz ZSBcIiVzXCIgZmFpbGVkOiAlcyIpLAotCQkJCQlwcm9nbmFtZSwgdGFibGUsIFBRZGIoY29u biksIFBRZXJyb3JNZXNzYWdlKGNvbm4pKTsKKwkJCXBnX2xvZ19lcnJvcigidmFjdXVtaW5n IG9mIHRhYmxlIFwiJXNcIiBpbiBkYXRhYmFzZSBcIiVzXCIgZmFpbGVkOiAlcyIsCisJCQkJ CQkgdGFibGUsIFBRZGIoY29ubiksIFBRZXJyb3JNZXNzYWdlKGNvbm4pKTsKIAkJZWxzZQot CQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiB2YWN1dW1pbmcgb2YgZGF0YWJhc2UgXCIlc1wi IGZhaWxlZDogJXMiKSwKLQkJCQkJcHJvZ25hbWUsIFBRZGIoY29ubiksIFBRZXJyb3JNZXNz YWdlKGNvbm4pKTsKKwkJCXBnX2xvZ19lcnJvcigidmFjdXVtaW5nIG9mIGRhdGFiYXNlIFwi JXNcIiBmYWlsZWQ6ICVzIiwKKwkJCQkJCSBQUWRiKGNvbm4pLCBQUWVycm9yTWVzc2FnZShj b25uKSk7CiAKIAkJaWYgKCFhc3luYykKIAkJewpAQCAtODU5LDggKzg1Nyw4IEBAIFByb2Nl c3NRdWVyeVJlc3VsdChQR2Nvbm4gKmNvbm4sIFBHcmVzdWx0ICpyZXN1bHQsIGNvbnN0IGNo YXIgKnByb2duYW1lKQogCXsKIAkJY2hhcgkgICAqc3FsU3RhdGUgPSBQUXJlc3VsdEVycm9y RmllbGQocmVzdWx0LCBQR19ESUFHX1NRTFNUQVRFKTsKIAotCQlmcHJpbnRmKHN0ZGVyciwg XygiJXM6IHZhY3V1bWluZyBvZiBkYXRhYmFzZSBcIiVzXCIgZmFpbGVkOiAlcyIpLAotCQkJ CXByb2duYW1lLCBQUWRiKGNvbm4pLCBQUWVycm9yTWVzc2FnZShjb25uKSk7CisJCXBnX2xv Z19lcnJvcigidmFjdXVtaW5nIG9mIGRhdGFiYXNlIFwiJXNcIiBmYWlsZWQ6ICVzIiwKKwkJ CQkJIFBRZGIoY29ubiksIFBRZXJyb3JNZXNzYWdlKGNvbm4pKTsKIAogCQlpZiAoc3FsU3Rh dGUgJiYgc3RyY21wKHNxbFN0YXRlLCBFUlJDT0RFX1VOREVGSU5FRF9UQUJMRSkgIT0gMCkK IAkJewpkaWZmIC0tZ2l0IGEvc3JjL2NvbW1vbi9jb250cm9sZGF0YV91dGlscy5jIGIvc3Jj L2NvbW1vbi9jb250cm9sZGF0YV91dGlscy5jCmluZGV4IGUyNGFmNDhmNTIuLmNjOTAyNGU5 NzMgMTAwNjQ0Ci0tLSBhL3NyYy9jb21tb24vY29udHJvbGRhdGFfdXRpbHMuYworKysgYi9z cmMvY29tbW9uL2NvbnRyb2xkYXRhX3V0aWxzLmMKQEAgLTI2LDEwICsyNiwxMyBAQAogCiAj aW5jbHVkZSAiY2F0YWxvZy9wZ19jb250cm9sLmgiCiAjaW5jbHVkZSAiY29tbW9uL2NvbnRy b2xkYXRhX3V0aWxzLmgiCisjaWZkZWYgRlJPTlRFTkQKKyNpbmNsdWRlICJmZV91dGlscy9s b2dnaW5nLmgiCisjZW5kaWYKICNpbmNsdWRlICJwb3J0L3BnX2NyYzMyYy5oIgogCiAvKgot ICogZ2V0X2NvbnRyb2xmaWxlKGNoYXIgKkRhdGFEaXIsIGNvbnN0IGNoYXIgKnByb2duYW1l LCBib29sICpjcmNfb2tfcCkKKyAqIGdldF9jb250cm9sZmlsZShjaGFyICpEYXRhRGlyLCBi b29sICpjcmNfb2tfcCkKICAqCiAgKiBHZXQgY29udHJvbGZpbGUgdmFsdWVzLiAgVGhlIHJl c3VsdCBpcyByZXR1cm5lZCBhcyBhIHBhbGxvYydkIGNvcHkgb2YgdGhlCiAgKiBjb250cm9s IGZpbGUgZGF0YS4KQEAgLTM4LDcgKzQxLDcgQEAKICAqIGZpbGUgZGF0YSBpcyBjb3JyZWN0 LgogICovCiBDb250cm9sRmlsZURhdGEgKgotZ2V0X2NvbnRyb2xmaWxlKGNvbnN0IGNoYXIg KkRhdGFEaXIsIGNvbnN0IGNoYXIgKnByb2duYW1lLCBib29sICpjcmNfb2tfcCkKK2dldF9j b250cm9sZmlsZShjb25zdCBjaGFyICpEYXRhRGlyLCBib29sICpjcmNfb2tfcCkKIHsKIAlD b250cm9sRmlsZURhdGEgKkNvbnRyb2xGaWxlOwogCWludAkJCWZkOwpAQCAtNTksOCArNjIs OCBAQCBnZXRfY29udHJvbGZpbGUoY29uc3QgY2hhciAqRGF0YURpciwgY29uc3QgY2hhciAq cHJvZ25hbWUsIGJvb2wgKmNyY19va19wKQogCQkJCQkJQ29udHJvbEZpbGVQYXRoKSkpOwog I2Vsc2UKIAl7Ci0JCWZwcmludGYoc3RkZXJyLCBfKCIlczogY291bGQgbm90IG9wZW4gZmls ZSBcIiVzXCIgZm9yIHJlYWRpbmc6ICVzXG4iKSwKLQkJCQlwcm9nbmFtZSwgQ29udHJvbEZp bGVQYXRoLCBzdHJlcnJvcihlcnJubykpOworCQlwZ19sb2dfZmF0YWwoImNvdWxkIG5vdCBv cGVuIGZpbGUgXCIlc1wiIGZvciByZWFkaW5nOiAlbSIsCisJCQkJCSBDb250cm9sRmlsZVBh dGgpOwogCQlleGl0KEVYSVRfRkFJTFVSRSk7CiAJfQogI2VuZGlmCkBAIC03NSw4ICs3OCw3 IEBAIGdldF9jb250cm9sZmlsZShjb25zdCBjaGFyICpEYXRhRGlyLCBjb25zdCBjaGFyICpw cm9nbmFtZSwgYm9vbCAqY3JjX29rX3ApCiAJCQkJCSBlcnJtc2coImNvdWxkIG5vdCByZWFk IGZpbGUgXCIlc1wiOiAlbSIsIENvbnRyb2xGaWxlUGF0aCkpKTsKICNlbHNlCiAJCXsKLQkJ CWZwcmludGYoc3RkZXJyLCBfKCIlczogY291bGQgbm90IHJlYWQgZmlsZSBcIiVzXCI6ICVz XG4iKSwKLQkJCQkJcHJvZ25hbWUsIENvbnRyb2xGaWxlUGF0aCwgc3RyZXJyb3IoZXJybm8p KTsKKwkJCXBnX2xvZ19mYXRhbCgiY291bGQgbm90IHJlYWQgZmlsZSBcIiVzXCI6ICVtIiwg Q29udHJvbEZpbGVQYXRoKTsKIAkJCWV4aXQoRVhJVF9GQUlMVVJFKTsKIAkJfQogI2VuZGlm CkBAIC04OCw4ICs5MCw4IEBAIGdldF9jb250cm9sZmlsZShjb25zdCBjaGFyICpEYXRhRGly LCBjb25zdCBjaGFyICpwcm9nbmFtZSwgYm9vbCAqY3JjX29rX3ApCiAJCQkJCQkJQ29udHJv bEZpbGVQYXRoLCByLCBzaXplb2YoQ29udHJvbEZpbGVEYXRhKSkpKTsKICNlbHNlCiAJCXsK LQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczogY291bGQgbm90IHJlYWQgZmlsZSBcIiVzXCI6 IHJlYWQgJWQgb2YgJXp1XG4iKSwKLQkJCQkJcHJvZ25hbWUsIENvbnRyb2xGaWxlUGF0aCwg ciwgc2l6ZW9mKENvbnRyb2xGaWxlRGF0YSkpOworCQkJcGdfbG9nX2ZhdGFsKCJjb3VsZCBu b3QgcmVhZCBmaWxlIFwiJXNcIjogcmVhZCAlZCBvZiAlenUiLAorCQkJCQkJIENvbnRyb2xG aWxlUGF0aCwgciwgc2l6ZW9mKENvbnRyb2xGaWxlRGF0YSkpOwogCQkJZXhpdChFWElUX0ZB SUxVUkUpOwogCQl9CiAjZW5kaWYKQEAgLTExMiwxMCArMTE0LDEwIEBAIGdldF9jb250cm9s ZmlsZShjb25zdCBjaGFyICpEYXRhRGlyLCBjb25zdCBjaGFyICpwcm9nbmFtZSwgYm9vbCAq Y3JjX29rX3ApCiAjaWZuZGVmIEZST05URU5ECiAJCWVsb2coRVJST1IsIF8oImJ5dGUgb3Jk ZXJpbmcgbWlzbWF0Y2giKSk7CiAjZWxzZQotCQlwcmludGYoXygiV0FSTklORzogcG9zc2li bGUgYnl0ZSBvcmRlcmluZyBtaXNtYXRjaFxuIgotCQkJCSAiVGhlIGJ5dGUgb3JkZXJpbmcg dXNlZCB0byBzdG9yZSB0aGUgcGdfY29udHJvbCBmaWxlIG1pZ2h0IG5vdCBtYXRjaCB0aGUg b25lXG4iCi0JCQkJICJ1c2VkIGJ5IHRoaXMgcHJvZ3JhbS4gIEluIHRoYXQgY2FzZSB0aGUg cmVzdWx0cyBiZWxvdyB3b3VsZCBiZSBpbmNvcnJlY3QsIGFuZFxuIgotCQkJCSAidGhlIFBv c3RncmVTUUwgaW5zdGFsbGF0aW9uIHdvdWxkIGJlIGluY29tcGF0aWJsZSB3aXRoIHRoaXMg ZGF0YSBkaXJlY3RvcnkuXG4iKSk7CisJCXBnX2xvZ193YXJuaW5nKCJwb3NzaWJsZSBieXRl IG9yZGVyaW5nIG1pc21hdGNoXG4iCisJCQkJCSAgICJUaGUgYnl0ZSBvcmRlcmluZyB1c2Vk IHRvIHN0b3JlIHRoZSBwZ19jb250cm9sIGZpbGUgbWlnaHQgbm90IG1hdGNoIHRoZSBvbmVc biIKKwkJCQkJICAgInVzZWQgYnkgdGhpcyBwcm9ncmFtLiAgSW4gdGhhdCBjYXNlIHRoZSBy ZXN1bHRzIGJlbG93IHdvdWxkIGJlIGluY29ycmVjdCwgYW5kXG4iCisJCQkJCSAgICJ0aGUg UG9zdGdyZVNRTCBpbnN0YWxsYXRpb24gd291bGQgYmUgaW5jb21wYXRpYmxlIHdpdGggdGhp cyBkYXRhIGRpcmVjdG9yeS4iKTsKICNlbmRpZgogCiAJcmV0dXJuIENvbnRyb2xGaWxlOwpk aWZmIC0tZ2l0IGEvc3JjL2NvbW1vbi9maWxlX3V0aWxzLmMgYi9zcmMvY29tbW9uL2ZpbGVf dXRpbHMuYwppbmRleCBkOTUyYmM4Yzg4Li45MTIxNzU1ZmFjIDEwMDY0NAotLS0gYS9zcmMv Y29tbW9uL2ZpbGVfdXRpbHMuYworKysgYi9zcmMvY29tbW9uL2ZpbGVfdXRpbHMuYwpAQCAt MjAsNiArMjAsNyBAQAogI2luY2x1ZGUgPHVuaXN0ZC5oPgogCiAjaW5jbHVkZSAiY29tbW9u L2ZpbGVfdXRpbHMuaCIKKyNpbmNsdWRlICJmZV91dGlscy9sb2dnaW5nLmgiCiAKIAogLyog RGVmaW5lIFBHX0ZMVVNIX0RBVEFfV09SS1MgaWYgd2UgaGF2ZSBhbiBpbXBsZW1lbnRhdGlv biBmb3IgcGdfZmx1c2hfZGF0YSAqLwpAQCAtMzUsMTIgKzM2LDExIEBACiAjZGVmaW5lIE1J TklNVU1fVkVSU0lPTl9GT1JfUEdfV0FMCTEwMDAwMAogCiAjaWZkZWYgUEdfRkxVU0hfREFU QV9XT1JLUwotc3RhdGljIGludCBwcmVfc3luY19mbmFtZShjb25zdCBjaGFyICpmbmFtZSwg Ym9vbCBpc2RpciwKLQkJCSAgIGNvbnN0IGNoYXIgKnByb2duYW1lKTsKK3N0YXRpYyBpbnQg cHJlX3N5bmNfZm5hbWUoY29uc3QgY2hhciAqZm5hbWUsIGJvb2wgaXNkaXIpOwogI2VuZGlm CiBzdGF0aWMgdm9pZCB3YWxrZGlyKGNvbnN0IGNoYXIgKnBhdGgsCi0JCWludCAoKmFjdGlv bikgKGNvbnN0IGNoYXIgKmZuYW1lLCBib29sIGlzZGlyLCBjb25zdCBjaGFyICpwcm9nbmFt ZSksCi0JCWJvb2wgcHJvY2Vzc19zeW1saW5rcywgY29uc3QgY2hhciAqcHJvZ25hbWUpOwor CQlpbnQgKCphY3Rpb24pIChjb25zdCBjaGFyICpmbmFtZSwgYm9vbCBpc2RpciksCisJCWJv b2wgcHJvY2Vzc19zeW1saW5rcyk7CiAKIC8qCiAgKiBJc3N1ZSBmc3luYyByZWN1cnNpdmVs eSBvbiBQR0RBVEEgYW5kIGFsbCBpdHMgY29udGVudHMuCkBAIC01Niw3ICs1Niw2IEBAIHN0 YXRpYyB2b2lkIHdhbGtkaXIoY29uc3QgY2hhciAqcGF0aCwKICAqLwogdm9pZAogZnN5bmNf cGdkYXRhKGNvbnN0IGNoYXIgKnBnX2RhdGEsCi0JCQkgY29uc3QgY2hhciAqcHJvZ25hbWUs CiAJCQkgaW50IHNlcnZlclZlcnNpb24pCiB7CiAJYm9vbAkJeGxvZ19pc19zeW1saW5rOwpA QCAtNzksOCArNzgsNyBAQCBmc3luY19wZ2RhdGEoY29uc3QgY2hhciAqcGdfZGF0YSwKIAkJ c3RydWN0IHN0YXQgc3Q7CiAKIAkJaWYgKGxzdGF0KHBnX3dhbCwgJnN0KSA8IDApCi0JCQlm cHJpbnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCBzdGF0IGZpbGUgXCIlc1wiOiAlc1xu IiksCi0JCQkJCXByb2duYW1lLCBwZ193YWwsIHN0cmVycm9yKGVycm5vKSk7CisJCQlwZ19s b2dfZXJyb3IoImNvdWxkIG5vdCBzdGF0IGZpbGUgXCIlc1wiOiAlbSIsIHBnX3dhbCk7CiAJ CWVsc2UgaWYgKFNfSVNMTksoc3Quc3RfbW9kZSkpCiAJCQl4bG9nX2lzX3N5bWxpbmsgPSB0 cnVlOwogCX0KQEAgLTk0LDEwICs5MiwxMCBAQCBmc3luY19wZ2RhdGEoY29uc3QgY2hhciAq cGdfZGF0YSwKIAkgKiBkaXJlY3RvcnkgYW5kIGl0cyBjb250ZW50cy4KIAkgKi8KICNpZmRl ZiBQR19GTFVTSF9EQVRBX1dPUktTCi0Jd2Fsa2RpcihwZ19kYXRhLCBwcmVfc3luY19mbmFt ZSwgZmFsc2UsIHByb2duYW1lKTsKKwl3YWxrZGlyKHBnX2RhdGEsIHByZV9zeW5jX2ZuYW1l LCBmYWxzZSk7CiAJaWYgKHhsb2dfaXNfc3ltbGluaykKLQkJd2Fsa2RpcihwZ193YWwsIHBy ZV9zeW5jX2ZuYW1lLCBmYWxzZSwgcHJvZ25hbWUpOwotCXdhbGtkaXIocGdfdGJsc3BjLCBw cmVfc3luY19mbmFtZSwgdHJ1ZSwgcHJvZ25hbWUpOworCQl3YWxrZGlyKHBnX3dhbCwgcHJl X3N5bmNfZm5hbWUsIGZhbHNlKTsKKwl3YWxrZGlyKHBnX3RibHNwYywgcHJlX3N5bmNfZm5h bWUsIHRydWUpOwogI2VuZGlmCiAKIAkvKgpAQCAtMTA5LDEwICsxMDcsMTAgQEAgZnN5bmNf cGdkYXRhKGNvbnN0IGNoYXIgKnBnX2RhdGEsCiAJICogaW4gcGdfdGJsc3BjLCB0aGV5J2xs IGdldCBmc3luYydkIHR3aWNlLiAgVGhhdCdzIG5vdCBhbiBleHBlY3RlZCBjYXNlCiAJICog c28gd2UgZG9uJ3Qgd29ycnkgYWJvdXQgb3B0aW1pemluZyBpdC4KIAkgKi8KLQl3YWxrZGly KHBnX2RhdGEsIGZzeW5jX2ZuYW1lLCBmYWxzZSwgcHJvZ25hbWUpOworCXdhbGtkaXIocGdf ZGF0YSwgZnN5bmNfZm5hbWUsIGZhbHNlKTsKIAlpZiAoeGxvZ19pc19zeW1saW5rKQotCQl3 YWxrZGlyKHBnX3dhbCwgZnN5bmNfZm5hbWUsIGZhbHNlLCBwcm9nbmFtZSk7Ci0Jd2Fsa2Rp cihwZ190YmxzcGMsIGZzeW5jX2ZuYW1lLCB0cnVlLCBwcm9nbmFtZSk7CisJCXdhbGtkaXIo cGdfd2FsLCBmc3luY19mbmFtZSwgZmFsc2UpOworCXdhbGtkaXIocGdfdGJsc3BjLCBmc3lu Y19mbmFtZSwgdHJ1ZSk7CiB9CiAKIC8qCkBAIC0xMjEsMTcgKzExOSwxNyBAQCBmc3luY19w Z2RhdGEoY29uc3QgY2hhciAqcGdfZGF0YSwKICAqIFRoaXMgaXMgYSBjb252ZW5pZW50IHdy YXBwZXIgb24gdG9wIG9mIHdhbGtkaXIoKS4KICAqLwogdm9pZAotZnN5bmNfZGlyX3JlY3Vy c2UoY29uc3QgY2hhciAqZGlyLCBjb25zdCBjaGFyICpwcm9nbmFtZSkKK2ZzeW5jX2Rpcl9y ZWN1cnNlKGNvbnN0IGNoYXIgKmRpcikKIHsKIAkvKgogCSAqIElmIHBvc3NpYmxlLCBoaW50 IHRvIHRoZSBrZXJuZWwgdGhhdCB3ZSdyZSBzb29uIGdvaW5nIHRvIGZzeW5jIHRoZSBkYXRh CiAJICogZGlyZWN0b3J5IGFuZCBpdHMgY29udGVudHMuCiAJICovCiAjaWZkZWYgUEdfRkxV U0hfREFUQV9XT1JLUwotCXdhbGtkaXIoZGlyLCBwcmVfc3luY19mbmFtZSwgZmFsc2UsIHBy b2duYW1lKTsKKwl3YWxrZGlyKGRpciwgcHJlX3N5bmNfZm5hbWUsIGZhbHNlKTsKICNlbmRp ZgogCi0Jd2Fsa2RpcihkaXIsIGZzeW5jX2ZuYW1lLCBmYWxzZSwgcHJvZ25hbWUpOworCXdh bGtkaXIoZGlyLCBmc3luY19mbmFtZSwgZmFsc2UpOwogfQogCiAvKgpAQCAtMTUwLDggKzE0 OCw4IEBAIGZzeW5jX2Rpcl9yZWN1cnNlKGNvbnN0IGNoYXIgKmRpciwgY29uc3QgY2hhciAq cHJvZ25hbWUpCiAgKi8KIHN0YXRpYyB2b2lkCiB3YWxrZGlyKGNvbnN0IGNoYXIgKnBhdGgs Ci0JCWludCAoKmFjdGlvbikgKGNvbnN0IGNoYXIgKmZuYW1lLCBib29sIGlzZGlyLCBjb25z dCBjaGFyICpwcm9nbmFtZSksCi0JCWJvb2wgcHJvY2Vzc19zeW1saW5rcywgY29uc3QgY2hh ciAqcHJvZ25hbWUpCisJCWludCAoKmFjdGlvbikgKGNvbnN0IGNoYXIgKmZuYW1lLCBib29s IGlzZGlyKSwKKwkJYm9vbCBwcm9jZXNzX3N5bWxpbmtzKQogewogCURJUgkJICAgKmRpcjsK IAlzdHJ1Y3QgZGlyZW50ICpkZTsKQEAgLTE1OSw4ICsxNTcsNyBAQCB3YWxrZGlyKGNvbnN0 IGNoYXIgKnBhdGgsCiAJZGlyID0gb3BlbmRpcihwYXRoKTsKIAlpZiAoZGlyID09IE5VTEwp CiAJewotCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCBvcGVuIGRpcmVjdG9y eSBcIiVzXCI6ICVzXG4iKSwKLQkJCQlwcm9nbmFtZSwgcGF0aCwgc3RyZXJyb3IoZXJybm8p KTsKKwkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3Qgb3BlbiBkaXJlY3RvcnkgXCIlc1wiOiAl bSIsIHBhdGgpOwogCQlyZXR1cm47CiAJfQogCkBAIC0xODMsMjAgKzE4MCwxOCBAQCB3YWxr ZGlyKGNvbnN0IGNoYXIgKnBhdGgsCiAKIAkJaWYgKHNyZXQgPCAwKQogCQl7Ci0JCQlmcHJp bnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCBzdGF0IGZpbGUgXCIlc1wiOiAlc1xuIiks Ci0JCQkJCXByb2duYW1lLCBzdWJwYXRoLCBzdHJlcnJvcihlcnJubykpOworCQkJcGdfbG9n X2Vycm9yKCJjb3VsZCBub3Qgc3RhdCBmaWxlIFwiJXNcIjogJW0iLCBzdWJwYXRoKTsKIAkJ CWNvbnRpbnVlOwogCQl9CiAKIAkJaWYgKFNfSVNSRUcoZnN0LnN0X21vZGUpKQotCQkJKCph Y3Rpb24pIChzdWJwYXRoLCBmYWxzZSwgcHJvZ25hbWUpOworCQkJKCphY3Rpb24pIChzdWJw YXRoLCBmYWxzZSk7CiAJCWVsc2UgaWYgKFNfSVNESVIoZnN0LnN0X21vZGUpKQotCQkJd2Fs a2RpcihzdWJwYXRoLCBhY3Rpb24sIGZhbHNlLCBwcm9nbmFtZSk7CisJCQl3YWxrZGlyKHN1 YnBhdGgsIGFjdGlvbiwgZmFsc2UpOwogCX0KIAogCWlmIChlcnJubykKLQkJZnByaW50Zihz dGRlcnIsIF8oIiVzOiBjb3VsZCBub3QgcmVhZCBkaXJlY3RvcnkgXCIlc1wiOiAlc1xuIiks Ci0JCQkJcHJvZ25hbWUsIHBhdGgsIHN0cmVycm9yKGVycm5vKSk7CisJCXBnX2xvZ19lcnJv cigiY291bGQgbm90IHJlYWQgZGlyZWN0b3J5IFwiJXNcIjogJW0iLCBwYXRoKTsKIAogCSh2 b2lkKSBjbG9zZWRpcihkaXIpOwogCkBAIC0yMDYsNyArMjAxLDcgQEAgd2Fsa2Rpcihjb25z dCBjaGFyICpwYXRoLAogCSAqIHN5bmNlZC4gIFJlY2VudCB2ZXJzaW9ucyBvZiBleHQ0IGhh dmUgbWFkZSB0aGUgd2luZG93IG11Y2ggd2lkZXIgYnV0CiAJICogaXQncyBiZWVuIGFuIGlz c3VlIGZvciBleHQzIGFuZCBvdGhlciBmaWxlc3lzdGVtcyBpbiB0aGUgcGFzdC4KIAkgKi8K LQkoKmFjdGlvbikgKHBhdGgsIHRydWUsIHByb2duYW1lKTsKKwkoKmFjdGlvbikgKHBhdGgs IHRydWUpOwogfQogCiAvKgpAQCAtMjE4LDcgKzIxMyw3IEBAIHdhbGtkaXIoY29uc3QgY2hh ciAqcGF0aCwKICNpZmRlZiBQR19GTFVTSF9EQVRBX1dPUktTCiAKIHN0YXRpYyBpbnQKLXBy ZV9zeW5jX2ZuYW1lKGNvbnN0IGNoYXIgKmZuYW1lLCBib29sIGlzZGlyLCBjb25zdCBjaGFy ICpwcm9nbmFtZSkKK3ByZV9zeW5jX2ZuYW1lKGNvbnN0IGNoYXIgKmZuYW1lLCBib29sIGlz ZGlyKQogewogCWludAkJCWZkOwogCkBAIC0yMjgsOCArMjIzLDcgQEAgcHJlX3N5bmNfZm5h bWUoY29uc3QgY2hhciAqZm5hbWUsIGJvb2wgaXNkaXIsIGNvbnN0IGNoYXIgKnByb2duYW1l KQogCXsKIAkJaWYgKGVycm5vID09IEVBQ0NFUyB8fCAoaXNkaXIgJiYgZXJybm8gPT0gRUlT RElSKSkKIAkJCXJldHVybiAwOwotCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5v dCBvcGVuIGZpbGUgXCIlc1wiOiAlc1xuIiksCi0JCQkJcHJvZ25hbWUsIGZuYW1lLCBzdHJl cnJvcihlcnJubykpOworCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBvcGVuIGZpbGUgXCIl c1wiOiAlbSIsIGZuYW1lKTsKIAkJcmV0dXJuIC0xOwogCX0KIApAQCAtMjYwLDcgKzI1NCw3 IEBAIHByZV9zeW5jX2ZuYW1lKGNvbnN0IGNoYXIgKmZuYW1lLCBib29sIGlzZGlyLCBjb25z dCBjaGFyICpwcm9nbmFtZSkKICAqIG90aGVyIGVycm9ycyBub24tZmF0YWxseS4KICAqLwog aW50Ci1mc3luY19mbmFtZShjb25zdCBjaGFyICpmbmFtZSwgYm9vbCBpc2RpciwgY29uc3Qg Y2hhciAqcHJvZ25hbWUpCitmc3luY19mbmFtZShjb25zdCBjaGFyICpmbmFtZSwgYm9vbCBp c2RpcikKIHsKIAlpbnQJCQlmZDsKIAlpbnQJCQlmbGFnczsKQEAgLTI4OCw4ICsyODIsNyBA QCBmc3luY19mbmFtZShjb25zdCBjaGFyICpmbmFtZSwgYm9vbCBpc2RpciwgY29uc3QgY2hh ciAqcHJvZ25hbWUpCiAJewogCQlpZiAoZXJybm8gPT0gRUFDQ0VTIHx8IChpc2RpciAmJiBl cnJubyA9PSBFSVNESVIpKQogCQkJcmV0dXJuIDA7Ci0JCWZwcmludGYoc3RkZXJyLCBfKCIl czogY291bGQgbm90IG9wZW4gZmlsZSBcIiVzXCI6ICVzXG4iKSwKLQkJCQlwcm9nbmFtZSwg Zm5hbWUsIHN0cmVycm9yKGVycm5vKSk7CisJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IG9w ZW4gZmlsZSBcIiVzXCI6ICVtIiwgZm5hbWUpOwogCQlyZXR1cm4gLTE7CiAJfQogCkBAIC0z MDEsOCArMjk0LDcgQEAgZnN5bmNfZm5hbWUoY29uc3QgY2hhciAqZm5hbWUsIGJvb2wgaXNk aXIsIGNvbnN0IGNoYXIgKnByb2duYW1lKQogCSAqLwogCWlmIChyZXR1cm5jb2RlICE9IDAg JiYgIShpc2RpciAmJiBlcnJubyA9PSBFQkFERikpCiAJewotCQlmcHJpbnRmKHN0ZGVyciwg XygiJXM6IGNvdWxkIG5vdCBmc3luYyBmaWxlIFwiJXNcIjogJXNcbiIpLAotCQkJCXByb2du YW1lLCBmbmFtZSwgc3RyZXJyb3IoZXJybm8pKTsKKwkJcGdfbG9nX2Vycm9yKCJjb3VsZCBu b3QgZnN5bmMgZmlsZSBcIiVzXCI6ICVtIiwgZm5hbWUpOwogCQkodm9pZCkgY2xvc2UoZmQp OwogCQlyZXR1cm4gLTE7CiAJfQpAQCAtMzE4LDcgKzMxMCw3IEBAIGZzeW5jX2ZuYW1lKGNv bnN0IGNoYXIgKmZuYW1lLCBib29sIGlzZGlyLCBjb25zdCBjaGFyICpwcm9nbmFtZSkKICAq IGFuIE9TIGNyYXNoIG9yIHBvd2VyIGZhaWx1cmUuCiAgKi8KIGludAotZnN5bmNfcGFyZW50 X3BhdGgoY29uc3QgY2hhciAqZm5hbWUsIGNvbnN0IGNoYXIgKnByb2duYW1lKQorZnN5bmNf cGFyZW50X3BhdGgoY29uc3QgY2hhciAqZm5hbWUpCiB7CiAJY2hhcgkJcGFyZW50cGF0aFtN QVhQR1BBVEhdOwogCkBAIC0zMzMsNyArMzI1LDcgQEAgZnN5bmNfcGFyZW50X3BhdGgoY29u c3QgY2hhciAqZm5hbWUsIGNvbnN0IGNoYXIgKnByb2duYW1lKQogCWlmIChzdHJsZW4ocGFy ZW50cGF0aCkgPT0gMCkKIAkJc3RybGNweShwYXJlbnRwYXRoLCAiLiIsIE1BWFBHUEFUSCk7 CiAKLQlpZiAoZnN5bmNfZm5hbWUocGFyZW50cGF0aCwgdHJ1ZSwgcHJvZ25hbWUpICE9IDAp CisJaWYgKGZzeW5jX2ZuYW1lKHBhcmVudHBhdGgsIHRydWUpICE9IDApCiAJCXJldHVybiAt MTsKIAogCXJldHVybiAwOwpAQCAtMzQ1LDcgKzMzNyw3IEBAIGZzeW5jX3BhcmVudF9wYXRo KGNvbnN0IGNoYXIgKmZuYW1lLCBjb25zdCBjaGFyICpwcm9nbmFtZSkKICAqIFdyYXBwZXIg YXJvdW5kIHJlbmFtZSwgc2ltaWxhciB0byB0aGUgYmFja2VuZCB2ZXJzaW9uLgogICovCiBp bnQKLWR1cmFibGVfcmVuYW1lKGNvbnN0IGNoYXIgKm9sZGZpbGUsIGNvbnN0IGNoYXIgKm5l d2ZpbGUsIGNvbnN0IGNoYXIgKnByb2duYW1lKQorZHVyYWJsZV9yZW5hbWUoY29uc3QgY2hh ciAqb2xkZmlsZSwgY29uc3QgY2hhciAqbmV3ZmlsZSkKIHsKIAlpbnQJCQlmZDsKIApAQCAt MzU2LDcgKzM0OCw3IEBAIGR1cmFibGVfcmVuYW1lKGNvbnN0IGNoYXIgKm9sZGZpbGUsIGNv bnN0IGNoYXIgKm5ld2ZpbGUsIGNvbnN0IGNoYXIgKnByb2duYW1lKQogCSAqIGJlY2F1c2Ug aXQncyB0aGVuIGd1YXJhbnRlZWQgdGhhdCBlaXRoZXIgc291cmNlIG9yIHRhcmdldCBmaWxl IGV4aXN0cwogCSAqIGFmdGVyIGEgY3Jhc2guCiAJICovCi0JaWYgKGZzeW5jX2ZuYW1lKG9s ZGZpbGUsIGZhbHNlLCBwcm9nbmFtZSkgIT0gMCkKKwlpZiAoZnN5bmNfZm5hbWUob2xkZmls ZSwgZmFsc2UpICE9IDApCiAJCXJldHVybiAtMTsKIAogCWZkID0gb3BlbihuZXdmaWxlLCBQ R19CSU5BUlkgfCBPX1JEV1IsIDApOwpAQCAtMzY0LDggKzM1Niw3IEBAIGR1cmFibGVfcmVu YW1lKGNvbnN0IGNoYXIgKm9sZGZpbGUsIGNvbnN0IGNoYXIgKm5ld2ZpbGUsIGNvbnN0IGNo YXIgKnByb2duYW1lKQogCXsKIAkJaWYgKGVycm5vICE9IEVOT0VOVCkKIAkJewotCQkJZnBy aW50ZihzdGRlcnIsIF8oIiVzOiBjb3VsZCBub3Qgb3BlbiBmaWxlIFwiJXNcIjogJXNcbiIp LAotCQkJCQlwcm9nbmFtZSwgbmV3ZmlsZSwgc3RyZXJyb3IoZXJybm8pKTsKKwkJCXBnX2xv Z19lcnJvcigiY291bGQgbm90IG9wZW4gZmlsZSBcIiVzXCI6ICVtIiwgbmV3ZmlsZSk7CiAJ CQlyZXR1cm4gLTE7CiAJCX0KIAl9CkBAIC0zNzMsOCArMzY0LDcgQEAgZHVyYWJsZV9yZW5h bWUoY29uc3QgY2hhciAqb2xkZmlsZSwgY29uc3QgY2hhciAqbmV3ZmlsZSwgY29uc3QgY2hh ciAqcHJvZ25hbWUpCiAJewogCQlpZiAoZnN5bmMoZmQpICE9IDApCiAJCXsKLQkJCWZwcmlu dGYoc3RkZXJyLCBfKCIlczogY291bGQgbm90IGZzeW5jIGZpbGUgXCIlc1wiOiAlc1xuIiks Ci0JCQkJCXByb2duYW1lLCBuZXdmaWxlLCBzdHJlcnJvcihlcnJubykpOworCQkJcGdfbG9n X2Vycm9yKCJjb3VsZCBub3QgZnN5bmMgZmlsZSBcIiVzXCI6ICVtIiwgbmV3ZmlsZSk7CiAJ CQljbG9zZShmZCk7CiAJCQlyZXR1cm4gLTE7CiAJCX0KQEAgLTM4NCw4ICszNzQsOCBAQCBk dXJhYmxlX3JlbmFtZShjb25zdCBjaGFyICpvbGRmaWxlLCBjb25zdCBjaGFyICpuZXdmaWxl LCBjb25zdCBjaGFyICpwcm9nbmFtZSkKIAkvKiBUaW1lIHRvIGRvIHRoZSByZWFsIGRlYWwu Li4gKi8KIAlpZiAocmVuYW1lKG9sZGZpbGUsIG5ld2ZpbGUpICE9IDApCiAJewotCQlmcHJp bnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCByZW5hbWUgZmlsZSBcIiVzXCIgdG8gXCIl c1wiOiAlc1xuIiksCi0JCQkJcHJvZ25hbWUsIG9sZGZpbGUsIG5ld2ZpbGUsIHN0cmVycm9y KGVycm5vKSk7CisJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IHJlbmFtZSBmaWxlIFwiJXNc IiB0byBcIiVzXCI6ICVtIiwKKwkJCQkJIG9sZGZpbGUsIG5ld2ZpbGUpOwogCQlyZXR1cm4g LTE7CiAJfQogCkBAIC0zOTMsMTAgKzM4MywxMCBAQCBkdXJhYmxlX3JlbmFtZShjb25zdCBj aGFyICpvbGRmaWxlLCBjb25zdCBjaGFyICpuZXdmaWxlLCBjb25zdCBjaGFyICpwcm9nbmFt ZSkKIAkgKiBUbyBndWFyYW50ZWUgcmVuYW1pbmcgdGhlIGZpbGUgaXMgcGVyc2lzdGVudCwg ZnN5bmMgdGhlIGZpbGUgd2l0aCBpdHMKIAkgKiBuZXcgbmFtZSwgYW5kIGl0cyBjb250YWlu aW5nIGRpcmVjdG9yeS4KIAkgKi8KLQlpZiAoZnN5bmNfZm5hbWUobmV3ZmlsZSwgZmFsc2Us IHByb2duYW1lKSAhPSAwKQorCWlmIChmc3luY19mbmFtZShuZXdmaWxlLCBmYWxzZSkgIT0g MCkKIAkJcmV0dXJuIC0xOwogCi0JaWYgKGZzeW5jX3BhcmVudF9wYXRoKG5ld2ZpbGUsIHBy b2duYW1lKSAhPSAwKQorCWlmIChmc3luY19wYXJlbnRfcGF0aChuZXdmaWxlKSAhPSAwKQog CQlyZXR1cm4gLTE7CiAKIAlyZXR1cm4gMDsKZGlmZiAtLWdpdCBhL3NyYy9jb21tb24vcGdm bmFtZXMuYyBiL3NyYy9jb21tb24vcGdmbmFtZXMuYwppbmRleCBlYzUwYTM2ZGI3Li45NTY4 YTRhZDQ0IDEwMDY0NAotLS0gYS9zcmMvY29tbW9uL3BnZm5hbWVzLmMKKysrIGIvc3JjL2Nv bW1vbi9wZ2ZuYW1lcy5jCkBAIC0yMCw2ICsyMCwxMiBAQAogCiAjaW5jbHVkZSA8ZGlyZW50 Lmg+CiAKKyNpZm5kZWYgRlJPTlRFTkQKKyNkZWZpbmUgcGdfbG9nX3dhcm5pbmcoLi4uKSBl bG9nKFdBUk5JTkcsIF9fVkFfQVJHU19fKQorI2Vsc2UKKyNpbmNsdWRlICJmZV91dGlscy9s b2dnaW5nLmgiCisjZW5kaWYKKwogLyoKICAqIHBnZm5hbWVzCiAgKgpAQCAtMzksMTIgKzQ1 LDcgQEAgcGdmbmFtZXMoY29uc3QgY2hhciAqcGF0aCkKIAlkaXIgPSBvcGVuZGlyKHBhdGgp OwogCWlmIChkaXIgPT0gTlVMTCkKIAl7Ci0jaWZuZGVmIEZST05URU5ECi0JCWVsb2coV0FS TklORywgImNvdWxkIG5vdCBvcGVuIGRpcmVjdG9yeSBcIiVzXCI6ICVtIiwgcGF0aCk7Ci0j ZWxzZQotCQlmcHJpbnRmKHN0ZGVyciwgXygiY291bGQgbm90IG9wZW4gZGlyZWN0b3J5IFwi JXNcIjogJXNcbiIpLAotCQkJCXBhdGgsIHN0cmVycm9yKGVycm5vKSk7Ci0jZW5kaWYKKwkJ cGdfbG9nX3dhcm5pbmcoImNvdWxkIG5vdCBvcGVuIGRpcmVjdG9yeSBcIiVzXCI6ICVtIiwg cGF0aCk7CiAJCXJldHVybiBOVUxMOwogCX0KIApAQCAtNjUsMjYgKzY2LDEyIEBAIHBnZm5h bWVzKGNvbnN0IGNoYXIgKnBhdGgpCiAJfQogCiAJaWYgKGVycm5vKQotCXsKLSNpZm5kZWYg RlJPTlRFTkQKLQkJZWxvZyhXQVJOSU5HLCAiY291bGQgbm90IHJlYWQgZGlyZWN0b3J5IFwi JXNcIjogJW0iLCBwYXRoKTsKLSNlbHNlCi0JCWZwcmludGYoc3RkZXJyLCBfKCJjb3VsZCBu b3QgcmVhZCBkaXJlY3RvcnkgXCIlc1wiOiAlc1xuIiksCi0JCQkJcGF0aCwgc3RyZXJyb3Io ZXJybm8pKTsKLSNlbmRpZgotCX0KKwkJcGdfbG9nX3dhcm5pbmcoImNvdWxkIG5vdCByZWFk IGRpcmVjdG9yeSBcIiVzXCI6ICVtIiwgcGF0aCk7CiAKIAlmaWxlbmFtZXNbbnVtbmFtZXNd ID0gTlVMTDsKIAogCWlmIChjbG9zZWRpcihkaXIpKQotCXsKLSNpZm5kZWYgRlJPTlRFTkQK LQkJZWxvZyhXQVJOSU5HLCAiY291bGQgbm90IGNsb3NlIGRpcmVjdG9yeSBcIiVzXCI6ICVt IiwgcGF0aCk7Ci0jZWxzZQotCQlmcHJpbnRmKHN0ZGVyciwgXygiY291bGQgbm90IGNsb3Nl IGRpcmVjdG9yeSBcIiVzXCI6ICVzXG4iKSwKLQkJCQlwYXRoLCBzdHJlcnJvcihlcnJubykp OwotI2VuZGlmCi0JfQorCQlwZ19sb2dfd2FybmluZygiY291bGQgbm90IGNsb3NlIGRpcmVj dG9yeSBcIiVzXCI6ICVtIiwgcGF0aCk7CiAKIAlyZXR1cm4gZmlsZW5hbWVzOwogfQpkaWZm IC0tZ2l0IGEvc3JjL2NvbW1vbi9yZXN0cmljdGVkX3Rva2VuLmMgYi9zcmMvY29tbW9uL3Jl c3RyaWN0ZWRfdG9rZW4uYwppbmRleCA4YzU1ODNkYTdhLi4yNjNmMjNlNmU4IDEwMDY0NAot LS0gYS9zcmMvY29tbW9uL3Jlc3RyaWN0ZWRfdG9rZW4uYworKysgYi9zcmMvY29tbW9uL3Jl c3RyaWN0ZWRfdG9rZW4uYwpAQCAtMjEsNiArMjEsNyBAQAogI2luY2x1ZGUgInBvc3RncmVz X2ZlLmgiCiAKICNpbmNsdWRlICJjb21tb24vcmVzdHJpY3RlZF90b2tlbi5oIgorI2luY2x1 ZGUgImZlX3V0aWxzL2xvZ2dpbmcuaCIKIAogI2lmZGVmIFdJTjMyCiAKQEAgLTQzLDcgKzQ0 LDcgQEAgdHlwZWRlZiBCT09MIChXSU5BUEkgKiBfX0NyZWF0ZVJlc3RyaWN0ZWRUb2tlbikg KEhBTkRMRSwgRFdPUkQsIERXT1JELCBQU0lEX0FORF8KICAqIE5PVCBleGVjdXRlIGFueXRo aW5nLgogICovCiBIQU5ETEUKLUNyZWF0ZVJlc3RyaWN0ZWRQcm9jZXNzKGNoYXIgKmNtZCwg UFJPQ0VTU19JTkZPUk1BVElPTiAqcHJvY2Vzc0luZm8sIGNvbnN0IGNoYXIgKnByb2duYW1l KQorQ3JlYXRlUmVzdHJpY3RlZFByb2Nlc3MoY2hhciAqY21kLCBQUk9DRVNTX0lORk9STUFU SU9OICpwcm9jZXNzSW5mbykKIHsKIAlCT09MCQliOwogCVNUQVJUVVBJTkZPIHNpOwpAQCAt NjUsNyArNjYsNyBAQCBDcmVhdGVSZXN0cmljdGVkUHJvY2VzcyhjaGFyICpjbWQsIFBST0NF U1NfSU5GT1JNQVRJT04gKnByb2Nlc3NJbmZvLCBjb25zdCBjaGFyCiAKIAlpZiAoX0NyZWF0 ZVJlc3RyaWN0ZWRUb2tlbiA9PSBOVUxMKQogCXsKLQkJZnByaW50ZihzdGRlcnIsIF8oIiVz OiBXQVJOSU5HOiBjYW5ub3QgY3JlYXRlIHJlc3RyaWN0ZWQgdG9rZW5zIG9uIHRoaXMgcGxh dGZvcm1cbiIpLCBwcm9nbmFtZSk7CisJCXBnX2xvZ193YXJuaW5nKCJjYW5ub3QgY3JlYXRl IHJlc3RyaWN0ZWQgdG9rZW5zIG9uIHRoaXMgcGxhdGZvcm0iKTsKIAkJaWYgKEFkdmFwaTMy SGFuZGxlICE9IE5VTEwpCiAJCQlGcmVlTGlicmFyeShBZHZhcGkzMkhhbmRsZSk7CiAJCXJl dHVybiAwOwpAQCAtNzQsNyArNzUsNyBAQCBDcmVhdGVSZXN0cmljdGVkUHJvY2VzcyhjaGFy ICpjbWQsIFBST0NFU1NfSU5GT1JNQVRJT04gKnByb2Nlc3NJbmZvLCBjb25zdCBjaGFyCiAJ LyogT3BlbiB0aGUgY3VycmVudCB0b2tlbiB0byB1c2UgYXMgYSBiYXNlIGZvciB0aGUgcmVz dHJpY3RlZCBvbmUgKi8KIAlpZiAoIU9wZW5Qcm9jZXNzVG9rZW4oR2V0Q3VycmVudFByb2Nl c3MoKSwgVE9LRU5fQUxMX0FDQ0VTUywgJm9yaWdUb2tlbikpCiAJewotCQlmcHJpbnRmKHN0 ZGVyciwgXygiJXM6IGNvdWxkIG5vdCBvcGVuIHByb2Nlc3MgdG9rZW46IGVycm9yIGNvZGUg JWx1XG4iKSwgcHJvZ25hbWUsIEdldExhc3RFcnJvcigpKTsKKwkJcGdfbG9nX2Vycm9yKCJj b3VsZCBub3Qgb3BlbiBwcm9jZXNzIHRva2VuOiBlcnJvciBjb2RlICVsdSIsIEdldExhc3RF cnJvcigpKTsKIAkJcmV0dXJuIDA7CiAJfQogCkBAIC04Nyw4ICs4OCw3IEBAIENyZWF0ZVJl c3RyaWN0ZWRQcm9jZXNzKGNoYXIgKmNtZCwgUFJPQ0VTU19JTkZPUk1BVElPTiAqcHJvY2Vz c0luZm8sIGNvbnN0IGNoYXIKIAkJCQkJCQkJICBTRUNVUklUWV9CVUlMVElOX0RPTUFJTl9S SUQsIERPTUFJTl9BTElBU19SSURfUE9XRVJfVVNFUlMsIDAsIDAsIDAsIDAsIDAsCiAJCQkJ CQkJCSAgMCwgJmRyb3BTaWRzWzFdLlNpZCkpCiAJewotCQlmcHJpbnRmKHN0ZGVyciwgXygi JXM6IGNvdWxkIG5vdCBhbGxvY2F0ZSBTSURzOiBlcnJvciBjb2RlICVsdVxuIiksCi0JCQkJ cHJvZ25hbWUsIEdldExhc3RFcnJvcigpKTsKKwkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3Qg YWxsb2NhdGUgU0lEczogZXJyb3IgY29kZSAlbHUiLCBHZXRMYXN0RXJyb3IoKSk7CiAJCXJl dHVybiAwOwogCX0KIApAQCAtMTA3LDggKzEwNyw3IEBAIENyZWF0ZVJlc3RyaWN0ZWRQcm9j ZXNzKGNoYXIgKmNtZCwgUFJPQ0VTU19JTkZPUk1BVElPTiAqcHJvY2Vzc0luZm8sIGNvbnN0 IGNoYXIKIAogCWlmICghYikKIAl7Ci0JCWZwcmludGYoc3RkZXJyLCBfKCIlczogY291bGQg bm90IGNyZWF0ZSByZXN0cmljdGVkIHRva2VuOiBlcnJvciBjb2RlICVsdVxuIiksCi0JCQkJ cHJvZ25hbWUsIEdldExhc3RFcnJvcigpKTsKKwkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3Qg Y3JlYXRlIHJlc3RyaWN0ZWQgdG9rZW46IGVycm9yIGNvZGUgJWx1IiwgR2V0TGFzdEVycm9y KCkpOwogCQlyZXR1cm4gMDsKIAl9CiAKQEAgLTEyOSw3ICsxMjgsNyBAQCBDcmVhdGVSZXN0 cmljdGVkUHJvY2VzcyhjaGFyICpjbWQsIFBST0NFU1NfSU5GT1JNQVRJT04gKnByb2Nlc3NJ bmZvLCBjb25zdCBjaGFyCiAJCQkJCQkJIHByb2Nlc3NJbmZvKSkKIAogCXsKLQkJZnByaW50 ZihzdGRlcnIsIF8oIiVzOiBjb3VsZCBub3Qgc3RhcnQgcHJvY2VzcyBmb3IgY29tbWFuZCBc IiVzXCI6IGVycm9yIGNvZGUgJWx1XG4iKSwgcHJvZ25hbWUsIGNtZCwgR2V0TGFzdEVycm9y KCkpOworCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBzdGFydCBwcm9jZXNzIGZvciBjb21t YW5kIFwiJXNcIjogZXJyb3IgY29kZSAlbHUiLCBjbWQsIEdldExhc3RFcnJvcigpKTsKIAkJ cmV0dXJuIDA7CiAJfQogCkBAIC0xNDMsNyArMTQyLDcgQEAgQ3JlYXRlUmVzdHJpY3RlZFBy b2Nlc3MoY2hhciAqY21kLCBQUk9DRVNTX0lORk9STUFUSU9OICpwcm9jZXNzSW5mbywgY29u c3QgY2hhcgogICogT24gb3RoZXIgcGxhdGZvcm1zIGRvIG5vdGhpbmcuCiAgKi8KIHZvaWQK LWdldF9yZXN0cmljdGVkX3Rva2VuKGNvbnN0IGNoYXIgKnByb2duYW1lKQorZ2V0X3Jlc3Ry aWN0ZWRfdG9rZW4odm9pZCkKIHsKICNpZmRlZiBXSU4zMgogCUhBTkRMRQkJcmVzdHJpY3Rl ZFRva2VuOwpAQCAtMTY1LDkgKzE2NCw5IEBAIGdldF9yZXN0cmljdGVkX3Rva2VuKGNvbnN0 IGNoYXIgKnByb2duYW1lKQogCiAJCXB1dGVudigiUEdfUkVTVFJJQ1RfRVhFQz0xIik7CiAK LQkJaWYgKChyZXN0cmljdGVkVG9rZW4gPSBDcmVhdGVSZXN0cmljdGVkUHJvY2VzcyhjbWRs aW5lLCAmcGksIHByb2duYW1lKSkgPT0gMCkKKwkJaWYgKChyZXN0cmljdGVkVG9rZW4gPSBD cmVhdGVSZXN0cmljdGVkUHJvY2VzcyhjbWRsaW5lLCAmcGkpKSA9PSAwKQogCQl7Ci0JCQlm cHJpbnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCByZS1leGVjdXRlIHdpdGggcmVzdHJp Y3RlZCB0b2tlbjogZXJyb3IgY29kZSAlbHVcbiIpLCBwcm9nbmFtZSwgR2V0TGFzdEVycm9y KCkpOworCQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgcmUtZXhlY3V0ZSB3aXRoIHJlc3Ry aWN0ZWQgdG9rZW46IGVycm9yIGNvZGUgJWx1IiwgR2V0TGFzdEVycm9yKCkpOwogCQl9CiAJ CWVsc2UKIAkJewpAQCAtMTgzLDcgKzE4Miw3IEBAIGdldF9yZXN0cmljdGVkX3Rva2VuKGNv bnN0IGNoYXIgKnByb2duYW1lKQogCiAJCQlpZiAoIUdldEV4aXRDb2RlUHJvY2VzcyhwaS5o UHJvY2VzcywgJngpKQogCQkJewotCQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczogY291bGQg bm90IGdldCBleGl0IGNvZGUgZnJvbSBzdWJwcm9jZXNzOiBlcnJvciBjb2RlICVsdVxuIiks IHByb2duYW1lLCBHZXRMYXN0RXJyb3IoKSk7CisJCQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBu b3QgZ2V0IGV4aXQgY29kZSBmcm9tIHN1YnByb2Nlc3M6IGVycm9yIGNvZGUgJWx1IiwgR2V0 TGFzdEVycm9yKCkpOwogCQkJCWV4aXQoMSk7CiAJCQl9CiAJCQlleGl0KHgpOwpkaWZmIC0t Z2l0IGEvc3JjL2NvbW1vbi9ybXRyZWUuYyBiL3NyYy9jb21tb24vcm10cmVlLmMKaW5kZXgg ZmNmNjNlYjk1My4uOTc1MjI2MzA4NyAxMDA2NDQKLS0tIGEvc3JjL2NvbW1vbi9ybXRyZWUu YworKysgYi9zcmMvY29tbW9uL3JtdHJlZS5jCkBAIC0yMCw2ICsyMCwxMiBAQAogI2luY2x1 ZGUgPHVuaXN0ZC5oPgogI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CiAKKyNpZm5kZWYgRlJPTlRF TkQKKyNkZWZpbmUgcGdfbG9nX3dhcm5pbmcoLi4uKSBlbG9nKFdBUk5JTkcsIF9fVkFfQVJH U19fKQorI2Vsc2UKKyNpbmNsdWRlICJmZV91dGlscy9sb2dnaW5nLmgiCisjZW5kaWYKKwog CiAvKgogICoJcm10cmVlCkBAIC03MCwxMyArNzYsOCBAQCBybXRyZWUoY29uc3QgY2hhciAq cGF0aCwgYm9vbCBybXRvcGRpcikKIAkJewogCQkJaWYgKGVycm5vICE9IEVOT0VOVCkKIAkJ CXsKLSNpZm5kZWYgRlJPTlRFTkQKLQkJCQllbG9nKFdBUk5JTkcsICJjb3VsZCBub3Qgc3Rh dCBmaWxlIG9yIGRpcmVjdG9yeSBcIiVzXCI6ICVtIiwKKwkJCQlwZ19sb2dfd2FybmluZygi Y291bGQgbm90IHN0YXQgZmlsZSBvciBkaXJlY3RvcnkgXCIlc1wiOiAlbSIsCiAJCQkJCSBw YXRoYnVmKTsKLSNlbHNlCi0JCQkJZnByaW50ZihzdGRlcnIsIF8oImNvdWxkIG5vdCBzdGF0 IGZpbGUgb3IgZGlyZWN0b3J5IFwiJXNcIjogJXNcbiIpLAotCQkJCQkJcGF0aGJ1Ziwgc3Ry ZXJyb3IoZXJybm8pKTsKLSNlbmRpZgogCQkJCXJlc3VsdCA9IGZhbHNlOwogCQkJfQogCQkJ Y29udGludWU7CkBAIC05NywxMyArOTgsOCBAQCBybXRyZWUoY29uc3QgY2hhciAqcGF0aCwg Ym9vbCBybXRvcGRpcikKIAkJCXsKIAkJCQlpZiAoZXJybm8gIT0gRU5PRU5UKQogCQkJCXsK LSNpZm5kZWYgRlJPTlRFTkQKLQkJCQkJZWxvZyhXQVJOSU5HLCAiY291bGQgbm90IHJlbW92 ZSBmaWxlIG9yIGRpcmVjdG9yeSBcIiVzXCI6ICVtIiwKKwkJCQkJcGdfbG9nX3dhcm5pbmco ImNvdWxkIG5vdCByZW1vdmUgZmlsZSBvciBkaXJlY3RvcnkgXCIlc1wiOiAlbSIsCiAJCQkJ CQkgcGF0aGJ1Zik7Ci0jZWxzZQotCQkJCQlmcHJpbnRmKHN0ZGVyciwgXygiY291bGQgbm90 IHJlbW92ZSBmaWxlIG9yIGRpcmVjdG9yeSBcIiVzXCI6ICVzXG4iKSwKLQkJCQkJCQlwYXRo YnVmLCBzdHJlcnJvcihlcnJubykpOwotI2VuZGlmCiAJCQkJCXJlc3VsdCA9IGZhbHNlOwog CQkJCX0KIAkJCX0KQEAgLTExNCwxMyArMTEwLDggQEAgcm10cmVlKGNvbnN0IGNoYXIgKnBh dGgsIGJvb2wgcm10b3BkaXIpCiAJewogCQlpZiAocm1kaXIocGF0aCkgIT0gMCkKIAkJewot I2lmbmRlZiBGUk9OVEVORAotCQkJZWxvZyhXQVJOSU5HLCAiY291bGQgbm90IHJlbW92ZSBm aWxlIG9yIGRpcmVjdG9yeSBcIiVzXCI6ICVtIiwKKwkJCXBnX2xvZ193YXJuaW5nKCJjb3Vs ZCBub3QgcmVtb3ZlIGZpbGUgb3IgZGlyZWN0b3J5IFwiJXNcIjogJW0iLAogCQkJCSBwYXRo KTsKLSNlbHNlCi0JCQlmcHJpbnRmKHN0ZGVyciwgXygiY291bGQgbm90IHJlbW92ZSBmaWxl IG9yIGRpcmVjdG9yeSBcIiVzXCI6ICVzXG4iKSwKLQkJCQkJcGF0aCwgc3RyZXJyb3IoZXJy bm8pKTsKLSNlbmRpZgogCQkJcmVzdWx0ID0gZmFsc2U7CiAJCX0KIAl9CmRpZmYgLS1naXQg YS9zcmMvZmVfdXRpbHMvTWFrZWZpbGUgYi9zcmMvZmVfdXRpbHMvTWFrZWZpbGUKaW5kZXgg NTM2MmNmZmQ1Ny4uODFkMTc4ZTUzMSAxMDA2NDQKLS0tIGEvc3JjL2ZlX3V0aWxzL01ha2Vm aWxlCisrKyBiL3NyYy9mZV91dGlscy9NYWtlZmlsZQpAQCAtMTksNyArMTksNyBAQCBpbmNs dWRlICQodG9wX2J1aWxkZGlyKS9zcmMvTWFrZWZpbGUuZ2xvYmFsCiAKIG92ZXJyaWRlIENQ UEZMQUdTIDo9IC1ERlJPTlRFTkQgLUkkKGxpYnBxX3NyY2RpcikgJChDUFBGTEFHUykKIAot T0JKUyA9IG1icHJpbnQubyBwcmludC5vIHBzcWxzY2FuLm8gc2ltcGxlX2xpc3QubyBzdHJp bmdfdXRpbHMubyBjb25kaXRpb25hbC5vCitPQkpTID0gbG9nZ2luZy5vIG1icHJpbnQubyBw cmludC5vIHBzcWxzY2FuLm8gc2ltcGxlX2xpc3QubyBzdHJpbmdfdXRpbHMubyBjb25kaXRp b25hbC5vCiAKIGFsbDogbGlicGdmZXV0aWxzLmEKIApkaWZmIC0tZ2l0IGEvc3JjL2ZlX3V0 aWxzL3BzcWxzY2FuLmwgYi9zcmMvZmVfdXRpbHMvcHNxbHNjYW4ubAppbmRleCAwMmQ5NTQ5 OGU0Li5kMjk4ZTcyZGVjIDEwMDY0NAotLS0gYS9zcmMvZmVfdXRpbHMvcHNxbHNjYW4ubAor KysgYi9zcmMvZmVfdXRpbHMvcHNxbHNjYW4ubApAQCAtMzQsNiArMzQsNyBAQAogICovCiAj aW5jbHVkZSAicG9zdGdyZXNfZmUuaCIKIAorI2luY2x1ZGUgImZlX3V0aWxzL2xvZ2dpbmcu aCIKICNpbmNsdWRlICJmZV91dGlscy9wc3Fsc2Nhbi5oIgogCiAjaW5jbHVkZSAibGlicHEt ZmUuaCIKQEAgLTcyNSw3ICs3MjYsNyBAQCBvdGhlcgkJCS4KIAkJCQkJCWlmIChwc3Fsc2Nh bl92YXJfaXNfY3VycmVudF9zb3VyY2UoY3VyX3N0YXRlLCB2YXJuYW1lKSkKIAkJCQkJCXsK IAkJCQkJCQkvKiBSZWN1cnNpdmUgZXhwYW5zaW9uIC0tLSBkb24ndCBnbyB0aGVyZSAqLwot CQkJCQkJCWN1cl9zdGF0ZS0+Y2FsbGJhY2tzLT53cml0ZV9lcnJvcigic2tpcHBpbmcgcmVj dXJzaXZlIGV4cGFuc2lvbiBvZiB2YXJpYWJsZSBcIiVzXCJcbiIsCisJCQkJCQkJcGdfbG9n X3dhcm5pbmcoInNraXBwaW5nIHJlY3Vyc2l2ZSBleHBhbnNpb24gb2YgdmFyaWFibGUgXCIl c1wiIiwKIAkJCQkJCQkJCQkJCQkJCSAgdmFybmFtZSk7CiAJCQkJCQkJLyogSW5zdGVhZCBj b3B5IHRoZSBzdHJpbmcgYXMgaXMgKi8KIAkJCQkJCQlFQ0hPOwpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvY29tbW9uL2NvbnRyb2xkYXRhX3V0aWxzLmggYi9zcmMvaW5jbHVkZS9jb21t b24vY29udHJvbGRhdGFfdXRpbHMuaAppbmRleCBkOGZkMzE2Mzk2Li45MjljM2I5MjE2IDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21tb24vY29udHJvbGRhdGFfdXRpbHMuaAorKysg Yi9zcmMvaW5jbHVkZS9jb21tb24vY29udHJvbGRhdGFfdXRpbHMuaApAQCAtMTIsNiArMTIs NiBAQAogCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19jb250cm9sLmgiCiAKLWV4dGVybiBDb250 cm9sRmlsZURhdGEgKmdldF9jb250cm9sZmlsZShjb25zdCBjaGFyICpEYXRhRGlyLCBjb25z dCBjaGFyICpwcm9nbmFtZSwgYm9vbCAqY3JjX29rX3ApOworZXh0ZXJuIENvbnRyb2xGaWxl RGF0YSAqZ2V0X2NvbnRyb2xmaWxlKGNvbnN0IGNoYXIgKkRhdGFEaXIsIGJvb2wgKmNyY19v a19wKTsKIAogI2VuZGlmCQkJCQkJCS8qIENPTU1PTl9DT05UUk9MREFUQV9VVElMU19IICov CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jb21tb24vZmlsZV91dGlscy5oIGIvc3JjL2lu Y2x1ZGUvY29tbW9uL2ZpbGVfdXRpbHMuaAppbmRleCA3MWY2Mzg1NjJlLi5kYjA4M2NhYWQ1 IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21tb24vZmlsZV91dGlscy5oCisrKyBiL3Ny Yy9pbmNsdWRlL2NvbW1vbi9maWxlX3V0aWxzLmgKQEAgLTE1LDEzICsxNSwxMCBAQAogI2lm bmRlZiBGSUxFX1VUSUxTX0gKICNkZWZpbmUgRklMRV9VVElMU19ICiAKLWV4dGVybiBpbnQg ZnN5bmNfZm5hbWUoY29uc3QgY2hhciAqZm5hbWUsIGJvb2wgaXNkaXIsCi0JCQljb25zdCBj aGFyICpwcm9nbmFtZSk7Ci1leHRlcm4gdm9pZCBmc3luY19wZ2RhdGEoY29uc3QgY2hhciAq cGdfZGF0YSwgY29uc3QgY2hhciAqcHJvZ25hbWUsCi0JCQkgaW50IHNlcnZlclZlcnNpb24p OwotZXh0ZXJuIHZvaWQgZnN5bmNfZGlyX3JlY3Vyc2UoY29uc3QgY2hhciAqZGlyLCBjb25z dCBjaGFyICpwcm9nbmFtZSk7Ci1leHRlcm4gaW50IGR1cmFibGVfcmVuYW1lKGNvbnN0IGNo YXIgKm9sZGZpbGUsIGNvbnN0IGNoYXIgKm5ld2ZpbGUsCi0JCQkgICBjb25zdCBjaGFyICpw cm9nbmFtZSk7Ci1leHRlcm4gaW50CWZzeW5jX3BhcmVudF9wYXRoKGNvbnN0IGNoYXIgKmZu YW1lLCBjb25zdCBjaGFyICpwcm9nbmFtZSk7CitleHRlcm4gaW50IGZzeW5jX2ZuYW1lKGNv bnN0IGNoYXIgKmZuYW1lLCBib29sIGlzZGlyKTsKK2V4dGVybiB2b2lkIGZzeW5jX3BnZGF0 YShjb25zdCBjaGFyICpwZ19kYXRhLCBpbnQgc2VydmVyVmVyc2lvbik7CitleHRlcm4gdm9p ZCBmc3luY19kaXJfcmVjdXJzZShjb25zdCBjaGFyICpkaXIpOworZXh0ZXJuIGludCBkdXJh YmxlX3JlbmFtZShjb25zdCBjaGFyICpvbGRmaWxlLCBjb25zdCBjaGFyICpuZXdmaWxlKTsK K2V4dGVybiBpbnQJZnN5bmNfcGFyZW50X3BhdGgoY29uc3QgY2hhciAqZm5hbWUpOwogCiAj ZW5kaWYJCQkJCQkJLyogRklMRV9VVElMU19IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9jb21tb24vcmVzdHJpY3RlZF90b2tlbi5oIGIvc3JjL2luY2x1ZGUvY29tbW9uL3Jlc3Ry aWN0ZWRfdG9rZW4uaAppbmRleCBhNGEyNjNmZGVlLi44MDI0NjUxYmJjIDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9jb21tb24vcmVzdHJpY3RlZF90b2tlbi5oCisrKyBiL3NyYy9pbmNs dWRlL2NvbW1vbi9yZXN0cmljdGVkX3Rva2VuLmgKQEAgLTE0LDExICsxNCwxMSBAQAogICog T24gV2luZG93cyBtYWtlIHN1cmUgdGhhdCB3ZSBhcmUgcnVubmluZyB3aXRoIGEgcmVzdHJp Y3RlZCB0b2tlbiwKICAqIE9uIG90aGVyIHBsYXRmb3JtcyBkbyBub3RoaW5nLgogICovCi12 b2lkCQlnZXRfcmVzdHJpY3RlZF90b2tlbihjb25zdCBjaGFyICpwcm9nbmFtZSk7Cit2b2lk CQlnZXRfcmVzdHJpY3RlZF90b2tlbih2b2lkKTsKIAogI2lmZGVmIFdJTjMyCiAvKiBDcmVh dGUgYSByZXN0cmljdGVkIHRva2VuIGFuZCBleGVjdXRlIHRoZSBzcGVjaWZpZWQgcHJvY2Vz cyB3aXRoIGl0LiAqLwotSEFORExFCQlDcmVhdGVSZXN0cmljdGVkUHJvY2VzcyhjaGFyICpj bWQsIFBST0NFU1NfSU5GT1JNQVRJT04gKnByb2Nlc3NJbmZvLCBjb25zdCBjaGFyICpwcm9n bmFtZSk7CitIQU5ETEUJCUNyZWF0ZVJlc3RyaWN0ZWRQcm9jZXNzKGNoYXIgKmNtZCwgUFJP Q0VTU19JTkZPUk1BVElPTiAqcHJvY2Vzc0luZm8pOwogI2VuZGlmCiAKICNlbmRpZgkJCQkJ CQkvKiBDT01NT05fUkVTVFJJQ1RFRF9UT0tFTl9IICovCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9mZV91dGlscy9wc3Fsc2Nhbi5oIGIvc3JjL2luY2x1ZGUvZmVfdXRpbHMvcHNxbHNj YW4uaAppbmRleCAyZDU4YzA3MWYzLi4xODE1MDI5MDEyIDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9mZV91dGlscy9wc3Fsc2Nhbi5oCisrKyBiL3NyYy9pbmNsdWRlL2ZlX3V0aWxzL3Bz cWxzY2FuLmgKQEAgLTY0LDEzICs2NCw2IEBAIHR5cGVkZWYgc3RydWN0IFBzcWxTY2FuQ2Fs bGJhY2tzCiAJLyogVGhpcyBwb2ludGVyIGNhbiBiZSBOVUxMIGlmIG5vIHZhcmlhYmxlIHN1 YnN0aXR1dGlvbiBpcyB3YW50ZWQgKi8KIAljaGFyCSAgICooKmdldF92YXJpYWJsZSkgKGNv bnN0IGNoYXIgKnZhcm5hbWUsIFBzcWxTY2FuUXVvdGVUeXBlIHF1b3RlLAogCQkJCQkJCQkg dm9pZCAqcGFzc3Rocm91Z2gpOwotCS8qIFByaW50IGFuIGVycm9yIG1lc3NhZ2Ugc29tZXBs YWNlIGFwcHJvcHJpYXRlICovCi0JLyogKHZlcnkgb2xkIGdjYyB2ZXJzaW9ucyBkb24ndCBz dXBwb3J0IGF0dHJpYnV0ZXMgb24gZnVuY3Rpb24gcG9pbnRlcnMpICovCi0jaWYgZGVmaW5l ZChfX0dOVUNfXykgJiYgX19HTlVDX18gPCA0Ci0Jdm9pZAkJKCp3cml0ZV9lcnJvcikgKGNv bnN0IGNoYXIgKmZtdCwuLi4pOwotI2Vsc2UKLQl2b2lkCQkoKndyaXRlX2Vycm9yKSAoY29u c3QgY2hhciAqZm10LC4uLikgcGdfYXR0cmlidXRlX3ByaW50ZigxLCAyKTsKLSNlbmRpZgog fSBQc3FsU2NhbkNhbGxiYWNrczsKIAogCmRpZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlcy9l Y3BnL3Rlc3QvTWFrZWZpbGUgYi9zcmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3QvTWFrZWZpbGUK aW5kZXggYzc2MWE0ZGNiMC4uNjkxOGNlMTUzZCAxMDA2NDQKLS0tIGEvc3JjL2ludGVyZmFj ZXMvZWNwZy90ZXN0L01ha2VmaWxlCisrKyBiL3NyYy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9N YWtlZmlsZQpAQCAtMTUsNiArMTUsOCBAQCBvdmVycmlkZSBDUFBGTEFHUyA6PSBcCiAJJy1E RExTVUZGSVg9IiQoRExTVUZGSVgpIicgXAogCSQoQ1BQRkxBR1MpCiAKK0xERkxBR1NfSU5U RVJOQUwgKz0gLUwkKHRvcF9idWlsZGRpcikvc3JjL2ZlX3V0aWxzIC1scGdmZXV0aWxzCisK ICMgZGVmYXVsdCBlbmNvZGluZyBmb3IgcmVncmVzc2lvbiB0ZXN0cwogRU5DT0RJTkcgPSBT UUxfQVNDSUkKIApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvaXNvbGF0aW9uL01ha2VmaWxlIGIv c3JjL3Rlc3QvaXNvbGF0aW9uL01ha2VmaWxlCmluZGV4IGMzYzgyODBlYTIuLmZiYmJjYTA1 YzUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L2lzb2xhdGlvbi9NYWtlZmlsZQorKysgYi9zcmMv dGVzdC9pc29sYXRpb24vTWFrZWZpbGUKQEAgLTEwLDYgKzEwLDcgQEAgdG9wX2J1aWxkZGly ID0gLi4vLi4vLi4KIGluY2x1ZGUgJCh0b3BfYnVpbGRkaXIpL3NyYy9NYWtlZmlsZS5nbG9i YWwKIAogb3ZlcnJpZGUgQ1BQRkxBR1MgOj0gLUkkKHNyY2RpcikgLUkkKGxpYnBxX3NyY2Rp cikgLUkkKHNyY2RpcikvLi4vcmVncmVzcyAkKENQUEZMQUdTKQorTERGTEFHU19JTlRFUk5B TCArPSAtTCQodG9wX2J1aWxkZGlyKS9zcmMvZmVfdXRpbHMgLWxwZ2ZldXRpbHMKIAogT0JK UyA9ICBzcGVjcGFyc2UubyBpc29sYXRpb250ZXN0ZXIubyAkKFdJTjMyUkVTKQogCkBAIC0z MSw3ICszMiw3IEBAIHBnX3JlZ3Jlc3MubzogfCBzdWJtYWtlLXJlZ3Jlc3MKIHBnX2lzb2xh dGlvbl9yZWdyZXNzJChYKTogaXNvbGF0aW9uX21haW4ubyBwZ19yZWdyZXNzLm8gJChXSU4z MlJFUykKIAkkKENDKSAkKENGTEFHUykgJF4gJChMREZMQUdTKSAkKExERkxBR1NfRVgpICQo TElCUykgLW8gJEAKIAotaXNvbGF0aW9udGVzdGVyJChYKTogJChPQkpTKSB8IHN1Ym1ha2Ut bGlicHEgc3VibWFrZS1saWJwZ3BvcnQKK2lzb2xhdGlvbnRlc3RlciQoWCk6ICQoT0JKUykg fCBzdWJtYWtlLWxpYnBxIHN1Ym1ha2UtbGlicGdwb3J0IHN1Ym1ha2UtbGlicGdmZXV0aWxz CiAJJChDQykgJChDRkxBR1MpICReICQobGlicHFfcGdwb3J0KSAkKExERkxBR1MpICQoTERG TEFHU19FWCkgJChMSUJTKSAtbyAkQAogCiBkaXN0cHJlcDogc3BlY3BhcnNlLmMgc3BlY3Nj YW5uZXIuYwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9HTlVtYWtlZmlsZSBiL3Ny Yy90ZXN0L3JlZ3Jlc3MvR05VbWFrZWZpbGUKaW5kZXggMzc4YmQwMTc1My4uOTI4ODhiZjAx YyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9HTlVtYWtlZmlsZQorKysgYi9zcmMv dGVzdC9yZWdyZXNzL0dOVW1ha2VmaWxlCkBAIC0yMyw2ICsyMyw4IEBAIGlmZGVmIE1BWF9D T05ORUNUSU9OUwogTUFYQ09OTk9QVCArPSAtLW1heC1jb25uZWN0aW9ucz0kKE1BWF9DT05O RUNUSU9OUykKIGVuZGlmCiAKK0xERkxBR1NfSU5URVJOQUwgKz0gLUwkKHRvcF9idWlsZGRp cikvc3JjL2ZlX3V0aWxzIC1scGdmZXV0aWxzCisKICMgc3R1ZmYgdG8gcGFzcyBpbnRvIGJ1 aWxkIG9mIHBnX3JlZ3Jlc3MKIEVYVFJBREVGUyA9ICctREhPU1RfVFVQTEU9IiQoaG9zdF90 dXBsZSkiJyBcCiAJJy1EU0hFTExQUk9HPSIkKFNIRUxMKSInIFwKQEAgLTM2LDcgKzM4LDcg QEAgRVhUUkFERUZTID0gJy1ESE9TVF9UVVBMRT0iJChob3N0X3R1cGxlKSInIFwKIAogYWxs OiBwZ19yZWdyZXNzJChYKQogCi1wZ19yZWdyZXNzJChYKTogcGdfcmVncmVzcy5vIHBnX3Jl Z3Jlc3NfbWFpbi5vICQoV0lOMzJSRVMpIHwgc3VibWFrZS1saWJwZ3BvcnQKK3BnX3JlZ3Jl c3MkKFgpOiBwZ19yZWdyZXNzLm8gcGdfcmVncmVzc19tYWluLm8gJChXSU4zMlJFUykgfCBz dWJtYWtlLWxpYnBncG9ydCBzdWJtYWtlLWxpYnBnZmV1dGlscwogCSQoQ0MpICQoQ0ZMQUdT KSAkXiAkKExERkxBR1MpICQoTERGTEFHU19FWCkgJChMSUJTKSAtbyAkQAogCiAjIGRlcGVu ZGVuY2llcyBlbnN1cmUgdGhhdCBwYXRoIGNoYW5nZXMgcHJvcGFnYXRlCmRpZmYgLS1naXQg YS9zcmMvdGVzdC9yZWdyZXNzL3BnX3JlZ3Jlc3MuYyBiL3NyYy90ZXN0L3JlZ3Jlc3MvcGdf cmVncmVzcy5jCmluZGV4IDYzZmU2ODkxNGIuLjQxNzQ4MTcwYjIgMTAwNjQ0Ci0tLSBhL3Ny Yy90ZXN0L3JlZ3Jlc3MvcGdfcmVncmVzcy5jCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvcGdf cmVncmVzcy5jCkBAIC0zMyw2ICszMyw3IEBACiAKICNpbmNsdWRlICJjb21tb24vcmVzdHJp Y3RlZF90b2tlbi5oIgogI2luY2x1ZGUgImNvbW1vbi91c2VybmFtZS5oIgorI2luY2x1ZGUg ImZlX3V0aWxzL2xvZ2dpbmcuaCIKICNpbmNsdWRlICJnZXRvcHRfbG9uZy5oIgogI2luY2x1 ZGUgImxpYnBxL3BxY29tbS5oIgkJLyogbmVlZGVkIGZvciBVTklYU09DS19QQVRIKCkgKi8K ICNpbmNsdWRlICJwZ19jb25maWdfcGF0aHMuaCIKQEAgLTExNzMsNyArMTE3NCw3IEBAIHNw YXduX3Byb2Nlc3MoY29uc3QgY2hhciAqY21kbGluZSkKIAljbWRsaW5lMiA9IHBzcHJpbnRm KCJjbWQgL2MgXCIlc1wiIiwgY21kbGluZSk7CiAKIAlpZiAoKHJlc3RyaWN0ZWRUb2tlbiA9 Ci0JCSBDcmVhdGVSZXN0cmljdGVkUHJvY2VzcyhjbWRsaW5lMiwgJnBpLCBwcm9nbmFtZSkp ID09IDApCisJCSBDcmVhdGVSZXN0cmljdGVkUHJvY2VzcyhjbWRsaW5lMiwgJnBpKSkgPT0g MCkKIAkJZXhpdCgyKTsKIAogCUNsb3NlSGFuZGxlKHBpLmhUaHJlYWQpOwpAQCAtMjA3NSw4 ICsyMDc2LDkgQEAgcmVncmVzc2lvbl9tYWluKGludCBhcmdjLCBjaGFyICphcmd2W10sIGlu aXRfZnVuY3Rpb24gaWZ1bmMsIHRlc3RfZnVuY3Rpb24gdGZ1bmMKIAogCXByb2duYW1lID0g Z2V0X3Byb2duYW1lKGFyZ3ZbMF0pOwogCXNldF9wZ2xvY2FsZV9wZ3NlcnZpY2UoYXJndlsw XSwgUEdfVEVYVERPTUFJTigicGdfcmVncmVzcyIpKTsKKwlwZ19sb2dnaW5nX2luaXQoYXJn dlswXSk7CiAKLQlnZXRfcmVzdHJpY3RlZF90b2tlbihwcm9nbmFtZSk7CisJZ2V0X3Jlc3Ry aWN0ZWRfdG9rZW4oKTsKIAogCWF0ZXhpdChzdG9wX3Bvc3RtYXN0ZXIpOwogCgpiYXNlLWNv bW1pdDogZTBlZjEzNmQ1MjM1ZjM5ZjU2NTJjMjA5YzA4YTVkNDMyMjU2MGU5YwotLSAKMi4y MC4xCgo= --------------0E40B15A4ED038D4B1C84F07--