<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>42811</bug_id>
          
          <creation_ts>2010-07-22 03:00:30 -0700</creation_ts>
          <short_desc>Geolocation preemptive permissions policy is buggy</short_desc>
          <delta_ts>2010-08-25 06:17:06 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>40002</dependson>
          <blocked>42027</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Steve Block">steveblock</reporter>
          <assigned_to name="Mahesh Kulkarni">maheshk</assigned_to>
          <cc>abecsi</cc>
    
    <cc>bulach</cc>
    
    <cc>commit-queue</cc>
    
    <cc>hausmann</cc>
    
    <cc>johnnyg</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>maheshk</cc>
    
    <cc>ossy</cc>
    
    <cc>steveblock</cc>
    
    <cc>tonikitoo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>254707</commentid>
    <comment_count>0</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-07-22 03:00:30 -0700</bug_when>
    <thetext>The Geolocation preemptive permissions policy has a number of bugs.
- We need to handle the case of multiple requests being made before permission is granted/denied. This so that when permission is granted, we can start the timers on all the waiting notifiers, and pass all their enablehighAccuracy flags to GeolocationService::startUpdating() or GeolocationController::addObserver(). This could be achieved by making m_startRequestPermissionNotifier a set.
- When permission is denied, we need to set a fatal error on all current notifiers, not just that pointed to by m_startRequestPermissionNotifier.
- When permission is denied, we should not add m_startRequestPermissionNotifier to m_oneShots, as the notifier is already in m_oneShots or m_watchers and we don&apos;t know that it&apos;s a one-shot request anyway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>256037</commentid>
    <comment_count>1</comment_count>
      <attachid>62572</attachid>
    <who name="Mahesh Kulkarni">maheshk</who>
    <bug_when>2010-07-26 07:44:34 -0700</bug_when>
    <thetext>Created attachment 62572
patch

maintains set of pending permission notifiers and starts service for non client based ports. No new tests added (?). layout tests for geolocations are passing with and without preemptive enabled.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>256044</commentid>
    <comment_count>2</comment_count>
      <attachid>62572</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-07-26 08:14:18 -0700</bug_when>
    <thetext>Comment on attachment 62572
patch

&gt; ChangeLog
&gt; +          No new test content added
I think this warrants a new test. Unfortunately I think that requires a fix to the Mac LayoutTestController which is being done in Bug 40002. I&apos;ll try to get that bug fixed soon.

&gt; Geolocation.cpp: 415
&gt; page-&gt;geolocationController()-&gt;addObserver(this);
This should be in the above loop. Can you also add a FIXME to pass options to the client, as at line 635.

