<?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>74132</bug_id>
          
          <creation_ts>2011-12-08 14:53:11 -0800</creation_ts>
          <short_desc>[CSS Regions] RenderRegion should inherit from RenderBlock</short_desc>
          <delta_ts>2013-02-15 05:01:54 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>AdobeTracked</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>109228</dependson>
          <blocked>57312</blocked>
    
    <blocked>74144</blocked>
    
    <blocked>107880</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Alan Stearns">stearns</reporter>
          <assigned_to name="Mihnea Ovidenie">mihnea</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>donggwan.kim</cc>
    
    <cc>eric</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jchaffraix</cc>
    
    <cc>mibalan</cc>
    
    <cc>mihnea</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>rakuco</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>WebkitBugTracker</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>517820</commentid>
    <comment_count>0</comment_count>
    <who name="Alan Stearns">stearns</who>
    <bug_when>2011-12-08 14:53:11 -0800</bug_when>
    <thetext>There are some Regions behaviors in the specification that depend on this change. I&apos;ll make separate dependent bug reports for the ones I know about.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>824293</commentid>
    <comment_count>1</comment_count>
      <attachid>186361</attachid>
    <who name="Mihnea Ovidenie">mihnea</who>
    <bug_when>2013-02-04 05:55:48 -0800</bug_when>
    <thetext>Created attachment 186361
Patch 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>824368</commentid>
    <comment_count>2</comment_count>
      <attachid>186361</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-04 08:15:59 -0800</bug_when>
    <thetext>Comment on attachment 186361
Patch 1

Attachment 186361 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/16373229

New failing tests:
fast/regions/selecting-text-through-different-region-flows.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>824420</commentid>
    <comment_count>3</comment_count>
      <attachid>186361</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-04 09:10:51 -0800</bug_when>
    <thetext>Comment on attachment 186361
Patch 1

Attachment 186361 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/16373244

New failing tests:
fast/regions/selecting-text-through-different-region-flows.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>824571</commentid>
    <comment_count>4</comment_count>
      <attachid>186361</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2013-02-04 10:57:18 -0800</bug_when>
    <thetext>Comment on attachment 186361
Patch 1

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

&gt; LayoutTests/ChangeLog:12
&gt; +        * fast/regions/flows-dependency-dynamic-remove.html: As a block, an empty region can self collapse,
&gt; +        which was not possible for a replaced element. I used &apos;-webkit-margin-collapse: separate&apos; to prevent
&gt; +        self collapsing for regions and avoid recreating the expectations.

Depending on the expected default behavior, you may want to add some code in StyleResolver::adjustRenderStyle.

&gt; Source/WebCore/rendering/RenderBox.cpp:2921
&gt; +        computePositionedLogicalWidthReplaced(computedValues); // FIXME: Patch for regions when we add replaced element support.

If you can improve the FIXME, it would be nice. Currently it&apos;s difficult to assess whether it is fixed or not.

&gt; Source/WebCore/rendering/RenderRegion.cpp:251
&gt;      StackStats::LayoutCheckPoint layoutCheckPoint;
&gt; -    RenderReplaced::layout();
&gt; +    ASSERT(needsLayout());
&gt; +
&gt; +    RenderBlock::layout();

You will do 2 layout checks in the new code (one above and one inside RenderBlock::layout()).

I think you should override layoutBlock, not layout anymore.

&gt; Source/WebCore/rendering/RenderRegion.h:140
&gt; +    virtual bool canHaveChildren() const { return false; }

OVERRIDE

&gt; Source/WebCore/rendering/RenderRegion.h:153
&gt; +    virtual void layout();
&gt; +    virtual void paintObject(PaintInfo&amp;, const LayoutPoint&amp;);

OVERRIDE</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826253</commentid>
    <comment_count>5</comment_count>
      <attachid>186801</attachid>
    <who name="Mihnea Ovidenie">mihnea</who>
    <bug_when>2013-02-06 02:23:04 -0800</bug_when>
    <thetext>Created attachment 186801
Patch 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826254</commentid>
    <comment_count>6</comment_count>
    <who name="Mihnea Ovidenie">mihnea</who>
    <bug_when>2013-02-06 02:24:46 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 186361 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=186361&amp;action=review
&gt; 
&gt; &gt; LayoutTests/ChangeLog:12
&gt; &gt; +        * fast/regions/flows-dependency-dynamic-remove.html: As a block, an empty region can self collapse,
&gt; &gt; +        which was not possible for a replaced element. I used &apos;-webkit-margin-collapse: separate&apos; to prevent
&gt; &gt; +        self collapsing for regions and avoid recreating the expectations.
&gt; 
&gt; Depending on the expected default behavior, you may want to add some code in StyleResolver::adjustRenderStyle.
&gt; 

I want regions to self-collapse just as other blocks.

&gt; &gt; Source/WebCore/rendering/RenderBox.cpp:2921
&gt; &gt; +        computePositionedLogicalWidthReplaced(computedValues); // FIXME: Patch for regions when we add replaced element support.
&gt; 
&gt; If you can improve the FIXME, it would be nice. Currently it&apos;s difficult to assess whether it is fixed or not.
&gt; 

Done.

&gt; &gt; Source/WebCore/rendering/RenderRegion.cpp:251
&gt; &gt;      StackStats::LayoutCheckPoint layoutCheckPoint;
&gt; &gt; -    RenderReplaced::layout();
&gt; &gt; +    ASSERT(needsLayout());
&gt; &gt; +
&gt; &gt; +    RenderBlock::layout();
&gt; 
&gt; You will do 2 layout checks in the new code (one above and one inside RenderBlock::layout()).
&gt; 
&gt; I think you should override layoutBlock, not layout anymore.
&gt; 

Done

&gt; &gt; Source/WebCore/rendering/RenderRegion.h:140
&gt; &gt; +    virtual bool canHaveChildren() const { return false; }
&gt; 
&gt; OVERRIDE
&gt; 

Done

&gt; &gt; Source/WebCore/rendering/RenderRegion.h:153
&gt; &gt; +    virtual void layout();
&gt; &gt; +    virtual void paintObject(PaintInfo&amp;, const LayoutPoint&amp;);
&gt; 
&gt; OVERRIDE

Done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826582</commentid>
    <comment_count>7</comment_count>
      <attachid>186801</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2013-02-06 11:21:25 -0800</bug_when>
    <thetext>Comment on attachment 186801
Patch 2

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

r- about the paintObject issue that needs to be investigated and justified / documented (and tested!).

&gt; LayoutTests/ChangeLog:18
&gt; +        * platform/chromium-win/fast/regions/selecting-text-through-different-region-flows-expected.txt:
&gt; +        * platform/efl/fast/regions/selecting-text-through-different-region-flows-expected.txt:
&gt; +        * platform/gtk/fast/regions/selecting-text-through-different-region-flows-expected.txt:
&gt; +        * platform/qt/fast/regions/selecting-text-through-different-region-flows-expected.txt:

These updates are just magic to me. How come an &lt;h1&gt; disappears?

&gt; Source/WebCore/rendering/RenderBox.cpp:2927
&gt; +        // with variable width regions (see https://bugs.webkit.org/show_bug.cgi?id=69896 )

Missing final sentence dot.

&gt; Source/WebCore/rendering/RenderRegion.cpp:147
&gt; -    if (!m_flowThread || !isValid())
&gt; +    if (!m_flowThread || !isValid() || (paintInfo.phase != PaintPhaseForeground))

By limiting yourself to the foreground phase, you are breaking a lot of cases! (e.g. outline and selection on your flow thread&apos;s  content).

paintReplaced was also called for PaintPhaseSelection which the new code doesn&apos;t handle, nor does it explain why it&apos;s OK to do so. If you are temporarily breaking some paint phase, this should at least have a FIXME.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>827676</commentid>
    <comment_count>8</comment_count>
    <who name="Mihnea Ovidenie">mihnea</who>
    <bug_when>2013-02-07 10:36:19 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 186801 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=186801&amp;action=review
&gt; 
&gt; r- about the paintObject issue that needs to be investigated and justified / documented (and tested!).
&gt; 
&gt; &gt; LayoutTests/ChangeLog:18
&gt; &gt; +        * platform/chromium-win/fast/regions/selecting-text-through-different-region-flows-expected.txt:
&gt; &gt; +        * platform/efl/fast/regions/selecting-text-through-different-region-flows-expected.txt:
&gt; &gt; +        * platform/gtk/fast/regions/selecting-text-through-different-region-flows-expected.txt:
&gt; &gt; +        * platform/qt/fast/regions/selecting-text-through-different-region-flows-expected.txt:
&gt; 
&gt; These updates are just magic to me. How come an &lt;h1&gt; disappears?
&gt; 

After the RenderRegion is derived from RenderBlock, when we simulate a click at coordinates (1,1) at the end of the test, the first RenderRegion object (div) is a valid candidate in function VisiblePosition::canonicalPosition(..).

When the region was based on RenderReplaced, the first valid candidate was the H1 element from the flow thread. It seemed to me that the easiest way to change the expected results for this test.
Another option was to convert the test to a ref test, but the previous option seemed faster.

&gt; &gt; Source/WebCore/rendering/RenderBox.cpp:2927
&gt; &gt; +        // with variable width regions (see https://bugs.webkit.org/show_bug.cgi?id=69896 )
&gt; 
&gt; Missing final sentence dot.
&gt; 
&gt; &gt; Source/WebCore/rendering/RenderRegion.cpp:147
&gt; &gt; -    if (!m_flowThread || !isValid())
&gt; &gt; +    if (!m_flowThread || !isValid() || (paintInfo.phase != PaintPhaseForeground))
&gt; 
&gt; By limiting yourself to the foreground phase, you are breaking a lot of cases! (e.g. outline and selection on your flow thread&apos;s  content).
&gt; 
&gt; paintReplaced was also called for PaintPhaseSelection which the new code doesn&apos;t handle, nor does it explain why it&apos;s OK to do so. If you are temporarily breaking some paint phase, this should at least have a FIXME.

RenderFlowThread requires a layer and is using the layer mechanism to paint its collected children. When RenderRegion has the paint function called, it also calls RenderFlowThread::paintFlowThreadPortionInRegion which will further call:
layer()-&gt;paint(context, info.rect, 0, 0, region, RenderLayer::PaintLayerTemporaryClipRects)

and so on. The RenderFlowThread&apos;s layer will further call paintLayer -&gt; paintLayerContentsAndReflection -&gt; paintLayerContents that will go through all the paint phases for the flow thread collected content. Therefore, the outline for the render flow thread content will be painted properly.

My intention with (paintInfo.phase != PaintPhaseForeground) was to prevent painting of the flow thread content multiple times.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828489</commentid>
    <comment_count>9</comment_count>
    <who name="Mihnea Ovidenie">mihnea</who>
    <bug_when>2013-02-08 05:50:53 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 186801 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=186801&amp;action=review
&gt; 
&gt; r- about the paintObject issue that needs to be investigated and justified / documented (and tested!).
&gt; 
&gt; &gt; LayoutTests/ChangeLog:18
&gt; &gt; +        * platform/chromium-win/fast/regions/selecting-text-through-different-region-flows-expected.txt:
&gt; &gt; +        * platform/efl/fast/regions/selecting-text-through-different-region-flows-expected.txt:
&gt; &gt; +        * platform/gtk/fast/regions/selecting-text-through-different-region-flows-expected.txt:
&gt; &gt; +        * platform/qt/fast/regions/selecting-text-through-different-region-flows-expected.txt:
&gt; 
&gt; These updates are just magic to me. How come an &lt;h1&gt; disappears?
&gt; 
&gt; &gt; Source/WebCore/rendering/RenderBox.cpp:2927
&gt; &gt; +        // with variable width regions (see https://bugs.webkit.org/show_bug.cgi?id=69896 )
&gt; 
&gt; Missing final sentence dot.
&gt; 
&gt; &gt; Source/WebCore/rendering/RenderRegion.cpp:147
&gt; &gt; -    if (!m_flowThread || !isValid())
&gt; &gt; +    if (!m_flowThread || !isValid() || (paintInfo.phase != PaintPhaseForeground))
&gt; 
&gt; By limiting yourself to the foreground phase, you are breaking a lot of cases! (e.g. outline and selection on your flow thread&apos;s  content).
&gt; 
&gt; paintReplaced was also called for PaintPhaseSelection which the new code doesn&apos;t handle, nor does it explain why it&apos;s OK to do so. If you are temporarily breaking some paint phase, this should at least have a FIXME.

We have converted LayoutTest/fast/regions/selecting-text-through-different-region-flows.html into a ref test in https://bugs.webkit.org/show_bug.cgi?id=109228.

I also filed a bug https://bugs.webkit.org/show_bug.cgi?id=109274 about the selection highlighting in regions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829789</commentid>
    <comment_count>10</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2013-02-11 09:31:50 -0800</bug_when>
    <thetext>&gt; &gt; &gt; Source/WebCore/rendering/RenderRegion.cpp:147
&gt; &gt; &gt; -    if (!m_flowThread || !isValid())
&gt; &gt; &gt; +    if (!m_flowThread || !isValid() || (paintInfo.phase != PaintPhaseForeground))
&gt; &gt; 
&gt; &gt; By limiting yourself to the foreground phase, you are breaking a lot of cases! (e.g. outline and selection on your flow thread&apos;s  content).
&gt; &gt; 
&gt; &gt; paintReplaced was also called for PaintPhaseSelection which the new code doesn&apos;t handle, nor does it explain why it&apos;s OK to do so. If you are temporarily breaking some paint phase, this should at least have a FIXME.
&gt; 
&gt; RenderFlowThread requires a layer and is using the layer mechanism to paint its collected children. When RenderRegion has the paint function called, it also calls RenderFlowThread::paintFlowThreadPortionInRegion which will further call:
&gt; layer()-&gt;paint(context, info.rect, 0, 0, region, RenderLayer::PaintLayerTemporaryClipRects)
&gt; 
&gt; and so on. The RenderFlowThread&apos;s layer will further call paintLayer -&gt; paintLayerContentsAndReflection -&gt; paintLayerContents that will go through all the paint phases for the flow thread collected content. Therefore, the outline for the render flow thread content will be painted properly.
&gt; 
&gt; My intention with (paintInfo.phase != PaintPhaseForeground) was to prevent painting of the flow thread content multiple times.

Posting my comment here for archive&apos;s sake, RenderLayer paints its associated renderer only if it&apos;s self-painting. You are making the assumption that the flow thread&apos;s layer is self-painting but I couldn&apos;t understand what guarantees it. Apart from that, your logic makes sense and is comment-worthy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>832177</commentid>
    <comment_count>11</comment_count>
    <who name="Mihnea Ovidenie">mihnea</who>
    <bug_when>2013-02-13 12:17:49 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; &gt; &gt; &gt; Source/WebCore/rendering/RenderRegion.cpp:147
&gt; &gt; &gt; &gt; -    if (!m_flowThread || !isValid())
&gt; &gt; &gt; &gt; +    if (!m_flowThread || !isValid() || (paintInfo.phase != PaintPhaseForeground))
&gt; &gt; &gt; 
&gt; &gt; &gt; By limiting yourself to the foreground phase, you are breaking a lot of cases! (e.g. outline and selection on your flow thread&apos;s  content).
&gt; &gt; &gt; 
&gt; &gt; &gt; paintReplaced was also called for PaintPhaseSelection which the new code doesn&apos;t handle, nor does it explain why it&apos;s OK to do so. If you are temporarily breaking some paint phase, this should at least have a FIXME.
&gt; &gt; 
&gt; &gt; RenderFlowThread requires a layer and is using the layer mechanism to paint its collected children. When RenderRegion has the paint function called, it also calls RenderFlowThread::paintFlowThreadPortionInRegion which will further call:
&gt; &gt; layer()-&gt;paint(context, info.rect, 0, 0, region, RenderLayer::PaintLayerTemporaryClipRects)
&gt; &gt; 
&gt; &gt; and so on. The RenderFlowThread&apos;s layer will further call paintLayer -&gt; paintLayerContentsAndReflection -&gt; paintLayerContents that will go through all the paint phases for the flow thread collected content. Therefore, the outline for the render flow thread content will be painted properly.
&gt; &gt; 
&gt; &gt; My intention with (paintInfo.phase != PaintPhaseForeground) was to prevent painting of the flow thread content multiple times.
&gt; 
&gt; Posting my comment here for archive&apos;s sake, RenderLayer paints its associated renderer only if it&apos;s self-painting. You are making the assumption that the flow thread&apos;s layer is self-painting but I couldn&apos;t understand what guarantees it. Apart from that, your logic makes sense and is comment-worthy.

RenderFlowThread is a self-painting layer. When we create the RFT object, we associate a style for it and, as can be seen in RenderFlowThread::createFlowThreadStyle, the RFT object is an absolutely positioned one. Because of that, RenderLayer::shouldBeNormalFlowOnly() returns false, and RenderLayer::shouldBeSelfPaintingLayer() returns true.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>832272</commentid>
    <comment_count>12</comment_count>
    <who name="Mihnea Ovidenie">mihnea</who>
    <bug_when>2013-02-13 13:28:46 -0800</bug_when>
    <thetext>Regarding the outlines for the content that is flowed into regions, there are some tests available:
LayoutTests/fast/regions/region-styling-mediaquery.html
LayoutTests/fast/regions/outline-sides-in-region.html
LayoutTests/fast/regions/hit-test-region.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>833174</commentid>
    <comment_count>13</comment_count>
      <attachid>186801</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2013-02-14 09:51:40 -0800</bug_when>
    <thetext>Comment on attachment 186801
Patch 2

Great explanations, thanks for digging this up. Please amend the ChangeLog and paintObject with the information from this bug as it explains why the whole change (and your optimization) works and is properly covered.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>833882</commentid>
    <comment_count>14</comment_count>
      <attachid>188534</attachid>
    <who name="Mihnea Ovidenie">mihnea</who>
    <bug_when>2013-02-15 04:14:51 -0800</bug_when>
    <thetext>Created attachment 188534
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>833901</commentid>
    <comment_count>15</comment_count>
      <attachid>188534</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-15 05:01:44 -0800</bug_when>
    <thetext>Comment on attachment 188534
Patch for landing

Clearing flags on attachment: 188534

Committed r142984: &lt;http://trac.webkit.org/changeset/142984&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>833902</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-15 05:01:54 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>186361</attachid>
            <date>2013-02-04 05:55:48 -0800</date>
            <delta_ts>2013-02-06 02:23:04 -0800</delta_ts>
            <desc>Patch 1</desc>
            <filename>74132-1.patch</filename>
            <type>text/plain</type>
            <size>21802</size>
            <attacher name="Mihnea Ovidenie">mihnea</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhNTdhMjMwLi5kNmViYmY3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTMtMDIt
