<?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>77105</bug_id>
          
          <creation_ts>2012-01-26 09:04:36 -0800</creation_ts>
          <short_desc>Implement touch event emulation in the WebCore layer</short_desc>
          <delta_ts>2012-02-06 04:01:13 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>UI Events</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>77729</dependson>
          <blocked>77096</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexander Pavlov (apavlov)">apavlov</reporter>
          <assigned_to name="Alexander Pavlov (apavlov)">apavlov</assigned_to>
          <cc>abarth</cc>
    
    <cc>allan.jensen</cc>
    
    <cc>ap</cc>
    
    <cc>bweinstein</cc>
    
    <cc>efidler</cc>
    
    <cc>gmak</cc>
    
    <cc>joepeck</cc>
    
    <cc>kenneth</cc>
    
    <cc>manyoso</cc>
    
    <cc>ossy</cc>
    
    <cc>pfeldman</cc>
    
    <cc>rniwa</cc>
    
    <cc>timothy</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zarvai</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>543184</commentid>
    <comment_count>0</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-01-26 09:04:36 -0800</bug_when>
    <thetext>Web developers for the mobile want to be able to debug their applications using their desktop hardware. This necessitates the emulation of certain aspects of mobile devices not found in desktop computers. One example is the emulation of &quot;touch&quot; events using the mouse pointer.

The proposed implementation is based on http://dvcs.w3.org/hg/webevents/raw-file/tip/touchevents.html.
Specifically, http://dvcs.w3.org/hg/webevents/raw-file/tip/touchevents.html#mouse-events states that if preventDefault() has been called on a touch event, the associated mouse event(s) should not be dispatched.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543199</commentid>
    <comment_count>1</comment_count>
      <attachid>124128</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-01-26 09:23:51 -0800</bug_when>
    <thetext>Created attachment 124128
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543204</commentid>
    <comment_count>2</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-01-26 09:32:07 -0800</bug_when>
    <thetext>CC&apos;ing some folks who will likely have comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543475</commentid>
    <comment_count>3</comment_count>
      <attachid>124128</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-01-26 14:18:26 -0800</bug_when>
    <thetext>Comment on attachment 124128
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=124128&amp;action=review

&gt; Source/WebCore/dom/Document.h:685
&gt; +#if ENABLE(TOUCH_EVENTS)
&gt; +    void setTouchEventEmulationEnabled(bool enabled) { m_touchEventEmulationEnabled = enabled; }
&gt; +    bool isTouchEventEmulationEnabled() const { return m_touchEventEmulationEnabled; }
&gt; +#endif

Should these be on WebCore::Settings rather than on Document itself?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543477</commentid>
    <comment_count>4</comment_count>
      <attachid>124128</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-01-26 14:18:56 -0800</bug_when>
    <thetext>Comment on attachment 124128
Patch

Can we test this change?  Perhaps using WebCore::Internals?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543504</commentid>
    <comment_count>5</comment_count>
      <attachid>124128</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-01-26 14:46:13 -0800</bug_when>
    <thetext>Comment on attachment 124128
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=124128&amp;action=review

&gt;&gt; Source/WebCore/dom/Document.h:685
&gt;&gt; +#endif
&gt; 
&gt; Should these be on WebCore::Settings rather than on Document itself?

Yes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543926</commentid>
    <comment_count>6</comment_count>
      <attachid>124283</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-01-27 03:03:35 -0800</bug_when>
    <thetext>Created attachment 124283
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543927</commentid>
    <comment_count>7</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-01-27 03:04:49 -0800</bug_when>
    <thetext>Thanks for your comments, everyone.

I&apos;ve moved the property from Document into Settings and come up with a test using InternalSettings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545282</commentid>
    <comment_count>8</comment_count>
      <attachid>124283</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-01-30 12:10:56 -0800</bug_when>
    <thetext>Comment on attachment 124283
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=124283&amp;action=review

&gt; Source/WebCore/page/EventHandler.cpp:146
&gt; +#if ENABLE(TOUCH_EVENTS) &amp;&amp; ENABLE(INSPECTOR)

This condition doesn&apos;t seem right. Why is enabling inspector required for synthetic touch events?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545324</commentid>
    <comment_count>9</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-01-30 12:51:54 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 124283 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=124283&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/page/EventHandler.cpp:146
&gt; &gt; +#if ENABLE(TOUCH_EVENTS) &amp;&amp; ENABLE(INSPECTOR)
&gt; 
&gt; This condition doesn&apos;t seem right. Why is enabling inspector required for synthetic touch events?

Originally, this was not required, but then I noticed that Inspector was going to be the only client of this feature (at least for the time being) and added the second clause. If you think this will make perfect sense for non-inspector-enabled builds, I&apos;ll be happy to revert this to the original ENABLE(TOUCH_EVENTS) condition.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545352</commentid>
    <comment_count>10</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-01-30 13:19:14 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; Originally, this was not required, but then I noticed that Inspector was going to be the only client of this feature (at least for the time being) and added the second clause. If you think this will make perfect sense for non-inspector-enabled builds, I&apos;ll be happy to revert this to the original ENABLE(TOUCH_EVENTS) condition.

As long as symbols are not exported, linkers should strip this code away so I&apos;d rather have it for all builds with TOUCH enabled and hard-coding INSPECTOR dependency. Alternatively, you can add SYNTHETIC_TOUCH_EVENTS flag but that seems like an overkill.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545785</commentid>
    <comment_count>11</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-01-30 22:09:33 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; (In reply to comment #9)
&gt; &gt; Originally, this was not required, but then I noticed that Inspector was going to be the only client of this feature (at least for the time being) and added the second clause. If you think this will make perfect sense for non-inspector-enabled builds, I&apos;ll be happy to revert this to the original ENABLE(TOUCH_EVENTS) condition.
&gt; 
&gt; As long as symbols are not exported, linkers should strip this code away so I&apos;d rather have it for all builds with TOUCH enabled and hard-coding INSPECTOR dependency. Alternatively, you can add SYNTHETIC_TOUCH_EVENTS flag but that seems like an overkill.

Fine with reverting to just ENABLE(TOUCH_EVENTS). And what do you mean by &quot;hard-coding INSPECTOR dependency&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545871</commentid>
    <comment_count>12</comment_count>
      <attachid>124687</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-01-31 02:14:28 -0800</bug_when>
    <thetext>Created attachment 124687
[PATCH] Removed the ENABLE(INSPECTOR) clause (conditional compilation)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545872</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-31 02:17:03 -0800</bug_when>
    <thetext>Attachment 124687 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/update-webkit&apos;]&quot; exit_code: 9

Updating OpenSource
From git://git.webkit.org/WebKit
   9504f8b..3b4a9fa  master     -&gt; origin/master
Partial-rebuilding .git/svn/refs/remotes/origin/master/.rev_map.268f45cc-cd09-0410-ab3c-d52691b4dbfc ...
Currently at 106347 = 9504f8bc63da3ef4bc09c7a9fb94caaf217cb96a
r106348 = 3b4a9fa133678770a77bc6d602361e3cd4cb2dd1
Done rebuilding .git/svn/refs/remotes/origin/master/.rev_map.268f45cc-cd09-0410-ab3c-d52691b4dbfc
First, rewinding head to replay your work on top of it...
Applying: Fix compilation errors on build-webkit --debug --no-workers on mac.
Using index info to reconstruct a base tree...
Falling back to patching base and 3-way merge...
Auto-merging LayoutTests/ChangeLog
CONFLICT (content): Merge conflict in LayoutTests/ChangeLog
Auto-merging LayoutTests/platform/qt/Skipped
CONFLICT (content): Merge conflict in LayoutTests/platform/qt/Skipped
Auto-merging Source/WebCore/ChangeLog
CONFLICT (content): Merge conflict in Source/WebCore/ChangeLog
Failed to merge in the changes.
Patch failed at 0001 Fix compilation errors on build-webkit --debug --no-workers on mac.

When you have resolved this problem run &quot;git rebase --continue&quot;.
If you would prefer to skip this patch, instead run &quot;git rebase --skip&quot;.
To restore the original branch and stop rebasing run &quot;git rebase --abort&quot;.

rebase refs/remotes/origin/master: command returned error: 1

Died at Tools/Scripts/update-webkit line 164.


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545875</commentid>
    <comment_count>14</comment_count>
      <attachid>124689</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-01-31 02:30:43 -0800</bug_when>
    <thetext>Created attachment 124689
[PATCH] Removed the ENABLE(INSPECTOR) clause (conditional compilation) - rebased</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545876</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-31 02:32:12 -0800</bug_when>
    <thetext>Attachment 124689 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/update-webkit&apos;]&quot; exit_code: 9

Updating OpenSource
First, rewinding head to replay your work on top of it...
Applying: Fix compilation errors on build-webkit --debug --no-workers on mac.
Using index info to reconstruct a base tree...
Falling back to patching base and 3-way merge...
Auto-merging LayoutTests/ChangeLog
CONFLICT (content): Merge conflict in LayoutTests/ChangeLog
Auto-merging LayoutTests/platform/qt/Skipped
CONFLICT (content): Merge conflict in LayoutTests/platform/qt/Skipped
Auto-merging Source/WebCore/ChangeLog
CONFLICT (content): Merge conflict in Source/WebCore/ChangeLog
Failed to merge in the changes.
Patch failed at 0001 Fix compilation errors on build-webkit --debug --no-workers on mac.

When you have resolved this problem run &quot;git rebase --continue&quot;.
If you would prefer to skip this patch, instead run &quot;git rebase --skip&quot;.
To restore the original branch and stop rebasing run &quot;git rebase --abort&quot;.

rebase refs/remotes/origin/master: command returned error: 1

Died at Tools/Scripts/update-webkit line 164.


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546474</commentid>
    <comment_count>16</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-01-31 14:05:25 -0800</bug_when>
    <thetext>@reviewers: reverted to using only ENABLE(TOUCH_EVENTS). Any other concerns about the patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546563</commentid>
    <comment_count>17</comment_count>
      <attachid>124689</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-01-31 15:30:13 -0800</bug_when>
    <thetext>Comment on attachment 124689
[PATCH] Removed the ENABLE(INSPECTOR) clause (conditional compilation) - rebased

View in context: https://bugs.webkit.org/attachment.cgi?id=124689&amp;action=review

r- due to various nits but this patch looks much better than previous ones.

&gt; Source/WebCore/ChangeLog:7
&gt; +

Please provide an overview of your change.

&gt; Source/WebCore/page/EventHandler.cpp:159
&gt; +        m_radiusY = 1; // Default value.
&gt; +        m_radiusX = 1; // Default value.
&gt; +        m_rotationAngle = 0.0f; // Default value.
&gt; +        m_force = 1.0f; // Default value.

Instead of commenting that these are default values, please add const int with appropriate variable names e.g. radiusXDefaultValue.

&gt; Source/WebCore/page/EventHandler.cpp:175
&gt; +        case PlatformEvent::MouseScroll:
&gt; +        default:

Why do we need to enumerate PlatformEvent::MouseScroll if we have default?

&gt; Source/WebCore/page/EventHandler.cpp:199
&gt; +        switch (event.type()) {
&gt; +        case PlatformEvent::MouseMoved:
&gt; +            m_type = TouchMove;
&gt; +            break;
&gt; +        case PlatformEvent::MousePressed:
&gt; +            m_type = TouchStart;
&gt; +            break;
&gt; +        case PlatformEvent::MouseReleased:
&gt; +            m_type = TouchEnd;
&gt; +            break;
&gt; +        case PlatformEvent::MouseScroll:
&gt; +        default:
&gt; +            ASSERT_NOT_REACHED();
&gt; +            m_type = NoType;
&gt; +        }

This switch statement duplicates the code. Please share code with SyntheticTouchPoint::SyntheticTouchPoint.

&gt; Source/WebCore/page/EventHandler.cpp:3443
&gt; +bool EventHandler::maybeDispatchSyntheticTouchEvent(const PlatformMouseEvent&amp; event)

&quot;maybe&quot; isn&apos;t descriptive adverb here. How about dispatchSyntheticTouchEventIfEnabled?

&gt; LayoutTests/fast/events/touch/emulate-touch-events.html:1
&gt; +&lt;!DOCTYPE HTML PUBLIC &quot;-//IETF//DTD HTML//EN&quot;&gt;

Please use HTML5 style DOCTYPE: &lt;!DOCTYPE html&gt;

&gt; LayoutTests/fast/events/touch/emulate-touch-events.html:4
&gt; +&lt;head&gt;
&gt; +&lt;script src=&quot;../../js/resources/js-test-pre.js&quot;&gt;&lt;/script&gt;

Why do we need head element at all?

&gt; LayoutTests/fast/events/touch/emulate-touch-events.html:9
&gt; +&lt;!--
&gt; +  Touch tests that involve the ontouchstart, ontouchmove, ontouchend or ontouchcancel callbacks
&gt; +  should be written in an asynchronous fashion so they can be run on mobile platforms like Android.
&gt; +  You will need to invoke isSuccessfullyParsed() in your test script when the test completes.
&gt; +--&gt;

Once you move the script here, you wouldn&apos;t need this description. If you think this comment is still useful, then please put in the description.

&gt; LayoutTests/fast/events/touch/emulate-touch-events.html:14
&gt; +&lt;script src=&quot;script-tests/emulate-touch-events.js&quot;&gt;&lt;/script&gt;

New style is to include the script in the html file itself.

&gt; LayoutTests/fast/events/touch/script-tests/emulate-touch-events.js:21
&gt; +        // If we&apos;ve got here, we can safely say we were successfully parsed :) We need to
&gt; +        // call the isSucccessfullyParsed function to output the correct TEST COMPLETE
&gt; +        // footer message.

This comment doesn&apos;t provide us of any new information. Please remove.

&gt; LayoutTests/fast/events/touch/script-tests/emulate-touch-events.js:22
&gt; +        isSuccessfullyParsed();

You should be declaring successfullyParsed variable at the end of the time instead.