&gt; Geolocation.cpp: 417
&gt; // TODO: Handle startUpdate() for non-client based implementations using pre-emptive policy
This patch should just fix this bug - the problems with the existing code. Let&apos;s leave adding the new code for !CLIENT_BASED &amp;&amp; PREEMPT for Bug 42027.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>256087</commentid>
    <comment_count>3</comment_count>
    <who name="Mahesh Kulkarni">maheshk</who>
    <bug_when>2010-07-26 10:13:50 -0700</bug_when>
    <thetext>(In reply to comment #2)

Thanks for the review Steve. 

&gt; (From update of attachment 62572 [details])
&gt; &gt; ChangeLog
&gt; &gt; +          No new test content added
&gt; I think this warrants a new test. Unfortunately I think that requires a fix to the Mac LayoutTestController which is being done in Bug 40002. I&apos;ll try to get that bug fixed soon.

Ok few new test cases for multiple notifiers waiting permission. Do you think its good idea to raise a different bug for these new cases and mark blocked by 40002?

&gt; 
&gt; &gt; Geolocation.cpp: 415
&gt; &gt; page-&gt;geolocationController()-&gt;addObserver(this);
&gt; This should be in the above loop. Can you also add a FIXME to pass options to the client, as at line 635.
&gt; 

ok, so its number of listeners for controller. Will update this in patch.

&gt; &gt; Geolocation.cpp: 417
&gt; &gt; // TODO: Handle startUpdate() for non-client based implementations using pre-emptive policy
&gt; This patch should just fix this bug - the problems with the existing code. Let&apos;s leave adding the new code for !CLIENT_BASED &amp;&amp; PREEMPT for Bug 42027.

ok make sense. Will take care of this</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>256097</commentid>
    <comment_count>4</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-07-26 10:43:00 -0700</bug_when>
    <thetext>&gt; Ok few new test cases for multiple notifiers waiting permission. Do you think
&gt; its good idea to raise a different bug for these new cases and mark blocked by
&gt; 40002?
No, I think the tests should be part of this patch. I&apos;ll work on getting Bug 40002 fixed asap. I&apos;ve marked this bug as blocked by it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>261743</commentid>
    <comment_count>5</comment_count>
      <attachid>63822</attachid>
    <who name="Mahesh Kulkarni">maheshk</who>
    <bug_when>2010-08-07 11:37:36 -0700</bug_when>
    <thetext>Created attachment 63822
patch

This patch implements a set, m_pendingForPermissionNotifiers to maintain set of pending requests. When user grands/denies permission all listener&apos;s will be notified. Added couple of new layout test cases when multiple requests are waiting for user permission.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262054</commentid>
    <comment_count>6</comment_count>
      <attachid>63822</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-08-09 03:00:34 -0700</bug_when>
    <thetext>Comment on attachment 63822
patch

WebCore/ChangeLog:11
 +          When user grands/denies permission all listener&apos;s will be notified. 
s/grands/grants

WebCore/ChangeLog:6
 +          Geolocation preemptive permissions policy is buggy
Should be bug title, then URL on line below

WebCore/page/Geolocation.cpp:420
 +              // TODO: Handle startUpdate() for non-client based implementations using pre-emptive policy
Indentation

WebCore/page/Geolocation.cpp:417
 +                      return;
It seems odd to have this test in the loop. I think we can early-out before the loop if no frame is present. Alternatively, could you call startUpdating()?

WebCore/page/Geolocation.cpp:628
 +          m_pendingForPermissionNotifiers.add(notifier);
It might help readability to add an ASSERT(!isDenied()) above this line.

WebCore/page/Geolocation.cpp:425
 +              for (GeoNotifierSet::const_iterator iter = m_pendingForPermissionNotifiers.begin(); iter != end; ++iter) {
Would it be cleaner to use a single loop, with the &apos;if (isAllowed())&apos; inside the loop?

WebCore/page/Geolocation.cpp:418
 +                  page-&gt;geolocationController()-&gt;addObserver(this, notifier-&gt;m_options-&gt;enableHighAccuracy());
This is incorrect. We should only add an observer / start the service if the request does not have a zero timeout. Also, if adding an observer / starting the service fails, we need to set a fatal error. See startRequest(). Perhaps we could share some code from that method?

LayoutTests/fast/dom/Geolocation/script-tests/delayed-multiple-permissions-allowed.js:1
 +  description(&quot;Tests that when a position is available, no callbacks are invoked until permission is allowed.&quot;);
Mention that here we test with multiple queued requests, to distinguish this from delayed-permission-allowed.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262112</commentid>
    <comment_count>7</comment_count>
    <who name="Mahesh Kulkarni">maheshk</who>
    <bug_when>2010-08-09 05:37:19 -0700</bug_when>
    <thetext>(In reply to comment #6)
Thanks for review. 

&gt; WebCore/page/Geolocation.cpp:417
&gt;  +                      return;
&gt; It seems odd to have this test in the loop. I think we can early-out before the loop if no frame is present. Alternatively, could you call startUpdating()?

StartUpdating() for PREEMPT &amp;&amp; !CLIENT? will be covered in bug 42027.


&gt; WebCore/page/Geolocation.cpp:425
&gt;  +              for (GeoNotifierSet::const_iterator iter = m_pendingForPermissionNotifiers.begin(); iter != end; ++iter) {
&gt; Would it be cleaner to use a single loop, with the &apos;if (isAllowed())&apos; inside the loop?

That would have repeated isAllowed() check which we could avoid. I was thinking to write a helper function to move all code under if(isAllowed()) and make it more cleaner to read? 

&gt; 
&gt; WebCore/page/Geolocation.cpp:418
&gt;  +                  page-&gt;geolocationController()-&gt;addObserver(this, notifier-&gt;m_options-&gt;enableHighAccuracy());
&gt; This is incorrect. We should only add an observer / start the service if the request does not have a zero timeout. Also, if adding an observer / starting the service fails, we need to set a fatal error. See startRequest(). Perhaps we could share some code from that method?
&gt; 

A listener is appended to the m_pendingForPermissionNotifiers queue if listener doesn&apos;t have zero timeout. Perhaps we can move 
if (m_pendingForPermissionNotifiers.isEmpty()) to startUpdating() and add permission error&apos;s to GeoNotifier::timerFired() function?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262121</commentid>
    <comment_count>8</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-08-09 06:27:58 -0700</bug_when>
    <thetext>&gt; StartUpdating() for PREEMPT &amp;&amp; !CLIENT? will be covered in bug 42027.
I meant Geolocation::startUpdating(). Either way, I think it&apos;s neater to early-out.

&gt; A listener is appended to the m_pendingForPermissionNotifiers queue if listener
&gt; doesn&apos;t have zero timeout.
Yes, you&apos;re right. Perhaps add a comment/ASSERT in startUpdating() or setIsAllowed() to make this clear.

&gt; Perhaps we can move 
&gt; if (m_pendingForPermissionNotifiers.isEmpty()) to startUpdating() and add
&gt; permission error&apos;s to GeoNotifier::timerFired() function?
I&apos;m not exactly sure what you mean but I&apos;d be happy to look at a patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262601</commentid>
    <comment_count>9</comment_count>
      <attachid>63997</attachid>
    <who name="Mahesh Kulkarni">maheshk</who>
    <bug_when>2010-08-10 03:49:13 -0700</bug_when>
    <thetext>Created attachment 63997
patch

Incorporates changes as per comment #6

- when notifier-&gt;hasZeroTimeout() is set, immediate call back has to be given

- permission pending notifiers will be added before startUpdating() called to make starRequest() more readble. 
  This also means that when makeCachedPositionCallbacks() calls startupdating() no redundant permission checks happen

- added handlePendingPermissionNotifiers() to make setIsAllowed() more readable. 

- m_service-&gt;startUpdate() is called in case of !CLIENT_BASED_GEOLOCATION &amp;&amp; PREEMPT_GEOLOCATION_PERMISSION clients on successful permission set.
  We could add a layout test for this but that would mean we have to enable PREEMPT_GEOLOCATION_PERMISSION for MockGeolocationService. Please comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262664</commentid>
    <comment_count>10</comment_count>
      <attachid>63997</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-08-10 07:01:53 -0700</bug_when>
    <thetext>Comment on attachment 63997
patch

Thanks for the patch Mahesh. In general, I like the new structure. A few comments below.

WebCore/page/Geolocation.cpp:284
 +      // Only start update if we&apos;re not waiting for user permission.
The indentation here is wrong. Maybe move the comment inside the &apos;else if&apos; and reword as &apos;If we don&apos;t yet have permission, request it now rather than calling startUpdating().&apos;

WebCore/page/Geolocation.cpp:286
 +          ASSERT(!isDenied());
There&apos;s probably no need for this now that we test for isDenied() just above.

WebCore/page/Geolocation.cpp:410
 +      // Permission request was made during the startUpdating process
This comment is no longer accurate

WebCore/page/Geolocation.cpp:662
 +              // start all pending notification requests as permission granted.
This comment and the one above apply to both the client-based and non-client based code, so should be above the #if

WebCore/page/Geolocation.cpp:664
 +                  notifier-&gt;setFatalError(PositionError::create(PositionError::POSITION_UNAVAILABLE, failedToStartServiceErrorMessage));
Let&apos;s leave the non-client-based implementation for Bug 42027.

WebCore/page/Geolocation.cpp:655
 +          notifier-&gt;startTimerIfNeeded();
We only need to start the timer if permission is allowed and if we successfully start the service/add the observer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262755</commentid>
    <comment_count>11</comment_count>
      <attachid>64027</attachid>
    <who name="Mahesh Kulkarni">maheshk</who>
    <bug_when>2010-08-10 10:44:36 -0700</bug_when>
    <thetext>Created attachment 64027
patch

Incorporated changes from comment #10</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263127</commentid>
    <comment_count>12</comment_count>
      <attachid>64027</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-08-11 02:15:08 -0700</bug_when>
    <thetext>Comment on attachment 64027
patch

WebCore/page/Geolocation.cpp:661
 +  #endif
You could leave the TODO in place for the non-client-based impl if you like.

WebCore/page/Geolocation.cpp:651
 +      GeoNotifierSet::const_iterator end = m_pendingForPermissionNotifiers.end();
It might be worth adding a comment that we don&apos;t need to protect against the set being modified while we iterate through it because any reentrant calls from JS callbacks to getCurrentPosition()/watchPosition() will see the permission as having been set, so won&apos;t add notifiers to the pending set.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263174</commentid>
    <comment_count>13</comment_count>
      <attachid>64094</attachid>
    <who name="Mahesh Kulkarni">maheshk</who>
    <bug_when>2010-08-11 04:26:37 -0700</bug_when>
    <thetext>Created attachment 64094
patch

Thanks Steve for r+ 

I don&apos;t have commit rights so submitting the patch again with changes as per comment #12. Also if you could r+ commit queue for it to pick up and land patch automatically.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263175</commentid>
    <comment_count>14</comment_count>
      <attachid>64094</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-08-11 04:34:10 -0700</bug_when>
    <thetext>Comment on attachment 64094
patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263431</commentid>
    <comment_count>15</comment_count>
      <attachid>64094</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-08-11 13:33:02 -0700</bug_when>
    <thetext>Comment on attachment 64094
patch

Rejecting patch 64094 from commit-queue.

Failed to run &quot;[&apos;WebKitTools/Scripts/run-webkit-tests&apos;, &apos;--no-launch-safari&apos;, &apos;--exit-after-n-failures=1&apos;, &apos;--wait-for-httpd&apos;, &apos;--ignore-tests&apos;, &apos;compositing&apos;, &apos;--quiet&apos;]&quot; exit_code: 1
Running build-dumprendertree
Compiling Java tests
make: Nothing to be done for `default&apos;.
Running tests from /Users/eseidel/Projects/CommitQueue/LayoutTests
Testing 20831 test cases.
fast/dom/Geolocation/delayed-multiple-permissions-allowed.html -&gt; failed

Exiting early after 1 failures. 6591 tests run.
128.40s total testing time

6590 test cases (99%) succeeded
1 test case (&lt;1%) had incorrect layout
5 test cases (&lt;1%) had stderr output

Full output: http://queues.webkit.org/results/3756076</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264617</commentid>
    <comment_count>16</comment_count>
      <attachid>64027</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-13 21:37:55 -0700</bug_when>
    <thetext>Comment on attachment 64027
patch

Cleared Steve Block&apos;s review+ from obsolete attachment 64027 so that this bug does not appear in http://webkit.org/pending-commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264716</commentid>
    <comment_count>17</comment_count>
      <attachid>64421</attachid>
    <who name="Mahesh Kulkarni">maheshk</who>
    <bug_when>2010-08-14 11:30:41 -0700</bug_when>
    <thetext>Created attachment 64421
patch

test case description was mismatching in *expected.txt and js file. Which was the reason for commit bot automated testing to fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264997</commentid>
    <comment_count>18</comment_count>
      <attachid>64421</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-08-16 02:10:46 -0700</bug_when>
    <thetext>Comment on attachment 64421
patch

This patch is missing ChangeLog entries

LayoutTests/fast/dom/Geolocation/script-tests/delayed-multiple-permissions-allowed.js:1
 +  description(&quot;Tests that when multiple positions are available, no callbacks are invoked until permission is allowed.&quot;);
This is slightly misleading. There aren&apos;t multiple positions, there are multiple requests in progress, all awaiting permission. Maybe the test should be named delayed-permission-allowed-multiple-requests?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265014</commentid>
    <comment_count>19</comment_count>
      <attachid>64483</attachid>
    <who name="Mahesh Kulkarni">maheshk</who>
    <bug_when>2010-08-16 04:27:19 -0700</bug_when>
    <thetext>Created attachment 64483
patch

Incorporate changes as per comment 18. Please review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265015</commentid>
    <comment_count>20</comment_count>
      <attachid>64483</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-08-16 04:36:14 -0700</bug_when>
    <thetext>Comment on attachment 64483
patch

This is still missing ChangeLogs

LayoutTests/fast/dom/Geolocation/delayed-permission-allowed-for-multiple-requests.html:10
 +  &lt;script src=&quot;script-tests/delayed-permission-allowed-for-multiple-requests.html&quot;&gt;&lt;/script&gt;
This should be the .js file. Did you run the tests locally?

LayoutTests/platform/gtk/Skipped:1095
 +  fast/dom/Geolocation/delayed-multiple-permissions-denied.html
Needs updating

LayoutTests/platform/qt/Skipped:5497
 +  fast/dom/Geolocation/delayed-multiple-permissions-denied.html
Needs updating</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265384</commentid>
    <comment_count>21</comment_count>
    <who name="Mahesh Kulkarni">maheshk</who>
    <bug_when>2010-08-17 00:20:27 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; (From update of attachment 64483 [details])
&gt; This is still missing ChangeLogs
&gt; 
&gt; LayoutTests/fast/dom/Geolocation/delayed-permission-allowed-for-multiple-requests.html:10
&gt;  +  &lt;script src=&quot;script-tests/delayed-permission-allowed-for-multiple-requests.html&quot;&gt;&lt;/script&gt;
&gt; This should be the .js file. Did you run the tests locally?
&gt; 
No :( I had that machine formatted. Apologies for the trouble. Will upload the tested one in a min</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265386</commentid>
    <comment_count>22</comment_count>
      <attachid>64555</attachid>
    <who name="Mahesh Kulkarni">maheshk</who>
    <bug_when>2010-08-17 00:22:29 -0700</bug_when>
    <thetext>Created attachment 64555
patch

Renamed and tested new layout cases on Qt. But qt DMR fix will be checked-in through bug 41364. Skipping the new cases for now</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265387</commentid>
    <comment_count>23</comment_count>
    <who name="Mahesh Kulkarni">maheshk</who>
    <bug_when>2010-08-17 00:23:26 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; Created an attachment (id=64555) [details]
&gt; patch
&gt; 
&gt; Renamed and tested new layout cases on Qt. But qt DMR fix will be checked-in through bug 41364. Skipping the new cases for now

Spelling mistake. Qt s/DMR/DRT</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265423</commentid>
    <comment_count>24</comment_count>
      <attachid>64094</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-17 01:21:19 -0700</bug_when>
    <thetext>Comment on attachment 64094
patch

Cleared Steve Block&apos;s review+ from obsolete attachment 64094 so that this bug does not appear in http://webkit.org/pending-commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265458</commentid>
    <comment_count>25</comment_count>
      <attachid>64555</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-08-17 03:25:35 -0700</bug_when>
    <thetext>Comment on attachment 64555
patch

WebCore/ChangeLog:8
 +           While waiting for permission, m_startRequestPermissionNotifier was 
Indentation

WebCore/ChangeLog:11
 +          When user grants/denies permission all listener&apos;s will be notified. 
apostrophe</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265496</commentid>
    <comment_count>26</comment_count>
      <attachid>64579</attachid>
    <who name="Mahesh Kulkarni">maheshk</who>
    <bug_when>2010-08-17 06:15:06 -0700</bug_when>
    <thetext>Created attachment 64579
patch

incorporated above comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265503</commentid>
    <comment_count>27</comment_count>
      <attachid>64579</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-08-17 06:22:17 -0700</bug_when>
    <thetext>Comment on attachment 64579
patch

r=me

Thanks for making all the changes!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265609</commentid>
    <comment_count>28</comment_count>
      <attachid>64579</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-08-17 09:54:46 -0700</bug_when>
    <thetext>Comment on attachment 64579
patch

Clearing flags on attachment: 64579

Committed r65511: &lt;http://trac.webkit.org/changeset/65511&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265610</commentid>
    <comment_count>29</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-08-17 09:54:53 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265771</commentid>
    <comment_count>30</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-08-17 14:38:43 -0700</bug_when>
    <thetext>The new tests fail on Chromium because the Chromium DRT lacks the functionality for these delayed permission tests. See bug 43480

A failing test expectation was added in http://trac.webkit.org/changeset/65535</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265970</commentid>
    <comment_count>31</comment_count>
    <who name="Mahesh Kulkarni">maheshk</who>
    <bug_when>2010-08-18 00:12:28 -0700</bug_when>
    <thetext>(In reply to comment #27)
&gt; (From update of attachment 64579 [details])
&gt; r=me
&gt; 
&gt; Thanks for making all the changes!

Thanks for the review Steve.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265971</commentid>
    <comment_count>32</comment_count>
    <who name="Mahesh Kulkarni">maheshk</who>
    <bug_when>2010-08-18 00:13:12 -0700</bug_when>
    <thetext>(In reply to comment #27)
&gt; (From update of attachment 64579 [details])
&gt; r=me
&gt; 
&gt; Thanks for making all the changes!

Thanks for the review Steve. And Johnny for fixing chromium test failures :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269201</commentid>
    <comment_count>33</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2010-08-25 06:17:06 -0700</bug_when>
    <thetext>Revision r65511 cherry-picked into qtwebkit-2.1 with commit e3bec9eeccf5d1ebcc6d4c3ddd23df19fc9f7595</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>62572</attachid>
            <date>2010-07-26 07:44:34 -0700</date>
            <delta_ts>2010-08-07 11:37:36 -0700</delta_ts>
            <desc>patch</desc>
            <filename>42811.patch</filename>
            <type>text/plain</type>
            <size>4610</size>
            <attacher name="Mahesh Kulkarni">maheshk</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDY0MDQ0
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTAtMDct
MjYgIE1haGVzaCBLdWxrYXJuaSAgPG1haGVzaC5rdWxrYXJuaUBub2tpYS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQyODExCisgICAgICAgIEdlb2xvY2F0aW9uIHByZWVt
cHRpdmUgcGVybWlzc2lvbnMgcG9saWN5IGlzIGJ1Z2d5CisKKyAgICAgICAgRml4ZXMgaXNzdWVz
IHdpdGggcHJlZW1wdGl2ZSBwZXJtaXNzaW9uIHBvbGljeSBpc3N1ZXMgYnkga2VlcGluZyBzZXQg
b2Ygbm90aWZpZXJzIAorICAgICAgICB1bnRpbCB1c2VyIGVpdGhlciBhY2NlcHRzL2RlbmllcyBw
ZXJtaXNzaW9uIHJlcXVlc3QuIElmIHVzZXIgYWNjZXB0cyB0aGUgcmVxdWVzdCwKKyAgICAgICAg
YWxsIHBlbmRpbmcgbm90aWZpZXJzIHdpbGwgc3RhcnQgc2VydmljZSBmb3Igbm9uLWNsaWVudCBi
YXNlZCBpbXBsZW1lbnRhdGlvbnMuIAorCisgICAgICAgIG5vbi1jbGllbnQgYmFzZWQgZ2VvbG9j
YXRpb24gKyBwcmVlbXB0aXZlIHBlcm1pc3Npb24gcG9saWN5IGlzIG5vdCB1c2VkIGJ5IGFueSBw
b3J0LiAKKyAgICAgICAgTm8gbmV3IHRlc3QgY29udGVudCBhZGRlZAorICAgICAgICAKKyAgICAg
ICAgKiBwYWdlL0dlb2xvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9u
OjpzdGFydFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246OnNldElzQWxs
b3dlZCk6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbjo6c3RhcnRVcGRhdGluZyk6Cisg
ICAgICAgICogcGFnZS9HZW9sb2NhdGlvbi5oOgorCiAyMDEwLTA3LTI2ICBTYXRpc2ggU2FtcGF0
aCAgPHNhdGlzaEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU3RldmUgQmxv
Y2suCkluZGV4OiBwYWdlL0dlb2xvY2F0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBwYWdlL0dlb2xv
Y2F0aW9uLmNwcAkocmV2aXNpb24gNjQwMjgpCisrKyBwYWdlL0dlb2xvY2F0aW9uLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjgxLDcgKzI4MSw3IEBACiAgICAgZWxzZSBpZiAobm90aWZpZXItPmhh
c1plcm9UaW1lb3V0KCkgfHwgc3RhcnRVcGRhdGluZyhub3RpZmllci5nZXQoKSkpIHsKICNpZiBV
U0UoUFJFRU1QVF9HRU9MT0NBVElPTl9QRVJNSVNTSU9OKQogICAgICAgICAvLyBPbmx5IHN0YXJ0
IHRpbWVyIGlmIHdlJ3JlIG5vdCB3YWl0aW5nIGZvciB1c2VyIHBlcm1pc3Npb24uCi0gICAgICAg
IGlmICghbV9zdGFydFJlcXVlc3RQZXJtaXNzaW9uTm90aWZpZXIpCisgICAgICAgIGlmIChtX3Bl
bmRpbmdGb3JQZXJtaXNzaW9uTm90aWZpZXJzLmlzRW1wdHkoKSkKICNlbmRpZiAgICAgICAgICAg
IAogICAgICAgICAgICAgbm90aWZpZXItPnN0YXJ0VGltZXJJZk5lZWRlZCgpOwogICAgIH0gZWxz
ZQpAQCAtNDAxLDExICs0MDEsMTkgQEAKICAgICBtX2FsbG93R2VvbG9jYXRpb24gPSBhbGxvd2Vk
ID8gWWVzIDogTm87CiAgICAgCiAjaWYgVVNFKFBSRUVNUFRfR0VPTE9DQVRJT05fUEVSTUlTU0lP
TikKLSAgICBpZiAobV9zdGFydFJlcXVlc3RQZXJtaXNzaW9uTm90aWZpZXIpIHsKKyAgICBpZiAo
IW1fcGVuZGluZ0ZvclBlcm1pc3Npb25Ob3RpZmllcnMuaXNFbXB0eSgpKSB7CiAgICAgICAgIGlm
IChpc0FsbG93ZWQoKSkgewogICAgICAgICAgICAgLy8gUGVybWlzc2lvbiByZXF1ZXN0IHdhcyBt
YWRlIGR1cmluZyB0aGUgc3RhcnRVcGRhdGluZyBwcm9jZXNzCi0gICAgICAgICAgICBtX3N0YXJ0
UmVxdWVzdFBlcm1pc3Npb25Ob3RpZmllci0+c3RhcnRUaW1lcklmTmVlZGVkKCk7Ci0gICAgICAg
ICAgICBtX3N0YXJ0UmVxdWVzdFBlcm1pc3Npb25Ob3RpZmllciA9IDA7CisgICAgICAgICAgICBH
ZW9Ob3RpZmllclNldDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9wZW5kaW5nRm9yUGVybWlzc2lv
bk5vdGlmaWVycy5lbmQoKTsKKyAgICAgICAgICAgIGZvciAoR2VvTm90aWZpZXJTZXQ6OmNvbnN0
X2l0ZXJhdG9yIGl0ZXIgPSBtX3BlbmRpbmdGb3JQZXJtaXNzaW9uTm90aWZpZXJzLmJlZ2luKCk7
IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKKyAgICAgICAgICAgICAgICBHZW9Ob3RpZmllciogbm90
aWZpZXIgPSBpdGVyLT5nZXQoKTsKKyAgICAgICAgICAgICAgICBub3RpZmllci0+c3RhcnRUaW1l
cklmTmVlZGVkKCk7CisjaWYgIUVOQUJMRShDTElFTlRfQkFTRURfR0VPTE9DQVRJT04pCisgICAg
ICAgICAgICAgICAgLy8gc3RhcnQgYWxsIHBlbmRpbmcgbm90aWZpY2F0aW9uIHJlcXVlc3RzIGFz
IHBlcm1pc3Npb24gZ3JhbnRlZC4KKyAgICAgICAgICAgICAgICBpZiAobV9zZXJ2aWNlICYmICFt
X3NlcnZpY2UtPnN0YXJ0VXBkYXRpbmcobm90aWZpZXItPm1fb3B0aW9ucy5nZXQoKSkpCisgICAg
ICAgICAgICAgICAgICAgIG5vdGlmaWVyLT5zZXRGYXRhbEVycm9yKFBvc2l0aW9uRXJyb3I6OmNy
ZWF0ZShQb3NpdGlvbkVycm9yOjpQT1NJVElPTl9VTkFWQUlMQUJMRSwgZmFpbGVkVG9TdGFydFNl
cnZpY2VFcnJvck1lc3NhZ2UpKTsKKyNlbmRpZgorICAgICAgICAgICAgfQogI2lmIEVOQUJMRShD
TElFTlRfQkFTRURfR0VPTE9DQVRJT04pCiAgICAgICAgICAgICBpZiAoIW1fZnJhbWUpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwpAQCAtNDEzLDE0ICs0MjEsMTUgQEAKICAgICAgICAgICAgIGlm
ICghcGFnZSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBwYWdlLT5nZW9s
b2NhdGlvbkNvbnRyb2xsZXIoKS0+YWRkT2JzZXJ2ZXIodGhpcyk7Ci0jZWxzZQotICAgICAgICAg
ICAgLy8gVE9ETzogSGFuZGxlIHN0YXJ0VXBkYXRlKCkgZm9yIG5vbi1jbGllbnQgYmFzZWQgaW1w
bGVtZW50YXRpb25zIHVzaW5nIHByZS1lbXB0aXZlIHBvbGljeQogI2VuZGlmCiAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICBtX3N0YXJ0UmVxdWVzdFBlcm1pc3Npb25Ob3RpZmllci0+c2V0
RmF0YWxFcnJvcihQb3NpdGlvbkVycm9yOjpjcmVhdGUoUG9zaXRpb25FcnJvcjo6UEVSTUlTU0lP
Tl9ERU5JRUQsIHBlcm1pc3Npb25EZW5pZWRFcnJvck1lc3NhZ2UpKTsKLSAgICAgICAgICAgIG1f
b25lU2hvdHMuYWRkKG1fc3RhcnRSZXF1ZXN0UGVybWlzc2lvbk5vdGlmaWVyKTsKLSAgICAgICAg
ICAgIG1fc3RhcnRSZXF1ZXN0UGVybWlzc2lvbk5vdGlmaWVyID0gMDsKKyAgICAgICAgICAgIEdl
b05vdGlmaWVyU2V0Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBtX3BlbmRpbmdGb3JQZXJtaXNzaW9u
Tm90aWZpZXJzLmVuZCgpOworICAgICAgICAgICAgZm9yIChHZW9Ob3RpZmllclNldDo6Y29uc3Rf
aXRlcmF0b3IgaXRlciA9IG1fcGVuZGluZ0ZvclBlcm1pc3Npb25Ob3RpZmllcnMuYmVnaW4oKTsg
aXRlciAhPSBlbmQ7ICsraXRlcikgeworICAgICAgICAgICAgICAgIEdlb05vdGlmaWVyKiBub3Rp
ZmllciA9IGl0ZXItPmdldCgpOworICAgICAgICAgICAgICAgIG5vdGlmaWVyLT5zZXRGYXRhbEVy
cm9yKFBvc2l0aW9uRXJyb3I6OmNyZWF0ZShQb3NpdGlvbkVycm9yOjpQRVJNSVNTSU9OX0RFTklF
RCwgcGVybWlzc2lvbkRlbmllZEVycm9yTWVzc2FnZSkpOworICAgICAgICAgICAgfQogICAgICAg
ICB9CisgICAgICAgIG1fcGVuZGluZ0ZvclBlcm1pc3Npb25Ob3RpZmllcnMuY2xlYXIoKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgpAQCAtNjE4LDcgKzYyNyw3IEBACiB7CiAjaWYg
VVNFKFBSRUVNUFRfR0VPTE9DQVRJT05fUEVSTUlTU0lPTikKICAgICBpZiAoIWlzQWxsb3dlZCgp
KSB7Ci0gICAgICAgIG1fc3RhcnRSZXF1ZXN0UGVybWlzc2lvbk5vdGlmaWVyID0gbm90aWZpZXI7
CisgICAgICAgIG1fcGVuZGluZ0ZvclBlcm1pc3Npb25Ob3RpZmllcnMuYWRkKG5vdGlmaWVyKTsK
ICAgICAgICAgcmVxdWVzdFBlcm1pc3Npb24oKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQpJbmRleDogcGFnZS9HZW9sb2NhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHBhZ2UvR2VvbG9jYXRp
b24uaAkocmV2aXNpb24gNjQwMjgpCisrKyBwYWdlL0dlb2xvY2F0aW9uLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTE2Nyw3ICsxNjcsNyBAQAogICAgIE93blB0cjxHZW9sb2NhdGlvblNlcnZpY2U+IG1f
c2VydmljZTsKICNlbmRpZgogI2lmIFVTRShQUkVFTVBUX0dFT0xPQ0FUSU9OX1BFUk1JU1NJT04p
Ci0gICAgUmVmUHRyPEdlb05vdGlmaWVyPiBtX3N0YXJ0UmVxdWVzdFBlcm1pc3Npb25Ob3RpZmll
cjsKKyAgICBHZW9Ob3RpZmllclNldCBtX3BlbmRpbmdGb3JQZXJtaXNzaW9uTm90aWZpZXJzOwog
I2VuZGlmCiAgICAgUmVmUHRyPEdlb3Bvc2l0aW9uPiBtX2xhc3RQb3NpdGlvbjsKIAo=
</data>
<flag name="review"
          id="50796"
          type_id="1"
          status="-"
          setter="steveblock"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63822</attachid>
            <date>2010-08-07 11:37:36 -0700</date>
            <delta_ts>2010-08-10 03:49:13 -0700</delta_ts>
            <desc>patch</desc>
            <filename>42811.patch</filename>
            <type>text/plain</type>
            <size>14838</size>
            <attacher name="Mahesh Kulkarni">maheshk</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NDkxNCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjQgQEAKKzIwMTAtMDgtMDcgIE1haGVzaCBLdWxrYXJuaSAgPG1haGVzaC5rdWxr
YXJuaUBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQyODExCisg
ICAgICAgIEdlb2xvY2F0aW9uIHByZWVtcHRpdmUgcGVybWlzc2lvbnMgcG9saWN5IGlzIGJ1Z2d5
CisKKyAgICAgICAgV2hpbGUgd2FpdGluZyBmb3IgcGVybWlzc2lvbiwgbV9zdGFydFJlcXVlc3RQ
ZXJtaXNzaW9uTm90aWZpZXIgd2FzIAorICAgICAgICB1c2VkIHRvIGNvbnNpZGVyIG9ubHkgb25l
IHBlbmRpbmcgcmVxdWVzdC4gVGhpcyBwYXRjaCBpbXBsZW1lbnRzIGEgc2V0CisgICAgICAgIG1f
cGVuZGluZ0ZvclBlcm1pc3Npb25Ob3RpZmllcnMgdG8gbWFpbnRhaW4gc2V0IG9mIHBlbmRpbmcg
cmVxdWVzdHMuIAorICAgICAgICBXaGVuIHVzZXIgZ3JhbmRzL2RlbmllcyBwZXJtaXNzaW9uIGFs
bCBsaXN0ZW5lcidzIHdpbGwgYmUgbm90aWZpZWQuIAorCisgICAgICAgIFRlc3RzOiBmYXN0L2Rv
bS9HZW9sb2NhdGlvbi9kZWxheWVkLW11bHRpcGxlLXBlcm1pc3Npb25zLWFsbG93ZWQuaHRtbAor
ICAgICAgICAgICAgICAgZmFzdC9kb20vR2VvbG9jYXRpb24vZGVsYXllZC1tdWx0aXBsZS1wZXJt
aXNzaW9ucy1kZW5pZWQuaHRtbAorCisgICAgICAgICogcGFnZS9HZW9sb2NhdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbjo6c3RhcnRSZXF1ZXN0KToKKyAgICAgICAgKFdl
YkNvcmU6Okdlb2xvY2F0aW9uOjpzZXRJc0FsbG93ZWQpOgorICAgICAgICAoV2ViQ29yZTo6R2Vv
bG9jYXRpb246OnN0YXJ0VXBkYXRpbmcpOgorICAgICAgICAqIHBhZ2UvR2VvbG9jYXRpb24uaDog
ZGVmaW5lcyBHZW9Ob3RpZmllclNldCBtX3BlbmRpbmdGb3JQZXJtaXNzaW9uTm90aWZpZXJzCisK
IDIwMTAtMDgtMDcgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBEaW1pdHJpIEdsYXprb3YuCkluZGV4OiBXZWJDb3JlL3BhZ2UvR2VvbG9jYXRp
b24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9HZW9sb2NhdGlvbi5jcHAJKHJldmlz
aW9uIDY0ODM5KQorKysgV2ViQ29yZS9wYWdlL0dlb2xvY2F0aW9uLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjgxLDcgKzI4MSw3IEBAIFBhc3NSZWZQdHI8R2VvbG9jYXRpb246Okdlb05vdGlmaWVy
PiBHZW8KICAgICBlbHNlIGlmIChub3RpZmllci0+aGFzWmVyb1RpbWVvdXQoKSB8fCBzdGFydFVw
ZGF0aW5nKG5vdGlmaWVyLmdldCgpKSkgewogI2lmIFVTRShQUkVFTVBUX0dFT0xPQ0FUSU9OX1BF
Uk1JU1NJT04pCiAgICAgICAgIC8vIE9ubHkgc3RhcnQgdGltZXIgaWYgd2UncmUgbm90IHdhaXRp
bmcgZm9yIHVzZXIgcGVybWlzc2lvbi4KLSAgICAgICAgaWYgKCFtX3N0YXJ0UmVxdWVzdFBlcm1p
c3Npb25Ob3RpZmllcikKKyAgICAgICAgaWYgKG1fcGVuZGluZ0ZvclBlcm1pc3Npb25Ob3RpZmll
cnMuaXNFbXB0eSgpKQogI2VuZGlmICAgICAgICAgICAgCiAgICAgICAgICAgICBub3RpZmllci0+
c3RhcnRUaW1lcklmTmVlZGVkKCk7CiAgICAgfSBlbHNlCkBAIC00MDEsMjggKzQwMSwzMyBAQCB2
b2lkIEdlb2xvY2F0aW9uOjpzZXRJc0FsbG93ZWQoYm9vbCBhbGxvCiAgICAgbV9hbGxvd0dlb2xv
Y2F0aW9uID0gYWxsb3dlZCA/IFllcyA6IE5vOwogICAgIAogI2lmIFVTRShQUkVFTVBUX0dFT0xP
Q0FUSU9OX1BFUk1JU1NJT04pCi0gICAgaWYgKG1fc3RhcnRSZXF1ZXN0UGVybWlzc2lvbk5vdGlm
aWVyKSB7CisgICAgaWYgKCFtX3BlbmRpbmdGb3JQZXJtaXNzaW9uTm90aWZpZXJzLmlzRW1wdHko
KSkgewogICAgICAgICBpZiAoaXNBbGxvd2VkKCkpIHsKICAgICAgICAgICAgIC8vIFBlcm1pc3Np
b24gcmVxdWVzdCB3YXMgbWFkZSBkdXJpbmcgdGhlIHN0YXJ0VXBkYXRpbmcgcHJvY2VzcwotICAg
ICAgICAgICAgbV9zdGFydFJlcXVlc3RQZXJtaXNzaW9uTm90aWZpZXItPnN0YXJ0VGltZXJJZk5l
ZWRlZCgpOwotICAgICAgICAgICAgLy8gVGhlIG5vdGlmaWVyIGlzIGFsd2F5cyByZWYnZWQgYnkg
bV9vbmVTaG90cyBvciBtX3dhdGNoZXJzLgotICAgICAgICAgICAgR2VvTm90aWZpZXIqIG5vdGlm
aWVyID0gbV9zdGFydFJlcXVlc3RQZXJtaXNzaW9uTm90aWZpZXIuZ2V0KCk7Ci0gICAgICAgICAg
ICBtX3N0YXJ0UmVxdWVzdFBlcm1pc3Npb25Ob3RpZmllciA9IDA7CisgICAgICAgICAgICBHZW9O
b3RpZmllclNldDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9wZW5kaW5nRm9yUGVybWlzc2lvbk5v
dGlmaWVycy5lbmQoKTsKKyAgICAgICAgICAgIGZvciAoR2VvTm90aWZpZXJTZXQ6OmNvbnN0X2l0
ZXJhdG9yIGl0ZXIgPSBtX3BlbmRpbmdGb3JQZXJtaXNzaW9uTm90aWZpZXJzLmJlZ2luKCk7IGl0
ZXIgIT0gZW5kOyArK2l0ZXIpIHsKKyAgICAgICAgICAgICAgICBHZW9Ob3RpZmllciogbm90aWZp
ZXIgPSBpdGVyLT5nZXQoKTsKKyAgICAgICAgICAgICAgICBub3RpZmllci0+c3RhcnRUaW1lcklm
TmVlZGVkKCk7CisgICAgICAgICAgICAgICAgLy8gVGhlIG5vdGlmaWVyIGlzIGFsd2F5cyByZWYn
ZWQgYnkgbV9vbmVTaG90cyBvciBtX3dhdGNoZXJzLgogI2lmIEVOQUJMRShDTElFTlRfQkFTRURf
R0VPTE9DQVRJT04pCi0gICAgICAgICAgICBpZiAoIW1fZnJhbWUpCi0gICAgICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICAgICAgUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKLSAgICAg
ICAgICAgIGlmICghcGFnZSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBw
YWdlLT5nZW9sb2NhdGlvbkNvbnRyb2xsZXIoKS0+YWRkT2JzZXJ2ZXIodGhpcywgbm90aWZpZXIt
Pm1fb3B0aW9ucy0+ZW5hYmxlSGlnaEFjY3VyYWN5KCkpOworICAgICAgICAgICAgICAgIGlmICgh
bV9mcmFtZSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIFBh
Z2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CisgICAgICAgICAgICAgICAgaWYgKCFwYWdlKQor
ICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgcGFnZS0+Z2VvbG9j
YXRpb25Db250cm9sbGVyKCktPmFkZE9ic2VydmVyKHRoaXMsIG5vdGlmaWVyLT5tX29wdGlvbnMt
PmVuYWJsZUhpZ2hBY2N1cmFjeSgpKTsKICNlbHNlCiAgICAgICAgICAgICAvLyBUT0RPOiBIYW5k
bGUgc3RhcnRVcGRhdGUoKSBmb3Igbm9uLWNsaWVudCBiYXNlZCBpbXBsZW1lbnRhdGlvbnMgdXNp
bmcgcHJlLWVtcHRpdmUgcG9saWN5CiAjZW5kaWYKKyAgICAgICAgICAgIH0KICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgIG1fc3RhcnRSZXF1ZXN0UGVybWlzc2lvbk5vdGlmaWVyLT5zZXRG
YXRhbEVycm9yKFBvc2l0aW9uRXJyb3I6OmNyZWF0ZShQb3NpdGlvbkVycm9yOjpQRVJNSVNTSU9O
X0RFTklFRCwgcGVybWlzc2lvbkRlbmllZEVycm9yTWVzc2FnZSkpOwotICAgICAgICAgICAgbV9v
bmVTaG90cy5hZGQobV9zdGFydFJlcXVlc3RQZXJtaXNzaW9uTm90aWZpZXIpOwotICAgICAgICAg
ICAgbV9zdGFydFJlcXVlc3RQZXJtaXNzaW9uTm90aWZpZXIgPSAwOworICAgICAgICAgICAgR2Vv
Tm90aWZpZXJTZXQ6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fcGVuZGluZ0ZvclBlcm1pc3Npb25O
b3RpZmllcnMuZW5kKCk7CisgICAgICAgICAgICBmb3IgKEdlb05vdGlmaWVyU2V0Ojpjb25zdF9p
dGVyYXRvciBpdGVyID0gbV9wZW5kaW5nRm9yUGVybWlzc2lvbk5vdGlmaWVycy5iZWdpbigpOyBp
dGVyICE9IGVuZDsgKytpdGVyKSB7CisgICAgICAgICAgICAgICAgR2VvTm90aWZpZXIqIG5vdGlm
aWVyID0gaXRlci0+Z2V0KCk7CisgICAgICAgICAgICAgICAgbm90aWZpZXItPnNldEZhdGFsRXJy
b3IoUG9zaXRpb25FcnJvcjo6Y3JlYXRlKFBvc2l0aW9uRXJyb3I6OlBFUk1JU1NJT05fREVOSUVE
LCBwZXJtaXNzaW9uRGVuaWVkRXJyb3JNZXNzYWdlKSk7CisgICAgICAgICAgICB9CiAgICAgICAg
IH0KKyAgICAgICAgbV9wZW5kaW5nRm9yUGVybWlzc2lvbk5vdGlmaWVycy5jbGVhcigpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmCkBAIC02MjAsNyArNjI1LDcgQEAgYm9vbCBHZW9s
b2NhdGlvbjo6c3RhcnRVcGRhdGluZyhHZW9Ob3RpZgogewogI2lmIFVTRShQUkVFTVBUX0dFT0xP
Q0FUSU9OX1BFUk1JU1NJT04pCiAgICAgaWYgKCFpc0FsbG93ZWQoKSkgewotICAgICAgICBtX3N0
YXJ0UmVxdWVzdFBlcm1pc3Npb25Ob3RpZmllciA9IG5vdGlmaWVyOworICAgICAgICBtX3BlbmRp
bmdGb3JQZXJtaXNzaW9uTm90aWZpZXJzLmFkZChub3RpZmllcik7CiAgICAgICAgIHJlcXVlc3RQ
ZXJtaXNzaW9uKCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KSW5kZXg6IFdlYkNvcmUv
cGFnZS9HZW9sb2NhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9HZW9sb2NhdGlv
bi5oCShyZXZpc2lvbiA2NDgzOSkKKysrIFdlYkNvcmUvcGFnZS9HZW9sb2NhdGlvbi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNjcsNyArMTY3LDcgQEAgcHJpdmF0ZToKICAgICBPd25QdHI8R2VvbG9j
YXRpb25TZXJ2aWNlPiBtX3NlcnZpY2U7CiAjZW5kaWYKICNpZiBVU0UoUFJFRU1QVF9HRU9MT0NB
VElPTl9QRVJNSVNTSU9OKQotICAgIFJlZlB0cjxHZW9Ob3RpZmllcj4gbV9zdGFydFJlcXVlc3RQ
ZXJtaXNzaW9uTm90aWZpZXI7CisgICAgR2VvTm90aWZpZXJTZXQgbV9wZW5kaW5nRm9yUGVybWlz
c2lvbk5vdGlmaWVyczsKICNlbmRpZgogICAgIFJlZlB0cjxHZW9wb3NpdGlvbj4gbV9sYXN0UG9z
aXRpb247CiAKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDY0OTE0KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTAtMDgtMDcgIE1haGVzaCBL
dWxrYXJuaSAgPG1haGVzaC5rdWxrYXJuaUBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTQyODExCisgICAgICAgIEdlb2xvY2F0aW9uIHByZWVtcHRpdmUgcGVybWlz
c2lvbnMgcG9saWN5IGlzIGJ1Z2d5CisKKyAgICAgICAgQWRkcyBjYXNlcyB3aGVyZSBwZXJtaXNz
aW9uIGlzIG5pZXRoZXIgZGVuaWVkIG9yIGdyYW50ZWQgaW1tZWRpYXRlbHkgYW5kIG11bHRpcGxl
CisgICAgICAgIHJlcXVlc3RzIGFyZSB3YWl0aW5nLgorCisgICAgICAgICogZmFzdC9kb20vR2Vv
bG9jYXRpb24vZGVsYXllZC1tdWx0aXBsZS1wZXJtaXNzaW9ucy1hbGxvd2VkLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vR2VvbG9jYXRpb24vZGVsYXllZC1tdWx0aXBs
ZS1wZXJtaXNzaW9ucy1hbGxvd2VkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0dl
b2xvY2F0aW9uL2RlbGF5ZWQtbXVsdGlwbGUtcGVybWlzc2lvbnMtZGVuaWVkLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vR2VvbG9jYXRpb24vZGVsYXllZC1tdWx0aXBs
ZS1wZXJtaXNzaW9ucy1kZW5pZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vR2Vv
bG9jYXRpb24vc2NyaXB0LXRlc3RzL2RlbGF5ZWQtbXVsdGlwbGUtcGVybWlzc2lvbnMtYWxsb3dl
ZC5qczogQWRkZWQuCisgICAgICAgIChhbGxvd1Blcm1pc3Npb24pOgorICAgICAgICAoKToKKyAg
ICAgICAgKG1heWJlRmluaXNoVGVzdCk6CisgICAgICAgICogZmFzdC9kb20vR2VvbG9jYXRpb24v
c2NyaXB0LXRlc3RzL2RlbGF5ZWQtbXVsdGlwbGUtcGVybWlzc2lvbnMtZGVuaWVkLmpzOiBBZGRl
ZC4KKyAgICAgICAgKGRlbnlQZXJtaXNzaW9uKToKKyAgICAgICAgKG1heWJlRmluaXNoVGVzdCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1NraXBwZWQ6IFNraXBwZWQgbmV3IGNhc2VzIGZvciBn
dGsgcG9ydAorICAgICAgICAqIHBsYXRmb3JtL3F0L1NraXBwZWQ6IFNraXBwZWQgbmV3IGNhc2Vz
IGZvciBxdCBwb3J0CisKIDIwMTAtMDgtMDcgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9y
Zz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEaW1pdHJpIEdsYXprb3YuCkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9kZWxheWVkLW11bHRpcGxlLXBlcm1pc3Npb25zLWFs
bG93ZWQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0dl
b2xvY2F0aW9uL2RlbGF5ZWQtbXVsdGlwbGUtcGVybWlzc2lvbnMtYWxsb3dlZC1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9kZWxh
eWVkLW11bHRpcGxlLXBlcm1pc3Npb25zLWFsbG93ZWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDExIEBACitUZXN0cyB0aGF0IHdoZW4gYSBwb3NpdGlvbiBpcyBhdmFpbGFi
bGUsIG5vIGNhbGxiYWNrcyBhcmUgaW52b2tlZCB1bnRpbCBwZXJtaXNzaW9uIGlzIGFsbG93ZWQu
CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIFN1Y2Nlc3MgY2FsbGJhY2sg
aW52b2tlZAorUEFTUyBTdWNjZXNzIGNhbGxiYWNrIGludm9rZWQKK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9HZW9sb2NhdGlvbi9kZWxheWVkLW11bHRpcGxlLXBlcm1pc3Npb25zLWFsbG93ZWQuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9kZWxheWVk
LW11bHRpcGxlLXBlcm1pc3Npb25zLWFsbG93ZWQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL2RlbGF5ZWQtbXVsdGlwbGUtcGVybWlzc2lvbnMt
YWxsb3dlZC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgSFRN
TCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5j
c3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL2RlbGF5ZWQtbXVs
dGlwbGUtcGVybWlzc2lvbnMtYWxsb3dlZC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9kZWxheWVkLW11bHRp
cGxlLXBlcm1pc3Npb25zLWRlbmllZC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vZGVsYXllZC1tdWx0aXBsZS1wZXJtaXNzaW9ucy1k
ZW5pZWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20v
R2VvbG9jYXRpb24vZGVsYXllZC1tdWx0aXBsZS1wZXJtaXNzaW9ucy1kZW5pZWQtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEzIEBACitUZXN0cyB0aGF0IHdoZW4gYSBwb3Np
dGlvbiBpcyBhdmFpbGFibGUsIG5vIGNhbGxiYWNrcyBhcmUgaW52b2tlZCB1bnRpbCBwZXJtaXNz
aW9uIGlzIGRlbmllZC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgZXJy
b3IuY29kZSBpcyBlcnJvci5QRVJNSVNTSU9OX0RFTklFRAorUEFTUyBlcnJvci5tZXNzYWdlIGlz
ICJVc2VyIGRlbmllZCBHZW9sb2NhdGlvbiIKK1BBU1MgZXJyb3IuY29kZSBpcyBlcnJvci5QRVJN
SVNTSU9OX0RFTklFRAorUEFTUyBlcnJvci5tZXNzYWdlIGlzICJVc2VyIGRlbmllZCBHZW9sb2Nh
dGlvbiIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9kZWxheWVkLW11bHRpcGxl
LXBlcm1pc3Npb25zLWRlbmllZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
ZG9tL0dlb2xvY2F0aW9uL2RlbGF5ZWQtbXVsdGlwbGUtcGVybWlzc2lvbnMtZGVuaWVkLmh0bWwJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9kZWxheWVk
LW11bHRpcGxlLXBlcm1pc3Npb25zLWRlbmllZC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDEzIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8
aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9qcy9yZXNv
dXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNj
cmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0ic2Ny
aXB0LXRlc3RzL2RlbGF5ZWQtbXVsdGlwbGUtcGVybWlzc2lvbnMtZGVuaWVkLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xv
Y2F0aW9uL3NjcmlwdC10ZXN0cy9kZWxheWVkLW11bHRpcGxlLXBlcm1pc3Npb25zLWFsbG93ZWQu
anMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0
LXRlc3RzL2RlbGF5ZWQtbXVsdGlwbGUtcGVybWlzc2lvbnMtYWxsb3dlZC5qcwkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9kZWxh
eWVkLW11bHRpcGxlLXBlcm1pc3Npb25zLWFsbG93ZWQuanMJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNTEgQEAKK2Rlc2NyaXB0aW9uKCJUZXN0cyB0aGF0IHdoZW4gYSBwb3NpdGlvbiBpcyBhdmFp
bGFibGUsIG5vIGNhbGxiYWNrcyBhcmUgaW52b2tlZCB1bnRpbCBwZXJtaXNzaW9uIGlzIGFsbG93
ZWQuIik7CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgd2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyLnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKDUxLjQ3OCwgLTAu
MTY2LCAxMDApOworCitmdW5jdGlvbiBhbGxvd1Blcm1pc3Npb24oKSB7CisgICAgcGVybWlzc2lv
blNldCA9IHRydWU7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0R2VvbG9jYXRpb25QZXJtaXNzaW9uKHRydWUpOwor
fQorCit2YXIgd2F0Y2hDYWxsYmFja0ludm9rZWQgPSBmYWxzZTsKK3ZhciBvbmVTaG90Q2FsbGJh
Y2tJbnZva2VkID0gZmFsc2U7CisKK25hdmlnYXRvci5nZW9sb2NhdGlvbi53YXRjaFBvc2l0aW9u
KGZ1bmN0aW9uKCkgeworICAgIGlmIChwZXJtaXNzaW9uU2V0KSB7CisgICAgICAgIHRlc3RQYXNz
ZWQoJ1N1Y2Nlc3MgY2FsbGJhY2sgaW52b2tlZCcpOworICAgICAgICB3YXRjaENhbGxiYWNrSW52
b2tlZCA9IHRydWU7CisgICAgICAgIG1heWJlRmluaXNoVGVzdCgpOworICAgICAgICByZXR1cm47
CisgICAgfQorICAgIHRlc3RGYWlsZWQoJ1N1Y2Nlc3MgY2FsbGJhY2sgaW52b2tlZCB1bmV4cGVj
dGVkbHknKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30sIGZ1bmN0aW9uKGVycikgeworICAgIHRl
c3RGYWlsZWQoJ0Vycm9yIGNhbGxiYWNrIGludm9rZWQgdW5leHBlY3RlZGx5Jyk7CisgICAgZmlu
aXNoSlNUZXN0KCk7Cit9KTsKKworbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3Np
dGlvbihmdW5jdGlvbigpIHsKKyAgICBpZiAocGVybWlzc2lvblNldCkgeworICAgICAgICB0ZXN0
UGFzc2VkKCdTdWNjZXNzIGNhbGxiYWNrIGludm9rZWQnKTsKKyAgICAgICAgb25lU2hvdENhbGxi
YWNrSW52b2tlZCA9IHRydWU7CisgICAgICAgIG1heWJlRmluaXNoVGVzdCgpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIHRlc3RGYWlsZWQoJ1N1Y2Nlc3MgY2FsbGJhY2sgaW52b2tlZCB1
bmV4cGVjdGVkbHknKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30sIGZ1bmN0aW9uKGVycikgewor
ICAgIHRlc3RGYWlsZWQoJ0Vycm9yIGNhbGxiYWNrIGludm9rZWQgdW5leHBlY3RlZGx5Jyk7Cisg
ICAgZmluaXNoSlNUZXN0KCk7Cit9KTsKKword2luZG93LnNldFRpbWVvdXQoYWxsb3dQZXJtaXNz
aW9uLCAxMDApOworCitmdW5jdGlvbiBtYXliZUZpbmlzaFRlc3QoKSB7CisgICAgaWYgKHdhdGNo
Q2FsbGJhY2tJbnZva2VkICYmIG9uZVNob3RDYWxsYmFja0ludm9rZWQpCisgICAgICAgIGZpbmlz
aEpTVGVzdCgpOworfQorCit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Cit3aW5kb3cuc3Vj
Y2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xv
Y2F0aW9uL3NjcmlwdC10ZXN0cy9kZWxheWVkLW11bHRpcGxlLXBlcm1pc3Npb25zLWRlbmllZC5q
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQt
dGVzdHMvZGVsYXllZC1tdWx0aXBsZS1wZXJtaXNzaW9ucy1kZW5pZWQuanMJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvZGVsYXll
ZC1tdWx0aXBsZS1wZXJtaXNzaW9ucy1kZW5pZWQuanMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
NTUgQEAKK2Rlc2NyaXB0aW9uKCJUZXN0cyB0aGF0IHdoZW4gYSBwb3NpdGlvbiBpcyBhdmFpbGFi
bGUsIG5vIGNhbGxiYWNrcyBhcmUgaW52b2tlZCB1bnRpbCBwZXJtaXNzaW9uIGlzIGRlbmllZC4i
KTsKKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICB3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIuc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24oNTEuNDc4LCAtMC4xNjYs
IDEwMCk7CisKK2Z1bmN0aW9uIGRlbnlQZXJtaXNzaW9uKCkgeworICAgIHBlcm1pc3Npb25TZXQg
PSB0cnVlOworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLnNldEdlb2xvY2F0aW9uUGVybWlzc2lvbihmYWxzZSk7Cit9CisK
K3ZhciB3YXRjaENhbGxiYWNrSW52b2tlZCA9IGZhbHNlOwordmFyIG9uZVNob3RDYWxsYmFja0lu
dm9rZWQgPSBmYWxzZTsKK3ZhciBlcnJvcjsKKworbmF2aWdhdG9yLmdlb2xvY2F0aW9uLndhdGNo
UG9zaXRpb24oZnVuY3Rpb24oKSB7CisgICAgdGVzdEZhaWxlZCgnU3VjY2VzcyBjYWxsYmFjayBp
bnZva2VkIHVuZXhwZWN0ZWRseScpOworICAgIGZpbmlzaEpTVGVzdCgpOworfSwgZnVuY3Rpb24o
ZSkgeworICAgIGlmIChwZXJtaXNzaW9uU2V0KSB7CisgICAgICAgIGVycm9yID0gZTsKKyAgICAg
ICAgc2hvdWxkQmUoJ2Vycm9yLmNvZGUnLCAnZXJyb3IuUEVSTUlTU0lPTl9ERU5JRUQnKTsKKyAg
ICAgICAgc2hvdWxkQmUoJ2Vycm9yLm1lc3NhZ2UnLCAnIlVzZXIgZGVuaWVkIEdlb2xvY2F0aW9u
IicpOworICAgICAgICB3YXRjaENhbGxiYWNrSW52b2tlZCA9IHRydWU7CisgICAgICAgIG1heWJl
RmluaXNoVGVzdCgpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIHRlc3RGYWlsZWQoJ0Vy
cm9yIGNhbGxiYWNrIGludm9rZWQgdW5leHBlY3RlZGx5Jyk7CisgICAgZmluaXNoSlNUZXN0KCk7
Cit9KTsKKworbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihmdW5jdGlv
bigpIHsKKyAgICB0ZXN0RmFpbGVkKCdTdWNjZXNzIGNhbGxiYWNrIGludm9rZWQgdW5leHBlY3Rl
ZGx5Jyk7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9LCBmdW5jdGlvbihlKSB7CisgICAgaWYgKHBl
cm1pc3Npb25TZXQpIHsKKyAgICAgICAgZXJyb3IgPSBlOworICAgICAgICBzaG91bGRCZSgnZXJy
b3IuY29kZScsICdlcnJvci5QRVJNSVNTSU9OX0RFTklFRCcpOworICAgICAgICBzaG91bGRCZSgn
ZXJyb3IubWVzc2FnZScsICciVXNlciBkZW5pZWQgR2VvbG9jYXRpb24iJyk7CisgICAgICAgIG9u
ZVNob3RDYWxsYmFja0ludm9rZWQgPSB0cnVlOworICAgICAgICBtYXliZUZpbmlzaFRlc3QoKTsg
ICAgICAgIAorICAgICAgICByZXR1cm47CisgICAgfQorICAgIHRlc3RGYWlsZWQoJ0Vycm9yIGNh
bGxiYWNrIGludm9rZWQgdW5leHBlY3RlZGx5Jyk7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9KTsK
K3dpbmRvdy5zZXRUaW1lb3V0KGRlbnlQZXJtaXNzaW9uLCAxMDApOworCitmdW5jdGlvbiBtYXli
ZUZpbmlzaFRlc3QoKSB7CisgICAgaWYgKHdhdGNoQ2FsbGJhY2tJbnZva2VkICYmIG9uZVNob3RD
YWxsYmFja0ludm9rZWQpCisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit3aW5kb3cuanNU
ZXN0SXNBc3luYyA9IHRydWU7Cit3aW5kb3cuc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKSW5k
ZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCShyZXZpc2lvbiA2NDgzOSkKKysrIExheW91dFRl
c3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCSh3b3JraW5nIGNvcHkpCkBAIC0xMDg4LDYgKzEwODgs
OCBAQCBmYXN0L2RvbS9EZXZpY2VPcmllbnRhdGlvbi93aW5kb3ctcHJvcGVyCiBmYXN0L2RvbS9H
ZW9sb2NhdGlvbi9jYWxsYmFjay1leGNlcHRpb24uaHRtbAogZmFzdC9kb20vR2VvbG9jYXRpb24v
ZGVsYXllZC1wZXJtaXNzaW9uLWFsbG93ZWQuaHRtbAogZmFzdC9kb20vR2VvbG9jYXRpb24vZGVs
YXllZC1wZXJtaXNzaW9uLWRlbmllZC5odG1sCitmYXN0L2RvbS9HZW9sb2NhdGlvbi9kZWxheWVk
LW11bHRpcGxlLXBlcm1pc3Npb25zLWFsbG93ZWQuaHRtbAorZmFzdC9kb20vR2VvbG9jYXRpb24v
ZGVsYXllZC1tdWx0aXBsZS1wZXJtaXNzaW9ucy1kZW5pZWQuaHRtbAogZmFzdC9kb20vR2VvbG9j
YXRpb24vZXJyb3IuaHRtbAogZmFzdC9kb20vR2VvbG9jYXRpb24vbXVsdGlwbGUtcmVxdWVzdHMu
aHRtbAogZmFzdC9kb20vR2VvbG9jYXRpb24vcGVybWlzc2lvbi1kZW5pZWQtYWxyZWFkeS1jbGVh
ci13YXRjaC5odG1sCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQJKHJldmlzaW9uIDY0ODM5
KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAkod29ya2luZyBjb3B5KQpAQCAt
NTQ5Miw2ICs1NDkyLDggQEAgZmFzdC9ldmVudHMvc3BlY2lhbC1rZXktZXZlbnRzLWluLWlucHV0
LQogIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDM0NzgKIGZhc3Qv
ZG9tL0dlb2xvY2F0aW9uL2RlbGF5ZWQtcGVybWlzc2lvbi1hbGxvd2VkLmh0bWwKIGZhc3QvZG9t
L0dlb2xvY2F0aW9uL2RlbGF5ZWQtcGVybWlzc2lvbi1kZW5pZWQuaHRtbAorZmFzdC9kb20vR2Vv
bG9jYXRpb24vZGVsYXllZC1tdWx0aXBsZS1wZXJtaXNzaW9ucy1hbGxvd2VkLmh0bWwKK2Zhc3Qv
ZG9tL0dlb2xvY2F0aW9uL2RlbGF5ZWQtbXVsdGlwbGUtcGVybWlzc2lvbnMtZGVuaWVkLmh0bWwK
IAogIyBCbG9kQnVpbGRlciBpcyBub3QgZW5hYmxlZAogaHR0cC90ZXN0cy9sb2NhbC9ibG9iL3Nl
bmQtZGF0YS1ibG9iLmh0bWwK
</data>
<flag name="review"
          id="52239"
          type_id="1"
          status="-"
          setter="steveblock"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63997</attachid>
            <date>2010-08-10 03:49:13 -0700</date>
            <delta_ts>2010-08-10 10:44:36 -0700</delta_ts>
            <desc>patch</desc>
            <filename>42811.patch</filename>
            <type>text/plain</type>
            <size>16524</size>
            <attacher name="Mahesh Kulkarni">maheshk</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NTA2MykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjcgQEAKKzIwMTAtMDgtMTAgIE1haGVzaCBLdWxrYXJuaSAgPG1haGVzaC5rdWxr
YXJuaUBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgR2VvbG9jYXRpb24gcHJlZW1wdGl2ZSBwZXJtaXNzaW9ucyBwb2xpY3kgaXMgYnVn
Z3kKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQyODEx
CisKKyAgICAgICAgV2hpbGUgd2FpdGluZyBmb3IgcGVybWlzc2lvbiwgbV9zdGFydFJlcXVlc3RQ
ZXJtaXNzaW9uTm90aWZpZXIgd2FzIAorICAgICAgICB1c2VkIHRvIGNvbnNpZGVyIG9ubHkgb25l
IHBlbmRpbmcgcmVxdWVzdC4gVGhpcyBwYXRjaCBpbXBsZW1lbnRzIGEgc2V0CisgICAgICAgIG1f
cGVuZGluZ0ZvclBlcm1pc3Npb25Ob3RpZmllcnMgdG8gbWFpbnRhaW4gc2V0IG9mIHBlbmRpbmcg
cmVxdWVzdHMuIAorICAgICAgICBXaGVuIHVzZXIgZ3JhbnRzL2RlbmllcyBwZXJtaXNzaW9uIGFs
bCBsaXN0ZW5lcidzIHdpbGwgYmUgbm90aWZpZWQuIAorICAgICAgICBBbHNvIGZpeGVkIGlzc3Vl
IHdpdGggaGFzWmVyb1RpbWVvdXQoKSB3aGVyZSBzdGFydFRpbWVySWZOZWVkZWQoKSBoYXMKKyAg
ICAgICAgdG8gc3RhcnQgaXJyZXNwZWN0aXZlIG9mIHBlcm1pc3Npb24gc3RhdGUuCisKKyAgICAg
ICAgVGVzdHM6IGZhc3QvZG9tL0dlb2xvY2F0aW9uL2RlbGF5ZWQtbXVsdGlwbGUtcGVybWlzc2lv
bnMtYWxsb3dlZC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9HZW9sb2NhdGlvbi9kZWxh
eWVkLW11bHRpcGxlLXBlcm1pc3Npb25zLWRlbmllZC5odG1sCisKKyAgICAgICAgKiBwYWdlL0dl
b2xvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uOjpzdGFydFJlcXVl
c3QpOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246OnNldElzQWxsb3dlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbjo6c3RhcnRVcGRhdGluZyk6CisgICAgICAgIChXZWJD
b3JlOjpHZW9sb2NhdGlvbjo6aGFuZGxlUGVuZGluZ1Blcm1pc3Npb25Ob3RpZmllcnMpOgorICAg
ICAgICAqIHBhZ2UvR2VvbG9jYXRpb24uaDoKKwogMjAxMC0wOC0xMCAgWW9zaGlraSBIYXlhc2hp
ICA8eWhheWFzaGlAZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW50IFRhbXVy
YS4KSW5kZXg6IFdlYkNvcmUvcGFnZS9HZW9sb2NhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9wYWdlL0dlb2xvY2F0aW9uLmNwcAkocmV2aXNpb24gNjQ5MzQpCisrKyBXZWJDb3JlL3Bh
Z2UvR2VvbG9jYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzgsMTMgKzI3OCwxOSBAQCBQ
YXNzUmVmUHRyPEdlb2xvY2F0aW9uOjpHZW9Ob3RpZmllcj4gR2VvCiAgICAgICAgIG5vdGlmaWVy
LT5zZXRGYXRhbEVycm9yKFBvc2l0aW9uRXJyb3I6OmNyZWF0ZShQb3NpdGlvbkVycm9yOjpQRVJN
SVNTSU9OX0RFTklFRCwgcGVybWlzc2lvbkRlbmllZEVycm9yTWVzc2FnZSkpOwogICAgIGVsc2Ug
aWYgKGhhdmVTdWl0YWJsZUNhY2hlZFBvc2l0aW9uKG5vdGlmaWVyLT5tX29wdGlvbnMuZ2V0KCkp
KQogICAgICAgICBub3RpZmllci0+c2V0VXNlQ2FjaGVkUG9zaXRpb24oKTsKLSAgICBlbHNlIGlm
IChub3RpZmllci0+aGFzWmVyb1RpbWVvdXQoKSB8fCBzdGFydFVwZGF0aW5nKG5vdGlmaWVyLmdl
dCgpKSkgeworICAgIGVsc2UgaWYgKG5vdGlmaWVyLT5oYXNaZXJvVGltZW91dCgpKQorICAgICAg
ICBub3RpZmllci0+c3RhcnRUaW1lcklmTmVlZGVkKCk7CiAjaWYgVVNFKFBSRUVNUFRfR0VPTE9D
QVRJT05fUEVSTUlTU0lPTikKLSAgICAgICAgLy8gT25seSBzdGFydCB0aW1lciBpZiB3ZSdyZSBu
b3Qgd2FpdGluZyBmb3IgdXNlciBwZXJtaXNzaW9uLgotICAgICAgICBpZiAoIW1fc3RhcnRSZXF1
ZXN0UGVybWlzc2lvbk5vdGlmaWVyKQotI2VuZGlmICAgICAgICAgICAgCi0gICAgICAgICAgICBu
b3RpZmllci0+c3RhcnRUaW1lcklmTmVlZGVkKCk7Ci0gICAgfSBlbHNlCisgICAgLy8gT25seSBz
dGFydCB1cGRhdGUgaWYgd2UncmUgbm90IHdhaXRpbmcgZm9yIHVzZXIgcGVybWlzc2lvbi4KKyAg
ICBlbHNlIGlmICghaXNBbGxvd2VkKCkpIHsKKyAgICAgICAgQVNTRVJUKCFpc0RlbmllZCgpKTsK
KyAgICAgICAgbV9wZW5kaW5nRm9yUGVybWlzc2lvbk5vdGlmaWVycy5hZGQobm90aWZpZXIpOwor
ICAgICAgICByZXF1ZXN0UGVybWlzc2lvbigpOworICAgIH0KKyNlbmRpZgorICAgIGVsc2UgaWYg
KHN0YXJ0VXBkYXRpbmcobm90aWZpZXIuZ2V0KCkpKQorICAgICAgICBub3RpZmllci0+c3RhcnRU
aW1lcklmTmVlZGVkKCk7CisgICAgZWxzZQogICAgICAgICBub3RpZmllci0+c2V0RmF0YWxFcnJv
cihQb3NpdGlvbkVycm9yOjpjcmVhdGUoUG9zaXRpb25FcnJvcjo6UE9TSVRJT05fVU5BVkFJTEFC
TEUsIGZhaWxlZFRvU3RhcnRTZXJ2aWNlRXJyb3JNZXNzYWdlKSk7CiAKICAgICByZXR1cm4gbm90
aWZpZXIucmVsZWFzZSgpOwpAQCAtNDAxLDI4ICs0MDcsMTAgQEAgdm9pZCBHZW9sb2NhdGlvbjo6
c2V0SXNBbGxvd2VkKGJvb2wgYWxsbwogICAgIG1fYWxsb3dHZW9sb2NhdGlvbiA9IGFsbG93ZWQg
PyBZZXMgOiBObzsKICAgICAKICNpZiBVU0UoUFJFRU1QVF9HRU9MT0NBVElPTl9QRVJNSVNTSU9O
KQotICAgIGlmIChtX3N0YXJ0UmVxdWVzdFBlcm1pc3Npb25Ob3RpZmllcikgewotICAgICAgICBp
ZiAoaXNBbGxvd2VkKCkpIHsKLSAgICAgICAgICAgIC8vIFBlcm1pc3Npb24gcmVxdWVzdCB3YXMg
bWFkZSBkdXJpbmcgdGhlIHN0YXJ0VXBkYXRpbmcgcHJvY2VzcwotICAgICAgICAgICAgbV9zdGFy
dFJlcXVlc3RQZXJtaXNzaW9uTm90aWZpZXItPnN0YXJ0VGltZXJJZk5lZWRlZCgpOwotICAgICAg
ICAgICAgLy8gVGhlIG5vdGlmaWVyIGlzIGFsd2F5cyByZWYnZWQgYnkgbV9vbmVTaG90cyBvciBt
X3dhdGNoZXJzLgotICAgICAgICAgICAgR2VvTm90aWZpZXIqIG5vdGlmaWVyID0gbV9zdGFydFJl
cXVlc3RQZXJtaXNzaW9uTm90aWZpZXIuZ2V0KCk7Ci0gICAgICAgICAgICBtX3N0YXJ0UmVxdWVz
dFBlcm1pc3Npb25Ob3RpZmllciA9IDA7Ci0jaWYgRU5BQkxFKENMSUVOVF9CQVNFRF9HRU9MT0NB
VElPTikKLSAgICAgICAgICAgIGlmICghbV9mcmFtZSkKLSAgICAgICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgICAgICBQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpOwotICAgICAgICAgICAg
aWYgKCFwYWdlKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIHBhZ2UtPmdl
b2xvY2F0aW9uQ29udHJvbGxlcigpLT5hZGRPYnNlcnZlcih0aGlzLCBub3RpZmllci0+bV9vcHRp
b25zLT5lbmFibGVIaWdoQWNjdXJhY3koKSk7Ci0jZWxzZQotICAgICAgICAgICAgLy8gVE9ETzog
SGFuZGxlIHN0YXJ0VXBkYXRlKCkgZm9yIG5vbi1jbGllbnQgYmFzZWQgaW1wbGVtZW50YXRpb25z
IHVzaW5nIHByZS1lbXB0aXZlIHBvbGljeQotI2VuZGlmCi0gICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICBtX3N0YXJ0UmVxdWVzdFBlcm1pc3Npb25Ob3RpZmllci0+c2V0RmF0YWxFcnJvcihQ
b3NpdGlvbkVycm9yOjpjcmVhdGUoUG9zaXRpb25FcnJvcjo6UEVSTUlTU0lPTl9ERU5JRUQsIHBl
cm1pc3Npb25EZW5pZWRFcnJvck1lc3NhZ2UpKTsKLSAgICAgICAgICAgIG1fb25lU2hvdHMuYWRk
KG1fc3RhcnRSZXF1ZXN0UGVybWlzc2lvbk5vdGlmaWVyKTsKLSAgICAgICAgICAgIG1fc3RhcnRS
ZXF1ZXN0UGVybWlzc2lvbk5vdGlmaWVyID0gMDsKLSAgICAgICAgfQorICAgIC8vIFBlcm1pc3Np
b24gcmVxdWVzdCB3YXMgbWFkZSBkdXJpbmcgdGhlIHN0YXJ0VXBkYXRpbmcgcHJvY2VzcworICAg
IGlmICghbV9wZW5kaW5nRm9yUGVybWlzc2lvbk5vdGlmaWVycy5pc0VtcHR5KCkpIHsKKyAgICAg
ICAgaGFuZGxlUGVuZGluZ1Blcm1pc3Npb25Ob3RpZmllcnMoKTsKKyAgICAgICAgbV9wZW5kaW5n
Rm9yUGVybWlzc2lvbk5vdGlmaWVycy5jbGVhcigpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
I2VuZGlmCkBAIC02MTgsMTQgKzYwNiw2IEBAIHZvaWQgR2VvbG9jYXRpb246Omdlb2xvY2F0aW9u
U2VydmljZUVycm8KIAogYm9vbCBHZW9sb2NhdGlvbjo6c3RhcnRVcGRhdGluZyhHZW9Ob3RpZmll
ciogbm90aWZpZXIpCiB7Ci0jaWYgVVNFKFBSRUVNUFRfR0VPTE9DQVRJT05fUEVSTUlTU0lPTikK
LSAgICBpZiAoIWlzQWxsb3dlZCgpKSB7Ci0gICAgICAgIG1fc3RhcnRSZXF1ZXN0UGVybWlzc2lv
bk5vdGlmaWVyID0gbm90aWZpZXI7Ci0gICAgICAgIHJlcXVlc3RQZXJtaXNzaW9uKCk7Ci0gICAg
ICAgIHJldHVybiB0cnVlOwotICAgIH0KLSNlbmRpZgotCiAjaWYgRU5BQkxFKENMSUVOVF9CQVNF
RF9HRU9MT0NBVElPTikKICAgICBpZiAoIW1fZnJhbWUpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
QEAgLTY1OCw2ICs2MzgsMzcgQEAgdm9pZCBHZW9sb2NhdGlvbjo6c3RvcFVwZGF0aW5nKCkKIAog
fQogCisjaWYgVVNFKFBSRUVNUFRfR0VPTE9DQVRJT05fUEVSTUlTU0lPTikKK3ZvaWQgR2VvbG9j
YXRpb246OmhhbmRsZVBlbmRpbmdQZXJtaXNzaW9uTm90aWZpZXJzKCkKK3sKKyNpZiBFTkFCTEUo
Q0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OKQorICAgIGlmICghbV9mcmFtZSkKKyAgICAgICAgcmV0
dXJuOworICAgIFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CisgICAgaWYgKCFwYWdlKQor
ICAgICAgICByZXR1cm47CisjZW5kaWYKKworICAgIEdlb05vdGlmaWVyU2V0Ojpjb25zdF9pdGVy
YXRvciBlbmQgPSBtX3BlbmRpbmdGb3JQZXJtaXNzaW9uTm90aWZpZXJzLmVuZCgpOworICAgIGZv
ciAoR2VvTm90aWZpZXJTZXQ6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBtX3BlbmRpbmdGb3JQZXJt
aXNzaW9uTm90aWZpZXJzLmJlZ2luKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKKyAgICAgICAg
R2VvTm90aWZpZXIqIG5vdGlmaWVyID0gaXRlci0+Z2V0KCk7CisgICAgICAgIG5vdGlmaWVyLT5z
dGFydFRpbWVySWZOZWVkZWQoKTsKKworICAgICAgICBpZiAoaXNBbGxvd2VkKCkpIHsKKyNpZiBF
TkFCTEUoQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OKQorICAgICAgICAgICAgLy8gVGhlIG5vdGlm
aWVyIGlzIGFsd2F5cyByZWYnZWQgYnkgbV9vbmVTaG90cyBvciBtX3dhdGNoZXJzLgorICAgICAg
ICAgICAgcGFnZS0+Z2VvbG9jYXRpb25Db250cm9sbGVyKCktPmFkZE9ic2VydmVyKHRoaXMsIG5v
dGlmaWVyLT5tX29wdGlvbnMtPmVuYWJsZUhpZ2hBY2N1cmFjeSgpKTsKKyNlbHNlCisgICAgICAg
ICAgICAvLyBzdGFydCBhbGwgcGVuZGluZyBub3RpZmljYXRpb24gcmVxdWVzdHMgYXMgcGVybWlz
c2lvbiBncmFudGVkLgorICAgICAgICAgICAgaWYgKG1fc2VydmljZSAmJiAhbV9zZXJ2aWNlLT5z
dGFydFVwZGF0aW5nKG5vdGlmaWVyLT5tX29wdGlvbnMuZ2V0KCkpKQorICAgICAgICAgICAgICAg
IG5vdGlmaWVyLT5zZXRGYXRhbEVycm9yKFBvc2l0aW9uRXJyb3I6OmNyZWF0ZShQb3NpdGlvbkVy
cm9yOjpQT1NJVElPTl9VTkFWQUlMQUJMRSwgZmFpbGVkVG9TdGFydFNlcnZpY2VFcnJvck1lc3Nh
Z2UpKTsKKyNlbmRpZgorICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG5vdGlmaWVyLT5zZXRG
YXRhbEVycm9yKFBvc2l0aW9uRXJyb3I6OmNyZWF0ZShQb3NpdGlvbkVycm9yOjpQRVJNSVNTSU9O
X0RFTklFRCwgcGVybWlzc2lvbkRlbmllZEVycm9yTWVzc2FnZSkpOworICAgIH0KK30KKyNlbmRp
ZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbHNlCkluZGV4OiBXZWJDb3JlL3BhZ2Uv
R2VvbG9jYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvR2VvbG9jYXRpb24uaAko
cmV2aXNpb24gNjQ5MzQpCisrKyBXZWJDb3JlL3BhZ2UvR2VvbG9jYXRpb24uaAkod29ya2luZyBj
b3B5KQpAQCAtMTQ0LDYgKzE0NCwxMCBAQCBwcml2YXRlOgogICAgIGJvb2wgc3RhcnRVcGRhdGlu
ZyhHZW9Ob3RpZmllciopOwogICAgIHZvaWQgc3RvcFVwZGF0aW5nKCk7CiAKKyNpZiBVU0UoUFJF
RU1QVF9HRU9MT0NBVElPTl9QRVJNSVNTSU9OKQorICAgIHZvaWQgaGFuZGxlUGVuZGluZ1Blcm1p
c3Npb25Ob3RpZmllcnMoKTsKKyNlbmRpZgorCiAjaWYgIUVOQUJMRShDTElFTlRfQkFTRURfR0VP
TE9DQVRJT04pICYmIEVOQUJMRShHRU9MT0NBVElPTikKICAgICAvLyBHZW9sb2NhdGlvblNlcnZp
Y2VDbGllbnQKICAgICB2aXJ0dWFsIHZvaWQgZ2VvbG9jYXRpb25TZXJ2aWNlUG9zaXRpb25DaGFu
Z2VkKEdlb2xvY2F0aW9uU2VydmljZSopOwpAQCAtMTY3LDcgKzE3MSw3IEBAIHByaXZhdGU6CiAg
ICAgT3duUHRyPEdlb2xvY2F0aW9uU2VydmljZT4gbV9zZXJ2aWNlOwogI2VuZGlmCiAjaWYgVVNF
KFBSRUVNUFRfR0VPTE9DQVRJT05fUEVSTUlTU0lPTikKLSAgICBSZWZQdHI8R2VvTm90aWZpZXI+
IG1fc3RhcnRSZXF1ZXN0UGVybWlzc2lvbk5vdGlmaWVyOworICAgIEdlb05vdGlmaWVyU2V0IG1f
cGVuZGluZ0ZvclBlcm1pc3Npb25Ob3RpZmllcnM7CiAjZW5kaWYKICAgICBSZWZQdHI8R2VvcG9z
aXRpb24+IG1fbGFzdFBvc2l0aW9uOwogCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA2NTA2MykKKysrIExh
eW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3IEBACisyMDEw
LTA4LTEwICBNYWhlc2ggS3Vsa2FybmkgIDxtYWhlc2gua3Vsa2FybmlAbm9raWEuY29tPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MjgxMQorICAgICAgICBHZW9sb2NhdGlvbiBw
cmVlbXB0aXZlIHBlcm1pc3Npb25zIHBvbGljeSBpcyBidWdneQorCisgICAgICAgIEFkZHMgY2Fz
ZXMgd2hlcmUgcGVybWlzc2lvbiBpcyBuaWV0aGVyIGRlbmllZCBvciBncmFudGVkIGltbWVkaWF0
ZWx5IGFuZCBtdWx0aXBsZQorICAgICAgICByZXF1ZXN0cyBhcmUgd2FpdGluZy4KKworICAgICAg
ICAqIGZhc3QvZG9tL0dlb2xvY2F0aW9uL2RlbGF5ZWQtbXVsdGlwbGUtcGVybWlzc2lvbnMtYWxs
b3dlZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0dlb2xvY2F0aW9u
L2RlbGF5ZWQtbXVsdGlwbGUtcGVybWlzc2lvbnMtYWxsb3dlZC5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2RvbS9HZW9sb2NhdGlvbi9kZWxheWVkLW11bHRpcGxlLXBlcm1pc3Npb25zLWRl
bmllZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0dlb2xvY2F0aW9u
L2RlbGF5ZWQtbXVsdGlwbGUtcGVybWlzc2lvbnMtZGVuaWVkLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9kZWxheWVkLW11bHRpcGxlLXBl
cm1pc3Npb25zLWFsbG93ZWQuanM6IEFkZGVkLgorICAgICAgICAoYWxsb3dQZXJtaXNzaW9uKToK
KyAgICAgICAgKCk6CisgICAgICAgIChtYXliZUZpbmlzaFRlc3QpOgorICAgICAgICAqIGZhc3Qv
ZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9kZWxheWVkLW11bHRpcGxlLXBlcm1pc3Npb25z
LWRlbmllZC5qczogQWRkZWQuCisgICAgICAgIChkZW55UGVybWlzc2lvbik6CisgICAgICAgICht
YXliZUZpbmlzaFRlc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9Ta2lwcGVkOgorICAgICAg
ICAqIHBsYXRmb3JtL3F0L1NraXBwZWQ6CisKIDIwMTAtMDgtMTAgIFlvc2hpa2kgSGF5YXNoaSAg
PHloYXlhc2hpQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VudCBUYW11cmEu
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9kZWxheWVkLW11bHRpcGxl
LXBlcm1pc3Npb25zLWFsbG93ZWQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL2RlbGF5ZWQtbXVsdGlwbGUtcGVybWlzc2lvbnMtYWxs
b3dlZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9H
ZW9sb2NhdGlvbi9kZWxheWVkLW11bHRpcGxlLXBlcm1pc3Npb25zLWFsbG93ZWQtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDExIEBACitUZXN0cyB0aGF0IHdoZW4gYSBwb3Np
dGlvbiBpcyBhdmFpbGFibGUsIG5vIGNhbGxiYWNrcyBhcmUgaW52b2tlZCB1bnRpbCBwZXJtaXNz
aW9uIGlzIGFsbG93ZWQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIFN1
Y2Nlc3MgY2FsbGJhY2sgaW52b2tlZAorUEFTUyBTdWNjZXNzIGNhbGxiYWNrIGludm9rZWQKK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9kZWxheWVkLW11bHRpcGxlLXBlcm1pc3Np
b25zLWFsbG93ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9s
b2NhdGlvbi9kZWxheWVkLW11bHRpcGxlLXBlcm1pc3Npb25zLWFsbG93ZWQuaHRtbAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL2RlbGF5ZWQtbXVsdGlw
bGUtcGVybWlzc2lvbnMtYWxsb3dlZC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEzIEBA
Cis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4K
KzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9qcy9yZXNvdXJjZXMv
anMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlv
biI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRl
c3RzL2RlbGF5ZWQtbXVsdGlwbGUtcGVybWlzc2lvbnMtYWxsb3dlZC5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlv
bi9kZWxheWVkLW11bHRpcGxlLXBlcm1pc3Npb25zLWRlbmllZC1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vZGVsYXllZC1tdWx0aXBs
ZS1wZXJtaXNzaW9ucy1kZW5pZWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vZGVsYXllZC1tdWx0aXBsZS1wZXJtaXNzaW9ucy1k
ZW5pZWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEzIEBACitUZXN0cyB0
aGF0IHdoZW4gYSBwb3NpdGlvbiBpcyBhdmFpbGFibGUsIG5vIGNhbGxiYWNrcyBhcmUgaW52b2tl
ZCB1bnRpbCBwZXJtaXNzaW9uIGlzIGRlbmllZC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUi
LgorCisKK1BBU1MgZXJyb3IuY29kZSBpcyBlcnJvci5QRVJNSVNTSU9OX0RFTklFRAorUEFTUyBl
cnJvci5tZXNzYWdlIGlzICJVc2VyIGRlbmllZCBHZW9sb2NhdGlvbiIKK1BBU1MgZXJyb3IuY29k
ZSBpcyBlcnJvci5QRVJNSVNTSU9OX0RFTklFRAorUEFTUyBlcnJvci5tZXNzYWdlIGlzICJVc2Vy
IGRlbmllZCBHZW9sb2NhdGlvbiIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9k
ZWxheWVkLW11bHRpcGxlLXBlcm1pc3Npb25zLWRlbmllZC5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL2RlbGF5ZWQtbXVsdGlwbGUtcGVybWlzc2lv
bnMtZGVuaWVkLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9s
b2NhdGlvbi9kZWxheWVkLW11bHRpcGxlLXBlcm1pc3Npb25zLWRlbmllZC5odG1sCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RU
RCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8
c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL2RlbGF5ZWQtbXVsdGlwbGUtcGVybWlzc2lvbnMtZGVu
aWVkLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9kZWxheWVkLW11bHRpcGxlLXBlcm1p
c3Npb25zLWFsbG93ZWQuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vR2Vv
bG9jYXRpb24vc2NyaXB0LXRlc3RzL2RlbGF5ZWQtbXVsdGlwbGUtcGVybWlzc2lvbnMtYWxsb3dl
ZC5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3Nj
cmlwdC10ZXN0cy9kZWxheWVkLW11bHRpcGxlLXBlcm1pc3Npb25zLWFsbG93ZWQuanMJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNTEgQEAKK2Rlc2NyaXB0aW9uKCJUZXN0cyB0aGF0IHdoZW4gbXVs
dGlwbGUgcG9zaXRpb25zIGFyZSBhdmFpbGFibGUsIG5vIGNhbGxiYWNrcyBhcmUgaW52b2tlZCB1
bnRpbCBwZXJtaXNzaW9uIGlzIGFsbG93ZWQuIik7CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCisgICAgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLnNldE1vY2tHZW9sb2Nh
dGlvblBvc2l0aW9uKDUxLjQ3OCwgLTAuMTY2LCAxMDApOworCitmdW5jdGlvbiBhbGxvd1Blcm1p
c3Npb24oKSB7CisgICAgcGVybWlzc2lvblNldCA9IHRydWU7CisgICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0R2VvbG9j
YXRpb25QZXJtaXNzaW9uKHRydWUpOworfQorCit2YXIgd2F0Y2hDYWxsYmFja0ludm9rZWQgPSBm
YWxzZTsKK3ZhciBvbmVTaG90Q2FsbGJhY2tJbnZva2VkID0gZmFsc2U7CisKK25hdmlnYXRvci5n
ZW9sb2NhdGlvbi53YXRjaFBvc2l0aW9uKGZ1bmN0aW9uKCkgeworICAgIGlmIChwZXJtaXNzaW9u
U2V0KSB7CisgICAgICAgIHRlc3RQYXNzZWQoJ1N1Y2Nlc3MgY2FsbGJhY2sgaW52b2tlZCcpOwor
ICAgICAgICB3YXRjaENhbGxiYWNrSW52b2tlZCA9IHRydWU7CisgICAgICAgIG1heWJlRmluaXNo
VGVzdCgpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIHRlc3RGYWlsZWQoJ1N1Y2Nlc3Mg
Y2FsbGJhY2sgaW52b2tlZCB1bmV4cGVjdGVkbHknKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30s
IGZ1bmN0aW9uKGVycikgeworICAgIHRlc3RGYWlsZWQoJ0Vycm9yIGNhbGxiYWNrIGludm9rZWQg
dW5leHBlY3RlZGx5Jyk7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9KTsKKworbmF2aWdhdG9yLmdl
b2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihmdW5jdGlvbigpIHsKKyAgICBpZiAocGVybWlz
c2lvblNldCkgeworICAgICAgICB0ZXN0UGFzc2VkKCdTdWNjZXNzIGNhbGxiYWNrIGludm9rZWQn
KTsKKyAgICAgICAgb25lU2hvdENhbGxiYWNrSW52b2tlZCA9IHRydWU7CisgICAgICAgIG1heWJl
RmluaXNoVGVzdCgpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIHRlc3RGYWlsZWQoJ1N1
Y2Nlc3MgY2FsbGJhY2sgaW52b2tlZCB1bmV4cGVjdGVkbHknKTsKKyAgICBmaW5pc2hKU1Rlc3Qo
KTsKK30sIGZ1bmN0aW9uKGVycikgeworICAgIHRlc3RGYWlsZWQoJ0Vycm9yIGNhbGxiYWNrIGlu
dm9rZWQgdW5leHBlY3RlZGx5Jyk7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9KTsKKword2luZG93
LnNldFRpbWVvdXQoYWxsb3dQZXJtaXNzaW9uLCAxMDApOworCitmdW5jdGlvbiBtYXliZUZpbmlz
aFRlc3QoKSB7CisgICAgaWYgKHdhdGNoQ2FsbGJhY2tJbnZva2VkICYmIG9uZVNob3RDYWxsYmFj
a0ludm9rZWQpCisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit3aW5kb3cuanNUZXN0SXNB
c3luYyA9IHRydWU7Cit3aW5kb3cuc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9kZWxheWVkLW11bHRp
cGxlLXBlcm1pc3Npb25zLWRlbmllZC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvZGVsYXllZC1tdWx0aXBsZS1wZXJtaXNzaW9u
cy1kZW5pZWQuanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2Nh
dGlvbi9zY3JpcHQtdGVzdHMvZGVsYXllZC1tdWx0aXBsZS1wZXJtaXNzaW9ucy1kZW5pZWQuanMJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTUgQEAKK2Rlc2NyaXB0aW9uKCJUZXN0cyB0aGF0IHdo
ZW4gbXVsdGlwbGUgcG9zaXRpb25zIGFyZSBhdmFpbGFibGUsIG5vIGNhbGxiYWNrcyBhcmUgaW52
b2tlZCB1bnRpbCBwZXJtaXNzaW9uIGlzIGRlbmllZC4iKTsKKworaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikKKyAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9ja0dl
b2xvY2F0aW9uUG9zaXRpb24oNTEuNDc4LCAtMC4xNjYsIDEwMCk7CisKK2Z1bmN0aW9uIGRlbnlQ
ZXJtaXNzaW9uKCkgeworICAgIHBlcm1pc3Npb25TZXQgPSB0cnVlOworICAgIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldEdl
b2xvY2F0aW9uUGVybWlzc2lvbihmYWxzZSk7Cit9CisKK3ZhciB3YXRjaENhbGxiYWNrSW52b2tl
ZCA9IGZhbHNlOwordmFyIG9uZVNob3RDYWxsYmFja0ludm9rZWQgPSBmYWxzZTsKK3ZhciBlcnJv
cjsKKworbmF2aWdhdG9yLmdlb2xvY2F0aW9uLndhdGNoUG9zaXRpb24oZnVuY3Rpb24oKSB7Cisg
ICAgdGVzdEZhaWxlZCgnU3VjY2VzcyBjYWxsYmFjayBpbnZva2VkIHVuZXhwZWN0ZWRseScpOwor
ICAgIGZpbmlzaEpTVGVzdCgpOworfSwgZnVuY3Rpb24oZSkgeworICAgIGlmIChwZXJtaXNzaW9u
U2V0KSB7CisgICAgICAgIGVycm9yID0gZTsKKyAgICAgICAgc2hvdWxkQmUoJ2Vycm9yLmNvZGUn
LCAnZXJyb3IuUEVSTUlTU0lPTl9ERU5JRUQnKTsKKyAgICAgICAgc2hvdWxkQmUoJ2Vycm9yLm1l
c3NhZ2UnLCAnIlVzZXIgZGVuaWVkIEdlb2xvY2F0aW9uIicpOworICAgICAgICB3YXRjaENhbGxi
YWNrSW52b2tlZCA9IHRydWU7CisgICAgICAgIG1heWJlRmluaXNoVGVzdCgpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIHRlc3RGYWlsZWQoJ0Vycm9yIGNhbGxiYWNrIGludm9rZWQgdW5l
eHBlY3RlZGx5Jyk7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9KTsKKworbmF2aWdhdG9yLmdlb2xv
Y2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihmdW5jdGlvbigpIHsKKyAgICB0ZXN0RmFpbGVkKCdT
dWNjZXNzIGNhbGxiYWNrIGludm9rZWQgdW5leHBlY3RlZGx5Jyk7CisgICAgZmluaXNoSlNUZXN0
KCk7Cit9LCBmdW5jdGlvbihlKSB7CisgICAgaWYgKHBlcm1pc3Npb25TZXQpIHsKKyAgICAgICAg
ZXJyb3IgPSBlOworICAgICAgICBzaG91bGRCZSgnZXJyb3IuY29kZScsICdlcnJvci5QRVJNSVNT
SU9OX0RFTklFRCcpOworICAgICAgICBzaG91bGRCZSgnZXJyb3IubWVzc2FnZScsICciVXNlciBk
ZW5pZWQgR2VvbG9jYXRpb24iJyk7CisgICAgICAgIG9uZVNob3RDYWxsYmFja0ludm9rZWQgPSB0
cnVlOworICAgICAgICBtYXliZUZpbmlzaFRlc3QoKTsgICAgICAgIAorICAgICAgICByZXR1cm47
CisgICAgfQorICAgIHRlc3RGYWlsZWQoJ0Vycm9yIGNhbGxiYWNrIGludm9rZWQgdW5leHBlY3Rl
ZGx5Jyk7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9KTsKK3dpbmRvdy5zZXRUaW1lb3V0KGRlbnlQ
ZXJtaXNzaW9uLCAxMDApOworCitmdW5jdGlvbiBtYXliZUZpbmlzaFRlc3QoKSB7CisgICAgaWYg
KHdhdGNoQ2FsbGJhY2tJbnZva2VkICYmIG9uZVNob3RDYWxsYmFja0ludm9rZWQpCisgICAgICAg
IGZpbmlzaEpTVGVzdCgpOworfQorCit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Cit3aW5k
b3cuc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3Jt
L2d0ay9Ta2lwcGVkCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lw
cGVkCShyZXZpc2lvbiA2NDkzNCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVk
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDkxLDYgKzEwOTEsOCBAQCBmYXN0L2RvbS9EZXZpY2VPcmll
bnRhdGlvbi93aW5kb3ctcHJvcGVyCiBmYXN0L2RvbS9HZW9sb2NhdGlvbi9jYWxsYmFjay1leGNl
cHRpb24uaHRtbAogZmFzdC9kb20vR2VvbG9jYXRpb24vZGVsYXllZC1wZXJtaXNzaW9uLWFsbG93
ZWQuaHRtbAogZmFzdC9kb20vR2VvbG9jYXRpb24vZGVsYXllZC1wZXJtaXNzaW9uLWRlbmllZC5o
dG1sCitmYXN0L2RvbS9HZW9sb2NhdGlvbi9kZWxheWVkLW11bHRpcGxlLXBlcm1pc3Npb25zLWFs
bG93ZWQuaHRtbAorZmFzdC9kb20vR2VvbG9jYXRpb24vZGVsYXllZC1tdWx0aXBsZS1wZXJtaXNz
aW9ucy1kZW5pZWQuaHRtbAogZmFzdC9kb20vR2VvbG9jYXRpb24vZXJyb3IuaHRtbAogZmFzdC9k
b20vR2VvbG9jYXRpb24vbXVsdGlwbGUtcmVxdWVzdHMuaHRtbAogZmFzdC9kb20vR2VvbG9jYXRp
b24vcGVybWlzc2lvbi1kZW5pZWQtYWxyZWFkeS1jbGVhci13YXRjaC5odG1sCkluZGV4OiBMYXlv
dXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3Bs
YXRmb3JtL3F0L1NraXBwZWQJKHJldmlzaW9uIDY0OTM0KQorKysgTGF5b3V0VGVzdHMvcGxhdGZv
cm0vcXQvU2tpcHBlZAkod29ya2luZyBjb3B5KQpAQCAtNTQ5Myw2ICs1NDkzLDggQEAgZmFzdC9l
dmVudHMvc3BlY2lhbC1rZXktZXZlbnRzLWluLWlucHV0LQogIyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDM0NzgKIGZhc3QvZG9tL0dlb2xvY2F0aW9uL2RlbGF5ZWQt
cGVybWlzc2lvbi1hbGxvd2VkLmh0bWwKIGZhc3QvZG9tL0dlb2xvY2F0aW9uL2RlbGF5ZWQtcGVy
bWlzc2lvbi1kZW5pZWQuaHRtbAorZmFzdC9kb20vR2VvbG9jYXRpb24vZGVsYXllZC1tdWx0aXBs
ZS1wZXJtaXNzaW9ucy1hbGxvd2VkLmh0bWwKK2Zhc3QvZG9tL0dlb2xvY2F0aW9uL2RlbGF5ZWQt
bXVsdGlwbGUtcGVybWlzc2lvbnMtZGVuaWVkLmh0bWwKIAogIyBCbG9kQnVpbGRlciBpcyBub3Qg
ZW5hYmxlZAogaHR0cC90ZXN0cy9sb2NhbC9ibG9iL3NlbmQtZGF0YS1ibG9iLmh0bWwK
</data>
<flag name="review"
          id="52452"
          type_id="1"
          status="-"
          setter="steveblock"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64027</attachid>
            <date>2010-08-10 10:44:36 -0700</date>
            <delta_ts>2010-08-13 21:37:55 -0700</delta_ts>
            <desc>patch</desc>
            <filename>42811.patch</filename>
            <type>text/plain</type>
            <size>16301</size>
            <attacher name="Mahesh Kulkarni">maheshk</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NTA2MykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjcgQEAKKzIwMTAtMDgtMTAgIE1haGVzaCBLdWxrYXJuaSAgPG1haGVzaC5rdWxr
YXJuaUBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgR2VvbG9jYXRpb24gcHJlZW1wdGl2ZSBwZXJtaXNzaW9ucyBwb2xpY3kgaXMgYnVn
Z3kKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQyODEx
CisKKyAgICAgICAgV2hpbGUgd2FpdGluZyBmb3IgcGVybWlzc2lvbiwgbV9zdGFydFJlcXVlc3RQ
ZXJtaXNzaW9uTm90aWZpZXIgd2FzIAorICAgICAgICB1c2VkIHRvIGNvbnNpZGVyIG9ubHkgb25l
IHBlbmRpbmcgcmVxdWVzdC4gVGhpcyBwYXRjaCBpbXBsZW1lbnRzIGEgc2V0CisgICAgICAgIG1f
cGVuZGluZ0ZvclBlcm1pc3Npb25Ob3RpZmllcnMgdG8gbWFpbnRhaW4gc2V0IG9mIHBlbmRpbmcg
cmVxdWVzdHMuIAorICAgICAgICBXaGVuIHVzZXIgZ3JhbnRzL2RlbmllcyBwZXJtaXNzaW9uIGFs
bCBsaXN0ZW5lcidzIHdpbGwgYmUgbm90aWZpZWQuIAorICAgICAgICBBbHNvIGZpeGVkIGlzc3Vl
IHdpdGggaGFzWmVyb1RpbWVvdXQoKSB3aGVyZSBzdGFydFRpbWVySWZOZWVkZWQoKSBoYXMKKyAg
ICAgICAgdG8gc3RhcnQgaXJyZXNwZWN0aXZlIG9mIHBlcm1pc3Npb24gc3RhdGUuCisKKyAgICAg
ICAgVGVzdHM6IGZhc3QvZG9tL0dlb2xvY2F0aW9uL2RlbGF5ZWQtbXVsdGlwbGUtcGVybWlzc2lv
bnMtYWxsb3dlZC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9HZW9sb2NhdGlvbi9kZWxh
eWVkLW11bHRpcGxlLXBlcm1pc3Npb25zLWRlbmllZC5odG1sCisKKyAgICAgICAgKiBwYWdlL0dl
b2xvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uOjpzdGFydFJlcXVl
c3QpOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246OnNldElzQWxsb3dlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbjo6c3RhcnRVcGRhdGluZyk6CisgICAgICAgIChXZWJD
b3JlOjpHZW9sb2NhdGlvbjo6aGFuZGxlUGVuZGluZ1Blcm1pc3Npb25Ob3RpZmllcnMpOgorICAg
ICAgICAqIHBhZ2UvR2VvbG9jYXRpb24uaDoKKwogMjAxMC0wOC0xMCAgWW9zaGlraSBIYXlhc2hp
ICA8eWhheWFzaGlAZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW50IFRhbXVy
YS4KSW5kZXg6IFdlYkNvcmUvcGFnZS9HZW9sb2NhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9wYWdlL0dlb2xvY2F0aW9uLmNwcAkocmV2aXNpb24gNjQ5MzQpCisrKyBXZWJDb3JlL3Bh
Z2UvR2VvbG9jYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzgsMTMgKzI3OCwxOCBAQCBQ
YXNzUmVmUHRyPEdlb2xvY2F0aW9uOjpHZW9Ob3RpZmllcj4gR2VvCiAgICAgICAgIG5vdGlmaWVy
LT5zZXRGYXRhbEVycm9yKFBvc2l0aW9uRXJyb3I6OmNyZWF0ZShQb3NpdGlvbkVycm9yOjpQRVJN
SVNTSU9OX0RFTklFRCwgcGVybWlzc2lvbkRlbmllZEVycm9yTWVzc2FnZSkpOwogICAgIGVsc2Ug
aWYgKGhhdmVTdWl0YWJsZUNhY2hlZFBvc2l0aW9uKG5vdGlmaWVyLT5tX29wdGlvbnMuZ2V0KCkp
KQogICAgICAgICBub3RpZmllci0+c2V0VXNlQ2FjaGVkUG9zaXRpb24oKTsKLSAgICBlbHNlIGlm
IChub3RpZmllci0+aGFzWmVyb1RpbWVvdXQoKSB8fCBzdGFydFVwZGF0aW5nKG5vdGlmaWVyLmdl
dCgpKSkgeworICAgIGVsc2UgaWYgKG5vdGlmaWVyLT5oYXNaZXJvVGltZW91dCgpKQorICAgICAg
ICBub3RpZmllci0+c3RhcnRUaW1lcklmTmVlZGVkKCk7CiAjaWYgVVNFKFBSRUVNUFRfR0VPTE9D
QVRJT05fUEVSTUlTU0lPTikKLSAgICAgICAgLy8gT25seSBzdGFydCB0aW1lciBpZiB3ZSdyZSBu
b3Qgd2FpdGluZyBmb3IgdXNlciBwZXJtaXNzaW9uLgotICAgICAgICBpZiAoIW1fc3RhcnRSZXF1
ZXN0UGVybWlzc2lvbk5vdGlmaWVyKQotI2VuZGlmICAgICAgICAgICAgCi0gICAgICAgICAgICBu
b3RpZmllci0+c3RhcnRUaW1lcklmTmVlZGVkKCk7Ci0gICAgfSBlbHNlCisgICAgZWxzZSBpZiAo
IWlzQWxsb3dlZCgpKSB7CisgICAgICAgIC8vIGlmIHdlIGRvbid0IHlldCBoYXZlIHBlcm1pc3Np
b24sIHJlcXVlc3QgZm9yIHBlcm1pc3Npb24gYmVmb3JlIGNhbGxpbmcgc3RhcnRVcGRhdGluZygp
CisgICAgICAgIG1fcGVuZGluZ0ZvclBlcm1pc3Npb25Ob3RpZmllcnMuYWRkKG5vdGlmaWVyKTsK
KyAgICAgICAgcmVxdWVzdFBlcm1pc3Npb24oKTsKKyAgICB9CisjZW5kaWYKKyAgICBlbHNlIGlm
IChzdGFydFVwZGF0aW5nKG5vdGlmaWVyLmdldCgpKSkKKyAgICAgICAgbm90aWZpZXItPnN0YXJ0
VGltZXJJZk5lZWRlZCgpOworICAgIGVsc2UKICAgICAgICAgbm90aWZpZXItPnNldEZhdGFsRXJy
b3IoUG9zaXRpb25FcnJvcjo6Y3JlYXRlKFBvc2l0aW9uRXJyb3I6OlBPU0lUSU9OX1VOQVZBSUxB
QkxFLCBmYWlsZWRUb1N0YXJ0U2VydmljZUVycm9yTWVzc2FnZSkpOwogCiAgICAgcmV0dXJuIG5v
dGlmaWVyLnJlbGVhc2UoKTsKQEAgLTQwMSwyOCArNDA2LDEwIEBAIHZvaWQgR2VvbG9jYXRpb246
OnNldElzQWxsb3dlZChib29sIGFsbG8KICAgICBtX2FsbG93R2VvbG9jYXRpb24gPSBhbGxvd2Vk
ID8gWWVzIDogTm87CiAgICAgCiAjaWYgVVNFKFBSRUVNUFRfR0VPTE9DQVRJT05fUEVSTUlTU0lP
TikKLSAgICBpZiAobV9zdGFydFJlcXVlc3RQZXJtaXNzaW9uTm90aWZpZXIpIHsKLSAgICAgICAg
aWYgKGlzQWxsb3dlZCgpKSB7Ci0gICAgICAgICAgICAvLyBQZXJtaXNzaW9uIHJlcXVlc3Qgd2Fz
IG1hZGUgZHVyaW5nIHRoZSBzdGFydFVwZGF0aW5nIHByb2Nlc3MKLSAgICAgICAgICAgIG1fc3Rh
cnRSZXF1ZXN0UGVybWlzc2lvbk5vdGlmaWVyLT5zdGFydFRpbWVySWZOZWVkZWQoKTsKLSAgICAg
ICAgICAgIC8vIFRoZSBub3RpZmllciBpcyBhbHdheXMgcmVmJ2VkIGJ5IG1fb25lU2hvdHMgb3Ig
bV93YXRjaGVycy4KLSAgICAgICAgICAgIEdlb05vdGlmaWVyKiBub3RpZmllciA9IG1fc3RhcnRS
ZXF1ZXN0UGVybWlzc2lvbk5vdGlmaWVyLmdldCgpOwotICAgICAgICAgICAgbV9zdGFydFJlcXVl
c3RQZXJtaXNzaW9uTm90aWZpZXIgPSAwOwotI2lmIEVOQUJMRShDTElFTlRfQkFTRURfR0VPTE9D
QVRJT04pCi0gICAgICAgICAgICBpZiAoIW1fZnJhbWUpCi0gICAgICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICAgICAgUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKLSAgICAgICAgICAg
IGlmICghcGFnZSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBwYWdlLT5n
ZW9sb2NhdGlvbkNvbnRyb2xsZXIoKS0+YWRkT2JzZXJ2ZXIodGhpcywgbm90aWZpZXItPm1fb3B0
aW9ucy0+ZW5hYmxlSGlnaEFjY3VyYWN5KCkpOwotI2Vsc2UKLSAgICAgICAgICAgIC8vIFRPRE86
IEhhbmRsZSBzdGFydFVwZGF0ZSgpIGZvciBub24tY2xpZW50IGJhc2VkIGltcGxlbWVudGF0aW9u
cyB1c2luZyBwcmUtZW1wdGl2ZSBwb2xpY3kKLSNlbmRpZgotICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgbV9zdGFydFJlcXVlc3RQZXJtaXNzaW9uTm90aWZpZXItPnNldEZhdGFsRXJyb3Io
UG9zaXRpb25FcnJvcjo6Y3JlYXRlKFBvc2l0aW9uRXJyb3I6OlBFUk1JU1NJT05fREVOSUVELCBw
ZXJtaXNzaW9uRGVuaWVkRXJyb3JNZXNzYWdlKSk7Ci0gICAgICAgICAgICBtX29uZVNob3RzLmFk
ZChtX3N0YXJ0UmVxdWVzdFBlcm1pc3Npb25Ob3RpZmllcik7Ci0gICAgICAgICAgICBtX3N0YXJ0
UmVxdWVzdFBlcm1pc3Npb25Ob3RpZmllciA9IDA7Ci0gICAgICAgIH0KKyAgICAvLyBQZXJtaXNz
aW9uIHJlcXVlc3Qgd2FzIG1hZGUgZHVyaW5nIHRoZSBzdGFydFJlcXVlc3QgcHJvY2VzcworICAg
IGlmICghbV9wZW5kaW5nRm9yUGVybWlzc2lvbk5vdGlmaWVycy5pc0VtcHR5KCkpIHsKKyAgICAg
ICAgaGFuZGxlUGVuZGluZ1Blcm1pc3Npb25Ob3RpZmllcnMoKTsKKyAgICAgICAgbV9wZW5kaW5n
Rm9yUGVybWlzc2lvbk5vdGlmaWVycy5jbGVhcigpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
I2VuZGlmCkBAIC02MTgsMTQgKzYwNSw2IEBAIHZvaWQgR2VvbG9jYXRpb246Omdlb2xvY2F0aW9u
U2VydmljZUVycm8KIAogYm9vbCBHZW9sb2NhdGlvbjo6c3RhcnRVcGRhdGluZyhHZW9Ob3RpZmll
ciogbm90aWZpZXIpCiB7Ci0jaWYgVVNFKFBSRUVNUFRfR0VPTE9DQVRJT05fUEVSTUlTU0lPTikK
LSAgICBpZiAoIWlzQWxsb3dlZCgpKSB7Ci0gICAgICAgIG1fc3RhcnRSZXF1ZXN0UGVybWlzc2lv
bk5vdGlmaWVyID0gbm90aWZpZXI7Ci0gICAgICAgIHJlcXVlc3RQZXJtaXNzaW9uKCk7Ci0gICAg
ICAgIHJldHVybiB0cnVlOwotICAgIH0KLSNlbmRpZgotCiAjaWYgRU5BQkxFKENMSUVOVF9CQVNF
RF9HRU9MT0NBVElPTikKICAgICBpZiAoIW1fZnJhbWUpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
QEAgLTY1OCw2ICs2MzcsMzQgQEAgdm9pZCBHZW9sb2NhdGlvbjo6c3RvcFVwZGF0aW5nKCkKIAog
fQogCisjaWYgVVNFKFBSRUVNUFRfR0VPTE9DQVRJT05fUEVSTUlTU0lPTikKK3ZvaWQgR2VvbG9j
YXRpb246OmhhbmRsZVBlbmRpbmdQZXJtaXNzaW9uTm90aWZpZXJzKCkKK3sKKyNpZiBFTkFCTEUo
Q0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OKQorICAgIGlmICghbV9mcmFtZSkKKyAgICAgICAgcmV0
dXJuOworICAgIFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CisgICAgaWYgKCFwYWdlKQor
ICAgICAgICByZXR1cm47CisjZW5kaWYKKworICAgIEdlb05vdGlmaWVyU2V0Ojpjb25zdF9pdGVy
YXRvciBlbmQgPSBtX3BlbmRpbmdGb3JQZXJtaXNzaW9uTm90aWZpZXJzLmVuZCgpOworICAgIGZv
ciAoR2VvTm90aWZpZXJTZXQ6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBtX3BlbmRpbmdGb3JQZXJt
aXNzaW9uTm90aWZpZXJzLmJlZ2luKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKKyAgICAgICAg
R2VvTm90aWZpZXIqIG5vdGlmaWVyID0gaXRlci0+Z2V0KCk7CisKKyAgICAgICAgaWYgKGlzQWxs
b3dlZCgpKSB7CisgICAgICAgICAgICAvLyBzdGFydCBhbGwgcGVuZGluZyBub3RpZmljYXRpb24g
cmVxdWVzdHMgYXMgcGVybWlzc2lvbiBncmFudGVkLgorICAgICAgICAgICAgLy8gVGhlIG5vdGlm
aWVyIGlzIGFsd2F5cyByZWYnZWQgYnkgbV9vbmVTaG90cyBvciBtX3dhdGNoZXJzLgorI2lmIEVO
QUJMRShDTElFTlRfQkFTRURfR0VPTE9DQVRJT04pCisgICAgICAgICAgICBub3RpZmllci0+c3Rh
cnRUaW1lcklmTmVlZGVkKCk7CisgICAgICAgICAgICBwYWdlLT5nZW9sb2NhdGlvbkNvbnRyb2xs
ZXIoKS0+YWRkT2JzZXJ2ZXIodGhpcywgbm90aWZpZXItPm1fb3B0aW9ucy0+ZW5hYmxlSGlnaEFj
Y3VyYWN5KCkpOworI2VuZGlmCisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgbm90aWZpZXIt
PnNldEZhdGFsRXJyb3IoUG9zaXRpb25FcnJvcjo6Y3JlYXRlKFBvc2l0aW9uRXJyb3I6OlBFUk1J
U1NJT05fREVOSUVELCBwZXJtaXNzaW9uRGVuaWVkRXJyb3JNZXNzYWdlKSk7CisgICAgfQorfQor
I2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2Vsc2UKSW5kZXg6IFdlYkNvcmUv
cGFnZS9HZW9sb2NhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9HZW9sb2NhdGlv
bi5oCShyZXZpc2lvbiA2NDkzNCkKKysrIFdlYkNvcmUvcGFnZS9HZW9sb2NhdGlvbi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNDQsNiArMTQ0LDEwIEBAIHByaXZhdGU6CiAgICAgYm9vbCBzdGFydFVw
ZGF0aW5nKEdlb05vdGlmaWVyKik7CiAgICAgdm9pZCBzdG9wVXBkYXRpbmcoKTsKIAorI2lmIFVT
RShQUkVFTVBUX0dFT0xPQ0FUSU9OX1BFUk1JU1NJT04pCisgICAgdm9pZCBoYW5kbGVQZW5kaW5n
UGVybWlzc2lvbk5vdGlmaWVycygpOworI2VuZGlmCisKICNpZiAhRU5BQkxFKENMSUVOVF9CQVNF
RF9HRU9MT0NBVElPTikgJiYgRU5BQkxFKEdFT0xPQ0FUSU9OKQogICAgIC8vIEdlb2xvY2F0aW9u
U2VydmljZUNsaWVudAogICAgIHZpcnR1YWwgdm9pZCBnZW9sb2NhdGlvblNlcnZpY2VQb3NpdGlv
bkNoYW5nZWQoR2VvbG9jYXRpb25TZXJ2aWNlKik7CkBAIC0xNjcsNyArMTcxLDcgQEAgcHJpdmF0
ZToKICAgICBPd25QdHI8R2VvbG9jYXRpb25TZXJ2aWNlPiBtX3NlcnZpY2U7CiAjZW5kaWYKICNp
ZiBVU0UoUFJFRU1QVF9HRU9MT0NBVElPTl9QRVJNSVNTSU9OKQotICAgIFJlZlB0cjxHZW9Ob3Rp
Zmllcj4gbV9zdGFydFJlcXVlc3RQZXJtaXNzaW9uTm90aWZpZXI7CisgICAgR2VvTm90aWZpZXJT
ZXQgbV9wZW5kaW5nRm9yUGVybWlzc2lvbk5vdGlmaWVyczsKICNlbmRpZgogICAgIFJlZlB0cjxH
ZW9wb3NpdGlvbj4gbV9sYXN0UG9zaXRpb247CiAKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDY1MDYzKQor
KysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjcgQEAK
KzIwMTAtMDgtMTAgIE1haGVzaCBLdWxrYXJuaSAgPG1haGVzaC5rdWxrYXJuaUBub2tpYS5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQyODExCisgICAgICAgIEdlb2xvY2F0
aW9uIHByZWVtcHRpdmUgcGVybWlzc2lvbnMgcG9saWN5IGlzIGJ1Z2d5CisKKyAgICAgICAgQWRk
cyBjYXNlcyB3aGVyZSBwZXJtaXNzaW9uIGlzIG5pZXRoZXIgZGVuaWVkIG9yIGdyYW50ZWQgaW1t
ZWRpYXRlbHkgYW5kIG11bHRpcGxlCisgICAgICAgIHJlcXVlc3RzIGFyZSB3YWl0aW5nLgorCisg
ICAgICAgICogZmFzdC9kb20vR2VvbG9jYXRpb24vZGVsYXllZC1tdWx0aXBsZS1wZXJtaXNzaW9u
cy1hbGxvd2VkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vR2VvbG9j
YXRpb24vZGVsYXllZC1tdWx0aXBsZS1wZXJtaXNzaW9ucy1hbGxvd2VkLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvZG9tL0dlb2xvY2F0aW9uL2RlbGF5ZWQtbXVsdGlwbGUtcGVybWlzc2lv
bnMtZGVuaWVkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vR2VvbG9j
YXRpb24vZGVsYXllZC1tdWx0aXBsZS1wZXJtaXNzaW9ucy1kZW5pZWQuaHRtbDogQWRkZWQuCisg
ICAgICAgICogZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL2RlbGF5ZWQtbXVsdGlw
bGUtcGVybWlzc2lvbnMtYWxsb3dlZC5qczogQWRkZWQuCisgICAgICAgIChhbGxvd1Blcm1pc3Np
b24pOgorICAgICAgICAoKToKKyAgICAgICAgKG1heWJlRmluaXNoVGVzdCk6CisgICAgICAgICog
ZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL2RlbGF5ZWQtbXVsdGlwbGUtcGVybWlz
c2lvbnMtZGVuaWVkLmpzOiBBZGRlZC4KKyAgICAgICAgKGRlbnlQZXJtaXNzaW9uKToKKyAgICAg
ICAgKG1heWJlRmluaXNoVGVzdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1NraXBwZWQ6Cisg
ICAgICAgICogcGxhdGZvcm0vcXQvU2tpcHBlZDoKKwogMjAxMC0wOC0xMCAgWW9zaGlraSBIYXlh
c2hpICA8eWhheWFzaGlAZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW50IFRh
bXVyYS4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL2RlbGF5ZWQtbXVs
dGlwbGUtcGVybWlzc2lvbnMtYWxsb3dlZC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vZGVsYXllZC1tdWx0aXBsZS1wZXJtaXNzaW9u
cy1hbGxvd2VkLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
ZG9tL0dlb2xvY2F0aW9uL2RlbGF5ZWQtbXVsdGlwbGUtcGVybWlzc2lvbnMtYWxsb3dlZC1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTEgQEAKK1Rlc3RzIHRoYXQgd2hlbiBh
IHBvc2l0aW9uIGlzIGF2YWlsYWJsZSwgbm8gY2FsbGJhY2tzIGFyZSBpbnZva2VkIHVudGlsIHBl
cm1pc3Npb24gaXMgYWxsb3dlZC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BB
U1MgU3VjY2VzcyBjYWxsYmFjayBpbnZva2VkCitQQVNTIFN1Y2Nlc3MgY2FsbGJhY2sgaW52b2tl
ZAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL2RlbGF5ZWQtbXVsdGlwbGUtcGVy
bWlzc2lvbnMtYWxsb3dlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9t
L0dlb2xvY2F0aW9uL2RlbGF5ZWQtbXVsdGlwbGUtcGVybWlzc2lvbnMtYWxsb3dlZC5odG1sCShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vZGVsYXllZC1t
dWx0aXBsZS1wZXJtaXNzaW9ucy1hbGxvd2VkLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MTMgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxo
dG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2pzL3Jlc291
cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2Ny
aXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJzY3Jp
cHQtdGVzdHMvZGVsYXllZC1tdWx0aXBsZS1wZXJtaXNzaW9ucy1hbGxvd2VkLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xv
Y2F0aW9uL2RlbGF5ZWQtbXVsdGlwbGUtcGVybWlzc2lvbnMtZGVuaWVkLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9kZWxheWVkLW11
bHRpcGxlLXBlcm1pc3Npb25zLWRlbmllZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9kZWxheWVkLW11bHRpcGxlLXBlcm1pc3Np
b25zLWRlbmllZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTMgQEAKK1Rl
c3RzIHRoYXQgd2hlbiBhIHBvc2l0aW9uIGlzIGF2YWlsYWJsZSwgbm8gY2FsbGJhY2tzIGFyZSBp
bnZva2VkIHVudGlsIHBlcm1pc3Npb24gaXMgZGVuaWVkLgorCitPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCisKKworUEFTUyBlcnJvci5jb2RlIGlzIGVycm9yLlBFUk1JU1NJT05fREVOSUVECitQ
QVNTIGVycm9yLm1lc3NhZ2UgaXMgIlVzZXIgZGVuaWVkIEdlb2xvY2F0aW9uIgorUEFTUyBlcnJv
ci5jb2RlIGlzIGVycm9yLlBFUk1JU1NJT05fREVOSUVECitQQVNTIGVycm9yLm1lc3NhZ2UgaXMg
IlVzZXIgZGVuaWVkIEdlb2xvY2F0aW9uIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0
aW9uL2RlbGF5ZWQtbXVsdGlwbGUtcGVybWlzc2lvbnMtZGVuaWVkLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vZGVsYXllZC1tdWx0aXBsZS1wZXJt
aXNzaW9ucy1kZW5pZWQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9t
L0dlb2xvY2F0aW9uL2RlbGF5ZWQtbXVsdGlwbGUtcGVybWlzc2lvbnMtZGVuaWVkLmh0bWwJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVU
Ri8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvZGVsYXllZC1tdWx0aXBsZS1wZXJtaXNzaW9u
cy1kZW5pZWQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL2RlbGF5ZWQtbXVsdGlwbGUt
cGVybWlzc2lvbnMtYWxsb3dlZC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvZGVsYXllZC1tdWx0aXBsZS1wZXJtaXNzaW9ucy1h
bGxvd2VkLmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRp
b24vc2NyaXB0LXRlc3RzL2RlbGF5ZWQtbXVsdGlwbGUtcGVybWlzc2lvbnMtYWxsb3dlZC5qcwko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MSBAQAorZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQgd2hl
biBtdWx0aXBsZSBwb3NpdGlvbnMgYXJlIGF2YWlsYWJsZSwgbm8gY2FsbGJhY2tzIGFyZSBpbnZv
a2VkIHVudGlsIHBlcm1pc3Npb24gaXMgYWxsb3dlZC4iKTsKKworaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikKKyAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9ja0dl
b2xvY2F0aW9uUG9zaXRpb24oNTEuNDc4LCAtMC4xNjYsIDEwMCk7CisKK2Z1bmN0aW9uIGFsbG93
UGVybWlzc2lvbigpIHsKKyAgICBwZXJtaXNzaW9uU2V0ID0gdHJ1ZTsKKyAgICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRH
ZW9sb2NhdGlvblBlcm1pc3Npb24odHJ1ZSk7Cit9CisKK3ZhciB3YXRjaENhbGxiYWNrSW52b2tl
ZCA9IGZhbHNlOwordmFyIG9uZVNob3RDYWxsYmFja0ludm9rZWQgPSBmYWxzZTsKKworbmF2aWdh
dG9yLmdlb2xvY2F0aW9uLndhdGNoUG9zaXRpb24oZnVuY3Rpb24oKSB7CisgICAgaWYgKHBlcm1p
c3Npb25TZXQpIHsKKyAgICAgICAgdGVzdFBhc3NlZCgnU3VjY2VzcyBjYWxsYmFjayBpbnZva2Vk
Jyk7CisgICAgICAgIHdhdGNoQ2FsbGJhY2tJbnZva2VkID0gdHJ1ZTsKKyAgICAgICAgbWF5YmVG
aW5pc2hUZXN0KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgdGVzdEZhaWxlZCgnU3Vj
Y2VzcyBjYWxsYmFjayBpbnZva2VkIHVuZXhwZWN0ZWRseScpOworICAgIGZpbmlzaEpTVGVzdCgp
OworfSwgZnVuY3Rpb24oZXJyKSB7CisgICAgdGVzdEZhaWxlZCgnRXJyb3IgY2FsbGJhY2sgaW52
b2tlZCB1bmV4cGVjdGVkbHknKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30pOworCituYXZpZ2F0
b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKGZ1bmN0aW9uKCkgeworICAgIGlmIChw
ZXJtaXNzaW9uU2V0KSB7CisgICAgICAgIHRlc3RQYXNzZWQoJ1N1Y2Nlc3MgY2FsbGJhY2sgaW52
b2tlZCcpOworICAgICAgICBvbmVTaG90Q2FsbGJhY2tJbnZva2VkID0gdHJ1ZTsKKyAgICAgICAg
bWF5YmVGaW5pc2hUZXN0KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgdGVzdEZhaWxl
ZCgnU3VjY2VzcyBjYWxsYmFjayBpbnZva2VkIHVuZXhwZWN0ZWRseScpOworICAgIGZpbmlzaEpT
VGVzdCgpOworfSwgZnVuY3Rpb24oZXJyKSB7CisgICAgdGVzdEZhaWxlZCgnRXJyb3IgY2FsbGJh
Y2sgaW52b2tlZCB1bmV4cGVjdGVkbHknKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30pOworCit3
aW5kb3cuc2V0VGltZW91dChhbGxvd1Blcm1pc3Npb24sIDEwMCk7CisKK2Z1bmN0aW9uIG1heWJl
RmluaXNoVGVzdCgpIHsKKyAgICBpZiAod2F0Y2hDYWxsYmFja0ludm9rZWQgJiYgb25lU2hvdENh
bGxiYWNrSW52b2tlZCkKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3dpbmRvdy5qc1Rl
c3RJc0FzeW5jID0gdHJ1ZTsKK3dpbmRvdy5zdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL2RlbGF5ZWQt
bXVsdGlwbGUtcGVybWlzc2lvbnMtZGVuaWVkLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9kZWxheWVkLW11bHRpcGxlLXBlcm1p
c3Npb25zLWRlbmllZC5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0dl
b2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9kZWxheWVkLW11bHRpcGxlLXBlcm1pc3Npb25zLWRlbmll
ZC5qcwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NSBAQAorZGVzY3JpcHRpb24oIlRlc3RzIHRo
YXQgd2hlbiBtdWx0aXBsZSBwb3NpdGlvbnMgYXJlIGF2YWlsYWJsZSwgbm8gY2FsbGJhY2tzIGFy
ZSBpbnZva2VkIHVudGlsIHBlcm1pc3Npb24gaXMgZGVuaWVkLiIpOworCitpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQorICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5zZXRN
b2NrR2VvbG9jYXRpb25Qb3NpdGlvbig1MS40NzgsIC0wLjE2NiwgMTAwKTsKKworZnVuY3Rpb24g
ZGVueVBlcm1pc3Npb24oKSB7CisgICAgcGVybWlzc2lvblNldCA9IHRydWU7CisgICAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
c2V0R2VvbG9jYXRpb25QZXJtaXNzaW9uKGZhbHNlKTsKK30KKwordmFyIHdhdGNoQ2FsbGJhY2tJ
bnZva2VkID0gZmFsc2U7Cit2YXIgb25lU2hvdENhbGxiYWNrSW52b2tlZCA9IGZhbHNlOwordmFy
IGVycm9yOworCituYXZpZ2F0b3IuZ2VvbG9jYXRpb24ud2F0Y2hQb3NpdGlvbihmdW5jdGlvbigp
IHsKKyAgICB0ZXN0RmFpbGVkKCdTdWNjZXNzIGNhbGxiYWNrIGludm9rZWQgdW5leHBlY3RlZGx5
Jyk7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9LCBmdW5jdGlvbihlKSB7CisgICAgaWYgKHBlcm1p
c3Npb25TZXQpIHsKKyAgICAgICAgZXJyb3IgPSBlOworICAgICAgICBzaG91bGRCZSgnZXJyb3Iu
Y29kZScsICdlcnJvci5QRVJNSVNTSU9OX0RFTklFRCcpOworICAgICAgICBzaG91bGRCZSgnZXJy
b3IubWVzc2FnZScsICciVXNlciBkZW5pZWQgR2VvbG9jYXRpb24iJyk7CisgICAgICAgIHdhdGNo
Q2FsbGJhY2tJbnZva2VkID0gdHJ1ZTsKKyAgICAgICAgbWF5YmVGaW5pc2hUZXN0KCk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisgICAgdGVzdEZhaWxlZCgnRXJyb3IgY2FsbGJhY2sgaW52b2tl
ZCB1bmV4cGVjdGVkbHknKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30pOworCituYXZpZ2F0b3Iu
Z2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKGZ1bmN0aW9uKCkgeworICAgIHRlc3RGYWls
ZWQoJ1N1Y2Nlc3MgY2FsbGJhY2sgaW52b2tlZCB1bmV4cGVjdGVkbHknKTsKKyAgICBmaW5pc2hK
U1Rlc3QoKTsKK30sIGZ1bmN0aW9uKGUpIHsKKyAgICBpZiAocGVybWlzc2lvblNldCkgeworICAg
ICAgICBlcnJvciA9IGU7CisgICAgICAgIHNob3VsZEJlKCdlcnJvci5jb2RlJywgJ2Vycm9yLlBF
Uk1JU1NJT05fREVOSUVEJyk7CisgICAgICAgIHNob3VsZEJlKCdlcnJvci5tZXNzYWdlJywgJyJV
c2VyIGRlbmllZCBHZW9sb2NhdGlvbiInKTsKKyAgICAgICAgb25lU2hvdENhbGxiYWNrSW52b2tl
ZCA9IHRydWU7CisgICAgICAgIG1heWJlRmluaXNoVGVzdCgpOyAgICAgICAgCisgICAgICAgIHJl
dHVybjsKKyAgICB9CisgICAgdGVzdEZhaWxlZCgnRXJyb3IgY2FsbGJhY2sgaW52b2tlZCB1bmV4
cGVjdGVkbHknKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30pOword2luZG93LnNldFRpbWVvdXQo
ZGVueVBlcm1pc3Npb24sIDEwMCk7CisKK2Z1bmN0aW9uIG1heWJlRmluaXNoVGVzdCgpIHsKKyAg
ICBpZiAod2F0Y2hDYWxsYmFja0ludm9rZWQgJiYgb25lU2hvdENhbGxiYWNrSW52b2tlZCkKKyAg
ICAgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsK
K3dpbmRvdy5zdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpJbmRleDogTGF5b3V0VGVzdHMvcGxh
dGZvcm0vZ3RrL1NraXBwZWQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3Rr
L1NraXBwZWQJKHJldmlzaW9uIDY0OTM0KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Nr
aXBwZWQJKHdvcmtpbmcgY29weSkKQEAgLTEwOTEsNiArMTA5MSw4IEBAIGZhc3QvZG9tL0Rldmlj
ZU9yaWVudGF0aW9uL3dpbmRvdy1wcm9wZXIKIGZhc3QvZG9tL0dlb2xvY2F0aW9uL2NhbGxiYWNr
LWV4Y2VwdGlvbi5odG1sCiBmYXN0L2RvbS9HZW9sb2NhdGlvbi9kZWxheWVkLXBlcm1pc3Npb24t
YWxsb3dlZC5odG1sCiBmYXN0L2RvbS9HZW9sb2NhdGlvbi9kZWxheWVkLXBlcm1pc3Npb24tZGVu
aWVkLmh0bWwKK2Zhc3QvZG9tL0dlb2xvY2F0aW9uL2RlbGF5ZWQtbXVsdGlwbGUtcGVybWlzc2lv
bnMtYWxsb3dlZC5odG1sCitmYXN0L2RvbS9HZW9sb2NhdGlvbi9kZWxheWVkLW11bHRpcGxlLXBl
cm1pc3Npb25zLWRlbmllZC5odG1sCiBmYXN0L2RvbS9HZW9sb2NhdGlvbi9lcnJvci5odG1sCiBm
YXN0L2RvbS9HZW9sb2NhdGlvbi9tdWx0aXBsZS1yZXF1ZXN0cy5odG1sCiBmYXN0L2RvbS9HZW9s
b2NhdGlvbi9wZXJtaXNzaW9uLWRlbmllZC1hbHJlYWR5LWNsZWFyLXdhdGNoLmh0bWwKSW5kZXg6
IExheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvcGxhdGZvcm0vcXQvU2tpcHBlZAkocmV2aXNpb24gNjQ5MzQpCisrKyBMYXlvdXRUZXN0cy9w
bGF0Zm9ybS9xdC9Ta2lwcGVkCSh3b3JraW5nIGNvcHkpCkBAIC01NDkzLDYgKzU0OTMsOCBAQCBm
YXN0L2V2ZW50cy9zcGVjaWFsLWtleS1ldmVudHMtaW4taW5wdXQtCiAjIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MzQ3OAogZmFzdC9kb20vR2VvbG9jYXRpb24vZGVs
YXllZC1wZXJtaXNzaW9uLWFsbG93ZWQuaHRtbAogZmFzdC9kb20vR2VvbG9jYXRpb24vZGVsYXll
ZC1wZXJtaXNzaW9uLWRlbmllZC5odG1sCitmYXN0L2RvbS9HZW9sb2NhdGlvbi9kZWxheWVkLW11
bHRpcGxlLXBlcm1pc3Npb25zLWFsbG93ZWQuaHRtbAorZmFzdC9kb20vR2VvbG9jYXRpb24vZGVs
YXllZC1tdWx0aXBsZS1wZXJtaXNzaW9ucy1kZW5pZWQuaHRtbAogCiAjIEJsb2RCdWlsZGVyIGlz
IG5vdCBlbmFibGVkCiBodHRwL3Rlc3RzL2xvY2FsL2Jsb2Ivc2VuZC1kYXRhLWJsb2IuaHRtbAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64094</attachid>
            <date>2010-08-11 04:26:37 -0700</date>
            <delta_ts>2010-08-17 01:21:19 -0700</delta_ts>
            <desc>patch</desc>
            <filename>42811.patch</filename>
            <type>text/plain</type>
            <size>16607</size>
            <attacher name="Mahesh Kulkarni">maheshk</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NTE0NSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjcgQEAKKzIwMTAtMDgtMTEgIE1haGVzaCBLdWxrYXJuaSAgPG1haGVzaC5rdWxr
YXJuaUBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgR2VvbG9jYXRpb24gcHJlZW1wdGl2ZSBwZXJtaXNzaW9ucyBwb2xpY3kgaXMgYnVn
Z3kKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQyODEx
CisKKyAgICAgICAgV2hpbGUgd2FpdGluZyBmb3IgcGVybWlzc2lvbiwgbV9zdGFydFJlcXVlc3RQ
ZXJtaXNzaW9uTm90aWZpZXIgd2FzIAorICAgICAgICB1c2VkIHRvIGNvbnNpZGVyIG9ubHkgb25l
IHBlbmRpbmcgcmVxdWVzdC4gVGhpcyBwYXRjaCBpbXBsZW1lbnRzIGEgc2V0CisgICAgICAgIG1f
cGVuZGluZ0ZvclBlcm1pc3Npb25Ob3RpZmllcnMgdG8gbWFpbnRhaW4gc2V0IG9mIHBlbmRpbmcg
cmVxdWVzdHMuIAorICAgICAgICBXaGVuIHVzZXIgZ3JhbnRzL2RlbmllcyBwZXJtaXNzaW9uIGFs
bCBsaXN0ZW5lcidzIHdpbGwgYmUgbm90aWZpZWQuIAorICAgICAgICBBbHNvIGZpeGVkIGlzc3Vl
IHdpdGggaGFzWmVyb1RpbWVvdXQoKSB3aGVyZSBzdGFydFRpbWVySWZOZWVkZWQoKSBoYXMKKyAg
ICAgICAgdG8gc3RhcnQgaXJyZXNwZWN0aXZlIG9mIHBlcm1pc3Npb24gc3RhdGUuCisKKyAgICAg
ICAgVGVzdHM6IGZhc3QvZG9tL0dlb2xvY2F0aW9uL2RlbGF5ZWQtbXVsdGlwbGUtcGVybWlzc2lv
bnMtYWxsb3dlZC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9HZW9sb2NhdGlvbi9kZWxh
eWVkLW11bHRpcGxlLXBlcm1pc3Npb25zLWRlbmllZC5odG1sCisKKyAgICAgICAgKiBwYWdlL0dl
b2xvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uOjpzdGFydFJlcXVl
c3QpOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246OnNldElzQWxsb3dlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbjo6c3RhcnRVcGRhdGluZyk6CisgICAgICAgIChXZWJD
b3JlOjpHZW9sb2NhdGlvbjo6aGFuZGxlUGVuZGluZ1Blcm1pc3Npb25Ob3RpZmllcnMpOgorICAg
ICAgICAqIHBhZ2UvR2VvbG9jYXRpb24uaDoKKwogMjAxMC0wOC0xMSAgSnVsaWUgUGFyZW50ICA8
anBhcmVudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgSnVzdGluIEdhcmNp
YS4KSW5kZXg6IFdlYkNvcmUvcGFnZS9HZW9sb2NhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9wYWdlL0dlb2xvY2F0aW9uLmNwcAkocmV2aXNpb24gNjQ5MzQpCisrKyBXZWJDb3JlL3Bh
Z2UvR2VvbG9jYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzgsMTMgKzI3OCwxOCBAQCBQ
YXNzUmVmUHRyPEdlb2xvY2F0aW9uOjpHZW9Ob3RpZmllcj4gR2VvCiAgICAgICAgIG5vdGlmaWVy
LT5zZXRGYXRhbEVycm9yKFBvc2l0aW9uRXJyb3I6OmNyZWF0ZShQb3NpdGlvbkVycm9yOjpQRVJN
SVNTSU9OX0RFTklFRCwgcGVybWlzc2lvbkRlbmllZEVycm9yTWVzc2FnZSkpOwogICAgIGVsc2Ug
aWYgKGhhdmVTdWl0YWJsZUNhY2hlZFBvc2l0aW9uKG5vdGlmaWVyLT5tX29wdGlvbnMuZ2V0KCkp
KQogICAgICAgICBub3RpZmllci0+c2V0VXNlQ2FjaGVkUG9zaXRpb24oKTsKLSAgICBlbHNlIGlm
IChub3RpZmllci0+aGFzWmVyb1RpbWVvdXQoKSB8fCBzdGFydFVwZGF0aW5nKG5vdGlmaWVyLmdl
dCgpKSkgeworICAgIGVsc2UgaWYgKG5vdGlmaWVyLT5oYXNaZXJvVGltZW91dCgpKQorICAgICAg
ICBub3RpZmllci0+c3RhcnRUaW1lcklmTmVlZGVkKCk7CiAjaWYgVVNFKFBSRUVNUFRfR0VPTE9D
QVRJT05fUEVSTUlTU0lPTikKLSAgICAgICAgLy8gT25seSBzdGFydCB0aW1lciBpZiB3ZSdyZSBu
b3Qgd2FpdGluZyBmb3IgdXNlciBwZXJtaXNzaW9uLgotICAgICAgICBpZiAoIW1fc3RhcnRSZXF1
ZXN0UGVybWlzc2lvbk5vdGlmaWVyKQotI2VuZGlmICAgICAgICAgICAgCi0gICAgICAgICAgICBu
b3RpZmllci0+c3RhcnRUaW1lcklmTmVlZGVkKCk7Ci0gICAgfSBlbHNlCisgICAgZWxzZSBpZiAo
IWlzQWxsb3dlZCgpKSB7CisgICAgICAgIC8vIGlmIHdlIGRvbid0IHlldCBoYXZlIHBlcm1pc3Np
b24sIHJlcXVlc3QgZm9yIHBlcm1pc3Npb24gYmVmb3JlIGNhbGxpbmcgc3RhcnRVcGRhdGluZygp
CisgICAgICAgIG1fcGVuZGluZ0ZvclBlcm1pc3Npb25Ob3RpZmllcnMuYWRkKG5vdGlmaWVyKTsK
KyAgICAgICAgcmVxdWVzdFBlcm1pc3Npb24oKTsKKyAgICB9CisjZW5kaWYKKyAgICBlbHNlIGlm
IChzdGFydFVwZGF0aW5nKG5vdGlmaWVyLmdldCgpKSkKKyAgICAgICAgbm90aWZpZXItPnN0YXJ0
VGltZXJJZk5lZWRlZCgpOworICAgIGVsc2UKICAgICAgICAgbm90aWZpZXItPnNldEZhdGFsRXJy
b3IoUG9zaXRpb25FcnJvcjo6Y3JlYXRlKFBvc2l0aW9uRXJyb3I6OlBPU0lUSU9OX1VOQVZBSUxB
QkxFLCBmYWlsZWRUb1N0YXJ0U2VydmljZUVycm9yTWVzc2FnZSkpOwogCiAgICAgcmV0dXJuIG5v
dGlmaWVyLnJlbGVhc2UoKTsKQEAgLTQwMSwyOCArNDA2LDEwIEBAIHZvaWQgR2VvbG9jYXRpb246
OnNldElzQWxsb3dlZChib29sIGFsbG8KICAgICBtX2FsbG93R2VvbG9jYXRpb24gPSBhbGxvd2Vk
ID8gWWVzIDogTm87CiAgICAgCiAjaWYgVVNFKFBSRUVNUFRfR0VPTE9DQVRJT05fUEVSTUlTU0lP
TikKLSAgICBpZiAobV9zdGFydFJlcXVlc3RQZXJtaXNzaW9uTm90aWZpZXIpIHsKLSAgICAgICAg
aWYgKGlzQWxsb3dlZCgpKSB7Ci0gICAgICAgICAgICAvLyBQZXJtaXNzaW9uIHJlcXVlc3Qgd2Fz
IG1hZGUgZHVyaW5nIHRoZSBzdGFydFVwZGF0aW5nIHByb2Nlc3MKLSAgICAgICAgICAgIG1fc3Rh
cnRSZXF1ZXN0UGVybWlzc2lvbk5vdGlmaWVyLT5zdGFydFRpbWVySWZOZWVkZWQoKTsKLSAgICAg
ICAgICAgIC8vIFRoZSBub3RpZmllciBpcyBhbHdheXMgcmVmJ2VkIGJ5IG1fb25lU2hvdHMgb3Ig
bV93YXRjaGVycy4KLSAgICAgICAgICAgIEdlb05vdGlmaWVyKiBub3RpZmllciA9IG1fc3RhcnRS
ZXF1ZXN0UGVybWlzc2lvbk5vdGlmaWVyLmdldCgpOwotICAgICAgICAgICAgbV9zdGFydFJlcXVl
c3RQZXJtaXNzaW9uTm90aWZpZXIgPSAwOwotI2lmIEVOQUJMRShDTElFTlRfQkFTRURfR0VPTE9D
QVRJT04pCi0gICAgICAgICAgICBpZiAoIW1fZnJhbWUpCi0gICAgICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICAgICAgUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKLSAgICAgICAgICAg
IGlmICghcGFnZSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBwYWdlLT5n
ZW9sb2NhdGlvbkNvbnRyb2xsZXIoKS0+YWRkT2JzZXJ2ZXIodGhpcywgbm90aWZpZXItPm1fb3B0
aW9ucy0+ZW5hYmxlSGlnaEFjY3VyYWN5KCkpOwotI2Vsc2UKLSAgICAgICAgICAgIC8vIFRPRE86
IEhhbmRsZSBzdGFydFVwZGF0ZSgpIGZvciBub24tY2xpZW50IGJhc2VkIGltcGxlbWVudGF0aW9u
cyB1c2luZyBwcmUtZW1wdGl2ZSBwb2xpY3kKLSNlbmRpZgotICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgbV9zdGFydFJlcXVlc3RQZXJtaXNzaW9uTm90aWZpZXItPnNldEZhdGFsRXJyb3Io
UG9zaXRpb25FcnJvcjo6Y3JlYXRlKFBvc2l0aW9uRXJyb3I6OlBFUk1JU1NJT05fREVOSUVELCBw
ZXJtaXNzaW9uRGVuaWVkRXJyb3JNZXNzYWdlKSk7Ci0gICAgICAgICAgICBtX29uZVNob3RzLmFk
ZChtX3N0YXJ0UmVxdWVzdFBlcm1pc3Npb25Ob3RpZmllcik7Ci0gICAgICAgICAgICBtX3N0YXJ0
UmVxdWVzdFBlcm1pc3Npb25Ob3RpZmllciA9IDA7Ci0gICAgICAgIH0KKyAgICAvLyBQZXJtaXNz
aW9uIHJlcXVlc3Qgd2FzIG1hZGUgZHVyaW5nIHRoZSBzdGFydFJlcXVlc3QgcHJvY2VzcworICAg
IGlmICghbV9wZW5kaW5nRm9yUGVybWlzc2lvbk5vdGlmaWVycy5pc0VtcHR5KCkpIHsKKyAgICAg
ICAgaGFuZGxlUGVuZGluZ1Blcm1pc3Npb25Ob3RpZmllcnMoKTsKKyAgICAgICAgbV9wZW5kaW5n
Rm9yUGVybWlzc2lvbk5vdGlmaWVycy5jbGVhcigpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
I2VuZGlmCkBAIC02MTgsMTQgKzYwNSw2IEBAIHZvaWQgR2VvbG9jYXRpb246Omdlb2xvY2F0aW9u
U2VydmljZUVycm8KIAogYm9vbCBHZW9sb2NhdGlvbjo6c3RhcnRVcGRhdGluZyhHZW9Ob3RpZmll
ciogbm90aWZpZXIpCiB7Ci0jaWYgVVNFKFBSRUVNUFRfR0VPTE9DQVRJT05fUEVSTUlTU0lPTikK
LSAgICBpZiAoIWlzQWxsb3dlZCgpKSB7Ci0gICAgICAgIG1fc3RhcnRSZXF1ZXN0UGVybWlzc2lv
bk5vdGlmaWVyID0gbm90aWZpZXI7Ci0gICAgICAgIHJlcXVlc3RQZXJtaXNzaW9uKCk7Ci0gICAg
ICAgIHJldHVybiB0cnVlOwotICAgIH0KLSNlbmRpZgotCiAjaWYgRU5BQkxFKENMSUVOVF9CQVNF
RF9HRU9MT0NBVElPTikKICAgICBpZiAoIW1fZnJhbWUpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
QEAgLTY1OCw2ICs2MzcsMzggQEAgdm9pZCBHZW9sb2NhdGlvbjo6c3RvcFVwZGF0aW5nKCkKIAog
fQogCisjaWYgVVNFKFBSRUVNUFRfR0VPTE9DQVRJT05fUEVSTUlTU0lPTikKK3ZvaWQgR2VvbG9j
YXRpb246OmhhbmRsZVBlbmRpbmdQZXJtaXNzaW9uTm90aWZpZXJzKCkKK3sKKyNpZiBFTkFCTEUo
Q0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OKQorICAgIGlmICghbV9mcmFtZSkKKyAgICAgICAgcmV0
dXJuOworICAgIFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CisgICAgaWYgKCFwYWdlKQor
ICAgICAgICByZXR1cm47CisjZW5kaWYKKworICAgIC8vIFdoaWxlIHdlIGl0ZXJhdGUgdGhyb3Vn
aCB0aGUgbGlzdCwgd2UgbmVlZCBub3Qgd29ycnkgYWJvdXQgbGlzdCBiZWluZyBtb2RpZmllZCBh
cyB0aGUgcGVybWlzc2lvbiAKKyAgICAvLyBpcyBhbHJlYWR5IHNldCB0byBZZXMvTm8gYW5kIG5v
IG5ldyBsaXN0ZW5lcnMgd2lsbCBiZSBhZGRlZCB0byB0aGUgcGVuZGluZyBsaXN0CisgICAgR2Vv
Tm90aWZpZXJTZXQ6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fcGVuZGluZ0ZvclBlcm1pc3Npb25O
b3RpZmllcnMuZW5kKCk7CisgICAgZm9yIChHZW9Ob3RpZmllclNldDo6Y29uc3RfaXRlcmF0b3Ig
aXRlciA9IG1fcGVuZGluZ0ZvclBlcm1pc3Npb25Ob3RpZmllcnMuYmVnaW4oKTsgaXRlciAhPSBl
bmQ7ICsraXRlcikgeworICAgICAgICBHZW9Ob3RpZmllciogbm90aWZpZXIgPSBpdGVyLT5nZXQo
KTsKKworICAgICAgICBpZiAoaXNBbGxvd2VkKCkpIHsKKyAgICAgICAgICAgIC8vIHN0YXJ0IGFs
bCBwZW5kaW5nIG5vdGlmaWNhdGlvbiByZXF1ZXN0cyBhcyBwZXJtaXNzaW9uIGdyYW50ZWQuCisg
ICAgICAgICAgICAvLyBUaGUgbm90aWZpZXIgaXMgYWx3YXlzIHJlZidlZCBieSBtX29uZVNob3Rz
IG9yIG1fd2F0Y2hlcnMuCisjaWYgRU5BQkxFKENMSUVOVF9CQVNFRF9HRU9MT0NBVElPTikKKyAg
ICAgICAgICAgIG5vdGlmaWVyLT5zdGFydFRpbWVySWZOZWVkZWQoKTsKKyAgICAgICAgICAgIHBh
Z2UtPmdlb2xvY2F0aW9uQ29udHJvbGxlcigpLT5hZGRPYnNlcnZlcih0aGlzLCBub3RpZmllci0+
bV9vcHRpb25zLT5lbmFibGVIaWdoQWNjdXJhY3koKSk7CisjZWxpZgorICAgICAgICAgICAgLy8g
VE9ETzogSGFuZGxlIHN0YXJ0VXBkYXRlKCkgZm9yIG5vbi1jbGllbnQgYmFzZWQgaW1wbGVtZW50
YXRpb25zIHVzaW5nIHByZS1lbXB0aXZlIHBvbGljeQorI2VuZGlmCisgICAgICAgIH0gZWxzZQor
ICAgICAgICAgICAgbm90aWZpZXItPnNldEZhdGFsRXJyb3IoUG9zaXRpb25FcnJvcjo6Y3JlYXRl
KFBvc2l0aW9uRXJyb3I6OlBFUk1JU1NJT05fREVOSUVELCBwZXJtaXNzaW9uRGVuaWVkRXJyb3JN
ZXNzYWdlKSk7CisgICAgfQorfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAog
I2Vsc2UKSW5kZXg6IFdlYkNvcmUvcGFnZS9HZW9sb2NhdGlvbi5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcGFnZS9HZW9sb2NhdGlvbi5oCShyZXZpc2lvbiA2NDkzNCkKKysrIFdlYkNvcmUvcGFn
ZS9HZW9sb2NhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDQsNiArMTQ0LDEwIEBAIHByaXZh
dGU6CiAgICAgYm9vbCBzdGFydFVwZGF0aW5nKEdlb05vdGlmaWVyKik7CiAgICAgdm9pZCBzdG9w
VXBkYXRpbmcoKTsKIAorI2lmIFVTRShQUkVFTVBUX0dFT0xPQ0FUSU9OX1BFUk1JU1NJT04pCisg
ICAgdm9pZCBoYW5kbGVQZW5kaW5nUGVybWlzc2lvbk5vdGlmaWVycygpOworI2VuZGlmCisKICNp
ZiAhRU5BQkxFKENMSUVOVF9CQVNFRF9HRU9MT0NBVElPTikgJiYgRU5BQkxFKEdFT0xPQ0FUSU9O
KQogICAgIC8vIEdlb2xvY2F0aW9uU2VydmljZUNsaWVudAogICAgIHZpcnR1YWwgdm9pZCBnZW9s
b2NhdGlvblNlcnZpY2VQb3NpdGlvbkNoYW5nZWQoR2VvbG9jYXRpb25TZXJ2aWNlKik7CkBAIC0x
NjcsNyArMTcxLDcgQEAgcHJpdmF0ZToKICAgICBPd25QdHI8R2VvbG9jYXRpb25TZXJ2aWNlPiBt
X3NlcnZpY2U7CiAjZW5kaWYKICNpZiBVU0UoUFJFRU1QVF9HRU9MT0NBVElPTl9QRVJNSVNTSU9O
KQotICAgIFJlZlB0cjxHZW9Ob3RpZmllcj4gbV9zdGFydFJlcXVlc3RQZXJtaXNzaW9uTm90aWZp
ZXI7CisgICAgR2VvTm90aWZpZXJTZXQgbV9wZW5kaW5nRm9yUGVybWlzc2lvbk5vdGlmaWVyczsK
ICNlbmRpZgogICAgIFJlZlB0cjxHZW9wb3NpdGlvbj4gbV9sYXN0UG9zaXRpb247CiAKSW5kZXg6
IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cJKHJldmlzaW9uIDY1MTQ1KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTAtMDgtMTEgIE1haGVzaCBLdWxrYXJuaSAgPG1haGVz
aC5rdWxrYXJuaUBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQy
ODExCisgICAgICAgIEdlb2xvY2F0aW9uIHByZWVtcHRpdmUgcGVybWlzc2lvbnMgcG9saWN5IGlz
IGJ1Z2d5CisKKyAgICAgICAgQWRkcyBjYXNlcyB3aGVyZSBwZXJtaXNzaW9uIGlzIG5pZXRoZXIg
ZGVuaWVkIG9yIGdyYW50ZWQgaW1tZWRpYXRlbHkgYW5kIG11bHRpcGxlCisgICAgICAgIHJlcXVl
c3RzIGFyZSB3YWl0aW5nLgorCisgICAgICAgICogZmFzdC9kb20vR2VvbG9jYXRpb24vZGVsYXll
ZC1tdWx0aXBsZS1wZXJtaXNzaW9ucy1hbGxvd2VkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9kb20vR2VvbG9jYXRpb24vZGVsYXllZC1tdWx0aXBsZS1wZXJtaXNzaW9ucy1h
bGxvd2VkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0dlb2xvY2F0aW9uL2RlbGF5
ZWQtbXVsdGlwbGUtcGVybWlzc2lvbnMtZGVuaWVkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9kb20vR2VvbG9jYXRpb24vZGVsYXllZC1tdWx0aXBsZS1wZXJtaXNzaW9ucy1k
ZW5pZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0
LXRlc3RzL2RlbGF5ZWQtbXVsdGlwbGUtcGVybWlzc2lvbnMtYWxsb3dlZC5qczogQWRkZWQuCisg
ICAgICAgIChhbGxvd1Blcm1pc3Npb24pOgorICAgICAgICAoKToKKyAgICAgICAgKG1heWJlRmlu
aXNoVGVzdCk6CisgICAgICAgICogZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL2Rl
bGF5ZWQtbXVsdGlwbGUtcGVybWlzc2lvbnMtZGVuaWVkLmpzOiBBZGRlZC4KKyAgICAgICAgKGRl
bnlQZXJtaXNzaW9uKToKKyAgICAgICAgKG1heWJlRmluaXNoVGVzdCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3RrL1NraXBwZWQ6CisgICAgICAgICogcGxhdGZvcm0vcXQvU2tpcHBlZDoKKwogMjAx
MC0wOC0xMSAgSnVsaWUgUGFyZW50ICA8anBhcmVudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgSnVzdGluIEdhcmNpYS4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0dl
b2xvY2F0aW9uL2RlbGF5ZWQtbXVsdGlwbGUtcGVybWlzc2lvbnMtYWxsb3dlZC1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vZGVsYXll
ZC1tdWx0aXBsZS1wZXJtaXNzaW9ucy1hbGxvd2VkLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL2RlbGF5ZWQtbXVsdGlwbGUtcGVy
bWlzc2lvbnMtYWxsb3dlZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTEg
QEAKK1Rlc3RzIHRoYXQgd2hlbiBhIHBvc2l0aW9uIGlzIGF2YWlsYWJsZSwgbm8gY2FsbGJhY2tz
IGFyZSBpbnZva2VkIHVudGlsIHBlcm1pc3Npb24gaXMgYWxsb3dlZC4KKworT24gc3VjY2Vzcywg
eW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRF
U1QgQ09NUExFVEUiLgorCisKK1BBU1MgU3VjY2VzcyBjYWxsYmFjayBpbnZva2VkCitQQVNTIFN1
Y2Nlc3MgY2FsbGJhY2sgaW52b2tlZAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9u
L2RlbGF5ZWQtbXVsdGlwbGUtcGVybWlzc2lvbnMtYWxsb3dlZC5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL2RlbGF5ZWQtbXVsdGlwbGUtcGVybWlz
c2lvbnMtYWxsb3dlZC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20v
R2VvbG9jYXRpb24vZGVsYXllZC1tdWx0aXBsZS1wZXJtaXNzaW9ucy1hbGxvd2VkLmh0bWwJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVU
Ri8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvZGVsYXllZC1tdWx0aXBsZS1wZXJtaXNzaW9u
cy1hbGxvd2VkLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL2RlbGF5ZWQtbXVsdGlwbGUtcGVybWlzc2lvbnMt
ZGVuaWVkLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9H
ZW9sb2NhdGlvbi9kZWxheWVkLW11bHRpcGxlLXBlcm1pc3Npb25zLWRlbmllZC1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9kZWxh
eWVkLW11bHRpcGxlLXBlcm1pc3Npb25zLWRlbmllZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMTMgQEAKK1Rlc3RzIHRoYXQgd2hlbiBhIHBvc2l0aW9uIGlzIGF2YWlsYWJs
ZSwgbm8gY2FsbGJhY2tzIGFyZSBpbnZva2VkIHVudGlsIHBlcm1pc3Npb24gaXMgZGVuaWVkLgor
CitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBlcnJvci5jb2RlIGlzIGVycm9y
LlBFUk1JU1NJT05fREVOSUVECitQQVNTIGVycm9yLm1lc3NhZ2UgaXMgIlVzZXIgZGVuaWVkIEdl
b2xvY2F0aW9uIgorUEFTUyBlcnJvci5jb2RlIGlzIGVycm9yLlBFUk1JU1NJT05fREVOSUVECitQ
QVNTIGVycm9yLm1lc3NhZ2UgaXMgIlVzZXIgZGVuaWVkIEdlb2xvY2F0aW9uIgorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL2RlbGF5ZWQtbXVsdGlwbGUtcGVybWlzc2lvbnMtZGVu
aWVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24v
ZGVsYXllZC1tdWx0aXBsZS1wZXJtaXNzaW9ucy1kZW5pZWQuaHRtbAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL2RlbGF5ZWQtbXVsdGlwbGUtcGVybWlz
c2lvbnMtZGVuaWVkLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQ
RSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0
eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvZGVsYXll
ZC1tdWx0aXBsZS1wZXJtaXNzaW9ucy1kZW5pZWQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRl
c3RzL2RlbGF5ZWQtbXVsdGlwbGUtcGVybWlzc2lvbnMtYWxsb3dlZC5qcwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvZGVsYXllZC1t
dWx0aXBsZS1wZXJtaXNzaW9ucy1hbGxvd2VkLmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL2RlbGF5ZWQtbXVsdGlwbGUtcGVy
bWlzc2lvbnMtYWxsb3dlZC5qcwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MSBAQAorZGVzY3Jp
cHRpb24oIlRlc3RzIHRoYXQgd2hlbiBtdWx0aXBsZSBwb3NpdGlvbnMgYXJlIGF2YWlsYWJsZSwg
bm8gY2FsbGJhY2tzIGFyZSBpbnZva2VkIHVudGlsIHBlcm1pc3Npb24gaXMgYWxsb3dlZC4iKTsK
KworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICB3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIuc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24oNTEuNDc4LCAtMC4xNjYsIDEw
MCk7CisKK2Z1bmN0aW9uIGFsbG93UGVybWlzc2lvbigpIHsKKyAgICBwZXJtaXNzaW9uU2V0ID0g
dHJ1ZTsKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5zZXRHZW9sb2NhdGlvblBlcm1pc3Npb24odHJ1ZSk7Cit9CisKK3Zh
ciB3YXRjaENhbGxiYWNrSW52b2tlZCA9IGZhbHNlOwordmFyIG9uZVNob3RDYWxsYmFja0ludm9r
ZWQgPSBmYWxzZTsKKworbmF2aWdhdG9yLmdlb2xvY2F0aW9uLndhdGNoUG9zaXRpb24oZnVuY3Rp
b24oKSB7CisgICAgaWYgKHBlcm1pc3Npb25TZXQpIHsKKyAgICAgICAgdGVzdFBhc3NlZCgnU3Vj
Y2VzcyBjYWxsYmFjayBpbnZva2VkJyk7CisgICAgICAgIHdhdGNoQ2FsbGJhY2tJbnZva2VkID0g
dHJ1ZTsKKyAgICAgICAgbWF5YmVGaW5pc2hUZXN0KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgdGVzdEZhaWxlZCgnU3VjY2VzcyBjYWxsYmFjayBpbnZva2VkIHVuZXhwZWN0ZWRseScp
OworICAgIGZpbmlzaEpTVGVzdCgpOworfSwgZnVuY3Rpb24oZXJyKSB7CisgICAgdGVzdEZhaWxl
ZCgnRXJyb3IgY2FsbGJhY2sgaW52b2tlZCB1bmV4cGVjdGVkbHknKTsKKyAgICBmaW5pc2hKU1Rl
c3QoKTsKK30pOworCituYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKGZ1
bmN0aW9uKCkgeworICAgIGlmIChwZXJtaXNzaW9uU2V0KSB7CisgICAgICAgIHRlc3RQYXNzZWQo
J1N1Y2Nlc3MgY2FsbGJhY2sgaW52b2tlZCcpOworICAgICAgICBvbmVTaG90Q2FsbGJhY2tJbnZv
a2VkID0gdHJ1ZTsKKyAgICAgICAgbWF5YmVGaW5pc2hUZXN0KCk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisgICAgdGVzdEZhaWxlZCgnU3VjY2VzcyBjYWxsYmFjayBpbnZva2VkIHVuZXhwZWN0
ZWRseScpOworICAgIGZpbmlzaEpTVGVzdCgpOworfSwgZnVuY3Rpb24oZXJyKSB7CisgICAgdGVz
dEZhaWxlZCgnRXJyb3IgY2FsbGJhY2sgaW52b2tlZCB1bmV4cGVjdGVkbHknKTsKKyAgICBmaW5p
c2hKU1Rlc3QoKTsKK30pOworCit3aW5kb3cuc2V0VGltZW91dChhbGxvd1Blcm1pc3Npb24sIDEw
MCk7CisKK2Z1bmN0aW9uIG1heWJlRmluaXNoVGVzdCgpIHsKKyAgICBpZiAod2F0Y2hDYWxsYmFj
a0ludm9rZWQgJiYgb25lU2hvdENhbGxiYWNrSW52b2tlZCkKKyAgICAgICAgZmluaXNoSlNUZXN0
KCk7Cit9CisKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK3dpbmRvdy5zdWNjZXNzZnVs
bHlQYXJzZWQgPSB0cnVlOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24v
c2NyaXB0LXRlc3RzL2RlbGF5ZWQtbXVsdGlwbGUtcGVybWlzc2lvbnMtZGVuaWVkLmpzCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9k
ZWxheWVkLW11bHRpcGxlLXBlcm1pc3Npb25zLWRlbmllZC5qcwkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9kZWxheWVkLW11bHRp
cGxlLXBlcm1pc3Npb25zLWRlbmllZC5qcwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NSBAQAor
ZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQgd2hlbiBtdWx0aXBsZSBwb3NpdGlvbnMgYXJlIGF2YWls
YWJsZSwgbm8gY2FsbGJhY2tzIGFyZSBpbnZva2VkIHVudGlsIHBlcm1pc3Npb24gaXMgZGVuaWVk
LiIpOworCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlci5zZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbig1MS40NzgsIC0wLjE2
NiwgMTAwKTsKKworZnVuY3Rpb24gZGVueVBlcm1pc3Npb24oKSB7CisgICAgcGVybWlzc2lvblNl
dCA9IHRydWU7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0R2VvbG9jYXRpb25QZXJtaXNzaW9uKGZhbHNlKTsKK30K
KwordmFyIHdhdGNoQ2FsbGJhY2tJbnZva2VkID0gZmFsc2U7Cit2YXIgb25lU2hvdENhbGxiYWNr
SW52b2tlZCA9IGZhbHNlOwordmFyIGVycm9yOworCituYXZpZ2F0b3IuZ2VvbG9jYXRpb24ud2F0
Y2hQb3NpdGlvbihmdW5jdGlvbigpIHsKKyAgICB0ZXN0RmFpbGVkKCdTdWNjZXNzIGNhbGxiYWNr
IGludm9rZWQgdW5leHBlY3RlZGx5Jyk7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9LCBmdW5jdGlv
bihlKSB7CisgICAgaWYgKHBlcm1pc3Npb25TZXQpIHsKKyAgICAgICAgZXJyb3IgPSBlOworICAg
ICAgICBzaG91bGRCZSgnZXJyb3IuY29kZScsICdlcnJvci5QRVJNSVNTSU9OX0RFTklFRCcpOwor
ICAgICAgICBzaG91bGRCZSgnZXJyb3IubWVzc2FnZScsICciVXNlciBkZW5pZWQgR2VvbG9jYXRp
b24iJyk7CisgICAgICAgIHdhdGNoQ2FsbGJhY2tJbnZva2VkID0gdHJ1ZTsKKyAgICAgICAgbWF5
YmVGaW5pc2hUZXN0KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgdGVzdEZhaWxlZCgn
RXJyb3IgY2FsbGJhY2sgaW52b2tlZCB1bmV4cGVjdGVkbHknKTsKKyAgICBmaW5pc2hKU1Rlc3Qo
KTsKK30pOworCituYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKGZ1bmN0
aW9uKCkgeworICAgIHRlc3RGYWlsZWQoJ1N1Y2Nlc3MgY2FsbGJhY2sgaW52b2tlZCB1bmV4cGVj
dGVkbHknKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30sIGZ1bmN0aW9uKGUpIHsKKyAgICBpZiAo
cGVybWlzc2lvblNldCkgeworICAgICAgICBlcnJvciA9IGU7CisgICAgICAgIHNob3VsZEJlKCdl
cnJvci5jb2RlJywgJ2Vycm9yLlBFUk1JU1NJT05fREVOSUVEJyk7CisgICAgICAgIHNob3VsZEJl
KCdlcnJvci5tZXNzYWdlJywgJyJVc2VyIGRlbmllZCBHZW9sb2NhdGlvbiInKTsKKyAgICAgICAg
b25lU2hvdENhbGxiYWNrSW52b2tlZCA9IHRydWU7CisgICAgICAgIG1heWJlRmluaXNoVGVzdCgp
OyAgICAgICAgCisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgdGVzdEZhaWxlZCgnRXJyb3Ig
Y2FsbGJhY2sgaW52b2tlZCB1bmV4cGVjdGVkbHknKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30p
Oword2luZG93LnNldFRpbWVvdXQoZGVueVBlcm1pc3Npb24sIDEwMCk7CisKK2Z1bmN0aW9uIG1h
eWJlRmluaXNoVGVzdCgpIHsKKyAgICBpZiAod2F0Y2hDYWxsYmFja0ludm9rZWQgJiYgb25lU2hv
dENhbGxiYWNrSW52b2tlZCkKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3dpbmRvdy5q
c1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK3dpbmRvdy5zdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpJ
bmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQJKHJldmlzaW9uIDY0OTM0KQorKysgTGF5b3V0
VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQJKHdvcmtpbmcgY29weSkKQEAgLTEwOTEsNiArMTA5
MSw4IEBAIGZhc3QvZG9tL0RldmljZU9yaWVudGF0aW9uL3dpbmRvdy1wcm9wZXIKIGZhc3QvZG9t
L0dlb2xvY2F0aW9uL2NhbGxiYWNrLWV4Y2VwdGlvbi5odG1sCiBmYXN0L2RvbS9HZW9sb2NhdGlv
bi9kZWxheWVkLXBlcm1pc3Npb24tYWxsb3dlZC5odG1sCiBmYXN0L2RvbS9HZW9sb2NhdGlvbi9k
ZWxheWVkLXBlcm1pc3Npb24tZGVuaWVkLmh0bWwKK2Zhc3QvZG9tL0dlb2xvY2F0aW9uL2RlbGF5
ZWQtbXVsdGlwbGUtcGVybWlzc2lvbnMtYWxsb3dlZC5odG1sCitmYXN0L2RvbS9HZW9sb2NhdGlv
bi9kZWxheWVkLW11bHRpcGxlLXBlcm1pc3Npb25zLWRlbmllZC5odG1sCiBmYXN0L2RvbS9HZW9s
b2NhdGlvbi9lcnJvci5odG1sCiBmYXN0L2RvbS9HZW9sb2NhdGlvbi9tdWx0aXBsZS1yZXF1ZXN0
cy5odG1sCiBmYXN0L2RvbS9HZW9sb2NhdGlvbi9wZXJtaXNzaW9uLWRlbmllZC1hbHJlYWR5LWNs
ZWFyLXdhdGNoLmh0bWwKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAkocmV2aXNpb24gNjQ5
MzQpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCSh3b3JraW5nIGNvcHkpCkBA
IC01NDkzLDYgKzU0OTMsOCBAQCBmYXN0L2V2ZW50cy9zcGVjaWFsLWtleS1ldmVudHMtaW4taW5w
dXQtCiAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MzQ3OAogZmFz
dC9kb20vR2VvbG9jYXRpb24vZGVsYXllZC1wZXJtaXNzaW9uLWFsbG93ZWQuaHRtbAogZmFzdC9k
b20vR2VvbG9jYXRpb24vZGVsYXllZC1wZXJtaXNzaW9uLWRlbmllZC5odG1sCitmYXN0L2RvbS9H
ZW9sb2NhdGlvbi9kZWxheWVkLW11bHRpcGxlLXBlcm1pc3Npb25zLWFsbG93ZWQuaHRtbAorZmFz
dC9kb20vR2VvbG9jYXRpb24vZGVsYXllZC1tdWx0aXBsZS1wZXJtaXNzaW9ucy1kZW5pZWQuaHRt
bAogCiAjIEJsb2RCdWlsZGVyIGlzIG5vdCBlbmFibGVkCiBodHRwL3Rlc3RzL2xvY2FsL2Jsb2Iv
c2VuZC1kYXRhLWJsb2IuaHRtbAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64421</attachid>
            <date>2010-08-14 11:30:41 -0700</date>
            <delta_ts>2010-08-16 04:27:19 -0700</delta_ts>
            <desc>patch</desc>
            <filename>42811.patch</filename>
            <type>text/plain</type>
            <size>13886</size>
            <attacher name="Mahesh Kulkarni">maheshk</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvcGFnZS9HZW9sb2NhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9wYWdlL0dlb2xvY2F0aW9uLmNwcAkocmV2aXNpb24gNjUzNzApCisrKyBXZWJDb3JlL3BhZ2Uv
R2VvbG9jYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODQsMTMgKzI4NCwxOCBAQCBQYXNz
UmVmUHRyPEdlb2xvY2F0aW9uOjpHZW9Ob3RpZmllcj4gR2VvCiAgICAgICAgIG5vdGlmaWVyLT5z
ZXRGYXRhbEVycm9yKFBvc2l0aW9uRXJyb3I6OmNyZWF0ZShQb3NpdGlvbkVycm9yOjpQRVJNSVNT
SU9OX0RFTklFRCwgcGVybWlzc2lvbkRlbmllZEVycm9yTWVzc2FnZSkpOwogICAgIGVsc2UgaWYg
KGhhdmVTdWl0YWJsZUNhY2hlZFBvc2l0aW9uKG5vdGlmaWVyLT5tX29wdGlvbnMuZ2V0KCkpKQog
ICAgICAgICBub3RpZmllci0+c2V0VXNlQ2FjaGVkUG9zaXRpb24oKTsKLSAgICBlbHNlIGlmIChu
b3RpZmllci0+aGFzWmVyb1RpbWVvdXQoKSB8fCBzdGFydFVwZGF0aW5nKG5vdGlmaWVyLmdldCgp
KSkgeworICAgIGVsc2UgaWYgKG5vdGlmaWVyLT5oYXNaZXJvVGltZW91dCgpKQorICAgICAgICBu
b3RpZmllci0+c3RhcnRUaW1lcklmTmVlZGVkKCk7CiAjaWYgVVNFKFBSRUVNUFRfR0VPTE9DQVRJ
T05fUEVSTUlTU0lPTikKLSAgICAgICAgLy8gT25seSBzdGFydCB0aW1lciBpZiB3ZSdyZSBub3Qg
d2FpdGluZyBmb3IgdXNlciBwZXJtaXNzaW9uLgotICAgICAgICBpZiAoIW1fc3RhcnRSZXF1ZXN0
UGVybWlzc2lvbk5vdGlmaWVyKQotI2VuZGlmICAgICAgICAgICAgCi0gICAgICAgICAgICBub3Rp
Zmllci0+c3RhcnRUaW1lcklmTmVlZGVkKCk7Ci0gICAgfSBlbHNlCisgICAgZWxzZSBpZiAoIWlz
QWxsb3dlZCgpKSB7CisgICAgICAgIC8vIGlmIHdlIGRvbid0IHlldCBoYXZlIHBlcm1pc3Npb24s
IHJlcXVlc3QgZm9yIHBlcm1pc3Npb24gYmVmb3JlIGNhbGxpbmcgc3RhcnRVcGRhdGluZygpCisg
ICAgICAgIG1fcGVuZGluZ0ZvclBlcm1pc3Npb25Ob3RpZmllcnMuYWRkKG5vdGlmaWVyKTsKKyAg
ICAgICAgcmVxdWVzdFBlcm1pc3Npb24oKTsKKyAgICB9CisjZW5kaWYKKyAgICBlbHNlIGlmIChz
dGFydFVwZGF0aW5nKG5vdGlmaWVyLmdldCgpKSkKKyAgICAgICAgbm90aWZpZXItPnN0YXJ0VGlt
ZXJJZk5lZWRlZCgpOworICAgIGVsc2UKICAgICAgICAgbm90aWZpZXItPnNldEZhdGFsRXJyb3Io
UG9zaXRpb25FcnJvcjo6Y3JlYXRlKFBvc2l0aW9uRXJyb3I6OlBPU0lUSU9OX1VOQVZBSUxBQkxF
LCBmYWlsZWRUb1N0YXJ0U2VydmljZUVycm9yTWVzc2FnZSkpOwogCiAgICAgcmV0dXJuIG5vdGlm
aWVyLnJlbGVhc2UoKTsKQEAgLTQwNywyOCArNDEyLDEwIEBAIHZvaWQgR2VvbG9jYXRpb246OnNl
dElzQWxsb3dlZChib29sIGFsbG8KICAgICBtX2FsbG93R2VvbG9jYXRpb24gPSBhbGxvd2VkID8g
WWVzIDogTm87CiAgICAgCiAjaWYgVVNFKFBSRUVNUFRfR0VPTE9DQVRJT05fUEVSTUlTU0lPTikK
LSAgICBpZiAobV9zdGFydFJlcXVlc3RQZXJtaXNzaW9uTm90aWZpZXIpIHsKLSAgICAgICAgaWYg
KGlzQWxsb3dlZCgpKSB7Ci0gICAgICAgICAgICAvLyBQZXJtaXNzaW9uIHJlcXVlc3Qgd2FzIG1h
ZGUgZHVyaW5nIHRoZSBzdGFydFVwZGF0aW5nIHByb2Nlc3MKLSAgICAgICAgICAgIG1fc3RhcnRS
ZXF1ZXN0UGVybWlzc2lvbk5vdGlmaWVyLT5zdGFydFRpbWVySWZOZWVkZWQoKTsKLSAgICAgICAg
ICAgIC8vIFRoZSBub3RpZmllciBpcyBhbHdheXMgcmVmJ2VkIGJ5IG1fb25lU2hvdHMgb3IgbV93
YXRjaGVycy4KLSAgICAgICAgICAgIEdlb05vdGlmaWVyKiBub3RpZmllciA9IG1fc3RhcnRSZXF1
ZXN0UGVybWlzc2lvbk5vdGlmaWVyLmdldCgpOwotICAgICAgICAgICAgbV9zdGFydFJlcXVlc3RQ
ZXJtaXNzaW9uTm90aWZpZXIgPSAwOwotI2lmIEVOQUJMRShDTElFTlRfQkFTRURfR0VPTE9DQVRJ
T04pCi0gICAgICAgICAgICBpZiAoIW1fZnJhbWUpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICAgICAgUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKLSAgICAgICAgICAgIGlm
ICghcGFnZSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBwYWdlLT5nZW9s
b2NhdGlvbkNvbnRyb2xsZXIoKS0+YWRkT2JzZXJ2ZXIodGhpcywgbm90aWZpZXItPm1fb3B0aW9u
cy0+ZW5hYmxlSGlnaEFjY3VyYWN5KCkpOwotI2Vsc2UKLSAgICAgICAgICAgIC8vIFRPRE86IEhh
bmRsZSBzdGFydFVwZGF0ZSgpIGZvciBub24tY2xpZW50IGJhc2VkIGltcGxlbWVudGF0aW9ucyB1
c2luZyBwcmUtZW1wdGl2ZSBwb2xpY3kKLSNlbmRpZgotICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgbV9zdGFydFJlcXVlc3RQZXJtaXNzaW9uTm90aWZpZXItPnNldEZhdGFsRXJyb3IoUG9z
aXRpb25FcnJvcjo6Y3JlYXRlKFBvc2l0aW9uRXJyb3I6OlBFUk1JU1NJT05fREVOSUVELCBwZXJt
aXNzaW9uRGVuaWVkRXJyb3JNZXNzYWdlKSk7Ci0gICAgICAgICAgICBtX29uZVNob3RzLmFkZCht
X3N0YXJ0UmVxdWVzdFBlcm1pc3Npb25Ob3RpZmllcik7Ci0gICAgICAgICAgICBtX3N0YXJ0UmVx
dWVzdFBlcm1pc3Npb25Ob3RpZmllciA9IDA7Ci0gICAgICAgIH0KKyAgICAvLyBQZXJtaXNzaW9u
IHJlcXVlc3Qgd2FzIG1hZGUgZHVyaW5nIHRoZSBzdGFydFJlcXVlc3QgcHJvY2VzcworICAgIGlm
ICghbV9wZW5kaW5nRm9yUGVybWlzc2lvbk5vdGlmaWVycy5pc0VtcHR5KCkpIHsKKyAgICAgICAg
aGFuZGxlUGVuZGluZ1Blcm1pc3Npb25Ob3RpZmllcnMoKTsKKyAgICAgICAgbV9wZW5kaW5nRm9y
UGVybWlzc2lvbk5vdGlmaWVycy5jbGVhcigpOwogICAgICAgICByZXR1cm47CiAgICAgfQogI2Vu
ZGlmCkBAIC02MjQsMTQgKzYxMSw2IEBAIHZvaWQgR2VvbG9jYXRpb246Omdlb2xvY2F0aW9uU2Vy
dmljZUVycm8KIAogYm9vbCBHZW9sb2NhdGlvbjo6c3RhcnRVcGRhdGluZyhHZW9Ob3RpZmllciog
bm90aWZpZXIpCiB7Ci0jaWYgVVNFKFBSRUVNUFRfR0VPTE9DQVRJT05fUEVSTUlTU0lPTikKLSAg
ICBpZiAoIWlzQWxsb3dlZCgpKSB7Ci0gICAgICAgIG1fc3RhcnRSZXF1ZXN0UGVybWlzc2lvbk5v
dGlmaWVyID0gbm90aWZpZXI7Ci0gICAgICAgIHJlcXVlc3RQZXJtaXNzaW9uKCk7Ci0gICAgICAg
IHJldHVybiB0cnVlOwotICAgIH0KLSNlbmRpZgotCiAjaWYgRU5BQkxFKENMSUVOVF9CQVNFRF9H
RU9MT0NBVElPTikKICAgICBpZiAoIW1fZnJhbWUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAg
LTY2NCw2ICs2NDMsMzggQEAgdm9pZCBHZW9sb2NhdGlvbjo6c3RvcFVwZGF0aW5nKCkKIAogfQog
CisjaWYgVVNFKFBSRUVNUFRfR0VPTE9DQVRJT05fUEVSTUlTU0lPTikKK3ZvaWQgR2VvbG9jYXRp
b246OmhhbmRsZVBlbmRpbmdQZXJtaXNzaW9uTm90aWZpZXJzKCkKK3sKKyNpZiBFTkFCTEUoQ0xJ
RU5UX0JBU0VEX0dFT0xPQ0FUSU9OKQorICAgIGlmICghbV9mcmFtZSkKKyAgICAgICAgcmV0dXJu
OworICAgIFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CisgICAgaWYgKCFwYWdlKQorICAg
ICAgICByZXR1cm47CisjZW5kaWYKKworICAgIC8vIFdoaWxlIHdlIGl0ZXJhdGUgdGhyb3VnaCB0
aGUgbGlzdCwgd2UgbmVlZCBub3Qgd29ycnkgYWJvdXQgbGlzdCBiZWluZyBtb2RpZmllZCBhcyB0
aGUgcGVybWlzc2lvbiAKKyAgICAvLyBpcyBhbHJlYWR5IHNldCB0byBZZXMvTm8gYW5kIG5vIG5l
dyBsaXN0ZW5lcnMgd2lsbCBiZSBhZGRlZCB0byB0aGUgcGVuZGluZyBsaXN0CisgICAgR2VvTm90
aWZpZXJTZXQ6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fcGVuZGluZ0ZvclBlcm1pc3Npb25Ob3Rp
ZmllcnMuZW5kKCk7CisgICAgZm9yIChHZW9Ob3RpZmllclNldDo6Y29uc3RfaXRlcmF0b3IgaXRl
ciA9IG1fcGVuZGluZ0ZvclBlcm1pc3Npb25Ob3RpZmllcnMuYmVnaW4oKTsgaXRlciAhPSBlbmQ7
ICsraXRlcikgeworICAgICAgICBHZW9Ob3RpZmllciogbm90aWZpZXIgPSBpdGVyLT5nZXQoKTsK
KworICAgICAgICBpZiAoaXNBbGxvd2VkKCkpIHsKKyAgICAgICAgICAgIC8vIHN0YXJ0IGFsbCBw
ZW5kaW5nIG5vdGlmaWNhdGlvbiByZXF1ZXN0cyBhcyBwZXJtaXNzaW9uIGdyYW50ZWQuCisgICAg
ICAgICAgICAvLyBUaGUgbm90aWZpZXIgaXMgYWx3YXlzIHJlZidlZCBieSBtX29uZVNob3RzIG9y
IG1fd2F0Y2hlcnMuCisjaWYgRU5BQkxFKENMSUVOVF9CQVNFRF9HRU9MT0NBVElPTikKKyAgICAg
ICAgICAgIG5vdGlmaWVyLT5zdGFydFRpbWVySWZOZWVkZWQoKTsKKyAgICAgICAgICAgIHBhZ2Ut
Pmdlb2xvY2F0aW9uQ29udHJvbGxlcigpLT5hZGRPYnNlcnZlcih0aGlzLCBub3RpZmllci0+bV9v
cHRpb25zLT5lbmFibGVIaWdoQWNjdXJhY3koKSk7CisjZWxpZgorICAgICAgICAgICAgLy8gVE9E
TzogSGFuZGxlIHN0YXJ0VXBkYXRlKCkgZm9yIG5vbi1jbGllbnQgYmFzZWQgaW1wbGVtZW50YXRp
b25zIHVzaW5nIHByZS1lbXB0aXZlIHBvbGljeQorI2VuZGlmCisgICAgICAgIH0gZWxzZQorICAg
ICAgICAgICAgbm90aWZpZXItPnNldEZhdGFsRXJyb3IoUG9zaXRpb25FcnJvcjo6Y3JlYXRlKFBv
c2l0aW9uRXJyb3I6OlBFUk1JU1NJT05fREVOSUVELCBwZXJtaXNzaW9uRGVuaWVkRXJyb3JNZXNz
YWdlKSk7CisgICAgfQorfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2Vs
c2UKSW5kZXg6IFdlYkNvcmUvcGFnZS9HZW9sb2NhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcGFnZS9HZW9sb2NhdGlvbi5oCShyZXZpc2lvbiA2NTM3MCkKKysrIFdlYkNvcmUvcGFnZS9H
ZW9sb2NhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDQsNiArMTQ0LDEwIEBAIHByaXZhdGU6
CiAgICAgYm9vbCBzdGFydFVwZGF0aW5nKEdlb05vdGlmaWVyKik7CiAgICAgdm9pZCBzdG9wVXBk
YXRpbmcoKTsKIAorI2lmIFVTRShQUkVFTVBUX0dFT0xPQ0FUSU9OX1BFUk1JU1NJT04pCisgICAg
dm9pZCBoYW5kbGVQZW5kaW5nUGVybWlzc2lvbk5vdGlmaWVycygpOworI2VuZGlmCisKICNpZiAh
RU5BQkxFKENMSUVOVF9CQVNFRF9HRU9MT0NBVElPTikgJiYgRU5BQkxFKEdFT0xPQ0FUSU9OKQog
ICAgIC8vIEdlb2xvY2F0aW9uU2VydmljZUNsaWVudAogICAgIHZpcnR1YWwgdm9pZCBnZW9sb2Nh
dGlvblNlcnZpY2VQb3NpdGlvbkNoYW5nZWQoR2VvbG9jYXRpb25TZXJ2aWNlKik7CkBAIC0xNjcs
NyArMTcxLDcgQEAgcHJpdmF0ZToKICAgICBPd25QdHI8R2VvbG9jYXRpb25TZXJ2aWNlPiBtX3Nl
cnZpY2U7CiAjZW5kaWYKICNpZiBVU0UoUFJFRU1QVF9HRU9MT0NBVElPTl9QRVJNSVNTSU9OKQot
ICAgIFJlZlB0cjxHZW9Ob3RpZmllcj4gbV9zdGFydFJlcXVlc3RQZXJtaXNzaW9uTm90aWZpZXI7
CisgICAgR2VvTm90aWZpZXJTZXQgbV9wZW5kaW5nRm9yUGVybWlzc2lvbk5vdGlmaWVyczsKICNl
bmRpZgogICAgIFJlZlB0cjxHZW9wb3NpdGlvbj4gbV9sYXN0UG9zaXRpb247CiAKSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL2RlbGF5ZWQtbXVsdGlwbGUtcGVybWlzc2lv
bnMtYWxsb3dlZC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9k
b20vR2VvbG9jYXRpb24vZGVsYXllZC1tdWx0aXBsZS1wZXJtaXNzaW9ucy1hbGxvd2VkLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9u
L2RlbGF5ZWQtbXVsdGlwbGUtcGVybWlzc2lvbnMtYWxsb3dlZC1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMTEgQEAKK1Rlc3RzIHRoYXQgd2hlbiBtdWx0aXBsZSBwb3NpdGlv
bnMgYXJlIGF2YWlsYWJsZSwgbm8gY2FsbGJhY2tzIGFyZSBpbnZva2VkIHVudGlsIHBlcm1pc3Np
b24gaXMgYWxsb3dlZC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgU3Vj
Y2VzcyBjYWxsYmFjayBpbnZva2VkCitQQVNTIFN1Y2Nlc3MgY2FsbGJhY2sgaW52b2tlZAorUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL2RlbGF5ZWQtbXVsdGlwbGUtcGVybWlzc2lv
bnMtYWxsb3dlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xv
Y2F0aW9uL2RlbGF5ZWQtbXVsdGlwbGUtcGVybWlzc2lvbnMtYWxsb3dlZC5odG1sCShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vZGVsYXllZC1tdWx0aXBs
ZS1wZXJtaXNzaW9ucy1hbGxvd2VkLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTMgQEAK
KzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgor
PGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2pzL3Jlc291cmNlcy9q
cy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9u
Ij48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVz
dHMvZGVsYXllZC1tdWx0aXBsZS1wZXJtaXNzaW9ucy1hbGxvd2VkLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9u
L2RlbGF5ZWQtbXVsdGlwbGUtcGVybWlzc2lvbnMtZGVuaWVkLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9kZWxheWVkLW11bHRpcGxl
LXBlcm1pc3Npb25zLWRlbmllZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9kZWxheWVkLW11bHRpcGxlLXBlcm1pc3Npb25zLWRl
bmllZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTMgQEAKK1Rlc3RzIHRo
YXQgd2hlbiBtdWx0aXBsZSBwb3NpdGlvbnMgYXJlIGF2YWlsYWJsZSwgbm8gY2FsbGJhY2tzIGFy
ZSBpbnZva2VkIHVudGlsIHBlcm1pc3Npb24gaXMgZGVuaWVkLgorCitPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCisKKworUEFTUyBlcnJvci5jb2RlIGlzIGVycm9yLlBFUk1JU1NJT05fREVOSUVE
CitQQVNTIGVycm9yLm1lc3NhZ2UgaXMgIlVzZXIgZGVuaWVkIEdlb2xvY2F0aW9uIgorUEFTUyBl
cnJvci5jb2RlIGlzIGVycm9yLlBFUk1JU1NJT05fREVOSUVECitQQVNTIGVycm9yLm1lc3NhZ2Ug
aXMgIlVzZXIgZGVuaWVkIEdlb2xvY2F0aW9uIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xv
Y2F0aW9uL2RlbGF5ZWQtbXVsdGlwbGUtcGVybWlzc2lvbnMtZGVuaWVkLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vZGVsYXllZC1tdWx0aXBsZS1w
ZXJtaXNzaW9ucy1kZW5pZWQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
ZG9tL0dlb2xvY2F0aW9uL2RlbGF5ZWQtbXVsdGlwbGUtcGVybWlzc2lvbnMtZGVuaWVkLmh0bWwJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8v
SUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvZGVsYXllZC1tdWx0aXBsZS1wZXJtaXNz
aW9ucy1kZW5pZWQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNl
cy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL2RlbGF5ZWQtbXVsdGlw
bGUtcGVybWlzc2lvbnMtYWxsb3dlZC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvZGVsYXllZC1tdWx0aXBsZS1wZXJtaXNzaW9u
cy1hbGxvd2VkLmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9j
YXRpb24vc2NyaXB0LXRlc3RzL2RlbGF5ZWQtbXVsdGlwbGUtcGVybWlzc2lvbnMtYWxsb3dlZC5q
cwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MSBAQAorZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQg
d2hlbiBtdWx0aXBsZSBwb3NpdGlvbnMgYXJlIGF2YWlsYWJsZSwgbm8gY2FsbGJhY2tzIGFyZSBp
bnZva2VkIHVudGlsIHBlcm1pc3Npb24gaXMgYWxsb3dlZC4iKTsKKworaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikKKyAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9j
a0dlb2xvY2F0aW9uUG9zaXRpb24oNTEuNDc4LCAtMC4xNjYsIDEwMCk7CisKK2Z1bmN0aW9uIGFs
bG93UGVybWlzc2lvbigpIHsKKyAgICBwZXJtaXNzaW9uU2V0ID0gdHJ1ZTsKKyAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5z
ZXRHZW9sb2NhdGlvblBlcm1pc3Npb24odHJ1ZSk7Cit9CisKK3ZhciB3YXRjaENhbGxiYWNrSW52
b2tlZCA9IGZhbHNlOwordmFyIG9uZVNob3RDYWxsYmFja0ludm9rZWQgPSBmYWxzZTsKKworbmF2
aWdhdG9yLmdlb2xvY2F0aW9uLndhdGNoUG9zaXRpb24oZnVuY3Rpb24oKSB7CisgICAgaWYgKHBl
cm1pc3Npb25TZXQpIHsKKyAgICAgICAgdGVzdFBhc3NlZCgnU3VjY2VzcyBjYWxsYmFjayBpbnZv
a2VkJyk7CisgICAgICAgIHdhdGNoQ2FsbGJhY2tJbnZva2VkID0gdHJ1ZTsKKyAgICAgICAgbWF5
YmVGaW5pc2hUZXN0KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgdGVzdEZhaWxlZCgn
U3VjY2VzcyBjYWxsYmFjayBpbnZva2VkIHVuZXhwZWN0ZWRseScpOworICAgIGZpbmlzaEpTVGVz
dCgpOworfSwgZnVuY3Rpb24oZXJyKSB7CisgICAgdGVzdEZhaWxlZCgnRXJyb3IgY2FsbGJhY2sg
aW52b2tlZCB1bmV4cGVjdGVkbHknKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30pOworCituYXZp
Z2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKGZ1bmN0aW9uKCkgeworICAgIGlm
IChwZXJtaXNzaW9uU2V0KSB7CisgICAgICAgIHRlc3RQYXNzZWQoJ1N1Y2Nlc3MgY2FsbGJhY2sg
aW52b2tlZCcpOworICAgICAgICBvbmVTaG90Q2FsbGJhY2tJbnZva2VkID0gdHJ1ZTsKKyAgICAg
ICAgbWF5YmVGaW5pc2hUZXN0KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgdGVzdEZh
aWxlZCgnU3VjY2VzcyBjYWxsYmFjayBpbnZva2VkIHVuZXhwZWN0ZWRseScpOworICAgIGZpbmlz
aEpTVGVzdCgpOworfSwgZnVuY3Rpb24oZXJyKSB7CisgICAgdGVzdEZhaWxlZCgnRXJyb3IgY2Fs
bGJhY2sgaW52b2tlZCB1bmV4cGVjdGVkbHknKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30pOwor
Cit3aW5kb3cuc2V0VGltZW91dChhbGxvd1Blcm1pc3Npb24sIDEwMCk7CisKK2Z1bmN0aW9uIG1h
eWJlRmluaXNoVGVzdCgpIHsKKyAgICBpZiAod2F0Y2hDYWxsYmFja0ludm9rZWQgJiYgb25lU2hv
dENhbGxiYWNrSW52b2tlZCkKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3dpbmRvdy5q
c1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK3dpbmRvdy5zdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL2RlbGF5
ZWQtbXVsdGlwbGUtcGVybWlzc2lvbnMtZGVuaWVkLmpzCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9kZWxheWVkLW11bHRpcGxlLXBl
cm1pc3Npb25zLWRlbmllZC5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9t
L0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9kZWxheWVkLW11bHRpcGxlLXBlcm1pc3Npb25zLWRl
bmllZC5qcwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NSBAQAorZGVzY3JpcHRpb24oIlRlc3Rz
IHRoYXQgd2hlbiBtdWx0aXBsZSBwb3NpdGlvbnMgYXJlIGF2YWlsYWJsZSwgbm8gY2FsbGJhY2tz
IGFyZSBpbnZva2VkIHVudGlsIHBlcm1pc3Npb24gaXMgZGVuaWVkLiIpOworCitpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5z
ZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbig1MS40NzgsIC0wLjE2NiwgMTAwKTsKKworZnVuY3Rp
b24gZGVueVBlcm1pc3Npb24oKSB7CisgICAgcGVybWlzc2lvblNldCA9IHRydWU7CisgICAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuc2V0R2VvbG9jYXRpb25QZXJtaXNzaW9uKGZhbHNlKTsKK30KKwordmFyIHdhdGNoQ2FsbGJh
Y2tJbnZva2VkID0gZmFsc2U7Cit2YXIgb25lU2hvdENhbGxiYWNrSW52b2tlZCA9IGZhbHNlOwor
dmFyIGVycm9yOworCituYXZpZ2F0b3IuZ2VvbG9jYXRpb24ud2F0Y2hQb3NpdGlvbihmdW5jdGlv
bigpIHsKKyAgICB0ZXN0RmFpbGVkKCdTdWNjZXNzIGNhbGxiYWNrIGludm9rZWQgdW5leHBlY3Rl
ZGx5Jyk7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9LCBmdW5jdGlvbihlKSB7CisgICAgaWYgKHBl
cm1pc3Npb25TZXQpIHsKKyAgICAgICAgZXJyb3IgPSBlOworICAgICAgICBzaG91bGRCZSgnZXJy
b3IuY29kZScsICdlcnJvci5QRVJNSVNTSU9OX0RFTklFRCcpOworICAgICAgICBzaG91bGRCZSgn
ZXJyb3IubWVzc2FnZScsICciVXNlciBkZW5pZWQgR2VvbG9jYXRpb24iJyk7CisgICAgICAgIHdh
dGNoQ2FsbGJhY2tJbnZva2VkID0gdHJ1ZTsKKyAgICAgICAgbWF5YmVGaW5pc2hUZXN0KCk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAgdGVzdEZhaWxlZCgnRXJyb3IgY2FsbGJhY2sgaW52
b2tlZCB1bmV4cGVjdGVkbHknKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30pOworCituYXZpZ2F0
b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKGZ1bmN0aW9uKCkgeworICAgIHRlc3RG
YWlsZWQoJ1N1Y2Nlc3MgY2FsbGJhY2sgaW52b2tlZCB1bmV4cGVjdGVkbHknKTsKKyAgICBmaW5p
c2hKU1Rlc3QoKTsKK30sIGZ1bmN0aW9uKGUpIHsKKyAgICBpZiAocGVybWlzc2lvblNldCkgewor
ICAgICAgICBlcnJvciA9IGU7CisgICAgICAgIHNob3VsZEJlKCdlcnJvci5jb2RlJywgJ2Vycm9y
LlBFUk1JU1NJT05fREVOSUVEJyk7CisgICAgICAgIHNob3VsZEJlKCdlcnJvci5tZXNzYWdlJywg
JyJVc2VyIGRlbmllZCBHZW9sb2NhdGlvbiInKTsKKyAgICAgICAgb25lU2hvdENhbGxiYWNrSW52
b2tlZCA9IHRydWU7CisgICAgICAgIG1heWJlRmluaXNoVGVzdCgpOyAgICAgICAgCisgICAgICAg
IHJldHVybjsKKyAgICB9CisgICAgdGVzdEZhaWxlZCgnRXJyb3IgY2FsbGJhY2sgaW52b2tlZCB1
bmV4cGVjdGVkbHknKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30pOword2luZG93LnNldFRpbWVv
dXQoZGVueVBlcm1pc3Npb24sIDEwMCk7CisKK2Z1bmN0aW9uIG1heWJlRmluaXNoVGVzdCgpIHsK
KyAgICBpZiAod2F0Y2hDYWxsYmFja0ludm9rZWQgJiYgb25lU2hvdENhbGxiYWNrSW52b2tlZCkK
KyAgICAgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1
ZTsKK3dpbmRvdy5zdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpJbmRleDogTGF5b3V0VGVzdHMv
cGxhdGZvcm0vZ3RrL1NraXBwZWQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Z3RrL1NraXBwZWQJKHJldmlzaW9uIDY1MzcwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3Rr
L1NraXBwZWQJKHdvcmtpbmcgY29weSkKQEAgLTEwOTIsNiArMTA5Miw4IEBAIGZhc3QvZG9tL0Rl
dmljZU9yaWVudGF0aW9uL3dpbmRvdy1wcm9wZXIKIGZhc3QvZG9tL0dlb2xvY2F0aW9uL2NhbGxi
YWNrLWV4Y2VwdGlvbi5odG1sCiBmYXN0L2RvbS9HZW9sb2NhdGlvbi9kZWxheWVkLXBlcm1pc3Np
b24tYWxsb3dlZC5odG1sCiBmYXN0L2RvbS9HZW9sb2NhdGlvbi9kZWxheWVkLXBlcm1pc3Npb24t
ZGVuaWVkLmh0bWwKK2Zhc3QvZG9tL0dlb2xvY2F0aW9uL2RlbGF5ZWQtbXVsdGlwbGUtcGVybWlz
c2lvbnMtYWxsb3dlZC5odG1sCitmYXN0L2RvbS9HZW9sb2NhdGlvbi9kZWxheWVkLW11bHRpcGxl
LXBlcm1pc3Npb25zLWRlbmllZC5odG1sCiBmYXN0L2RvbS9HZW9sb2NhdGlvbi9lcnJvci5odG1s
CiBmYXN0L2RvbS9HZW9sb2NhdGlvbi9tdWx0aXBsZS1yZXF1ZXN0cy5odG1sCiBmYXN0L2RvbS9H
ZW9sb2NhdGlvbi9uby1wYWdlLWNhY2hlLmh0bWwKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3Jt
L3F0L1NraXBwZWQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBl
ZAkocmV2aXNpb24gNjUzNzApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCSh3
b3JraW5nIGNvcHkpCkBAIC01NDkzLDYgKzU0OTMsOCBAQCBmYXN0L2V2ZW50cy9zcGVjaWFsLWtl
eS1ldmVudHMtaW4taW5wdXQtCiAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD00MzQ3OAogZmFzdC9kb20vR2VvbG9jYXRpb24vZGVsYXllZC1wZXJtaXNzaW9uLWFsbG93
ZWQuaHRtbAogZmFzdC9kb20vR2VvbG9jYXRpb24vZGVsYXllZC1wZXJtaXNzaW9uLWRlbmllZC5o
dG1sCitmYXN0L2RvbS9HZW9sb2NhdGlvbi9kZWxheWVkLW11bHRpcGxlLXBlcm1pc3Npb25zLWFs
bG93ZWQuaHRtbAorZmFzdC9kb20vR2VvbG9jYXRpb24vZGVsYXllZC1tdWx0aXBsZS1wZXJtaXNz
aW9ucy1kZW5pZWQuaHRtbAogCiAjIEJsb2RCdWlsZGVyIGlzIG5vdCBlbmFibGVkCiBodHRwL3Rl
c3RzL2xvY2FsL2Jsb2Ivc2VuZC1kYXRhLWJsb2IuaHRtbAo=
</data>
<flag name="review"
          id="52985"
          type_id="1"
          status="-"
          setter="steveblock"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64483</attachid>
            <date>2010-08-16 04:27:19 -0700</date>
            <delta_ts>2010-08-17 00:22:29 -0700</delta_ts>
            <desc>patch</desc>
            <filename>latest.patch</filename>
            <type>text/plain</type>
            <size>14007</size>
            <attacher name="Mahesh Kulkarni">maheshk</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL2RlbGF5ZWQtcGVy
bWlzc2lvbi1hbGxvd2VkLWZvci1tdWx0aXBsZS1yZXF1ZXN0cy1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9kZWxheWVkLXBlcm1pc3Npb24tYWxsb3dlZC1m
b3ItbXVsdGlwbGUtcmVxdWVzdHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjEzN2Y0OTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9HZW9sb2NhdGlvbi9kZWxheWVkLXBlcm1pc3Npb24tYWxsb3dlZC1mb3ItbXVsdGlwbGUt
cmVxdWVzdHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTEgQEAKK1Rlc3RzIHRoYXQgd2hlbiBt
dWx0aXBsZSByZXF1ZXN0cyBhcmUgd2FpdGluZyBmb3IgcGVybWlzc2lvbiwgbm8gY2FsbGJhY2tz
IGFyZSBpbnZva2VkIHVudGlsIHBlcm1pc3Npb24gaXMgYWxsb3dlZC4KKworT24gc3VjY2Vzcywg
eW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRF
U1QgQ09NUExFVEUiLgorCisKK1BBU1MgU3VjY2VzcyBjYWxsYmFjayBpbnZva2VkCitQQVNTIFN1
Y2Nlc3MgY2FsbGJhY2sgaW52b2tlZAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xv
Y2F0aW9uL2RlbGF5ZWQtcGVybWlzc2lvbi1hbGxvd2VkLWZvci1tdWx0aXBsZS1yZXF1ZXN0cy5o
dG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vZGVsYXllZC1wZXJtaXNzaW9u
LWFsbG93ZWQtZm9yLW11bHRpcGxlLXJlcXVlc3RzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uOWEzYzM4YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvZG9tL0dlb2xvY2F0aW9uL2RlbGF5ZWQtcGVybWlzc2lvbi1hbGxvd2VkLWZvci1tdWx0aXBs
ZS1yZXF1ZXN0cy5odG1sCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAi
LS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxl
c2hlZXQiIGhyZWY9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xl
Ij48L2Rpdj4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvZGVsYXllZC1wZXJtaXNzaW9uLWFs
bG93ZWQtZm9yLW11bHRpcGxlLXJlcXVlc3RzLmh0bWwiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vZGVs
YXllZC1wZXJtaXNzaW9uLWRlbmllZC1mb3ItbXVsdGlwbGUtcmVxdWVzdHMtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vZGVsYXllZC1wZXJtaXNzaW9uLWRl
bmllZC1mb3ItbXVsdGlwbGUtcmVxdWVzdHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjhlZGUwM2MKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9kZWxheWVkLXBlcm1pc3Npb24tZGVuaWVkLWZvci1tdWx0
aXBsZS1yZXF1ZXN0cy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMyBAQAorVGVzdHMgdGhhdCB3
aGVuIG11bHRpcGxlIHJlcXVlc3RzIGFyZSB3YWl0aW5nIGZvciBwZXJtaXNzaW9uLCBubyBjYWxs
YmFja3MgYXJlIGludm9rZWQgdW50aWwgcGVybWlzc2lvbiBpcyBkZW5pZWQuCisKK09uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5
ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGVycm9yLmNvZGUgaXMgZXJyb3IuUEVSTUlTU0lP
Tl9ERU5JRUQKK1BBU1MgZXJyb3IubWVzc2FnZSBpcyAiVXNlciBkZW5pZWQgR2VvbG9jYXRpb24i
CitQQVNTIGVycm9yLmNvZGUgaXMgZXJyb3IuUEVSTUlTU0lPTl9ERU5JRUQKK1BBU1MgZXJyb3Iu
bWVzc2FnZSBpcyAiVXNlciBkZW5pZWQgR2VvbG9jYXRpb24iCitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vR2VvbG9jYXRpb24vZGVsYXllZC1wZXJtaXNzaW9uLWRlbmllZC1mb3ItbXVsdGlw
bGUtcmVxdWVzdHMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL2RlbGF5
ZWQtcGVybWlzc2lvbi1kZW5pZWQtZm9yLW11bHRpcGxlLXJlcXVlc3RzLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjE0MzA5NAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL2RlbGF5ZWQtcGVybWlzc2lvbi1kZW5pZWQt
Zm9yLW11bHRpcGxlLXJlcXVlc3RzLmh0bWwKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIEhU
TUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUu
Y3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9kZWxheWVkLXBl
cm1pc3Npb24tZGVuaWVkLWZvci1tdWx0aXBsZS1yZXF1ZXN0cy5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2Nh
dGlvbi9zY3JpcHQtdGVzdHMvZGVsYXllZC1wZXJtaXNzaW9uLWFsbG93ZWQtZm9yLW11bHRpcGxl
LXJlcXVlc3RzLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRl
c3RzL2RlbGF5ZWQtcGVybWlzc2lvbi1hbGxvd2VkLWZvci1tdWx0aXBsZS1yZXF1ZXN0cy5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YjAyYTgyCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL2RlbGF5
ZWQtcGVybWlzc2lvbi1hbGxvd2VkLWZvci1tdWx0aXBsZS1yZXF1ZXN0cy5qcwpAQCAtMCwwICsx
LDUxIEBACitkZXNjcmlwdGlvbigiVGVzdHMgdGhhdCB3aGVuIG11bHRpcGxlIHJlcXVlc3RzIGFy
ZSB3YWl0aW5nIGZvciBwZXJtaXNzaW9uLCBubyBjYWxsYmFja3MgYXJlIGludm9rZWQgdW50aWwg
cGVybWlzc2lvbiBpcyBhbGxvd2VkLiIpOworCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKQorICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5zZXRNb2NrR2VvbG9jYXRpb25Q
b3NpdGlvbig1MS40NzgsIC0wLjE2NiwgMTAwKTsKKworZnVuY3Rpb24gYWxsb3dQZXJtaXNzaW9u
KCkgeworICAgIHBlcm1pc3Npb25TZXQgPSB0cnVlOworICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldEdlb2xvY2F0aW9u
UGVybWlzc2lvbih0cnVlKTsKK30KKwordmFyIHdhdGNoQ2FsbGJhY2tJbnZva2VkID0gZmFsc2U7
Cit2YXIgb25lU2hvdENhbGxiYWNrSW52b2tlZCA9IGZhbHNlOworCituYXZpZ2F0b3IuZ2VvbG9j
YXRpb24ud2F0Y2hQb3NpdGlvbihmdW5jdGlvbigpIHsKKyAgICBpZiAocGVybWlzc2lvblNldCkg
eworICAgICAgICB0ZXN0UGFzc2VkKCdTdWNjZXNzIGNhbGxiYWNrIGludm9rZWQnKTsKKyAgICAg
ICAgd2F0Y2hDYWxsYmFja0ludm9rZWQgPSB0cnVlOworICAgICAgICBtYXliZUZpbmlzaFRlc3Qo
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICB0ZXN0RmFpbGVkKCdTdWNjZXNzIGNhbGxi
YWNrIGludm9rZWQgdW5leHBlY3RlZGx5Jyk7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9LCBmdW5j
dGlvbihlcnIpIHsKKyAgICB0ZXN0RmFpbGVkKCdFcnJvciBjYWxsYmFjayBpbnZva2VkIHVuZXhw
ZWN0ZWRseScpOworICAgIGZpbmlzaEpTVGVzdCgpOworfSk7CisKK25hdmlnYXRvci5nZW9sb2Nh
dGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZnVuY3Rpb24oKSB7CisgICAgaWYgKHBlcm1pc3Npb25T
ZXQpIHsKKyAgICAgICAgdGVzdFBhc3NlZCgnU3VjY2VzcyBjYWxsYmFjayBpbnZva2VkJyk7Cisg
ICAgICAgIG9uZVNob3RDYWxsYmFja0ludm9rZWQgPSB0cnVlOworICAgICAgICBtYXliZUZpbmlz
aFRlc3QoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICB0ZXN0RmFpbGVkKCdTdWNjZXNz
IGNhbGxiYWNrIGludm9rZWQgdW5leHBlY3RlZGx5Jyk7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9
LCBmdW5jdGlvbihlcnIpIHsKKyAgICB0ZXN0RmFpbGVkKCdFcnJvciBjYWxsYmFjayBpbnZva2Vk
IHVuZXhwZWN0ZWRseScpOworICAgIGZpbmlzaEpTVGVzdCgpOworfSk7CisKK3dpbmRvdy5zZXRU
aW1lb3V0KGFsbG93UGVybWlzc2lvbiwgMTAwKTsKKworZnVuY3Rpb24gbWF5YmVGaW5pc2hUZXN0
KCkgeworICAgIGlmICh3YXRjaENhbGxiYWNrSW52b2tlZCAmJiBvbmVTaG90Q2FsbGJhY2tJbnZv
a2VkKQorICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKword2luZG93LmpzVGVzdElzQXN5bmMg
PSB0cnVlOword2luZG93LnN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvZGVsYXllZC1wZXJt
aXNzaW9uLWRlbmllZC1mb3ItbXVsdGlwbGUtcmVxdWVzdHMuanMgYi9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvZGVsYXllZC1wZXJtaXNzaW9uLWRlbmllZC1m
b3ItbXVsdGlwbGUtcmVxdWVzdHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uZjIzMDA5MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xv
Y2F0aW9uL3NjcmlwdC10ZXN0cy9kZWxheWVkLXBlcm1pc3Npb24tZGVuaWVkLWZvci1tdWx0aXBs
ZS1yZXF1ZXN0cy5qcwpAQCAtMCwwICsxLDU1IEBACitkZXNjcmlwdGlvbigiVGVzdHMgdGhhdCB3
aGVuIG11bHRpcGxlIHJlcXVlc3RzIGFyZSB3YWl0aW5nIGZvciBwZXJtaXNzaW9uLCBubyBjYWxs
YmFja3MgYXJlIGludm9rZWQgdW50aWwgcGVybWlzc2lvbiBpcyBkZW5pZWQuIik7CisKK2lmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgd2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyLnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKDUxLjQ3OCwgLTAuMTY2LCAxMDApOworCitm
dW5jdGlvbiBkZW55UGVybWlzc2lvbigpIHsKKyAgICBwZXJtaXNzaW9uU2V0ID0gdHJ1ZTsKKyAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5zZXRHZW9sb2NhdGlvblBlcm1pc3Npb24oZmFsc2UpOworfQorCit2YXIgd2F0Y2hD
YWxsYmFja0ludm9rZWQgPSBmYWxzZTsKK3ZhciBvbmVTaG90Q2FsbGJhY2tJbnZva2VkID0gZmFs
c2U7Cit2YXIgZXJyb3I7CisKK25hdmlnYXRvci5nZW9sb2NhdGlvbi53YXRjaFBvc2l0aW9uKGZ1
bmN0aW9uKCkgeworICAgIHRlc3RGYWlsZWQoJ1N1Y2Nlc3MgY2FsbGJhY2sgaW52b2tlZCB1bmV4
cGVjdGVkbHknKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30sIGZ1bmN0aW9uKGUpIHsKKyAgICBp
ZiAocGVybWlzc2lvblNldCkgeworICAgICAgICBlcnJvciA9IGU7CisgICAgICAgIHNob3VsZEJl
KCdlcnJvci5jb2RlJywgJ2Vycm9yLlBFUk1JU1NJT05fREVOSUVEJyk7CisgICAgICAgIHNob3Vs
ZEJlKCdlcnJvci5tZXNzYWdlJywgJyJVc2VyIGRlbmllZCBHZW9sb2NhdGlvbiInKTsKKyAgICAg
ICAgd2F0Y2hDYWxsYmFja0ludm9rZWQgPSB0cnVlOworICAgICAgICBtYXliZUZpbmlzaFRlc3Qo
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICB0ZXN0RmFpbGVkKCdFcnJvciBjYWxsYmFj
ayBpbnZva2VkIHVuZXhwZWN0ZWRseScpOworICAgIGZpbmlzaEpTVGVzdCgpOworfSk7CisKK25h
dmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZnVuY3Rpb24oKSB7CisgICAg
dGVzdEZhaWxlZCgnU3VjY2VzcyBjYWxsYmFjayBpbnZva2VkIHVuZXhwZWN0ZWRseScpOworICAg
IGZpbmlzaEpTVGVzdCgpOworfSwgZnVuY3Rpb24oZSkgeworICAgIGlmIChwZXJtaXNzaW9uU2V0
KSB7CisgICAgICAgIGVycm9yID0gZTsKKyAgICAgICAgc2hvdWxkQmUoJ2Vycm9yLmNvZGUnLCAn
ZXJyb3IuUEVSTUlTU0lPTl9ERU5JRUQnKTsKKyAgICAgICAgc2hvdWxkQmUoJ2Vycm9yLm1lc3Nh
Z2UnLCAnIlVzZXIgZGVuaWVkIEdlb2xvY2F0aW9uIicpOworICAgICAgICBvbmVTaG90Q2FsbGJh
Y2tJbnZva2VkID0gdHJ1ZTsKKyAgICAgICAgbWF5YmVGaW5pc2hUZXN0KCk7ICAgICAgICAKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyAgICB0ZXN0RmFpbGVkKCdFcnJvciBjYWxsYmFjayBpbnZv
a2VkIHVuZXhwZWN0ZWRseScpOworICAgIGZpbmlzaEpTVGVzdCgpOworfSk7Cit3aW5kb3cuc2V0
VGltZW91dChkZW55UGVybWlzc2lvbiwgMTAwKTsKKworZnVuY3Rpb24gbWF5YmVGaW5pc2hUZXN0
KCkgeworICAgIGlmICh3YXRjaENhbGxiYWNrSW52b2tlZCAmJiBvbmVTaG90Q2FsbGJhY2tJbnZv
a2VkKQorICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKword2luZG93LmpzVGVzdElzQXN5bmMg
PSB0cnVlOword2luZG93LnN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0
ay9Ta2lwcGVkCmluZGV4IGM4MDFlMjIuLmRhYzk2NmMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2d0ay9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lw
cGVkCkBAIC0xMDkxLDYgKzEwOTEsOCBAQCBmYXN0L2RvbS9EZXZpY2VPcmllbnRhdGlvbi93aW5k
b3ctcHJvcGVydHkuaHRtbAogZmFzdC9kb20vR2VvbG9jYXRpb24vY2FsbGJhY2stZXhjZXB0aW9u
Lmh0bWwKIGZhc3QvZG9tL0dlb2xvY2F0aW9uL2RlbGF5ZWQtcGVybWlzc2lvbi1hbGxvd2VkLmh0
bWwKIGZhc3QvZG9tL0dlb2xvY2F0aW9uL2RlbGF5ZWQtcGVybWlzc2lvbi1kZW5pZWQuaHRtbAor
ZmFzdC9kb20vR2VvbG9jYXRpb24vZGVsYXllZC1tdWx0aXBsZS1wZXJtaXNzaW9ucy1hbGxvd2Vk
Lmh0bWwKK2Zhc3QvZG9tL0dlb2xvY2F0aW9uL2RlbGF5ZWQtbXVsdGlwbGUtcGVybWlzc2lvbnMt
ZGVuaWVkLmh0bWwKIGZhc3QvZG9tL0dlb2xvY2F0aW9uL2Vycm9yLmh0bWwKIGZhc3QvZG9tL0dl
b2xvY2F0aW9uL211bHRpcGxlLXJlcXVlc3RzLmh0bWwKIGZhc3QvZG9tL0dlb2xvY2F0aW9uL3Bl
cm1pc3Npb24tZGVuaWVkLWFscmVhZHktY2xlYXItd2F0Y2guaHRtbApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1Nr
aXBwZWQKaW5kZXggNTkyNmRkNi4uNmI2MTNmOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vcXQvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCkBA
IC01NDkzLDYgKzU0OTMsOCBAQCBmYXN0L2V2ZW50cy9zcGVjaWFsLWtleS1ldmVudHMtaW4taW5w
dXQtdGV4dC5odG1sCiAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00
MzQ3OAogZmFzdC9kb20vR2VvbG9jYXRpb24vZGVsYXllZC1wZXJtaXNzaW9uLWFsbG93ZWQuaHRt
bAogZmFzdC9kb20vR2VvbG9jYXRpb24vZGVsYXllZC1wZXJtaXNzaW9uLWRlbmllZC5odG1sCitm
YXN0L2RvbS9HZW9sb2NhdGlvbi9kZWxheWVkLW11bHRpcGxlLXBlcm1pc3Npb25zLWFsbG93ZWQu
aHRtbAorZmFzdC9kb20vR2VvbG9jYXRpb24vZGVsYXllZC1tdWx0aXBsZS1wZXJtaXNzaW9ucy1k
ZW5pZWQuaHRtbAogCiAjIEJsb2RCdWlsZGVyIGlzIG5vdCBlbmFibGVkCiBodHRwL3Rlc3RzL2xv
Y2FsL2Jsb2Ivc2VuZC1kYXRhLWJsb2IuaHRtbApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0dl
b2xvY2F0aW9uLmNwcCBiL1dlYkNvcmUvcGFnZS9HZW9sb2NhdGlvbi5jcHAKaW5kZXggMjBkYjRi
Zi4uYjE4ODYyOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0dlb2xvY2F0aW9uLmNwcAorKysg
Yi9XZWJDb3JlL3BhZ2UvR2VvbG9jYXRpb24uY3BwCkBAIC0yNzgsMTMgKzI3OCwxOCBAQCBQYXNz
UmVmUHRyPEdlb2xvY2F0aW9uOjpHZW9Ob3RpZmllcj4gR2VvbG9jYXRpb246OnN0YXJ0UmVxdWVz
dChQYXNzUmVmUHRyPFBvc2l0aQogICAgICAgICBub3RpZmllci0+c2V0RmF0YWxFcnJvcihQb3Np
dGlvbkVycm9yOjpjcmVhdGUoUG9zaXRpb25FcnJvcjo6UEVSTUlTU0lPTl9ERU5JRUQsIHBlcm1p
c3Npb25EZW5pZWRFcnJvck1lc3NhZ2UpKTsKICAgICBlbHNlIGlmIChoYXZlU3VpdGFibGVDYWNo
ZWRQb3NpdGlvbihub3RpZmllci0+bV9vcHRpb25zLmdldCgpKSkKICAgICAgICAgbm90aWZpZXIt
PnNldFVzZUNhY2hlZFBvc2l0aW9uKCk7Ci0gICAgZWxzZSBpZiAobm90aWZpZXItPmhhc1plcm9U
aW1lb3V0KCkgfHwgc3RhcnRVcGRhdGluZyhub3RpZmllci5nZXQoKSkpIHsKKyAgICBlbHNlIGlm
IChub3RpZmllci0+aGFzWmVyb1RpbWVvdXQoKSkKKyAgICAgICAgbm90aWZpZXItPnN0YXJ0VGlt
ZXJJZk5lZWRlZCgpOwogI2lmIFVTRShQUkVFTVBUX0dFT0xPQ0FUSU9OX1BFUk1JU1NJT04pCi0g
ICAgICAgIC8vIE9ubHkgc3RhcnQgdGltZXIgaWYgd2UncmUgbm90IHdhaXRpbmcgZm9yIHVzZXIg
cGVybWlzc2lvbi4KLSAgICAgICAgaWYgKCFtX3N0YXJ0UmVxdWVzdFBlcm1pc3Npb25Ob3RpZmll
cikKLSNlbmRpZiAgICAgICAgICAgIAotICAgICAgICAgICAgbm90aWZpZXItPnN0YXJ0VGltZXJJ
Zk5lZWRlZCgpOwotICAgIH0gZWxzZQorICAgIGVsc2UgaWYgKCFpc0FsbG93ZWQoKSkgeworICAg
ICAgICAvLyBpZiB3ZSBkb24ndCB5ZXQgaGF2ZSBwZXJtaXNzaW9uLCByZXF1ZXN0IGZvciBwZXJt
aXNzaW9uIGJlZm9yZSBjYWxsaW5nIHN0YXJ0VXBkYXRpbmcoKQorICAgICAgICBtX3BlbmRpbmdG
b3JQZXJtaXNzaW9uTm90aWZpZXJzLmFkZChub3RpZmllcik7CisgICAgICAgIHJlcXVlc3RQZXJt
aXNzaW9uKCk7CisgICAgfQorI2VuZGlmCisgICAgZWxzZSBpZiAoc3RhcnRVcGRhdGluZyhub3Rp
Zmllci5nZXQoKSkpCisgICAgICAgIG5vdGlmaWVyLT5zdGFydFRpbWVySWZOZWVkZWQoKTsKKyAg
ICBlbHNlCiAgICAgICAgIG5vdGlmaWVyLT5zZXRGYXRhbEVycm9yKFBvc2l0aW9uRXJyb3I6OmNy
ZWF0ZShQb3NpdGlvbkVycm9yOjpQT1NJVElPTl9VTkFWQUlMQUJMRSwgZmFpbGVkVG9TdGFydFNl
cnZpY2VFcnJvck1lc3NhZ2UpKTsKIAogICAgIHJldHVybiBub3RpZmllci5yZWxlYXNlKCk7CkBA
IC00MDEsMjggKzQwNiwxMCBAQCB2b2lkIEdlb2xvY2F0aW9uOjpzZXRJc0FsbG93ZWQoYm9vbCBh
bGxvd2VkKQogICAgIG1fYWxsb3dHZW9sb2NhdGlvbiA9IGFsbG93ZWQgPyBZZXMgOiBObzsKICAg
ICAKICNpZiBVU0UoUFJFRU1QVF9HRU9MT0NBVElPTl9QRVJNSVNTSU9OKQotICAgIGlmIChtX3N0
YXJ0UmVxdWVzdFBlcm1pc3Npb25Ob3RpZmllcikgewotICAgICAgICBpZiAoaXNBbGxvd2VkKCkp
IHsKLSAgICAgICAgICAgIC8vIFBlcm1pc3Npb24gcmVxdWVzdCB3YXMgbWFkZSBkdXJpbmcgdGhl
IHN0YXJ0VXBkYXRpbmcgcHJvY2VzcwotICAgICAgICAgICAgbV9zdGFydFJlcXVlc3RQZXJtaXNz
aW9uTm90aWZpZXItPnN0YXJ0VGltZXJJZk5lZWRlZCgpOwotICAgICAgICAgICAgLy8gVGhlIG5v
dGlmaWVyIGlzIGFsd2F5cyByZWYnZWQgYnkgbV9vbmVTaG90cyBvciBtX3dhdGNoZXJzLgotICAg
ICAgICAgICAgR2VvTm90aWZpZXIqIG5vdGlmaWVyID0gbV9zdGFydFJlcXVlc3RQZXJtaXNzaW9u
Tm90aWZpZXIuZ2V0KCk7Ci0gICAgICAgICAgICBtX3N0YXJ0UmVxdWVzdFBlcm1pc3Npb25Ob3Rp
ZmllciA9IDA7Ci0jaWYgRU5BQkxFKENMSUVOVF9CQVNFRF9HRU9MT0NBVElPTikKLSAgICAgICAg
ICAgIGlmICghbV9mcmFtZSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBQ
YWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpOwotICAgICAgICAgICAgaWYgKCFwYWdlKQotICAg
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIHBhZ2UtPmdlb2xvY2F0aW9uQ29udHJv
bGxlcigpLT5hZGRPYnNlcnZlcih0aGlzLCBub3RpZmllci0+bV9vcHRpb25zLT5lbmFibGVIaWdo
QWNjdXJhY3koKSk7Ci0jZWxzZQotICAgICAgICAgICAgLy8gVE9ETzogSGFuZGxlIHN0YXJ0VXBk
YXRlKCkgZm9yIG5vbi1jbGllbnQgYmFzZWQgaW1wbGVtZW50YXRpb25zIHVzaW5nIHByZS1lbXB0
aXZlIHBvbGljeQotI2VuZGlmCi0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBtX3N0YXJ0
UmVxdWVzdFBlcm1pc3Npb25Ob3RpZmllci0+c2V0RmF0YWxFcnJvcihQb3NpdGlvbkVycm9yOjpj
cmVhdGUoUG9zaXRpb25FcnJvcjo6UEVSTUlTU0lPTl9ERU5JRUQsIHBlcm1pc3Npb25EZW5pZWRF
cnJvck1lc3NhZ2UpKTsKLSAgICAgICAgICAgIG1fb25lU2hvdHMuYWRkKG1fc3RhcnRSZXF1ZXN0
UGVybWlzc2lvbk5vdGlmaWVyKTsKLSAgICAgICAgICAgIG1fc3RhcnRSZXF1ZXN0UGVybWlzc2lv
bk5vdGlmaWVyID0gMDsKLSAgICAgICAgfQorICAgIC8vIFBlcm1pc3Npb24gcmVxdWVzdCB3YXMg
bWFkZSBkdXJpbmcgdGhlIHN0YXJ0UmVxdWVzdCBwcm9jZXNzCisgICAgaWYgKCFtX3BlbmRpbmdG
b3JQZXJtaXNzaW9uTm90aWZpZXJzLmlzRW1wdHkoKSkgeworICAgICAgICBoYW5kbGVQZW5kaW5n
UGVybWlzc2lvbk5vdGlmaWVycygpOworICAgICAgICBtX3BlbmRpbmdGb3JQZXJtaXNzaW9uTm90
aWZpZXJzLmNsZWFyKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYKQEAgLTYxOCwx
NCArNjA1LDYgQEAgdm9pZCBHZW9sb2NhdGlvbjo6Z2VvbG9jYXRpb25TZXJ2aWNlRXJyb3JPY2N1
cnJlZChHZW9sb2NhdGlvblNlcnZpY2UqIHNlcnZpY2UpCiAKIGJvb2wgR2VvbG9jYXRpb246OnN0
YXJ0VXBkYXRpbmcoR2VvTm90aWZpZXIqIG5vdGlmaWVyKQogewotI2lmIFVTRShQUkVFTVBUX0dF
T0xPQ0FUSU9OX1BFUk1JU1NJT04pCi0gICAgaWYgKCFpc0FsbG93ZWQoKSkgewotICAgICAgICBt
X3N0YXJ0UmVxdWVzdFBlcm1pc3Npb25Ob3RpZmllciA9IG5vdGlmaWVyOwotICAgICAgICByZXF1
ZXN0UGVybWlzc2lvbigpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0jZW5kaWYKLQog
I2lmIEVOQUJMRShDTElFTlRfQkFTRURfR0VPTE9DQVRJT04pCiAgICAgaWYgKCFtX2ZyYW1lKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02NTgsNiArNjM3LDM4IEBAIHZvaWQgR2VvbG9jYXRp
b246OnN0b3BVcGRhdGluZygpCiAKIH0KIAorI2lmIFVTRShQUkVFTVBUX0dFT0xPQ0FUSU9OX1BF
Uk1JU1NJT04pCit2b2lkIEdlb2xvY2F0aW9uOjpoYW5kbGVQZW5kaW5nUGVybWlzc2lvbk5vdGlm
aWVycygpCit7CisjaWYgRU5BQkxFKENMSUVOVF9CQVNFRF9HRU9MT0NBVElPTikKKyAgICBpZiAo
IW1fZnJhbWUpCisgICAgICAgIHJldHVybjsKKyAgICBQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFn
ZSgpOworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuOworI2VuZGlmCisKKyAgICAvLyBX
aGlsZSB3ZSBpdGVyYXRlIHRocm91Z2ggdGhlIGxpc3QsIHdlIG5lZWQgbm90IHdvcnJ5IGFib3V0
IGxpc3QgYmVpbmcgbW9kaWZpZWQgYXMgdGhlIHBlcm1pc3Npb24gCisgICAgLy8gaXMgYWxyZWFk
eSBzZXQgdG8gWWVzL05vIGFuZCBubyBuZXcgbGlzdGVuZXJzIHdpbGwgYmUgYWRkZWQgdG8gdGhl
IHBlbmRpbmcgbGlzdAorICAgIEdlb05vdGlmaWVyU2V0Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBt
X3BlbmRpbmdGb3JQZXJtaXNzaW9uTm90aWZpZXJzLmVuZCgpOworICAgIGZvciAoR2VvTm90aWZp
ZXJTZXQ6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBtX3BlbmRpbmdGb3JQZXJtaXNzaW9uTm90aWZp
ZXJzLmJlZ2luKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKKyAgICAgICAgR2VvTm90aWZpZXIq
IG5vdGlmaWVyID0gaXRlci0+Z2V0KCk7CisKKyAgICAgICAgaWYgKGlzQWxsb3dlZCgpKSB7Cisg
ICAgICAgICAgICAvLyBzdGFydCBhbGwgcGVuZGluZyBub3RpZmljYXRpb24gcmVxdWVzdHMgYXMg
cGVybWlzc2lvbiBncmFudGVkLgorICAgICAgICAgICAgLy8gVGhlIG5vdGlmaWVyIGlzIGFsd2F5
cyByZWYnZWQgYnkgbV9vbmVTaG90cyBvciBtX3dhdGNoZXJzLgorI2lmIEVOQUJMRShDTElFTlRf
QkFTRURfR0VPTE9DQVRJT04pCisgICAgICAgICAgICBub3RpZmllci0+c3RhcnRUaW1lcklmTmVl
ZGVkKCk7CisgICAgICAgICAgICBwYWdlLT5nZW9sb2NhdGlvbkNvbnRyb2xsZXIoKS0+YWRkT2Jz
ZXJ2ZXIodGhpcywgbm90aWZpZXItPm1fb3B0aW9ucy0+ZW5hYmxlSGlnaEFjY3VyYWN5KCkpOwor
I2VsaWYKKyAgICAgICAgICAgIC8vIFRPRE86IEhhbmRsZSBzdGFydFVwZGF0ZSgpIGZvciBub24t
Y2xpZW50IGJhc2VkIGltcGxlbWVudGF0aW9ucyB1c2luZyBwcmUtZW1wdGl2ZSBwb2xpY3kKKyNl
bmRpZgorICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG5vdGlmaWVyLT5zZXRGYXRhbEVycm9y
KFBvc2l0aW9uRXJyb3I6OmNyZWF0ZShQb3NpdGlvbkVycm9yOjpQRVJNSVNTSU9OX0RFTklFRCwg
cGVybWlzc2lvbkRlbmllZEVycm9yTWVzc2FnZSkpOworICAgIH0KK30KKyNlbmRpZgorCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbHNlCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvR2Vv
bG9jYXRpb24uaCBiL1dlYkNvcmUvcGFnZS9HZW9sb2NhdGlvbi5oCmluZGV4IDhjNDdkOWMuLmZl
NDczMWYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9HZW9sb2NhdGlvbi5oCisrKyBiL1dlYkNv
cmUvcGFnZS9HZW9sb2NhdGlvbi5oCkBAIC0xNDQsNiArMTQ0LDEwIEBAIHByaXZhdGU6CiAgICAg
Ym9vbCBzdGFydFVwZGF0aW5nKEdlb05vdGlmaWVyKik7CiAgICAgdm9pZCBzdG9wVXBkYXRpbmco
KTsKIAorI2lmIFVTRShQUkVFTVBUX0dFT0xPQ0FUSU9OX1BFUk1JU1NJT04pCisgICAgdm9pZCBo
YW5kbGVQZW5kaW5nUGVybWlzc2lvbk5vdGlmaWVycygpOworI2VuZGlmCisKICNpZiAhRU5BQkxF
KENMSUVOVF9CQVNFRF9HRU9MT0NBVElPTikgJiYgRU5BQkxFKEdFT0xPQ0FUSU9OKQogICAgIC8v
IEdlb2xvY2F0aW9uU2VydmljZUNsaWVudAogICAgIHZpcnR1YWwgdm9pZCBnZW9sb2NhdGlvblNl
cnZpY2VQb3NpdGlvbkNoYW5nZWQoR2VvbG9jYXRpb25TZXJ2aWNlKik7CkBAIC0xNjcsNyArMTcx
LDcgQEAgcHJpdmF0ZToKICAgICBPd25QdHI8R2VvbG9jYXRpb25TZXJ2aWNlPiBtX3NlcnZpY2U7
CiAjZW5kaWYKICNpZiBVU0UoUFJFRU1QVF9HRU9MT0NBVElPTl9QRVJNSVNTSU9OKQotICAgIFJl
ZlB0cjxHZW9Ob3RpZmllcj4gbV9zdGFydFJlcXVlc3RQZXJtaXNzaW9uTm90aWZpZXI7CisgICAg
R2VvTm90aWZpZXJTZXQgbV9wZW5kaW5nRm9yUGVybWlzc2lvbk5vdGlmaWVyczsKICNlbmRpZgog
ICAgIFJlZlB0cjxHZW9wb3NpdGlvbj4gbV9sYXN0UG9zaXRpb247CiAK
</data>
<flag name="review"
          id="53060"
          type_id="1"
          status="-"
          setter="steveblock"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64555</attachid>
            <date>2010-08-17 00:22:29 -0700</date>
            <delta_ts>2010-08-17 06:15:31 -0700</delta_ts>
            <desc>patch</desc>
            <filename>42811.patch</filename>
            <type>text/plain</type>
            <size>17033</size>
            <attacher name="Mahesh Kulkarni">maheshk</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAxNDMxNjY4Li4wZTk5YWFjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTAtMDgt
MTcgIE1haGVzaCBLdWxrYXJuaSAgPG1haGVzaC5rdWxrYXJuaUBub2tpYS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgR2VvbG9jYXRpb24gcHJl
ZW1wdGl2ZSBwZXJtaXNzaW9ucyBwb2xpY3kgaXMgYnVnZ3kKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQyODExCisKKyAgICAgICAgQWRkcyBjYXNlcyB3
aGVyZSBwZXJtaXNzaW9uIGlzIG5pZXRoZXIgZGVuaWVkIG9yIGdyYW50ZWQgaW1tZWRpYXRlbHkg
YW5kIG11bHRpcGxlCisgICAgICAgIHJlcXVlc3RzIGFyZSB3YWl0aW5nLgorCisgICAgICAgICog
ZmFzdC9kb20vR2VvbG9jYXRpb24vZGVsYXllZC1wZXJtaXNzaW9uLWFsbG93ZWQtZm9yLW11bHRp
cGxlLXJlcXVlc3RzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vR2Vv
bG9jYXRpb24vZGVsYXllZC1wZXJtaXNzaW9uLWFsbG93ZWQtZm9yLW11bHRpcGxlLXJlcXVlc3Rz
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0dlb2xvY2F0aW9uL2RlbGF5ZWQtcGVy
bWlzc2lvbi1kZW5pZWQtZm9yLW11bHRpcGxlLXJlcXVlc3RzLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogZmFzdC9kb20vR2VvbG9jYXRpb24vZGVsYXllZC1wZXJtaXNzaW9uLWRlbmll
ZC1mb3ItbXVsdGlwbGUtcmVxdWVzdHMuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20v
R2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL2RlbGF5ZWQtcGVybWlzc2lvbi1hbGxvd2VkLWZvci1t
dWx0aXBsZS1yZXF1ZXN0cy5qczogQWRkZWQuCisgICAgICAgIChhbGxvd1Blcm1pc3Npb24pOgor
ICAgICAgICAoKToKKyAgICAgICAgKG1heWJlRmluaXNoVGVzdCk6CisgICAgICAgICogZmFzdC9k
b20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL2RlbGF5ZWQtcGVybWlzc2lvbi1kZW5pZWQtZm9y
LW11bHRpcGxlLXJlcXVlc3RzLmpzOiBBZGRlZC4KKyAgICAgICAgKGRlbnlQZXJtaXNzaW9uKToK
KyAgICAgICAgKG1heWJlRmluaXNoVGVzdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1NraXBw
ZWQ6CisgICAgICAgICogcGxhdGZvcm0vcXQvU2tpcHBlZDoKKwogMjAxMC0wOC0wNSAgTU9SSVRB
IEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBUb255
IENoYW5nLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vZGVs
YXllZC1wZXJtaXNzaW9uLWFsbG93ZWQtZm9yLW11bHRpcGxlLXJlcXVlc3RzLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL2RlbGF5ZWQtcGVybWlzc2lvbi1h
bGxvd2VkLWZvci1tdWx0aXBsZS1yZXF1ZXN0cy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uMTM3ZjQ5NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL2RlbGF5ZWQtcGVybWlzc2lvbi1hbGxvd2VkLWZvci1t
dWx0aXBsZS1yZXF1ZXN0cy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMSBAQAorVGVzdHMgdGhh
dCB3aGVuIG11bHRpcGxlIHJlcXVlc3RzIGFyZSB3YWl0aW5nIGZvciBwZXJtaXNzaW9uLCBubyBj
YWxsYmFja3MgYXJlIGludm9rZWQgdW50aWwgcGVybWlzc2lvbiBpcyBhbGxvd2VkLgorCitPbiBz
dWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dl
ZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBTdWNjZXNzIGNhbGxiYWNrIGludm9rZWQK
K1BBU1MgU3VjY2VzcyBjYWxsYmFjayBpbnZva2VkCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9k
b20vR2VvbG9jYXRpb24vZGVsYXllZC1wZXJtaXNzaW9uLWFsbG93ZWQtZm9yLW11bHRpcGxlLXJl
cXVlc3RzLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9kZWxheWVkLXBl
cm1pc3Npb24tYWxsb3dlZC1mb3ItbXVsdGlwbGUtcmVxdWVzdHMuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi40MjFhMDI2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vZGVsYXllZC1wZXJtaXNzaW9uLWFsbG93ZWQtZm9y
LW11bHRpcGxlLXJlcXVlc3RzLmh0bWwKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIEhUTUwg
UFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3Nz
Ij4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9kZWxheWVkLXBlcm1p
c3Npb24tYWxsb3dlZC1mb3ItbXVsdGlwbGUtcmVxdWVzdHMuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRp
b24vZGVsYXllZC1wZXJtaXNzaW9uLWRlbmllZC1mb3ItbXVsdGlwbGUtcmVxdWVzdHMtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vZGVsYXllZC1wZXJtaXNz
aW9uLWRlbmllZC1mb3ItbXVsdGlwbGUtcmVxdWVzdHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhlZGUwM2MKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9kZWxheWVkLXBlcm1pc3Npb24tZGVuaWVkLWZv
ci1tdWx0aXBsZS1yZXF1ZXN0cy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMyBAQAorVGVzdHMg
dGhhdCB3aGVuIG11bHRpcGxlIHJlcXVlc3RzIGFyZSB3YWl0aW5nIGZvciBwZXJtaXNzaW9uLCBu
byBjYWxsYmFja3MgYXJlIGludm9rZWQgdW50aWwgcGVybWlzc2lvbiBpcyBkZW5pZWQuCisKK09u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGVycm9yLmNvZGUgaXMgZXJyb3IuUEVS
TUlTU0lPTl9ERU5JRUQKK1BBU1MgZXJyb3IubWVzc2FnZSBpcyAiVXNlciBkZW5pZWQgR2VvbG9j
YXRpb24iCitQQVNTIGVycm9yLmNvZGUgaXMgZXJyb3IuUEVSTUlTU0lPTl9ERU5JRUQKK1BBU1Mg
ZXJyb3IubWVzc2FnZSBpcyAiVXNlciBkZW5pZWQgR2VvbG9jYXRpb24iCitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vZGVsYXllZC1wZXJtaXNzaW9uLWRlbmllZC1mb3It
bXVsdGlwbGUtcmVxdWVzdHMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9u
L2RlbGF5ZWQtcGVybWlzc2lvbi1kZW5pZWQtZm9yLW11bHRpcGxlLXJlcXVlc3RzLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjE0MzA5NAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL2RlbGF5ZWQtcGVybWlzc2lvbi1k
ZW5pZWQtZm9yLW11bHRpcGxlLXJlcXVlc3RzLmh0bWwKQEAgLTAsMCArMSwxMyBAQAorPCFET0NU
WVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4K
KzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qt
c3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4K
KzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9kZWxh
eWVkLXBlcm1pc3Npb24tZGVuaWVkLWZvci1tdWx0aXBsZS1yZXF1ZXN0cy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9H
ZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvZGVsYXllZC1wZXJtaXNzaW9uLWFsbG93ZWQtZm9yLW11
bHRpcGxlLXJlcXVlc3RzLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vc2Ny
aXB0LXRlc3RzL2RlbGF5ZWQtcGVybWlzc2lvbi1hbGxvd2VkLWZvci1tdWx0aXBsZS1yZXF1ZXN0
cy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YjAyYTgyCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3Rz
L2RlbGF5ZWQtcGVybWlzc2lvbi1hbGxvd2VkLWZvci1tdWx0aXBsZS1yZXF1ZXN0cy5qcwpAQCAt
MCwwICsxLDUxIEBACitkZXNjcmlwdGlvbigiVGVzdHMgdGhhdCB3aGVuIG11bHRpcGxlIHJlcXVl
c3RzIGFyZSB3YWl0aW5nIGZvciBwZXJtaXNzaW9uLCBubyBjYWxsYmFja3MgYXJlIGludm9rZWQg
dW50aWwgcGVybWlzc2lvbiBpcyBhbGxvd2VkLiIpOworCitpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQorICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5zZXRNb2NrR2VvbG9j
YXRpb25Qb3NpdGlvbig1MS40NzgsIC0wLjE2NiwgMTAwKTsKKworZnVuY3Rpb24gYWxsb3dQZXJt
aXNzaW9uKCkgeworICAgIHBlcm1pc3Npb25TZXQgPSB0cnVlOworICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldEdlb2xv
Y2F0aW9uUGVybWlzc2lvbih0cnVlKTsKK30KKwordmFyIHdhdGNoQ2FsbGJhY2tJbnZva2VkID0g
ZmFsc2U7Cit2YXIgb25lU2hvdENhbGxiYWNrSW52b2tlZCA9IGZhbHNlOworCituYXZpZ2F0b3Iu
Z2VvbG9jYXRpb24ud2F0Y2hQb3NpdGlvbihmdW5jdGlvbigpIHsKKyAgICBpZiAocGVybWlzc2lv
blNldCkgeworICAgICAgICB0ZXN0UGFzc2VkKCdTdWNjZXNzIGNhbGxiYWNrIGludm9rZWQnKTsK
KyAgICAgICAgd2F0Y2hDYWxsYmFja0ludm9rZWQgPSB0cnVlOworICAgICAgICBtYXliZUZpbmlz
aFRlc3QoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICB0ZXN0RmFpbGVkKCdTdWNjZXNz
IGNhbGxiYWNrIGludm9rZWQgdW5leHBlY3RlZGx5Jyk7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9
LCBmdW5jdGlvbihlcnIpIHsKKyAgICB0ZXN0RmFpbGVkKCdFcnJvciBjYWxsYmFjayBpbnZva2Vk
IHVuZXhwZWN0ZWRseScpOworICAgIGZpbmlzaEpTVGVzdCgpOworfSk7CisKK25hdmlnYXRvci5n
ZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZnVuY3Rpb24oKSB7CisgICAgaWYgKHBlcm1p
c3Npb25TZXQpIHsKKyAgICAgICAgdGVzdFBhc3NlZCgnU3VjY2VzcyBjYWxsYmFjayBpbnZva2Vk
Jyk7CisgICAgICAgIG9uZVNob3RDYWxsYmFja0ludm9rZWQgPSB0cnVlOworICAgICAgICBtYXli
ZUZpbmlzaFRlc3QoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICB0ZXN0RmFpbGVkKCdT
dWNjZXNzIGNhbGxiYWNrIGludm9rZWQgdW5leHBlY3RlZGx5Jyk7CisgICAgZmluaXNoSlNUZXN0
KCk7Cit9LCBmdW5jdGlvbihlcnIpIHsKKyAgICB0ZXN0RmFpbGVkKCdFcnJvciBjYWxsYmFjayBp
bnZva2VkIHVuZXhwZWN0ZWRseScpOworICAgIGZpbmlzaEpTVGVzdCgpOworfSk7CisKK3dpbmRv
dy5zZXRUaW1lb3V0KGFsbG93UGVybWlzc2lvbiwgMTAwKTsKKworZnVuY3Rpb24gbWF5YmVGaW5p
c2hUZXN0KCkgeworICAgIGlmICh3YXRjaENhbGxiYWNrSW52b2tlZCAmJiBvbmVTaG90Q2FsbGJh
Y2tJbnZva2VkKQorICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKword2luZG93LmpzVGVzdElz
QXN5bmMgPSB0cnVlOword2luZG93LnN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvZGVsYXll
ZC1wZXJtaXNzaW9uLWRlbmllZC1mb3ItbXVsdGlwbGUtcmVxdWVzdHMuanMgYi9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvZGVsYXllZC1wZXJtaXNzaW9uLWRl
bmllZC1mb3ItbXVsdGlwbGUtcmVxdWVzdHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uZjIzMDA5MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9kZWxheWVkLXBlcm1pc3Npb24tZGVuaWVkLWZvci1t
dWx0aXBsZS1yZXF1ZXN0cy5qcwpAQCAtMCwwICsxLDU1IEBACitkZXNjcmlwdGlvbigiVGVzdHMg
dGhhdCB3aGVuIG11bHRpcGxlIHJlcXVlc3RzIGFyZSB3YWl0aW5nIGZvciBwZXJtaXNzaW9uLCBu
byBjYWxsYmFja3MgYXJlIGludm9rZWQgdW50aWwgcGVybWlzc2lvbiBpcyBkZW5pZWQuIik7CisK
K2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgd2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyLnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKDUxLjQ3OCwgLTAuMTY2LCAxMDAp
OworCitmdW5jdGlvbiBkZW55UGVybWlzc2lvbigpIHsKKyAgICBwZXJtaXNzaW9uU2V0ID0gdHJ1
ZTsKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5zZXRHZW9sb2NhdGlvblBlcm1pc3Npb24oZmFsc2UpOworfQorCit2YXIg
d2F0Y2hDYWxsYmFja0ludm9rZWQgPSBmYWxzZTsKK3ZhciBvbmVTaG90Q2FsbGJhY2tJbnZva2Vk
ID0gZmFsc2U7Cit2YXIgZXJyb3I7CisKK25hdmlnYXRvci5nZW9sb2NhdGlvbi53YXRjaFBvc2l0
aW9uKGZ1bmN0aW9uKCkgeworICAgIHRlc3RGYWlsZWQoJ1N1Y2Nlc3MgY2FsbGJhY2sgaW52b2tl
ZCB1bmV4cGVjdGVkbHknKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30sIGZ1bmN0aW9uKGUpIHsK
KyAgICBpZiAocGVybWlzc2lvblNldCkgeworICAgICAgICBlcnJvciA9IGU7CisgICAgICAgIHNo
b3VsZEJlKCdlcnJvci5jb2RlJywgJ2Vycm9yLlBFUk1JU1NJT05fREVOSUVEJyk7CisgICAgICAg
IHNob3VsZEJlKCdlcnJvci5tZXNzYWdlJywgJyJVc2VyIGRlbmllZCBHZW9sb2NhdGlvbiInKTsK
KyAgICAgICAgd2F0Y2hDYWxsYmFja0ludm9rZWQgPSB0cnVlOworICAgICAgICBtYXliZUZpbmlz
aFRlc3QoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICB0ZXN0RmFpbGVkKCdFcnJvciBj
YWxsYmFjayBpbnZva2VkIHVuZXhwZWN0ZWRseScpOworICAgIGZpbmlzaEpTVGVzdCgpOworfSk7
CisKK25hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZnVuY3Rpb24oKSB7
CisgICAgdGVzdEZhaWxlZCgnU3VjY2VzcyBjYWxsYmFjayBpbnZva2VkIHVuZXhwZWN0ZWRseScp
OworICAgIGZpbmlzaEpTVGVzdCgpOworfSwgZnVuY3Rpb24oZSkgeworICAgIGlmIChwZXJtaXNz
aW9uU2V0KSB7CisgICAgICAgIGVycm9yID0gZTsKKyAgICAgICAgc2hvdWxkQmUoJ2Vycm9yLmNv
ZGUnLCAnZXJyb3IuUEVSTUlTU0lPTl9ERU5JRUQnKTsKKyAgICAgICAgc2hvdWxkQmUoJ2Vycm9y
Lm1lc3NhZ2UnLCAnIlVzZXIgZGVuaWVkIEdlb2xvY2F0aW9uIicpOworICAgICAgICBvbmVTaG90
Q2FsbGJhY2tJbnZva2VkID0gdHJ1ZTsKKyAgICAgICAgbWF5YmVGaW5pc2hUZXN0KCk7ICAgICAg
ICAKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICB0ZXN0RmFpbGVkKCdFcnJvciBjYWxsYmFj
ayBpbnZva2VkIHVuZXhwZWN0ZWRseScpOworICAgIGZpbmlzaEpTVGVzdCgpOworfSk7Cit3aW5k
b3cuc2V0VGltZW91dChkZW55UGVybWlzc2lvbiwgMTAwKTsKKworZnVuY3Rpb24gbWF5YmVGaW5p
c2hUZXN0KCkgeworICAgIGlmICh3YXRjaENhbGxiYWNrSW52b2tlZCAmJiBvbmVTaG90Q2FsbGJh
Y2tJbnZva2VkKQorICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKword2luZG93LmpzVGVzdElz
QXN5bmMgPSB0cnVlOword2luZG93LnN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL2d0ay9Ta2lwcGVkCmluZGV4IGM4MDFlMjIuLjM3ZjNiYmMgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0
ay9Ta2lwcGVkCkBAIC0xMDkxLDYgKzEwOTEsOCBAQCBmYXN0L2RvbS9EZXZpY2VPcmllbnRhdGlv
bi93aW5kb3ctcHJvcGVydHkuaHRtbAogZmFzdC9kb20vR2VvbG9jYXRpb24vY2FsbGJhY2stZXhj
ZXB0aW9uLmh0bWwKIGZhc3QvZG9tL0dlb2xvY2F0aW9uL2RlbGF5ZWQtcGVybWlzc2lvbi1hbGxv
d2VkLmh0bWwKIGZhc3QvZG9tL0dlb2xvY2F0aW9uL2RlbGF5ZWQtcGVybWlzc2lvbi1kZW5pZWQu
aHRtbAorZmFzdC9kb20vR2VvbG9jYXRpb24vZGVsYXllZC1wZXJtaXNzaW9uLWFsbG93ZWQtZm9y
LW11bHRpcGxlLXJlcXVlc3RzLmh0bWwKK2Zhc3QvZG9tL0dlb2xvY2F0aW9uL2RlbGF5ZWQtcGVy
bWlzc2lvbi1kZW5pZWQtZm9yLW11bHRpcGxlLXJlcXVlc3RzLmh0bWwKIGZhc3QvZG9tL0dlb2xv
Y2F0aW9uL2Vycm9yLmh0bWwKIGZhc3QvZG9tL0dlb2xvY2F0aW9uL211bHRpcGxlLXJlcXVlc3Rz
Lmh0bWwKIGZhc3QvZG9tL0dlb2xvY2F0aW9uL3Blcm1pc3Npb24tZGVuaWVkLWFscmVhZHktY2xl
YXItd2F0Y2guaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBl
ZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKaW5kZXggNTkyNmRkNi4uZjM5NWI4
ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAorKysgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCkBAIC01NDkwLDkgKzU0OTAsMTEgQEAgZmFzdC9l
dmVudHMva2V5ZG93bi1udW1wYWQta2V5cy5odG1sCiBmYXN0L2V2ZW50cy9zcGVjaWFsLWtleS1l
dmVudHMtaW4taW5wdXQtdGV4dC5odG1sCiAKICMgW1F0XSBEdW1wUmVuZGVyVHJlZSBsYWNrcyBm
dW5jdGlvbmFsaXR5IGZvciBuZXcgR2VvbG9jYXRpb24gZGVsYXllZCBwZXJtaXNzaW9uIHRlc3Rz
Ci0jIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MzQ3OAorIyBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDEzNjQKIGZhc3QvZG9tL0dlb2xv
Y2F0aW9uL2RlbGF5ZWQtcGVybWlzc2lvbi1hbGxvd2VkLmh0bWwKIGZhc3QvZG9tL0dlb2xvY2F0
aW9uL2RlbGF5ZWQtcGVybWlzc2lvbi1kZW5pZWQuaHRtbAorZmFzdC9kb20vR2VvbG9jYXRpb24v
ZGVsYXllZC1wZXJtaXNzaW9uLWFsbG93ZWQtZm9yLW11bHRpcGxlLXJlcXVlc3RzLmh0bWwKK2Zh
c3QvZG9tL0dlb2xvY2F0aW9uL2RlbGF5ZWQtcGVybWlzc2lvbi1kZW5pZWQtZm9yLW11bHRpcGxl
LXJlcXVlc3RzLmh0bWwKIAogIyBCbG9kQnVpbGRlciBpcyBub3QgZW5hYmxlZAogaHR0cC90ZXN0
cy9sb2NhbC9ibG9iL3NlbmQtZGF0YS1ibG9iLmh0bWwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hh
bmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzA0YmRjOC4uMzZiOGM5NSAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwyOCBAQAorMjAxMC0wOC0xNyAgTWFoZXNoIEt1bGthcm5pICA8bWFoZXNoLmt1bGthcm5pQG5v
a2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBHZW9sb2NhdGlvbiBwcmVlbXB0aXZlIHBlcm1pc3Npb25zIHBvbGljeSBpcyBidWdneQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDI4MTEKKworICAg
ICAgICAgV2hpbGUgd2FpdGluZyBmb3IgcGVybWlzc2lvbiwgbV9zdGFydFJlcXVlc3RQZXJtaXNz
aW9uTm90aWZpZXIgd2FzIAorICAgICAgICB1c2VkIHRvIGNvbnNpZGVyIG9ubHkgb25lIHBlbmRp
bmcgcmVxdWVzdC4gVGhpcyBwYXRjaCBpbXBsZW1lbnRzIGEgc2V0CisgICAgICAgIG1fcGVuZGlu
Z0ZvclBlcm1pc3Npb25Ob3RpZmllcnMgdG8gbWFpbnRhaW4gc2V0IG9mIHBlbmRpbmcgcmVxdWVz
dHMuIAorICAgICAgICBXaGVuIHVzZXIgZ3JhbnRzL2RlbmllcyBwZXJtaXNzaW9uIGFsbCBsaXN0
ZW5lcidzIHdpbGwgYmUgbm90aWZpZWQuIAorICAgICAgICBBbHNvIGZpeGVkIGlzc3VlIHdpdGgg
aGFzWmVyb1RpbWVvdXQoKSB3aGVyZSBzdGFydFRpbWVySWZOZWVkZWQoKSBoYXMKKyAgICAgICAg
dG8gc3RhcnQgaXJyZXNwZWN0aXZlIG9mIHBlcm1pc3Npb24gc3RhdGUKKworICAgICAgICBUZXN0
czogZmFzdC9kb20vR2VvbG9jYXRpb24vZGVsYXllZC1wZXJtaXNzaW9uLWFsbG93ZWQtZm9yLW11
bHRpcGxlLXJlcXVlc3RzLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL0dlb2xvY2F0aW9u
L2RlbGF5ZWQtcGVybWlzc2lvbi1kZW5pZWQtZm9yLW11bHRpcGxlLXJlcXVlc3RzLmh0bWwKKwor
ICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIHBhZ2UvR2VvbG9jYXRpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246OnN0YXJ0UmVxdWVzdCk6CisgICAgICAgIChX
ZWJDb3JlOjpHZW9sb2NhdGlvbjo6c2V0SXNBbGxvd2VkKToKKyAgICAgICAgKFdlYkNvcmU6Okdl
b2xvY2F0aW9uOjpzdGFydFVwZGF0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9u
OjpoYW5kbGVQZW5kaW5nUGVybWlzc2lvbk5vdGlmaWVycyk6CisgICAgICAgICogcGFnZS9HZW9s
b2NhdGlvbi5oOgorCiAyMDEwLTA4LTA4ICBLZXZpbiBPbGxpdmllciAgPGtldmlub0B0aGVvbGxp
dmllcnMuY29tPgogCiAgICAgICAgIFt3eF0gQnVpbGQgZml4LCBhZGQgbWVtYmVyIG5lZWRlZCB0
byBjb21waWxlIE1hYy1zcGVjaWZpYyBmb250IGNvZGUuCmRpZmYgLS1naXQgYS9XZWJDb3JlL3Bh
Z2UvR2VvbG9jYXRpb24uY3BwIGIvV2ViQ29yZS9wYWdlL0dlb2xvY2F0aW9uLmNwcAppbmRleCAy
MGRiNGJmLi5lYjdhYjkzIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvR2VvbG9jYXRpb24uY3Bw
CisrKyBiL1dlYkNvcmUvcGFnZS9HZW9sb2NhdGlvbi5jcHAKQEAgLTI3OCwxMyArMjc4LDE4IEBA
IFBhc3NSZWZQdHI8R2VvbG9jYXRpb246Okdlb05vdGlmaWVyPiBHZW9sb2NhdGlvbjo6c3RhcnRS
ZXF1ZXN0KFBhc3NSZWZQdHI8UG9zaXRpCiAgICAgICAgIG5vdGlmaWVyLT5zZXRGYXRhbEVycm9y
KFBvc2l0aW9uRXJyb3I6OmNyZWF0ZShQb3NpdGlvbkVycm9yOjpQRVJNSVNTSU9OX0RFTklFRCwg
cGVybWlzc2lvbkRlbmllZEVycm9yTWVzc2FnZSkpOwogICAgIGVsc2UgaWYgKGhhdmVTdWl0YWJs
ZUNhY2hlZFBvc2l0aW9uKG5vdGlmaWVyLT5tX29wdGlvbnMuZ2V0KCkpKQogICAgICAgICBub3Rp
Zmllci0+c2V0VXNlQ2FjaGVkUG9zaXRpb24oKTsKLSAgICBlbHNlIGlmIChub3RpZmllci0+aGFz
WmVyb1RpbWVvdXQoKSB8fCBzdGFydFVwZGF0aW5nKG5vdGlmaWVyLmdldCgpKSkgeworICAgIGVs
c2UgaWYgKG5vdGlmaWVyLT5oYXNaZXJvVGltZW91dCgpKQorICAgICAgICBub3RpZmllci0+c3Rh
cnRUaW1lcklmTmVlZGVkKCk7CiAjaWYgVVNFKFBSRUVNUFRfR0VPTE9DQVRJT05fUEVSTUlTU0lP
TikKLSAgICAgICAgLy8gT25seSBzdGFydCB0aW1lciBpZiB3ZSdyZSBub3Qgd2FpdGluZyBmb3Ig
dXNlciBwZXJtaXNzaW9uLgotICAgICAgICBpZiAoIW1fc3RhcnRSZXF1ZXN0UGVybWlzc2lvbk5v
dGlmaWVyKQotI2VuZGlmICAgICAgICAgICAgCi0gICAgICAgICAgICBub3RpZmllci0+c3RhcnRU
aW1lcklmTmVlZGVkKCk7Ci0gICAgfSBlbHNlCisgICAgZWxzZSBpZiAoIWlzQWxsb3dlZCgpKSB7
CisgICAgICAgIC8vIGlmIHdlIGRvbid0IHlldCBoYXZlIHBlcm1pc3Npb24sIHJlcXVlc3QgZm9y
IHBlcm1pc3Npb24gYmVmb3JlIGNhbGxpbmcgc3RhcnRVcGRhdGluZygpCisgICAgICAgIG1fcGVu
ZGluZ0ZvclBlcm1pc3Npb25Ob3RpZmllcnMuYWRkKG5vdGlmaWVyKTsKKyAgICAgICAgcmVxdWVz
dFBlcm1pc3Npb24oKTsKKyAgICB9CisjZW5kaWYKKyAgICBlbHNlIGlmIChzdGFydFVwZGF0aW5n
KG5vdGlmaWVyLmdldCgpKSkKKyAgICAgICAgbm90aWZpZXItPnN0YXJ0VGltZXJJZk5lZWRlZCgp
OworICAgIGVsc2UKICAgICAgICAgbm90aWZpZXItPnNldEZhdGFsRXJyb3IoUG9zaXRpb25FcnJv
cjo6Y3JlYXRlKFBvc2l0aW9uRXJyb3I6OlBPU0lUSU9OX1VOQVZBSUxBQkxFLCBmYWlsZWRUb1N0
YXJ0U2VydmljZUVycm9yTWVzc2FnZSkpOwogCiAgICAgcmV0dXJuIG5vdGlmaWVyLnJlbGVhc2Uo
KTsKQEAgLTQwMSwyOCArNDA2LDEwIEBAIHZvaWQgR2VvbG9jYXRpb246OnNldElzQWxsb3dlZChi
b29sIGFsbG93ZWQpCiAgICAgbV9hbGxvd0dlb2xvY2F0aW9uID0gYWxsb3dlZCA/IFllcyA6IE5v
OwogICAgIAogI2lmIFVTRShQUkVFTVBUX0dFT0xPQ0FUSU9OX1BFUk1JU1NJT04pCi0gICAgaWYg
KG1fc3RhcnRSZXF1ZXN0UGVybWlzc2lvbk5vdGlmaWVyKSB7Ci0gICAgICAgIGlmIChpc0FsbG93
ZWQoKSkgewotICAgICAgICAgICAgLy8gUGVybWlzc2lvbiByZXF1ZXN0IHdhcyBtYWRlIGR1cmlu
ZyB0aGUgc3RhcnRVcGRhdGluZyBwcm9jZXNzCi0gICAgICAgICAgICBtX3N0YXJ0UmVxdWVzdFBl
cm1pc3Npb25Ob3RpZmllci0+c3RhcnRUaW1lcklmTmVlZGVkKCk7Ci0gICAgICAgICAgICAvLyBU
aGUgbm90aWZpZXIgaXMgYWx3YXlzIHJlZidlZCBieSBtX29uZVNob3RzIG9yIG1fd2F0Y2hlcnMu
Ci0gICAgICAgICAgICBHZW9Ob3RpZmllciogbm90aWZpZXIgPSBtX3N0YXJ0UmVxdWVzdFBlcm1p
c3Npb25Ob3RpZmllci5nZXQoKTsKLSAgICAgICAgICAgIG1fc3RhcnRSZXF1ZXN0UGVybWlzc2lv
bk5vdGlmaWVyID0gMDsKLSNpZiBFTkFCTEUoQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OKQotICAg
ICAgICAgICAgaWYgKCFtX2ZyYW1lKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
ICAgIFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7Ci0gICAgICAgICAgICBpZiAoIXBhZ2Up
Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgcGFnZS0+Z2VvbG9jYXRpb25D
b250cm9sbGVyKCktPmFkZE9ic2VydmVyKHRoaXMsIG5vdGlmaWVyLT5tX29wdGlvbnMtPmVuYWJs
ZUhpZ2hBY2N1cmFjeSgpKTsKLSNlbHNlCi0gICAgICAgICAgICAvLyBUT0RPOiBIYW5kbGUgc3Rh
cnRVcGRhdGUoKSBmb3Igbm9uLWNsaWVudCBiYXNlZCBpbXBsZW1lbnRhdGlvbnMgdXNpbmcgcHJl
LWVtcHRpdmUgcG9saWN5Ci0jZW5kaWYKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG1f
c3RhcnRSZXF1ZXN0UGVybWlzc2lvbk5vdGlmaWVyLT5zZXRGYXRhbEVycm9yKFBvc2l0aW9uRXJy
b3I6OmNyZWF0ZShQb3NpdGlvbkVycm9yOjpQRVJNSVNTSU9OX0RFTklFRCwgcGVybWlzc2lvbkRl
bmllZEVycm9yTWVzc2FnZSkpOwotICAgICAgICAgICAgbV9vbmVTaG90cy5hZGQobV9zdGFydFJl
cXVlc3RQZXJtaXNzaW9uTm90aWZpZXIpOwotICAgICAgICAgICAgbV9zdGFydFJlcXVlc3RQZXJt
aXNzaW9uTm90aWZpZXIgPSAwOwotICAgICAgICB9CisgICAgLy8gUGVybWlzc2lvbiByZXF1ZXN0
IHdhcyBtYWRlIGR1cmluZyB0aGUgc3RhcnRSZXF1ZXN0IHByb2Nlc3MKKyAgICBpZiAoIW1fcGVu
ZGluZ0ZvclBlcm1pc3Npb25Ob3RpZmllcnMuaXNFbXB0eSgpKSB7CisgICAgICAgIGhhbmRsZVBl
bmRpbmdQZXJtaXNzaW9uTm90aWZpZXJzKCk7CisgICAgICAgIG1fcGVuZGluZ0ZvclBlcm1pc3Np
b25Ob3RpZmllcnMuY2xlYXIoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgpAQCAt
NjE4LDE0ICs2MDUsNiBAQCB2b2lkIEdlb2xvY2F0aW9uOjpnZW9sb2NhdGlvblNlcnZpY2VFcnJv
ck9jY3VycmVkKEdlb2xvY2F0aW9uU2VydmljZSogc2VydmljZSkKIAogYm9vbCBHZW9sb2NhdGlv
bjo6c3RhcnRVcGRhdGluZyhHZW9Ob3RpZmllciogbm90aWZpZXIpCiB7Ci0jaWYgVVNFKFBSRUVN
UFRfR0VPTE9DQVRJT05fUEVSTUlTU0lPTikKLSAgICBpZiAoIWlzQWxsb3dlZCgpKSB7Ci0gICAg
ICAgIG1fc3RhcnRSZXF1ZXN0UGVybWlzc2lvbk5vdGlmaWVyID0gbm90aWZpZXI7Ci0gICAgICAg
IHJlcXVlc3RQZXJtaXNzaW9uKCk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSNlbmRp
ZgotCiAjaWYgRU5BQkxFKENMSUVOVF9CQVNFRF9HRU9MT0NBVElPTikKICAgICBpZiAoIW1fZnJh
bWUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTY1OCw2ICs2MzcsMzggQEAgdm9pZCBHZW9s
b2NhdGlvbjo6c3RvcFVwZGF0aW5nKCkKIAogfQogCisjaWYgVVNFKFBSRUVNUFRfR0VPTE9DQVRJ
T05fUEVSTUlTU0lPTikKK3ZvaWQgR2VvbG9jYXRpb246OmhhbmRsZVBlbmRpbmdQZXJtaXNzaW9u
Tm90aWZpZXJzKCkKK3sKKyNpZiBFTkFCTEUoQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OKQorICAg
IGlmICghbV9mcmFtZSkKKyAgICAgICAgcmV0dXJuOworICAgIFBhZ2UqIHBhZ2UgPSBtX2ZyYW1l
LT5wYWdlKCk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm47CisjZW5kaWYKKworICAg
IC8vIFdoaWxlIHdlIGl0ZXJhdGUgdGhyb3VnaCB0aGUgbGlzdCwgd2UgbmVlZCBub3Qgd29ycnkg
YWJvdXQgbGlzdCBiZWluZyBtb2RpZmllZCBhcyB0aGUgcGVybWlzc2lvbiAKKyAgICAvLyBpcyBh
bHJlYWR5IHNldCB0byBZZXMvTm8gYW5kIG5vIG5ldyBsaXN0ZW5lcnMgd2lsbCBiZSBhZGRlZCB0
byB0aGUgcGVuZGluZyBsaXN0CisgICAgR2VvTm90aWZpZXJTZXQ6OmNvbnN0X2l0ZXJhdG9yIGVu
ZCA9IG1fcGVuZGluZ0ZvclBlcm1pc3Npb25Ob3RpZmllcnMuZW5kKCk7CisgICAgZm9yIChHZW9O
b3RpZmllclNldDo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IG1fcGVuZGluZ0ZvclBlcm1pc3Npb25O
b3RpZmllcnMuYmVnaW4oKTsgaXRlciAhPSBlbmQ7ICsraXRlcikgeworICAgICAgICBHZW9Ob3Rp
Zmllciogbm90aWZpZXIgPSBpdGVyLT5nZXQoKTsKKworICAgICAgICBpZiAoaXNBbGxvd2VkKCkp
IHsKKyAgICAgICAgICAgIC8vIHN0YXJ0IGFsbCBwZW5kaW5nIG5vdGlmaWNhdGlvbiByZXF1ZXN0
cyBhcyBwZXJtaXNzaW9uIGdyYW50ZWQuCisgICAgICAgICAgICAvLyBUaGUgbm90aWZpZXIgaXMg
YWx3YXlzIHJlZidlZCBieSBtX29uZVNob3RzIG9yIG1fd2F0Y2hlcnMuCisjaWYgRU5BQkxFKENM
SUVOVF9CQVNFRF9HRU9MT0NBVElPTikKKyAgICAgICAgICAgIG5vdGlmaWVyLT5zdGFydFRpbWVy
SWZOZWVkZWQoKTsKKyAgICAgICAgICAgIHBhZ2UtPmdlb2xvY2F0aW9uQ29udHJvbGxlcigpLT5h
ZGRPYnNlcnZlcih0aGlzLCBub3RpZmllci0+bV9vcHRpb25zLT5lbmFibGVIaWdoQWNjdXJhY3ko
KSk7CisjZWxzZQorICAgICAgICAgICAgLy8gVE9ETzogSGFuZGxlIHN0YXJ0VXBkYXRlKCkgZm9y
IG5vbi1jbGllbnQgYmFzZWQgaW1wbGVtZW50YXRpb25zIHVzaW5nIHByZS1lbXB0aXZlIHBvbGlj
eQorI2VuZGlmCisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgbm90aWZpZXItPnNldEZhdGFs
RXJyb3IoUG9zaXRpb25FcnJvcjo6Y3JlYXRlKFBvc2l0aW9uRXJyb3I6OlBFUk1JU1NJT05fREVO
SUVELCBwZXJtaXNzaW9uRGVuaWVkRXJyb3JNZXNzYWdlKSk7CisgICAgfQorfQorI2VuZGlmCisK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2Vsc2UKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFn
ZS9HZW9sb2NhdGlvbi5oIGIvV2ViQ29yZS9wYWdlL0dlb2xvY2F0aW9uLmgKaW5kZXggOGM0N2Q5
Yy4uZmU0NzMxZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0dlb2xvY2F0aW9uLmgKKysrIGIv
V2ViQ29yZS9wYWdlL0dlb2xvY2F0aW9uLmgKQEAgLTE0NCw2ICsxNDQsMTAgQEAgcHJpdmF0ZToK
ICAgICBib29sIHN0YXJ0VXBkYXRpbmcoR2VvTm90aWZpZXIqKTsKICAgICB2b2lkIHN0b3BVcGRh
dGluZygpOwogCisjaWYgVVNFKFBSRUVNUFRfR0VPTE9DQVRJT05fUEVSTUlTU0lPTikKKyAgICB2
b2lkIGhhbmRsZVBlbmRpbmdQZXJtaXNzaW9uTm90aWZpZXJzKCk7CisjZW5kaWYKKwogI2lmICFF
TkFCTEUoQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OKSAmJiBFTkFCTEUoR0VPTE9DQVRJT04pCiAg
ICAgLy8gR2VvbG9jYXRpb25TZXJ2aWNlQ2xpZW50CiAgICAgdmlydHVhbCB2b2lkIGdlb2xvY2F0
aW9uU2VydmljZVBvc2l0aW9uQ2hhbmdlZChHZW9sb2NhdGlvblNlcnZpY2UqKTsKQEAgLTE2Nyw3
ICsxNzEsNyBAQCBwcml2YXRlOgogICAgIE93blB0cjxHZW9sb2NhdGlvblNlcnZpY2U+IG1fc2Vy
dmljZTsKICNlbmRpZgogI2lmIFVTRShQUkVFTVBUX0dFT0xPQ0FUSU9OX1BFUk1JU1NJT04pCi0g
ICAgUmVmUHRyPEdlb05vdGlmaWVyPiBtX3N0YXJ0UmVxdWVzdFBlcm1pc3Npb25Ob3RpZmllcjsK
KyAgICBHZW9Ob3RpZmllclNldCBtX3BlbmRpbmdGb3JQZXJtaXNzaW9uTm90aWZpZXJzOwogI2Vu
ZGlmCiAgICAgUmVmUHRyPEdlb3Bvc2l0aW9uPiBtX2xhc3RQb3NpdGlvbjsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64579</attachid>
            <date>2010-08-17 06:15:06 -0700</date>
            <delta_ts>2010-08-17 09:54:46 -0700</delta_ts>
            <desc>patch</desc>
            <filename>42811.patch</filename>
            <type>text/plain</type>
            <size>17031</size>
            <attacher name="Mahesh Kulkarni">maheshk</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAxNDMxNjY4Li4wZTk5YWFjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTAtMDgt
MTcgIE1haGVzaCBLdWxrYXJuaSAgPG1haGVzaC5rdWxrYXJuaUBub2tpYS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgR2VvbG9jYXRpb24gcHJl
ZW1wdGl2ZSBwZXJtaXNzaW9ucyBwb2xpY3kgaXMgYnVnZ3kKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQyODExCisKKyAgICAgICAgQWRkcyBjYXNlcyB3
aGVyZSBwZXJtaXNzaW9uIGlzIG5pZXRoZXIgZGVuaWVkIG9yIGdyYW50ZWQgaW1tZWRpYXRlbHkg
YW5kIG11bHRpcGxlCisgICAgICAgIHJlcXVlc3RzIGFyZSB3YWl0aW5nLgorCisgICAgICAgICog
ZmFzdC9kb20vR2VvbG9jYXRpb24vZGVsYXllZC1wZXJtaXNzaW9uLWFsbG93ZWQtZm9yLW11bHRp
cGxlLXJlcXVlc3RzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vR2Vv
bG9jYXRpb24vZGVsYXllZC1wZXJtaXNzaW9uLWFsbG93ZWQtZm9yLW11bHRpcGxlLXJlcXVlc3Rz
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0dlb2xvY2F0aW9uL2RlbGF5ZWQtcGVy
bWlzc2lvbi1kZW5pZWQtZm9yLW11bHRpcGxlLXJlcXVlc3RzLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogZmFzdC9kb20vR2VvbG9jYXRpb24vZGVsYXllZC1wZXJtaXNzaW9uLWRlbmll
ZC1mb3ItbXVsdGlwbGUtcmVxdWVzdHMuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20v
R2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL2RlbGF5ZWQtcGVybWlzc2lvbi1hbGxvd2VkLWZvci1t
dWx0aXBsZS1yZXF1ZXN0cy5qczogQWRkZWQuCisgICAgICAgIChhbGxvd1Blcm1pc3Npb24pOgor
ICAgICAgICAoKToKKyAgICAgICAgKG1heWJlRmluaXNoVGVzdCk6CisgICAgICAgICogZmFzdC9k
b20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL2RlbGF5ZWQtcGVybWlzc2lvbi1kZW5pZWQtZm9y
LW11bHRpcGxlLXJlcXVlc3RzLmpzOiBBZGRlZC4KKyAgICAgICAgKGRlbnlQZXJtaXNzaW9uKToK
KyAgICAgICAgKG1heWJlRmluaXNoVGVzdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1NraXBw
ZWQ6CisgICAgICAgICogcGxhdGZvcm0vcXQvU2tpcHBlZDoKKwogMjAxMC0wOC0wNSAgTU9SSVRB
IEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBUb255
IENoYW5nLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vZGVs
YXllZC1wZXJtaXNzaW9uLWFsbG93ZWQtZm9yLW11bHRpcGxlLXJlcXVlc3RzLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL2RlbGF5ZWQtcGVybWlzc2lvbi1h
bGxvd2VkLWZvci1tdWx0aXBsZS1yZXF1ZXN0cy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uMTM3ZjQ5NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL2RlbGF5ZWQtcGVybWlzc2lvbi1hbGxvd2VkLWZvci1t
dWx0aXBsZS1yZXF1ZXN0cy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMSBAQAorVGVzdHMgdGhh
dCB3aGVuIG11bHRpcGxlIHJlcXVlc3RzIGFyZSB3YWl0aW5nIGZvciBwZXJtaXNzaW9uLCBubyBj
YWxsYmFja3MgYXJlIGludm9rZWQgdW50aWwgcGVybWlzc2lvbiBpcyBhbGxvd2VkLgorCitPbiBz
dWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dl
ZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBTdWNjZXNzIGNhbGxiYWNrIGludm9rZWQK
K1BBU1MgU3VjY2VzcyBjYWxsYmFjayBpbnZva2VkCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9k
b20vR2VvbG9jYXRpb24vZGVsYXllZC1wZXJtaXNzaW9uLWFsbG93ZWQtZm9yLW11bHRpcGxlLXJl
cXVlc3RzLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9kZWxheWVkLXBl
cm1pc3Npb24tYWxsb3dlZC1mb3ItbXVsdGlwbGUtcmVxdWVzdHMuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi40MjFhMDI2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vZGVsYXllZC1wZXJtaXNzaW9uLWFsbG93ZWQtZm9y
LW11bHRpcGxlLXJlcXVlc3RzLmh0bWwKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIEhUTUwg
UFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3Nz
Ij4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9kZWxheWVkLXBlcm1p
c3Npb24tYWxsb3dlZC1mb3ItbXVsdGlwbGUtcmVxdWVzdHMuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRp
b24vZGVsYXllZC1wZXJtaXNzaW9uLWRlbmllZC1mb3ItbXVsdGlwbGUtcmVxdWVzdHMtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vZGVsYXllZC1wZXJtaXNz
aW9uLWRlbmllZC1mb3ItbXVsdGlwbGUtcmVxdWVzdHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhlZGUwM2MKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9kZWxheWVkLXBlcm1pc3Npb24tZGVuaWVkLWZv
ci1tdWx0aXBsZS1yZXF1ZXN0cy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMyBAQAorVGVzdHMg
dGhhdCB3aGVuIG11bHRpcGxlIHJlcXVlc3RzIGFyZSB3YWl0aW5nIGZvciBwZXJtaXNzaW9uLCBu
byBjYWxsYmFja3MgYXJlIGludm9rZWQgdW50aWwgcGVybWlzc2lvbiBpcyBkZW5pZWQuCisKK09u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGVycm9yLmNvZGUgaXMgZXJyb3IuUEVS
TUlTU0lPTl9ERU5JRUQKK1BBU1MgZXJyb3IubWVzc2FnZSBpcyAiVXNlciBkZW5pZWQgR2VvbG9j
YXRpb24iCitQQVNTIGVycm9yLmNvZGUgaXMgZXJyb3IuUEVSTUlTU0lPTl9ERU5JRUQKK1BBU1Mg
ZXJyb3IubWVzc2FnZSBpcyAiVXNlciBkZW5pZWQgR2VvbG9jYXRpb24iCitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vZGVsYXllZC1wZXJtaXNzaW9uLWRlbmllZC1mb3It
bXVsdGlwbGUtcmVxdWVzdHMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9u
L2RlbGF5ZWQtcGVybWlzc2lvbi1kZW5pZWQtZm9yLW11bHRpcGxlLXJlcXVlc3RzLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjE0MzA5NAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL2RlbGF5ZWQtcGVybWlzc2lvbi1k
ZW5pZWQtZm9yLW11bHRpcGxlLXJlcXVlc3RzLmh0bWwKQEAgLTAsMCArMSwxMyBAQAorPCFET0NU
WVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4K
KzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qt
c3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4K
KzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9kZWxh
eWVkLXBlcm1pc3Npb24tZGVuaWVkLWZvci1tdWx0aXBsZS1yZXF1ZXN0cy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9H
ZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvZGVsYXllZC1wZXJtaXNzaW9uLWFsbG93ZWQtZm9yLW11
bHRpcGxlLXJlcXVlc3RzLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vc2Ny
aXB0LXRlc3RzL2RlbGF5ZWQtcGVybWlzc2lvbi1hbGxvd2VkLWZvci1tdWx0aXBsZS1yZXF1ZXN0
cy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YjAyYTgyCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3Rz
L2RlbGF5ZWQtcGVybWlzc2lvbi1hbGxvd2VkLWZvci1tdWx0aXBsZS1yZXF1ZXN0cy5qcwpAQCAt
MCwwICsxLDUxIEBACitkZXNjcmlwdGlvbigiVGVzdHMgdGhhdCB3aGVuIG11bHRpcGxlIHJlcXVl
c3RzIGFyZSB3YWl0aW5nIGZvciBwZXJtaXNzaW9uLCBubyBjYWxsYmFja3MgYXJlIGludm9rZWQg
dW50aWwgcGVybWlzc2lvbiBpcyBhbGxvd2VkLiIpOworCitpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQorICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5zZXRNb2NrR2VvbG9j
YXRpb25Qb3NpdGlvbig1MS40NzgsIC0wLjE2NiwgMTAwKTsKKworZnVuY3Rpb24gYWxsb3dQZXJt
aXNzaW9uKCkgeworICAgIHBlcm1pc3Npb25TZXQgPSB0cnVlOworICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldEdlb2xv
Y2F0aW9uUGVybWlzc2lvbih0cnVlKTsKK30KKwordmFyIHdhdGNoQ2FsbGJhY2tJbnZva2VkID0g
ZmFsc2U7Cit2YXIgb25lU2hvdENhbGxiYWNrSW52b2tlZCA9IGZhbHNlOworCituYXZpZ2F0b3Iu
Z2VvbG9jYXRpb24ud2F0Y2hQb3NpdGlvbihmdW5jdGlvbigpIHsKKyAgICBpZiAocGVybWlzc2lv
blNldCkgeworICAgICAgICB0ZXN0UGFzc2VkKCdTdWNjZXNzIGNhbGxiYWNrIGludm9rZWQnKTsK
KyAgICAgICAgd2F0Y2hDYWxsYmFja0ludm9rZWQgPSB0cnVlOworICAgICAgICBtYXliZUZpbmlz
aFRlc3QoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICB0ZXN0RmFpbGVkKCdTdWNjZXNz
IGNhbGxiYWNrIGludm9rZWQgdW5leHBlY3RlZGx5Jyk7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9
LCBmdW5jdGlvbihlcnIpIHsKKyAgICB0ZXN0RmFpbGVkKCdFcnJvciBjYWxsYmFjayBpbnZva2Vk
IHVuZXhwZWN0ZWRseScpOworICAgIGZpbmlzaEpTVGVzdCgpOworfSk7CisKK25hdmlnYXRvci5n
ZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZnVuY3Rpb24oKSB7CisgICAgaWYgKHBlcm1p
c3Npb25TZXQpIHsKKyAgICAgICAgdGVzdFBhc3NlZCgnU3VjY2VzcyBjYWxsYmFjayBpbnZva2Vk
Jyk7CisgICAgICAgIG9uZVNob3RDYWxsYmFja0ludm9rZWQgPSB0cnVlOworICAgICAgICBtYXli
ZUZpbmlzaFRlc3QoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICB0ZXN0RmFpbGVkKCdT
dWNjZXNzIGNhbGxiYWNrIGludm9rZWQgdW5leHBlY3RlZGx5Jyk7CisgICAgZmluaXNoSlNUZXN0
KCk7Cit9LCBmdW5jdGlvbihlcnIpIHsKKyAgICB0ZXN0RmFpbGVkKCdFcnJvciBjYWxsYmFjayBp
bnZva2VkIHVuZXhwZWN0ZWRseScpOworICAgIGZpbmlzaEpTVGVzdCgpOworfSk7CisKK3dpbmRv
dy5zZXRUaW1lb3V0KGFsbG93UGVybWlzc2lvbiwgMTAwKTsKKworZnVuY3Rpb24gbWF5YmVGaW5p
c2hUZXN0KCkgeworICAgIGlmICh3YXRjaENhbGxiYWNrSW52b2tlZCAmJiBvbmVTaG90Q2FsbGJh
Y2tJbnZva2VkKQorICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKword2luZG93LmpzVGVzdElz
QXN5bmMgPSB0cnVlOword2luZG93LnN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvZGVsYXll
ZC1wZXJtaXNzaW9uLWRlbmllZC1mb3ItbXVsdGlwbGUtcmVxdWVzdHMuanMgYi9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvZGVsYXllZC1wZXJtaXNzaW9uLWRl
bmllZC1mb3ItbXVsdGlwbGUtcmVxdWVzdHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uZjIzMDA5MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9kZWxheWVkLXBlcm1pc3Npb24tZGVuaWVkLWZvci1t
dWx0aXBsZS1yZXF1ZXN0cy5qcwpAQCAtMCwwICsxLDU1IEBACitkZXNjcmlwdGlvbigiVGVzdHMg
dGhhdCB3aGVuIG11bHRpcGxlIHJlcXVlc3RzIGFyZSB3YWl0aW5nIGZvciBwZXJtaXNzaW9uLCBu
byBjYWxsYmFja3MgYXJlIGludm9rZWQgdW50aWwgcGVybWlzc2lvbiBpcyBkZW5pZWQuIik7CisK
K2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgd2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyLnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKDUxLjQ3OCwgLTAuMTY2LCAxMDAp
OworCitmdW5jdGlvbiBkZW55UGVybWlzc2lvbigpIHsKKyAgICBwZXJtaXNzaW9uU2V0ID0gdHJ1
ZTsKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5zZXRHZW9sb2NhdGlvblBlcm1pc3Npb24oZmFsc2UpOworfQorCit2YXIg
d2F0Y2hDYWxsYmFja0ludm9rZWQgPSBmYWxzZTsKK3ZhciBvbmVTaG90Q2FsbGJhY2tJbnZva2Vk
ID0gZmFsc2U7Cit2YXIgZXJyb3I7CisKK25hdmlnYXRvci5nZW9sb2NhdGlvbi53YXRjaFBvc2l0
aW9uKGZ1bmN0aW9uKCkgeworICAgIHRlc3RGYWlsZWQoJ1N1Y2Nlc3MgY2FsbGJhY2sgaW52b2tl
ZCB1bmV4cGVjdGVkbHknKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30sIGZ1bmN0aW9uKGUpIHsK
KyAgICBpZiAocGVybWlzc2lvblNldCkgeworICAgICAgICBlcnJvciA9IGU7CisgICAgICAgIHNo
b3VsZEJlKCdlcnJvci5jb2RlJywgJ2Vycm9yLlBFUk1JU1NJT05fREVOSUVEJyk7CisgICAgICAg
IHNob3VsZEJlKCdlcnJvci5tZXNzYWdlJywgJyJVc2VyIGRlbmllZCBHZW9sb2NhdGlvbiInKTsK
KyAgICAgICAgd2F0Y2hDYWxsYmFja0ludm9rZWQgPSB0cnVlOworICAgICAgICBtYXliZUZpbmlz
aFRlc3QoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICB0ZXN0RmFpbGVkKCdFcnJvciBj
YWxsYmFjayBpbnZva2VkIHVuZXhwZWN0ZWRseScpOworICAgIGZpbmlzaEpTVGVzdCgpOworfSk7
CisKK25hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZnVuY3Rpb24oKSB7
CisgICAgdGVzdEZhaWxlZCgnU3VjY2VzcyBjYWxsYmFjayBpbnZva2VkIHVuZXhwZWN0ZWRseScp
OworICAgIGZpbmlzaEpTVGVzdCgpOworfSwgZnVuY3Rpb24oZSkgeworICAgIGlmIChwZXJtaXNz
aW9uU2V0KSB7CisgICAgICAgIGVycm9yID0gZTsKKyAgICAgICAgc2hvdWxkQmUoJ2Vycm9yLmNv
ZGUnLCAnZXJyb3IuUEVSTUlTU0lPTl9ERU5JRUQnKTsKKyAgICAgICAgc2hvdWxkQmUoJ2Vycm9y
Lm1lc3NhZ2UnLCAnIlVzZXIgZGVuaWVkIEdlb2xvY2F0aW9uIicpOworICAgICAgICBvbmVTaG90
Q2FsbGJhY2tJbnZva2VkID0gdHJ1ZTsKKyAgICAgICAgbWF5YmVGaW5pc2hUZXN0KCk7ICAgICAg
ICAKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICB0ZXN0RmFpbGVkKCdFcnJvciBjYWxsYmFj
ayBpbnZva2VkIHVuZXhwZWN0ZWRseScpOworICAgIGZpbmlzaEpTVGVzdCgpOworfSk7Cit3aW5k
b3cuc2V0VGltZW91dChkZW55UGVybWlzc2lvbiwgMTAwKTsKKworZnVuY3Rpb24gbWF5YmVGaW5p
c2hUZXN0KCkgeworICAgIGlmICh3YXRjaENhbGxiYWNrSW52b2tlZCAmJiBvbmVTaG90Q2FsbGJh
Y2tJbnZva2VkKQorICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKword2luZG93LmpzVGVzdElz
QXN5bmMgPSB0cnVlOword2luZG93LnN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL2d0ay9Ta2lwcGVkCmluZGV4IGM4MDFlMjIuLjM3ZjNiYmMgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0
ay9Ta2lwcGVkCkBAIC0xMDkxLDYgKzEwOTEsOCBAQCBmYXN0L2RvbS9EZXZpY2VPcmllbnRhdGlv
bi93aW5kb3ctcHJvcGVydHkuaHRtbAogZmFzdC9kb20vR2VvbG9jYXRpb24vY2FsbGJhY2stZXhj
ZXB0aW9uLmh0bWwKIGZhc3QvZG9tL0dlb2xvY2F0aW9uL2RlbGF5ZWQtcGVybWlzc2lvbi1hbGxv
d2VkLmh0bWwKIGZhc3QvZG9tL0dlb2xvY2F0aW9uL2RlbGF5ZWQtcGVybWlzc2lvbi1kZW5pZWQu
aHRtbAorZmFzdC9kb20vR2VvbG9jYXRpb24vZGVsYXllZC1wZXJtaXNzaW9uLWFsbG93ZWQtZm9y
LW11bHRpcGxlLXJlcXVlc3RzLmh0bWwKK2Zhc3QvZG9tL0dlb2xvY2F0aW9uL2RlbGF5ZWQtcGVy
bWlzc2lvbi1kZW5pZWQtZm9yLW11bHRpcGxlLXJlcXVlc3RzLmh0bWwKIGZhc3QvZG9tL0dlb2xv
Y2F0aW9uL2Vycm9yLmh0bWwKIGZhc3QvZG9tL0dlb2xvY2F0aW9uL211bHRpcGxlLXJlcXVlc3Rz
Lmh0bWwKIGZhc3QvZG9tL0dlb2xvY2F0aW9uL3Blcm1pc3Npb24tZGVuaWVkLWFscmVhZHktY2xl
YXItd2F0Y2guaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBl
ZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKaW5kZXggNTkyNmRkNi4uZjM5NWI4
ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAorKysgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCkBAIC01NDkwLDkgKzU0OTAsMTEgQEAgZmFzdC9l
dmVudHMva2V5ZG93bi1udW1wYWQta2V5cy5odG1sCiBmYXN0L2V2ZW50cy9zcGVjaWFsLWtleS1l
dmVudHMtaW4taW5wdXQtdGV4dC5odG1sCiAKICMgW1F0XSBEdW1wUmVuZGVyVHJlZSBsYWNrcyBm
dW5jdGlvbmFsaXR5IGZvciBuZXcgR2VvbG9jYXRpb24gZGVsYXllZCBwZXJtaXNzaW9uIHRlc3Rz
Ci0jIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MzQ3OAorIyBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDEzNjQKIGZhc3QvZG9tL0dlb2xv
Y2F0aW9uL2RlbGF5ZWQtcGVybWlzc2lvbi1hbGxvd2VkLmh0bWwKIGZhc3QvZG9tL0dlb2xvY2F0
aW9uL2RlbGF5ZWQtcGVybWlzc2lvbi1kZW5pZWQuaHRtbAorZmFzdC9kb20vR2VvbG9jYXRpb24v
ZGVsYXllZC1wZXJtaXNzaW9uLWFsbG93ZWQtZm9yLW11bHRpcGxlLXJlcXVlc3RzLmh0bWwKK2Zh
c3QvZG9tL0dlb2xvY2F0aW9uL2RlbGF5ZWQtcGVybWlzc2lvbi1kZW5pZWQtZm9yLW11bHRpcGxl
LXJlcXVlc3RzLmh0bWwKIAogIyBCbG9kQnVpbGRlciBpcyBub3QgZW5hYmxlZAogaHR0cC90ZXN0
cy9sb2NhbC9ibG9iL3NlbmQtZGF0YS1ibG9iLmh0bWwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hh
bmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzA0YmRjOC4uZDRhNzYwMSAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwyOCBAQAorMjAxMC0wOC0xNyAgTWFoZXNoIEt1bGthcm5pICA8bWFoZXNoLmt1bGthcm5pQG5v
a2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBHZW9sb2NhdGlvbiBwcmVlbXB0aXZlIHBlcm1pc3Npb25zIHBvbGljeSBpcyBidWdneQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDI4MTEKKworICAg
ICAgICBXaGlsZSB3YWl0aW5nIGZvciBwZXJtaXNzaW9uLCBtX3N0YXJ0UmVxdWVzdFBlcm1pc3Np
b25Ob3RpZmllciB3YXMgCisgICAgICAgIHVzZWQgdG8gY29uc2lkZXIgb25seSBvbmUgcGVuZGlu
ZyByZXF1ZXN0LiBUaGlzIHBhdGNoIGltcGxlbWVudHMgYSBzZXQKKyAgICAgICAgbV9wZW5kaW5n
Rm9yUGVybWlzc2lvbk5vdGlmaWVycyB0byBtYWludGFpbiBzZXQgb2YgcGVuZGluZyByZXF1ZXN0
cy4gCisgICAgICAgIFdoZW4gdXNlciBncmFudHMvZGVuaWVzIHBlcm1pc3Npb24gYWxsIGxpc3Rl
bmVycyB3aWxsIGJlIG5vdGlmaWVkLiAKKyAgICAgICAgQWxzbyBmaXhlZCBpc3N1ZSB3aXRoIGhh
c1plcm9UaW1lb3V0KCkgd2hlcmUgc3RhcnRUaW1lcklmTmVlZGVkKCkgaGFzCisgICAgICAgIHRv
IHN0YXJ0IGlycmVzcGVjdGl2ZSBvZiBwZXJtaXNzaW9uIHN0YXRlCisKKyAgICAgICAgVGVzdHM6
IGZhc3QvZG9tL0dlb2xvY2F0aW9uL2RlbGF5ZWQtcGVybWlzc2lvbi1hbGxvd2VkLWZvci1tdWx0
aXBsZS1yZXF1ZXN0cy5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9HZW9sb2NhdGlvbi9k
ZWxheWVkLXBlcm1pc3Npb24tZGVuaWVkLWZvci1tdWx0aXBsZS1yZXF1ZXN0cy5odG1sCisKKyAg
ICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAgKiBwYWdlL0dlb2xvY2F0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uOjpzdGFydFJlcXVlc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6R2VvbG9jYXRpb246OnNldElzQWxsb3dlZCk6CisgICAgICAgIChXZWJDb3JlOjpHZW9s
b2NhdGlvbjo6c3RhcnRVcGRhdGluZyk6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbjo6
aGFuZGxlUGVuZGluZ1Blcm1pc3Npb25Ob3RpZmllcnMpOgorICAgICAgICAqIHBhZ2UvR2VvbG9j
YXRpb24uaDoKKwogMjAxMC0wOC0wOCAgS2V2aW4gT2xsaXZpZXIgIDxrZXZpbm9AdGhlb2xsaXZp
ZXJzLmNvbT4KIAogICAgICAgICBbd3hdIEJ1aWxkIGZpeCwgYWRkIG1lbWJlciBuZWVkZWQgdG8g
Y29tcGlsZSBNYWMtc3BlY2lmaWMgZm9udCBjb2RlLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdl
L0dlb2xvY2F0aW9uLmNwcCBiL1dlYkNvcmUvcGFnZS9HZW9sb2NhdGlvbi5jcHAKaW5kZXggMjBk
YjRiZi4uZWI3YWI5MyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0dlb2xvY2F0aW9uLmNwcAor
KysgYi9XZWJDb3JlL3BhZ2UvR2VvbG9jYXRpb24uY3BwCkBAIC0yNzgsMTMgKzI3OCwxOCBAQCBQ
YXNzUmVmUHRyPEdlb2xvY2F0aW9uOjpHZW9Ob3RpZmllcj4gR2VvbG9jYXRpb246OnN0YXJ0UmVx
dWVzdChQYXNzUmVmUHRyPFBvc2l0aQogICAgICAgICBub3RpZmllci0+c2V0RmF0YWxFcnJvcihQ
b3NpdGlvbkVycm9yOjpjcmVhdGUoUG9zaXRpb25FcnJvcjo6UEVSTUlTU0lPTl9ERU5JRUQsIHBl
cm1pc3Npb25EZW5pZWRFcnJvck1lc3NhZ2UpKTsKICAgICBlbHNlIGlmIChoYXZlU3VpdGFibGVD
YWNoZWRQb3NpdGlvbihub3RpZmllci0+bV9vcHRpb25zLmdldCgpKSkKICAgICAgICAgbm90aWZp
ZXItPnNldFVzZUNhY2hlZFBvc2l0aW9uKCk7Ci0gICAgZWxzZSBpZiAobm90aWZpZXItPmhhc1pl
cm9UaW1lb3V0KCkgfHwgc3RhcnRVcGRhdGluZyhub3RpZmllci5nZXQoKSkpIHsKKyAgICBlbHNl
IGlmIChub3RpZmllci0+aGFzWmVyb1RpbWVvdXQoKSkKKyAgICAgICAgbm90aWZpZXItPnN0YXJ0
VGltZXJJZk5lZWRlZCgpOwogI2lmIFVTRShQUkVFTVBUX0dFT0xPQ0FUSU9OX1BFUk1JU1NJT04p
Ci0gICAgICAgIC8vIE9ubHkgc3RhcnQgdGltZXIgaWYgd2UncmUgbm90IHdhaXRpbmcgZm9yIHVz
ZXIgcGVybWlzc2lvbi4KLSAgICAgICAgaWYgKCFtX3N0YXJ0UmVxdWVzdFBlcm1pc3Npb25Ob3Rp
ZmllcikKLSNlbmRpZiAgICAgICAgICAgIAotICAgICAgICAgICAgbm90aWZpZXItPnN0YXJ0VGlt
ZXJJZk5lZWRlZCgpOwotICAgIH0gZWxzZQorICAgIGVsc2UgaWYgKCFpc0FsbG93ZWQoKSkgewor
ICAgICAgICAvLyBpZiB3ZSBkb24ndCB5ZXQgaGF2ZSBwZXJtaXNzaW9uLCByZXF1ZXN0IGZvciBw
ZXJtaXNzaW9uIGJlZm9yZSBjYWxsaW5nIHN0YXJ0VXBkYXRpbmcoKQorICAgICAgICBtX3BlbmRp
bmdGb3JQZXJtaXNzaW9uTm90aWZpZXJzLmFkZChub3RpZmllcik7CisgICAgICAgIHJlcXVlc3RQ
ZXJtaXNzaW9uKCk7CisgICAgfQorI2VuZGlmCisgICAgZWxzZSBpZiAoc3RhcnRVcGRhdGluZyhu
b3RpZmllci5nZXQoKSkpCisgICAgICAgIG5vdGlmaWVyLT5zdGFydFRpbWVySWZOZWVkZWQoKTsK
KyAgICBlbHNlCiAgICAgICAgIG5vdGlmaWVyLT5zZXRGYXRhbEVycm9yKFBvc2l0aW9uRXJyb3I6
OmNyZWF0ZShQb3NpdGlvbkVycm9yOjpQT1NJVElPTl9VTkFWQUlMQUJMRSwgZmFpbGVkVG9TdGFy
dFNlcnZpY2VFcnJvck1lc3NhZ2UpKTsKIAogICAgIHJldHVybiBub3RpZmllci5yZWxlYXNlKCk7
CkBAIC00MDEsMjggKzQwNiwxMCBAQCB2b2lkIEdlb2xvY2F0aW9uOjpzZXRJc0FsbG93ZWQoYm9v
bCBhbGxvd2VkKQogICAgIG1fYWxsb3dHZW9sb2NhdGlvbiA9IGFsbG93ZWQgPyBZZXMgOiBObzsK
ICAgICAKICNpZiBVU0UoUFJFRU1QVF9HRU9MT0NBVElPTl9QRVJNSVNTSU9OKQotICAgIGlmICht
X3N0YXJ0UmVxdWVzdFBlcm1pc3Npb25Ob3RpZmllcikgewotICAgICAgICBpZiAoaXNBbGxvd2Vk
KCkpIHsKLSAgICAgICAgICAgIC8vIFBlcm1pc3Npb24gcmVxdWVzdCB3YXMgbWFkZSBkdXJpbmcg
dGhlIHN0YXJ0VXBkYXRpbmcgcHJvY2VzcwotICAgICAgICAgICAgbV9zdGFydFJlcXVlc3RQZXJt
aXNzaW9uTm90aWZpZXItPnN0YXJ0VGltZXJJZk5lZWRlZCgpOwotICAgICAgICAgICAgLy8gVGhl
IG5vdGlmaWVyIGlzIGFsd2F5cyByZWYnZWQgYnkgbV9vbmVTaG90cyBvciBtX3dhdGNoZXJzLgot
ICAgICAgICAgICAgR2VvTm90aWZpZXIqIG5vdGlmaWVyID0gbV9zdGFydFJlcXVlc3RQZXJtaXNz
aW9uTm90aWZpZXIuZ2V0KCk7Ci0gICAgICAgICAgICBtX3N0YXJ0UmVxdWVzdFBlcm1pc3Npb25O
b3RpZmllciA9IDA7Ci0jaWYgRU5BQkxFKENMSUVOVF9CQVNFRF9HRU9MT0NBVElPTikKLSAgICAg
ICAgICAgIGlmICghbV9mcmFtZSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAg
ICBQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpOwotICAgICAgICAgICAgaWYgKCFwYWdlKQot
ICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIHBhZ2UtPmdlb2xvY2F0aW9uQ29u
dHJvbGxlcigpLT5hZGRPYnNlcnZlcih0aGlzLCBub3RpZmllci0+bV9vcHRpb25zLT5lbmFibGVI
aWdoQWNjdXJhY3koKSk7Ci0jZWxzZQotICAgICAgICAgICAgLy8gVE9ETzogSGFuZGxlIHN0YXJ0
VXBkYXRlKCkgZm9yIG5vbi1jbGllbnQgYmFzZWQgaW1wbGVtZW50YXRpb25zIHVzaW5nIHByZS1l
bXB0aXZlIHBvbGljeQotI2VuZGlmCi0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBtX3N0
YXJ0UmVxdWVzdFBlcm1pc3Npb25Ob3RpZmllci0+c2V0RmF0YWxFcnJvcihQb3NpdGlvbkVycm9y
OjpjcmVhdGUoUG9zaXRpb25FcnJvcjo6UEVSTUlTU0lPTl9ERU5JRUQsIHBlcm1pc3Npb25EZW5p
ZWRFcnJvck1lc3NhZ2UpKTsKLSAgICAgICAgICAgIG1fb25lU2hvdHMuYWRkKG1fc3RhcnRSZXF1
ZXN0UGVybWlzc2lvbk5vdGlmaWVyKTsKLSAgICAgICAgICAgIG1fc3RhcnRSZXF1ZXN0UGVybWlz
c2lvbk5vdGlmaWVyID0gMDsKLSAgICAgICAgfQorICAgIC8vIFBlcm1pc3Npb24gcmVxdWVzdCB3
YXMgbWFkZSBkdXJpbmcgdGhlIHN0YXJ0UmVxdWVzdCBwcm9jZXNzCisgICAgaWYgKCFtX3BlbmRp
bmdGb3JQZXJtaXNzaW9uTm90aWZpZXJzLmlzRW1wdHkoKSkgeworICAgICAgICBoYW5kbGVQZW5k
aW5nUGVybWlzc2lvbk5vdGlmaWVycygpOworICAgICAgICBtX3BlbmRpbmdGb3JQZXJtaXNzaW9u
Tm90aWZpZXJzLmNsZWFyKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYKQEAgLTYx
OCwxNCArNjA1LDYgQEAgdm9pZCBHZW9sb2NhdGlvbjo6Z2VvbG9jYXRpb25TZXJ2aWNlRXJyb3JP
Y2N1cnJlZChHZW9sb2NhdGlvblNlcnZpY2UqIHNlcnZpY2UpCiAKIGJvb2wgR2VvbG9jYXRpb246
OnN0YXJ0VXBkYXRpbmcoR2VvTm90aWZpZXIqIG5vdGlmaWVyKQogewotI2lmIFVTRShQUkVFTVBU
X0dFT0xPQ0FUSU9OX1BFUk1JU1NJT04pCi0gICAgaWYgKCFpc0FsbG93ZWQoKSkgewotICAgICAg
ICBtX3N0YXJ0UmVxdWVzdFBlcm1pc3Npb25Ob3RpZmllciA9IG5vdGlmaWVyOwotICAgICAgICBy
ZXF1ZXN0UGVybWlzc2lvbigpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0jZW5kaWYK
LQogI2lmIEVOQUJMRShDTElFTlRfQkFTRURfR0VPTE9DQVRJT04pCiAgICAgaWYgKCFtX2ZyYW1l
KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02NTgsNiArNjM3LDM4IEBAIHZvaWQgR2VvbG9j
YXRpb246OnN0b3BVcGRhdGluZygpCiAKIH0KIAorI2lmIFVTRShQUkVFTVBUX0dFT0xPQ0FUSU9O
X1BFUk1JU1NJT04pCit2b2lkIEdlb2xvY2F0aW9uOjpoYW5kbGVQZW5kaW5nUGVybWlzc2lvbk5v
dGlmaWVycygpCit7CisjaWYgRU5BQkxFKENMSUVOVF9CQVNFRF9HRU9MT0NBVElPTikKKyAgICBp
ZiAoIW1fZnJhbWUpCisgICAgICAgIHJldHVybjsKKyAgICBQYWdlKiBwYWdlID0gbV9mcmFtZS0+
cGFnZSgpOworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuOworI2VuZGlmCisKKyAgICAv
LyBXaGlsZSB3ZSBpdGVyYXRlIHRocm91Z2ggdGhlIGxpc3QsIHdlIG5lZWQgbm90IHdvcnJ5IGFi
b3V0IGxpc3QgYmVpbmcgbW9kaWZpZWQgYXMgdGhlIHBlcm1pc3Npb24gCisgICAgLy8gaXMgYWxy
ZWFkeSBzZXQgdG8gWWVzL05vIGFuZCBubyBuZXcgbGlzdGVuZXJzIHdpbGwgYmUgYWRkZWQgdG8g
dGhlIHBlbmRpbmcgbGlzdAorICAgIEdlb05vdGlmaWVyU2V0Ojpjb25zdF9pdGVyYXRvciBlbmQg
PSBtX3BlbmRpbmdGb3JQZXJtaXNzaW9uTm90aWZpZXJzLmVuZCgpOworICAgIGZvciAoR2VvTm90
aWZpZXJTZXQ6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBtX3BlbmRpbmdGb3JQZXJtaXNzaW9uTm90
aWZpZXJzLmJlZ2luKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKKyAgICAgICAgR2VvTm90aWZp
ZXIqIG5vdGlmaWVyID0gaXRlci0+Z2V0KCk7CisKKyAgICAgICAgaWYgKGlzQWxsb3dlZCgpKSB7
CisgICAgICAgICAgICAvLyBzdGFydCBhbGwgcGVuZGluZyBub3RpZmljYXRpb24gcmVxdWVzdHMg
YXMgcGVybWlzc2lvbiBncmFudGVkLgorICAgICAgICAgICAgLy8gVGhlIG5vdGlmaWVyIGlzIGFs
d2F5cyByZWYnZWQgYnkgbV9vbmVTaG90cyBvciBtX3dhdGNoZXJzLgorI2lmIEVOQUJMRShDTElF
TlRfQkFTRURfR0VPTE9DQVRJT04pCisgICAgICAgICAgICBub3RpZmllci0+c3RhcnRUaW1lcklm
TmVlZGVkKCk7CisgICAgICAgICAgICBwYWdlLT5nZW9sb2NhdGlvbkNvbnRyb2xsZXIoKS0+YWRk
T2JzZXJ2ZXIodGhpcywgbm90aWZpZXItPm1fb3B0aW9ucy0+ZW5hYmxlSGlnaEFjY3VyYWN5KCkp
OworI2Vsc2UKKyAgICAgICAgICAgIC8vIFRPRE86IEhhbmRsZSBzdGFydFVwZGF0ZSgpIGZvciBu
b24tY2xpZW50IGJhc2VkIGltcGxlbWVudGF0aW9ucyB1c2luZyBwcmUtZW1wdGl2ZSBwb2xpY3kK
KyNlbmRpZgorICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG5vdGlmaWVyLT5zZXRGYXRhbEVy
cm9yKFBvc2l0aW9uRXJyb3I6OmNyZWF0ZShQb3NpdGlvbkVycm9yOjpQRVJNSVNTSU9OX0RFTklF
RCwgcGVybWlzc2lvbkRlbmllZEVycm9yTWVzc2FnZSkpOworICAgIH0KK30KKyNlbmRpZgorCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbHNlCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2Uv
R2VvbG9jYXRpb24uaCBiL1dlYkNvcmUvcGFnZS9HZW9sb2NhdGlvbi5oCmluZGV4IDhjNDdkOWMu
LmZlNDczMWYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9HZW9sb2NhdGlvbi5oCisrKyBiL1dl
YkNvcmUvcGFnZS9HZW9sb2NhdGlvbi5oCkBAIC0xNDQsNiArMTQ0LDEwIEBAIHByaXZhdGU6CiAg
ICAgYm9vbCBzdGFydFVwZGF0aW5nKEdlb05vdGlmaWVyKik7CiAgICAgdm9pZCBzdG9wVXBkYXRp
bmcoKTsKIAorI2lmIFVTRShQUkVFTVBUX0dFT0xPQ0FUSU9OX1BFUk1JU1NJT04pCisgICAgdm9p
ZCBoYW5kbGVQZW5kaW5nUGVybWlzc2lvbk5vdGlmaWVycygpOworI2VuZGlmCisKICNpZiAhRU5B
QkxFKENMSUVOVF9CQVNFRF9HRU9MT0NBVElPTikgJiYgRU5BQkxFKEdFT0xPQ0FUSU9OKQogICAg
IC8vIEdlb2xvY2F0aW9uU2VydmljZUNsaWVudAogICAgIHZpcnR1YWwgdm9pZCBnZW9sb2NhdGlv
blNlcnZpY2VQb3NpdGlvbkNoYW5nZWQoR2VvbG9jYXRpb25TZXJ2aWNlKik7CkBAIC0xNjcsNyAr
MTcxLDcgQEAgcHJpdmF0ZToKICAgICBPd25QdHI8R2VvbG9jYXRpb25TZXJ2aWNlPiBtX3NlcnZp
Y2U7CiAjZW5kaWYKICNpZiBVU0UoUFJFRU1QVF9HRU9MT0NBVElPTl9QRVJNSVNTSU9OKQotICAg
IFJlZlB0cjxHZW9Ob3RpZmllcj4gbV9zdGFydFJlcXVlc3RQZXJtaXNzaW9uTm90aWZpZXI7Cisg
ICAgR2VvTm90aWZpZXJTZXQgbV9wZW5kaW5nRm9yUGVybWlzc2lvbk5vdGlmaWVyczsKICNlbmRp
ZgogICAgIFJlZlB0cjxHZW9wb3NpdGlvbj4gbV9sYXN0UG9zaXRpb247CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>