MDQgIE1paG5lYSBPdmlkZW5pZSAgPG1paG5lYUBhZG9iZS5jb20+CisKKyAgICAgICAgW0NTUyBS
ZWdpb25zXSBSZW5kZXJSZWdpb24gc2hvdWxkIGluaGVyaXQgZnJvbSBSZW5kZXJCbG9jaworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQxMzIKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXggdGVzdHMgdGhh
dCB3ZXJlIGZhaWxpbmcgYWZ0ZXIgdGhlIGluaGVyaXRhbmNlIGNoYW5nZS4KKworICAgICAgICAq
IGZhc3QvcmVnaW9ucy9mbG93cy1kZXBlbmRlbmN5LWR5bmFtaWMtcmVtb3ZlLmh0bWw6IEFzIGEg
YmxvY2ssIGFuIGVtcHR5IHJlZ2lvbiBjYW4gc2VsZiBjb2xsYXBzZSwKKyAgICAgICAgd2hpY2gg
d2FzIG5vdCBwb3NzaWJsZSBmb3IgYSByZXBsYWNlZCBlbGVtZW50LiBJIHVzZWQgJy13ZWJraXQt
bWFyZ2luLWNvbGxhcHNlOiBzZXBhcmF0ZScgdG8gcHJldmVudAorICAgICAgICBzZWxmIGNvbGxh
cHNpbmcgZm9yIHJlZ2lvbnMgYW5kIGF2b2lkIHJlY3JlYXRpbmcgdGhlIGV4cGVjdGF0aW9ucy4K
KyAgICAgICAgKiBmYXN0L3JlZ2lvbnMvZmxvd3MtZGVwZW5kZW5jeS1zYW1lLWZsb3cuaHRtbDoK
KyAgICAgICAgKiBmYXN0L3JlZ2lvbnMvc2VsZWN0aW5nLXRleHQtdGhyb3VnaC1kaWZmZXJlbnQt
cmVnaW9uLWZsb3dzLWV4cGVjdGVkLnR4dDogTmV3IGV4cGVjdGVkIHJlc3VsdCBhZnRlciBpbmhl
cml0YW5jZSBjaGFuZ2UuCisKIDIwMTMtMDItMDQgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFtDaHJvbWl1bV0gUmViYXNlbGluZSBmb3IgcjE0MTc0MQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2Zsb3dzLWRlcGVuZGVuY3ktZHluYW1p
Yy1yZW1vdmUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9mbG93cy1kZXBlbmRlbmN5
LWR5bmFtaWMtcmVtb3ZlLmh0bWwKaW5kZXggOTU1OGNiZi4uMzU5ZGZmYSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2Zsb3dzLWRlcGVuZGVuY3ktZHluYW1pYy1yZW1vdmUu
aHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZmxvd3MtZGVwZW5kZW5jeS1keW5h
bWljLXJlbW92ZS5odG1sCkBAIC05LDcgKzksNyBAQAogLnJlZ2lvbkZsb3dCIHsgLXdlYmtpdC1m
bG93LWZyb206IGZsb3dCOyB9CiAucmVnaW9uRmxvd0MgeyAtd2Via2l0LWZsb3ctZnJvbTogZmxv
d0M7IH0KIAotLnJlZ2lvbkZsb3dBLCAucmVnaW9uRmxvd0IsIC5yZWdpb25GbG93QyB7IHdpZHRo
OiAwcHg7IGhlaWdodDogMHB4OyB9CisucmVnaW9uRmxvd0EsIC5yZWdpb25GbG93QiwgLnJlZ2lv
bkZsb3dDIHsgd2lkdGg6IDBweDsgaGVpZ2h0OiAwcHg7IC13ZWJraXQtbWFyZ2luLWNvbGxhcHNl
OiBzZXBhcmF0ZTsgfQogPC9zdHlsZT4KIAogPGRpdiBjbGFzcz0iZmxvd0EiPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2Zsb3dzLWRlcGVuZGVuY3ktc2FtZS1mbG93Lmh0
bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZmxvd3MtZGVwZW5kZW5jeS1zYW1lLWZsb3cu
aHRtbAppbmRleCBmYzYxNzQwLi41OTYwNDQxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0
L3JlZ2lvbnMvZmxvd3MtZGVwZW5kZW5jeS1zYW1lLWZsb3cuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L3JlZ2lvbnMvZmxvd3MtZGVwZW5kZW5jeS1zYW1lLWZsb3cuaHRtbApAQCAtOSw3ICs5
LDcgQEAKIC5yZWdpb25GbG93QiB7IC13ZWJraXQtZmxvdy1mcm9tOiBmbG93QjsgfQogLnJlZ2lv
bkZsb3dDIHsgLXdlYmtpdC1mbG93LWZyb206IGZsb3dDOyB9CiAKLS5yZWdpb25GbG93QSwgLnJl
Z2lvbkZsb3dCLCAucmVnaW9uRmxvd0MgeyB3aWR0aDogMHB4OyBoZWlnaHQ6IDBweDsgfQorLnJl
Z2lvbkZsb3dBLCAucmVnaW9uRmxvd0IsIC5yZWdpb25GbG93QyB7IHdpZHRoOiAwcHg7IGhlaWdo
dDogMHB4OyAtd2Via2l0LW1hcmdpbi1jb2xsYXBzZTogc2VwYXJhdGU7IH0KIDwvc3R5bGU+CiAK
IDxkaXYgY2xhc3M9ImZsb3dBIj4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9u
cy9zZWxlY3RpbmctdGV4dC10aHJvdWdoLWRpZmZlcmVudC1yZWdpb24tZmxvd3MtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL3NlbGVjdGluZy10ZXh0LXRocm91Z2gtZGlm
ZmVyZW50LXJlZ2lvbi1mbG93cy1leHBlY3RlZC50eHQKaW5kZXggNDVmNDhmNy4uNWZmZDFjNCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL3NlbGVjdGluZy10ZXh0LXRocm91
Z2gtZGlmZmVyZW50LXJlZ2lvbi1mbG93cy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9yZWdpb25zL3NlbGVjdGluZy10ZXh0LXRocm91Z2gtZGlmZmVyZW50LXJlZ2lvbi1mbG93
cy1leHBlY3RlZC50eHQKQEAgLTcsNyArNyw3IEBAIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdE
aWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvCiBF
RElUSU5HIERFTEVHQVRFOiBzaG91bGRFbmRFZGl0aW5nSW5ET01SYW5nZTpyYW5nZSBmcm9tIDAg
b2YgRElWID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMyBvZiBESVYgPiBESVYg
PiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudAogRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENo
YW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCiBFRElU
SU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkRW5kRWRpdGluZzpXZWJWaWV3RGlkRW5kRWRpdGluZ05v
dGlmaWNhdGlvbgotRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5n
ZToobnVsbCkgdG9ET01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgSDEgPiBESVYgPiBCT0RZID4gSFRN
TCA+ICNkb2N1bWVudCB0byAwIG9mIEgxID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQg
YWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFM
U0UKK0VESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6KG51bGwp
IHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mIERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50
IHRvIDAgb2YgRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgYWZmaW5pdHk6TlNTZWxlY3Rp
b25BZmZpbml0eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UKIEVESVRJTkcgREVMRUdB
VEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5v
dGlmaWNhdGlvbgogbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCiAgIFJlbmRlclZpZXcgYXQg
KDAsMCkgc2l6ZSA4MDB4NjAwCkBAIC02MCw0ICs2MCw0IEBAIEZsb3cgVGhyZWFkcwogICAgICAg
ICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDU6ICIxIgogICBSZWdpb25zIGZvciBmbG93ICdm
b290Tm90ZScKICAgICBSZW5kZXJSZWdpb24ge0RJVn0gI2Zvb3ROb3RlUmVnaW9uIGhhc0F1dG9M
b2dpY2FsSGVpZ2h0Ci1jYXJldDogcG9zaXRpb24gMCBvZiBjaGlsZCAwIHsjdGV4dH0gb2YgY2hp
bGQgMSB7SDF9IG9mIGNoaWxkIDUge0RJVn0gb2YgYm9keQorY2FyZXQ6IHBvc2l0aW9uIDAgb2Yg
Y2hpbGQgMSB7RElWfSBvZiBib2R5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGU1ODc1NC4uZWI5N2NjOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDEzLTAyLTA0ICBNaWhuZWEgT3ZpZGVuaWUgIDxt
aWhuZWFAYWRvYmUuY29tPgorCisgICAgICAgIFtDU1MgUmVnaW9uc10gUmVuZGVyUmVnaW9uIHNo
b3VsZCBpbmhlcml0IGZyb20gUmVuZGVyQmxvY2sKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTc0MTMyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQ2hhbmdlIHRoZSBiYXNlIGNsYXNzIGZvciBSZW5kZXJSZWdp
b24gdG8gYmUgUmVuZGVyQmxvY2sgaW5zdGVhZCBvZiBSZW5kZXJSZXBsYWNlZC4KKyAgICAgICAg
UGVyIHNwZWMgaHR0cDovL2Rldi53My5vcmcvY3Nzd2cvY3NzMy1yZWdpb25zLyN0aGUtZmxvdy1m
cm9tLXByb3BlcnR5LCBhIHJlZ2lvbiBpcyBhIG5vbi1yZXBsYWNlZCBibG9jayBjb250YWluZXIu
CisgICAgICAgIFRoaXMgY2hhbmdlIGlzIGNvdmVyZWQgYnkgZXhpc3RpbmcgcmVnaW9ucyB0ZXN0
cy4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3guY3BwOiBDbGVhbi11cCB0aGUgY29k
ZSBmcm9tIHJlZ2lvbnMgc3BlY2lmaWMgc3R1ZmYsIG5vdyB0aGF0IHRoZSByZWdpb25zIGFyZSBy
ZW5kZXIgYmxvY2tzLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpjb21wdXRlUG9zaXRp
b25lZExvZ2ljYWxXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVQ
b3NpdGlvbmVkTG9naWNhbEhlaWdodCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVy
QmFja2luZy5jcHA6IEEgcmVnaW9uIHNob3VsZCBhbHdheXMgcmVuZGVyIGNvbnRlbnQgZnJvbSBp
dHMgYXNzb2NpYXRlZCBmbG93IHRocmVhZCwKKyAgICAgICAgZXZlbiB3aGVuIGl0IGRvZXMgbm90
IGhhdmUgY2hpbGRyZW4gb2YgaXRzIG93bi4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVy
QmFja2luZzo6aXNTaW1wbGVDb250YWluZXJDb21wb3NpdGluZ0xheWVyKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuY3BwOiBNYWtlIGNoYW5nZXMgdG8gbWF0Y2gg
dGhlIG5ldyBpbmhlcml0YW5jZSBmb3IgUmVuZGVyUmVnaW9uLgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTXVsdGlDb2x1bW5TZXQ6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck11
bHRpQ29sdW1uU2V0OjpwYWludENvbHVtblJ1bGVzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyTXVsdGlDb2x1bW5TZXQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclJlZ2lvbjo6UmVuZGVyUmVnaW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclJlZ2lvbjo6cGFpbnRPYmplY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyUmVnaW9uOjpzdHlsZURpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJSZWdpb246OmxheW91dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSZWdpb246Omluc2Vy
dGVkSW50b1RyZWUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUmVnaW9uOjp3aWxsQmVSZW1v
dmVkRnJvbVRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUmVnaW9uOjpjb21wdXRlUHJl
ZmVycmVkTG9naWNhbFdpZHRocyk6IFVzZSB0aGlzIG1ldGhvZCBpbnN0ZWFkIG9mIG1pbi9tYXhQ
cmVmZXJyZWRMb2dpY2FsV2lkdGguCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSZWdpb246OnVw
ZGF0ZUxvZ2ljYWxIZWlnaHQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJSZWdpb24uaDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclJlZ2lvbjo6Y2FuSGF2ZUNoaWxkcmVuKTogRm9yIG5v
dywgYXNzdW1lIHRoZSByZWdpb24gaXMgbm90IGFsbG93ZWQgdG8gaGF2ZSBjaGlsZHJlbi4KKyAg
ICAgICAgV2hlbiB3ZSB3aWxsIGltcGxlbWVudCB0aGUgcHJvY2Vzc2luZyBtb2RlbCBmb3IgcHNl
dWRvLWVsZW1lbnRzIGh0dHA6Ly9kZXYudzMub3JnL2Nzc3dnL2NzczMtcmVnaW9ucy8jcHJvY2Vz
c2luZy1tb2RlbCwKKyAgICAgICAgd2Ugd2lsbCBoYXZlIHRvIHJlbW92ZSB0aGlzIGZ1bmN0aW9u
LiBCeSBoYXZpbmcgdGhpcyBmdW5jdGlvbiByZXR1cm4gZmFsc2UgaSB3YXMgYWJsZSB0byBsZWF2
ZSBzb21lIHRlc3RzIHVuY2hhbmdlZC4KKwogMjAxMy0wMi0wNCAgUGF2ZWwgRmVsZG1hbiAgPHBm
ZWxkbWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBtYWtlIHRhYmJl
ZCBwYW5lIGhlYWRlciBhIHJlbGF5b3V0IGJvdW5kYXJ5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQm94LmNwcAppbmRleCBhMDNiN2Y5Li4wM2RkOTBhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQm94LmNwcApAQCAtMjkxOCwxNCArMjkxOCw4IEBAIHN0YXRpYyB2b2lkIGNv
bXB1dGVJbmxpbmVTdGF0aWNEaXN0YW5jZShMZW5ndGgmIGxvZ2ljYWxMZWZ0LCBMZW5ndGgmIGxv
Z2ljYWxSaWdoCiB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsV2lkdGgo
TG9naWNhbEV4dGVudENvbXB1dGVkVmFsdWVzJiBjb21wdXRlZFZhbHVlcywgUmVuZGVyUmVnaW9u
KiByZWdpb24sIExheW91dFVuaXQgb2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSkgY29u
c3QKIHsKICAgICBpZiAoaXNSZXBsYWNlZCgpKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBGb3IgcmVn
aW9ucyB3aXRoIHdpZHRoIGF1dG8sIHdlIHdhbnQgdG8gY29tcHV0ZSB3aWR0aCB1c2luZyB0aGUg
bm9ybWFsIGJsb2NrIHNpemluZyBjb2RlLgotICAgICAgICAvLyBGb3Igbm93LCByZWdpb25zIGFy
ZSByZXBsYWNlZCBlbGVtZW50cyBhbmQgdGhpcyBjb2RlIGNhbiBiZSByZW1vdmVkIG9uY2UgdGhl
IFJlbmRlclJlZ2lvbgotICAgICAgICAvLyB3aWxsIGluaGVyaXQgZnJvbSBSZW5kZXJCbG9jayBp
bnN0ZWFkIG9mIFJlbmRlclJlcGxhY2VkLgotICAgICAgICAvLyAoc2VlIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDEzMiApCi0gICAgICAgIGlmICghaXNSZW5kZXJS
ZWdpb24oKSB8fCAoaXNSZW5kZXJSZWdpb24oKSAmJiBzaG91bGRDb21wdXRlU2l6ZUFzUmVwbGFj
ZWQoKSkpIHsKLSAgICAgICAgICAgIGNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbFdpZHRoUmVwbGFj
ZWQoY29tcHV0ZWRWYWx1ZXMpOyAvLyBGSVhNRTogUGF0Y2ggZm9yIHJlZ2lvbnMgd2hlbiB3ZSBh
ZGQgcmVwbGFjZWQgZWxlbWVudCBzdXBwb3J0LgotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICB9CisgICAgICAgIGNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbFdpZHRoUmVwbGFjZWQoY29tcHV0
ZWRWYWx1ZXMpOyAvLyBGSVhNRTogUGF0Y2ggZm9yIHJlZ2lvbnMgd2hlbiB3ZSBhZGQgcmVwbGFj
ZWQgZWxlbWVudCBzdXBwb3J0LgorICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgLy8gUVVF
U1RJT05TCkBAIC0zMjY4LDE0ICszMjYyLDggQEAgc3RhdGljIHZvaWQgY29tcHV0ZUJsb2NrU3Rh
dGljRGlzdGFuY2UoTGVuZ3RoJiBsb2dpY2FsVG9wLCBMZW5ndGgmIGxvZ2ljYWxCb3R0b20KIHZv
aWQgUmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxIZWlnaHQoTG9naWNhbEV4dGVu
dENvbXB1dGVkVmFsdWVzJiBjb21wdXRlZFZhbHVlcykgY29uc3QKIHsKICAgICBpZiAoaXNSZXBs
YWNlZCgpKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBGb3IgcmVnaW9ucyB3aXRoIGhlaWdodCBhdXRv
LCB3ZSB3YW50IHRvIGNvbXB1dGUgd2lkdGggdXNpbmcgdGhlIG5vcm1hbCBibG9jayBzaXppbmcg
Y29kZS4KLSAgICAgICAgLy8gRm9yIG5vdywgcmVnaW9ucyBhcmUgcmVwbGFjZWQgZWxlbWVudHMg
YW5kIHRoaXMgY29kZSBjYW4gYmUgcmVtb3ZlZCBvbmNlIHRoZSBSZW5kZXJSZWdpb24KLSAgICAg
ICAgLy8gd2lsbCBpbmhlcml0IGZyb20gUmVuZGVyQmxvY2sgaW5zdGVhZCBvZiBSZW5kZXJSZXBs
YWNlZC4KLSAgICAgICAgLy8gKHNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NzQxMzIgKQotICAgICAgICBpZiAoIWlzUmVuZGVyUmVnaW9uKCkgfHwgKGlzUmVuZGVy
UmVnaW9uKCkgJiYgc2hvdWxkQ29tcHV0ZVNpemVBc1JlcGxhY2VkKCkpKSB7Ci0gICAgICAgICAg
ICBjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxIZWlnaHRSZXBsYWNlZChjb21wdXRlZFZhbHVlcyk7
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAgICAgICAgY29tcHV0ZVBvc2l0aW9u
ZWRMb2dpY2FsSGVpZ2h0UmVwbGFjZWQoY29tcHV0ZWRWYWx1ZXMpOworICAgICAgICByZXR1cm47
CiAgICAgfQogCiAgICAgLy8gVGhlIGZvbGxvd2luZyBpcyBiYXNlZCBvZmYgb2YgdGhlIFczQyBX
b3JraW5nIERyYWZ0IGZyb20gQXByaWwgMTEsIDIwMDYgb2YKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKaW5kZXggNzI2N2JhYS4uZTRmZDlhMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAK
QEAgLTE0MDAsNiArMTQwMCw5IEBAIGJvb2wgUmVuZGVyTGF5ZXJCYWNraW5nOjppc1NpbXBsZUNv
bnRhaW5lckNvbXBvc2l0aW5nTGF5ZXIoKSBjb25zdAogICAgIAogICAgIGlmIChwYWludHNCb3hE
ZWNvcmF0aW9ucygpIHx8IHBhaW50c0NoaWxkcmVuKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIGlmIChyZW5kZXJPYmplY3QtPmlzUmVuZGVyUmVnaW9uKCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAKICAgICBpZiAocmVuZGVyT2JqZWN0LT5ub2RlKCkgJiYgcmVuZGVyT2Jq
ZWN0LT5ub2RlKCktPmlzRG9jdW1lbnROb2RlKCkpIHsKICAgICAgICAgLy8gTG9vayB0byBzZWUg
aWYgdGhlIHJvb3Qgb2JqZWN0IGhhcyBhIG5vbi1zaW1wbGUgYmFja2dyb3VuZApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5jcHAKaW5kZXggMWQ5
MDVjNC4uOGFhYWY2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck11bHRpQ29sdW1uU2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TXVsdGlDb2x1bW5TZXQuY3BwCkBAIC0yOCw4ICsyOCw4IEBACiAKICNpbmNsdWRlICJIaXRUZXN0
UmVzdWx0LmgiCiAjaW5jbHVkZSAiUGFpbnRJbmZvLmgiCi0jaW5jbHVkZSAiUmVuZGVyTXVsdGlD
b2x1bW5GbG93VGhyZWFkLmgiCiAjaW5jbHVkZSAiUmVuZGVyTXVsdGlDb2x1bW5CbG9jay5oIgor
I2luY2x1ZGUgIlJlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZC5oIgogCiB1c2luZyBzdGQ6Om1p
bjsKIHVzaW5nIHN0ZDo6bWF4OwpAQCAtMjA1LDcgKzIwNSw3IEBAIExheW91dFJlY3QgUmVuZGVy
TXVsdGlDb2x1bW5TZXQ6OmZsb3dUaHJlYWRQb3J0aW9uT3ZlcmZsb3dSZWN0KGNvbnN0IExheW91
dFJlY3QmCiAgICAgcmV0dXJuIG92ZXJmbG93UmVjdEZvckZsb3dUaHJlYWRQb3J0aW9uKG92ZXJm
bG93UmVjdCwgaXNGaXJzdFJlZ2lvbigpICYmIGlzRmlyc3RDb2x1bW4sIGlzTGFzdFJlZ2lvbigp
ICYmIGlzTGFzdENvbHVtbik7CiB9CiAKLXZvaWQgUmVuZGVyTXVsdGlDb2x1bW5TZXQ6OnBhaW50
UmVwbGFjZWQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9m
ZnNldCkKK3ZvaWQgUmVuZGVyTXVsdGlDb2x1bW5TZXQ6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJ
bmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiB7CiAgICAgLy8gRklYTUU6IFJl
bmRlclJlZ2lvbnMgYXJlIHJlcGxhY2VkIGVsZW1lbnRzIHJpZ2h0IG5vdyBhbmQgc28gdGhleSBv
bmx5IHBhaW50IGluIHRoZSBmb3JlZ3JvdW5kIHBoYXNlLgogICAgIC8vIENvbHVtbnMgc2hvdWxk
IHRlY2huaWNhbGx5IHJlc3BlY3QgcGhhc2VzIGFuZCBhbGxvdyBmb3IgYmFja2dyb3VuZC9mbG9h
dC9mb3JlZ3JvdW5kIG92ZXJsYXAgZXRjLiwganVzdCBsaWtlCkBAIC0yNTgsNyArMjU4LDcgQEAg
dm9pZCBSZW5kZXJNdWx0aUNvbHVtblNldDo6cGFpbnRDb2x1bW5SdWxlcyhQYWludEluZm8mIHBh
aW50SW5mbywgY29uc3QgTGF5b3V0UG8KICAgICAgICAgICAgIHJ1bGVMb2dpY2FsTGVmdCAtPSAo
aW5saW5lRGlyZWN0aW9uU2l6ZSArIGNvbEdhcCAvIDIpOwogICAgICAgICAgICAgY3VyckxvZ2lj
YWxMZWZ0T2Zmc2V0IC09IChpbmxpbmVEaXJlY3Rpb25TaXplICsgY29sR2FwKTsKICAgICAgICAg
fQotICAgICAgIAorCiAgICAgICAgIC8vIE5vdyBwYWludCB0aGUgY29sdW1uIHJ1bGUuCiAgICAg
ICAgIGlmIChpIDwgY29sQ291bnQgLSAxKSB7CiAgICAgICAgICAgICBMYXlvdXRVbml0IHJ1bGVM
ZWZ0ID0gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IHBhaW50T2Zmc2V0LngoKSArIHJ1bGVM
b2dpY2FsTGVmdCAtIHJ1bGVUaGlja25lc3MgLyAyICsgcnVsZUFkZCA6IHBhaW50T2Zmc2V0Lngo
KSArIGJvcmRlckxlZnQoKSArIHBhZGRpbmdMZWZ0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5oCmluZGV4IDNhNGNkZDkuLmJkOTgwYjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5oCkBA
IC05NCw3ICs5NCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUxvZ2ljYWxI
ZWlnaHQoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUxvZ2ljYWxIZWlnaHQo
TGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0LCBMYXlvdXRVbml0IGxvZ2ljYWxUb3AsIExvZ2ljYWxF
eHRlbnRDb21wdXRlZFZhbHVlcyYpIGNvbnN0IE9WRVJSSURFOwogCi0gICAgdmlydHVhbCB2b2lk
IHBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0
KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5
b3V0UG9pbnQmIHBhaW50T2Zmc2V0KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgbm9kZUF0
UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgSGl0VGVz
dExvY2F0aW9uJiwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBIaXRUZXN0
QWN0aW9uKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBwYWdlTG9naWNhbFdp
ZHRoKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9jb21wdXRlZENvbHVtbldpZHRoOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uY3BwCmluZGV4IDk2MzE1NmEuLjI5
ZmRkYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uY3BwCkBAIC0z
NCw2ICszNCw3IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiSGl0
VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKKyNpbmNsdWRlICJMYXlvdXRSZXBh
aW50ZXIuaCIKICNpbmNsdWRlICJQYWludEluZm8uaCIKICNpbmNsdWRlICJSYW5nZS5oIgogI2lu
Y2x1ZGUgIlJlbmRlckJveFJlZ2lvbkluZm8uaCIKQEAgLTQ0LDcgKzQ1LDcgQEAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogUmVuZGVyUmVnaW9uOjpSZW5kZXJSZWdpb24oRWxlbWVudCogZWxlbWVu
dCwgUmVuZGVyRmxvd1RocmVhZCogZmxvd1RocmVhZCkKLSAgICA6IFJlbmRlclJlcGxhY2VkKGVs
ZW1lbnQsIEludFNpemUoKSkKKyAgICA6IFJlbmRlckJsb2NrKGVsZW1lbnQpCiAgICAgLCBtX2Zs
b3dUaHJlYWQoZmxvd1RocmVhZCkKICAgICAsIG1fcGFyZW50TmFtZWRGbG93VGhyZWFkKDApCiAg
ICAgLCBtX2lzVmFsaWQoZmFsc2UpCkBAIC0xMzUsMTAgKzEzNiwxNSBAQCBib29sIFJlbmRlclJl
Z2lvbjo6aXNMYXN0UmVnaW9uKCkgY29uc3QKICAgICByZXR1cm4gbV9mbG93VGhyZWFkLT5sYXN0
UmVnaW9uKCkgPT0gdGhpczsKIH0KIAotdm9pZCBSZW5kZXJSZWdpb246OnBhaW50UmVwbGFjZWQo
UGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKK3Zv
aWQgUmVuZGVyUmVnaW9uOjpwYWludE9iamVjdChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3Qg
TGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogeworICAgIGlmIChzdHlsZSgpLT52aXNpYmlsaXR5
KCkgIT0gVklTSUJMRSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUmVuZGVyQmxvY2s6OnBhaW50
T2JqZWN0KHBhaW50SW5mbywgcGFpbnRPZmZzZXQpOworCiAgICAgLy8gRGVsZWdhdGUgcGFpbnRp
bmcgb2YgY29udGVudCBpbiByZWdpb24gdG8gUmVuZGVyRmxvd1RocmVhZC4KLSAgICBpZiAoIW1f
Zmxvd1RocmVhZCB8fCAhaXNWYWxpZCgpKQorICAgIGlmICghbV9mbG93VGhyZWFkIHx8ICFpc1Zh
bGlkKCkgfHwgKHBhaW50SW5mby5waGFzZSAhPSBQYWludFBoYXNlRm9yZWdyb3VuZCkpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIHNldFJlZ2lvbk9iamVjdHNSZWdpb25TdHlsZSgpOwpAQCAtMjIz
LDcgKzIyOSw3IEBAIHZvaWQgUmVuZGVyUmVnaW9uOjp1cGRhdGVSZWdpb25IYXNBdXRvTG9naWNh
bEhlaWdodEZsYWcoKQogCiB2b2lkIFJlbmRlclJlZ2lvbjo6c3R5bGVEaWRDaGFuZ2UoU3R5bGVE
aWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkKIHsKLSAgICBSZW5k
ZXJSZXBsYWNlZDo6c3R5bGVEaWRDaGFuZ2UoZGlmZiwgb2xkU3R5bGUpOworICAgIFJlbmRlckJs
b2NrOjpzdHlsZURpZENoYW5nZShkaWZmLCBvbGRTdHlsZSk7CiAKICAgICAvLyBJZiB0aGUgcmVn
aW9uIGlzIG5vdCBhdHRhY2hlZCB0byBhbnkgdGhyZWFkLCB0aGVyZSBpcyBubyBuZWVkIHRvIGNo
ZWNrCiAgICAgLy8gd2hldGhlciB0aGUgcmVnaW9uIGhhcyByZWdpb24gc3R5bGluZyBzaW5jZSBu
byBjb250ZW50IHdpbGwgYmUgZGlzcGxheWVkCkBAIC0yNDAsNyArMjQ2LDEwIEBAIHZvaWQgUmVu
ZGVyUmVnaW9uOjpzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVu
ZGVyU3R5bGUqIG9sZFN0CiB2b2lkIFJlbmRlclJlZ2lvbjo6bGF5b3V0KCkKIHsKICAgICBTdGFj
a1N0YXRzOjpMYXlvdXRDaGVja1BvaW50IGxheW91dENoZWNrUG9pbnQ7Ci0gICAgUmVuZGVyUmVw
bGFjZWQ6OmxheW91dCgpOworICAgIEFTU0VSVChuZWVkc0xheW91dCgpKTsKKworICAgIFJlbmRl
ckJsb2NrOjpsYXlvdXQoKTsKKwogICAgIGlmIChtX2Zsb3dUaHJlYWQgJiYgaXNWYWxpZCgpKSB7
CiAgICAgICAgIExheW91dFJlY3Qgb2xkUmVnaW9uUmVjdChmbG93VGhyZWFkUG9ydGlvblJlY3Qo
KSk7CiAgICAgICAgIGlmICghaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkKQEAgLTQ4MywxNCAr
NDkyLDE0IEBAIHZvaWQgUmVuZGVyUmVnaW9uOjpyZXN0b3JlUmVnaW9uT2JqZWN0c09yaWdpbmFs
U3R5bGUoKQogCiB2b2lkIFJlbmRlclJlZ2lvbjo6aW5zZXJ0ZWRJbnRvVHJlZSgpCiB7Ci0gICAg
UmVuZGVyUmVwbGFjZWQ6Omluc2VydGVkSW50b1RyZWUoKTsKKyAgICBSZW5kZXJCbG9jazo6aW5z
ZXJ0ZWRJbnRvVHJlZSgpOwogCiAgICAgYXR0YWNoUmVnaW9uKCk7CiB9CiAKIHZvaWQgUmVuZGVy
UmVnaW9uOjp3aWxsQmVSZW1vdmVkRnJvbVRyZWUoKQogewotICAgIFJlbmRlclJlcGxhY2VkOjp3
aWxsQmVSZW1vdmVkRnJvbVRyZWUoKTsKKyAgICBSZW5kZXJCbG9jazo6d2lsbEJlUmVtb3ZlZEZy
b21UcmVlKCk7CiAKICAgICBkZXRhY2hSZWdpb24oKTsKIH0KQEAgLTU3MCw0NiArNTc5LDM5IEBA
IHZvaWQgUmVuZGVyUmVnaW9uOjpjbGVhck9iamVjdFN0eWxlSW5SZWdpb24oY29uc3QgUmVuZGVy
T2JqZWN0KiBvYmplY3QpCiAgICAgICAgIGNsZWFyT2JqZWN0U3R5bGVJblJlZ2lvbihjaGlsZCk7
CiB9CiAKLS8vIEZJWE1FOiB3aGVuIFJlbmRlclJlZ2lvbiB3aWxsIGluaGVyaXQgZnJvbSBSZW5k
ZXJCbG9jayBpbnN0ZWFkIG9mIFJlbmRlclJlcGxhY2VkLAotLy8gd2Ugc2hvdWxkIG92ZXJ3cml0
ZSBjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocyAoIHNlZSBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQxMzIgKQotTGF5b3V0VW5pdCBSZW5kZXJSZWdpb246Om1p
blByZWZlcnJlZExvZ2ljYWxXaWR0aCgpIGNvbnN0Cit2b2lkIFJlbmRlclJlZ2lvbjo6Y29tcHV0
ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoKQogewotICAgIGlmICghbV9mbG93VGhyZWFkIHx8ICFt
X2lzVmFsaWQpCi0gICAgICAgIHJldHVybiBSZW5kZXJSZXBsYWNlZDo6bWluUHJlZmVycmVkTG9n
aWNhbFdpZHRoKCk7Ci0KLSAgICAvLyBGSVhNRTogQ3VycmVudGx5LCB0aGUgY29kZSBoYW5kbGVz
IG9ubHkgdGhlIDxsZW5ndGg+IGNhc2UgZm9yIG1pbi13aWR0aC4gSXQgc2hvdWxkIGFsc28gc3Vw
cG9ydCBvdGhlciB2YWx1ZXMsIGxpa2UgcGVyY2VudGFnZSwgY2FsYwotICAgIC8vIG9yIHZpZXdw
b3J0IHJlbGF0aXZlLgotICAgIFJlbmRlclN0eWxlKiBzdHlsZVRvVXNlID0gc3R5bGUoKTsKLSAg
ICBMYXlvdXRVbml0IG1pblByZWZlcnJlZExvZ2ljYWxXaWR0aCA9IG1fZmxvd1RocmVhZC0+bWlu
UHJlZmVycmVkTG9naWNhbFdpZHRoKCk7Ci0KLSAgICBpZiAoc3R5bGVUb1VzZS0+bG9naWNhbE1p
bldpZHRoKCkuaXNGaXhlZCgpICYmIHN0eWxlVG9Vc2UtPmxvZ2ljYWxNaW5XaWR0aCgpLnZhbHVl
KCkgPiAwKQotICAgICAgICBtaW5QcmVmZXJyZWRMb2dpY2FsV2lkdGggPSBzdGQ6Om1heChtaW5Q
cmVmZXJyZWRMb2dpY2FsV2lkdGgsIGFkanVzdENvbnRlbnRCb3hMb2dpY2FsV2lkdGhGb3JCb3hT
aXppbmcoc3R5bGVUb1VzZS0+bG9naWNhbE1pbldpZHRoKCkudmFsdWUoKSkpOworICAgIEFTU0VS
VChwcmVmZXJyZWRMb2dpY2FsV2lkdGhzRGlydHkoKSk7CiAKLSAgICBpZiAoc3R5bGVUb1VzZS0+
bG9naWNhbE1heFdpZHRoKCkuaXNGaXhlZCgpKQotICAgICAgICBtaW5QcmVmZXJyZWRMb2dpY2Fs
V2lkdGggPSBzdGQ6Om1pbihtaW5QcmVmZXJyZWRMb2dpY2FsV2lkdGgsIGFkanVzdENvbnRlbnRC
b3hMb2dpY2FsV2lkdGhGb3JCb3hTaXppbmcoc3R5bGVUb1VzZS0+bG9naWNhbE1heFdpZHRoKCku
dmFsdWUoKSkpOwotCi0gICAgcmV0dXJuIG1pblByZWZlcnJlZExvZ2ljYWxXaWR0aCArIGJvcmRl
ckFuZFBhZGRpbmdMb2dpY2FsV2lkdGgoKTsKLX0KKyAgICBpZiAoIW1fZmxvd1RocmVhZCB8fCAh
bV9pc1ZhbGlkKSB7CisgICAgICAgIFJlbmRlckJsb2NrOjpjb21wdXRlUHJlZmVycmVkTG9naWNh
bFdpZHRocygpOworICAgICAgICByZXR1cm47CisgICAgfQogCi1MYXlvdXRVbml0IFJlbmRlclJl
Z2lvbjo6bWF4UHJlZmVycmVkTG9naWNhbFdpZHRoKCkgY29uc3QKLXsKLSAgICBpZiAoIW1fZmxv
d1RocmVhZCB8fCAhbV9pc1ZhbGlkKQotICAgICAgICByZXR1cm4gUmVuZGVyUmVwbGFjZWQ6Om1h
eFByZWZlcnJlZExvZ2ljYWxXaWR0aCgpOworICAgIC8vIEZJWE1FOiBDdXJyZW50bHksIHRoZSBj
b2RlIGhhbmRsZXMgb25seSB0aGUgPGxlbmd0aD4gY2FzZSBmb3IgbWluLXdpZHRoL21heC13aWR0
aC4KKyAgICAvLyBJdCBzaG91bGQgYWxzbyBzdXBwb3J0IG90aGVyIHZhbHVlcywgbGlrZSBwZXJj
ZW50YWdlLCBjYWxjIG9yIHZpZXdwb3J0IHJlbGF0aXZlLgorICAgIG1fbWluUHJlZmVycmVkTG9n
aWNhbFdpZHRoID0gbV9mbG93VGhyZWFkLT5taW5QcmVmZXJyZWRMb2dpY2FsV2lkdGgoKTsKKyAg
ICBtX21heFByZWZlcnJlZExvZ2ljYWxXaWR0aCA9IG1fZmxvd1RocmVhZC0+bWF4UHJlZmVycmVk
TG9naWNhbFdpZHRoKCk7CiAKLSAgICAvLyBGSVhNRTogQ3VycmVudGx5LCB0aGUgY29kZSBoYW5k
bGVzIG9ubHkgdGhlIDxsZW5ndGg+IGNhc2UgZm9yIG1heC13aWR0aC4gSXQgc2hvdWxkIGFsc28g
c3VwcG9ydCBvdGhlciB2YWx1ZXMsIGxpa2UgcGVyY2VudGFnZSwgY2FsYwotICAgIC8vIG9yIHZp
ZXdwb3J0IHJlbGF0aXZlLgogICAgIFJlbmRlclN0eWxlKiBzdHlsZVRvVXNlID0gc3R5bGUoKTsK
LSAgICBMYXlvdXRVbml0IG1heFByZWZlcnJlZExvZ2ljYWxXaWR0aCA9IG1fZmxvd1RocmVhZC0+
bWF4UHJlZmVycmVkTG9naWNhbFdpZHRoKCk7CisgICAgaWYgKHN0eWxlVG9Vc2UtPmxvZ2ljYWxN
aW5XaWR0aCgpLmlzRml4ZWQoKSAmJiBzdHlsZVRvVXNlLT5sb2dpY2FsTWluV2lkdGgoKS52YWx1
ZSgpID4gMCkgeworICAgICAgICBtX21pblByZWZlcnJlZExvZ2ljYWxXaWR0aCA9IHN0ZDo6bWF4
KG1fbWluUHJlZmVycmVkTG9naWNhbFdpZHRoLCBhZGp1c3RDb250ZW50Qm94TG9naWNhbFdpZHRo
Rm9yQm94U2l6aW5nKHN0eWxlVG9Vc2UtPmxvZ2ljYWxNaW5XaWR0aCgpLnZhbHVlKCkpKTsKKyAg
ICAgICAgbV9tYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGggPSBzdGQ6Om1heChtX21heFByZWZlcnJl
ZExvZ2ljYWxXaWR0aCwgYWRqdXN0Q29udGVudEJveExvZ2ljYWxXaWR0aEZvckJveFNpemluZyhz
dHlsZVRvVXNlLT5sb2dpY2FsTWluV2lkdGgoKS52YWx1ZSgpKSk7CisgICAgfQogCi0gICAgaWYg
KHN0eWxlVG9Vc2UtPmxvZ2ljYWxNaW5XaWR0aCgpLmlzRml4ZWQoKSAmJiBzdHlsZVRvVXNlLT5s
b2dpY2FsTWluV2lkdGgoKS52YWx1ZSgpID4gMCkKLSAgICAgICAgbWF4UHJlZmVycmVkTG9naWNh
bFdpZHRoID0gc3RkOjptYXgobWF4UHJlZmVycmVkTG9naWNhbFdpZHRoLCBhZGp1c3RDb250ZW50
Qm94TG9naWNhbFdpZHRoRm9yQm94U2l6aW5nKHN0eWxlVG9Vc2UtPmxvZ2ljYWxNaW5XaWR0aCgp
LnZhbHVlKCkpKTsKKyAgICBpZiAoc3R5bGVUb1VzZS0+bG9naWNhbE1heFdpZHRoKCkuaXNGaXhl
ZCgpKSB7CisgICAgICAgIG1fbWluUHJlZmVycmVkTG9naWNhbFdpZHRoID0gc3RkOjptaW4obV9t
aW5QcmVmZXJyZWRMb2dpY2FsV2lkdGgsIGFkanVzdENvbnRlbnRCb3hMb2dpY2FsV2lkdGhGb3JC
b3hTaXppbmcoc3R5bGVUb1VzZS0+bG9naWNhbE1heFdpZHRoKCkudmFsdWUoKSkpOworICAgICAg
ICBtX21heFByZWZlcnJlZExvZ2ljYWxXaWR0aCA9IHN0ZDo6bWluKG1fbWF4UHJlZmVycmVkTG9n
aWNhbFdpZHRoLCBhZGp1c3RDb250ZW50Qm94TG9naWNhbFdpZHRoRm9yQm94U2l6aW5nKHN0eWxl
VG9Vc2UtPmxvZ2ljYWxNYXhXaWR0aCgpLnZhbHVlKCkpKTsKKyAgICB9CiAKLSAgICBpZiAoc3R5
bGVUb1VzZS0+bG9naWNhbE1heFdpZHRoKCkuaXNGaXhlZCgpKQotICAgICAgICBtYXhQcmVmZXJy
ZWRMb2dpY2FsV2lkdGggPSBzdGQ6Om1pbihtYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGgsIGFkanVz
dENvbnRlbnRCb3hMb2dpY2FsV2lkdGhGb3JCb3hTaXppbmcoc3R5bGVUb1VzZS0+bG9naWNhbE1h
eFdpZHRoKCkudmFsdWUoKSkpOworICAgIExheW91dFVuaXQgYm9yZGVyQW5kUGFkZGluZyA9IGJv
cmRlckFuZFBhZGRpbmdMb2dpY2FsV2lkdGgoKTsKKyAgICBtX21pblByZWZlcnJlZExvZ2ljYWxX
aWR0aCArPSBib3JkZXJBbmRQYWRkaW5nOworICAgIG1fbWF4UHJlZmVycmVkTG9naWNhbFdpZHRo
ICs9IGJvcmRlckFuZFBhZGRpbmc7CiAKLSAgICByZXR1cm4gbWF4UHJlZmVycmVkTG9naWNhbFdp
ZHRoICsgYm9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxXaWR0aCgpOworICAgIHNldFByZWZlcnJlZExv
Z2ljYWxXaWR0aHNEaXJ0eShmYWxzZSk7CiB9CiAKKwogdm9pZCBSZW5kZXJSZWdpb246OmdldFJh
bmdlcyhWZWN0b3I8UmVmUHRyPFJhbmdlPiA+JiByYW5nZU9iamVjdHMpIGNvbnN0CiB7CiAgICAg
UmVuZGVyTmFtZWRGbG93VGhyZWFkKiBuYW1lZEZsb3cgPSB2aWV3KCktPmZsb3dUaHJlYWRDb250
cm9sbGVyKCktPmVuc3VyZVJlbmRlckZsb3dUaHJlYWRXaXRoTmFtZShzdHlsZSgpLT5yZWdpb25U
aHJlYWQoKSk7CkBAIC02MTgsNyArNjIwLDcgQEAgdm9pZCBSZW5kZXJSZWdpb246OmdldFJhbmdl
cyhWZWN0b3I8UmVmUHRyPFJhbmdlPiA+JiByYW5nZU9iamVjdHMpIGNvbnN0CiAKIHZvaWQgUmVu
ZGVyUmVnaW9uOjp1cGRhdGVMb2dpY2FsSGVpZ2h0KCkKIHsKLSAgICBSZW5kZXJSZXBsYWNlZDo6
dXBkYXRlTG9naWNhbEhlaWdodCgpOworICAgIFJlbmRlckJsb2NrOjp1cGRhdGVMb2dpY2FsSGVp
Z2h0KCk7CiAKICAgICBpZiAoIWhhc0F1dG9Mb2dpY2FsSGVpZ2h0KCkpCiAgICAgICAgIHJldHVy
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uaAppbmRleCAyNDIxZGM5Li45
ZGRjMjJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9u
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5oCkBAIC0zMCw3
ICszMCw3IEBACiAjaWZuZGVmIFJlbmRlclJlZ2lvbl9oCiAjZGVmaW5lIFJlbmRlclJlZ2lvbl9o
CiAKLSNpbmNsdWRlICJSZW5kZXJSZXBsYWNlZC5oIgorI2luY2x1ZGUgIlJlbmRlckJsb2NrLmgi
CiAjaW5jbHVkZSAiU3R5bGVJbmhlcml0ZWREYXRhLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
QEAgLTQwLDEzICs0MCwxMiBAQCBjbGFzcyBSZW5kZXJCb3hSZWdpb25JbmZvOwogY2xhc3MgUmVu
ZGVyRmxvd1RocmVhZDsKIGNsYXNzIFJlbmRlck5hbWVkRmxvd1RocmVhZDsKIAotY2xhc3MgUmVu
ZGVyUmVnaW9uIDogcHVibGljIFJlbmRlclJlcGxhY2VkIHsKK2NsYXNzIFJlbmRlclJlZ2lvbiA6
IHB1YmxpYyBSZW5kZXJCbG9jayB7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgUmVuZGVyUmVnaW9u
KEVsZW1lbnQqLCBSZW5kZXJGbG93VGhyZWFkKik7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNSZW5k
ZXJSZWdpb24oKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFp
bnRSZXBsYWNlZChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpOwogICAgIHZpcnR1YWwg
Ym9vbCBub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBj
b25zdCBIaXRUZXN0TG9jYXRpb24mIGxvY2F0aW9uSW5Db250YWluZXIsIGNvbnN0IExheW91dFBv
aW50JiBhY2N1bXVsYXRlZE9mZnNldCwgSGl0VGVzdEFjdGlvbikgT1ZFUlJJREU7CiAKICAgICB2
aXJ0dWFsIHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJT
dHlsZSogb2xkU3R5bGUpOwpAQCAtNjgsOCArNjcsNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXND
dXN0b21SZWdpb25TdHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1faGFzQ3VzdG9tUmVnaW9uU3R5bGU7
IH0KICAgICB2b2lkIHNldEhhc0N1c3RvbVJlZ2lvblN0eWxlKGJvb2wgaGFzQ3VzdG9tUmVnaW9u
U3R5bGUpIHsgbV9oYXNDdXN0b21SZWdpb25TdHlsZSA9IGhhc0N1c3RvbVJlZ2lvblN0eWxlOyB9
CiAKLSAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCk7Ci0KICAgICBSZW5kZXJCb3hSZWdpb25JbmZv
KiByZW5kZXJCb3hSZWdpb25JbmZvKGNvbnN0IFJlbmRlckJveCopIGNvbnN0OwogICAgIFJlbmRl
ckJveFJlZ2lvbkluZm8qIHNldFJlbmRlckJveFJlZ2lvbkluZm8oY29uc3QgUmVuZGVyQm94Kiwg
TGF5b3V0VW5pdCBsb2dpY2FsTGVmdEluc2V0LCBMYXlvdXRVbml0IGxvZ2ljYWxSaWdodEluc2V0
LAogICAgICAgICBib29sIGNvbnRhaW5pbmdCbG9ja0NoYWluSXNJbnNldCk7CkBAIC0xMDAsOCAr
OTcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBMYXlvdXRVbml0IHBhZ2VMb2dpY2FsSGVpZ2h0
KCkgY29uc3Q7CiAgICAgTGF5b3V0VW5pdCBtYXhQYWdlTG9naWNhbEhlaWdodCgpIGNvbnN0Owog
Ci0gICAgdmlydHVhbCBMYXlvdXRVbml0IG1pblByZWZlcnJlZExvZ2ljYWxXaWR0aCgpIGNvbnN0
IE9WRVJSSURFOwotICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBtYXhQcmVmZXJyZWRMb2dpY2FsV2lk
dGgoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZVByZWZlcnJlZExv
Z2ljYWxXaWR0aHMoKSBPVkVSUklERTsKICAgICAKICAgICBMYXlvdXRVbml0IGxvZ2ljYWxUb3BP
ZkZsb3dUaHJlYWRDb250ZW50UmVjdChjb25zdCBMYXlvdXRSZWN0JikgY29uc3Q7CiAgICAgTGF5
b3V0VW5pdCBsb2dpY2FsQm90dG9tT2ZGbG93VGhyZWFkQ29udGVudFJlY3QoY29uc3QgTGF5b3V0
UmVjdCYpIGNvbnN0OwpAQCAtMTQxLDEyICsxMzcsNyBAQCBwcm90ZWN0ZWQ6CiAKIHByaXZhdGU6
CiAgICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gIlJl
bmRlclJlZ2lvbiI7IH0KLQotICAgIC8vIEZJWE1FOiB0aGVzZSBmdW5jdGlvbnMgc2hvdWxkIGJl
IHJldmlzaXRlZCBvbmNlIFJlbmRlclJlZ2lvbiBpbmhlcml0cyBmcm9tIFJlbmRlckJsb2NrCi0g
ICAgLy8gaW5zdGVhZCBvZiBSZW5kZXJSZXBsYWNlZCAoc2VlIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD03NDEzMiApCi0gICAgLy8gV2hlbiB3aWR0aCBpcyBhdXRvLCB1
c2Ugbm9ybWFsIGJsb2NrL2JveCBzaXppbmcgY29kZSBleGNlcHQgd2hlbiBpbmxpbmUuCi0gICAg
dmlydHVhbCBib29sIGlzSW5saW5lQmxvY2tPcklubGluZVRhYmxlKCkgY29uc3QgT1ZFUlJJREUg
eyByZXR1cm4gaXNJbmxpbmUoKSAmJiAhc2hvdWxkQ29tcHV0ZVNpemVBc1JlcGxhY2VkKCk7IH0K
LSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ29tcHV0ZVNpemVBc1JlcGxhY2VkKCkgY29uc3QgT1ZF
UlJJREUgeyByZXR1cm4gIXN0eWxlKCktPmxvZ2ljYWxXaWR0aCgpLmlzQXV0bygpICYmICFzdHls
ZSgpLT5sb2dpY2FsSGVpZ2h0KCkuaXNBdXRvKCk7IH0KKyAgICB2aXJ0dWFsIGJvb2wgY2FuSGF2
ZUNoaWxkcmVuKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIGJvb2wgc2hvdWxkSGF2
ZUF1dG9Mb2dpY2FsSGVpZ2h0KCkgY29uc3QKICAgICB7CkBAIC0xNTgsNiArMTQ5LDkgQEAgcHJp
dmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0ZWRJbnRvVHJlZSgpIE9WRVJSSURFOwogICAg
IHZpcnR1YWwgdm9pZCB3aWxsQmVSZW1vdmVkRnJvbVRyZWUoKSBPVkVSUklERTsKIAorICAgIHZp
cnR1YWwgdm9pZCBsYXlvdXQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRPYmplY3QoUGFpbnRJ
bmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKTsKKwogICAgIHZpcnR1YWwgdm9pZCBpbnN0YWxsRmxv
d1RocmVhZCgpOwogCiAgICAgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gY29tcHV0ZVN0eWxlSW5S
ZWdpb24oY29uc3QgUmVuZGVyT2JqZWN0Kik7Cg==
</data>
<flag name="commit-queue"
          id="205801"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>186801</attachid>
            <date>2013-02-06 02:23:04 -0800</date>
            <delta_ts>2013-02-15 04:14:42 -0800</delta_ts>
            <desc>Patch 2</desc>
            <filename>74132-2.patch</filename>
            <type>text/plain</type>
            <size>29358</size>
            <attacher name="Mihnea Ovidenie">mihnea</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0MTY4YzdlLi4xMjg2NmZjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTMtMDIt
