<?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>115656</bug_id>
          
          <creation_ts>2013-05-06 09:54:36 -0700</creation_ts>
          <short_desc>Regression: Event#stopPropagation() does not halt bubbling for webkitTransitionEnd</short_desc>
          <delta_ts>2013-05-16 20:26:32 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>UI Events</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Major</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Matt Seeley">mattseeley</reporter>
          <assigned_to name="Alexis Menard (darktears)">menard</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>jchaffraix</cc>
    
    <cc>menard</cc>
    
    <cc>paulirish</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>885083</commentid>
    <comment_count>0</comment_count>
      <attachid>200713</attachid>
    <who name="Matt Seeley">mattseeley</who>
    <bug_when>2013-05-06 09:54:36 -0700</bug_when>
    <thetext>Created attachment 200713
Repro case

I couldn&apos;t find bugs with &apos;stopPropagation()&apos; using Quick Search. If this is a dupe please accept my apologies. I did not verify if the stopPropagation() behavior is broken for other event types.

Expected behavior:

A webkitTransitionEnd event handler on a parentNode should not be invoked by a descendants webkitTransitionEnd when the descendant has previously called stopPropagation().

Actual:

Calling stopPropagation() when the descendant is handling the event does not stop propagation. When the descendant is handling the event it is the first responder in the bubbling phase (target === currentTarget).

Notes and repro:

Nightly build r139829 [0] regressed support for stopping event propagation of transitionEnd events. Build r139728 [1] is the last good build. We spotted the bug in Chrome &gt;= 26.0.1410.43 (25.0.1364.160 works as expected) and back tracked it to WebKit nightly builds.

The attached repro case assigns the same handler function to a parent and child nodes. Next an animation is triggered on the child node. The first responding node (child) attempts to stop event propagation. This test passes when the test executes one time and target === currentTarget. Or, technically when the last handling node is also target === currentTarget yet this doesn&apos;t occur during bubbling. You get the idea.

Downloading the DMG, mounting in Finder, then running WebKit executable directly is fine. I haven&apos;t needed to install/remove.

* Close all open WebKit instances
* Open the repro attachment in the last good build
* Notice that the event handler is only invoked once (pass)
* Now open the repro attachment in the first bad build
* Notice the event handler is invoked twice (fail)

[0] First bad: http://builds.nightly.webkit.org/files/trunk/mac/WebKit-SVN-r139829.dmg
[1] Last good: http://builds.nightly.webkit.org/files/trunk/mac/WebKit-SVN-r139728.dmg</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885280</commentid>
    <comment_count>1</comment_count>
    <who name="Matt Seeley">mattseeley</who>
    <bug_when>2013-05-06 13:16:50 -0700</bug_when>
    <thetext>Downstream Chromium affected too: http://code.google.com/p/chromium/issues/detail?id=238379</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>888098</commentid>
    <comment_count>2</comment_count>
    <who name="Matt Seeley">mattseeley</who>
    <bug_when>2013-05-12 22:28:59 -0700</bug_when>
    <thetext>Updating the title to clearly indicate a regression.

Are there any blockers preventing confirmation and fix scheduling?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>888351</commentid>
    <comment_count>3</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2013-05-13 10:52:48 -0700</bug_when>
    <thetext>Regressed in http://trac.webkit.org/changeset/139762

Matt, does this break some important content?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>888363</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2013-05-13 11:05:55 -0700</bug_when>
    <thetext>&lt;rdar://problem/13876866&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>888579</commentid>
    <comment_count>5</comment_count>
    <who name="Matt Seeley">mattseeley</who>
    <bug_when>2013-05-13 16:43:39 -0700</bug_when>
    <thetext>Hi Simon, thanks for identifying the changeset.

The regression introduced several bugs into our HTML UIs which triggered work upon transition end. We worked around by comparing the event&apos;s target to currentTarget. These references are equal only when bubbling is at the originating element. The workaround is straightforward once identified.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>888886</commentid>
    <comment_count>6</comment_count>
      <attachid>201728</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2013-05-14 09:47:33 -0700</bug_when>
    <thetext>Created attachment 201728
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>888899</commentid>
    <comment_count>7</comment_count>
      <attachid>201728</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-05-14 10:16:17 -0700</bug_when>
    <thetext>Comment on attachment 201728
Patch

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

Looks good, needs more work on test coverage.

&gt; Source/WebCore/ChangeLog:15
&gt; +        Test: transitions/transition-end-event-prefixed-01.html

This test has insufficient coverage. We need to test coverage of all 9 of the things that are copied from the prefixed event to the original event. If I delete any one of the 9 from the “sync” function then the test should fail. If you can’t cover all 9 you should at least get as close as you can. The test will probably demonstrate that we don’t need to copy all 9, which is a good thing for us to know!

&gt; Source/WebCore/ChangeLog:19
&gt; +        (WebCore):

This bogus line should be removed.

&gt; Source/WebCore/dom/EventTarget.cpp:165
&gt; +static void syncEventAttributes(const Event* sourceEvent, Event* targetEvent)

The word “sync” sounds like a bidirectional operation with some kind of merging. I suggest a different name for this function that sounds directional. Maybe the word “propagate” or “copy” or “update”.

I’d maybe call this copyEventAttributesForPairedEvents, or something like that.

I don’t think sourceEvent and targetEvent are good names for the arguments because the word “target” has a specific name in the context of events.

It’s also non-obvious that this copies enough of the attributes. It seems this set is good enough for the transition end event, but is it good enough for all future events we might want to use this on?

&gt; Source/WebCore/dom/EventTarget.cpp:211
&gt; +    RefPtr&lt;Event&gt; prefixedEvent;

Why does this need to be defined outside the if statement? Is there some reason we need to keep it alive after the block it’s allocated and used in?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>888902</commentid>
    <comment_count>8</comment_count>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2013-05-14 10:23:29 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 201728 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=201728&amp;action=review
&gt; 
&gt; Looks good, needs more work on test coverage.
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:15
&gt; &gt; +        Test: transitions/transition-end-event-prefixed-01.html
&gt; 
&gt; This test has insufficient coverage. We need to test coverage of all 9 of the things that are copied from the prefixed event to the original event. If I delete any one of the 9 from the “sync” function then the test should fail. If you can’t cover all 9 you should at least get as close as you can. The test will probably demonstrate that we don’t need to copy all 9, which is a good thing for us to know!

Sure.

&gt; 
&gt; &gt; Source/WebCore/ChangeLog:19
&gt; &gt; +        (WebCore):
&gt; 
&gt; This bogus line should be removed.

Will do.

&gt; 
&gt; &gt; Source/WebCore/dom/EventTarget.cpp:165
&gt; &gt; +static void syncEventAttributes(const Event* sourceEvent, Event* targetEvent)
&gt; 
&gt; The word “sync” sounds like a bidirectional operation with some kind of merging. I suggest a different name for this function that sounds directional. Maybe the word “propagate” or “copy” or “update”.
&gt; 
&gt; I’d maybe call this copyEventAttributesForPairedEvents, or something like that.
&gt; 
&gt; I don’t think sourceEvent and targetEvent are good names for the arguments because the word “target” has a specific name in the context of events.
&gt; 
&gt; It’s also non-obvious that this copies enough of the attributes. It seems this set is good enough for the transition end event, but is it good enough for all future events we might want to use this on?

I can think of the AnimationEvents coming. But hopefully we&apos;ll avoid doing this prefixed mistake in the future. Let see if I can do something better.

&gt; 
&gt; &gt; Source/WebCore/dom/EventTarget.cpp:211
&gt; &gt; +    RefPtr&lt;Event&gt; prefixedEvent;
&gt; 
&gt; Why does this need to be defined outside the if statement? Is there some reason we need to keep it alive after the block it’s allocated and used in?

No leftover from a previous approach.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>888903</commentid>
    <comment_count>9</comment_count>
      <attachid>201728</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2013-05-14 10:25:05 -0700</bug_when>
    <thetext>Comment on attachment 201728
Patch

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

&gt;&gt;&gt; Source/WebCore/dom/EventTarget.cpp:165
&gt;&gt;&gt; +static void syncEventAttributes(const Event* sourceEvent, Event* targetEvent)
&gt;&gt; 
&gt;&gt; The word “sync” sounds like a bidirectional operation with some kind of merging. I suggest a different name for this function that sounds directional. Maybe the word “propagate” or “copy” or “update”.
&gt;&gt; 
&gt;&gt; I’d maybe call this copyEventAttributesForPairedEvents, or something like that.
&gt;&gt; 
&gt;&gt; I don’t think sourceEvent and targetEvent are good names for the arguments because the word “target” has a specific name in the context of events.
&gt;&gt; 
&gt;&gt; It’s also non-obvious that this copies enough of the attributes. It seems this set is good enough for the transition end event, but is it good enough for all future events we might want to use this on?
&gt; 
&gt; I can think of the AnimationEvents coming. But hopefully we&apos;ll avoid doing this prefixed mistake in the future. Let see if I can do something better.

I really think this should be a method on Event so that it is kept in sync with Event if it changes (this code will be around for a while as we phase out prefixed event support so it&apos;s probably good to get it right).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>888907</commentid>
    <comment_count>10</comment_count>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2013-05-14 10:27:09 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 201728 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=201728&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/WebCore/dom/EventTarget.cpp:165
&gt; &gt;&gt;&gt; +static void syncEventAttributes(const Event* sourceEvent, Event* targetEvent)
&gt; &gt;&gt; 
&gt; &gt;&gt; The word “sync” sounds like a bidirectional operation with some kind of merging. I suggest a different name for this function that sounds directional. Maybe the word “propagate” or “copy” or “update”.
&gt; &gt;&gt; 
&gt; &gt;&gt; I’d maybe call this copyEventAttributesForPairedEvents, or something like that.
&gt; &gt;&gt; 
&gt; &gt;&gt; I don’t think sourceEvent and targetEvent are good names for the arguments because the word “target” has a specific name in the context of events.
&gt; &gt;&gt; 
&gt; &gt;&gt; It’s also non-obvious that this copies enough of the attributes. It seems this set is good enough for the transition end event, but is it good enough for all future events we might want to use this on?
&gt; &gt; 
&gt; &gt; I can think of the AnimationEvents coming. But hopefully we&apos;ll avoid doing this prefixed mistake in the future. Let see if I can do something better.
&gt; 

In fact the syncEventAttributes only takes care of the Event base class attributes. The specific TransitionEndEvent attributes are handled with WebKitTransitionEvent::create(eventNames().webkitTransitionEndEvent, transitionEvent-&gt;propertyName(), transitionEvent-&gt;elapsedTime(), transitionEvent-&gt;pseudoElement()); when we create the new event.

&gt; I really think this should be a method on Event so that it is kept in sync with Event if it changes (this code will be around for a while as we phase out prefixed event support so it&apos;s probably good to get it right).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>888975</commentid>
    <comment_count>11</comment_count>
      <attachid>201742</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2013-05-14 12:31:11 -0700</bug_when>
    <thetext>Created attachment 201742
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>889038</commentid>
    <comment_count>12</comment_count>
      <attachid>201742</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-05-14 15:06:29 -0700</bug_when>
    <thetext>Comment on attachment 201742
Patch

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

