<?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>85253</bug_id>
          
          <creation_ts>2012-04-30 18:18:06 -0700</creation_ts>
          <short_desc>Apply animations and transitions for first-letter element</short_desc>
          <delta_ts>2017-07-18 08:30:06 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>REOPENED</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>23209</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Igor Trindade Oliveira">igor.oliveira</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>7raivis</cc>
    
    <cc>ap</cc>
    
    <cc>dino</cc>
    
    <cc>ericbidelman</cc>
    
    <cc>eric</cc>
    
    <cc>esprehn</cc>
    
    <cc>mitz</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>syoichi</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>613135</commentid>
    <comment_count>0</comment_count>
    <who name="Igor Trindade Oliveira">igor.oliveira</who>
    <bug_when>2012-04-30 18:18:06 -0700</bug_when>
    <thetext>apply animations and transitions for first-letter element</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>613140</commentid>
    <comment_count>1</comment_count>
      <attachid>139564</attachid>
    <who name="Igor Trindade Oliveira">igor.oliveira</who>
    <bug_when>2012-04-30 18:23:01 -0700</bug_when>
    <thetext>Created attachment 139564
Patch V1.

Proposed patch V1.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>613143</commentid>
    <comment_count>2</comment_count>
    <who name="Igor Trindade Oliveira">igor.oliveira</who>
    <bug_when>2012-04-30 18:26:51 -0700</bug_when>
    <thetext>Let&apos;s broke the animation generated content patch in small patches, each generated element has a different behavior when animated.
The bug https://bugs.webkit.org/show_bug.cgi?id=23209 will be the meta bug for the generated content animations bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>613189</commentid>
    <comment_count>3</comment_count>
      <attachid>139573</attachid>
    <who name="Igor Trindade Oliveira">igor.oliveira</who>
    <bug_when>2012-04-30 19:56:30 -0700</bug_when>
    <thetext>Created attachment 139573
Patch V2.

Improve changelog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>613529</commentid>
    <comment_count>4</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-05-01 11:01:04 -0700</bug_when>
    <thetext>

*** This bug has been marked as a duplicate of bug 23209 ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>613532</commentid>
    <comment_count>5</comment_count>
      <attachid>139573</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-05-01 11:02:14 -0700</bug_when>
    <thetext>Comment on attachment 139573
Patch V2.

I didn&apos;t look at this patch, but please fix this under bug 23209 (which already has a WIP patch).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>613635</commentid>
    <comment_count>6</comment_count>
    <who name="Igor Trindade Oliveira">igor.oliveira</who>
    <bug_when>2012-05-01 13:54:35 -0700</bug_when>
    <thetext>Reopening the bug, now it blocks the bug #85253.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>613692</commentid>
    <comment_count>7</comment_count>
      <attachid>139687</attachid>
    <who name="Igor Trindade Oliveira">igor.oliveira</who>
    <bug_when>2012-05-01 14:53:29 -0700</bug_when>
    <thetext>Created attachment 139687
Patch V3

Proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>613704</commentid>
    <comment_count>8</comment_count>
      <attachid>139687</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-05-01 15:01:32 -0700</bug_when>
    <thetext>Comment on attachment 139687
Patch V3

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

&gt; LayoutTests/ChangeLog:11
&gt; +        * animations/first-letter-animation-expected.txt: Added.
&gt; +        * animations/first-letter-animation.html: Added.
&gt; +        * transitions/first-letter-color-transition-expected.txt: Added.
&gt; +        * transitions/first-letter-color-transition.html: Added.

I think you should also test:
* transition on both an element and its pseudoelement, of the same and different properties
* animation on an element and its pseudoelement, to check that they can be controlled independently.

&gt; Source/WebCore/rendering/RenderBlock.cpp:5975
&gt; +    RefPtr&lt;RenderStyle&gt; temporaryStyle = RenderStyle::create();
&gt; +    temporaryStyle-&gt;inheritFrom(firstLetterBlock-&gt;style());
&gt; +    firstLetter-&gt;setStyle(temporaryStyle);  
&gt;      firstLetterContainer-&gt;addChild(firstLetter, currentChild);
&gt; +    
&gt; +    RefPtr&lt;RenderStyle&gt; pseudoElementStyle = animation()-&gt;updateAnimations(firstLetter, pseudoStyle);
&gt; +    firstLetter-&gt;setStyle(pseudoElementStyle);

It seems odd to call updateAnimaitons explicitly here. I think this logic should be wrapped up in a RenderObject method that we can possibly use elsewhere.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>615857</commentid>
    <comment_count>9</comment_count>
      <attachid>140139</attachid>
    <who name="Igor Trindade Oliveira">igor.oliveira</who>
    <bug_when>2012-05-03 18:10:59 -0700</bug_when>
    <thetext>Created attachment 140139
Patch V4.

Updated patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>616415</commentid>
    <comment_count>10</comment_count>
      <attachid>140139</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-05-04 10:49:47 -0700</bug_when>
    <thetext>Comment on attachment 140139
Patch V4.

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

Tests still need to be improved.

&gt; LayoutTests/animations/first-letter-animation.html:13
&gt; +    .box {
&gt; +      position: relative;
&gt; +      left: 400px;
&gt; +      top: 100px;
&gt; +      width: 100px;
&gt; +      height: 100px;
&gt; +      background: blue;
&gt; +      -webkit-animation: boxAnim 1s linear;

A one second test is way too slow. Can this test be changed to use the pauseAPI? (though that might need fixing for pseudos).

&gt; LayoutTests/animations/first-letter-animation.html:29
&gt; +    @-webkit-keyframes firstLetterAnim {
&gt; +      from { margin: 0px; }
&gt; +      to { margin: 100px; }
&gt; +    }
&gt; +
&gt; +    @-webkit-keyframes boxAnim {
&gt; +      from { -webkit-transform: scale(1); }
&gt; +      to { -webkit-transform: scale(3); }

The interesting case is the same property being animated (in different ways) on the element and the pseudo, but you&apos;re not testing that here.

You should also test that setting animation-play-state affects the correct animation.

&gt; LayoutTests/transitions/first-letter-color-transition.html:15
&gt; +      -webkit-transition: color 1s;

Ditto.

&gt; LayoutTests/transitions/first-letter-transition.html:23
&gt; +      -webkit-transition: color 1s;
&gt; +    }
&gt; +
&gt; +    #first {
&gt; +      -webkit-transition: left 1s;
&gt; +    }
&gt; +
&gt; +    #second {
&gt; +      -webkit-transition: color 1s;

This test is also way too slow. Can it use the transition-test-helpers.js?

You also need to test a transition of the same property on the element and the pseudo, preferably where the transitions begin at different times.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>637875</commentid>
    <comment_count>11</comment_count>
    <who name="Igor Trindade Oliveira">igor.oliveira</who>
    <bug_when>2012-05-30 17:50:04 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 140139 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=140139&amp;action=review
&gt; 
&gt; Tests still need to be improved.
&gt; 
&gt; &gt; LayoutTests/animations/first-letter-animation.html:13
&gt; &gt; +    .box {
&gt; &gt; +      position: relative;
&gt; &gt; +      left: 400px;
&gt; &gt; +      top: 100px;
&gt; &gt; +      width: 100px;
&gt; &gt; +      height: 100px;
&gt; &gt; +      background: blue;
&gt; &gt; +      -webkit-animation: boxAnim 1s linear;
&gt; 
&gt; A one second test is way too slow. Can this test be changed to use the pauseAPI? (though that might need fixing for pseudos).
&gt; 

Normally pauseAPI is implemented using Document::getElementById to get the
Node information, however pseudo elements do not have Node.

&gt; &gt; LayoutTests/animations/first-letter-animation.html:29
&gt; &gt; +    @-webkit-keyframes firstLetterAnim {
&gt; &gt; +      from { margin: 0px; }
&gt; &gt; +      to { margin: 100px; }
&gt; &gt; +    }
&gt; &gt; +
&gt; &gt; +    @-webkit-keyframes boxAnim {
&gt; &gt; +      from { -webkit-transform: scale(1); }
&gt; &gt; +      to { -webkit-transform: scale(3); }
&gt; 
&gt; The interesting case is the same property being animated (in different ways) on the element and the pseudo, but you&apos;re not testing that here.
&gt; 

Ok

&gt; You should also test that setting animation-play-state affects the correct animation.
&gt; 

Sure.

&gt; &gt; LayoutTests/transitions/first-letter-color-transition.html:15
&gt; &gt; +      -webkit-transition: color 1s;
&gt; 
&gt; Ditto.
&gt; 
&gt; &gt; LayoutTests/transitions/first-letter-transition.html:23
&gt; &gt; +      -webkit-transition: color 1s;
&gt; &gt; +    }
&gt; &gt; +
&gt; &gt; +    #first {
&gt; &gt; +      -webkit-transition: left 1s;
&gt; &gt; +    }
&gt; &gt; +
&gt; &gt; +    #second {
&gt; &gt; +      -webkit-transition: color 1s;
&gt; 
&gt; This test is also way too slow. Can it use the transition-test-helpers.js?

transition-test-helpers.js and also animation helpers use getElementById and it does not work with pseudo elements.


&gt; 
&gt; You also need to test a transition of the same property on the element and the pseudo, preferably where the transitions begin at different times.

Ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>637878</commentid>
    <comment_count>12</comment_count>
      <attachid>144960</attachid>
    <who name="Igor Trindade Oliveira">igor.oliveira</who>
    <bug_when>2012-05-30 17:52:43 -0700</bug_when>
    <thetext>Created attachment 144960
Patch V5.

Proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>638729</commentid>
    <comment_count>13</comment_count>
      <attachid>144960</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-05-31 14:45:59 -0700</bug_when>
    <thetext>Comment on attachment 144960
Patch V5.

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

r- pending answers to my questions.

&gt; LayoutTests/animations/first-letter-animation.html:11
&gt; +      -webkit-animation: boxAnimation 0.5s 0.2s linear;

0.5s is still pretty long for one test. Imagine 100 of these; you&apos;ve eaten 50s of every developer&apos;s time who runs tests.

&gt; LayoutTests/animations/first-letter-animation.html:28
&gt; +           }

Style rules would suggest this paren be aligned with the &apos;from&apos;.

&gt; LayoutTests/animations/first-letter-play-state.html:5
&gt; +&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD HTML 4.01 Transitional//EN&quot; &quot;http://www.w3.org/TR/html4/loose.dtd&quot;&gt;
&gt; +&lt;html lang=&quot;en&quot;&gt;
&gt; +&lt;head&gt;
&gt; +  &lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot;&gt;
&gt; +  &lt;title&gt;Test of -webkit-animation-play-state&lt;/title&gt;

Could be simplified at match the other test.

&gt; Source/WebCore/ChangeLog:8
&gt; +        Instead of call RenderOject::node() in the animations code,

&quot;of calling&quot;

&gt; Source/WebCore/rendering/RenderBlock.cpp:6020
&gt; -    RenderStyle* pseudoStyle = styleForFirstLetter(firstLetterBlock, firstLetterContainer);
&gt; +    RefPtr&lt;RenderStyle&gt; pseudoStyle = animation()-&gt;updateAnimations(firstLetter, styleForFirstLetter(firstLetterBlock, firstLetterContainer));

Why do we have to call updateAnimations() explicitly in this case, but in createFirstLetterRenderer() we can rely on setAnimatableStyle() to call updateAnimations() for us?

&gt; Source/WebCore/rendering/RenderObject.cpp:2227
&gt; +Node* RenderObject::generatingNode() const
&gt; +{
&gt; +    Node* node = m_node == document() ? 0 : m_node;
&gt; +    if (node)
&gt; +        return node;
&gt; +
&gt; +    for (RenderObject* object = parent(); object; object = object-&gt;parent()) {
&gt; +        if (Node* node = (object-&gt;node() == object-&gt;document() ? 0 : object-&gt;node()))
&gt; +            return node;
&gt; +    }
&gt; +    return 0;
&gt; +}

Does this behavior change affect other calls to generatingNode(), like the counter code?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>639631</commentid>
    <comment_count>14</comment_count>
      <attachid>145358</attachid>
    <who name="Igor Trindade Oliveira">igor.oliveira</who>
    <bug_when>2012-06-01 12:39:51 -0700</bug_when>
    <thetext>Created attachment 145358
Patch V6.

Proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>639633</commentid>
    <comment_count>15</comment_count>
    <who name="Igor Trindade Oliveira">igor.oliveira</who>
    <bug_when>2012-06-01 12:45:16 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 144960 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=144960&amp;action=review
&gt; 
&gt; r- pending answers to my questions.
&gt; 
&gt; &gt; LayoutTests/animations/first-letter-animation.html:11
&gt; &gt; +      -webkit-animation: boxAnimation 0.5s 0.2s linear;
&gt; 
&gt; 0.5s is still pretty long for one test. Imagine 100 of these; you&apos;ve eaten 50s of every developer&apos;s time who runs tests.
&gt; 

urgh!

&gt; &gt; LayoutTests/animations/first-letter-animation.html:28
&gt; &gt; +           }
&gt; 
&gt; Style rules would suggest this paren be aligned with the &apos;from&apos;.
&gt; 

Ok.

&gt; &gt; LayoutTests/animations/first-letter-play-state.html:5
&gt; &gt; +&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD HTML 4.01 Transitional//EN&quot; &quot;http://www.w3.org/TR/html4/loose.dtd&quot;&gt;
&gt; &gt; +&lt;html lang=&quot;en&quot;&gt;
&gt; &gt; +&lt;head&gt;
&gt; &gt; +  &lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot;&gt;
&gt; &gt; +  &lt;title&gt;Test of -webkit-animation-play-state&lt;/title&gt;
&gt; 
&gt; Could be simplified at match the other test.
&gt; 

Done.

&gt; &gt; Source/WebCore/ChangeLog:8
&gt; &gt; +        Instead of call RenderOject::node() in the animations code,
&gt; 
&gt; &quot;of calling&quot;

Fixed.

&gt; 
&gt; &gt; Source/WebCore/rendering/RenderBlock.cpp:6020
&gt; &gt; -    RenderStyle* pseudoStyle = styleForFirstLetter(firstLetterBlock, firstLetterContainer);
&gt; &gt; +    RefPtr&lt;RenderStyle&gt; pseudoStyle = animation()-&gt;updateAnimations(firstLetter, styleForFirstLetter(firstLetterBlock, firstLetterContainer));
&gt; 
&gt; Why do we have to call updateAnimations() explicitly in this case, but in createFirstLetterRenderer() we can rely on setAnimatableStyle() to call updateAnimations() for us?
&gt; 

Done.

&gt; &gt; Source/WebCore/rendering/RenderObject.cpp:2227
&gt; &gt; +Node* RenderObject::generatingNode() const
&gt; &gt; +{
&gt; &gt; +    Node* node = m_node == document() ? 0 : m_node;
&gt; &gt; +    if (node)
&gt; &gt; +        return node;
&gt; &gt; +
&gt; &gt; +    for (RenderObject* object = parent(); object; object = object-&gt;parent()) {
&gt; &gt; +        if (Node* node = (object-&gt;node() == object-&gt;document() ? 0 : object-&gt;node()))
&gt; &gt; +            return node;
&gt; &gt; +    }
&gt; &gt; +    return 0;
&gt; &gt; +}
&gt; 
&gt; Does this behavior change affect other calls to generatingNode(), like the counter code?

I ran the tests and all worked and i am see any crash. However for the new patch i am not changing generatingNode() anymore because RenderCounter had/has lot of security bugs and it is better unify styledGeneratingNode and generatingNode in other patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>639905</commentid>
    <comment_count>16</comment_count>
      <attachid>145416</attachid>
    <who name="Igor Trindade Oliveira">igor.oliveira</who>
    <bug_when>2012-06-01 18:22:49 -0700</bug_when>
    <thetext>Created attachment 145416
Patch V7.

Fix a crash in first-letter tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>641759</commentid>
    <comment_count>17</comment_count>
      <attachid>145416</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-06-05 11:30:29 -0700</bug_when>
    <thetext>Comment on attachment 145416
Patch V7.

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

I think this needs one more round, but it&apos;s close. If you rename generatingNode(), you should do it as a first step in a separate patch.

&gt; LayoutTests/animations/first-letter-play-state.html:11
&gt; +      -webkit-animation: &quot;move1&quot; 0.2s linear;

Keyframe names are IDENTS and should not be quoted.

&gt; LayoutTests/animations/first-letter-play-state.html:17
&gt; +    @-webkit-keyframes &quot;move1&quot; {

Ditto.

&gt; LayoutTests/animations/first-letter-play-state.html:21
&gt; +    @-webkit-keyframes &quot;firstLetterAnimation&quot; {

Ditto.

&gt; LayoutTests/animations/first-letter-play-state.html:43
&gt; +    function stop()
&gt; +    {
&gt; +        document.getElementById(&quot;box1&quot;).style.webkitAnimationPlayState = &quot;paused&quot;;
&gt; +    }
&gt; +
&gt; +    function start()
&gt; +    {
&gt; +        document.getElementById(&quot;box1&quot;).style.webkitAnimationPlayState = &quot;running&quot;;
&gt; +    }

This isn&apos;t testing play-state on the pseudo animation, which I think is the interesting thing.

&gt; LayoutTests/animations/first-letter-play-state.html:61
&gt; +        }
&gt; +            
&gt; +    }

Extra line here.

&gt; LayoutTests/transitions/first-letter-color-transition.html:42
&gt; +    window.addEventListener( &apos;webkitTransitionEnd&apos;, transitionEnded, false );

Extra spaces inside the parens.

&gt; Source/WebCore/rendering/RenderObject.h:585
&gt; +    Node* styledGeneratingNode() const;

The comment for generatingNode() seems totally wrong, so maybe that one should be renamed. I&apos;m not a big fan of styledGeneratingNode().

&gt; Source/WebCore/rendering/RenderObject.h:668
&gt; +    void setAnimatableStyle(PassRefPtr&lt;RenderStyle&gt;, bool isGeneratedContent = false);

I don&apos;t like the boolean parameter here. It&apos;s hard to read at the call site. Maybe two methods would be clearer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646324</commentid>
    <comment_count>18</comment_count>
    <who name="Igor Trindade Oliveira">igor.oliveira</who>
    <bug_when>2012-06-11 15:24:59 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; (From update of attachment 145416 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=145416&amp;action=review
&gt; 
&gt; I think this needs one more round, but it&apos;s close. If you rename generatingNode(), you should do it as a first step in a separate patch.
&gt; 

Ok i will open a bug.

&gt; &gt; LayoutTests/animations/first-letter-play-state.html:11
&gt; &gt; +      -webkit-animation: &quot;move1&quot; 0.2s linear;
&gt; 
&gt; Keyframe names are IDENTS and should not be quoted.
&gt; 
&gt; &gt; LayoutTests/animations/first-letter-play-state.html:17
&gt; &gt; +    @-webkit-keyframes &quot;move1&quot; {
&gt; 
&gt; Ditto.
&gt; 

Ok.

&gt; &gt; LayoutTests/animations/first-letter-play-state.html:21
&gt; &gt; +    @-webkit-keyframes &quot;firstLetterAnimation&quot; {
&gt; 
&gt; Ditto.

Ok.

&gt; 
&gt; &gt; LayoutTests/animations/first-letter-play-state.html:43
&gt; &gt; +    function stop()
&gt; &gt; +    {
&gt; &gt; +        document.getElementById(&quot;box1&quot;).style.webkitAnimationPlayState = &quot;paused&quot;;
&gt; &gt; +    }
&gt; &gt; +
&gt; &gt; +    function start()
&gt; &gt; +    {
&gt; &gt; +        document.getElementById(&quot;box1&quot;).style.webkitAnimationPlayState = &quot;running&quot;;
&gt; &gt; +    }
&gt; 
&gt; This isn&apos;t testing play-state on the pseudo animation, which I think is the interesting thing.
&gt; 

You were right. I found a bug testing play-state on the pseudo element.

&gt; &gt; LayoutTests/animations/first-letter-play-state.html:61
&gt; &gt; +        }
&gt; &gt; +            
&gt; &gt; +    }
&gt; 
&gt; Extra line here.

Ok.

&gt; 
&gt; &gt; LayoutTests/transitions/first-letter-color-transition.html:42
&gt; &gt; +    window.addEventListener( &apos;webkitTransitionEnd&apos;, transitionEnded, false );
&gt; 
&gt; Extra spaces inside the parens.

Ok

&gt; 
&gt; &gt; Source/WebCore/rendering/RenderObject.h:585
&gt; &gt; +    Node* styledGeneratingNode() const;
&gt; 
&gt; The comment for generatingNode() seems totally wrong, so maybe that one should be renamed. I&apos;m not a big fan of styledGeneratingNode().
&gt; 

I also am not a big fan of styledGeneratingNode(), however i am not have a better name. I will open a bug to unify generatingNode and styledGeneratingNode so we can remove styledGeneratingNode soon.

&gt; &gt; Source/WebCore/rendering/RenderObject.h:668
&gt; &gt; +    void setAnimatableStyle(PassRefPtr&lt;RenderStyle&gt;, bool isGeneratedContent = false);
&gt; 
&gt; I don&apos;t like the boolean parameter here. It&apos;s hard to read at the call site. Maybe two methods would be clearer.

Yeah, in fact we do not need anymore this method. I am not animating the RenderTextFragment directly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646325</commentid>
    <comment_count>19</comment_count>
      <attachid>146929</attachid>
    <who name="Igor Trindade Oliveira">igor.oliveira</who>
    <bug_when>2012-06-11 15:28:05 -0700</bug_when>
    <thetext>Created attachment 146929
Patch v8.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>647301</commentid>
    <comment_count>20</comment_count>
      <attachid>146929</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-12 14:08:36 -0700</bug_when>
    <thetext>Comment on attachment 146929
Patch v8.

Clearing flags on attachment: 146929

Committed r120119: &lt;http://trac.webkit.org/changeset/120119&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>647302</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-12 14:08:42 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>647459</commentid>
    <comment_count>22</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-06-12 16:30:12 -0700</bug_when>
    <thetext>Does this test need to have actual test in box1? That means that for any port that uses different text rendering (most ports), this test will output two FAIL lines.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>647460</commentid>
    <comment_count>23</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-06-12 16:31:30 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; Does this test need to have actual test in box1? That means that for any port that uses different text rendering (most ports), this test will output two FAIL lines.

I&apos;m talking about animations/first-letter-play-state.html.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>647464</commentid>
    <comment_count>24</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-06-12 16:36:18 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; (In reply to comment #22)
&gt; &gt; Does this test need to have actual test in box1? That means that for any port that uses different text rendering (most ports), this test will output two FAIL lines.
&gt; 
&gt; I&apos;m talking about animations/first-letter-play-state.html.

Ugh...spoke too soon. This has nothing to do with text content. The chromium bots are all getting different values than what&apos;s in the acceptable range. I can&apos;t tell at the moment whether it&apos;s a chromium bug or a bug in the test.


+FAIL - &quot;left&quot; property for &quot;box1&quot; element at 0.1s expected: 200 but saw: 264.8057861328125
+FAIL - &quot;left&quot; property for &quot;box1&quot; element at 0.13s expected: 200 but saw: 264.8057861328125


+FAIL - &quot;left&quot; property for &quot;box1&quot; element at 0.1s expected: 200 but saw: 250
+FAIL - &quot;left&quot; property for &quot;box1&quot; element at 0.13s expected: 200 but saw: 250</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>647486</commentid>
    <comment_count>25</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-06-12 16:53:09 -0700</bug_when>
    <thetext>Tracking the failure in bug 88937.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>651855</commentid>
    <comment_count>26</comment_count>
    <who name="Igor Trindade Oliveira">igor.oliveira</who>
    <bug_when>2012-06-18 16:16:35 -0700</bug_when>
    <thetext>Rolled it out: https://trac.webkit.org/changeset/120639</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676189</commentid>
    <comment_count>27</comment_count>
    <who name="Igor Trindade Oliveira">igor.oliveira</who>
    <bug_when>2012-07-23 17:03:11 -0700</bug_when>
    <thetext>This patch was reverted because it caused several security bugs. These bugs happen because the first-letter element is just created when RenderBlock::layout is called and for animations it is too late. Before work again on this bug we need to move the creation of first-letter elements out of the RenderBlock::layout. Maybe for a pre layout step.

(In reply to comment #26)
&gt; Rolled it out: https://trac.webkit.org/changeset/120639</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>139564</attachid>
            <date>2012-04-30 18:23:01 -0700</date>
            <delta_ts>2012-04-30 19:56:30 -0700</delta_ts>
            <desc>Patch V1.</desc>
            <filename>0001-Animate-first-letter-element.patch</filename>
            <type>text/plain</type>
            <size>20846</size>
            <attacher name="Igor Trindade Oliveira">igor.oliveira</attacher>
            
              <data encoding="base64">RnJvbSBjZTIxNmZkODNlZjI4MWYxZmVjOWZmOWZjMTliODQ4YzdiYTcyYjJmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBJZ29yIE9saXZlaXJhIDxpZ29yLm9Ac2lzYS5zYW1zdW5nLmNv
bT4KRGF0ZTogTW9uLCAzMCBBcHIgMjAxMiAxNjo0ODoyMyAtMDcwMApTdWJqZWN0OiBbUEFUQ0hd
IEFuaW1hdGUgZmlyc3QtbGV0dGVyIGVsZW1lbnQuCgotLS0KIExheW91dFRlc3RzL0NoYW5nZUxv
ZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxMiArKysrCiAuLi4vYW5pbWF0aW9u
cy9maXJzdC1sZXR0ZXItYW5pbWF0aW9uLWV4cGVjdGVkLnR4dCB8ICAgIDIgKwogTGF5b3V0VGVz
dHMvYW5pbWF0aW9ucy9maXJzdC1sZXR0ZXItYW5pbWF0aW9uLmh0bWwgfCAgIDUxICsrKysrKysr
KysrKysrKysrKwogLi4uL2ZpcnN0LWxldHRlci1jb2xvci10cmFuc2l0aW9uLWV4cGVjdGVkLnR4
dCAgICAgfCAgICAyICsKIC4uLi90cmFuc2l0aW9ucy9maXJzdC1sZXR0ZXItY29sb3ItdHJhbnNp
dGlvbi5odG1sIHwgICA1NSArKysrKysrKysrKysrKysrKysrKwogU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDM5ICsrKysrKysrKysrKysrCiBT
b3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcCAgICB8ICAgIDYg
Ky0KIC4uLi9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkNvbnRyb2xsZXIuY3BwIHwg
ICAgOSArKy0tCiAuLi4vV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9JbXBsaWNpdEFuaW1hdGlvbi5j
cHAgICB8ICAgIDYgKy0KIC4uLi9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0tleWZyYW1lQW5pbWF0
aW9uLmNwcCAgIHwgICAxMiArKy0tCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxv
Y2suY3BwICAgICAgICAgICB8ICAgMjAgKysrKystLS0KIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJPYmplY3QuY3BwICAgICAgICAgIHwgICAxMyArKysrKwogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck9iamVjdC5oICAgICAgICAgICAgfCAgICAzICstCiAxMyBmaWxlcyBj
aGFuZ2VkLCAyMDUgaW5zZXJ0aW9ucygrKSwgMjUgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAx
MDA2NDQgTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9maXJzdC1sZXR0ZXItYW5pbWF0aW9uLWV4cGVj
dGVkLnR4dAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2FuaW1hdGlvbnMvZmlyc3Qt
bGV0dGVyLWFuaW1hdGlvbi5odG1sCiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvdHJh
bnNpdGlvbnMvZmlyc3QtbGV0dGVyLWNvbG9yLXRyYW5zaXRpb24tZXhwZWN0ZWQudHh0CiBjcmVh
dGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvZmlyc3QtbGV0dGVyLWNvbG9y
LXRyYW5zaXRpb24uaHRtbAoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA2N2U0YWQxLi5mZmI4N2RkIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTUgQEAKKzIwMTItMDQtMzAgIElnb3IgT2xpdmVpcmEgIDxpZ29yLm9Ac2lzYS5zYW1zdW5n
LmNvbT4KKworICAgICAgICBBcHBseSBhbmltYXRpb25zIGFuZCB0cmFuc2l0aW9ucyBmb3IgZmly
c3QtbGV0dGVyIGVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTg1MjUzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBhbmltYXRpb25zL2ZpcnN0LWxldHRlci1hbmltYXRpb24tZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBhbmltYXRpb25zL2ZpcnN0LWxldHRlci1hbmltYXRpb24uaHRt
bDogQWRkZWQuCisgICAgICAgICogdHJhbnNpdGlvbnMvZmlyc3QtbGV0dGVyLWNvbG9yLXRyYW5z
aXRpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0cmFuc2l0aW9ucy9maXJzdC1s
ZXR0ZXItY29sb3ItdHJhbnNpdGlvbi5odG1sOiBBZGRlZC4KKwogMjAxMi0wNC0yOCAgQ3NhYmEg
T3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtRdF0gVW5yZXZpZXdl
ZCB3ZWVrZW5kIGdhcmRlbmluZywgdXBkYXRlIHRlc3QgcmVzdWx0cywgc2tpcCBuZXcgZmFpbGlu
ZyB0ZXN0cy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvZmlyc3QtbGV0dGVy
LWFuaW1hdGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9hbmltYXRpb25zL2ZpcnN0LWxl
dHRlci1hbmltYXRpb24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLmIwNTdiMGQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9hbmltYXRpb25z
L2ZpcnN0LWxldHRlci1hbmltYXRpb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMiBAQAorTG9y
ZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQuCitQQVNTCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9h
bmltYXRpb25zL2ZpcnN0LWxldHRlci1hbmltYXRpb24uaHRtbCBiL0xheW91dFRlc3RzL2FuaW1h
dGlvbnMvZmlyc3QtbGV0dGVyLWFuaW1hdGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjMyOWEyYmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9hbmlt
YXRpb25zL2ZpcnN0LWxldHRlci1hbmltYXRpb24uaHRtbApAQCAtMCwwICsxLDUxIEBACis8IURP
Q1RZUEUgaHRtbD4KKworPGh0bWw+Cis8aGVhZD4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyIgbWVk
aWE9InNjcmVlbiI+CisgICAgLmJveCB7CisgICAgICB3aWR0aDogMTAwcHg7CisgICAgICBoZWln
aHQ6IDEwMHB4OworICAgICAgYmFja2dyb3VuZDogYmx1ZTsKKyAgICB9CisKKyAgICAuYm94Ojpm
aXJzdC1sZXR0ZXIgeworICAgICAgZm9udC1zaXplOiAyNHB0OworICAgICAgY29sb3I6IGJsYWNr
OworICAgICAgLXdlYmtpdC1hbmltYXRpb246IGZpcnN0TGV0dGVyQW5pbSAxcyBsaW5lYXI7Cisg
ICAgfQorCisgICAgQC13ZWJraXQta2V5ZnJhbWVzIGZpcnN0TGV0dGVyQW5pbSB7CisgICAgICBm
cm9tIHsgbWFyZ2luOiAwcHg7IH0KKyAgICAgIHRvIHsgbWFyZ2luOiAxMDBweDsgfQorICAgIH0K
Kzwvc3R5bGU+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2FuaW1hdGlvbi10ZXN0LWhlbHBlcnMu
anMiIHR5cGU9InRleHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiPjwvc2NyaXB0PgorPHNj
cmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04Ij4KKyAgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCgpOworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25l
KCk7CisgICAgfQorCisgICAgdmFyIHJlc3VsdCA9ICIiCisgICAgZnVuY3Rpb24gYW5pbWF0aW9u
RW5kZWQoZXZlbnQpCisgICAgeyAgIAorICAgICAgICBpZiAoZXZlbnQuYW5pbWF0aW9uTmFtZSA9
PSAiZmlyc3RMZXR0ZXJBbmltIikKKyAgICAgICAgICAgcmVzdWx0ICs9ICJQQVNTIgorCisgICAg
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQnKS5pbm5lckhUTUwgPSByZXN1bHQ7
CisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgfQorCisgICAgd2luZG93LmFk
ZEV2ZW50TGlzdGVuZXIoIndlYmtpdEFuaW1hdGlvbkVuZCIsIGFuaW1hdGlvbkVuZGVkLCBmYWxz
ZSApOworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgPGRpdiBjbGFzcz0iYm94Ij4KKyAg
ICBMb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldC4KKyAgPC9kaXY+CisgIDxkaXYgaWQ9InJlc3Vs
dCI+CisgIDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
dHJhbnNpdGlvbnMvZmlyc3QtbGV0dGVyLWNvbG9yLXRyYW5zaXRpb24tZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvZmlyc3QtbGV0dGVyLWNvbG9yLXRyYW5zaXRpb24tZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIwNTdiMGQKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90cmFuc2l0aW9ucy9maXJzdC1sZXR0ZXItY29s
b3ItdHJhbnNpdGlvbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyIEBACitMb3JlbSBpcHN1bSBk
b2xvciBzaXQgYW1ldC4KK1BBU1MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RyYW5zaXRpb25z
L2ZpcnN0LWxldHRlci1jb2xvci10cmFuc2l0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy90cmFuc2l0
aW9ucy9maXJzdC1sZXR0ZXItY29sb3ItdHJhbnNpdGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjJkZWM4ZTMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy90cmFuc2l0aW9ucy9maXJzdC1sZXR0ZXItY29sb3ItdHJhbnNpdGlvbi5odG1sCkBAIC0wLDAg
KzEsNTUgQEAKKzwhRE9DVFlQRSBodG1sPgorCis8aHRtbD4KKzxoZWFkPgorPHN0eWxlIHR5cGU9
InRleHQvY3NzIiBtZWRpYT0ic2NyZWVuIj4KKyAgICAuYm94IHsKKyAgICAgIHdpZHRoOiAxMDBw
eDsKKyAgICAgIGhlaWdodDogMTAwcHg7CisgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBibHVlOwor
ICAgIH0KKyAgICAKKyAgICAuYm94OjpmaXJzdC1sZXR0ZXIgeworICAgICAgZm9udC1zaXplOiAy
NHB0OworICAgICAgY29sb3I6IGJsYWNrOworICAgICAgLXdlYmtpdC10cmFuc2l0aW9uOiBjb2xv
ciAxczsKKyAgICB9CisKKyAgICBib2R5LmdvIC5ib3g6OmZpcnN0LWxldHRlciB7CisgICAgICBj
b2xvcjogd2hpdGU7CisgICAgfQorCis8L3N0eWxlPgorPHNjcmlwdCAgdHlwZT0idGV4dC9qYXZh
c2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+CisgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKSB7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIH0KKworICAgIHZh
ciByZXN1bHQgPSAiIgorICAgIGZ1bmN0aW9uIHRyYW5zaXRpb25FbmRlZChldmVudCkKKyAgICB7
ICAgCisgICAgICAgIGlmIChldmVudC5wcm9wZXJ0eU5hbWUgPT0gImNvbG9yIikKKyAgICAgICAg
ICAgcmVzdWx0ICs9ICJQQVNTIgorCisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdy
ZXN1bHQnKS5pbm5lckhUTUwgPSByZXN1bHQ7CisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25l
KCk7CisgICAgfQorCisgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoICd3ZWJraXRUcmFuc2l0
aW9uRW5kJywgdHJhbnNpdGlvbkVuZGVkLCBmYWxzZSApOworCisKKyAgICB3aW5kb3cuYWRkRXZl
bnRMaXN0ZW5lcigibG9hZCIsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgZG9jdW1lbnQuYm9keS5j
bGFzc05hbWUgPSAiZ28iOworICAgIH0sIGZhbHNlKTsKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+CisgIDxkaXYgY2xhc3M9ImJveCI+CisgICAgTG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQu
CisgIDwvZGl2PgorICA8ZGl2IGlkPSJyZXN1bHQiPgorICA8L2Rpdj4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwppbmRleCA5NzMwNThhLi41ODVmNjk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NDIgQEAKKzIwMTItMDQtMzAgIElnb3IgT2xpdmVpcmEgIDxpZ29yLm9Ac2lzYS5zYW1zdW5nLmNv
bT4KKworICAgICAgICBBcHBseSBhbmltYXRpb25zIGFuZCB0cmFuc2l0aW9ucyBmb3IgZmlyc3Qt
bGV0dGVyIGVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTg1MjUzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgSW5pdGlhbCBwYXRjaCBieSBTaW1vbiBGcmFzZXIuCisKKyAgICAgICAgVGVzdHM6IGFu
aW1hdGlvbnMvZmlyc3QtbGV0dGVyLWFuaW1hdGlvbi5odG1sCisgICAgICAgICAgICAgICB0cmFu
c2l0aW9ucy9maXJzdC1sZXR0ZXItY29sb3ItdHJhbnNpdGlvbi5odG1sCisKKyAgICAgICAgKiBw
YWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1h
dGlvbkJhc2U6OnVwZGF0ZVN0YXRlTWFjaGluZSk6CisgICAgICAgICogcGFnZS9hbmltYXRpb24v
QW5pbWF0aW9uQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25Db250
cm9sbGVyUHJpdmF0ZTo6dXBkYXRlQW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpBbmlt
YXRpb25Db250cm9sbGVyUHJpdmF0ZTo6cGF1c2VBbmltYXRpb25BdFRpbWUpOgorICAgICAgICAo
V2ViQ29yZTo6QW5pbWF0aW9uQ29udHJvbGxlclByaXZhdGU6OnBhdXNlVHJhbnNpdGlvbkF0VGlt
ZSk6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25Db250cm9sbGVyOjpjYW5jZWxBbmltYXRp
b25zKToKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvbkNvbnRyb2xsZXI6OnVwZGF0ZUFuaW1h
dGlvbnMpOgorICAgICAgICAqIHBhZ2UvYW5pbWF0aW9uL0ltcGxpY2l0QW5pbWF0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkltcGxpY2l0QW5pbWF0aW9uOjpwYXVzZUFuaW1hdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpJbXBsaWNpdEFuaW1hdGlvbjo6c2VuZFRyYW5zaXRpb25FdmVudCk6
CisgICAgICAgICogcGFnZS9hbmltYXRpb24vS2V5ZnJhbWVBbmltYXRpb24uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6S2V5ZnJhbWVBbmltYXRpb246OktleWZyYW1lQW5pbWF0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OktleWZyYW1lQW5pbWF0aW9uOjpwYXVzZUFuaW1hdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpLZXlmcmFtZUFuaW1hdGlvbjo6ZW5kQW5pbWF0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OktleWZyYW1lQW5pbWF0aW9uOjpzZW5kQW5pbWF0aW9uRXZlbnQpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9j
azo6dXBkYXRlRmlyc3RMZXR0ZXJTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9j
azo6Y3JlYXRlRmlyc3RMZXR0ZXJSZW5kZXJlcik6CisgICAgICAgIFdlIG5lZWQgdG8gY3JlYXRl
IGEgdGVtcG9yYXJ5IHN0eWxlIGJlY2F1c2Ugd2UgY2FuIG5vdCBhcHBseSB0cmFuc2l0aW9ucwor
ICAgICAgICBpbiBhbiBlbGVtZW50IHdpdGhvdXQgYW4gaW5pdGlhbCBzdHlsZS4KKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9i
amVjdDo6Z2VuZXJhdGluZ05vZGUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlck9iamVjdC5oOgorICAgICAgICAoUmVuZGVyT2JqZWN0KToKKwogMjAxMi0w
NC0yOCAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFNtb290aCBzY3Jv
bGxpbmcgbmVlZHMgYSBuZXcga2V5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2Fu
aW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9u
L0FuaW1hdGlvbkJhc2UuY3BwCmluZGV4IDMzZDYzMjYuLmI2NzI3OTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuY3BwCkBAIC0xOTEsNyArMTkx
LDcgQEAgdm9pZCBBbmltYXRpb25CYXNlOjp1cGRhdGVTdGF0ZU1hY2hpbmUoQW5pbVN0YXRlSW5w
dXQgaW5wdXQsIGRvdWJsZSBwYXJhbSkKIAogICAgICAgICAgICAgICAgIC8vIFRyaWdnZXIgYSBy
ZW5kZXIgc28gd2UgY2FuIHN0YXJ0IHRoZSBhbmltYXRpb24KICAgICAgICAgICAgICAgICBpZiAo
bV9vYmplY3QpCi0gICAgICAgICAgICAgICAgICAgIG1fY29tcEFuaW0tPmFuaW1hdGlvbkNvbnRy
b2xsZXIoKS0+YWRkTm9kZUNoYW5nZVRvRGlzcGF0Y2gobV9vYmplY3QtPm5vZGUoKSk7CisgICAg
ICAgICAgICAgICAgICAgIG1fY29tcEFuaW0tPmFuaW1hdGlvbkNvbnRyb2xsZXIoKS0+YWRkTm9k
ZUNoYW5nZVRvRGlzcGF0Y2gobV9vYmplY3QtPmdlbmVyYXRpbmdOb2RlKCkpOwogICAgICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBBU1NFUlQoIXBhdXNlZCgpKTsKICAgICAgICAg
ICAgICAgICAvLyBXZSdyZSB3YWl0aW5nIGZvciB0aGUgc3RhcnQgdGltZXIgdG8gZmlyZSBhbmQg
d2UgZ290IGEgcGF1c2UuIENhbmNlbCB0aGUgdGltZXIsIHBhdXNlIGFuZCB3YWl0CkBAIC0yNTIs
NyArMjUyLDcgQEAgdm9pZCBBbmltYXRpb25CYXNlOjp1cGRhdGVTdGF0ZU1hY2hpbmUoQW5pbVN0
YXRlSW5wdXQgaW5wdXQsIGRvdWJsZSBwYXJhbSkKIAogICAgICAgICAgICAgICAgIC8vIERpc3Bh
dGNoIHVwZGF0ZVN0eWxlSWZOZWVkZWQgc28gd2UgY2FuIHN0YXJ0IHRoZSBhbmltYXRpb24KICAg
ICAgICAgICAgICAgICBpZiAobV9vYmplY3QpCi0gICAgICAgICAgICAgICAgICAgIG1fY29tcEFu
aW0tPmFuaW1hdGlvbkNvbnRyb2xsZXIoKS0+YWRkTm9kZUNoYW5nZVRvRGlzcGF0Y2gobV9vYmpl
Y3QtPm5vZGUoKSk7CisgICAgICAgICAgICAgICAgICAgIG1fY29tcEFuaW0tPmFuaW1hdGlvbkNv
bnRyb2xsZXIoKS0+YWRkTm9kZUNoYW5nZVRvRGlzcGF0Y2gobV9vYmplY3QtPmdlbmVyYXRpbmdO
b2RlKCkpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAvLyBXZSBhcmUg
cGF1c2luZyB3aGlsZSB3YWl0aW5nIGZvciBhIHN0YXJ0IHJlc3BvbnNlLiBDYW5jZWwgdGhlIGFu
aW1hdGlvbiBhbmQgd2FpdC4gV2hlbiAKICAgICAgICAgICAgICAgICAvLyB3ZSB1bnBhdXNlLCB3
ZSB3aWxsIGFjdCBhcyB0aG91Z2ggdGhlIHN0YXJ0IHRpbWVyIGp1c3QgZmlyZWQKQEAgLTI5OCw3
ICsyOTgsNyBAQCB2b2lkIEFuaW1hdGlvbkJhc2U6OnVwZGF0ZVN0YXRlTWFjaGluZShBbmltU3Rh
dGVJbnB1dCBpbnB1dCwgZG91YmxlIHBhcmFtKQogICAgICAgICAgICAgICAgICAgICAgICAgcmVz
dW1lT3ZlcnJpZGRlbkFuaW1hdGlvbnMoKTsKIAogICAgICAgICAgICAgICAgICAgICAvLyBGaXJl
IG9mZiBhbm90aGVyIHN0eWxlIGNoYW5nZSBzbyB3ZSBjYW4gc2V0IHRoZSBmaW5hbCB2YWx1ZQot
ICAgICAgICAgICAgICAgICAgICBtX2NvbXBBbmltLT5hbmltYXRpb25Db250cm9sbGVyKCktPmFk
ZE5vZGVDaGFuZ2VUb0Rpc3BhdGNoKG1fb2JqZWN0LT5ub2RlKCkpOworICAgICAgICAgICAgICAg
ICAgICBtX2NvbXBBbmltLT5hbmltYXRpb25Db250cm9sbGVyKCktPmFkZE5vZGVDaGFuZ2VUb0Rp
c3BhdGNoKG1fb2JqZWN0LT5nZW5lcmF0aW5nTm9kZSgpKTsKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIC8vIFdlIGFyZSBwYXVzaW5nIHdo
aWxlIHJ1bm5pbmcuIENhbmNlbCB0aGUgYW5pbWF0aW9uIGFuZCB3YWl0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250cm9sbGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkNvbnRyb2xsZXIuY3BwCmluZGV4
IDBkYzNlYTcuLjZmODMzZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0
aW9uL0FuaW1hdGlvbkNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5p
bWF0aW9uL0FuaW1hdGlvbkNvbnRyb2xsZXIuY3BwCkBAIC05OSw3ICs5OSw3IEBAIGRvdWJsZSBB
bmltYXRpb25Db250cm9sbGVyUHJpdmF0ZTo6dXBkYXRlQW5pbWF0aW9ucyhTZXRDaGFuZ2VkIGNh
bGxTZXRDaGFuZ2VkLyoKICAgICAgICAgICAgICAgICB0aW1lVG9OZXh0U2VydmljZSA9IHQ7CiAg
ICAgICAgICAgICBpZiAoIXRpbWVUb05leHRTZXJ2aWNlKSB7CiAgICAgICAgICAgICAgICAgaWYg
KGNhbGxTZXRDaGFuZ2VkID09IENhbGxTZXRDaGFuZ2VkKSB7Ci0gICAgICAgICAgICAgICAgICAg
IE5vZGUqIG5vZGUgPSBpdC0+Zmlyc3QtPm5vZGUoKTsKKyAgICAgICAgICAgICAgICAgICAgTm9k
ZSogbm9kZSA9IGl0LT5maXJzdC0+Z2VuZXJhdGluZ05vZGUoKTsKICAgICAgICAgICAgICAgICAg
ICAgQVNTRVJUKCFub2RlIHx8IChub2RlLT5kb2N1bWVudCgpICYmICFub2RlLT5kb2N1bWVudCgp
LT5pblBhZ2VDYWNoZSgpKSk7CiAgICAgICAgICAgICAgICAgICAgIG5vZGUtPnNldE5lZWRzU3R5
bGVSZWNhbGMoU3ludGhldGljU3R5bGVDaGFuZ2UpOwogICAgICAgICAgICAgICAgICAgICBjYWxs
ZWRTZXRDaGFuZ2VkID0gdHJ1ZTsKQEAgLTMyNSw3ICszMjUsNyBAQCBib29sIEFuaW1hdGlvbkNv
bnRyb2xsZXJQcml2YXRlOjpwYXVzZUFuaW1hdGlvbkF0VGltZShSZW5kZXJPYmplY3QqIHJlbmRl
cmVyLCBjbwogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoY29tcEFuaW0tPnBhdXNl
QW5pbWF0aW9uQXRUaW1lKG5hbWUsIHQpKSB7Ci0gICAgICAgIHJlbmRlcmVyLT5ub2RlKCktPnNl
dE5lZWRzU3R5bGVSZWNhbGMoU3ludGhldGljU3R5bGVDaGFuZ2UpOworICAgICAgICByZW5kZXJl
ci0+Z2VuZXJhdGluZ05vZGUoKS0+c2V0TmVlZHNTdHlsZVJlY2FsYyhTeW50aGV0aWNTdHlsZUNo
YW5nZSk7CiAgICAgICAgIHN0YXJ0VXBkYXRlU3R5bGVJZk5lZWRlZERpc3BhdGNoZXIoKTsKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMzQzLDcgKzM0Myw3IEBAIGJvb2wgQW5pbWF0
aW9uQ29udHJvbGxlclByaXZhdGU6OnBhdXNlVHJhbnNpdGlvbkF0VGltZShSZW5kZXJPYmplY3Qq
IHJlbmRlcmVyLCBjCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChjb21wQW5pbS0+
cGF1c2VUcmFuc2l0aW9uQXRUaW1lKGNzc1Byb3BlcnR5SUQocHJvcGVydHkpLCB0KSkgewotICAg
ICAgICByZW5kZXJlci0+bm9kZSgpLT5zZXROZWVkc1N0eWxlUmVjYWxjKFN5bnRoZXRpY1N0eWxl
Q2hhbmdlKTsKKyAgICAgICAgcmVuZGVyZXItPmdlbmVyYXRpbmdOb2RlKCktPnNldE5lZWRzU3R5
bGVSZWNhbGMoU3ludGhldGljU3R5bGVDaGFuZ2UpOwogICAgICAgICBzdGFydFVwZGF0ZVN0eWxl
SWZOZWVkZWREaXNwYXRjaGVyKCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTUw
Nyw3ICs1MDcsNyBAQCB2b2lkIEFuaW1hdGlvbkNvbnRyb2xsZXI6OmNhbmNlbEFuaW1hdGlvbnMo
UmVuZGVyT2JqZWN0KiByZW5kZXJlcikKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1fZGF0
YS0+Y2xlYXIocmVuZGVyZXIpKSB7Ci0gICAgICAgIE5vZGUqIG5vZGUgPSByZW5kZXJlci0+bm9k
ZSgpOworICAgICAgICBOb2RlKiBub2RlID0gcmVuZGVyZXItPmdlbmVyYXRpbmdOb2RlKCk7CiAg
ICAgICAgIEFTU0VSVCghbm9kZSB8fCAobm9kZS0+ZG9jdW1lbnQoKSAmJiAhbm9kZS0+ZG9jdW1l
bnQoKS0+aW5QYWdlQ2FjaGUoKSkpOwogICAgICAgICBub2RlLT5zZXROZWVkc1N0eWxlUmVjYWxj
KFN5bnRoZXRpY1N0eWxlQ2hhbmdlKTsKICAgICB9CkBAIC01MzIsNyArNTMyLDYgQEAgUGFzc1Jl
ZlB0cjxSZW5kZXJTdHlsZT4gQW5pbWF0aW9uQ29udHJvbGxlcjo6dXBkYXRlQW5pbWF0aW9ucyhS
ZW5kZXJPYmplY3QqIHJlbmQKICAgICAvLyBhZ2FpbnN0IHRoZSBhbmltYXRpb25zIGluIHRoZSBz
dHlsZSBhbmQgbWFrZSBzdXJlIHdlJ3JlIGluIHN5bmMuICBJZiBkZXN0aW5hdGlvbiB2YWx1ZXMK
ICAgICAvLyBoYXZlIGNoYW5nZWQsIHdlIHJlc2V0IHRoZSBhbmltYXRpb24uICBXZSB0aGVuIGRv
IGEgYmxlbmQgdG8gZ2V0IG5ldyB2YWx1ZXMgYW5kIHdlIHJldHVybgogICAgIC8vIGEgbmV3IHN0
eWxlLgotICAgIEFTU0VSVChyZW5kZXJlci0+bm9kZSgpKTsgLy8gRklYTUU6IFdlIGRvIG5vdCBh
bmltYXRlIGdlbmVyYXRlZCBjb250ZW50IHlldC4KIAogICAgIFJlZlB0cjxDb21wb3NpdGVBbmlt
YXRpb24+IHJlbmRlcmVyQW5pbWF0aW9ucyA9IG1fZGF0YS0+YWNjZXNzQ29tcG9zaXRlQW5pbWF0
aW9uKHJlbmRlcmVyKTsKICAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IGJsZW5kZWRTdHlsZSA9IHJl
bmRlcmVyQW5pbWF0aW9ucy0+YW5pbWF0ZShyZW5kZXJlciwgb2xkU3R5bGUsIG5ld1N0eWxlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0ltcGxpY2l0QW5pbWF0
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0ltcGxpY2l0QW5pbWF0aW9u
LmNwcAppbmRleCBmNzFhMTUzLi5kYjM3YjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL2FuaW1hdGlvbi9JbXBsaWNpdEFuaW1hdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9hbmltYXRpb24vSW1wbGljaXRBbmltYXRpb24uY3BwCkBAIC0xMjksNyArMTI5LDcgQEAg
dm9pZCBJbXBsaWNpdEFuaW1hdGlvbjo6cGF1c2VBbmltYXRpb24oZG91YmxlIHRpbWVPZmZzZXQp
CiAjZW5kaWYKICAgICAvLyBSZXN0b3JlIHRoZSBvcmlnaW5hbCAodW5hbmltYXRlZCkgc3R5bGUK
ICAgICBpZiAoIXBhdXNlZCgpKQotICAgICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKG1fb2JqZWN0
LT5ub2RlKCkpOworICAgICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKG1fb2JqZWN0LT5nZW5lcmF0
aW5nTm9kZSgpKTsKIH0KIAogdm9pZCBJbXBsaWNpdEFuaW1hdGlvbjo6ZW5kQW5pbWF0aW9uKCkK
QEAgLTE2NSw4ICsxNjUsOCBAQCBib29sIEltcGxpY2l0QW5pbWF0aW9uOjpzZW5kVHJhbnNpdGlv
bkV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBkb3VibAogICAgICAgICAgICAg
ICAgIAogICAgICAgICAgICAgLy8gRGlzcGF0Y2ggdGhlIGV2ZW50CiAgICAgICAgICAgICBSZWZQ
dHI8RWxlbWVudD4gZWxlbWVudCA9IDA7Ci0gICAgICAgICAgICBpZiAobV9vYmplY3QtPm5vZGUo
KSAmJiBtX29iamVjdC0+bm9kZSgpLT5pc0VsZW1lbnROb2RlKCkpCi0gICAgICAgICAgICAgICAg
ZWxlbWVudCA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihtX29iamVjdC0+bm9kZSgpKTsKKyAgICAg
ICAgICAgIGlmIChtX29iamVjdC0+Z2VuZXJhdGluZ05vZGUoKSAmJiBtX29iamVjdC0+Z2VuZXJh
dGluZ05vZGUoKS0+aXNFbGVtZW50Tm9kZSgpKQorICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBz
dGF0aWNfY2FzdDxFbGVtZW50Kj4obV9vYmplY3QtPmdlbmVyYXRpbmdOb2RlKCkpOwogCiAgICAg
ICAgICAgICBBU1NFUlQoIWVsZW1lbnQgfHwgKGVsZW1lbnQtPmRvY3VtZW50KCkgJiYgIWVsZW1l
bnQtPmRvY3VtZW50KCktPmluUGFnZUNhY2hlKCkpKTsKICAgICAgICAgICAgIGlmICghZWxlbWVu
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0tleWZyYW1lQW5p
bWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0tleWZyYW1lQW5pbWF0
aW9uLmNwcAppbmRleCBkYTI5MTVkLi4xMDQwY2FmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL2FuaW1hdGlvbi9LZXlmcmFtZUFuaW1hdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9hbmltYXRpb24vS2V5ZnJhbWVBbmltYXRpb24uY3BwCkBAIC01MSw4ICs1MSw4IEBA
IEtleWZyYW1lQW5pbWF0aW9uOjpLZXlmcmFtZUFuaW1hdGlvbihjb25zdCBBbmltYXRpb24qIGFu
aW1hdGlvbiwgUmVuZGVyT2JqZWN0KiByCiAgICAgLCBtX3VuYW5pbWF0ZWRTdHlsZSh1bmFuaW1h
dGVkU3R5bGUpCiB7CiAgICAgLy8gR2V0IHRoZSBrZXlmcmFtZSBSZW5kZXJTdHlsZXMKLSAgICBp
ZiAobV9vYmplY3QgJiYgbV9vYmplY3QtPm5vZGUoKSAmJiBtX29iamVjdC0+bm9kZSgpLT5pc0Vs
ZW1lbnROb2RlKCkpCi0gICAgICAgIG1fb2JqZWN0LT5kb2N1bWVudCgpLT5zdHlsZVJlc29sdmVy
KCktPmtleWZyYW1lU3R5bGVzRm9yQW5pbWF0aW9uKHN0YXRpY19jYXN0PEVsZW1lbnQqPihtX29i
amVjdC0+bm9kZSgpKSwgdW5hbmltYXRlZFN0eWxlLCBtX2tleWZyYW1lcyk7CisgICAgaWYgKG1f
b2JqZWN0ICYmIG1fb2JqZWN0LT5nZW5lcmF0aW5nTm9kZSgpICYmIG1fb2JqZWN0LT5nZW5lcmF0
aW5nTm9kZSgpLT5pc0VsZW1lbnROb2RlKCkpCisgICAgICAgIG1fb2JqZWN0LT5kb2N1bWVudCgp
LT5zdHlsZVJlc29sdmVyKCktPmtleWZyYW1lU3R5bGVzRm9yQW5pbWF0aW9uKHN0YXRpY19jYXN0
PEVsZW1lbnQqPihtX29iamVjdC0+Z2VuZXJhdGluZ05vZGUoKSksIHVuYW5pbWF0ZWRTdHlsZSwg
bV9rZXlmcmFtZXMpOwogCiAgICAgLy8gVXBkYXRlIHRoZSBtX3RyYW5zZm9ybUZ1bmN0aW9uTGlz
dFZhbGlkIGZsYWcgYmFzZWQgb24gd2hldGhlciB0aGUgZnVuY3Rpb24gbGlzdHMgaW4gdGhlIGtl
eWZyYW1lcyBtYXRjaC4KICAgICB2YWxpZGF0ZVRyYW5zZm9ybUZ1bmN0aW9uTGlzdCgpOwpAQCAt
MjU1LDcgKzI1NSw3IEBAIHZvaWQgS2V5ZnJhbWVBbmltYXRpb246OnBhdXNlQW5pbWF0aW9uKGRv
dWJsZSB0aW1lT2Zmc2V0KQogI2VuZGlmCiAgICAgLy8gUmVzdG9yZSB0aGUgb3JpZ2luYWwgKHVu
YW5pbWF0ZWQpIHN0eWxlCiAgICAgaWYgKCFwYXVzZWQoKSkKLSAgICAgICAgc2V0TmVlZHNTdHls
ZVJlY2FsYyhtX29iamVjdC0+bm9kZSgpKTsKKyAgICAgICAgc2V0TmVlZHNTdHlsZVJlY2FsYyht
X29iamVjdC0+Z2VuZXJhdGluZ05vZGUoKSk7CiB9CiAKIHZvaWQgS2V5ZnJhbWVBbmltYXRpb246
OmVuZEFuaW1hdGlvbigpCkBAIC0yNjksNyArMjY5LDcgQEAgdm9pZCBLZXlmcmFtZUFuaW1hdGlv
bjo6ZW5kQW5pbWF0aW9uKCkKICNlbmRpZgogICAgIC8vIFJlc3RvcmUgdGhlIG9yaWdpbmFsICh1
bmFuaW1hdGVkKSBzdHlsZQogICAgIGlmICghcGF1c2VkKCkpCi0gICAgICAgIHNldE5lZWRzU3R5
bGVSZWNhbGMobV9vYmplY3QtPm5vZGUoKSk7CisgICAgICAgIHNldE5lZWRzU3R5bGVSZWNhbGMo
bV9vYmplY3QtPmdlbmVyYXRpbmdOb2RlKCkpOwogfQogCiBib29sIEtleWZyYW1lQW5pbWF0aW9u
OjpzaG91bGRTZW5kRXZlbnRGb3JMaXN0ZW5lcihEb2N1bWVudDo6TGlzdGVuZXJUeXBlIGxpc3Rl
bmVyVHlwZSkgY29uc3QKQEAgLTMxNCw4ICszMTQsOCBAQCBib29sIEtleWZyYW1lQW5pbWF0aW9u
OjpzZW5kQW5pbWF0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGRvdWJs
ZQogICAgIGlmIChzaG91bGRTZW5kRXZlbnRGb3JMaXN0ZW5lcihsaXN0ZW5lclR5cGUpKSB7CiAg
ICAgICAgIC8vIERpc3BhdGNoIHRoZSBldmVudAogICAgICAgICBSZWZQdHI8RWxlbWVudD4gZWxl
bWVudDsKLSAgICAgICAgaWYgKG1fb2JqZWN0LT5ub2RlKCkgJiYgbV9vYmplY3QtPm5vZGUoKS0+
aXNFbGVtZW50Tm9kZSgpKQotICAgICAgICAgICAgZWxlbWVudCA9IHN0YXRpY19jYXN0PEVsZW1l
bnQqPihtX29iamVjdC0+bm9kZSgpKTsKKyAgICAgICAgaWYgKG1fb2JqZWN0LT5nZW5lcmF0aW5n
Tm9kZSgpICYmIG1fb2JqZWN0LT5nZW5lcmF0aW5nTm9kZSgpLT5pc0VsZW1lbnROb2RlKCkpCisg
ICAgICAgICAgICBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG1fb2JqZWN0LT5nZW5l
cmF0aW5nTm9kZSgpKTsKIAogICAgICAgICBBU1NFUlQoIWVsZW1lbnQgfHwgKGVsZW1lbnQtPmRv
Y3VtZW50KCkgJiYgIWVsZW1lbnQtPmRvY3VtZW50KCktPmluUGFnZUNhY2hlKCkpKTsKICAgICAg
ICAgaWYgKCFlbGVtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJsb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAK
aW5kZXggOGIyNTc2My4uMjhhOTg2ZiAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QmxvY2suY3BwCkBAIC01OTk0LDE3ICs1OTk0LDE3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OnVwZGF0
ZUZpcnN0TGV0dGVyU3R5bGUoUmVuZGVyT2JqZWN0KiBmaXJzdExldHRlckJsb2NrLCBSZW5kZXJP
CiB7CiAgICAgUmVuZGVyT2JqZWN0KiBmaXJzdExldHRlciA9IGN1cnJlbnRDaGlsZC0+cGFyZW50
KCk7CiAgICAgUmVuZGVyT2JqZWN0KiBmaXJzdExldHRlckNvbnRhaW5lciA9IGZpcnN0TGV0dGVy
LT5wYXJlbnQoKTsKLSAgICBSZW5kZXJTdHlsZSogcHNldWRvU3R5bGUgPSBzdHlsZUZvckZpcnN0
TGV0dGVyKGZpcnN0TGV0dGVyQmxvY2ssIGZpcnN0TGV0dGVyQ29udGFpbmVyKTsKKyAgICBSZWZQ
dHI8UmVuZGVyU3R5bGU+IHBzZXVkb1N0eWxlID0gYW5pbWF0aW9uKCktPnVwZGF0ZUFuaW1hdGlv
bnMoZmlyc3RMZXR0ZXIsIHN0eWxlRm9yRmlyc3RMZXR0ZXIoZmlyc3RMZXR0ZXJCbG9jaywgZmly
c3RMZXR0ZXJDb250YWluZXIpKTsKICAgICBBU1NFUlQoZmlyc3RMZXR0ZXItPmlzRmxvYXRpbmco
KSB8fCBmaXJzdExldHRlci0+aXNJbmxpbmUoKSk7CiAKLSAgICBpZiAoTm9kZTo6ZGlmZihmaXJz
dExldHRlci0+c3R5bGUoKSwgcHNldWRvU3R5bGUsIGRvY3VtZW50KCkpID09IE5vZGU6OkRldGFj
aCkgeworICAgIGlmIChOb2RlOjpkaWZmKGZpcnN0TGV0dGVyLT5zdHlsZSgpLCBwc2V1ZG9TdHls
ZS5nZXQoKSwgZG9jdW1lbnQoKSkgPT0gTm9kZTo6RGV0YWNoKSB7CiAgICAgICAgIC8vIFRoZSBm
aXJzdC1sZXR0ZXIgcmVuZGVyZXIgbmVlZHMgdG8gYmUgcmVwbGFjZWQuIENyZWF0ZSBhIG5ldyBy
ZW5kZXJlciBvZiB0aGUgcmlnaHQgdHlwZS4KICAgICAgICAgUmVuZGVyT2JqZWN0KiBuZXdGaXJz
dExldHRlcjsKICAgICAgICAgaWYgKHBzZXVkb1N0eWxlLT5kaXNwbGF5KCkgPT0gSU5MSU5FKQog
ICAgICAgICAgICAgbmV3Rmlyc3RMZXR0ZXIgPSBuZXcgKHJlbmRlckFyZW5hKCkpIFJlbmRlcklu
bGluZShkb2N1bWVudCgpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbmV3Rmlyc3RMZXR0
ZXIgPSBuZXcgKHJlbmRlckFyZW5hKCkpIFJlbmRlckJsb2NrKGRvY3VtZW50KCkpOwotICAgICAg
ICBuZXdGaXJzdExldHRlci0+c2V0U3R5bGUocHNldWRvU3R5bGUpOworICAgICAgICBuZXdGaXJz
dExldHRlci0+c2V0U3R5bGUocHNldWRvU3R5bGUuZ2V0KCkpOwogCiAgICAgICAgIC8vIE1vdmUg
dGhlIGZpcnN0IGxldHRlciBpbnRvIHRoZSBuZXcgcmVuZGVyZXIuCiAgICAgICAgIExheW91dFN0
YXRlRGlzYWJsZXIgbGF5b3V0U3RhdGVEaXNhYmxlcih2aWV3KCkpOwpAQCAtNjAzMCwxMSArNjAz
MCwxMSBAQCB2b2lkIFJlbmRlckJsb2NrOjp1cGRhdGVGaXJzdExldHRlclN0eWxlKFJlbmRlck9i
amVjdCogZmlyc3RMZXR0ZXJCbG9jaywgUmVuZGVyTwogICAgICAgICBmaXJzdExldHRlciA9IG5l
d0ZpcnN0TGV0dGVyOwogICAgICAgICBmaXJzdExldHRlckNvbnRhaW5lci0+YWRkQ2hpbGQoZmly
c3RMZXR0ZXIsIG5leHRTaWJsaW5nKTsKICAgICB9IGVsc2UKLSAgICAgICAgZmlyc3RMZXR0ZXIt
PnNldFN0eWxlKHBzZXVkb1N0eWxlKTsKKyAgICAgICAgZmlyc3RMZXR0ZXItPnNldFN0eWxlKHBz
ZXVkb1N0eWxlLmdldCgpKTsKIAogICAgIGZvciAoUmVuZGVyT2JqZWN0KiBnZW5DaGlsZCA9IGZp
cnN0TGV0dGVyLT5maXJzdENoaWxkKCk7IGdlbkNoaWxkOyBnZW5DaGlsZCA9IGdlbkNoaWxkLT5u
ZXh0U2libGluZygpKSB7CiAgICAgICAgIGlmIChnZW5DaGlsZC0+aXNUZXh0KCkpCi0gICAgICAg
ICAgICBnZW5DaGlsZC0+c2V0U3R5bGUocHNldWRvU3R5bGUpOworICAgICAgICAgICAgZ2VuQ2hp
bGQtPnNldFN0eWxlKHBzZXVkb1N0eWxlLmdldCgpKTsKICAgICB9CiB9CiAKQEAgLTYwNDcsOCAr
NjA0NywxNCBAQCB2b2lkIFJlbmRlckJsb2NrOjpjcmVhdGVGaXJzdExldHRlclJlbmRlcmVyKFJl
bmRlck9iamVjdCogZmlyc3RMZXR0ZXJCbG9jaywgUmVuZAogICAgICAgICBmaXJzdExldHRlciA9
IG5ldyAocmVuZGVyQXJlbmEoKSkgUmVuZGVySW5saW5lKGRvY3VtZW50KCkpOwogICAgIGVsc2UK
ICAgICAgICAgZmlyc3RMZXR0ZXIgPSBuZXcgKHJlbmRlckFyZW5hKCkpIFJlbmRlckJsb2NrKGRv
Y3VtZW50KCkpOwotICAgIGZpcnN0TGV0dGVyLT5zZXRTdHlsZShwc2V1ZG9TdHlsZSk7CisKKyAg
ICBSZWZQdHI8UmVuZGVyU3R5bGU+IHRlbXBvcmFyeVN0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0
ZSgpOworICAgIHRlbXBvcmFyeVN0eWxlLT5pbmhlcml0RnJvbShmaXJzdExldHRlckJsb2NrLT5z
dHlsZSgpKTsKKyAgICBmaXJzdExldHRlci0+c2V0U3R5bGUodGVtcG9yYXJ5U3R5bGUpOyAgCiAg
ICAgZmlyc3RMZXR0ZXJDb250YWluZXItPmFkZENoaWxkKGZpcnN0TGV0dGVyLCBjdXJyZW50Q2hp
bGQpOworICAgIAorICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gcHNldWRvRWxlbWVudFN0eWxlID0g
YW5pbWF0aW9uKCktPnVwZGF0ZUFuaW1hdGlvbnMoZmlyc3RMZXR0ZXIsIHBzZXVkb1N0eWxlKTsK
KyAgICBmaXJzdExldHRlci0+c2V0U3R5bGUocHNldWRvRWxlbWVudFN0eWxlKTsKIAogICAgIFJl
bmRlclRleHQqIHRleHRPYmogPSB0b1JlbmRlclRleHQoY3VycmVudENoaWxkKTsKIApAQCAtNjA5
Niw3ICs2MTAyLDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6Y3JlYXRlRmlyc3RMZXR0ZXJSZW5kZXJl
cihSZW5kZXJPYmplY3QqIGZpcnN0TGV0dGVyQmxvY2ssIFJlbmQKICAgICAgICAgLy8gY29uc3Ry
dWN0IHRleHQgZnJhZ21lbnQgZm9yIHRoZSBmaXJzdCBsZXR0ZXIKICAgICAgICAgUmVuZGVyVGV4
dEZyYWdtZW50KiBsZXR0ZXIgPSAKICAgICAgICAgICAgIG5ldyAocmVuZGVyQXJlbmEoKSkgUmVu
ZGVyVGV4dEZyYWdtZW50KHJlbWFpbmluZ1RleHQtPm5vZGUoKSA/IHJlbWFpbmluZ1RleHQtPm5v
ZGUoKSA6IHJlbWFpbmluZ1RleHQtPmRvY3VtZW50KCksIG9sZFRleHQuZ2V0KCksIDAsIGxlbmd0
aCk7Ci0gICAgICAgIGxldHRlci0+c2V0U3R5bGUocHNldWRvU3R5bGUpOworICAgICAgICBsZXR0
ZXItPnNldFN0eWxlKHBzZXVkb0VsZW1lbnRTdHlsZS5nZXQoKSk7CiAgICAgICAgIGZpcnN0TGV0
dGVyLT5hZGRDaGlsZChsZXR0ZXIpOwogCiAgICAgICAgIHRleHRPYmotPmRlc3Ryb3koKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKaW5kZXggNmJlYjAxNC4uMzEx
MTA3MiAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKQEAgLTIx
NzMsNiArMjE3MywxOSBAQCBib29sIFJlbmRlck9iamVjdDo6aXNSb290ZWQoUmVuZGVyVmlldyoq
IHZpZXcpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK05vZGUqIFJlbmRlck9iamVjdDo6Z2VuZXJh
dGluZ05vZGUoKSBjb25zdAoreworICAgIE5vZGUqIG5vZGUgPSBtX25vZGUgPT0gZG9jdW1lbnQo
KSA/IDAgOiBtX25vZGU7CisgICAgaWYgKG5vZGUpCisgICAgICAgIHJldHVybiBub2RlOworCisg
ICAgZm9yIChSZW5kZXJPYmplY3QqIG9iamVjdCA9IHBhcmVudCgpOyBvYmplY3Q7IG9iamVjdCA9
IG9iamVjdC0+cGFyZW50KCkpIHsKKyAgICAgICAgaWYgKE5vZGUqIG5vZGUgPSAob2JqZWN0LT5u
b2RlKCkgPT0gb2JqZWN0LT5kb2N1bWVudCgpID8gMCA6IG9iamVjdC0+bm9kZSgpKSkKKyAgICAg
ICAgICAgIHJldHVybiBub2RlOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKwogUmVuZGVyT2Jq
ZWN0KiBSZW5kZXJPYmplY3Q6OnJlbmRlcmVyRm9yUm9vdEJhY2tncm91bmQoKQogewogICAgIEFT
U0VSVChpc1Jvb3QoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKaW5k
ZXggOTliYzYzMi4uMDRmNGQ3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmpl
Y3QuaApAQCAtNTY1LDcgKzU2NSw4IEBAIHB1YmxpYzoKICAgICAvLyBSZXR1cm5zIHRoZSBzdHls
ZWQgbm9kZSB0aGF0IGNhdXNlZCB0aGUgZ2VuZXJhdGlvbiBvZiB0aGlzIHJlbmRlcmVyLgogICAg
IC8vIFRoaXMgaXMgdGhlIHNhbWUgYXMgbm9kZSgpIGV4Y2VwdCBmb3IgcmVuZGVyZXJzIG9mIDpi
ZWZvcmUgYW5kIDphZnRlcgogICAgIC8vIHBzZXVkbyBlbGVtZW50cyBmb3Igd2hpY2ggdGhlaXIg
cGFyZW50IG5vZGUgaXMgcmV0dXJuZWQuCi0gICAgTm9kZSogZ2VuZXJhdGluZ05vZGUoKSBjb25z
dCB7IHJldHVybiBtX25vZGUgPT0gZG9jdW1lbnQoKSA/IDAgOiBtX25vZGU7IH0KKyAgICBOb2Rl
KiBnZW5lcmF0aW5nTm9kZSgpIGNvbnN0OworCiAgICAgdm9pZCBzZXROb2RlKE5vZGUqIG5vZGUp
IHsgbV9ub2RlID0gbm9kZTsgfQogCiAgICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3QgeyBy
ZXR1cm4gbV9ub2RlLT5kb2N1bWVudCgpOyB9Ci0tIAoxLjcuNS40Cgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>139573</attachid>
            <date>2012-04-30 19:56:30 -0700</date>
            <delta_ts>2012-05-01 14:53:29 -0700</delta_ts>
            <desc>Patch V2.</desc>
            <filename>0001-Animate-first-letter-element.patch</filename>
            <type>text/plain</type>
            <size>21176</size>
            <attacher name="Igor Trindade Oliveira">igor.oliveira</attacher>
            
              <data encoding="base64">RnJvbSBiYjkyYzA5MThkZTJjNDg5YjM0N2YxMzllYTQwM2YwYTcxNDc5ZDQ2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBJZ29yIE9saXZlaXJhIDxpZ29yLm9Ac2lzYS5zYW1zdW5nLmNv
bT4KRGF0ZTogTW9uLCAzMCBBcHIgMjAxMiAxNjo0ODoyMyAtMDcwMApTdWJqZWN0OiBbUEFUQ0hd
IEFuaW1hdGUgZmlyc3QtbGV0dGVyIGVsZW1lbnQuCgotLS0KIExheW91dFRlc3RzL0NoYW5nZUxv
ZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxMiArKysrCiAuLi4vYW5pbWF0aW9u
cy9maXJzdC1sZXR0ZXItYW5pbWF0aW9uLWV4cGVjdGVkLnR4dCB8ICAgIDIgKwogTGF5b3V0VGVz
dHMvYW5pbWF0aW9ucy9maXJzdC1sZXR0ZXItYW5pbWF0aW9uLmh0bWwgfCAgIDUxICsrKysrKysr
KysrKysrKysrKwogLi4uL2ZpcnN0LWxldHRlci1jb2xvci10cmFuc2l0aW9uLWV4cGVjdGVkLnR4
dCAgICAgfCAgICAyICsKIC4uLi90cmFuc2l0aW9ucy9maXJzdC1sZXR0ZXItY29sb3ItdHJhbnNp
dGlvbi5odG1sIHwgICA1NSArKysrKysrKysrKysrKysrKysrKwogU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDQ4ICsrKysrKysrKysrKysrKysr
CiBTb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcCAgICB8ICAg
IDYgKy0KIC4uLi9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkNvbnRyb2xsZXIuY3Bw
IHwgICAgOSArKy0tCiAuLi4vV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9JbXBsaWNpdEFuaW1hdGlv
bi5jcHAgICB8ICAgIDYgKy0KIC4uLi9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0tleWZyYW1lQW5p
bWF0aW9uLmNwcCAgIHwgICAxMiArKy0tCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QmxvY2suY3BwICAgICAgICAgICB8ICAgMjAgKysrKystLS0KIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJPYmplY3QuY3BwICAgICAgICAgIHwgICAxMyArKysrKwogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oICAgICAgICAgICAgfCAgICAzICstCiAxMyBmaWxl
cyBjaGFuZ2VkLCAyMTQgaW5zZXJ0aW9ucygrKSwgMjUgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9k
ZSAxMDA2NDQgTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9maXJzdC1sZXR0ZXItYW5pbWF0aW9uLWV4
cGVjdGVkLnR4dAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2FuaW1hdGlvbnMvZmly
c3QtbGV0dGVyLWFuaW1hdGlvbi5odG1sCiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMv
dHJhbnNpdGlvbnMvZmlyc3QtbGV0dGVyLWNvbG9yLXRyYW5zaXRpb24tZXhwZWN0ZWQudHh0CiBj
cmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvZmlyc3QtbGV0dGVyLWNv
bG9yLXRyYW5zaXRpb24uaHRtbAoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA2N2U0YWQxLi5mZmI4N2RkIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTUgQEAKKzIwMTItMDQtMzAgIElnb3IgT2xpdmVpcmEgIDxpZ29yLm9Ac2lzYS5zYW1z
dW5nLmNvbT4KKworICAgICAgICBBcHBseSBhbmltYXRpb25zIGFuZCB0cmFuc2l0aW9ucyBmb3Ig
Zmlyc3QtbGV0dGVyIGVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTg1MjUzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBhbmltYXRpb25zL2ZpcnN0LWxldHRlci1hbmltYXRpb24tZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBhbmltYXRpb25zL2ZpcnN0LWxldHRlci1hbmltYXRpb24u
aHRtbDogQWRkZWQuCisgICAgICAgICogdHJhbnNpdGlvbnMvZmlyc3QtbGV0dGVyLWNvbG9yLXRy
YW5zaXRpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0cmFuc2l0aW9ucy9maXJz
dC1sZXR0ZXItY29sb3ItdHJhbnNpdGlvbi5odG1sOiBBZGRlZC4KKwogMjAxMi0wNC0yOCAgQ3Nh
YmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtRdF0gVW5yZXZp
ZXdlZCB3ZWVrZW5kIGdhcmRlbmluZywgdXBkYXRlIHRlc3QgcmVzdWx0cywgc2tpcCBuZXcgZmFp
bGluZyB0ZXN0cy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvZmlyc3QtbGV0
dGVyLWFuaW1hdGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9hbmltYXRpb25zL2ZpcnN0
LWxldHRlci1hbmltYXRpb24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLmIwNTdiMGQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9hbmltYXRp
b25zL2ZpcnN0LWxldHRlci1hbmltYXRpb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMiBAQAor
TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQuCitQQVNTCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9hbmltYXRpb25zL2ZpcnN0LWxldHRlci1hbmltYXRpb24uaHRtbCBiL0xheW91dFRlc3RzL2Fu
aW1hdGlvbnMvZmlyc3QtbGV0dGVyLWFuaW1hdGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjMyOWEyYmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9h
bmltYXRpb25zL2ZpcnN0LWxldHRlci1hbmltYXRpb24uaHRtbApAQCAtMCwwICsxLDUxIEBACis8
IURPQ1RZUEUgaHRtbD4KKworPGh0bWw+Cis8aGVhZD4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyIg
bWVkaWE9InNjcmVlbiI+CisgICAgLmJveCB7CisgICAgICB3aWR0aDogMTAwcHg7CisgICAgICBo
ZWlnaHQ6IDEwMHB4OworICAgICAgYmFja2dyb3VuZDogYmx1ZTsKKyAgICB9CisKKyAgICAuYm94
OjpmaXJzdC1sZXR0ZXIgeworICAgICAgZm9udC1zaXplOiAyNHB0OworICAgICAgY29sb3I6IGJs
YWNrOworICAgICAgLXdlYmtpdC1hbmltYXRpb246IGZpcnN0TGV0dGVyQW5pbSAxcyBsaW5lYXI7
CisgICAgfQorCisgICAgQC13ZWJraXQta2V5ZnJhbWVzIGZpcnN0TGV0dGVyQW5pbSB7CisgICAg
ICBmcm9tIHsgbWFyZ2luOiAwcHg7IH0KKyAgICAgIHRvIHsgbWFyZ2luOiAxMDBweDsgfQorICAg
IH0KKzwvc3R5bGU+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2FuaW1hdGlvbi10ZXN0LWhlbHBl
cnMuanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiPjwvc2NyaXB0Pgor
PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04Ij4KKyAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEFzVGV4dCgpOworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxE
b25lKCk7CisgICAgfQorCisgICAgdmFyIHJlc3VsdCA9ICIiCisgICAgZnVuY3Rpb24gYW5pbWF0
aW9uRW5kZWQoZXZlbnQpCisgICAgeyAgIAorICAgICAgICBpZiAoZXZlbnQuYW5pbWF0aW9uTmFt
ZSA9PSAiZmlyc3RMZXR0ZXJBbmltIikKKyAgICAgICAgICAgcmVzdWx0ICs9ICJQQVNTIgorCisg
ICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQnKS5pbm5lckhUTUwgPSByZXN1
bHQ7CisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgfQorCisgICAgd2luZG93
LmFkZEV2ZW50TGlzdGVuZXIoIndlYmtpdEFuaW1hdGlvbkVuZCIsIGFuaW1hdGlvbkVuZGVkLCBm
YWxzZSApOworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgPGRpdiBjbGFzcz0iYm94Ij4K
KyAgICBMb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldC4KKyAgPC9kaXY+CisgIDxkaXYgaWQ9InJl
c3VsdCI+CisgIDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvdHJhbnNpdGlvbnMvZmlyc3QtbGV0dGVyLWNvbG9yLXRyYW5zaXRpb24tZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvZmlyc3QtbGV0dGVyLWNvbG9yLXRyYW5zaXRpb24t
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIwNTdiMGQK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90cmFuc2l0aW9ucy9maXJzdC1sZXR0ZXIt
Y29sb3ItdHJhbnNpdGlvbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyIEBACitMb3JlbSBpcHN1
bSBkb2xvciBzaXQgYW1ldC4KK1BBU1MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RyYW5zaXRp
b25zL2ZpcnN0LWxldHRlci1jb2xvci10cmFuc2l0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy90cmFu
c2l0aW9ucy9maXJzdC1sZXR0ZXItY29sb3ItdHJhbnNpdGlvbi5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJkZWM4ZTMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy90cmFuc2l0aW9ucy9maXJzdC1sZXR0ZXItY29sb3ItdHJhbnNpdGlvbi5odG1sCkBAIC0w
LDAgKzEsNTUgQEAKKzwhRE9DVFlQRSBodG1sPgorCis8aHRtbD4KKzxoZWFkPgorPHN0eWxlIHR5
cGU9InRleHQvY3NzIiBtZWRpYT0ic2NyZWVuIj4KKyAgICAuYm94IHsKKyAgICAgIHdpZHRoOiAx
MDBweDsKKyAgICAgIGhlaWdodDogMTAwcHg7CisgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBibHVl
OworICAgIH0KKyAgICAKKyAgICAuYm94OjpmaXJzdC1sZXR0ZXIgeworICAgICAgZm9udC1zaXpl
OiAyNHB0OworICAgICAgY29sb3I6IGJsYWNrOworICAgICAgLXdlYmtpdC10cmFuc2l0aW9uOiBj
b2xvciAxczsKKyAgICB9CisKKyAgICBib2R5LmdvIC5ib3g6OmZpcnN0LWxldHRlciB7CisgICAg
ICBjb2xvcjogd2hpdGU7CisgICAgfQorCis8L3N0eWxlPgorPHNjcmlwdCAgdHlwZT0idGV4dC9q
YXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+CisgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKSB7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIH0KKworICAg
IHZhciByZXN1bHQgPSAiIgorICAgIGZ1bmN0aW9uIHRyYW5zaXRpb25FbmRlZChldmVudCkKKyAg
ICB7ICAgCisgICAgICAgIGlmIChldmVudC5wcm9wZXJ0eU5hbWUgPT0gImNvbG9yIikKKyAgICAg
ICAgICAgcmVzdWx0ICs9ICJQQVNTIgorCisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdyZXN1bHQnKS5pbm5lckhUTUwgPSByZXN1bHQ7CisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlE
b25lKCk7CisgICAgfQorCisgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoICd3ZWJraXRUcmFu
c2l0aW9uRW5kJywgdHJhbnNpdGlvbkVuZGVkLCBmYWxzZSApOworCisKKyAgICB3aW5kb3cuYWRk
RXZlbnRMaXN0ZW5lcigibG9hZCIsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgZG9jdW1lbnQuYm9k
eS5jbGFzc05hbWUgPSAiZ28iOworICAgIH0sIGZhbHNlKTsKKzwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+CisgIDxkaXYgY2xhc3M9ImJveCI+CisgICAgTG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFt
ZXQuCisgIDwvZGl2PgorICA8ZGl2IGlkPSJyZXN1bHQiPgorICA8L2Rpdj4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwppbmRleCA5NzMwNThhLi5iYWFkMjhiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNTEgQEAKKzIwMTItMDQtMzAgIElnb3IgT2xpdmVpcmEgIDxpZ29yLm9Ac2lzYS5zYW1zdW5n
LmNvbT4KKworICAgICAgICBBcHBseSBhbmltYXRpb25zIGFuZCB0cmFuc2l0aW9ucyBmb3IgZmly
c3QtbGV0dGVyIGVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTg1MjUzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkIGFuaW1hdGlvbnMgYW5kIHRyYW5zaXRpb25zIHN1cHBvcnQgZm9yIHRoZSBm
aXJzdC1sZXR0ZXIgCisgICAgICAgIHBzZXVkbyBlbGVtZW50LgorICAgICAgICBJbnN0ZWFkIG9m
IGNhbGwgUmVuZGVyT2plY3Q6Om5vZGUoKSBpbiB0aGUgYW5pbWF0aW9ucyBjb2RlLAorICAgICAg
ICBub3cgd2UgbmVlZCB0byBjYWxsIFJlbmRlck9iamVjdDo6Z2VuZXJhdGluZ05vZGUoKSBiZWNh
dXNlCisgICAgICAgIHBzZXVkbyBlbGVtZW50cyBkb2VzIG5vdCBoYXZlIGEgTm9kZSBhc3NvY2lh
dGVkIHdpdGggdGhlCisgICAgICAgIFJlbmRlck9iamVjdC4KKworICAgICAgICBJbml0aWFsIHBh
dGNoIGJ5IFNpbW9uIEZyYXNlci4KKworICAgICAgICBUZXN0czogYW5pbWF0aW9ucy9maXJzdC1s
ZXR0ZXItYW5pbWF0aW9uLmh0bWwKKyAgICAgICAgICAgICAgIHRyYW5zaXRpb25zL2ZpcnN0LWxl
dHRlci1jb2xvci10cmFuc2l0aW9uLmh0bWwKKworICAgICAgICAqIHBhZ2UvYW5pbWF0aW9uL0Fu
aW1hdGlvbkJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uQmFzZTo6dXBkYXRl
U3RhdGVNYWNoaW5lKToKKyAgICAgICAgKiBwYWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250cm9s
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRlOjp1
cGRhdGVBbmltYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvbkNvbnRyb2xsZXJQ
cml2YXRlOjpwYXVzZUFuaW1hdGlvbkF0VGltZSk6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRp
b25Db250cm9sbGVyUHJpdmF0ZTo6cGF1c2VUcmFuc2l0aW9uQXRUaW1lKToKKyAgICAgICAgKFdl
YkNvcmU6OkFuaW1hdGlvbkNvbnRyb2xsZXI6OmNhbmNlbEFuaW1hdGlvbnMpOgorICAgICAgICAo
V2ViQ29yZTo6QW5pbWF0aW9uQ29udHJvbGxlcjo6dXBkYXRlQW5pbWF0aW9ucyk6CisgICAgICAg
ICogcGFnZS9hbmltYXRpb24vSW1wbGljaXRBbmltYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW1wbGljaXRBbmltYXRpb246OnBhdXNlQW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkltcGxpY2l0QW5pbWF0aW9uOjpzZW5kVHJhbnNpdGlvbkV2ZW50KToKKyAgICAgICAgKiBwYWdl
L2FuaW1hdGlvbi9LZXlmcmFtZUFuaW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXlm
cmFtZUFuaW1hdGlvbjo6S2V5ZnJhbWVBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6S2V5
ZnJhbWVBbmltYXRpb246OnBhdXNlQW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OktleWZy
YW1lQW5pbWF0aW9uOjplbmRBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZnJhbWVB
bmltYXRpb246OnNlbmRBbmltYXRpb25FdmVudCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjp1cGRhdGVGaXJzdExl
dHRlclN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpjcmVhdGVGaXJzdExl
dHRlclJlbmRlcmVyKToKKworICAgICAgICBXZSBuZWVkIHRvIGNyZWF0ZSBhIHRlbXBvcmFyeSBz
dHlsZSBiZWNhdXNlIHdlIGNhbiBub3QgYXBwbHkgdHJhbnNpdGlvbnMKKyAgICAgICAgaW4gYW4g
ZWxlbWVudCB3aXRob3V0IGFuIGluaXRpYWwgc3R5bGUuCisKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6Z2VuZXJh
dGluZ05vZGUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ck9iamVjdC5oOgorICAgICAgICAoUmVuZGVyT2JqZWN0KToKKwogMjAxMi0wNC0yOCAgU2FtIFdl
aW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFNtb290aCBzY3JvbGxpbmcgbmVlZHMg
YSBuZXcga2V5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9Bbmlt
YXRpb25CYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJh
c2UuY3BwCmluZGV4IDMzZDYzMjYuLmI2NzI3OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuY3BwCkBAIC0xOTEsNyArMTkxLDcgQEAgdm9pZCBB
bmltYXRpb25CYXNlOjp1cGRhdGVTdGF0ZU1hY2hpbmUoQW5pbVN0YXRlSW5wdXQgaW5wdXQsIGRv
dWJsZSBwYXJhbSkKIAogICAgICAgICAgICAgICAgIC8vIFRyaWdnZXIgYSByZW5kZXIgc28gd2Ug
Y2FuIHN0YXJ0IHRoZSBhbmltYXRpb24KICAgICAgICAgICAgICAgICBpZiAobV9vYmplY3QpCi0g
ICAgICAgICAgICAgICAgICAgIG1fY29tcEFuaW0tPmFuaW1hdGlvbkNvbnRyb2xsZXIoKS0+YWRk
Tm9kZUNoYW5nZVRvRGlzcGF0Y2gobV9vYmplY3QtPm5vZGUoKSk7CisgICAgICAgICAgICAgICAg
ICAgIG1fY29tcEFuaW0tPmFuaW1hdGlvbkNvbnRyb2xsZXIoKS0+YWRkTm9kZUNoYW5nZVRvRGlz
cGF0Y2gobV9vYmplY3QtPmdlbmVyYXRpbmdOb2RlKCkpOwogICAgICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgICAgICBBU1NFUlQoIXBhdXNlZCgpKTsKICAgICAgICAgICAgICAgICAvLyBX
ZSdyZSB3YWl0aW5nIGZvciB0aGUgc3RhcnQgdGltZXIgdG8gZmlyZSBhbmQgd2UgZ290IGEgcGF1
c2UuIENhbmNlbCB0aGUgdGltZXIsIHBhdXNlIGFuZCB3YWl0CkBAIC0yNTIsNyArMjUyLDcgQEAg
dm9pZCBBbmltYXRpb25CYXNlOjp1cGRhdGVTdGF0ZU1hY2hpbmUoQW5pbVN0YXRlSW5wdXQgaW5w
dXQsIGRvdWJsZSBwYXJhbSkKIAogICAgICAgICAgICAgICAgIC8vIERpc3BhdGNoIHVwZGF0ZVN0
eWxlSWZOZWVkZWQgc28gd2UgY2FuIHN0YXJ0IHRoZSBhbmltYXRpb24KICAgICAgICAgICAgICAg
ICBpZiAobV9vYmplY3QpCi0gICAgICAgICAgICAgICAgICAgIG1fY29tcEFuaW0tPmFuaW1hdGlv
bkNvbnRyb2xsZXIoKS0+YWRkTm9kZUNoYW5nZVRvRGlzcGF0Y2gobV9vYmplY3QtPm5vZGUoKSk7
CisgICAgICAgICAgICAgICAgICAgIG1fY29tcEFuaW0tPmFuaW1hdGlvbkNvbnRyb2xsZXIoKS0+
YWRkTm9kZUNoYW5nZVRvRGlzcGF0Y2gobV9vYmplY3QtPmdlbmVyYXRpbmdOb2RlKCkpOwogICAg
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAvLyBXZSBhcmUgcGF1c2luZyB3aGls
ZSB3YWl0aW5nIGZvciBhIHN0YXJ0IHJlc3BvbnNlLiBDYW5jZWwgdGhlIGFuaW1hdGlvbiBhbmQg
d2FpdC4gV2hlbiAKICAgICAgICAgICAgICAgICAvLyB3ZSB1bnBhdXNlLCB3ZSB3aWxsIGFjdCBh
cyB0aG91Z2ggdGhlIHN0YXJ0IHRpbWVyIGp1c3QgZmlyZWQKQEAgLTI5OCw3ICsyOTgsNyBAQCB2
b2lkIEFuaW1hdGlvbkJhc2U6OnVwZGF0ZVN0YXRlTWFjaGluZShBbmltU3RhdGVJbnB1dCBpbnB1
dCwgZG91YmxlIHBhcmFtKQogICAgICAgICAgICAgICAgICAgICAgICAgcmVzdW1lT3ZlcnJpZGRl
bkFuaW1hdGlvbnMoKTsKIAogICAgICAgICAgICAgICAgICAgICAvLyBGaXJlIG9mZiBhbm90aGVy
IHN0eWxlIGNoYW5nZSBzbyB3ZSBjYW4gc2V0IHRoZSBmaW5hbCB2YWx1ZQotICAgICAgICAgICAg
ICAgICAgICBtX2NvbXBBbmltLT5hbmltYXRpb25Db250cm9sbGVyKCktPmFkZE5vZGVDaGFuZ2VU
b0Rpc3BhdGNoKG1fb2JqZWN0LT5ub2RlKCkpOworICAgICAgICAgICAgICAgICAgICBtX2NvbXBB
bmltLT5hbmltYXRpb25Db250cm9sbGVyKCktPmFkZE5vZGVDaGFuZ2VUb0Rpc3BhdGNoKG1fb2Jq
ZWN0LT5nZW5lcmF0aW5nTm9kZSgpKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgICAgIC8vIFdlIGFyZSBwYXVzaW5nIHdoaWxlIHJ1bm5pbmcu
IENhbmNlbCB0aGUgYW5pbWF0aW9uIGFuZCB3YWl0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkNvbnRyb2xsZXIuY3BwCmluZGV4IDBkYzNlYTcuLjZm
ODMzZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlv
bkNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1h
dGlvbkNvbnRyb2xsZXIuY3BwCkBAIC05OSw3ICs5OSw3IEBAIGRvdWJsZSBBbmltYXRpb25Db250
cm9sbGVyUHJpdmF0ZTo6dXBkYXRlQW5pbWF0aW9ucyhTZXRDaGFuZ2VkIGNhbGxTZXRDaGFuZ2Vk
LyoKICAgICAgICAgICAgICAgICB0aW1lVG9OZXh0U2VydmljZSA9IHQ7CiAgICAgICAgICAgICBp
ZiAoIXRpbWVUb05leHRTZXJ2aWNlKSB7CiAgICAgICAgICAgICAgICAgaWYgKGNhbGxTZXRDaGFu
Z2VkID09IENhbGxTZXRDaGFuZ2VkKSB7Ci0gICAgICAgICAgICAgICAgICAgIE5vZGUqIG5vZGUg
PSBpdC0+Zmlyc3QtPm5vZGUoKTsKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9IGl0
LT5maXJzdC0+Z2VuZXJhdGluZ05vZGUoKTsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKCFu
b2RlIHx8IChub2RlLT5kb2N1bWVudCgpICYmICFub2RlLT5kb2N1bWVudCgpLT5pblBhZ2VDYWNo
ZSgpKSk7CiAgICAgICAgICAgICAgICAgICAgIG5vZGUtPnNldE5lZWRzU3R5bGVSZWNhbGMoU3lu
dGhldGljU3R5bGVDaGFuZ2UpOwogICAgICAgICAgICAgICAgICAgICBjYWxsZWRTZXRDaGFuZ2Vk
ID0gdHJ1ZTsKQEAgLTMyNSw3ICszMjUsNyBAQCBib29sIEFuaW1hdGlvbkNvbnRyb2xsZXJQcml2
YXRlOjpwYXVzZUFuaW1hdGlvbkF0VGltZShSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjbwogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoY29tcEFuaW0tPnBhdXNlQW5pbWF0aW9uQXRU
aW1lKG5hbWUsIHQpKSB7Ci0gICAgICAgIHJlbmRlcmVyLT5ub2RlKCktPnNldE5lZWRzU3R5bGVS
ZWNhbGMoU3ludGhldGljU3R5bGVDaGFuZ2UpOworICAgICAgICByZW5kZXJlci0+Z2VuZXJhdGlu
Z05vZGUoKS0+c2V0TmVlZHNTdHlsZVJlY2FsYyhTeW50aGV0aWNTdHlsZUNoYW5nZSk7CiAgICAg
ICAgIHN0YXJ0VXBkYXRlU3R5bGVJZk5lZWRlZERpc3BhdGNoZXIoKTsKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQpAQCAtMzQzLDcgKzM0Myw3IEBAIGJvb2wgQW5pbWF0aW9uQ29udHJvbGxl
clByaXZhdGU6OnBhdXNlVHJhbnNpdGlvbkF0VGltZShSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBj
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChjb21wQW5pbS0+cGF1c2VUcmFuc2l0
aW9uQXRUaW1lKGNzc1Byb3BlcnR5SUQocHJvcGVydHkpLCB0KSkgewotICAgICAgICByZW5kZXJl
ci0+bm9kZSgpLT5zZXROZWVkc1N0eWxlUmVjYWxjKFN5bnRoZXRpY1N0eWxlQ2hhbmdlKTsKKyAg
ICAgICAgcmVuZGVyZXItPmdlbmVyYXRpbmdOb2RlKCktPnNldE5lZWRzU3R5bGVSZWNhbGMoU3lu
dGhldGljU3R5bGVDaGFuZ2UpOwogICAgICAgICBzdGFydFVwZGF0ZVN0eWxlSWZOZWVkZWREaXNw
YXRjaGVyKCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTUwNyw3ICs1MDcsNyBA
QCB2b2lkIEFuaW1hdGlvbkNvbnRyb2xsZXI6OmNhbmNlbEFuaW1hdGlvbnMoUmVuZGVyT2JqZWN0
KiByZW5kZXJlcikKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1fZGF0YS0+Y2xlYXIocmVu
ZGVyZXIpKSB7Ci0gICAgICAgIE5vZGUqIG5vZGUgPSByZW5kZXJlci0+bm9kZSgpOworICAgICAg
ICBOb2RlKiBub2RlID0gcmVuZGVyZXItPmdlbmVyYXRpbmdOb2RlKCk7CiAgICAgICAgIEFTU0VS
VCghbm9kZSB8fCAobm9kZS0+ZG9jdW1lbnQoKSAmJiAhbm9kZS0+ZG9jdW1lbnQoKS0+aW5QYWdl
Q2FjaGUoKSkpOwogICAgICAgICBub2RlLT5zZXROZWVkc1N0eWxlUmVjYWxjKFN5bnRoZXRpY1N0
eWxlQ2hhbmdlKTsKICAgICB9CkBAIC01MzIsNyArNTMyLDYgQEAgUGFzc1JlZlB0cjxSZW5kZXJT
dHlsZT4gQW5pbWF0aW9uQ29udHJvbGxlcjo6dXBkYXRlQW5pbWF0aW9ucyhSZW5kZXJPYmplY3Qq
IHJlbmQKICAgICAvLyBhZ2FpbnN0IHRoZSBhbmltYXRpb25zIGluIHRoZSBzdHlsZSBhbmQgbWFr
ZSBzdXJlIHdlJ3JlIGluIHN5bmMuICBJZiBkZXN0aW5hdGlvbiB2YWx1ZXMKICAgICAvLyBoYXZl
IGNoYW5nZWQsIHdlIHJlc2V0IHRoZSBhbmltYXRpb24uICBXZSB0aGVuIGRvIGEgYmxlbmQgdG8g
Z2V0IG5ldyB2YWx1ZXMgYW5kIHdlIHJldHVybgogICAgIC8vIGEgbmV3IHN0eWxlLgotICAgIEFT
U0VSVChyZW5kZXJlci0+bm9kZSgpKTsgLy8gRklYTUU6IFdlIGRvIG5vdCBhbmltYXRlIGdlbmVy
YXRlZCBjb250ZW50IHlldC4KIAogICAgIFJlZlB0cjxDb21wb3NpdGVBbmltYXRpb24+IHJlbmRl
cmVyQW5pbWF0aW9ucyA9IG1fZGF0YS0+YWNjZXNzQ29tcG9zaXRlQW5pbWF0aW9uKHJlbmRlcmVy
KTsKICAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IGJsZW5kZWRTdHlsZSA9IHJlbmRlcmVyQW5pbWF0
aW9ucy0+YW5pbWF0ZShyZW5kZXJlciwgb2xkU3R5bGUsIG5ld1N0eWxlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0ltcGxpY2l0QW5pbWF0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0ltcGxpY2l0QW5pbWF0aW9uLmNwcAppbmRleCBm
NzFhMTUzLi5kYjM3YjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlv
bi9JbXBsaWNpdEFuaW1hdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRp
b24vSW1wbGljaXRBbmltYXRpb24uY3BwCkBAIC0xMjksNyArMTI5LDcgQEAgdm9pZCBJbXBsaWNp
dEFuaW1hdGlvbjo6cGF1c2VBbmltYXRpb24oZG91YmxlIHRpbWVPZmZzZXQpCiAjZW5kaWYKICAg
ICAvLyBSZXN0b3JlIHRoZSBvcmlnaW5hbCAodW5hbmltYXRlZCkgc3R5bGUKICAgICBpZiAoIXBh
dXNlZCgpKQotICAgICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKG1fb2JqZWN0LT5ub2RlKCkpOwor
ICAgICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKG1fb2JqZWN0LT5nZW5lcmF0aW5nTm9kZSgpKTsK
IH0KIAogdm9pZCBJbXBsaWNpdEFuaW1hdGlvbjo6ZW5kQW5pbWF0aW9uKCkKQEAgLTE2NSw4ICsx
NjUsOCBAQCBib29sIEltcGxpY2l0QW5pbWF0aW9uOjpzZW5kVHJhbnNpdGlvbkV2ZW50KGNvbnN0
IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBkb3VibAogICAgICAgICAgICAgICAgIAogICAgICAg
ICAgICAgLy8gRGlzcGF0Y2ggdGhlIGV2ZW50CiAgICAgICAgICAgICBSZWZQdHI8RWxlbWVudD4g
ZWxlbWVudCA9IDA7Ci0gICAgICAgICAgICBpZiAobV9vYmplY3QtPm5vZGUoKSAmJiBtX29iamVj
dC0+bm9kZSgpLT5pc0VsZW1lbnROb2RlKCkpCi0gICAgICAgICAgICAgICAgZWxlbWVudCA9IHN0
YXRpY19jYXN0PEVsZW1lbnQqPihtX29iamVjdC0+bm9kZSgpKTsKKyAgICAgICAgICAgIGlmICht
X29iamVjdC0+Z2VuZXJhdGluZ05vZGUoKSAmJiBtX29iamVjdC0+Z2VuZXJhdGluZ05vZGUoKS0+
aXNFbGVtZW50Tm9kZSgpKQorICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxF
bGVtZW50Kj4obV9vYmplY3QtPmdlbmVyYXRpbmdOb2RlKCkpOwogCiAgICAgICAgICAgICBBU1NF
UlQoIWVsZW1lbnQgfHwgKGVsZW1lbnQtPmRvY3VtZW50KCkgJiYgIWVsZW1lbnQtPmRvY3VtZW50
KCktPmluUGFnZUNhY2hlKCkpKTsKICAgICAgICAgICAgIGlmICghZWxlbWVudCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0tleWZyYW1lQW5pbWF0aW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0tleWZyYW1lQW5pbWF0aW9uLmNwcAppbmRl
eCBkYTI5MTVkLi4xMDQwY2FmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1h
dGlvbi9LZXlmcmFtZUFuaW1hdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmlt
YXRpb24vS2V5ZnJhbWVBbmltYXRpb24uY3BwCkBAIC01MSw4ICs1MSw4IEBAIEtleWZyYW1lQW5p
bWF0aW9uOjpLZXlmcmFtZUFuaW1hdGlvbihjb25zdCBBbmltYXRpb24qIGFuaW1hdGlvbiwgUmVu
ZGVyT2JqZWN0KiByCiAgICAgLCBtX3VuYW5pbWF0ZWRTdHlsZSh1bmFuaW1hdGVkU3R5bGUpCiB7
CiAgICAgLy8gR2V0IHRoZSBrZXlmcmFtZSBSZW5kZXJTdHlsZXMKLSAgICBpZiAobV9vYmplY3Qg
JiYgbV9vYmplY3QtPm5vZGUoKSAmJiBtX29iamVjdC0+bm9kZSgpLT5pc0VsZW1lbnROb2RlKCkp
Ci0gICAgICAgIG1fb2JqZWN0LT5kb2N1bWVudCgpLT5zdHlsZVJlc29sdmVyKCktPmtleWZyYW1l
U3R5bGVzRm9yQW5pbWF0aW9uKHN0YXRpY19jYXN0PEVsZW1lbnQqPihtX29iamVjdC0+bm9kZSgp
KSwgdW5hbmltYXRlZFN0eWxlLCBtX2tleWZyYW1lcyk7CisgICAgaWYgKG1fb2JqZWN0ICYmIG1f
b2JqZWN0LT5nZW5lcmF0aW5nTm9kZSgpICYmIG1fb2JqZWN0LT5nZW5lcmF0aW5nTm9kZSgpLT5p
c0VsZW1lbnROb2RlKCkpCisgICAgICAgIG1fb2JqZWN0LT5kb2N1bWVudCgpLT5zdHlsZVJlc29s
dmVyKCktPmtleWZyYW1lU3R5bGVzRm9yQW5pbWF0aW9uKHN0YXRpY19jYXN0PEVsZW1lbnQqPiht
X29iamVjdC0+Z2VuZXJhdGluZ05vZGUoKSksIHVuYW5pbWF0ZWRTdHlsZSwgbV9rZXlmcmFtZXMp
OwogCiAgICAgLy8gVXBkYXRlIHRoZSBtX3RyYW5zZm9ybUZ1bmN0aW9uTGlzdFZhbGlkIGZsYWcg
YmFzZWQgb24gd2hldGhlciB0aGUgZnVuY3Rpb24gbGlzdHMgaW4gdGhlIGtleWZyYW1lcyBtYXRj
aC4KICAgICB2YWxpZGF0ZVRyYW5zZm9ybUZ1bmN0aW9uTGlzdCgpOwpAQCAtMjU1LDcgKzI1NSw3
IEBAIHZvaWQgS2V5ZnJhbWVBbmltYXRpb246OnBhdXNlQW5pbWF0aW9uKGRvdWJsZSB0aW1lT2Zm
c2V0KQogI2VuZGlmCiAgICAgLy8gUmVzdG9yZSB0aGUgb3JpZ2luYWwgKHVuYW5pbWF0ZWQpIHN0
eWxlCiAgICAgaWYgKCFwYXVzZWQoKSkKLSAgICAgICAgc2V0TmVlZHNTdHlsZVJlY2FsYyhtX29i
amVjdC0+bm9kZSgpKTsKKyAgICAgICAgc2V0TmVlZHNTdHlsZVJlY2FsYyhtX29iamVjdC0+Z2Vu
ZXJhdGluZ05vZGUoKSk7CiB9CiAKIHZvaWQgS2V5ZnJhbWVBbmltYXRpb246OmVuZEFuaW1hdGlv
bigpCkBAIC0yNjksNyArMjY5LDcgQEAgdm9pZCBLZXlmcmFtZUFuaW1hdGlvbjo6ZW5kQW5pbWF0
aW9uKCkKICNlbmRpZgogICAgIC8vIFJlc3RvcmUgdGhlIG9yaWdpbmFsICh1bmFuaW1hdGVkKSBz
dHlsZQogICAgIGlmICghcGF1c2VkKCkpCi0gICAgICAgIHNldE5lZWRzU3R5bGVSZWNhbGMobV9v
YmplY3QtPm5vZGUoKSk7CisgICAgICAgIHNldE5lZWRzU3R5bGVSZWNhbGMobV9vYmplY3QtPmdl
bmVyYXRpbmdOb2RlKCkpOwogfQogCiBib29sIEtleWZyYW1lQW5pbWF0aW9uOjpzaG91bGRTZW5k
RXZlbnRGb3JMaXN0ZW5lcihEb2N1bWVudDo6TGlzdGVuZXJUeXBlIGxpc3RlbmVyVHlwZSkgY29u
c3QKQEAgLTMxNCw4ICszMTQsOCBAQCBib29sIEtleWZyYW1lQW5pbWF0aW9uOjpzZW5kQW5pbWF0
aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGRvdWJsZQogICAgIGlmIChz
aG91bGRTZW5kRXZlbnRGb3JMaXN0ZW5lcihsaXN0ZW5lclR5cGUpKSB7CiAgICAgICAgIC8vIERp
c3BhdGNoIHRoZSBldmVudAogICAgICAgICBSZWZQdHI8RWxlbWVudD4gZWxlbWVudDsKLSAgICAg
ICAgaWYgKG1fb2JqZWN0LT5ub2RlKCkgJiYgbV9vYmplY3QtPm5vZGUoKS0+aXNFbGVtZW50Tm9k
ZSgpKQotICAgICAgICAgICAgZWxlbWVudCA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihtX29iamVj
dC0+bm9kZSgpKTsKKyAgICAgICAgaWYgKG1fb2JqZWN0LT5nZW5lcmF0aW5nTm9kZSgpICYmIG1f
b2JqZWN0LT5nZW5lcmF0aW5nTm9kZSgpLT5pc0VsZW1lbnROb2RlKCkpCisgICAgICAgICAgICBl
bGVtZW50ID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG1fb2JqZWN0LT5nZW5lcmF0aW5nTm9kZSgp
KTsKIAogICAgICAgICBBU1NFUlQoIWVsZW1lbnQgfHwgKGVsZW1lbnQtPmRvY3VtZW50KCkgJiYg
IWVsZW1lbnQtPmRvY3VtZW50KCktPmluUGFnZUNhY2hlKCkpKTsKICAgICAgICAgaWYgKCFlbGVt
ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKaW5kZXggOGIyNTc2
My4uMjhhOTg2ZiAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJs
b2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCkBA
IC01OTk0LDE3ICs1OTk0LDE3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OnVwZGF0ZUZpcnN0TGV0dGVy
U3R5bGUoUmVuZGVyT2JqZWN0KiBmaXJzdExldHRlckJsb2NrLCBSZW5kZXJPCiB7CiAgICAgUmVu
ZGVyT2JqZWN0KiBmaXJzdExldHRlciA9IGN1cnJlbnRDaGlsZC0+cGFyZW50KCk7CiAgICAgUmVu
ZGVyT2JqZWN0KiBmaXJzdExldHRlckNvbnRhaW5lciA9IGZpcnN0TGV0dGVyLT5wYXJlbnQoKTsK
LSAgICBSZW5kZXJTdHlsZSogcHNldWRvU3R5bGUgPSBzdHlsZUZvckZpcnN0TGV0dGVyKGZpcnN0
TGV0dGVyQmxvY2ssIGZpcnN0TGV0dGVyQ29udGFpbmVyKTsKKyAgICBSZWZQdHI8UmVuZGVyU3R5
bGU+IHBzZXVkb1N0eWxlID0gYW5pbWF0aW9uKCktPnVwZGF0ZUFuaW1hdGlvbnMoZmlyc3RMZXR0
ZXIsIHN0eWxlRm9yRmlyc3RMZXR0ZXIoZmlyc3RMZXR0ZXJCbG9jaywgZmlyc3RMZXR0ZXJDb250
YWluZXIpKTsKICAgICBBU1NFUlQoZmlyc3RMZXR0ZXItPmlzRmxvYXRpbmcoKSB8fCBmaXJzdExl
dHRlci0+aXNJbmxpbmUoKSk7CiAKLSAgICBpZiAoTm9kZTo6ZGlmZihmaXJzdExldHRlci0+c3R5
bGUoKSwgcHNldWRvU3R5bGUsIGRvY3VtZW50KCkpID09IE5vZGU6OkRldGFjaCkgeworICAgIGlm
IChOb2RlOjpkaWZmKGZpcnN0TGV0dGVyLT5zdHlsZSgpLCBwc2V1ZG9TdHlsZS5nZXQoKSwgZG9j
dW1lbnQoKSkgPT0gTm9kZTo6RGV0YWNoKSB7CiAgICAgICAgIC8vIFRoZSBmaXJzdC1sZXR0ZXIg
cmVuZGVyZXIgbmVlZHMgdG8gYmUgcmVwbGFjZWQuIENyZWF0ZSBhIG5ldyByZW5kZXJlciBvZiB0
aGUgcmlnaHQgdHlwZS4KICAgICAgICAgUmVuZGVyT2JqZWN0KiBuZXdGaXJzdExldHRlcjsKICAg
ICAgICAgaWYgKHBzZXVkb1N0eWxlLT5kaXNwbGF5KCkgPT0gSU5MSU5FKQogICAgICAgICAgICAg
bmV3Rmlyc3RMZXR0ZXIgPSBuZXcgKHJlbmRlckFyZW5hKCkpIFJlbmRlcklubGluZShkb2N1bWVu
dCgpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbmV3Rmlyc3RMZXR0ZXIgPSBuZXcgKHJl
bmRlckFyZW5hKCkpIFJlbmRlckJsb2NrKGRvY3VtZW50KCkpOwotICAgICAgICBuZXdGaXJzdExl
dHRlci0+c2V0U3R5bGUocHNldWRvU3R5bGUpOworICAgICAgICBuZXdGaXJzdExldHRlci0+c2V0
U3R5bGUocHNldWRvU3R5bGUuZ2V0KCkpOwogCiAgICAgICAgIC8vIE1vdmUgdGhlIGZpcnN0IGxl
dHRlciBpbnRvIHRoZSBuZXcgcmVuZGVyZXIuCiAgICAgICAgIExheW91dFN0YXRlRGlzYWJsZXIg
bGF5b3V0U3RhdGVEaXNhYmxlcih2aWV3KCkpOwpAQCAtNjAzMCwxMSArNjAzMCwxMSBAQCB2b2lk
IFJlbmRlckJsb2NrOjp1cGRhdGVGaXJzdExldHRlclN0eWxlKFJlbmRlck9iamVjdCogZmlyc3RM
ZXR0ZXJCbG9jaywgUmVuZGVyTwogICAgICAgICBmaXJzdExldHRlciA9IG5ld0ZpcnN0TGV0dGVy
OwogICAgICAgICBmaXJzdExldHRlckNvbnRhaW5lci0+YWRkQ2hpbGQoZmlyc3RMZXR0ZXIsIG5l
eHRTaWJsaW5nKTsKICAgICB9IGVsc2UKLSAgICAgICAgZmlyc3RMZXR0ZXItPnNldFN0eWxlKHBz
ZXVkb1N0eWxlKTsKKyAgICAgICAgZmlyc3RMZXR0ZXItPnNldFN0eWxlKHBzZXVkb1N0eWxlLmdl
dCgpKTsKIAogICAgIGZvciAoUmVuZGVyT2JqZWN0KiBnZW5DaGlsZCA9IGZpcnN0TGV0dGVyLT5m
aXJzdENoaWxkKCk7IGdlbkNoaWxkOyBnZW5DaGlsZCA9IGdlbkNoaWxkLT5uZXh0U2libGluZygp
KSB7CiAgICAgICAgIGlmIChnZW5DaGlsZC0+aXNUZXh0KCkpCi0gICAgICAgICAgICBnZW5DaGls
ZC0+c2V0U3R5bGUocHNldWRvU3R5bGUpOworICAgICAgICAgICAgZ2VuQ2hpbGQtPnNldFN0eWxl
KHBzZXVkb1N0eWxlLmdldCgpKTsKICAgICB9CiB9CiAKQEAgLTYwNDcsOCArNjA0NywxNCBAQCB2
b2lkIFJlbmRlckJsb2NrOjpjcmVhdGVGaXJzdExldHRlclJlbmRlcmVyKFJlbmRlck9iamVjdCog
Zmlyc3RMZXR0ZXJCbG9jaywgUmVuZAogICAgICAgICBmaXJzdExldHRlciA9IG5ldyAocmVuZGVy
QXJlbmEoKSkgUmVuZGVySW5saW5lKGRvY3VtZW50KCkpOwogICAgIGVsc2UKICAgICAgICAgZmly
c3RMZXR0ZXIgPSBuZXcgKHJlbmRlckFyZW5hKCkpIFJlbmRlckJsb2NrKGRvY3VtZW50KCkpOwot
ICAgIGZpcnN0TGV0dGVyLT5zZXRTdHlsZShwc2V1ZG9TdHlsZSk7CisKKyAgICBSZWZQdHI8UmVu
ZGVyU3R5bGU+IHRlbXBvcmFyeVN0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZSgpOworICAgIHRl
bXBvcmFyeVN0eWxlLT5pbmhlcml0RnJvbShmaXJzdExldHRlckJsb2NrLT5zdHlsZSgpKTsKKyAg
ICBmaXJzdExldHRlci0+c2V0U3R5bGUodGVtcG9yYXJ5U3R5bGUpOyAgCiAgICAgZmlyc3RMZXR0
ZXJDb250YWluZXItPmFkZENoaWxkKGZpcnN0TGV0dGVyLCBjdXJyZW50Q2hpbGQpOworICAgIAor
ICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gcHNldWRvRWxlbWVudFN0eWxlID0gYW5pbWF0aW9uKCkt
PnVwZGF0ZUFuaW1hdGlvbnMoZmlyc3RMZXR0ZXIsIHBzZXVkb1N0eWxlKTsKKyAgICBmaXJzdExl
dHRlci0+c2V0U3R5bGUocHNldWRvRWxlbWVudFN0eWxlKTsKIAogICAgIFJlbmRlclRleHQqIHRl
eHRPYmogPSB0b1JlbmRlclRleHQoY3VycmVudENoaWxkKTsKIApAQCAtNjA5Niw3ICs2MTAyLDcg
QEAgdm9pZCBSZW5kZXJCbG9jazo6Y3JlYXRlRmlyc3RMZXR0ZXJSZW5kZXJlcihSZW5kZXJPYmpl
Y3QqIGZpcnN0TGV0dGVyQmxvY2ssIFJlbmQKICAgICAgICAgLy8gY29uc3RydWN0IHRleHQgZnJh
Z21lbnQgZm9yIHRoZSBmaXJzdCBsZXR0ZXIKICAgICAgICAgUmVuZGVyVGV4dEZyYWdtZW50KiBs
ZXR0ZXIgPSAKICAgICAgICAgICAgIG5ldyAocmVuZGVyQXJlbmEoKSkgUmVuZGVyVGV4dEZyYWdt
ZW50KHJlbWFpbmluZ1RleHQtPm5vZGUoKSA/IHJlbWFpbmluZ1RleHQtPm5vZGUoKSA6IHJlbWFp
bmluZ1RleHQtPmRvY3VtZW50KCksIG9sZFRleHQuZ2V0KCksIDAsIGxlbmd0aCk7Ci0gICAgICAg
IGxldHRlci0+c2V0U3R5bGUocHNldWRvU3R5bGUpOworICAgICAgICBsZXR0ZXItPnNldFN0eWxl
KHBzZXVkb0VsZW1lbnRTdHlsZS5nZXQoKSk7CiAgICAgICAgIGZpcnN0TGV0dGVyLT5hZGRDaGls
ZChsZXR0ZXIpOwogCiAgICAgICAgIHRleHRPYmotPmRlc3Ryb3koKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKaW5kZXggNmJlYjAxNC4uMzExMTA3MiAxMDA3NTUK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKQEAgLTIxNzMsNiArMjE3Mywx
OSBAQCBib29sIFJlbmRlck9iamVjdDo6aXNSb290ZWQoUmVuZGVyVmlldyoqIHZpZXcpCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKK05vZGUqIFJlbmRlck9iamVjdDo6Z2VuZXJhdGluZ05vZGUoKSBj
b25zdAoreworICAgIE5vZGUqIG5vZGUgPSBtX25vZGUgPT0gZG9jdW1lbnQoKSA/IDAgOiBtX25v
ZGU7CisgICAgaWYgKG5vZGUpCisgICAgICAgIHJldHVybiBub2RlOworCisgICAgZm9yIChSZW5k
ZXJPYmplY3QqIG9iamVjdCA9IHBhcmVudCgpOyBvYmplY3Q7IG9iamVjdCA9IG9iamVjdC0+cGFy
ZW50KCkpIHsKKyAgICAgICAgaWYgKE5vZGUqIG5vZGUgPSAob2JqZWN0LT5ub2RlKCkgPT0gb2Jq
ZWN0LT5kb2N1bWVudCgpID8gMCA6IG9iamVjdC0+bm9kZSgpKSkKKyAgICAgICAgICAgIHJldHVy
biBub2RlOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKwogUmVuZGVyT2JqZWN0KiBSZW5kZXJP
YmplY3Q6OnJlbmRlcmVyRm9yUm9vdEJhY2tncm91bmQoKQogewogICAgIEFTU0VSVChpc1Jvb3Qo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKaW5kZXggOTliYzYzMi4u
MDRmNGQ3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVj
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaApAQCAtNTY1
LDcgKzU2NSw4IEBAIHB1YmxpYzoKICAgICAvLyBSZXR1cm5zIHRoZSBzdHlsZWQgbm9kZSB0aGF0
IGNhdXNlZCB0aGUgZ2VuZXJhdGlvbiBvZiB0aGlzIHJlbmRlcmVyLgogICAgIC8vIFRoaXMgaXMg
dGhlIHNhbWUgYXMgbm9kZSgpIGV4Y2VwdCBmb3IgcmVuZGVyZXJzIG9mIDpiZWZvcmUgYW5kIDph
ZnRlcgogICAgIC8vIHBzZXVkbyBlbGVtZW50cyBmb3Igd2hpY2ggdGhlaXIgcGFyZW50IG5vZGUg
aXMgcmV0dXJuZWQuCi0gICAgTm9kZSogZ2VuZXJhdGluZ05vZGUoKSBjb25zdCB7IHJldHVybiBt
X25vZGUgPT0gZG9jdW1lbnQoKSA/IDAgOiBtX25vZGU7IH0KKyAgICBOb2RlKiBnZW5lcmF0aW5n
Tm9kZSgpIGNvbnN0OworCiAgICAgdm9pZCBzZXROb2RlKE5vZGUqIG5vZGUpIHsgbV9ub2RlID0g
bm9kZTsgfQogCiAgICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gbV9ub2Rl
LT5kb2N1bWVudCgpOyB9Ci0tIAoxLjcuNS40Cgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>139687</attachid>
            <date>2012-05-01 14:53:29 -0700</date>
            <delta_ts>2012-05-03 18:10:59 -0700</delta_ts>
            <desc>Patch V3</desc>
            <filename>0001-Apply-animations-and-transitions-for-first-letter-el.patch</filename>
            <type>text/plain</type>
            <size>21381</size>
            <attacher name="Igor Trindade Oliveira">igor.oliveira</attacher>
            
              <data encoding="base64">RnJvbSA3ZTllN2NmZjEzMGRmNzNhOGM0Y2ZlNzBhMGJhYjViNzU4YmM5NWJmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBJZ29yIE9saXZlaXJhIDxpZ29yLm9Ac2lzYS5zYW1zdW5nLmNv
bT4KRGF0ZTogVHVlLCAxIE1heSAyMDEyIDE0OjQ0OjE2IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0g
QXBwbHkgYW5pbWF0aW9ucyBhbmQgdHJhbnNpdGlvbnMgZm9yIGZpcnN0LWxldHRlciBlbGVtZW50
CgotLS0KIExheW91dFRlc3RzL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwgICAxMiArKysrCiAuLi4vYW5pbWF0aW9ucy9maXJzdC1sZXR0ZXItYW5pbWF0aW9uLWV4cGVj
dGVkLnR4dCB8ICAgIDIgKwogTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9maXJzdC1sZXR0ZXItYW5p
bWF0aW9uLmh0bWwgfCAgIDUzICsrKysrKysrKysrKysrKysrKwogLi4uL2ZpcnN0LWxldHRlci1j
b2xvci10cmFuc2l0aW9uLWV4cGVjdGVkLnR4dCAgICAgfCAgICAyICsKIC4uLi90cmFuc2l0aW9u
cy9maXJzdC1sZXR0ZXItY29sb3ItdHJhbnNpdGlvbi5odG1sIHwgICA1NyArKysrKysrKysrKysr
KysrKysrKwogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfCAgIDQ4ICsrKysrKysrKysrKysrKysKIFNvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9u
L0FuaW1hdGlvbkJhc2UuY3BwICAgIHwgICAgNiArLQogLi4uL1dlYkNvcmUvcGFnZS9hbmltYXRp
b24vQW5pbWF0aW9uQ29udHJvbGxlci5jcHAgfCAgICA5ICsrLS0KIC4uLi9XZWJDb3JlL3BhZ2Uv
YW5pbWF0aW9uL0ltcGxpY2l0QW5pbWF0aW9uLmNwcCAgIHwgICAgNiArLQogLi4uL1dlYkNvcmUv
cGFnZS9hbmltYXRpb24vS2V5ZnJhbWVBbmltYXRpb24uY3BwICAgfCAgIDEyICsrLS0KIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAgICAgICAgICAgIHwgICAyMCArKysr
Ky0tLQogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgICAgICAgICAg
fCAgIDEzICsrKysrCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmggICAg
ICAgICAgICB8ICAgIDMgKy0KIDEzIGZpbGVzIGNoYW5nZWQsIDIxOCBpbnNlcnRpb25zKCspLCAy
NSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9hbmltYXRpb25z
L2ZpcnN0LWxldHRlci1hbmltYXRpb24tZXhwZWN0ZWQudHh0CiBjcmVhdGUgbW9kZSAxMDA2NDQg
TGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9maXJzdC1sZXR0ZXItYW5pbWF0aW9uLmh0bWwKIGNyZWF0
ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy90cmFuc2l0aW9ucy9maXJzdC1sZXR0ZXItY29sb3It
dHJhbnNpdGlvbi1leHBlY3RlZC50eHQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy90
cmFuc2l0aW9ucy9maXJzdC1sZXR0ZXItY29sb3ItdHJhbnNpdGlvbi5odG1sCgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDVl
MjcyZTUuLjAxNDE3ZTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wNS0wMSAgSWdvciBP
bGl2ZWlyYSAgPGlnb3Iub0BzaXNhLnNhbXN1bmcuY29tPgorCisgICAgICAgIEFwcGx5IGFuaW1h
dGlvbnMgYW5kIHRyYW5zaXRpb25zIGZvciBmaXJzdC1sZXR0ZXIgZWxlbWVudAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODUyNTMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGFuaW1hdGlvbnMvZmlyc3Qt
bGV0dGVyLWFuaW1hdGlvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGFuaW1hdGlv
bnMvZmlyc3QtbGV0dGVyLWFuaW1hdGlvbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0cmFuc2l0
aW9ucy9maXJzdC1sZXR0ZXItY29sb3ItdHJhbnNpdGlvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIHRyYW5zaXRpb25zL2ZpcnN0LWxldHRlci1jb2xvci10cmFuc2l0aW9uLmh0bWw6
IEFkZGVkLgorCiAyMDEyLTA1LTAxICBTaWx2aWEgUGZlaWZmZXIgIDxzaWx2aWFwZkBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgQXVkaW8gY29udHJvbHMgaGF2ZSBhIDFweCBzdXJwbHVzIG91dGxp
bmUgY29taW5nIGZyb20gUmVuZGVySW1hZ2U6OnBhaW50UmVwbGFjZWQgYmFzZSBjbGFzcywKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvZmlyc3QtbGV0dGVyLWFuaW1hdGlvbi1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9hbmltYXRpb25zL2ZpcnN0LWxldHRlci1hbmltYXRp
b24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIwNTdi
MGQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9hbmltYXRpb25zL2ZpcnN0LWxldHRl
ci1hbmltYXRpb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMiBAQAorTG9yZW0gaXBzdW0gZG9s
b3Igc2l0IGFtZXQuCitQQVNTCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hbmltYXRpb25zL2Zp
cnN0LWxldHRlci1hbmltYXRpb24uaHRtbCBiL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvZmlyc3Qt
bGV0dGVyLWFuaW1hdGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LmRiYWQ4ODQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9hbmltYXRpb25zL2ZpcnN0
LWxldHRlci1hbmltYXRpb24uaHRtbApAQCAtMCwwICsxLDUzIEBACis8IURPQ1RZUEUgaHRtbD4K
KworPGh0bWw+Cis8aGVhZD4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9InNjcmVlbiI+
CisgICAgLmJveCB7CisgICAgICB3aWR0aDogMTAwcHg7CisgICAgICBoZWlnaHQ6IDEwMHB4Owor
ICAgICAgYmFja2dyb3VuZDogYmx1ZTsKKyAgICB9CisKKyAgICAuYm94OjpmaXJzdC1sZXR0ZXIg
eworICAgICAgZm9udC1zaXplOiAyNHB0OworICAgICAgY29sb3I6IGJsYWNrOworICAgICAgLXdl
YmtpdC1hbmltYXRpb246IGZpcnN0TGV0dGVyQW5pbSAxcyBsaW5lYXI7CisgICAgfQorCisgICAg
QC13ZWJraXQta2V5ZnJhbWVzIGZpcnN0TGV0dGVyQW5pbSB7CisgICAgICBmcm9tIHsgbWFyZ2lu
OiAwcHg7IH0KKyAgICAgIHRvIHsgbWFyZ2luOiAxMDBweDsgfQorICAgIH0KKzwvc3R5bGU+Cis8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL2FuaW1hdGlvbi10ZXN0LWhlbHBlcnMuanMiIHR5cGU9InRl
eHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiPjwvc2NyaXB0PgorPHNjcmlwdCB0eXBlPSJ0
ZXh0L2phdmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04Ij4KKyAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpIHsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
OworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgfQor
CisgICAgdmFyIHJlc3VsdCA9ICIiOworICAgIGZ1bmN0aW9uIGFuaW1hdGlvbkVuZGVkKGV2ZW50
KQorICAgIHsgICAKKyAgICAgICAgaWYgKGV2ZW50LmFuaW1hdGlvbk5hbWUgPT0gImZpcnN0TGV0
dGVyQW5pbSIpCisgICAgICAgICAgIHJlc3VsdCArPSAiUEFTUyI7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgcmVzdWx0ICs9ICJGQUlMIjsKKworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgncmVzdWx0JykuaW5uZXJIVE1MID0gcmVzdWx0OworICAgICAgICBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90
aWZ5RG9uZSgpOworICAgIH0KKworICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJ3ZWJraXRB
bmltYXRpb25FbmQiLCBhbmltYXRpb25FbmRlZCwgZmFsc2UgKTsKKzwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+CisgIDxkaXYgY2xhc3M9ImJveCI+CisgICAgTG9yZW0gaXBzdW0gZG9sb3Igc2l0
IGFtZXQuCisgIDwvZGl2PgorICA8ZGl2IGlkPSJyZXN1bHQiPgorICA8L2Rpdj4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RyYW5zaXRpb25zL2ZpcnN0LWxldHRl
ci1jb2xvci10cmFuc2l0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RyYW5zaXRpb25z
L2ZpcnN0LWxldHRlci1jb2xvci10cmFuc2l0aW9uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMDU3YjBkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvdHJhbnNpdGlvbnMvZmlyc3QtbGV0dGVyLWNvbG9yLXRyYW5zaXRpb24tZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMiBAQAorTG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQuCitQQVNTCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90cmFuc2l0aW9ucy9maXJzdC1sZXR0ZXItY29sb3ItdHJh
bnNpdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvZmlyc3QtbGV0dGVyLWNvbG9y
LXRyYW5zaXRpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZWQ1
MWU4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvZmlyc3QtbGV0
dGVyLWNvbG9yLXRyYW5zaXRpb24uaHRtbApAQCAtMCwwICsxLDU3IEBACis8IURPQ1RZUEUgaHRt
bD4KKworPGh0bWw+Cis8aGVhZD4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9InNjcmVl
biI+CisgICAgLmJveCB7CisgICAgICB3aWR0aDogMTAwcHg7CisgICAgICBoZWlnaHQ6IDEwMHB4
OworICAgICAgYmFja2dyb3VuZC1jb2xvcjogYmx1ZTsKKyAgICB9CisgICAgCisgICAgLmJveDo6
Zmlyc3QtbGV0dGVyIHsKKyAgICAgIGZvbnQtc2l6ZTogMjRwdDsKKyAgICAgIGNvbG9yOiBibGFj
azsKKyAgICAgIC13ZWJraXQtdHJhbnNpdGlvbjogY29sb3IgMXM7CisgICAgfQorCisgICAgYm9k
eS5nbyAuYm94OjpmaXJzdC1sZXR0ZXIgeworICAgICAgY29sb3I6IHdoaXRlOworICAgIH0KKwor
PC9zdHlsZT4KKzxzY3JpcHQgIHR5cGU9InRleHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgi
PgorICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
LndhaXRVbnRpbERvbmUoKTsKKyAgICB9CisKKyAgICB2YXIgcmVzdWx0ID0gIiI7CisgICAgZnVu
Y3Rpb24gdHJhbnNpdGlvbkVuZGVkKGV2ZW50KQorICAgIHsgICAKKyAgICAgICAgaWYgKGV2ZW50
LnByb3BlcnR5TmFtZSA9PSAiY29sb3IiKQorICAgICAgICAgICByZXN1bHQgKz0gIlBBU1MiOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgIHJlc3VsdCArPSAiRkFJTCI7CisKKyAgICAgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpLmlubmVySFRNTCA9IHJlc3VsdDsKKyAgICAg
ICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICB9CisKKyAgICB3aW5kb3cuYWRkRXZlbnRM
aXN0ZW5lciggJ3dlYmtpdFRyYW5zaXRpb25FbmQnLCB0cmFuc2l0aW9uRW5kZWQsIGZhbHNlICk7
CisKKworICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgZnVuY3Rpb24gKCkgewor
ICAgICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTmFtZSA9ICJnbyI7CisgICAgfSwgZmFsc2UpOwor
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgPGRpdiBjbGFzcz0iYm94Ij4KKyAgICBMb3Jl
bSBpcHN1bSBkb2xvciBzaXQgYW1ldC4KKyAgPC9kaXY+CisgIDxkaXYgaWQ9InJlc3VsdCI+Cisg
IDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDkyOWQwMWEuLjkxMmRiYzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MSBAQAorMjAxMi0wNS0wMSAgSWdvciBPbGl2ZWlyYSAg
PGlnb3Iub0BzaXNhLnNhbXN1bmcuY29tPgorCisgICAgICAgIEFwcGx5IGFuaW1hdGlvbnMgYW5k
IHRyYW5zaXRpb25zIGZvciBmaXJzdC1sZXR0ZXIgZWxlbWVudAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODUyNTMKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYW5pbWF0aW9ucyBhbmQgdHJhbnNpdGlv
bnMgc3VwcG9ydCBmb3IgdGhlIGZpcnN0LWxldHRlciAKKyAgICAgICAgcHNldWRvIGVsZW1lbnQu
CisgICAgICAgIEluc3RlYWQgb2YgY2FsbCBSZW5kZXJPamVjdDo6bm9kZSgpIGluIHRoZSBhbmlt
YXRpb25zIGNvZGUsCisgICAgICAgIG5vdyB3ZSBuZWVkIHRvIGNhbGwgUmVuZGVyT2JqZWN0Ojpn
ZW5lcmF0aW5nTm9kZSgpIGJlY2F1c2UKKyAgICAgICAgcHNldWRvIGVsZW1lbnRzIGRvZXMgbm90
IGhhdmUgYSBOb2RlIGFzc29jaWF0ZWQgd2l0aCB0aGUKKyAgICAgICAgUmVuZGVyT2JqZWN0Lgor
CisgICAgICAgIEluaXRpYWwgcGF0Y2ggYnkgU2ltb24gRnJhc2VyCisKKyAgICAgICAgVGVzdHM6
IGFuaW1hdGlvbnMvZmlyc3QtbGV0dGVyLWFuaW1hdGlvbi5odG1sCisgICAgICAgICAgICAgICB0
cmFuc2l0aW9ucy9maXJzdC1sZXR0ZXItY29sb3ItdHJhbnNpdGlvbi5odG1sCisKKyAgICAgICAg
KiBwYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFu
aW1hdGlvbkJhc2U6OnVwZGF0ZVN0YXRlTWFjaGluZSk6CisgICAgICAgICogcGFnZS9hbmltYXRp
b24vQW5pbWF0aW9uQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25D
b250cm9sbGVyUHJpdmF0ZTo6dXBkYXRlQW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpB
bmltYXRpb25Db250cm9sbGVyUHJpdmF0ZTo6cGF1c2VBbmltYXRpb25BdFRpbWUpOgorICAgICAg
ICAoV2ViQ29yZTo6QW5pbWF0aW9uQ29udHJvbGxlclByaXZhdGU6OnBhdXNlVHJhbnNpdGlvbkF0
VGltZSk6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25Db250cm9sbGVyOjpjYW5jZWxBbmlt
YXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvbkNvbnRyb2xsZXI6OnVwZGF0ZUFu
aW1hdGlvbnMpOgorICAgICAgICAqIHBhZ2UvYW5pbWF0aW9uL0ltcGxpY2l0QW5pbWF0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkltcGxpY2l0QW5pbWF0aW9uOjpwYXVzZUFuaW1hdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpJbXBsaWNpdEFuaW1hdGlvbjo6c2VuZFRyYW5zaXRpb25FdmVu
dCk6CisgICAgICAgICogcGFnZS9hbmltYXRpb24vS2V5ZnJhbWVBbmltYXRpb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6S2V5ZnJhbWVBbmltYXRpb246OktleWZyYW1lQW5pbWF0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OktleWZyYW1lQW5pbWF0aW9uOjpwYXVzZUFuaW1hdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpLZXlmcmFtZUFuaW1hdGlvbjo6ZW5kQW5pbWF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OktleWZyYW1lQW5pbWF0aW9uOjpzZW5kQW5pbWF0aW9uRXZlbnQpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJC
bG9jazo6dXBkYXRlRmlyc3RMZXR0ZXJTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJC
bG9jazo6Y3JlYXRlRmlyc3RMZXR0ZXJSZW5kZXJlcik6CisKKyAgICAgICAgV2UgbmVlZCB0byBj
cmVhdGUgYSB0ZW1wb3Jhcnkgc3R5bGUgYmVjYXVzZSB3ZSBjYW4gbm90IGFwcGx5IHRyYW5zaXRp
b25zCisgICAgICAgIGluIGFuIGVsZW1lbnQgd2l0aG91dCBhbiBpbml0aWFsIHN0eWxlLgorCisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJPYmplY3Q6OmdlbmVyYXRpbmdOb2RlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuaDoKKyAgICAgICAgKFJlbmRlck9iamVjdCk6CisK
IDIwMTItMDUtMDEgIFNpbHZpYSBQZmVpZmZlciAgPHNpbHZpYXBmQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBBdWRpbyBjb250cm9scyBoYXZlIGEgMXB4IHN1cnBsdXMgb3V0bGluZSBjb21pbmcg
ZnJvbSBSZW5kZXJJbWFnZTo6cGFpbnRSZXBsYWNlZCBiYXNlIGNsYXNzLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcAppbmRleCAzM2Q2MzI2Li5i
NjcyNzkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRp
b25CYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25C
YXNlLmNwcApAQCAtMTkxLDcgKzE5MSw3IEBAIHZvaWQgQW5pbWF0aW9uQmFzZTo6dXBkYXRlU3Rh
dGVNYWNoaW5lKEFuaW1TdGF0ZUlucHV0IGlucHV0LCBkb3VibGUgcGFyYW0pCiAKICAgICAgICAg
ICAgICAgICAvLyBUcmlnZ2VyIGEgcmVuZGVyIHNvIHdlIGNhbiBzdGFydCB0aGUgYW5pbWF0aW9u
CiAgICAgICAgICAgICAgICAgaWYgKG1fb2JqZWN0KQotICAgICAgICAgICAgICAgICAgICBtX2Nv
bXBBbmltLT5hbmltYXRpb25Db250cm9sbGVyKCktPmFkZE5vZGVDaGFuZ2VUb0Rpc3BhdGNoKG1f
b2JqZWN0LT5ub2RlKCkpOworICAgICAgICAgICAgICAgICAgICBtX2NvbXBBbmltLT5hbmltYXRp
b25Db250cm9sbGVyKCktPmFkZE5vZGVDaGFuZ2VUb0Rpc3BhdGNoKG1fb2JqZWN0LT5nZW5lcmF0
aW5nTm9kZSgpKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgQVNTRVJU
KCFwYXVzZWQoKSk7CiAgICAgICAgICAgICAgICAgLy8gV2UncmUgd2FpdGluZyBmb3IgdGhlIHN0
YXJ0IHRpbWVyIHRvIGZpcmUgYW5kIHdlIGdvdCBhIHBhdXNlLiBDYW5jZWwgdGhlIHRpbWVyLCBw
YXVzZSBhbmQgd2FpdApAQCAtMjUyLDcgKzI1Miw3IEBAIHZvaWQgQW5pbWF0aW9uQmFzZTo6dXBk
YXRlU3RhdGVNYWNoaW5lKEFuaW1TdGF0ZUlucHV0IGlucHV0LCBkb3VibGUgcGFyYW0pCiAKICAg
ICAgICAgICAgICAgICAvLyBEaXNwYXRjaCB1cGRhdGVTdHlsZUlmTmVlZGVkIHNvIHdlIGNhbiBz
dGFydCB0aGUgYW5pbWF0aW9uCiAgICAgICAgICAgICAgICAgaWYgKG1fb2JqZWN0KQotICAgICAg
ICAgICAgICAgICAgICBtX2NvbXBBbmltLT5hbmltYXRpb25Db250cm9sbGVyKCktPmFkZE5vZGVD
aGFuZ2VUb0Rpc3BhdGNoKG1fb2JqZWN0LT5ub2RlKCkpOworICAgICAgICAgICAgICAgICAgICBt
X2NvbXBBbmltLT5hbmltYXRpb25Db250cm9sbGVyKCktPmFkZE5vZGVDaGFuZ2VUb0Rpc3BhdGNo
KG1fb2JqZWN0LT5nZW5lcmF0aW5nTm9kZSgpKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICAgICAgLy8gV2UgYXJlIHBhdXNpbmcgd2hpbGUgd2FpdGluZyBmb3IgYSBzdGFydCBy
ZXNwb25zZS4gQ2FuY2VsIHRoZSBhbmltYXRpb24gYW5kIHdhaXQuIFdoZW4gCiAgICAgICAgICAg
ICAgICAgLy8gd2UgdW5wYXVzZSwgd2Ugd2lsbCBhY3QgYXMgdGhvdWdoIHRoZSBzdGFydCB0aW1l
ciBqdXN0IGZpcmVkCkBAIC0yOTgsNyArMjk4LDcgQEAgdm9pZCBBbmltYXRpb25CYXNlOjp1cGRh
dGVTdGF0ZU1hY2hpbmUoQW5pbVN0YXRlSW5wdXQgaW5wdXQsIGRvdWJsZSBwYXJhbSkKICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlc3VtZU92ZXJyaWRkZW5BbmltYXRpb25zKCk7CiAKICAgICAg
ICAgICAgICAgICAgICAgLy8gRmlyZSBvZmYgYW5vdGhlciBzdHlsZSBjaGFuZ2Ugc28gd2UgY2Fu
IHNldCB0aGUgZmluYWwgdmFsdWUKLSAgICAgICAgICAgICAgICAgICAgbV9jb21wQW5pbS0+YW5p
bWF0aW9uQ29udHJvbGxlcigpLT5hZGROb2RlQ2hhbmdlVG9EaXNwYXRjaChtX29iamVjdC0+bm9k
ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgbV9jb21wQW5pbS0+YW5pbWF0aW9uQ29udHJvbGxl
cigpLT5hZGROb2RlQ2hhbmdlVG9EaXNwYXRjaChtX29iamVjdC0+Z2VuZXJhdGluZ05vZGUoKSk7
CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAg
ICAvLyBXZSBhcmUgcGF1c2luZyB3aGlsZSBydW5uaW5nLiBDYW5jZWwgdGhlIGFuaW1hdGlvbiBh
bmQgd2FpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0
aW9uQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRp
b25Db250cm9sbGVyLmNwcAppbmRleCAwZGMzZWE3Li42ZjgzM2VmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250cm9sbGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250cm9sbGVyLmNwcApAQCAt
OTksNyArOTksNyBAQCBkb3VibGUgQW5pbWF0aW9uQ29udHJvbGxlclByaXZhdGU6OnVwZGF0ZUFu
aW1hdGlvbnMoU2V0Q2hhbmdlZCBjYWxsU2V0Q2hhbmdlZC8qCiAgICAgICAgICAgICAgICAgdGlt
ZVRvTmV4dFNlcnZpY2UgPSB0OwogICAgICAgICAgICAgaWYgKCF0aW1lVG9OZXh0U2VydmljZSkg
ewogICAgICAgICAgICAgICAgIGlmIChjYWxsU2V0Q2hhbmdlZCA9PSBDYWxsU2V0Q2hhbmdlZCkg
ewotICAgICAgICAgICAgICAgICAgICBOb2RlKiBub2RlID0gaXQtPmZpcnN0LT5ub2RlKCk7Cisg
ICAgICAgICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBpdC0+Zmlyc3QtPmdlbmVyYXRpbmdOb2Rl
KCk7CiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVCghbm9kZSB8fCAobm9kZS0+ZG9jdW1lbnQo
KSAmJiAhbm9kZS0+ZG9jdW1lbnQoKS0+aW5QYWdlQ2FjaGUoKSkpOwogICAgICAgICAgICAgICAg
ICAgICBub2RlLT5zZXROZWVkc1N0eWxlUmVjYWxjKFN5bnRoZXRpY1N0eWxlQ2hhbmdlKTsKICAg
ICAgICAgICAgICAgICAgICAgY2FsbGVkU2V0Q2hhbmdlZCA9IHRydWU7CkBAIC0zMjUsNyArMzI1
LDcgQEAgYm9vbCBBbmltYXRpb25Db250cm9sbGVyUHJpdmF0ZTo6cGF1c2VBbmltYXRpb25BdFRp
bWUoUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgY28KICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgaWYgKGNvbXBBbmltLT5wYXVzZUFuaW1hdGlvbkF0VGltZShuYW1lLCB0KSkgewotICAgICAg
ICByZW5kZXJlci0+bm9kZSgpLT5zZXROZWVkc1N0eWxlUmVjYWxjKFN5bnRoZXRpY1N0eWxlQ2hh
bmdlKTsKKyAgICAgICAgcmVuZGVyZXItPmdlbmVyYXRpbmdOb2RlKCktPnNldE5lZWRzU3R5bGVS
ZWNhbGMoU3ludGhldGljU3R5bGVDaGFuZ2UpOwogICAgICAgICBzdGFydFVwZGF0ZVN0eWxlSWZO
ZWVkZWREaXNwYXRjaGVyKCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTM0Myw3
ICszNDMsNyBAQCBib29sIEFuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRlOjpwYXVzZVRyYW5zaXRp
b25BdFRpbWUoUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgYwogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICBpZiAoY29tcEFuaW0tPnBhdXNlVHJhbnNpdGlvbkF0VGltZShjc3NQcm9wZXJ0eUlE
KHByb3BlcnR5KSwgdCkpIHsKLSAgICAgICAgcmVuZGVyZXItPm5vZGUoKS0+c2V0TmVlZHNTdHls
ZVJlY2FsYyhTeW50aGV0aWNTdHlsZUNoYW5nZSk7CisgICAgICAgIHJlbmRlcmVyLT5nZW5lcmF0
aW5nTm9kZSgpLT5zZXROZWVkc1N0eWxlUmVjYWxjKFN5bnRoZXRpY1N0eWxlQ2hhbmdlKTsKICAg
ICAgICAgc3RhcnRVcGRhdGVTdHlsZUlmTmVlZGVkRGlzcGF0Y2hlcigpOwogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9CkBAIC01MDcsNyArNTA3LDcgQEAgdm9pZCBBbmltYXRpb25Db250cm9s
bGVyOjpjYW5jZWxBbmltYXRpb25zKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIGlmIChtX2RhdGEtPmNsZWFyKHJlbmRlcmVyKSkgewotICAgICAgICBOb2Rl
KiBub2RlID0gcmVuZGVyZXItPm5vZGUoKTsKKyAgICAgICAgTm9kZSogbm9kZSA9IHJlbmRlcmVy
LT5nZW5lcmF0aW5nTm9kZSgpOwogICAgICAgICBBU1NFUlQoIW5vZGUgfHwgKG5vZGUtPmRvY3Vt
ZW50KCkgJiYgIW5vZGUtPmRvY3VtZW50KCktPmluUGFnZUNhY2hlKCkpKTsKICAgICAgICAgbm9k
ZS0+c2V0TmVlZHNTdHlsZVJlY2FsYyhTeW50aGV0aWNTdHlsZUNoYW5nZSk7CiAgICAgfQpAQCAt
NTMyLDcgKzUzMiw2IEBAIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IEFuaW1hdGlvbkNvbnRyb2xs
ZXI6OnVwZGF0ZUFuaW1hdGlvbnMoUmVuZGVyT2JqZWN0KiByZW5kCiAgICAgLy8gYWdhaW5zdCB0
aGUgYW5pbWF0aW9ucyBpbiB0aGUgc3R5bGUgYW5kIG1ha2Ugc3VyZSB3ZSdyZSBpbiBzeW5jLiAg
SWYgZGVzdGluYXRpb24gdmFsdWVzCiAgICAgLy8gaGF2ZSBjaGFuZ2VkLCB3ZSByZXNldCB0aGUg
YW5pbWF0aW9uLiAgV2UgdGhlbiBkbyBhIGJsZW5kIHRvIGdldCBuZXcgdmFsdWVzIGFuZCB3ZSBy
ZXR1cm4KICAgICAvLyBhIG5ldyBzdHlsZS4KLSAgICBBU1NFUlQocmVuZGVyZXItPm5vZGUoKSk7
IC8vIEZJWE1FOiBXZSBkbyBub3QgYW5pbWF0ZSBnZW5lcmF0ZWQgY29udGVudCB5ZXQuCiAKICAg
ICBSZWZQdHI8Q29tcG9zaXRlQW5pbWF0aW9uPiByZW5kZXJlckFuaW1hdGlvbnMgPSBtX2RhdGEt
PmFjY2Vzc0NvbXBvc2l0ZUFuaW1hdGlvbihyZW5kZXJlcik7CiAgICAgUmVmUHRyPFJlbmRlclN0
eWxlPiBibGVuZGVkU3R5bGUgPSByZW5kZXJlckFuaW1hdGlvbnMtPmFuaW1hdGUocmVuZGVyZXIs
IG9sZFN0eWxlLCBuZXdTdHlsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2Fu
aW1hdGlvbi9JbXBsaWNpdEFuaW1hdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1h
dGlvbi9JbXBsaWNpdEFuaW1hdGlvbi5jcHAKaW5kZXggZjcxYTE1My4uZGIzN2I2NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vSW1wbGljaXRBbmltYXRpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0ltcGxpY2l0QW5pbWF0aW9uLmNw
cApAQCAtMTI5LDcgKzEyOSw3IEBAIHZvaWQgSW1wbGljaXRBbmltYXRpb246OnBhdXNlQW5pbWF0
aW9uKGRvdWJsZSB0aW1lT2Zmc2V0KQogI2VuZGlmCiAgICAgLy8gUmVzdG9yZSB0aGUgb3JpZ2lu
YWwgKHVuYW5pbWF0ZWQpIHN0eWxlCiAgICAgaWYgKCFwYXVzZWQoKSkKLSAgICAgICAgc2V0TmVl
ZHNTdHlsZVJlY2FsYyhtX29iamVjdC0+bm9kZSgpKTsKKyAgICAgICAgc2V0TmVlZHNTdHlsZVJl
Y2FsYyhtX29iamVjdC0+Z2VuZXJhdGluZ05vZGUoKSk7CiB9CiAKIHZvaWQgSW1wbGljaXRBbmlt
YXRpb246OmVuZEFuaW1hdGlvbigpCkBAIC0xNjUsOCArMTY1LDggQEAgYm9vbCBJbXBsaWNpdEFu
aW1hdGlvbjo6c2VuZFRyYW5zaXRpb25FdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlw
ZSwgZG91YmwKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgIC8vIERpc3BhdGNoIHRoZSBl
dmVudAogICAgICAgICAgICAgUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQgPSAwOwotICAgICAgICAg
ICAgaWYgKG1fb2JqZWN0LT5ub2RlKCkgJiYgbV9vYmplY3QtPm5vZGUoKS0+aXNFbGVtZW50Tm9k
ZSgpKQotICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obV9v
YmplY3QtPm5vZGUoKSk7CisgICAgICAgICAgICBpZiAobV9vYmplY3QtPmdlbmVyYXRpbmdOb2Rl
KCkgJiYgbV9vYmplY3QtPmdlbmVyYXRpbmdOb2RlKCktPmlzRWxlbWVudE5vZGUoKSkKKyAgICAg
ICAgICAgICAgICBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG1fb2JqZWN0LT5nZW5l
cmF0aW5nTm9kZSgpKTsKIAogICAgICAgICAgICAgQVNTRVJUKCFlbGVtZW50IHx8IChlbGVtZW50
LT5kb2N1bWVudCgpICYmICFlbGVtZW50LT5kb2N1bWVudCgpLT5pblBhZ2VDYWNoZSgpKSk7CiAg
ICAgICAgICAgICBpZiAoIWVsZW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L2FuaW1hdGlvbi9LZXlmcmFtZUFuaW1hdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2Fu
aW1hdGlvbi9LZXlmcmFtZUFuaW1hdGlvbi5jcHAKaW5kZXggZGEyOTE1ZC4uMTA0MGNhZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vS2V5ZnJhbWVBbmltYXRpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0tleWZyYW1lQW5pbWF0aW9u
LmNwcApAQCAtNTEsOCArNTEsOCBAQCBLZXlmcmFtZUFuaW1hdGlvbjo6S2V5ZnJhbWVBbmltYXRp
b24oY29uc3QgQW5pbWF0aW9uKiBhbmltYXRpb24sIFJlbmRlck9iamVjdCogcgogICAgICwgbV91
bmFuaW1hdGVkU3R5bGUodW5hbmltYXRlZFN0eWxlKQogewogICAgIC8vIEdldCB0aGUga2V5ZnJh
bWUgUmVuZGVyU3R5bGVzCi0gICAgaWYgKG1fb2JqZWN0ICYmIG1fb2JqZWN0LT5ub2RlKCkgJiYg
bV9vYmplY3QtPm5vZGUoKS0+aXNFbGVtZW50Tm9kZSgpKQotICAgICAgICBtX29iamVjdC0+ZG9j
dW1lbnQoKS0+c3R5bGVSZXNvbHZlcigpLT5rZXlmcmFtZVN0eWxlc0ZvckFuaW1hdGlvbihzdGF0
aWNfY2FzdDxFbGVtZW50Kj4obV9vYmplY3QtPm5vZGUoKSksIHVuYW5pbWF0ZWRTdHlsZSwgbV9r
ZXlmcmFtZXMpOworICAgIGlmIChtX29iamVjdCAmJiBtX29iamVjdC0+Z2VuZXJhdGluZ05vZGUo
KSAmJiBtX29iamVjdC0+Z2VuZXJhdGluZ05vZGUoKS0+aXNFbGVtZW50Tm9kZSgpKQorICAgICAg
ICBtX29iamVjdC0+ZG9jdW1lbnQoKS0+c3R5bGVSZXNvbHZlcigpLT5rZXlmcmFtZVN0eWxlc0Zv
ckFuaW1hdGlvbihzdGF0aWNfY2FzdDxFbGVtZW50Kj4obV9vYmplY3QtPmdlbmVyYXRpbmdOb2Rl
KCkpLCB1bmFuaW1hdGVkU3R5bGUsIG1fa2V5ZnJhbWVzKTsKIAogICAgIC8vIFVwZGF0ZSB0aGUg
bV90cmFuc2Zvcm1GdW5jdGlvbkxpc3RWYWxpZCBmbGFnIGJhc2VkIG9uIHdoZXRoZXIgdGhlIGZ1
bmN0aW9uIGxpc3RzIGluIHRoZSBrZXlmcmFtZXMgbWF0Y2guCiAgICAgdmFsaWRhdGVUcmFuc2Zv
cm1GdW5jdGlvbkxpc3QoKTsKQEAgLTI1NSw3ICsyNTUsNyBAQCB2b2lkIEtleWZyYW1lQW5pbWF0
aW9uOjpwYXVzZUFuaW1hdGlvbihkb3VibGUgdGltZU9mZnNldCkKICNlbmRpZgogICAgIC8vIFJl
c3RvcmUgdGhlIG9yaWdpbmFsICh1bmFuaW1hdGVkKSBzdHlsZQogICAgIGlmICghcGF1c2VkKCkp
Ci0gICAgICAgIHNldE5lZWRzU3R5bGVSZWNhbGMobV9vYmplY3QtPm5vZGUoKSk7CisgICAgICAg
IHNldE5lZWRzU3R5bGVSZWNhbGMobV9vYmplY3QtPmdlbmVyYXRpbmdOb2RlKCkpOwogfQogCiB2
b2lkIEtleWZyYW1lQW5pbWF0aW9uOjplbmRBbmltYXRpb24oKQpAQCAtMjY5LDcgKzI2OSw3IEBA
IHZvaWQgS2V5ZnJhbWVBbmltYXRpb246OmVuZEFuaW1hdGlvbigpCiAjZW5kaWYKICAgICAvLyBS
ZXN0b3JlIHRoZSBvcmlnaW5hbCAodW5hbmltYXRlZCkgc3R5bGUKICAgICBpZiAoIXBhdXNlZCgp
KQotICAgICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKG1fb2JqZWN0LT5ub2RlKCkpOworICAgICAg
ICBzZXROZWVkc1N0eWxlUmVjYWxjKG1fb2JqZWN0LT5nZW5lcmF0aW5nTm9kZSgpKTsKIH0KIAog
Ym9vbCBLZXlmcmFtZUFuaW1hdGlvbjo6c2hvdWxkU2VuZEV2ZW50Rm9yTGlzdGVuZXIoRG9jdW1l
bnQ6Okxpc3RlbmVyVHlwZSBsaXN0ZW5lclR5cGUpIGNvbnN0CkBAIC0zMTQsOCArMzE0LDggQEAg
Ym9vbCBLZXlmcmFtZUFuaW1hdGlvbjo6c2VuZEFuaW1hdGlvbkV2ZW50KGNvbnN0IEF0b21pY1N0
cmluZyYgZXZlbnRUeXBlLCBkb3VibGUKICAgICBpZiAoc2hvdWxkU2VuZEV2ZW50Rm9yTGlzdGVu
ZXIobGlzdGVuZXJUeXBlKSkgewogICAgICAgICAvLyBEaXNwYXRjaCB0aGUgZXZlbnQKICAgICAg
ICAgUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQ7Ci0gICAgICAgIGlmIChtX29iamVjdC0+bm9kZSgp
ICYmIG1fb2JqZWN0LT5ub2RlKCktPmlzRWxlbWVudE5vZGUoKSkKLSAgICAgICAgICAgIGVsZW1l
bnQgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obV9vYmplY3QtPm5vZGUoKSk7CisgICAgICAgIGlm
IChtX29iamVjdC0+Z2VuZXJhdGluZ05vZGUoKSAmJiBtX29iamVjdC0+Z2VuZXJhdGluZ05vZGUo
KS0+aXNFbGVtZW50Tm9kZSgpKQorICAgICAgICAgICAgZWxlbWVudCA9IHN0YXRpY19jYXN0PEVs
ZW1lbnQqPihtX29iamVjdC0+Z2VuZXJhdGluZ05vZGUoKSk7CiAKICAgICAgICAgQVNTRVJUKCFl
bGVtZW50IHx8IChlbGVtZW50LT5kb2N1bWVudCgpICYmICFlbGVtZW50LT5kb2N1bWVudCgpLT5p
blBhZ2VDYWNoZSgpKSk7CiAgICAgICAgIGlmICghZWxlbWVudCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQmxvY2suY3BwCmluZGV4IGRhMmRlNjkuLmE0NTY3YmEgMTAwNzU1Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcApAQCAtNTkxMiwxNyArNTkxMiwxNyBAQCB2
b2lkIFJlbmRlckJsb2NrOjp1cGRhdGVGaXJzdExldHRlclN0eWxlKFJlbmRlck9iamVjdCogZmly
c3RMZXR0ZXJCbG9jaywgUmVuZGVyTwogewogICAgIFJlbmRlck9iamVjdCogZmlyc3RMZXR0ZXIg
PSBjdXJyZW50Q2hpbGQtPnBhcmVudCgpOwogICAgIFJlbmRlck9iamVjdCogZmlyc3RMZXR0ZXJD
b250YWluZXIgPSBmaXJzdExldHRlci0+cGFyZW50KCk7Ci0gICAgUmVuZGVyU3R5bGUqIHBzZXVk
b1N0eWxlID0gc3R5bGVGb3JGaXJzdExldHRlcihmaXJzdExldHRlckJsb2NrLCBmaXJzdExldHRl
ckNvbnRhaW5lcik7CisgICAgUmVmUHRyPFJlbmRlclN0eWxlPiBwc2V1ZG9TdHlsZSA9IGFuaW1h
dGlvbigpLT51cGRhdGVBbmltYXRpb25zKGZpcnN0TGV0dGVyLCBzdHlsZUZvckZpcnN0TGV0dGVy
KGZpcnN0TGV0dGVyQmxvY2ssIGZpcnN0TGV0dGVyQ29udGFpbmVyKSk7CiAgICAgQVNTRVJUKGZp
cnN0TGV0dGVyLT5pc0Zsb2F0aW5nKCkgfHwgZmlyc3RMZXR0ZXItPmlzSW5saW5lKCkpOwogCi0g
ICAgaWYgKE5vZGU6OmRpZmYoZmlyc3RMZXR0ZXItPnN0eWxlKCksIHBzZXVkb1N0eWxlLCBkb2N1
bWVudCgpKSA9PSBOb2RlOjpEZXRhY2gpIHsKKyAgICBpZiAoTm9kZTo6ZGlmZihmaXJzdExldHRl
ci0+c3R5bGUoKSwgcHNldWRvU3R5bGUuZ2V0KCksIGRvY3VtZW50KCkpID09IE5vZGU6OkRldGFj
aCkgewogICAgICAgICAvLyBUaGUgZmlyc3QtbGV0dGVyIHJlbmRlcmVyIG5lZWRzIHRvIGJlIHJl
cGxhY2VkLiBDcmVhdGUgYSBuZXcgcmVuZGVyZXIgb2YgdGhlIHJpZ2h0IHR5cGUuCiAgICAgICAg
IFJlbmRlck9iamVjdCogbmV3Rmlyc3RMZXR0ZXI7CiAgICAgICAgIGlmIChwc2V1ZG9TdHlsZS0+
ZGlzcGxheSgpID09IElOTElORSkKICAgICAgICAgICAgIG5ld0ZpcnN0TGV0dGVyID0gbmV3IChy
ZW5kZXJBcmVuYSgpKSBSZW5kZXJJbmxpbmUoZG9jdW1lbnQoKSk7CiAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgIG5ld0ZpcnN0TGV0dGVyID0gbmV3IChyZW5kZXJBcmVuYSgpKSBSZW5kZXJCbG9j
ayhkb2N1bWVudCgpKTsKLSAgICAgICAgbmV3Rmlyc3RMZXR0ZXItPnNldFN0eWxlKHBzZXVkb1N0
eWxlKTsKKyAgICAgICAgbmV3Rmlyc3RMZXR0ZXItPnNldFN0eWxlKHBzZXVkb1N0eWxlLmdldCgp
KTsKIAogICAgICAgICAvLyBNb3ZlIHRoZSBmaXJzdCBsZXR0ZXIgaW50byB0aGUgbmV3IHJlbmRl
cmVyLgogICAgICAgICBMYXlvdXRTdGF0ZURpc2FibGVyIGxheW91dFN0YXRlRGlzYWJsZXIodmll
dygpKTsKQEAgLTU5NDgsMTEgKzU5NDgsMTEgQEAgdm9pZCBSZW5kZXJCbG9jazo6dXBkYXRlRmly
c3RMZXR0ZXJTdHlsZShSZW5kZXJPYmplY3QqIGZpcnN0TGV0dGVyQmxvY2ssIFJlbmRlck8KICAg
ICAgICAgZmlyc3RMZXR0ZXIgPSBuZXdGaXJzdExldHRlcjsKICAgICAgICAgZmlyc3RMZXR0ZXJD
b250YWluZXItPmFkZENoaWxkKGZpcnN0TGV0dGVyLCBuZXh0U2libGluZyk7CiAgICAgfSBlbHNl
Ci0gICAgICAgIGZpcnN0TGV0dGVyLT5zZXRTdHlsZShwc2V1ZG9TdHlsZSk7CisgICAgICAgIGZp
cnN0TGV0dGVyLT5zZXRTdHlsZShwc2V1ZG9TdHlsZS5nZXQoKSk7CiAKICAgICBmb3IgKFJlbmRl
ck9iamVjdCogZ2VuQ2hpbGQgPSBmaXJzdExldHRlci0+Zmlyc3RDaGlsZCgpOyBnZW5DaGlsZDsg
Z2VuQ2hpbGQgPSBnZW5DaGlsZC0+bmV4dFNpYmxpbmcoKSkgewogICAgICAgICBpZiAoZ2VuQ2hp
bGQtPmlzVGV4dCgpKQotICAgICAgICAgICAgZ2VuQ2hpbGQtPnNldFN0eWxlKHBzZXVkb1N0eWxl
KTsKKyAgICAgICAgICAgIGdlbkNoaWxkLT5zZXRTdHlsZShwc2V1ZG9TdHlsZS5nZXQoKSk7CiAg
ICAgfQogfQogCkBAIC01OTY1LDggKzU5NjUsMTQgQEAgdm9pZCBSZW5kZXJCbG9jazo6Y3JlYXRl
Rmlyc3RMZXR0ZXJSZW5kZXJlcihSZW5kZXJPYmplY3QqIGZpcnN0TGV0dGVyQmxvY2ssIFJlbmQK
ICAgICAgICAgZmlyc3RMZXR0ZXIgPSBuZXcgKHJlbmRlckFyZW5hKCkpIFJlbmRlcklubGluZShk
b2N1bWVudCgpKTsKICAgICBlbHNlCiAgICAgICAgIGZpcnN0TGV0dGVyID0gbmV3IChyZW5kZXJB
cmVuYSgpKSBSZW5kZXJCbG9jayhkb2N1bWVudCgpKTsKLSAgICBmaXJzdExldHRlci0+c2V0U3R5
bGUocHNldWRvU3R5bGUpOworCisgICAgUmVmUHRyPFJlbmRlclN0eWxlPiB0ZW1wb3JhcnlTdHls
ZSA9IFJlbmRlclN0eWxlOjpjcmVhdGUoKTsKKyAgICB0ZW1wb3JhcnlTdHlsZS0+aW5oZXJpdEZy
b20oZmlyc3RMZXR0ZXJCbG9jay0+c3R5bGUoKSk7CisgICAgZmlyc3RMZXR0ZXItPnNldFN0eWxl
KHRlbXBvcmFyeVN0eWxlKTsgIAogICAgIGZpcnN0TGV0dGVyQ29udGFpbmVyLT5hZGRDaGlsZChm
aXJzdExldHRlciwgY3VycmVudENoaWxkKTsKKyAgICAKKyAgICBSZWZQdHI8UmVuZGVyU3R5bGU+
IHBzZXVkb0VsZW1lbnRTdHlsZSA9IGFuaW1hdGlvbigpLT51cGRhdGVBbmltYXRpb25zKGZpcnN0
TGV0dGVyLCBwc2V1ZG9TdHlsZSk7CisgICAgZmlyc3RMZXR0ZXItPnNldFN0eWxlKHBzZXVkb0Vs
ZW1lbnRTdHlsZSk7CiAKICAgICBSZW5kZXJUZXh0KiB0ZXh0T2JqID0gdG9SZW5kZXJUZXh0KGN1
cnJlbnRDaGlsZCk7CiAKQEAgLTYwMTQsNyArNjAyMCw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmNy
ZWF0ZUZpcnN0TGV0dGVyUmVuZGVyZXIoUmVuZGVyT2JqZWN0KiBmaXJzdExldHRlckJsb2NrLCBS
ZW5kCiAgICAgICAgIC8vIGNvbnN0cnVjdCB0ZXh0IGZyYWdtZW50IGZvciB0aGUgZmlyc3QgbGV0
dGVyCiAgICAgICAgIFJlbmRlclRleHRGcmFnbWVudCogbGV0dGVyID0gCiAgICAgICAgICAgICBu
ZXcgKHJlbmRlckFyZW5hKCkpIFJlbmRlclRleHRGcmFnbWVudChyZW1haW5pbmdUZXh0LT5ub2Rl
KCkgPyByZW1haW5pbmdUZXh0LT5ub2RlKCkgOiByZW1haW5pbmdUZXh0LT5kb2N1bWVudCgpLCBv
bGRUZXh0LmdldCgpLCAwLCBsZW5ndGgpOwotICAgICAgICBsZXR0ZXItPnNldFN0eWxlKHBzZXVk
b1N0eWxlKTsKKyAgICAgICAgbGV0dGVyLT5zZXRTdHlsZShwc2V1ZG9FbGVtZW50U3R5bGUuZ2V0
KCkpOwogICAgICAgICBmaXJzdExldHRlci0+YWRkQ2hpbGQobGV0dGVyKTsKIAogICAgICAgICB0
ZXh0T2JqLT5kZXN0cm95KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3Qu
Y3BwCmluZGV4IDM3YjFhNGUuLjRhOTlkODEgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJPYmplY3QuY3BwCkBAIC0yMTczLDYgKzIxNzMsMTkgQEAgYm9vbCBSZW5kZXJPYmplY3Q6
OmlzUm9vdGVkKFJlbmRlclZpZXcqKiB2aWV3KQogICAgIHJldHVybiB0cnVlOwogfQogCitOb2Rl
KiBSZW5kZXJPYmplY3Q6OmdlbmVyYXRpbmdOb2RlKCkgY29uc3QKK3sKKyAgICBOb2RlKiBub2Rl
ID0gbV9ub2RlID09IGRvY3VtZW50KCkgPyAwIDogbV9ub2RlOworICAgIGlmIChub2RlKQorICAg
ICAgICByZXR1cm4gbm9kZTsKKworICAgIGZvciAoUmVuZGVyT2JqZWN0KiBvYmplY3QgPSBwYXJl
bnQoKTsgb2JqZWN0OyBvYmplY3QgPSBvYmplY3QtPnBhcmVudCgpKSB7CisgICAgICAgIGlmIChO
b2RlKiBub2RlID0gKG9iamVjdC0+bm9kZSgpID09IG9iamVjdC0+ZG9jdW1lbnQoKSA/IDAgOiBv
YmplY3QtPm5vZGUoKSkpCisgICAgICAgICAgICByZXR1cm4gbm9kZTsKKyAgICB9CisgICAgcmV0
dXJuIDA7Cit9CisKIFJlbmRlck9iamVjdCogUmVuZGVyT2JqZWN0OjpyZW5kZXJlckZvclJvb3RC
YWNrZ3JvdW5kKCkKIHsKICAgICBBU1NFUlQoaXNSb290KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck9iamVjdC5oCmluZGV4IDlkZjRjMDkuLjBiODk1NDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKQEAgLTU2NSw3ICs1NjUsOCBAQCBwdWJsaWM6CiAg
ICAgLy8gUmV0dXJucyB0aGUgc3R5bGVkIG5vZGUgdGhhdCBjYXVzZWQgdGhlIGdlbmVyYXRpb24g
b2YgdGhpcyByZW5kZXJlci4KICAgICAvLyBUaGlzIGlzIHRoZSBzYW1lIGFzIG5vZGUoKSBleGNl
cHQgZm9yIHJlbmRlcmVycyBvZiA6YmVmb3JlIGFuZCA6YWZ0ZXIKICAgICAvLyBwc2V1ZG8gZWxl
bWVudHMgZm9yIHdoaWNoIHRoZWlyIHBhcmVudCBub2RlIGlzIHJldHVybmVkLgotICAgIE5vZGUq
IGdlbmVyYXRpbmdOb2RlKCkgY29uc3QgeyByZXR1cm4gbV9ub2RlID09IGRvY3VtZW50KCkgPyAw
IDogbV9ub2RlOyB9CisgICAgTm9kZSogZ2VuZXJhdGluZ05vZGUoKSBjb25zdDsKKwogICAgIHZv
aWQgc2V0Tm9kZShOb2RlKiBub2RlKSB7IG1fbm9kZSA9IG5vZGU7IH0KIAogICAgIERvY3VtZW50
KiBkb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fbm9kZS0+ZG9jdW1lbnQoKTsgfQotLSAKMS43
LjUuNAoK
</data>
<flag name="review"
          id="145362"
          type_id="1"
          status="-"
          setter="simon.fraser"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>140139</attachid>
            <date>2012-05-03 18:10:59 -0700</date>
            <delta_ts>2012-05-30 17:52:43 -0700</delta_ts>
            <desc>Patch V4.</desc>
            <filename>0001-Apply-animations-and-transitions-for-first-letter-el.patch</filename>
            <type>text/plain</type>
            <size>25748</size>
            <attacher name="Igor Trindade Oliveira">igor.oliveira</attacher>
            
              <data encoding="base64">RnJvbSBhYmQ1MWFlMGE5NDM0ZmVhNDVjMDA5MzA3MjhlYzQyOWEzZGEwNTY3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBJZ29yIE9saXZlaXJhIDxpZ29yLm9Ac2lzYS5zYW1zdW5nLmNv
bT4KRGF0ZTogVGh1LCAzIE1heSAyMDEyIDE3OjQ1OjU3IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0g
QXBwbHkgYW5pbWF0aW9ucyBhbmQgdHJhbnNpdGlvbnMgZm9yIGZpcnN0LWxldHRlciBlbGVtZW50
CgotLS0KIExheW91dFRlc3RzL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwgICAxNCArKysrCiAuLi4vYW5pbWF0aW9ucy9maXJzdC1sZXR0ZXItYW5pbWF0aW9uLWV4cGVj
dGVkLnR4dCB8ICAgIDYgKysKIExheW91dFRlc3RzL2FuaW1hdGlvbnMvZmlyc3QtbGV0dGVyLWFu
aW1hdGlvbi5odG1sIHwgICA2NiArKysrKysrKysrKysrKysrCiAuLi4vZmlyc3QtbGV0dGVyLWNv
bG9yLXRyYW5zaXRpb24tZXhwZWN0ZWQudHh0ICAgICB8ICAgIDIgKwogLi4uL3RyYW5zaXRpb25z
L2ZpcnN0LWxldHRlci1jb2xvci10cmFuc2l0aW9uLmh0bWwgfCAgIDU3ICsrKysrKysrKysrKysK
IC4uLi9maXJzdC1sZXR0ZXItdHJhbnNpdGlvbi1leHBlY3RlZC50eHQgICAgICAgICAgIHwgICAg
OSArKwogLi4uL3RyYW5zaXRpb25zL2ZpcnN0LWxldHRlci10cmFuc2l0aW9uLmh0bWwgICAgICAg
fCAgIDgzICsrKysrKysrKysrKysrKysrKysrCiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgICAg
ICAgICAgICAgICAgICAgICAgICAgICB8ICAgNTAgKysrKysrKysrKysrCiBTb3VyY2UvV2ViQ29y
ZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcCAgICB8ICAgIDYgKy0KIC4uLi9XZWJD
b3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkNvbnRyb2xsZXIuY3BwIHwgICAgOSArLQogLi4u
L1dlYkNvcmUvcGFnZS9hbmltYXRpb24vSW1wbGljaXRBbmltYXRpb24uY3BwICAgfCAgICA2ICst
CiAuLi4vV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9LZXlmcmFtZUFuaW1hdGlvbi5jcHAgICB8ICAg
MTIgKystLQogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcCAgICAgICAg
ICAgfCAgIDE5ICsrKy0tCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNw
cCAgICAgICAgICB8ICAgMTcgKysrKy0KIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJP
YmplY3QuaCAgICAgICAgICAgIHwgICAgNyArLQogMTUgZmlsZXMgY2hhbmdlZCwgMzMzIGluc2Vy
dGlvbnMoKyksIDMwIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3Rz
L2FuaW1hdGlvbnMvZmlyc3QtbGV0dGVyLWFuaW1hdGlvbi1leHBlY3RlZC50eHQKIGNyZWF0ZSBt
b2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9hbmltYXRpb25zL2ZpcnN0LWxldHRlci1hbmltYXRpb24u
aHRtbAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL3RyYW5zaXRpb25zL2ZpcnN0LWxl
dHRlci1jb2xvci10cmFuc2l0aW9uLWV4cGVjdGVkLnR4dAogY3JlYXRlIG1vZGUgMTAwNjQ0IExh
eW91dFRlc3RzL3RyYW5zaXRpb25zL2ZpcnN0LWxldHRlci1jb2xvci10cmFuc2l0aW9uLmh0bWwK
IGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy90cmFuc2l0aW9ucy9maXJzdC1sZXR0ZXIt
dHJhbnNpdGlvbi1leHBlY3RlZC50eHQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy90
cmFuc2l0aW9ucy9maXJzdC1sZXR0ZXItdHJhbnNpdGlvbi5odG1sCgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDkyZTA1NGEu
LmU4OTVlNTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0wNS0wMyAgSWdvciBPbGl2ZWly
YSAgPGlnb3Iub0BzaXNhLnNhbXN1bmcuY29tPgorCisgICAgICAgIEFwcGx5IGFuaW1hdGlvbnMg
YW5kIHRyYW5zaXRpb25zIGZvciBmaXJzdC1sZXR0ZXIgZWxlbWVudAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODUyNTMKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGFuaW1hdGlvbnMvZmlyc3QtbGV0dGVy
LWFuaW1hdGlvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGFuaW1hdGlvbnMvZmly
c3QtbGV0dGVyLWFuaW1hdGlvbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0cmFuc2l0aW9ucy9m
aXJzdC1sZXR0ZXItY29sb3ItdHJhbnNpdGlvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIHRyYW5zaXRpb25zL2ZpcnN0LWxldHRlci1jb2xvci10cmFuc2l0aW9uLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIHRyYW5zaXRpb25zL2ZpcnN0LWxldHRlci10cmFuc2l0aW9uLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogdHJhbnNpdGlvbnMvZmlyc3QtbGV0dGVyLXRyYW5zaXRp
b24uaHRtbDogQWRkZWQuCisKIDIwMTItMDUtMDMgIFRoaWFnbyBNYXJjb3MgUC4gU2FudG9zICA8
dGhpYWdvLnNhbnRvc0BpbnRlbC5jb20+CiAKICAgICAgICAgW0VGTF0gQ1NTIHRlc3RzIG5lZWRz
IGdhcmRlbmluZwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9maXJzdC1sZXR0
ZXItYW5pbWF0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvZmlyc3Qt
bGV0dGVyLWFuaW1hdGlvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uOWI4YTAwNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2FuaW1hdGlv
bnMvZmlyc3QtbGV0dGVyLWFuaW1hdGlvbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw2IEBACitM
b3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldC4KK0FuaW1hdGlvbnMgdGVzdCByZXN1bHQ6IAorCitQ
QVNTCitQQVNTCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvZmlyc3QtbGV0
dGVyLWFuaW1hdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9maXJzdC1sZXR0ZXIt
YW5pbWF0aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzEyMmQ1
ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvZmlyc3QtbGV0dGVy
LWFuaW1hdGlvbi5odG1sCkBAIC0wLDAgKzEsNjYgQEAKKzwhRE9DVFlQRSBodG1sPgorCis8aHRt
bD4KKzxoZWFkPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIiBtZWRpYT0ic2NyZWVuIj4KKyAgICAu
Ym94IHsKKyAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAgICAgIGxlZnQ6IDQwMHB4OworICAg
ICAgdG9wOiAxMDBweDsKKyAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgIGhlaWdodDogMTAwcHg7
CisgICAgICBiYWNrZ3JvdW5kOiBibHVlOworICAgICAgLXdlYmtpdC1hbmltYXRpb246IGJveEFu
aW0gMXMgbGluZWFyOworICAgIH0KKworICAgIC5ib3g6OmZpcnN0LWxldHRlciB7CisgICAgICBm
b250LXNpemU6IDI0cHQ7CisgICAgICBjb2xvcjogYmxhY2s7CisgICAgICAtd2Via2l0LWFuaW1h
dGlvbjogZmlyc3RMZXR0ZXJBbmltIDFzIGxpbmVhcjsKKyAgICB9CisKKyAgICBALXdlYmtpdC1r
ZXlmcmFtZXMgZmlyc3RMZXR0ZXJBbmltIHsKKyAgICAgIGZyb20geyBtYXJnaW46IDBweDsgfQor
ICAgICAgdG8geyBtYXJnaW46IDEwMHB4OyB9CisgICAgfQorCisgICAgQC13ZWJraXQta2V5ZnJh
bWVzIGJveEFuaW0geworICAgICAgZnJvbSB7IC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxKTsg
fQorICAgICAgdG8geyAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMyk7IH0KKyAgICB9Cis8L3N0
eWxlPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9hbmltYXRpb24tdGVzdC1oZWxwZXJzLmpzIiB0
eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04Ij48L3NjcmlwdD4KKzxzY3JpcHQg
dHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+CisgICBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQoKTsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwor
ICAgIH0KKworICAgIHZhciByZXN1bHQgPSAiQW5pbWF0aW9ucyB0ZXN0IHJlc3VsdDogPGJyPjxi
cj4iOworICAgIHZhciBhbmltYXRpb25zID0gMDsKKyAgICBmdW5jdGlvbiBhbmltYXRpb25FbmRl
ZChldmVudCkKKyAgICB7ICAgCisgICAgICAgIGlmIChldmVudC5hbmltYXRpb25OYW1lID09ICJm
aXJzdExldHRlckFuaW0iIHx8IGV2ZW50LmFuaW1hdGlvbk5hbWUgPT0gImJveEFuaW0iKQorICAg
ICAgICAgICByZXN1bHQgKz0gIlBBU1M8YnI+IjsKKyAgICAgICAgZWxzZQorICAgICAgICAgICBy
ZXN1bHQgKz0gIkZBSUw8YnI+IjsKKworICAgICAgICBhbmltYXRpb25zID0gYW5pbWF0aW9ucyAr
IDE7CisgICAgICAgIGlmIChhbmltYXRpb25zID09IDIpIHsKKyAgICAgICAgICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQnKS5pbm5lckhUTUwgPSByZXN1bHQ7CisgICAgICAgICAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHdp
bmRvdy5hZGRFdmVudExpc3RlbmVyKCJ3ZWJraXRBbmltYXRpb25FbmQiLCBhbmltYXRpb25FbmRl
ZCwgZmFsc2UgKTsKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisgIDxkaXYgY2xhc3M9ImJv
eCI+CisgICAgTG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQuCisgIDwvZGl2PgorICA8ZGl2IGlk
PSJyZXN1bHQiPgorICA8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3RyYW5zaXRpb25zL2ZpcnN0LWxldHRlci1jb2xvci10cmFuc2l0aW9uLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL3RyYW5zaXRpb25zL2ZpcnN0LWxldHRlci1jb2xvci10cmFuc2l0
aW9uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMDU3
YjBkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvZmlyc3QtbGV0
dGVyLWNvbG9yLXRyYW5zaXRpb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMiBAQAorTG9yZW0g
aXBzdW0gZG9sb3Igc2l0IGFtZXQuCitQQVNTCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90cmFu
c2l0aW9ucy9maXJzdC1sZXR0ZXItY29sb3ItdHJhbnNpdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMv
dHJhbnNpdGlvbnMvZmlyc3QtbGV0dGVyLWNvbG9yLXRyYW5zaXRpb24uaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZWQ1MWU4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvdHJhbnNpdGlvbnMvZmlyc3QtbGV0dGVyLWNvbG9yLXRyYW5zaXRpb24uaHRtbApA
QCAtMCwwICsxLDU3IEBACis8IURPQ1RZUEUgaHRtbD4KKworPGh0bWw+Cis8aGVhZD4KKzxzdHls
ZSB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9InNjcmVlbiI+CisgICAgLmJveCB7CisgICAgICB3aWR0
aDogMTAwcHg7CisgICAgICBoZWlnaHQ6IDEwMHB4OworICAgICAgYmFja2dyb3VuZC1jb2xvcjog
Ymx1ZTsKKyAgICB9CisgICAgCisgICAgLmJveDo6Zmlyc3QtbGV0dGVyIHsKKyAgICAgIGZvbnQt
c2l6ZTogMjRwdDsKKyAgICAgIGNvbG9yOiBibGFjazsKKyAgICAgIC13ZWJraXQtdHJhbnNpdGlv
bjogY29sb3IgMXM7CisgICAgfQorCisgICAgYm9keS5nbyAuYm94OjpmaXJzdC1sZXR0ZXIgewor
ICAgICAgY29sb3I6IHdoaXRlOworICAgIH0KKworPC9zdHlsZT4KKzxzY3JpcHQgIHR5cGU9InRl
eHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiPgorICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikgeworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB9CisK
KyAgICB2YXIgcmVzdWx0ID0gIiI7CisgICAgZnVuY3Rpb24gdHJhbnNpdGlvbkVuZGVkKGV2ZW50
KQorICAgIHsgICAKKyAgICAgICAgaWYgKGV2ZW50LnByb3BlcnR5TmFtZSA9PSAiY29sb3IiKQor
ICAgICAgICAgICByZXN1bHQgKz0gIlBBU1MiOworICAgICAgICBlbHNlCisgICAgICAgICAgIHJl
c3VsdCArPSAiRkFJTCI7CisKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3Vs
dCcpLmlubmVySFRNTCA9IHJlc3VsdDsKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsK
KyAgICB9CisKKyAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lciggJ3dlYmtpdFRyYW5zaXRpb25F
bmQnLCB0cmFuc2l0aW9uRW5kZWQsIGZhbHNlICk7CisKKworICAgIHdpbmRvdy5hZGRFdmVudExp
c3RlbmVyKCJsb2FkIiwgZnVuY3Rpb24gKCkgeworICAgICAgICBkb2N1bWVudC5ib2R5LmNsYXNz
TmFtZSA9ICJnbyI7CisgICAgfSwgZmFsc2UpOworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KyAgPGRpdiBjbGFzcz0iYm94Ij4KKyAgICBMb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldC4KKyAg
PC9kaXY+CisgIDxkaXYgaWQ9InJlc3VsdCI+CisgIDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvZmlyc3QtbGV0dGVyLXRyYW5zaXRp
b24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvZmlyc3QtbGV0dGVyLXRy
YW5zaXRpb24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LmI3MTk4Y2MKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90cmFuc2l0aW9ucy9maXJz
dC1sZXR0ZXItdHJhbnNpdGlvbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw5IEBACitCb3ggT25l
CitCb3ggdHdvCitUcmFuc3Rpb25zIHRlc3QgcmVzdWx0OiAKKworUEFTUyAKK1BBU1MgCitQQVNT
IAorUEFTUyAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvZmlyc3QtbGV0
dGVyLXRyYW5zaXRpb24uaHRtbCBiL0xheW91dFRlc3RzL3RyYW5zaXRpb25zL2ZpcnN0LWxldHRl
ci10cmFuc2l0aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTQw
ZjBiYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RyYW5zaXRpb25zL2ZpcnN0LWxl
dHRlci10cmFuc2l0aW9uLmh0bWwKQEAgLTAsMCArMSw4MyBAQAorPGh0bWw+Cis8aGVhZD4KKzxz
dHlsZSB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9InNjcmVlbiI+CisgICAgLmJveCB7CisgICAgICBw
b3NpdGlvbjogcmVsYXRpdmU7CisgICAgICB3aWR0aDogMTAwcHg7CisgICAgICBoZWlnaHQ6IDEw
MHB4OworICAgICAgbGVmdDogMTAwcHg7CisgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBibHVlOwor
ICAgIH0KKworICAgIC5ib3g6OmZpcnN0LWxldHRlciB7CisgICAgICBmb250LXNpemU6IDI0cHQ7
CisgICAgICBjb2xvcjogYmxhY2s7CisgICAgICAtd2Via2l0LXRyYW5zaXRpb246IGNvbG9yIDFz
OworICAgIH0KKworICAgICNmaXJzdCB7CisgICAgICAtd2Via2l0LXRyYW5zaXRpb246IGxlZnQg
MXM7CisgICAgfQorCisgICAgI3NlY29uZCB7CisgICAgICAtd2Via2l0LXRyYW5zaXRpb246IGNv
bG9yIDFzOworICAgIH0KKworICAgIC5hbmltYXRpbmcgI2ZpcnN0IHsKKyAgICAgIGxlZnQ6IDQw
MHB4OworICAgIH0KKworICAgIC5hbmltYXRpbmcgI3NlY29uZCB7CisgICAgICBjb2xvcjogcHVy
cGxlOworICAgIH0KKworICAgIC5hbmltYXRpbmcgKjo6Zmlyc3QtbGV0dGVyIHsKKyAgICAgIGNv
bG9yOiB3aGl0ZTsKKyAgICB9CisKKworPC9zdHlsZT4KKzxzY3JpcHQgIHR5cGU9InRleHQvamF2
YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiPgorICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikgeworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB9CisKKyAgICB2
YXIgcmVzdWx0ID0gIlRyYW5zdGlvbnMgdGVzdCByZXN1bHQ6IDxicj48YnI+IjsKKyAgICB2YXIg
dHJhbnNpdGlvbnMgPSAwOworICAgIGZ1bmN0aW9uIHRyYW5zaXRpb25FbmRlZChldmVudCkKKyAg
ICB7CisgICAgICAgIGlmICgoZXZlbnQucHJvcGVydHlOYW1lID09ICJjb2xvciIpIHx8IChldmVu
dC5wcm9wZXJ0eU5hbWUgPT0gImxlZnQiKSkKKyAgICAgICAgICAgcmVzdWx0ICs9ICJQQVNTIDxi
cj4iOworICAgICAgICBlbHNlCisgICAgICAgICAgIHJlc3VsdCArPSAiRkFJTCA8YnI+IjsKKwor
ICAgICAgICB0cmFuc2l0aW9ucyA9IHRyYW5zaXRpb25zICsgMTsKKworICAgICAgICBpZiAodHJh
bnNpdGlvbnMgPT0gNCkgeworICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jl
c3VsdCcpLmlubmVySFRNTCA9IHJlc3VsdDsKKyAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90
aWZ5RG9uZSgpOworICAgICAgICB9CisgICAgfQorCisgICAgd2luZG93LmFkZEV2ZW50TGlzdGVu
ZXIoICd3ZWJraXRUcmFuc2l0aW9uRW5kJywgdHJhbnNpdGlvbkVuZGVkLCBmYWxzZSApOworCisg
ICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBmdW5jdGlvbiAoKSB7CisgICAgICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb250YWluZXInKS5jbGFzc05hbWUgPSAnYW5pbWF0
aW5nJzsKKyAgICB9LCBmYWxzZSk7Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBp
ZD0iY29udGFpbmVyIj4KKyAgPGRpdiBpZD0iZmlyc3QiIGNsYXNzPSJib3giPgorICAgICAgQm94
IE9uZQorICA8L2Rpdj4KKyAgPGRpdiBpZD0ic2Vjb25kIiBjbGFzcz0iYm94Ij4KKyAgICAgIEJv
eCB0d28KKyAgPC9kaXY+Cis8L2Rpdj4KKyAgPGRpdiBpZD0icmVzdWx0Ij4KKyAgPC9kaXY+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODBiMzEyZS4uZDkwMDAwNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDUzIEBACisyMDEyLTA1LTAzICBJZ29yIE9saXZlaXJhICA8aWdvci5vQHNp
c2Euc2Ftc3VuZy5jb20+CisKKyAgICAgICAgQXBwbHkgYW5pbWF0aW9ucyBhbmQgdHJhbnNpdGlv
bnMgZm9yIGZpcnN0LWxldHRlciBlbGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD04NTI1MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCBhbmltYXRpb25zIGFuZCB0cmFuc2l0aW9ucyBzdXBwb3J0
IGZvciB0aGUgZmlyc3QtbGV0dGVyIAorICAgICAgICBwc2V1ZG8gZWxlbWVudC4KKyAgICAgICAg
SW5zdGVhZCBvZiBjYWxsIFJlbmRlck9qZWN0Ojpub2RlKCkgaW4gdGhlIGFuaW1hdGlvbnMgY29k
ZSwKKyAgICAgICAgbm93IHdlIG5lZWQgdG8gY2FsbCBSZW5kZXJPYmplY3Q6OmdlbmVyYXRpbmdO
b2RlKCkgYmVjYXVzZQorICAgICAgICBwc2V1ZG8gZWxlbWVudHMgZG9lcyBub3QgaGF2ZSBhIE5v
ZGUgYXNzb2NpYXRlZCB3aXRoIHRoZQorICAgICAgICBSZW5kZXJPYmplY3QuCisKKyAgICAgICAg
SW5pdGlhbCBwYXRjaCBieSBTaW1vbiBGcmFzZXIKKworICAgICAgICBUZXN0czogYW5pbWF0aW9u
cy9maXJzdC1sZXR0ZXItYW5pbWF0aW9uLmh0bWwKKyAgICAgICAgICAgICAgIHRyYW5zaXRpb25z
L2ZpcnN0LWxldHRlci1jb2xvci10cmFuc2l0aW9uLmh0bWwKKyAgICAgICAgICAgICAgIHRyYW5z
aXRpb25zL2ZpcnN0LWxldHRlci10cmFuc2l0aW9uLmh0bWwKKworICAgICAgICAqIHBhZ2UvYW5p
bWF0aW9uL0FuaW1hdGlvbkJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uQmFz
ZTo6dXBkYXRlU3RhdGVNYWNoaW5lKToKKyAgICAgICAgKiBwYWdlL2FuaW1hdGlvbi9BbmltYXRp
b25Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvbkNvbnRyb2xsZXJQ
cml2YXRlOjp1cGRhdGVBbmltYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvbkNv
bnRyb2xsZXJQcml2YXRlOjpwYXVzZUFuaW1hdGlvbkF0VGltZSk6CisgICAgICAgIChXZWJDb3Jl
OjpBbmltYXRpb25Db250cm9sbGVyUHJpdmF0ZTo6cGF1c2VUcmFuc2l0aW9uQXRUaW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvbkNvbnRyb2xsZXI6OmNhbmNlbEFuaW1hdGlvbnMpOgor
ICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uQ29udHJvbGxlcjo6dXBkYXRlQW5pbWF0aW9ucyk6
CisgICAgICAgICogcGFnZS9hbmltYXRpb24vSW1wbGljaXRBbmltYXRpb24uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW1wbGljaXRBbmltYXRpb246OnBhdXNlQW5pbWF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkltcGxpY2l0QW5pbWF0aW9uOjpzZW5kVHJhbnNpdGlvbkV2ZW50KToKKyAgICAg
ICAgKiBwYWdlL2FuaW1hdGlvbi9LZXlmcmFtZUFuaW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpLZXlmcmFtZUFuaW1hdGlvbjo6S2V5ZnJhbWVBbmltYXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6S2V5ZnJhbWVBbmltYXRpb246OnBhdXNlQW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OktleWZyYW1lQW5pbWF0aW9uOjplbmRBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
S2V5ZnJhbWVBbmltYXRpb246OnNlbmRBbmltYXRpb25FdmVudCk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjp1cGRh
dGVGaXJzdExldHRlclN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpjcmVh
dGVGaXJzdExldHRlclJlbmRlcmVyKToKKworICAgICAgICBXZSBuZWVkIHRvIGNyZWF0ZSBhIHRl
bXBvcmFyeSBzdHlsZSBiZWNhdXNlIHdlIGNhbiBub3QgYXBwbHkgdHJhbnNpdGlvbnMKKyAgICAg
ICAgaW4gYW4gZWxlbWVudCB3aXRob3V0IGFuIGluaXRpYWwgc3R5bGUuCisKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVj
dDo6c2V0QW5pbWF0YWJsZVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6
Z2VuZXJhdGluZ05vZGUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlck9iamVjdC5oOgorICAgICAgICAoUmVuZGVyT2JqZWN0KToKKwogMjAxMi0wNS0wMyAg
Q2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgogCiAgICAgICAgIGFjY2Vzc2li
aWxpdHkvbWlzc3BlbGxlZC1hdHRyaWJ1dGVkLXN0cmluZy5odG1sIHRlc3Qgc29tZXRpbWVzIHRo
cm93cyBleGNlcHRpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlv
bi9BbmltYXRpb25CYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1h
dGlvbkJhc2UuY3BwCmluZGV4IDMzZDYzMjYuLmI2NzI3OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuY3BwCkBAIC0xOTEsNyArMTkxLDcgQEAg
dm9pZCBBbmltYXRpb25CYXNlOjp1cGRhdGVTdGF0ZU1hY2hpbmUoQW5pbVN0YXRlSW5wdXQgaW5w
dXQsIGRvdWJsZSBwYXJhbSkKIAogICAgICAgICAgICAgICAgIC8vIFRyaWdnZXIgYSByZW5kZXIg
c28gd2UgY2FuIHN0YXJ0IHRoZSBhbmltYXRpb24KICAgICAgICAgICAgICAgICBpZiAobV9vYmpl
Y3QpCi0gICAgICAgICAgICAgICAgICAgIG1fY29tcEFuaW0tPmFuaW1hdGlvbkNvbnRyb2xsZXIo
KS0+YWRkTm9kZUNoYW5nZVRvRGlzcGF0Y2gobV9vYmplY3QtPm5vZGUoKSk7CisgICAgICAgICAg
ICAgICAgICAgIG1fY29tcEFuaW0tPmFuaW1hdGlvbkNvbnRyb2xsZXIoKS0+YWRkTm9kZUNoYW5n
ZVRvRGlzcGF0Y2gobV9vYmplY3QtPmdlbmVyYXRpbmdOb2RlKCkpOwogICAgICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgICAgICBBU1NFUlQoIXBhdXNlZCgpKTsKICAgICAgICAgICAgICAg
ICAvLyBXZSdyZSB3YWl0aW5nIGZvciB0aGUgc3RhcnQgdGltZXIgdG8gZmlyZSBhbmQgd2UgZ290
IGEgcGF1c2UuIENhbmNlbCB0aGUgdGltZXIsIHBhdXNlIGFuZCB3YWl0CkBAIC0yNTIsNyArMjUy
LDcgQEAgdm9pZCBBbmltYXRpb25CYXNlOjp1cGRhdGVTdGF0ZU1hY2hpbmUoQW5pbVN0YXRlSW5w
dXQgaW5wdXQsIGRvdWJsZSBwYXJhbSkKIAogICAgICAgICAgICAgICAgIC8vIERpc3BhdGNoIHVw
ZGF0ZVN0eWxlSWZOZWVkZWQgc28gd2UgY2FuIHN0YXJ0IHRoZSBhbmltYXRpb24KICAgICAgICAg
ICAgICAgICBpZiAobV9vYmplY3QpCi0gICAgICAgICAgICAgICAgICAgIG1fY29tcEFuaW0tPmFu
aW1hdGlvbkNvbnRyb2xsZXIoKS0+YWRkTm9kZUNoYW5nZVRvRGlzcGF0Y2gobV9vYmplY3QtPm5v
ZGUoKSk7CisgICAgICAgICAgICAgICAgICAgIG1fY29tcEFuaW0tPmFuaW1hdGlvbkNvbnRyb2xs
ZXIoKS0+YWRkTm9kZUNoYW5nZVRvRGlzcGF0Y2gobV9vYmplY3QtPmdlbmVyYXRpbmdOb2RlKCkp
OwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAvLyBXZSBhcmUgcGF1c2lu
ZyB3aGlsZSB3YWl0aW5nIGZvciBhIHN0YXJ0IHJlc3BvbnNlLiBDYW5jZWwgdGhlIGFuaW1hdGlv
biBhbmQgd2FpdC4gV2hlbiAKICAgICAgICAgICAgICAgICAvLyB3ZSB1bnBhdXNlLCB3ZSB3aWxs
IGFjdCBhcyB0aG91Z2ggdGhlIHN0YXJ0IHRpbWVyIGp1c3QgZmlyZWQKQEAgLTI5OCw3ICsyOTgs
NyBAQCB2b2lkIEFuaW1hdGlvbkJhc2U6OnVwZGF0ZVN0YXRlTWFjaGluZShBbmltU3RhdGVJbnB1
dCBpbnB1dCwgZG91YmxlIHBhcmFtKQogICAgICAgICAgICAgICAgICAgICAgICAgcmVzdW1lT3Zl
cnJpZGRlbkFuaW1hdGlvbnMoKTsKIAogICAgICAgICAgICAgICAgICAgICAvLyBGaXJlIG9mZiBh
bm90aGVyIHN0eWxlIGNoYW5nZSBzbyB3ZSBjYW4gc2V0IHRoZSBmaW5hbCB2YWx1ZQotICAgICAg
ICAgICAgICAgICAgICBtX2NvbXBBbmltLT5hbmltYXRpb25Db250cm9sbGVyKCktPmFkZE5vZGVD
aGFuZ2VUb0Rpc3BhdGNoKG1fb2JqZWN0LT5ub2RlKCkpOworICAgICAgICAgICAgICAgICAgICBt
X2NvbXBBbmltLT5hbmltYXRpb25Db250cm9sbGVyKCktPmFkZE5vZGVDaGFuZ2VUb0Rpc3BhdGNo
KG1fb2JqZWN0LT5nZW5lcmF0aW5nTm9kZSgpKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIC8vIFdlIGFyZSBwYXVzaW5nIHdoaWxlIHJ1
bm5pbmcuIENhbmNlbCB0aGUgYW5pbWF0aW9uIGFuZCB3YWl0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkNvbnRyb2xsZXIuY3BwCmluZGV4IDBkYzNl
YTcuLjZmODMzZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0Fu
aW1hdGlvbkNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9u
L0FuaW1hdGlvbkNvbnRyb2xsZXIuY3BwCkBAIC05OSw3ICs5OSw3IEBAIGRvdWJsZSBBbmltYXRp
b25Db250cm9sbGVyUHJpdmF0ZTo6dXBkYXRlQW5pbWF0aW9ucyhTZXRDaGFuZ2VkIGNhbGxTZXRD
aGFuZ2VkLyoKICAgICAgICAgICAgICAgICB0aW1lVG9OZXh0U2VydmljZSA9IHQ7CiAgICAgICAg
ICAgICBpZiAoIXRpbWVUb05leHRTZXJ2aWNlKSB7CiAgICAgICAgICAgICAgICAgaWYgKGNhbGxT
ZXRDaGFuZ2VkID09IENhbGxTZXRDaGFuZ2VkKSB7Ci0gICAgICAgICAgICAgICAgICAgIE5vZGUq
IG5vZGUgPSBpdC0+Zmlyc3QtPm5vZGUoKTsKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogbm9k
ZSA9IGl0LT5maXJzdC0+Z2VuZXJhdGluZ05vZGUoKTsKICAgICAgICAgICAgICAgICAgICAgQVNT
RVJUKCFub2RlIHx8IChub2RlLT5kb2N1bWVudCgpICYmICFub2RlLT5kb2N1bWVudCgpLT5pblBh
Z2VDYWNoZSgpKSk7CiAgICAgICAgICAgICAgICAgICAgIG5vZGUtPnNldE5lZWRzU3R5bGVSZWNh
bGMoU3ludGhldGljU3R5bGVDaGFuZ2UpOwogICAgICAgICAgICAgICAgICAgICBjYWxsZWRTZXRD
aGFuZ2VkID0gdHJ1ZTsKQEAgLTMyNSw3ICszMjUsNyBAQCBib29sIEFuaW1hdGlvbkNvbnRyb2xs
ZXJQcml2YXRlOjpwYXVzZUFuaW1hdGlvbkF0VGltZShSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBj
bwogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoY29tcEFuaW0tPnBhdXNlQW5pbWF0
aW9uQXRUaW1lKG5hbWUsIHQpKSB7Ci0gICAgICAgIHJlbmRlcmVyLT5ub2RlKCktPnNldE5lZWRz
U3R5bGVSZWNhbGMoU3ludGhldGljU3R5bGVDaGFuZ2UpOworICAgICAgICByZW5kZXJlci0+Z2Vu
ZXJhdGluZ05vZGUoKS0+c2V0TmVlZHNTdHlsZVJlY2FsYyhTeW50aGV0aWNTdHlsZUNoYW5nZSk7
CiAgICAgICAgIHN0YXJ0VXBkYXRlU3R5bGVJZk5lZWRlZERpc3BhdGNoZXIoKTsKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMzQzLDcgKzM0Myw3IEBAIGJvb2wgQW5pbWF0aW9uQ29u
dHJvbGxlclByaXZhdGU6OnBhdXNlVHJhbnNpdGlvbkF0VGltZShSZW5kZXJPYmplY3QqIHJlbmRl
cmVyLCBjCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChjb21wQW5pbS0+cGF1c2VU
cmFuc2l0aW9uQXRUaW1lKGNzc1Byb3BlcnR5SUQocHJvcGVydHkpLCB0KSkgewotICAgICAgICBy
ZW5kZXJlci0+bm9kZSgpLT5zZXROZWVkc1N0eWxlUmVjYWxjKFN5bnRoZXRpY1N0eWxlQ2hhbmdl
KTsKKyAgICAgICAgcmVuZGVyZXItPmdlbmVyYXRpbmdOb2RlKCktPnNldE5lZWRzU3R5bGVSZWNh
bGMoU3ludGhldGljU3R5bGVDaGFuZ2UpOwogICAgICAgICBzdGFydFVwZGF0ZVN0eWxlSWZOZWVk
ZWREaXNwYXRjaGVyKCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTUwNyw3ICs1
MDcsNyBAQCB2b2lkIEFuaW1hdGlvbkNvbnRyb2xsZXI6OmNhbmNlbEFuaW1hdGlvbnMoUmVuZGVy
T2JqZWN0KiByZW5kZXJlcikKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1fZGF0YS0+Y2xl
YXIocmVuZGVyZXIpKSB7Ci0gICAgICAgIE5vZGUqIG5vZGUgPSByZW5kZXJlci0+bm9kZSgpOwor
ICAgICAgICBOb2RlKiBub2RlID0gcmVuZGVyZXItPmdlbmVyYXRpbmdOb2RlKCk7CiAgICAgICAg
IEFTU0VSVCghbm9kZSB8fCAobm9kZS0+ZG9jdW1lbnQoKSAmJiAhbm9kZS0+ZG9jdW1lbnQoKS0+
aW5QYWdlQ2FjaGUoKSkpOwogICAgICAgICBub2RlLT5zZXROZWVkc1N0eWxlUmVjYWxjKFN5bnRo
ZXRpY1N0eWxlQ2hhbmdlKTsKICAgICB9CkBAIC01MzIsNyArNTMyLDYgQEAgUGFzc1JlZlB0cjxS
ZW5kZXJTdHlsZT4gQW5pbWF0aW9uQ29udHJvbGxlcjo6dXBkYXRlQW5pbWF0aW9ucyhSZW5kZXJP
YmplY3QqIHJlbmQKICAgICAvLyBhZ2FpbnN0IHRoZSBhbmltYXRpb25zIGluIHRoZSBzdHlsZSBh
bmQgbWFrZSBzdXJlIHdlJ3JlIGluIHN5bmMuICBJZiBkZXN0aW5hdGlvbiB2YWx1ZXMKICAgICAv
LyBoYXZlIGNoYW5nZWQsIHdlIHJlc2V0IHRoZSBhbmltYXRpb24uICBXZSB0aGVuIGRvIGEgYmxl
bmQgdG8gZ2V0IG5ldyB2YWx1ZXMgYW5kIHdlIHJldHVybgogICAgIC8vIGEgbmV3IHN0eWxlLgot
ICAgIEFTU0VSVChyZW5kZXJlci0+bm9kZSgpKTsgLy8gRklYTUU6IFdlIGRvIG5vdCBhbmltYXRl
IGdlbmVyYXRlZCBjb250ZW50IHlldC4KIAogICAgIFJlZlB0cjxDb21wb3NpdGVBbmltYXRpb24+
IHJlbmRlcmVyQW5pbWF0aW9ucyA9IG1fZGF0YS0+YWNjZXNzQ29tcG9zaXRlQW5pbWF0aW9uKHJl
bmRlcmVyKTsKICAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IGJsZW5kZWRTdHlsZSA9IHJlbmRlcmVy
QW5pbWF0aW9ucy0+YW5pbWF0ZShyZW5kZXJlciwgb2xkU3R5bGUsIG5ld1N0eWxlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0ltcGxpY2l0QW5pbWF0aW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0ltcGxpY2l0QW5pbWF0aW9uLmNwcApp
bmRleCBmNzFhMTUzLi5kYjM3YjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2Fu
aW1hdGlvbi9JbXBsaWNpdEFuaW1hdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9h
bmltYXRpb24vSW1wbGljaXRBbmltYXRpb24uY3BwCkBAIC0xMjksNyArMTI5LDcgQEAgdm9pZCBJ
bXBsaWNpdEFuaW1hdGlvbjo6cGF1c2VBbmltYXRpb24oZG91YmxlIHRpbWVPZmZzZXQpCiAjZW5k
aWYKICAgICAvLyBSZXN0b3JlIHRoZSBvcmlnaW5hbCAodW5hbmltYXRlZCkgc3R5bGUKICAgICBp
ZiAoIXBhdXNlZCgpKQotICAgICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKG1fb2JqZWN0LT5ub2Rl
KCkpOworICAgICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKG1fb2JqZWN0LT5nZW5lcmF0aW5nTm9k
ZSgpKTsKIH0KIAogdm9pZCBJbXBsaWNpdEFuaW1hdGlvbjo6ZW5kQW5pbWF0aW9uKCkKQEAgLTE2
NSw4ICsxNjUsOCBAQCBib29sIEltcGxpY2l0QW5pbWF0aW9uOjpzZW5kVHJhbnNpdGlvbkV2ZW50
KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBkb3VibAogICAgICAgICAgICAgICAgIAog
ICAgICAgICAgICAgLy8gRGlzcGF0Y2ggdGhlIGV2ZW50CiAgICAgICAgICAgICBSZWZQdHI8RWxl
bWVudD4gZWxlbWVudCA9IDA7Ci0gICAgICAgICAgICBpZiAobV9vYmplY3QtPm5vZGUoKSAmJiBt
X29iamVjdC0+bm9kZSgpLT5pc0VsZW1lbnROb2RlKCkpCi0gICAgICAgICAgICAgICAgZWxlbWVu
dCA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihtX29iamVjdC0+bm9kZSgpKTsKKyAgICAgICAgICAg
IGlmIChtX29iamVjdC0+Z2VuZXJhdGluZ05vZGUoKSAmJiBtX29iamVjdC0+Z2VuZXJhdGluZ05v
ZGUoKS0+aXNFbGVtZW50Tm9kZSgpKQorICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBzdGF0aWNf
Y2FzdDxFbGVtZW50Kj4obV9vYmplY3QtPmdlbmVyYXRpbmdOb2RlKCkpOwogCiAgICAgICAgICAg
ICBBU1NFUlQoIWVsZW1lbnQgfHwgKGVsZW1lbnQtPmRvY3VtZW50KCkgJiYgIWVsZW1lbnQtPmRv
Y3VtZW50KCktPmluUGFnZUNhY2hlKCkpKTsKICAgICAgICAgICAgIGlmICghZWxlbWVudCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0tleWZyYW1lQW5pbWF0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0tleWZyYW1lQW5pbWF0aW9uLmNw
cAppbmRleCBkYTI5MTVkLi4xMDQwY2FmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L2FuaW1hdGlvbi9LZXlmcmFtZUFuaW1hdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9hbmltYXRpb24vS2V5ZnJhbWVBbmltYXRpb24uY3BwCkBAIC01MSw4ICs1MSw4IEBAIEtleWZy
YW1lQW5pbWF0aW9uOjpLZXlmcmFtZUFuaW1hdGlvbihjb25zdCBBbmltYXRpb24qIGFuaW1hdGlv
biwgUmVuZGVyT2JqZWN0KiByCiAgICAgLCBtX3VuYW5pbWF0ZWRTdHlsZSh1bmFuaW1hdGVkU3R5
bGUpCiB7CiAgICAgLy8gR2V0IHRoZSBrZXlmcmFtZSBSZW5kZXJTdHlsZXMKLSAgICBpZiAobV9v
YmplY3QgJiYgbV9vYmplY3QtPm5vZGUoKSAmJiBtX29iamVjdC0+bm9kZSgpLT5pc0VsZW1lbnRO
b2RlKCkpCi0gICAgICAgIG1fb2JqZWN0LT5kb2N1bWVudCgpLT5zdHlsZVJlc29sdmVyKCktPmtl
eWZyYW1lU3R5bGVzRm9yQW5pbWF0aW9uKHN0YXRpY19jYXN0PEVsZW1lbnQqPihtX29iamVjdC0+
bm9kZSgpKSwgdW5hbmltYXRlZFN0eWxlLCBtX2tleWZyYW1lcyk7CisgICAgaWYgKG1fb2JqZWN0
ICYmIG1fb2JqZWN0LT5nZW5lcmF0aW5nTm9kZSgpICYmIG1fb2JqZWN0LT5nZW5lcmF0aW5nTm9k
ZSgpLT5pc0VsZW1lbnROb2RlKCkpCisgICAgICAgIG1fb2JqZWN0LT5kb2N1bWVudCgpLT5zdHls
ZVJlc29sdmVyKCktPmtleWZyYW1lU3R5bGVzRm9yQW5pbWF0aW9uKHN0YXRpY19jYXN0PEVsZW1l
bnQqPihtX29iamVjdC0+Z2VuZXJhdGluZ05vZGUoKSksIHVuYW5pbWF0ZWRTdHlsZSwgbV9rZXlm
cmFtZXMpOwogCiAgICAgLy8gVXBkYXRlIHRoZSBtX3RyYW5zZm9ybUZ1bmN0aW9uTGlzdFZhbGlk
IGZsYWcgYmFzZWQgb24gd2hldGhlciB0aGUgZnVuY3Rpb24gbGlzdHMgaW4gdGhlIGtleWZyYW1l
cyBtYXRjaC4KICAgICB2YWxpZGF0ZVRyYW5zZm9ybUZ1bmN0aW9uTGlzdCgpOwpAQCAtMjU1LDcg
KzI1NSw3IEBAIHZvaWQgS2V5ZnJhbWVBbmltYXRpb246OnBhdXNlQW5pbWF0aW9uKGRvdWJsZSB0
aW1lT2Zmc2V0KQogI2VuZGlmCiAgICAgLy8gUmVzdG9yZSB0aGUgb3JpZ2luYWwgKHVuYW5pbWF0
ZWQpIHN0eWxlCiAgICAgaWYgKCFwYXVzZWQoKSkKLSAgICAgICAgc2V0TmVlZHNTdHlsZVJlY2Fs
YyhtX29iamVjdC0+bm9kZSgpKTsKKyAgICAgICAgc2V0TmVlZHNTdHlsZVJlY2FsYyhtX29iamVj
dC0+Z2VuZXJhdGluZ05vZGUoKSk7CiB9CiAKIHZvaWQgS2V5ZnJhbWVBbmltYXRpb246OmVuZEFu
aW1hdGlvbigpCkBAIC0yNjksNyArMjY5LDcgQEAgdm9pZCBLZXlmcmFtZUFuaW1hdGlvbjo6ZW5k
QW5pbWF0aW9uKCkKICNlbmRpZgogICAgIC8vIFJlc3RvcmUgdGhlIG9yaWdpbmFsICh1bmFuaW1h
dGVkKSBzdHlsZQogICAgIGlmICghcGF1c2VkKCkpCi0gICAgICAgIHNldE5lZWRzU3R5bGVSZWNh
bGMobV9vYmplY3QtPm5vZGUoKSk7CisgICAgICAgIHNldE5lZWRzU3R5bGVSZWNhbGMobV9vYmpl
Y3QtPmdlbmVyYXRpbmdOb2RlKCkpOwogfQogCiBib29sIEtleWZyYW1lQW5pbWF0aW9uOjpzaG91
bGRTZW5kRXZlbnRGb3JMaXN0ZW5lcihEb2N1bWVudDo6TGlzdGVuZXJUeXBlIGxpc3RlbmVyVHlw
ZSkgY29uc3QKQEAgLTMxNCw4ICszMTQsOCBAQCBib29sIEtleWZyYW1lQW5pbWF0aW9uOjpzZW5k
QW5pbWF0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGRvdWJsZQogICAg
IGlmIChzaG91bGRTZW5kRXZlbnRGb3JMaXN0ZW5lcihsaXN0ZW5lclR5cGUpKSB7CiAgICAgICAg
IC8vIERpc3BhdGNoIHRoZSBldmVudAogICAgICAgICBSZWZQdHI8RWxlbWVudD4gZWxlbWVudDsK
LSAgICAgICAgaWYgKG1fb2JqZWN0LT5ub2RlKCkgJiYgbV9vYmplY3QtPm5vZGUoKS0+aXNFbGVt
ZW50Tm9kZSgpKQotICAgICAgICAgICAgZWxlbWVudCA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPiht
X29iamVjdC0+bm9kZSgpKTsKKyAgICAgICAgaWYgKG1fb2JqZWN0LT5nZW5lcmF0aW5nTm9kZSgp
ICYmIG1fb2JqZWN0LT5nZW5lcmF0aW5nTm9kZSgpLT5pc0VsZW1lbnROb2RlKCkpCisgICAgICAg
ICAgICBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG1fb2JqZWN0LT5nZW5lcmF0aW5n
Tm9kZSgpKTsKIAogICAgICAgICBBU1NFUlQoIWVsZW1lbnQgfHwgKGVsZW1lbnQtPmRvY3VtZW50
KCkgJiYgIWVsZW1lbnQtPmRvY3VtZW50KCktPmluUGFnZUNhY2hlKCkpKTsKICAgICAgICAgaWYg
KCFlbGVtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJs
b2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKaW5kZXgg
YjhmNGJkMy4uMjZiOGI4MCAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2su
Y3BwCkBAIC01OTA2LDE3ICs1OTA2LDE3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OnVwZGF0ZUZpcnN0
TGV0dGVyU3R5bGUoUmVuZGVyT2JqZWN0KiBmaXJzdExldHRlckJsb2NrLCBSZW5kZXJPCiB7CiAg
ICAgUmVuZGVyT2JqZWN0KiBmaXJzdExldHRlciA9IGN1cnJlbnRDaGlsZC0+cGFyZW50KCk7CiAg
ICAgUmVuZGVyT2JqZWN0KiBmaXJzdExldHRlckNvbnRhaW5lciA9IGZpcnN0TGV0dGVyLT5wYXJl
bnQoKTsKLSAgICBSZW5kZXJTdHlsZSogcHNldWRvU3R5bGUgPSBzdHlsZUZvckZpcnN0TGV0dGVy
KGZpcnN0TGV0dGVyQmxvY2ssIGZpcnN0TGV0dGVyQ29udGFpbmVyKTsKKyAgICBSZWZQdHI8UmVu
ZGVyU3R5bGU+IHBzZXVkb1N0eWxlID0gYW5pbWF0aW9uKCktPnVwZGF0ZUFuaW1hdGlvbnMoZmly
c3RMZXR0ZXIsIHN0eWxlRm9yRmlyc3RMZXR0ZXIoZmlyc3RMZXR0ZXJCbG9jaywgZmlyc3RMZXR0
ZXJDb250YWluZXIpKTsKICAgICBBU1NFUlQoZmlyc3RMZXR0ZXItPmlzRmxvYXRpbmcoKSB8fCBm
aXJzdExldHRlci0+aXNJbmxpbmUoKSk7CiAKLSAgICBpZiAoTm9kZTo6ZGlmZihmaXJzdExldHRl
ci0+c3R5bGUoKSwgcHNldWRvU3R5bGUsIGRvY3VtZW50KCkpID09IE5vZGU6OkRldGFjaCkgewor
ICAgIGlmIChOb2RlOjpkaWZmKGZpcnN0TGV0dGVyLT5zdHlsZSgpLCBwc2V1ZG9TdHlsZS5nZXQo
KSwgZG9jdW1lbnQoKSkgPT0gTm9kZTo6RGV0YWNoKSB7CiAgICAgICAgIC8vIFRoZSBmaXJzdC1s
ZXR0ZXIgcmVuZGVyZXIgbmVlZHMgdG8gYmUgcmVwbGFjZWQuIENyZWF0ZSBhIG5ldyByZW5kZXJl
ciBvZiB0aGUgcmlnaHQgdHlwZS4KICAgICAgICAgUmVuZGVyT2JqZWN0KiBuZXdGaXJzdExldHRl
cjsKICAgICAgICAgaWYgKHBzZXVkb1N0eWxlLT5kaXNwbGF5KCkgPT0gSU5MSU5FKQogICAgICAg
ICAgICAgbmV3Rmlyc3RMZXR0ZXIgPSBuZXcgKHJlbmRlckFyZW5hKCkpIFJlbmRlcklubGluZShk
b2N1bWVudCgpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbmV3Rmlyc3RMZXR0ZXIgPSBu
ZXcgKHJlbmRlckFyZW5hKCkpIFJlbmRlckJsb2NrKGRvY3VtZW50KCkpOwotICAgICAgICBuZXdG
aXJzdExldHRlci0+c2V0U3R5bGUocHNldWRvU3R5bGUpOworICAgICAgICBuZXdGaXJzdExldHRl
ci0+c2V0U3R5bGUocHNldWRvU3R5bGUuZ2V0KCkpOwogCiAgICAgICAgIC8vIE1vdmUgdGhlIGZp
cnN0IGxldHRlciBpbnRvIHRoZSBuZXcgcmVuZGVyZXIuCiAgICAgICAgIExheW91dFN0YXRlRGlz
YWJsZXIgbGF5b3V0U3RhdGVEaXNhYmxlcih2aWV3KCkpOwpAQCAtNTk0MiwxMSArNTk0MiwxMSBA
QCB2b2lkIFJlbmRlckJsb2NrOjp1cGRhdGVGaXJzdExldHRlclN0eWxlKFJlbmRlck9iamVjdCog
Zmlyc3RMZXR0ZXJCbG9jaywgUmVuZGVyTwogICAgICAgICBmaXJzdExldHRlciA9IG5ld0ZpcnN0
TGV0dGVyOwogICAgICAgICBmaXJzdExldHRlckNvbnRhaW5lci0+YWRkQ2hpbGQoZmlyc3RMZXR0
ZXIsIG5leHRTaWJsaW5nKTsKICAgICB9IGVsc2UKLSAgICAgICAgZmlyc3RMZXR0ZXItPnNldFN0
eWxlKHBzZXVkb1N0eWxlKTsKKyAgICAgICAgZmlyc3RMZXR0ZXItPnNldFN0eWxlKHBzZXVkb1N0
eWxlLmdldCgpKTsKIAogICAgIGZvciAoUmVuZGVyT2JqZWN0KiBnZW5DaGlsZCA9IGZpcnN0TGV0
dGVyLT5maXJzdENoaWxkKCk7IGdlbkNoaWxkOyBnZW5DaGlsZCA9IGdlbkNoaWxkLT5uZXh0U2li
bGluZygpKSB7CiAgICAgICAgIGlmIChnZW5DaGlsZC0+aXNUZXh0KCkpCi0gICAgICAgICAgICBn
ZW5DaGlsZC0+c2V0U3R5bGUocHNldWRvU3R5bGUpOworICAgICAgICAgICAgZ2VuQ2hpbGQtPnNl
dFN0eWxlKHBzZXVkb1N0eWxlLmdldCgpKTsKICAgICB9CiB9CiAKQEAgLTU5NTksOCArNTk1OSwx
MyBAQCB2b2lkIFJlbmRlckJsb2NrOjpjcmVhdGVGaXJzdExldHRlclJlbmRlcmVyKFJlbmRlck9i
amVjdCogZmlyc3RMZXR0ZXJCbG9jaywgUmVuZAogICAgICAgICBmaXJzdExldHRlciA9IG5ldyAo
cmVuZGVyQXJlbmEoKSkgUmVuZGVySW5saW5lKGRvY3VtZW50KCkpOwogICAgIGVsc2UKICAgICAg
ICAgZmlyc3RMZXR0ZXIgPSBuZXcgKHJlbmRlckFyZW5hKCkpIFJlbmRlckJsb2NrKGRvY3VtZW50
KCkpOwotICAgIGZpcnN0TGV0dGVyLT5zZXRTdHlsZShwc2V1ZG9TdHlsZSk7CisKKyAgICBSZWZQ
dHI8UmVuZGVyU3R5bGU+IHRlbXBvcmFyeVN0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZSgpOwor
ICAgIHRlbXBvcmFyeVN0eWxlLT5pbmhlcml0RnJvbShmaXJzdExldHRlckJsb2NrLT5zdHlsZSgp
KTsKKyAgICBmaXJzdExldHRlci0+c2V0U3R5bGUodGVtcG9yYXJ5U3R5bGUpOyAgCiAgICAgZmly
c3RMZXR0ZXJDb250YWluZXItPmFkZENoaWxkKGZpcnN0TGV0dGVyLCBjdXJyZW50Q2hpbGQpOwor
ICAgIAorICAgIGZpcnN0TGV0dGVyLT5zZXRBbmltYXRhYmxlU3R5bGUocHNldWRvU3R5bGUsIHRy
dWUpOwogCiAgICAgUmVuZGVyVGV4dCogdGV4dE9iaiA9IHRvUmVuZGVyVGV4dChjdXJyZW50Q2hp
bGQpOwogCkBAIC02MDA4LDcgKzYwMTMsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjpjcmVhdGVGaXJz
dExldHRlclJlbmRlcmVyKFJlbmRlck9iamVjdCogZmlyc3RMZXR0ZXJCbG9jaywgUmVuZAogICAg
ICAgICAvLyBjb25zdHJ1Y3QgdGV4dCBmcmFnbWVudCBmb3IgdGhlIGZpcnN0IGxldHRlcgogICAg
ICAgICBSZW5kZXJUZXh0RnJhZ21lbnQqIGxldHRlciA9IAogICAgICAgICAgICAgbmV3IChyZW5k
ZXJBcmVuYSgpKSBSZW5kZXJUZXh0RnJhZ21lbnQocmVtYWluaW5nVGV4dC0+bm9kZSgpID8gcmVt
YWluaW5nVGV4dC0+bm9kZSgpIDogcmVtYWluaW5nVGV4dC0+ZG9jdW1lbnQoKSwgb2xkVGV4dC5n
ZXQoKSwgMCwgbGVuZ3RoKTsKLSAgICAgICAgbGV0dGVyLT5zZXRTdHlsZShwc2V1ZG9TdHlsZSk7
CisgICAgICAgIGxldHRlci0+c2V0U3R5bGUoZmlyc3RMZXR0ZXItPnN0eWxlKCkpOwogICAgICAg
ICBmaXJzdExldHRlci0+YWRkQ2hpbGQobGV0dGVyKTsKIAogICAgICAgICB0ZXh0T2JqLT5kZXN0
cm95KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCmluZGV4IGM0
OTJhMGMuLmIwN2ExNDMgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3Qu
Y3BwCkBAIC0xNjc1LDkgKzE2NzUsOSBAQCB2b2lkIFJlbmRlck9iamVjdDo6aGFuZGxlRHluYW1p
Y0Zsb2F0UG9zaXRpb25DaGFuZ2UoKQogICAgIH0KIH0KIAotdm9pZCBSZW5kZXJPYmplY3Q6OnNl
dEFuaW1hdGFibGVTdHlsZShQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK3ZvaWQgUmVu
ZGVyT2JqZWN0OjpzZXRBbmltYXRhYmxlU3R5bGUoUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gc3R5
bGUsIGJvb2wgaXNHZW5lcmF0ZWRDb250ZW50KQogewotICAgIGlmICghaXNUZXh0KCkgJiYgc3R5
bGUpCisgICAgaWYgKCghaXNUZXh0KCkgfHwgaXNHZW5lcmF0ZWRDb250ZW50KSAmJiBzdHlsZSkK
ICAgICAgICAgc2V0U3R5bGUoYW5pbWF0aW9uKCktPnVwZGF0ZUFuaW1hdGlvbnModGhpcywgc3R5
bGUuZ2V0KCkpKTsKICAgICBlbHNlCiAgICAgICAgIHNldFN0eWxlKHN0eWxlKTsKQEAgLTIxNzMs
NiArMjE3MywxOSBAQCBib29sIFJlbmRlck9iamVjdDo6aXNSb290ZWQoUmVuZGVyVmlldyoqIHZp
ZXcpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK05vZGUqIFJlbmRlck9iamVjdDo6Z2VuZXJhdGlu
Z05vZGUoKSBjb25zdAoreworICAgIE5vZGUqIG5vZGUgPSBtX25vZGUgPT0gZG9jdW1lbnQoKSA/
IDAgOiBtX25vZGU7CisgICAgaWYgKG5vZGUpCisgICAgICAgIHJldHVybiBub2RlOworCisgICAg
Zm9yIChSZW5kZXJPYmplY3QqIG9iamVjdCA9IHBhcmVudCgpOyBvYmplY3Q7IG9iamVjdCA9IG9i
amVjdC0+cGFyZW50KCkpIHsKKyAgICAgICAgaWYgKE5vZGUqIG5vZGUgPSAob2JqZWN0LT5ub2Rl
KCkgPT0gb2JqZWN0LT5kb2N1bWVudCgpID8gMCA6IG9iamVjdC0+bm9kZSgpKSkKKyAgICAgICAg
ICAgIHJldHVybiBub2RlOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKwogUmVuZGVyT2JqZWN0
KiBSZW5kZXJPYmplY3Q6OnJlbmRlcmVyRm9yUm9vdEJhY2tncm91bmQoKQogewogICAgIEFTU0VS
VChpc1Jvb3QoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
T2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKaW5kZXgg
Zjg4MWUzZS4uNzJiYTYyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3Qu
aApAQCAtNTY1LDcgKzU2NSw4IEBAIHB1YmxpYzoKICAgICAvLyBSZXR1cm5zIHRoZSBzdHlsZWQg
bm9kZSB0aGF0IGNhdXNlZCB0aGUgZ2VuZXJhdGlvbiBvZiB0aGlzIHJlbmRlcmVyLgogICAgIC8v
IFRoaXMgaXMgdGhlIHNhbWUgYXMgbm9kZSgpIGV4Y2VwdCBmb3IgcmVuZGVyZXJzIG9mIDpiZWZv
cmUgYW5kIDphZnRlcgogICAgIC8vIHBzZXVkbyBlbGVtZW50cyBmb3Igd2hpY2ggdGhlaXIgcGFy
ZW50IG5vZGUgaXMgcmV0dXJuZWQuCi0gICAgTm9kZSogZ2VuZXJhdGluZ05vZGUoKSBjb25zdCB7
IHJldHVybiBtX25vZGUgPT0gZG9jdW1lbnQoKSA/IDAgOiBtX25vZGU7IH0KKyAgICBOb2RlKiBn
ZW5lcmF0aW5nTm9kZSgpIGNvbnN0OworCiAgICAgdm9pZCBzZXROb2RlKE5vZGUqIG5vZGUpIHsg
bV9ub2RlID0gbm9kZTsgfQogCiAgICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3QgeyByZXR1
cm4gbV9ub2RlLT5kb2N1bWVudCgpOyB9CkBAIC02NDcsOSArNjQ4LDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBkaXJ0eUxpbmVzRnJvbUNoYW5nZWRDaGlsZChSZW5kZXJPYmplY3QqKTsK
IAogICAgIC8vIENhbGxlZCB0byB1cGRhdGUgYSBzdHlsZSB0aGF0IGlzIGFsbG93ZWQgdG8gdHJp
Z2dlciBhbmltYXRpb25zLgotICAgIC8vIEZJWE1FOiBSaWdodCBub3cgdGhpcyB3aWxsIHR5cGlj
YWxseSBiZSBjYWxsZWQgb25seSB3aGVuIHVwZGF0aW5nIGhhcHBlbnMgZnJvbSB0aGUgRE9NIG9u
IGV4cGxpY2l0IGVsZW1lbnRzLgotICAgIC8vIFdlIGRvbid0IHlldCBoYW5kbGUgZ2VuZXJhdGVk
IGNvbnRlbnQgYW5pbWF0aW9uIHN1Y2ggYXMgZmlyc3QtbGV0dGVyIG9yIGJlZm9yZS9hZnRlciAo
d2UnbGwgd29ycnkgYWJvdXQgdGhpcyBsYXRlcikuCi0gICAgdm9pZCBzZXRBbmltYXRhYmxlU3R5
bGUoUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4pOworICAgIHZvaWQgc2V0QW5pbWF0YWJsZVN0eWxl
KFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+LCBib29sIGlzR2VuZXJhdGVkQ29udGVudCA9IGZhbHNl
KTsKIAogICAgIC8vIFNldCB0aGUgc3R5bGUgb2YgdGhlIG9iamVjdCBhbmQgdXBkYXRlIHRoZSBz
dGF0ZSBvZiB0aGUgb2JqZWN0IGFjY29yZGluZ2x5LgogICAgIHZpcnR1YWwgdm9pZCBzZXRTdHls
ZShQYXNzUmVmUHRyPFJlbmRlclN0eWxlPik7Ci0tIAoxLjcuNS40Cgo=
</data>
<flag name="review"
          id="145920"
          type_id="1"
          status="-"
          setter="simon.fraser"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>144960</attachid>
            <date>2012-05-30 17:52:43 -0700</date>
            <delta_ts>2012-06-01 12:39:51 -0700</delta_ts>
            <desc>Patch V5.</desc>
            <filename>0001-Apply-animations-and-transitions-for-first-letter-el.patch</filename>
            <type>text/plain</type>
            <size>30047</size>
            <attacher name="Igor Trindade Oliveira">igor.oliveira</attacher>
            
              <data encoding="base64">RnJvbSA4ODAyYjRkZTE4ZjgwZDZkOTE2YjBmMWFhMTFlMjg3ZjhhMzkyM2RhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBJZ29yIE9saXZlaXJhIDxpZ29yLm9Ac2lzYS5zYW1zdW5nLmNv
bT4KRGF0ZTogV2VkLCAzMCBNYXkgMjAxMiAxNzozNzo1OCAtMDcwMApTdWJqZWN0OiBbUEFUQ0hd
IEFwcGx5IGFuaW1hdGlvbnMgYW5kIHRyYW5zaXRpb25zIGZvciBmaXJzdC1sZXR0ZXIgZWxlbWVu
dAoKLS0tCiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8ICAgMTggKysrKwogLi4uL2FuaW1hdGlvbnMvZmlyc3QtbGV0dGVyLWFuaW1hdGlvbi1leHBl
Y3RlZC50eHQgfCAgICA2ICsrCiBMYXlvdXRUZXN0cy9hbmltYXRpb25zL2ZpcnN0LWxldHRlci1h
bmltYXRpb24uaHRtbCB8ICAgNzAgKysrKysrKysrKysrKysrCiAuLi4vZmlyc3QtbGV0dGVyLXBs
YXktc3RhdGUtZXhwZWN0ZWQudHh0ICAgICAgICAgICB8ICAgIDYgKysKIC4uLi9hbmltYXRpb25z
L2ZpcnN0LWxldHRlci1wbGF5LXN0YXRlLmh0bWwgICAgICAgIHwgICA4OSArKysrKysrKysrKysr
KysrKysrKwogLi4uL2ZpcnN0LWxldHRlci1jb2xvci10cmFuc2l0aW9uLWV4cGVjdGVkLnR4dCAg
ICAgfCAgICAyICsKIC4uLi90cmFuc2l0aW9ucy9maXJzdC1sZXR0ZXItY29sb3ItdHJhbnNpdGlv
bi5odG1sIHwgICA1NiArKysrKysrKysrKysKIC4uLi9maXJzdC1sZXR0ZXItdHJhbnNpdGlvbi1l
eHBlY3RlZC50eHQgICAgICAgICAgIHwgICAxMCArKysKIC4uLi90cmFuc2l0aW9ucy9maXJzdC1s
ZXR0ZXItdHJhbnNpdGlvbi5odG1sICAgICAgIHwgICA4NSArKysrKysrKysrKysrKysrKysrCiBT
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNDcg
KysrKysrKysrKysKIFNvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJhc2Uu
Y3BwICAgIHwgICAgNiArLQogLi4uL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQ29u
dHJvbGxlci5jcHAgfCAgICA5ICstCiAuLi4vV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9JbXBsaWNp
dEFuaW1hdGlvbi5jcHAgICB8ICAgIDYgKy0KIC4uLi9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0tl
eWZyYW1lQW5pbWF0aW9uLmNwcCAgIHwgICAxMiArLS0KIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9jay5jcHAgICAgICAgICAgIHwgICAxOSArKystLQogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgICAgICAgICAgfCAgIDE3ICsrKy0KIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaCAgICAgICAgICAgIHwgICAgNyArLQogMTcg
ZmlsZXMgY2hhbmdlZCwgNDM1IGluc2VydGlvbnMoKyksIDMwIGRlbGV0aW9ucygtKQogY3JlYXRl
IG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2FuaW1hdGlvbnMvZmlyc3QtbGV0dGVyLWFuaW1hdGlv
bi1leHBlY3RlZC50eHQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9hbmltYXRpb25z
L2ZpcnN0LWxldHRlci1hbmltYXRpb24uaHRtbAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRl
c3RzL2FuaW1hdGlvbnMvZmlyc3QtbGV0dGVyLXBsYXktc3RhdGUtZXhwZWN0ZWQudHh0CiBjcmVh
dGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9maXJzdC1sZXR0ZXItcGxheS1z
dGF0ZS5odG1sCiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvZmly
c3QtbGV0dGVyLWNvbG9yLXRyYW5zaXRpb24tZXhwZWN0ZWQudHh0CiBjcmVhdGUgbW9kZSAxMDA2
NDQgTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvZmlyc3QtbGV0dGVyLWNvbG9yLXRyYW5zaXRpb24u
aHRtbAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL3RyYW5zaXRpb25zL2ZpcnN0LWxl
dHRlci10cmFuc2l0aW9uLWV4cGVjdGVkLnR4dAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRl
c3RzL3RyYW5zaXRpb25zL2ZpcnN0LWxldHRlci10cmFuc2l0aW9uLmh0bWwKCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNmNk
ODEyMS4uZTA4NDg1YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEyLTA1LTMwICBJZ29yIE9s
aXZlaXJhICA8aWdvci5vQHNpc2Euc2Ftc3VuZy5jb20+CisKKyAgICAgICAgQXBwbHkgYW5pbWF0
aW9ucyBhbmQgdHJhbnNpdGlvbnMgZm9yIGZpcnN0LWxldHRlciBlbGVtZW50CisKKyAgICAgICAg
QXBwbHkgYW5pbWF0aW9ucyBhbmQgdHJhbnNpdGlvbnMgZm9yIGZpcnN0LWxldHRlciBlbGVtZW50
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NTI1Mwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYW5pbWF0
aW9ucy9maXJzdC1sZXR0ZXItYW5pbWF0aW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogYW5pbWF0aW9ucy9maXJzdC1sZXR0ZXItYW5pbWF0aW9uLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGFuaW1hdGlvbnMvZmlyc3QtbGV0dGVyLXBsYXktc3RhdGUtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBhbmltYXRpb25zL2ZpcnN0LWxldHRlci1wbGF5LXN0YXRlLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIHRyYW5zaXRpb25zL2ZpcnN0LWxldHRlci1jb2xvci10cmFuc2l0aW9u
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdHJhbnNpdGlvbnMvZmlyc3QtbGV0dGVy
LWNvbG9yLXRyYW5zaXRpb24uaHRtbDogQWRkZWQuCisgICAgICAgICogdHJhbnNpdGlvbnMvZmly
c3QtbGV0dGVyLXRyYW5zaXRpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0cmFu
c2l0aW9ucy9maXJzdC1sZXR0ZXItdHJhbnNpdGlvbi5odG1sOiBBZGRlZC4KKwogMjAxMi0wNS0y
OSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIERGRyBzaG91bGQg
a2VlcCBjYXB0dXJlZCB2YXJpYWJsZXMgYWxpdmUgdW50aWwgdGhlIChpbmxpbmUpIHJldHVybi4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvZmlyc3QtbGV0dGVyLWFuaW1hdGlv
bi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9hbmltYXRpb25zL2ZpcnN0LWxldHRlci1hbmlt
YXRpb24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjli
OGEwMDYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9hbmltYXRpb25zL2ZpcnN0LWxl
dHRlci1hbmltYXRpb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNiBAQAorTG9yZW0gaXBzdW0g
ZG9sb3Igc2l0IGFtZXQuCitBbmltYXRpb25zIHRlc3QgcmVzdWx0OiAKKworUEFTUworUEFTUwor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hbmltYXRpb25zL2ZpcnN0LWxldHRlci1hbmltYXRp
b24uaHRtbCBiL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvZmlyc3QtbGV0dGVyLWFuaW1hdGlvbi5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY2NDFiMTYKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9hbmltYXRpb25zL2ZpcnN0LWxldHRlci1hbmltYXRpb24u
aHRtbApAQCAtMCwwICsxLDcwIEBACis8IURPQ1RZUEUgaHRtbD4KKworPGh0bWw+Cis8aGVhZD4K
KzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9InNjcmVlbiI+CisgICAgLmJveCB7CisgICAg
ICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAgICB3aWR0aDogMTAwcHg7CisgICAgICBoZWlnaHQ6
IDEwMHB4OworICAgICAgYmFja2dyb3VuZDogYmx1ZTsKKyAgICAgIC13ZWJraXQtYW5pbWF0aW9u
OiBib3hBbmltYXRpb24gMC41cyAwLjJzIGxpbmVhcjsKKyAgICB9CisKKyAgICAuYm94OjpmaXJz
dC1sZXR0ZXIgeworICAgICAgY29sb3I6IGJsYWNrOworICAgICAgLXdlYmtpdC1hbmltYXRpb246
IGZpcnN0TGV0dGVyQW5pbWF0aW9uIDAuNXMgMC40cyBmb3J3YXJkcyBlYXNlLW91dDsKKyAgICB9
CisKKyAgICBALXdlYmtpdC1rZXlmcmFtZXMgZmlyc3RMZXR0ZXJBbmltYXRpb24geworICAgICAg
ZnJvbSB7IGZvbnQtc2l6ZTogMjRwdDt9CisgICAgICB0byB7IGZvbnQtc2l6ZTogNDBwdDt9Cisg
ICAgfQorCisgICAgQC13ZWJraXQta2V5ZnJhbWVzIGJveEFuaW1hdGlvbiB7CisgICAgICBmcm9t
IHsgCisgICAgICAgICAgICAgZm9udC1zaXplOiA0MHB0OworICAgICAgICAgICAgIC13ZWJraXQt
dHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7CisgICAgICAgICAgIH0KKyAgICAgIHRvIHsKKyAgICAg
ICAgICAgZm9udC1zaXplOiAycHQ7CisgICAgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3Rh
dGUoMzYwZGVnKTsKKyAgICAgICAgIH0KKyAgICB9CisKKzwvc3R5bGU+Cis8c2NyaXB0IHR5cGU9
InRleHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiPgorICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikgeworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0
KCk7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB9
CisKKyAgICB2YXIgcmVzdWx0ID0gIkFuaW1hdGlvbnMgdGVzdCByZXN1bHQ6IDxicj48YnI+IjsK
KyAgICB2YXIgYW5pbWF0aW9ucyA9IDA7CisgICAgZnVuY3Rpb24gYW5pbWF0aW9uRW5kZWQoZXZl
bnQpCisgICAgeworICAgICAgICBpZiAoKGV2ZW50LmFuaW1hdGlvbk5hbWUgPT0gImZpcnN0TGV0
dGVyQW5pbWF0aW9uIiB8fCBldmVudC5hbmltYXRpb25OYW1lID09ICJib3hBbmltYXRpb24iKSAm
JgorICAgICAgICAgICAgZXZlbnQuZWxhcHNlZFRpbWUgPT0gMC41KQorICAgICAgICAgICByZXN1
bHQgKz0gIlBBU1M8YnI+IjsKKyAgICAgICAgZWxzZQorICAgICAgICAgICByZXN1bHQgKz0gIkZB
SUw8YnI+IjsKKworICAgICAgICArK2FuaW1hdGlvbnM7CisgICAgICAgIGlmIChhbmltYXRpb25z
ID09IDIpIHsKKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQnKS5p
bm5lckhUTUwgPSByZXN1bHQ7CisgICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQorICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUo
KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJ3ZWJr
aXRBbmltYXRpb25FbmQiLCBhbmltYXRpb25FbmRlZCwgZmFsc2UgKTsKKzwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+CisgIDxkaXYgY2xhc3M9ImJveCI+CisgICAgTG9yZW0gaXBzdW0gZG9sb3Ig
c2l0IGFtZXQuCisgIDwvZGl2PgorICA8ZGl2IGlkPSJyZXN1bHQiIHN0eWxlPSJwb3NpdGlvbjph
YnNvbHV0ZTsgdG9wOjE1MHB4Ij4KKyAgPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9hbmltYXRpb25zL2ZpcnN0LWxldHRlci1wbGF5LXN0YXRlLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvZmlyc3QtbGV0dGVyLXBsYXktc3RhdGUt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI2MmU5M2QK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9hbmltYXRpb25zL2ZpcnN0LWxldHRlci1w
bGF5LXN0YXRlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDYgQEAKK1RoaXMgdGVzdHMgdGhlIG9w
ZXJhdGlvbiBvZiAtd2Via2l0LWFuaW1hdGlvbi1wbGF5LXN0YXRlLiBBZnRlciAyMDAgbWlsbGlz
ZWNvbmRzIHRoZSBib3ggc2hvdWxkIHN0b3AgYW5kIGFmdGVyIDMwMCBtaWxsaXNlY29uZHMgaXQg
c2hvdWxkIHN0YXJ0IGFnYWluLiBXZSB0ZXN0IGl0IGJvdGggd2hpbGUgaW4gbW90aW9uIGFuZCB3
aGVuIHN0b3BwZWQuCisKK0xvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LgorUEFTUyAtICJsZWZ0
IiBwcm9wZXJ0eSBmb3IgImJveDEiIGVsZW1lbnQgYXQgMC4ycyBzYXcgc29tZXRoaW5nIGNsb3Nl
IHRvOiA4MAorUEFTUyAtICJsZWZ0IiBwcm9wZXJ0eSBmb3IgImJveDEiIGVsZW1lbnQgYXQgMC40
cyBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiAxNjAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
YW5pbWF0aW9ucy9maXJzdC1sZXR0ZXItcGxheS1zdGF0ZS5odG1sIGIvTGF5b3V0VGVzdHMvYW5p
bWF0aW9ucy9maXJzdC1sZXR0ZXItcGxheS1zdGF0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjA5OGQxNmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9h
bmltYXRpb25zL2ZpcnN0LWxldHRlci1wbGF5LXN0YXRlLmh0bWwKQEAgLTAsMCArMSw4OSBAQAor
PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFs
Ly9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Cis8aHRtbCBsYW5n
PSJlbiI+Cis8aGVhZD4KKyAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50
PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorICA8dGl0bGU+VGVzdCBvZiAtd2Via2l0LWFu
aW1hdGlvbi1wbGF5LXN0YXRlPC90aXRsZT4KKyAgPHN0eWxlIHR5cGU9InRleHQvY3NzIiBtZWRp
YT0ic2NyZWVuIj4KKyAgICAjYm94MSB7CisgICAgICBwb3NpdGlvbjphYnNvbHV0ZTsKKyAgICAg
IGhlaWdodDogMTAwcHg7CisgICAgICB3aWR0aDogMTAwcHg7CisgICAgICBiYWNrZ3JvdW5kLWNv
bG9yOiBibHVlOworICAgICAgY29sb3I6IHJlZDsKKyAgICAgIG1hcmdpbjogMDsKKyAgICAgIC13
ZWJraXQtYW5pbWF0aW9uLWR1cmF0aW9uOiAwLjVzOworICAgICAgLXdlYmtpdC1hbmltYXRpb24t
dGltaW5nLWZ1bmN0aW9uOiBsaW5lYXI7CisgICAgICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiAi
bW92ZTEiOworICAgICAgLXdlYmtpdC1hbmltYXRpb24tcGxheS1zdGF0ZTogcnVubmluZzsKKyAg
ICB9CisgICAgI2JveDE6OmZpcnN0LWxldHRlciB7CisgICAgICBjb2xvcjogd2hpdGU7CisgICAg
ICAtd2Via2l0LWFuaW1hdGlvbjogZmlyc3RMZXR0ZXJBbmltYXRpb24gMC42cyBsaW5lYXI7Cisg
ICAgfQorICAgIEAtd2Via2l0LWtleWZyYW1lcyAibW92ZTEiIHsKKyAgICAgICAgZnJvbSB7IGxl
ZnQ6IDBweCA7IGNvbG9yOiByZWQ7fQorICAgICAgICB0byAgIHsgbGVmdDogNDAwcHg7IGNvbG9y
OiBibGFjazt9CisgICAgfQorICAgIEAtd2Via2l0LWtleWZyYW1lcyAiZmlyc3RMZXR0ZXJBbmlt
YXRpb24iIHsKKyAgICAgICAgZnJvbSB7IGNvbG9yOiB3aGl0ZTsgfQorICAgICAgICB0byB7IGNv
bG9yOiBncmVlbjsgfQorICAgIH0KKyAgPC9zdHlsZT4KKyAgPHNjcmlwdCBzcmM9InJlc291cmNl
cy9hbmltYXRpb24tdGVzdC1oZWxwZXJzLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJz
ZXQ9InV0Zi04Ij48L3NjcmlwdD4KKyAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNo
YXJzZXQ9InV0Zi04Ij4KKyAgICAKKyAgICBjb25zdCBleHBlY3RlZFZhbHVlcyA9IFsKKyAgICAg
IC8vIFthbmltYXRpb24tbmFtZSwgdGltZSwgZWxlbWVudC1pZCwgcHJvcGVydHksIGV4cGVjdGVk
LXZhbHVlLCB0b2xlcmFuY2VdCisgICAgICBbIm1vdmUxIiwgMC4yLCAiYm94MSIsICJsZWZ0Iiwg
ODAsIDE1XSwKKyAgICAgIFsibW92ZTEiLCAwLjQsICJib3gxIiwgImxlZnQiLCAxNjAsIDE1XSwK
KyAgICBdOworICAgIAorICAgIGZ1bmN0aW9uIHN0b3AoKQorICAgIHsKKyAgICAgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImJveDEiKS5zdHlsZS53ZWJraXRBbmltYXRpb25QbGF5U3RhdGUg
PSAicGF1c2VkIjsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBzdGFydCgpCisgICAgeworICAgICAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYm94MSIpLnN0eWxlLndlYmtpdEFuaW1hdGlvblBs
YXlTdGF0ZSA9ICJydW5uaW5nIjsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBzZXRUaW1lcnMoKQor
ICAgIHsKKyAgICAgICAgc2V0VGltZW91dChzdG9wLCAxMDApOworICAgICAgICBzZXRUaW1lb3V0
KHN0YXJ0LCAzMDApOworICAgIH0KKworICAgIHZhciBtb3ZlMUFuaW1hdGlvbkVuZGVkID0gZmFs
c2U7CisgICAgZnVuY3Rpb24gYW5pbWF0aW9uRW5kZWQoZXZlbnQpCisgICAgeworICAgICAgICBp
ZiAoZXZlbnQuYW5pbWF0aW9uTmFtZSA9PSAibW92ZTEiKQorICAgICAgICAgICAgbW92ZTFBbmlt
YXRpb25FbmRlZCA9IHRydWU7CisKKyAgICAgICAgaWYgKGV2ZW50LmFuaW1hdGlvbk5hbWUgPT0g
ImZpcnN0TGV0dGVyQW5pbWF0aW9uIiAmJiBtb3ZlMUFuaW1hdGlvbkVuZGVkKSB7CisgICAgICAg
ICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0Rmlyc3RMZXR0ZXInKS5pbm5lckhU
TUwgPSAiVGVzdCBGYWlsZWQ6IGZpcnN0TGV0dGVyQW5pbWF0aW9uIHNob3VsZCBlbmQgYmVmb3Jl
IG1vdmUxIGFuaW1hdGlvbjxicj4iOworICAgICAgICB9CisgICAgICAgICAgICAKKyAgICB9CisK
KyAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigid2Via2l0QW5pbWF0aW9uRW5kIiwgYW5pbWF0
aW9uRW5kZWQsIGZhbHNlICk7CisgICAgCisgICAgcnVuQW5pbWF0aW9uVGVzdChleHBlY3RlZFZh
bHVlcywgc2V0VGltZXJzLCBudWxsLCB0cnVlKTsKKyAgICAKKyAgPC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxwPgorVGhpcyB0ZXN0cyB0aGUgb3BlcmF0aW9uIG9mIC13ZWJraXQtYW5pbWF0
aW9uLXBsYXktc3RhdGUuIEFmdGVyIDIwMCBtaWxsaXNlY29uZHMgdGhlIGJveCBzaG91bGQgc3Rv
cCBhbmQgYWZ0ZXIgMzAwIG1pbGxpc2Vjb25kcworaXQgc2hvdWxkIHN0YXJ0IGFnYWluLiBXZSB0
ZXN0IGl0IGJvdGggd2hpbGUgaW4gbW90aW9uIGFuZCB3aGVuIHN0b3BwZWQuCis8ZGl2IGlkPSJi
b3gxIj4KKyAgICBMb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldC4KKzwvZGl2PgorPGRpdiBpZD0i
Ym94MiI+Cis8L2Rpdj4KKzxkaXYgaWQ9InJlc3VsdCI+Cis8L2Rpdj4KKzxkaXYgaWQ9InJlc3Vs
dEZpcnN0TGV0dGVyIj4KKzwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvdHJhbnNpdGlvbnMvZmlyc3QtbGV0dGVyLWNvbG9yLXRyYW5zaXRpb24tZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvZmlyc3QtbGV0dGVyLWNvbG9yLXRyYW5z
aXRpb24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIw
NTdiMGQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90cmFuc2l0aW9ucy9maXJzdC1s
ZXR0ZXItY29sb3ItdHJhbnNpdGlvbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyIEBACitMb3Jl
bSBpcHN1bSBkb2xvciBzaXQgYW1ldC4KK1BBU1MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Ry
YW5zaXRpb25zL2ZpcnN0LWxldHRlci1jb2xvci10cmFuc2l0aW9uLmh0bWwgYi9MYXlvdXRUZXN0
cy90cmFuc2l0aW9ucy9maXJzdC1sZXR0ZXItY29sb3ItdHJhbnNpdGlvbi5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVjMTYxZjMKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy90cmFuc2l0aW9ucy9maXJzdC1sZXR0ZXItY29sb3ItdHJhbnNpdGlvbi5odG1s
CkBAIC0wLDAgKzEsNTYgQEAKKzwhRE9DVFlQRSBodG1sPgorCis8aHRtbD4KKzxoZWFkPgorPHN0
eWxlIHR5cGU9InRleHQvY3NzIiBtZWRpYT0ic2NyZWVuIj4KKyAgICAuYm94IHsKKyAgICAgIHdp
ZHRoOiAxMDBweDsKKyAgICAgIGhlaWdodDogMTAwcHg7CisgICAgICBiYWNrZ3JvdW5kLWNvbG9y
OiBibHVlOworICAgIH0KKyAgICAKKyAgICAuYm94OjpmaXJzdC1sZXR0ZXIgeworICAgICAgZm9u
dC1zaXplOiAyNHB0OworICAgICAgY29sb3I6IGJsYWNrOworICAgICAgLXdlYmtpdC10cmFuc2l0
aW9uOiBjb2xvciAwLjVzOworICAgIH0KKworICAgIGJvZHkuZ28gLmJveDo6Zmlyc3QtbGV0dGVy
IHsKKyAgICAgIGNvbG9yOiB3aGl0ZTsKKyAgICB9CisKKzwvc3R5bGU+Cis8c2NyaXB0ICB0eXBl
PSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04Ij4KKyAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpOworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAg
fQorCisgICAgdmFyIHJlc3VsdCA9ICIiOworICAgIGZ1bmN0aW9uIHRyYW5zaXRpb25FbmRlZChl
dmVudCkKKyAgICB7ICAgCisgICAgICAgIGlmIChldmVudC5wcm9wZXJ0eU5hbWUgPT0gImNvbG9y
IikKKyAgICAgICAgICAgcmVzdWx0ICs9ICJQQVNTIjsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICByZXN1bHQgKz0gIkZBSUwiOworCisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdy
ZXN1bHQnKS5pbm5lckhUTUwgPSByZXN1bHQ7CisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25l
KCk7CisgICAgfQorCisgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoICd3ZWJraXRUcmFuc2l0
aW9uRW5kJywgdHJhbnNpdGlvbkVuZGVkLCBmYWxzZSApOworCisgICAgd2luZG93LmFkZEV2ZW50
TGlzdGVuZXIoImxvYWQiLCBmdW5jdGlvbiAoKSB7CisgICAgICAgIGRvY3VtZW50LmJvZHkuY2xh
c3NOYW1lID0gImdvIjsKKyAgICB9LCBmYWxzZSk7Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorICA8ZGl2IGNsYXNzPSJib3giPgorICAgIExvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0Lgor
ICA8L2Rpdj4KKyAgPGRpdiBpZD0icmVzdWx0Ij4KKyAgPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90cmFuc2l0aW9ucy9maXJzdC1sZXR0ZXItdHJhbnNp
dGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90cmFuc2l0aW9ucy9maXJzdC1sZXR0ZXIt
dHJhbnNpdGlvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uNWQ0NDhiZTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90cmFuc2l0aW9ucy9m
aXJzdC1sZXR0ZXItdHJhbnNpdGlvbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorQm94
IE9uZQorQm94IHR3bworVHJhbnN0aW9ucyB0ZXN0IHJlc3VsdDogCisKK1BBU1MgCitQQVNTIAor
UEFTUyAKK1BBU1MgCitQQVNTIAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90cmFuc2l0aW9u
cy9maXJzdC1sZXR0ZXItdHJhbnNpdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMv
Zmlyc3QtbGV0dGVyLXRyYW5zaXRpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi5iZGUyZTFiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdHJhbnNpdGlv
bnMvZmlyc3QtbGV0dGVyLXRyYW5zaXRpb24uaHRtbApAQCAtMCwwICsxLDg1IEBACis8aHRtbD4K
KzxoZWFkPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIiBtZWRpYT0ic2NyZWVuIj4KKyAgICAuYm94
IHsKKyAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAg
IGhlaWdodDogMTAwcHg7CisgICAgICBsZWZ0OiAxMDBweDsKKyAgICAgIGJhY2tncm91bmQtY29s
b3I6IGJsdWU7CisgICAgfQorCisgICAgLmJveDo6Zmlyc3QtbGV0dGVyIHsKKyAgICAgIGZvbnQt
c2l6ZTogMjRwdDsKKyAgICAgIGNvbG9yOiBibGFjazsKKyAgICAgIC13ZWJraXQtdHJhbnNpdGlv
bjogY29sb3IgMC42cyAwLjJzOworICAgIH0KKworICAgICNmaXJzdCB7CisgICAgICAtd2Via2l0
LXRyYW5zaXRpb246IGxlZnQgMC42cyAwLjFzOworICAgIH0KKworICAgICNzZWNvbmQgeworICAg
ICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC42cyAwLjNzOworICAgIH0KKworICAgIC5hbmlt
YXRpbmcgI2ZpcnN0IHsKKyAgICAgIGxlZnQ6IDQwMHB4OworICAgIH0KKworICAgIC5hbmltYXRp
bmcgI3NlY29uZCB7CisgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7Cisg
ICAgICBjb2xvcjogcHVycGxlOworICAgIH0KKworICAgIC5hbmltYXRpbmcgKjo6Zmlyc3QtbGV0
dGVyIHsKKyAgICAgIGNvbG9yOiB3aGl0ZTsKKyAgICB9CisKKworPC9zdHlsZT4KKzxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvdHJhbnNpdGlvbi10ZXN0LWhlbHBlcnMuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCAgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+CisgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9u
ZSgpOworICAgIH0KKworICAgIHZhciByZXN1bHQgPSAiVHJhbnN0aW9ucyB0ZXN0IHJlc3VsdDog
PGJyPjxicj4iOworICAgIHZhciB0cmFuc2l0aW9ucyA9IDA7CisgICAgZnVuY3Rpb24gdHJhbnNp
dGlvbkVuZGVkKGV2ZW50KQorICAgIHsKKyAgICAgICAgaWYgKChldmVudC5wcm9wZXJ0eU5hbWUg
PT0gImNvbG9yIikgfHwgKGV2ZW50LnByb3BlcnR5TmFtZSA9PSAibGVmdCIpIHx8IChldmVudC5w
cm9wZXJ0eU5hbWUgPT0gIi13ZWJraXQtdHJhbnNmb3JtIikpCisgICAgICAgICAgIHJlc3VsdCAr
PSAiUEFTUyA8YnI+IjsKKyAgICAgICAgZWxzZQorICAgICAgICAgICByZXN1bHQgKz0gIkZBSUwg
PGJyPiI7CisKKyAgICAgICAgKyt0cmFuc2l0aW9uczsKKworICAgICAgICBpZiAodHJhbnNpdGlv
bnMgPT0gNSkgeworICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcp
LmlubmVySFRNTCA9IHJlc3VsdDsKKyAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCisgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9u
ZSgpOworICAgICAgICB9CisgICAgfQorCisgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoICd3
ZWJraXRUcmFuc2l0aW9uRW5kJywgdHJhbnNpdGlvbkVuZGVkLCBmYWxzZSApOworCisgICAgd2lu
ZG93LmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBmdW5jdGlvbiAoKSB7CisgICAgICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdjb250YWluZXInKS5jbGFzc05hbWUgPSAnYW5pbWF0aW5nJzsK
KyAgICB9LCBmYWxzZSk7Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iY29u
dGFpbmVyIj4KKyAgPGRpdiBpZD0iZmlyc3QiIGNsYXNzPSJib3giPgorICAgICAgQm94IE9uZQor
ICA8L2Rpdj4KKyAgPGRpdiBpZD0ic2Vjb25kIiBjbGFzcz0iYm94Ij4KKyAgICAgIEJveCB0d28K
KyAgPC9kaXY+Cis8L2Rpdj4KKyAgPGRpdiBpZD0icmVzdWx0Ij4KKyAgPC9kaXY+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2E2ZWRkOC4uZjFlZjc3MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDUwIEBACisyMDEyLTA1LTMwICBJZ29yIE9saXZlaXJhICA8aWdvci5vQHNpc2Euc2Ft
c3VuZy5jb20+CisKKyAgICAgICAgQXBwbHkgYW5pbWF0aW9ucyBhbmQgdHJhbnNpdGlvbnMgZm9y
IGZpcnN0LWxldHRlciBlbGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD04NTI1MworCisgICAgICAgIEFkZCBhbmltYXRpb25zIGFuZCB0cmFuc2l0
aW9ucyBzdXBwb3J0IGZvciB0aGUgZmlyc3QtbGV0dGVyIAorICAgICAgICBwc2V1ZG8gZWxlbWVu
dC4KKyAgICAgICAgSW5zdGVhZCBvZiBjYWxsIFJlbmRlck9qZWN0Ojpub2RlKCkgaW4gdGhlIGFu
aW1hdGlvbnMgY29kZSwKKyAgICAgICAgbm93IHdlIG5lZWQgdG8gY2FsbCBSZW5kZXJPYmplY3Q6
OmdlbmVyYXRpbmdOb2RlKCkgYmVjYXVzZQorICAgICAgICBwc2V1ZG8gZWxlbWVudHMgZG9lcyBu
b3QgaGF2ZSBhIE5vZGUgYXNzb2NpYXRlZCB3aXRoIHRoZQorICAgICAgICBSZW5kZXJPYmplY3Qu
CisKKyAgICAgICAgSW5pdGlhbCBwYXRjaCBieSBTaW1vbiBGcmFzZXIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0czogYW5pbWF0aW9ucy9maXJz
dC1sZXR0ZXItYW5pbWF0aW9uLmh0bWwKKyAgICAgICAgICAgICAgIGFuaW1hdGlvbnMvZmlyc3Qt
bGV0dGVyLXBsYXktc3RhdGUuaHRtbAorICAgICAgICAgICAgICAgdHJhbnNpdGlvbnMvZmlyc3Qt
bGV0dGVyLWNvbG9yLXRyYW5zaXRpb24uaHRtbAorICAgICAgICAgICAgICAgdHJhbnNpdGlvbnMv
Zmlyc3QtbGV0dGVyLXRyYW5zaXRpb24uaHRtbAorCisgICAgICAgICogcGFnZS9hbmltYXRpb24v
QW5pbWF0aW9uQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25CYXNlOjp1cGRh
dGVTdGF0ZU1hY2hpbmUpOgorICAgICAgICAqIHBhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkNvbnRy
b2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uQ29udHJvbGxlclByaXZhdGU6
OnVwZGF0ZUFuaW1hdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uQ29udHJvbGxl
clByaXZhdGU6OnBhdXNlQW5pbWF0aW9uQXRUaW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1h
dGlvbkNvbnRyb2xsZXJQcml2YXRlOjpwYXVzZVRyYW5zaXRpb25BdFRpbWUpOgorICAgICAgICAo
V2ViQ29yZTo6QW5pbWF0aW9uQ29udHJvbGxlcjo6Y2FuY2VsQW5pbWF0aW9ucyk6CisgICAgICAg
IChXZWJDb3JlOjpBbmltYXRpb25Db250cm9sbGVyOjp1cGRhdGVBbmltYXRpb25zKToKKyAgICAg
ICAgKiBwYWdlL2FuaW1hdGlvbi9JbXBsaWNpdEFuaW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbXBsaWNpdEFuaW1hdGlvbjo6cGF1c2VBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6SW1wbGljaXRBbmltYXRpb246OnNlbmRUcmFuc2l0aW9uRXZlbnQpOgorICAgICAgICAqIHBh
Z2UvYW5pbWF0aW9uL0tleWZyYW1lQW5pbWF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oktl
eWZyYW1lQW5pbWF0aW9uOjpLZXlmcmFtZUFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpL
ZXlmcmFtZUFuaW1hdGlvbjo6cGF1c2VBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6S2V5
ZnJhbWVBbmltYXRpb246OmVuZEFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpLZXlmcmFt
ZUFuaW1hdGlvbjo6c2VuZEFuaW1hdGlvbkV2ZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyQmxvY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OnVwZGF0ZUZpcnN0
TGV0dGVyU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmNyZWF0ZUZpcnN0
TGV0dGVyUmVuZGVyZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpzZXRBbmltYXRhYmxlU3R5bGUpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpnZW5lcmF0aW5nTm9kZSk6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0Lmg6CisgICAgICAgIChS
ZW5kZXJPYmplY3QpOgorCiAyMDEyLTA1LTI5ICBTaGF3biBTaW5naCAgPHNoYXduc2luZ2hAY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gbWFrZSBXZWJUcmFuc2Zvcm1hdGlvbk1h
dHJpeCBvYmplY3QgdXNhYmxlIGJ5IG5vbi13ZWJraXQgY29kZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcAppbmRleCAzM2Q2MzI2Li5iNjcyNzkx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNw
cApAQCAtMTkxLDcgKzE5MSw3IEBAIHZvaWQgQW5pbWF0aW9uQmFzZTo6dXBkYXRlU3RhdGVNYWNo
aW5lKEFuaW1TdGF0ZUlucHV0IGlucHV0LCBkb3VibGUgcGFyYW0pCiAKICAgICAgICAgICAgICAg
ICAvLyBUcmlnZ2VyIGEgcmVuZGVyIHNvIHdlIGNhbiBzdGFydCB0aGUgYW5pbWF0aW9uCiAgICAg
ICAgICAgICAgICAgaWYgKG1fb2JqZWN0KQotICAgICAgICAgICAgICAgICAgICBtX2NvbXBBbmlt
LT5hbmltYXRpb25Db250cm9sbGVyKCktPmFkZE5vZGVDaGFuZ2VUb0Rpc3BhdGNoKG1fb2JqZWN0
LT5ub2RlKCkpOworICAgICAgICAgICAgICAgICAgICBtX2NvbXBBbmltLT5hbmltYXRpb25Db250
cm9sbGVyKCktPmFkZE5vZGVDaGFuZ2VUb0Rpc3BhdGNoKG1fb2JqZWN0LT5nZW5lcmF0aW5nTm9k
ZSgpKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKCFwYXVz
ZWQoKSk7CiAgICAgICAgICAgICAgICAgLy8gV2UncmUgd2FpdGluZyBmb3IgdGhlIHN0YXJ0IHRp
bWVyIHRvIGZpcmUgYW5kIHdlIGdvdCBhIHBhdXNlLiBDYW5jZWwgdGhlIHRpbWVyLCBwYXVzZSBh
bmQgd2FpdApAQCAtMjUyLDcgKzI1Miw3IEBAIHZvaWQgQW5pbWF0aW9uQmFzZTo6dXBkYXRlU3Rh
dGVNYWNoaW5lKEFuaW1TdGF0ZUlucHV0IGlucHV0LCBkb3VibGUgcGFyYW0pCiAKICAgICAgICAg
ICAgICAgICAvLyBEaXNwYXRjaCB1cGRhdGVTdHlsZUlmTmVlZGVkIHNvIHdlIGNhbiBzdGFydCB0
aGUgYW5pbWF0aW9uCiAgICAgICAgICAgICAgICAgaWYgKG1fb2JqZWN0KQotICAgICAgICAgICAg
ICAgICAgICBtX2NvbXBBbmltLT5hbmltYXRpb25Db250cm9sbGVyKCktPmFkZE5vZGVDaGFuZ2VU
b0Rpc3BhdGNoKG1fb2JqZWN0LT5ub2RlKCkpOworICAgICAgICAgICAgICAgICAgICBtX2NvbXBB
bmltLT5hbmltYXRpb25Db250cm9sbGVyKCktPmFkZE5vZGVDaGFuZ2VUb0Rpc3BhdGNoKG1fb2Jq
ZWN0LT5nZW5lcmF0aW5nTm9kZSgpKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICAgICAgLy8gV2UgYXJlIHBhdXNpbmcgd2hpbGUgd2FpdGluZyBmb3IgYSBzdGFydCByZXNwb25z
ZS4gQ2FuY2VsIHRoZSBhbmltYXRpb24gYW5kIHdhaXQuIFdoZW4gCiAgICAgICAgICAgICAgICAg
Ly8gd2UgdW5wYXVzZSwgd2Ugd2lsbCBhY3QgYXMgdGhvdWdoIHRoZSBzdGFydCB0aW1lciBqdXN0
IGZpcmVkCkBAIC0yOTgsNyArMjk4LDcgQEAgdm9pZCBBbmltYXRpb25CYXNlOjp1cGRhdGVTdGF0
ZU1hY2hpbmUoQW5pbVN0YXRlSW5wdXQgaW5wdXQsIGRvdWJsZSBwYXJhbSkKICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlc3VtZU92ZXJyaWRkZW5BbmltYXRpb25zKCk7CiAKICAgICAgICAgICAg
ICAgICAgICAgLy8gRmlyZSBvZmYgYW5vdGhlciBzdHlsZSBjaGFuZ2Ugc28gd2UgY2FuIHNldCB0
aGUgZmluYWwgdmFsdWUKLSAgICAgICAgICAgICAgICAgICAgbV9jb21wQW5pbS0+YW5pbWF0aW9u
Q29udHJvbGxlcigpLT5hZGROb2RlQ2hhbmdlVG9EaXNwYXRjaChtX29iamVjdC0+bm9kZSgpKTsK
KyAgICAgICAgICAgICAgICAgICAgbV9jb21wQW5pbS0+YW5pbWF0aW9uQ29udHJvbGxlcigpLT5h
ZGROb2RlQ2hhbmdlVG9EaXNwYXRjaChtX29iamVjdC0+Z2VuZXJhdGluZ05vZGUoKSk7CiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAvLyBX
ZSBhcmUgcGF1c2luZyB3aGlsZSBydW5uaW5nLiBDYW5jZWwgdGhlIGFuaW1hdGlvbiBhbmQgd2Fp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQ29u
dHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250
cm9sbGVyLmNwcAppbmRleCBjNDkxMTllLi5jMWFiNmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250cm9sbGVyLmNwcApAQCAtMTAwLDcg
KzEwMCw3IEBAIGRvdWJsZSBBbmltYXRpb25Db250cm9sbGVyUHJpdmF0ZTo6dXBkYXRlQW5pbWF0
aW9ucyhTZXRDaGFuZ2VkIGNhbGxTZXRDaGFuZ2VkLyoKICAgICAgICAgICAgICAgICB0aW1lVG9O
ZXh0U2VydmljZSA9IHQ7CiAgICAgICAgICAgICBpZiAoIXRpbWVUb05leHRTZXJ2aWNlKSB7CiAg
ICAgICAgICAgICAgICAgaWYgKGNhbGxTZXRDaGFuZ2VkID09IENhbGxTZXRDaGFuZ2VkKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBpdC0+Zmlyc3QtPm5vZGUoKTsKKyAgICAg
ICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9IGl0LT5maXJzdC0+Z2VuZXJhdGluZ05vZGUoKTsK
ICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKCFub2RlIHx8IChub2RlLT5kb2N1bWVudCgpICYm
ICFub2RlLT5kb2N1bWVudCgpLT5pblBhZ2VDYWNoZSgpKSk7CiAgICAgICAgICAgICAgICAgICAg
IG5vZGUtPnNldE5lZWRzU3R5bGVSZWNhbGMoU3ludGhldGljU3R5bGVDaGFuZ2UpOwogICAgICAg
ICAgICAgICAgICAgICBjYWxsZWRTZXRDaGFuZ2VkID0gdHJ1ZTsKQEAgLTMyOCw3ICszMjgsNyBA
QCBib29sIEFuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRlOjpwYXVzZUFuaW1hdGlvbkF0VGltZShS
ZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjbwogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBp
ZiAoY29tcEFuaW0tPnBhdXNlQW5pbWF0aW9uQXRUaW1lKG5hbWUsIHQpKSB7Ci0gICAgICAgIHJl
bmRlcmVyLT5ub2RlKCktPnNldE5lZWRzU3R5bGVSZWNhbGMoU3ludGhldGljU3R5bGVDaGFuZ2Up
OworICAgICAgICByZW5kZXJlci0+Z2VuZXJhdGluZ05vZGUoKS0+c2V0TmVlZHNTdHlsZVJlY2Fs
YyhTeW50aGV0aWNTdHlsZUNoYW5nZSk7CiAgICAgICAgIHN0YXJ0VXBkYXRlU3R5bGVJZk5lZWRl
ZERpc3BhdGNoZXIoKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMzQ2LDcgKzM0
Niw3IEBAIGJvb2wgQW5pbWF0aW9uQ29udHJvbGxlclByaXZhdGU6OnBhdXNlVHJhbnNpdGlvbkF0
VGltZShSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAog
ICAgIGlmIChjb21wQW5pbS0+cGF1c2VUcmFuc2l0aW9uQXRUaW1lKGNzc1Byb3BlcnR5SUQocHJv
cGVydHkpLCB0KSkgewotICAgICAgICByZW5kZXJlci0+bm9kZSgpLT5zZXROZWVkc1N0eWxlUmVj
YWxjKFN5bnRoZXRpY1N0eWxlQ2hhbmdlKTsKKyAgICAgICAgcmVuZGVyZXItPmdlbmVyYXRpbmdO
b2RlKCktPnNldE5lZWRzU3R5bGVSZWNhbGMoU3ludGhldGljU3R5bGVDaGFuZ2UpOwogICAgICAg
ICBzdGFydFVwZGF0ZVN0eWxlSWZOZWVkZWREaXNwYXRjaGVyKCk7CiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KQEAgLTUwOCw3ICs1MDgsNyBAQCB2b2lkIEFuaW1hdGlvbkNvbnRyb2xsZXI6
OmNhbmNlbEFuaW1hdGlvbnMoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKICAgICAgICAgcmV0dXJu
OwogCiAgICAgaWYgKG1fZGF0YS0+Y2xlYXIocmVuZGVyZXIpKSB7Ci0gICAgICAgIE5vZGUqIG5v
ZGUgPSByZW5kZXJlci0+bm9kZSgpOworICAgICAgICBOb2RlKiBub2RlID0gcmVuZGVyZXItPmdl
bmVyYXRpbmdOb2RlKCk7CiAgICAgICAgIEFTU0VSVCghbm9kZSB8fCAobm9kZS0+ZG9jdW1lbnQo
KSAmJiAhbm9kZS0+ZG9jdW1lbnQoKS0+aW5QYWdlQ2FjaGUoKSkpOwogICAgICAgICBub2RlLT5z
ZXROZWVkc1N0eWxlUmVjYWxjKFN5bnRoZXRpY1N0eWxlQ2hhbmdlKTsKICAgICB9CkBAIC01MzMs
NyArNTMzLDYgQEAgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gQW5pbWF0aW9uQ29udHJvbGxlcjo6
dXBkYXRlQW5pbWF0aW9ucyhSZW5kZXJPYmplY3QqIHJlbmQKICAgICAvLyBhZ2FpbnN0IHRoZSBh
bmltYXRpb25zIGluIHRoZSBzdHlsZSBhbmQgbWFrZSBzdXJlIHdlJ3JlIGluIHN5bmMuICBJZiBk
ZXN0aW5hdGlvbiB2YWx1ZXMKICAgICAvLyBoYXZlIGNoYW5nZWQsIHdlIHJlc2V0IHRoZSBhbmlt
YXRpb24uICBXZSB0aGVuIGRvIGEgYmxlbmQgdG8gZ2V0IG5ldyB2YWx1ZXMgYW5kIHdlIHJldHVy
bgogICAgIC8vIGEgbmV3IHN0eWxlLgotICAgIEFTU0VSVChyZW5kZXJlci0+bm9kZSgpKTsgLy8g
RklYTUU6IFdlIGRvIG5vdCBhbmltYXRlIGdlbmVyYXRlZCBjb250ZW50IHlldC4KIAogICAgIFJl
ZlB0cjxDb21wb3NpdGVBbmltYXRpb24+IHJlbmRlcmVyQW5pbWF0aW9ucyA9IG1fZGF0YS0+YWNj
ZXNzQ29tcG9zaXRlQW5pbWF0aW9uKHJlbmRlcmVyKTsKICAgICBSZWZQdHI8UmVuZGVyU3R5bGU+
IGJsZW5kZWRTdHlsZSA9IHJlbmRlcmVyQW5pbWF0aW9ucy0+YW5pbWF0ZShyZW5kZXJlciwgb2xk
U3R5bGUsIG5ld1N0eWxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0
aW9uL0ltcGxpY2l0QW5pbWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9u
L0ltcGxpY2l0QW5pbWF0aW9uLmNwcAppbmRleCBmNzFhMTUzLi5kYjM3YjY0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9JbXBsaWNpdEFuaW1hdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vSW1wbGljaXRBbmltYXRpb24uY3BwCkBA
IC0xMjksNyArMTI5LDcgQEAgdm9pZCBJbXBsaWNpdEFuaW1hdGlvbjo6cGF1c2VBbmltYXRpb24o
ZG91YmxlIHRpbWVPZmZzZXQpCiAjZW5kaWYKICAgICAvLyBSZXN0b3JlIHRoZSBvcmlnaW5hbCAo
dW5hbmltYXRlZCkgc3R5bGUKICAgICBpZiAoIXBhdXNlZCgpKQotICAgICAgICBzZXROZWVkc1N0
eWxlUmVjYWxjKG1fb2JqZWN0LT5ub2RlKCkpOworICAgICAgICBzZXROZWVkc1N0eWxlUmVjYWxj
KG1fb2JqZWN0LT5nZW5lcmF0aW5nTm9kZSgpKTsKIH0KIAogdm9pZCBJbXBsaWNpdEFuaW1hdGlv
bjo6ZW5kQW5pbWF0aW9uKCkKQEAgLTE2NSw4ICsxNjUsOCBAQCBib29sIEltcGxpY2l0QW5pbWF0
aW9uOjpzZW5kVHJhbnNpdGlvbkV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBk
b3VibAogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgLy8gRGlzcGF0Y2ggdGhlIGV2ZW50
CiAgICAgICAgICAgICBSZWZQdHI8RWxlbWVudD4gZWxlbWVudCA9IDA7Ci0gICAgICAgICAgICBp
ZiAobV9vYmplY3QtPm5vZGUoKSAmJiBtX29iamVjdC0+bm9kZSgpLT5pc0VsZW1lbnROb2RlKCkp
Ci0gICAgICAgICAgICAgICAgZWxlbWVudCA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihtX29iamVj
dC0+bm9kZSgpKTsKKyAgICAgICAgICAgIGlmIChtX29iamVjdC0+Z2VuZXJhdGluZ05vZGUoKSAm
JiBtX29iamVjdC0+Z2VuZXJhdGluZ05vZGUoKS0+aXNFbGVtZW50Tm9kZSgpKQorICAgICAgICAg
ICAgICAgIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obV9vYmplY3QtPmdlbmVyYXRp
bmdOb2RlKCkpOwogCiAgICAgICAgICAgICBBU1NFUlQoIWVsZW1lbnQgfHwgKGVsZW1lbnQtPmRv
Y3VtZW50KCkgJiYgIWVsZW1lbnQtPmRvY3VtZW50KCktPmluUGFnZUNhY2hlKCkpKTsKICAgICAg
ICAgICAgIGlmICghZWxlbWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5p
bWF0aW9uL0tleWZyYW1lQW5pbWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0
aW9uL0tleWZyYW1lQW5pbWF0aW9uLmNwcAppbmRleCBkYTI5MTVkLi4xMDQwY2FmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9LZXlmcmFtZUFuaW1hdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vS2V5ZnJhbWVBbmltYXRpb24uY3Bw
CkBAIC01MSw4ICs1MSw4IEBAIEtleWZyYW1lQW5pbWF0aW9uOjpLZXlmcmFtZUFuaW1hdGlvbihj
b25zdCBBbmltYXRpb24qIGFuaW1hdGlvbiwgUmVuZGVyT2JqZWN0KiByCiAgICAgLCBtX3VuYW5p
bWF0ZWRTdHlsZSh1bmFuaW1hdGVkU3R5bGUpCiB7CiAgICAgLy8gR2V0IHRoZSBrZXlmcmFtZSBS
ZW5kZXJTdHlsZXMKLSAgICBpZiAobV9vYmplY3QgJiYgbV9vYmplY3QtPm5vZGUoKSAmJiBtX29i
amVjdC0+bm9kZSgpLT5pc0VsZW1lbnROb2RlKCkpCi0gICAgICAgIG1fb2JqZWN0LT5kb2N1bWVu
dCgpLT5zdHlsZVJlc29sdmVyKCktPmtleWZyYW1lU3R5bGVzRm9yQW5pbWF0aW9uKHN0YXRpY19j
YXN0PEVsZW1lbnQqPihtX29iamVjdC0+bm9kZSgpKSwgdW5hbmltYXRlZFN0eWxlLCBtX2tleWZy
YW1lcyk7CisgICAgaWYgKG1fb2JqZWN0ICYmIG1fb2JqZWN0LT5nZW5lcmF0aW5nTm9kZSgpICYm
IG1fb2JqZWN0LT5nZW5lcmF0aW5nTm9kZSgpLT5pc0VsZW1lbnROb2RlKCkpCisgICAgICAgIG1f
b2JqZWN0LT5kb2N1bWVudCgpLT5zdHlsZVJlc29sdmVyKCktPmtleWZyYW1lU3R5bGVzRm9yQW5p
bWF0aW9uKHN0YXRpY19jYXN0PEVsZW1lbnQqPihtX29iamVjdC0+Z2VuZXJhdGluZ05vZGUoKSks
IHVuYW5pbWF0ZWRTdHlsZSwgbV9rZXlmcmFtZXMpOwogCiAgICAgLy8gVXBkYXRlIHRoZSBtX3Ry
YW5zZm9ybUZ1bmN0aW9uTGlzdFZhbGlkIGZsYWcgYmFzZWQgb24gd2hldGhlciB0aGUgZnVuY3Rp
b24gbGlzdHMgaW4gdGhlIGtleWZyYW1lcyBtYXRjaC4KICAgICB2YWxpZGF0ZVRyYW5zZm9ybUZ1
bmN0aW9uTGlzdCgpOwpAQCAtMjU1LDcgKzI1NSw3IEBAIHZvaWQgS2V5ZnJhbWVBbmltYXRpb246
OnBhdXNlQW5pbWF0aW9uKGRvdWJsZSB0aW1lT2Zmc2V0KQogI2VuZGlmCiAgICAgLy8gUmVzdG9y
ZSB0aGUgb3JpZ2luYWwgKHVuYW5pbWF0ZWQpIHN0eWxlCiAgICAgaWYgKCFwYXVzZWQoKSkKLSAg
ICAgICAgc2V0TmVlZHNTdHlsZVJlY2FsYyhtX29iamVjdC0+bm9kZSgpKTsKKyAgICAgICAgc2V0
TmVlZHNTdHlsZVJlY2FsYyhtX29iamVjdC0+Z2VuZXJhdGluZ05vZGUoKSk7CiB9CiAKIHZvaWQg
S2V5ZnJhbWVBbmltYXRpb246OmVuZEFuaW1hdGlvbigpCkBAIC0yNjksNyArMjY5LDcgQEAgdm9p
ZCBLZXlmcmFtZUFuaW1hdGlvbjo6ZW5kQW5pbWF0aW9uKCkKICNlbmRpZgogICAgIC8vIFJlc3Rv
cmUgdGhlIG9yaWdpbmFsICh1bmFuaW1hdGVkKSBzdHlsZQogICAgIGlmICghcGF1c2VkKCkpCi0g
ICAgICAgIHNldE5lZWRzU3R5bGVSZWNhbGMobV9vYmplY3QtPm5vZGUoKSk7CisgICAgICAgIHNl
dE5lZWRzU3R5bGVSZWNhbGMobV9vYmplY3QtPmdlbmVyYXRpbmdOb2RlKCkpOwogfQogCiBib29s
IEtleWZyYW1lQW5pbWF0aW9uOjpzaG91bGRTZW5kRXZlbnRGb3JMaXN0ZW5lcihEb2N1bWVudDo6
TGlzdGVuZXJUeXBlIGxpc3RlbmVyVHlwZSkgY29uc3QKQEAgLTMxNCw4ICszMTQsOCBAQCBib29s
IEtleWZyYW1lQW5pbWF0aW9uOjpzZW5kQW5pbWF0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5n
JiBldmVudFR5cGUsIGRvdWJsZQogICAgIGlmIChzaG91bGRTZW5kRXZlbnRGb3JMaXN0ZW5lcihs
aXN0ZW5lclR5cGUpKSB7CiAgICAgICAgIC8vIERpc3BhdGNoIHRoZSBldmVudAogICAgICAgICBS
ZWZQdHI8RWxlbWVudD4gZWxlbWVudDsKLSAgICAgICAgaWYgKG1fb2JqZWN0LT5ub2RlKCkgJiYg
bV9vYmplY3QtPm5vZGUoKS0+aXNFbGVtZW50Tm9kZSgpKQotICAgICAgICAgICAgZWxlbWVudCA9
IHN0YXRpY19jYXN0PEVsZW1lbnQqPihtX29iamVjdC0+bm9kZSgpKTsKKyAgICAgICAgaWYgKG1f
b2JqZWN0LT5nZW5lcmF0aW5nTm9kZSgpICYmIG1fb2JqZWN0LT5nZW5lcmF0aW5nTm9kZSgpLT5p
c0VsZW1lbnROb2RlKCkpCisgICAgICAgICAgICBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8RWxlbWVu
dCo+KG1fb2JqZWN0LT5nZW5lcmF0aW5nTm9kZSgpKTsKIAogICAgICAgICBBU1NFUlQoIWVsZW1l
bnQgfHwgKGVsZW1lbnQtPmRvY3VtZW50KCkgJiYgIWVsZW1lbnQtPmRvY3VtZW50KCktPmluUGFn
ZUNhY2hlKCkpKTsKICAgICAgICAgaWYgKCFlbGVtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9jay5jcHAKaW5kZXggZmFjMmQwOC4uMjlhMGI0ZCAxMDA3NTUKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCkBAIC02MDE3LDE3ICs2MDE3LDE3IEBAIHZvaWQg
UmVuZGVyQmxvY2s6OnVwZGF0ZUZpcnN0TGV0dGVyU3R5bGUoUmVuZGVyT2JqZWN0KiBmaXJzdExl
dHRlckJsb2NrLCBSZW5kZXJPCiB7CiAgICAgUmVuZGVyT2JqZWN0KiBmaXJzdExldHRlciA9IGN1
cnJlbnRDaGlsZC0+cGFyZW50KCk7CiAgICAgUmVuZGVyT2JqZWN0KiBmaXJzdExldHRlckNvbnRh
aW5lciA9IGZpcnN0TGV0dGVyLT5wYXJlbnQoKTsKLSAgICBSZW5kZXJTdHlsZSogcHNldWRvU3R5
bGUgPSBzdHlsZUZvckZpcnN0TGV0dGVyKGZpcnN0TGV0dGVyQmxvY2ssIGZpcnN0TGV0dGVyQ29u
dGFpbmVyKTsKKyAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IHBzZXVkb1N0eWxlID0gYW5pbWF0aW9u
KCktPnVwZGF0ZUFuaW1hdGlvbnMoZmlyc3RMZXR0ZXIsIHN0eWxlRm9yRmlyc3RMZXR0ZXIoZmly
c3RMZXR0ZXJCbG9jaywgZmlyc3RMZXR0ZXJDb250YWluZXIpKTsKICAgICBBU1NFUlQoZmlyc3RM
ZXR0ZXItPmlzRmxvYXRpbmcoKSB8fCBmaXJzdExldHRlci0+aXNJbmxpbmUoKSk7CiAKLSAgICBp
ZiAoTm9kZTo6ZGlmZihmaXJzdExldHRlci0+c3R5bGUoKSwgcHNldWRvU3R5bGUsIGRvY3VtZW50
KCkpID09IE5vZGU6OkRldGFjaCkgeworICAgIGlmIChOb2RlOjpkaWZmKGZpcnN0TGV0dGVyLT5z
dHlsZSgpLCBwc2V1ZG9TdHlsZS5nZXQoKSwgZG9jdW1lbnQoKSkgPT0gTm9kZTo6RGV0YWNoKSB7
CiAgICAgICAgIC8vIFRoZSBmaXJzdC1sZXR0ZXIgcmVuZGVyZXIgbmVlZHMgdG8gYmUgcmVwbGFj
ZWQuIENyZWF0ZSBhIG5ldyByZW5kZXJlciBvZiB0aGUgcmlnaHQgdHlwZS4KICAgICAgICAgUmVu
ZGVyT2JqZWN0KiBuZXdGaXJzdExldHRlcjsKICAgICAgICAgaWYgKHBzZXVkb1N0eWxlLT5kaXNw
bGF5KCkgPT0gSU5MSU5FKQogICAgICAgICAgICAgbmV3Rmlyc3RMZXR0ZXIgPSBuZXcgKHJlbmRl
ckFyZW5hKCkpIFJlbmRlcklubGluZShkb2N1bWVudCgpKTsKICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgbmV3Rmlyc3RMZXR0ZXIgPSBuZXcgKHJlbmRlckFyZW5hKCkpIFJlbmRlckJsb2NrKGRv
Y3VtZW50KCkpOwotICAgICAgICBuZXdGaXJzdExldHRlci0+c2V0U3R5bGUocHNldWRvU3R5bGUp
OworICAgICAgICBuZXdGaXJzdExldHRlci0+c2V0U3R5bGUocHNldWRvU3R5bGUuZ2V0KCkpOwog
CiAgICAgICAgIC8vIE1vdmUgdGhlIGZpcnN0IGxldHRlciBpbnRvIHRoZSBuZXcgcmVuZGVyZXIu
CiAgICAgICAgIExheW91dFN0YXRlRGlzYWJsZXIgbGF5b3V0U3RhdGVEaXNhYmxlcih2aWV3KCkp
OwpAQCAtNjA1NiwxMSArNjA1NiwxMSBAQCB2b2lkIFJlbmRlckJsb2NrOjp1cGRhdGVGaXJzdExl
dHRlclN0eWxlKFJlbmRlck9iamVjdCogZmlyc3RMZXR0ZXJCbG9jaywgUmVuZGVyTwogICAgICAg
ICBmaXJzdExldHRlciA9IG5ld0ZpcnN0TGV0dGVyOwogICAgICAgICBmaXJzdExldHRlckNvbnRh
aW5lci0+YWRkQ2hpbGQoZmlyc3RMZXR0ZXIsIG5leHRTaWJsaW5nKTsKICAgICB9IGVsc2UKLSAg
ICAgICAgZmlyc3RMZXR0ZXItPnNldFN0eWxlKHBzZXVkb1N0eWxlKTsKKyAgICAgICAgZmlyc3RM
ZXR0ZXItPnNldFN0eWxlKHBzZXVkb1N0eWxlLmdldCgpKTsKIAogICAgIGZvciAoUmVuZGVyT2Jq
ZWN0KiBnZW5DaGlsZCA9IGZpcnN0TGV0dGVyLT5maXJzdENoaWxkKCk7IGdlbkNoaWxkOyBnZW5D
aGlsZCA9IGdlbkNoaWxkLT5uZXh0U2libGluZygpKSB7CiAgICAgICAgIGlmIChnZW5DaGlsZC0+
aXNUZXh0KCkpCi0gICAgICAgICAgICBnZW5DaGlsZC0+c2V0U3R5bGUocHNldWRvU3R5bGUpOwor
ICAgICAgICAgICAgZ2VuQ2hpbGQtPnNldFN0eWxlKHBzZXVkb1N0eWxlLmdldCgpKTsKICAgICB9
CiB9CiAKQEAgLTYwNzMsOCArNjA3MywxMyBAQCB2b2lkIFJlbmRlckJsb2NrOjpjcmVhdGVGaXJz
dExldHRlclJlbmRlcmVyKFJlbmRlck9iamVjdCogZmlyc3RMZXR0ZXJCbG9jaywgUmVuZAogICAg
ICAgICBmaXJzdExldHRlciA9IG5ldyAocmVuZGVyQXJlbmEoKSkgUmVuZGVySW5saW5lKGRvY3Vt
ZW50KCkpOwogICAgIGVsc2UKICAgICAgICAgZmlyc3RMZXR0ZXIgPSBuZXcgKHJlbmRlckFyZW5h
KCkpIFJlbmRlckJsb2NrKGRvY3VtZW50KCkpOwotICAgIGZpcnN0TGV0dGVyLT5zZXRTdHlsZShw
c2V1ZG9TdHlsZSk7CisKKyAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IHRlbXBvcmFyeVN0eWxlID0g
UmVuZGVyU3R5bGU6OmNyZWF0ZSgpOworICAgIHRlbXBvcmFyeVN0eWxlLT5pbmhlcml0RnJvbShm
aXJzdExldHRlckJsb2NrLT5zdHlsZSgpKTsKKyAgICBmaXJzdExldHRlci0+c2V0U3R5bGUodGVt
cG9yYXJ5U3R5bGUpOyAgCiAgICAgZmlyc3RMZXR0ZXJDb250YWluZXItPmFkZENoaWxkKGZpcnN0
TGV0dGVyLCBjdXJyZW50Q2hpbGQpOworICAgIAorICAgIGZpcnN0TGV0dGVyLT5zZXRBbmltYXRh
YmxlU3R5bGUocHNldWRvU3R5bGUsIHRydWUpOwogCiAgICAgUmVuZGVyVGV4dCogdGV4dE9iaiA9
IHRvUmVuZGVyVGV4dChjdXJyZW50Q2hpbGQpOwogCkBAIC02MTIyLDcgKzYxMjcsNyBAQCB2b2lk
IFJlbmRlckJsb2NrOjpjcmVhdGVGaXJzdExldHRlclJlbmRlcmVyKFJlbmRlck9iamVjdCogZmly
c3RMZXR0ZXJCbG9jaywgUmVuZAogICAgICAgICAvLyBjb25zdHJ1Y3QgdGV4dCBmcmFnbWVudCBm
b3IgdGhlIGZpcnN0IGxldHRlcgogICAgICAgICBSZW5kZXJUZXh0RnJhZ21lbnQqIGxldHRlciA9
IAogICAgICAgICAgICAgbmV3IChyZW5kZXJBcmVuYSgpKSBSZW5kZXJUZXh0RnJhZ21lbnQocmVt
YWluaW5nVGV4dC0+bm9kZSgpID8gcmVtYWluaW5nVGV4dC0+bm9kZSgpIDogcmVtYWluaW5nVGV4
dC0+ZG9jdW1lbnQoKSwgb2xkVGV4dC5nZXQoKSwgMCwgbGVuZ3RoKTsKLSAgICAgICAgbGV0dGVy
LT5zZXRTdHlsZShwc2V1ZG9TdHlsZSk7CisgICAgICAgIGxldHRlci0+c2V0U3R5bGUoZmlyc3RM
ZXR0ZXItPnN0eWxlKCkpOwogICAgICAgICBmaXJzdExldHRlci0+YWRkQ2hpbGQobGV0dGVyKTsK
IAogICAgICAgICB0ZXh0T2JqLT5kZXN0cm95KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJPYmplY3QuY3BwCmluZGV4IGU2Njk0NzYuLmEzMTA2NGQgMTAwNzU1Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCkBAIC0xNjg4LDkgKzE2ODgsOSBAQCB2b2lkIFJl
bmRlck9iamVjdDo6aGFuZGxlRHluYW1pY0Zsb2F0UG9zaXRpb25DaGFuZ2UoKQogICAgIH0KIH0K
IAotdm9pZCBSZW5kZXJPYmplY3Q6OnNldEFuaW1hdGFibGVTdHlsZShQYXNzUmVmUHRyPFJlbmRl
clN0eWxlPiBzdHlsZSkKK3ZvaWQgUmVuZGVyT2JqZWN0OjpzZXRBbmltYXRhYmxlU3R5bGUoUGFz
c1JlZlB0cjxSZW5kZXJTdHlsZT4gc3R5bGUsIGJvb2wgaXNHZW5lcmF0ZWRDb250ZW50KQogewot
ICAgIGlmICghaXNUZXh0KCkgJiYgc3R5bGUpCisgICAgaWYgKCghaXNUZXh0KCkgfHwgaXNHZW5l
cmF0ZWRDb250ZW50KSAmJiBzdHlsZSkKICAgICAgICAgc2V0U3R5bGUoYW5pbWF0aW9uKCktPnVw
ZGF0ZUFuaW1hdGlvbnModGhpcywgc3R5bGUuZ2V0KCkpKTsKICAgICBlbHNlCiAgICAgICAgIHNl
dFN0eWxlKHN0eWxlKTsKQEAgLTIyMTMsNiArMjIxMywxOSBAQCBib29sIFJlbmRlck9iamVjdDo6
aXNSb290ZWQoUmVuZGVyVmlldyoqIHZpZXcpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK05vZGUq
IFJlbmRlck9iamVjdDo6Z2VuZXJhdGluZ05vZGUoKSBjb25zdAoreworICAgIE5vZGUqIG5vZGUg
PSBtX25vZGUgPT0gZG9jdW1lbnQoKSA/IDAgOiBtX25vZGU7CisgICAgaWYgKG5vZGUpCisgICAg
ICAgIHJldHVybiBub2RlOworCisgICAgZm9yIChSZW5kZXJPYmplY3QqIG9iamVjdCA9IHBhcmVu
dCgpOyBvYmplY3Q7IG9iamVjdCA9IG9iamVjdC0+cGFyZW50KCkpIHsKKyAgICAgICAgaWYgKE5v
ZGUqIG5vZGUgPSAob2JqZWN0LT5ub2RlKCkgPT0gb2JqZWN0LT5kb2N1bWVudCgpID8gMCA6IG9i
amVjdC0+bm9kZSgpKSkKKyAgICAgICAgICAgIHJldHVybiBub2RlOworICAgIH0KKyAgICByZXR1
cm4gMDsKK30KKwogUmVuZGVyT2JqZWN0KiBSZW5kZXJPYmplY3Q6OnJlbmRlcmVyRm9yUm9vdEJh
Y2tncm91bmQoKQogewogICAgIEFTU0VSVChpc1Jvb3QoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyT2JqZWN0LmgKaW5kZXggOTBjNDljOC4uZTk5OTgzNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaApAQCAtNTc3LDcgKzU3Nyw4IEBAIHB1YmxpYzoKICAg
ICAvLyBSZXR1cm5zIHRoZSBzdHlsZWQgbm9kZSB0aGF0IGNhdXNlZCB0aGUgZ2VuZXJhdGlvbiBv
ZiB0aGlzIHJlbmRlcmVyLgogICAgIC8vIFRoaXMgaXMgdGhlIHNhbWUgYXMgbm9kZSgpIGV4Y2Vw
dCBmb3IgcmVuZGVyZXJzIG9mIDpiZWZvcmUgYW5kIDphZnRlcgogICAgIC8vIHBzZXVkbyBlbGVt
ZW50cyBmb3Igd2hpY2ggdGhlaXIgcGFyZW50IG5vZGUgaXMgcmV0dXJuZWQuCi0gICAgTm9kZSog
Z2VuZXJhdGluZ05vZGUoKSBjb25zdCB7IHJldHVybiBtX25vZGUgPT0gZG9jdW1lbnQoKSA/IDAg
OiBtX25vZGU7IH0KKyAgICBOb2RlKiBnZW5lcmF0aW5nTm9kZSgpIGNvbnN0OworCiAgICAgdm9p
ZCBzZXROb2RlKE5vZGUqIG5vZGUpIHsgbV9ub2RlID0gbm9kZTsgfQogCiAgICAgRG9jdW1lbnQq
IGRvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gbV9ub2RlLT5kb2N1bWVudCgpOyB9CkBAIC02NTks
OSArNjYwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaXJ0eUxpbmVzRnJvbUNoYW5n
ZWRDaGlsZChSZW5kZXJPYmplY3QqKTsKIAogICAgIC8vIENhbGxlZCB0byB1cGRhdGUgYSBzdHls
ZSB0aGF0IGlzIGFsbG93ZWQgdG8gdHJpZ2dlciBhbmltYXRpb25zLgotICAgIC8vIEZJWE1FOiBS
aWdodCBub3cgdGhpcyB3aWxsIHR5cGljYWxseSBiZSBjYWxsZWQgb25seSB3aGVuIHVwZGF0aW5n
IGhhcHBlbnMgZnJvbSB0aGUgRE9NIG9uIGV4cGxpY2l0IGVsZW1lbnRzLgotICAgIC8vIFdlIGRv
bid0IHlldCBoYW5kbGUgZ2VuZXJhdGVkIGNvbnRlbnQgYW5pbWF0aW9uIHN1Y2ggYXMgZmlyc3Qt
bGV0dGVyIG9yIGJlZm9yZS9hZnRlciAod2UnbGwgd29ycnkgYWJvdXQgdGhpcyBsYXRlcikuCi0g
ICAgdm9pZCBzZXRBbmltYXRhYmxlU3R5bGUoUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4pOworICAg
IHZvaWQgc2V0QW5pbWF0YWJsZVN0eWxlKFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+LCBib29sIGlz
R2VuZXJhdGVkQ29udGVudCA9IGZhbHNlKTsKIAogICAgIC8vIFNldCB0aGUgc3R5bGUgb2YgdGhl
IG9iamVjdCBhbmQgdXBkYXRlIHRoZSBzdGF0ZSBvZiB0aGUgb2JqZWN0IGFjY29yZGluZ2x5Lgog
ICAgIHZpcnR1YWwgdm9pZCBzZXRTdHlsZShQYXNzUmVmUHRyPFJlbmRlclN0eWxlPik7Ci0tIAox
LjcuOS41Cgo=
</data>
<flag name="review"
          id="151973"
          type_id="1"
          status="-"
          setter="simon.fraser"
    />
    <flag name="commit-queue"
          id="151974"
          type_id="3"
          status="-"
          setter="simon.fraser"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>145358</attachid>
            <date>2012-06-01 12:39:51 -0700</date>
            <delta_ts>2012-06-01 18:22:49 -0700</delta_ts>
            <desc>Patch V6.</desc>
            <filename>0001-Apply-animations-and-transitions-for-first-letter-el.patch</filename>
            <type>text/plain</type>
            <size>30067</size>
            <attacher name="Igor Trindade Oliveira">igor.oliveira</attacher>
            
              <data encoding="base64">RnJvbSA3NjA0OGNmMjM5ZTMwYzVmMjQ2MDc1NDRhOGNhMmEzNjFkZjBhODA3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBJZ29yIE9saXZlaXJhIDxpZ29yLm9Ac2lzYS5zYW1zdW5nLmNv
bT4KRGF0ZTogV2VkLCAzMCBNYXkgMjAxMiAxNzozNzo1OCAtMDcwMApTdWJqZWN0OiBbUEFUQ0hd
IEFwcGx5IGFuaW1hdGlvbnMgYW5kIHRyYW5zaXRpb25zIGZvciBmaXJzdC1sZXR0ZXIgZWxlbWVu
dAoKLS0tCiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8ICAgMTggKysrKysKIC4uLi9hbmltYXRpb25zL2ZpcnN0LWxldHRlci1hbmltYXRpb24tZXhw
ZWN0ZWQudHh0IHwgICAgNiArKwogTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9maXJzdC1sZXR0ZXIt
YW5pbWF0aW9uLmh0bWwgfCAgIDcwICsrKysrKysrKysrKysrKysKIC4uLi9maXJzdC1sZXR0ZXIt
cGxheS1zdGF0ZS1leHBlY3RlZC50eHQgICAgICAgICAgIHwgICAgNiArKwogLi4uL2FuaW1hdGlv
bnMvZmlyc3QtbGV0dGVyLXBsYXktc3RhdGUuaHRtbCAgICAgICAgfCAgIDgzICsrKysrKysrKysr
KysrKysrKysKIC4uLi9maXJzdC1sZXR0ZXItY29sb3ItdHJhbnNpdGlvbi1leHBlY3RlZC50eHQg
ICAgIHwgICAgMiArCiAuLi4vdHJhbnNpdGlvbnMvZmlyc3QtbGV0dGVyLWNvbG9yLXRyYW5zaXRp
b24uaHRtbCB8ICAgNTYgKysrKysrKysrKysrKwogLi4uL2ZpcnN0LWxldHRlci10cmFuc2l0aW9u
LWV4cGVjdGVkLnR4dCAgICAgICAgICAgfCAgIDEwICsrKwogLi4uL3RyYW5zaXRpb25zL2ZpcnN0
LWxldHRlci10cmFuc2l0aW9uLmh0bWwgICAgICAgfCAgIDg1ICsrKysrKysrKysrKysrKysrKysr
CiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg
NDcgKysrKysrKysrKysKIFNvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJh
c2UuY3BwICAgIHwgICAgNiArLQogLi4uL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9u
Q29udHJvbGxlci5jcHAgfCAgICA5ICstLQogLi4uL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vSW1w
bGljaXRBbmltYXRpb24uY3BwICAgfCAgICA2ICstCiAuLi4vV2ViQ29yZS9wYWdlL2FuaW1hdGlv
bi9LZXlmcmFtZUFuaW1hdGlvbi5jcHAgICB8ICAgMTIgKy0tCiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQmxvY2suY3BwICAgICAgICAgICB8ICAgMjYgKysrKy0tCiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCAgICAgICAgICB8ICAgMTcgKysrLQogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oICAgICAgICAgICAgfCAgIDEwICsr
LQogMTcgZmlsZXMgY2hhbmdlZCwgNDM5IGluc2VydGlvbnMoKyksIDMwIGRlbGV0aW9ucygtKQog
Y3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2FuaW1hdGlvbnMvZmlyc3QtbGV0dGVyLWFu
aW1hdGlvbi1leHBlY3RlZC50eHQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9hbmlt
YXRpb25zL2ZpcnN0LWxldHRlci1hbmltYXRpb24uaHRtbAogY3JlYXRlIG1vZGUgMTAwNjQ0IExh
eW91dFRlc3RzL2FuaW1hdGlvbnMvZmlyc3QtbGV0dGVyLXBsYXktc3RhdGUtZXhwZWN0ZWQudHh0
CiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9maXJzdC1sZXR0ZXIt
cGxheS1zdGF0ZS5odG1sCiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvdHJhbnNpdGlv
bnMvZmlyc3QtbGV0dGVyLWNvbG9yLXRyYW5zaXRpb24tZXhwZWN0ZWQudHh0CiBjcmVhdGUgbW9k
ZSAxMDA2NDQgTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvZmlyc3QtbGV0dGVyLWNvbG9yLXRyYW5z
aXRpb24uaHRtbAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL3RyYW5zaXRpb25zL2Zp
cnN0LWxldHRlci10cmFuc2l0aW9uLWV4cGVjdGVkLnR4dAogY3JlYXRlIG1vZGUgMTAwNjQ0IExh
eW91dFRlc3RzL3RyYW5zaXRpb25zL2ZpcnN0LWxldHRlci10cmFuc2l0aW9uLmh0bWwKCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5k
ZXggNmNkODEyMS4uOGI4NGI4YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisr
KyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEyLTA1LTMxICBJ
Z29yIE9saXZlaXJhICA8aWdvci5vQHNpc2Euc2Ftc3VuZy5jb20+CisKKyAgICAgICAgQXBwbHkg
YW5pbWF0aW9ucyBhbmQgdHJhbnNpdGlvbnMgZm9yIGZpcnN0LWxldHRlciBlbGVtZW50CisKKyAg
ICAgICAgQXBwbHkgYW5pbWF0aW9ucyBhbmQgdHJhbnNpdGlvbnMgZm9yIGZpcnN0LWxldHRlciBl
bGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04
NTI1MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
YW5pbWF0aW9ucy9maXJzdC1sZXR0ZXItYW5pbWF0aW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogYW5pbWF0aW9ucy9maXJzdC1sZXR0ZXItYW5pbWF0aW9uLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGFuaW1hdGlvbnMvZmlyc3QtbGV0dGVyLXBsYXktc3RhdGUtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBhbmltYXRpb25zL2ZpcnN0LWxldHRlci1wbGF5LXN0YXRlLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIHRyYW5zaXRpb25zL2ZpcnN0LWxldHRlci1jb2xvci10cmFu
c2l0aW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdHJhbnNpdGlvbnMvZmlyc3Qt
bGV0dGVyLWNvbG9yLXRyYW5zaXRpb24uaHRtbDogQWRkZWQuCisgICAgICAgICogdHJhbnNpdGlv
bnMvZmlyc3QtbGV0dGVyLXRyYW5zaXRpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiB0cmFuc2l0aW9ucy9maXJzdC1sZXR0ZXItdHJhbnNpdGlvbi5odG1sOiBBZGRlZC4KKwogMjAx
Mi0wNS0yOSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIERGRyBz
aG91bGQga2VlcCBjYXB0dXJlZCB2YXJpYWJsZXMgYWxpdmUgdW50aWwgdGhlIChpbmxpbmUpIHJl
dHVybi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvZmlyc3QtbGV0dGVyLWFu
aW1hdGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9hbmltYXRpb25zL2ZpcnN0LWxldHRl
ci1hbmltYXRpb24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjliOGEwMDYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9hbmltYXRpb25zL2Zp
cnN0LWxldHRlci1hbmltYXRpb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNiBAQAorTG9yZW0g
aXBzdW0gZG9sb3Igc2l0IGFtZXQuCitBbmltYXRpb25zIHRlc3QgcmVzdWx0OiAKKworUEFTUwor
UEFTUworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hbmltYXRpb25zL2ZpcnN0LWxldHRlci1h
bmltYXRpb24uaHRtbCBiL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvZmlyc3QtbGV0dGVyLWFuaW1h
dGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE2OTcwZDAKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9hbmltYXRpb25zL2ZpcnN0LWxldHRlci1hbmlt
YXRpb24uaHRtbApAQCAtMCwwICsxLDcwIEBACis8IURPQ1RZUEUgaHRtbD4KKworPGh0bWw+Cis8
aGVhZD4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9InNjcmVlbiI+CisgICAgLmJveCB7
CisgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAgICB3aWR0aDogMTAwcHg7CisgICAgICBo
ZWlnaHQ6IDEwMHB4OworICAgICAgYmFja2dyb3VuZDogYmx1ZTsKKyAgICAgIC13ZWJraXQtYW5p
bWF0aW9uOiBib3hBbmltYXRpb24gMC4xcyAwLjFzIGxpbmVhcjsKKyAgICB9CisKKyAgICAuYm94
OjpmaXJzdC1sZXR0ZXIgeworICAgICAgY29sb3I6IGJsYWNrOworICAgICAgLXdlYmtpdC1hbmlt
YXRpb246IGZpcnN0TGV0dGVyQW5pbWF0aW9uIDAuMXMgMC4ycyBmb3J3YXJkcyBlYXNlLW91dDsK
KyAgICB9CisKKyAgICBALXdlYmtpdC1rZXlmcmFtZXMgZmlyc3RMZXR0ZXJBbmltYXRpb24gewor
ICAgICAgZnJvbSB7IGZvbnQtc2l6ZTogMjRwdDt9CisgICAgICB0byB7IGZvbnQtc2l6ZTogNDBw
dDt9CisgICAgfQorCisgICAgQC13ZWJraXQta2V5ZnJhbWVzIGJveEFuaW1hdGlvbiB7CisgICAg
ICBmcm9tIHsgCisgICAgICAgICAgICAgZm9udC1zaXplOiA0MHB0OworICAgICAgICAgICAgIC13
ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7CisgICAgICB9CisgICAgICB0byB7CisgICAg
ICAgICAgIGZvbnQtc2l6ZTogMnB0OworICAgICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90
YXRlKDM2MGRlZyk7CisgICAgICB9CisgICAgfQorCis8L3N0eWxlPgorPHNjcmlwdCB0eXBlPSJ0
ZXh0L2phdmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04Ij4KKyAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpIHsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
OworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgfQor
CisgICAgdmFyIHJlc3VsdCA9ICJBbmltYXRpb25zIHRlc3QgcmVzdWx0OiA8YnI+PGJyPiI7Cisg
ICAgdmFyIGFuaW1hdGlvbnMgPSAwOworICAgIGZ1bmN0aW9uIGFuaW1hdGlvbkVuZGVkKGV2ZW50
KQorICAgIHsKKyAgICAgICAgaWYgKChldmVudC5hbmltYXRpb25OYW1lID09ICJmaXJzdExldHRl
ckFuaW1hdGlvbiIgfHwgZXZlbnQuYW5pbWF0aW9uTmFtZSA9PSAiYm94QW5pbWF0aW9uIikgJiYK
KyAgICAgICAgICAgIHBhcnNlRmxvYXQoZXZlbnQuZWxhcHNlZFRpbWUpLnRvRml4ZWQoMikgPT0g
MC4xKQorICAgICAgICAgICByZXN1bHQgKz0gIlBBU1M8YnI+IjsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICByZXN1bHQgKz0gIkZBSUw8YnI+IjsKKworICAgICAgICArK2FuaW1hdGlvbnM7Cisg
ICAgICAgIGlmIChhbmltYXRpb25zID09IDIpIHsKKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdyZXN1bHQnKS5pbm5lckhUTUwgPSByZXN1bHQ7CisgICAgICAgICAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHdpbmRvdy5h
ZGRFdmVudExpc3RlbmVyKCJ3ZWJraXRBbmltYXRpb25FbmQiLCBhbmltYXRpb25FbmRlZCwgZmFs
c2UgKTsKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisgIDxkaXYgY2xhc3M9ImJveCI+Cisg
ICAgTG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQuCisgIDwvZGl2PgorICA8ZGl2IGlkPSJyZXN1
bHQiIHN0eWxlPSJwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOjE1MHB4Ij4KKyAgPC9kaXY+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hbmltYXRpb25zL2ZpcnN0LWxl
dHRlci1wbGF5LXN0YXRlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvZmly
c3QtbGV0dGVyLXBsYXktc3RhdGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjg1NjZlNTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9hbmlt
YXRpb25zL2ZpcnN0LWxldHRlci1wbGF5LXN0YXRlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDYg
QEAKK1RoaXMgdGVzdHMgdGhlIG9wZXJhdGlvbiBvZiAtd2Via2l0LWFuaW1hdGlvbi1wbGF5LXN0
YXRlLiBBZnRlciA1MCBtaWxsaXNlY29uZHMgdGhlIGJveCBzaG91bGQgc3RvcCBhbmQgYWZ0ZXIg
MTAwIG1pbGxpc2Vjb25kcyBpdCBzaG91bGQgc3RhcnQgYWdhaW4uIFdlIHRlc3QgaXQgYm90aCB3
aGlsZSBpbiBtb3Rpb24gYW5kIHdoZW4gc3RvcHBlZC4KKworTG9yZW0gaXBzdW0gZG9sb3Igc2l0
IGFtZXQuCitQQVNTIC0gImxlZnQiIHByb3BlcnR5IGZvciAiYm94MSIgZWxlbWVudCBhdCAwLjA1
cyBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiAyMDAKK1BBU1MgLSAibGVmdCIgcHJvcGVydHkgZm9y
ICJib3gxIiBlbGVtZW50IGF0IDAuMXMgc2F3IHNvbWV0aGluZyBjbG9zZSB0bzogMjAwCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvZmlyc3QtbGV0dGVyLXBsYXktc3RhdGUu
aHRtbCBiL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvZmlyc3QtbGV0dGVyLXBsYXktc3RhdGUuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jY2I5ZTVjCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9maXJzdC1sZXR0ZXItcGxheS1zdGF0ZS5o
dG1sCkBAIC0wLDAgKzEsODMgQEAKKzxodG1sPgorPGhlYWQ+CisgIDx0aXRsZT5UZXN0IG9mIC13
ZWJraXQtYW5pbWF0aW9uLXBsYXktc3RhdGUgd2l0aCBmaXJzdC1sZXR0ZXIgcHNldWRvIGVsZW1l
bnQ8L3RpdGxlPgorICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiIG1lZGlhPSJzY3JlZW4iPgorICAg
ICNib3gxIHsKKyAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICAgIGhlaWdodDogMTAwcHg7
CisgICAgICB3aWR0aDogMTAwcHg7CisgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBibHVlOworICAg
ICAgY29sb3I6IHJlZDsKKyAgICAgIC13ZWJraXQtYW5pbWF0aW9uOiAibW92ZTEiIDAuMXMgbGlu
ZWFyOworICAgIH0KKyAgICAjYm94MTo6Zmlyc3QtbGV0dGVyIHsKKyAgICAgIGNvbG9yOiB3aGl0
ZTsKKyAgICAgIC13ZWJraXQtYW5pbWF0aW9uOiBmaXJzdExldHRlckFuaW1hdGlvbiAwLjEycyBs
aW5lYXI7CisgICAgfQorICAgIEAtd2Via2l0LWtleWZyYW1lcyAibW92ZTEiIHsKKyAgICAgICAg
ZnJvbSB7IGxlZnQ6IDBweCA7IGNvbG9yOiByZWQ7fQorICAgICAgICB0byAgIHsgbGVmdDogNDAw
cHg7IGNvbG9yOiBibGFjazt9CisgICAgfQorICAgIEAtd2Via2l0LWtleWZyYW1lcyAiZmlyc3RM
ZXR0ZXJBbmltYXRpb24iIHsKKyAgICAgICAgZnJvbSB7IGNvbG9yOiB3aGl0ZTsgfQorICAgICAg
ICB0byB7IGNvbG9yOiBncmVlbjsgfQorICAgIH0KKyAgPC9zdHlsZT4KKyAgPHNjcmlwdCBzcmM9
InJlc291cmNlcy9hbmltYXRpb24tdGVzdC1oZWxwZXJzLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3Jp
cHQiIGNoYXJzZXQ9InV0Zi04Ij48L3NjcmlwdD4KKyAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFz
Y3JpcHQiIGNoYXJzZXQ9InV0Zi04Ij4KKyAgICAKKyAgICBjb25zdCBleHBlY3RlZFZhbHVlcyA9
IFsKKyAgICAgIC8vIFthbmltYXRpb24tbmFtZSwgdGltZSwgZWxlbWVudC1pZCwgcHJvcGVydHks
IGV4cGVjdGVkLXZhbHVlLCB0b2xlcmFuY2VdCisgICAgICBbIm1vdmUxIiwgMC4wNSwgImJveDEi
LCAibGVmdCIsIDIwMCwgMTVdLAorICAgICAgWyJtb3ZlMSIsIDAuMSwgImJveDEiLCAibGVmdCIs
IDIwMCwgMTVdCisgICAgXTsKKyAgICAKKyAgICBmdW5jdGlvbiBzdG9wKCkKKyAgICB7CisgICAg
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJib3gxIikuc3R5bGUud2Via2l0QW5pbWF0aW9u
UGxheVN0YXRlID0gInBhdXNlZCI7CisgICAgfQorCisgICAgZnVuY3Rpb24gc3RhcnQoKQorICAg
IHsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImJveDEiKS5zdHlsZS53ZWJraXRB
bmltYXRpb25QbGF5U3RhdGUgPSAicnVubmluZyI7CisgICAgfQorCisgICAgZnVuY3Rpb24gc2V0
VGltZXJzKCkKKyAgICB7CisgICAgICAgIHNldFRpbWVvdXQoc3RvcCwgNTApOworICAgICAgICBz
ZXRUaW1lb3V0KHN0YXJ0LCAxNTApOworICAgIH0KKworICAgIHZhciBtb3ZlMUFuaW1hdGlvbkVu
ZGVkID0gZmFsc2U7CisgICAgZnVuY3Rpb24gYW5pbWF0aW9uRW5kZWQoZXZlbnQpCisgICAgewor
ICAgICAgICBpZiAoZXZlbnQuYW5pbWF0aW9uTmFtZSA9PSAibW92ZTEiKQorICAgICAgICAgICAg
bW92ZTFBbmltYXRpb25FbmRlZCA9IHRydWU7CisKKyAgICAgICAgaWYgKGV2ZW50LmFuaW1hdGlv
bk5hbWUgPT0gImZpcnN0TGV0dGVyQW5pbWF0aW9uIiAmJiBtb3ZlMUFuaW1hdGlvbkVuZGVkKSB7
CisgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0Rmlyc3RMZXR0ZXIn
KS5pbm5lckhUTUwgPSAiVGVzdCBGYWlsZWQ6IGZpcnN0TGV0dGVyQW5pbWF0aW9uIHNob3VsZCBl
bmQgYmVmb3JlIG1vdmUxIGFuaW1hdGlvbjxicj4iOworICAgICAgICB9CisgICAgICAgICAgICAK
KyAgICB9CisKKyAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigid2Via2l0QW5pbWF0aW9uRW5k
IiwgYW5pbWF0aW9uRW5kZWQsIGZhbHNlICk7CisgICAgCisgICAgcnVuQW5pbWF0aW9uVGVzdChl
eHBlY3RlZFZhbHVlcywgc2V0VGltZXJzLCBudWxsLCB0cnVlKTsKKyAgICAKKyAgPC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPgorVGhpcyB0ZXN0cyB0aGUgb3BlcmF0aW9uIG9mIC13ZWJr
aXQtYW5pbWF0aW9uLXBsYXktc3RhdGUuIEFmdGVyIDUwIG1pbGxpc2Vjb25kcyB0aGUgYm94IHNo
b3VsZCBzdG9wIGFuZCBhZnRlciAxMDAgbWlsbGlzZWNvbmRzCitpdCBzaG91bGQgc3RhcnQgYWdh
aW4uIFdlIHRlc3QgaXQgYm90aCB3aGlsZSBpbiBtb3Rpb24gYW5kIHdoZW4gc3RvcHBlZC4KKzxk
aXYgaWQ9ImJveDEiPgorICAgIExvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LgorPC9kaXY+Cis8
ZGl2IGlkPSJib3gyIj4KKzwvZGl2PgorPGRpdiBpZD0icmVzdWx0Ij4KKzwvZGl2PgorPGRpdiBp
ZD0icmVzdWx0Rmlyc3RMZXR0ZXIiPgorPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy90cmFuc2l0aW9ucy9maXJzdC1sZXR0ZXItY29sb3ItdHJhbnNpdGlv
bi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90cmFuc2l0aW9ucy9maXJzdC1sZXR0ZXItY29s
b3ItdHJhbnNpdGlvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uYjA1N2IwZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RyYW5zaXRpb25z
L2ZpcnN0LWxldHRlci1jb2xvci10cmFuc2l0aW9uLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIg
QEAKK0xvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LgorUEFTUwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvdHJhbnNpdGlvbnMvZmlyc3QtbGV0dGVyLWNvbG9yLXRyYW5zaXRpb24uaHRtbCBiL0xh
eW91dFRlc3RzL3RyYW5zaXRpb25zL2ZpcnN0LWxldHRlci1jb2xvci10cmFuc2l0aW9uLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTJmNTc1YgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3RyYW5zaXRpb25zL2ZpcnN0LWxldHRlci1jb2xvci10cmFuc2l0
aW9uLmh0bWwKQEAgLTAsMCArMSw1NiBAQAorPCFET0NUWVBFIGh0bWw+CisKKzxodG1sPgorPGhl
YWQ+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiIG1lZGlhPSJzY3JlZW4iPgorICAgIC5ib3ggewor
ICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICAgIGJhY2tncm91
bmQtY29sb3I6IGJsdWU7CisgICAgfQorICAgIAorICAgIC5ib3g6OmZpcnN0LWxldHRlciB7Cisg
ICAgICBmb250LXNpemU6IDI0cHQ7CisgICAgICBjb2xvcjogYmxhY2s7CisgICAgICAtd2Via2l0
LXRyYW5zaXRpb246IGNvbG9yIDAuMXM7CisgICAgfQorCisgICAgYm9keS5nbyAuYm94OjpmaXJz
dC1sZXR0ZXIgeworICAgICAgY29sb3I6IHdoaXRlOworICAgIH0KKworPC9zdHlsZT4KKzxzY3Jp
cHQgIHR5cGU9InRleHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiPgorICAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KCk7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUo
KTsKKyAgICB9CisKKyAgICB2YXIgcmVzdWx0ID0gIiI7CisgICAgZnVuY3Rpb24gdHJhbnNpdGlv
bkVuZGVkKGV2ZW50KQorICAgIHsgICAKKyAgICAgICAgaWYgKGV2ZW50LnByb3BlcnR5TmFtZSA9
PSAiY29sb3IiKQorICAgICAgICAgICByZXN1bHQgKz0gIlBBU1MiOworICAgICAgICBlbHNlCisg
ICAgICAgICAgIHJlc3VsdCArPSAiRkFJTCI7CisKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ3Jlc3VsdCcpLmlubmVySFRNTCA9IHJlc3VsdDsKKyAgICAgICAgaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5v
dGlmeURvbmUoKTsKKyAgICB9CisKKyAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lciggJ3dlYmtp
dFRyYW5zaXRpb25FbmQnLCB0cmFuc2l0aW9uRW5kZWQsIGZhbHNlICk7CisKKyAgICB3aW5kb3cu
YWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgZG9jdW1lbnQu
Ym9keS5jbGFzc05hbWUgPSAiZ28iOworICAgIH0sIGZhbHNlKTsKKzwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+CisgIDxkaXYgY2xhc3M9ImJveCI+CisgICAgTG9yZW0gaXBzdW0gZG9sb3Igc2l0
IGFtZXQuCisgIDwvZGl2PgorICA8ZGl2IGlkPSJyZXN1bHQiPgorICA8L2Rpdj4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RyYW5zaXRpb25zL2ZpcnN0LWxldHRl
ci10cmFuc2l0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RyYW5zaXRpb25zL2ZpcnN0
LWxldHRlci10cmFuc2l0aW9uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi41ZDQ0OGJlMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RyYW5z
aXRpb25zL2ZpcnN0LWxldHRlci10cmFuc2l0aW9uLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEw
IEBACitCb3ggT25lCitCb3ggdHdvCitUcmFuc3Rpb25zIHRlc3QgcmVzdWx0OiAKKworUEFTUyAK
K1BBU1MgCitQQVNTIAorUEFTUyAKK1BBU1MgCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Ry
YW5zaXRpb25zL2ZpcnN0LWxldHRlci10cmFuc2l0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy90cmFu
c2l0aW9ucy9maXJzdC1sZXR0ZXItdHJhbnNpdGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLmJlY2VlMDgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90
cmFuc2l0aW9ucy9maXJzdC1sZXR0ZXItdHJhbnNpdGlvbi5odG1sCkBAIC0wLDAgKzEsODUgQEAK
KzxodG1sPgorPGhlYWQ+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiIG1lZGlhPSJzY3JlZW4iPgor
ICAgIC5ib3ggeworICAgICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgICAgd2lkdGg6IDEwMHB4
OworICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICAgIGxlZnQ6IDEwMHB4OworICAgICAgYmFja2dy
b3VuZC1jb2xvcjogYmx1ZTsKKyAgICB9CisKKyAgICAuYm94OjpmaXJzdC1sZXR0ZXIgeworICAg
ICAgZm9udC1zaXplOiAyNHB0OworICAgICAgY29sb3I6IGJsYWNrOworICAgICAgLXdlYmtpdC10
cmFuc2l0aW9uOiBjb2xvciAwLjFzIDAuMXM7CisgICAgfQorCisgICAgI2ZpcnN0IHsKKyAgICAg
IC13ZWJraXQtdHJhbnNpdGlvbjogbGVmdCAwLjFzIDAuMTVzOworICAgIH0KKworICAgICNzZWNv
bmQgeworICAgICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC4xcyAwLjJzOworICAgIH0KKwor
ICAgIC5hbmltYXRpbmcgI2ZpcnN0IHsKKyAgICAgIGxlZnQ6IDQwMHB4OworICAgIH0KKworICAg
IC5hbmltYXRpbmcgI3NlY29uZCB7CisgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDM2
MGRlZyk7CisgICAgICBjb2xvcjogcHVycGxlOworICAgIH0KKworICAgIC5hbmltYXRpbmcgKjo6
Zmlyc3QtbGV0dGVyIHsKKyAgICAgIGNvbG9yOiB3aGl0ZTsKKyAgICB9CisKKworPC9zdHlsZT4K
KzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdHJhbnNpdGlvbi10ZXN0LWhlbHBlcnMuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCAgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+Cisg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2Fp
dFVudGlsRG9uZSgpOworICAgIH0KKworICAgIHZhciByZXN1bHQgPSAiVHJhbnN0aW9ucyB0ZXN0
IHJlc3VsdDogPGJyPjxicj4iOworICAgIHZhciB0cmFuc2l0aW9ucyA9IDA7CisgICAgZnVuY3Rp
b24gdHJhbnNpdGlvbkVuZGVkKGV2ZW50KQorICAgIHsKKyAgICAgICAgaWYgKChldmVudC5wcm9w
ZXJ0eU5hbWUgPT0gImNvbG9yIikgfHwgKGV2ZW50LnByb3BlcnR5TmFtZSA9PSAibGVmdCIpIHx8
IChldmVudC5wcm9wZXJ0eU5hbWUgPT0gIi13ZWJraXQtdHJhbnNmb3JtIikpCisgICAgICAgICAg
IHJlc3VsdCArPSAiUEFTUyA8YnI+IjsKKyAgICAgICAgZWxzZQorICAgICAgICAgICByZXN1bHQg
Kz0gIkZBSUwgPGJyPiI7CisKKyAgICAgICAgKyt0cmFuc2l0aW9uczsKKworICAgICAgICBpZiAo
dHJhbnNpdGlvbnMgPT0gNSkgeworICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J3Jlc3VsdCcpLmlubmVySFRNTCA9IHJlc3VsdDsKKyAgICAgICAgICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
bm90aWZ5RG9uZSgpOworICAgICAgICB9CisgICAgfQorCisgICAgd2luZG93LmFkZEV2ZW50TGlz
dGVuZXIoICd3ZWJraXRUcmFuc2l0aW9uRW5kJywgdHJhbnNpdGlvbkVuZGVkLCBmYWxzZSApOwor
CisgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBmdW5jdGlvbiAoKSB7CisgICAg
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb250YWluZXInKS5jbGFzc05hbWUgPSAnYW5p
bWF0aW5nJzsKKyAgICB9LCBmYWxzZSk7Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRp
diBpZD0iY29udGFpbmVyIj4KKyAgPGRpdiBpZD0iZmlyc3QiIGNsYXNzPSJib3giPgorICAgICAg
Qm94IE9uZQorICA8L2Rpdj4KKyAgPGRpdiBpZD0ic2Vjb25kIiBjbGFzcz0iYm94Ij4KKyAgICAg
IEJveCB0d28KKyAgPC9kaXY+Cis8L2Rpdj4KKyAgPGRpdiBpZD0icmVzdWx0Ij4KKyAgPC9kaXY+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2E2ZWRkOC4uZWUyZDVhNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDEyLTA1LTMxICBJZ29yIE9saXZlaXJhICA8aWdvci5v
QHNpc2Euc2Ftc3VuZy5jb20+CisKKyAgICAgICAgQXBwbHkgYW5pbWF0aW9ucyBhbmQgdHJhbnNp
dGlvbnMgZm9yIGZpcnN0LWxldHRlciBlbGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NTI1MworCisgICAgICAgIEFkZCBhbmltYXRpb25zIGFu
ZCB0cmFuc2l0aW9ucyBzdXBwb3J0IGZvciB0aGUgZmlyc3QtbGV0dGVyCisgICAgICAgIHBzZXVk
byBlbGVtZW50LgorICAgICAgICBJbnN0ZWFkIG9mIGNhbGxpbmcgUmVuZGVyT2plY3Q6Om5vZGUo
KSBpbiB0aGUgYW5pbWF0aW9ucyBjb2RlLAorICAgICAgICBub3cgd2UgbmVlZCB0byBjYWxsIFJl
bmRlck9iamVjdDo6Z2VuZXJhdGluZ05vZGUoKSBiZWNhdXNlCisgICAgICAgIHBzZXVkbyBlbGVt
ZW50cyBkb2VzIG5vdCBoYXZlIGEgTm9kZSBhc3NvY2lhdGVkIHdpdGggdGhlCisgICAgICAgIFJl
bmRlck9iamVjdC4KKworICAgICAgICBJbml0aWFsIHBhdGNoIGJ5IFNpbW9uIEZyYXNlci4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0czogYW5p
bWF0aW9ucy9maXJzdC1sZXR0ZXItYW5pbWF0aW9uLmh0bWwKKyAgICAgICAgICAgICAgIGFuaW1h
dGlvbnMvZmlyc3QtbGV0dGVyLXBsYXktc3RhdGUuaHRtbAorICAgICAgICAgICAgICAgdHJhbnNp
dGlvbnMvZmlyc3QtbGV0dGVyLWNvbG9yLXRyYW5zaXRpb24uaHRtbAorICAgICAgICAgICAgICAg
dHJhbnNpdGlvbnMvZmlyc3QtbGV0dGVyLXRyYW5zaXRpb24uaHRtbAorCisgICAgICAgICogcGFn
ZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRp
b25CYXNlOjp1cGRhdGVTdGF0ZU1hY2hpbmUpOgorICAgICAgICAqIHBhZ2UvYW5pbWF0aW9uL0Fu
aW1hdGlvbkNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uQ29udHJv
bGxlclByaXZhdGU6OnVwZGF0ZUFuaW1hdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0
aW9uQ29udHJvbGxlclByaXZhdGU6OnBhdXNlQW5pbWF0aW9uQXRUaW1lKToKKyAgICAgICAgKFdl
YkNvcmU6OkFuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRlOjpwYXVzZVRyYW5zaXRpb25BdFRpbWUp
OgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uQ29udHJvbGxlcjo6Y2FuY2VsQW5pbWF0aW9u
cyk6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25Db250cm9sbGVyOjp1cGRhdGVBbmltYXRp
b25zKToKKyAgICAgICAgKiBwYWdlL2FuaW1hdGlvbi9JbXBsaWNpdEFuaW1hdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbXBsaWNpdEFuaW1hdGlvbjo6cGF1c2VBbmltYXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6SW1wbGljaXRBbmltYXRpb246OnNlbmRUcmFuc2l0aW9uRXZlbnQpOgor
ICAgICAgICAqIHBhZ2UvYW5pbWF0aW9uL0tleWZyYW1lQW5pbWF0aW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OktleWZyYW1lQW5pbWF0aW9uOjpLZXlmcmFtZUFuaW1hdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpLZXlmcmFtZUFuaW1hdGlvbjo6cGF1c2VBbmltYXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6S2V5ZnJhbWVBbmltYXRpb246OmVuZEFuaW1hdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpLZXlmcmFtZUFuaW1hdGlvbjo6c2VuZEFuaW1hdGlvbkV2ZW50KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6
OnVwZGF0ZUZpcnN0TGV0dGVyU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6
OmNyZWF0ZUZpcnN0TGV0dGVyUmVuZGVyZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJP
YmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpzZXRBbmltYXRhYmxl
U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpzdHlsZWRHZW5lcmF0aW5n
Tm9kZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2Jq
ZWN0Lmg6CisgICAgICAgIChSZW5kZXJPYmplY3QpOgorCiAyMDEyLTA1LTI5ICBTaGF3biBTaW5n
aCAgPHNoYXduc2luZ2hAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gbWFrZSBX
ZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBvYmplY3QgdXNhYmxlIGJ5IG5vbi13ZWJraXQgY29kZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcAppbmRl
eCAzM2Q2MzI2Li45ZTgwZDg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1h
dGlvbi9BbmltYXRpb25CYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlv
bi9BbmltYXRpb25CYXNlLmNwcApAQCAtMTkxLDcgKzE5MSw3IEBAIHZvaWQgQW5pbWF0aW9uQmFz
ZTo6dXBkYXRlU3RhdGVNYWNoaW5lKEFuaW1TdGF0ZUlucHV0IGlucHV0LCBkb3VibGUgcGFyYW0p
CiAKICAgICAgICAgICAgICAgICAvLyBUcmlnZ2VyIGEgcmVuZGVyIHNvIHdlIGNhbiBzdGFydCB0
aGUgYW5pbWF0aW9uCiAgICAgICAgICAgICAgICAgaWYgKG1fb2JqZWN0KQotICAgICAgICAgICAg
ICAgICAgICBtX2NvbXBBbmltLT5hbmltYXRpb25Db250cm9sbGVyKCktPmFkZE5vZGVDaGFuZ2VU
b0Rpc3BhdGNoKG1fb2JqZWN0LT5ub2RlKCkpOworICAgICAgICAgICAgICAgICAgICBtX2NvbXBB
bmltLT5hbmltYXRpb25Db250cm9sbGVyKCktPmFkZE5vZGVDaGFuZ2VUb0Rpc3BhdGNoKG1fb2Jq
ZWN0LT5zdHlsZWRHZW5lcmF0aW5nTm9kZSgpKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICAgICAgQVNTRVJUKCFwYXVzZWQoKSk7CiAgICAgICAgICAgICAgICAgLy8gV2UncmUg
d2FpdGluZyBmb3IgdGhlIHN0YXJ0IHRpbWVyIHRvIGZpcmUgYW5kIHdlIGdvdCBhIHBhdXNlLiBD
YW5jZWwgdGhlIHRpbWVyLCBwYXVzZSBhbmQgd2FpdApAQCAtMjUyLDcgKzI1Miw3IEBAIHZvaWQg
QW5pbWF0aW9uQmFzZTo6dXBkYXRlU3RhdGVNYWNoaW5lKEFuaW1TdGF0ZUlucHV0IGlucHV0LCBk
b3VibGUgcGFyYW0pCiAKICAgICAgICAgICAgICAgICAvLyBEaXNwYXRjaCB1cGRhdGVTdHlsZUlm
TmVlZGVkIHNvIHdlIGNhbiBzdGFydCB0aGUgYW5pbWF0aW9uCiAgICAgICAgICAgICAgICAgaWYg
KG1fb2JqZWN0KQotICAgICAgICAgICAgICAgICAgICBtX2NvbXBBbmltLT5hbmltYXRpb25Db250
cm9sbGVyKCktPmFkZE5vZGVDaGFuZ2VUb0Rpc3BhdGNoKG1fb2JqZWN0LT5ub2RlKCkpOworICAg
ICAgICAgICAgICAgICAgICBtX2NvbXBBbmltLT5hbmltYXRpb25Db250cm9sbGVyKCktPmFkZE5v
ZGVDaGFuZ2VUb0Rpc3BhdGNoKG1fb2JqZWN0LT5zdHlsZWRHZW5lcmF0aW5nTm9kZSgpKTsKICAg
ICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgLy8gV2UgYXJlIHBhdXNpbmcgd2hp
bGUgd2FpdGluZyBmb3IgYSBzdGFydCByZXNwb25zZS4gQ2FuY2VsIHRoZSBhbmltYXRpb24gYW5k
IHdhaXQuIFdoZW4gCiAgICAgICAgICAgICAgICAgLy8gd2UgdW5wYXVzZSwgd2Ugd2lsbCBhY3Qg
YXMgdGhvdWdoIHRoZSBzdGFydCB0aW1lciBqdXN0IGZpcmVkCkBAIC0yOTgsNyArMjk4LDcgQEAg
dm9pZCBBbmltYXRpb25CYXNlOjp1cGRhdGVTdGF0ZU1hY2hpbmUoQW5pbVN0YXRlSW5wdXQgaW5w
dXQsIGRvdWJsZSBwYXJhbSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VtZU92ZXJyaWRk
ZW5BbmltYXRpb25zKCk7CiAKICAgICAgICAgICAgICAgICAgICAgLy8gRmlyZSBvZmYgYW5vdGhl
ciBzdHlsZSBjaGFuZ2Ugc28gd2UgY2FuIHNldCB0aGUgZmluYWwgdmFsdWUKLSAgICAgICAgICAg
ICAgICAgICAgbV9jb21wQW5pbS0+YW5pbWF0aW9uQ29udHJvbGxlcigpLT5hZGROb2RlQ2hhbmdl
VG9EaXNwYXRjaChtX29iamVjdC0+bm9kZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgbV9jb21w
QW5pbS0+YW5pbWF0aW9uQ29udHJvbGxlcigpLT5hZGROb2RlQ2hhbmdlVG9EaXNwYXRjaChtX29i
amVjdC0+c3R5bGVkR2VuZXJhdGluZ05vZGUoKSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAvLyBXZSBhcmUgcGF1c2luZyB3aGlsZSBy
dW5uaW5nLiBDYW5jZWwgdGhlIGFuaW1hdGlvbiBhbmQgd2FpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQ29udHJvbGxlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250cm9sbGVyLmNwcAppbmRleCBjNDkx
MTllLi45ODg1OGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9B
bmltYXRpb25Db250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlv
bi9BbmltYXRpb25Db250cm9sbGVyLmNwcApAQCAtMTAwLDcgKzEwMCw3IEBAIGRvdWJsZSBBbmlt
YXRpb25Db250cm9sbGVyUHJpdmF0ZTo6dXBkYXRlQW5pbWF0aW9ucyhTZXRDaGFuZ2VkIGNhbGxT
ZXRDaGFuZ2VkLyoKICAgICAgICAgICAgICAgICB0aW1lVG9OZXh0U2VydmljZSA9IHQ7CiAgICAg
ICAgICAgICBpZiAoIXRpbWVUb05leHRTZXJ2aWNlKSB7CiAgICAgICAgICAgICAgICAgaWYgKGNh
bGxTZXRDaGFuZ2VkID09IENhbGxTZXRDaGFuZ2VkKSB7Ci0gICAgICAgICAgICAgICAgICAgIE5v
ZGUqIG5vZGUgPSBpdC0+Zmlyc3QtPm5vZGUoKTsKKyAgICAgICAgICAgICAgICAgICAgTm9kZSog
bm9kZSA9IGl0LT5maXJzdC0+c3R5bGVkR2VuZXJhdGluZ05vZGUoKTsKICAgICAgICAgICAgICAg
ICAgICAgQVNTRVJUKCFub2RlIHx8IChub2RlLT5kb2N1bWVudCgpICYmICFub2RlLT5kb2N1bWVu
dCgpLT5pblBhZ2VDYWNoZSgpKSk7CiAgICAgICAgICAgICAgICAgICAgIG5vZGUtPnNldE5lZWRz
U3R5bGVSZWNhbGMoU3ludGhldGljU3R5bGVDaGFuZ2UpOwogICAgICAgICAgICAgICAgICAgICBj
YWxsZWRTZXRDaGFuZ2VkID0gdHJ1ZTsKQEAgLTMyOCw3ICszMjgsNyBAQCBib29sIEFuaW1hdGlv
bkNvbnRyb2xsZXJQcml2YXRlOjpwYXVzZUFuaW1hdGlvbkF0VGltZShSZW5kZXJPYmplY3QqIHJl
bmRlcmVyLCBjbwogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoY29tcEFuaW0tPnBh
dXNlQW5pbWF0aW9uQXRUaW1lKG5hbWUsIHQpKSB7Ci0gICAgICAgIHJlbmRlcmVyLT5ub2RlKCkt
PnNldE5lZWRzU3R5bGVSZWNhbGMoU3ludGhldGljU3R5bGVDaGFuZ2UpOworICAgICAgICByZW5k
ZXJlci0+c3R5bGVkR2VuZXJhdGluZ05vZGUoKS0+c2V0TmVlZHNTdHlsZVJlY2FsYyhTeW50aGV0
aWNTdHlsZUNoYW5nZSk7CiAgICAgICAgIHN0YXJ0VXBkYXRlU3R5bGVJZk5lZWRlZERpc3BhdGNo
ZXIoKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMzQ2LDcgKzM0Niw3IEBAIGJv
b2wgQW5pbWF0aW9uQ29udHJvbGxlclByaXZhdGU6OnBhdXNlVHJhbnNpdGlvbkF0VGltZShSZW5k
ZXJPYmplY3QqIHJlbmRlcmVyLCBjCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChj
b21wQW5pbS0+cGF1c2VUcmFuc2l0aW9uQXRUaW1lKGNzc1Byb3BlcnR5SUQocHJvcGVydHkpLCB0
KSkgewotICAgICAgICByZW5kZXJlci0+bm9kZSgpLT5zZXROZWVkc1N0eWxlUmVjYWxjKFN5bnRo
ZXRpY1N0eWxlQ2hhbmdlKTsKKyAgICAgICAgcmVuZGVyZXItPnN0eWxlZEdlbmVyYXRpbmdOb2Rl
KCktPnNldE5lZWRzU3R5bGVSZWNhbGMoU3ludGhldGljU3R5bGVDaGFuZ2UpOwogICAgICAgICBz
dGFydFVwZGF0ZVN0eWxlSWZOZWVkZWREaXNwYXRjaGVyKCk7CiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KQEAgLTUwOCw3ICs1MDgsNyBAQCB2b2lkIEFuaW1hdGlvbkNvbnRyb2xsZXI6OmNh
bmNlbEFuaW1hdGlvbnMoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKICAgICAgICAgcmV0dXJuOwog
CiAgICAgaWYgKG1fZGF0YS0+Y2xlYXIocmVuZGVyZXIpKSB7Ci0gICAgICAgIE5vZGUqIG5vZGUg
PSByZW5kZXJlci0+bm9kZSgpOworICAgICAgICBOb2RlKiBub2RlID0gcmVuZGVyZXItPnN0eWxl
ZEdlbmVyYXRpbmdOb2RlKCk7CiAgICAgICAgIEFTU0VSVCghbm9kZSB8fCAobm9kZS0+ZG9jdW1l
bnQoKSAmJiAhbm9kZS0+ZG9jdW1lbnQoKS0+aW5QYWdlQ2FjaGUoKSkpOwogICAgICAgICBub2Rl
LT5zZXROZWVkc1N0eWxlUmVjYWxjKFN5bnRoZXRpY1N0eWxlQ2hhbmdlKTsKICAgICB9CkBAIC01
MzMsNyArNTMzLDYgQEAgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gQW5pbWF0aW9uQ29udHJvbGxl
cjo6dXBkYXRlQW5pbWF0aW9ucyhSZW5kZXJPYmplY3QqIHJlbmQKICAgICAvLyBhZ2FpbnN0IHRo
ZSBhbmltYXRpb25zIGluIHRoZSBzdHlsZSBhbmQgbWFrZSBzdXJlIHdlJ3JlIGluIHN5bmMuICBJ
ZiBkZXN0aW5hdGlvbiB2YWx1ZXMKICAgICAvLyBoYXZlIGNoYW5nZWQsIHdlIHJlc2V0IHRoZSBh
bmltYXRpb24uICBXZSB0aGVuIGRvIGEgYmxlbmQgdG8gZ2V0IG5ldyB2YWx1ZXMgYW5kIHdlIHJl
dHVybgogICAgIC8vIGEgbmV3IHN0eWxlLgotICAgIEFTU0VSVChyZW5kZXJlci0+bm9kZSgpKTsg
Ly8gRklYTUU6IFdlIGRvIG5vdCBhbmltYXRlIGdlbmVyYXRlZCBjb250ZW50IHlldC4KIAogICAg
IFJlZlB0cjxDb21wb3NpdGVBbmltYXRpb24+IHJlbmRlcmVyQW5pbWF0aW9ucyA9IG1fZGF0YS0+
YWNjZXNzQ29tcG9zaXRlQW5pbWF0aW9uKHJlbmRlcmVyKTsKICAgICBSZWZQdHI8UmVuZGVyU3R5
bGU+IGJsZW5kZWRTdHlsZSA9IHJlbmRlcmVyQW5pbWF0aW9ucy0+YW5pbWF0ZShyZW5kZXJlciwg
b2xkU3R5bGUsIG5ld1N0eWxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5p
bWF0aW9uL0ltcGxpY2l0QW5pbWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0
aW9uL0ltcGxpY2l0QW5pbWF0aW9uLmNwcAppbmRleCBmNzFhMTUzLi45Nzg5NzYyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9JbXBsaWNpdEFuaW1hdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vSW1wbGljaXRBbmltYXRpb24uY3Bw
CkBAIC0xMjksNyArMTI5LDcgQEAgdm9pZCBJbXBsaWNpdEFuaW1hdGlvbjo6cGF1c2VBbmltYXRp
b24oZG91YmxlIHRpbWVPZmZzZXQpCiAjZW5kaWYKICAgICAvLyBSZXN0b3JlIHRoZSBvcmlnaW5h
bCAodW5hbmltYXRlZCkgc3R5bGUKICAgICBpZiAoIXBhdXNlZCgpKQotICAgICAgICBzZXROZWVk
c1N0eWxlUmVjYWxjKG1fb2JqZWN0LT5ub2RlKCkpOworICAgICAgICBzZXROZWVkc1N0eWxlUmVj
YWxjKG1fb2JqZWN0LT5zdHlsZWRHZW5lcmF0aW5nTm9kZSgpKTsKIH0KIAogdm9pZCBJbXBsaWNp
dEFuaW1hdGlvbjo6ZW5kQW5pbWF0aW9uKCkKQEAgLTE2NSw4ICsxNjUsOCBAQCBib29sIEltcGxp
Y2l0QW5pbWF0aW9uOjpzZW5kVHJhbnNpdGlvbkV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZl
bnRUeXBlLCBkb3VibAogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgLy8gRGlzcGF0Y2gg
dGhlIGV2ZW50CiAgICAgICAgICAgICBSZWZQdHI8RWxlbWVudD4gZWxlbWVudCA9IDA7Ci0gICAg
ICAgICAgICBpZiAobV9vYmplY3QtPm5vZGUoKSAmJiBtX29iamVjdC0+bm9kZSgpLT5pc0VsZW1l
bnROb2RlKCkpCi0gICAgICAgICAgICAgICAgZWxlbWVudCA9IHN0YXRpY19jYXN0PEVsZW1lbnQq
PihtX29iamVjdC0+bm9kZSgpKTsKKyAgICAgICAgICAgIGlmIChtX29iamVjdC0+c3R5bGVkR2Vu
ZXJhdGluZ05vZGUoKSAmJiBtX29iamVjdC0+c3R5bGVkR2VuZXJhdGluZ05vZGUoKS0+aXNFbGVt
ZW50Tm9kZSgpKQorICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxFbGVtZW50
Kj4obV9vYmplY3QtPnN0eWxlZEdlbmVyYXRpbmdOb2RlKCkpOwogCiAgICAgICAgICAgICBBU1NF
UlQoIWVsZW1lbnQgfHwgKGVsZW1lbnQtPmRvY3VtZW50KCkgJiYgIWVsZW1lbnQtPmRvY3VtZW50
KCktPmluUGFnZUNhY2hlKCkpKTsKICAgICAgICAgICAgIGlmICghZWxlbWVudCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0tleWZyYW1lQW5pbWF0aW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0tleWZyYW1lQW5pbWF0aW9uLmNwcAppbmRl
eCBkYTI5MTVkLi41M2YyNDZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1h
dGlvbi9LZXlmcmFtZUFuaW1hdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmlt
YXRpb24vS2V5ZnJhbWVBbmltYXRpb24uY3BwCkBAIC01MSw4ICs1MSw4IEBAIEtleWZyYW1lQW5p
bWF0aW9uOjpLZXlmcmFtZUFuaW1hdGlvbihjb25zdCBBbmltYXRpb24qIGFuaW1hdGlvbiwgUmVu
ZGVyT2JqZWN0KiByCiAgICAgLCBtX3VuYW5pbWF0ZWRTdHlsZSh1bmFuaW1hdGVkU3R5bGUpCiB7
CiAgICAgLy8gR2V0IHRoZSBrZXlmcmFtZSBSZW5kZXJTdHlsZXMKLSAgICBpZiAobV9vYmplY3Qg
JiYgbV9vYmplY3QtPm5vZGUoKSAmJiBtX29iamVjdC0+bm9kZSgpLT5pc0VsZW1lbnROb2RlKCkp
Ci0gICAgICAgIG1fb2JqZWN0LT5kb2N1bWVudCgpLT5zdHlsZVJlc29sdmVyKCktPmtleWZyYW1l
U3R5bGVzRm9yQW5pbWF0aW9uKHN0YXRpY19jYXN0PEVsZW1lbnQqPihtX29iamVjdC0+bm9kZSgp
KSwgdW5hbmltYXRlZFN0eWxlLCBtX2tleWZyYW1lcyk7CisgICAgaWYgKG1fb2JqZWN0ICYmIG1f
b2JqZWN0LT5zdHlsZWRHZW5lcmF0aW5nTm9kZSgpICYmIG1fb2JqZWN0LT5zdHlsZWRHZW5lcmF0
aW5nTm9kZSgpLT5pc0VsZW1lbnROb2RlKCkpCisgICAgICAgIG1fb2JqZWN0LT5kb2N1bWVudCgp
LT5zdHlsZVJlc29sdmVyKCktPmtleWZyYW1lU3R5bGVzRm9yQW5pbWF0aW9uKHN0YXRpY19jYXN0
PEVsZW1lbnQqPihtX29iamVjdC0+c3R5bGVkR2VuZXJhdGluZ05vZGUoKSksIHVuYW5pbWF0ZWRT
dHlsZSwgbV9rZXlmcmFtZXMpOwogCiAgICAgLy8gVXBkYXRlIHRoZSBtX3RyYW5zZm9ybUZ1bmN0
aW9uTGlzdFZhbGlkIGZsYWcgYmFzZWQgb24gd2hldGhlciB0aGUgZnVuY3Rpb24gbGlzdHMgaW4g
dGhlIGtleWZyYW1lcyBtYXRjaC4KICAgICB2YWxpZGF0ZVRyYW5zZm9ybUZ1bmN0aW9uTGlzdCgp
OwpAQCAtMjU1LDcgKzI1NSw3IEBAIHZvaWQgS2V5ZnJhbWVBbmltYXRpb246OnBhdXNlQW5pbWF0
aW9uKGRvdWJsZSB0aW1lT2Zmc2V0KQogI2VuZGlmCiAgICAgLy8gUmVzdG9yZSB0aGUgb3JpZ2lu
YWwgKHVuYW5pbWF0ZWQpIHN0eWxlCiAgICAgaWYgKCFwYXVzZWQoKSkKLSAgICAgICAgc2V0TmVl
ZHNTdHlsZVJlY2FsYyhtX29iamVjdC0+bm9kZSgpKTsKKyAgICAgICAgc2V0TmVlZHNTdHlsZVJl
Y2FsYyhtX29iamVjdC0+c3R5bGVkR2VuZXJhdGluZ05vZGUoKSk7CiB9CiAKIHZvaWQgS2V5ZnJh
bWVBbmltYXRpb246OmVuZEFuaW1hdGlvbigpCkBAIC0yNjksNyArMjY5LDcgQEAgdm9pZCBLZXlm
cmFtZUFuaW1hdGlvbjo6ZW5kQW5pbWF0aW9uKCkKICNlbmRpZgogICAgIC8vIFJlc3RvcmUgdGhl
IG9yaWdpbmFsICh1bmFuaW1hdGVkKSBzdHlsZQogICAgIGlmICghcGF1c2VkKCkpCi0gICAgICAg
IHNldE5lZWRzU3R5bGVSZWNhbGMobV9vYmplY3QtPm5vZGUoKSk7CisgICAgICAgIHNldE5lZWRz
U3R5bGVSZWNhbGMobV9vYmplY3QtPnN0eWxlZEdlbmVyYXRpbmdOb2RlKCkpOwogfQogCiBib29s
IEtleWZyYW1lQW5pbWF0aW9uOjpzaG91bGRTZW5kRXZlbnRGb3JMaXN0ZW5lcihEb2N1bWVudDo6
TGlzdGVuZXJUeXBlIGxpc3RlbmVyVHlwZSkgY29uc3QKQEAgLTMxNCw4ICszMTQsOCBAQCBib29s
IEtleWZyYW1lQW5pbWF0aW9uOjpzZW5kQW5pbWF0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5n
JiBldmVudFR5cGUsIGRvdWJsZQogICAgIGlmIChzaG91bGRTZW5kRXZlbnRGb3JMaXN0ZW5lcihs
aXN0ZW5lclR5cGUpKSB7CiAgICAgICAgIC8vIERpc3BhdGNoIHRoZSBldmVudAogICAgICAgICBS
ZWZQdHI8RWxlbWVudD4gZWxlbWVudDsKLSAgICAgICAgaWYgKG1fb2JqZWN0LT5ub2RlKCkgJiYg
bV9vYmplY3QtPm5vZGUoKS0+aXNFbGVtZW50Tm9kZSgpKQotICAgICAgICAgICAgZWxlbWVudCA9
IHN0YXRpY19jYXN0PEVsZW1lbnQqPihtX29iamVjdC0+bm9kZSgpKTsKKyAgICAgICAgaWYgKG1f
b2JqZWN0LT5zdHlsZWRHZW5lcmF0aW5nTm9kZSgpICYmIG1fb2JqZWN0LT5zdHlsZWRHZW5lcmF0
aW5nTm9kZSgpLT5pc0VsZW1lbnROb2RlKCkpCisgICAgICAgICAgICBlbGVtZW50ID0gc3RhdGlj
X2Nhc3Q8RWxlbWVudCo+KG1fb2JqZWN0LT5zdHlsZWRHZW5lcmF0aW5nTm9kZSgpKTsKIAogICAg
ICAgICBBU1NFUlQoIWVsZW1lbnQgfHwgKGVsZW1lbnQtPmRvY3VtZW50KCkgJiYgIWVsZW1lbnQt
PmRvY3VtZW50KCktPmluUGFnZUNhY2hlKCkpKTsKICAgICAgICAgaWYgKCFlbGVtZW50KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKaW5kZXggZmFjMmQwOC4uYjBlMzE2
MiAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCkBAIC02MDE3LDE3
ICs2MDE3LDIzIEBAIHZvaWQgUmVuZGVyQmxvY2s6OnVwZGF0ZUZpcnN0TGV0dGVyU3R5bGUoUmVu
ZGVyT2JqZWN0KiBmaXJzdExldHRlckJsb2NrLCBSZW5kZXJPCiB7CiAgICAgUmVuZGVyT2JqZWN0
KiBmaXJzdExldHRlciA9IGN1cnJlbnRDaGlsZC0+cGFyZW50KCk7CiAgICAgUmVuZGVyT2JqZWN0
KiBmaXJzdExldHRlckNvbnRhaW5lciA9IGZpcnN0TGV0dGVyLT5wYXJlbnQoKTsKLSAgICBSZW5k
ZXJTdHlsZSogcHNldWRvU3R5bGUgPSBzdHlsZUZvckZpcnN0TGV0dGVyKGZpcnN0TGV0dGVyQmxv
Y2ssIGZpcnN0TGV0dGVyQ29udGFpbmVyKTsKKwogICAgIEFTU0VSVChmaXJzdExldHRlci0+aXNG
bG9hdGluZygpIHx8IGZpcnN0TGV0dGVyLT5pc0lubGluZSgpKTsKIAotICAgIGlmIChOb2RlOjpk
aWZmKGZpcnN0TGV0dGVyLT5zdHlsZSgpLCBwc2V1ZG9TdHlsZSwgZG9jdW1lbnQoKSkgPT0gTm9k
ZTo6RGV0YWNoKSB7CisgICAgUmVuZGVyU3R5bGUqIHBzZXVkb1N0eWxlICA9IHN0eWxlRm9yRmly
c3RMZXR0ZXIoZmlyc3RMZXR0ZXJCbG9jaywgZmlyc3RMZXR0ZXJDb250YWluZXIpOworICAgIGNv
bnN0IGJvb2wgbm9kZUlzRGV0YWNoZWQgPSBOb2RlOjpkaWZmKGZpcnN0TGV0dGVyLT5zdHlsZSgp
LCBwc2V1ZG9TdHlsZSwgZG9jdW1lbnQoKSkgPT0gTm9kZTo6RGV0YWNoOworCisgICAgZmlyc3RM
ZXR0ZXItPnNldEFuaW1hdGFibGVTdHlsZShwc2V1ZG9TdHlsZSwgdHJ1ZSk7CisKKyAgICBpZiAo
bm9kZUlzRGV0YWNoZWQpIHsKICAgICAgICAgLy8gVGhlIGZpcnN0LWxldHRlciByZW5kZXJlciBu
ZWVkcyB0byBiZSByZXBsYWNlZC4gQ3JlYXRlIGEgbmV3IHJlbmRlcmVyIG9mIHRoZSByaWdodCB0
eXBlLgogICAgICAgICBSZW5kZXJPYmplY3QqIG5ld0ZpcnN0TGV0dGVyOwogICAgICAgICBpZiAo
cHNldWRvU3R5bGUtPmRpc3BsYXkoKSA9PSBJTkxJTkUpCiAgICAgICAgICAgICBuZXdGaXJzdExl
dHRlciA9IG5ldyAocmVuZGVyQXJlbmEoKSkgUmVuZGVySW5saW5lKGRvY3VtZW50KCkpOwogICAg
ICAgICBlbHNlCiAgICAgICAgICAgICBuZXdGaXJzdExldHRlciA9IG5ldyAocmVuZGVyQXJlbmEo
KSkgUmVuZGVyQmxvY2soZG9jdW1lbnQoKSk7Ci0gICAgICAgIG5ld0ZpcnN0TGV0dGVyLT5zZXRT
dHlsZShwc2V1ZG9TdHlsZSk7CisKKyAgICAgICAgbmV3Rmlyc3RMZXR0ZXItPnNldFN0eWxlKGZp
cnN0TGV0dGVyLT5zdHlsZSgpKTsKIAogICAgICAgICAvLyBNb3ZlIHRoZSBmaXJzdCBsZXR0ZXIg
aW50byB0aGUgbmV3IHJlbmRlcmVyLgogICAgICAgICBMYXlvdXRTdGF0ZURpc2FibGVyIGxheW91
dFN0YXRlRGlzYWJsZXIodmlldygpKTsKQEAgLTYwNTUsMTIgKzYwNjEsMTEgQEAgdm9pZCBSZW5k
ZXJCbG9jazo6dXBkYXRlRmlyc3RMZXR0ZXJTdHlsZShSZW5kZXJPYmplY3QqIGZpcnN0TGV0dGVy
QmxvY2ssIFJlbmRlck8KICAgICAgICAgZmlyc3RMZXR0ZXItPmRlc3Ryb3koKTsKICAgICAgICAg
Zmlyc3RMZXR0ZXIgPSBuZXdGaXJzdExldHRlcjsKICAgICAgICAgZmlyc3RMZXR0ZXJDb250YWlu
ZXItPmFkZENoaWxkKGZpcnN0TGV0dGVyLCBuZXh0U2libGluZyk7Ci0gICAgfSBlbHNlCi0gICAg
ICAgIGZpcnN0TGV0dGVyLT5zZXRTdHlsZShwc2V1ZG9TdHlsZSk7CisgICAgfQogCiAgICAgZm9y
IChSZW5kZXJPYmplY3QqIGdlbkNoaWxkID0gZmlyc3RMZXR0ZXItPmZpcnN0Q2hpbGQoKTsgZ2Vu
Q2hpbGQ7IGdlbkNoaWxkID0gZ2VuQ2hpbGQtPm5leHRTaWJsaW5nKCkpIHsKICAgICAgICAgaWYg
KGdlbkNoaWxkLT5pc1RleHQoKSkKLSAgICAgICAgICAgIGdlbkNoaWxkLT5zZXRTdHlsZShwc2V1
ZG9TdHlsZSk7CisgICAgICAgICAgICBnZW5DaGlsZC0+c2V0U3R5bGUoZmlyc3RMZXR0ZXItPnN0
eWxlKCkpOwogICAgIH0KIH0KIApAQCAtNjA3Myw4ICs2MDc4LDEzIEBAIHZvaWQgUmVuZGVyQmxv
Y2s6OmNyZWF0ZUZpcnN0TGV0dGVyUmVuZGVyZXIoUmVuZGVyT2JqZWN0KiBmaXJzdExldHRlckJs
b2NrLCBSZW5kCiAgICAgICAgIGZpcnN0TGV0dGVyID0gbmV3IChyZW5kZXJBcmVuYSgpKSBSZW5k
ZXJJbmxpbmUoZG9jdW1lbnQoKSk7CiAgICAgZWxzZQogICAgICAgICBmaXJzdExldHRlciA9IG5l
dyAocmVuZGVyQXJlbmEoKSkgUmVuZGVyQmxvY2soZG9jdW1lbnQoKSk7Ci0gICAgZmlyc3RMZXR0
ZXItPnNldFN0eWxlKHBzZXVkb1N0eWxlKTsKKworICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gdGVt
cG9yYXJ5U3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlKCk7CisgICAgdGVtcG9yYXJ5U3R5bGUt
PmluaGVyaXRGcm9tKGZpcnN0TGV0dGVyQmxvY2stPnN0eWxlKCkpOworICAgIGZpcnN0TGV0dGVy
LT5zZXRTdHlsZSh0ZW1wb3JhcnlTdHlsZSk7ICAKICAgICBmaXJzdExldHRlckNvbnRhaW5lci0+
YWRkQ2hpbGQoZmlyc3RMZXR0ZXIsIGN1cnJlbnRDaGlsZCk7CisgICAgCisgICAgZmlyc3RMZXR0
ZXItPnNldEFuaW1hdGFibGVTdHlsZShwc2V1ZG9TdHlsZSwgdHJ1ZSk7CiAKICAgICBSZW5kZXJU
ZXh0KiB0ZXh0T2JqID0gdG9SZW5kZXJUZXh0KGN1cnJlbnRDaGlsZCk7CiAKQEAgLTYxMjIsNyAr
NjEzMiw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmNyZWF0ZUZpcnN0TGV0dGVyUmVuZGVyZXIoUmVu
ZGVyT2JqZWN0KiBmaXJzdExldHRlckJsb2NrLCBSZW5kCiAgICAgICAgIC8vIGNvbnN0cnVjdCB0
ZXh0IGZyYWdtZW50IGZvciB0aGUgZmlyc3QgbGV0dGVyCiAgICAgICAgIFJlbmRlclRleHRGcmFn
bWVudCogbGV0dGVyID0gCiAgICAgICAgICAgICBuZXcgKHJlbmRlckFyZW5hKCkpIFJlbmRlclRl
eHRGcmFnbWVudChyZW1haW5pbmdUZXh0LT5ub2RlKCkgPyByZW1haW5pbmdUZXh0LT5ub2RlKCkg
OiByZW1haW5pbmdUZXh0LT5kb2N1bWVudCgpLCBvbGRUZXh0LmdldCgpLCAwLCBsZW5ndGgpOwot
ICAgICAgICBsZXR0ZXItPnNldFN0eWxlKHBzZXVkb1N0eWxlKTsKKyAgICAgICAgbGV0dGVyLT5z
ZXRTdHlsZShmaXJzdExldHRlci0+c3R5bGUoKSk7CiAgICAgICAgIGZpcnN0TGV0dGVyLT5hZGRD
aGlsZChsZXR0ZXIpOwogCiAgICAgICAgIHRleHRPYmotPmRlc3Ryb3koKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKaW5kZXggZTY2OTQ3Ni4uZTJkZDMzYyAxMDA3
NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKQEAgLTE2ODgsOSArMTY4
OCw5IEBAIHZvaWQgUmVuZGVyT2JqZWN0OjpoYW5kbGVEeW5hbWljRmxvYXRQb3NpdGlvbkNoYW5n
ZSgpCiAgICAgfQogfQogCi12b2lkIFJlbmRlck9iamVjdDo6c2V0QW5pbWF0YWJsZVN0eWxlKFBh
c3NSZWZQdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQordm9pZCBSZW5kZXJPYmplY3Q6OnNldEFuaW1h
dGFibGVTdHlsZShQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBzdHlsZSwgYm9vbCBpc0dlbmVyYXRl
ZENvbnRlbnQpCiB7Ci0gICAgaWYgKCFpc1RleHQoKSAmJiBzdHlsZSkKKyAgICBpZiAoKCFpc1Rl
eHQoKSB8fCBpc0dlbmVyYXRlZENvbnRlbnQpICYmIHN0eWxlKQogICAgICAgICBzZXRTdHlsZShh
bmltYXRpb24oKS0+dXBkYXRlQW5pbWF0aW9ucyh0aGlzLCBzdHlsZS5nZXQoKSkpOwogICAgIGVs
c2UKICAgICAgICAgc2V0U3R5bGUoc3R5bGUpOwpAQCAtMjIxMyw2ICsyMjEzLDE5IEBAIGJvb2wg
UmVuZGVyT2JqZWN0Ojppc1Jvb3RlZChSZW5kZXJWaWV3KiogdmlldykKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAorTm9kZSogUmVuZGVyT2JqZWN0OjpzdHlsZWRHZW5lcmF0aW5nTm9kZSgpIGNvbnN0
Cit7CisgICAgTm9kZSogbm9kZSA9IGdlbmVyYXRpbmdOb2RlKCk7CisgICAgaWYgKG5vZGUpCisg
ICAgICAgIHJldHVybiBub2RlOworCisgICAgZm9yIChSZW5kZXJPYmplY3QqIG9iamVjdCA9IHBh
cmVudCgpOyBvYmplY3Q7IG9iamVjdCA9IG9iamVjdC0+cGFyZW50KCkpIHsKKyAgICAgICAgaWYg
KE5vZGUqIG5vZGUgPSBvYmplY3QtPmdlbmVyYXRpbmdOb2RlKCkpCisgICAgICAgICAgICByZXR1
cm4gbm9kZTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKIFJlbmRlck9iamVjdCogUmVuZGVy
T2JqZWN0OjpyZW5kZXJlckZvclJvb3RCYWNrZ3JvdW5kKCkKIHsKICAgICBBU1NFUlQoaXNSb290
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCmluZGV4IDkwYzQ5Yzgu
LjMxN2I2ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmpl
Y3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKQEAgLTU3
OCw2ICs1NzgsMTIgQEAgcHVibGljOgogICAgIC8vIFRoaXMgaXMgdGhlIHNhbWUgYXMgbm9kZSgp
IGV4Y2VwdCBmb3IgcmVuZGVyZXJzIG9mIDpiZWZvcmUgYW5kIDphZnRlcgogICAgIC8vIHBzZXVk
byBlbGVtZW50cyBmb3Igd2hpY2ggdGhlaXIgcGFyZW50IG5vZGUgaXMgcmV0dXJuZWQuCiAgICAg
Tm9kZSogZ2VuZXJhdGluZ05vZGUoKSBjb25zdCB7IHJldHVybiBtX25vZGUgPT0gZG9jdW1lbnQo
KSA/IDAgOiBtX25vZGU7IH0KKworICAgIC8vIFJldHVybnMgdGhlIHN0eWxlZCBub2RlIHRoYXQg
Y2F1c2VkIHRoZSBnZW5lcmF0aW9uIG9mIHRoaXMgcmVuZGVyZXIuCisgICAgLy8gVGhpcyBpcyB0
aGUgc2FtZSBhcyBub2RlKCkgZXhjZXB0IGZvciBhbm9ueW1vdXMgcmVuZGVyZXJzLCBmb3Igd2hp
Y2gKKyAgICAvLyBpdCByZXR1cm5zIHRoZSBub2RlIHdob3NlIHN0eWxlIGNhdXNlZCB0aGUgZ2Vu
ZXJhdGlvbiBvZiB0aGlzIHJlbmRlcmVyLgorICAgIE5vZGUqIHN0eWxlZEdlbmVyYXRpbmdOb2Rl
KCkgY29uc3Q7CisKICAgICB2b2lkIHNldE5vZGUoTm9kZSogbm9kZSkgeyBtX25vZGUgPSBub2Rl
OyB9CiAKICAgICBEb2N1bWVudCogZG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiBtX25vZGUtPmRv
Y3VtZW50KCk7IH0KQEAgLTY1OSw5ICs2NjUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IGRpcnR5TGluZXNGcm9tQ2hhbmdlZENoaWxkKFJlbmRlck9iamVjdCopOwogCiAgICAgLy8gQ2Fs
bGVkIHRvIHVwZGF0ZSBhIHN0eWxlIHRoYXQgaXMgYWxsb3dlZCB0byB0cmlnZ2VyIGFuaW1hdGlv
bnMuCi0gICAgLy8gRklYTUU6IFJpZ2h0IG5vdyB0aGlzIHdpbGwgdHlwaWNhbGx5IGJlIGNhbGxl
ZCBvbmx5IHdoZW4gdXBkYXRpbmcgaGFwcGVucyBmcm9tIHRoZSBET00gb24gZXhwbGljaXQgZWxl
bWVudHMuCi0gICAgLy8gV2UgZG9uJ3QgeWV0IGhhbmRsZSBnZW5lcmF0ZWQgY29udGVudCBhbmlt
YXRpb24gc3VjaCBhcyBmaXJzdC1sZXR0ZXIgb3IgYmVmb3JlL2FmdGVyICh3ZSdsbCB3b3JyeSBh
Ym91dCB0aGlzIGxhdGVyKS4KLSAgICB2b2lkIHNldEFuaW1hdGFibGVTdHlsZShQYXNzUmVmUHRy
PFJlbmRlclN0eWxlPik7CisgICAgdm9pZCBzZXRBbmltYXRhYmxlU3R5bGUoUGFzc1JlZlB0cjxS
ZW5kZXJTdHlsZT4sIGJvb2wgaXNHZW5lcmF0ZWRDb250ZW50ID0gZmFsc2UpOwogCiAgICAgLy8g
U2V0IHRoZSBzdHlsZSBvZiB0aGUgb2JqZWN0IGFuZCB1cGRhdGUgdGhlIHN0YXRlIG9mIHRoZSBv
YmplY3QgYWNjb3JkaW5nbHkuCiAgICAgdmlydHVhbCB2b2lkIHNldFN0eWxlKFBhc3NSZWZQdHI8
UmVuZGVyU3R5bGU+KTsKLS0gCjEuNy45LjUKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>145416</attachid>
            <date>2012-06-01 18:22:49 -0700</date>
            <delta_ts>2012-06-11 15:28:05 -0700</delta_ts>
            <desc>Patch V7.</desc>
            <filename>0001-Apply-animations-and-transitions-for-first-letter-el.patch</filename>
            <type>text/plain</type>
            <size>29634</size>
            <attacher name="Igor Trindade Oliveira">igor.oliveira</attacher>
            
              <data encoding="base64">RnJvbSBkY2Q3MGUwZDkwZTMxOTA1NGQ2NzYwY2MwNWFlYjljM2QxNTU2OTJhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBJZ29yIE9saXZlaXJhIDxpZ29yLm9Ac2lzYS5zYW1zdW5nLmNv
bT4KRGF0ZTogV2VkLCAzMCBNYXkgMjAxMiAxNzozNzo1OCAtMDcwMApTdWJqZWN0OiBbUEFUQ0hd
IEFwcGx5IGFuaW1hdGlvbnMgYW5kIHRyYW5zaXRpb25zIGZvciBmaXJzdC1sZXR0ZXIgZWxlbWVu
dAoKLS0tCiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8ICAgMTggKysrKysKIC4uLi9hbmltYXRpb25zL2ZpcnN0LWxldHRlci1hbmltYXRpb24tZXhw
ZWN0ZWQudHh0IHwgICAgNiArKwogTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9maXJzdC1sZXR0ZXIt
YW5pbWF0aW9uLmh0bWwgfCAgIDcwICsrKysrKysrKysrKysrKysKIC4uLi9maXJzdC1sZXR0ZXIt
cGxheS1zdGF0ZS1leHBlY3RlZC50eHQgICAgICAgICAgIHwgICAgNiArKwogLi4uL2FuaW1hdGlv
bnMvZmlyc3QtbGV0dGVyLXBsYXktc3RhdGUuaHRtbCAgICAgICAgfCAgIDgzICsrKysrKysrKysr
KysrKysrKysKIC4uLi9maXJzdC1sZXR0ZXItY29sb3ItdHJhbnNpdGlvbi1leHBlY3RlZC50eHQg
ICAgIHwgICAgMiArCiAuLi4vdHJhbnNpdGlvbnMvZmlyc3QtbGV0dGVyLWNvbG9yLXRyYW5zaXRp
b24uaHRtbCB8ICAgNTYgKysrKysrKysrKysrKwogLi4uL2ZpcnN0LWxldHRlci10cmFuc2l0aW9u
LWV4cGVjdGVkLnR4dCAgICAgICAgICAgfCAgIDEwICsrKwogLi4uL3RyYW5zaXRpb25zL2ZpcnN0
LWxldHRlci10cmFuc2l0aW9uLmh0bWwgICAgICAgfCAgIDg1ICsrKysrKysrKysrKysrKysrKysr
CiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg
NDcgKysrKysrKysrKysKIFNvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJh
c2UuY3BwICAgIHwgICAgNiArLQogLi4uL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9u
Q29udHJvbGxlci5jcHAgfCAgICA5ICstLQogLi4uL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vSW1w
bGljaXRBbmltYXRpb24uY3BwICAgfCAgICA2ICstCiAuLi4vV2ViQ29yZS9wYWdlL2FuaW1hdGlv
bi9LZXlmcmFtZUFuaW1hdGlvbi5jcHAgICB8ICAgMTIgKy0tCiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQmxvY2suY3BwICAgICAgICAgICB8ICAgMTggKysrLS0KIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwICAgICAgICAgIHwgICAxNyArKystCiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmggICAgICAgICAgICB8ICAgMTAgKyst
CiAxNyBmaWxlcyBjaGFuZ2VkLCA0MzQgaW5zZXJ0aW9ucygrKSwgMjcgZGVsZXRpb25zKC0pCiBj
cmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9maXJzdC1sZXR0ZXItYW5p
bWF0aW9uLWV4cGVjdGVkLnR4dAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2FuaW1h
dGlvbnMvZmlyc3QtbGV0dGVyLWFuaW1hdGlvbi5odG1sCiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5
b3V0VGVzdHMvYW5pbWF0aW9ucy9maXJzdC1sZXR0ZXItcGxheS1zdGF0ZS1leHBlY3RlZC50eHQK
IGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9hbmltYXRpb25zL2ZpcnN0LWxldHRlci1w
bGF5LXN0YXRlLmh0bWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy90cmFuc2l0aW9u
cy9maXJzdC1sZXR0ZXItY29sb3ItdHJhbnNpdGlvbi1leHBlY3RlZC50eHQKIGNyZWF0ZSBtb2Rl
IDEwMDY0NCBMYXlvdXRUZXN0cy90cmFuc2l0aW9ucy9maXJzdC1sZXR0ZXItY29sb3ItdHJhbnNp
dGlvbi5odG1sCiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvZmly
c3QtbGV0dGVyLXRyYW5zaXRpb24tZXhwZWN0ZWQudHh0CiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5
b3V0VGVzdHMvdHJhbnNpdGlvbnMvZmlyc3QtbGV0dGVyLXRyYW5zaXRpb24uaHRtbAoKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRl
eCA2Y2Q4MTIxLi44Yjg0YjhiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTItMDUtMzEgIEln
b3IgT2xpdmVpcmEgIDxpZ29yLm9Ac2lzYS5zYW1zdW5nLmNvbT4KKworICAgICAgICBBcHBseSBh
bmltYXRpb25zIGFuZCB0cmFuc2l0aW9ucyBmb3IgZmlyc3QtbGV0dGVyIGVsZW1lbnQKKworICAg
ICAgICBBcHBseSBhbmltYXRpb25zIGFuZCB0cmFuc2l0aW9ucyBmb3IgZmlyc3QtbGV0dGVyIGVs
ZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg1
MjUzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBh
bmltYXRpb25zL2ZpcnN0LWxldHRlci1hbmltYXRpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBhbmltYXRpb25zL2ZpcnN0LWxldHRlci1hbmltYXRpb24uaHRtbDogQWRkZWQuCisg
ICAgICAgICogYW5pbWF0aW9ucy9maXJzdC1sZXR0ZXItcGxheS1zdGF0ZS1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGFuaW1hdGlvbnMvZmlyc3QtbGV0dGVyLXBsYXktc3RhdGUuaHRt
bDogQWRkZWQuCisgICAgICAgICogdHJhbnNpdGlvbnMvZmlyc3QtbGV0dGVyLWNvbG9yLXRyYW5z
aXRpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0cmFuc2l0aW9ucy9maXJzdC1s
ZXR0ZXItY29sb3ItdHJhbnNpdGlvbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0cmFuc2l0aW9u
cy9maXJzdC1sZXR0ZXItdHJhbnNpdGlvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IHRyYW5zaXRpb25zL2ZpcnN0LWxldHRlci10cmFuc2l0aW9uLmh0bWw6IEFkZGVkLgorCiAyMDEy
LTA1LTI5ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgREZHIHNo
b3VsZCBrZWVwIGNhcHR1cmVkIHZhcmlhYmxlcyBhbGl2ZSB1bnRpbCB0aGUgKGlubGluZSkgcmV0
dXJuLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9maXJzdC1sZXR0ZXItYW5p
bWF0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvZmlyc3QtbGV0dGVy
LWFuaW1hdGlvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uOWI4YTAwNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvZmly
c3QtbGV0dGVyLWFuaW1hdGlvbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw2IEBACitMb3JlbSBp
cHN1bSBkb2xvciBzaXQgYW1ldC4KK0FuaW1hdGlvbnMgdGVzdCByZXN1bHQ6IAorCitQQVNTCitQ
QVNTCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvZmlyc3QtbGV0dGVyLWFu
aW1hdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9maXJzdC1sZXR0ZXItYW5pbWF0
aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTY5NzBkMAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvZmlyc3QtbGV0dGVyLWFuaW1h
dGlvbi5odG1sCkBAIC0wLDAgKzEsNzAgQEAKKzwhRE9DVFlQRSBodG1sPgorCis8aHRtbD4KKzxo
ZWFkPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIiBtZWRpYT0ic2NyZWVuIj4KKyAgICAuYm94IHsK
KyAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgIGhl
aWdodDogMTAwcHg7CisgICAgICBiYWNrZ3JvdW5kOiBibHVlOworICAgICAgLXdlYmtpdC1hbmlt
YXRpb246IGJveEFuaW1hdGlvbiAwLjFzIDAuMXMgbGluZWFyOworICAgIH0KKworICAgIC5ib3g6
OmZpcnN0LWxldHRlciB7CisgICAgICBjb2xvcjogYmxhY2s7CisgICAgICAtd2Via2l0LWFuaW1h
dGlvbjogZmlyc3RMZXR0ZXJBbmltYXRpb24gMC4xcyAwLjJzIGZvcndhcmRzIGVhc2Utb3V0Owor
ICAgIH0KKworICAgIEAtd2Via2l0LWtleWZyYW1lcyBmaXJzdExldHRlckFuaW1hdGlvbiB7Cisg
ICAgICBmcm9tIHsgZm9udC1zaXplOiAyNHB0O30KKyAgICAgIHRvIHsgZm9udC1zaXplOiA0MHB0
O30KKyAgICB9CisKKyAgICBALXdlYmtpdC1rZXlmcmFtZXMgYm94QW5pbWF0aW9uIHsKKyAgICAg
IGZyb20geyAKKyAgICAgICAgICAgICBmb250LXNpemU6IDQwcHQ7CisgICAgICAgICAgICAgLXdl
YmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTsKKyAgICAgIH0KKyAgICAgIHRvIHsKKyAgICAg
ICAgICAgZm9udC1zaXplOiAycHQ7CisgICAgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3Rh
dGUoMzYwZGVnKTsKKyAgICAgIH0KKyAgICB9CisKKzwvc3R5bGU+Cis8c2NyaXB0IHR5cGU9InRl
eHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiPgorICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikgeworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB9CisK
KyAgICB2YXIgcmVzdWx0ID0gIkFuaW1hdGlvbnMgdGVzdCByZXN1bHQ6IDxicj48YnI+IjsKKyAg
ICB2YXIgYW5pbWF0aW9ucyA9IDA7CisgICAgZnVuY3Rpb24gYW5pbWF0aW9uRW5kZWQoZXZlbnQp
CisgICAgeworICAgICAgICBpZiAoKGV2ZW50LmFuaW1hdGlvbk5hbWUgPT0gImZpcnN0TGV0dGVy
QW5pbWF0aW9uIiB8fCBldmVudC5hbmltYXRpb25OYW1lID09ICJib3hBbmltYXRpb24iKSAmJgor
ICAgICAgICAgICAgcGFyc2VGbG9hdChldmVudC5lbGFwc2VkVGltZSkudG9GaXhlZCgyKSA9PSAw
LjEpCisgICAgICAgICAgIHJlc3VsdCArPSAiUEFTUzxicj4iOworICAgICAgICBlbHNlCisgICAg
ICAgICAgIHJlc3VsdCArPSAiRkFJTDxicj4iOworCisgICAgICAgICsrYW5pbWF0aW9uczsKKyAg
ICAgICAgaWYgKGFuaW1hdGlvbnMgPT0gMikgeworICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ3Jlc3VsdCcpLmlubmVySFRNTCA9IHJlc3VsdDsKKyAgICAgICAgICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICB9CisgICAgfQorCisgICAgd2luZG93LmFk
ZEV2ZW50TGlzdGVuZXIoIndlYmtpdEFuaW1hdGlvbkVuZCIsIGFuaW1hdGlvbkVuZGVkLCBmYWxz
ZSApOworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgPGRpdiBjbGFzcz0iYm94Ij4KKyAg
ICBMb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldC4KKyAgPC9kaXY+CisgIDxkaXYgaWQ9InJlc3Vs
dCIgc3R5bGU9InBvc2l0aW9uOmFic29sdXRlOyB0b3A6MTUwcHgiPgorICA8L2Rpdj4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvZmlyc3QtbGV0
dGVyLXBsYXktc3RhdGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9maXJz
dC1sZXR0ZXItcGxheS1zdGF0ZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uMTIyYzU2YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2FuaW1h
dGlvbnMvZmlyc3QtbGV0dGVyLXBsYXktc3RhdGUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNiBA
QAorVGhpcyB0ZXN0cyB0aGUgb3BlcmF0aW9uIG9mIC13ZWJraXQtYW5pbWF0aW9uLXBsYXktc3Rh
dGUuIEFmdGVyIDEwMCBtaWxsaXNlY29uZHMgdGhlIGJveCBzaG91bGQgc3RvcCBhbmQgYWZ0ZXIg
MTUwIG1pbGxpc2Vjb25kcyBpdCBzaG91bGQgc3RhcnQgYWdhaW4uIFdlIHRlc3QgaXQgYm90aCB3
aGlsZSBpbiBtb3Rpb24gYW5kIHdoZW4gc3RvcHBlZC4KKworTG9yZW0gaXBzdW0gZG9sb3Igc2l0
IGFtZXQuCitQQVNTIC0gImxlZnQiIHByb3BlcnR5IGZvciAiYm94MSIgZWxlbWVudCBhdCAwLjFz
IHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IDIwMAorUEFTUyAtICJsZWZ0IiBwcm9wZXJ0eSBmb3Ig
ImJveDEiIGVsZW1lbnQgYXQgMC4xM3Mgc2F3IHNvbWV0aGluZyBjbG9zZSB0bzogMjAwCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvZmlyc3QtbGV0dGVyLXBsYXktc3RhdGUu
aHRtbCBiL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvZmlyc3QtbGV0dGVyLXBsYXktc3RhdGUuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40M2JjM2M3Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9maXJzdC1sZXR0ZXItcGxheS1zdGF0ZS5o
dG1sCkBAIC0wLDAgKzEsODMgQEAKKzxodG1sPgorPGhlYWQ+CisgIDx0aXRsZT5UZXN0IG9mIC13
ZWJraXQtYW5pbWF0aW9uLXBsYXktc3RhdGUgd2l0aCBmaXJzdC1sZXR0ZXIgcHNldWRvIGVsZW1l
bnQ8L3RpdGxlPgorICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiIG1lZGlhPSJzY3JlZW4iPgorICAg
ICNib3gxIHsKKyAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICAgIGhlaWdodDogMTAwcHg7
CisgICAgICB3aWR0aDogMTAwcHg7CisgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBibHVlOworICAg
ICAgY29sb3I6IHJlZDsKKyAgICAgIC13ZWJraXQtYW5pbWF0aW9uOiAibW92ZTEiIDAuMnMgbGlu
ZWFyOworICAgIH0KKyAgICAjYm94MTo6Zmlyc3QtbGV0dGVyIHsKKyAgICAgIGNvbG9yOiB3aGl0
ZTsKKyAgICAgIC13ZWJraXQtYW5pbWF0aW9uOiBmaXJzdExldHRlckFuaW1hdGlvbiAwLjIxcyBs
aW5lYXI7CisgICAgfQorICAgIEAtd2Via2l0LWtleWZyYW1lcyAibW92ZTEiIHsKKyAgICAgICAg
ZnJvbSB7IGxlZnQ6IDBweCA7IGNvbG9yOiByZWQ7fQorICAgICAgICB0byAgIHsgbGVmdDogNDAw
cHg7IGNvbG9yOiBibGFjazt9CisgICAgfQorICAgIEAtd2Via2l0LWtleWZyYW1lcyAiZmlyc3RM
ZXR0ZXJBbmltYXRpb24iIHsKKyAgICAgICAgZnJvbSB7IGNvbG9yOiB3aGl0ZTsgfQorICAgICAg
ICB0byB7IGNvbG9yOiBncmVlbjsgfQorICAgIH0KKyAgPC9zdHlsZT4KKyAgPHNjcmlwdCBzcmM9
InJlc291cmNlcy9hbmltYXRpb24tdGVzdC1oZWxwZXJzLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3Jp
cHQiIGNoYXJzZXQ9InV0Zi04Ij48L3NjcmlwdD4KKyAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFz
Y3JpcHQiIGNoYXJzZXQ9InV0Zi04Ij4KKyAgICAKKyAgICBjb25zdCBleHBlY3RlZFZhbHVlcyA9
IFsKKyAgICAgIC8vIFthbmltYXRpb24tbmFtZSwgdGltZSwgZWxlbWVudC1pZCwgcHJvcGVydHks
IGV4cGVjdGVkLXZhbHVlLCB0b2xlcmFuY2VdCisgICAgICBbIm1vdmUxIiwgMC4xLCAiYm94MSIs
ICJsZWZ0IiwgMjAwLCAyMF0sCisgICAgICBbIm1vdmUxIiwgMC4xMywgImJveDEiLCAibGVmdCIs
IDIwMCwgMjBdCisgICAgXTsKKyAgICAKKyAgICBmdW5jdGlvbiBzdG9wKCkKKyAgICB7CisgICAg
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJib3gxIikuc3R5bGUud2Via2l0QW5pbWF0aW9u
UGxheVN0YXRlID0gInBhdXNlZCI7CisgICAgfQorCisgICAgZnVuY3Rpb24gc3RhcnQoKQorICAg
IHsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImJveDEiKS5zdHlsZS53ZWJraXRB
bmltYXRpb25QbGF5U3RhdGUgPSAicnVubmluZyI7CisgICAgfQorCisgICAgZnVuY3Rpb24gc2V0
VGltZXJzKCkKKyAgICB7CisgICAgICAgIHNldFRpbWVvdXQoc3RvcCwgMTAwKTsKKyAgICAgICAg
c2V0VGltZW91dChzdGFydCwgMTUwKTsKKyAgICB9CisKKyAgICB2YXIgbW92ZTFBbmltYXRpb25F
bmRlZCA9IGZhbHNlOworICAgIGZ1bmN0aW9uIGFuaW1hdGlvbkVuZGVkKGV2ZW50KQorICAgIHsK
KyAgICAgICAgaWYgKGV2ZW50LmFuaW1hdGlvbk5hbWUgPT0gIm1vdmUxIikKKyAgICAgICAgICAg
IG1vdmUxQW5pbWF0aW9uRW5kZWQgPSB0cnVlOworCisgICAgICAgIGlmIChldmVudC5hbmltYXRp
b25OYW1lID09ICJmaXJzdExldHRlckFuaW1hdGlvbiIgJiYgbW92ZTFBbmltYXRpb25FbmRlZCkg
eworICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdEZpcnN0TGV0dGVy
JykuaW5uZXJIVE1MID0gIlRlc3QgRmFpbGVkOiBmaXJzdExldHRlckFuaW1hdGlvbiBzaG91bGQg
ZW5kIGJlZm9yZSBtb3ZlMSBhbmltYXRpb248YnI+IjsKKyAgICAgICAgfQorICAgICAgICAgICAg
CisgICAgfQorCisgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIndlYmtpdEFuaW1hdGlvbkVu
ZCIsIGFuaW1hdGlvbkVuZGVkLCBmYWxzZSApOworICAgIAorICAgIHJ1bkFuaW1hdGlvblRlc3Qo
ZXhwZWN0ZWRWYWx1ZXMsIHNldFRpbWVycywgbnVsbCwgdHJ1ZSk7CisgICAgCisgIDwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8cD4KK1RoaXMgdGVzdHMgdGhlIG9wZXJhdGlvbiBvZiAtd2Vi
a2l0LWFuaW1hdGlvbi1wbGF5LXN0YXRlLiBBZnRlciAxMDAgbWlsbGlzZWNvbmRzIHRoZSBib3gg
c2hvdWxkIHN0b3AgYW5kIGFmdGVyIDE1MCBtaWxsaXNlY29uZHMKK2l0IHNob3VsZCBzdGFydCBh
Z2Fpbi4gV2UgdGVzdCBpdCBib3RoIHdoaWxlIGluIG1vdGlvbiBhbmQgd2hlbiBzdG9wcGVkLgor
PGRpdiBpZD0iYm94MSI+CisgICAgTG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQuCis8L2Rpdj4K
KzxkaXYgaWQ9ImJveDIiPgorPC9kaXY+Cis8ZGl2IGlkPSJyZXN1bHQiPgorPC9kaXY+Cis8ZGl2
IGlkPSJyZXN1bHRGaXJzdExldHRlciI+Cis8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3RyYW5zaXRpb25zL2ZpcnN0LWxldHRlci1jb2xvci10cmFuc2l0
aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RyYW5zaXRpb25zL2ZpcnN0LWxldHRlci1j
b2xvci10cmFuc2l0aW9uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi5iMDU3YjBkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdHJhbnNpdGlv
bnMvZmlyc3QtbGV0dGVyLWNvbG9yLXRyYW5zaXRpb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MiBAQAorTG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQuCitQQVNTCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy90cmFuc2l0aW9ucy9maXJzdC1sZXR0ZXItY29sb3ItdHJhbnNpdGlvbi5odG1sIGIv
TGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvZmlyc3QtbGV0dGVyLWNvbG9yLXRyYW5zaXRpb24uaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMmY1NzViCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvZmlyc3QtbGV0dGVyLWNvbG9yLXRyYW5z
aXRpb24uaHRtbApAQCAtMCwwICsxLDU2IEBACis8IURPQ1RZUEUgaHRtbD4KKworPGh0bWw+Cis8
aGVhZD4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9InNjcmVlbiI+CisgICAgLmJveCB7
CisgICAgICB3aWR0aDogMTAwcHg7CisgICAgICBoZWlnaHQ6IDEwMHB4OworICAgICAgYmFja2dy
b3VuZC1jb2xvcjogYmx1ZTsKKyAgICB9CisgICAgCisgICAgLmJveDo6Zmlyc3QtbGV0dGVyIHsK
KyAgICAgIGZvbnQtc2l6ZTogMjRwdDsKKyAgICAgIGNvbG9yOiBibGFjazsKKyAgICAgIC13ZWJr
aXQtdHJhbnNpdGlvbjogY29sb3IgMC4xczsKKyAgICB9CisKKyAgICBib2R5LmdvIC5ib3g6OmZp
cnN0LWxldHRlciB7CisgICAgICBjb2xvcjogd2hpdGU7CisgICAgfQorCis8L3N0eWxlPgorPHNj
cmlwdCAgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+CisgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9u
ZSgpOworICAgIH0KKworICAgIHZhciByZXN1bHQgPSAiIjsKKyAgICBmdW5jdGlvbiB0cmFuc2l0
aW9uRW5kZWQoZXZlbnQpCisgICAgeyAgIAorICAgICAgICBpZiAoZXZlbnQucHJvcGVydHlOYW1l
ID09ICJjb2xvciIpCisgICAgICAgICAgIHJlc3VsdCArPSAiUEFTUyI7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgcmVzdWx0ICs9ICJGQUlMIjsKKworICAgICAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgncmVzdWx0JykuaW5uZXJIVE1MID0gcmVzdWx0OworICAgICAgICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
bm90aWZ5RG9uZSgpOworICAgIH0KKworICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCAnd2Vi
a2l0VHJhbnNpdGlvbkVuZCcsIHRyYW5zaXRpb25FbmRlZCwgZmFsc2UgKTsKKworICAgIHdpbmRv
dy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgZnVuY3Rpb24gKCkgeworICAgICAgICBkb2N1bWVu
dC5ib2R5LmNsYXNzTmFtZSA9ICJnbyI7CisgICAgfSwgZmFsc2UpOworPC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKyAgPGRpdiBjbGFzcz0iYm94Ij4KKyAgICBMb3JlbSBpcHN1bSBkb2xvciBz
aXQgYW1ldC4KKyAgPC9kaXY+CisgIDxkaXYgaWQ9InJlc3VsdCI+CisgIDwvZGl2PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvZmlyc3QtbGV0
dGVyLXRyYW5zaXRpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvZmly
c3QtbGV0dGVyLXRyYW5zaXRpb24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjVkNDQ4YmUxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdHJh
bnNpdGlvbnMvZmlyc3QtbGV0dGVyLXRyYW5zaXRpb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MTAgQEAKK0JveCBPbmUKK0JveCB0d28KK1RyYW5zdGlvbnMgdGVzdCByZXN1bHQ6IAorCitQQVNT
IAorUEFTUyAKK1BBU1MgCitQQVNTIAorUEFTUyAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
dHJhbnNpdGlvbnMvZmlyc3QtbGV0dGVyLXRyYW5zaXRpb24uaHRtbCBiL0xheW91dFRlc3RzL3Ry
YW5zaXRpb25zL2ZpcnN0LWxldHRlci10cmFuc2l0aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uYmVjZWUwOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3RyYW5zaXRpb25zL2ZpcnN0LWxldHRlci10cmFuc2l0aW9uLmh0bWwKQEAgLTAsMCArMSw4NSBA
QAorPGh0bWw+Cis8aGVhZD4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9InNjcmVlbiI+
CisgICAgLmJveCB7CisgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAgICB3aWR0aDogMTAw
cHg7CisgICAgICBoZWlnaHQ6IDEwMHB4OworICAgICAgbGVmdDogMTAwcHg7CisgICAgICBiYWNr
Z3JvdW5kLWNvbG9yOiBibHVlOworICAgIH0KKworICAgIC5ib3g6OmZpcnN0LWxldHRlciB7Cisg
ICAgICBmb250LXNpemU6IDI0cHQ7CisgICAgICBjb2xvcjogYmxhY2s7CisgICAgICAtd2Via2l0
LXRyYW5zaXRpb246IGNvbG9yIDAuMXMgMC4xczsKKyAgICB9CisKKyAgICAjZmlyc3QgeworICAg
ICAgLXdlYmtpdC10cmFuc2l0aW9uOiBsZWZ0IDAuMXMgMC4xNXM7CisgICAgfQorCisgICAgI3Nl
Y29uZCB7CisgICAgICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjFzIDAuMnM7CisgICAgfQor
CisgICAgLmFuaW1hdGluZyAjZmlyc3QgeworICAgICAgbGVmdDogNDAwcHg7CisgICAgfQorCisg
ICAgLmFuaW1hdGluZyAjc2Vjb25kIHsKKyAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUo
MzYwZGVnKTsKKyAgICAgIGNvbG9yOiBwdXJwbGU7CisgICAgfQorCisgICAgLmFuaW1hdGluZyAq
OjpmaXJzdC1sZXR0ZXIgeworICAgICAgY29sb3I6IHdoaXRlOworICAgIH0KKworCis8L3N0eWxl
PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy90cmFuc2l0aW9uLXRlc3QtaGVscGVycy5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0ICB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04Ij4K
KyAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53
YWl0VW50aWxEb25lKCk7CisgICAgfQorCisgICAgdmFyIHJlc3VsdCA9ICJUcmFuc3Rpb25zIHRl
c3QgcmVzdWx0OiA8YnI+PGJyPiI7CisgICAgdmFyIHRyYW5zaXRpb25zID0gMDsKKyAgICBmdW5j
dGlvbiB0cmFuc2l0aW9uRW5kZWQoZXZlbnQpCisgICAgeworICAgICAgICBpZiAoKGV2ZW50LnBy
b3BlcnR5TmFtZSA9PSAiY29sb3IiKSB8fCAoZXZlbnQucHJvcGVydHlOYW1lID09ICJsZWZ0Iikg
fHwgKGV2ZW50LnByb3BlcnR5TmFtZSA9PSAiLXdlYmtpdC10cmFuc2Zvcm0iKSkKKyAgICAgICAg
ICAgcmVzdWx0ICs9ICJQQVNTIDxicj4iOworICAgICAgICBlbHNlCisgICAgICAgICAgIHJlc3Vs
dCArPSAiRkFJTCA8YnI+IjsKKworICAgICAgICArK3RyYW5zaXRpb25zOworCisgICAgICAgIGlm
ICh0cmFuc2l0aW9ucyA9PSA1KSB7CisgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgncmVzdWx0JykuaW5uZXJIVE1MID0gcmVzdWx0OworICAgICAgICAgICAgaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5ub3RpZnlEb25lKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB3aW5kb3cuYWRkRXZlbnRM
aXN0ZW5lciggJ3dlYmtpdFRyYW5zaXRpb25FbmQnLCB0cmFuc2l0aW9uRW5kZWQsIGZhbHNlICk7
CisKKyAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIGZ1bmN0aW9uICgpIHsKKyAg
ICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRhaW5lcicpLmNsYXNzTmFtZSA9ICdh
bmltYXRpbmcnOworICAgIH0sIGZhbHNlKTsKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
ZGl2IGlkPSJjb250YWluZXIiPgorICA8ZGl2IGlkPSJmaXJzdCIgY2xhc3M9ImJveCI+CisgICAg
ICBCb3ggT25lCisgIDwvZGl2PgorICA8ZGl2IGlkPSJzZWNvbmQiIGNsYXNzPSJib3giPgorICAg
ICAgQm94IHR3bworICA8L2Rpdj4KKzwvZGl2PgorICA8ZGl2IGlkPSJyZXN1bHQiPgorICA8L2Rp
dj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzYTZlZGQ4Li5lZTJkNWE1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNTAgQEAKKzIwMTItMDUtMzEgIElnb3IgT2xpdmVpcmEgIDxpZ29y
Lm9Ac2lzYS5zYW1zdW5nLmNvbT4KKworICAgICAgICBBcHBseSBhbmltYXRpb25zIGFuZCB0cmFu
c2l0aW9ucyBmb3IgZmlyc3QtbGV0dGVyIGVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg1MjUzCisKKyAgICAgICAgQWRkIGFuaW1hdGlvbnMg
YW5kIHRyYW5zaXRpb25zIHN1cHBvcnQgZm9yIHRoZSBmaXJzdC1sZXR0ZXIKKyAgICAgICAgcHNl
dWRvIGVsZW1lbnQuCisgICAgICAgIEluc3RlYWQgb2YgY2FsbGluZyBSZW5kZXJPamVjdDo6bm9k
ZSgpIGluIHRoZSBhbmltYXRpb25zIGNvZGUsCisgICAgICAgIG5vdyB3ZSBuZWVkIHRvIGNhbGwg
UmVuZGVyT2JqZWN0OjpnZW5lcmF0aW5nTm9kZSgpIGJlY2F1c2UKKyAgICAgICAgcHNldWRvIGVs
ZW1lbnRzIGRvZXMgbm90IGhhdmUgYSBOb2RlIGFzc29jaWF0ZWQgd2l0aCB0aGUKKyAgICAgICAg
UmVuZGVyT2JqZWN0LgorCisgICAgICAgIEluaXRpYWwgcGF0Y2ggYnkgU2ltb24gRnJhc2VyLgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3RzOiBh
bmltYXRpb25zL2ZpcnN0LWxldHRlci1hbmltYXRpb24uaHRtbAorICAgICAgICAgICAgICAgYW5p
bWF0aW9ucy9maXJzdC1sZXR0ZXItcGxheS1zdGF0ZS5odG1sCisgICAgICAgICAgICAgICB0cmFu
c2l0aW9ucy9maXJzdC1sZXR0ZXItY29sb3ItdHJhbnNpdGlvbi5odG1sCisgICAgICAgICAgICAg
ICB0cmFuc2l0aW9ucy9maXJzdC1sZXR0ZXItdHJhbnNpdGlvbi5odG1sCisKKyAgICAgICAgKiBw
YWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1h
dGlvbkJhc2U6OnVwZGF0ZVN0YXRlTWFjaGluZSk6CisgICAgICAgICogcGFnZS9hbmltYXRpb24v
QW5pbWF0aW9uQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25Db250
cm9sbGVyUHJpdmF0ZTo6dXBkYXRlQW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpBbmlt
YXRpb25Db250cm9sbGVyUHJpdmF0ZTo6cGF1c2VBbmltYXRpb25BdFRpbWUpOgorICAgICAgICAo
V2ViQ29yZTo6QW5pbWF0aW9uQ29udHJvbGxlclByaXZhdGU6OnBhdXNlVHJhbnNpdGlvbkF0VGlt
ZSk6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25Db250cm9sbGVyOjpjYW5jZWxBbmltYXRp
b25zKToKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvbkNvbnRyb2xsZXI6OnVwZGF0ZUFuaW1h
dGlvbnMpOgorICAgICAgICAqIHBhZ2UvYW5pbWF0aW9uL0ltcGxpY2l0QW5pbWF0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkltcGxpY2l0QW5pbWF0aW9uOjpwYXVzZUFuaW1hdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpJbXBsaWNpdEFuaW1hdGlvbjo6c2VuZFRyYW5zaXRpb25FdmVudCk6
CisgICAgICAgICogcGFnZS9hbmltYXRpb24vS2V5ZnJhbWVBbmltYXRpb24uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6S2V5ZnJhbWVBbmltYXRpb246OktleWZyYW1lQW5pbWF0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OktleWZyYW1lQW5pbWF0aW9uOjpwYXVzZUFuaW1hdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpLZXlmcmFtZUFuaW1hdGlvbjo6ZW5kQW5pbWF0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OktleWZyYW1lQW5pbWF0aW9uOjpzZW5kQW5pbWF0aW9uRXZlbnQpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9j
azo6dXBkYXRlRmlyc3RMZXR0ZXJTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9j
azo6Y3JlYXRlRmlyc3RMZXR0ZXJSZW5kZXJlcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OnNldEFuaW1hdGFi
bGVTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OnN0eWxlZEdlbmVyYXRp
bmdOb2RlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJP
YmplY3QuaDoKKyAgICAgICAgKFJlbmRlck9iamVjdCk6CisKIDIwMTItMDUtMjkgIFNoYXduIFNp
bmdoICA8c2hhd25zaW5naEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBtYWtl
IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IG9iamVjdCB1c2FibGUgYnkgbm9uLXdlYmtpdCBjb2Rl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuY3BwCmlu
ZGV4IDMzZDYzMjYuLjllODBkODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5p
bWF0aW9uL0FuaW1hdGlvbkJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0
aW9uL0FuaW1hdGlvbkJhc2UuY3BwCkBAIC0xOTEsNyArMTkxLDcgQEAgdm9pZCBBbmltYXRpb25C
YXNlOjp1cGRhdGVTdGF0ZU1hY2hpbmUoQW5pbVN0YXRlSW5wdXQgaW5wdXQsIGRvdWJsZSBwYXJh
bSkKIAogICAgICAgICAgICAgICAgIC8vIFRyaWdnZXIgYSByZW5kZXIgc28gd2UgY2FuIHN0YXJ0
IHRoZSBhbmltYXRpb24KICAgICAgICAgICAgICAgICBpZiAobV9vYmplY3QpCi0gICAgICAgICAg
ICAgICAgICAgIG1fY29tcEFuaW0tPmFuaW1hdGlvbkNvbnRyb2xsZXIoKS0+YWRkTm9kZUNoYW5n
ZVRvRGlzcGF0Y2gobV9vYmplY3QtPm5vZGUoKSk7CisgICAgICAgICAgICAgICAgICAgIG1fY29t
cEFuaW0tPmFuaW1hdGlvbkNvbnRyb2xsZXIoKS0+YWRkTm9kZUNoYW5nZVRvRGlzcGF0Y2gobV9v
YmplY3QtPnN0eWxlZEdlbmVyYXRpbmdOb2RlKCkpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgICAgICBBU1NFUlQoIXBhdXNlZCgpKTsKICAgICAgICAgICAgICAgICAvLyBXZSdy
ZSB3YWl0aW5nIGZvciB0aGUgc3RhcnQgdGltZXIgdG8gZmlyZSBhbmQgd2UgZ290IGEgcGF1c2Uu
IENhbmNlbCB0aGUgdGltZXIsIHBhdXNlIGFuZCB3YWl0CkBAIC0yNTIsNyArMjUyLDcgQEAgdm9p
ZCBBbmltYXRpb25CYXNlOjp1cGRhdGVTdGF0ZU1hY2hpbmUoQW5pbVN0YXRlSW5wdXQgaW5wdXQs
IGRvdWJsZSBwYXJhbSkKIAogICAgICAgICAgICAgICAgIC8vIERpc3BhdGNoIHVwZGF0ZVN0eWxl
SWZOZWVkZWQgc28gd2UgY2FuIHN0YXJ0IHRoZSBhbmltYXRpb24KICAgICAgICAgICAgICAgICBp
ZiAobV9vYmplY3QpCi0gICAgICAgICAgICAgICAgICAgIG1fY29tcEFuaW0tPmFuaW1hdGlvbkNv
bnRyb2xsZXIoKS0+YWRkTm9kZUNoYW5nZVRvRGlzcGF0Y2gobV9vYmplY3QtPm5vZGUoKSk7Cisg
ICAgICAgICAgICAgICAgICAgIG1fY29tcEFuaW0tPmFuaW1hdGlvbkNvbnRyb2xsZXIoKS0+YWRk
Tm9kZUNoYW5nZVRvRGlzcGF0Y2gobV9vYmplY3QtPnN0eWxlZEdlbmVyYXRpbmdOb2RlKCkpOwog
ICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAvLyBXZSBhcmUgcGF1c2luZyB3
aGlsZSB3YWl0aW5nIGZvciBhIHN0YXJ0IHJlc3BvbnNlLiBDYW5jZWwgdGhlIGFuaW1hdGlvbiBh
bmQgd2FpdC4gV2hlbiAKICAgICAgICAgICAgICAgICAvLyB3ZSB1bnBhdXNlLCB3ZSB3aWxsIGFj
dCBhcyB0aG91Z2ggdGhlIHN0YXJ0IHRpbWVyIGp1c3QgZmlyZWQKQEAgLTI5OCw3ICsyOTgsNyBA
QCB2b2lkIEFuaW1hdGlvbkJhc2U6OnVwZGF0ZVN0YXRlTWFjaGluZShBbmltU3RhdGVJbnB1dCBp
bnB1dCwgZG91YmxlIHBhcmFtKQogICAgICAgICAgICAgICAgICAgICAgICAgcmVzdW1lT3ZlcnJp
ZGRlbkFuaW1hdGlvbnMoKTsKIAogICAgICAgICAgICAgICAgICAgICAvLyBGaXJlIG9mZiBhbm90
aGVyIHN0eWxlIGNoYW5nZSBzbyB3ZSBjYW4gc2V0IHRoZSBmaW5hbCB2YWx1ZQotICAgICAgICAg
ICAgICAgICAgICBtX2NvbXBBbmltLT5hbmltYXRpb25Db250cm9sbGVyKCktPmFkZE5vZGVDaGFu
Z2VUb0Rpc3BhdGNoKG1fb2JqZWN0LT5ub2RlKCkpOworICAgICAgICAgICAgICAgICAgICBtX2Nv
bXBBbmltLT5hbmltYXRpb25Db250cm9sbGVyKCktPmFkZE5vZGVDaGFuZ2VUb0Rpc3BhdGNoKG1f
b2JqZWN0LT5zdHlsZWRHZW5lcmF0aW5nTm9kZSgpKTsKICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIC8vIFdlIGFyZSBwYXVzaW5nIHdoaWxl
IHJ1bm5pbmcuIENhbmNlbCB0aGUgYW5pbWF0aW9uIGFuZCB3YWl0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250cm9sbGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkNvbnRyb2xsZXIuY3BwCmluZGV4IGM0
OTExOWUuLjk4ODU4ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9u
L0FuaW1hdGlvbkNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0
aW9uL0FuaW1hdGlvbkNvbnRyb2xsZXIuY3BwCkBAIC0xMDAsNyArMTAwLDcgQEAgZG91YmxlIEFu
aW1hdGlvbkNvbnRyb2xsZXJQcml2YXRlOjp1cGRhdGVBbmltYXRpb25zKFNldENoYW5nZWQgY2Fs
bFNldENoYW5nZWQvKgogICAgICAgICAgICAgICAgIHRpbWVUb05leHRTZXJ2aWNlID0gdDsKICAg
ICAgICAgICAgIGlmICghdGltZVRvTmV4dFNlcnZpY2UpIHsKICAgICAgICAgICAgICAgICBpZiAo
Y2FsbFNldENoYW5nZWQgPT0gQ2FsbFNldENoYW5nZWQpIHsKLSAgICAgICAgICAgICAgICAgICAg
Tm9kZSogbm9kZSA9IGl0LT5maXJzdC0+bm9kZSgpOworICAgICAgICAgICAgICAgICAgICBOb2Rl
KiBub2RlID0gaXQtPmZpcnN0LT5zdHlsZWRHZW5lcmF0aW5nTm9kZSgpOwogICAgICAgICAgICAg
ICAgICAgICBBU1NFUlQoIW5vZGUgfHwgKG5vZGUtPmRvY3VtZW50KCkgJiYgIW5vZGUtPmRvY3Vt
ZW50KCktPmluUGFnZUNhY2hlKCkpKTsKICAgICAgICAgICAgICAgICAgICAgbm9kZS0+c2V0TmVl
ZHNTdHlsZVJlY2FsYyhTeW50aGV0aWNTdHlsZUNoYW5nZSk7CiAgICAgICAgICAgICAgICAgICAg
IGNhbGxlZFNldENoYW5nZWQgPSB0cnVlOwpAQCAtMzI4LDcgKzMyOCw3IEBAIGJvb2wgQW5pbWF0
aW9uQ29udHJvbGxlclByaXZhdGU6OnBhdXNlQW5pbWF0aW9uQXRUaW1lKFJlbmRlck9iamVjdCog
cmVuZGVyZXIsIGNvCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChjb21wQW5pbS0+
cGF1c2VBbmltYXRpb25BdFRpbWUobmFtZSwgdCkpIHsKLSAgICAgICAgcmVuZGVyZXItPm5vZGUo
KS0+c2V0TmVlZHNTdHlsZVJlY2FsYyhTeW50aGV0aWNTdHlsZUNoYW5nZSk7CisgICAgICAgIHJl
bmRlcmVyLT5zdHlsZWRHZW5lcmF0aW5nTm9kZSgpLT5zZXROZWVkc1N0eWxlUmVjYWxjKFN5bnRo
ZXRpY1N0eWxlQ2hhbmdlKTsKICAgICAgICAgc3RhcnRVcGRhdGVTdHlsZUlmTmVlZGVkRGlzcGF0
Y2hlcigpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0zNDYsNyArMzQ2LDcgQEAg
Ym9vbCBBbmltYXRpb25Db250cm9sbGVyUHJpdmF0ZTo6cGF1c2VUcmFuc2l0aW9uQXRUaW1lKFJl
bmRlck9iamVjdCogcmVuZGVyZXIsIGMKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYg
KGNvbXBBbmltLT5wYXVzZVRyYW5zaXRpb25BdFRpbWUoY3NzUHJvcGVydHlJRChwcm9wZXJ0eSks
IHQpKSB7Ci0gICAgICAgIHJlbmRlcmVyLT5ub2RlKCktPnNldE5lZWRzU3R5bGVSZWNhbGMoU3lu
dGhldGljU3R5bGVDaGFuZ2UpOworICAgICAgICByZW5kZXJlci0+c3R5bGVkR2VuZXJhdGluZ05v
ZGUoKS0+c2V0TmVlZHNTdHlsZVJlY2FsYyhTeW50aGV0aWNTdHlsZUNoYW5nZSk7CiAgICAgICAg
IHN0YXJ0VXBkYXRlU3R5bGVJZk5lZWRlZERpc3BhdGNoZXIoKTsKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQpAQCAtNTA4LDcgKzUwOCw3IEBAIHZvaWQgQW5pbWF0aW9uQ29udHJvbGxlcjo6
Y2FuY2VsQW5pbWF0aW9ucyhSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogICAgICAgICByZXR1cm47
CiAKICAgICBpZiAobV9kYXRhLT5jbGVhcihyZW5kZXJlcikpIHsKLSAgICAgICAgTm9kZSogbm9k
ZSA9IHJlbmRlcmVyLT5ub2RlKCk7CisgICAgICAgIE5vZGUqIG5vZGUgPSByZW5kZXJlci0+c3R5
bGVkR2VuZXJhdGluZ05vZGUoKTsKICAgICAgICAgQVNTRVJUKCFub2RlIHx8IChub2RlLT5kb2N1
bWVudCgpICYmICFub2RlLT5kb2N1bWVudCgpLT5pblBhZ2VDYWNoZSgpKSk7CiAgICAgICAgIG5v
ZGUtPnNldE5lZWRzU3R5bGVSZWNhbGMoU3ludGhldGljU3R5bGVDaGFuZ2UpOwogICAgIH0KQEAg
LTUzMyw3ICs1MzMsNiBAQCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBBbmltYXRpb25Db250cm9s
bGVyOjp1cGRhdGVBbmltYXRpb25zKFJlbmRlck9iamVjdCogcmVuZAogICAgIC8vIGFnYWluc3Qg
dGhlIGFuaW1hdGlvbnMgaW4gdGhlIHN0eWxlIGFuZCBtYWtlIHN1cmUgd2UncmUgaW4gc3luYy4g
IElmIGRlc3RpbmF0aW9uIHZhbHVlcwogICAgIC8vIGhhdmUgY2hhbmdlZCwgd2UgcmVzZXQgdGhl
IGFuaW1hdGlvbi4gIFdlIHRoZW4gZG8gYSBibGVuZCB0byBnZXQgbmV3IHZhbHVlcyBhbmQgd2Ug
cmV0dXJuCiAgICAgLy8gYSBuZXcgc3R5bGUuCi0gICAgQVNTRVJUKHJlbmRlcmVyLT5ub2RlKCkp
OyAvLyBGSVhNRTogV2UgZG8gbm90IGFuaW1hdGUgZ2VuZXJhdGVkIGNvbnRlbnQgeWV0LgogCiAg
ICAgUmVmUHRyPENvbXBvc2l0ZUFuaW1hdGlvbj4gcmVuZGVyZXJBbmltYXRpb25zID0gbV9kYXRh
LT5hY2Nlc3NDb21wb3NpdGVBbmltYXRpb24ocmVuZGVyZXIpOwogICAgIFJlZlB0cjxSZW5kZXJT
dHlsZT4gYmxlbmRlZFN0eWxlID0gcmVuZGVyZXJBbmltYXRpb25zLT5hbmltYXRlKHJlbmRlcmVy
LCBvbGRTdHlsZSwgbmV3U3R5bGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9h
bmltYXRpb24vSW1wbGljaXRBbmltYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmlt
YXRpb24vSW1wbGljaXRBbmltYXRpb24uY3BwCmluZGV4IGY3MWExNTMuLjk3ODk3NjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0ltcGxpY2l0QW5pbWF0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9JbXBsaWNpdEFuaW1hdGlvbi5j
cHAKQEAgLTEyOSw3ICsxMjksNyBAQCB2b2lkIEltcGxpY2l0QW5pbWF0aW9uOjpwYXVzZUFuaW1h
dGlvbihkb3VibGUgdGltZU9mZnNldCkKICNlbmRpZgogICAgIC8vIFJlc3RvcmUgdGhlIG9yaWdp
bmFsICh1bmFuaW1hdGVkKSBzdHlsZQogICAgIGlmICghcGF1c2VkKCkpCi0gICAgICAgIHNldE5l
ZWRzU3R5bGVSZWNhbGMobV9vYmplY3QtPm5vZGUoKSk7CisgICAgICAgIHNldE5lZWRzU3R5bGVS
ZWNhbGMobV9vYmplY3QtPnN0eWxlZEdlbmVyYXRpbmdOb2RlKCkpOwogfQogCiB2b2lkIEltcGxp
Y2l0QW5pbWF0aW9uOjplbmRBbmltYXRpb24oKQpAQCAtMTY1LDggKzE2NSw4IEBAIGJvb2wgSW1w
bGljaXRBbmltYXRpb246OnNlbmRUcmFuc2l0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBl
dmVudFR5cGUsIGRvdWJsCiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAvLyBEaXNwYXRj
aCB0aGUgZXZlbnQKICAgICAgICAgICAgIFJlZlB0cjxFbGVtZW50PiBlbGVtZW50ID0gMDsKLSAg
ICAgICAgICAgIGlmIChtX29iamVjdC0+bm9kZSgpICYmIG1fb2JqZWN0LT5ub2RlKCktPmlzRWxl
bWVudE5vZGUoKSkKLSAgICAgICAgICAgICAgICBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8RWxlbWVu
dCo+KG1fb2JqZWN0LT5ub2RlKCkpOworICAgICAgICAgICAgaWYgKG1fb2JqZWN0LT5zdHlsZWRH
ZW5lcmF0aW5nTm9kZSgpICYmIG1fb2JqZWN0LT5zdHlsZWRHZW5lcmF0aW5nTm9kZSgpLT5pc0Vs
ZW1lbnROb2RlKCkpCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IHN0YXRpY19jYXN0PEVsZW1l
bnQqPihtX29iamVjdC0+c3R5bGVkR2VuZXJhdGluZ05vZGUoKSk7CiAKICAgICAgICAgICAgIEFT
U0VSVCghZWxlbWVudCB8fCAoZWxlbWVudC0+ZG9jdW1lbnQoKSAmJiAhZWxlbWVudC0+ZG9jdW1l
bnQoKS0+aW5QYWdlQ2FjaGUoKSkpOwogICAgICAgICAgICAgaWYgKCFlbGVtZW50KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vS2V5ZnJhbWVBbmltYXRpb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vS2V5ZnJhbWVBbmltYXRpb24uY3BwCmlu
ZGV4IGRhMjkxNWQuLjUzZjI0NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5p
bWF0aW9uL0tleWZyYW1lQW5pbWF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2Fu
aW1hdGlvbi9LZXlmcmFtZUFuaW1hdGlvbi5jcHAKQEAgLTUxLDggKzUxLDggQEAgS2V5ZnJhbWVB
bmltYXRpb246OktleWZyYW1lQW5pbWF0aW9uKGNvbnN0IEFuaW1hdGlvbiogYW5pbWF0aW9uLCBS
ZW5kZXJPYmplY3QqIHIKICAgICAsIG1fdW5hbmltYXRlZFN0eWxlKHVuYW5pbWF0ZWRTdHlsZSkK
IHsKICAgICAvLyBHZXQgdGhlIGtleWZyYW1lIFJlbmRlclN0eWxlcwotICAgIGlmIChtX29iamVj
dCAmJiBtX29iamVjdC0+bm9kZSgpICYmIG1fb2JqZWN0LT5ub2RlKCktPmlzRWxlbWVudE5vZGUo
KSkKLSAgICAgICAgbV9vYmplY3QtPmRvY3VtZW50KCktPnN0eWxlUmVzb2x2ZXIoKS0+a2V5ZnJh
bWVTdHlsZXNGb3JBbmltYXRpb24oc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG1fb2JqZWN0LT5ub2Rl
KCkpLCB1bmFuaW1hdGVkU3R5bGUsIG1fa2V5ZnJhbWVzKTsKKyAgICBpZiAobV9vYmplY3QgJiYg
bV9vYmplY3QtPnN0eWxlZEdlbmVyYXRpbmdOb2RlKCkgJiYgbV9vYmplY3QtPnN0eWxlZEdlbmVy
YXRpbmdOb2RlKCktPmlzRWxlbWVudE5vZGUoKSkKKyAgICAgICAgbV9vYmplY3QtPmRvY3VtZW50
KCktPnN0eWxlUmVzb2x2ZXIoKS0+a2V5ZnJhbWVTdHlsZXNGb3JBbmltYXRpb24oc3RhdGljX2Nh
c3Q8RWxlbWVudCo+KG1fb2JqZWN0LT5zdHlsZWRHZW5lcmF0aW5nTm9kZSgpKSwgdW5hbmltYXRl
ZFN0eWxlLCBtX2tleWZyYW1lcyk7CiAKICAgICAvLyBVcGRhdGUgdGhlIG1fdHJhbnNmb3JtRnVu
Y3Rpb25MaXN0VmFsaWQgZmxhZyBiYXNlZCBvbiB3aGV0aGVyIHRoZSBmdW5jdGlvbiBsaXN0cyBp
biB0aGUga2V5ZnJhbWVzIG1hdGNoLgogICAgIHZhbGlkYXRlVHJhbnNmb3JtRnVuY3Rpb25MaXN0
KCk7CkBAIC0yNTUsNyArMjU1LDcgQEAgdm9pZCBLZXlmcmFtZUFuaW1hdGlvbjo6cGF1c2VBbmlt
YXRpb24oZG91YmxlIHRpbWVPZmZzZXQpCiAjZW5kaWYKICAgICAvLyBSZXN0b3JlIHRoZSBvcmln
aW5hbCAodW5hbmltYXRlZCkgc3R5bGUKICAgICBpZiAoIXBhdXNlZCgpKQotICAgICAgICBzZXRO
ZWVkc1N0eWxlUmVjYWxjKG1fb2JqZWN0LT5ub2RlKCkpOworICAgICAgICBzZXROZWVkc1N0eWxl
UmVjYWxjKG1fb2JqZWN0LT5zdHlsZWRHZW5lcmF0aW5nTm9kZSgpKTsKIH0KIAogdm9pZCBLZXlm
cmFtZUFuaW1hdGlvbjo6ZW5kQW5pbWF0aW9uKCkKQEAgLTI2OSw3ICsyNjksNyBAQCB2b2lkIEtl
eWZyYW1lQW5pbWF0aW9uOjplbmRBbmltYXRpb24oKQogI2VuZGlmCiAgICAgLy8gUmVzdG9yZSB0
aGUgb3JpZ2luYWwgKHVuYW5pbWF0ZWQpIHN0eWxlCiAgICAgaWYgKCFwYXVzZWQoKSkKLSAgICAg
ICAgc2V0TmVlZHNTdHlsZVJlY2FsYyhtX29iamVjdC0+bm9kZSgpKTsKKyAgICAgICAgc2V0TmVl
ZHNTdHlsZVJlY2FsYyhtX29iamVjdC0+c3R5bGVkR2VuZXJhdGluZ05vZGUoKSk7CiB9CiAKIGJv
b2wgS2V5ZnJhbWVBbmltYXRpb246OnNob3VsZFNlbmRFdmVudEZvckxpc3RlbmVyKERvY3VtZW50
OjpMaXN0ZW5lclR5cGUgbGlzdGVuZXJUeXBlKSBjb25zdApAQCAtMzE0LDggKzMxNCw4IEBAIGJv
b2wgS2V5ZnJhbWVBbmltYXRpb246OnNlbmRBbmltYXRpb25FdmVudChjb25zdCBBdG9taWNTdHJp
bmcmIGV2ZW50VHlwZSwgZG91YmxlCiAgICAgaWYgKHNob3VsZFNlbmRFdmVudEZvckxpc3RlbmVy
KGxpc3RlbmVyVHlwZSkpIHsKICAgICAgICAgLy8gRGlzcGF0Y2ggdGhlIGV2ZW50CiAgICAgICAg
IFJlZlB0cjxFbGVtZW50PiBlbGVtZW50OwotICAgICAgICBpZiAobV9vYmplY3QtPm5vZGUoKSAm
JiBtX29iamVjdC0+bm9kZSgpLT5pc0VsZW1lbnROb2RlKCkpCi0gICAgICAgICAgICBlbGVtZW50
ID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG1fb2JqZWN0LT5ub2RlKCkpOworICAgICAgICBpZiAo
bV9vYmplY3QtPnN0eWxlZEdlbmVyYXRpbmdOb2RlKCkgJiYgbV9vYmplY3QtPnN0eWxlZEdlbmVy
YXRpbmdOb2RlKCktPmlzRWxlbWVudE5vZGUoKSkKKyAgICAgICAgICAgIGVsZW1lbnQgPSBzdGF0
aWNfY2FzdDxFbGVtZW50Kj4obV9vYmplY3QtPnN0eWxlZEdlbmVyYXRpbmdOb2RlKCkpOwogCiAg
ICAgICAgIEFTU0VSVCghZWxlbWVudCB8fCAoZWxlbWVudC0+ZG9jdW1lbnQoKSAmJiAhZWxlbWVu
dC0+ZG9jdW1lbnQoKS0+aW5QYWdlQ2FjaGUoKSkpOwogICAgICAgICBpZiAoIWVsZW1lbnQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAppbmRleCBmYWMyZDA4Li4xZDM5
NGNhIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKQEAgLTYwMTgs
NiArNjAxOCw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OnVwZGF0ZUZpcnN0TGV0dGVyU3R5bGUoUmVu
ZGVyT2JqZWN0KiBmaXJzdExldHRlckJsb2NrLCBSZW5kZXJPCiAgICAgUmVuZGVyT2JqZWN0KiBm
aXJzdExldHRlciA9IGN1cnJlbnRDaGlsZC0+cGFyZW50KCk7CiAgICAgUmVuZGVyT2JqZWN0KiBm
aXJzdExldHRlckNvbnRhaW5lciA9IGZpcnN0TGV0dGVyLT5wYXJlbnQoKTsKICAgICBSZW5kZXJT
dHlsZSogcHNldWRvU3R5bGUgPSBzdHlsZUZvckZpcnN0TGV0dGVyKGZpcnN0TGV0dGVyQmxvY2ss
IGZpcnN0TGV0dGVyQ29udGFpbmVyKTsKKwogICAgIEFTU0VSVChmaXJzdExldHRlci0+aXNGbG9h
dGluZygpIHx8IGZpcnN0TGV0dGVyLT5pc0lubGluZSgpKTsKIAogICAgIGlmIChOb2RlOjpkaWZm
KGZpcnN0TGV0dGVyLT5zdHlsZSgpLCBwc2V1ZG9TdHlsZSwgZG9jdW1lbnQoKSkgPT0gTm9kZTo6
RGV0YWNoKSB7CkBAIC02MDI3LDYgKzYwMjgsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjp1cGRhdGVG
aXJzdExldHRlclN0eWxlKFJlbmRlck9iamVjdCogZmlyc3RMZXR0ZXJCbG9jaywgUmVuZGVyTwog
ICAgICAgICAgICAgbmV3Rmlyc3RMZXR0ZXIgPSBuZXcgKHJlbmRlckFyZW5hKCkpIFJlbmRlcklu
bGluZShkb2N1bWVudCgpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbmV3Rmlyc3RMZXR0
ZXIgPSBuZXcgKHJlbmRlckFyZW5hKCkpIFJlbmRlckJsb2NrKGRvY3VtZW50KCkpOworCiAgICAg
ICAgIG5ld0ZpcnN0TGV0dGVyLT5zZXRTdHlsZShwc2V1ZG9TdHlsZSk7CiAKICAgICAgICAgLy8g
TW92ZSB0aGUgZmlyc3QgbGV0dGVyIGludG8gdGhlIG5ldyByZW5kZXJlci4KQEAgLTYwNTUsMTIg
KzYwNTcsMTMgQEAgdm9pZCBSZW5kZXJCbG9jazo6dXBkYXRlRmlyc3RMZXR0ZXJTdHlsZShSZW5k
ZXJPYmplY3QqIGZpcnN0TGV0dGVyQmxvY2ssIFJlbmRlck8KICAgICAgICAgZmlyc3RMZXR0ZXIt
PmRlc3Ryb3koKTsKICAgICAgICAgZmlyc3RMZXR0ZXIgPSBuZXdGaXJzdExldHRlcjsKICAgICAg
ICAgZmlyc3RMZXR0ZXJDb250YWluZXItPmFkZENoaWxkKGZpcnN0TGV0dGVyLCBuZXh0U2libGlu
Zyk7Ci0gICAgfSBlbHNlCi0gICAgICAgIGZpcnN0TGV0dGVyLT5zZXRTdHlsZShwc2V1ZG9TdHls
ZSk7CisgICAgfQorCisgICAgZmlyc3RMZXR0ZXItPnNldEFuaW1hdGFibGVTdHlsZShwc2V1ZG9T
dHlsZSwgdHJ1ZSk7CiAKICAgICBmb3IgKFJlbmRlck9iamVjdCogZ2VuQ2hpbGQgPSBmaXJzdExl
dHRlci0+Zmlyc3RDaGlsZCgpOyBnZW5DaGlsZDsgZ2VuQ2hpbGQgPSBnZW5DaGlsZC0+bmV4dFNp
YmxpbmcoKSkgewogICAgICAgICBpZiAoZ2VuQ2hpbGQtPmlzVGV4dCgpKQotICAgICAgICAgICAg
Z2VuQ2hpbGQtPnNldFN0eWxlKHBzZXVkb1N0eWxlKTsKKyAgICAgICAgICAgIGdlbkNoaWxkLT5z
ZXRTdHlsZShmaXJzdExldHRlci0+c3R5bGUoKSk7CiAgICAgfQogfQogCkBAIC02MDczLDggKzYw
NzYsMTMgQEAgdm9pZCBSZW5kZXJCbG9jazo6Y3JlYXRlRmlyc3RMZXR0ZXJSZW5kZXJlcihSZW5k
ZXJPYmplY3QqIGZpcnN0TGV0dGVyQmxvY2ssIFJlbmQKICAgICAgICAgZmlyc3RMZXR0ZXIgPSBu
ZXcgKHJlbmRlckFyZW5hKCkpIFJlbmRlcklubGluZShkb2N1bWVudCgpKTsKICAgICBlbHNlCiAg
ICAgICAgIGZpcnN0TGV0dGVyID0gbmV3IChyZW5kZXJBcmVuYSgpKSBSZW5kZXJCbG9jayhkb2N1
bWVudCgpKTsKLSAgICBmaXJzdExldHRlci0+c2V0U3R5bGUocHNldWRvU3R5bGUpOworCisgICAg
UmVmUHRyPFJlbmRlclN0eWxlPiB0ZW1wb3JhcnlTdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGUo
KTsKKyAgICB0ZW1wb3JhcnlTdHlsZS0+aW5oZXJpdEZyb20oZmlyc3RMZXR0ZXJCbG9jay0+c3R5
bGUoKSk7CisgICAgZmlyc3RMZXR0ZXItPnNldFN0eWxlKHRlbXBvcmFyeVN0eWxlKTsgIAogICAg
IGZpcnN0TGV0dGVyQ29udGFpbmVyLT5hZGRDaGlsZChmaXJzdExldHRlciwgY3VycmVudENoaWxk
KTsKKyAgICAKKyAgICBmaXJzdExldHRlci0+c2V0QW5pbWF0YWJsZVN0eWxlKHBzZXVkb1N0eWxl
LCB0cnVlKTsKIAogICAgIFJlbmRlclRleHQqIHRleHRPYmogPSB0b1JlbmRlclRleHQoY3VycmVu
dENoaWxkKTsKIApAQCAtNjEyMiw3ICs2MTMwLDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6Y3JlYXRl
Rmlyc3RMZXR0ZXJSZW5kZXJlcihSZW5kZXJPYmplY3QqIGZpcnN0TGV0dGVyQmxvY2ssIFJlbmQK
ICAgICAgICAgLy8gY29uc3RydWN0IHRleHQgZnJhZ21lbnQgZm9yIHRoZSBmaXJzdCBsZXR0ZXIK
ICAgICAgICAgUmVuZGVyVGV4dEZyYWdtZW50KiBsZXR0ZXIgPSAKICAgICAgICAgICAgIG5ldyAo
cmVuZGVyQXJlbmEoKSkgUmVuZGVyVGV4dEZyYWdtZW50KHJlbWFpbmluZ1RleHQtPm5vZGUoKSA/
IHJlbWFpbmluZ1RleHQtPm5vZGUoKSA6IHJlbWFpbmluZ1RleHQtPmRvY3VtZW50KCksIG9sZFRl
eHQuZ2V0KCksIDAsIGxlbmd0aCk7Ci0gICAgICAgIGxldHRlci0+c2V0U3R5bGUocHNldWRvU3R5
bGUpOworICAgICAgICBsZXR0ZXItPnNldFN0eWxlKGZpcnN0TGV0dGVyLT5zdHlsZSgpKTsKICAg
ICAgICAgZmlyc3RMZXR0ZXItPmFkZENoaWxkKGxldHRlcik7CiAKICAgICAgICAgdGV4dE9iai0+
ZGVzdHJveSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9i
amVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAppbmRl
eCBlNjY5NDc2Li5lMmRkMzNjIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2Jq
ZWN0LmNwcApAQCAtMTY4OCw5ICsxNjg4LDkgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OmhhbmRsZUR5
bmFtaWNGbG9hdFBvc2l0aW9uQ2hhbmdlKCkKICAgICB9CiB9CiAKLXZvaWQgUmVuZGVyT2JqZWN0
OjpzZXRBbmltYXRhYmxlU3R5bGUoUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCit2b2lk
IFJlbmRlck9iamVjdDo6c2V0QW5pbWF0YWJsZVN0eWxlKFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+
IHN0eWxlLCBib29sIGlzR2VuZXJhdGVkQ29udGVudCkKIHsKLSAgICBpZiAoIWlzVGV4dCgpICYm
IHN0eWxlKQorICAgIGlmICgoIWlzVGV4dCgpIHx8IGlzR2VuZXJhdGVkQ29udGVudCkgJiYgc3R5
bGUpCiAgICAgICAgIHNldFN0eWxlKGFuaW1hdGlvbigpLT51cGRhdGVBbmltYXRpb25zKHRoaXMs
IHN0eWxlLmdldCgpKSk7CiAgICAgZWxzZQogICAgICAgICBzZXRTdHlsZShzdHlsZSk7CkBAIC0y
MjEzLDYgKzIyMTMsMTkgQEAgYm9vbCBSZW5kZXJPYmplY3Q6OmlzUm9vdGVkKFJlbmRlclZpZXcq
KiB2aWV3KQogICAgIHJldHVybiB0cnVlOwogfQogCitOb2RlKiBSZW5kZXJPYmplY3Q6OnN0eWxl
ZEdlbmVyYXRpbmdOb2RlKCkgY29uc3QKK3sKKyAgICBOb2RlKiBub2RlID0gZ2VuZXJhdGluZ05v
ZGUoKTsKKyAgICBpZiAobm9kZSkKKyAgICAgICAgcmV0dXJuIG5vZGU7CisKKyAgICBmb3IgKFJl
bmRlck9iamVjdCogb2JqZWN0ID0gcGFyZW50KCk7IG9iamVjdDsgb2JqZWN0ID0gb2JqZWN0LT5w
YXJlbnQoKSkgeworICAgICAgICBpZiAoTm9kZSogbm9kZSA9IG9iamVjdC0+Z2VuZXJhdGluZ05v
ZGUoKSkKKyAgICAgICAgICAgIHJldHVybiBub2RlOworICAgIH0KKyAgICByZXR1cm4gMDsKK30K
KwogUmVuZGVyT2JqZWN0KiBSZW5kZXJPYmplY3Q6OnJlbmRlcmVyRm9yUm9vdEJhY2tncm91bmQo
KQogewogICAgIEFTU0VSVChpc1Jvb3QoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
T2JqZWN0LmgKaW5kZXggOTBjNDljOC4uMzE3YjZkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJPYmplY3QuaApAQCAtNTc4LDYgKzU3OCwxMiBAQCBwdWJsaWM6CiAgICAgLy8gVGhp
cyBpcyB0aGUgc2FtZSBhcyBub2RlKCkgZXhjZXB0IGZvciByZW5kZXJlcnMgb2YgOmJlZm9yZSBh
bmQgOmFmdGVyCiAgICAgLy8gcHNldWRvIGVsZW1lbnRzIGZvciB3aGljaCB0aGVpciBwYXJlbnQg
bm9kZSBpcyByZXR1cm5lZC4KICAgICBOb2RlKiBnZW5lcmF0aW5nTm9kZSgpIGNvbnN0IHsgcmV0
dXJuIG1fbm9kZSA9PSBkb2N1bWVudCgpID8gMCA6IG1fbm9kZTsgfQorCisgICAgLy8gUmV0dXJu
cyB0aGUgc3R5bGVkIG5vZGUgdGhhdCBjYXVzZWQgdGhlIGdlbmVyYXRpb24gb2YgdGhpcyByZW5k
ZXJlci4KKyAgICAvLyBUaGlzIGlzIHRoZSBzYW1lIGFzIG5vZGUoKSBleGNlcHQgZm9yIGFub255
bW91cyByZW5kZXJlcnMsIGZvciB3aGljaAorICAgIC8vIGl0IHJldHVybnMgdGhlIG5vZGUgd2hv
c2Ugc3R5bGUgY2F1c2VkIHRoZSBnZW5lcmF0aW9uIG9mIHRoaXMgcmVuZGVyZXIuCisgICAgTm9k
ZSogc3R5bGVkR2VuZXJhdGluZ05vZGUoKSBjb25zdDsKKwogICAgIHZvaWQgc2V0Tm9kZShOb2Rl
KiBub2RlKSB7IG1fbm9kZSA9IG5vZGU7IH0KIAogICAgIERvY3VtZW50KiBkb2N1bWVudCgpIGNv
bnN0IHsgcmV0dXJuIG1fbm9kZS0+ZG9jdW1lbnQoKTsgfQpAQCAtNjU5LDkgKzY2NSw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlydHlMaW5lc0Zyb21DaGFuZ2VkQ2hpbGQoUmVuZGVy
T2JqZWN0Kik7CiAKICAgICAvLyBDYWxsZWQgdG8gdXBkYXRlIGEgc3R5bGUgdGhhdCBpcyBhbGxv
d2VkIHRvIHRyaWdnZXIgYW5pbWF0aW9ucy4KLSAgICAvLyBGSVhNRTogUmlnaHQgbm93IHRoaXMg
d2lsbCB0eXBpY2FsbHkgYmUgY2FsbGVkIG9ubHkgd2hlbiB1cGRhdGluZyBoYXBwZW5zIGZyb20g
dGhlIERPTSBvbiBleHBsaWNpdCBlbGVtZW50cy4KLSAgICAvLyBXZSBkb24ndCB5ZXQgaGFuZGxl
IGdlbmVyYXRlZCBjb250ZW50IGFuaW1hdGlvbiBzdWNoIGFzIGZpcnN0LWxldHRlciBvciBiZWZv
cmUvYWZ0ZXIgKHdlJ2xsIHdvcnJ5IGFib3V0IHRoaXMgbGF0ZXIpLgotICAgIHZvaWQgc2V0QW5p
bWF0YWJsZVN0eWxlKFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+KTsKKyAgICB2b2lkIHNldEFuaW1h
dGFibGVTdHlsZShQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiwgYm9vbCBpc0dlbmVyYXRlZENvbnRl
bnQgPSBmYWxzZSk7CiAKICAgICAvLyBTZXQgdGhlIHN0eWxlIG9mIHRoZSBvYmplY3QgYW5kIHVw
ZGF0ZSB0aGUgc3RhdGUgb2YgdGhlIG9iamVjdCBhY2NvcmRpbmdseS4KICAgICB2aXJ0dWFsIHZv
aWQgc2V0U3R5bGUoUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4pOwotLSAKMS43LjkuNQoK
</data>
<flag name="review"
          id="152532"
          type_id="1"
          status="-"
          setter="simon.fraser"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>146929</attachid>
            <date>2012-06-11 15:28:05 -0700</date>
            <delta_ts>2012-06-12 14:08:36 -0700</delta_ts>
            <desc>Patch v8.</desc>
            <filename>0001-Apply-animations-and-transitions-for-first-letter-el.patch</filename>
            <type>text/plain</type>
            <size>29685</size>
            <attacher name="Igor Trindade Oliveira">igor.oliveira</attacher>
            
              <data encoding="base64">RnJvbSA5NzhjNTU1Njc5YmMyNDkxNTE0MmZmZTE0YmYyNmY3MDc1NDVmODI5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBJZ29yIE9saXZlaXJhIDxpZ29yLm9Ac2lzYS5zYW1zdW5nLmNv
bT4KRGF0ZTogTW9uLCAxMSBKdW4gMjAxMiAxNDo0NDoyNiAtMDcwMApTdWJqZWN0OiBbUEFUQ0hd
IEFwcGx5IGFuaW1hdGlvbnMgYW5kIHRyYW5zaXRpb25zIGZvciBmaXJzdC1sZXR0ZXIgZWxlbWVu
dAoKLS0tCiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8ICAgMTYgKysrKwogLi4uL2FuaW1hdGlvbnMvZmlyc3QtbGV0dGVyLWFuaW1hdGlvbi1leHBl
Y3RlZC50eHQgfCAgICA2ICsrCiBMYXlvdXRUZXN0cy9hbmltYXRpb25zL2ZpcnN0LWxldHRlci1h
bmltYXRpb24uaHRtbCB8ICAgNzAgKysrKysrKysrKysrKysrCiAuLi4vZmlyc3QtbGV0dGVyLXBs
YXktc3RhdGUtZXhwZWN0ZWQudHh0ICAgICAgICAgICB8ICAgIDYgKysKIC4uLi9hbmltYXRpb25z
L2ZpcnN0LWxldHRlci1wbGF5LXN0YXRlLmh0bWwgICAgICAgIHwgICA5MiArKysrKysrKysrKysr
KysrKysrKwogLi4uL2ZpcnN0LWxldHRlci1jb2xvci10cmFuc2l0aW9uLWV4cGVjdGVkLnR4dCAg
ICAgfCAgICAyICsKIC4uLi90cmFuc2l0aW9ucy9maXJzdC1sZXR0ZXItY29sb3ItdHJhbnNpdGlv
bi5odG1sIHwgICA1NiArKysrKysrKysrKysKIC4uLi9maXJzdC1sZXR0ZXItdHJhbnNpdGlvbi1l
eHBlY3RlZC50eHQgICAgICAgICAgIHwgICAxMCArKysKIC4uLi90cmFuc2l0aW9ucy9maXJzdC1s
ZXR0ZXItdHJhbnNpdGlvbi5odG1sICAgICAgIHwgICA4NSArKysrKysrKysrKysrKysrKysKIFNv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA0OSAr
KysrKysrKysrKwogU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5j
cHAgICAgfCAgICA2ICstCiAuLi4vV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250
cm9sbGVyLmNwcCB8ICAgIDkgKy0KIC4uLi9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0ltcGxpY2l0
QW5pbWF0aW9uLmNwcCAgIHwgICAgNiArLQogLi4uL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vS2V5
ZnJhbWVBbmltYXRpb24uY3BwICAgfCAgIDEyICstLQogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrLmNwcCAgICAgICAgICAgfCAgIDE2ICsrLS0KIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwICAgICAgICAgIHwgICAgNCArLQogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgICAgICAgICAgfCAgIDE1ICsrKysKIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaCAgICAgICAgICAgIHwgICAxMiArKy0K
IDE4IGZpbGVzIGNoYW5nZWQsIDQ0NCBpbnNlcnRpb25zKCspLCAyOCBkZWxldGlvbnMoLSkKIGNy
ZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9hbmltYXRpb25zL2ZpcnN0LWxldHRlci1hbmlt
YXRpb24tZXhwZWN0ZWQudHh0CiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvYW5pbWF0
aW9ucy9maXJzdC1sZXR0ZXItYW5pbWF0aW9uLmh0bWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlv
dXRUZXN0cy9hbmltYXRpb25zL2ZpcnN0LWxldHRlci1wbGF5LXN0YXRlLWV4cGVjdGVkLnR4dAog
Y3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2FuaW1hdGlvbnMvZmlyc3QtbGV0dGVyLXBs
YXktc3RhdGUuaHRtbAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL3RyYW5zaXRpb25z
L2ZpcnN0LWxldHRlci1jb2xvci10cmFuc2l0aW9uLWV4cGVjdGVkLnR4dAogY3JlYXRlIG1vZGUg
MTAwNjQ0IExheW91dFRlc3RzL3RyYW5zaXRpb25zL2ZpcnN0LWxldHRlci1jb2xvci10cmFuc2l0
aW9uLmh0bWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy90cmFuc2l0aW9ucy9maXJz
dC1sZXR0ZXItdHJhbnNpdGlvbi1leHBlY3RlZC50eHQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlv
dXRUZXN0cy90cmFuc2l0aW9ucy9maXJzdC1sZXR0ZXItdHJhbnNpdGlvbi5odG1sCgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4
IDUzNzYxZDcuLjEzN2VhNjQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMi0wNi0xMSAgSWdv
ciBPbGl2ZWlyYSAgPGlnb3Iub0BzaXNhLnNhbXN1bmcuY29tPgorCisgICAgICAgIEFwcGx5IGFu
aW1hdGlvbnMgYW5kIHRyYW5zaXRpb25zIGZvciBmaXJzdC1sZXR0ZXIgZWxlbWVudAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODUyNTMKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGFuaW1hdGlvbnMvZmly
c3QtbGV0dGVyLWFuaW1hdGlvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGFuaW1h
dGlvbnMvZmlyc3QtbGV0dGVyLWFuaW1hdGlvbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBhbmlt
YXRpb25zL2ZpcnN0LWxldHRlci1wbGF5LXN0YXRlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogYW5pbWF0aW9ucy9maXJzdC1sZXR0ZXItcGxheS1zdGF0ZS5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiB0cmFuc2l0aW9ucy9maXJzdC1sZXR0ZXItY29sb3ItdHJhbnNpdGlvbi1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRyYW5zaXRpb25zL2ZpcnN0LWxldHRlci1jb2xvci10
cmFuc2l0aW9uLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRyYW5zaXRpb25zL2ZpcnN0LWxldHRl
ci10cmFuc2l0aW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdHJhbnNpdGlvbnMv
Zmlyc3QtbGV0dGVyLXRyYW5zaXRpb24uaHRtbDogQWRkZWQuCisKIDIwMTItMDYtMDcgIEVkYWVu
YSBTYWxpbmFzIEphc3NvICA8ZWRhZW5hQGFwcGxlLmNvbT4KIAogICAgICAgICBTaG91bGQgZmly
ZSBlcnJvciBldmVudCBmb3IgZW1wdHkgNDA0IHNjcmlwdApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvYW5pbWF0aW9ucy9maXJzdC1sZXR0ZXItYW5pbWF0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2FuaW1hdGlvbnMvZmlyc3QtbGV0dGVyLWFuaW1hdGlvbi1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWI4YTAwNgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvZmlyc3QtbGV0dGVyLWFuaW1hdGlvbi1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSw2IEBACitMb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldC4KK0FuaW1h
dGlvbnMgdGVzdCByZXN1bHQ6IAorCitQQVNTCitQQVNTCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2FuaW1hdGlvbnMvZmlyc3QtbGV0dGVyLWFuaW1hdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMv
YW5pbWF0aW9ucy9maXJzdC1sZXR0ZXItYW5pbWF0aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uYTY5NzBkMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2FuaW1hdGlvbnMvZmlyc3QtbGV0dGVyLWFuaW1hdGlvbi5odG1sCkBAIC0wLDAgKzEsNzAgQEAK
KzwhRE9DVFlQRSBodG1sPgorCis8aHRtbD4KKzxoZWFkPgorPHN0eWxlIHR5cGU9InRleHQvY3Nz
IiBtZWRpYT0ic2NyZWVuIj4KKyAgICAuYm94IHsKKyAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsK
KyAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgIGhlaWdodDogMTAwcHg7CisgICAgICBiYWNrZ3Jv
dW5kOiBibHVlOworICAgICAgLXdlYmtpdC1hbmltYXRpb246IGJveEFuaW1hdGlvbiAwLjFzIDAu
MXMgbGluZWFyOworICAgIH0KKworICAgIC5ib3g6OmZpcnN0LWxldHRlciB7CisgICAgICBjb2xv
cjogYmxhY2s7CisgICAgICAtd2Via2l0LWFuaW1hdGlvbjogZmlyc3RMZXR0ZXJBbmltYXRpb24g
MC4xcyAwLjJzIGZvcndhcmRzIGVhc2Utb3V0OworICAgIH0KKworICAgIEAtd2Via2l0LWtleWZy
YW1lcyBmaXJzdExldHRlckFuaW1hdGlvbiB7CisgICAgICBmcm9tIHsgZm9udC1zaXplOiAyNHB0
O30KKyAgICAgIHRvIHsgZm9udC1zaXplOiA0MHB0O30KKyAgICB9CisKKyAgICBALXdlYmtpdC1r
ZXlmcmFtZXMgYm94QW5pbWF0aW9uIHsKKyAgICAgIGZyb20geyAKKyAgICAgICAgICAgICBmb250
LXNpemU6IDQwcHQ7CisgICAgICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgwZGVn
KTsKKyAgICAgIH0KKyAgICAgIHRvIHsKKyAgICAgICAgICAgZm9udC1zaXplOiAycHQ7CisgICAg
ICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsKKyAgICAgIH0KKyAgICB9
CisKKzwvc3R5bGU+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRm
LTgiPgorICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB9CisKKyAgICB2YXIgcmVzdWx0ID0gIkFuaW1hdGlv
bnMgdGVzdCByZXN1bHQ6IDxicj48YnI+IjsKKyAgICB2YXIgYW5pbWF0aW9ucyA9IDA7CisgICAg
ZnVuY3Rpb24gYW5pbWF0aW9uRW5kZWQoZXZlbnQpCisgICAgeworICAgICAgICBpZiAoKGV2ZW50
LmFuaW1hdGlvbk5hbWUgPT0gImZpcnN0TGV0dGVyQW5pbWF0aW9uIiB8fCBldmVudC5hbmltYXRp
b25OYW1lID09ICJib3hBbmltYXRpb24iKSAmJgorICAgICAgICAgICAgcGFyc2VGbG9hdChldmVu
dC5lbGFwc2VkVGltZSkudG9GaXhlZCgyKSA9PSAwLjEpCisgICAgICAgICAgIHJlc3VsdCArPSAi
UEFTUzxicj4iOworICAgICAgICBlbHNlCisgICAgICAgICAgIHJlc3VsdCArPSAiRkFJTDxicj4i
OworCisgICAgICAgICsrYW5pbWF0aW9uczsKKyAgICAgICAgaWYgKGFuaW1hdGlvbnMgPT0gMikg
eworICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpLmlubmVySFRN
TCA9IHJlc3VsdDsKKyAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
CisgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAg
ICAgICB9CisgICAgfQorCisgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIndlYmtpdEFuaW1h
dGlvbkVuZCIsIGFuaW1hdGlvbkVuZGVkLCBmYWxzZSApOworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKyAgPGRpdiBjbGFzcz0iYm94Ij4KKyAgICBMb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1l
dC4KKyAgPC9kaXY+CisgIDxkaXYgaWQ9InJlc3VsdCIgc3R5bGU9InBvc2l0aW9uOmFic29sdXRl
OyB0b3A6MTUwcHgiPgorICA8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2FuaW1hdGlvbnMvZmlyc3QtbGV0dGVyLXBsYXktc3RhdGUtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9maXJzdC1sZXR0ZXItcGxheS1zdGF0ZS1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTIyYzU2YwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvZmlyc3QtbGV0dGVyLXBsYXktc3Rh
dGUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNiBAQAorVGhpcyB0ZXN0cyB0aGUgb3BlcmF0aW9u
IG9mIC13ZWJraXQtYW5pbWF0aW9uLXBsYXktc3RhdGUuIEFmdGVyIDEwMCBtaWxsaXNlY29uZHMg
dGhlIGJveCBzaG91bGQgc3RvcCBhbmQgYWZ0ZXIgMTUwIG1pbGxpc2Vjb25kcyBpdCBzaG91bGQg
c3RhcnQgYWdhaW4uIFdlIHRlc3QgaXQgYm90aCB3aGlsZSBpbiBtb3Rpb24gYW5kIHdoZW4gc3Rv
cHBlZC4KKworTG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQuCitQQVNTIC0gImxlZnQiIHByb3Bl
cnR5IGZvciAiYm94MSIgZWxlbWVudCBhdCAwLjFzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IDIw
MAorUEFTUyAtICJsZWZ0IiBwcm9wZXJ0eSBmb3IgImJveDEiIGVsZW1lbnQgYXQgMC4xM3Mgc2F3
IHNvbWV0aGluZyBjbG9zZSB0bzogMjAwCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FuaW1h
dGlvbnMvZmlyc3QtbGV0dGVyLXBsYXktc3RhdGUuaHRtbCBiL0xheW91dFRlc3RzL2FuaW1hdGlv
bnMvZmlyc3QtbGV0dGVyLXBsYXktc3RhdGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi4yMmU5ZjQ2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvYW5pbWF0
aW9ucy9maXJzdC1sZXR0ZXItcGxheS1zdGF0ZS5odG1sCkBAIC0wLDAgKzEsOTIgQEAKKzxodG1s
PgorPGhlYWQ+CisgIDx0aXRsZT5UZXN0IG9mIC13ZWJraXQtYW5pbWF0aW9uLXBsYXktc3RhdGUg
d2l0aCBmaXJzdC1sZXR0ZXIgcHNldWRvIGVsZW1lbnQ8L3RpdGxlPgorICA8c3R5bGUgdHlwZT0i
dGV4dC9jc3MiIG1lZGlhPSJzY3JlZW4iPgorICAgICNib3gxIHsKKyAgICAgIHBvc2l0aW9uOiBh
YnNvbHV0ZTsKKyAgICAgIGhlaWdodDogMTAwcHg7CisgICAgICB3aWR0aDogMTAwcHg7CisgICAg
ICBiYWNrZ3JvdW5kLWNvbG9yOiBibHVlOworICAgICAgY29sb3I6IHJlZDsKKyAgICAgIC13ZWJr
aXQtYW5pbWF0aW9uOiBtb3ZlMSAwLjJzIGxpbmVhcjsKKyAgICB9CisgICAgI2JveDE6OmZpcnN0
LWxldHRlciB7CisgICAgICBjb2xvcjogd2hpdGU7CisgICAgICAtd2Via2l0LWFuaW1hdGlvbjog
Zmlyc3RMZXR0ZXJBbmltYXRpb24gMC4yMXMgbGluZWFyOworICAgIH0KKyAgICAjYm94MS5wYXVz
ZWQ6OmZpcnN0LWxldHRlciB7CisgICAgICAtd2Via2l0LWFuaW1hdGlvbi1wbGF5LXN0YXRlOiBw
YXVzZWQ7CisgICAgfQorICAgICNib3gxLnJ1bm5pbmc6OmZpcnN0LWxldHRlciB7CisgICAgICAt
d2Via2l0LWFuaW1hdGlvbi1wbGF5LXN0YXRlOiBydW5uaW5nOworICAgIH0KKyAgICBALXdlYmtp
dC1rZXlmcmFtZXMgbW92ZTEgeworICAgICAgICBmcm9tIHsgbGVmdDogMHB4IDsgY29sb3I6IHJl
ZDt9CisgICAgICAgIHRvICAgeyBsZWZ0OiA0MDBweDsgY29sb3I6IGJsYWNrO30KKyAgICB9Cisg
ICAgQC13ZWJraXQta2V5ZnJhbWVzIGZpcnN0TGV0dGVyQW5pbWF0aW9uIHsKKyAgICAgICAgZnJv
bSB7IGNvbG9yOiB3aGl0ZTsgfQorICAgICAgICB0byB7IGNvbG9yOiBncmVlbjsgfQorICAgIH0K
KyAgPC9zdHlsZT4KKyAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9hbmltYXRpb24tdGVzdC1oZWxw
ZXJzLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04Ij48L3NjcmlwdD4K
KyAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04Ij4KKyAgICAK
KyAgICBjb25zdCBleHBlY3RlZFZhbHVlcyA9IFsKKyAgICAgIC8vIFthbmltYXRpb24tbmFtZSwg
dGltZSwgZWxlbWVudC1pZCwgcHJvcGVydHksIGV4cGVjdGVkLXZhbHVlLCB0b2xlcmFuY2VdCisg
ICAgICBbIm1vdmUxIiwgMC4xLCAiYm94MSIsICJsZWZ0IiwgMjAwLCAyMF0sCisgICAgICBbIm1v
dmUxIiwgMC4xMywgImJveDEiLCAibGVmdCIsIDIwMCwgMjBdCisgICAgXTsKKyAgICAKKyAgICBm
dW5jdGlvbiBzdG9wKCkKKyAgICB7CisgICAgICAgIGJveDFFbGVtZW50ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoImJveDEiKTsKKyAgICAgICAgYm94MUVsZW1lbnQuY2xhc3NOYW1lID0gInBh
dXNlZCI7CisgICAgICAgIGJveDFFbGVtZW50LnN0eWxlLndlYmtpdEFuaW1hdGlvblBsYXlTdGF0
ZSA9ICJwYXVzZWQiOworICAgIH0KKworICAgIGZ1bmN0aW9uIHN0YXJ0KCkKKyAgICB7CisgICAg
ICAgIGJveDFFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImJveDEiKTsKKyAgICAg
ICAgYm94MUVsZW1lbnQuY2xhc3NOYW1lID0gInJ1bm5pbmciOworICAgICAgICBib3gxRWxlbWVu
dC5zdHlsZS53ZWJraXRBbmltYXRpb25QbGF5U3RhdGUgPSAicnVubmluZyI7CisgICAgfQorCisg
ICAgZnVuY3Rpb24gc2V0VGltZXJzKCkKKyAgICB7CisgICAgICAgIHNldFRpbWVvdXQoc3RvcCwg
MTAwKTsKKyAgICAgICAgc2V0VGltZW91dChzdGFydCwgMTUwKTsKKyAgICB9CisKKyAgICB2YXIg
bW92ZTFBbmltYXRpb25FbmRlZCA9IGZhbHNlOworICAgIGZ1bmN0aW9uIGFuaW1hdGlvbkVuZGVk
KGV2ZW50KQorICAgIHsKKyAgICAgICAgaWYgKGV2ZW50LmFuaW1hdGlvbk5hbWUgPT0gIm1vdmUx
IikKKyAgICAgICAgICAgIG1vdmUxQW5pbWF0aW9uRW5kZWQgPSB0cnVlOworCisgICAgICAgIGlm
IChldmVudC5hbmltYXRpb25OYW1lID09ICJmaXJzdExldHRlckFuaW1hdGlvbiIgJiYgbW92ZTFB
bmltYXRpb25FbmRlZCkgeworICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jl
c3VsdEZpcnN0TGV0dGVyJykuaW5uZXJIVE1MID0gIlRlc3QgRmFpbGVkOiBmaXJzdExldHRlckFu
aW1hdGlvbiBzaG91bGQgZW5kIGJlZm9yZSBtb3ZlMSBhbmltYXRpb248YnI+IjsKKyAgICAgICAg
fQorICAgIH0KKworICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJ3ZWJraXRBbmltYXRpb25F
bmQiLCBhbmltYXRpb25FbmRlZCwgZmFsc2UgKTsKKyAgICAKKyAgICBydW5BbmltYXRpb25UZXN0
KGV4cGVjdGVkVmFsdWVzLCBzZXRUaW1lcnMsIG51bGwsIHRydWUpOworICAgIAorICA8L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPHA+CitUaGlzIHRlc3RzIHRoZSBvcGVyYXRpb24gb2YgLXdl
YmtpdC1hbmltYXRpb24tcGxheS1zdGF0ZS4gQWZ0ZXIgMTAwIG1pbGxpc2Vjb25kcyB0aGUgYm94
IHNob3VsZCBzdG9wIGFuZCBhZnRlciAxNTAgbWlsbGlzZWNvbmRzCitpdCBzaG91bGQgc3RhcnQg
YWdhaW4uIFdlIHRlc3QgaXQgYm90aCB3aGlsZSBpbiBtb3Rpb24gYW5kIHdoZW4gc3RvcHBlZC4K
KzxkaXYgaWQ9ImJveDEiPgorICAgIExvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LgorPC9kaXY+
Cis8ZGl2IGlkPSJib3gyIj4KKzwvZGl2PgorPGRpdiBpZD0icmVzdWx0Ij4KKzwvZGl2PgorPGRp
diBpZD0icmVzdWx0Rmlyc3RMZXR0ZXIiPgorPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy90cmFuc2l0aW9ucy9maXJzdC1sZXR0ZXItY29sb3ItdHJhbnNp
dGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90cmFuc2l0aW9ucy9maXJzdC1sZXR0ZXIt
Y29sb3ItdHJhbnNpdGlvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uYjA1N2IwZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RyYW5zaXRp
b25zL2ZpcnN0LWxldHRlci1jb2xvci10cmFuc2l0aW9uLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDIgQEAKK0xvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LgorUEFTUwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvdHJhbnNpdGlvbnMvZmlyc3QtbGV0dGVyLWNvbG9yLXRyYW5zaXRpb24uaHRtbCBi
L0xheW91dFRlc3RzL3RyYW5zaXRpb25zL2ZpcnN0LWxldHRlci1jb2xvci10cmFuc2l0aW9uLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjBjNTk1YwotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3RyYW5zaXRpb25zL2ZpcnN0LWxldHRlci1jb2xvci10cmFu
c2l0aW9uLmh0bWwKQEAgLTAsMCArMSw1NiBAQAorPCFET0NUWVBFIGh0bWw+CisKKzxodG1sPgor
PGhlYWQ+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiIG1lZGlhPSJzY3JlZW4iPgorICAgIC5ib3gg
eworICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICAgIGJhY2tn
cm91bmQtY29sb3I6IGJsdWU7CisgICAgfQorICAgIAorICAgIC5ib3g6OmZpcnN0LWxldHRlciB7
CisgICAgICBmb250LXNpemU6IDI0cHQ7CisgICAgICBjb2xvcjogYmxhY2s7CisgICAgICAtd2Vi
a2l0LXRyYW5zaXRpb246IGNvbG9yIDAuMXM7CisgICAgfQorCisgICAgYm9keS5nbyAuYm94Ojpm
aXJzdC1sZXR0ZXIgeworICAgICAgY29sb3I6IHdoaXRlOworICAgIH0KKworPC9zdHlsZT4KKzxz
Y3JpcHQgIHR5cGU9InRleHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiPgorICAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5kdW1wQXNUZXh0KCk7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERv
bmUoKTsKKyAgICB9CisKKyAgICB2YXIgcmVzdWx0ID0gIiI7CisgICAgZnVuY3Rpb24gdHJhbnNp
dGlvbkVuZGVkKGV2ZW50KQorICAgIHsgICAKKyAgICAgICAgaWYgKGV2ZW50LnByb3BlcnR5TmFt
ZSA9PSAiY29sb3IiKQorICAgICAgICAgICByZXN1bHQgKz0gIlBBU1MiOworICAgICAgICBlbHNl
CisgICAgICAgICAgIHJlc3VsdCArPSAiRkFJTCI7CisKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ3Jlc3VsdCcpLmlubmVySFRNTCA9IHJlc3VsdDsKKyAgICAgICAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
Lm5vdGlmeURvbmUoKTsKKyAgICB9CisKKyAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignd2Vi
a2l0VHJhbnNpdGlvbkVuZCcsIHRyYW5zaXRpb25FbmRlZCwgZmFsc2UpOworCisgICAgd2luZG93
LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBmdW5jdGlvbiAoKSB7CisgICAgICAgIGRvY3VtZW50
LmJvZHkuY2xhc3NOYW1lID0gImdvIjsKKyAgICB9LCBmYWxzZSk7Cis8L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorICA8ZGl2IGNsYXNzPSJib3giPgorICAgIExvcmVtIGlwc3VtIGRvbG9yIHNp
dCBhbWV0LgorICA8L2Rpdj4KKyAgPGRpdiBpZD0icmVzdWx0Ij4KKyAgPC9kaXY+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90cmFuc2l0aW9ucy9maXJzdC1sZXR0
ZXItdHJhbnNpdGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90cmFuc2l0aW9ucy9maXJz
dC1sZXR0ZXItdHJhbnNpdGlvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uNWQ0NDhiZTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90cmFu
c2l0aW9ucy9maXJzdC1sZXR0ZXItdHJhbnNpdGlvbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwx
MCBAQAorQm94IE9uZQorQm94IHR3bworVHJhbnN0aW9ucyB0ZXN0IHJlc3VsdDogCisKK1BBU1Mg
CitQQVNTIAorUEFTUyAKK1BBU1MgCitQQVNTIAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90
cmFuc2l0aW9ucy9maXJzdC1sZXR0ZXItdHJhbnNpdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvdHJh
bnNpdGlvbnMvZmlyc3QtbGV0dGVyLXRyYW5zaXRpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi5iZWNlZTA4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
dHJhbnNpdGlvbnMvZmlyc3QtbGV0dGVyLXRyYW5zaXRpb24uaHRtbApAQCAtMCwwICsxLDg1IEBA
Cis8aHRtbD4KKzxoZWFkPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIiBtZWRpYT0ic2NyZWVuIj4K
KyAgICAuYm94IHsKKyAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAgICAgIHdpZHRoOiAxMDBw
eDsKKyAgICAgIGhlaWdodDogMTAwcHg7CisgICAgICBsZWZ0OiAxMDBweDsKKyAgICAgIGJhY2tn
cm91bmQtY29sb3I6IGJsdWU7CisgICAgfQorCisgICAgLmJveDo6Zmlyc3QtbGV0dGVyIHsKKyAg
ICAgIGZvbnQtc2l6ZTogMjRwdDsKKyAgICAgIGNvbG9yOiBibGFjazsKKyAgICAgIC13ZWJraXQt
dHJhbnNpdGlvbjogY29sb3IgMC4xcyAwLjFzOworICAgIH0KKworICAgICNmaXJzdCB7CisgICAg
ICAtd2Via2l0LXRyYW5zaXRpb246IGxlZnQgMC4xcyAwLjE1czsKKyAgICB9CisKKyAgICAjc2Vj
b25kIHsKKyAgICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuMXMgMC4yczsKKyAgICB9CisK
KyAgICAuYW5pbWF0aW5nICNmaXJzdCB7CisgICAgICBsZWZ0OiA0MDBweDsKKyAgICB9CisKKyAg
ICAuYW5pbWF0aW5nICNzZWNvbmQgeworICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgz
NjBkZWcpOworICAgICAgY29sb3I6IHB1cnBsZTsKKyAgICB9CisKKyAgICAuYW5pbWF0aW5nICo6
OmZpcnN0LWxldHRlciB7CisgICAgICBjb2xvcjogd2hpdGU7CisgICAgfQorCisKKzwvc3R5bGU+
Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3RyYW5zaXRpb24tdGVzdC1oZWxwZXJzLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgIHR5cGU9InRleHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiPgor
ICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndh
aXRVbnRpbERvbmUoKTsKKyAgICB9CisKKyAgICB2YXIgcmVzdWx0ID0gIlRyYW5zdGlvbnMgdGVz
dCByZXN1bHQ6IDxicj48YnI+IjsKKyAgICB2YXIgdHJhbnNpdGlvbnMgPSAwOworICAgIGZ1bmN0
aW9uIHRyYW5zaXRpb25FbmRlZChldmVudCkKKyAgICB7CisgICAgICAgIGlmICgoZXZlbnQucHJv
cGVydHlOYW1lID09ICJjb2xvciIpIHx8IChldmVudC5wcm9wZXJ0eU5hbWUgPT0gImxlZnQiKSB8
fCAoZXZlbnQucHJvcGVydHlOYW1lID09ICItd2Via2l0LXRyYW5zZm9ybSIpKQorICAgICAgICAg
ICByZXN1bHQgKz0gIlBBU1MgPGJyPiI7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgcmVzdWx0
ICs9ICJGQUlMIDxicj4iOworCisgICAgICAgICsrdHJhbnNpdGlvbnM7CisKKyAgICAgICAgaWYg
KHRyYW5zaXRpb25zID09IDUpIHsKKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdyZXN1bHQnKS5pbm5lckhUTUwgPSByZXN1bHQ7CisgICAgICAgICAgICBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
Lm5vdGlmeURvbmUoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHdpbmRvdy5hZGRFdmVudExp
c3RlbmVyKCAnd2Via2l0VHJhbnNpdGlvbkVuZCcsIHRyYW5zaXRpb25FbmRlZCwgZmFsc2UgKTsK
KworICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgZnVuY3Rpb24gKCkgeworICAg
ICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29udGFpbmVyJykuY2xhc3NOYW1lID0gJ2Fu
aW1hdGluZyc7CisgICAgfSwgZmFsc2UpOworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxk
aXYgaWQ9ImNvbnRhaW5lciI+CisgIDxkaXYgaWQ9ImZpcnN0IiBjbGFzcz0iYm94Ij4KKyAgICAg
IEJveCBPbmUKKyAgPC9kaXY+CisgIDxkaXYgaWQ9InNlY29uZCIgY2xhc3M9ImJveCI+CisgICAg
ICBCb3ggdHdvCisgIDwvZGl2PgorPC9kaXY+CisgIDxkaXYgaWQ9InJlc3VsdCI+CisgIDwvZGl2
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDExNDg3MWMuLjEyZDhjN2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw1MiBAQAorMjAxMi0wNi0xMSAgSWdvciBPbGl2ZWlyYSAgPGlnb3Iu
b0BzaXNhLnNhbXN1bmcuY29tPgorCisgICAgICAgIEFwcGx5IGFuaW1hdGlvbnMgYW5kIHRyYW5z
aXRpb25zIGZvciBmaXJzdC1sZXR0ZXIgZWxlbWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODUyNTMKKworICAgICAgICBBZGQgYW5pbWF0aW9ucyBh
bmQgdHJhbnNpdGlvbnMgc3VwcG9ydCBmb3IgdGhlIGZpcnN0LWxldHRlcgorICAgICAgICBwc2V1
ZG8gZWxlbWVudC4KKyAgICAgICAgSW5zdGVhZCBvZiBjYWxsaW5nIFJlbmRlck9qZWN0Ojpub2Rl
KCkgaW4gdGhlIGFuaW1hdGlvbnMgY29kZSwKKyAgICAgICAgbm93IHdlIG5lZWQgdG8gY2FsbCBS
ZW5kZXJPYmplY3Q6OnN0eWxlZEdlbmVyYXRpbmdOb2RlKCkgYmVjYXVzZQorICAgICAgICBwc2V1
ZG8gZWxlbWVudHMgZG9lcyBub3QgaGF2ZSBhIE5vZGUgYXNzb2NpYXRlZCB3aXRoIHRoZQorICAg
ICAgICBSZW5kZXJPYmplY3QuCisKKyAgICAgICAgSW5pdGlhbCBwYXRjaCBieSBTaW1vbiBGcmFz
ZXIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0
czogYW5pbWF0aW9ucy9maXJzdC1sZXR0ZXItYW5pbWF0aW9uLmh0bWwKKyAgICAgICAgICAgICAg
IGFuaW1hdGlvbnMvZmlyc3QtbGV0dGVyLXBsYXktc3RhdGUuaHRtbAorICAgICAgICAgICAgICAg
dHJhbnNpdGlvbnMvZmlyc3QtbGV0dGVyLWNvbG9yLXRyYW5zaXRpb24uaHRtbAorICAgICAgICAg
ICAgICAgdHJhbnNpdGlvbnMvZmlyc3QtbGV0dGVyLXRyYW5zaXRpb24uaHRtbAorCisgICAgICAg
ICogcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpB
bmltYXRpb25CYXNlOjp1cGRhdGVTdGF0ZU1hY2hpbmUpOgorICAgICAgICAqIHBhZ2UvYW5pbWF0
aW9uL0FuaW1hdGlvbkNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9u
Q29udHJvbGxlclByaXZhdGU6OnVwZGF0ZUFuaW1hdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6
QW5pbWF0aW9uQ29udHJvbGxlclByaXZhdGU6OnBhdXNlQW5pbWF0aW9uQXRUaW1lKToKKyAgICAg
ICAgKFdlYkNvcmU6OkFuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRlOjpwYXVzZVRyYW5zaXRpb25B
dFRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uQ29udHJvbGxlcjo6Y2FuY2VsQW5p
bWF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25Db250cm9sbGVyOjp1cGRhdGVB
bmltYXRpb25zKToKKyAgICAgICAgKiBwYWdlL2FuaW1hdGlvbi9JbXBsaWNpdEFuaW1hdGlvbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbXBsaWNpdEFuaW1hdGlvbjo6cGF1c2VBbmltYXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6SW1wbGljaXRBbmltYXRpb246OnNlbmRUcmFuc2l0aW9uRXZl
bnQpOgorICAgICAgICAqIHBhZ2UvYW5pbWF0aW9uL0tleWZyYW1lQW5pbWF0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OktleWZyYW1lQW5pbWF0aW9uOjpLZXlmcmFtZUFuaW1hdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpLZXlmcmFtZUFuaW1hdGlvbjo6cGF1c2VBbmltYXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6S2V5ZnJhbWVBbmltYXRpb246OmVuZEFuaW1hdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpLZXlmcmFtZUFuaW1hdGlvbjo6c2VuZEFuaW1hdGlvbkV2ZW50KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
QmxvY2s6OnVwZGF0ZUZpcnN0TGV0dGVyU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
QmxvY2s6OmNyZWF0ZUZpcnN0TGV0dGVyUmVuZGVyZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJJbmxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjpjbGlwcGVk
T3ZlcmZsb3dSZWN0Rm9yUmVwYWludCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVj
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OnNldEFuaW1hdGFibGVTdHls
ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OnN0eWxlZEdlbmVyYXRpbmdOb2Rl
KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3Qu
aDoKKyAgICAgICAgKFJlbmRlck9iamVjdCk6CisKIDIwMTItMDYtMDcgIEVkYWVuYSBTYWxpbmFz
IEphc3NvICA8ZWRhZW5hQGFwcGxlLmNvbT4KIAogICAgICAgICBTaG91bGQgZmlyZSBlcnJvciBl
dmVudCBmb3IgZW1wdHkgNDA0IHNjcmlwdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1h
dGlvbi9BbmltYXRpb25CYXNlLmNwcAppbmRleCAzM2Q2MzI2Li45ZTgwZDg5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcApAQCAtMTkxLDcg
KzE5MSw3IEBAIHZvaWQgQW5pbWF0aW9uQmFzZTo6dXBkYXRlU3RhdGVNYWNoaW5lKEFuaW1TdGF0
ZUlucHV0IGlucHV0LCBkb3VibGUgcGFyYW0pCiAKICAgICAgICAgICAgICAgICAvLyBUcmlnZ2Vy
IGEgcmVuZGVyIHNvIHdlIGNhbiBzdGFydCB0aGUgYW5pbWF0aW9uCiAgICAgICAgICAgICAgICAg
aWYgKG1fb2JqZWN0KQotICAgICAgICAgICAgICAgICAgICBtX2NvbXBBbmltLT5hbmltYXRpb25D
b250cm9sbGVyKCktPmFkZE5vZGVDaGFuZ2VUb0Rpc3BhdGNoKG1fb2JqZWN0LT5ub2RlKCkpOwor
ICAgICAgICAgICAgICAgICAgICBtX2NvbXBBbmltLT5hbmltYXRpb25Db250cm9sbGVyKCktPmFk
ZE5vZGVDaGFuZ2VUb0Rpc3BhdGNoKG1fb2JqZWN0LT5zdHlsZWRHZW5lcmF0aW5nTm9kZSgpKTsK
ICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKCFwYXVzZWQoKSk7
CiAgICAgICAgICAgICAgICAgLy8gV2UncmUgd2FpdGluZyBmb3IgdGhlIHN0YXJ0IHRpbWVyIHRv
IGZpcmUgYW5kIHdlIGdvdCBhIHBhdXNlLiBDYW5jZWwgdGhlIHRpbWVyLCBwYXVzZSBhbmQgd2Fp
dApAQCAtMjUyLDcgKzI1Miw3IEBAIHZvaWQgQW5pbWF0aW9uQmFzZTo6dXBkYXRlU3RhdGVNYWNo
aW5lKEFuaW1TdGF0ZUlucHV0IGlucHV0LCBkb3VibGUgcGFyYW0pCiAKICAgICAgICAgICAgICAg
ICAvLyBEaXNwYXRjaCB1cGRhdGVTdHlsZUlmTmVlZGVkIHNvIHdlIGNhbiBzdGFydCB0aGUgYW5p
bWF0aW9uCiAgICAgICAgICAgICAgICAgaWYgKG1fb2JqZWN0KQotICAgICAgICAgICAgICAgICAg
ICBtX2NvbXBBbmltLT5hbmltYXRpb25Db250cm9sbGVyKCktPmFkZE5vZGVDaGFuZ2VUb0Rpc3Bh
dGNoKG1fb2JqZWN0LT5ub2RlKCkpOworICAgICAgICAgICAgICAgICAgICBtX2NvbXBBbmltLT5h
bmltYXRpb25Db250cm9sbGVyKCktPmFkZE5vZGVDaGFuZ2VUb0Rpc3BhdGNoKG1fb2JqZWN0LT5z
dHlsZWRHZW5lcmF0aW5nTm9kZSgpKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICAgICAgLy8gV2UgYXJlIHBhdXNpbmcgd2hpbGUgd2FpdGluZyBmb3IgYSBzdGFydCByZXNwb25z
ZS4gQ2FuY2VsIHRoZSBhbmltYXRpb24gYW5kIHdhaXQuIFdoZW4gCiAgICAgICAgICAgICAgICAg
Ly8gd2UgdW5wYXVzZSwgd2Ugd2lsbCBhY3QgYXMgdGhvdWdoIHRoZSBzdGFydCB0aW1lciBqdXN0
IGZpcmVkCkBAIC0yOTgsNyArMjk4LDcgQEAgdm9pZCBBbmltYXRpb25CYXNlOjp1cGRhdGVTdGF0
ZU1hY2hpbmUoQW5pbVN0YXRlSW5wdXQgaW5wdXQsIGRvdWJsZSBwYXJhbSkKICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlc3VtZU92ZXJyaWRkZW5BbmltYXRpb25zKCk7CiAKICAgICAgICAgICAg
ICAgICAgICAgLy8gRmlyZSBvZmYgYW5vdGhlciBzdHlsZSBjaGFuZ2Ugc28gd2UgY2FuIHNldCB0
aGUgZmluYWwgdmFsdWUKLSAgICAgICAgICAgICAgICAgICAgbV9jb21wQW5pbS0+YW5pbWF0aW9u
Q29udHJvbGxlcigpLT5hZGROb2RlQ2hhbmdlVG9EaXNwYXRjaChtX29iamVjdC0+bm9kZSgpKTsK
KyAgICAgICAgICAgICAgICAgICAgbV9jb21wQW5pbS0+YW5pbWF0aW9uQ29udHJvbGxlcigpLT5h
ZGROb2RlQ2hhbmdlVG9EaXNwYXRjaChtX29iamVjdC0+c3R5bGVkR2VuZXJhdGluZ05vZGUoKSk7
CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAg
ICAvLyBXZSBhcmUgcGF1c2luZyB3aGlsZSBydW5uaW5nLiBDYW5jZWwgdGhlIGFuaW1hdGlvbiBh
bmQgd2FpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0
aW9uQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRp
b25Db250cm9sbGVyLmNwcAppbmRleCBjNDkxMTllLi45ODg1OGZmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250cm9sbGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250cm9sbGVyLmNwcApAQCAt
MTAwLDcgKzEwMCw3IEBAIGRvdWJsZSBBbmltYXRpb25Db250cm9sbGVyUHJpdmF0ZTo6dXBkYXRl
QW5pbWF0aW9ucyhTZXRDaGFuZ2VkIGNhbGxTZXRDaGFuZ2VkLyoKICAgICAgICAgICAgICAgICB0
aW1lVG9OZXh0U2VydmljZSA9IHQ7CiAgICAgICAgICAgICBpZiAoIXRpbWVUb05leHRTZXJ2aWNl
KSB7CiAgICAgICAgICAgICAgICAgaWYgKGNhbGxTZXRDaGFuZ2VkID09IENhbGxTZXRDaGFuZ2Vk
KSB7Ci0gICAgICAgICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBpdC0+Zmlyc3QtPm5vZGUoKTsK
KyAgICAgICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9IGl0LT5maXJzdC0+c3R5bGVkR2VuZXJh
dGluZ05vZGUoKTsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKCFub2RlIHx8IChub2RlLT5k
b2N1bWVudCgpICYmICFub2RlLT5kb2N1bWVudCgpLT5pblBhZ2VDYWNoZSgpKSk7CiAgICAgICAg
ICAgICAgICAgICAgIG5vZGUtPnNldE5lZWRzU3R5bGVSZWNhbGMoU3ludGhldGljU3R5bGVDaGFu
Z2UpOwogICAgICAgICAgICAgICAgICAgICBjYWxsZWRTZXRDaGFuZ2VkID0gdHJ1ZTsKQEAgLTMy
OCw3ICszMjgsNyBAQCBib29sIEFuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRlOjpwYXVzZUFuaW1h
dGlvbkF0VGltZShSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjbwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKICAgICBpZiAoY29tcEFuaW0tPnBhdXNlQW5pbWF0aW9uQXRUaW1lKG5hbWUsIHQpKSB7
Ci0gICAgICAgIHJlbmRlcmVyLT5ub2RlKCktPnNldE5lZWRzU3R5bGVSZWNhbGMoU3ludGhldGlj
U3R5bGVDaGFuZ2UpOworICAgICAgICByZW5kZXJlci0+c3R5bGVkR2VuZXJhdGluZ05vZGUoKS0+
c2V0TmVlZHNTdHlsZVJlY2FsYyhTeW50aGV0aWNTdHlsZUNoYW5nZSk7CiAgICAgICAgIHN0YXJ0
VXBkYXRlU3R5bGVJZk5lZWRlZERpc3BhdGNoZXIoKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQpAQCAtMzQ2LDcgKzM0Niw3IEBAIGJvb2wgQW5pbWF0aW9uQ29udHJvbGxlclByaXZhdGU6
OnBhdXNlVHJhbnNpdGlvbkF0VGltZShSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAogICAgIGlmIChjb21wQW5pbS0+cGF1c2VUcmFuc2l0aW9uQXRUaW1l
KGNzc1Byb3BlcnR5SUQocHJvcGVydHkpLCB0KSkgewotICAgICAgICByZW5kZXJlci0+bm9kZSgp
LT5zZXROZWVkc1N0eWxlUmVjYWxjKFN5bnRoZXRpY1N0eWxlQ2hhbmdlKTsKKyAgICAgICAgcmVu
ZGVyZXItPnN0eWxlZEdlbmVyYXRpbmdOb2RlKCktPnNldE5lZWRzU3R5bGVSZWNhbGMoU3ludGhl
dGljU3R5bGVDaGFuZ2UpOwogICAgICAgICBzdGFydFVwZGF0ZVN0eWxlSWZOZWVkZWREaXNwYXRj
aGVyKCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTUwOCw3ICs1MDgsNyBAQCB2
b2lkIEFuaW1hdGlvbkNvbnRyb2xsZXI6OmNhbmNlbEFuaW1hdGlvbnMoUmVuZGVyT2JqZWN0KiBy
ZW5kZXJlcikKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1fZGF0YS0+Y2xlYXIocmVuZGVy
ZXIpKSB7Ci0gICAgICAgIE5vZGUqIG5vZGUgPSByZW5kZXJlci0+bm9kZSgpOworICAgICAgICBO
b2RlKiBub2RlID0gcmVuZGVyZXItPnN0eWxlZEdlbmVyYXRpbmdOb2RlKCk7CiAgICAgICAgIEFT
U0VSVCghbm9kZSB8fCAobm9kZS0+ZG9jdW1lbnQoKSAmJiAhbm9kZS0+ZG9jdW1lbnQoKS0+aW5Q
YWdlQ2FjaGUoKSkpOwogICAgICAgICBub2RlLT5zZXROZWVkc1N0eWxlUmVjYWxjKFN5bnRoZXRp
Y1N0eWxlQ2hhbmdlKTsKICAgICB9CkBAIC01MzMsNyArNTMzLDYgQEAgUGFzc1JlZlB0cjxSZW5k
ZXJTdHlsZT4gQW5pbWF0aW9uQ29udHJvbGxlcjo6dXBkYXRlQW5pbWF0aW9ucyhSZW5kZXJPYmpl
Y3QqIHJlbmQKICAgICAvLyBhZ2FpbnN0IHRoZSBhbmltYXRpb25zIGluIHRoZSBzdHlsZSBhbmQg
bWFrZSBzdXJlIHdlJ3JlIGluIHN5bmMuICBJZiBkZXN0aW5hdGlvbiB2YWx1ZXMKICAgICAvLyBo
YXZlIGNoYW5nZWQsIHdlIHJlc2V0IHRoZSBhbmltYXRpb24uICBXZSB0aGVuIGRvIGEgYmxlbmQg
dG8gZ2V0IG5ldyB2YWx1ZXMgYW5kIHdlIHJldHVybgogICAgIC8vIGEgbmV3IHN0eWxlLgotICAg
IEFTU0VSVChyZW5kZXJlci0+bm9kZSgpKTsgLy8gRklYTUU6IFdlIGRvIG5vdCBhbmltYXRlIGdl
bmVyYXRlZCBjb250ZW50IHlldC4KIAogICAgIFJlZlB0cjxDb21wb3NpdGVBbmltYXRpb24+IHJl
bmRlcmVyQW5pbWF0aW9ucyA9IG1fZGF0YS0+YWNjZXNzQ29tcG9zaXRlQW5pbWF0aW9uKHJlbmRl
cmVyKTsKICAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IGJsZW5kZWRTdHlsZSA9IHJlbmRlcmVyQW5p
bWF0aW9ucy0+YW5pbWF0ZShyZW5kZXJlciwgb2xkU3R5bGUsIG5ld1N0eWxlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0ltcGxpY2l0QW5pbWF0aW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0ltcGxpY2l0QW5pbWF0aW9uLmNwcAppbmRl
eCBmNzFhMTUzLi45Nzg5NzYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1h
dGlvbi9JbXBsaWNpdEFuaW1hdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmlt
YXRpb24vSW1wbGljaXRBbmltYXRpb24uY3BwCkBAIC0xMjksNyArMTI5LDcgQEAgdm9pZCBJbXBs
aWNpdEFuaW1hdGlvbjo6cGF1c2VBbmltYXRpb24oZG91YmxlIHRpbWVPZmZzZXQpCiAjZW5kaWYK
ICAgICAvLyBSZXN0b3JlIHRoZSBvcmlnaW5hbCAodW5hbmltYXRlZCkgc3R5bGUKICAgICBpZiAo
IXBhdXNlZCgpKQotICAgICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKG1fb2JqZWN0LT5ub2RlKCkp
OworICAgICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKG1fb2JqZWN0LT5zdHlsZWRHZW5lcmF0aW5n
Tm9kZSgpKTsKIH0KIAogdm9pZCBJbXBsaWNpdEFuaW1hdGlvbjo6ZW5kQW5pbWF0aW9uKCkKQEAg
LTE2NSw4ICsxNjUsOCBAQCBib29sIEltcGxpY2l0QW5pbWF0aW9uOjpzZW5kVHJhbnNpdGlvbkV2
ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBkb3VibAogICAgICAgICAgICAgICAg
IAogICAgICAgICAgICAgLy8gRGlzcGF0Y2ggdGhlIGV2ZW50CiAgICAgICAgICAgICBSZWZQdHI8
RWxlbWVudD4gZWxlbWVudCA9IDA7Ci0gICAgICAgICAgICBpZiAobV9vYmplY3QtPm5vZGUoKSAm
JiBtX29iamVjdC0+bm9kZSgpLT5pc0VsZW1lbnROb2RlKCkpCi0gICAgICAgICAgICAgICAgZWxl
bWVudCA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihtX29iamVjdC0+bm9kZSgpKTsKKyAgICAgICAg
ICAgIGlmIChtX29iamVjdC0+c3R5bGVkR2VuZXJhdGluZ05vZGUoKSAmJiBtX29iamVjdC0+c3R5
bGVkR2VuZXJhdGluZ05vZGUoKS0+aXNFbGVtZW50Tm9kZSgpKQorICAgICAgICAgICAgICAgIGVs
ZW1lbnQgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obV9vYmplY3QtPnN0eWxlZEdlbmVyYXRpbmdO
b2RlKCkpOwogCiAgICAgICAgICAgICBBU1NFUlQoIWVsZW1lbnQgfHwgKGVsZW1lbnQtPmRvY3Vt
ZW50KCkgJiYgIWVsZW1lbnQtPmRvY3VtZW50KCktPmluUGFnZUNhY2hlKCkpKTsKICAgICAgICAg
ICAgIGlmICghZWxlbWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0
aW9uL0tleWZyYW1lQW5pbWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9u
L0tleWZyYW1lQW5pbWF0aW9uLmNwcAppbmRleCBkYTI5MTVkLi41M2YyNDZkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9LZXlmcmFtZUFuaW1hdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vS2V5ZnJhbWVBbmltYXRpb24uY3BwCkBA
IC01MSw4ICs1MSw4IEBAIEtleWZyYW1lQW5pbWF0aW9uOjpLZXlmcmFtZUFuaW1hdGlvbihjb25z
dCBBbmltYXRpb24qIGFuaW1hdGlvbiwgUmVuZGVyT2JqZWN0KiByCiAgICAgLCBtX3VuYW5pbWF0
ZWRTdHlsZSh1bmFuaW1hdGVkU3R5bGUpCiB7CiAgICAgLy8gR2V0IHRoZSBrZXlmcmFtZSBSZW5k
ZXJTdHlsZXMKLSAgICBpZiAobV9vYmplY3QgJiYgbV9vYmplY3QtPm5vZGUoKSAmJiBtX29iamVj
dC0+bm9kZSgpLT5pc0VsZW1lbnROb2RlKCkpCi0gICAgICAgIG1fb2JqZWN0LT5kb2N1bWVudCgp
LT5zdHlsZVJlc29sdmVyKCktPmtleWZyYW1lU3R5bGVzRm9yQW5pbWF0aW9uKHN0YXRpY19jYXN0
PEVsZW1lbnQqPihtX29iamVjdC0+bm9kZSgpKSwgdW5hbmltYXRlZFN0eWxlLCBtX2tleWZyYW1l
cyk7CisgICAgaWYgKG1fb2JqZWN0ICYmIG1fb2JqZWN0LT5zdHlsZWRHZW5lcmF0aW5nTm9kZSgp
ICYmIG1fb2JqZWN0LT5zdHlsZWRHZW5lcmF0aW5nTm9kZSgpLT5pc0VsZW1lbnROb2RlKCkpCisg
ICAgICAgIG1fb2JqZWN0LT5kb2N1bWVudCgpLT5zdHlsZVJlc29sdmVyKCktPmtleWZyYW1lU3R5
bGVzRm9yQW5pbWF0aW9uKHN0YXRpY19jYXN0PEVsZW1lbnQqPihtX29iamVjdC0+c3R5bGVkR2Vu
ZXJhdGluZ05vZGUoKSksIHVuYW5pbWF0ZWRTdHlsZSwgbV9rZXlmcmFtZXMpOwogCiAgICAgLy8g
VXBkYXRlIHRoZSBtX3RyYW5zZm9ybUZ1bmN0aW9uTGlzdFZhbGlkIGZsYWcgYmFzZWQgb24gd2hl
dGhlciB0aGUgZnVuY3Rpb24gbGlzdHMgaW4gdGhlIGtleWZyYW1lcyBtYXRjaC4KICAgICB2YWxp
ZGF0ZVRyYW5zZm9ybUZ1bmN0aW9uTGlzdCgpOwpAQCAtMjU1LDcgKzI1NSw3IEBAIHZvaWQgS2V5
ZnJhbWVBbmltYXRpb246OnBhdXNlQW5pbWF0aW9uKGRvdWJsZSB0aW1lT2Zmc2V0KQogI2VuZGlm
CiAgICAgLy8gUmVzdG9yZSB0aGUgb3JpZ2luYWwgKHVuYW5pbWF0ZWQpIHN0eWxlCiAgICAgaWYg
KCFwYXVzZWQoKSkKLSAgICAgICAgc2V0TmVlZHNTdHlsZVJlY2FsYyhtX29iamVjdC0+bm9kZSgp
KTsKKyAgICAgICAgc2V0TmVlZHNTdHlsZVJlY2FsYyhtX29iamVjdC0+c3R5bGVkR2VuZXJhdGlu
Z05vZGUoKSk7CiB9CiAKIHZvaWQgS2V5ZnJhbWVBbmltYXRpb246OmVuZEFuaW1hdGlvbigpCkBA
IC0yNjksNyArMjY5LDcgQEAgdm9pZCBLZXlmcmFtZUFuaW1hdGlvbjo6ZW5kQW5pbWF0aW9uKCkK
ICNlbmRpZgogICAgIC8vIFJlc3RvcmUgdGhlIG9yaWdpbmFsICh1bmFuaW1hdGVkKSBzdHlsZQog
ICAgIGlmICghcGF1c2VkKCkpCi0gICAgICAgIHNldE5lZWRzU3R5bGVSZWNhbGMobV9vYmplY3Qt
Pm5vZGUoKSk7CisgICAgICAgIHNldE5lZWRzU3R5bGVSZWNhbGMobV9vYmplY3QtPnN0eWxlZEdl
bmVyYXRpbmdOb2RlKCkpOwogfQogCiBib29sIEtleWZyYW1lQW5pbWF0aW9uOjpzaG91bGRTZW5k
RXZlbnRGb3JMaXN0ZW5lcihEb2N1bWVudDo6TGlzdGVuZXJUeXBlIGxpc3RlbmVyVHlwZSkgY29u
c3QKQEAgLTMxNCw4ICszMTQsOCBAQCBib29sIEtleWZyYW1lQW5pbWF0aW9uOjpzZW5kQW5pbWF0
aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGRvdWJsZQogICAgIGlmIChz
aG91bGRTZW5kRXZlbnRGb3JMaXN0ZW5lcihsaXN0ZW5lclR5cGUpKSB7CiAgICAgICAgIC8vIERp
c3BhdGNoIHRoZSBldmVudAogICAgICAgICBSZWZQdHI8RWxlbWVudD4gZWxlbWVudDsKLSAgICAg
ICAgaWYgKG1fb2JqZWN0LT5ub2RlKCkgJiYgbV9vYmplY3QtPm5vZGUoKS0+aXNFbGVtZW50Tm9k
ZSgpKQotICAgICAgICAgICAgZWxlbWVudCA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihtX29iamVj
dC0+bm9kZSgpKTsKKyAgICAgICAgaWYgKG1fb2JqZWN0LT5zdHlsZWRHZW5lcmF0aW5nTm9kZSgp
ICYmIG1fb2JqZWN0LT5zdHlsZWRHZW5lcmF0aW5nTm9kZSgpLT5pc0VsZW1lbnROb2RlKCkpCisg
ICAgICAgICAgICBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG1fb2JqZWN0LT5zdHls
ZWRHZW5lcmF0aW5nTm9kZSgpKTsKIAogICAgICAgICBBU1NFUlQoIWVsZW1lbnQgfHwgKGVsZW1l
bnQtPmRvY3VtZW50KCkgJiYgIWVsZW1lbnQtPmRvY3VtZW50KCktPmluUGFnZUNhY2hlKCkpKTsK
ICAgICAgICAgaWYgKCFlbGVtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJsb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9j
ay5jcHAKaW5kZXggOTA2NGMwYS4uMjljNjM0MSAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQmxvY2suY3BwCkBAIC02MDUxLDEyICs2MDUxLDEzIEBAIHZvaWQgUmVuZGVyQmxvY2s6
OnVwZGF0ZUZpcnN0TGV0dGVyU3R5bGUoUmVuZGVyT2JqZWN0KiBmaXJzdExldHRlckJsb2NrLCBS
ZW5kZXJPCiAgICAgICAgIGZpcnN0TGV0dGVyLT5kZXN0cm95KCk7CiAgICAgICAgIGZpcnN0TGV0
dGVyID0gbmV3Rmlyc3RMZXR0ZXI7CiAgICAgICAgIGZpcnN0TGV0dGVyQ29udGFpbmVyLT5hZGRD
aGlsZChmaXJzdExldHRlciwgbmV4dFNpYmxpbmcpOwotICAgIH0gZWxzZQotICAgICAgICBmaXJz
dExldHRlci0+c2V0U3R5bGUocHNldWRvU3R5bGUpOworICAgIH0KKworICAgIGZpcnN0TGV0dGVy
LT5zZXRBbmltYXRhYmxlU3R5bGUocHNldWRvU3R5bGUpOwogCiAgICAgZm9yIChSZW5kZXJPYmpl
Y3QqIGdlbkNoaWxkID0gZmlyc3RMZXR0ZXItPmZpcnN0Q2hpbGQoKTsgZ2VuQ2hpbGQ7IGdlbkNo
aWxkID0gZ2VuQ2hpbGQtPm5leHRTaWJsaW5nKCkpIHsKICAgICAgICAgaWYgKGdlbkNoaWxkLT5p
c1RleHQoKSkKLSAgICAgICAgICAgIGdlbkNoaWxkLT5zZXRTdHlsZShwc2V1ZG9TdHlsZSk7Cisg
ICAgICAgICAgICBnZW5DaGlsZC0+c2V0U3R5bGUoZmlyc3RMZXR0ZXItPnN0eWxlKCkpOwogICAg
IH0KIH0KIApAQCAtNjA2OSw4ICs2MDcwLDEzIEBAIHZvaWQgUmVuZGVyQmxvY2s6OmNyZWF0ZUZp
cnN0TGV0dGVyUmVuZGVyZXIoUmVuZGVyT2JqZWN0KiBmaXJzdExldHRlckJsb2NrLCBSZW5kCiAg
ICAgICAgIGZpcnN0TGV0dGVyID0gbmV3IChyZW5kZXJBcmVuYSgpKSBSZW5kZXJJbmxpbmUoZG9j
dW1lbnQoKSk7CiAgICAgZWxzZQogICAgICAgICBmaXJzdExldHRlciA9IG5ldyAocmVuZGVyQXJl
bmEoKSkgUmVuZGVyQmxvY2soZG9jdW1lbnQoKSk7Ci0gICAgZmlyc3RMZXR0ZXItPnNldFN0eWxl
KHBzZXVkb1N0eWxlKTsKKworICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gdGVtcG9yYXJ5U3R5bGUg
PSBSZW5kZXJTdHlsZTo6Y3JlYXRlKCk7CisgICAgdGVtcG9yYXJ5U3R5bGUtPmluaGVyaXRGcm9t
KGZpcnN0TGV0dGVyQmxvY2stPnN0eWxlKCkpOworICAgIGZpcnN0TGV0dGVyLT5zZXRTdHlsZSh0
ZW1wb3JhcnlTdHlsZSk7ICAKICAgICBmaXJzdExldHRlckNvbnRhaW5lci0+YWRkQ2hpbGQoZmly
c3RMZXR0ZXIsIGN1cnJlbnRDaGlsZCk7CisgICAgCisgICAgZmlyc3RMZXR0ZXItPnNldEFuaW1h
dGFibGVTdHlsZShwc2V1ZG9TdHlsZSk7CiAKICAgICBSZW5kZXJUZXh0KiB0ZXh0T2JqID0gdG9S
ZW5kZXJUZXh0KGN1cnJlbnRDaGlsZCk7CiAKQEAgLTYxMTgsNyArNjEyNCw3IEBAIHZvaWQgUmVu
ZGVyQmxvY2s6OmNyZWF0ZUZpcnN0TGV0dGVyUmVuZGVyZXIoUmVuZGVyT2JqZWN0KiBmaXJzdExl
dHRlckJsb2NrLCBSZW5kCiAgICAgICAgIC8vIGNvbnN0cnVjdCB0ZXh0IGZyYWdtZW50IGZvciB0
aGUgZmlyc3QgbGV0dGVyCiAgICAgICAgIFJlbmRlclRleHRGcmFnbWVudCogbGV0dGVyID0gCiAg
ICAgICAgICAgICBuZXcgKHJlbmRlckFyZW5hKCkpIFJlbmRlclRleHRGcmFnbWVudChyZW1haW5p
bmdUZXh0LT5ub2RlKCkgPyByZW1haW5pbmdUZXh0LT5ub2RlKCkgOiByZW1haW5pbmdUZXh0LT5k
b2N1bWVudCgpLCBvbGRUZXh0LmdldCgpLCAwLCBsZW5ndGgpOwotICAgICAgICBsZXR0ZXItPnNl
dFN0eWxlKHBzZXVkb1N0eWxlKTsKKyAgICAgICAgbGV0dGVyLT5zZXRTdHlsZShmaXJzdExldHRl
ci0+c3R5bGUoKSk7CiAgICAgICAgIGZpcnN0TGV0dGVyLT5hZGRDaGlsZChsZXR0ZXIpOwogCiAg
ICAgICAgIHRleHRPYmotPmRlc3Ryb3koKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
cklubGluZS5jcHAKaW5kZXggYjQ1YmRjMy4uMDY2MGI3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlcklubGluZS5jcHAKQEAgLTkyOSw4ICs5MjksOCBAQCBMYXlvdXRSZWN0IFJl
bmRlcklubGluZTo6bGluZXNWaXN1YWxPdmVyZmxvd0JvdW5kaW5nQm94KCkgY29uc3QKIAogTGF5
b3V0UmVjdCBSZW5kZXJJbmxpbmU6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRl
ckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdAogewotICAgIC8vIE9ubHkg
cnVuLWlucyBhcmUgYWxsb3dlZCBpbiBoZXJlIGR1cmluZyBsYXlvdXQuCi0gICAgQVNTRVJUKCF2
aWV3KCkgfHwgIXZpZXcoKS0+bGF5b3V0U3RhdGVFbmFibGVkKCkgfHwgaXNSdW5JbigpKTsKKyAg
ICAvLyBPbmx5IHJ1bi1pbnMgYW5kIGZpcnN0LWxldHRlciBlbGVtZW50cyBhcmUgYWxsb3dlZCBp
biBoZXJlIGR1cmluZyBsYXlvdXQuCisgICAgQVNTRVJUKCF2aWV3KCkgfHwgIXZpZXcoKS0+bGF5
b3V0U3RhdGVFbmFibGVkKCkgfHwgaXNSdW5JbigpIHx8IHN0eWxlKCktPnN0eWxlVHlwZSgpID09
IEZJUlNUX0xFVFRFUik7CiAKICAgICBpZiAoIWZpcnN0TGluZUJveEluY2x1ZGluZ0N1bGxpbmco
KSAmJiAhY29udGludWF0aW9uKCkpCiAgICAgICAgIHJldHVybiBMYXlvdXRSZWN0KCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCmluZGV4IDI1ODQ3NzYuLjMyMjYw
MGMgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCkBAIC0yMjEz
LDYgKzIyMTMsMjEgQEAgYm9vbCBSZW5kZXJPYmplY3Q6OmlzUm9vdGVkKFJlbmRlclZpZXcqKiB2
aWV3KQogICAgIHJldHVybiB0cnVlOwogfQogCitOb2RlKiBSZW5kZXJPYmplY3Q6OnN0eWxlZEdl
bmVyYXRpbmdOb2RlKCkgY29uc3QKK3sKKyAgICBOb2RlKiBub2RlID0gZ2VuZXJhdGluZ05vZGUo
KTsKKyAgICBpZiAobm9kZSkKKyAgICAgICAgcmV0dXJuIG5vZGU7CisKKyAgICBmb3IgKFJlbmRl
ck9iamVjdCogb2JqZWN0ID0gcGFyZW50KCk7IG9iamVjdDsgb2JqZWN0ID0gb2JqZWN0LT5wYXJl
bnQoKSkgeworICAgICAgICBpZiAoTm9kZSogbm9kZSA9IG9iamVjdC0+Z2VuZXJhdGluZ05vZGUo
KSkKKyAgICAgICAgICAgIHJldHVybiBub2RlOworICAgIH0KKworICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgIHJldHVybiAwOworfQorCiBSZW5kZXJPYmplY3QqIFJlbmRlck9iamVjdDo6
cmVuZGVyZXJGb3JSb290QmFja2dyb3VuZCgpCiB7CiAgICAgQVNTRVJUKGlzUm9vdCgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAppbmRleCBmMjFlOTE5Li42YmNiOGNk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCkBAIC01NzQsMTAgKzU3
NCwxNiBAQCBwdWJsaWM6CiAKICAgICBOb2RlKiBub2RlKCkgY29uc3QgeyByZXR1cm4gaXNBbm9u
eW1vdXMoKSA/IDAgOiBtX25vZGU7IH0KIAotICAgIC8vIFJldHVybnMgdGhlIHN0eWxlZCBub2Rl
IHRoYXQgY2F1c2VkIHRoZSBnZW5lcmF0aW9uIG9mIHRoaXMgcmVuZGVyZXIuCi0gICAgLy8gVGhp
cyBpcyB0aGUgc2FtZSBhcyBub2RlKCkgZXhjZXB0IGZvciByZW5kZXJlcnMgb2YgOmJlZm9yZSBh
bmQgOmFmdGVyCisgICAgLy8gVGhpcyBpcyB0aGUgc2FtZSBhcyBub2RlKCkgZXhjZXB0IGZvciBy
ZW5kZXJlcnMgb2YgOmJlZm9yZS4gOmFmdGVyIGFuZCBmaXJzdC1sZXR0ZXIKICAgICAvLyBwc2V1
ZG8gZWxlbWVudHMgZm9yIHdoaWNoIHRoZWlyIHBhcmVudCBub2RlIGlzIHJldHVybmVkLgogICAg
IE5vZGUqIGdlbmVyYXRpbmdOb2RlKCkgY29uc3QgeyByZXR1cm4gbV9ub2RlID09IGRvY3VtZW50
KCkgPyAwIDogbV9ub2RlOyB9CisKKyAgICAvLyBSZXR1cm5zIHRoZSBzdHlsZWQgbm9kZSB0aGF0
IGNhdXNlZCB0aGUgZ2VuZXJhdGlvbiBvZiB0aGlzIHJlbmRlcmVyLgorICAgIC8vIFRoaXMgaXMg
dGhlIHNhbWUgYXMgbm9kZSgpIGV4Y2VwdCBmb3IgYW5vbnltb3VzIHJlbmRlcmVycywgZm9yIHdo
aWNoCisgICAgLy8gaXQgcmV0dXJucyB0aGUgbm9kZSB3aG9zZSBzdHlsZSBjYXVzZWQgdGhlIGdl
bmVyYXRpb24gb2YgdGhpcyByZW5kZXJlci4KKyAgICAvLyBGSVhNRTogbWVyZ2Ugd2l0aCBnZW5l
cmF0aW5nTm9kZSgpCisgICAgTm9kZSogc3R5bGVkR2VuZXJhdGluZ05vZGUoKSBjb25zdDsKKwog
ICAgIHZvaWQgc2V0Tm9kZShOb2RlKiBub2RlKSB7IG1fbm9kZSA9IG5vZGU7IH0KIAogICAgIERv
Y3VtZW50KiBkb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fbm9kZS0+ZG9jdW1lbnQoKTsgfQpA
QCAtNjU5LDggKzY2NSw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlydHlMaW5lc0Zy
b21DaGFuZ2VkQ2hpbGQoUmVuZGVyT2JqZWN0Kik7CiAKICAgICAvLyBDYWxsZWQgdG8gdXBkYXRl
IGEgc3R5bGUgdGhhdCBpcyBhbGxvd2VkIHRvIHRyaWdnZXIgYW5pbWF0aW9ucy4KLSAgICAvLyBG
SVhNRTogUmlnaHQgbm93IHRoaXMgd2lsbCB0eXBpY2FsbHkgYmUgY2FsbGVkIG9ubHkgd2hlbiB1
cGRhdGluZyBoYXBwZW5zIGZyb20gdGhlIERPTSBvbiBleHBsaWNpdCBlbGVtZW50cy4KLSAgICAv
LyBXZSBkb24ndCB5ZXQgaGFuZGxlIGdlbmVyYXRlZCBjb250ZW50IGFuaW1hdGlvbiBzdWNoIGFz
IGZpcnN0LWxldHRlciBvciBiZWZvcmUvYWZ0ZXIgKHdlJ2xsIHdvcnJ5IGFib3V0IHRoaXMgbGF0
ZXIpLgogICAgIHZvaWQgc2V0QW5pbWF0YWJsZVN0eWxlKFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+
KTsKIAogICAgIC8vIFNldCB0aGUgc3R5bGUgb2YgdGhlIG9iamVjdCBhbmQgdXBkYXRlIHRoZSBz
dGF0ZSBvZiB0aGUgb2JqZWN0IGFjY29yZGluZ2x5LgotLSAKMS43LjkuNQoK
</data>

          </attachment>
      

    </bug>

</bugzilla>