MDYgIE1paG5lYSBPdmlkZW5pZSAgPG1paG5lYUBhZG9iZS5jb20+CisKKyAgICAgICAgW0NTUyBS
ZWdpb25zXSBSZW5kZXJSZWdpb24gc2hvdWxkIGluaGVyaXQgZnJvbSBSZW5kZXJCbG9jaworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQxMzIKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXggdGVzdHMgdGhh
dCB3ZXJlIGZhaWxpbmcgYWZ0ZXIgdGhlIGluaGVyaXRhbmNlIGNoYW5nZS4KKworICAgICAgICAq
IGZhc3QvcmVnaW9ucy9mbG93cy1kZXBlbmRlbmN5LWR5bmFtaWMtcmVtb3ZlLmh0bWw6IEFzIGEg
YmxvY2ssIGFuIGVtcHR5IHJlZ2lvbiBjYW4gc2VsZiBjb2xsYXBzZSwKKyAgICAgICAgd2hpY2gg
d2FzIG5vdCBwb3NzaWJsZSBmb3IgYSByZXBsYWNlZCBlbGVtZW50LiBJIHVzZWQgJy13ZWJraXQt
bWFyZ2luLWNvbGxhcHNlOiBzZXBhcmF0ZScgdG8gcHJldmVudAorICAgICAgICBzZWxmIGNvbGxh
cHNpbmcgZm9yIHJlZ2lvbnMgYW5kIGF2b2lkIHJlY3JlYXRpbmcgdGhlIGV4cGVjdGF0aW9ucy4K
KyAgICAgICAgKiBmYXN0L3JlZ2lvbnMvZmxvd3MtZGVwZW5kZW5jeS1zYW1lLWZsb3cuaHRtbDoK
KyAgICAgICAgKiBmYXN0L3JlZ2lvbnMvc2VsZWN0aW5nLXRleHQtdGhyb3VnaC1kaWZmZXJlbnQt
cmVnaW9uLWZsb3dzLWV4cGVjdGVkLnR4dDogTmV3IGV4cGVjdGVkIHJlc3VsdCBhZnRlciBpbmhl
cml0YW5jZSBjaGFuZ2UuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0td2luL2Zhc3QvcmVn
aW9ucy9zZWxlY3RpbmctdGV4dC10aHJvdWdoLWRpZmZlcmVudC1yZWdpb24tZmxvd3MtZXhwZWN0
ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL2VmbC9mYXN0L3JlZ2lvbnMvc2VsZWN0aW5nLXRl
eHQtdGhyb3VnaC1kaWZmZXJlbnQtcmVnaW9uLWZsb3dzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ndGsvZmFzdC9yZWdpb25zL3NlbGVjdGluZy10ZXh0LXRocm91Z2gtZGlmZmVy
ZW50LXJlZ2lvbi1mbG93cy1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vcXQvZmFz
dC9yZWdpb25zL3NlbGVjdGluZy10ZXh0LXRocm91Z2gtZGlmZmVyZW50LXJlZ2lvbi1mbG93cy1l
eHBlY3RlZC50eHQ6CisKIDIwMTMtMDItMDUgIE1hdHQgRmFsa2VuaGFnZW4gPGZhbGtlbkBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCBnYXJkZW5pbmcuIENocm9taXVtIGRpc2Fi
bGVkIHdlYiBpbnRlbnRzLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2Zs
b3dzLWRlcGVuZGVuY3ktZHluYW1pYy1yZW1vdmUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvcmVn
aW9ucy9mbG93cy1kZXBlbmRlbmN5LWR5bmFtaWMtcmVtb3ZlLmh0bWwKaW5kZXggOTU1OGNiZi4u
MzU5ZGZmYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2Zsb3dzLWRlcGVu
ZGVuY3ktZHluYW1pYy1yZW1vdmUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMv
Zmxvd3MtZGVwZW5kZW5jeS1keW5hbWljLXJlbW92ZS5odG1sCkBAIC05LDcgKzksNyBAQAogLnJl
Z2lvbkZsb3dCIHsgLXdlYmtpdC1mbG93LWZyb206IGZsb3dCOyB9CiAucmVnaW9uRmxvd0MgeyAt
d2Via2l0LWZsb3ctZnJvbTogZmxvd0M7IH0KIAotLnJlZ2lvbkZsb3dBLCAucmVnaW9uRmxvd0Is
IC5yZWdpb25GbG93QyB7IHdpZHRoOiAwcHg7IGhlaWdodDogMHB4OyB9CisucmVnaW9uRmxvd0Es
IC5yZWdpb25GbG93QiwgLnJlZ2lvbkZsb3dDIHsgd2lkdGg6IDBweDsgaGVpZ2h0OiAwcHg7IC13
ZWJraXQtbWFyZ2luLWNvbGxhcHNlOiBzZXBhcmF0ZTsgfQogPC9zdHlsZT4KIAogPGRpdiBjbGFz
cz0iZmxvd0EiPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2Zsb3dzLWRl
cGVuZGVuY3ktc2FtZS1mbG93Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZmxvd3Mt
ZGVwZW5kZW5jeS1zYW1lLWZsb3cuaHRtbAppbmRleCBmYzYxNzQwLi41OTYwNDQxIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZmxvd3MtZGVwZW5kZW5jeS1zYW1lLWZsb3cu
aHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZmxvd3MtZGVwZW5kZW5jeS1zYW1l
LWZsb3cuaHRtbApAQCAtOSw3ICs5LDcgQEAKIC5yZWdpb25GbG93QiB7IC13ZWJraXQtZmxvdy1m
cm9tOiBmbG93QjsgfQogLnJlZ2lvbkZsb3dDIHsgLXdlYmtpdC1mbG93LWZyb206IGZsb3dDOyB9
CiAKLS5yZWdpb25GbG93QSwgLnJlZ2lvbkZsb3dCLCAucmVnaW9uRmxvd0MgeyB3aWR0aDogMHB4
OyBoZWlnaHQ6IDBweDsgfQorLnJlZ2lvbkZsb3dBLCAucmVnaW9uRmxvd0IsIC5yZWdpb25GbG93
QyB7IHdpZHRoOiAwcHg7IGhlaWdodDogMHB4OyAtd2Via2l0LW1hcmdpbi1jb2xsYXBzZTogc2Vw
YXJhdGU7IH0KIDwvc3R5bGU+CiAKIDxkaXYgY2xhc3M9ImZsb3dBIj4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9zZWxlY3RpbmctdGV4dC10aHJvdWdoLWRpZmZlcmVudC1y
ZWdpb24tZmxvd3MtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL3NlbGVj
dGluZy10ZXh0LXRocm91Z2gtZGlmZmVyZW50LXJlZ2lvbi1mbG93cy1leHBlY3RlZC50eHQKaW5k
ZXggNDVmNDhmNy4uNWZmZDFjNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25z
L3NlbGVjdGluZy10ZXh0LXRocm91Z2gtZGlmZmVyZW50LXJlZ2lvbi1mbG93cy1leHBlY3RlZC50
eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL3NlbGVjdGluZy10ZXh0LXRocm91Z2gt
ZGlmZmVyZW50LXJlZ2lvbi1mbG93cy1leHBlY3RlZC50eHQKQEAgLTcsNyArNyw3IEBAIEVESVRJ
TkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNl
bGVjdGlvbk5vdGlmaWNhdGlvCiBFRElUSU5HIERFTEVHQVRFOiBzaG91bGRFbmRFZGl0aW5nSW5E
T01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgRElWID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1l
bnQgdG8gMyBvZiBESVYgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudAogRURJVElORyBE
RUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0
aW9uTm90aWZpY2F0aW9uCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkRW5kRWRpdGluZzpX
ZWJWaWV3RGlkRW5kRWRpdGluZ05vdGlmaWNhdGlvbgotRURJVElORyBERUxFR0FURTogc2hvdWxk
Q2hhbmdlU2VsZWN0ZWRET01SYW5nZToobnVsbCkgdG9ET01SYW5nZTpyYW5nZSBmcm9tIDAgb2Yg
SDEgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAwIG9mIEgxID4gRElWID4gQk9E
WSA+IEhUTUwgPiAjZG9jdW1lbnQgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJl
YW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UKK0VESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNl
bGVjdGVkRE9NUmFuZ2U6KG51bGwpIHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mIERJViA+IEJP
RFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDAgb2YgRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1l
bnQgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6
RkFMU0UKIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmll
d0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgogbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4
NjAwCiAgIFJlbmRlclZpZXcgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCkBAIC02MCw0ICs2MCw0IEBA
IEZsb3cgVGhyZWFkcwogICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDU6ICIxIgog
ICBSZWdpb25zIGZvciBmbG93ICdmb290Tm90ZScKICAgICBSZW5kZXJSZWdpb24ge0RJVn0gI2Zv
b3ROb3RlUmVnaW9uIGhhc0F1dG9Mb2dpY2FsSGVpZ2h0Ci1jYXJldDogcG9zaXRpb24gMCBvZiBj
aGlsZCAwIHsjdGV4dH0gb2YgY2hpbGQgMSB7SDF9IG9mIGNoaWxkIDUge0RJVn0gb2YgYm9keQor
Y2FyZXQ6IHBvc2l0aW9uIDAgb2YgY2hpbGQgMSB7RElWfSBvZiBib2R5CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS13aW4vZmFzdC9yZWdpb25zL3NlbGVjdGluZy10
ZXh0LXRocm91Z2gtZGlmZmVyZW50LXJlZ2lvbi1mbG93cy1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS13aW4vZmFzdC9yZWdpb25zL3NlbGVjdGluZy10ZXh0LXRo
cm91Z2gtZGlmZmVyZW50LXJlZ2lvbi1mbG93cy1leHBlY3RlZC50eHQKaW5kZXggOWY2Zjg0Ni4u
OGE4ZmM0OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0td2luL2Zh
c3QvcmVnaW9ucy9zZWxlY3RpbmctdGV4dC10aHJvdWdoLWRpZmZlcmVudC1yZWdpb24tZmxvd3Mt
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLXdpbi9mYXN0
L3JlZ2lvbnMvc2VsZWN0aW5nLXRleHQtdGhyb3VnaC1kaWZmZXJlbnQtcmVnaW9uLWZsb3dzLWV4
cGVjdGVkLnR4dApAQCAtNyw3ICs3LDcgQEAgRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENo
YW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW8KIEVESVRJ
TkcgREVMRUdBVEU6IHNob3VsZEVuZEVkaXRpbmdJbkRPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiBE
SVYgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAzIG9mIERJViA+IERJViA+IEJP
RFkgPiBIVE1MID4gI2RvY3VtZW50CiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdl
U2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KIEVESVRJTkcg
REVMRUdBVEU6IHdlYlZpZXdEaWRFbmRFZGl0aW5nOldlYlZpZXdEaWRFbmRFZGl0aW5nTm90aWZp
Y2F0aW9uCi1FRElUSU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOihu
dWxsKSB0b0RPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiBIMSA+IERJViA+IEJPRFkgPiBIVE1MID4g
I2RvY3VtZW50IHRvIDAgb2YgSDEgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBhZmZp
bml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQor
RURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZToobnVsbCkgdG9E
T01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8g
MCBvZiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBhZmZpbml0eTpOU1NlbGVjdGlvbkFm
ZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQogRURJVElORyBERUxFR0FURTog
d2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZp
Y2F0aW9uCiBsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKICAgUmVuZGVyVmlldyBhdCAoMCww
KSBzaXplIDgwMHg2MDAKQEAgLTYwLDQgKzYwLDQgQEAgRmxvdyBUaHJlYWRzCiAgICAgICAgICAg
dGV4dCBydW4gYXQgKDAsMCkgd2lkdGggNTogIjEiCiAgIFJlZ2lvbnMgZm9yIGZsb3cgJ2Zvb3RO
b3RlJwogICAgIFJlbmRlclJlZ2lvbiB7RElWfSAjZm9vdE5vdGVSZWdpb24gaGFzQXV0b0xvZ2lj
YWxIZWlnaHQKLWNhcmV0OiBwb3NpdGlvbiAwIG9mIGNoaWxkIDAgeyN0ZXh0fSBvZiBjaGlsZCAx
IHtIMX0gb2YgY2hpbGQgNSB7RElWfSBvZiBib2R5CitjYXJldDogcG9zaXRpb24gMCBvZiBjaGls
ZCAxIHtESVZ9IG9mIGJvZHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9m
YXN0L3JlZ2lvbnMvc2VsZWN0aW5nLXRleHQtdGhyb3VnaC1kaWZmZXJlbnQtcmVnaW9uLWZsb3dz
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9mYXN0L3JlZ2lvbnMvc2Vs
ZWN0aW5nLXRleHQtdGhyb3VnaC1kaWZmZXJlbnQtcmVnaW9uLWZsb3dzLWV4cGVjdGVkLnR4dApp
bmRleCBlNDI5ZWZlLi40ODMxMjY5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9l
ZmwvZmFzdC9yZWdpb25zL3NlbGVjdGluZy10ZXh0LXRocm91Z2gtZGlmZmVyZW50LXJlZ2lvbi1m
bG93cy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL2Zhc3QvcmVn
aW9ucy9zZWxlY3RpbmctdGV4dC10aHJvdWdoLWRpZmZlcmVudC1yZWdpb24tZmxvd3MtZXhwZWN0
ZWQudHh0CkBAIC03LDcgKzcsNyBAQCBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdl
U2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpbwogRURJVElORyBE
RUxFR0FURTogc2hvdWxkRW5kRWRpdGluZ0luRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mIERJViA+
IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDMgb2YgRElWID4gRElWID4gQk9EWSA+
IEhUTUwgPiAjZG9jdW1lbnQKIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxl
Y3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgogRURJVElORyBERUxF
R0FURTogd2ViVmlld0RpZEVuZEVkaXRpbmc6V2ViVmlld0RpZEVuZEVkaXRpbmdOb3RpZmljYXRp
b24KLUVESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6KG51bGwp
IHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mIEgxID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9j
dW1lbnQgdG8gMCBvZiBIMSA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5
Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCitFRElU
SU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOihudWxsKSB0b0RPTVJh
bmdlOnJhbmdlIGZyb20gMCBvZiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAwIG9m
IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5p
dHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJW
aWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRp
b24KIGxheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAogICBSZW5kZXJWaWV3IGF0ICgwLDApIHNp
emUgODAweDYwMApAQCAtNjAsNCArNjAsNCBAQCBGbG93IFRocmVhZHMKICAgICAgICAgICB0ZXh0
IHJ1biBhdCAoMCwxKSB3aWR0aCA1OiAiMSIKICAgUmVnaW9ucyBmb3IgZmxvdyAnZm9vdE5vdGUn
CiAgICAgUmVuZGVyUmVnaW9uIHtESVZ9ICNmb290Tm90ZVJlZ2lvbiBoYXNBdXRvTG9naWNhbEhl
aWdodAotY2FyZXQ6IHBvc2l0aW9uIDAgb2YgY2hpbGQgMCB7I3RleHR9IG9mIGNoaWxkIDEge0gx
fSBvZiBjaGlsZCA1IHtESVZ9IG9mIGJvZHkKK2NhcmV0OiBwb3NpdGlvbiAwIG9mIGNoaWxkIDEg
e0RJVn0gb2YgYm9keQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Zhc3Qv
cmVnaW9ucy9zZWxlY3RpbmctdGV4dC10aHJvdWdoLWRpZmZlcmVudC1yZWdpb24tZmxvd3MtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Zhc3QvcmVnaW9ucy9zZWxlY3Rp
bmctdGV4dC10aHJvdWdoLWRpZmZlcmVudC1yZWdpb24tZmxvd3MtZXhwZWN0ZWQudHh0CmluZGV4
IDlmZjlkMDUuLmJlMTlkYjUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9m
YXN0L3JlZ2lvbnMvc2VsZWN0aW5nLXRleHQtdGhyb3VnaC1kaWZmZXJlbnQtcmVnaW9uLWZsb3dz
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvZmFzdC9yZWdpb25z
L3NlbGVjdGluZy10ZXh0LXRocm91Z2gtZGlmZmVyZW50LXJlZ2lvbi1mbG93cy1leHBlY3RlZC50
eHQKQEAgLTcsNyArNyw3IEBAIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxl
Y3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvCiBFRElUSU5HIERFTEVH
QVRFOiBzaG91bGRFbmRFZGl0aW5nSW5ET01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgRElWID4gRElW
ID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMyBvZiBESVYgPiBESVYgPiBCT0RZID4gSFRN
TCA+ICNkb2N1bWVudAogRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlv
bjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCiBFRElUSU5HIERFTEVHQVRF
OiB3ZWJWaWV3RGlkRW5kRWRpdGluZzpXZWJWaWV3RGlkRW5kRWRpdGluZ05vdGlmaWNhdGlvbgot
RURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZToobnVsbCkgdG9E
T01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgSDEgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVu
dCB0byAwIG9mIEgxID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgYWZmaW5pdHk6TlNT
ZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UKK0VESVRJTkcg
REVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6KG51bGwpIHRvRE9NUmFuZ2U6
cmFuZ2UgZnJvbSAwIG9mIERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDAgb2YgRElW
ID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURv
d25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UKIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdE
aWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgog
bGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCiAgIFJlbmRlclZpZXcgYXQgKDAsMCkgc2l6ZSA4
MDB4NjAwCkBAIC02MCw0ICs2MCw0IEBAIEZsb3cgVGhyZWFkcwogICAgICAgICAgIHRleHQgcnVu
IGF0ICgwLDEpIHdpZHRoIDU6ICIxIgogICBSZWdpb25zIGZvciBmbG93ICdmb290Tm90ZScKICAg
ICBSZW5kZXJSZWdpb24ge0RJVn0gI2Zvb3ROb3RlUmVnaW9uIGhhc0F1dG9Mb2dpY2FsSGVpZ2h0
Ci1jYXJldDogcG9zaXRpb24gMCBvZiBjaGlsZCAwIHsjdGV4dH0gb2YgY2hpbGQgMSB7SDF9IG9m
IGNoaWxkIDUge0RJVn0gb2YgYm9keQorY2FyZXQ6IHBvc2l0aW9uIDAgb2YgY2hpbGQgMSB7RElW
fSBvZiBib2R5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9mYXN0L3JlZ2lv
bnMvc2VsZWN0aW5nLXRleHQtdGhyb3VnaC1kaWZmZXJlbnQtcmVnaW9uLWZsb3dzLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L2Zhc3QvcmVnaW9ucy9zZWxlY3RpbmctdGV4
dC10aHJvdWdoLWRpZmZlcmVudC1yZWdpb24tZmxvd3MtZXhwZWN0ZWQudHh0CmluZGV4IDkwMWE2
MzcuLjI0YjViNzQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L2Zhc3QvcmVn
aW9ucy9zZWxlY3RpbmctdGV4dC10aHJvdWdoLWRpZmZlcmVudC1yZWdpb24tZmxvd3MtZXhwZWN0
ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L2Zhc3QvcmVnaW9ucy9zZWxlY3Rp
bmctdGV4dC10aHJvdWdoLWRpZmZlcmVudC1yZWdpb24tZmxvd3MtZXhwZWN0ZWQudHh0CkBAIC03
LDcgKzcsNyBAQCBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldl
YlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpbwogRURJVElORyBERUxFR0FURTogc2hv
dWxkRW5kRWRpdGluZ0luRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mIERJViA+IERJViA+IEJPRFkg
PiBIVE1MID4gI2RvY3VtZW50IHRvIDMgb2YgRElWID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9j
dW1lbnQKIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmll
d0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgogRURJVElORyBERUxFR0FURTogd2ViVmll
d0RpZEVuZEVkaXRpbmc6V2ViVmlld0RpZEVuZEVkaXRpbmdOb3RpZmljYXRpb24KLUVESVRJTkcg
REVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6KG51bGwpIHRvRE9NUmFuZ2U6
cmFuZ2UgZnJvbSAwIG9mIEgxID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMCBv
ZiBIMSA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9u
QWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCitFRElUSU5HIERFTEVHQVRF
OiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOihudWxsKSB0b0RPTVJhbmdlOnJhbmdlIGZy
b20gMCBvZiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAwIG9mIERJViA+IEJPRFkg
PiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFt
IHN0aWxsU2VsZWN0aW5nOkZBTFNFCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdl
U2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KIGxheWVyIGF0
ICgwLDApIHNpemUgODAweDYwMAogICBSZW5kZXJWaWV3IGF0ICgwLDApIHNpemUgODAweDYwMApA
QCAtNjAsNCArNjAsNCBAQCBGbG93IFRocmVhZHMKICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwx
KSB3aWR0aCA1OiAiMSIKICAgUmVnaW9ucyBmb3IgZmxvdyAnZm9vdE5vdGUnCiAgICAgUmVuZGVy
UmVnaW9uIHtESVZ9ICNmb290Tm90ZVJlZ2lvbiBoYXNBdXRvTG9naWNhbEhlaWdodAotY2FyZXQ6
IHBvc2l0aW9uIDAgb2YgY2hpbGQgMCB7I3RleHR9IG9mIGNoaWxkIDEge0gxfSBvZiBjaGlsZCA1
IHtESVZ9IG9mIGJvZHkKK2NhcmV0OiBwb3NpdGlvbiAwIG9mIGNoaWxkIDEge0RJVn0gb2YgYm9k
eQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCmluZGV4IDNkMzBlMzguLjJhZTQxMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwz
NyBAQAorMjAxMy0wMi0wNiAgTWlobmVhIE92aWRlbmllICA8bWlobmVhQGFkb2JlLmNvbT4KKwor
ICAgICAgICBbQ1NTIFJlZ2lvbnNdIFJlbmRlclJlZ2lvbiBzaG91bGQgaW5oZXJpdCBmcm9tIFJl
bmRlckJsb2NrCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03NDEzMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IENoYW5nZSB0aGUgYmFzZSBjbGFzcyBmb3IgUmVuZGVyUmVnaW9uIHRvIGJlIFJlbmRlckJsb2Nr
IGluc3RlYWQgb2YgUmVuZGVyUmVwbGFjZWQuCisgICAgICAgIFBlciBzcGVjIGh0dHA6Ly9kZXYu
dzMub3JnL2Nzc3dnL2NzczMtcmVnaW9ucy8jdGhlLWZsb3ctZnJvbS1wcm9wZXJ0eSwgYSByZWdp
b24gaXMgYSBub24tcmVwbGFjZWQgYmxvY2sgY29udGFpbmVyLgorICAgICAgICBUaGlzIGNoYW5n
ZSBpcyBjb3ZlcmVkIGJ5IGV4aXN0aW5nIHJlZ2lvbnMgdGVzdHMuCisKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyQm94LmNwcDogQ2xlYW4tdXAgdGhlIGNvZGUgZnJvbSByZWdpb25zIHNwZWNp
ZmljIHN0dWZmLCBub3cgdGhhdCB0aGUgcmVnaW9ucyBhcmUgcmVuZGVyIGJsb2Nrcy4KKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsV2lkdGgpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxIZWln
aHQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwOiBBIHJlZ2lv
biBzaG91bGQgYWx3YXlzIHJlbmRlciBjb250ZW50IGZyb20gaXRzIGFzc29jaWF0ZWQgZmxvdyB0
aHJlYWQsCisgICAgICAgIGV2ZW4gd2hlbiBpdCBkb2VzIG5vdCBoYXZlIGNoaWxkcmVuIG9mIGl0
cyBvd24uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OmlzU2ltcGxlQ29u
dGFpbmVyQ29tcG9zaXRpbmdMYXllcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck11bHRp
Q29sdW1uU2V0LmNwcDogTWFrZSBjaGFuZ2VzIHRvIG1hdGNoIHRoZSBuZXcgaW5oZXJpdGFuY2Ug
Zm9yIFJlbmRlclJlZ2lvbi4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck11bHRpQ29sdW1uU2V0
OjpwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNdWx0aUNvbHVtblNldDo6cGFpbnRD
b2x1bW5SdWxlcyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0Lmg6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJSZWdpb246OlJlbmRlclJlZ2lvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJS
ZWdpb246OnBhaW50T2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclJlZ2lvbjo6c3R5
bGVEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUmVnaW9uOjpsYXlvdXRCbG9j
ayk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSZWdpb246Omluc2VydGVkSW50b1RyZWUpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUmVnaW9uOjp3aWxsQmVSZW1vdmVkRnJvbVRyZWUpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUmVnaW9uOjpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdp
ZHRocyk6IFVzZSB0aGlzIG1ldGhvZCBpbnN0ZWFkIG9mIG1pbi9tYXhQcmVmZXJyZWRMb2dpY2Fs
V2lkdGguCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSZWdpb246OnVwZGF0ZUxvZ2ljYWxIZWln
aHQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJSZWdpb24uaDogRm9yIG5vdywgYXNzdW1l
IHRoZSByZWdpb24gaXMgbm90IGFsbG93ZWQgdG8gaGF2ZSBjaGlsZHJlbi4KKyAgICAgICAgV2hl
biB3ZSB3aWxsIGltcGxlbWVudCB0aGUgcHJvY2Vzc2luZyBtb2RlbCBmb3IgcHNldWRvLWVsZW1l
bnRzIGh0dHA6Ly9kZXYudzMub3JnL2Nzc3dnL2NzczMtcmVnaW9ucy8jcHJvY2Vzc2luZy1tb2Rl
bCwKKyAgICAgICAgd2Ugd2lsbCBoYXZlIHRvIHJlbW92ZSB0aGlzIGZ1bmN0aW9uLiBCeSBoYXZp
bmcgdGhpcyBmdW5jdGlvbiByZXR1cm4gZmFsc2UgaSB3YXMgYWJsZSB0byBsZWF2ZSBzb21lIHRl
c3RzIHVuY2hhbmdlZC4KKwogMjAxMy0wMi0wNSAgVnNldm9sb2QgVmxhc292ICA8dnNldmlrQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBBZGQgZW5kaW5nIHNsYXNoZXMg
YXV0b21hdGljYWxseSB0byBmaWxlIG1hcHBpbmdzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94LmNwcAppbmRleCAxMTQ5NGQxLi40Njg1MjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQm94LmNwcApAQCAtMjkyMywxNCArMjkyMywxMCBAQCBzdGF0aWMgdm9pZCBjb21w
dXRlSW5saW5lU3RhdGljRGlzdGFuY2UoTGVuZ3RoJiBsb2dpY2FsTGVmdCwgTGVuZ3RoJiBsb2dp
Y2FsUmlnaAogdm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbFdpZHRoKExv
Z2ljYWxFeHRlbnRDb21wdXRlZFZhbHVlcyYgY29tcHV0ZWRWYWx1ZXMsIFJlbmRlclJlZ2lvbiog
cmVnaW9uLCBMYXlvdXRVbml0IG9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UpIGNvbnN0
CiB7CiAgICAgaWYgKGlzUmVwbGFjZWQoKSkgewotICAgICAgICAvLyBGSVhNRTogRm9yIHJlZ2lv
bnMgd2l0aCB3aWR0aCBhdXRvLCB3ZSB3YW50IHRvIGNvbXB1dGUgd2lkdGggdXNpbmcgdGhlIG5v
cm1hbCBibG9jayBzaXppbmcgY29kZS4KLSAgICAgICAgLy8gRm9yIG5vdywgcmVnaW9ucyBhcmUg
cmVwbGFjZWQgZWxlbWVudHMgYW5kIHRoaXMgY29kZSBjYW4gYmUgcmVtb3ZlZCBvbmNlIHRoZSBS
ZW5kZXJSZWdpb24KLSAgICAgICAgLy8gd2lsbCBpbmhlcml0IGZyb20gUmVuZGVyQmxvY2sgaW5z
dGVhZCBvZiBSZW5kZXJSZXBsYWNlZC4KLSAgICAgICAgLy8gKHNlZSBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQxMzIgKQotICAgICAgICBpZiAoIWlzUmVuZGVyUmVn
aW9uKCkgfHwgKGlzUmVuZGVyUmVnaW9uKCkgJiYgc2hvdWxkQ29tcHV0ZVNpemVBc1JlcGxhY2Vk
KCkpKSB7Ci0gICAgICAgICAgICBjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxXaWR0aFJlcGxhY2Vk
KGNvbXB1dGVkVmFsdWVzKTsgLy8gRklYTUU6IFBhdGNoIGZvciByZWdpb25zIHdoZW4gd2UgYWRk
IHJlcGxhY2VkIGVsZW1lbnQgc3VwcG9ydC4KLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
fQorICAgICAgICAvLyBGSVhNRTogUG9zaXRpb25lZCByZXBsYWNlZCBlbGVtZW50cyBpbnNpZGUg
YSBmbG93IHRocmVhZCBhcmUgbm90IHdvcmtpbmcgcHJvcGVybHkKKyAgICAgICAgLy8gd2l0aCB2
YXJpYWJsZSB3aWR0aCByZWdpb25zIChzZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTY5ODk2ICkKKyAgICAgICAgY29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsV2lkdGhS
ZXBsYWNlZChjb21wdXRlZFZhbHVlcyk7CisgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICAv
LyBRVUVTVElPTlMKQEAgLTMyNzMsMTQgKzMyNjksOCBAQCBzdGF0aWMgdm9pZCBjb21wdXRlQmxv
Y2tTdGF0aWNEaXN0YW5jZShMZW5ndGgmIGxvZ2ljYWxUb3AsIExlbmd0aCYgbG9naWNhbEJvdHRv
bQogdm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbEhlaWdodChMb2dpY2Fs
RXh0ZW50Q29tcHV0ZWRWYWx1ZXMmIGNvbXB1dGVkVmFsdWVzKSBjb25zdAogewogICAgIGlmIChp
c1JlcGxhY2VkKCkpIHsKLSAgICAgICAgLy8gRklYTUU6IEZvciByZWdpb25zIHdpdGggaGVpZ2h0
IGF1dG8sIHdlIHdhbnQgdG8gY29tcHV0ZSB3aWR0aCB1c2luZyB0aGUgbm9ybWFsIGJsb2NrIHNp
emluZyBjb2RlLgotICAgICAgICAvLyBGb3Igbm93LCByZWdpb25zIGFyZSByZXBsYWNlZCBlbGVt
ZW50cyBhbmQgdGhpcyBjb2RlIGNhbiBiZSByZW1vdmVkIG9uY2UgdGhlIFJlbmRlclJlZ2lvbgot
ICAgICAgICAvLyB3aWxsIGluaGVyaXQgZnJvbSBSZW5kZXJCbG9jayBpbnN0ZWFkIG9mIFJlbmRl
clJlcGxhY2VkLgotICAgICAgICAvLyAoc2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD03NDEzMiApCi0gICAgICAgIGlmICghaXNSZW5kZXJSZWdpb24oKSB8fCAoaXNS
ZW5kZXJSZWdpb24oKSAmJiBzaG91bGRDb21wdXRlU2l6ZUFzUmVwbGFjZWQoKSkpIHsKLSAgICAg
ICAgICAgIGNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbEhlaWdodFJlcGxhY2VkKGNvbXB1dGVkVmFs
dWVzKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQorICAgICAgICBjb21wdXRlUG9z
aXRpb25lZExvZ2ljYWxIZWlnaHRSZXBsYWNlZChjb21wdXRlZFZhbHVlcyk7CisgICAgICAgIHJl
dHVybjsKICAgICB9CiAKICAgICAvLyBUaGUgZm9sbG93aW5nIGlzIGJhc2VkIG9mZiBvZiB0aGUg
VzNDIFdvcmtpbmcgRHJhZnQgZnJvbSBBcHJpbCAxMSwgMjAwNiBvZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAppbmRleCA3MjY3YmFhLi5lNGZk
OWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNr
aW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5n
LmNwcApAQCAtMTQwMCw2ICsxNDAwLDkgQEAgYm9vbCBSZW5kZXJMYXllckJhY2tpbmc6OmlzU2lt
cGxlQ29udGFpbmVyQ29tcG9zaXRpbmdMYXllcigpIGNvbnN0CiAgICAgCiAgICAgaWYgKHBhaW50
c0JveERlY29yYXRpb25zKCkgfHwgcGFpbnRzQ2hpbGRyZW4oKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgaWYgKHJlbmRlck9iamVjdC0+aXNSZW5kZXJSZWdpb24oKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIAogICAgIGlmIChyZW5kZXJPYmplY3QtPm5vZGUoKSAmJiByZW5k
ZXJPYmplY3QtPm5vZGUoKS0+aXNEb2N1bWVudE5vZGUoKSkgewogICAgICAgICAvLyBMb29rIHRv
IHNlZSBpZiB0aGUgcm9vdCBvYmplY3QgaGFzIGEgbm9uLXNpbXBsZSBiYWNrZ3JvdW5kCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0LmNwcAppbmRl
eCAxZDkwNWM0Li44YWFhZjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTXVsdGlDb2x1bW5TZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJNdWx0aUNvbHVtblNldC5jcHAKQEAgLTI4LDggKzI4LDggQEAKIAogI2luY2x1ZGUgIkhp
dFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJQYWludEluZm8uaCIKLSNpbmNsdWRlICJSZW5kZXJN
dWx0aUNvbHVtbkZsb3dUaHJlYWQuaCIKICNpbmNsdWRlICJSZW5kZXJNdWx0aUNvbHVtbkJsb2Nr
LmgiCisjaW5jbHVkZSAiUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkLmgiCiAKIHVzaW5nIHN0
ZDo6bWluOwogdXNpbmcgc3RkOjptYXg7CkBAIC0yMDUsNyArMjA1LDcgQEAgTGF5b3V0UmVjdCBS
ZW5kZXJNdWx0aUNvbHVtblNldDo6Zmxvd1RocmVhZFBvcnRpb25PdmVyZmxvd1JlY3QoY29uc3Qg
TGF5b3V0UmVjdCYKICAgICByZXR1cm4gb3ZlcmZsb3dSZWN0Rm9yRmxvd1RocmVhZFBvcnRpb24o
b3ZlcmZsb3dSZWN0LCBpc0ZpcnN0UmVnaW9uKCkgJiYgaXNGaXJzdENvbHVtbiwgaXNMYXN0UmVn
aW9uKCkgJiYgaXNMYXN0Q29sdW1uKTsKIH0KIAotdm9pZCBSZW5kZXJNdWx0aUNvbHVtblNldDo6
cGFpbnRSZXBsYWNlZChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBh
aW50T2Zmc2V0KQordm9pZCBSZW5kZXJNdWx0aUNvbHVtblNldDo6cGFpbnQoUGFpbnRJbmZvJiBw
YWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKIHsKICAgICAvLyBGSVhN
RTogUmVuZGVyUmVnaW9ucyBhcmUgcmVwbGFjZWQgZWxlbWVudHMgcmlnaHQgbm93IGFuZCBzbyB0
aGV5IG9ubHkgcGFpbnQgaW4gdGhlIGZvcmVncm91bmQgcGhhc2UuCiAgICAgLy8gQ29sdW1ucyBz
aG91bGQgdGVjaG5pY2FsbHkgcmVzcGVjdCBwaGFzZXMgYW5kIGFsbG93IGZvciBiYWNrZ3JvdW5k
L2Zsb2F0L2ZvcmVncm91bmQgb3ZlcmxhcCBldGMuLCBqdXN0IGxpa2UKQEAgLTI1OCw3ICsyNTgs
NyBAQCB2b2lkIFJlbmRlck11bHRpQ29sdW1uU2V0OjpwYWludENvbHVtblJ1bGVzKFBhaW50SW5m
byYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQbwogICAgICAgICAgICAgcnVsZUxvZ2ljYWxMZWZ0
IC09IChpbmxpbmVEaXJlY3Rpb25TaXplICsgY29sR2FwIC8gMik7CiAgICAgICAgICAgICBjdXJy
TG9naWNhbExlZnRPZmZzZXQgLT0gKGlubGluZURpcmVjdGlvblNpemUgKyBjb2xHYXApOwogICAg
ICAgICB9Ci0gICAgICAgCisKICAgICAgICAgLy8gTm93IHBhaW50IHRoZSBjb2x1bW4gcnVsZS4K
ICAgICAgICAgaWYgKGkgPCBjb2xDb3VudCAtIDEpIHsKICAgICAgICAgICAgIExheW91dFVuaXQg
cnVsZUxlZnQgPSBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gcGFpbnRPZmZzZXQueCgpICsg
cnVsZUxvZ2ljYWxMZWZ0IC0gcnVsZVRoaWNrbmVzcyAvIDIgKyBydWxlQWRkIDogcGFpbnRPZmZz
ZXQueCgpICsgYm9yZGVyTGVmdCgpICsgcGFkZGluZ0xlZnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0LmgKaW5kZXggM2E0Y2RkOS4uYmQ5ODBi
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1u
U2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0
LmgKQEAgLTk0LDcgKzk0LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlTG9n
aWNhbEhlaWdodCgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlTG9naWNhbEhl
aWdodChMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQsIExheW91dFVuaXQgbG9naWNhbFRvcCwgTG9n
aWNhbEV4dGVudENvbXB1dGVkVmFsdWVzJikgY29uc3QgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFs
IHZvaWQgcGFpbnRSZXBsYWNlZChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRP
ZmZzZXQpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBwYWludChQYWludEluZm8mLCBjb25z
dCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBu
b2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25zdCBI
aXRUZXN0TG9jYXRpb24mLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQsIEhp
dFRlc3RBY3Rpb24pIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCBMYXlvdXRVbml0IHBhZ2VMb2dp
Y2FsV2lkdGgoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX2NvbXB1dGVkQ29sdW1uV2lkdGg7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5jcHAKaW5kZXggOTYzMTU2
YS4uMmY1YWUwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJl
Z2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5jcHAK
QEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRl
ICJIaXRUZXN0UmVzdWx0LmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgorI2luY2x1ZGUgIkxheW91
dFJlcGFpbnRlci5oIgogI2luY2x1ZGUgIlBhaW50SW5mby5oIgogI2luY2x1ZGUgIlJhbmdlLmgi
CiAjaW5jbHVkZSAiUmVuZGVyQm94UmVnaW9uSW5mby5oIgpAQCAtNDQsNyArNDUsNyBAQAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBSZW5kZXJSZWdpb246OlJlbmRlclJlZ2lvbihFbGVtZW50KiBl
bGVtZW50LCBSZW5kZXJGbG93VGhyZWFkKiBmbG93VGhyZWFkKQotICAgIDogUmVuZGVyUmVwbGFj
ZWQoZWxlbWVudCwgSW50U2l6ZSgpKQorICAgIDogUmVuZGVyQmxvY2soZWxlbWVudCkKICAgICAs
IG1fZmxvd1RocmVhZChmbG93VGhyZWFkKQogICAgICwgbV9wYXJlbnROYW1lZEZsb3dUaHJlYWQo
MCkKICAgICAsIG1faXNWYWxpZChmYWxzZSkKQEAgLTEzNSwxMCArMTM2LDE1IEBAIGJvb2wgUmVu
ZGVyUmVnaW9uOjppc0xhc3RSZWdpb24oKSBjb25zdAogICAgIHJldHVybiBtX2Zsb3dUaHJlYWQt
Pmxhc3RSZWdpb24oKSA9PSB0aGlzOwogfQogCi12b2lkIFJlbmRlclJlZ2lvbjo6cGFpbnRSZXBs
YWNlZChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0
KQordm9pZCBSZW5kZXJSZWdpb246OnBhaW50T2JqZWN0KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBj
b25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiB7CisgICAgaWYgKHN0eWxlKCktPnZpc2li
aWxpdHkoKSAhPSBWSVNJQkxFKQorICAgICAgICByZXR1cm47CisKKyAgICBSZW5kZXJCbG9jazo6
cGFpbnRPYmplY3QocGFpbnRJbmZvLCBwYWludE9mZnNldCk7CisKICAgICAvLyBEZWxlZ2F0ZSBw
YWludGluZyBvZiBjb250ZW50IGluIHJlZ2lvbiB0byBSZW5kZXJGbG93VGhyZWFkLgotICAgIGlm
ICghbV9mbG93VGhyZWFkIHx8ICFpc1ZhbGlkKCkpCisgICAgaWYgKCFtX2Zsb3dUaHJlYWQgfHwg
IWlzVmFsaWQoKSB8fCAocGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2VGb3JlZ3JvdW5kKSkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgc2V0UmVnaW9uT2JqZWN0c1JlZ2lvblN0eWxlKCk7CkBA
IC0yMjMsNyArMjI5LDcgQEAgdm9pZCBSZW5kZXJSZWdpb246OnVwZGF0ZVJlZ2lvbkhhc0F1dG9M
b2dpY2FsSGVpZ2h0RmxhZygpCiAKIHZvaWQgUmVuZGVyUmVnaW9uOjpzdHlsZURpZENoYW5nZShT
dHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKQogewotICAg
IFJlbmRlclJlcGxhY2VkOjpzdHlsZURpZENoYW5nZShkaWZmLCBvbGRTdHlsZSk7CisgICAgUmVu
ZGVyQmxvY2s6OnN0eWxlRGlkQ2hhbmdlKGRpZmYsIG9sZFN0eWxlKTsKIAogICAgIC8vIElmIHRo
ZSByZWdpb24gaXMgbm90IGF0dGFjaGVkIHRvIGFueSB0aHJlYWQsIHRoZXJlIGlzIG5vIG5lZWQg
dG8gY2hlY2sKICAgICAvLyB3aGV0aGVyIHRoZSByZWdpb24gaGFzIHJlZ2lvbiBzdHlsaW5nIHNp
bmNlIG5vIGNvbnRlbnQgd2lsbCBiZSBkaXNwbGF5ZWQKQEAgLTIzNywxMCArMjQzLDEyIEBAIHZv
aWQgUmVuZGVyUmVnaW9uOjpzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29u
c3QgUmVuZGVyU3R5bGUqIG9sZFN0CiAgICAgdXBkYXRlUmVnaW9uSGFzQXV0b0xvZ2ljYWxIZWln
aHRGbGFnKCk7CiB9CiAKLXZvaWQgUmVuZGVyUmVnaW9uOjpsYXlvdXQoKQordm9pZCBSZW5kZXJS
ZWdpb246OmxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCkKIHsK
ICAgICBTdGFja1N0YXRzOjpMYXlvdXRDaGVja1BvaW50IGxheW91dENoZWNrUG9pbnQ7Ci0gICAg
UmVuZGVyUmVwbGFjZWQ6OmxheW91dCgpOworCisgICAgUmVuZGVyQmxvY2s6OmxheW91dEJsb2Nr
KHJlbGF5b3V0Q2hpbGRyZW4pOworCiAgICAgaWYgKG1fZmxvd1RocmVhZCAmJiBpc1ZhbGlkKCkp
IHsKICAgICAgICAgTGF5b3V0UmVjdCBvbGRSZWdpb25SZWN0KGZsb3dUaHJlYWRQb3J0aW9uUmVj
dCgpKTsKICAgICAgICAgaWYgKCFpc0hvcml6b250YWxXcml0aW5nTW9kZSgpKQpAQCAtNDgzLDE0
ICs0OTEsMTQgQEAgdm9pZCBSZW5kZXJSZWdpb246OnJlc3RvcmVSZWdpb25PYmplY3RzT3JpZ2lu
YWxTdHlsZSgpCiAKIHZvaWQgUmVuZGVyUmVnaW9uOjppbnNlcnRlZEludG9UcmVlKCkKIHsKLSAg
ICBSZW5kZXJSZXBsYWNlZDo6aW5zZXJ0ZWRJbnRvVHJlZSgpOworICAgIFJlbmRlckJsb2NrOjpp
bnNlcnRlZEludG9UcmVlKCk7CiAKICAgICBhdHRhY2hSZWdpb24oKTsKIH0KIAogdm9pZCBSZW5k
ZXJSZWdpb246OndpbGxCZVJlbW92ZWRGcm9tVHJlZSgpCiB7Ci0gICAgUmVuZGVyUmVwbGFjZWQ6
OndpbGxCZVJlbW92ZWRGcm9tVHJlZSgpOworICAgIFJlbmRlckJsb2NrOjp3aWxsQmVSZW1vdmVk
RnJvbVRyZWUoKTsKIAogICAgIGRldGFjaFJlZ2lvbigpOwogfQpAQCAtNTcwLDQ2ICs1NzgsMzkg
QEAgdm9pZCBSZW5kZXJSZWdpb246OmNsZWFyT2JqZWN0U3R5bGVJblJlZ2lvbihjb25zdCBSZW5k
ZXJPYmplY3QqIG9iamVjdCkKICAgICAgICAgY2xlYXJPYmplY3RTdHlsZUluUmVnaW9uKGNoaWxk
KTsKIH0KIAotLy8gRklYTUU6IHdoZW4gUmVuZGVyUmVnaW9uIHdpbGwgaW5oZXJpdCBmcm9tIFJl
bmRlckJsb2NrIGluc3RlYWQgb2YgUmVuZGVyUmVwbGFjZWQsCi0vLyB3ZSBzaG91bGQgb3Zlcndy
aXRlIGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzICggc2VlIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDEzMiApCi1MYXlvdXRVbml0IFJlbmRlclJlZ2lvbjo6
bWluUHJlZmVycmVkTG9naWNhbFdpZHRoKCkgY29uc3QKK3ZvaWQgUmVuZGVyUmVnaW9uOjpjb21w
dXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygpCiB7Ci0gICAgaWYgKCFtX2Zsb3dUaHJlYWQgfHwg
IW1faXNWYWxpZCkKLSAgICAgICAgcmV0dXJuIFJlbmRlclJlcGxhY2VkOjptaW5QcmVmZXJyZWRM
b2dpY2FsV2lkdGgoKTsKLQotICAgIC8vIEZJWE1FOiBDdXJyZW50bHksIHRoZSBjb2RlIGhhbmRs
ZXMgb25seSB0aGUgPGxlbmd0aD4gY2FzZSBmb3IgbWluLXdpZHRoLiBJdCBzaG91bGQgYWxzbyBz
dXBwb3J0IG90aGVyIHZhbHVlcywgbGlrZSBwZXJjZW50YWdlLCBjYWxjCi0gICAgLy8gb3Igdmll
d3BvcnQgcmVsYXRpdmUuCi0gICAgUmVuZGVyU3R5bGUqIHN0eWxlVG9Vc2UgPSBzdHlsZSgpOwot
ICAgIExheW91dFVuaXQgbWluUHJlZmVycmVkTG9naWNhbFdpZHRoID0gbV9mbG93VGhyZWFkLT5t
aW5QcmVmZXJyZWRMb2dpY2FsV2lkdGgoKTsKLQotICAgIGlmIChzdHlsZVRvVXNlLT5sb2dpY2Fs
TWluV2lkdGgoKS5pc0ZpeGVkKCkgJiYgc3R5bGVUb1VzZS0+bG9naWNhbE1pbldpZHRoKCkudmFs
dWUoKSA+IDApCi0gICAgICAgIG1pblByZWZlcnJlZExvZ2ljYWxXaWR0aCA9IHN0ZDo6bWF4KG1p
blByZWZlcnJlZExvZ2ljYWxXaWR0aCwgYWRqdXN0Q29udGVudEJveExvZ2ljYWxXaWR0aEZvckJv
eFNpemluZyhzdHlsZVRvVXNlLT5sb2dpY2FsTWluV2lkdGgoKS52YWx1ZSgpKSk7CisgICAgQVNT
RVJUKHByZWZlcnJlZExvZ2ljYWxXaWR0aHNEaXJ0eSgpKTsKIAotICAgIGlmIChzdHlsZVRvVXNl
LT5sb2dpY2FsTWF4V2lkdGgoKS5pc0ZpeGVkKCkpCi0gICAgICAgIG1pblByZWZlcnJlZExvZ2lj
YWxXaWR0aCA9IHN0ZDo6bWluKG1pblByZWZlcnJlZExvZ2ljYWxXaWR0aCwgYWRqdXN0Q29udGVu
dEJveExvZ2ljYWxXaWR0aEZvckJveFNpemluZyhzdHlsZVRvVXNlLT5sb2dpY2FsTWF4V2lkdGgo
KS52YWx1ZSgpKSk7Ci0KLSAgICByZXR1cm4gbWluUHJlZmVycmVkTG9naWNhbFdpZHRoICsgYm9y
ZGVyQW5kUGFkZGluZ0xvZ2ljYWxXaWR0aCgpOwotfQorICAgIGlmICghbV9mbG93VGhyZWFkIHx8
ICFtX2lzVmFsaWQpIHsKKyAgICAgICAgUmVuZGVyQmxvY2s6OmNvbXB1dGVQcmVmZXJyZWRMb2dp
Y2FsV2lkdGhzKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKLUxheW91dFVuaXQgUmVuZGVy
UmVnaW9uOjptYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGgoKSBjb25zdAotewotICAgIGlmICghbV9m
bG93VGhyZWFkIHx8ICFtX2lzVmFsaWQpCi0gICAgICAgIHJldHVybiBSZW5kZXJSZXBsYWNlZDo6
bWF4UHJlZmVycmVkTG9naWNhbFdpZHRoKCk7CisgICAgLy8gRklYTUU6IEN1cnJlbnRseSwgdGhl
IGNvZGUgaGFuZGxlcyBvbmx5IHRoZSA8bGVuZ3RoPiBjYXNlIGZvciBtaW4td2lkdGgvbWF4LXdp
ZHRoLgorICAgIC8vIEl0IHNob3VsZCBhbHNvIHN1cHBvcnQgb3RoZXIgdmFsdWVzLCBsaWtlIHBl
cmNlbnRhZ2UsIGNhbGMgb3Igdmlld3BvcnQgcmVsYXRpdmUuCisgICAgbV9taW5QcmVmZXJyZWRM
b2dpY2FsV2lkdGggPSBtX2Zsb3dUaHJlYWQtPm1pblByZWZlcnJlZExvZ2ljYWxXaWR0aCgpOwor
ICAgIG1fbWF4UHJlZmVycmVkTG9naWNhbFdpZHRoID0gbV9mbG93VGhyZWFkLT5tYXhQcmVmZXJy
ZWRMb2dpY2FsV2lkdGgoKTsKIAotICAgIC8vIEZJWE1FOiBDdXJyZW50bHksIHRoZSBjb2RlIGhh
bmRsZXMgb25seSB0aGUgPGxlbmd0aD4gY2FzZSBmb3IgbWF4LXdpZHRoLiBJdCBzaG91bGQgYWxz
byBzdXBwb3J0IG90aGVyIHZhbHVlcywgbGlrZSBwZXJjZW50YWdlLCBjYWxjCi0gICAgLy8gb3Ig
dmlld3BvcnQgcmVsYXRpdmUuCiAgICAgUmVuZGVyU3R5bGUqIHN0eWxlVG9Vc2UgPSBzdHlsZSgp
OwotICAgIExheW91dFVuaXQgbWF4UHJlZmVycmVkTG9naWNhbFdpZHRoID0gbV9mbG93VGhyZWFk
LT5tYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGgoKTsKKyAgICBpZiAoc3R5bGVUb1VzZS0+bG9naWNh
bE1pbldpZHRoKCkuaXNGaXhlZCgpICYmIHN0eWxlVG9Vc2UtPmxvZ2ljYWxNaW5XaWR0aCgpLnZh
bHVlKCkgPiAwKSB7CisgICAgICAgIG1fbWluUHJlZmVycmVkTG9naWNhbFdpZHRoID0gc3RkOjpt
YXgobV9taW5QcmVmZXJyZWRMb2dpY2FsV2lkdGgsIGFkanVzdENvbnRlbnRCb3hMb2dpY2FsV2lk
dGhGb3JCb3hTaXppbmcoc3R5bGVUb1VzZS0+bG9naWNhbE1pbldpZHRoKCkudmFsdWUoKSkpOwor
ICAgICAgICBtX21heFByZWZlcnJlZExvZ2ljYWxXaWR0aCA9IHN0ZDo6bWF4KG1fbWF4UHJlZmVy
cmVkTG9naWNhbFdpZHRoLCBhZGp1c3RDb250ZW50Qm94TG9naWNhbFdpZHRoRm9yQm94U2l6aW5n
KHN0eWxlVG9Vc2UtPmxvZ2ljYWxNaW5XaWR0aCgpLnZhbHVlKCkpKTsKKyAgICB9CiAKLSAgICBp
ZiAoc3R5bGVUb1VzZS0+bG9naWNhbE1pbldpZHRoKCkuaXNGaXhlZCgpICYmIHN0eWxlVG9Vc2Ut
PmxvZ2ljYWxNaW5XaWR0aCgpLnZhbHVlKCkgPiAwKQotICAgICAgICBtYXhQcmVmZXJyZWRMb2dp
Y2FsV2lkdGggPSBzdGQ6Om1heChtYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGgsIGFkanVzdENvbnRl
bnRCb3hMb2dpY2FsV2lkdGhGb3JCb3hTaXppbmcoc3R5bGVUb1VzZS0+bG9naWNhbE1pbldpZHRo
KCkudmFsdWUoKSkpOworICAgIGlmIChzdHlsZVRvVXNlLT5sb2dpY2FsTWF4V2lkdGgoKS5pc0Zp
eGVkKCkpIHsKKyAgICAgICAgbV9taW5QcmVmZXJyZWRMb2dpY2FsV2lkdGggPSBzdGQ6Om1pbiht
X21pblByZWZlcnJlZExvZ2ljYWxXaWR0aCwgYWRqdXN0Q29udGVudEJveExvZ2ljYWxXaWR0aEZv
ckJveFNpemluZyhzdHlsZVRvVXNlLT5sb2dpY2FsTWF4V2lkdGgoKS52YWx1ZSgpKSk7CisgICAg
ICAgIG1fbWF4UHJlZmVycmVkTG9naWNhbFdpZHRoID0gc3RkOjptaW4obV9tYXhQcmVmZXJyZWRM
b2dpY2FsV2lkdGgsIGFkanVzdENvbnRlbnRCb3hMb2dpY2FsV2lkdGhGb3JCb3hTaXppbmcoc3R5
bGVUb1VzZS0+bG9naWNhbE1heFdpZHRoKCkudmFsdWUoKSkpOworICAgIH0KIAotICAgIGlmIChz
dHlsZVRvVXNlLT5sb2dpY2FsTWF4V2lkdGgoKS5pc0ZpeGVkKCkpCi0gICAgICAgIG1heFByZWZl
cnJlZExvZ2ljYWxXaWR0aCA9IHN0ZDo6bWluKG1heFByZWZlcnJlZExvZ2ljYWxXaWR0aCwgYWRq
dXN0Q29udGVudEJveExvZ2ljYWxXaWR0aEZvckJveFNpemluZyhzdHlsZVRvVXNlLT5sb2dpY2Fs
TWF4V2lkdGgoKS52YWx1ZSgpKSk7CisgICAgTGF5b3V0VW5pdCBib3JkZXJBbmRQYWRkaW5nID0g
Ym9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxXaWR0aCgpOworICAgIG1fbWluUHJlZmVycmVkTG9naWNh
bFdpZHRoICs9IGJvcmRlckFuZFBhZGRpbmc7CisgICAgbV9tYXhQcmVmZXJyZWRMb2dpY2FsV2lk
dGggKz0gYm9yZGVyQW5kUGFkZGluZzsKIAotICAgIHJldHVybiBtYXhQcmVmZXJyZWRMb2dpY2Fs
V2lkdGggKyBib3JkZXJBbmRQYWRkaW5nTG9naWNhbFdpZHRoKCk7CisgICAgc2V0UHJlZmVycmVk
TG9naWNhbFdpZHRoc0RpcnR5KGZhbHNlKTsKIH0KIAorCiB2b2lkIFJlbmRlclJlZ2lvbjo6Z2V0
UmFuZ2VzKFZlY3RvcjxSZWZQdHI8UmFuZ2U+ID4mIHJhbmdlT2JqZWN0cykgY29uc3QKIHsKICAg
ICBSZW5kZXJOYW1lZEZsb3dUaHJlYWQqIG5hbWVkRmxvdyA9IHZpZXcoKS0+Zmxvd1RocmVhZENv
bnRyb2xsZXIoKS0+ZW5zdXJlUmVuZGVyRmxvd1RocmVhZFdpdGhOYW1lKHN0eWxlKCktPnJlZ2lv
blRocmVhZCgpKTsKQEAgLTYxOCw3ICs2MTksNyBAQCB2b2lkIFJlbmRlclJlZ2lvbjo6Z2V0UmFu
Z2VzKFZlY3RvcjxSZWZQdHI8UmFuZ2U+ID4mIHJhbmdlT2JqZWN0cykgY29uc3QKIAogdm9pZCBS
ZW5kZXJSZWdpb246OnVwZGF0ZUxvZ2ljYWxIZWlnaHQoKQogewotICAgIFJlbmRlclJlcGxhY2Vk
Ojp1cGRhdGVMb2dpY2FsSGVpZ2h0KCk7CisgICAgUmVuZGVyQmxvY2s6OnVwZGF0ZUxvZ2ljYWxI
ZWlnaHQoKTsKIAogICAgIGlmICghaGFzQXV0b0xvZ2ljYWxIZWlnaHQoKSkKICAgICAgICAgcmV0
dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5oCmluZGV4IDI0MjFkYzku
LjA5MzdjZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdp
b24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmgKQEAgLTMw
LDcgKzMwLDcgQEAKICNpZm5kZWYgUmVuZGVyUmVnaW9uX2gKICNkZWZpbmUgUmVuZGVyUmVnaW9u
X2gKIAotI2luY2x1ZGUgIlJlbmRlclJlcGxhY2VkLmgiCisjaW5jbHVkZSAiUmVuZGVyQmxvY2su
aCIKICNpbmNsdWRlICJTdHlsZUluaGVyaXRlZERhdGEuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpAQCAtNDAsMTMgKzQwLDEyIEBAIGNsYXNzIFJlbmRlckJveFJlZ2lvbkluZm87CiBjbGFzcyBS
ZW5kZXJGbG93VGhyZWFkOwogY2xhc3MgUmVuZGVyTmFtZWRGbG93VGhyZWFkOwogCi1jbGFzcyBS
ZW5kZXJSZWdpb24gOiBwdWJsaWMgUmVuZGVyUmVwbGFjZWQgeworY2xhc3MgUmVuZGVyUmVnaW9u
IDogcHVibGljIFJlbmRlckJsb2NrIHsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBSZW5kZXJSZWdp
b24oRWxlbWVudCosIFJlbmRlckZsb3dUaHJlYWQqKTsKIAogICAgIHZpcnR1YWwgYm9vbCBpc1Jl
bmRlclJlZ2lvbigpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBw
YWludFJlcGxhY2VkKFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jik7CiAgICAgdmlydHVh
bCBib29sIG5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYs
IGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgbG9jYXRpb25JbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0
UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBIaXRUZXN0QWN0aW9uKSBPVkVSUklERTsKIAogICAg
IHZpcnR1YWwgdm9pZCBzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRl
clN0eWxlKiBvbGRTdHlsZSk7CkBAIC02OCw4ICs2Nyw2IEBAIHB1YmxpYzoKICAgICBib29sIGhh
c0N1c3RvbVJlZ2lvblN0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9oYXNDdXN0b21SZWdpb25TdHls
ZTsgfQogICAgIHZvaWQgc2V0SGFzQ3VzdG9tUmVnaW9uU3R5bGUoYm9vbCBoYXNDdXN0b21SZWdp
b25TdHlsZSkgeyBtX2hhc0N1c3RvbVJlZ2lvblN0eWxlID0gaGFzQ3VzdG9tUmVnaW9uU3R5bGU7
IH0KIAotICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKTsKLQogICAgIFJlbmRlckJveFJlZ2lvbklu
Zm8qIHJlbmRlckJveFJlZ2lvbkluZm8oY29uc3QgUmVuZGVyQm94KikgY29uc3Q7CiAgICAgUmVu
ZGVyQm94UmVnaW9uSW5mbyogc2V0UmVuZGVyQm94UmVnaW9uSW5mbyhjb25zdCBSZW5kZXJCb3gq
LCBMYXlvdXRVbml0IGxvZ2ljYWxMZWZ0SW5zZXQsIExheW91dFVuaXQgbG9naWNhbFJpZ2h0SW5z
ZXQsCiAgICAgICAgIGJvb2wgY29udGFpbmluZ0Jsb2NrQ2hhaW5Jc0luc2V0KTsKQEAgLTEwMCw4
ICs5Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIExheW91dFVuaXQgcGFnZUxvZ2ljYWxIZWln
aHQoKSBjb25zdDsKICAgICBMYXlvdXRVbml0IG1heFBhZ2VMb2dpY2FsSGVpZ2h0KCkgY29uc3Q7
CiAKLSAgICB2aXJ0dWFsIExheW91dFVuaXQgbWluUHJlZmVycmVkTG9naWNhbFdpZHRoKCkgY29u
c3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBMYXlvdXRVbml0IG1heFByZWZlcnJlZExvZ2ljYWxX
aWR0aCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlUHJlZmVycmVk
TG9naWNhbFdpZHRocygpIE9WRVJSSURFOwogICAgIAogICAgIExheW91dFVuaXQgbG9naWNhbFRv
cE9mRmxvd1RocmVhZENvbnRlbnRSZWN0KGNvbnN0IExheW91dFJlY3QmKSBjb25zdDsKICAgICBM
YXlvdXRVbml0IGxvZ2ljYWxCb3R0b21PZkZsb3dUaHJlYWRDb250ZW50UmVjdChjb25zdCBMYXlv
dXRSZWN0JikgY29uc3Q7CkBAIC0xNDEsMTIgKzEzNyw3IEBAIHByb3RlY3RlZDoKIAogcHJpdmF0
ZToKICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCB7IHJldHVybiAi
UmVuZGVyUmVnaW9uIjsgfQotCi0gICAgLy8gRklYTUU6IHRoZXNlIGZ1bmN0aW9ucyBzaG91bGQg
YmUgcmV2aXNpdGVkIG9uY2UgUmVuZGVyUmVnaW9uIGluaGVyaXRzIGZyb20gUmVuZGVyQmxvY2sK
LSAgICAvLyBpbnN0ZWFkIG9mIFJlbmRlclJlcGxhY2VkIChzZWUgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTc0MTMyICkKLSAgICAvLyBXaGVuIHdpZHRoIGlzIGF1dG8s
IHVzZSBub3JtYWwgYmxvY2svYm94IHNpemluZyBjb2RlIGV4Y2VwdCB3aGVuIGlubGluZS4KLSAg
ICB2aXJ0dWFsIGJvb2wgaXNJbmxpbmVCbG9ja09ySW5saW5lVGFibGUoKSBjb25zdCBPVkVSUklE
RSB7IHJldHVybiBpc0lubGluZSgpICYmICFzaG91bGRDb21wdXRlU2l6ZUFzUmVwbGFjZWQoKTsg
fQotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDb21wdXRlU2l6ZUFzUmVwbGFjZWQoKSBjb25zdCBP
VkVSUklERSB7IHJldHVybiAhc3R5bGUoKS0+bG9naWNhbFdpZHRoKCkuaXNBdXRvKCkgJiYgIXN0
eWxlKCktPmxvZ2ljYWxIZWlnaHQoKS5pc0F1dG8oKTsgfQorICAgIHZpcnR1YWwgYm9vbCBjYW5I
YXZlQ2hpbGRyZW4oKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgYm9v
bCBzaG91bGRIYXZlQXV0b0xvZ2ljYWxIZWlnaHQoKSBjb25zdAogICAgIHsKQEAgLTE1OCw2ICsx
NDksOSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRlZEludG9UcmVlKCkgT1ZF
UlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxCZVJlbW92ZWRGcm9tVHJlZSgpIE9WRVJSSURF
OwogCisgICAgdmlydHVhbCB2b2lkIGxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwg
TGF5b3V0VW5pdCBwYWdlTG9naWNhbEhlaWdodCA9IDApIE9WRVJSSURFOworICAgIHZpcnR1YWwg
dm9pZCBwYWludE9iamVjdChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpIE9WRVJSSURF
OworCiAgICAgdmlydHVhbCB2b2lkIGluc3RhbGxGbG93VGhyZWFkKCk7CiAKICAgICBQYXNzUmVm
UHRyPFJlbmRlclN0eWxlPiBjb21wdXRlU3R5bGVJblJlZ2lvbihjb25zdCBSZW5kZXJPYmplY3Qq
KTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>188534</attachid>
            <date>2013-02-15 04:14:51 -0800</date>
            <delta_ts>2013-02-15 05:01:44 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-74132-20130215141118.patch</filename>
            <type>text/plain</type>
            <size>21608</size>
            <attacher name="Mihnea Ovidenie">mihnea</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyOTc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTlhOWZkNmI3ZWVhYmQ2