&gt; LayoutTests/fast/events/touch/script-tests/emulate-touch-events.js:53
&gt; +    switch (which) {
&gt; +        case 0:

Don&apos;t indent cases.

&gt; LayoutTests/fast/events/touch/script-tests/emulate-touch-events.js:99
&gt; +    debug(&quot;This test requires DumpRenderTree. Tap on the blue rect to log.&quot;);

Is there anyway to manually test this feature?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546956</commentid>
    <comment_count>18</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-02-01 02:48:11 -0800</bug_when>
    <thetext>Attaching a fixed patch shortly.

(In reply to comment #17)
&gt; (From update of attachment 124689 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=124689&amp;action=review
&gt; 
&gt; r- due to various nits but this patch looks much better than previous ones.
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:7
&gt; &gt; +
&gt; 
&gt; Please provide an overview of your change.

Done.

&gt; &gt; Source/WebCore/page/EventHandler.cpp:159
&gt; &gt; +        m_radiusY = 1; // Default value.
&gt; &gt; +        m_radiusX = 1; // Default value.
&gt; &gt; +        m_rotationAngle = 0.0f; // Default value.
&gt; &gt; +        m_force = 1.0f; // Default value.
&gt; 
&gt; Instead of commenting that these are default values, please add const int with appropriate variable names e.g. radiusXDefaultValue.

Done.

&gt; &gt; Source/WebCore/page/EventHandler.cpp:175
&gt; &gt; +        case PlatformEvent::MouseScroll:
&gt; &gt; +        default:
&gt; 
&gt; Why do we need to enumerate PlatformEvent::MouseScroll if we have default?

I felt like enumerating all mouse events in case we might want to make use of them for some kind of additional emulation (that is, we have some &quot;spare&quot; mouse event to use.)

&gt; &gt; Source/WebCore/page/EventHandler.cpp:199
&gt; &gt; +        switch (event.type()) {
&gt; &gt; +        case PlatformEvent::MouseMoved:
&gt; &gt; +            m_type = TouchMove;
&gt; &gt; +            break;
&gt; &gt; +        case PlatformEvent::MousePressed:
&gt; &gt; +            m_type = TouchStart;
&gt; &gt; +            break;
&gt; &gt; +        case PlatformEvent::MouseReleased:
&gt; &gt; +            m_type = TouchEnd;
&gt; &gt; +            break;
&gt; &gt; +        case PlatformEvent::MouseScroll:
&gt; &gt; +        default:
&gt; &gt; +            ASSERT_NOT_REACHED();
&gt; &gt; +            m_type = NoType;
&gt; &gt; +        }
&gt; 
&gt; This switch statement duplicates the code. Please share code with SyntheticTouchPoint::SyntheticTouchPoint.

Not really. This switch chooses an unsigned value describing one of the three event types, the other one (in SyntheticTouchPoint ctor) chooses PlatformTouchPoint::State, which is quite different (describes a touch point state,) and in the general case the State-related mapping won&apos;t be as simple (e.g. it may have stationary touchpoints.) Consider this a V1 of the emulation protocol.

&gt; &gt; Source/WebCore/page/EventHandler.cpp:3443
&gt; &gt; +bool EventHandler::maybeDispatchSyntheticTouchEvent(const PlatformMouseEvent&amp; event)
&gt; 
&gt; &quot;maybe&quot; isn&apos;t descriptive adverb here. How about dispatchSyntheticTouchEventIfEnabled?

Good point, done.

&gt; &gt; LayoutTests/fast/events/touch/emulate-touch-events.html:1
&gt; &gt; +&lt;!DOCTYPE HTML PUBLIC &quot;-//IETF//DTD HTML//EN&quot;&gt;
&gt; 
&gt; Please use HTML5 style DOCTYPE: &lt;!DOCTYPE html&gt;

I based my test off of basic-single-touch-events.html, guess it&apos;s a bit out-of-date. Fixed.

&gt; &gt; LayoutTests/fast/events/touch/emulate-touch-events.html:4
&gt; &gt; +&lt;head&gt;
&gt; &gt; +&lt;script src=&quot;../../js/resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
&gt; 
&gt; Why do we need head element at all?

Copied from basic-single-touch-events.html. Fixed.

&gt; &gt; LayoutTests/fast/events/touch/emulate-touch-events.html:9
&gt; &gt; +&lt;!--
&gt; &gt; +  Touch tests that involve the ontouchstart, ontouchmove, ontouchend or ontouchcancel callbacks
&gt; &gt; +  should be written in an asynchronous fashion so they can be run on mobile platforms like Android.
&gt; &gt; +  You will need to invoke isSuccessfullyParsed() in your test script when the test completes.
&gt; &gt; +--&gt;
&gt; 
&gt; Once you move the script here, you wouldn&apos;t need this description. If you think this comment is still useful, then please put in the description.

Removed.

&gt; &gt; LayoutTests/fast/events/touch/emulate-touch-events.html:14
&gt; &gt; +&lt;script src=&quot;script-tests/emulate-touch-events.js&quot;&gt;&lt;/script&gt;
&gt; 
&gt; New style is to include the script in the html file itself.

Done.

&gt; &gt; LayoutTests/fast/events/touch/script-tests/emulate-touch-events.js:21
&gt; &gt; +        // If we&apos;ve got here, we can safely say we were successfully parsed :) We need to
&gt; &gt; +        // call the isSucccessfullyParsed function to output the correct TEST COMPLETE
&gt; &gt; +        // footer message.
&gt; 
&gt; This comment doesn&apos;t provide us of any new information. Please remove.

Done.

&gt; &gt; LayoutTests/fast/events/touch/script-tests/emulate-touch-events.js:22
&gt; &gt; +        isSuccessfullyParsed();
&gt; 
&gt; You should be declaring successfullyParsed variable at the end of the time instead.

Removed this call, added debug output denoting the test completion.

&gt; &gt; LayoutTests/fast/events/touch/script-tests/emulate-touch-events.js:53
&gt; &gt; +    switch (which) {
&gt; &gt; +        case 0:
&gt; 
&gt; Don&apos;t indent cases.

Fixed.

&gt; &gt; LayoutTests/fast/events/touch/script-tests/emulate-touch-events.js:99
&gt; &gt; +    debug(&quot;This test requires DumpRenderTree. Tap on the blue rect to log.&quot;);
&gt; 
&gt; Is there anyway to manually test this feature?

This feature will be exposed to the users in the Web Inspector UI (a checkbox in the Settings) shortly after this core change has been landed (patch making use of this change in bug 77096). E.g. you will be able to go to http://paulirish.com/demo/multi, enable the emulation mode and draw in the canvas with your mouse just as you would draw there on your touch-enabled device (with a single touch point.) There are no other clients (barring this test) that toggle the emulation mode at the moment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546961</commentid>
    <comment_count>19</comment_count>
      <attachid>124919</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-02-01 02:54:34 -0800</bug_when>
    <thetext>Created attachment 124919
[PATCH] rniwa&apos;s comments addressed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546967</commentid>
    <comment_count>20</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-02-01 02:59:16 -0800</bug_when>
    <thetext>(In reply to comment #18)
&gt; &gt; &gt; Source/WebCore/page/EventHandler.cpp:175
&gt; &gt; &gt; +        case PlatformEvent::MouseScroll:
&gt; &gt; &gt; +        default:
&gt; &gt; 
&gt; &gt; Why do we need to enumerate PlatformEvent::MouseScroll if we have default?
&gt; 
&gt; I felt like enumerating all mouse events in case we might want to make use of them for some kind of additional emulation (that is, we have some &quot;spare&quot; mouse event to use.)

Please don&apos;t add unnecessary code on speculation.

&gt; &gt; &gt; Source/WebCore/page/EventHandler.cpp:199
...
&gt; &gt; This switch statement duplicates the code. Please share code with SyntheticTouchPoint::SyntheticTouchPoint.
&gt; 
&gt; Not really. This switch chooses an unsigned value describing one of the three event types, the other one (in SyntheticTouchPoint ctor) chooses PlatformTouchPoint::State, which is quite different (describes a touch point state,) and in the general case the State-related mapping won&apos;t be as simple (e.g. it may have stationary touchpoints.) Consider this a V1 of the emulation protocol.

Okay.

&gt; &gt; &gt; LayoutTests/fast/events/touch/script-tests/emulate-touch-events.js:22
&gt; &gt; &gt; +        isSuccessfullyParsed();
&gt; &gt; 
&gt; &gt; You should be declaring successfullyParsed variable at the end of the time instead.
&gt; 
&gt; Removed this call, added debug output denoting the test completion.

All you need to do is:
var successfullyParsed = true;
at the end of script.

&gt; &gt; &gt; LayoutTests/fast/events/touch/script-tests/emulate-touch-events.js:99
&gt; &gt; &gt; +    debug(&quot;This test requires DumpRenderTree. Tap on the blue rect to log.&quot;);
&gt; &gt; 
&gt; &gt; Is there anyway to manually test this feature?
&gt; 
&gt; This feature will be exposed to the users in the Web Inspector UI (a checkbox in the Settings) shortly after this core change has been landed (patch making use of this change in bug 77096). E.g. you will be able to go to http://paulirish.com/demo/multi, enable the emulation mode and draw in the canvas with your mouse just as you would draw there on your touch-enabled device (with a single touch point.) There are no other clients (barring this test) that toggle the emulation mode at the moment.

Okay.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546971</commentid>
    <comment_count>21</comment_count>
      <attachid>124919</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-02-01 03:06:14 -0800</bug_when>
    <thetext>Comment on attachment 124919
[PATCH] rniwa&apos;s comments addressed

View in context: https://bugs.webkit.org/attachment.cgi?id=124919&amp;action=review

&gt; Source/WebCore/page/EventHandler.cpp:181
&gt; +            ASSERT_NOT_REACHED();

I think you need a break after ASSERT_NOT_REACHED on some ports.

&gt; Source/WebCore/page/EventHandler.cpp:202
&gt; +            m_type = NoType;

Ditto about break.

&gt; Source/WebCore/page/EventHandler.cpp:3446
&gt; +// Returns whether the original mouse event should be handled.

We don&apos;t normally add a comment like this; instead we follow the same convention.

&gt; Source/WebCore/page/EventHandler.cpp:3447
&gt; +bool EventHandler::dispatchSyntheticTouchEventIfEnabled(const PlatformMouseEvent&amp; event)

We normally return defaultPrevented.

&gt; LayoutTests/fast/events/touch/emulate-touch-events.html:9
&gt; +    var div = document.createElement(&quot;div&quot;);
&gt; +    div.id = &quot;touchtarget&quot;;

It seems unnecessary to indent the entire script content like this.

&gt; LayoutTests/fast/events/touch/emulate-touch-events.html:12
&gt; +    div.style.width = &quot;100px&quot;;
&gt; +    div.style.height = &quot;100px&quot;;
&gt; +    div.style.backgroundColor = &quot;blue&quot;;

Why can&apos;t we just put this as a markup and obtain the div?
i.e. &lt;div id=&quot;touchtarget&quot; style=&quot;width: 100px; height: 100px; background-color: blue;&quot;&gt;&lt;/div&gt;
var touchTarget = document.getElementById(&apos;touchtarget&apos;);

&gt; LayoutTests/fast/events/touch/emulate-touch-events.html:26
&gt; +            debug(&apos;&lt;br /&gt;&lt;span class=&quot;pass&quot;&gt;TEST COMPLETE&lt;/span&gt;&apos;);

I don&apos;t think you need this debug given that the time is going to timeout when notifyDone is never called.

&gt; LayoutTests/fast/events/touch/emulate-touch-events.html:105
&gt; +&lt;/script&gt;

Do:
var successfullyParsed = true;
here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546972</commentid>
    <comment_count>22</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-02-01 03:07:46 -0800</bug_when>
    <thetext>(In reply to comment #20)
&gt; (In reply to comment #18)
&gt; &gt; &gt; &gt; Source/WebCore/page/EventHandler.cpp:175
&gt; &gt; &gt; &gt; +        case PlatformEvent::MouseScroll:
&gt; &gt; &gt; &gt; +        default:
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; LayoutTests/fast/events/touch/script-tests/emulate-touch-events.js:22
&gt; &gt; &gt; &gt; +        isSuccessfullyParsed();
&gt; &gt; &gt; 
&gt; &gt; &gt; You should be declaring successfullyParsed variable at the end of the time instead.
&gt; &gt; 
&gt; &gt; Removed this call, added debug output denoting the test completion.
&gt; 
&gt; All you need to do is:
&gt; var successfullyParsed = true;
&gt; at the end of script.

My guess was that successfullyParsed denoted the correctness of all the JavaScript executed so far, right? (Because all the cases using successfullyParsed I have seen are synchronous, so parsing errors and execution errors appear at the same time. OTOH, placing &quot;var a; a.foo();&quot; in a touch event handler and placing &quot;var successfullyParsed = true;&quot; at the end of script would yield no errors, but the test would never work correctly.) Since our test is asynchronous, this makes no sense until the point when we notify testController about the test termination. Do you think &quot;var successfullyParsed = true;&quot; at the end of script is the right solution?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546976</commentid>
    <comment_count>23</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-02-01 03:15:38 -0800</bug_when>
    <thetext>(In reply to comment #22)
&gt; My guess was that successfullyParsed denoted the correctness of all the JavaScript executed so far, right?

No, successfullyParsed is there to say that &quot;the test script parsed without syntax errors&quot;.

&gt; Since our test is asynchronous, this makes no sense until the point when we notify testController about the test termination.

That&apos;s not what successfullyParsed is used for.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546978</commentid>
    <comment_count>24</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-02-01 03:23:45 -0800</bug_when>
    <thetext>(In reply to comment #23)
&gt; (In reply to comment #22)
&gt; &gt; My guess was that successfullyParsed denoted the correctness of all the JavaScript executed so far, right?
&gt; 
&gt; No, successfullyParsed is there to say that &quot;the test script parsed without syntax errors&quot;.

I got confused because in the suggested setup it was not used in any way.

&gt; &gt; Since our test is asynchronous, this makes no sense until the point when we notify testController about the test termination.
&gt; 
&gt; That&apos;s not what successfullyParsed is used for.

successfullyParsed is used only in isSuccessfullyParsed() (called from finishJSTest()). That said, I guess I&apos;ve figured it out. I need to call finishJSTest() and include js-test-post.js at the end of the file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546998</commentid>
    <comment_count>25</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-02-01 04:18:06 -0800</bug_when>
    <thetext>(In reply to comment #21)
&gt; (From update of attachment 124919 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=124919&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/page/EventHandler.cpp:181
&gt; &gt; +            ASSERT_NOT_REACHED();
&gt; 
&gt; I think you need a break after ASSERT_NOT_REACHED on some ports.

Fixed.

&gt; &gt; Source/WebCore/page/EventHandler.cpp:202
&gt; &gt; +            m_type = NoType;
&gt; 
&gt; Ditto about break.

Fixed.

&gt; &gt; Source/WebCore/page/EventHandler.cpp:3446
&gt; &gt; +// Returns whether the original mouse event should be handled.
&gt; 
&gt; We don&apos;t normally add a comment like this; instead we follow the same convention.

Removed.

&gt; &gt; Source/WebCore/page/EventHandler.cpp:3447
&gt; &gt; +bool EventHandler::dispatchSyntheticTouchEventIfEnabled(const PlatformMouseEvent&amp; event)
&gt; 
&gt; We normally return defaultPrevented.

The point was that this does not correspond to defaultPrevented in the case when no touch event dispatching takes place, but looks like this can be included into the abstraction of &quot;conditional event dispatching&quot; :)

&gt; &gt; LayoutTests/fast/events/touch/emulate-touch-events.html:9
&gt; &gt; +    var div = document.createElement(&quot;div&quot;);
&gt; &gt; +    div.id = &quot;touchtarget&quot;;
&gt; 
&gt; It seems unnecessary to indent the entire script content like this.

Fixed.

&gt; &gt; LayoutTests/fast/events/touch/emulate-touch-events.html:12
&gt; &gt; +    div.style.width = &quot;100px&quot;;
&gt; &gt; +    div.style.height = &quot;100px&quot;;
&gt; &gt; +    div.style.backgroundColor = &quot;blue&quot;;
&gt; 
&gt; Why can&apos;t we just put this as a markup and obtain the div?
&gt; i.e. &lt;div id=&quot;touchtarget&quot; style=&quot;width: 100px; height: 100px; background-color: blue;&quot;&gt;&lt;/div&gt;
&gt; var touchTarget = document.getElementById(&apos;touchtarget&apos;);

Done. I&apos;m not sure, but when fixing this, I had some issues with the mouse event handler invocations (things looked like the mouse events were not dispatched.) I solved this by random code motion.

&gt; &gt; LayoutTests/fast/events/touch/emulate-touch-events.html:26
&gt; &gt; +            debug(&apos;&lt;br /&gt;&lt;span class=&quot;pass&quot;&gt;TEST COMPLETE&lt;/span&gt;&apos;);
&gt; 
&gt; I don&apos;t think you need this debug given that the time is going to timeout when notifyDone is never called.

Right, I ended up invoking finishJSTest() in this line.

&gt; &gt; LayoutTests/fast/events/touch/emulate-touch-events.html:105
&gt; &gt; +&lt;/script&gt;
&gt; 
&gt; Do:
&gt; var successfullyParsed = true;
&gt; here.

This is not necessary with finishJSTest() in place (it has some special handling for asynchronous tests.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547002</commentid>
    <comment_count>26</comment_count>
      <attachid>124928</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-02-01 04:24:07 -0800</bug_when>
    <thetext>Created attachment 124928
[PATCH] more comments addressed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>548453</commentid>
    <comment_count>27</comment_count>
      <attachid>124928</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-02-02 22:26:05 -0800</bug_when>
    <thetext>Comment on attachment 124928
[PATCH] more comments addressed

View in context: https://bugs.webkit.org/attachment.cgi?id=124928&amp;action=review

Seems okay. We can always improve it iteratively since it&apos;s not a Web-facing API. But please make sure adding new methods to internals.settings doesn&apos;t break any builds when you land it.

&gt; Source/WebCore/testing/InternalSettings.cpp:274
&gt; +void InternalSettings::setTouchEventEmulationEnabled(bool enabled, ExceptionCode&amp; ec)

Don&apos;t you need to add symbols for this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>548589</commentid>
    <comment_count>28</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-02-03 02:11:13 -0800</bug_when>
    <thetext>Committed r106642: &lt;http://trac.webkit.org/changeset/106642&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>548630</commentid>
    <comment_count>29</comment_count>
    <who name="Zoltan Arvai">zarvai</who>
    <bug_when>2012-02-03 04:24:56 -0800</bug_when>
    <thetext>It seems that the newly added layout test in r106642
LayoutTests/fast/events/touch/emulate-touch-events.html
not running as expected on Qt Linux Release bot:

--- /ramdisk/qt-linux-release/build/layout-test-results/fast/events/touch/emulate-touch-events-expected.txt 
+++ /ramdisk/qt-linux-release/build/layout-test-results/fast/events/touch/emulate-touch-events-actual.txt 
@@ -52,8 +52,8 @@
 PASS lastEvent.changedTouches[0].clientY is 30
 PASS lastEvent.changedTouches[0].identifier is 0
 PASS lastEvent.shiftKey is false
-PASS lastEvent.altKey is true
-PASS lastEvent.ctrlKey is true
+FAIL lastEvent.altKey should be true. Was false.
+FAIL lastEvent.ctrlKey should be true. Was false.
 PASS lastEvent.metaKey is false
 PASS successfullyParsed is true

http://build.webkit.org/results/Qt%20Linux%20Release/r106642%20(42848)/results.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>548653</commentid>
    <comment_count>30</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-02-03 05:29:38 -0800</bug_when>
    <thetext>Zoltán file a new bug report about it, and skipped this test on Qt until fix - http://trac.webkit.org/changeset/106652</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549881</commentid>
    <comment_count>31</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-02-06 03:40:23 -0800</bug_when>
    <thetext>Maybe I missed it, but was there any particular reason to do this in WebCore?

For Qt the touch emulation is done on application level. It is really just a simply transformation of what events we send to WebKit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549882</commentid>
    <comment_count>32</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-02-06 03:41:27 -0800</bug_when>
    <thetext>Why is this not done in the application layer, like we do for Qt? We support pinch emulation etc. Is this due to inspector integration or ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549885</commentid>
    <comment_count>33</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-02-06 03:58:53 -0800</bug_when>
    <thetext>(In reply to comment #32)
&gt; Why is this not done in the application layer, like we do for Qt? We support pinch emulation etc. Is this due to inspector integration or ?

&quot;Emulate touch events&quot; is a part of the inspector functionality, we want it to be available to all ports.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549887</commentid>
    <comment_count>34</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-02-06 04:01:13 -0800</bug_when>
    <thetext>(In reply to comment #33)
&gt; (In reply to comment #32)
&gt; &gt; Why is this not done in the application layer, like we do for Qt? We support pinch emulation etc. Is this due to inspector integration or ?
&gt; 
&gt; &quot;Emulate touch events&quot; is a part of the inspector functionality, we want it to be available to all ports.

Ok, great :-) Did you think about adding support for emulating pinch zoom etc?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124128</attachid>
            <date>2012-01-26 09:23:51 -0800</date>
            <delta_ts>2012-01-27 03:03:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77105-20120126212349.patch</filename>
            <type>text/plain</type>
            <size>9585</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1OTc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjEzMmZjMjNlY2U4NDcx
OTBlMTMzNDRmYTJmZDM2ODhkODJkODU4NS4uZTBhNTgwODNkZWY3MDUwMmM4N2RjYzI4MzE3M2E0
MjBjMTcwYzFkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDEyLTAxLTI2ICBBbGV4
YW5kZXIgUGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW1wbGVtZW50
IHRvdWNoIGV2ZW50IGVtdWxhdGlvbiBpbiB0aGUgV2ViQ29yZSBsYXllcgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzcxMDUKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGFzIHRoZSBu
ZXcgY29kZSBpcyBub3QgaW52b2tlZCB5ZXQuIFRlc3RzIHdpbGwgYmUgYWRkZWQgd2l0aCB0aGUg
Y2xpZW50IFdlYiBJbnNwZWN0b3IgY29kZS4KKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6RG9jdW1lbnQpOiBBZGQgbV90b3VjaEV2ZW50
RW11bGF0aW9uRW5hYmxlZCBpbml0aWFsaXplci4KKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDog
QWRkIG1fdG91Y2hFdmVudEVtdWxhdGlvbkVuYWJsZWQgYW5kIGdldHRlci9zZXR0ZXIuCisgICAg
ICAgIChEb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0VG91Y2hFdmVu
dEVtdWxhdGlvbkVuYWJsZWQpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpp
c1RvdWNoRXZlbnRFbXVsYXRpb25FbmFibGVkKTogQWRkZWQuCisgICAgICAgICogcGFnZS9FdmVu
dEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChTeW50aGV0aWNUb3Vj
aFBvaW50KTogQSBzeW50aGV0aWMgdG91Y2ggcG9pbnQgYnVpbHQgZnJvbSBQbGF0Zm9ybU1vdXNl
RXZlbnQuCisgICAgICAgIChXZWJDb3JlOjpTeW50aGV0aWNUb3VjaFBvaW50OjpTeW50aGV0aWNU
b3VjaFBvaW50KToKKyAgICAgICAgKFN5bnRoZXRpY1NpbmdsZVRvdWNoRXZlbnQpOiBBIHN5bnRo
ZXRpYyBzaW5nbGUgdG91Y2ggZXZlbnQgYnVpbHQgZnJvbSBQbGF0Zm9ybU1vdXNlRXZlbnQuCisg
ICAgICAgIChXZWJDb3JlOjpTeW50aGV0aWNTaW5nbGVUb3VjaEV2ZW50OjpTeW50aGV0aWNTaW5n
bGVUb3VjaEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlTW91
c2VSZWxlYXNlRXZlbnQpOiBJbnZva2UgbWF5YmVEaXNwYXRjaFN5bnRoZXRpY1RvdWNoRXZlbnQo
KSBhbmQgYmFpbCBvdXQgaWYgbmVjZXNzYXJ5LgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5k
bGVyOjpoYW5kbGVNb3VzZVByZXNzRXZlbnQpOiBJbnZva2UgbWF5YmVEaXNwYXRjaFN5bnRoZXRp
Y1RvdWNoRXZlbnQoKSBhbmQgYmFpbCBvdXQgaWYgbmVjZXNzYXJ5LgorICAgICAgICAoV2ViQ29y
ZTo6RXZlbnRIYW5kbGVyOjptb3VzZU1vdmVkKTogSW52b2tlIG1heWJlRGlzcGF0Y2hTeW50aGV0
aWNUb3VjaEV2ZW50KCkgYW5kIGJhaWwgb3V0IGlmIG5lY2Vzc2FyeS4KKyAgICAgICAgKFdlYkNv
cmU6OkV2ZW50SGFuZGxlcjo6bWF5YmVEaXNwYXRjaFN5bnRoZXRpY1RvdWNoRXZlbnQpOiBEaXNw
YXRjaCBhIHN5bnRoZXRpYyB0b3VjaCBldmVudCBpZiBuZWNlc3NhcnkuCisgICAgICAgICogcGFn
ZS9FdmVudEhhbmRsZXIuaDogQWRkIG5ldyBtZXRob2QuCisgICAgICAgIChFdmVudEhhbmRsZXIp
OgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtVG91Y2hQb2ludC5oOgorICAgICAgICAoKToK
KyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtVG91Y2hQb2ludDo6UGxhdGZvcm1Ub3VjaFBvaW50
KTogVW5jb25kaXRpb25hbGx5IGNvbXBpbGUgdGhlIHBhcmFtZXRlcmxlc3MgY3Rvci4KKyAgICAg
ICAgKFBsYXRmb3JtVG91Y2hQb2ludCk6CisKIDIwMTItMDEtMjYgIE5pa29sYXMgWmltbWVybWFu
biAgPG56aW1tZXJtYW5uQHJpbS5jb20+CiAKICAgICAgICAgTm90IHJldmlld2VkLiBUcnkgdG8g
Zml4IEd0ayBidWlsZCAtIEpTU2hhZG93Um9vdC5jcHAgY2FuJ3QgYmUgZm91bmQsIGZpeCBieSBs
b29raW5nIGZvciBpdCBpbiB0aGUgZGVyaXZlZCBzb3VyY2VzLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAKaW5kZXggM2FiYjNhZGE5YmNiNTFmMDFmMDI0NzVhODE5MTY3M2JkZWE4YTFhMS4uYTc5N2Vj
NWU4ODY2NzY2NWYzYzM3YTA0MzkxNTk1MzM5N2U2MDcxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwCkBAIC00MzEsNiArNDMxLDkgQEAgRG9jdW1lbnQ6OkRvY3VtZW50KEZyYW1lKiBmcmFtZSwg
Y29uc3QgS1VSTCYgdXJsLCBib29sIGlzWEhUTUwsIGJvb2wgaXNIVE1MKQogICAgICwgbV93cml0
ZVJlY3Vyc2lvbkRlcHRoKDApCiAgICAgLCBtX3doZWVsRXZlbnRIYW5kbGVyQ291bnQoMCkKICAg
ICAsIG1fcGVuZGluZ1Rhc2tzVGltZXIodGhpcywgJkRvY3VtZW50OjpwZW5kaW5nVGFza3NUaW1l
ckZpcmVkKQorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAgLCBtX3RvdWNoRXZlbnRFbXVs
YXRpb25FbmFibGVkKGZhbHNlKQorI2VuZGlmCiB7CiAgICAgbV9kb2N1bWVudCA9IHRoaXM7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmgKaW5kZXggZmRiMzk4ODc1ZjUxNGRmZmM0YzcwMzk3MjFiMWE3NTc0
N2NiYjk3Yi4uOTc0YmQwYWU4NGExODAzNTYyMjhlYWYwYzY2ZmZlNWNiYWRkMTI4YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmgKQEAgLTY3OSw2ICs2NzksMTEgQEAgcHVibGljOgogICAgIAogICAgIE1v
dXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMgcHJlcGFyZU1vdXNlRXZlbnQoY29uc3QgSGl0VGVz
dFJlcXVlc3QmLCBjb25zdCBMYXlvdXRQb2ludCYsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYp
OwogCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICB2b2lkIHNldFRvdWNoRXZlbnRFbXVs
YXRpb25FbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBtX3RvdWNoRXZlbnRFbXVsYXRpb25FbmFibGVk
ID0gZW5hYmxlZDsgfQorICAgIGJvb2wgaXNUb3VjaEV2ZW50RW11bGF0aW9uRW5hYmxlZCgpIGNv
bnN0IHsgcmV0dXJuIG1fdG91Y2hFdmVudEVtdWxhdGlvbkVuYWJsZWQ7IH0KKyNlbmRpZgorCiAg
ICAgU3R5bGVTaGVldExpc3QqIHN0eWxlU2hlZXRzKCk7CiAKICAgICAvKiBOZXdseSBwcm9wb3Nl
ZCBDU1MzIG1lY2hhbmlzbSBmb3Igc2VsZWN0aW5nIGFsdGVybmF0ZQpAQCAtMTQ1NCw2ICsxNDU5
LDEwIEBAIHByaXZhdGU6CiAjaWZuZGVmIE5ERUJVRwogICAgIGJvb2wgbV91cGRhdGluZ1N0eWxl
U2VsZWN0b3I7CiAjZW5kaWYKKworI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAgYm9vbCBt
X3RvdWNoRXZlbnRFbXVsYXRpb25FbmFibGVkOworI2VuZGlmCiB9OwogCiAvLyBQdXQgdGhlc2Ug
bWV0aG9kcyBoZXJlLCBiZWNhdXNlIHRoZXkgcmVxdWlyZSB0aGUgRG9jdW1lbnQgZGVmaW5pdGlv
biwgYnV0IHdlIHJlYWxseSB3YW50IHRvIGlubGluZSB0aGVtLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVu
dEhhbmRsZXIuY3BwCmluZGV4IDUwN2E5MTQxNjM0YzBkNmMzZTYyNTY3MjY5OGU2YmU4MDU0MTg0
NmMuLjdkMmZjM2QwNDUyNzdmN2QxNmYxYmVlNTMyMzZlYjUyMWZjOTBmZWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTYwLDYgKzYwLDcgQEAKICNpbmNsdWRlICJNb3Vz
ZUV2ZW50LmgiCiAjaW5jbHVkZSAiTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cy5oIgogI2lu
Y2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUV2ZW50LmgiCiAjaW5jbHVkZSAiUGxh
dGZvcm1LZXlib2FyZEV2ZW50LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1XaGVlbEV2ZW50LmgiCiAj
aW5jbHVkZSAiUGx1Z2luRG9jdW1lbnQuaCIKQEAgLTE0Miw2ICsxNDMsNTEgQEAgcHJpdmF0ZToK
ICAgICBDdXJzb3IgbV9jdXJzb3I7CiB9OwogCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKK2Ns
YXNzIFN5bnRoZXRpY1RvdWNoUG9pbnQgOiBwdWJsaWMgUGxhdGZvcm1Ub3VjaFBvaW50IHsKK3B1
YmxpYzoKKworICAgIC8vIFRoZSBkZWZhdWx0IHZhbHVlcyBhcmUgYmFzZWQgb24gaHR0cDovL2R2
Y3MudzMub3JnL2hnL3dlYmV2ZW50cy9yYXctZmlsZS90aXAvdG91Y2hldmVudHMuaHRtbAorICAg
IGV4cGxpY2l0IFN5bnRoZXRpY1RvdWNoUG9pbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBl
dmVudCkKKyAgICB7CisgICAgICAgIG1faWQgPSAxOyAvLyBUaGVyZSBpcyBvbmx5IG9uZSBhY3Rp
dmUgVG91Y2hQb2ludC4KKyAgICAgICAgbV9zY3JlZW5Qb3MgPSBldmVudC5nbG9iYWxQb3NpdGlv
bigpOworICAgICAgICBtX3BvcyA9IGV2ZW50LnBvc2l0aW9uKCk7CisgICAgICAgIG1fcmFkaXVz
WSA9IDE7IC8vIERlZmF1bHQgdmFsdWUuCisgICAgICAgIG1fcmFkaXVzWCA9IDE7IC8vIERlZmF1
bHQgdmFsdWUuCisgICAgICAgIG1fcm90YXRpb25BbmdsZSA9IDAuMGY7IC8vIERlZmF1bHQgdmFs
dWUuCisgICAgICAgIG1fZm9yY2UgPSAxLjBmOyAvLyBEZWZhdWx0IHZhbHVlLgorCisgICAgICAg
IFBsYXRmb3JtRXZlbnQ6OlR5cGUgdHlwZSA9IGV2ZW50LnR5cGUoKTsKKyAgICAgICAgQVNTRVJU
KHR5cGUgPT0gUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZCB8fCB0eXBlID09IFBsYXRmb3JtRXZl
bnQ6Ok1vdXNlUHJlc3NlZCB8fCB0eXBlID09IFBsYXRmb3JtRXZlbnQ6Ok1vdXNlUmVsZWFzZWQp
OworCisgICAgICAgIHN3aXRjaCAodHlwZSkgeworICAgICAgICBjYXNlIFBsYXRmb3JtRXZlbnQ6
Ok1vdXNlTW92ZWQ6CisgICAgICAgICAgICBtX3N0YXRlID0gVG91Y2hNb3ZlZDsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIFBsYXRmb3JtRXZlbnQ6Ok1vdXNlUHJlc3NlZDoKKyAg
ICAgICAgICAgIG1fc3RhdGUgPSBUb3VjaFByZXNzZWQ7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBQbGF0Zm9ybUV2ZW50OjpNb3VzZVJlbGVhc2VkOgorICAgICAgICAgICAgbV9z
dGF0ZSA9IFRvdWNoUmVsZWFzZWQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBQ
bGF0Zm9ybUV2ZW50OjpNb3VzZVNjcm9sbDoKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgfQorfTsKKworY2xhc3MgU3lu
dGhldGljU2luZ2xlVG91Y2hFdmVudCA6IHB1YmxpYyBQbGF0Zm9ybVRvdWNoRXZlbnQgeworcHVi
bGljOgorICAgIGV4cGxpY2l0IFN5bnRoZXRpY1NpbmdsZVRvdWNoRXZlbnQoY29uc3QgUGxhdGZv
cm1Nb3VzZUV2ZW50JiBldmVudCkKKyAgICB7CisgICAgICAgIG1fdGltZXN0YW1wID0gZXZlbnQu
dGltZXN0YW1wKCk7CisgICAgICAgIG1fdG91Y2hQb2ludHMuYXBwZW5kKFN5bnRoZXRpY1RvdWNo
UG9pbnQoZXZlbnQpKTsKKyAgICB9Cit9OworI2VuZGlmCisKIHN0YXRpYyBpbmxpbmUgYm9vbCBz
Y3JvbGxOb2RlKGZsb2F0IGRlbHRhLCBXaGVlbEV2ZW50OjpHcmFudWxhcml0eSBncmFudWxhcml0
eSwgU2Nyb2xsRGlyZWN0aW9uIHBvc2l0aXZlRGlyZWN0aW9uLCBTY3JvbGxEaXJlY3Rpb24gbmVn
YXRpdmVEaXJlY3Rpb24sIE5vZGUqIG5vZGUsIE5vZGUqKiBzdG9wTm9kZSkKIHsKICAgICBpZiAo
IWRlbHRhKQpAQCAtNzM5LDYgKzc4NSwxMiBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91
c2VVcChjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBldmVudCkKIAogYm9vbCBF
dmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50KGNvbnN0IE1vdXNlRXZlbnRXaXRo
SGl0VGVzdFJlc3VsdHMmIGV2ZW50KQogeworI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAg
Ym9vbCBzaG91bGRIYW5kbGVNb3VzZUV2ZW50ID0gbWF5YmVEaXNwYXRjaFN5bnRoZXRpY1RvdWNo
RXZlbnQoZXZlbnQuZXZlbnQoKSk7CisgICAgaWYgKCFzaG91bGRIYW5kbGVNb3VzZUV2ZW50KQor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgorCiAgICAgaWYgKG1fYXV0b3Njcm9sbEluUHJv
Z3Jlc3MpCiAgICAgICAgIHN0b3BBdXRvc2Nyb2xsVGltZXIoKTsKIApAQCAtMTM3NSw2ICsxNDI3
LDEyIEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVByZXNzRXZlbnQoY29uc3QgUGxh
dGZvcm1Nb3VzZUV2ZW50JiBtb3VzZUV2ZW50KQogewogICAgIFJlZlB0cjxGcmFtZVZpZXc+IHBy
b3RlY3RvcihtX2ZyYW1lLT52aWV3KCkpOwogCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAg
ICBib29sIHNob3VsZEhhbmRsZU1vdXNlRXZlbnQgPSBtYXliZURpc3BhdGNoU3ludGhldGljVG91
Y2hFdmVudChtb3VzZUV2ZW50KTsKKyAgICBpZiAoIXNob3VsZEhhbmRsZU1vdXNlRXZlbnQpCisg
ICAgICAgIHJldHVybiB0cnVlOworI2VuZGlmCisKICAgICBVc2VyR2VzdHVyZUluZGljYXRvciBn
ZXN0dXJlSW5kaWNhdG9yKERlZmluaXRlbHlQcm9jZXNzaW5nVXNlckdlc3R1cmUpOwogCiAgICAg
Ly8gRklYTUUgKGJ1ZyA2ODE4NSk6IHRoaXMgY2FsbCBzaG91bGQgYmUgbWFkZSBhdCBhbm90aGVy
IGFic3RyYWN0aW9uIGxheWVyCkBAIC0xNTYxLDYgKzE2MTksMTMgQEAgYm9vbCBFdmVudEhhbmRs
ZXI6Om1vdXNlTW92ZWQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCkKIHsKICAgICBS
ZWZQdHI8RnJhbWVWaWV3PiBwcm90ZWN0b3IobV9mcmFtZS0+dmlldygpKTsKIAorI2lmIEVOQUJM
RShUT1VDSF9FVkVOVFMpCisgICAgLy8gRklYTUU6IHRoaXMgc2hvdWxkIGJlIG1vdmVkIHNvbWV3
aGVyZSBlbHNlIHRvIGFsc28gYmUgYWJsZSB0byBkaXNwYXRjaCB0b3VjaGNhbmNlbCBldmVudHMu
CisgICAgYm9vbCBzaG91bGRIYW5kbGVNb3VzZUV2ZW50ID0gbWF5YmVEaXNwYXRjaFN5bnRoZXRp
Y1RvdWNoRXZlbnQoZXZlbnQpOworICAgIGlmICghc2hvdWxkSGFuZGxlTW91c2VFdmVudCkKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisjZW5kaWYKKwogICAgIEhpdFRlc3RSZXN1bHQgaG92ZXJlZE5v
ZGUgPSBIaXRUZXN0UmVzdWx0KExheW91dFBvaW50KCkpOwogICAgIGJvb2wgcmVzdWx0ID0gaGFu
ZGxlTW91c2VNb3ZlRXZlbnQoZXZlbnQsICZob3ZlcmVkTm9kZSk7CiAKQEAgLTMzNTgsNiArMzQy
MywyMCBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlVG91Y2hFdmVudChjb25zdCBQbGF0Zm9y
bVRvdWNoRXZlbnQmIGV2ZW50KQogICAgIHJldHVybiBkZWZhdWx0UHJldmVudGVkOwogfQogCisv
LyBSZXR1cm5zIHdoZXRoZXIgdGhlIG9yaWdpbmFsIG1vdXNlIGV2ZW50IHNob3VsZCBiZSBoYW5k
bGVkLgorYm9vbCBFdmVudEhhbmRsZXI6Om1heWJlRGlzcGF0Y2hTeW50aGV0aWNUb3VjaEV2ZW50
KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQpCit7CisgICAgaWYgKCFtX2ZyYW1lLT5k
b2N1bWVudCgpLT5pc1RvdWNoRXZlbnRFbXVsYXRpb25FbmFibGVkKCkpCisgICAgICAgIHJldHVy
biB0cnVlOworCisgICAgUGxhdGZvcm1FdmVudDo6VHlwZSBldmVudFR5cGUgPSBldmVudC50eXBl
KCk7CisgICAgaWYgKGV2ZW50VHlwZSAhPSBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkICYmIGV2
ZW50VHlwZSAhPSBQbGF0Zm9ybUV2ZW50OjpNb3VzZVByZXNzZWQgJiYgZXZlbnRUeXBlICE9IFBs
YXRmb3JtRXZlbnQ6Ok1vdXNlUmVsZWFzZWQpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAg
U3ludGhldGljU2luZ2xlVG91Y2hFdmVudCB0b3VjaEV2ZW50KGV2ZW50KTsKKyAgICBib29sIGRl
ZmF1bHRQcmV2ZW50ZWQgPSBoYW5kbGVUb3VjaEV2ZW50KHRvdWNoRXZlbnQpOworICAgIHJldHVy
biAhZGVmYXVsdFByZXZlbnRlZDsKK30KIAogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFu
ZGxlci5oCmluZGV4IDU0N2JmZTU3ZDViOTNhMDFhZWM1M2U3MzIwNGViMjk3NmZjYjc3NmUuLjdk
MzcwZDE4MGU0NDAyOTQ2MTczOTAzYTBjMmNlNmQ2Y2YwZDIxM2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9F
dmVudEhhbmRsZXIuaApAQCAtMjY0LDYgKzI2NCwxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgZmFr
ZU1vdXNlTW92ZUV2ZW50VGltZXJGaXJlZChUaW1lcjxFdmVudEhhbmRsZXI+Kik7CiAgICAgdm9p
ZCBjYW5jZWxGYWtlTW91c2VNb3ZlRXZlbnQoKTsKIAorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMp
CisgICAgYm9vbCBtYXliZURpc3BhdGNoU3ludGhldGljVG91Y2hFdmVudChjb25zdCBQbGF0Zm9y
bU1vdXNlRXZlbnQmKTsKKyNlbmRpZgorCiAgICAgdm9pZCBpbnZhbGlkYXRlQ2xpY2soKTsKIAog
ICAgIE5vZGUqIG5vZGVVbmRlck1vdXNlKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVRvdWNoUG9pbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1BsYXRmb3JtVG91Y2hQb2ludC5oCmluZGV4IGQ2NmViMjNjODMxNzM2ZjRhNjdkM2UzZmI5
OWMxZWE3NzRiMDM3YjYuLmIxODE5MmQ5MGZlMjczNjZiYTg1Mjg2NDliZDQxOWVlMjIzNmFkMjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtVG91Y2hQb2ludC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtVG91Y2hQb2ludC5oCkBAIC00
NCw5ICs0NCwxMSBAQCBwdWJsaWM6CiAgICAgICAgIFRvdWNoU3RhdGVFbmQgLy8gUGxhY2Vob2xk
ZXI6IG11c3QgcmVtYWluIHRoZSBsYXN0IGl0ZW0uCiAgICAgfTsKIAorICAgIC8vIFRoaXMgaXMg
bmVjZXNzYXJ5IGZvciB1cyB0byBiZSBhYmxlIHRvIGJ1aWxkIHN5bnRoZXRpYyBldmVudHMuCisg
ICAgUGxhdGZvcm1Ub3VjaFBvaW50KCkgeyB9OworCiAjaWYgUExBVEZPUk0oUVQpCiAgICAgUGxh
dGZvcm1Ub3VjaFBvaW50KGNvbnN0IFFUb3VjaEV2ZW50OjpUb3VjaFBvaW50Jik7Ci0gICAgUGxh
dGZvcm1Ub3VjaFBvaW50KCkge307CiAjZWxpZiBQTEFURk9STShFRkwpCiAgICAgUGxhdGZvcm1U
b3VjaFBvaW50KHVuc2lnbmVkIGlkLCBjb25zdCBJbnRQb2ludCYgd2luZG93UG9zLCBTdGF0ZSk7
CiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124283</attachid>
            <date>2012-01-27 03:03:35 -0800</date>
            <delta_ts>2012-01-31 02:14:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77105-20120127150332.patch</filename>
            <type>text/plain</type>
            <size>21359</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1OTc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjEzMmZjMjNlY2U4NDcx
OTBlMTMzNDRmYTJmZDM2ODhkODJkODU4NS4uM2M5MTk4YTlmNjUzMmJiMDdjNmM4MjM2NTQ5ZDNm
NTA4YmM2NTZlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDEyLTAxLTI3ICBBbGV4
YW5kZXIgUGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW1wbGVtZW50
IHRvdWNoIGV2ZW50IGVtdWxhdGlvbiBpbiB0aGUgV2ViQ29yZSBsYXllcgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzcxMDUKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBmYXN0L2V2ZW50cy90b3Vj
aC9lbXVsYXRlLXRvdWNoLWV2ZW50cy5odG1sCisKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxl
ci5jcHA6CisgICAgICAgIChTeW50aGV0aWNUb3VjaFBvaW50KTogQSBzeW50aGV0aWMgdG91Y2gg
cG9pbnQgYnVpbHQgZnJvbSBQbGF0Zm9ybU1vdXNlRXZlbnQuCisgICAgICAgIChXZWJDb3JlOjpT
eW50aGV0aWNUb3VjaFBvaW50OjpTeW50aGV0aWNUb3VjaFBvaW50KToKKyAgICAgICAgKFN5bnRo
ZXRpY1NpbmdsZVRvdWNoRXZlbnQpOiBBIHN5bnRoZXRpYyB0b3VjaCBwb2ludCBldmVudCBidWls
dCBmcm9tIFBsYXRmb3JtTW91c2VFdmVudC4KKyAgICAgICAgKFdlYkNvcmU6OlN5bnRoZXRpY1Np
bmdsZVRvdWNoRXZlbnQ6OlN5bnRoZXRpY1NpbmdsZVRvdWNoRXZlbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVJlbGVhc2VFdmVudCk6IEludm9rZSBtYXli
ZURpc3BhdGNoU3ludGhldGljVG91Y2hFdmVudCgpIGFuZCBiYWlsIG91dCBpZiBuZWNlc3Nhcnku
CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVudCk6
IEludm9rZSBtYXliZURpc3BhdGNoU3ludGhldGljVG91Y2hFdmVudCgpIGFuZCBiYWlsIG91dCBp
ZiBuZWNlc3NhcnkuCisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6Om1vdXNlTW92ZWQp
OiBJbnZva2UgbWF5YmVEaXNwYXRjaFN5bnRoZXRpY1RvdWNoRXZlbnQoKSBhbmQgYmFpbCBvdXQg
aWYgbmVjZXNzYXJ5LgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjptYXliZURpc3Bh
dGNoU3ludGhldGljVG91Y2hFdmVudCk6IERpc3BhdGNoIGEgc3ludGhldGljIHRvdWNoIGV2ZW50
IGlmIG5lY2Vzc2FyeS4KKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5oOiBBZGRlZCBuZXcg
bWV0aG9kLgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2V0dGluZ3M6OlNldHRpbmdzKTogQWRkZWQgbV90b3VjaEV2ZW50RW11bGF0aW9uRW5hYmxlZCBp
bml0aWFsaXplci4KKyAgICAgICAgKiBwYWdlL1NldHRpbmdzLmg6IEFkZGVkIG1fdG91Y2hFdmVu
dEVtdWxhdGlvbkVuYWJsZWQsIGdldHRlciwgYW5kIHNldHRlci4KKyAgICAgICAgKFdlYkNvcmU6
OlNldHRpbmdzOjpzZXRUb3VjaEV2ZW50RW11bGF0aW9uRW5hYmxlZCk6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6U2V0dGluZ3M6OmlzVG91Y2hFdmVudEVtdWxhdGlvbkVuYWJsZWQpOiBBZGRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVRvdWNoUG9pbnQuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlBsYXRmb3JtVG91Y2hQb2ludDo6UGxhdGZvcm1Ub3VjaFBvaW50KTogVW5jb25kaXRp
b25hbGx5IGNvbXBpbGUgdGhlIHBhcmFtZXRlcmxlc3MgY3Rvci4KKyAgICAgICAgKiB0ZXN0aW5n
L0ludGVybmFsU2V0dGluZ3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxTZXR0aW5n
czo6c2V0VG91Y2hFdmVudEVtdWxhdGlvbkVuYWJsZWQpOiBBZGRlZCBmb3IgdGVzdGluZy4KKyAg
ICAgICAgKiB0ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaDogQWRkZWQgc2V0VG91Y2hFdmVudEVt
dWxhdGlvbkVuYWJsZWQoKSBmb3IgdGVzdGluZy4KKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFs
U2V0dGluZ3MuaWRsOiBBZGRlZCBzZXRUb3VjaEV2ZW50RW11bGF0aW9uRW5hYmxlZCgpIGZvciB0
ZXN0aW5nLgorCiAyMDEyLTAxLTI2ICBOaWtvbGFzIFppbW1lcm1hbm4gIDxuemltbWVybWFubkBy
aW0uY29tPgogCiAgICAgICAgIE5vdCByZXZpZXdlZC4gVHJ5IHRvIGZpeCBHdGsgYnVpbGQgLSBK
U1NoYWRvd1Jvb3QuY3BwIGNhbid0IGJlIGZvdW5kLCBmaXggYnkgbG9va2luZyBmb3IgaXQgaW4g
dGhlIGRlcml2ZWQgc291cmNlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZl
bnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRl
eCA1MDdhOTE0MTYzNGMwZDZjM2U2MjU2NzI2OThlNmJlODA1NDE4NDZjLi42Yzc3OTBkYTIwNmU4
MTMwMmI4OTllM2YzMWNkYmM2OGVjMDg0YTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRs
ZXIuY3BwCkBAIC02MCw2ICs2MCw3IEBACiAjaW5jbHVkZSAiTW91c2VFdmVudC5oIgogI2luY2x1
ZGUgIk1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMuaCIKICNpbmNsdWRlICJQYWdlLmgiCisj
aW5jbHVkZSAiUGxhdGZvcm1FdmVudC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtS2V5Ym9hcmRFdmVu
dC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtV2hlZWxFdmVudC5oIgogI2luY2x1ZGUgIlBsdWdpbkRv
Y3VtZW50LmgiCkBAIC0xNDIsNiArMTQzLDY3IEBAIHByaXZhdGU6CiAgICAgQ3Vyc29yIG1fY3Vy
c29yOwogfTsKIAorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpICYmIEVOQUJMRShJTlNQRUNUT1Ip
CitjbGFzcyBTeW50aGV0aWNUb3VjaFBvaW50IDogcHVibGljIFBsYXRmb3JtVG91Y2hQb2ludCB7
CitwdWJsaWM6CisKKyAgICAvLyBUaGUgZGVmYXVsdCB2YWx1ZXMgYXJlIGJhc2VkIG9uIGh0dHA6
Ly9kdmNzLnczLm9yZy9oZy93ZWJldmVudHMvcmF3LWZpbGUvdGlwL3RvdWNoZXZlbnRzLmh0bWwK
KyAgICBleHBsaWNpdCBTeW50aGV0aWNUb3VjaFBvaW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVu
dCYgZXZlbnQpCisgICAgeworICAgICAgICBtX2lkID0gMDsgLy8gVGhlcmUgaXMgb25seSBvbmUg
YWN0aXZlIFRvdWNoUG9pbnQuCisgICAgICAgIG1fc2NyZWVuUG9zID0gZXZlbnQuZ2xvYmFsUG9z
aXRpb24oKTsKKyAgICAgICAgbV9wb3MgPSBldmVudC5wb3NpdGlvbigpOworICAgICAgICBtX3Jh
ZGl1c1kgPSAxOyAvLyBEZWZhdWx0IHZhbHVlLgorICAgICAgICBtX3JhZGl1c1ggPSAxOyAvLyBE
ZWZhdWx0IHZhbHVlLgorICAgICAgICBtX3JvdGF0aW9uQW5nbGUgPSAwLjBmOyAvLyBEZWZhdWx0
IHZhbHVlLgorICAgICAgICBtX2ZvcmNlID0gMS4wZjsgLy8gRGVmYXVsdCB2YWx1ZS4KKworICAg
ICAgICBQbGF0Zm9ybUV2ZW50OjpUeXBlIHR5cGUgPSBldmVudC50eXBlKCk7CisgICAgICAgIEFT
U0VSVCh0eXBlID09IFBsYXRmb3JtRXZlbnQ6Ok1vdXNlTW92ZWQgfHwgdHlwZSA9PSBQbGF0Zm9y
bUV2ZW50OjpNb3VzZVByZXNzZWQgfHwgdHlwZSA9PSBQbGF0Zm9ybUV2ZW50OjpNb3VzZVJlbGVh
c2VkKTsKKworICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICAgICAgY2FzZSBQbGF0Zm9ybUV2
ZW50OjpNb3VzZU1vdmVkOgorICAgICAgICAgICAgbV9zdGF0ZSA9IFRvdWNoTW92ZWQ7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBQbGF0Zm9ybUV2ZW50OjpNb3VzZVByZXNzZWQ6
CisgICAgICAgICAgICBtX3N0YXRlID0gVG91Y2hQcmVzc2VkOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgUGxhdGZvcm1FdmVudDo6TW91c2VSZWxlYXNlZDoKKyAgICAgICAgICAg
IG1fc3RhdGUgPSBUb3VjaFJlbGVhc2VkOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgUGxhdGZvcm1FdmVudDo6TW91c2VTY3JvbGw6CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAgIH0KK307CisKK2NsYXNz
IFN5bnRoZXRpY1NpbmdsZVRvdWNoRXZlbnQgOiBwdWJsaWMgUGxhdGZvcm1Ub3VjaEV2ZW50IHsK
K3B1YmxpYzoKKyAgICBleHBsaWNpdCBTeW50aGV0aWNTaW5nbGVUb3VjaEV2ZW50KGNvbnN0IFBs
YXRmb3JtTW91c2VFdmVudCYgZXZlbnQpCisgICAgeworICAgICAgICBzd2l0Y2ggKGV2ZW50LnR5
cGUoKSkgeworICAgICAgICBjYXNlIFBsYXRmb3JtRXZlbnQ6Ok1vdXNlTW92ZWQ6CisgICAgICAg
ICAgICBtX3R5cGUgPSBUb3VjaE1vdmU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBQbGF0Zm9ybUV2ZW50OjpNb3VzZVByZXNzZWQ6CisgICAgICAgICAgICBtX3R5cGUgPSBUb3Vj
aFN0YXJ0OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgUGxhdGZvcm1FdmVudDo6
TW91c2VSZWxlYXNlZDoKKyAgICAgICAgICAgIG1fdHlwZSA9IFRvdWNoRW5kOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgUGxhdGZvcm1FdmVudDo6TW91c2VTY3JvbGw6CisgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAg
ICAgIG1fdHlwZSA9IE5vVHlwZTsKKyAgICAgICAgfQorICAgICAgICBtX3RpbWVzdGFtcCA9IGV2
ZW50LnRpbWVzdGFtcCgpOworICAgICAgICBtX21vZGlmaWVycyA9IGV2ZW50Lm1vZGlmaWVycygp
OworICAgICAgICBtX3RvdWNoUG9pbnRzLmFwcGVuZChTeW50aGV0aWNUb3VjaFBvaW50KGV2ZW50
KSk7CisgICAgfQorfTsKKyNlbmRpZgorCiBzdGF0aWMgaW5saW5lIGJvb2wgc2Nyb2xsTm9kZShm
bG9hdCBkZWx0YSwgV2hlZWxFdmVudDo6R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIFNjcm9sbERp
cmVjdGlvbiBwb3NpdGl2ZURpcmVjdGlvbiwgU2Nyb2xsRGlyZWN0aW9uIG5lZ2F0aXZlRGlyZWN0
aW9uLCBOb2RlKiBub2RlLCBOb2RlKiogc3RvcE5vZGUpCiB7CiAgICAgaWYgKCFkZWx0YSkKQEAg
LTczOSw2ICs4MDEsMTIgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlVXAoY29uc3Qg
TW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgZXZlbnQpCiAKIGJvb2wgRXZlbnRIYW5kbGVy
OjpoYW5kbGVNb3VzZVJlbGVhc2VFdmVudChjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1
bHRzJiBldmVudCkKIHsKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiBFTkFCTEUoSU5TUEVD
VE9SKQorICAgIGJvb2wgc2hvdWxkSGFuZGxlTW91c2VFdmVudCA9IG1heWJlRGlzcGF0Y2hTeW50
aGV0aWNUb3VjaEV2ZW50KGV2ZW50LmV2ZW50KCkpOworICAgIGlmICghc2hvdWxkSGFuZGxlTW91
c2VFdmVudCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisjZW5kaWYKKwogICAgIGlmIChtX2F1dG9z
Y3JvbGxJblByb2dyZXNzKQogICAgICAgICBzdG9wQXV0b3Njcm9sbFRpbWVyKCk7CiAKQEAgLTEz
NzUsNiArMTQ0MywxMiBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2ZW50
KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgbW91c2VFdmVudCkKIHsKICAgICBSZWZQdHI8RnJh
bWVWaWV3PiBwcm90ZWN0b3IobV9mcmFtZS0+dmlldygpKTsKIAorI2lmIEVOQUJMRShUT1VDSF9F
VkVOVFMpICYmIEVOQUJMRShJTlNQRUNUT1IpCisgICAgYm9vbCBzaG91bGRIYW5kbGVNb3VzZUV2
ZW50ID0gbWF5YmVEaXNwYXRjaFN5bnRoZXRpY1RvdWNoRXZlbnQobW91c2VFdmVudCk7CisgICAg
aWYgKCFzaG91bGRIYW5kbGVNb3VzZUV2ZW50KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyNlbmRp
ZgorCiAgICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGljYXRvcihEZWZpbml0ZWx5
UHJvY2Vzc2luZ1VzZXJHZXN0dXJlKTsKIAogICAgIC8vIEZJWE1FIChidWcgNjgxODUpOiB0aGlz
IGNhbGwgc2hvdWxkIGJlIG1hZGUgYXQgYW5vdGhlciBhYnN0cmFjdGlvbiBsYXllcgpAQCAtMTU2
MSw2ICsxNjM1LDEzIEBAIGJvb2wgRXZlbnRIYW5kbGVyOjptb3VzZU1vdmVkKGNvbnN0IFBsYXRm
b3JtTW91c2VFdmVudCYgZXZlbnQpCiB7CiAgICAgUmVmUHRyPEZyYW1lVmlldz4gcHJvdGVjdG9y
KG1fZnJhbWUtPnZpZXcoKSk7CiAKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiBFTkFCTEUo
SU5TUEVDVE9SKQorICAgIC8vIEZJWE1FOiB0aGlzIHNob3VsZCBiZSBtb3ZlZCBzb21ld2hlcmUg
ZWxzZSB0byBhbHNvIGJlIGFibGUgdG8gZGlzcGF0Y2ggdG91Y2hjYW5jZWwgZXZlbnRzLgorICAg
IGJvb2wgc2hvdWxkSGFuZGxlTW91c2VFdmVudCA9IG1heWJlRGlzcGF0Y2hTeW50aGV0aWNUb3Vj
aEV2ZW50KGV2ZW50KTsKKyAgICBpZiAoIXNob3VsZEhhbmRsZU1vdXNlRXZlbnQpCisgICAgICAg
IHJldHVybiB0cnVlOworI2VuZGlmCisKICAgICBIaXRUZXN0UmVzdWx0IGhvdmVyZWROb2RlID0g
SGl0VGVzdFJlc3VsdChMYXlvdXRQb2ludCgpKTsKICAgICBib29sIHJlc3VsdCA9IGhhbmRsZU1v
dXNlTW92ZUV2ZW50KGV2ZW50LCAmaG92ZXJlZE5vZGUpOwogCkBAIC0zMzU4LDcgKzM0MzksMjUg
QEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZVRvdWNoRXZlbnQoY29uc3QgUGxhdGZvcm1Ub3Vj
aEV2ZW50JiBldmVudCkKICAgICByZXR1cm4gZGVmYXVsdFByZXZlbnRlZDsKIH0KIAorI2lmIEVO
QUJMRShJTlNQRUNUT1IpCisvLyBSZXR1cm5zIHdoZXRoZXIgdGhlIG9yaWdpbmFsIG1vdXNlIGV2
ZW50IHNob3VsZCBiZSBoYW5kbGVkLgorYm9vbCBFdmVudEhhbmRsZXI6Om1heWJlRGlzcGF0Y2hT
eW50aGV0aWNUb3VjaEV2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQpCit7Cisg
ICAgaWYgKCFtX2ZyYW1lLT5kb2N1bWVudCgpLT5zZXR0aW5ncygpLT5pc1RvdWNoRXZlbnRFbXVs
YXRpb25FbmFibGVkKCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgUGxhdGZvcm1FdmVu
dDo6VHlwZSBldmVudFR5cGUgPSBldmVudC50eXBlKCk7CisgICAgaWYgKGV2ZW50VHlwZSAhPSBQ
bGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkICYmIGV2ZW50VHlwZSAhPSBQbGF0Zm9ybUV2ZW50OjpN
b3VzZVByZXNzZWQgJiYgZXZlbnRUeXBlICE9IFBsYXRmb3JtRXZlbnQ6Ok1vdXNlUmVsZWFzZWQp
CisgICAgICAgIHJldHVybiB0cnVlOwogCisgICAgaWYgKGV2ZW50VHlwZSA9PSBQbGF0Zm9ybUV2
ZW50OjpNb3VzZU1vdmVkICYmICFtX3RvdWNoUHJlc3NlZCkKKyAgICAgICAgcmV0dXJuIHRydWU7
CisKKyAgICBTeW50aGV0aWNTaW5nbGVUb3VjaEV2ZW50IHRvdWNoRXZlbnQoZXZlbnQpOworICAg
IGJvb2wgZGVmYXVsdFByZXZlbnRlZCA9IGhhbmRsZVRvdWNoRXZlbnQodG91Y2hFdmVudCk7Cisg
ICAgcmV0dXJuICFkZWZhdWx0UHJldmVudGVkOworfQorI2VuZGlmCiAKICNlbmRpZgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9FdmVudEhhbmRsZXIuaAppbmRleCA1NDdiZmU1N2Q1YjkzYTAxYWVjNTNlNzMyMDRl
YjI5NzZmY2I3NzZlLi5lYzFhMjFlNDFlM2ZlNTgxMTAxN2FlNDRhNzYzNzM3ZDc0Y2ZjNTQxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKQEAgLTI2NCw2ICsyNjQsMTAgQEAgcHJpdmF0
ZToKICAgICB2b2lkIGZha2VNb3VzZU1vdmVFdmVudFRpbWVyRmlyZWQoVGltZXI8RXZlbnRIYW5k
bGVyPiopOwogICAgIHZvaWQgY2FuY2VsRmFrZU1vdXNlTW92ZUV2ZW50KCk7CiAKKyNpZiBFTkFC
TEUoVE9VQ0hfRVZFTlRTKSAmJiBFTkFCTEUoSU5TUEVDVE9SKQorICAgIGJvb2wgbWF5YmVEaXNw
YXRjaFN5bnRoZXRpY1RvdWNoRXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7CisjZW5k
aWYKKwogICAgIHZvaWQgaW52YWxpZGF0ZUNsaWNrKCk7CiAKICAgICBOb2RlKiBub2RlVW5kZXJN
b3VzZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcAppbmRleCA5NTU5NzkzYzY0MTE2
NjJiMjcxNWZiYmJkM2VjZjg5YzZiNWY3YTRmLi5lY2RmMTBiNGU0M2Y4MmRlMmU1ZDkwNWViZjQ5
Yjc2NzYyN2UzNWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcApAQCAtMjM4LDYgKzIzOCw5
IEBAIFNldHRpbmdzOjpTZXR0aW5ncyhQYWdlKiBwYWdlKQogICAgICwgbV9zY3JvbGxpbmdDb29y
ZGluYXRvckVuYWJsZWQoZmFsc2UpCiAjZW5kaWYKICAgICAsIG1fbm90aWZpY2F0aW9uc0VuYWJs
ZWQodHJ1ZSkKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiBFTkFCTEUoSU5TUEVDVE9SKQor
ICAgICwgbV90b3VjaEV2ZW50RW11bGF0aW9uRW5hYmxlZChmYWxzZSkKKyNlbmRpZgogICAgICwg
bV9sb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHlUaW1lcih0aGlzLCAmU2V0dGluZ3M6OmxvYWRzSW1h
Z2VzQXV0b21hdGljYWxseVRpbWVyRmlyZWQpCiB7CiAgICAgLy8gQSBGcmFtZSBtYXkgbm90IGhh
dmUgYmVlbiBjcmVhdGVkIHlldCwgc28gd2UgaW5pdGlhbGl6ZSB0aGUgQXRvbWljU3RyaW5nIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9TZXR0aW5ncy5oCmluZGV4IGQ2NTE1MjBjYTJiZTYzODY0YTFhNmY0MTRmZTIwZWQ2
MTc0NzBjOGQuLjE5YTEwYTMxMzRlNGRkN2U4MmU1ZTNhZTU2OTc2MTEzYzQ3ZTAwN2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1NldHRpbmdzLmgKQEAgLTUxNyw2ICs1MTcsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICB2b2lkIHNldE5vdGlmaWNhdGlvbnNFbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBt
X25vdGlmaWNhdGlvbnNFbmFibGVkID0gZW5hYmxlZDsgfQogICAgICAgICBib29sIG5vdGlmaWNh
dGlvbnNFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9ub3RpZmljYXRpb25zRW5hYmxlZDsgfQog
CisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICAgICAg
dm9pZCBzZXRUb3VjaEV2ZW50RW11bGF0aW9uRW5hYmxlZChib29sIGVuYWJsZWQpIHsgbV90b3Vj
aEV2ZW50RW11bGF0aW9uRW5hYmxlZCA9IGVuYWJsZWQ7IH0KKyAgICAgICAgYm9vbCBpc1RvdWNo
RXZlbnRFbXVsYXRpb25FbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV90b3VjaEV2ZW50RW11bGF0
aW9uRW5hYmxlZDsgfQorI2VuZGlmCisKICAgICBwcml2YXRlOgogICAgICAgICBTZXR0aW5ncyhQ
YWdlKik7CiAKQEAgLTY2MSw2ICs2NjYsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAg
ICAgIGJvb2wgbV9ub3RpZmljYXRpb25zRW5hYmxlZCA6IDE7CiAKKyNpZiBFTkFCTEUoVE9VQ0hf
RVZFTlRTKSAmJiBFTkFCTEUoSU5TUEVDVE9SKQorICAgICAgICBib29sIG1fdG91Y2hFdmVudEVt
dWxhdGlvbkVuYWJsZWQgOiAxOworI2VuZGlmCisKICAgICAgICAgVGltZXI8U2V0dGluZ3M+IG1f
bG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5VGltZXI7CiAgICAgICAgIHZvaWQgbG9hZHNJbWFnZXNB
dXRvbWF0aWNhbGx5VGltZXJGaXJlZChUaW1lcjxTZXR0aW5ncz4qKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Ub3VjaFBvaW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVRvdWNoUG9pbnQuaAppbmRleCBkNjZlYjIzYzgzMTczNmY0
YTY3ZDNlM2ZiOTljMWVhNzc0YjAzN2I2Li5iMTgxOTJkOTBmZTI3MzY2YmE4NTI4NjQ5YmQ0MTll
ZTIyMzZhZDIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVRv
dWNoUG9pbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVRvdWNoUG9p
bnQuaApAQCAtNDQsOSArNDQsMTEgQEAgcHVibGljOgogICAgICAgICBUb3VjaFN0YXRlRW5kIC8v
IFBsYWNlaG9sZGVyOiBtdXN0IHJlbWFpbiB0aGUgbGFzdCBpdGVtLgogICAgIH07CiAKKyAgICAv
LyBUaGlzIGlzIG5lY2Vzc2FyeSBmb3IgdXMgdG8gYmUgYWJsZSB0byBidWlsZCBzeW50aGV0aWMg
ZXZlbnRzLgorICAgIFBsYXRmb3JtVG91Y2hQb2ludCgpIHsgfTsKKwogI2lmIFBMQVRGT1JNKFFU
KQogICAgIFBsYXRmb3JtVG91Y2hQb2ludChjb25zdCBRVG91Y2hFdmVudDo6VG91Y2hQb2ludCYp
OwotICAgIFBsYXRmb3JtVG91Y2hQb2ludCgpIHt9OwogI2VsaWYgUExBVEZPUk0oRUZMKQogICAg
IFBsYXRmb3JtVG91Y2hQb2ludCh1bnNpZ25lZCBpZCwgY29uc3QgSW50UG9pbnQmIHdpbmRvd1Bv
cywgU3RhdGUpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFsU2V0dGluZ3MuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRp
bmdzLmNwcAppbmRleCBlNTY2Y2QwOWEyZjkxNDg1YThlZjExN2VlM2Q0MjVjODM1NDU1NzFhLi44
YWVlMjEyZDljMTU4MzU5NDU5ODkxOTRiZTc3NjZjMmZlYmM5MDEwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5jcHAKQEAgLTI3MSw0ICsyNzEsMTUgQEAgdm9p
ZCBJbnRlcm5hbFNldHRpbmdzOjpzZXRQZXJUaWxlRHJhd2luZ0VuYWJsZWQoYm9vbCBlbmFibGVk
LCBFeGNlcHRpb25Db2RlJiBlYykKICAgICBzZXR0aW5ncygpLT5zZXRQZXJUaWxlRHJhd2luZ0Vu
YWJsZWQoZW5hYmxlZCk7CiB9CiAKK3ZvaWQgSW50ZXJuYWxTZXR0aW5nczo6c2V0VG91Y2hFdmVu
dEVtdWxhdGlvbkVuYWJsZWQoYm9vbCBlbmFibGVkLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyNp
ZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiBFTkFCTEUoSU5TUEVDVE9SKQorICAgIEludGVybmFs
U2V0dGluZ3NHdWFyZEZvclNldHRpbmdzKCk7CisgICAgc2V0dGluZ3MoKS0+c2V0VG91Y2hFdmVu
dEVtdWxhdGlvbkVuYWJsZWQoZW5hYmxlZCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShlbmFi
bGVkKTsKKyAgICBVTlVTRURfUEFSQU0oZWMpOworI2VuZGlmCit9CisKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5oIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmgKaW5kZXggMjFhYTA0YTE1MTBiYjJhMGQzMmVj
NGY3ZWI1YzYxZmY3NzU2Y2I4MS4uNDBiOWNhY2QzOGMwYmU3ZjQxZjM4Nzc3ZTkyZmMyOGE1MzQ4
MDcwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdz
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmgKQEAgLTY0
LDYgKzY0LDcgQEAgcHVibGljOgogICAgIGZsb2F0IHBhZ2VTY2FsZUZhY3RvcihFeGNlcHRpb25D
b2RlJik7CiAgICAgdm9pZCBzZXRQYWdlU2NhbGVGYWN0b3IoZmxvYXQgc2NhbGVGYWN0b3IsIGlu
dCB4LCBpbnQgeSwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgc2V0UGVyVGlsZURyYXdpbmdF
bmFibGVkKGJvb2wgZW5hYmxlZCwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgc2V0VG91Y2hF
dmVudEVtdWxhdGlvbkVuYWJsZWQoYm9vbCBlbmFibGVkLCBFeGNlcHRpb25Db2RlJik7CiAKIHBy
aXZhdGU6CiAgICAgSW50ZXJuYWxTZXR0aW5ncyhGcmFtZSosIEludGVybmFsU2V0dGluZ3MqIG9s
ZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3Mu
aWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmlkbAppbmRleCA3
MWE3NzA4OTRjZmZjM2RjNTQ1MDQwYWI3ZGEzZDViMGU3NDc1NTI5Li40NzVmNTM4Yzc1YTFkZTFj
ZWNkZWQ2YzQ3OWYzZGMzMGE3NDRiMGZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFsU2V0dGluZ3MuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxTZXR0aW5ncy5pZGwKQEAgLTQ0LDYgKzQ0LDcgQEAgbW9kdWxlIHdpbmRvdyB7CiAgICAg
ICAgIGJvb2xlYW4gdW5pZmllZFRleHRDaGVja2luZ0VuYWJsZWQoKSByYWlzZXMgKERPTUV4Y2Vw
dGlvbik7CiAgICAgICAgIGZsb2F0IHBhZ2VTY2FsZUZhY3RvcigpIHJhaXNlcyhET01FeGNlcHRp
b24pOwogICAgICAgICB2b2lkIHNldFBhZ2VTY2FsZUZhY3RvcihpbiBmbG9hdCBzY2FsZUZhY3Rv
ciwgaW4gbG9uZyB4LCBpbiBsb25nIHkpIHJhaXNlcyhET01FeGNlcHRpb24pOworICAgICAgICB2
b2lkIHNldFRvdWNoRXZlbnRFbXVsYXRpb25FbmFibGVkKGluIGJvb2xlYW4gZW5hYmxlZCkgcmFp
c2VzKERPTUV4Y2VwdGlvbik7CiAgICAgfTsKIH0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGY5NDE3NmY2OGZmYWJhYjIy
NmZiZmE4OTAxNzUyNTljZjY4Mzk0NjYuLjcyMDQ0MzU1NGUwODVjOTYwOWNhNmFlMWU2ODkwYzlj
NThmYTAzMGYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMi0wMS0yNyAgQWxleGFuZGVyIFBh
dmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEltcGxlbWVudCB0b3VjaCBl
dmVudCBlbXVsYXRpb24gaW4gdGhlIFdlYkNvcmUgbGF5ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3MTA1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2V2ZW50cy90b3VjaC9lbXVsYXRlLXRv
dWNoLWV2ZW50cy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZXZlbnRzL3Rv
dWNoL2VtdWxhdGUtdG91Y2gtZXZlbnRzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZXZl
bnRzL3RvdWNoL3NjcmlwdC10ZXN0cy9lbXVsYXRlLXRvdWNoLWV2ZW50cy5qczogQWRkZWQuCisg
ICAgICAgICh0b3VjaEV2ZW50Q2FsbGJhY2spOgorICAgICAgICAodmVyaWZ5VG91Y2hFdmVudCk6
CisgICAgICAgICh2ZXJpZnlUb3VjaFBvaW50KToKKyAgICAgICAgKHZlcmlmeVRvdWNoKToKKyAg
ICAgICAgKG1vdXNlRXZlbnRTZXF1ZW5jZSk6CisKIDIwMTItMDEtMjYgIENzYWJhIE9zenRyb2dv
bsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4KIAogICAgICAgICBbUXRdIFVucmV2aWV3ZWQgZ2FyZGVu
aW5nIGFmdGVyIHIxMDU5MTcuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90
b3VjaC9lbXVsYXRlLXRvdWNoLWV2ZW50cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0
L2V2ZW50cy90b3VjaC9lbXVsYXRlLXRvdWNoLWV2ZW50cy1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uOGNmODI2ZTNiOTEwMTU3ZDNkNzllZWVkNmFjMzQzZjI2NTljZjIwOQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2VtdWxhdGUtdG91Y2gtZXZlbnRz
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDYxIEBACitUaGlzIHRlc3RzIHNpbmdsZSB0b3VjaCBl
dmVudCBlbXVsYXRpb24gdXNpbmcgbW91c2UgZXZlbnRzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCisKKworUEFTUyBsYXN0RXZlbnQudHlwZSBpcyAidG91Y2hzdGFydCIKK1BBU1MgbGFz
dEV2ZW50LnRvdWNoZXMubGVuZ3RoIGlzIDEKK1BBU1MgbGFzdEV2ZW50LmNoYW5nZWRUb3VjaGVz
Lmxlbmd0aCBpcyAxCitQQVNTIGxhc3RFdmVudC50YXJnZXRUb3VjaGVzLmxlbmd0aCBpcyAxCitQ
QVNTIGxhc3RFdmVudC5wYWdlWCBpcyAwCitQQVNTIGxhc3RFdmVudC5wYWdlWSBpcyAwCitQQVNT
IGxhc3RFdmVudC5zaGlmdEtleSBpcyB0cnVlCitQQVNTIGxhc3RFdmVudC5hbHRLZXkgaXMgdHJ1
ZQorUEFTUyBsYXN0RXZlbnQuY3RybEtleSBpcyBmYWxzZQorUEFTUyBsYXN0RXZlbnQubWV0YUtl
eSBpcyBmYWxzZQorUEFTUyBsYXN0RXZlbnQudG91Y2hlc1swXS50YXJnZXQuaWQgaXMgInRvdWNo
dGFyZ2V0IgorUEFTUyBsYXN0RXZlbnQudG91Y2hlc1swXS5wYWdlWCBpcyAxMAorUEFTUyBsYXN0
RXZlbnQudG91Y2hlc1swXS5wYWdlWSBpcyAxMAorUEFTUyBsYXN0RXZlbnQudG91Y2hlc1swXS5j
bGllbnRYIGlzIDEwCitQQVNTIGxhc3RFdmVudC50b3VjaGVzWzBdLmNsaWVudFkgaXMgMTAKK1BB
U1MgbGFzdEV2ZW50LnRvdWNoZXNbMF0uaWRlbnRpZmllciBpcyAwCitQQVNTIGxhc3RFdmVudC5j
aGFuZ2VkVG91Y2hlc1swXS5wYWdlWCBpcyAxMAorUEFTUyBsYXN0RXZlbnQuY2hhbmdlZFRvdWNo
ZXNbMF0ucGFnZVkgaXMgMTAKK1BBU1MgbGFzdEV2ZW50LmNoYW5nZWRUb3VjaGVzWzBdLmNsaWVu
dFggaXMgMTAKK1BBU1MgbGFzdEV2ZW50LmNoYW5nZWRUb3VjaGVzWzBdLmNsaWVudFkgaXMgMTAK
K1BBU1MgbGFzdEV2ZW50LmNoYW5nZWRUb3VjaGVzWzBdLmlkZW50aWZpZXIgaXMgMAorUEFTUyBs
YXN0RXZlbnQudGFyZ2V0VG91Y2hlc1swXS5wYWdlWCBpcyAxMAorUEFTUyBsYXN0RXZlbnQudGFy
Z2V0VG91Y2hlc1swXS5wYWdlWSBpcyAxMAorUEFTUyBsYXN0RXZlbnQudGFyZ2V0VG91Y2hlc1sw
XS5jbGllbnRYIGlzIDEwCitQQVNTIGxhc3RFdmVudC50YXJnZXRUb3VjaGVzWzBdLmNsaWVudFkg
aXMgMTAKK1BBU1MgbGFzdEV2ZW50LnRhcmdldFRvdWNoZXNbMF0uaWRlbnRpZmllciBpcyAwCitQ
QVNTIGxhc3RFdmVudC50eXBlIGlzICJ0b3VjaG1vdmUiCitQQVNTIGxhc3RFdmVudC50b3VjaGVz
Lmxlbmd0aCBpcyAxCitQQVNTIGxhc3RFdmVudC5jaGFuZ2VkVG91Y2hlcy5sZW5ndGggaXMgMQor
UEFTUyBsYXN0RXZlbnQudGFyZ2V0VG91Y2hlcy5sZW5ndGggaXMgMQorUEFTUyBsYXN0RXZlbnQu
cGFnZVggaXMgMAorUEFTUyBsYXN0RXZlbnQucGFnZVkgaXMgMAorUEFTUyBsYXN0RXZlbnQudG91
Y2hlc1swXS5wYWdlWCBpcyAyMAorUEFTUyBsYXN0RXZlbnQudG91Y2hlc1swXS5wYWdlWSBpcyAz
MAorUEFTUyBsYXN0RXZlbnQudG91Y2hlc1swXS5jbGllbnRYIGlzIDIwCitQQVNTIGxhc3RFdmVu
dC50b3VjaGVzWzBdLmNsaWVudFkgaXMgMzAKK1BBU1MgbGFzdEV2ZW50LnRvdWNoZXNbMF0uaWRl
bnRpZmllciBpcyAwCitQQVNTIGxhc3RFdmVudC50eXBlIGlzICJ0b3VjaGVuZCIKK1BBU1MgbGFz
dEV2ZW50LnRvdWNoZXMubGVuZ3RoIGlzIDAKK1BBU1MgbGFzdEV2ZW50LmNoYW5nZWRUb3VjaGVz
Lmxlbmd0aCBpcyAxCitQQVNTIGxhc3RFdmVudC50YXJnZXRUb3VjaGVzLmxlbmd0aCBpcyAwCitQ
QVNTIGxhc3RFdmVudC5wYWdlWCBpcyAwCitQQVNTIGxhc3RFdmVudC5wYWdlWSBpcyAwCitQQVNT
IGxhc3RFdmVudC5jaGFuZ2VkVG91Y2hlc1swXS5wYWdlWCBpcyAyMAorUEFTUyBsYXN0RXZlbnQu
Y2hhbmdlZFRvdWNoZXNbMF0ucGFnZVkgaXMgMzAKK1BBU1MgbGFzdEV2ZW50LmNoYW5nZWRUb3Vj
aGVzWzBdLmNsaWVudFggaXMgMjAKK1BBU1MgbGFzdEV2ZW50LmNoYW5nZWRUb3VjaGVzWzBdLmNs
aWVudFkgaXMgMzAKK1BBU1MgbGFzdEV2ZW50LmNoYW5nZWRUb3VjaGVzWzBdLmlkZW50aWZpZXIg
aXMgMAorUEFTUyBsYXN0RXZlbnQuc2hpZnRLZXkgaXMgZmFsc2UKK1BBU1MgbGFzdEV2ZW50LmFs
dEtleSBpcyB0cnVlCitQQVNTIGxhc3RFdmVudC5jdHJsS2V5IGlzIHRydWUKK1BBU1MgbGFzdEV2
ZW50Lm1ldGFLZXkgaXMgZmFsc2UKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3Vj
aC9lbXVsYXRlLXRvdWNoLWV2ZW50cy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91
Y2gvZW11bGF0ZS10b3VjaC1ldmVudHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MzZhN2ExNzEzNWRhODlh
OWRhOGQ5MTA0ODI0N2ZlNjViYjc0ZmI2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9ldmVudHMvdG91Y2gvZW11bGF0ZS10b3VjaC1ldmVudHMuaHRtbApAQCAtMCwwICsxLDE2
IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRt
bD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8IS0tCisgIFRvdWNoIHRlc3RzIHRoYXQgaW52b2x2ZSB0aGUgb250b3Vj
aHN0YXJ0LCBvbnRvdWNobW92ZSwgb250b3VjaGVuZCBvciBvbnRvdWNoY2FuY2VsIGNhbGxiYWNr
cworICBzaG91bGQgYmUgd3JpdHRlbiBpbiBhbiBhc3luY2hyb25vdXMgZmFzaGlvbiBzbyB0aGV5
IGNhbiBiZSBydW4gb24gbW9iaWxlIHBsYXRmb3JtcyBsaWtlIEFuZHJvaWQuCisgIFlvdSB3aWxs
IG5lZWQgdG8gaW52b2tlIGlzU3VjY2Vzc2Z1bGx5UGFyc2VkKCkgaW4geW91ciB0ZXN0IHNjcmlw
dCB3aGVuIHRoZSB0ZXN0IGNvbXBsZXRlcy4KKy0tPgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0i
ZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9
InNjcmlwdC10ZXN0cy9lbXVsYXRlLXRvdWNoLWV2ZW50cy5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9zY3Jp
cHQtdGVzdHMvZW11bGF0ZS10b3VjaC1ldmVudHMuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50
cy90b3VjaC9zY3JpcHQtdGVzdHMvZW11bGF0ZS10b3VjaC1ldmVudHMuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MGJjNGI2ZTZiYTlhOWE2ODU4NGI1MmU4ZjM2YTcwYjU1ZDgyNTY2NwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL3NjcmlwdC10ZXN0cy9lbXVsYXRlLXRv
dWNoLWV2ZW50cy5qcwpAQCAtMCwwICsxLDEwMCBAQAordmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImRpdiIpOworZGl2LmlkID0gInRvdWNodGFyZ2V0IjsKK2Rpdi5zdHlsZS53aWR0
aCA9ICIxMDBweCI7CitkaXYuc3R5bGUuaGVpZ2h0ID0gIjEwMHB4IjsKK2Rpdi5zdHlsZS5iYWNr
Z3JvdW5kQ29sb3IgPSAiYmx1ZSI7CisKK3ZhciBsYXN0RXZlbnQgPSBudWxsOwordmFyIHRvdWNo
RXZlbnRzUmVjZWl2ZWQgPSAwOwordmFyIEVYUEVDVEVEX1RPVUNIX0VWRU5UU19UT1RBTCA9IDM7
CisKK2Z1bmN0aW9uIHRvdWNoRXZlbnRDYWxsYmFjaygpIHsKKyAgICBpZiAod2luZG93LmV2ZW50
U2VuZGVyKSB7CisgICAgICAgIGxhc3RFdmVudCA9IGV2ZW50OworICAgICAgICB2ZXJpZnlUb3Vj
aCh0b3VjaEV2ZW50c1JlY2VpdmVkKyspOworICAgIH0gZWxzZQorICAgICAgICBkZWJ1ZyhldmVu
dC50eXBlKTsKKworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIgJiYgdG91Y2hF
dmVudHNSZWNlaXZlZCA9PSBFWFBFQ1RFRF9UT1VDSF9FVkVOVFNfVE9UQUwpIHsKKyAgICAgICAg
Ly8gSWYgd2UndmUgZ290IGhlcmUsIHdlIGNhbiBzYWZlbHkgc2F5IHdlIHdlcmUgc3VjY2Vzc2Z1
bGx5IHBhcnNlZCA6KSBXZSBuZWVkIHRvCisgICAgICAgIC8vIGNhbGwgdGhlIGlzU3VjY2Nlc3Nm
dWxseVBhcnNlZCBmdW5jdGlvbiB0byBvdXRwdXQgdGhlIGNvcnJlY3QgVEVTVCBDT01QTEVURQor
ICAgICAgICAvLyBmb290ZXIgbWVzc2FnZS4KKyAgICAgICAgaXNTdWNjZXNzZnVsbHlQYXJzZWQo
KTsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIH0KK30K
KworZGl2LmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoc3RhcnQiLCB0b3VjaEV2ZW50Q2FsbGJhY2ss
IGZhbHNlKTsKK2Rpdi5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaG1vdmUiLCB0b3VjaEV2ZW50Q2Fs
bGJhY2ssIGZhbHNlKTsKK2Rpdi5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaGVuZCIsIHRvdWNoRXZl
bnRDYWxsYmFjaywgZmFsc2UpOworZG9jdW1lbnQuYm9keS5pbnNlcnRCZWZvcmUoZGl2LCBkb2N1
bWVudC5ib2R5LmZpcnN0Q2hpbGQpOworCitmdW5jdGlvbiB2ZXJpZnlUb3VjaEV2ZW50KHR5cGUs
IHRvdGFsVG91Y2hDb3VudCwgY2hhbmdlZFRvdWNoQ291bnQsIHRhcmdldFRvdWNoQ291bnQpCit7
CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJsYXN0RXZlbnQudHlwZSIsIHR5cGUpOworICAg
IHNob3VsZEJlKCJsYXN0RXZlbnQudG91Y2hlcy5sZW5ndGgiLCB0b3RhbFRvdWNoQ291bnQudG9T
dHJpbmcoKSk7CisgICAgc2hvdWxkQmUoImxhc3RFdmVudC5jaGFuZ2VkVG91Y2hlcy5sZW5ndGgi
LCBjaGFuZ2VkVG91Y2hDb3VudC50b1N0cmluZygpKTsKKyAgICBzaG91bGRCZSgibGFzdEV2ZW50
LnRhcmdldFRvdWNoZXMubGVuZ3RoIiwgdGFyZ2V0VG91Y2hDb3VudC50b1N0cmluZygpKTsKKyAg
ICBzaG91bGRCZSgibGFzdEV2ZW50LnBhZ2VYIiwgIjAiKTsKKyAgICBzaG91bGRCZSgibGFzdEV2
ZW50LnBhZ2VZIiwgIjAiKTsKK30KKworZnVuY3Rpb24gdmVyaWZ5VG91Y2hQb2ludChsaXN0LCBw
b2ludCwgeCwgeSwgaWQpCit7CisgICAgc2hvdWxkQmUoImxhc3RFdmVudC4iICsgbGlzdCArICJb
IiArIHBvaW50ICsgIl0ucGFnZVgiLCB4LnRvU3RyaW5nKCkpOworICAgIHNob3VsZEJlKCJsYXN0
RXZlbnQuIiArIGxpc3QgKyAiWyIgKyBwb2ludCArICJdLnBhZ2VZIiwgeS50b1N0cmluZygpKTsK
KyAgICBzaG91bGRCZSgibGFzdEV2ZW50LiIgKyBsaXN0ICsgIlsiICsgcG9pbnQgKyAiXS5jbGll
bnRYIiwgeC50b1N0cmluZygpKTsKKyAgICBzaG91bGRCZSgibGFzdEV2ZW50LiIgKyBsaXN0ICsg
IlsiICsgcG9pbnQgKyAiXS5jbGllbnRZIiwgeS50b1N0cmluZygpKTsKKyAgICBzaG91bGRCZSgi
bGFzdEV2ZW50LiIgKyBsaXN0ICsgIlsiICsgcG9pbnQgKyAiXS5pZGVudGlmaWVyIiwgaWQudG9T
dHJpbmcoKSk7Cit9CisKK2Z1bmN0aW9uIHZlcmlmeVRvdWNoKHdoaWNoKSB7CisgICAgc3dpdGNo
ICh3aGljaCkgeworICAgICAgICBjYXNlIDA6CisgICAgICAgICAgICB2ZXJpZnlUb3VjaEV2ZW50
KCJ0b3VjaHN0YXJ0IiwgMSwgMSwgMSk7CisgICAgICAgICAgICBzaG91bGRCZSgibGFzdEV2ZW50
LnNoaWZ0S2V5IiwgInRydWUiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJsYXN0RXZlbnQuYWx0
S2V5IiwgInRydWUiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJsYXN0RXZlbnQuY3RybEtleSIs
ICJmYWxzZSIpOworICAgICAgICAgICAgc2hvdWxkQmUoImxhc3RFdmVudC5tZXRhS2V5IiwgImZh
bHNlIik7CisgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImxhc3RFdmVudC50b3Vj
aGVzWzBdLnRhcmdldC5pZCIsICJ0b3VjaHRhcmdldCIpOworICAgICAgICAgICAgdmVyaWZ5VG91
Y2hQb2ludCgidG91Y2hlcyIsIDAsIDEwLCAxMCwgMCk7CisgICAgICAgICAgICB2ZXJpZnlUb3Vj
aFBvaW50KCJjaGFuZ2VkVG91Y2hlcyIsIDAsIDEwLCAxMCwgMCk7CisgICAgICAgICAgICB2ZXJp
ZnlUb3VjaFBvaW50KCJ0YXJnZXRUb3VjaGVzIiwgMCwgMTAsIDEwLCAwKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICB2ZXJpZnlUb3VjaEV2ZW50KCJ0
b3VjaG1vdmUiLCAxLCAxLCAxKTsKKyAgICAgICAgICAgIHZlcmlmeVRvdWNoUG9pbnQoInRvdWNo
ZXMiLCAwLCAyMCwgMzAsIDApOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMjoK
KyAgICAgICAgICAgIHZlcmlmeVRvdWNoRXZlbnQoInRvdWNoZW5kIiwgMCwgMSwgMCk7CisgICAg
ICAgICAgICB2ZXJpZnlUb3VjaFBvaW50KCJjaGFuZ2VkVG91Y2hlcyIsIDAsIDIwLCAzMCwgMCk7
CisgICAgICAgICAgICBzaG91bGRCZSgibGFzdEV2ZW50LnNoaWZ0S2V5IiwgImZhbHNlIik7Cisg
ICAgICAgICAgICBzaG91bGRCZSgibGFzdEV2ZW50LmFsdEtleSIsICJ0cnVlIik7CisgICAgICAg
ICAgICBzaG91bGRCZSgibGFzdEV2ZW50LmN0cmxLZXkiLCAidHJ1ZSIpOworICAgICAgICAgICAg
c2hvdWxkQmUoImxhc3RFdmVudC5tZXRhS2V5IiwgImZhbHNlIik7CisgICAgICAgICAgICBicmVh
azsKKworICAgICAgICBkZWZhdWx0OiB0ZXN0RmFpbGVkKCJXcm9uZyBudW1iZXIgb2YgdG91Y2gg
ZXZlbnRzISAoIiArIHdoaWNoICsgIikiKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIG1vdXNlRXZl
bnRTZXF1ZW5jZSgpCit7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oMTAsIDEwKTsKKyAg
ICBldmVudFNlbmRlci5tb3VzZURvd24oMCwgWyJzaGlmdEtleSIsICJhbHRLZXkiXSk7CisgICAg
ZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oMjAsIDMwKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVVw
KDAsIFsiYWx0S2V5IiwgImN0cmxLZXkiXSk7Cit9CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworCitp
ZiAod2luZG93LmV2ZW50U2VuZGVyICYmIHdpbmRvdy5pbnRlcm5hbHMgJiYgd2luZG93LmludGVy
bmFscy5zZXR0aW5ncykgeworICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIHNpbmdsZSB0b3Vj
aCBldmVudCBlbXVsYXRpb24gdXNpbmcgbW91c2UgZXZlbnRzLiIpOworCisgICAgd2luZG93LmV2
ZW50U2VuZGVyLmRyYWdNb2RlID0gZmFsc2U7CisgICAgd2luZG93LmludGVybmFscy5zZXR0aW5n
cy5zZXRUb3VjaEV2ZW50RW11bGF0aW9uRW5hYmxlZCh0cnVlKTsKKyAgICBtb3VzZUV2ZW50U2Vx
dWVuY2UoKTsKK30gZWxzZQorICAgIGRlYnVnKCJUaGlzIHRlc3QgcmVxdWlyZXMgRHVtcFJlbmRl
clRyZWUuIFRhcCBvbiB0aGUgYmx1ZSByZWN0IHRvIGxvZy4iKTsKKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124687</attachid>
            <date>2012-01-31 02:14:28 -0800</date>
            <delta_ts>2012-01-31 02:30:34 -0800</delta_ts>
            <desc>[PATCH] Removed the ENABLE(INSPECTOR) clause (conditional compilation)</desc>
            <filename>bug-77105-20120131141426.patch</filename>
            <type>text/plain</type>
            <size>21074</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2MzQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTU5ODEzZTYzNjhlYmJk
YjVmMmIyZWY5NjNjYzVjYzI1NmNlNmYxZi4uOGEyN2QzZDY2MWQxYzljMjA2MzNlZTliNjM0N2I4
ZWQxYTVmZTAyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDEyLTAxLTI3ICBBbGV4
YW5kZXIgUGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW1wbGVtZW50
IHRvdWNoIGV2ZW50IGVtdWxhdGlvbiBpbiB0aGUgV2ViQ29yZSBsYXllcgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzcxMDUKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBmYXN0L2V2ZW50cy90b3Vj
aC9lbXVsYXRlLXRvdWNoLWV2ZW50cy5odG1sCisKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxl
ci5jcHA6CisgICAgICAgIChTeW50aGV0aWNUb3VjaFBvaW50KTogQSBzeW50aGV0aWMgdG91Y2gg
cG9pbnQgYnVpbHQgZnJvbSBQbGF0Zm9ybU1vdXNlRXZlbnQuCisgICAgICAgIChXZWJDb3JlOjpT
eW50aGV0aWNUb3VjaFBvaW50OjpTeW50aGV0aWNUb3VjaFBvaW50KToKKyAgICAgICAgKFN5bnRo
ZXRpY1NpbmdsZVRvdWNoRXZlbnQpOiBBIHN5bnRoZXRpYyB0b3VjaCBwb2ludCBldmVudCBidWls
dCBmcm9tIFBsYXRmb3JtTW91c2VFdmVudC4KKyAgICAgICAgKFdlYkNvcmU6OlN5bnRoZXRpY1Np
bmdsZVRvdWNoRXZlbnQ6OlN5bnRoZXRpY1NpbmdsZVRvdWNoRXZlbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVJlbGVhc2VFdmVudCk6IEludm9rZSBtYXli
ZURpc3BhdGNoU3ludGhldGljVG91Y2hFdmVudCgpIGFuZCBiYWlsIG91dCBpZiBuZWNlc3Nhcnku
CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVudCk6
IEludm9rZSBtYXliZURpc3BhdGNoU3ludGhldGljVG91Y2hFdmVudCgpIGFuZCBiYWlsIG91dCBp
ZiBuZWNlc3NhcnkuCisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6Om1vdXNlTW92ZWQp
OiBJbnZva2UgbWF5YmVEaXNwYXRjaFN5bnRoZXRpY1RvdWNoRXZlbnQoKSBhbmQgYmFpbCBvdXQg
aWYgbmVjZXNzYXJ5LgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjptYXliZURpc3Bh
dGNoU3ludGhldGljVG91Y2hFdmVudCk6IERpc3BhdGNoIGEgc3ludGhldGljIHRvdWNoIGV2ZW50
IGlmIG5lY2Vzc2FyeS4KKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5oOiBBZGRlZCBuZXcg
bWV0aG9kLgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2V0dGluZ3M6OlNldHRpbmdzKTogQWRkZWQgbV90b3VjaEV2ZW50RW11bGF0aW9uRW5hYmxlZCBp
bml0aWFsaXplci4KKyAgICAgICAgKiBwYWdlL1NldHRpbmdzLmg6IEFkZGVkIG1fdG91Y2hFdmVu
dEVtdWxhdGlvbkVuYWJsZWQsIGdldHRlciwgYW5kIHNldHRlci4KKyAgICAgICAgKFdlYkNvcmU6
OlNldHRpbmdzOjpzZXRUb3VjaEV2ZW50RW11bGF0aW9uRW5hYmxlZCk6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6U2V0dGluZ3M6OmlzVG91Y2hFdmVudEVtdWxhdGlvbkVuYWJsZWQpOiBBZGRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVRvdWNoUG9pbnQuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlBsYXRmb3JtVG91Y2hQb2ludDo6UGxhdGZvcm1Ub3VjaFBvaW50KTogVW5jb25kaXRp
b25hbGx5IGNvbXBpbGUgdGhlIHBhcmFtZXRlcmxlc3MgY3Rvci4KKyAgICAgICAgKiB0ZXN0aW5n
L0ludGVybmFsU2V0dGluZ3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxTZXR0aW5n
czo6c2V0VG91Y2hFdmVudEVtdWxhdGlvbkVuYWJsZWQpOiBBZGRlZCBmb3IgdGVzdGluZy4KKyAg
ICAgICAgKiB0ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaDogQWRkZWQgc2V0VG91Y2hFdmVudEVt
dWxhdGlvbkVuYWJsZWQoKSBmb3IgdGVzdGluZy4KKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFs
U2V0dGluZ3MuaWRsOiBBZGRlZCBzZXRUb3VjaEV2ZW50RW11bGF0aW9uRW5hYmxlZCgpIGZvciB0
ZXN0aW5nLgorCiAyMDEyLTAxLTMxICBQYWJsbyBGbG91cmV0ICA8cGFibG9mQG1vdG9yb2xhLmNv
bT4KIAogICAgICAgICBGaXggY29tcGlsYXRpb24gZXJyb3JzIG9uIGJ1aWxkLXdlYmtpdCAtLWRl
YnVnIC0tbm8td29ya2VycyBvbiBtYWMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0V2ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAK
aW5kZXggNTA3YTkxNDE2MzRjMGQ2YzNlNjI1NjcyNjk4ZTZiZTgwNTQxODQ2Yy4uNzhmNzc1ODBm
OTJkYmU3ZTRkMDE0OTc0MjI0NDFkMzkzZGM2YzA4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRI
YW5kbGVyLmNwcApAQCAtNjAsNiArNjAsNyBAQAogI2luY2x1ZGUgIk1vdXNlRXZlbnQuaCIKICNp
bmNsdWRlICJNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzLmgiCiAjaW5jbHVkZSAiUGFnZS5o
IgorI2luY2x1ZGUgIlBsYXRmb3JtRXZlbnQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUtleWJvYXJk
RXZlbnQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVdoZWVsRXZlbnQuaCIKICNpbmNsdWRlICJQbHVn
aW5Eb2N1bWVudC5oIgpAQCAtMTQyLDYgKzE0Myw2NyBAQCBwcml2YXRlOgogICAgIEN1cnNvciBt
X2N1cnNvcjsKIH07CiAKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorY2xhc3MgU3ludGhldGlj
VG91Y2hQb2ludCA6IHB1YmxpYyBQbGF0Zm9ybVRvdWNoUG9pbnQgeworcHVibGljOgorCisgICAg
Ly8gVGhlIGRlZmF1bHQgdmFsdWVzIGFyZSBiYXNlZCBvbiBodHRwOi8vZHZjcy53My5vcmcvaGcv
d2ViZXZlbnRzL3Jhdy1maWxlL3RpcC90b3VjaGV2ZW50cy5odG1sCisgICAgZXhwbGljaXQgU3lu
dGhldGljVG91Y2hQb2ludChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50KQorICAgIHsK
KyAgICAgICAgbV9pZCA9IDA7IC8vIFRoZXJlIGlzIG9ubHkgb25lIGFjdGl2ZSBUb3VjaFBvaW50
LgorICAgICAgICBtX3NjcmVlblBvcyA9IGV2ZW50Lmdsb2JhbFBvc2l0aW9uKCk7CisgICAgICAg
IG1fcG9zID0gZXZlbnQucG9zaXRpb24oKTsKKyAgICAgICAgbV9yYWRpdXNZID0gMTsgLy8gRGVm
YXVsdCB2YWx1ZS4KKyAgICAgICAgbV9yYWRpdXNYID0gMTsgLy8gRGVmYXVsdCB2YWx1ZS4KKyAg
ICAgICAgbV9yb3RhdGlvbkFuZ2xlID0gMC4wZjsgLy8gRGVmYXVsdCB2YWx1ZS4KKyAgICAgICAg
bV9mb3JjZSA9IDEuMGY7IC8vIERlZmF1bHQgdmFsdWUuCisKKyAgICAgICAgUGxhdGZvcm1FdmVu
dDo6VHlwZSB0eXBlID0gZXZlbnQudHlwZSgpOworICAgICAgICBBU1NFUlQodHlwZSA9PSBQbGF0
Zm9ybUV2ZW50OjpNb3VzZU1vdmVkIHx8IHR5cGUgPT0gUGxhdGZvcm1FdmVudDo6TW91c2VQcmVz
c2VkIHx8IHR5cGUgPT0gUGxhdGZvcm1FdmVudDo6TW91c2VSZWxlYXNlZCk7CisKKyAgICAgICAg
c3dpdGNoICh0eXBlKSB7CisgICAgICAgIGNhc2UgUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZDoK
KyAgICAgICAgICAgIG1fc3RhdGUgPSBUb3VjaE1vdmVkOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgUGxhdGZvcm1FdmVudDo6TW91c2VQcmVzc2VkOgorICAgICAgICAgICAgbV9z
dGF0ZSA9IFRvdWNoUHJlc3NlZDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFBs
YXRmb3JtRXZlbnQ6Ok1vdXNlUmVsZWFzZWQ6CisgICAgICAgICAgICBtX3N0YXRlID0gVG91Y2hS
ZWxlYXNlZDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFBsYXRmb3JtRXZlbnQ6
Ok1vdXNlU2Nyb2xsOgorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgIH0KKyAgICB9Cit9OworCitjbGFzcyBTeW50aGV0aWNTaW5nbGVU
b3VjaEV2ZW50IDogcHVibGljIFBsYXRmb3JtVG91Y2hFdmVudCB7CitwdWJsaWM6CisgICAgZXhw
bGljaXQgU3ludGhldGljU2luZ2xlVG91Y2hFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQm
IGV2ZW50KQorICAgIHsKKyAgICAgICAgc3dpdGNoIChldmVudC50eXBlKCkpIHsKKyAgICAgICAg
Y2FzZSBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkOgorICAgICAgICAgICAgbV90eXBlID0gVG91
Y2hNb3ZlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgUGxhdGZvcm1FdmVudDo6
TW91c2VQcmVzc2VkOgorICAgICAgICAgICAgbV90eXBlID0gVG91Y2hTdGFydDsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIFBsYXRmb3JtRXZlbnQ6Ok1vdXNlUmVsZWFzZWQ6Cisg
ICAgICAgICAgICBtX3R5cGUgPSBUb3VjaEVuZDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIFBsYXRmb3JtRXZlbnQ6Ok1vdXNlU2Nyb2xsOgorICAgICAgICBkZWZhdWx0OgorICAg
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBtX3R5cGUgPSBOb1R5
cGU7CisgICAgICAgIH0KKyAgICAgICAgbV90aW1lc3RhbXAgPSBldmVudC50aW1lc3RhbXAoKTsK
KyAgICAgICAgbV9tb2RpZmllcnMgPSBldmVudC5tb2RpZmllcnMoKTsKKyAgICAgICAgbV90b3Vj
aFBvaW50cy5hcHBlbmQoU3ludGhldGljVG91Y2hQb2ludChldmVudCkpOworICAgIH0KK307Cisj
ZW5kaWYKKwogc3RhdGljIGlubGluZSBib29sIHNjcm9sbE5vZGUoZmxvYXQgZGVsdGEsIFdoZWVs
RXZlbnQ6OkdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBTY3JvbGxEaXJlY3Rpb24gcG9zaXRpdmVE
aXJlY3Rpb24sIFNjcm9sbERpcmVjdGlvbiBuZWdhdGl2ZURpcmVjdGlvbiwgTm9kZSogbm9kZSwg
Tm9kZSoqIHN0b3BOb2RlKQogewogICAgIGlmICghZGVsdGEpCkBAIC03MzksNiArODAxLDEyIEBA
IGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVVwKGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0
VGVzdFJlc3VsdHMmIGV2ZW50KQogCiBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VSZWxl
YXNlRXZlbnQoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgZXZlbnQpCiB7Cisj
aWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICBib29sIHNob3VsZEhhbmRsZU1vdXNlRXZlbnQg
PSBtYXliZURpc3BhdGNoU3ludGhldGljVG91Y2hFdmVudChldmVudC5ldmVudCgpKTsKKyAgICBp
ZiAoIXNob3VsZEhhbmRsZU1vdXNlRXZlbnQpCisgICAgICAgIHJldHVybiB0cnVlOworI2VuZGlm
CisKICAgICBpZiAobV9hdXRvc2Nyb2xsSW5Qcm9ncmVzcykKICAgICAgICAgc3RvcEF1dG9zY3Jv
bGxUaW1lcigpOwogCkBAIC0xMzc1LDYgKzE0NDMsMTIgQEAgYm9vbCBFdmVudEhhbmRsZXI6Omhh
bmRsZU1vdXNlUHJlc3NFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIG1vdXNlRXZlbnQp
CiB7CiAgICAgUmVmUHRyPEZyYW1lVmlldz4gcHJvdGVjdG9yKG1fZnJhbWUtPnZpZXcoKSk7CiAK
KyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIGJvb2wgc2hvdWxkSGFuZGxlTW91c2VFdmVu
dCA9IG1heWJlRGlzcGF0Y2hTeW50aGV0aWNUb3VjaEV2ZW50KG1vdXNlRXZlbnQpOworICAgIGlm
ICghc2hvdWxkSGFuZGxlTW91c2VFdmVudCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisjZW5kaWYK
KwogICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0b3IoRGVmaW5pdGVseVBy
b2Nlc3NpbmdVc2VyR2VzdHVyZSk7CiAKICAgICAvLyBGSVhNRSAoYnVnIDY4MTg1KTogdGhpcyBj
YWxsIHNob3VsZCBiZSBtYWRlIGF0IGFub3RoZXIgYWJzdHJhY3Rpb24gbGF5ZXIKQEAgLTE1NjEs
NiArMTYzNSwxMyBAQCBib29sIEV2ZW50SGFuZGxlcjo6bW91c2VNb3ZlZChjb25zdCBQbGF0Zm9y
bU1vdXNlRXZlbnQmIGV2ZW50KQogewogICAgIFJlZlB0cjxGcmFtZVZpZXc+IHByb3RlY3Rvciht
X2ZyYW1lLT52aWV3KCkpOwogCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICAvLyBGSVhN
RTogdGhpcyBzaG91bGQgYmUgbW92ZWQgc29tZXdoZXJlIGVsc2UgdG8gYWxzbyBiZSBhYmxlIHRv
IGRpc3BhdGNoIHRvdWNoY2FuY2VsIGV2ZW50cy4KKyAgICBib29sIHNob3VsZEhhbmRsZU1vdXNl
RXZlbnQgPSBtYXliZURpc3BhdGNoU3ludGhldGljVG91Y2hFdmVudChldmVudCk7CisgICAgaWYg
KCFzaG91bGRIYW5kbGVNb3VzZUV2ZW50KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgor
CiAgICAgSGl0VGVzdFJlc3VsdCBob3ZlcmVkTm9kZSA9IEhpdFRlc3RSZXN1bHQoTGF5b3V0UG9p
bnQoKSk7CiAgICAgYm9vbCByZXN1bHQgPSBoYW5kbGVNb3VzZU1vdmVFdmVudChldmVudCwgJmhv
dmVyZWROb2RlKTsKIApAQCAtMzM1OCw3ICszNDM5LDIzIEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpo
YW5kbGVUb3VjaEV2ZW50KGNvbnN0IFBsYXRmb3JtVG91Y2hFdmVudCYgZXZlbnQpCiAgICAgcmV0
dXJuIGRlZmF1bHRQcmV2ZW50ZWQ7CiB9CiAKKy8vIFJldHVybnMgd2hldGhlciB0aGUgb3JpZ2lu
YWwgbW91c2UgZXZlbnQgc2hvdWxkIGJlIGhhbmRsZWQuCitib29sIEV2ZW50SGFuZGxlcjo6bWF5
YmVEaXNwYXRjaFN5bnRoZXRpY1RvdWNoRXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBl
dmVudCkKK3sKKyAgICBpZiAoIW1fZnJhbWUtPmRvY3VtZW50KCktPnNldHRpbmdzKCktPmlzVG91
Y2hFdmVudEVtdWxhdGlvbkVuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBQ
bGF0Zm9ybUV2ZW50OjpUeXBlIGV2ZW50VHlwZSA9IGV2ZW50LnR5cGUoKTsKKyAgICBpZiAoZXZl
bnRUeXBlICE9IFBsYXRmb3JtRXZlbnQ6Ok1vdXNlTW92ZWQgJiYgZXZlbnRUeXBlICE9IFBsYXRm
b3JtRXZlbnQ6Ok1vdXNlUHJlc3NlZCAmJiBldmVudFR5cGUgIT0gUGxhdGZvcm1FdmVudDo6TW91
c2VSZWxlYXNlZCkKKyAgICAgICAgcmV0dXJuIHRydWU7CiAKKyAgICBpZiAoZXZlbnRUeXBlID09
IFBsYXRmb3JtRXZlbnQ6Ok1vdXNlTW92ZWQgJiYgIW1fdG91Y2hQcmVzc2VkKQorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKworICAgIFN5bnRoZXRpY1NpbmdsZVRvdWNoRXZlbnQgdG91Y2hFdmVudChl
dmVudCk7CisgICAgYm9vbCBkZWZhdWx0UHJldmVudGVkID0gaGFuZGxlVG91Y2hFdmVudCh0b3Vj
aEV2ZW50KTsKKyAgICByZXR1cm4gIWRlZmF1bHRQcmV2ZW50ZWQ7Cit9CiAKICNlbmRpZgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAppbmRleCA1NDdiZmU1N2Q1YjkzYTAxYWVjNTNlNzMy
MDRlYjI5NzZmY2I3NzZlLi43ZDM3MGQxODBlNDQwMjk0NjE3MzkwM2EwYzJjZTZkNmNmMGQyMTNm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKQEAgLTI2NCw2ICsyNjQsMTAgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGZha2VNb3VzZU1vdmVFdmVudFRpbWVyRmlyZWQoVGltZXI8RXZlbnRI
YW5kbGVyPiopOwogICAgIHZvaWQgY2FuY2VsRmFrZU1vdXNlTW92ZUV2ZW50KCk7CiAKKyNpZiBF
TkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIGJvb2wgbWF5YmVEaXNwYXRjaFN5bnRoZXRpY1RvdWNo
RXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7CisjZW5kaWYKKwogICAgIHZvaWQgaW52
YWxpZGF0ZUNsaWNrKCk7CiAKICAgICBOb2RlKiBub2RlVW5kZXJNb3VzZSgpIGNvbnN0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1NldHRpbmdzLmNwcAppbmRleCAxODYxNjYwYmRlNzE1MmI2MGVlZmU5NWZmZGM4OGUy
M2I4MDc5YTRlLi43NGZjZDA0MGVhNzFiNmQ3Y2JlMjI4YTNmMmU3ZGEyY2M4ZGZhM2JiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1NldHRpbmdzLmNwcApAQCAtMjM5LDYgKzIzOSw5IEBAIFNldHRpbmdzOjpTZXR0
aW5ncyhQYWdlKiBwYWdlKQogICAgICwgbV9zY3JvbGxpbmdDb29yZGluYXRvckVuYWJsZWQoZmFs
c2UpCiAjZW5kaWYKICAgICAsIG1fbm90aWZpY2F0aW9uc0VuYWJsZWQodHJ1ZSkKKyNpZiBFTkFC
TEUoVE9VQ0hfRVZFTlRTKQorICAgICwgbV90b3VjaEV2ZW50RW11bGF0aW9uRW5hYmxlZChmYWxz
ZSkKKyNlbmRpZgogICAgICwgbV9sb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHlUaW1lcih0aGlzLCAm
U2V0dGluZ3M6OmxvYWRzSW1hZ2VzQXV0b21hdGljYWxseVRpbWVyRmlyZWQpCiB7CiAgICAgLy8g
QSBGcmFtZSBtYXkgbm90IGhhdmUgYmVlbiBjcmVhdGVkIHlldCwgc28gd2UgaW5pdGlhbGl6ZSB0
aGUgQXRvbWljU3RyaW5nIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5n
cy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCmluZGV4IDhlNGQ5MWQ1YzA0ZjUz
ZDY0MTU3ZTAyNWQxYjJiOTM0ZDZkNGQ2NmYuLjNhM2ZhZWE0M2MzNDc3ODhhN2I5NDZiOThjNjg5
MTgwYjE4ZjUxNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgKQEAgLTUyMCw2ICs1MjAsMTEgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHNldE5vdGlmaWNhdGlvbnNFbmFibGVk
KGJvb2wgZW5hYmxlZCkgeyBtX25vdGlmaWNhdGlvbnNFbmFibGVkID0gZW5hYmxlZDsgfQogICAg
ICAgICBib29sIG5vdGlmaWNhdGlvbnNFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9ub3RpZmlj
YXRpb25zRW5hYmxlZDsgfQogCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICAgICAgdm9p
ZCBzZXRUb3VjaEV2ZW50RW11bGF0aW9uRW5hYmxlZChib29sIGVuYWJsZWQpIHsgbV90b3VjaEV2
ZW50RW11bGF0aW9uRW5hYmxlZCA9IGVuYWJsZWQ7IH0KKyAgICAgICAgYm9vbCBpc1RvdWNoRXZl
bnRFbXVsYXRpb25FbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV90b3VjaEV2ZW50RW11bGF0aW9u
RW5hYmxlZDsgfQorI2VuZGlmCisKICAgICBwcml2YXRlOgogICAgICAgICBTZXR0aW5ncyhQYWdl
Kik7CiAKQEAgLTY2NSw2ICs2NzAsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAg
IGJvb2wgbV9ub3RpZmljYXRpb25zRW5hYmxlZCA6IDE7CiAKKyNpZiBFTkFCTEUoVE9VQ0hfRVZF
TlRTKQorICAgICAgICBib29sIG1fdG91Y2hFdmVudEVtdWxhdGlvbkVuYWJsZWQgOiAxOworI2Vu
ZGlmCisKICAgICAgICAgVGltZXI8U2V0dGluZ3M+IG1fbG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5
VGltZXI7CiAgICAgICAgIHZvaWQgbG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5VGltZXJGaXJlZChU
aW1lcjxTZXR0aW5ncz4qKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGxhdGZvcm1Ub3VjaFBvaW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVRv
dWNoUG9pbnQuaAppbmRleCBkNjZlYjIzYzgzMTczNmY0YTY3ZDNlM2ZiOTljMWVhNzc0YjAzN2I2
Li5iMTgxOTJkOTBmZTI3MzY2YmE4NTI4NjQ5YmQ0MTllZTIyMzZhZDIxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVRvdWNoUG9pbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVRvdWNoUG9pbnQuaApAQCAtNDQsOSArNDQsMTEgQEAg
cHVibGljOgogICAgICAgICBUb3VjaFN0YXRlRW5kIC8vIFBsYWNlaG9sZGVyOiBtdXN0IHJlbWFp
biB0aGUgbGFzdCBpdGVtLgogICAgIH07CiAKKyAgICAvLyBUaGlzIGlzIG5lY2Vzc2FyeSBmb3Ig
dXMgdG8gYmUgYWJsZSB0byBidWlsZCBzeW50aGV0aWMgZXZlbnRzLgorICAgIFBsYXRmb3JtVG91
Y2hQb2ludCgpIHsgfTsKKwogI2lmIFBMQVRGT1JNKFFUKQogICAgIFBsYXRmb3JtVG91Y2hQb2lu
dChjb25zdCBRVG91Y2hFdmVudDo6VG91Y2hQb2ludCYpOwotICAgIFBsYXRmb3JtVG91Y2hQb2lu
dCgpIHt9OwogI2VsaWYgUExBVEZPUk0oRUZMKQogICAgIFBsYXRmb3JtVG91Y2hQb2ludCh1bnNp
Z25lZCBpZCwgY29uc3QgSW50UG9pbnQmIHdpbmRvd1BvcywgU3RhdGUpOwogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcAppbmRleCBhNGRiYjQ0YmYy
NTk3M2NkMWEyZWUwNWUwZjkzM2ZhODk4ODViOGMxLi5jMmIwNDVkY2ExNGU4ZWViYWY2ZjBmMDQz
N2RkMWRiODcxYjMxZmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFsU2V0dGluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0
aW5ncy5jcHAKQEAgLTI3MSw0ICsyNzEsMTUgQEAgdm9pZCBJbnRlcm5hbFNldHRpbmdzOjpzZXRQ
ZXJUaWxlRHJhd2luZ0VuYWJsZWQoYm9vbCBlbmFibGVkLCBFeGNlcHRpb25Db2RlJiBlYykKICAg
ICBzZXR0aW5ncygpLT5zZXRQZXJUaWxlRHJhd2luZ0VuYWJsZWQoZW5hYmxlZCk7CiB9CiAKK3Zv
aWQgSW50ZXJuYWxTZXR0aW5nczo6c2V0VG91Y2hFdmVudEVtdWxhdGlvbkVuYWJsZWQoYm9vbCBl
bmFibGVkLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQor
ICAgIEludGVybmFsU2V0dGluZ3NHdWFyZEZvclNldHRpbmdzKCk7CisgICAgc2V0dGluZ3MoKS0+
c2V0VG91Y2hFdmVudEVtdWxhdGlvbkVuYWJsZWQoZW5hYmxlZCk7CisjZWxzZQorICAgIFVOVVNF
RF9QQVJBTShlbmFibGVkKTsKKyAgICBVTlVTRURfUEFSQU0oZWMpOworI2VuZGlmCit9CisKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5oIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmgKaW5kZXggYmU5MzI4ZWU3
MTRhM2EyYjkwMGYxMWI4ZDRhYTk1Y2E0YTE4ZTZjZC4uNjQ4MDA5MjZjNGQwZjFjYzRhYTMxMmRl
MTAwNWJkYTk1Y2M2MDhlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbFNldHRpbmdzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRp
bmdzLmgKQEAgLTY0LDYgKzY0LDcgQEAgcHVibGljOgogICAgIGZsb2F0IHBhZ2VTY2FsZUZhY3Rv
cihFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBzZXRQYWdlU2NhbGVGYWN0b3IoZmxvYXQgc2Nh
bGVGYWN0b3IsIGludCB4LCBpbnQgeSwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgc2V0UGVy
VGlsZURyYXdpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZv
aWQgc2V0VG91Y2hFdmVudEVtdWxhdGlvbkVuYWJsZWQoYm9vbCBlbmFibGVkLCBFeGNlcHRpb25D
b2RlJik7CiAKIHByaXZhdGU6CiAgICAgSW50ZXJuYWxTZXR0aW5ncyhGcmFtZSosIEludGVybmFs
U2V0dGluZ3MqIG9sZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFsU2V0dGluZ3MuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdz
LmlkbAppbmRleCBjMmY1YjJhYzc3NTQzZDU0M2E0ZmFkN2FlYWYyYjMwZmY2OGQ0OGZiLi4wMzYw
MDgzODRlZWMxNzZmNzU4M2RiZDA5ZTYxMDBiZTJiNjg3ODc3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5pZGwKQEAgLTQ0LDYgKzQ0LDcgQEAgbW9kdWxlIHdp
bmRvdyB7CiAgICAgICAgIGJvb2xlYW4gdW5pZmllZFRleHRDaGVja2luZ0VuYWJsZWQoKSByYWlz
ZXMgKERPTUV4Y2VwdGlvbik7CiAgICAgICAgIGZsb2F0IHBhZ2VTY2FsZUZhY3RvcigpIHJhaXNl
cyhET01FeGNlcHRpb24pOwogICAgICAgICB2b2lkIHNldFBhZ2VTY2FsZUZhY3RvcihpbiBmbG9h
dCBzY2FsZUZhY3RvciwgaW4gbG9uZyB4LCBpbiBsb25nIHkpIHJhaXNlcyhET01FeGNlcHRpb24p
OworICAgICAgICB2b2lkIHNldFRvdWNoRXZlbnRFbXVsYXRpb25FbmFibGVkKGluIGJvb2xlYW4g
ZW5hYmxlZCkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAgICAgfTsKIH0KIApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDAxOTgz
NGIwM2UxNzI3YTNjODIwMTk0MzJjNTgwNjAwNzFlODJlODcuLjkyYTYxY2RjYThjMjgxZWY2OGU1
YjQzYzQ3Mjk3NDJhMzUyNGEzOGEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZwor
KysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMi0wMS0yNyAg
QWxleGFuZGVyIFBhdmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEltcGxl
bWVudCB0b3VjaCBldmVudCBlbXVsYXRpb24gaW4gdGhlIFdlYkNvcmUgbGF5ZXIKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3MTA1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2V2ZW50cy90b3Vj
aC9lbXVsYXRlLXRvdWNoLWV2ZW50cy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvZXZlbnRzL3RvdWNoL2VtdWxhdGUtdG91Y2gtZXZlbnRzLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvZXZlbnRzL3RvdWNoL3NjcmlwdC10ZXN0cy9lbXVsYXRlLXRvdWNoLWV2ZW50cy5q
czogQWRkZWQuCisgICAgICAgICh0b3VjaEV2ZW50Q2FsbGJhY2spOgorICAgICAgICAodmVyaWZ5
VG91Y2hFdmVudCk6CisgICAgICAgICh2ZXJpZnlUb3VjaFBvaW50KToKKyAgICAgICAgKHZlcmlm
eVRvdWNoKToKKyAgICAgICAgKG1vdXNlRXZlbnRTZXF1ZW5jZSk6CisKIDIwMTItMDEtMzEgIFBo
aWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3
ZWQsIEdUSyBnYXJkZW5pbmcuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90
b3VjaC9lbXVsYXRlLXRvdWNoLWV2ZW50cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0
L2V2ZW50cy90b3VjaC9lbXVsYXRlLXRvdWNoLWV2ZW50cy1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uOGNmODI2ZTNiOTEwMTU3ZDNkNzllZWVkNmFjMzQzZjI2NTljZjIwOQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2VtdWxhdGUtdG91Y2gtZXZlbnRz
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDYxIEBACitUaGlzIHRlc3RzIHNpbmdsZSB0b3VjaCBl
dmVudCBlbXVsYXRpb24gdXNpbmcgbW91c2UgZXZlbnRzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCisKKworUEFTUyBsYXN0RXZlbnQudHlwZSBpcyAidG91Y2hzdGFydCIKK1BBU1MgbGFz
dEV2ZW50LnRvdWNoZXMubGVuZ3RoIGlzIDEKK1BBU1MgbGFzdEV2ZW50LmNoYW5nZWRUb3VjaGVz
Lmxlbmd0aCBpcyAxCitQQVNTIGxhc3RFdmVudC50YXJnZXRUb3VjaGVzLmxlbmd0aCBpcyAxCitQ
QVNTIGxhc3RFdmVudC5wYWdlWCBpcyAwCitQQVNTIGxhc3RFdmVudC5wYWdlWSBpcyAwCitQQVNT
IGxhc3RFdmVudC5zaGlmdEtleSBpcyB0cnVlCitQQVNTIGxhc3RFdmVudC5hbHRLZXkgaXMgdHJ1
ZQorUEFTUyBsYXN0RXZlbnQuY3RybEtleSBpcyBmYWxzZQorUEFTUyBsYXN0RXZlbnQubWV0YUtl
eSBpcyBmYWxzZQorUEFTUyBsYXN0RXZlbnQudG91Y2hlc1swXS50YXJnZXQuaWQgaXMgInRvdWNo
dGFyZ2V0IgorUEFTUyBsYXN0RXZlbnQudG91Y2hlc1swXS5wYWdlWCBpcyAxMAorUEFTUyBsYXN0
RXZlbnQudG91Y2hlc1swXS5wYWdlWSBpcyAxMAorUEFTUyBsYXN0RXZlbnQudG91Y2hlc1swXS5j
bGllbnRYIGlzIDEwCitQQVNTIGxhc3RFdmVudC50b3VjaGVzWzBdLmNsaWVudFkgaXMgMTAKK1BB
U1MgbGFzdEV2ZW50LnRvdWNoZXNbMF0uaWRlbnRpZmllciBpcyAwCitQQVNTIGxhc3RFdmVudC5j
aGFuZ2VkVG91Y2hlc1swXS5wYWdlWCBpcyAxMAorUEFTUyBsYXN0RXZlbnQuY2hhbmdlZFRvdWNo
ZXNbMF0ucGFnZVkgaXMgMTAKK1BBU1MgbGFzdEV2ZW50LmNoYW5nZWRUb3VjaGVzWzBdLmNsaWVu
dFggaXMgMTAKK1BBU1MgbGFzdEV2ZW50LmNoYW5nZWRUb3VjaGVzWzBdLmNsaWVudFkgaXMgMTAK
K1BBU1MgbGFzdEV2ZW50LmNoYW5nZWRUb3VjaGVzWzBdLmlkZW50aWZpZXIgaXMgMAorUEFTUyBs
YXN0RXZlbnQudGFyZ2V0VG91Y2hlc1swXS5wYWdlWCBpcyAxMAorUEFTUyBsYXN0RXZlbnQudGFy
Z2V0VG91Y2hlc1swXS5wYWdlWSBpcyAxMAorUEFTUyBsYXN0RXZlbnQudGFyZ2V0VG91Y2hlc1sw
XS5jbGllbnRYIGlzIDEwCitQQVNTIGxhc3RFdmVudC50YXJnZXRUb3VjaGVzWzBdLmNsaWVudFkg
aXMgMTAKK1BBU1MgbGFzdEV2ZW50LnRhcmdldFRvdWNoZXNbMF0uaWRlbnRpZmllciBpcyAwCitQ
QVNTIGxhc3RFdmVudC50eXBlIGlzICJ0b3VjaG1vdmUiCitQQVNTIGxhc3RFdmVudC50b3VjaGVz
Lmxlbmd0aCBpcyAxCitQQVNTIGxhc3RFdmVudC5jaGFuZ2VkVG91Y2hlcy5sZW5ndGggaXMgMQor
UEFTUyBsYXN0RXZlbnQudGFyZ2V0VG91Y2hlcy5sZW5ndGggaXMgMQorUEFTUyBsYXN0RXZlbnQu
cGFnZVggaXMgMAorUEFTUyBsYXN0RXZlbnQucGFnZVkgaXMgMAorUEFTUyBsYXN0RXZlbnQudG91
Y2hlc1swXS5wYWdlWCBpcyAyMAorUEFTUyBsYXN0RXZlbnQudG91Y2hlc1swXS5wYWdlWSBpcyAz
MAorUEFTUyBsYXN0RXZlbnQudG91Y2hlc1swXS5jbGllbnRYIGlzIDIwCitQQVNTIGxhc3RFdmVu
dC50b3VjaGVzWzBdLmNsaWVudFkgaXMgMzAKK1BBU1MgbGFzdEV2ZW50LnRvdWNoZXNbMF0uaWRl
bnRpZmllciBpcyAwCitQQVNTIGxhc3RFdmVudC50eXBlIGlzICJ0b3VjaGVuZCIKK1BBU1MgbGFz
dEV2ZW50LnRvdWNoZXMubGVuZ3RoIGlzIDAKK1BBU1MgbGFzdEV2ZW50LmNoYW5nZWRUb3VjaGVz
Lmxlbmd0aCBpcyAxCitQQVNTIGxhc3RFdmVudC50YXJnZXRUb3VjaGVzLmxlbmd0aCBpcyAwCitQ
QVNTIGxhc3RFdmVudC5wYWdlWCBpcyAwCitQQVNTIGxhc3RFdmVudC5wYWdlWSBpcyAwCitQQVNT
IGxhc3RFdmVudC5jaGFuZ2VkVG91Y2hlc1swXS5wYWdlWCBpcyAyMAorUEFTUyBsYXN0RXZlbnQu
Y2hhbmdlZFRvdWNoZXNbMF0ucGFnZVkgaXMgMzAKK1BBU1MgbGFzdEV2ZW50LmNoYW5nZWRUb3Vj
aGVzWzBdLmNsaWVudFggaXMgMjAKK1BBU1MgbGFzdEV2ZW50LmNoYW5nZWRUb3VjaGVzWzBdLmNs
aWVudFkgaXMgMzAKK1BBU1MgbGFzdEV2ZW50LmNoYW5nZWRUb3VjaGVzWzBdLmlkZW50aWZpZXIg
aXMgMAorUEFTUyBsYXN0RXZlbnQuc2hpZnRLZXkgaXMgZmFsc2UKK1BBU1MgbGFzdEV2ZW50LmFs
dEtleSBpcyB0cnVlCitQQVNTIGxhc3RFdmVudC5jdHJsS2V5IGlzIHRydWUKK1BBU1MgbGFzdEV2
ZW50Lm1ldGFLZXkgaXMgZmFsc2UKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3Vj
aC9lbXVsYXRlLXRvdWNoLWV2ZW50cy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91
Y2gvZW11bGF0ZS10b3VjaC1ldmVudHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MzZhN2ExNzEzNWRhODlh
OWRhOGQ5MTA0ODI0N2ZlNjViYjc0ZmI2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9ldmVudHMvdG91Y2gvZW11bGF0ZS10b3VjaC1ldmVudHMuaHRtbApAQCAtMCwwICsxLDE2
IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRt
bD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8IS0tCisgIFRvdWNoIHRlc3RzIHRoYXQgaW52b2x2ZSB0aGUgb250b3Vj
aHN0YXJ0LCBvbnRvdWNobW92ZSwgb250b3VjaGVuZCBvciBvbnRvdWNoY2FuY2VsIGNhbGxiYWNr
cworICBzaG91bGQgYmUgd3JpdHRlbiBpbiBhbiBhc3luY2hyb25vdXMgZmFzaGlvbiBzbyB0aGV5
IGNhbiBiZSBydW4gb24gbW9iaWxlIHBsYXRmb3JtcyBsaWtlIEFuZHJvaWQuCisgIFlvdSB3aWxs
IG5lZWQgdG8gaW52b2tlIGlzU3VjY2Vzc2Z1bGx5UGFyc2VkKCkgaW4geW91ciB0ZXN0IHNjcmlw
dCB3aGVuIHRoZSB0ZXN0IGNvbXBsZXRlcy4KKy0tPgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0i
ZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9
InNjcmlwdC10ZXN0cy9lbXVsYXRlLXRvdWNoLWV2ZW50cy5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9zY3Jp
cHQtdGVzdHMvZW11bGF0ZS10b3VjaC1ldmVudHMuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50
cy90b3VjaC9zY3JpcHQtdGVzdHMvZW11bGF0ZS10b3VjaC1ldmVudHMuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MGJjNGI2ZTZiYTlhOWE2ODU4NGI1MmU4ZjM2YTcwYjU1ZDgyNTY2NwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL3NjcmlwdC10ZXN0cy9lbXVsYXRlLXRv
dWNoLWV2ZW50cy5qcwpAQCAtMCwwICsxLDEwMCBAQAordmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImRpdiIpOworZGl2LmlkID0gInRvdWNodGFyZ2V0IjsKK2Rpdi5zdHlsZS53aWR0
aCA9ICIxMDBweCI7CitkaXYuc3R5bGUuaGVpZ2h0ID0gIjEwMHB4IjsKK2Rpdi5zdHlsZS5iYWNr
Z3JvdW5kQ29sb3IgPSAiYmx1ZSI7CisKK3ZhciBsYXN0RXZlbnQgPSBudWxsOwordmFyIHRvdWNo
RXZlbnRzUmVjZWl2ZWQgPSAwOwordmFyIEVYUEVDVEVEX1RPVUNIX0VWRU5UU19UT1RBTCA9IDM7
CisKK2Z1bmN0aW9uIHRvdWNoRXZlbnRDYWxsYmFjaygpIHsKKyAgICBpZiAod2luZG93LmV2ZW50
U2VuZGVyKSB7CisgICAgICAgIGxhc3RFdmVudCA9IGV2ZW50OworICAgICAgICB2ZXJpZnlUb3Vj
aCh0b3VjaEV2ZW50c1JlY2VpdmVkKyspOworICAgIH0gZWxzZQorICAgICAgICBkZWJ1ZyhldmVu
dC50eXBlKTsKKworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIgJiYgdG91Y2hF
dmVudHNSZWNlaXZlZCA9PSBFWFBFQ1RFRF9UT1VDSF9FVkVOVFNfVE9UQUwpIHsKKyAgICAgICAg
Ly8gSWYgd2UndmUgZ290IGhlcmUsIHdlIGNhbiBzYWZlbHkgc2F5IHdlIHdlcmUgc3VjY2Vzc2Z1
bGx5IHBhcnNlZCA6KSBXZSBuZWVkIHRvCisgICAgICAgIC8vIGNhbGwgdGhlIGlzU3VjY2Nlc3Nm
dWxseVBhcnNlZCBmdW5jdGlvbiB0byBvdXRwdXQgdGhlIGNvcnJlY3QgVEVTVCBDT01QTEVURQor
ICAgICAgICAvLyBmb290ZXIgbWVzc2FnZS4KKyAgICAgICAgaXNTdWNjZXNzZnVsbHlQYXJzZWQo
KTsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIH0KK30K
KworZGl2LmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoc3RhcnQiLCB0b3VjaEV2ZW50Q2FsbGJhY2ss
IGZhbHNlKTsKK2Rpdi5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaG1vdmUiLCB0b3VjaEV2ZW50Q2Fs
bGJhY2ssIGZhbHNlKTsKK2Rpdi5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaGVuZCIsIHRvdWNoRXZl
bnRDYWxsYmFjaywgZmFsc2UpOworZG9jdW1lbnQuYm9keS5pbnNlcnRCZWZvcmUoZGl2LCBkb2N1
bWVudC5ib2R5LmZpcnN0Q2hpbGQpOworCitmdW5jdGlvbiB2ZXJpZnlUb3VjaEV2ZW50KHR5cGUs
IHRvdGFsVG91Y2hDb3VudCwgY2hhbmdlZFRvdWNoQ291bnQsIHRhcmdldFRvdWNoQ291bnQpCit7
CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJsYXN0RXZlbnQudHlwZSIsIHR5cGUpOworICAg
IHNob3VsZEJlKCJsYXN0RXZlbnQudG91Y2hlcy5sZW5ndGgiLCB0b3RhbFRvdWNoQ291bnQudG9T
dHJpbmcoKSk7CisgICAgc2hvdWxkQmUoImxhc3RFdmVudC5jaGFuZ2VkVG91Y2hlcy5sZW5ndGgi
LCBjaGFuZ2VkVG91Y2hDb3VudC50b1N0cmluZygpKTsKKyAgICBzaG91bGRCZSgibGFzdEV2ZW50
LnRhcmdldFRvdWNoZXMubGVuZ3RoIiwgdGFyZ2V0VG91Y2hDb3VudC50b1N0cmluZygpKTsKKyAg
ICBzaG91bGRCZSgibGFzdEV2ZW50LnBhZ2VYIiwgIjAiKTsKKyAgICBzaG91bGRCZSgibGFzdEV2
ZW50LnBhZ2VZIiwgIjAiKTsKK30KKworZnVuY3Rpb24gdmVyaWZ5VG91Y2hQb2ludChsaXN0LCBw
b2ludCwgeCwgeSwgaWQpCit7CisgICAgc2hvdWxkQmUoImxhc3RFdmVudC4iICsgbGlzdCArICJb
IiArIHBvaW50ICsgIl0ucGFnZVgiLCB4LnRvU3RyaW5nKCkpOworICAgIHNob3VsZEJlKCJsYXN0
RXZlbnQuIiArIGxpc3QgKyAiWyIgKyBwb2ludCArICJdLnBhZ2VZIiwgeS50b1N0cmluZygpKTsK
KyAgICBzaG91bGRCZSgibGFzdEV2ZW50LiIgKyBsaXN0ICsgIlsiICsgcG9pbnQgKyAiXS5jbGll
bnRYIiwgeC50b1N0cmluZygpKTsKKyAgICBzaG91bGRCZSgibGFzdEV2ZW50LiIgKyBsaXN0ICsg
IlsiICsgcG9pbnQgKyAiXS5jbGllbnRZIiwgeS50b1N0cmluZygpKTsKKyAgICBzaG91bGRCZSgi
bGFzdEV2ZW50LiIgKyBsaXN0ICsgIlsiICsgcG9pbnQgKyAiXS5pZGVudGlmaWVyIiwgaWQudG9T
dHJpbmcoKSk7Cit9CisKK2Z1bmN0aW9uIHZlcmlmeVRvdWNoKHdoaWNoKSB7CisgICAgc3dpdGNo
ICh3aGljaCkgeworICAgICAgICBjYXNlIDA6CisgICAgICAgICAgICB2ZXJpZnlUb3VjaEV2ZW50
KCJ0b3VjaHN0YXJ0IiwgMSwgMSwgMSk7CisgICAgICAgICAgICBzaG91bGRCZSgibGFzdEV2ZW50
LnNoaWZ0S2V5IiwgInRydWUiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJsYXN0RXZlbnQuYWx0
S2V5IiwgInRydWUiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJsYXN0RXZlbnQuY3RybEtleSIs
ICJmYWxzZSIpOworICAgICAgICAgICAgc2hvdWxkQmUoImxhc3RFdmVudC5tZXRhS2V5IiwgImZh
bHNlIik7CisgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImxhc3RFdmVudC50b3Vj
aGVzWzBdLnRhcmdldC5pZCIsICJ0b3VjaHRhcmdldCIpOworICAgICAgICAgICAgdmVyaWZ5VG91
Y2hQb2ludCgidG91Y2hlcyIsIDAsIDEwLCAxMCwgMCk7CisgICAgICAgICAgICB2ZXJpZnlUb3Vj
aFBvaW50KCJjaGFuZ2VkVG91Y2hlcyIsIDAsIDEwLCAxMCwgMCk7CisgICAgICAgICAgICB2ZXJp
ZnlUb3VjaFBvaW50KCJ0YXJnZXRUb3VjaGVzIiwgMCwgMTAsIDEwLCAwKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICB2ZXJpZnlUb3VjaEV2ZW50KCJ0
b3VjaG1vdmUiLCAxLCAxLCAxKTsKKyAgICAgICAgICAgIHZlcmlmeVRvdWNoUG9pbnQoInRvdWNo
ZXMiLCAwLCAyMCwgMzAsIDApOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMjoK
KyAgICAgICAgICAgIHZlcmlmeVRvdWNoRXZlbnQoInRvdWNoZW5kIiwgMCwgMSwgMCk7CisgICAg
ICAgICAgICB2ZXJpZnlUb3VjaFBvaW50KCJjaGFuZ2VkVG91Y2hlcyIsIDAsIDIwLCAzMCwgMCk7
CisgICAgICAgICAgICBzaG91bGRCZSgibGFzdEV2ZW50LnNoaWZ0S2V5IiwgImZhbHNlIik7Cisg
ICAgICAgICAgICBzaG91bGRCZSgibGFzdEV2ZW50LmFsdEtleSIsICJ0cnVlIik7CisgICAgICAg
ICAgICBzaG91bGRCZSgibGFzdEV2ZW50LmN0cmxLZXkiLCAidHJ1ZSIpOworICAgICAgICAgICAg
c2hvdWxkQmUoImxhc3RFdmVudC5tZXRhS2V5IiwgImZhbHNlIik7CisgICAgICAgICAgICBicmVh
azsKKworICAgICAgICBkZWZhdWx0OiB0ZXN0RmFpbGVkKCJXcm9uZyBudW1iZXIgb2YgdG91Y2gg
ZXZlbnRzISAoIiArIHdoaWNoICsgIikiKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIG1vdXNlRXZl
bnRTZXF1ZW5jZSgpCit7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oMTAsIDEwKTsKKyAg
ICBldmVudFNlbmRlci5tb3VzZURvd24oMCwgWyJzaGlmdEtleSIsICJhbHRLZXkiXSk7CisgICAg
ZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oMjAsIDMwKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVVw
KDAsIFsiYWx0S2V5IiwgImN0cmxLZXkiXSk7Cit9CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworCitp
ZiAod2luZG93LmV2ZW50U2VuZGVyICYmIHdpbmRvdy5pbnRlcm5hbHMgJiYgd2luZG93LmludGVy
bmFscy5zZXR0aW5ncykgeworICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIHNpbmdsZSB0b3Vj
aCBldmVudCBlbXVsYXRpb24gdXNpbmcgbW91c2UgZXZlbnRzLiIpOworCisgICAgd2luZG93LmV2
ZW50U2VuZGVyLmRyYWdNb2RlID0gZmFsc2U7CisgICAgd2luZG93LmludGVybmFscy5zZXR0aW5n
cy5zZXRUb3VjaEV2ZW50RW11bGF0aW9uRW5hYmxlZCh0cnVlKTsKKyAgICBtb3VzZUV2ZW50U2Vx
dWVuY2UoKTsKK30gZWxzZQorICAgIGRlYnVnKCJUaGlzIHRlc3QgcmVxdWlyZXMgRHVtcFJlbmRl
clRyZWUuIFRhcCBvbiB0aGUgYmx1ZSByZWN0IHRvIGxvZy4iKTsKKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124689</attachid>
            <date>2012-01-31 02:30:43 -0800</date>
            <delta_ts>2012-02-01 02:54:24 -0800</delta_ts>
            <desc>[PATCH] Removed the ENABLE(INSPECTOR) clause (conditional compilation) - rebased</desc>
            <filename>bug-77105-20120131143041.patch</filename>
            <type>text/plain</type>
            <size>21099</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2MzQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjI0MWQyOWY4ZDhkZjdh
MTQwYmYyMGI5NjQ1M2NmMTBlZmUxNTVkZC4uNmE3OTY2Y2U0Mjg4N2UxOTliZDcyYTJlZGMyMDk4
NzllZjRiNjM5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDEyLTAxLTI3ICBBbGV4
YW5kZXIgUGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW1wbGVtZW50
IHRvdWNoIGV2ZW50IGVtdWxhdGlvbiBpbiB0aGUgV2ViQ29yZSBsYXllcgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzcxMDUKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBmYXN0L2V2ZW50cy90b3Vj
aC9lbXVsYXRlLXRvdWNoLWV2ZW50cy5odG1sCisKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxl
ci5jcHA6CisgICAgICAgIChTeW50aGV0aWNUb3VjaFBvaW50KTogQSBzeW50aGV0aWMgdG91Y2gg
cG9pbnQgYnVpbHQgZnJvbSBQbGF0Zm9ybU1vdXNlRXZlbnQuCisgICAgICAgIChXZWJDb3JlOjpT
eW50aGV0aWNUb3VjaFBvaW50OjpTeW50aGV0aWNUb3VjaFBvaW50KToKKyAgICAgICAgKFN5bnRo
ZXRpY1NpbmdsZVRvdWNoRXZlbnQpOiBBIHN5bnRoZXRpYyB0b3VjaCBwb2ludCBldmVudCBidWls
dCBmcm9tIFBsYXRmb3JtTW91c2VFdmVudC4KKyAgICAgICAgKFdlYkNvcmU6OlN5bnRoZXRpY1Np
bmdsZVRvdWNoRXZlbnQ6OlN5bnRoZXRpY1NpbmdsZVRvdWNoRXZlbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVJlbGVhc2VFdmVudCk6IEludm9rZSBtYXli
ZURpc3BhdGNoU3ludGhldGljVG91Y2hFdmVudCgpIGFuZCBiYWlsIG91dCBpZiBuZWNlc3Nhcnku
CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVudCk6
IEludm9rZSBtYXliZURpc3BhdGNoU3ludGhldGljVG91Y2hFdmVudCgpIGFuZCBiYWlsIG91dCBp
ZiBuZWNlc3NhcnkuCisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6Om1vdXNlTW92ZWQp
OiBJbnZva2UgbWF5YmVEaXNwYXRjaFN5bnRoZXRpY1RvdWNoRXZlbnQoKSBhbmQgYmFpbCBvdXQg
aWYgbmVjZXNzYXJ5LgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjptYXliZURpc3Bh
dGNoU3ludGhldGljVG91Y2hFdmVudCk6IERpc3BhdGNoIGEgc3ludGhldGljIHRvdWNoIGV2ZW50
IGlmIG5lY2Vzc2FyeS4KKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5oOiBBZGRlZCBuZXcg
bWV0aG9kLgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2V0dGluZ3M6OlNldHRpbmdzKTogQWRkZWQgbV90b3VjaEV2ZW50RW11bGF0aW9uRW5hYmxlZCBp
bml0aWFsaXplci4KKyAgICAgICAgKiBwYWdlL1NldHRpbmdzLmg6IEFkZGVkIG1fdG91Y2hFdmVu
dEVtdWxhdGlvbkVuYWJsZWQsIGdldHRlciwgYW5kIHNldHRlci4KKyAgICAgICAgKFdlYkNvcmU6
OlNldHRpbmdzOjpzZXRUb3VjaEV2ZW50RW11bGF0aW9uRW5hYmxlZCk6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6U2V0dGluZ3M6OmlzVG91Y2hFdmVudEVtdWxhdGlvbkVuYWJsZWQpOiBBZGRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVRvdWNoUG9pbnQuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlBsYXRmb3JtVG91Y2hQb2ludDo6UGxhdGZvcm1Ub3VjaFBvaW50KTogVW5jb25kaXRp
b25hbGx5IGNvbXBpbGUgdGhlIHBhcmFtZXRlcmxlc3MgY3Rvci4KKyAgICAgICAgKiB0ZXN0aW5n
L0ludGVybmFsU2V0dGluZ3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxTZXR0aW5n
czo6c2V0VG91Y2hFdmVudEVtdWxhdGlvbkVuYWJsZWQpOiBBZGRlZCBmb3IgdGVzdGluZy4KKyAg
ICAgICAgKiB0ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaDogQWRkZWQgc2V0VG91Y2hFdmVudEVt
dWxhdGlvbkVuYWJsZWQoKSBmb3IgdGVzdGluZy4KKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFs
U2V0dGluZ3MuaWRsOiBBZGRlZCBzZXRUb3VjaEV2ZW50RW11bGF0aW9uRW5hYmxlZCgpIGZvciB0
ZXN0aW5nLgorCiAyMDEyLTAxLTMxICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AZ29vZ2xlLmNv
bT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBET01EZWJ1Z2dlci5zZXRFdmVudExpc3RlbmVy
QnJlYWtwb2ludCBzaG91bGQgYWNjZXB0IHJlZ3VsYXIgRE9NIGV2ZW50IG5hbWVzLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IDUwN2E5MTQxNjM0YzBkNmMzZTYyNTY3MjY5
OGU2YmU4MDU0MTg0NmMuLjc4Zjc3NTgwZjkyZGJlN2U0ZDAxNDk3NDIyNDQxZDM5M2RjNmMwODYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTYwLDYgKzYwLDcgQEAKICNp
bmNsdWRlICJNb3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAiTW91c2VFdmVudFdpdGhIaXRUZXN0UmVz
dWx0cy5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUV2ZW50LmgiCiAj
aW5jbHVkZSAiUGxhdGZvcm1LZXlib2FyZEV2ZW50LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1XaGVl
bEV2ZW50LmgiCiAjaW5jbHVkZSAiUGx1Z2luRG9jdW1lbnQuaCIKQEAgLTE0Miw2ICsxNDMsNjcg
QEAgcHJpdmF0ZToKICAgICBDdXJzb3IgbV9jdXJzb3I7CiB9OwogCisjaWYgRU5BQkxFKFRPVUNI
X0VWRU5UUykKK2NsYXNzIFN5bnRoZXRpY1RvdWNoUG9pbnQgOiBwdWJsaWMgUGxhdGZvcm1Ub3Vj
aFBvaW50IHsKK3B1YmxpYzoKKworICAgIC8vIFRoZSBkZWZhdWx0IHZhbHVlcyBhcmUgYmFzZWQg
b24gaHR0cDovL2R2Y3MudzMub3JnL2hnL3dlYmV2ZW50cy9yYXctZmlsZS90aXAvdG91Y2hldmVu
dHMuaHRtbAorICAgIGV4cGxpY2l0IFN5bnRoZXRpY1RvdWNoUG9pbnQoY29uc3QgUGxhdGZvcm1N
b3VzZUV2ZW50JiBldmVudCkKKyAgICB7CisgICAgICAgIG1faWQgPSAwOyAvLyBUaGVyZSBpcyBv
bmx5IG9uZSBhY3RpdmUgVG91Y2hQb2ludC4KKyAgICAgICAgbV9zY3JlZW5Qb3MgPSBldmVudC5n
bG9iYWxQb3NpdGlvbigpOworICAgICAgICBtX3BvcyA9IGV2ZW50LnBvc2l0aW9uKCk7CisgICAg
ICAgIG1fcmFkaXVzWSA9IDE7IC8vIERlZmF1bHQgdmFsdWUuCisgICAgICAgIG1fcmFkaXVzWCA9
IDE7IC8vIERlZmF1bHQgdmFsdWUuCisgICAgICAgIG1fcm90YXRpb25BbmdsZSA9IDAuMGY7IC8v
IERlZmF1bHQgdmFsdWUuCisgICAgICAgIG1fZm9yY2UgPSAxLjBmOyAvLyBEZWZhdWx0IHZhbHVl
LgorCisgICAgICAgIFBsYXRmb3JtRXZlbnQ6OlR5cGUgdHlwZSA9IGV2ZW50LnR5cGUoKTsKKyAg
ICAgICAgQVNTRVJUKHR5cGUgPT0gUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZCB8fCB0eXBlID09
IFBsYXRmb3JtRXZlbnQ6Ok1vdXNlUHJlc3NlZCB8fCB0eXBlID09IFBsYXRmb3JtRXZlbnQ6Ok1v
dXNlUmVsZWFzZWQpOworCisgICAgICAgIHN3aXRjaCAodHlwZSkgeworICAgICAgICBjYXNlIFBs
YXRmb3JtRXZlbnQ6Ok1vdXNlTW92ZWQ6CisgICAgICAgICAgICBtX3N0YXRlID0gVG91Y2hNb3Zl
ZDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFBsYXRmb3JtRXZlbnQ6Ok1vdXNl
UHJlc3NlZDoKKyAgICAgICAgICAgIG1fc3RhdGUgPSBUb3VjaFByZXNzZWQ7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBQbGF0Zm9ybUV2ZW50OjpNb3VzZVJlbGVhc2VkOgorICAg
ICAgICAgICAgbV9zdGF0ZSA9IFRvdWNoUmVsZWFzZWQ7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBQbGF0Zm9ybUV2ZW50OjpNb3VzZVNjcm9sbDoKKyAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgfQorfTsK
KworY2xhc3MgU3ludGhldGljU2luZ2xlVG91Y2hFdmVudCA6IHB1YmxpYyBQbGF0Zm9ybVRvdWNo
RXZlbnQgeworcHVibGljOgorICAgIGV4cGxpY2l0IFN5bnRoZXRpY1NpbmdsZVRvdWNoRXZlbnQo
Y29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCkKKyAgICB7CisgICAgICAgIHN3aXRjaCAo
ZXZlbnQudHlwZSgpKSB7CisgICAgICAgIGNhc2UgUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZDoK
KyAgICAgICAgICAgIG1fdHlwZSA9IFRvdWNoTW92ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIFBsYXRmb3JtRXZlbnQ6Ok1vdXNlUHJlc3NlZDoKKyAgICAgICAgICAgIG1fdHlw
ZSA9IFRvdWNoU3RhcnQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBQbGF0Zm9y
bUV2ZW50OjpNb3VzZVJlbGVhc2VkOgorICAgICAgICAgICAgbV90eXBlID0gVG91Y2hFbmQ7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBQbGF0Zm9ybUV2ZW50OjpNb3VzZVNjcm9s
bDoKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICAgICAgICAgbV90eXBlID0gTm9UeXBlOworICAgICAgICB9CisgICAgICAgIG1fdGltZXN0
YW1wID0gZXZlbnQudGltZXN0YW1wKCk7CisgICAgICAgIG1fbW9kaWZpZXJzID0gZXZlbnQubW9k
aWZpZXJzKCk7CisgICAgICAgIG1fdG91Y2hQb2ludHMuYXBwZW5kKFN5bnRoZXRpY1RvdWNoUG9p
bnQoZXZlbnQpKTsKKyAgICB9Cit9OworI2VuZGlmCisKIHN0YXRpYyBpbmxpbmUgYm9vbCBzY3Jv
bGxOb2RlKGZsb2F0IGRlbHRhLCBXaGVlbEV2ZW50OjpHcmFudWxhcml0eSBncmFudWxhcml0eSwg
U2Nyb2xsRGlyZWN0aW9uIHBvc2l0aXZlRGlyZWN0aW9uLCBTY3JvbGxEaXJlY3Rpb24gbmVnYXRp
dmVEaXJlY3Rpb24sIE5vZGUqIG5vZGUsIE5vZGUqKiBzdG9wTm9kZSkKIHsKICAgICBpZiAoIWRl
bHRhKQpAQCAtNzM5LDYgKzgwMSwxMiBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VV
cChjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBldmVudCkKIAogYm9vbCBFdmVu
dEhhbmRsZXI6OmhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50KGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0
VGVzdFJlc3VsdHMmIGV2ZW50KQogeworI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAgYm9v
bCBzaG91bGRIYW5kbGVNb3VzZUV2ZW50ID0gbWF5YmVEaXNwYXRjaFN5bnRoZXRpY1RvdWNoRXZl
bnQoZXZlbnQuZXZlbnQoKSk7CisgICAgaWYgKCFzaG91bGRIYW5kbGVNb3VzZUV2ZW50KQorICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgorCiAgICAgaWYgKG1fYXV0b3Njcm9sbEluUHJvZ3Jl
c3MpCiAgICAgICAgIHN0b3BBdXRvc2Nyb2xsVGltZXIoKTsKIApAQCAtMTM3NSw2ICsxNDQzLDEy
IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVByZXNzRXZlbnQoY29uc3QgUGxhdGZv
cm1Nb3VzZUV2ZW50JiBtb3VzZUV2ZW50KQogewogICAgIFJlZlB0cjxGcmFtZVZpZXc+IHByb3Rl
Y3RvcihtX2ZyYW1lLT52aWV3KCkpOwogCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICBi
b29sIHNob3VsZEhhbmRsZU1vdXNlRXZlbnQgPSBtYXliZURpc3BhdGNoU3ludGhldGljVG91Y2hF
dmVudChtb3VzZUV2ZW50KTsKKyAgICBpZiAoIXNob3VsZEhhbmRsZU1vdXNlRXZlbnQpCisgICAg
ICAgIHJldHVybiB0cnVlOworI2VuZGlmCisKICAgICBVc2VyR2VzdHVyZUluZGljYXRvciBnZXN0
dXJlSW5kaWNhdG9yKERlZmluaXRlbHlQcm9jZXNzaW5nVXNlckdlc3R1cmUpOwogCiAgICAgLy8g
RklYTUUgKGJ1ZyA2ODE4NSk6IHRoaXMgY2FsbCBzaG91bGQgYmUgbWFkZSBhdCBhbm90aGVyIGFi
c3RyYWN0aW9uIGxheWVyCkBAIC0xNTYxLDYgKzE2MzUsMTMgQEAgYm9vbCBFdmVudEhhbmRsZXI6
Om1vdXNlTW92ZWQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCkKIHsKICAgICBSZWZQ
dHI8RnJhbWVWaWV3PiBwcm90ZWN0b3IobV9mcmFtZS0+dmlldygpKTsKIAorI2lmIEVOQUJMRShU
T1VDSF9FVkVOVFMpCisgICAgLy8gRklYTUU6IHRoaXMgc2hvdWxkIGJlIG1vdmVkIHNvbWV3aGVy
ZSBlbHNlIHRvIGFsc28gYmUgYWJsZSB0byBkaXNwYXRjaCB0b3VjaGNhbmNlbCBldmVudHMuCisg
ICAgYm9vbCBzaG91bGRIYW5kbGVNb3VzZUV2ZW50ID0gbWF5YmVEaXNwYXRjaFN5bnRoZXRpY1Rv
dWNoRXZlbnQoZXZlbnQpOworICAgIGlmICghc2hvdWxkSGFuZGxlTW91c2VFdmVudCkKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisjZW5kaWYKKwogICAgIEhpdFRlc3RSZXN1bHQgaG92ZXJlZE5vZGUg
PSBIaXRUZXN0UmVzdWx0KExheW91dFBvaW50KCkpOwogICAgIGJvb2wgcmVzdWx0ID0gaGFuZGxl
TW91c2VNb3ZlRXZlbnQoZXZlbnQsICZob3ZlcmVkTm9kZSk7CiAKQEAgLTMzNTgsNyArMzQzOSwy
MyBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlVG91Y2hFdmVudChjb25zdCBQbGF0Zm9ybVRv
dWNoRXZlbnQmIGV2ZW50KQogICAgIHJldHVybiBkZWZhdWx0UHJldmVudGVkOwogfQogCisvLyBS
ZXR1cm5zIHdoZXRoZXIgdGhlIG9yaWdpbmFsIG1vdXNlIGV2ZW50IHNob3VsZCBiZSBoYW5kbGVk
LgorYm9vbCBFdmVudEhhbmRsZXI6Om1heWJlRGlzcGF0Y2hTeW50aGV0aWNUb3VjaEV2ZW50KGNv
bnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQpCit7CisgICAgaWYgKCFtX2ZyYW1lLT5kb2N1
bWVudCgpLT5zZXR0aW5ncygpLT5pc1RvdWNoRXZlbnRFbXVsYXRpb25FbmFibGVkKCkpCisgICAg
ICAgIHJldHVybiB0cnVlOworCisgICAgUGxhdGZvcm1FdmVudDo6VHlwZSBldmVudFR5cGUgPSBl
dmVudC50eXBlKCk7CisgICAgaWYgKGV2ZW50VHlwZSAhPSBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1v
dmVkICYmIGV2ZW50VHlwZSAhPSBQbGF0Zm9ybUV2ZW50OjpNb3VzZVByZXNzZWQgJiYgZXZlbnRU
eXBlICE9IFBsYXRmb3JtRXZlbnQ6Ok1vdXNlUmVsZWFzZWQpCisgICAgICAgIHJldHVybiB0cnVl
OwogCisgICAgaWYgKGV2ZW50VHlwZSA9PSBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkICYmICFt
X3RvdWNoUHJlc3NlZCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBTeW50aGV0aWNTaW5n
bGVUb3VjaEV2ZW50IHRvdWNoRXZlbnQoZXZlbnQpOworICAgIGJvb2wgZGVmYXVsdFByZXZlbnRl
ZCA9IGhhbmRsZVRvdWNoRXZlbnQodG91Y2hFdmVudCk7CisgICAgcmV0dXJuICFkZWZhdWx0UHJl
dmVudGVkOworfQogCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9F
dmVudEhhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKaW5kZXgg
NTQ3YmZlNTdkNWI5M2EwMWFlYzUzZTczMjA0ZWIyOTc2ZmNiNzc2ZS4uN2QzNzBkMTgwZTQ0MDI5
NDYxNzM5MDNhMGMyY2U2ZDZjZjBkMjEzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9FdmVudEhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5o
CkBAIC0yNjQsNiArMjY0LDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBmYWtlTW91c2VNb3ZlRXZl
bnRUaW1lckZpcmVkKFRpbWVyPEV2ZW50SGFuZGxlcj4qKTsKICAgICB2b2lkIGNhbmNlbEZha2VN
b3VzZU1vdmVFdmVudCgpOwogCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICBib29sIG1h
eWJlRGlzcGF0Y2hTeW50aGV0aWNUb3VjaEV2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYp
OworI2VuZGlmCisKICAgICB2b2lkIGludmFsaWRhdGVDbGljaygpOwogCiAgICAgTm9kZSogbm9k
ZVVuZGVyTW91c2UoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0
dGluZ3MuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKaW5kZXggMTg2MTY2
MGJkZTcxNTJiNjBlZWZlOTVmZmRjODhlMjNiODA3OWE0ZS4uNzRmY2QwNDBlYTcxYjZkN2NiZTIy
OGEzZjJlN2RhMmNjOGRmYTNiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0
aW5ncy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKQEAgLTIzOSw2
ICsyMzksOSBAQCBTZXR0aW5nczo6U2V0dGluZ3MoUGFnZSogcGFnZSkKICAgICAsIG1fc2Nyb2xs
aW5nQ29vcmRpbmF0b3JFbmFibGVkKGZhbHNlKQogI2VuZGlmCiAgICAgLCBtX25vdGlmaWNhdGlv
bnNFbmFibGVkKHRydWUpCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICAsIG1fdG91Y2hF
dmVudEVtdWxhdGlvbkVuYWJsZWQoZmFsc2UpCisjZW5kaWYKICAgICAsIG1fbG9hZHNJbWFnZXNB
dXRvbWF0aWNhbGx5VGltZXIodGhpcywgJlNldHRpbmdzOjpsb2Fkc0ltYWdlc0F1dG9tYXRpY2Fs
bHlUaW1lckZpcmVkKQogewogICAgIC8vIEEgRnJhbWUgbWF5IG5vdCBoYXZlIGJlZW4gY3JlYXRl
ZCB5ZXQsIHNvIHdlIGluaXRpYWxpemUgdGhlIEF0b21pY1N0cmluZyAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGlu
Z3MuaAppbmRleCA4ZTRkOTFkNWMwNGY1M2Q2NDE1N2UwMjVkMWIyYjkzNGQ2ZDRkNjZmLi4zYTNm
YWVhNDNjMzQ3Nzg4YTdiOTQ2Yjk4YzY4OTE4MGIxOGY1MTRiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1NldHRpbmdzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5n
cy5oCkBAIC01MjAsNiArNTIwLDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9p
ZCBzZXROb3RpZmljYXRpb25zRW5hYmxlZChib29sIGVuYWJsZWQpIHsgbV9ub3RpZmljYXRpb25z
RW5hYmxlZCA9IGVuYWJsZWQ7IH0KICAgICAgICAgYm9vbCBub3RpZmljYXRpb25zRW5hYmxlZCgp
IGNvbnN0IHsgcmV0dXJuIG1fbm90aWZpY2F0aW9uc0VuYWJsZWQ7IH0KIAorI2lmIEVOQUJMRShU
T1VDSF9FVkVOVFMpCisgICAgICAgIHZvaWQgc2V0VG91Y2hFdmVudEVtdWxhdGlvbkVuYWJsZWQo
Ym9vbCBlbmFibGVkKSB7IG1fdG91Y2hFdmVudEVtdWxhdGlvbkVuYWJsZWQgPSBlbmFibGVkOyB9
CisgICAgICAgIGJvb2wgaXNUb3VjaEV2ZW50RW11bGF0aW9uRW5hYmxlZCgpIGNvbnN0IHsgcmV0
dXJuIG1fdG91Y2hFdmVudEVtdWxhdGlvbkVuYWJsZWQ7IH0KKyNlbmRpZgorCiAgICAgcHJpdmF0
ZToKICAgICAgICAgU2V0dGluZ3MoUGFnZSopOwogCkBAIC02NjUsNiArNjcwLDEwIEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBib29sIG1fbm90aWZpY2F0aW9uc0VuYWJsZWQgOiAx
OwogCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICAgICAgYm9vbCBtX3RvdWNoRXZlbnRF
bXVsYXRpb25FbmFibGVkIDogMTsKKyNlbmRpZgorCiAgICAgICAgIFRpbWVyPFNldHRpbmdzPiBt
X2xvYWRzSW1hZ2VzQXV0b21hdGljYWxseVRpbWVyOwogICAgICAgICB2b2lkIGxvYWRzSW1hZ2Vz
QXV0b21hdGljYWxseVRpbWVyRmlyZWQoVGltZXI8U2V0dGluZ3M+Kik7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtVG91Y2hQb2ludC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Ub3VjaFBvaW50LmgKaW5kZXggZDY2ZWIyM2M4MzE3MzZm
NGE2N2QzZTNmYjk5YzFlYTc3NGIwMzdiNi4uYjE4MTkyZDkwZmUyNzM2NmJhODUyODY0OWJkNDE5
ZWUyMjM2YWQyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1U
b3VjaFBvaW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Ub3VjaFBv
aW50LmgKQEAgLTQ0LDkgKzQ0LDExIEBAIHB1YmxpYzoKICAgICAgICAgVG91Y2hTdGF0ZUVuZCAv
LyBQbGFjZWhvbGRlcjogbXVzdCByZW1haW4gdGhlIGxhc3QgaXRlbS4KICAgICB9OwogCisgICAg
Ly8gVGhpcyBpcyBuZWNlc3NhcnkgZm9yIHVzIHRvIGJlIGFibGUgdG8gYnVpbGQgc3ludGhldGlj
IGV2ZW50cy4KKyAgICBQbGF0Zm9ybVRvdWNoUG9pbnQoKSB7IH07CisKICNpZiBQTEFURk9STShR
VCkKICAgICBQbGF0Zm9ybVRvdWNoUG9pbnQoY29uc3QgUVRvdWNoRXZlbnQ6OlRvdWNoUG9pbnQm
KTsKLSAgICBQbGF0Zm9ybVRvdWNoUG9pbnQoKSB7fTsKICNlbGlmIFBMQVRGT1JNKEVGTCkKICAg
ICBQbGF0Zm9ybVRvdWNoUG9pbnQodW5zaWduZWQgaWQsIGNvbnN0IEludFBvaW50JiB3aW5kb3dQ
b3MsIFN0YXRlKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbFNldHRpbmdzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0
aW5ncy5jcHAKaW5kZXggYTRkYmI0NGJmMjU5NzNjZDFhMmVlMDVlMGY5MzNmYTg5ODg1YjhjMS4u
YzJiMDQ1ZGNhMTRlOGVlYmFmNmYwZjA0MzdkZDFkYjg3MWIzMWZlMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwCkBAIC0yNzEsNCArMjcxLDE1IEBAIHZv
aWQgSW50ZXJuYWxTZXR0aW5nczo6c2V0UGVyVGlsZURyYXdpbmdFbmFibGVkKGJvb2wgZW5hYmxl
ZCwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgc2V0dGluZ3MoKS0+c2V0UGVyVGlsZURyYXdpbmdF
bmFibGVkKGVuYWJsZWQpOwogfQogCit2b2lkIEludGVybmFsU2V0dGluZ3M6OnNldFRvdWNoRXZl
bnRFbXVsYXRpb25FbmFibGVkKGJvb2wgZW5hYmxlZCwgRXhjZXB0aW9uQ29kZSYgZWMpCit7Cisj
aWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICBJbnRlcm5hbFNldHRpbmdzR3VhcmRGb3JTZXR0
aW5ncygpOworICAgIHNldHRpbmdzKCktPnNldFRvdWNoRXZlbnRFbXVsYXRpb25FbmFibGVkKGVu
YWJsZWQpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oZW5hYmxlZCk7CisgICAgVU5VU0VEX1BB
UkFNKGVjKTsKKyNlbmRpZgorfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFsU2V0dGluZ3MuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxT
ZXR0aW5ncy5oCmluZGV4IGJlOTMyOGVlNzE0YTNhMmI5MDBmMTFiOGQ0YWE5NWNhNGExOGU2Y2Qu
LjY0ODAwOTI2YzRkMGYxY2M0YWEzMTJkZTEwMDViZGE5NWNjNjA4ZTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5oCkBAIC02NCw2ICs2NCw3IEBAIHB1YmxpYzoK
ICAgICBmbG9hdCBwYWdlU2NhbGVGYWN0b3IoRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgc2V0
UGFnZVNjYWxlRmFjdG9yKGZsb2F0IHNjYWxlRmFjdG9yLCBpbnQgeCwgaW50IHksIEV4Y2VwdGlv
bkNvZGUmKTsKICAgICB2b2lkIHNldFBlclRpbGVEcmF3aW5nRW5hYmxlZChib29sIGVuYWJsZWQs
IEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIHNldFRvdWNoRXZlbnRFbXVsYXRpb25FbmFibGVk
KGJvb2wgZW5hYmxlZCwgRXhjZXB0aW9uQ29kZSYpOwogCiBwcml2YXRlOgogICAgIEludGVybmFs
U2V0dGluZ3MoRnJhbWUqLCBJbnRlcm5hbFNldHRpbmdzKiBvbGQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5pZGwKaW5kZXggYzJmNWIyYWM3NzU0M2Q1NDNhNGZh
ZDdhZWFmMmIzMGZmNjhkNDhmYi4uMDM2MDA4Mzg0ZWVjMTc2Zjc1ODNkYmQwOWU2MTAwYmUyYjY4
Nzg3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdz
LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaWRsCkBA
IC00NCw2ICs0NCw3IEBAIG1vZHVsZSB3aW5kb3cgewogICAgICAgICBib29sZWFuIHVuaWZpZWRU
ZXh0Q2hlY2tpbmdFbmFibGVkKCkgcmFpc2VzIChET01FeGNlcHRpb24pOwogICAgICAgICBmbG9h
dCBwYWdlU2NhbGVGYWN0b3IoKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICAgICAgICAgdm9pZCBz
ZXRQYWdlU2NhbGVGYWN0b3IoaW4gZmxvYXQgc2NhbGVGYWN0b3IsIGluIGxvbmcgeCwgaW4gbG9u
ZyB5KSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgdm9pZCBzZXRUb3VjaEV2ZW50RW11
bGF0aW9uRW5hYmxlZChpbiBib29sZWFuIGVuYWJsZWQpIHJhaXNlcyhET01FeGNlcHRpb24pOwog
ICAgIH07CiB9CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwppbmRleCAwMTk4MzRiMDNlMTcyN2EzYzgyMDE5NDMyYzU4MDYwMDcxZTgy
ZTg3Li45MmE2MWNkY2E4YzI4MWVmNjhlNWI0M2M0NzI5NzQyYTM1MjRhMzhhIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTkgQEAKKzIwMTItMDEtMjcgIEFsZXhhbmRlciBQYXZsb3YgIDxhcGF2bG92QGNocm9t
aXVtLm9yZz4KKworICAgICAgICBJbXBsZW1lbnQgdG91Y2ggZXZlbnQgZW11bGF0aW9uIGluIHRo
ZSBXZWJDb3JlIGxheWVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD03NzEwNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogZmFzdC9ldmVudHMvdG91Y2gvZW11bGF0ZS10b3VjaC1ldmVudHMtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy90b3VjaC9lbXVsYXRlLXRvdWNoLWV2
ZW50cy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy90b3VjaC9zY3JpcHQtdGVz
dHMvZW11bGF0ZS10b3VjaC1ldmVudHMuanM6IEFkZGVkLgorICAgICAgICAodG91Y2hFdmVudENh
bGxiYWNrKToKKyAgICAgICAgKHZlcmlmeVRvdWNoRXZlbnQpOgorICAgICAgICAodmVyaWZ5VG91
Y2hQb2ludCk6CisgICAgICAgICh2ZXJpZnlUb3VjaCk6CisgICAgICAgIChtb3VzZUV2ZW50U2Vx
dWVuY2UpOgorCiAyMDEyLTAxLTMxICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlh
LmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBHVEsgZ2FyZGVuaW5nLgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZW11bGF0ZS10b3VjaC1ldmVudHMtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZW11bGF0ZS10b3VjaC1ldmVu
dHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhjZjgyNmUzYjkxMDE1N2QzZDc5ZWVlZDZhYzM0
M2YyNjU5Y2YyMDkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90
b3VjaC9lbXVsYXRlLXRvdWNoLWV2ZW50cy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw2MSBAQAor
VGhpcyB0ZXN0cyBzaW5nbGUgdG91Y2ggZXZlbnQgZW11bGF0aW9uIHVzaW5nIG1vdXNlIGV2ZW50
cy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgbGFzdEV2ZW50LnR5cGUg
aXMgInRvdWNoc3RhcnQiCitQQVNTIGxhc3RFdmVudC50b3VjaGVzLmxlbmd0aCBpcyAxCitQQVNT
IGxhc3RFdmVudC5jaGFuZ2VkVG91Y2hlcy5sZW5ndGggaXMgMQorUEFTUyBsYXN0RXZlbnQudGFy
Z2V0VG91Y2hlcy5sZW5ndGggaXMgMQorUEFTUyBsYXN0RXZlbnQucGFnZVggaXMgMAorUEFTUyBs
YXN0RXZlbnQucGFnZVkgaXMgMAorUEFTUyBsYXN0RXZlbnQuc2hpZnRLZXkgaXMgdHJ1ZQorUEFT
UyBsYXN0RXZlbnQuYWx0S2V5IGlzIHRydWUKK1BBU1MgbGFzdEV2ZW50LmN0cmxLZXkgaXMgZmFs
c2UKK1BBU1MgbGFzdEV2ZW50Lm1ldGFLZXkgaXMgZmFsc2UKK1BBU1MgbGFzdEV2ZW50LnRvdWNo
ZXNbMF0udGFyZ2V0LmlkIGlzICJ0b3VjaHRhcmdldCIKK1BBU1MgbGFzdEV2ZW50LnRvdWNoZXNb
MF0ucGFnZVggaXMgMTAKK1BBU1MgbGFzdEV2ZW50LnRvdWNoZXNbMF0ucGFnZVkgaXMgMTAKK1BB
U1MgbGFzdEV2ZW50LnRvdWNoZXNbMF0uY2xpZW50WCBpcyAxMAorUEFTUyBsYXN0RXZlbnQudG91
Y2hlc1swXS5jbGllbnRZIGlzIDEwCitQQVNTIGxhc3RFdmVudC50b3VjaGVzWzBdLmlkZW50aWZp
ZXIgaXMgMAorUEFTUyBsYXN0RXZlbnQuY2hhbmdlZFRvdWNoZXNbMF0ucGFnZVggaXMgMTAKK1BB
U1MgbGFzdEV2ZW50LmNoYW5nZWRUb3VjaGVzWzBdLnBhZ2VZIGlzIDEwCitQQVNTIGxhc3RFdmVu
dC5jaGFuZ2VkVG91Y2hlc1swXS5jbGllbnRYIGlzIDEwCitQQVNTIGxhc3RFdmVudC5jaGFuZ2Vk
VG91Y2hlc1swXS5jbGllbnRZIGlzIDEwCitQQVNTIGxhc3RFdmVudC5jaGFuZ2VkVG91Y2hlc1sw
XS5pZGVudGlmaWVyIGlzIDAKK1BBU1MgbGFzdEV2ZW50LnRhcmdldFRvdWNoZXNbMF0ucGFnZVgg
aXMgMTAKK1BBU1MgbGFzdEV2ZW50LnRhcmdldFRvdWNoZXNbMF0ucGFnZVkgaXMgMTAKK1BBU1Mg
bGFzdEV2ZW50LnRhcmdldFRvdWNoZXNbMF0uY2xpZW50WCBpcyAxMAorUEFTUyBsYXN0RXZlbnQu
dGFyZ2V0VG91Y2hlc1swXS5jbGllbnRZIGlzIDEwCitQQVNTIGxhc3RFdmVudC50YXJnZXRUb3Vj
aGVzWzBdLmlkZW50aWZpZXIgaXMgMAorUEFTUyBsYXN0RXZlbnQudHlwZSBpcyAidG91Y2htb3Zl
IgorUEFTUyBsYXN0RXZlbnQudG91Y2hlcy5sZW5ndGggaXMgMQorUEFTUyBsYXN0RXZlbnQuY2hh
bmdlZFRvdWNoZXMubGVuZ3RoIGlzIDEKK1BBU1MgbGFzdEV2ZW50LnRhcmdldFRvdWNoZXMubGVu
Z3RoIGlzIDEKK1BBU1MgbGFzdEV2ZW50LnBhZ2VYIGlzIDAKK1BBU1MgbGFzdEV2ZW50LnBhZ2VZ
IGlzIDAKK1BBU1MgbGFzdEV2ZW50LnRvdWNoZXNbMF0ucGFnZVggaXMgMjAKK1BBU1MgbGFzdEV2
ZW50LnRvdWNoZXNbMF0ucGFnZVkgaXMgMzAKK1BBU1MgbGFzdEV2ZW50LnRvdWNoZXNbMF0uY2xp
ZW50WCBpcyAyMAorUEFTUyBsYXN0RXZlbnQudG91Y2hlc1swXS5jbGllbnRZIGlzIDMwCitQQVNT
IGxhc3RFdmVudC50b3VjaGVzWzBdLmlkZW50aWZpZXIgaXMgMAorUEFTUyBsYXN0RXZlbnQudHlw
ZSBpcyAidG91Y2hlbmQiCitQQVNTIGxhc3RFdmVudC50b3VjaGVzLmxlbmd0aCBpcyAwCitQQVNT
IGxhc3RFdmVudC5jaGFuZ2VkVG91Y2hlcy5sZW5ndGggaXMgMQorUEFTUyBsYXN0RXZlbnQudGFy
Z2V0VG91Y2hlcy5sZW5ndGggaXMgMAorUEFTUyBsYXN0RXZlbnQucGFnZVggaXMgMAorUEFTUyBs
YXN0RXZlbnQucGFnZVkgaXMgMAorUEFTUyBsYXN0RXZlbnQuY2hhbmdlZFRvdWNoZXNbMF0ucGFn
ZVggaXMgMjAKK1BBU1MgbGFzdEV2ZW50LmNoYW5nZWRUb3VjaGVzWzBdLnBhZ2VZIGlzIDMwCitQ
QVNTIGxhc3RFdmVudC5jaGFuZ2VkVG91Y2hlc1swXS5jbGllbnRYIGlzIDIwCitQQVNTIGxhc3RF
dmVudC5jaGFuZ2VkVG91Y2hlc1swXS5jbGllbnRZIGlzIDMwCitQQVNTIGxhc3RFdmVudC5jaGFu
Z2VkVG91Y2hlc1swXS5pZGVudGlmaWVyIGlzIDAKK1BBU1MgbGFzdEV2ZW50LnNoaWZ0S2V5IGlz
IGZhbHNlCitQQVNTIGxhc3RFdmVudC5hbHRLZXkgaXMgdHJ1ZQorUEFTUyBsYXN0RXZlbnQuY3Ry
bEtleSBpcyB0cnVlCitQQVNTIGxhc3RFdmVudC5tZXRhS2V5IGlzIGZhbHNlCitQQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZW11bGF0ZS10b3VjaC1ldmVudHMuaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2VtdWxhdGUtdG91Y2gtZXZlbnRzLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uOTM2YTdhMTcxMzVkYTg5YTlkYThkOTEwNDgyNDdmZTY1YmI3NGZiNgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2VtdWxhdGUtdG91Y2gt
ZXZlbnRzLmh0bWwKQEAgLTAsMCArMSwxNiBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9J
RVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPCEtLQorICBUb3VjaCB0ZXN0
cyB0aGF0IGludm9sdmUgdGhlIG9udG91Y2hzdGFydCwgb250b3VjaG1vdmUsIG9udG91Y2hlbmQg
b3Igb250b3VjaGNhbmNlbCBjYWxsYmFja3MKKyAgc2hvdWxkIGJlIHdyaXR0ZW4gaW4gYW4gYXN5
bmNocm9ub3VzIGZhc2hpb24gc28gdGhleSBjYW4gYmUgcnVuIG9uIG1vYmlsZSBwbGF0Zm9ybXMg
bGlrZSBBbmRyb2lkLgorICBZb3Ugd2lsbCBuZWVkIHRvIGludm9rZSBpc1N1Y2Nlc3NmdWxseVBh
cnNlZCgpIGluIHlvdXIgdGVzdCBzY3JpcHQgd2hlbiB0aGUgdGVzdCBjb21wbGV0ZXMuCistLT4K
KzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvZW11bGF0ZS10b3VjaC1ldmVu
dHMuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9ldmVudHMvdG91Y2gvc2NyaXB0LXRlc3RzL2VtdWxhdGUtdG91Y2gtZXZlbnRzLmpz
IGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvc2NyaXB0LXRlc3RzL2VtdWxhdGUtdG91
Y2gtZXZlbnRzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBiYzRiNmU2YmE5YTlhNjg1ODRiNTJlOGYzNmE3MGI1
NWQ4MjU2NjcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3Vj
aC9zY3JpcHQtdGVzdHMvZW11bGF0ZS10b3VjaC1ldmVudHMuanMKQEAgLTAsMCArMSwxMDAgQEAK
K3ZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKK2Rpdi5pZCA9ICJ0b3Vj
aHRhcmdldCI7CitkaXYuc3R5bGUud2lkdGggPSAiMTAwcHgiOworZGl2LnN0eWxlLmhlaWdodCA9
ICIxMDBweCI7CitkaXYuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gImJsdWUiOworCit2YXIgbGFz
dEV2ZW50ID0gbnVsbDsKK3ZhciB0b3VjaEV2ZW50c1JlY2VpdmVkID0gMDsKK3ZhciBFWFBFQ1RF
RF9UT1VDSF9FVkVOVFNfVE9UQUwgPSAzOworCitmdW5jdGlvbiB0b3VjaEV2ZW50Q2FsbGJhY2so
KSB7CisgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICBsYXN0RXZlbnQgPSBl
dmVudDsKKyAgICAgICAgdmVyaWZ5VG91Y2godG91Y2hFdmVudHNSZWNlaXZlZCsrKTsKKyAgICB9
IGVsc2UKKyAgICAgICAgZGVidWcoZXZlbnQudHlwZSk7CisKKyAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyICYmIHRvdWNoRXZlbnRzUmVjZWl2ZWQgPT0gRVhQRUNURURfVE9VQ0hf
RVZFTlRTX1RPVEFMKSB7CisgICAgICAgIC8vIElmIHdlJ3ZlIGdvdCBoZXJlLCB3ZSBjYW4gc2Fm
ZWx5IHNheSB3ZSB3ZXJlIHN1Y2Nlc3NmdWxseSBwYXJzZWQgOikgV2UgbmVlZCB0bworICAgICAg
ICAvLyBjYWxsIHRoZSBpc1N1Y2NjZXNzZnVsbHlQYXJzZWQgZnVuY3Rpb24gdG8gb3V0cHV0IHRo
ZSBjb3JyZWN0IFRFU1QgQ09NUExFVEUKKyAgICAgICAgLy8gZm9vdGVyIG1lc3NhZ2UuCisgICAg
ICAgIGlzU3VjY2Vzc2Z1bGx5UGFyc2VkKCk7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
Lm5vdGlmeURvbmUoKTsKKyAgICB9Cit9CisKK2Rpdi5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaHN0
YXJ0IiwgdG91Y2hFdmVudENhbGxiYWNrLCBmYWxzZSk7CitkaXYuYWRkRXZlbnRMaXN0ZW5lcigi
dG91Y2htb3ZlIiwgdG91Y2hFdmVudENhbGxiYWNrLCBmYWxzZSk7CitkaXYuYWRkRXZlbnRMaXN0
ZW5lcigidG91Y2hlbmQiLCB0b3VjaEV2ZW50Q2FsbGJhY2ssIGZhbHNlKTsKK2RvY3VtZW50LmJv
ZHkuaW5zZXJ0QmVmb3JlKGRpdiwgZG9jdW1lbnQuYm9keS5maXJzdENoaWxkKTsKKworZnVuY3Rp
b24gdmVyaWZ5VG91Y2hFdmVudCh0eXBlLCB0b3RhbFRvdWNoQ291bnQsIGNoYW5nZWRUb3VjaENv
dW50LCB0YXJnZXRUb3VjaENvdW50KQoreworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygibGFz
dEV2ZW50LnR5cGUiLCB0eXBlKTsKKyAgICBzaG91bGRCZSgibGFzdEV2ZW50LnRvdWNoZXMubGVu
Z3RoIiwgdG90YWxUb3VjaENvdW50LnRvU3RyaW5nKCkpOworICAgIHNob3VsZEJlKCJsYXN0RXZl
bnQuY2hhbmdlZFRvdWNoZXMubGVuZ3RoIiwgY2hhbmdlZFRvdWNoQ291bnQudG9TdHJpbmcoKSk7
CisgICAgc2hvdWxkQmUoImxhc3RFdmVudC50YXJnZXRUb3VjaGVzLmxlbmd0aCIsIHRhcmdldFRv
dWNoQ291bnQudG9TdHJpbmcoKSk7CisgICAgc2hvdWxkQmUoImxhc3RFdmVudC5wYWdlWCIsICIw
Iik7CisgICAgc2hvdWxkQmUoImxhc3RFdmVudC5wYWdlWSIsICIwIik7Cit9CisKK2Z1bmN0aW9u
IHZlcmlmeVRvdWNoUG9pbnQobGlzdCwgcG9pbnQsIHgsIHksIGlkKQoreworICAgIHNob3VsZEJl
KCJsYXN0RXZlbnQuIiArIGxpc3QgKyAiWyIgKyBwb2ludCArICJdLnBhZ2VYIiwgeC50b1N0cmlu
ZygpKTsKKyAgICBzaG91bGRCZSgibGFzdEV2ZW50LiIgKyBsaXN0ICsgIlsiICsgcG9pbnQgKyAi
XS5wYWdlWSIsIHkudG9TdHJpbmcoKSk7CisgICAgc2hvdWxkQmUoImxhc3RFdmVudC4iICsgbGlz
dCArICJbIiArIHBvaW50ICsgIl0uY2xpZW50WCIsIHgudG9TdHJpbmcoKSk7CisgICAgc2hvdWxk
QmUoImxhc3RFdmVudC4iICsgbGlzdCArICJbIiArIHBvaW50ICsgIl0uY2xpZW50WSIsIHkudG9T
dHJpbmcoKSk7CisgICAgc2hvdWxkQmUoImxhc3RFdmVudC4iICsgbGlzdCArICJbIiArIHBvaW50
ICsgIl0uaWRlbnRpZmllciIsIGlkLnRvU3RyaW5nKCkpOworfQorCitmdW5jdGlvbiB2ZXJpZnlU
b3VjaCh3aGljaCkgeworICAgIHN3aXRjaCAod2hpY2gpIHsKKyAgICAgICAgY2FzZSAwOgorICAg
ICAgICAgICAgdmVyaWZ5VG91Y2hFdmVudCgidG91Y2hzdGFydCIsIDEsIDEsIDEpOworICAgICAg
ICAgICAgc2hvdWxkQmUoImxhc3RFdmVudC5zaGlmdEtleSIsICJ0cnVlIik7CisgICAgICAgICAg
ICBzaG91bGRCZSgibGFzdEV2ZW50LmFsdEtleSIsICJ0cnVlIik7CisgICAgICAgICAgICBzaG91
bGRCZSgibGFzdEV2ZW50LmN0cmxLZXkiLCAiZmFsc2UiKTsKKyAgICAgICAgICAgIHNob3VsZEJl
KCJsYXN0RXZlbnQubWV0YUtleSIsICJmYWxzZSIpOworICAgICAgICAgICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCJsYXN0RXZlbnQudG91Y2hlc1swXS50YXJnZXQuaWQiLCAidG91Y2h0YXJnZXQi
KTsKKyAgICAgICAgICAgIHZlcmlmeVRvdWNoUG9pbnQoInRvdWNoZXMiLCAwLCAxMCwgMTAsIDAp
OworICAgICAgICAgICAgdmVyaWZ5VG91Y2hQb2ludCgiY2hhbmdlZFRvdWNoZXMiLCAwLCAxMCwg
MTAsIDApOworICAgICAgICAgICAgdmVyaWZ5VG91Y2hQb2ludCgidGFyZ2V0VG91Y2hlcyIsIDAs
IDEwLCAxMCwgMCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAxOgorICAgICAg
ICAgICAgdmVyaWZ5VG91Y2hFdmVudCgidG91Y2htb3ZlIiwgMSwgMSwgMSk7CisgICAgICAgICAg
ICB2ZXJpZnlUb3VjaFBvaW50KCJ0b3VjaGVzIiwgMCwgMjAsIDMwLCAwKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICB2ZXJpZnlUb3VjaEV2ZW50KCJ0
b3VjaGVuZCIsIDAsIDEsIDApOworICAgICAgICAgICAgdmVyaWZ5VG91Y2hQb2ludCgiY2hhbmdl
ZFRvdWNoZXMiLCAwLCAyMCwgMzAsIDApOworICAgICAgICAgICAgc2hvdWxkQmUoImxhc3RFdmVu
dC5zaGlmdEtleSIsICJmYWxzZSIpOworICAgICAgICAgICAgc2hvdWxkQmUoImxhc3RFdmVudC5h
bHRLZXkiLCAidHJ1ZSIpOworICAgICAgICAgICAgc2hvdWxkQmUoImxhc3RFdmVudC5jdHJsS2V5
IiwgInRydWUiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJsYXN0RXZlbnQubWV0YUtleSIsICJm
YWxzZSIpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDogdGVzdEZhaWxl
ZCgiV3JvbmcgbnVtYmVyIG9mIHRvdWNoIGV2ZW50cyEgKCIgKyB3aGljaCArICIpIik7CisgICAg
fQorfQorCitmdW5jdGlvbiBtb3VzZUV2ZW50U2VxdWVuY2UoKQoreworICAgIGV2ZW50U2VuZGVy
Lm1vdXNlTW92ZVRvKDEwLCAxMCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKDAsIFsic2hp
ZnRLZXkiLCAiYWx0S2V5Il0pOworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKDIwLCAzMCk7
CisgICAgZXZlbnRTZW5kZXIubW91c2VVcCgwLCBbImFsdEtleSIsICJjdHJsS2V5Il0pOworfQor
CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9s
bGVyLndhaXRVbnRpbERvbmUoKTsKKworaWYgKHdpbmRvdy5ldmVudFNlbmRlciAmJiB3aW5kb3cu
aW50ZXJuYWxzICYmIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3MpIHsKKyAgICBkZXNjcmlwdGlv
bigiVGhpcyB0ZXN0cyBzaW5nbGUgdG91Y2ggZXZlbnQgZW11bGF0aW9uIHVzaW5nIG1vdXNlIGV2
ZW50cy4iKTsKKworICAgIHdpbmRvdy5ldmVudFNlbmRlci5kcmFnTW9kZSA9IGZhbHNlOworICAg
IHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0VG91Y2hFdmVudEVtdWxhdGlvbkVuYWJsZWQo
dHJ1ZSk7CisgICAgbW91c2VFdmVudFNlcXVlbmNlKCk7Cit9IGVsc2UKKyAgICBkZWJ1ZygiVGhp
cyB0ZXN0IHJlcXVpcmVzIER1bXBSZW5kZXJUcmVlLiBUYXAgb24gdGhlIGJsdWUgcmVjdCB0byBs
b2cuIik7CisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124919</attachid>
            <date>2012-02-01 02:54:34 -0800</date>
            <delta_ts>2012-02-01 04:23:57 -0800</delta_ts>
            <desc>[PATCH] rniwa&apos;s comments addressed</desc>
            <filename>bug-77105-20120201145431.patch</filename>
            <type>text/plain</type>
            <size>20614</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2MzQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjI0MWQyOWY4ZDhkZjdh
MTQwYmYyMGI5NjQ1M2NmMTBlZmUxNTVkZC4uMWExOTE2ZTQ0ZjBlOGI1MDNlMzdhMGIwN2ZjNmVi
OGQ3Mzk0MmVjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDEyLTAxLTI3ICBBbGV4
YW5kZXIgUGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW1wbGVtZW50
IHRvdWNoIGV2ZW50IGVtdWxhdGlvbiBpbiB0aGUgV2ViQ29yZSBsYXllcgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzcxMDUKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGNoYW5nZSBlc3NlbnRpYWxs
eSBtYXBzIG1vdXNlIGV2ZW50cyBpbnRvIHNpbmdsZS10b3VjaCBldmVudHMgaW4gdGhlIGZvbGxv
d2luZyB3YXk6CisgICAgICAgIC0gbW91c2Vkb3duIC0+IHRvdWNoc3RhcnQKKyAgICAgICAgLSBt
b3VzZXVwIC0+IHRvdWNoZW5kCisgICAgICAgIC0gbW91c2Vtb3ZlIC0+IHRvdWNobW92ZSAoYmV0
d2VlbiBtb3VzZWRvd24gYW5kIG1vdXNldXApLgorCisgICAgICAgIFRlc3Q6IGZhc3QvZXZlbnRz
L3RvdWNoL2VtdWxhdGUtdG91Y2gtZXZlbnRzLmh0bWwKKworICAgICAgICAqIHBhZ2UvRXZlbnRI
YW5kbGVyLmNwcDoKKyAgICAgICAgKFN5bnRoZXRpY1RvdWNoUG9pbnQpOiBBIHN5bnRoZXRpYyB0
b3VjaCBwb2ludCBidWlsdCBmcm9tIFBsYXRmb3JtTW91c2VFdmVudC4KKyAgICAgICAgKFdlYkNv
cmU6OlN5bnRoZXRpY1RvdWNoUG9pbnQ6OlN5bnRoZXRpY1RvdWNoUG9pbnQpOgorICAgICAgICAo
U3ludGhldGljU2luZ2xlVG91Y2hFdmVudCk6IEEgc3ludGhldGljIHRvdWNoIHBvaW50IGV2ZW50
IGJ1aWx0IGZyb20gUGxhdGZvcm1Nb3VzZUV2ZW50LgorICAgICAgICAoV2ViQ29yZTo6U3ludGhl
dGljU2luZ2xlVG91Y2hFdmVudDo6U3ludGhldGljU2luZ2xlVG91Y2hFdmVudCk6CisgICAgICAg
IChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50KTogSW52b2tl
IG1heWJlRGlzcGF0Y2hTeW50aGV0aWNUb3VjaEV2ZW50KCkgYW5kIGJhaWwgb3V0IGlmIG5lY2Vz
c2FyeS4KKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2
ZW50KTogSW52b2tlIG1heWJlRGlzcGF0Y2hTeW50aGV0aWNUb3VjaEV2ZW50KCkgYW5kIGJhaWwg
b3V0IGlmIG5lY2Vzc2FyeS4KKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6bW91c2VN
b3ZlZCk6IEludm9rZSBtYXliZURpc3BhdGNoU3ludGhldGljVG91Y2hFdmVudCgpIGFuZCBiYWls
IG91dCBpZiBuZWNlc3NhcnkuCisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmRpc3Bh
dGNoU3ludGhldGljVG91Y2hFdmVudElmRW5hYmxlZCk6IERpc3BhdGNoIGEgc3ludGhldGljIHRv
dWNoIGV2ZW50IGlmIG5lY2Vzc2FyeS4KKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5oOiBB
ZGRlZCBuZXcgbWV0aG9kLgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3MuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2V0dGluZ3M6OlNldHRpbmdzKTogQWRkZWQgbV90b3VjaEV2ZW50RW11bGF0aW9u
RW5hYmxlZCBpbml0aWFsaXplci4KKyAgICAgICAgKiBwYWdlL1NldHRpbmdzLmg6IEFkZGVkIG1f
dG91Y2hFdmVudEVtdWxhdGlvbkVuYWJsZWQsIGdldHRlciwgYW5kIHNldHRlci4KKyAgICAgICAg
KFdlYkNvcmU6OlNldHRpbmdzOjpzZXRUb3VjaEV2ZW50RW11bGF0aW9uRW5hYmxlZCk6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6OmlzVG91Y2hFdmVudEVtdWxhdGlvbkVuYWJs
ZWQpOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVRvdWNoUG9pbnQuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtVG91Y2hQb2ludDo6UGxhdGZvcm1Ub3VjaFBvaW50KTog
VW5jb25kaXRpb25hbGx5IGNvbXBpbGUgdGhlIHBhcmFtZXRlcmxlc3MgY3Rvci4KKyAgICAgICAg
KiB0ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJu
YWxTZXR0aW5nczo6c2V0VG91Y2hFdmVudEVtdWxhdGlvbkVuYWJsZWQpOiBBZGRlZCBmb3IgdGVz
dGluZy4KKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaDogQWRkZWQgc2V0VG91
Y2hFdmVudEVtdWxhdGlvbkVuYWJsZWQoKSBmb3IgdGVzdGluZy4KKyAgICAgICAgKiB0ZXN0aW5n
L0ludGVybmFsU2V0dGluZ3MuaWRsOiBBZGRlZCBzZXRUb3VjaEV2ZW50RW11bGF0aW9uRW5hYmxl
ZCgpIGZvciB0ZXN0aW5nLgorCiAyMDEyLTAxLTMxICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5A
Z29vZ2xlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBET01EZWJ1Z2dlci5zZXRFdmVu
dExpc3RlbmVyQnJlYWtwb2ludCBzaG91bGQgYWNjZXB0IHJlZ3VsYXIgRE9NIGV2ZW50IG5hbWVz
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IDUwN2E5MTQxNjM0YzBkNmMz
ZTYyNTY3MjY5OGU2YmU4MDU0MTg0NmMuLjllODg1M2JlN2ZiOTExMTNjOWM1NzAzNTZkZTAyYWRh
MWZiZGE1ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTYwLDYgKzYw
LDcgQEAKICNpbmNsdWRlICJNb3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAiTW91c2VFdmVudFdpdGhI
aXRUZXN0UmVzdWx0cy5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUV2
ZW50LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1LZXlib2FyZEV2ZW50LmgiCiAjaW5jbHVkZSAiUGxh
dGZvcm1XaGVlbEV2ZW50LmgiCiAjaW5jbHVkZSAiUGx1Z2luRG9jdW1lbnQuaCIKQEAgLTE0Miw2
ICsxNDMsNzEgQEAgcHJpdmF0ZToKICAgICBDdXJzb3IgbV9jdXJzb3I7CiB9OwogCisjaWYgRU5B
QkxFKFRPVUNIX0VWRU5UUykKK2NsYXNzIFN5bnRoZXRpY1RvdWNoUG9pbnQgOiBwdWJsaWMgUGxh
dGZvcm1Ub3VjaFBvaW50IHsKK3B1YmxpYzoKKworICAgIC8vIFRoZSBkZWZhdWx0IHZhbHVlcyBh
cmUgYmFzZWQgb24gaHR0cDovL2R2Y3MudzMub3JnL2hnL3dlYmV2ZW50cy9yYXctZmlsZS90aXAv
dG91Y2hldmVudHMuaHRtbAorICAgIGV4cGxpY2l0IFN5bnRoZXRpY1RvdWNoUG9pbnQoY29uc3Qg
UGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCkKKyAgICB7CisgICAgICAgIGNvbnN0IHN0YXRpYyBp
bnQgaWREZWZhdWx0VmFsdWUgPSAwOworICAgICAgICBjb25zdCBzdGF0aWMgaW50IHJhZGl1c1lE
ZWZhdWx0VmFsdWUgPSAxOworICAgICAgICBjb25zdCBzdGF0aWMgaW50IHJhZGl1c1hEZWZhdWx0
VmFsdWUgPSAxOworICAgICAgICBjb25zdCBzdGF0aWMgZmxvYXQgcm90YXRpb25BbmdsZURlZmF1
bHRWYWx1ZSA9IDAuMGY7CisgICAgICAgIGNvbnN0IHN0YXRpYyBmbG9hdCBmb3JjZURlZmF1bHRW
YWx1ZSA9IDEuMGY7CisKKyAgICAgICAgbV9pZCA9IGlkRGVmYXVsdFZhbHVlOyAvLyBUaGVyZSBp
cyBvbmx5IG9uZSBhY3RpdmUgVG91Y2hQb2ludC4KKyAgICAgICAgbV9zY3JlZW5Qb3MgPSBldmVu
dC5nbG9iYWxQb3NpdGlvbigpOworICAgICAgICBtX3BvcyA9IGV2ZW50LnBvc2l0aW9uKCk7Cisg
ICAgICAgIG1fcmFkaXVzWSA9IHJhZGl1c1lEZWZhdWx0VmFsdWU7CisgICAgICAgIG1fcmFkaXVz
WCA9IHJhZGl1c1hEZWZhdWx0VmFsdWU7CisgICAgICAgIG1fcm90YXRpb25BbmdsZSA9IHJvdGF0
aW9uQW5nbGVEZWZhdWx0VmFsdWU7CisgICAgICAgIG1fZm9yY2UgPSBmb3JjZURlZmF1bHRWYWx1
ZTsKKworICAgICAgICBQbGF0Zm9ybUV2ZW50OjpUeXBlIHR5cGUgPSBldmVudC50eXBlKCk7Cisg
ICAgICAgIEFTU0VSVCh0eXBlID09IFBsYXRmb3JtRXZlbnQ6Ok1vdXNlTW92ZWQgfHwgdHlwZSA9
PSBQbGF0Zm9ybUV2ZW50OjpNb3VzZVByZXNzZWQgfHwgdHlwZSA9PSBQbGF0Zm9ybUV2ZW50OjpN
b3VzZVJlbGVhc2VkKTsKKworICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICAgICAgY2FzZSBQ
bGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkOgorICAgICAgICAgICAgbV9zdGF0ZSA9IFRvdWNoTW92
ZWQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBQbGF0Zm9ybUV2ZW50OjpNb3Vz
ZVByZXNzZWQ6CisgICAgICAgICAgICBtX3N0YXRlID0gVG91Y2hQcmVzc2VkOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgUGxhdGZvcm1FdmVudDo6TW91c2VSZWxlYXNlZDoKKyAg
ICAgICAgICAgIG1fc3RhdGUgPSBUb3VjaFJlbGVhc2VkOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgfQorICAgIH0KK307CisKK2NsYXNzIFN5bnRoZXRpY1NpbmdsZVRvdWNoRXZlbnQgOiBwdWJs
aWMgUGxhdGZvcm1Ub3VjaEV2ZW50IHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBTeW50aGV0aWNT
aW5nbGVUb3VjaEV2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQpCisgICAgewor
ICAgICAgICBzd2l0Y2ggKGV2ZW50LnR5cGUoKSkgeworICAgICAgICBjYXNlIFBsYXRmb3JtRXZl
bnQ6Ok1vdXNlTW92ZWQ6CisgICAgICAgICAgICBtX3R5cGUgPSBUb3VjaE1vdmU7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSBQbGF0Zm9ybUV2ZW50OjpNb3VzZVByZXNzZWQ6Cisg
ICAgICAgICAgICBtX3R5cGUgPSBUb3VjaFN0YXJ0OworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgUGxhdGZvcm1FdmVudDo6TW91c2VSZWxlYXNlZDoKKyAgICAgICAgICAgIG1fdHlw
ZSA9IFRvdWNoRW5kOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIG1fdHlwZSA9IE5vVHlw
ZTsKKyAgICAgICAgfQorICAgICAgICBtX3RpbWVzdGFtcCA9IGV2ZW50LnRpbWVzdGFtcCgpOwor
ICAgICAgICBtX21vZGlmaWVycyA9IGV2ZW50Lm1vZGlmaWVycygpOworICAgICAgICBtX3RvdWNo
UG9pbnRzLmFwcGVuZChTeW50aGV0aWNUb3VjaFBvaW50KGV2ZW50KSk7CisgICAgfQorfTsKKyNl
bmRpZgorCiBzdGF0aWMgaW5saW5lIGJvb2wgc2Nyb2xsTm9kZShmbG9hdCBkZWx0YSwgV2hlZWxF
dmVudDo6R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIFNjcm9sbERpcmVjdGlvbiBwb3NpdGl2ZURp
cmVjdGlvbiwgU2Nyb2xsRGlyZWN0aW9uIG5lZ2F0aXZlRGlyZWN0aW9uLCBOb2RlKiBub2RlLCBO
b2RlKiogc3RvcE5vZGUpCiB7CiAgICAgaWYgKCFkZWx0YSkKQEAgLTczOSw2ICs4MDUsMTIgQEAg
Ym9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlVXAoY29uc3QgTW91c2VFdmVudFdpdGhIaXRU
ZXN0UmVzdWx0cyYgZXZlbnQpCiAKIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVJlbGVh
c2VFdmVudChjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBldmVudCkKIHsKKyNp
ZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIGJvb2wgc2hvdWxkSGFuZGxlTW91c2VFdmVudCA9
IGRpc3BhdGNoU3ludGhldGljVG91Y2hFdmVudElmRW5hYmxlZChldmVudC5ldmVudCgpKTsKKyAg
ICBpZiAoIXNob3VsZEhhbmRsZU1vdXNlRXZlbnQpCisgICAgICAgIHJldHVybiB0cnVlOworI2Vu
ZGlmCisKICAgICBpZiAobV9hdXRvc2Nyb2xsSW5Qcm9ncmVzcykKICAgICAgICAgc3RvcEF1dG9z
Y3JvbGxUaW1lcigpOwogCkBAIC0xMzc1LDYgKzE0NDcsMTIgQEAgYm9vbCBFdmVudEhhbmRsZXI6
OmhhbmRsZU1vdXNlUHJlc3NFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIG1vdXNlRXZl
bnQpCiB7CiAgICAgUmVmUHRyPEZyYW1lVmlldz4gcHJvdGVjdG9yKG1fZnJhbWUtPnZpZXcoKSk7
CiAKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIGJvb2wgc2hvdWxkSGFuZGxlTW91c2VF
dmVudCA9IGRpc3BhdGNoU3ludGhldGljVG91Y2hFdmVudElmRW5hYmxlZChtb3VzZUV2ZW50KTsK
KyAgICBpZiAoIXNob3VsZEhhbmRsZU1vdXNlRXZlbnQpCisgICAgICAgIHJldHVybiB0cnVlOwor
I2VuZGlmCisKICAgICBVc2VyR2VzdHVyZUluZGljYXRvciBnZXN0dXJlSW5kaWNhdG9yKERlZmlu
aXRlbHlQcm9jZXNzaW5nVXNlckdlc3R1cmUpOwogCiAgICAgLy8gRklYTUUgKGJ1ZyA2ODE4NSk6
IHRoaXMgY2FsbCBzaG91bGQgYmUgbWFkZSBhdCBhbm90aGVyIGFic3RyYWN0aW9uIGxheWVyCkBA
IC0xNTYxLDYgKzE2MzksMTMgQEAgYm9vbCBFdmVudEhhbmRsZXI6Om1vdXNlTW92ZWQoY29uc3Qg
UGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCkKIHsKICAgICBSZWZQdHI8RnJhbWVWaWV3PiBwcm90
ZWN0b3IobV9mcmFtZS0+dmlldygpKTsKIAorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAg
Ly8gRklYTUU6IHRoaXMgc2hvdWxkIGJlIG1vdmVkIGVsc2V3aGVyZSB0byBhbHNvIGJlIGFibGUg
dG8gZGlzcGF0Y2ggdG91Y2hjYW5jZWwgZXZlbnRzLgorICAgIGJvb2wgc2hvdWxkSGFuZGxlTW91
c2VFdmVudCA9IGRpc3BhdGNoU3ludGhldGljVG91Y2hFdmVudElmRW5hYmxlZChldmVudCk7Cisg
ICAgaWYgKCFzaG91bGRIYW5kbGVNb3VzZUV2ZW50KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyNl
bmRpZgorCiAgICAgSGl0VGVzdFJlc3VsdCBob3ZlcmVkTm9kZSA9IEhpdFRlc3RSZXN1bHQoTGF5
b3V0UG9pbnQoKSk7CiAgICAgYm9vbCByZXN1bHQgPSBoYW5kbGVNb3VzZU1vdmVFdmVudChldmVu
dCwgJmhvdmVyZWROb2RlKTsKIApAQCAtMzM1OCw3ICszNDQzLDIzIEBAIGJvb2wgRXZlbnRIYW5k
bGVyOjpoYW5kbGVUb3VjaEV2ZW50KGNvbnN0IFBsYXRmb3JtVG91Y2hFdmVudCYgZXZlbnQpCiAg
ICAgcmV0dXJuIGRlZmF1bHRQcmV2ZW50ZWQ7CiB9CiAKKy8vIFJldHVybnMgd2hldGhlciB0aGUg
b3JpZ2luYWwgbW91c2UgZXZlbnQgc2hvdWxkIGJlIGhhbmRsZWQuCitib29sIEV2ZW50SGFuZGxl
cjo6ZGlzcGF0Y2hTeW50aGV0aWNUb3VjaEV2ZW50SWZFbmFibGVkKGNvbnN0IFBsYXRmb3JtTW91
c2VFdmVudCYgZXZlbnQpCit7CisgICAgaWYgKCFtX2ZyYW1lLT5kb2N1bWVudCgpLT5zZXR0aW5n
cygpLT5pc1RvdWNoRXZlbnRFbXVsYXRpb25FbmFibGVkKCkpCisgICAgICAgIHJldHVybiB0cnVl
OworCisgICAgUGxhdGZvcm1FdmVudDo6VHlwZSBldmVudFR5cGUgPSBldmVudC50eXBlKCk7Cisg
ICAgaWYgKGV2ZW50VHlwZSAhPSBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkICYmIGV2ZW50VHlw
ZSAhPSBQbGF0Zm9ybUV2ZW50OjpNb3VzZVByZXNzZWQgJiYgZXZlbnRUeXBlICE9IFBsYXRmb3Jt
RXZlbnQ6Ok1vdXNlUmVsZWFzZWQpCisgICAgICAgIHJldHVybiB0cnVlOwogCisgICAgaWYgKGV2
ZW50VHlwZSA9PSBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkICYmICFtX3RvdWNoUHJlc3NlZCkK
KyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBTeW50aGV0aWNTaW5nbGVUb3VjaEV2ZW50IHRv
dWNoRXZlbnQoZXZlbnQpOworICAgIGJvb2wgZGVmYXVsdFByZXZlbnRlZCA9IGhhbmRsZVRvdWNo
RXZlbnQodG91Y2hFdmVudCk7CisgICAgcmV0dXJuICFkZWZhdWx0UHJldmVudGVkOworfQogCiAj
ZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKaW5kZXggNTQ3YmZlNTdkNWI5M2Ew
MWFlYzUzZTczMjA0ZWIyOTc2ZmNiNzc2ZS4uNzczM2EwZjY1MjY0MmJlOTY5OTY5NzU2MDE0M2Fl
Yjk1OTg4ZjdkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCkBAIC0yNjQsNiArMjY0
LDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBmYWtlTW91c2VNb3ZlRXZlbnRUaW1lckZpcmVkKFRp
bWVyPEV2ZW50SGFuZGxlcj4qKTsKICAgICB2b2lkIGNhbmNlbEZha2VNb3VzZU1vdmVFdmVudCgp
OwogCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICBib29sIGRpc3BhdGNoU3ludGhldGlj
VG91Y2hFdmVudElmRW5hYmxlZChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKKyNlbmRpZgor
CiAgICAgdm9pZCBpbnZhbGlkYXRlQ2xpY2soKTsKIAogICAgIE5vZGUqIG5vZGVVbmRlck1vdXNl
KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCmluZGV4IDE4NjE2NjBiZGU3MTUyYjYw
ZWVmZTk1ZmZkYzg4ZTIzYjgwNzlhNGUuLjc0ZmNkMDQwZWE3MWI2ZDdjYmUyMjhhM2YyZTdkYTJj
YzhkZmEzYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCkBAIC0yMzksNiArMjM5LDkgQEAg
U2V0dGluZ3M6OlNldHRpbmdzKFBhZ2UqIHBhZ2UpCiAgICAgLCBtX3Njcm9sbGluZ0Nvb3JkaW5h
dG9yRW5hYmxlZChmYWxzZSkKICNlbmRpZgogICAgICwgbV9ub3RpZmljYXRpb25zRW5hYmxlZCh0
cnVlKQorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAgLCBtX3RvdWNoRXZlbnRFbXVsYXRp
b25FbmFibGVkKGZhbHNlKQorI2VuZGlmCiAgICAgLCBtX2xvYWRzSW1hZ2VzQXV0b21hdGljYWxs
eVRpbWVyKHRoaXMsICZTZXR0aW5nczo6bG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5VGltZXJGaXJl
ZCkKIHsKICAgICAvLyBBIEZyYW1lIG1heSBub3QgaGF2ZSBiZWVuIGNyZWF0ZWQgeWV0LCBzbyB3
ZSBpbml0aWFsaXplIHRoZSBBdG9taWNTdHJpbmcgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1NldHRpbmdzLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgKaW5kZXgg
OGU0ZDkxZDVjMDRmNTNkNjQxNTdlMDI1ZDFiMmI5MzRkNmQ0ZDY2Zi4uM2EzZmFlYTQzYzM0Nzc4
OGE3Yjk0NmI5OGM2ODkxODBiMThmNTE0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9TZXR0aW5ncy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaApAQCAtNTIw
LDYgKzUyMCwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgc2V0Tm90aWZp
Y2F0aW9uc0VuYWJsZWQoYm9vbCBlbmFibGVkKSB7IG1fbm90aWZpY2F0aW9uc0VuYWJsZWQgPSBl
bmFibGVkOyB9CiAgICAgICAgIGJvb2wgbm90aWZpY2F0aW9uc0VuYWJsZWQoKSBjb25zdCB7IHJl
dHVybiBtX25vdGlmaWNhdGlvbnNFbmFibGVkOyB9CiAKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRT
KQorICAgICAgICB2b2lkIHNldFRvdWNoRXZlbnRFbXVsYXRpb25FbmFibGVkKGJvb2wgZW5hYmxl
ZCkgeyBtX3RvdWNoRXZlbnRFbXVsYXRpb25FbmFibGVkID0gZW5hYmxlZDsgfQorICAgICAgICBi
b29sIGlzVG91Y2hFdmVudEVtdWxhdGlvbkVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX3RvdWNo
RXZlbnRFbXVsYXRpb25FbmFibGVkOyB9CisjZW5kaWYKKwogICAgIHByaXZhdGU6CiAgICAgICAg
IFNldHRpbmdzKFBhZ2UqKTsKIApAQCAtNjY1LDYgKzY3MCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKICAgICAgICAgYm9vbCBtX25vdGlmaWNhdGlvbnNFbmFibGVkIDogMTsKIAorI2lmIEVO
QUJMRShUT1VDSF9FVkVOVFMpCisgICAgICAgIGJvb2wgbV90b3VjaEV2ZW50RW11bGF0aW9uRW5h
YmxlZCA6IDE7CisjZW5kaWYKKwogICAgICAgICBUaW1lcjxTZXR0aW5ncz4gbV9sb2Fkc0ltYWdl
c0F1dG9tYXRpY2FsbHlUaW1lcjsKICAgICAgICAgdm9pZCBsb2Fkc0ltYWdlc0F1dG9tYXRpY2Fs
bHlUaW1lckZpcmVkKFRpbWVyPFNldHRpbmdzPiopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVRvdWNoUG9pbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1BsYXRmb3JtVG91Y2hQb2ludC5oCmluZGV4IGQ2NmViMjNjODMxNzM2ZjRhNjdkM2UzZmI5
OWMxZWE3NzRiMDM3YjYuLmIxODE5MmQ5MGZlMjczNjZiYTg1Mjg2NDliZDQxOWVlMjIzNmFkMjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtVG91Y2hQb2ludC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtVG91Y2hQb2ludC5oCkBAIC00
NCw5ICs0NCwxMSBAQCBwdWJsaWM6CiAgICAgICAgIFRvdWNoU3RhdGVFbmQgLy8gUGxhY2Vob2xk
ZXI6IG11c3QgcmVtYWluIHRoZSBsYXN0IGl0ZW0uCiAgICAgfTsKIAorICAgIC8vIFRoaXMgaXMg
bmVjZXNzYXJ5IGZvciB1cyB0byBiZSBhYmxlIHRvIGJ1aWxkIHN5bnRoZXRpYyBldmVudHMuCisg
ICAgUGxhdGZvcm1Ub3VjaFBvaW50KCkgeyB9OworCiAjaWYgUExBVEZPUk0oUVQpCiAgICAgUGxh
dGZvcm1Ub3VjaFBvaW50KGNvbnN0IFFUb3VjaEV2ZW50OjpUb3VjaFBvaW50Jik7Ci0gICAgUGxh
dGZvcm1Ub3VjaFBvaW50KCkge307CiAjZWxpZiBQTEFURk9STShFRkwpCiAgICAgUGxhdGZvcm1U
b3VjaFBvaW50KHVuc2lnbmVkIGlkLCBjb25zdCBJbnRQb2ludCYgd2luZG93UG9zLCBTdGF0ZSk7
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0
aW5ncy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwCmlu
ZGV4IGE0ZGJiNDRiZjI1OTczY2QxYTJlZTA1ZTBmOTMzZmE4OTg4NWI4YzEuLmMyYjA0NWRjYTE0
ZThlZWJhZjZmMGYwNDM3ZGQxZGI4NzFiMzFmZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbFNldHRpbmdzLmNwcApAQCAtMjcxLDQgKzI3MSwxNSBAQCB2b2lkIEludGVybmFs
U2V0dGluZ3M6OnNldFBlclRpbGVEcmF3aW5nRW5hYmxlZChib29sIGVuYWJsZWQsIEV4Y2VwdGlv
bkNvZGUmIGVjKQogICAgIHNldHRpbmdzKCktPnNldFBlclRpbGVEcmF3aW5nRW5hYmxlZChlbmFi
bGVkKTsKIH0KIAordm9pZCBJbnRlcm5hbFNldHRpbmdzOjpzZXRUb3VjaEV2ZW50RW11bGF0aW9u
RW5hYmxlZChib29sIGVuYWJsZWQsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworI2lmIEVOQUJMRShU
T1VDSF9FVkVOVFMpCisgICAgSW50ZXJuYWxTZXR0aW5nc0d1YXJkRm9yU2V0dGluZ3MoKTsKKyAg
ICBzZXR0aW5ncygpLT5zZXRUb3VjaEV2ZW50RW11bGF0aW9uRW5hYmxlZChlbmFibGVkKTsKKyNl
bHNlCisgICAgVU5VU0VEX1BBUkFNKGVuYWJsZWQpOworICAgIFVOVVNFRF9QQVJBTShlYyk7Cisj
ZW5kaWYKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bFNldHRpbmdzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaApp
bmRleCBiZTkzMjhlZTcxNGEzYTJiOTAwZjExYjhkNGFhOTVjYTRhMThlNmNkLi42NDgwMDkyNmM0
ZDBmMWNjNGFhMzEyZGUxMDA1YmRhOTVjYzYwOGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFsU2V0dGluZ3MuaApAQCAtNjQsNiArNjQsNyBAQCBwdWJsaWM6CiAgICAgZmxvYXQg
cGFnZVNjYWxlRmFjdG9yKEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIHNldFBhZ2VTY2FsZUZh
Y3RvcihmbG9hdCBzY2FsZUZhY3RvciwgaW50IHgsIGludCB5LCBFeGNlcHRpb25Db2RlJik7CiAg
ICAgdm9pZCBzZXRQZXJUaWxlRHJhd2luZ0VuYWJsZWQoYm9vbCBlbmFibGVkLCBFeGNlcHRpb25D
b2RlJik7CisgICAgdm9pZCBzZXRUb3VjaEV2ZW50RW11bGF0aW9uRW5hYmxlZChib29sIGVuYWJs
ZWQsIEV4Y2VwdGlvbkNvZGUmKTsKIAogcHJpdmF0ZToKICAgICBJbnRlcm5hbFNldHRpbmdzKEZy
YW1lKiwgSW50ZXJuYWxTZXR0aW5ncyogb2xkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFsU2V0dGluZ3MuaWRsCmluZGV4IGMyZjViMmFjNzc1NDNkNTQzYTRmYWQ3YWVhZjJiMzBm
ZjY4ZDQ4ZmIuLjAzNjAwODM4NGVlYzE3NmY3NTgzZGJkMDllNjEwMGJlMmI2ODc4NzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5pZGwKKysrIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmlkbApAQCAtNDQsNiArNDQs
NyBAQCBtb2R1bGUgd2luZG93IHsKICAgICAgICAgYm9vbGVhbiB1bmlmaWVkVGV4dENoZWNraW5n
RW5hYmxlZCgpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKICAgICAgICAgZmxvYXQgcGFnZVNjYWxl
RmFjdG9yKCkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAgICAgICAgIHZvaWQgc2V0UGFnZVNjYWxl
RmFjdG9yKGluIGZsb2F0IHNjYWxlRmFjdG9yLCBpbiBsb25nIHgsIGluIGxvbmcgeSkgcmFpc2Vz
KERPTUV4Y2VwdGlvbik7CisgICAgICAgIHZvaWQgc2V0VG91Y2hFdmVudEVtdWxhdGlvbkVuYWJs
ZWQoaW4gYm9vbGVhbiBlbmFibGVkKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICAgICB9OwogfQog
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggMDE5ODM0YjAzZTE3MjdhM2M4MjAxOTQzMmM1ODA2MDA3MWU4MmU4Ny4uNjVmZWEy
ODEwYmQ4OGRjNWQwNzg4YjU4Yjg3OWJiZWZkNzBmOGFmYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBA
CisyMDEyLTAxLTI3ICBBbGV4YW5kZXIgUGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgSW1wbGVtZW50IHRvdWNoIGV2ZW50IGVtdWxhdGlvbiBpbiB0aGUgV2ViQ29yZSBs
YXllcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzcx
MDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZh
c3QvZXZlbnRzL3RvdWNoL2VtdWxhdGUtdG91Y2gtZXZlbnRzLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogZmFzdC9ldmVudHMvdG91Y2gvZW11bGF0ZS10b3VjaC1ldmVudHMuaHRtbDog
QWRkZWQuCisKIDIwMTItMDEtMzEgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIEdUSyBnYXJkZW5pbmcuCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9lbXVsYXRlLXRvdWNoLWV2ZW50cy1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9lbXVsYXRlLXRvdWNoLWV2ZW50
cy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGE0MjNkY2U3ZTJjYjEyZjQ4OWRhYmM5YTcwMjQx
ZWJkNmU1ZTc0YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3Rv
dWNoL2VtdWxhdGUtdG91Y2gtZXZlbnRzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDYwIEBACitU
aGlzIHRlc3RzIHNpbmdsZSB0b3VjaCBldmVudCBlbXVsYXRpb24gdXNpbmcgbW91c2UgZXZlbnRz
LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2Vz
LCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBsYXN0RXZlbnQudHlwZSBp
cyAidG91Y2hzdGFydCIKK1BBU1MgbGFzdEV2ZW50LnRvdWNoZXMubGVuZ3RoIGlzIDEKK1BBU1Mg
bGFzdEV2ZW50LmNoYW5nZWRUb3VjaGVzLmxlbmd0aCBpcyAxCitQQVNTIGxhc3RFdmVudC50YXJn
ZXRUb3VjaGVzLmxlbmd0aCBpcyAxCitQQVNTIGxhc3RFdmVudC5wYWdlWCBpcyAwCitQQVNTIGxh
c3RFdmVudC5wYWdlWSBpcyAwCitQQVNTIGxhc3RFdmVudC5zaGlmdEtleSBpcyB0cnVlCitQQVNT
IGxhc3RFdmVudC5hbHRLZXkgaXMgdHJ1ZQorUEFTUyBsYXN0RXZlbnQuY3RybEtleSBpcyBmYWxz
ZQorUEFTUyBsYXN0RXZlbnQubWV0YUtleSBpcyBmYWxzZQorUEFTUyBsYXN0RXZlbnQudG91Y2hl
c1swXS50YXJnZXQuaWQgaXMgInRvdWNodGFyZ2V0IgorUEFTUyBsYXN0RXZlbnQudG91Y2hlc1sw
XS5wYWdlWCBpcyAxMAorUEFTUyBsYXN0RXZlbnQudG91Y2hlc1swXS5wYWdlWSBpcyAxMAorUEFT
UyBsYXN0RXZlbnQudG91Y2hlc1swXS5jbGllbnRYIGlzIDEwCitQQVNTIGxhc3RFdmVudC50b3Vj
aGVzWzBdLmNsaWVudFkgaXMgMTAKK1BBU1MgbGFzdEV2ZW50LnRvdWNoZXNbMF0uaWRlbnRpZmll
ciBpcyAwCitQQVNTIGxhc3RFdmVudC5jaGFuZ2VkVG91Y2hlc1swXS5wYWdlWCBpcyAxMAorUEFT
UyBsYXN0RXZlbnQuY2hhbmdlZFRvdWNoZXNbMF0ucGFnZVkgaXMgMTAKK1BBU1MgbGFzdEV2ZW50
LmNoYW5nZWRUb3VjaGVzWzBdLmNsaWVudFggaXMgMTAKK1BBU1MgbGFzdEV2ZW50LmNoYW5nZWRU
b3VjaGVzWzBdLmNsaWVudFkgaXMgMTAKK1BBU1MgbGFzdEV2ZW50LmNoYW5nZWRUb3VjaGVzWzBd
LmlkZW50aWZpZXIgaXMgMAorUEFTUyBsYXN0RXZlbnQudGFyZ2V0VG91Y2hlc1swXS5wYWdlWCBp
cyAxMAorUEFTUyBsYXN0RXZlbnQudGFyZ2V0VG91Y2hlc1swXS5wYWdlWSBpcyAxMAorUEFTUyBs
YXN0RXZlbnQudGFyZ2V0VG91Y2hlc1swXS5jbGllbnRYIGlzIDEwCitQQVNTIGxhc3RFdmVudC50
YXJnZXRUb3VjaGVzWzBdLmNsaWVudFkgaXMgMTAKK1BBU1MgbGFzdEV2ZW50LnRhcmdldFRvdWNo
ZXNbMF0uaWRlbnRpZmllciBpcyAwCitQQVNTIGxhc3RFdmVudC50eXBlIGlzICJ0b3VjaG1vdmUi
CitQQVNTIGxhc3RFdmVudC50b3VjaGVzLmxlbmd0aCBpcyAxCitQQVNTIGxhc3RFdmVudC5jaGFu
Z2VkVG91Y2hlcy5sZW5ndGggaXMgMQorUEFTUyBsYXN0RXZlbnQudGFyZ2V0VG91Y2hlcy5sZW5n
dGggaXMgMQorUEFTUyBsYXN0RXZlbnQucGFnZVggaXMgMAorUEFTUyBsYXN0RXZlbnQucGFnZVkg
aXMgMAorUEFTUyBsYXN0RXZlbnQudG91Y2hlc1swXS5wYWdlWCBpcyAyMAorUEFTUyBsYXN0RXZl
bnQudG91Y2hlc1swXS5wYWdlWSBpcyAzMAorUEFTUyBsYXN0RXZlbnQudG91Y2hlc1swXS5jbGll
bnRYIGlzIDIwCitQQVNTIGxhc3RFdmVudC50b3VjaGVzWzBdLmNsaWVudFkgaXMgMzAKK1BBU1Mg
bGFzdEV2ZW50LnRvdWNoZXNbMF0uaWRlbnRpZmllciBpcyAwCitQQVNTIGxhc3RFdmVudC50eXBl
IGlzICJ0b3VjaGVuZCIKK1BBU1MgbGFzdEV2ZW50LnRvdWNoZXMubGVuZ3RoIGlzIDAKK1BBU1Mg
bGFzdEV2ZW50LmNoYW5nZWRUb3VjaGVzLmxlbmd0aCBpcyAxCitQQVNTIGxhc3RFdmVudC50YXJn
ZXRUb3VjaGVzLmxlbmd0aCBpcyAwCitQQVNTIGxhc3RFdmVudC5wYWdlWCBpcyAwCitQQVNTIGxh
c3RFdmVudC5wYWdlWSBpcyAwCitQQVNTIGxhc3RFdmVudC5jaGFuZ2VkVG91Y2hlc1swXS5wYWdl
WCBpcyAyMAorUEFTUyBsYXN0RXZlbnQuY2hhbmdlZFRvdWNoZXNbMF0ucGFnZVkgaXMgMzAKK1BB
U1MgbGFzdEV2ZW50LmNoYW5nZWRUb3VjaGVzWzBdLmNsaWVudFggaXMgMjAKK1BBU1MgbGFzdEV2
ZW50LmNoYW5nZWRUb3VjaGVzWzBdLmNsaWVudFkgaXMgMzAKK1BBU1MgbGFzdEV2ZW50LmNoYW5n
ZWRUb3VjaGVzWzBdLmlkZW50aWZpZXIgaXMgMAorUEFTUyBsYXN0RXZlbnQuc2hpZnRLZXkgaXMg
ZmFsc2UKK1BBU1MgbGFzdEV2ZW50LmFsdEtleSBpcyB0cnVlCitQQVNTIGxhc3RFdmVudC5jdHJs
S2V5IGlzIHRydWUKK1BBU1MgbGFzdEV2ZW50Lm1ldGFLZXkgaXMgZmFsc2UKKworVEVTVCBDT01Q
TEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9lbXVsYXRl
LXRvdWNoLWV2ZW50cy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZW11bGF0
ZS10b3VjaC1ldmVudHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MmViYmRhYTEwMjlkMWRjZTU4MGI4MGJj
NGM1ZGRjMWVkMGUxZjJkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVu
dHMvdG91Y2gvZW11bGF0ZS10b3VjaC1ldmVudHMuaHRtbApAQCAtMCwwICsxLDEwNyBAQAorPCFE
T0NUWVBFIGh0bWw+IAorPGh0bWw+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+
Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisgICAgdmFyIGRpdiA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgIGRpdi5pZCA9ICJ0b3VjaHRhcmdldCI7Cisg
ICAgZGl2LnN0eWxlLndpZHRoID0gIjEwMHB4IjsKKyAgICBkaXYuc3R5bGUuaGVpZ2h0ID0gIjEw
MHB4IjsKKyAgICBkaXYuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gImJsdWUiOworCisgICAgdmFy
IGxhc3RFdmVudCA9IG51bGw7CisgICAgdmFyIHRvdWNoRXZlbnRzUmVjZWl2ZWQgPSAwOworICAg
IHZhciBFWFBFQ1RFRF9UT1VDSF9FVkVOVFNfVE9UQUwgPSAzOworCisgICAgZnVuY3Rpb24gdG91
Y2hFdmVudENhbGxiYWNrKCkgeworICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7Cisg
ICAgICAgICAgICBsYXN0RXZlbnQgPSBldmVudDsKKyAgICAgICAgICAgIHZlcmlmeVRvdWNoKHRv
dWNoRXZlbnRzUmVjZWl2ZWQrKyk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgZGVidWco
ZXZlbnQudHlwZSk7CisKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlciAm
JiB0b3VjaEV2ZW50c1JlY2VpdmVkID09IEVYUEVDVEVEX1RPVUNIX0VWRU5UU19UT1RBTCkgewor
ICAgICAgICAgICAgZGVidWcoJzxiciAvPjxzcGFuIGNsYXNzPSJwYXNzIj5URVNUIENPTVBMRVRF
PC9zcGFuPicpOworICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgp
OworICAgICAgICB9CisgICAgfQorCisgICAgZGl2LmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoc3Rh
cnQiLCB0b3VjaEV2ZW50Q2FsbGJhY2ssIGZhbHNlKTsKKyAgICBkaXYuYWRkRXZlbnRMaXN0ZW5l
cigidG91Y2htb3ZlIiwgdG91Y2hFdmVudENhbGxiYWNrLCBmYWxzZSk7CisgICAgZGl2LmFkZEV2
ZW50TGlzdGVuZXIoInRvdWNoZW5kIiwgdG91Y2hFdmVudENhbGxiYWNrLCBmYWxzZSk7CisgICAg
ZG9jdW1lbnQuYm9keS5pbnNlcnRCZWZvcmUoZGl2LCBkb2N1bWVudC5ib2R5LmZpcnN0Q2hpbGQp
OworCisgICAgZnVuY3Rpb24gdmVyaWZ5VG91Y2hFdmVudCh0eXBlLCB0b3RhbFRvdWNoQ291bnQs
IGNoYW5nZWRUb3VjaENvdW50LCB0YXJnZXRUb3VjaENvdW50KQorICAgIHsKKyAgICAgICAgc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCJsYXN0RXZlbnQudHlwZSIsIHR5cGUpOworICAgICAgICBzaG91
bGRCZSgibGFzdEV2ZW50LnRvdWNoZXMubGVuZ3RoIiwgdG90YWxUb3VjaENvdW50LnRvU3RyaW5n
KCkpOworICAgICAgICBzaG91bGRCZSgibGFzdEV2ZW50LmNoYW5nZWRUb3VjaGVzLmxlbmd0aCIs
IGNoYW5nZWRUb3VjaENvdW50LnRvU3RyaW5nKCkpOworICAgICAgICBzaG91bGRCZSgibGFzdEV2
ZW50LnRhcmdldFRvdWNoZXMubGVuZ3RoIiwgdGFyZ2V0VG91Y2hDb3VudC50b1N0cmluZygpKTsK
KyAgICAgICAgc2hvdWxkQmUoImxhc3RFdmVudC5wYWdlWCIsICIwIik7CisgICAgICAgIHNob3Vs
ZEJlKCJsYXN0RXZlbnQucGFnZVkiLCAiMCIpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHZlcmlm
eVRvdWNoUG9pbnQobGlzdCwgcG9pbnQsIHgsIHksIGlkKQorICAgIHsKKyAgICAgICAgc2hvdWxk
QmUoImxhc3RFdmVudC4iICsgbGlzdCArICJbIiArIHBvaW50ICsgIl0ucGFnZVgiLCB4LnRvU3Ry
aW5nKCkpOworICAgICAgICBzaG91bGRCZSgibGFzdEV2ZW50LiIgKyBsaXN0ICsgIlsiICsgcG9p
bnQgKyAiXS5wYWdlWSIsIHkudG9TdHJpbmcoKSk7CisgICAgICAgIHNob3VsZEJlKCJsYXN0RXZl
bnQuIiArIGxpc3QgKyAiWyIgKyBwb2ludCArICJdLmNsaWVudFgiLCB4LnRvU3RyaW5nKCkpOwor
ICAgICAgICBzaG91bGRCZSgibGFzdEV2ZW50LiIgKyBsaXN0ICsgIlsiICsgcG9pbnQgKyAiXS5j
bGllbnRZIiwgeS50b1N0cmluZygpKTsKKyAgICAgICAgc2hvdWxkQmUoImxhc3RFdmVudC4iICsg
bGlzdCArICJbIiArIHBvaW50ICsgIl0uaWRlbnRpZmllciIsIGlkLnRvU3RyaW5nKCkpOworICAg
IH0KKworICAgIGZ1bmN0aW9uIHZlcmlmeVRvdWNoKHdoaWNoKSB7CisgICAgICAgIHN3aXRjaCAo
d2hpY2gpIHsKKyAgICAgICAgY2FzZSAwOgorICAgICAgICAgICAgdmVyaWZ5VG91Y2hFdmVudCgi
dG91Y2hzdGFydCIsIDEsIDEsIDEpOworICAgICAgICAgICAgc2hvdWxkQmUoImxhc3RFdmVudC5z
aGlmdEtleSIsICJ0cnVlIik7CisgICAgICAgICAgICBzaG91bGRCZSgibGFzdEV2ZW50LmFsdEtl
eSIsICJ0cnVlIik7CisgICAgICAgICAgICBzaG91bGRCZSgibGFzdEV2ZW50LmN0cmxLZXkiLCAi
ZmFsc2UiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJsYXN0RXZlbnQubWV0YUtleSIsICJmYWxz
ZSIpOworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJsYXN0RXZlbnQudG91Y2hl
c1swXS50YXJnZXQuaWQiLCAidG91Y2h0YXJnZXQiKTsKKyAgICAgICAgICAgIHZlcmlmeVRvdWNo
UG9pbnQoInRvdWNoZXMiLCAwLCAxMCwgMTAsIDApOworICAgICAgICAgICAgdmVyaWZ5VG91Y2hQ
b2ludCgiY2hhbmdlZFRvdWNoZXMiLCAwLCAxMCwgMTAsIDApOworICAgICAgICAgICAgdmVyaWZ5
VG91Y2hQb2ludCgidGFyZ2V0VG91Y2hlcyIsIDAsIDEwLCAxMCwgMCk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSAxOgorICAgICAgICAgICAgdmVyaWZ5VG91Y2hFdmVudCgidG91
Y2htb3ZlIiwgMSwgMSwgMSk7CisgICAgICAgICAgICB2ZXJpZnlUb3VjaFBvaW50KCJ0b3VjaGVz
IiwgMCwgMjAsIDMwLCAwKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDI6Cisg
ICAgICAgICAgICB2ZXJpZnlUb3VjaEV2ZW50KCJ0b3VjaGVuZCIsIDAsIDEsIDApOworICAgICAg
ICAgICAgdmVyaWZ5VG91Y2hQb2ludCgiY2hhbmdlZFRvdWNoZXMiLCAwLCAyMCwgMzAsIDApOwor
ICAgICAgICAgICAgc2hvdWxkQmUoImxhc3RFdmVudC5zaGlmdEtleSIsICJmYWxzZSIpOworICAg
ICAgICAgICAgc2hvdWxkQmUoImxhc3RFdmVudC5hbHRLZXkiLCAidHJ1ZSIpOworICAgICAgICAg
ICAgc2hvdWxkQmUoImxhc3RFdmVudC5jdHJsS2V5IiwgInRydWUiKTsKKyAgICAgICAgICAgIHNo
b3VsZEJlKCJsYXN0RXZlbnQubWV0YUtleSIsICJmYWxzZSIpOworICAgICAgICAgICAgYnJlYWs7
CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoIldyb25nIG51bWJl
ciBvZiB0b3VjaCBldmVudHMhICgiICsgd2hpY2ggKyAiKSIpOworICAgICAgICB9CisgICAgfQor
CisgICAgZnVuY3Rpb24gbW91c2VFdmVudFNlcXVlbmNlKCkKKyAgICB7CisgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlTW92ZVRvKDEwLCAxMCk7CisgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93
bigwLCBbInNoaWZ0S2V5IiwgImFsdEtleSJdKTsKKyAgICAgICAgZXZlbnRTZW5kZXIubW91c2VN
b3ZlVG8oMjAsIDMwKTsKKyAgICAgICAgZXZlbnRTZW5kZXIubW91c2VVcCgwLCBbImFsdEtleSIs
ICJjdHJsS2V5Il0pOworICAgIH0KKworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKworICAg
IGlmICh3aW5kb3cuZXZlbnRTZW5kZXIgJiYgd2luZG93LmludGVybmFscyAmJiB3aW5kb3cuaW50
ZXJuYWxzLnNldHRpbmdzKSB7CisgICAgICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIHNpbmds
ZSB0b3VjaCBldmVudCBlbXVsYXRpb24gdXNpbmcgbW91c2UgZXZlbnRzLiIpOworCisgICAgICAg
IHdpbmRvdy5ldmVudFNlbmRlci5kcmFnTW9kZSA9IGZhbHNlOworICAgICAgICB3aW5kb3cuaW50
ZXJuYWxzLnNldHRpbmdzLnNldFRvdWNoRXZlbnRFbXVsYXRpb25FbmFibGVkKHRydWUpOworICAg
ICAgICBtb3VzZUV2ZW50U2VxdWVuY2UoKTsKKyAgICB9IGVsc2UKKyAgICAgICAgZGVidWcoIlRo
aXMgdGVzdCByZXF1aXJlcyBEdW1wUmVuZGVyVHJlZS4gVGFwIG9uIHRoZSBibHVlIHJlY3QgdG8g
bG9nLiIpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124928</attachid>
            <date>2012-02-01 04:24:07 -0800</date>
            <delta_ts>2012-02-02 22:26:04 -0800</delta_ts>
            <desc>[PATCH] more comments addressed</desc>
            <filename>bug-77105-20120201162405.patch</filename>
            <type>text/plain</type>
            <size>20035</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2MzQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjI0MWQyOWY4ZDhkZjdh
MTQwYmYyMGI5NjQ1M2NmMTBlZmUxNTVkZC4uMWExOTE2ZTQ0ZjBlOGI1MDNlMzdhMGIwN2ZjNmVi
OGQ3Mzk0MmVjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDEyLTAxLTI3ICBBbGV4
YW5kZXIgUGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW1wbGVtZW50
IHRvdWNoIGV2ZW50IGVtdWxhdGlvbiBpbiB0aGUgV2ViQ29yZSBsYXllcgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzcxMDUKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGNoYW5nZSBlc3NlbnRpYWxs
eSBtYXBzIG1vdXNlIGV2ZW50cyBpbnRvIHNpbmdsZS10b3VjaCBldmVudHMgaW4gdGhlIGZvbGxv
d2luZyB3YXk6CisgICAgICAgIC0gbW91c2Vkb3duIC0+IHRvdWNoc3RhcnQKKyAgICAgICAgLSBt
b3VzZXVwIC0+IHRvdWNoZW5kCisgICAgICAgIC0gbW91c2Vtb3ZlIC0+IHRvdWNobW92ZSAoYmV0
d2VlbiBtb3VzZWRvd24gYW5kIG1vdXNldXApLgorCisgICAgICAgIFRlc3Q6IGZhc3QvZXZlbnRz
L3RvdWNoL2VtdWxhdGUtdG91Y2gtZXZlbnRzLmh0bWwKKworICAgICAgICAqIHBhZ2UvRXZlbnRI
YW5kbGVyLmNwcDoKKyAgICAgICAgKFN5bnRoZXRpY1RvdWNoUG9pbnQpOiBBIHN5bnRoZXRpYyB0
b3VjaCBwb2ludCBidWlsdCBmcm9tIFBsYXRmb3JtTW91c2VFdmVudC4KKyAgICAgICAgKFdlYkNv
cmU6OlN5bnRoZXRpY1RvdWNoUG9pbnQ6OlN5bnRoZXRpY1RvdWNoUG9pbnQpOgorICAgICAgICAo
U3ludGhldGljU2luZ2xlVG91Y2hFdmVudCk6IEEgc3ludGhldGljIHRvdWNoIHBvaW50IGV2ZW50
IGJ1aWx0IGZyb20gUGxhdGZvcm1Nb3VzZUV2ZW50LgorICAgICAgICAoV2ViQ29yZTo6U3ludGhl
dGljU2luZ2xlVG91Y2hFdmVudDo6U3ludGhldGljU2luZ2xlVG91Y2hFdmVudCk6CisgICAgICAg
IChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50KTogSW52b2tl
IG1heWJlRGlzcGF0Y2hTeW50aGV0aWNUb3VjaEV2ZW50KCkgYW5kIGJhaWwgb3V0IGlmIG5lY2Vz
c2FyeS4KKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2
ZW50KTogSW52b2tlIG1heWJlRGlzcGF0Y2hTeW50aGV0aWNUb3VjaEV2ZW50KCkgYW5kIGJhaWwg
b3V0IGlmIG5lY2Vzc2FyeS4KKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6bW91c2VN
b3ZlZCk6IEludm9rZSBtYXliZURpc3BhdGNoU3ludGhldGljVG91Y2hFdmVudCgpIGFuZCBiYWls
IG91dCBpZiBuZWNlc3NhcnkuCisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmRpc3Bh
dGNoU3ludGhldGljVG91Y2hFdmVudElmRW5hYmxlZCk6IERpc3BhdGNoIGEgc3ludGhldGljIHRv
dWNoIGV2ZW50IGlmIG5lY2Vzc2FyeS4KKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5oOiBB
ZGRlZCBuZXcgbWV0aG9kLgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3MuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2V0dGluZ3M6OlNldHRpbmdzKTogQWRkZWQgbV90b3VjaEV2ZW50RW11bGF0aW9u
RW5hYmxlZCBpbml0aWFsaXplci4KKyAgICAgICAgKiBwYWdlL1NldHRpbmdzLmg6IEFkZGVkIG1f
dG91Y2hFdmVudEVtdWxhdGlvbkVuYWJsZWQsIGdldHRlciwgYW5kIHNldHRlci4KKyAgICAgICAg
KFdlYkNvcmU6OlNldHRpbmdzOjpzZXRUb3VjaEV2ZW50RW11bGF0aW9uRW5hYmxlZCk6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6OmlzVG91Y2hFdmVudEVtdWxhdGlvbkVuYWJs
ZWQpOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVRvdWNoUG9pbnQuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtVG91Y2hQb2ludDo6UGxhdGZvcm1Ub3VjaFBvaW50KTog
VW5jb25kaXRpb25hbGx5IGNvbXBpbGUgdGhlIHBhcmFtZXRlcmxlc3MgY3Rvci4KKyAgICAgICAg
KiB0ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJu
YWxTZXR0aW5nczo6c2V0VG91Y2hFdmVudEVtdWxhdGlvbkVuYWJsZWQpOiBBZGRlZCBmb3IgdGVz
dGluZy4KKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaDogQWRkZWQgc2V0VG91
Y2hFdmVudEVtdWxhdGlvbkVuYWJsZWQoKSBmb3IgdGVzdGluZy4KKyAgICAgICAgKiB0ZXN0aW5n
L0ludGVybmFsU2V0dGluZ3MuaWRsOiBBZGRlZCBzZXRUb3VjaEV2ZW50RW11bGF0aW9uRW5hYmxl
ZCgpIGZvciB0ZXN0aW5nLgorCiAyMDEyLTAxLTMxICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5A
Z29vZ2xlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBET01EZWJ1Z2dlci5zZXRFdmVu
dExpc3RlbmVyQnJlYWtwb2ludCBzaG91bGQgYWNjZXB0IHJlZ3VsYXIgRE9NIGV2ZW50IG5hbWVz
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IDUwN2E5MTQxNjM0YzBkNmMz
ZTYyNTY3MjY5OGU2YmU4MDU0MTg0NmMuLmEzOWQ2ZDJjMmE3NWQ4MTMwMDk2YTE0MWMxOWYyMmY2
ZjA5YTkyNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTYwLDYgKzYw
LDcgQEAKICNpbmNsdWRlICJNb3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAiTW91c2VFdmVudFdpdGhI
aXRUZXN0UmVzdWx0cy5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUV2
ZW50LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1LZXlib2FyZEV2ZW50LmgiCiAjaW5jbHVkZSAiUGxh
dGZvcm1XaGVlbEV2ZW50LmgiCiAjaW5jbHVkZSAiUGx1Z2luRG9jdW1lbnQuaCIKQEAgLTE0Miw2
ICsxNDMsNzMgQEAgcHJpdmF0ZToKICAgICBDdXJzb3IgbV9jdXJzb3I7CiB9OwogCisjaWYgRU5B
QkxFKFRPVUNIX0VWRU5UUykKK2NsYXNzIFN5bnRoZXRpY1RvdWNoUG9pbnQgOiBwdWJsaWMgUGxh
dGZvcm1Ub3VjaFBvaW50IHsKK3B1YmxpYzoKKworICAgIC8vIFRoZSBkZWZhdWx0IHZhbHVlcyBh
cmUgYmFzZWQgb24gaHR0cDovL2R2Y3MudzMub3JnL2hnL3dlYmV2ZW50cy9yYXctZmlsZS90aXAv
dG91Y2hldmVudHMuaHRtbAorICAgIGV4cGxpY2l0IFN5bnRoZXRpY1RvdWNoUG9pbnQoY29uc3Qg
UGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCkKKyAgICB7CisgICAgICAgIGNvbnN0IHN0YXRpYyBp
bnQgaWREZWZhdWx0VmFsdWUgPSAwOworICAgICAgICBjb25zdCBzdGF0aWMgaW50IHJhZGl1c1lE
ZWZhdWx0VmFsdWUgPSAxOworICAgICAgICBjb25zdCBzdGF0aWMgaW50IHJhZGl1c1hEZWZhdWx0
VmFsdWUgPSAxOworICAgICAgICBjb25zdCBzdGF0aWMgZmxvYXQgcm90YXRpb25BbmdsZURlZmF1
bHRWYWx1ZSA9IDAuMGY7CisgICAgICAgIGNvbnN0IHN0YXRpYyBmbG9hdCBmb3JjZURlZmF1bHRW
YWx1ZSA9IDEuMGY7CisKKyAgICAgICAgbV9pZCA9IGlkRGVmYXVsdFZhbHVlOyAvLyBUaGVyZSBp
cyBvbmx5IG9uZSBhY3RpdmUgVG91Y2hQb2ludC4KKyAgICAgICAgbV9zY3JlZW5Qb3MgPSBldmVu
dC5nbG9iYWxQb3NpdGlvbigpOworICAgICAgICBtX3BvcyA9IGV2ZW50LnBvc2l0aW9uKCk7Cisg
ICAgICAgIG1fcmFkaXVzWSA9IHJhZGl1c1lEZWZhdWx0VmFsdWU7CisgICAgICAgIG1fcmFkaXVz
WCA9IHJhZGl1c1hEZWZhdWx0VmFsdWU7CisgICAgICAgIG1fcm90YXRpb25BbmdsZSA9IHJvdGF0
aW9uQW5nbGVEZWZhdWx0VmFsdWU7CisgICAgICAgIG1fZm9yY2UgPSBmb3JjZURlZmF1bHRWYWx1
ZTsKKworICAgICAgICBQbGF0Zm9ybUV2ZW50OjpUeXBlIHR5cGUgPSBldmVudC50eXBlKCk7Cisg
ICAgICAgIEFTU0VSVCh0eXBlID09IFBsYXRmb3JtRXZlbnQ6Ok1vdXNlTW92ZWQgfHwgdHlwZSA9
PSBQbGF0Zm9ybUV2ZW50OjpNb3VzZVByZXNzZWQgfHwgdHlwZSA9PSBQbGF0Zm9ybUV2ZW50OjpN
b3VzZVJlbGVhc2VkKTsKKworICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICAgICAgY2FzZSBQ
bGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkOgorICAgICAgICAgICAgbV9zdGF0ZSA9IFRvdWNoTW92
ZWQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBQbGF0Zm9ybUV2ZW50OjpNb3Vz
ZVByZXNzZWQ6CisgICAgICAgICAgICBtX3N0YXRlID0gVG91Y2hQcmVzc2VkOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgUGxhdGZvcm1FdmVudDo6TW91c2VSZWxlYXNlZDoKKyAg
ICAgICAgICAgIG1fc3RhdGUgPSBUb3VjaFJlbGVhc2VkOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorfTsKKworY2xhc3MgU3ludGhldGljU2lu
Z2xlVG91Y2hFdmVudCA6IHB1YmxpYyBQbGF0Zm9ybVRvdWNoRXZlbnQgeworcHVibGljOgorICAg
IGV4cGxpY2l0IFN5bnRoZXRpY1NpbmdsZVRvdWNoRXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2
ZW50JiBldmVudCkKKyAgICB7CisgICAgICAgIHN3aXRjaCAoZXZlbnQudHlwZSgpKSB7CisgICAg
ICAgIGNhc2UgUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZDoKKyAgICAgICAgICAgIG1fdHlwZSA9
IFRvdWNoTW92ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFBsYXRmb3JtRXZl
bnQ6Ok1vdXNlUHJlc3NlZDoKKyAgICAgICAgICAgIG1fdHlwZSA9IFRvdWNoU3RhcnQ7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBQbGF0Zm9ybUV2ZW50OjpNb3VzZVJlbGVhc2Vk
OgorICAgICAgICAgICAgbV90eXBlID0gVG91Y2hFbmQ7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICAgICAgbV90eXBlID0gTm9UeXBlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAg
ICAgICAgbV90aW1lc3RhbXAgPSBldmVudC50aW1lc3RhbXAoKTsKKyAgICAgICAgbV9tb2RpZmll
cnMgPSBldmVudC5tb2RpZmllcnMoKTsKKyAgICAgICAgbV90b3VjaFBvaW50cy5hcHBlbmQoU3lu
dGhldGljVG91Y2hQb2ludChldmVudCkpOworICAgIH0KK307CisjZW5kaWYKKwogc3RhdGljIGlu
bGluZSBib29sIHNjcm9sbE5vZGUoZmxvYXQgZGVsdGEsIFdoZWVsRXZlbnQ6OkdyYW51bGFyaXR5
IGdyYW51bGFyaXR5LCBTY3JvbGxEaXJlY3Rpb24gcG9zaXRpdmVEaXJlY3Rpb24sIFNjcm9sbERp
cmVjdGlvbiBuZWdhdGl2ZURpcmVjdGlvbiwgTm9kZSogbm9kZSwgTm9kZSoqIHN0b3BOb2RlKQog
ewogICAgIGlmICghZGVsdGEpCkBAIC03MzksNiArODA3LDEyIEBAIGJvb2wgRXZlbnRIYW5kbGVy
OjpoYW5kbGVNb3VzZVVwKGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGV2ZW50
KQogCiBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VSZWxlYXNlRXZlbnQoY29uc3QgTW91
c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgZXZlbnQpCiB7CisjaWYgRU5BQkxFKFRPVUNIX0VW
RU5UUykKKyAgICBib29sIGRlZmF1bHRQcmV2ZW50ZWQgPSBkaXNwYXRjaFN5bnRoZXRpY1RvdWNo
RXZlbnRJZkVuYWJsZWQoZXZlbnQuZXZlbnQoKSk7CisgICAgaWYgKGRlZmF1bHRQcmV2ZW50ZWQp
CisgICAgICAgIHJldHVybiB0cnVlOworI2VuZGlmCisKICAgICBpZiAobV9hdXRvc2Nyb2xsSW5Q
cm9ncmVzcykKICAgICAgICAgc3RvcEF1dG9zY3JvbGxUaW1lcigpOwogCkBAIC0xMzc1LDYgKzE0
NDksMTIgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVudChjb25zdCBQ
bGF0Zm9ybU1vdXNlRXZlbnQmIG1vdXNlRXZlbnQpCiB7CiAgICAgUmVmUHRyPEZyYW1lVmlldz4g
cHJvdGVjdG9yKG1fZnJhbWUtPnZpZXcoKSk7CiAKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQor
ICAgIGJvb2wgZGVmYXVsdFByZXZlbnRlZCA9IGRpc3BhdGNoU3ludGhldGljVG91Y2hFdmVudElm
RW5hYmxlZChtb3VzZUV2ZW50KTsKKyAgICBpZiAoZGVmYXVsdFByZXZlbnRlZCkKKyAgICAgICAg
cmV0dXJuIHRydWU7CisjZW5kaWYKKwogICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJ
bmRpY2F0b3IoRGVmaW5pdGVseVByb2Nlc3NpbmdVc2VyR2VzdHVyZSk7CiAKICAgICAvLyBGSVhN
RSAoYnVnIDY4MTg1KTogdGhpcyBjYWxsIHNob3VsZCBiZSBtYWRlIGF0IGFub3RoZXIgYWJzdHJh
Y3Rpb24gbGF5ZXIKQEAgLTE1NjEsNiArMTY0MSwxMyBAQCBib29sIEV2ZW50SGFuZGxlcjo6bW91
c2VNb3ZlZChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50KQogewogICAgIFJlZlB0cjxG
cmFtZVZpZXc+IHByb3RlY3RvcihtX2ZyYW1lLT52aWV3KCkpOwogCisjaWYgRU5BQkxFKFRPVUNI
X0VWRU5UUykKKyAgICAvLyBGSVhNRTogdGhpcyBzaG91bGQgYmUgbW92ZWQgZWxzZXdoZXJlIHRv
IGFsc28gYmUgYWJsZSB0byBkaXNwYXRjaCB0b3VjaGNhbmNlbCBldmVudHMuCisgICAgYm9vbCBk
ZWZhdWx0UHJldmVudGVkID0gZGlzcGF0Y2hTeW50aGV0aWNUb3VjaEV2ZW50SWZFbmFibGVkKGV2
ZW50KTsKKyAgICBpZiAoZGVmYXVsdFByZXZlbnRlZCkKKyAgICAgICAgcmV0dXJuIHRydWU7Cisj
ZW5kaWYKKwogICAgIEhpdFRlc3RSZXN1bHQgaG92ZXJlZE5vZGUgPSBIaXRUZXN0UmVzdWx0KExh
eW91dFBvaW50KCkpOwogICAgIGJvb2wgcmVzdWx0ID0gaGFuZGxlTW91c2VNb3ZlRXZlbnQoZXZl
bnQsICZob3ZlcmVkTm9kZSk7CiAKQEAgLTMzNTgsNyArMzQ0NSwyMSBAQCBib29sIEV2ZW50SGFu
ZGxlcjo6aGFuZGxlVG91Y2hFdmVudChjb25zdCBQbGF0Zm9ybVRvdWNoRXZlbnQmIGV2ZW50KQog
ICAgIHJldHVybiBkZWZhdWx0UHJldmVudGVkOwogfQogCitib29sIEV2ZW50SGFuZGxlcjo6ZGlz
cGF0Y2hTeW50aGV0aWNUb3VjaEV2ZW50SWZFbmFibGVkKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVu
dCYgZXZlbnQpCit7CisgICAgaWYgKCFtX2ZyYW1lLT5kb2N1bWVudCgpLT5zZXR0aW5ncygpLT5p
c1RvdWNoRXZlbnRFbXVsYXRpb25FbmFibGVkKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIFBsYXRmb3JtRXZlbnQ6OlR5cGUgZXZlbnRUeXBlID0gZXZlbnQudHlwZSgpOworICAgIGlm
IChldmVudFR5cGUgIT0gUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZCAmJiBldmVudFR5cGUgIT0g
UGxhdGZvcm1FdmVudDo6TW91c2VQcmVzc2VkICYmIGV2ZW50VHlwZSAhPSBQbGF0Zm9ybUV2ZW50
OjpNb3VzZVJlbGVhc2VkKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICBpZiAoZXZlbnRU
eXBlID09IFBsYXRmb3JtRXZlbnQ6Ok1vdXNlTW92ZWQgJiYgIW1fdG91Y2hQcmVzc2VkKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBTeW50aGV0aWNTaW5nbGVUb3VjaEV2ZW50IHRvdWNo
RXZlbnQoZXZlbnQpOworICAgIHJldHVybiBoYW5kbGVUb3VjaEV2ZW50KHRvdWNoRXZlbnQpOwor
fQogCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRs
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKaW5kZXggNTQ3YmZlNTdk
NWI5M2EwMWFlYzUzZTczMjA0ZWIyOTc2ZmNiNzc2ZS4uNzczM2EwZjY1MjY0MmJlOTY5OTY5NzU2
MDE0M2FlYjk1OTg4ZjdkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhh
bmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCkBAIC0yNjQs
NiArMjY0LDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBmYWtlTW91c2VNb3ZlRXZlbnRUaW1lckZp
cmVkKFRpbWVyPEV2ZW50SGFuZGxlcj4qKTsKICAgICB2b2lkIGNhbmNlbEZha2VNb3VzZU1vdmVF
dmVudCgpOwogCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICBib29sIGRpc3BhdGNoU3lu
dGhldGljVG91Y2hFdmVudElmRW5hYmxlZChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKKyNl
bmRpZgorCiAgICAgdm9pZCBpbnZhbGlkYXRlQ2xpY2soKTsKIAogICAgIE5vZGUqIG5vZGVVbmRl
ck1vdXNlKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCmluZGV4IDE4NjE2NjBiZGU3
MTUyYjYwZWVmZTk1ZmZkYzg4ZTIzYjgwNzlhNGUuLjc0ZmNkMDQwZWE3MWI2ZDdjYmUyMjhhM2Yy
ZTdkYTJjYzhkZmEzYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3Mu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCkBAIC0yMzksNiArMjM5
LDkgQEAgU2V0dGluZ3M6OlNldHRpbmdzKFBhZ2UqIHBhZ2UpCiAgICAgLCBtX3Njcm9sbGluZ0Nv
b3JkaW5hdG9yRW5hYmxlZChmYWxzZSkKICNlbmRpZgogICAgICwgbV9ub3RpZmljYXRpb25zRW5h
YmxlZCh0cnVlKQorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAgLCBtX3RvdWNoRXZlbnRF
bXVsYXRpb25FbmFibGVkKGZhbHNlKQorI2VuZGlmCiAgICAgLCBtX2xvYWRzSW1hZ2VzQXV0b21h
dGljYWxseVRpbWVyKHRoaXMsICZTZXR0aW5nczo6bG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5VGlt
ZXJGaXJlZCkKIHsKICAgICAvLyBBIEZyYW1lIG1heSBub3QgaGF2ZSBiZWVuIGNyZWF0ZWQgeWV0
LCBzbyB3ZSBpbml0aWFsaXplIHRoZSBBdG9taWNTdHJpbmcgCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1NldHRpbmdzLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgK
aW5kZXggOGU0ZDkxZDVjMDRmNTNkNjQxNTdlMDI1ZDFiMmI5MzRkNmQ0ZDY2Zi4uM2EzZmFlYTQz
YzM0Nzc4OGE3Yjk0NmI5OGM2ODkxODBiMThmNTE0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9TZXR0aW5ncy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaApA
QCAtNTIwLDYgKzUyMCwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgc2V0
Tm90aWZpY2F0aW9uc0VuYWJsZWQoYm9vbCBlbmFibGVkKSB7IG1fbm90aWZpY2F0aW9uc0VuYWJs
ZWQgPSBlbmFibGVkOyB9CiAgICAgICAgIGJvb2wgbm90aWZpY2F0aW9uc0VuYWJsZWQoKSBjb25z
dCB7IHJldHVybiBtX25vdGlmaWNhdGlvbnNFbmFibGVkOyB9CiAKKyNpZiBFTkFCTEUoVE9VQ0hf
RVZFTlRTKQorICAgICAgICB2b2lkIHNldFRvdWNoRXZlbnRFbXVsYXRpb25FbmFibGVkKGJvb2wg
ZW5hYmxlZCkgeyBtX3RvdWNoRXZlbnRFbXVsYXRpb25FbmFibGVkID0gZW5hYmxlZDsgfQorICAg
ICAgICBib29sIGlzVG91Y2hFdmVudEVtdWxhdGlvbkVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBt
X3RvdWNoRXZlbnRFbXVsYXRpb25FbmFibGVkOyB9CisjZW5kaWYKKwogICAgIHByaXZhdGU6CiAg
ICAgICAgIFNldHRpbmdzKFBhZ2UqKTsKIApAQCAtNjY1LDYgKzY3MCwxMCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKICAgICAgICAgYm9vbCBtX25vdGlmaWNhdGlvbnNFbmFibGVkIDogMTsKIAor
I2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAgICAgIGJvb2wgbV90b3VjaEV2ZW50RW11bGF0
aW9uRW5hYmxlZCA6IDE7CisjZW5kaWYKKwogICAgICAgICBUaW1lcjxTZXR0aW5ncz4gbV9sb2Fk
c0ltYWdlc0F1dG9tYXRpY2FsbHlUaW1lcjsKICAgICAgICAgdm9pZCBsb2Fkc0ltYWdlc0F1dG9t
YXRpY2FsbHlUaW1lckZpcmVkKFRpbWVyPFNldHRpbmdzPiopOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVRvdWNoUG9pbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1BsYXRmb3JtVG91Y2hQb2ludC5oCmluZGV4IGQ2NmViMjNjODMxNzM2ZjRhNjdk
M2UzZmI5OWMxZWE3NzRiMDM3YjYuLmIxODE5MmQ5MGZlMjczNjZiYTg1Mjg2NDliZDQxOWVlMjIz
NmFkMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtVG91Y2hQ
b2ludC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtVG91Y2hQb2ludC5o
CkBAIC00NCw5ICs0NCwxMSBAQCBwdWJsaWM6CiAgICAgICAgIFRvdWNoU3RhdGVFbmQgLy8gUGxh
Y2Vob2xkZXI6IG11c3QgcmVtYWluIHRoZSBsYXN0IGl0ZW0uCiAgICAgfTsKIAorICAgIC8vIFRo
aXMgaXMgbmVjZXNzYXJ5IGZvciB1cyB0byBiZSBhYmxlIHRvIGJ1aWxkIHN5bnRoZXRpYyBldmVu
dHMuCisgICAgUGxhdGZvcm1Ub3VjaFBvaW50KCkgeyB9OworCiAjaWYgUExBVEZPUk0oUVQpCiAg
ICAgUGxhdGZvcm1Ub3VjaFBvaW50KGNvbnN0IFFUb3VjaEV2ZW50OjpUb3VjaFBvaW50Jik7Ci0g
ICAgUGxhdGZvcm1Ub3VjaFBvaW50KCkge307CiAjZWxpZiBQTEFURk9STShFRkwpCiAgICAgUGxh
dGZvcm1Ub3VjaFBvaW50KHVuc2lnbmVkIGlkLCBjb25zdCBJbnRQb2ludCYgd2luZG93UG9zLCBT
dGF0ZSk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxTZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3Mu
Y3BwCmluZGV4IGE0ZGJiNDRiZjI1OTczY2QxYTJlZTA1ZTBmOTMzZmE4OTg4NWI4YzEuLmMyYjA0
NWRjYTE0ZThlZWJhZjZmMGYwNDM3ZGQxZGI4NzFiMzFmZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcApAQCAtMjcxLDQgKzI3MSwxNSBAQCB2b2lkIElu
dGVybmFsU2V0dGluZ3M6OnNldFBlclRpbGVEcmF3aW5nRW5hYmxlZChib29sIGVuYWJsZWQsIEV4
Y2VwdGlvbkNvZGUmIGVjKQogICAgIHNldHRpbmdzKCktPnNldFBlclRpbGVEcmF3aW5nRW5hYmxl
ZChlbmFibGVkKTsKIH0KIAordm9pZCBJbnRlcm5hbFNldHRpbmdzOjpzZXRUb3VjaEV2ZW50RW11
bGF0aW9uRW5hYmxlZChib29sIGVuYWJsZWQsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworI2lmIEVO
QUJMRShUT1VDSF9FVkVOVFMpCisgICAgSW50ZXJuYWxTZXR0aW5nc0d1YXJkRm9yU2V0dGluZ3Mo
KTsKKyAgICBzZXR0aW5ncygpLT5zZXRUb3VjaEV2ZW50RW11bGF0aW9uRW5hYmxlZChlbmFibGVk
KTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGVuYWJsZWQpOworICAgIFVOVVNFRF9QQVJBTShl
Yyk7CisjZW5kaWYKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbFNldHRpbmdzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGlu
Z3MuaAppbmRleCBiZTkzMjhlZTcxNGEzYTJiOTAwZjExYjhkNGFhOTVjYTRhMThlNmNkLi42NDgw
MDkyNmM0ZDBmMWNjNGFhMzEyZGUxMDA1YmRhOTVjYzYwOGUzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaApAQCAtNjQsNiArNjQsNyBAQCBwdWJsaWM6CiAgICAg
ZmxvYXQgcGFnZVNjYWxlRmFjdG9yKEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIHNldFBhZ2VT
Y2FsZUZhY3RvcihmbG9hdCBzY2FsZUZhY3RvciwgaW50IHgsIGludCB5LCBFeGNlcHRpb25Db2Rl
Jik7CiAgICAgdm9pZCBzZXRQZXJUaWxlRHJhd2luZ0VuYWJsZWQoYm9vbCBlbmFibGVkLCBFeGNl
cHRpb25Db2RlJik7CisgICAgdm9pZCBzZXRUb3VjaEV2ZW50RW11bGF0aW9uRW5hYmxlZChib29s
IGVuYWJsZWQsIEV4Y2VwdGlvbkNvZGUmKTsKIAogcHJpdmF0ZToKICAgICBJbnRlcm5hbFNldHRp
bmdzKEZyYW1lKiwgSW50ZXJuYWxTZXR0aW5ncyogb2xkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFsU2V0dGluZ3MuaWRsCmluZGV4IGMyZjViMmFjNzc1NDNkNTQzYTRmYWQ3YWVh
ZjJiMzBmZjY4ZDQ4ZmIuLjAzNjAwODM4NGVlYzE3NmY3NTgzZGJkMDllNjEwMGJlMmI2ODc4Nzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5pZGwK
KysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmlkbApAQCAtNDQs
NiArNDQsNyBAQCBtb2R1bGUgd2luZG93IHsKICAgICAgICAgYm9vbGVhbiB1bmlmaWVkVGV4dENo
ZWNraW5nRW5hYmxlZCgpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKICAgICAgICAgZmxvYXQgcGFn
ZVNjYWxlRmFjdG9yKCkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAgICAgICAgIHZvaWQgc2V0UGFn
ZVNjYWxlRmFjdG9yKGluIGZsb2F0IHNjYWxlRmFjdG9yLCBpbiBsb25nIHgsIGluIGxvbmcgeSkg
cmFpc2VzKERPTUV4Y2VwdGlvbik7CisgICAgICAgIHZvaWQgc2V0VG91Y2hFdmVudEVtdWxhdGlv
bkVuYWJsZWQoaW4gYm9vbGVhbiBlbmFibGVkKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICAgICB9
OwogfQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKaW5kZXggMDE5ODM0YjAzZTE3MjdhM2M4MjAxOTQzMmM1ODA2MDA3MWU4MmU4Ny4u
NjVmZWEyODEwYmQ4OGRjNWQwNzg4YjU4Yjg3OWJiZWZkNzBmOGFmYiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDEzIEBACisyMDEyLTAxLTI3ICBBbGV4YW5kZXIgUGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgSW1wbGVtZW50IHRvdWNoIGV2ZW50IGVtdWxhdGlvbiBpbiB0aGUgV2Vi
Q29yZSBsYXllcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NzcxMDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIGZhc3QvZXZlbnRzL3RvdWNoL2VtdWxhdGUtdG91Y2gtZXZlbnRzLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvdG91Y2gvZW11bGF0ZS10b3VjaC1ldmVudHMu
aHRtbDogQWRkZWQuCisKIDIwMTItMDEtMzEgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBp
Z2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIEdUSyBnYXJkZW5pbmcuCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9lbXVsYXRlLXRvdWNoLWV2ZW50cy1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9lbXVsYXRlLXRvdWNo
LWV2ZW50cy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGNmODI2ZTNiOTEwMTU3ZDNkNzllZWVk
NmFjMzQzZjI2NTljZjIwOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZl
bnRzL3RvdWNoL2VtdWxhdGUtdG91Y2gtZXZlbnRzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDYx
IEBACitUaGlzIHRlc3RzIHNpbmdsZSB0b3VjaCBldmVudCBlbXVsYXRpb24gdXNpbmcgbW91c2Ug
ZXZlbnRzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1l
c3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBsYXN0RXZlbnQu
dHlwZSBpcyAidG91Y2hzdGFydCIKK1BBU1MgbGFzdEV2ZW50LnRvdWNoZXMubGVuZ3RoIGlzIDEK
K1BBU1MgbGFzdEV2ZW50LmNoYW5nZWRUb3VjaGVzLmxlbmd0aCBpcyAxCitQQVNTIGxhc3RFdmVu
dC50YXJnZXRUb3VjaGVzLmxlbmd0aCBpcyAxCitQQVNTIGxhc3RFdmVudC5wYWdlWCBpcyAwCitQ
QVNTIGxhc3RFdmVudC5wYWdlWSBpcyAwCitQQVNTIGxhc3RFdmVudC5zaGlmdEtleSBpcyB0cnVl
CitQQVNTIGxhc3RFdmVudC5hbHRLZXkgaXMgdHJ1ZQorUEFTUyBsYXN0RXZlbnQuY3RybEtleSBp
cyBmYWxzZQorUEFTUyBsYXN0RXZlbnQubWV0YUtleSBpcyBmYWxzZQorUEFTUyBsYXN0RXZlbnQu
dG91Y2hlc1swXS50YXJnZXQuaWQgaXMgInRvdWNodGFyZ2V0IgorUEFTUyBsYXN0RXZlbnQudG91
Y2hlc1swXS5wYWdlWCBpcyAxMAorUEFTUyBsYXN0RXZlbnQudG91Y2hlc1swXS5wYWdlWSBpcyAx
MAorUEFTUyBsYXN0RXZlbnQudG91Y2hlc1swXS5jbGllbnRYIGlzIDEwCitQQVNTIGxhc3RFdmVu
dC50b3VjaGVzWzBdLmNsaWVudFkgaXMgMTAKK1BBU1MgbGFzdEV2ZW50LnRvdWNoZXNbMF0uaWRl
bnRpZmllciBpcyAwCitQQVNTIGxhc3RFdmVudC5jaGFuZ2VkVG91Y2hlc1swXS5wYWdlWCBpcyAx
MAorUEFTUyBsYXN0RXZlbnQuY2hhbmdlZFRvdWNoZXNbMF0ucGFnZVkgaXMgMTAKK1BBU1MgbGFz
dEV2ZW50LmNoYW5nZWRUb3VjaGVzWzBdLmNsaWVudFggaXMgMTAKK1BBU1MgbGFzdEV2ZW50LmNo
YW5nZWRUb3VjaGVzWzBdLmNsaWVudFkgaXMgMTAKK1BBU1MgbGFzdEV2ZW50LmNoYW5nZWRUb3Vj
aGVzWzBdLmlkZW50aWZpZXIgaXMgMAorUEFTUyBsYXN0RXZlbnQudGFyZ2V0VG91Y2hlc1swXS5w
YWdlWCBpcyAxMAorUEFTUyBsYXN0RXZlbnQudGFyZ2V0VG91Y2hlc1swXS5wYWdlWSBpcyAxMAor
UEFTUyBsYXN0RXZlbnQudGFyZ2V0VG91Y2hlc1swXS5jbGllbnRYIGlzIDEwCitQQVNTIGxhc3RF
dmVudC50YXJnZXRUb3VjaGVzWzBdLmNsaWVudFkgaXMgMTAKK1BBU1MgbGFzdEV2ZW50LnRhcmdl
dFRvdWNoZXNbMF0uaWRlbnRpZmllciBpcyAwCitQQVNTIGxhc3RFdmVudC50eXBlIGlzICJ0b3Vj
aG1vdmUiCitQQVNTIGxhc3RFdmVudC50b3VjaGVzLmxlbmd0aCBpcyAxCitQQVNTIGxhc3RFdmVu
dC5jaGFuZ2VkVG91Y2hlcy5sZW5ndGggaXMgMQorUEFTUyBsYXN0RXZlbnQudGFyZ2V0VG91Y2hl
cy5sZW5ndGggaXMgMQorUEFTUyBsYXN0RXZlbnQucGFnZVggaXMgMAorUEFTUyBsYXN0RXZlbnQu
cGFnZVkgaXMgMAorUEFTUyBsYXN0RXZlbnQudG91Y2hlc1swXS5wYWdlWCBpcyAyMAorUEFTUyBs
YXN0RXZlbnQudG91Y2hlc1swXS5wYWdlWSBpcyAzMAorUEFTUyBsYXN0RXZlbnQudG91Y2hlc1sw
XS5jbGllbnRYIGlzIDIwCitQQVNTIGxhc3RFdmVudC50b3VjaGVzWzBdLmNsaWVudFkgaXMgMzAK
K1BBU1MgbGFzdEV2ZW50LnRvdWNoZXNbMF0uaWRlbnRpZmllciBpcyAwCitQQVNTIGxhc3RFdmVu
dC50eXBlIGlzICJ0b3VjaGVuZCIKK1BBU1MgbGFzdEV2ZW50LnRvdWNoZXMubGVuZ3RoIGlzIDAK
K1BBU1MgbGFzdEV2ZW50LmNoYW5nZWRUb3VjaGVzLmxlbmd0aCBpcyAxCitQQVNTIGxhc3RFdmVu
dC50YXJnZXRUb3VjaGVzLmxlbmd0aCBpcyAwCitQQVNTIGxhc3RFdmVudC5wYWdlWCBpcyAwCitQ
QVNTIGxhc3RFdmVudC5wYWdlWSBpcyAwCitQQVNTIGxhc3RFdmVudC5jaGFuZ2VkVG91Y2hlc1sw
XS5wYWdlWCBpcyAyMAorUEFTUyBsYXN0RXZlbnQuY2hhbmdlZFRvdWNoZXNbMF0ucGFnZVkgaXMg
MzAKK1BBU1MgbGFzdEV2ZW50LmNoYW5nZWRUb3VjaGVzWzBdLmNsaWVudFggaXMgMjAKK1BBU1Mg
bGFzdEV2ZW50LmNoYW5nZWRUb3VjaGVzWzBdLmNsaWVudFkgaXMgMzAKK1BBU1MgbGFzdEV2ZW50
LmNoYW5nZWRUb3VjaGVzWzBdLmlkZW50aWZpZXIgaXMgMAorUEFTUyBsYXN0RXZlbnQuc2hpZnRL
ZXkgaXMgZmFsc2UKK1BBU1MgbGFzdEV2ZW50LmFsdEtleSBpcyB0cnVlCitQQVNTIGxhc3RFdmVu
dC5jdHJsS2V5IGlzIHRydWUKK1BBU1MgbGFzdEV2ZW50Lm1ldGFLZXkgaXMgZmFsc2UKK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9lbXVsYXRlLXRvdWNoLWV2ZW50cy5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZW11bGF0ZS10b3VjaC1ldmVudHMuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40NjUxZjZkMjcxMWEwMDRmZWJlZDE0OWMzNTdjZWZhZWJiODU1Y2Y3Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZW11bGF0ZS10
b3VjaC1ldmVudHMuaHRtbApAQCAtMCwwICsxLDk4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorPGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxkaXYgaWQ9InRvdWNodGFyZ2V0IiBzdHlsZT0id2lkdGg6IDEwMHB4OyBo
ZWlnaHQ6IDEwMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiBibHVlIj48L2Rpdj4KKzxwIGlkPSJkZXNj
cmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgordmFyIGRp
diA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0b3VjaHRhcmdldCIpOwordmFyIGxhc3RFdmVu
dCA9IG51bGw7Cit2YXIgdG91Y2hFdmVudHNSZWNlaXZlZCA9IDA7Cit2YXIgRVhQRUNURURfVE9V
Q0hfRVZFTlRTX1RPVEFMID0gMzsKKworZnVuY3Rpb24gdG91Y2hFdmVudENhbGxiYWNrKCkgewor
ICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgbGFzdEV2ZW50ID0gZXZlbnQ7
CisgICAgICAgIHZlcmlmeVRvdWNoKHRvdWNoRXZlbnRzUmVjZWl2ZWQrKyk7CisgICAgfSBlbHNl
CisgICAgICAgIGRlYnVnKGV2ZW50LnR5cGUpOworCisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlciAmJiB0b3VjaEV2ZW50c1JlY2VpdmVkID09IEVYUEVDVEVEX1RPVUNIX0VWRU5U
U19UT1RBTCkKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK2Rpdi5hZGRFdmVudExpc3Rl
bmVyKCJ0b3VjaHN0YXJ0IiwgdG91Y2hFdmVudENhbGxiYWNrLCBmYWxzZSk7CitkaXYuYWRkRXZl
bnRMaXN0ZW5lcigidG91Y2htb3ZlIiwgdG91Y2hFdmVudENhbGxiYWNrLCBmYWxzZSk7CitkaXYu
YWRkRXZlbnRMaXN0ZW5lcigidG91Y2hlbmQiLCB0b3VjaEV2ZW50Q2FsbGJhY2ssIGZhbHNlKTsK
KworZnVuY3Rpb24gdmVyaWZ5VG91Y2hFdmVudCh0eXBlLCB0b3RhbFRvdWNoQ291bnQsIGNoYW5n
ZWRUb3VjaENvdW50LCB0YXJnZXRUb3VjaENvdW50KQoreworICAgIHNob3VsZEJlRXF1YWxUb1N0
cmluZygibGFzdEV2ZW50LnR5cGUiLCB0eXBlKTsKKyAgICBzaG91bGRCZSgibGFzdEV2ZW50LnRv
dWNoZXMubGVuZ3RoIiwgdG90YWxUb3VjaENvdW50LnRvU3RyaW5nKCkpOworICAgIHNob3VsZEJl
KCJsYXN0RXZlbnQuY2hhbmdlZFRvdWNoZXMubGVuZ3RoIiwgY2hhbmdlZFRvdWNoQ291bnQudG9T
dHJpbmcoKSk7CisgICAgc2hvdWxkQmUoImxhc3RFdmVudC50YXJnZXRUb3VjaGVzLmxlbmd0aCIs
IHRhcmdldFRvdWNoQ291bnQudG9TdHJpbmcoKSk7CisgICAgc2hvdWxkQmUoImxhc3RFdmVudC5w
YWdlWCIsICIwIik7CisgICAgc2hvdWxkQmUoImxhc3RFdmVudC5wYWdlWSIsICIwIik7Cit9CisK
K2Z1bmN0aW9uIHZlcmlmeVRvdWNoUG9pbnQobGlzdCwgcG9pbnQsIHgsIHksIGlkKQoreworICAg
IHNob3VsZEJlKCJsYXN0RXZlbnQuIiArIGxpc3QgKyAiWyIgKyBwb2ludCArICJdLnBhZ2VYIiwg
eC50b1N0cmluZygpKTsKKyAgICBzaG91bGRCZSgibGFzdEV2ZW50LiIgKyBsaXN0ICsgIlsiICsg
cG9pbnQgKyAiXS5wYWdlWSIsIHkudG9TdHJpbmcoKSk7CisgICAgc2hvdWxkQmUoImxhc3RFdmVu
dC4iICsgbGlzdCArICJbIiArIHBvaW50ICsgIl0uY2xpZW50WCIsIHgudG9TdHJpbmcoKSk7Cisg
ICAgc2hvdWxkQmUoImxhc3RFdmVudC4iICsgbGlzdCArICJbIiArIHBvaW50ICsgIl0uY2xpZW50
WSIsIHkudG9TdHJpbmcoKSk7CisgICAgc2hvdWxkQmUoImxhc3RFdmVudC4iICsgbGlzdCArICJb
IiArIHBvaW50ICsgIl0uaWRlbnRpZmllciIsIGlkLnRvU3RyaW5nKCkpOworfQorCitmdW5jdGlv
biB2ZXJpZnlUb3VjaCh3aGljaCkgeworICAgIHN3aXRjaCAod2hpY2gpIHsKKyAgICBjYXNlIDA6
CisgICAgICAgIHZlcmlmeVRvdWNoRXZlbnQoInRvdWNoc3RhcnQiLCAxLCAxLCAxKTsKKyAgICAg
ICAgc2hvdWxkQmUoImxhc3RFdmVudC5zaGlmdEtleSIsICJ0cnVlIik7CisgICAgICAgIHNob3Vs
ZEJlKCJsYXN0RXZlbnQuYWx0S2V5IiwgInRydWUiKTsKKyAgICAgICAgc2hvdWxkQmUoImxhc3RF
dmVudC5jdHJsS2V5IiwgImZhbHNlIik7CisgICAgICAgIHNob3VsZEJlKCJsYXN0RXZlbnQubWV0
YUtleSIsICJmYWxzZSIpOworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImxhc3RFdmVu
dC50b3VjaGVzWzBdLnRhcmdldC5pZCIsICJ0b3VjaHRhcmdldCIpOworICAgICAgICB2ZXJpZnlU
b3VjaFBvaW50KCJ0b3VjaGVzIiwgMCwgMTAsIDEwLCAwKTsKKyAgICAgICAgdmVyaWZ5VG91Y2hQ
b2ludCgiY2hhbmdlZFRvdWNoZXMiLCAwLCAxMCwgMTAsIDApOworICAgICAgICB2ZXJpZnlUb3Vj
aFBvaW50KCJ0YXJnZXRUb3VjaGVzIiwgMCwgMTAsIDEwLCAwKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSAxOgorICAgICAgICB2ZXJpZnlUb3VjaEV2ZW50KCJ0b3VjaG1vdmUiLCAxLCAxLCAx
KTsKKyAgICAgICAgdmVyaWZ5VG91Y2hQb2ludCgidG91Y2hlcyIsIDAsIDIwLCAzMCwgMCk7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgMjoKKyAgICAgICAgdmVyaWZ5VG91Y2hFdmVudCgidG91
Y2hlbmQiLCAwLCAxLCAwKTsKKyAgICAgICAgdmVyaWZ5VG91Y2hQb2ludCgiY2hhbmdlZFRvdWNo
ZXMiLCAwLCAyMCwgMzAsIDApOworICAgICAgICBzaG91bGRCZSgibGFzdEV2ZW50LnNoaWZ0S2V5
IiwgImZhbHNlIik7CisgICAgICAgIHNob3VsZEJlKCJsYXN0RXZlbnQuYWx0S2V5IiwgInRydWUi
KTsKKyAgICAgICAgc2hvdWxkQmUoImxhc3RFdmVudC5jdHJsS2V5IiwgInRydWUiKTsKKyAgICAg
ICAgc2hvdWxkQmUoImxhc3RFdmVudC5tZXRhS2V5IiwgImZhbHNlIik7CisgICAgICAgIGJyZWFr
OworICAgIGRlZmF1bHQ6CisgICAgICAgIHRlc3RGYWlsZWQoIldyb25nIG51bWJlciBvZiB0b3Vj
aCBldmVudHMhICgiICsgd2hpY2ggKyAiKSIpOworICAgIH0KK30KKworZnVuY3Rpb24gbW91c2VF
dmVudFNlcXVlbmNlKCkKK3sKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbygxMCwgMTApOwor
ICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigwLCBbInNoaWZ0S2V5IiwgImFsdEtleSJdKTsKKyAg
ICBldmVudFNlbmRlci5tb3VzZU1vdmVUbygyMCwgMzApOworICAgIGV2ZW50U2VuZGVyLm1vdXNl
VXAoMCwgWyJhbHRLZXkiLCAiY3RybEtleSJdKTsKK30KKworaWYgKHdpbmRvdy5ldmVudFNlbmRl
ciAmJiB3aW5kb3cuaW50ZXJuYWxzICYmIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3MpIHsKKyAg
ICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyBzaW5nbGUgdG91Y2ggZXZlbnQgZW11bGF0aW9uIHVz
aW5nIG1vdXNlIGV2ZW50cy4iKTsKKworICAgIHdpbmRvdy5ldmVudFNlbmRlci5kcmFnTW9kZSA9
IGZhbHNlOworICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKyAgICB3aW5kb3cuaW50
ZXJuYWxzLnNldHRpbmdzLnNldFRvdWNoRXZlbnRFbXVsYXRpb25FbmFibGVkKHRydWUpOworICAg
IG1vdXNlRXZlbnRTZXF1ZW5jZSgpOworfSBlbHNlCisgICAgZGVidWcoIlRoaXMgdGVzdCByZXF1
aXJlcyBEdW1wUmVuZGVyVHJlZS4gVGFwIG9uIHRoZSBibHVlIHJlY3QgdG8gbG9nLiIpOworPC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>
<flag name="review"
          id="126314"
          type_id="1"
          status="+"
          setter="rniwa"
    />
          </attachment>
      

    </bug>

</bugzilla>