Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pPUpE-0000Ur-AW for pgsql-hackers@arkaria.postgresql.org; Tue, 07 Feb 2023 20:44:25 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1pPUpC-0004zy-SZ for pgsql-hackers@arkaria.postgresql.org; Tue, 07 Feb 2023 20:44:22 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pPUpB-0004zo-UB for pgsql-hackers@lists.postgresql.org; Tue, 07 Feb 2023 20:44:22 +0000 Received: from mail-wr1-x434.google.com ([2a00:1450:4864:20::434]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1pPUoz-0005KN-7h for pgsql-hackers@lists.postgresql.org; Tue, 07 Feb 2023 20:44:21 +0000 Received: by mail-wr1-x434.google.com with SMTP id z11so811877wrl.8 for ; Tue, 07 Feb 2023 12:44:09 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb.com; s=google; h=in-reply-to:from:content-language:references:cc:to:subject :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=2ZXq0IzprkYwv5A5bhCKxw+qHOSGvop8n+kmFlDjSfE=; b=PjVT5UBdCeCP0d4N8cy1dKGO8c/mb8rjjKMkjDzAgSlQQiwIsDBTpIZEof9/+4yy0E bgxrUWMKW5+sIvis05yWTt2lQzwerIiPlnzw30Zb6bw8G/jD9i7RfJbItyCQEwNL5MFx v3DW0lpaSi1kI0aWIa1snbmabJIT9hhrmPG4FWRi8JHU37crQmx8WYrb02rnXSE3VYOq yybPV+agiIoUXKr4bA3DPWUnApNnEVWrcN4XILraoc5vKqKVkMafjd5mIhRqeg9SbxJF QC2vNtyNseqw7jEY/TiRcKU88HNpFiRguPte5HMPZARpK9csCXWpsr35P3Wr2XLUM5pA W5CA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:from:content-language:references:cc:to:subject :user-agent:mime-version:date:message-id:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=2ZXq0IzprkYwv5A5bhCKxw+qHOSGvop8n+kmFlDjSfE=; b=685ZuQOPhBNJB/iCzOeo/tXdjo3r3Rkkyt7FicvHDuNXRWszIrWhRTZaddOJ64Gh1L xhehMb7f6QctF5QRvF1R/+6SQ2vK+WyxyeTVMdBQ2AX4OOxMPNz6JY3pF26XmFLdSErm QiNBhQ3Zw14nFw4mgqFOMBhhjPSt4GPyz4zrYMb7qe0FJQRMytGTI8gUef9HkRWjaY/j /OnKUJeHG5qrmSPRerch/ofOfj/m62Ol/30CLFOGk/F/6tBkMw5TpaQeD/ZZ4QEvShD8 BC9Hc4ce0yoxps89YcvV2iYkHMe+PFnF8qzpWLNiSSDhJ4PPCWFSIZYL0lIuZMXbzjP+ /FMw== X-Gm-Message-State: AO0yUKXVI8UqDvbb+l8jKmxdvLhlr8sd3DZwXcgoAnxPFN0FPaNc3/N8 rtLnx2na5QzL/Z+hs7SowPr/MM2npw77kVNuatr95vb/6z7yQWz+canQXLxvS+9fkw9M6UIY0NP WsdkQvLk8VIsQarJx9aJ4R9JX/YA2tiVu1l+asW51HLOqjqUsolq29HQmYoqCc8y8Z9/kBvQm7Z +lkuTjziJQaujKj73LsZiYELW6Sygm/BVIT0K5p4lcP6EYVDUkAWUFMOQ5hRNY82aTjykignM/k JV0O8zlbEkMfNXnx3D5p3YiJEvSoPkMTuBRHRR+NPoOW2BorKhUWWtzatKT X-Google-Smtp-Source: AK7set9uN1QVI8zmqryph3OV4QOkUFflT9lBl+Yi4Q+T2gduodx3UkjtrMpCVW1k+diwLpXpyOR38A== X-Received: by 2002:adf:e88d:0:b0:2bd:d812:9465 with SMTP id d13-20020adfe88d000000b002bdd8129465mr4313477wrm.7.1675802646351; Tue, 07 Feb 2023 12:44:06 -0800 (PST) Received: from [10.137.0.17] (ip-86-49-228-162.bb.vodafone.cz. [86.49.228.162]) by smtp.gmail.com with ESMTPSA id p4-20020a5d68c4000000b002c3e4f2ffdbsm7143086wrw.58.2023.02.07.12.44.04 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 07 Feb 2023 12:44:05 -0800 (PST) Content-Type: multipart/mixed; boundary="------------z0saJSUvc90TqSu15DjSpJR9" Message-ID: <4e679562-fd9a-33a3-ce71-cd7a27525f8e@enterprisedb.com> Date: Tue, 7 Feb 2023 21:44:02 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.6.0 Subject: Re: PATCH: Using BRIN indexes for sorted output To: Andres Freund Cc: Greg Stark , Matthias van de Meent , Zhihong Yu , PostgreSQL Hackers References: <1a7c2ff5-a855-64e9-0272-1f9947f8a558@enterprisedb.com> <1607e037-8c5b-1626-9f98-496f067b9eb5@enterprisedb.com> <0695af03-8bd3-f032-47aa-0657135ce45d@enterprisedb.com> <87964cda-e440-8759-2838-bc4628072a18@enterprisedb.com> <14568731-ac91-ce2d-1477-0e2504c72775@enterprisedb.com> <20221206185143.ivy3afwmkhloksgv@awork3.anarazel.de> Content-Language: en-US From: Tomas Vondra In-Reply-To: <20221206185143.ivy3afwmkhloksgv@awork3.anarazel.de> X-CLOUD-SEC-AV-Info: enterprisedb,google_mail,monitor X-CLOUD-SEC-AV-Sent: true X-Gm-Spam: 0 X-Gm-Phishy: 0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------z0saJSUvc90TqSu15DjSpJR9 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Hi, Here's an updated version of this patch series. There's still plenty of stuff to improve, but it fixes a number of issues I mentioned earlier. The two most important changes are: 1) handling of projections Until now queries with projection might have failed, due to not using the right slot, bogus var references and so on. The code was somewhat confused because the new node is somewhere in between a scan node and a sort (or more precisely, it combines both). I believe this version handles all of this correctly - the code that initializes the slots/projection info etc. needs serious cleanup, but should be correct. 2) handling of expressions The other improvement is handling of expressions - if you have a BRIN index on an expression, this should now work too. This also includes correct handling of collations (which the previous patches ignored). Similarly to the projections, I believe the code is correct but needs cleanup. In particular, I haven't paid close attention to memory management, so there might be memory leaks when evaluating expressions. The last two parts of the patch series (0009 and 0010) are about testing. 0009 adds a regular regression test with various combinations (projections, expressions, single- vs. multi-column indexes, ...). 0010 introduces a python script that randomly generates data sets, indexes and queries. I use it to both test random combinations and to evaluate performance. I don't expect it to be committed etc. - it's included only to keep it versioned with the rest of the patch. I did some basic benchmarking using the 0010 part, to evaluate the how this works for various cases. The script varies a number of parameters: - number of rows - table fill factor - randomness (how much ranges overlapp) - pages per range - limit / offset for queries - ... The script forces both a "seqscan" and "brinsort" plan, and collects timing info. The results are encouraging, I think. Attached are two charts, plotting speedup vs. fraction of tuples the query has to sort. speedup = (seqscan timing / brinsort timing) fraction = (limit + offset) / (table rows) A query with "limit 1 offset 0" has fraction ~0.0, query that scans everything (perhaps because it has no LIMIT/OFFSET) has ~1.0. For speedup, 1.0 means "no change" while values above 1.0 means the query gets faster. Both plots have log-scale y-axis. brinsort-all-data.gif shows results for all queries. There's significant speedup for small values of fraction (i.e. queries with limit, requiring few rows). This is expected, as this is pretty much the primary use case for the patch. The other thing is that the benefits quickly diminish - for fractions close to 0.0 the potential benefits are huge, but once you cross ~10% of the table, it's within 10x, for ~25% less than 5x etc. OTOH there are also a fair number of queries that got slower - those are the data points below 1.0. I've looked into many of them, and there are a couple reasons why that can happen: 1) random data set - When the ranges are very wide, BRIN Sort has to read most of the data, and it ends up sorting almost as many rows as the sequential scan. But it's more expensive, especially when combined with the following points. Note: I don't think is an issue in practice, because BRIN indexes would suck quite badly on such data, so no one is going to create such indexes in the first place. 2) tiny ranges - By default ranges are 1MB, but it's possible to make them much smaller. But BRIN Sort has to read/sort all ranges, and that gets more expensive with the number of ranges. Note: I'm not sure there's a way around this, although Matthias had some interesting ideas about how to keep the ranges sorted. But ultimately, I think this is fine, as long as it's costed correctly. For fractions close to 0.0 this is still going to be a huge win. 3) non-adaptive (and low) watermark_step - The number of sorts makes a huge difference - in an extreme case we could add the ranges one by one, with a sort after each. For small limit/offset that works, but for more rows it's quite pointless. Note: The adaptive step (adjusted during execution) works great, and the script sets explicit values mostly to trigger more corner cases. Also, I wonder if we should force higher values as we progress through the table - we still don't want to exceed work_mem, but the larger fraction we scan the more we should prefer larger "batches". The second "filter" chart (brinsort-filtered-data.gif) shows results filtered to only show runs with: - pages_per_range >= 32 - randomness <= 5% (i.e. each range covers about 5% of domain) - adaptive step (= -1) And IMO this looks much better - there are almost no slower queries, except for a bunch of queries that scan all the data. So, what are the next steps for this patch: 1) cleanup of the existing code (mentioned above) 2) improvement of the costing - This is probably the critical part, because we need a costing that allows us to identify the queries that are likely to be faster/slower. I believe this is doable - either now or using the new opclass-specific stats proposed in a separate patch (and kept in part 0001 for completeness). regards -- Tomas Vondra EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company --------------z0saJSUvc90TqSu15DjSpJR9 Content-Type: image/gif; name="brinsort-filtered-data.gif" Content-Disposition: attachment; filename="brinsort-filtered-data.gif" Content-Transfer-Encoding: base64 R0lGODlhUweHBPe2AAAAAAsLCxMTExwcHCMjIysrKzMzMzw8PDQ3PDQ7RjU8STU/UDZFXTdK aDlPdTlTfkRERExMTFRUVFxcXGRkZGtra3V1dXx8fDpXiDtgnT1lpj1rtj9zyT920UB41kB5 10F+5UGC7FKN71yS7VeQ7kKF9EaI9EyL9FGP9VWR9VuV9V+Y9mOW6mqa6mua6HSe5nCf7mSb 9mme9mCX8Xyk5HOi7nym7G2h9nSl93uq936r+Hen9oSEhIuLi5OTk5mZmaOjo6ysrLS0tLy8 vIyr35Ku3Zax3Juz2qa416u71aK32aS42qm72bK/1IOm4Yao4Imq4oSs7ZKz652665q04YKu 9oGu+IWx+Iu0+Iiy9ZC3+ZS6+Zq++Ze79I6w6KK857bA0rvE0rPC257B+Z/A96zD6rXJ6r3O 6brK5KXE9qPE+qjH+q3K+qzI9bLO+7DL97bQ+7zT+73S9cPDw8LHz8bJzszMzMLI0tLS0t7e 3t/f393d3d/f38LP48nT5MXS6NTa5dnc4sHX+8Xa/Mve/Mra9dLf997h5s/g/NPj/Nnn/d3p /dvk8+Dg4OHh4eLi4uPj4+Tk5OXl5ebm5ufn5+Xl5ejo6Onp6erq6uvr6+zs7O3t7e7u7u/v 7+zs7OPt/eLo8ubw/efw/uzz/vDw8PHx8fLy8vPz8/T09PX19fb29vf39/Ly8vL2/vX5/vj4 +Pn5+fr6+vv7+/z8/P39/f7+/v////7//////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAABTB4cEAAj/AG0JHEiwoMGD CBMqXMiwocOHECNKnEixosWLGDNq3Mixo8ePIEOKHEmypMmTKFOqXMmypcuXMGPKnEmzps2b OHPq3Mmzp8+fQIMKHUq0qNGjSJMqXcq0qdOnUKNKnUq1qtWrWLNq3cq1q9evYMOKHUu2rNmz aNOqXcu2rdu3cOPKnUu3rt27ePPq3cu3r9+/gAMLHky4sOHDiBMrXsy4sePHkCNLnky5suXL mDNr3sy5s+fPoEOLHk26tOnTqFOrXs26tevXsGPLnk27tu3buHPr3s27t+/fwIMLH068uPHj yJMrX868ufPn0KNLn069uvXr2LNr3869u/fv4MOL/x9Pvrz58+jTq1/Pvr379/Djy59Pv779 +/jz69/Pv7///wAGKOCABBZo4IEIJqjgggw26OCDEEYo4YQUVmjhhRhmqOGGHHbo4Ycghiji iCSWaOKJKKao4oostujiizDGKOOMNNZo44045qjjjjz26OOPQAYp5JBEFmnkkUgmqeSSTDbp 5JNQRinllFRWaeWVWGap5ZZcdunll2CGKeaYZJZp5plopqnmmmy26eabcMYp55x01mnnnXjm qeeefPbp55+ABirooIQWauihiCaq6KKMNuroo5BGKumklFZq6aWYZqrpppx26umnoIYq6qik lmrqqaimquqqrLbq6quwxv8q66y01mrrrbjmquuuvPbq66/ABivssMQWa+yxyCar7LLMNuvs s9BGK+201FZr7bXYZqvtttx26+234IYr7rjklmvuueimq+667Lbr7rvwxivvvPTWa++9+Oar 77789uvvvwAHLPDA7b7CycGlvELwwgw7RkkdEEcs8cQQ44GHI6VMRIkdHNtB8ccQ22HxHpSs MhEeEyuc0CsUq0zRHimDhIcQPlxgwc048/DDEHsoODElDQet5xw4F2300Tn/UIfJDg2B9NNQ W6DzHJw81IPRGSfEydFCWBQE1h1xIoTNUecsRNZKVZ0b2TfPIfTbdhJd9twXCOGyQk7PrTfO QKD/rdDVRftt0NZHO1LR14Fv9MrYexd9wRBJLc6Dbmxb4DbcmMcpd+NQ9wD0QnlzTnfPCwGO s+AFEW50D3dDhPjpGnFiuug3+4A6UHjwYMEFlBd9eebAs7k57Udf8HlCoRMP9QWkJzS7BbcP pLrRXU/0+s3RR8SJ7srnrHZQnPyAM++5Gf178OifOfzuPLTvvvsXVI40D0wjlLwFPwih//78 8x8EEDV7Gg+yZ4vnEXB6RjOcRK4HPYy8wgdI64EQ7EAJTqyiFJxwxByCIL/aDUUIjusdzs6X vhKKaX2QW8gqHFEHIHQwCHgzn0TwIL6jwdB5YNNa51rXEAYS0CHrs0AP/5qHkFfMoYMpBAoI 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 spe+/CUwgylMgWCimLLsFCcEqRbx8XKRw8xg7rbyPiq+iS6u5BwzwTPGosUnm0vb1jM3SMlw krOc5jwnOtOpznWys53qvJInhelMdxItmlv5j9XuFK94KgSeitzmm+awmu5J8SD8xCA46Rkn rlGHj8GJoEIjKtGJUrSiFr0oRjOqtIYAL5jz1Gic7KkV3UAUThc5IEQ4ypSPlolQLqnZujyY UJBexWFM8sgxaarTnfK0pz79KVCDarSUrHKYLBXqVUSqFct0tEzKOmi0flBUmRw1NjCNJ6Be k8uZInUp7/uBDvHix66StaxmPSv/WtOqVotOb6ryBOhaeTbWrbyCLm4lUxNh0lbfwbVMfMnh cABok5xq5RWGPSxiE6vYxCqEq3haLGQja1gLysgOmDgQJ+xAGAPFtbOe/SxoQyva0caGsLus KmlfolSt3KepXrkSENhoWs4ZZE5fChoQoFqm1VFwQgJx7J16GygnNi2rgQLCXVOr3OUyt7nO fS50iYba6K5WK//popwugt2sTPe1sZrILcnEW+GuC7h2Em6biFtc8CFEt9F9L3zjK9/50je6 rRGCa51LP/xScyqpEV6c7nNNq9w3v13hiLqGkFw44QG/Dn4whCP84B45eMB3kjCGMywEb+7M EVGSzxC2/1vfEZO4xCY+MYpTHN9SUAKTcuJEi81ZCkxQ4rIq1uWMaxzeG/O4xz7+MZCDLOQh E7nIRj4ykpOs5CUzuclOfjKUoyzlKVO5yla+MpazrOUtc7nLXv4ymMMs5jGTucxmPjOa06zm NbO5zW5+M5zjLOc507nOdr4znvOs5z3zuc9+/jOgAy3oQRO60IY+NKITrehFM7rRjn40pCMt 6UlTutKWvjSmM63pTXO6057+NKhDLepRk7rUpj41qlOt6lWzutWufjWsYy3rWdO61ra+Na5z retd87rXvv41sIMt7GETu9jGPjayk63sZTO72c5+NrSjLe1pU7va1r42trOt7f9tc7vb3v42 uMMt7nGTu9zmPje6063udbO73e5+N7zjLe9507ve9r43vvOt733zu9/+/jfAAy7wgRO84AY/ OMITrvCFM7zhDn84xCMu8YlTvOIWvzjGM67xjXO84x7/OMhDLvKRk7zkJj85ylOu8pWzvOUu fznMYy7zmdO85ja/Oc5zrvOd87znPv850IMu9KETvehGPzrSk670pTO96U5/OtSjLvWpU73q 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 Ow== --------------z0saJSUvc90TqSu15DjSpJR9 Content-Type: image/gif; name="brinsort-all-data.gif" Content-Disposition: attachment; filename="brinsort-all-data.gif" Content-Transfer-Encoding: base64 R0lGODlhUweHBPfFAAAAAAsLCxMTExwcHCMjIywsLDMzMzw8PDZGXzhPdURERExMTFNTU1xc XGRkZGxsbHV1dXx8fDtfmj1osEV4zlSO71aQ71uS7UKF9EaI9EuL9FGP9VWR9VuV9V+Y9kKD 726c52KW62eZ62ua6XOe5nKe6WOa9mme9mGX8neg5X2k5HWi7Hum7n2o7m2h9nOl93in9Xeo 93uq93Wm+H6s+Hep+H+w9YSEhIuLi5OTk5qamqSkpKurq7S0tLy8vI2r3pKu3Zax3Jyz2qa5 16y71aK22aS53Ku927K/1IKm4oao4Yqq4YSr7Yuv642y7ZSx4JK065y665q36IKt9YGu+Iax 94u09oWx+Iu0+JC29ZS69pu+9ZC3+ZS6+Zq++ZKv4aS+56e/56G/97bB0rzE0bTC2bzH2J7B +Z7D9q3C5anC67TH5bzL5LbK6aTD9anF86PE+qjH+qzK+qzJ9bPO+7XN9LbQ+7zT+73T9q/R /sPDw8LHz8XIzszMzMPK1sjM087Q09fX19TU1NLS0tnZ2dra2tvb293d3d/f397e3t3d3dPV 2sLO48zV5MTS6MfS5dbb5Nrd4c7c9MHX+8Xa/Mve/MPV89Le893g5s/g/NPj/Nnm/d3p/dvk 8uHh4eDg4OPj4+Li4uTk5OXl5efn5+Xl5enp6erq6uzs7O7u7u/v7+zs7OXq8+vu8uPt/ePq 9u7w8ufw/uzz/vDw8PHx8fLy8vPz8/X19fT09Pb29vf39/Ly8vL2/vX5/vn5+fj4+Pr6+vv7 +/z8/P39/f7+/v////7///3+/////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAABTB4cEAAj/AIsJHEiwoMGD CBMqXMiwocOHECNKnEixosWLGDNq3Mixo8ePIEOKHEmypMmTKFOqXMmypcuXMGPKnEmzps2b OHPq3Mmzp8+fQIMKHUq0qNGjSJMqXcq0qdOnUKNKnUq1qtWrWLNq3cq1q9evYMOKHUu2rNmz aNOqXcu2rdu3cOPKnUu3rt27ePPq3cu3r9+/gAMLHky4sOHDiBMrXsy4sePHkCNLnky5suXL mDNr3sy5s+fPoEOLHk26tOnTqFOrXs26tevXsGPLnk27tu3buHPr3s27t+/fwIMLH068uPHj yJMrX868ufPn0KNLn069uvXr2LNr3869u/fv4MOL/x9Pvrz58+jTq1/Pvr379/Djy59Pv779 +/jz69/Pv7///wAGKOCABBZo4IEIJqjgggw26OCDEEYo4YQUVmjhhRhmqOGGHHbo4Ycghiji iCSWaOKJKKao4oostujiizDGKOOMNNZo44045qjjjjz26OOPQAYp5JBEFmnkkUgmqeSSTDbp 5JNQRinllFRWaeWVWGap5ZZcdunll2CGKeaYZJZp5plopqnmmmy26eabcMYp55x01mnnnXjm qeeefPbp55+ABirooIQWauihiCaq6KKMNuroo5BGKumklFZq6aWYZqrpppx26umnoIYq6qik lmrqqaimquqqrLbq6quwxv8q66y01mrrrbjmquuuvPbq66/ABivssMQWa+yxyCar7LLMNuvs s9BGK+201FZr7bXYZqvtttx26+234IYr7rjklmvuueimq+667Lbr7rvwxivvvPTWa++9+Oar 77789uvvvwAHLPDA7f6SysG0/ELwwgw7RgofEEcs8cQQDzKIJ7RM9DDFHFNssSGk6DLRIBMr nNAvFJtMESIlgyRIDzlEAMHMNN+ggw+GKDgxKQ33rKceNAct9NA168CHyA75QPTSTENgsx6p PISD0BknlMrQPVjEA9UdpdKDzE3X3EPVSkWdG9gz6+Hz2nYCHfbbEfSgskJKv203zTuQrdDU Qev/bdDVQ3tS0dZ9b/TL13cHHYEPSR1+g25oQ6A225TH6XbiTOPA80J1Yw53zgvxTbPfBQEu NA7BUET46BqlIrrnM+dAOlCD3ABBBJAHPXnlvLN5OexDR7B5Qp0Dz3QEoCf0OgSzD2S60FlP tPrMzUeUiu3G12x2UKnoQDPuuQm9e+/kn/n77Tekr776EURO9A1II1Q8BDr0YP/9+OPPww4x L31D9cVYHgCfJzTBSWR6zMPIL3JANBz0oA+kSIUuaJEKT+iBB+6L3VB6oLjc0Wx85QuhmM7H uIXowhN82EEGeUA38UlEEN4bGguVxzWrZW5uDkEgAB1yPgjg4BAL+YUe/zJYQqBw8HseTJsI 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 rgN3Ot4C0WTnheESYXL2Rd0QUeF2g3TWY+H9BjrzfTKIE15Vg9/bOzOM095yt94AHuSEcQoW U+RGfuRFLgj3nNkIQeRGzuTUiOSwZwhHHl9QZeTn/WtIXrEQwck8kAMyWT/3C8w5hQN49Lw9 MOZOXuQVYQhLRVR64N+H51Li9j3Ud4TfKZG9pQdQzWc8YJgPAVZ+hjZoDuQLobA7/2DmYMNn ZBXYqXCLaENrxuYJT15TfZDoiw6aPWjku7hxRfTo/IzmdyrkpD4jEyRBIiHnSPFRiKjn7M3l EKHqNQUSsh5EsO7pvwbrpb7rwkLioYHrvB7s2OLroAHswn7s0/I6gLkZxo7szu4sxP4Zzf7s 1J4s0e4Z017t2k4s194Z2b7t4P4r3c4Z3x7u5q4r487suHzu7F4r6a4ZI9nu8p4r754Z5T7v +N4qQqUD/P7elsFj/M7vgJ7vBF/wBn/wCJ/wCr/wDN/wDv/wEB/xEj/xFF/xFn/xGJ/xGr/x HN/xHv/xIB/yIj/yJF/yJn/yKJ/yKr/yLN/yLv/yMB/zMv8/8zRf8zZ/8zif8zq/8zzf8z7/ 80Af9EI/9ERf9EZ/9Eif9Eq/9Ezf9E7/9FAf9VI/9VRf9VZ/9Vif9Vq/9Vzf9V7/9WAf9mI/ 9mQPHr9ACmivRmiP9mlBC2tf62Uf9wpCCgEPQhTF72nRBwEfnpss934vIXTP73Yf8Hm/9wdh CDuA1n+/+AUS+EtXEHe/7GGh9/wOezXN77vL+JrvH44/+HiPFpSvA7DnCQGv+Jt/+vzR+ZBP +KBv+ARB+vxu+qg/+/eh+gQR+YVf+V9V+rTf+5xf96v/+WcR+qPP+75//OkxQayOYcB/+6w/ foy7txLxC7Qg/SNB/Lsf+wlc/br/jvze3xu/0FKRz+89JYq2b3vPX4k2CUQCHfA8EJ6nkFMB P1ZGBUUXNP/1M210d5NgdpNXhP0AUUyXDx89dBzkQdAHqWINHXrysePgRB+CHF7EmFHjRo4d PX4EGVLkSJIlTZ5EmVLlSpYtXb6EGVPmTJo1bd7EmVPnTp49ff4EGlToUKJFjR5FmlTpUqZE B0mcGHUiD1oaSU3UgxGqjpIT+ejiIVUHw4sDxUb18aujnrNR+WjsM9FQx4k7MsY9OLcYrbZ5 yxrsu0NvU8KFDR9GnFjxYsaNHT+GHFnyZMqVLV/GnFlzSx99pe5Qi/HqwawXt3Y9yKfzZ4yp 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 WgcimKCCCzLYoIMPQhihhBNSWKGFF2KYoYYMnsJDDjjsEF1RuvSgAw46iIiRLoP4IEh+RAmy w4c8NDeWJx6CGFxVnuihR0wMebLDiT6AtpFsBBkipA59OEVLiTjk0IN5Gv3Sh4wg6sHUAwlF kOEvLA7yX1ipPKmDHkVOpYseJuawA5NFHYIjimhqxKOPDE1E3YZ78tmnn38CGqiggxJaqKGH IpqooosCemSgegFAAKOTUpXem5Rimqmmm3LaqaefghqqqKOSWmpZjgY6HV+mhgrpAqzCGqus s9Jaq6234pqrrrsuiCqgkP8qwOuiEEAnrLHHIpussssy26yzz0IblK+AEgtAltHueUph1WHb rbffghuuuOOSW665Bk37p04ABHsuhMQGYKC789Jbr7334puvvvtSle6f163Kr1mGlCSwwQcj nLDCCzPcMKM3QABBioJGIIABdDqcVQMCcJuxxx+DHLLII5Ncsskno5yyyiuz3LLLL8Mcs8wz 01yzzTfjnLPOO/Pcs88/Ax200EMTXbTRRyOdtNJLM920009DHbXUU1NdtdVXY5211ltz3bXX X4Mdtthjk1222Wejnbbaa7Pdtttvwx233HPTXbfdd+Odt9578923338DHrjggxNeuOGHI564 4ov/M964449DHrnkk1NeueWXY5655ptz3rnnn4Meuuijk1666aejnrrqq7Peuuuvwx677LPT Xrvtt+Oeu+678967778DH7zwwxNfvPHHI5+88ssz37zzz0MfvfTTU1+99ddjn73223Pfvfff gx+++OOTX77556Ofvvrrs9++++/DH7/889Nfv/3345+//vvz37///wMwgAIcIAELaMADIjCB ClwgAxvowAdCMIISnCAFK2jBC2IwgxrcIAc76MEPgjCEIhwhCUtowhOiMIUqXCELW+jCF8Iw hjKcIQ1raMMb4jCHOtwhD3vowx8CMYhCHCIRi2jEIyIxiUpcIhOb6MQnJEIxilKcIhWraMUr YjGLWtwiF7voxS+CMYxiHCMZy2jGM7YuIAA7 --------------z0saJSUvc90TqSu15DjSpJR9 Content-Type: text/x-patch; charset=UTF-8; name="0001-Allow-index-AMs-to-build-and-use-custom-sta-20230206.patch" Content-Disposition: attachment; filename*0="0001-Allow-index-AMs-to-build-and-use-custom-sta-20230206.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA1NWM3ZDkwNmRhOGY1MDBhNzI5MGZiYTg2MzRlZTQ4Yzc5YWZlZmQ3IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzLnZvbmRyYUBwb3N0 Z3Jlc3FsLm9yZz4KRGF0ZTogTW9uLCAxNyBPY3QgMjAyMiAxODozOToyOCArMDIwMApTdWJq ZWN0OiBbUEFUQ0ggMDEvMTBdIEFsbG93IGluZGV4IEFNcyB0byBidWlsZCBhbmQgdXNlIGN1 c3RvbSBzdGF0aXN0aWNzCgpTb21lIGluZGV4aW5nIEFNcyB3b3JrIHZlcnkgZGlmZmVyZW50 bHkgYW5kIGVzdGltYXRpbmcgdGhlbSB1c2luZwpleGlzdGluZyBzdGF0aXN0aWNzIGlzIHBy b2JsZW1hdGljLCBwcm9kdWNpbmcgdW5yZWxpYWJsZSBjb3N0aW5nLiBUaGlzCmFwcGxpZXMg ZS5nLiB0byBCUklOLCB3aGljaCByZWxpZXMgb24gcGFnZSByYW5nZXMsIG5vdCB0dXBsZSBw b2ludGVycy4KClRoaXMgYWRkcyBhbiBvcHRpb25hbCBBTSBwcm9jZWR1cmUsIGFsbG93aW5n IHRoZSBvcGZhbWlseSB0byBidWlsZApjdXN0b20gc3RhdGlzdGljcywgc3RvcmUgdGhlbSBp biBwZ19zdGF0aXN0aWMgYW5kIHRoZW4gdXNlIHRoZW0gZHVyaW5nCnBsYW5uaW5nLiBCeSBk ZWZhdWx0IHRoaXMgaXMgZGlzYWJsZWQsIGJ1dCBtYXkgYmUgZW5hYmxlZCBieSBzZXR0aW5n CgogICBTRVQgZW5hYmxlX2luZGV4YW1fc3RhdHMgPSB0cnVlOwoKVGhlbiBBTkFMWVpFIHdp bGwgY2FsbCB0aGUgb3B0aW9uYWwgcHJvY2VkdXJlIGZvciBhbGwgaW5kZXhlcy4KLS0tCiBz cmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMgICAgICAgICAgICAgICAgfCAgIDEgKwog c3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbl9taW5tYXguYyAgICAgICAgIHwgODIzICsr KysrKysrKysrKysrKysrKwogc3JjL2JhY2tlbmQvY29tbWFuZHMvYW5hbHl6ZS5jICAgICAg ICAgICAgICAgIHwgMTM1ICsrLQogc3JjL2JhY2tlbmQvc3RhdGlzdGljcy9leHRlbmRlZF9z dGF0cy5jICAgICAgIHwgICAyICsKIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9zZWxmdW5jcy5j ICAgICAgICAgICAgICB8ICA1OSArKwogc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5c2Nh Y2hlLmMgICAgICAgICAgIHwgIDQxICsKIHNyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3Rh Ymxlcy5jICAgICAgICAgICB8ICAxMCArCiBzcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3Rn cmVzcWwuY29uZi5zYW1wbGUgfCAgIDEgKwogc3JjL2luY2x1ZGUvYWNjZXNzL2FtYXBpLmgg ICAgICAgICAgICAgICAgICAgIHwgICAyICsKIHNyYy9pbmNsdWRlL2FjY2Vzcy9icmluLmgg ICAgICAgICAgICAgICAgICAgICB8ICA2MyArKwogc3JjL2luY2x1ZGUvYWNjZXNzL2JyaW5f aW50ZXJuYWwuaCAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdf YW1wcm9jLmRhdCAgICAgICAgICAgICB8ICA2NCArKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9w Z19wcm9jLmRhdCAgICAgICAgICAgICAgIHwgICA0ICsKIHNyYy9pbmNsdWRlL2NhdGFsb2cv cGdfc3RhdGlzdGljLmggICAgICAgICAgICB8ICAgNSArCiBzcmMvaW5jbHVkZS9jb21tYW5k cy92YWN1dW0uaCAgICAgICAgICAgICAgICAgfCAgIDIgKwogc3JjL2luY2x1ZGUvdXRpbHMv bHN5c2NhY2hlLmggICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvc3lzdmlld3Mub3V0ICAgICAgICB8ICAgMyArLQogMTcgZmlsZXMgY2hhbmdl ZCwgMTIxMSBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW4uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmlu L2JyaW4uYwppbmRleCBkZTE0MjdhMWUwLi5lOGJmMjBhNmJhIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2Jy aW4vYnJpbi5jCkBAIC05NSw2ICs5NSw3IEBAIGJyaW5oYW5kbGVyKFBHX0ZVTkNUSU9OX0FS R1MpCiAJYW1yb3V0aW5lLT5hbXN0cmF0ZWdpZXMgPSAwOwogCWFtcm91dGluZS0+YW1zdXBw b3J0ID0gQlJJTl9MQVNUX09QVElPTkFMX1BST0NOVU07CiAJYW1yb3V0aW5lLT5hbW9wdHNw cm9jbnVtID0gQlJJTl9QUk9DTlVNX09QVElPTlM7CisJYW1yb3V0aW5lLT5hbXN0YXRzcHJv Y251bSA9IEJSSU5fUFJPQ05VTV9TVEFUSVNUSUNTOwogCWFtcm91dGluZS0+YW1jYW5vcmRl ciA9IGZhbHNlOwogCWFtcm91dGluZS0+YW1jYW5vcmRlcmJ5b3AgPSBmYWxzZTsKIAlhbXJv dXRpbmUtPmFtY2FuYmFja3dhcmQgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9icmluL2JyaW5fbWlubWF4LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9i cmluX21pbm1heC5jCmluZGV4IDI0MzE1OTFiZTYuLjY3ZTY4YThiOGUgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW5fbWlubWF4LmMKKysrIGIvc3JjL2JhY2tl bmQvYWNjZXNzL2JyaW4vYnJpbl9taW5tYXguYwpAQCAtMTAsMTcgKzEwLDIyIEBACiAgKi8K ICNpbmNsdWRlICJwb3N0Z3Jlcy5oIgogCisjaW5jbHVkZSAiYWNjZXNzL2JyaW4uaCIKICNp bmNsdWRlICJhY2Nlc3MvYnJpbl9pbnRlcm5hbC5oIgorI2luY2x1ZGUgImFjY2Vzcy9icmlu X3Jldm1hcC5oIgogI2luY2x1ZGUgImFjY2Vzcy9icmluX3R1cGxlLmgiCiAjaW5jbHVkZSAi YWNjZXNzL2dlbmFtLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3N0cmF0bnVtLmgiCiAjaW5jbHVk ZSAiY2F0YWxvZy9wZ19hbW9wLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190eXBlLmgiCisj aW5jbHVkZSAibWlzY2FkbWluLmgiCisjaW5jbHVkZSAic3RvcmFnZS9idWZtZ3IuaCIKICNp bmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgogI2luY2x1ZGUgInV0aWxzL2RhdHVtLmgiCiAj aW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVsLmgiCiAj aW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIKKyNpbmNsdWRlICJ1dGlscy90aW1lc3RhbXAu aCIKIAogdHlwZWRlZiBzdHJ1Y3QgTWlubWF4T3BhcXVlCiB7CkBAIC0yNTMsNiArMjU4LDgy NCBAQCBicmluX21pbm1heF91bmlvbihQR19GVU5DVElPTl9BUkdTKQogCVBHX1JFVFVSTl9W T0lEKCk7CiB9CiAKKy8qIEZJWE1FIGNvcHkgb2YgYSBwcml2YXRlIHN0cnVjdCBmcm9tIGJy aW4uYyAqLwordHlwZWRlZiBzdHJ1Y3QgQnJpbk9wYXF1ZQoreworCUJsb2NrTnVtYmVyIGJv X3BhZ2VzUGVyUmFuZ2U7CisJQnJpblJldm1hcCAqYm9fcm1BY2Nlc3M7CisJQnJpbkRlc2Mg ICAqYm9fYmRlc2M7Cit9IEJyaW5PcGFxdWU7CisKKy8qCisgKiBDb21wYXJlIHJhbmdlcyBi eSBtaW52YWwgKGNvbGxhdGlvbiBhbmQgb3BlcmF0b3IgYXJlIHRha2VuIGZyb20gdGhlIGV4 dHJhCisgKiBhcmd1bWVudCwgd2hpY2ggaXMgZXhwZWN0ZWQgdG8gYmUgVHlwZUNhY2hlRW50 cnkpLgorICovCitzdGF0aWMgaW50CityYW5nZV9taW52YWxfY21wKGNvbnN0IHZvaWQgKmEs IGNvbnN0IHZvaWQgKmIsIHZvaWQgKmFyZykKK3sKKwlCcmluUmFuZ2UgKnJhID0gKihCcmlu UmFuZ2UgKiopIGE7CisJQnJpblJhbmdlICpyYiA9ICooQnJpblJhbmdlICoqKSBiOworCVR5 cGVDYWNoZUVudHJ5ICp0eXBlbnRyeSA9IChUeXBlQ2FjaGVFbnRyeSAqKSBhcmc7CisJRm1n ckluZm8gICAqY21wZnVuYyA9ICZ0eXBlbnRyeS0+Y21wX3Byb2NfZmluZm87CisJRGF0dW0J YzsKKwlpbnQJCXI7CisKKwljID0gRnVuY3Rpb25DYWxsMkNvbGwoY21wZnVuYywgdHlwZW50 cnktPnR5cGNvbGxhdGlvbiwKKwkJCQkJCSAgcmEtPm1pbl92YWx1ZSwgcmItPm1pbl92YWx1 ZSk7CisJciA9IERhdHVtR2V0SW50MzIoYyk7CisKKwlpZiAociAhPSAwKQorCQlyZXR1cm4g cjsKKworCWlmIChyYS0+Ymxrbm9fc3RhcnQgPCByYi0+Ymxrbm9fc3RhcnQpCisJCXJldHVy biAtMTsKKwllbHNlCisJCXJldHVybiAxOworfQorCisvKgorICogQ29tcGFyZSByYW5nZXMg YnkgbWF4dmFsIChjb2xsYXRpb24gYW5kIG9wZXJhdG9yIGFyZSB0YWtlbiBmcm9tIHRoZSBl eHRyYQorICogYXJndW1lbnQsIHdoaWNoIGlzIGV4cGVjdGVkIHRvIGJlIFR5cGVDYWNoZUVu dHJ5KS4KKyAqLworc3RhdGljIGludAorcmFuZ2VfbWF4dmFsX2NtcChjb25zdCB2b2lkICph LCBjb25zdCB2b2lkICpiLCB2b2lkICphcmcpCit7CisJQnJpblJhbmdlICpyYSA9ICooQnJp blJhbmdlICoqKSBhOworCUJyaW5SYW5nZSAqcmIgPSAqKEJyaW5SYW5nZSAqKikgYjsKKwlU eXBlQ2FjaGVFbnRyeSAqdHlwZW50cnkgPSAoVHlwZUNhY2hlRW50cnkgKikgYXJnOworCUZt Z3JJbmZvICAgKmNtcGZ1bmMgPSAmdHlwZW50cnktPmNtcF9wcm9jX2ZpbmZvOworCURhdHVt CWM7CisJaW50CQlyOworCisJYyA9IEZ1bmN0aW9uQ2FsbDJDb2xsKGNtcGZ1bmMsIHR5cGVu dHJ5LT50eXBjb2xsYXRpb24sCisJCQkJCQkgIHJhLT5tYXhfdmFsdWUsIHJiLT5tYXhfdmFs dWUpOworCXIgPSBEYXR1bUdldEludDMyKGMpOworCisJaWYgKHIgIT0gMCkKKwkJcmV0dXJu IHI7CisKKwlpZiAocmEtPmJsa25vX3N0YXJ0IDwgcmItPmJsa25vX3N0YXJ0KQorCQlyZXR1 cm4gLTE7CisJZWxzZQorCQlyZXR1cm4gMTsKK30KKworLyogY29tcGFyZSB2YWx1ZXMgdXNp bmcgYW4gb3BlcmF0b3IgZnJvbSB0eXBjYWNoZSAqLworc3RhdGljIGludAorcmFuZ2VfdmFs dWVzX2NtcChjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiLCB2b2lkICphcmcpCit7CisJ RGF0dW0JZGEgPSAqIChEYXR1bSAqKSBhOworCURhdHVtCWRiID0gKiAoRGF0dW0gKikgYjsK KwlUeXBlQ2FjaGVFbnRyeSAqdHlwZW50cnkgPSAoVHlwZUNhY2hlRW50cnkgKikgYXJnOwor CUZtZ3JJbmZvICAgKmNtcGZ1bmMgPSAmdHlwZW50cnktPmNtcF9wcm9jX2ZpbmZvOworCURh dHVtCWM7CisKKwljID0gRnVuY3Rpb25DYWxsMkNvbGwoY21wZnVuYywgdHlwZW50cnktPnR5 cGNvbGxhdGlvbiwKKwkJCQkJCSAgZGEsIGRiKTsKKwlyZXR1cm4gRGF0dW1HZXRJbnQzMihj KTsKK30KKworLyoKKyAqIG1pbnZhbF9lbmQKKyAqCQlEZXRlcm1pbmUgZmlyc3QgaW5kZXgg c28gdGhhdCAobWludmFsID4gdmFsdWUpLgorICoKKyAqIFRoZSBhcnJheSBvZiByYW5nZXMg aXMgZXhwZWN0ZWQgdG8gYmUgc29ydGVkIGJ5IG1pbnZhbHVlLCBzbyB0aGlzIGlzIHRoZSBm aXJzdAorICogcmFuZ2UgdGhhdCBjYW4ndCBwb3NzaWJseSBpbnRlcnNlY3Qgd2l0aCBhIHJh bmdlIGhhdmluZyAidmFsdWUiIGFzIG1heHZhbC4KKyAqLworc3RhdGljIGludAorbWludmFs X2VuZChCcmluUmFuZ2UgKipyYW5nZXMsIGludCBucmFuZ2VzLCBEYXR1bSB2YWx1ZSwgVHlw ZUNhY2hlRW50cnkgKnR5cGNhY2hlKQoreworCWludAkJc3RhcnQgPSAwLAorCQkJZW5kID0g KG5yYW5nZXMgLSAxKTsKKworCS8vIGV2ZXJ5dGhpbmcgbWF0Y2hlcworCWlmIChyYW5nZV92 YWx1ZXNfY21wKCZ2YWx1ZSwgJnJhbmdlc1tlbmRdLT5taW5fdmFsdWUsIHR5cGNhY2hlKSA+ PSAwKQorCQlyZXR1cm4gbnJhbmdlczsKKworCS8vIG5vIG1hdGNoZXMKKwlpZiAocmFuZ2Vf dmFsdWVzX2NtcCgmdmFsdWUsICZyYW5nZXNbc3RhcnRdLT5taW5fdmFsdWUsIHR5cGNhY2hl KSA8IDApCisJCXJldHVybiAwOworCisJd2hpbGUgKChlbmQgLSBzdGFydCkgPiAwKQorCXsK KwkJaW50IG1pZHBvaW50OworCQlpbnQgcjsKKworCQltaWRwb2ludCA9IHN0YXJ0ICsgKGVu ZCAtIHN0YXJ0KSAvIDI7CisKKwkJciA9IHJhbmdlX3ZhbHVlc19jbXAoJnZhbHVlLCAmcmFu Z2VzW21pZHBvaW50XS0+bWluX3ZhbHVlLCB0eXBjYWNoZSk7CisKKwkJaWYgKHIgPj0gMCkK KwkJCXN0YXJ0ID0gbWlkcG9pbnQgKyAxOworCQllbHNlCisJCQllbmQgPSBtaWRwb2ludDsK Kwl9CisKKwlBc3NlcnQocmFuZ2VzW3N0YXJ0XS0+bWluX3ZhbHVlID4gdmFsdWUpOworCUFz c2VydChyYW5nZXNbc3RhcnQtMV0tPm1pbl92YWx1ZSA8PSB2YWx1ZSk7CisKKwlyZXR1cm4g c3RhcnQ7Cit9CisKKworLyoKKyAqIGxvd2VyX2JvdW5kCisgKgkJRGV0ZXJtaW5lIGZpcnN0 IGluZGV4IHNvIHRoYXQgKHZhbHVlc1tpbmRleF0gPj0gdmFsdWUpLgorICoKKyAqIFRoZSBh cnJheSBvZiByYW5nZXMgaXMgZXhwZWN0ZWQgdG8gYmUgc29ydGVkIGJ5IG1heHZhbHVlLCBz byB0aGlzIGlzIHRoZSBmaXJzdAorICogcmFuZ2UgdGhhdCBjYW4gcG9zc2libHkgaW50ZXJz ZWN0IHdpdGggcmFuZ2UgaGF2aW5nICJ2YWx1ZSIgYXMgbWludmFsLgorICovCitzdGF0aWMg aW50Citsb3dlcl9ib3VuZChEYXR1bSAqdmFsdWVzLCBpbnQgbnZhbHVlcywgRGF0dW0gdmFs dWUsIFR5cGVDYWNoZUVudHJ5ICp0eXBjYWNoZSkKK3sKKwlpbnQJCXN0YXJ0ID0gMCwKKwkJ CWVuZCA9IChudmFsdWVzIC0gMSk7CisKKwkvLyBldmVyeXRoaW5nIG1hdGNoZXMKKwlpZiAo cmFuZ2VfdmFsdWVzX2NtcCgmdmFsdWUsICZ2YWx1ZXNbc3RhcnRdLCB0eXBjYWNoZSkgPD0g MCkKKwkJcmV0dXJuIDA7CisKKwkvLyBubyBtYXRjaGVzCisJaWYgKHJhbmdlX3ZhbHVlc19j bXAoJnZhbHVlLCAmdmFsdWVzW2VuZF0sIHR5cGNhY2hlKSA+IDApCisJCXJldHVybiBudmFs dWVzOworCisJd2hpbGUgKChlbmQgLSBzdGFydCkgPiAwKQorCXsKKwkJaW50CW1pZHBvaW50 OworCQlpbnQJcjsKKworCQltaWRwb2ludCA9IHN0YXJ0ICsgKGVuZCAtIHN0YXJ0KSAvIDI7 CisKKwkJciA9IHJhbmdlX3ZhbHVlc19jbXAoJnZhbHVlLCAmdmFsdWVzW21pZHBvaW50XSwg dHlwY2FjaGUpOworCisJCWlmIChyIDw9IDApCisJCQllbmQgPSBtaWRwb2ludDsKKwkJZWxz ZQorCQkJc3RhcnQgPSAobWlkcG9pbnQgKyAxKTsKKwl9CisKKwlBc3NlcnQodmFsdWVzW3N0 YXJ0XSA+PSB2YWx1ZSk7CisJQXNzZXJ0KHZhbHVlc1tzdGFydC0xXSA8IHZhbHVlKTsKKwor CXJldHVybiBzdGFydDsKK30KKworLyoKKyAqIHVwcGVyX2JvdW5kCisgKgkJRGV0ZXJtaW5l IGZpcnN0IGluZGV4IHNvIHRoYXQgKHZhbHVlc1tpbmRleF0gPiB2YWx1ZSkuCisgKgorICog VGhlIGFycmF5IG9mIHJhbmdlcyBpcyBleHBlY3RlZCB0byBiZSBzb3J0ZWQgYnkgbWludmFs dWUsIHNvIHRoaXMgaXMgdGhlIGZpcnN0CisgKiByYW5nZSB0aGF0IGNhbid0IHBvc3NpYmx5 IGludGVyc2VjdCB3aXRoIGEgcmFuZ2UgaGF2aW5nICJ2YWx1ZSIgYXMgbWF4dmFsLgorICov CitzdGF0aWMgaW50Cit1cHBlcl9ib3VuZChEYXR1bSAqdmFsdWVzLCBpbnQgbnZhbHVlcywg RGF0dW0gdmFsdWUsIFR5cGVDYWNoZUVudHJ5ICp0eXBjYWNoZSkKK3sKKwlpbnQJCXN0YXJ0 ID0gMCwKKwkJCWVuZCA9IChudmFsdWVzIC0gMSk7CisKKwkvLyBldmVyeXRoaW5nIG1hdGNo ZXMKKwlpZiAocmFuZ2VfdmFsdWVzX2NtcCgmdmFsdWUsICZ2YWx1ZXNbZW5kXSwgdHlwY2Fj aGUpID49IDApCisJCXJldHVybiBudmFsdWVzOworCisJLy8gbm8gbWF0Y2hlcworCWlmIChy YW5nZV92YWx1ZXNfY21wKCZ2YWx1ZSwgJnZhbHVlc1tzdGFydF0sIHR5cGNhY2hlKSA8IDAp CisJCXJldHVybiAwOworCisJd2hpbGUgKChlbmQgLSBzdGFydCkgPiAwKQorCXsKKwkJaW50 IG1pZHBvaW50OworCQlpbnQgcjsKKworCQltaWRwb2ludCA9IHN0YXJ0ICsgKGVuZCAtIHN0 YXJ0KSAvIDI7CisKKwkJciA9IHJhbmdlX3ZhbHVlc19jbXAoJnZhbHVlLCAmdmFsdWVzW21p ZHBvaW50XSwgdHlwY2FjaGUpOworCisJCWlmIChyID49IDApCisJCQlzdGFydCA9IG1pZHBv aW50ICsgMTsKKwkJZWxzZQorCQkJZW5kID0gbWlkcG9pbnQ7CisJfQorCisJQXNzZXJ0KHZh bHVlc1tzdGFydF0gPiB2YWx1ZSk7CisJQXNzZXJ0KHZhbHVlc1tzdGFydC0xXSA8PSB2YWx1 ZSk7CisKKwlyZXR1cm4gc3RhcnQ7Cit9CisKKy8qCisgKiBicmluX21pbm1heF9jb3VudF9v dmVybGFwcworICoJCUNhbGN1bGF0ZSBudW1iZXIgb2Ygb3ZlcmxhcHMuCisgKgorICogVGhp cyB1c2VzIHRoZSBtaW5yYW5nZXMgdG8gcXVpY2tseSBlbGltaW5hdGUgcmFuZ2VzIHRoYXQg Y2FuJ3QgcG9zc2libHkKKyAqIGludGVyc2VjdC4gV2Ugc2ltcGx5IHdhbGsgbWlucmFuZ2Vz IHVudGlsIG1pbnZhbCA+IGN1cnJlbnQgbWF4dmFsLCBhbmQKKyAqIHdlJ3JlIGRvbmUuCisg KgorICogVW5saWtlIGJyaW5fbWlubWF4X2NvdW50X292ZXJsYXBzMiwgdGhpcyBkb2VzIG5v dCBoYXZlIGlzc3VlcyB3aXRoIHdpZGUKKyAqIHJhbmdlcywgc28gdGhpcyBpcyB3aGF0IHdl IHNob3VsZCB1c2UuCisgKi8KK3N0YXRpYyB2b2lkCiticmluX21pbm1heF9jb3VudF9vdmVy bGFwcyhCcmluUmFuZ2UgKiptaW5yYW5nZXMsIGludCBucmFuZ2VzLAorCQkJCQkJICAgVHlw ZUNhY2hlRW50cnkgKnR5cGNhY2hlLCBCcmluTWlubWF4U3RhdHMgKnN0YXRzKQoreworCWlu dDY0CW5vdmVybGFwczsKKworCW5vdmVybGFwcyA9IDA7CisJZm9yIChpbnQgaSA9IDA7IGkg PCBucmFuZ2VzOyBpKyspCisJeworCQlEYXR1bQltYXh2YWwgPSBtaW5yYW5nZXNbaV0tPm1h eF92YWx1ZTsKKworCQkvKgorCQkgKiBEZXRlcm1pbmUgaW5kZXggb2YgdGhlIGZpcnN0IHJh bmdlIHdpdGggKG1pbnZhbCA+IGN1cnJlbnQgbWF4dmFsKQorCQkgKiBieSBiaW5hcnkgc2Vh cmNoLiBXZSBrbm93IGFsbCBvdGhlciByYW5nZXMgY2FuJ3Qgb3ZlcmxhcCB0aGUKKwkJICog Y3VycmVudCBvbmUuIFdlIHNpbXBseSBzdWJ0cmFjdCBpbmRleGVzIHRvIGNvdW50IHJhbmdl cy4KKwkJICovCisJCWludAkJaWR4ID0gbWludmFsX2VuZChtaW5yYW5nZXMsIG5yYW5nZXMs IG1heHZhbCwgdHlwY2FjaGUpOworCisJCS8qIC0xIGJlY2F1c2Ugd2UgZG9uJ3QgY291bnQg dGhlIHJhbmdlIGFzIGludGVyc2VjdGluZyB3aXRoIGl0c2VsZiAqLworCQlub3ZlcmxhcHMg Kz0gKGlkeCAtIGkgLSAxKTsKKwl9CisKKwkvKgorCSAqIFdlIG9ubHkgY291bnQgMS8yIHRo ZSByYW5nZXMgKG1pbnZhbCA+IGN1cnJlbnQgbWludmFsKSwgc28gdGhlIHRvdGFsCisJICog bnVtYmVyIG9mIG92ZXJsYXBzIGlzIHR3aWNlIHdoYXQgd2UgY291bnRlZC4KKwkgKi8KKwlu b3ZlcmxhcHMgKj0gMjsKKworCXN0YXRzLT5hdmdfb3ZlcmxhcHMgPSAoZG91YmxlKSBub3Zl cmxhcHMgLyBucmFuZ2VzOworfQorCisvKgorICogYnJpbl9taW5tYXhfbWF0Y2hfdHVwbGVz X3RvX3JhbmdlcworICoJCU1hdGNoIHR1cGxlcyB0byByYW5nZXMsIGNvdW50IGF2ZXJhZ2Ug bnVtYmVyIG9mIHJhbmdlcyBwZXIgdHVwbGUuCisgKgorICogQWx0ZXJuYXRpdmUgdG8gYnJp bl9taW5tYXhfbWF0Y2hfdHVwbGVzX3RvX3JhbmdlczIsIGxldmVyYWdpbmcgb3JkZXJpbmcK KyAqIG9mIHZhbHVlcywgbm90IHJhbmdlcy4KKyAqCisgKiBYWFggVGhpcyBzZWVtcyBsaWtl IHRoZSBvcHRpbWFsIHdheSB0byBkbyB0aGlzLgorICovCitzdGF0aWMgdm9pZAorYnJpbl9t aW5tYXhfbWF0Y2hfdHVwbGVzX3RvX3JhbmdlcyhCcmluUmFuZ2VzICpyYW5nZXMsCisJCQkJ CQkJCSAgIGludCBudW1yb3dzLCBIZWFwVHVwbGUgKnJvd3MsCisJCQkJCQkJCSAgIGludCBu dmFsdWVzLCBEYXR1bSAqdmFsdWVzLAorCQkJCQkJCQkgICBUeXBlQ2FjaGVFbnRyeSAqdHlw Y2FjaGUsCisJCQkJCQkJCSAgIEJyaW5NaW5tYXhTdGF0cyAqc3RhdHMpCit7CisJaW50NjQJ bm1hdGNoZXMgPSAwOworCWludDY0CW5tYXRjaGVzX3VuaXF1ZSA9IDA7CisJaW50NjQJbnZh bHVlc191bmlxdWUgPSAwOworCWludDY0CW5tYXRjaGVzX3ZhbHVlID0gMDsKKworCWludDY0 ICAqdW5pcXVlID0gKGludDY0ICopIHBhbGxvYzAoc2l6ZW9mKGludDY0KSAqIG52YWx1ZXMp OworCisJLyoKKwkgKiBCdWlsZCBydW5uaW5nIGNvdW50IG9mIHVuaXF1ZSB2YWx1ZXMuIFdl IGtub3cgdGhlcmUgYXJlIHVuaXF1ZVtpXQorCSAqIHVuaXF1ZSB2YWx1ZXMgaW4gdmFsdWVz IGFycmF5IHVwIHRvIGluZGV4ICJpIi4KKwkgKi8KKwl1bmlxdWVbMF0gPSAxOworCWZvciAo aW50IGkgPSAxOyBpIDwgbnZhbHVlczsgaSsrKQorCXsKKwkJaWYgKHJhbmdlX3ZhbHVlc19j bXAoJnZhbHVlc1tpLTFdLCAmdmFsdWVzW2ldLCB0eXBjYWNoZSkgPT0gMCkKKwkJCXVuaXF1 ZVtpXSA9IHVuaXF1ZVtpLTFdOworCQllbHNlCisJCQl1bmlxdWVbaV0gPSB1bmlxdWVbaS0x XSArIDE7CisJfQorCisJbnZhbHVlc191bmlxdWUgPSB1bmlxdWVbbnZhbHVlcy0xXTsKKwor CS8qCisJICogV2FsayB0aGUgcmFuZ2VzLCBmb3IgZWFjaCByYW5nZSBkZXRlcm1pbmUgdGhl IGZpcnN0L2xhc3QgbWFwcGluZworCSAqIHZhbHVlLiBVc2UgdGhlICJ1bmlxdWUiIGFycmF5 IHRvIGNvdW50IHRoZSB1bmlxdWUgdmFsdWVzLgorCSAqLworCWZvciAoaW50IGkgPSAwOyBp IDwgcmFuZ2VzLT5ucmFuZ2VzOyBpKyspCisJeworCQlpbnQJCXN0YXJ0OworCQlpbnQJCWVu ZDsKKworCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOworCisJCXN0YXJ0ID0gbG93ZXJfYm91 bmQodmFsdWVzLCBudmFsdWVzLCByYW5nZXMtPnJhbmdlc1tpXS5taW5fdmFsdWUsIHR5cGNh Y2hlKTsKKwkJZW5kID0gdXBwZXJfYm91bmQodmFsdWVzLCBudmFsdWVzLCByYW5nZXMtPnJh bmdlc1tpXS5tYXhfdmFsdWUsIHR5cGNhY2hlKTsKKworCQkvKiBpZiBub3RoaW5nIG1hdGNo ZXMgKGUuZy4gZW5kPTApLCBza2lwIHRoaXMgcmFuZ2UgKi8KKwkJaWYgKGVuZCA8PSBzdGFy dCkKKwkJCWNvbnRpbnVlOworCisJCW5tYXRjaGVzX3ZhbHVlID0gKGVuZCAtIHN0YXJ0KTsK KwkJbm1hdGNoZXNfdW5pcXVlICs9ICh1bmlxdWVbZW5kLTFdIC0gdW5pcXVlW3N0YXJ0XSAr IDEpOworCisJCUFzc2VydCgobm1hdGNoZXNfdmFsdWUgPj0gMSkgJiYgKG5tYXRjaGVzX3Zh bHVlIDw9IG52YWx1ZXMpKTsKKwkJQXNzZXJ0KChubWF0Y2hlc191bmlxdWUgPj0gMSkgJiYg KG5tYXRjaGVzX3VuaXF1ZSA8PSB1bmlxdWVbbnZhbHVlcy0xXSkpOworCisJCW5tYXRjaGVz ICs9IG5tYXRjaGVzX3ZhbHVlOworCX0KKworCUFzc2VydChubWF0Y2hlcyA+PSAwKTsKKwlB c3NlcnQobm1hdGNoZXNfdW5pcXVlID49IDApOworCisJc3RhdHMtPmF2Z19tYXRjaGVzID0g KGRvdWJsZSkgbm1hdGNoZXMgLyBudW1yb3dzOworCXN0YXRzLT5hdmdfbWF0Y2hlc191bmlx dWUgPSAoZG91YmxlKSBubWF0Y2hlc191bmlxdWUgLyBudmFsdWVzX3VuaXF1ZTsKK30KKwor LyoKKyAqIGJyaW5fbWlubWF4X3ZhbHVlX3N0YXRzCisgKgkJQ2FsY3VsYXRlIHN0YXRpc3Rp Y3MgYWJvdXQgbWludmFsL21heHZhbCB2YWx1ZXMuCisgKgorICogV2UgY2FsY3VsYXRlIHRo ZSBudW1iZXIgb2YgZGlzdGluY3QgdmFsdWVzLCBhbmQgYWxzbyBjb3JyZWxhdGlvbiB3aXRo IHJlc3BlY3QKKyAqIHRvIGJsa25vX3N0YXJ0LiBXZSBkb24ndCBjYWxjdWxhdGUgdGhlIHJl Z3VsYXIgY29ycmVsYXRpb24gY29lZmZpY2llbnQsIGJlY2F1c2UKKyAqIG91ciBnb2FsIGlz IHRvIGVzdGltYXRlIGhvdyBzZXF1ZW50aWFsIHRoZSBhY2Nlc3NlcyBhcmUuIFRoZSByZWd1 bGFyIGNvcnJlbGF0aW9uCisgKiB3b3VsZCBwcm9kdWNlIDAgZm9yIGN5Y2xpY2FsIGRhdGEg c2V0cyBsaWtlIG1vZChpLDEwMDAwMDApLCBidXQgaXQgbWF5IGJlIHF1aXRlCisgKiBzZXF1 YW50aWFsIGFjY2Vzcy4gTWF5YmUgaXQgc2hvdWxkIGJlIGNhbGxlZCBkaWZmZXJlbnRseSwg bm90IGNvcnJlbGF0aW9uPworICoKKyAqIFhYWCBNYXliZSB0aGlzIHNob3VsZCBjYWxjdWxh dGUgbWludmFsIHZzLiBtYXh2YWwgY29ycmVsYXRpb24gdG9vPworICoKKyAqIFhYWCBJIGRv bid0IGtub3cgaG93IGltcG9ydGFudCB0aGUgc2VxdWVudGlhbGl0eSBpcyAtIEJSSU4gZ2Vu ZXJhbGx5IHVzZXMgMU1CCisgKiBwYWdlIHJhbmdlcywgd2hpY2ggaXMgcHJldHR5IHNlcXVl bnRpYWwgYW5kIHRoZSBvbmUgcmFuZG9tIHNlZWsgaW4gYmV0d2VlbiBpcworICogbGlrZWx5 IGdvaW5nIHRvIGJlIG5lZ2xpZ2libGUuIE1heWJlIGZvciBzbWFsbCBwYWdlIHJhbmdlcyBp dCdsbCBtYXR0ZXIsIHRob3VnaC4KKyAqLworc3RhdGljIHZvaWQKK2JyaW5fbWlubWF4X3Zh bHVlX3N0YXRzKEJyaW5SYW5nZSAqKm1pbnJhbmdlcywgQnJpblJhbmdlICoqbWF4cmFuZ2Vz LAorCQkJCQkJaW50IG5yYW5nZXMsIFR5cGVDYWNoZUVudHJ5ICp0eXBjYWNoZSwKKwkJCQkJ CUJyaW5NaW5tYXhTdGF0cyAqc3RhdHMpCit7CisJLyogKi8KKwlpbnQ2NAltaW52YWxfbmRp c3QgPSAxLAorCQkJbWF4dmFsX25kaXN0ID0gMSwKKwkJCW1pbnZhbF9jb3JyID0gMCwKKwkJ CW1heHZhbF9jb3JyID0gMDsKKworCWZvciAoaW50IGkgPSAxOyBpIDwgbnJhbmdlczsgaSsr KQorCXsKKwkJaWYgKHJhbmdlX3ZhbHVlc19jbXAoJm1pbnJhbmdlc1tpLTFdLT5taW5fdmFs dWUsICZtaW5yYW5nZXNbaV0tPm1pbl92YWx1ZSwgdHlwY2FjaGUpICE9IDApCisJCQltaW52 YWxfbmRpc3QrKzsKKworCQlpZiAocmFuZ2VfdmFsdWVzX2NtcCgmbWF4cmFuZ2VzW2ktMV0t Pm1heF92YWx1ZSwgJm1heHJhbmdlc1tpXS0+bWF4X3ZhbHVlLCB0eXBjYWNoZSkgIT0gMCkK KwkJCW1heHZhbF9uZGlzdCsrOworCisJCS8qIGlzIGl0IGltbWVkaWF0ZWx5IHNlcXVlbnRp YWw/ICovCisJCWlmIChtaW5yYW5nZXNbaS0xXS0+Ymxrbm9fZW5kICsgMSA9PSBtaW5yYW5n ZXNbaV0tPmJsa25vX3N0YXJ0KQorCQkJbWludmFsX2NvcnIrKzsKKworCQkvKiBpcyBpdCBp bW1lZGlhdGVseSBzZXF1ZW50aWFsPyAqLworCQlpZiAobWF4cmFuZ2VzW2ktMV0tPmJsa25v X2VuZCArIDEgPT0gbWF4cmFuZ2VzW2ldLT5ibGtub19zdGFydCkKKwkJCW1heHZhbF9jb3Jy Kys7CisJfQorCisJc3RhdHMtPm1pbnZhbF9uZGlzdGluY3QgPSBtaW52YWxfbmRpc3Q7CisJ c3RhdHMtPm1heHZhbF9uZGlzdGluY3QgPSBtYXh2YWxfbmRpc3Q7CisKKwlzdGF0cy0+bWlu dmFsX2NvcnJlbGF0aW9uID0gKGRvdWJsZSkgbWludmFsX2NvcnIgLyBucmFuZ2VzOworCXN0 YXRzLT5tYXh2YWxfY29ycmVsYXRpb24gPSAoZG91YmxlKSBtYXh2YWxfY29yciAvIG5yYW5n ZXM7Cit9CisKKy8qCisgKiBicmluX21pbm1heF9pbmNyZW1lbnRfc3RhdHMKKyAqCQlDYWxj dWxhdGUgdGhlIGluY3JlbWVudCBzaXplIGZvciBtaW52YWwvbWF4dmFsIHN0ZXBzLgorICoK KyAqIENhbGN1bGF0ZXMgdGhlIG1pbnZhbC9tYXh2YWwgaW5jcmVtZW50IHNpemUsIGkuZS4g bnVtYmVyIG9mIHJvd3MgdGhhdCBuZWVkCisgKiB0byBiZSBhZGRlZCB0byB0aGUgc29ydC4g VGhpcyBzZXJ2ZXMgYXMgYW4gaW5wdXQgdG8gY2FsY3VsYXRpb24gb2YgYSBnb29kCisgKiB3 YXRlcm1hcmsgc3RlcC4KKyAqLworc3RhdGljIHZvaWQKK2JyaW5fbWlubWF4X2luY3JlbWVu dF9zdGF0cyhCcmluUmFuZ2UgKiptaW5yYW5nZXMsIEJyaW5SYW5nZSAqKm1heHJhbmdlcywK KwkJCQkJCQlpbnQgbnJhbmdlcywgRGF0dW0gKnZhbHVlcywgaW50IG52YWx1ZXMsCisJCQkJ CQkJVHlwZUNhY2hlRW50cnkgKnR5cGNhY2hlLCBCcmluTWlubWF4U3RhdHMgKnN0YXRzKQor eworCS8qICovCisJaW50NjQJbWludmFsX25kaXN0ID0gMSwKKwkJCW1heHZhbF9uZGlzdCA9 IDE7CisKKwlkb3VibGUJc3VtX21pbnZhbCA9IDAsCisJCQlzdW1fbWF4dmFsID0gMCwKKwkJ CW1heF9taW52YWwgPSAwLAorCQkJbWF4X21heHZhbCA9IDA7CisKKwlmb3IgKGludCBpID0g MTsgaSA8IG5yYW5nZXM7IGkrKykKKwl7CisJCWlmIChyYW5nZV92YWx1ZXNfY21wKCZtaW5y YW5nZXNbaS0xXS0+bWluX3ZhbHVlLCAmbWlucmFuZ2VzW2ldLT5taW5fdmFsdWUsIHR5cGNh Y2hlKSAhPSAwKQorCQl7CisJCQlkb3VibGUJcDsKKwkJCWludAkJc3RhcnQgPSB1cHBlcl9i b3VuZCh2YWx1ZXMsIG52YWx1ZXMsIG1pbnJhbmdlc1tpLTFdLT5taW5fdmFsdWUsIHR5cGNh Y2hlKTsKKwkJCWludAkJZW5kID0gdXBwZXJfYm91bmQodmFsdWVzLCBudmFsdWVzLCBtaW5y YW5nZXNbaV0tPm1pbl92YWx1ZSwgdHlwY2FjaGUpOworCisJCQkvKgorCQkJICogTWF5YmUg dGhlcmUgYXJlIG5vIG1hdGNoaW5nIHJvd3MsIGJ1dCB3ZSBzdGlsbCBuZWVkIHRvIGNvdW50 CisJCQkgKiB0aGlzIGFzIGRpc3RpbmN0IG1pbnZhbCAoZXZlbiB0aG91Z2ggdGhlIHNhbXBs ZSBpbmNyZWFzZSBpcyAwKS4KKwkJCSAqLworCQkJbWludmFsX25kaXN0Kys7CisKKwkJCUFz c2VydChlbmQgPj0gc3RhcnQpOworCisJCQkvKiBubyBzYW1wbGUgcm93cyBtYXRjaCB0aGlz LCBzbyBza2lwICovCisJCQlpZiAoZW5kID09IHN0YXJ0KQorCQkJCWNvbnRpbnVlOworCisJ CQlwID0gKGRvdWJsZSkgKGVuZCAtIHN0YXJ0KSAvIG52YWx1ZXM7CisKKwkJCW1heF9taW52 YWwgPSBNYXgobWF4X21pbnZhbCwgcCk7CisJCQlzdW1fbWludmFsICs9IHA7CisJCX0KKwor CQlpZiAocmFuZ2VfdmFsdWVzX2NtcCgmbWF4cmFuZ2VzW2ktMV0tPm1heF92YWx1ZSwgJm1h eHJhbmdlc1tpXS0+bWF4X3ZhbHVlLCB0eXBjYWNoZSkgIT0gMCkKKwkJeworCQkJZG91Ymxl CXA7CisJCQlpbnQJCXN0YXJ0ID0gdXBwZXJfYm91bmQodmFsdWVzLCBudmFsdWVzLCBtYXhy YW5nZXNbaS0xXS0+bWF4X3ZhbHVlLCB0eXBjYWNoZSk7CisJCQlpbnQJCWVuZCA9IHVwcGVy X2JvdW5kKHZhbHVlcywgbnZhbHVlcywgbWF4cmFuZ2VzW2ldLT5tYXhfdmFsdWUsIHR5cGNh Y2hlKTsKKworCQkJLyoKKwkJCSAqIE1heWJlIHRoZXJlIGFyZSBubyBtYXRjaGluZyByb3dz LCBidXQgd2Ugc3RpbGwgbmVlZCB0byBjb3VudAorCQkJICogdGhpcyBhcyBkaXN0aW5jdCBt YXh2YWwgKGV2ZW4gdGhvdWdoIHRoZSBzYW1wbGUgaW5jcmVhc2UgaXMgMCkuCisJCQkgKi8K KwkJCW1heHZhbF9uZGlzdCsrOworCisJCQlBc3NlcnQoZW5kID49IHN0YXJ0KTsKKworCQkJ Lyogbm8gc2FtcGxlIHJvd3MgbWF0Y2ggdGhpcywgc28gc2tpcCAqLworCQkJaWYgKGVuZCA9 PSBzdGFydCkKKwkJCQljb250aW51ZTsKKworCQkJcCA9IChkb3VibGUpIChlbmQgLSBzdGFy dCkgLyBudmFsdWVzOworCisJCQltYXhfbWF4dmFsID0gTWF4KG1heF9tYXh2YWwsIHApOwor CQkJc3VtX21heHZhbCArPSBwOworCQl9CisJfQorCisJc3RhdHMtPm1pbnZhbF9pbmNyZW1l bnRfYXZnID0gKHN1bV9taW52YWwgLyBtaW52YWxfbmRpc3QpOworCXN0YXRzLT5taW52YWxf aW5jcmVtZW50X21heCA9IG1heF9taW52YWw7CisKKwlzdGF0cy0+bWF4dmFsX2luY3JlbWVu dF9hdmcgPSAoc3VtX21heHZhbCAvIG1heHZhbF9uZGlzdCk7CisJc3RhdHMtPm1heHZhbF9p bmNyZW1lbnRfbWF4ID0gbWF4X21heHZhbDsKK30KKworLyoKKyAqIGJyaW5fbWlubWF4X3N0 YXRzCisgKgkJQ2FsY3VsYXRlIGN1c3RvbSBzdGF0aXN0aWNzIGZvciBhIEJSSU4gbWlubWF4 IGluZGV4LgorICoKKyAqIEF0IHRoZSBtb21lbnQgdGhpcyBjYWxjdWxhdGVzOgorICoKKyAq ICAtIG51bWJlciBvZiBzdW1tYXJpemVkL25vdC1zdW1tYXJpemVkIGFuZCBhbGwvaGFzIG51 bGxzIHJhbmdlcworICogIC0gYXZlcmFnZSBudW1iZXIgb2Ygb3ZlcmxhcHMgZm9yIGEgcmFu Z2UKKyAqICAtIGF2ZXJhZ2UgbnVtYmVyIG9mIHJvd3MgbWF0Y2hpbmcgYSByYW5nZQorICog IC0gbnVtYmVyIG9mIGRpc3RpbmN0IG1pbnZhbC9tYXh2YWwgdmFsdWVzCisgKgorICogWFhY IFRoaXMgY291bGQgYWxzbyBjYWxjdWxhdGUgY29ycmVsYXRpb24gb2YgdGhlIHJhbmdlIG1p bnZhbCwgc28gdGhhdAorICogd2UgY2FuIGVzdGltYXRlIGhvdyBtdWNoIHJhbmRvbSBJL08g d2lsbCBoYXBwZW4gZHVyaW5nIHRoZSBCcmluU29ydC4KKyAqIEFuZCBwZXJoYXBzIHdlIHNo b3VsZCBhbHNvIHNvcnQgdGhlIHJhbmdlcyBieSAobWludmFsLGJsb2NrX3N0YXJ0KSB0bwor ICogbWFrZSB0aGlzIGFzIHNlcXVlbnRpYWwgYXMgcG9zc2libGU/CisgKgorICogWFhYIEFu b3RoZXIgaW50ZXJlc3Rpbmcgc3RhdGlzdGljcyBtaWdodCBiZSB0aGUgbnVtYmVyIG9mIHJh bmdlcyB3aXRoCisgKiB0aGUgc2FtZSBtaW52YWwgKG9yIG51bWJlciBvZiBkaXN0aW5jdCBt aW52YWwgdmFsdWVzKSwgYmVjYXVzZSB0aGF0J3MKKyAqIGVzc2VudGlhbGx5IHdoYXQgd2Ug bmVlZCB0byBlc3RpbWF0ZSBob3cgbWFueSByYW5nZXMgd2lsbCBiZSByZWFkIGluCisgKiBv bmUgYnJpbnNvcnQgc3RlcC4gSW4gZmFjdCwga25vd2luZyB0aGUgbnVtYmVyIG9mIGRpc3Rp bmN0IG1pbnZhbAorICogdmFsdWVzIHRlbGxzIHVzIHRoZSBudW1iZXIgb2YgQnJpblNvcnQg bG9vcHMuCisgKgorICogWFhYIFdlIG1pZ2h0IGFsc28gY2FsY3VsYXRlIGEgaGlzdG9ncmFt IG9mIG1pbnZhbC9tYXh2YWwgdmFsdWVzLgorICoKKyAqIFhYWCBJIHdvbmRlciBpZiB3ZSBj b3VsZCB0cmFjayBmb3IgZWFjaCByYW5nZSB0cmFjayBwcm9iYWJpbGl0aWVzOgorICoKKyAq IC0gUDEgPSBQKHYgPD0gbWludmFsKQorICogLSBQMiA9IFAoeCA8PSBNYXgobWF4dmFsKSkg Zm9yIE1heChtYXh2YWwpIG92ZXIgcHJlY2VkaW5nIHJhbmdlcworICoKKyAqIFRoYXQgd291 bGQgYWxsb3cgdXMgdG8gZXN0aW1hdGUgaG93IG1hbnkgcmFuZ2VzIHdlJ2xsIGhhdmUgdG8g cmVhZCB0byBwcm9kdWNlCisgKiBhIHBhcnRpY3VsYXIgbnVtYmVyIG9mIHJvd3MsIGJlY2F1 c2Ugd2UgbmVlZCB0aGUgZmlyc3QgcHJvYmFiaWxpdHkgdG8gZXhjZWVkCisgKiB0aGUgcmVx dWVzdGVkIG51bWJlciBvZiByb3dzIChmcmFjdGlvbiBvZiB0aGUgdGFibGUpOgorICoKKyAq ICAgICAobGltaXQgcm93cyAvIHJlbHR1cGxlcykgPD0gUCh2IDw9IG1pbnZhbCkKKyAqCisg KiBhbmQgdGhlbiB0aGUgc2Vjb25kIHByb2JhYmlsaXR5IHdvdWxkIHNheSBob3cgbWFueSBy b3dzIHdlJ2xsIHByb2Nlc3MgKGVpdGhlcgorICogc29ydCBvciBzcGlsbCkuIEFuZCBpbnZl cnNlbHkgZm9yIHRoZSBERVNDIG9yZGVyaW5nLgorICoKKyAqIFRoZSBkaWZmZXJlbmNlIGJl dHdlZW4gUDEgZm9yIHR3byByYW5nZXMgaXMgaG93IG11Y2ggd2UnZCBoYXZlIHRvIHNvcnQK KyAqIGlmIHdlIG1vdmVkIHRoZSB3YXRlcm1hcmsgYmV0d2VlbiB0aGUgcmFuZ2VzIChmaXJz dCBtaW52YWwgdG8gc2Vjb25kIG9uZSkuCisgKiBUaGUgKFAyIC0gUDEpIGZvciB0aGUgbmV3 IHdhdGVybWFyayByYW5nZSBtZWFzdXJlcyB0aGUgbnVtYmVyIG9mIHJvd3MgaW4KKyAqIHRo ZSB0dXBsZXN0b3JlLiBXZSdsbCBuZWVkIHRvIGFnZ3JlZ2F0ZSB0aGlzLCB0aG91Z2gsIHdl IGNhbid0IGtlZXAgdGhlCisgKiB3aG9sZSBkYXRhIC0gcHJvYmFibHkgYXZlcmFnZS9tZWRp YW4vbWF4IGZvciB0aGUgZGlmZmVyZW5jZXMgd291bGQgYmUgbmljZS4KKyAqIE1pZ2h0IGJl IHRyaWNreSBmb3IgZGlmZmVyZW50IHdhdGVybWFyayBzdGVwIHZhbHVlcywgdGhvdWdoLgor ICoKKyAqIFRoaXMgd291bGQgYWxzbyBhbGxvdyBlc3RpbWF0aW5nIGhvdyBtYW55IHJvd3Mg d2lsbCBzcGlsbCBmcm9tIGVhY2ggcmFuZ2UsCisgKiBiZWNhdXNlIHdlIGhhdmUgYW4gZXN0 aW1hdGUgaG93IG1hbnkgcm93cyBtYXRjaCBhIHJhbmdlIG9uIGF2ZXJhZ2UsIGFuZAorICog d2UgY2FuIGNvbXBhcmUgaXQgdG8gdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBQMS4KKyAqCisg KiBPbmUgaXNzdWUgaXMgd2UgZG9uJ3QgaGF2ZSBhY3R1YWwgdHVwbGVzIGZyb20gdGhlIHJh bmdlcywgc28gd2UgY2FuJ3QKKyAqIG1lYXN1cmUgZXhhY3RseSBob3cgbWFueSByb3dzIHdv dWxkIHdlIGFkZC4gQnV0IHdlIGNhbiBtYXRjaCB0aGUgc2FtcGxlCisgKiBhbmQgYXQgbGVh c3QgZXN0aW1hdGUgdGhlIHRoZSBwcm9iYWJpbGl0eSBkaWZmZXJlbmNlLgorICoKKyAqIEFj dHVhbGx5IC0gd2UgZG8ga25vdyB0aGUgdHVwbGVzICphcmUqIGluIHRob3NlIHJhbmdlcywg YmVjYXVzZSBpZiB3ZQorICogYXNzdW1lIHRoZSB0dXBsZSBpcyBpbiBzb21lIG90aGVyIHJh bmdlLCB0aGF0IHJhbmdlIHdvdWxkIGhhdmUgdG8gaGF2ZQorICogYSBtaW5pbWFsL21heGlt YWwgdmFsdWUgc28gdGhhdCB0aGUgdmFsdWUgaXMgY29uc2lzdGVudC4gV2hpY2ggbWVhbnMK KyAqIHRoZSByYW5nZSBoYXMgdG8gYmUgYmV0d2VlbiB0aG9zZSByYW5nZXMuIE9mIGNvdXJz ZSwgdGhpcyBvbmx5IGVzdGltYXRlcworICogdGhlIHJvd3Mgd2UnZCBnb2luZyB0byBhZGQg dG8gdGhlIHR1cGxlc29ydCAtIHRoZXJlIG1pZ2h0IGJlIG1vcmUgcm93cworICogd2UgcmVh ZCBhbmQgc3BpbGwgdG8gdHVwbGVzdG9yZSwgYnV0IHRoYXQncyBzb21ldGhpbmcgd2UgY2Fu IGVzdGltYXRlCisgKiB1c2luZyBhdmVyYWdlIHR1cGxlcyBwZXIgcmFuZ2UuCisgKi8KK0Rh dHVtCiticmluX21pbm1heF9zdGF0cyhQR19GVU5DVElPTl9BUkdTKQoreworCVJlbGF0aW9u CQloZWFwUmVsID0gKFJlbGF0aW9uKSBQR19HRVRBUkdfUE9JTlRFUigwKTsKKwlSZWxhdGlv bgkJaW5kZXhSZWwgPSAoUmVsYXRpb24pIFBHX0dFVEFSR19QT0lOVEVSKDEpOworCUF0dHJO dW1iZXIJCWF0dG51bSA9IFBHX0dFVEFSR19JTlQxNigyKTsKKwlBdHRyTnVtYmVyCQloZWFw X2F0dG51bSA9IFBHX0dFVEFSR19JTlQxNigzKTsKKwlIZWFwVHVwbGUJICAgKnJvd3MgPSAo SGVhcFR1cGxlICopIFBHX0dFVEFSR19QT0lOVEVSKDQpOworCWludAkJCQludW1yb3dzID0g UEdfR0VUQVJHX0lOVDMyKDUpOworCisJQnJpbk9wYXF1ZSAqb3BhcXVlOworCUJsb2NrTnVt YmVyIG5ibG9ja3M7CisJQmxvY2tOdW1iZXIJbnJhbmdlczsKKwlCbG9ja051bWJlcgloZWFw QmxrOworCUJyaW5NZW1UdXBsZSAqZHR1cDsKKwlCcmluVHVwbGUgICpidHVwID0gTlVMTDsK KwlTaXplCQlidHVwc3ogPSAwOworCUJ1ZmZlcgkJYnVmID0gSW52YWxpZEJ1ZmZlcjsKKwlC cmluUmFuZ2VzICAqcmFuZ2VzOworCUJsb2NrTnVtYmVyCXBhZ2VzUGVyUmFuZ2U7CisJQnJp bkRlc2MJICAgKmJkZXNjOworCUJyaW5NaW5tYXhTdGF0cyAqc3RhdHM7CisKKwlPaWQJCQkJ dHlwb2lkOworCVR5cGVDYWNoZUVudHJ5ICp0eXBjYWNoZTsKKwlCcmluUmFuZ2UJICAqKm1p bnJhbmdlcywKKwkJCQkgICoqbWF4cmFuZ2VzOworCWludDY0CQkJcHJldl9taW5faW5kZXg7 CisKKwkvKgorCSAqIE1vc3RseSB3aGF0IGJyaW5iZWdpbnNjYW4gZG9lcyB0byBpbml0aWFs aXplIEJyaW5PcGFxdWUsIGV4Y2VwdCB0aGF0CisJICogd2UgdXNlIGFjdGl2ZSBzbmFwc2hv dCBpbnN0ZWFkIG9mIHRoZSBzY2FuIHNuYXBzaG90LgorCSAqLworCW9wYXF1ZSA9IHBhbGxv Y19vYmplY3QoQnJpbk9wYXF1ZSk7CisJb3BhcXVlLT5ib19ybUFjY2VzcyA9IGJyaW5SZXZt YXBJbml0aWFsaXplKGluZGV4UmVsLAorCQkJCQkJCQkJCQkgICAmb3BhcXVlLT5ib19wYWdl c1BlclJhbmdlLAorCQkJCQkJCQkJCQkgICBHZXRBY3RpdmVTbmFwc2hvdCgpKTsKKwlvcGFx dWUtPmJvX2JkZXNjID0gYnJpbl9idWlsZF9kZXNjKGluZGV4UmVsKTsKKworCWJkZXNjID0g b3BhcXVlLT5ib19iZGVzYzsKKwlwYWdlc1BlclJhbmdlID0gb3BhcXVlLT5ib19wYWdlc1Bl clJhbmdlOworCisJLyogbWFrZSBzdXJlIHRoZSBwcm92aWRlZCBhdHRudW0gaXMgdmFsaWQg Ki8KKwlBc3NlcnQoKGF0dG51bSA+IDApICYmIChhdHRudW0gPD0gYmRlc2MtPmJkX3R1cGRl c2MtPm5hdHRzKSk7CisKKwkvKgorCSAqIFdlIG5lZWQgdG8ga25vdyB0aGUgc2l6ZSBvZiB0 aGUgdGFibGUgc28gdGhhdCB3ZSBrbm93IGhvdyBsb25nIHRvIGl0ZXJhdGUKKwkgKiBvbiB0 aGUgcmV2bWFwIChhbmQgdG8gcHJlLWFsbG9jYXRlIHRoZSBhcnJheXMpLgorCSAqLworCW5i bG9ja3MgPSBSZWxhdGlvbkdldE51bWJlck9mQmxvY2tzKGhlYXBSZWwpOworCisJLyoKKwkg KiBIb3cgbWFueSByYW5nZXMgY2FuIHRoZXJlIGJlPyBXZSBzaW1wbHkgbG9vayBhdCB0aGUg bnVtYmVyIG9mIHBhZ2VzLAorCSAqIGRpdmlkZSBpdCBieSB0aGUgcGFnZXNfcGVyX3Jhbmdl LgorCSAqCisJICogWFhYIFdlIG5lZWQgdG8gYmUgY2FyZWZ1bCBub3QgdG8gb3ZlcmZsb3cg bnJhbmdlcywgc28gd2UganVzdCBkaXZpZGUKKwkgKiBhbmQgdGhlbiBtYXliZSBhZGQgMSBm b3IgcGFydGlhbCByYW5nZXMuCisJICovCisJbnJhbmdlcyA9IChuYmxvY2tzIC8gcGFnZXNQ ZXJSYW5nZSk7CisJaWYgKG5ibG9ja3MgJSBwYWdlc1BlclJhbmdlICE9IDApCisJCW5yYW5n ZXMgKz0gMTsKKworCS8qIGFsbG9jYXRlIGZvciBzcGFjZSwgYW5kIGFsc28gZm9yIHRoZSBh bHRlcm5hdGl2ZSBvcmRlcmluZyAqLworCXJhbmdlcyA9IHBhbGxvYzAob2Zmc2V0b2YoQnJp blJhbmdlcywgcmFuZ2VzKSArIG5yYW5nZXMgKiBzaXplb2YoQnJpblJhbmdlKSk7CisJcmFu Z2VzLT5ucmFuZ2VzID0gMDsKKworCS8qIGFsbG9jYXRlIGFuIGluaXRpYWwgaW4tbWVtb3J5 IHR1cGxlLCBvdXQgb2YgdGhlIHBlci1yYW5nZSBtZW1jeHQgKi8KKwlkdHVwID0gYnJpbl9u ZXdfbWVtdHVwbGUoYmRlc2MpOworCisJLyogcmVzdWx0IHN0YXRzICovCisJc3RhdHMgPSBw YWxsb2MwKHNpemVvZihCcmluTWlubWF4U3RhdHMpKTsKKwlTRVRfVkFSU0laRShzdGF0cywg c2l6ZW9mKEJyaW5NaW5tYXhTdGF0cykpOworCisJLyoKKwkgKiBOb3cgc2NhbiB0aGUgcmV2 bWFwLiAgV2Ugc3RhcnQgYnkgcXVlcnlpbmcgZm9yIGhlYXAgcGFnZSAwLAorCSAqIGluY3Jl bWVudGluZyBieSB0aGUgbnVtYmVyIG9mIHBhZ2VzIHBlciByYW5nZTsgdGhpcyBnaXZlcyB1 cyBhIGZ1bGwKKwkgKiB2aWV3IG9mIHRoZSB0YWJsZS4KKwkgKgorCSAqIFhYWCBXZSBjb3Vu dCB0aGUgcmFuZ2VzLCBhbmQgY291bnQgdGhlIHNwZWNpYWwgdHlwZXMgKG5vdCBzdW1tYXJp emVkLAorCSAqIGFsbC1udWxsIGFuZCBoYXMtbnVsbCkuIFRoZSByZWd1bGFyIHJhbmdlcyBh cmUgYWNjdW11bGF0ZWQgaW50byBhbgorCSAqIGFycmF5LCBzbyB0aGF0IHdlIGNhbiBjYWxj dWxhdGUgYWRkaXRpb25hbCBzdGF0aXN0aWNzIChvdmVybGFwcywgaGl0cworCSAqIGZvciBz YW1wbGUgdHVwbGVzLCBldGMpLgorCSAqCisJICogWFhYIFRoaXMgbmVlZHMgcmV0aGlua2lu ZyB0byBtYWtlIGl0IHdvcmsgd2l0aCBsYXJnZSBpbmRleGVzIHdpdGggbW9yZQorCSAqIHJh bmdlcyB0aGFuIHdlIGNhbiBmaXQgaW50byBtZW1vcnkgKHdvcmtfbWVtL21haW50ZW5hbmNl X3dvcmtfbWVtKS4KKwkgKi8KKwlmb3IgKGhlYXBCbGsgPSAwOyBoZWFwQmxrIDwgbmJsb2Nr czsgaGVhcEJsayArPSBwYWdlc1BlclJhbmdlKQorCXsKKwkJYm9vbAkJZ290dHVwbGUgPSBm YWxzZTsKKwkJQnJpblR1cGxlICAqdHVwOworCQlPZmZzZXROdW1iZXIgb2ZmOworCQlTaXpl CQlzaXplOworCisJCXN0YXRzLT5uX3JhbmdlcysrOworCisJCUNIRUNLX0ZPUl9JTlRFUlJV UFRTKCk7CisKKwkJdHVwID0gYnJpbkdldFR1cGxlRm9ySGVhcEJsb2NrKG9wYXF1ZS0+Ym9f cm1BY2Nlc3MsIGhlYXBCbGssICZidWYsCisJCQkJCQkJCQkgICAmb2ZmLCAmc2l6ZSwgQlVG RkVSX0xPQ0tfU0hBUkUsCisJCQkJCQkJCQkgICBHZXRBY3RpdmVTbmFwc2hvdCgpKTsKKwkJ aWYgKHR1cCkKKwkJeworCQkJZ290dHVwbGUgPSB0cnVlOworCQkJYnR1cCA9IGJyaW5fY29w eV90dXBsZSh0dXAsIHNpemUsIGJ0dXAsICZidHVwc3opOworCQkJTG9ja0J1ZmZlcihidWYs IEJVRkZFUl9MT0NLX1VOTE9DSyk7CisJCX0KKworCQkvKiBSYW5nZXMgd2l0aCBubyBpbmRl eGVkIHR1cGxlIGFyZSBpZ25vcmVkIGZvciBvdmVybGFwIGFuYWx5c2lzLiAqLworCQlpZiAo IWdvdHR1cGxlKQorCQl7CisJCQljb250aW51ZTsKKwkJfQorCQllbHNlCisJCXsKKwkJCWR0 dXAgPSBicmluX2RlZm9ybV90dXBsZShiZGVzYywgYnR1cCwgZHR1cCk7CisJCQlpZiAoZHR1 cC0+YnRfcGxhY2Vob2xkZXIpCisJCQl7CisJCQkJLyogUGxhY2Vob2xkZXJzIGNhbiBiZSBp Z25vcmVkIHRvbywgYXMgaWYgbm90IHN1bW1hcml6ZWQuICovCisJCQkJY29udGludWU7CisJ CQl9CisJCQllbHNlCisJCQl7CisJCQkJQnJpblZhbHVlcyAqYnZhbDsKKworCQkJCWJ2YWwg PSAmZHR1cC0+YnRfY29sdW1uc1thdHRudW0gLSAxXTsKKworCQkJCS8qIE9LIHRoaXMgcmFu Z2UgaXMgc3VtbWFyaXplZCAqLworCQkJCXN0YXRzLT5uX3N1bW1hcml6ZWQrKzsKKworCQkJ CWlmIChidmFsLT5idl9hbGxudWxscykKKwkJCQkJc3RhdHMtPm5fYWxsX251bGxzKys7CisK KwkJCQlpZiAoYnZhbC0+YnZfaGFzbnVsbHMpCisJCQkJCXN0YXRzLT5uX2hhc19udWxscysr OworCisJCQkJaWYgKCFidmFsLT5idl9hbGxudWxscykKKwkJCQl7CisJCQkJCUJyaW5SYW5n ZSAgKnJhbmdlOworCisJCQkJCXJhbmdlID0gJnJhbmdlcy0+cmFuZ2VzW3Jhbmdlcy0+bnJh bmdlcysrXTsKKworCQkJCQlyYW5nZS0+Ymxrbm9fc3RhcnQgPSBoZWFwQmxrOworCQkJCQly YW5nZS0+Ymxrbm9fZW5kID0gaGVhcEJsayArIChwYWdlc1BlclJhbmdlIC0gMSk7CisKKwkJ CQkJcmFuZ2UtPm1pbl92YWx1ZSA9IGJ2YWwtPmJ2X3ZhbHVlc1swXTsKKwkJCQkJcmFuZ2Ut Pm1heF92YWx1ZSA9IGJ2YWwtPmJ2X3ZhbHVlc1sxXTsKKwkJCQl9CisJCQl9CisJCX0KKwl9 CisKKwlpZiAoYnVmICE9IEludmFsaWRCdWZmZXIpCisJCVJlbGVhc2VCdWZmZXIoYnVmKTsK KworCS8qIGlmIHdlIGhhdmUgbm8gcmVndWxhciByYW5nZXMsIHdlJ3JlIGRvbmUgKi8KKwlp ZiAocmFuZ2VzLT5ucmFuZ2VzID09IDApCisJCWdvdG8gY2xlYW51cDsKKworCS8qCisJICog QnVpbGQgYXV4aWxpYXJ5IGluZm8gdG8gb3B0aW1pemUgdGhlIGNhbGN1bGF0aW9uLgorCSAq CisJICogV2UgaGF2ZSByYW5nZXMgaW4gdGhlIGJsb2NrbnVtIG9yZGVyLCBidXQgdGhhdCBp cyBub3QgdmVyeSB1c2VmdWwgd2hlbgorCSAqIGNhbGN1bGF0aW5nIHdoaWNoIHJhbmdlcyBp bnRlcnN0ZWN0IC0gd2UgY291bGQgY3Jvc3MtY2hlY2sgZXZlcnkgcmFuZ2UKKwkgKiBhZ2Fp bnN0IGV2ZXJ5IG90aGVyIHJhbmdlLCBidXQgdGhhdCdzIE8oTl4yKSBhbmQgdGh1cyBtYXkg Z2V0IGV4dHJlbWVseQorCSAqIGV4cGVuc2l2ZSBwcmV0dHkgcXVpY2spLgorCSAqCisJICog VG8gbWFrZSB0aGF0IGNoZWFwZXIsIHdlJ2xsIGJ1aWxkIHR3byBvcmRlcmluZ3MsIGFsbG93 aW5nIHVzIHRvIHF1aWNrbHkKKwkgKiBlbGltaW5hdGUgcmFuZ2VzIHRoYXQgY2FuJ3QgcG9z c2libHkgb3ZlcmxhcDoKKwkgKgorCSAqIC0gbWlucmFuZ2VzID0gcmFuZ2VzIG9yZGVyZWQg YnkgbWluX3ZhbHVlCisJICogLSBtYXhyYW5nZXMgPSByYW5nZXMgb3JkZXJlZCBieSBtYXhf dmFsdWUKKwkgKgorCSAqIFRvIGNvdW50IGludGVyc2VjdGlvbnMsIHdlJ2xsIHRoZW4gd2Fs ayBtYXhyYW5nZXMgKGkuZS4gcmFuZ2VzIG9yZGVyZWQKKwkgKiBieSBtYXh2YWwpLCBhbmQg Zm9yIGVhY2ggZm9sbG93aW5nIHJhbmdlIHdlJ2xsIGNoZWNrIGlmIGl0IG92ZXJsYXBzLgor CSAqIElmIHllcywgd2UnbGwgcHJvY2VlZCB0byB0aGUgbmV4dCBvbmUsIHVudGlsIHdlIGZp bmQgYSByYW5nZSB0aGF0IGRvZXMKKwkgKiBub3Qgb3ZlcmxhcC4gQnV0IHRoZXJlIG1pZ2h0 IGJlIGEgbGF0ZXIgcGFnZSBvdmVybGFwcGluZyAtIGJ1dCB3ZSBjYW4KKwkgKiB1c2UgYSBt aW5faW5kZXhfbG93ZXN0IHRyYWNraW5nIHRoZSBtaW5pbXVtIG1pbl9pbmRleCBmb3IgImZ1 dHVyZSIKKwkgKiByYW5nZXMgdG8gcXVpY2tseSBkZWNpZGUgaWYgdGhlcmUgYXJlIHN1Y2gg cmFuZ2VzLiBJZiB0aGVyZSBhcmUgbm9uZSwKKwkgKiB3ZSBjYW4gdGVybWluYXRlIChhbmQg cHJvY2VlZCB0byB0aGUgbmV4dCBtYXhyYW5nZXMgZWxlbWVudCksIGVsc2Ugd2UKKwkgKiBo YXZlIHRvIHByb2Nlc3MgYWRkaXRpb25hbCByYW5nZXMuCisJICoKKwkgKiBOb3RlOiBUaGlz IG9ubHkgY291bnRzIG92ZXJsYXBzIHdpdGggcmFuZ2VzIHdpdGggbWF4X3ZhbHVlIGhpZ2hl ciB0aGFuCisJICogdGhlIGN1cnJlbnQgb25lIC0gd2Ugd2FudCB0byBjb3VudCBhbGwsIGJ1 dCB0aGUgb3ZlcmxhcHMgd2l0aCBwcmVjZWRpbmcKKwkgKiByYW5nZXMgaGF2ZSBhbHJlYWR5 IGJlZW4gY291bnRlZCB3aGVuIHByb2Nlc3NpbmcgdGhvc2UgcHJlY2VkaW5nIHJhbmdlcy4K KwkgKiBUaGF0IGlzLCB3ZSdsbCBlbmQgdXAgd2l0aCBjb3VudGluZyBlYWNoIG92ZXJsYXAg anVzdCBmb3Igb25lIG9mIHRob3NlCisJICogcmFuZ2VzLCBzbyB3ZSBnZXQgb25seSAxLzIg dGhlIGNvdW50LgorCSAqCisJICogTm90ZTogV2UgZG9uJ3QgY291bnQgdGhlIHJhbmdlIGFz IG92ZXJsYXBwaW5nIHdpdGggaXRzZWxmLiBUaGlzIG5lZWRzCisJICogdG8gYmUgY29uc2lk ZXJlZCBsYXRlciwgd2hlbiBhcHBseWluZyB0aGUgc3RhdGlzdGljcy4KKwkgKgorCSAqCisJ ICogWFhYIFRoaXMgd2lsbCBub3Qgd29yayBmb3IgdmVyeSBtYW55IHJhbmdlcyAtIHdlIGNh biBoYXZlIHVwIHRvIDJeMzIgb2YKKwkgKiB0aGVtLCBzbyBhbGxvY2F0aW5nIGEgfjMyQiBz dHJ1Y3QgZm9yIGVhY2ggd291bGQgbmVlZCBhIGxvdCBvZiBtZW1vcnkuCisJICogTm90IHN1 cmUgd2hhdCB0byBkbyBhYm91dCB0aGF0LCBwZXJoYXBzIHdlIGNvdWxkIHNhbXBsZSBhIGNv dXBsZSByYW5nZXMKKwkgKiBhbmQgZG8gc29tZSBjYWxjdWxhdGlvbnMgYmFzZWQgb24gdGhh dD8gVGhhdCBpcywgd2UgY291bGQgcHJvY2VzcyBhbGwKKwkgKiByYW5nZXMgdXAgdG8gc29t ZSBudW1iZXIgKHNheSwgc3RhdGlzdGljc190YXJnZXQgKiAzMDAsIGFzIGZvciByb3dzKSwg YW5kCisJICogdGhlbiBzYW1wbGUgcmFuZ2VzIGZvciBsYXJnZXIgdGFibGVzLiBUaGVuIHNv cnQgdGhlIHNhbXBsZWQgcmFuZ2VzLCBhbmQKKwkgKiB3YWxrIHRocm91Z2ggYWxsIHJhbmdl cyBvbmNlLCBjb21wYXJpbmcgdGhlbSB0byB0aGUgc2FtcGxlIGFuZCBjb3VudGluZworCSAq IG92ZXJsYXBzIChoYXZpbmcgdGhlbSBzb3J0ZWQgc2hvdWxkIGFsbG93IG1ha2luZyB0aGlz IHF1aXRlIGVmZmljaWVudCwKKwkgKiBJIHRoaW5rIC0gZm9sbG93aW5nIGFsZ29yaXRobSBz aW1pbGFyIHRvIHRoZSBvbmUgaW1wbGVtZW50ZWQgaGVyZSkuCisJICovCisKKwkvKiBpbmZv IGFib3V0IG9yZGVyaW5nIGZvciB0aGUgZGF0YSB0eXBlICovCisJdHlwb2lkID0gZ2V0X2F0 dHR5cGUoUmVsYXRpb25HZXRSZWxpZChpbmRleFJlbCksIGF0dG51bSk7CisJdHlwY2FjaGUg PSBsb29rdXBfdHlwZV9jYWNoZSh0eXBvaWQsIFRZUEVDQUNIRV9DTVBfUFJPQ19GSU5GTyk7 CisKKwkvKiBzaG91bGRuJ3QgaGFwcGVuLCBJIHRoaW5rIC0gd2UgdXNlIHRoaXMgdG8gYnVp bGQgdGhlIGluZGV4ICovCisJQXNzZXJ0KE9pZElzVmFsaWQodHlwY2FjaGUtPmNtcF9wcm9j X2ZpbmZvLmZuX29pZCkpOworCisJbWlucmFuZ2VzID0gKEJyaW5SYW5nZSAqKikgcGFsbG9j MChyYW5nZXMtPm5yYW5nZXMgKiBzaXplb2YoQnJpblJhbmdlcyAqKSk7CisJbWF4cmFuZ2Vz ID0gKEJyaW5SYW5nZSAqKikgcGFsbG9jMChyYW5nZXMtPm5yYW5nZXMgKiBzaXplb2YoQnJp blJhbmdlcyAqKSk7CisKKwkvKgorCSAqIEJ1aWxkIGFuZCBzb3J0IHRoZSByYW5nZXMgbWlu X3ZhbHVlIC8gbWF4X3ZhbHVlIChqdXN0IHBvaW50ZXJzCisJICogdG8gdGhlIG1haW4gYXJy YXkpLiBUaGVuIGdvIGFuZCBhc3NpZ24gdGhlIG1pbl9pbmRleCB0byBlYWNoCisJICogcmFu Z2UsIGFuZCBmaW5hbGx5IHdhbGsgdGhlIG1heHJhbmdlcyBhcnJheSBiYWNrd2FyZHMgYW5k IHRyYWNrCisJICogdGhlIG1pbl9pbmRleF9sb3dlc3QgYXMgbWluaW11bSBvZiAiZnV0dXJl IiBpbmRleGVzLgorCSAqLworCWZvciAoaW50IGkgPSAwOyBpIDwgcmFuZ2VzLT5ucmFuZ2Vz OyBpKyspCisJeworCQltaW5yYW5nZXNbaV0gPSAmcmFuZ2VzLT5yYW5nZXNbaV07CisJCW1h eHJhbmdlc1tpXSA9ICZyYW5nZXMtPnJhbmdlc1tpXTsKKwl9CisKKwlxc29ydF9hcmcobWlu cmFuZ2VzLCByYW5nZXMtPm5yYW5nZXMsIHNpemVvZihCcmluUmFuZ2UgKiksCisJCQkgIHJh bmdlX21pbnZhbF9jbXAsIHR5cGNhY2hlKTsKKworCXFzb3J0X2FyZyhtYXhyYW5nZXMsIHJh bmdlcy0+bnJhbmdlcywgc2l6ZW9mKEJyaW5SYW5nZSAqKSwKKwkJCSAgcmFuZ2VfbWF4dmFs X2NtcCwgdHlwY2FjaGUpOworCisJLyoKKwkgKiBVcGRhdGUgdGhlIG1pbl9pbmRleCBmb3Ig ZWFjaCByYW5nZS4gSWYgdGhlIHZhbHVlcyBhcmUgZXF1YWwsIGJlIHN1cmUgdG8KKwkgKiBw aWNrIHRoZSBsb3dlc3QgaW5kZXggd2l0aCB0aGF0IG1pbl92YWx1ZS4KKwkgKi8KKwltaW5y YW5nZXNbMF0tPm1pbl9pbmRleCA9IDA7CisJZm9yIChpbnQgaSA9IDE7IGkgPCByYW5nZXMt Pm5yYW5nZXM7IGkrKykKKwl7CisJCWlmIChyYW5nZV92YWx1ZXNfY21wKCZtaW5yYW5nZXNb aV0tPm1pbl92YWx1ZSwgJm1pbnJhbmdlc1tpLTFdLT5taW5fdmFsdWUsIHR5cGNhY2hlKSA9 PSAwKQorCQkJbWlucmFuZ2VzW2ldLT5taW5faW5kZXggPSBtaW5yYW5nZXNbaS0xXS0+bWlu X2luZGV4OworCQllbHNlCisJCQltaW5yYW5nZXNbaV0tPm1pbl9pbmRleCA9IGk7CisJfQor CisJLyoKKwkgKiBXYWxrIHRoZSBtYXhyYW5nZXMgYmFja3dhcmQgYW5kIGFzc2lnbiB0aGUg bWluX2luZGV4X2xvd2VzdCBhcworCSAqIGEgcnVubmluZyBtaW5pbXVtLgorCSAqLworCXBy ZXZfbWluX2luZGV4ID0gcmFuZ2VzLT5ucmFuZ2VzOworCWZvciAoaW50IGkgPSAocmFuZ2Vz LT5ucmFuZ2VzIC0gMSk7IGkgPj0gMDsgaS0tKQorCXsKKwkJbWF4cmFuZ2VzW2ldLT5taW5f aW5kZXhfbG93ZXN0ID0gTWluKG1heHJhbmdlc1tpXS0+bWluX2luZGV4LAorCQkJCQkJCQkJ CQkgcHJldl9taW5faW5kZXgpOworCQlwcmV2X21pbl9pbmRleCA9IG1heHJhbmdlc1tpXS0+ bWluX2luZGV4X2xvd2VzdDsKKwl9CisKKwkvKiBjYWxjdWxhdGUgYXZlcmFnZSBudW1iZXIg b2Ygb3ZlcmxhcHBpbmcgcmFuZ2VzIGZvciBhbnkgcmFuZ2UgKi8KKwlicmluX21pbm1heF9j b3VudF9vdmVybGFwcyhtaW5yYW5nZXMsIHJhbmdlcy0+bnJhbmdlcywgdHlwY2FjaGUsIHN0 YXRzKTsKKworCS8qIGNhbGN1bGF0ZSBtaW52YWwvbWF4dmFsIHN0YXRzIChkaXN0aW5jdCB2 YWx1ZXMgYW5kIGNvcnJlbGF0aW9uKSAqLworCWJyaW5fbWlubWF4X3ZhbHVlX3N0YXRzKG1p bnJhbmdlcywgbWF4cmFuZ2VzLAorCQkJCQkJCXJhbmdlcy0+bnJhbmdlcywgdHlwY2FjaGUs IHN0YXRzKTsKKworCS8qIG1hdGNoIHR1cGxlcyB0byByYW5nZXMgKi8KKwl7CisJCWludAkJ bnZhbHVlcyA9IDA7CisJCURhdHVtICAqdmFsdWVzID0gKERhdHVtICopIHBhbGxvYzAobnVt cm93cyAqIHNpemVvZihEYXR1bSkpOworCisJCVR1cGxlRGVzYwl0ZGVzYyA9IFJlbGF0aW9u R2V0RGVzY3IoaGVhcFJlbCk7CisKKwkJZm9yIChpbnQgaSA9IDA7IGkgPCBudW1yb3dzOyBp KyspCisJCXsKKwkJCWJvb2wJaXNudWxsOworCQkJRGF0dW0JdmFsdWU7CisKKwkJCXZhbHVl ID0gaGVhcF9nZXRhdHRyKHJvd3NbaV0sIGhlYXBfYXR0bnVtLCB0ZGVzYywgJmlzbnVsbCk7 CisJCQlpZiAoIWlzbnVsbCkKKwkJCQl2YWx1ZXNbbnZhbHVlcysrXSA9IHZhbHVlOworCQl9 CisKKwkJcXNvcnRfYXJnKHZhbHVlcywgbnZhbHVlcywgc2l6ZW9mKERhdHVtKSwgcmFuZ2Vf dmFsdWVzX2NtcCwgdHlwY2FjaGUpOworCisJCS8qIG9wdGltaXplZCBhbGdvcml0aG0gKi8K KwkJYnJpbl9taW5tYXhfbWF0Y2hfdHVwbGVzX3RvX3JhbmdlcyhyYW5nZXMsCisJCQkJCQkJ CQkJICAgbnVtcm93cywgcm93cywgbnZhbHVlcywgdmFsdWVzLAorCQkJCQkJCQkJCSAgIHR5 cGNhY2hlLCBzdGF0cyk7CisKKwkJYnJpbl9taW5tYXhfaW5jcmVtZW50X3N0YXRzKG1pbnJh bmdlcywgbWF4cmFuZ2VzLCByYW5nZXMtPm5yYW5nZXMsCisJCQkJCQkJCQl2YWx1ZXMsIG52 YWx1ZXMsIHR5cGNhY2hlLCBzdGF0cyk7CisJfQorCisJLyoKKwkgKiBQb3NzaWJseSBxdWl0 ZSBsYXJnZSwgc28gcmVsZWFzZSBleHBsaWNpdGx5IGFuZCBkb24ndCByZWx5CisJICogb24g dGhlIG1lbW9yeSBjb250ZXh0IHRvIGRpc2NhcmQgdGhpcy4KKwkgKi8KKwlwZnJlZShtaW5y YW5nZXMpOworCXBmcmVlKG1heHJhbmdlcyk7CisKK2NsZWFudXA6CisJLyogcG9zc2libHkg cXVpdGUgbGFyZ2UsIHNvIHJlbGVhc2UgZXhwbGljaXRseSAqLworCXBmcmVlKHJhbmdlcyk7 CisKKwkvKiBmcmVlIHRoZSBCcmluT3BhcXVlLCBqdXN0IGxpa2UgYnJpbmVuZHNjYW4oKSB3 b3VsZCAqLworCWJyaW5SZXZtYXBUZXJtaW5hdGUob3BhcXVlLT5ib19ybUFjY2Vzcyk7CisJ YnJpbl9mcmVlX2Rlc2Mob3BhcXVlLT5ib19iZGVzYyk7CisKKwlQR19SRVRVUk5fUE9JTlRF UihzdGF0cyk7Cit9CisKIC8qCiAgKiBDYWNoZSBhbmQgcmV0dXJuIHRoZSBwcm9jZWR1cmUg Zm9yIHRoZSBnaXZlbiBzdHJhdGVneS4KICAqCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9j b21tYW5kcy9hbmFseXplLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9hbmFseXplLmMKaW5k ZXggYzg2ZTY5MDk4MC4uMDdhZTRlYWRiOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29t bWFuZHMvYW5hbHl6ZS5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FuYWx5emUuYwpA QCAtMTYsNiArMTYsNyBAQAogCiAjaW5jbHVkZSA8bWF0aC5oPgogCisjaW5jbHVkZSAiYWNj ZXNzL2JyaW5faW50ZXJuYWwuaCIKICNpbmNsdWRlICJhY2Nlc3MvZGV0b2FzdC5oIgogI2lu Y2x1ZGUgImFjY2Vzcy9nZW5hbS5oIgogI2luY2x1ZGUgImFjY2Vzcy9tdWx0aXhhY3QuaCIK QEAgLTMwLDYgKzMxLDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL2NhdGFsb2cuaCIKICNpbmNs dWRlICJjYXRhbG9nL2luZGV4LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9pbmRleGluZy5oIgor I2luY2x1ZGUgImNhdGFsb2cvcGdfYW0uaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2NvbGxh dGlvbi5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfaW5oZXJpdHMuaCIKICNpbmNsdWRlICJj YXRhbG9nL3BnX25hbWVzcGFjZS5oIgpAQCAtODEsNiArODMsNyBAQCB0eXBlZGVmIHN0cnVj dCBBbmxJbmRleERhdGEKIAogLyogRGVmYXVsdCBzdGF0aXN0aWNzIHRhcmdldCAoR1VDIHBh cmFtZXRlcikgKi8KIGludAkJCWRlZmF1bHRfc3RhdGlzdGljc190YXJnZXQgPSAxMDA7Citi b29sCQllbmFibGVfaW5kZXhhbV9zdGF0cyA9IGZhbHNlOwogCiAvKiBBIGZldyB2YXJpYWJs ZXMgdGhhdCBkb24ndCBzZWVtIHdvcnRoIHBhc3NpbmcgYXJvdW5kIGFzIHBhcmFtZXRlcnMg Ki8KIHN0YXRpYyBNZW1vcnlDb250ZXh0IGFubF9jb250ZXh0ID0gTlVMTDsKQEAgLTkyLDcg Kzk1LDcgQEAgc3RhdGljIHZvaWQgZG9fYW5hbHl6ZV9yZWwoUmVsYXRpb24gb25lcmVsLAog CQkJCQkJICAgQWNxdWlyZVNhbXBsZVJvd3NGdW5jIGFjcXVpcmVmdW5jLCBCbG9ja051bWJl ciByZWxwYWdlcywKIAkJCQkJCSAgIGJvb2wgaW5oLCBib29sIGluX291dGVyX3hhY3QsIGlu dCBlbGV2ZWwpOwogc3RhdGljIHZvaWQgY29tcHV0ZV9pbmRleF9zdGF0cyhSZWxhdGlvbiBv bmVyZWwsIGRvdWJsZSB0b3RhbHJvd3MsCi0JCQkJCQkJCUFubEluZGV4RGF0YSAqaW5kZXhk YXRhLCBpbnQgbmluZGV4ZXMsCisJCQkJCQkJCUFubEluZGV4RGF0YSAqaW5kZXhkYXRhLCBS ZWxhdGlvbiAqaW5kZXhSZWxzLCBpbnQgbmluZGV4ZXMsCiAJCQkJCQkJCUhlYXBUdXBsZSAq cm93cywgaW50IG51bXJvd3MsCiAJCQkJCQkJCU1lbW9yeUNvbnRleHQgY29sX2NvbnRleHQp Owogc3RhdGljIFZhY0F0dHJTdGF0cyAqZXhhbWluZV9hdHRyaWJ1dGUoUmVsYXRpb24gb25l cmVsLCBpbnQgYXR0bnVtLApAQCAtNDUzLDE1ICs0NTYsNDkgQEAgZG9fYW5hbHl6ZV9yZWwo UmVsYXRpb24gb25lcmVsLCBWYWN1dW1QYXJhbXMgKnBhcmFtcywKIAkJewogCQkJQW5sSW5k ZXhEYXRhICp0aGlzZGF0YSA9ICZpbmRleGRhdGFbaW5kXTsKIAkJCUluZGV4SW5mbyAgKmlu ZGV4SW5mbzsKKwkJCWJvb2wJCWNvbGxlY3RBbVN0YXRzOworCQkJT2lkCQkJcmVncHJvYzsK IAogCQkJdGhpc2RhdGEtPmluZGV4SW5mbyA9IGluZGV4SW5mbyA9IEJ1aWxkSW5kZXhJbmZv KElyZWxbaW5kXSk7CiAJCQl0aGlzZGF0YS0+dHVwbGVGcmFjdCA9IDEuMDsgLyogZml4IGxh dGVyIGlmIHBhcnRpYWwgKi8KLQkJCWlmIChpbmRleEluZm8tPmlpX0V4cHJlc3Npb25zICE9 IE5JTCAmJiB2YV9jb2xzID09IE5JTCkKKworCQkJLyoKKwkJCSAqIFNob3VsZCB3ZSBjb2xs ZWN0IEFNLXNwZWNpZmljIHN0YXRpc3RpY3MgZm9yIGFueSBvZiB0aGUgY29sdW1ucz8KKwkJ CSAqCisJCQkgKiBJZiBBTS1zcGVjaWZpYyBzdGF0aXN0aWNzIGFyZSBlbmFibGVkICh1c2lu ZyBhIEdVQyksIHNlZSBpZiB3ZQorCQkJICogaGF2ZSBhbiBvcHRpb25hbCBzdXBwb3J0IHBy b2NlZHVyZSB0byBidWlsZCB0aGUgc3RhdGlzdGljcy4KKwkJCSAqCisJCQkgKiBJZiB0aGVy ZSdzIGFueSBzdWNoIGF0dHJpYnV0ZSwgd2UganVzdCBmb3JjZSBidWlsZGluZyBzdGF0cwor CQkJICogZXZlbiBmb3IgcmVndWxhciBpbmRleCBrZXlzIChub3QganVzdCBleHByZXNzaW9u cykgYW5kIGluZGV4ZXMKKwkJCSAqIHdpdGhvdXQgcHJlZGljYXRlcy4gSXQnZCBiZSBnb29k IHRvIG9ubHkgYnVpbGQgdGhlIEFNIHN0YXRzLCBidXQKKwkJCSAqIGZvciBub3cgdGhpcyBp cyBnb29kIGVub3VnaC4KKwkJCSAqCisJCQkgKiBYWFggVGhlIEdVQyBpcyB0aGVyZSBtb3Jl c3RseSB0byBtYWtlIGl0IGVhc2llciB0byBlbmFibGUvZGlzYWJsZQorCQkJICogdGhpcyBk dXJpbmcgZGV2ZWxvcG1lbnQuCisJCQkgKgorCQkJICogRklYTUUgT25seSBidWlsZCB0aGUg QU0gc3RhdGlzdGljcywgbm90IHRoZSBvdGhlciBzdGF0cy4gQW5kIG9ubHkKKwkJCSAqIGRv IHRoYXQgZm9yIHRoZSBrZXlzIHdpdGggdGhlIG9wdGlvbmFsIHByb2NlZHVyZS4gbm90IGFs bCBvZiB0aGVtLgorCQkJICovCisJCQljb2xsZWN0QW1TdGF0cyA9IGZhbHNlOworCQkJaWYg KGVuYWJsZV9pbmRleGFtX3N0YXRzICYmIChJcmVsW2luZF0tPnJkX2luZGFtLT5hbXN0YXRz cHJvY251bSAhPSAwKSkKKwkJCXsKKwkJCQlmb3IgKGludCBqID0gMDsgaiA8IGluZGV4SW5m by0+aWlfTnVtSW5kZXhBdHRyczsgaisrKQorCQkJCXsKKwkJCQkJcmVncHJvYyA9IGluZGV4 X2dldHByb2NpZChJcmVsW2luZF0sIChqKzEpLCBJcmVsW2luZF0tPnJkX2luZGFtLT5hbXN0 YXRzcHJvY251bSk7CisJCQkJCWlmIChPaWRJc1ZhbGlkKHJlZ3Byb2MpKQorCQkJCQl7CisJ CQkJCQljb2xsZWN0QW1TdGF0cyA9IHRydWU7CisJCQkJCQlicmVhazsKKwkJCQkJfQorCQkJ CX0KKwkJCX0KKworCQkJaWYgKChpbmRleEluZm8tPmlpX0V4cHJlc3Npb25zICE9IE5JTCB8 fCBjb2xsZWN0QW1TdGF0cykgJiYgdmFfY29scyA9PSBOSUwpCiAJCQl7CiAJCQkJTGlzdENl bGwgICAqaW5kZXhwcl9pdGVtID0gbGlzdF9oZWFkKGluZGV4SW5mby0+aWlfRXhwcmVzc2lv bnMpOwogCiAJCQkJdGhpc2RhdGEtPnZhY2F0dHJzdGF0cyA9IChWYWNBdHRyU3RhdHMgKiop Ci0JCQkJCXBhbGxvYyhpbmRleEluZm8tPmlpX051bUluZGV4QXR0cnMgKiBzaXplb2YoVmFj QXR0clN0YXRzICopKTsKKwkJCQkJcGFsbG9jMChpbmRleEluZm8tPmlpX051bUluZGV4QXR0 cnMgKiBzaXplb2YoVmFjQXR0clN0YXRzICopKTsKIAkJCQl0Y250ID0gMDsKIAkJCQlmb3Ig KGkgPSAwOyBpIDwgaW5kZXhJbmZvLT5paV9OdW1JbmRleEF0dHJzOyBpKyspCiAJCQkJewpA QCAtNDgyLDYgKzUxOSwxMiBAQCBkb19hbmFseXplX3JlbChSZWxhdGlvbiBvbmVyZWwsIFZh Y3V1bVBhcmFtcyAqcGFyYW1zLAogCQkJCQkJaWYgKHRoaXNkYXRhLT52YWNhdHRyc3RhdHNb dGNudF0gIT0gTlVMTCkKIAkJCQkJCQl0Y250Kys7CiAJCQkJCX0KKwkJCQkJZWxzZQorCQkJ CQl7CisJCQkJCQl0aGlzZGF0YS0+dmFjYXR0cnN0YXRzW3RjbnRdID0KKwkJCQkJCQlleGFt aW5lX2F0dHJpYnV0ZShJcmVsW2luZF0sIGkgKyAxLCBOVUxMKTsKKwkJCQkJCXRjbnQrKzsK KwkJCQkJfQogCQkJCX0KIAkJCQl0aGlzZGF0YS0+YXR0cl9jbnQgPSB0Y250OwogCQkJfQpA QCAtNTg3LDcgKzYzMCw3IEBAIGRvX2FuYWx5emVfcmVsKFJlbGF0aW9uIG9uZXJlbCwgVmFj dXVtUGFyYW1zICpwYXJhbXMsCiAKIAkJaWYgKG5pbmRleGVzID4gMCkKIAkJCWNvbXB1dGVf aW5kZXhfc3RhdHMob25lcmVsLCB0b3RhbHJvd3MsCi0JCQkJCQkJCWluZGV4ZGF0YSwgbmlu ZGV4ZXMsCisJCQkJCQkJCWluZGV4ZGF0YSwgSXJlbCwgbmluZGV4ZXMsCiAJCQkJCQkJCXJv d3MsIG51bXJvd3MsCiAJCQkJCQkJCWNvbF9jb250ZXh0KTsKIApAQCAtODIxLDEyICs4NjQs NzkgQEAgZG9fYW5hbHl6ZV9yZWwoUmVsYXRpb24gb25lcmVsLCBWYWN1dW1QYXJhbXMgKnBh cmFtcywKIAlhbmxfY29udGV4dCA9IE5VTEw7CiB9CiAKKy8qCisgKiBjb21wdXRlX2luZGV4 YW1fc3RhdHMKKyAqCQlDYWxsIHRoZSBvcHRpb25hbCBwcm9jZWR1cmUgdG8gY29tcHV0ZSBB TS1zcGVjaWZpYyBzdGF0aXN0aWNzLgorICoKKyAqIFdlIHNpbXBseSBjYWxsIHRoZSBwcm9j ZWR1cmUsIHdoaWNoIGlzIGV4cGVjdGVkIHRvIHByb2R1Y2UgYSBieXRlYSB2YWx1ZS4KKyAq CisgKiBBdCB0aGUgbW9tZW50IHRoaXMgb25seSBkZWFscyB3aXRoIEJSSU4gaW5kZXhlcywg YW5kIGJhaWxzIG91dCBmb3Igb3RoZXIKKyAqIGFjY2VzcyBtZXRob2RzLCBidXQgaXQgc2hv dWxkIGJlIGdlbmVyaWMgLSB1c2Ugc29tZXRoaW5nIGxpa2UgYW1vcHRzcHJvY251bQorICog YW5kIGp1c3QgY2hlY2sgaWYgdGhlIHByb2NlZHVyZSBleGlzdHMuCisgKi8KK3N0YXRpYyB2 b2lkCitjb21wdXRlX2luZGV4YW1fc3RhdHMoUmVsYXRpb24gb25lcmVsLAorCQkJCQkgIFJl bGF0aW9uIGluZGV4UmVsLCBJbmRleEluZm8gKmluZGV4SW5mbywKKwkJCQkJICBkb3VibGUg dG90YWxyb3dzLCBBbmxJbmRleERhdGEgKmluZGV4ZGF0YSwKKwkJCQkJICBIZWFwVHVwbGUg KnJvd3MsIGludCBudW1yb3dzKQoreworCWlmICghZW5hYmxlX2luZGV4YW1fc3RhdHMpCisJ CXJldHVybjsKKworCS8qIGlnbm9yZSBpbmRleCBBTXMgd2l0aG91dCB0aGUgb3B0aW9uYWwg cHJvY2VkdXJlICovCisJaWYgKGluZGV4UmVsLT5yZF9pbmRhbS0+YW1zdGF0c3Byb2NudW0g PT0gMCkKKwkJcmV0dXJuOworCisJLyoKKwkgKiBMb29rIGF0IGF0dHJpYnV0ZXMsIGFuZCBj YWxjdWxhdGUgc3RhdHMgZm9yIHRob3NlIHRoYXQgaGF2ZSB0aGUKKwkgKiBvcHRpb25hbCBz dGF0cyBwcm9jIGZvciB0aGUgb3BmYW1pbHkuCisJICovCisJZm9yIChpbnQgaSA9IDA7IGkg PCBpbmRleEluZm8tPmlpX051bUluZGV4QXR0cnM7IGkrKykKKwl7CisJCUF0dHJOdW1iZXIJ CWF0dG5vID0gKGkgKyAxKTsKKwkJQXR0ck51bWJlcgkJYXR0bnVtID0gaW5kZXhJbmZvLT5p aV9JbmRleEF0dHJOdW1iZXJzW2ldOwkvKiBoZWFwIGF0dG51bSAqLworCQlSZWdQcm9jZWR1 cmUJcmVncHJvYzsKKwkJRm1nckluZm8JICAgKnN0YXRzcHJvYzsKKwkJRGF0dW0JCQlkYXR1 bTsKKwkJVmFjQXR0clN0YXRzICAgKnN0YXRzOworCQlNZW1vcnlDb250ZXh0CW9sZGN4dDsK KworCQkvKiBkbyB0aGlzIGZpcnN0LCBhcyBpdCBkb2Vzbid0IGZhaWwgd2hlbiBwcm9jIG5v dCBkZWZpbmVkICovCisJCXJlZ3Byb2MgPSBpbmRleF9nZXRwcm9jaWQoaW5kZXhSZWwsIGF0 dG5vLCBpbmRleFJlbC0+cmRfaW5kYW0tPmFtc3RhdHNwcm9jbnVtKTsKKworCQkvKiBpZ25v cmUgb3BjbGFzc2VzIHdpdGhvdXQgdGhlIG9wdGlvbmFsIHByb2NlZHVyZSAqLworCQlpZiAo IVJlZ1Byb2NlZHVyZUlzVmFsaWQocmVncHJvYykpCisJCQljb250aW51ZTsKKworCQlzdGF0 c3Byb2MgPSBpbmRleF9nZXRwcm9jaW5mbyhpbmRleFJlbCwgYXR0bm8sIGluZGV4UmVsLT5y ZF9pbmRhbS0+YW1zdGF0c3Byb2NudW0pOworCQlBc3NlcnQoc3RhdHNwcm9jICE9IE5VTEwp OworCisJCXN0YXRzID0gaW5kZXhkYXRhLT52YWNhdHRyc3RhdHNbaV07CisKKwkJb2xkY3h0 ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKHN0YXRzLT5hbmxfY29udGV4dCk7CisKKwkJLyog Y2FsbCB0aGUgcHJvYywgbGV0IHRoZSBBTSBjYWxjdWxhdGUgd2hhdGV2ZXIgaXQgd2FudHMg Ki8KKwkJZGF0dW0gPSBGdW5jdGlvbkNhbGw2Q29sbChzdGF0c3Byb2MsCisJCQkJCQkJCSAg SW52YWxpZE9pZCwgLyogRklYTUUgY29ycmVjdCBjb2xsYXRpb24gKi8KKwkJCQkJCQkJICBQ b2ludGVyR2V0RGF0dW0ob25lcmVsKSwKKwkJCQkJCQkJICBQb2ludGVyR2V0RGF0dW0oaW5k ZXhSZWwpLAorCQkJCQkJCQkgIEludDE2R2V0RGF0dW0oYXR0bm8pLAorCQkJCQkJCQkgIElu dDE2R2V0RGF0dW0oYXR0bnVtKSwKKwkJCQkJCQkJICBQb2ludGVyR2V0RGF0dW0ocm93cyks CisJCQkJCQkJCSAgSW50MzJHZXREYXR1bShudW1yb3dzKSk7CisKKwkJc3RhdHMtPnN0YWlu ZGV4YW0gPSBkYXR1bTsKKworCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3h0KTsKKwl9 Cit9CisKIC8qCiAgKiBDb21wdXRlIHN0YXRpc3RpY3MgYWJvdXQgaW5kZXhlcyBvZiBhIHJl bGF0aW9uCiAgKi8KIHN0YXRpYyB2b2lkCiBjb21wdXRlX2luZGV4X3N0YXRzKFJlbGF0aW9u IG9uZXJlbCwgZG91YmxlIHRvdGFscm93cywKLQkJCQkJQW5sSW5kZXhEYXRhICppbmRleGRh dGEsIGludCBuaW5kZXhlcywKKwkJCQkJQW5sSW5kZXhEYXRhICppbmRleGRhdGEsIFJlbGF0 aW9uICppbmRleFJlbHMsIGludCBuaW5kZXhlcywKIAkJCQkJSGVhcFR1cGxlICpyb3dzLCBp bnQgbnVtcm93cywKIAkJCQkJTWVtb3J5Q29udGV4dCBjb2xfY29udGV4dCkKIHsKQEAgLTg0 Niw2ICs5NTYsNyBAQCBjb21wdXRlX2luZGV4X3N0YXRzKFJlbGF0aW9uIG9uZXJlbCwgZG91 YmxlIHRvdGFscm93cywKIAl7CiAJCUFubEluZGV4RGF0YSAqdGhpc2RhdGEgPSAmaW5kZXhk YXRhW2luZF07CiAJCUluZGV4SW5mbyAgKmluZGV4SW5mbyA9IHRoaXNkYXRhLT5pbmRleElu Zm87CisJCVJlbGF0aW9uCWluZGV4UmVsID0gaW5kZXhSZWxzW2luZF07CiAJCWludAkJCWF0 dHJfY250ID0gdGhpc2RhdGEtPmF0dHJfY250OwogCQlUdXBsZVRhYmxlU2xvdCAqc2xvdDsK IAkJRVN0YXRlCSAgICplc3RhdGU7CkBAIC04NTgsNiArOTY5LDEzIEBAIGNvbXB1dGVfaW5k ZXhfc3RhdHMoUmVsYXRpb24gb25lcmVsLCBkb3VibGUgdG90YWxyb3dzLAogCQkJCQlyb3du bzsKIAkJZG91YmxlCQl0b3RhbGluZGV4cm93czsKIAorCQkvKgorCQkgKiBJZiB0aGlzIGlz IGEgQlJJTiBpbmRleCwgdHJ5IGNhbGxpbmcgYSBwcm9jZWR1cmUgdG8gY29sbGVjdAorCQkg KiBleHRyYSBvcGZhbWlseS1zcGVjaWZpYyBzdGF0aXN0aWNzIChpZiBwcm9jZWR1cmUgZGVm aW5lZCkuCisJCSAqLworCQljb21wdXRlX2luZGV4YW1fc3RhdHMob25lcmVsLCBpbmRleFJl bCwgaW5kZXhJbmZvLCB0b3RhbHJvd3MsCisJCQkJCQkJICB0aGlzZGF0YSwgcm93cywgbnVt cm93cyk7CisKIAkJLyogSWdub3JlIGluZGV4IGlmIG5vIGNvbHVtbnMgdG8gYW5hbHl6ZSBh bmQgbm90IHBhcnRpYWwgKi8KIAkJaWYgKGF0dHJfY250ID09IDAgJiYgaW5kZXhJbmZvLT5p aV9QcmVkaWNhdGUgPT0gTklMKQogCQkJY29udGludWU7CkBAIC0xNjYxLDYgKzE3NzksMTMg QEAgdXBkYXRlX2F0dHN0YXRzKE9pZCByZWxpZCwgYm9vbCBpbmgsIGludCBuYXR0cywgVmFj QXR0clN0YXRzICoqdmFjYXR0cnN0YXRzKQogCQl2YWx1ZXNbQW51bV9wZ19zdGF0aXN0aWNf c3RhbnVsbGZyYWMgLSAxXSA9IEZsb2F0NEdldERhdHVtKHN0YXRzLT5zdGFudWxsZnJhYyk7 CiAJCXZhbHVlc1tBbnVtX3BnX3N0YXRpc3RpY19zdGF3aWR0aCAtIDFdID0gSW50MzJHZXRE YXR1bShzdGF0cy0+c3Rhd2lkdGgpOwogCQl2YWx1ZXNbQW51bV9wZ19zdGF0aXN0aWNfc3Rh ZGlzdGluY3QgLSAxXSA9IEZsb2F0NEdldERhdHVtKHN0YXRzLT5zdGFkaXN0aW5jdCk7CisK KwkJLyogb3B0aW9uYWwgQU0tc3BlY2lmaWMgc3RhdHMgKi8KKwkJaWYgKERhdHVtR2V0UG9p bnRlcihzdGF0cy0+c3RhaW5kZXhhbSkgIT0gTlVMTCkKKwkJCXZhbHVlc1tBbnVtX3BnX3N0 YXRpc3RpY19zdGFpbmRleGFtIC0gMV0gPSBzdGF0cy0+c3RhaW5kZXhhbTsKKwkJZWxzZQor CQkJbnVsbHNbQW51bV9wZ19zdGF0aXN0aWNfc3RhaW5kZXhhbSAtIDFdID0gdHJ1ZTsKKwog CQlpID0gQW51bV9wZ19zdGF0aXN0aWNfc3Rha2luZDEgLSAxOwogCQlmb3IgKGsgPSAwOyBr IDwgU1RBVElTVElDX05VTV9TTE9UUzsgaysrKQogCQl7CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9zdGF0aXN0aWNzL2V4dGVuZGVkX3N0YXRzLmMgYi9zcmMvYmFja2VuZC9zdGF0aXN0 aWNzL2V4dGVuZGVkX3N0YXRzLmMKaW5kZXggYmRjMjFiYjQ1Ny4uNDQ4ZWU2YzZmYyAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RhdGlzdGljcy9leHRlbmRlZF9zdGF0cy5jCisrKyBi L3NyYy9iYWNrZW5kL3N0YXRpc3RpY3MvZXh0ZW5kZWRfc3RhdHMuYwpAQCAtMjM3MCw2ICsy MzcwLDggQEAgc2VyaWFsaXplX2V4cHJfc3RhdHMoQW5sRXhwckRhdGEgKmV4cHJkYXRhLCBp bnQgbmV4cHJzKQogCQl2YWx1ZXNbQW51bV9wZ19zdGF0aXN0aWNfc3RhbnVsbGZyYWMgLSAx XSA9IEZsb2F0NEdldERhdHVtKHN0YXRzLT5zdGFudWxsZnJhYyk7CiAJCXZhbHVlc1tBbnVt X3BnX3N0YXRpc3RpY19zdGF3aWR0aCAtIDFdID0gSW50MzJHZXREYXR1bShzdGF0cy0+c3Rh d2lkdGgpOwogCQl2YWx1ZXNbQW51bV9wZ19zdGF0aXN0aWNfc3RhZGlzdGluY3QgLSAxXSA9 IEZsb2F0NEdldERhdHVtKHN0YXRzLT5zdGFkaXN0aW5jdCk7CisJCW51bGxzW0FudW1fcGdf c3RhdGlzdGljX3N0YWluZGV4YW0gLSAxXSA9IHRydWU7CisKIAkJaSA9IEFudW1fcGdfc3Rh dGlzdGljX3N0YWtpbmQxIC0gMTsKIAkJZm9yIChrID0gMDsgayA8IFNUQVRJU1RJQ19OVU1f U0xPVFM7IGsrKykKIAkJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Nl bGZ1bmNzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvc2VsZnVuY3MuYwppbmRleCBmZTM3 ZTY1YWYwLi5jYzJmM2VmMDEyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQv c2VsZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvc2VsZnVuY3MuYwpAQCAt NzgzNCw2ICs3ODM0LDcgQEAgYnJpbmNvc3Rlc3RpbWF0ZShQbGFubmVySW5mbyAqcm9vdCwg SW5kZXhQYXRoICpwYXRoLCBkb3VibGUgbG9vcF9jb3VudCwKIAlSZWxhdGlvbglpbmRleFJl bDsKIAlMaXN0Q2VsbCAgICpsOwogCVZhcmlhYmxlU3RhdERhdGEgdmFyZGF0YTsKKwlkb3Vi bGUJCWF2ZXJhZ2VPdmVybGFwczsKIAogCUFzc2VydChydGUtPnJ0ZWtpbmQgPT0gUlRFX1JF TEFUSU9OKTsKIApAQCAtNzg4MSw2ICs3ODgyLDcgQEAgYnJpbmNvc3Rlc3RpbWF0ZShQbGFu bmVySW5mbyAqcm9vdCwgSW5kZXhQYXRoICpwYXRoLCBkb3VibGUgbG9vcF9jb3VudCwKIAkg KiBjb3JyZWxhdGlvbiBzdGF0aXN0aWNzLCB3ZSB3aWxsIGtlZXAgaXQgYXMgMC4KIAkgKi8K IAkqaW5kZXhDb3JyZWxhdGlvbiA9IDA7CisJYXZlcmFnZU92ZXJsYXBzID0gMC4wOwogCiAJ Zm9yZWFjaChsLCBwYXRoLT5pbmRleGNsYXVzZXMpCiAJewpAQCAtNzg5MCw2ICs3ODkyLDM2 IEBAIGJyaW5jb3N0ZXN0aW1hdGUoUGxhbm5lckluZm8gKnJvb3QsIEluZGV4UGF0aCAqcGF0 aCwgZG91YmxlIGxvb3BfY291bnQsCiAJCS8qIGF0dGVtcHQgdG8gbG9va3VwIHN0YXRzIGlu IHJlbGF0aW9uIGZvciB0aGlzIGluZGV4IGNvbHVtbiAqLwogCQlpZiAoYXR0bnVtICE9IDAp CiAJCXsKKwkJCS8qCisJCQkgKiBJZiBBTS1zcGVjaWZpYyBzdGF0aXN0aWNzIGFyZSBlbmFi bGVkLCB0cnkgbG9va2luZyB1cCB0aGUgc3RhdHMKKwkJCSAqIGZvciB0aGUgaW5kZXgga2V5 LiBXZSBvbmx5IGhhdmUgdGhpcyBmb3IgbWlubWF4IG9wY2xhc3Nlcywgc28KKwkJCSAqIHdl IGp1c3QgY2FzdCBpdCBsaWtlIHRoYXQuIEJ1dCBvdGhlciBCUklOIG9wY2xhc3NlcyBtaWdo dCBuZWVkCisJCQkgKiBvdGhlciBzdGF0cyBzbyBlaXRoZXIgd2UgbmVlZCB0byBhYnN0cmFj dCB0aGlzIHNvbWVob3csIG9yIG1heWJlCisJCQkgKiBqdXN0IGNvbGxlY3QgYSBzdWZmaWNp ZW50bHkgZ2VuZXJpYyBzdGF0cyBmb3IgYWxsIEJSSU4gaW5kZXhlcy4KKwkJCSAqCisJCQkg KiBYWFggTWFrZSB0aGlzIG5vbi1taW5tYXggc3BlY2lmaWMuCisJCQkgKi8KKwkJCWlmIChl bmFibGVfaW5kZXhhbV9zdGF0cykKKwkJCXsKKwkJCQlCcmluTWlubWF4U3RhdHMgICphbXN0 YXRzCisJCQkJCT0gKEJyaW5NaW5tYXhTdGF0cyAqKSBnZXRfYXR0aW5kZXhhbShpbmRleC0+ aW5kZXhvaWQsIGF0dG51bSk7CisKKwkJCQlpZiAoYW1zdGF0cykKKwkJCQl7CisJCQkJCWVs b2coREVCVUcxLCAiZm91bmQgQU0gc3RhdHM6IGF0dG51bSAlZCBuX3JhbmdlcyAlbGxkIG5f c3VtbWFyaXplZCAlbGxkIG5fYWxsX251bGxzICVsbGQgbl9oYXNfbnVsbHMgJWxsZCBhdmdf b3ZlcmxhcHMgJWYiLAorCQkJCQkJIGF0dG51bSwgKGxvbmcgbG9uZylhbXN0YXRzLT5uX3Jh bmdlcywgKGxvbmcgbG9uZylhbXN0YXRzLT5uX3N1bW1hcml6ZWQsCisJCQkJCQkgKGxvbmcg bG9uZylhbXN0YXRzLT5uX2FsbF9udWxscywgKGxvbmcgbG9uZylhbXN0YXRzLT5uX2hhc19u dWxscywKKwkJCQkJCSBhbXN0YXRzLT5hdmdfb3ZlcmxhcHMpOworCisJCQkJCS8qCisJCQkJ CSAqIFRoZSBvbmx5IHRoaW5nIHdlIHVzZSBhdCB0aGUgbW9tZW50IGlzIHRoZSBhdmVyYWdl IG51bWJlcgorCQkJCQkgKiBvZiBvdmVybGFwcyBmb3IgYSBzaW5nbGUgcmFuZ2UuIFVzZSB0 aGUgb3RoZXIgc3R1ZmYgdG9vLgorCQkJCQkgKi8KKwkJCQkJYXZlcmFnZU92ZXJsYXBzID0g TWF4KGF2ZXJhZ2VPdmVybGFwcywKKwkJCQkJCQkJCQkgIDEuMCArIGFtc3RhdHMtPmF2Z19v dmVybGFwcyk7CisJCQkJfQorCQkJfQorCiAJCQkvKiBTaW1wbGUgdmFyaWFibGUgLS0gbG9v ayB0byBzdGF0cyBmb3IgdGhlIHVuZGVybHlpbmcgdGFibGUgKi8KIAkJCWlmIChnZXRfcmVs YXRpb25fc3RhdHNfaG9vayAmJgogCQkJCSgqZ2V0X3JlbGF0aW9uX3N0YXRzX2hvb2spIChy b290LCBydGUsIGF0dG51bSwgJnZhcmRhdGEpKQpAQCAtNzk3MCw2ICs4MDAyLDE0IEBAIGJy aW5jb3N0ZXN0aW1hdGUoUGxhbm5lckluZm8gKnJvb3QsIEluZGV4UGF0aCAqcGF0aCwgZG91 YmxlIGxvb3BfY291bnQsCiAJCQkJCQkJCQkJCSBiYXNlcmVsLT5yZWxpZCwKIAkJCQkJCQkJ CQkJIEpPSU5fSU5ORVIsIE5VTEwpOwogCisJLyoKKwkgKiBYWFggQ2FuIHdlIGNvbWJpbmUg cXVhbFNlbGVjdGl2aXR5IHdpdGggdGhlIGF2ZXJhZ2UgbnVtYmVyIG9mIG1hdGNoaW5nCisJ ICogcmFuZ2VzIHBlciB2YWx1ZT8gcXVhbFNlbGVjdGl2aXR5IGVzdGltYXRlcyBob3cgbWFu eSB0dXBsZXMgYXIgd2UKKwkgKiBnb2luZyB0byBtYXRjaCwgYW5kIGF2ZXJhZ2UgbnVtYmVy IG9mIG1hdGNoZXMgc2F5cyBob3cgbWFueSByYW5nZXMKKwkgKiB3aWxsIGVhY2ggb2YgdGhv c2UgbWF0Y2ggb24gYXZlcmFnZS4gV2UgZG9uJ3Qga25vdyBob3cgbWFueSB3aWxsCisJICog YmUgZHVwbGljYXRlLCBidXQgaXQgZ2l2ZXMgdXMgYSB3b3JzdC1jYXNlIGVzdGltYXRlLCBh dCBsZWFzdC4KKwkgKi8KKwogCS8qCiAJICogTm93IGNhbGN1bGF0ZSB0aGUgbWluaW11bSBw b3NzaWJsZSByYW5nZXMgd2UgY291bGQgbWF0Y2ggd2l0aCBpZiBhbGwgb2YKIAkgKiB0aGUg cm93cyB3ZXJlIGluIHRoZSBwZXJmZWN0IG9yZGVyIGluIHRoZSB0YWJsZSdzIGhlYXAuCkBA IC03OTg2LDYgKzgwMjYsMjUgQEAgYnJpbmNvc3Rlc3RpbWF0ZShQbGFubmVySW5mbyAqcm9v dCwgSW5kZXhQYXRoICpwYXRoLCBkb3VibGUgbG9vcF9jb3VudCwKIAllbHNlCiAJCWVzdGlt YXRlZFJhbmdlcyA9IE1pbihtaW5pbWFsUmFuZ2VzIC8gKmluZGV4Q29ycmVsYXRpb24sIGlu ZGV4UmFuZ2VzKTsKIAorCWVsb2coREVCVUcxLCAiYmVmb3JlIGluZGV4IEFNIHN0YXRzOiBj ZXN0aW1hdGVkUmFuZ2VzID0gJWYiLCBlc3RpbWF0ZWRSYW5nZXMpOworCisJLyoKKwkgKiBJ ZiB3ZSBmb3VuZCBzb21lIEFNIHN0YXRzLCBsb29rIGF0IGF2ZXJhZ2UgbnVtYmVyIG9mIG92 ZXJsYXBwaW5nIHJhbmdlcywKKwkgKiBhbmQgYXBwbHkgdGhhdCB0byB0aGUgY3VycmVudGx5 IGVzdGltYXRlZCByYW5nZXMuCisJICoKKwkgKiBYWFggV2UgcHJldHR5IG11Y2ggY29tYmlu ZSB0aGlzIHdpdGggY29ycmVsYXRpb24gaW5mbyAoYmVjYXVzZSBpdCB3YXMKKwkgKiBhbHJl YWR5IGFwcGxpZWQgaW4gdGhlIGVzdGltYXRlZFJhbmdlcyBmb3JtdWxhIGFib3ZlKSwgd2hp Y2ggbWlnaHQgYmUKKwkgKiBvdmVybHkgcGVzc2ltaXN0aWMuIFRoZSBvdmVybGFwcyBzdGF0 cyBzZWVtcyBzb21ld2hhdCByZWR1bmRhbnQgd2l0aAorCSAqIHRoZSBjb3JyZWxhdGlvbiwg c28gbWF5YmUgd2Ugc2hvdWxkIGRvIGp1c3Qgb25lPyBUaGUgQU0gc3RhdHMgc2VlbXMKKwkg KiBsaWtlIGEgbW9yZSByZWxpYWJsZSBpbmZvcm1hdGlvbiwgYmVjYXVzZSB0aGUgY29ycmVs YXRpb24gaXMgbm90IHZlcnkKKwkgKiBzZW5zaXRpdmUgdG8gb3V0bGllcnMsIGZvciBleGFt cGxlLiBTbyBtYXliZSBsZXQncyBwcmVmZXIgdGhhdCwgYW5kCisJICogb25seSB1c2UgdGhl IGNvcnJlbGF0aW9uIGFzIGZhbGxiYWNrIHdoZW4gQU0gc3RhdHMgYXJlIG5vdCBhdmFpbGFi bGU/CisJICovCisJaWYgKGF2ZXJhZ2VPdmVybGFwcyA+IDAuMCkKKwkJZXN0aW1hdGVkUmFu Z2VzID0gTWluKGVzdGltYXRlZFJhbmdlcyAqIGF2ZXJhZ2VPdmVybGFwcywgaW5kZXhSYW5n ZXMpOworCisJZWxvZyhERUJVRzEsICJhZnRlciBpbmRleCBBTSBzdGF0czogY2VzdGltYXRl ZFJhbmdlcyA9ICVmIiwgZXN0aW1hdGVkUmFuZ2VzKTsKKwogCS8qIHdlIGV4cGVjdCB0byB2 aXNpdCB0aGlzIHBvcnRpb24gb2YgdGhlIHRhYmxlICovCiAJc2VsZWMgPSBlc3RpbWF0ZWRS YW5nZXMgLyBpbmRleFJhbmdlczsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMv Y2FjaGUvbHN5c2NhY2hlLmMgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9sc3lzY2FjaGUu YwppbmRleCBjMDczODIwNTFkLi5lNDFhYWJkZWFlIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC91dGlscy9jYWNoZS9sc3lzY2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNo ZS9sc3lzY2FjaGUuYwpAQCAtMzEzOCw2ICszMTM4LDQ3IEBAIGdldF9hdHRhdmd3aWR0aChP aWQgcmVsaWQsIEF0dHJOdW1iZXIgYXR0bnVtKQogCXJldHVybiAwOwogfQogCisKKy8qCisg KiBnZXRfYXR0c3RhaW5kZXhhbQorICoKKyAqCSAgR2l2ZW4gdGhlIHRhYmxlIGFuZCBhdHRy aWJ1dGUgbnVtYmVyIG9mIGEgY29sdW1uLCBnZXQgdGhlIGluZGV4IEFNCisgKgkgIHN0YXRp c3RpY3MuICBSZXR1cm4gTlVMTCBpZiBubyBkYXRhIGF2YWlsYWJsZS4KKyAqCisgKiBDdXJy ZW50bHkgdGhpcyBpcyBvbmx5IGNvbnN1bHRlZCBmb3IgaW5kaXZpZHVhbCB0YWJsZXMsIG5v dCBmb3IgaW5oZXJpdGFuY2UKKyAqIHRyZWVzLCBzbyB3ZSBkb24ndCBuZWVkIGFuICJpbmgi IHBhcmFtZXRlci4KKyAqLworYnl0ZWEgKgorZ2V0X2F0dGluZGV4YW0oT2lkIHJlbGlkLCBB dHRyTnVtYmVyIGF0dG51bSkKK3sKKwlIZWFwVHVwbGUJdHA7CisKKwl0cCA9IFNlYXJjaFN5 c0NhY2hlMyhTVEFUUkVMQVRUSU5ILAorCQkJCQkJIE9iamVjdElkR2V0RGF0dW0ocmVsaWQp LAorCQkJCQkJIEludDE2R2V0RGF0dW0oYXR0bnVtKSwKKwkJCQkJCSBCb29sR2V0RGF0dW0o ZmFsc2UpKTsKKwlpZiAoSGVhcFR1cGxlSXNWYWxpZCh0cCkpCisJeworCQlEYXR1bQl2YWw7 CisJCWJ5dGVhICAqcmV0dmFsID0gTlVMTDsKKwkJYm9vbAlpc251bGw7CisKKwkJdmFsID0g U3lzQ2FjaGVHZXRBdHRyKFNUQVRSRUxBVFRJTkgsIHRwLAorCQkJCQkJCSAgQW51bV9wZ19z dGF0aXN0aWNfc3RhaW5kZXhhbSwKKwkJCQkJCQkgICZpc251bGwpOworCisJCWlmICghaXNu dWxsKQorCQkJcmV0dmFsID0gKGJ5dGVhICopIFBHX0RFVE9BU1RfREFUVU0odmFsKTsKKwor CQkvLyBzdGFpbmRleGFtID0gKChGb3JtX3BnX3N0YXRpc3RpYykgR0VUU1RSVUNUKHRwKSkt PnN0YWluZGV4YW07CisJCVJlbGVhc2VTeXNDYWNoZSh0cCk7CisKKwkJcmV0dXJuIHJldHZh bDsKKwl9CisKKwlyZXR1cm4gTlVMTDsKK30KKwogLyoKICAqIGdldF9hdHRzdGF0c3Nsb3QK ICAqCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYyBi L3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jCmluZGV4IGI0NmUzYjhjNTUu LjM1ZDUxZGYzMGIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3Rh Ymxlcy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jCkBAIC0x MDAyLDYgKzEwMDIsMTYgQEAgc3RydWN0IGNvbmZpZ19ib29sIENvbmZpZ3VyZU5hbWVzQm9v bFtdID0KIAkJdHJ1ZSwKIAkJTlVMTCwgTlVMTCwgTlVMTAogCX0sCisJeworCQl7ImVuYWJs ZV9pbmRleGFtX3N0YXRzIiwgUEdDX1VTRVJTRVQsIFFVRVJZX1RVTklOR19NRVRIT0QsCisJ CQlnZXR0ZXh0X25vb3AoIkVuYWJsZXMgdGhlIHBsYW5uZXIncyB1c2Ugb2YgaW5kZXggQU0g c3RhdHMuIiksCisJCQlOVUxMLAorCQkJR1VDX0VYUExBSU4KKwkJfSwKKwkJJmVuYWJsZV9p bmRleGFtX3N0YXRzLAorCQlmYWxzZSwKKwkJTlVMTCwgTlVMTCwgTlVMTAorCX0sCiAJewog CQl7ImdlcW8iLCBQR0NfVVNFUlNFVCwgUVVFUllfVFVOSU5HX0dFUU8sCiAJCQlnZXR0ZXh0 X25vb3AoIkVuYWJsZXMgZ2VuZXRpYyBxdWVyeSBvcHRpbWl6YXRpb24uIiksCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUgYi9z cmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUKaW5kZXggZDA2 MDc0Yjg2Zi4uNDdlODBhZDE1MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlz Yy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2Mv cG9zdGdyZXNxbC5jb25mLnNhbXBsZQpAQCAtMzc1LDYgKzM3NSw3IEBACiAjZW5hYmxlX2hh c2hhZ2cgPSBvbgogI2VuYWJsZV9oYXNoam9pbiA9IG9uCiAjZW5hYmxlX2luY3JlbWVudGFs X3NvcnQgPSBvbgorI2VuYWJsZV9pbmRleGFtX3N0YXRzID0gb2ZmCiAjZW5hYmxlX2luZGV4 c2NhbiA9IG9uCiAjZW5hYmxlX2luZGV4b25seXNjYW4gPSBvbgogI2VuYWJsZV9tYXRlcmlh bCA9IG9uCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvYW1hcGkuaCBiL3NyYy9p bmNsdWRlL2FjY2Vzcy9hbWFwaS5oCmluZGV4IDRmMWY2N2I0ZDAuLmUzZWFiNzI1YWUgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9hbWFwaS5oCisrKyBiL3NyYy9pbmNsdWRl L2FjY2Vzcy9hbWFwaS5oCkBAIC0yMTYsNiArMjE2LDggQEAgdHlwZWRlZiBzdHJ1Y3QgSW5k ZXhBbVJvdXRpbmUKIAl1aW50MTYJCWFtc3VwcG9ydDsKIAkvKiBvcGNsYXNzIG9wdGlvbnMg c3VwcG9ydCBmdW5jdGlvbiBudW1iZXIgb3IgMCAqLwogCXVpbnQxNgkJYW1vcHRzcHJvY251 bTsKKwkvKiBvcGNsYXNzIHN0YXRpc3RpY3Mgc3VwcG9ydCBmdW5jdGlvbiBudW1iZXIgb3Ig MCAqLworCXVpbnQxNgkJYW1zdGF0c3Byb2NudW07CiAJLyogZG9lcyBBTSBzdXBwb3J0IE9S REVSIEJZIGluZGV4ZWQgY29sdW1uJ3MgdmFsdWU/ICovCiAJYm9vbAkJYW1jYW5vcmRlcjsK IAkvKiBkb2VzIEFNIHN1cHBvcnQgT1JERVIgQlkgcmVzdWx0IG9mIGFuIG9wZXJhdG9yIG9u IGluZGV4ZWQgY29sdW1uPyAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2Jy aW4uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9icmluLmgKaW5kZXggZWQ2NmYxYjNkNS4uMWQy MWI4MTZmYyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL2JyaW4uaAorKysgYi9z cmMvaW5jbHVkZS9hY2Nlc3MvYnJpbi5oCkBAIC0zNCw2ICszNCw2OSBAQCB0eXBlZGVmIHN0 cnVjdCBCcmluU3RhdHNEYXRhCiAJQmxvY2tOdW1iZXIgcmV2bWFwTnVtUGFnZXM7CiB9IEJy aW5TdGF0c0RhdGE7CiAKKy8qCisgKiBJbmZvIGFib3V0IHJhbmdlcyBmb3IgQlJJTiBTb3J0 LgorICovCit0eXBlZGVmIHN0cnVjdCBCcmluUmFuZ2UKK3sKKwlCbG9ja051bWJlciBibGtu b19zdGFydDsKKwlCbG9ja051bWJlciBibGtub19lbmQ7CisKKwlEYXR1bQltaW5fdmFsdWU7 CisJRGF0dW0JbWF4X3ZhbHVlOworCWJvb2wJaGFzX251bGxzOworCWJvb2wJYWxsX251bGxz OworCWJvb2wJbm90X3N1bW1hcml6ZWQ7CisKKwkvKgorCSAqIEluZGV4IG9mIHRoZSByYW5n ZSB3aGVuIG9yZGVyZWQgYnkgbWluX3ZhbHVlIChpZiB0aGVyZSBhcmUgbXVsdGlwbGUKKwkg KiByYW5nZXMgd2l0aCB0aGUgc2FtZSBtaW5fdmFsdWUsIGl0J3MgdGhlIGxvd2VzdCBvbmUp LgorCSAqLworCXVpbnQzMgltaW5faW5kZXg7CisKKwkvKgorCSAqIE1pbmltdW0gbWluX2lu ZGV4IGZyb20gYWxsIHJhbmdlcyB3aXRoIGhpZ2hlciBtYXhfdmFsdWUgKGkuZS4gd2hlbgor CSAqIHNvcnRlZCBieSBtYXhfdmFsdWUpLiBJZiB0aGVyZSBhcmUgbXVsdGlwbGUgcmFuZ2Vz IHdpdGggdGhlIHNhbWUKKwkgKiBtYXhfdmFsdWUsIGl0IGRlcGVuZHMgb24gdGhlIG9yZGVy aW5nIChpLmUuIHRoZSByYW5nZXMgbWF5IGdldAorCSAqIGRpZmZlcmVudCBtaW5faW5kZXhf bG93ZXN0LCBkZXBlbmRpbmcgb24gdGhlIGV4YWN0IG9yZGVyaW5nKS4KKwkgKi8KKwl1aW50 MzIJbWluX2luZGV4X2xvd2VzdDsKK30gQnJpblJhbmdlOworCit0eXBlZGVmIHN0cnVjdCBC cmluUmFuZ2VzCit7CisJaW50CQkJbnJhbmdlczsKKwlCcmluUmFuZ2UJcmFuZ2VzW0ZMRVhJ QkxFX0FSUkFZX01FTUJFUl07Cit9IEJyaW5SYW5nZXM7CisKK3R5cGVkZWYgc3RydWN0IEJy aW5NaW5tYXhTdGF0cworeworCWludDMyCQl2bF9sZW5fOwkJLyogdmFybGVuYSBoZWFkZXIg KGRvIG5vdCB0b3VjaCBkaXJlY3RseSEpICovCisJaW50NjQJCW5fcmFuZ2VzOworCWludDY0 CQluX3N1bW1hcml6ZWQ7CisJaW50NjQJCW5fYWxsX251bGxzOworCWludDY0CQluX2hhc19u dWxsczsKKworCS8qIGF2ZXJhZ2UgbnVtYmVyIG9mIG92ZXJsYXBwaW5nIHJhbmdlcyAqLwor CWRvdWJsZQkJYXZnX292ZXJsYXBzOworCisJLyogYXZlcmFnZSBudW1iZXIgb2YgbWF0Y2hp bmcgcmFuZ2VzIChwZXIgdmFsdWUpICovCisJZG91YmxlCQlhdmdfbWF0Y2hlczsKKwlkb3Vi bGUJCWF2Z19tYXRjaGVzX3VuaXF1ZTsKKworCS8qIG1pbnZhbC9tYXh2YWwgc3RhdHMgKG5k aXN0aW5jdCwgY29ycmVsYXRpb24gdG8gYmxrbm8pICovCisJaW50NjQJCW1pbnZhbF9uZGlz dGluY3Q7CisJaW50NjQJCW1heHZhbF9uZGlzdGluY3Q7CisJZG91YmxlCQltaW52YWxfY29y cmVsYXRpb247CisJZG91YmxlCQltYXh2YWxfY29ycmVsYXRpb247CisKKwkvKiBtaW52YWwv bWF4dmFsIGluY3JlbWVudCBzdGF0cyAqLworCWRvdWJsZQkJbWludmFsX2luY3JlbWVudF9h dmc7CisJZG91YmxlCQltaW52YWxfaW5jcmVtZW50X21heDsKKwlkb3VibGUJCW1heHZhbF9p bmNyZW1lbnRfYXZnOworCWRvdWJsZQkJbWF4dmFsX2luY3JlbWVudF9tYXg7CisKK30gQnJp bk1pbm1heFN0YXRzOwogCiAjZGVmaW5lIEJSSU5fREVGQVVMVF9QQUdFU19QRVJfUkFOR0UJ MTI4CiAjZGVmaW5lIEJyaW5HZXRQYWdlc1BlclJhbmdlKHJlbGF0aW9uKSBcCmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvYnJpbl9pbnRlcm5hbC5oIGIvc3JjL2luY2x1ZGUv YWNjZXNzL2JyaW5faW50ZXJuYWwuaAppbmRleCA5N2RkYzkyNWIyLi5lYWM3OTZlNmY0IDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvYnJpbl9pbnRlcm5hbC5oCisrKyBiL3Ny Yy9pbmNsdWRlL2FjY2Vzcy9icmluX2ludGVybmFsLmgKQEAgLTc1LDYgKzc1LDcgQEAgdHlw ZWRlZiBzdHJ1Y3QgQnJpbkRlc2MKICNkZWZpbmUgQlJJTl9QUk9DTlVNX09QVElPTlMgCQk1 CS8qIG9wdGlvbmFsICovCiAvKiBwcm9jZWR1cmUgbnVtYmVycyB1cCB0byAxMCBhcmUgcmVz ZXJ2ZWQgZm9yIEJSSU4gZnV0dXJlIGV4cGFuc2lvbiAqLwogI2RlZmluZSBCUklOX0ZJUlNU X09QVElPTkFMX1BST0NOVU0gMTEKKyNkZWZpbmUgQlJJTl9QUk9DTlVNX1NUQVRJU1RJQ1MJ CTExCS8qIG9wdGlvbmFsICovCiAjZGVmaW5lIEJSSU5fTEFTVF9PUFRJT05BTF9QUk9DTlVN CTE1CiAKICN1bmRlZiBCUklOX0RFQlVHCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRh bG9nL3BnX2FtcHJvYy5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2FtcHJvYy5kYXQK aW5kZXggNWI5NTAxMjlkZS4uOWJiZDFmMTRmMSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ19hbXByb2MuZGF0CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfYW1w cm9jLmRhdApAQCAtODA0LDYgKzgwNCw4IEBACiAgIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhf Y29uc2lzdGVudCcgfSwKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL2J5dGVhX21pbm1heF9v cHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnYnl0ZWEnLAogICBhbXByb2NyaWdodHR5cGUgPT4g J2J5dGVhJywgYW1wcm9jbnVtID0+ICc0JywgYW1wcm9jID0+ICdicmluX21pbm1heF91bmlv bicgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdicmluL2J5dGVhX21pbm1heF9vcHMnLCBhbXBy b2NsZWZ0dHlwZSA9PiAnYnl0ZWEnLAorICBhbXByb2NyaWdodHR5cGUgPT4gJ2J5dGVhJywg YW1wcm9jbnVtID0+ICcxMScsIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfc3RhdHMnIH0sCiAK ICMgYmxvb20gYnl0ZWEKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL2J5dGVhX2Jsb29tX29w cycsIGFtcHJvY2xlZnR0eXBlID0+ICdieXRlYScsCkBAIC04MzUsNiArODM3LDggQEAKICAg YW1wcm9jID0+ICdicmluX21pbm1heF9jb25zaXN0ZW50JyB9LAogeyBhbXByb2NmYW1pbHkg PT4gJ2JyaW4vY2hhcl9taW5tYXhfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2NoYXInLAog ICBhbXByb2NyaWdodHR5cGUgPT4gJ2NoYXInLCBhbXByb2NudW0gPT4gJzQnLCBhbXByb2Mg PT4gJ2JyaW5fbWlubWF4X3VuaW9uJyB9LAoreyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vY2hh cl9taW5tYXhfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2NoYXInLAorICBhbXByb2NyaWdo dHR5cGUgPT4gJ2NoYXInLCBhbXByb2NudW0gPT4gJzExJywgYW1wcm9jID0+ICdicmluX21p bm1heF9zdGF0cycgfSwKIAogIyBibG9vbSAiY2hhciIKIHsgYW1wcm9jZmFtaWx5ID0+ICdi cmluL2NoYXJfYmxvb21fb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2NoYXInLApAQCAtODY0 LDYgKzg2OCw4IEBACiAgIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfY29uc2lzdGVudCcgfSwK IHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL25hbWVfbWlubWF4X29wcycsIGFtcHJvY2xlZnR0 eXBlID0+ICduYW1lJywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICduYW1lJywgYW1wcm9jbnVt ID0+ICc0JywgYW1wcm9jID0+ICdicmluX21pbm1heF91bmlvbicgfSwKK3sgYW1wcm9jZmFt aWx5ID0+ICdicmluL25hbWVfbWlubWF4X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICduYW1l JywKKyAgYW1wcm9jcmlnaHR0eXBlID0+ICduYW1lJywgYW1wcm9jbnVtID0+ICcxMScsIGFt cHJvYyA9PiAnYnJpbl9taW5tYXhfc3RhdHMnIH0sCiAKICMgYmxvb20gbmFtZQogeyBhbXBy b2NmYW1pbHkgPT4gJ2JyaW4vbmFtZV9ibG9vbV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAn bmFtZScsCkBAIC04OTMsNiArODk5LDggQEAKICAgYW1wcm9jID0+ICdicmluX21pbm1heF9j b25zaXN0ZW50JyB9LAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vaW50ZWdlcl9taW5tYXhf b3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2ludDgnLAogICBhbXByb2NyaWdodHR5cGUgPT4g J2ludDgnLCBhbXByb2NudW0gPT4gJzQnLCBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3VuaW9u JyB9LAoreyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vaW50ZWdlcl9taW5tYXhfb3BzJywgYW1w cm9jbGVmdHR5cGUgPT4gJ2ludDgnLAorICBhbXByb2NyaWdodHR5cGUgPT4gJ2ludDgnLCBh bXByb2NudW0gPT4gJzExJywgYW1wcm9jID0+ICdicmluX21pbm1heF9zdGF0cycgfSwKIAog eyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vaW50ZWdlcl9taW5tYXhfb3BzJywgYW1wcm9jbGVm dHR5cGUgPT4gJ2ludDInLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ2ludDInLCBhbXByb2Nu dW0gPT4gJzEnLApAQCAtOTA1LDYgKzkxMyw4IEBACiAgIGFtcHJvYyA9PiAnYnJpbl9taW5t YXhfY29uc2lzdGVudCcgfSwKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL2ludGVnZXJfbWlu bWF4X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdpbnQyJywKICAgYW1wcm9jcmlnaHR0eXBl ID0+ICdpbnQyJywgYW1wcm9jbnVtID0+ICc0JywgYW1wcm9jID0+ICdicmluX21pbm1heF91 bmlvbicgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdicmluL2ludGVnZXJfbWlubWF4X29wcycs IGFtcHJvY2xlZnR0eXBlID0+ICdpbnQyJywKKyAgYW1wcm9jcmlnaHR0eXBlID0+ICdpbnQy JywgYW1wcm9jbnVtID0+ICcxMScsIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfc3RhdHMnIH0s CiAKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL2ludGVnZXJfbWlubWF4X29wcycsIGFtcHJv Y2xlZnR0eXBlID0+ICdpbnQ0JywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdpbnQ0JywgYW1w cm9jbnVtID0+ICcxJywKQEAgLTkxNyw2ICs5MjcsOCBAQAogICBhbXByb2MgPT4gJ2JyaW5f bWlubWF4X2NvbnNpc3RlbnQnIH0sCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9pbnRlZ2Vy X21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnaW50NCcsCiAgIGFtcHJvY3JpZ2h0 dHlwZSA9PiAnaW50NCcsIGFtcHJvY251bSA9PiAnNCcsIGFtcHJvYyA9PiAnYnJpbl9taW5t YXhfdW5pb24nIH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9pbnRlZ2VyX21pbm1heF9v cHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnaW50NCcsCisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAn aW50NCcsIGFtcHJvY251bSA9PiAnMTEnLCBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3N0YXRz JyB9LAogCiAjIG1pbm1heCBtdWx0aSBpbnRlZ2VyOiBpbnQyLCBpbnQ0LCBpbnQ4CiB7IGFt cHJvY2ZhbWlseSA9PiAnYnJpbi9pbnRlZ2VyX21pbm1heF9tdWx0aV9vcHMnLCBhbXByb2Ns ZWZ0dHlwZSA9PiAnaW50MicsCkBAIC0xMDM0LDYgKzEwNDYsOCBAQAogICBhbXByb2MgPT4g J2JyaW5fbWlubWF4X2NvbnNpc3RlbnQnIH0sCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi90 ZXh0X21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAndGV4dCcsCiAgIGFtcHJvY3Jp Z2h0dHlwZSA9PiAndGV4dCcsIGFtcHJvY251bSA9PiAnNCcsIGFtcHJvYyA9PiAnYnJpbl9t aW5tYXhfdW5pb24nIH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi90ZXh0X21pbm1heF9v cHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAndGV4dCcsCisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAn dGV4dCcsIGFtcHJvY251bSA9PiAnMTEnLCBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3N0YXRz JyB9LAogCiAjIGJsb29tIHRleHQKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL3RleHRfYmxv b21fb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ3RleHQnLApAQCAtMTA2Miw2ICsxMDc2LDgg QEAKICAgYW1wcm9jID0+ICdicmluX21pbm1heF9jb25zaXN0ZW50JyB9LAogeyBhbXByb2Nm YW1pbHkgPT4gJ2JyaW4vb2lkX21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnb2lk JywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdvaWQnLCBhbXByb2NudW0gPT4gJzQnLCBhbXBy b2MgPT4gJ2JyaW5fbWlubWF4X3VuaW9uJyB9LAoreyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4v b2lkX21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnb2lkJywKKyAgYW1wcm9jcmln aHR0eXBlID0+ICdvaWQnLCBhbXByb2NudW0gPT4gJzExJywgYW1wcm9jID0+ICdicmluX21p bm1heF9zdGF0cycgfSwKIAogIyBtaW5tYXggbXVsdGkgb2lkCiB7IGFtcHJvY2ZhbWlseSA9 PiAnYnJpbi9vaWRfbWlubWF4X211bHRpX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdvaWQn LApAQCAtMTExMCw2ICsxMTI2LDggQEAKICAgYW1wcm9jID0+ICdicmluX21pbm1heF9jb25z aXN0ZW50JyB9LAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vdGlkX21pbm1heF9vcHMnLCBh bXByb2NsZWZ0dHlwZSA9PiAndGlkJywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICd0aWQnLCBh bXByb2NudW0gPT4gJzQnLCBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3VuaW9uJyB9LAoreyBh bXByb2NmYW1pbHkgPT4gJ2JyaW4vdGlkX21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9 PiAndGlkJywKKyAgYW1wcm9jcmlnaHR0eXBlID0+ICd0aWQnLCBhbXByb2NudW0gPT4gJzEx JywgYW1wcm9jID0+ICdicmluX21pbm1heF9zdGF0cycgfSwKIAogIyBibG9vbSB0aWQKIHsg YW1wcm9jZmFtaWx5ID0+ICdicmluL3RpZF9ibG9vbV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9 PiAndGlkJywKQEAgLTExNjAsNiArMTE3OCw5IEBACiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJp bi9mbG9hdF9taW5tYXhfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2Zsb2F0NCcsCiAgIGFt cHJvY3JpZ2h0dHlwZSA9PiAnZmxvYXQ0JywgYW1wcm9jbnVtID0+ICc0JywKICAgYW1wcm9j ID0+ICdicmluX21pbm1heF91bmlvbicgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdicmluL2Zs b2F0X21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnZmxvYXQ0JywKKyAgYW1wcm9j cmlnaHR0eXBlID0+ICdmbG9hdDQnLCBhbXByb2NudW0gPT4gJzExJywKKyAgYW1wcm9jID0+ ICdicmluX21pbm1heF9zdGF0cycgfSwKIAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vZmxv YXRfbWlubWF4X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdmbG9hdDgnLAogICBhbXByb2Ny aWdodHR5cGUgPT4gJ2Zsb2F0OCcsIGFtcHJvY251bSA9PiAnMScsCkBAIC0xMTczLDYgKzEx OTQsOSBAQAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vZmxvYXRfbWlubWF4X29wcycsIGFt cHJvY2xlZnR0eXBlID0+ICdmbG9hdDgnLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ2Zsb2F0 OCcsIGFtcHJvY251bSA9PiAnNCcsCiAgIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfdW5pb24n IH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9mbG9hdF9taW5tYXhfb3BzJywgYW1wcm9j bGVmdHR5cGUgPT4gJ2Zsb2F0OCcsCisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnZmxvYXQ4Jywg YW1wcm9jbnVtID0+ICcxMScsCisgIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfc3RhdHMnIH0s CiAKICMgbWlubWF4IG11bHRpIGZsb2F0CiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9mbG9h dF9taW5tYXhfbXVsdGlfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2Zsb2F0NCcsCkBAIC0x MjYxLDYgKzEyODUsOSBAQAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vbWFjYWRkcl9taW5t YXhfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ21hY2FkZHInLAogICBhbXByb2NyaWdodHR5 cGUgPT4gJ21hY2FkZHInLCBhbXByb2NudW0gPT4gJzQnLAogICBhbXByb2MgPT4gJ2JyaW5f bWlubWF4X3VuaW9uJyB9LAoreyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vbWFjYWRkcl9taW5t YXhfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ21hY2FkZHInLAorICBhbXByb2NyaWdodHR5 cGUgPT4gJ21hY2FkZHInLCBhbXByb2NudW0gPT4gJzExJywKKyAgYW1wcm9jID0+ICdicmlu X21pbm1heF9zdGF0cycgfSwKIAogIyBtaW5tYXggbXVsdGkgbWFjYWRkcgogeyBhbXByb2Nm YW1pbHkgPT4gJ2JyaW4vbWFjYWRkcl9taW5tYXhfbXVsdGlfb3BzJywgYW1wcm9jbGVmdHR5 cGUgPT4gJ21hY2FkZHInLApAQCAtMTMxNCw2ICsxMzQxLDkgQEAKIHsgYW1wcm9jZmFtaWx5 ID0+ICdicmluL21hY2FkZHI4X21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnbWFj YWRkcjgnLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ21hY2FkZHI4JywgYW1wcm9jbnVtID0+ ICc0JywKICAgYW1wcm9jID0+ICdicmluX21pbm1heF91bmlvbicgfSwKK3sgYW1wcm9jZmFt aWx5ID0+ICdicmluL21hY2FkZHI4X21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAn bWFjYWRkcjgnLAorICBhbXByb2NyaWdodHR5cGUgPT4gJ21hY2FkZHI4JywgYW1wcm9jbnVt ID0+ICcxMScsCisgIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfc3RhdHMnIH0sCiAKICMgbWlu bWF4IG11bHRpIG1hY2FkZHI4CiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9tYWNhZGRyOF9t aW5tYXhfbXVsdGlfb3BzJywKQEAgLTEzNjYsNiArMTM5Niw4IEBACiAgIGFtcHJvYyA9PiAn YnJpbl9taW5tYXhfY29uc2lzdGVudCcgfSwKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL25l dHdvcmtfbWlubWF4X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdpbmV0JywKICAgYW1wcm9j cmlnaHR0eXBlID0+ICdpbmV0JywgYW1wcm9jbnVtID0+ICc0JywgYW1wcm9jID0+ICdicmlu X21pbm1heF91bmlvbicgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdicmluL25ldHdvcmtfbWlu bWF4X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdpbmV0JywKKyAgYW1wcm9jcmlnaHR0eXBl ID0+ICdpbmV0JywgYW1wcm9jbnVtID0+ICcxMScsIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhf c3RhdHMnIH0sCiAKICMgbWlubWF4IG11bHRpIGluZXQKIHsgYW1wcm9jZmFtaWx5ID0+ICdi cmluL25ldHdvcmtfbWlubWF4X211bHRpX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdpbmV0 JywKQEAgLTE0MzYsNiArMTQ2OCw5IEBACiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9icGNo YXJfbWlubWF4X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdicGNoYXInLAogICBhbXByb2Ny aWdodHR5cGUgPT4gJ2JwY2hhcicsIGFtcHJvY251bSA9PiAnNCcsCiAgIGFtcHJvYyA9PiAn YnJpbl9taW5tYXhfdW5pb24nIH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9icGNoYXJf bWlubWF4X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdicGNoYXInLAorICBhbXByb2NyaWdo dHR5cGUgPT4gJ2JwY2hhcicsIGFtcHJvY251bSA9PiAnMTEnLAorICBhbXByb2MgPT4gJ2Jy aW5fbWlubWF4X3N0YXRzJyB9LAogCiAjIGJsb29tIGNoYXJhY3RlcgogeyBhbXByb2NmYW1p bHkgPT4gJ2JyaW4vYnBjaGFyX2Jsb29tX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdicGNo YXInLApAQCAtMTQ2Nyw2ICsxNTAyLDggQEAKICAgYW1wcm9jID0+ICdicmluX21pbm1heF9j b25zaXN0ZW50JyB9LAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vdGltZV9taW5tYXhfb3Bz JywgYW1wcm9jbGVmdHR5cGUgPT4gJ3RpbWUnLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ3Rp bWUnLCBhbXByb2NudW0gPT4gJzQnLCBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3VuaW9uJyB9 LAoreyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vdGltZV9taW5tYXhfb3BzJywgYW1wcm9jbGVm dHR5cGUgPT4gJ3RpbWUnLAorICBhbXByb2NyaWdodHR5cGUgPT4gJ3RpbWUnLCBhbXByb2Nu dW0gPT4gJzExJywgYW1wcm9jID0+ICdicmluX21pbm1heF9zdGF0cycgfSwKIAogIyBtaW5t YXggbXVsdGkgdGltZSB3aXRob3V0IHRpbWUgem9uZQogeyBhbXByb2NmYW1pbHkgPT4gJ2Jy aW4vdGltZV9taW5tYXhfbXVsdGlfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ3RpbWUnLApA QCAtMTUxNyw2ICsxNTU0LDkgQEAKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL2RhdGV0aW1l X21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAndGltZXN0YW1wJywKICAgYW1wcm9j cmlnaHR0eXBlID0+ICd0aW1lc3RhbXAnLCBhbXByb2NudW0gPT4gJzQnLAogICBhbXByb2Mg PT4gJ2JyaW5fbWlubWF4X3VuaW9uJyB9LAoreyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vZGF0 ZXRpbWVfbWlubWF4X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICd0aW1lc3RhbXAnLAorICBh bXByb2NyaWdodHR5cGUgPT4gJ3RpbWVzdGFtcCcsIGFtcHJvY251bSA9PiAnMTEnLAorICBh bXByb2MgPT4gJ2JyaW5fbWlubWF4X3N0YXRzJyB9LAogCiB7IGFtcHJvY2ZhbWlseSA9PiAn YnJpbi9kYXRldGltZV9taW5tYXhfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ3RpbWVzdGFt cHR6JywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICd0aW1lc3RhbXB0eicsIGFtcHJvY251bSA9 PiAnMScsCkBAIC0xNTMwLDYgKzE1NzAsOSBAQAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4v ZGF0ZXRpbWVfbWlubWF4X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICd0aW1lc3RhbXB0eics CiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAndGltZXN0YW1wdHonLCBhbXByb2NudW0gPT4gJzQn LAogICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3VuaW9uJyB9LAoreyBhbXByb2NmYW1pbHkg PT4gJ2JyaW4vZGF0ZXRpbWVfbWlubWF4X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICd0aW1l c3RhbXB0eicsCisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAndGltZXN0YW1wdHonLCBhbXByb2Nu dW0gPT4gJzExJywKKyAgYW1wcm9jID0+ICdicmluX21pbm1heF9zdGF0cycgfSwKIAogeyBh bXByb2NmYW1pbHkgPT4gJ2JyaW4vZGF0ZXRpbWVfbWlubWF4X29wcycsIGFtcHJvY2xlZnR0 eXBlID0+ICdkYXRlJywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdkYXRlJywgYW1wcm9jbnVt ID0+ICcxJywKQEAgLTE1NDIsNiArMTU4NSw4IEBACiAgIGFtcHJvYyA9PiAnYnJpbl9taW5t YXhfY29uc2lzdGVudCcgfSwKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL2RhdGV0aW1lX21p bm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnZGF0ZScsCiAgIGFtcHJvY3JpZ2h0dHlw ZSA9PiAnZGF0ZScsIGFtcHJvY251bSA9PiAnNCcsIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhf dW5pb24nIH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9kYXRldGltZV9taW5tYXhfb3Bz JywgYW1wcm9jbGVmdHR5cGUgPT4gJ2RhdGUnLAorICBhbXByb2NyaWdodHR5cGUgPT4gJ2Rh dGUnLCBhbXByb2NudW0gPT4gJzExJywgYW1wcm9jID0+ICdicmluX21pbm1heF9zdGF0cycg fSwKIAogIyBtaW5tYXggbXVsdGkgZGF0ZXRpbWUgKGRhdGUsIHRpbWVzdGFtcCwgdGltZXN0 YW1wdHopCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9kYXRldGltZV9taW5tYXhfbXVsdGlf b3BzJywKQEAgLTE2NjgsNiArMTcxMyw5IEBACiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9p bnRlcnZhbF9taW5tYXhfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2ludGVydmFsJywKICAg YW1wcm9jcmlnaHR0eXBlID0+ICdpbnRlcnZhbCcsIGFtcHJvY251bSA9PiAnNCcsCiAgIGFt cHJvYyA9PiAnYnJpbl9taW5tYXhfdW5pb24nIH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnYnJp bi9pbnRlcnZhbF9taW5tYXhfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2ludGVydmFsJywK KyAgYW1wcm9jcmlnaHR0eXBlID0+ICdpbnRlcnZhbCcsIGFtcHJvY251bSA9PiAnMTEnLAor ICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3N0YXRzJyB9LAogCiAjIG1pbm1heCBtdWx0aSBp bnRlcnZhbAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vaW50ZXJ2YWxfbWlubWF4X211bHRp X29wcycsCkBAIC0xNzIxLDYgKzE3NjksOSBAQAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4v dGltZXR6X21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAndGltZXR6JywKICAgYW1w cm9jcmlnaHR0eXBlID0+ICd0aW1ldHonLCBhbXByb2NudW0gPT4gJzQnLAogICBhbXByb2Mg PT4gJ2JyaW5fbWlubWF4X3VuaW9uJyB9LAoreyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vdGlt ZXR6X21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAndGltZXR6JywKKyAgYW1wcm9j cmlnaHR0eXBlID0+ICd0aW1ldHonLCBhbXByb2NudW0gPT4gJzExJywKKyAgYW1wcm9jID0+ ICdicmluX21pbm1heF9zdGF0cycgfSwKIAogIyBtaW5tYXggbXVsdGkgdGltZSB3aXRoIHRp bWUgem9uZQogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vdGltZXR6X21pbm1heF9tdWx0aV9v cHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAndGltZXR6JywKQEAgLTE3NzEsNiArMTgyMiw4IEBA CiAgIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfY29uc2lzdGVudCcgfSwKIHsgYW1wcm9jZmFt aWx5ID0+ICdicmluL2JpdF9taW5tYXhfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2JpdCcs CiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnYml0JywgYW1wcm9jbnVtID0+ICc0JywgYW1wcm9j ID0+ICdicmluX21pbm1heF91bmlvbicgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdicmluL2Jp dF9taW5tYXhfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2JpdCcsCisgIGFtcHJvY3JpZ2h0 dHlwZSA9PiAnYml0JywgYW1wcm9jbnVtID0+ICcxMScsIGFtcHJvYyA9PiAnYnJpbl9taW5t YXhfc3RhdHMnIH0sCiAKICMgbWlubWF4IGJpdCB2YXJ5aW5nCiB7IGFtcHJvY2ZhbWlseSA9 PiAnYnJpbi92YXJiaXRfbWlubWF4X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICd2YXJiaXQn LApAQCAtMTc4NSw2ICsxODM4LDkgQEAKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL3ZhcmJp dF9taW5tYXhfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ3ZhcmJpdCcsCiAgIGFtcHJvY3Jp Z2h0dHlwZSA9PiAndmFyYml0JywgYW1wcm9jbnVtID0+ICc0JywKICAgYW1wcm9jID0+ICdi cmluX21pbm1heF91bmlvbicgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdicmluL3ZhcmJpdF9t aW5tYXhfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ3ZhcmJpdCcsCisgIGFtcHJvY3JpZ2h0 dHlwZSA9PiAndmFyYml0JywgYW1wcm9jbnVtID0+ICcxMScsCisgIGFtcHJvYyA9PiAnYnJp bl9taW5tYXhfc3RhdHMnIH0sCiAKICMgbWlubWF4IG51bWVyaWMKIHsgYW1wcm9jZmFtaWx5 ID0+ICdicmluL251bWVyaWNfbWlubWF4X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdudW1l cmljJywKQEAgLTE3OTksNiArMTg1NSw5IEBACiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9u dW1lcmljX21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnbnVtZXJpYycsCiAgIGFt cHJvY3JpZ2h0dHlwZSA9PiAnbnVtZXJpYycsIGFtcHJvY251bSA9PiAnNCcsCiAgIGFtcHJv YyA9PiAnYnJpbl9taW5tYXhfdW5pb24nIH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9u dW1lcmljX21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnbnVtZXJpYycsCisgIGFt cHJvY3JpZ2h0dHlwZSA9PiAnbnVtZXJpYycsIGFtcHJvY251bSA9PiAnMTEnLAorICBhbXBy b2MgPT4gJ2JyaW5fbWlubWF4X3N0YXRzJyB9LAogCiAjIG1pbm1heCBtdWx0aSBudW1lcmlj CiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9udW1lcmljX21pbm1heF9tdWx0aV9vcHMnLCBh bXByb2NsZWZ0dHlwZSA9PiAnbnVtZXJpYycsCkBAIC0xODUxLDYgKzE5MTAsOCBAQAogICBh bXByb2MgPT4gJ2JyaW5fbWlubWF4X2NvbnNpc3RlbnQnIH0sCiB7IGFtcHJvY2ZhbWlseSA9 PiAnYnJpbi91dWlkX21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAndXVpZCcsCiAg IGFtcHJvY3JpZ2h0dHlwZSA9PiAndXVpZCcsIGFtcHJvY251bSA9PiAnNCcsIGFtcHJvYyA9 PiAnYnJpbl9taW5tYXhfdW5pb24nIH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi91dWlk X21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAndXVpZCcsCisgIGFtcHJvY3JpZ2h0 dHlwZSA9PiAndXVpZCcsIGFtcHJvY251bSA9PiAnMTEnLCBhbXByb2MgPT4gJ2JyaW5fbWlu bWF4X3N0YXRzJyB9LAogCiAjIG1pbm1heCBtdWx0aSB1dWlkCiB7IGFtcHJvY2ZhbWlseSA9 PiAnYnJpbi91dWlkX21pbm1heF9tdWx0aV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAndXVp ZCcsCkBAIC0xOTI0LDYgKzE5ODUsOSBAQAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vcGdf bHNuX21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAncGdfbHNuJywKICAgYW1wcm9j cmlnaHR0eXBlID0+ICdwZ19sc24nLCBhbXByb2NudW0gPT4gJzQnLAogICBhbXByb2MgPT4g J2JyaW5fbWlubWF4X3VuaW9uJyB9LAoreyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vcGdfbHNu X21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAncGdfbHNuJywKKyAgYW1wcm9jcmln aHR0eXBlID0+ICdwZ19sc24nLCBhbXByb2NudW0gPT4gJzExJywKKyAgYW1wcm9jID0+ICdi cmluX21pbm1heF9zdGF0cycgfSwKIAogIyBtaW5tYXggbXVsdGkgcGdfbHNuCiB7IGFtcHJv Y2ZhbWlseSA9PiAnYnJpbi9wZ19sc25fbWlubWF4X211bHRpX29wcycsIGFtcHJvY2xlZnR0 eXBlID0+ICdwZ19sc24nLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19w cm9jLmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKaW5kZXggYzBmMmE4 YTc3Yy4uOTBhYmJmMzgzZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19w cm9jLmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CkBAIC04NDg3 LDYgKzg0ODcsMTAgQEAKIHsgb2lkID0+ICczMzg2JywgZGVzY3IgPT4gJ0JSSU4gbWlubWF4 IHN1cHBvcnQnLAogICBwcm9uYW1lID0+ICdicmluX21pbm1heF91bmlvbicsIHByb3JldHR5 cGUgPT4gJ2Jvb2wnLAogICBwcm9hcmd0eXBlcyA9PiAnaW50ZXJuYWwgaW50ZXJuYWwgaW50 ZXJuYWwnLCBwcm9zcmMgPT4gJ2JyaW5fbWlubWF4X3VuaW9uJyB9LAoreyBvaWQgPT4gJzk4 MDAnLCBkZXNjciA9PiAnQlJJTiBtaW5tYXggc3VwcG9ydCcsCisgIHByb25hbWUgPT4gJ2Jy aW5fbWlubWF4X3N0YXRzJywgcHJvcmV0dHlwZSA9PiAnYm9vbCcsCisgIHByb2FyZ3R5cGVz ID0+ICdpbnRlcm5hbCBpbnRlcm5hbCBpbnQyIGludDIgaW50ZXJuYWwgaW50NCcsCisgIHBy b3NyYyA9PiAnYnJpbl9taW5tYXhfc3RhdHMnIH0sCiAKICMgQlJJTiBtaW5tYXggbXVsdGkK IHsgb2lkID0+ICc0NjE2JywgZGVzY3IgPT4gJ0JSSU4gbXVsdGkgbWlubWF4IHN1cHBvcnQn LApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdGF0aXN0aWMuaCBiL3Ny Yy9pbmNsdWRlL2NhdGFsb2cvcGdfc3RhdGlzdGljLmgKaW5kZXggODc3MGM1YjRjNi4uZDNk MGJjZTI1NyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdGF0aXN0aWMu aAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N0YXRpc3RpYy5oCkBAIC0xMjEsNiAr MTIxLDExIEBAIENBVEFMT0cocGdfc3RhdGlzdGljLDI2MTksU3RhdGlzdGljUmVsYXRpb25J ZCkKIAlhbnlhcnJheQlzdGF2YWx1ZXMzOwogCWFueWFycmF5CXN0YXZhbHVlczQ7CiAJYW55 YXJyYXkJc3RhdmFsdWVzNTsKKworCS8qCisJICogU3RhdGlzdGljcyBjYWxjdWxhdGVkIGJ5 IGluZGV4IEFNIChlLmcuIEJSSU4gZm9yIHJhbmdlcywgZXRjLikuCisJICovCisJYnl0ZWEJ CXN0YWluZGV4YW07CiAjZW5kaWYKIH0gRm9ybURhdGFfcGdfc3RhdGlzdGljOwogCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9jb21tYW5kcy92YWN1dW0uaCBiL3NyYy9pbmNsdWRlL2Nv bW1hbmRzL3ZhY3V1bS5oCmluZGV4IDY4OWRiYjc3MDIuLmRiYTQxMWNhY2YgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3ZhY3V1bS5oCisrKyBiL3NyYy9pbmNsdWRlL2Nv bW1hbmRzL3ZhY3V1bS5oCkBAIC0xNTUsNiArMTU1LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgVmFj QXR0clN0YXRzCiAJZmxvYXQ0CSAgICpzdGFudW1iZXJzW1NUQVRJU1RJQ19OVU1fU0xPVFNd OwogCWludAkJCW51bXZhbHVlc1tTVEFUSVNUSUNfTlVNX1NMT1RTXTsKIAlEYXR1bQkgICAq c3RhdmFsdWVzW1NUQVRJU1RJQ19OVU1fU0xPVFNdOworCURhdHVtCQlzdGFpbmRleGFtOwkJ LyogaW5kZXgtc3BlY2lmaWMgc3RhdHMgKGFzIGJ5dGVhKSAqLwogCiAJLyoKIAkgKiBUaGVz ZSBmaWVsZHMgZGVzY3JpYmUgdGhlIHN0YXZhbHVlc1tuXSBlbGVtZW50IHR5cGVzLiBUaGV5 IHdpbGwgYmUKQEAgLTI5OSw2ICszMDAsNyBAQCBleHRlcm4gUEdETExJTVBPUlQgaW50IHZh Y3V1bV9tdWx0aXhhY3RfZnJlZXplX21pbl9hZ2U7CiBleHRlcm4gUEdETExJTVBPUlQgaW50 IHZhY3V1bV9tdWx0aXhhY3RfZnJlZXplX3RhYmxlX2FnZTsKIGV4dGVybiBQR0RMTElNUE9S VCBpbnQgdmFjdXVtX2ZhaWxzYWZlX2FnZTsKIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgdmFj dXVtX211bHRpeGFjdF9mYWlsc2FmZV9hZ2U7CitleHRlcm4gUEdETExJTVBPUlQgYm9vbCBl bmFibGVfaW5kZXhhbV9zdGF0czsKIAogLyogVmFyaWFibGVzIGZvciBjb3N0LWJhc2VkIHBh cmFsbGVsIHZhY3V1bSAqLwogZXh0ZXJuIFBHRExMSU1QT1JUIHBnX2F0b21pY191aW50MzIg KlZhY3V1bVNoYXJlZENvc3RCYWxhbmNlOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRp bHMvbHN5c2NhY2hlLmggYi9zcmMvaW5jbHVkZS91dGlscy9sc3lzY2FjaGUuaAppbmRleCA0 ZjU0MThiOTcyLi5mY2VmOTFkMzA2IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9s c3lzY2FjaGUuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9sc3lzY2FjaGUuaApAQCAtMTg1 LDYgKzE4NSw3IEBAIGV4dGVybiBPaWQJZ2V0QmFzZVR5cGUoT2lkIHR5cGlkKTsKIGV4dGVy biBPaWQJZ2V0QmFzZVR5cGVBbmRUeXBtb2QoT2lkIHR5cGlkLCBpbnQzMiAqdHlwbW9kKTsK IGV4dGVybiBpbnQzMiBnZXRfdHlwYXZnd2lkdGgoT2lkIHR5cGlkLCBpbnQzMiB0eXBtb2Qp OwogZXh0ZXJuIGludDMyIGdldF9hdHRhdmd3aWR0aChPaWQgcmVsaWQsIEF0dHJOdW1iZXIg YXR0bnVtKTsKK2V4dGVybiBieXRlYSAqZ2V0X2F0dGluZGV4YW0oT2lkIHJlbGlkLCBBdHRy TnVtYmVyIGF0dG51bSk7CiBleHRlcm4gYm9vbCBnZXRfYXR0c3RhdHNzbG90KEF0dFN0YXRz U2xvdCAqc3Nsb3QsIEhlYXBUdXBsZSBzdGF0c3R1cGxlLAogCQkJCQkJCSBpbnQgcmVxa2lu ZCwgT2lkIHJlcW9wLCBpbnQgZmxhZ3MpOwogZXh0ZXJuIHZvaWQgZnJlZV9hdHRzdGF0c3Ns b3QoQXR0U3RhdHNTbG90ICpzc2xvdCk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL3N5c3ZpZXdzLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3lz dmlld3Mub3V0CmluZGV4IDAwMWM2ZTdlYjkuLmI3ZmRhNmZjODIgMTAwNjQ0Ci0tLSBhL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3lzdmlld3Mub3V0CisrKyBiL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvc3lzdmlld3Mub3V0CkBAIC0xMTcsNiArMTE3LDcgQEAgc2VsZWN0 IG5hbWUsIHNldHRpbmcgZnJvbSBwZ19zZXR0aW5ncyB3aGVyZSBuYW1lIGxpa2UgJ2VuYWJs ZSUnOwogIGVuYWJsZV9oYXNoYWdnICAgICAgICAgICAgICAgICB8IG9uCiAgZW5hYmxlX2hh c2hqb2luICAgICAgICAgICAgICAgIHwgb24KICBlbmFibGVfaW5jcmVtZW50YWxfc29ydCAg ICAgICAgfCBvbgorIGVuYWJsZV9pbmRleGFtX3N0YXRzICAgICAgICAgICB8IG9mZgogIGVu YWJsZV9pbmRleG9ubHlzY2FuICAgICAgICAgICB8IG9uCiAgZW5hYmxlX2luZGV4c2NhbiAg ICAgICAgICAgICAgIHwgb24KICBlbmFibGVfbWF0ZXJpYWwgICAgICAgICAgICAgICAgfCBv bgpAQCAtMTMyLDcgKzEzMyw3IEBAIHNlbGVjdCBuYW1lLCBzZXR0aW5nIGZyb20gcGdfc2V0 dGluZ3Mgd2hlcmUgbmFtZSBsaWtlICdlbmFibGUlJzsKICBlbmFibGVfc2Vxc2NhbiAgICAg ICAgICAgICAgICAgfCBvbgogIGVuYWJsZV9zb3J0ICAgICAgICAgICAgICAgICAgICB8IG9u CiAgZW5hYmxlX3RpZHNjYW4gICAgICAgICAgICAgICAgIHwgb24KLSgyMSByb3dzKQorKDIy IHJvd3MpCiAKIC0tIFRlc3QgdGhhdCB0aGUgcGdfdGltZXpvbmVfbmFtZXMgYW5kIHBnX3Rp bWV6b25lX2FiYnJldnMgdmlld3MgYXJlCiAtLSBtb3JlLW9yLWxlc3Mgd29ya2luZy4gIFdl IGNhbid0IHRlc3QgdGhlaXIgY29udGVudHMgaW4gYW55IGdyZWF0IGRldGFpbAotLSAKMi4z OS4wCgo= --------------z0saJSUvc90TqSu15DjSpJR9 Content-Type: text/x-patch; charset=UTF-8; name="0002-wip-introduce-debug_brin_stats-20230206.patch" Content-Disposition: attachment; filename="0002-wip-introduce-debug_brin_stats-20230206.patch" Content-Transfer-Encoding: base64 RnJvbSBhOTAzMzg4ZGIxM2I1NjFiZDNiNWY1MzY0ZGU1M2YwZWE3YTdmZjhkIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzLnZvbmRyYUBwb3N0 Z3Jlc3FsLm9yZz4KRGF0ZTogU2F0LCAyOSBPY3QgMjAyMiAxNzo0Njo1MSArMDIwMApTdWJq ZWN0OiBbUEFUQ0ggMDIvMTBdIHdpcDogaW50cm9kdWNlIGRlYnVnX2JyaW5fc3RhdHMKCi0t LQogc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbl9taW5tYXguYyB8IDgwICsrKysrKysr KysrKysrKysrKysrKysrKysrKwogc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVz LmMgICB8IDE4ICsrKysrKwogMiBmaWxlcyBjaGFuZ2VkLCA5OCBpbnNlcnRpb25zKCspCgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbl9taW5tYXguYyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW5fbWlubWF4LmMKaW5kZXggNjdlNjhhOGI4ZS4u NmUyMGEzNGZiYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbl9t aW5tYXguYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluX21pbm1heC5jCkBA IC0yNyw2ICsyNywxMCBAQAogI2luY2x1ZGUgInV0aWxzL3N5c2NhY2hlLmgiCiAjaW5jbHVk ZSAidXRpbHMvdGltZXN0YW1wLmgiCiAKKyNpZmRlZiBERUJVR19CUklOX1NUQVRTCitib29s IGRlYnVnX2JyaW5fc3RhdHMgPSBmYWxzZTsKKyNlbmRpZgorCiB0eXBlZGVmIHN0cnVjdCBN aW5tYXhPcGFxdWUKIHsKIAlPaWQJCQljYWNoZWRfc3VidHlwZTsKQEAgLTQ3OSw2ICs0ODMs MTMgQEAgYnJpbl9taW5tYXhfY291bnRfb3ZlcmxhcHMoQnJpblJhbmdlICoqbWlucmFuZ2Vz LCBpbnQgbnJhbmdlcywKIHsKIAlpbnQ2NAlub3ZlcmxhcHM7CiAKKyNpZmRlZiBERUJVR19C UklOX1NUQVRTCisJVGltZXN0YW1wVHoJCXN0YXJ0X3RzOworCisJaWYgKGRlYnVnX2JyaW5f c3RhdHMpCisJCXN0YXJ0X3RzID0gR2V0Q3VycmVudFRpbWVzdGFtcCgpOworI2VuZGlmCisK IAlub3ZlcmxhcHMgPSAwOwogCWZvciAoaW50IGkgPSAwOyBpIDwgbnJhbmdlczsgaSsrKQog CXsKQEAgLTUwMSw2ICs1MTIsMTYgQEAgYnJpbl9taW5tYXhfY291bnRfb3ZlcmxhcHMoQnJp blJhbmdlICoqbWlucmFuZ2VzLCBpbnQgbnJhbmdlcywKIAkgKi8KIAlub3ZlcmxhcHMgKj0g MjsKIAorI2lmZGVmIERFQlVHX0JSSU5fU1RBVFMKKwlpZiAoZGVidWdfYnJpbl9zdGF0cykK Kwl7CisJCWVsb2coV0FSTklORywgIi0tLS0tIGJyaW5fbWlubWF4X2NvdW50X292ZXJsYXBz IC0tLS0tIik7CisJCWVsb2coV0FSTklORywgIm5vdmVybGFwcyA9ICVsZCIsIG5vdmVybGFw cyk7CisJCWVsb2coV0FSTklORywgImR1cmF0aW9uID0gJWxkIiwgVGltZXN0YW1wRGlmZmVy ZW5jZU1pbGxpc2Vjb25kcyhzdGFydF90cywKKwkJCQkJCQkJCQlHZXRDdXJyZW50VGltZXN0 YW1wKCkpKTsKKwl9CisjZW5kaWYKKwogCXN0YXRzLT5hdmdfb3ZlcmxhcHMgPSAoZG91Ymxl KSBub3ZlcmxhcHMgLyBucmFuZ2VzOwogfQogCkBAIC01MjcsNiArNTQ4LDEzIEBAIGJyaW5f bWlubWF4X21hdGNoX3R1cGxlc190b19yYW5nZXMoQnJpblJhbmdlcyAqcmFuZ2VzLAogCiAJ aW50NjQgICp1bmlxdWUgPSAoaW50NjQgKikgcGFsbG9jMChzaXplb2YoaW50NjQpICogbnZh bHVlcyk7CiAKKyNpZmRlZiBERUJVR19CUklOX1NUQVRTCisJVGltZXN0YW1wVHoJCXN0YXJ0 X3RzOworCisJaWYgKGRlYnVnX2JyaW5fc3RhdHMpCisJCXN0YXJ0X3RzID0gR2V0Q3VycmVu dFRpbWVzdGFtcCgpOworI2VuZGlmCisKIAkvKgogCSAqIEJ1aWxkIHJ1bm5pbmcgY291bnQg b2YgdW5pcXVlIHZhbHVlcy4gV2Uga25vdyB0aGVyZSBhcmUgdW5pcXVlW2ldCiAJICogdW5p cXVlIHZhbHVlcyBpbiB2YWx1ZXMgYXJyYXkgdXAgdG8gaW5kZXggImkiLgpAQCAtNTcyLDYg KzYwMCwxOCBAQCBicmluX21pbm1heF9tYXRjaF90dXBsZXNfdG9fcmFuZ2VzKEJyaW5SYW5n ZXMgKnJhbmdlcywKIAlBc3NlcnQobm1hdGNoZXMgPj0gMCk7CiAJQXNzZXJ0KG5tYXRjaGVz X3VuaXF1ZSA+PSAwKTsKIAorI2lmZGVmIERFQlVHX0JSSU5fU1RBVFMKKwlpZiAoZGVidWdf YnJpbl9zdGF0cykKKwl7CisJCWVsb2coV0FSTklORywgIi0tLS0tIGJyaW5fbWlubWF4X21h dGNoX3R1cGxlc190b19yYW5nZXMgLS0tLS0iKTsKKwkJZWxvZyhXQVJOSU5HLCAibm1hdGNo ZXMgPSAlbGQgJWYiLCBubWF0Y2hlcywgKGRvdWJsZSkgbm1hdGNoZXMgLyBudW1yb3dzKTsK KwkJZWxvZyhXQVJOSU5HLCAibm1hdGNoZXMgdW5pcXVlID0gJWxkICVsZCAlZiIsIG5tYXRj aGVzX3VuaXF1ZSwgbnZhbHVlc191bmlxdWUsCisJCQkoZG91YmxlKSBubWF0Y2hlc191bmlx dWUgLyBudmFsdWVzX3VuaXF1ZSk7CisJCWVsb2coV0FSTklORywgImR1cmF0aW9uID0gJWxk IiwgVGltZXN0YW1wRGlmZmVyZW5jZU1pbGxpc2Vjb25kcyhzdGFydF90cywKKwkJCQkJCQkJ CUdldEN1cnJlbnRUaW1lc3RhbXAoKSkpOworCX0KKyNlbmRpZgorCiAJc3RhdHMtPmF2Z19t YXRjaGVzID0gKGRvdWJsZSkgbm1hdGNoZXMgLyBudW1yb3dzOwogCXN0YXRzLT5hdmdfbWF0 Y2hlc191bmlxdWUgPSAoZG91YmxlKSBubWF0Y2hlc191bmlxdWUgLyBudmFsdWVzX3VuaXF1 ZTsKIH0KQEAgLTYwMyw2ICs2NDMsMTMgQEAgYnJpbl9taW5tYXhfdmFsdWVfc3RhdHMoQnJp blJhbmdlICoqbWlucmFuZ2VzLCBCcmluUmFuZ2UgKiptYXhyYW5nZXMsCiAJCQltaW52YWxf Y29yciA9IDAsCiAJCQltYXh2YWxfY29yciA9IDA7CiAKKyNpZmRlZiBERUJVR19CUklOX1NU QVRTCisJVGltZXN0YW1wVHoJCXN0YXJ0X3RzOworCisJaWYgKGRlYnVnX2JyaW5fc3RhdHMp CisJCXN0YXJ0X3RzID0gR2V0Q3VycmVudFRpbWVzdGFtcCgpOworI2VuZGlmCisKIAlmb3Ig KGludCBpID0gMTsgaSA8IG5yYW5nZXM7IGkrKykKIAl7CiAJCWlmIChyYW5nZV92YWx1ZXNf Y21wKCZtaW5yYW5nZXNbaS0xXS0+bWluX3ZhbHVlLCAmbWlucmFuZ2VzW2ldLT5taW5fdmFs dWUsIHR5cGNhY2hlKSAhPSAwKQpAQCAtNjI1LDYgKzY3MiwxOSBAQCBicmluX21pbm1heF92 YWx1ZV9zdGF0cyhCcmluUmFuZ2UgKiptaW5yYW5nZXMsIEJyaW5SYW5nZSAqKm1heHJhbmdl cywKIAogCXN0YXRzLT5taW52YWxfY29ycmVsYXRpb24gPSAoZG91YmxlKSBtaW52YWxfY29y ciAvIG5yYW5nZXM7CiAJc3RhdHMtPm1heHZhbF9jb3JyZWxhdGlvbiA9IChkb3VibGUpIG1h eHZhbF9jb3JyIC8gbnJhbmdlczsKKworI2lmZGVmIERFQlVHX0JSSU5fU1RBVFMKKwlpZiAo ZGVidWdfYnJpbl9zdGF0cykKKwl7CisJCWVsb2coV0FSTklORywgIi0tLS0tIGJyaW5fbWlu bWF4X3ZhbHVlX3N0YXRzIC0tLS0tIik7CisJCWVsb2coV0FSTklORywgIm1pbnZhbCBuZGlz dGluY3QgIiBJTlQ2NF9GT1JNQVQgIiBjb3JyZWxhdGlvbiAlZiIsCisJCQkgc3RhdHMtPm1p bnZhbF9uZGlzdGluY3QsIHN0YXRzLT5taW52YWxfY29ycmVsYXRpb24pOworCQllbG9nKFdB Uk5JTkcsICJtYXh2YWwgbmRpc3RpbmN0ICIgSU5UNjRfRk9STUFUICIgY29ycmVsYXRpb24g JWYiLAorCQkJIHN0YXRzLT5tYXh2YWxfbmRpc3RpbmN0LCBzdGF0cy0+bWF4dmFsX2NvcnJl bGF0aW9uKTsKKwkJZWxvZyhXQVJOSU5HLCAiZHVyYXRpb24gPSAlbGQiLCBUaW1lc3RhbXBE aWZmZXJlbmNlTWlsbGlzZWNvbmRzKHN0YXJ0X3RzLAorCQkJCQkJCQkJCUdldEN1cnJlbnRU aW1lc3RhbXAoKSkpOworCX0KKyNlbmRpZgogfQogCiAvKgpAQCAtNjQ5LDYgKzcwOSwxMyBA QCBicmluX21pbm1heF9pbmNyZW1lbnRfc3RhdHMoQnJpblJhbmdlICoqbWlucmFuZ2VzLCBC cmluUmFuZ2UgKiptYXhyYW5nZXMsCiAJCQltYXhfbWludmFsID0gMCwKIAkJCW1heF9tYXh2 YWwgPSAwOwogCisjaWZkZWYgREVCVUdfQlJJTl9TVEFUUworCVRpbWVzdGFtcFR6CQlzdGFy dF90czsKKworCWlmIChkZWJ1Z19icmluX3N0YXRzKQorCQlzdGFydF90cyA9IEdldEN1cnJl bnRUaW1lc3RhbXAoKTsKKyNlbmRpZgorCiAJZm9yIChpbnQgaSA9IDE7IGkgPCBucmFuZ2Vz OyBpKyspCiAJewogCQlpZiAocmFuZ2VfdmFsdWVzX2NtcCgmbWlucmFuZ2VzW2ktMV0tPm1p bl92YWx1ZSwgJm1pbnJhbmdlc1tpXS0+bWluX3ZhbHVlLCB0eXBjYWNoZSkgIT0gMCkKQEAg LTcwMCw2ICs3NjcsMTkgQEAgYnJpbl9taW5tYXhfaW5jcmVtZW50X3N0YXRzKEJyaW5SYW5n ZSAqKm1pbnJhbmdlcywgQnJpblJhbmdlICoqbWF4cmFuZ2VzLAogCQl9CiAJfQogCisjaWZk ZWYgREVCVUdfQlJJTl9TVEFUUworCWlmIChkZWJ1Z19icmluX3N0YXRzKQorCXsKKwkJZWxv ZyhXQVJOSU5HLCAiLS0tLS0gYnJpbl9taW5tYXhfaW5jcmVtZW50X3N0YXRzIC0tLS0tIik7 CisJCWVsb2coV0FSTklORywgIm1pbnZhbCBuZGlzdGluY3QgJWxkIHN1bSAlZiBtYXggJWYg YXZnICVmIiwKKwkJCSBtaW52YWxfbmRpc3QsIHN1bV9taW52YWwsIG1heF9taW52YWwsIHN1 bV9taW52YWwgLyBtaW52YWxfbmRpc3QpOworCQllbG9nKFdBUk5JTkcsICJtYXh2YWwgbmRp c3RpbmN0ICVsZCBzdW0gJWYgbWF4ICVmIGF2ZyAlZiIsCisJCQkgbWF4dmFsX25kaXN0LCBz dW1fbWF4dmFsLCBtYXhfbWF4dmFsLCBzdW1fbWF4dmFsIC8gbWF4dmFsX25kaXN0KTsKKwkJ ZWxvZyhXQVJOSU5HLCAiZHVyYXRpb24gPSAlbGQiLCBUaW1lc3RhbXBEaWZmZXJlbmNlTWls bGlzZWNvbmRzKHN0YXJ0X3RzLAorCQkJCQkJCQkJCUdldEN1cnJlbnRUaW1lc3RhbXAoKSkp OworCX0KKyNlbmRpZgorCiAJc3RhdHMtPm1pbnZhbF9pbmNyZW1lbnRfYXZnID0gKHN1bV9t aW52YWwgLyBtaW52YWxfbmRpc3QpOwogCXN0YXRzLT5taW52YWxfaW5jcmVtZW50X21heCA9 IG1heF9taW52YWw7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3Vj X3RhYmxlcy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMKaW5kZXgg MzVkNTFkZjMwYi4uNDk4ZTFhZjUxOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMv bWlzYy9ndWNfdGFibGVzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFi bGVzLmMKQEAgLTk2LDYgKzk2LDEwIEBAIGV4dGVybiBib29sIGlnbm9yZV9jaGVja3N1bV9m YWlsdXJlOwogZXh0ZXJuIGJvb2wgaWdub3JlX2ludmFsaWRfcGFnZXM7CiBleHRlcm4gYm9v bCBzeW5jaHJvbml6ZV9zZXFzY2FuczsKIAorI2lmZGVmIERFQlVHX0JSSU5fU1RBVFMKK2V4 dGVybiBib29sIGRlYnVnX2JyaW5fc3RhdHM7CisjZW5kaWYKKwogI2lmZGVmIFRSQUNFX1NZ TkNTQ0FOCiBleHRlcm4gYm9vbCB0cmFjZV9zeW5jc2NhbjsKICNlbmRpZgpAQCAtMTIzMCw2 ICsxMjM0LDIwIEBAIHN0cnVjdCBjb25maWdfYm9vbCBDb25maWd1cmVOYW1lc0Jvb2xbXSA9 CiAJCU5VTEwsIE5VTEwsIE5VTEwKIAl9LAogCisjaWZkZWYgREVCVUdfQlJJTl9TVEFUUwor CS8qIHRoaXMgaXMgdW5kb2N1bWVudGVkIGJlY2F1c2Ugbm90IGV4cG9zZWQgaW4gYSBzdGFu ZGFyZCBidWlsZCAqLworCXsKKwkJeyJkZWJ1Z19icmluX3N0YXRzIiwgUEdDX1VTRVJTRVQs IERFVkVMT1BFUl9PUFRJT05TLAorCQkJZ2V0dGV4dF9ub29wKCJQcmludCBpbmZvIGFib3V0 IGNhbGN1bGF0ZWQgQlJJTiBzdGF0aXN0aWNzLiIpLAorCQkJTlVMTCwKKwkJCUdVQ19OT1Rf SU5fU0FNUExFCisJCX0sCisJCSZkZWJ1Z19icmluX3N0YXRzLAorCQlmYWxzZSwKKwkJTlVM TCwgTlVMTCwgTlVMTAorCX0sCisjZW5kaWYKKwogCXsKIAkJeyJleGl0X29uX2Vycm9yIiwg UEdDX1VTRVJTRVQsIEVSUk9SX0hBTkRMSU5HX09QVElPTlMsCiAJCQlnZXR0ZXh0X25vb3Ao IlRlcm1pbmF0ZSBzZXNzaW9uIG9uIGFueSBlcnJvci4iKSwKLS0gCjIuMzkuMAoK --------------z0saJSUvc90TqSu15DjSpJR9 Content-Type: text/x-patch; charset=UTF-8; name="0003-wip-introduce-debug_brin_cross_check-20230206.patch" Content-Disposition: attachment; filename="0003-wip-introduce-debug_brin_cross_check-20230206.patch" Content-Transfer-Encoding: base64 RnJvbSBiYjlkOTkyZjA2Njc0MjkzYTk2NTdhMDc3MmMzNjE1NzNmZWY0YzEyIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzLnZvbmRyYUBwb3N0 Z3Jlc3FsLm9yZz4KRGF0ZTogU2F0LCAyOSBPY3QgMjAyMiAyMDo0NzozMSArMDIwMApTdWJq ZWN0OiBbUEFUQ0ggMDMvMTBdIHdpcDogaW50cm9kdWNlIGRlYnVnX2JyaW5fY3Jvc3NfY2hl Y2sKCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbl9taW5tYXguYyB8IDU3NCAr KysrKysrKysrKysrKysrKysrKysrKysrKwogc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNf dGFibGVzLmMgICB8ICAxMCArCiAyIGZpbGVzIGNoYW5nZWQsIDU4NCBpbnNlcnRpb25zKCsp CgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbl9taW5tYXguYyBi L3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW5fbWlubWF4LmMKaW5kZXggNmUyMGEzNGZi Yy4uZDA4YjhlMGU2MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJp bl9taW5tYXguYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluX21pbm1heC5j CkBAIC0yOSw2ICsyOSw3IEBACiAKICNpZmRlZiBERUJVR19CUklOX1NUQVRTCiBib29sIGRl YnVnX2JyaW5fc3RhdHMgPSBmYWxzZTsKK2Jvb2wgZGVidWdfYnJpbl9jcm9zc19jaGVjayA9 IGZhbHNlOwogI2VuZGlmCiAKIHR5cGVkZWYgc3RydWN0IE1pbm1heE9wYXF1ZQpAQCAtMzM5 LDYgKzM0MCw1MCBAQCByYW5nZV92YWx1ZXNfY21wKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZv aWQgKmIsIHZvaWQgKmFyZykKIAlyZXR1cm4gRGF0dW1HZXRJbnQzMihjKTsKIH0KIAorI2lm ZGVmIERFQlVHX0JSSU5fU1RBVFMKKy8qCisgKiBtYXh2YWxfc3RhcnQKKyAqCQlEZXRlcm1p bmUgZmlyc3QgaW5kZXggc28gdGhhdCAobWF4dmFsdWUgPj0gdmFsdWUpLgorICoKKyAqIFRo ZSBhcnJheSBvZiByYW5nZXMgaXMgZXhwZWN0ZWQgdG8gYmUgc29ydGVkIGJ5IG1heHZhbHVl LCBzbyB0aGlzIGlzIHRoZSBmaXJzdAorICogcmFuZ2UgdGhhdCBjYW4gcG9zc2libHkgaW50 ZXJzZWN0IHdpdGggcmFuZ2UgaGF2aW5nICJ2YWx1ZSIgYXMgbWludmFsLgorICovCitzdGF0 aWMgaW50CittYXh2YWxfc3RhcnQoQnJpblJhbmdlICoqcmFuZ2VzLCBpbnQgbnJhbmdlcywg RGF0dW0gdmFsdWUsIFR5cGVDYWNoZUVudHJ5ICp0eXBjYWNoZSkKK3sKKwlpbnQJCXN0YXJ0 ID0gMCwKKwkJCWVuZCA9IChucmFuZ2VzIC0gMSk7CisKKwkvLyBldmVyeXRoaW5nIG1hdGNo ZXMKKwlpZiAocmFuZ2VfdmFsdWVzX2NtcCgmdmFsdWUsICZyYW5nZXNbc3RhcnRdLT5tYXhf dmFsdWUsIHR5cGNhY2hlKSA8PSAwKQorCQlyZXR1cm4gMDsKKworCS8vIG5vIG1hdGNoZXMK KwlpZiAocmFuZ2VfdmFsdWVzX2NtcCgmdmFsdWUsICZyYW5nZXNbZW5kXS0+bWF4X3ZhbHVl LCB0eXBjYWNoZSkgPiAwKQorCQlyZXR1cm4gbnJhbmdlczsKKworCXdoaWxlICgoZW5kIC0g c3RhcnQpID4gMCkKKwl7CisJCWludAkgbWlkcG9pbnQ7CisJCWludAkgcjsKKworCQltaWRw b2ludCA9IHN0YXJ0ICsgKGVuZCAtIHN0YXJ0KSAvIDI7CisKKwkJciA9IHJhbmdlX3ZhbHVl c19jbXAoJnZhbHVlLCAmcmFuZ2VzW21pZHBvaW50XS0+bWF4X3ZhbHVlLCB0eXBjYWNoZSk7 CisKKwkJaWYgKHIgPD0gMCkKKwkJCWVuZCA9IG1pZHBvaW50OworCQllbHNlCisJCQlzdGFy dCA9IChtaWRwb2ludCArIDEpOworCX0KKworCUFzc2VydChyYW5nZXNbc3RhcnRdLT5tYXhf dmFsdWUgPj0gdmFsdWUpOworCUFzc2VydChyYW5nZXNbc3RhcnQtMV0tPm1heF92YWx1ZSA8 IHZhbHVlKTsKKworCXJldHVybiBzdGFydDsKK30KKyNlbmRpZgorCiAvKgogICogbWludmFs X2VuZAogICoJCURldGVybWluZSBmaXJzdCBpbmRleCBzbyB0aGF0IChtaW52YWwgPiB2YWx1 ZSkuCkBAIC02MTYsNiArNjYxLDMxNiBAQCBicmluX21pbm1heF9tYXRjaF90dXBsZXNfdG9f cmFuZ2VzKEJyaW5SYW5nZXMgKnJhbmdlcywKIAlzdGF0cy0+YXZnX21hdGNoZXNfdW5pcXVl ID0gKGRvdWJsZSkgbm1hdGNoZXNfdW5pcXVlIC8gbnZhbHVlc191bmlxdWU7CiB9CiAKKyNp ZmRlZiBERUJVR19CUklOX1NUQVRTCisvKgorICogU2ltcGxlIGhpc3RvZ3JhbSwgd2l0aCBi aW5zIHRyYWNraW5nIHZhbHVlIGFuZCB0d28gb3ZlcmxhcCBjb3VudHMuCisgKgorICogWFhY IE1heWJlIHdlIHNob3VsZCBoYXZlIHR3byBzZXBhcmF0ZSBoaXN0b2dyYW1zLCBvbmUgZm9y IGFsbCBjb3VudHMgYW5kCisgKiBhbm90aGVyIG9uZSBmb3IgInVuaXF1ZSIgdmFsdWVzLgor ICoKKyAqIFhYWCBTZXJpYWxpemUgdGhlIGhpc3RvZ3JhbS4gVGhlcmUgbWlnaHQgYmUgYSBk YXRhIHNldCB3aGVyZSB3ZSBoYXZlIHZlcnkKKyAqIG1hbnkgZGlzdGluY3QgYnVja2V0cyAo dmFsdWVzIGhhdmluZyB2ZXJ5IGRpZmZlcmVudCBudW1iZXIgb2YgbWF0Y2hpbmcKKyAqIHJh bmdlcykgLSBub3Qgc3VyZSBpZiB0aGVyZSdzIHNvbWUgc29ydCBvZiB1cHBlciBsaW1pdCAo YnV0IGhhcmQgdG8gc2F5IGZvcgorICogb3RoZXIgb3BjbGFzc2VzLCBsaWtlIGJsb29tKS4g QW5kIHdlIGRvbid0IHdhbnQgYXJiaXRyYXJpbHkgbGFyZ2UgaGlzdG9ncmFtLAorICogdG8g a2VlcCB0aGUgc3RhdGlzdGljcyBmYWlybHkgc21hbGwsIEkgZ3Vlc3MuIFNvIHdlJ2QgbmVl ZCB0byBwaWNrIGEgc3Vic2V0LAorICogbWVyZ2UgYnVja2V0cyB3aXRoICJzaW1pbGFyIiBj b3VudHMsIG9yIGFwcHJveGltYXRlIGl0IHNvbWVob3cuIEZvciBub3cgd2UKKyAqIGRvbid0 IHNlcmlhbGl6ZSBpdCwgYmVjYXVzZSB3ZSBkb24ndCB1c2UgdGhlIGhpc3RvZ3JhbS4KKyAq LwordHlwZWRlZiBzdHJ1Y3QgaGlzdG9ncmFtX2Jpbl90Cit7CisJaW50NjQJdmFsdWU7CisJ aW50NjQJY291bnQ7Cit9IGhpc3RvZ3JhbV9iaW5fdDsKKwordHlwZWRlZiBzdHJ1Y3QgaGlz dG9ncmFtX3QKK3sKKwlpbnQJCQkJbmJpbnM7CisJaW50CQkJCW5iaW5zX21heDsKKwloaXN0 b2dyYW1fYmluX3QJYmluc1tGTEVYSUJMRV9BUlJBWV9NRU1CRVJdOworfSBoaXN0b2dyYW1f dDsKKworI2RlZmluZSBISVNUT0dSQU1fQklOU19TVEFSVCAzMgorCisvKiBhbGxvY2F0ZSBo aXN0b2dyYW0gd2l0aCBkZWZhdWx0IG51bWJlciBvZiBiaW5zICovCitzdGF0aWMgaGlzdG9n cmFtX3QgKgoraGlzdG9ncmFtX2luaXQodm9pZCkKK3sKKwloaXN0b2dyYW1fdCAqaGlzdDsK KworCWhpc3QgPSAoaGlzdG9ncmFtX3QgKikgcGFsbG9jMChvZmZzZXRvZihoaXN0b2dyYW1f dCwgYmlucykgKworCQkJCQkJCQkgICBzaXplb2YoaGlzdG9ncmFtX2Jpbl90KSAqIEhJU1RP R1JBTV9CSU5TX1NUQVJUKTsKKwloaXN0LT5uYmluc19tYXggPSBISVNUT0dSQU1fQklOU19T VEFSVDsKKworCXJldHVybiBoaXN0OworfQorCisvKgorICogaGlzdG9ncmFtX2FkZAorICoJ CQkgQWRkIGEgaGl0IGZvciBhIHBhcnRpY3VsYXIgdmFsdWUgdG8gdGhlIGhpc3RvZ3JhbS4K KyAqCisgKiBYWFggV2UgZG9uJ3Qgc29ydCB0aGUgYmlucywgc28ganVzdCBkbyBiaW5hcnkg c29ydC4gRm9yIGxhcmdlIG51bWJlciBvZiB2YWx1ZXMKKyAqIHRoaXMgbWlnaHQgYmUgYW4g aXNzdWUsIGZvciBzbWFsbCBudW1iZXIgb2YgdmFsdWVzIGEgbGluZWFyIHNlYXJjaCBpcyBm aW5lLgorICovCitzdGF0aWMgaGlzdG9ncmFtX3QgKgoraGlzdG9ncmFtX2FkZChoaXN0b2dy YW1fdCAqaGlzdCwgaW50IHZhbHVlKQoreworCWJvb2wJZm91bmQgPSBmYWxzZTsKKwloaXN0 b2dyYW1fYmluX3QgKmJpbjsKKworCWZvciAoaW50IGkgPSAwOyBpIDwgaGlzdC0+bmJpbnM7 IGkrKykKKwl7CisJCWlmIChoaXN0LT5iaW5zW2ldLnZhbHVlID09IHZhbHVlKQorCQl7CisJ CQliaW4gPSAmaGlzdC0+Ymluc1tpXTsKKwkJCWZvdW5kID0gdHJ1ZTsKKwkJfQorCX0KKwor CWlmICghZm91bmQpCisJeworCQlpZiAoaGlzdC0+bmJpbnMgPT0gaGlzdC0+bmJpbnNfbWF4 KQorCQl7CisJCQlpbnQJCW5iaW5zID0gKDIgKiBoaXN0LT5uYmluc19tYXgpOworCisJCQlo aXN0ID0gcmVwYWxsb2MoaGlzdCwgb2Zmc2V0b2YoaGlzdG9ncmFtX3QsIGJpbnMpICsKKwkJ CQkJCQlzaXplb2YoaGlzdG9ncmFtX2Jpbl90KSAqIG5iaW5zKTsKKwkJCWhpc3QtPm5iaW5z X21heCA9IG5iaW5zOworCQl9CisKKwkJQXNzZXJ0KGhpc3QtPm5iaW5zIDwgaGlzdC0+bmJp bnNfbWF4KTsKKworCQliaW4gPSAmaGlzdC0+Ymluc1toaXN0LT5uYmlucysrXTsKKwkJYmlu LT52YWx1ZSA9IHZhbHVlOworCQliaW4tPmNvdW50ID0gMDsKKwl9CisKKwliaW4tPmNvdW50 ICs9IDE7CisKKwlBc3NlcnQoYmluLT52YWx1ZSA9PSB2YWx1ZSk7CisJQXNzZXJ0KGJpbi0+ Y291bnQgPj0gMCk7CisKKwlyZXR1cm4gaGlzdDsKK30KKworLyogdXNlZCB0byBzb3J0IGhp c3RvZ3JhbSBiaW5zIGJ5IHZhbHVlICovCitzdGF0aWMgaW50CitoaXN0b2dyYW1fYmluX2Nt cChjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiKQoreworCWhpc3RvZ3JhbV9iaW5fdCAq YmEgPSAoaGlzdG9ncmFtX2Jpbl90ICopIGE7CisJaGlzdG9ncmFtX2Jpbl90ICpiYiA9ICho aXN0b2dyYW1fYmluX3QgKikgYjsKKworCWlmIChiYS0+dmFsdWUgPCBiYi0+dmFsdWUpCisJ CXJldHVybiAtMTsKKworCWlmIChiYi0+dmFsdWUgPCBiYS0+dmFsdWUpCisJCXJldHVybiAx OworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkCitoaXN0b2dyYW1fcHJpbnQoaGlz dG9ncmFtX3QgKmhpc3QpCit7CisJcmV0dXJuOworCisJZWxvZyhXQVJOSU5HLCAiLS0tLS0g aGlzdG9ncmFtIC0tLS0tIik7CisJZm9yIChpbnQgaSA9IDA7IGkgPCBoaXN0LT5uYmluczsg aSsrKQorCXsKKwkJZWxvZyhXQVJOSU5HLCAiYmluICVkIHZhbHVlICVsZCBjb3VudCAlbGQi LAorCQkJCWksIGhpc3QtPmJpbnNbaV0udmFsdWUsIGhpc3QtPmJpbnNbaV0uY291bnQpOwor CX0KK30KKworLyoKKyAqIGJyaW5fbWlubWF4X21hdGNoX3R1cGxlc190b19yYW5nZXMyCisg KgkJTWF0Y2ggdHVwbGVzIHRvIHJhbmdlcywgY291bnQgYXZlcmFnZSBudW1iZXIgb2YgcmFu Z2VzIHBlciB0dXBsZS4KKyAqCisgKiBNYXRjaCBzYW1wbGUgdHVwbGVzIHRvIHRoZSByYW5n ZXMsIHNvIHRoYXQgd2UgY2FuIGNvdW50IGhvdyBtYW55IHJhbmdlcworICogYSB2YWx1ZSBt YXRjaGVzIG9uIGF2ZXJhZ2UuIFRoaXMgbWlnaHQgc2VlbSByZWR1bmRhbnQgdG8gdGhlIG51 bWJlciBvZgorICogb3ZlcmxhcHMsIGJlY2F1c2UgdGhlIHZhbHVlIGlzIH5hdmdfb3Zlcmxh cHMvMi4KKyAqCisgKiBJbWFnaW5lIHJhbmdlcyBhcnJhbmdlZCBpbiAic2hpZnRlZCIgdW5p Zm9ybWx5IGJ5IDEvb3ZlcmxhcHMsIGUuZy4gd2l0aCAzCisgKiBvdmVybGFwcyBbMCwxMDBd LCBbMzMsMTMzXSwgWzY2LCAxNjZdIGFuZCBzbyBvbi4gQSByYW5kb20gdmFsdWUgd2lsbCBo aXQKKyAqIG9ubHkgaGFsZiBvZiB0aGVyZSByYW5nZXMsIHRodXMgMS8yLiBUaGlzIGNhbiBi ZSBleHRlbmRlZCB0byByYW5kb21seQorICogb3ZlcmxhcHBpbmcgcmFuZ2VzLgorICoKKyAq IEhvd2V2ZXIsIHdlIG1heSBub3QgYmUgYWJsZSB0byBjb3VudCBvdmVybGFwcyBmb3Igc29t ZSBvcGNsYXNzZXMgKGUuZy4gZm9yCisgKiBibG9vbSByYW5nZXMpLCBpbiB3aGljaCBjYXNl IHdlIGhhdmUgYXQgbGVhc3QgdGhpcy4KKyAqCisgKiBUaGlzIHNpbXBseSB3YWxrcyB0aGUg dmFsdWVzLCBhbmQgZGV0ZXJtaW5lcyBtYXRjaGluZyByYW5nZXMgYnkgbG9va2luZworICog Zm9yIGxvd2VyL3VwcGVyIGJvdW5kIGluIHJhbmdlcyBvcmRlcmVkIGJ5IG1pbnZhbC9tYXh2 YWwuCisgKgorICogWFhYIFRoZSBvdGhlciBxdWVzdGlvbiBpcyB3aGF0IHRvIGRvIGFib3V0 IGR1cGxpY2F0ZSB2YWx1ZXMuIElmIHdlIGhhdmUgYQorICogdmVyeSBmcmVxdWVudCB2YWx1 ZSBpbiB0aGUgc2FtcGxlLCBpdCdzIGxpa2VseSBpbiBtYW55IHBsYWNlcy9yYW5nZXMuIFdo aWNoCisgKiB3aWxsIHNrZXcgdGhlIGF2ZXJhZ2UsIGJlY2F1c2UgaXQnbGwgYmUgYWRkZWQg cmVwZWF0ZWRseS4gU28gd2UgYWxzbyBjb3VudAorICogYXZnX3JhbmdlcyBmb3IgdW5pcXVl IHZhbHVlcy4KKyAqCisgKiBYWFggVGhlIHJlbGF0aW9uc2hpcCB0aGF0IChhdmVyYWdlX21h dGNoZXMgfiBhdmVyYWdlX292ZXJsYXBzLzIpIG9ubHkKKyAqIHdvcmtzIGZvciBtaW5tYXgg b3BjbGFzcywgYW5kIGNhbid0IGJlIGV4dGVuZGVkIHRvIG1pbm1heC1tdWx0aS4gVGhlCisg KiBvdmVybGFwcyBjYW4gb25seSBjb25zaWRlciB0aGUgdHdvIGV4dHJlbWUgdmFsdWVzIChl c3NlbnRpYWxseSB0cmVhdGluZworICogdGhlIHN1bW1hcnkgYXMgYSBzaW5nbGUgbWlubWF4 IHJhbmdlKSwgYmVjYXVzZSB0aGF0J3Mgd2hhdCBicmluc29ydAorICogbmVlZHMuIEJ1dCB0 aGUgbWlubWF4LW11bHRpIHJhbmdlIG1heSBoYXZlICJnYXBzIiAoa2luZGEgdGhlIHdob2xl IHBvaW50CisgKiBvZiB0aGVzZSBvcGNsYXNzZXMpLCB3aGljaCBhZmZlY3RzIG1hdGNoaW5n IHR1cGxlcyB0byByYW5nZXMuCisgKgorICogWFhYIFRoaXMgYWxzbyBidWlsZHMgaGlzdG9n cmFtcyBvZiB0aGUgbnVtYmVyIG9mIG1hdGNoZXMsIGJvdGggZm9yIHRoZQorICogcmF3IGFu ZCB1bmlxdWUgdmFsdWVzLiBBdCB0aGUgbW9tZW50IHdlIGRvbid0IGRvIGFueXRoaW5nIHdp dGggdGhlCisgKiByZXN1bHRzLCB0aG91Z2ggKGV4Y2VwdCBmb3IgcHJpbnRpbmcgdGhvc2Up LgorICovCitzdGF0aWMgdm9pZAorYnJpbl9taW5tYXhfbWF0Y2hfdHVwbGVzX3RvX3Jhbmdl czIoQnJpblJhbmdlcyAqcmFuZ2VzLAorCQkJCQkJCQkJQnJpblJhbmdlICoqbWlucmFuZ2Vz LCBCcmluUmFuZ2UgKiptYXhyYW5nZXMsCisJCQkJCQkJCQlpbnQgbnVtcm93cywgSGVhcFR1 cGxlICpyb3dzLAorCQkJCQkJCQkJaW50IG52YWx1ZXMsIERhdHVtICp2YWx1ZXMsCisJCQkJ CQkJCQlUeXBlQ2FjaGVFbnRyeSAqdHlwY2FjaGUsCisJCQkJCQkJCQlCcmluTWlubWF4U3Rh dHMgKnN0YXRzKQoreworCWludDY0CW5tYXRjaGVzID0gMDsKKwlpbnQ2NAlubWF0Y2hlc191 bmlxdWUgPSAwOworCWludDY0CW5tYXRjaGVzX3ZhbHVlID0gMDsKKwlpbnQ2NAludmFsdWVz X3VuaXF1ZSA9IDA7CisKKwloaXN0b2dyYW1fdAkgICAqaGlzdCA9IGhpc3RvZ3JhbV9pbml0 KCk7CisJaGlzdG9ncmFtX3QJICAgKmhpc3RfdW5pcXVlID0gaGlzdG9ncmFtX2luaXQoKTsK KwlUaW1lc3RhbXBUegkJc3RhcnRfdHMgPSBHZXRDdXJyZW50VGltZXN0YW1wKCk7CisKKwlm b3IgKGludCBpID0gMDsgaSA8IG52YWx1ZXM7IGkrKykKKwl7CisJCWludAkJc3RhcnQ7CisJ CWludAkJZW5kOworCisJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisKKwkJLyoKKwkJICog U2FtZSB2YWx1ZSBhcyBwcmVjZWRpbmcsIHNvIGp1c3QgdXNlIHRoZSBwcmVjZWRpbmcgY291 bnQuCisJCSAqIFdlIGRvbid0IGluY3JlbWVudCB0aGUgdW5pcXVlIGNvdW50ZXJzLCBiZWNh dXNlIHRoaXMgaXMKKwkJICogYSBkdXBsaWNhdGUuCisJCSAqLworCQlpZiAoKGkgPiAwKSAm JiAocmFuZ2VfdmFsdWVzX2NtcCgmdmFsdWVzW2ktMV0sICZ2YWx1ZXNbaV0sIHR5cGNhY2hl KSA9PSAwKSkKKwkJeworCQkJbm1hdGNoZXMgKz0gbm1hdGNoZXNfdmFsdWU7CisJCQloaXN0 ID0gaGlzdG9ncmFtX2FkZChoaXN0LCBubWF0Y2hlc192YWx1ZSk7CisJCQljb250aW51ZTsK KwkJfQorCisJCW5tYXRjaGVzX3ZhbHVlID0gMDsKKworCQlzdGFydCA9IG1heHZhbF9zdGFy dChtYXhyYW5nZXMsIHJhbmdlcy0+bnJhbmdlcywgdmFsdWVzW2ldLCB0eXBjYWNoZSk7CisJ CWVuZCA9IG1pbnZhbF9lbmQobWlucmFuZ2VzLCByYW5nZXMtPm5yYW5nZXMsIHZhbHVlc1tp XSwgdHlwY2FjaGUpOworCisJCWZvciAoaW50IGogPSBzdGFydDsgaiA8IHJhbmdlcy0+bnJh bmdlczsgaisrKQorCQl7CisJCQlpZiAobWF4cmFuZ2VzW2pdLT5taW5faW5kZXggPj0gZW5k KQorCQkJCWNvbnRpbnVlOworCisJCQlpZiAobWF4cmFuZ2VzW2pdLT5taW5faW5kZXhfbG93 ZXN0ID49IGVuZCkKKwkJCQlicmVhazsKKworCQkJbm1hdGNoZXNfdmFsdWUrKzsKKwkJfQor CisJCWhpc3QgPSBoaXN0b2dyYW1fYWRkKGhpc3QsIG5tYXRjaGVzX3ZhbHVlKTsKKwkJaGlz dF91bmlxdWUgPSBoaXN0b2dyYW1fYWRkKGhpc3RfdW5pcXVlLCBubWF0Y2hlc192YWx1ZSk7 CisKKwkJbm1hdGNoZXMgKz0gbm1hdGNoZXNfdmFsdWU7CisJCW5tYXRjaGVzX3VuaXF1ZSAr PSBubWF0Y2hlc192YWx1ZTsKKwkJbnZhbHVlc191bmlxdWUrKzsKKwl9CisKKwlpZiAoZGVi dWdfYnJpbl9zdGF0cykKKwl7CisJCWVsb2coV0FSTklORywgIi0tLS0tIGJyaW5fbWlubWF4 X21hdGNoX3R1cGxlc190b19yYW5nZXMyIC0tLS0tIik7CisJCWVsb2coV0FSTklORywgIm5t YXRjaGVzID0gJWxkICVmIiwgbm1hdGNoZXMsIChkb3VibGUpIG5tYXRjaGVzIC8gbnVtcm93 cyk7CisJCWVsb2coV0FSTklORywgIm5tYXRjaGVzIHVuaXF1ZSA9ICVsZCAlbGQgJWYiLAor CQkJIG5tYXRjaGVzX3VuaXF1ZSwgbnZhbHVlc191bmlxdWUsIChkb3VibGUpIG5tYXRjaGVz X3VuaXF1ZSAvIG52YWx1ZXNfdW5pcXVlKTsKKwkJZWxvZyhXQVJOSU5HLCAiZHVyYXRpb24g PSAlbGQiLCBUaW1lc3RhbXBEaWZmZXJlbmNlTWlsbGlzZWNvbmRzKHN0YXJ0X3RzLAorCQkJ CQkJCQkJCUdldEN1cnJlbnRUaW1lc3RhbXAoKSkpOworCX0KKworCWlmIChzdGF0cy0+YXZn X21hdGNoZXMgIT0gKGRvdWJsZSkgbm1hdGNoZXMgLyBudW1yb3dzKQorCQllbG9nKEVSUk9S LCAiYnJpbl9taW5tYXhfbWF0Y2hfdHVwbGVzX3RvX3JhbmdlczI6IGF2Z19tYXRjaGVzIG1p c21hdGNoICVmICE9ICVmIiwKKwkJCSBzdGF0cy0+YXZnX21hdGNoZXMsIChkb3VibGUpIG5t YXRjaGVzIC8gbnVtcm93cyk7CisKKwlpZiAoc3RhdHMtPmF2Z19tYXRjaGVzX3VuaXF1ZSAh PSAoZG91YmxlKSBubWF0Y2hlc191bmlxdWUgLyBudmFsdWVzX3VuaXF1ZSkKKwkJZWxvZyhF UlJPUiwgImJyaW5fbWlubWF4X21hdGNoX3R1cGxlc190b19yYW5nZXMyOiBhdmdfbWF0Y2hl c191bmlxdWUgbWlzbWF0Y2ggJWYgIT0gJWYiLAorCQkJIHN0YXRzLT5hdmdfbWF0Y2hlc191 bmlxdWUsIChkb3VibGUpIG5tYXRjaGVzX3VuaXF1ZSAvIG52YWx1ZXNfdW5pcXVlKTsKKwor CXBnX3Fzb3J0KGhpc3QtPmJpbnMsIGhpc3QtPm5iaW5zLCBzaXplb2YoaGlzdG9ncmFtX2Jp bl90KSwgaGlzdG9ncmFtX2Jpbl9jbXApOworCXBnX3Fzb3J0KGhpc3RfdW5pcXVlLT5iaW5z LCBoaXN0X3VuaXF1ZS0+bmJpbnMsIHNpemVvZihoaXN0b2dyYW1fYmluX3QpLCBoaXN0b2dy YW1fYmluX2NtcCk7CisKKwloaXN0b2dyYW1fcHJpbnQoaGlzdCk7CisJaGlzdG9ncmFtX3By aW50KGhpc3RfdW5pcXVlKTsKKworCXBmcmVlKGhpc3QpOworCXBmcmVlKGhpc3RfdW5pcXVl KTsKK30KKworLyoKKyAqIGJyaW5fbWlubWF4X21hdGNoX3R1cGxlc190b19yYW5nZXNfYnJ1 dGVmb3JjZQorICoJCU1hdGNoIHR1cGxlcyB0byByYW5nZXMsIGNvdW50IGF2ZXJhZ2UgbnVt YmVyIG9mIHJhbmdlcyBwZXIgdHVwbGUuCisgKgorICogQnJ1dGVmb3JjZSBhcHByb2FjaCwg dXNlZCBtb3N0bHkgZm9yIGNyb3NzLWNoZWNraW5nLgorICovCitzdGF0aWMgdm9pZAorYnJp bl9taW5tYXhfbWF0Y2hfdHVwbGVzX3RvX3Jhbmdlc19icnV0ZWZvcmNlKEJyaW5SYW5nZXMg KnJhbmdlcywKKwkJCQkJCQkJCQkJICBpbnQgbnVtcm93cywgSGVhcFR1cGxlICpyb3dzLAor CQkJCQkJCQkJCQkgIGludCBudmFsdWVzLCBEYXR1bSAqdmFsdWVzLAorCQkJCQkJCQkJCQkg IFR5cGVDYWNoZUVudHJ5ICp0eXBjYWNoZSwKKwkJCQkJCQkJCQkJICBCcmluTWlubWF4U3Rh dHMgKnN0YXRzKQoreworCWludDY0CW5tYXRjaGVzID0gMDsKKwlpbnQ2NAlubWF0Y2hlc191 bmlxdWUgPSAwOworCWludDY0CW52YWx1ZXNfdW5pcXVlID0gMDsKKworCVRpbWVzdGFtcFR6 CQlzdGFydF90cyA9IEdldEN1cnJlbnRUaW1lc3RhbXAoKTsKKworCWZvciAoaW50IGkgPSAw OyBpIDwgbnZhbHVlczsgaSsrKQorCXsKKwkJYm9vbAlpc191bmlxdWU7CisJCWludDY0CW5t YXRjaGVzX3ZhbHVlID0gMDsKKworCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOworCisJCS8q IGlzIHRoaXMgYSBuZXcgdmFsdWU/ICovCisJCWlzX3VuaXF1ZSA9ICgoaSA9PSAwKSB8fCAo cmFuZ2VfdmFsdWVzX2NtcCgmdmFsdWVzW2ktMV0sICZ2YWx1ZXNbaV0sIHR5cGNhY2hlKSAh PSAwKSk7CisKKwkJLyogY291bnQgdW5pcXVlIHZhbHVlcyAqLworCQludmFsdWVzX3VuaXF1 ZSArPSAoaXNfdW5pcXVlKSA/IDEgOiAwOworCisJCWZvciAoaW50IGogPSAwOyBqIDwgcmFu Z2VzLT5ucmFuZ2VzOyBqKyspCisJCXsKKwkJCWlmIChyYW5nZV92YWx1ZXNfY21wKCZ2YWx1 ZXNbaV0sICZyYW5nZXMtPnJhbmdlc1tqXS5taW5fdmFsdWUsIHR5cGNhY2hlKSA8IDApCisJ CQkJY29udGludWU7CisKKwkJCWlmIChyYW5nZV92YWx1ZXNfY21wKCZ2YWx1ZXNbaV0sICZy YW5nZXMtPnJhbmdlc1tqXS5tYXhfdmFsdWUsIHR5cGNhY2hlKSA+IDApCisJCQkJY29udGlu dWU7CisKKwkJCW5tYXRjaGVzX3ZhbHVlKys7CisJCX0KKworCQlubWF0Y2hlcyArPSBubWF0 Y2hlc192YWx1ZTsKKwkJbm1hdGNoZXNfdW5pcXVlICs9IChpc191bmlxdWUpID8gbm1hdGNo ZXNfdmFsdWUgOiAwOworCX0KKworCWlmIChkZWJ1Z19icmluX3N0YXRzKQorCXsKKwkJZWxv ZyhXQVJOSU5HLCAiLS0tLS0gYnJpbl9taW5tYXhfbWF0Y2hfdHVwbGVzX3RvX3Jhbmdlc19i cnV0ZWZvcmNlIC0tLS0tIik7CisJCWVsb2coV0FSTklORywgIm5tYXRjaGVzID0gJWxkICVm Iiwgbm1hdGNoZXMsIChkb3VibGUpIG5tYXRjaGVzIC8gbnVtcm93cyk7CisJCWVsb2coV0FS TklORywgIm5tYXRjaGVzIHVuaXF1ZSA9ICVsZCAlbGQgJWYiLCBubWF0Y2hlc191bmlxdWUs IG52YWx1ZXNfdW5pcXVlLAorCQkJIChkb3VibGUpIG5tYXRjaGVzX3VuaXF1ZSAvIG52YWx1 ZXNfdW5pcXVlKTsKKwkJZWxvZyhXQVJOSU5HLCAiZHVyYXRpb24gPSAlbGQiLCBUaW1lc3Rh bXBEaWZmZXJlbmNlTWlsbGlzZWNvbmRzKHN0YXJ0X3RzLAorCQkJCQkJCQkJCUdldEN1cnJl bnRUaW1lc3RhbXAoKSkpOworCX0KKworCWlmIChzdGF0cy0+YXZnX21hdGNoZXMgIT0gKGRv dWJsZSkgbm1hdGNoZXMgLyBudW1yb3dzKQorCQllbG9nKEVSUk9SLCAiYnJpbl9taW5tYXhf bWF0Y2hfdHVwbGVzX3RvX3Jhbmdlc19icnV0ZWZvcmNlOiBhdmdfbWF0Y2hlcyBtaXNtYXRj aCAlZiAhPSAlZiIsCisJCQkgc3RhdHMtPmF2Z19tYXRjaGVzLCAoZG91YmxlKSBubWF0Y2hl cyAvIG51bXJvd3MpOworCisJaWYgKHN0YXRzLT5hdmdfbWF0Y2hlc191bmlxdWUgIT0gKGRv dWJsZSkgbm1hdGNoZXNfdW5pcXVlIC8gbnZhbHVlc191bmlxdWUpCisJCWVsb2coRVJST1Is ICJicmluX21pbm1heF9tYXRjaF90dXBsZXNfdG9fcmFuZ2VzX2JydXRlZm9yY2U6IGF2Z19t YXRjaGVzX3VuaXF1ZSBtaXNtYXRjaCAlZiAhPSAlZiIsCisJCQkgc3RhdHMtPmF2Z19tYXRj aGVzX3VuaXF1ZSwgKGRvdWJsZSkgbm1hdGNoZXNfdW5pcXVlIC8gbnZhbHVlc191bmlxdWUp OworfQorI2VuZGlmCisKIC8qCiAgKiBicmluX21pbm1heF92YWx1ZV9zdGF0cwogICoJCUNh bGN1bGF0ZSBzdGF0aXN0aWNzIGFib3V0IG1pbnZhbC9tYXh2YWwgdmFsdWVzLgpAQCAtNzg3 LDYgKzExNDIsMTk4IEBAIGJyaW5fbWlubWF4X2luY3JlbWVudF9zdGF0cyhCcmluUmFuZ2Ug KiptaW5yYW5nZXMsIEJyaW5SYW5nZSAqKm1heHJhbmdlcywKIAlzdGF0cy0+bWF4dmFsX2lu Y3JlbWVudF9tYXggPSBtYXhfbWF4dmFsOwogfQogCisjaWZkZWYgREVCVUdfQlJJTl9TVEFU UworLyoKKyAqIGJyaW5fbWlubWF4X2NvdW50X292ZXJsYXBzMgorICoJCUNhbGN1bGF0ZSBu dW1iZXIgb2Ygb3ZlcmxhcHMuCisgKgorICogVGhpcyB1c2VzIHRoZSBtaW5yYW5nZXMvbWF4 cmFuZ2VzIHRvIHF1aWNrbHkgZWxpbWluYXRlIHJhbmdlcyB0aGF0IGNhbid0CisgKiBwb3Nz aWJseSBpbnRlcnNlY3QuCisgKgorICogWFhYIFNlZW1zIHJhdGhlciBjb21wbGljYXRlZCBh bmQgd29ya3MgcG9vcmx5IGZvciB3aWRlIHJhbmdlcyAod2l0aCBvdXRsaWVyCisgKiB2YWx1 ZXMpLCBicmluX21pbm1heF9jb3VudF9vdmVybGFwcyBpcyBsaWtlbHkgYmV0dGVyLgorICov CitzdGF0aWMgdm9pZAorYnJpbl9taW5tYXhfY291bnRfb3ZlcmxhcHMyKEJyaW5SYW5nZXMg KnJhbmdlcywKKwkJCQkJCSAgIEJyaW5SYW5nZSAqKm1pbnJhbmdlcywgQnJpblJhbmdlICoq bWF4cmFuZ2VzLAorCQkJCQkJICAgVHlwZUNhY2hlRW50cnkgKnR5cGNhY2hlLCBCcmluTWlu bWF4U3RhdHMgKnN0YXRzKQoreworCWludDY0CQkJbm92ZXJsYXBzOworCVRpbWVzdGFtcFR6 CQlzdGFydF90cyA9IEdldEN1cnJlbnRUaW1lc3RhbXAoKTsKKworCS8qCisJICogV2FsayB0 aGUgcmFuZ2VzIG9yZGVyZWQgYnkgbWF4X3ZhbHVlcywgc2VlIGhvdyBtYW55IHJhbmdlcyBv dmVybGFwLgorCSAqCisJICogT25jZSB3ZSBnZXQgdG8gYSBzdGF0ZSB3aGVyZSAobWluX3Zh bHVlID4gY3VycmVudC5tYXhfdmFsdWUpIGZvcgorCSAqIGFsbCBmdXR1cmUgcmFuZ2VzLCB3 ZSBrbm93IG5vbmUgb2YgdGhlbSBjYW4gb3ZlcmxhcCBhbmQgd2UgY2FuCisJICogdGVybWlu YXRlLiBUaGlzIGlzIHdoYXQgbWluX2luZGV4X2xvd2VzdCBpcyBmb3IuCisJICoKKwkgKiBY WFggSWYgdGhlcmUgYXJlIHZlcnkgd2lkZSByYW5nZXMgKHdpdGggb3V0bGllciBtaW4vbWF4 IHZhbHVlcyksCisJICogdGhlIG1pbl9pbmRleF9sb3dlc3QgaXMgZ29pbmcgdG8gYmUgcHJl dHR5IHVzZWxlc3MsIGJlY2F1c2UgdGhlCisJICogcmFuZ2Ugd2lsbCBiZSBzb3J0ZWQgYXQg dGhlIHZlcnkgZW5kIGJ5IG1heF92YWx1ZSwgYnV0IHdpbGwgaGF2ZQorCSAqIHZlcnkgbG93 IG1pbl9pbmRleCwgc28gdGhpcyB3b24ndCB3b3JrLgorCSAqCisJICogWFhYIFdlIGNvdWxk IGNvbGxlY3QgYSBtb3JlIGVsYWJvcmF0ZSBzdHVmZiwgbGlrZSBmb3IgZXhhbXBsZSBhCisJ ICogaGlzdG9ncmFtIG9mIG51bWJlciBvZiBvdmVybGFwcywgb3IgbWF4aW11bSBudW1iZXIg b2Ygb3ZlcmxhcHMuCisJICogU28gd2UnZCBoYXZlIGF2ZXJhZ2UsIGJ1dCB0aGVuIGFsc28g YW4gaW5mbyBpZiB0aGVyZSBhcmUgc29tZQorCSAqIHJhbmdlcyB3aXRoIHZlcnkgbWFueSBv dmVybGFwcy4KKwkgKi8KKwlub3ZlcmxhcHMgPSAwOworCWZvciAoaW50IGkgPSAwOyBpIDwg cmFuZ2VzLT5ucmFuZ2VzOyBpKyspCisJeworCQlpbnQJCQlpZHggPSAoaSArIDEpOworCQlC cmluUmFuZ2UgKnJhID0gbWF4cmFuZ2VzW2ldOworCQl1aW50NjQJCW1pbl9pbmRleCA9IHJh LT5taW5faW5kZXg7CisKKwkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKKworI2lmZGVmIE5P VF9VU0VECisJCS8qCisJCSAqIFhYWCBOb3QgbmVlZGVkLCB3ZSBjYW4ganVzdCBjb3VudCAi ZnV0dXJlIiByYW5nZXMgYW5kIHRoZW4KKwkJICogd2UganVzdCBtdWx0aXBseSBieSAyLgor CQkgKi8KKworCQkvKgorCQkgKiBXaGF0J3MgdGhlIGZpcnN0IHJhbmdlIHRoYXQgbWlnaHQg b3ZlcmxhcCB3aXRoIHRoaXMgb25lPworCQkgKiBuZWVkcyB0byBoYXZlIG1heHZhbCA+IGN1 cnJlbnQubWludmFsLgorCQkgKi8KKwkJd2hpbGUgKGlkeCA+IDApCisJCXsKKwkJCUJyaW5S YW5nZSAqcmIgPSBtYXhyYW5nZXNbaWR4IC0gMV07CisKKwkJCS8qIHRoZSByYW5nZSBpcyBi ZWZvcmUgdGhlIGN1cnJlbnQgb25lLCBzbyBjYW4ndCBpbnRlcnNlY3QgKi8KKwkJCWlmIChy YW5nZV92YWx1ZXNfY21wKCZyYi0+bWF4X3ZhbHVlLCAmcmEtPm1pbl92YWx1ZSwgdHlwY2Fj aGUpIDwgMCkKKwkJCQlicmVhazsKKworCQkJaWR4LS07CisJCX0KKyNlbmRpZgorCisJCS8q CisJCSAqIEZpbmQgdGhlIGZpcnN0IG1pbl9pbmRleCB0aGF0IGlzIGhpZ2hlciB0aGFuIHRo ZSBtYXhfdmFsdWUsCisJCSAqIHNvIHRoYXQgd2UgY2FuIGNvbXBhcmUgdGhhdCBpbnN0ZWFk IG9mIHRoZSB2YWx1ZXMgaW4gdGhlCisJCSAqIG5leHQgbG9vcC4gVGhlcmUgc2hvdWxkIGJl IGZld2VyIHZhbHVlIGNvbXBhcmlzb25zIHRoYW4gaW4KKwkJICogdGhlIG5leHQgbG9vcCwg c28gd2UnbGwgc2F2ZSBvbiBmdW5jdGlvbiBjYWxscy4KKwkJICovCisJCXdoaWxlIChtaW5f aW5kZXggPCByYW5nZXMtPm5yYW5nZXMpCisJCXsKKwkJCWlmIChyYW5nZV92YWx1ZXNfY21w KCZtaW5yYW5nZXNbbWluX2luZGV4XS0+bWluX3ZhbHVlLAorCQkJCQkJCQkgJnJhLT5tYXhf dmFsdWUsIHR5cGNhY2hlKSA+IDApCisJCQkJYnJlYWs7CisKKwkJCW1pbl9pbmRleCsrOwor CQl9CisKKwkJLyoKKwkJICogV2FsayB0aGUgZm9sbG93aW5nIHJhbmdlcyAob3JkZXJlZCBi eSBtYXhfdmFsdWUpLCBhbmQgY2hlY2sKKwkJICogaWYgaXQgb3ZlcmxhcHMuIElmIGl0IG1h dGNoZXMsIHdlIGxvb2sgYXQgdGhlIG5leHQgb25lLiBJZgorCQkgKiBub3QsIHdlIGNoZWNr IGlmIHRoZXJlIGNhbiBiZSBtb3JlIHJhbmdlcy4KKwkJICovCisJCWZvciAoaW50IGogPSBp ZHg7IGogPCByYW5nZXMtPm5yYW5nZXM7IGorKykKKwkJeworCQkJQnJpblJhbmdlICpyYiA9 IG1heHJhbmdlc1tqXTsKKworCQkJLyogdGhlIHJhbmdlIG92ZXJsYXBzIC0ganVzdCBjb250 aW51ZSB3aXRoIHRoZSBuZXh0IG9uZSAqLworCQkJLy8gaWYgKHJhbmdlX3ZhbHVlc19jbXAo JnJiLT5taW5fdmFsdWUsICZyYS0+bWF4X3ZhbHVlLCB0eXBjYWNoZSkgPD0gMCkKKwkJCWlm IChyYi0+bWluX2luZGV4IDwgbWluX2luZGV4KQorCQkJeworCQkJCW5vdmVybGFwcysrOwor CQkJCWNvbnRpbnVlOworCQkJfQorCisJCQkvKgorCQkJICogQXJlIHRoZXJlIGFueSBmdXR1 cmUgcmFuZ2VzIHRoYXQgbWlnaHQgb3ZlcmxhcD8gV2UgY2FuCisJCQkgKiBjaGVjayB0aGUg bWluX2luZGV4X2xvd2VzdCB0byBkZWNpZGUgcXVpY2tseS4KKwkJCSAqLworCQkJIGlmIChy Yi0+bWluX2luZGV4X2xvd2VzdCA+PSBtaW5faW5kZXgpCisJCQkJCWJyZWFrOworCQl9CisJ fQorCisJLyoKKwkgKiBXZSBvbmx5IGNvdW50IGludGVyc2VjdCBmb3IgImZvbGxvd2luZyIg cmFuZ2VzIHdoZW4gb3JkZXJlZCBieSBtYXh2YWwsCisJICogc28gd2Ugb25seSBzZWUgMS8y IHRoZSBvdmVybGFwcy4gU28gZG91YmxlIHRoZSByZXN1bHQuCisJICovCisJbm92ZXJsYXBz ICo9IDI7CisKKwlpZiAoZGVidWdfYnJpbl9zdGF0cykKKwl7CisJCWVsb2coV0FSTklORywg Ii0tLS0tIGJyaW5fbWlubWF4X2NvdW50X292ZXJsYXBzMiAtLS0tLSIpOworCQllbG9nKFdB Uk5JTkcsICJub3ZlcmxhcHMgPSAlbGQiLCBub3ZlcmxhcHMpOworCQllbG9nKFdBUk5JTkcs ICJkdXJhdGlvbiA9ICVsZCIsIFRpbWVzdGFtcERpZmZlcmVuY2VNaWxsaXNlY29uZHMoc3Rh cnRfdHMsCisJCQkJCQkJCQkJR2V0Q3VycmVudFRpbWVzdGFtcCgpKSk7CisJfQorCisJaWYg KHN0YXRzLT5hdmdfb3ZlcmxhcHMgIT0gKGRvdWJsZSkgbm92ZXJsYXBzIC8gcmFuZ2VzLT5u cmFuZ2VzKQorCQllbG9nKEVSUk9SLCAiYnJpbl9taW5tYXhfY291bnRfb3ZlcmxhcHMyOiBt aXNtYXRjaCAlZiAhPSAlZiIsCisJCQkgc3RhdHMtPmF2Z19vdmVybGFwcywgKGRvdWJsZSkg bm92ZXJsYXBzIC8gcmFuZ2VzLT5ucmFuZ2VzKTsKK30KKworLyoKKyAqIGJyaW5fbWlubWF4 X2NvdW50X292ZXJsYXBzX2JydXRlZm9yY2UKKyAqCQlDYWxjdWxhdGUgbnVtYmVyIG9mIG92 ZXJsYXBzIGJ5IGJydXRlIGZvcmNlLgorICoKKyAqIEFjdHVhbGx5IGNvbXBhcmVzIGV2ZXJ5 IHJhbmdlIHRvIGV2ZXJ5IG90aGVyIHJhbmdlLiBRdWl0ZSBleHBlbnNpdmUsIHVzZWQKKyAq IHByaW1hcmlseSB0byBjcm9zcy1jaGVjayB0aGUgb3RoZXIgYWxnb3JpdGhtcy4KKyAqLwor c3RhdGljIHZvaWQKK2JyaW5fbWlubWF4X2NvdW50X292ZXJsYXBzX2JydXRlZm9yY2UoQnJp blJhbmdlcyAqcmFuZ2VzLAorCQkJCQkJCQkJICBUeXBlQ2FjaGVFbnRyeSAqdHlwY2FjaGUs CisJCQkJCQkJCQkgIEJyaW5NaW5tYXhTdGF0cyAqc3RhdHMpCit7CisJaW50NjQJCQlub3Zl cmxhcHM7CisJVGltZXN0YW1wVHoJCXN0YXJ0X3RzID0gR2V0Q3VycmVudFRpbWVzdGFtcCgp OworCisJLyoKKwkgKiBCcnV0ZSBmb3JjZSBjYWxjdWxhdGlvbiBvZiBvdmVybGFwcGluZyBy YW5nZXMsIGNvbXBhcmluZyBlYWNoCisJICogcmFuZ2UgdG8gZXZlcnkgb3RoZXIgcmFuZ2Ug LSBib3VuZCB0byBiZSBwcmV0dHkgZXhwZW5zaXZlLCBhcworCSAqIGl0J3MgcHJldHR5IG11 Y2ggTyhOXjIpLiBLZXB0IG1vc3RseSBmb3IgZWFzeSBjcm9zcy1jaGVjayB3aXRoCisJICog dGhlIHByZWNlZGluZyAib3B0aW1pemVkIiBjb2RlLgorCSAqLworCW5vdmVybGFwcyA9IDA7 CisJZm9yIChpbnQgaSA9IDA7IGkgPCByYW5nZXMtPm5yYW5nZXM7IGkrKykKKwl7CisJCUJy aW5SYW5nZSAqcmEgPSAmcmFuZ2VzLT5yYW5nZXNbaV07CisKKwkJZm9yIChpbnQgaiA9IDA7 IGogPCByYW5nZXMtPm5yYW5nZXM7IGorKykKKwkJeworCQkJQnJpblJhbmdlICpyYiA9ICZy YW5nZXMtPnJhbmdlc1tqXTsKKworCQkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKKworCQkJ aWYgKGkgPT0gaikKKwkJCQljb250aW51ZTsKKworCQkJaWYgKHJhbmdlX3ZhbHVlc19jbXAo JnJhLT5tYXhfdmFsdWUsICZyYi0+bWluX3ZhbHVlLCB0eXBjYWNoZSkgPCAwKQorCQkJCWNv bnRpbnVlOworCisJCQlpZiAocmFuZ2VfdmFsdWVzX2NtcCgmcmItPm1heF92YWx1ZSwgJnJh LT5taW5fdmFsdWUsIHR5cGNhY2hlKSA8IDApCisJCQkJY29udGludWU7CisKKyNpZiAwCisJ CQllbG9nKERFQlVHMSwgIlslbGQsJWxkXSBvdmVybGFwcyBbJWxkLCVsZF0iLAorCQkJCSBy YS0+bWluX3ZhbHVlLCByYS0+bWF4X3ZhbHVlLAorCQkJCSByYi0+bWluX3ZhbHVlLCByYi0+ bWF4X3ZhbHVlKTsKKyNlbmRpZgorCisJCQlub3ZlcmxhcHMrKzsKKwkJfQorCX0KKworCWlm IChkZWJ1Z19icmluX3N0YXRzKQorCXsKKwkJZWxvZyhXQVJOSU5HLCAiLS0tLS0gYnJpbl9t aW5tYXhfY291bnRfb3ZlcmxhcHNfYnJ1dGVmb3JjZSAtLS0tLSIpOworCQllbG9nKFdBUk5J TkcsICJub3ZlcmxhcHMgPSAlbGQiLCBub3ZlcmxhcHMpOworCQllbG9nKFdBUk5JTkcsICJk dXJhdGlvbiA9ICVsZCIsIFRpbWVzdGFtcERpZmZlcmVuY2VNaWxsaXNlY29uZHMoc3RhcnRf dHMsCisJCQkJCQkJCQkJR2V0Q3VycmVudFRpbWVzdGFtcCgpKSk7CisJfQorCisJaWYgKHN0 YXRzLT5hdmdfb3ZlcmxhcHMgIT0gKGRvdWJsZSkgbm92ZXJsYXBzIC8gcmFuZ2VzLT5ucmFu Z2VzKQorCQllbG9nKEVSUk9SLCAiYnJpbl9taW5tYXhfY291bnRfb3ZlcmxhcHMyOiBtaXNt YXRjaCAlZiAhPSAlZiIsCisJCQkgc3RhdHMtPmF2Z19vdmVybGFwcywgKGRvdWJsZSkgbm92 ZXJsYXBzIC8gcmFuZ2VzLT5ucmFuZ2VzKTsKK30KKyNlbmRpZgorCiAvKgogICogYnJpbl9t aW5tYXhfc3RhdHMKICAqCQlDYWxjdWxhdGUgY3VzdG9tIHN0YXRpc3RpY3MgZm9yIGEgQlJJ TiBtaW5tYXggaW5kZXguCkBAIC03OTgsNiArMTM0NSwxMSBAQCBicmluX21pbm1heF9pbmNy ZW1lbnRfc3RhdHMoQnJpblJhbmdlICoqbWlucmFuZ2VzLCBCcmluUmFuZ2UgKiptYXhyYW5n ZXMsCiAgKiAgLSBhdmVyYWdlIG51bWJlciBvZiByb3dzIG1hdGNoaW5nIGEgcmFuZ2UKICAq ICAtIG51bWJlciBvZiBkaXN0aW5jdCBtaW52YWwvbWF4dmFsIHZhbHVlcwogICoKKyAqIFRo ZXJlIGFyZSBtdWx0aXBsZSB3YXlzIHRvIGNhbGN1bGF0ZSBzb21lIG9mIHRoZSBtZXRyaWNz LCBzbyB0byBhbGxvdworICogY3Jvc3MtY2hlY2tpbmcgZHVyaW5nIGRldmVsb3BtZW50IGl0 J3MgcG9zc2libGUgdG8gcnVuIGFuZCBjb21wYXJlIGFsbC4KKyAqIFRvIGRvIHRoYXQsIGRl ZmluZSBTVEFUU19DUk9TU19DSEVDSy4gVGhlcmUncyBhbHNvIFNUQVRTX0RFQlVHIGRlZmlu ZQorICogdGhhdCBzaW1wbHkgcHJpbnRzIHRoZSBjYWxjdWxhdGVkIHJlc3VsdHMuCisgKgog ICogWFhYIFRoaXMgY291bGQgYWxzbyBjYWxjdWxhdGUgY29ycmVsYXRpb24gb2YgdGhlIHJh bmdlIG1pbnZhbCwgc28gdGhhdAogICogd2UgY2FuIGVzdGltYXRlIGhvdyBtdWNoIHJhbmRv bSBJL08gd2lsbCBoYXBwZW4gZHVyaW5nIHRoZSBCcmluU29ydC4KICAqIEFuZCBwZXJoYXBz IHdlIHNob3VsZCBhbHNvIHNvcnQgdGhlIHJhbmdlcyBieSAobWludmFsLGJsb2NrX3N0YXJ0 KSB0bwpAQCAtMTEwNiw2ICsxNjU4LDE0IEBAIGJyaW5fbWlubWF4X3N0YXRzKFBHX0ZVTkNU SU9OX0FSR1MpCiAJLyogY2FsY3VsYXRlIGF2ZXJhZ2UgbnVtYmVyIG9mIG92ZXJsYXBwaW5n IHJhbmdlcyBmb3IgYW55IHJhbmdlICovCiAJYnJpbl9taW5tYXhfY291bnRfb3ZlcmxhcHMo bWlucmFuZ2VzLCByYW5nZXMtPm5yYW5nZXMsIHR5cGNhY2hlLCBzdGF0cyk7CiAKKyNpZmRl ZiBERUJVR19CUklOX1NUQVRTCisJaWYgKGRlYnVnX2JyaW5fY3Jvc3NfY2hlY2spCisJewor CQlicmluX21pbm1heF9jb3VudF9vdmVybGFwczIocmFuZ2VzLCBtaW5yYW5nZXMsIG1heHJh bmdlcywgdHlwY2FjaGUsIHN0YXRzKTsKKwkJYnJpbl9taW5tYXhfY291bnRfb3ZlcmxhcHNf YnJ1dGVmb3JjZShyYW5nZXMsIHR5cGNhY2hlLCBzdGF0cyk7CisJfQorI2VuZGlmCisKIAkv KiBjYWxjdWxhdGUgbWludmFsL21heHZhbCBzdGF0cyAoZGlzdGluY3QgdmFsdWVzIGFuZCBj b3JyZWxhdGlvbikgKi8KIAlicmluX21pbm1heF92YWx1ZV9zdGF0cyhtaW5yYW5nZXMsIG1h eHJhbmdlcywKIAkJCQkJCQlyYW5nZXMtPm5yYW5nZXMsIHR5cGNhY2hlLCBzdGF0cyk7CkBA IC0xMTM0LDYgKzE2OTQsMjAgQEAgYnJpbl9taW5tYXhfc3RhdHMoUEdfRlVOQ1RJT05fQVJH UykKIAkJCQkJCQkJCQkgICBudW1yb3dzLCByb3dzLCBudmFsdWVzLCB2YWx1ZXMsCiAJCQkJ CQkJCQkJICAgdHlwY2FjaGUsIHN0YXRzKTsKIAorI2lmZGVmIERFQlVHX0JSSU5fU1RBVFMK KwkJaWYgKGRlYnVnX2JyaW5fY3Jvc3NfY2hlY2spCisJCXsKKwkJCWJyaW5fbWlubWF4X21h dGNoX3R1cGxlc190b19yYW5nZXMyKHJhbmdlcywgbWlucmFuZ2VzLCBtYXhyYW5nZXMsCisJ CQkJCQkJCQkJCQludW1yb3dzLCByb3dzLCBudmFsdWVzLCB2YWx1ZXMsCisJCQkJCQkJCQkJ CQl0eXBjYWNoZSwgc3RhdHMpOworCisJCQlicmluX21pbm1heF9tYXRjaF90dXBsZXNfdG9f cmFuZ2VzX2JydXRlZm9yY2UocmFuZ2VzLAorCQkJCQkJCQkJCQkJCQkgIG51bXJvd3MsIHJv d3MsCisJCQkJCQkJCQkJCQkJCSAgbnZhbHVlcywgdmFsdWVzLAorCQkJCQkJCQkJCQkJCQkg IHR5cGNhY2hlLCBzdGF0cyk7CisJCX0KKyNlbmRpZgorCiAJCWJyaW5fbWlubWF4X2luY3Jl bWVudF9zdGF0cyhtaW5yYW5nZXMsIG1heHJhbmdlcywgcmFuZ2VzLT5ucmFuZ2VzLAogCQkJ CQkJCQkJdmFsdWVzLCBudmFsdWVzLCB0eXBjYWNoZSwgc3RhdHMpOwogCX0KZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jIGIvc3JjL2JhY2tlbmQv dXRpbHMvbWlzYy9ndWNfdGFibGVzLmMKaW5kZXggNDk4ZTFhZjUxOC4uYzQ5MDNlMmUzZSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMKKysrIGIv c3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMKQEAgLTk4LDYgKzk4LDcgQEAg ZXh0ZXJuIGJvb2wgc3luY2hyb25pemVfc2Vxc2NhbnM7CiAKICNpZmRlZiBERUJVR19CUklO X1NUQVRTCiBleHRlcm4gYm9vbCBkZWJ1Z19icmluX3N0YXRzOworZXh0ZXJuIGJvb2wgZGVi dWdfYnJpbl9jcm9zc19jaGVjazsKICNlbmRpZgogCiAjaWZkZWYgVFJBQ0VfU1lOQ1NDQU4K QEAgLTEyNDYsNiArMTI0NywxNSBAQCBzdHJ1Y3QgY29uZmlnX2Jvb2wgQ29uZmlndXJlTmFt ZXNCb29sW10gPQogCQlmYWxzZSwKIAkJTlVMTCwgTlVMTCwgTlVMTAogCX0sCisJeworCQl7 ImRlYnVnX2JyaW5fY3Jvc3NfY2hlY2siLCBQR0NfVVNFUlNFVCwgREVWRUxPUEVSX09QVElP TlMsCisJCQlnZXR0ZXh0X25vb3AoIkNyb3NzLWNoZWNrIGNhbGN1bGF0aW9uIG9mIEJSSU4g c3RhdGlzdGljcy4iKSwKKwkJCU5VTEwKKwkJfSwKKwkJJmRlYnVnX2JyaW5fY3Jvc3NfY2hl Y2ssCisJCWZhbHNlLAorCQlOVUxMLCBOVUxMLCBOVUxMCisJfSwKICNlbmRpZgogCiAJewot LSAKMi4zOS4wCgo= --------------z0saJSUvc90TqSu15DjSpJR9 Content-Type: text/x-patch; charset=UTF-8; name="0004-Allow-BRIN-indexes-to-produce-sorted-output-20230206.patch" Content-Disposition: attachment; filename*0="0004-Allow-BRIN-indexes-to-produce-sorted-output-20230206.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAxZThkZDI1NTBlZWY3YjVkYWVkYjljNjFkY2E5NTExZjg4NjQyMWY5IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzLnZvbmRyYUBwb3N0 Z3Jlc3FsLm9yZz4KRGF0ZTogU3VuLCA5IE9jdCAyMDIyIDExOjMzOjM3ICswMjAwClN1Ympl Y3Q6IFtQQVRDSCAwNC8xMF0gQWxsb3cgQlJJTiBpbmRleGVzIHRvIHByb2R1Y2Ugc29ydGVk IG91dHB1dAoKU29tZSBCUklOIGluZGV4ZXMgY2FuIGJlIHVzZWQgdG8gcHJvZHVjZSBzb3J0 ZWQgb3V0cHV0LCBieSB1c2luZyB0aGUKcmFuZ2UgaW5mb3JtYXRpb24gdG8gc29ydCB0dXBs ZXMgaW5jcmVtZW50YWxseS4gVGhpcyBpcyBwYXJ0aWN1bGFybHkKaW50ZXJlc3RpbmcgZm9y IExJTUlUIHF1ZXJpZXMsIHdoaWNoIG9ubHkgbmVlZCB0byBzY2FuIHRoZSBmaXJzdCBmZXcK cm93cywgYW5kIGFsdGVybmF0aXZlIHBsYW5zIChlLmcuIFNlcSBTY2FuICsgU29ydCkgaGF2 ZSBhIHZlcnkgaGlnaApzdGFydHVwIGNvc3QuCgpPZiBjb3Vyc2UsIGlmIHRoZXJlIGFyZSBl LmcuIEJUUkVFIGluZGV4ZXMgdGhpcyBpcyBnb2luZyB0byBiZSBzbG93ZXIsCmJ1dCBwZW9w bGUgYXJlIHVubGlrZWx5IHRvIGhhdmUgYm90aCBpbmRleCB0eXBlcyBvbiB0aGUgc2FtZSBj b2x1bW4uCgpUaGlzIGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQsIHVzZSBlbmFibGVfYnJpbnNv cnQgR1VDIHRvIGVuYWJsZSBpdC4KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmlu X21pbm1heC5jICAgICAgICAgfCAgNDAyICsrKysKIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2V4 cGxhaW4uYyAgICAgICAgICAgICAgICB8ICAgNDQgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Iv TWFrZWZpbGUgICAgICAgICAgICAgICAgIHwgICAgMSArCiBzcmMvYmFja2VuZC9leGVjdXRv ci9leGVjUHJvY25vZGUuYyAgICAgICAgICAgfCAgIDEwICsKIHNyYy9iYWNrZW5kL2V4ZWN1 dG9yL21lc29uLmJ1aWxkICAgICAgICAgICAgICB8ICAgIDEgKwogc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZUJyaW5Tb3J0LmMgICAgICAgICAgIHwgMTY2MSArKysrKysrKysrKysrKysr Kwogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvY29zdHNpemUuYyAgICAgICAgIHwgIDI1 NCArKysKIHNyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2luZHhwYXRoLmMgICAgICAgICB8 ICAxODMgKysKIHNyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL3BhdGhrZXlzLmMgICAgICAg ICB8ICAgNDkgKwogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5jICAg ICAgIHwgIDE4OSArKwogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jICAg ICAgICAgIHwgICAxOSArCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wYXRobm9kZS5j ICAgICAgICAgfCAgIDU3ICsKIHNyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5j ICAgICAgICAgICB8ICAgMjggKwogc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3Fs LmNvbmYuc2FtcGxlIHwgICAgMSArCiBzcmMvYmFja2VuZC91dGlscy9zb3J0L3R1cGxlc29y dC5jICAgICAgICAgICAgfCAgIDEyICsKIHNyYy9pbmNsdWRlL2FjY2Vzcy9icmluLmggICAg ICAgICAgICAgICAgICAgICB8ICAgMzUgLQogc3JjL2luY2x1ZGUvYWNjZXNzL2JyaW5faW50 ZXJuYWwuaCAgICAgICAgICAgIHwgICAgMSArCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2Ft cHJvYy5kYXQgICAgICAgICAgICAgfCAgIDY0ICsKIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdf cHJvYy5kYXQgICAgICAgICAgICAgICB8ICAgIDUgKy0KIHNyYy9pbmNsdWRlL2V4ZWN1dG9y L25vZGVCcmluU29ydC5oICAgICAgICAgICB8ICAgNDcgKwogc3JjL2luY2x1ZGUvbm9kZXMv ZXhlY25vZGVzLmggICAgICAgICAgICAgICAgIHwgIDEwOCArKwogc3JjL2luY2x1ZGUvbm9k ZXMvcGF0aG5vZGVzLmggICAgICAgICAgICAgICAgIHwgICAxMSArCiBzcmMvaW5jbHVkZS9u b2Rlcy9wbGFubm9kZXMuaCAgICAgICAgICAgICAgICAgfCAgIDI2ICsKIHNyYy9pbmNsdWRl L29wdGltaXplci9jb3N0LmggICAgICAgICAgICAgICAgICB8ICAgIDMgKwogc3JjL2luY2x1 ZGUvb3B0aW1pemVyL3BhdGhub2RlLmggICAgICAgICAgICAgIHwgICAgOSArCiBzcmMvaW5j bHVkZS9vcHRpbWl6ZXIvcGF0aHMuaCAgICAgICAgICAgICAgICAgfCAgICAzICsKIHNyYy9p bmNsdWRlL3V0aWxzL3R1cGxlc29ydC5oICAgICAgICAgICAgICAgICB8ICAgIDEgKwogc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zeXN2aWV3cy5vdXQgICAgICAgIHwgICAgMyArLQog MjggZmlsZXMgY2hhbmdlZCwgMzE5MCBpbnNlcnRpb25zKCspLCAzNyBkZWxldGlvbnMoLSkK IGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQnJpblNvcnQu YwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9pbmNsdWRlL2V4ZWN1dG9yL25vZGVCcmluU29y dC5oCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbl9taW5tYXgu YyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW5fbWlubWF4LmMKaW5kZXggZDA4Yjhl MGU2My4uOTg3Mzc5YzkxMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4v YnJpbl9taW5tYXguYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluX21pbm1h eC5jCkBAIC0xNiw2ICsxNiwxMCBAQAogI2luY2x1ZGUgImFjY2Vzcy9icmluX3R1cGxlLmgi CiAjaW5jbHVkZSAiYWNjZXNzL2dlbmFtLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3N0cmF0bnVt LmgiCisjaW5jbHVkZSAiYWNjZXNzL3RhYmxlLmgiCisjaW5jbHVkZSAiYWNjZXNzL3RhYmxl YW0uaCIKKyNpbmNsdWRlICJjYXRhbG9nL2luZGV4LmgiCisjaW5jbHVkZSAiY2F0YWxvZy9w Z19hbS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfYW1vcC5oIgogI2luY2x1ZGUgImNhdGFs b2cvcGdfdHlwZS5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgpAQCAtNDIsNiArNDYsOSBA QCBzdGF0aWMgRm1nckluZm8gKm1pbm1heF9nZXRfc3RyYXRlZ3lfcHJvY2luZm8oQnJpbkRl c2MgKmJkZXNjLCB1aW50MTYgYXR0bm8sCiAJCQkJCQkJCQkJCSAgT2lkIHN1YnR5cGUsIHVp bnQxNiBzdHJhdGVneW51bSk7CiAKIAorLyogcHJpbnQgaW5mbyBhYm91dCByYW5nZXMgKi8K KyNkZWZpbmUgQlJJTlNPUlRfREVCVUcKKwogRGF0dW0KIGJyaW5fbWlubWF4X29wY2luZm8o UEdfRlVOQ1RJT05fQVJHUykKIHsKQEAgLTE3MzAsNiArMTczNyw0MDEgQEAgY2xlYW51cDoK IAlQR19SRVRVUk5fUE9JTlRFUihzdGF0cyk7CiB9CiAKKy8qCisgKiBicmluX21pbm1heF9y YW5nZV90dXBkZXNjCisgKgkJQ3JlYXRlIGEgdHVwbGUgZGVzY3JpcHRvciB0byBzdG9yZSBC cmluUmFuZ2UgZGF0YS4KKyAqLworc3RhdGljIFR1cGxlRGVzYworYnJpbl9taW5tYXhfcmFu Z2VfdHVwZGVzYyhCcmluRGVzYyAqYnJkZXNjLCBBdHRyTnVtYmVyIGF0dG51bSkKK3sKKwlU dXBsZURlc2MJdHVwZGVzYzsKKwlBdHRyTnVtYmVyCWF0dG5vID0gMTsKKworCS8qIGV4cGVj dCBtaW5pbXVtIGFuZCBtYXhpbXVtICovCisJQXNzZXJ0KGJyZGVzYy0+YmRfaW5mb1thdHRu dW0gLSAxXS0+b2lfbnN0b3JlZCA9PSAyKTsKKworCXR1cGRlc2MgPSBDcmVhdGVUZW1wbGF0 ZVR1cGxlRGVzYyg3KTsKKworCS8qIGJsa25vX3N0YXJ0ICovCisJVHVwbGVEZXNjSW5pdEVu dHJ5KHR1cGRlc2MsIGF0dG5vKyssIE5VTEwsIElOVDhPSUQsIC0xLCAwKTsKKworCS8qIGJs a25vX2VuZCAoY291bGQgYmUgY2FsY3VsYXRlZCBhcyBibGtub19zdGFydCArIHBhZ2VzX3Bl cl9yYW5nZSkgKi8KKwlUdXBsZURlc2NJbml0RW50cnkodHVwZGVzYywgYXR0bm8rKywgTlVM TCwgSU5UOE9JRCwgLTEsIDApOworCisJLyogaGFzX251bGxzICovCisJVHVwbGVEZXNjSW5p dEVudHJ5KHR1cGRlc2MsIGF0dG5vKyssIE5VTEwsIEJPT0xPSUQsIC0xLCAwKTsKKworCS8q IGFsbF9udWxscyAqLworCVR1cGxlRGVzY0luaXRFbnRyeSh0dXBkZXNjLCBhdHRubysrLCBO VUxMLCBCT09MT0lELCAtMSwgMCk7CisKKwkvKiBub3Rfc3VtbWFyaXplZCAqLworCVR1cGxl RGVzY0luaXRFbnRyeSh0dXBkZXNjLCBhdHRubysrLCBOVUxMLCBCT09MT0lELCAtMSwgMCk7 CisKKwkvKiBtaW5fdmFsdWUgKi8KKwlUdXBsZURlc2NJbml0RW50cnkodHVwZGVzYywgYXR0 bm8rKywgTlVMTCwKKwkJCQkJICAgYnJkZXNjLT5iZF9pbmZvW2F0dG51bSAtIDFdLT5vaV90 eXBjYWNoZVswXS0+dHlwZV9pZCwKKwkJCQkJCQkJICAgLTEsIDApOworCisJLyogbWF4X3Zh bHVlICovCisJVHVwbGVEZXNjSW5pdEVudHJ5KHR1cGRlc2MsIGF0dG5vKyssIE5VTEwsCisJ CQkJCSAgIGJyZGVzYy0+YmRfaW5mb1thdHRudW0gLSAxXS0+b2lfdHlwY2FjaGVbMF0tPnR5 cGVfaWQsCisJCQkJCQkJCSAgIC0xLCAwKTsKKworCXJldHVybiB0dXBkZXNjOworfQorCisv KgorICogYnJpbl9taW5tYXhfc2Nhbl9pbml0CisgKgkJUHJlcGFyZSB0aGUgQnJpblJhbmdl U2NhbkRlc2MgaW5jbHVkaW5nIHRoZSBzb3J0aW5nIGluZm8gZXRjLgorICoKKyAqIFdlIHdh bnQgdG8gaGF2ZSB0aGUgcmFuZ2VzIGluIHJvdWdobHkgdGhpcyBvcmRlcgorICoKKyAqIC0g bm90LXN1bW1hcml6ZWQKKyAqIC0gc3VtbWFyaXplZCwgbm9uLW51bGwgdmFsdWVzCisgKiAt IHN1bW1hcml6ZWQsIGFsbC1udWxscworICoKKyAqIFdlIGRvIGl0IHRoaXMgd2F5LCBiZWNh dXNlIHRoZSBub3Qtc3VtbWFyaXplZCByYW5nZXMgbmVlZCB0byBiZQorICogc2Nhbm5lZCBh bHdheXMgKGJvdGggdG8gcHJvZHVjZSBOVUxMIGFuZCBub24tTlVMTCB2YWx1ZXMpLCBhbmQK KyAqIHdlIG5lZWQgdG8gcmVhZCBhbGwgb2YgdGhlbSBpbnRvIHRoZSB0dXBsZXNvcnQgYmVm b3JlIHByb2R1Y2luZworICogYW55dGhpbmcuIFNvIHBsYWNpbmcgdGhlbSBhdCB0aGUgYmVn aW5uaW5nIGlzIHJlYXNvbmFibGUuCisgKgorICogVGhlIGFsbC1udWxscyByYW5nZXMgYXJl IHBsYWNlZCBsYXN0LCBiZWNhdXNlIHdoZW4gcHJvY2Vzc2luZworICogTlVMTHMgd2UgbmVl ZCB0byBzY2FuIGV2ZXJ5dGhpbmcgYW55d2F5IChzb21lIG9mIHRoZSByYW5nZXMgbWlnaHQK KyAqIGhhdmUgaGFzX251bGxzPXRydWUpLiBCdXQgZm9yIG5vbi1OVUxMIHZhbHVlcyB3ZSBj YW4gYWJvcnQgb25jZQorICogd2UgaGl0IHRoZSBmaXJzdCBhbGwtbnVsbHMgcmFuZ2UuCisg KgorICogVGhlIHJlZ3VsYXIgcmFuZ2VzIGFyZSBzb3J0ZWQgYnkgYmxrbm9fc3RhcnQsIHRv IG1ha2UgaXQgbWF5YmUKKyAqIGEgYml0IG1vcmUgc2VxdWVudGlhbCAoYnV0IHRoaXMgb25s eSBoZWxwcyBpZiB0aGVyZSBhcmUgcmFuZ2VzCisgKiB3aXRoIHRoZSBzYW1lIG1pbnZhbCku CisgKi8KK3N0YXRpYyBCcmluUmFuZ2VTY2FuRGVzYyAqCiticmluX21pbm1heF9zY2FuX2lu aXQoQnJpbkRlc2MgKmJkZXNjLCBPaWQgY29sbGF0aW9uLCBBdHRyTnVtYmVyIGF0dG51bSwg Ym9vbCBhc2MpCit7CisJQnJpblJhbmdlU2NhbkRlc2MgICpzY2FuOworCisJLyogc29ydCBi eSAobm90X3N1bW1hcml6ZWQsIG1pbnZhbCwgYmxrbm9fc3RhcnQsIGFsbF9udWxscykgKi8K KwlBdHRyTnVtYmVyCQkJa2V5c1s0XTsKKwlPaWQJCQkJCWNvbGxhdGlvbnNbNF07CisJYm9v bAkJCQludWxsc0ZpcnN0WzRdOworCU9pZAkJCQkJb3BlcmF0b3JzWzRdOworCU9pZAkJCQkJ dHlwaWQ7CisJVHlwZUNhY2hlRW50cnkJICAgKnR5cGNhY2hlOworCisJLyogd2UgZXhwZWN0 IHRvIGhhdmUgbWluL21heCB2YWx1ZSBmb3IgZWFjaCByYW5nZSwgc2FtZSB0eXBlIGZvciBi b3RoICovCisJQXNzZXJ0KGJkZXNjLT5iZF9pbmZvW2F0dG51bSAtIDFdLT5vaV9uc3RvcmVk ID09IDIpOworCUFzc2VydChiZGVzYy0+YmRfaW5mb1thdHRudW0gLSAxXS0+b2lfdHlwY2Fj aGVbMF0tPnR5cGVfaWQgPT0KKwkJICAgYmRlc2MtPmJkX2luZm9bYXR0bnVtIC0gMV0tPm9p X3R5cGNhY2hlWzFdLT50eXBlX2lkKTsKKworCXNjYW4gPSAoQnJpblJhbmdlU2NhbkRlc2Mg KikgcGFsbG9jMChzaXplb2YoQnJpblJhbmdlU2NhbkRlc2MpKTsKKworCS8qIGJ1aWxkIHR1 cGxlIGRlc2NyaXB0b3IgZm9yIHJhbmdlIGRhdGEgKi8KKwlzY2FuLT50ZGVzYyA9IGJyaW5f bWlubWF4X3JhbmdlX3R1cGRlc2MoYmRlc2MsIGF0dG51bSk7CisKKwkvKiBpbml0aWFsaXpl IG9yZGVyaW5nIGluZm8gKi8KKwlrZXlzWzBdID0gNTsJCQkJLyogbm90X3N1bW1hcml6ZWQg Ki8KKwlrZXlzWzFdID0gNDsJCQkJLyogYWxsX251bGxzICovCisJa2V5c1syXSA9IChhc2Mp ID8gNiA6IDc7CS8qIG1pbl92YWx1ZSAoYXNjKSBvciBtYXhfdmFsdWUgKGRlc2MpICovCisJ a2V5c1szXSA9IDE7CQkJCS8qIGJsa25vX3N0YXJ0ICovCisKKwljb2xsYXRpb25zWzBdID0g SW52YWxpZE9pZDsJLyogRklYTUUgKi8KKwljb2xsYXRpb25zWzFdID0gSW52YWxpZE9pZDsJ LyogRklYTUUgKi8KKwljb2xsYXRpb25zWzJdID0gY29sbGF0aW9uOwkvKiBGSVhNRSAqLwor CWNvbGxhdGlvbnNbM10gPSBJbnZhbGlkT2lkOwkvKiBGSVhNRSAqLworCisJLyogdW5yZWxh dGVkIHRvIHRoZSBvcmRlcmluZyBkZXNpcmVkIGJ5IHRoZSB1c2VyICovCisJbnVsbHNGaXJz dFswXSA9IGZhbHNlOworCW51bGxzRmlyc3RbMV0gPSBmYWxzZTsKKwludWxsc0ZpcnN0WzJd ID0gZmFsc2U7CisJbnVsbHNGaXJzdFszXSA9IGZhbHNlOworCisJLyogbG9va3VwIHNvcnQg b3BlcmF0b3IgZm9yIHRoZSBib29sZWFuIHR5cGUgKHVzZWQgZm9yIG5vdF9zdW1tYXJpemVk KSAqLworCXR5cGNhY2hlID0gbG9va3VwX3R5cGVfY2FjaGUoQk9PTE9JRCwgVFlQRUNBQ0hF X0dUX09QUik7CisJb3BlcmF0b3JzWzBdID0gdHlwY2FjaGUtPmd0X29wcjsKKworCS8qIGxv b2t1cCBzb3J0IG9wZXJhdG9yIGZvciB0aGUgYm9vbGVhbiB0eXBlICh1c2VkIGZvciBhbGxf bnVsbHMpICovCisJdHlwY2FjaGUgPSBsb29rdXBfdHlwZV9jYWNoZShCT09MT0lELCBUWVBF Q0FDSEVfTFRfT1BSKTsKKwlvcGVyYXRvcnNbMV0gPSB0eXBjYWNoZS0+bHRfb3ByOworCisJ LyogbG9va3VwIHNvcnQgb3BlcmF0b3IgZm9yIHRoZSBtaW4vbWF4IHR5cGUgKi8KKwl0eXBp ZCA9IGJkZXNjLT5iZF9pbmZvW2F0dG51bSAtIDFdLT5vaV90eXBjYWNoZVswXS0+dHlwZV9p ZDsKKwl0eXBjYWNoZSA9IGxvb2t1cF90eXBlX2NhY2hlKHR5cGlkLCBUWVBFQ0FDSEVfTFRf T1BSIHwgVFlQRUNBQ0hFX0dUX09QUik7CisJb3BlcmF0b3JzWzJdID0gKGFzYykgPyB0eXBj YWNoZS0+bHRfb3ByIDogdHlwY2FjaGUtPmd0X29wcjsKKworCS8qIGxvb2t1cCBzb3J0IG9w ZXJhdG9yIGZvciB0aGUgYmlnaW50IHR5cGUgKHVzZWQgZm9yIGJsa25vX3N0YXJ0KSAqLwor CXR5cGNhY2hlID0gbG9va3VwX3R5cGVfY2FjaGUoSU5UOE9JRCwgVFlQRUNBQ0hFX0xUX09Q Uik7CisJb3BlcmF0b3JzWzNdID0gdHlwY2FjaGUtPmx0X29wcjsKKworCS8qCisJICogWFhY IGJldHRlciB0byBrZWVwIHRoaXMgc21hbGwgZW5vdWdoIHRvIGZpdCBpbnRvIEwyL0wzLCBs YXJnZSB2YWx1ZXMKKwkgKiBvZiB3b3JrX21lbSBtYXkgZWFzaWx5IG1ha2UgdGhpcyBzbG93 ZXIuCisJICovCisJc2Nhbi0+cmFuZ2VzID0gdHVwbGVzb3J0X2JlZ2luX2hlYXAoc2Nhbi0+ dGRlc2MsCisJCQkJCQkJCQkJNCwgLyogbmtleXMgKi8KKwkJCQkJCQkJCQlrZXlzLAorCQkJ CQkJCQkJCW9wZXJhdG9ycywKKwkJCQkJCQkJCQljb2xsYXRpb25zLAorCQkJCQkJCQkJCW51 bGxzRmlyc3QsCisJCQkJCQkJCQkJd29ya19tZW0sCisJCQkJCQkJCQkJTlVMTCwKKwkJCQkJ CQkJCQlUVVBMRVNPUlRfUkFORE9NQUNDRVNTKTsKKworCXNjYW4tPnNsb3QgPSBNYWtlU2lu Z2xlVHVwbGVUYWJsZVNsb3Qoc2Nhbi0+dGRlc2MsCisJCQkJCQkJCQkJICAmVFRTT3BzTWlu aW1hbFR1cGxlKTsKKworCXJldHVybiBzY2FuOworfQorCisvKgorICogYnJpbl9taW5tYXhf c2Nhbl9hZGRfdHVwbGUKKyAqCQlGb3JtIGFuZCBzdG9yZSBhIHR1cGxlIHJlcHJlc2VudGlu ZyB0aGUgQlJJTiByYW5nZSB0byB0aGUgdHVwbGVzdG9yZS4KKyAqLworc3RhdGljIHZvaWQK K2JyaW5fbWlubWF4X3NjYW5fYWRkX3R1cGxlKEJyaW5SYW5nZVNjYW5EZXNjICpzY2FuLCBU dXBsZVRhYmxlU2xvdCAqc2xvdCwKKwkJCQkJCSAgIEJsb2NrTnVtYmVyIGJsb2NrX3N0YXJ0 LCBCbG9ja051bWJlciBibG9ja19lbmQsCisJCQkJCQkgICBib29sIGhhc19udWxscywgYm9v bCBhbGxfbnVsbHMsIGJvb2wgbm90X3N1bW1hcml6ZWQsCisJCQkJCQkgICBEYXR1bSBtaW5f dmFsdWUsIERhdHVtIG1heF92YWx1ZSkKK3sKKwlFeGVjQ2xlYXJUdXBsZShzbG90KTsKKwor CW1lbXNldChzbG90LT50dHNfaXNudWxsLCBmYWxzZSwgNyAqIHNpemVvZihib29sKSk7CisK KwlzbG90LT50dHNfdmFsdWVzWzBdID0gSW50NjRHZXREYXR1bShibG9ja19zdGFydCk7CisJ c2xvdC0+dHRzX3ZhbHVlc1sxXSA9IEludDY0R2V0RGF0dW0oYmxvY2tfZW5kKTsKKwlzbG90 LT50dHNfdmFsdWVzWzJdID0gQm9vbEdldERhdHVtKGhhc19udWxscyk7CisJc2xvdC0+dHRz X3ZhbHVlc1szXSA9IEJvb2xHZXREYXR1bShhbGxfbnVsbHMpOworCXNsb3QtPnR0c192YWx1 ZXNbNF0gPSBCb29sR2V0RGF0dW0obm90X3N1bW1hcml6ZWQpOworCXNsb3QtPnR0c192YWx1 ZXNbNV0gPSBtaW5fdmFsdWU7CisJc2xvdC0+dHRzX3ZhbHVlc1s2XSA9IG1heF92YWx1ZTsK KworCWlmIChhbGxfbnVsbHMgfHwgbm90X3N1bW1hcml6ZWQpCisJeworCQlzbG90LT50dHNf aXNudWxsWzVdID0gdHJ1ZTsKKwkJc2xvdC0+dHRzX2lzbnVsbFs2XSA9IHRydWU7CisJfQor CisJRXhlY1N0b3JlVmlydHVhbFR1cGxlKHNsb3QpOworCisJdHVwbGVzb3J0X3B1dHR1cGxl c2xvdChzY2FuLT5yYW5nZXMsIHNsb3QpOworCisJc2Nhbi0+bnJhbmdlcysrOworfQorCisj aWZkZWYgQlJJTlNPUlRfREVCVUcKKy8qCisgKiBicmluX21pbm1heF9zY2FuX25leHQKKyAq CQlSZXR1cm4gdGhlIG5leHQgQlJJTiByYW5nZSBpbmZvcm1hdGlvbiBmcm9tIHRoZSB0dXBs ZXN0b3JlLgorICoKKyAqIFJldHVybnMgTlVMTCB3aGVuIHRoZXJlIGFyZSBubyBtb3JlIHJh bmdlcy4KKyAqLworc3RhdGljIEJyaW5SYW5nZSAqCiticmluX21pbm1heF9zY2FuX25leHQo QnJpblJhbmdlU2NhbkRlc2MgKnNjYW4pCit7CisJaWYgKHR1cGxlc29ydF9nZXR0dXBsZXNs b3Qoc2Nhbi0+cmFuZ2VzLCB0cnVlLCBmYWxzZSwgc2Nhbi0+c2xvdCwgTlVMTCkpCisJewor CQlib29sCQlpc251bGw7CisJCUJyaW5SYW5nZSAgKnJhbmdlID0gKEJyaW5SYW5nZSAqKSBw YWxsb2Moc2l6ZW9mKEJyaW5SYW5nZSkpOworCisJCXJhbmdlLT5ibGtub19zdGFydCA9IHNs b3RfZ2V0YXR0cihzY2FuLT5zbG90LCAxLCAmaXNudWxsKTsKKwkJcmFuZ2UtPmJsa25vX2Vu ZCA9IHNsb3RfZ2V0YXR0cihzY2FuLT5zbG90LCAyLCAmaXNudWxsKTsKKwkJcmFuZ2UtPmhh c19udWxscyA9IHNsb3RfZ2V0YXR0cihzY2FuLT5zbG90LCAzLCAmaXNudWxsKTsKKwkJcmFu Z2UtPmFsbF9udWxscyA9IHNsb3RfZ2V0YXR0cihzY2FuLT5zbG90LCA0LCAmaXNudWxsKTsK KwkJcmFuZ2UtPm5vdF9zdW1tYXJpemVkID0gc2xvdF9nZXRhdHRyKHNjYW4tPnNsb3QsIDUs ICZpc251bGwpOworCQlyYW5nZS0+bWluX3ZhbHVlID0gc2xvdF9nZXRhdHRyKHNjYW4tPnNs b3QsIDYsICZpc251bGwpOworCQlyYW5nZS0+bWF4X3ZhbHVlID0gc2xvdF9nZXRhdHRyKHNj YW4tPnNsb3QsIDcsICZpc251bGwpOworCisJCXJldHVybiByYW5nZTsKKwl9CisKKwlyZXR1 cm4gTlVMTDsKK30KKworLyoKKyAqIGJyaW5fbWlubWF4X3NjYW5fZHVtcAorICoJCVByaW50 IGluZm8gYWJvdXQgYWxsIHBhZ2UgcmFuZ2VzIHN0b3JlZCBpbiB0aGUgdHVwbGVzdG9yZS4K KyAqLworc3RhdGljIHZvaWQKK2JyaW5fbWlubWF4X3NjYW5fZHVtcChCcmluUmFuZ2VTY2Fu RGVzYyAqc2NhbikKK3sKKwlCcmluUmFuZ2UgKnJhbmdlOworCisJaWYgKCFtZXNzYWdlX2xl dmVsX2lzX2ludGVyZXN0aW5nKFdBUk5JTkcpKQorCQlyZXR1cm47CisKKwllbG9nKFdBUk5J TkcsICI9PT09PSBkdW1waW5nID09PT09Iik7CisJd2hpbGUgKChyYW5nZSA9IGJyaW5fbWlu bWF4X3NjYW5fbmV4dChzY2FuKSkgIT0gTlVMTCkKKwl7CisJCWVsb2coV0FSTklORywgIlsl dSAldV0gaGFzX251bGxzICVkIGFsbF9udWxscyAlZCBub3Rfc3VtbWFyaXplZCAlZCB2YWx1 ZXMgWyVsZCAlbGRdIiwKKwkJCSByYW5nZS0+Ymxrbm9fc3RhcnQsIHJhbmdlLT5ibGtub19l bmQsCisJCQkgcmFuZ2UtPmhhc19udWxscywgcmFuZ2UtPmFsbF9udWxscywgcmFuZ2UtPm5v dF9zdW1tYXJpemVkLAorCQkJIHJhbmdlLT5taW5fdmFsdWUsIHJhbmdlLT5tYXhfdmFsdWUp OworCisJCXBmcmVlKHJhbmdlKTsKKwl9CisKKwkvKiByZXNldCB0aGUgdHVwbGVzdG9yZSwg c28gdGhhdCB3ZSBjYW4gc3RhcnQgc2Nhbm5pbmcgYWdhaW4gKi8KKwl0dXBsZXNvcnRfcmVz Y2FuKHNjYW4tPnJhbmdlcyk7Cit9CisjZW5kaWYKKworc3RhdGljIHZvaWQKK2JyaW5fbWlu bWF4X3NjYW5fZmluYWxpemUoQnJpblJhbmdlU2NhbkRlc2MgKnNjYW4pCit7CisJdHVwbGVz b3J0X3BlcmZvcm1zb3J0KHNjYW4tPnJhbmdlcyk7Cit9CisKKy8qCisgKiBicmluX21pbm1h eF9yYW5nZXMKKyAqCQlMb2FkIHRoZSBCUklOIHJhbmdlcyBhbmQgc29ydCB0aGVtLgorICov CitEYXR1bQorYnJpbl9taW5tYXhfcmFuZ2VzKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJSW5k ZXhTY2FuRGVzYwlzY2FuID0gKEluZGV4U2NhbkRlc2MpIFBHX0dFVEFSR19QT0lOVEVSKDAp OworCUF0dHJOdW1iZXIJCWF0dG51bSA9IFBHX0dFVEFSR19JTlQxNigxKTsKKwlib29sCQkJ YXNjID0gUEdfR0VUQVJHX0JPT0woMik7CisJT2lkCQkJCWNvbGxvaWQgPSBQR19HRVRfQ09M TEFUSU9OKCk7CisJQnJpbk9wYXF1ZSAqb3BhcXVlOworCVJlbGF0aW9uCWluZGV4UmVsOwor CVJlbGF0aW9uCWhlYXBSZWw7CisJQmxvY2tOdW1iZXIgbmJsb2NrczsKKwlCbG9ja051bWJl cgloZWFwQmxrOworCU9pZAkJCWhlYXBPaWQ7CisJQnJpbk1lbVR1cGxlICpkdHVwOworCUJy aW5UdXBsZSAgKmJ0dXAgPSBOVUxMOworCVNpemUJCWJ0dXBzeiA9IDA7CisJQnVmZmVyCQli dWYgPSBJbnZhbGlkQnVmZmVyOworCUJsb2NrTnVtYmVyCXBhZ2VzUGVyUmFuZ2U7CisJQnJp bkRlc2MJICAgKmJkZXNjOworCUJyaW5SYW5nZVNjYW5EZXNjICpicnNjYW47CisJVHVwbGVU YWJsZVNsb3QgKnNsb3Q7CisKKwkvKgorCSAqIERldGVybWluZSBob3cgbWFueSBCUklOIHJh bmdlcyBjb3VsZCB0aGVyZSBiZSwgYWxsb2NhdGUgc3BhY2UgYW5kIHJlYWQKKwkgKiBhbGwg dGhlIG1pbi9tYXggdmFsdWVzLgorCSAqLworCW9wYXF1ZSA9IChCcmluT3BhcXVlICopIHNj YW4tPm9wYXF1ZTsKKwliZGVzYyA9IG9wYXF1ZS0+Ym9fYmRlc2M7CisJcGFnZXNQZXJSYW5n ZSA9IG9wYXF1ZS0+Ym9fcGFnZXNQZXJSYW5nZTsKKworCWluZGV4UmVsID0gYmRlc2MtPmJk X2luZGV4OworCisJLyogbWFrZSBzdXJlIHRoZSBwcm92aWRlZCBhdHRudW0gaXMgdmFsaWQg Ki8KKwlBc3NlcnQoKGF0dG51bSA+IDApICYmIChhdHRudW0gPD0gYmRlc2MtPmJkX3R1cGRl c2MtPm5hdHRzKSk7CisKKwkvKgorCSAqIFdlIG5lZWQgdG8ga25vdyB0aGUgc2l6ZSBvZiB0 aGUgdGFibGUgc28gdGhhdCB3ZSBrbm93IGhvdyBsb25nIHRvIGl0ZXJhdGUKKwkgKiBvbiB0 aGUgcmV2bWFwIChhbmQgdG8gcHJlLWFsbG9jYXRlIHRoZSBhcnJheXMpLgorCSAqLworCWhl YXBPaWQgPSBJbmRleEdldFJlbGF0aW9uKFJlbGF0aW9uR2V0UmVsaWQoaW5kZXhSZWwpLCBm YWxzZSk7CisJaGVhcFJlbCA9IHRhYmxlX29wZW4oaGVhcE9pZCwgQWNjZXNzU2hhcmVMb2Nr KTsKKwluYmxvY2tzID0gUmVsYXRpb25HZXROdW1iZXJPZkJsb2NrcyhoZWFwUmVsKTsKKwl0 YWJsZV9jbG9zZShoZWFwUmVsLCBBY2Nlc3NTaGFyZUxvY2spOworCisJLyogYWxsb2NhdGUg YW4gaW5pdGlhbCBpbi1tZW1vcnkgdHVwbGUsIG91dCBvZiB0aGUgcGVyLXJhbmdlIG1lbWN4 dCAqLworCWR0dXAgPSBicmluX25ld19tZW10dXBsZShiZGVzYyk7CisKKwkvKiBpbml0aWFs aXplIHRoZSBzY2FuIGRlc2NyaWJpbmcgc2NhbiBvZiByYW5nZXMgc29ydGVkIGJ5IG1pbnZh bCAqLworCWJyc2NhbiA9IGJyaW5fbWlubWF4X3NjYW5faW5pdChiZGVzYywgY29sbG9pZCwg YXR0bnVtLCBhc2MpOworCisJc2xvdCA9IE1ha2VTaW5nbGVUdXBsZVRhYmxlU2xvdChicnNj YW4tPnRkZXNjLCAmVFRTT3BzVmlydHVhbCk7CisKKwkvKgorCSAqIE5vdyBzY2FuIHRoZSBy ZXZtYXAuICBXZSBzdGFydCBieSBxdWVyeWluZyBmb3IgaGVhcCBwYWdlIDAsCisJICogaW5j cmVtZW50aW5nIGJ5IHRoZSBudW1iZXIgb2YgcGFnZXMgcGVyIHJhbmdlOyB0aGlzIGdpdmVz IHVzIGEgZnVsbAorCSAqIHZpZXcgb2YgdGhlIHRhYmxlLgorCSAqCisJICogWFhYIFRoZSBz b3J0IG1heSBiZSBxdWl0ZSBleHBlbnNpdmUsIGUuZy4gZm9yIHNtYWxsIEJSSU4gcmFuZ2Vz LiBNYXliZQorCSAqIHdlIGNvdWxkIG9wdGltaXplIHRoaXMgc29tZWhvdz8gRm9yIGV4YW1w bGUsIHdlIGtub3cgdGhlIG5vdC1zdW1tYXJpemVkCisJICogcmFuZ2VzIGFyZSBhbHdheXMg Z29pbmcgdG8gYmUgZmlyc3QsIGFuZCBhbGwtbnVsbCByYW5nZXMgbGFzdCwgc28gbWF5YmUK KwkgKiB3ZSBjb3VsZCBzdGFzaCB0aG9zZSBzb21ld2hlcmUsIGFuZCBub3Qgc29ydCB0aGVt PyBCdXQgdGhlcmUgYXJlIGxpa2VseQorCSAqIG9ubHkgdmVyeSBmZXcgc3VjaCByYW5nZXMs IGluIG1vc3QgY2FzZXMuIE1vcmVvdmVyLCBob3cgd291bGQgd2UgdGhlbgorCSAqIHByZXBl bmQvYXBwZW5kIHRob3NlIHJhbmdlcyB0byB0aGUgc29ydGVkIG9uZXM/IFByb2JhYmx5IHdv dWxkIGhhdmUgdG8KKwkgKiBzdG9yZSB0aGVtIGluIGEgdHVwbGVzdG9yZSwgb3Igc29tZXRo aW5nLgorCSAqCisJICogWFhYIFNlZW1zIHRoYXQgaGF2aW5nIGxhcmdlIHdvcmtfbWVtIGNh biBiZSBxdWl0ZSBkZXRyaW1lbnRhbCwgYmVjYXVzZQorCSAqIHRoZW4gaXQgb3ZlcmZsb3dz IEwyL0wzIGNhY2hlcywgbWFraW5nIHRoZSBzb3J0IG11Y2ggc2xvd2VyLgorCSAqCisJICog WFhYIElmIHRoZXJlIGFyZSBvdGhlciBpbmRleGVzLCB3b3VsZCBiZSBncmVhdCB0byBmaWx0 ZXIgdGhlIHJhbmdlcywgc28KKwkgKiB0aGF0IHdlIG9ubHkgc29ydCB0aGUgaW50ZXJlc3Rp bmcgb25lcyAtIHJlZHVjZXMgdGhlIG51bWJlciBvZiByYW5nZXMsCisJICogbWFrZXMgdGhl IHNvcnQgZmFzdGVyLgorCSAqCisJICogWFhYIEFub3RoZXIgb3B0aW9uIGlzIG1ha2luZyB0 aGlzIGluY3JlbWVudGFsIC0gZS5nLiBvbmx5IGFzayBmb3IgdGhlCisJICogZmlyc3QgMTAw MCByYW5nZXMsIHVzaW5nIGEgdG9wLU4gc29ydC4gQW5kIHRoZW4gaWYgaXQncyBub3QgZW5v dWdoIHdlCisJICogY291bGQgcmVxdWVzdCBhbm90aGVyIGNodW5rLiBCdXQgdGhlIHNlY29u ZCByZXF1ZXN0IHdvdWxkIGhhdmUgdG8gYmUKKwkgKiByYXRoZXIgdW5saWtlbHkgKGJlY2F1 c2UgcXVpdGUgZXhwZW5zaXZlKSwgYW5kIHRoZSB0b3AtTiBzb3J0IGRvZXMgbm90CisJICog c2VlbSBhbGwgdGhhdCBmYXN0ZXIgKGFzIGxvbmcgYXMgd2UgZG9uJ3Qgb3ZlcmZsb3cgTDIv TDMpLgorCSAqLworCWZvciAoaGVhcEJsayA9IDA7IGhlYXBCbGsgPCBuYmxvY2tzOyBoZWFw QmxrICs9IHBhZ2VzUGVyUmFuZ2UpCisJeworCQlib29sCQlnb3R0dXBsZSA9IGZhbHNlOwor CQlCcmluVHVwbGUgICp0dXA7CisJCU9mZnNldE51bWJlciBvZmY7CisJCVNpemUJCXNpemU7 CisKKwkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKKworCQl0dXAgPSBicmluR2V0VHVwbGVG b3JIZWFwQmxvY2sob3BhcXVlLT5ib19ybUFjY2VzcywgaGVhcEJsaywgJmJ1ZiwKKwkJCQkJ CQkJCSAgICZvZmYsICZzaXplLCBCVUZGRVJfTE9DS19TSEFSRSwKKwkJCQkJCQkJCSAgIHNj YW4tPnhzX3NuYXBzaG90KTsKKwkJaWYgKHR1cCkKKwkJeworCQkJZ290dHVwbGUgPSB0cnVl OworCQkJYnR1cCA9IGJyaW5fY29weV90dXBsZSh0dXAsIHNpemUsIGJ0dXAsICZidHVwc3op OworCQkJTG9ja0J1ZmZlcihidWYsIEJVRkZFUl9MT0NLX1VOTE9DSyk7CisJCX0KKworCQkv KgorCQkgKiBSYW5nZXMgd2l0aCBubyBpbmRleGVkIHR1cGxlIG1heSBjb250YWluIGFueXRo aW5nLgorCQkgKi8KKwkJaWYgKCFnb3R0dXBsZSkKKwkJeworCQkJYnJpbl9taW5tYXhfc2Nh bl9hZGRfdHVwbGUoYnJzY2FuLCBzbG90LAorCQkJCQkJCQkJICAgaGVhcEJsaywgaGVhcEJs ayArIChwYWdlc1BlclJhbmdlIC0gMSksCisJCQkJCQkJCQkgICBmYWxzZSwgZmFsc2UsIHRy dWUsIDAsIDApOworCQl9CisJCWVsc2UKKwkJeworCQkJZHR1cCA9IGJyaW5fZGVmb3JtX3R1 cGxlKGJkZXNjLCBidHVwLCBkdHVwKTsKKwkJCWlmIChkdHVwLT5idF9wbGFjZWhvbGRlcikK KwkJCXsKKwkJCQkvKgorCQkJCSAqIFBsYWNlaG9sZGVyIHR1cGxlcyBhcmUgdHJlYXRlZCBh cyBpZiBub3Qgc3VtbWFyaXplZC4KKwkJCQkgKgorCQkJCSAqIFhYWCBJcyB0aGlzIGNvcnJl Y3Q/CisJCQkJICovCisJCQkJYnJpbl9taW5tYXhfc2Nhbl9hZGRfdHVwbGUoYnJzY2FuLCBz bG90LAorCQkJCQkJCQkJCSAgIGhlYXBCbGssIGhlYXBCbGsgKyAocGFnZXNQZXJSYW5nZSAt IDEpLAorCQkJCQkJCQkJCSAgIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgMCwgMCk7CisJCQl9CisJ CQllbHNlCisJCQl7CisJCQkJQnJpblZhbHVlcyAqYnZhbDsKKworCQkJCWJ2YWwgPSAmZHR1 cC0+YnRfY29sdW1uc1thdHRudW0gLSAxXTsKKworCQkJCWJyaW5fbWlubWF4X3NjYW5fYWRk X3R1cGxlKGJyc2Nhbiwgc2xvdCwKKwkJCQkJCQkJCQkgICBoZWFwQmxrLCBoZWFwQmxrICsg KHBhZ2VzUGVyUmFuZ2UgLSAxKSwKKwkJCQkJCQkJCQkgICBidmFsLT5idl9oYXNudWxscywg YnZhbC0+YnZfYWxsbnVsbHMsIGZhbHNlLAorCQkJCQkJCQkJCSAgIGJ2YWwtPmJ2X3ZhbHVl c1swXSwgYnZhbC0+YnZfdmFsdWVzWzFdKTsKKwkJCX0KKwkJfQorCX0KKworCUV4ZWNEcm9w U2luZ2xlVHVwbGVUYWJsZVNsb3Qoc2xvdCk7CisKKwlpZiAoYnVmICE9IEludmFsaWRCdWZm ZXIpCisJCVJlbGVhc2VCdWZmZXIoYnVmKTsKKworCS8qIGRvIHRoZSBzb3J0IGFuZCBhbnkg bmVjZXNzYXJ5IHBvc3QtcHJvY2Vzc2luZyAqLworCWJyaW5fbWlubWF4X3NjYW5fZmluYWxp emUoYnJzY2FuKTsKKworI2lmZGVmIEJSSU5TT1JUX0RFQlVHCisJYnJpbl9taW5tYXhfc2Nh bl9kdW1wKGJyc2Nhbik7CisjZW5kaWYKKworCVBHX1JFVFVSTl9QT0lOVEVSKGJyc2Nhbik7 Cit9CisKIC8qCiAgKiBDYWNoZSBhbmQgcmV0dXJuIHRoZSBwcm9jZWR1cmUgZm9yIHRoZSBn aXZlbiBzdHJhdGVneS4KICAqCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9l eHBsYWluLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKaW5kZXggZmJiZjI4 Y2YwNi4uY2ExYzYyNWEwMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhw bGFpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYwpAQCAtODUsNiAr ODUsOCBAQCBzdGF0aWMgdm9pZCBzaG93X3NvcnRfa2V5cyhTb3J0U3RhdGUgKnNvcnRzdGF0 ZSwgTGlzdCAqYW5jZXN0b3JzLAogCQkJCQkJICAgRXhwbGFpblN0YXRlICplcyk7CiBzdGF0 aWMgdm9pZCBzaG93X2luY3JlbWVudGFsX3NvcnRfa2V5cyhJbmNyZW1lbnRhbFNvcnRTdGF0 ZSAqaW5jcnNvcnRzdGF0ZSwKIAkJCQkJCQkJCSAgIExpc3QgKmFuY2VzdG9ycywgRXhwbGFp blN0YXRlICplcyk7CitzdGF0aWMgdm9pZCBzaG93X2JyaW5zb3J0X2tleXMoQnJpblNvcnRT dGF0ZSAqc29ydHN0YXRlLCBMaXN0ICphbmNlc3RvcnMsCisJCQkJCQkJICAgRXhwbGFpblN0 YXRlICplcyk7CiBzdGF0aWMgdm9pZCBzaG93X21lcmdlX2FwcGVuZF9rZXlzKE1lcmdlQXBw ZW5kU3RhdGUgKm1zdGF0ZSwgTGlzdCAqYW5jZXN0b3JzLAogCQkJCQkJCQkgICBFeHBsYWlu U3RhdGUgKmVzKTsKIHN0YXRpYyB2b2lkIHNob3dfYWdnX2tleXMoQWdnU3RhdGUgKmFzdGF0 ZSwgTGlzdCAqYW5jZXN0b3JzLApAQCAtMTEwMCw2ICsxMTAyLDcgQEAgRXhwbGFpblByZVNj YW5Ob2RlKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLCBCaXRtYXBzZXQgKipyZWxzX3VzZWQpCiAJ CWNhc2UgVF9JbmRleFNjYW46CiAJCWNhc2UgVF9JbmRleE9ubHlTY2FuOgogCQljYXNlIFRf Qml0bWFwSGVhcFNjYW46CisJCWNhc2UgVF9CcmluU29ydDoKIAkJY2FzZSBUX1RpZFNjYW46 CiAJCWNhc2UgVF9UaWRSYW5nZVNjYW46CiAJCWNhc2UgVF9TdWJxdWVyeVNjYW46CkBAIC0x MjYyLDYgKzEyNjUsOSBAQCBFeHBsYWluTm9kZShQbGFuU3RhdGUgKnBsYW5zdGF0ZSwgTGlz dCAqYW5jZXN0b3JzLAogCQljYXNlIFRfSW5kZXhPbmx5U2NhbjoKIAkJCXBuYW1lID0gc25h bWUgPSAiSW5kZXggT25seSBTY2FuIjsKIAkJCWJyZWFrOworCQljYXNlIFRfQnJpblNvcnQ6 CisJCQlwbmFtZSA9IHNuYW1lID0gIkJSSU4gU29ydCI7CisJCQlicmVhazsKIAkJY2FzZSBU X0JpdG1hcEluZGV4U2NhbjoKIAkJCXBuYW1lID0gc25hbWUgPSAiQml0bWFwIEluZGV4IFNj YW4iOwogCQkJYnJlYWs7CkBAIC0xNTA4LDYgKzE1MTQsMTYgQEAgRXhwbGFpbk5vZGUoUGxh blN0YXRlICpwbGFuc3RhdGUsIExpc3QgKmFuY2VzdG9ycywKIAkJCQlFeHBsYWluU2NhblRh cmdldCgoU2NhbiAqKSBpbmRleG9ubHlzY2FuLCBlcyk7CiAJCQl9CiAJCQlicmVhazsKKwkJ Y2FzZSBUX0JyaW5Tb3J0OgorCQkJeworCQkJCUJyaW5Tb3J0ICAqYnJpbnNvcnQgPSAoQnJp blNvcnQgKikgcGxhbjsKKworCQkJCUV4cGxhaW5JbmRleFNjYW5EZXRhaWxzKGJyaW5zb3J0 LT5pbmRleGlkLAorCQkJCQkJCQkJCWJyaW5zb3J0LT5pbmRleG9yZGVyZGlyLAorCQkJCQkJ CQkJCWVzKTsKKwkJCQlFeHBsYWluU2NhblRhcmdldCgoU2NhbiAqKSBicmluc29ydCwgZXMp OworCQkJfQorCQkJYnJlYWs7CiAJCWNhc2UgVF9CaXRtYXBJbmRleFNjYW46CiAJCQl7CiAJ CQkJQml0bWFwSW5kZXhTY2FuICpiaXRtYXBpbmRleHNjYW4gPSAoQml0bWFwSW5kZXhTY2Fu ICopIHBsYW47CkBAIC0xNzkwLDYgKzE4MDYsMTggQEAgRXhwbGFpbk5vZGUoUGxhblN0YXRl ICpwbGFuc3RhdGUsIExpc3QgKmFuY2VzdG9ycywKIAkJCQlFeHBsYWluUHJvcGVydHlGbG9h dCgiSGVhcCBGZXRjaGVzIiwgTlVMTCwKIAkJCQkJCQkJCSBwbGFuc3RhdGUtPmluc3RydW1l bnQtPm50dXBsZXMyLCAwLCBlcyk7CiAJCQlicmVhazsKKwkJY2FzZSBUX0JyaW5Tb3J0Ogor CQkJc2hvd19zY2FuX3F1YWwoKChCcmluU29ydCAqKSBwbGFuKS0+aW5kZXhxdWFsb3JpZywK KwkJCQkJCSAgICJJbmRleCBDb25kIiwgcGxhbnN0YXRlLCBhbmNlc3RvcnMsIGVzKTsKKwkJ CWlmICgoKEJyaW5Tb3J0ICopIHBsYW4pLT5pbmRleHF1YWxvcmlnKQorCQkJCXNob3dfaW5z dHJ1bWVudGF0aW9uX2NvdW50KCJSb3dzIFJlbW92ZWQgYnkgSW5kZXggUmVjaGVjayIsIDIs CisJCQkJCQkJCQkJICAgcGxhbnN0YXRlLCBlcyk7CisJCQlzaG93X3NjYW5fcXVhbChwbGFu LT5xdWFsLCAiRmlsdGVyIiwgcGxhbnN0YXRlLCBhbmNlc3RvcnMsIGVzKTsKKwkJCXNob3df YnJpbnNvcnRfa2V5cyhjYXN0Tm9kZShCcmluU29ydFN0YXRlLCBwbGFuc3RhdGUpLCBhbmNl c3RvcnMsIGVzKTsKKwkJCWlmIChwbGFuLT5xdWFsKQorCQkJCXNob3dfaW5zdHJ1bWVudGF0 aW9uX2NvdW50KCJSb3dzIFJlbW92ZWQgYnkgRmlsdGVyIiwgMSwKKwkJCQkJCQkJCQkgICBw bGFuc3RhdGUsIGVzKTsKKwkJCWJyZWFrOwogCQljYXNlIFRfQml0bWFwSW5kZXhTY2FuOgog CQkJc2hvd19zY2FuX3F1YWwoKChCaXRtYXBJbmRleFNjYW4gKikgcGxhbiktPmluZGV4cXVh bG9yaWcsCiAJCQkJCQkgICAiSW5kZXggQ29uZCIsIHBsYW5zdGF0ZSwgYW5jZXN0b3JzLCBl cyk7CkBAIC0yMzg5LDYgKzI0MTcsMjEgQEAgc2hvd19pbmNyZW1lbnRhbF9zb3J0X2tleXMo SW5jcmVtZW50YWxTb3J0U3RhdGUgKmluY3Jzb3J0c3RhdGUsCiAJCQkJCQkgYW5jZXN0b3Jz LCBlcyk7CiB9CiAKKy8qCisgKiBTaG93IHRoZSBzb3J0IGtleXMgZm9yIGEgQlJJTiBTb3J0 IG5vZGUuCisgKi8KK3N0YXRpYyB2b2lkCitzaG93X2JyaW5zb3J0X2tleXMoQnJpblNvcnRT dGF0ZSAqc29ydHN0YXRlLCBMaXN0ICphbmNlc3RvcnMsIEV4cGxhaW5TdGF0ZSAqZXMpCit7 CisJQnJpblNvcnQJICAgKnBsYW4gPSAoQnJpblNvcnQgKikgc29ydHN0YXRlLT5zcy5wcy5w bGFuOworCisJc2hvd19zb3J0X2dyb3VwX2tleXMoKFBsYW5TdGF0ZSAqKSBzb3J0c3RhdGUs ICJTb3J0IEtleSIsCisJCQkJCQkgcGxhbi0+bnVtQ29scywgMCwgcGxhbi0+c29ydENvbElk eCwKKwkJCQkJCSBwbGFuLT5zb3J0T3BlcmF0b3JzLCBwbGFuLT5jb2xsYXRpb25zLAorCQkJ CQkJIHBsYW4tPm51bGxzRmlyc3QsCisJCQkJCQkgYW5jZXN0b3JzLCBlcyk7Cit9CisKIC8q CiAgKiBMaWtld2lzZSwgZm9yIGEgTWVyZ2VBcHBlbmQgbm9kZS4KICAqLwpAQCAtMzgwOSw2 ICszODUyLDcgQEAgRXhwbGFpblRhcmdldFJlbChQbGFuICpwbGFuLCBJbmRleCBydGksIEV4 cGxhaW5TdGF0ZSAqZXMpCiAJCWNhc2UgVF9Gb3JlaWduU2NhbjoKIAkJY2FzZSBUX0N1c3Rv bVNjYW46CiAJCWNhc2UgVF9Nb2RpZnlUYWJsZToKKwkJY2FzZSBUX0JyaW5Tb3J0OgogCQkJ LyogQXNzZXJ0IGl0J3Mgb24gYSByZWFsIHJlbGF0aW9uICovCiAJCQlBc3NlcnQocnRlLT5y dGVraW5kID09IFJURV9SRUxBVElPTik7CiAJCQlvYmplY3RuYW1lID0gZ2V0X3JlbF9uYW1l KHJ0ZS0+cmVsaWQpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvTWFrZWZp bGUgYi9zcmMvYmFja2VuZC9leGVjdXRvci9NYWtlZmlsZQppbmRleCAxMTExOGQwY2UwLi5i Y2FhMmNlOGUyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9NYWtlZmlsZQor KysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9NYWtlZmlsZQpAQCAtMzgsNiArMzgsNyBAQCBP QkpTID0gXAogCW5vZGVCaXRtYXBIZWFwc2Nhbi5vIFwKIAlub2RlQml0bWFwSW5kZXhzY2Fu Lm8gXAogCW5vZGVCaXRtYXBPci5vIFwKKwlub2RlQnJpblNvcnQubyBcCiAJbm9kZUN0ZXNj YW4ubyBcCiAJbm9kZUN1c3RvbS5vIFwKIAlub2RlRm9yZWlnbnNjYW4ubyBcCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUHJvY25vZGUuYyBiL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNQcm9jbm9kZS5jCmluZGV4IDRkMjg4YmM4ZDQuLjkzZDEwMDc4MDkg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQcm9jbm9kZS5jCisrKyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQcm9jbm9kZS5jCkBAIC03OSw2ICs3OSw3IEBA CiAjaW5jbHVkZSAiZXhlY3V0b3Ivbm9kZUJpdG1hcEhlYXBzY2FuLmgiCiAjaW5jbHVkZSAi ZXhlY3V0b3Ivbm9kZUJpdG1hcEluZGV4c2Nhbi5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL25v ZGVCaXRtYXBPci5oIgorI2luY2x1ZGUgImV4ZWN1dG9yL25vZGVCcmluU29ydC5oIgogI2lu Y2x1ZGUgImV4ZWN1dG9yL25vZGVDdGVzY2FuLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3Ivbm9k ZUN1c3RvbS5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL25vZGVGb3JlaWduc2Nhbi5oIgpAQCAt MjI2LDYgKzIyNywxMSBAQCBFeGVjSW5pdE5vZGUoUGxhbiAqbm9kZSwgRVN0YXRlICplc3Rh dGUsIGludCBlZmxhZ3MpCiAJCQkJCQkJCQkJCQkJCSBlc3RhdGUsIGVmbGFncyk7CiAJCQli cmVhazsKIAorCQljYXNlIFRfQnJpblNvcnQ6CisJCQlyZXN1bHQgPSAoUGxhblN0YXRlICop IEV4ZWNJbml0QnJpblNvcnQoKEJyaW5Tb3J0ICopIG5vZGUsCisJCQkJCQkJCQkJCQkJZXN0 YXRlLCBlZmxhZ3MpOworCQkJYnJlYWs7CisKIAkJY2FzZSBUX0JpdG1hcEluZGV4U2NhbjoK IAkJCXJlc3VsdCA9IChQbGFuU3RhdGUgKikgRXhlY0luaXRCaXRtYXBJbmRleFNjYW4oKEJp dG1hcEluZGV4U2NhbiAqKSBub2RlLAogCQkJCQkJCQkJCQkJCQkgICBlc3RhdGUsIGVmbGFn cyk7CkBAIC02MzksNiArNjQ1LDEwIEBAIEV4ZWNFbmROb2RlKFBsYW5TdGF0ZSAqbm9kZSkK IAkJCUV4ZWNFbmRJbmRleE9ubHlTY2FuKChJbmRleE9ubHlTY2FuU3RhdGUgKikgbm9kZSk7 CiAJCQlicmVhazsKIAorCQljYXNlIFRfQnJpblNvcnRTdGF0ZToKKwkJCUV4ZWNFbmRCcmlu U29ydCgoQnJpblNvcnRTdGF0ZSAqKSBub2RlKTsKKwkJCWJyZWFrOworCiAJCWNhc2UgVF9C aXRtYXBJbmRleFNjYW5TdGF0ZToKIAkJCUV4ZWNFbmRCaXRtYXBJbmRleFNjYW4oKEJpdG1h cEluZGV4U2NhblN0YXRlICopIG5vZGUpOwogCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9leGVjdXRvci9tZXNvbi5idWlsZCBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL21l c29uLmJ1aWxkCmluZGV4IDY1Zjk0NTdjOWIuLmVkN2YzOGExMzkgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL21lc29uLmJ1aWxkCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL21lc29uLmJ1aWxkCkBAIC0yNiw2ICsyNiw3IEBAIGJhY2tlbmRfc291cmNlcyArPSBm aWxlcygKICAgJ25vZGVCaXRtYXBIZWFwc2Nhbi5jJywKICAgJ25vZGVCaXRtYXBJbmRleHNj YW4uYycsCiAgICdub2RlQml0bWFwT3IuYycsCisgICdub2RlQnJpblNvcnQuYycsCiAgICdu b2RlQ3Rlc2Nhbi5jJywKICAgJ25vZGVDdXN0b20uYycsCiAgICdub2RlRm9yZWlnbnNjYW4u YycsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQnJpblNvcnQuYyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCcmluU29ydC5jCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAuLjUyMjVlNjQ3NTYKLS0tIC9kZXYvbnVsbAorKysgYi9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlQnJpblNvcnQuYwpAQCAtMCwwICsxLDE2NjEgQEAK Ky8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIG5vZGVCcmluU29ydC5jCisgKgkgIFJv dXRpbmVzIHRvIHN1cHBvcnQgc29ydGVkIHNjYW4gb2YgcmVsYXRpb25zIHVzaW5nIGEgQlJJ TiBpbmRleAorICoKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5Ni0yMDIyLCBQb3N0 Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICogUG9ydGlvbnMgQ29weXJpZ2h0 IChjKSAxOTk0LCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEKKyAq CisgKgorICogVGhlIG92ZXJhbGwgYWxnb3JpdGhtIGlzIHJvdWdobHkgdGhpczoKKyAqCisg KiAwKSBpbml0aWFsaXplIGEgdHVwbGVzdG9yZSBhbmQgYSB0dXBsZXNvcnQKKyAqCisgKiAx KSBmZXRjaCBsaXN0IG9mIHBhZ2UgcmFuZ2VzIGZyb20gdGhlIEJSSU4gaW5kZXgsIHNvcnRl ZCBieSBtaW52YWwKKyAqICAgICh3aXRoIHRoZSBub3Qtc3VtbWFyaXplZCByYW5nZXMgZmly c3QsIGFuZCBhbGwtbnVsbCByYW5nZXMgbGFzdCkKKyAqCisgKiAyKSBmb3IgTlVMTFMgRklS U1Qgb3JkZXJpbmcsIHdhbGsgYWxsIHJhbmdlcyB0aGF0IG1heSBjb250YWluIE5VTEwKKyAq ICAgIHZhbHVlcyBhbmQgb3V0cHV0IHRoZW0gKGFuZCByZXR1cm4gdG8gdGhlIGJlZ2lubmlu ZyBvZiB0aGUgbGlzdCkKKyAqCisgKiAzKSB3aGlsZSB0aGVyZSBhcmUgcmFuZ2VzIGluIHRo ZSBsaXN0LCBkbyB0aGlzOgorICoKKyAqICAgYSkgZ2V0IG5leHQgKGRpc3RpbmN0KSBtaW52 YWwgZnJvbSB0aGUgbGlzdCwgY2FsbCBpdCB3YXRlcm1hcmsKKyAqCisgKiAgIGIpIGlmIHRo ZXJlIGFyZSBhbnkgdHVwbGVzIGluIHRoZSB0dXBsZXN0b3JlLCBtb3ZlIHRoZW0gdG8gdHVw bGVzb3J0CisgKgorICogICBjKSBwcm9jZXNzIGFsbCByYW5nZXMgd2l0aCAobWludmFsIDwg d2F0ZXJtYXJrKSAtIHJlYWQgdHVwbGVzIGFuZCBmZWVkCisgKiAgICAgIHRoZW0gZWl0aGVy IGludG8gdHVwbGVzdG9yZSAod2hlbiB2YWx1ZSA8IHdhdGVybWFyaykgb3IgdHVwbGVzdG9y ZQorICoKKyAqICAgZCkgc29ydCB0aGUgdHVwbGVzdG9yZSwgb3V0cHV0IGFsbCB0aGUgdHVw bGVzCisgKgorICogNCkgaWYgc29tZSB0dXBsZXMgcmVtYWluIGluIHRoZSB0dXBsZXN0b3Jl LCBzb3J0IGFuZCBvdXRwdXQgdGhlbQorICoKKyAqIDUpIGZvciBOVUxMUyBMQVNUIG9yZGVy aW5nLCB3YWxrIGFsbCByYW5nZXMgdGhhdCBtYXkgY29udGFpbiBOVUxMCisgKiAgICB2YWx1 ZXMgYW5kIG91dHB1dCB0aGVtIChhbmQgcmV0dXJuIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhl IGxpc3QpCisgKgorICoKKyAqIEZvciBERVNDIG9yZGVyaW5ncyB0aGUgcHJvY2VzcyBpcyBh bG1vc3QgdGhlIHNhbWUsIGV4Y2VwdCB0aGF0IHdlIGxvb2sKKyAqIGF0IG1heHZhbCBhbmQg dXNlICc+JyBvcGVyYXRvciAoYnV0IHRoYXQncyB0cmFuc3BhcmVudCkuCisgKgorICogVGhl cmUncyBhIGNvdXBsZSBwb3NzaWJsZSB0aGluZ3MgdGhhdCBtaWdodCBiZSBkb25lIGluIGRp ZmZlcmVudCB3YXlzOgorICoKKyAqIDEpIE5vdCB1c2luZyB0dXBsZXN0b3JlLCBhbmQgZmVl ZGluZyB0dXBsZXMgb25seSB0byBhIHR1cGxlc29ydC4gVGhlbgorICogd2hpbGUgcHJvZHVj aW5nIHRoZSB0dXBsZXMsIHdlJ2Qgb25seSBvdXRwdXQgdHVwbGVzIHVwIHRvIHRoZSBjdXJy ZW50CisgKiB3YXRlcm1hcmssIGFuZCB0aGVuIHdlJ2Qga2VlcCB0aGUgcmVtYWluaW5nIHR1 cGxlcyBmb3IgdGhlIG5leHQgcm91bmQuCisgKiBFaXRoZXIgd2UnZCBuZWVkIHRvIHRyYW5z ZmVyIHRoZW0gaW50byBhIHNlY29uZCB0dXBsZXNvcnQsIG9yIGFsbG93CisgKiAicmVvcGVu aW5nIiB0aGUgdHVwbGVzb3J0IGFuZCBhZGRpbmcgbW9yZSB0dXBsZXMuIEFuZCB0aGVuIG9u bHkgdGhlCisgKiBwYXJ0IHNpbmNlIHRoZSB3YXRlcm1hcmsgd291bGQgZ2V0IHNvcnRlZCAo cG9zc2libHkgdXNpbmcgYSBtZXJnZS1zb3J0CisgKiB3aXRoIHRoZSBhbHJlYWR5IHNvcnRl ZCBwYXJ0KS4KKyAqCisgKgorICogMikgVGhlIG90aGVyIHF1ZXN0aW9uIGlzIHdoYXQgdG8g ZG8gd2l0aCBOVUxMIHZhbHVlcyAtIGF0IHRoZSBtb21lbnQgd2UKKyAqIGp1c3QgcmVhZCB0 aGUgcmFuZ2VzLCBvdXRwdXQgdGhlIE5VTEwgdHVwbGVzIGFuZCB0aGF0J3MgaXQgLSB3ZSdy ZSBub3QKKyAqIHJldGFpbmluZyBhbnkgbm9uLU5VTEwgdHVwbGVzLCBzbyB0aGF0IHdlJ2xs IHJlYWQgdGhlIHJhbmdlcyBhZ2FpbiBpbgorICogdGhlIHNlY29uZCByYW5nZS4gVGhlIGxv Z2ljIGhlcmUgaXMgdGhhdCBlaXRoZXIgdGhlcmUgYXJlIHZlcnkgZmV3CisgKiBzdWNoIHJh bmdlcywgc28gaXQncyB3b24ndCBjb3N0IG11Y2ggdG8ganVzdCByZS1yZWFkIHRoZW0uIE9y IG1heWJlCisgKiB0aGVyZSBhcmUgdmVyeSBtYW55IHN1Y2ggcmFuZ2VzLCBhbmQgd2UnZCBk byBhIGxvdCBvZiBzcGlsbGluZyB0byB0aGUKKyAqIHR1cGxlc3RvcmUsIGFuZCBpdCdzIG5v dCBtdWNoIG1vcmUgZXhwZW5zaXZlIHRvIGp1c3QgcmUtcmVhZCB0aGUgc291cmNlCisgKiBk YXRhLiBUaGVyZSBhcmUgY291bnRlci1leGFtcGxlcywgdGhvdWdoIC0gZS5nLiwgdGhlcmUg bWlnaHQgYmUgbWFueQorICogaGFzX251bGxzIHJhbmdlcywgYnV0IHdpdGggdmVyeSBmZXcg bm9uLU5VTEwgdHVwbGVzLiBJbiB0aGlzIGNhc2UgaXQKKyAqIG1pZ2h0IGJlIGJldHRlciB0 byBhY3R1YWxseSBzcGlsbCB0aGUgdHVwbGVzIGluc3RlYWQgb2YgcmUtcmVhZGluZyBhbGwK KyAqIHRoZSByYW5nZXMuIE1heWJlIHRoaXMgaXMgc29tZXRoaW5nIHdlIGNhbiBkbyBhdCBy dW4tdGltZSwgb3IgbWF5YmUgd2UKKyAqIGNvdWxkIGVzdGltYXRlIHRoaXMgYXQgcGxhbm5p bmcgdGltZS4gV2UgZG8ga25vdyB0aGUgbnVsbF9mcmFjIGZvciB0aGUKKyAqIGNvbHVtbiwg c28gd2Uga25vdyB0aGUgbnVtYmVyIG9mIE5VTEwgcm93cy4gQW5kIHdlIGFsc28ga25vdyB0 aGUgbnVtYmVyCisgKiBvZiBhbGxfbnVsbHMgYW5kIGhhc19udWxscyByYW5nZXMuIFdlIGNh biBlc3RpbWF0ZSB0aGUgbnVtYmVyIG9mIHJvd3MKKyAqIHBlciByYW5nZSwgYW5kIHdlIGNh biBlc3RpbWF0ZSBob3cgbWFueSBub24tTlVMTCByb3dzIGFyZSBpbiB0aGUKKyAqIGhhc19u dWxscyByYW5nZXMgKHdlIGRvbid0IG5lZWQgdG8gcmUtcmVhZCBhbGwtbnVsbHMgcmFuZ2Vz KS4gVGhlcmUncworICogYWxzbyB0aGUgZmlsdGVyLCB3aGljaCBtYXkgcmVkdWNlIHRoZSBh bW91bnQgb2Ygcm93cyB0byBzdG9yZS4KKyAqCisgKiBTbyB3ZSdkIG5lZWQgdG8gY29tcGFy ZSB0d28gbWV0cmljcyBjYWxjdWxhdGVkIHJvdWdobHkgbGlrZSB0aGlzOgorICoKKyAqICAg Y29zdChyZS1yZWFkaW5nIGhhcy1udWxscyByYW5nZXMpCisgKiAgICAgID0gY29zdChyYW5k b21fcGFnZV9jb3N0ICogbl9oYXNfbnVsbHMgKyBzZXFfcGFnZV9jb3N0ICogcGFnZXNfcGVy X3JhbmdlKQorICoKKyAqICAgY29zdChzcGlsbGluZyBub24tTlVMTCByb3dzIGZyb20gaGFz LW51bGxzIHJhbmdlcykKKyAqICAgICAgPSBjb3N0KG51bXJvd3MgKiB3aWR0aCAvIEJMQ0tT WiAqIHNlcV9wYWdlX2Nvc3QgKiAyKQorICoKKyAqIHdoZXJlIG51bXJvd3MgaXMgdGhlIG51 bWJlciBvZiBub24tTlVMTCByb3dzIGluIGhhc19udWxsIHJhbmdlcywgd2hpY2gKKyAqIGNh biBiZSBjYWxjdWxhdGVkIGxpa2UgdGhpczoKKyAqCisgKiAgIC8vIGVzdGltYXRlZCBudW1i ZXIgb2Ygcm93cyBpbiBoYXMtbnVsbCByYW5nZXMKKyAqICAgcm93c19pbl9oYXNfbnVsbHMg PSAocmVsdHVwbGVzIC8gcmVscGFnZXMpICogcGFnZXNfcGVyX3JhbmdlICogbl9oYXNfbnVs bHMKKyAqCisgKiAgIC8vIG51bWJlciBvZiBOVUxMIHJvd3MgaW4gdGhlIGhhcy1udWxscyBy YW5nZXMKKyAqICAgbnVsbHNfaW5fcmFuZ2VzID0gcmVsdHVwbGVzICogbnVsbF9mcmFjIC0g bl9hbGxfbnVsbHMgKiAocmVsdHVwbGVzIC8gcmVscGFnZXMpCisgKgorICogICAvLyBudW1y b3dzIGlzIHRoZSBkaWZmZXJlbmNlLCBtdWx0aXBsaWVkIGJ5IHNlbGVjdGl2aXR5IG9mIHRo ZSBpbmRleAorICogICAvLyBmaWx0ZXIgY29uZGl0aW9uICh2YWx1ZSBiZXR3ZWVuIDAuMCBh bmQgMS4wKQorICogICBudW1yb3dzID0gKHJvd3NfaW5faGFzX251bGxzIC0gbnVsbHNfaW5f cmFuZ2VzKSAqIHNlbGVjdGl2aXR5CisgKgorICogVGhpcyBpZ25vcmVzIG5vbi1zdW1tYXJp emVkIHJhbmdlcywgYnV0IHRoZXJlIHNob3VsZCBiZSBvbmx5IHZlcnkgZmV3IG9mCisgKiB0 aG9zZSwgc28gaXQgc2hvdWxkIG5vdCBtYWtlIGEgaHVnZSBkaWZmZXJlbmNlLiBPdGhlcndp c2Ugd2UgY2FuIGRpdmlkZQorICogdGhlbSBiZXR3ZWVuIHJlZ3VsYXIsIGhhcy1udWxscyBh bmQgYWxsLW51bGxzIHBhZ2VzIHRvIGtlZXAgdGhlIHJhdGlvLgorICoKKyAqCisgKiAzKSBI b3cgbGFyZ2Ugc3RlcCB0byBtYWtlIHdoZW4gdXBkYXRpbmcgdGhlIHdhdGVybWFyaz8KKyAq CisgKiBXaGVuIHVwZGF0aW5nIHRoZSB3YXRlcm1hcmssIG9uZSBvcHRpb24gaXMgdG8gc2lt cGx5IHByb2NlZWQgdG8gdGhlIG5leHQKKyAqIGRpc3RpbmN0IG1pbnZhbCB2YWx1ZSwgd2hp Y2ggaXMgdGhlIHNtYWxsZXN0IHBvc3NpYmxlIHN0ZXAgd2UgY2FuIG1ha2UuCisgKiBUaGlz IG1heSBiZSBib3RoIGZpbmUgYW5kIHZlcnkgaW5lZmZpY2llbnQsIGRlcGVuZGluZyBvbiBo b3cgbWFueSByb3dzCisgKiBlbmQgdXAgaW4gdGhlIHR1cGxlc29ydCBhbmQgaG93IG1hbnkg cm93cyB3ZSBlbmQgdXAgc3BpbGxpbmcgKHBvc3NpYmx5CisgKiByZXBlYXRlZGx5IHRvIHRo ZSB0dXBsZXN0b3JlKS4KKyAqCisgKiBXaGVuIGhhdmluZyB0byBzb3J0IGxhcmdlIG51bWJl ciBvZiByb3dzLCBpdCdzIGluZWZmaWNpZW50IHRvIHJ1biBtYW55CisgKiB0aW55IHNvcnRz LCBldmVuIGlmIGl0IHByb2R1Y2VzIGNvcnJlY3QgcmVzdWx0LiBGb3IgZXhhbXBsZSB3aGVu IHNvcnRpbmcKKyAqIDFNIHJvd3MsIHdlIG1heSBzcGxpdCB0aGlzIGFzIGVpdGhlciAoYSkg MTAwMDAweCBzb3J0cyBvZiAxMCByb3dzLCBvcgorICogKGIpIDEwMDAgc29ydHMgb2YgMTAw MCByb3dzLiBUaGUgKGIpIG9wdGlvbiBpcyBhbG1vc3QgY2VydGFpbmx5IG1vcmUKKyAqIGVm ZmljaWVudC4gTWF5YmUgc29ydHMgb2YgMTBrIHJvd3Mgd291bGQgYmUgZXZlbiBiZXR0ZXIs IGlmIGl0IGZpdHMKKyAqIGludG8gd29ya19tZW0uCisgKgorICogVGhpcyBnZXRzIGJhY2sg dG8gaG93IGxhcmdlIHRoZSBwYWdlIHJhbmdlcyBhcmUsIGFuZCBpZi9ob3cgbXVjaCB0aGV5 CisgKiBvdmVybGFwLiBXaXRoIHRpbnkgcmFuZ2VzIChlLmcuIGEgc2luZ2xlLXBhZ2UgcmFu Z2VzKSwgYSBzaW5nbGUgcmFuZ2UKKyAqIGNhbiBvbmx5IGFkZCBhcyBtYW55IHJvd3MgYXMg d2UgY2FuIGZpdCBvbiBhIHNpbmdsZSBwYWdlLiBTbyB3ZSBuZWVkCisgKiBtb3JlIHJhbmdl cyBieSBkZWZhdWx0IC0gaG93IG1hbnkgd2F0ZXJtYXJrIHN0ZXBzIHRoYXQgaXMgZGVwZW5k cyBvbgorICogaG93IG1hbnkgZGlzdGluY3QgbWludmFsIHZhbHVlcyBhcmUgdGhlcmUgLi4u CisgKgorICogVGhlbiB0aGVyZSdzIG92ZXJsYXBzIC0gaWYgcmFuZ2VzIGRvIG5vdCBvdmVy bGFwLCB3ZSdyZSBkb25lIGFuZCB3ZSdsbAorICogYWRkIHRoZSB3aG9sZSByYW5nZSBiZWNh dXNlIHRoZSBuZXh0IHdhdGVybWFyayBpcyBhYm92ZSBtYXh2YWwuIEJ1dAorICogd2hlbiB0 aGUgcmFuZ2VzIG92ZXJsYXAsIHdlJ2xsIG9ubHkgYWRkIHRoZSBmaXJzdCBwYXJ0IChhc3N1 bWluZyB0aGUKKyAqIG1pbnZhbCBvZiB0aGUgbmV4dCByYW5nZSBpcyB0aGUgd2F0ZXJtYXJr KS4gQXNzdW1lIDEwIG92ZXJsYXBwaW5nCisgKiByYW5nZXMgLSBpbWFnaW5lIGZvciBleGFt cGxlIHJhbmdlcyBzaGlmdGVkIGJ5IDEwJSwgc28gc29tZXRoaW5nIGxpa2UKKyAqCisgKiAg IFswLDEwMF0gWzEwLDExMF0sIFsyMCwxMjBdLCBbMzAsIDEzMF0sIC4uLiwgWzkwLCAxOTBd CisgKgorICogSW4gdGhlIGZpcnN0IHN0ZXAgd2UgdXNlIHdhdGVybWFyaz0xMCBhbmQgbG9h ZCB0aGUgZmlyc3QgcmFuZ2UsIHdpdGgKKyAqIG1heWJlIDEwMDAgcm93cyBpbiB0b3RhbC4g QnV0IGFzc3VtaW5nIHVuaWZvcm0gZGlzdHJpYnV0aW9uLCBvbmx5IGFib3V0CisgKiAxMDAg cm93cyB3aWxsIGdvIGludG8gdGhlIHR1cGxlc29ydCwgdGhlIHJlbWFpbmluZyA5MDAgcm93 cyB3aWxsIGdvIGludG8KKyAqIHRoZSB0dXBsZXN0b3JlIChhc3N1bWluZyB1bmlmb3JtIGRp c3RyaWJ1dGlvbikuIFRoZW4gaW4gdGhlIHNlY29uZCBzdGVwCisgKiB3ZSBzb3J0IGFub3Ro ZXIgMTAwIHJvd3MgYW5kIHRoZSByZW1haW5pbmcgODAwIHJvd3Mgd2lsbCBiZSBtb3ZlZCBp bnRvCisgKiBhIG5ldyB0dXBsZXN0b3JlLiBBbmQgc28gb24gYW5kIHNvIG9uLgorICoKKyAq IFRoaXMgbWVhbnMgdGhhdCBpbmNyZW1lbnRpbmcgdGhlIHdhdGVybWFya3MgYnkgc2luZ2xl IHN0ZXBzIG1heSBiZQorICogcXVpdGUgaW5lZmZpY2llbnQsIGFuZCB3ZSBuZWVkIHRvIHJl ZmxlY3QgYm90aCB0aGUgcmFuZ2Ugc2l6ZSBhbmQKKyAqIGhvdyBtdWNoIHRoZSByYW5nZXMg b3ZlcmxhcC4KKyAqCisgKiBJbiBmYWN0LCBtYXliZSB3ZSBzaG91bGQgbm90IGRldGVybWlu ZSB0aGUgc3RlcCBhcyBudW1iZXIgb2YgbWludmFsCisgKiB2YWx1ZXMgdG8gc2tpcCwgYnV0 IGhvdyBtYW55IHJhbmdlcyB3b3VsZCB0aGF0IG1lYW4gcmVhZGluZy4gQmVjYXVzZQorICog aWYgd2UgaGF2ZSBhIG1pbnZhbCB3aXRoIG1hbnkgZHVwbGljYXRlcywgdGhhdCBtYXkgbG9h ZCBtYW55IHJvd3MuCisgKiBPciBldmVuIGJldHRlciwgd2UgY291bGQgbG9vayBhdCBob3cg bWFueSByb3dzIHdvdWxkIHRoYXQgbWVhbiBsb2FkaW5nCisgKiBpbnRvIHRoZSB0dXBsZXN0 b3JlIC0gaWYgd2UgdHJhY2sgUCh4PG1pbnZhbCkgZm9yIGVhY2ggcmFuZ2UgKGUuZy4gYnkK KyAqIGNhbGN1bGF0aW5nIGF2ZXJhZ2UgdmFsdWUgZHVyaW5nIEFOQUxZWkUsIG9yIHBlcmhh cHMgYnkgZXN0aW1hdGluZworICogaXQgZnJvbSBwZXItY29sdW1uIHN0YXRzKSwgdGhlbiB3 ZSBrbm93IHRoZSBpbmNyZW1lbnQgaXMgZ29pbmcgdG8gYmUKKyAqIGFib3V0CisgKgorICog ICAgIFAoeCA8IG1pbnZhbFtpXSkgLSBQKHggPCBtaW52YWxbaS0xXSkKKyAqCisgKiBhbmQg d2UgY2FuIHN0b3Agb25jZSB3ZSdkIGV4Y2VlZCB3b3JrX21lbSAod2l0aCBzb21lIHNsYWNr KS4gU2VlIGNvbW1lbnQKKyAqIGZvciBicmluX21pbm1heF9zdGF0cygpIGZvciBtb3JlIHRo b3VnaHRzLgorICoKKyAqCisgKiA0KSBMSU1JVC9PRkZTRVQgdnMuIGZ1bGwgc29ydAorICoK KyAqIFRoZXJlJ3Mgb25lIGNhc2Ugd2hlcmUgdmVyeSBzbWFsbCBzb3J0cyBtYXkgYmUgYWN0 dWFsbHkgb3B0aW1hbCwgYW5kCisgKiB0aGF0J3MgcXVlcmllcyB0aGF0IG5lZWQgdG8gcHJv Y2VzcyBvbmx5IHZlcnkgZmV3IHJvd3MgLSBzYXksIExJTUlUCisgKiBxdWVyaWVzIHdpdGgg dmVyeSBzbWFsbCBib3VuZC4KKyAqCisgKgorICogRklYTUUgaGFuZGxpbmcgb2Ygb3RoZXIg YnJpbiBvcGNsYXNzZXMgKG1pbm1heC1tdWx0aSkKKyAqCisgKiBGSVhNRSBpbXByb3ZlIGNv c3RpbmcKKyAqCisgKgorICogSW1wcm92ZW1lbnQgaWRlYXM6CisgKgorICogMSkgbXVsdGlw bGUgdHVwbGVzdG9yZXMgZm9yIG92ZXJsYXBwaW5nIHJhbmdlcworICoKKyAqIFdoZW4gdGhl cmUgYXJlIG1hbnkgb3ZlcmxhcHBpbmcgcmFuZ2VzIChzbyB0aGF0IG1heHZhbCA+IGN1cnJl bnQubWF4dmFsKSwKKyAqIHdlJ3JlIGxvYWRpbmcgYWxsIHRoZSAiZnV0dXJlIiB0dXBsZXMg aW50byBhIG5ldyB0dXBsZXN0b3JlLiBIb3dldmVyLCBpZgorICogdGhlcmUgYXJlIG11bHRp cGxlIHN1Y2ggcmFuZ2VzIChpbWFnaW5lIHJhbmdlcyAic2hpZnRpbmciIGJ5IDEwJSwgd2hp Y2gKKyAqIGdpdmVzIHVzIDkgbW9yZSByYW5nZXMpLCB3ZSBrbm93IGluIHRoZSBuZXh0IHJv dW5kIHdlJ2xsIG9ubHkgbmVlZCByb3dzCisgKiB1bnRpbCB0aGUgbmV4dCBtYXh2YWwuIFdl J2xsIG5vdCBzb3J0IHRoZXNlIHJvd3MsIGJ1dCB3ZSdsbCBzdGlsbCBzaHVmZmxlCisgKiB0 aGVtIGFyb3VuZCB1bnRpbCB3ZSBnZXQgdG8gdGhlIHByb3BlciByYW5nZSAoc28gYWJvdXQg MTB4IGVhY2ggcm93KS4KKyAqIE1heWJlIHdlIHNob3VsZCBwcmUtYWxsb2NhdGUgdGhlIHR1 cGxlc3RvcmVzIChvciBtYXliZSBldmVuIHR1cGxlc29ydHMpCisgKiBmb3IgZnV0dXJlIHJh bmdlcywgYW5kIHJvdXRlIHRoZSB0dXBsZXMgdG8gdGhlIGNvcnJlY3Qgb25lPyBNYXliZSB3 ZQorICogY291bGQgYmUgYSBiaXQgc21hcnRlciBhbmQgZGlzY2FyZCB0dXBsZXMgb25jZSB3 ZSBoYXZlIGVub3VnaCByb3dzIGZvcgorICogdGhlIHByZWNlZGluZyByYW5nZXMgKHNheSwg d2l0aCBMSU1JVCBxdWVyaWVzKS4gV2UnZCBhbHNvIG5lZWQgdG8gd29ycnkKKyAqIGFib3V0 IHdvcmtfbWVtLCB0aG91Z2ggLSB3ZSBjYW4ndCBqdXN0IHVzZSBtYW55IHR1cGxlc3RvcmVz LCBlYWNoIHdpdGgKKyAqIHdob2xlIHdvcmtfbWVtLiBTbyB3ZSdkIHByb2JhYmx5IHVzZSBl LmcuIHdvcmtfbWVtLzIgZm9yIHRoZSBuZXh0IG9uZSwKKyAqIGFuZCB0aGVuIC80LCAvOCBl dGMuIGZvciB0aGUgZm9sbG93aW5nIG9uZXMuIFRoYXQncyB3b3JrX21lbSBpbiB0b3RhbC4K KyAqIEFuZCB0aGVyZSdkIG5lZWQgdG8gYmUgc29tZSBsaW1pdCBvbiBudW1iZXIgb2YgdHVw bGVzdG9yZXMsIEkgZ3Vlc3MuCisgKgorICogMikgaGFuZGxpbmcgTlVMTCB2YWx1ZXMKKyAq CisgKiBXZSBuZWVkIHRvIGhhbmRsZSBOVUxMUyBGSVJTVCAvIE5VTExTIExBU1QgY2FzZXMu IFRoZSBxdWVzdGlvbiBpcyBob3cKKyAqIHRvIGRvIHRoYXQgLSB0aGUgZWFzaWVzdCB3YXkg aXMgdG8gc2ltcGx5IGRvIGEgc2VwYXJhdGUgc2NhbiBvZiByYW5nZXMKKyAqIHRoYXQgbWln aHQgY29udGFpbiBOVUxMIHZhbHVlcywgcHJvY2Vzc2luZyBqdXN0IHJvd3Mgd2l0aCBOVUxM cywgYW5kCisgKiBkaXNjYXJkaW5nIG90aGVyIHJvd3MuIEFuZCB0aGVuIHByb2Nlc3Mgbm9u LU5VTEwgdmFsdWVzIGFzIGN1cnJlbnRseS4KKyAqIFRoZSBOVUxMIHNjYW4gd291bGQgaGFw cGVuIGJlZm9yZS9hZnRlciB0aGlzIHJlZ3VsYXIgcGhhc2UuCisgKgorICogQnl0IG1heWJl IHdlIGNvdWxkIGJlIHNtYXJ0ZXIsIGFuZCBub3QgZG8gc2VwYXJhdGUgc2NhbnMuIFdoZW4g cmVhZGluZworICogYSBwYWdlLCB3ZSBtaWdodCBzdGFzaCB0aGUgdHVwbGUgaW4gYSB0dXBs ZXN0b3JlLCBzbyB0aGF0IHdlIGNhbiByZWFkCisgKiBpdCB0aGUgbmV4dCByb3VuZC4gT2J2 aW91c2x5LCB0aGlzIG1pZ2h0IGJlIGV4cGVuc2l2ZSBpZiB3ZSBuZWVkIHRvCisgKiBrZWVw IHRvbyBtYW55IHJvd3MsIHNvIHRoZSB0dXBsZXN0b3JlIHdvdWxkIGdyb3cgdG9vIGxhcmdl IC0gaW4gdGhhdAorICogY2FzZSBpdCBtaWdodCBiZSBiZXR0ZXIgdG8ganVzdCBkbyB0aGUg dHdvIHNjYW5zLgorICoKKyAqIDMpIHBhcmFsbGVsaXNtCisgKgorICogUHJlc3VtYWJseSB3 ZSBjb3VsZCBkbyBhIHBhcmFsbGVsIHZlcnNpb24gb2YgdGhpcy4gVGhlIGxlYWRlciBvciBm aXJzdAorICogd29ya2VyIHdvdWxkIHByZXBhcmUgdGhlIHJhbmdlIGluZm9ybWF0aW9uLCBh bmQgdGhlIHdvcmtlcnMgd291bGQgdGhlbgorICogZ3JhYiByYW5nZXMgKGluIGEga2luZGEg cm91bmQgcm9iaW4gbWFubmVyKSwgc29ydCB0aGVtIGluZGVwZW5kZW50bHksCisgKiBhbmQg dGhlbiB0aGUgcmVzdWx0cyB3b3VsZCBiZSBtZXJnZWQgYnkgR2F0aGVyIE1lcmdlLgorICoK KyAqIElERU5USUZJQ0FUSU9OCisgKgkgIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCcmlu U29ydC5jCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKy8qCisgKiBJTlRFUkZB Q0UgUk9VVElORVMKKyAqCQlFeGVjQnJpblNvcnQJCQlzY2FucyBhIHJlbGF0aW9uIHVzaW5n IGFuIGluZGV4CisgKgkJSW5kZXhOZXh0CQkJCXJldHJpZXZlIG5leHQgdHVwbGUgdXNpbmcg aW5kZXgKKyAqCQlFeGVjSW5pdEJyaW5Tb3J0CQljcmVhdGVzIGFuZCBpbml0aWFsaXplcyBz dGF0ZSBpbmZvLgorICoJCUV4ZWNSZVNjYW5CcmluU29ydAkJcmVzY2FucyB0aGUgaW5kZXhl ZCByZWxhdGlvbi4KKyAqCQlFeGVjRW5kQnJpblNvcnQJCQlyZWxlYXNlcyBhbGwgc3RvcmFn ZS4KKyAqCQlFeGVjQnJpblNvcnRNYXJrUG9zCQltYXJrcyBzY2FuIHBvc2l0aW9uLgorICoJ CUV4ZWNCcmluU29ydFJlc3RyUG9zCXJlc3RvcmVzIHNjYW4gcG9zaXRpb24uCisgKgkJRXhl Y0JyaW5Tb3J0RXN0aW1hdGUJZXN0aW1hdGVzIERTTSBzcGFjZSBuZWVkZWQgZm9yIHBhcmFs bGVsIGluZGV4IHNjYW4KKyAqCQlFeGVjQnJpblNvcnRJbml0aWFsaXplRFNNIGluaXRpYWxp emUgRFNNIGZvciBwYXJhbGxlbCBCcmluU29ydAorICoJCUV4ZWNCcmluU29ydFJlSW5pdGlh bGl6ZURTTSByZWluaXRpYWxpemUgRFNNIGZvciBmcmVzaCBzY2FuCisgKgkJRXhlY0JyaW5T b3J0SW5pdGlhbGl6ZVdvcmtlciBhdHRhY2ggdG8gRFNNIGluZm8gaW4gcGFyYWxsZWwgd29y a2VyCisgKi8KKyNpbmNsdWRlICJwb3N0Z3Jlcy5oIgorCisjaW5jbHVkZSAiYWNjZXNzL2Jy aW4uaCIKKyNpbmNsdWRlICJhY2Nlc3MvYnJpbl9pbnRlcm5hbC5oIgorI2luY2x1ZGUgImFj Y2Vzcy9uYnRyZWUuaCIKKyNpbmNsdWRlICJhY2Nlc3MvcmVsc2Nhbi5oIgorI2luY2x1ZGUg ImFjY2Vzcy90YWJsZS5oIgorI2luY2x1ZGUgImFjY2Vzcy90YWJsZWFtLmgiCisjaW5jbHVk ZSAiY2F0YWxvZy9pbmRleC5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfYW0uaCIKKyNpbmNs dWRlICJleGVjdXRvci9leGVjZGVidWcuaCIKKyNpbmNsdWRlICJleGVjdXRvci9ub2RlQnJp blNvcnQuaCIKKyNpbmNsdWRlICJsaWIvcGFpcmluZ2hlYXAuaCIKKyNpbmNsdWRlICJtaXNj YWRtaW4uaCIKKyNpbmNsdWRlICJub2Rlcy9ub2RlRnVuY3MuaCIKKyNpbmNsdWRlICJ1dGls cy9hcnJheS5oIgorI2luY2x1ZGUgInV0aWxzL2RhdHVtLmgiCisjaW5jbHVkZSAidXRpbHMv bHN5c2NhY2hlLmgiCisjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKKyNpbmNsdWRlICJ1 dGlscy9yZWwuaCIKKworCitzdGF0aWMgVHVwbGVUYWJsZVNsb3QgKkluZGV4TmV4dChCcmlu U29ydFN0YXRlICpub2RlKTsKK3N0YXRpYyBib29sIEluZGV4UmVjaGVjayhCcmluU29ydFN0 YXRlICpub2RlLCBUdXBsZVRhYmxlU2xvdCAqc2xvdCk7CitzdGF0aWMgdm9pZCBFeGVjSW5p dEJyaW5Tb3J0UmFuZ2VzKEJyaW5Tb3J0ICpub2RlLCBCcmluU29ydFN0YXRlICpwbGFuc3Rh dGUpOworCisjaWZkZWYgREVCVUdfQlJJTl9TT1JUCitib29sIGRlYnVnX2JyaW5fc29ydCA9 IGZhbHNlOworI2VuZGlmCisKKy8qIGRvIHZhcmlvdXMgY29uc2lzdGVuY3kgY2hlY2tzICov CitzdGF0aWMgdm9pZAorQXNzZXJ0Q2hlY2tSYW5nZXMoQnJpblNvcnRTdGF0ZSAqbm9kZSkK K3sKKyNpZmRlZiBVU0VfQVNTRVJUX0NIRUNLSU5HCisKKyNlbmRpZgorfQorCisvKgorICog YnJpbnNvcnRfc3RhcnRfdGlkc2NhbgorICoJCVN0YXJ0IHNjYW5uaW5nIHR1cGxlcyBmcm9t IGEgZ2l2ZW4gcGFnZSByYW5nZS4KKyAqCisgKiBXZSBvcGVuIGEgVElEIHJhbmdlIHNjYW4g Zm9yIHRoZSBnaXZlbiByYW5nZSwgYW5kIGluaXRpYWxpemUgdGhlIHR1cGxlc29ydC4KKyAq IE9wdGlvbmFsbHksIHdlIHVwZGF0ZSB0aGUgd2F0ZXJtYXJrICh3aXRoIGVpdGhlciBoaWdo L2xvdyB2YWx1ZSkuIFdlIG9ubHkKKyAqIG5lZWQgdG8gZG8gdGhpcyBmb3IgdGhlIG1haW4g cGFnZSByYW5nZSwgbm90IGZvciB0aGUgaW50ZXJzZWN0aW5nIHJhbmdlcy4KKyAqCisgKiBY WFggTWF5YmUgd2Ugc2hvdWxkIGluaXRpYWxpemUgdGhlIHRpZHNjYW4gb25seSBvbmNlLCBh bmQgdGhlbiBkbyByZXNjYW4KKyAqIGZvciB0aGUgZm9sbG93aW5nIHJhbmdlcz8gQW5kIHNp bWlsYXJseSBmb3IgdGhlIHR1cGxlc29ydD8KKyAqLworc3RhdGljIHZvaWQKK2JyaW5zb3J0 X3N0YXJ0X3RpZHNjYW4oQnJpblNvcnRTdGF0ZSAqbm9kZSkKK3sKKwlCcmluU29ydCAgICpw bGFuID0gKEJyaW5Tb3J0ICopIG5vZGUtPnNzLnBzLnBsYW47CisJRVN0YXRlCSAgICplc3Rh dGUgPSBub2RlLT5zcy5wcy5zdGF0ZTsKKwlCcmluUmFuZ2UgICpyYW5nZSA9IG5vZGUtPmJz X3JhbmdlOworCisJLyogVGhlcmUgbXVzdCBub3QgYmUgYW55IFRJRCBzY2FuIGluIHByb2dy ZXNzIHlldC4gKi8KKwlBc3NlcnQobm9kZS0+c3Muc3NfY3VycmVudFNjYW5EZXNjID09IE5V TEwpOworCisJLyogSW5pdGlhbGl6ZSB0aGUgVElEIHJhbmdlIHNjYW4sIGZvciB0aGUgcHJv dmlkZWQgYmxvY2sgcmFuZ2UuICovCisJaWYgKG5vZGUtPnNzLnNzX2N1cnJlbnRTY2FuRGVz YyA9PSBOVUxMKQorCXsKKwkJVGFibGVTY2FuRGVzYwkJdHNjYW5kZXNjOworCQlJdGVtUG9p bnRlckRhdGEJCW1pbnRpZCwKKwkJCQkJCQltYXh0aWQ7CisKKwkJSXRlbVBvaW50ZXJTZXRC bG9ja051bWJlcigmbWludGlkLCByYW5nZS0+Ymxrbm9fc3RhcnQpOworCQlJdGVtUG9pbnRl clNldE9mZnNldE51bWJlcigmbWludGlkLCAwKTsKKworCQlJdGVtUG9pbnRlclNldEJsb2Nr TnVtYmVyKCZtYXh0aWQsIHJhbmdlLT5ibGtub19lbmQpOworCQlJdGVtUG9pbnRlclNldE9m ZnNldE51bWJlcigmbWF4dGlkLCBNYXhIZWFwVHVwbGVzUGVyUGFnZSk7CisKKwkJZWxvZyhE RUJVRzEsICJsb2FkaW5nIHJhbmdlIGJsb2NrcyBbJXUsICV1XSIsCisJCQkgcmFuZ2UtPmJs a25vX3N0YXJ0LCByYW5nZS0+Ymxrbm9fZW5kKTsKKworCQl0c2NhbmRlc2MgPSB0YWJsZV9i ZWdpbnNjYW5fdGlkcmFuZ2Uobm9kZS0+c3Muc3NfY3VycmVudFJlbGF0aW9uLAorCQkJCQkJ CQkJCQkgZXN0YXRlLT5lc19zbmFwc2hvdCwKKwkJCQkJCQkJCQkJICZtaW50aWQsICZtYXh0 aWQpOworCQlub2RlLT5zcy5zc19jdXJyZW50U2NhbkRlc2MgPSB0c2NhbmRlc2M7CisJfQor CisJaWYgKG5vZGUtPmJzX3R1cGxlc29ydHN0YXRlID09IE5VTEwpCisJeworCQlUdXBsZURl c2MJdHVwRGVzYyA9IChub2RlLT5zcy5wcy5wc19SZXN1bHRUdXBsZURlc2MpOworCisJCW5v ZGUtPmJzX3R1cGxlc29ydHN0YXRlID0gdHVwbGVzb3J0X2JlZ2luX2hlYXAodHVwRGVzYywK KwkJCQkJCQkJCQkJCQlwbGFuLT5udW1Db2xzLAorCQkJCQkJCQkJCQkJCXBsYW4tPnNvcnRD b2xJZHgsCisJCQkJCQkJCQkJCQkJcGxhbi0+c29ydE9wZXJhdG9ycywKKwkJCQkJCQkJCQkJ CQlwbGFuLT5jb2xsYXRpb25zLAorCQkJCQkJCQkJCQkJCXBsYW4tPm51bGxzRmlyc3QsCisJ CQkJCQkJCQkJCQkJd29ya19tZW0sCisJCQkJCQkJCQkJCQkJTlVMTCwKKwkJCQkJCQkJCQkJ CQlUVVBMRVNPUlRfTk9ORSk7CisJfQorCisJaWYgKG5vZGUtPmJzX3R1cGxlc3RvcmUgPT0g TlVMTCkKKwl7CisJCW5vZGUtPmJzX3R1cGxlc3RvcmUgPSB0dXBsZXN0b3JlX2JlZ2luX2hl YXAoZmFsc2UsIGZhbHNlLCB3b3JrX21lbSk7CisJfQorfQorCisvKgorICogYnJpbnNvcnRf ZW5kX3RpZHNjYW4KKyAqCQlGaW5pc2ggdGhlIFRJRCByYW5nZSBzY2FuLgorICovCitzdGF0 aWMgdm9pZAorYnJpbnNvcnRfZW5kX3RpZHNjYW4oQnJpblNvcnRTdGF0ZSAqbm9kZSkKK3sK KwkvKiBnZXQgdGhlIGZpcnN0IHJhbmdlLCByZWFkIGFsbCB0dXBsZXMgdXNpbmcgYSB0aWQg cmFuZ2Ugc2NhbiAqLworCWlmIChub2RlLT5zcy5zc19jdXJyZW50U2NhbkRlc2MgIT0gTlVM TCkKKwl7CisJCXRhYmxlX2VuZHNjYW4obm9kZS0+c3Muc3NfY3VycmVudFNjYW5EZXNjKTsK KwkJbm9kZS0+c3Muc3NfY3VycmVudFNjYW5EZXNjID0gTlVMTDsKKwl9Cit9CisKKy8qCisg KiBicmluc29ydF91cGRhdGVfd2F0ZXJtYXJrCisgKgkJQWR2YW5jZSB0aGUgd2F0ZXJtYXJr IHRvIHRoZSBuZXh0IG1pbnZhbCAob3IgbWF4dmFsIGZvciBERVNDKS4KKyAqCisgKiBXZSBj b3VsZCBjb3VsZCBhY3R1YWxseSBhZHZhbmNlIHRoZSB3YXRlcm1hcmsgYnkgbXVsdGlwbGUg c3RlcHMgKG5vdCB0bworICogdGhlIGltbWVkaWF0ZWx5IGZvbGxvd2luZyBtaW52YWwsIGJ1 dCBhIGNvdXBsZSBtb3JlKSwgdG8gYWNjdW11bGF0ZSBtb3JlCisgKiByb3dzIGluIHRoZSB0 dXBsZXNvcnQuIFRoZSBudW1iZXIgb2Ygc3RlcHMgd2UgbWFrZSBjb3JyZWxhdGVzIHdpdGgg dGhlCisgKiBhbW91bnQgb2YgZGF0YSB3ZSBzb3J0IGluIGEgZ2l2ZW4gc3RlcCwgYnV0IHdl IGRvbid0IGtub3cgaW4gYWR2YW5jZQorICogaG93IG1hbnkgcm93cyAob3IgYnl0ZXMpIHdp bGwgdGhhdCBhY3R1YWxseSBiZS4gV2UgY291bGQgZG8gc29tZSBzaW1wbGUKKyAqIGhldXJp c3RpY3MgKG1lYXN1cmUgcGFzdCBzb3J0cyBhbmQgZXh0cmFwb2xhdGUpLgorICoKKyAqIFhY WCBXaXRoIGEgc2VwYXJhdGUgX3NldCBhbmQgX2VtcHR5IGZsYWdzLCB3ZSBkb24ndCByZWFs bHkgbmVlZCB0byBwYXNzCisgKiBhIHNlcGFyYXRlICJmaXJzdCIgcGFyYW1ldGVyIC0gInNl dD1mYWxzZSIgaGFzIHRoZSBzYW1lIG1lYW5pbmcuCisgKi8KK3N0YXRpYyB2b2lkCiticmlu c29ydF91cGRhdGVfd2F0ZXJtYXJrKEJyaW5Tb3J0U3RhdGUgKm5vZGUsIGJvb2wgYXNjKQor eworCWludAkJY21wOworCWJvb2wJZm91bmQgPSBmYWxzZTsKKworCXR1cGxlc29ydF9tYXJr cG9zKG5vZGUtPmJzX3NjYW4tPnJhbmdlcyk7CisKKwl3aGlsZSAodHVwbGVzb3J0X2dldHR1 cGxlc2xvdChub2RlLT5ic19zY2FuLT5yYW5nZXMsIHRydWUsIGZhbHNlLCBub2RlLT5ic19z Y2FuLT5zbG90LCBOVUxMKSkKKwl7CisJCWJvb2wJaXNudWxsOworCQlEYXR1bQl2YWx1ZTsK KwkJYm9vbAlhbGxfbnVsbHM7CisJCWJvb2wJbm90X3N1bW1hcml6ZWQ7CisKKwkJYWxsX251 bGxzID0gRGF0dW1HZXRCb29sKHNsb3RfZ2V0YXR0cihub2RlLT5ic19zY2FuLT5zbG90LCA0 LCAmaXNudWxsKSk7CisJCUFzc2VydCghaXNudWxsKTsKKworCQlub3Rfc3VtbWFyaXplZCA9 IERhdHVtR2V0Qm9vbChzbG90X2dldGF0dHIobm9kZS0+YnNfc2Nhbi0+c2xvdCwgNSwgJmlz bnVsbCkpOworCQlBc3NlcnQoIWlzbnVsbCk7CisKKwkJLyogd2UgaWdub3JlIHJhbmdlcyB0 aGF0IGFyZSBlaXRoZXIgYWxsX251bGxzIG9yIG5vdCBzdW1tYXJpemVkICovCisJCWlmIChh bGxfbnVsbHMgfHwgbm90X3N1bW1hcml6ZWQpCisJCQljb250aW51ZTsKKworCQkvKiB1c2Ug ZWl0aGVyIG1pbnZhbCBvciBtYXh2YWwsIGRlcGVuZGluZyBvbiB0aGUgQVNDIC8gREVTQyAq LworCQlpZiAoYXNjKQorCQkJdmFsdWUgPSBzbG90X2dldGF0dHIobm9kZS0+YnNfc2Nhbi0+ c2xvdCwgNiwgJmlzbnVsbCk7CisJCWVsc2UKKwkJCXZhbHVlID0gc2xvdF9nZXRhdHRyKG5v ZGUtPmJzX3NjYW4tPnNsb3QsIDcsICZpc251bGwpOworCisJCWlmICghbm9kZS0+YnNfd2F0 ZXJtYXJrX3NldCkKKwkJeworCQkJbm9kZS0+YnNfd2F0ZXJtYXJrX3NldCA9IHRydWU7CisJ CQlub2RlLT5ic193YXRlcm1hcmsgPSB2YWx1ZTsKKwkJCWNvbnRpbnVlOworCQl9CisKKwkJ Y21wID0gQXBwbHlTb3J0Q29tcGFyYXRvcihub2RlLT5ic193YXRlcm1hcmssIGZhbHNlLCB2 YWx1ZSwgZmFsc2UsCisJCQkJCQkJCSAgJm5vZGUtPmJzX3NvcnRzdXBwb3J0KTsKKworCQlp ZiAoY21wIDwgMCkKKwkJeworCQkJbm9kZS0+YnNfd2F0ZXJtYXJrX3NldCA9IHRydWU7CisJ CQlub2RlLT5ic193YXRlcm1hcmsgPSB2YWx1ZTsKKwkJCWZvdW5kID0gdHJ1ZTsKKwkJCWJy ZWFrOworCQl9CisJfQorCisJdHVwbGVzb3J0X3Jlc3RvcmVwb3Mobm9kZS0+YnNfc2Nhbi0+ cmFuZ2VzKTsKKworCW5vZGUtPmJzX3dhdGVybWFya19lbXB0eSA9ICghZm91bmQpOworfQor CisvKgorICogYnJpbnNvcnRfbG9hZF90dXBsZXMKKyAqCQlMb2FkIHR1cGxlcyBmcm9tIHRo ZSBUSUQgcmFuZ2Ugc2NhbiwgYWRkIHRoZW0gdG8gdHVwbGVzb3J0L3N0b3JlLgorICoKKyAq IFdoZW4gY2FsbGVkIGZvciB0aGUgImN1cnJlbnQiIHJhbmdlLCB3ZSBkb24ndCBuZWVkIHRv IGNoZWNrIHRoZSB3YXRlcm1hcmssCisgKiB3ZSBrbm93IHRoZSB0dXBsZSBnb2VzIGludG8g dGhlIHR1cGxlc29ydC4gU28gd2l0aCBjaGVja193YXRlcm1hcmsgd2UKKyAqIHNraXAgdGhl IGNvbXBhcmF0b3IgY2FsbCB0byBzYXZlIENQVSBjb3N0LgorICovCitzdGF0aWMgdm9pZAor YnJpbnNvcnRfbG9hZF90dXBsZXMoQnJpblNvcnRTdGF0ZSAqbm9kZSwgYm9vbCBjaGVja193 YXRlcm1hcmssIGJvb2wgbnVsbF9wcm9jZXNzaW5nKQoreworCUJyaW5Tb3J0CSAgICpwbGFu ID0gKEJyaW5Tb3J0ICopIG5vZGUtPnNzLnBzLnBsYW47CisJVGFibGVTY2FuRGVzYwlzY2Fu OworCUVTdGF0ZQkJICAgKmVzdGF0ZTsKKwlTY2FuRGlyZWN0aW9uCWRpcmVjdGlvbjsKKwlU dXBsZVRhYmxlU2xvdCAqc2xvdDsKKwlCcmluUmFuZ2UJICAgKnJhbmdlID0gbm9kZS0+YnNf cmFuZ2U7CisJUHJvamVjdGlvbkluZm8gKnByb2pJbmZvOworCisJZXN0YXRlID0gbm9kZS0+ c3MucHMuc3RhdGU7CisJZGlyZWN0aW9uID0gZXN0YXRlLT5lc19kaXJlY3Rpb247CisJcHJv akluZm8gPSBub2RlLT5ic19Qcm9qSW5mbzsKKworCXNsb3QgPSBub2RlLT5zcy5zc19TY2Fu VHVwbGVTbG90OworCisJQXNzZXJ0KG5vZGUtPmJzX3JhbmdlICE9IE5VTEwpOworCisJLyoK KwkgKiBJZiB3ZSdyZSBub3QgcHJvY2Vzc2lnbiBOVUxMUywgYW5kIHRoaXMgaXMgYWxsLW51 bGxzIHJhbmdlLCB3ZSBjYW4KKwkgKiBqdXN0IHNraXAgaXQgLSB3ZSB3b24ndCBmaW5kIGFu eSBub24tTlVMTCB0dXBsZXMgaW4gaXQuCisJICoKKwkgKiBYWFggU2hvdWxkbid0IGhhcHBl biwgdGhhbmtzIHRvIGxvZ2ljIGluIGJyaW5zb3J0X25leHRfcmFuZ2UoKS4KKwkgKi8KKwlp ZiAoIW51bGxfcHJvY2Vzc2luZyAmJiByYW5nZS0+YWxsX251bGxzKQorCQlyZXR1cm47CisK KwkvKgorCSAqIFNpbWlsYXJseSwgaWYgd2UncmUgcHJvY2Vzc2luZyBOVUxMcyBhbmQgdGhp cyByYW5nZSBkb2VzIG5vdCBoYXZlCisJICogaGFzX251bGxzIGZsYWcsIHdlIGNhbiBza2lw IGl0LgorCSAqCisJICogWFhYIFNob3VsZG4ndCBoYXBwZW4sIHRoYW5rcyB0byBsb2dpYyBp biBicmluc29ydF9uZXh0X3JhbmdlKCkuCisJICovCisJaWYgKG51bGxfcHJvY2Vzc2luZyAm JiAhKHJhbmdlLT5oYXNfbnVsbHMgfHwgcmFuZ2UtPm5vdF9zdW1tYXJpemVkIHx8IHJhbmdl LT5hbGxfbnVsbHMpKQorCQlyZXR1cm47CisKKwlicmluc29ydF9zdGFydF90aWRzY2FuKG5v ZGUpOworCisJc2NhbiA9IG5vZGUtPnNzLnNzX2N1cnJlbnRTY2FuRGVzYzsKKworCS8qCisJ ICogUmVhZCB0dXBsZXMsIGV2YWx1YXRlIHRoZSBmaWx0ZXIgKHNvIHRoYXQgd2UgZG9uJ3Qg a2VlcCB0dXBsZXMgb25seSB0bworCSAqIGRpc2NhcmQgdGhlbSBsYXRlciksIGFuZCBkZWNp ZGUgaWYgaXQgZ29lcyBpbnRvIHRoZSBjdXJyZW50IHJhbmdlCisJICogKHR1cGxlc29ydCkg b3Igb3ZlcmZsb3cgKHR1cGxlc3RvcmUpLgorCSAqLworCXdoaWxlICh0YWJsZV9zY2FuX2dl dG5leHRzbG90X3RpZHJhbmdlKHNjYW4sIGRpcmVjdGlvbiwgc2xvdCkpCisJeworCQlFeHBy Q29udGV4dCAqZWNvbnRleHQ7CisJCUV4cHJTdGF0ZSAgKnF1YWw7CisKKwkJLyoKKwkJICog RmV0Y2ggZGF0YSBmcm9tIG5vZGUKKwkJICovCisJCXF1YWwgPSBub2RlLT5ic19xdWFsOwor CQllY29udGV4dCA9IG5vZGUtPnNzLnBzLnBzX0V4cHJDb250ZXh0OworCisJCS8qCisJCSAq IHBsYWNlIHRoZSBjdXJyZW50IHR1cGxlIGludG8gdGhlIGV4cHIgY29udGV4dAorCQkgKi8K KwkJZWNvbnRleHQtPmVjeHRfc2NhbnR1cGxlID0gc2xvdDsKKworCQkvKgorCQkgKiBjaGVj ayB0aGF0IHRoZSBjdXJyZW50IHR1cGxlIHNhdGlzZmllcyB0aGUgcXVhbC1jbGF1c2UKKwkJ ICoKKwkJICogY2hlY2sgZm9yIG5vbi1udWxsIHF1YWwgaGVyZSB0byBhdm9pZCBhIGZ1bmN0 aW9uIGNhbGwgdG8gRXhlY1F1YWwoKQorCQkgKiB3aGVuIHRoZSBxdWFsIGlzIG51bGwgLi4u IHNhdmVzIG9ubHkgYSBmZXcgY3ljbGVzLCBidXQgdGhleSBhZGQgdXAKKwkJICogLi4uCisJ CSAqCisJCSAqIFhYWCBEb25lIGhlcmUsIGJlY2F1c2UgaW4gRXhlY1NjYW4gd2UnbGwgZ2V0 IGRpZmZlcmVudCBzbG90IHR5cGUKKwkJICogKG1pbmltYWwgdHVwbGUgdnMuIGJ1ZmZlcmVk IHR1cGxlKS4gU2NhbiBleHBlY3RzIHNsb3Qgd2hpbGUgcmVhZGluZworCQkgKiBmcm9tIHRo ZSB0YWJsZSAobGlrZSBoZXJlKSwgYnV0IHdlJ3JlIHN0YXNoaW5nIGl0IGludG8gYSB0dXBs ZXNvcnQuCisJCSAqCisJCSAqIFhYWCBNYXliZSB3ZSBjb3VsZCBlbGltaW5hdGUgbWFueSB0 dXBsZXMgYnkgbGV2ZXJhZ2luZyB0aGUgQlJJTgorCQkgKiByYW5nZSwgYnkgZXhlY3V0aW5n IHRoZSBjb25zaXN0ZW50IGZ1bmN0aW9uLiBCdXQgd2UgZG9uJ3QgaGF2ZQorCQkgKiB0aGUg cXVhbCBpbiBhcHByb3ByaWF0ZSBmb3JtYXQgYXQgdGhlIG1vbWVudCwgc28gd2UnZCBwcmVw cm9jZXNzCisJCSAqIHRoZSBrZXlzIHNpbWlsYXJseSB0byBicmluZ2V0Yml0bWFwKCkuIElu IHdoaWNoIGNhc2Ugd2Ugc2hvdWxkCisJCSAqIHByb2JhYmx5IGV2YWx1YXRlIHRoZSBzdHVm ZiB3aGlsZSBidWlsZGluZyB0aGUgcmFuZ2VzPyBBbHRob3VnaCwKKwkJICogaWYgdGhlICJj b25zaXN0ZW50IiBmdW5jdGlvbiBpcyBleHBlbnNpdmUsIGl0IG1pZ2h0IGJlIGNoZWFwZXIK KwkJICogdG8gZG8gdGhhdCBpbmNyZW1lbnRhbGx5LCBhcyB3ZSBuZWVkIHRoZSByYW5nZXMu IFdvdWxkIGJlIGEgd2luCisJCSAqIGZvciBMSU1JVCBxdWVyaWVzLCBmb3IgZXhhbXBsZS4K KwkJICoKKwkJICogWFhYIEhvd2V2ZXIsIG1heWJlIHdlIGNvdWxkIGFsc28gbGV2ZXJhZ2Ug b3RoZXIgYml0bWFwIGluZGV4ZXMsCisJCSAqIHBhcnRpY3VsYXJseSBmb3IgQlJJTiBpbmRl eGVzIGJlY2F1c2UgdGhhdCBtYWtlcyBpdCBzaW1wbGVyIHRvCisJCSAqIGVsaW1pbmF0ZSB0 aGUgcmFuZ2VzIGluY3JlbWVudGFsbHkgLSB3ZSBrbm93IHdoaWNoIHJhbmdlcyB0bworCQkg KiBsb2FkIGZyb20gdGhlIGluZGV4LCB3aGlsZSBmb3Igb3RoZXIgaW5kZXhlcyAoZS5nLiBi dHJlZSkgd2UKKwkJICogaGF2ZSB0byByZWFkIHRoZSB3aG9sZSBpbmRleCBhbmQgYnVpbGQg YSBiaXRtYXAgaW4gb3JkZXIgdG8gaGF2ZQorCQkgKiBhIGJpdG1hcCBmb3IgYW55IHJhbmdl LiBBbHRob3VnaCwgaWYgdGhlIGNvbmRpdGlvbiBpcyB2ZXJ5CisJCSAqIHNlbGVjdGl2ZSwg d2UgbWF5IG5lZWQgdG8gcmVhZCBvbmx5IGEgc21hbGwgZnJhY3Rpb24gb2YgdGhlCisJCSAq IGluZGV4LCBzbyBtYXliZSB0aGF0J3MgT0suCisJCSAqLworCQlpZiAocXVhbCA9PSBOVUxM IHx8IEV4ZWNRdWFsKHF1YWwsIGVjb250ZXh0KSkKKwkJeworCQkJaW50CQljbXAgPSAwOwkv KiBtYXR0ZXJzIGZvciBjaGVja193YXRlcm1hcms9ZmFsc2UgKi8KKwkJCURhdHVtCXZhbHVl OworCQkJYm9vbAlpc251bGw7CisJCQlUdXBsZVRhYmxlU2xvdCAqdG1wc2xvdDsKKworCQkJ aWYgKHByb2pJbmZvKQorCQkJCXRtcHNsb3QgPSBFeGVjUHJvamVjdChwcm9qSW5mbyk7CisJ CQllbHNlCisJCQkJdG1wc2xvdCA9IHNsb3Q7CisKKwkJCXZhbHVlID0gc2xvdF9nZXRhdHRy KHRtcHNsb3QsIHBsYW4tPnNvcnRDb2xJZHhbMF0sICZpc251bGwpOworCisJCQkvKgorCQkJ ICogSGFuZGxlIE5VTEwgdmFsdWVzIC0gc3Rhc2ggdGhlbSBpbnRvIHRoZSB0dXBsZXN0b3Jl LCBhbmQgdGhlbgorCQkJICogd2UnbGwgb3V0cHV0IHRoZW0gaW4gInByb2Nlc3MiIHN0YWdl LgorCQkJICoKKwkJCSAqIFhYWCBDYW4gd2UgYmUgYSBiaXQgc21hcnRlciBmb3IgTElNSVQg cXVlcmllcyBhbmQgc3RvcCByZWFkaW5nCisJCQkgKiByb3dzIG9uY2Ugd2UgZ2V0IHRoZSBu dW1iZXIgd2UgbmVlZCB0byBwcm9kdWNlPyBQcm9iYWJseSBub3QsCisJCQkgKiBiZWNhdXNl IHRoZSBvcmRlcmluZyBtYXkgcmVmZXJlbmNlIG90aGVyIGNvbHVtbnMgKHdoaWNoIHdlIG1h eQorCQkJICogc2F0aXNmeSB0aHJvdWdoIEluY3JlbWVudGFsU29ydCkuIEJ1dCBhbGwgTlVM TCBjb2x1bW5zIGFyZQorCQkJICogY29uc2lkZXJlZCBlcXVhbCwgc28gd2UgbmVlZCBhbGwg dGhlIHJvd3MgdG8gcHJvcGVybHkgY29tcGFyZQorCQkJICogdGhlIG90aGVyIGtleXMuCisJ CQkgKi8KKwkJCWlmIChudWxsX3Byb2Nlc3NpbmcpCisJCQl7CisJCQkJLyogU3Rhc2ggaXQg dG8gdGhlIHR1cGxlc3RvcmUgKHdoZW4gTlVMTCwgb3IgaWdub3JlCisJCQkJICogaXQgKHdo ZW4gbm90LU5VTEwpLiAqLworCQkJCWlmIChpc251bGwpCisJCQkJCXR1cGxlc3RvcmVfcHV0 dHVwbGVzbG90KG5vZGUtPmJzX3R1cGxlc3RvcmUsIHRtcHNsb3QpOworCisJCQkJLyogTlVM TCBvciBub3QsIHdlJ3JlIGRvbmUgKi8KKwkJCQljb250aW51ZTsKKwkJCX0KKworCQkJLyog d2UncmUgbm90IHByb2Nlc3NpbmcgTlVMTCB2YWx1ZXMsIHNvIGlnbm9yZSBOVUxMcyAqLwor CQkJaWYgKGlzbnVsbCkKKwkJCQljb250aW51ZTsKKworCQkJLyoKKwkJCSAqIE90aGVyd2lz ZSBjb21wYXJlIHRvIHdhdGVybWFyaywgYW5kIHN0YXNoIGl0IGVpdGhlciB0byB0aGUKKwkJ CSAqIHR1cGxlc29ydCBvciB0dXBsZXN0b3JlLgorCQkJICovCisJCQlpZiAoY2hlY2tfd2F0 ZXJtYXJrICYmIG5vZGUtPmJzX3dhdGVybWFya19zZXQgJiYgIW5vZGUtPmJzX3dhdGVybWFy a19lbXB0eSkKKwkJCQljbXAgPSBBcHBseVNvcnRDb21wYXJhdG9yKHZhbHVlLCBmYWxzZSwK KwkJCQkJCQkJCQkgIG5vZGUtPmJzX3dhdGVybWFyaywgZmFsc2UsCisJCQkJCQkJCQkJICAm bm9kZS0+YnNfc29ydHN1cHBvcnQpOworCisJCQlpZiAoY21wIDw9IDApCisJCQkJdHVwbGVz b3J0X3B1dHR1cGxlc2xvdChub2RlLT5ic190dXBsZXNvcnRzdGF0ZSwgdG1wc2xvdCk7CisJ CQllbHNlCisJCQl7CisJCQkJLyoKKwkJCQkgKiBYWFggV2UgY2FuIGJlIGEgYml0IHNtYXJ0 ZXIgZm9yIExJTUlUIHF1ZXJpZXMgLSBvbmNlIHdlCisJCQkJICoga25vdyB3ZSBoYXZlIG1v cmUgcm93cyBpbiB0aGUgdHVwbGVzb3J0IHRoYW4gd2UgbmVlZCB0bworCQkJCSAqIG91dHB1 dCwgd2UgY2FuIHN0b3Agc3BpbGxpbmcgLSB0aG9zZSByb3dzIGFyZSBub3QgZ29pbmcKKwkJ CQkgKiB0byBiZSBuZWVkZWQuIFdlIGNhbiBkaXNjYXJkIHRoZSB0dXBsZXNvcnQgKG5vIG5l ZWQgdG8KKwkJCQkgKiByZXNwaWxsKSBhbmQgc3RvcCBzcGlsbGluZy4KKwkJCQkgKi8KKwkJ CQl0dXBsZXN0b3JlX3B1dHR1cGxlc2xvdChub2RlLT5ic190dXBsZXN0b3JlLCB0bXBzbG90 KTsKKwkJCX0KKwkJfQorCisJCUV4ZWNDbGVhclR1cGxlKHNsb3QpOworCX0KKworCUV4ZWND bGVhclR1cGxlKHNsb3QpOworCisJYnJpbnNvcnRfZW5kX3RpZHNjYW4obm9kZSk7Cit9CisK Ky8qCisgKiBicmluc29ydF9sb2FkX3NwaWxsX3R1cGxlcworICoJCUxvYWQgdHVwbGVzIGZy b20gdGhlIHNwaWxsIHR1cGxlc3RvcmUsIGFuZCBlaXRoZXIgc3Rhc2ggdGhlbSBpbnRvCisg KgkJYSB0dXBsZXNvcnQgb3IgYSBuZXcgdHVwbGVzdG9yZS4KKyAqCisgKiBBZnRlciBwcm9j ZXNzaW5nIHRoZSBsYXN0IHJhbmdlLCB3ZSB3YW50IHRvIHByb2Nlc3MgYWxsIHJlbWFpbmlu ZyByYW5nZXMsCisgKiBzbyB3aXRoIGNoZWNrX3dhdGVybWFyaz1mYWxzZSB3ZSBza2lwIHRo ZSBjaGVjay4KKyAqLworc3RhdGljIHZvaWQKK2JyaW5zb3J0X2xvYWRfc3BpbGxfdHVwbGVz KEJyaW5Tb3J0U3RhdGUgKm5vZGUsIGJvb2wgY2hlY2tfd2F0ZXJtYXJrKQoreworCUJyaW5T b3J0ICAgKnBsYW4gPSAoQnJpblNvcnQgKikgbm9kZS0+c3MucHMucGxhbjsKKwlUdXBsZXN0 b3Jlc3RhdGUgKnR1cHN0b3JlOworCVR1cGxlVGFibGVTbG90ICpzbG90OworCVByb2plY3Rp b25JbmZvICpwcm9qSW5mbzsKKworCXByb2pJbmZvID0gbm9kZS0+YnNfUHJvakluZm87CisK KwlpZiAobm9kZS0+YnNfdHVwbGVzdG9yZSA9PSBOVUxMKQorCQlyZXR1cm47CisKKwkvKiBz dGFydCBzY2FubmluZyB0aGUgZXhpc3RpbmcgdHVwbGVzdG9yZSAoWFhYIG5lZWRlZD8pICov CisJdHVwbGVzdG9yZV9yZXNjYW4obm9kZS0+YnNfdHVwbGVzdG9yZSk7CisKKwkvKgorCSAq IENyZWF0ZSBhIG5ldyB0dXBsZXN0b3JlLCBmb3IgdHVwbGVzIHRoYXQgZXhjZWVkIHRoZSB3 YXRlcm1hcmsgYW5kIHNvCisJICogc2hvdWxkIG5vdCBiZSBpbmNsdWRlZCBpbiB0aGUgY3Vy cmVudCBzb3J0LgorCSAqLworCXR1cHN0b3JlID0gdHVwbGVzdG9yZV9iZWdpbl9oZWFwKGZh bHNlLCBmYWxzZSwgd29ya19tZW0pOworCisJLyoKKwkgKiBXZSBuZWVkIGEgc2xvdCBmb3Ig bWluaW1hbCB0dXBsZXMuIFRoZSBzY2FuIHNsb3QgdXNlcyBidWZmZXJlZCB0dXBsZXMsCisJ ICogc28gaXQnZCB0cmlnZ2VyIGFuIGVycm9yIGluIHRoZSBsb29wLgorCSAqLworCWlmIChw cm9qSW5mbykKKwkJc2xvdCA9IG5vZGUtPnNzLnBzLnBzX1Jlc3VsdFR1cGxlU2xvdDsKKwll bHNlCisJc2xvdCA9IE1ha2VTaW5nbGVUdXBsZVRhYmxlU2xvdChSZWxhdGlvbkdldERlc2Ny KG5vZGUtPnNzLnNzX2N1cnJlbnRSZWxhdGlvbiksCisJCQkJCQkJCQkmVFRTT3BzTWluaW1h bFR1cGxlKTsKKworCXdoaWxlICh0dXBsZXN0b3JlX2dldHR1cGxlc2xvdChub2RlLT5ic190 dXBsZXN0b3JlLCB0cnVlLCB0cnVlLCBzbG90KSkKKwl7CisJCWludAkJY21wID0gMDsJLyog bWF0dGVycyBmb3IgY2hlY2tfd2F0ZXJtYXJrPWZhbHNlICovCisJCWJvb2wJaXNudWxsOwor CQlEYXR1bQl2YWx1ZTsKKworCQl2YWx1ZSA9IHNsb3RfZ2V0YXR0cihzbG90LCBwbGFuLT5z b3J0Q29sSWR4WzBdLCAmaXNudWxsKTsKKworCQkvKiBXZSBzaG91bGRuJ3QgaGF2ZSBOVUxM IHZhbHVlcyBpbiB0aGUgc3BpbGwsIGF0IGxlYXN0IG5vdCBub3cuICovCisJCUFzc2VydCgh aXNudWxsKTsKKworCQlpZiAoY2hlY2tfd2F0ZXJtYXJrICYmIG5vZGUtPmJzX3dhdGVybWFy a19zZXQgJiYgIW5vZGUtPmJzX3dhdGVybWFya19lbXB0eSkKKwkJCWNtcCA9IEFwcGx5U29y dENvbXBhcmF0b3IodmFsdWUsIGZhbHNlLAorCQkJCQkJCQkJICBub2RlLT5ic193YXRlcm1h cmssIGZhbHNlLAorCQkJCQkJCQkJICAmbm9kZS0+YnNfc29ydHN1cHBvcnQpOworCisJCWlm IChjbXAgPD0gMCkKKwkJCXR1cGxlc29ydF9wdXR0dXBsZXNsb3Qobm9kZS0+YnNfdHVwbGVz b3J0c3RhdGUsIHNsb3QpOworCQllbHNlCisJCXsKKwkJCS8qCisJCQkgKiBYWFggV2UgY2Fu IGJlIGEgYml0IHNtYXJ0ZXIgZm9yIExJTUlUIHF1ZXJpZXMgLSBvbmNlIHdlCisJCQkgKiBr bm93IHdlIGhhdmUgbW9yZSByb3dzIGluIHRoZSB0dXBsZXNvcnQgdGhhbiB3ZSBuZWVkIHRv CisJCQkgKiBvdXRwdXQsIHdlIGNhbiBzdG9wIHNwaWxsaW5nIC0gdGhvc2Ugcm93cyBhcmUg bm90IGdvaW5nCisJCQkgKiB0byBiZSBuZWVkZWQuIFdlIGNhbiBkaXNjYXJkIHRoZSB0dXBs ZXNvcnQgKG5vIG5lZWQgdG8KKwkJCSAqIHJlc3BpbGwpIGFuZCBzdG9wIHNwaWxsaW5nLgor CQkJICovCisJCQl0dXBsZXN0b3JlX3B1dHR1cGxlc2xvdCh0dXBzdG9yZSwgc2xvdCk7CisJ CX0KKwl9CisKKwkvKgorCSAqIERpc2NhcmQgdGhlIGV4aXN0aW5nIHR1cGxlc3RvcmUgKHRo YXQgd2UganVzdCBwcm9jZXNzZWQpLCB1c2UgdGhlIG5ldworCSAqIG9uZSBpbnN0ZWFkLgor CSAqLworCXR1cGxlc3RvcmVfZW5kKG5vZGUtPmJzX3R1cGxlc3RvcmUpOworCW5vZGUtPmJz X3R1cGxlc3RvcmUgPSB0dXBzdG9yZTsKKworCWlmICghcHJvakluZm8pCisJCUV4ZWNEcm9w U2luZ2xlVHVwbGVUYWJsZVNsb3Qoc2xvdCk7Cit9CisKK3N0YXRpYyBib29sCiticmluc29y dF9uZXh0X3JhbmdlKEJyaW5Tb3J0U3RhdGUgKm5vZGUsIGJvb2wgYXNjKQoreworCS8qIEZJ WE1FIGZyZWUgdGhlIGN1cnJlbnQgYnNfcmFuZ2UsIGlmIGFueSAqLworCW5vZGUtPmJzX3Jh bmdlID0gTlVMTDsKKworCS8qCisJICogTWFyayB0aGUgcG9zaXRpb24sIHNvIHRoYXQgd2Ug Y2FuIHJlc3RvcmUgaXQgaW4gY2FzZSB3ZSByZWFjaCB0aGUKKwkgKiBjdXJyZW50IHdhdGVy bWFyay4KKwkgKi8KKwl0dXBsZXNvcnRfbWFya3Bvcyhub2RlLT5ic19zY2FuLT5yYW5nZXMp OworCisJLyoKKwkgKiBHZXQgdGhlIG5leHQgcmFuZ2UgYW5kIHJldHVybiBpdCwgdW5sZXNz IHdlIGNhbiBwcm92ZSBpdCdzIHRoZSBsYXN0CisJICogcmFuZ2UgdGhhdCBjYW4gcG9zc2li bHkgbWF0Y2ggdGhlIGN1cnJlbnQgY29uZGl0b24gKHRoYW5rcyB0byBob3cgd2UKKwkgKiBv cmRlciB0aGUgcmFuZ2VzKS4KKwkgKgorCSAqIEFsc28gc2tpcCByYW5nZXMgdGhhdCBjYW4n dCBwb3NzaWJseSBtYXRjaCAoZS5nLiBiZWNhdXNlIHdlIGFyZSBpbgorCSAqIE5VTEwgcHJv Y2Vzc2luZywgYW5kIHRoZSByYW5nZSBoYXMgbm8gTlVMTHMpLgorCSAqLworCXdoaWxlICh0 dXBsZXNvcnRfZ2V0dHVwbGVzbG90KG5vZGUtPmJzX3NjYW4tPnJhbmdlcywgdHJ1ZSwgZmFs c2UsIG5vZGUtPmJzX3NjYW4tPnNsb3QsIE5VTEwpKQorCXsKKwkJYm9vbAkJaXNudWxsOwor CQlEYXR1bQkJdmFsdWU7CisKKwkJQnJpblJhbmdlICAqcmFuZ2UgPSAoQnJpblJhbmdlICop IHBhbGxvYyhzaXplb2YoQnJpblJhbmdlKSk7CisKKwkJcmFuZ2UtPmJsa25vX3N0YXJ0ID0g c2xvdF9nZXRhdHRyKG5vZGUtPmJzX3NjYW4tPnNsb3QsIDEsICZpc251bGwpOworCQlyYW5n ZS0+Ymxrbm9fZW5kID0gc2xvdF9nZXRhdHRyKG5vZGUtPmJzX3NjYW4tPnNsb3QsIDIsICZp c251bGwpOworCQlyYW5nZS0+aGFzX251bGxzID0gc2xvdF9nZXRhdHRyKG5vZGUtPmJzX3Nj YW4tPnNsb3QsIDMsICZpc251bGwpOworCQlyYW5nZS0+YWxsX251bGxzID0gc2xvdF9nZXRh dHRyKG5vZGUtPmJzX3NjYW4tPnNsb3QsIDQsICZpc251bGwpOworCQlyYW5nZS0+bm90X3N1 bW1hcml6ZWQgPSBzbG90X2dldGF0dHIobm9kZS0+YnNfc2Nhbi0+c2xvdCwgNSwgJmlzbnVs bCk7CisJCXJhbmdlLT5taW5fdmFsdWUgPSBzbG90X2dldGF0dHIobm9kZS0+YnNfc2Nhbi0+ c2xvdCwgNiwgJmlzbnVsbCk7CisJCXJhbmdlLT5tYXhfdmFsdWUgPSBzbG90X2dldGF0dHIo bm9kZS0+YnNfc2Nhbi0+c2xvdCwgNywgJmlzbnVsbCk7CisKKwkJLyoKKwkJICogTm90LXN1 bW1hcml6ZWQgcmFuZ2VzIG1hdGNoIGlycmVzcGVjdGVkbHkgb2YgdGhlIHdhdGVybWFyayAo aWYKKwkJICogaXQncyBzZXQgYXQgYWxsKS4KKwkJICovCisJCWlmIChyYW5nZS0+bm90X3N1 bW1hcml6ZWQpCisJCXsKKwkJCW5vZGUtPmJzX3JhbmdlID0gcmFuZ2U7CisJCQlyZXR1cm4g dHJ1ZTsKKwkJfQorCisJCS8qCisJCSAqIFRoZSByYW5nZSBpcyBzdW1tYXJpemVkLCBidXQg bWF5YmUgdGhlIHdhdGVybWFyayBpcyBub3Q/IFRoYXQKKwkJICogd291bGQgbWVhbiB3ZSdy ZSBwcm9jZXNzaW5nIE5VTEwgdmFsdWVzLCBzbyB3ZSBza2lwIHJhbmdlcyB0aGF0CisJCSAq IGNhbid0IHBvc3NpYmx5IG1hdGNoIChpLmUuIHdpdGggYWxsX251bGxzPWhhc19udWxscz1m YWxzZSkuCisJCSAqLworCQlpZiAoIW5vZGUtPmJzX3dhdGVybWFya19zZXQpCisJCXsKKwkJ CWlmIChyYW5nZS0+YWxsX251bGxzIHx8IHJhbmdlLT5oYXNfbnVsbHMpCisJCQl7CisJCQkJ bm9kZS0+YnNfcmFuZ2UgPSByYW5nZTsKKwkJCQlyZXR1cm4gdHJ1ZTsKKwkJCX0KKworCQkJ LyogdXBkYXRlIHRoZSBwb3NpdGlvbiBhbmQgdHJ5IHRoZSBuZXh0IHJhbmdlICovCisJCQl0 dXBsZXNvcnRfbWFya3Bvcyhub2RlLT5ic19zY2FuLT5yYW5nZXMpOworCQkJcGZyZWUocmFu Z2UpOworCisJCQljb250aW51ZTsKKwkJfQorCisJCS8qCisJCSAqIFdhdGVybWFyayBpcyBz ZXQsIGJ1dCBpdCdzIGVtcHR5IC0gZXZlcnl0aGluZyBtYXRjaGVzIChleGNlcHQKKwkJICog Zm9yIE5VTEwtb25seSByYW5nZXMsIGJlY2F1c2Ugd2UncmUgZGVmaW5pdGVseSBub3QgcHJv Y2Vzc2luZworCQkgKiBOVUxMUywgYmVjYXVzZSB0aGVuIHdlIHdvdWxkbid0IGhhdmUgd2F0 ZXJtYXJrIHNldCkuCisJCSAqLworCQlpZiAobm9kZS0+YnNfd2F0ZXJtYXJrX2VtcHR5KQor CQl7CisJCQlub2RlLT5ic19yYW5nZSA9IHJhbmdlOworCQkJcmV0dXJuIHRydWU7CisJCX0K KworCQkvKgorCQkgKiBTbyBub3cgd2UgaGF2ZSBhIHN1bW1hcml6ZWQgcmFuZ2UsIGFuZCB3 ZSBrbm93IHRoZSB3YXRlcm1hcmsKKwkJICogaXMgc2V0IHRvbyAoc28gd2UncmUgbm90IHBy b2Nlc3NpbmcgTlVMTHMpLiBXZSBwbGFjZSB0aGUgcmFuZ2VzCisJCSAqIHdpdGggb25seSBu dWxscyBsYXN0LCBzbyBvbmNlIHdlIGhpdCBvbmUgd2UncmUgZG9uZS4KKwkJICovCisJCWlm IChyYW5nZS0+YWxsX251bGxzKQorCQl7CisJCQlwZnJlZShyYW5nZSk7CisJCQlyZXR1cm4g ZmFsc2U7CS8qIG5vIG1vcmUgbWF0Y2hpbmcgcmFuZ2VzICovCisJCX0KKworCQkvKgorCQkg KiBDb21wYXJlIHRoZSByYW5nZSB0byB0aGUgd2F0ZXJtYXJrLCB1c2luZyBlaXRoZXIgdGhl IG1pbnZhbCBvcgorCQkgKiBtYXh2YWwsIGRlcGVuZGluZyBvbiBBU0MvREVTQyBvcmRlcmlu Zy4gSWYgdGhlIHJhbmdlIHByZWNlZGVzIHRoZQorCQkgKiB3YXRlcm1hcmssIHJldHVybiBp dC4gT3RoZXJ3aXNlIGFib3J0LCBhbGwgdGhlIGZ1dHVyZSByYW5nZXMgYXJlCisJCSAqIGVp dGhlciBub3QgbWF0Y2hpbmcgdGhlIHdhdGVybWFyayAodGhhbmtzIHRvIG9yZGVyaW5nKSBv ciBjb250YWluCisJCSAqIG9ubHkgTlVMTCB2YWx1ZXMuCisJCSAqLworCisJCS8qIHVzZSBt aW52YWwgb3IgbWF4dmFsLCBkZXBlbmRpbmcgb24gQVNDIC8gREVTQyAqLworCQl2YWx1ZSA9 IChhc2MpID8gcmFuZ2UtPm1pbl92YWx1ZSA6IHJhbmdlLT5tYXhfdmFsdWU7CisKKwkJLyoK KwkJICogY29tcGFyZSBpdCB0byB0aGUgY3VycmVudCB3YXRlcm1hcmsgKGlmIHNldCkKKwkJ ICoKKwkJICogWFhYIFdlIGRvbid0IHVzZSAoLi4uIDw9IDApIGhlcmUsIGJlY2F1c2UgdGhl biB3ZSdkIGxvYWQgcmFuZ2VzCisJCSAqIHdpdGggdGhhdCBtaW52YWwgKGFuZCB0aGVyZSBt aWdodCBiZSBtdWx0aXBsZSksIGJ1dCBtb3N0IG9mIHRoZQorCQkgKiByb3dzIHdvdWxkIGdv IGludG8gdGhlIHR1cGxlc3RvcmUsIGJlY2F1c2Ugb25seSByb3dzIG1hdGNoaW5nIHRoZQor CQkgKiBtaW52YWwgZXhhY3RseSB3b3VsZCBiZSBsb2FkZWQgaW50byB0dXBsZXNvcnQuCisJ CSAqLworCQlpZiAoQXBwbHlTb3J0Q29tcGFyYXRvcih2YWx1ZSwgZmFsc2UsCisJCQkJCQkJ CSBub2RlLT5ic193YXRlcm1hcmssIGZhbHNlLAorCQkJCQkJCQkgJm5vZGUtPmJzX3NvcnRz dXBwb3J0KSA8IDApCisJCXsKKwkJCW5vZGUtPmJzX3JhbmdlID0gcmFuZ2U7CisJCQlyZXR1 cm4gdHJ1ZTsKKwkJfQorCisJCXBmcmVlKHJhbmdlKTsKKwkJYnJlYWs7CisJfQorCisJLyog bm90IGEgbWF0Y2hpbmcgcmFuZ2UsIHdlJ3JlIGRvbmUgKi8KKwl0dXBsZXNvcnRfcmVzdG9y ZXBvcyhub2RlLT5ic19zY2FuLT5yYW5nZXMpOworCisJcmV0dXJuIGZhbHNlOworfQorCitz dGF0aWMgYm9vbAorYnJpbnNvcnRfcmFuZ2Vfd2l0aF9udWxscyhCcmluU29ydFN0YXRlICpu b2RlKQoreworCUJyaW5SYW5nZSAqcmFuZ2UgPSBub2RlLT5ic19yYW5nZTsKKworCWlmIChy YW5nZS0+YWxsX251bGxzIHx8IHJhbmdlLT5oYXNfbnVsbHMgfHwgcmFuZ2UtPm5vdF9zdW1t YXJpemVkKQorCQlyZXR1cm4gdHJ1ZTsKKworCXJldHVybiBmYWxzZTsKK30KKworc3RhdGlj IHZvaWQKK2JyaW5zb3J0X3Jlc2NhbihCcmluU29ydFN0YXRlICpub2RlKQoreworCXR1cGxl c29ydF9yZXNjYW4obm9kZS0+YnNfc2Nhbi0+cmFuZ2VzKTsKK30KKworLyogLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorICoJCUluZGV4TmV4dAorICoKKyAqCQlSZXRyaWV2ZSBhIHR1cGxlIGZyb20gdGhlIEJy aW5Tb3J0IG5vZGUncyBjdXJyZW50UmVsYXRpb24KKyAqCQl1c2luZyB0aGUgaW5kZXggc3Bl Y2lmaWVkIGluIHRoZSBCcmluU29ydFN0YXRlIGluZm9ybWF0aW9uLgorICogLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorICovCitzdGF0aWMgVHVwbGVUYWJsZVNsb3QgKgorSW5kZXhOZXh0KEJyaW5Tb3J0U3Rh dGUgKm5vZGUpCit7CisJQnJpblNvcnQgICAqcGxhbiA9IChCcmluU29ydCAqKSBub2RlLT5z cy5wcy5wbGFuOworCUVTdGF0ZQkgICAqZXN0YXRlOworCVNjYW5EaXJlY3Rpb24gZGlyZWN0 aW9uOworCUluZGV4U2NhbkRlc2Mgc2NhbmRlc2M7CisJVHVwbGVUYWJsZVNsb3QgKnNsb3Q7 CisJYm9vbAkJbnVsbHNGaXJzdDsKKwlib29sCQlhc2M7CisKKwkvKgorCSAqIGV4dHJhY3Qg bmVjZXNzYXJ5IGluZm9ybWF0aW9uIGZyb20gaW5kZXggc2NhbiBub2RlCisJICovCisJZXN0 YXRlID0gbm9kZS0+c3MucHMuc3RhdGU7CisJZGlyZWN0aW9uID0gZXN0YXRlLT5lc19kaXJl Y3Rpb247CisKKwkvKiBmbGlwIGRpcmVjdGlvbiBpZiB0aGlzIGlzIGFuIG92ZXJhbGwgYmFj a3dhcmQgc2NhbiAqLworCS8qIFhYWCBGb3IgQlJJTiBpbmRleGVzIHRoaXMgaXMgYWx3YXlz IGZvcndhcmQgZGlyZWN0aW9uICovCisJLy8gaWYgKFNjYW5EaXJlY3Rpb25Jc0JhY2t3YXJk KCgoQnJpblNvcnQgKikgbm9kZS0+c3MucHMucGxhbiktPmluZGV4b3JkZXJkaXIpKQorCWlm IChmYWxzZSkKKwl7CisJCWlmIChTY2FuRGlyZWN0aW9uSXNGb3J3YXJkKGRpcmVjdGlvbikp CisJCQlkaXJlY3Rpb24gPSBCYWNrd2FyZFNjYW5EaXJlY3Rpb247CisJCWVsc2UgaWYgKFNj YW5EaXJlY3Rpb25Jc0JhY2t3YXJkKGRpcmVjdGlvbikpCisJCQlkaXJlY3Rpb24gPSBGb3J3 YXJkU2NhbkRpcmVjdGlvbjsKKwl9CisJc2NhbmRlc2MgPSBub2RlLT5pc3NfU2NhbkRlc2M7 CisJc2xvdCA9IG5vZGUtPnNzLnNzX1NjYW5UdXBsZVNsb3Q7CisKKwludWxsc0ZpcnN0ID0g cGxhbi0+bnVsbHNGaXJzdFswXTsKKwlhc2MgPSBTY2FuRGlyZWN0aW9uSXNGb3J3YXJkKHBs YW4tPmluZGV4b3JkZXJkaXIpOworCisJaWYgKHNjYW5kZXNjID09IE5VTEwpCisJeworCQkv KgorCQkgKiBXZSByZWFjaCBoZXJlIGlmIHRoZSBpbmRleCBzY2FuIGlzIG5vdCBwYXJhbGxl bCwgb3IgaWYgd2UncmUKKwkJICogc2VyaWFsbHkgZXhlY3V0aW5nIGFuIGluZGV4IHNjYW4g dGhhdCB3YXMgcGxhbm5lZCB0byBiZSBwYXJhbGxlbC4KKwkJICovCisJCXNjYW5kZXNjID0g aW5kZXhfYmVnaW5zY2FuKG5vZGUtPnNzLnNzX2N1cnJlbnRSZWxhdGlvbiwKKwkJCQkJCQkJ ICAgbm9kZS0+aXNzX1JlbGF0aW9uRGVzYywKKwkJCQkJCQkJICAgZXN0YXRlLT5lc19zbmFw c2hvdCwKKwkJCQkJCQkJICAgbm9kZS0+aXNzX051bVNjYW5LZXlzLAorCQkJCQkJCQkgICBu b2RlLT5pc3NfTnVtT3JkZXJCeUtleXMpOworCisJCW5vZGUtPmlzc19TY2FuRGVzYyA9IHNj YW5kZXNjOworCisJCS8qCisJCSAqIElmIG5vIHJ1bi10aW1lIGtleXMgdG8gY2FsY3VsYXRl IG9yIHRoZXkgYXJlIHJlYWR5LCBnbyBhaGVhZCBhbmQKKwkJICogcGFzcyB0aGUgc2Nhbmtl eXMgdG8gdGhlIGluZGV4IEFNLgorCQkgKi8KKwkJaWYgKG5vZGUtPmlzc19OdW1SdW50aW1l S2V5cyA9PSAwIHx8IG5vZGUtPmlzc19SdW50aW1lS2V5c1JlYWR5KQorCQkJaW5kZXhfcmVz Y2FuKHNjYW5kZXNjLAorCQkJCQkJIG5vZGUtPmlzc19TY2FuS2V5cywgbm9kZS0+aXNzX051 bVNjYW5LZXlzLAorCQkJCQkJIG5vZGUtPmlzc19PcmRlckJ5S2V5cywgbm9kZS0+aXNzX051 bU9yZGVyQnlLZXlzKTsKKworCQkvKgorCQkgKiBMb2FkIGluZm8gYWJvdXQgQlJJTiByYW5n ZXMsIHNvcnQgdGhlbSB0byBtYXRjaCB0aGUgZGVzaXJlZCBvcmRlcmluZy4KKwkJICovCisJ CUV4ZWNJbml0QnJpblNvcnRSYW5nZXMocGxhbiwgbm9kZSk7CisJCW5vZGUtPmJzX3BoYXNl ID0gQlJJTlNPUlRfU1RBUlQ7CisJfQorCisJLyoKKwkgKiBvaywgbm93IHRoYXQgd2UgaGF2 ZSB3aGF0IHdlIG5lZWQsIGZldGNoIHRoZSBuZXh0IHR1cGxlLgorCSAqLworCXdoaWxlIChu b2RlLT5ic19waGFzZSAhPSBCUklOU09SVF9GSU5JU0hFRCkKKwl7CisJCUNIRUNLX0ZPUl9J TlRFUlJVUFRTKCk7CisKKwkJZWxvZyhERUJVRzEsICJwaGFzZSA9ICVkIiwgbm9kZS0+YnNf cGhhc2UpOworCisJCUFzc2VydENoZWNrUmFuZ2VzKG5vZGUpOworCisJCXN3aXRjaCAobm9k ZS0+YnNfcGhhc2UpCisJCXsKKwkJCWNhc2UgQlJJTlNPUlRfU1RBUlQ6CisKKwkJCQllbG9n KERFQlVHMSwgInBoYXNlID0gU1RBUlQiKTsKKworCQkJCS8qCisJCQkJICogSWYgd2UgaGF2 ZSBOVUxMUyBGSVJTVCwgbW92ZSB0byB0aGF0IHN0YWdlLiBPdGhlcndpc2UKKwkJCQkgKiBz dGFydCBzY2FubmluZyByZWd1bGFyIHJhbmdlcy4KKwkJCQkgKi8KKwkJCQlpZiAobnVsbHNG aXJzdCkKKwkJCQkJbm9kZS0+YnNfcGhhc2UgPSBCUklOU09SVF9MT0FEX05VTExTOworCQkJ CWVsc2UKKwkJCQl7CisJCQkJCW5vZGUtPmJzX3BoYXNlID0gQlJJTlNPUlRfTE9BRF9SQU5H RTsKKworCQkJCQkvKiBzZXQgdGhlIGZpcnN0IHdhdGVybWFyayAqLworCQkJCQlicmluc29y dF91cGRhdGVfd2F0ZXJtYXJrKG5vZGUsIGFzYyk7CisJCQkJfQorCisJCQkJYnJlYWs7CisK KwkJCWNhc2UgQlJJTlNPUlRfTE9BRF9SQU5HRToKKwkJCQl7CisJCQkJCWVsb2coREVCVUcx LCAicGhhc2UgPSBMT0FEX1JBTkdFIik7CisKKwkJCQkJLyoKKwkJCQkJICogTG9hZCB0dXBs ZXMgbWF0Y2hpbmcgdGhlIG5ldyB3YXRlcm1hcmsgZnJvbSB0aGUgZXhpc3RpbmcKKwkJCQkJ ICogc3BpbGwgdHVwbGVzdG9yZS4gV2UgZG8gdGhpcyBiZWZvcmUgbG9hZGluZyB0dXBsZXMg ZnJvbQorCQkJCQkgKiB0aGUgbmV4dCBjaHVuayBvZiByYW5nZXMsIGJlY2F1c2UgdGhvc2Ug d2lsbCBhZGQgdHVwbGVzCisJCQkJCSAqIHRvIHRoZSBzcGlsbCwgYW5kIHdlJ2QgZW5kIHVw IHByb2Nlc3NpbmcgdGhvc2UgdHdpY2UuCisJCQkJCSAqLworCQkJCQlicmluc29ydF9sb2Fk X3NwaWxsX3R1cGxlcyhub2RlLCB0cnVlKTsKKworCQkJCQkvKgorCQkJCQkgKiBMb2FkIHR1 cGxlcyBmcm9tIHJhbmdlcywgdW50aWwgd2UgZmluZCBhIHJhbmdlIHRoYXQgaGFzCisJCQkJ CSAqIG1pbl92YWx1ZSA+PSB3YXRlcm1hcmsuCisJCQkJCSAqCisJCQkJCSAqIFhYWCBJbiBm YWN0LCB3ZSBhcmUgZ3VhcmFudGVlZCB0byBmaW5kIGFuIGV4YWN0IG1hdGNoCisJCQkJCSAq IGZvciB0aGUgd2F0ZXJtYXJrLCBiZWNhdXNlIG9mIGhvdyB3ZSBwaWNrIHRoZSB3YXRlcm1h cmsuCisJCQkJCSAqLworCQkJCQl3aGlsZSAoYnJpbnNvcnRfbmV4dF9yYW5nZShub2RlLCBh c2MpKQorCQkJCQkJYnJpbnNvcnRfbG9hZF90dXBsZXMobm9kZSwgdHJ1ZSwgZmFsc2UpOwor CisJCQkJCS8qCisJCQkJCSAqIElmIHdlIGhhdmUgbG9hZGVkIGFueSB0dXBsZXMgaW50byB0 aGUgdHVwbGVzb3J0LCB0cnkKKwkJCQkJICogc29ydGluZyBpdCBhbmQgbW92ZSB0byBwcm9k dWNpbmcgdGhlIHR1cGxlcy4KKwkJCQkJICoKKwkJCQkJICogWFhYIFRoZSByYW5nZSBtaWdo dCBoYXZlIG5vIHJvd3MgbWF0Y2hpbmcgdGhlIGN1cnJlbnQKKwkJCQkJICogd2F0ZXJtYXJr LCBpbiB3aGljaCBjYXNlIHRoZSB0dXBsZXNvcnQgaXMgZW1wdHkuCisJCQkJCSAqLworCQkJ CQlpZiAobm9kZS0+YnNfdHVwbGVzb3J0c3RhdGUpCisJCQkJCXsKKyNpZmRlZiBERUJVR19C UklOX1NPUlQKKwkJCQkJCXR1cGxlc29ydF9yZXNldF9zdGF0cyhub2RlLT5ic190dXBsZXNv cnRzdGF0ZSk7CisjZW5kaWYKKworCQkJCQkJdHVwbGVzb3J0X3BlcmZvcm1zb3J0KG5vZGUt PmJzX3R1cGxlc29ydHN0YXRlKTsKKworI2lmZGVmIERFQlVHX0JSSU5fU09SVAorCQkJCQkJ aWYgKGRlYnVnX2JyaW5fc29ydCkKKwkJCQkJCXsKKwkJCQkJCQlUdXBsZXNvcnRJbnN0cnVt ZW50YXRpb24gc3RhdHM7CisKKwkJCQkJCQltZW1zZXQoJnN0YXRzLCAwLCBzaXplb2YoVHVw bGVzb3J0SW5zdHJ1bWVudGF0aW9uKSk7CisJCQkJCQkJdHVwbGVzb3J0X2dldF9zdGF0cyhu b2RlLT5ic190dXBsZXNvcnRzdGF0ZSwgJnN0YXRzKTsKKworCQkJCQkJCXR1cGxlc29ydF9n ZXRfc3RhdHMobm9kZS0+YnNfdHVwbGVzb3J0c3RhdGUsICZzdGF0cyk7CisKKwkJCQkJCQll bG9nKFdBUk5JTkcsICJtZXRob2Q6ICVzICBzcGFjZTogJWxkIGtCICglcykiLAorCQkJCQkJ CQkgdHVwbGVzb3J0X21ldGhvZF9uYW1lKHN0YXRzLnNvcnRNZXRob2QpLAorCQkJCQkJCQkg c3RhdHMuc3BhY2VVc2VkLAorCQkJCQkJCQkgdHVwbGVzb3J0X3NwYWNlX3R5cGVfbmFtZShz dGF0cy5zcGFjZVR5cGUpKTsKKwkJCQkJCX0KKyNlbmRpZgorCQkJCQl9CisKKwkJCQkJbm9k ZS0+YnNfcGhhc2UgPSBCUklOU09SVF9QUk9DRVNTX1JBTkdFOworCQkJCQlicmVhazsKKwkJ CQl9CisKKwkJCWNhc2UgQlJJTlNPUlRfUFJPQ0VTU19SQU5HRToKKworCQkJCWVsb2coREVC VUcxLCAicGhhc2UgQlJJTlNPUlRfUFJPQ0VTU19SQU5HRSIpOworCisJCQkJc2xvdCA9IG5v ZGUtPnNzLnBzLnBzX1Jlc3VsdFR1cGxlU2xvdDsKKworCQkJCS8qIHJlYWQgdHVwbGVzIGZy b20gdGhlIHR1cGxlc29ydCByYW5nZSwgYW5kIG91dHB1dCB0aGVtICovCisJCQkJaWYgKG5v ZGUtPmJzX3R1cGxlc29ydHN0YXRlICE9IE5VTEwpCisJCQkJeworCQkJCQlpZiAodHVwbGVz b3J0X2dldHR1cGxlc2xvdChub2RlLT5ic190dXBsZXNvcnRzdGF0ZSwKKwkJCQkJCQkJCQlT Y2FuRGlyZWN0aW9uSXNGb3J3YXJkKGRpcmVjdGlvbiksCisJCQkJCQkJCQkJZmFsc2UsIHNs b3QsIE5VTEwpKQorCQkJCQkJcmV0dXJuIHNsb3Q7CisKKwkJCQkJLyogb25jZSB3ZSdyZSBk b25lIHdpdGggdGhlIHR1cGxlc29ydCwgcmVzZXQgaXQgKi8KKwkJCQkJdHVwbGVzb3J0X3Jl c2V0KG5vZGUtPmJzX3R1cGxlc29ydHN0YXRlKTsKKwkJCQl9CisKKwkJCQkvKgorCQkJCSAq IE5vdyB0aGF0IHdlIHByb2Nlc3NlZCB0dXBsZXMgZnJvbSB0aGUgbGFzdCByYW5nZSBiYXRj aCwKKwkJCQkgKiBzZWUgaWYgd2UgcmVhY2hlZCB0aGUgZW5kIG9mIGlmIHdlIHNob3VsZCB0 cnkgdXBkYXRpbmcKKwkJCQkgKiB0aGUgd2F0ZXJtYXJrIG9uY2UgYWdhaW4uIElmIHRoZSB3 YXRlcm1hcmsgaXMgbm90IHNldCwKKwkJCQkgKiB3ZSd2ZSBhbHJlYWR5IHByb2Nlc3NlZCB0 aGUgbGFzdCByYW5nZS4KKwkJCQkgKi8KKwkJCQlpZiAobm9kZS0+YnNfd2F0ZXJtYXJrX2Vt cHR5KQorCQkJCXsKKwkJCQkJaWYgKG51bGxzRmlyc3QpCisJCQkJCQlub2RlLT5ic19waGFz ZSA9IEJSSU5TT1JUX0ZJTklTSEVEOworCQkJCQllbHNlCisJCQkJCXsKKwkJCQkJCWJyaW5z b3J0X3Jlc2Nhbihub2RlKTsKKwkJCQkJCW5vZGUtPmJzX3BoYXNlID0gQlJJTlNPUlRfTE9B RF9OVUxMUzsKKwkJCQkJCW5vZGUtPmJzX3dhdGVybWFya19zZXQgPSBmYWxzZTsKKwkJCQkJ CW5vZGUtPmJzX3dhdGVybWFya19lbXB0eSA9IGZhbHNlOworCQkJCQl9CisJCQkJfQorCQkJ CWVsc2UKKwkJCQl7CisJCQkJCS8qIHVwZHRlIHRoZSB3YXRlcm1hcmsgYW5kIHRyeSByZWFk aW5nIG1vcmUgcmFuZ2VzICovCisJCQkJCW5vZGUtPmJzX3BoYXNlID0gQlJJTlNPUlRfTE9B RF9SQU5HRTsKKwkJCQkJYnJpbnNvcnRfdXBkYXRlX3dhdGVybWFyayhub2RlLCBhc2MpOwor CQkJCX0KKworCQkJCWJyZWFrOworCisJCQljYXNlIEJSSU5TT1JUX0xPQURfTlVMTFM6CisJ CQkJeworCQkJCQllbG9nKERFQlVHMSwgInBoYXNlID0gTE9BRF9OVUxMUyIpOworCisJCQkJ CS8qCisJCQkJCSAqIFRyeSBsb2FkaW5nIGFub3RoZXIgcmFuZ2UuIElmIHRoZXJlIGFyZSBu byBtb3JlIHJhbmdlcywKKwkJCQkJICogd2UncmUgZG9uZSBhbmQgd2UgbW92ZSBlaXRoZXIg dG8gbG9hZGluZyByZWd1bGFyIHJhbmdlcy4KKwkJCQkJICogT3RoZXJ3aXNlIGNoZWNrIGlm IHRoaXMgcmFuZ2UgY2FuIGNvbnRhaW4gTlVMTCB2YWx1ZXMuCisJCQkJCSAqIElmIHllcywg cHJvY2VzcyB0aGUgcmFuZ2UuIElmIG5vdCwgdHJ5IGxvYWRpbmcgYW5vdGhlcgorCQkJCQkg KiBvbmUgZnJvbSB0aGUgbGlzdC4KKwkJCQkJICovCisJCQkJCXdoaWxlICh0cnVlKQorCQkJ CQl7CisJCQkJCQkvKiBubyBtb3JlIHJhbmdlcyAtIHRlcm1pbmF0ZSBvciBsb2FkIHJlZ3Vs YXIgcmFuZ2VzICovCisJCQkJCQlpZiAoIWJyaW5zb3J0X25leHRfcmFuZ2Uobm9kZSwgYXNj KSkKKwkJCQkJCXsKKwkJCQkJCQlpZiAobnVsbHNGaXJzdCkKKwkJCQkJCQl7CisJCQkJCQkJ CWJyaW5zb3J0X3Jlc2Nhbihub2RlKTsKKwkJCQkJCQkJbm9kZS0+YnNfcGhhc2UgPSBCUklO U09SVF9MT0FEX1JBTkdFOworCQkJCQkJCQlicmluc29ydF91cGRhdGVfd2F0ZXJtYXJrKG5v ZGUsIGFzYyk7CisJCQkJCQkJfQorCQkJCQkJCWVsc2UKKwkJCQkJCQkJbm9kZS0+YnNfcGhh c2UgPSBCUklOU09SVF9GSU5JU0hFRDsKKworCQkJCQkJCWJyZWFrOworCQkJCQkJfQorCisJ CQkJCQkvKiBJZiB0aGlzIHJhbmdlIChtYXkpIGhhdmUgbnVsbHMsIHByb2NlcyB0aGVtICov CisJCQkJCQlpZiAoYnJpbnNvcnRfcmFuZ2Vfd2l0aF9udWxscyhub2RlKSkKKwkJCQkJCQli cmVhazsKKwkJCQkJfQorCisJCQkJCWlmIChub2RlLT5ic19yYW5nZSA9PSBOVUxMKQorCQkJ CQkJYnJlYWs7CisKKwkJCQkJLyoKKwkJCQkJICogVGhlcmUgc2hvdWxkIGJlIG5vdGhpbmcg bGVmdCBpbiB0aGUgdHVwbGVzdG9yZSwgYmVjYXVzZQorCQkJCQkgKiB3ZSBmbHVzaCB0aGF0 IGF0IHRoZSBlbmQgb2YgcHJvY2Vzc2luZyByZWd1bGFyIHR1cGxlcywKKwkJCQkJICogYW5k IHdlIGRvbid0IHJldGFpbiB0dXBsZXMgYmV0d2VlbiBOVUxMIHJhbmdlcy4KKwkJCQkJICov CisJCQkJCS8vIEFzc2VydChub2RlLT5ic190dXBsZXN0b3JlID09IE5VTEwpOworCisJCQkJ CS8qCisJCQkJCSAqIExvYWQgdGhlIG5leHQgdW5wcm9jZXNzZWQgLyBOVUxMIHJhbmdlLiBX ZSBkb24ndCBuZWVkIHRvCisJCQkJCSAqIGNoZWNrIHdhdGVybWFyayB3aGlsZSBwcm9jZXNz aW5nIE5VTExTLgorCQkJCQkgKi8KKwkJCQkJYnJpbnNvcnRfbG9hZF90dXBsZXMobm9kZSwg ZmFsc2UsIHRydWUpOworCisJCQkJCW5vZGUtPmJzX3BoYXNlID0gQlJJTlNPUlRfUFJPQ0VT U19OVUxMUzsKKwkJCQkJYnJlYWs7CisJCQkJfQorCisJCQkJYnJlYWs7CisKKwkJCWNhc2Ug QlJJTlNPUlRfUFJPQ0VTU19OVUxMUzoKKworCQkJCWVsb2coREVCVUcxLCAicGhhc2UgPSBM T0FEX05VTExTIik7CisKKwkJCQlzbG90ID0gbm9kZS0+c3MucHMucHNfUmVzdWx0VHVwbGVT bG90OworCisJCQkJQXNzZXJ0KG5vZGUtPmJzX3R1cGxlc3RvcmUgIT0gTlVMTCk7CisKKwkJ CQkvKiByZWFkIHR1cGxlcyBmcm9tIHRoZSB0dXBsZXNvcnQgcmFuZ2UsIGFuZCBvdXRwdXQg dGhlbSAqLworCQkJCWlmIChub2RlLT5ic190dXBsZXN0b3JlICE9IE5VTEwpCisJCQkJewor CisJCQkJCXdoaWxlICh0dXBsZXN0b3JlX2dldHR1cGxlc2xvdChub2RlLT5ic190dXBsZXN0 b3JlLCB0cnVlLCB0cnVlLCBzbG90KSkKKwkJCQkJCXJldHVybiBzbG90OworCisJCQkJCXR1 cGxlc3RvcmVfZW5kKG5vZGUtPmJzX3R1cGxlc3RvcmUpOworCQkJCQlub2RlLT5ic190dXBs ZXN0b3JlID0gTlVMTDsKKworCQkJCQlub2RlLT5ic19waGFzZSA9IEJSSU5TT1JUX0xPQURf TlVMTFM7CS8qIGxvYWQgbmV4dCByYW5nZSAqLworCQkJCX0KKworCQkJCWJyZWFrOworCisJ CQljYXNlIEJSSU5TT1JUX0ZJTklTSEVEOgorCQkJCWVsb2coRVJST1IsICJ1bmV4cGVjdGVk IEJyaW5Tb3J0IHBoYXNlOiBGSU5JU0hFRCIpOworCQkJCWJyZWFrOworCQl9CisJfQorCisJ LyoKKwkgKiBpZiB3ZSBnZXQgaGVyZSBpdCBtZWFucyB0aGUgaW5kZXggc2NhbiBmYWlsZWQg c28gd2UgYXJlIGF0IHRoZSBlbmQgb2YKKwkgKiB0aGUgc2Nhbi4uCisJICovCisJbm9kZS0+ aXNzX1JlYWNoZWRFbmQgPSB0cnVlOworCXJldHVybiBFeGVjQ2xlYXJUdXBsZShzbG90KTsK K30KKworLyoKKyAqIEluZGV4UmVjaGVjayAtLSBhY2Nlc3MgbWV0aG9kIHJvdXRpbmUgdG8g cmVjaGVjayBhIHR1cGxlIGluIEV2YWxQbGFuUXVhbAorICovCitzdGF0aWMgYm9vbAorSW5k ZXhSZWNoZWNrKEJyaW5Tb3J0U3RhdGUgKm5vZGUsIFR1cGxlVGFibGVTbG90ICpzbG90KQor eworCUV4cHJDb250ZXh0ICplY29udGV4dDsKKworCS8qCisJICogZXh0cmFjdCBuZWNlc3Nh cnkgaW5mb3JtYXRpb24gZnJvbSBpbmRleCBzY2FuIG5vZGUKKwkgKi8KKwllY29udGV4dCA9 IG5vZGUtPnNzLnBzLnBzX0V4cHJDb250ZXh0OworCisJLyogRG9lcyB0aGUgdHVwbGUgbWVl dCB0aGUgaW5kZXhxdWFsIGNvbmRpdGlvbj8gKi8KKwllY29udGV4dC0+ZWN4dF9zY2FudHVw bGUgPSBzbG90OworCXJldHVybiBFeGVjUXVhbEFuZFJlc2V0KG5vZGUtPmluZGV4cXVhbG9y aWcsIGVjb250ZXh0KTsKK30KKworCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgkJRXhlY0JyaW5Tb3J0 KG5vZGUpCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KK3N0YXRpYyBUdXBsZVRhYmxlU2xvdCAqCitF eGVjQnJpblNvcnQoUGxhblN0YXRlICpwc3RhdGUpCit7CisJQnJpblNvcnRTdGF0ZSAqbm9k ZSA9IGNhc3ROb2RlKEJyaW5Tb3J0U3RhdGUsIHBzdGF0ZSk7CisKKwkvKgorCSAqIElmIHdl IGhhdmUgcnVudGltZSBrZXlzIGFuZCB0aGV5J3ZlIG5vdCBhbHJlYWR5IGJlZW4gc2V0IHVw LCBkbyBpdCBub3cuCisJICovCisJaWYgKG5vZGUtPmlzc19OdW1SdW50aW1lS2V5cyAhPSAw ICYmICFub2RlLT5pc3NfUnVudGltZUtleXNSZWFkeSkKKwkJRXhlY1JlU2NhbigoUGxhblN0 YXRlICopIG5vZGUpOworCisJcmV0dXJuIEV4ZWNTY2FuKCZub2RlLT5zcywKKwkJCQkJKEV4 ZWNTY2FuQWNjZXNzTXRkKSBJbmRleE5leHQsCisJCQkJCShFeGVjU2NhblJlY2hlY2tNdGQp IEluZGV4UmVjaGVjayk7Cit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCQlFeGVjUmVTY2FuQnJp blNvcnQobm9kZSkKKyAqCisgKgkJUmVjYWxjdWxhdGVzIHRoZSB2YWx1ZXMgb2YgYW55IHNj YW4ga2V5cyB3aG9zZSB2YWx1ZSBkZXBlbmRzIG9uCisgKgkJaW5mb3JtYXRpb24ga25vd24g YXQgcnVudGltZSwgdGhlbiByZXNjYW5zIHRoZSBpbmRleGVkIHJlbGF0aW9uLgorICoKKyAq IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAqLwordm9pZAorRXhlY1JlU2NhbkJyaW5Tb3J0KEJyaW5Tb3J0U3Rh dGUgKm5vZGUpCit7CisJLyoKKwkgKiBJZiB3ZSBhcmUgZG9pbmcgcnVudGltZSBrZXkgY2Fs Y3VsYXRpb25zIChpZSwgYW55IG9mIHRoZSBpbmRleCBrZXkKKwkgKiB2YWx1ZXMgd2VyZW4n dCBzaW1wbGUgQ29uc3RzKSwgY29tcHV0ZSB0aGUgbmV3IGtleSB2YWx1ZXMuICBCdXQgZmly c3QsCisJICogcmVzZXQgdGhlIGNvbnRleHQgc28gd2UgZG9uJ3QgbGVhayBtZW1vcnkgYXMg ZWFjaCBvdXRlciB0dXBsZSBpcworCSAqIHNjYW5uZWQuICBOb3RlIHRoaXMgYXNzdW1lcyB0 aGF0IHdlIHdpbGwgcmVjYWxjdWxhdGUgKmFsbCogcnVudGltZSBrZXlzCisJICogb24gZWFj aCBjYWxsLgorCSAqLworCWlmIChub2RlLT5pc3NfTnVtUnVudGltZUtleXMgIT0gMCkKKwl7 CisJCUV4cHJDb250ZXh0ICplY29udGV4dCA9IG5vZGUtPmlzc19SdW50aW1lQ29udGV4dDsK KworCQlSZXNldEV4cHJDb250ZXh0KGVjb250ZXh0KTsKKwkJRXhlY0luZGV4RXZhbFJ1bnRp bWVLZXlzKGVjb250ZXh0LAorCQkJCQkJCQkgbm9kZS0+aXNzX1J1bnRpbWVLZXlzLAorCQkJ CQkJCQkgbm9kZS0+aXNzX051bVJ1bnRpbWVLZXlzKTsKKwl9CisJbm9kZS0+aXNzX1J1bnRp bWVLZXlzUmVhZHkgPSB0cnVlOworCisJLyogcmVzZXQgaW5kZXggc2NhbiAqLworCWlmIChu b2RlLT5pc3NfU2NhbkRlc2MpCisJCWluZGV4X3Jlc2Nhbihub2RlLT5pc3NfU2NhbkRlc2Ms CisJCQkJCSBub2RlLT5pc3NfU2NhbktleXMsIG5vZGUtPmlzc19OdW1TY2FuS2V5cywKKwkJ CQkJIG5vZGUtPmlzc19PcmRlckJ5S2V5cywgbm9kZS0+aXNzX051bU9yZGVyQnlLZXlzKTsK Kwlub2RlLT5pc3NfUmVhY2hlZEVuZCA9IGZhbHNlOworCisJRXhlY1NjYW5SZVNjYW4oJm5v ZGUtPnNzKTsKK30KKworCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgkJRXhlY0VuZEJyaW5Tb3J0Cisg KiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgKi8KK3ZvaWQKK0V4ZWNFbmRCcmluU29ydChCcmluU29ydFN0YXRl ICpub2RlKQoreworCVJlbGF0aW9uCWluZGV4UmVsYXRpb25EZXNjOworCUluZGV4U2NhbkRl c2MgSW5kZXhTY2FuRGVzYzsKKworCS8qCisJICogZXh0cmFjdCBpbmZvcm1hdGlvbiBmcm9t IHRoZSBub2RlCisJICovCisJaW5kZXhSZWxhdGlvbkRlc2MgPSBub2RlLT5pc3NfUmVsYXRp b25EZXNjOworCUluZGV4U2NhbkRlc2MgPSBub2RlLT5pc3NfU2NhbkRlc2M7CisKKwkvKgor CSAqIGNsZWFyIG91dCB0dXBsZSB0YWJsZSBzbG90cworCSAqLworCWlmIChub2RlLT5zcy5w cy5wc19SZXN1bHRUdXBsZVNsb3QpCisJCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnNzLnBzLnBz X1Jlc3VsdFR1cGxlU2xvdCk7CisJRXhlY0NsZWFyVHVwbGUobm9kZS0+c3Muc3NfU2NhblR1 cGxlU2xvdCk7CisKKwkvKgorCSAqIGNsb3NlIHRoZSBpbmRleCByZWxhdGlvbiAobm8tb3Ag aWYgd2UgZGlkbid0IG9wZW4gaXQpCisJICovCisJaWYgKEluZGV4U2NhbkRlc2MpCisJCWlu ZGV4X2VuZHNjYW4oSW5kZXhTY2FuRGVzYyk7CisJaWYgKGluZGV4UmVsYXRpb25EZXNjKQor CQlpbmRleF9jbG9zZShpbmRleFJlbGF0aW9uRGVzYywgTm9Mb2NrKTsKKworCWlmIChub2Rl LT5zcy5zc19jdXJyZW50U2NhbkRlc2MgIT0gTlVMTCkKKwkJdGFibGVfZW5kc2Nhbihub2Rl LT5zcy5zc19jdXJyZW50U2NhbkRlc2MpOworCisJaWYgKG5vZGUtPmJzX3R1cGxlc3RvcmUg IT0gTlVMTCkKKwkJdHVwbGVzdG9yZV9lbmQobm9kZS0+YnNfdHVwbGVzdG9yZSk7CisJbm9k ZS0+YnNfdHVwbGVzdG9yZSA9IE5VTEw7CisKKwlpZiAobm9kZS0+YnNfdHVwbGVzb3J0c3Rh dGUgIT0gTlVMTCkKKwkJdHVwbGVzb3J0X2VuZChub2RlLT5ic190dXBsZXNvcnRzdGF0ZSk7 CisJbm9kZS0+YnNfdHVwbGVzb3J0c3RhdGUgPSBOVUxMOworCisJaWYgKG5vZGUtPmJzX3Nj YW4tPnJhbmdlcyAhPSBOVUxMKQorCQl0dXBsZXNvcnRfZW5kKG5vZGUtPmJzX3NjYW4tPnJh bmdlcyk7CisJbm9kZS0+YnNfc2Nhbi0+cmFuZ2VzID0gTlVMTDsKK30KKworLyogLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorICoJCUV4ZWNCcmluU29ydE1hcmtQb3MKKyAqCisgKiBOb3RlOiB3ZSBhc3N1bWUg dGhhdCBubyBjYWxsZXIgYXR0ZW1wdHMgdG8gc2V0IGEgbWFyayBiZWZvcmUgaGF2aW5nIHJl YWQKKyAqIGF0IGxlYXN0IG9uZSB0dXBsZS4gIE90aGVyd2lzZSwgaXNzX1NjYW5EZXNjIG1p Z2h0IHN0aWxsIGJlIE5VTEwuCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KK3ZvaWQKK0V4ZWNCcmlu U29ydE1hcmtQb3MoQnJpblNvcnRTdGF0ZSAqbm9kZSkKK3sKKwlFU3RhdGUJICAgKmVzdGF0 ZSA9IG5vZGUtPnNzLnBzLnN0YXRlOworCUVQUVN0YXRlICAgKmVwcXN0YXRlID0gZXN0YXRl LT5lc19lcHFfYWN0aXZlOworCisJaWYgKGVwcXN0YXRlICE9IE5VTEwpCisJeworCQkvKgor CQkgKiBXZSBhcmUgaW5zaWRlIGFuIEV2YWxQbGFuUXVhbCByZWNoZWNrLiAgSWYgYSB0ZXN0 IHR1cGxlIGV4aXN0cyBmb3IKKwkJICogdGhpcyByZWxhdGlvbiwgdGhlbiB3ZSBzaG91bGRu J3QgYWNjZXNzIHRoZSBpbmRleCBhdCBhbGwuICBXZSB3b3VsZAorCQkgKiBpbnN0ZWFkIG5l ZWQgdG8gc2F2ZSwgYW5kIGxhdGVyIHJlc3RvcmUsIHRoZSBzdGF0ZSBvZiB0aGUKKwkJICog cmVsc3Vic19kb25lIGZsYWcsIHNvIHRoYXQgcmUtZmV0Y2hpbmcgdGhlIHRlc3QgdHVwbGUg aXMgcG9zc2libGUuCisJCSAqIEhvd2V2ZXIsIGdpdmVuIHRoZSBhc3N1bXB0aW9uIHRoYXQg bm8gY2FsbGVyIHNldHMgYSBtYXJrIGF0IHRoZQorCQkgKiBzdGFydCBvZiB0aGUgc2Nhbiwg d2UgY2FuIG9ubHkgZ2V0IGhlcmUgd2l0aCByZWxzdWJzX2RvbmVbaV0KKwkJICogYWxyZWFk eSBzZXQsIGFuZCBzbyBubyBzdGF0ZSBuZWVkIGJlIHNhdmVkLgorCQkgKi8KKwkJSW5kZXgJ CXNjYW5yZWxpZCA9ICgoU2NhbiAqKSBub2RlLT5zcy5wcy5wbGFuKS0+c2NhbnJlbGlkOwor CisJCUFzc2VydChzY2FucmVsaWQgPiAwKTsKKwkJaWYgKGVwcXN0YXRlLT5yZWxzdWJzX3Ns b3Rbc2NhbnJlbGlkIC0gMV0gIT0gTlVMTCB8fAorCQkJZXBxc3RhdGUtPnJlbHN1YnNfcm93 bWFya1tzY2FucmVsaWQgLSAxXSAhPSBOVUxMKQorCQl7CisJCQkvKiBWZXJpZnkgdGhlIGNs YWltIGFib3ZlICovCisJCQlpZiAoIWVwcXN0YXRlLT5yZWxzdWJzX2RvbmVbc2NhbnJlbGlk IC0gMV0pCisJCQkJZWxvZyhFUlJPUiwgInVuZXhwZWN0ZWQgRXhlY0JyaW5Tb3J0TWFya1Bv cyBjYWxsIGluIEVQUSByZWNoZWNrIik7CisJCQlyZXR1cm47CisJCX0KKwl9CisKKwlpbmRl eF9tYXJrcG9zKG5vZGUtPmlzc19TY2FuRGVzYyk7Cit9CisKKy8qIC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAq CQlFeGVjSW5kZXhSZXN0clBvcworICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCit2b2lkCitFeGVjQnJp blNvcnRSZXN0clBvcyhCcmluU29ydFN0YXRlICpub2RlKQoreworCUVTdGF0ZQkgICAqZXN0 YXRlID0gbm9kZS0+c3MucHMuc3RhdGU7CisJRVBRU3RhdGUgICAqZXBxc3RhdGUgPSBlc3Rh dGUtPmVzX2VwcV9hY3RpdmU7CisKKwlpZiAoZXN0YXRlLT5lc19lcHFfYWN0aXZlICE9IE5V TEwpCisJeworCQkvKiBTZWUgY29tbWVudHMgaW4gRXhlY0luZGV4TWFya1BvcyAqLworCQlJ bmRleAkJc2NhbnJlbGlkID0gKChTY2FuICopIG5vZGUtPnNzLnBzLnBsYW4pLT5zY2FucmVs aWQ7CisKKwkJQXNzZXJ0KHNjYW5yZWxpZCA+IDApOworCQlpZiAoZXBxc3RhdGUtPnJlbHN1 YnNfc2xvdFtzY2FucmVsaWQgLSAxXSAhPSBOVUxMIHx8CisJCQllcHFzdGF0ZS0+cmVsc3Vi c19yb3dtYXJrW3NjYW5yZWxpZCAtIDFdICE9IE5VTEwpCisJCXsKKwkJCS8qIFZlcmlmeSB0 aGUgY2xhaW0gYWJvdmUgKi8KKwkJCWlmICghZXBxc3RhdGUtPnJlbHN1YnNfZG9uZVtzY2Fu cmVsaWQgLSAxXSkKKwkJCQllbG9nKEVSUk9SLCAidW5leHBlY3RlZCBFeGVjQnJpblNvcnRS ZXN0clBvcyBjYWxsIGluIEVQUSByZWNoZWNrIik7CisJCQlyZXR1cm47CisJCX0KKwl9CisK KwlpbmRleF9yZXN0cnBvcyhub2RlLT5pc3NfU2NhbkRlc2MpOworfQorCisvKgorICogc29t ZXdoYXQgY3JpcHBsZWQgdmVyc29uIG9mIGJyaW5nZXRiaXRtYXAKKyAqCisgKiBYWFggV2Ug ZG9uJ3QgY2FsbCBjb25zaXN0ZW50IGZ1bmN0aW9uIChvciBhbnkgb3RoZXIgZnVuY3Rpb24p LCBzbyB1bmxpa2UKKyAqIGJyaW5nZXRiaXRtYXAgd2UgZG9uJ3Qgc2V0IGEgc2VwYXJhdGUg bWVtb3J5IGNvbnRleHQuIElmIHdlIGVuZCB1cCBmaWx0ZXJpbmcKKyAqIHRoZSByYW5nZXMg c29tZWhvdyAoZS5nLiBieSBXSEVSRSBjb25kaXRpb25zKSwgdGhpcyBtaWdodCBiZSBuZWNl c3NhcnkuCisgKgorICogWFhYIFNob3VsZCBiZSBwYXJ0IG9mIG9wY2xhc3MsIHRvIHNvbWV3 aGVyZSBpbiBicmluX21pbm1heC5jIGV0Yy4KKyAqLworc3RhdGljIHZvaWQKK0V4ZWNJbml0 QnJpblNvcnRSYW5nZXMoQnJpblNvcnQgKm5vZGUsIEJyaW5Tb3J0U3RhdGUgKnBsYW5zdGF0 ZSkKK3sKKwlJbmRleFNjYW5EZXNjCXNjYW4gPSBwbGFuc3RhdGUtPmlzc19TY2FuRGVzYzsK KwlSZWxhdGlvbglpbmRleFJlbCA9IHBsYW5zdGF0ZS0+aXNzX1JlbGF0aW9uRGVzYzsKKwlp bnQJCQlhdHRubzsKKwlGbWdySW5mbyAgICpyYW5nZXByb2M7CisJQnJpblJhbmdlU2NhbkRl c2MgKmJyc2NhbjsKKwlib29sCQlhc2M7CisJVGFyZ2V0RW50cnkgKnRsZTsKKwlpbnQJCQlq OworCUxpc3QJICAgKmluZGV4cHJzID0gUmVsYXRpb25HZXRJbmRleEV4cHJlc3Npb25zKGlu ZGV4UmVsKTsKKworCS8qIEJSSU4gU29ydCBvbmx5IGFsbG93cyBPUkRFUiBCWSB1c2luZyBh IHNpbmdsZSBjb2x1bW4gKi8KKwlBc3NlcnQobm9kZS0+bnVtQ29scyA9PSAxKTsKKworCS8q CisJICogRGV0ZXJtaW5lIGluZGV4IGF0dG51bSB3ZSdyZSBpbnRlcmVzdGVkIGluLiBzb3J0 Q29sSWR4IGlzIGFuIGluZGV4IGludG8KKwkgKiB0aGUgdGFyZ2V0IGxpc3QsIHNvIHdlIG5l ZWQgdG8gZ3JhYiB0aGUgZXhwcmVzc2lvbiBhbmQgdHJ5IHRvIG1hdGNoIGl0CisJICogdG8g dGhlIGluZGV4LiBUaGUgZXhwcmVzc2lvbiBtYXkgYmUgZWl0aGVyIHBsYWluIFZhciAoaW4g d2hpY2ggY2FzZSB3ZQorCSAqIG1hdGNoIGl0IHRvIGluZGtleXMgdmFsdWUpLCBvciBhbiBl eHByZXNzaW9uIChpbiB3aGljaCBjYXNlIHdlIG1hdGNoIGl0CisJICogdG8gaW5kZXhwcnMp LgorCSAqCisJICogWFhYIFdlJ3ZlIGFscmVhZHkgbWF0Y2hlZCB0aGUgc29ydCBrZXkgdG8g dGhlIGluZGV4LCBvdGhlcndpc2Ugd2Ugd291bGQKKwkgKiBub3QgZ2V0IGhlcmUuIFNvIG1h eWJlIHdlIGNvdWxkIGp1c3QgcmVtZW1iZXIgaXQsIHNvbWVob3c/IEFsc28sIHdlIG11c3QK KwkgKiBrZWVwIHRoZSBkZWNpc2lvbnMgbWFkZSBpbiB0aGVzZSB0d28gcGxhY2VzIGNvbnNp c3RlbnQgLSBpZiB3ZSBmYWlsIHRvCisJICogbWF0Y2ggYSBzb3J0IGtleSBoZXJlICh3aGlj aCB3ZSBtYXRjaGVkIGJlZm9yZSksIHdlIGhhdmUgYSBwcm9ibGVtLgorCSAqLworCXRsZSA9 IGxpc3RfbnRoKG5vZGUtPnNjYW4ucGxhbi50YXJnZXRsaXN0LCBub2RlLT5zb3J0Q29sSWR4 WzBdIC0gMSk7CisKKwkvKiBmaW5kIHRoZSBpbmRleCBrZXkgbWF0Y2hpbmcgdGhlIGV4cHJl c3Npb24gZnJvbSB0aGUgdGFyZ2V0IGVudHJ5ICovCisJaiA9IDA7CisJYXR0bm8gPSAwOwor CWZvciAoaW50IGkgPSAwOyBpIDwgaW5kZXhSZWwtPnJkX2luZGV4LT5pbmRuYXR0czsgaSsr KQorCXsKKwkJQXR0ck51bWJlciBpbmRrZXkgPSBpbmRleFJlbC0+cmRfaW5kZXgtPmluZGtl eS52YWx1ZXNbaV07CisKKwkJaWYgKEF0dHJpYnV0ZU51bWJlcklzVmFsaWQoaW5ka2V5KSkK KwkJeworCQkJVmFyICp2YXIgPSAoVmFyICopIHRsZS0+ZXhwcjsKKworCQkJaWYgKCFJc0Eo dGxlLT5leHByLCBWYXIpKQorCQkJCWNvbnRpbnVlOworCisJCQlpZiAodmFyLT52YXJhdHRu byA9PSBpbmRrZXkpCisJCQl7CisJCQkJYXR0bm8gPSAoaSArIDEpOworCQkJCWJyZWFrOwor CQkJfQorCQl9CisJCWVsc2UKKwkJeworCQkJTm9kZSAqZXhwciA9IChOb2RlICopIGxpc3Rf bnRoKGluZGV4cHJzLCBqKTsKKworCQkJaWYgKGVxdWFsKGV4cHIsIHRsZS0+ZXhwcikpCisJ CQl7CisJCQkJYXR0bm8gPSAoaSArIDEpOworCQkJCWJyZWFrOworCQkJfQorCisJCQlqKys7 CisJCX0KKwl9CisKKwkvKgorCSAqIE1ha2Ugc3VyZSB3ZSBtYXRjaGVkIHRoZSBzb3J0IGtl eSAtIGlmIG5vdCwgd2Ugc2hvdWxkIG5vdCBoYXZlIGdvdAorCSAqIHRvIHRoaXMgcGxhY2Ug YXQgYWxsICh0cnkgc29ydGluZyB1c2luZyB0aGlzIGluZGV4KS4KKwkgKi8KKwlBc3NlcnQo YXR0bm8gPiAwKTsKKworCS8qCisJICogZ2V0IHByb2NlZHVyZSB0byBnZW5lcmF0ZSBzb3J0 IHJhbmdlcworCSAqCisJICogRklYTUUgd2UgY2FuJ3QgcmVseSBvbiBhIHBhcnRpY3VsYXIg cHJvY251bSB0byBpZGVudGlmeSB3aGljaCBvcGNsYXNzCisJICogYWxsb3dzIGJ1aWxkaW5n IHNvcnQgcmFuZ2VzLCBiZWNhdXNlIHRoZSBvcHRpbmFsIHByb2NudW1zIGFyZSBub3QKKwkg KiB1bmlxdWUgKGUuZy4gaW5jbHVzaW9uX29wcyBoYXZlIDEyIHRvbykuIFNvIHdlIHByb2Jh Ymx5IG5lZWQgYSBmbGFnCisJICogZm9yIHRoZSBvcGNsYXNzLgorCSAqLworCXJhbmdlcHJv YyA9IGluZGV4X2dldHByb2NpbmZvKGluZGV4UmVsLCBhdHRubywgQlJJTl9QUk9DTlVNX1JB TkdFUyk7CisKKwkvKgorCSAqIFNob3VsZCBub3QgZ2V0IGhlcmUgd2l0aG91dCBhIHByb2Ms IHRoYW5rcyB0byB0aGUgY2hlY2sgYmVmb3JlCisJICogYnVpbGRpbmcgdGhlIEJyaW5Tb3J0 IHBhdGguCisJICovCisJQXNzZXJ0KE9pZElzVmFsaWQocmFuZ2Vwcm9jLT5mbl9vaWQpKTsK KworCW1lbXNldCgmcGxhbnN0YXRlLT5ic19zb3J0c3VwcG9ydCwgMCwgc2l6ZW9mKFNvcnRT dXBwb3J0RGF0YSkpOworCisJcGxhbnN0YXRlLT5ic19zb3J0c3VwcG9ydC5zc3VwX2NvbGxh dGlvbiA9IG5vZGUtPmNvbGxhdGlvbnNbMF07CisJcGxhbnN0YXRlLT5ic19zb3J0c3VwcG9y dC5zc3VwX2N4dCA9IEN1cnJlbnRNZW1vcnlDb250ZXh0OyAvLyBGSVhNRQorCisJUHJlcGFy ZVNvcnRTdXBwb3J0RnJvbU9yZGVyaW5nT3Aobm9kZS0+c29ydE9wZXJhdG9yc1swXSwgJnBs YW5zdGF0ZS0+YnNfc29ydHN1cHBvcnQpOworCisJLyoKKwkgKiBEZXRlcm1pbmUgaWYgdGhp cyBBU0Mgb3IgREVTQyBzb3J0LCBzbyB0aGF0IHdlIGNhbiByZXF1ZXN0IHRoZQorCSAqIHJh bmdlcyBpbiB0aGUgYXBwcm9wcmlhdGUgb3JkZXIgKG9yZGVyZWQgZWl0aGVyIGJ5IG1pbnZh bCBmb3IKKwkgKiBBU0MsIG9yIGJ5IG1heHZhbCBmb3IgREVTQykuCisJICovCisJYXNjID0g U2NhbkRpcmVjdGlvbklzRm9yd2FyZChub2RlLT5pbmRleG9yZGVyZGlyKTsKKworCS8qCisJ ICogQXNrIHRoZSBvcGNsYXNzIHRvIHByb2R1Y2UgcmFuZ2VzIGluIGFwcHJvcHJpYXRlIG9y ZGVyaW5nLgorCSAqCisJICogWFhYIFBhc3MgaW5mbyBhYm91dCBBU0MvREVTQywgTlVMTFMg RklSU1QvTEFTVC4KKwkgKi8KKwlicnNjYW4gPSAoQnJpblJhbmdlU2NhbkRlc2MgKikgRGF0 dW1HZXRQb2ludGVyKEZ1bmN0aW9uQ2FsbDNDb2xsKHJhbmdlcHJvYywKKwkJCQkJCQkJCQkJ bm9kZS0+Y29sbGF0aW9uc1swXSwKKwkJCQkJCQkJCQkJUG9pbnRlckdldERhdHVtKHNjYW4p LAorCQkJCQkJCQkJCQlJbnQxNkdldERhdHVtKGF0dG5vKSwKKwkJCQkJCQkJCQkJQm9vbEdl dERhdHVtKGFzYykpKTsKKworCS8qIGFsbG9jYXRlIGZvciBzcGFjZSwgYW5kIGFsc28gZm9y IHRoZSBhbHRlcm5hdGl2ZSBvcmRlcmluZyAqLworCXBsYW5zdGF0ZS0+YnNfc2NhbiA9IGJy c2NhbjsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoJCUV4ZWNJbml0QnJpblNvcnQKKyAqCisg KgkJSW5pdGlhbGl6ZXMgdGhlIGluZGV4IHNjYW4ncyBzdGF0ZSBpbmZvcm1hdGlvbiwgY3Jl YXRlcworICoJCXNjYW4ga2V5cywgYW5kIG9wZW5zIHRoZSBiYXNlIGFuZCBpbmRleCByZWxh dGlvbnMuCisgKgorICoJCU5vdGU6IGluZGV4IHNjYW5zIGhhdmUgMiBzZXRzIG9mIHN0YXRl IGluZm9ybWF0aW9uIGJlY2F1c2UKKyAqCQkJICB3ZSBoYXZlIHRvIGtlZXAgdHJhY2sgb2Yg dGhlIGJhc2UgcmVsYXRpb24gYW5kIHRoZQorICoJCQkgIGluZGV4IHJlbGF0aW9uLgorICog LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorICovCitCcmluU29ydFN0YXRlICoKK0V4ZWNJbml0QnJpblNvcnQoQnJp blNvcnQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQoreworCUJyaW5Tb3J0 U3RhdGUgKmluZGV4c3RhdGU7CisJUmVsYXRpb24JY3VycmVudFJlbGF0aW9uOworCUxPQ0tN T0RFCWxvY2ttb2RlOworCisJLyoKKwkgKiBjcmVhdGUgc3RhdGUgc3RydWN0dXJlCisJICov CisJaW5kZXhzdGF0ZSA9IG1ha2VOb2RlKEJyaW5Tb3J0U3RhdGUpOworCWluZGV4c3RhdGUt PnNzLnBzLnBsYW4gPSAoUGxhbiAqKSBub2RlOworCWluZGV4c3RhdGUtPnNzLnBzLnN0YXRl ID0gZXN0YXRlOworCWluZGV4c3RhdGUtPnNzLnBzLkV4ZWNQcm9jTm9kZSA9IEV4ZWNCcmlu U29ydDsKKworCS8qCisJICogTWlzY2VsbGFuZW91cyBpbml0aWFsaXphdGlvbgorCSAqCisJ ICogY3JlYXRlIGV4cHJlc3Npb24gY29udGV4dCBmb3Igbm9kZQorCSAqLworCUV4ZWNBc3Np Z25FeHByQ29udGV4dChlc3RhdGUsICZpbmRleHN0YXRlLT5zcy5wcyk7CisKKwkvKgorCSAq IG9wZW4gdGhlIHNjYW4gcmVsYXRpb24KKwkgKi8KKwljdXJyZW50UmVsYXRpb24gPSBFeGVj T3BlblNjYW5SZWxhdGlvbihlc3RhdGUsIG5vZGUtPnNjYW4uc2NhbnJlbGlkLCBlZmxhZ3Mp OworCisJaW5kZXhzdGF0ZS0+c3Muc3NfY3VycmVudFJlbGF0aW9uID0gY3VycmVudFJlbGF0 aW9uOworCWluZGV4c3RhdGUtPnNzLnNzX2N1cnJlbnRTY2FuRGVzYyA9IE5VTEw7CS8qIG5v IGhlYXAgc2NhbiBoZXJlICovCisKKwkvKgorCSAqIGdldCB0aGUgc2NhbiB0eXBlIGZyb20g dGhlIHJlbGF0aW9uIGRlc2NyaXB0b3IuCisJICovCisJRXhlY0luaXRTY2FuVHVwbGVTbG90 KGVzdGF0ZSwgJmluZGV4c3RhdGUtPnNzLAorCQkJCQkJICBSZWxhdGlvbkdldERlc2NyKGN1 cnJlbnRSZWxhdGlvbiksCisJCQkJCQkgIHRhYmxlX3Nsb3RfY2FsbGJhY2tzKGN1cnJlbnRS ZWxhdGlvbikpOworCisJLyoKKwkgKiBJbml0aWFsaXplIHJlc3VsdCB0eXBlIGFuZCBwcm9q ZWN0aW9uLgorCSAqLworCUV4ZWNJbml0UmVzdWx0VHVwbGVTbG90VEwoJmluZGV4c3RhdGUt PnNzLnBzLCAmVFRTT3BzTWluaW1hbFR1cGxlKTsKKwkvLyBFeGVjSW5pdFJlc3VsdFR5cGVU TCgmaW5kZXhzdGF0ZS0+c3MucHMpOworCS8vIEV4ZWNBc3NpZ25TY2FuUHJvamVjdGlvbklu Zm8oJmluZGV4c3RhdGUtPnNzKTsKKwkvLyBFeGVjSW5pdFJlc3VsdFNsb3QoJmluZGV4c3Rh dGUtPnNzLnBzLCAmVFRTT3BzVmlydHVhbCk7CisKKwlpbmRleHN0YXRlLT5ic19Qcm9qSW5m byA9IEV4ZWNCdWlsZFByb2plY3Rpb25JbmZvKCgoUGxhbiAqKSBub2RlKS0+dGFyZ2V0bGlz dCwKKwkJCQkJCQkJCQkJCQkgIGluZGV4c3RhdGUtPnNzLnBzLnBzX0V4cHJDb250ZXh0LAor CQkJCQkJCQkJCQkJCSAgaW5kZXhzdGF0ZS0+c3MucHMucHNfUmVzdWx0VHVwbGVTbG90LAor CQkJCQkJCQkJCQkJCSAgJmluZGV4c3RhdGUtPnNzLnBzLAorCQkJCQkJCQkJCQkJCSAgaW5k ZXhzdGF0ZS0+c3Muc3NfU2NhblR1cGxlU2xvdC0+dHRzX3R1cGxlRGVzY3JpcHRvcik7CisK KwkvKgorCSAqIGluaXRpYWxpemUgY2hpbGQgZXhwcmVzc2lvbnMKKwkgKgorCSAqIE5vdGU6 IHdlIGRvbid0IGluaXRpYWxpemUgYWxsIG9mIHRoZSBpbmRleHF1YWwgZXhwcmVzc2lvbiwg b25seSB0aGUKKwkgKiBzdWItcGFydHMgY29ycmVzcG9uZGluZyB0byBydW50aW1lIGtleXMg KHNlZSBiZWxvdykuICBMaWtld2lzZSBmb3IKKwkgKiBpbmRleG9yZGVyYnksIGlmIGFueS4g IEJ1dCB0aGUgaW5kZXhxdWFsb3JpZyBleHByZXNzaW9uIGlzIGFsd2F5cworCSAqIGluaXRp YWxpemVkIGV2ZW4gdGhvdWdoIGl0IHdpbGwgb25seSBiZSB1c2VkIGluIHNvbWUgdW5jb21t b24gY2FzZXMgLS0tCisJICogd291bGQgYmUgbmljZSB0byBpbXByb3ZlIHRoYXQuICAoUHJv YmxlbSBpcyB0aGF0IGFueSBTdWJQbGFucyBwcmVzZW50CisJICogaW4gdGhlIGV4cHJlc3Np b24gbXVzdCBiZSBmb3VuZCBub3cuLi4pCisJICovCisJaW5kZXhzdGF0ZS0+c3MucHMucXVh bCA9CisJCUV4ZWNJbml0UXVhbChub2RlLT5zY2FuLnBsYW4ucXVhbCwgKFBsYW5TdGF0ZSAq KSBpbmRleHN0YXRlKTsKKwlpbmRleHN0YXRlLT5pbmRleHF1YWxvcmlnID0KKwkJRXhlY0lu aXRRdWFsKG5vZGUtPmluZGV4cXVhbG9yaWcsIChQbGFuU3RhdGUgKikgaW5kZXhzdGF0ZSk7 CisKKwkvKgorCSAqIElmIHdlIGFyZSBqdXN0IGRvaW5nIEVYUExBSU4gKGllLCBhcmVuJ3Qg Z29pbmcgdG8gcnVuIHRoZSBwbGFuKSwgc3RvcAorCSAqIGhlcmUuICBUaGlzIGFsbG93cyBh biBpbmRleC1hZHZpc29yIHBsdWdpbiB0byBFWFBMQUlOIGEgcGxhbiBjb250YWluaW5nCisJ ICogcmVmZXJlbmNlcyB0byBub25leGlzdGVudCBpbmRleGVzLgorCSAqLworCWlmIChlZmxh Z3MgJiBFWEVDX0ZMQUdfRVhQTEFJTl9PTkxZKQorCQlyZXR1cm4gaW5kZXhzdGF0ZTsKKwor CS8qIE9wZW4gdGhlIGluZGV4IHJlbGF0aW9uLiAqLworCWxvY2ttb2RlID0gZXhlY19ydF9m ZXRjaChub2RlLT5zY2FuLnNjYW5yZWxpZCwgZXN0YXRlKS0+cmVsbG9ja21vZGU7CisJaW5k ZXhzdGF0ZS0+aXNzX1JlbGF0aW9uRGVzYyA9IGluZGV4X29wZW4obm9kZS0+aW5kZXhpZCwg bG9ja21vZGUpOworCisJLyoKKwkgKiBJbml0aWFsaXplIGluZGV4LXNwZWNpZmljIHNjYW4g c3RhdGUKKwkgKi8KKwlpbmRleHN0YXRlLT5pc3NfUnVudGltZUtleXNSZWFkeSA9IGZhbHNl OworCWluZGV4c3RhdGUtPmlzc19SdW50aW1lS2V5cyA9IE5VTEw7CisJaW5kZXhzdGF0ZS0+ aXNzX051bVJ1bnRpbWVLZXlzID0gMDsKKworCS8qCisJICogYnVpbGQgdGhlIGluZGV4IHNj YW4ga2V5cyBmcm9tIHRoZSBpbmRleCBxdWFsaWZpY2F0aW9uCisJICovCisJRXhlY0luZGV4 QnVpbGRTY2FuS2V5cygoUGxhblN0YXRlICopIGluZGV4c3RhdGUsCisJCQkJCQkgICBpbmRl eHN0YXRlLT5pc3NfUmVsYXRpb25EZXNjLAorCQkJCQkJICAgbm9kZS0+aW5kZXhxdWFsLAor CQkJCQkJICAgZmFsc2UsCisJCQkJCQkgICAmaW5kZXhzdGF0ZS0+aXNzX1NjYW5LZXlzLAor CQkJCQkJICAgJmluZGV4c3RhdGUtPmlzc19OdW1TY2FuS2V5cywKKwkJCQkJCSAgICZpbmRl eHN0YXRlLT5pc3NfUnVudGltZUtleXMsCisJCQkJCQkgICAmaW5kZXhzdGF0ZS0+aXNzX051 bVJ1bnRpbWVLZXlzLAorCQkJCQkJICAgTlVMTCwJLyogbm8gQXJyYXlLZXlzICovCisJCQkJ CQkgICBOVUxMKTsKKworCS8qCisJICogSWYgd2UgaGF2ZSBydW50aW1lIGtleXMsIHdlIG5l ZWQgYW4gRXhwckNvbnRleHQgdG8gZXZhbHVhdGUgdGhlbS4gVGhlCisJICogbm9kZSdzIHN0 YW5kYXJkIGNvbnRleHQgd29uJ3QgZG8gYmVjYXVzZSB3ZSB3YW50IHRvIHJlc2V0IHRoYXQg Y29udGV4dAorCSAqIGZvciBldmVyeSB0dXBsZS4gIFNvLCBidWlsZCBhbm90aGVyIGNvbnRl eHQganVzdCBsaWtlIHRoZSBvdGhlciBvbmUuLi4KKwkgKiAtdGdsIDcvMTEvMDAKKwkgKi8K KwlpZiAoaW5kZXhzdGF0ZS0+aXNzX051bVJ1bnRpbWVLZXlzICE9IDApCisJeworCQlFeHBy Q29udGV4dCAqc3RkZWNvbnRleHQgPSBpbmRleHN0YXRlLT5zcy5wcy5wc19FeHByQ29udGV4 dDsKKworCQlFeGVjQXNzaWduRXhwckNvbnRleHQoZXN0YXRlLCAmaW5kZXhzdGF0ZS0+c3Mu cHMpOworCQlpbmRleHN0YXRlLT5pc3NfUnVudGltZUNvbnRleHQgPSBpbmRleHN0YXRlLT5z cy5wcy5wc19FeHByQ29udGV4dDsKKwkJaW5kZXhzdGF0ZS0+c3MucHMucHNfRXhwckNvbnRl eHQgPSBzdGRlY29udGV4dDsKKwl9CisJZWxzZQorCXsKKwkJaW5kZXhzdGF0ZS0+aXNzX1J1 bnRpbWVDb250ZXh0ID0gTlVMTDsKKwl9CisKKwlpbmRleHN0YXRlLT5ic190dXBsZXNvcnRz dGF0ZSA9IE5VTEw7CisJaW5kZXhzdGF0ZS0+YnNfcXVhbCA9IGluZGV4c3RhdGUtPnNzLnBz LnF1YWw7CisJaW5kZXhzdGF0ZS0+c3MucHMucXVhbCA9IE5VTEw7CisJLy8gRXhlY0luaXRS ZXN1bHRUdXBsZVNsb3RUTCgmaW5kZXhzdGF0ZS0+c3MucHMsICZUVFNPcHNNaW5pbWFsVHVw bGUpOworCisJLyoKKwkgKiBhbGwgZG9uZS4KKwkgKi8KKwlyZXR1cm4gaW5kZXhzdGF0ZTsK K30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorICoJCQkJCQlQYXJhbGxlbCBTY2FuIFN1cHBvcnQKKyAq IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAqLworCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgkJRXhlY0JyaW5Tb3J0RXN0 aW1hdGUKKyAqCisgKgkJQ29tcHV0ZSB0aGUgYW1vdW50IG9mIHNwYWNlIHdlJ2xsIG5lZWQg aW4gdGhlIHBhcmFsbGVsCisgKgkJcXVlcnkgRFNNLCBhbmQgaW5mb3JtIHBjeHQtPmVzdGlt YXRvciBhYm91dCBvdXIgbmVlZHMuCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KK3ZvaWQKK0V4ZWNC cmluU29ydEVzdGltYXRlKEJyaW5Tb3J0U3RhdGUgKm5vZGUsCisJCQkJCSAgUGFyYWxsZWxD b250ZXh0ICpwY3h0KQoreworCUVTdGF0ZQkgICAqZXN0YXRlID0gbm9kZS0+c3MucHMuc3Rh dGU7CisKKwlub2RlLT5pc3NfUHNjYW5MZW4gPSBpbmRleF9wYXJhbGxlbHNjYW5fZXN0aW1h dGUobm9kZS0+aXNzX1JlbGF0aW9uRGVzYywKKwkJCQkJCQkJCQkJCQkgZXN0YXRlLT5lc19z bmFwc2hvdCk7CisJc2htX3RvY19lc3RpbWF0ZV9jaHVuaygmcGN4dC0+ZXN0aW1hdG9yLCBu b2RlLT5pc3NfUHNjYW5MZW4pOworCXNobV90b2NfZXN0aW1hdGVfa2V5cygmcGN4dC0+ZXN0 aW1hdG9yLCAxKTsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoJCUV4ZWNCcmluU29ydEluaXRp YWxpemVEU00KKyAqCisgKgkJU2V0IHVwIGEgcGFyYWxsZWwgaW5kZXggc2NhbiBkZXNjcmlw dG9yLgorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorICovCit2b2lkCitFeGVjQnJpblNvcnRJbml0aWFsaXpl RFNNKEJyaW5Tb3J0U3RhdGUgKm5vZGUsCisJCQkJCQkgICBQYXJhbGxlbENvbnRleHQgKnBj eHQpCit7CisJRVN0YXRlCSAgICplc3RhdGUgPSBub2RlLT5zcy5wcy5zdGF0ZTsKKwlQYXJh bGxlbEluZGV4U2NhbkRlc2MgcGlzY2FuOworCisJcGlzY2FuID0gc2htX3RvY19hbGxvY2F0 ZShwY3h0LT50b2MsIG5vZGUtPmlzc19Qc2Nhbkxlbik7CisJaW5kZXhfcGFyYWxsZWxzY2Fu X2luaXRpYWxpemUobm9kZS0+c3Muc3NfY3VycmVudFJlbGF0aW9uLAorCQkJCQkJCQkgIG5v ZGUtPmlzc19SZWxhdGlvbkRlc2MsCisJCQkJCQkJCSAgZXN0YXRlLT5lc19zbmFwc2hvdCwK KwkJCQkJCQkJICBwaXNjYW4pOworCXNobV90b2NfaW5zZXJ0KHBjeHQtPnRvYywgbm9kZS0+ c3MucHMucGxhbi0+cGxhbl9ub2RlX2lkLCBwaXNjYW4pOworCW5vZGUtPmlzc19TY2FuRGVz YyA9CisJCWluZGV4X2JlZ2luc2Nhbl9wYXJhbGxlbChub2RlLT5zcy5zc19jdXJyZW50UmVs YXRpb24sCisJCQkJCQkJCSBub2RlLT5pc3NfUmVsYXRpb25EZXNjLAorCQkJCQkJCQkgbm9k ZS0+aXNzX051bVNjYW5LZXlzLAorCQkJCQkJCQkgbm9kZS0+aXNzX051bU9yZGVyQnlLZXlz LAorCQkJCQkJCQkgcGlzY2FuKTsKKworCS8qCisJICogSWYgbm8gcnVuLXRpbWUga2V5cyB0 byBjYWxjdWxhdGUgb3IgdGhleSBhcmUgcmVhZHksIGdvIGFoZWFkIGFuZCBwYXNzCisJICog dGhlIHNjYW5rZXlzIHRvIHRoZSBpbmRleCBBTS4KKwkgKi8KKwlpZiAobm9kZS0+aXNzX051 bVJ1bnRpbWVLZXlzID09IDAgfHwgbm9kZS0+aXNzX1J1bnRpbWVLZXlzUmVhZHkpCisJCWlu ZGV4X3Jlc2Nhbihub2RlLT5pc3NfU2NhbkRlc2MsCisJCQkJCSBub2RlLT5pc3NfU2Nhbktl eXMsIG5vZGUtPmlzc19OdW1TY2FuS2V5cywKKwkJCQkJIG5vZGUtPmlzc19PcmRlckJ5S2V5 cywgbm9kZS0+aXNzX051bU9yZGVyQnlLZXlzKTsKK30KKworLyogLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoJ CUV4ZWNCcmluU29ydFJlSW5pdGlhbGl6ZURTTQorICoKKyAqCQlSZXNldCBzaGFyZWQgc3Rh dGUgYmVmb3JlIGJlZ2lubmluZyBhIGZyZXNoIHNjYW4uCisgKiAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8K K3ZvaWQKK0V4ZWNCcmluU29ydFJlSW5pdGlhbGl6ZURTTShCcmluU29ydFN0YXRlICpub2Rl LAorCQkJCQkJCSBQYXJhbGxlbENvbnRleHQgKnBjeHQpCit7CisJaW5kZXhfcGFyYWxsZWxy ZXNjYW4obm9kZS0+aXNzX1NjYW5EZXNjKTsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoJCUV4 ZWNCcmluU29ydEluaXRpYWxpemVXb3JrZXIKKyAqCisgKgkJQ29weSByZWxldmFudCBpbmZv cm1hdGlvbiBmcm9tIFRPQyBpbnRvIHBsYW5zdGF0ZS4KKyAqIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLwor dm9pZAorRXhlY0JyaW5Tb3J0SW5pdGlhbGl6ZVdvcmtlcihCcmluU29ydFN0YXRlICpub2Rl LAorCQkJCQkJCSAgUGFyYWxsZWxXb3JrZXJDb250ZXh0ICpwd2N4dCkKK3sKKwlQYXJhbGxl bEluZGV4U2NhbkRlc2MgcGlzY2FuOworCisJcGlzY2FuID0gc2htX3RvY19sb29rdXAocHdj eHQtPnRvYywgbm9kZS0+c3MucHMucGxhbi0+cGxhbl9ub2RlX2lkLCBmYWxzZSk7CisJbm9k ZS0+aXNzX1NjYW5EZXNjID0KKwkJaW5kZXhfYmVnaW5zY2FuX3BhcmFsbGVsKG5vZGUtPnNz LnNzX2N1cnJlbnRSZWxhdGlvbiwKKwkJCQkJCQkJIG5vZGUtPmlzc19SZWxhdGlvbkRlc2Ms CisJCQkJCQkJCSBub2RlLT5pc3NfTnVtU2NhbktleXMsCisJCQkJCQkJCSBub2RlLT5pc3Nf TnVtT3JkZXJCeUtleXMsCisJCQkJCQkJCSBwaXNjYW4pOworCisJLyoKKwkgKiBJZiBubyBy dW4tdGltZSBrZXlzIHRvIGNhbGN1bGF0ZSBvciB0aGV5IGFyZSByZWFkeSwgZ28gYWhlYWQg YW5kIHBhc3MKKwkgKiB0aGUgc2NhbmtleXMgdG8gdGhlIGluZGV4IEFNLgorCSAqLworCWlm IChub2RlLT5pc3NfTnVtUnVudGltZUtleXMgPT0gMCB8fCBub2RlLT5pc3NfUnVudGltZUtl eXNSZWFkeSkKKwkJaW5kZXhfcmVzY2FuKG5vZGUtPmlzc19TY2FuRGVzYywKKwkJCQkJIG5v ZGUtPmlzc19TY2FuS2V5cywgbm9kZS0+aXNzX051bVNjYW5LZXlzLAorCQkJCQkgbm9kZS0+ aXNzX09yZGVyQnlLZXlzLCBub2RlLT5pc3NfTnVtT3JkZXJCeUtleXMpOworfQpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvY29zdHNpemUuYyBiL3NyYy9iYWNr ZW5kL29wdGltaXplci9wYXRoL2Nvc3RzaXplLmMKaW5kZXggNzkxOGJiNmYwZC4uODZmOTFl NjU3NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvY29zdHNpemUu YworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9jb3N0c2l6ZS5jCkBAIC03OTEs NiArNzkxLDI2MCBAQCBjb3N0X2luZGV4KEluZGV4UGF0aCAqcGF0aCwgUGxhbm5lckluZm8g KnJvb3QsIGRvdWJsZSBsb29wX2NvdW50LAogCXBhdGgtPnBhdGgudG90YWxfY29zdCA9IHN0 YXJ0dXBfY29zdCArIHJ1bl9jb3N0OwogfQogCit2b2lkCitjb3N0X2JyaW5zb3J0KEJyaW5T b3J0UGF0aCAqcGF0aCwgUGxhbm5lckluZm8gKnJvb3QsIGRvdWJsZSBsb29wX2NvdW50LAor CQkgICBib29sIHBhcnRpYWxfcGF0aCkKK3sKKwlJbmRleE9wdEluZm8gKmluZGV4ID0gcGF0 aC0+aXBhdGguaW5kZXhpbmZvOworCVJlbE9wdEluZm8gKmJhc2VyZWwgPSBpbmRleC0+cmVs OworCWFtY29zdGVzdGltYXRlX2Z1bmN0aW9uIGFtY29zdGVzdGltYXRlOworCUxpc3QJICAg KnFwcXVhbHM7CisJQ29zdAkJc3RhcnR1cF9jb3N0ID0gMDsKKwlDb3N0CQlydW5fY29zdCA9 IDA7CisJQ29zdAkJY3B1X3J1bl9jb3N0ID0gMDsKKwlDb3N0CQlpbmRleFN0YXJ0dXBDb3N0 OworCUNvc3QJCWluZGV4VG90YWxDb3N0OworCVNlbGVjdGl2aXR5IGluZGV4U2VsZWN0aXZp dHk7CisJZG91YmxlCQlpbmRleENvcnJlbGF0aW9uLAorCQkJCWNzcXVhcmVkOworCWRvdWJs ZQkJc3BjX3NlcV9wYWdlX2Nvc3QsCisJCQkJc3BjX3JhbmRvbV9wYWdlX2Nvc3Q7CisJQ29z dAkJbWluX0lPX2Nvc3QsCisJCQkJbWF4X0lPX2Nvc3Q7CisJUXVhbENvc3QJcXBxdWFsX2Nv c3Q7CisJQ29zdAkJY3B1X3Blcl90dXBsZTsKKwlkb3VibGUJCXR1cGxlc19mZXRjaGVkOwor CWRvdWJsZQkJcGFnZXNfZmV0Y2hlZDsKKwlkb3VibGUJCXJhbmRfaGVhcF9wYWdlczsKKwlk b3VibGUJCWluZGV4X3BhZ2VzOworCisJLyogU2hvdWxkIG9ubHkgYmUgYXBwbGllZCB0byBi YXNlIHJlbGF0aW9ucyAqLworCUFzc2VydChJc0EoYmFzZXJlbCwgUmVsT3B0SW5mbykgJiYK KwkJICAgSXNBKGluZGV4LCBJbmRleE9wdEluZm8pKTsKKwlBc3NlcnQoYmFzZXJlbC0+cmVs aWQgPiAwKTsKKwlBc3NlcnQoYmFzZXJlbC0+cnRla2luZCA9PSBSVEVfUkVMQVRJT04pOwor CisJLyoKKwkgKiBNYXJrIHRoZSBwYXRoIHdpdGggdGhlIGNvcnJlY3Qgcm93IGVzdGltYXRl LCBhbmQgaWRlbnRpZnkgd2hpY2ggcXVhbHMKKwkgKiB3aWxsIG5lZWQgdG8gYmUgZW5mb3Jj ZWQgYXMgcXBxdWFscy4gIFdlIG5lZWQgbm90IGNoZWNrIGFueSBxdWFscyB0aGF0CisJICog YXJlIGltcGxpZWQgYnkgdGhlIGluZGV4J3MgcHJlZGljYXRlLCBzbyB3ZSBjYW4gdXNlIGlu ZHJlc3RyaWN0aW5mbyBub3QKKwkgKiBiYXNlcmVzdHJpY3RpbmZvIGFzIHRoZSBsaXN0IG9m IHJlbGV2YW50IHJlc3RyaWN0aW9uIGNsYXVzZXMgZm9yIHRoZQorCSAqIHJlbC4KKwkgKi8K KwlpZiAocGF0aC0+aXBhdGgucGF0aC5wYXJhbV9pbmZvKQorCXsKKwkJcGF0aC0+aXBhdGgu cGF0aC5yb3dzID0gcGF0aC0+aXBhdGgucGF0aC5wYXJhbV9pbmZvLT5wcGlfcm93czsKKwkJ LyogcXBxdWFscyBjb21lIGZyb20gdGhlIHJlbCdzIHJlc3RyaWN0aW9uIGNsYXVzZXMgYW5k IHBwaV9jbGF1c2VzICovCisJCXFwcXVhbHMgPSBsaXN0X2NvbmNhdChleHRyYWN0X25vbmlu ZGV4X2NvbmRpdGlvbnMocGF0aC0+aXBhdGguaW5kZXhpbmZvLT5pbmRyZXN0cmljdGluZm8s CisJCQkJCQkJCQkJCQkJCSAgcGF0aC0+aXBhdGguaW5kZXhjbGF1c2VzKSwKKwkJCQkJCQkg IGV4dHJhY3Rfbm9uaW5kZXhfY29uZGl0aW9ucyhwYXRoLT5pcGF0aC5wYXRoLnBhcmFtX2lu Zm8tPnBwaV9jbGF1c2VzLAorCQkJCQkJCQkJCQkJCQkgIHBhdGgtPmlwYXRoLmluZGV4Y2xh dXNlcykpOworCX0KKwllbHNlCisJeworCQlwYXRoLT5pcGF0aC5wYXRoLnJvd3MgPSBiYXNl cmVsLT5yb3dzOworCQkvKiBxcHF1YWxzIGNvbWUgZnJvbSBqdXN0IHRoZSByZWwncyByZXN0 cmljdGlvbiBjbGF1c2VzICovCisJCXFwcXVhbHMgPSBleHRyYWN0X25vbmluZGV4X2NvbmRp dGlvbnMocGF0aC0+aXBhdGguaW5kZXhpbmZvLT5pbmRyZXN0cmljdGluZm8sCisJCQkJCQkJ CQkJCSAgcGF0aC0+aXBhdGguaW5kZXhjbGF1c2VzKTsKKwl9CisKKwlpZiAoIWVuYWJsZV9p bmRleHNjYW4pCisJCXN0YXJ0dXBfY29zdCArPSBkaXNhYmxlX2Nvc3Q7CisJLyogd2UgZG9u J3QgbmVlZCB0byBjaGVjayBlbmFibGVfaW5kZXhvbmx5c2NhbjsgaW5keHBhdGguYyBkb2Vz IHRoYXQgKi8KKworCS8qCisJICogQ2FsbCBpbmRleC1hY2Nlc3MtbWV0aG9kLXNwZWNpZmlj IGNvZGUgdG8gZXN0aW1hdGUgdGhlIHByb2Nlc3NpbmcgY29zdAorCSAqIGZvciBzY2Fubmlu ZyB0aGUgaW5kZXgsIGFzIHdlbGwgYXMgdGhlIHNlbGVjdGl2aXR5IG9mIHRoZSBpbmRleCAo aWUsCisJICogdGhlIGZyYWN0aW9uIG9mIG1haW4tdGFibGUgdHVwbGVzIHdlIHdpbGwgaGF2 ZSB0byByZXRyaWV2ZSkgYW5kIGl0cworCSAqIGNvcnJlbGF0aW9uIHRvIHRoZSBtYWluLXRh YmxlIHR1cGxlIG9yZGVyLiAgV2UgbmVlZCBhIGNhc3QgaGVyZSBiZWNhdXNlCisJICogcGF0 aG5vZGVzLmggdXNlcyBhIHdlYWsgZnVuY3Rpb24gdHlwZSB0byBhdm9pZCBpbmNsdWRpbmcg YW1hcGkuaC4KKwkgKi8KKwlhbWNvc3Rlc3RpbWF0ZSA9IChhbWNvc3Rlc3RpbWF0ZV9mdW5j dGlvbikgaW5kZXgtPmFtY29zdGVzdGltYXRlOworCWFtY29zdGVzdGltYXRlKHJvb3QsICZw YXRoLT5pcGF0aCwgbG9vcF9jb3VudCwKKwkJCQkgICAmaW5kZXhTdGFydHVwQ29zdCwgJmlu ZGV4VG90YWxDb3N0LAorCQkJCSAgICZpbmRleFNlbGVjdGl2aXR5LCAmaW5kZXhDb3JyZWxh dGlvbiwKKwkJCQkgICAmaW5kZXhfcGFnZXMpOworCisJLyoKKwkgKiBTYXZlIGFtY29zdGVz dGltYXRlJ3MgcmVzdWx0cyBmb3IgcG9zc2libGUgdXNlIGluIGJpdG1hcCBzY2FuIHBsYW5u aW5nLgorCSAqIFdlIGRvbid0IGJvdGhlciB0byBzYXZlIGluZGV4U3RhcnR1cENvc3Qgb3Ig aW5kZXhDb3JyZWxhdGlvbiwgYmVjYXVzZSBhCisJICogYml0bWFwIHNjYW4gZG9lc24ndCBj YXJlIGFib3V0IGVpdGhlci4KKwkgKi8KKwlwYXRoLT5pcGF0aC5pbmRleHRvdGFsY29zdCA9 IGluZGV4VG90YWxDb3N0OworCXBhdGgtPmlwYXRoLmluZGV4c2VsZWN0aXZpdHkgPSBpbmRl eFNlbGVjdGl2aXR5OworCisJLyogYWxsIGNvc3RzIGZvciB0b3VjaGluZyBpbmRleCBpdHNl bGYgaW5jbHVkZWQgaGVyZSAqLworCXN0YXJ0dXBfY29zdCArPSBpbmRleFN0YXJ0dXBDb3N0 OworCXJ1bl9jb3N0ICs9IGluZGV4VG90YWxDb3N0IC0gaW5kZXhTdGFydHVwQ29zdDsKKwor CS8qIGVzdGltYXRlIG51bWJlciBvZiBtYWluLXRhYmxlIHR1cGxlcyBmZXRjaGVkICovCisJ dHVwbGVzX2ZldGNoZWQgPSBjbGFtcF9yb3dfZXN0KGluZGV4U2VsZWN0aXZpdHkgKiBiYXNl cmVsLT50dXBsZXMpOworCisJLyogZmV0Y2ggZXN0aW1hdGVkIHBhZ2UgY29zdHMgZm9yIHRh Ymxlc3BhY2UgY29udGFpbmluZyB0YWJsZSAqLworCWdldF90YWJsZXNwYWNlX3BhZ2VfY29z dHMoYmFzZXJlbC0+cmVsdGFibGVzcGFjZSwKKwkJCQkJCQkgICZzcGNfcmFuZG9tX3BhZ2Vf Y29zdCwKKwkJCQkJCQkgICZzcGNfc2VxX3BhZ2VfY29zdCk7CisKKwkvKi0tLS0tLS0tLS0K KwkgKiBFc3RpbWF0ZSBudW1iZXIgb2YgbWFpbi10YWJsZSBwYWdlcyBmZXRjaGVkLCBhbmQg Y29tcHV0ZSBJL08gY29zdC4KKwkgKgorCSAqIFdoZW4gdGhlIGluZGV4IG9yZGVyaW5nIGlz IHVuY29ycmVsYXRlZCB3aXRoIHRoZSB0YWJsZSBvcmRlcmluZywKKwkgKiB3ZSB1c2UgYW4g YXBwcm94aW1hdGlvbiBwcm9wb3NlZCBieSBNYWNrZXJ0IGFuZCBMb2htYW4gKHNlZQorCSAq IGluZGV4X3BhZ2VzX2ZldGNoZWQoKSBmb3IgZGV0YWlscykgdG8gY29tcHV0ZSB0aGUgbnVt YmVyIG9mIHBhZ2VzCisJICogZmV0Y2hlZCwgYW5kIHRoZW4gY2hhcmdlIHNwY19yYW5kb21f cGFnZV9jb3N0IHBlciBwYWdlIGZldGNoZWQuCisJICoKKwkgKiBXaGVuIHRoZSBpbmRleCBv cmRlcmluZyBpcyBleGFjdGx5IGNvcnJlbGF0ZWQgd2l0aCB0aGUgdGFibGUgb3JkZXJpbmcK KwkgKiAoanVzdCBhZnRlciBhIENMVVNURVIsIGZvciBleGFtcGxlKSwgdGhlIG51bWJlciBv ZiBwYWdlcyBmZXRjaGVkIHNob3VsZAorCSAqIGJlIGV4YWN0bHkgc2VsZWN0aXZpdHkgKiB0 YWJsZV9zaXplLiAgV2hhdCdzIG1vcmUsIGFsbCBidXQgdGhlIGZpcnN0CisJICogd2lsbCBi ZSBzZXF1ZW50aWFsIGZldGNoZXMsIG5vdCB0aGUgcmFuZG9tIGZldGNoZXMgdGhhdCBvY2N1 ciBpbiB0aGUKKwkgKiB1bmNvcnJlbGF0ZWQgY2FzZS4gIFNvIGlmIHRoZSBudW1iZXIgb2Yg cGFnZXMgaXMgbW9yZSB0aGFuIDEsIHdlCisJICogb3VnaHQgdG8gY2hhcmdlCisJICoJCXNw Y19yYW5kb21fcGFnZV9jb3N0ICsgKHBhZ2VzX2ZldGNoZWQgLSAxKSAqIHNwY19zZXFfcGFn ZV9jb3N0CisJICogRm9yIHBhcnRpYWxseS1jb3JyZWxhdGVkIGluZGV4ZXMsIHdlIG91Z2h0 IHRvIGNoYXJnZSBzb21ld2hlcmUgYmV0d2VlbgorCSAqIHRoZXNlIHR3byBlc3RpbWF0ZXMu ICBXZSBjdXJyZW50bHkgaW50ZXJwb2xhdGUgbGluZWFybHkgYmV0d2VlbiB0aGUKKwkgKiBl c3RpbWF0ZXMgYmFzZWQgb24gdGhlIGNvcnJlbGF0aW9uIHNxdWFyZWQgKFhYWCBpcyB0aGF0 IGFwcHJvcHJpYXRlPykuCisJICoKKwkgKiBJZiBpdCdzIGFuIGluZGV4LW9ubHkgc2Nhbiwg dGhlbiB3ZSB3aWxsIG5vdCBuZWVkIHRvIGZldGNoIGFueSBoZWFwCisJICogcGFnZXMgZm9y IHdoaWNoIHRoZSB2aXNpYmlsaXR5IG1hcCBzaG93cyBhbGwgdHVwbGVzIGFyZSB2aXNpYmxl LgorCSAqIEhlbmNlLCByZWR1Y2UgdGhlIGVzdGltYXRlZCBudW1iZXIgb2YgaGVhcCBmZXRj aGVzIGFjY29yZGluZ2x5LgorCSAqIFdlIHVzZSB0aGUgbWVhc3VyZWQgZnJhY3Rpb24gb2Yg dGhlIGVudGlyZSBoZWFwIHRoYXQgaXMgYWxsLXZpc2libGUsCisJICogd2hpY2ggbWlnaHQg bm90IGJlIHBhcnRpY3VsYXJseSByZWxldmFudCB0byB0aGUgc3Vic2V0IG9mIHRoZSBoZWFw CisJICogdGhhdCB0aGlzIHF1ZXJ5IHdpbGwgZmV0Y2g7IGJ1dCBpdCdzIG5vdCBjbGVhciBo b3cgdG8gZG8gYmV0dGVyLgorCSAqLS0tLS0tLS0tLQorCSAqLworCWlmIChsb29wX2NvdW50 ID4gMSkKKwl7CisJCS8qCisJCSAqIEZvciByZXBlYXRlZCBpbmRleHNjYW5zLCB0aGUgYXBw cm9wcmlhdGUgZXN0aW1hdGUgZm9yIHRoZQorCQkgKiB1bmNvcnJlbGF0ZWQgY2FzZSBpcyB0 byBzY2FsZSB1cCB0aGUgbnVtYmVyIG9mIHR1cGxlcyBmZXRjaGVkIGluCisJCSAqIHRoZSBN YWNrZXJ0IGFuZCBMb2htYW4gZm9ybXVsYSBieSB0aGUgbnVtYmVyIG9mIHNjYW5zLCBzbyB0 aGF0IHdlCisJCSAqIGVzdGltYXRlIHRoZSBudW1iZXIgb2YgcGFnZXMgZmV0Y2hlZCBieSBh bGwgdGhlIHNjYW5zOyB0aGVuCisJCSAqIHByby1yYXRlIHRoZSBjb3N0cyBmb3Igb25lIHNj YW4uICBJbiB0aGlzIGNhc2Ugd2UgYXNzdW1lIGFsbCB0aGUKKwkJICogZmV0Y2hlcyBhcmUg cmFuZG9tIGFjY2Vzc2VzLgorCQkgKi8KKwkJcGFnZXNfZmV0Y2hlZCA9IGluZGV4X3BhZ2Vz X2ZldGNoZWQodHVwbGVzX2ZldGNoZWQgKiBsb29wX2NvdW50LAorCQkJCQkJCQkJCQliYXNl cmVsLT5wYWdlcywKKwkJCQkJCQkJCQkJKGRvdWJsZSkgaW5kZXgtPnBhZ2VzLAorCQkJCQkJ CQkJCQlyb290KTsKKworCQlyYW5kX2hlYXBfcGFnZXMgPSBwYWdlc19mZXRjaGVkOworCisJ CW1heF9JT19jb3N0ID0gKHBhZ2VzX2ZldGNoZWQgKiBzcGNfcmFuZG9tX3BhZ2VfY29zdCkg LyBsb29wX2NvdW50OworCisJCS8qCisJCSAqIEluIHRoZSBwZXJmZWN0bHkgY29ycmVsYXRl ZCBjYXNlLCB0aGUgbnVtYmVyIG9mIHBhZ2VzIHRvdWNoZWQgYnkKKwkJICogZWFjaCBzY2Fu IGlzIHNlbGVjdGl2aXR5ICogdGFibGVfc2l6ZSwgYW5kIHdlIGNhbiB1c2UgdGhlIE1hY2tl cnQKKwkJICogYW5kIExvaG1hbiBmb3JtdWxhIGF0IHRoZSBwYWdlIGxldmVsIHRvIGVzdGlt YXRlIGhvdyBtdWNoIHdvcmsgaXMKKwkJICogc2F2ZWQgYnkgY2FjaGluZyBhY3Jvc3Mgc2Nh bnMuICBXZSBzdGlsbCBhc3N1bWUgYWxsIHRoZSBmZXRjaGVzIGFyZQorCQkgKiByYW5kb20s IHRob3VnaCwgd2hpY2ggaXMgYW4gb3ZlcmVzdGltYXRlIHRoYXQncyBoYXJkIHRvIGNvcnJl Y3QgZm9yCisJCSAqIHdpdGhvdXQgZG91YmxlLWNvdW50aW5nIHRoZSBjYWNoZSBlZmZlY3Rz LiAgKEJ1dCBpbiBtb3N0IGNhc2VzCisJCSAqIHdoZXJlIHN1Y2ggYSBwbGFuIGlzIGFjdHVh bGx5IGludGVyZXN0aW5nLCBvbmx5IG9uZSBwYWdlIHdvdWxkIGdldAorCQkgKiBmZXRjaGVk IHBlciBzY2FuIGFueXdheSwgc28gaXQgc2hvdWxkbid0IG1hdHRlciBtdWNoLikKKwkJICov CisJCXBhZ2VzX2ZldGNoZWQgPSBjZWlsKGluZGV4U2VsZWN0aXZpdHkgKiAoZG91YmxlKSBi YXNlcmVsLT5wYWdlcyk7CisKKwkJcGFnZXNfZmV0Y2hlZCA9IGluZGV4X3BhZ2VzX2ZldGNo ZWQocGFnZXNfZmV0Y2hlZCAqIGxvb3BfY291bnQsCisJCQkJCQkJCQkJCWJhc2VyZWwtPnBh Z2VzLAorCQkJCQkJCQkJCQkoZG91YmxlKSBpbmRleC0+cGFnZXMsCisJCQkJCQkJCQkJCXJv b3QpOworCisJCW1pbl9JT19jb3N0ID0gKHBhZ2VzX2ZldGNoZWQgKiBzcGNfcmFuZG9tX3Bh Z2VfY29zdCkgLyBsb29wX2NvdW50OworCX0KKwllbHNlCisJeworCQkvKgorCQkgKiBOb3Jt YWwgY2FzZTogYXBwbHkgdGhlIE1hY2tlcnQgYW5kIExvaG1hbiBmb3JtdWxhLCBhbmQgdGhl bgorCQkgKiBpbnRlcnBvbGF0ZSBiZXR3ZWVuIHRoYXQgYW5kIHRoZSBjb3JyZWxhdGlvbi1k ZXJpdmVkIHJlc3VsdC4KKwkJICovCisJCXBhZ2VzX2ZldGNoZWQgPSBpbmRleF9wYWdlc19m ZXRjaGVkKHR1cGxlc19mZXRjaGVkLAorCQkJCQkJCQkJCQliYXNlcmVsLT5wYWdlcywKKwkJ CQkJCQkJCQkJKGRvdWJsZSkgaW5kZXgtPnBhZ2VzLAorCQkJCQkJCQkJCQlyb290KTsKKwor CQlyYW5kX2hlYXBfcGFnZXMgPSBwYWdlc19mZXRjaGVkOworCisJCS8qIG1heF9JT19jb3N0 IGlzIGZvciB0aGUgcGVyZmVjdGx5IHVuY29ycmVsYXRlZCBjYXNlIChjc3F1YXJlZD0wKSAq LworCQltYXhfSU9fY29zdCA9IHBhZ2VzX2ZldGNoZWQgKiBzcGNfcmFuZG9tX3BhZ2VfY29z dDsKKworCQkvKiBtaW5fSU9fY29zdCBpcyBmb3IgdGhlIHBlcmZlY3RseSBjb3JyZWxhdGVk IGNhc2UgKGNzcXVhcmVkPTEpICovCisJCXBhZ2VzX2ZldGNoZWQgPSBjZWlsKGluZGV4U2Vs ZWN0aXZpdHkgKiAoZG91YmxlKSBiYXNlcmVsLT5wYWdlcyk7CisKKwkJaWYgKHBhZ2VzX2Zl dGNoZWQgPiAwKQorCQl7CisJCQltaW5fSU9fY29zdCA9IHNwY19yYW5kb21fcGFnZV9jb3N0 OworCQkJaWYgKHBhZ2VzX2ZldGNoZWQgPiAxKQorCQkJCW1pbl9JT19jb3N0ICs9IChwYWdl c19mZXRjaGVkIC0gMSkgKiBzcGNfc2VxX3BhZ2VfY29zdDsKKwkJfQorCQllbHNlCisJCQlt aW5fSU9fY29zdCA9IDA7CisJfQorCisJaWYgKHBhcnRpYWxfcGF0aCkKKwl7CisJCS8qCisJ CSAqIEVzdGltYXRlIHRoZSBudW1iZXIgb2YgcGFyYWxsZWwgd29ya2VycyByZXF1aXJlZCB0 byBzY2FuIGluZGV4LiBVc2UKKwkJICogdGhlIG51bWJlciBvZiBoZWFwIHBhZ2VzIGNvbXB1 dGVkIGNvbnNpZGVyaW5nIGhlYXAgZmV0Y2hlcyB3b24ndCBiZQorCQkgKiBzZXF1ZW50aWFs IGFzIGZvciBwYXJhbGxlbCBzY2FucyB0aGUgcGFnZXMgYXJlIGFjY2Vzc2VkIGluIHJhbmRv bQorCQkgKiBvcmRlci4KKwkJICovCisJCXBhdGgtPmlwYXRoLnBhdGgucGFyYWxsZWxfd29y a2VycyA9IGNvbXB1dGVfcGFyYWxsZWxfd29ya2VyKGJhc2VyZWwsCisJCQkJCQkJCQkJCQkJ CQkgIHJhbmRfaGVhcF9wYWdlcywKKwkJCQkJCQkJCQkJCQkJCSAgaW5kZXhfcGFnZXMsCisJ CQkJCQkJCQkJCQkJCQkgIG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIpOworCisJ CS8qCisJCSAqIEZhbGwgb3V0IGlmIHdvcmtlcnMgY2FuJ3QgYmUgYXNzaWduZWQgZm9yIHBh cmFsbGVsIHNjYW4sIGJlY2F1c2UgaW4KKwkJICogc3VjaCBhIGNhc2UgdGhpcyBwYXRoIHdp bGwgYmUgcmVqZWN0ZWQuICBTbyB0aGVyZSBpcyBubyBiZW5lZml0IGluCisJCSAqIGRvaW5n IGV4dHJhIGNvbXB1dGF0aW9uLgorCQkgKi8KKwkJaWYgKHBhdGgtPmlwYXRoLnBhdGgucGFy YWxsZWxfd29ya2VycyA8PSAwKQorCQkJcmV0dXJuOworCisJCXBhdGgtPmlwYXRoLnBhdGgu cGFyYWxsZWxfYXdhcmUgPSB0cnVlOworCX0KKworCS8qCisJICogTm93IGludGVycG9sYXRl IGJhc2VkIG9uIGVzdGltYXRlZCBpbmRleCBvcmRlciBjb3JyZWxhdGlvbiB0byBnZXQgdG90 YWwKKwkgKiBkaXNrIEkvTyBjb3N0IGZvciBtYWluIHRhYmxlIGFjY2Vzc2VzLgorCSAqLwor CWNzcXVhcmVkID0gaW5kZXhDb3JyZWxhdGlvbiAqIGluZGV4Q29ycmVsYXRpb247CisKKwly dW5fY29zdCArPSBtYXhfSU9fY29zdCArIGNzcXVhcmVkICogKG1pbl9JT19jb3N0IC0gbWF4 X0lPX2Nvc3QpOworCisJLyoKKwkgKiBFc3RpbWF0ZSBDUFUgY29zdHMgcGVyIHR1cGxlLgor CSAqCisJICogV2hhdCB3ZSB3YW50IGhlcmUgaXMgY3B1X3R1cGxlX2Nvc3QgcGx1cyB0aGUg ZXZhbHVhdGlvbiBjb3N0cyBvZiBhbnkKKwkgKiBxdWFsIGNsYXVzZXMgdGhhdCB3ZSBoYXZl IHRvIGV2YWx1YXRlIGFzIHFwcXVhbHMuCisJICovCisJY29zdF9xdWFsX2V2YWwoJnFwcXVh bF9jb3N0LCBxcHF1YWxzLCByb290KTsKKworCXN0YXJ0dXBfY29zdCArPSBxcHF1YWxfY29z dC5zdGFydHVwOworCWNwdV9wZXJfdHVwbGUgPSBjcHVfdHVwbGVfY29zdCArIHFwcXVhbF9j b3N0LnBlcl90dXBsZTsKKworCWNwdV9ydW5fY29zdCArPSBjcHVfcGVyX3R1cGxlICogdHVw bGVzX2ZldGNoZWQ7CisKKwkvKiB0bGlzdCBldmFsIGNvc3RzIGFyZSBwYWlkIHBlciBvdXRw dXQgcm93LCBub3QgcGVyIHR1cGxlIHNjYW5uZWQgKi8KKwlzdGFydHVwX2Nvc3QgKz0gcGF0 aC0+aXBhdGgucGF0aC5wYXRodGFyZ2V0LT5jb3N0LnN0YXJ0dXA7CisJY3B1X3J1bl9jb3N0 ICs9IHBhdGgtPmlwYXRoLnBhdGgucGF0aHRhcmdldC0+Y29zdC5wZXJfdHVwbGUgKiBwYXRo LT5pcGF0aC5wYXRoLnJvd3M7CisKKwkvKiBBZGp1c3QgY29zdGluZyBmb3IgcGFyYWxsZWxp c20sIGlmIHVzZWQuICovCisJaWYgKHBhdGgtPmlwYXRoLnBhdGgucGFyYWxsZWxfd29ya2Vy cyA+IDApCisJeworCQlkb3VibGUJCXBhcmFsbGVsX2Rpdmlzb3IgPSBnZXRfcGFyYWxsZWxf ZGl2aXNvcigmcGF0aC0+aXBhdGgucGF0aCk7CisKKwkJcGF0aC0+aXBhdGgucGF0aC5yb3dz ID0gY2xhbXBfcm93X2VzdChwYXRoLT5pcGF0aC5wYXRoLnJvd3MgLyBwYXJhbGxlbF9kaXZp c29yKTsKKworCQkvKiBUaGUgQ1BVIGNvc3QgaXMgZGl2aWRlZCBhbW9uZyBhbGwgdGhlIHdv cmtlcnMuICovCisJCWNwdV9ydW5fY29zdCAvPSBwYXJhbGxlbF9kaXZpc29yOworCX0KKwor CXJ1bl9jb3N0ICs9IGNwdV9ydW5fY29zdDsKKworCXBhdGgtPmlwYXRoLnBhdGguc3RhcnR1 cF9jb3N0ID0gc3RhcnR1cF9jb3N0OworCXBhdGgtPmlwYXRoLnBhdGgudG90YWxfY29zdCA9 IHN0YXJ0dXBfY29zdCArIHJ1bl9jb3N0OworfQorCiAvKgogICogZXh0cmFjdF9ub25pbmRl eF9jb25kaXRpb25zCiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3Bh dGgvaW5keHBhdGguYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2luZHhwYXRoLmMK aW5kZXggNzIxYTA3NTIwMS4uMTMyNzE4ZmI3MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv b3B0aW1pemVyL3BhdGgvaW5keHBhdGguYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIv cGF0aC9pbmR4cGF0aC5jCkBAIC0xNywxMiArMTcsMTYgQEAKIAogI2luY2x1ZGUgPG1hdGgu aD4KIAorI2luY2x1ZGUgImFjY2Vzcy9icmluX2ludGVybmFsLmgiCisjaW5jbHVkZSAiYWNj ZXNzL3JlbGF0aW9uLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3N0cmF0bnVtLmgiCiAjaW5jbHVk ZSAiYWNjZXNzL3N5c2F0dHIuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2FtLmgiCiAjaW5j bHVkZSAiY2F0YWxvZy9wZ19vcGVyYXRvci5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfb3Bj bGFzcy5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfb3BmYW1pbHkuaCIKICNpbmNsdWRlICJj YXRhbG9nL3BnX3R5cGUuaCIKKyNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJu b2Rlcy9tYWtlZnVuY3MuaCIKICNpbmNsdWRlICJub2Rlcy9ub2RlRnVuY3MuaCIKICNpbmNs dWRlICJub2Rlcy9zdXBwb3J0bm9kZXMuaCIKQEAgLTMyLDEwICszNiwxMyBAQAogI2luY2x1 ZGUgIm9wdGltaXplci9wYXRocy5oIgogI2luY2x1ZGUgIm9wdGltaXplci9wcmVwLmgiCiAj aW5jbHVkZSAib3B0aW1pemVyL3Jlc3RyaWN0aW5mby5oIgorI2luY2x1ZGUgInV0aWxzL3Jl bC5oIgogI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL3Nl bGZ1bmNzLmgiCiAKIAorYm9vbAkJZW5hYmxlX2JyaW5zb3J0ID0gdHJ1ZTsKKwogLyogWFhY IHNlZSBQYXJ0Q29sbE1hdGNoZXNFeHByQ29sbCAqLwogI2RlZmluZSBJbmRleENvbGxNYXRj aGVzRXhwckNvbGwoaWR4Y29sbGF0aW9uLCBleHByY29sbGF0aW9uKSBcCiAJKChpZHhjb2xs YXRpb24pID09IEludmFsaWRPaWQgfHwgKGlkeGNvbGxhdGlvbikgPT0gKGV4cHJjb2xsYXRp b24pKQpAQCAtMTEwMyw2ICsxMTEwLDE4MiBAQCBidWlsZF9pbmRleF9wYXRocyhQbGFubmVy SW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVsLAogCQl9CiAJfQogCisJLyoKKwkgKiBJZiB0 aGlzIGlzIGEgQlJJTiBpbmRleCB3aXRoIHN1aXRhYmxlIG9wY2xhc3MgKG1pbm1heCBvciBz dWNoKSwgd2UgbWF5CisJICogdHJ5IGRvaW5nIEJSSU4gc29ydC4gQlJJTiBpbmRleGVzIGFy ZSBub3Qgb3JkZXJlZCBhbmQgYW1jYW5vcmRlcmJ5b3AKKwkgKiBpcyBzZXQgdG8gZmFsc2Us IHNvIHdlIHByb2JhYmx5IHdpbGwgbmVlZCBzb21lIG5ldyBvcGNsYXNzIGZsYWcgdG8KKwkg KiBtYXJrIGluZGV4ZXMgdGhhdCBzdXBwb3J0IHRoaXMuCisJICovCisJaWYgKGVuYWJsZV9i cmluc29ydCAmJiBwYXRoa2V5c19wb3NzaWJseV91c2VmdWwpCisJeworCQlMaXN0Q2VsbCAq bGM7CisJCVJlbGF0aW9uIHJlbDIgPSByZWxhdGlvbl9vcGVuKGluZGV4LT5pbmRleG9pZCwg Tm9Mb2NrKTsKKwkJaW50CQkgaWR4OworCisJCS8qCisJCSAqIFRyeSBnZW5lcmF0aW5nIHNv cnRlZCBwYXRocyBmb3IgZWFjaCBrZXkgd2l0aCB0aGUgcmlnaHQgb3BjbGFzcy4KKwkJICov CisJCWlkeCA9IC0xOworCQlmb3JlYWNoKGxjLCBpbmRleC0+aW5kZXh0bGlzdCkKKwkJewor CQkJVGFyZ2V0RW50cnkJICAgKmluZGV4dGxlID0gKFRhcmdldEVudHJ5ICopIGxmaXJzdChs Yyk7CisJCQlCcmluU29ydFBhdGggICAqYnBhdGg7CisJCQlPaWQJCQkJcmFuZ2Vwcm9jOwor CQkJQXR0ck51bWJlcgkJYXR0bnVtOworCisJCQlpZHgrKzsKKwkJCWF0dG51bSA9IChpZHgg KyAxKTsKKworCisJCQkvKiBYWFggaWdub3JlIG5vbi1CUklOIGluZGV4ZXMgKi8KKwkJCWlm IChyZWwyLT5yZF9yZWwtPnJlbGFtICE9IEJSSU5fQU1fT0lEKQorCQkJCWNvbnRpbnVlOwor CisJCQkvKgorCQkJICogWFhYIElnbm9yZSBrZXlzIG5vdCB1c2luZyBhbiBvcGNsYXNzIHdp dGggdGhlICJyYW5nZXMiIHByb2MuCisJCQkgKiBGb3Igbm93IHdlIG9ubHkgZG8gdGhpcyBm b3Igc29tZSBtaW5tYXggb3BjbGFzc2VzLCBidXQgYWRkaW5nCisJCQkgKiBpdCB0byBhbGwg bWlubWF4IGlzIHNpbXBsZSwgYW5kIGFkZGluZyBpdCB0byBtaW5tYXgtbXVsdGkKKwkJCSAq IHNob3VsZCBub3QgYmUgdmVyeSBoYXJkLgorCQkJICovCisJCQlyYW5nZXByb2MgPSBpbmRl eF9nZXRwcm9jaWQocmVsMiwgYXR0bnVtLCBCUklOX1BST0NOVU1fUkFOR0VTKTsKKwkJCWlm ICghT2lkSXNWYWxpZChyYW5nZXByb2MpKQorCQkJCWNvbnRpbnVlOworCisJCQkvKgorCQkJ ICogWFhYIHN0dWZmIGV4dHJhY3RlZCBmcm9tIGJ1aWxkX2luZGV4X3BhdGhrZXlzLCBleGNl cHQgdGhhdCB3ZQorCQkJICogb25seSBkZWFsIHdpdGggYSBzaW5nbGUgaW5kZXgga2V5IChw cm9kdWNpbmcgYSBzaW5nbGUgcGF0aGtleSksCisJCQkgKiBzbyB3ZSBvbmx5IHNvcnQgb24g YSBzaW5nbGUgY29sdW1uLiBJIGd1ZXNzIHdlIGNvdWxkIHVzZSBtb3JlCisJCQkgKiBpbmRl eCBrZXlzIGFuZCBzb3J0IG9uIG1vcmUgZXhwcmVzc2lvbnM/IFdvdWxkIHRoYXQgbWVhbiB0 aGVzZQorCQkJICoga2V5cyBuZWVkIHRvIGJlIHJhdGhlciB3ZWxsIGNvcnJlbGF0ZWQ/IElu IGFueSBjYXNlLCBpdCBzZWVtcworCQkJICogcmF0aGVyIGNvbXBsZXggdG8gaW1wbGVtZW50 LCBzbyBJIGxlYXZlIGl0IGFzIGEgcG9zc2libGUKKwkJCSAqIGZ1dHVyZSBpbXByb3ZlbWVu dC4KKwkJCSAqCisJCQkgKiBYWFggVGhpcyBjb3VsZCBhbHNvIHVzZSB0aGUgb3RoZXIgQlJJ TiBrZXlzIChldmVuIGZyb20gb3RoZXIKKwkJCSAqIGluZGV4ZXMpIGluIGEgZGlmZmVyZW50 IHdheSAtIHdlIG1pZ2h0IHVzZSB0aGUgb3RoZXIgcmFuZ2VzCisJCQkgKiB0byBxdWlja2x5 IGVsaW1pbmF0ZSBzb21lIG9mIHRoZSBjaHVua3MsIGVzc2VudGlhbGx5IGxpa2UgYQorCQkJ ICogYml0bWFwLCBidXQgbWF5YmUgd2l0aG91dCB1c2luZyB0aGUgYml0bWFwLiBPciB3ZSBt aWdodCB1c2UKKwkJCSAqIG90aGVyIGluZGV4ZXMgdGhyb3VnaCBiaXRtYXBzLgorCQkJICoK KwkJCSAqIFhYWCBUaGlzIGZha2VzIGEgbnVtYmVyIG9mIHBhcmFtZXRlcnMsIGJlY2F1c2Ug d2UgZG9uJ3Qgc3RvcmUKKwkJCSAqIHRoZSBidHJlZSBvcGNsYXNzIGluIHRoZSBpbmRleCwg aW5zdGVhZCB3ZSB1c2UgdGhlIGRlZmF1bHQKKwkJCSAqIG9uZSBmb3IgdGhlIGtleSBkYXRh IHR5cGUuIEFuZCBCUklOIGRvZXMgbm90IGFsbG93IHNwZWNpZnlpbmcKKwkJCSAqCisJCQkg KiBYWFggV2UgZG9uJ3QgYWRkIHRoZSBwYXRoIHRvIHJlc3VsdCwgYmVjYXVzZSB0aGlzIGZ1 bmN0aW9uIGlzCisJCQkgKiBzdXBwb3NlZCB0byBnZW5lcmF0ZSBJbmRleFBhdGhzLiBJbnN0 ZWFkLCB3ZSBqdXN0IGFkZCB0aGUgcGF0aAorCQkJICogdXNpbmcgYWRkX3BhdGgoKS4gV2Ug c2hvdWxkIGJlIGJ1aWxkaW5nIHRoaXMgaW4gYSBkaWZmZXJlbnQKKwkJCSAqIHBsYWNlLCBw ZXJoYXBzIGluIGNyZWF0ZV9pbmRleF9wYXRocygpIG9yIHNvLgorCQkJICoKKwkJCSAqIFhY WCBCeSBidWlsZGluZyBpdCBlbHNld2hlcmUsIHdlIGNvdWxkIGFsc28gbGV2ZXJhZ2UgdGhl IGluZGV4CisJCQkgKiBwYXRocyB3ZSd2ZSBidWlsdCBoZXJlLCBwYXJ0aWN1bGFybHkgdGhl IGJpdG1hcCBpbmRleCBwYXRocywKKwkJCSAqIHdoaWNoIHdlIGNvdWxkIHVzZSB0byBlbGlt aW5hdGUgbWFueSBvZiB0aGUgcmFuZ2VzLgorCQkJICoKKwkJCSAqIFhYWCBXZSBkb24ndCBo YXZlIGFueSBleHBsaWNpdCBvcmRlcmluZyBhc3NvY2lhdGVkIHdpdGggdGhlCisJCQkgKiBC UklOIGluZGV4LCBlLmcuIHdlIGRvbid0IGhhdmUgQVNDL0RFU0MgYW5kIE5VTExTIEZJUlNU L0xBU1QuCisJCQkgKiBTbyB0aGlzIGlzIG5vdCBlbmNvZGVkIGluIHRoZSBpbmRleCwgYW5k IHdlIGNhbiBzYXRpc2Z5IGFsbAorCQkJICogdGhlc2UgY2FzZXMgLSBidXQgd2UgbmVlZCB0 byBhZGQgcGF0aHMgZm9yIGVhY2ggY29tYmluYXRpb24uCisJCQkgKiBJIHdvbmRlciBpZiB0 aGVyZSdzIGEgYmV0dGVyIHdheSB0byBkbyB0aGlzLgorCQkJICovCisKKwkJCS8qIEFTQyBO VUxMUyBMQVNUICovCisJCQlpbmRleF9wYXRoa2V5cyA9IGJ1aWxkX2luZGV4X3BhdGhrZXlz X2JyaW4ocm9vdCwgaW5kZXgsIGluZGV4dGxlLAorCQkJCQkJCQkJCQkJCSAgIGlkeCwKKwkJ CQkJCQkJCQkJCQkgICBmYWxzZSwJLyogcmV2ZXJzZV9zb3J0ICovCisJCQkJCQkJCQkJCQkJ ICAgZmFsc2UpOwkvKiBudWxsc19maXJzdCAqLworCisJCQl1c2VmdWxfcGF0aGtleXMgPSB0 cnVuY2F0ZV91c2VsZXNzX3BhdGhrZXlzKHJvb3QsIHJlbCwKKwkJCQkJCQkJCQkJCQkJaW5k ZXhfcGF0aGtleXMpOworCisJCQlpZiAodXNlZnVsX3BhdGhrZXlzICE9IE5JTCkKKwkJCXsK KwkJCQlicGF0aCA9IGNyZWF0ZV9icmluc29ydF9wYXRoKHJvb3QsIGluZGV4LAorCQkJCQkJ CQkJCQkgaW5kZXhfY2xhdXNlcywKKwkJCQkJCQkJCQkJIHVzZWZ1bF9wYXRoa2V5cywKKwkJ CQkJCQkJCQkJIEZvcndhcmRTY2FuRGlyZWN0aW9uLAorCQkJCQkJCQkJCQkgaW5kZXhfb25s eV9zY2FuLAorCQkJCQkJCQkJCQkgb3V0ZXJfcmVsaWRzLAorCQkJCQkJCQkJCQkgbG9vcF9j b3VudCwKKwkJCQkJCQkJCQkJIGZhbHNlKTsKKworCQkJCS8qIGNoZWF0IGFuZCBhZGQgaXQg YW55d2F5ICovCisJCQkJYWRkX3BhdGgocmVsLCAoUGF0aCAqKSBicGF0aCk7CisJCQl9CisK KwkJCS8qIERFU0MgTlVMTFMgTEFTVCAqLworCQkJaW5kZXhfcGF0aGtleXMgPSBidWlsZF9p bmRleF9wYXRoa2V5c19icmluKHJvb3QsIGluZGV4LCBpbmRleHRsZSwKKwkJCQkJCQkJCQkJ CQkgICBpZHgsCisJCQkJCQkJCQkJCQkJICAgdHJ1ZSwJLyogcmV2ZXJzZV9zb3J0ICovCisJ CQkJCQkJCQkJCQkJICAgZmFsc2UpOwkvKiBudWxsc19maXJzdCAqLworCisJCQl1c2VmdWxf cGF0aGtleXMgPSB0cnVuY2F0ZV91c2VsZXNzX3BhdGhrZXlzKHJvb3QsIHJlbCwKKwkJCQkJ CQkJCQkJCQkJaW5kZXhfcGF0aGtleXMpOworCisJCQlpZiAodXNlZnVsX3BhdGhrZXlzICE9 IE5JTCkKKwkJCXsKKwkJCQlicGF0aCA9IGNyZWF0ZV9icmluc29ydF9wYXRoKHJvb3QsIGlu ZGV4LAorCQkJCQkJCQkJCQkgaW5kZXhfY2xhdXNlcywKKwkJCQkJCQkJCQkJIHVzZWZ1bF9w YXRoa2V5cywKKwkJCQkJCQkJCQkJIEJhY2t3YXJkU2NhbkRpcmVjdGlvbiwKKwkJCQkJCQkJ CQkJIGluZGV4X29ubHlfc2NhbiwKKwkJCQkJCQkJCQkJIG91dGVyX3JlbGlkcywKKwkJCQkJ CQkJCQkJIGxvb3BfY291bnQsCisJCQkJCQkJCQkJCSBmYWxzZSk7CisKKwkJCQkvKiBjaGVh dCBhbmQgYWRkIGl0IGFueXdheSAqLworCQkJCWFkZF9wYXRoKHJlbCwgKFBhdGggKikgYnBh dGgpOworCQkJfQorCisJCQkvKiBBU0MgTlVMTFMgRklSU1QgKi8KKwkJCWluZGV4X3BhdGhr ZXlzID0gYnVpbGRfaW5kZXhfcGF0aGtleXNfYnJpbihyb290LCBpbmRleCwgaW5kZXh0bGUs CisJCQkJCQkJCQkJCQkJICAgaWR4LAorCQkJCQkJCQkJCQkJCSAgIGZhbHNlLAkvKiByZXZl cnNlX3NvcnQgKi8KKwkJCQkJCQkJCQkJCQkgICB0cnVlKTsJLyogbnVsbHNfZmlyc3QgKi8K KworCQkJdXNlZnVsX3BhdGhrZXlzID0gdHJ1bmNhdGVfdXNlbGVzc19wYXRoa2V5cyhyb290 LCByZWwsCisJCQkJCQkJCQkJCQkJCWluZGV4X3BhdGhrZXlzKTsKKworCQkJaWYgKHVzZWZ1 bF9wYXRoa2V5cyAhPSBOSUwpCisJCQl7CisJCQkJYnBhdGggPSBjcmVhdGVfYnJpbnNvcnRf cGF0aChyb290LCBpbmRleCwKKwkJCQkJCQkJCQkJIGluZGV4X2NsYXVzZXMsCisJCQkJCQkJ CQkJCSB1c2VmdWxfcGF0aGtleXMsCisJCQkJCQkJCQkJCSBGb3J3YXJkU2NhbkRpcmVjdGlv biwKKwkJCQkJCQkJCQkJIGluZGV4X29ubHlfc2NhbiwKKwkJCQkJCQkJCQkJIG91dGVyX3Jl bGlkcywKKwkJCQkJCQkJCQkJIGxvb3BfY291bnQsCisJCQkJCQkJCQkJCSBmYWxzZSk7CisK KwkJCQkvKiBjaGVhdCBhbmQgYWRkIGl0IGFueXdheSAqLworCQkJCWFkZF9wYXRoKHJlbCwg KFBhdGggKikgYnBhdGgpOworCQkJfQorCisJCQkvKiBERVNDIE5VTExTIEZJUlNUICovCisJ CQlpbmRleF9wYXRoa2V5cyA9IGJ1aWxkX2luZGV4X3BhdGhrZXlzX2JyaW4ocm9vdCwgaW5k ZXgsIGluZGV4dGxlLAorCQkJCQkJCQkJCQkJCSAgIGlkeCwKKwkJCQkJCQkJCQkJCQkgICB0 cnVlLAkvKiByZXZlcnNlX3NvcnQgKi8KKwkJCQkJCQkJCQkJCQkgICB0cnVlKTsJLyogbnVs bHNfZmlyc3QgKi8KKworCQkJdXNlZnVsX3BhdGhrZXlzID0gdHJ1bmNhdGVfdXNlbGVzc19w YXRoa2V5cyhyb290LCByZWwsCisJCQkJCQkJCQkJCQkJCWluZGV4X3BhdGhrZXlzKTsKKwor CQkJaWYgKHVzZWZ1bF9wYXRoa2V5cyAhPSBOSUwpCisJCQl7CisJCQkJYnBhdGggPSBjcmVh dGVfYnJpbnNvcnRfcGF0aChyb290LCBpbmRleCwKKwkJCQkJCQkJCQkJIGluZGV4X2NsYXVz ZXMsCisJCQkJCQkJCQkJCSB1c2VmdWxfcGF0aGtleXMsCisJCQkJCQkJCQkJCSBCYWNrd2Fy ZFNjYW5EaXJlY3Rpb24sCisJCQkJCQkJCQkJCSBpbmRleF9vbmx5X3NjYW4sCisJCQkJCQkJ CQkJCSBvdXRlcl9yZWxpZHMsCisJCQkJCQkJCQkJCSBsb29wX2NvdW50LAorCQkJCQkJCQkJ CQkgZmFsc2UpOworCisJCQkJLyogY2hlYXQgYW5kIGFkZCBpdCBhbnl3YXkgKi8KKwkJCQlh ZGRfcGF0aChyZWwsIChQYXRoICopIGJwYXRoKTsKKwkJCX0KKwkJfQorCisJCXJlbGF0aW9u X2Nsb3NlKHJlbDIsIE5vTG9jayk7CisJfQorCiAJcmV0dXJuIHJlc3VsdDsKIH0KIApkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvcGF0aGtleXMuYyBiL3NyYy9i YWNrZW5kL29wdGltaXplci9wYXRoL3BhdGhrZXlzLmMKaW5kZXggYzRlN2Y5N2Y2OC4uMTBl YTIzYTUwMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvcGF0aGtl eXMuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9wYXRoa2V5cy5jCkBAIC0y Nyw2ICsyNyw3IEBACiAjaW5jbHVkZSAib3B0aW1pemVyL3BhdGhzLmgiCiAjaW5jbHVkZSAi cGFydGl0aW9uaW5nL3BhcnRib3VuZHMuaCIKICNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUu aCIKKyNpbmNsdWRlICJ1dGlscy90eXBjYWNoZS5oIgogCiAKIHN0YXRpYyBib29sIHBhdGhr ZXlfaXNfcmVkdW5kYW50KFBhdGhLZXkgKm5ld19wYXRoa2V5LCBMaXN0ICpwYXRoa2V5cyk7 CkBAIC02MjIsNiArNjIzLDU0IEBAIGJ1aWxkX2luZGV4X3BhdGhrZXlzKFBsYW5uZXJJbmZv ICpyb290LAogCXJldHVybiByZXR2YWw7CiB9CiAKKworTGlzdCAqCitidWlsZF9pbmRleF9w YXRoa2V5c19icmluKFBsYW5uZXJJbmZvICpyb290LAorCQkJCQkJICBJbmRleE9wdEluZm8g KmluZGV4LAorCQkJCQkJICBUYXJnZXRFbnRyeSAgKnRsZSwKKwkJCQkJCSAgaW50IGlkeCwK KwkJCQkJCSAgYm9vbCByZXZlcnNlX3NvcnQsCisJCQkJCQkgIGJvb2wgbnVsbHNfZmlyc3Qp Cit7CisJVHlwZUNhY2hlRW50cnkgKnR5cGNhY2hlOworCVBhdGhLZXkJCSAgICpjcGF0aGtl eTsKKwlPaWQJCQkJc29ydG9wZmFtaWx5OworCisJLyoKKwkgKiBHZXQgZGVmYXVsdCBidHJl ZSBvcGZhbWlseSBmb3IgdGhlIHR5cGUsIGV4dHJhY3RlZCBmcm9tIHRoZQorCSAqIGVudHJ5 IGluIGluZGV4IHRhcmdldGxpc3QuCisJICoKKwkgKiBYWFggSXMgdGhlcmUgYSBiZXR0ZXIg LyBtb3JlIGNvcnJlY3Qgd2F5IHRvIGRvIHRoaXM/CisJICovCisJdHlwY2FjaGUgPSBsb29r dXBfdHlwZV9jYWNoZShleHByVHlwZSgoTm9kZSAqKSB0bGUtPmV4cHIpLAorCQkJCQkJCQkg VFlQRUNBQ0hFX0JUUkVFX09QRkFNSUxZKTsKKwlzb3J0b3BmYW1pbHkgPSB0eXBjYWNoZS0+ YnRyZWVfb3BmOworCisJLyoKKwkgKiBPSywgdHJ5IHRvIG1ha2UgYSBjYW5vbmljYWwgcGF0 aGtleSBmb3IgdGhpcyBzb3J0IGtleS4gIE5vdGUgd2UncmUKKwkgKiB1bmRlcm5lYXRoIGFu eSBvdXRlciBqb2lucywgc28gbnVsbGFibGVfcmVsaWRzIHNob3VsZCBiZSBOVUxMLgorCSAq LworCWNwYXRoa2V5ID0gbWFrZV9wYXRoa2V5X2Zyb21fc29ydGluZm8ocm9vdCwKKwkJCQkJ CQkJCQkgIHRsZS0+ZXhwciwKKwkJCQkJCQkJCQkgIHNvcnRvcGZhbWlseSwKKwkJCQkJCQkJ CQkgIGluZGV4LT5vcGNpbnR5cGVbaWR4XSwKKwkJCQkJCQkJCQkgIGluZGV4LT5pbmRleGNv bGxhdGlvbnNbaWR4XSwKKwkJCQkJCQkJCQkgIHJldmVyc2Vfc29ydCwKKwkJCQkJCQkJCQkg IG51bGxzX2ZpcnN0LAorCQkJCQkJCQkJCSAgMCwKKwkJCQkJCQkJCQkgIGluZGV4LT5yZWwt PnJlbGlkcywKKwkJCQkJCQkJCQkgIGZhbHNlKTsKKworCS8qCisJICogVGhlcmUgbWF5IGJl IG5vIHBhdGhrZXkgaWYgd2UgaGF2ZW4ndCBtYXRjaGVkIGFueSBzb3J0a2V5LCBpbiB3aGlj aAorCSAqIGNhc2UgaWdub3JlIGl0LgorCSAqLworCWlmICghY3BhdGhrZXkpCisJCXJldHVy biBOSUw7CisKKwlyZXR1cm4gbGlzdF9tYWtlMShjcGF0aGtleSk7Cit9CisKIC8qCiAgKiBw YXJ0a2V5X2lzX2Jvb2xfY29uc3RhbnRfZm9yX3F1ZXJ5CiAgKgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5jIGIvc3JjL2JhY2tlbmQvb3B0 aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5jCmluZGV4IDEzNDEzMDQ3NmUuLjc4ODM3OTI4ZDkg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYwor KysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMKQEAgLTEyNCw2 ICsxMjQsOCBAQCBzdGF0aWMgU2FtcGxlU2NhbiAqY3JlYXRlX3NhbXBsZXNjYW5fcGxhbihQ bGFubmVySW5mbyAqcm9vdCwgUGF0aCAqYmVzdF9wYXRoLAogCQkJCQkJCQkJCSAgTGlzdCAq dGxpc3QsIExpc3QgKnNjYW5fY2xhdXNlcyk7CiBzdGF0aWMgU2NhbiAqY3JlYXRlX2luZGV4 c2Nhbl9wbGFuKFBsYW5uZXJJbmZvICpyb290LCBJbmRleFBhdGggKmJlc3RfcGF0aCwKIAkJ CQkJCQkJICAgTGlzdCAqdGxpc3QsIExpc3QgKnNjYW5fY2xhdXNlcywgYm9vbCBpbmRleG9u bHkpOworc3RhdGljIEJyaW5Tb3J0ICpjcmVhdGVfYnJpbnNvcnRfcGxhbihQbGFubmVySW5m byAqcm9vdCwgQnJpblNvcnRQYXRoICpiZXN0X3BhdGgsCisJCQkJCQkJCQkgIExpc3QgKnRs aXN0LCBMaXN0ICpzY2FuX2NsYXVzZXMpOwogc3RhdGljIEJpdG1hcEhlYXBTY2FuICpjcmVh dGVfYml0bWFwX3NjYW5fcGxhbihQbGFubmVySW5mbyAqcm9vdCwKIAkJCQkJCQkJCQkJICAg Qml0bWFwSGVhcFBhdGggKmJlc3RfcGF0aCwKIAkJCQkJCQkJCQkJICAgTGlzdCAqdGxpc3Qs IExpc3QgKnNjYW5fY2xhdXNlcyk7CkBAIC0xOTEsNiArMTkzLDkgQEAgc3RhdGljIEluZGV4 T25seVNjYW4gKm1ha2VfaW5kZXhvbmx5c2NhbihMaXN0ICpxcHRsaXN0LCBMaXN0ICpxcHF1 YWwsCiAJCQkJCQkJCQkJIExpc3QgKmluZGV4b3JkZXJieSwKIAkJCQkJCQkJCQkgTGlzdCAq aW5kZXh0bGlzdCwKIAkJCQkJCQkJCQkgU2NhbkRpcmVjdGlvbiBpbmRleHNjYW5kaXIpOwor c3RhdGljIEJyaW5Tb3J0ICptYWtlX2JyaW5zb3J0KExpc3QgKnFwdGxpc3QsIExpc3QgKnFw cXVhbCwgSW5kZXggc2NhbnJlbGlkLAorCQkJCQkJCSAgIE9pZCBpbmRleGlkLCBMaXN0ICpp bmRleHF1YWwsIExpc3QgKmluZGV4cXVhbG9yaWcsCisJCQkJCQkJICAgU2NhbkRpcmVjdGlv biBpbmRleHNjYW5kaXIpOwogc3RhdGljIEJpdG1hcEluZGV4U2NhbiAqbWFrZV9iaXRtYXBf aW5kZXhzY2FuKEluZGV4IHNjYW5yZWxpZCwgT2lkIGluZGV4aWQsCiAJCQkJCQkJCQkJCSAg TGlzdCAqaW5kZXhxdWFsLAogCQkJCQkJCQkJCQkgIExpc3QgKmluZGV4cXVhbG9yaWcpOwpA QCAtNDEwLDYgKzQxNSw5IEBAIGNyZWF0ZV9wbGFuX3JlY3Vyc2UoUGxhbm5lckluZm8gKnJv b3QsIFBhdGggKmJlc3RfcGF0aCwgaW50IGZsYWdzKQogCQljYXNlIFRfQ3VzdG9tU2NhbjoK IAkJCXBsYW4gPSBjcmVhdGVfc2Nhbl9wbGFuKHJvb3QsIGJlc3RfcGF0aCwgZmxhZ3MpOwog CQkJYnJlYWs7CisJCWNhc2UgVF9CcmluU29ydDoKKwkJCXBsYW4gPSBjcmVhdGVfc2Nhbl9w bGFuKHJvb3QsIGJlc3RfcGF0aCwgZmxhZ3MpOworCQkJYnJlYWs7CiAJCWNhc2UgVF9IYXNo Sm9pbjoKIAkJY2FzZSBUX01lcmdlSm9pbjoKIAkJY2FzZSBUX05lc3RMb29wOgpAQCAtNzc2 LDYgKzc4NCwxMyBAQCBjcmVhdGVfc2Nhbl9wbGFuKFBsYW5uZXJJbmZvICpyb290LCBQYXRo ICpiZXN0X3BhdGgsIGludCBmbGFncykKIAkJCQkJCQkJCQkJCSAgIHNjYW5fY2xhdXNlcyk7 CiAJCQlicmVhazsKIAorCQljYXNlIFRfQnJpblNvcnQ6CisJCQlwbGFuID0gKFBsYW4gKikg Y3JlYXRlX2JyaW5zb3J0X3BsYW4ocm9vdCwKKwkJCQkJCQkJCQkJCSAoQnJpblNvcnRQYXRo ICopIGJlc3RfcGF0aCwKKwkJCQkJCQkJCQkJCSB0bGlzdCwKKwkJCQkJCQkJCQkJCSBzY2Fu X2NsYXVzZXMpOworCQkJYnJlYWs7CisKIAkJZGVmYXVsdDoKIAkJCWVsb2coRVJST1IsICJ1 bnJlY29nbml6ZWQgbm9kZSB0eXBlOiAlZCIsCiAJCQkJIChpbnQpIGJlc3RfcGF0aC0+cGF0 aHR5cGUpOwpAQCAtMzE4NSw2ICszMjAwLDE1NCBAQCBjcmVhdGVfaW5kZXhzY2FuX3BsYW4o UGxhbm5lckluZm8gKnJvb3QsCiAJcmV0dXJuIHNjYW5fcGxhbjsKIH0KIAorLyoKKyAqIGNy ZWF0ZV9icmluc29ydF9wbGFuCisgKgkgIFJldHVybnMgYSBicmluc29ydCBwbGFuIGZvciB0 aGUgYmFzZSByZWxhdGlvbiBzY2FubmVkIGJ5ICdiZXN0X3BhdGgnCisgKgkgIHdpdGggcmVz dHJpY3Rpb24gY2xhdXNlcyAnc2Nhbl9jbGF1c2VzJyBhbmQgdGFyZ2V0bGlzdCAndGxpc3Qn LgorICoKKyAqIFRoaXMgaXMgbW9zdGx5IGEgc2xpZ2hseSBzaW1wbGlmaWVkIHZlcnNpb24g b2YgY3JlYXRlX2luZGV4c2Nhbl9wbGFuLCB3aXRoCisgKiB0aGUgdW5lY2Vzc2FyeSBwYXJ0 cyByZW1vdmVkICh3ZSBkb24ndCBzdXBwb3J0IGluZGV4b25seSBzY2Fucywgb3IgcmVvcmRl cmluZworICogYW5kIHNpbWlsYXIgc3R1ZmYpLgorICovCitzdGF0aWMgQnJpblNvcnQgKgor Y3JlYXRlX2JyaW5zb3J0X3BsYW4oUGxhbm5lckluZm8gKnJvb3QsCisJCQkJCSBCcmluU29y dFBhdGggKmJlc3RfcGF0aCwKKwkJCQkJIExpc3QgKnRsaXN0LAorCQkJCQkgTGlzdCAqc2Nh bl9jbGF1c2VzKQoreworCUJyaW5Tb3J0ICAgKmJyaW5zb3J0X3BsYW47CisJTGlzdAkgICAq aW5kZXhjbGF1c2VzID0gYmVzdF9wYXRoLT5pcGF0aC5pbmRleGNsYXVzZXM7CisJSW5kZXgJ CWJhc2VyZWxpZCA9IGJlc3RfcGF0aC0+aXBhdGgucGF0aC5wYXJlbnQtPnJlbGlkOworCUlu ZGV4T3B0SW5mbyAqaW5kZXhpbmZvID0gYmVzdF9wYXRoLT5pcGF0aC5pbmRleGluZm87CisJ T2lkCQkJaW5kZXhvaWQgPSBpbmRleGluZm8tPmluZGV4b2lkOworCUxpc3QJICAgKnFwcXVh bDsKKwlMaXN0CSAgICpzdHJpcHBlZF9pbmRleHF1YWxzOworCUxpc3QJICAgKmZpeGVkX2lu ZGV4cXVhbHM7CisJTGlzdENlbGwgICAqbDsKKworCUxpc3QJICAgKnBhdGhrZXlzID0gYmVz dF9wYXRoLT5pcGF0aC5wYXRoLnBhdGhrZXlzOworCisJLyogaXQgc2hvdWxkIGJlIGEgYmFz ZSByZWwuLi4gKi8KKwlBc3NlcnQoYmFzZXJlbGlkID4gMCk7CisJQXNzZXJ0KGJlc3RfcGF0 aC0+aXBhdGgucGF0aC5wYXJlbnQtPnJ0ZWtpbmQgPT0gUlRFX1JFTEFUSU9OKTsKKworCS8q CisJICogRXh0cmFjdCB0aGUgaW5kZXggcXVhbCBleHByZXNzaW9ucyAoc3RyaXBwZWQgb2Yg UmVzdHJpY3RJbmZvcykgZnJvbSB0aGUKKwkgKiBJbmRleENsYXVzZXMgbGlzdCwgYW5kIHBy ZXBhcmUgYSBjb3B5IHdpdGggaW5kZXggVmFycyBzdWJzdGl0dXRlZCBmb3IKKwkgKiB0YWJs ZSBWYXJzLiAgKFRoaXMgc3RlcCBhbHNvIGRvZXMgcmVwbGFjZV9uZXN0bG9vcF9wYXJhbXMg b24gdGhlCisJICogZml4ZWRfaW5kZXhxdWFscy4pCisJICovCisJZml4X2luZGV4cXVhbF9y ZWZlcmVuY2VzKHJvb3QsICZiZXN0X3BhdGgtPmlwYXRoLAorCQkJCQkJCSAmc3RyaXBwZWRf aW5kZXhxdWFscywKKwkJCQkJCQkgJmZpeGVkX2luZGV4cXVhbHMpOworCisJLyoKKwkgKiBU aGUgcXBxdWFsIGxpc3QgbXVzdCBjb250YWluIGFsbCByZXN0cmljdGlvbnMgbm90IGF1dG9t YXRpY2FsbHkgaGFuZGxlZAorCSAqIGJ5IHRoZSBpbmRleCwgb3RoZXIgdGhhbiBwc2V1ZG9j b25zdGFudCBjbGF1c2VzIHdoaWNoIHdpbGwgYmUgaGFuZGxlZAorCSAqIGJ5IGEgc2VwYXJh dGUgZ2F0aW5nIHBsYW4gbm9kZS4gIEFsbCB0aGUgcHJlZGljYXRlcyBpbiB0aGUgaW5kZXhx dWFscworCSAqIHdpbGwgYmUgY2hlY2tlZCAoZWl0aGVyIGJ5IHRoZSBpbmRleCBpdHNlbGYs IG9yIGJ5IG5vZGVJbmRleHNjYW4uYyksCisJICogYnV0IGlmIHRoZXJlIGFyZSBhbnkgInNw ZWNpYWwiIG9wZXJhdG9ycyBpbnZvbHZlZCB0aGVuIHRoZXkgbXVzdCBiZQorCSAqIGluY2x1 ZGVkIGluIHFwcXVhbC4gIFRoZSB1cHNob3QgaXMgdGhhdCBxcHF1YWwgbXVzdCBjb250YWlu CisJICogc2Nhbl9jbGF1c2VzIG1pbnVzIHdoYXRldmVyIGFwcGVhcnMgaW4gaW5kZXhxdWFs cy4KKwkgKgorCSAqIGlzX3JlZHVuZGFudF93aXRoX2luZGV4Y2xhdXNlcygpIGRldGVjdHMg Y2FzZXMgd2hlcmUgYSBzY2FuIGNsYXVzZSBpcworCSAqIHByZXNlbnQgaW4gdGhlIGluZGV4 Y2xhdXNlcyBsaXN0IG9yIGlzIGdlbmVyYXRlZCBmcm9tIHRoZSBzYW1lCisJICogRXF1aXZh bGVuY2VDbGFzcyBhcyBzb21lIGluZGV4Y2xhdXNlLCBhbmQgaXMgdGhlcmVmb3JlIHJlZHVu ZGFudCB3aXRoCisJICogaXQsIHRob3VnaCBub3QgZXF1YWwuICAoVGhlIGxhdHRlciBoYXBw ZW5zIHdoZW4gaW5keHBhdGguYyBwcmVmZXJzIGEKKwkgKiBkaWZmZXJlbnQgZGVyaXZlZCBl cXVhbGl0eSB0aGFuIHdoYXQgZ2VuZXJhdGVfam9pbl9pbXBsaWVkX2VxdWFsaXRpZXMKKwkg KiBwaWNrZWQgZm9yIGEgcGFyYW1ldGVyaXplZCBzY2FuJ3MgcHBpX2NsYXVzZXMuKSAgTm90 ZSB0aGF0IGl0IHdpbGwgbm90CisJICogbWF0Y2ggdG8gbG9zc3kgaW5kZXggY2xhdXNlcywg d2hpY2ggaXMgY3JpdGljYWwgYmVjYXVzZSB3ZSBoYXZlIHRvCisJICogaW5jbHVkZSB0aGUg b3JpZ2luYWwgY2xhdXNlIGluIHFwcXVhbCBpbiB0aGF0IGNhc2UuCisJICoKKwkgKiBJbiBz b21lIHNpdHVhdGlvbnMgKHBhcnRpY3VsYXJseSB3aXRoIE9SJ2QgaW5kZXggY29uZGl0aW9u cykgd2UgbWF5CisJICogaGF2ZSBzY2FuX2NsYXVzZXMgdGhhdCBhcmUgbm90IGVxdWFsIHRv LCBidXQgYXJlIGxvZ2ljYWxseSBpbXBsaWVkIGJ5LAorCSAqIHRoZSBpbmRleCBxdWFsczsg c28gd2UgYWxzbyB0cnkgYSBwcmVkaWNhdGVfaW1wbGllZF9ieSgpIGNoZWNrIHRvIHNlZQor CSAqIGlmIHdlIGNhbiBkaXNjYXJkIHF1YWxzIHRoYXQgd2F5LiAgKHByZWRpY2F0ZV9pbXBs aWVkX2J5IGFzc3VtZXMgaXRzCisJICogZmlyc3QgaW5wdXQgY29udGFpbnMgb25seSBpbW11 dGFibGUgZnVuY3Rpb25zLCBzbyB3ZSBoYXZlIHRvIGNoZWNrCisJICogdGhhdC4pCisJICoK KwkgKiBOb3RlOiBpZiB5b3UgY2hhbmdlIHRoaXMgYml0IG9mIGNvZGUgeW91IHNob3VsZCBh bHNvIGxvb2sgYXQKKwkgKiBleHRyYWN0X25vbmluZGV4X2NvbmRpdGlvbnMoKSBpbiBjb3N0 c2l6ZS5jLgorCSAqLworCXFwcXVhbCA9IE5JTDsKKwlmb3JlYWNoKGwsIHNjYW5fY2xhdXNl cykKKwl7CisJCVJlc3RyaWN0SW5mbyAqcmluZm8gPSBsZmlyc3Rfbm9kZShSZXN0cmljdElu Zm8sIGwpOworCisJCWlmIChyaW5mby0+cHNldWRvY29uc3RhbnQpCisJCQljb250aW51ZTsJ CQkvKiB3ZSBtYXkgZHJvcCBwc2V1ZG9jb25zdGFudHMgaGVyZSAqLworCQlpZiAoaXNfcmVk dW5kYW50X3dpdGhfaW5kZXhjbGF1c2VzKHJpbmZvLCBpbmRleGNsYXVzZXMpKQorCQkJY29u dGludWU7CQkJLyogZHVwIG9yIGRlcml2ZWQgZnJvbSBzYW1lIEVxdWl2YWxlbmNlQ2xhc3Mg Ki8KKwkJaWYgKCFjb250YWluX211dGFibGVfZnVuY3Rpb25zKChOb2RlICopIHJpbmZvLT5j bGF1c2UpICYmCisJCQlwcmVkaWNhdGVfaW1wbGllZF9ieShsaXN0X21ha2UxKHJpbmZvLT5j bGF1c2UpLCBzdHJpcHBlZF9pbmRleHF1YWxzLAorCQkJCQkJCQkgZmFsc2UpKQorCQkJY29u dGludWU7CQkJLyogcHJvdmFibHkgaW1wbGllZCBieSBpbmRleHF1YWxzICovCisJCXFwcXVh bCA9IGxhcHBlbmQocXBxdWFsLCByaW5mbyk7CisJfQorCisJLyogU29ydCBjbGF1c2VzIGlu dG8gYmVzdCBleGVjdXRpb24gb3JkZXIgKi8KKwlxcHF1YWwgPSBvcmRlcl9xdWFsX2NsYXVz ZXMocm9vdCwgcXBxdWFsKTsKKworCS8qIFJlZHVjZSBSZXN0cmljdEluZm8gbGlzdCB0byBi YXJlIGV4cHJlc3Npb25zOyBpZ25vcmUgcHNldWRvY29uc3RhbnRzICovCisJcXBxdWFsID0g ZXh0cmFjdF9hY3R1YWxfY2xhdXNlcyhxcHF1YWwsIGZhbHNlKTsKKworCS8qCisJICogV2Ug aGF2ZSB0byByZXBsYWNlIGFueSBvdXRlci1yZWxhdGlvbiB2YXJpYWJsZXMgd2l0aCBuZXN0 bG9vcCBwYXJhbXMgaW4KKwkgKiB0aGUgaW5kZXhxdWFsb3JpZywgcXBxdWFsLCBhbmQgaW5k ZXhvcmRlcmJ5b3JpZyBleHByZXNzaW9ucy4gIEEgYml0CisJICogYW5ub3lpbmcgdG8gaGF2 ZSB0byBkbyB0aGlzIHNlcGFyYXRlbHkgZnJvbSB0aGUgcHJvY2Vzc2luZyBpbgorCSAqIGZp eF9pbmRleHF1YWxfcmVmZXJlbmNlcyAtLS0gcmV0aGluayB0aGlzIHdoZW4gZ2VuZXJhbGl6 aW5nIHRoZSBpbm5lcgorCSAqIGluZGV4c2NhbiBzdXBwb3J0LiAgQnV0IG5vdGUgd2UgY2Fu J3QgcmVhbGx5IGRvIHRoaXMgZWFybGllciBiZWNhdXNlCisJICogaXQnZCBicmVhayB0aGUg Y29tcGFyaXNvbnMgdG8gcHJlZGljYXRlcyBhYm92ZSAuLi4gKG9yIHdvdWxkIGl0PyAgVGhv c2UKKwkgKiB3b3VsZG4ndCBoYXZlIG91dGVyIHJlZnMpCisJICovCisJaWYgKGJlc3RfcGF0 aC0+aXBhdGgucGF0aC5wYXJhbV9pbmZvKQorCXsKKwkJc3RyaXBwZWRfaW5kZXhxdWFscyA9 IChMaXN0ICopCisJCQlyZXBsYWNlX25lc3Rsb29wX3BhcmFtcyhyb290LCAoTm9kZSAqKSBz dHJpcHBlZF9pbmRleHF1YWxzKTsKKwkJcXBxdWFsID0gKExpc3QgKikKKwkJCXJlcGxhY2Vf bmVzdGxvb3BfcGFyYW1zKHJvb3QsIChOb2RlICopIHFwcXVhbCk7CisJfQorCisJLyogRmlu YWxseSByZWFkeSB0byBidWlsZCB0aGUgcGxhbiBub2RlICovCisJYnJpbnNvcnRfcGxhbiA9 IG1ha2VfYnJpbnNvcnQodGxpc3QsCisJCQkJCQkJCSAgcXBxdWFsLAorCQkJCQkJCQkgIGJh c2VyZWxpZCwKKwkJCQkJCQkJICBpbmRleG9pZCwKKwkJCQkJCQkJICBmaXhlZF9pbmRleHF1 YWxzLAorCQkJCQkJCQkgIHN0cmlwcGVkX2luZGV4cXVhbHMsCisJCQkJCQkJCSAgYmVzdF9w YXRoLT5pcGF0aC5pbmRleHNjYW5kaXIpOworCisJaWYgKHBhdGhrZXlzICE9IE5JTCkKKwl7 CisJCS8qCisJCSAqIENvbXB1dGUgc29ydCBjb2x1bW4gaW5mbywgYW5kIGFkanVzdCB0aGUg QXBwZW5kJ3MgdGxpc3QgYXMgbmVlZGVkLgorCQkgKiBCZWNhdXNlIHdlIHBhc3MgYWRqdXN0 X3RsaXN0X2luX3BsYWNlID0gdHJ1ZSwgd2UgbWF5IGlnbm9yZSB0aGUKKwkJICogZnVuY3Rp b24gcmVzdWx0OyBpdCBtdXN0IGJlIHRoZSBzYW1lIHBsYW4gbm9kZS4gIEhvd2V2ZXIsIHdl IHRoZW4KKwkJICogbmVlZCB0byBkZXRlY3Qgd2hldGhlciBhbnkgdGxpc3QgZW50cmllcyB3 ZXJlIGFkZGVkLgorCQkgKi8KKwkJKHZvaWQpIHByZXBhcmVfc29ydF9mcm9tX3BhdGhrZXlz KChQbGFuICopIGJyaW5zb3J0X3BsYW4sIHBhdGhrZXlzLAorCQkJCQkJCQkJCSAgYmVzdF9w YXRoLT5pcGF0aC5wYXRoLnBhcmVudC0+cmVsaWRzLAorCQkJCQkJCQkJCSAgTlVMTCwKKwkJ CQkJCQkJCQkgIHRydWUsCisJCQkJCQkJCQkJICAmYnJpbnNvcnRfcGxhbi0+bnVtQ29scywK KwkJCQkJCQkJCQkgICZicmluc29ydF9wbGFuLT5zb3J0Q29sSWR4LAorCQkJCQkJCQkJCSAg JmJyaW5zb3J0X3BsYW4tPnNvcnRPcGVyYXRvcnMsCisJCQkJCQkJCQkJICAmYnJpbnNvcnRf cGxhbi0+Y29sbGF0aW9ucywKKwkJCQkJCQkJCQkgICZicmluc29ydF9wbGFuLT5udWxsc0Zp cnN0KTsKKwkJLy90bGlzdF93YXNfY2hhbmdlZCA9IChvcmlnX3RsaXN0X2xlbmd0aCAhPSBs aXN0X2xlbmd0aChwbGFuLT5wbGFuLnRhcmdldGxpc3QpKTsKKwkJZm9yIChpbnQgaSA9IDA7 IGkgPCBicmluc29ydF9wbGFuLT5udW1Db2xzOyBpKyspCisJCQllbG9nKERFQlVHMSwgIiVk ID0+ICVkICVkICVkICVkIiwgaSwKKwkJCQkgYnJpbnNvcnRfcGxhbi0+c29ydENvbElkeFtp XSwKKwkJCQkgYnJpbnNvcnRfcGxhbi0+c29ydE9wZXJhdG9yc1tpXSwKKwkJCQkgYnJpbnNv cnRfcGxhbi0+Y29sbGF0aW9uc1tpXSwKKwkJCQkgYnJpbnNvcnRfcGxhbi0+bnVsbHNGaXJz dFtpXSk7CisJfQorCisJY29weV9nZW5lcmljX3BhdGhfaW5mbygmYnJpbnNvcnRfcGxhbi0+ c2Nhbi5wbGFuLCAmYmVzdF9wYXRoLT5pcGF0aC5wYXRoKTsKKworCXJldHVybiBicmluc29y dF9wbGFuOworfQorCiAvKgogICogY3JlYXRlX2JpdG1hcF9zY2FuX3BsYW4KICAqCSAgUmV0 dXJucyBhIGJpdG1hcCBzY2FuIHBsYW4gZm9yIHRoZSBiYXNlIHJlbGF0aW9uIHNjYW5uZWQg YnkgJ2Jlc3RfcGF0aCcKQEAgLTU1MzksNiArNTcwMiwzMSBAQCBtYWtlX2luZGV4c2NhbihM aXN0ICpxcHRsaXN0LAogCXJldHVybiBub2RlOwogfQogCitzdGF0aWMgQnJpblNvcnQgKgor bWFrZV9icmluc29ydChMaXN0ICpxcHRsaXN0LAorCQkJICAgTGlzdCAqcXBxdWFsLAorCQkJ ICAgSW5kZXggc2NhbnJlbGlkLAorCQkJICAgT2lkIGluZGV4aWQsCisJCQkgICBMaXN0ICpp bmRleHF1YWwsCisJCQkgICBMaXN0ICppbmRleHF1YWxvcmlnLAorCQkJICAgU2NhbkRpcmVj dGlvbiBpbmRleHNjYW5kaXIpCit7CisJQnJpblNvcnQgICpub2RlID0gbWFrZU5vZGUoQnJp blNvcnQpOworCVBsYW4JICAgKnBsYW4gPSAmbm9kZS0+c2Nhbi5wbGFuOworCisJcGxhbi0+ dGFyZ2V0bGlzdCA9IHFwdGxpc3Q7CisJcGxhbi0+cXVhbCA9IHFwcXVhbDsKKwlwbGFuLT5s ZWZ0dHJlZSA9IE5VTEw7CisJcGxhbi0+cmlnaHR0cmVlID0gTlVMTDsKKwlub2RlLT5zY2Fu LnNjYW5yZWxpZCA9IHNjYW5yZWxpZDsKKwlub2RlLT5pbmRleGlkID0gaW5kZXhpZDsKKwlu b2RlLT5pbmRleHF1YWwgPSBpbmRleHF1YWw7CisJbm9kZS0+aW5kZXhxdWFsb3JpZyA9IGlu ZGV4cXVhbG9yaWc7CisJbm9kZS0+aW5kZXhvcmRlcmRpciA9IGluZGV4c2NhbmRpcjsKKwor CXJldHVybiBub2RlOworfQorCiBzdGF0aWMgSW5kZXhPbmx5U2NhbiAqCiBtYWtlX2luZGV4 b25seXNjYW4oTGlzdCAqcXB0bGlzdCwKIAkJCQkgICBMaXN0ICpxcHF1YWwsCkBAIC03MTc1 LDYgKzczNjMsNyBAQCBpc19wcm9qZWN0aW9uX2NhcGFibGVfcGF0aChQYXRoICpwYXRoKQog CQljYXNlIFRfTWVtb2l6ZToKIAkJY2FzZSBUX1NvcnQ6CiAJCWNhc2UgVF9JbmNyZW1lbnRh bFNvcnQ6CisJCWNhc2UgVF9CcmluU29ydDoKIAkJY2FzZSBUX1VuaXF1ZToKIAkJY2FzZSBU X1NldE9wOgogCQljYXNlIFRfTG9ja1Jvd3M6CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9v cHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9z ZXRyZWZzLmMKaW5kZXggMTg2ZmM4MDE0Yi4uYWU1Y2Y4NTMxNyAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jCisrKyBiL3NyYy9iYWNrZW5kL29w dGltaXplci9wbGFuL3NldHJlZnMuYwpAQCAtNzAzLDYgKzcwMywyNSBAQCBzZXRfcGxhbl9y ZWZzKFBsYW5uZXJJbmZvICpyb290LCBQbGFuICpwbGFuLCBpbnQgcnRvZmZzZXQpCiAJCQkJ cmV0dXJuIHNldF9pbmRleG9ubHlzY2FuX3JlZmVyZW5jZXMocm9vdCwgc3BsYW4sIHJ0b2Zm c2V0KTsKIAkJCX0KIAkJCWJyZWFrOworCQljYXNlIFRfQnJpblNvcnQ6CisJCQl7CisJCQkJ QnJpblNvcnQgICpzcGxhbiA9IChCcmluU29ydCAqKSBwbGFuOworCisJCQkJc3BsYW4tPnNj YW4uc2NhbnJlbGlkICs9IHJ0b2Zmc2V0OworCQkJCXNwbGFuLT5zY2FuLnBsYW4udGFyZ2V0 bGlzdCA9CisJCQkJCWZpeF9zY2FuX2xpc3Qocm9vdCwgc3BsYW4tPnNjYW4ucGxhbi50YXJn ZXRsaXN0LAorCQkJCQkJCQkgIHJ0b2Zmc2V0LCBOVU1fRVhFQ19UTElTVChwbGFuKSk7CisJ CQkJc3BsYW4tPnNjYW4ucGxhbi5xdWFsID0KKwkJCQkJZml4X3NjYW5fbGlzdChyb290LCBz cGxhbi0+c2Nhbi5wbGFuLnF1YWwsCisJCQkJCQkJCSAgcnRvZmZzZXQsIE5VTV9FWEVDX1FV QUwocGxhbikpOworCQkJCXNwbGFuLT5pbmRleHF1YWwgPQorCQkJCQlmaXhfc2Nhbl9saXN0 KHJvb3QsIHNwbGFuLT5pbmRleHF1YWwsCisJCQkJCQkJCSAgcnRvZmZzZXQsIDEpOworCQkJ CXNwbGFuLT5pbmRleHF1YWxvcmlnID0KKwkJCQkJZml4X3NjYW5fbGlzdChyb290LCBzcGxh bi0+aW5kZXhxdWFsb3JpZywKKwkJCQkJCQkJICBydG9mZnNldCwgTlVNX0VYRUNfUVVBTChw bGFuKSk7CisJCQl9CisJCQlicmVhazsKIAkJY2FzZSBUX0JpdG1hcEluZGV4U2NhbjoKIAkJ CXsKIAkJCQlCaXRtYXBJbmRleFNjYW4gKnNwbGFuID0gKEJpdG1hcEluZGV4U2NhbiAqKSBw bGFuOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcGF0aG5vZGUu YyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3BhdGhub2RlLmMKaW5kZXggZDc0OWI1 MDU3OC4uNDc4ZDU2MjM0YSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0 aWwvcGF0aG5vZGUuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wYXRobm9k ZS5jCkBAIC0xMDI4LDYgKzEwMjgsNjMgQEAgY3JlYXRlX2luZGV4X3BhdGgoUGxhbm5lcklu Zm8gKnJvb3QsCiAJcmV0dXJuIHBhdGhub2RlOwogfQogCisKKy8qCisgKiBjcmVhdGVfYnJp bnNvcnRfcGF0aAorICoJICBDcmVhdGVzIGEgcGF0aCBub2RlIGZvciBzb3J0ZWQgYnJpbiBz b3J0IHNjYW4uCisgKgorICogJ2luZGV4JyBpcyBhIHVzYWJsZSBpbmRleC4KKyAqICdpbmRl eGNsYXVzZXMnIGlzIGEgbGlzdCBvZiBJbmRleENsYXVzZSBub2RlcyByZXByZXNlbnRpbmcg Y2xhdXNlcworICoJCQl0byBiZSBlbmZvcmNlZCBhcyBxdWFsIGNvbmRpdGlvbnMgaW4gdGhl IHNjYW4uCisgKiAnaW5kZXhvcmRlcmJ5cycgaXMgYSBsaXN0IG9mIGJhcmUgZXhwcmVzc2lv bnMgKG5vIFJlc3RyaWN0SW5mb3MpCisgKgkJCXRvIGJlIHVzZWQgYXMgaW5kZXggb3JkZXJp bmcgb3BlcmF0b3JzIGluIHRoZSBzY2FuLgorICogJ2luZGV4b3JkZXJieWNvbHMnIGlzIGFu IGludGVnZXIgbGlzdCBvZiBpbmRleCBjb2x1bW4gbnVtYmVycyAoemVybyBiYXNlZCkKKyAq CQkJdGhlIG9yZGVyaW5nIG9wZXJhdG9ycyBjYW4gYmUgdXNlZCB3aXRoLgorICogJ3BhdGhr ZXlzJyBkZXNjcmliZXMgdGhlIG9yZGVyaW5nIG9mIHRoZSBwYXRoLgorICogJ2luZGV4c2Nh bmRpcicgaXMgRm9yd2FyZFNjYW5EaXJlY3Rpb24gb3IgQmFja3dhcmRTY2FuRGlyZWN0aW9u CisgKgkJCWZvciBhbiBvcmRlcmVkIGluZGV4LCBvciBOb01vdmVtZW50U2NhbkRpcmVjdGlv biBmb3IKKyAqCQkJYW4gdW5vcmRlcmVkIGluZGV4LgorICogJ2luZGV4b25seScgaXMgdHJ1 ZSBpZiBhbiBpbmRleC1vbmx5IHNjYW4gaXMgd2FudGVkLgorICogJ3JlcXVpcmVkX291dGVy JyBpcyB0aGUgc2V0IG9mIG91dGVyIHJlbGlkcyBmb3IgYSBwYXJhbWV0ZXJpemVkIHBhdGgu CisgKiAnbG9vcF9jb3VudCcgaXMgdGhlIG51bWJlciBvZiByZXBldGl0aW9ucyBvZiB0aGUg aW5kZXhzY2FuIHRvIGZhY3RvciBpbnRvCisgKgkJZXN0aW1hdGVzIG9mIGNhY2hpbmcgYmVo YXZpb3IuCisgKiAncGFydGlhbF9wYXRoJyBpcyB0cnVlIGlmIGNvbnN0cnVjdGluZyBhIHBh cmFsbGVsIGluZGV4IHNjYW4gcGF0aC4KKyAqCisgKiBSZXR1cm5zIHRoZSBuZXcgcGF0aCBu b2RlLgorICovCitCcmluU29ydFBhdGggKgorY3JlYXRlX2JyaW5zb3J0X3BhdGgoUGxhbm5l ckluZm8gKnJvb3QsCisJCQkJCSBJbmRleE9wdEluZm8gKmluZGV4LAorCQkJCQkgTGlzdCAq aW5kZXhjbGF1c2VzLAorCQkJCQkgTGlzdCAqcGF0aGtleXMsCisJCQkJCSBTY2FuRGlyZWN0 aW9uIGluZGV4c2NhbmRpciwKKwkJCQkJIGJvb2wgaW5kZXhvbmx5LAorCQkJCQkgUmVsaWRz IHJlcXVpcmVkX291dGVyLAorCQkJCQkgZG91YmxlIGxvb3BfY291bnQsCisJCQkJCSBib29s IHBhcnRpYWxfcGF0aCkKK3sKKwlCcmluU29ydFBhdGggICpwYXRobm9kZSA9IG1ha2VOb2Rl KEJyaW5Tb3J0UGF0aCk7CisJUmVsT3B0SW5mbyAqcmVsID0gaW5kZXgtPnJlbDsKKworCXBh dGhub2RlLT5pcGF0aC5wYXRoLnBhdGh0eXBlID0gVF9CcmluU29ydDsKKwlwYXRobm9kZS0+ aXBhdGgucGF0aC5wYXJlbnQgPSByZWw7CisJcGF0aG5vZGUtPmlwYXRoLnBhdGgucGF0aHRh cmdldCA9IHJlbC0+cmVsdGFyZ2V0OworCXBhdGhub2RlLT5pcGF0aC5wYXRoLnBhcmFtX2lu Zm8gPSBnZXRfYmFzZXJlbF9wYXJhbXBhdGhpbmZvKHJvb3QsIHJlbCwKKwkJCQkJCQkJCQkJ CQkJICByZXF1aXJlZF9vdXRlcik7CisJcGF0aG5vZGUtPmlwYXRoLnBhdGgucGFyYWxsZWxf YXdhcmUgPSBmYWxzZTsKKwlwYXRobm9kZS0+aXBhdGgucGF0aC5wYXJhbGxlbF9zYWZlID0g cmVsLT5jb25zaWRlcl9wYXJhbGxlbDsKKwlwYXRobm9kZS0+aXBhdGgucGF0aC5wYXJhbGxl bF93b3JrZXJzID0gMDsKKwlwYXRobm9kZS0+aXBhdGgucGF0aC5wYXRoa2V5cyA9IHBhdGhr ZXlzOworCisJcGF0aG5vZGUtPmlwYXRoLmluZGV4aW5mbyA9IGluZGV4OworCXBhdGhub2Rl LT5pcGF0aC5pbmRleGNsYXVzZXMgPSBpbmRleGNsYXVzZXM7CisJcGF0aG5vZGUtPmlwYXRo LmluZGV4c2NhbmRpciA9IGluZGV4c2NhbmRpcjsKKworCWNvc3RfYnJpbnNvcnQocGF0aG5v ZGUsIHJvb3QsIGxvb3BfY291bnQsIHBhcnRpYWxfcGF0aCk7CisKKwlyZXR1cm4gcGF0aG5v ZGU7Cit9CisKIC8qCiAgKiBjcmVhdGVfYml0bWFwX2hlYXBfcGF0aAogICoJICBDcmVhdGVz IGEgcGF0aCBub2RlIGZvciBhIGJpdG1hcCBzY2FuLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1 Y190YWJsZXMuYwppbmRleCBjNDkwM2UyZTNlLi5mNjdhNzAzNTUwIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYworKysgYi9zcmMvYmFja2VuZC91 dGlscy9taXNjL2d1Y190YWJsZXMuYwpAQCAtMTAxLDYgKzEwMSwxMCBAQCBleHRlcm4gYm9v bCBkZWJ1Z19icmluX3N0YXRzOwogZXh0ZXJuIGJvb2wgZGVidWdfYnJpbl9jcm9zc19jaGVj azsKICNlbmRpZgogCisjaWZkZWYgREVCVUdfQlJJTl9TT1JUCitleHRlcm4gYm9vbCBkZWJ1 Z19icmluX3NvcnQ7CisjZW5kaWYKKwogI2lmZGVmIFRSQUNFX1NZTkNTQ0FOCiBleHRlcm4g Ym9vbCB0cmFjZV9zeW5jc2NhbjsKICNlbmRpZgpAQCAtMTAxNyw2ICsxMDIxLDE2IEBAIHN0 cnVjdCBjb25maWdfYm9vbCBDb25maWd1cmVOYW1lc0Jvb2xbXSA9CiAJCWZhbHNlLAogCQlO VUxMLCBOVUxMLCBOVUxMCiAJfSwKKwl7CisJCXsiZW5hYmxlX2JyaW5zb3J0IiwgUEdDX1VT RVJTRVQsIFFVRVJZX1RVTklOR19NRVRIT0QsCisJCQlnZXR0ZXh0X25vb3AoIkVuYWJsZXMg dGhlIHBsYW5uZXIncyB1c2Ugb2YgQlJJTiBzb3J0IHBsYW5zLiIpLAorCQkJTlVMTCwKKwkJ CUdVQ19FWFBMQUlOCisJCX0sCisJCSZlbmFibGVfYnJpbnNvcnQsCisJCXRydWUsCisJCU5V TEwsIE5VTEwsIE5VTEwKKwl9LAogCXsKIAkJeyJnZXFvIiwgUEdDX1VTRVJTRVQsIFFVRVJZ X1RVTklOR19HRVFPLAogCQkJZ2V0dGV4dF9ub29wKCJFbmFibGVzIGdlbmV0aWMgcXVlcnkg b3B0aW1pemF0aW9uLiIpLApAQCAtMTI1OCw2ICsxMjcyLDIwIEBAIHN0cnVjdCBjb25maWdf Ym9vbCBDb25maWd1cmVOYW1lc0Jvb2xbXSA9CiAJfSwKICNlbmRpZgogCisjaWZkZWYgREVC VUdfQlJJTl9TT1JUCisJLyogdGhpcyBpcyB1bmRvY3VtZW50ZWQgYmVjYXVzZSBub3QgZXhw b3NlZCBpbiBhIHN0YW5kYXJkIGJ1aWxkICovCisJeworCQl7ImRlYnVnX2JyaW5fc29ydCIs IFBHQ19VU0VSU0VULCBERVZFTE9QRVJfT1BUSU9OUywKKwkJCWdldHRleHRfbm9vcCgiUHJp bnQgaW5mbyBhYm91dCBCUklOIHNvcnRpbmcuIiksCisJCQlOVUxMLAorCQkJR1VDX05PVF9J Tl9TQU1QTEUKKwkJfSwKKwkJJmRlYnVnX2JyaW5fc29ydCwKKwkJZmFsc2UsCisJCU5VTEws IE5VTEwsIE5VTEwKKwl9LAorI2VuZGlmCisKIAl7CiAJCXsiZXhpdF9vbl9lcnJvciIsIFBH Q19VU0VSU0VULCBFUlJPUl9IQU5ETElOR19PUFRJT05TLAogCQkJZ2V0dGV4dF9ub29wKCJU ZXJtaW5hdGUgc2Vzc2lvbiBvbiBhbnkgZXJyb3IuIiksCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUgYi9zcmMvYmFja2VuZC91 dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUKaW5kZXggNDdlODBhZDE1MC4uMTBi OTdlOTZiYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3Fs LmNvbmYuc2FtcGxlCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5j b25mLnNhbXBsZQpAQCAtMzcxLDYgKzM3MSw3IEBACiAKICNlbmFibGVfYXN5bmNfYXBwZW5k ID0gb24KICNlbmFibGVfYml0bWFwc2NhbiA9IG9uCisjZW5hYmxlX2JyaW5zb3J0ID0gb2Zm CiAjZW5hYmxlX2dhdGhlcm1lcmdlID0gb24KICNlbmFibGVfaGFzaGFnZyA9IG9uCiAjZW5h YmxlX2hhc2hqb2luID0gb24KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL3NvcnQv dHVwbGVzb3J0LmMgYi9zcmMvYmFja2VuZC91dGlscy9zb3J0L3R1cGxlc29ydC5jCmluZGV4 IDljYTk4MzVhYWIuLjc1MGVlMDE2ZmQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxz L3NvcnQvdHVwbGVzb3J0LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvc29ydC90dXBsZXNv cnQuYwpAQCAtMjU3NCw2ICsyNTc0LDE4IEBAIHR1cGxlc29ydF9nZXRfc3RhdHMoVHVwbGVz b3J0c3RhdGUgKnN0YXRlLAogCX0KIH0KIAorLyoKKyAqIHR1cGxlc29ydF9yZXNldF9zdGF0 cyAtIHJlc2V0IHN1bW1hcnkgc3RhdGlzdGljcworICoKKyAqIFRoaXMgY2FuIGJlIGNhbGxl ZCBiZWZvcmUgdHVwbGVzb3J0X3BlcmZvcm1zb3J0KCkgc3RhcnRzLgorICovCit2b2lkCit0 dXBsZXNvcnRfcmVzZXRfc3RhdHMoVHVwbGVzb3J0c3RhdGUgKnN0YXRlKQoreworCXN0YXRl LT5pc01heFNwYWNlRGlzayA9IGZhbHNlOworCXN0YXRlLT5tYXhTcGFjZSA9IDA7Cit9CisK IC8qCiAgKiBDb252ZXJ0IFR1cGxlc29ydE1ldGhvZCB0byBhIHN0cmluZy4KICAqLwpkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2JyaW4uaCBiL3NyYy9pbmNsdWRlL2FjY2Vz cy9icmluLmgKaW5kZXggMWQyMWI4MTZmYy4uY2RmYTc0MjFhZSAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvYWNjZXNzL2JyaW4uaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvYnJpbi5o CkBAIC0zNCw0MSArMzQsNiBAQCB0eXBlZGVmIHN0cnVjdCBCcmluU3RhdHNEYXRhCiAJQmxv Y2tOdW1iZXIgcmV2bWFwTnVtUGFnZXM7CiB9IEJyaW5TdGF0c0RhdGE7CiAKLS8qCi0gKiBJ bmZvIGFib3V0IHJhbmdlcyBmb3IgQlJJTiBTb3J0LgotICovCi10eXBlZGVmIHN0cnVjdCBC cmluUmFuZ2UKLXsKLQlCbG9ja051bWJlciBibGtub19zdGFydDsKLQlCbG9ja051bWJlciBi bGtub19lbmQ7Ci0KLQlEYXR1bQltaW5fdmFsdWU7Ci0JRGF0dW0JbWF4X3ZhbHVlOwotCWJv b2wJaGFzX251bGxzOwotCWJvb2wJYWxsX251bGxzOwotCWJvb2wJbm90X3N1bW1hcml6ZWQ7 Ci0KLQkvKgotCSAqIEluZGV4IG9mIHRoZSByYW5nZSB3aGVuIG9yZGVyZWQgYnkgbWluX3Zh bHVlIChpZiB0aGVyZSBhcmUgbXVsdGlwbGUKLQkgKiByYW5nZXMgd2l0aCB0aGUgc2FtZSBt aW5fdmFsdWUsIGl0J3MgdGhlIGxvd2VzdCBvbmUpLgotCSAqLwotCXVpbnQzMgltaW5faW5k ZXg7Ci0KLQkvKgotCSAqIE1pbmltdW0gbWluX2luZGV4IGZyb20gYWxsIHJhbmdlcyB3aXRo IGhpZ2hlciBtYXhfdmFsdWUgKGkuZS4gd2hlbgotCSAqIHNvcnRlZCBieSBtYXhfdmFsdWUp LiBJZiB0aGVyZSBhcmUgbXVsdGlwbGUgcmFuZ2VzIHdpdGggdGhlIHNhbWUKLQkgKiBtYXhf dmFsdWUsIGl0IGRlcGVuZHMgb24gdGhlIG9yZGVyaW5nIChpLmUuIHRoZSByYW5nZXMgbWF5 IGdldAotCSAqIGRpZmZlcmVudCBtaW5faW5kZXhfbG93ZXN0LCBkZXBlbmRpbmcgb24gdGhl IGV4YWN0IG9yZGVyaW5nKS4KLQkgKi8KLQl1aW50MzIJbWluX2luZGV4X2xvd2VzdDsKLX0g QnJpblJhbmdlOwotCi10eXBlZGVmIHN0cnVjdCBCcmluUmFuZ2VzCi17Ci0JaW50CQkJbnJh bmdlczsKLQlCcmluUmFuZ2UJcmFuZ2VzW0ZMRVhJQkxFX0FSUkFZX01FTUJFUl07Ci19IEJy aW5SYW5nZXM7Ci0KIHR5cGVkZWYgc3RydWN0IEJyaW5NaW5tYXhTdGF0cwogewogCWludDMy CQl2bF9sZW5fOwkJLyogdmFybGVuYSBoZWFkZXIgKGRvIG5vdCB0b3VjaCBkaXJlY3RseSEp ICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvYnJpbl9pbnRlcm5hbC5oIGIv c3JjL2luY2x1ZGUvYWNjZXNzL2JyaW5faW50ZXJuYWwuaAppbmRleCBlYWM3OTZlNmY0Li42 ZGQzZjNlM2MxIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvYnJpbl9pbnRlcm5h bC5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9icmluX2ludGVybmFsLmgKQEAgLTc2LDYg Kzc2LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQnJpbkRlc2MKIC8qIHByb2NlZHVyZSBudW1iZXJz IHVwIHRvIDEwIGFyZSByZXNlcnZlZCBmb3IgQlJJTiBmdXR1cmUgZXhwYW5zaW9uICovCiAj ZGVmaW5lIEJSSU5fRklSU1RfT1BUSU9OQUxfUFJPQ05VTSAxMQogI2RlZmluZSBCUklOX1BS T0NOVU1fU1RBVElTVElDUwkJMTEJLyogb3B0aW9uYWwgKi8KKyNkZWZpbmUgQlJJTl9QUk9D TlVNX1JBTkdFUyAJCTEyCS8qIG9wdGlvbmFsICovCiAjZGVmaW5lIEJSSU5fTEFTVF9PUFRJ T05BTF9QUk9DTlVNCTE1CiAKICN1bmRlZiBCUklOX0RFQlVHCmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9jYXRhbG9nL3BnX2FtcHJvYy5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3Bn X2FtcHJvYy5kYXQKaW5kZXggOWJiZDFmMTRmMS4uYjQ5OTY5OWIzNSAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19hbXByb2MuZGF0CisrKyBiL3NyYy9pbmNsdWRlL2Nh dGFsb2cvcGdfYW1wcm9jLmRhdApAQCAtODA2LDYgKzgwNiw4IEBACiAgIGFtcHJvY3JpZ2h0 dHlwZSA9PiAnYnl0ZWEnLCBhbXByb2NudW0gPT4gJzQnLCBhbXByb2MgPT4gJ2JyaW5fbWlu bWF4X3VuaW9uJyB9LAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vYnl0ZWFfbWlubWF4X29w cycsIGFtcHJvY2xlZnR0eXBlID0+ICdieXRlYScsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAn Ynl0ZWEnLCBhbXByb2NudW0gPT4gJzExJywgYW1wcm9jID0+ICdicmluX21pbm1heF9zdGF0 cycgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdicmluL2J5dGVhX21pbm1heF9vcHMnLCBhbXBy b2NsZWZ0dHlwZSA9PiAnYnl0ZWEnLAorICBhbXByb2NyaWdodHR5cGUgPT4gJ2J5dGVhJywg YW1wcm9jbnVtID0+ICcxMicsIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfcmFuZ2VzJyB9LAog CiAjIGJsb29tIGJ5dGVhCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9ieXRlYV9ibG9vbV9v cHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnYnl0ZWEnLApAQCAtODM5LDYgKzg0MSw4IEBACiAg IGFtcHJvY3JpZ2h0dHlwZSA9PiAnY2hhcicsIGFtcHJvY251bSA9PiAnNCcsIGFtcHJvYyA9 PiAnYnJpbl9taW5tYXhfdW5pb24nIH0sCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9jaGFy X21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnY2hhcicsCiAgIGFtcHJvY3JpZ2h0 dHlwZSA9PiAnY2hhcicsIGFtcHJvY251bSA9PiAnMTEnLCBhbXByb2MgPT4gJ2JyaW5fbWlu bWF4X3N0YXRzJyB9LAoreyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vY2hhcl9taW5tYXhfb3Bz JywgYW1wcm9jbGVmdHR5cGUgPT4gJ2NoYXInLAorICBhbXByb2NyaWdodHR5cGUgPT4gJ2No YXInLCBhbXByb2NudW0gPT4gJzEyJywgYW1wcm9jID0+ICdicmluX21pbm1heF9yYW5nZXMn IH0sCiAKICMgYmxvb20gImNoYXIiCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9jaGFyX2Js b29tX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdjaGFyJywKQEAgLTg3MCw2ICs4NzQsOCBA QAogICBhbXByb2NyaWdodHR5cGUgPT4gJ25hbWUnLCBhbXByb2NudW0gPT4gJzQnLCBhbXBy b2MgPT4gJ2JyaW5fbWlubWF4X3VuaW9uJyB9LAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4v bmFtZV9taW5tYXhfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ25hbWUnLAogICBhbXByb2Ny aWdodHR5cGUgPT4gJ25hbWUnLCBhbXByb2NudW0gPT4gJzExJywgYW1wcm9jID0+ICdicmlu X21pbm1heF9zdGF0cycgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdicmluL25hbWVfbWlubWF4 X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICduYW1lJywKKyAgYW1wcm9jcmlnaHR0eXBlID0+ ICduYW1lJywgYW1wcm9jbnVtID0+ICcxMicsIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfcmFu Z2VzJyB9LAogCiAjIGJsb29tIG5hbWUKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL25hbWVf Ymxvb21fb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ25hbWUnLApAQCAtOTAxLDYgKzkwNyw4 IEBACiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnaW50OCcsIGFtcHJvY251bSA9PiAnNCcsIGFt cHJvYyA9PiAnYnJpbl9taW5tYXhfdW5pb24nIH0sCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJp bi9pbnRlZ2VyX21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnaW50OCcsCiAgIGFt cHJvY3JpZ2h0dHlwZSA9PiAnaW50OCcsIGFtcHJvY251bSA9PiAnMTEnLCBhbXByb2MgPT4g J2JyaW5fbWlubWF4X3N0YXRzJyB9LAoreyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vaW50ZWdl cl9taW5tYXhfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2ludDgnLAorICBhbXByb2NyaWdo dHR5cGUgPT4gJ2ludDgnLCBhbXByb2NudW0gPT4gJzEyJywgYW1wcm9jID0+ICdicmluX21p bm1heF9yYW5nZXMnIH0sCiAKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL2ludGVnZXJfbWlu bWF4X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdpbnQyJywKICAgYW1wcm9jcmlnaHR0eXBl ID0+ICdpbnQyJywgYW1wcm9jbnVtID0+ICcxJywKQEAgLTkxNSw2ICs5MjMsOCBAQAogICBh bXByb2NyaWdodHR5cGUgPT4gJ2ludDInLCBhbXByb2NudW0gPT4gJzQnLCBhbXByb2MgPT4g J2JyaW5fbWlubWF4X3VuaW9uJyB9LAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vaW50ZWdl cl9taW5tYXhfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2ludDInLAogICBhbXByb2NyaWdo dHR5cGUgPT4gJ2ludDInLCBhbXByb2NudW0gPT4gJzExJywgYW1wcm9jID0+ICdicmluX21p bm1heF9zdGF0cycgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdicmluL2ludGVnZXJfbWlubWF4 X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdpbnQyJywKKyAgYW1wcm9jcmlnaHR0eXBlID0+ ICdpbnQyJywgYW1wcm9jbnVtID0+ICcxMicsIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfcmFu Z2VzJyB9LAogCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9pbnRlZ2VyX21pbm1heF9vcHMn LCBhbXByb2NsZWZ0dHlwZSA9PiAnaW50NCcsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnaW50 NCcsIGFtcHJvY251bSA9PiAnMScsCkBAIC05MjksNiArOTM5LDggQEAKICAgYW1wcm9jcmln aHR0eXBlID0+ICdpbnQ0JywgYW1wcm9jbnVtID0+ICc0JywgYW1wcm9jID0+ICdicmluX21p bm1heF91bmlvbicgfSwKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL2ludGVnZXJfbWlubWF4 X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdpbnQ0JywKICAgYW1wcm9jcmlnaHR0eXBlID0+ ICdpbnQ0JywgYW1wcm9jbnVtID0+ICcxMScsIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfc3Rh dHMnIH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9pbnRlZ2VyX21pbm1heF9vcHMnLCBh bXByb2NsZWZ0dHlwZSA9PiAnaW50NCcsCisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnaW50NCcs IGFtcHJvY251bSA9PiAnMTInLCBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3JhbmdlcycgfSwK IAogIyBtaW5tYXggbXVsdGkgaW50ZWdlcjogaW50MiwgaW50NCwgaW50OAogeyBhbXByb2Nm YW1pbHkgPT4gJ2JyaW4vaW50ZWdlcl9taW5tYXhfbXVsdGlfb3BzJywgYW1wcm9jbGVmdHR5 cGUgPT4gJ2ludDInLApAQCAtMTA0OCw2ICsxMDYwLDggQEAKICAgYW1wcm9jcmlnaHR0eXBl ID0+ICd0ZXh0JywgYW1wcm9jbnVtID0+ICc0JywgYW1wcm9jID0+ICdicmluX21pbm1heF91 bmlvbicgfSwKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL3RleHRfbWlubWF4X29wcycsIGFt cHJvY2xlZnR0eXBlID0+ICd0ZXh0JywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICd0ZXh0Jywg YW1wcm9jbnVtID0+ICcxMScsIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfc3RhdHMnIH0sCit7 IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi90ZXh0X21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlw ZSA9PiAndGV4dCcsCisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAndGV4dCcsIGFtcHJvY251bSA9 PiAnMTInLCBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3JhbmdlcycgfSwKIAogIyBibG9vbSB0 ZXh0CiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi90ZXh0X2Jsb29tX29wcycsIGFtcHJvY2xl ZnR0eXBlID0+ICd0ZXh0JywKQEAgLTEwNzgsNiArMTA5Miw4IEBACiAgIGFtcHJvY3JpZ2h0 dHlwZSA9PiAnb2lkJywgYW1wcm9jbnVtID0+ICc0JywgYW1wcm9jID0+ICdicmluX21pbm1h eF91bmlvbicgfSwKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL29pZF9taW5tYXhfb3BzJywg YW1wcm9jbGVmdHR5cGUgPT4gJ29pZCcsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnb2lkJywg YW1wcm9jbnVtID0+ICcxMScsIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfc3RhdHMnIH0sCit7 IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9vaWRfbWlubWF4X29wcycsIGFtcHJvY2xlZnR0eXBl ID0+ICdvaWQnLAorICBhbXByb2NyaWdodHR5cGUgPT4gJ29pZCcsIGFtcHJvY251bSA9PiAn MTInLCBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3JhbmdlcycgfSwKIAogIyBtaW5tYXggbXVs dGkgb2lkCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9vaWRfbWlubWF4X211bHRpX29wcycs IGFtcHJvY2xlZnR0eXBlID0+ICdvaWQnLApAQCAtMTEyOCw2ICsxMTQ0LDggQEAKICAgYW1w cm9jcmlnaHR0eXBlID0+ICd0aWQnLCBhbXByb2NudW0gPT4gJzQnLCBhbXByb2MgPT4gJ2Jy aW5fbWlubWF4X3VuaW9uJyB9LAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vdGlkX21pbm1h eF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAndGlkJywKICAgYW1wcm9jcmlnaHR0eXBlID0+ ICd0aWQnLCBhbXByb2NudW0gPT4gJzExJywgYW1wcm9jID0+ICdicmluX21pbm1heF9zdGF0 cycgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdicmluL3RpZF9taW5tYXhfb3BzJywgYW1wcm9j bGVmdHR5cGUgPT4gJ3RpZCcsCisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAndGlkJywgYW1wcm9j bnVtID0+ICcxMicsIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfcmFuZ2VzJyB9LAogCiAjIGJs b29tIHRpZAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vdGlkX2Jsb29tX29wcycsIGFtcHJv Y2xlZnR0eXBlID0+ICd0aWQnLApAQCAtMTE4MSw2ICsxMTk5LDkgQEAKIHsgYW1wcm9jZmFt aWx5ID0+ICdicmluL2Zsb2F0X21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnZmxv YXQ0JywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdmbG9hdDQnLCBhbXByb2NudW0gPT4gJzEx JywKICAgYW1wcm9jID0+ICdicmluX21pbm1heF9zdGF0cycgfSwKK3sgYW1wcm9jZmFtaWx5 ID0+ICdicmluL2Zsb2F0X21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnZmxvYXQ0 JywKKyAgYW1wcm9jcmlnaHR0eXBlID0+ICdmbG9hdDQnLCBhbXByb2NudW0gPT4gJzEyJywK KyAgYW1wcm9jID0+ICdicmluX21pbm1heF9yYW5nZXMnIH0sCiAKIHsgYW1wcm9jZmFtaWx5 ID0+ICdicmluL2Zsb2F0X21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnZmxvYXQ4 JywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdmbG9hdDgnLCBhbXByb2NudW0gPT4gJzEnLApA QCAtMTE5Nyw2ICsxMjE4LDkgQEAKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL2Zsb2F0X21p bm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnZmxvYXQ4JywKICAgYW1wcm9jcmlnaHR0 eXBlID0+ICdmbG9hdDgnLCBhbXByb2NudW0gPT4gJzExJywKICAgYW1wcm9jID0+ICdicmlu X21pbm1heF9zdGF0cycgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdicmluL2Zsb2F0X21pbm1h eF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnZmxvYXQ4JywKKyAgYW1wcm9jcmlnaHR0eXBl ID0+ICdmbG9hdDgnLCBhbXByb2NudW0gPT4gJzEyJywKKyAgYW1wcm9jID0+ICdicmluX21p bm1heF9yYW5nZXMnIH0sCiAKICMgbWlubWF4IG11bHRpIGZsb2F0CiB7IGFtcHJvY2ZhbWls eSA9PiAnYnJpbi9mbG9hdF9taW5tYXhfbXVsdGlfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4g J2Zsb2F0NCcsCkBAIC0xMjg4LDYgKzEzMTIsOSBAQAogeyBhbXByb2NmYW1pbHkgPT4gJ2Jy aW4vbWFjYWRkcl9taW5tYXhfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ21hY2FkZHInLAog ICBhbXByb2NyaWdodHR5cGUgPT4gJ21hY2FkZHInLCBhbXByb2NudW0gPT4gJzExJywKICAg YW1wcm9jID0+ICdicmluX21pbm1heF9zdGF0cycgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdi cmluL21hY2FkZHJfbWlubWF4X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdtYWNhZGRyJywK KyAgYW1wcm9jcmlnaHR0eXBlID0+ICdtYWNhZGRyJywgYW1wcm9jbnVtID0+ICcxMicsCisg IGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfcmFuZ2VzJyB9LAogCiAjIG1pbm1heCBtdWx0aSBt YWNhZGRyCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9tYWNhZGRyX21pbm1heF9tdWx0aV9v cHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnbWFjYWRkcicsCkBAIC0xMzQ0LDYgKzEzNzEsOSBA QAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vbWFjYWRkcjhfbWlubWF4X29wcycsIGFtcHJv Y2xlZnR0eXBlID0+ICdtYWNhZGRyOCcsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnbWFjYWRk cjgnLCBhbXByb2NudW0gPT4gJzExJywKICAgYW1wcm9jID0+ICdicmluX21pbm1heF9zdGF0 cycgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdicmluL21hY2FkZHI4X21pbm1heF9vcHMnLCBh bXByb2NsZWZ0dHlwZSA9PiAnbWFjYWRkcjgnLAorICBhbXByb2NyaWdodHR5cGUgPT4gJ21h Y2FkZHI4JywgYW1wcm9jbnVtID0+ICcxMicsCisgIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhf cmFuZ2VzJyB9LAogCiAjIG1pbm1heCBtdWx0aSBtYWNhZGRyOAogeyBhbXByb2NmYW1pbHkg PT4gJ2JyaW4vbWFjYWRkcjhfbWlubWF4X211bHRpX29wcycsCkBAIC0xMzk4LDYgKzE0Mjgs OCBAQAogICBhbXByb2NyaWdodHR5cGUgPT4gJ2luZXQnLCBhbXByb2NudW0gPT4gJzQnLCBh bXByb2MgPT4gJ2JyaW5fbWlubWF4X3VuaW9uJyB9LAogeyBhbXByb2NmYW1pbHkgPT4gJ2Jy aW4vbmV0d29ya19taW5tYXhfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2luZXQnLAogICBh bXByb2NyaWdodHR5cGUgPT4gJ2luZXQnLCBhbXByb2NudW0gPT4gJzExJywgYW1wcm9jID0+ ICdicmluX21pbm1heF9zdGF0cycgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdicmluL25ldHdv cmtfbWlubWF4X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdpbmV0JywKKyAgYW1wcm9jcmln aHR0eXBlID0+ICdpbmV0JywgYW1wcm9jbnVtID0+ICcxMicsIGFtcHJvYyA9PiAnYnJpbl9t aW5tYXhfcmFuZ2VzJyB9LAogCiAjIG1pbm1heCBtdWx0aSBpbmV0CiB7IGFtcHJvY2ZhbWls eSA9PiAnYnJpbi9uZXR3b3JrX21pbm1heF9tdWx0aV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9 PiAnaW5ldCcsCkBAIC0xNDcxLDYgKzE1MDMsOSBAQAogeyBhbXByb2NmYW1pbHkgPT4gJ2Jy aW4vYnBjaGFyX21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnYnBjaGFyJywKICAg YW1wcm9jcmlnaHR0eXBlID0+ICdicGNoYXInLCBhbXByb2NudW0gPT4gJzExJywKICAgYW1w cm9jID0+ICdicmluX21pbm1heF9zdGF0cycgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdicmlu L2JwY2hhcl9taW5tYXhfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2JwY2hhcicsCisgIGFt cHJvY3JpZ2h0dHlwZSA9PiAnYnBjaGFyJywgYW1wcm9jbnVtID0+ICcxMicsCisgIGFtcHJv YyA9PiAnYnJpbl9taW5tYXhfcmFuZ2VzJyB9LAogCiAjIGJsb29tIGNoYXJhY3RlcgogeyBh bXByb2NmYW1pbHkgPT4gJ2JyaW4vYnBjaGFyX2Jsb29tX29wcycsIGFtcHJvY2xlZnR0eXBl ID0+ICdicGNoYXInLApAQCAtMTUwNCw2ICsxNTM5LDggQEAKICAgYW1wcm9jcmlnaHR0eXBl ID0+ICd0aW1lJywgYW1wcm9jbnVtID0+ICc0JywgYW1wcm9jID0+ICdicmluX21pbm1heF91 bmlvbicgfSwKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL3RpbWVfbWlubWF4X29wcycsIGFt cHJvY2xlZnR0eXBlID0+ICd0aW1lJywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICd0aW1lJywg YW1wcm9jbnVtID0+ICcxMScsIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfc3RhdHMnIH0sCit7 IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi90aW1lX21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlw ZSA9PiAndGltZScsCisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAndGltZScsIGFtcHJvY251bSA9 PiAnMTInLCBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3JhbmdlcycgfSwKIAogIyBtaW5tYXgg bXVsdGkgdGltZSB3aXRob3V0IHRpbWUgem9uZQogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4v dGltZV9taW5tYXhfbXVsdGlfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ3RpbWUnLApAQCAt MTU1Nyw2ICsxNTk0LDkgQEAKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL2RhdGV0aW1lX21p bm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAndGltZXN0YW1wJywKICAgYW1wcm9jcmln aHR0eXBlID0+ICd0aW1lc3RhbXAnLCBhbXByb2NudW0gPT4gJzExJywKICAgYW1wcm9jID0+ ICdicmluX21pbm1heF9zdGF0cycgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdicmluL2RhdGV0 aW1lX21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAndGltZXN0YW1wJywKKyAgYW1w cm9jcmlnaHR0eXBlID0+ICd0aW1lc3RhbXAnLCBhbXByb2NudW0gPT4gJzEyJywKKyAgYW1w cm9jID0+ICdicmluX21pbm1heF9yYW5nZXMnIH0sCiAKIHsgYW1wcm9jZmFtaWx5ID0+ICdi cmluL2RhdGV0aW1lX21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAndGltZXN0YW1w dHonLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ3RpbWVzdGFtcHR6JywgYW1wcm9jbnVtID0+ ICcxJywKQEAgLTE1NzMsNiArMTYxMyw5IEBACiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9k YXRldGltZV9taW5tYXhfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ3RpbWVzdGFtcHR6JywK ICAgYW1wcm9jcmlnaHR0eXBlID0+ICd0aW1lc3RhbXB0eicsIGFtcHJvY251bSA9PiAnMTEn LAogICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3N0YXRzJyB9LAoreyBhbXByb2NmYW1pbHkg PT4gJ2JyaW4vZGF0ZXRpbWVfbWlubWF4X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICd0aW1l c3RhbXB0eicsCisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAndGltZXN0YW1wdHonLCBhbXByb2Nu dW0gPT4gJzEyJywKKyAgYW1wcm9jID0+ICdicmluX21pbm1heF9yYW5nZXMnIH0sCiAKIHsg YW1wcm9jZmFtaWx5ID0+ICdicmluL2RhdGV0aW1lX21pbm1heF9vcHMnLCBhbXByb2NsZWZ0 dHlwZSA9PiAnZGF0ZScsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnZGF0ZScsIGFtcHJvY251 bSA9PiAnMScsCkBAIC0xNTg3LDYgKzE2MzAsOCBAQAogICBhbXByb2NyaWdodHR5cGUgPT4g J2RhdGUnLCBhbXByb2NudW0gPT4gJzQnLCBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3VuaW9u JyB9LAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vZGF0ZXRpbWVfbWlubWF4X29wcycsIGFt cHJvY2xlZnR0eXBlID0+ICdkYXRlJywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdkYXRlJywg YW1wcm9jbnVtID0+ICcxMScsIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfc3RhdHMnIH0sCit7 IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9kYXRldGltZV9taW5tYXhfb3BzJywgYW1wcm9jbGVm dHR5cGUgPT4gJ2RhdGUnLAorICBhbXByb2NyaWdodHR5cGUgPT4gJ2RhdGUnLCBhbXByb2Nu dW0gPT4gJzEyJywgYW1wcm9jID0+ICdicmluX21pbm1heF9yYW5nZXMnIH0sCiAKICMgbWlu bWF4IG11bHRpIGRhdGV0aW1lIChkYXRlLCB0aW1lc3RhbXAsIHRpbWVzdGFtcHR6KQogeyBh bXByb2NmYW1pbHkgPT4gJ2JyaW4vZGF0ZXRpbWVfbWlubWF4X211bHRpX29wcycsCkBAIC0x NzE2LDYgKzE3NjEsOSBAQAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vaW50ZXJ2YWxfbWlu bWF4X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdpbnRlcnZhbCcsCiAgIGFtcHJvY3JpZ2h0 dHlwZSA9PiAnaW50ZXJ2YWwnLCBhbXByb2NudW0gPT4gJzExJywKICAgYW1wcm9jID0+ICdi cmluX21pbm1heF9zdGF0cycgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdicmluL2ludGVydmFs X21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnaW50ZXJ2YWwnLAorICBhbXByb2Ny aWdodHR5cGUgPT4gJ2ludGVydmFsJywgYW1wcm9jbnVtID0+ICcxMicsCisgIGFtcHJvYyA9 PiAnYnJpbl9taW5tYXhfcmFuZ2VzJyB9LAogCiAjIG1pbm1heCBtdWx0aSBpbnRlcnZhbAog eyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vaW50ZXJ2YWxfbWlubWF4X211bHRpX29wcycsCkBA IC0xNzcyLDYgKzE4MjAsOSBAQAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vdGltZXR6X21p bm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAndGltZXR6JywKICAgYW1wcm9jcmlnaHR0 eXBlID0+ICd0aW1ldHonLCBhbXByb2NudW0gPT4gJzExJywKICAgYW1wcm9jID0+ICdicmlu X21pbm1heF9zdGF0cycgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdicmluL3RpbWV0el9taW5t YXhfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ3RpbWV0eicsCisgIGFtcHJvY3JpZ2h0dHlw ZSA9PiAndGltZXR6JywgYW1wcm9jbnVtID0+ICcxMicsCisgIGFtcHJvYyA9PiAnYnJpbl9t aW5tYXhfcmFuZ2VzJyB9LAogCiAjIG1pbm1heCBtdWx0aSB0aW1lIHdpdGggdGltZSB6b25l CiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi90aW1ldHpfbWlubWF4X211bHRpX29wcycsIGFt cHJvY2xlZnR0eXBlID0+ICd0aW1ldHonLApAQCAtMTgyNCw2ICsxODc1LDggQEAKICAgYW1w cm9jcmlnaHR0eXBlID0+ICdiaXQnLCBhbXByb2NudW0gPT4gJzQnLCBhbXByb2MgPT4gJ2Jy aW5fbWlubWF4X3VuaW9uJyB9LAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vYml0X21pbm1h eF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnYml0JywKICAgYW1wcm9jcmlnaHR0eXBlID0+ ICdiaXQnLCBhbXByb2NudW0gPT4gJzExJywgYW1wcm9jID0+ICdicmluX21pbm1heF9zdGF0 cycgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdicmluL2JpdF9taW5tYXhfb3BzJywgYW1wcm9j bGVmdHR5cGUgPT4gJ2JpdCcsCisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnYml0JywgYW1wcm9j bnVtID0+ICcxMicsIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfcmFuZ2VzJyB9LAogCiAjIG1p bm1heCBiaXQgdmFyeWluZwogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vdmFyYml0X21pbm1h eF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAndmFyYml0JywKQEAgLTE4NDEsNiArMTg5NCw5 IEBACiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi92YXJiaXRfbWlubWF4X29wcycsIGFtcHJv Y2xlZnR0eXBlID0+ICd2YXJiaXQnLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ3ZhcmJpdCcs IGFtcHJvY251bSA9PiAnMTEnLAogICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3N0YXRzJyB9 LAoreyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vdmFyYml0X21pbm1heF9vcHMnLCBhbXByb2Ns ZWZ0dHlwZSA9PiAndmFyYml0JywKKyAgYW1wcm9jcmlnaHR0eXBlID0+ICd2YXJiaXQnLCBh bXByb2NudW0gPT4gJzEyJywKKyAgYW1wcm9jID0+ICdicmluX21pbm1heF9yYW5nZXMnIH0s CiAKICMgbWlubWF4IG51bWVyaWMKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL251bWVyaWNf bWlubWF4X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdudW1lcmljJywKQEAgLTE4NTgsNiAr MTkxNCw5IEBACiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9udW1lcmljX21pbm1heF9vcHMn LCBhbXByb2NsZWZ0dHlwZSA9PiAnbnVtZXJpYycsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAn bnVtZXJpYycsIGFtcHJvY251bSA9PiAnMTEnLAogICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4 X3N0YXRzJyB9LAoreyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vbnVtZXJpY19taW5tYXhfb3Bz JywgYW1wcm9jbGVmdHR5cGUgPT4gJ251bWVyaWMnLAorICBhbXByb2NyaWdodHR5cGUgPT4g J251bWVyaWMnLCBhbXByb2NudW0gPT4gJzEyJywKKyAgYW1wcm9jID0+ICdicmluX21pbm1h eF9yYW5nZXMnIH0sCiAKICMgbWlubWF4IG11bHRpIG51bWVyaWMKIHsgYW1wcm9jZmFtaWx5 ID0+ICdicmluL251bWVyaWNfbWlubWF4X211bHRpX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ ICdudW1lcmljJywKQEAgLTE5MTIsNiArMTk3MSw4IEBACiAgIGFtcHJvY3JpZ2h0dHlwZSA9 PiAndXVpZCcsIGFtcHJvY251bSA9PiAnNCcsIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfdW5p b24nIH0sCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi91dWlkX21pbm1heF9vcHMnLCBhbXBy b2NsZWZ0dHlwZSA9PiAndXVpZCcsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAndXVpZCcsIGFt cHJvY251bSA9PiAnMTEnLCBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3N0YXRzJyB9LAoreyBh bXByb2NmYW1pbHkgPT4gJ2JyaW4vdXVpZF9taW5tYXhfb3BzJywgYW1wcm9jbGVmdHR5cGUg PT4gJ3V1aWQnLAorICBhbXByb2NyaWdodHR5cGUgPT4gJ3V1aWQnLCBhbXByb2NudW0gPT4g JzEyJywgYW1wcm9jID0+ICdicmluX21pbm1heF9yYW5nZXMnIH0sCiAKICMgbWlubWF4IG11 bHRpIHV1aWQKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL3V1aWRfbWlubWF4X211bHRpX29w cycsIGFtcHJvY2xlZnR0eXBlID0+ICd1dWlkJywKQEAgLTE5ODgsNiArMjA0OSw5IEBACiB7 IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9wZ19sc25fbWlubWF4X29wcycsIGFtcHJvY2xlZnR0 eXBlID0+ICdwZ19sc24nLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ3BnX2xzbicsIGFtcHJv Y251bSA9PiAnMTEnLAogICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3N0YXRzJyB9LAoreyBh bXByb2NmYW1pbHkgPT4gJ2JyaW4vcGdfbHNuX21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlw ZSA9PiAncGdfbHNuJywKKyAgYW1wcm9jcmlnaHR0eXBlID0+ICdwZ19sc24nLCBhbXByb2Nu dW0gPT4gJzEyJywKKyAgYW1wcm9jID0+ICdicmluX21pbm1heF9yYW5nZXMnIH0sCiAKICMg bWlubWF4IG11bHRpIHBnX2xzbgogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vcGdfbHNuX21p bm1heF9tdWx0aV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAncGdfbHNuJywKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgYi9zcmMvaW5jbHVkZS9jYXRh bG9nL3BnX3Byb2MuZGF0CmluZGV4IDkwYWJiZjM4M2QuLjdlOWMxZjhiZWYgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKKysrIGIvc3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ19wcm9jLmRhdApAQCAtNTMwOSw3ICs1MzA5LDcgQEAKICAgcHJvbmFtZSA9 PiAncGdfc3RhdF9nZXRfbnVtc2NhbnMnLCBwcm92b2xhdGlsZSA9PiAncycsIHByb3BhcmFs bGVsID0+ICdyJywKICAgcHJvcmV0dHlwZSA9PiAnaW50OCcsIHByb2FyZ3R5cGVzID0+ICdv aWQnLAogICBwcm9zcmMgPT4gJ3BnX3N0YXRfZ2V0X251bXNjYW5zJyB9LAoteyBvaWQgPT4g Jzk5NzYnLCBkZXNjciA9PiAnc3RhdGlzdGljczogdGltZSBvZiB0aGUgbGFzdCBzY2FuIGZv ciB0YWJsZS9pbmRleCcsCit7IG9pZCA9PiAnODkxMicsIGRlc2NyID0+ICdzdGF0aXN0aWNz OiB0aW1lIG9mIHRoZSBsYXN0IHNjYW4gZm9yIHRhYmxlL2luZGV4JywKICAgcHJvbmFtZSA9 PiAncGdfc3RhdF9nZXRfbGFzdHNjYW4nLCBwcm92b2xhdGlsZSA9PiAncycsIHByb3BhcmFs bGVsID0+ICdyJywKICAgcHJvcmV0dHlwZSA9PiAndGltZXN0YW1wdHonLCBwcm9hcmd0eXBl cyA9PiAnb2lkJywKICAgcHJvc3JjID0+ICdwZ19zdGF0X2dldF9sYXN0c2NhbicgfSwKQEAg LTg0OTEsNiArODQ5MSw5IEBACiAgIHByb25hbWUgPT4gJ2JyaW5fbWlubWF4X3N0YXRzJywg cHJvcmV0dHlwZSA9PiAnYm9vbCcsCiAgIHByb2FyZ3R5cGVzID0+ICdpbnRlcm5hbCBpbnRl cm5hbCBpbnQyIGludDIgaW50ZXJuYWwgaW50NCcsCiAgIHByb3NyYyA9PiAnYnJpbl9taW5t YXhfc3RhdHMnIH0sCit7IG9pZCA9PiAnOTgwMScsIGRlc2NyID0+ICdCUklOIG1pbm1heCBz dXBwb3J0JywKKyAgcHJvbmFtZSA9PiAnYnJpbl9taW5tYXhfcmFuZ2VzJywgcHJvcmV0dHlw ZSA9PiAnYm9vbCcsCisgIHByb2FyZ3R5cGVzID0+ICdpbnRlcm5hbCBpbnQyIGJvb2wnLCBw cm9zcmMgPT4gJ2JyaW5fbWlubWF4X3JhbmdlcycgfSwKIAogIyBCUklOIG1pbm1heCBtdWx0 aQogeyBvaWQgPT4gJzQ2MTYnLCBkZXNjciA9PiAnQlJJTiBtdWx0aSBtaW5tYXggc3VwcG9y dCcsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9leGVjdXRvci9ub2RlQnJpblNvcnQuaCBi L3NyYy9pbmNsdWRlL2V4ZWN1dG9yL25vZGVCcmluU29ydC5oCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAuLjNjYWM1OTlkODEKLS0tIC9kZXYvbnVsbAorKysgYi9z cmMvaW5jbHVkZS9leGVjdXRvci9ub2RlQnJpblNvcnQuaApAQCAtMCwwICsxLDQ3IEBACisv Ki0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBub2RlQnJpblNvcnQuaAorICoKKyAqCisg KgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2LTIwMjIsIFBvc3RncmVTUUwgR2xv YmFsIERldmVsb3BtZW50IEdyb3VwCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTQs IFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYQorICoKKyAqIHNyYy9p bmNsdWRlL2V4ZWN1dG9yL25vZGVCcmluU29ydC5oCisgKgorICotLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgKi8KKyNpZm5kZWYgTk9ERUJSSU5fU09SVF9ICisjZGVmaW5lIE5PREVCUklOX1NP UlRfSAorCisjaW5jbHVkZSAiYWNjZXNzL2dlbmFtLmgiCisjaW5jbHVkZSAiYWNjZXNzL3Bh cmFsbGVsLmgiCisjaW5jbHVkZSAibm9kZXMvZXhlY25vZGVzLmgiCisKK2V4dGVybiBCcmlu U29ydFN0YXRlICpFeGVjSW5pdEJyaW5Tb3J0KEJyaW5Tb3J0ICpub2RlLCBFU3RhdGUgKmVz dGF0ZSwgaW50IGVmbGFncyk7CitleHRlcm4gdm9pZCBFeGVjRW5kQnJpblNvcnQoQnJpblNv cnRTdGF0ZSAqbm9kZSk7CitleHRlcm4gdm9pZCBFeGVjQnJpblNvcnRNYXJrUG9zKEJyaW5T b3J0U3RhdGUgKm5vZGUpOworZXh0ZXJuIHZvaWQgRXhlY0JyaW5Tb3J0UmVzdHJQb3MoQnJp blNvcnRTdGF0ZSAqbm9kZSk7CitleHRlcm4gdm9pZCBFeGVjUmVTY2FuQnJpblNvcnQoQnJp blNvcnRTdGF0ZSAqbm9kZSk7CitleHRlcm4gdm9pZCBFeGVjQnJpblNvcnRFc3RpbWF0ZShC cmluU29ydFN0YXRlICpub2RlLCBQYXJhbGxlbENvbnRleHQgKnBjeHQpOworZXh0ZXJuIHZv aWQgRXhlY0JyaW5Tb3J0SW5pdGlhbGl6ZURTTShCcmluU29ydFN0YXRlICpub2RlLCBQYXJh bGxlbENvbnRleHQgKnBjeHQpOworZXh0ZXJuIHZvaWQgRXhlY0JyaW5Tb3J0UmVJbml0aWFs aXplRFNNKEJyaW5Tb3J0U3RhdGUgKm5vZGUsIFBhcmFsbGVsQ29udGV4dCAqcGN4dCk7Citl eHRlcm4gdm9pZCBFeGVjQnJpblNvcnRJbml0aWFsaXplV29ya2VyKEJyaW5Tb3J0U3RhdGUg Km5vZGUsCisJCQkJCQkJCQkJICBQYXJhbGxlbFdvcmtlckNvbnRleHQgKnB3Y3h0KTsKKwor LyoKKyAqIFRoZXNlIHJvdXRpbmVzIGFyZSBleHBvcnRlZCB0byBzaGFyZSBjb2RlIHdpdGgg bm9kZUluZGV4b25seXNjYW4uYyBhbmQKKyAqIG5vZGVCaXRtYXBCcmluU29ydC5jCisgKi8K K2V4dGVybiB2b2lkIEV4ZWNJbmRleEJ1aWxkU2NhbktleXMoUGxhblN0YXRlICpwbGFuc3Rh dGUsIFJlbGF0aW9uIGluZGV4LAorCQkJCQkJCQkgICBMaXN0ICpxdWFscywgYm9vbCBpc29y ZGVyYnksCisJCQkJCQkJCSAgIFNjYW5LZXkgKnNjYW5LZXlzLCBpbnQgKm51bVNjYW5LZXlz LAorCQkJCQkJCQkgICBJbmRleFJ1bnRpbWVLZXlJbmZvICoqcnVudGltZUtleXMsIGludCAq bnVtUnVudGltZUtleXMsCisJCQkJCQkJCSAgIEluZGV4QXJyYXlLZXlJbmZvICoqYXJyYXlL ZXlzLCBpbnQgKm51bUFycmF5S2V5cyk7CitleHRlcm4gdm9pZCBFeGVjSW5kZXhFdmFsUnVu dGltZUtleXMoRXhwckNvbnRleHQgKmVjb250ZXh0LAorCQkJCQkJCQkJIEluZGV4UnVudGlt ZUtleUluZm8gKnJ1bnRpbWVLZXlzLCBpbnQgbnVtUnVudGltZUtleXMpOworZXh0ZXJuIGJv b2wgRXhlY0luZGV4RXZhbEFycmF5S2V5cyhFeHByQ29udGV4dCAqZWNvbnRleHQsCisJCQkJ CQkJCSAgIEluZGV4QXJyYXlLZXlJbmZvICphcnJheUtleXMsIGludCBudW1BcnJheUtleXMp OworZXh0ZXJuIGJvb2wgRXhlY0luZGV4QWR2YW5jZUFycmF5S2V5cyhJbmRleEFycmF5S2V5 SW5mbyAqYXJyYXlLZXlzLCBpbnQgbnVtQXJyYXlLZXlzKTsKKworI2VuZGlmCQkJCQkJCS8q IE5PREVCUklOX1NPUlRfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhl Y25vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAppbmRleCAyMGY0Yzhi MzVmLi5lZmUyNjkzOGQwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9k ZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaApAQCAtMTU2NSw2ICsx NTY1LDExNCBAQCB0eXBlZGVmIHN0cnVjdCBJbmRleFNjYW5TdGF0ZQogCVNpemUJCWlzc19Q c2NhbkxlbjsKIH0gSW5kZXhTY2FuU3RhdGU7CiAKK3R5cGVkZWYgZW51bSB7CisJQlJJTlNP UlRfU1RBUlQsCisJQlJJTlNPUlRfTE9BRF9SQU5HRSwKKwlCUklOU09SVF9QUk9DRVNTX1JB TkdFLAorCUJSSU5TT1JUX0xPQURfTlVMTFMsCisJQlJJTlNPUlRfUFJPQ0VTU19OVUxMUywK KwlCUklOU09SVF9GSU5JU0hFRAorfSBCcmluU29ydFBoYXNlOworCit0eXBlZGVmIHN0cnVj dCBCcmluUmFuZ2VTY2FuRGVzYworeworCS8qIHJhbmdlIGluZm8gdHVwbGUgZGVzY3JpcHRv ciAqLworCVR1cGxlRGVzYwkJdGRlc2M7CisKKwkvKiByYW5nZXMsIHNvcnRlZCBieSBtaW52 YWwsIGJsa25vX3N0YXJ0ICovCisJVHVwbGVzb3J0c3RhdGUgKnJhbmdlczsKKworCS8qIG51 bWJlciBvZiByYW5nZXMgaW4gdGhlIHR1cGxlc29ydCAqLworCWludDY0CQkJbnJhbmdlczsK KworCS8qIGRpc3RpbmN0IG1pbnZhbCAoc29ydGVkKSAqLworCVR1cGxlc3RvcmVzdGF0ZSAq bWludmFsczsKKworCS8qIHNsb3QgZm9yIGFjY2Vzc2luZyB0aGUgdHVwbGVzb3J0L3R1cGxl c3RvcmUgKi8KKwlUdXBsZVRhYmxlU2xvdCAgKnNsb3Q7CisKK30gQnJpblJhbmdlU2NhbkRl c2M7CisKKy8qCisgKiBJbmZvIGFib3V0IHJhbmdlcyBmb3IgQlJJTiBTb3J0LgorICovCit0 eXBlZGVmIHN0cnVjdCBCcmluUmFuZ2UKK3sKKwlCbG9ja051bWJlciBibGtub19zdGFydDsK KwlCbG9ja051bWJlciBibGtub19lbmQ7CisKKwlEYXR1bQltaW5fdmFsdWU7CisJRGF0dW0J bWF4X3ZhbHVlOworCWJvb2wJaGFzX251bGxzOworCWJvb2wJYWxsX251bGxzOworCWJvb2wJ bm90X3N1bW1hcml6ZWQ7CisKKwkvKgorCSAqIEluZGV4IG9mIHRoZSByYW5nZSB3aGVuIG9y ZGVyZWQgYnkgbWluX3ZhbHVlIChpZiB0aGVyZSBhcmUgbXVsdGlwbGUKKwkgKiByYW5nZXMg d2l0aCB0aGUgc2FtZSBtaW5fdmFsdWUsIGl0J3MgdGhlIGxvd2VzdCBvbmUpLgorCSAqLwor CXVpbnQzMgltaW5faW5kZXg7CisKKwkvKgorCSAqIE1pbmltdW0gbWluX2luZGV4IGZyb20g YWxsIHJhbmdlcyB3aXRoIGhpZ2hlciBtYXhfdmFsdWUgKGkuZS4gd2hlbgorCSAqIHNvcnRl ZCBieSBtYXhfdmFsdWUpLiBJZiB0aGVyZSBhcmUgbXVsdGlwbGUgcmFuZ2VzIHdpdGggdGhl IHNhbWUKKwkgKiBtYXhfdmFsdWUsIGl0IGRlcGVuZHMgb24gdGhlIG9yZGVyaW5nIChpLmUu IHRoZSByYW5nZXMgbWF5IGdldAorCSAqIGRpZmZlcmVudCBtaW5faW5kZXhfbG93ZXN0LCBk ZXBlbmRpbmcgb24gdGhlIGV4YWN0IG9yZGVyaW5nKS4KKwkgKi8KKwl1aW50MzIJbWluX2lu ZGV4X2xvd2VzdDsKK30gQnJpblJhbmdlOworCit0eXBlZGVmIHN0cnVjdCBCcmluUmFuZ2Vz Cit7CisJaW50CQkJbnJhbmdlczsKKwlCcmluUmFuZ2UJcmFuZ2VzW0ZMRVhJQkxFX0FSUkFZ X01FTUJFUl07Cit9IEJyaW5SYW5nZXM7CisKK3R5cGVkZWYgc3RydWN0IEJyaW5Tb3J0U3Rh dGUKK3sKKwlTY2FuU3RhdGUJc3M7CQkJCS8qIGl0cyBmaXJzdCBmaWVsZCBpcyBOb2RlVGFn ICovCisJRXhwclN0YXRlICAqaW5kZXhxdWFsb3JpZzsKKwlMaXN0CSAgICppbmRleG9yZGVy YnlvcmlnOworCXN0cnVjdCBTY2FuS2V5RGF0YSAqaXNzX1NjYW5LZXlzOworCWludAkJCWlz c19OdW1TY2FuS2V5czsKKwlzdHJ1Y3QgU2NhbktleURhdGEgKmlzc19PcmRlckJ5S2V5czsK KwlpbnQJCQlpc3NfTnVtT3JkZXJCeUtleXM7CisJSW5kZXhSdW50aW1lS2V5SW5mbyAqaXNz X1J1bnRpbWVLZXlzOworCWludAkJCWlzc19OdW1SdW50aW1lS2V5czsKKwlib29sCQlpc3Nf UnVudGltZUtleXNSZWFkeTsKKwlFeHByQ29udGV4dCAqaXNzX1J1bnRpbWVDb250ZXh0Owor CVJlbGF0aW9uCWlzc19SZWxhdGlvbkRlc2M7CisJc3RydWN0IEluZGV4U2NhbkRlc2NEYXRh ICppc3NfU2NhbkRlc2M7CisKKwkvKiBUaGVzZSBhcmUgbmVlZGVkIGZvciByZS1jaGVja2lu ZyBPUkRFUiBCWSBleHByIG9yZGVyaW5nICovCisJcGFpcmluZ2hlYXAgKmlzc19SZW9yZGVy UXVldWU7CisJYm9vbAkJaXNzX1JlYWNoZWRFbmQ7CisJRGF0dW0JICAgKmlzc19PcmRlckJ5 VmFsdWVzOworCWJvb2wJICAgKmlzc19PcmRlckJ5TnVsbHM7CisJU29ydFN1cHBvcnQgaXNz X1NvcnRTdXBwb3J0OworCWJvb2wJICAgKmlzc19PcmRlckJ5VHlwQnlWYWxzOworCWludDE2 CSAgICppc3NfT3JkZXJCeVR5cExlbnM7CisJU2l6ZQkJaXNzX1BzY2FuTGVuOworCisJLyog Ki8KKwlCcmluUmFuZ2VTY2FuRGVzYyAqYnNfc2NhbjsKKwlCcmluUmFuZ2UJICAgKmJzX3Jh bmdlOworCUV4cHJTdGF0ZQkgICAqYnNfcXVhbDsKKwlEYXR1bQkJCWJzX3dhdGVybWFyazsK Kwlib29sCQkJYnNfd2F0ZXJtYXJrX3NldDsKKwlib29sCQkJYnNfd2F0ZXJtYXJrX2VtcHR5 OworCUJyaW5Tb3J0UGhhc2UJYnNfcGhhc2U7CisJU29ydFN1cHBvcnREYXRhCWJzX3NvcnRz dXBwb3J0OworCVByb2plY3Rpb25JbmZvICpic19Qcm9qSW5mbzsKKworCS8qCisJICogV2Ug bmVlZCB0d28gdHVwbGVzb3J0IGluc3RhbmNlcyAtIG9uZSBmb3IgY3VycmVudCByYW5nZSwg b25lIGZvcgorCSAqIHNwaWxsLW92ZXIgdHVwbGVzIGZyb20gdGhlIG92ZXJsYXBwaW5nIHJh bmdlcworCSAqLworCXZvaWQJCSAgICpic190dXBsZXNvcnRzdGF0ZTsKKwlUdXBsZXN0b3Jl c3RhdGUgKmJzX3R1cGxlc3RvcmU7Cit9IEJyaW5Tb3J0U3RhdGU7CisKIC8qIC0tLS0tLS0t LS0tLS0tLS0KICAqCSBJbmRleE9ubHlTY2FuU3RhdGUgaW5mb3JtYXRpb24KICAqCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaCBiL3NyYy9pbmNsdWRlL25v ZGVzL3BhdGhub2Rlcy5oCmluZGV4IDBkNGIxZWM0ZTQuLjFmMjQ4ZjEyZTYgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25v ZGVzL3BhdGhub2Rlcy5oCkBAIC0xNjk0LDYgKzE2OTQsMTcgQEAgdHlwZWRlZiBzdHJ1Y3Qg SW5kZXhQYXRoCiAJU2VsZWN0aXZpdHkgaW5kZXhzZWxlY3Rpdml0eTsKIH0gSW5kZXhQYXRo OwogCisvKgorICogcmVhZCBzb3J0ZWQgZGF0YSBmcm9tIGJyaW4gaW5kZXgKKyAqCisgKiBX ZSB1c2UgSW5kZXhQYXRoLCBiZWNhdXNlIHRoYXQncyB3aGF0IGFtY29zdGVzdGltYXRlIGlz IGV4cGVjdGluZywgYnV0CisgKiB3ZSB0eXBlZGVmIGl0IGFzIGEgc2VwYXJhdGUgc3RydWN0 LgorICovCit0eXBlZGVmIHN0cnVjdCBCcmluU29ydFBhdGgKK3sKKwlJbmRleFBhdGgJaXBh dGg7Cit9IEJyaW5Tb3J0UGF0aDsKKwogLyoKICAqIEVhY2ggSW5kZXhDbGF1c2UgcmVmZXJl bmNlcyBhIFJlc3RyaWN0SW5mbyBub2RlIGZyb20gdGhlIHF1ZXJ5J3MgV0hFUkUKICAqIG9y IEpPSU4gY29uZGl0aW9ucywgYW5kIHNob3dzIGhvdyB0aGF0IHJlc3RyaWN0aW9uIGNhbiBi ZSBhcHBsaWVkIHRvCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMu aCBiL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oCmluZGV4IDQ3ODFhOWM2MzIuLjVm NmY2ZjZlZDcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oCisr KyBiL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oCkBAIC01MDEsNiArNTAxLDMyIEBA IHR5cGVkZWYgc3RydWN0IEluZGV4T25seVNjYW4KIAlTY2FuRGlyZWN0aW9uIGluZGV4b3Jk ZXJkaXI7CS8qIGZvcndhcmQgb3IgYmFja3dhcmQgb3IgZG9uJ3QgY2FyZSAqLwogfSBJbmRl eE9ubHlTY2FuOwogCisKK3R5cGVkZWYgc3RydWN0IEJyaW5Tb3J0Cit7CisJU2NhbgkJc2Nh bjsKKwlPaWQJCQlpbmRleGlkOwkJLyogT0lEIG9mIGluZGV4IHRvIHNjYW4gKi8KKwlMaXN0 CSAgICppbmRleHF1YWw7CQkvKiBsaXN0IG9mIGluZGV4IHF1YWxzICh1c3VhbGx5IE9wRXhw cnMpICovCisJTGlzdAkgICAqaW5kZXhxdWFsb3JpZzsJLyogdGhlIHNhbWUgaW4gb3JpZ2lu YWwgZm9ybSAqLworCVNjYW5EaXJlY3Rpb24gaW5kZXhvcmRlcmRpcjsJLyogZm9yd2FyZCBv ciBiYWNrd2FyZCBvciBkb24ndCBjYXJlICovCisKKwkvKiBudW1iZXIgb2Ygc29ydC1rZXkg Y29sdW1ucyAqLworCWludAkJCW51bUNvbHM7CisKKwkvKiB0aGVpciBpbmRleGVzIGluIHRo ZSB0YXJnZXQgbGlzdCAqLworCUF0dHJOdW1iZXIgKnNvcnRDb2xJZHggcGdfbm9kZV9hdHRy KGFycmF5X3NpemUobnVtQ29scykpOworCisJLyogT0lEcyBvZiBvcGVyYXRvcnMgdG8gc29y dCB0aGVtIGJ5ICovCisJT2lkCQkgICAqc29ydE9wZXJhdG9ycyBwZ19ub2RlX2F0dHIoYXJy YXlfc2l6ZShudW1Db2xzKSk7CisKKwkvKiBPSURzIG9mIGNvbGxhdGlvbnMgKi8KKwlPaWQJ CSAgICpjb2xsYXRpb25zIHBnX25vZGVfYXR0cihhcnJheV9zaXplKG51bUNvbHMpKTsKKwor CS8qIE5VTExTIEZJUlNUL0xBU1QgZGlyZWN0aW9ucyAqLworCWJvb2wJICAgKm51bGxzRmly c3QgcGdfbm9kZV9hdHRyKGFycmF5X3NpemUobnVtQ29scykpOworCit9IEJyaW5Tb3J0Owor CiAvKiAtLS0tLS0tLS0tLS0tLS0tCiAgKgkJYml0bWFwIGluZGV4IHNjYW4gbm9kZQogICoK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL29wdGltaXplci9jb3N0LmggYi9zcmMvaW5jbHVk ZS9vcHRpbWl6ZXIvY29zdC5oCmluZGV4IDZjZjQ5NzA1ZDMuLjFmZWQ0MzY0NWEgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL29wdGltaXplci9jb3N0LmgKKysrIGIvc3JjL2luY2x1ZGUv b3B0aW1pemVyL2Nvc3QuaApAQCAtNzAsNiArNzAsNyBAQCBleHRlcm4gUEdETExJTVBPUlQg Ym9vbCBlbmFibGVfcGFyYWxsZWxfaGFzaDsKIGV4dGVybiBQR0RMTElNUE9SVCBib29sIGVu YWJsZV9wYXJ0aXRpb25fcHJ1bmluZzsKIGV4dGVybiBQR0RMTElNUE9SVCBib29sIGVuYWJs ZV9wcmVzb3J0ZWRfYWdncmVnYXRlOwogZXh0ZXJuIFBHRExMSU1QT1JUIGJvb2wgZW5hYmxl X2FzeW5jX2FwcGVuZDsKK2V4dGVybiBQR0RMTElNUE9SVCBib29sIGVuYWJsZV9icmluc29y dDsKIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgY29uc3RyYWludF9leGNsdXNpb247CiAKIGV4 dGVybiBkb3VibGUgaW5kZXhfcGFnZXNfZmV0Y2hlZChkb3VibGUgdHVwbGVzX2ZldGNoZWQs IEJsb2NrTnVtYmVyIHBhZ2VzLApAQCAtODAsNiArODEsOCBAQCBleHRlcm4gdm9pZCBjb3N0 X3NhbXBsZXNjYW4oUGF0aCAqcGF0aCwgUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8g KmJhc2VyZWwsCiAJCQkJCQkJUGFyYW1QYXRoSW5mbyAqcGFyYW1faW5mbyk7CiBleHRlcm4g dm9pZCBjb3N0X2luZGV4KEluZGV4UGF0aCAqcGF0aCwgUGxhbm5lckluZm8gKnJvb3QsCiAJ CQkJCSAgIGRvdWJsZSBsb29wX2NvdW50LCBib29sIHBhcnRpYWxfcGF0aCk7CitleHRlcm4g dm9pZCBjb3N0X2JyaW5zb3J0KEJyaW5Tb3J0UGF0aCAqcGF0aCwgUGxhbm5lckluZm8gKnJv b3QsCisJCQkJCQkgIGRvdWJsZSBsb29wX2NvdW50LCBib29sIHBhcnRpYWxfcGF0aCk7CiBl eHRlcm4gdm9pZCBjb3N0X2JpdG1hcF9oZWFwX3NjYW4oUGF0aCAqcGF0aCwgUGxhbm5lcklu Zm8gKnJvb3QsIFJlbE9wdEluZm8gKmJhc2VyZWwsCiAJCQkJCQkJCSAgUGFyYW1QYXRoSW5m byAqcGFyYW1faW5mbywKIAkJCQkJCQkJICBQYXRoICpiaXRtYXBxdWFsLCBkb3VibGUgbG9v cF9jb3VudCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGF0aG5vZGUu aCBiL3NyYy9pbmNsdWRlL29wdGltaXplci9wYXRobm9kZS5oCmluZGV4IDY5YmU3MDFiMTYu LjAzZWNjOTg4MDAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL29wdGltaXplci9wYXRobm9k ZS5oCisrKyBiL3NyYy9pbmNsdWRlL29wdGltaXplci9wYXRobm9kZS5oCkBAIC00OSw2ICs0 OSwxNSBAQCBleHRlcm4gSW5kZXhQYXRoICpjcmVhdGVfaW5kZXhfcGF0aChQbGFubmVySW5m byAqcm9vdCwKIAkJCQkJCQkJCVJlbGlkcyByZXF1aXJlZF9vdXRlciwKIAkJCQkJCQkJCWRv dWJsZSBsb29wX2NvdW50LAogCQkJCQkJCQkJYm9vbCBwYXJ0aWFsX3BhdGgpOworZXh0ZXJu IEJyaW5Tb3J0UGF0aCAqY3JlYXRlX2JyaW5zb3J0X3BhdGgoUGxhbm5lckluZm8gKnJvb3Qs CisJCQkJCQkJCQlJbmRleE9wdEluZm8gKmluZGV4LAorCQkJCQkJCQkJTGlzdCAqaW5kZXhj bGF1c2VzLAorCQkJCQkJCQkJTGlzdCAqcGF0aGtleXMsCisJCQkJCQkJCQlTY2FuRGlyZWN0 aW9uIGluZGV4c2NhbmRpciwKKwkJCQkJCQkJCWJvb2wgaW5kZXhvbmx5LAorCQkJCQkJCQkJ UmVsaWRzIHJlcXVpcmVkX291dGVyLAorCQkJCQkJCQkJZG91YmxlIGxvb3BfY291bnQsCisJ CQkJCQkJCQlib29sIHBhcnRpYWxfcGF0aCk7CiBleHRlcm4gQml0bWFwSGVhcFBhdGggKmNy ZWF0ZV9iaXRtYXBfaGVhcF9wYXRoKFBsYW5uZXJJbmZvICpyb290LAogCQkJCQkJCQkJCQkg ICBSZWxPcHRJbmZvICpyZWwsCiAJCQkJCQkJCQkJCSAgIFBhdGggKmJpdG1hcHF1YWwsCmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGF0aHMuaCBiL3NyYy9pbmNsdWRl L29wdGltaXplci9wYXRocy5oCmluZGV4IDczNmQ3OGVhNGMuLjNlMWM5NDU3NjIgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL29wdGltaXplci9wYXRocy5oCisrKyBiL3NyYy9pbmNsdWRl L29wdGltaXplci9wYXRocy5oCkBAIC0yMTIsNiArMjEyLDkgQEAgZXh0ZXJuIFBhdGggKmdl dF9jaGVhcGVzdF9mcmFjdGlvbmFsX3BhdGhfZm9yX3BhdGhrZXlzKExpc3QgKnBhdGhzLAog ZXh0ZXJuIFBhdGggKmdldF9jaGVhcGVzdF9wYXJhbGxlbF9zYWZlX3RvdGFsX2lubmVyKExp c3QgKnBhdGhzKTsKIGV4dGVybiBMaXN0ICpidWlsZF9pbmRleF9wYXRoa2V5cyhQbGFubmVy SW5mbyAqcm9vdCwgSW5kZXhPcHRJbmZvICppbmRleCwKIAkJCQkJCQkJICBTY2FuRGlyZWN0 aW9uIHNjYW5kaXIpOworZXh0ZXJuIExpc3QgKmJ1aWxkX2luZGV4X3BhdGhrZXlzX2JyaW4o UGxhbm5lckluZm8gKnJvb3QsIEluZGV4T3B0SW5mbyAqaW5kZXgsCisJCQkJCQkJCSAgVGFy Z2V0RW50cnkgKnRsZSwgaW50IGlkeCwKKwkJCQkJCQkJICBib29sIHJldmVyc2Vfc29ydCwg Ym9vbCBudWxsc19maXJzdCk7CiBleHRlcm4gTGlzdCAqYnVpbGRfcGFydGl0aW9uX3BhdGhr ZXlzKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpwYXJ0cmVsLAogCQkJCQkJCQkJ ICBTY2FuRGlyZWN0aW9uIHNjYW5kaXIsIGJvb2wgKnBhcnRpYWxrZXlzKTsKIGV4dGVybiBM aXN0ICpidWlsZF9leHByZXNzaW9uX3BhdGhrZXkoUGxhbm5lckluZm8gKnJvb3QsIEV4cHIg KmV4cHIsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy90dXBsZXNvcnQuaCBiL3Ny Yy9pbmNsdWRlL3V0aWxzL3R1cGxlc29ydC5oCmluZGV4IDEyNTc4ZTQyYmMuLjQ1NDEzZGFj MWEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3R1cGxlc29ydC5oCisrKyBiL3Ny Yy9pbmNsdWRlL3V0aWxzL3R1cGxlc29ydC5oCkBAIC0zNjcsNiArMzY3LDcgQEAgZXh0ZXJu IHZvaWQgdHVwbGVzb3J0X3Jlc2V0KFR1cGxlc29ydHN0YXRlICpzdGF0ZSk7CiAKIGV4dGVy biB2b2lkIHR1cGxlc29ydF9nZXRfc3RhdHMoVHVwbGVzb3J0c3RhdGUgKnN0YXRlLAogCQkJ CQkJCQlUdXBsZXNvcnRJbnN0cnVtZW50YXRpb24gKnN0YXRzKTsKK2V4dGVybiB2b2lkIHR1 cGxlc29ydF9yZXNldF9zdGF0cyhUdXBsZXNvcnRzdGF0ZSAqc3RhdGUpOwogZXh0ZXJuIGNv bnN0IGNoYXIgKnR1cGxlc29ydF9tZXRob2RfbmFtZShUdXBsZXNvcnRNZXRob2QgbSk7CiBl eHRlcm4gY29uc3QgY2hhciAqdHVwbGVzb3J0X3NwYWNlX3R5cGVfbmFtZShUdXBsZXNvcnRT cGFjZVR5cGUgdCk7CiAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv c3lzdmlld3Mub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zeXN2aWV3cy5vdXQK aW5kZXggYjdmZGE2ZmM4Mi4uMzA4ZTkxMmMyMSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9zeXN2aWV3cy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9zeXN2aWV3cy5vdXQKQEAgLTExMyw2ICsxMTMsNyBAQCBzZWxlY3QgbmFtZSwgc2V0 dGluZyBmcm9tIHBnX3NldHRpbmdzIHdoZXJlIG5hbWUgbGlrZSAnZW5hYmxlJSc7CiAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0KICBlbmFibGVfYXN5bmNf YXBwZW5kICAgICAgICAgICAgfCBvbgogIGVuYWJsZV9iaXRtYXBzY2FuICAgICAgICAgICAg ICB8IG9uCisgZW5hYmxlX2JyaW5zb3J0ICAgICAgICAgICAgICAgIHwgb24KICBlbmFibGVf Z2F0aGVybWVyZ2UgICAgICAgICAgICAgfCBvbgogIGVuYWJsZV9oYXNoYWdnICAgICAgICAg ICAgICAgICB8IG9uCiAgZW5hYmxlX2hhc2hqb2luICAgICAgICAgICAgICAgIHwgb24KQEAg LTEzMyw3ICsxMzQsNyBAQCBzZWxlY3QgbmFtZSwgc2V0dGluZyBmcm9tIHBnX3NldHRpbmdz IHdoZXJlIG5hbWUgbGlrZSAnZW5hYmxlJSc7CiAgZW5hYmxlX3NlcXNjYW4gICAgICAgICAg ICAgICAgIHwgb24KICBlbmFibGVfc29ydCAgICAgICAgICAgICAgICAgICAgfCBvbgogIGVu YWJsZV90aWRzY2FuICAgICAgICAgICAgICAgICB8IG9uCi0oMjIgcm93cykKKygyMyByb3dz KQogCiAtLSBUZXN0IHRoYXQgdGhlIHBnX3RpbWV6b25lX25hbWVzIGFuZCBwZ190aW1lem9u ZV9hYmJyZXZzIHZpZXdzIGFyZQogLS0gbW9yZS1vci1sZXNzIHdvcmtpbmcuICBXZSBjYW4n dCB0ZXN0IHRoZWlyIGNvbnRlbnRzIGluIGFueSBncmVhdCBkZXRhaWwKLS0gCjIuMzkuMAoK --------------z0saJSUvc90TqSu15DjSpJR9 Content-Type: text/x-patch; charset=UTF-8; name="0005-wip-brinsort-explain-stats-20230206.patch" Content-Disposition: attachment; filename="0005-wip-brinsort-explain-stats-20230206.patch" Content-Transfer-Encoding: base64 RnJvbSBhZmNjYTBjOGU1OTI4NDFkNjRkYTNkYWQzOGQ1NWU5ODNhN2E2NGZhIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzLnZvbmRyYUBwb3N0 Z3Jlc3FsLm9yZz4KRGF0ZTogU2F0LCAyOSBPY3QgMjAyMiAyMjowMTowMSArMDIwMApTdWJq ZWN0OiBbUEFUQ0ggMDUvMTBdIHdpcDogYnJpbnNvcnQgZXhwbGFpbiBzdGF0cwoKU2hvdyBz b21lIGludGVybmFsIHN0YXRzIGFib3V0IEJSSU4gU29ydCBpbiBFWFBMQUlOIG91dHB1dC4K LS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMgICAgICB8IDEzMiArKysrKysr KysrKysrKysrKysrKysrKysrKysrCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQnJpblNv cnQuYyB8ICA2NiArKysrKysrKysrKy0tLQogc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVz LmggICAgICAgfCAgMzkgKysrKysrKysKIDMgZmlsZXMgY2hhbmdlZCwgMjIzIGluc2VydGlv bnMoKyksIDE0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1h bmRzL2V4cGxhaW4uYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYwppbmRleCBj YTFjNjI1YTAxLi42YTE0YTJkZGJhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5k cy9leHBsYWluLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCkBAIC04 Nyw2ICs4Nyw4IEBAIHN0YXRpYyB2b2lkIHNob3dfaW5jcmVtZW50YWxfc29ydF9rZXlzKElu Y3JlbWVudGFsU29ydFN0YXRlICppbmNyc29ydHN0YXRlLAogCQkJCQkJCQkJICAgTGlzdCAq YW5jZXN0b3JzLCBFeHBsYWluU3RhdGUgKmVzKTsKIHN0YXRpYyB2b2lkIHNob3dfYnJpbnNv cnRfa2V5cyhCcmluU29ydFN0YXRlICpzb3J0c3RhdGUsIExpc3QgKmFuY2VzdG9ycywKIAkJ CQkJCQkgICBFeHBsYWluU3RhdGUgKmVzKTsKK3N0YXRpYyB2b2lkIHNob3dfYnJpbnNvcnRf c3RhdHMoQnJpblNvcnRTdGF0ZSAqc29ydHN0YXRlLCBMaXN0ICphbmNlc3RvcnMsCisJCQkJ CQkJCUV4cGxhaW5TdGF0ZSAqZXMpOwogc3RhdGljIHZvaWQgc2hvd19tZXJnZV9hcHBlbmRf a2V5cyhNZXJnZUFwcGVuZFN0YXRlICptc3RhdGUsIExpc3QgKmFuY2VzdG9ycywKIAkJCQkJ CQkJICAgRXhwbGFpblN0YXRlICplcyk7CiBzdGF0aWMgdm9pZCBzaG93X2FnZ19rZXlzKEFn Z1N0YXRlICphc3RhdGUsIExpc3QgKmFuY2VzdG9ycywKQEAgLTE4MTQsNiArMTgxNiw3IEBA IEV4cGxhaW5Ob2RlKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLCBMaXN0ICphbmNlc3RvcnMsCiAJ CQkJCQkJCQkJICAgcGxhbnN0YXRlLCBlcyk7CiAJCQlzaG93X3NjYW5fcXVhbChwbGFuLT5x dWFsLCAiRmlsdGVyIiwgcGxhbnN0YXRlLCBhbmNlc3RvcnMsIGVzKTsKIAkJCXNob3dfYnJp bnNvcnRfa2V5cyhjYXN0Tm9kZShCcmluU29ydFN0YXRlLCBwbGFuc3RhdGUpLCBhbmNlc3Rv cnMsIGVzKTsKKwkJCXNob3dfYnJpbnNvcnRfc3RhdHMoY2FzdE5vZGUoQnJpblNvcnRTdGF0 ZSwgcGxhbnN0YXRlKSwgYW5jZXN0b3JzLCBlcyk7CiAJCQlpZiAocGxhbi0+cXVhbCkKIAkJ CQlzaG93X2luc3RydW1lbnRhdGlvbl9jb3VudCgiUm93cyBSZW1vdmVkIGJ5IEZpbHRlciIs IDEsCiAJCQkJCQkJCQkJICAgcGxhbnN0YXRlLCBlcyk7CkBAIC0yNDMyLDYgKzI0MzUsMTM1 IEBAIHNob3dfYnJpbnNvcnRfa2V5cyhCcmluU29ydFN0YXRlICpzb3J0c3RhdGUsIExpc3Qg KmFuY2VzdG9ycywgRXhwbGFpblN0YXRlICplcykKIAkJCQkJCSBhbmNlc3RvcnMsIGVzKTsK IH0KIAorc3RhdGljIHZvaWQKK3Nob3dfYnJpbnNvcnRfc3RhdHMoQnJpblNvcnRTdGF0ZSAq c29ydHN0YXRlLCBMaXN0ICphbmNlc3RvcnMsIEV4cGxhaW5TdGF0ZSAqZXMpCit7CisJQnJp blNvcnRTdGF0cyAgKnN0YXRzID0gJnNvcnRzdGF0ZS0+YnNfc3RhdHM7CisKKwlpZiAoc29y dHN0YXRlLT5ic19zY2FuICE9IE5VTEwgJiYKKwkJc29ydHN0YXRlLT5ic19zY2FuLT5yYW5n ZXMgIT0gTlVMTCkKKwl7CisJCVR1cGxlc29ydEluc3RydW1lbnRhdGlvbiBzdGF0czsKKwor CQltZW1zZXQoJnN0YXRzLCAwLCBzaXplb2YoVHVwbGVzb3J0SW5zdHJ1bWVudGF0aW9uKSk7 CisJCXR1cGxlc29ydF9nZXRfc3RhdHMoc29ydHN0YXRlLT5ic19zY2FuLT5yYW5nZXMsICZz dGF0cyk7CisKKwkJRXhwbGFpbkluZGVudFRleHQoZXMpOworCQlhcHBlbmRTdHJpbmdJbmZv KGVzLT5zdHIsICJSYW5nZXM6ICIgSU5UNjRfRk9STUFUICIgIEJ1aWxkIHRpbWU6ICIgSU5U NjRfRk9STUFUICIgIE1ldGhvZDogJXMgIFNwYWNlOiAlbGQga0IgKCVzKVxuIiwKKwkJCQkJ CSBzb3J0c3RhdGUtPmJzX3NjYW4tPm5yYW5nZXMsCisJCQkJCQkgc29ydHN0YXRlLT5ic19z dGF0cy5yYW5nZXNfYnVpbGRfbXMsCisJCQkJCQkgdHVwbGVzb3J0X21ldGhvZF9uYW1lKHN0 YXRzLnNvcnRNZXRob2QpLAorCQkJCQkJIHN0YXRzLnNwYWNlVXNlZCwKKwkJCQkJCSB0dXBs ZXNvcnRfc3BhY2VfdHlwZV9uYW1lKHN0YXRzLnNwYWNlVHlwZSkpOworCX0KKworCWlmIChz dGF0cy0+c29ydF9jb3VudCA+IDApCisJeworCQlFeHBsYWluUHJvcGVydHlJbnRlZ2VyKCJS YW5nZXMgUHJvY2Vzc2VkIiwgTlVMTCwgKGludDY0KQorCQkJCQkJCSAgIHN0YXRzLT5yYW5n ZV9jb3VudCwgZXMpOworCisJCWlmIChlcy0+Zm9ybWF0ID09IEVYUExBSU5fRk9STUFUX1RF WFQpCisJCXsKKwkJCUV4cGxhaW5Qcm9wZXJ0eUludGVnZXIoIlNvcnRzIiwgTlVMTCwgKGlu dDY0KQorCQkJCQkJCQkgICBzdGF0cy0+c29ydF9jb3VudCwgZXMpOworCisJCQlFeHBsYWlu SW5kZW50VGV4dChlcyk7CisJCQlhcHBlbmRTdHJpbmdJbmZvKGVzLT5zdHIsICJUdXBsZXMg U29ydGVkOiAiIElOVDY0X0ZPUk1BVCAiICBQZXItc29ydDogIiBJTlQ2NF9GT1JNQVQgICIg IERpcmVjdDogIiBJTlQ2NF9GT1JNQVQgIiAgU3BpbGxlZDogIiBJTlQ2NF9GT1JNQVQgIiAg UmVzcGlsbGVkOiAiIElOVDY0X0ZPUk1BVCAiXG4iLAorCQkJCQkJCSBzdGF0cy0+bnR1cGxl c190dXBsZXNvcnRfYWxsLAorCQkJCQkJCSBzdGF0cy0+bnR1cGxlc190dXBsZXNvcnRfYWxs IC8gc3RhdHMtPnNvcnRfY291bnQsCisJCQkJCQkJIHN0YXRzLT5udHVwbGVzX3R1cGxlc29y dF9kaXJlY3QsCisJCQkJCQkJIHN0YXRzLT5udHVwbGVzX3NwaWxsZWQsCisJCQkJCQkJIHN0 YXRzLT5udHVwbGVzX3Jlc3BpbGxlZCk7CisJCX0KKwkJZWxzZQorCQl7CisJCQlFeHBsYWlu T3Blbkdyb3VwKCJTb3J0cyIsICJTb3J0cyIsIHRydWUsIGVzKTsKKworCQkJRXhwbGFpblBy b3BlcnR5SW50ZWdlcigiQ291bnQiLCBOVUxMLCAoaW50NjQpCisJCQkJCQkJCSAgIHN0YXRz LT5zb3J0X2NvdW50LCBlcyk7CisKKwkJCUV4cGxhaW5Qcm9wZXJ0eUludGVnZXIoIlR1cGxl cyBwZXIgc29ydCIsIE5VTEwsIChpbnQ2NCkKKwkJCQkJCQkJICAgc3RhdHMtPm50dXBsZXNf dHVwbGVzb3J0X2FsbCAvIHN0YXRzLT5zb3J0X2NvdW50LCBlcyk7CisKKwkJCUV4cGxhaW5Q cm9wZXJ0eUludGVnZXIoIlNvcnRlZCB0dXBsZXMgKGFsbCkiLCBOVUxMLCAoaW50NjQpCisJ CQkJCQkJCSAgIHN0YXRzLT5udHVwbGVzX3R1cGxlc29ydF9hbGwsIGVzKTsKKworCQkJRXhw bGFpblByb3BlcnR5SW50ZWdlcigiU29ydGVkIHR1cGxlcyAoZGlyZWN0KSIsIE5VTEwsIChp bnQ2NCkKKwkJCQkJCQkJICAgc3RhdHMtPm50dXBsZXNfdHVwbGVzb3J0X2RpcmVjdCwgZXMp OworCisJCQlFeHBsYWluUHJvcGVydHlJbnRlZ2VyKCJTcGlsbGVkIHR1cGxlcyIsIE5VTEws IChpbnQ2NCkKKwkJCQkJCQkJICAgc3RhdHMtPm50dXBsZXNfc3BpbGxlZCwgZXMpOworCisJ CQlFeHBsYWluUHJvcGVydHlJbnRlZ2VyKCJSZXNwaWxsZWQgdHVwbGVzIiwgTlVMTCwgKGlu dDY0KQorCQkJCQkJCQkgICBzdGF0cy0+bnR1cGxlc19yZXNwaWxsZWQsIGVzKTsKKworCQkJ RXhwbGFpbkNsb3NlR3JvdXAoIlNvcnRzIiwgIlNvcnRzIiwgdHJ1ZSwgZXMpOworCQl9CisJ fQorCisJaWYgKHN0YXRzLT5zb3J0X2NvdW50X2luX21lbW9yeSA+IDApCisJeworCQlpZiAo ZXMtPmZvcm1hdCA9PSBFWFBMQUlOX0ZPUk1BVF9URVhUKQorCQl7CisJCQlFeHBsYWluSW5k ZW50VGV4dChlcyk7CisJCQlhcHBlbmRTdHJpbmdJbmZvKGVzLT5zdHIsICJTb3J0cyAoaW4t bWVtb3J5KSAgQ291bnQ6ICIgSU5UNjRfRk9STUFUICIgIFNwYWNlIFRvdGFsOiAiIElOVDY0 X0ZPUk1BVCAgIiBrQiAgTWF4aW11bTogIiBJTlQ2NF9GT1JNQVQgIiBrQiAgQXZlcmFnZTog IiBJTlQ2NF9GT1JNQVQgIiBrQlxuIiwKKwkJCQkJCQkgc3RhdHMtPnNvcnRfY291bnRfaW5f bWVtb3J5LAorCQkJCQkJCSBzdGF0cy0+dG90YWxfc3BhY2VfdXNlZF9pbl9tZW1vcnksCisJ CQkJCQkJIHN0YXRzLT5tYXhfc3BhY2VfdXNlZF9pbl9tZW1vcnksCisJCQkJCQkJIHN0YXRz LT50b3RhbF9zcGFjZV91c2VkX2luX21lbW9yeSAvIHN0YXRzLT5zb3J0X2NvdW50X2luX21l bW9yeSk7CisJCX0KKwkJZWxzZQorCQl7CisJCQlFeHBsYWluT3Blbkdyb3VwKCJJbi1NZW1v cnkgU29ydHMiLCAiSW4tTWVtb3J5IFNvcnRzIiwgdHJ1ZSwgZXMpOworCisJCQlFeHBsYWlu UHJvcGVydHlJbnRlZ2VyKCJDb3VudCIsIE5VTEwsIChpbnQ2NCkKKwkJCQkJCQkJICAgc3Rh dHMtPnNvcnRfY291bnRfaW5fbWVtb3J5LCBlcyk7CisKKwkJCUV4cGxhaW5Qcm9wZXJ0eUlu dGVnZXIoIkF2ZXJhZ2Ugc3BhY2UiLCAia0IiLCAoaW50NjQpCisJCQkJCQkJCSAgIHN0YXRz LT50b3RhbF9zcGFjZV91c2VkX2luX21lbW9yeSAvIHN0YXRzLT5zb3J0X2NvdW50X2luX21l bW9yeSwgZXMpOworCisJCQlFeHBsYWluUHJvcGVydHlJbnRlZ2VyKCJNYXhpbXVtIHNwYWNl IiwgImtCIiwgKGludDY0KQorCQkJCQkJCQkgICBzdGF0cy0+bWF4X3NwYWNlX3VzZWRfaW5f bWVtb3J5LCBlcyk7CisKKwkJCUV4cGxhaW5Qcm9wZXJ0eUludGVnZXIoIlRvdGFsIHNwYWNl IiwgImtCIiwgKGludDY0KQorCQkJCQkJCQkgICBzdGF0cy0+dG90YWxfc3BhY2VfdXNlZF9p bl9tZW1vcnksIGVzKTsKKworCQkJRXhwbGFpbkNsb3NlR3JvdXAoIkluLU1lbW9yeSBTb3J0 cyIsICJJbi1NZW1vcnkgU29ydHMiLCB0cnVlLCBlcyk7CisJCX0KKwl9CisKKwlpZiAoc3Rh dHMtPnNvcnRfY291bnRfb25fZGlzayA+IDApCisJeworCQlpZiAoZXMtPmZvcm1hdCA9PSBF WFBMQUlOX0ZPUk1BVF9URVhUKQorCQl7CisJCQlFeHBsYWluSW5kZW50VGV4dChlcyk7CisJ CQlhcHBlbmRTdHJpbmdJbmZvKGVzLT5zdHIsICJTb3J0cyAob24tZGlzaykgIENvdW50OiAi IElOVDY0X0ZPUk1BVCAiICBTcGFjZSBUb3RhbDogIiBJTlQ2NF9GT1JNQVQgICIga0IgIE1h eGltdW06ICIgSU5UNjRfRk9STUFUICIga0IgIEF2ZXJhZ2U6ICIgSU5UNjRfRk9STUFUICIg a0JcbiIsCisJCQkJCQkJIHN0YXRzLT5zb3J0X2NvdW50X29uX2Rpc2ssCisJCQkJCQkJIHN0 YXRzLT50b3RhbF9zcGFjZV91c2VkX29uX2Rpc2ssCisJCQkJCQkJIHN0YXRzLT5tYXhfc3Bh Y2VfdXNlZF9vbl9kaXNrLAorCQkJCQkJCSBzdGF0cy0+dG90YWxfc3BhY2VfdXNlZF9vbl9k aXNrIC8gc3RhdHMtPnNvcnRfY291bnRfb25fZGlzayk7CisJCX0KKwkJZWxzZQorCQl7CisJ CQlFeHBsYWluT3Blbkdyb3VwKCJPbi1EaXNrIFNvcnRzIiwgIk9uLURpc2sgU29ydHMiLCB0 cnVlLCBlcyk7CisKKwkJCUV4cGxhaW5Qcm9wZXJ0eUludGVnZXIoIkNvdW50IiwgTlVMTCwg KGludDY0KQorCQkJCQkJCQkgICBzdGF0cy0+c29ydF9jb3VudF9vbl9kaXNrLCBlcyk7CisK KwkJCUV4cGxhaW5Qcm9wZXJ0eUludGVnZXIoIkF2ZXJhZ2Ugc3BhY2UiLCAia0IiLCAoaW50 NjQpCisJCQkJCQkJCSAgIHN0YXRzLT50b3RhbF9zcGFjZV91c2VkX29uX2Rpc2sgLyBzdGF0 cy0+c29ydF9jb3VudF9vbl9kaXNrLCBlcyk7CisKKwkJCUV4cGxhaW5Qcm9wZXJ0eUludGVn ZXIoIk1heGltdW0gc3BhY2UiLCAia0IiLCAoaW50NjQpCisJCQkJCQkJCSAgIHN0YXRzLT5t YXhfc3BhY2VfdXNlZF9vbl9kaXNrLCBlcyk7CisKKwkJCUV4cGxhaW5Qcm9wZXJ0eUludGVn ZXIoIlRvdGFsIHNwYWNlIiwgImtCIiwgKGludDY0KQorCQkJCQkJCQkgICBzdGF0cy0+dG90 YWxfc3BhY2VfdXNlZF9vbl9kaXNrLCBlcyk7CisKKwkJCUV4cGxhaW5DbG9zZUdyb3VwKCJP bi1EaXNrIFNvcnRzIiwgIk9uLURpc2sgU29ydHMiLCB0cnVlLCBlcyk7CisJCX0KKwl9Cit9 CisKIC8qCiAgKiBMaWtld2lzZSwgZm9yIGEgTWVyZ2VBcHBlbmQgbm9kZS4KICAqLwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJyaW5Tb3J0LmMgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlQnJpblNvcnQuYwppbmRleCA1MjI1ZTY0NzU2Li4zMjRiNTU4 YWM2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQnJpblNvcnQuYwor KysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQnJpblNvcnQuYwpAQCAtNDUwLDYgKzQ1 MCw4IEBAIGJyaW5zb3J0X2xvYWRfdHVwbGVzKEJyaW5Tb3J0U3RhdGUgKm5vZGUsIGJvb2wg Y2hlY2tfd2F0ZXJtYXJrLCBib29sIG51bGxfcHJvY2VzCiAJaWYgKG51bGxfcHJvY2Vzc2lu ZyAmJiAhKHJhbmdlLT5oYXNfbnVsbHMgfHwgcmFuZ2UtPm5vdF9zdW1tYXJpemVkIHx8IHJh bmdlLT5hbGxfbnVsbHMpKQogCQlyZXR1cm47CiAKKwlub2RlLT5ic19zdGF0cy5yYW5nZV9j b3VudCsrOworCiAJYnJpbnNvcnRfc3RhcnRfdGlkc2Nhbihub2RlKTsKIAogCXNjYW4gPSBu b2RlLT5zcy5zc19jdXJyZW50U2NhbkRlc2M7CkBAIC01MzQsNyArNTM2LDEwIEBAIGJyaW5z b3J0X2xvYWRfdHVwbGVzKEJyaW5Tb3J0U3RhdGUgKm5vZGUsIGJvb2wgY2hlY2tfd2F0ZXJt YXJrLCBib29sIG51bGxfcHJvY2VzCiAJCQkJLyogU3Rhc2ggaXQgdG8gdGhlIHR1cGxlc3Rv cmUgKHdoZW4gTlVMTCwgb3IgaWdub3JlCiAJCQkJICogaXQgKHdoZW4gbm90LU5VTEwpLiAq LwogCQkJCWlmIChpc251bGwpCisJCQkJewogCQkJCQl0dXBsZXN0b3JlX3B1dHR1cGxlc2xv dChub2RlLT5ic190dXBsZXN0b3JlLCB0bXBzbG90KTsKKwkJCQkJbm9kZS0+YnNfc3RhdHMu bnR1cGxlc19zcGlsbGVkKys7CisJCQkJfQogCiAJCQkJLyogTlVMTCBvciBub3QsIHdlJ3Jl IGRvbmUgKi8KIAkJCQljb250aW51ZTsKQEAgLTU1NCw3ICs1NTksMTIgQEAgYnJpbnNvcnRf bG9hZF90dXBsZXMoQnJpblNvcnRTdGF0ZSAqbm9kZSwgYm9vbCBjaGVja193YXRlcm1hcmss IGJvb2wgbnVsbF9wcm9jZXMKIAkJCQkJCQkJCQkgICZub2RlLT5ic19zb3J0c3VwcG9ydCk7 CiAKIAkJCWlmIChjbXAgPD0gMCkKKwkJCXsKIAkJCQl0dXBsZXNvcnRfcHV0dHVwbGVzbG90 KG5vZGUtPmJzX3R1cGxlc29ydHN0YXRlLCB0bXBzbG90KTsKKwkJCQlub2RlLT5ic19zdGF0 cy5udHVwbGVzX3R1cGxlc29ydF9kaXJlY3QrKzsKKwkJCQlub2RlLT5ic19zdGF0cy5udHVw bGVzX3R1cGxlc29ydF9hbGwrKzsKKwkJCQlub2RlLT5ic19zdGF0cy5udHVwbGVzX3R1cGxl c29ydCsrOworCQkJfQogCQkJZWxzZQogCQkJewogCQkJCS8qCkBAIC01NjUsNiArNTc1LDcg QEAgYnJpbnNvcnRfbG9hZF90dXBsZXMoQnJpblNvcnRTdGF0ZSAqbm9kZSwgYm9vbCBjaGVj a193YXRlcm1hcmssIGJvb2wgbnVsbF9wcm9jZXMKIAkJCQkgKiByZXNwaWxsKSBhbmQgc3Rv cCBzcGlsbGluZy4KIAkJCQkgKi8KIAkJCQl0dXBsZXN0b3JlX3B1dHR1cGxlc2xvdChub2Rl LT5ic190dXBsZXN0b3JlLCB0bXBzbG90KTsKKwkJCQlub2RlLT5ic19zdGF0cy5udHVwbGVz X3NwaWxsZWQrKzsKIAkJCX0KIAkJfQogCkBAIC02MzMsNyArNjQ0LDExIEBAIGJyaW5zb3J0 X2xvYWRfc3BpbGxfdHVwbGVzKEJyaW5Tb3J0U3RhdGUgKm5vZGUsIGJvb2wgY2hlY2tfd2F0 ZXJtYXJrKQogCQkJCQkJCQkJICAmbm9kZS0+YnNfc29ydHN1cHBvcnQpOwogCiAJCWlmIChj bXAgPD0gMCkKKwkJewogCQkJdHVwbGVzb3J0X3B1dHR1cGxlc2xvdChub2RlLT5ic190dXBs ZXNvcnRzdGF0ZSwgc2xvdCk7CisJCQlub2RlLT5ic19zdGF0cy5udHVwbGVzX3R1cGxlc29y dF9hbGwrKzsKKwkJCW5vZGUtPmJzX3N0YXRzLm50dXBsZXNfdHVwbGVzb3J0Kys7CisJCX0K IAkJZWxzZQogCQl7CiAJCQkvKgpAQCAtNjQ0LDYgKzY1OSw3IEBAIGJyaW5zb3J0X2xvYWRf c3BpbGxfdHVwbGVzKEJyaW5Tb3J0U3RhdGUgKm5vZGUsIGJvb2wgY2hlY2tfd2F0ZXJtYXJr KQogCQkJICogcmVzcGlsbCkgYW5kIHN0b3Agc3BpbGxpbmcuCiAJCQkgKi8KIAkJCXR1cGxl c3RvcmVfcHV0dHVwbGVzbG90KHR1cHN0b3JlLCBzbG90KTsKKwkJCW5vZGUtPmJzX3N0YXRz Lm50dXBsZXNfcmVzcGlsbGVkKys7CiAJCX0KIAl9CiAKQEAgLTkzMywyMyArOTQ5LDQwIEBA IEluZGV4TmV4dChCcmluU29ydFN0YXRlICpub2RlKQogCQkJCQkgKi8KIAkJCQkJaWYgKG5v ZGUtPmJzX3R1cGxlc29ydHN0YXRlKQogCQkJCQl7Ci0jaWZkZWYgREVCVUdfQlJJTl9TT1JU CisJCQkJCQlUdXBsZXNvcnRJbnN0cnVtZW50YXRpb24gc3RhdHM7CisKKwkJCQkJCS8qCisJ CQkJCQkgKiBSZXNldCB0dXBsZXNvcnQgc3RhdGlzdGljcyBiZXR3ZWVuIHJ1bnMsIG90aGVy d2lzZQorCQkJCQkJICogd2UnbGwga2VlcCByZS11c2luZyBzdGF0cyBmcm9tIHRoZSBsYXJn ZXN0IHJ1bi4KKwkJCQkJCSAqLwogCQkJCQkJdHVwbGVzb3J0X3Jlc2V0X3N0YXRzKG5vZGUt PmJzX3R1cGxlc29ydHN0YXRlKTsKLSNlbmRpZgogCiAJCQkJCQl0dXBsZXNvcnRfcGVyZm9y bXNvcnQobm9kZS0+YnNfdHVwbGVzb3J0c3RhdGUpOwogCi0jaWZkZWYgREVCVUdfQlJJTl9T T1JUCi0JCQkJCQlpZiAoZGVidWdfYnJpbl9zb3J0KQotCQkJCQkJewotCQkJCQkJCVR1cGxl c29ydEluc3RydW1lbnRhdGlvbiBzdGF0czsKKwkJCQkJCW5vZGUtPmJzX3N0YXRzLnNvcnRf Y291bnQrKzsKKwkJCQkJCW5vZGUtPmJzX3N0YXRzLm50dXBsZXNfdHVwbGVzb3J0ID0gMDsK IAotCQkJCQkJCW1lbXNldCgmc3RhdHMsIDAsIHNpemVvZihUdXBsZXNvcnRJbnN0cnVtZW50 YXRpb24pKTsKLQkJCQkJCQl0dXBsZXNvcnRfZ2V0X3N0YXRzKG5vZGUtPmJzX3R1cGxlc29y dHN0YXRlLCAmc3RhdHMpOworCQkJCQkJdHVwbGVzb3J0X2dldF9zdGF0cyhub2RlLT5ic190 dXBsZXNvcnRzdGF0ZSwgJnN0YXRzKTsKIAotCQkJCQkJCXR1cGxlc29ydF9nZXRfc3RhdHMo bm9kZS0+YnNfdHVwbGVzb3J0c3RhdGUsICZzdGF0cyk7CisJCQkJCQlpZiAoc3RhdHMuc3Bh Y2VUeXBlID09IFNPUlRfU1BBQ0VfVFlQRV9ESVNLKQorCQkJCQkJeworCQkJCQkJCW5vZGUt PmJzX3N0YXRzLnNvcnRfY291bnRfb25fZGlzaysrOworCQkJCQkJCW5vZGUtPmJzX3N0YXRz LnRvdGFsX3NwYWNlX3VzZWRfb25fZGlzayArPSBzdGF0cy5zcGFjZVVzZWQ7CisJCQkJCQkJ bm9kZS0+YnNfc3RhdHMubWF4X3NwYWNlX3VzZWRfb25fZGlzayA9IE1heChub2RlLT5ic19z dGF0cy5tYXhfc3BhY2VfdXNlZF9vbl9kaXNrLAorCQkJCQkJCQkJCQkJCQkJCQkJc3RhdHMu c3BhY2VVc2VkKTsKKwkJCQkJCX0KKwkJCQkJCWVsc2UgaWYgKHN0YXRzLnNwYWNlVHlwZSA9 PSBTT1JUX1NQQUNFX1RZUEVfTUVNT1JZKQorCQkJCQkJeworCQkJCQkJCW5vZGUtPmJzX3N0 YXRzLnNvcnRfY291bnRfaW5fbWVtb3J5Kys7CisJCQkJCQkJbm9kZS0+YnNfc3RhdHMudG90 YWxfc3BhY2VfdXNlZF9pbl9tZW1vcnkgKz0gc3RhdHMuc3BhY2VVc2VkOworCQkJCQkJCW5v ZGUtPmJzX3N0YXRzLm1heF9zcGFjZV91c2VkX2luX21lbW9yeSA9IE1heChub2RlLT5ic19z dGF0cy5tYXhfc3BhY2VfdXNlZF9pbl9tZW1vcnksCisJCQkJCQkJCQkJCQkJCQkJCQkgIHN0 YXRzLnNwYWNlVXNlZCk7CisJCQkJCQl9CiAKLQkJCQkJCQllbG9nKFdBUk5JTkcsICJtZXRo b2Q6ICVzICBzcGFjZTogJWxkIGtCICglcykiLAorI2lmZGVmIERFQlVHX0JSSU5fU09SVAor CQkJCQkJaWYgKGRlYnVnX2JyaW5fc29ydCkKKwkJCQkJCXsKKwkJCQkJCQllbG9nKFdBUk5J TkcsICJtZXRob2Q6ICVzICBzcGFjZTogIiBJTlQ2NF9GT1JNQVQgIiBrQiAoJXMpIiwKIAkJ CQkJCQkJIHR1cGxlc29ydF9tZXRob2RfbmFtZShzdGF0cy5zb3J0TWV0aG9kKSwKIAkJCQkJ CQkJIHN0YXRzLnNwYWNlVXNlZCwKIAkJCQkJCQkJIHR1cGxlc29ydF9zcGFjZV90eXBlX25h bWUoc3RhdHMuc3BhY2VUeXBlKSk7CkBAIC0xMjE5LDkgKzEyNTIsMTAgQEAgRXhlY0VuZEJy aW5Tb3J0KEJyaW5Tb3J0U3RhdGUgKm5vZGUpCiAJCXR1cGxlc29ydF9lbmQobm9kZS0+YnNf dHVwbGVzb3J0c3RhdGUpOwogCW5vZGUtPmJzX3R1cGxlc29ydHN0YXRlID0gTlVMTDsKIAot CWlmIChub2RlLT5ic19zY2FuLT5yYW5nZXMgIT0gTlVMTCkKKwlpZiAobm9kZS0+YnNfc2Nh biAhPSBOVUxMICYmCisJCW5vZGUtPmJzX3NjYW4tPnJhbmdlcyAhPSBOVUxMKQogCQl0dXBs ZXNvcnRfZW5kKG5vZGUtPmJzX3NjYW4tPnJhbmdlcyk7Ci0Jbm9kZS0+YnNfc2Nhbi0+cmFu Z2VzID0gTlVMTDsKKwlub2RlLT5ic19zY2FuID0gTlVMTDsKIH0KIAogLyogLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQpAQCAtMTMxNCw2ICsxMzQ4LDcgQEAgRXhlY0luaXRCcmluU29ydFJhbmdlcyhCcmluU29y dCAqbm9kZSwgQnJpblNvcnRTdGF0ZSAqcGxhbnN0YXRlKQogCVRhcmdldEVudHJ5ICp0bGU7 CiAJaW50CQkJajsKIAlMaXN0CSAgICppbmRleHBycyA9IFJlbGF0aW9uR2V0SW5kZXhFeHBy ZXNzaW9ucyhpbmRleFJlbCk7CisJVGltZXN0YW1wVHoJc3RhcnRfdHM7CiAKIAkvKiBCUklO IFNvcnQgb25seSBhbGxvd3MgT1JERVIgQlkgdXNpbmcgYSBzaW5nbGUgY29sdW1uICovCiAJ QXNzZXJ0KG5vZGUtPm51bUNvbHMgPT0gMSk7CkBAIC0xNDA0LDE1ICsxNDM5LDE4IEBAIEV4 ZWNJbml0QnJpblNvcnRSYW5nZXMoQnJpblNvcnQgKm5vZGUsIEJyaW5Tb3J0U3RhdGUgKnBs YW5zdGF0ZSkKIAogCS8qCiAJICogQXNrIHRoZSBvcGNsYXNzIHRvIHByb2R1Y2UgcmFuZ2Vz IGluIGFwcHJvcHJpYXRlIG9yZGVyaW5nLgotCSAqCi0JICogWFhYIFBhc3MgaW5mbyBhYm91 dCBBU0MvREVTQywgTlVMTFMgRklSU1QvTEFTVC4KIAkgKi8KKwlzdGFydF90cyA9IEdldEN1 cnJlbnRUaW1lc3RhbXAoKTsKKwogCWJyc2NhbiA9IChCcmluUmFuZ2VTY2FuRGVzYyAqKSBE YXR1bUdldFBvaW50ZXIoRnVuY3Rpb25DYWxsM0NvbGwocmFuZ2Vwcm9jLAogCQkJCQkJCQkJ CQlub2RlLT5jb2xsYXRpb25zWzBdLAogCQkJCQkJCQkJCQlQb2ludGVyR2V0RGF0dW0oc2Nh biksCiAJCQkJCQkJCQkJCUludDE2R2V0RGF0dW0oYXR0bm8pLAogCQkJCQkJCQkJCQlCb29s R2V0RGF0dW0oYXNjKSkpOwogCisJcGxhbnN0YXRlLT5ic19zdGF0cy5yYW5nZXNfYnVpbGRf bXMKKwkJPSBUaW1lc3RhbXBEaWZmZXJlbmNlTWlsbGlzZWNvbmRzKHN0YXJ0X3RzLCBHZXRD dXJyZW50VGltZXN0YW1wKCkpOworCiAJLyogYWxsb2NhdGUgZm9yIHNwYWNlLCBhbmQgYWxz byBmb3IgdGhlIGFsdGVybmF0aXZlIG9yZGVyaW5nICovCiAJcGxhbnN0YXRlLT5ic19zY2Fu ID0gYnJzY2FuOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVz LmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAppbmRleCBlZmUyNjkzOGQwLi4y YTk4Mjg2ZTExIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAor KysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaApAQCAtMTYyOCw2ICsxNjI4LDQ0 IEBAIHR5cGVkZWYgc3RydWN0IEJyaW5SYW5nZXMKIAlCcmluUmFuZ2UJcmFuZ2VzW0ZMRVhJ QkxFX0FSUkFZX01FTUJFUl07CiB9IEJyaW5SYW5nZXM7CiAKK3R5cGVkZWYgc3RydWN0IEJy aW5Tb3J0U3RhdHMKK3sKKwkvKiBudW1iZXIgb2Ygc29ydHMgKi8KKwlpbnQ2NAlzb3J0X2Nv dW50OworCisJLyogbnVtYmVyIG9mIHJhbmdlcyBsb2FkZWQgKi8KKwlpbnQ2NAlyYW5nZV9j b3VudDsKKworCS8qIHR1cGxlcyBpbiB0aGUgY3VycmVudCB0dXBsZXNvcnQgKi8KKwlpbnQ2 NAludHVwbGVzX3R1cGxlc29ydDsKKworCS8qIHR1cGxlcyB3cml0dGVuIGRpcmVjdGx5IHRv IHR1cGxlc29ydCAqLworCWludDY0CW50dXBsZXNfdHVwbGVzb3J0X2RpcmVjdDsKKworCS8q IHR1cGxlcyB3cml0dGVuIHRvIHR1cGxlc29ydCAoYWxsKSAqLworCWludDY0CW50dXBsZXNf dHVwbGVzb3J0X2FsbDsKKworCS8qIHR1cGxlcyB3cml0dGVuIHRvIHR1cGxlc3RvcmUgKi8K KwlpbnQ2NAludHVwbGVzX3NwaWxsZWQ7CisKKwkvKiB0dXBsZXMgY29waWVkIGZyb20gb2xk IHRvIG5ldyB0dXBsZXN0b3JlICovCisJaW50NjQJbnR1cGxlc19yZXNwaWxsZWQ7CisKKwkv KiBudW1iZXIgb2YgaW4tbWVtb3J5L29uLWRpc2sgc29ydHMgKi8KKwlpbnQ2NAlzb3J0X2Nv dW50X2luX21lbW9yeTsKKwlpbnQ2NAlzb3J0X2NvdW50X29uX2Rpc2s7CisKKwkvKiB0b3Rh bC9tYXhpbXVtIGFtb3VudCBvZiBzcGFjZSB1c2VkIGJ5IGVpdGhlciBzb3J0ICovCisJaW50 NjQJdG90YWxfc3BhY2VfdXNlZF9pbl9tZW1vcnk7CisJaW50NjQJdG90YWxfc3BhY2VfdXNl ZF9vbl9kaXNrOworCWludDY0CW1heF9zcGFjZV91c2VkX2luX21lbW9yeTsKKwlpbnQ2NAlt YXhfc3BhY2VfdXNlZF9vbl9kaXNrOworCisJLyogdGltZSB0byBidWlsZCByYW5nZXMgKG1p bGxpc2Vjb25kcykgKi8KKwlpbnQ2NAlyYW5nZXNfYnVpbGRfbXM7CisKK30gQnJpblNvcnRT dGF0czsKKwogdHlwZWRlZiBzdHJ1Y3QgQnJpblNvcnRTdGF0ZQogewogCVNjYW5TdGF0ZQlz czsJCQkJLyogaXRzIGZpcnN0IGZpZWxkIGlzIE5vZGVUYWcgKi8KQEAgLTE2NjQsNiArMTcw Miw3IEBAIHR5cGVkZWYgc3RydWN0IEJyaW5Tb3J0U3RhdGUKIAlCcmluU29ydFBoYXNlCWJz X3BoYXNlOwogCVNvcnRTdXBwb3J0RGF0YQlic19zb3J0c3VwcG9ydDsKIAlQcm9qZWN0aW9u SW5mbyAqYnNfUHJvakluZm87CisJQnJpblNvcnRTdGF0cwlic19zdGF0czsKIAogCS8qCiAJ ICogV2UgbmVlZCB0d28gdHVwbGVzb3J0IGluc3RhbmNlcyAtIG9uZSBmb3IgY3VycmVudCBy YW5nZSwgb25lIGZvcgotLSAKMi4zOS4wCgo= --------------z0saJSUvc90TqSu15DjSpJR9 Content-Type: text/x-patch; charset=UTF-8; name="0006-wip-multiple-watermark-steps-20230206.patch" Content-Disposition: attachment; filename="0006-wip-multiple-watermark-steps-20230206.patch" Content-Transfer-Encoding: base64 RnJvbSA4Y2ZlNWJjMWYzMmU4YTdmY2YwMWVlN2ZhY2IzMjNiOTA5NzkwYWQ1IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzLnZvbmRyYUBwb3N0 Z3Jlc3FsLm9yZz4KRGF0ZTogVGh1LCAyMCBPY3QgMjAyMiAxMzowMzowMCArMDIwMApTdWJq ZWN0OiBbUEFUQ0ggMDYvMTBdIHdpcDogbXVsdGlwbGUgd2F0ZXJtYXJrIHN0ZXBzCgpBbGxv dyBpbmNyZW1lbnRpbmcgdGhlIG1pbnZhbCB3YXRlcm1hcmsgZmFzdGVyLCBieSBza2lwcGlu ZyBzb21lIG1pbnZhbAp2YWx1ZXMuIFRoaXMgYWxsb3dzIHNvcnRpbmcgbW9yZSBkYXRhIGF0 IG9uY2UgKGluc3RlYWQgb2YgbWFueSB0aW55CnNvcnRzLCB3aGljaCBpcyBpbmVmZmljaWVu dCkuIFRoaXMgYWxzbyByZWR1Y2VzIHRoZSBudW1iZXIgb2Ygcm93cyB3ZQpuZWVkIHRvIHNw aWxsIChhbmQgcG9zc2libHkgdHJhbnNmZXIgbXVsdGlwbGUgdGltZXMpLgoKVG8gdXNlIGEg ZGlmZmVyZW50IHdhdGVybWFyayBzdGVwLCB1c2UgYSBuZXcgR1VDOgoKICBTRVQgYnJpbnNv cnRfd2F0ZXJtYXJrX3N0ZXAgPSAxNgotLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxh aW4uYyAgICAgIHwgIDMgKysKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCcmluU29ydC5j IHwgNTkgKysrKysrKysrKysrKysrKysrKysrKysrKystLS0KIHNyYy9iYWNrZW5kL3V0aWxz L21pc2MvZ3VjX3RhYmxlcy5jIHwgMTIgKysrKysrCiAzIGZpbGVzIGNoYW5nZWQsIDY4IGlu c2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvZXhwbGFpbi5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCmlu ZGV4IDZhMTRhMmRkYmEuLmYzODdlZDJkYTIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL2V4cGxhaW4uYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMK QEAgLTQ3LDYgKzQ3LDcgQEAgRXhwbGFpbk9uZVF1ZXJ5X2hvb2tfdHlwZSBFeHBsYWluT25l UXVlcnlfaG9vayA9IE5VTEw7CiAvKiBIb29rIGZvciBwbHVnaW5zIHRvIGdldCBjb250cm9s IGluIGV4cGxhaW5fZ2V0X2luZGV4X25hbWUoKSAqLwogZXhwbGFpbl9nZXRfaW5kZXhfbmFt ZV9ob29rX3R5cGUgZXhwbGFpbl9nZXRfaW5kZXhfbmFtZV9ob29rID0gTlVMTDsKIAorZXh0 ZXJuIGludCBicmluc29ydF93YXRlcm1hcmtfc3RlcDsKIAogLyogT1ItYWJsZSBmbGFncyBm b3IgRXhwbGFpblhNTFRhZygpICovCiAjZGVmaW5lIFhfT1BFTklORyAwCkBAIC0yNDU3LDYg KzI0NTgsOCBAQCBzaG93X2JyaW5zb3J0X3N0YXRzKEJyaW5Tb3J0U3RhdGUgKnNvcnRzdGF0 ZSwgTGlzdCAqYW5jZXN0b3JzLCBFeHBsYWluU3RhdGUgKmVzKQogCQkJCQkJIHR1cGxlc29y dF9zcGFjZV90eXBlX25hbWUoc3RhdHMuc3BhY2VUeXBlKSk7CiAJfQogCisJRXhwbGFpblBy b3BlcnR5SW50ZWdlcigiU3RlcCIsIE5VTEwsIChpbnQ2NCkgYnJpbnNvcnRfd2F0ZXJtYXJr X3N0ZXAsIGVzKTsKKwogCWlmIChzdGF0cy0+c29ydF9jb3VudCA+IDApCiAJewogCQlFeHBs YWluUHJvcGVydHlJbnRlZ2VyKCJSYW5nZXMgUHJvY2Vzc2VkIiwgTlVMTCwgKGludDY0KQpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJyaW5Tb3J0LmMgYi9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlQnJpblNvcnQuYwppbmRleCAzMjRiNTU4YWM2Li5lOTZh MjdiM2VhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQnJpblNvcnQu YworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQnJpblNvcnQuYwpAQCAtMjQ4LDYg KzI0OCwxNCBAQCBzdGF0aWMgdm9pZCBFeGVjSW5pdEJyaW5Tb3J0UmFuZ2VzKEJyaW5Tb3J0 ICpub2RlLCBCcmluU29ydFN0YXRlICpwbGFuc3RhdGUpOwogYm9vbCBkZWJ1Z19icmluX3Nv cnQgPSBmYWxzZTsKICNlbmRpZgogCisvKgorICogSG93IG1hbnkgZGlzdGluY3QgbWludmFs IHZhbHVlcyB0byBsb29rIGZvcndhcmQgZm9yIHRoZSBuZXh0IHdhdGVybWFyaz8KKyAqCisg KiBUaGUgc21hbGxlc3Qgc3RlcCB3ZSBjYW4gZG8gaXMgMSwgd2hpY2ggbWVhbnMgdGhlIGlt bWVkaWF0ZWx5IGZvbGxvd2luZworICogKHdoaWxlIGRpc3RpbmN0KSBtaW52YWwuCisgKi8K K2ludCBicmluc29ydF93YXRlcm1hcmtfc3RlcCA9IDE7CisKIC8qIGRvIHZhcmlvdXMgY29u c2lzdGVuY3kgY2hlY2tzICovCiBzdGF0aWMgdm9pZAogQXNzZXJ0Q2hlY2tSYW5nZXMoQnJp blNvcnRTdGF0ZSAqbm9kZSkKQEAgLTM1MSwxMSArMzU5LDI0IEBAIGJyaW5zb3J0X2VuZF90 aWRzY2FuKEJyaW5Tb3J0U3RhdGUgKm5vZGUpCiAgKiBhIHNlcGFyYXRlICJmaXJzdCIgcGFy YW1ldGVyIC0gInNldD1mYWxzZSIgaGFzIHRoZSBzYW1lIG1lYW5pbmcuCiAgKi8KIHN0YXRp YyB2b2lkCi1icmluc29ydF91cGRhdGVfd2F0ZXJtYXJrKEJyaW5Tb3J0U3RhdGUgKm5vZGUs IGJvb2wgYXNjKQorYnJpbnNvcnRfdXBkYXRlX3dhdGVybWFyayhCcmluU29ydFN0YXRlICpu b2RlLCBib29sIGZpcnN0LCBib29sIGFzYywgaW50IHN0ZXBzKQogewogCWludAkJY21wOwor CisJLyogYXNzdW1lIHdlIGhhdmVuJ3QgZm91bmQgYSB3YXRlcm1hcmsgKi8KIAlib29sCWZv dW5kID0gZmFsc2U7CiAKKwlBc3NlcnQoc3RlcHMgPiAwKTsKKworCS8qCisJICogSWYgdGhl IHdhdGVybWFyayBpcyBlbXB0eSwgZWl0aGVyIHRoaXMgaXMgdGhlIGZpcnN0IGNhbGwgKGlu CisJICogd2hpY2ggY2FzZSB3ZSBqdXN0IHVzZSB0aGUgZmlyc3QgKG9yIHJhdGhlciBzZWNv bmQpIHZhbHVlLgorCSAqIE90aGVyd2lzZSBpdCBtZWFucyB3ZSd2ZSByZWFjaGVkIHRoZSBl bmQsIHNvIG5vIHBvaW50IGluIGxvb2tpbmcKKwkgKiBmb3IgbW9yZSB3YXRlcm1hcmtzLgor CSAqLworCWlmIChub2RlLT5ic193YXRlcm1hcmtfZW1wdHkgJiYgIWZpcnN0KQorCQlyZXR1 cm47CisKIAl0dXBsZXNvcnRfbWFya3Bvcyhub2RlLT5ic19zY2FuLT5yYW5nZXMpOwogCiAJ d2hpbGUgKHR1cGxlc29ydF9nZXR0dXBsZXNsb3Qobm9kZS0+YnNfc2Nhbi0+cmFuZ2VzLCB0 cnVlLCBmYWxzZSwgbm9kZS0+YnNfc2Nhbi0+c2xvdCwgTlVMTCkpCkBAIC0zODEsMjIgKzQw Miw0OCBAQCBicmluc29ydF91cGRhdGVfd2F0ZXJtYXJrKEJyaW5Tb3J0U3RhdGUgKm5vZGUs IGJvb2wgYXNjKQogCQllbHNlCiAJCQl2YWx1ZSA9IHNsb3RfZ2V0YXR0cihub2RlLT5ic19z Y2FuLT5zbG90LCA3LCAmaXNudWxsKTsKIAorCQkvKgorCQkgKiBIYXMgdG8gYmUgdGhlIGZp cnN0IGNhbGwgKG90aGVyd2lzZSB3ZSB3b3VsZCBub3QgZ2V0IGhlcmUsIGJlY2F1c2Ugd2UK KwkJICogdGVybWluYXRlIGFmdGVyIGJzX3dhdGVybWFya19zZXQgZ2V0cyBmbGlwcGVkIGJh Y2sgdG8gZmFsc2UpLCBzbyB3ZQorCQkgKiBqdXN0IHNldCB0aGUgdmFsdWUuIEJ1dCB3ZSBk b24ndCBjb3VudCB0aGlzIGFzIGEgc3RlcCwgYmVjYXVzZSB0aGF0CisJCSAqIGp1c3QgcGlj a3MgdGhlIGZpcnN0IG1pbnZhbCB2YWx1ZSwgYXMgd2UgY2VydGFpbmx5IG5lZWQgdG8gZG8g YXQgbGVhc3QKKwkJICogb25lIG1vcmUgc3RlcC4KKwkJICoKKwkJICogWFhYIEFjdHVhbGx5 LCBkbyB3ZSBuZWVkIHRvIG1ha2UgYW5vdGhlciBzdGVwPyBNYXliZSB0aGVyZSBhcmUgZW5v dWdoCisJCSAqIG5vdC1zdW1tYXJpemVkIHJhbmdlcz8gQWx0aG91Z2gsIHdlIGRvbid0IGtu b3cgd2hhdCB2YWx1ZXMgYXJlIGluCisJCSAqIHRob3NlLCByYW5nZXMsIGFuZCB3aXRoIGlu Y3JlYXNpbmcgZGF0YSB3ZSBtaWdodCBlYXNpbHkgZW5kIHVwIGp1c3QKKwkJICogd3JpdGlu ZyBhbGwgb2YgaXQgaW50byB0aGUgc3BpbGwgdHVwbGVzdG9yZS4gU28gbWFraW5nIG9uZSBt b3JlIHN0ZXAKKwkJICogc2VlbXMgbGlrZSBhIGJldHRlciBpZGVhIC0gd2UnbGwgYXQgbGVz dCBiZSBhYmxlIHRvIHByb2R1Y2Ugc29tZXRoaW5nCisJCSAqIHdoaWNoIGlzIGdvb2QgZm9y IExJTUlUIHF1ZXJpZXMuCisJCSAqLwogCQlpZiAoIW5vZGUtPmJzX3dhdGVybWFya19zZXQp CiAJCXsKKwkJCUFzc2VydChmaXJzdCk7CiAJCQlub2RlLT5ic193YXRlcm1hcmtfc2V0ID0g dHJ1ZTsKIAkJCW5vZGUtPmJzX3dhdGVybWFyayA9IHZhbHVlOworCQkJZm91bmQgPSB0cnVl OwogCQkJY29udGludWU7CiAJCX0KIAogCQljbXAgPSBBcHBseVNvcnRDb21wYXJhdG9yKG5v ZGUtPmJzX3dhdGVybWFyaywgZmFsc2UsIHZhbHVlLCBmYWxzZSwKIAkJCQkJCQkJICAmbm9k ZS0+YnNfc29ydHN1cHBvcnQpOwogCi0JCWlmIChjbXAgPCAwKQorCQkvKgorCQkgKiBWYWx1 ZXMgc2hvdWxkIG5vdCBkZWNyZWFzZSAob3Igd2hhdGV2ZXIgdGhlIG9wZXJhdG9yIHNheXMs IG1pZ2h0CisJCSAqIGJlIGEgREVTQyBzb3J0KS4KKwkJICovCisJCUFzc2VydChjbXAgPD0g MCk7CisKKwkJaWYgKGNtcCA8IDApCS8qIG5ldyB3YXRlcm1hcmsgdmFsdWUgKi8KIAkJewog CQkJbm9kZS0+YnNfd2F0ZXJtYXJrX3NldCA9IHRydWU7CiAJCQlub2RlLT5ic193YXRlcm1h cmsgPSB2YWx1ZTsKIAkJCWZvdW5kID0gdHJ1ZTsKLQkJCWJyZWFrOworCisJCQlzdGVwcy0t OworCisJCQlpZiAoc3RlcHMgPT0gMCkKKwkJCQlicmVhazsKIAkJfQogCX0KIApAQCAtOTEz LDcgKzk2MCw3IEBAIEluZGV4TmV4dChCcmluU29ydFN0YXRlICpub2RlKQogCQkJCQlub2Rl LT5ic19waGFzZSA9IEJSSU5TT1JUX0xPQURfUkFOR0U7CiAKIAkJCQkJLyogc2V0IHRoZSBm aXJzdCB3YXRlcm1hcmsgKi8KLQkJCQkJYnJpbnNvcnRfdXBkYXRlX3dhdGVybWFyayhub2Rl LCBhc2MpOworCQkJCQlicmluc29ydF91cGRhdGVfd2F0ZXJtYXJrKG5vZGUsIHRydWUsIGFz YywgYnJpbnNvcnRfd2F0ZXJtYXJrX3N0ZXApOwogCQkJCX0KIAogCQkJCWJyZWFrOwpAQCAt MTAzNCw3ICsxMDgxLDcgQEAgSW5kZXhOZXh0KEJyaW5Tb3J0U3RhdGUgKm5vZGUpCiAJCQkJ ewogCQkJCQkvKiB1cGR0ZSB0aGUgd2F0ZXJtYXJrIGFuZCB0cnkgcmVhZGluZyBtb3JlIHJh bmdlcyAqLwogCQkJCQlub2RlLT5ic19waGFzZSA9IEJSSU5TT1JUX0xPQURfUkFOR0U7Ci0J CQkJCWJyaW5zb3J0X3VwZGF0ZV93YXRlcm1hcmsobm9kZSwgYXNjKTsKKwkJCQkJYnJpbnNv cnRfdXBkYXRlX3dhdGVybWFyayhub2RlLCBmYWxzZSwgYXNjLCBicmluc29ydF93YXRlcm1h cmtfc3RlcCk7CiAJCQkJfQogCiAJCQkJYnJlYWs7CkBAIC0xMDU5LDcgKzExMDYsNyBAQCBJ bmRleE5leHQoQnJpblNvcnRTdGF0ZSAqbm9kZSkKIAkJCQkJCQl7CiAJCQkJCQkJCWJyaW5z b3J0X3Jlc2Nhbihub2RlKTsKIAkJCQkJCQkJbm9kZS0+YnNfcGhhc2UgPSBCUklOU09SVF9M T0FEX1JBTkdFOwotCQkJCQkJCQlicmluc29ydF91cGRhdGVfd2F0ZXJtYXJrKG5vZGUsIGFz Yyk7CisJCQkJCQkJCWJyaW5zb3J0X3VwZGF0ZV93YXRlcm1hcmsobm9kZSwgdHJ1ZSwgYXNj LCBicmluc29ydF93YXRlcm1hcmtfc3RlcCk7CiAJCQkJCQkJfQogCQkJCQkJCWVsc2UKIAkJ CQkJCQkJbm9kZS0+YnNfcGhhc2UgPSBCUklOU09SVF9GSU5JU0hFRDsKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jIGIvc3JjL2JhY2tlbmQvdXRp bHMvbWlzYy9ndWNfdGFibGVzLmMKaW5kZXggZjY3YTcwMzU1MC4uM2I0NThmZTQwOCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMKKysrIGIvc3Jj L2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMKQEAgLTk1LDYgKzk1LDcgQEAgZXh0 ZXJuIGNoYXIgKnRlbXBfdGFibGVzcGFjZXM7CiBleHRlcm4gYm9vbCBpZ25vcmVfY2hlY2tz dW1fZmFpbHVyZTsKIGV4dGVybiBib29sIGlnbm9yZV9pbnZhbGlkX3BhZ2VzOwogZXh0ZXJu IGJvb2wgc3luY2hyb25pemVfc2Vxc2NhbnM7CitleHRlcm4gaW50CWJyaW5zb3J0X3dhdGVy bWFya19zdGVwOwogCiAjaWZkZWYgREVCVUdfQlJJTl9TVEFUUwogZXh0ZXJuIGJvb2wgZGVi dWdfYnJpbl9zdGF0czsKQEAgLTM1MzMsNiArMzUzNCwxNyBAQCBzdHJ1Y3QgY29uZmlnX2lu dCBDb25maWd1cmVOYW1lc0ludFtdID0KIAkJTlVMTCwgTlVMTCwgTlVMTAogCX0sCiAKKwl7 CisJCXsiYnJpbnNvcnRfd2F0ZXJtYXJrX3N0ZXAiLCBQR0NfVVNFUlNFVCwgREVWRUxPUEVS X09QVElPTlMsCisJCQlnZXR0ZXh0X25vb3AoInNldHMgdGhlIHN0ZXAgZm9yIGJyaW5zb3J0 IHdhdGVybWFyayBpbmNyZW1lbnRzIiksCisJCQlOVUxMLAorCQkJR1VDX05PVF9JTl9TQU1Q TEUKKwkJfSwKKwkJJmJyaW5zb3J0X3dhdGVybWFya19zdGVwLAorCQkxLCAxLCBJTlRfTUFY LAorCQlOVUxMLCBOVUxMLCBOVUxMCisJfSwKKwogCS8qIEVuZC1vZi1saXN0IG1hcmtlciAq LwogCXsKIAkJe05VTEwsIDAsIDAsIE5VTEwsIE5VTEx9LCBOVUxMLCAwLCAwLCAwLCBOVUxM LCBOVUxMLCBOVUxMCi0tIAoyLjM5LjAKCg== --------------z0saJSUvc90TqSu15DjSpJR9 Content-Type: text/x-patch; charset=UTF-8; name="0007-wip-adjust-watermark-step-20230206.patch" Content-Disposition: attachment; filename="0007-wip-adjust-watermark-step-20230206.patch" Content-Transfer-Encoding: base64 RnJvbSBiMDgxMzk5MjRjYjA0ZGI2YzIwNjdkNjFhMGQwZTk2MjNlZjQ2NGRlIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzLnZvbmRyYUBwb3N0 Z3Jlc3FsLm9yZz4KRGF0ZTogU2F0LCAyMiBPY3QgMjAyMiAwMDowNjoyOCArMDIwMApTdWJq ZWN0OiBbUEFUQ0ggMDcvMTBdIHdpcDogYWRqdXN0IHdhdGVybWFyayBzdGVwCgpMb29rIGF0 IGF2YWlsYWJsZSBzdGF0aXN0aWNzIC0gbnVtYmVyIG9mIHBvc3NpYmxlIHdhdGVybWFyayB2 YWx1ZXMsCm51bWJlciBvZiByb3dzLCB3b3JrX21lbSwgZXRjLiBhbmQgcGljayBhIGdvb2Qg d2F0ZXJtYXJrX3N0ZXAgdmFsdWUuCgpUbyBjYWxjdWxhdGUgc3RlcCB1c2luZyBzdGF0aXN0 aWNzLCBzZXQgdGhlIEdVQyB0byAwOgoKICAgU0VUIGJyaW5zb3J0X3dhdGVybWFya19zdGVw ID0gMDsKLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMgICAgICAgICAgfCAg NiArKysKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCcmluU29ydC5jICAgICB8IDIxICsr KystLS0tCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMgfCA3MCAr KysrKysrKysrKysrKysrKysrKysrKysrCiBzcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190 YWJsZXMuYyAgICAgfCAgMiArLQogc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggICAg ICAgICAgIHwgIDUgKysKIHNyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oICAgICAgICAg ICB8ICAzICsrCiA2IGZpbGVzIGNoYW5nZWQsIDk0IGluc2VydGlvbnMoKyksIDEzIGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYyBi L3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYwppbmRleCBmMzg3ZWQyZGEyLi43MmEz NjZlODU1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKKysr IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCkBAIC0yNDQwLDYgKzI0NDAsNyBA QCBzdGF0aWMgdm9pZAogc2hvd19icmluc29ydF9zdGF0cyhCcmluU29ydFN0YXRlICpzb3J0 c3RhdGUsIExpc3QgKmFuY2VzdG9ycywgRXhwbGFpblN0YXRlICplcykKIHsKIAlCcmluU29y dFN0YXRzICAqc3RhdHMgPSAmc29ydHN0YXRlLT5ic19zdGF0czsKKwlCcmluU29ydCAgICpw bGFuID0gKEJyaW5Tb3J0ICopIHNvcnRzdGF0ZS0+c3MucHMucGxhbjsKIAogCWlmIChzb3J0 c3RhdGUtPmJzX3NjYW4gIT0gTlVMTCAmJgogCQlzb3J0c3RhdGUtPmJzX3NjYW4tPnJhbmdl cyAhPSBOVUxMKQpAQCAtMjQ2Miw2ICsyNDYzLDkgQEAgc2hvd19icmluc29ydF9zdGF0cyhC cmluU29ydFN0YXRlICpzb3J0c3RhdGUsIExpc3QgKmFuY2VzdG9ycywgRXhwbGFpblN0YXRl ICplcykKIAogCWlmIChzdGF0cy0+c29ydF9jb3VudCA+IDApCiAJeworCQlFeHBsYWluUHJv cGVydHlJbnRlZ2VyKCJBdmVyYWdlIFN0ZXAiLCBOVUxMLCAoaW50NjQpCisJCQkJCQkJICAg c3RhdHMtPndhdGVybWFya191cGRhdGVzX3N0ZXBzIC8gc3RhdHMtPndhdGVybWFya191cGRh dGVzX2NvdW50LCBlcyk7CisKIAkJRXhwbGFpblByb3BlcnR5SW50ZWdlcigiUmFuZ2VzIFBy b2Nlc3NlZCIsIE5VTEwsIChpbnQ2NCkKIAkJCQkJCQkgICBzdGF0cy0+cmFuZ2VfY291bnQs IGVzKTsKIApAQCAtMjUwMyw2ICsyNTA3LDggQEAgc2hvd19icmluc29ydF9zdGF0cyhCcmlu U29ydFN0YXRlICpzb3J0c3RhdGUsIExpc3QgKmFuY2VzdG9ycywgRXhwbGFpblN0YXRlICpl cykKIAkJCUV4cGxhaW5DbG9zZUdyb3VwKCJTb3J0cyIsICJTb3J0cyIsIHRydWUsIGVzKTsK IAkJfQogCX0KKwllbHNlCisJCUV4cGxhaW5Qcm9wZXJ0eUludGVnZXIoIkluaXRpYWwgU3Rl cCIsIE5VTEwsIChpbnQ2NCkgcGxhbi0+d2F0ZXJtYXJrX3N0ZXAsIGVzKTsKIAogCWlmIChz dGF0cy0+c29ydF9jb3VudF9pbl9tZW1vcnkgPiAwKQogCXsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVCcmluU29ydC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZUJyaW5Tb3J0LmMKaW5kZXggZTk2YTI3YjNlYS4uMGVhODAxYTcyOCAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJyaW5Tb3J0LmMKKysrIGIvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZUJyaW5Tb3J0LmMKQEAgLTI0OCwxNCArMjQ4LDYgQEAgc3RhdGlj IHZvaWQgRXhlY0luaXRCcmluU29ydFJhbmdlcyhCcmluU29ydCAqbm9kZSwgQnJpblNvcnRT dGF0ZSAqcGxhbnN0YXRlKTsKIGJvb2wgZGVidWdfYnJpbl9zb3J0ID0gZmFsc2U7CiAjZW5k aWYKIAotLyoKLSAqIEhvdyBtYW55IGRpc3RpbmN0IG1pbnZhbCB2YWx1ZXMgdG8gbG9vayBm b3J3YXJkIGZvciB0aGUgbmV4dCB3YXRlcm1hcms/Ci0gKgotICogVGhlIHNtYWxsZXN0IHN0 ZXAgd2UgY2FuIGRvIGlzIDEsIHdoaWNoIG1lYW5zIHRoZSBpbW1lZGlhdGVseSBmb2xsb3dp bmcKLSAqICh3aGlsZSBkaXN0aW5jdCkgbWludmFsLgotICovCi1pbnQgYnJpbnNvcnRfd2F0 ZXJtYXJrX3N0ZXAgPSAxOwotCiAvKiBkbyB2YXJpb3VzIGNvbnNpc3RlbmN5IGNoZWNrcyAq Lwogc3RhdGljIHZvaWQKIEFzc2VydENoZWNrUmFuZ2VzKEJyaW5Tb3J0U3RhdGUgKm5vZGUp CkBAIC0zNTksOSArMzUxLDExIEBAIGJyaW5zb3J0X2VuZF90aWRzY2FuKEJyaW5Tb3J0U3Rh dGUgKm5vZGUpCiAgKiBhIHNlcGFyYXRlICJmaXJzdCIgcGFyYW1ldGVyIC0gInNldD1mYWxz ZSIgaGFzIHRoZSBzYW1lIG1lYW5pbmcuCiAgKi8KIHN0YXRpYyB2b2lkCi1icmluc29ydF91 cGRhdGVfd2F0ZXJtYXJrKEJyaW5Tb3J0U3RhdGUgKm5vZGUsIGJvb2wgZmlyc3QsIGJvb2wg YXNjLCBpbnQgc3RlcHMpCiticmluc29ydF91cGRhdGVfd2F0ZXJtYXJrKEJyaW5Tb3J0U3Rh dGUgKm5vZGUsIGJvb2wgZmlyc3QsIGJvb2wgYXNjKQogewogCWludAkJY21wOworCUJyaW5T b3J0ICAgKnBsYW4gPSAoQnJpblNvcnQgKikgbm9kZS0+c3MucHMucGxhbjsKKwlpbnQJCQlz dGVwcyA9IHBsYW4tPndhdGVybWFya19zdGVwOwogCiAJLyogYXNzdW1lIHdlIGhhdmVuJ3Qg Zm91bmQgYSB3YXRlcm1hcmsgKi8KIAlib29sCWZvdW5kID0gZmFsc2U7CkBAIC00NDksNiAr NDQzLDkgQEAgYnJpbnNvcnRfdXBkYXRlX3dhdGVybWFyayhCcmluU29ydFN0YXRlICpub2Rl LCBib29sIGZpcnN0LCBib29sIGFzYywgaW50IHN0ZXBzKQogCiAJdHVwbGVzb3J0X3Jlc3Rv cmVwb3Mobm9kZS0+YnNfc2Nhbi0+cmFuZ2VzKTsKIAorCW5vZGUtPmJzX3N0YXRzLndhdGVy bWFya191cGRhdGVzX2NvdW50Kys7CisJbm9kZS0+YnNfc3RhdHMud2F0ZXJtYXJrX3VwZGF0 ZXNfc3RlcHMgKz0gcGxhbi0+d2F0ZXJtYXJrX3N0ZXA7CisKIAlub2RlLT5ic193YXRlcm1h cmtfZW1wdHkgPSAoIWZvdW5kKTsKIH0KIApAQCAtOTYwLDcgKzk1Nyw3IEBAIEluZGV4TmV4 dChCcmluU29ydFN0YXRlICpub2RlKQogCQkJCQlub2RlLT5ic19waGFzZSA9IEJSSU5TT1JU X0xPQURfUkFOR0U7CiAKIAkJCQkJLyogc2V0IHRoZSBmaXJzdCB3YXRlcm1hcmsgKi8KLQkJ CQkJYnJpbnNvcnRfdXBkYXRlX3dhdGVybWFyayhub2RlLCB0cnVlLCBhc2MsIGJyaW5zb3J0 X3dhdGVybWFya19zdGVwKTsKKwkJCQkJYnJpbnNvcnRfdXBkYXRlX3dhdGVybWFyayhub2Rl LCB0cnVlLCBhc2MpOwogCQkJCX0KIAogCQkJCWJyZWFrOwpAQCAtMTA4MSw3ICsxMDc4LDcg QEAgSW5kZXhOZXh0KEJyaW5Tb3J0U3RhdGUgKm5vZGUpCiAJCQkJewogCQkJCQkvKiB1cGR0 ZSB0aGUgd2F0ZXJtYXJrIGFuZCB0cnkgcmVhZGluZyBtb3JlIHJhbmdlcyAqLwogCQkJCQlu b2RlLT5ic19waGFzZSA9IEJSSU5TT1JUX0xPQURfUkFOR0U7Ci0JCQkJCWJyaW5zb3J0X3Vw ZGF0ZV93YXRlcm1hcmsobm9kZSwgZmFsc2UsIGFzYywgYnJpbnNvcnRfd2F0ZXJtYXJrX3N0 ZXApOworCQkJCQlicmluc29ydF91cGRhdGVfd2F0ZXJtYXJrKG5vZGUsIGZhbHNlLCBhc2Mp OwogCQkJCX0KIAogCQkJCWJyZWFrOwpAQCAtMTEwNiw3ICsxMTAzLDcgQEAgSW5kZXhOZXh0 KEJyaW5Tb3J0U3RhdGUgKm5vZGUpCiAJCQkJCQkJewogCQkJCQkJCQlicmluc29ydF9yZXNj YW4obm9kZSk7CiAJCQkJCQkJCW5vZGUtPmJzX3BoYXNlID0gQlJJTlNPUlRfTE9BRF9SQU5H RTsKLQkJCQkJCQkJYnJpbnNvcnRfdXBkYXRlX3dhdGVybWFyayhub2RlLCB0cnVlLCBhc2Ms IGJyaW5zb3J0X3dhdGVybWFya19zdGVwKTsKKwkJCQkJCQkJYnJpbnNvcnRfdXBkYXRlX3dh dGVybWFyayhub2RlLCB0cnVlLCBhc2MpOwogCQkJCQkJCX0KIAkJCQkJCQllbHNlCiAJCQkJ CQkJCW5vZGUtPmJzX3BoYXNlID0gQlJJTlNPUlRfRklOSVNIRUQ7CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMgYi9zcmMvYmFja2VuZC9v cHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMKaW5kZXggNzg4Mzc5MjhkOS4uYmE5NmYxY2Uw NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5j CisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYwpAQCAtMTgs NiArMTgsNyBAQAogCiAjaW5jbHVkZSA8bWF0aC5oPgogCisjaW5jbHVkZSAiYWNjZXNzL2Jy aW4uaCIKICNpbmNsdWRlICJhY2Nlc3Mvc3lzYXR0ci5oIgogI2luY2x1ZGUgImNhdGFsb2cv cGdfY2xhc3MuaCIKICNpbmNsdWRlICJmb3JlaWduL2Zkd2FwaS5oIgpAQCAtMzIxLDYgKzMy MiwxNCBAQCBzdGF0aWMgR2F0aGVyTWVyZ2UgKmNyZWF0ZV9nYXRoZXJfbWVyZ2VfcGxhbihQ bGFubmVySW5mbyAqcm9vdCwKIAkJCQkJCQkJCQkJIEdhdGhlck1lcmdlUGF0aCAqYmVzdF9w YXRoKTsKIAogCisvKgorICogSG93IG1hbnkgZGlzdGluY3QgbWludmFsIHZhbHVlcyB0byBs b29rIGZvcndhcmQgZm9yIHRoZSBuZXh0IHdhdGVybWFyaz8KKyAqCisgKiBUaGUgc21hbGxl c3Qgc3RlcCB3ZSBjYW4gZG8gaXMgMSwgd2hpY2ggbWVhbnMgdGhlIGltbWVkaWF0ZWx5IGZv bGxvd2luZworICogKHdoaWxlIGRpc3RpbmN0KSBtaW52YWwuCisgKi8KK2ludCBicmluc29y dF93YXRlcm1hcmtfc3RlcCA9IDA7CisKIC8qCiAgKiBjcmVhdGVfcGxhbgogICoJICBDcmVh dGVzIHRoZSBhY2Nlc3MgcGxhbiBmb3IgYSBxdWVyeSBieSByZWN1cnNpdmVseSBwcm9jZXNz aW5nIHRoZQpAQCAtMzM0NSw2ICszMzU0LDY3IEBAIGNyZWF0ZV9icmluc29ydF9wbGFuKFBs YW5uZXJJbmZvICpyb290LAogCiAJY29weV9nZW5lcmljX3BhdGhfaW5mbygmYnJpbnNvcnRf cGxhbi0+c2Nhbi5wbGFuLCAmYmVzdF9wYXRoLT5pcGF0aC5wYXRoKTsKIAorCS8qCisJICog ZGV0ZXJtaW5lIHdhdGVybWFyayBzdGVwIChob3cgZmFzdCB0byBhZHZhbmNlKQorCSAqCisJ ICogSWYgdGhlIGJyaW5zb3J0X3dhdGVybWFya19zdGVwIGlzIHNldCB0byBhIG5vbi16ZXJv IHZhbHVlLCB3ZSBqdXN0IHVzZQorCSAqIHRoYXQgdmFsdWUgZGlyZWN0bHkuIE90aGVyd2lz ZSB3ZSBwaWNrIGEgdmFsdWUgdXNpbmcgc29tZSBzaW1wbGUKKwkgKiBoZXVyaXN0aWNzIGhl dXJpc3RpY3MgLSB3ZSBkb24ndCB3YW50IHRoZSByb3dzIHRvIGV4Y2VlZCB3b3JrX21lbSwg YW5kCisJICogd2UgbGVhdmUgYSBiaXQgc2xhY2sgKGJlY2F1c2Ugd2UncmUgYWRkaW5nIGJh dGNoZXMgb2Ygcm93cywgbm90IHJvdworCSAqIGJ5IHJvdykuCisJICoKKwkgKiBUaGlzIGhh cyBhIHdlYWtuZXNzLCBiZWNhdXNlIGl0IGFzc3VtZXMgd2UgaW5jcmVtZW50YWxseSBhZGQg dGhlIHNhbWUKKwkgKiBudW1iZXIgb2Ygcm93cyBpbnRvIHRoZSAic29ydCIgc2V0IC0gYnV0 IGltYWdpbmUgdmVyeSB3aWRlIG92ZXJsYXBwaW5nCisJICogcmFuZ2VzIChlLmcuIHJhbmRv bSBkYXRhIG9uIHRoZSBzYW1lIGRvbWFpbikuIE1vc3Qgb2YgdGhlbSB3aWxsIGhhdmUKKwkg KiBhYm91dCB0aGUgc2FtZSBtaW52YWwsIHNvIHRoZSBzb3J0IGdyb3dzIG9ubHkgdmVyeSBz bG93bHkuIFVudGlsIHRoZQorCSAqIHZlcnkgbGFzdCByYW5nZSwgdGhhdCByZW1vdmVzIHRo ZSB3YXRlcm1hcmsgYW5kIG9ubHkgdGhlbiBkbyBtb3N0IG9mCisJICogdGhlIHJvd3MgZ2V0 IHRvIHRoZSB0dXBsZXNvcnQuCisJICoKKwkgKiBYWFggQnV0IG1heWJlIHdlIGNhbiBsb29r IGF0IHRoZSBvdGhlciBzdGF0aXN0aWNzIHdlIGhhdmUsIGxpa2UgbnVtYmVyCisJICogb2Yg b3ZlcmxhcHMgYW5kIGF2ZXJhZ2UgcmFuZ2Ugc2VsZWN0aXZpdHkgKCUgb2YgdHVwbGVzIG1h dGNoaW5nKSwgYW5kCisJICogZGVkdWNlIHNvbWV0aGluZyBmcm9tIHRoYXQ/CisJICoKKwkg KiBYWFggQ291bGQgd2UgbWF5YmUgYWRqdXN0IHRoZSB3YXRlcm1hcmsgc3RlcCBhZGFwdGl2 ZWx5IGF0IHJ1bnRpbWU/CisJICogVGhhdCBpcywgd2hlbiB3ZSBnZXQgdG8gdGhlICJzb3J0 IiBzdGVwLCBtYXliZSBjaGVjayBob3cgbWFueSByb3dzCisJICogYXJlIHRoZXJlLCBhbmQg aWYgdGhlcmUgYXJlIG9ubHkgZmV3IHRoZW4gdHJ5IGluY3JlYXNpbmcgdGhlIHN0ZXA/CisJ ICovCisJYnJpbnNvcnRfcGxhbi0+d2F0ZXJtYXJrX3N0ZXAgPSBicmluc29ydF93YXRlcm1h cmtfc3RlcDsKKworCWlmIChicmluc29ydF9wbGFuLT53YXRlcm1hcmtfc3RlcCA9PSAwKQor CXsKKwkJQnJpbk1pbm1heFN0YXRzICphbXN0YXRzOworCisJCS8qKi8KKwkJQ2FyZGluYWxp dHkJCXJvd3MgPSBicmluc29ydF9wbGFuLT5zY2FuLnBsYW4ucGxhbl9yb3dzOworCisJCS8q IGVzdGltYXRlIHJvd3NpemUgaW4gdGhlIHR1cGxlc29ydCAqLworCQlpbnQJCQkJd2lkdGgg PSBicmluc29ydF9wbGFuLT5zY2FuLnBsYW4ucGxhbl93aWR0aDsKKwkJaW50CQkJCXR1cHdp ZHRoID0gKE1BWEFMSUdOKHdpZHRoKSArIE1BWEFMSUdOKFNpemVvZkhlYXBUdXBsZUhlYWRl cikpOworCisJCS8qIERvbid0IG92ZXJmbG93IHdvcmtfbWVtICh1c2Ugb25seSBoYWxmIHRv IGFic29yYiB2YXJpYXRpb25zLiAqLworCQlpbnQJCQkJbWF4cm93cyA9ICh3b3JrX21lbSAq IDEwMjRMIC8gdHVwd2lkdGggLyAyKTsKKworCQkvKiBJZiB0aGlzIGlzIGEgTElNSVQgcXVl cnksIGFpbSBvbmx5IGZvciB0aGUgcmVxdWlyZWQgbnVtYmVyIG9mIHJvd3MuICovCisJCWlm IChyb290LT5saW1pdF90dXBsZXMgPiAwKQorCQkJbWF4cm93cyA9IE1pbihtYXhyb3dzLCBy b290LT5saW1pdF90dXBsZXMpOworCisJCS8qIEZJWE1FIGhhcmQtY29kZWQgYXR0bnVtICov CisJCWFtc3RhdHMgPSAoQnJpbk1pbm1heFN0YXRzICopIGdldF9hdHRpbmRleGFtKGJyaW5z b3J0X3BsYW4tPmluZGV4aWQsIDEpOworCisJCWlmIChhbXN0YXRzKQorCQl7CisJCQlkb3Vi bGUJcGN0X3Blcl9zdGVwID0gTWF4KGFtc3RhdHMtPm1pbnZhbF9pbmNyZW1lbnRfYXZnLAor CQkJCQkJCQkJICAgYW1zdGF0cy0+bWF4dmFsX2luY3JlbWVudF9hdmcpOworCQkJZG91Ymxl CXJvd3NfcGVyX3N0ZXAgPSBNYXgoMS4wLCBwY3RfcGVyX3N0ZXAgKiByb3dzKTsKKworCQkJ YnJpbnNvcnRfcGxhbi0+d2F0ZXJtYXJrX3N0ZXAgPSAoaW50KSAobWF4cm93cyAvIHJvd3Nf cGVyX3N0ZXApOworCQl9CisKKwkJLyogc29tZSByb3VnaCBzYWZldHkgZXN0aW1hdGVzICov CisJCWJyaW5zb3J0X3BsYW4tPndhdGVybWFya19zdGVwID0gTWF4KGJyaW5zb3J0X3BsYW4t PndhdGVybWFya19zdGVwLCAxKTsKKwkJYnJpbnNvcnRfcGxhbi0+d2F0ZXJtYXJrX3N0ZXAg PSBNaW4oYnJpbnNvcnRfcGxhbi0+d2F0ZXJtYXJrX3N0ZXAsIDgxOTIpOworCX0KKwogCXJl dHVybiBicmluc29ydF9wbGFuOwogfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGls cy9taXNjL2d1Y190YWJsZXMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxl cy5jCmluZGV4IDNiNDU4ZmU0MDguLjljMGRhM2Q3MGYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21p c2MvZ3VjX3RhYmxlcy5jCkBAIC0zNTQxLDcgKzM1NDEsNyBAQCBzdHJ1Y3QgY29uZmlnX2lu dCBDb25maWd1cmVOYW1lc0ludFtdID0KIAkJCUdVQ19OT1RfSU5fU0FNUExFCiAJCX0sCiAJ CSZicmluc29ydF93YXRlcm1hcmtfc3RlcCwKLQkJMSwgMSwgSU5UX01BWCwKKwkJMCwgMCwg SU5UX01BWCwKIAkJTlVMTCwgTlVMTCwgTlVMTAogCX0sCiAKZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVz LmgKaW5kZXggMmE5ODI4NmUxMS4uMDZkYzY0MTZkOSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvbm9kZXMvZXhlY25vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVz LmgKQEAgLTE2NjQsNiArMTY2NCwxMCBAQCB0eXBlZGVmIHN0cnVjdCBCcmluU29ydFN0YXRz CiAJLyogdGltZSB0byBidWlsZCByYW5nZXMgKG1pbGxpc2Vjb25kcykgKi8KIAlpbnQ2NAly YW5nZXNfYnVpbGRfbXM7CiAKKwkvKiBudW1iZXIvc3VtIG9mIHdhdGVybWFyayB1cGRhdGUg c3RlcHMgKi8KKwlpbnQ2NAl3YXRlcm1hcmtfdXBkYXRlc19zdGVwczsKKwlpbnQ2NAl3YXRl cm1hcmtfdXBkYXRlc19jb3VudDsKKwogfSBCcmluU29ydFN0YXRzOwogCiB0eXBlZGVmIHN0 cnVjdCBCcmluU29ydFN0YXRlCkBAIC0xNjk2LDYgKzE3MDAsNyBAQCB0eXBlZGVmIHN0cnVj dCBCcmluU29ydFN0YXRlCiAJQnJpblJhbmdlU2NhbkRlc2MgKmJzX3NjYW47CiAJQnJpblJh bmdlCSAgICpic19yYW5nZTsKIAlFeHByU3RhdGUJICAgKmJzX3F1YWw7CisJaW50CQkJCWJz X3dhdGVybWFya19zdGVwOwogCURhdHVtCQkJYnNfd2F0ZXJtYXJrOwogCWJvb2wJCQlic193 YXRlcm1hcmtfc2V0OwogCWJvb2wJCQlic193YXRlcm1hcmtfZW1wdHk7CmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3Bs YW5ub2Rlcy5oCmluZGV4IDVmNmY2ZjZlZDcuLjBjNTZkY2UzYzggMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3Bs YW5ub2Rlcy5oCkBAIC01MjUsNiArNTI1LDkgQEAgdHlwZWRlZiBzdHJ1Y3QgQnJpblNvcnQK IAkvKiBOVUxMUyBGSVJTVC9MQVNUIGRpcmVjdGlvbnMgKi8KIAlib29sCSAgICpudWxsc0Zp cnN0IHBnX25vZGVfYXR0cihhcnJheV9zaXplKG51bUNvbHMpKTsKIAorCS8qIG51bWJlciBv ZiB3YXRlcm1hcmsgc3RlcHMgdG8gbWFrZSAqLworCWludAkJCXdhdGVybWFya19zdGVwOwor CiB9IEJyaW5Tb3J0OwogCiAvKiAtLS0tLS0tLS0tLS0tLS0tCi0tIAoyLjM5LjAKCg== --------------z0saJSUvc90TqSu15DjSpJR9 Content-Type: text/x-patch; charset=UTF-8; name="0008-wip-adaptive-watermark-step-20230206.patch" Content-Disposition: attachment; filename="0008-wip-adaptive-watermark-step-20230206.patch" Content-Transfer-Encoding: base64 RnJvbSA3OTJjNGM2MDczMDQyZDBhN2ExODdlNzZhY2ZmMjhhNDk2NzYzNmFiIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzLnZvbmRyYUBwb3N0 Z3Jlc3FsLm9yZz4KRGF0ZTogU2F0LCAyMiBPY3QgMjAyMiAwMTozOTozOSArMDIwMApTdWJq ZWN0OiBbUEFUQ0ggMDgvMTBdIHdpcDogYWRhcHRpdmUgd2F0ZXJtYXJrIHN0ZXAKCkFub3Ro ZXIgb3B0aW9uIGl0IHRvIGFkanVzdCB0aGUgd2F0ZXJtYXJrIHN0ZXAgYmFzZWQgb24gcGFz dCB0dXBsZXNvcnQKZXhlY3V0aW9ucywgYW5kIGVpdGhlciBpbmNyZWFzZSBvciBkZWNyZWFz ZSB0aGUgc3RlcCwgYmFzZWQgb24gd2hldGhlcgp0aGUgc29ydCB3YXMgaW4tbWVtb3J5IG9y IG9uLWRpc2ssIGV0Yy4KClRvIGRvIHRoaXMsIHNldCB0aGUgR1VDIHRvIC0xOgoKICBTRVQg YnJpbnNvcnRfd2F0ZXJtYXJrX3N0ZXAgPSAtMTsKLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3Mv YnJpbi9icmluX21pbm1heC5jICAgfCAgIDcgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVCcmluU29ydC5jICAgICB8IDE4OSArKysrKysrKysrKysrKysrKysrKysrKy0KIHNyYy9i YWNrZW5kL29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYyB8ICAyMSArLS0KIHNyYy9iYWNr ZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jICAgICB8ICAgMiArLQogc3JjL2luY2x1ZGUv bm9kZXMvZXhlY25vZGVzLmggICAgICAgICAgIHwgICAyICstCiBzcmMvaW5jbHVkZS9ub2Rl cy9wbGFubm9kZXMuaCAgICAgICAgICAgfCAgIDMgKy0KIDYgZmlsZXMgY2hhbmdlZCwgMjA2 IGluc2VydGlvbnMoKyksIDE4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9icmluL2JyaW5fbWlubWF4LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvYnJp bi9icmluX21pbm1heC5jCmluZGV4IDk4NzM3OWM5MTEuLmQ4ZGQ2ZGRjOWUgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW5fbWlubWF4LmMKKysrIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL2JyaW4vYnJpbl9taW5tYXguYwpAQCAtNDYsOSArNDYsNiBAQCBzdGF0 aWMgRm1nckluZm8gKm1pbm1heF9nZXRfc3RyYXRlZ3lfcHJvY2luZm8oQnJpbkRlc2MgKmJk ZXNjLCB1aW50MTYgYXR0bm8sCiAJCQkJCQkJCQkJCSAgT2lkIHN1YnR5cGUsIHVpbnQxNiBz dHJhdGVneW51bSk7CiAKIAotLyogcHJpbnQgaW5mbyBhYm91dCByYW5nZXMgKi8KLSNkZWZp bmUgQlJJTlNPUlRfREVCVUcKLQogRGF0dW0KIGJyaW5fbWlubWF4X29wY2luZm8oUEdfRlVO Q1RJT05fQVJHUykKIHsKQEAgLTE5MTYsNyArMTkxMyw3IEBAIGJyaW5fbWlubWF4X3NjYW5f YWRkX3R1cGxlKEJyaW5SYW5nZVNjYW5EZXNjICpzY2FuLCBUdXBsZVRhYmxlU2xvdCAqc2xv dCwKIAlzY2FuLT5ucmFuZ2VzKys7CiB9CiAKLSNpZmRlZiBCUklOU09SVF9ERUJVRworI2lm ZGVmIEJSSU5fU09SVF9ERUJVRwogLyoKICAqIGJyaW5fbWlubWF4X3NjYW5fbmV4dAogICoJ CVJldHVybiB0aGUgbmV4dCBCUklOIHJhbmdlIGluZm9ybWF0aW9uIGZyb20gdGhlIHR1cGxl c3RvcmUuCkBAIC0yMTI1LDcgKzIxMjIsNyBAQCBicmluX21pbm1heF9yYW5nZXMoUEdfRlVO Q1RJT05fQVJHUykKIAkvKiBkbyB0aGUgc29ydCBhbmQgYW55IG5lY2Vzc2FyeSBwb3N0LXBy b2Nlc3NpbmcgKi8KIAlicmluX21pbm1heF9zY2FuX2ZpbmFsaXplKGJyc2Nhbik7CiAKLSNp ZmRlZiBCUklOU09SVF9ERUJVRworI2lmZGVmIEJSSU5fU09SVF9ERUJVRwogCWJyaW5fbWlu bWF4X3NjYW5fZHVtcChicnNjYW4pOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVCcmluU29ydC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZUJyaW5Tb3J0LmMKaW5kZXggMGVhODAxYTcyOC4uOGYxMDg0ZWY2ZSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJyaW5Tb3J0LmMKKysrIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZUJyaW5Tb3J0LmMKQEAgLTIxOCw2ICsyMTgsOCBAQAogICoJCUV4ZWNC cmluU29ydFJlSW5pdGlhbGl6ZURTTSByZWluaXRpYWxpemUgRFNNIGZvciBmcmVzaCBzY2Fu CiAgKgkJRXhlY0JyaW5Tb3J0SW5pdGlhbGl6ZVdvcmtlciBhdHRhY2ggdG8gRFNNIGluZm8g aW4gcGFyYWxsZWwgd29ya2VyCiAgKi8KKyNpbmNsdWRlIDxtYXRoLmg+CisKICNpbmNsdWRl ICJwb3N0Z3Jlcy5oIgogCiAjaW5jbHVkZSAiYWNjZXNzL2JyaW4uaCIKQEAgLTI0OCw2ICsy NTAsMTQgQEAgc3RhdGljIHZvaWQgRXhlY0luaXRCcmluU29ydFJhbmdlcyhCcmluU29ydCAq bm9kZSwgQnJpblNvcnRTdGF0ZSAqcGxhbnN0YXRlKTsKIGJvb2wgZGVidWdfYnJpbl9zb3J0 ID0gZmFsc2U7CiAjZW5kaWYKIAorLyoKKyAqIEhvdyBtYW55IGRpc3RpbmN0IG1pbnZhbCB2 YWx1ZXMgdG8gbG9vayBmb3J3YXJkIGZvciB0aGUgbmV4dCB3YXRlcm1hcms/CisgKgorICog VGhlIHNtYWxsZXN0IHN0ZXAgd2UgY2FuIGRvIGlzIDEsIHdoaWNoIG1lYW5zIHRoZSBpbW1l ZGlhdGVseSBmb2xsb3dpbmcKKyAqICh3aGlsZSBkaXN0aW5jdCkgbWludmFsLgorICovCitp bnQJYnJpbnNvcnRfd2F0ZXJtYXJrX3N0ZXAgPSAwOworCiAvKiBkbyB2YXJpb3VzIGNvbnNp c3RlbmN5IGNoZWNrcyAqLwogc3RhdGljIHZvaWQKIEFzc2VydENoZWNrUmFuZ2VzKEJyaW5T b3J0U3RhdGUgKm5vZGUpCkBAIC04NTksNiArODY5LDE3NSBAQCBicmluc29ydF9yZXNjYW4o QnJpblNvcnRTdGF0ZSAqbm9kZSkKIAl0dXBsZXNvcnRfcmVzY2FuKG5vZGUtPmJzX3NjYW4t PnJhbmdlcyk7CiB9CiAKKy8qCisgKiBMb29rIGF0IHRoZSB0dXBsZXNvcnQgc3RhdGlzdGlj cywgYW5kIG1heWJlIGluY3JlYXNlIG9yIGRlY3JlYXNlIHRoZQorICogd2F0ZXJtYXJrIHN0 ZXAuIElmIHRoZSBsYXN0IHNvcnQgd2FzIGluLW1lbW9yeSwgd2UgZGVjcmVhc2UgdGhlIHN0 ZXAuCisgKiBJZiB0aGUgc29ydCB3YXMgaW4tbWVtb3J5LCBidXQgd2UgdXNlZCBsZXNzIHRo YW4gd29ya19tZW0vMywgaW5jcmVtZW50CisgKiB0aGUgc3RlcCB2YWx1ZS4KKyAqCisgKiBY WFggVGhpcyBzaG91bGQgcHJvYmFibHkgYmVoYXZlIGRpZmZlcmVudGx5IGZvciBMSU1JVCBx dWVyaWVzLCBzbyB0aGF0CisgKiB3ZSBkb24ndCBsb2FkIHRvbyBtYW55IHJvd3MgdW5uZWNl c3NhcmlseS4gV2UgYWxyZWFkeSBjb25zaWRlciB0aGF0IGluCisgKiBjcmVhdGVfYnJpbnNv cnRfcGxhbiwgYnV0IG1heWJlIHdlIHNob3VsZCBsaW1pdCBpbmNyZW1lbnRzIHRvIHRoZSBz dGUKKyAqIHZhbHVlIGhlcmUgdG9vIC0gc2F5LCBieSB0cmFja2luZyBob3cgbWFueSByb3dz IGFyZSB3ZSBzdXBwb3NlZCB0bworICogcHJvZHVjZSwgYW5kIGxpbWl0aW5nIHRoZSB3YXRl cm1hcmsgc28gdGhhdCB3ZSBkb24ndCBwcm9jZXNzIHRvbyBtYW55CisgKiByb3dzIGluIGZ1 dHVyZSBzdGVwcy4KKyAqCisgKiBYWFggV2UgbWlnaHQgYWxzbyB0cmFjayB0aGUgbnVtYmVy IG9mIHJvd3MgaW4gdGhlIHNvcnQgYW5kIHNwYWNlIHVzZWQsCisgKiB0byBjYWxjdWxhdGUg bW9yZSBhY2N1cmF0ZSBlc3RpbWF0ZSBvZiByb3cgd2lkdGguIEFuZCB0aGVuIHVzZSB0aGF0 IHRvCisgKiBjYWxjdWxhdGUgbnVtYmVyIG9mIHJvd3MgdGhhdCBmaXQgaW50byB3b3JrX21l bS4gQnV0IHRoZSBudW1iZXIgb2Ygcm93cworICogdGhhdCBnbyBpbnRvIHR1cGxlc29ydCAo cGVyIHJhbmdlKSBhZGRlZCB3b3VsZCBzdGlsbCByZW1haW4gZmFpcmx5CisgKiBpbmFjY3Vy YXRlLCBzbyBub3Qgc3VyZSBob3cgZ29vZCB0aGlzIHdvdWQgYmUuCisgKi8KK3N0YXRpYyB2 b2lkCiticmluc29ydF9hZGp1c3Rfd2F0ZXJtYXJrX3N0ZXAoQnJpblNvcnRTdGF0ZSAqbm9k ZSwgVHVwbGVzb3J0SW5zdHJ1bWVudGF0aW9uICpzdGF0cykKK3sKKwlCcmluU29ydCAgICpw bGFuID0gKEJyaW5Tb3J0ICopIG5vZGUtPnNzLnBzLnBsYW47CisKKwlpZiAoYnJpbnNvcnRf d2F0ZXJtYXJrX3N0ZXAgIT0gLTEpCisJCXJldHVybjsKKworCWlmIChzdGF0cy0+c3BhY2VU eXBlID09IFNPUlRfU1BBQ0VfVFlQRV9ESVNLKQorCXsKKwkJLyoKKwkJICogV2UgZG9uJ3Qg a25vdyBob3cgbXVjaCB0byBkZWNyZWFzZSB0aGUgc3RlcCAoaGFyZCB0byBlc3RpbWF0ZQor CQkgKiBkdWUgdG8gc3BhY2UgbmVlZGVkIGZvciBpbi1tZW1vcnkgYW5kIG9uLWRpc2sgc29y dHMgaXMgbm90CisJCSAqIGVhc2lseSBjb21wYXJhYmxlLCBzbyB3ZSBqdXN0IGN1dCB0aGUg c3RlcCBpbiBoYWxmLiBGb3IgdGhlCisJCSAqIGluLW1lbW9yeSBzb3J0LCB3ZSB0aGVuIGNh biBkbyBiZXR0ZXIgZXN0aW1hdGUgYW5kIGluY3JlYXNlCisJCSAqIHRoZSBzdGVwIG1vcmUg YWNjdXJhdGVseS4KKwkJICovCisJCXBsYW4tPndhdGVybWFya19zdGVwID0gTWF4KDEsIHBs YW4tPndhdGVybWFya19zdGVwIC8gMik7CisJfQorCWVsc2UKKwl7CisJCS8qCisJCSAqIEFk anVzdCB0aGUgc3RlcCBiYXNlZCBvbiB0aGUgbGFzdCBzb3J0IC0gd2Ugc2hvb3QgZm9yIDIv MyBvZgorCQkgKiB3b3JrX21lbSwgdG8ga2VlcCBzb21lIHNsYWNrIChhbmQgbm90IHN3aXRj aCB0byBvbi1kaXNrIHNvcnQKKwkJICogZHVlIHRvIG1pbm9yIGRpZmZlcmVuY2VzKS4gV2Ug Y2FsY3VsYXRlIHRoZSBhdmVyYWdlIHJvdyB3aWR0aAorCQkgKiB1c2luZyBzcGFjZSB1c2Vk IGFuZCBudW1iZXIgb2Ygcm93cyBpbiB0aGUgdHVwbGVzb3J0LCBudW1iZXIKKwkJICogb2Yg cm93cyB3ZSBjb3VsZCBmaXQgaW50byB3b3JrX21lbSwgYW5kIGhvdyBtYW55IHN0ZXBzIHdv dWxkCisJCSAqIHRoYXQgbWVhbiAoYXNzdW1pbmcgbnVtYmVyIG9mIHJvd3MgaXMgcHJvcG9y dGlvbmFsIHRvIHRoZQorCQkgKiBudW1iZXIgb2Ygc3RlcHMpLgorCQkgKgorCQkgKiBXZSBu ZWVkIHRvIGJlIGNhcmVmdWwgYWJvdXQgdGhlIG51bWJlciBvZiByb3dzIHdlJ3JlIHN1cHBv c2VkCisJCSAqIHRvIHByb2R1Y2UgKGFuZCBob3cgbWFueSB3ZSBhbHJlYWR5IHByb2R1Y2Vk KS4gQ29uc2lkZXIgZm9yCisJCSAqIGV4YW1wbGUgYSBxdWVyeSB3aXRoIExJTUlUIDEwMDAs IGFuZCB0aGF0IHdlIHByb2R1Y2UgOTk5IHJvd3MKKwkJICogaW4gdGhlIGZpcnN0IHNvcnQs IHNvIHRoYXQgd2UgbmVlZCBvbmx5IDEgbW9yZSByb3cuIEl0IHdvdWxkCisJCSAqIGJlIHNp bGx5IHRvIHBpY2sgdGhlIHN0ZXBzIHdpdGggdGhlIGdvYWwgdG8gImZpbGwgd29ya19tZW0i CisJCSAqIGluc3RlYWQgb2YganVzdCBlbm91Z2ggdG8gcHJvZHVjZSB0aGUgb25lIHJvdy4K KwkJICoKKwkJICogWFhYIEluIHByaW5jaXBsZSwgd2UgZG9uJ3Qga25vdyBob3cgbWFueSBy b3dzIHdpbGwgbmVlZCB0byBiZQorCQkgKiByZWFkIGZyb20gdGhlIHRhYmxlIC0gdGhlcmUg bWF5IGJlIGludGVyZXN0aW5nIHJvd3MgYWxyZWFkeSBpbgorCQkgKiB0aGUgdHVwbGVzdG9y ZSAoaW4gd2hpY2ggY2FzZSB3ZSBjb3VsZCBkbyBhIHNtYWxsZXIgc3RlcCkuIEJ1dAorCQkg KiB3ZSBkb24ndCBrbm93IGhvdyBtYW55IHN1Y2ggcm93cyBhcmUgdGhlcmUgLSBtYXliZSBp ZiB3ZSBoYWQKKwkJICogbXVsdGlwbGUgc21hbGxlciB0dXBsZXN0b3Jlcywgd2hpY2ggd291 bGQgYWxzbyByZWR1Y2UgdGhlCisJCSAqIGFtb3VudCBvZiAicmVzcGlsbCIgd2UgbmVlZCB0 byBkby4KKwkJICovCisJCWludAkJbnJvd3NfcmVtYWluaW5nOworCQlpbnQJCXN0ZXAgPSBw bGFuLT53YXRlcm1hcmtfc3RlcDsKKwkJaW50CQlzdGVwX21heCA9IHBsYW4tPndhdGVybWFy a19zdGVwICogMjsKKworCQkvKiBudW1iZXIgb2YgcmVtYWluaW5nIHJvd3Mgd2UncmUgZXhw ZWN0ZWQgdG8gcHJvZHVjZSAqLworCQlucm93c19yZW1haW5pbmcgPSBNYXgoMS4wLCBwbGFu LT5zdGVwX21heHJvd3MgLSBub2RlLT5ic19zdGF0cy5udHVwbGVzX3R1cGxlc29ydF9hbGwp OworCisJCS8qCisJCSAqIElmIHdlIHNvcnRlZCBhbnkgcm93cywgY2FsY3VsYXRlIGhvdyBt YW55IHNpbWlsYXIgcm93cyB3ZSBjYW4gZml0CisJCSAqIGludG8gd29ya19tZW0uIFdlIHJl c3RyaWN0IG91cnNlbHZlcyB0byAyLzMgb2Ygd29ya19tZW0sIHRvIGxlYXZlCisJCSAqIGEg Yml0IG9mIHNsYWNrIHNwYWNlLgorCQkgKgorCQkgKiBYWFggSG9wZWZ1bGx5IHRoZSBhdmVy YWdlIHdpZHRoIGlzIHNvbWV3aGF0IGFjY3VyYXRlLCBidXQgbWF5YmUKKwkJICogd2Ugc2hv dWxkIHJlbWVtYmVyIHRoZSB3aWR0aCB3ZSBvcmlnaW5hbGx5IGV4cGVjdGVkLCBhbmQgY29t YmluZQorCQkgKiB0aGF0IHNvbWVob3cuIE1heWJlIHdlIHNob3VsZCBub3QgdXNlIGp1c3Qg dGhlIGxhc3QgdHVwbGVzb3J0LAorCQkgKiBidXQgaW5zdGVhZCBhY2N1bXVsYXRlIGF2ZXJh Z2UgZnJvbSBhbGwgcHJlY2VkaW5nIHNvcnRzIGFuZAorCQkgKiBjb21iaW5lIHRoZW0gc29t ZWhvdyAoc2F5LCB1c2luZyB3ZWlnaHRlZCBhdmVyYWdlIHdpdGggb2xkZXIKKwkJICogdmFs dWVzIGhhdmluZyBsZXNzIGluZmx1ZW5jZSkuCisJCSAqLworCQlpZiAobm9kZS0+YnNfc3Rh dHMubnR1cGxlc190dXBsZXNvcnQgPiAwKQorCQl7CisJCQlpbnQJCW5yb3dzX3dtZW07CisJ CQlpbnQJCWF2Z3dpZHRoOworCisJCQkvKiBhdmVyYWdlIHR1cGxlIHdpZHRoLCBjYWxjdWxh dGVkIGZyb20gbGFzdCBzb3J0ICovCisJCQlhdmd3aWR0aCA9IChzdGF0cy0+c3BhY2VVc2Vk ICogMTAyNEwgLyBub2RlLT5ic19zdGF0cy5udHVwbGVzX3R1cGxlc29ydCk7CisKKwkJCS8q CisJCQkgKiBDYWxjdWxhdGUgdGhlIG51bWVyIG9mIHJvd3MgdG8gZml0IGludG8gMi8zIG9m IHdvcmtfbWVtLCBidXQKKwkJCSAqIGNhcCB0byB0aGUgbnVtYmVyIG9mIHJvd3Mgd2UncmUg ZXhwZWN0ZWQgdG8gcHJvZHVjZS4KKwkJCSAqLworCQkJbnJvd3Nfd21lbSA9IE1pbihucm93 c19yZW1haW5pbmcsICgyICogMTAyNEwgKiB3b3JrX21lbSAvIDMpIC8gYXZnd2lkdGgpOwor CisJCQkvKiBzY2FsZSB0aGUgbnVtYmVyIG9mIHN0ZXBzIHRvIHByb2R1Y2UgdGhlIG51bWJl ciBvZiByb3dzICovCisJCQlzdGVwID0gc3RlcCAqICgoZG91YmxlKSAobnJvd3Nfd21lbSAq IGF2Z3dpZHRoKSAvIChzdGF0cy0+c3BhY2VVc2VkICogMTAyNEwpKTsKKworCQkJLyogcmVt ZW1iZXIgdGhpcyBhcyB0aGUgbWF4LCBzbyB0aGF0IHdlIGRvbid0IG92ZXJmbG93IHdvcmtf bWVtICovCisJCQlzdGVwX21heCA9IE1pbihzdGVwLCBzdGVwX21heCk7CisKKwkJCS8qIGhv d2V2ZXIsIG1ha2Ugc3VyZSB3ZSBkb24ndCBncm93IHRvbyBmYXN0IC0gY2FwIHRvIDJ4ICov CisJCQlzdGVwID0gTWluKHN0ZXAsIHN0ZXBfbWF4KTsKKwkJfQorCisJCS8qCisJCSAqIE5v dyBjYWxjdWxhdGUgYXZlcmFnZSBzdGVwIHNpemUgdXNpbmcgZGF0YSBmcm9tIGFsbCBzb3J0 cyB3ZSBkaWQKKwkJICogdXAgdG8gbm93LiBUaGVuIHdlIGNhbGN1bGF0ZSB0aGUgbnVtYmVy IG9mIHN0ZXBzIHdlIGV4cGVjdCB0byBiZQorCQkgKiBuZWNlc3NhcnkuCisJCSAqCisJCSAq IElmIHdlIGhhZCBjYWxjdWxhdGVkIGF2ZXJhZ2UgbnVtYmVyIG9mIHJvd3MgcGVyIHN0ZXAg ZnJvbSBBTSBzdGF0cywKKwkJICogY29uc2lkZXIgdGhhdCB0b28uIEl0J3MgcG9zc2libGUg dGhlIGJhdGNoIGhhZCBqdXN0IG9uZSByb3csIHdoaWNoCisJCSAqIG1pZ2h0IHJlc3VsdCBp biB2ZXJ5IGhpZ2ggZXN0aW1hdGUgb2Ygc3RlcHMgLSBpdCdkIGJlIHNpbGx5IHRvCisJCSAq IGp1bXAgZS5nLiBmcm9tIDEgdG8gMTAwMCBiYXNlZCBvbiB0aGlzIHVucmVsaWFibGUgc3Rh dGlzdGljcy4gVG8KKwkJICogcHJldmVudCB0aGF0LCB3ZSBjb21iaW5lIHRoZSB0d28gcm93 c19wZXJfc3RlcCBzb3VyY2VzIGFzIHdlaWdodGVkCisJCSAqIHN1bSwgdXNpbmcgdGhlIG9i c2VydmVkIHZzLiB0YXJnZXQgbnVtYmVyIG9mIHJvd3MgYXMgd2VpZ2h0LiBUaGUKKwkJICog Y2xvc2VyIHdlJ3JlIHRvIHRoZSB0YXJnZXQsIHRoZSBtb3JlIHJlbGlhYmxlIHZhbHVlIGZy b20gcGFzdAorCQkgKiBleGVjdXRpb25zIGlzLgorCQkgKgorCQkgKiBCdXQgd2UgZG9uJ3Qg d2FudCB0byBvdmVyZmxvdyB3b3JrX21lbSwgc28gY2FwIGJ5IHN0ZXBfbWF4LgorCQkgKi8K KwkJaWYgKG5vZGUtPmJzX3N0YXRzLm50dXBsZXNfdHVwbGVzb3J0X2FsbCA+IDApCisJCXsK KwkJCWRvdWJsZQkJcm93c19wZXJfc3RlcDsKKworCQkJLyogYXZlcmFnZSBudW1iZXIgb2Yg cm93cyB3ZSBwcm9kdWNlZCBwZXIgc3RlcCBzbyBmYXIgKi8KKwkJCXJvd3NfcGVyX3N0ZXAg PSAoZG91YmxlKSBub2RlLT5ic19zdGF0cy5udHVwbGVzX3R1cGxlc29ydF9hbGwgLyBub2Rl LT5ic19zdGF0cy53YXRlcm1hcmtfdXBkYXRlc19zdGVwczsKKworCQkJLyoKKwkJCSAqIElm IHdlIGhhdmUgQU0gc3RhdHMgd2l0aCBhdmVyYWdlIG51bWJlciBvZiByb3dzIHBlciBzdGVw LCBjb25zaWRlcgorCQkJICogdGhhdCB0b28gLSBhcHByb3hpbWF0ZSBkZXBlbmRpbmcgb24g d2hhdCBmcmFjdGlvbiBvZiByb3dzIHdlIGFscmVhZHkKKwkJCSAqIHByb2R1Y2VkICh3aXRo IGhpZ2hlciBmcmFjdGlvbiBvZiByb3dzIHByb2R1Y2VkIHdlIHByZWZlciB0aGUgbG9jYWwK KwkJCSAqIGF2ZXJhZ2UsIGFzIG9wcG9zZWQgdG8gdGhlIGdsb2JhbCBhdmVyYWdlIGZyb20g aW5kZXggQU0gc3RhdHMpLgorCQkJICovCisJCQlpZiAocGxhbi0+cm93c19wZXJfc3RlcCA+ IDApCisJCQl7CisJCQkJLyogbnVtYmVyIG9mIHJvd3Mgd2UgYWxyZWFkeSBwcm9kdWNlZCAo YXMgYSBmcmFjdGlvbikgKi8KKwkJCQlkb3VibGUgd2VpZ2h0ID0gKGRvdWJsZSkgbm9kZS0+ YnNfc3RhdHMubnR1cGxlc190dXBsZXNvcnRfYWxsIC8gcGxhbi0+c3RlcF9tYXhyb3dzOwor CisJCQkJLyogcGFyYW5vaWEgKi8KKwkJCQl3ZWlnaHQgPSBNaW4oMS4wLCB3ZWlnaHQpOwor CisJCQkJLyoKKwkJCQkgKiBBcHByb3hpbWF0ZSBiZXR3ZWVuIGluZGV4IEFNIGFuZCAibG9j YWwiIGF2ZXJhZ2UgY2FsY3VsYXRlZAorCQkJCSAqIGZyb20gcGFzdCBleGVjdXRpb25zLiBU aGUgY2xvc2VyIHdlIGdldCB0byB0YXJnZXQgcm93cywgdGhlCisJCQkJICogbW9yZSB3ZSBp Z25vcmUgdGhlIGluZGV4IEFNIHN0YXRzLgorCQkJCSAqLworCQkJCXJvd3NfcGVyX3N0ZXAg PSB3ZWlnaHQgKiByb3dzX3Blcl9zdGVwICsgKDEgLSB3ZWlnaHQpICogcGxhbi0+cm93c19w ZXJfc3RlcDsKKwkJCX0KKworCQkJLyogYXBwcm94aW1hdGUgdGhlIHN0ZXBzIGJldHdlZW4g Ki8KKwkJCXN0ZXAgPSBNYXgoc3RlcCwgY2VpbCgoZG91YmxlKSBucm93c19yZW1haW5pbmcg LyByb3dzX3Blcl9zdGVwKSk7CisKKwkJCS8qCisJCQkgKiBCdXQgZG9uJ3Qgb3ZlcmZsb3cg dGhlIGN1cnJlbnQgbWF4ICh3aGljaCBpcyBzZXQgZWl0aGVyCisJCQkgKiBhcyAyeCBzdGFy dGluZyB2YWx1ZSwgb3IgZnJvbSB3b3JrX21lbS4KKwkJCSAqLworCQkJc3RlcCA9IE1pbihz dGVwLCBzdGVwX21heCk7CisJCX0KKworCQlwbGFuLT53YXRlcm1hcmtfc3RlcCA9IHN0ZXA7 CisKKwl9CisKKwlwbGFuLT53YXRlcm1hcmtfc3RlcCA9IE1heCgxLCBwbGFuLT53YXRlcm1h cmtfc3RlcCk7CisJcGxhbi0+d2F0ZXJtYXJrX3N0ZXAgPSBNaW4oODE5MiwgcGxhbi0+d2F0 ZXJtYXJrX3N0ZXApOworfQorCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKgkJSW5kZXhOZXh0CiAgKgpA QCAtOTk3LDEzICsxMTc2LDIxIEBAIEluZGV4TmV4dChCcmluU29ydFN0YXRlICpub2RlKQog CiAJCQkJCQkvKgogCQkJCQkJICogUmVzZXQgdHVwbGVzb3J0IHN0YXRpc3RpY3MgYmV0d2Vl biBydW5zLCBvdGhlcndpc2UKLQkJCQkJCSAqIHdlJ2xsIGtlZXAgcmUtdXNpbmcgc3RhdHMg ZnJvbSB0aGUgbGFyZ2VzdCBydW4uCisJCQkJCQkgKiB3ZSdsbCBrZWVwIHJlLXVzaW5nIHN0 YXRzIGZyb20gdGhlIGxhcmdlc3QgcnVuLCB3aGljaAorCQkJCQkJICogd291bGQgdGhlbiBj b25mdXNlIHRoZSBhZGFwdGl2ZSBhZGp1c3RtZW50IG9mIHRoZQorCQkJCQkJICogd2F0ZXJt YXJrIHN0ZXAuCiAJCQkJCQkgKi8KIAkJCQkJCXR1cGxlc29ydF9yZXNldF9zdGF0cyhub2Rl LT5ic190dXBsZXNvcnRzdGF0ZSk7CiAKIAkJCQkJCXR1cGxlc29ydF9wZXJmb3Jtc29ydChu b2RlLT5ic190dXBsZXNvcnRzdGF0ZSk7CiAKIAkJCQkJCW5vZGUtPmJzX3N0YXRzLnNvcnRf Y291bnQrKzsKKworCQkJCQkJbWVtc2V0KCZzdGF0cywgMCwgc2l6ZW9mKFR1cGxlc29ydElu c3RydW1lbnRhdGlvbikpOworCQkJCQkJdHVwbGVzb3J0X2dldF9zdGF0cyhub2RlLT5ic190 dXBsZXNvcnRzdGF0ZSwgJnN0YXRzKTsKKworCQkJCQkJYnJpbnNvcnRfYWRqdXN0X3dhdGVy bWFya19zdGVwKG5vZGUsICZzdGF0cyk7CisKIAkJCQkJCW5vZGUtPmJzX3N0YXRzLm50dXBs ZXNfdHVwbGVzb3J0ID0gMDsKIAogCQkJCQkJdHVwbGVzb3J0X2dldF9zdGF0cyhub2RlLT5i c190dXBsZXNvcnRzdGF0ZSwgJnN0YXRzKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29w dGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFu L2NyZWF0ZXBsYW4uYwppbmRleCBiYTk2ZjFjZTA0Li44ZDcxMTRhMmU4IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMKKysrIGIvc3JjL2Jh Y2tlbmQvb3B0aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5jCkBAIC0zMjIsMTMgKzMyMiw4IEBA IHN0YXRpYyBHYXRoZXJNZXJnZSAqY3JlYXRlX2dhdGhlcl9tZXJnZV9wbGFuKFBsYW5uZXJJ bmZvICpyb290LAogCQkJCQkJCQkJCQkgR2F0aGVyTWVyZ2VQYXRoICpiZXN0X3BhdGgpOwog CiAKLS8qCi0gKiBIb3cgbWFueSBkaXN0aW5jdCBtaW52YWwgdmFsdWVzIHRvIGxvb2sgZm9y d2FyZCBmb3IgdGhlIG5leHQgd2F0ZXJtYXJrPwotICoKLSAqIFRoZSBzbWFsbGVzdCBzdGVw IHdlIGNhbiBkbyBpcyAxLCB3aGljaCBtZWFucyB0aGUgaW1tZWRpYXRlbHkgZm9sbG93aW5n Ci0gKiAod2hpbGUgZGlzdGluY3QpIG1pbnZhbC4KLSAqLwotaW50IGJyaW5zb3J0X3dhdGVy bWFya19zdGVwID0gMDsKKy8qIGRlZmluZWQgaW4gbm9kZUJyaW5Tb3J0LmMgKi8KK2V4dGVy biBpbnQgYnJpbnNvcnRfd2F0ZXJtYXJrX3N0ZXA7CiAKIC8qCiAgKiBjcmVhdGVfcGxhbgpA QCAtMzM3OSw4ICszMzc0LDE0IEBAIGNyZWF0ZV9icmluc29ydF9wbGFuKFBsYW5uZXJJbmZv ICpyb290LAogCSAqIGFyZSB0aGVyZSwgYW5kIGlmIHRoZXJlIGFyZSBvbmx5IGZldyB0aGVu IHRyeSBpbmNyZWFzaW5nIHRoZSBzdGVwPwogCSAqLwogCWJyaW5zb3J0X3BsYW4tPndhdGVy bWFya19zdGVwID0gYnJpbnNvcnRfd2F0ZXJtYXJrX3N0ZXA7CisJYnJpbnNvcnRfcGxhbi0+ cm93c19wZXJfc3RlcCA9IC0xOwogCi0JaWYgKGJyaW5zb3J0X3BsYW4tPndhdGVybWFya19z dGVwID09IDApCisJaWYgKHJvb3QtPmxpbWl0X3R1cGxlcyA+IDApCisJCWJyaW5zb3J0X3Bs YW4tPnN0ZXBfbWF4cm93cyA9IHJvb3QtPmxpbWl0X3R1cGxlczsKKwllbHNlCisJCWJyaW5z b3J0X3BsYW4tPnN0ZXBfbWF4cm93cyA9IGJyaW5zb3J0X3BsYW4tPnNjYW4ucGxhbi5wbGFu X3Jvd3M7CisKKwlpZiAoYnJpbnNvcnRfcGxhbi0+d2F0ZXJtYXJrX3N0ZXAgPD0gMCkKIAl7 CiAJCUJyaW5NaW5tYXhTdGF0cyAqYW1zdGF0czsKIApAQCAtMzQwNyw3ICszNDA4LDkgQEAg Y3JlYXRlX2JyaW5zb3J0X3BsYW4oUGxhbm5lckluZm8gKnJvb3QsCiAJCQkJCQkJCQkgICBh bXN0YXRzLT5tYXh2YWxfaW5jcmVtZW50X2F2Zyk7CiAJCQlkb3VibGUJcm93c19wZXJfc3Rl cCA9IE1heCgxLjAsIHBjdF9wZXJfc3RlcCAqIHJvd3MpOwogCi0JCQlicmluc29ydF9wbGFu LT53YXRlcm1hcmtfc3RlcCA9IChpbnQpIChtYXhyb3dzIC8gcm93c19wZXJfc3RlcCk7CisJ CQlicmluc29ydF9wbGFuLT5yb3dzX3Blcl9zdGVwID0gcm93c19wZXJfc3RlcDsKKworCQkJ YnJpbnNvcnRfcGxhbi0+d2F0ZXJtYXJrX3N0ZXAgPSAoaW50KSBjZWlsKG1heHJvd3MgLyBy b3dzX3Blcl9zdGVwKTsKIAkJfQogCiAJCS8qIHNvbWUgcm91Z2ggc2FmZXR5IGVzdGltYXRl cyAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMg Yi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYwppbmRleCA5YzBkYTNkNzBm Li44OTQ4ZmI0NGQzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190 YWJsZXMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYwpAQCAt MzU0MSw3ICszNTQxLDcgQEAgc3RydWN0IGNvbmZpZ19pbnQgQ29uZmlndXJlTmFtZXNJbnRb XSA9CiAJCQlHVUNfTk9UX0lOX1NBTVBMRQogCQl9LAogCQkmYnJpbnNvcnRfd2F0ZXJtYXJr X3N0ZXAsCi0JCTAsIDAsIElOVF9NQVgsCisJCTAsIC0xLCBJTlRfTUFYLAogCQlOVUxMLCBO VUxMLCBOVUxMCiAJfSwKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25v ZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAppbmRleCAwNmRjNjQxNmQ5 Li5hMzA1OTMxNDA1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMu aAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaApAQCAtMTcxMyw3ICsxNzEz LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQnJpblNvcnRTdGF0ZQogCSAqIFdlIG5lZWQgdHdvIHR1 cGxlc29ydCBpbnN0YW5jZXMgLSBvbmUgZm9yIGN1cnJlbnQgcmFuZ2UsIG9uZSBmb3IKIAkg KiBzcGlsbC1vdmVyIHR1cGxlcyBmcm9tIHRoZSBvdmVybGFwcGluZyByYW5nZXMKIAkgKi8K LQl2b2lkCQkgICAqYnNfdHVwbGVzb3J0c3RhdGU7CisJVHVwbGVzb3J0c3RhdGUgICpic190 dXBsZXNvcnRzdGF0ZTsKIAlUdXBsZXN0b3Jlc3RhdGUgKmJzX3R1cGxlc3RvcmU7CiB9IEJy aW5Tb3J0U3RhdGU7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rl cy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmgKaW5kZXggMGM1NmRjZTNjOC4u NjU4ZWFiYTEzNyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmgK KysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmgKQEAgLTUyNyw3ICs1MjcsOCBA QCB0eXBlZGVmIHN0cnVjdCBCcmluU29ydAogCiAJLyogbnVtYmVyIG9mIHdhdGVybWFyayBz dGVwcyB0byBtYWtlICovCiAJaW50CQkJd2F0ZXJtYXJrX3N0ZXA7Ci0KKwlpbnQJCQlzdGVw X21heHJvd3M7CisJaW50CQkJcm93c19wZXJfc3RlcDsKIH0gQnJpblNvcnQ7CiAKIC8qIC0t LS0tLS0tLS0tLS0tLS0KLS0gCjIuMzkuMAoK --------------z0saJSUvc90TqSu15DjSpJR9 Content-Type: text/x-patch; charset=UTF-8; name="0009-wip-add-brin_sort.sql-test-20230206.patch" Content-Disposition: attachment; filename="0009-wip-add-brin_sort.sql-test-20230206.patch" Content-Transfer-Encoding: base64 RnJvbSAyMmE4MDE1YTk4ZDVmNTJmNzc3ZGMxYzE3NjUxMzk3YjRlMGU0ZGFkIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzLnZvbmRyYUBwb3N0 Z3Jlc3FsLm9yZz4KRGF0ZTogRnJpLCAzIEZlYiAyMDIzIDEzOjE5OjI0ICswMTAwClN1Ympl Y3Q6IFtQQVRDSCAwOS8xMF0gd2lwOiBhZGQgYnJpbl9zb3J0LnNxbCB0ZXN0CgotLS0KIHNy Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvYnJpbl9zb3J0Lm91dCAgICAgICB8IDU0MyArKysr KysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvYnJpbl9zb3J0X2V4cHJzLm91 dCB8IDc4OCArKysrKysrKysrKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv YnJpbl9zb3J0X211bHRpLm91dCB8IDU0NSArKysrKysrKysrKysKIC4uLi9leHBlY3RlZC9i cmluX3NvcnRfbXVsdGlfZXhwcnMub3V0ICAgICAgICB8IDc4NCArKysrKysrKysrKysrKysr Kwogc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZSAgICAgICAgICAgIHwgICA2 ICsKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2JyaW5fc29ydC5zcWwgICAgICAgICAgICB8IDIz OCArKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2JyaW5fc29ydF9leHBycy5zcWwgICAg ICB8IDM3MyArKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2JyaW5fc29ydF9tdWx0 aS5zcWwgICAgICB8IDIzNSArKysrKysKIC4uLi9yZWdyZXNzL3NxbC9icmluX3NvcnRfbXVs dGlfZXhwcnMuc3FsICAgICB8IDM2OSArKysrKysrKwogOSBmaWxlcyBjaGFuZ2VkLCAzODgx IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL2JyaW5fc29ydC5vdXQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL2JyaW5fc29ydF9leHBycy5vdXQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBz cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2JyaW5fc29ydF9tdWx0aS5vdXQKIGNyZWF0ZSBt b2RlIDEwMDY0NCBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2JyaW5fc29ydF9tdWx0aV9l eHBycy5vdXQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9yZWdyZXNzL3NxbC9icmlu X3NvcnQuc3FsCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcmVncmVzcy9zcWwvYnJp bl9zb3J0X2V4cHJzLnNxbAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3Mv c3FsL2JyaW5fc29ydF9tdWx0aS5zcWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9y ZWdyZXNzL3NxbC9icmluX3NvcnRfbXVsdGlfZXhwcnMuc3FsCgpkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9icmluX3NvcnQub3V0IGIvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9icmluX3NvcnQub3V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAuLjBlMjA3Y2Y0ZjYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL2JyaW5fc29ydC5vdXQKQEAgLTAsMCArMSw1NDMgQEAKKy0tIGZ1bmN0 aW9uIHRvIHZlcmlmeSB2YXJpb3VzIHNvcnQtcmVsYXRlZCBkYXRhICh0b3RhbCByb3dzLCBv cmRlcmluZykKK2NyZWF0ZSBvciByZXBsYWNlIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nKHBfc3FsIHRleHQsIHBfcm93c19leHBlY3RlZCBpbnQsIHBfZGVzYyBib29sZWFu KSByZXR1cm5zIHZvaWQgYXMgJCQKK2RlY2xhcmUKKyAgICB2X2N1cnMgcmVmY3Vyc29yOwor ICAgIHZfcm93IHJlY29yZDsKKyAgICB2X3ByZXYgcmVjb3JkOworICAgIHZfYnJpbl9zb3J0 X2ZvdW5kIGJvb2wgOj0gZmFsc2U7CisgICAgdl9jb3VudCBpbnQgOj0gMDsKK2JlZ2luCisK KyAgICAtLSBuZWVkZWQgYmVjYXVzZSB0aGUgcF9zcWwgcXVlcnkgaGFzIGRpZmZlcmVudCBk YXRhIHR5cGVzCisgICAgZXhlY3V0ZSAnZGlzY2FyZCBwbGFucyc7CisKKyAgICBPUEVOIHZf Y3VycyBOTyBTQ1JPTEwgRk9SIEVYRUNVVEUgZm9ybWF0KCdleHBsYWluICVzJywgcF9zcWwp OworCisgICAgTE9PUAorICAgICAgICBGRVRDSCB2X2N1cnMgSU5UTyB2X3JvdzsKKworICAg ICAgICBJRiBOT1QgRk9VTkQgVEhFTgorICAgICAgICAgICAgRVhJVDsKKyAgICAgICAgRU5E IElGOworCisgICAgICAgIElGIHZfcm93Ojp0ZXh0IExJS0UgJyVCUklOIFNvcnQlJyBUSEVO CisgICAgICAgICAgICB2X2JyaW5fc29ydF9mb3VuZCA6PSB0cnVlOworICAgICAgICAgICAg RVhJVDsKKyAgICAgICAgRU5EIElGOworICAgIEVORCBMT09QOworCisgICAgQ0xPU0Ugdl9j dXJzOworCisgICAgSUYgTk9UIHZfYnJpbl9zb3J0X2ZvdW5kIFRIRU4KKyAgICAgICAgUkFJ U0UgRVhDRVBUSU9OICdCUklOIFNvcnQ6IG5vdCBmb3VuZCc7CisgICAgRU5EIElGOworCisg ICAgT1BFTiB2X2N1cnMgTk8gU0NST0xMIEZPUiBFWEVDVVRFIGZvcm1hdChwX3NxbCk7CisK KyAgICBMT09QCisgICAgICAgIEZFVENIIHZfY3VycyBJTlRPIHZfcm93OworCisgICAgICAg IElGIE5PVCBGT1VORCBUSEVOCisgICAgICAgICAgICBFWElUOworICAgICAgICBFTkQgSUY7 CisKKyAgICAgICAgSUYgdl9wcmV2IElTIE5PVCBOVUxMIFRIRU4KKyAgICAgICAgICAgIElG IHZfcHJldi52YWwgPiB2X3Jvdy52YWwgQU5EIE5PVCBwX2Rlc2MgVEhFTgorICAgICAgICAg ICAgICAgIFJBSVNFIEVYQ0VQVElPTiAnb3JkZXJpbmcgbWlzbWF0Y2ggJSA+ICUgKGFzYykn LCB2X3ByZXYudmFsLCB2X3Jvdy52YWw7CisgICAgICAgICAgICBFTkQgSUY7CisgICAgICAg ICAgICBJRiB2X3ByZXYudmFsIDwgdl9yb3cudmFsIEFORCBwX2Rlc2MgVEhFTgorICAgICAg ICAgICAgICAgIFJBSVNFIEVYQ0VQVElPTiAnb3JkZXJpbmcgbWlzbWF0Y2ggJSA8ICUgKGRl c2MpJywgdl9wcmV2LnZhbCwgdl9yb3cudmFsOworICAgICAgICAgICAgRU5EIElGOworICAg ICAgICBFTkQgSUY7CisKKyAgICAgICAgdl9wcmV2IDo9IHZfcm93OworICAgICAgICB2X2Nv dW50IDo9IHZfY291bnQgKyAxOworICAgIEVORCBMT09QOworCisgICAgQ0xPU0Ugdl9jdXJz OworCisgICAgSUYgdl9jb3VudCAhPSBwX3Jvd3NfZXhwZWN0ZWQgVEhFTgorICAgICAgICBS QUlTRSBFWENFUFRJT04gJ2NvdW50IG1pc21hdGNoOiAlICE9ICUnLCB2X2NvdW50LCBwX3Jv d3NfZXhwZWN0ZWQ7CisgICAgRU5EIElGOworCitlbmQ7CiskJCBsYW5ndWFnZSBwbHBnc3Fs OworY3JlYXRlIHRhYmxlIGJyaW5fc29ydF90ZXN0IChpbnRfdmFsIGludCwgYmlnaW50X3Zh bCBiaWdpbnQsIHRleHRfdmFsIHRleHQsIGluZXRfdmFsIGluZXQpIHdpdGggKGZpbGxmYWN0 b3I9MTApOworLS0gc2VxdWVudGlhbCB2YWx1ZXMKK2luc2VydCBpbnRvIGJyaW5fc29ydF90 ZXN0CitzZWxlY3QKKwlpLAorCS1pLAktLSBzYW1lIGFzIGludCwgYnV0IGF0IGxlYXN0IG9w cG9zaXRlCisJbHBhZChpOjp0ZXh0IHx8IG1kNShpOjp0ZXh0KSwgNDAsICcwJyksCisJJzEw LjAuMC4wJzo6aW5ldCArIGkKK2Zyb20gZ2VuZXJhdGVfc2VyaWVzKDEsMTAwMCkgcyhpKTsK Ky0tIGNyZWF0ZSBicmluIGluZGV4ZXMgb24gaW5kaXZpZHVhbCBjb2x1bW5zCitjcmVhdGUg aW5kZXggYnJpbl9zb3J0X3Rlc3RfaW50X2lkeCBvbiBicmluX3NvcnRfdGVzdCB1c2luZyBi cmluIChpbnRfdmFsKSB3aXRoIChwYWdlc19wZXJfcmFuZ2U9MSk7CitjcmVhdGUgaW5kZXgg YnJpbl9zb3J0X3Rlc3RfYmlnaW50X2lkeCBvbiBicmluX3NvcnRfdGVzdCB1c2luZyBicmlu IChiaWdpbnRfdmFsKSB3aXRoIChwYWdlc19wZXJfcmFuZ2U9MSk7CitjcmVhdGUgaW5kZXgg YnJpbl9zb3J0X3Rlc3RfdGV4dF9pZHggb24gYnJpbl9zb3J0X3Rlc3QgdXNpbmcgYnJpbiAo dGV4dF92YWwpIHdpdGggKHBhZ2VzX3Blcl9yYW5nZT0xKTsKK2NyZWF0ZSBpbmRleCBicmlu X3NvcnRfdGVzdF9pbmV0X2lkeCBvbiBicmluX3NvcnRfdGVzdCB1c2luZyBicmluIChpbmV0 X3ZhbCBpbmV0X21pbm1heF9vcHMpIHdpdGggKHBhZ2VzX3Blcl9yYW5nZT0xKTsKKy0tIAor dmFjdXVtIGFuYWx5emUgYnJpbl9zb3J0X3Rlc3Q7CitzZXQgZW5hYmxlX3NlcXNjYW4gPSBv ZmY7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbnRfdmFsIGFz IHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGludF92YWwnLCAxMDAwLCBmYWxz ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2Vs ZWN0IGludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW50X3Zh bCBkZXNjJywgMTAwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9j aGVja19vcmRlcmluZygnc2VsZWN0IGludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rl c3Qgb3JkZXIgYnkgaW50X3ZhbCBsaW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKKyBicmluc29y dF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJv dykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgaW50X3ZhbCBh cyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBpbnRfdmFsIGRlc2MgbGltaXQg MTAwJywgMTAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNr X29yZGVyaW5nKCdzZWxlY3QgaW50X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBv cmRlciBieSBpbnRfdmFsIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCBmYWxzZSk7Cisg YnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg CisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGlu dF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW50X3ZhbCBkZXNj IGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVja19v cmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2Vs ZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgYmlnaW50X3ZhbCBhcyB2YWwg ZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBiaWdpbnRfdmFsJywgMTAwMCwgZmFsc2Up OworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVj dCBiaWdpbnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGJpZ2lu dF92YWwgZGVzYycsIDEwMDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNv cnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBiaWdpbnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5f c29ydF90ZXN0IG9yZGVyIGJ5IGJpZ2ludF92YWwgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7 CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0 IGJpZ2ludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgYmlnaW50 X3ZhbCBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3Jk ZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVj dCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGJpZ2ludF92YWwgYXMgdmFsIGZy b20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgYmlnaW50X3ZhbCBsaW1pdCAxMDAgb2Zmc2V0 IDEwMCcsIDEwMCwgZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hl Y2tfb3JkZXJpbmcoJ3NlbGVjdCBiaWdpbnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90 ZXN0IG9yZGVyIGJ5IGJpZ2ludF92YWwgZGVzYyBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEw MCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmlu Zygnc2VsZWN0IGluZXRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5 IGluZXRfdmFsJywgMTAwMCwgZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNv cnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbmV0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3Nv cnRfdGVzdCBvcmRlciBieSBpbmV0X3ZhbCBkZXNjJywgMTAwMCwgdHJ1ZSk7CisgYnJpbnNv cnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSBy b3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGluZXRfdmFs IGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGluZXRfdmFsIGxpbWl0IDEw MCcsIDEwMCwgZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tf b3JkZXJpbmcoJ3NlbGVjdCBpbmV0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBv cmRlciBieSBpbmV0X3ZhbCBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CisgYnJpbnNv cnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSBy b3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGluZXRfdmFs IGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGluZXRfdmFsIGxpbWl0IDEw MCBvZmZzZXQgMTAwJywgMTAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmlu c29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGluZXRfdmFsIGFzIHZhbCBmcm9tIGJyaW5f c29ydF90ZXN0IG9yZGVyIGJ5IGluZXRfdmFsIGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAn LCAxMDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3Jk ZXJpbmcoJ3NlbGVjdCB0ZXh0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRl ciBieSB0ZXh0X3ZhbCcsIDEwMDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmlu ZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJy aW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgdGV4dF92YWwgYXMgdmFsIGZyb20gYnJp bl9zb3J0X3Rlc3Qgb3JkZXIgYnkgdGV4dF92YWwgZGVzYycsIDEwMDAsIHRydWUpOworIGJy aW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAor KDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCB0ZXh0 X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSB0ZXh0X3ZhbCBsaW1p dCAxMDAnLCAxMDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2No ZWNrX29yZGVyaW5nKCdzZWxlY3QgdGV4dF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rl c3Qgb3JkZXIgYnkgdGV4dF92YWwgZGVzYyBsaW1pdCAxMDAnLCAxMDAsIHRydWUpOworIGJy aW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAor KDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCB0ZXh0 X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSB0ZXh0X3ZhbCBsaW1p dCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVy aW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3Qg YnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCB0ZXh0X3ZhbCBhcyB2YWwgZnJvbSBi cmluX3NvcnRfdGVzdCBvcmRlciBieSB0ZXh0X3ZhbCBkZXNjIGxpbWl0IDEwMCBvZmZzZXQg MTAwJywgMTAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworLS0gc2VtaS1yYW5kb20gZGF0YSAo c2VxdWVudGlhbCArIHJhbmRvbW5lc3MpCit0cnVuY2F0ZSB0YWJsZSBicmluX3NvcnRfdGVz dDsKK2luc2VydCBpbnRvIGJyaW5fc29ydF90ZXN0CitzZWxlY3QKKwlpICsgKDEwMCAqIHJh bmRvbSgpKTo6aW50LAorCS0oaSArICgxMDAgKiByYW5kb20oKSk6OmludCksCS0tIHNhbWUg YXMgaW50LCBidXQgYXQgbGVhc3Qgb3Bwb3NpdGUKKwlscGFkKChpICsgKDEwMCAqIHJhbmRv bSgpKTo6aW50KTo6dGV4dCB8fCBtZDUoaTo6dGV4dCksIDQwLCAnMCcpLAorCScxMC4wLjAu MCc6OmluZXQgKyAoaSArIDEwMCAqIHJhbmRvbSgpOjppbnQpCitmcm9tIGdlbmVyYXRlX3Nl cmllcygxLDEwMDApIHMoaSk7CityZWluZGV4IHRhYmxlIGJyaW5fc29ydF90ZXN0OwordmFj dXVtIGFuYWx5emUgYnJpbl9zb3J0X3Rlc3Q7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3Jk ZXJpbmcoJ3NlbGVjdCBpbnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVy IGJ5IGludF92YWwnLCAxMDAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmlu c29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGludF92YWwgYXMgdmFsIGZyb20gYnJpbl9z b3J0X3Rlc3Qgb3JkZXIgYnkgaW50X3ZhbCBkZXNjJywgMTAwMCwgdHJ1ZSk7CisgYnJpbnNv cnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSBy b3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGludF92YWwg YXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW50X3ZhbCBsaW1pdCAxMDAn LCAxMDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nKCdzZWxlY3QgaW50X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRl ciBieSBpbnRfdmFsIGRlc2MgbGltaXQgMTAwJywgMTAwLCB0cnVlKTsKKyBicmluc29ydF9j aGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykK Kworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgaW50X3ZhbCBhcyB2 YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBpbnRfdmFsIGxpbWl0IDEwMCBvZmZz ZXQgMTAwJywgMTAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9j aGVja19vcmRlcmluZygnc2VsZWN0IGludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rl c3Qgb3JkZXIgYnkgaW50X3ZhbCBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCB0 cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAKKygxIHJvdykKKworIAorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5n KCdzZWxlY3QgYmlnaW50X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBi eSBiaWdpbnRfdmFsJywgMTAwMCwgZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5n IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBiaWdpbnRfdmFsIGFzIHZhbCBmcm9tIGJy aW5fc29ydF90ZXN0IG9yZGVyIGJ5IGJpZ2ludF92YWwgZGVzYycsIDEwMDAsIHRydWUpOwor IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBi aWdpbnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGJpZ2ludF92 YWwgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmlu c29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGJpZ2ludF92YWwgYXMgdmFsIGZyb20gYnJp bl9zb3J0X3Rlc3Qgb3JkZXIgYnkgYmlnaW50X3ZhbCBkZXNjIGxpbWl0IDEwMCcsIDEwMCwg dHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygn c2VsZWN0IGJpZ2ludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkg YmlnaW50X3ZhbCBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2UpOworIGJyaW5z b3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEg cm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBiaWdpbnRf dmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGJpZ2ludF92YWwgZGVz YyBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tf b3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKKyAK K3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGluZXRfdmFsIGFzIHZh bCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGluZXRfdmFsJywgMTAwMCwgZmFsc2Up OworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVj dCBpbmV0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBpbmV0X3Zh bCBkZXNjJywgMTAwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9j aGVja19vcmRlcmluZygnc2VsZWN0IGluZXRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90 ZXN0IG9yZGVyIGJ5IGluZXRfdmFsIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworIGJyaW5z b3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEg cm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbmV0X3Zh bCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBpbmV0X3ZhbCBkZXNjIGxp bWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9j aGVja19vcmRlcmluZygnc2VsZWN0IGluZXRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90 ZXN0IG9yZGVyIGJ5IGluZXRfdmFsIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCBmYWxz ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2Vs ZWN0IGluZXRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGluZXRf dmFsIGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworIGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93 KQorCisgCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCB0ZXh0X3Zh bCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSB0ZXh0X3ZhbCcsIDEwMDAs IGZhbHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5n KCdzZWxlY3QgdGV4dF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkg dGV4dF92YWwgZGVzYycsIDEwMDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5n IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCB0ZXh0X3ZhbCBhcyB2YWwgZnJvbSBicmlu X3NvcnRfdGVzdCBvcmRlciBieSB0ZXh0X3ZhbCBsaW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsK KyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3Qg dGV4dF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgdGV4dF92YWwg ZGVzYyBsaW1pdCAxMDAnLCAxMDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5n IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCB0ZXh0X3ZhbCBhcyB2YWwgZnJvbSBicmlu X3NvcnRfdGVzdCBvcmRlciBieSB0ZXh0X3ZhbCBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEw MCwgZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJp bmcoJ3NlbGVjdCB0ZXh0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBi eSB0ZXh0X3ZhbCBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCB0cnVlKTsKKyBi cmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAK KygxIHJvdykKKworLS0gcmFuZG9tIGRhdGEKK3RydW5jYXRlIHRhYmxlIGJyaW5fc29ydF90 ZXN0OworaW5zZXJ0IGludG8gYnJpbl9zb3J0X3Rlc3QKK3NlbGVjdAorCSgxMDAwICogcmFu ZG9tKCkpOjppbnQsCisJLSgoMTAwMCAqIHJhbmRvbSgpKTo6aW50KSwJLS0gc2FtZSBhcyBp bnQsIGJ1dCBhdCBsZWFzdCBvcHBvc2l0ZQorCWxwYWQoKCgxMDAwICogcmFuZG9tKCkpOjpp bnQpOjp0ZXh0IHx8IG1kNShpOjp0ZXh0KSwgNDAsICcwJyksCisJJzEwLjAuMC4wJzo6aW5l dCArICgxMDAwICogcmFuZG9tKCk6OmludCkKK2Zyb20gZ2VuZXJhdGVfc2VyaWVzKDEsMTAw MCkgcyhpKTsKK3JlaW5kZXggdGFibGUgYnJpbl9zb3J0X3Rlc3Q7Cit2YWN1dW0gYW5hbHl6 ZSBicmluX3NvcnRfdGVzdDsKKyAKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygn c2VsZWN0IGludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW50 X3ZhbCcsIDEwMDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2No ZWNrX29yZGVyaW5nKCdzZWxlY3QgaW50X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVz dCBvcmRlciBieSBpbnRfdmFsIGRlc2MnLCAxMDAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVj a19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKwor c2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgaW50X3ZhbCBhcyB2YWwg ZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBpbnRfdmFsIGxpbWl0IDEwMCcsIDEwMCwg ZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmco J3NlbGVjdCBpbnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGlu dF92YWwgZGVzYyBsaW1pdCAxMDAnLCAxMDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxl Y3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbnRfdmFsIGFzIHZhbCBmcm9t IGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGludF92YWwgbGltaXQgMTAwIG9mZnNldCAxMDAn LCAxMDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nKCdzZWxlY3QgaW50X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRl ciBieSBpbnRfdmFsIGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOwor IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IAorKDEgcm93KQorCisgCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVj dCBiaWdpbnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGJpZ2lu dF92YWwnLCAxMDAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9j aGVja19vcmRlcmluZygnc2VsZWN0IGJpZ2ludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0 X3Rlc3Qgb3JkZXIgYnkgYmlnaW50X3ZhbCBkZXNjJywgMTAwMCwgdHJ1ZSk7CisgYnJpbnNv cnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSBy b3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGJpZ2ludF92 YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgYmlnaW50X3ZhbCBsaW1p dCAxMDAnLCAxMDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2No ZWNrX29yZGVyaW5nKCdzZWxlY3QgYmlnaW50X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRf dGVzdCBvcmRlciBieSBiaWdpbnRfdmFsIGRlc2MgbGltaXQgMTAwJywgMTAwLCB0cnVlKTsK KyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3Qg YmlnaW50X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBiaWdpbnRf dmFsIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hl Y2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisK K3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGJpZ2ludF92YWwgYXMg dmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgYmlnaW50X3ZhbCBkZXNjIGxpbWl0 IDEwMCBvZmZzZXQgMTAwJywgMTAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmlu ZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworIAorc2VsZWN0 IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgaW5ldF92YWwgYXMgdmFsIGZyb20g YnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW5ldF92YWwnLCAxMDAwLCBmYWxzZSk7CisgYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCiso MSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGluZXRf dmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGluZXRfdmFsIGRlc2Mn LCAxMDAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nKCdzZWxlY3QgaW5ldF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3Jk ZXIgYnkgaW5ldF92YWwgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hl Y2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisK K3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGluZXRfdmFsIGFzIHZh bCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGluZXRfdmFsIGRlc2MgbGltaXQgMTAw JywgMTAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nKCdzZWxlY3QgaW5ldF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3Jk ZXIgYnkgaW5ldF92YWwgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKKyBi cmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAK KygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgaW5l dF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW5ldF92YWwgZGVz YyBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tf b3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKKyAK K3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IHRleHRfdmFsIGFzIHZh bCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IHRleHRfdmFsJywgMTAwMCwgZmFsc2Up OworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVj dCB0ZXh0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSB0ZXh0X3Zh bCBkZXNjJywgMTAwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9j aGVja19vcmRlcmluZygnc2VsZWN0IHRleHRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90 ZXN0IG9yZGVyIGJ5IHRleHRfdmFsIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworIGJyaW5z b3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEg cm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCB0ZXh0X3Zh bCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSB0ZXh0X3ZhbCBkZXNjIGxp bWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9j aGVja19vcmRlcmluZygnc2VsZWN0IHRleHRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90 ZXN0IG9yZGVyIGJ5IHRleHRfdmFsIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCBmYWxz ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2Vs ZWN0IHRleHRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IHRleHRf dmFsIGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworIGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93 KQorCitkcm9wIHRhYmxlIGJyaW5fc29ydF90ZXN0OwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9icmluX3NvcnRfZXhwcnMub3V0IGIvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9icmluX3NvcnRfZXhwcnMub3V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAuLjg3ZTU4YTEwODgKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL2JyaW5fc29ydF9leHBycy5vdXQKQEAgLTAsMCArMSw3ODgg QEAKKy0tIGZ1bmN0aW9uIHRvIHZlcmlmeSB2YXJpb3VzIHNvcnQtcmVsYXRlZCBkYXRhICh0 b3RhbCByb3dzLCBvcmRlcmluZykKK2NyZWF0ZSBvciByZXBsYWNlIGZ1bmN0aW9uIGJyaW5z b3J0X2NoZWNrX29yZGVyaW5nKHBfc3FsIHRleHQsIHBfcm93c19leHBlY3RlZCBpbnQsIHBf ZGVzYyBib29sZWFuKSByZXR1cm5zIHZvaWQgYXMgJCQKK2RlY2xhcmUKKyAgICB2X2N1cnMg cmVmY3Vyc29yOworICAgIHZfcm93IHJlY29yZDsKKyAgICB2X3ByZXYgcmVjb3JkOworICAg IHZfYnJpbl9zb3J0X2ZvdW5kIGJvb2wgOj0gZmFsc2U7CisgICAgdl9jb3VudCBpbnQgOj0g MDsKK2JlZ2luCisKKyAgICAtLSBuZWVkZWQgYmVjYXVzZSB0aGUgcF9zcWwgcXVlcnkgaGFz IGRpZmZlcmVudCBkYXRhIHR5cGVzCisgICAgZXhlY3V0ZSAnZGlzY2FyZCBwbGFucyc7CisK KyAgICBPUEVOIHZfY3VycyBOTyBTQ1JPTEwgRk9SIEVYRUNVVEUgZm9ybWF0KCdleHBsYWlu ICVzJywgcF9zcWwpOworCisgICAgTE9PUAorICAgICAgICBGRVRDSCB2X2N1cnMgSU5UTyB2 X3JvdzsKKworICAgICAgICBJRiBOT1QgRk9VTkQgVEhFTgorICAgICAgICAgICAgRVhJVDsK KyAgICAgICAgRU5EIElGOworCisgICAgICAgIElGIHZfcm93Ojp0ZXh0IExJS0UgJyVCUklO IFNvcnQlJyBUSEVOCisgICAgICAgICAgICB2X2JyaW5fc29ydF9mb3VuZCA6PSB0cnVlOwor ICAgICAgICAgICAgRVhJVDsKKyAgICAgICAgRU5EIElGOworICAgIEVORCBMT09QOworCisg ICAgQ0xPU0Ugdl9jdXJzOworCisgICAgSUYgTk9UIHZfYnJpbl9zb3J0X2ZvdW5kIFRIRU4K KyAgICAgICAgUkFJU0UgRVhDRVBUSU9OICdCUklOIFNvcnQ6IG5vdCBmb3VuZCc7CisgICAg RU5EIElGOworCisgICAgT1BFTiB2X2N1cnMgTk8gU0NST0xMIEZPUiBFWEVDVVRFIGZvcm1h dChwX3NxbCk7CisKKyAgICBMT09QCisgICAgICAgIEZFVENIIHZfY3VycyBJTlRPIHZfcm93 OworCisgICAgICAgIElGIE5PVCBGT1VORCBUSEVOCisgICAgICAgICAgICBFWElUOworICAg ICAgICBFTkQgSUY7CisKKyAgICAgICAgSUYgdl9wcmV2IElTIE5PVCBOVUxMIFRIRU4KKyAg ICAgICAgICAgIElGIHZfcHJldi52YWwgPiB2X3Jvdy52YWwgQU5EIE5PVCBwX2Rlc2MgVEhF TgorICAgICAgICAgICAgICAgIFJBSVNFIEVYQ0VQVElPTiAnb3JkZXJpbmcgbWlzbWF0Y2gg JSA+ICUgKGFzYyknLCB2X3ByZXYudmFsLCB2X3Jvdy52YWw7CisgICAgICAgICAgICBFTkQg SUY7CisgICAgICAgICAgICBJRiB2X3ByZXYudmFsIDwgdl9yb3cudmFsIEFORCBwX2Rlc2Mg VEhFTgorICAgICAgICAgICAgICAgIFJBSVNFIEVYQ0VQVElPTiAnb3JkZXJpbmcgbWlzbWF0 Y2ggJSA8ICUgKGRlc2MpJywgdl9wcmV2LnZhbCwgdl9yb3cudmFsOworICAgICAgICAgICAg RU5EIElGOworICAgICAgICBFTkQgSUY7CisKKyAgICAgICAgdl9wcmV2IDo9IHZfcm93Owor ICAgICAgICB2X2NvdW50IDo9IHZfY291bnQgKyAxOworICAgIEVORCBMT09QOworCisgICAg Q0xPU0Ugdl9jdXJzOworCisgICAgSUYgdl9jb3VudCAhPSBwX3Jvd3NfZXhwZWN0ZWQgVEhF TgorICAgICAgICBSQUlTRSBFWENFUFRJT04gJ2NvdW50IG1pc21hdGNoOiAlICE9ICUnLCB2 X2NvdW50LCBwX3Jvd3NfZXhwZWN0ZWQ7CisgICAgRU5EIElGOworCitlbmQ7CiskJCBsYW5n dWFnZSBwbHBnc3FsOworY3JlYXRlIHRhYmxlIGJyaW5fc29ydF90ZXN0IChpbnRfdmFsIGlu dCwgYmlnaW50X3ZhbCBiaWdpbnQsIHRleHRfdmFsIHRleHQsIGluZXRfdmFsIGluZXQpIHdp dGggKGZpbGxmYWN0b3I9MTApOworLS0gc2VxdWVudGlhbCB2YWx1ZXMKK2luc2VydCBpbnRv IGJyaW5fc29ydF90ZXN0CitzZWxlY3QKKwlpLAorCS1pLAktLSBzYW1lIGFzIGludCwgYnV0 IGF0IGxlYXN0IG9wcG9zaXRlCisJbHBhZChpOjp0ZXh0IHx8IG1kNShpOjp0ZXh0KSwgNDAs ICcwJyksCisJJzEwLjAuMC4wJzo6aW5ldCArIGkKK2Zyb20gZ2VuZXJhdGVfc2VyaWVzKDEs MTAwMCkgcyhpKTsKKy0tIGNyZWF0ZSBicmluIGluZGV4ZXMgb24gaW5kaXZpZHVhbCBjb2x1 bW5zCitjcmVhdGUgaW5kZXggYnJpbl9zb3J0X3Rlc3RfaW50X2lkeCBvbiBicmluX3NvcnRf dGVzdCB1c2luZyBicmluICgoaW50X3ZhbCArIDEpKSB3aXRoIChwYWdlc19wZXJfcmFuZ2U9 MSk7CitjcmVhdGUgaW5kZXggYnJpbl9zb3J0X3Rlc3RfYmlnaW50X2lkeCBvbiBicmluX3Nv cnRfdGVzdCB1c2luZyBicmluICgoYmlnaW50X3ZhbCArIDEpKSB3aXRoIChwYWdlc19wZXJf cmFuZ2U9MSk7CitjcmVhdGUgaW5kZXggYnJpbl9zb3J0X3Rlc3RfdGV4dF9pZHggb24gYnJp bl9zb3J0X3Rlc3QgdXNpbmcgYnJpbiAoKCd4JyB8fCB0ZXh0X3ZhbCkpIHdpdGggKHBhZ2Vz X3Blcl9yYW5nZT0xKTsKK2NyZWF0ZSBpbmRleCBicmluX3NvcnRfdGVzdF9pbmV0X2lkeCBv biBicmluX3NvcnRfdGVzdCB1c2luZyBicmluICgoaW5ldF92YWwgKyAxKSBpbmV0X21pbm1h eF9vcHMpIHdpdGggKHBhZ2VzX3Blcl9yYW5nZT0xKTsKKy0tIAordmFjdXVtIGFuYWx5emUg YnJpbl9zb3J0X3Rlc3Q7CitzZXQgZW5hYmxlX3NlcXNjYW4gPSBvZmY7CisgCistLSBtYXRj aGluZyBleHByZXNzaW9uCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVj dCAoaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChp bnRfdmFsICsgMSknLCAxMDAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmlu c29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20g YnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgKyAxKSBkZXNjJywgMTAwMCwgdHJ1 ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2Vs ZWN0IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkg KGludF92YWwgKyAxKSBsaW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVj a19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKwor c2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGludF92YWwgKyAxKSBh cyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW50X3ZhbCArIDEpIGRlc2Mg bGltaXQgMTAwJywgMTAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmlu X3NvcnRfdGVzdCBvcmRlciBieSAoaW50X3ZhbCArIDEpIGxpbWl0IDEwMCBvZmZzZXQgMTAw JywgMTAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19v cmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rl c3Qgb3JkZXIgYnkgKGludF92YWwgKyAxKSBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywg MTAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworLS0gbWlzbWF0Y2hpbmcgZXhwcmVzc2lvbgor c2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGludF92YWwgKyAxKSBh cyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW50X3ZhbCAtIDEpJywgMTAw MCwgZmFsc2UpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAorQ09OVEVYVDogIFBM L3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHRleHQsaW50ZWdlcixi b29sZWFuKSBsaW5lIDMxIGF0IFJBSVNFCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJp bmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9y ZGVyIGJ5IChpbnRfdmFsIC0gMSkgZGVzYycsIDEwMDAsIHRydWUpOworRVJST1I6ICBCUklO IFNvcnQ6IG5vdCBmb3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDMxIGF0IFJBSVNF CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEp IGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsIC0gMSkgbGlt aXQgMTAwJywgMTAwLCBmYWxzZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90IGZvdW5kCitD T05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcodGV4 dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMzEgYXQgUkFJU0UKK3NlbGVjdCBicmluc29ydF9j aGVja19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9z b3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgLSAxKSBkZXNjIGxpbWl0IDEwMCcsIDEwMCwg dHJ1ZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90IGZvdW5kCitDT05URVhUOiAgUEwvcGdT UUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xl YW4pIGxpbmUgMzEgYXQgUkFJU0UKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygn c2VsZWN0IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIg YnkgKGludF92YWwgLSAxKSBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2UpOwor RVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0 aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5l IDMxIGF0IFJBSVNFCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAo aW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbnRf dmFsIC0gMSkgZGVzYyBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CitFUlJP UjogIEJSSU4gU29ydDogbm90IGZvdW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24g YnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMzEg YXQgUkFJU0UKKyAKKy0tIG1hdGNoaW5nIGV4cHJlc3Npb24KK3NlbGVjdCBicmluc29ydF9j aGVja19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJp bl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgKyAxKScsIDEwMDAsIGZhbHNlKTsK KyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3Qg KGJpZ2ludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAo YmlnaW50X3ZhbCArIDEpIGRlc2MnLCAxMDAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVja19v cmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2Vs ZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBh cyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCArIDEpIGxp bWl0IDEwMCcsIDEwMCwgZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRf Y2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJy aW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsICsgMSkgZGVzYyBsaW1pdCAxMDAn LCAxMDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3Jk ZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90 ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsICsgMSkgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAx MDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVy aW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVz dCBvcmRlciBieSAoYmlnaW50X3ZhbCArIDEpIGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAn LCAxMDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCistLSBtaXNtYXRjaGluZyBleHByZXNzaW9u CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCAr IDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsIC0g MSknLCAxMDAwLCBmYWxzZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90IGZvdW5kCitDT05U RVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcodGV4dCxp bnRlZ2VyLGJvb2xlYW4pIGxpbmUgMzEgYXQgUkFJU0UKK3NlbGVjdCBicmluc29ydF9jaGVj a19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9z b3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgLSAxKSBkZXNjJywgMTAwMCwgdHJ1ZSk7 CitFUlJPUjogIEJSSU4gU29ydDogbm90IGZvdW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVu Y3Rpb24gYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxp bmUgMzEgYXQgUkFJU0UKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0 IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkg KGJpZ2ludF92YWwgLSAxKSBsaW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKK0VSUk9SOiAgQlJJ TiBTb3J0OiBub3QgZm91bmQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29y dF9jaGVja19vcmRlcmluZyh0ZXh0LGludGVnZXIsYm9vbGVhbikgbGluZSAzMSBhdCBSQUlT RQorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwg KyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCAt IDEpIGRlc2MgbGltaXQgMTAwJywgMTAwLCB0cnVlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBu b3QgZm91bmQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19v cmRlcmluZyh0ZXh0LGludGVnZXIsYm9vbGVhbikgbGluZSAzMSBhdCBSQUlTRQorc2VsZWN0 IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2 YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCAtIDEpIGxpbWl0 IDEwMCBvZmZzZXQgMTAwJywgMTAwLCBmYWxzZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90 IGZvdW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3Jk ZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMzEgYXQgUkFJU0UKK3NlbGVjdCBi cmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFs IGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgLSAxKSBkZXNjIGxp bWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCB0cnVlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBu b3QgZm91bmQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19v cmRlcmluZyh0ZXh0LGludGVnZXIsYm9vbGVhbikgbGluZSAzMSBhdCBSQUlTRQorIAorLS0g bWF0Y2hpbmcgZXhwcmVzc2lvbgorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdz ZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBv cmRlciBieSAoJyd4JycgfHwgdGV4dF92YWwpJywgMTAwMCwgZmFsc2UpOworIGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93 KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwg dGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3gnJyB8 fCB0ZXh0X3ZhbCkgZGVzYycsIDEwMDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVy aW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3Qg YnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFz IHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkg bGltaXQgMTAwJywgMTAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29y dF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZy b20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneCcnIHx8IHRleHRfdmFsKSBkZXNjIGxp bWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9j aGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20g YnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneCcnIHx8IHRleHRfdmFsKSBsaW1pdCAxMDAg b2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNv cnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBm cm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgZGVzYyBs aW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3Jk ZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKKy0tIG1p c21hdGNoaW5nIGV4cHJlc3Npb24KK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygn c2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qg b3JkZXIgYnkgKCcneScnIHx8IHRleHRfdmFsKScsIDEwMDAsIGZhbHNlKTsKK0VSUk9SOiAg QlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmlu c29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGludGVnZXIsYm9vbGVhbikgbGluZSAzMSBhdCBS QUlTRQorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8 IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoJyd5Jycg fHwgdGV4dF92YWwpIGRlc2MnLCAxMDAwLCB0cnVlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBu b3QgZm91bmQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19v cmRlcmluZyh0ZXh0LGludGVnZXIsYm9vbGVhbikgbGluZSAzMSBhdCBSQUlTRQorc2VsZWN0 IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBh cyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoJyd5JycgfHwgdGV4dF92YWwp IGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3Vu ZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5n KHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDMxIGF0IFJBSVNFCitzZWxlY3QgYnJpbnNv cnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBm cm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3knJyB8fCB0ZXh0X3ZhbCkgZGVzYyBs aW1pdCAxMDAnLCAxMDAsIHRydWUpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAor Q09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHRl eHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDMxIGF0IFJBSVNFCitzZWxlY3QgYnJpbnNvcnRf Y2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9t IGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3knJyB8fCB0ZXh0X3ZhbCkgbGltaXQgMTAw IG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91 bmQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmlu Zyh0ZXh0LGludGVnZXIsYm9vbGVhbikgbGluZSAzMSBhdCBSQUlTRQorc2VsZWN0IGJyaW5z b3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwg ZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoJyd5JycgfHwgdGV4dF92YWwpIGRlc2Mg bGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworRVJST1I6ICBCUklOIFNvcnQ6 IG5vdCBmb3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNr X29yZGVyaW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDMxIGF0IFJBSVNFCisgCist LSBtYXRjaGluZyBleHByZXNzaW9uCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmco J3NlbGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRl ciBieSAoaW5ldF92YWwgKyAxKScsIDEwMDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVja19v cmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2Vs ZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMg dmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsICsgMSkgZGVzYycs IDEwMDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3Jk ZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVz dCBvcmRlciBieSAoaW5ldF92YWwgKyAxKSBsaW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKKyBi cmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAK KygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGlu ZXRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRf dmFsICsgMSkgZGVzYyBsaW1pdCAxMDAnLCAxMDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNr X29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitz ZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAxKSBh cyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwgKyAxKSBsaW1p dCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVy aW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3Qg YnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2YWwg ZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwgKyAxKSBkZXNjIGxpbWl0 IDEwMCBvZmZzZXQgMTAwJywgMTAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmlu ZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworLS0gbWlzbWF0 Y2hpbmcgZXhwcmVzc2lvbgorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxl Y3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkg KGluZXRfdmFsIC0gMSknLCAxMDAwLCBmYWxzZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90 IGZvdW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3Jk ZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMzEgYXQgUkFJU0UKK3NlbGVjdCBi cmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBm cm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0X3ZhbCAtIDEpIGRlc2MnLCAxMDAw LCB0cnVlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRFWFQ6ICBQTC9w Z1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGludGVnZXIsYm9v bGVhbikgbGluZSAzMSBhdCBSQUlTRQorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5n KCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3Jk ZXIgYnkgKGluZXRfdmFsIC0gMSkgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7CitFUlJPUjog IEJSSU4gU29ydDogbm90IGZvdW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMzEgYXQg UkFJU0UKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbmV0X3Zh bCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0X3ZhbCAt IDEpIGRlc2MgbGltaXQgMTAwJywgMTAwLCB0cnVlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBu b3QgZm91bmQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19v cmRlcmluZyh0ZXh0LGludGVnZXIsYm9vbGVhbikgbGluZSAzMSBhdCBSQUlTRQorc2VsZWN0 IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFs IGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsIC0gMSkgbGltaXQgMTAw IG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91 bmQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmlu Zyh0ZXh0LGludGVnZXIsYm9vbGVhbikgbGluZSAzMSBhdCBSQUlTRQorc2VsZWN0IGJyaW5z b3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZyb20g YnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsIC0gMSkgZGVzYyBsaW1pdCAxMDAg b2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90IGZvdW5k CitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmco dGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMzEgYXQgUkFJU0UKKy0tIHNlbWktcmFuZG9t IGRhdGEgKHNlcXVlbnRpYWwgKyByYW5kb21uZXNzKQordHJ1bmNhdGUgdGFibGUgYnJpbl9z b3J0X3Rlc3Q7CitpbnNlcnQgaW50byBicmluX3NvcnRfdGVzdAorc2VsZWN0CisJaSArICgx MDAgKiByYW5kb20oKSk6OmludCwKKwktKGkgKyAoMTAwICogcmFuZG9tKCkpOjppbnQpLAkt LSBzYW1lIGFzIGludCwgYnV0IGF0IGxlYXN0IG9wcG9zaXRlCisJbHBhZCgoaSArICgxMDAg KiByYW5kb20oKSk6OmludCk6OnRleHQgfHwgbWQ1KGk6OnRleHQpLCA0MCwgJzAnKSwKKwkn MTAuMC4wLjAnOjppbmV0ICsgKGkgKyAxMDAgKiByYW5kb20oKTo6aW50KQorZnJvbSBnZW5l cmF0ZV9zZXJpZXMoMSwxMDAwKSBzKGkpOworcmVpbmRleCB0YWJsZSBicmluX3NvcnRfdGVz dDsKK3ZhY3V1bSBhbmFseXplIGJyaW5fc29ydF90ZXN0OworIAorLS0gbWF0Y2hpbmcgZXhw cmVzc2lvbgorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGludF92 YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW50X3ZhbCAr IDEpJywgMTAwMCwgZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hl Y2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29y dF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsICsgMSkgZGVzYycsIDEwMDAsIHRydWUpOworIGJy aW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAor KDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50 X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFs ICsgMSkgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJp bmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBi cmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsgMSkgYXMgdmFsIGZy b20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgKyAxKSBkZXNjIGxpbWl0IDEw MCcsIDEwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19v cmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rl c3Qgb3JkZXIgYnkgKGludF92YWwgKyAxKSBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwg ZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmco J3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVy IGJ5IChpbnRfdmFsICsgMSkgZGVzYyBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1 ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgCisoMSByb3cpCisKKy0tIG1pc21hdGNoaW5nIGV4cHJlc3Npb24KK3NlbGVjdCBi cmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsgMSkgYXMgdmFsIGZy b20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgLSAxKScsIDEwMDAsIGZhbHNl KTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBm dW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGludGVnZXIsYm9vbGVhbikg bGluZSAzMSBhdCBSQUlTRQorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxl Y3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAo aW50X3ZhbCAtIDEpIGRlc2MnLCAxMDAwLCB0cnVlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBu b3QgZm91bmQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19v cmRlcmluZyh0ZXh0LGludGVnZXIsYm9vbGVhbikgbGluZSAzMSBhdCBSQUlTRQorc2VsZWN0 IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwg ZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW50X3ZhbCAtIDEpIGxpbWl0IDEwMCcs IDEwMCwgZmFsc2UpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAorQ09OVEVYVDog IFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHRleHQsaW50ZWdl cixib29sZWFuKSBsaW5lIDMxIGF0IFJBSVNFCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3Jk ZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0 IG9yZGVyIGJ5IChpbnRfdmFsIC0gMSkgZGVzYyBsaW1pdCAxMDAnLCAxMDAsIHRydWUpOwor RVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0 aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5l IDMxIGF0IFJBSVNFCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAo aW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbnRf dmFsIC0gMSkgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKK0VSUk9SOiAg QlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmlu c29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGludGVnZXIsYm9vbGVhbikgbGluZSAzMSBhdCBS QUlTRQorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGludF92YWwg KyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW50X3ZhbCAtIDEp IGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworRVJST1I6ICBCUklO IFNvcnQ6IG5vdCBmb3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDMxIGF0IFJBSVNF CisgCistLSBtYXRjaGluZyBleHByZXNzaW9uCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3Jk ZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90 ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsICsgMSknLCAxMDAwLCBmYWxzZSk7CisgYnJpbnNv cnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSBy b3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRf dmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92 YWwgKyAxKSBkZXNjJywgMTAwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmlu c29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZy b20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgKyAxKSBsaW1pdCAxMDAn LCAxMDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRf dGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCArIDEpIGRlc2MgbGltaXQgMTAwJywgMTAwLCB0 cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdz ZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRl ciBieSAoYmlnaW50X3ZhbCArIDEpIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCBmYWxz ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2Vs ZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIg YnkgKGJpZ2ludF92YWwgKyAxKSBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCB0 cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAKKygxIHJvdykKKworLS0gbWlzbWF0Y2hpbmcgZXhwcmVzc2lvbgorc2VsZWN0 IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2 YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCAtIDEpJywgMTAw MCwgZmFsc2UpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAorQ09OVEVYVDogIFBM L3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHRleHQsaW50ZWdlcixi b29sZWFuKSBsaW5lIDMxIGF0IFJBSVNFCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJp bmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0 IG9yZGVyIGJ5IChiaWdpbnRfdmFsIC0gMSkgZGVzYycsIDEwMDAsIHRydWUpOworRVJST1I6 ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJy aW5zb3J0X2NoZWNrX29yZGVyaW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDMxIGF0 IFJBSVNFCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50 X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRf dmFsIC0gMSkgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7CitFUlJPUjogIEJSSU4gU29ydDog bm90IGZvdW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tf b3JkZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMzEgYXQgUkFJU0UKK3NlbGVj dCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMg dmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgLSAxKSBkZXNj IGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90IGZvdW5k CitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmco dGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMzEgYXQgUkFJU0UKK3NlbGVjdCBicmluc29y dF9jaGVja19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20g YnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgLSAxKSBsaW1pdCAxMDAgb2Zm c2V0IDEwMCcsIDEwMCwgZmFsc2UpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAor Q09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHRl eHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDMxIGF0IFJBSVNFCitzZWxlY3QgYnJpbnNvcnRf Y2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJy aW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsIC0gMSkgZGVzYyBsaW1pdCAxMDAg b2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90IGZvdW5k CitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmco dGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMzEgYXQgUkFJU0UKKyAKKy0tIG1hdGNoaW5n IGV4cHJlc3Npb24KK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgn J3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkg KCcneCcnIHx8IHRleHRfdmFsKScsIDEwMDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVja19v cmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2Vs ZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFs KSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoJyd4JycgfHwgdGV4dF92 YWwpIGRlc2MnLCAxMDAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJv bSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoJyd4JycgfHwgdGV4dF92YWwpIGxpbWl0IDEw MCcsIDEwMCwgZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tf b3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5f c29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgZGVzYyBsaW1pdCAxMDAn LCAxMDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3Jk ZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29y dF90ZXN0IG9yZGVyIGJ5ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgbGltaXQgMTAwIG9mZnNldCAx MDAnLCAxMDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNr X29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBicmlu X3NvcnRfdGVzdCBvcmRlciBieSAoJyd4JycgfHwgdGV4dF92YWwpIGRlc2MgbGltaXQgMTAw IG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCistLSBtaXNtYXRjaGlu ZyBleHByZXNzaW9uCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAo Jyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5 ICgnJ3knJyB8fCB0ZXh0X3ZhbCknLCAxMDAwLCBmYWxzZSk7CitFUlJPUjogIEJSSU4gU29y dDogbm90IGZvdW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hl Y2tfb3JkZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMzEgYXQgUkFJU0UKK3Nl bGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3Zh bCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneScnIHx8IHRleHRf dmFsKSBkZXNjJywgMTAwMCwgdHJ1ZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90IGZvdW5k CitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmco dGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMzEgYXQgUkFJU0UKK3NlbGVjdCBicmluc29y dF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZy b20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneScnIHx8IHRleHRfdmFsKSBsaW1pdCAx MDAnLCAxMDAsIGZhbHNlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRF WFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGlu dGVnZXIsYm9vbGVhbikgbGluZSAzMSBhdCBSQUlTRQorc2VsZWN0IGJyaW5zb3J0X2NoZWNr X29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBicmlu X3NvcnRfdGVzdCBvcmRlciBieSAoJyd5JycgfHwgdGV4dF92YWwpIGRlc2MgbGltaXQgMTAw JywgMTAwLCB0cnVlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRFWFQ6 ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGludGVn ZXIsYm9vbGVhbikgbGluZSAzMSBhdCBSQUlTRQorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBicmluX3Nv cnRfdGVzdCBvcmRlciBieSAoJyd5JycgfHwgdGV4dF92YWwpIGxpbWl0IDEwMCBvZmZzZXQg MTAwJywgMTAwLCBmYWxzZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90IGZvdW5kCitDT05U RVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcodGV4dCxp bnRlZ2VyLGJvb2xlYW4pIGxpbmUgMzEgYXQgUkFJU0UKK3NlbGVjdCBicmluc29ydF9jaGVj a19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJp bl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneScnIHx8IHRleHRfdmFsKSBkZXNjIGxpbWl0IDEw MCBvZmZzZXQgMTAwJywgMTAwLCB0cnVlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91 bmQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmlu Zyh0ZXh0LGludGVnZXIsYm9vbGVhbikgbGluZSAzMSBhdCBSQUlTRQorIAorLS0gbWF0Y2hp bmcgZXhwcmVzc2lvbgorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3Qg KGluZXRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGlu ZXRfdmFsICsgMSknLCAxMDAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmlu c29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9t IGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0X3ZhbCArIDEpIGRlc2MnLCAxMDAwLCB0 cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdz ZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIg YnkgKGluZXRfdmFsICsgMSkgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7CisgYnJpbnNvcnRf Y2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cp CisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbmV0X3ZhbCAr IDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0X3ZhbCArIDEp IGRlc2MgbGltaXQgMTAwJywgMTAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmlu ZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJy aW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZy b20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsICsgMSkgbGltaXQgMTAwIG9m ZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJp bl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsICsgMSkgZGVzYyBsaW1pdCAxMDAgb2Zm c2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKKy0tIG1pc21hdGNoaW5nIGV4 cHJlc3Npb24KK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbmV0 X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0X3Zh bCAtIDEpJywgMTAwMCwgZmFsc2UpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAor Q09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHRl eHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDMxIGF0IFJBSVNFCitzZWxlY3QgYnJpbnNvcnRf Y2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmlu X3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwgLSAxKSBkZXNjJywgMTAwMCwgdHJ1ZSk7 CitFUlJPUjogIEJSSU4gU29ydDogbm90IGZvdW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVu Y3Rpb24gYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxp bmUgMzEgYXQgUkFJU0UKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0 IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChp bmV0X3ZhbCAtIDEpIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworRVJST1I6ICBCUklOIFNv cnQ6IG5vdCBmb3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2No ZWNrX29yZGVyaW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDMxIGF0IFJBSVNFCitz ZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAxKSBh cyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwgLSAxKSBkZXNj IGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90IGZvdW5k CitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmco dGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMzEgYXQgUkFJU0UKK3NlbGVjdCBicmluc29y dF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJy aW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0X3ZhbCAtIDEpIGxpbWl0IDEwMCBvZmZzZXQg MTAwJywgMTAwLCBmYWxzZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90IGZvdW5kCitDT05U RVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcodGV4dCxp bnRlZ2VyLGJvb2xlYW4pIGxpbmUgMzEgYXQgUkFJU0UKK3NlbGVjdCBicmluc29ydF9jaGVj a19vcmRlcmluZygnc2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29y dF90ZXN0IG9yZGVyIGJ5IChpbmV0X3ZhbCAtIDEpIGRlc2MgbGltaXQgMTAwIG9mZnNldCAx MDAnLCAxMDAsIHRydWUpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAorQ09OVEVY VDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHRleHQsaW50 ZWdlcixib29sZWFuKSBsaW5lIDMxIGF0IFJBSVNFCistLSByYW5kb20gZGF0YQordHJ1bmNh dGUgdGFibGUgYnJpbl9zb3J0X3Rlc3Q7CitpbnNlcnQgaW50byBicmluX3NvcnRfdGVzdAor c2VsZWN0CisJKDEwMDAgKiByYW5kb20oKSk6OmludCwKKwktKCgxMDAwICogcmFuZG9tKCkp OjppbnQpLAktLSBzYW1lIGFzIGludCwgYnV0IGF0IGxlYXN0IG9wcG9zaXRlCisJbHBhZCgo KDEwMDAgKiByYW5kb20oKSk6OmludCk6OnRleHQgfHwgbWQ1KGk6OnRleHQpLCA0MCwgJzAn KSwKKwknMTAuMC4wLjAnOjppbmV0ICsgKDEwMDAgKiByYW5kb20oKTo6aW50KQorZnJvbSBn ZW5lcmF0ZV9zZXJpZXMoMSwxMDAwKSBzKGkpOworcmVpbmRleCB0YWJsZSBicmluX3NvcnRf dGVzdDsKK3ZhY3V1bSBhbmFseXplIGJyaW5fc29ydF90ZXN0OworIAorLS0gbWF0Y2hpbmcg ZXhwcmVzc2lvbgorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGlu dF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW50X3Zh bCArIDEpJywgMTAwMCwgZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRf Y2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5f c29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsICsgMSkgZGVzYycsIDEwMDAsIHRydWUpOwor IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAo aW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbnRf dmFsICsgMSkgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3Jk ZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVj dCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsgMSkgYXMgdmFs IGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgKyAxKSBkZXNjIGxpbWl0 IDEwMCcsIDEwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVj a19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0 X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgKyAxKSBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEw MCwgZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJp bmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9y ZGVyIGJ5IChpbnRfdmFsICsgMSkgZGVzYyBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwg dHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgCisoMSByb3cpCisKKy0tIG1pc21hdGNoaW5nIGV4cHJlc3Npb24KK3NlbGVj dCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsgMSkgYXMgdmFs IGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgLSAxKScsIDEwMDAsIGZh bHNlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRFWFQ6ICBQTC9wZ1NR TCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGludGVnZXIsYm9vbGVh bikgbGluZSAzMSBhdCBSQUlTRQorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdz ZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBi eSAoaW50X3ZhbCAtIDEpIGRlc2MnLCAxMDAwLCB0cnVlKTsKK0VSUk9SOiAgQlJJTiBTb3J0 OiBub3QgZm91bmQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVj a19vcmRlcmluZyh0ZXh0LGludGVnZXIsYm9vbGVhbikgbGluZSAzMSBhdCBSQUlTRQorc2Vs ZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGludF92YWwgKyAxKSBhcyB2 YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW50X3ZhbCAtIDEpIGxpbWl0IDEw MCcsIDEwMCwgZmFsc2UpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAorQ09OVEVY VDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHRleHQsaW50 ZWdlcixib29sZWFuKSBsaW5lIDMxIGF0IFJBSVNFCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tf b3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90 ZXN0IG9yZGVyIGJ5IChpbnRfdmFsIC0gMSkgZGVzYyBsaW1pdCAxMDAnLCAxMDAsIHRydWUp OworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1 bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBs aW5lIDMxIGF0IFJBSVNFCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVj dCAoaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChp bnRfdmFsIC0gMSkgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKK0VSUk9S OiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBi cmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGludGVnZXIsYm9vbGVhbikgbGluZSAzMSBh dCBSQUlTRQorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGludF92 YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW50X3ZhbCAt IDEpIGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworRVJST1I6ICBC UklOIFNvcnQ6IG5vdCBmb3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5z b3J0X2NoZWNrX29yZGVyaW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDMxIGF0IFJB SVNFCisgCistLSBtYXRjaGluZyBleHByZXNzaW9uCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tf b3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29y dF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsICsgMSknLCAxMDAwLCBmYWxzZSk7CisgYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCiso MSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChiaWdp bnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2lu dF92YWwgKyAxKSBkZXNjJywgMTAwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJp bmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBi cmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFs IGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgKyAxKSBsaW1pdCAx MDAnLCAxMDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNr X29yZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3Nv cnRfdGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCArIDEpIGRlc2MgbGltaXQgMTAwJywgMTAw LCB0cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5n KCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBv cmRlciBieSAoYmlnaW50X3ZhbCArIDEpIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCBm YWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygn c2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3Jk ZXIgYnkgKGJpZ2ludF92YWwgKyAxKSBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAw LCB0cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyAKKygxIHJvdykKKworLS0gbWlzbWF0Y2hpbmcgZXhwcmVzc2lvbgorc2Vs ZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBh cyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCAtIDEpJywg MTAwMCwgZmFsc2UpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAorQ09OVEVYVDog IFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHRleHQsaW50ZWdl cixib29sZWFuKSBsaW5lIDMxIGF0IFJBSVNFCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3Jk ZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90 ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsIC0gMSkgZGVzYycsIDEwMDAsIHRydWUpOworRVJS T1I6ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9u IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDMx IGF0IFJBSVNFCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmln aW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdp bnRfdmFsIC0gMSkgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7CitFUlJPUjogIEJSSU4gU29y dDogbm90IGZvdW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hl Y2tfb3JkZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMzEgYXQgUkFJU0UKK3Nl bGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsgMSkg YXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgLSAxKSBk ZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90IGZv dW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3JkZXJp bmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMzEgYXQgUkFJU0UKK3NlbGVjdCBicmlu c29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZy b20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgLSAxKSBsaW1pdCAxMDAg b2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2UpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3Vu ZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5n KHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDMxIGF0IFJBSVNFCitzZWxlY3QgYnJpbnNv cnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9t IGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsIC0gMSkgZGVzYyBsaW1pdCAx MDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90IGZv dW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3JkZXJp bmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMzEgYXQgUkFJU0UKKyAKKy0tIG1hdGNo aW5nIGV4cHJlc3Npb24KK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0 ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIg YnkgKCcneCcnIHx8IHRleHRfdmFsKScsIDEwMDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVj a19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKwor c2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRf dmFsKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoJyd4JycgfHwgdGV4 dF92YWwpIGRlc2MnLCAxMDAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5z b3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwg ZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoJyd4JycgfHwgdGV4dF92YWwpIGxpbWl0 IDEwMCcsIDEwMCwgZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hl Y2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJy aW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgZGVzYyBsaW1pdCAx MDAnLCAxMDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tf b3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5f c29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgbGltaXQgMTAwIG9mZnNl dCAxMDAnLCAxMDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2No ZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBi cmluX3NvcnRfdGVzdCBvcmRlciBieSAoJyd4JycgfHwgdGV4dF92YWwpIGRlc2MgbGltaXQg MTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5n IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCistLSBtaXNtYXRj aGluZyBleHByZXNzaW9uCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVj dCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVy IGJ5ICgnJ3knJyB8fCB0ZXh0X3ZhbCknLCAxMDAwLCBmYWxzZSk7CitFUlJPUjogIEJSSU4g U29ydDogbm90IGZvdW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRf Y2hlY2tfb3JkZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMzEgYXQgUkFJU0UK K3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0 X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneScnIHx8IHRl eHRfdmFsKSBkZXNjJywgMTAwMCwgdHJ1ZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90IGZv dW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3JkZXJp bmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMzEgYXQgUkFJU0UKK3NlbGVjdCBicmlu c29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFs IGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneScnIHx8IHRleHRfdmFsKSBsaW1p dCAxMDAnLCAxMDAsIGZhbHNlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NP TlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0 LGludGVnZXIsYm9vbGVhbikgbGluZSAzMSBhdCBSQUlTRQorc2VsZWN0IGJyaW5zb3J0X2No ZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBi cmluX3NvcnRfdGVzdCBvcmRlciBieSAoJyd5JycgfHwgdGV4dF92YWwpIGRlc2MgbGltaXQg MTAwJywgMTAwLCB0cnVlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRF WFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGlu dGVnZXIsYm9vbGVhbikgbGluZSAzMSBhdCBSQUlTRQorc2VsZWN0IGJyaW5zb3J0X2NoZWNr X29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBicmlu X3NvcnRfdGVzdCBvcmRlciBieSAoJyd5JycgfHwgdGV4dF92YWwpIGxpbWl0IDEwMCBvZmZz ZXQgMTAwJywgMTAwLCBmYWxzZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90IGZvdW5kCitD T05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcodGV4 dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMzEgYXQgUkFJU0UKK3NlbGVjdCBicmluc29ydF9j aGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20g YnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneScnIHx8IHRleHRfdmFsKSBkZXNjIGxpbWl0 IDEwMCBvZmZzZXQgMTAwJywgMTAwLCB0cnVlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3Qg Zm91bmQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRl cmluZyh0ZXh0LGludGVnZXIsYm9vbGVhbikgbGluZSAzMSBhdCBSQUlTRQorIAorLS0gbWF0 Y2hpbmcgZXhwcmVzc2lvbgorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxl Y3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkg KGluZXRfdmFsICsgMSknLCAxMDAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJp bmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBi cmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBm cm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0X3ZhbCArIDEpIGRlc2MnLCAxMDAw LCB0cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5n KCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3Jk ZXIgYnkgKGluZXRfdmFsICsgMSkgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7CisgYnJpbnNv cnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSBy b3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbmV0X3Zh bCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0X3ZhbCAr IDEpIGRlc2MgbGltaXQgMTAwJywgMTAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRl cmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0 IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFs IGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsICsgMSkgbGltaXQgMTAw IG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5z b3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZyb20g YnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsICsgMSkgZGVzYyBsaW1pdCAxMDAg b2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKKy0tIG1pc21hdGNoaW5n IGV4cHJlc3Npb24KK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChp bmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0 X3ZhbCAtIDEpJywgMTAwMCwgZmFsc2UpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3Vu ZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5n KHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDMxIGF0IFJBSVNFCitzZWxlY3QgYnJpbnNv cnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2YWwgZnJvbSBi cmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwgLSAxKSBkZXNjJywgMTAwMCwgdHJ1 ZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90IGZvdW5kCitDT05URVhUOiAgUEwvcGdTUUwg ZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4p IGxpbmUgMzEgYXQgUkFJU0UKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2Vs ZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5 IChpbmV0X3ZhbCAtIDEpIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworRVJST1I6ICBCUklO IFNvcnQ6IG5vdCBmb3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDMxIGF0IFJBSVNF CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAx KSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwgLSAxKSBk ZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90IGZv dW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3JkZXJp bmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMzEgYXQgUkFJU0UKK3NlbGVjdCBicmlu c29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9t IGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0X3ZhbCAtIDEpIGxpbWl0IDEwMCBvZmZz ZXQgMTAwJywgMTAwLCBmYWxzZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90IGZvdW5kCitD T05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcodGV4 dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMzEgYXQgUkFJU0UKK3NlbGVjdCBicmluc29ydF9j aGVja19vcmRlcmluZygnc2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5f c29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0X3ZhbCAtIDEpIGRlc2MgbGltaXQgMTAwIG9mZnNl dCAxMDAnLCAxMDAsIHRydWUpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAorQ09O VEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHRleHQs aW50ZWdlcixib29sZWFuKSBsaW5lIDMxIGF0IFJBSVNFCitkcm9wIHRhYmxlIGJyaW5fc29y dF90ZXN0OwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9icmluX3Nv cnRfbXVsdGkub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9icmluX3NvcnRfbXVs dGkub3V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjIyZmE4MzMx ZDMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2JyaW5f c29ydF9tdWx0aS5vdXQKQEAgLTAsMCArMSw1NDUgQEAKKy0tIGZ1bmN0aW9uIHRvIHZlcmlm eSB2YXJpb3VzIHNvcnQtcmVsYXRlZCBkYXRhICh0b3RhbCByb3dzLCBvcmRlcmluZykKK2Ny ZWF0ZSBvciByZXBsYWNlIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHBfc3Fs IHRleHQsIHBfcm93c19leHBlY3RlZCBpbnQsIHBfZGVzYyBib29sZWFuKSByZXR1cm5zIHZv aWQgYXMgJCQKK2RlY2xhcmUKKyAgICB2X2N1cnMgcmVmY3Vyc29yOworICAgIHZfcm93IHJl Y29yZDsKKyAgICB2X3ByZXYgcmVjb3JkOworICAgIHZfYnJpbl9zb3J0X2ZvdW5kIGJvb2wg Oj0gZmFsc2U7CisgICAgdl9jb3VudCBpbnQgOj0gMDsKK2JlZ2luCisKKyAgICAtLSBuZWVk ZWQgYmVjYXVzZSB0aGUgcF9zcWwgcXVlcnkgaGFzIGRpZmZlcmVudCBkYXRhIHR5cGVzCisg ICAgZXhlY3V0ZSAnZGlzY2FyZCBwbGFucyc7CisKKyAgICBPUEVOIHZfY3VycyBOTyBTQ1JP TEwgRk9SIEVYRUNVVEUgZm9ybWF0KCdleHBsYWluICVzJywgcF9zcWwpOworCisgICAgTE9P UAorICAgICAgICBGRVRDSCB2X2N1cnMgSU5UTyB2X3JvdzsKKworICAgICAgICBJRiBOT1Qg Rk9VTkQgVEhFTgorICAgICAgICAgICAgRVhJVDsKKyAgICAgICAgRU5EIElGOworCisgICAg ICAgIElGIHZfcm93Ojp0ZXh0IExJS0UgJyVCUklOIFNvcnQlJyBUSEVOCisgICAgICAgICAg ICB2X2JyaW5fc29ydF9mb3VuZCA6PSB0cnVlOworICAgICAgICAgICAgRVhJVDsKKyAgICAg ICAgRU5EIElGOworICAgIEVORCBMT09QOworCisgICAgQ0xPU0Ugdl9jdXJzOworCisgICAg SUYgTk9UIHZfYnJpbl9zb3J0X2ZvdW5kIFRIRU4KKyAgICAgICAgUkFJU0UgRVhDRVBUSU9O ICdCUklOIFNvcnQ6IG5vdCBmb3VuZCc7CisgICAgRU5EIElGOworCisgICAgT1BFTiB2X2N1 cnMgTk8gU0NST0xMIEZPUiBFWEVDVVRFIGZvcm1hdChwX3NxbCk7CisKKyAgICBMT09QCisg ICAgICAgIEZFVENIIHZfY3VycyBJTlRPIHZfcm93OworCisgICAgICAgIElGIE5PVCBGT1VO RCBUSEVOCisgICAgICAgICAgICBFWElUOworICAgICAgICBFTkQgSUY7CisKKyAgICAgICAg SUYgdl9wcmV2IElTIE5PVCBOVUxMIFRIRU4KKyAgICAgICAgICAgIElGIHZfcHJldi52YWwg PiB2X3Jvdy52YWwgQU5EIE5PVCBwX2Rlc2MgVEhFTgorICAgICAgICAgICAgICAgIFJBSVNF IEVYQ0VQVElPTiAnb3JkZXJpbmcgbWlzbWF0Y2ggJSA+ICUgKGFzYyknLCB2X3ByZXYudmFs LCB2X3Jvdy52YWw7CisgICAgICAgICAgICBFTkQgSUY7CisgICAgICAgICAgICBJRiB2X3By ZXYudmFsIDwgdl9yb3cudmFsIEFORCBwX2Rlc2MgVEhFTgorICAgICAgICAgICAgICAgIFJB SVNFIEVYQ0VQVElPTiAnb3JkZXJpbmcgbWlzbWF0Y2ggJSA8ICUgKGRlc2MpJywgdl9wcmV2 LnZhbCwgdl9yb3cudmFsOworICAgICAgICAgICAgRU5EIElGOworICAgICAgICBFTkQgSUY7 CisKKyAgICAgICAgdl9wcmV2IDo9IHZfcm93OworICAgICAgICB2X2NvdW50IDo9IHZfY291 bnQgKyAxOworICAgIEVORCBMT09QOworCisgICAgQ0xPU0Ugdl9jdXJzOworCisgICAgSUYg dl9jb3VudCAhPSBwX3Jvd3NfZXhwZWN0ZWQgVEhFTgorICAgICAgICBSQUlTRSBFWENFUFRJ T04gJ2NvdW50IG1pc21hdGNoOiAlICE9ICUnLCB2X2NvdW50LCBwX3Jvd3NfZXhwZWN0ZWQ7 CisgICAgRU5EIElGOworCitlbmQ7CiskJCBsYW5ndWFnZSBwbHBnc3FsOworY3JlYXRlIHRh YmxlIGJyaW5fc29ydF90ZXN0IChpbnRfdmFsIGludCwgYmlnaW50X3ZhbCBiaWdpbnQsIHRl eHRfdmFsIHRleHQsIGluZXRfdmFsIGluZXQpIHdpdGggKGZpbGxmYWN0b3I9MTApOworLS0g c2VxdWVudGlhbCB2YWx1ZXMKK2luc2VydCBpbnRvIGJyaW5fc29ydF90ZXN0CitzZWxlY3QK KwlpLAorCS1pLAktLSBzYW1lIGFzIGludCwgYnV0IGF0IGxlYXN0IG9wcG9zaXRlCisJbHBh ZChpOjp0ZXh0IHx8IG1kNShpOjp0ZXh0KSwgNDAsICcwJyksCisJJzEwLjAuMC4wJzo6aW5l dCArIGkKK2Zyb20gZ2VuZXJhdGVfc2VyaWVzKDEsMTAwMCkgcyhpKTsKKy0tIGNyZWF0ZSBi cmluIGluZGV4ZXMgb24gaW5kaXZpZHVhbCBjb2x1bW5zCitjcmVhdGUgaW5kZXggYnJpbl9z b3J0X3Rlc3RfbXVsdGlfaWR4IG9uIGJyaW5fc29ydF90ZXN0IHVzaW5nIGJyaW4gKGludF92 YWwsIGJpZ2ludF92YWwsIHRleHRfdmFsLCBpbmV0X3ZhbCBpbmV0X21pbm1heF9vcHMpIHdp dGggKHBhZ2VzX3Blcl9yYW5nZT0xKTsKKy0tIAordmFjdXVtIGFuYWx5emUgYnJpbl9zb3J0 X3Rlc3Q7CitzZXQgZW5hYmxlX3NlcXNjYW4gPSBvZmY7CisgCitzZWxlY3QgYnJpbnNvcnRf Y2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90 ZXN0IG9yZGVyIGJ5IGludF92YWwnLCAxMDAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tf b3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3Nl bGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGludF92YWwgYXMgdmFsIGZy b20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW50X3ZhbCBkZXNjJywgMTAwMCwgdHJ1ZSk7 CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0 IGludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW50X3ZhbCBs aW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgaW50X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRf dGVzdCBvcmRlciBieSBpbnRfdmFsIGRlc2MgbGltaXQgMTAwJywgMTAwLCB0cnVlKTsKKyBi cmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAK KygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgaW50 X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBpbnRfdmFsIGxpbWl0 IDEwMCBvZmZzZXQgMTAwJywgMTAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJp bmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBi cmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGludF92YWwgYXMgdmFsIGZyb20gYnJp bl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW50X3ZhbCBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAw JywgMTAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworIAorc2VsZWN0IGJyaW5zb3J0X2NoZWNr X29yZGVyaW5nKCdzZWxlY3QgYmlnaW50X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVz dCBvcmRlciBieSBiaWdpbnRfdmFsJywgMTAwMCwgZmFsc2UpOworIGJyaW5zb3J0X2NoZWNr X29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitz ZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBiaWdpbnRfdmFsIGFzIHZh bCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGJpZ2ludF92YWwgZGVzYycsIDEwMDAs IHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmco J3NlbGVjdCBiaWdpbnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5 IGJpZ2ludF92YWwgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tf b3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3Nl bGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGJpZ2ludF92YWwgYXMgdmFs IGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgYmlnaW50X3ZhbCBkZXNjIGxpbWl0IDEw MCcsIDEwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19v cmRlcmluZygnc2VsZWN0IGJpZ2ludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qg b3JkZXIgYnkgYmlnaW50X3ZhbCBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2Up OworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVj dCBiaWdpbnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGJpZ2lu dF92YWwgZGVzYyBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CisgYnJpbnNv cnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSBy b3cpCisKKyAKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGluZXRf dmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGluZXRfdmFsJywgMTAw MCwgZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJp bmcoJ3NlbGVjdCBpbmV0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBi eSBpbmV0X3ZhbCBkZXNjJywgMTAwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJp bmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBi cmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGluZXRfdmFsIGFzIHZhbCBmcm9tIGJy aW5fc29ydF90ZXN0IG9yZGVyIGJ5IGluZXRfdmFsIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2Up OworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVj dCBpbmV0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBpbmV0X3Zh bCBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJp bmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBi cmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGluZXRfdmFsIGFzIHZhbCBmcm9tIGJy aW5fc29ydF90ZXN0IG9yZGVyIGJ5IGluZXRfdmFsIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywg MTAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRl cmluZygnc2VsZWN0IGluZXRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVy IGJ5IGluZXRfdmFsIGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOwor IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IAorKDEgcm93KQorCisgCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVj dCB0ZXh0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSB0ZXh0X3Zh bCcsIDEwMDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNr X29yZGVyaW5nKCdzZWxlY3QgdGV4dF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qg b3JkZXIgYnkgdGV4dF92YWwgZGVzYycsIDEwMDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNr X29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitz ZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCB0ZXh0X3ZhbCBhcyB2YWwg ZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSB0ZXh0X3ZhbCBsaW1pdCAxMDAnLCAxMDAs IGZhbHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5n KCdzZWxlY3QgdGV4dF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkg dGV4dF92YWwgZGVzYyBsaW1pdCAxMDAnLCAxMDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNr X29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitz ZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCB0ZXh0X3ZhbCBhcyB2YWwg ZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSB0ZXh0X3ZhbCBsaW1pdCAxMDAgb2Zmc2V0 IDEwMCcsIDEwMCwgZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hl Y2tfb3JkZXJpbmcoJ3NlbGVjdCB0ZXh0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVz dCBvcmRlciBieSB0ZXh0X3ZhbCBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCB0 cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAKKygxIHJvdykKKworLS0gc2VtaS1yYW5kb20gZGF0YSAoc2VxdWVudGlhbCAr IHJhbmRvbW5lc3MpCit0cnVuY2F0ZSB0YWJsZSBicmluX3NvcnRfdGVzdDsKK2luc2VydCBp bnRvIGJyaW5fc29ydF90ZXN0CitzZWxlY3QKKwlpICsgKDEwMCAqIHJhbmRvbSgpKTo6aW50 LAorCS0oaSArICgxMDAgKiByYW5kb20oKSk6OmludCksCS0tIHNhbWUgYXMgaW50LCBidXQg YXQgbGVhc3Qgb3Bwb3NpdGUKKwlscGFkKChpICsgKDEwMCAqIHJhbmRvbSgpKTo6aW50KTo6 dGV4dCB8fCBtZDUoaTo6dGV4dCksIDQwLCAnMCcpLAorCScxMC4wLjAuMCc6OmluZXQgKyAo aSArIDEwMCAqIHJhbmRvbSgpOjppbnQpCitmcm9tIGdlbmVyYXRlX3NlcmllcygxLDEwMDAp IHMoaSk7CityZWluZGV4IHRhYmxlIGJyaW5fc29ydF90ZXN0OwordmFjdXVtIGFuYWx5emUg YnJpbl9zb3J0X3Rlc3Q7CisgCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3Nl bGVjdCBpbnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGludF92 YWwnLCAxMDAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVj a19vcmRlcmluZygnc2VsZWN0IGludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qg b3JkZXIgYnkgaW50X3ZhbCBkZXNjJywgMTAwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tf b3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3Nl bGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGludF92YWwgYXMgdmFsIGZy b20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW50X3ZhbCBsaW1pdCAxMDAnLCAxMDAsIGZh bHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdz ZWxlY3QgaW50X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBpbnRf dmFsIGRlc2MgbGltaXQgMTAwJywgMTAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRl cmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0 IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgaW50X3ZhbCBhcyB2YWwgZnJvbSBi cmluX3NvcnRfdGVzdCBvcmRlciBieSBpbnRfdmFsIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywg MTAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRl cmluZygnc2VsZWN0IGludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIg YnkgaW50X3ZhbCBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCB0cnVlKTsKKyBi cmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAK KygxIHJvdykKKworIAorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3Qg YmlnaW50X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBiaWdpbnRf dmFsJywgMTAwMCwgZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hl Y2tfb3JkZXJpbmcoJ3NlbGVjdCBiaWdpbnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90 ZXN0IG9yZGVyIGJ5IGJpZ2ludF92YWwgZGVzYycsIDEwMDAsIHRydWUpOworIGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93 KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBiaWdpbnRfdmFs IGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGJpZ2ludF92YWwgbGltaXQg MTAwJywgMTAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVj a19vcmRlcmluZygnc2VsZWN0IGJpZ2ludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rl c3Qgb3JkZXIgYnkgYmlnaW50X3ZhbCBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7Cisg YnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg CisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGJp Z2ludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgYmlnaW50X3Zh bCBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2UpOworIGJyaW5zb3J0X2NoZWNr X29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitz ZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBiaWdpbnRfdmFsIGFzIHZh bCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGJpZ2ludF92YWwgZGVzYyBsaW1pdCAx MDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKKyAKK3NlbGVjdCBi cmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGluZXRfdmFsIGFzIHZhbCBmcm9tIGJy aW5fc29ydF90ZXN0IG9yZGVyIGJ5IGluZXRfdmFsJywgMTAwMCwgZmFsc2UpOworIGJyaW5z b3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEg cm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbmV0X3Zh bCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBpbmV0X3ZhbCBkZXNjJywg MTAwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRl cmluZygnc2VsZWN0IGluZXRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVy IGJ5IGluZXRfdmFsIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworIGJyaW5zb3J0X2NoZWNr X29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitz ZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbmV0X3ZhbCBhcyB2YWwg ZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBpbmV0X3ZhbCBkZXNjIGxpbWl0IDEwMCcs IDEwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRl cmluZygnc2VsZWN0IGluZXRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVy IGJ5IGluZXRfdmFsIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCBmYWxzZSk7CisgYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCiso MSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGluZXRf dmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGluZXRfdmFsIGRlc2Mg bGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCisgCitz ZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCB0ZXh0X3ZhbCBhcyB2YWwg ZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSB0ZXh0X3ZhbCcsIDEwMDAsIGZhbHNlKTsK KyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3Qg dGV4dF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgdGV4dF92YWwg ZGVzYycsIDEwMDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hl Y2tfb3JkZXJpbmcoJ3NlbGVjdCB0ZXh0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVz dCBvcmRlciBieSB0ZXh0X3ZhbCBsaW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKKyBicmluc29y dF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJv dykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgdGV4dF92YWwg YXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgdGV4dF92YWwgZGVzYyBsaW1p dCAxMDAnLCAxMDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hl Y2tfb3JkZXJpbmcoJ3NlbGVjdCB0ZXh0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVz dCBvcmRlciBieSB0ZXh0X3ZhbCBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2Up OworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVj dCB0ZXh0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSB0ZXh0X3Zh bCBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCB0cnVlKTsKKyBicmluc29ydF9j aGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykK KworLS0gcmFuZG9tIGRhdGEKK3RydW5jYXRlIHRhYmxlIGJyaW5fc29ydF90ZXN0OworaW5z ZXJ0IGludG8gYnJpbl9zb3J0X3Rlc3QKK3NlbGVjdAorCSgxMDAwICogcmFuZG9tKCkpOjpp bnQsCisJLSgoMTAwMCAqIHJhbmRvbSgpKTo6aW50KSwJLS0gc2FtZSBhcyBpbnQsIGJ1dCBh dCBsZWFzdCBvcHBvc2l0ZQorCWxwYWQoKCgxMDAwICogcmFuZG9tKCkpOjppbnQpOjp0ZXh0 IHx8IG1kNShpOjp0ZXh0KSwgNDAsICcwJyksCisJJzEwLjAuMC4wJzo6aW5ldCArICgxMDAw ICogcmFuZG9tKCk6OmludCkKK2Zyb20gZ2VuZXJhdGVfc2VyaWVzKDEsMTAwMCkgcyhpKTsK K3JlaW5kZXggdGFibGUgYnJpbl9zb3J0X3Rlc3Q7Cit2YWN1dW0gYW5hbHl6ZSBicmluX3Nv cnRfdGVzdDsKKyAKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGlu dF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW50X3ZhbCcsIDEw MDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVy aW5nKCdzZWxlY3QgaW50X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBi eSBpbnRfdmFsIGRlc2MnLCAxMDAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmlu ZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJy aW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgaW50X3ZhbCBhcyB2YWwgZnJvbSBicmlu X3NvcnRfdGVzdCBvcmRlciBieSBpbnRfdmFsIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOwor IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBp bnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGludF92YWwgZGVz YyBsaW1pdCAxMDAnLCAxMDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNv cnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29y dF90ZXN0IG9yZGVyIGJ5IGludF92YWwgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIGZh bHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdz ZWxlY3QgaW50X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBpbnRf dmFsIGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworIGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93 KQorCisgCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBiaWdpbnRf dmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGJpZ2ludF92YWwnLCAx MDAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRl cmluZygnc2VsZWN0IGJpZ2ludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3Jk ZXIgYnkgYmlnaW50X3ZhbCBkZXNjJywgMTAwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tf b3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3Nl bGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGJpZ2ludF92YWwgYXMgdmFs IGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgYmlnaW50X3ZhbCBsaW1pdCAxMDAnLCAx MDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVy aW5nKCdzZWxlY3QgYmlnaW50X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRl ciBieSBiaWdpbnRfdmFsIGRlc2MgbGltaXQgMTAwJywgMTAwLCB0cnVlKTsKKyBicmluc29y dF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJv dykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgYmlnaW50X3Zh bCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBiaWdpbnRfdmFsIGxpbWl0 IDEwMCBvZmZzZXQgMTAwJywgMTAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJp bmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBi cmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGJpZ2ludF92YWwgYXMgdmFsIGZyb20g YnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgYmlnaW50X3ZhbCBkZXNjIGxpbWl0IDEwMCBvZmZz ZXQgMTAwJywgMTAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworIAorc2VsZWN0IGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgaW5ldF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0 X3Rlc3Qgb3JkZXIgYnkgaW5ldF92YWwnLCAxMDAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hl Y2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisK K3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGluZXRfdmFsIGFzIHZh bCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGluZXRfdmFsIGRlc2MnLCAxMDAwLCB0 cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdz ZWxlY3QgaW5ldF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW5l dF92YWwgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJp bmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBi cmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGluZXRfdmFsIGFzIHZhbCBmcm9tIGJy aW5fc29ydF90ZXN0IG9yZGVyIGJ5IGluZXRfdmFsIGRlc2MgbGltaXQgMTAwJywgMTAwLCB0 cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdz ZWxlY3QgaW5ldF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW5l dF92YWwgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKKyBicmluc29ydF9j aGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykK Kworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgaW5ldF92YWwgYXMg dmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW5ldF92YWwgZGVzYyBsaW1pdCAx MDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKKyAKK3NlbGVjdCBi cmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IHRleHRfdmFsIGFzIHZhbCBmcm9tIGJy aW5fc29ydF90ZXN0IG9yZGVyIGJ5IHRleHRfdmFsJywgMTAwMCwgZmFsc2UpOworIGJyaW5z b3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEg cm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCB0ZXh0X3Zh bCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSB0ZXh0X3ZhbCBkZXNjJywg MTAwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRl cmluZygnc2VsZWN0IHRleHRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVy IGJ5IHRleHRfdmFsIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworIGJyaW5zb3J0X2NoZWNr X29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitz ZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCB0ZXh0X3ZhbCBhcyB2YWwg ZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSB0ZXh0X3ZhbCBkZXNjIGxpbWl0IDEwMCcs IDEwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRl cmluZygnc2VsZWN0IHRleHRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVy IGJ5IHRleHRfdmFsIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCBmYWxzZSk7CisgYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCiso MSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IHRleHRf dmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IHRleHRfdmFsIGRlc2Mg bGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitkcm9w IHRhYmxlIGJyaW5fc29ydF90ZXN0OwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9icmluX3NvcnRfbXVsdGlfZXhwcnMub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9icmluX3NvcnRfbXVsdGlfZXhwcnMub3V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAuLjBlOWY0ZWEzMTgKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL2JyaW5fc29ydF9tdWx0aV9leHBycy5vdXQKQEAgLTAs MCArMSw3ODQgQEAKKy0tIGZ1bmN0aW9uIHRvIHZlcmlmeSB2YXJpb3VzIHNvcnQtcmVsYXRl ZCBkYXRhICh0b3RhbCByb3dzLCBvcmRlcmluZykKK2NyZWF0ZSBvciByZXBsYWNlIGZ1bmN0 aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHBfc3FsIHRleHQsIHBfcm93c19leHBlY3Rl ZCBpbnQsIHBfZGVzYyBib29sZWFuKSByZXR1cm5zIHZvaWQgYXMgJCQKK2RlY2xhcmUKKyAg ICB2X2N1cnMgcmVmY3Vyc29yOworICAgIHZfcm93IHJlY29yZDsKKyAgICB2X3ByZXYgcmVj b3JkOworICAgIHZfYnJpbl9zb3J0X2ZvdW5kIGJvb2wgOj0gZmFsc2U7CisgICAgdl9jb3Vu dCBpbnQgOj0gMDsKK2JlZ2luCisKKyAgICAtLSBuZWVkZWQgYmVjYXVzZSB0aGUgcF9zcWwg cXVlcnkgaGFzIGRpZmZlcmVudCBkYXRhIHR5cGVzCisgICAgZXhlY3V0ZSAnZGlzY2FyZCBw bGFucyc7CisKKyAgICBPUEVOIHZfY3VycyBOTyBTQ1JPTEwgRk9SIEVYRUNVVEUgZm9ybWF0 KCdleHBsYWluICVzJywgcF9zcWwpOworCisgICAgTE9PUAorICAgICAgICBGRVRDSCB2X2N1 cnMgSU5UTyB2X3JvdzsKKworICAgICAgICBJRiBOT1QgRk9VTkQgVEhFTgorICAgICAgICAg ICAgRVhJVDsKKyAgICAgICAgRU5EIElGOworCisgICAgICAgIElGIHZfcm93Ojp0ZXh0IExJ S0UgJyVCUklOIFNvcnQlJyBUSEVOCisgICAgICAgICAgICB2X2JyaW5fc29ydF9mb3VuZCA6 PSB0cnVlOworICAgICAgICAgICAgRVhJVDsKKyAgICAgICAgRU5EIElGOworICAgIEVORCBM T09QOworCisgICAgQ0xPU0Ugdl9jdXJzOworCisgICAgSUYgTk9UIHZfYnJpbl9zb3J0X2Zv dW5kIFRIRU4KKyAgICAgICAgUkFJU0UgRVhDRVBUSU9OICdCUklOIFNvcnQ6IG5vdCBmb3Vu ZCc7CisgICAgRU5EIElGOworCisgICAgT1BFTiB2X2N1cnMgTk8gU0NST0xMIEZPUiBFWEVD VVRFIGZvcm1hdChwX3NxbCk7CisKKyAgICBMT09QCisgICAgICAgIEZFVENIIHZfY3VycyBJ TlRPIHZfcm93OworCisgICAgICAgIElGIE5PVCBGT1VORCBUSEVOCisgICAgICAgICAgICBF WElUOworICAgICAgICBFTkQgSUY7CisKKyAgICAgICAgSUYgdl9wcmV2IElTIE5PVCBOVUxM IFRIRU4KKyAgICAgICAgICAgIElGIHZfcHJldi52YWwgPiB2X3Jvdy52YWwgQU5EIE5PVCBw X2Rlc2MgVEhFTgorICAgICAgICAgICAgICAgIFJBSVNFIEVYQ0VQVElPTiAnb3JkZXJpbmcg bWlzbWF0Y2ggJSA+ICUgKGFzYyknLCB2X3ByZXYudmFsLCB2X3Jvdy52YWw7CisgICAgICAg ICAgICBFTkQgSUY7CisgICAgICAgICAgICBJRiB2X3ByZXYudmFsIDwgdl9yb3cudmFsIEFO RCBwX2Rlc2MgVEhFTgorICAgICAgICAgICAgICAgIFJBSVNFIEVYQ0VQVElPTiAnb3JkZXJp bmcgbWlzbWF0Y2ggJSA8ICUgKGRlc2MpJywgdl9wcmV2LnZhbCwgdl9yb3cudmFsOworICAg ICAgICAgICAgRU5EIElGOworICAgICAgICBFTkQgSUY7CisKKyAgICAgICAgdl9wcmV2IDo9 IHZfcm93OworICAgICAgICB2X2NvdW50IDo9IHZfY291bnQgKyAxOworICAgIEVORCBMT09Q OworCisgICAgQ0xPU0Ugdl9jdXJzOworCisgICAgSUYgdl9jb3VudCAhPSBwX3Jvd3NfZXhw ZWN0ZWQgVEhFTgorICAgICAgICBSQUlTRSBFWENFUFRJT04gJ2NvdW50IG1pc21hdGNoOiAl ICE9ICUnLCB2X2NvdW50LCBwX3Jvd3NfZXhwZWN0ZWQ7CisgICAgRU5EIElGOworCitlbmQ7 CiskJCBsYW5ndWFnZSBwbHBnc3FsOworY3JlYXRlIHRhYmxlIGJyaW5fc29ydF90ZXN0IChp bnRfdmFsIGludCwgYmlnaW50X3ZhbCBiaWdpbnQsIHRleHRfdmFsIHRleHQsIGluZXRfdmFs IGluZXQpIHdpdGggKGZpbGxmYWN0b3I9MTApOworLS0gc2VxdWVudGlhbCB2YWx1ZXMKK2lu c2VydCBpbnRvIGJyaW5fc29ydF90ZXN0CitzZWxlY3QKKwlpLAorCS1pLAktLSBzYW1lIGFz IGludCwgYnV0IGF0IGxlYXN0IG9wcG9zaXRlCisJbHBhZChpOjp0ZXh0IHx8IG1kNShpOjp0 ZXh0KSwgNDAsICcwJyksCisJJzEwLjAuMC4wJzo6aW5ldCArIGkKK2Zyb20gZ2VuZXJhdGVf c2VyaWVzKDEsMTAwMCkgcyhpKTsKKy0tIGNyZWF0ZSBicmluIGluZGV4ZXMgb24gaW5kaXZp ZHVhbCBjb2x1bW5zCitjcmVhdGUgaW5kZXggYnJpbl9zb3J0X3Rlc3RfaW50X2lkeCBvbiBi cmluX3NvcnRfdGVzdCB1c2luZyBicmluICgoaW50X3ZhbCArIDEpLCAoYmlnaW50X3ZhbCAr IDEpLCAoJ3gnIHx8IHRleHRfdmFsKSwgKGluZXRfdmFsICsgMSkgaW5ldF9taW5tYXhfb3Bz KSB3aXRoIChwYWdlc19wZXJfcmFuZ2U9MSk7Cit2YWN1dW0gYW5hbHl6ZSBicmluX3NvcnRf dGVzdDsKK3NldCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsKKyAKKy0tIG1hdGNoaW5nIGV4cHJl c3Npb24KK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFs ICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgKyAx KScsIDEwMDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNr X29yZGVyaW5nKCdzZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRf dGVzdCBvcmRlciBieSAoaW50X3ZhbCArIDEpIGRlc2MnLCAxMDAwLCB0cnVlKTsKKyBicmlu c29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygx IHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGludF92 YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW50X3ZhbCAr IDEpIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5n IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9t IGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsICsgMSkgZGVzYyBsaW1pdCAxMDAn LCAxMDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3Jk ZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0 IG9yZGVyIGJ5IChpbnRfdmFsICsgMSkgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIGZh bHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdz ZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBi eSAoaW50X3ZhbCArIDEpIGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUp OworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIAorKDEgcm93KQorCistLSBtaXNtYXRjaGluZyBleHByZXNzaW9uCitzZWxlY3QgYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9t IGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsIC0gMSknLCAxMDAwLCBmYWxzZSk7 CitFUlJPUjogIEJSSU4gU29ydDogbm90IGZvdW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVu Y3Rpb24gYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxp bmUgMzEgYXQgUkFJU0UKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0 IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGlu dF92YWwgLSAxKSBkZXNjJywgMTAwMCwgdHJ1ZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90 IGZvdW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3Jk ZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMzEgYXQgUkFJU0UKK3NlbGVjdCBi cmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsgMSkgYXMgdmFsIGZy b20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgLSAxKSBsaW1pdCAxMDAnLCAx MDAsIGZhbHNlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRFWFQ6ICBQ TC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGludGVnZXIs Ym9vbGVhbikgbGluZSAzMSBhdCBSQUlTRQorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVy aW5nKCdzZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBv cmRlciBieSAoaW50X3ZhbCAtIDEpIGRlc2MgbGltaXQgMTAwJywgMTAwLCB0cnVlKTsKK0VS Uk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlv biBicmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGludGVnZXIsYm9vbGVhbikgbGluZSAz MSBhdCBSQUlTRQorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGlu dF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW50X3Zh bCAtIDEpIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCBmYWxzZSk7CitFUlJPUjogIEJS SU4gU29ydDogbm90IGZvdW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNv cnRfY2hlY2tfb3JkZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMzEgYXQgUkFJ U0UKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsg MSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgLSAxKSBk ZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCB0cnVlKTsKK0VSUk9SOiAgQlJJTiBT b3J0OiBub3QgZm91bmQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9j aGVja19vcmRlcmluZyh0ZXh0LGludGVnZXIsYm9vbGVhbikgbGluZSAzMSBhdCBSQUlTRQor IAorLS0gbWF0Y2hpbmcgZXhwcmVzc2lvbgorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVy aW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVz dCBvcmRlciBieSAoYmlnaW50X3ZhbCArIDEpJywgMTAwMCwgZmFsc2UpOworIGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93 KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3Zh bCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFs ICsgMSkgZGVzYycsIDEwMDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNv cnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9t IGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsICsgMSkgbGltaXQgMTAwJywg MTAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRl cmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rl c3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgKyAxKSBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1 ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2Vs ZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIg YnkgKGJpZ2ludF92YWwgKyAxKSBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2Up OworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVj dCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5 IChiaWdpbnRfdmFsICsgMSkgZGVzYyBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1 ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgCisoMSByb3cpCisKKy0tIG1pc21hdGNoaW5nIGV4cHJlc3Npb24KK3NlbGVjdCBi cmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFs IGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgLSAxKScsIDEwMDAs IGZhbHNlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRFWFQ6ICBQTC9w Z1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGludGVnZXIsYm9v bGVhbikgbGluZSAzMSBhdCBSQUlTRQorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5n KCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBv cmRlciBieSAoYmlnaW50X3ZhbCAtIDEpIGRlc2MnLCAxMDAwLCB0cnVlKTsKK0VSUk9SOiAg QlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmlu c29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGludGVnZXIsYm9vbGVhbikgbGluZSAzMSBhdCBS QUlTRQorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92 YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoYmlnaW50X3Zh bCAtIDEpIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworRVJST1I6ICBCUklOIFNvcnQ6IG5v dCBmb3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDMxIGF0IFJBSVNFCitzZWxlY3Qg YnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZh bCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsIC0gMSkgZGVzYyBs aW1pdCAxMDAnLCAxMDAsIHRydWUpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAor Q09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHRl eHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDMxIGF0IFJBSVNFCitzZWxlY3QgYnJpbnNvcnRf Y2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJy aW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsIC0gMSkgbGltaXQgMTAwIG9mZnNl dCAxMDAnLCAxMDAsIGZhbHNlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NP TlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0 LGludGVnZXIsYm9vbGVhbikgbGluZSAzMSBhdCBSQUlTRQorc2VsZWN0IGJyaW5zb3J0X2No ZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmlu X3NvcnRfdGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCAtIDEpIGRlc2MgbGltaXQgMTAwIG9m ZnNldCAxMDAnLCAxMDAsIHRydWUpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAor Q09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHRl eHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDMxIGF0IFJBSVNFCisgCistLSBtYXRjaGluZyBl eHByZXNzaW9uCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4 JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgn J3gnJyB8fCB0ZXh0X3ZhbCknLCAxMDAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3Jk ZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVj dCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkg YXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneCcnIHx8IHRleHRfdmFs KSBkZXNjJywgMTAwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9j aGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20g YnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneCcnIHx8IHRleHRfdmFsKSBsaW1pdCAxMDAn LCAxMDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBicmluX3Nv cnRfdGVzdCBvcmRlciBieSAoJyd4JycgfHwgdGV4dF92YWwpIGRlc2MgbGltaXQgMTAwJywg MTAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVy aW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBicmluX3NvcnRf dGVzdCBvcmRlciBieSAoJyd4JycgfHwgdGV4dF92YWwpIGxpbWl0IDEwMCBvZmZzZXQgMTAw JywgMTAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19v cmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9z b3J0X3Rlc3Qgb3JkZXIgYnkgKCcneCcnIHx8IHRleHRfdmFsKSBkZXNjIGxpbWl0IDEwMCBv ZmZzZXQgMTAwJywgMTAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworLS0gbWlzbWF0Y2hpbmcg ZXhwcmVzc2lvbgorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcn eCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAo Jyd5JycgfHwgdGV4dF92YWwpJywgMTAwMCwgZmFsc2UpOworRVJST1I6ICBCUklOIFNvcnQ6 IG5vdCBmb3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNr X29yZGVyaW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDMxIGF0IFJBSVNFCitzZWxl Y3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwp IGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3knJyB8fCB0ZXh0X3Zh bCkgZGVzYycsIDEwMDAsIHRydWUpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAor Q09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHRl eHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDMxIGF0IFJBSVNFCitzZWxlY3QgYnJpbnNvcnRf Y2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9t IGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3knJyB8fCB0ZXh0X3ZhbCkgbGltaXQgMTAw JywgMTAwLCBmYWxzZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90IGZvdW5kCitDT05URVhU OiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcodGV4dCxpbnRl Z2VyLGJvb2xlYW4pIGxpbmUgMzEgYXQgUkFJU0UKK3NlbGVjdCBicmluc29ydF9jaGVja19v cmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9z b3J0X3Rlc3Qgb3JkZXIgYnkgKCcneScnIHx8IHRleHRfdmFsKSBkZXNjIGxpbWl0IDEwMCcs IDEwMCwgdHJ1ZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90IGZvdW5kCitDT05URVhUOiAg UEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcodGV4dCxpbnRlZ2Vy LGJvb2xlYW4pIGxpbmUgMzEgYXQgUkFJU0UKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRl cmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0 X3Rlc3Qgb3JkZXIgYnkgKCcneScnIHx8IHRleHRfdmFsKSBsaW1pdCAxMDAgb2Zmc2V0IDEw MCcsIDEwMCwgZmFsc2UpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAorQ09OVEVY VDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHRleHQsaW50 ZWdlcixib29sZWFuKSBsaW5lIDMxIGF0IFJBSVNFCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tf b3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5f c29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3knJyB8fCB0ZXh0X3ZhbCkgZGVzYyBsaW1pdCAxMDAg b2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90IGZvdW5k CitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmco dGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMzEgYXQgUkFJU0UKKyAKKy0tIG1hdGNoaW5n IGV4cHJlc3Npb24KK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChp bmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0 X3ZhbCArIDEpJywgMTAwMCwgZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNv cnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2YWwgZnJvbSBi cmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwgKyAxKSBkZXNjJywgMTAwMCwgdHJ1 ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2Vs ZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5 IChpbmV0X3ZhbCArIDEpIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworIGJyaW5zb3J0X2No ZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQor CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAx KSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwgKyAxKSBk ZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmlu c29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9t IGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0X3ZhbCArIDEpIGxpbWl0IDEwMCBvZmZz ZXQgMTAwJywgMTAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9j aGVja19vcmRlcmluZygnc2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5f c29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0X3ZhbCArIDEpIGRlc2MgbGltaXQgMTAwIG9mZnNl dCAxMDAnLCAxMDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCistLSBtaXNtYXRjaGluZyBleHBy ZXNzaW9uCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92 YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwg LSAxKScsIDEwMDAsIGZhbHNlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NP TlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0 LGludGVnZXIsYm9vbGVhbikgbGluZSAzMSBhdCBSQUlTRQorc2VsZWN0IGJyaW5zb3J0X2No ZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9z b3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsIC0gMSkgZGVzYycsIDEwMDAsIHRydWUpOwor RVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0 aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5l IDMxIGF0IFJBSVNFCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAo aW5ldF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5l dF92YWwgLSAxKSBsaW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKK0VSUk9SOiAgQlJJTiBTb3J0 OiBub3QgZm91bmQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVj a19vcmRlcmluZyh0ZXh0LGludGVnZXIsYm9vbGVhbikgbGluZSAzMSBhdCBSQUlTRQorc2Vs ZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMg dmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsIC0gMSkgZGVzYyBs aW1pdCAxMDAnLCAxMDAsIHRydWUpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAor Q09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHRl eHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDMxIGF0IFJBSVNFCitzZWxlY3QgYnJpbnNvcnRf Y2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmlu X3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwgLSAxKSBsaW1pdCAxMDAgb2Zmc2V0IDEw MCcsIDEwMCwgZmFsc2UpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAorQ09OVEVY VDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHRleHQsaW50 ZWdlcixib29sZWFuKSBsaW5lIDMxIGF0IFJBSVNFCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tf b3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRf dGVzdCBvcmRlciBieSAoaW5ldF92YWwgLSAxKSBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAw JywgMTAwLCB0cnVlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRFWFQ6 ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGludGVn ZXIsYm9vbGVhbikgbGluZSAzMSBhdCBSQUlTRQorLS0gc2VtaS1yYW5kb20gZGF0YSAoc2Vx dWVudGlhbCArIHJhbmRvbW5lc3MpCit0cnVuY2F0ZSB0YWJsZSBicmluX3NvcnRfdGVzdDsK K2luc2VydCBpbnRvIGJyaW5fc29ydF90ZXN0CitzZWxlY3QKKwlpICsgKDEwMCAqIHJhbmRv bSgpKTo6aW50LAorCS0oaSArICgxMDAgKiByYW5kb20oKSk6OmludCksCS0tIHNhbWUgYXMg aW50LCBidXQgYXQgbGVhc3Qgb3Bwb3NpdGUKKwlscGFkKChpICsgKDEwMCAqIHJhbmRvbSgp KTo6aW50KTo6dGV4dCB8fCBtZDUoaTo6dGV4dCksIDQwLCAnMCcpLAorCScxMC4wLjAuMCc6 OmluZXQgKyAoaSArIDEwMCAqIHJhbmRvbSgpOjppbnQpCitmcm9tIGdlbmVyYXRlX3Nlcmll cygxLDEwMDApIHMoaSk7CityZWluZGV4IHRhYmxlIGJyaW5fc29ydF90ZXN0OwordmFjdXVt IGFuYWx5emUgYnJpbl9zb3J0X3Rlc3Q7CisgCistLSBtYXRjaGluZyBleHByZXNzaW9uCitz ZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFz IHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsICsgMSknLCAxMDAw LCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmlu Zygnc2VsZWN0IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3Jk ZXIgYnkgKGludF92YWwgKyAxKSBkZXNjJywgMTAwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hl Y2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisK K3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsgMSkg YXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgKyAxKSBsaW1p dCAxMDAnLCAxMDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2No ZWNrX29yZGVyaW5nKCdzZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3Nv cnRfdGVzdCBvcmRlciBieSAoaW50X3ZhbCArIDEpIGRlc2MgbGltaXQgMTAwJywgMTAwLCB0 cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdz ZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBi eSAoaW50X3ZhbCArIDEpIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCBmYWxzZSk7Cisg YnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg CisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChp bnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92 YWwgKyAxKSBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCB0cnVlKTsKKyBicmlu c29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygx IHJvdykKKworLS0gbWlzbWF0Y2hpbmcgZXhwcmVzc2lvbgorc2VsZWN0IGJyaW5zb3J0X2No ZWNrX29yZGVyaW5nKCdzZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3Nv cnRfdGVzdCBvcmRlciBieSAoaW50X3ZhbCAtIDEpJywgMTAwMCwgZmFsc2UpOworRVJST1I6 ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJy aW5zb3J0X2NoZWNrX29yZGVyaW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDMxIGF0 IFJBSVNFCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3Zh bCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsIC0g MSkgZGVzYycsIDEwMDAsIHRydWUpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAor Q09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHRl eHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDMxIGF0IFJBSVNFCitzZWxlY3QgYnJpbnNvcnRf Y2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5f c29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsIC0gMSkgbGltaXQgMTAwJywgMTAwLCBmYWxz ZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90IGZvdW5kCitDT05URVhUOiAgUEwvcGdTUUwg ZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4p IGxpbmUgMzEgYXQgUkFJU0UKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2Vs ZWN0IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkg KGludF92YWwgLSAxKSBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CitFUlJPUjogIEJS SU4gU29ydDogbm90IGZvdW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNv cnRfY2hlY2tfb3JkZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMzEgYXQgUkFJ U0UKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsg MSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgLSAxKSBs aW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2UpOworRVJST1I6ICBCUklOIFNvcnQ6 IG5vdCBmb3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNr X29yZGVyaW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDMxIGF0IFJBSVNFCitzZWxl Y3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZh bCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsIC0gMSkgZGVzYyBsaW1p dCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90 IGZvdW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3Jk ZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMzEgYXQgUkFJU0UKKyAKKy0tIG1h dGNoaW5nIGV4cHJlc3Npb24KK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2Vs ZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIg YnkgKGJpZ2ludF92YWwgKyAxKScsIDEwMDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVja19v cmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2Vs ZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBh cyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCArIDEpIGRl c2MnLCAxMDAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNr X29yZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3Nv cnRfdGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCArIDEpIGxpbWl0IDEwMCcsIDEwMCwgZmFs c2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3Nl bGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVy IGJ5IChiaWdpbnRfdmFsICsgMSkgZGVzYyBsaW1pdCAxMDAnLCAxMDAsIHRydWUpOworIGJy aW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAor KDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmln aW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdp bnRfdmFsICsgMSkgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKKyBicmlu c29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygx IHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJpZ2lu dF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoYmlnaW50 X3ZhbCArIDEpIGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworIGJy aW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAor KDEgcm93KQorCistLSBtaXNtYXRjaGluZyBleHByZXNzaW9uCitzZWxlY3QgYnJpbnNvcnRf Y2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJy aW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsIC0gMSknLCAxMDAwLCBmYWxzZSk7 CitFUlJPUjogIEJSSU4gU29ydDogbm90IGZvdW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVu Y3Rpb24gYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxp bmUgMzEgYXQgUkFJU0UKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0 IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkg KGJpZ2ludF92YWwgLSAxKSBkZXNjJywgMTAwMCwgdHJ1ZSk7CitFUlJPUjogIEJSSU4gU29y dDogbm90IGZvdW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hl Y2tfb3JkZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMzEgYXQgUkFJU0UKK3Nl bGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsgMSkg YXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgLSAxKSBs aW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQK K0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmluZyh0 ZXh0LGludGVnZXIsYm9vbGVhbikgbGluZSAzMSBhdCBSQUlTRQorc2VsZWN0IGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBi cmluX3NvcnRfdGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCAtIDEpIGRlc2MgbGltaXQgMTAw JywgMTAwLCB0cnVlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRFWFQ6 ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGludGVn ZXIsYm9vbGVhbikgbGluZSAzMSBhdCBSQUlTRQorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRf dGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCAtIDEpIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywg MTAwLCBmYWxzZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90IGZvdW5kCitDT05URVhUOiAg UEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcodGV4dCxpbnRlZ2Vy LGJvb2xlYW4pIGxpbmUgMzEgYXQgUkFJU0UKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRl cmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rl c3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgLSAxKSBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAw JywgMTAwLCB0cnVlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRFWFQ6 ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGludGVn ZXIsYm9vbGVhbikgbGluZSAzMSBhdCBSQUlTRQorIAorLS0gbWF0Y2hpbmcgZXhwcmVzc2lv bgorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRl eHRfdmFsKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoJyd4JycgfHwg dGV4dF92YWwpJywgMTAwMCwgZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNv cnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBm cm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgZGVzYycs IDEwMDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3Jk ZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29y dF90ZXN0IG9yZGVyIGJ5ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgbGltaXQgMTAwJywgMTAwLCBm YWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygn c2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qg b3JkZXIgYnkgKCcneCcnIHx8IHRleHRfdmFsKSBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1 ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2Vs ZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3Jk ZXIgYnkgKCcneCcnIHx8IHRleHRfdmFsKSBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwg ZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmco J3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0 IG9yZGVyIGJ5ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgZGVzYyBsaW1pdCAxMDAgb2Zmc2V0IDEw MCcsIDEwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKKy0tIG1pc21hdGNoaW5nIGV4cHJlc3Np b24KK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0 ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneScnIHx8 IHRleHRfdmFsKScsIDEwMDAsIGZhbHNlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91 bmQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmlu Zyh0ZXh0LGludGVnZXIsYm9vbGVhbikgbGluZSAzMSBhdCBSQUlTRQorc2VsZWN0IGJyaW5z b3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwg ZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoJyd5JycgfHwgdGV4dF92YWwpIGRlc2Mn LCAxMDAwLCB0cnVlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRFWFQ6 ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGludGVn ZXIsYm9vbGVhbikgbGluZSAzMSBhdCBSQUlTRQorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBicmluX3Nv cnRfdGVzdCBvcmRlciBieSAoJyd5JycgfHwgdGV4dF92YWwpIGxpbWl0IDEwMCcsIDEwMCwg ZmFsc2UpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAorQ09OVEVYVDogIFBML3Bn U1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHRleHQsaW50ZWdlcixib29s ZWFuKSBsaW5lIDMxIGF0IFJBSVNFCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmco J3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0 IG9yZGVyIGJ5ICgnJ3knJyB8fCB0ZXh0X3ZhbCkgZGVzYyBsaW1pdCAxMDAnLCAxMDAsIHRy dWUpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAorQ09OVEVYVDogIFBML3BnU1FM IGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHRleHQsaW50ZWdlcixib29sZWFu KSBsaW5lIDMxIGF0IFJBSVNFCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3Nl bGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9y ZGVyIGJ5ICgnJ3knJyB8fCB0ZXh0X3ZhbCkgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAs IGZhbHNlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRFWFQ6ICBQTC9w Z1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGludGVnZXIsYm9v bGVhbikgbGluZSAzMSBhdCBSQUlTRQorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5n KCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVz dCBvcmRlciBieSAoJyd5JycgfHwgdGV4dF92YWwpIGRlc2MgbGltaXQgMTAwIG9mZnNldCAx MDAnLCAxMDAsIHRydWUpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAorQ09OVEVY VDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHRleHQsaW50 ZWdlcixib29sZWFuKSBsaW5lIDMxIGF0IFJBSVNFCisgCistLSBtYXRjaGluZyBleHByZXNz aW9uCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwg KyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwgKyAx KScsIDEwMDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNr X29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0 X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsICsgMSkgZGVzYycsIDEwMDAsIHRydWUpOworIGJy aW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAor KDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5l dF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92 YWwgKyAxKSBsaW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVja19vcmRl cmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0 IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFs IGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsICsgMSkgZGVzYyBsaW1p dCAxMDAnLCAxMDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hl Y2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3Nv cnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwgKyAxKSBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcs IDEwMCwgZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3Jk ZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVz dCBvcmRlciBieSAoaW5ldF92YWwgKyAxKSBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywg MTAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworLS0gbWlzbWF0Y2hpbmcgZXhwcmVzc2lvbgor c2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkg YXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsIC0gMSknLCAx MDAwLCBmYWxzZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90IGZvdW5kCitDT05URVhUOiAg UEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcodGV4dCxpbnRlZ2Vy LGJvb2xlYW4pIGxpbmUgMzEgYXQgUkFJU0UKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRl cmluZygnc2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0 IG9yZGVyIGJ5IChpbmV0X3ZhbCAtIDEpIGRlc2MnLCAxMDAwLCB0cnVlKTsKK0VSUk9SOiAg QlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmlu c29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGludGVnZXIsYm9vbGVhbikgbGluZSAzMSBhdCBS QUlTRQorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFs ICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsIC0g MSkgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90IGZv dW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3JkZXJp bmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMzEgYXQgUkFJU0UKK3NlbGVjdCBicmlu c29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9t IGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0X3ZhbCAtIDEpIGRlc2MgbGltaXQgMTAw JywgMTAwLCB0cnVlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRFWFQ6 ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGludGVn ZXIsYm9vbGVhbikgbGluZSAzMSBhdCBSQUlTRQorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rl c3Qgb3JkZXIgYnkgKGluZXRfdmFsIC0gMSkgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAs IGZhbHNlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRFWFQ6ICBQTC9w Z1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGludGVnZXIsYm9v bGVhbikgbGluZSAzMSBhdCBSQUlTRQorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5n KCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3Jk ZXIgYnkgKGluZXRfdmFsIC0gMSkgZGVzYyBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwg dHJ1ZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90IGZvdW5kCitDT05URVhUOiAgUEwvcGdT UUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xl YW4pIGxpbmUgMzEgYXQgUkFJU0UKKy0tIHJhbmRvbSBkYXRhCit0cnVuY2F0ZSB0YWJsZSBi cmluX3NvcnRfdGVzdDsKK2luc2VydCBpbnRvIGJyaW5fc29ydF90ZXN0CitzZWxlY3QKKwko MTAwMCAqIHJhbmRvbSgpKTo6aW50LAorCS0oKDEwMDAgKiByYW5kb20oKSk6OmludCksCS0t IHNhbWUgYXMgaW50LCBidXQgYXQgbGVhc3Qgb3Bwb3NpdGUKKwlscGFkKCgoMTAwMCAqIHJh bmRvbSgpKTo6aW50KTo6dGV4dCB8fCBtZDUoaTo6dGV4dCksIDQwLCAnMCcpLAorCScxMC4w LjAuMCc6OmluZXQgKyAoMTAwMCAqIHJhbmRvbSgpOjppbnQpCitmcm9tIGdlbmVyYXRlX3Nl cmllcygxLDEwMDApIHMoaSk7CityZWluZGV4IHRhYmxlIGJyaW5fc29ydF90ZXN0OwordmFj dXVtIGFuYWx5emUgYnJpbl9zb3J0X3Rlc3Q7CisgCistLSBtYXRjaGluZyBleHByZXNzaW9u CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEp IGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsICsgMSknLCAx MDAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRl cmluZygnc2VsZWN0IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qg b3JkZXIgYnkgKGludF92YWwgKyAxKSBkZXNjJywgMTAwMCwgdHJ1ZSk7CisgYnJpbnNvcnRf Y2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cp CisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsg MSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgKyAxKSBs aW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmlu X3NvcnRfdGVzdCBvcmRlciBieSAoaW50X3ZhbCArIDEpIGRlc2MgbGltaXQgMTAwJywgMTAw LCB0cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5n KCdzZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRl ciBieSAoaW50X3ZhbCArIDEpIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCBmYWxzZSk7 CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0 IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGlu dF92YWwgKyAxKSBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCB0cnVlKTsKKyBi cmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAK KygxIHJvdykKKworLS0gbWlzbWF0Y2hpbmcgZXhwcmVzc2lvbgorc2VsZWN0IGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmlu X3NvcnRfdGVzdCBvcmRlciBieSAoaW50X3ZhbCAtIDEpJywgMTAwMCwgZmFsc2UpOworRVJS T1I6ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9u IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDMx IGF0IFJBSVNFCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50 X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFs IC0gMSkgZGVzYycsIDEwMDAsIHRydWUpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3Vu ZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5n KHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDMxIGF0IFJBSVNFCitzZWxlY3QgYnJpbnNv cnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJy aW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsIC0gMSkgbGltaXQgMTAwJywgMTAwLCBm YWxzZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90IGZvdW5kCitDT05URVhUOiAgUEwvcGdT UUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xl YW4pIGxpbmUgMzEgYXQgUkFJU0UKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygn c2VsZWN0IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIg YnkgKGludF92YWwgLSAxKSBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CitFUlJPUjog IEJSSU4gU29ydDogbm90IGZvdW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMzEgYXQg UkFJU0UKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFs ICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgLSAx KSBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2UpOworRVJST1I6ICBCUklOIFNv cnQ6IG5vdCBmb3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2No ZWNrX29yZGVyaW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDMxIGF0IFJBSVNFCitz ZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFz IHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsIC0gMSkgZGVzYyBs aW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CitFUlJPUjogIEJSSU4gU29ydDog bm90IGZvdW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tf b3JkZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMzEgYXQgUkFJU0UKKyAKKy0t IG1hdGNoaW5nIGV4cHJlc3Npb24KK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygn c2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3Jk ZXIgYnkgKGJpZ2ludF92YWwgKyAxKScsIDEwMDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVj a19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKwor c2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAx KSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCArIDEp IGRlc2MnLCAxMDAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2No ZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmlu X3NvcnRfdGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCArIDEpIGxpbWl0IDEwMCcsIDEwMCwg ZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmco J3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9y ZGVyIGJ5IChiaWdpbnRfdmFsICsgMSkgZGVzYyBsaW1pdCAxMDAnLCAxMDAsIHRydWUpOwor IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAo YmlnaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChi aWdpbnRfdmFsICsgMSkgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKKyBi cmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAK KygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJp Z2ludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoYmln aW50X3ZhbCArIDEpIGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOwor IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IAorKDEgcm93KQorCistLSBtaXNtYXRjaGluZyBleHByZXNzaW9uCitzZWxlY3QgYnJpbnNv cnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9t IGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsIC0gMSknLCAxMDAwLCBmYWxz ZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90IGZvdW5kCitDT05URVhUOiAgUEwvcGdTUUwg ZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4p IGxpbmUgMzEgYXQgUkFJU0UKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2Vs ZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIg YnkgKGJpZ2ludF92YWwgLSAxKSBkZXNjJywgMTAwMCwgdHJ1ZSk7CitFUlJPUjogIEJSSU4g U29ydDogbm90IGZvdW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRf Y2hlY2tfb3JkZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMzEgYXQgUkFJU0UK K3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsg MSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgLSAx KSBsaW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91 bmQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmlu Zyh0ZXh0LGludGVnZXIsYm9vbGVhbikgbGluZSAzMSBhdCBSQUlTRQorc2VsZWN0IGJyaW5z b3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwgZnJv bSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCAtIDEpIGRlc2MgbGltaXQg MTAwJywgMTAwLCB0cnVlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRF WFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGlu dGVnZXIsYm9vbGVhbikgbGluZSAzMSBhdCBSQUlTRQorc2VsZWN0IGJyaW5zb3J0X2NoZWNr X29yZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3Nv cnRfdGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCAtIDEpIGxpbWl0IDEwMCBvZmZzZXQgMTAw JywgMTAwLCBmYWxzZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90IGZvdW5kCitDT05URVhU OiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcodGV4dCxpbnRl Z2VyLGJvb2xlYW4pIGxpbmUgMzEgYXQgUkFJU0UKK3NlbGVjdCBicmluc29ydF9jaGVja19v cmRlcmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0 X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgLSAxKSBkZXNjIGxpbWl0IDEwMCBvZmZzZXQg MTAwJywgMTAwLCB0cnVlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRF WFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGlu dGVnZXIsYm9vbGVhbikgbGluZSAzMSBhdCBSQUlTRQorIAorLS0gbWF0Y2hpbmcgZXhwcmVz c2lvbgorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8 IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoJyd4Jycg fHwgdGV4dF92YWwpJywgMTAwMCwgZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5n IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZh bCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgZGVz YycsIDEwMDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tf b3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5f c29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgbGltaXQgMTAwJywgMTAw LCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmlu Zygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rl c3Qgb3JkZXIgYnkgKCcneCcnIHx8IHRleHRfdmFsKSBkZXNjIGxpbWl0IDEwMCcsIDEwMCwg dHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygn c2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qg b3JkZXIgYnkgKCcneCcnIHx8IHRleHRfdmFsKSBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEw MCwgZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJp bmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90 ZXN0IG9yZGVyIGJ5ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgZGVzYyBsaW1pdCAxMDAgb2Zmc2V0 IDEwMCcsIDEwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKKy0tIG1pc21hdGNoaW5nIGV4cHJl c3Npb24KK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8 fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneScn IHx8IHRleHRfdmFsKScsIDEwMDAsIGZhbHNlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3Qg Zm91bmQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRl cmluZyh0ZXh0LGludGVnZXIsYm9vbGVhbikgbGluZSAzMSBhdCBSQUlTRQorc2VsZWN0IGJy aW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2 YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoJyd5JycgfHwgdGV4dF92YWwpIGRl c2MnLCAxMDAwLCB0cnVlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRF WFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGlu dGVnZXIsYm9vbGVhbikgbGluZSAzMSBhdCBSQUlTRQorc2VsZWN0IGJyaW5zb3J0X2NoZWNr X29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBicmlu X3NvcnRfdGVzdCBvcmRlciBieSAoJyd5JycgfHwgdGV4dF92YWwpIGxpbWl0IDEwMCcsIDEw MCwgZmFsc2UpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAorQ09OVEVYVDogIFBM L3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHRleHQsaW50ZWdlcixi b29sZWFuKSBsaW5lIDMxIGF0IFJBSVNFCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJp bmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90 ZXN0IG9yZGVyIGJ5ICgnJ3knJyB8fCB0ZXh0X3ZhbCkgZGVzYyBsaW1pdCAxMDAnLCAxMDAs IHRydWUpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAorQ09OVEVYVDogIFBML3Bn U1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHRleHQsaW50ZWdlcixib29s ZWFuKSBsaW5lIDMxIGF0IFJBSVNFCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmco J3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0 IG9yZGVyIGJ5ICgnJ3knJyB8fCB0ZXh0X3ZhbCkgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAx MDAsIGZhbHNlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRFWFQ6ICBQ TC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGludGVnZXIs Ym9vbGVhbikgbGluZSAzMSBhdCBSQUlTRQorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVy aW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBicmluX3NvcnRf dGVzdCBvcmRlciBieSAoJyd5JycgfHwgdGV4dF92YWwpIGRlc2MgbGltaXQgMTAwIG9mZnNl dCAxMDAnLCAxMDAsIHRydWUpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAorQ09O VEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHRleHQs aW50ZWdlcixib29sZWFuKSBsaW5lIDMxIGF0IFJBSVNFCisgCistLSBtYXRjaGluZyBleHBy ZXNzaW9uCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92 YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwg KyAxKScsIDEwMDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2No ZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9z b3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsICsgMSkgZGVzYycsIDEwMDAsIHRydWUpOwor IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAo aW5ldF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5l dF92YWwgKyAxKSBsaW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVja19v cmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2Vs ZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMg dmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsICsgMSkgZGVzYyBs aW1pdCAxMDAnLCAxMDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRf Y2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmlu X3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwgKyAxKSBsaW1pdCAxMDAgb2Zmc2V0IDEw MCcsIDEwMCwgZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tf b3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRf dGVzdCBvcmRlciBieSAoaW5ldF92YWwgKyAxKSBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAw JywgMTAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworLS0gbWlzbWF0Y2hpbmcgZXhwcmVzc2lv bgorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsg MSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsIC0gMSkn LCAxMDAwLCBmYWxzZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90IGZvdW5kCitDT05URVhU OiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcodGV4dCxpbnRl Z2VyLGJvb2xlYW4pIGxpbmUgMzEgYXQgUkFJU0UKK3NlbGVjdCBicmluc29ydF9jaGVja19v cmRlcmluZygnc2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90 ZXN0IG9yZGVyIGJ5IChpbmV0X3ZhbCAtIDEpIGRlc2MnLCAxMDAwLCB0cnVlKTsKK0VSUk9S OiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBi cmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGludGVnZXIsYm9vbGVhbikgbGluZSAzMSBh dCBSQUlTRQorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRf dmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFs IC0gMSkgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90 IGZvdW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3Jk ZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMzEgYXQgUkFJU0UKK3NlbGVjdCBi cmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBm cm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0X3ZhbCAtIDEpIGRlc2MgbGltaXQg MTAwJywgMTAwLCB0cnVlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRF WFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGlu dGVnZXIsYm9vbGVhbikgbGluZSAzMSBhdCBSQUlTRQorc2VsZWN0IGJyaW5zb3J0X2NoZWNr X29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0 X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsIC0gMSkgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAx MDAsIGZhbHNlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRFWFQ6ICBQ TC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGludGVnZXIs Ym9vbGVhbikgbGluZSAzMSBhdCBSQUlTRQorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVy aW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qg b3JkZXIgYnkgKGluZXRfdmFsIC0gMSkgZGVzYyBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEw MCwgdHJ1ZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90IGZvdW5kCitDT05URVhUOiAgUEwv cGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcodGV4dCxpbnRlZ2VyLGJv b2xlYW4pIGxpbmUgMzEgYXQgUkFJU0UKK2Ryb3AgdGFibGUgYnJpbl9zb3J0X3Rlc3Q7CmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlIGIvc3JjL3Rl c3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQppbmRleCBhOTMwZGZlNDhjLi4zZGI1Zjkz ZGVhIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCisr KyBiL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKQEAgLTEzMiwzICsxMzIs OSBAQCB0ZXN0OiBldmVudF90cmlnZ2VyIG9pZGpvaW5zCiAKICMgdGhpcyB0ZXN0IGFsc28g dXNlcyBldmVudCB0cmlnZ2Vycywgc28gbGlrZXdpc2UgcnVuIGl0IGJ5IGl0c2VsZgogdGVz dDogZmFzdF9kZWZhdWx0CisKKyMgdHJ5IHNvcnRpbmcgdXNpbmcgQlJJTiBpbmRleAordGVz dDogYnJpbl9zb3J0Cit0ZXN0OiBicmluX3NvcnRfbXVsdGkKK3Rlc3Q6IGJyaW5fc29ydF9l eHBycwordGVzdDogYnJpbl9zb3J0X211bHRpX2V4cHJzCmRpZmYgLS1naXQgYS9zcmMvdGVz dC9yZWdyZXNzL3NxbC9icmluX3NvcnQuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvYnJp bl9zb3J0LnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5mNDQ1 OGJkYzM4Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvYnJpbl9z b3J0LnNxbApAQCAtMCwwICsxLDIzOCBAQAorLS0gZnVuY3Rpb24gdG8gdmVyaWZ5IHZhcmlv dXMgc29ydC1yZWxhdGVkIGRhdGEgKHRvdGFsIHJvd3MsIG9yZGVyaW5nKQorY3JlYXRlIG9y IHJlcGxhY2UgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcocF9zcWwgdGV4dCwg cF9yb3dzX2V4cGVjdGVkIGludCwgcF9kZXNjIGJvb2xlYW4pIHJldHVybnMgdm9pZCBhcyAk JAorZGVjbGFyZQorICAgIHZfY3VycyByZWZjdXJzb3I7CisgICAgdl9yb3cgcmVjb3JkOwor ICAgIHZfcHJldiByZWNvcmQ7CisgICAgdl9icmluX3NvcnRfZm91bmQgYm9vbCA6PSBmYWxz ZTsKKyAgICB2X2NvdW50IGludCA6PSAwOworYmVnaW4KKworICAgIC0tIG5lZWRlZCBiZWNh dXNlIHRoZSBwX3NxbCBxdWVyeSBoYXMgZGlmZmVyZW50IGRhdGEgdHlwZXMKKyAgICBleGVj dXRlICdkaXNjYXJkIHBsYW5zJzsKKworICAgIE9QRU4gdl9jdXJzIE5PIFNDUk9MTCBGT1Ig RVhFQ1VURSBmb3JtYXQoJ2V4cGxhaW4gJXMnLCBwX3NxbCk7CisKKyAgICBMT09QCisgICAg ICAgIEZFVENIIHZfY3VycyBJTlRPIHZfcm93OworCisgICAgICAgIElGIE5PVCBGT1VORCBU SEVOCisgICAgICAgICAgICBFWElUOworICAgICAgICBFTkQgSUY7CisKKyAgICAgICAgSUYg dl9yb3c6OnRleHQgTElLRSAnJUJSSU4gU29ydCUnIFRIRU4KKyAgICAgICAgICAgIHZfYnJp bl9zb3J0X2ZvdW5kIDo9IHRydWU7CisgICAgICAgICAgICBFWElUOworICAgICAgICBFTkQg SUY7CisgICAgRU5EIExPT1A7CisKKyAgICBDTE9TRSB2X2N1cnM7CisKKyAgICBJRiBOT1Qg dl9icmluX3NvcnRfZm91bmQgVEhFTgorICAgICAgICBSQUlTRSBFWENFUFRJT04gJ0JSSU4g U29ydDogbm90IGZvdW5kJzsKKyAgICBFTkQgSUY7CisKKyAgICBPUEVOIHZfY3VycyBOTyBT Q1JPTEwgRk9SIEVYRUNVVEUgZm9ybWF0KHBfc3FsKTsKKworICAgIExPT1AKKyAgICAgICAg RkVUQ0ggdl9jdXJzIElOVE8gdl9yb3c7CisKKyAgICAgICAgSUYgTk9UIEZPVU5EIFRIRU4K KyAgICAgICAgICAgIEVYSVQ7CisgICAgICAgIEVORCBJRjsKKworICAgICAgICBJRiB2X3By ZXYgSVMgTk9UIE5VTEwgVEhFTgorICAgICAgICAgICAgSUYgdl9wcmV2LnZhbCA+IHZfcm93 LnZhbCBBTkQgTk9UIHBfZGVzYyBUSEVOCisgICAgICAgICAgICAgICAgUkFJU0UgRVhDRVBU SU9OICdvcmRlcmluZyBtaXNtYXRjaCAlID4gJSAoYXNjKScsIHZfcHJldi52YWwsIHZfcm93 LnZhbDsKKyAgICAgICAgICAgIEVORCBJRjsKKyAgICAgICAgICAgIElGIHZfcHJldi52YWwg PCB2X3Jvdy52YWwgQU5EIHBfZGVzYyBUSEVOCisgICAgICAgICAgICAgICAgUkFJU0UgRVhD RVBUSU9OICdvcmRlcmluZyBtaXNtYXRjaCAlIDwgJSAoZGVzYyknLCB2X3ByZXYudmFsLCB2 X3Jvdy52YWw7CisgICAgICAgICAgICBFTkQgSUY7CisgICAgICAgIEVORCBJRjsKKworICAg ICAgICB2X3ByZXYgOj0gdl9yb3c7CisgICAgICAgIHZfY291bnQgOj0gdl9jb3VudCArIDE7 CisgICAgRU5EIExPT1A7CisKKyAgICBDTE9TRSB2X2N1cnM7CisKKyAgICBJRiB2X2NvdW50 ICE9IHBfcm93c19leHBlY3RlZCBUSEVOCisgICAgICAgIFJBSVNFIEVYQ0VQVElPTiAnY291 bnQgbWlzbWF0Y2g6ICUgIT0gJScsIHZfY291bnQsIHBfcm93c19leHBlY3RlZDsKKyAgICBF TkQgSUY7CisKK2VuZDsKKyQkIGxhbmd1YWdlIHBscGdzcWw7CisKK2NyZWF0ZSB0YWJsZSBi cmluX3NvcnRfdGVzdCAoaW50X3ZhbCBpbnQsIGJpZ2ludF92YWwgYmlnaW50LCB0ZXh0X3Zh bCB0ZXh0LCBpbmV0X3ZhbCBpbmV0KSB3aXRoIChmaWxsZmFjdG9yPTEwKTsKKworLS0gc2Vx dWVudGlhbCB2YWx1ZXMKK2luc2VydCBpbnRvIGJyaW5fc29ydF90ZXN0CitzZWxlY3QKKwlp LAorCS1pLAktLSBzYW1lIGFzIGludCwgYnV0IGF0IGxlYXN0IG9wcG9zaXRlCisJbHBhZChp Ojp0ZXh0IHx8IG1kNShpOjp0ZXh0KSwgNDAsICcwJyksCisJJzEwLjAuMC4wJzo6aW5ldCAr IGkKK2Zyb20gZ2VuZXJhdGVfc2VyaWVzKDEsMTAwMCkgcyhpKTsKKworLS0gY3JlYXRlIGJy aW4gaW5kZXhlcyBvbiBpbmRpdmlkdWFsIGNvbHVtbnMKK2NyZWF0ZSBpbmRleCBicmluX3Nv cnRfdGVzdF9pbnRfaWR4IG9uIGJyaW5fc29ydF90ZXN0IHVzaW5nIGJyaW4gKGludF92YWwp IHdpdGggKHBhZ2VzX3Blcl9yYW5nZT0xKTsKK2NyZWF0ZSBpbmRleCBicmluX3NvcnRfdGVz dF9iaWdpbnRfaWR4IG9uIGJyaW5fc29ydF90ZXN0IHVzaW5nIGJyaW4gKGJpZ2ludF92YWwp IHdpdGggKHBhZ2VzX3Blcl9yYW5nZT0xKTsKK2NyZWF0ZSBpbmRleCBicmluX3NvcnRfdGVz dF90ZXh0X2lkeCBvbiBicmluX3NvcnRfdGVzdCB1c2luZyBicmluICh0ZXh0X3ZhbCkgd2l0 aCAocGFnZXNfcGVyX3JhbmdlPTEpOworY3JlYXRlIGluZGV4IGJyaW5fc29ydF90ZXN0X2lu ZXRfaWR4IG9uIGJyaW5fc29ydF90ZXN0IHVzaW5nIGJyaW4gKGluZXRfdmFsIGluZXRfbWlu bWF4X29wcykgd2l0aCAocGFnZXNfcGVyX3JhbmdlPTEpOworCistLSAKK3ZhY3V1bSBhbmFs eXplIGJyaW5fc29ydF90ZXN0OworCitzZXQgZW5hYmxlX3NlcXNjYW4gPSBvZmY7CisKK3Nl bGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGludF92YWwgYXMgdmFsIGZy b20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW50X3ZhbCcsIDEwMDAsIGZhbHNlKTsKK3Nl bGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGludF92YWwgYXMgdmFsIGZy b20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW50X3ZhbCBkZXNjJywgMTAwMCwgdHJ1ZSk7 CisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGludF92YWwgYXMg dmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW50X3ZhbCBsaW1pdCAxMDAnLCAx MDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGlu dF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW50X3ZhbCBkZXNj IGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRl cmluZygnc2VsZWN0IGludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIg YnkgaW50X3ZhbCBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0 IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgaW50X3ZhbCBhcyB2YWwgZnJvbSBi cmluX3NvcnRfdGVzdCBvcmRlciBieSBpbnRfdmFsIGRlc2MgbGltaXQgMTAwIG9mZnNldCAx MDAnLCAxMDAsIHRydWUpOworCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygn c2VsZWN0IGJpZ2ludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkg YmlnaW50X3ZhbCcsIDEwMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRl cmluZygnc2VsZWN0IGJpZ2ludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3Jk ZXIgYnkgYmlnaW50X3ZhbCBkZXNjJywgMTAwMCwgdHJ1ZSk7CisKK3NlbGVjdCBicmluc29y dF9jaGVja19vcmRlcmluZygnc2VsZWN0IGJpZ2ludF92YWwgYXMgdmFsIGZyb20gYnJpbl9z b3J0X3Rlc3Qgb3JkZXIgYnkgYmlnaW50X3ZhbCBsaW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsK K3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGJpZ2ludF92YWwgYXMg dmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgYmlnaW50X3ZhbCBkZXNjIGxpbWl0 IDEwMCcsIDEwMCwgdHJ1ZSk7CisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygn c2VsZWN0IGJpZ2ludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkg YmlnaW50X3ZhbCBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0 IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgYmlnaW50X3ZhbCBhcyB2YWwgZnJv bSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBiaWdpbnRfdmFsIGRlc2MgbGltaXQgMTAwIG9m ZnNldCAxMDAnLCAxMDAsIHRydWUpOworCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRl cmluZygnc2VsZWN0IGluZXRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVy IGJ5IGluZXRfdmFsJywgMTAwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nKCdzZWxlY3QgaW5ldF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3Jk ZXIgYnkgaW5ldF92YWwgZGVzYycsIDEwMDAsIHRydWUpOworCitzZWxlY3QgYnJpbnNvcnRf Y2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbmV0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRf dGVzdCBvcmRlciBieSBpbmV0X3ZhbCBsaW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVj dCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGluZXRfdmFsIGFzIHZhbCBmcm9t IGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGluZXRfdmFsIGRlc2MgbGltaXQgMTAwJywgMTAw LCB0cnVlKTsKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgaW5l dF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW5ldF92YWwgbGlt aXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVj a19vcmRlcmluZygnc2VsZWN0IGluZXRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0 IG9yZGVyIGJ5IGluZXRfdmFsIGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRy dWUpOworCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IHRleHRf dmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IHRleHRfdmFsJywgMTAw MCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgdGV4 dF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgdGV4dF92YWwgZGVz YycsIDEwMDAsIHRydWUpOworCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3Nl bGVjdCB0ZXh0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSB0ZXh0 X3ZhbCBsaW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19v cmRlcmluZygnc2VsZWN0IHRleHRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9y ZGVyIGJ5IHRleHRfdmFsIGRlc2MgbGltaXQgMTAwJywgMTAwLCB0cnVlKTsKKworc2VsZWN0 IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgdGV4dF92YWwgYXMgdmFsIGZyb20g YnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgdGV4dF92YWwgbGltaXQgMTAwIG9mZnNldCAxMDAn LCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0 IHRleHRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IHRleHRfdmFs IGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworCisKKy0tIHNlbWkt cmFuZG9tIGRhdGEgKHNlcXVlbnRpYWwgKyByYW5kb21uZXNzKQordHJ1bmNhdGUgdGFibGUg YnJpbl9zb3J0X3Rlc3Q7CitpbnNlcnQgaW50byBicmluX3NvcnRfdGVzdAorc2VsZWN0CisJ aSArICgxMDAgKiByYW5kb20oKSk6OmludCwKKwktKGkgKyAoMTAwICogcmFuZG9tKCkpOjpp bnQpLAktLSBzYW1lIGFzIGludCwgYnV0IGF0IGxlYXN0IG9wcG9zaXRlCisJbHBhZCgoaSAr ICgxMDAgKiByYW5kb20oKSk6OmludCk6OnRleHQgfHwgbWQ1KGk6OnRleHQpLCA0MCwgJzAn KSwKKwknMTAuMC4wLjAnOjppbmV0ICsgKGkgKyAxMDAgKiByYW5kb20oKTo6aW50KQorZnJv bSBnZW5lcmF0ZV9zZXJpZXMoMSwxMDAwKSBzKGkpOworCityZWluZGV4IHRhYmxlIGJyaW5f c29ydF90ZXN0OworCit2YWN1dW0gYW5hbHl6ZSBicmluX3NvcnRfdGVzdDsKKworCitzZWxl Y3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbnRfdmFsIGFzIHZhbCBmcm9t IGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGludF92YWwnLCAxMDAwLCBmYWxzZSk7CitzZWxl Y3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbnRfdmFsIGFzIHZhbCBmcm9t IGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGludF92YWwgZGVzYycsIDEwMDAsIHRydWUpOwor CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbnRfdmFsIGFzIHZh bCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGludF92YWwgbGltaXQgMTAwJywgMTAw LCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbnRf dmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGludF92YWwgZGVzYyBs aW1pdCAxMDAnLCAxMDAsIHRydWUpOworCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJp bmcoJ3NlbGVjdCBpbnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5 IGludF92YWwgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBi cmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGludF92YWwgYXMgdmFsIGZyb20gYnJp bl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW50X3ZhbCBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAw JywgMTAwLCB0cnVlKTsKKworIAorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdz ZWxlY3QgYmlnaW50X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBi aWdpbnRfdmFsJywgMTAwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVy aW5nKCdzZWxlY3QgYmlnaW50X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRl ciBieSBiaWdpbnRfdmFsIGRlc2MnLCAxMDAwLCB0cnVlKTsKKworc2VsZWN0IGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgYmlnaW50X3ZhbCBhcyB2YWwgZnJvbSBicmluX3Nv cnRfdGVzdCBvcmRlciBieSBiaWdpbnRfdmFsIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOwor c2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgYmlnaW50X3ZhbCBhcyB2 YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBiaWdpbnRfdmFsIGRlc2MgbGltaXQg MTAwJywgMTAwLCB0cnVlKTsKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdz ZWxlY3QgYmlnaW50X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBi aWdpbnRfdmFsIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCBmYWxzZSk7CitzZWxlY3Qg YnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBiaWdpbnRfdmFsIGFzIHZhbCBmcm9t IGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGJpZ2ludF92YWwgZGVzYyBsaW1pdCAxMDAgb2Zm c2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CisKKyAKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRl cmluZygnc2VsZWN0IGluZXRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVy IGJ5IGluZXRfdmFsJywgMTAwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nKCdzZWxlY3QgaW5ldF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3Jk ZXIgYnkgaW5ldF92YWwgZGVzYycsIDEwMDAsIHRydWUpOworCitzZWxlY3QgYnJpbnNvcnRf Y2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbmV0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRf dGVzdCBvcmRlciBieSBpbmV0X3ZhbCBsaW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVj dCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGluZXRfdmFsIGFzIHZhbCBmcm9t IGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGluZXRfdmFsIGRlc2MgbGltaXQgMTAwJywgMTAw LCB0cnVlKTsKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgaW5l dF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW5ldF92YWwgbGlt aXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVj a19vcmRlcmluZygnc2VsZWN0IGluZXRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0 IG9yZGVyIGJ5IGluZXRfdmFsIGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRy dWUpOworCisgCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCB0ZXh0 X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSB0ZXh0X3ZhbCcsIDEw MDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IHRl eHRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IHRleHRfdmFsIGRl c2MnLCAxMDAwLCB0cnVlKTsKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdz ZWxlY3QgdGV4dF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgdGV4 dF92YWwgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tf b3JkZXJpbmcoJ3NlbGVjdCB0ZXh0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBv cmRlciBieSB0ZXh0X3ZhbCBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CisKK3NlbGVj dCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IHRleHRfdmFsIGFzIHZhbCBmcm9t IGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IHRleHRfdmFsIGxpbWl0IDEwMCBvZmZzZXQgMTAw JywgMTAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVj dCB0ZXh0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSB0ZXh0X3Zh bCBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCB0cnVlKTsKKworCistLSByYW5k b20gZGF0YQordHJ1bmNhdGUgdGFibGUgYnJpbl9zb3J0X3Rlc3Q7CitpbnNlcnQgaW50byBi cmluX3NvcnRfdGVzdAorc2VsZWN0CisJKDEwMDAgKiByYW5kb20oKSk6OmludCwKKwktKCgx MDAwICogcmFuZG9tKCkpOjppbnQpLAktLSBzYW1lIGFzIGludCwgYnV0IGF0IGxlYXN0IG9w cG9zaXRlCisJbHBhZCgoKDEwMDAgKiByYW5kb20oKSk6OmludCk6OnRleHQgfHwgbWQ1KGk6 OnRleHQpLCA0MCwgJzAnKSwKKwknMTAuMC4wLjAnOjppbmV0ICsgKDEwMDAgKiByYW5kb20o KTo6aW50KQorZnJvbSBnZW5lcmF0ZV9zZXJpZXMoMSwxMDAwKSBzKGkpOworCityZWluZGV4 IHRhYmxlIGJyaW5fc29ydF90ZXN0OworCit2YWN1dW0gYW5hbHl6ZSBicmluX3NvcnRfdGVz dDsKKworIAorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgaW50X3Zh bCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBpbnRfdmFsJywgMTAwMCwg ZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgaW50X3Zh bCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBpbnRfdmFsIGRlc2MnLCAx MDAwLCB0cnVlKTsKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3Qg aW50X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBpbnRfdmFsIGxp bWl0IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5n KCdzZWxlY3QgaW50X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBp bnRfdmFsIGRlc2MgbGltaXQgMTAwJywgMTAwLCB0cnVlKTsKKworc2VsZWN0IGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgaW50X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRf dGVzdCBvcmRlciBieSBpbnRfdmFsIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCBmYWxz ZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbnRfdmFsIGFz IHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGludF92YWwgZGVzYyBsaW1pdCAx MDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CisKKyAKK3NlbGVjdCBicmluc29ydF9jaGVj a19vcmRlcmluZygnc2VsZWN0IGJpZ2ludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rl c3Qgb3JkZXIgYnkgYmlnaW50X3ZhbCcsIDEwMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29y dF9jaGVja19vcmRlcmluZygnc2VsZWN0IGJpZ2ludF92YWwgYXMgdmFsIGZyb20gYnJpbl9z b3J0X3Rlc3Qgb3JkZXIgYnkgYmlnaW50X3ZhbCBkZXNjJywgMTAwMCwgdHJ1ZSk7CisKK3Nl bGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGJpZ2ludF92YWwgYXMgdmFs IGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgYmlnaW50X3ZhbCBsaW1pdCAxMDAnLCAx MDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGJp Z2ludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgYmlnaW50X3Zh bCBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CisKK3NlbGVjdCBicmluc29ydF9jaGVj a19vcmRlcmluZygnc2VsZWN0IGJpZ2ludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rl c3Qgb3JkZXIgYnkgYmlnaW50X3ZhbCBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFs c2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgYmlnaW50X3Zh bCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBiaWdpbnRfdmFsIGRlc2Mg bGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworCisgCitzZWxlY3QgYnJpbnNv cnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbmV0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3Nv cnRfdGVzdCBvcmRlciBieSBpbmV0X3ZhbCcsIDEwMDAsIGZhbHNlKTsKK3NlbGVjdCBicmlu c29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGluZXRfdmFsIGFzIHZhbCBmcm9tIGJyaW5f c29ydF90ZXN0IG9yZGVyIGJ5IGluZXRfdmFsIGRlc2MnLCAxMDAwLCB0cnVlKTsKKworc2Vs ZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgaW5ldF92YWwgYXMgdmFsIGZy b20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW5ldF92YWwgbGltaXQgMTAwJywgMTAwLCBm YWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbmV0X3Zh bCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBpbmV0X3ZhbCBkZXNjIGxp bWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmlu Zygnc2VsZWN0IGluZXRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5 IGluZXRfdmFsIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCBmYWxzZSk7CitzZWxlY3Qg YnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbmV0X3ZhbCBhcyB2YWwgZnJvbSBi cmluX3NvcnRfdGVzdCBvcmRlciBieSBpbmV0X3ZhbCBkZXNjIGxpbWl0IDEwMCBvZmZzZXQg MTAwJywgMTAwLCB0cnVlKTsKKworIAorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5n KCdzZWxlY3QgdGV4dF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkg dGV4dF92YWwnLCAxMDAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJp bmcoJ3NlbGVjdCB0ZXh0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBi eSB0ZXh0X3ZhbCBkZXNjJywgMTAwMCwgdHJ1ZSk7CisKK3NlbGVjdCBicmluc29ydF9jaGVj a19vcmRlcmluZygnc2VsZWN0IHRleHRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0 IG9yZGVyIGJ5IHRleHRfdmFsIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0IGJy aW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgdGV4dF92YWwgYXMgdmFsIGZyb20gYnJp bl9zb3J0X3Rlc3Qgb3JkZXIgYnkgdGV4dF92YWwgZGVzYyBsaW1pdCAxMDAnLCAxMDAsIHRy dWUpOworCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCB0ZXh0X3Zh bCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSB0ZXh0X3ZhbCBsaW1pdCAx MDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nKCdzZWxlY3QgdGV4dF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3Jk ZXIgYnkgdGV4dF92YWwgZGVzYyBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7 CisKKworZHJvcCB0YWJsZSBicmluX3NvcnRfdGVzdDsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL2JyaW5fc29ydF9leHBycy5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3Nx bC9icmluX3NvcnRfZXhwcnMuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAuLmRlMWYxZTdkOGYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdyZXNz L3NxbC9icmluX3NvcnRfZXhwcnMuc3FsCkBAIC0wLDAgKzEsMzczIEBACistLSBmdW5jdGlv biB0byB2ZXJpZnkgdmFyaW91cyBzb3J0LXJlbGF0ZWQgZGF0YSAodG90YWwgcm93cywgb3Jk ZXJpbmcpCitjcmVhdGUgb3IgcmVwbGFjZSBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRl cmluZyhwX3NxbCB0ZXh0LCBwX3Jvd3NfZXhwZWN0ZWQgaW50LCBwX2Rlc2MgYm9vbGVhbikg cmV0dXJucyB2b2lkIGFzICQkCitkZWNsYXJlCisgICAgdl9jdXJzIHJlZmN1cnNvcjsKKyAg ICB2X3JvdyByZWNvcmQ7CisgICAgdl9wcmV2IHJlY29yZDsKKyAgICB2X2JyaW5fc29ydF9m b3VuZCBib29sIDo9IGZhbHNlOworICAgIHZfY291bnQgaW50IDo9IDA7CitiZWdpbgorCisg ICAgLS0gbmVlZGVkIGJlY2F1c2UgdGhlIHBfc3FsIHF1ZXJ5IGhhcyBkaWZmZXJlbnQgZGF0 YSB0eXBlcworICAgIGV4ZWN1dGUgJ2Rpc2NhcmQgcGxhbnMnOworCisgICAgT1BFTiB2X2N1 cnMgTk8gU0NST0xMIEZPUiBFWEVDVVRFIGZvcm1hdCgnZXhwbGFpbiAlcycsIHBfc3FsKTsK KworICAgIExPT1AKKyAgICAgICAgRkVUQ0ggdl9jdXJzIElOVE8gdl9yb3c7CisKKyAgICAg ICAgSUYgTk9UIEZPVU5EIFRIRU4KKyAgICAgICAgICAgIEVYSVQ7CisgICAgICAgIEVORCBJ RjsKKworICAgICAgICBJRiB2X3Jvdzo6dGV4dCBMSUtFICclQlJJTiBTb3J0JScgVEhFTgor ICAgICAgICAgICAgdl9icmluX3NvcnRfZm91bmQgOj0gdHJ1ZTsKKyAgICAgICAgICAgIEVY SVQ7CisgICAgICAgIEVORCBJRjsKKyAgICBFTkQgTE9PUDsKKworICAgIENMT1NFIHZfY3Vy czsKKworICAgIElGIE5PVCB2X2JyaW5fc29ydF9mb3VuZCBUSEVOCisgICAgICAgIFJBSVNF IEVYQ0VQVElPTiAnQlJJTiBTb3J0OiBub3QgZm91bmQnOworICAgIEVORCBJRjsKKworICAg IE9QRU4gdl9jdXJzIE5PIFNDUk9MTCBGT1IgRVhFQ1VURSBmb3JtYXQocF9zcWwpOworCisg ICAgTE9PUAorICAgICAgICBGRVRDSCB2X2N1cnMgSU5UTyB2X3JvdzsKKworICAgICAgICBJ RiBOT1QgRk9VTkQgVEhFTgorICAgICAgICAgICAgRVhJVDsKKyAgICAgICAgRU5EIElGOwor CisgICAgICAgIElGIHZfcHJldiBJUyBOT1QgTlVMTCBUSEVOCisgICAgICAgICAgICBJRiB2 X3ByZXYudmFsID4gdl9yb3cudmFsIEFORCBOT1QgcF9kZXNjIFRIRU4KKyAgICAgICAgICAg ICAgICBSQUlTRSBFWENFUFRJT04gJ29yZGVyaW5nIG1pc21hdGNoICUgPiAlIChhc2MpJywg dl9wcmV2LnZhbCwgdl9yb3cudmFsOworICAgICAgICAgICAgRU5EIElGOworICAgICAgICAg ICAgSUYgdl9wcmV2LnZhbCA8IHZfcm93LnZhbCBBTkQgcF9kZXNjIFRIRU4KKyAgICAgICAg ICAgICAgICBSQUlTRSBFWENFUFRJT04gJ29yZGVyaW5nIG1pc21hdGNoICUgPCAlIChkZXNj KScsIHZfcHJldi52YWwsIHZfcm93LnZhbDsKKyAgICAgICAgICAgIEVORCBJRjsKKyAgICAg ICAgRU5EIElGOworCisgICAgICAgIHZfcHJldiA6PSB2X3JvdzsKKyAgICAgICAgdl9jb3Vu dCA6PSB2X2NvdW50ICsgMTsKKyAgICBFTkQgTE9PUDsKKworICAgIENMT1NFIHZfY3VyczsK KworICAgIElGIHZfY291bnQgIT0gcF9yb3dzX2V4cGVjdGVkIFRIRU4KKyAgICAgICAgUkFJ U0UgRVhDRVBUSU9OICdjb3VudCBtaXNtYXRjaDogJSAhPSAlJywgdl9jb3VudCwgcF9yb3dz X2V4cGVjdGVkOworICAgIEVORCBJRjsKKworZW5kOworJCQgbGFuZ3VhZ2UgcGxwZ3NxbDsK KworY3JlYXRlIHRhYmxlIGJyaW5fc29ydF90ZXN0IChpbnRfdmFsIGludCwgYmlnaW50X3Zh bCBiaWdpbnQsIHRleHRfdmFsIHRleHQsIGluZXRfdmFsIGluZXQpIHdpdGggKGZpbGxmYWN0 b3I9MTApOworCistLSBzZXF1ZW50aWFsIHZhbHVlcworaW5zZXJ0IGludG8gYnJpbl9zb3J0 X3Rlc3QKK3NlbGVjdAorCWksCisJLWksCS0tIHNhbWUgYXMgaW50LCBidXQgYXQgbGVhc3Qg b3Bwb3NpdGUKKwlscGFkKGk6OnRleHQgfHwgbWQ1KGk6OnRleHQpLCA0MCwgJzAnKSwKKwkn MTAuMC4wLjAnOjppbmV0ICsgaQorZnJvbSBnZW5lcmF0ZV9zZXJpZXMoMSwxMDAwKSBzKGkp OworCistLSBjcmVhdGUgYnJpbiBpbmRleGVzIG9uIGluZGl2aWR1YWwgY29sdW1ucworY3Jl YXRlIGluZGV4IGJyaW5fc29ydF90ZXN0X2ludF9pZHggb24gYnJpbl9zb3J0X3Rlc3QgdXNp bmcgYnJpbiAoKGludF92YWwgKyAxKSkgd2l0aCAocGFnZXNfcGVyX3JhbmdlPTEpOworY3Jl YXRlIGluZGV4IGJyaW5fc29ydF90ZXN0X2JpZ2ludF9pZHggb24gYnJpbl9zb3J0X3Rlc3Qg dXNpbmcgYnJpbiAoKGJpZ2ludF92YWwgKyAxKSkgd2l0aCAocGFnZXNfcGVyX3JhbmdlPTEp OworY3JlYXRlIGluZGV4IGJyaW5fc29ydF90ZXN0X3RleHRfaWR4IG9uIGJyaW5fc29ydF90 ZXN0IHVzaW5nIGJyaW4gKCgneCcgfHwgdGV4dF92YWwpKSB3aXRoIChwYWdlc19wZXJfcmFu Z2U9MSk7CitjcmVhdGUgaW5kZXggYnJpbl9zb3J0X3Rlc3RfaW5ldF9pZHggb24gYnJpbl9z b3J0X3Rlc3QgdXNpbmcgYnJpbiAoKGluZXRfdmFsICsgMSkgaW5ldF9taW5tYXhfb3BzKSB3 aXRoIChwYWdlc19wZXJfcmFuZ2U9MSk7CisKKy0tIAordmFjdXVtIGFuYWx5emUgYnJpbl9z b3J0X3Rlc3Q7CisKK3NldCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsKKyAKKy0tIG1hdGNoaW5n IGV4cHJlc3Npb24KK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChp bnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92 YWwgKyAxKScsIDEwMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmlu Zygnc2VsZWN0IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3Jk ZXIgYnkgKGludF92YWwgKyAxKSBkZXNjJywgMTAwMCwgdHJ1ZSk7CisKK3NlbGVjdCBicmlu c29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20g YnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgKyAxKSBsaW1pdCAxMDAnLCAxMDAs IGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbnRf dmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwg KyAxKSBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CisKK3NlbGVjdCBicmluc29ydF9j aGVja19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9z b3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgKyAxKSBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcs IDEwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3Qg KGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW50 X3ZhbCArIDEpIGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworCist LSBtaXNtYXRjaGluZyBleHByZXNzaW9uCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJp bmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9y ZGVyIGJ5IChpbnRfdmFsIC0gMSknLCAxMDAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRf Y2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5f c29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsIC0gMSkgZGVzYycsIDEwMDAsIHRydWUpOwor CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEp IGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsIC0gMSkgbGlt aXQgMTAwJywgMTAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmco J3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVy IGJ5IChpbnRfdmFsIC0gMSkgZGVzYyBsaW1pdCAxMDAnLCAxMDAsIHRydWUpOworCitzZWxl Y3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZh bCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsIC0gMSkgbGltaXQgMTAw IG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRl cmluZygnc2VsZWN0IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qg b3JkZXIgYnkgKGludF92YWwgLSAxKSBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAw LCB0cnVlKTsKKworCisgCistLSBtYXRjaGluZyBleHByZXNzaW9uCitzZWxlY3QgYnJpbnNv cnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9t IGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsICsgMSknLCAxMDAwLCBmYWxz ZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3Zh bCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFs ICsgMSkgZGVzYycsIDEwMDAsIHRydWUpOworCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3Jk ZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90 ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsICsgMSkgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7 CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCAr IDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsICsg MSkgZGVzYyBsaW1pdCAxMDAnLCAxMDAsIHRydWUpOworCitzZWxlY3QgYnJpbnNvcnRfY2hl Y2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5f c29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsICsgMSkgbGltaXQgMTAwIG9mZnNldCAx MDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2Vs ZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIg YnkgKGJpZ2ludF92YWwgKyAxKSBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCB0 cnVlKTsKKworLS0gbWlzbWF0Y2hpbmcgZXhwcmVzc2lvbgorc2VsZWN0IGJyaW5zb3J0X2No ZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmlu X3NvcnRfdGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCAtIDEpJywgMTAwMCwgZmFsc2UpOwor c2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAx KSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCAtIDEp IGRlc2MnLCAxMDAwLCB0cnVlKTsKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5n KCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBv cmRlciBieSAoYmlnaW50X3ZhbCAtIDEpIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworc2Vs ZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBh cyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCAtIDEpIGRl c2MgbGltaXQgMTAwJywgMTAwLCB0cnVlKTsKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRf dGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCAtIDEpIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywg MTAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAo YmlnaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChi aWdpbnRfdmFsIC0gMSkgZGVzYyBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7 CisKKyAKKy0tIG1hdGNoaW5nIGV4cHJlc3Npb24KK3NlbGVjdCBicmluc29ydF9jaGVja19v cmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9z b3J0X3Rlc3Qgb3JkZXIgYnkgKCcneCcnIHx8IHRleHRfdmFsKScsIDEwMDAsIGZhbHNlKTsK K3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0 X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneCcnIHx8IHRl eHRfdmFsKSBkZXNjJywgMTAwMCwgdHJ1ZSk7CisKK3NlbGVjdCBicmluc29ydF9jaGVja19v cmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9z b3J0X3Rlc3Qgb3JkZXIgYnkgKCcneCcnIHx8IHRleHRfdmFsKSBsaW1pdCAxMDAnLCAxMDAs IGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gn JyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcn eCcnIHx8IHRleHRfdmFsKSBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CisKK3NlbGVj dCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkg YXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneCcnIHx8IHRleHRfdmFs KSBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJv bSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoJyd4JycgfHwgdGV4dF92YWwpIGRlc2MgbGlt aXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworCistLSBtaXNtYXRjaGluZyBleHBy ZXNzaW9uCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4Jycg fHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3kn JyB8fCB0ZXh0X3ZhbCknLCAxMDAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tf b3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5f c29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3knJyB8fCB0ZXh0X3ZhbCkgZGVzYycsIDEwMDAsIHRy dWUpOworCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4Jycg fHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3kn JyB8fCB0ZXh0X3ZhbCkgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNv cnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBm cm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3knJyB8fCB0ZXh0X3ZhbCkgZGVzYyBs aW1pdCAxMDAnLCAxMDAsIHRydWUpOworCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJp bmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90 ZXN0IG9yZGVyIGJ5ICgnJ3knJyB8fCB0ZXh0X3ZhbCkgbGltaXQgMTAwIG9mZnNldCAxMDAn LCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0 ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIg YnkgKCcneScnIHx8IHRleHRfdmFsKSBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAw LCB0cnVlKTsKKworIAorLS0gbWF0Y2hpbmcgZXhwcmVzc2lvbgorc2VsZWN0IGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJp bl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsICsgMSknLCAxMDAwLCBmYWxzZSk7Citz ZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAxKSBh cyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwgKyAxKSBkZXNj JywgMTAwMCwgdHJ1ZSk7CisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2Vs ZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5 IChpbmV0X3ZhbCArIDEpIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5z b3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZyb20g YnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsICsgMSkgZGVzYyBsaW1pdCAxMDAn LCAxMDAsIHRydWUpOworCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVj dCAoaW5ldF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAo aW5ldF92YWwgKyAxKSBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2UpOworc2Vs ZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMg dmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsICsgMSkgZGVzYyBs aW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CisKKy0tIG1pc21hdGNoaW5nIGV4 cHJlc3Npb24KK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbmV0 X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0X3Zh bCAtIDEpJywgMTAwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5n KCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3Jk ZXIgYnkgKGluZXRfdmFsIC0gMSkgZGVzYycsIDEwMDAsIHRydWUpOworCitzZWxlY3QgYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2YWwgZnJv bSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwgLSAxKSBsaW1pdCAxMDAnLCAx MDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChp bmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0 X3ZhbCAtIDEpIGRlc2MgbGltaXQgMTAwJywgMTAwLCB0cnVlKTsKKworc2VsZWN0IGJyaW5z b3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZyb20g YnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsIC0gMSkgbGltaXQgMTAwIG9mZnNl dCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygn c2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVy IGJ5IChpbmV0X3ZhbCAtIDEpIGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRy dWUpOworCisKKy0tIHNlbWktcmFuZG9tIGRhdGEgKHNlcXVlbnRpYWwgKyByYW5kb21uZXNz KQordHJ1bmNhdGUgdGFibGUgYnJpbl9zb3J0X3Rlc3Q7CitpbnNlcnQgaW50byBicmluX3Nv cnRfdGVzdAorc2VsZWN0CisJaSArICgxMDAgKiByYW5kb20oKSk6OmludCwKKwktKGkgKyAo MTAwICogcmFuZG9tKCkpOjppbnQpLAktLSBzYW1lIGFzIGludCwgYnV0IGF0IGxlYXN0IG9w cG9zaXRlCisJbHBhZCgoaSArICgxMDAgKiByYW5kb20oKSk6OmludCk6OnRleHQgfHwgbWQ1 KGk6OnRleHQpLCA0MCwgJzAnKSwKKwknMTAuMC4wLjAnOjppbmV0ICsgKGkgKyAxMDAgKiBy YW5kb20oKTo6aW50KQorZnJvbSBnZW5lcmF0ZV9zZXJpZXMoMSwxMDAwKSBzKGkpOworCity ZWluZGV4IHRhYmxlIGJyaW5fc29ydF90ZXN0OworCit2YWN1dW0gYW5hbHl6ZSBicmluX3Nv cnRfdGVzdDsKKworIAorLS0gbWF0Y2hpbmcgZXhwcmVzc2lvbgorc2VsZWN0IGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmlu X3NvcnRfdGVzdCBvcmRlciBieSAoaW50X3ZhbCArIDEpJywgMTAwMCwgZmFsc2UpOworc2Vs ZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGludF92YWwgKyAxKSBhcyB2 YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW50X3ZhbCArIDEpIGRlc2MnLCAx MDAwLCB0cnVlKTsKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3Qg KGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW50 X3ZhbCArIDEpIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2No ZWNrX29yZGVyaW5nKCdzZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3Nv cnRfdGVzdCBvcmRlciBieSAoaW50X3ZhbCArIDEpIGRlc2MgbGltaXQgMTAwJywgMTAwLCB0 cnVlKTsKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGludF92 YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW50X3ZhbCAr IDEpIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNv cnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJy aW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsICsgMSkgZGVzYyBsaW1pdCAxMDAgb2Zm c2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CisKKy0tIG1pc21hdGNoaW5nIGV4cHJlc3Npb24KK3Nl bGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsgMSkgYXMg dmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgLSAxKScsIDEwMDAs IGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbnRf dmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwg LSAxKSBkZXNjJywgMTAwMCwgdHJ1ZSk7CisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRl cmluZygnc2VsZWN0IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qg b3JkZXIgYnkgKGludF92YWwgLSAxKSBsaW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVj dCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsgMSkgYXMgdmFs IGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgLSAxKSBkZXNjIGxpbWl0 IDEwMCcsIDEwMCwgdHJ1ZSk7CisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygn c2VsZWN0IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIg YnkgKGludF92YWwgLSAxKSBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2UpOwor c2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGludF92YWwgKyAxKSBh cyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW50X3ZhbCAtIDEpIGRlc2Mg bGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworCisKKyAKKy0tIG1hdGNoaW5n IGV4cHJlc3Npb24KK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChi aWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJp Z2ludF92YWwgKyAxKScsIDEwMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19v cmRlcmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0 X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgKyAxKSBkZXNjJywgMTAwMCwgdHJ1ZSk7CisK K3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsg MSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgKyAx KSBsaW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRl cmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rl c3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgKyAxKSBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1 ZSk7CisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRf dmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92 YWwgKyAxKSBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0IGJy aW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwg ZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCArIDEpIGRlc2MgbGlt aXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworCistLSBtaXNtYXRjaGluZyBleHBy ZXNzaW9uCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50 X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRf dmFsIC0gMSknLCAxMDAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJp bmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0 IG9yZGVyIGJ5IChiaWdpbnRfdmFsIC0gMSkgZGVzYycsIDEwMDAsIHRydWUpOworCitzZWxl Y3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFz IHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsIC0gMSkgbGlt aXQgMTAwJywgMTAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmco J3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9y ZGVyIGJ5IChiaWdpbnRfdmFsIC0gMSkgZGVzYyBsaW1pdCAxMDAnLCAxMDAsIHRydWUpOwor CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCAr IDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsIC0g MSkgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29y dF9jaGVja19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20g YnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgLSAxKSBkZXNjIGxpbWl0IDEw MCBvZmZzZXQgMTAwJywgMTAwLCB0cnVlKTsKKworIAorLS0gbWF0Y2hpbmcgZXhwcmVzc2lv bgorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRl eHRfdmFsKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoJyd4JycgfHwg dGV4dF92YWwpJywgMTAwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVy aW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBicmluX3NvcnRf dGVzdCBvcmRlciBieSAoJyd4JycgfHwgdGV4dF92YWwpIGRlc2MnLCAxMDAwLCB0cnVlKTsK Kworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRl eHRfdmFsKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoJyd4JycgfHwg dGV4dF92YWwpIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2No ZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBi cmluX3NvcnRfdGVzdCBvcmRlciBieSAoJyd4JycgfHwgdGV4dF92YWwpIGRlc2MgbGltaXQg MTAwJywgMTAwLCB0cnVlKTsKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdz ZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBv cmRlciBieSAoJyd4JycgfHwgdGV4dF92YWwpIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAw LCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4 JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgn J3gnJyB8fCB0ZXh0X3ZhbCkgZGVzYyBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1 ZSk7CisKKy0tIG1pc21hdGNoaW5nIGV4cHJlc3Npb24KK3NlbGVjdCBicmluc29ydF9jaGVj a19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJp bl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneScnIHx8IHRleHRfdmFsKScsIDEwMDAsIGZhbHNl KTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0 ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneScnIHx8 IHRleHRfdmFsKSBkZXNjJywgMTAwMCwgdHJ1ZSk7CisKK3NlbGVjdCBicmluc29ydF9jaGVj a19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJp bl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneScnIHx8IHRleHRfdmFsKSBsaW1pdCAxMDAnLCAx MDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgn J3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkg KCcneScnIHx8IHRleHRfdmFsKSBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CisKK3Nl bGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3Zh bCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneScnIHx8IHRleHRf dmFsKSBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5z b3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwg ZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoJyd5JycgfHwgdGV4dF92YWwpIGRlc2Mg bGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworCisgCistLSBtYXRjaGluZyBl eHByZXNzaW9uCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5l dF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92 YWwgKyAxKScsIDEwMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmlu Zygnc2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9y ZGVyIGJ5IChpbmV0X3ZhbCArIDEpIGRlc2MnLCAxMDAwLCB0cnVlKTsKKworc2VsZWN0IGJy aW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZy b20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsICsgMSkgbGltaXQgMTAwJywg MTAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAo aW5ldF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5l dF92YWwgKyAxKSBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CisKK3NlbGVjdCBicmlu c29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9t IGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0X3ZhbCArIDEpIGxpbWl0IDEwMCBvZmZz ZXQgMTAwJywgMTAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmco J3NlbGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRl ciBieSAoaW5ldF92YWwgKyAxKSBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCB0 cnVlKTsKKworLS0gbWlzbWF0Y2hpbmcgZXhwcmVzc2lvbgorc2VsZWN0IGJyaW5zb3J0X2No ZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9z b3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsIC0gMSknLCAxMDAwLCBmYWxzZSk7CitzZWxl Y3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2 YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwgLSAxKSBkZXNjJywg MTAwMCwgdHJ1ZSk7CisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0 IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChp bmV0X3ZhbCAtIDEpIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJp bl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsIC0gMSkgZGVzYyBsaW1pdCAxMDAnLCAx MDAsIHRydWUpOworCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAo aW5ldF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5l dF92YWwgLSAxKSBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0 IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFs IGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsIC0gMSkgZGVzYyBsaW1p dCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CisKKworLS0gcmFuZG9tIGRhdGEKK3Ry dW5jYXRlIHRhYmxlIGJyaW5fc29ydF90ZXN0OworaW5zZXJ0IGludG8gYnJpbl9zb3J0X3Rl c3QKK3NlbGVjdAorCSgxMDAwICogcmFuZG9tKCkpOjppbnQsCisJLSgoMTAwMCAqIHJhbmRv bSgpKTo6aW50KSwJLS0gc2FtZSBhcyBpbnQsIGJ1dCBhdCBsZWFzdCBvcHBvc2l0ZQorCWxw YWQoKCgxMDAwICogcmFuZG9tKCkpOjppbnQpOjp0ZXh0IHx8IG1kNShpOjp0ZXh0KSwgNDAs ICcwJyksCisJJzEwLjAuMC4wJzo6aW5ldCArICgxMDAwICogcmFuZG9tKCk6OmludCkKK2Zy b20gZ2VuZXJhdGVfc2VyaWVzKDEsMTAwMCkgcyhpKTsKKworcmVpbmRleCB0YWJsZSBicmlu X3NvcnRfdGVzdDsKKwordmFjdXVtIGFuYWx5emUgYnJpbl9zb3J0X3Rlc3Q7CisKKyAKKy0t IG1hdGNoaW5nIGV4cHJlc3Npb24KK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygn c2VsZWN0IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIg YnkgKGludF92YWwgKyAxKScsIDEwMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVj a19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0 X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgKyAxKSBkZXNjJywgMTAwMCwgdHJ1ZSk7CisKK3Nl bGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsgMSkgYXMg dmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgKyAxKSBsaW1pdCAx MDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2Vs ZWN0IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkg KGludF92YWwgKyAxKSBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CisKK3NlbGVjdCBi cmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsgMSkgYXMgdmFsIGZy b20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgKyAxKSBsaW1pdCAxMDAgb2Zm c2V0IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5n KCdzZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRl ciBieSAoaW50X3ZhbCArIDEpIGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRy dWUpOworCistLSBtaXNtYXRjaGluZyBleHByZXNzaW9uCitzZWxlY3QgYnJpbnNvcnRfY2hl Y2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29y dF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsIC0gMSknLCAxMDAwLCBmYWxzZSk7CitzZWxlY3Qg YnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZhbCBm cm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsIC0gMSkgZGVzYycsIDEwMDAs IHRydWUpOworCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50 X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFs IC0gMSkgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tf b3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90 ZXN0IG9yZGVyIGJ5IChpbnRfdmFsIC0gMSkgZGVzYyBsaW1pdCAxMDAnLCAxMDAsIHRydWUp OworCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCAr IDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsIC0gMSkg bGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9j aGVja19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9z b3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgLSAxKSBkZXNjIGxpbWl0IDEwMCBvZmZzZXQg MTAwJywgMTAwLCB0cnVlKTsKKworCisgCistLSBtYXRjaGluZyBleHByZXNzaW9uCitzZWxl Y3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFz IHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsICsgMSknLCAx MDAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAo YmlnaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChi aWdpbnRfdmFsICsgMSkgZGVzYycsIDEwMDAsIHRydWUpOworCitzZWxlY3QgYnJpbnNvcnRf Y2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJy aW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsICsgMSkgbGltaXQgMTAwJywgMTAw LCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmln aW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdp bnRfdmFsICsgMSkgZGVzYyBsaW1pdCAxMDAnLCAxMDAsIHRydWUpOworCitzZWxlY3QgYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBm cm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsICsgMSkgbGltaXQgMTAw IG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRl cmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rl c3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgKyAxKSBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAw JywgMTAwLCB0cnVlKTsKKworLS0gbWlzbWF0Y2hpbmcgZXhwcmVzc2lvbgorc2VsZWN0IGJy aW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwg ZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCAtIDEpJywgMTAwMCwg ZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJpZ2lu dF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoYmlnaW50 X3ZhbCAtIDEpIGRlc2MnLCAxMDAwLCB0cnVlKTsKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNr X29yZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3Nv cnRfdGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCAtIDEpIGxpbWl0IDEwMCcsIDEwMCwgZmFs c2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92 YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoYmlnaW50X3Zh bCAtIDEpIGRlc2MgbGltaXQgMTAwJywgMTAwLCB0cnVlKTsKKworc2VsZWN0IGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBi cmluX3NvcnRfdGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCAtIDEpIGxpbWl0IDEwMCBvZmZz ZXQgMTAwJywgMTAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmco J3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9y ZGVyIGJ5IChiaWdpbnRfdmFsIC0gMSkgZGVzYyBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEw MCwgdHJ1ZSk7CisKKyAKKy0tIG1hdGNoaW5nIGV4cHJlc3Npb24KK3NlbGVjdCBicmluc29y dF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZy b20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneCcnIHx8IHRleHRfdmFsKScsIDEwMDAs IGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gn JyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcn eCcnIHx8IHRleHRfdmFsKSBkZXNjJywgMTAwMCwgdHJ1ZSk7CisKK3NlbGVjdCBicmluc29y dF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZy b20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneCcnIHx8IHRleHRfdmFsKSBsaW1pdCAx MDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2Vs ZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3Jk ZXIgYnkgKCcneCcnIHx8IHRleHRfdmFsKSBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7 CisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0 ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneCcnIHx8 IHRleHRfdmFsKSBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0 IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBh cyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoJyd4JycgfHwgdGV4dF92YWwp IGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworCistLSBtaXNtYXRj aGluZyBleHByZXNzaW9uCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVj dCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVy IGJ5ICgnJ3knJyB8fCB0ZXh0X3ZhbCknLCAxMDAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNv cnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBm cm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3knJyB8fCB0ZXh0X3ZhbCkgZGVzYycs IDEwMDAsIHRydWUpOworCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVj dCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVy IGJ5ICgnJ3knJyB8fCB0ZXh0X3ZhbCkgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7CitzZWxl Y3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwp IGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3knJyB8fCB0ZXh0X3Zh bCkgZGVzYyBsaW1pdCAxMDAnLCAxMDAsIHRydWUpOworCitzZWxlY3QgYnJpbnNvcnRfY2hl Y2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJy aW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3knJyB8fCB0ZXh0X3ZhbCkgbGltaXQgMTAwIG9m ZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmlu Zygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rl c3Qgb3JkZXIgYnkgKCcneScnIHx8IHRleHRfdmFsKSBkZXNjIGxpbWl0IDEwMCBvZmZzZXQg MTAwJywgMTAwLCB0cnVlKTsKKworIAorLS0gbWF0Y2hpbmcgZXhwcmVzc2lvbgorc2VsZWN0 IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFs IGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsICsgMSknLCAxMDAwLCBm YWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92 YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwg KyAxKSBkZXNjJywgMTAwMCwgdHJ1ZSk7CisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRl cmluZygnc2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0 IG9yZGVyIGJ5IChpbmV0X3ZhbCArIDEpIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworc2Vs ZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMg dmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsICsgMSkgZGVzYyBs aW1pdCAxMDAnLCAxMDAsIHRydWUpOworCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJp bmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBv cmRlciBieSAoaW5ldF92YWwgKyAxKSBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFs c2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFs ICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsICsg MSkgZGVzYyBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CisKKy0tIG1pc21h dGNoaW5nIGV4cHJlc3Npb24KK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2Vs ZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5 IChpbmV0X3ZhbCAtIDEpJywgMTAwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNr X29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0 X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsIC0gMSkgZGVzYycsIDEwMDAsIHRydWUpOworCitz ZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAxKSBh cyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwgLSAxKSBsaW1p dCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygn c2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVy IGJ5IChpbmV0X3ZhbCAtIDEpIGRlc2MgbGltaXQgMTAwJywgMTAwLCB0cnVlKTsKKworc2Vs ZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMg dmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsIC0gMSkgbGltaXQg MTAwIG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19v cmRlcmluZygnc2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90 ZXN0IG9yZGVyIGJ5IChpbmV0X3ZhbCAtIDEpIGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAn LCAxMDAsIHRydWUpOworCisKK2Ryb3AgdGFibGUgYnJpbl9zb3J0X3Rlc3Q7CmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9icmluX3NvcnRfbXVsdGkuc3FsIGIvc3JjL3Rl c3QvcmVncmVzcy9zcWwvYnJpbl9zb3J0X211bHRpLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwLi5kMDU0NGFkNzA2Ci0tLSAvZGV2L251bGwKKysrIGIvc3Jj L3Rlc3QvcmVncmVzcy9zcWwvYnJpbl9zb3J0X211bHRpLnNxbApAQCAtMCwwICsxLDIzNSBA QAorLS0gZnVuY3Rpb24gdG8gdmVyaWZ5IHZhcmlvdXMgc29ydC1yZWxhdGVkIGRhdGEgKHRv dGFsIHJvd3MsIG9yZGVyaW5nKQorY3JlYXRlIG9yIHJlcGxhY2UgZnVuY3Rpb24gYnJpbnNv cnRfY2hlY2tfb3JkZXJpbmcocF9zcWwgdGV4dCwgcF9yb3dzX2V4cGVjdGVkIGludCwgcF9k ZXNjIGJvb2xlYW4pIHJldHVybnMgdm9pZCBhcyAkJAorZGVjbGFyZQorICAgIHZfY3VycyBy ZWZjdXJzb3I7CisgICAgdl9yb3cgcmVjb3JkOworICAgIHZfcHJldiByZWNvcmQ7CisgICAg dl9icmluX3NvcnRfZm91bmQgYm9vbCA6PSBmYWxzZTsKKyAgICB2X2NvdW50IGludCA6PSAw OworYmVnaW4KKworICAgIC0tIG5lZWRlZCBiZWNhdXNlIHRoZSBwX3NxbCBxdWVyeSBoYXMg ZGlmZmVyZW50IGRhdGEgdHlwZXMKKyAgICBleGVjdXRlICdkaXNjYXJkIHBsYW5zJzsKKwor ICAgIE9QRU4gdl9jdXJzIE5PIFNDUk9MTCBGT1IgRVhFQ1VURSBmb3JtYXQoJ2V4cGxhaW4g JXMnLCBwX3NxbCk7CisKKyAgICBMT09QCisgICAgICAgIEZFVENIIHZfY3VycyBJTlRPIHZf cm93OworCisgICAgICAgIElGIE5PVCBGT1VORCBUSEVOCisgICAgICAgICAgICBFWElUOwor ICAgICAgICBFTkQgSUY7CisKKyAgICAgICAgSUYgdl9yb3c6OnRleHQgTElLRSAnJUJSSU4g U29ydCUnIFRIRU4KKyAgICAgICAgICAgIHZfYnJpbl9zb3J0X2ZvdW5kIDo9IHRydWU7Cisg ICAgICAgICAgICBFWElUOworICAgICAgICBFTkQgSUY7CisgICAgRU5EIExPT1A7CisKKyAg ICBDTE9TRSB2X2N1cnM7CisKKyAgICBJRiBOT1Qgdl9icmluX3NvcnRfZm91bmQgVEhFTgor ICAgICAgICBSQUlTRSBFWENFUFRJT04gJ0JSSU4gU29ydDogbm90IGZvdW5kJzsKKyAgICBF TkQgSUY7CisKKyAgICBPUEVOIHZfY3VycyBOTyBTQ1JPTEwgRk9SIEVYRUNVVEUgZm9ybWF0 KHBfc3FsKTsKKworICAgIExPT1AKKyAgICAgICAgRkVUQ0ggdl9jdXJzIElOVE8gdl9yb3c7 CisKKyAgICAgICAgSUYgTk9UIEZPVU5EIFRIRU4KKyAgICAgICAgICAgIEVYSVQ7CisgICAg ICAgIEVORCBJRjsKKworICAgICAgICBJRiB2X3ByZXYgSVMgTk9UIE5VTEwgVEhFTgorICAg ICAgICAgICAgSUYgdl9wcmV2LnZhbCA+IHZfcm93LnZhbCBBTkQgTk9UIHBfZGVzYyBUSEVO CisgICAgICAgICAgICAgICAgUkFJU0UgRVhDRVBUSU9OICdvcmRlcmluZyBtaXNtYXRjaCAl ID4gJSAoYXNjKScsIHZfcHJldi52YWwsIHZfcm93LnZhbDsKKyAgICAgICAgICAgIEVORCBJ RjsKKyAgICAgICAgICAgIElGIHZfcHJldi52YWwgPCB2X3Jvdy52YWwgQU5EIHBfZGVzYyBU SEVOCisgICAgICAgICAgICAgICAgUkFJU0UgRVhDRVBUSU9OICdvcmRlcmluZyBtaXNtYXRj aCAlIDwgJSAoZGVzYyknLCB2X3ByZXYudmFsLCB2X3Jvdy52YWw7CisgICAgICAgICAgICBF TkQgSUY7CisgICAgICAgIEVORCBJRjsKKworICAgICAgICB2X3ByZXYgOj0gdl9yb3c7Cisg ICAgICAgIHZfY291bnQgOj0gdl9jb3VudCArIDE7CisgICAgRU5EIExPT1A7CisKKyAgICBD TE9TRSB2X2N1cnM7CisKKyAgICBJRiB2X2NvdW50ICE9IHBfcm93c19leHBlY3RlZCBUSEVO CisgICAgICAgIFJBSVNFIEVYQ0VQVElPTiAnY291bnQgbWlzbWF0Y2g6ICUgIT0gJScsIHZf Y291bnQsIHBfcm93c19leHBlY3RlZDsKKyAgICBFTkQgSUY7CisKK2VuZDsKKyQkIGxhbmd1 YWdlIHBscGdzcWw7CisKK2NyZWF0ZSB0YWJsZSBicmluX3NvcnRfdGVzdCAoaW50X3ZhbCBp bnQsIGJpZ2ludF92YWwgYmlnaW50LCB0ZXh0X3ZhbCB0ZXh0LCBpbmV0X3ZhbCBpbmV0KSB3 aXRoIChmaWxsZmFjdG9yPTEwKTsKKworLS0gc2VxdWVudGlhbCB2YWx1ZXMKK2luc2VydCBp bnRvIGJyaW5fc29ydF90ZXN0CitzZWxlY3QKKwlpLAorCS1pLAktLSBzYW1lIGFzIGludCwg YnV0IGF0IGxlYXN0IG9wcG9zaXRlCisJbHBhZChpOjp0ZXh0IHx8IG1kNShpOjp0ZXh0KSwg NDAsICcwJyksCisJJzEwLjAuMC4wJzo6aW5ldCArIGkKK2Zyb20gZ2VuZXJhdGVfc2VyaWVz KDEsMTAwMCkgcyhpKTsKKworLS0gY3JlYXRlIGJyaW4gaW5kZXhlcyBvbiBpbmRpdmlkdWFs IGNvbHVtbnMKK2NyZWF0ZSBpbmRleCBicmluX3NvcnRfdGVzdF9tdWx0aV9pZHggb24gYnJp bl9zb3J0X3Rlc3QgdXNpbmcgYnJpbiAoaW50X3ZhbCwgYmlnaW50X3ZhbCwgdGV4dF92YWws IGluZXRfdmFsIGluZXRfbWlubWF4X29wcykgd2l0aCAocGFnZXNfcGVyX3JhbmdlPTEpOwor CistLSAKK3ZhY3V1bSBhbmFseXplIGJyaW5fc29ydF90ZXN0OworCitzZXQgZW5hYmxlX3Nl cXNjYW4gPSBvZmY7CisgCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVj dCBpbnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGludF92YWwn LCAxMDAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVj dCBpbnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGludF92YWwg ZGVzYycsIDEwMDAsIHRydWUpOworCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmco J3NlbGVjdCBpbnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGlu dF92YWwgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tf b3JkZXJpbmcoJ3NlbGVjdCBpbnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9y ZGVyIGJ5IGludF92YWwgZGVzYyBsaW1pdCAxMDAnLCAxMDAsIHRydWUpOworCitzZWxlY3Qg YnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbnRfdmFsIGFzIHZhbCBmcm9tIGJy aW5fc29ydF90ZXN0IG9yZGVyIGJ5IGludF92YWwgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAx MDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGlu dF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW50X3ZhbCBkZXNj IGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCB0cnVlKTsKKworIAorc2VsZWN0IGJyaW5z b3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgYmlnaW50X3ZhbCBhcyB2YWwgZnJvbSBicmlu X3NvcnRfdGVzdCBvcmRlciBieSBiaWdpbnRfdmFsJywgMTAwMCwgZmFsc2UpOworc2VsZWN0 IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgYmlnaW50X3ZhbCBhcyB2YWwgZnJv bSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBiaWdpbnRfdmFsIGRlc2MnLCAxMDAwLCB0cnVl KTsKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgYmlnaW50X3Zh bCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBiaWdpbnRfdmFsIGxpbWl0 IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdz ZWxlY3QgYmlnaW50X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBi aWdpbnRfdmFsIGRlc2MgbGltaXQgMTAwJywgMTAwLCB0cnVlKTsKKworc2VsZWN0IGJyaW5z b3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgYmlnaW50X3ZhbCBhcyB2YWwgZnJvbSBicmlu X3NvcnRfdGVzdCBvcmRlciBieSBiaWdpbnRfdmFsIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywg MTAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBi aWdpbnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGJpZ2ludF92 YWwgZGVzYyBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CisKKyAKK3NlbGVj dCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGluZXRfdmFsIGFzIHZhbCBmcm9t IGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGluZXRfdmFsJywgMTAwMCwgZmFsc2UpOworc2Vs ZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgaW5ldF92YWwgYXMgdmFsIGZy b20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW5ldF92YWwgZGVzYycsIDEwMDAsIHRydWUp OworCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbmV0X3ZhbCBh cyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBpbmV0X3ZhbCBsaW1pdCAxMDAn LCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0 IGluZXRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGluZXRfdmFs IGRlc2MgbGltaXQgMTAwJywgMTAwLCB0cnVlKTsKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNr X29yZGVyaW5nKCdzZWxlY3QgaW5ldF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qg b3JkZXIgYnkgaW5ldF92YWwgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsK K3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGluZXRfdmFsIGFzIHZh bCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGluZXRfdmFsIGRlc2MgbGltaXQgMTAw IG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworCisgCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tf b3JkZXJpbmcoJ3NlbGVjdCB0ZXh0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBv cmRlciBieSB0ZXh0X3ZhbCcsIDEwMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVj a19vcmRlcmluZygnc2VsZWN0IHRleHRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0 IG9yZGVyIGJ5IHRleHRfdmFsIGRlc2MnLCAxMDAwLCB0cnVlKTsKKworc2VsZWN0IGJyaW5z b3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgdGV4dF92YWwgYXMgdmFsIGZyb20gYnJpbl9z b3J0X3Rlc3Qgb3JkZXIgYnkgdGV4dF92YWwgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7Citz ZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCB0ZXh0X3ZhbCBhcyB2YWwg ZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSB0ZXh0X3ZhbCBkZXNjIGxpbWl0IDEwMCcs IDEwMCwgdHJ1ZSk7CisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0 IHRleHRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IHRleHRfdmFs IGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRf Y2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCB0ZXh0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRf dGVzdCBvcmRlciBieSB0ZXh0X3ZhbCBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAw LCB0cnVlKTsKKworCistLSBzZW1pLXJhbmRvbSBkYXRhIChzZXF1ZW50aWFsICsgcmFuZG9t bmVzcykKK3RydW5jYXRlIHRhYmxlIGJyaW5fc29ydF90ZXN0OworaW5zZXJ0IGludG8gYnJp bl9zb3J0X3Rlc3QKK3NlbGVjdAorCWkgKyAoMTAwICogcmFuZG9tKCkpOjppbnQsCisJLShp ICsgKDEwMCAqIHJhbmRvbSgpKTo6aW50KSwJLS0gc2FtZSBhcyBpbnQsIGJ1dCBhdCBsZWFz dCBvcHBvc2l0ZQorCWxwYWQoKGkgKyAoMTAwICogcmFuZG9tKCkpOjppbnQpOjp0ZXh0IHx8 IG1kNShpOjp0ZXh0KSwgNDAsICcwJyksCisJJzEwLjAuMC4wJzo6aW5ldCArIChpICsgMTAw ICogcmFuZG9tKCk6OmludCkKK2Zyb20gZ2VuZXJhdGVfc2VyaWVzKDEsMTAwMCkgcyhpKTsK KworcmVpbmRleCB0YWJsZSBicmluX3NvcnRfdGVzdDsKKwordmFjdXVtIGFuYWx5emUgYnJp bl9zb3J0X3Rlc3Q7CisKKyAKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2Vs ZWN0IGludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW50X3Zh bCcsIDEwMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2Vs ZWN0IGludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW50X3Zh bCBkZXNjJywgMTAwMCwgdHJ1ZSk7CisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmlu Zygnc2VsZWN0IGludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkg aW50X3ZhbCBsaW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVj a19vcmRlcmluZygnc2VsZWN0IGludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qg b3JkZXIgYnkgaW50X3ZhbCBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CisKK3NlbGVj dCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGludF92YWwgYXMgdmFsIGZyb20g YnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW50X3ZhbCBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcs IDEwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3Qg aW50X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBpbnRfdmFsIGRl c2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworCisgCitzZWxlY3QgYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBiaWdpbnRfdmFsIGFzIHZhbCBmcm9tIGJy aW5fc29ydF90ZXN0IG9yZGVyIGJ5IGJpZ2ludF92YWwnLCAxMDAwLCBmYWxzZSk7CitzZWxl Y3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBiaWdpbnRfdmFsIGFzIHZhbCBm cm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGJpZ2ludF92YWwgZGVzYycsIDEwMDAsIHRy dWUpOworCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBiaWdpbnRf dmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGJpZ2ludF92YWwgbGlt aXQgMTAwJywgMTAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmco J3NlbGVjdCBiaWdpbnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5 IGJpZ2ludF92YWwgZGVzYyBsaW1pdCAxMDAnLCAxMDAsIHRydWUpOworCitzZWxlY3QgYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBiaWdpbnRfdmFsIGFzIHZhbCBmcm9tIGJy aW5fc29ydF90ZXN0IG9yZGVyIGJ5IGJpZ2ludF92YWwgbGltaXQgMTAwIG9mZnNldCAxMDAn LCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0 IGJpZ2ludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgYmlnaW50 X3ZhbCBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCB0cnVlKTsKKworIAorc2Vs ZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgaW5ldF92YWwgYXMgdmFsIGZy b20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW5ldF92YWwnLCAxMDAwLCBmYWxzZSk7Citz ZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbmV0X3ZhbCBhcyB2YWwg ZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBpbmV0X3ZhbCBkZXNjJywgMTAwMCwgdHJ1 ZSk7CisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGluZXRfdmFs IGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGluZXRfdmFsIGxpbWl0IDEw MCcsIDEwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxl Y3QgaW5ldF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW5ldF92 YWwgZGVzYyBsaW1pdCAxMDAnLCAxMDAsIHRydWUpOworCitzZWxlY3QgYnJpbnNvcnRfY2hl Y2tfb3JkZXJpbmcoJ3NlbGVjdCBpbmV0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVz dCBvcmRlciBieSBpbmV0X3ZhbCBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2Up Oworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgaW5ldF92YWwgYXMg dmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW5ldF92YWwgZGVzYyBsaW1pdCAx MDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CisKKyAKK3NlbGVjdCBicmluc29ydF9jaGVj a19vcmRlcmluZygnc2VsZWN0IHRleHRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0 IG9yZGVyIGJ5IHRleHRfdmFsJywgMTAwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2No ZWNrX29yZGVyaW5nKCdzZWxlY3QgdGV4dF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rl c3Qgb3JkZXIgYnkgdGV4dF92YWwgZGVzYycsIDEwMDAsIHRydWUpOworCitzZWxlY3QgYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCB0ZXh0X3ZhbCBhcyB2YWwgZnJvbSBicmlu X3NvcnRfdGVzdCBvcmRlciBieSB0ZXh0X3ZhbCBsaW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsK K3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IHRleHRfdmFsIGFzIHZh bCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IHRleHRfdmFsIGRlc2MgbGltaXQgMTAw JywgMTAwLCB0cnVlKTsKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxl Y3QgdGV4dF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgdGV4dF92 YWwgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29y dF9jaGVja19vcmRlcmluZygnc2VsZWN0IHRleHRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29y dF90ZXN0IG9yZGVyIGJ5IHRleHRfdmFsIGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAx MDAsIHRydWUpOworCisKKy0tIHJhbmRvbSBkYXRhCit0cnVuY2F0ZSB0YWJsZSBicmluX3Nv cnRfdGVzdDsKK2luc2VydCBpbnRvIGJyaW5fc29ydF90ZXN0CitzZWxlY3QKKwkoMTAwMCAq IHJhbmRvbSgpKTo6aW50LAorCS0oKDEwMDAgKiByYW5kb20oKSk6OmludCksCS0tIHNhbWUg YXMgaW50LCBidXQgYXQgbGVhc3Qgb3Bwb3NpdGUKKwlscGFkKCgoMTAwMCAqIHJhbmRvbSgp KTo6aW50KTo6dGV4dCB8fCBtZDUoaTo6dGV4dCksIDQwLCAnMCcpLAorCScxMC4wLjAuMCc6 OmluZXQgKyAoMTAwMCAqIHJhbmRvbSgpOjppbnQpCitmcm9tIGdlbmVyYXRlX3Nlcmllcygx LDEwMDApIHMoaSk7CisKK3JlaW5kZXggdGFibGUgYnJpbl9zb3J0X3Rlc3Q7CisKK3ZhY3V1 bSBhbmFseXplIGJyaW5fc29ydF90ZXN0OworCisgCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tf b3JkZXJpbmcoJ3NlbGVjdCBpbnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9y ZGVyIGJ5IGludF92YWwnLCAxMDAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tf b3JkZXJpbmcoJ3NlbGVjdCBpbnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9y ZGVyIGJ5IGludF92YWwgZGVzYycsIDEwMDAsIHRydWUpOworCitzZWxlY3QgYnJpbnNvcnRf Y2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90 ZXN0IG9yZGVyIGJ5IGludF92YWwgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7CitzZWxlY3Qg YnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbnRfdmFsIGFzIHZhbCBmcm9tIGJy aW5fc29ydF90ZXN0IG9yZGVyIGJ5IGludF92YWwgZGVzYyBsaW1pdCAxMDAnLCAxMDAsIHRy dWUpOworCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbnRfdmFs IGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGludF92YWwgbGltaXQgMTAw IG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRl cmluZygnc2VsZWN0IGludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIg YnkgaW50X3ZhbCBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCB0cnVlKTsKKwor IAorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgYmlnaW50X3ZhbCBh cyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBiaWdpbnRfdmFsJywgMTAwMCwg ZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgYmlnaW50 X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBiaWdpbnRfdmFsIGRl c2MnLCAxMDAwLCB0cnVlKTsKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdz ZWxlY3QgYmlnaW50X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBi aWdpbnRfdmFsIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2No ZWNrX29yZGVyaW5nKCdzZWxlY3QgYmlnaW50X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRf dGVzdCBvcmRlciBieSBiaWdpbnRfdmFsIGRlc2MgbGltaXQgMTAwJywgMTAwLCB0cnVlKTsK Kworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgYmlnaW50X3ZhbCBh cyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBiaWdpbnRfdmFsIGxpbWl0IDEw MCBvZmZzZXQgMTAwJywgMTAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3Jk ZXJpbmcoJ3NlbGVjdCBiaWdpbnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9y ZGVyIGJ5IGJpZ2ludF92YWwgZGVzYyBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1 ZSk7CisKKyAKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGluZXRf dmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGluZXRfdmFsJywgMTAw MCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgaW5l dF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW5ldF92YWwgZGVz YycsIDEwMDAsIHRydWUpOworCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3Nl bGVjdCBpbmV0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBpbmV0 X3ZhbCBsaW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19v cmRlcmluZygnc2VsZWN0IGluZXRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9y ZGVyIGJ5IGluZXRfdmFsIGRlc2MgbGltaXQgMTAwJywgMTAwLCB0cnVlKTsKKworc2VsZWN0 IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgaW5ldF92YWwgYXMgdmFsIGZyb20g YnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW5ldF92YWwgbGltaXQgMTAwIG9mZnNldCAxMDAn LCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0 IGluZXRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGluZXRfdmFs IGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworCisgCitzZWxlY3Qg YnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCB0ZXh0X3ZhbCBhcyB2YWwgZnJvbSBi cmluX3NvcnRfdGVzdCBvcmRlciBieSB0ZXh0X3ZhbCcsIDEwMDAsIGZhbHNlKTsKK3NlbGVj dCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IHRleHRfdmFsIGFzIHZhbCBmcm9t IGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IHRleHRfdmFsIGRlc2MnLCAxMDAwLCB0cnVlKTsK Kworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgdGV4dF92YWwgYXMg dmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgdGV4dF92YWwgbGltaXQgMTAwJywg MTAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCB0 ZXh0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSB0ZXh0X3ZhbCBk ZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CisKK3NlbGVjdCBicmluc29ydF9jaGVja19v cmRlcmluZygnc2VsZWN0IHRleHRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9y ZGVyIGJ5IHRleHRfdmFsIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCBmYWxzZSk7Citz ZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCB0ZXh0X3ZhbCBhcyB2YWwg ZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSB0ZXh0X3ZhbCBkZXNjIGxpbWl0IDEwMCBv ZmZzZXQgMTAwJywgMTAwLCB0cnVlKTsKKworCitkcm9wIHRhYmxlIGJyaW5fc29ydF90ZXN0 OwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvYnJpbl9zb3J0X211bHRpX2V4 cHJzLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2JyaW5fc29ydF9tdWx0aV9leHBycy5z cWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uMjk5Yzc5NzkzMgot LS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2JyaW5fc29ydF9tdWx0 aV9leHBycy5zcWwKQEAgLTAsMCArMSwzNjkgQEAKKy0tIGZ1bmN0aW9uIHRvIHZlcmlmeSB2 YXJpb3VzIHNvcnQtcmVsYXRlZCBkYXRhICh0b3RhbCByb3dzLCBvcmRlcmluZykKK2NyZWF0 ZSBvciByZXBsYWNlIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHBfc3FsIHRl eHQsIHBfcm93c19leHBlY3RlZCBpbnQsIHBfZGVzYyBib29sZWFuKSByZXR1cm5zIHZvaWQg YXMgJCQKK2RlY2xhcmUKKyAgICB2X2N1cnMgcmVmY3Vyc29yOworICAgIHZfcm93IHJlY29y ZDsKKyAgICB2X3ByZXYgcmVjb3JkOworICAgIHZfYnJpbl9zb3J0X2ZvdW5kIGJvb2wgOj0g ZmFsc2U7CisgICAgdl9jb3VudCBpbnQgOj0gMDsKK2JlZ2luCisKKyAgICAtLSBuZWVkZWQg YmVjYXVzZSB0aGUgcF9zcWwgcXVlcnkgaGFzIGRpZmZlcmVudCBkYXRhIHR5cGVzCisgICAg ZXhlY3V0ZSAnZGlzY2FyZCBwbGFucyc7CisKKyAgICBPUEVOIHZfY3VycyBOTyBTQ1JPTEwg Rk9SIEVYRUNVVEUgZm9ybWF0KCdleHBsYWluICVzJywgcF9zcWwpOworCisgICAgTE9PUAor ICAgICAgICBGRVRDSCB2X2N1cnMgSU5UTyB2X3JvdzsKKworICAgICAgICBJRiBOT1QgRk9V TkQgVEhFTgorICAgICAgICAgICAgRVhJVDsKKyAgICAgICAgRU5EIElGOworCisgICAgICAg IElGIHZfcm93Ojp0ZXh0IExJS0UgJyVCUklOIFNvcnQlJyBUSEVOCisgICAgICAgICAgICB2 X2JyaW5fc29ydF9mb3VuZCA6PSB0cnVlOworICAgICAgICAgICAgRVhJVDsKKyAgICAgICAg RU5EIElGOworICAgIEVORCBMT09QOworCisgICAgQ0xPU0Ugdl9jdXJzOworCisgICAgSUYg Tk9UIHZfYnJpbl9zb3J0X2ZvdW5kIFRIRU4KKyAgICAgICAgUkFJU0UgRVhDRVBUSU9OICdC UklOIFNvcnQ6IG5vdCBmb3VuZCc7CisgICAgRU5EIElGOworCisgICAgT1BFTiB2X2N1cnMg Tk8gU0NST0xMIEZPUiBFWEVDVVRFIGZvcm1hdChwX3NxbCk7CisKKyAgICBMT09QCisgICAg ICAgIEZFVENIIHZfY3VycyBJTlRPIHZfcm93OworCisgICAgICAgIElGIE5PVCBGT1VORCBU SEVOCisgICAgICAgICAgICBFWElUOworICAgICAgICBFTkQgSUY7CisKKyAgICAgICAgSUYg dl9wcmV2IElTIE5PVCBOVUxMIFRIRU4KKyAgICAgICAgICAgIElGIHZfcHJldi52YWwgPiB2 X3Jvdy52YWwgQU5EIE5PVCBwX2Rlc2MgVEhFTgorICAgICAgICAgICAgICAgIFJBSVNFIEVY Q0VQVElPTiAnb3JkZXJpbmcgbWlzbWF0Y2ggJSA+ICUgKGFzYyknLCB2X3ByZXYudmFsLCB2 X3Jvdy52YWw7CisgICAgICAgICAgICBFTkQgSUY7CisgICAgICAgICAgICBJRiB2X3ByZXYu dmFsIDwgdl9yb3cudmFsIEFORCBwX2Rlc2MgVEhFTgorICAgICAgICAgICAgICAgIFJBSVNF IEVYQ0VQVElPTiAnb3JkZXJpbmcgbWlzbWF0Y2ggJSA8ICUgKGRlc2MpJywgdl9wcmV2LnZh bCwgdl9yb3cudmFsOworICAgICAgICAgICAgRU5EIElGOworICAgICAgICBFTkQgSUY7CisK KyAgICAgICAgdl9wcmV2IDo9IHZfcm93OworICAgICAgICB2X2NvdW50IDo9IHZfY291bnQg KyAxOworICAgIEVORCBMT09QOworCisgICAgQ0xPU0Ugdl9jdXJzOworCisgICAgSUYgdl9j b3VudCAhPSBwX3Jvd3NfZXhwZWN0ZWQgVEhFTgorICAgICAgICBSQUlTRSBFWENFUFRJT04g J2NvdW50IG1pc21hdGNoOiAlICE9ICUnLCB2X2NvdW50LCBwX3Jvd3NfZXhwZWN0ZWQ7Cisg ICAgRU5EIElGOworCitlbmQ7CiskJCBsYW5ndWFnZSBwbHBnc3FsOworCitjcmVhdGUgdGFi bGUgYnJpbl9zb3J0X3Rlc3QgKGludF92YWwgaW50LCBiaWdpbnRfdmFsIGJpZ2ludCwgdGV4 dF92YWwgdGV4dCwgaW5ldF92YWwgaW5ldCkgd2l0aCAoZmlsbGZhY3Rvcj0xMCk7CisKKy0t IHNlcXVlbnRpYWwgdmFsdWVzCitpbnNlcnQgaW50byBicmluX3NvcnRfdGVzdAorc2VsZWN0 CisJaSwKKwktaSwJLS0gc2FtZSBhcyBpbnQsIGJ1dCBhdCBsZWFzdCBvcHBvc2l0ZQorCWxw YWQoaTo6dGV4dCB8fCBtZDUoaTo6dGV4dCksIDQwLCAnMCcpLAorCScxMC4wLjAuMCc6Omlu ZXQgKyBpCitmcm9tIGdlbmVyYXRlX3NlcmllcygxLDEwMDApIHMoaSk7CisKKy0tIGNyZWF0 ZSBicmluIGluZGV4ZXMgb24gaW5kaXZpZHVhbCBjb2x1bW5zCitjcmVhdGUgaW5kZXggYnJp bl9zb3J0X3Rlc3RfaW50X2lkeCBvbiBicmluX3NvcnRfdGVzdCB1c2luZyBicmluICgoaW50 X3ZhbCArIDEpLCAoYmlnaW50X3ZhbCArIDEpLCAoJ3gnIHx8IHRleHRfdmFsKSwgKGluZXRf dmFsICsgMSkgaW5ldF9taW5tYXhfb3BzKSB3aXRoIChwYWdlc19wZXJfcmFuZ2U9MSk7CisK K3ZhY3V1bSBhbmFseXplIGJyaW5fc29ydF90ZXN0OworCitzZXQgZW5hYmxlX3NlcXNjYW4g PSBvZmY7CisgCistLSBtYXRjaGluZyBleHByZXNzaW9uCitzZWxlY3QgYnJpbnNvcnRfY2hl Y2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29y dF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsICsgMSknLCAxMDAwLCBmYWxzZSk7CitzZWxlY3Qg YnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZhbCBm cm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsICsgMSkgZGVzYycsIDEwMDAs IHRydWUpOworCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50 X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFs ICsgMSkgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tf b3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90 ZXN0IG9yZGVyIGJ5IChpbnRfdmFsICsgMSkgZGVzYyBsaW1pdCAxMDAnLCAxMDAsIHRydWUp OworCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCAr IDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsICsgMSkg bGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9j aGVja19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9z b3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgKyAxKSBkZXNjIGxpbWl0IDEwMCBvZmZzZXQg MTAwJywgMTAwLCB0cnVlKTsKKworLS0gbWlzbWF0Y2hpbmcgZXhwcmVzc2lvbgorc2VsZWN0 IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwg ZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW50X3ZhbCAtIDEpJywgMTAwMCwgZmFs c2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGludF92YWwg KyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW50X3ZhbCAtIDEp IGRlc2MnLCAxMDAwLCB0cnVlKTsKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5n KCdzZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRl ciBieSAoaW50X3ZhbCAtIDEpIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0IGJy aW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJv bSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW50X3ZhbCAtIDEpIGRlc2MgbGltaXQgMTAw JywgMTAwLCB0cnVlKTsKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxl Y3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAo aW50X3ZhbCAtIDEpIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCBmYWxzZSk7CitzZWxl Y3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZh bCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsIC0gMSkgZGVzYyBsaW1p dCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CisKKworIAorLS0gbWF0Y2hpbmcgZXhw cmVzc2lvbgorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJpZ2lu dF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoYmlnaW50 X3ZhbCArIDEpJywgMTAwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVy aW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVz dCBvcmRlciBieSAoYmlnaW50X3ZhbCArIDEpIGRlc2MnLCAxMDAwLCB0cnVlKTsKKworc2Vs ZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBh cyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCArIDEpIGxp bWl0IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5n KCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBv cmRlciBieSAoYmlnaW50X3ZhbCArIDEpIGRlc2MgbGltaXQgMTAwJywgMTAwLCB0cnVlKTsK Kworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwg KyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCAr IDEpIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNv cnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9t IGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsICsgMSkgZGVzYyBsaW1pdCAx MDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CisKKy0tIG1pc21hdGNoaW5nIGV4cHJlc3Np b24KK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRfdmFs ICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwg LSAxKScsIDEwMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygn c2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3Jk ZXIgYnkgKGJpZ2ludF92YWwgLSAxKSBkZXNjJywgMTAwMCwgdHJ1ZSk7CisKK3NlbGVjdCBi cmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFs IGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgLSAxKSBsaW1pdCAx MDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2Vs ZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIg YnkgKGJpZ2ludF92YWwgLSAxKSBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CisKK3Nl bGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsgMSkg YXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgLSAxKSBs aW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2No ZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmlu X3NvcnRfdGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCAtIDEpIGRlc2MgbGltaXQgMTAwIG9m ZnNldCAxMDAnLCAxMDAsIHRydWUpOworCisgCistLSBtYXRjaGluZyBleHByZXNzaW9uCitz ZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92 YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3gnJyB8fCB0ZXh0 X3ZhbCknLCAxMDAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmco J3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0 IG9yZGVyIGJ5ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgZGVzYycsIDEwMDAsIHRydWUpOworCitz ZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92 YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3gnJyB8fCB0ZXh0 X3ZhbCkgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tf b3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5f c29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgZGVzYyBsaW1pdCAxMDAn LCAxMDAsIHRydWUpOworCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVj dCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVy IGJ5ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIGZh bHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8 fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneCcn IHx8IHRleHRfdmFsKSBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCB0cnVlKTsK KworLS0gbWlzbWF0Y2hpbmcgZXhwcmVzc2lvbgorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBicmluX3Nv cnRfdGVzdCBvcmRlciBieSAoJyd5JycgfHwgdGV4dF92YWwpJywgMTAwMCwgZmFsc2UpOwor c2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRf dmFsKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoJyd5JycgfHwgdGV4 dF92YWwpIGRlc2MnLCAxMDAwLCB0cnVlKTsKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBicmluX3Nv cnRfdGVzdCBvcmRlciBieSAoJyd5JycgfHwgdGV4dF92YWwpIGxpbWl0IDEwMCcsIDEwMCwg ZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcneCcn IHx8IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoJyd5 JycgfHwgdGV4dF92YWwpIGRlc2MgbGltaXQgMTAwJywgMTAwLCB0cnVlKTsKKworc2VsZWN0 IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBh cyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoJyd5JycgfHwgdGV4dF92YWwp IGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRf Y2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9t IGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3knJyB8fCB0ZXh0X3ZhbCkgZGVzYyBsaW1p dCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CisKKyAKKy0tIG1hdGNoaW5nIGV4cHJl c3Npb24KK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbmV0X3Zh bCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0X3ZhbCAr IDEpJywgMTAwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdz ZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIg YnkgKGluZXRfdmFsICsgMSkgZGVzYycsIDEwMDAsIHRydWUpOworCitzZWxlY3QgYnJpbnNv cnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2YWwgZnJvbSBi cmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwgKyAxKSBsaW1pdCAxMDAnLCAxMDAs IGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbmV0 X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0X3Zh bCArIDEpIGRlc2MgbGltaXQgMTAwJywgMTAwLCB0cnVlKTsKKworc2VsZWN0IGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJp bl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsICsgMSkgbGltaXQgMTAwIG9mZnNldCAx MDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2Vs ZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5 IChpbmV0X3ZhbCArIDEpIGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUp OworCistLSBtaXNtYXRjaGluZyBleHByZXNzaW9uCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tf b3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRf dGVzdCBvcmRlciBieSAoaW5ldF92YWwgLSAxKScsIDEwMDAsIGZhbHNlKTsKK3NlbGVjdCBi cmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBm cm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0X3ZhbCAtIDEpIGRlc2MnLCAxMDAw LCB0cnVlKTsKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGlu ZXRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRf dmFsIC0gMSkgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hl Y2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3Nv cnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwgLSAxKSBkZXNjIGxpbWl0IDEwMCcsIDEwMCwg dHJ1ZSk7CisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbmV0 X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0X3Zh bCAtIDEpIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCBmYWxzZSk7CitzZWxlY3QgYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2YWwgZnJv bSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwgLSAxKSBkZXNjIGxpbWl0IDEw MCBvZmZzZXQgMTAwJywgMTAwLCB0cnVlKTsKKworCistLSBzZW1pLXJhbmRvbSBkYXRhIChz ZXF1ZW50aWFsICsgcmFuZG9tbmVzcykKK3RydW5jYXRlIHRhYmxlIGJyaW5fc29ydF90ZXN0 OworaW5zZXJ0IGludG8gYnJpbl9zb3J0X3Rlc3QKK3NlbGVjdAorCWkgKyAoMTAwICogcmFu ZG9tKCkpOjppbnQsCisJLShpICsgKDEwMCAqIHJhbmRvbSgpKTo6aW50KSwJLS0gc2FtZSBh cyBpbnQsIGJ1dCBhdCBsZWFzdCBvcHBvc2l0ZQorCWxwYWQoKGkgKyAoMTAwICogcmFuZG9t KCkpOjppbnQpOjp0ZXh0IHx8IG1kNShpOjp0ZXh0KSwgNDAsICcwJyksCisJJzEwLjAuMC4w Jzo6aW5ldCArIChpICsgMTAwICogcmFuZG9tKCk6OmludCkKK2Zyb20gZ2VuZXJhdGVfc2Vy aWVzKDEsMTAwMCkgcyhpKTsKKworcmVpbmRleCB0YWJsZSBicmluX3NvcnRfdGVzdDsKKwor dmFjdXVtIGFuYWx5emUgYnJpbl9zb3J0X3Rlc3Q7CisKKyAKKy0tIG1hdGNoaW5nIGV4cHJl c3Npb24KK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFs ICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgKyAx KScsIDEwMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2Vs ZWN0IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkg KGludF92YWwgKyAxKSBkZXNjJywgMTAwMCwgdHJ1ZSk7CisKK3NlbGVjdCBicmluc29ydF9j aGVja19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9z b3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgKyAxKSBsaW1pdCAxMDAnLCAxMDAsIGZhbHNl KTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsg MSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgKyAxKSBk ZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CisKK3NlbGVjdCBicmluc29ydF9jaGVja19v cmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rl c3Qgb3JkZXIgYnkgKGludF92YWwgKyAxKSBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwg ZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGludF92 YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW50X3ZhbCAr IDEpIGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworCistLSBtaXNt YXRjaGluZyBleHByZXNzaW9uCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3Nl bGVjdCAoaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5 IChpbnRfdmFsIC0gMSknLCAxMDAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tf b3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90 ZXN0IG9yZGVyIGJ5IChpbnRfdmFsIC0gMSkgZGVzYycsIDEwMDAsIHRydWUpOworCitzZWxl Y3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZh bCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsIC0gMSkgbGltaXQgMTAw JywgMTAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVj dCAoaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChp bnRfdmFsIC0gMSkgZGVzYyBsaW1pdCAxMDAnLCAxMDAsIHRydWUpOworCitzZWxlY3QgYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9t IGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsIC0gMSkgbGltaXQgMTAwIG9mZnNl dCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygn c2VsZWN0IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIg YnkgKGludF92YWwgLSAxKSBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCB0cnVl KTsKKworCisgCistLSBtYXRjaGluZyBleHByZXNzaW9uCitzZWxlY3QgYnJpbnNvcnRfY2hl Y2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5f c29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsICsgMSknLCAxMDAwLCBmYWxzZSk7Citz ZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEp IGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsICsgMSkg ZGVzYycsIDEwMDAsIHRydWUpOworCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmco J3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9y ZGVyIGJ5IChiaWdpbnRfdmFsICsgMSkgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7CitzZWxl Y3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFz IHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsICsgMSkgZGVz YyBsaW1pdCAxMDAnLCAxMDAsIHRydWUpOworCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3Jk ZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90 ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsICsgMSkgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAx MDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChi aWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJp Z2ludF92YWwgKyAxKSBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCB0cnVlKTsK KworLS0gbWlzbWF0Y2hpbmcgZXhwcmVzc2lvbgorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRf dGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCAtIDEpJywgMTAwMCwgZmFsc2UpOworc2VsZWN0 IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2 YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCAtIDEpIGRlc2Mn LCAxMDAwLCB0cnVlKTsKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxl Y3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBi eSAoYmlnaW50X3ZhbCAtIDEpIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0IGJy aW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwg ZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCAtIDEpIGRlc2MgbGlt aXQgMTAwJywgMTAwLCB0cnVlKTsKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5n KCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBv cmRlciBieSAoYmlnaW50X3ZhbCAtIDEpIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCBm YWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50 X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRf dmFsIC0gMSkgZGVzYyBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CisKKyAK Ky0tIG1hdGNoaW5nIGV4cHJlc3Npb24KK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmlu Zygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rl c3Qgb3JkZXIgYnkgKCcneCcnIHx8IHRleHRfdmFsKScsIDEwMDAsIGZhbHNlKTsKK3NlbGVj dCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkg YXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneCcnIHx8IHRleHRfdmFs KSBkZXNjJywgMTAwMCwgdHJ1ZSk7CisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmlu Zygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rl c3Qgb3JkZXIgYnkgKCcneCcnIHx8IHRleHRfdmFsKSBsaW1pdCAxMDAnLCAxMDAsIGZhbHNl KTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0 ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneCcnIHx8 IHRleHRfdmFsKSBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CisKK3NlbGVjdCBicmlu c29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFs IGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneCcnIHx8IHRleHRfdmFsKSBsaW1p dCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNr X29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBicmlu X3NvcnRfdGVzdCBvcmRlciBieSAoJyd4JycgfHwgdGV4dF92YWwpIGRlc2MgbGltaXQgMTAw IG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworCistLSBtaXNtYXRjaGluZyBleHByZXNzaW9u CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4 dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3knJyB8fCB0 ZXh0X3ZhbCknLCAxMDAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJp bmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90 ZXN0IG9yZGVyIGJ5ICgnJ3knJyB8fCB0ZXh0X3ZhbCkgZGVzYycsIDEwMDAsIHRydWUpOwor CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4 dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3knJyB8fCB0 ZXh0X3ZhbCkgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hl Y2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJy aW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3knJyB8fCB0ZXh0X3ZhbCkgZGVzYyBsaW1pdCAx MDAnLCAxMDAsIHRydWUpOworCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3Nl bGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9y ZGVyIGJ5ICgnJ3knJyB8fCB0ZXh0X3ZhbCkgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAs IGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gn JyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcn eScnIHx8IHRleHRfdmFsKSBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCB0cnVl KTsKKworIAorLS0gbWF0Y2hpbmcgZXhwcmVzc2lvbgorc2VsZWN0IGJyaW5zb3J0X2NoZWNr X29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0 X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsICsgMSknLCAxMDAwLCBmYWxzZSk7CitzZWxlY3Qg YnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2YWwg ZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwgKyAxKSBkZXNjJywgMTAw MCwgdHJ1ZSk7CisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChp bmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0 X3ZhbCArIDEpIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2No ZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9z b3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsICsgMSkgZGVzYyBsaW1pdCAxMDAnLCAxMDAs IHRydWUpOworCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5l dF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92 YWwgKyAxKSBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0IGJy aW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZy b20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsICsgMSkgZGVzYyBsaW1pdCAx MDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CisKKy0tIG1pc21hdGNoaW5nIGV4cHJlc3Np b24KK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbmV0X3ZhbCAr IDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0X3ZhbCAtIDEp JywgMTAwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxl Y3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkg KGluZXRfdmFsIC0gMSkgZGVzYycsIDEwMDAsIHRydWUpOworCitzZWxlY3QgYnJpbnNvcnRf Y2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmlu X3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwgLSAxKSBsaW1pdCAxMDAnLCAxMDAsIGZh bHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbmV0X3Zh bCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0X3ZhbCAt IDEpIGRlc2MgbGltaXQgMTAwJywgMTAwLCB0cnVlKTsKKworc2VsZWN0IGJyaW5zb3J0X2No ZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9z b3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsIC0gMSkgbGltaXQgMTAwIG9mZnNldCAxMDAn LCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0 IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChp bmV0X3ZhbCAtIDEpIGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOwor CisKKy0tIHJhbmRvbSBkYXRhCit0cnVuY2F0ZSB0YWJsZSBicmluX3NvcnRfdGVzdDsKK2lu c2VydCBpbnRvIGJyaW5fc29ydF90ZXN0CitzZWxlY3QKKwkoMTAwMCAqIHJhbmRvbSgpKTo6 aW50LAorCS0oKDEwMDAgKiByYW5kb20oKSk6OmludCksCS0tIHNhbWUgYXMgaW50LCBidXQg YXQgbGVhc3Qgb3Bwb3NpdGUKKwlscGFkKCgoMTAwMCAqIHJhbmRvbSgpKTo6aW50KTo6dGV4 dCB8fCBtZDUoaTo6dGV4dCksIDQwLCAnMCcpLAorCScxMC4wLjAuMCc6OmluZXQgKyAoMTAw MCAqIHJhbmRvbSgpOjppbnQpCitmcm9tIGdlbmVyYXRlX3NlcmllcygxLDEwMDApIHMoaSk7 CisKK3JlaW5kZXggdGFibGUgYnJpbl9zb3J0X3Rlc3Q7CisKK3ZhY3V1bSBhbmFseXplIGJy aW5fc29ydF90ZXN0OworCisgCistLSBtYXRjaGluZyBleHByZXNzaW9uCitzZWxlY3QgYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9t IGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsICsgMSknLCAxMDAwLCBmYWxzZSk7 CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEp IGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsICsgMSkgZGVz YycsIDEwMDAsIHRydWUpOworCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3Nl bGVjdCAoaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5 IChpbnRfdmFsICsgMSkgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNv cnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJy aW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsICsgMSkgZGVzYyBsaW1pdCAxMDAnLCAx MDAsIHRydWUpOworCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAo aW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbnRf dmFsICsgMSkgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBi cmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsgMSkgYXMgdmFsIGZy b20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgKyAxKSBkZXNjIGxpbWl0IDEw MCBvZmZzZXQgMTAwJywgMTAwLCB0cnVlKTsKKworLS0gbWlzbWF0Y2hpbmcgZXhwcmVzc2lv bgorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGludF92YWwgKyAx KSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW50X3ZhbCAtIDEpJywg MTAwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3Qg KGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW50 X3ZhbCAtIDEpIGRlc2MnLCAxMDAwLCB0cnVlKTsKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNr X29yZGVyaW5nKCdzZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRf dGVzdCBvcmRlciBieSAoaW50X3ZhbCAtIDEpIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOwor c2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGludF92YWwgKyAxKSBh cyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW50X3ZhbCAtIDEpIGRlc2Mg bGltaXQgMTAwJywgMTAwLCB0cnVlKTsKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVy aW5nKCdzZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBv cmRlciBieSAoaW50X3ZhbCAtIDEpIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCBmYWxz ZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCAr IDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsIC0gMSkg ZGVzYyBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CisKKworIAorLS0gbWF0 Y2hpbmcgZXhwcmVzc2lvbgorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxl Y3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBi eSAoYmlnaW50X3ZhbCArIDEpJywgMTAwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2No ZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmlu X3NvcnRfdGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCArIDEpIGRlc2MnLCAxMDAwLCB0cnVl KTsKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92 YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoYmlnaW50X3Zh bCArIDEpIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNr X29yZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3Nv cnRfdGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCArIDEpIGRlc2MgbGltaXQgMTAwJywgMTAw LCB0cnVlKTsKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJp Z2ludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoYmln aW50X3ZhbCArIDEpIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCBmYWxzZSk7CitzZWxl Y3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFz IHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsICsgMSkgZGVz YyBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CisKKy0tIG1pc21hdGNoaW5n IGV4cHJlc3Npb24KK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChi aWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJp Z2ludF92YWwgLSAxKScsIDEwMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19v cmRlcmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0 X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgLSAxKSBkZXNjJywgMTAwMCwgdHJ1ZSk7CisK K3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsg MSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgLSAx KSBsaW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRl cmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rl c3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgLSAxKSBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1 ZSk7CisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRf dmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92 YWwgLSAxKSBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0IGJy aW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwg ZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCAtIDEpIGRlc2MgbGlt aXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworCisgCistLSBtYXRjaGluZyBleHBy ZXNzaW9uCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4Jycg fHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3gn JyB8fCB0ZXh0X3ZhbCknLCAxMDAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tf b3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5f c29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgZGVzYycsIDEwMDAsIHRy dWUpOworCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4Jycg fHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3gn JyB8fCB0ZXh0X3ZhbCkgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNv cnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBm cm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgZGVzYyBs aW1pdCAxMDAnLCAxMDAsIHRydWUpOworCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJp bmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90 ZXN0IG9yZGVyIGJ5ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgbGltaXQgMTAwIG9mZnNldCAxMDAn LCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0 ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIg YnkgKCcneCcnIHx8IHRleHRfdmFsKSBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAw LCB0cnVlKTsKKworLS0gbWlzbWF0Y2hpbmcgZXhwcmVzc2lvbgorc2VsZWN0IGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJv bSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoJyd5JycgfHwgdGV4dF92YWwpJywgMTAwMCwg ZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcneCcn IHx8IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoJyd5 JycgfHwgdGV4dF92YWwpIGRlc2MnLCAxMDAwLCB0cnVlKTsKKworc2VsZWN0IGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJv bSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoJyd5JycgfHwgdGV4dF92YWwpIGxpbWl0IDEw MCcsIDEwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxl Y3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRl ciBieSAoJyd5JycgfHwgdGV4dF92YWwpIGRlc2MgbGltaXQgMTAwJywgMTAwLCB0cnVlKTsK Kworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRl eHRfdmFsKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoJyd5JycgfHwg dGV4dF92YWwpIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCBmYWxzZSk7CitzZWxlY3Qg YnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFz IHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3knJyB8fCB0ZXh0X3ZhbCkg ZGVzYyBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CisKKyAKKy0tIG1hdGNo aW5nIGV4cHJlc3Npb24KK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0 IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChp bmV0X3ZhbCArIDEpJywgMTAwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rl c3Qgb3JkZXIgYnkgKGluZXRfdmFsICsgMSkgZGVzYycsIDEwMDAsIHRydWUpOworCitzZWxl Y3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2 YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwgKyAxKSBsaW1pdCAx MDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2Vs ZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5 IChpbmV0X3ZhbCArIDEpIGRlc2MgbGltaXQgMTAwJywgMTAwLCB0cnVlKTsKKworc2VsZWN0 IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFs IGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsICsgMSkgbGltaXQgMTAw IG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRl cmluZygnc2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0 IG9yZGVyIGJ5IChpbmV0X3ZhbCArIDEpIGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAx MDAsIHRydWUpOworCistLSBtaXNtYXRjaGluZyBleHByZXNzaW9uCitzZWxlY3QgYnJpbnNv cnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2YWwgZnJvbSBi cmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwgLSAxKScsIDEwMDAsIGZhbHNlKTsK K3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbmV0X3ZhbCArIDEp IGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0X3ZhbCAtIDEpIGRl c2MnLCAxMDAwLCB0cnVlKTsKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdz ZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIg YnkgKGluZXRfdmFsIC0gMSkgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7CitzZWxlY3QgYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2YWwgZnJv bSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwgLSAxKSBkZXNjIGxpbWl0IDEw MCcsIDEwMCwgdHJ1ZSk7CisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2Vs ZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5 IChpbmV0X3ZhbCAtIDEpIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCBmYWxzZSk7Citz ZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAxKSBh cyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwgLSAxKSBkZXNj IGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCB0cnVlKTsKKworCitkcm9wIHRhYmxlIGJy aW5fc29ydF90ZXN0OwotLSAKMi4zOS4wCgo= --------------z0saJSUvc90TqSu15DjSpJR9 Content-Type: text/x-patch; charset=UTF-8; name="0010-wip-test-generator-script-20230206.patch" Content-Disposition: attachment; filename="0010-wip-test-generator-script-20230206.patch" Content-Transfer-Encoding: base64 RnJvbSA1ZGUwY2NkMGQ5NTE1ZTk3ZTVkYWE1NTBlYjhjYTk4MzA2NmM4YzcwIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzLnZvbmRyYUBwb3N0 Z3Jlc3FsLm9yZz4KRGF0ZTogTW9uLCA2IEZlYiAyMDIzIDAzOjQyOjUyICswMTAwClN1Ympl Y3Q6IFtQQVRDSCAxMC8xMF0gd2lwOiB0ZXN0IGdlbmVyYXRvciBzY3JpcHQKCi0tLQogYnJp bi10ZXN0LnB5IHwgMzg2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKwogMSBmaWxlIGNoYW5nZWQsIDM4NiBpbnNlcnRpb25zKCspCiBjcmVh dGUgbW9kZSAxMDA2NDQgYnJpbi10ZXN0LnB5CgpkaWZmIC0tZ2l0IGEvYnJpbi10ZXN0LnB5 IGIvYnJpbi10ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAu LmM5MGVjNzk4YmUKLS0tIC9kZXYvbnVsbAorKysgYi9icmluLXRlc3QucHkKQEAgLTAsMCAr MSwzODYgQEAKK2ltcG9ydCBwc3ljb3BnMgoraW1wb3J0IHBzeWNvcGcyLmV4dHJhcworaW1w b3J0IHJhbmRvbQoraW1wb3J0IHN5cworaW1wb3J0IHRpbWUKK2ltcG9ydCByZQorCitmcm9t IGRhdGV0aW1lIGltcG9ydCBkYXRldGltZQorZnJvbSBzdGF0aXN0aWNzIGltcG9ydCBtZWFu CisKK2NvbHMgPSBbKCdpbnRfdmFsJywgJ2ludDRfbWlubWF4X29wcycpLAorCQkoJ2JpZ2lu dF92YWwnLCAnaW50OF9taW5tYXhfb3BzJyksCisJCSgndGV4dF92YWwnLCAndGV4dF9taW5t YXhfb3BzJyksCisJCSgnaW5ldF92YWwnLCAnaW5ldF9taW5tYXhfb3BzJyksCisJCSgnKGlu dF92YWwrMSknLCAnaW50NF9taW5tYXhfb3BzJyksCisJCSgnKGJpZ2ludF92YWwrMSknLCAn aW50OF9taW5tYXhfb3BzJyksCisJCSgiKCd4JyB8fCB0ZXh0X3ZhbCkiLCAndGV4dF9taW5t YXhfb3BzJyksCisJCSgnKGluZXRfdmFsICsgMSknLCAnaW5ldF9taW5tYXhfb3BzJyksCisJ CSgnKGludF92YWwrMiknLCAnaW50NF9taW5tYXhfb3BzJyksCisJCSgnKGJpZ2ludF92YWwr MiknLCAnaW50OF9taW5tYXhfb3BzJyksCisJCSgiKCd5JyB8fCB0ZXh0X3ZhbCkiLCAndGV4 dF9taW5tYXhfb3BzJyksCisJCSgnKGluZXRfdmFsICsgMiknLCAnaW5ldF9taW5tYXhfb3Bz JyldCisKKyMgcmFuZG9tbHkgcmVvcmRlciB0aGUgdGFibGUgY29sdW1ucworI3RhYmxlX2Nv bHMgPSBbKCdpbnRfdmFsIGludCcsICdpJywgJ2kgKyAlKHNrZXcpZCAqIHJhbmRvbSgpJywg J2kgKyAxMDAwMDAwICogcmFuZG9tKCknKSwKKyMJCQkgICgnYmlnaW50X3ZhbCBiaWdpbnQn LCAnLWknLCAnLWkgLSAxMDAgKiByYW5kb20oKScsICctMSAtIDEwMDAwMDAgKiByYW5kb20o KScpLAorIwkJCSAgKCdpbmV0X3ZhbCBpbmV0JywgIicxMC4wLjAuMCc6OmluZXQgKyBpIiwg IicxMC4wLjAuMCc6OmluZXQgKyBpICogMTAwICogcmFuZG9tKCk6OmludCIsICInMTAuMC4w LjAnOjppbmV0ICsgaSArIDEwMDAwMDAgKiByYW5kb20oKTo6aW50IiksCisjCQkJICAoJ3Rl eHRfdmFsIHRleHQnLCAibHBhZChpOjp0ZXh0IHx8IG1kNShpOjp0ZXh0KSwgNDAsICcwJyki LCAibHBhZCgoaSArIDEwMCpyYW5kb20oKTo6aW50KTo6dGV4dCB8fCBtZDUoaTo6dGV4dCks IDQwLCAnMCcpIiwgImxwYWQoKGkgKyAxMDAwMDAwKnJhbmRvbSgpOjppbnQpOjp0ZXh0IHx8 IG1kNShpOjp0ZXh0KSwgNDAsICcwJykiKV0KKwordGFibGVfY29scyA9IFsoJ2ludF92YWwg aW50JywgJ2kgKyAlKHJhbmRvbW5lc3MpZCAqIHJhbmRvbSgpJyksCisJCQkgICgnYmlnaW50 X3ZhbCBiaWdpbnQnLCAnLWkgLSAlKHJhbmRvbW5lc3MpZCAqIHJhbmRvbSgpJyksCisJCQkg ICgnaW5ldF92YWwgaW5ldCcsICInMTAuMC4wLjAnOjppbmV0ICsgaSArICUocmFuZG9tbmVz cylkICogcmFuZG9tKCk6OmludCIpLAorCQkJICAoJ3RleHRfdmFsIHRleHQnLCAibHBhZCgo aSArICUocmFuZG9tbmVzcylkICogcmFuZG9tKCk6OmludCk6OnRleHQgfHwgbWQ1KGk6OnRl eHQpLCA0MCwgJzAnKSIpXQorCisKK2RlZiBleGVjdXRlX3F1ZXJ5KGN1ciwgcXVlcnksIGZl dGNoX3Jlc3VsdCA9IEZhbHNlKToKKworCWN1ci5leGVjdXRlKHF1ZXJ5KQorCisJaWYgZmV0 Y2hfcmVzdWx0OgorCQlyZXR1cm4gY3VyLmZldGNoYWxsKCkKKworCisjIHJlY3JlYXRlIHRo ZSB0YWJsZSB3aXRoIHRoZSBjb2x1bW5zIGluIHJhbmRvbWl6ZWQgb3JkZXIKK2RlZiByZWNy ZWF0ZV90YWJsZShjb25uLCBucm93cywgcmFuZG9tbmVzcywgZmlsbGZhY3Rvcik6CisKKwly YW5kb20uc2h1ZmZsZSh0YWJsZV9jb2xzKQorCisJY3VyID0gY29ubi5jdXJzb3IoKQorCisJ ZXhlY3V0ZV9xdWVyeShjdXIsICdCRUdJTicpCisKKwlleGVjdXRlX3F1ZXJ5KGN1ciwgJ0RS T1AgVEFCTEUgSUYgRVhJU1RTIHRlc3RfdGFibGUnKQorCisJZXhlY3V0ZV9xdWVyeShjdXIs ICdDUkVBVEUgVEFCTEUgdGVzdF90YWJsZSAoJXMpIHdpdGggKGZpbGxmYWN0b3I9JWQpJyAl ICgnLCAnLmpvaW4oW3ZbMF0gZm9yIHYgaW4gdGFibGVfY29sc10pLCBmaWxsZmFjdG9yKSkK KwlwcmludCgnQ1JFQVRFIFRBQkxFIHRlc3RfdGFibGUgKCVzKSB3aXRoIChmaWxsZmFjdG9y PSVkKScgJSAoJywgJy5qb2luKFt2WzBdIGZvciB2IGluIHRhYmxlX2NvbHNdKSwgZmlsbGZh Y3RvcikpCisKKwlpbnNlcnRfc3FsID0gJ0lOU0VSVCBJTlRPIHRlc3RfdGFibGUgU0VMRUNU ICVzIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsJWQpIHMoaSknICUgKCcsICcuam9pbihbdlsx XSBmb3IgdiBpbiB0YWJsZV9jb2xzXSksIG5yb3dzKQorCWluc2VydF9zcWwgPSBpbnNlcnRf c3FsICUgeydyYW5kb21uZXNzJyA6IGludChucm93cyAqIHJhbmRvbW5lc3MpLCAncm93cycg OiBucm93c30KKworCXByaW50KGluc2VydF9zcWwpCisKKwlleGVjdXRlX3F1ZXJ5KGN1ciwg aW5zZXJ0X3NxbCkKKworCWV4ZWN1dGVfcXVlcnkoY3VyLCAnQ09NTUlUJykKKworCWN1ci5j bG9zZSgpCisKKworZGVmIGNyZWF0ZV9pbmRleGVzKGNvbm4sIHBhZ2VzX3Blcl9yYW5nZSk6 CisKKwljdXIgPSBjb25uLmN1cnNvcigpCisKKwludW1faW5kZXhlcyA9IHJhbmRvbS5yYW5k aW50KDEsbGVuKGNvbHMpKQorCisJIyByYW5kb21seSBwaWNrIGNvbHVtbnMgdG8gaW5kZXgK KwlpbmRleGVkID0gcmFuZG9tLnNhbXBsZShjb2xzLCBudW1faW5kZXhlcykKKworCWZvciBj IGluIGluZGV4ZWQ6CisJCSMgZiA9IHJhbmRvbS5yYW5kb20oKQorCQkjIG51bV9wYWdlcyA9 IDEgKyBpbnQoZiAqIGYgKiBmICogMjU2KQorCQlpbmRleF9zcWwgPSAnQ1JFQVRFIElOREVY IE9OIHRlc3RfdGFibGUgVVNJTkcgYnJpbiAoJXMgJXMpIFdJVEggKHBhZ2VzX3Blcl9yYW5n ZT0lZCknICUgKGNbMF0sIGNbMV0sIHBhZ2VzX3Blcl9yYW5nZSkKKwkJcHJpbnQoaW5kZXhf c3FsKQorCQlleGVjdXRlX3F1ZXJ5KGN1ciwgaW5kZXhfc3FsKQorCisJY3VyLmNsb3NlKCkK KworCXJldHVybiBpbmRleGVkCisKKworZGVmIGJyaW5zb3J0X2luX2V4cGxhaW4oY3VyLCBx dWVyeSk6CisKKwljdXIuZXhlY3V0ZSgnZXhwbGFpbiAnICsgcXVlcnkpCisJZm9yIHIgaW4g Y3VyLmZldGNoYWxsKCk6CisJCWlmICdCUklOIFNvcnQnIGluIHJbJ1FVRVJZIFBMQU4nXToK KwkJCXJldHVybiBUcnVlCisKKwlyZXR1cm4gRmFsc2UKKworCitkZWYgY29tcGFyZV9kZWZh dWx0KGEsIGIpOgorCWlmIGEgPCBiOgorCQlyZXR1cm4gLTEKKwllbGlmIGEgPiBiOgorCQly ZXR1cm4gMQorCXJldHVybiAwCisKKworZGVmIGNvbXBhcmVfaW5ldChhLCBiKToKKwlhID0g W2ludCh2KSBmb3IgdiBpbiBhLnNwbGl0KCcuJyldCisJYiA9IFtpbnQodikgZm9yIHYgaW4g Yi5zcGxpdCgnLicpXQorCisJZm9yIHAgaW4gcmFuZ2UoMCw0KToKKwkJciA9IGNvbXBhcmVf ZGVmYXVsdChhW3BdLCBiW3BdKQorCQlpZiByICE9IDA6CisJCQlyZXR1cm4gcgorCisJcmV0 dXJuIHIKKworCitkZWYgY2hlY2tfb3JkZXJpbmcoY29ubiwgY29uZmlnLCBxdWVyeSwgZXhw ZWN0ZWRfcm93cywgc2VsZWN0X3N0YXIsIHNlbGVjdF9saXN0LCBzb3J0X2xpc3QsIGlzX2Rl c2MpOgorCisJY3VyID0gY29ubi5jdXJzb3IoKQorCisJZGF0YSA9IGV4ZWN1dGVfcXVlcnko Y3VyLCBxdWVyeSwgVHJ1ZSkKKworCWlmIGxlbihkYXRhKSAhPSBleHBlY3RlZF9yb3dzOgor CQlwcmludCgnRVJST1I6IHVuZXhwZWN0ZWQgbnVtYmVyIG9mIHJvd3MgJXMgJXMnICUgKGV4 cGVjdGVkX3Jvd3MsIGxlbihkYXRhKSkpCisJCXN5cy5leGl0KDEpCisKKwkjIHdoYXQgcHJl Zml4IHdlIGNhbiBjaGVjayBvcmRlcmluZyBmb3IgKHNvbWUgc29ydCBjb2x1bW5zIG1heSBu b3QgYmUKKwkjIGluY2x1ZGVkIGluIHRoZSByZXN1bHQsIGFuZCB3ZSBuZWVkIGEgY29udGlu dW91cyBwcmVmaXgpCisJcHJlZml4ID0gW10KKwlpbmRleGVzID0gW10KKwlzb3J0X29yZGVy ID0ge30KKwlmb3IgcyBpbiBzb3J0X2xpc3Q6CisJCWlmIHNlbGVjdF9zdGFyOgorCQkJaWYg c1swXSBub3QgaW4gW3ggZm9yIHggaW4gdGFibGVfY29sc106CisJCQkJYnJlYWsKKworCQkJ aWR4ID0gW3ggZm9yIHggaW4gdGFibGVfY29sc10uaW5kZXgoc1swXSkKKwkJZWxzZToKKwkJ CWlmIHMgbm90IGluIHNlbGVjdF9saXN0OgorCQkJCWJyZWFrCisKKwkJCWlkeCA9IHNlbGVj dF9saXN0LmluZGV4KHMpCisKKwkJaWYgaWR4IGlzIE5vbmU6CisJCQlicmVhaworCisJCXNv cnRfaWR4ID0gc29ydF9saXN0LmluZGV4KHMpCisKKwkJcHJlZml4LmFwcGVuZChzKQorCQlp bmRleGVzLmFwcGVuZChpZHgpCisJCSMgc29ydF9vcmRlci51cGRhdGUoe3NlbGVjdF9saXN0 LmluZGV4KHMpIDogaXNfZGVzY1tzb3J0X2xpc3QuaW5kZXgocyldfSkKKwkJc29ydF9vcmRl ci51cGRhdGUoe2lkeCA6IGlzX2Rlc2Nbc29ydF9pZHhdfSkKKworCSMgcHJpbnQoIlBSRUZJ WCIsIGluZGV4ZXMsIHByZWZpeCkKKworCWlmIGxlbihwcmVmaXgpICE9IDA6CisJCXByZXYg PSBOb25lCisJCWZvciByb3cgaW4gZGF0YToKKwkJCWlmIHByZXYgaXMgbm90IE5vbmU6CisK KwkJCQlmb3IgaWR4IGluIGluZGV4ZXM6CisKKwkJCQkJaWYgc2VsZWN0X2xpc3RbaWR4XVsx XSA9PSAnaW5ldF9taW5tYXhfb3BzJzoKKwkJCQkJCXIgPSBjb21wYXJlX2luZXQocHJldltp ZHhdLCByb3dbaWR4XSkKKwkJCQkJZWxzZToKKwkJCQkJCXIgPSBjb21wYXJlX2RlZmF1bHQo cHJldltpZHhdLCByb3dbaWR4XSkKKworCQkJCQlpZiBzb3J0X29yZGVyW2lkeF06CisJCQkJ CQlyID0gLXIKKworCQkJCQlpZiByID4gMDoKKwkJCQkJCXByaW50KCJFUlJPUjogaW5jb3Jy ZWN0IG9yZGVyaW5nICVzID4gJXMiICUgKHByZXZbaWR4XSwgcm93W2lkeF0pKQorCQkJCQkJ c3lzLmV4aXQoMSkKKworCQkJCQlpZiByIDwgMDoKKwkJCQkJCWJyZWFrCisKKwkJCXByZXYg PSByb3cKKworCWN1ci5jbG9zZSgpCisKKworZGVmIHJ1bl9xdWVyaWVzKGNvbm4sIGNvbmZp ZywgaW5kZXhlZF9jb2xzLCBudW1fcXVlcmllcyA9IDEwMDApOgorCisJbnF1ZXJ5ID0gMAor CisJd2hpbGUgbnF1ZXJ5IDwgbnVtX3F1ZXJpZXM6CisJCWlmIHJ1bl9xdWVyeShjb25uLCBj b25maWcsIGluZGV4ZWRfY29scyk6CisJCQlucXVlcnkgKz0gMQorCisKK2RlZiBxdWVyeV90 aW1pbmcoY3VyLCBxdWVyeSk6CisKKwlydW5zID0gW10KKworCSMgZ2V0IGV4cGxhaW4gcGxh biBhbmQgY29zdHMgZnJvbSB0aGUgZmlyc3Qgbm9kZQorCXIgPSBleGVjdXRlX3F1ZXJ5KGN1 ciwgJ2V4cGxhaW4gKGFuYWx5emUsIHRpbWluZyBvZmYpICVzJyAlIChxdWVyeSwpLCBUcnVl KQorCXByaW50KCIiKQorCXByaW50KCJcbiIuam9pbihbJyAgICAnICsgeFswXSBmb3IgeCBp biByXSkpCisJcHJpbnQoIiIpCisKKwlzeXMuc3Rkb3V0LmZsdXNoKCkKKworCXIgPSByZS5z ZWFyY2goJ2Nvc3Q9KFteXHNdKilcLlwuKFteXHNdKiknLCByWzBdWzBdKQorCWNvc3RzID0g W2Zsb2F0KHIuZ3JvdXBzKClbMF0pLCBmbG9hdChyLmdyb3VwcygpWzFdKV0KKworCWZvciBy IGluIHJhbmdlKDAsMSk6CisJCXMgPSB0aW1lLnRpbWUoKQorCQlleGVjdXRlX3F1ZXJ5KGN1 ciwgcXVlcnkpCisJCWQgPSB0aW1lLnRpbWUoKQorCQlydW5zLmFwcGVuZChkLXMpCisKKwkj IHByaW50KCJydW5zICVzID0+IG1lYW4gJXMiICUgKHN0cihydW5zKSwgbWVhbihydW5zKSkp CisKKwlzeXMuc3Rkb3V0LmZsdXNoKCkKKworCXJldHVybiAobWVhbihydW5zKSwgY29zdHMp CisKKworZGVmIGNoZWNrX3RpbWluZyhjb25uLCBjb25maWcsIHF1ZXJ5KToKKworCWN1ciA9 IGNvbm4uY3Vyc29yKCkKKworCSMgZ2V0IHRpbWluZyBmb3IgYSBzaW1wbGUgcGxhbiB3aXRo b3V0IGEgQlJJTiBzb3J0CisKKwlleGVjdXRlX3F1ZXJ5KGN1ciwgJ3NldCBlbmFibGVfc2Vx c2NhbiA9IG9uJykKKwlleGVjdXRlX3F1ZXJ5KGN1ciwgJ3NldCBlbmFibGVfYnJpbnNvcnQg PSBvZmYnKQorCisJKHNlcXNjYW5fdGltZSwgc2Vxc2Nhbl9jb3N0cykgPSBxdWVyeV90aW1p bmcoY3VyLCBxdWVyeSkKKworCSMgZ2V0IHRpbWluZyBmb3IgYSBzaW1wbGUgcGxhbiB3aXRo IGEgQlJJTiBzb3J0CisJZXhlY3V0ZV9xdWVyeShjdXIsICdzZXQgZW5hYmxlX3NlcXNjYW4g PSBvZmYnKQorCWV4ZWN1dGVfcXVlcnkoY3VyLCAnc2V0IGVuYWJsZV9icmluc29ydCA9IG9u JykKKwlleGVjdXRlX3F1ZXJ5KGN1ciwgcXVlcnkpCisKKwkoYnJpbnNvcnRfdGltZSwgYnJp bnNvcnRfY29zdHMpID0gcXVlcnlfdGltaW5nKGN1ciwgcXVlcnkpCisKKwlwcmludCAoInRp bWluZyIsICdyb3dzJywgY29uZmlnWyducm93cyddLCAncGFnZXNfcGVyX3JhbmdlJywgY29u ZmlnWydwYWdlc19wZXJfcmFuZ2UnXSwgJ3JhbmRvbW5lc3MnLCBjb25maWdbJ3JhbmRvbW5l c3MnXSwgJ2ZpbGxmYWN0b3InLCBjb25maWdbJ2ZpbGxmYWN0b3InXSwgJ3dvcmtfbWVtJywg Y29uZmlnWyd3b3JrX21lbSddLCAnd2F0ZXJtYXJrX3N0ZXAnLCBjb25maWdbJ3dhdGVybWFy a19zdGVwJ10sICdsaW1pdCcsIGNvbmZpZ1snbGltaXQnXSwgJ29mZnNldCcsIGNvbmZpZ1sn b2Zmc2V0J10sICJzZXFzY2FuIiwgc2Vxc2Nhbl90aW1lLCAiYnJpbnNvcnQiLCBicmluc29y dF90aW1lLCAiY29zdHMgc2Vxc2NhbiIsIHNlcXNjYW5fY29zdHNbMF0sIHNlcXNjYW5fY29z dHNbMV0sICJicmluc29ydCIsIGJyaW5zb3J0X2Nvc3RzWzBdLCBicmluc29ydF9jb3N0c1sx XSkKKwkjIHByaW50ICgiYnJpbnNvcnQgdGltaW5nIiwgYnJpbnNvcnRfdGltZSwgImNvc3Rz IiwgYnJpbnNvcnRfY29zdHNbMF0sIGJyaW5zb3J0X2Nvc3RzWzFdKQorCisJaWYgKHNlcXNj YW5fY29zdHNbMV0gKiAxLjEgPCBicmluc29ydF9jb3N0c1sxXSkgYW5kIChzZXFzY2FuX3Rp bWUgPiBicmluc29ydF90aW1lICogMS4xKToKKwkJcHJpbnQgKCJDT1NUSU5HIElTU1VFICgl ZiA8ICVmKSAmJiAoJWYgPiAlZikiICUgKHNlcXNjYW5fY29zdHNbMV0sIGJyaW5zb3J0X2Nv c3RzWzFdLCBzZXFzY2FuX3RpbWUsIGJyaW5zb3J0X3RpbWUpKQorCisJaWYgKHNlcXNjYW5f Y29zdHNbMV0gPiBicmluc29ydF9jb3N0c1sxXSAqIDEuMSkgYW5kIChzZXFzY2FuX3RpbWUg KiAxLjEgPCBicmluc29ydF90aW1lKToKKwkJcHJpbnQgKCJDT1NUSU5HIElTU1VFICglZiA+ ICVmKSAmJiAoJWYgPCAlZikiICUgKHNlcXNjYW5fY29zdHNbMV0sIGJyaW5zb3J0X2Nvc3Rz WzFdLCBzZXFzY2FuX3RpbWUsIGJyaW5zb3J0X3RpbWUpKQorCisJc3lzLnN0ZG91dC5mbHVz aCgpCisKKworZGVmIHJ1bl9xdWVyeShjb25uLCBjb25maWcsIGluZGV4ZWRfY29scyk6CisK KwlsaW1pdF9yb3dzID0gY29uZmlnWyducm93cyddCisJb2Zmc2V0X3Jvd3MgPSAwCisKKwlj dXIgPSBjb25uLmN1cnNvcihjdXJzb3JfZmFjdG9yeT1wc3ljb3BnMi5leHRyYXMuUmVhbERp Y3RDdXJzb3IpCisKKwkjIHJhbmRvbSBjb2x1bW5zIHRvIHJlZmVyZW5jZSBpbiB0aGUgU0VM RUNUIGxpc3QsIG1heSBub3QgaW5jbHVkZSBzb3J0IGNvbHVtbihzKQorCXNlbGVjdF9saXN0 ID0gcmFuZG9tLnNhbXBsZShjb2xzLCByYW5kb20ucmFuZGludCgxLGxlbihjb2xzKSkpCisK KwkjIGJ1dCBtYXliZSBqdXN0IGRvIHNlbGVjdCAqLCBzbyB0aGF0IHdlIGRvbid0IGRvIGEg cHJvamVjdGlvbgorCXNlbGVjdF9zdGFyID0gRmFsc2UKKwlpZiByYW5kb20ucmFuZG9tKCkg PCAwLjU6CisJCXNlbGVjdF9zdGFyID0gVHJ1ZQorCQlzZWxlY3RfbGlzdCA9IFsoJyonLCBO b25lKV0KKworCSMgcmFuZG9tIGNvbHVtbnMgdG8gcmVmZXJlbmNlIGluIHRoZSBPUkRFUiBC WSBjbGF1c2UKKwlzb3J0X2xpc3QgPSByYW5kb20uc2FtcGxlKGNvbHMsIHJhbmRvbS5yYW5k aW50KDEsbGVuKGNvbHMpKSkKKworCSMgZ2VuZXJhdGUgcmFuZG9tIEFTQyAvIERFU0MgbW9k aWZpZXJzCisJaXNfZGVzYyA9IFtdCisJb3JkZXJfYnkgPSBbXQorCWZvciBzIGluIHJhbmdl KDAsbGVuKHNvcnRfbGlzdCkpOgorCQlkZXNjID0gcmFuZG9tLmNob2ljZShbVHJ1ZSwgRmFs c2VdKQorCQlpc19kZXNjLmFwcGVuZChkZXNjKQorCQl4ID0gc29ydF9saXN0W3NdWzBdCisJ CWlmIGRlc2M6CisJCQl4ID0geCArICcgREVTQycKKwkJb3JkZXJfYnkuYXBwZW5kKHgpCisK KwlxdWVyeSA9ICdTRUxFQ1QgJXMgRlJPTSB0ZXN0X3RhYmxlIE9SREVSIEJZICVzJyAlICgn LCAnLmpvaW4oW3ZbMF0gZm9yIHYgaW4gc2VsZWN0X2xpc3RdKSwgJywgJy5qb2luKG9yZGVy X2J5KSkKKworCSMgcmFuZG9tbHkgYWRkIExJTUlUIGFuZCBPRkZTRVQgY2xhdXNlKHMpCisJ aWYgcmFuZG9tLnJhbmRvbSgpIDwgMC41OgorCisJCWxpbWl0X3Jvd3MgPSAxICsgaW50KHBv dyhyYW5kb20ucmFuZG9tKCksIDMpICogcmFuZG9tLnJhbmRpbnQoMSxjb25maWdbJ25yb3dz J10pKQorCQlxdWVyeSA9IHF1ZXJ5ICsgJyBMSU1JVCAlZCcgJSAobGltaXRfcm93cywpOwor CisJCWlmIGxpbWl0X3Jvd3MgPCBjb25maWdbJ25yb3dzJ10gYW5kIHJhbmRvbS5yYW5kb20o KSA8IDAuNToKKworCQkJb2Zmc2V0X3Jvd3MgPSBpbnQocG93KHJhbmRvbS5yYW5kb20oKSwg MykgKiByYW5kb20ucmFuZGludCgxLGNvbmZpZ1snbnJvd3MnXSAtIGxpbWl0X3Jvd3MpKQor CQkJcXVlcnkgPSBxdWVyeSArICcgT0ZGU0VUICVkJyAlIChvZmZzZXRfcm93cywpOworCisJ ZXhwZWN0ZWRfcm93cyA9IG1pbihsaW1pdF9yb3dzLCBjb25maWdbJ25yb3dzJ10gLSBvZmZz ZXRfcm93cykKKworCSMgd2F0ZXJtYXJrX3N0ZXAgPSByYW5kb20ucmFuZGludCgtMSwgMykK Kwl3YXRlcm1hcmtfc3RlcCA9IHJhbmRvbS5jaG9pY2UoWy0xLCAwLCAxLCA4LCAzMiwgMTI4 XSkKKwlleGVjdXRlX3F1ZXJ5KGN1ciwgJ1NFVCBicmluc29ydF93YXRlcm1hcmtfc3RlcCA9 ICVkJyAlICh3YXRlcm1hcmtfc3RlcCwpKQorCisJZiA9IHJhbmRvbS5yYW5kb20oKQorCSN3 b3JrX21lbV9rYiA9IDY0ICsgaW50KChmICogZiAqIGYpICogcmFuZG9tLnJhbmRpbnQoNjQs IDMyNzY4KSkKKwl3b3JrX21lbV9rYiA9IHJhbmRvbS5jaG9pY2UoWzY0LCAxMDI0LCA0MDk2 LCAzMjc2OF0pCisKKwlleGVjdXRlX3F1ZXJ5KGN1ciwgIlNFVCB3b3JrX21lbSA9ICclZGtC JyIgJSAod29ya19tZW1fa2IsKSkKKworCWNvbmZpZyA9IGNvbmZpZy5jb3B5KCkKKwljb25m aWcudXBkYXRlKHsnd29ya19tZW0nIDogd29ya19tZW1fa2J9KQorCWNvbmZpZy51cGRhdGUo eyd3YXRlcm1hcmtfc3RlcCcgOiB3YXRlcm1hcmtfc3RlcH0pCisJY29uZmlnLnVwZGF0ZSh7 J2xpbWl0JyA6IGxpbWl0X3Jvd3N9KQorCWNvbmZpZy51cGRhdGUoeydvZmZzZXQnIDogb2Zm c2V0X3Jvd3N9KQorCisJIyBkbyB3ZSBleHBlY3QgYnJpbnNvcnQgb3Igbm90PyBvbmx5IHdo ZW4gdGhlIGZpcnN0IE9SREVSIEJZIGlzIGluZGV4ZWQKKwlpZiBzb3J0X2xpc3RbMF0gaW4g aW5kZXhlZF9jb2xzOgorCisJCXByaW50KCctLS0tLS0tLS0tLS0tLScsIGRhdGV0aW1lLm5v dygpLCAnLS0tLS0tLS0tLS0tLS0nKQorCQlwcmludCgiU1FMOiIsIHF1ZXJ5KQorCQlwcmlu dCgiQ09ORklHOiIsIGNvbmZpZykKKworCQlpZiBicmluc29ydF9pbl9leHBsYWluKGN1ciwg cXVlcnkpOgorCQkJY2hlY2tfb3JkZXJpbmcoY29ubiwgY29uZmlnLCBxdWVyeSwgZXhwZWN0 ZWRfcm93cywgc2VsZWN0X3N0YXIsIHNlbGVjdF9saXN0LCBzb3J0X2xpc3QsIGlzX2Rlc2Mp CisJCQljaGVja190aW1pbmcoY29ubiwgY29uZmlnLCBxdWVyeSkKKwkJZWxzZToKKwkJCXBy aW50KCJFUlJPUjogQlJJTiBTb3J0IG5vdCBpbiBwbGFuIikKKwkJCXN5cy5leGl0KDEpCisK KwkJcmVzdWx0ID0gVHJ1ZQorCisJZWxzZToKKworCQlpZiBicmluc29ydF9pbl9leHBsYWlu KGN1ciwgcXVlcnkpOgorCQkJcHJpbnQoIkVSUk9SOiBCUklOIFNvcnQgaW4gcGxhbiIpCisJ CQlzeXMuZXhpdCgxKQorCisJCXJlc3VsdCA9IEZhbHNlCisKKwljdXIuY2xvc2UoKQorCisJ cmV0dXJuIHJlc3VsdAorCisKK2RlZiBzZXR1cF9jb25uZWN0aW9uKGNvbm4pOgorCWN1ciA9 IGNvbm4uY3Vyc29yKCkKKworCSMgZm9yY2UgaW5kZXggYWNjZXNzCisJZXhlY3V0ZV9xdWVy eShjdXIsICdTRVQgZW5hYmxlX3NlcXNjYW4gPSBvZmYnKQorCWV4ZWN1dGVfcXVlcnkoY3Vy LCAnU0VUIG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAwJykKKworCWN1ci5j bG9zZSgpCisKKworcnVuX2lkID0gMAorCit3aGlsZSBUcnVlOgorCisJcnVuX2lkICs9IDEK KworCWNvbmZpZyA9IHt9CisKKwljb25uID0gcHN5Y29wZzIuY29ubmVjdCgnaG9zdD1sb2Nh bGhvc3QgcG9ydD01NDMyIGRibmFtZT10ZXN0IHVzZXI9dXNlcicpCisKKwlzZXR1cF9jb25u ZWN0aW9uKGNvbm4pCisKKwlwcmludCgnPT09PT09PT09PSBydW4gJWQgPT09PT09PT09PScg JSAocnVuX2lkLCkpCisKKwkjIGRhdGEgZGlzdHJpYnV0aW9uICgxIC0gc2VxdWVudGlhbCwg MyAtIHJhbmRvbSkKKwljb25maWdbJ3JhbmRvbW5lc3MnXSA9IHJhbmRvbS5jaG9pY2UoWzAs IDAuMDUsIDAuMSwgMC4yNSwgMC41LCAxLjBdKQorCisJIyByYW5kb20gZmlsbGZhY3Rvciwg c2tld2VkIGNsb3NlciB0byAxMCUKKwljb25maWdbJ2ZpbGxmYWN0b3InXSA9IDEwICsgaW50 KHBvdyhyYW5kb20ucmFuZG9tKCksMykgKiA5MCkKKworCSMgcmFuZG9tIG51bWJlciBvZiBy b3dzCisJY29uZmlnWyducm93cyddID0gcmFuZG9tLmNob2ljZShbMTAwMDAwLCAxMDAwMDAw XSkKKworCSMgcGFnZXMgcGVyIEJSSU4gcmFuZ2UgKGZvciBhbGwgaW5kZXhlcykKKwljb25m aWdbJ3BhZ2VzX3Blcl9yYW5nZSddID0gcmFuZG9tLmNob2ljZShbMSwgMzIsIDEyOF0pCisK KwlyZWNyZWF0ZV90YWJsZShjb25uLCBjb25maWdbJ25yb3dzJ10sIGNvbmZpZ1sncmFuZG9t bmVzcyddLCBjb25maWdbJ2ZpbGxmYWN0b3InXSkKKworCWluZGV4ZWRfY29scyA9IGNyZWF0 ZV9pbmRleGVzKGNvbm4sIGNvbmZpZ1sncGFnZXNfcGVyX3JhbmdlJ10pCisKKwlydW5fcXVl cmllcyhjb25uLCBjb25maWcsIGluZGV4ZWRfY29scykKKworCWNvbm4uY2xvc2UoKQotLSAK Mi4zOS4wCgo= --------------z0saJSUvc90TqSu15DjSpJR9--