OWYyNzgzYzdkY2QxY2M3MDI2Njk4ZGNjNC4uNzYyMzFjZWYzOWFmYWViYmQ4ZGYwYjFhNzhlMzA4
OWM3NGEyMThkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDEzLTAyLTE1ICBNaWhu
ZWEgT3ZpZGVuaWUgIDxtaWhuZWFAYWRvYmUuY29tPgorCisgICAgICAgIFtDU1MgUmVnaW9uc10g
UmVuZGVyUmVnaW9uIHNob3VsZCBpbmhlcml0IGZyb20gUmVuZGVyQmxvY2sKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc0MTMyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgSnVsaWVuIENoYWZmcmFpeC4KKworICAgICAgICBDaGFuZ2UgdGhlIGJhc2UgY2xh
c3MgZm9yIFJlbmRlclJlZ2lvbiB0byBiZSBSZW5kZXJCbG9jayBpbnN0ZWFkIG9mIFJlbmRlclJl
cGxhY2VkLgorICAgICAgICBQZXIgc3BlYyBodHRwOi8vZGV2LnczLm9yZy9jc3N3Zy9jc3MzLXJl
Z2lvbnMvI3RoZS1mbG93LWZyb20tcHJvcGVydHksIGEgcmVnaW9uIGlzIGEgbm9uLXJlcGxhY2Vk
IGJsb2NrIGNvbnRhaW5lci4KKyAgICAgICAgVGhpcyBjaGFuZ2UgaXMgY292ZXJlZCBieSB0aGUg
ZXhpc3RpbmcgcmVnaW9ucyB0ZXN0cyAoaW4gZmFzdC9yZWdpb24gYW5kIGZhc3QvcmVwYWludCku
CisKKyAgICAgICAgVGhlIFJlbmRlckZsb3dUaHJlYWQgb2JqZWN0IGlzIGEgc2VsZi1wYWludGlu
ZyBsYXllciAoaXQgcmVxdWlyZXMgbGF5ZXIgYW5kIGlzIHBvc2l0aW9uZWQpLgorICAgICAgICBC
ZWNhdXNlIG9mIHRoYXQsIHRoZSBSZW5kZXJGbG93VGhyZWFkIG9iamVjdCBpcyByZXNwb25zaWJs
ZSBmb3IgcGFpbnRpbmcgaXRzIGNoaWxkcmVuLAorICAgICAgICB0aGUgY29sbGVjdGVkIG9iamVj
dHMuIFdoZW4gdGhlIFJlbmRlclJlZ2lvbjo6cGFpbnRPYmplY3QgaXMgY2FsbGVkIGR1cmluZyBw
YWludCwgaXQgZGVsZWdhdGVzIHBhaW50aW5nCisgICAgICAgIG9mIGNvbnRlbnQgY29sbGVjdGVk
IGluc2lkZSB0aGUgZmxvdyB0aHJlYWQgdG8gdGhlIGFzc29jaWF0ZWQgUmVuZGVyRmxvd1RocmVh
ZCBvYmplY3QuCisgICAgICAgIFNpbmNlIHdlIGRvIG5vdCB3YW50IHRvIHBhaW50IHRoZSBmbG93
IHRocmVhZCBjb250ZW50IG11bHRpcGxlIHRpbWVzIChmb3IgZWFjaCBwYWludCBwaGFzZQorICAg
ICAgICBpbiB3aGljaCB0aGUgUmVuZGVyUmVnaW9uOjpwYWludE9iamVjdCBpcyBjYWxsZWQpLCB3
ZSBhbGxvdyBSZW5kZXJGbG93VGhyZWFkIHBhaW50aW5nIG9ubHkgZm9yCisgICAgICAgIHNlbGVj
dGlvbiBhbmQgZm9yZWdyb3VuZCBwYWludCBwaGFzZXMuCisKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyQm94LmNwcDogQ2xlYW4tdXAgdGhlIGNvZGUgZnJvbSByZWdpb25zIHNwZWNpZmljIHN0
dWZmLCBub3cgdGhhdCB0aGUgcmVnaW9ucyBhcmUgcmVuZGVyIGJsb2Nrcy4KKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJveDo6Y29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsV2lkdGgpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxIZWlnaHQpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwOiBBIHJlZ2lvbiBzaG91
bGQgYWx3YXlzIHJlbmRlciBjb250ZW50IGZyb20gaXRzIGFzc29jaWF0ZWQgZmxvdyB0aHJlYWQs
CisgICAgICAgIGV2ZW4gd2hlbiBpdCBkb2VzIG5vdCBoYXZlIGNoaWxkcmVuIG9mIGl0cyBvd24u
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OmlzU2ltcGxlQ29udGFpbmVy
Q29tcG9zaXRpbmdMYXllcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1u
U2V0LmNwcDogTWFrZSBjaGFuZ2VzIHRvIG1hdGNoIHRoZSBuZXcgaW5oZXJpdGFuY2UgZm9yIFJl
bmRlclJlZ2lvbi4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck11bHRpQ29sdW1uU2V0OjpwYWlu
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNdWx0aUNvbHVtblNldDo6cGFpbnRDb2x1bW5S
dWxlcyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0Lmg6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJSZWdpb246OlJlbmRlclJlZ2lvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSZWdpb246
OnBhaW50T2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclJlZ2lvbjo6c3R5bGVEaWRD
aGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUmVnaW9uOjpsYXlvdXRCbG9jayk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJSZWdpb246Omluc2VydGVkSW50b1RyZWUpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyUmVnaW9uOjp3aWxsQmVSZW1vdmVkRnJvbVRyZWUpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyUmVnaW9uOjpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocyk6
IFVzZSB0aGlzIG1ldGhvZCBpbnN0ZWFkIG9mIG1pbi9tYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGgu
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSZWdpb246OnVwZGF0ZUxvZ2ljYWxIZWlnaHQpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJSZWdpb24uaDogRm9yIG5vdywgYXNzdW1lIHRoZSBy
ZWdpb24gaXMgbm90IGFsbG93ZWQgdG8gaGF2ZSBjaGlsZHJlbi4KKyAgICAgICAgV2hlbiB3ZSB3
aWxsIGltcGxlbWVudCB0aGUgcHJvY2Vzc2luZyBtb2RlbCBmb3IgcHNldWRvLWVsZW1lbnRzIGh0
dHA6Ly9kZXYudzMub3JnL2Nzc3dnL2NzczMtcmVnaW9ucy8jcHJvY2Vzc2luZy1tb2RlbCwKKyAg
ICAgICAgd2Ugd2lsbCBoYXZlIHRvIHJlbW92ZSB0aGlzIGZ1bmN0aW9uLiBCeSBoYXZpbmcgdGhp
cyBmdW5jdGlvbiByZXR1cm4gZmFsc2UgaSB3YXMgYWJsZSB0byBsZWF2ZSBzb21lIHRlc3RzIHVu
Y2hhbmdlZC4KKwogMjAxMy0wMi0xNCAgQWxleGFuZGVyIFBhdmxvdiAgPGFwYXZsb3ZAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IEltcGxlbWVudCB0cmFja2luZyBvZiBh
Y3RpdmUgc3R5bGVzaGVldHMgaW4gdGhlIGZyb250ZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCb3guY3BwCmluZGV4IGExMDE4NGQ3NGM4MWJkZjNlNjM0ZTdiNGQzMjAyNTdjMzUzYzg4
MTMuLjQxNjE3ODFhMTY5MWExOTMzNTgwZjE0N2JjZTQzMDA3ZTc4OGMxYmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCkBAIC0yOTI1LDE0ICsyOTI1LDEwIEBAIHN0YXRp
YyB2b2lkIGNvbXB1dGVJbmxpbmVTdGF0aWNEaXN0YW5jZShMZW5ndGgmIGxvZ2ljYWxMZWZ0LCBM
ZW5ndGgmIGxvZ2ljYWxSaWdoCiB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZVBvc2l0aW9uZWRMb2dp
Y2FsV2lkdGgoTG9naWNhbEV4dGVudENvbXB1dGVkVmFsdWVzJiBjb21wdXRlZFZhbHVlcywgUmVu
ZGVyUmVnaW9uKiByZWdpb24sIExheW91dFVuaXQgb2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0
UGFnZSkgY29uc3QKIHsKICAgICBpZiAoaXNSZXBsYWNlZCgpKSB7Ci0gICAgICAgIC8vIEZJWE1F
OiBGb3IgcmVnaW9ucyB3aXRoIHdpZHRoIGF1dG8sIHdlIHdhbnQgdG8gY29tcHV0ZSB3aWR0aCB1
c2luZyB0aGUgbm9ybWFsIGJsb2NrIHNpemluZyBjb2RlLgotICAgICAgICAvLyBGb3Igbm93LCBy
ZWdpb25zIGFyZSByZXBsYWNlZCBlbGVtZW50cyBhbmQgdGhpcyBjb2RlIGNhbiBiZSByZW1vdmVk
IG9uY2UgdGhlIFJlbmRlclJlZ2lvbgotICAgICAgICAvLyB3aWxsIGluaGVyaXQgZnJvbSBSZW5k
ZXJCbG9jayBpbnN0ZWFkIG9mIFJlbmRlclJlcGxhY2VkLgotICAgICAgICAvLyAoc2VlIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDEzMiApCi0gICAgICAgIGlmICgh
aXNSZW5kZXJSZWdpb24oKSB8fCAoaXNSZW5kZXJSZWdpb24oKSAmJiBzaG91bGRDb21wdXRlU2l6
ZUFzUmVwbGFjZWQoKSkpIHsKLSAgICAgICAgICAgIGNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbFdp
ZHRoUmVwbGFjZWQoY29tcHV0ZWRWYWx1ZXMpOyAvLyBGSVhNRTogUGF0Y2ggZm9yIHJlZ2lvbnMg
d2hlbiB3ZSBhZGQgcmVwbGFjZWQgZWxlbWVudCBzdXBwb3J0LgotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICB9CisgICAgICAgIC8vIEZJWE1FOiBQb3NpdGlvbmVkIHJlcGxhY2VkIGVsZW1l
bnRzIGluc2lkZSBhIGZsb3cgdGhyZWFkIGFyZSBub3Qgd29ya2luZyBwcm9wZXJseQorICAgICAg
ICAvLyB3aXRoIHZhcmlhYmxlIHdpZHRoIHJlZ2lvbnMgKHNlZSBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njk4OTYgKS4KKyAgICAgICAgY29tcHV0ZVBvc2l0aW9uZWRM
b2dpY2FsV2lkdGhSZXBsYWNlZChjb21wdXRlZFZhbHVlcyk7CisgICAgICAgIHJldHVybjsKICAg
ICB9CiAKICAgICAvLyBRVUVTVElPTlMKQEAgLTMyNzUsMTQgKzMyNzEsOCBAQCBzdGF0aWMgdm9p
ZCBjb21wdXRlQmxvY2tTdGF0aWNEaXN0YW5jZShMZW5ndGgmIGxvZ2ljYWxUb3AsIExlbmd0aCYg
bG9naWNhbEJvdHRvbQogdm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbEhl
aWdodChMb2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1ZXMmIGNvbXB1dGVkVmFsdWVzKSBjb25zdAog
ewogICAgIGlmIChpc1JlcGxhY2VkKCkpIHsKLSAgICAgICAgLy8gRklYTUU6IEZvciByZWdpb25z
IHdpdGggaGVpZ2h0IGF1dG8sIHdlIHdhbnQgdG8gY29tcHV0ZSB3aWR0aCB1c2luZyB0aGUgbm9y
bWFsIGJsb2NrIHNpemluZyBjb2RlLgotICAgICAgICAvLyBGb3Igbm93LCByZWdpb25zIGFyZSBy
ZXBsYWNlZCBlbGVtZW50cyBhbmQgdGhpcyBjb2RlIGNhbiBiZSByZW1vdmVkIG9uY2UgdGhlIFJl
bmRlclJlZ2lvbgotICAgICAgICAvLyB3aWxsIGluaGVyaXQgZnJvbSBSZW5kZXJCbG9jayBpbnN0
ZWFkIG9mIFJlbmRlclJlcGxhY2VkLgotICAgICAgICAvLyAoc2VlIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDEzMiApCi0gICAgICAgIGlmICghaXNSZW5kZXJSZWdp
b24oKSB8fCAoaXNSZW5kZXJSZWdpb24oKSAmJiBzaG91bGRDb21wdXRlU2l6ZUFzUmVwbGFjZWQo
KSkpIHsKLSAgICAgICAgICAgIGNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbEhlaWdodFJlcGxhY2Vk
KGNvbXB1dGVkVmFsdWVzKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQorICAgICAg
ICBjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxIZWlnaHRSZXBsYWNlZChjb21wdXRlZFZhbHVlcyk7
CisgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICAvLyBUaGUgZm9sbG93aW5nIGlzIGJhc2Vk
IG9mZiBvZiB0aGUgVzNDIFdvcmtpbmcgRHJhZnQgZnJvbSBBcHJpbCAxMSwgMjAwNiBvZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAppbmRleCA0
ODE0ZmQzZDc3OTcxM2FhZGVlOWMyMmZiN2VjOGNlMDRiMzYyM2ZmLi5lZDRhZDdiMDRjOWYzMmU0
ZTJmODcwMjA0NGIyMDQzOTYzMTQ5ODM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcApAQCAtMTQwMCw3ICsxNDAwLDEwIEBAIGJvb2wgUmVu
ZGVyTGF5ZXJCYWNraW5nOjppc1NpbXBsZUNvbnRhaW5lckNvbXBvc2l0aW5nTGF5ZXIoKSBjb25z
dAogICAgIAogICAgIGlmIChwYWludHNCb3hEZWNvcmF0aW9ucygpIHx8IHBhaW50c0NoaWxkcmVu
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKKworICAgIGlmIChyZW5kZXJPYmplY3Qt
PmlzUmVuZGVyUmVnaW9uKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIGlmIChyZW5k
ZXJPYmplY3QtPm5vZGUoKSAmJiByZW5kZXJPYmplY3QtPm5vZGUoKS0+aXNEb2N1bWVudE5vZGUo
KSkgewogICAgICAgICAvLyBMb29rIHRvIHNlZSBpZiB0aGUgcm9vdCBvYmplY3QgaGFzIGEgbm9u
LXNpbXBsZSBiYWNrZ3JvdW5kCiAgICAgICAgIFJlbmRlck9iamVjdCogcm9vdE9iamVjdCA9IHJl
bmRlck9iamVjdC0+ZG9jdW1lbnQoKS0+ZG9jdW1lbnRFbGVtZW50KCkgPyByZW5kZXJPYmplY3Qt
PmRvY3VtZW50KCktPmRvY3VtZW50RWxlbWVudCgpLT5yZW5kZXJlcigpIDogMDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuY3BwCmluZGV4IDFk
OTA1YzQ2MDIxMDlmNmFiNDYwNmY1NTZiMzZlZGVmMDlhYjIzMTMuLjhhYWFmNjI5YmNlNWFlOTYx
M2JlODA3YmFmYWMwNDZjODAyNzViMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck11bHRpQ29sdW1uU2V0LmNwcApAQCAtMjgsOCArMjgsOCBAQAogCiAjaW5jbHVk
ZSAiSGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIlBhaW50SW5mby5oIgotI2luY2x1ZGUgIlJl
bmRlck11bHRpQ29sdW1uRmxvd1RocmVhZC5oIgogI2luY2x1ZGUgIlJlbmRlck11bHRpQ29sdW1u
QmxvY2suaCIKKyNpbmNsdWRlICJSZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQuaCIKIAogdXNp
bmcgc3RkOjptaW47CiB1c2luZyBzdGQ6Om1heDsKQEAgLTIwNSw3ICsyMDUsNyBAQCBMYXlvdXRS
ZWN0IFJlbmRlck11bHRpQ29sdW1uU2V0OjpmbG93VGhyZWFkUG9ydGlvbk92ZXJmbG93UmVjdChj
b25zdCBMYXlvdXRSZWN0JgogICAgIHJldHVybiBvdmVyZmxvd1JlY3RGb3JGbG93VGhyZWFkUG9y
dGlvbihvdmVyZmxvd1JlY3QsIGlzRmlyc3RSZWdpb24oKSAmJiBpc0ZpcnN0Q29sdW1uLCBpc0xh
c3RSZWdpb24oKSAmJiBpc0xhc3RDb2x1bW4pOwogfQogCi12b2lkIFJlbmRlck11bHRpQ29sdW1u
U2V0OjpwYWludFJlcGxhY2VkKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2lu
dCYgcGFpbnRPZmZzZXQpCit2b2lkIFJlbmRlck11bHRpQ29sdW1uU2V0OjpwYWludChQYWludElu
Zm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogewogICAgIC8v
IEZJWE1FOiBSZW5kZXJSZWdpb25zIGFyZSByZXBsYWNlZCBlbGVtZW50cyByaWdodCBub3cgYW5k
IHNvIHRoZXkgb25seSBwYWludCBpbiB0aGUgZm9yZWdyb3VuZCBwaGFzZS4KICAgICAvLyBDb2x1
bW5zIHNob3VsZCB0ZWNobmljYWxseSByZXNwZWN0IHBoYXNlcyBhbmQgYWxsb3cgZm9yIGJhY2tn
cm91bmQvZmxvYXQvZm9yZWdyb3VuZCBvdmVybGFwIGV0Yy4sIGp1c3QgbGlrZQpAQCAtMjU4LDcg
KzI1OCw3IEBAIHZvaWQgUmVuZGVyTXVsdGlDb2x1bW5TZXQ6OnBhaW50Q29sdW1uUnVsZXMoUGFp
bnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvCiAgICAgICAgICAgICBydWxlTG9naWNh
bExlZnQgLT0gKGlubGluZURpcmVjdGlvblNpemUgKyBjb2xHYXAgLyAyKTsKICAgICAgICAgICAg
IGN1cnJMb2dpY2FsTGVmdE9mZnNldCAtPSAoaW5saW5lRGlyZWN0aW9uU2l6ZSArIGNvbEdhcCk7
CiAgICAgICAgIH0KLSAgICAgICAKKwogICAgICAgICAvLyBOb3cgcGFpbnQgdGhlIGNvbHVtbiBy
dWxlLgogICAgICAgICBpZiAoaSA8IGNvbENvdW50IC0gMSkgewogICAgICAgICAgICAgTGF5b3V0
VW5pdCBydWxlTGVmdCA9IGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBwYWludE9mZnNldC54
KCkgKyBydWxlTG9naWNhbExlZnQgLSBydWxlVGhpY2tuZXNzIC8gMiArIHJ1bGVBZGQgOiBwYWlu
dE9mZnNldC54KCkgKyBib3JkZXJMZWZ0KCkgKyBwYWRkaW5nTGVmdCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuaAppbmRleCAzYTRjZGQ5NjJl
ZGY4MzRmZWU0OGMwMDJiZjI4MzBiZDY2Y2UzMzEyLi5iZDk4MGI1MWUzZDI2NDI2OWM2NzQ3ODdi
Y2JmMDQ2ZTgyYWM4NjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTXVsdGlDb2x1bW5TZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TXVsdGlDb2x1bW5TZXQuaApAQCAtOTQsNyArOTQsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwg
dm9pZCB1cGRhdGVMb2dpY2FsSGVpZ2h0KCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGNv
bXB1dGVMb2dpY2FsSGVpZ2h0KExheW91dFVuaXQgbG9naWNhbEhlaWdodCwgTGF5b3V0VW5pdCBs
b2dpY2FsVG9wLCBMb2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1ZXMmKSBjb25zdCBPVkVSUklERTsK
IAotICAgIHZpcnR1YWwgdm9pZCBwYWludFJlcGxhY2VkKFBhaW50SW5mbyYsIGNvbnN0IExheW91
dFBvaW50JiBwYWludE9mZnNldCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHBhaW50KFBh
aW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCBib29sIG5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJl
c3VsdCYsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVs
YXRlZE9mZnNldCwgSGl0VGVzdEFjdGlvbikgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIExheW91
dFVuaXQgcGFnZUxvZ2ljYWxXaWR0aCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fY29tcHV0
ZWRDb2x1bW5XaWR0aDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclJlZ2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmNw
cAppbmRleCA5NjMxNTZhNTYzNTU1NTZhNDlkNzQxODJhNTA2MmE3ODYzMjY3NTdkLi5iOTdjNTk2
NDg0NGU5ZjNkMTRmMDkyMWUxNGJkODhhZDhmNDdmZGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyUmVnaW9uLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkdyYXBo
aWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJJbnRS
ZWN0LmgiCisjaW5jbHVkZSAiTGF5b3V0UmVwYWludGVyLmgiCiAjaW5jbHVkZSAiUGFpbnRJbmZv
LmgiCiAjaW5jbHVkZSAiUmFuZ2UuaCIKICNpbmNsdWRlICJSZW5kZXJCb3hSZWdpb25JbmZvLmgi
CkBAIC00NCw3ICs0NSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFJlbmRlclJlZ2lvbjo6
UmVuZGVyUmVnaW9uKEVsZW1lbnQqIGVsZW1lbnQsIFJlbmRlckZsb3dUaHJlYWQqIGZsb3dUaHJl
YWQpCi0gICAgOiBSZW5kZXJSZXBsYWNlZChlbGVtZW50LCBJbnRTaXplKCkpCisgICAgOiBSZW5k
ZXJCbG9jayhlbGVtZW50KQogICAgICwgbV9mbG93VGhyZWFkKGZsb3dUaHJlYWQpCiAgICAgLCBt
X3BhcmVudE5hbWVkRmxvd1RocmVhZCgwKQogICAgICwgbV9pc1ZhbGlkKGZhbHNlKQpAQCAtMTM1
LDEwICsxMzYsMTggQEAgYm9vbCBSZW5kZXJSZWdpb246OmlzTGFzdFJlZ2lvbigpIGNvbnN0CiAg
ICAgcmV0dXJuIG1fZmxvd1RocmVhZC0+bGFzdFJlZ2lvbigpID09IHRoaXM7CiB9CiAKLXZvaWQg
UmVuZGVyUmVnaW9uOjpwYWludFJlcGxhY2VkKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBM
YXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCit2b2lkIFJlbmRlclJlZ2lvbjo6cGFpbnRPYmplY3Qo
UGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKIHsK
KyAgICBpZiAoc3R5bGUoKS0+dmlzaWJpbGl0eSgpICE9IFZJU0lCTEUpCisgICAgICAgIHJldHVy
bjsKKworICAgIFJlbmRlckJsb2NrOjpwYWludE9iamVjdChwYWludEluZm8sIHBhaW50T2Zmc2V0
KTsKKwogICAgIC8vIERlbGVnYXRlIHBhaW50aW5nIG9mIGNvbnRlbnQgaW4gcmVnaW9uIHRvIFJl
bmRlckZsb3dUaHJlYWQuCi0gICAgaWYgKCFtX2Zsb3dUaHJlYWQgfHwgIWlzVmFsaWQoKSkKKyAg
ICAvLyBSZW5kZXJGbG93VGhyZWFkIGlzIGEgc2VsZiBwYWludGluZyBsYXllciAoYmVpbmcgYSBw
b3NpdGlvbmVkIG9iamVjdCkgd2hvIGlzIHBhaW50aW5nIGl0cyBjaGlsZHJlbiwgdGhlIGNvbGxl
Y3RlZCBvYmplY3RzLgorICAgIC8vIFNpbmNlIHdlIGRvIG5vdCB3YW50IHRvIHBhaW50IHRoZSBm
bG93IHRocmVhZCBjb250ZW50IG11bHRpcGxlIHRpbWVzIChmb3IgZWFjaCBwYWludGluZyBwaGFz
ZSBvZiB0aGUgcmVnaW9uIG9iamVjdCksCisgICAgLy8gd2UgYWxsb3cgdGhlIGZsb3cgdGhyZWFk
IHBhaW50aW5nIG9ubHkgZm9yIHRoZSBzZWxlY3Rpb24gYW5kIHRoZSBmb3JlZ3JvdW5kIHBoYXNl
LgorICAgIGlmICghbV9mbG93VGhyZWFkIHx8ICFpc1ZhbGlkKCkgfHwgKHBhaW50SW5mby5waGFz
ZSAhPSBQYWludFBoYXNlRm9yZWdyb3VuZCAmJiBwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFz
ZVNlbGVjdGlvbikpCiAgICAgICAgIHJldHVybjsKIAogICAgIHNldFJlZ2lvbk9iamVjdHNSZWdp
b25TdHlsZSgpOwpAQCAtMjIzLDcgKzIzMiw3IEBAIHZvaWQgUmVuZGVyUmVnaW9uOjp1cGRhdGVS
ZWdpb25IYXNBdXRvTG9naWNhbEhlaWdodEZsYWcoKQogCiB2b2lkIFJlbmRlclJlZ2lvbjo6c3R5
bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRT
dHlsZSkKIHsKLSAgICBSZW5kZXJSZXBsYWNlZDo6c3R5bGVEaWRDaGFuZ2UoZGlmZiwgb2xkU3R5
bGUpOworICAgIFJlbmRlckJsb2NrOjpzdHlsZURpZENoYW5nZShkaWZmLCBvbGRTdHlsZSk7CiAK
ICAgICAvLyBJZiB0aGUgcmVnaW9uIGlzIG5vdCBhdHRhY2hlZCB0byBhbnkgdGhyZWFkLCB0aGVy
ZSBpcyBubyBuZWVkIHRvIGNoZWNrCiAgICAgLy8gd2hldGhlciB0aGUgcmVnaW9uIGhhcyByZWdp
b24gc3R5bGluZyBzaW5jZSBubyBjb250ZW50IHdpbGwgYmUgZGlzcGxheWVkCkBAIC0yMzcsMTAg
KzI0NiwxMSBAQCB2b2lkIFJlbmRlclJlZ2lvbjo6c3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJl
bmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdAogICAgIHVwZGF0ZVJlZ2lvbkhhc0F1
dG9Mb2dpY2FsSGVpZ2h0RmxhZygpOwogfQogCi12b2lkIFJlbmRlclJlZ2lvbjo6bGF5b3V0KCkK
K3ZvaWQgUmVuZGVyUmVnaW9uOjpsYXlvdXRCbG9jayhib29sIHJlbGF5b3V0Q2hpbGRyZW4sIExh
eW91dFVuaXQpCiB7CiAgICAgU3RhY2tTdGF0czo6TGF5b3V0Q2hlY2tQb2ludCBsYXlvdXRDaGVj
a1BvaW50OwotICAgIFJlbmRlclJlcGxhY2VkOjpsYXlvdXQoKTsKKyAgICBSZW5kZXJCbG9jazo6
bGF5b3V0QmxvY2socmVsYXlvdXRDaGlsZHJlbik7CisKICAgICBpZiAobV9mbG93VGhyZWFkICYm
IGlzVmFsaWQoKSkgewogICAgICAgICBMYXlvdXRSZWN0IG9sZFJlZ2lvblJlY3QoZmxvd1RocmVh
ZFBvcnRpb25SZWN0KCkpOwogICAgICAgICBpZiAoIWlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkp
CkBAIC00ODMsMTQgKzQ5MywxNCBAQCB2b2lkIFJlbmRlclJlZ2lvbjo6cmVzdG9yZVJlZ2lvbk9i
amVjdHNPcmlnaW5hbFN0eWxlKCkKIAogdm9pZCBSZW5kZXJSZWdpb246Omluc2VydGVkSW50b1Ry
ZWUoKQogewotICAgIFJlbmRlclJlcGxhY2VkOjppbnNlcnRlZEludG9UcmVlKCk7CisgICAgUmVu
ZGVyQmxvY2s6Omluc2VydGVkSW50b1RyZWUoKTsKIAogICAgIGF0dGFjaFJlZ2lvbigpOwogfQog
CiB2b2lkIFJlbmRlclJlZ2lvbjo6d2lsbEJlUmVtb3ZlZEZyb21UcmVlKCkKIHsKLSAgICBSZW5k
ZXJSZXBsYWNlZDo6d2lsbEJlUmVtb3ZlZEZyb21UcmVlKCk7CisgICAgUmVuZGVyQmxvY2s6Ondp
bGxCZVJlbW92ZWRGcm9tVHJlZSgpOwogCiAgICAgZGV0YWNoUmVnaW9uKCk7CiB9CkBAIC01NzAs
NDQgKzU4MCwyOSBAQCB2b2lkIFJlbmRlclJlZ2lvbjo6Y2xlYXJPYmplY3RTdHlsZUluUmVnaW9u
KGNvbnN0IFJlbmRlck9iamVjdCogb2JqZWN0KQogICAgICAgICBjbGVhck9iamVjdFN0eWxlSW5S
ZWdpb24oY2hpbGQpOwogfQogCi0vLyBGSVhNRTogd2hlbiBSZW5kZXJSZWdpb24gd2lsbCBpbmhl
cml0IGZyb20gUmVuZGVyQmxvY2sgaW5zdGVhZCBvZiBSZW5kZXJSZXBsYWNlZCwKLS8vIHdlIHNo
b3VsZCBvdmVyd3JpdGUgY29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMgKCBzZWUgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc0MTMyICkKLUxheW91dFVuaXQgUmVu
ZGVyUmVnaW9uOjptaW5QcmVmZXJyZWRMb2dpY2FsV2lkdGgoKSBjb25zdAordm9pZCBSZW5kZXJS
ZWdpb246OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkKIHsKLSAgICBpZiAoIW1fZmxv
d1RocmVhZCB8fCAhbV9pc1ZhbGlkKQotICAgICAgICByZXR1cm4gUmVuZGVyUmVwbGFjZWQ6Om1p
blByZWZlcnJlZExvZ2ljYWxXaWR0aCgpOwotCi0gICAgLy8gRklYTUU6IEN1cnJlbnRseSwgdGhl
IGNvZGUgaGFuZGxlcyBvbmx5IHRoZSA8bGVuZ3RoPiBjYXNlIGZvciBtaW4td2lkdGguIEl0IHNo
b3VsZCBhbHNvIHN1cHBvcnQgb3RoZXIgdmFsdWVzLCBsaWtlIHBlcmNlbnRhZ2UsIGNhbGMKLSAg
ICAvLyBvciB2aWV3cG9ydCByZWxhdGl2ZS4KLSAgICBSZW5kZXJTdHlsZSogc3R5bGVUb1VzZSA9
IHN0eWxlKCk7Ci0gICAgTGF5b3V0VW5pdCBtaW5QcmVmZXJyZWRMb2dpY2FsV2lkdGggPSBtX2Zs
b3dUaHJlYWQtPm1pblByZWZlcnJlZExvZ2ljYWxXaWR0aCgpOwotCi0gICAgaWYgKHN0eWxlVG9V
c2UtPmxvZ2ljYWxNaW5XaWR0aCgpLmlzRml4ZWQoKSAmJiBzdHlsZVRvVXNlLT5sb2dpY2FsTWlu
V2lkdGgoKS52YWx1ZSgpID4gMCkKLSAgICAgICAgbWluUHJlZmVycmVkTG9naWNhbFdpZHRoID0g
c3RkOjptYXgobWluUHJlZmVycmVkTG9naWNhbFdpZHRoLCBhZGp1c3RDb250ZW50Qm94TG9naWNh
bFdpZHRoRm9yQm94U2l6aW5nKHN0eWxlVG9Vc2UtPmxvZ2ljYWxNaW5XaWR0aCgpLnZhbHVlKCkp
KTsKLQotICAgIGlmIChzdHlsZVRvVXNlLT5sb2dpY2FsTWF4V2lkdGgoKS5pc0ZpeGVkKCkpCi0g
ICAgICAgIG1pblByZWZlcnJlZExvZ2ljYWxXaWR0aCA9IHN0ZDo6bWluKG1pblByZWZlcnJlZExv
Z2ljYWxXaWR0aCwgYWRqdXN0Q29udGVudEJveExvZ2ljYWxXaWR0aEZvckJveFNpemluZyhzdHls
ZVRvVXNlLT5sb2dpY2FsTWF4V2lkdGgoKS52YWx1ZSgpKSk7Ci0KLSAgICByZXR1cm4gbWluUHJl
ZmVycmVkTG9naWNhbFdpZHRoICsgYm9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxXaWR0aCgpOwotfQor
ICAgIEFTU0VSVChwcmVmZXJyZWRMb2dpY2FsV2lkdGhzRGlydHkoKSk7CisgICAgaWYgKCFtX2Zs
b3dUaHJlYWQgfHwgIW1faXNWYWxpZCkgeworICAgICAgICBSZW5kZXJCbG9jazo6Y29tcHV0ZVBy
ZWZlcnJlZExvZ2ljYWxXaWR0aHMoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAotTGF5b3V0
VW5pdCBSZW5kZXJSZWdpb246Om1heFByZWZlcnJlZExvZ2ljYWxXaWR0aCgpIGNvbnN0Ci17Ci0g
ICAgaWYgKCFtX2Zsb3dUaHJlYWQgfHwgIW1faXNWYWxpZCkKLSAgICAgICAgcmV0dXJuIFJlbmRl
clJlcGxhY2VkOjptYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGgoKTsKKyAgICAvLyBGSVhNRTogQ3Vy
cmVudGx5LCB0aGUgY29kZSBoYW5kbGVzIG9ubHkgdGhlIDxsZW5ndGg+IGNhc2UgZm9yIG1pbi13
aWR0aC9tYXgtd2lkdGguCisgICAgLy8gSXQgc2hvdWxkIGFsc28gc3VwcG9ydCBvdGhlciB2YWx1
ZXMsIGxpa2UgcGVyY2VudGFnZSwgY2FsYyBvciB2aWV3cG9ydCByZWxhdGl2ZS4KKyAgICBtX21p
blByZWZlcnJlZExvZ2ljYWxXaWR0aCA9IG1fZmxvd1RocmVhZC0+bWluUHJlZmVycmVkTG9naWNh
bFdpZHRoKCk7CisgICAgbV9tYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGggPSBtX2Zsb3dUaHJlYWQt
Pm1heFByZWZlcnJlZExvZ2ljYWxXaWR0aCgpOwogCi0gICAgLy8gRklYTUU6IEN1cnJlbnRseSwg
dGhlIGNvZGUgaGFuZGxlcyBvbmx5IHRoZSA8bGVuZ3RoPiBjYXNlIGZvciBtYXgtd2lkdGguIEl0
IHNob3VsZCBhbHNvIHN1cHBvcnQgb3RoZXIgdmFsdWVzLCBsaWtlIHBlcmNlbnRhZ2UsIGNhbGMK
LSAgICAvLyBvciB2aWV3cG9ydCByZWxhdGl2ZS4KICAgICBSZW5kZXJTdHlsZSogc3R5bGVUb1Vz
ZSA9IHN0eWxlKCk7Ci0gICAgTGF5b3V0VW5pdCBtYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGggPSBt
X2Zsb3dUaHJlYWQtPm1heFByZWZlcnJlZExvZ2ljYWxXaWR0aCgpOwotCi0gICAgaWYgKHN0eWxl
VG9Vc2UtPmxvZ2ljYWxNaW5XaWR0aCgpLmlzRml4ZWQoKSAmJiBzdHlsZVRvVXNlLT5sb2dpY2Fs
TWluV2lkdGgoKS52YWx1ZSgpID4gMCkKLSAgICAgICAgbWF4UHJlZmVycmVkTG9naWNhbFdpZHRo
ID0gc3RkOjptYXgobWF4UHJlZmVycmVkTG9naWNhbFdpZHRoLCBhZGp1c3RDb250ZW50Qm94TG9n
aWNhbFdpZHRoRm9yQm94U2l6aW5nKHN0eWxlVG9Vc2UtPmxvZ2ljYWxNaW5XaWR0aCgpLnZhbHVl
KCkpKTsKLQotICAgIGlmIChzdHlsZVRvVXNlLT5sb2dpY2FsTWF4V2lkdGgoKS5pc0ZpeGVkKCkp
Ci0gICAgICAgIG1heFByZWZlcnJlZExvZ2ljYWxXaWR0aCA9IHN0ZDo6bWluKG1heFByZWZlcnJl
ZExvZ2ljYWxXaWR0aCwgYWRqdXN0Q29udGVudEJveExvZ2ljYWxXaWR0aEZvckJveFNpemluZyhz
dHlsZVRvVXNlLT5sb2dpY2FsTWF4V2lkdGgoKS52YWx1ZSgpKSk7CisgICAgaWYgKHN0eWxlVG9V
c2UtPmxvZ2ljYWxNYXhXaWR0aCgpLmlzRml4ZWQoKSkgeworICAgICAgICBtX21pblByZWZlcnJl
ZExvZ2ljYWxXaWR0aCA9IHN0ZDo6bWluKG1fbWluUHJlZmVycmVkTG9naWNhbFdpZHRoLCBhZGp1
c3RDb250ZW50Qm94TG9naWNhbFdpZHRoRm9yQm94U2l6aW5nKHN0eWxlVG9Vc2UtPmxvZ2ljYWxN
YXhXaWR0aCgpLnZhbHVlKCkpKTsKKyAgICAgICAgbV9tYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGgg
PSBzdGQ6Om1pbihtX21heFByZWZlcnJlZExvZ2ljYWxXaWR0aCwgYWRqdXN0Q29udGVudEJveExv
Z2ljYWxXaWR0aEZvckJveFNpemluZyhzdHlsZVRvVXNlLT5sb2dpY2FsTWF4V2lkdGgoKS52YWx1
ZSgpKSk7CisgICAgfQogCi0gICAgcmV0dXJuIG1heFByZWZlcnJlZExvZ2ljYWxXaWR0aCArIGJv
cmRlckFuZFBhZGRpbmdMb2dpY2FsV2lkdGgoKTsKKyAgICBMYXlvdXRVbml0IGJvcmRlckFuZFBh
ZGRpbmcgPSBib3JkZXJBbmRQYWRkaW5nTG9naWNhbFdpZHRoKCk7CisgICAgbV9taW5QcmVmZXJy
ZWRMb2dpY2FsV2lkdGggKz0gYm9yZGVyQW5kUGFkZGluZzsKKyAgICBtX21heFByZWZlcnJlZExv
Z2ljYWxXaWR0aCArPSBib3JkZXJBbmRQYWRkaW5nOworICAgIHNldFByZWZlcnJlZExvZ2ljYWxX
aWR0aHNEaXJ0eShmYWxzZSk7CiB9CiAKIHZvaWQgUmVuZGVyUmVnaW9uOjpnZXRSYW5nZXMoVmVj
dG9yPFJlZlB0cjxSYW5nZT4gPiYgcmFuZ2VPYmplY3RzKSBjb25zdApAQCAtNjE4LDcgKzYxMyw3
IEBAIHZvaWQgUmVuZGVyUmVnaW9uOjpnZXRSYW5nZXMoVmVjdG9yPFJlZlB0cjxSYW5nZT4gPiYg
cmFuZ2VPYmplY3RzKSBjb25zdAogCiB2b2lkIFJlbmRlclJlZ2lvbjo6dXBkYXRlTG9naWNhbEhl
aWdodCgpCiB7Ci0gICAgUmVuZGVyUmVwbGFjZWQ6OnVwZGF0ZUxvZ2ljYWxIZWlnaHQoKTsKKyAg
ICBSZW5kZXJCbG9jazo6dXBkYXRlTG9naWNhbEhlaWdodCgpOwogCiAgICAgaWYgKCFoYXNBdXRv
TG9naWNhbEhlaWdodCgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyUmVnaW9uLmgKaW5kZXggMjQyMWRjOTNkN2RiNGUyMDRiNDJmZTAzMDk1MDQyOThlNWZk
NTljMy4uODRlOWIxMDUxMjA1NjQ3MjQxMzEyMTBmMWVhYzM2MWJhNDk0ZWRkOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uaApAQCAtMzAsNyArMzAsNyBAQAogI2lmbmRl
ZiBSZW5kZXJSZWdpb25faAogI2RlZmluZSBSZW5kZXJSZWdpb25faAogCi0jaW5jbHVkZSAiUmVu
ZGVyUmVwbGFjZWQuaCIKKyNpbmNsdWRlICJSZW5kZXJCbG9jay5oIgogI2luY2x1ZGUgIlN0eWxl
SW5oZXJpdGVkRGF0YS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00MCwxMyArNDAsMTIg
QEAgY2xhc3MgUmVuZGVyQm94UmVnaW9uSW5mbzsKIGNsYXNzIFJlbmRlckZsb3dUaHJlYWQ7CiBj
bGFzcyBSZW5kZXJOYW1lZEZsb3dUaHJlYWQ7CiAKLWNsYXNzIFJlbmRlclJlZ2lvbiA6IHB1Ymxp
YyBSZW5kZXJSZXBsYWNlZCB7CitjbGFzcyBSZW5kZXJSZWdpb24gOiBwdWJsaWMgUmVuZGVyQmxv
Y2sgewogcHVibGljOgogICAgIGV4cGxpY2l0IFJlbmRlclJlZ2lvbihFbGVtZW50KiwgUmVuZGVy
Rmxvd1RocmVhZCopOwogCiAgICAgdmlydHVhbCBib29sIGlzUmVuZGVyUmVnaW9uKCkgY29uc3Qg
eyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgdmlydHVhbCB2b2lkIHBhaW50UmVwbGFjZWQoUGFpbnRJ
bmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKTsKICAgICB2aXJ0dWFsIGJvb2wgbm9kZUF0UG9pbnQo
Y29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgSGl0VGVzdExvY2F0
aW9uJiBsb2NhdGlvbkluQ29udGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRP
ZmZzZXQsIEhpdFRlc3RBY3Rpb24pIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCB2b2lkIHN0eWxl
RGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKTsK
QEAgLTY4LDggKzY3LDYgQEAgcHVibGljOgogICAgIGJvb2wgaGFzQ3VzdG9tUmVnaW9uU3R5bGUo
KSBjb25zdCB7IHJldHVybiBtX2hhc0N1c3RvbVJlZ2lvblN0eWxlOyB9CiAgICAgdm9pZCBzZXRI
YXNDdXN0b21SZWdpb25TdHlsZShib29sIGhhc0N1c3RvbVJlZ2lvblN0eWxlKSB7IG1faGFzQ3Vz
dG9tUmVnaW9uU3R5bGUgPSBoYXNDdXN0b21SZWdpb25TdHlsZTsgfQogCi0gICAgdmlydHVhbCB2
b2lkIGxheW91dCgpOwotCiAgICAgUmVuZGVyQm94UmVnaW9uSW5mbyogcmVuZGVyQm94UmVnaW9u
SW5mbyhjb25zdCBSZW5kZXJCb3gqKSBjb25zdDsKICAgICBSZW5kZXJCb3hSZWdpb25JbmZvKiBz
ZXRSZW5kZXJCb3hSZWdpb25JbmZvKGNvbnN0IFJlbmRlckJveCosIExheW91dFVuaXQgbG9naWNh
bExlZnRJbnNldCwgTGF5b3V0VW5pdCBsb2dpY2FsUmlnaHRJbnNldCwKICAgICAgICAgYm9vbCBj
b250YWluaW5nQmxvY2tDaGFpbklzSW5zZXQpOwpAQCAtMTAwLDggKzk3LDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBwYWdlTG9naWNhbEhlaWdodCgpIGNvbnN0OwogICAgIExh
eW91dFVuaXQgbWF4UGFnZUxvZ2ljYWxIZWlnaHQoKSBjb25zdDsKIAotICAgIHZpcnR1YWwgTGF5
b3V0VW5pdCBtaW5QcmVmZXJyZWRMb2dpY2FsV2lkdGgoKSBjb25zdCBPVkVSUklERTsKLSAgICB2
aXJ0dWFsIExheW91dFVuaXQgbWF4UHJlZmVycmVkTG9naWNhbFdpZHRoKCkgY29uc3QgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkgT1ZF
UlJJREU7CiAgICAgCiAgICAgTGF5b3V0VW5pdCBsb2dpY2FsVG9wT2ZGbG93VGhyZWFkQ29udGVu
dFJlY3QoY29uc3QgTGF5b3V0UmVjdCYpIGNvbnN0OwogICAgIExheW91dFVuaXQgbG9naWNhbEJv
dHRvbU9mRmxvd1RocmVhZENvbnRlbnRSZWN0KGNvbnN0IExheW91dFJlY3QmKSBjb25zdDsKQEAg
LTE0MiwxMSArMTM4LDcgQEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKICAgICB2aXJ0dWFsIGNvbnN0
IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCB7IHJldHVybiAiUmVuZGVyUmVnaW9uIjsgfQogCi0g
ICAgLy8gRklYTUU6IHRoZXNlIGZ1bmN0aW9ucyBzaG91bGQgYmUgcmV2aXNpdGVkIG9uY2UgUmVu
ZGVyUmVnaW9uIGluaGVyaXRzIGZyb20gUmVuZGVyQmxvY2sKLSAgICAvLyBpbnN0ZWFkIG9mIFJl
bmRlclJlcGxhY2VkIChzZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTc0MTMyICkKLSAgICAvLyBXaGVuIHdpZHRoIGlzIGF1dG8sIHVzZSBub3JtYWwgYmxvY2svYm94
IHNpemluZyBjb2RlIGV4Y2VwdCB3aGVuIGlubGluZS4KLSAgICB2aXJ0dWFsIGJvb2wgaXNJbmxp
bmVCbG9ja09ySW5saW5lVGFibGUoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBpc0lubGluZSgp
ICYmICFzaG91bGRDb21wdXRlU2l6ZUFzUmVwbGFjZWQoKTsgfQotICAgIHZpcnR1YWwgYm9vbCBz
aG91bGRDb21wdXRlU2l6ZUFzUmVwbGFjZWQoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiAhc3R5
bGUoKS0+bG9naWNhbFdpZHRoKCkuaXNBdXRvKCkgJiYgIXN0eWxlKCktPmxvZ2ljYWxIZWlnaHQo
KS5pc0F1dG8oKTsgfQorICAgIHZpcnR1YWwgYm9vbCBjYW5IYXZlQ2hpbGRyZW4oKSBjb25zdCBP
VkVSUklERSB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgYm9vbCBzaG91bGRIYXZlQXV0b0xvZ2lj
YWxIZWlnaHQoKSBjb25zdAogICAgIHsKQEAgLTE1OCw2ICsxNTAsOSBAQCBwcml2YXRlOgogICAg
IHZpcnR1YWwgdm9pZCBpbnNlcnRlZEludG9UcmVlKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2
b2lkIHdpbGxCZVJlbW92ZWRGcm9tVHJlZSgpIE9WRVJSSURFOwogCisgICAgdmlydHVhbCB2b2lk
IGxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCBwYWdlTG9naWNh
bEhlaWdodCA9IDApIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBwYWludE9iamVjdChQYWlu
dEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpIE9WRVJSSURFOworCiAgICAgdmlydHVhbCB2b2lk
IGluc3RhbGxGbG93VGhyZWFkKCk7CiAKICAgICBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBjb21w
dXRlU3R5bGVJblJlZ2lvbihjb25zdCBSZW5kZXJPYmplY3QqKTsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAwYTM0YmEzZDE2
MjQ2MWE5ZDdlYzU2NDI2ZjNiOTA4OTc1ZmRkOTAyLi4zNmJlYjk3N2MyODYyZWM0ZjRlOTUzOWFh
NDRkNGNlYzA1ZTMwYWZlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTMtMDItMTUgIE1paG5l
YSBPdmlkZW5pZSAgPG1paG5lYUBhZG9iZS5jb20+CisKKyAgICAgICAgW0NTUyBSZWdpb25zXSBS
ZW5kZXJSZWdpb24gc2hvdWxkIGluaGVyaXQgZnJvbSBSZW5kZXJCbG9jaworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQxMzIKKworICAgICAgICBSZXZp
ZXdlZCBieSBKdWxpZW4gQ2hhZmZyYWl4LgorCisgICAgICAgIEZpeCB0ZXN0cyB0aGF0IHdlcmUg
ZmFpbGluZyBhZnRlciB0aGUgaW5oZXJpdGFuY2UgY2hhbmdlLgorCisgICAgICAgICogZmFzdC9y
ZWdpb25zL2Zsb3dzLWRlcGVuZGVuY3ktZHluYW1pYy1yZW1vdmUuaHRtbDogQXMgYSBibG9jaywg
YW4gZW1wdHkgcmVnaW9uIGNhbiBzZWxmIGNvbGxhcHNlLAorICAgICAgICB3aGljaCB3YXMgbm90
IHBvc3NpYmxlIGZvciBhIHJlcGxhY2VkIGVsZW1lbnQuIEkgdXNlZCAnLXdlYmtpdC1tYXJnaW4t
Y29sbGFwc2U6IHNlcGFyYXRlJyB0byBwcmV2ZW50CisgICAgICAgIG1hcmdpbnMgc2VsZiBjb2xs
YXBzaW5nIGZvciBib2R5IGFuZCBhdm9pZCByZWNyZWF0aW5nIHRoZSBleHBlY3RhdGlvbnMuCisg
ICAgICAgIEkgd2FudCByZWdpb25zIG1hcmdpbnMgdG8gYmUgYWJsZSB0byBzZWxmIGNvbGxhcHNl
LCBqdXN0IGxpa2UgdGhlIG90aGVyIGJsb2NrIGVsZW1lbnRzLgorICAgICAgICAqIGZhc3QvcmVn
aW9ucy9mbG93cy1kZXBlbmRlbmN5LXNhbWUtZmxvdy5odG1sOiBEaXR0by4KKwogMjAxMy0wMi0x
NCAgQWxleGFuZGVyIFBhdmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdl
YiBJbnNwZWN0b3I6IEltcGxlbWVudCB0cmFja2luZyBvZiBhY3RpdmUgc3R5bGVzaGVldHMgaW4g
dGhlIGZyb250ZW5kCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZmxvd3Mt
ZGVwZW5kZW5jeS1keW5hbWljLXJlbW92ZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25z
L2Zsb3dzLWRlcGVuZGVuY3ktZHluYW1pYy1yZW1vdmUuaHRtbAppbmRleCA5NTU4Y2JmMDExOWMy
NmE3MjVlNWRiNzI2YjdiZjNhMzgyOWI0ZGRjLi5iMmE4YTlhNGIxY2I1NjJjODViY2ExOTQ3ZGNj
NzQzYjNmOWFiYWQzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZmxvd3Mt
ZGVwZW5kZW5jeS1keW5hbWljLXJlbW92ZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcmVn
aW9ucy9mbG93cy1kZXBlbmRlbmN5LWR5bmFtaWMtcmVtb3ZlLmh0bWwKQEAgLTEsNiArMSw4IEBA
CiA8IURPQ1RZUEUgSFRNTD4KIAogPHN0eWxlPgorYm9keSB7IC13ZWJraXQtbWFyZ2luLWNvbGxh
cHNlOiBzZXBhcmF0ZTsgfQorCiAuZmxvd0EgeyAtd2Via2l0LWZsb3ctaW50bzogZmxvd0E7IH0K
IC5mbG93QiB7IC13ZWJraXQtZmxvdy1pbnRvOiBmbG93QjsgfQogLmZsb3dDIHsgLXdlYmtpdC1m
bG93LWludG86IGZsb3dDOyB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMv
Zmxvd3MtZGVwZW5kZW5jeS1zYW1lLWZsb3cuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9u
cy9mbG93cy1kZXBlbmRlbmN5LXNhbWUtZmxvdy5odG1sCmluZGV4IGZjNjE3NDA2YjAzYWFhYTcx
YjAyNTE5NmZjY2VlODQwM2VlOTBiZWQuLjdlNGM3OWExMDMxMWVmZTIxNGJjYzNjNjVkOWYxMDNi
NDQ2ZTg5OWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9mbG93cy1kZXBl
bmRlbmN5LXNhbWUtZmxvdy5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9mbG93
cy1kZXBlbmRlbmN5LXNhbWUtZmxvdy5odG1sCkBAIC0xLDYgKzEsOCBAQAogPCFET0NUWVBFIEhU
TUw+CiAKIDxzdHlsZT4KK2JvZHkgeyAtd2Via2l0LW1hcmdpbi1jb2xsYXBzZTogc2VwYXJhdGU7
IH0KKwogLmZsb3dBIHsgLXdlYmtpdC1mbG93LWludG86IGZsb3dBOyB9CiAuZmxvd0IgeyAtd2Vi
a2l0LWZsb3ctaW50bzogZmxvd0I7IH0KIC5mbG93QyB7IC13ZWJraXQtZmxvdy1pbnRvOiBmbG93
QzsgfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>