&gt; Source/WebCore/dom/Event.cpp:169
&gt; +void Event::copyEventAttributes(Event* event) const
&gt; +{

Need a comment explaining why it’s OK to copy only the attributes in the Event base class, and not have this be a virtual function that works properly for classes derived from Event.

&gt; Source/WebCore/dom/Event.h:166
&gt; +    void copyEventAttributes(Event*) const;

It’s not obvious which direction this goes, even though there is const involved. Name should be different.

Perhaps copyEventAttributesTo. Or copyAttributesTo. No reason to repeat the class name. But more serious is the issue that this copies only base Event class attributes. You’d need something different if you wanted to copy all attributes.

&gt; Source/WebCore/dom/EventTarget.cpp:204
&gt; +        RefPtr&lt;Event&gt; prefixedEvent = createMatchingPrefixedEvent(event);

Maybe we need new design. A single event that can be dispatched twice with different event name rather than two events that we copy attributes between. Seems easier to get that design right.

&gt; LayoutTests/transitions/transition-end-event-prefixed-01.html:63
&gt; +        shouldBe(&quot;transitionEventContainer.type&quot;, &quot;transitionEventBox.type&quot;);
&gt; +        shouldBe(&quot;transitionEventContainer.bubbles&quot;, &quot;transitionEventBox.bubbles&quot;);
&gt; +        shouldBe(&quot;transitionEventContainer.timeStamp&quot;, &quot;transitionEventBox.timeStamp&quot;);
&gt; +        shouldBe(&quot;transitionEventContainer.cancelable&quot;, &quot;transitionEventBox.cancelable&quot;);
&gt; +        shouldBe(&quot;transitionEventContainer.srcElement&quot;, &quot;transitionEventBox.srcElement&quot;);
&gt; +        shouldBe(&quot;transitionEventContainer.returnValue&quot;, &quot;transitionEventBox.returnValue&quot;);
&gt; +        shouldBe(&quot;transitionEventContainer.cancelBubble&quot;, &quot;transitionEventBox.cancelBubble&quot;);
&gt; +        shouldBe(&quot;transitionEventContainer.defaultPrevented&quot;, &quot;transitionEventBox.defaultPrevented&quot;);
&gt; +        shouldBe(&quot;transitionEventContainer.target&quot;, &quot;transitionEventBox.target&quot;);
&gt; +        shouldBe(&quot;transitionEventContainer.currentTarget&quot;, &quot;testContainer&quot;);
&gt; +        // TransitionEnd event specific properties.
&gt; +        shouldBe(&quot;transitionEventContainer.pseudoElement&quot;, &quot;transitionEventBox.pseudoElement&quot;);
&gt; +        shouldBe(&quot;transitionEventContainer.elapsedTime&quot;, &quot;transitionEventBox.elapsedTime&quot;);
&gt; +        shouldBe(&quot;transitionEventContainer.propertyName&quot;, &quot;transitionEventBox.propertyName&quot;);

The fact that these are equal doesn’t prove anything, unless we change them all. They could just be equal by chance?

Another way of putting it is that we need 13 different FAIL when you run this test without first patching WebKit, otherwise the test doesn’t actually test the fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>889772</commentid>
    <comment_count>13</comment_count>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2013-05-16 05:29:04 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (From update of attachment 201742 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=201742&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/Event.cpp:169
&gt; &gt; +void Event::copyEventAttributes(Event* event) const
&gt; &gt; +{
&gt; 
&gt; Need a comment explaining why it’s OK to copy only the attributes in the Event base class, and not have this be a virtual function that works properly for classes derived from Event.
&gt; 
&gt; &gt; Source/WebCore/dom/Event.h:166
&gt; &gt; +    void copyEventAttributes(Event*) const;
&gt; 
&gt; It’s not obvious which direction this goes, even though there is const involved. Name should be different.
&gt; 
&gt; Perhaps copyEventAttributesTo. Or copyAttributesTo. No reason to repeat the class name. But more serious is the issue that this copies only base Event class attributes. You’d need something different if you wanted to copy all attributes.
&gt; 
&gt; &gt; Source/WebCore/dom/EventTarget.cpp:204
&gt; &gt; +        RefPtr&lt;Event&gt; prefixedEvent = createMatchingPrefixedEvent(event);
&gt; 
&gt; Maybe we need new design. A single event that can be dispatched twice with different event name rather than two events that we copy attributes between. Seems easier to get that design right.

Yes I believe it&apos;s time to change.

&gt; 
&gt; &gt; LayoutTests/transitions/transition-end-event-prefixed-01.html:63
&gt; &gt; +        shouldBe(&quot;transitionEventContainer.type&quot;, &quot;transitionEventBox.type&quot;);
&gt; &gt; +        shouldBe(&quot;transitionEventContainer.bubbles&quot;, &quot;transitionEventBox.bubbles&quot;);
&gt; &gt; +        shouldBe(&quot;transitionEventContainer.timeStamp&quot;, &quot;transitionEventBox.timeStamp&quot;);
&gt; &gt; +        shouldBe(&quot;transitionEventContainer.cancelable&quot;, &quot;transitionEventBox.cancelable&quot;);
&gt; &gt; +        shouldBe(&quot;transitionEventContainer.srcElement&quot;, &quot;transitionEventBox.srcElement&quot;);
&gt; &gt; +        shouldBe(&quot;transitionEventContainer.returnValue&quot;, &quot;transitionEventBox.returnValue&quot;);
&gt; &gt; +        shouldBe(&quot;transitionEventContainer.cancelBubble&quot;, &quot;transitionEventBox.cancelBubble&quot;);
&gt; &gt; +        shouldBe(&quot;transitionEventContainer.defaultPrevented&quot;, &quot;transitionEventBox.defaultPrevented&quot;);
&gt; &gt; +        shouldBe(&quot;transitionEventContainer.target&quot;, &quot;transitionEventBox.target&quot;);
&gt; &gt; +        shouldBe(&quot;transitionEventContainer.currentTarget&quot;, &quot;testContainer&quot;);
&gt; &gt; +        // TransitionEnd event specific properties.
&gt; &gt; +        shouldBe(&quot;transitionEventContainer.pseudoElement&quot;, &quot;transitionEventBox.pseudoElement&quot;);
&gt; &gt; +        shouldBe(&quot;transitionEventContainer.elapsedTime&quot;, &quot;transitionEventBox.elapsedTime&quot;);
&gt; &gt; +        shouldBe(&quot;transitionEventContainer.propertyName&quot;, &quot;transitionEventBox.propertyName&quot;);
&gt; 
&gt; The fact that these are equal doesn’t prove anything, unless we change them all. They could just be equal by chance?

But most of them are read-only attribute from JS point of view.  The test 02 and 03 actually test the ones you can change. Maybe some of these attributes in 01 are equals by chance but with their read only property, I am unable to simulate changing them from the layout tests to cover the out-of-sync problem. I see your point about having them to fail individually but when the transition event is dispatched to client&apos;s code there is little the client code can do to modify these values, I added them for sanity check.

&gt; 
&gt; Another way of putting it is that we need 13 different FAIL when you run this test without first patching WebKit, otherwise the test doesn’t actually test the fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>889775</commentid>
    <comment_count>14</comment_count>
      <attachid>201945</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2013-05-16 05:38:17 -0700</bug_when>
    <thetext>Created attachment 201945
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>889923</commentid>
    <comment_count>15</comment_count>
      <attachid>201945</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-05-16 11:30:53 -0700</bug_when>
    <thetext>Comment on attachment 201945
Patch

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

I still think there are deficiencies in the test, but this is OK.

&gt; Source/WebCore/dom/EventTarget.cpp:183
&gt; +    const AtomicString prefixedTypeName = prefixedType(event);

Why the const?

&gt; Source/WebCore/dom/EventTarget.cpp:192
&gt; +        const AtomicString unprefixedTypeName = event-&gt;type();

Why the const?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>889932</commentid>
    <comment_count>16</comment_count>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2013-05-16 11:42:21 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; (From update of attachment 201945 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=201945&amp;action=review
&gt; 
&gt; I still think there are deficiencies in the test, but this is OK.
&gt; 

What you would change?

&gt; &gt; Source/WebCore/dom/EventTarget.cpp:183
&gt; &gt; +    const AtomicString prefixedTypeName = prefixedType(event);
&gt; 
&gt; Why the const?
&gt; 
&gt; &gt; Source/WebCore/dom/EventTarget.cpp:192
&gt; &gt; +        const AtomicString unprefixedTypeName = event-&gt;type();
&gt; 
&gt; Why the const?

I&apos;ll remove them</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>889961</commentid>
    <comment_count>17</comment_count>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2013-05-16 12:29:26 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; (In reply to comment #15)
&gt; &gt; (From update of attachment 201945 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=201945&amp;action=review
&gt; &gt; 
&gt; &gt; I still think there are deficiencies in the test, but this is OK.
&gt; &gt; 
&gt; 
&gt; What you would change?

Maybe you meant that I should try to modify the event with for example initEvent so I could change the default values but unfortunately initEvent bail out early if the event is currently being dispatched (the target !0) and I can&apos;t modify the target from JS.

&gt; 
&gt; &gt; &gt; Source/WebCore/dom/EventTarget.cpp:183
&gt; &gt; &gt; +    const AtomicString prefixedTypeName = prefixedType(event);
&gt; &gt; 
&gt; &gt; Why the const?
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/dom/EventTarget.cpp:192
&gt; &gt; &gt; +        const AtomicString unprefixedTypeName = event-&gt;type();
&gt; &gt; 
&gt; &gt; Why the const?
&gt; 
&gt; I&apos;ll remove them</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>889980</commentid>
    <comment_count>18</comment_count>
      <attachid>201987</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2013-05-16 13:19:49 -0700</bug_when>
    <thetext>Created attachment 201987
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>890120</commentid>
    <comment_count>19</comment_count>
      <attachid>201987</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-05-16 20:26:29 -0700</bug_when>
    <thetext>Comment on attachment 201987
Patch for landing

Clearing flags on attachment: 201987

Committed r150239: &lt;http://trac.webkit.org/changeset/150239&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>890121</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-05-16 20:26:32 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>200713</attachid>
            <date>2013-05-06 09:54:36 -0700</date>
            <delta_ts>2013-05-06 09:54:36 -0700</delta_ts>
            <desc>Repro case</desc>
            <filename>bug.html</filename>
            <type>text/html</type>
            <size>1153</size>
            <attacher name="Matt Seeley">mattseeley</attacher>
            
              <data encoding="base64">CjwhRE9DVFlQRSBodG1sPgo8aHRtbD4KPGhlYWQ+CiAgICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCIv
PgogICAgPHRpdGxlPk5ldGZsaXg8L3RpdGxlPgogICAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4K
ICAgICAgICBib2R5IHsKICAgICAgICAgICAgbWFyZ2luOiAxMDBweDsKICAgICAgICB9CiAgICAg
ICAgI291dGVyIHsKICAgICAgICAgICAgd2lkdGg6NTAwcHg7CiAgICAgICAgICAgIGhlaWdodDo1
MHB4OwogICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiNlZWU7CiAgICAgICAgfQogICAgICAg
ICNpbm5lciB7CiAgICAgICAgICAgIHdpZHRoOjUwcHg7CiAgICAgICAgICAgIGhlaWdodDo1MHB4
OwogICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiNjY2M7CiAgICAgICAgICAgIC13ZWJraXQt
dHJhbnNpdGlvbi1kdXJhdGlvbjogMTAwMG1zOwogICAgICAgICAgICAtd2Via2l0LXRyYW5zaXRp
b24tcHJvcGVydHk6IC13ZWJraXQtdHJhbnNmb3JtOwogICAgICAgIH0KICAgIDwvc3R5bGU+Cjwv
aGVhZD4KPGJvZHk+CiAgICA8aDEgaWQ9InJlc3VsdCI+UGVuZGluZy4uLjwvaDE+CiAgICA8ZGl2
IGlkPSJvdXRlciI+CiAgICAgICAgPGRpdiBpZD0iaW5uZXIiPjwvZGl2PgogICAgPC9kaXY+Cjwv
Ym9keT4KPHNjcmlwdD4KCnZhciB0eXBlID0gJ3dlYmtpdFRyYW5zaXRpb25FbmQnLAogICAgb250
cmFuc2l0aW9uZW5kID0gZnVuY3Rpb24gKGUpIHsKICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigp
OwogICAgICAgIGNvbnNvbGUubG9nKAogICAgICAgICAgICAnY3VycmVudFRhcmdldCcsIGUuY3Vy
cmVudFRhcmdldC5pZCwKICAgICAgICAgICAgJ3RhcmdldCcsIGUudGFyZ2V0LmlkLAogICAgICAg
ICAgICAndHlwZScsIGUudHlwZQogICAgICAgICk7CiAgICAgICAgcmVzdWx0LmlubmVySFRNTCA9
IChlLmN1cnJlbnRUYXJnZXQgIT09IGUudGFyZ2V0KSA/ICdGYWlsJyA6ICdQYXNzJzsKICAgIH07
CgpvdXRlci5hZGRFdmVudExpc3RlbmVyKHR5cGUsIG9udHJhbnNpdGlvbmVuZCwgZmFsc2UpOwpp
bm5lci5hZGRFdmVudExpc3RlbmVyKHR5cGUsIG9udHJhbnNpdGlvbmVuZCwgZmFsc2UpOwoKaW5u
ZXIuc3R5bGUud2Via2l0VHJhbnNmb3JtID0gJ3RyYW5zbGF0ZTNEKDQ1MHB4LDAsMCknOwo8L3Nj
cmlwdD4KPC9odG1sPg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>201728</attachid>
            <date>2013-05-14 09:47:33 -0700</date>
            <delta_ts>2013-05-14 12:31:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-115656-20130514134628.patch</filename>
            <type>text/plain</type>
            <size>7654</size>
            <attacher name="Alexis Menard (darktears)">menard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUwMDI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDI3OWQ3ZTBkZDJkYzZk
ZTFiZTlhZjNjN2VjMTMyMTdlOTE2NTJhZS4uYjU2NWNjNDQxYWQzMmRmMTQ3NWVmNzk3NDE4NWMy
N2Q4N2I5ODc3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDEzLTA1LTE0ICBBbGV4
aXMgTWVuYXJkICA8YWxleGlzQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVncmVzc2lvbjogRXZl
bnQjc3RvcFByb3BhZ2F0aW9uKCkgZG9lcyBub3QgaGFsdCBidWJibGluZyBmb3Igd2Via2l0VHJh
bnNpdGlvbkVuZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTE1NjU2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgSWYgd2UgY3JlYXRlIGEgcHJlZml4ZWQgZXZlbnQgdG8gZGlzcGF0Y2ggaXQgKGluIHRoZSBj
YXNlIHdlIGhhdmUgb25seQorICAgICAgICBwcmVmaXhlZCBldmVudCBsaXN0ZW5lcnMgaW4gY2xp
ZW50J3MgY29kZSkgdGhlbiB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB0bworICAgICAgICBrZWVwIGl0
IGluIHN5bmMgd2l0aCB0aGUgb3JpZ2luYWwgdW5wcmVmaXhlZCBldmVudCBhZnRlciBpdCBoYXMg
YmVlbgorICAgICAgICBkaXNwYXRjaGVkLiBXaGlsZSBiZWluZyBkaXNwYXRjaGVkIHRoZSBldmVu
dCBjYW4gYmUgbW9kaWZpZWQgYnkKKyAgICAgICAgY2xpZW50J3MgY29kZSBhbmQgd2UgbmVlZCB0
byByZWZsZWN0IHRoZXNlIGNoYW5nZXMgdG8gdGhlIG9yaWdpbmFsCisgICAgICAgIGV2ZW50Lgor
CisgICAgICAgIFRlc3Q6IHRyYW5zaXRpb25zL3RyYW5zaXRpb24tZW5kLWV2ZW50LXByZWZpeGVk
LTAxLmh0bWwKKworICAgICAgICAqIGRvbS9FdmVudFRhcmdldC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpzeW5jRXZlbnRBdHRyaWJ1dGVzKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6Y3JlYXRlTWF0Y2hpbmdQcmVmaXhlZEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkV2ZW50VGFyZ2V0OjpmaXJlRXZlbnRMaXN0ZW5lcnMpOgorCiAyMDEzLTA1LTEzICBCZWFyIFRy
YXZpcyAgPGJldHJhdmlzQGFkb2JlLmNvbT4KIAogICAgICAgICBbY3NzIGV4Y2x1c2lvbnNdIEVu
YWJsZSBDU1MgRXhjbHVzaW9ucyBieSBkZWZhdWx0IHdoZW4gQ1NTX0VYQ0xVU0lPTlMgaXMgc2V0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcAppbmRleCAyNjY5YjFhYmVlY2VkNWVkODQ0YzQz
MjRlYzE3ZDg5MGIzNDQ3NzhkLi5jMmQwNmQzNzgwNjZmZmRiZmZlMjcwNjU0ZWE5NmZhNmM1ZTUw
NjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAKQEAgLTE2MiwxNCArMTYyLDI4IEBA
IHZvaWQgRXZlbnRUYXJnZXQ6OnVuY2F1Z2h0RXhjZXB0aW9uSW5FdmVudEhhbmRsZXIoKQogewog
fQogCitzdGF0aWMgdm9pZCBzeW5jRXZlbnRBdHRyaWJ1dGVzKGNvbnN0IEV2ZW50KiBzb3VyY2VF
dmVudCwgRXZlbnQqIHRhcmdldEV2ZW50KQoreworICAgIHRhcmdldEV2ZW50LT5zZXRUYXJnZXQo
c291cmNlRXZlbnQtPnRhcmdldCgpKTsKKyAgICB0YXJnZXRFdmVudC0+c2V0Q3VycmVudFRhcmdl
dChzb3VyY2VFdmVudC0+Y3VycmVudFRhcmdldCgpKTsKKyAgICB0YXJnZXRFdmVudC0+c2V0RXZl
bnRQaGFzZShzb3VyY2VFdmVudC0+ZXZlbnRQaGFzZSgpKTsKKyAgICB0YXJnZXRFdmVudC0+c2V0
RGVmYXVsdFByZXZlbnRlZChzb3VyY2VFdmVudC0+ZGVmYXVsdFByZXZlbnRlZCgpKTsKKyAgICB0
YXJnZXRFdmVudC0+c2V0Q2FuY2VsQnViYmxlKHNvdXJjZUV2ZW50LT5jYW5jZWxCdWJibGUoKSk7
CisgICAgdGFyZ2V0RXZlbnQtPnNldFVuZGVybHlpbmdFdmVudChzb3VyY2VFdmVudC0+dW5kZXJs
eWluZ0V2ZW50KCkpOworICAgIGlmIChzb3VyY2VFdmVudC0+ZGVmYXVsdEhhbmRsZWQoKSkKKyAg
ICAgICAgdGFyZ2V0RXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CisgICAgaWYgKHNvdXJjZUV2
ZW50LT5wcm9wYWdhdGlvblN0b3BwZWQoKSkKKyAgICAgICAgdGFyZ2V0RXZlbnQtPnN0b3BQcm9w
YWdhdGlvbigpOworICAgIGlmIChzb3VyY2VFdmVudC0+aW1tZWRpYXRlUHJvcGFnYXRpb25TdG9w
cGVkKCkpCisgICAgICAgIHRhcmdldEV2ZW50LT5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTsK
K30KKwogc3RhdGljIFBhc3NSZWZQdHI8RXZlbnQ+IGNyZWF0ZU1hdGNoaW5nUHJlZml4ZWRFdmVu
dChjb25zdCBFdmVudCogZXZlbnQpCiB7CiAgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnRO
YW1lcygpLnRyYW5zaXRpb25lbmRFdmVudCkgewogICAgICAgICBjb25zdCBXZWJLaXRUcmFuc2l0
aW9uRXZlbnQqIHRyYW5zaXRpb25FdmVudCA9IHN0YXRpY19jYXN0PGNvbnN0IFdlYktpdFRyYW5z
aXRpb25FdmVudCo+KGV2ZW50KTsKICAgICAgICAgUmVmUHRyPEV2ZW50PiBwcmVmaXhlZEV2ZW50
ID0gV2ViS2l0VHJhbnNpdGlvbkV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLndlYmtpdFRyYW5z
aXRpb25FbmRFdmVudCwgdHJhbnNpdGlvbkV2ZW50LT5wcm9wZXJ0eU5hbWUoKSwgdHJhbnNpdGlv
bkV2ZW50LT5lbGFwc2VkVGltZSgpLCB0cmFuc2l0aW9uRXZlbnQtPnBzZXVkb0VsZW1lbnQoKSk7
Ci0gICAgICAgIHByZWZpeGVkRXZlbnQtPnNldFRhcmdldChldmVudC0+dGFyZ2V0KCkpOwotICAg
ICAgICBwcmVmaXhlZEV2ZW50LT5zZXRDdXJyZW50VGFyZ2V0KGV2ZW50LT5jdXJyZW50VGFyZ2V0
KCkpOwotICAgICAgICBwcmVmaXhlZEV2ZW50LT5zZXRFdmVudFBoYXNlKGV2ZW50LT5ldmVudFBo
YXNlKCkpOworICAgICAgICBzeW5jRXZlbnRBdHRyaWJ1dGVzKGV2ZW50LCBwcmVmaXhlZEV2ZW50
LmdldCgpKTsKICAgICAgICAgcmV0dXJuIHByZWZpeGVkRXZlbnQucmVsZWFzZSgpOwogICAgIH0K
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTE5NCw2ICsyMDgsNyBAQCBib29sIEV2ZW50
VGFyZ2V0OjpmaXJlRXZlbnRMaXN0ZW5lcnMoRXZlbnQqIGV2ZW50KQogICAgICAgICByZXR1cm4g
dHJ1ZTsKIAogICAgIEV2ZW50TGlzdGVuZXJWZWN0b3IqIGxpc3RlbmVyUHJlZml4ZWRWZWN0b3Ig
PSAwOworICAgIFJlZlB0cjxFdmVudD4gcHJlZml4ZWRFdmVudDsKICAgICBBdG9taWNTdHJpbmcg
cHJlZml4ZWRUeXBlTmFtZSA9IHByZWZpeGVkVHlwZShldmVudCk7CiAgICAgaWYgKCFwcmVmaXhl
ZFR5cGVOYW1lLmlzRW1wdHkoKSkKICAgICAgICAgbGlzdGVuZXJQcmVmaXhlZFZlY3RvciA9IGQt
PmV2ZW50TGlzdGVuZXJNYXAuZmluZChwcmVmaXhlZFR5cGVOYW1lKTsKQEAgLTIwMiw4ICsyMTcs
MTEgQEAgYm9vbCBFdmVudFRhcmdldDo6ZmlyZUV2ZW50TGlzdGVuZXJzKEV2ZW50KiBldmVudCkK
IAogICAgIGlmIChsaXN0ZW5lclVucHJlZml4ZWRWZWN0b3IpCiAgICAgICAgIGZpcmVFdmVudExp
c3RlbmVycyhldmVudCwgZCwgKmxpc3RlbmVyVW5wcmVmaXhlZFZlY3Rvcik7Ci0gICAgZWxzZSBp
ZiAobGlzdGVuZXJQcmVmaXhlZFZlY3RvcikKLSAgICAgICAgZmlyZUV2ZW50TGlzdGVuZXJzKGNy
ZWF0ZU1hdGNoaW5nUHJlZml4ZWRFdmVudChldmVudCkuZ2V0KCksIGQsICpsaXN0ZW5lclByZWZp
eGVkVmVjdG9yKTsKKyAgICBlbHNlIGlmIChsaXN0ZW5lclByZWZpeGVkVmVjdG9yKSB7CisgICAg
ICAgIHByZWZpeGVkRXZlbnQgPSBjcmVhdGVNYXRjaGluZ1ByZWZpeGVkRXZlbnQoZXZlbnQpOwor
ICAgICAgICBmaXJlRXZlbnRMaXN0ZW5lcnMocHJlZml4ZWRFdmVudC5nZXQoKSwgZCwgKmxpc3Rl
bmVyUHJlZml4ZWRWZWN0b3IpOworICAgICAgICBzeW5jRXZlbnRBdHRyaWJ1dGVzKHByZWZpeGVk
RXZlbnQuZ2V0KCksIGV2ZW50KTsKKyAgICB9CiAKICAgICBpZiAoIXByZWZpeGVkVHlwZU5hbWUu
aXNFbXB0eSgpKSB7CiAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNGEwZmM0MmZhNWNjYWIwNjA0Yjg4MWM3
Zjg1YjNmZWEzN2M5ZDRlMy4uZjdmMDI2NGZlNjc1OTQ0NGJlMWQ1ZDEwOTU1ZThjZjU0NjE3NTQ5
ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEzLTA1LTE0ICBBbGV4aXMgTWVuYXJkICA8YWxl
eGlzQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVncmVzc2lvbjogRXZlbnQjc3RvcFByb3BhZ2F0
aW9uKCkgZG9lcyBub3QgaGFsdCBidWJibGluZyBmb3Igd2Via2l0VHJhbnNpdGlvbkVuZAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1NjU2CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgbmV3IHRl
c3QgdG8gY292ZXIgdGhlIGJ1Zy4KKworICAgICAgICAqIHRyYW5zaXRpb25zL3RyYW5zaXRpb24t
ZW5kLWV2ZW50LXByZWZpeGVkLTAxLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdHJh
bnNpdGlvbnMvdHJhbnNpdGlvbi1lbmQtZXZlbnQtcHJlZml4ZWQtMDEuaHRtbDogQWRkZWQuCisK
IDIwMTMtMDUtMTMgIEJlYXIgVHJhdmlzICA8YmV0cmF2aXNAYWRvYmUuY29tPgogCiAgICAgICAg
IFtjc3MgZXhjbHVzaW9uc10gRW5hYmxlIENTUyBFeGNsdXNpb25zIGJ5IGRlZmF1bHQgd2hlbiBD
U1NfRVhDTFVTSU9OUyBpcyBzZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RyYW5zaXRpb25z
L3RyYW5zaXRpb24tZW5kLWV2ZW50LXByZWZpeGVkLTAxLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL3RyYW5zaXRpb25zL3RyYW5zaXRpb24tZW5kLWV2ZW50LXByZWZpeGVkLTAxLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5lMGE1YzY3MTNiY2YzY2RkNzBkNTA4MzNjODI4NTA1YmQxMjc1NjQ2
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvdHJhbnNpdGlvbi1l
bmQtZXZlbnQtcHJlZml4ZWQtMDEtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOCBAQAorUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCitQQVNTIHRyYW5zaXRp
b25FdmVudC5jdXJyZW50VGFyZ2V0IGlzIHRyYW5zaXRpb25FdmVudC50YXJnZXQKK0luaXRpYXRp
bmcgYSB0cmFuc2l0aW9uIGFuZCBjYXRjaGluZyB0aGUgdHJhbnNpdGlvbiBwcmVmaXhlZCBlbmQg
ZXZlbnQgYW5kIG1vZGlmeSBvbmUgaXRzIGF0dHJpYnV0ZSB3aGljaCBzaG91bGQgc3RvcCB0aGUg
cHJvcGFnYXRpb24uCisKK1BBU1MgLS0tIFtFeHBlY3RlZF0gUHJvcGVydHk6IGxlZnQgVGFyZ2V0
OiBib3gxIEVsYXBzZWQgVGltZTogMC41CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RyYW5z
aXRpb25zL3RyYW5zaXRpb24tZW5kLWV2ZW50LXByZWZpeGVkLTAxLmh0bWwgYi9MYXlvdXRUZXN0
cy90cmFuc2l0aW9ucy90cmFuc2l0aW9uLWVuZC1ldmVudC1wcmVmaXhlZC0wMS5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjQwODMyYjVmODZlZjFkNmQzMDViOTQ4MDljM2Y5YWI5MDRjOGI2ODgKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy90cmFuc2l0aW9ucy90cmFuc2l0aW9uLWVuZC1ldmVudC1w
cmVmaXhlZC0wMS5odG1sCkBAIC0wLDAgKzEsNTkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8aGVhZD4KKyAgPHN0eWxlPgorICAgIC5ib3ggeworICAgICAgcG9zaXRpb246IHJlbGF0aXZl
OworICAgICAgbGVmdDogMDsKKyAgICAgIGhlaWdodDogMTAwcHg7CisgICAgICB3aWR0aDogMTAw
cHg7CisgICAgICBtYXJnaW46IDEwcHg7CisgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBibHVlOwor
ICAgICAgLXdlYmtpdC10cmFuc2l0aW9uLXByb3BlcnR5OiBsZWZ0OworICAgICAgLXdlYmtpdC10
cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjVzOworICAgIH0KKyAgPC9zdHlsZT4KKyAgPHNjcmlwdCBz
cmM9InRyYW5zaXRpb24tZW5kLWV2ZW50LWhlbHBlcnMuanMiPjwvc2NyaXB0PgorICA8c2NyaXB0
IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorICA8
c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisKKyAgICB2YXIgdHJhbnNpdGlvbkV2ZW50
OworCisgICAgdmFyIGV4cGVjdGVkRW5kRXZlbnRzID0gWworICAgICAgLy8gW3Byb3BlcnR5LW5h
bWUsIGVsZW1lbnQtaWQsIGVsYXBzZWQtdGltZSwgbGlzdGVuXQorICAgICAgWyJsZWZ0IiwgImJv
eDEiLCAwLjUsIGZhbHNlXQorICAgIF07CisKKyAgICBmdW5jdGlvbiBtb2RpZnlUcmFuc2l0aW9u
RW5kRXZlbnQoZSkKKyAgICB7CisgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7CisgICAgICAg
IHRyYW5zaXRpb25FdmVudCA9IGU7CisgICAgICAgIHNob3VsZEJlKCJ0cmFuc2l0aW9uRXZlbnQu
Y3VycmVudFRhcmdldCIsICJ0cmFuc2l0aW9uRXZlbnQudGFyZ2V0Iik7CisgICAgICAgIHJlY29y
ZFRyYW5zaXRpb25FbmRFdmVudChlKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBzZXR1cFRlc3Qo
KQorICAgIHsKKyAgICAgICAgdmFyIGNvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdjb250YWluZXInKTsKKyAgICAgICAgY29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoJ3dlYmtp
dFRyYW5zaXRpb25FbmQnLCBtb2RpZnlUcmFuc2l0aW9uRW5kRXZlbnQsIGZhbHNlKTsKKyAgICAg
ICAgdmFyIGJveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdib3gxJyk7CisgICAgICAgIGJv
eC5hZGRFdmVudExpc3RlbmVyKCd3ZWJraXRUcmFuc2l0aW9uRW5kJywgbW9kaWZ5VHJhbnNpdGlv
bkVuZEV2ZW50LCBmYWxzZSk7CisgICAgICAgIGJveC5zdHlsZS5sZWZ0ID0gJzIwMHB4JzsKKyAg
ICB9CisKKyAgICBydW5UcmFuc2l0aW9uVGVzdChleHBlY3RlZEVuZEV2ZW50cywgc2V0dXBUZXN0
KTsKKyAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKworPHA+SW5pdGlhdGluZyBhIHRyYW5z
aXRpb24gYW5kIGNhdGNoaW5nIHRoZSB0cmFuc2l0aW9uIHByZWZpeGVkIGVuZCBldmVudCBhbmQg
bW9kaWZ5IG9uZSBpdHMgYXR0cmlidXRlIHdoaWNoIHNob3VsZCBzdG9wIHRoZSBwcm9wYWdhdGlv
bi48L3A+CisKKzxkaXYgaWQ9ImNvbnRhaW5lciI+CisgICAgPGRpdiBpZD0iYm94MSIgY2xhc3M9
ImJveCI+PC9kaXY+Cis8L2Rpdj4KKworPGRpdiBpZD0icmVzdWx0Ij48L2Rpdj4KKworPC9ib2R5
PgorPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>201742</attachid>
            <date>2013-05-14 12:31:11 -0700</date>
            <delta_ts>2013-05-16 05:38:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-115656-20130514163007.patch</filename>
            <type>text/plain</type>
            <size>18438</size>
            <attacher name="Alexis Menard (darktears)">menard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUwMDI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDI3OWQ3ZTBkZDJkYzZk
ZTFiZTlhZjNjN2VjMTMyMTdlOTE2NTJhZS4uM2MxMTE4Yjg1Yzk4ZGI2NTgzMzYzYWJhNDM1ODA3
OWY1MWMwNzU3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDEzLTA1LTE0ICBBbGV4
aXMgTWVuYXJkICA8YWxleGlzQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVncmVzc2lvbjogRXZl
bnQjc3RvcFByb3BhZ2F0aW9uKCkgZG9lcyBub3QgaGFsdCBidWJibGluZyBmb3Igd2Via2l0VHJh
bnNpdGlvbkVuZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTE1NjU2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgSWYgd2UgY3JlYXRlIGEgcHJlZml4ZWQgZXZlbnQgdG8gZGlzcGF0Y2ggaXQgKGluIHRoZSBj
YXNlIHdlIGhhdmUgb25seQorICAgICAgICBwcmVmaXhlZCBldmVudCBsaXN0ZW5lcnMgaW4gY2xp
ZW50J3MgY29kZSkgdGhlbiB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB0bworICAgICAgICBrZWVwIGl0
IGluIHN5bmMgd2l0aCB0aGUgb3JpZ2luYWwgdW5wcmVmaXhlZCBldmVudCBhZnRlciBpdCBoYXMg
YmVlbgorICAgICAgICBkaXNwYXRjaGVkLiBXaGlsZSBiZWluZyBkaXNwYXRjaGVkIHRoZSBldmVu
dCBjYW4gYmUgbW9kaWZpZWQgYnkKKyAgICAgICAgY2xpZW50J3MgY29kZSBhbmQgd2UgbmVlZCB0
byByZWZsZWN0IHRoZXNlIGNoYW5nZXMgdG8gdGhlIG9yaWdpbmFsCisgICAgICAgIGV2ZW50Lgor
CisgICAgICAgIFRlc3Q6IHRyYW5zaXRpb25zL3RyYW5zaXRpb24tZW5kLWV2ZW50LXByZWZpeGVk
LTAxLmh0bWwKKworICAgICAgICAqIGRvbS9FdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpF
dmVudDo6Y29weUV2ZW50QXR0cmlidXRlcyk6CisgICAgICAgICogZG9tL0V2ZW50Lmg6CisgICAg
ICAgICogZG9tL0V2ZW50VGFyZ2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZU1hdGNo
aW5nUHJlZml4ZWRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudFRhcmdldDo6ZmlyZUV2
ZW50TGlzdGVuZXJzKToKKwogMjAxMy0wNS0xMyAgQmVhciBUcmF2aXMgIDxiZXRyYXZpc0BhZG9i
ZS5jb20+CiAKICAgICAgICAgW2NzcyBleGNsdXNpb25zXSBFbmFibGUgQ1NTIEV4Y2x1c2lvbnMg
YnkgZGVmYXVsdCB3aGVuIENTU19FWENMVVNJT05TIGlzIHNldApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0V2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudC5jcHAKaW5k
ZXggOGQ0ZTE0YWY4OTdhYmJlYzhmNTljN2FiMjYyNTM2ODZmMWU1Yjk1MC4uZWUyZThjM2QzY2E5
ZDVkOWNlZGIzNWNkNDQ2NGZlMTdjNzRiNWY0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0V2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuY3BwCkBAIC0xNjUs
NiArMTY1LDI0IEBAIFBhc3NSZWZQdHI8RXZlbnQ+IEV2ZW50OjpjbG9uZUZvcihIVE1MSUZyYW1l
RWxlbWVudCopIGNvbnN0CiAgICAgcmV0dXJuIEV2ZW50OjpjcmVhdGUodHlwZSgpLCBidWJibGVz
KCksIGNhbmNlbGFibGUoKSk7CiB9CiAKK3ZvaWQgRXZlbnQ6OmNvcHlFdmVudEF0dHJpYnV0ZXMo
RXZlbnQqIGV2ZW50KSBjb25zdAoreworICAgIEFTU0VSVChldmVudCk7CisgICAgZXZlbnQtPm1f
dHlwZSA9IG1fdHlwZTsKKyAgICBldmVudC0+bV9jYW5CdWJibGUgPSBtX2NhbkJ1YmJsZTsKKyAg
ICBldmVudC0+bV9jYW5jZWxhYmxlID0gbV9jYW5jZWxhYmxlOworICAgIGV2ZW50LT5tX3Byb3Bh
Z2F0aW9uU3RvcHBlZCA9IG1fcHJvcGFnYXRpb25TdG9wcGVkOworICAgIGV2ZW50LT5tX2ltbWVk
aWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCA9IG1faW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkOwor
ICAgIGV2ZW50LT5tX2RlZmF1bHRQcmV2ZW50ZWQgPSBtX2RlZmF1bHRQcmV2ZW50ZWQ7CisgICAg
ZXZlbnQtPm1fZGVmYXVsdEhhbmRsZWQgPSBtX2RlZmF1bHRIYW5kbGVkOworICAgIGV2ZW50LT5t
X2NhbmNlbEJ1YmJsZSA9IG1fY2FuY2VsQnViYmxlOworICAgIGV2ZW50LT5tX2V2ZW50UGhhc2Ug
PSBtX2V2ZW50UGhhc2U7CisgICAgZXZlbnQtPm1fY3VycmVudFRhcmdldCA9IG1fY3VycmVudFRh
cmdldDsKKyAgICBldmVudC0+bV90YXJnZXQgPSBtX3RhcmdldDsKKyAgICBldmVudC0+bV9jcmVh
dGVUaW1lID0gbV9jcmVhdGVUaW1lOworICAgIGV2ZW50LT5tX3VuZGVybHlpbmdFdmVudCA9IG1f
dW5kZXJseWluZ0V2ZW50OworfQorCiB2b2lkIEV2ZW50OjpzZXRUYXJnZXQoUGFzc1JlZlB0cjxF
dmVudFRhcmdldD4gdGFyZ2V0KQogewogICAgIGlmIChtX3RhcmdldCA9PSB0YXJnZXQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9F
dmVudC5oCmluZGV4IGE5ZDEyOTlkYmM3NTg0NDRkMDUwYTc4ZGVhZGNmMGUwMmU4MzE5NmMuLjBk
YWU1MDU0OGE0OGRlZDIwMDc2ZThlYjVjZjU1NDIxMWYyMWRhNGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudC5oCkBA
IC0xNjMsNiArMTYzLDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNCZWluZ0Rpc3BhdGNoZWQoKSBj
b25zdCB7IHJldHVybiBldmVudFBoYXNlKCk7IH0KIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxF
dmVudD4gY2xvbmVGb3IoSFRNTElGcmFtZUVsZW1lbnQqKSBjb25zdDsKKyAgICB2b2lkIGNvcHlF
dmVudEF0dHJpYnV0ZXMoRXZlbnQqKSBjb25zdDsKIAogcHJvdGVjdGVkOgogICAgIEV2ZW50KCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcAppbmRleCAyNjY5YjFhYmVlY2VkNWVkODQ0YzQz
MjRlYzE3ZDg5MGIzNDQ3NzhkLi4xMTdmN2JiMWFkNzUwMTU3NGU4MTQxOTY3OTVjMjRlYmUzYzQz
ZTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAKQEAgLTE2Nyw5ICsxNjcsNyBAQCBz
dGF0aWMgUGFzc1JlZlB0cjxFdmVudD4gY3JlYXRlTWF0Y2hpbmdQcmVmaXhlZEV2ZW50KGNvbnN0
IEV2ZW50KiBldmVudCkKICAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkudHJh
bnNpdGlvbmVuZEV2ZW50KSB7CiAgICAgICAgIGNvbnN0IFdlYktpdFRyYW5zaXRpb25FdmVudCog
dHJhbnNpdGlvbkV2ZW50ID0gc3RhdGljX2Nhc3Q8Y29uc3QgV2ViS2l0VHJhbnNpdGlvbkV2ZW50
Kj4oZXZlbnQpOwogICAgICAgICBSZWZQdHI8RXZlbnQ+IHByZWZpeGVkRXZlbnQgPSBXZWJLaXRU
cmFuc2l0aW9uRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkud2Via2l0VHJhbnNpdGlvbkVuZEV2
ZW50LCB0cmFuc2l0aW9uRXZlbnQtPnByb3BlcnR5TmFtZSgpLCB0cmFuc2l0aW9uRXZlbnQtPmVs
YXBzZWRUaW1lKCksIHRyYW5zaXRpb25FdmVudC0+cHNldWRvRWxlbWVudCgpKTsKLSAgICAgICAg
cHJlZml4ZWRFdmVudC0+c2V0VGFyZ2V0KGV2ZW50LT50YXJnZXQoKSk7Ci0gICAgICAgIHByZWZp
eGVkRXZlbnQtPnNldEN1cnJlbnRUYXJnZXQoZXZlbnQtPmN1cnJlbnRUYXJnZXQoKSk7Ci0gICAg
ICAgIHByZWZpeGVkRXZlbnQtPnNldEV2ZW50UGhhc2UoZXZlbnQtPmV2ZW50UGhhc2UoKSk7Cisg
ICAgICAgIGV2ZW50LT5jb3B5RXZlbnRBdHRyaWJ1dGVzKHByZWZpeGVkRXZlbnQuZ2V0KCkpOwog
ICAgICAgICByZXR1cm4gcHJlZml4ZWRFdmVudC5yZWxlYXNlKCk7CiAgICAgfQogICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwpAQCAtMjAyLDggKzIwMCwxMSBAQCBib29sIEV2ZW50VGFyZ2V0Ojpm
aXJlRXZlbnRMaXN0ZW5lcnMoRXZlbnQqIGV2ZW50KQogCiAgICAgaWYgKGxpc3RlbmVyVW5wcmVm
aXhlZFZlY3RvcikKICAgICAgICAgZmlyZUV2ZW50TGlzdGVuZXJzKGV2ZW50LCBkLCAqbGlzdGVu
ZXJVbnByZWZpeGVkVmVjdG9yKTsKLSAgICBlbHNlIGlmIChsaXN0ZW5lclByZWZpeGVkVmVjdG9y
KQotICAgICAgICBmaXJlRXZlbnRMaXN0ZW5lcnMoY3JlYXRlTWF0Y2hpbmdQcmVmaXhlZEV2ZW50
KGV2ZW50KS5nZXQoKSwgZCwgKmxpc3RlbmVyUHJlZml4ZWRWZWN0b3IpOworICAgIGVsc2UgaWYg
KGxpc3RlbmVyUHJlZml4ZWRWZWN0b3IpIHsKKyAgICAgICAgUmVmUHRyPEV2ZW50PiBwcmVmaXhl
ZEV2ZW50ID0gY3JlYXRlTWF0Y2hpbmdQcmVmaXhlZEV2ZW50KGV2ZW50KTsKKyAgICAgICAgZmly
ZUV2ZW50TGlzdGVuZXJzKHByZWZpeGVkRXZlbnQuZ2V0KCksIGQsICpsaXN0ZW5lclByZWZpeGVk
VmVjdG9yKTsKKyAgICAgICAgcHJlZml4ZWRFdmVudC0+Y29weUV2ZW50QXR0cmlidXRlcyhldmVu
dCk7CisgICAgfQogCiAgICAgaWYgKCFwcmVmaXhlZFR5cGVOYW1lLmlzRW1wdHkoKSkgewogICAg
ICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCmluZGV4IDRhMGZjNDJmYTVjY2FiMDYwNGI4ODFjN2Y4NWIzZmVhMzdjOWQ0ZTMu
LjRiNTIzMDBjODQwYmJjYTRlY2FmYzVmMzlhMThiMjUxMmQzOWVkNjggMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxOSBAQAorMjAxMy0wNS0xNCAgQWxleGlzIE1lbmFyZCAgPGFsZXhpc0B3ZWJraXQub3JnPgor
CisgICAgICAgIFJlZ3Jlc3Npb246IEV2ZW50I3N0b3BQcm9wYWdhdGlvbigpIGRvZXMgbm90IGhh
bHQgYnViYmxpbmcgZm9yIHdlYmtpdFRyYW5zaXRpb25FbmQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNTY1NgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIG5ldyB0ZXN0cyB0byBjb3ZlciB0aGUg
YnVnLgorCisgICAgICAgICogdHJhbnNpdGlvbnMvdHJhbnNpdGlvbi1lbmQtZXZlbnQtcHJlZml4
ZWQtMDMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0cmFuc2l0aW9ucy90cmFuc2l0
aW9uLWVuZC1ldmVudC1wcmVmaXhlZC0wMy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0cmFuc2l0
aW9ucy90cmFuc2l0aW9uLWVuZC1ldmVudC1wcmVmaXhlZC0wMi1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIHRyYW5zaXRpb25zL3RyYW5zaXRpb24tZW5kLWV2ZW50LXByZWZpeGVkLTAy
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRyYW5zaXRpb25zL3RyYW5zaXRpb24tZW5kLWV2ZW50
LXByZWZpeGVkLTAxLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdHJhbnNpdGlvbnMv
dHJhbnNpdGlvbi1lbmQtZXZlbnQtcHJlZml4ZWQtMDEuaHRtbDogQWRkZWQuCisKIDIwMTMtMDUt
MTMgIEJlYXIgVHJhdmlzICA8YmV0cmF2aXNAYWRvYmUuY29tPgogCiAgICAgICAgIFtjc3MgZXhj
bHVzaW9uc10gRW5hYmxlIENTUyBFeGNsdXNpb25zIGJ5IGRlZmF1bHQgd2hlbiBDU1NfRVhDTFVT
SU9OUyBpcyBzZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RyYW5zaXRpb25zL3RyYW5zaXRp
b24tZW5kLWV2ZW50LXByZWZpeGVkLTAxLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RyYW5z
aXRpb25zL3RyYW5zaXRpb24tZW5kLWV2ZW50LXByZWZpeGVkLTAxLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi45OTJkZTYyMDE0NmM3NzEyYjExNjFkMmM4ZjE3ZWM4OTc0ZjAxNGM5Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvdHJhbnNpdGlvbi1lbmQtZXZlbnQt
cHJlZml4ZWQtMDEtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjIgQEAKK1Rlc3QgdG8gbWFrZSBz
dXJlIHRoYXQgaWYgcHJlZml4ZWQgdHJhbnNpdGlvbiBldmVudHMgYXJlIG1vZGlmaWVkIHdlIGNv
cnJlY3RseSBtb2RpZnkgdW5wcmVmaXhlZCBldmVudHMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFIi4KKworCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKK1BBU1MgdHJhbnNpdGlvbkV2ZW50Q29udGFpbmVyLnR5cGUgaXMgdHJhbnNpdGlvbkV2ZW50
Qm94LnR5cGUKK1BBU1MgdHJhbnNpdGlvbkV2ZW50Q29udGFpbmVyLmJ1YmJsZXMgaXMgdHJhbnNp
dGlvbkV2ZW50Qm94LmJ1YmJsZXMKK1BBU1MgdHJhbnNpdGlvbkV2ZW50Q29udGFpbmVyLnRpbWVT
dGFtcCBpcyB0cmFuc2l0aW9uRXZlbnRCb3gudGltZVN0YW1wCitQQVNTIHRyYW5zaXRpb25FdmVu
dENvbnRhaW5lci5jYW5jZWxhYmxlIGlzIHRyYW5zaXRpb25FdmVudEJveC5jYW5jZWxhYmxlCitQ
QVNTIHRyYW5zaXRpb25FdmVudENvbnRhaW5lci5zcmNFbGVtZW50IGlzIHRyYW5zaXRpb25FdmVu
dEJveC5zcmNFbGVtZW50CitQQVNTIHRyYW5zaXRpb25FdmVudENvbnRhaW5lci5yZXR1cm5WYWx1
ZSBpcyB0cmFuc2l0aW9uRXZlbnRCb3gucmV0dXJuVmFsdWUKK1BBU1MgdHJhbnNpdGlvbkV2ZW50
Q29udGFpbmVyLmNhbmNlbEJ1YmJsZSBpcyB0cmFuc2l0aW9uRXZlbnRCb3guY2FuY2VsQnViYmxl
CitQQVNTIHRyYW5zaXRpb25FdmVudENvbnRhaW5lci5kZWZhdWx0UHJldmVudGVkIGlzIHRyYW5z
aXRpb25FdmVudEJveC5kZWZhdWx0UHJldmVudGVkCitQQVNTIHRyYW5zaXRpb25FdmVudENvbnRh
aW5lci50YXJnZXQgaXMgdHJhbnNpdGlvbkV2ZW50Qm94LnRhcmdldAorUEFTUyB0cmFuc2l0aW9u
RXZlbnRDb250YWluZXIuY3VycmVudFRhcmdldCBpcyB0ZXN0Q29udGFpbmVyCitQQVNTIHRyYW5z
aXRpb25FdmVudENvbnRhaW5lci5wc2V1ZG9FbGVtZW50IGlzIHRyYW5zaXRpb25FdmVudEJveC5w
c2V1ZG9FbGVtZW50CitQQVNTIHRyYW5zaXRpb25FdmVudENvbnRhaW5lci5lbGFwc2VkVGltZSBp
cyB0cmFuc2l0aW9uRXZlbnRCb3guZWxhcHNlZFRpbWUKK1BBU1MgdHJhbnNpdGlvbkV2ZW50Q29u
dGFpbmVyLnByb3BlcnR5TmFtZSBpcyB0cmFuc2l0aW9uRXZlbnRCb3gucHJvcGVydHlOYW1lCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RyYW5zaXRpb25zL3RyYW5zaXRpb24tZW5kLWV2ZW50
LXByZWZpeGVkLTAxLmh0bWwgYi9MYXlvdXRUZXN0cy90cmFuc2l0aW9ucy90cmFuc2l0aW9uLWVu
ZC1ldmVudC1wcmVmaXhlZC0wMS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNlNTM3YjZhZDQxZTRlY2YxZTAx
YzIwZTlmYTFlZjU2MGVmYTQyOGQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90cmFu
c2l0aW9ucy90cmFuc2l0aW9uLWVuZC1ldmVudC1wcmVmaXhlZC0wMS5odG1sCkBAIC0wLDAgKzEs
NzQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0
Zi04Ij4KKyAgICA8c3R5bGU+CisgICAgLmJveCB7CisgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2
ZTsKKyAgICAgICAgbGVmdDogMDsKKyAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICAgICAgd2lk
dGg6IDEwMHB4OworICAgICAgICBtYXJnaW46IDEwcHg7CisgICAgICAgIGJhY2tncm91bmQtY29s
b3I6IGJsdWU7CisgICAgICAgIC13ZWJraXQtdHJhbnNpdGlvbi1wcm9wZXJ0eTogd2lkdGg7Cisg
ICAgICAgIC13ZWJraXQtdHJhbnNpdGlvbi1kdXJhdGlvbjogMC41czsKKyAgICB9CisgICAgPC9z
dHlsZT4KKyAgICA8c2NyaXB0IHNyYz0idHJhbnNpdGlvbi1lbmQtZXZlbnQtaGVscGVycy5qcyI+
PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Cisg
ICAgZnVuY3Rpb24gcnVuQW5pbWF0aW9uKCkgeworICAgICAgICB2YXIgYm94ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ2JveDEnKTsKKyAgICAgICAgYm94LnN0eWxlLndpZHRoID0gJzIwMHB4
JzsKKyAgICB9CisgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25Mb2FkPSJydW5BbmltYXRp
b24oKSI+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgZGVzY3JpcHRpb24o
IlRlc3QgdG8gbWFrZSBzdXJlIHRoYXQgaWYgcHJlZml4ZWQgdHJhbnNpdGlvbiBldmVudHMgYXJl
IG1vZGlmaWVkIHdlIGNvcnJlY3RseSBtb2RpZnkgdW5wcmVmaXhlZCBldmVudHMuIik7CisKKyAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9u
ZSgpOworCisgICAgdmFyIHRlc3RDb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJk
aXYiKTsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRlc3RDb250YWluZXIpOworCisg
ICAgdGVzdENvbnRhaW5lci5pbm5lckhUTUwgPSAnPGRpdiBpZD0iYm94MSIgY2xhc3M9ImJveCI+
PC9kaXY+JzsKKyAgICB2YXIgYm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JveDEnKTsK
KworICAgIHZhciB0cmFuc2l0aW9uRXZlbnRDb250YWluZXI7CisgICAgdmFyIHRyYW5zaXRpb25F
dmVudEJveDsKKworICAgIGZ1bmN0aW9uIGlubmVyVHJhbnNpdGlvbkVuZEV2ZW50KGUpCisgICAg
eworICAgICAgICB0cmFuc2l0aW9uRXZlbnRCb3ggPSBlOworICAgIH0KKworICAgIGZ1bmN0aW9u
IG91dGVyVHJhbnNpdGlvbkVuZEV2ZW50KGUpCisgICAgeworICAgICAgICB0cmFuc2l0aW9uRXZl
bnRDb250YWluZXIgPSBlOworICAgICAgICBzaG91bGRCZSgidHJhbnNpdGlvbkV2ZW50Q29udGFp
bmVyLnR5cGUiLCAidHJhbnNpdGlvbkV2ZW50Qm94LnR5cGUiKTsKKyAgICAgICAgc2hvdWxkQmUo
InRyYW5zaXRpb25FdmVudENvbnRhaW5lci5idWJibGVzIiwgInRyYW5zaXRpb25FdmVudEJveC5i
dWJibGVzIik7CisgICAgICAgIHNob3VsZEJlKCJ0cmFuc2l0aW9uRXZlbnRDb250YWluZXIudGlt
ZVN0YW1wIiwgInRyYW5zaXRpb25FdmVudEJveC50aW1lU3RhbXAiKTsKKyAgICAgICAgc2hvdWxk
QmUoInRyYW5zaXRpb25FdmVudENvbnRhaW5lci5jYW5jZWxhYmxlIiwgInRyYW5zaXRpb25FdmVu
dEJveC5jYW5jZWxhYmxlIik7CisgICAgICAgIHNob3VsZEJlKCJ0cmFuc2l0aW9uRXZlbnRDb250
YWluZXIuc3JjRWxlbWVudCIsICJ0cmFuc2l0aW9uRXZlbnRCb3guc3JjRWxlbWVudCIpOworICAg
ICAgICBzaG91bGRCZSgidHJhbnNpdGlvbkV2ZW50Q29udGFpbmVyLnJldHVyblZhbHVlIiwgInRy
YW5zaXRpb25FdmVudEJveC5yZXR1cm5WYWx1ZSIpOworICAgICAgICBzaG91bGRCZSgidHJhbnNp
dGlvbkV2ZW50Q29udGFpbmVyLmNhbmNlbEJ1YmJsZSIsICJ0cmFuc2l0aW9uRXZlbnRCb3guY2Fu
Y2VsQnViYmxlIik7CisgICAgICAgIHNob3VsZEJlKCJ0cmFuc2l0aW9uRXZlbnRDb250YWluZXIu
ZGVmYXVsdFByZXZlbnRlZCIsICJ0cmFuc2l0aW9uRXZlbnRCb3guZGVmYXVsdFByZXZlbnRlZCIp
OworICAgICAgICBzaG91bGRCZSgidHJhbnNpdGlvbkV2ZW50Q29udGFpbmVyLnRhcmdldCIsICJ0
cmFuc2l0aW9uRXZlbnRCb3gudGFyZ2V0Iik7CisgICAgICAgIHNob3VsZEJlKCJ0cmFuc2l0aW9u
RXZlbnRDb250YWluZXIuY3VycmVudFRhcmdldCIsICJ0ZXN0Q29udGFpbmVyIik7CisgICAgICAg
IC8vIFRyYW5zaXRpb25FbmQgZXZlbnQgc3BlY2lmaWMgcHJvcGVydGllcy4KKyAgICAgICAgc2hv
dWxkQmUoInRyYW5zaXRpb25FdmVudENvbnRhaW5lci5wc2V1ZG9FbGVtZW50IiwgInRyYW5zaXRp
b25FdmVudEJveC5wc2V1ZG9FbGVtZW50Iik7CisgICAgICAgIHNob3VsZEJlKCJ0cmFuc2l0aW9u
RXZlbnRDb250YWluZXIuZWxhcHNlZFRpbWUiLCAidHJhbnNpdGlvbkV2ZW50Qm94LmVsYXBzZWRU
aW1lIik7CisgICAgICAgIHNob3VsZEJlKCJ0cmFuc2l0aW9uRXZlbnRDb250YWluZXIucHJvcGVy
dHlOYW1lIiwgInRyYW5zaXRpb25FdmVudEJveC5wcm9wZXJ0eU5hbWUiKTsKKyAgICAgICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7
CisgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQodGVzdENvbnRhaW5lcik7CisgICAg
fQorCisgICAgdGVzdENvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKCd3ZWJraXRUcmFuc2l0aW9u
RW5kJywgb3V0ZXJUcmFuc2l0aW9uRW5kRXZlbnQsIGZhbHNlKTsKKyAgICBib3guYWRkRXZlbnRM
aXN0ZW5lcignd2Via2l0VHJhbnNpdGlvbkVuZCcsIGlubmVyVHJhbnNpdGlvbkVuZEV2ZW50LCBm
YWxzZSk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10
ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvdHJhbnNpdGlvbnMvdHJhbnNpdGlvbi1lbmQtZXZlbnQtcHJlZml4ZWQtMDItZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvdHJhbnNpdGlvbi1lbmQtZXZlbnQt
cHJlZml4ZWQtMDItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIxOGZiOWVlMDJiOTdmMDY5YzUy
MTM2MDAxZWI3YTZkM2U0ZDk2YzAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90cmFu
c2l0aW9ucy90cmFuc2l0aW9uLWVuZC1ldmVudC1wcmVmaXhlZC0wMi1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwxMCBAQAorVGVzdCB0byBtYWtlIHN1cmUgdGhhdCBpZiBwcmVmaXhlZCB0cmFuc2l0
aW9uIGV2ZW50cyBhcmUgbW9kaWZpZWQgd2UgY29ycmVjdGx5IG1vZGlmeSB1bnByZWZpeGVkIGV2
ZW50cy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNz
YWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorUEFTUyB0cmFuc2l0aW9uRXZlbnRCb3gu
Y3VycmVudFRhcmdldCBpcyB0cmFuc2l0aW9uRXZlbnRCb3gudGFyZ2V0CisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3RyYW5zaXRpb25zL3RyYW5zaXRpb24tZW5kLWV2ZW50LXByZWZpeGVkLTAy
Lmh0bWwgYi9MYXlvdXRUZXN0cy90cmFuc2l0aW9ucy90cmFuc2l0aW9uLWVuZC1ldmVudC1wcmVm
aXhlZC0wMi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg1ZWQ3OTQ4MTA5ZmRmNzQ3NTI4YWI2NTkwMTM5OTE0
ZTg3NWIzNzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90cmFuc2l0aW9ucy90cmFu
c2l0aW9uLWVuZC1ldmVudC1wcmVmaXhlZC0wMi5odG1sCkBAIC0wLDAgKzEsNTYgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKyAgICA8
c3R5bGU+CisgICAgLmJveCB7CisgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAgICAgICAg
bGVmdDogMDsKKyAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICAgICAgd2lkdGg6IDEwMHB4Owor
ICAgICAgICBtYXJnaW46IDEwcHg7CisgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGJsdWU7Cisg
ICAgICAgIC13ZWJraXQtdHJhbnNpdGlvbi1wcm9wZXJ0eTogd2lkdGg7CisgICAgICAgIC13ZWJr
aXQtdHJhbnNpdGlvbi1kdXJhdGlvbjogMC41czsKKyAgICB9CisgICAgPC9zdHlsZT4KKyAgICA8
c2NyaXB0IHNyYz0idHJhbnNpdGlvbi1lbmQtZXZlbnQtaGVscGVycy5qcyI+PC9zY3JpcHQ+Cisg
ICAgPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKyAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgZnVuY3Rpb24g
cnVuQW5pbWF0aW9uKCkgeworICAgICAgICB2YXIgYm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2JveDEnKTsKKyAgICAgICAgYm94LnN0eWxlLndpZHRoID0gJzIwMHB4JzsKKyAgICB9Cisg
IDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25Mb2FkPSJydW5BbmltYXRpb24oKSI+Cis8c2Ny
aXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgZGVzY3JpcHRpb24oIlRlc3QgdG8gbWFr
ZSBzdXJlIHRoYXQgaWYgcHJlZml4ZWQgdHJhbnNpdGlvbiBldmVudHMgYXJlIG1vZGlmaWVkIHdl
IGNvcnJlY3RseSBtb2RpZnkgdW5wcmVmaXhlZCBldmVudHMuIik7CisKKyAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworCisgICAg
dmFyIHRlc3RDb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICBk
b2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRlc3RDb250YWluZXIpOworCisgICAgdGVzdENvbnRh
aW5lci5pbm5lckhUTUwgPSAnPGRpdiBpZD0iYm94MSIgY2xhc3M9ImJveCI+PC9kaXY+JzsKKyAg
ICB2YXIgYm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JveDEnKTsKKworICAgIHZhciB0
cmFuc2l0aW9uRXZlbnRCb3g7CisKKyAgICBmdW5jdGlvbiB0cmFuc2l0aW9uRW5kRXZlbnQoZSkK
KyAgICB7CisgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7CisgICAgICAgIHRyYW5zaXRpb25F
dmVudEJveCA9IGU7CisgICAgICAgIHNob3VsZEJlKCJ0cmFuc2l0aW9uRXZlbnRCb3guY3VycmVu
dFRhcmdldCIsICJ0cmFuc2l0aW9uRXZlbnRCb3gudGFyZ2V0Iik7CisgICAgICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAg
ICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHRlc3RDb250YWluZXIpOworICAgIH0KKwor
ICAgIHRlc3RDb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcignd2Via2l0VHJhbnNpdGlvbkVuZCcs
IHRyYW5zaXRpb25FbmRFdmVudCwgZmFsc2UpOworICAgIGJveC5hZGRFdmVudExpc3RlbmVyKCd3
ZWJraXRUcmFuc2l0aW9uRW5kJywgdHJhbnNpdGlvbkVuZEV2ZW50LCBmYWxzZSk7Cis8L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdHJhbnNp
dGlvbnMvdHJhbnNpdGlvbi1lbmQtZXZlbnQtcHJlZml4ZWQtMDMtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvdHJhbnNpdGlvbnMvdHJhbnNpdGlvbi1lbmQtZXZlbnQtcHJlZml4ZWQtMDMtZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk5MmRlNjIwMTQ2Yzc3MTJiMTE2MWQyYzhmMTdlYzg5NzRm
MDE0YzkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90cmFuc2l0aW9ucy90cmFuc2l0
aW9uLWVuZC1ldmVudC1wcmVmaXhlZC0wMy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyMiBAQAor
VGVzdCB0byBtYWtlIHN1cmUgdGhhdCBpZiBwcmVmaXhlZCB0cmFuc2l0aW9uIGV2ZW50cyBhcmUg
bW9kaWZpZWQgd2UgY29ycmVjdGx5IG1vZGlmeSB1bnByZWZpeGVkIGV2ZW50cy4KKworT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorUEFTUyB0cmFuc2l0aW9uRXZlbnRDb250YWluZXIudHlwZSBpcyB0
cmFuc2l0aW9uRXZlbnRCb3gudHlwZQorUEFTUyB0cmFuc2l0aW9uRXZlbnRDb250YWluZXIuYnVi
YmxlcyBpcyB0cmFuc2l0aW9uRXZlbnRCb3guYnViYmxlcworUEFTUyB0cmFuc2l0aW9uRXZlbnRD
b250YWluZXIudGltZVN0YW1wIGlzIHRyYW5zaXRpb25FdmVudEJveC50aW1lU3RhbXAKK1BBU1Mg
dHJhbnNpdGlvbkV2ZW50Q29udGFpbmVyLmNhbmNlbGFibGUgaXMgdHJhbnNpdGlvbkV2ZW50Qm94
LmNhbmNlbGFibGUKK1BBU1MgdHJhbnNpdGlvbkV2ZW50Q29udGFpbmVyLnNyY0VsZW1lbnQgaXMg
dHJhbnNpdGlvbkV2ZW50Qm94LnNyY0VsZW1lbnQKK1BBU1MgdHJhbnNpdGlvbkV2ZW50Q29udGFp
bmVyLnJldHVyblZhbHVlIGlzIHRyYW5zaXRpb25FdmVudEJveC5yZXR1cm5WYWx1ZQorUEFTUyB0
cmFuc2l0aW9uRXZlbnRDb250YWluZXIuY2FuY2VsQnViYmxlIGlzIHRyYW5zaXRpb25FdmVudEJv
eC5jYW5jZWxCdWJibGUKK1BBU1MgdHJhbnNpdGlvbkV2ZW50Q29udGFpbmVyLmRlZmF1bHRQcmV2
ZW50ZWQgaXMgdHJhbnNpdGlvbkV2ZW50Qm94LmRlZmF1bHRQcmV2ZW50ZWQKK1BBU1MgdHJhbnNp
dGlvbkV2ZW50Q29udGFpbmVyLnRhcmdldCBpcyB0cmFuc2l0aW9uRXZlbnRCb3gudGFyZ2V0CitQ
QVNTIHRyYW5zaXRpb25FdmVudENvbnRhaW5lci5jdXJyZW50VGFyZ2V0IGlzIHRlc3RDb250YWlu
ZXIKK1BBU1MgdHJhbnNpdGlvbkV2ZW50Q29udGFpbmVyLnBzZXVkb0VsZW1lbnQgaXMgdHJhbnNp
dGlvbkV2ZW50Qm94LnBzZXVkb0VsZW1lbnQKK1BBU1MgdHJhbnNpdGlvbkV2ZW50Q29udGFpbmVy
LmVsYXBzZWRUaW1lIGlzIHRyYW5zaXRpb25FdmVudEJveC5lbGFwc2VkVGltZQorUEFTUyB0cmFu
c2l0aW9uRXZlbnRDb250YWluZXIucHJvcGVydHlOYW1lIGlzIHRyYW5zaXRpb25FdmVudEJveC5w
cm9wZXJ0eU5hbWUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvdHJhbnNp
dGlvbi1lbmQtZXZlbnQtcHJlZml4ZWQtMDMuaHRtbCBiL0xheW91dFRlc3RzL3RyYW5zaXRpb25z
L3RyYW5zaXRpb24tZW5kLWV2ZW50LXByZWZpeGVkLTAzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTQ2YjBm
ZDUzM2JkYzVhYTNlNDliNjA3NzMwM2QxNmVhNTc0YjUyMwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3RyYW5zaXRpb25zL3RyYW5zaXRpb24tZW5kLWV2ZW50LXByZWZpeGVkLTAzLmh0
bWwKQEAgLTAsMCArMSw3NSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1l
dGEgY2hhcnNldD0idXRmLTgiPgorICAgIDxzdHlsZT4KKyAgICAuYm94IHsKKyAgICAgICAgcG9z
aXRpb246IHJlbGF0aXZlOworICAgICAgICBsZWZ0OiAwOworICAgICAgICBoZWlnaHQ6IDEwMHB4
OworICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgIG1hcmdpbjogMTBweDsKKyAgICAgICAg
YmFja2dyb3VuZC1jb2xvcjogYmx1ZTsKKyAgICAgICAgLXdlYmtpdC10cmFuc2l0aW9uLXByb3Bl
cnR5OiB3aWR0aDsKKyAgICAgICAgLXdlYmtpdC10cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjVzOwor
ICAgIH0KKyAgICA8L3N0eWxlPgorICAgIDxzY3JpcHQgc3JjPSJ0cmFuc2l0aW9uLWVuZC1ldmVu
dC1oZWxwZXJzLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgdHlwZT0idGV4dC9q
YXZhc2NyaXB0Ij4KKyAgICBmdW5jdGlvbiBydW5BbmltYXRpb24oKSB7CisgICAgICAgIHZhciBi
b3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYm94MScpOworICAgICAgICBib3guc3R5bGUu
d2lkdGggPSAnMjAwcHgnOworICAgIH0KKyAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbkxv
YWQ9InJ1bkFuaW1hdGlvbigpIj4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAg
ICBkZXNjcmlwdGlvbigiVGVzdCB0byBtYWtlIHN1cmUgdGhhdCBpZiBwcmVmaXhlZCB0cmFuc2l0
aW9uIGV2ZW50cyBhcmUgbW9kaWZpZWQgd2UgY29ycmVjdGx5IG1vZGlmeSB1bnByZWZpeGVkIGV2
ZW50cy4iKTsKKworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5l
ci53YWl0VW50aWxEb25lKCk7CisKKyAgICB2YXIgdGVzdENvbnRhaW5lciA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImRpdiIpOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGVzdENv
bnRhaW5lcik7CisKKyAgICB0ZXN0Q29udGFpbmVyLmlubmVySFRNTCA9ICc8ZGl2IGlkPSJib3gx
IiBjbGFzcz0iYm94Ij48L2Rpdj4nOworICAgIHZhciBib3ggPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnYm94MScpOworCisgICAgdmFyIHRyYW5zaXRpb25FdmVudENvbnRhaW5lcjsKKyAgICB2
YXIgdHJhbnNpdGlvbkV2ZW50Qm94OworCisgICAgZnVuY3Rpb24gaW5uZXJUcmFuc2l0aW9uRW5k
RXZlbnQoZSkKKyAgICB7CisgICAgICAgIHRyYW5zaXRpb25FdmVudEJveCA9IGU7CisgICAgICAg
IGUucHJldmVudERlZmF1bHQoKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBvdXRlclRyYW5zaXRp
b25FbmRFdmVudChlKQorICAgIHsKKyAgICAgICAgdHJhbnNpdGlvbkV2ZW50Q29udGFpbmVyID0g
ZTsKKyAgICAgICAgc2hvdWxkQmUoInRyYW5zaXRpb25FdmVudENvbnRhaW5lci50eXBlIiwgInRy
YW5zaXRpb25FdmVudEJveC50eXBlIik7CisgICAgICAgIHNob3VsZEJlKCJ0cmFuc2l0aW9uRXZl
bnRDb250YWluZXIuYnViYmxlcyIsICJ0cmFuc2l0aW9uRXZlbnRCb3guYnViYmxlcyIpOworICAg
ICAgICBzaG91bGRCZSgidHJhbnNpdGlvbkV2ZW50Q29udGFpbmVyLnRpbWVTdGFtcCIsICJ0cmFu
c2l0aW9uRXZlbnRCb3gudGltZVN0YW1wIik7CisgICAgICAgIHNob3VsZEJlKCJ0cmFuc2l0aW9u
RXZlbnRDb250YWluZXIuY2FuY2VsYWJsZSIsICJ0cmFuc2l0aW9uRXZlbnRCb3guY2FuY2VsYWJs
ZSIpOworICAgICAgICBzaG91bGRCZSgidHJhbnNpdGlvbkV2ZW50Q29udGFpbmVyLnNyY0VsZW1l
bnQiLCAidHJhbnNpdGlvbkV2ZW50Qm94LnNyY0VsZW1lbnQiKTsKKyAgICAgICAgc2hvdWxkQmUo
InRyYW5zaXRpb25FdmVudENvbnRhaW5lci5yZXR1cm5WYWx1ZSIsICJ0cmFuc2l0aW9uRXZlbnRC
b3gucmV0dXJuVmFsdWUiKTsKKyAgICAgICAgc2hvdWxkQmUoInRyYW5zaXRpb25FdmVudENvbnRh
aW5lci5jYW5jZWxCdWJibGUiLCAidHJhbnNpdGlvbkV2ZW50Qm94LmNhbmNlbEJ1YmJsZSIpOwor
ICAgICAgICBzaG91bGRCZSgidHJhbnNpdGlvbkV2ZW50Q29udGFpbmVyLmRlZmF1bHRQcmV2ZW50
ZWQiLCAidHJhbnNpdGlvbkV2ZW50Qm94LmRlZmF1bHRQcmV2ZW50ZWQiKTsKKyAgICAgICAgc2hv
dWxkQmUoInRyYW5zaXRpb25FdmVudENvbnRhaW5lci50YXJnZXQiLCAidHJhbnNpdGlvbkV2ZW50
Qm94LnRhcmdldCIpOworICAgICAgICBzaG91bGRCZSgidHJhbnNpdGlvbkV2ZW50Q29udGFpbmVy
LmN1cnJlbnRUYXJnZXQiLCAidGVzdENvbnRhaW5lciIpOworICAgICAgICAvLyBUcmFuc2l0aW9u
RW5kIGV2ZW50IHNwZWNpZmljIHByb3BlcnRpZXMuCisgICAgICAgIHNob3VsZEJlKCJ0cmFuc2l0
aW9uRXZlbnRDb250YWluZXIucHNldWRvRWxlbWVudCIsICJ0cmFuc2l0aW9uRXZlbnRCb3gucHNl
dWRvRWxlbWVudCIpOworICAgICAgICBzaG91bGRCZSgidHJhbnNpdGlvbkV2ZW50Q29udGFpbmVy
LmVsYXBzZWRUaW1lIiwgInRyYW5zaXRpb25FdmVudEJveC5lbGFwc2VkVGltZSIpOworICAgICAg
ICBzaG91bGRCZSgidHJhbnNpdGlvbkV2ZW50Q29udGFpbmVyLnByb3BlcnR5TmFtZSIsICJ0cmFu
c2l0aW9uRXZlbnRCb3gucHJvcGVydHlOYW1lIik7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICBkb2N1
bWVudC5ib2R5LnJlbW92ZUNoaWxkKHRlc3RDb250YWluZXIpOworICAgIH0KKworICAgIHRlc3RD
b250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcignd2Via2l0VHJhbnNpdGlvbkVuZCcsIG91dGVyVHJh
bnNpdGlvbkVuZEV2ZW50LCBmYWxzZSk7CisgICAgYm94LmFkZEV2ZW50TGlzdGVuZXIoJ3dlYmtp
dFRyYW5zaXRpb25FbmQnLCBpbm5lclRyYW5zaXRpb25FbmRFdmVudCwgZmFsc2UpOworPC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>201945</attachid>
            <date>2013-05-16 05:38:17 -0700</date>
            <delta_ts>2013-05-16 13:19:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-115656-20130516093711.patch</filename>
            <type>text/plain</type>
            <size>18287</size>
            <attacher name="Alexis Menard (darktears)">menard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUwMDI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDI3OWQ3ZTBkZDJkYzZk
ZTFiZTlhZjNjN2VjMTMyMTdlOTE2NTJhZS4uZWI0MDc4MTZjYmQyMzgxMzNhOTZjNWUxNDBhZDQy
NzdjNmFjNjhkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDEzLTA1LTE2ICBBbGV4
aXMgTWVuYXJkICA8YWxleGlzQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVncmVzc2lvbjogRXZl
bnQjc3RvcFByb3BhZ2F0aW9uKCkgZG9lcyBub3QgaGFsdCBidWJibGluZyBmb3Igd2Via2l0VHJh
bnNpdGlvbkVuZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTE1NjU2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgSWYgd2UgY3JlYXRlIGEgcHJlZml4ZWQgZXZlbnQgdG8gZGlzcGF0Y2ggaXQgKGluIHRoZSBj
YXNlIHdlIGhhdmUgb25seQorICAgICAgICBwcmVmaXhlZCBldmVudCBsaXN0ZW5lcnMgaW4gY2xp
ZW50J3MgY29kZSkgdGhlbiB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB0bworICAgICAgICBrZWVwIGl0
IGluIHN5bmMgd2l0aCB0aGUgb3JpZ2luYWwgdW5wcmVmaXhlZCBldmVudCBhZnRlciBpdCBoYXMg
YmVlbgorICAgICAgICBkaXNwYXRjaGVkLiBXaGlsZSBiZWluZyBkaXNwYXRjaGVkIHRoZSBldmVu
dCBjYW4gYmUgbW9kaWZpZWQgYnkKKyAgICAgICAgY2xpZW50J3MgY29kZSBhbmQgd2hlbiBwcm9w
YWdhdGVkIGJhY2sgdG8gb3V0ZXIgZWxlbWVudHMsIGF0dHJpYnV0ZXMgd2VyZQorICAgICAgICBu
b3QgdXBkYXRlZC4gVGhpcyBwYXRjaCBjaGFuZ2VzIHRoZSBvbGQgZGVzaWduIG9mIGNyZWF0aW5n
IGEgc2VwYXJhdGUgZXZlbnQKKyAgICAgICAgZm9yIHRoZSBwcmVmaXhlZCBjYXNlIGFuZCBub3cg
Y2hhbmdlIHRoZSB0eXBlIG9mIHRoZSBldmVudCAoc28gdGhlIG5hbWUpIGJlZm9yZQorICAgICAg
ICBkaXNwYXRjaGluZyBpdCwga2VlcGluZyB0aGUgYXR0cmlidXRlcyBpZiBjaGFuZ2VkIGFuZCB0
aGVuIHJlbmFtZSBpdAorICAgICAgICBiYWNrIHRvIHVucHJlZml4ZWQgd2hlbiB0aGUgZGlzcGF0
Y2hpbmcgaXMgZmluaXNoZWQuCisKKyAgICAgICAgVGVzdHM6IHRyYW5zaXRpb25zL3RyYW5zaXRp
b24tZW5kLWV2ZW50LXByZWZpeGVkLTAxLmh0bWwKKyAgICAgICAgICAgICAgIHRyYW5zaXRpb25z
L3RyYW5zaXRpb24tZW5kLWV2ZW50LXByZWZpeGVkLTAyLmh0bWwKKyAgICAgICAgICAgICAgIHRy
YW5zaXRpb25zL3RyYW5zaXRpb24tZW5kLWV2ZW50LXByZWZpeGVkLTAzLmh0bWwKKworICAgICAg
ICAqIGRvbS9FdmVudC5oOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnQ6OnNldFR5cGUpOgorICAg
ICAgICAqIGRvbS9FdmVudFRhcmdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudFRhcmdl
dDo6ZmlyZUV2ZW50TGlzdGVuZXJzKToKKwogMjAxMy0wNS0xMyAgQmVhciBUcmF2aXMgIDxiZXRy
YXZpc0BhZG9iZS5jb20+CiAKICAgICAgICAgW2NzcyBleGNsdXNpb25zXSBFbmFibGUgQ1NTIEV4
Y2x1c2lvbnMgYnkgZGVmYXVsdCB3aGVuIENTU19FWENMVVNJT05TIGlzIHNldApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQu
aAppbmRleCBhOWQxMjk5ZGJjNzU4NDQ0ZDA1MGE3OGRlYWRjZjBlMDJlODMxOTZjLi40NzI1YWUz
NjNjZDMwY2Q2YTk0NTNjZTVjMDBkOTEzOTQ2NWU4ZTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuaApAQCAtOTMs
NiArOTMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbml0RXZlbnQoY29uc3QgQXRvbWljU3RyaW5n
JiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlKTsKIAogICAgIGNvbnN0IEF0
b21pY1N0cmluZyYgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQorICAgIHZvaWQgc2V0
VHlwZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUpIHsgbV90eXBlID0gdHlwZTsgfQogICAgIAog
ICAgIEV2ZW50VGFyZ2V0KiB0YXJnZXQoKSBjb25zdCB7IHJldHVybiBtX3RhcmdldC5nZXQoKTsg
fQogICAgIHZvaWQgc2V0VGFyZ2V0KFBhc3NSZWZQdHI8RXZlbnRUYXJnZXQ+KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRXZlbnRUYXJnZXQuY3BwCmluZGV4IDI2NjliMWFiZWVjZWQ1ZWQ4NDRjNDMyNGVjMTdkODkw
YjM0NDc3OGQuLjcyMzYzOTk4ZjkyMWI3NTg1MzI1MzlmMDgxYmQwYTA3MzU3MWRjNmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcApAQCAtMTYyLDIwICsxNjIsNiBAQCB2b2lkIEV2ZW50
VGFyZ2V0Ojp1bmNhdWdodEV4Y2VwdGlvbkluRXZlbnRIYW5kbGVyKCkKIHsKIH0KIAotc3RhdGlj
IFBhc3NSZWZQdHI8RXZlbnQ+IGNyZWF0ZU1hdGNoaW5nUHJlZml4ZWRFdmVudChjb25zdCBFdmVu
dCogZXZlbnQpCi17Ci0gICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLnRyYW5z
aXRpb25lbmRFdmVudCkgewotICAgICAgICBjb25zdCBXZWJLaXRUcmFuc2l0aW9uRXZlbnQqIHRy
YW5zaXRpb25FdmVudCA9IHN0YXRpY19jYXN0PGNvbnN0IFdlYktpdFRyYW5zaXRpb25FdmVudCo+
KGV2ZW50KTsKLSAgICAgICAgUmVmUHRyPEV2ZW50PiBwcmVmaXhlZEV2ZW50ID0gV2ViS2l0VHJh
bnNpdGlvbkV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLndlYmtpdFRyYW5zaXRpb25FbmRFdmVu
dCwgdHJhbnNpdGlvbkV2ZW50LT5wcm9wZXJ0eU5hbWUoKSwgdHJhbnNpdGlvbkV2ZW50LT5lbGFw
c2VkVGltZSgpLCB0cmFuc2l0aW9uRXZlbnQtPnBzZXVkb0VsZW1lbnQoKSk7Ci0gICAgICAgIHBy
ZWZpeGVkRXZlbnQtPnNldFRhcmdldChldmVudC0+dGFyZ2V0KCkpOwotICAgICAgICBwcmVmaXhl
ZEV2ZW50LT5zZXRDdXJyZW50VGFyZ2V0KGV2ZW50LT5jdXJyZW50VGFyZ2V0KCkpOwotICAgICAg
ICBwcmVmaXhlZEV2ZW50LT5zZXRFdmVudFBoYXNlKGV2ZW50LT5ldmVudFBoYXNlKCkpOwotICAg
ICAgICByZXR1cm4gcHJlZml4ZWRFdmVudC5yZWxlYXNlKCk7Ci0gICAgfQotICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiAwOwotfQotCiBzdGF0aWMgQXRvbWljU3RyaW5nIHBy
ZWZpeGVkVHlwZShjb25zdCBFdmVudCogZXZlbnQpCiB7CiAgICAgaWYgKGV2ZW50LT50eXBlKCkg
PT0gZXZlbnROYW1lcygpLnRyYW5zaXRpb25lbmRFdmVudCkKQEAgLTE5NCw3ICsxODAsNyBAQCBi
b29sIEV2ZW50VGFyZ2V0OjpmaXJlRXZlbnRMaXN0ZW5lcnMoRXZlbnQqIGV2ZW50KQogICAgICAg
ICByZXR1cm4gdHJ1ZTsKIAogICAgIEV2ZW50TGlzdGVuZXJWZWN0b3IqIGxpc3RlbmVyUHJlZml4
ZWRWZWN0b3IgPSAwOwotICAgIEF0b21pY1N0cmluZyBwcmVmaXhlZFR5cGVOYW1lID0gcHJlZml4
ZWRUeXBlKGV2ZW50KTsKKyAgICBjb25zdCBBdG9taWNTdHJpbmcgcHJlZml4ZWRUeXBlTmFtZSA9
IHByZWZpeGVkVHlwZShldmVudCk7CiAgICAgaWYgKCFwcmVmaXhlZFR5cGVOYW1lLmlzRW1wdHko
KSkKICAgICAgICAgbGlzdGVuZXJQcmVmaXhlZFZlY3RvciA9IGQtPmV2ZW50TGlzdGVuZXJNYXAu
ZmluZChwcmVmaXhlZFR5cGVOYW1lKTsKIApAQCAtMjAyLDggKzE4OCwxMiBAQCBib29sIEV2ZW50
VGFyZ2V0OjpmaXJlRXZlbnRMaXN0ZW5lcnMoRXZlbnQqIGV2ZW50KQogCiAgICAgaWYgKGxpc3Rl
bmVyVW5wcmVmaXhlZFZlY3RvcikKICAgICAgICAgZmlyZUV2ZW50TGlzdGVuZXJzKGV2ZW50LCBk
LCAqbGlzdGVuZXJVbnByZWZpeGVkVmVjdG9yKTsKLSAgICBlbHNlIGlmIChsaXN0ZW5lclByZWZp
eGVkVmVjdG9yKQotICAgICAgICBmaXJlRXZlbnRMaXN0ZW5lcnMoY3JlYXRlTWF0Y2hpbmdQcmVm
aXhlZEV2ZW50KGV2ZW50KS5nZXQoKSwgZCwgKmxpc3RlbmVyUHJlZml4ZWRWZWN0b3IpOworICAg
IGVsc2UgaWYgKGxpc3RlbmVyUHJlZml4ZWRWZWN0b3IpIHsKKyAgICAgICAgY29uc3QgQXRvbWlj
U3RyaW5nIHVucHJlZml4ZWRUeXBlTmFtZSA9IGV2ZW50LT50eXBlKCk7CisgICAgICAgIGV2ZW50
LT5zZXRUeXBlKHByZWZpeGVkVHlwZU5hbWUpOworICAgICAgICBmaXJlRXZlbnRMaXN0ZW5lcnMo
ZXZlbnQsIGQsICpsaXN0ZW5lclByZWZpeGVkVmVjdG9yKTsKKyAgICAgICAgZXZlbnQtPnNldFR5
cGUodW5wcmVmaXhlZFR5cGVOYW1lKTsKKyAgICB9CiAKICAgICBpZiAoIXByZWZpeGVkVHlwZU5h
bWUuaXNFbXB0eSgpKSB7CiAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQg
PSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNGEwZmM0MmZhNWNjYWIwNjA0Yjg4
MWM3Zjg1YjNmZWEzN2M5ZDRlMy4uNGI1MjMwMGM4NDBiYmNhNGVjYWZjNWYzOWExOGIyNTEyZDM5
ZWQ2OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEzLTA1LTE0ICBBbGV4aXMgTWVuYXJkICA8
YWxleGlzQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVncmVzc2lvbjogRXZlbnQjc3RvcFByb3Bh
Z2F0aW9uKCkgZG9lcyBub3QgaGFsdCBidWJibGluZyBmb3Igd2Via2l0VHJhbnNpdGlvbkVuZAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1NjU2CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgbmV3
IHRlc3RzIHRvIGNvdmVyIHRoZSBidWcuCisKKyAgICAgICAgKiB0cmFuc2l0aW9ucy90cmFuc2l0
aW9uLWVuZC1ldmVudC1wcmVmaXhlZC0wMy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IHRyYW5zaXRpb25zL3RyYW5zaXRpb24tZW5kLWV2ZW50LXByZWZpeGVkLTAzLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIHRyYW5zaXRpb25zL3RyYW5zaXRpb24tZW5kLWV2ZW50LXByZWZpeGVkLTAy
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdHJhbnNpdGlvbnMvdHJhbnNpdGlvbi1l
bmQtZXZlbnQtcHJlZml4ZWQtMDIuaHRtbDogQWRkZWQuCisgICAgICAgICogdHJhbnNpdGlvbnMv
dHJhbnNpdGlvbi1lbmQtZXZlbnQtcHJlZml4ZWQtMDEtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiB0cmFuc2l0aW9ucy90cmFuc2l0aW9uLWVuZC1ldmVudC1wcmVmaXhlZC0wMS5odG1s
OiBBZGRlZC4KKwogMjAxMy0wNS0xMyAgQmVhciBUcmF2aXMgIDxiZXRyYXZpc0BhZG9iZS5jb20+
CiAKICAgICAgICAgW2NzcyBleGNsdXNpb25zXSBFbmFibGUgQ1NTIEV4Y2x1c2lvbnMgYnkgZGVm
YXVsdCB3aGVuIENTU19FWENMVVNJT05TIGlzIHNldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
dHJhbnNpdGlvbnMvdHJhbnNpdGlvbi1lbmQtZXZlbnQtcHJlZml4ZWQtMDEtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvdHJhbnNpdGlvbi1lbmQtZXZlbnQtcHJlZml4ZWQt
MDEtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk5MmRlNjIwMTQ2Yzc3MTJiMTE2MWQyYzhmMTdl
Yzg5NzRmMDE0YzkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90cmFuc2l0aW9ucy90
cmFuc2l0aW9uLWVuZC1ldmVudC1wcmVmaXhlZC0wMS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwy
MiBAQAorVGVzdCB0byBtYWtlIHN1cmUgdGhhdCBpZiBwcmVmaXhlZCB0cmFuc2l0aW9uIGV2ZW50
cyBhcmUgbW9kaWZpZWQgd2UgY29ycmVjdGx5IG1vZGlmeSB1bnByZWZpeGVkIGV2ZW50cy4KKwor
T24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9s
bG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKKworVEVTVCBDT01QTEVURQorUEFTUyB0cmFuc2l0aW9uRXZlbnRDb250YWluZXIudHlw
ZSBpcyB0cmFuc2l0aW9uRXZlbnRCb3gudHlwZQorUEFTUyB0cmFuc2l0aW9uRXZlbnRDb250YWlu
ZXIuYnViYmxlcyBpcyB0cmFuc2l0aW9uRXZlbnRCb3guYnViYmxlcworUEFTUyB0cmFuc2l0aW9u
RXZlbnRDb250YWluZXIudGltZVN0YW1wIGlzIHRyYW5zaXRpb25FdmVudEJveC50aW1lU3RhbXAK
K1BBU1MgdHJhbnNpdGlvbkV2ZW50Q29udGFpbmVyLmNhbmNlbGFibGUgaXMgdHJhbnNpdGlvbkV2
ZW50Qm94LmNhbmNlbGFibGUKK1BBU1MgdHJhbnNpdGlvbkV2ZW50Q29udGFpbmVyLnNyY0VsZW1l
bnQgaXMgdHJhbnNpdGlvbkV2ZW50Qm94LnNyY0VsZW1lbnQKK1BBU1MgdHJhbnNpdGlvbkV2ZW50
Q29udGFpbmVyLnJldHVyblZhbHVlIGlzIHRyYW5zaXRpb25FdmVudEJveC5yZXR1cm5WYWx1ZQor
UEFTUyB0cmFuc2l0aW9uRXZlbnRDb250YWluZXIuY2FuY2VsQnViYmxlIGlzIHRyYW5zaXRpb25F
dmVudEJveC5jYW5jZWxCdWJibGUKK1BBU1MgdHJhbnNpdGlvbkV2ZW50Q29udGFpbmVyLmRlZmF1
bHRQcmV2ZW50ZWQgaXMgdHJhbnNpdGlvbkV2ZW50Qm94LmRlZmF1bHRQcmV2ZW50ZWQKK1BBU1Mg
dHJhbnNpdGlvbkV2ZW50Q29udGFpbmVyLnRhcmdldCBpcyB0cmFuc2l0aW9uRXZlbnRCb3gudGFy
Z2V0CitQQVNTIHRyYW5zaXRpb25FdmVudENvbnRhaW5lci5jdXJyZW50VGFyZ2V0IGlzIHRlc3RD
b250YWluZXIKK1BBU1MgdHJhbnNpdGlvbkV2ZW50Q29udGFpbmVyLnBzZXVkb0VsZW1lbnQgaXMg
dHJhbnNpdGlvbkV2ZW50Qm94LnBzZXVkb0VsZW1lbnQKK1BBU1MgdHJhbnNpdGlvbkV2ZW50Q29u
dGFpbmVyLmVsYXBzZWRUaW1lIGlzIHRyYW5zaXRpb25FdmVudEJveC5lbGFwc2VkVGltZQorUEFT
UyB0cmFuc2l0aW9uRXZlbnRDb250YWluZXIucHJvcGVydHlOYW1lIGlzIHRyYW5zaXRpb25FdmVu
dEJveC5wcm9wZXJ0eU5hbWUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMv
dHJhbnNpdGlvbi1lbmQtZXZlbnQtcHJlZml4ZWQtMDEuaHRtbCBiL0xheW91dFRlc3RzL3RyYW5z
aXRpb25zL3RyYW5zaXRpb24tZW5kLWV2ZW50LXByZWZpeGVkLTAxLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
Y2U1MzdiNmFkNDFlNGVjZjFlMDFjMjBlOWZhMWVmNTYwZWZhNDI4ZAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3RyYW5zaXRpb25zL3RyYW5zaXRpb24tZW5kLWV2ZW50LXByZWZpeGVk
LTAxLmh0bWwKQEAgLTAsMCArMSw3NCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorICAgIDxzdHlsZT4KKyAgICAuYm94IHsKKyAgICAg
ICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgICAgICBsZWZ0OiAwOworICAgICAgICBoZWlnaHQ6
IDEwMHB4OworICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgIG1hcmdpbjogMTBweDsKKyAg
ICAgICAgYmFja2dyb3VuZC1jb2xvcjogYmx1ZTsKKyAgICAgICAgLXdlYmtpdC10cmFuc2l0aW9u
LXByb3BlcnR5OiB3aWR0aDsKKyAgICAgICAgLXdlYmtpdC10cmFuc2l0aW9uLWR1cmF0aW9uOiAw
LjVzOworICAgIH0KKyAgICA8L3N0eWxlPgorICAgIDxzY3JpcHQgc3JjPSJ0cmFuc2l0aW9uLWVu
ZC1ldmVudC1oZWxwZXJzLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vZmFzdC9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgdHlwZT0i
dGV4dC9qYXZhc2NyaXB0Ij4KKyAgICBmdW5jdGlvbiBydW5BbmltYXRpb24oKSB7CisgICAgICAg
IHZhciBib3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYm94MScpOworICAgICAgICBib3gu
c3R5bGUud2lkdGggPSAnMjAwcHgnOworICAgIH0KKyAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eSBvbkxvYWQ9InJ1bkFuaW1hdGlvbigpIj4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0
Ij4KKyAgICBkZXNjcmlwdGlvbigiVGVzdCB0byBtYWtlIHN1cmUgdGhhdCBpZiBwcmVmaXhlZCB0
cmFuc2l0aW9uIGV2ZW50cyBhcmUgbW9kaWZpZWQgd2UgY29ycmVjdGx5IG1vZGlmeSB1bnByZWZp
eGVkIGV2ZW50cy4iKTsKKworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVz
dFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisKKyAgICB2YXIgdGVzdENvbnRhaW5lciA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQo
dGVzdENvbnRhaW5lcik7CisKKyAgICB0ZXN0Q29udGFpbmVyLmlubmVySFRNTCA9ICc8ZGl2IGlk
PSJib3gxIiBjbGFzcz0iYm94Ij48L2Rpdj4nOworICAgIHZhciBib3ggPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnYm94MScpOworCisgICAgdmFyIHRyYW5zaXRpb25FdmVudENvbnRhaW5lcjsK
KyAgICB2YXIgdHJhbnNpdGlvbkV2ZW50Qm94OworCisgICAgZnVuY3Rpb24gaW5uZXJUcmFuc2l0
aW9uRW5kRXZlbnQoZSkKKyAgICB7CisgICAgICAgIHRyYW5zaXRpb25FdmVudEJveCA9IGU7Cisg
ICAgfQorCisgICAgZnVuY3Rpb24gb3V0ZXJUcmFuc2l0aW9uRW5kRXZlbnQoZSkKKyAgICB7Cisg
ICAgICAgIHRyYW5zaXRpb25FdmVudENvbnRhaW5lciA9IGU7CisgICAgICAgIHNob3VsZEJlKCJ0
cmFuc2l0aW9uRXZlbnRDb250YWluZXIudHlwZSIsICJ0cmFuc2l0aW9uRXZlbnRCb3gudHlwZSIp
OworICAgICAgICBzaG91bGRCZSgidHJhbnNpdGlvbkV2ZW50Q29udGFpbmVyLmJ1YmJsZXMiLCAi
dHJhbnNpdGlvbkV2ZW50Qm94LmJ1YmJsZXMiKTsKKyAgICAgICAgc2hvdWxkQmUoInRyYW5zaXRp
b25FdmVudENvbnRhaW5lci50aW1lU3RhbXAiLCAidHJhbnNpdGlvbkV2ZW50Qm94LnRpbWVTdGFt
cCIpOworICAgICAgICBzaG91bGRCZSgidHJhbnNpdGlvbkV2ZW50Q29udGFpbmVyLmNhbmNlbGFi
bGUiLCAidHJhbnNpdGlvbkV2ZW50Qm94LmNhbmNlbGFibGUiKTsKKyAgICAgICAgc2hvdWxkQmUo
InRyYW5zaXRpb25FdmVudENvbnRhaW5lci5zcmNFbGVtZW50IiwgInRyYW5zaXRpb25FdmVudEJv
eC5zcmNFbGVtZW50Iik7CisgICAgICAgIHNob3VsZEJlKCJ0cmFuc2l0aW9uRXZlbnRDb250YWlu
ZXIucmV0dXJuVmFsdWUiLCAidHJhbnNpdGlvbkV2ZW50Qm94LnJldHVyblZhbHVlIik7CisgICAg
ICAgIHNob3VsZEJlKCJ0cmFuc2l0aW9uRXZlbnRDb250YWluZXIuY2FuY2VsQnViYmxlIiwgInRy
YW5zaXRpb25FdmVudEJveC5jYW5jZWxCdWJibGUiKTsKKyAgICAgICAgc2hvdWxkQmUoInRyYW5z
aXRpb25FdmVudENvbnRhaW5lci5kZWZhdWx0UHJldmVudGVkIiwgInRyYW5zaXRpb25FdmVudEJv
eC5kZWZhdWx0UHJldmVudGVkIik7CisgICAgICAgIHNob3VsZEJlKCJ0cmFuc2l0aW9uRXZlbnRD
b250YWluZXIudGFyZ2V0IiwgInRyYW5zaXRpb25FdmVudEJveC50YXJnZXQiKTsKKyAgICAgICAg
c2hvdWxkQmUoInRyYW5zaXRpb25FdmVudENvbnRhaW5lci5jdXJyZW50VGFyZ2V0IiwgInRlc3RD
b250YWluZXIiKTsKKyAgICAgICAgLy8gVHJhbnNpdGlvbkVuZCBldmVudCBzcGVjaWZpYyBwcm9w
ZXJ0aWVzLgorICAgICAgICBzaG91bGRCZSgidHJhbnNpdGlvbkV2ZW50Q29udGFpbmVyLnBzZXVk
b0VsZW1lbnQiLCAidHJhbnNpdGlvbkV2ZW50Qm94LnBzZXVkb0VsZW1lbnQiKTsKKyAgICAgICAg
c2hvdWxkQmUoInRyYW5zaXRpb25FdmVudENvbnRhaW5lci5lbGFwc2VkVGltZSIsICJ0cmFuc2l0
aW9uRXZlbnRCb3guZWxhcHNlZFRpbWUiKTsKKyAgICAgICAgc2hvdWxkQmUoInRyYW5zaXRpb25F
dmVudENvbnRhaW5lci5wcm9wZXJ0eU5hbWUiLCAidHJhbnNpdGlvbkV2ZW50Qm94LnByb3BlcnR5
TmFtZSIpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0
UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZCh0
ZXN0Q29udGFpbmVyKTsKKyAgICB9CisKKyAgICB0ZXN0Q29udGFpbmVyLmFkZEV2ZW50TGlzdGVu
ZXIoJ3dlYmtpdFRyYW5zaXRpb25FbmQnLCBvdXRlclRyYW5zaXRpb25FbmRFdmVudCwgZmFsc2Up
OworICAgIGJveC5hZGRFdmVudExpc3RlbmVyKCd3ZWJraXRUcmFuc2l0aW9uRW5kJywgaW5uZXJU
cmFuc2l0aW9uRW5kRXZlbnQsIGZhbHNlKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2Zh
c3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90cmFuc2l0aW9ucy90cmFuc2l0aW9uLWVuZC1l
dmVudC1wcmVmaXhlZC0wMi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90cmFuc2l0aW9ucy90
cmFuc2l0aW9uLWVuZC1ldmVudC1wcmVmaXhlZC0wMi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MjE4ZmI5ZWUwMmI5N2YwNjljNTIxMzYwMDFlYjdhNmQzZTRkOTZjMAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3RyYW5zaXRpb25zL3RyYW5zaXRpb24tZW5kLWV2ZW50LXByZWZpeGVk
LTAyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitUZXN0IHRvIG1ha2Ugc3VyZSB0aGF0
IGlmIHByZWZpeGVkIHRyYW5zaXRpb24gZXZlbnRzIGFyZSBtb2RpZmllZCB3ZSBjb3JyZWN0bHkg
bW9kaWZ5IHVucHJlZml4ZWQgZXZlbnRzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBz
ZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisK
KworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCitQQVNT
IHRyYW5zaXRpb25FdmVudEJveC5jdXJyZW50VGFyZ2V0IGlzIHRyYW5zaXRpb25FdmVudEJveC50
YXJnZXQKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvdHJhbnNpdGlvbi1l
bmQtZXZlbnQtcHJlZml4ZWQtMDIuaHRtbCBiL0xheW91dFRlc3RzL3RyYW5zaXRpb25zL3RyYW5z
aXRpb24tZW5kLWV2ZW50LXByZWZpeGVkLTAyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODVlZDc5NDgxMDlm
ZGY3NDc1MjhhYjY1OTAxMzk5MTRlODc1YjM3NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3RyYW5zaXRpb25zL3RyYW5zaXRpb24tZW5kLWV2ZW50LXByZWZpeGVkLTAyLmh0bWwKQEAg
LTAsMCArMSw1NiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hh
cnNldD0idXRmLTgiPgorICAgIDxzdHlsZT4KKyAgICAuYm94IHsKKyAgICAgICAgcG9zaXRpb246
IHJlbGF0aXZlOworICAgICAgICBsZWZ0OiAwOworICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAg
ICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgIG1hcmdpbjogMTBweDsKKyAgICAgICAgYmFja2dy
b3VuZC1jb2xvcjogYmx1ZTsKKyAgICAgICAgLXdlYmtpdC10cmFuc2l0aW9uLXByb3BlcnR5OiB3
aWR0aDsKKyAgICAgICAgLXdlYmtpdC10cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjVzOworICAgIH0K
KyAgICA8L3N0eWxlPgorICAgIDxzY3JpcHQgc3JjPSJ0cmFuc2l0aW9uLWVuZC1ldmVudC1oZWxw
ZXJzLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2Ny
aXB0Ij4KKyAgICBmdW5jdGlvbiBydW5BbmltYXRpb24oKSB7CisgICAgICAgIHZhciBib3ggPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYm94MScpOworICAgICAgICBib3guc3R5bGUud2lkdGgg
PSAnMjAwcHgnOworICAgIH0KKyAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbkxvYWQ9InJ1
bkFuaW1hdGlvbigpIj4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAgICBkZXNj
cmlwdGlvbigiVGVzdCB0byBtYWtlIHN1cmUgdGhhdCBpZiBwcmVmaXhlZCB0cmFuc2l0aW9uIGV2
ZW50cyBhcmUgbW9kaWZpZWQgd2UgY29ycmVjdGx5IG1vZGlmeSB1bnByZWZpeGVkIGV2ZW50cy4i
KTsKKworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci53YWl0
VW50aWxEb25lKCk7CisKKyAgICB2YXIgdGVzdENvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImRpdiIpOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGVzdENvbnRhaW5l
cik7CisKKyAgICB0ZXN0Q29udGFpbmVyLmlubmVySFRNTCA9ICc8ZGl2IGlkPSJib3gxIiBjbGFz
cz0iYm94Ij48L2Rpdj4nOworICAgIHZhciBib3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
Ym94MScpOworCisgICAgdmFyIHRyYW5zaXRpb25FdmVudEJveDsKKworICAgIGZ1bmN0aW9uIHRy
YW5zaXRpb25FbmRFdmVudChlKQorICAgIHsKKyAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTsK
KyAgICAgICAgdHJhbnNpdGlvbkV2ZW50Qm94ID0gZTsKKyAgICAgICAgc2hvdWxkQmUoInRyYW5z
aXRpb25FdmVudEJveC5jdXJyZW50VGFyZ2V0IiwgInRyYW5zaXRpb25FdmVudEJveC50YXJnZXQi
KTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5l
ci5ub3RpZnlEb25lKCk7CisgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQodGVzdENv
bnRhaW5lcik7CisgICAgfQorCisgICAgdGVzdENvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKCd3
ZWJraXRUcmFuc2l0aW9uRW5kJywgdHJhbnNpdGlvbkVuZEV2ZW50LCBmYWxzZSk7CisgICAgYm94
LmFkZEV2ZW50TGlzdGVuZXIoJ3dlYmtpdFRyYW5zaXRpb25FbmQnLCB0cmFuc2l0aW9uRW5kRXZl
bnQsIGZhbHNlKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy90cmFuc2l0aW9ucy90cmFuc2l0aW9uLWVuZC1ldmVudC1wcmVmaXhlZC0w
My1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90cmFuc2l0aW9ucy90cmFuc2l0aW9uLWVuZC1l
dmVudC1wcmVmaXhlZC0wMy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTkyZGU2MjAxNDZjNzcx
MmIxMTYxZDJjOGYxN2VjODk3NGYwMTRjOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3RyYW5zaXRpb25zL3RyYW5zaXRpb24tZW5kLWV2ZW50LXByZWZpeGVkLTAzLWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDIyIEBACitUZXN0IHRvIG1ha2Ugc3VyZSB0aGF0IGlmIHByZWZpeGVkIHRy
YW5zaXRpb24gZXZlbnRzIGFyZSBtb2RpZmllZCB3ZSBjb3JyZWN0bHkgbW9kaWZ5IHVucHJlZml4
ZWQgZXZlbnRzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCitQQVNTIHRyYW5zaXRpb25FdmVu
dENvbnRhaW5lci50eXBlIGlzIHRyYW5zaXRpb25FdmVudEJveC50eXBlCitQQVNTIHRyYW5zaXRp
b25FdmVudENvbnRhaW5lci5idWJibGVzIGlzIHRyYW5zaXRpb25FdmVudEJveC5idWJibGVzCitQ
QVNTIHRyYW5zaXRpb25FdmVudENvbnRhaW5lci50aW1lU3RhbXAgaXMgdHJhbnNpdGlvbkV2ZW50
Qm94LnRpbWVTdGFtcAorUEFTUyB0cmFuc2l0aW9uRXZlbnRDb250YWluZXIuY2FuY2VsYWJsZSBp
cyB0cmFuc2l0aW9uRXZlbnRCb3guY2FuY2VsYWJsZQorUEFTUyB0cmFuc2l0aW9uRXZlbnRDb250
YWluZXIuc3JjRWxlbWVudCBpcyB0cmFuc2l0aW9uRXZlbnRCb3guc3JjRWxlbWVudAorUEFTUyB0
cmFuc2l0aW9uRXZlbnRDb250YWluZXIucmV0dXJuVmFsdWUgaXMgdHJhbnNpdGlvbkV2ZW50Qm94
LnJldHVyblZhbHVlCitQQVNTIHRyYW5zaXRpb25FdmVudENvbnRhaW5lci5jYW5jZWxCdWJibGUg
aXMgdHJhbnNpdGlvbkV2ZW50Qm94LmNhbmNlbEJ1YmJsZQorUEFTUyB0cmFuc2l0aW9uRXZlbnRD
b250YWluZXIuZGVmYXVsdFByZXZlbnRlZCBpcyB0cmFuc2l0aW9uRXZlbnRCb3guZGVmYXVsdFBy
ZXZlbnRlZAorUEFTUyB0cmFuc2l0aW9uRXZlbnRDb250YWluZXIudGFyZ2V0IGlzIHRyYW5zaXRp
b25FdmVudEJveC50YXJnZXQKK1BBU1MgdHJhbnNpdGlvbkV2ZW50Q29udGFpbmVyLmN1cnJlbnRU
YXJnZXQgaXMgdGVzdENvbnRhaW5lcgorUEFTUyB0cmFuc2l0aW9uRXZlbnRDb250YWluZXIucHNl
dWRvRWxlbWVudCBpcyB0cmFuc2l0aW9uRXZlbnRCb3gucHNldWRvRWxlbWVudAorUEFTUyB0cmFu
c2l0aW9uRXZlbnRDb250YWluZXIuZWxhcHNlZFRpbWUgaXMgdHJhbnNpdGlvbkV2ZW50Qm94LmVs
YXBzZWRUaW1lCitQQVNTIHRyYW5zaXRpb25FdmVudENvbnRhaW5lci5wcm9wZXJ0eU5hbWUgaXMg
dHJhbnNpdGlvbkV2ZW50Qm94LnByb3BlcnR5TmFtZQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy90cmFuc2l0aW9ucy90cmFuc2l0aW9uLWVuZC1ldmVudC1wcmVmaXhlZC0wMy5odG1sIGIvTGF5
b3V0VGVzdHMvdHJhbnNpdGlvbnMvdHJhbnNpdGlvbi1lbmQtZXZlbnQtcHJlZml4ZWQtMDMuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4xNDZiMGZkNTMzYmRjNWFhM2U0OWI2MDc3MzAzZDE2ZWE1NzRiNTIzCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvdHJhbnNpdGlvbi1lbmQt
ZXZlbnQtcHJlZml4ZWQtMDMuaHRtbApAQCAtMCwwICsxLDc1IEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+CisgICAgPHN0eWxlPgorICAg
IC5ib3ggeworICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAgICAgIGxlZnQ6IDA7Cisg
ICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAgbWFy
Z2luOiAxMHB4OworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBibHVlOworICAgICAgICAtd2Vi
a2l0LXRyYW5zaXRpb24tcHJvcGVydHk6IHdpZHRoOworICAgICAgICAtd2Via2l0LXRyYW5zaXRp
b24tZHVyYXRpb246IDAuNXM7CisgICAgfQorICAgIDwvc3R5bGU+CisgICAgPHNjcmlwdCBzcmM9
InRyYW5zaXRpb24tZW5kLWV2ZW50LWhlbHBlcnMuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQg
c3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CisgICAg
PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAgIGZ1bmN0aW9uIHJ1bkFuaW1hdGlv
bigpIHsKKyAgICAgICAgdmFyIGJveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdib3gxJyk7
CisgICAgICAgIGJveC5zdHlsZS53aWR0aCA9ICcyMDBweCc7CisgICAgfQorICA8L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5IG9uTG9hZD0icnVuQW5pbWF0aW9uKCkiPgorPHNjcmlwdCB0eXBlPSJ0
ZXh0L2phdmFzY3JpcHQiPgorICAgIGRlc2NyaXB0aW9uKCJUZXN0IHRvIG1ha2Ugc3VyZSB0aGF0
IGlmIHByZWZpeGVkIHRyYW5zaXRpb24gZXZlbnRzIGFyZSBtb2RpZmllZCB3ZSBjb3JyZWN0bHkg
bW9kaWZ5IHVucHJlZml4ZWQgZXZlbnRzLiIpOworCisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQorICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKworICAgIHZhciB0ZXN0Q29u
dGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgZG9jdW1lbnQuYm9k
eS5hcHBlbmRDaGlsZCh0ZXN0Q29udGFpbmVyKTsKKworICAgIHRlc3RDb250YWluZXIuaW5uZXJI
VE1MID0gJzxkaXYgaWQ9ImJveDEiIGNsYXNzPSJib3giPjwvZGl2Pic7CisgICAgdmFyIGJveCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdib3gxJyk7CisKKyAgICB2YXIgdHJhbnNpdGlvbkV2
ZW50Q29udGFpbmVyOworICAgIHZhciB0cmFuc2l0aW9uRXZlbnRCb3g7CisKKyAgICBmdW5jdGlv
biBpbm5lclRyYW5zaXRpb25FbmRFdmVudChlKQorICAgIHsKKyAgICAgICAgdHJhbnNpdGlvbkV2
ZW50Qm94ID0gZTsKKyAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOworICAgIH0KKworICAgIGZ1
bmN0aW9uIG91dGVyVHJhbnNpdGlvbkVuZEV2ZW50KGUpCisgICAgeworICAgICAgICB0cmFuc2l0
aW9uRXZlbnRDb250YWluZXIgPSBlOworICAgICAgICBzaG91bGRCZSgidHJhbnNpdGlvbkV2ZW50
Q29udGFpbmVyLnR5cGUiLCAidHJhbnNpdGlvbkV2ZW50Qm94LnR5cGUiKTsKKyAgICAgICAgc2hv
dWxkQmUoInRyYW5zaXRpb25FdmVudENvbnRhaW5lci5idWJibGVzIiwgInRyYW5zaXRpb25FdmVu
dEJveC5idWJibGVzIik7CisgICAgICAgIHNob3VsZEJlKCJ0cmFuc2l0aW9uRXZlbnRDb250YWlu
ZXIudGltZVN0YW1wIiwgInRyYW5zaXRpb25FdmVudEJveC50aW1lU3RhbXAiKTsKKyAgICAgICAg
c2hvdWxkQmUoInRyYW5zaXRpb25FdmVudENvbnRhaW5lci5jYW5jZWxhYmxlIiwgInRyYW5zaXRp
b25FdmVudEJveC5jYW5jZWxhYmxlIik7CisgICAgICAgIHNob3VsZEJlKCJ0cmFuc2l0aW9uRXZl
bnRDb250YWluZXIuc3JjRWxlbWVudCIsICJ0cmFuc2l0aW9uRXZlbnRCb3guc3JjRWxlbWVudCIp
OworICAgICAgICBzaG91bGRCZSgidHJhbnNpdGlvbkV2ZW50Q29udGFpbmVyLnJldHVyblZhbHVl
IiwgInRyYW5zaXRpb25FdmVudEJveC5yZXR1cm5WYWx1ZSIpOworICAgICAgICBzaG91bGRCZSgi
dHJhbnNpdGlvbkV2ZW50Q29udGFpbmVyLmNhbmNlbEJ1YmJsZSIsICJ0cmFuc2l0aW9uRXZlbnRC
b3guY2FuY2VsQnViYmxlIik7CisgICAgICAgIHNob3VsZEJlKCJ0cmFuc2l0aW9uRXZlbnRDb250
YWluZXIuZGVmYXVsdFByZXZlbnRlZCIsICJ0cmFuc2l0aW9uRXZlbnRCb3guZGVmYXVsdFByZXZl
bnRlZCIpOworICAgICAgICBzaG91bGRCZSgidHJhbnNpdGlvbkV2ZW50Q29udGFpbmVyLnRhcmdl
dCIsICJ0cmFuc2l0aW9uRXZlbnRCb3gudGFyZ2V0Iik7CisgICAgICAgIHNob3VsZEJlKCJ0cmFu
c2l0aW9uRXZlbnRDb250YWluZXIuY3VycmVudFRhcmdldCIsICJ0ZXN0Q29udGFpbmVyIik7Cisg
ICAgICAgIC8vIFRyYW5zaXRpb25FbmQgZXZlbnQgc3BlY2lmaWMgcHJvcGVydGllcy4KKyAgICAg
ICAgc2hvdWxkQmUoInRyYW5zaXRpb25FdmVudENvbnRhaW5lci5wc2V1ZG9FbGVtZW50IiwgInRy
YW5zaXRpb25FdmVudEJveC5wc2V1ZG9FbGVtZW50Iik7CisgICAgICAgIHNob3VsZEJlKCJ0cmFu
c2l0aW9uRXZlbnRDb250YWluZXIuZWxhcHNlZFRpbWUiLCAidHJhbnNpdGlvbkV2ZW50Qm94LmVs
YXBzZWRUaW1lIik7CisgICAgICAgIHNob3VsZEJlKCJ0cmFuc2l0aW9uRXZlbnRDb250YWluZXIu
cHJvcGVydHlOYW1lIiwgInRyYW5zaXRpb25FdmVudEJveC5wcm9wZXJ0eU5hbWUiKTsKKyAgICAg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlE
b25lKCk7CisgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQodGVzdENvbnRhaW5lcik7
CisgICAgfQorCisgICAgdGVzdENvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKCd3ZWJraXRUcmFu
c2l0aW9uRW5kJywgb3V0ZXJUcmFuc2l0aW9uRW5kRXZlbnQsIGZhbHNlKTsKKyAgICBib3guYWRk
RXZlbnRMaXN0ZW5lcignd2Via2l0VHJhbnNpdGlvbkVuZCcsIGlubmVyVHJhbnNpdGlvbkVuZEV2
ZW50LCBmYWxzZSk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNl
cy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>201987</attachid>
            <date>2013-05-16 13:19:49 -0700</date>
            <delta_ts>2013-05-16 20:26:29 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-115656-20130516171843.patch</filename>
            <type>text/plain</type>
            <size>17886</size>
            <attacher name="Alexis Menard (darktears)">menard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUwMDI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDI3OWQ3ZTBkZDJkYzZk
ZTFiZTlhZjNjN2VjMTMyMTdlOTE2NTJhZS4uYTMwMDRkZmZiMGY2NzQ0ZTI4NmFjM2FiOGY0NmUy
ODI3NzRlMDNhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDEzLTA1LTE2ICBBbGV4
aXMgTWVuYXJkICA8YWxleGlzQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVncmVzc2lvbjogRXZl
bnQjc3RvcFByb3BhZ2F0aW9uKCkgZG9lcyBub3QgaGFsdCBidWJibGluZyBmb3Igd2Via2l0VHJh
bnNpdGlvbkVuZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTE1NjU2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAg
SWYgd2UgY3JlYXRlIGEgcHJlZml4ZWQgZXZlbnQgdG8gZGlzcGF0Y2ggaXQgKGluIHRoZSBjYXNl
IHdlIGhhdmUgb25seQorICAgICAgICBwcmVmaXhlZCBldmVudCBsaXN0ZW5lcnMgaW4gY2xpZW50
J3MgY29kZSkgdGhlbiB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB0bworICAgICAgICBrZWVwIGl0IGlu
IHN5bmMgd2l0aCB0aGUgb3JpZ2luYWwgdW5wcmVmaXhlZCBldmVudCBhZnRlciBpdCBoYXMgYmVl
bgorICAgICAgICBkaXNwYXRjaGVkLiBXaGlsZSBiZWluZyBkaXNwYXRjaGVkIHRoZSBldmVudCBj
YW4gYmUgbW9kaWZpZWQgYnkKKyAgICAgICAgY2xpZW50J3MgY29kZSBhbmQgd2hlbiBwcm9wYWdh
dGVkIGJhY2sgdG8gb3V0ZXIgZWxlbWVudHMsIGF0dHJpYnV0ZXMgd2VyZQorICAgICAgICBub3Qg
dXBkYXRlZC4gVGhpcyBwYXRjaCBjaGFuZ2VzIHRoZSBvbGQgZGVzaWduIG9mIGNyZWF0aW5nIGEg
c2VwYXJhdGUgZXZlbnQKKyAgICAgICAgZm9yIHRoZSBwcmVmaXhlZCBjYXNlIGFuZCBub3cgY2hh
bmdlIHRoZSB0eXBlIG9mIHRoZSBldmVudCAoc28gdGhlIG5hbWUpIGJlZm9yZQorICAgICAgICBk
aXNwYXRjaGluZyBpdCwga2VlcGluZyB0aGUgYXR0cmlidXRlcyBpZiBjaGFuZ2VkIGFuZCB0aGVu
IHJlbmFtZSBpdAorICAgICAgICBiYWNrIHRvIHVucHJlZml4ZWQgd2hlbiB0aGUgZGlzcGF0Y2hp
bmcgaXMgZmluaXNoZWQuCisKKyAgICAgICAgVGVzdHM6IHRyYW5zaXRpb25zL3RyYW5zaXRpb24t
ZW5kLWV2ZW50LXByZWZpeGVkLTAxLmh0bWwKKyAgICAgICAgICAgICAgIHRyYW5zaXRpb25zL3Ry
YW5zaXRpb24tZW5kLWV2ZW50LXByZWZpeGVkLTAyLmh0bWwKKyAgICAgICAgICAgICAgIHRyYW5z
aXRpb25zL3RyYW5zaXRpb24tZW5kLWV2ZW50LXByZWZpeGVkLTAzLmh0bWwKKworICAgICAgICAq
IGRvbS9FdmVudC5oOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnQ6OnNldFR5cGUpOgorICAgICAg
ICAqIGRvbS9FdmVudFRhcmdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudFRhcmdldDo6
ZmlyZUV2ZW50TGlzdGVuZXJzKToKKwogMjAxMy0wNS0xMyAgQmVhciBUcmF2aXMgIDxiZXRyYXZp
c0BhZG9iZS5jb20+CiAKICAgICAgICAgW2NzcyBleGNsdXNpb25zXSBFbmFibGUgQ1NTIEV4Y2x1
c2lvbnMgYnkgZGVmYXVsdCB3aGVuIENTU19FWENMVVNJT05TIGlzIHNldApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0V2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuaApp
bmRleCBhOWQxMjk5ZGJjNzU4NDQ0ZDA1MGE3OGRlYWRjZjBlMDJlODMxOTZjLi40NzI1YWUzNjNj
ZDMwY2Q2YTk0NTNjZTVjMDBkOTEzOTQ2NWU4ZTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuaApAQCAtOTMsNiAr
OTMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbml0RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0
eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlKTsKIAogICAgIGNvbnN0IEF0b21p
Y1N0cmluZyYgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQorICAgIHZvaWQgc2V0VHlw
ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUpIHsgbV90eXBlID0gdHlwZTsgfQogICAgIAogICAg
IEV2ZW50VGFyZ2V0KiB0YXJnZXQoKSBjb25zdCB7IHJldHVybiBtX3RhcmdldC5nZXQoKTsgfQog
ICAgIHZvaWQgc2V0VGFyZ2V0KFBhc3NSZWZQdHI8RXZlbnRUYXJnZXQ+KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RXZlbnRUYXJnZXQuY3BwCmluZGV4IDI2NjliMWFiZWVjZWQ1ZWQ4NDRjNDMyNGVjMTdkODkwYjM0
NDc3OGQuLjhiNzlkM2ExOGIwZGI5YjBhZGM4ODc2N2ZkOTk5Y2Q4Mjk1M2Q2MmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0V2ZW50VGFyZ2V0LmNwcApAQCAtMTYyLDIwICsxNjIsNiBAQCB2b2lkIEV2ZW50VGFy
Z2V0Ojp1bmNhdWdodEV4Y2VwdGlvbkluRXZlbnRIYW5kbGVyKCkKIHsKIH0KIAotc3RhdGljIFBh
c3NSZWZQdHI8RXZlbnQ+IGNyZWF0ZU1hdGNoaW5nUHJlZml4ZWRFdmVudChjb25zdCBFdmVudCog
ZXZlbnQpCi17Ci0gICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLnRyYW5zaXRp
b25lbmRFdmVudCkgewotICAgICAgICBjb25zdCBXZWJLaXRUcmFuc2l0aW9uRXZlbnQqIHRyYW5z
aXRpb25FdmVudCA9IHN0YXRpY19jYXN0PGNvbnN0IFdlYktpdFRyYW5zaXRpb25FdmVudCo+KGV2
ZW50KTsKLSAgICAgICAgUmVmUHRyPEV2ZW50PiBwcmVmaXhlZEV2ZW50ID0gV2ViS2l0VHJhbnNp
dGlvbkV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLndlYmtpdFRyYW5zaXRpb25FbmRFdmVudCwg
dHJhbnNpdGlvbkV2ZW50LT5wcm9wZXJ0eU5hbWUoKSwgdHJhbnNpdGlvbkV2ZW50LT5lbGFwc2Vk
VGltZSgpLCB0cmFuc2l0aW9uRXZlbnQtPnBzZXVkb0VsZW1lbnQoKSk7Ci0gICAgICAgIHByZWZp
eGVkRXZlbnQtPnNldFRhcmdldChldmVudC0+dGFyZ2V0KCkpOwotICAgICAgICBwcmVmaXhlZEV2
ZW50LT5zZXRDdXJyZW50VGFyZ2V0KGV2ZW50LT5jdXJyZW50VGFyZ2V0KCkpOwotICAgICAgICBw
cmVmaXhlZEV2ZW50LT5zZXRFdmVudFBoYXNlKGV2ZW50LT5ldmVudFBoYXNlKCkpOwotICAgICAg
ICByZXR1cm4gcHJlZml4ZWRFdmVudC5yZWxlYXNlKCk7Ci0gICAgfQotICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgIHJldHVybiAwOwotfQotCiBzdGF0aWMgQXRvbWljU3RyaW5nIHByZWZp
eGVkVHlwZShjb25zdCBFdmVudCogZXZlbnQpCiB7CiAgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0g
ZXZlbnROYW1lcygpLnRyYW5zaXRpb25lbmRFdmVudCkKQEAgLTIwMiw4ICsxODgsMTIgQEAgYm9v
bCBFdmVudFRhcmdldDo6ZmlyZUV2ZW50TGlzdGVuZXJzKEV2ZW50KiBldmVudCkKIAogICAgIGlm
IChsaXN0ZW5lclVucHJlZml4ZWRWZWN0b3IpCiAgICAgICAgIGZpcmVFdmVudExpc3RlbmVycyhl
dmVudCwgZCwgKmxpc3RlbmVyVW5wcmVmaXhlZFZlY3Rvcik7Ci0gICAgZWxzZSBpZiAobGlzdGVu
ZXJQcmVmaXhlZFZlY3RvcikKLSAgICAgICAgZmlyZUV2ZW50TGlzdGVuZXJzKGNyZWF0ZU1hdGNo
aW5nUHJlZml4ZWRFdmVudChldmVudCkuZ2V0KCksIGQsICpsaXN0ZW5lclByZWZpeGVkVmVjdG9y
KTsKKyAgICBlbHNlIGlmIChsaXN0ZW5lclByZWZpeGVkVmVjdG9yKSB7CisgICAgICAgIEF0b21p
Y1N0cmluZyB1bnByZWZpeGVkVHlwZU5hbWUgPSBldmVudC0+dHlwZSgpOworICAgICAgICBldmVu
dC0+c2V0VHlwZShwcmVmaXhlZFR5cGVOYW1lKTsKKyAgICAgICAgZmlyZUV2ZW50TGlzdGVuZXJz
KGV2ZW50LCBkLCAqbGlzdGVuZXJQcmVmaXhlZFZlY3Rvcik7CisgICAgICAgIGV2ZW50LT5zZXRU
eXBlKHVucHJlZml4ZWRUeXBlTmFtZSk7CisgICAgfQogCiAgICAgaWYgKCFwcmVmaXhlZFR5cGVO
YW1lLmlzRW1wdHkoKSkgewogICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDRhMGZjNDJmYTVjY2FiMDYwNGI4
ODFjN2Y4NWIzZmVhMzdjOWQ0ZTMuLjM5YjU1OWFjNmQ2NDdjODI2YzJmNjFlNzEzYWFiZTQwMDhk
NDcxZmEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMy0wNS0xNCAgQWxleGlzIE1lbmFyZCAg
PGFsZXhpc0B3ZWJraXQub3JnPgorCisgICAgICAgIFJlZ3Jlc3Npb246IEV2ZW50I3N0b3BQcm9w
YWdhdGlvbigpIGRvZXMgbm90IGhhbHQgYnViYmxpbmcgZm9yIHdlYmtpdFRyYW5zaXRpb25FbmQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNTY1Ngor
CisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIEFkZGVkIG5ldyB0
ZXN0cyB0byBjb3ZlciB0aGUgYnVnLgorCisgICAgICAgICogdHJhbnNpdGlvbnMvdHJhbnNpdGlv
bi1lbmQtZXZlbnQtcHJlZml4ZWQtMDMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0
cmFuc2l0aW9ucy90cmFuc2l0aW9uLWVuZC1ldmVudC1wcmVmaXhlZC0wMy5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiB0cmFuc2l0aW9ucy90cmFuc2l0aW9uLWVuZC1ldmVudC1wcmVmaXhlZC0wMi1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRyYW5zaXRpb25zL3RyYW5zaXRpb24tZW5k
LWV2ZW50LXByZWZpeGVkLTAyLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRyYW5zaXRpb25zL3Ry
YW5zaXRpb24tZW5kLWV2ZW50LXByZWZpeGVkLTAxLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogdHJhbnNpdGlvbnMvdHJhbnNpdGlvbi1lbmQtZXZlbnQtcHJlZml4ZWQtMDEuaHRtbDog
QWRkZWQuCisKIDIwMTMtMDUtMTMgIEJlYXIgVHJhdmlzICA8YmV0cmF2aXNAYWRvYmUuY29tPgog
CiAgICAgICAgIFtjc3MgZXhjbHVzaW9uc10gRW5hYmxlIENTUyBFeGNsdXNpb25zIGJ5IGRlZmF1
bHQgd2hlbiBDU1NfRVhDTFVTSU9OUyBpcyBzZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Ry
YW5zaXRpb25zL3RyYW5zaXRpb24tZW5kLWV2ZW50LXByZWZpeGVkLTAxLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL3RyYW5zaXRpb25zL3RyYW5zaXRpb24tZW5kLWV2ZW50LXByZWZpeGVkLTAx
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45OTJkZTYyMDE0NmM3NzEyYjExNjFkMmM4ZjE3ZWM4
OTc0ZjAxNGM5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvdHJh
bnNpdGlvbi1lbmQtZXZlbnQtcHJlZml4ZWQtMDEtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjIg
QEAKK1Rlc3QgdG8gbWFrZSBzdXJlIHRoYXQgaWYgcHJlZml4ZWQgdHJhbnNpdGlvbiBldmVudHMg
YXJlIG1vZGlmaWVkIHdlIGNvcnJlY3RseSBtb2RpZnkgdW5wcmVmaXhlZCBldmVudHMuCisKK09u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKK1BBU1MgdHJhbnNpdGlvbkV2ZW50Q29udGFpbmVyLnR5cGUg
aXMgdHJhbnNpdGlvbkV2ZW50Qm94LnR5cGUKK1BBU1MgdHJhbnNpdGlvbkV2ZW50Q29udGFpbmVy
LmJ1YmJsZXMgaXMgdHJhbnNpdGlvbkV2ZW50Qm94LmJ1YmJsZXMKK1BBU1MgdHJhbnNpdGlvbkV2
ZW50Q29udGFpbmVyLnRpbWVTdGFtcCBpcyB0cmFuc2l0aW9uRXZlbnRCb3gudGltZVN0YW1wCitQ
QVNTIHRyYW5zaXRpb25FdmVudENvbnRhaW5lci5jYW5jZWxhYmxlIGlzIHRyYW5zaXRpb25FdmVu
dEJveC5jYW5jZWxhYmxlCitQQVNTIHRyYW5zaXRpb25FdmVudENvbnRhaW5lci5zcmNFbGVtZW50
IGlzIHRyYW5zaXRpb25FdmVudEJveC5zcmNFbGVtZW50CitQQVNTIHRyYW5zaXRpb25FdmVudENv
bnRhaW5lci5yZXR1cm5WYWx1ZSBpcyB0cmFuc2l0aW9uRXZlbnRCb3gucmV0dXJuVmFsdWUKK1BB
U1MgdHJhbnNpdGlvbkV2ZW50Q29udGFpbmVyLmNhbmNlbEJ1YmJsZSBpcyB0cmFuc2l0aW9uRXZl
bnRCb3guY2FuY2VsQnViYmxlCitQQVNTIHRyYW5zaXRpb25FdmVudENvbnRhaW5lci5kZWZhdWx0
UHJldmVudGVkIGlzIHRyYW5zaXRpb25FdmVudEJveC5kZWZhdWx0UHJldmVudGVkCitQQVNTIHRy
YW5zaXRpb25FdmVudENvbnRhaW5lci50YXJnZXQgaXMgdHJhbnNpdGlvbkV2ZW50Qm94LnRhcmdl
dAorUEFTUyB0cmFuc2l0aW9uRXZlbnRDb250YWluZXIuY3VycmVudFRhcmdldCBpcyB0ZXN0Q29u
dGFpbmVyCitQQVNTIHRyYW5zaXRpb25FdmVudENvbnRhaW5lci5wc2V1ZG9FbGVtZW50IGlzIHRy
YW5zaXRpb25FdmVudEJveC5wc2V1ZG9FbGVtZW50CitQQVNTIHRyYW5zaXRpb25FdmVudENvbnRh
aW5lci5lbGFwc2VkVGltZSBpcyB0cmFuc2l0aW9uRXZlbnRCb3guZWxhcHNlZFRpbWUKK1BBU1Mg
dHJhbnNpdGlvbkV2ZW50Q29udGFpbmVyLnByb3BlcnR5TmFtZSBpcyB0cmFuc2l0aW9uRXZlbnRC
b3gucHJvcGVydHlOYW1lCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RyYW5zaXRpb25zL3Ry
YW5zaXRpb24tZW5kLWV2ZW50LXByZWZpeGVkLTAxLmh0bWwgYi9MYXlvdXRUZXN0cy90cmFuc2l0
aW9ucy90cmFuc2l0aW9uLWVuZC1ldmVudC1wcmVmaXhlZC0wMS5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNl
NTM3YjZhZDQxZTRlY2YxZTAxYzIwZTlmYTFlZjU2MGVmYTQyOGQKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy90cmFuc2l0aW9ucy90cmFuc2l0aW9uLWVuZC1ldmVudC1wcmVmaXhlZC0w
MS5odG1sCkBAIC0wLDAgKzEsNzQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4K
KzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKyAgICA8c3R5bGU+CisgICAgLmJveCB7CisgICAgICAg
IHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAgICAgICAgbGVmdDogMDsKKyAgICAgICAgaGVpZ2h0OiAx
MDBweDsKKyAgICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgICBtYXJnaW46IDEwcHg7CisgICAg
ICAgIGJhY2tncm91bmQtY29sb3I6IGJsdWU7CisgICAgICAgIC13ZWJraXQtdHJhbnNpdGlvbi1w
cm9wZXJ0eTogd2lkdGg7CisgICAgICAgIC13ZWJraXQtdHJhbnNpdGlvbi1kdXJhdGlvbjogMC41
czsKKyAgICB9CisgICAgPC9zdHlsZT4KKyAgICA8c2NyaXB0IHNyYz0idHJhbnNpdGlvbi1lbmQt
ZXZlbnQtaGVscGVycy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMv
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHR5cGU9InRl
eHQvamF2YXNjcmlwdCI+CisgICAgZnVuY3Rpb24gcnVuQW5pbWF0aW9uKCkgeworICAgICAgICB2
YXIgYm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JveDEnKTsKKyAgICAgICAgYm94LnN0
eWxlLndpZHRoID0gJzIwMHB4JzsKKyAgICB9CisgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkg
b25Mb2FkPSJydW5BbmltYXRpb24oKSI+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+
CisgICAgZGVzY3JpcHRpb24oIlRlc3QgdG8gbWFrZSBzdXJlIHRoYXQgaWYgcHJlZml4ZWQgdHJh
bnNpdGlvbiBldmVudHMgYXJlIG1vZGlmaWVkIHdlIGNvcnJlY3RseSBtb2RpZnkgdW5wcmVmaXhl
ZCBldmVudHMuIik7CisKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RS
dW5uZXIud2FpdFVudGlsRG9uZSgpOworCisgICAgdmFyIHRlc3RDb250YWluZXIgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRl
c3RDb250YWluZXIpOworCisgICAgdGVzdENvbnRhaW5lci5pbm5lckhUTUwgPSAnPGRpdiBpZD0i
Ym94MSIgY2xhc3M9ImJveCI+PC9kaXY+JzsKKyAgICB2YXIgYm94ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2JveDEnKTsKKworICAgIHZhciB0cmFuc2l0aW9uRXZlbnRDb250YWluZXI7Cisg
ICAgdmFyIHRyYW5zaXRpb25FdmVudEJveDsKKworICAgIGZ1bmN0aW9uIGlubmVyVHJhbnNpdGlv
bkVuZEV2ZW50KGUpCisgICAgeworICAgICAgICB0cmFuc2l0aW9uRXZlbnRCb3ggPSBlOworICAg
IH0KKworICAgIGZ1bmN0aW9uIG91dGVyVHJhbnNpdGlvbkVuZEV2ZW50KGUpCisgICAgeworICAg
ICAgICB0cmFuc2l0aW9uRXZlbnRDb250YWluZXIgPSBlOworICAgICAgICBzaG91bGRCZSgidHJh
bnNpdGlvbkV2ZW50Q29udGFpbmVyLnR5cGUiLCAidHJhbnNpdGlvbkV2ZW50Qm94LnR5cGUiKTsK
KyAgICAgICAgc2hvdWxkQmUoInRyYW5zaXRpb25FdmVudENvbnRhaW5lci5idWJibGVzIiwgInRy
YW5zaXRpb25FdmVudEJveC5idWJibGVzIik7CisgICAgICAgIHNob3VsZEJlKCJ0cmFuc2l0aW9u
RXZlbnRDb250YWluZXIudGltZVN0YW1wIiwgInRyYW5zaXRpb25FdmVudEJveC50aW1lU3RhbXAi
KTsKKyAgICAgICAgc2hvdWxkQmUoInRyYW5zaXRpb25FdmVudENvbnRhaW5lci5jYW5jZWxhYmxl
IiwgInRyYW5zaXRpb25FdmVudEJveC5jYW5jZWxhYmxlIik7CisgICAgICAgIHNob3VsZEJlKCJ0
cmFuc2l0aW9uRXZlbnRDb250YWluZXIuc3JjRWxlbWVudCIsICJ0cmFuc2l0aW9uRXZlbnRCb3gu
c3JjRWxlbWVudCIpOworICAgICAgICBzaG91bGRCZSgidHJhbnNpdGlvbkV2ZW50Q29udGFpbmVy
LnJldHVyblZhbHVlIiwgInRyYW5zaXRpb25FdmVudEJveC5yZXR1cm5WYWx1ZSIpOworICAgICAg
ICBzaG91bGRCZSgidHJhbnNpdGlvbkV2ZW50Q29udGFpbmVyLmNhbmNlbEJ1YmJsZSIsICJ0cmFu
c2l0aW9uRXZlbnRCb3guY2FuY2VsQnViYmxlIik7CisgICAgICAgIHNob3VsZEJlKCJ0cmFuc2l0
aW9uRXZlbnRDb250YWluZXIuZGVmYXVsdFByZXZlbnRlZCIsICJ0cmFuc2l0aW9uRXZlbnRCb3gu
ZGVmYXVsdFByZXZlbnRlZCIpOworICAgICAgICBzaG91bGRCZSgidHJhbnNpdGlvbkV2ZW50Q29u
dGFpbmVyLnRhcmdldCIsICJ0cmFuc2l0aW9uRXZlbnRCb3gudGFyZ2V0Iik7CisgICAgICAgIHNo
b3VsZEJlKCJ0cmFuc2l0aW9uRXZlbnRDb250YWluZXIuY3VycmVudFRhcmdldCIsICJ0ZXN0Q29u
dGFpbmVyIik7CisgICAgICAgIC8vIFRyYW5zaXRpb25FbmQgZXZlbnQgc3BlY2lmaWMgcHJvcGVy
dGllcy4KKyAgICAgICAgc2hvdWxkQmUoInRyYW5zaXRpb25FdmVudENvbnRhaW5lci5wc2V1ZG9F
bGVtZW50IiwgInRyYW5zaXRpb25FdmVudEJveC5wc2V1ZG9FbGVtZW50Iik7CisgICAgICAgIHNo
b3VsZEJlKCJ0cmFuc2l0aW9uRXZlbnRDb250YWluZXIuZWxhcHNlZFRpbWUiLCAidHJhbnNpdGlv
bkV2ZW50Qm94LmVsYXBzZWRUaW1lIik7CisgICAgICAgIHNob3VsZEJlKCJ0cmFuc2l0aW9uRXZl
bnRDb250YWluZXIucHJvcGVydHlOYW1lIiwgInRyYW5zaXRpb25FdmVudEJveC5wcm9wZXJ0eU5h
bWUiKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1
bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQodGVz
dENvbnRhaW5lcik7CisgICAgfQorCisgICAgdGVzdENvbnRhaW5lci5hZGRFdmVudExpc3RlbmVy
KCd3ZWJraXRUcmFuc2l0aW9uRW5kJywgb3V0ZXJUcmFuc2l0aW9uRW5kRXZlbnQsIGZhbHNlKTsK
KyAgICBib3guYWRkRXZlbnRMaXN0ZW5lcignd2Via2l0VHJhbnNpdGlvbkVuZCcsIGlubmVyVHJh
bnNpdGlvbkVuZEV2ZW50LCBmYWxzZSk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9mYXN0
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvdHJhbnNpdGlvbi1lbmQtZXZl
bnQtcHJlZml4ZWQtMDItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvdHJh
bnNpdGlvbi1lbmQtZXZlbnQtcHJlZml4ZWQtMDItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIx
OGZiOWVlMDJiOTdmMDY5YzUyMTM2MDAxZWI3YTZkM2U0ZDk2YzAKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy90cmFuc2l0aW9ucy90cmFuc2l0aW9uLWVuZC1ldmVudC1wcmVmaXhlZC0w
Mi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorVGVzdCB0byBtYWtlIHN1cmUgdGhhdCBp
ZiBwcmVmaXhlZCB0cmFuc2l0aW9uIGV2ZW50cyBhcmUgbW9kaWZpZWQgd2UgY29ycmVjdGx5IG1v
ZGlmeSB1bnByZWZpeGVkIGV2ZW50cy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisK
K1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorUEFTUyB0
cmFuc2l0aW9uRXZlbnRCb3guY3VycmVudFRhcmdldCBpcyB0cmFuc2l0aW9uRXZlbnRCb3gudGFy
Z2V0CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RyYW5zaXRpb25zL3RyYW5zaXRpb24tZW5k
LWV2ZW50LXByZWZpeGVkLTAyLmh0bWwgYi9MYXlvdXRUZXN0cy90cmFuc2l0aW9ucy90cmFuc2l0
aW9uLWVuZC1ldmVudC1wcmVmaXhlZC0wMi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg1ZWQ3OTQ4MTA5ZmRm
NzQ3NTI4YWI2NTkwMTM5OTE0ZTg3NWIzNzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy90cmFuc2l0aW9ucy90cmFuc2l0aW9uLWVuZC1ldmVudC1wcmVmaXhlZC0wMi5odG1sCkBAIC0w
LDAgKzEsNTYgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJz
ZXQ9InV0Zi04Ij4KKyAgICA8c3R5bGU+CisgICAgLmJveCB7CisgICAgICAgIHBvc2l0aW9uOiBy
ZWxhdGl2ZTsKKyAgICAgICAgbGVmdDogMDsKKyAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICAg
ICAgd2lkdGg6IDEwMHB4OworICAgICAgICBtYXJnaW46IDEwcHg7CisgICAgICAgIGJhY2tncm91
bmQtY29sb3I6IGJsdWU7CisgICAgICAgIC13ZWJraXQtdHJhbnNpdGlvbi1wcm9wZXJ0eTogd2lk
dGg7CisgICAgICAgIC13ZWJraXQtdHJhbnNpdGlvbi1kdXJhdGlvbjogMC41czsKKyAgICB9Cisg
ICAgPC9zdHlsZT4KKyAgICA8c2NyaXB0IHNyYz0idHJhbnNpdGlvbi1lbmQtZXZlbnQtaGVscGVy
cy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlw
dCI+CisgICAgZnVuY3Rpb24gcnVuQW5pbWF0aW9uKCkgeworICAgICAgICB2YXIgYm94ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JveDEnKTsKKyAgICAgICAgYm94LnN0eWxlLndpZHRoID0g
JzIwMHB4JzsKKyAgICB9CisgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25Mb2FkPSJydW5B
bmltYXRpb24oKSI+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgZGVzY3Jp
cHRpb24oIlRlc3QgdG8gbWFrZSBzdXJlIHRoYXQgaWYgcHJlZml4ZWQgdHJhbnNpdGlvbiBldmVu
dHMgYXJlIG1vZGlmaWVkIHdlIGNvcnJlY3RseSBtb2RpZnkgdW5wcmVmaXhlZCBldmVudHMuIik7
CisKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIud2FpdFVu
dGlsRG9uZSgpOworCisgICAgdmFyIHRlc3RDb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJkaXYiKTsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRlc3RDb250YWluZXIp
OworCisgICAgdGVzdENvbnRhaW5lci5pbm5lckhUTUwgPSAnPGRpdiBpZD0iYm94MSIgY2xhc3M9
ImJveCI+PC9kaXY+JzsKKyAgICB2YXIgYm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Jv
eDEnKTsKKworICAgIHZhciB0cmFuc2l0aW9uRXZlbnRCb3g7CisKKyAgICBmdW5jdGlvbiB0cmFu
c2l0aW9uRW5kRXZlbnQoZSkKKyAgICB7CisgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7Cisg
ICAgICAgIHRyYW5zaXRpb25FdmVudEJveCA9IGU7CisgICAgICAgIHNob3VsZEJlKCJ0cmFuc2l0
aW9uRXZlbnRCb3guY3VycmVudFRhcmdldCIsICJ0cmFuc2l0aW9uRXZlbnRCb3gudGFyZ2V0Iik7
CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIu
bm90aWZ5RG9uZSgpOworICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHRlc3RDb250
YWluZXIpOworICAgIH0KKworICAgIHRlc3RDb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcignd2Vi
a2l0VHJhbnNpdGlvbkVuZCcsIHRyYW5zaXRpb25FbmRFdmVudCwgZmFsc2UpOworICAgIGJveC5h
ZGRFdmVudExpc3RlbmVyKCd3ZWJraXRUcmFuc2l0aW9uRW5kJywgdHJhbnNpdGlvbkVuZEV2ZW50
LCBmYWxzZSk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvdHJhbnNpdGlvbi1lbmQtZXZlbnQtcHJlZml4ZWQtMDMt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvdHJhbnNpdGlvbi1lbmQtZXZl
bnQtcHJlZml4ZWQtMDMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk5MmRlNjIwMTQ2Yzc3MTJi
MTE2MWQyYzhmMTdlYzg5NzRmMDE0YzkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90
cmFuc2l0aW9ucy90cmFuc2l0aW9uLWVuZC1ldmVudC1wcmVmaXhlZC0wMy1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwyMiBAQAorVGVzdCB0byBtYWtlIHN1cmUgdGhhdCBpZiBwcmVmaXhlZCB0cmFu
c2l0aW9uIGV2ZW50cyBhcmUgbW9kaWZpZWQgd2UgY29ycmVjdGx5IG1vZGlmeSB1bnByZWZpeGVk
IGV2ZW50cy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorUEFTUyB0cmFuc2l0aW9uRXZlbnRD
b250YWluZXIudHlwZSBpcyB0cmFuc2l0aW9uRXZlbnRCb3gudHlwZQorUEFTUyB0cmFuc2l0aW9u
RXZlbnRDb250YWluZXIuYnViYmxlcyBpcyB0cmFuc2l0aW9uRXZlbnRCb3guYnViYmxlcworUEFT
UyB0cmFuc2l0aW9uRXZlbnRDb250YWluZXIudGltZVN0YW1wIGlzIHRyYW5zaXRpb25FdmVudEJv
eC50aW1lU3RhbXAKK1BBU1MgdHJhbnNpdGlvbkV2ZW50Q29udGFpbmVyLmNhbmNlbGFibGUgaXMg
dHJhbnNpdGlvbkV2ZW50Qm94LmNhbmNlbGFibGUKK1BBU1MgdHJhbnNpdGlvbkV2ZW50Q29udGFp
bmVyLnNyY0VsZW1lbnQgaXMgdHJhbnNpdGlvbkV2ZW50Qm94LnNyY0VsZW1lbnQKK1BBU1MgdHJh
bnNpdGlvbkV2ZW50Q29udGFpbmVyLnJldHVyblZhbHVlIGlzIHRyYW5zaXRpb25FdmVudEJveC5y
ZXR1cm5WYWx1ZQorUEFTUyB0cmFuc2l0aW9uRXZlbnRDb250YWluZXIuY2FuY2VsQnViYmxlIGlz
IHRyYW5zaXRpb25FdmVudEJveC5jYW5jZWxCdWJibGUKK1BBU1MgdHJhbnNpdGlvbkV2ZW50Q29u
dGFpbmVyLmRlZmF1bHRQcmV2ZW50ZWQgaXMgdHJhbnNpdGlvbkV2ZW50Qm94LmRlZmF1bHRQcmV2
ZW50ZWQKK1BBU1MgdHJhbnNpdGlvbkV2ZW50Q29udGFpbmVyLnRhcmdldCBpcyB0cmFuc2l0aW9u
RXZlbnRCb3gudGFyZ2V0CitQQVNTIHRyYW5zaXRpb25FdmVudENvbnRhaW5lci5jdXJyZW50VGFy
Z2V0IGlzIHRlc3RDb250YWluZXIKK1BBU1MgdHJhbnNpdGlvbkV2ZW50Q29udGFpbmVyLnBzZXVk
b0VsZW1lbnQgaXMgdHJhbnNpdGlvbkV2ZW50Qm94LnBzZXVkb0VsZW1lbnQKK1BBU1MgdHJhbnNp
dGlvbkV2ZW50Q29udGFpbmVyLmVsYXBzZWRUaW1lIGlzIHRyYW5zaXRpb25FdmVudEJveC5lbGFw
c2VkVGltZQorUEFTUyB0cmFuc2l0aW9uRXZlbnRDb250YWluZXIucHJvcGVydHlOYW1lIGlzIHRy
YW5zaXRpb25FdmVudEJveC5wcm9wZXJ0eU5hbWUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
dHJhbnNpdGlvbnMvdHJhbnNpdGlvbi1lbmQtZXZlbnQtcHJlZml4ZWQtMDMuaHRtbCBiL0xheW91
dFRlc3RzL3RyYW5zaXRpb25zL3RyYW5zaXRpb24tZW5kLWV2ZW50LXByZWZpeGVkLTAzLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMTQ2YjBmZDUzM2JkYzVhYTNlNDliNjA3NzMwM2QxNmVhNTc0YjUyMwotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RyYW5zaXRpb25zL3RyYW5zaXRpb24tZW5kLWV2
ZW50LXByZWZpeGVkLTAzLmh0bWwKQEAgLTAsMCArMSw3NSBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorICAgIDxzdHlsZT4KKyAgICAu
Ym94IHsKKyAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgICAgICBsZWZ0OiAwOworICAg
ICAgICBoZWlnaHQ6IDEwMHB4OworICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgIG1hcmdp
bjogMTBweDsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogYmx1ZTsKKyAgICAgICAgLXdlYmtp
dC10cmFuc2l0aW9uLXByb3BlcnR5OiB3aWR0aDsKKyAgICAgICAgLXdlYmtpdC10cmFuc2l0aW9u
LWR1cmF0aW9uOiAwLjVzOworICAgIH0KKyAgICA8L3N0eWxlPgorICAgIDxzY3JpcHQgc3JjPSJ0
cmFuc2l0aW9uLWVuZC1ldmVudC1oZWxwZXJzLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNy
Yz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorICAgIDxz
Y3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAgICBmdW5jdGlvbiBydW5BbmltYXRpb24o
KSB7CisgICAgICAgIHZhciBib3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYm94MScpOwor
ICAgICAgICBib3guc3R5bGUud2lkdGggPSAnMjAwcHgnOworICAgIH0KKyAgPC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keSBvbkxvYWQ9InJ1bkFuaW1hdGlvbigpIj4KKzxzY3JpcHQgdHlwZT0idGV4
dC9qYXZhc2NyaXB0Ij4KKyAgICBkZXNjcmlwdGlvbigiVGVzdCB0byBtYWtlIHN1cmUgdGhhdCBp
ZiBwcmVmaXhlZCB0cmFuc2l0aW9uIGV2ZW50cyBhcmUgbW9kaWZpZWQgd2UgY29ycmVjdGx5IG1v
ZGlmeSB1bnByZWZpeGVkIGV2ZW50cy4iKTsKKworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
KyAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisKKyAgICB2YXIgdGVzdENvbnRh
aW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgIGRvY3VtZW50LmJvZHku
YXBwZW5kQ2hpbGQodGVzdENvbnRhaW5lcik7CisKKyAgICB0ZXN0Q29udGFpbmVyLmlubmVySFRN
TCA9ICc8ZGl2IGlkPSJib3gxIiBjbGFzcz0iYm94Ij48L2Rpdj4nOworICAgIHZhciBib3ggPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYm94MScpOworCisgICAgdmFyIHRyYW5zaXRpb25FdmVu
dENvbnRhaW5lcjsKKyAgICB2YXIgdHJhbnNpdGlvbkV2ZW50Qm94OworCisgICAgZnVuY3Rpb24g
aW5uZXJUcmFuc2l0aW9uRW5kRXZlbnQoZSkKKyAgICB7CisgICAgICAgIHRyYW5zaXRpb25FdmVu
dEJveCA9IGU7CisgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKKyAgICB9CisKKyAgICBmdW5j
dGlvbiBvdXRlclRyYW5zaXRpb25FbmRFdmVudChlKQorICAgIHsKKyAgICAgICAgdHJhbnNpdGlv
bkV2ZW50Q29udGFpbmVyID0gZTsKKyAgICAgICAgc2hvdWxkQmUoInRyYW5zaXRpb25FdmVudENv
bnRhaW5lci50eXBlIiwgInRyYW5zaXRpb25FdmVudEJveC50eXBlIik7CisgICAgICAgIHNob3Vs
ZEJlKCJ0cmFuc2l0aW9uRXZlbnRDb250YWluZXIuYnViYmxlcyIsICJ0cmFuc2l0aW9uRXZlbnRC
b3guYnViYmxlcyIpOworICAgICAgICBzaG91bGRCZSgidHJhbnNpdGlvbkV2ZW50Q29udGFpbmVy
LnRpbWVTdGFtcCIsICJ0cmFuc2l0aW9uRXZlbnRCb3gudGltZVN0YW1wIik7CisgICAgICAgIHNo
b3VsZEJlKCJ0cmFuc2l0aW9uRXZlbnRDb250YWluZXIuY2FuY2VsYWJsZSIsICJ0cmFuc2l0aW9u
RXZlbnRCb3guY2FuY2VsYWJsZSIpOworICAgICAgICBzaG91bGRCZSgidHJhbnNpdGlvbkV2ZW50
Q29udGFpbmVyLnNyY0VsZW1lbnQiLCAidHJhbnNpdGlvbkV2ZW50Qm94LnNyY0VsZW1lbnQiKTsK
KyAgICAgICAgc2hvdWxkQmUoInRyYW5zaXRpb25FdmVudENvbnRhaW5lci5yZXR1cm5WYWx1ZSIs
ICJ0cmFuc2l0aW9uRXZlbnRCb3gucmV0dXJuVmFsdWUiKTsKKyAgICAgICAgc2hvdWxkQmUoInRy
YW5zaXRpb25FdmVudENvbnRhaW5lci5jYW5jZWxCdWJibGUiLCAidHJhbnNpdGlvbkV2ZW50Qm94
LmNhbmNlbEJ1YmJsZSIpOworICAgICAgICBzaG91bGRCZSgidHJhbnNpdGlvbkV2ZW50Q29udGFp
bmVyLmRlZmF1bHRQcmV2ZW50ZWQiLCAidHJhbnNpdGlvbkV2ZW50Qm94LmRlZmF1bHRQcmV2ZW50
ZWQiKTsKKyAgICAgICAgc2hvdWxkQmUoInRyYW5zaXRpb25FdmVudENvbnRhaW5lci50YXJnZXQi
LCAidHJhbnNpdGlvbkV2ZW50Qm94LnRhcmdldCIpOworICAgICAgICBzaG91bGRCZSgidHJhbnNp
dGlvbkV2ZW50Q29udGFpbmVyLmN1cnJlbnRUYXJnZXQiLCAidGVzdENvbnRhaW5lciIpOworICAg
ICAgICAvLyBUcmFuc2l0aW9uRW5kIGV2ZW50IHNwZWNpZmljIHByb3BlcnRpZXMuCisgICAgICAg
IHNob3VsZEJlKCJ0cmFuc2l0aW9uRXZlbnRDb250YWluZXIucHNldWRvRWxlbWVudCIsICJ0cmFu
c2l0aW9uRXZlbnRCb3gucHNldWRvRWxlbWVudCIpOworICAgICAgICBzaG91bGRCZSgidHJhbnNp
dGlvbkV2ZW50Q29udGFpbmVyLmVsYXBzZWRUaW1lIiwgInRyYW5zaXRpb25FdmVudEJveC5lbGFw
c2VkVGltZSIpOworICAgICAgICBzaG91bGRCZSgidHJhbnNpdGlvbkV2ZW50Q29udGFpbmVyLnBy
b3BlcnR5TmFtZSIsICJ0cmFuc2l0aW9uRXZlbnRCb3gucHJvcGVydHlOYW1lIik7CisgICAgICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9u
ZSgpOworICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHRlc3RDb250YWluZXIpOwor
ICAgIH0KKworICAgIHRlc3RDb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcignd2Via2l0VHJhbnNp
dGlvbkVuZCcsIG91dGVyVHJhbnNpdGlvbkVuZEV2ZW50LCBmYWxzZSk7CisgICAgYm94LmFkZEV2
ZW50TGlzdGVuZXIoJ3dlYmtpdFRyYW5zaXRpb25FbmQnLCBpbm5lclRyYW5zaXRpb25FbmRFdmVu
dCwgZmFsc2UpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>