<?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>111515</bug_id>
          
          <creation_ts>2013-03-05 19:53:43 -0800</creation_ts>
          <short_desc>Intrinsic width keyword values don&apos;t work for tables</short_desc>
          <delta_ts>2013-03-11 16:23:05 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ojan Vafai">ojan</reporter>
          <assigned_to name="Ojan Vafai">ojan</assigned_to>
          <cc>adamk</cc>
    
    <cc>buildbot</cc>
    
    <cc>eae</cc>
    
    <cc>eric</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>hyatt</cc>
    
    <cc>jchaffraix</cc>
    
    <cc>leviw</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>rniwa</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>848401</commentid>
    <comment_count>0</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2013-03-05 19:53:43 -0800</bug_when>
    <thetext>Intrinsic width keyword values don&apos;t work for tables</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>848410</commentid>
    <comment_count>1</comment_count>
      <attachid>191642</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2013-03-05 20:02:14 -0800</bug_when>
    <thetext>Created attachment 191642
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>848934</commentid>
    <comment_count>2</comment_count>
      <attachid>191642</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2013-03-06 09:23:12 -0800</bug_when>
    <thetext>Comment on attachment 191642
Patch

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

&gt; Source/WebCore/rendering/AutoTableLayout.cpp:215
&gt;      fullRecalc();

I would rather see a const_cast here instead of propagating some bad definition of const all over the class.

&gt; Source/WebCore/rendering/AutoTableLayout.cpp:456
&gt; +void AutoTableLayout::insertSpanCell(RenderTableCell *cell) const

This const makes no sense. You expect this function to have a side effect thus making it const goes counter to the intent.

&gt; Source/WebCore/rendering/RenderTable.cpp:319
&gt; +    recalcBordersInRowDirection();

That&apos;s a bad change. We call convertStyleLogicalWidthToComputedWidth several times per layout and would end up recomputing our collapsed border several times. Collapsed borders are expensive enough that we don&apos;t need more recomputation.

The solution is to move this call outside convertStyleLogicalWidthToComputedWidth and do it once per layout / compute preferred logical widths.

&gt; Source/WebCore/rendering/RenderTable.cpp:742
&gt; +    // FIXME: We should include captions in computeIntrinsicLogicalWidths.

Shouldn&apos;t this be in computeIntrinsicLogicalWidths?

&gt; Source/WebCore/rendering/RenderTable.cpp:1049
&gt; +void RenderTable::recalcBordersInRowDirection() const

This change makes no sense: we are explicitly *recalculating* the borders which doesn&apos;t fit any definition of const (logical or physical).

It&apos;s not like you are transparently updating a cache (which would fall into logical constness).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849129</commentid>
    <comment_count>3</comment_count>
      <attachid>191642</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2013-03-06 11:32:19 -0800</bug_when>
    <thetext>Comment on attachment 191642
Patch

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

&gt;&gt; Source/WebCore/rendering/AutoTableLayout.cpp:215
&gt;&gt;      fullRecalc();
&gt; 
&gt; I would rather see a const_cast here instead of propagating some bad definition of const all over the class.

I started with that. After discussion with Adam and Tony, it seemed like making the members mutable was more const correct. In *both* cases we&apos;re doing something bad. My logic in doing it this way is:
1. RenderTable already does this approach for most of it&apos;s members. So, this is consistent with that.
2. Even though these aren&apos;t transparent caches, they are all basically caches.
3. Marking the members mutable clearly communicates to other programmers that these members might be modified in const methods.

&gt;&gt; Source/WebCore/rendering/AutoTableLayout.cpp:456
&gt;&gt; +void AutoTableLayout::insertSpanCell(RenderTableCell *cell) const
&gt; 
&gt; This const makes no sense. You expect this function to have a side effect thus making it const goes counter to the intent.

Kind of. Unless you think of m_spanCells as a cache, which it basically is. 

Incidentally, the table layout code has a bunch of things that look like they are modifying the rendertree (e.g. addChild on table sections), when they are really just updating a private cache.

&gt;&gt; Source/WebCore/rendering/RenderTable.cpp:319
&gt;&gt; +    recalcBordersInRowDirection();
&gt; 
&gt; That&apos;s a bad change. We call convertStyleLogicalWidthToComputedWidth several times per layout and would end up recomputing our collapsed border several times. Collapsed borders are expensive enough that we don&apos;t need more recomputation.
&gt; 
&gt; The solution is to move this call outside convertStyleLogicalWidthToComputedWidth and do it once per layout / compute preferred logical widths.

Good point. Will move this to the beginning if layout. We already call it at the beginning of computing preferred widths.

&gt;&gt; Source/WebCore/rendering/RenderTable.cpp:742
&gt;&gt; +    // FIXME: We should include captions in computeIntrinsicLogicalWidths.
&gt; 
&gt; Shouldn&apos;t this be in computeIntrinsicLogicalWidths?

The ordering is tricky. I&apos;m not sure if it&apos;s correct that we apply this captions stuff after applyPreferredLogicalWidthQuirks and bordersPaddingAndScacing was added. If it is, then we can&apos;t just move it and it will need a bit more thought on how to make this work right. If it&apos;s incorrect, then we can just move it.

In either case, I added the FIXME because I felt like this patch is already big enough and captions can easily be done in a followup patch.

&gt;&gt; Source/WebCore/rendering/RenderTable.cpp:1049
&gt;&gt; +void RenderTable::recalcBordersInRowDirection() const
&gt; 
&gt; This change makes no sense: we are explicitly *recalculating* the borders which doesn&apos;t fit any definition of const (logical or physical).
&gt; 
&gt; It&apos;s not like you are transparently updating a cache (which would fall into logical constness).

I think what we should do long-term with this code is to not have this method at all. At the beginning of layout/computeInstrinsicWidths, we calculate the borderStart/borderEnd and pass them around as arguments and get rid of the borderStart/borderEnd methods entirely.

The way they currently are, just invites bugs due to not calling recalc. Alternately, we could keep a bit as to whether we need to recalc borders and then have these actually be a transparent cache. Then the borderStart/borderEnd methods would always call recalcBordersInRowDirection before returning their values.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849160</commentid>
    <comment_count>4</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2013-03-06 12:00:25 -0800</bug_when>
    <thetext>Talked to Adam some more and he agrees that const_cast would be better. I&apos;ll post a new patch shortly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849240</commentid>
    <comment_count>5</comment_count>
      <attachid>191642</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2013-03-06 13:23:23 -0800</bug_when>
    <thetext>Comment on attachment 191642
Patch

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

&gt;&gt;&gt; Source/WebCore/rendering/AutoTableLayout.cpp:456
&gt;&gt;&gt; +void AutoTableLayout::insertSpanCell(RenderTableCell *cell) const
&gt;&gt; 
&gt;&gt; This const makes no sense. You expect this function to have a side effect thus making it const goes counter to the intent.
&gt; 
&gt; Kind of. Unless you think of m_spanCells as a cache, which it basically is. 
&gt; 
&gt; Incidentally, the table layout code has a bunch of things that look like they are modifying the rendertree (e.g. addChild on table sections), when they are really just updating a private cache.

I agree that you can think of most variables as caches. My objection is that you are const-ifying some functions that have no bearing being const (insertXXX shouldn&apos;t be const: you *do* expect it to modify the object). Note that some methods definitely fits either definition of const - and your patch is right on these - but propagating all the way is worse than a single const_cast.

&gt;&gt;&gt; Source/WebCore/rendering/RenderTable.cpp:742
&gt;&gt;&gt; +    // FIXME: We should include captions in computeIntrinsicLogicalWidths.
&gt;&gt; 
&gt;&gt; Shouldn&apos;t this be in computeIntrinsicLogicalWidths?
&gt; 
&gt; The ordering is tricky. I&apos;m not sure if it&apos;s correct that we apply this captions stuff after applyPreferredLogicalWidthQuirks and bordersPaddingAndScacing was added. If it is, then we can&apos;t just move it and it will need a bit more thought on how to make this work right. If it&apos;s incorrect, then we can just move it.
&gt; 
&gt; In either case, I added the FIXME because I felt like this patch is already big enough and captions can easily be done in a followup patch.

Sure, I just meant to ask if the FIXME shouldn&apos;t be in computeIntrinsicLogicalWidths instead of computePreferredLogicalWidths as it is about the former, not the latter.

&gt;&gt;&gt; Source/WebCore/rendering/RenderTable.cpp:1049
&gt;&gt;&gt; +void RenderTable::recalcBordersInRowDirection() const
&gt;&gt; 
&gt;&gt; This change makes no sense: we are explicitly *recalculating* the borders which doesn&apos;t fit any definition of const (logical or physical).
&gt;&gt; 
&gt;&gt; It&apos;s not like you are transparently updating a cache (which would fall into logical constness).
&gt; 
&gt; I think what we should do long-term with this code is to not have this method at all. At the beginning of layout/computeInstrinsicWidths, we calculate the borderStart/borderEnd and pass them around as arguments and get rid of the borderStart/borderEnd methods entirely.
&gt; 
&gt; The way they currently are, just invites bugs due to not calling recalc. Alternately, we could keep a bit as to whether we need to recalc borders and then have these actually be a transparent cache. Then the borderStart/borderEnd methods would always call recalcBordersInRowDirection before returning their values.

I completely agree with you and would be happy to review such a change (if you feel like doing it). The current recalcBordersInRowDirection is just asking for badness to happen, especially since:
A) table testing tends to be very spotty.
B) we don&apos;t have a dirty bit which would track when we could skip recomputing them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850339</commentid>
    <comment_count>6</comment_count>
      <attachid>192057</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2013-03-07 11:50:01 -0800</bug_when>
    <thetext>Created attachment 192057
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850508</commentid>
    <comment_count>7</comment_count>
      <attachid>192057</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2013-03-07 15:00:31 -0800</bug_when>
    <thetext>Comment on attachment 192057
Patch

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

&gt; Source/WebCore/rendering/RenderTable.cpp:317
&gt; +        return computeIntrinsicLogicalWidthUsing(styleLogicalWidth, availableWidth, bordersPaddingAndSpacingInRowDirection());

It&apos;s suspicious that you add the horizontal border-spacing here, but the results are correct so I am not going to argue.

&gt; LayoutTests/fast/css-intrinsic-dimensions/tables.html:66
&gt; +        &lt;td&gt;

Could it be possible to test the cell value in this case?

&gt; LayoutTests/fast/css-intrinsic-dimensions/tables.html:121
&gt; +        &lt;td&gt;

And here (basically when we grow above the cell&apos;s maximum width). It may be valuable to dump the border for fit-content too but I will let you judge. Also those comments apply to CSS tables too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850957</commentid>
    <comment_count>8</comment_count>
      <attachid>192057</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-03-08 00:35:12 -0800</bug_when>
    <thetext>Comment on attachment 192057
Patch

Attachment 192057 did not pass mac-ews (mac):
Output: http://webkit-commit-queue.appspot.com/results/17016167

New failing tests:
editing/selection/selection-modify-crash.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852841</commentid>
    <comment_count>9</comment_count>
      <attachid>192057</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2013-03-11 16:18:33 -0700</bug_when>
    <thetext>Comment on attachment 192057
Patch

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

&gt;&gt; Source/WebCore/rendering/RenderTable.cpp:317
&gt;&gt; +        return computeIntrinsicLogicalWidthUsing(styleLogicalWidth, availableWidth, bordersPaddingAndSpacingInRowDirection());
&gt; 
&gt; It&apos;s suspicious that you add the horizontal border-spacing here, but the results are correct so I am not going to argue.

I modified the test case to make sure it hits this case in the fit-content cases. As you note, it was already covering this code for the min-content/max-content cases. I also added a border to the TDs and measured all their sizes as well.

Everything was as expected, except the *reported* width of the TDs with border collapsing was smaller than I expected. The rendered size is correct, but the offsetWidth is weird. Anyways, I tested non-intrinsic width table cells and we get the same smaller number. So, if there&apos;s a bug, it&apos;s not a bug in the new code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852847</commentid>
    <comment_count>10</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2013-03-11 16:23:05 -0700</bug_when>
    <thetext>Committed r145424: &lt;http://trac.webkit.org/changeset/145424&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>191642</attachid>
            <date>2013-03-05 20:02:14 -0800</date>
            <delta_ts>2013-03-07 11:49:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-111515-20130305195820.patch</filename>
            <type>text/plain</type>
            <size>29751</size>
            <attacher name="Ojan Vafai">ojan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0ODM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjgxNzI4NjhjMDEyMmFj
NTI4ZWE1MTM3MjM5YWNiMDI5NmQ5ODVlYy4uNDAyMDcyMTM5MjU5NjYyNGNkOTNkMDMxZDQxY2I0
MWE4MjIxZWViZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDEzLTAzLTA1ICBPamFu
IFZhZmFpICA8b2phbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW50cmluc2ljIHdpZHRoIGtl
eXdvcmQgdmFsdWVzIGRvbid0IHdvcmsgZm9yIHRhYmxlcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTExNTE1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHM6IGZhc3QvY3NzLWludHJpbnNpYy1kaW1l
bnNpb25zL2Nzcy10YWJsZXMuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9jc3MtaW50cmluc2lj
LWRpbWVuc2lvbnMvdGFibGVzLmh0bWwKKworICAgICAgICAqIHJlbmRlcmluZy9BdXRvVGFibGVM
YXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXV0b1RhYmxlTGF5b3V0OjpyZWNhbGNDb2x1
bW4pOgorICAgICAgICAoV2ViQ29yZTo6QXV0b1RhYmxlTGF5b3V0OjpmdWxsUmVjYWxjKToKKyAg
ICAgICAgKFdlYkNvcmU6OkF1dG9UYWJsZUxheW91dDo6Y29tcHV0ZUludHJpbnNpY0xvZ2ljYWxX
aWR0aHMpOgorICAgICAgICAoV2ViQ29yZTo6QXV0b1RhYmxlTGF5b3V0OjpjYWxjRWZmZWN0aXZl
TG9naWNhbFdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OkF1dG9UYWJsZUxheW91dDo6aW5zZXJ0
U3BhbkNlbGwpOgorICAgICAgICAqIHJlbmRlcmluZy9BdXRvVGFibGVMYXlvdXQuaDoKKyAgICAg
ICAgKiByZW5kZXJpbmcvRml4ZWRUYWJsZUxheW91dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
aXhlZFRhYmxlTGF5b3V0OjpjYWxjV2lkdGhBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjpGaXhl
ZFRhYmxlTGF5b3V0Ojpjb21wdXRlSW50cmluc2ljTG9naWNhbFdpZHRocyk6CisgICAgICAgICog
cmVuZGVyaW5nL0ZpeGVkVGFibGVMYXlvdXQuaDoKKyAgICAgICAgTWFrZSB0aGUgbWVtYmVycyBt
dXRhYmxlIGFuZCBjb25zdCBhbGwgdGhlIG1ldGhvZHMuIFRoaXMgaXMgc28KKyAgICAgICAgUmVu
ZGVyVGFibGU6OmNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsV2lkdGhzIGNhbiBjYWxsIHRoZW0uIFRo
aXMgaXMKKyAgICAgICAgYSBsaXR0bGUgZ3Jvc3MsIGJ1dCBhbGwgdGhlc2UgbWVtYmVycyBhcmUg
YmFzaWNhbGx5IGNhY2hlcyBhbmQgUmVuZGVyVGFibGUKKyAgICAgICAgYWxyZWFkeSBkb2VzIHRo
aXMgZm9yIGFsbCBpdHMgbWVtYmVycyBmb3Igc2ltaWxhciByZWFzb25zLgorCisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNv
bXB1dGVJbnRyaW5zaWNMb2dpY2FsV2lkdGhVc2luZyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJCb3g6OmNvbXB1dGVMb2dpY2FsV2lkdGhJblJlZ2lvblVzaW5nKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJveDo6Y29tcHV0ZVJlcGxhY2VkTG9naWNhbFdpZHRoVXNpbmcpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxXaWR0aFVzaW5n
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94Lmg6CisgICAgICAgIFBhc3MgaW4gdGhl
IGJvcmRlciBhbmQgcGFkZGluZyBhcyBhbiBhcmd1bWVudCBzaW5jZSBSZW5kZXJUYWJsZSBuZWVk
cworICAgICAgICB0byBwYXNzIGluIGEgZGlmZmVyZW50IHZhbHVlLiBVbmZvcnR1bmF0ZWx5LCB0
aGUgbWF0aCBkb2Vzbid0IHdvcmsgb3V0IHJpZ2h0CisgICAgICAgIGluIHRoZSBwb3NpdGlvbmVk
L3JlcGxhY2VkIGNhc2VzIGlmIHdlIGp1c3QgcGFzcyAwLiBXZSBuZWVkIHRvIHBhc3MgaW4gdGhl
IGNvcnJlY3QKKyAgICAgICAgYm9yZGVyIGFuZCBwYWRkaW5nIGFuZCB0aGVuIHN1YnRyYWN0IGl0
IGZyb20gdGhlIHJlc3VsdC4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZTo6dXBkYXRlTG9naWNhbFdpZHRoKToKKyAg
ICAgICAgQ29tcHV0ZSBpbnRyaW5zaWMgd2lkdGhzIGFzIHdlbGwgYXMgc3BlY2lmaWVkIG9uZXMu
IERvd24gdGhlIHJvYWQKKyAgICAgICAgd2UgbWF5IHdhbnQgdG8gY29uc2lkZXIgaGF2aW5nIGlu
dHJpbnNpYyB3aWR0aCB2YWx1ZXMgcmV0dXJuIHRydWUgZm9yCisgICAgICAgIGlzU3BlY2lmaWVk
LgorCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZTo6Y29udmVydFN0eWxlTG9naWNhbFdp
ZHRoVG9Db21wdXRlZFdpZHRoKToKKyAgICAgICAgQ29tcHV0ZSBpbnRyaW5zaWMgd2lkdGhzIGFz
IHdlbGwuIFdlIG5lZWQgdG8gcmVjYWxjIHRoZSBib3JkZXJzIGJlZm9yZSBjYWxsaW5nCisgICAg
ICAgIGJvcmRlcnNQYWRkaW5nQW5kU3BhY2luZ0luUm93RGlyZWN0aW9uLgorCisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUYWJsZTo6Y29tcHV0ZUludHJpbnNpY0xvZ2ljYWxXaWR0aHMpOgorICAg
ICAgICBJbXBsZW1lbnQgdGhpcyBtZXRob2Qgc28gdGhhdCB0aGUgUmVuZGVyQm94Ojpjb21wdXRl
SW50cmluc2ljTG9naWNhbFdpZHRoVXNpbmcKKyAgICAgICAgZ2V0cyB0aGUgcmlnaHQgaW50cmlu
c2ljIHZhbHVlcyBpbnN0ZWFkIG9mIHRoZSBwcmVmZXJyZWQgdmFsdWVzLgorCisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUYWJsZTo6Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGU6OnJlY2FsY0JvcmRlcnNJblJvd0RpcmVjdGlvbik6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlLmg6CisgICAgICAgICogcmVuZGVyaW5n
L1RhYmxlTGF5b3V0Lmg6CisKIDIwMTMtMDMtMDUgIEVtaWwgQSBFa2x1bmQgIDxlYWVAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIEFTU0VSVElPTiBGQUlMRUQ6IGkgPCBzaXplKCksIFVOS05PV04g
aW4gV2ViQ29yZTo6UmVuZGVyVGFibGVTZWN0aW9uOjpsYXlvdXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9BdXRvVGFibGVMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0F1dG9UYWJsZUxheW91dC5jcHAKaW5kZXggZDQwZGM1Yjk4Njc3ODAxYTIzNDdj
OGFkYTEyZTk3OWEzYWM5NzA2Yy4uZmRhMjZhNWEzODExODcyNmQyZDY5NjdlNDhkZjM5MmM2ZTFj
ZWQ5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0F1dG9UYWJsZUxheW91
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0F1dG9UYWJsZUxheW91dC5jcHAK
QEAgLTQyLDcgKzQyLDcgQEAgQXV0b1RhYmxlTGF5b3V0Ojp+QXV0b1RhYmxlTGF5b3V0KCkKIHsK
IH0KIAotdm9pZCBBdXRvVGFibGVMYXlvdXQ6OnJlY2FsY0NvbHVtbih1bnNpZ25lZCBlZmZDb2wp
Cit2b2lkIEF1dG9UYWJsZUxheW91dDo6cmVjYWxjQ29sdW1uKHVuc2lnbmVkIGVmZkNvbCkgY29u
c3QKIHsKICAgICBMYXlvdXQmIGNvbHVtbkxheW91dCA9IG1fbGF5b3V0U3RydWN0W2VmZkNvbF07
CiAKQEAgLTE0MCw3ICsxNDAsNyBAQCB2b2lkIEF1dG9UYWJsZUxheW91dDo6cmVjYWxjQ29sdW1u
KHVuc2lnbmVkIGVmZkNvbCkKICAgICBjb2x1bW5MYXlvdXQubWF4TG9naWNhbFdpZHRoID0gbWF4
KGNvbHVtbkxheW91dC5tYXhMb2dpY2FsV2lkdGgsIGNvbHVtbkxheW91dC5taW5Mb2dpY2FsV2lk
dGgpOwogfQogCi12b2lkIEF1dG9UYWJsZUxheW91dDo6ZnVsbFJlY2FsYygpCit2b2lkIEF1dG9U
YWJsZUxheW91dDo6ZnVsbFJlY2FsYygpIGNvbnN0CiB7CiAgICAgbV9oYXNQZXJjZW50ID0gZmFs
c2U7CiAgICAgbV9lZmZlY3RpdmVMb2dpY2FsV2lkdGhEaXJ0eSA9IHRydWU7CkBAIC0yMTAsNyAr
MjEwLDcgQEAgc3RhdGljIGJvb2wgc2hvdWxkU2NhbGVDb2x1bW5zKFJlbmRlclRhYmxlKiB0YWJs
ZSkKICAgICByZXR1cm4gc2NhbGU7CiB9CiAKLXZvaWQgQXV0b1RhYmxlTGF5b3V0Ojpjb21wdXRl
SW50cmluc2ljTG9naWNhbFdpZHRocyhMYXlvdXRVbml0JiBtaW5XaWR0aCwgTGF5b3V0VW5pdCYg
bWF4V2lkdGgpCit2b2lkIEF1dG9UYWJsZUxheW91dDo6Y29tcHV0ZUludHJpbnNpY0xvZ2ljYWxX
aWR0aHMoTGF5b3V0VW5pdCYgbWluV2lkdGgsIExheW91dFVuaXQmIG1heFdpZHRoKSBjb25zdAog
ewogICAgIGZ1bGxSZWNhbGMoKTsKIApAQCAtMjYwLDcgKzI2MCw3IEBAIHZvaWQgQXV0b1RhYmxl
TGF5b3V0OjphcHBseVByZWZlcnJlZExvZ2ljYWxXaWR0aFF1aXJrcyhMYXlvdXRVbml0JiBtaW5X
aWR0aCwgTGF5CiAgIFRoaXMgbWV0aG9kIHRha2VzIGNhcmUgb2YgY29sc3BhbnMuCiAgIGVmZldp
ZHRoIGlzIHRoZSBzYW1lIGFzIHdpZHRoIGZvciBjZWxscyB3aXRob3V0IGNvbHNwYW5zLiBJZiB3
ZSBoYXZlIGNvbHNwYW5zLCB0aGV5IGdldCBtb2RpZmllZC4KICAqLwotaW50IEF1dG9UYWJsZUxh
eW91dDo6Y2FsY0VmZmVjdGl2ZUxvZ2ljYWxXaWR0aCgpCitpbnQgQXV0b1RhYmxlTGF5b3V0Ojpj
YWxjRWZmZWN0aXZlTG9naWNhbFdpZHRoKCkgY29uc3QKIHsKICAgICBpbnQgbWF4TG9naWNhbFdp
ZHRoID0gMDsKIApAQCAtNDUzLDcgKzQ1Myw3IEBAIGludCBBdXRvVGFibGVMYXlvdXQ6OmNhbGNF
ZmZlY3RpdmVMb2dpY2FsV2lkdGgoKQogLyogZ2V0cyBhbGwgY2VsbHMgdGhhdCBvcmlnaW5hdGUg
aW4gYSBjb2x1bW4gYW5kIGhhdmUgYSBjZWxsc3BhbiA+IDEKICAgIFNvcnRzIHRoZW0gYnkgaW5j
cmVhc2luZyBjZWxsc3BhbgogKi8KLXZvaWQgQXV0b1RhYmxlTGF5b3V0OjppbnNlcnRTcGFuQ2Vs
bChSZW5kZXJUYWJsZUNlbGwgKmNlbGwpCit2b2lkIEF1dG9UYWJsZUxheW91dDo6aW5zZXJ0U3Bh
bkNlbGwoUmVuZGVyVGFibGVDZWxsICpjZWxsKSBjb25zdAogewogICAgIEFTU0VSVF9BUkcoY2Vs
bCwgY2VsbCAmJiBjZWxsLT5jb2xTcGFuKCkgIT0gMSk7CiAgICAgaWYgKCFjZWxsIHx8IGNlbGwt
PmNvbFNwYW4oKSA9PSAxKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0F1
dG9UYWJsZUxheW91dC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0F1dG9UYWJsZUxheW91
dC5oCmluZGV4IGExZmRhZDA0ODBkNzJiMDBlZGY3YmFiNjZkZDUzMTY5OWI4NzJmNzMuLjhkNWVj
Njc2NmY1NjJmNGM5ZGM5OWZmMmRmNWUyODVkMDA2Y2MzOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9BdXRvVGFibGVMYXlvdXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvQXV0b1RhYmxlTGF5b3V0LmgKQEAgLTM2LDE3ICszNiwxNyBAQCBwdWJsaWM6CiAg
ICAgQXV0b1RhYmxlTGF5b3V0KFJlbmRlclRhYmxlKik7CiAgICAgfkF1dG9UYWJsZUxheW91dCgp
OwogCi0gICAgdmlydHVhbCB2b2lkIGNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsV2lkdGhzKExheW91
dFVuaXQmIG1pbldpZHRoLCBMYXlvdXRVbml0JiBtYXhXaWR0aCkgT1ZFUlJJREU7CisgICAgdmly
dHVhbCB2b2lkIGNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsV2lkdGhzKExheW91dFVuaXQmIG1pbldp
ZHRoLCBMYXlvdXRVbml0JiBtYXhXaWR0aCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2
b2lkIGFwcGx5UHJlZmVycmVkTG9naWNhbFdpZHRoUXVpcmtzKExheW91dFVuaXQmIG1pbldpZHRo
LCBMYXlvdXRVbml0JiBtYXhXaWR0aCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lk
IGxheW91dCgpOwogCiBwcml2YXRlOgotICAgIHZvaWQgZnVsbFJlY2FsYygpOwotICAgIHZvaWQg
cmVjYWxjQ29sdW1uKHVuc2lnbmVkIGVmZkNvbCk7CisgICAgdm9pZCBmdWxsUmVjYWxjKCkgY29u
c3Q7CisgICAgdm9pZCByZWNhbGNDb2x1bW4odW5zaWduZWQgZWZmQ29sKSBjb25zdDsKIAotICAg
IGludCBjYWxjRWZmZWN0aXZlTG9naWNhbFdpZHRoKCk7CisgICAgaW50IGNhbGNFZmZlY3RpdmVM
b2dpY2FsV2lkdGgoKSBjb25zdDsKIAotICAgIHZvaWQgaW5zZXJ0U3BhbkNlbGwoUmVuZGVyVGFi
bGVDZWxsKik7CisgICAgdm9pZCBpbnNlcnRTcGFuQ2VsbChSZW5kZXJUYWJsZUNlbGwqKSBjb25z
dDsKIAogICAgIHN0cnVjdCBMYXlvdXQgewogICAgICAgICBMYXlvdXQoKQpAQCAtNjksOSArNjks
OSBAQCBwcml2YXRlOgogICAgICAgICBib29sIGVtcHR5Q2VsbHNPbmx5OwogICAgIH07CiAKLSAg
ICBWZWN0b3I8TGF5b3V0LCA0PiBtX2xheW91dFN0cnVjdDsKLSAgICBWZWN0b3I8UmVuZGVyVGFi
bGVDZWxsKiwgND4gbV9zcGFuQ2VsbHM7Ci0gICAgYm9vbCBtX2hhc1BlcmNlbnQgOiAxOworICAg
IG11dGFibGUgVmVjdG9yPExheW91dCwgND4gbV9sYXlvdXRTdHJ1Y3Q7CisgICAgbXV0YWJsZSBW
ZWN0b3I8UmVuZGVyVGFibGVDZWxsKiwgND4gbV9zcGFuQ2VsbHM7CisgICAgbXV0YWJsZSBib29s
IG1faGFzUGVyY2VudCA6IDE7CiAgICAgbXV0YWJsZSBib29sIG1fZWZmZWN0aXZlTG9naWNhbFdp
ZHRoRGlydHkgOiAxOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0ZpeGVkVGFibGVMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpeGVkVGFi
bGVMYXlvdXQuY3BwCmluZGV4IGE2YjY1ZTkzNGZlYTMxMTVhMmZlZDIzZWY3MjQ3NDNkODBlOGQ5
NDEuLjAzZTcxYWViY2FiOGFlMzA4MGNiYzcxOGFiMDU5YWFmNmI1MDU1NTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaXhlZFRhYmxlTGF5b3V0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvRml4ZWRUYWJsZUxheW91dC5jcHAKQEAgLTc3LDcgKzc3LDcg
QEAgRml4ZWRUYWJsZUxheW91dDo6Rml4ZWRUYWJsZUxheW91dChSZW5kZXJUYWJsZSogdGFibGUp
CiB7CiB9CiAKLWludCBGaXhlZFRhYmxlTGF5b3V0OjpjYWxjV2lkdGhBcnJheSgpCitpbnQgRml4
ZWRUYWJsZUxheW91dDo6Y2FsY1dpZHRoQXJyYXkoKSBjb25zdAogewogICAgIC8vIEZJWE1FOiBX
ZSBtaWdodCB3YW50IHRvIHdhaXQgdW50aWwgd2UgaGF2ZSBhbGwgb2YgdGhlIGZpcnN0IHJvdyBi
ZWZvcmUgY29tcHV0aW5nIGZvciB0aGUgZmlyc3QgdGltZS4KICAgICBpbnQgdXNlZFdpZHRoID0g
MDsKQEAgLTE3Niw3ICsxNzYsNyBAQCBpbnQgRml4ZWRUYWJsZUxheW91dDo6Y2FsY1dpZHRoQXJy
YXkoKQogICAgIHJldHVybiB1c2VkV2lkdGg7CiB9CiAKLXZvaWQgRml4ZWRUYWJsZUxheW91dDo6
Y29tcHV0ZUludHJpbnNpY0xvZ2ljYWxXaWR0aHMoTGF5b3V0VW5pdCYgbWluV2lkdGgsIExheW91
dFVuaXQmIG1heFdpZHRoKQordm9pZCBGaXhlZFRhYmxlTGF5b3V0Ojpjb21wdXRlSW50cmluc2lj
TG9naWNhbFdpZHRocyhMYXlvdXRVbml0JiBtaW5XaWR0aCwgTGF5b3V0VW5pdCYgbWF4V2lkdGgp
IGNvbnN0CiB7CiAgICAgbWluV2lkdGggPSBtYXhXaWR0aCA9IGNhbGNXaWR0aEFycmF5KCk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRml4ZWRUYWJsZUxheW91dC5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpeGVkVGFibGVMYXlvdXQuaAppbmRleCA2OGJh
MDg0NjgxOTU5NjUwNzdiZmFhYzkxMmJiMzViODViODE0NTgwLi45Zjc4NWQ4YTllMTUxMzYyOTJj
MTJlYTM5MzY0MDlmZGQwZDdlYjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvRml4ZWRUYWJsZUxheW91dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaXhl
ZFRhYmxlTGF5b3V0LmgKQEAgLTM0LDE0ICszNCwxNCBAQCBjbGFzcyBGaXhlZFRhYmxlTGF5b3V0
IDogcHVibGljIFRhYmxlTGF5b3V0IHsKIHB1YmxpYzoKICAgICBGaXhlZFRhYmxlTGF5b3V0KFJl
bmRlclRhYmxlKik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUludHJpbnNpY0xvZ2ljYWxX
aWR0aHMoTGF5b3V0VW5pdCYgbWluV2lkdGgsIExheW91dFVuaXQmIG1heFdpZHRoKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUludHJpbnNpY0xvZ2ljYWxXaWR0aHMoTGF5b3V0
VW5pdCYgbWluV2lkdGgsIExheW91dFVuaXQmIG1heFdpZHRoKSBjb25zdCBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIHZvaWQgYXBwbHlQcmVmZXJyZWRMb2dpY2FsV2lkdGhRdWlya3MoTGF5b3V0VW5p
dCYgbWluV2lkdGgsIExheW91dFVuaXQmIG1heFdpZHRoKSBjb25zdCBPVkVSUklERTsKICAgICB2
aXJ0dWFsIHZvaWQgbGF5b3V0KCk7CiAKIHByaXZhdGU6Ci0gICAgaW50IGNhbGNXaWR0aEFycmF5
KCk7CisgICAgaW50IGNhbGNXaWR0aEFycmF5KCkgY29uc3Q7CiAKLSAgICBWZWN0b3I8TGVuZ3Ro
PiBtX3dpZHRoOworICAgIG11dGFibGUgVmVjdG9yPExlbmd0aD4gbV93aWR0aDsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAK
aW5kZXggNzA0OTY0MTQ3ZjU4YTEzMjc5YzkxNTQ2NmVlNTIzMGE4NjQ3NWEwMi4uYWMwOWNlZWRk
ODM3YzQwYzUxYTA2NDdiNTIyNjgzMGY4NjZlMTM0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJveC5jcHAKQEAgLTIwNjMsNyArMjA2Myw3IEBAIExheW91dFVuaXQgUmVuZGVyQm94
OjpmaWxsQXZhaWxhYmxlTWVhc3VyZShMYXlvdXRVbml0IGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCwg
TGF5CiAgICAgcmV0dXJuIGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCAtIG1hcmdpblN0YXJ0IC0gbWFy
Z2luRW5kOwogfQogCi1MYXlvdXRVbml0IFJlbmRlckJveDo6Y29tcHV0ZUludHJpbnNpY0xvZ2lj
YWxXaWR0aFVzaW5nKExlbmd0aCBsb2dpY2FsV2lkdGhMZW5ndGgsIExheW91dFVuaXQgYXZhaWxh
YmxlTG9naWNhbFdpZHRoKSBjb25zdAorTGF5b3V0VW5pdCBSZW5kZXJCb3g6OmNvbXB1dGVJbnRy
aW5zaWNMb2dpY2FsV2lkdGhVc2luZyhMZW5ndGggbG9naWNhbFdpZHRoTGVuZ3RoLCBMYXlvdXRV
bml0IGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCwgTGF5b3V0VW5pdCBib3JkZXJBbmRQYWRkaW5nKSBj
b25zdAogewogICAgIGlmIChsb2dpY2FsV2lkdGhMZW5ndGgudHlwZSgpID09IEZpbGxBdmFpbGFi
bGUpCiAgICAgICAgIHJldHVybiBmaWxsQXZhaWxhYmxlTWVhc3VyZShhdmFpbGFibGVMb2dpY2Fs
V2lkdGgpOwpAQCAtMjA3Miw4ICsyMDcyLDYgQEAgTGF5b3V0VW5pdCBSZW5kZXJCb3g6OmNvbXB1
dGVJbnRyaW5zaWNMb2dpY2FsV2lkdGhVc2luZyhMZW5ndGggbG9naWNhbFdpZHRoTGVuZ3QKICAg
ICBMYXlvdXRVbml0IG1heExvZ2ljYWxXaWR0aCA9IDA7CiAgICAgY29tcHV0ZUludHJpbnNpY0xv
Z2ljYWxXaWR0aHMobWluTG9naWNhbFdpZHRoLCBtYXhMb2dpY2FsV2lkdGgpOwogCi0gICAgTGF5
b3V0VW5pdCBib3JkZXJBbmRQYWRkaW5nID0gYm9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxXaWR0aCgp
OwotCiAgICAgaWYgKGxvZ2ljYWxXaWR0aExlbmd0aC50eXBlKCkgPT0gTWluQ29udGVudCkKICAg
ICAgICAgcmV0dXJuIG1pbkxvZ2ljYWxXaWR0aCArIGJvcmRlckFuZFBhZGRpbmc7CiAKQEAgLTIx
MTMsNyArMjExMSw3IEBAIExheW91dFVuaXQgUmVuZGVyQm94Ojpjb21wdXRlTG9naWNhbFdpZHRo
SW5SZWdpb25Vc2luZyhTaXplVHlwZSB3aWR0aFR5cGUsIExheW91CiAgICAgfQogCiAgICAgaWYg
KGxvZ2ljYWxXaWR0aC5pc0ludHJpbnNpYygpKQotICAgICAgICByZXR1cm4gY29tcHV0ZUludHJp
bnNpY0xvZ2ljYWxXaWR0aFVzaW5nKGxvZ2ljYWxXaWR0aCwgYXZhaWxhYmxlTG9naWNhbFdpZHRo
KTsKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsV2lkdGhVc2luZyhsb2dp
Y2FsV2lkdGgsIGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCwgYm9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxX
aWR0aCgpKTsKIAogICAgIExheW91dFVuaXQgbWFyZ2luU3RhcnQgPSAwOwogICAgIExheW91dFVu
aXQgbWFyZ2luRW5kID0gMDsKQEAgLTI2MTgsNyArMjYxNiw3IEBAIExheW91dFVuaXQgUmVuZGVy
Qm94Ojpjb21wdXRlUmVwbGFjZWRMb2dpY2FsV2lkdGhVc2luZyhTaXplVHlwZSBzaXplVHlwZSwg
TGVuZ3RoCiAgICAgICAgIGNhc2UgTWF4Q29udGVudDogewogICAgICAgICAgICAgLy8gTWluQ29u
dGVudC9NYXhDb250ZW50IGRvbid0IG5lZWQgdGhlIGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCBhcmd1
bWVudC4KICAgICAgICAgICAgIExheW91dFVuaXQgYXZhaWxhYmxlTG9naWNhbFdpZHRoID0gMDsK
LSAgICAgICAgICAgIHJldHVybiBjb21wdXRlSW50cmluc2ljTG9naWNhbFdpZHRoVXNpbmcobG9n
aWNhbFdpZHRoLCBhdmFpbGFibGVMb2dpY2FsV2lkdGgpIC0gYm9yZGVyQW5kUGFkZGluZ0xvZ2lj
YWxXaWR0aCgpOworICAgICAgICAgICAgcmV0dXJuIGNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsV2lk
dGhVc2luZyhsb2dpY2FsV2lkdGgsIGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCwgYm9yZGVyQW5kUGFk
ZGluZ0xvZ2ljYWxXaWR0aCgpKSAtIGJvcmRlckFuZFBhZGRpbmdMb2dpY2FsV2lkdGgoKTsKICAg
ICAgICAgfQogICAgICAgICBjYXNlIFZpZXdwb3J0UGVyY2VudGFnZVdpZHRoOgogICAgICAgICBj
YXNlIFZpZXdwb3J0UGVyY2VudGFnZUhlaWdodDoKQEAgLTI2MzcsNyArMjYzNSw3IEBAIExheW91
dFVuaXQgUmVuZGVyQm94Ojpjb21wdXRlUmVwbGFjZWRMb2dpY2FsV2lkdGhVc2luZyhTaXplVHlw
ZSBzaXplVHlwZSwgTGVuZ3RoCiAgICAgICAgICAgICAvLyBGSVhNRTogSGFuZGxlIGNhc2VzIHdo
ZW4gY29udGFpbmluZyBibG9jayB3aWR0aCBpcyBjYWxjdWxhdGVkIG9yIHZpZXdwb3J0IHBlcmNl
bnQuCiAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9OTEwNzEKICAgICAgICAgICAgIGlmIChsb2dpY2FsV2lkdGguaXNJbnRyaW5zaWMoKSkKLSAg
ICAgICAgICAgICAgICByZXR1cm4gY29tcHV0ZUludHJpbnNpY0xvZ2ljYWxXaWR0aFVzaW5nKGxv
Z2ljYWxXaWR0aCwgY3cpIC0gYm9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxXaWR0aCgpOworICAgICAg
ICAgICAgICAgIHJldHVybiBjb21wdXRlSW50cmluc2ljTG9naWNhbFdpZHRoVXNpbmcobG9naWNh
bFdpZHRoLCBjdywgYm9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxXaWR0aCgpKSAtIGJvcmRlckFuZFBh
ZGRpbmdMb2dpY2FsV2lkdGgoKTsKICAgICAgICAgICAgIGlmIChjdyA+IDAgfHwgKCFjdyAmJiAo
Y29udGFpbmVyTG9naWNhbFdpZHRoLmlzRml4ZWQoKSB8fCBjb250YWluZXJMb2dpY2FsV2lkdGgu
aXNQZXJjZW50KCkpKSkKICAgICAgICAgICAgICAgICByZXR1cm4gYWRqdXN0Q29udGVudEJveExv
Z2ljYWxXaWR0aEZvckJveFNpemluZyhtaW5pbXVtVmFsdWVGb3JMZW5ndGgobG9naWNhbFdpZHRo
LCBjdykpOwogICAgICAgICB9CkBAIC0zMTA4LDcgKzMxMDYsNyBAQCB2b2lkIFJlbmRlckJveDo6
Y29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsV2lkdGhVc2luZyhTaXplVHlwZSB3aWR0aFNpemVUeXBl
LCBMZW5ndAogICAgIGlmICh3aWR0aFNpemVUeXBlID09IE1pblNpemUgJiYgbG9naWNhbFdpZHRo
LmlzQXV0bygpKQogICAgICAgICBsb2dpY2FsV2lkdGggPSBMZW5ndGgoMCwgRml4ZWQpOwogICAg
IGVsc2UgaWYgKGxvZ2ljYWxXaWR0aC5pc0ludHJpbnNpYygpKQotICAgICAgICBsb2dpY2FsV2lk
dGggPSBMZW5ndGgoY29tcHV0ZUludHJpbnNpY0xvZ2ljYWxXaWR0aFVzaW5nKGxvZ2ljYWxXaWR0
aCwgY29udGFpbmVyTG9naWNhbFdpZHRoKSAtIGJvcmRlcnNQbHVzUGFkZGluZywgRml4ZWQpOwor
ICAgICAgICBsb2dpY2FsV2lkdGggPSBMZW5ndGgoY29tcHV0ZUludHJpbnNpY0xvZ2ljYWxXaWR0
aFVzaW5nKGxvZ2ljYWxXaWR0aCwgY29udGFpbmVyTG9naWNhbFdpZHRoLCBib3JkZXJzUGx1c1Bh
ZGRpbmcpIC0gYm9yZGVyc1BsdXNQYWRkaW5nLCBGaXhlZCk7CiAKICAgICAvLyAnbGVmdCcgYW5k
ICdyaWdodCcgY2Fubm90IGJvdGggYmUgJ2F1dG8nIGJlY2F1c2Ugb25lIHdvdWxkIG9mIGJlZW4K
ICAgICAvLyBjb252ZXJ0ZWQgdG8gdGhlIHN0YXRpYyBwb3NpdGlvbiBhbHJlYWR5CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKaW5kZXggODhiMjk1MDRiNjlmNTYyZjZlOTdmNTQwODVm
MDAxODJiNjJiNTc2My4uYWFmZDUzMzJhOTA0MjNmOTMzNmIyMWYzMTg3NjIyNjY2NmY4OWQ0NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaApAQCAtNjEwLDYgKzYxMCw4IEBAIHBy
b3RlY3RlZDoKICNlbmRpZgogCiAgICAgdm9pZCBjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxXaWR0
aChMb2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1ZXMmLCBSZW5kZXJSZWdpb24qID0gMCwgTGF5b3V0
VW5pdCBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlID0gMCkgY29uc3Q7CisKKyAgICBM
YXlvdXRVbml0IGNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsV2lkdGhVc2luZyhMZW5ndGggbG9naWNh
bFdpZHRoTGVuZ3RoLCBMYXlvdXRVbml0IGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCwgTGF5b3V0VW5p
dCBib3JkZXJBbmRQYWRkaW5nKSBjb25zdDsKICAgICAKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxk
Q29tcHV0ZVNpemVBc1JlcGxhY2VkKCkgY29uc3QgeyByZXR1cm4gaXNSZXBsYWNlZCgpICYmICFp
c0lubGluZUJsb2NrT3JJbmxpbmVUYWJsZSgpOyB9CiAKQEAgLTY1OCw4ICs2NjAsNiBAQCBwcml2
YXRlOgogICAgIExheW91dFVuaXQgZmlsbEF2YWlsYWJsZU1lYXN1cmUoTGF5b3V0VW5pdCBhdmFp
bGFibGVMb2dpY2FsV2lkdGgpIGNvbnN0OwogICAgIExheW91dFVuaXQgZmlsbEF2YWlsYWJsZU1l
YXN1cmUoTGF5b3V0VW5pdCBhdmFpbGFibGVMb2dpY2FsV2lkdGgsIExheW91dFVuaXQmIG1hcmdp
blN0YXJ0LCBMYXlvdXRVbml0JiBtYXJnaW5FbmQpIGNvbnN0OwogCi0gICAgTGF5b3V0VW5pdCBj
b21wdXRlSW50cmluc2ljTG9naWNhbFdpZHRoVXNpbmcoTGVuZ3RoIGxvZ2ljYWxXaWR0aExlbmd0
aCwgTGF5b3V0VW5pdCBhdmFpbGFibGVMb2dpY2FsV2lkdGgpIGNvbnN0OwotCiAgICAgdmlydHVh
bCB2b2lkIGNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsV2lkdGhzKExheW91dFVuaXQmIG1pbkxvZ2lj
YWxXaWR0aCwgTGF5b3V0VW5pdCYgbWF4TG9naWNhbFdpZHRoKSBjb25zdDsKIAogICAgIC8vIFRo
aXMgZnVuY3Rpb24gY2FsY3VsYXRlcyB0aGUgbWluaW11bSBhbmQgbWF4aW11bSBwcmVmZXJyZWQg
d2lkdGhzIGZvciBhbiBvYmplY3QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGFibGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxl
LmNwcAppbmRleCA0OTdiY2ExNDU2N2EyZDc2MjgzNGUzYmNhYmVhZjZjNmVmMmQ0ODQ5Li41ZmVi
Y2ZiNDhjODc1M2NhMzYzN2UyYTdmNzhiN2VmZmFhYTM0NDYwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUYWJsZS5jcHAKQEAgLTI1Myw3ICsyNTMsNyBAQCB2b2lkIFJlbmRlclRh
YmxlOjp1cGRhdGVMb2dpY2FsV2lkdGgoKQogICAgIExheW91dFVuaXQgY29udGFpbmVyV2lkdGhJ
bklubGluZURpcmVjdGlvbiA9IGhhc1BlcnBlbmRpY3VsYXJDb250YWluaW5nQmxvY2sgPyBwZXJw
ZW5kaWN1bGFyQ29udGFpbmluZ0Jsb2NrTG9naWNhbEhlaWdodCgpIDogYXZhaWxhYmxlTG9naWNh
bFdpZHRoOwogCiAgICAgTGVuZ3RoIHN0eWxlTG9naWNhbFdpZHRoID0gc3R5bGUoKS0+bG9naWNh
bFdpZHRoKCk7Ci0gICAgaWYgKHN0eWxlTG9naWNhbFdpZHRoLmlzU3BlY2lmaWVkKCkgJiYgc3R5
bGVMb2dpY2FsV2lkdGguaXNQb3NpdGl2ZSgpKQorICAgIGlmICgoc3R5bGVMb2dpY2FsV2lkdGgu
aXNTcGVjaWZpZWQoKSAmJiBzdHlsZUxvZ2ljYWxXaWR0aC5pc1Bvc2l0aXZlKCkpIHx8IHN0eWxl
TG9naWNhbFdpZHRoLmlzSW50cmluc2ljKCkpCiAgICAgICAgIHNldExvZ2ljYWxXaWR0aChjb252
ZXJ0U3R5bGVMb2dpY2FsV2lkdGhUb0NvbXB1dGVkV2lkdGgoc3R5bGVMb2dpY2FsV2lkdGgsIGNv
bnRhaW5lcldpZHRoSW5JbmxpbmVEaXJlY3Rpb24pKTsKICAgICBlbHNlIHsKICAgICAgICAgLy8g
U3VidHJhY3Qgb3V0IGFueSBmaXhlZCBtYXJnaW5zIGZyb20gb3VyIGF2YWlsYWJsZSB3aWR0aCBm
b3IgYXV0byB3aWR0aCB0YWJsZXMuCkBAIC0yNzgsMTQgKzI3OCwxNCBAQCB2b2lkIFJlbmRlclRh
YmxlOjp1cGRhdGVMb2dpY2FsV2lkdGgoKQogICAgIAogICAgIC8vIEVuc3VyZSB3ZSBhcmVuJ3Qg
YmlnZ2VyIHRoYW4gb3VyIG1heC13aWR0aCBzdHlsZS4KICAgICBMZW5ndGggc3R5bGVNYXhMb2dp
Y2FsV2lkdGggPSBzdHlsZSgpLT5sb2dpY2FsTWF4V2lkdGgoKTsKLSAgICBpZiAoc3R5bGVNYXhM
b2dpY2FsV2lkdGguaXNTcGVjaWZpZWQoKSAmJiAhc3R5bGVNYXhMb2dpY2FsV2lkdGguaXNOZWdh
dGl2ZSgpKSB7CisgICAgaWYgKChzdHlsZU1heExvZ2ljYWxXaWR0aC5pc1NwZWNpZmllZCgpICYm
ICFzdHlsZU1heExvZ2ljYWxXaWR0aC5pc05lZ2F0aXZlKCkpIHx8IHN0eWxlTWF4TG9naWNhbFdp
ZHRoLmlzSW50cmluc2ljKCkpIHsKICAgICAgICAgTGF5b3V0VW5pdCBjb21wdXRlZE1heExvZ2lj
YWxXaWR0aCA9IGNvbnZlcnRTdHlsZUxvZ2ljYWxXaWR0aFRvQ29tcHV0ZWRXaWR0aChzdHlsZU1h
eExvZ2ljYWxXaWR0aCwgYXZhaWxhYmxlTG9naWNhbFdpZHRoKTsKICAgICAgICAgc2V0TG9naWNh
bFdpZHRoKG1pbjxpbnQ+KGxvZ2ljYWxXaWR0aCgpLCBjb21wdXRlZE1heExvZ2ljYWxXaWR0aCkp
OwogICAgIH0KIAogICAgIC8vIEVuc3VyZSB3ZSBhcmVuJ3Qgc21hbGxlciB0aGFuIG91ciBtaW4t
d2lkdGggc3R5bGUuCiAgICAgTGVuZ3RoIHN0eWxlTWluTG9naWNhbFdpZHRoID0gc3R5bGUoKS0+
bG9naWNhbE1pbldpZHRoKCk7Ci0gICAgaWYgKHN0eWxlTWluTG9naWNhbFdpZHRoLmlzU3BlY2lm
aWVkKCkgJiYgIXN0eWxlTWluTG9naWNhbFdpZHRoLmlzTmVnYXRpdmUoKSkgeworICAgIGlmICgo
c3R5bGVNaW5Mb2dpY2FsV2lkdGguaXNTcGVjaWZpZWQoKSAmJiAhc3R5bGVNaW5Mb2dpY2FsV2lk
dGguaXNOZWdhdGl2ZSgpKSB8fCBzdHlsZU1pbkxvZ2ljYWxXaWR0aC5pc0ludHJpbnNpYygpKSB7
CiAgICAgICAgIExheW91dFVuaXQgY29tcHV0ZWRNaW5Mb2dpY2FsV2lkdGggPSBjb252ZXJ0U3R5
bGVMb2dpY2FsV2lkdGhUb0NvbXB1dGVkV2lkdGgoc3R5bGVNaW5Mb2dpY2FsV2lkdGgsIGF2YWls
YWJsZUxvZ2ljYWxXaWR0aCk7CiAgICAgICAgIHNldExvZ2ljYWxXaWR0aChtYXg8aW50Pihsb2dp
Y2FsV2lkdGgoKSwgY29tcHV0ZWRNaW5Mb2dpY2FsV2lkdGgpKTsKICAgICB9CkBAIC0zMTYsMTEg
KzMxNiwxNSBAQCBMYXlvdXRVbml0IFJlbmRlclRhYmxlOjpjb252ZXJ0U3R5bGVMb2dpY2FsV2lk
dGhUb0NvbXB1dGVkV2lkdGgoY29uc3QgTGVuZ3RoJiBzdAogICAgIC8vIEhUTUwgdGFibGVzJyB3
aWR0aCBzdHlsZXMgYWxyZWFkeSBpbmNsdWRlIGJvcmRlcnMgYW5kIHBhZGRpbmdzLCBidXQgQ1NT
IHRhYmxlcycgd2lkdGggc3R5bGVzIGRvIG5vdC4KICAgICBMYXlvdXRVbml0IGJvcmRlcnMgPSAw
OwogICAgIGJvb2wgaXNDU1NUYWJsZSA9ICFub2RlKCkgfHwgIW5vZGUoKS0+aGFzVGFnTmFtZSh0
YWJsZVRhZyk7CisgICAgcmVjYWxjQm9yZGVyc0luUm93RGlyZWN0aW9uKCk7CiAgICAgaWYgKGlz
Q1NTVGFibGUgJiYgc3R5bGVMb2dpY2FsV2lkdGguaXNTcGVjaWZpZWQoKSAmJiBzdHlsZUxvZ2lj
YWxXaWR0aC5pc1Bvc2l0aXZlKCkpIHsKLSAgICAgICAgcmVjYWxjQm9yZGVyc0luUm93RGlyZWN0
aW9uKCk7CiAgICAgICAgIGlmIChzdHlsZSgpLT5ib3hTaXppbmcoKSA9PSBDT05URU5UX0JPWCkK
ICAgICAgICAgICAgIGJvcmRlcnMgPSBib3JkZXJTdGFydCgpICsgYm9yZGVyRW5kKCkgKyAoY29s
bGFwc2VCb3JkZXJzKCkgPyBMYXlvdXRVbml0KCkgOiBwYWRkaW5nU3RhcnQoKSArIHBhZGRpbmdF
bmQoKSk7CiAgICAgfQorICAgIGlmIChzdHlsZUxvZ2ljYWxXaWR0aC5pc0ludHJpbnNpYygpKSB7
CisgICAgICAgIExheW91dFVuaXQgYm9yZGVyQW5kUGFkZGluZyA9IGJvcmRlcnNQYWRkaW5nQW5k
U3BhY2luZ0luUm93RGlyZWN0aW9uKCk7CisgICAgICAgIHJldHVybiBjb21wdXRlSW50cmluc2lj
TG9naWNhbFdpZHRoVXNpbmcoc3R5bGVMb2dpY2FsV2lkdGgsIGF2YWlsYWJsZVdpZHRoLCBib3Jk
ZXJBbmRQYWRkaW5nKTsKKyAgICB9CiAgICAgcmV0dXJuIG1pbmltdW1WYWx1ZUZvckxlbmd0aChz
dHlsZUxvZ2ljYWxXaWR0aCwgYXZhaWxhYmxlV2lkdGgsIHZpZXcoKSkgKyBib3JkZXJzOwogfQog
CkBAIC03MTYsMTQgKzcyMCwxOCBAQCB2b2lkIFJlbmRlclRhYmxlOjpwYWludE1hc2soUGFpbnRJ
bmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldAogICAgIHBhaW50
TWFza0ltYWdlcyhwYWludEluZm8sIHJlY3QpOwogfQogCi12b2lkIFJlbmRlclRhYmxlOjpjb21w
dXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygpCit2b2lkIFJlbmRlclRhYmxlOjpjb21wdXRlSW50
cmluc2ljTG9naWNhbFdpZHRocyhMYXlvdXRVbml0JiBtaW5XaWR0aCwgTGF5b3V0VW5pdCYgbWF4
V2lkdGgpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKHByZWZlcnJlZExvZ2ljYWxXaWR0aHNEaXJ0eSgp
KTsKLQogICAgIHJlY2FsY1NlY3Rpb25zSWZOZWVkZWQoKTsKICAgICByZWNhbGNCb3JkZXJzSW5S
b3dEaXJlY3Rpb24oKTsKKyAgICBtX3RhYmxlTGF5b3V0LT5jb21wdXRlSW50cmluc2ljTG9naWNh
bFdpZHRocyhtaW5XaWR0aCwgbWF4V2lkdGgpOworfQorCit2b2lkIFJlbmRlclRhYmxlOjpjb21w
dXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygpCit7CisgICAgQVNTRVJUKHByZWZlcnJlZExvZ2lj
YWxXaWR0aHNEaXJ0eSgpKTsKIAotICAgIG1fdGFibGVMYXlvdXQtPmNvbXB1dGVJbnRyaW5zaWNM
b2dpY2FsV2lkdGhzKG1fbWluUHJlZmVycmVkTG9naWNhbFdpZHRoLCBtX21heFByZWZlcnJlZExv
Z2ljYWxXaWR0aCk7CisgICAgY29tcHV0ZUludHJpbnNpY0xvZ2ljYWxXaWR0aHMobV9taW5QcmVm
ZXJyZWRMb2dpY2FsV2lkdGgsIG1fbWF4UHJlZmVycmVkTG9naWNhbFdpZHRoKTsKIAogICAgIGlu
dCBib3JkZXJzUGFkZGluZ0FuZFNwYWNpbmcgPSBib3JkZXJzUGFkZGluZ0FuZFNwYWNpbmdJblJv
d0RpcmVjdGlvbigpOwogICAgIG1fbWluUHJlZmVycmVkTG9naWNhbFdpZHRoICs9IGJvcmRlcnNQ
YWRkaW5nQW5kU3BhY2luZzsKQEAgLTczMSw2ICs3MzksNyBAQCB2b2lkIFJlbmRlclRhYmxlOjpj
b21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygpCiAKICAgICBtX3RhYmxlTGF5b3V0LT5hcHBs
eVByZWZlcnJlZExvZ2ljYWxXaWR0aFF1aXJrcyhtX21pblByZWZlcnJlZExvZ2ljYWxXaWR0aCwg
bV9tYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGgpOwogCisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBp
bmNsdWRlIGNhcHRpb25zIGluIGNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsV2lkdGhzLgogICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2NhcHRpb25zLnNpemUoKTsgaSsrKQogICAgICAgICBt
X21pblByZWZlcnJlZExvZ2ljYWxXaWR0aCA9IG1heChtX21pblByZWZlcnJlZExvZ2ljYWxXaWR0
aCwgbV9jYXB0aW9uc1tpXS0+bWluUHJlZmVycmVkTG9naWNhbFdpZHRoKCkpOwogCkBAIC0xMDM3
LDcgKzEwNDYsNyBAQCBpbnQgUmVuZGVyVGFibGU6OmNhbGNCb3JkZXJFbmQoKSBjb25zdAogICAg
IHJldHVybiAoYm9yZGVyV2lkdGggKyAoc3R5bGUoKS0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigp
ID8gMSA6IDApKSAvIDI7CiB9CiAKLXZvaWQgUmVuZGVyVGFibGU6OnJlY2FsY0JvcmRlcnNJblJv
d0RpcmVjdGlvbigpCit2b2lkIFJlbmRlclRhYmxlOjpyZWNhbGNCb3JkZXJzSW5Sb3dEaXJlY3Rp
b24oKSBjb25zdAogewogICAgIC8vIEZJWE1FOiBXZSBuZWVkIHRvIGNvbXB1dGUgdGhlIGNvbGxh
cHNlZCBiZWZvcmUgLyBhZnRlciBib3JkZXJzIGluIHRoZSBzYW1lIGZhc2hpb24uCiAgICAgbV9i
b3JkZXJTdGFydCA9IGNhbGNCb3JkZXJTdGFydCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGFibGUuaAppbmRleCA1NzYwMjQxOWFlMjYyMmE4ODU4ZWFhYWRjZTY2NTVkMmJlNjJiNTli
Li5mNzE5MjhlYmFjZDg5ZDhhZTJhZTY3MDk4ZGE3OTYwODc1ZGIyMmM1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuaApAQCAtMTIyLDcgKzEyMiw3IEBAIHB1YmxpYzoKIAog
ICAgIGludCBjYWxjQm9yZGVyU3RhcnQoKSBjb25zdDsKICAgICBpbnQgY2FsY0JvcmRlckVuZCgp
IGNvbnN0OwotICAgIHZvaWQgcmVjYWxjQm9yZGVyc0luUm93RGlyZWN0aW9uKCk7CisgICAgdm9p
ZCByZWNhbGNCb3JkZXJzSW5Sb3dEaXJlY3Rpb24oKSBjb25zdDsKIAogICAgIHZpcnR1YWwgdm9p
ZCBhZGRDaGlsZChSZW5kZXJPYmplY3QqIGNoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxk
ID0gMCk7CiAKQEAgLTI3Nyw3ICsyNzcsOCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBw
YWludEJveERlY29yYXRpb25zKFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jik7CiAgICAg
dmlydHVhbCB2b2lkIHBhaW50TWFzayhQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpOwog
ICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZVByZWZl
cnJlZExvZ2ljYWxXaWR0aHMoKTsKKyAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUludHJpbnNpY0xv
Z2ljYWxXaWR0aHMoTGF5b3V0VW5pdCYgbWluV2lkdGgsIExheW91dFVuaXQmIG1heFdpZHRoKSBj
b25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZVByZWZlcnJlZExvZ2ljYWxX
aWR0aHMoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgbm9kZUF0UG9pbnQoY29uc3QgSGl0
VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgSGl0VGVzdExvY2F0aW9uJiBsb2Nh
dGlvbkluQ29udGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQsIEhp
dFRlc3RBY3Rpb24pIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCBpbnQgYmFzZWxpbmVQb3NpdGlv
bihGb250QmFzZWxpbmUsIGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSwgTGluZVBv
c2l0aW9uTW9kZSA9IFBvc2l0aW9uT25Db250YWluaW5nTGluZSkgY29uc3QgT1ZFUlJJREU7CkBA
IC0zMzIsOCArMzMzLDggQEAgcHJpdmF0ZToKIAogICAgIHNob3J0IG1faFNwYWNpbmc7CiAgICAg
c2hvcnQgbV92U3BhY2luZzsKLSAgICBpbnQgbV9ib3JkZXJTdGFydDsKLSAgICBpbnQgbV9ib3Jk
ZXJFbmQ7CisgICAgbXV0YWJsZSBpbnQgbV9ib3JkZXJTdGFydDsKKyAgICBtdXRhYmxlIGludCBt
X2JvcmRlckVuZDsKIH07CiAKIGlubGluZSBSZW5kZXJUYWJsZVNlY3Rpb24qIFJlbmRlclRhYmxl
Ojp0b3BTZWN0aW9uKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9UYWJsZUxheW91dC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RhYmxlTGF5b3V0LmgK
aW5kZXggNjc0NzJiOTdjNzM2MzZhMDg5MzAyYmFiZWIwYjdiNWU3YjU2MWViMy4uZTlmODJhMDQ1
YzQzYzEwMGY1MTBkZGIyODNlN2VlYmExMjE1NDE3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1RhYmxlTGF5b3V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1RhYmxlTGF5b3V0LmgKQEAgLTM4LDcgKzM4LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+
VGFibGVMYXlvdXQoKSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlSW50cmluc2ljTG9n
aWNhbFdpZHRocyhMYXlvdXRVbml0JiBtaW5XaWR0aCwgTGF5b3V0VW5pdCYgbWF4V2lkdGgpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUludHJpbnNpY0xvZ2ljYWxXaWR0aHMoTGF5b3V0
VW5pdCYgbWluV2lkdGgsIExheW91dFVuaXQmIG1heFdpZHRoKSBjb25zdCA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIGFwcGx5UHJlZmVycmVkTG9naWNhbFdpZHRoUXVpcmtzKExheW91dFVuaXQmIG1p
bldpZHRoLCBMYXlvdXRVbml0JiBtYXhXaWR0aCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBsYXlvdXQoKSA9IDA7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA5MzE0ZjgxNWExZWFiNTc1ZDdjYjFjNjdiOTU0NzJh
ZjhiMTVlNTEzLi4wODJhYmM5N2E2ZDk4NzgwMDdjYzRmOTgyMWQ0MjNjNWExMmMxODM4IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTUgQEAKKzIwMTMtMDMtMDUgIE9qYW4gVmFmYWkgIDxvamFuQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBJbnRyaW5zaWMgd2lkdGgga2V5d29yZCB2YWx1ZXMgZG9uJ3Qgd29y
ayBmb3IgdGFibGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMTE1MTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIGZhc3QvY3NzLWludHJpbnNpYy1kaW1lbnNpb25zL2Nzcy10YWJsZXMtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy1pbnRyaW5zaWMtZGltZW5zaW9ucy9jc3Mt
dGFibGVzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzLWludHJpbnNpYy1kaW1lbnNp
b25zL3RhYmxlcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzLWludHJp
bnNpYy1kaW1lbnNpb25zL3RhYmxlcy5odG1sOiBBZGRlZC4KKwogMjAxMy0wMy0wNSAgRW1pbCBB
IEVrbHVuZCAgPGVhZUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQVNTRVJUSU9OIEZBSUxFRDog
aSA8IHNpemUoKSwgVU5LTk9XTiBpbiBXZWJDb3JlOjpSZW5kZXJUYWJsZVNlY3Rpb246OmxheW91
dApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MtaW50cmluc2ljLWRpbWVuc2lvbnMv
Y3NzLXRhYmxlcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1pbnRyaW5zaWMt
ZGltZW5zaW9ucy9jc3MtdGFibGVzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNDk2ZTEwMTc1
YjQyYmI4NmIzNThmOTExNzM3MTYyZWQ4NzNiOGUxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9jc3MtaW50cmluc2ljLWRpbWVuc2lvbnMvY3NzLXRhYmxlcy1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwyNSBAQAorIAorUEFTUworIFBBU1MKKyAKK1BBU1MKKyBQQVNTCisgCitQ
QVNTCisgCitQQVNTCisgCitQQVNTCisgCitQQVNTCisgUEFTUworIAorUEFTUworIFBBU1MKKyAK
K1BBU1MKKyAKK1BBU1MKKyAKK1BBU1MKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9j
c3MtaW50cmluc2ljLWRpbWVuc2lvbnMvY3NzLXRhYmxlcy5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC9jc3MtaW50cmluc2ljLWRpbWVuc2lvbnMvY3NzLXRhYmxlcy5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVm
OGQxNWU2ZWU5NjQ3Zjg0MjBjZTBiMzRmODE5MmE4NWIxMDJkYTMKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1pbnRyaW5zaWMtZGltZW5zaW9ucy9jc3MtdGFibGVzLmh0
bWwKQEAgLTAsMCArMSwxMzUgQEAKKzwhRE9DVFlQRSBodG1sPgorPHN0eWxlPgorLnRhYmxlIHsK
KyAgICBkaXNwbGF5OiB0YWJsZTsKKyAgICBib3JkZXI6IDVweCBzb2xpZCBzYWxtb247CisgICAg
cGFkZGluZzogNXB4OworfQorLnRkIHsKKyAgICBkaXNwbGF5OiB0YWJsZS1jZWxsOworfQorLmNo
aWxkIHsKKyAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgd2lkdGg6IDUwcHg7CisgICAg
aGVpZ2h0OiAyMHB4OworICAgIGJhY2tncm91bmQtY29sb3I6IHBpbms7Cit9CisuY29sbGFwc2Ug
eworICAgIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7Cit9Cis8L3N0eWxlPgorCis8ZGl2IGNs
YXNzPSJ0YWJsZSIgZGF0YS1leHBlY3RlZC13aWR0aD0xMjQ+CisgICAgPGRpdiBjbGFzcz0idGQi
PgorICAgICAgICA8ZGl2IGNsYXNzPSJjaGlsZCI+PC9kaXY+CisgICAgICAgIDxkaXYgY2xhc3M9
ImNoaWxkIj48L2Rpdj4KKyAgICA8L2Rpdj4KKzwvZGl2PgorCis8ZGl2IGNsYXNzPSJ0YWJsZSIg
c3R5bGU9IndpZHRoOiAtd2Via2l0LW1pbi1jb250ZW50IiBkYXRhLWV4cGVjdGVkLXdpZHRoPTcw
PgorICAgIDxkaXYgY2xhc3M9InRkIj4KKyAgICAgICAgPGRpdiBjbGFzcz0iY2hpbGQiPjwvZGl2
PgorICAgICAgICA8ZGl2IGNsYXNzPSJjaGlsZCI+PC9kaXY+CisgICAgPC9kaXY+Cis8L2Rpdj4K
KworPGRpdiBjbGFzcz0idGFibGUiIHN0eWxlPSJ3aWR0aDogLXdlYmtpdC1tYXgtY29udGVudCIg
ZGF0YS1leHBlY3RlZC13aWR0aD0xMjQ+CisgICAgPGRpdiBjbGFzcz0idGQiPgorICAgICAgICA8
ZGl2IGNsYXNzPSJjaGlsZCI+PC9kaXY+CisgICAgICAgIDxkaXYgY2xhc3M9ImNoaWxkIj48L2Rp
dj4KKyAgICA8L2Rpdj4KKzwvZGl2PgorCis8ZGl2IHN0eWxlPSJ3aWR0aDogMTAwcHgiPgorICAg
IDxkaXYgY2xhc3M9InRhYmxlIiBzdHlsZT0id2lkdGg6IC13ZWJraXQtZml0LWNvbnRlbnQiIGRh
dGEtZXhwZWN0ZWQtd2lkdGg9MTAwPgorICAgICAgICA8ZGl2IGNsYXNzPSJ0ZCI+CisgICAgICAg
ICAgICA8ZGl2IGNsYXNzPSJjaGlsZCI+PC9kaXY+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJj
aGlsZCI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvZGl2PgorPC9kaXY+CisKKzxkaXYg
Y2xhc3M9InRhYmxlIiBzdHlsZT0id2lkdGg6IC13ZWJraXQtZml0LWNvbnRlbnQiIGRhdGEtZXhw
ZWN0ZWQtd2lkdGg9MTI0PgorICAgIDxkaXYgY2xhc3M9InRkIj4KKyAgICAgICAgPGRpdiBjbGFz
cz0iY2hpbGQiPjwvZGl2PgorICAgICAgICA8ZGl2IGNsYXNzPSJjaGlsZCI+PC9kaXY+CisgICAg
PC9kaXY+Cis8L2Rpdj4KKworPGRpdiBzdHlsZT0id2lkdGg6IDQwMHB4Ij4KKyAgICA8ZGl2IGNs
YXNzPSJ0YWJsZSIgc3R5bGU9IndpZHRoOiAtd2Via2l0LWZpdC1jb250ZW50IiBkYXRhLWV4cGVj
dGVkLXdpZHRoPTEyND4KKyAgICAgICAgPGRpdiBjbGFzcz0idGQiPgorICAgICAgICAgICAgPGRp
diBjbGFzcz0iY2hpbGQiPjwvZGl2PgorICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2hpbGQiPjwv
ZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKzwvZGl2PgorCis8ZGl2IHN0eWxlPSJ3
aWR0aDogNDAwcHgiPgorICAgIDxkaXYgY2xhc3M9InRhYmxlIiBzdHlsZT0id2lkdGg6IC13ZWJr
aXQtZmlsbC1hdmFpbGFibGUiICBkYXRhLWV4cGVjdGVkLXdpZHRoPTQwMD4KKyAgICAgICAgPGRp
diBjbGFzcz0idGQiPgorICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2hpbGQiPjwvZGl2PgorICAg
ICAgICAgICAgPGRpdiBjbGFzcz0iY2hpbGQiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8
L2Rpdj4KKzxkaXY+CisKKzxkaXYgY2xhc3M9InRhYmxlIGNvbGxhcHNlIiBkYXRhLWV4cGVjdGVk
LXdpZHRoPTExND4KKyAgICA8ZGl2IGNsYXNzPSJ0ZCI+CisgICAgICAgIDxkaXYgY2xhc3M9ImNo
aWxkIj48L2Rpdj4KKyAgICAgICAgPGRpdiBjbGFzcz0iY2hpbGQiPjwvZGl2PgorICAgIDwvZGl2
PgorPC9kaXY+CisKKzxkaXYgY2xhc3M9InRhYmxlIGNvbGxhcHNlIiBzdHlsZT0id2lkdGg6IC13
ZWJraXQtbWluLWNvbnRlbnQiIGRhdGEtZXhwZWN0ZWQtd2lkdGg9NjA+CisgICAgPGRpdiBjbGFz
cz0idGQiPgorICAgICAgICA8ZGl2IGNsYXNzPSJjaGlsZCI+PC9kaXY+CisgICAgICAgIDxkaXYg
Y2xhc3M9ImNoaWxkIj48L2Rpdj4KKyAgICA8L2Rpdj4KKzwvZGl2PgorCis8ZGl2IGNsYXNzPSJ0
YWJsZSBjb2xsYXBzZSIgc3R5bGU9IndpZHRoOiAtd2Via2l0LW1heC1jb250ZW50IiBkYXRhLWV4
cGVjdGVkLXdpZHRoPTExND4KKyAgICA8ZGl2IGNsYXNzPSJ0ZCI+CisgICAgICAgIDxkaXYgY2xh
c3M9ImNoaWxkIj48L2Rpdj4KKyAgICAgICAgPGRpdiBjbGFzcz0iY2hpbGQiPjwvZGl2PgorICAg
IDwvZGl2PgorPC9kaXY+CisKKzxkaXYgc3R5bGU9IndpZHRoOiAxMDBweCI+CisgICAgPGRpdiBj
bGFzcz0idGFibGUgY29sbGFwc2UiIHN0eWxlPSJ3aWR0aDogLXdlYmtpdC1maXQtY29udGVudCIg
ZGF0YS1leHBlY3RlZC13aWR0aD0xMDA+CisgICAgICAgIDxkaXYgY2xhc3M9InRkIj4KKyAgICAg
ICAgICAgIDxkaXYgY2xhc3M9ImNoaWxkIj48L2Rpdj4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9
ImNoaWxkIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9kaXY+Cis8L2Rpdj4KKworPGRp
diBjbGFzcz0idGFibGUgY29sbGFwc2UiIHN0eWxlPSJ3aWR0aDogLXdlYmtpdC1maXQtY29udGVu
dCIgZGF0YS1leHBlY3RlZC13aWR0aD0xMTQ+CisgICAgPGRpdiBjbGFzcz0idGQiPgorICAgICAg
ICA8ZGl2IGNsYXNzPSJjaGlsZCI+PC9kaXY+CisgICAgICAgIDxkaXYgY2xhc3M9ImNoaWxkIj48
L2Rpdj4KKyAgICA8L2Rpdj4KKzwvZGl2PgorCis8ZGl2IHN0eWxlPSJ3aWR0aDogNDAwcHgiPgor
ICAgIDxkaXYgY2xhc3M9InRhYmxlIGNvbGxhcHNlIiBzdHlsZT0id2lkdGg6IC13ZWJraXQtZml0
LWNvbnRlbnQiIGRhdGEtZXhwZWN0ZWQtd2lkdGg9MTE0PgorICAgICAgICA8ZGl2IGNsYXNzPSJ0
ZCI+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjaGlsZCI+PC9kaXY+CisgICAgICAgICAgICA8
ZGl2IGNsYXNzPSJjaGlsZCI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvZGl2PgorPC9k
aXY+CisKKzxkaXYgc3R5bGU9IndpZHRoOiA0MDBweCI+CisgICAgPGRpdiBjbGFzcz0idGFibGUg
Y29sbGFwc2UiIHN0eWxlPSJ3aWR0aDogLXdlYmtpdC1maWxsLWF2YWlsYWJsZSIgIGRhdGEtZXhw
ZWN0ZWQtd2lkdGg9NDAwPgorICAgICAgICA8ZGl2IGNsYXNzPSJ0ZCI+CisgICAgICAgICAgICA8
ZGl2IGNsYXNzPSJjaGlsZCI+PC9kaXY+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjaGlsZCI+
PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvZGl2PgorPGRpdj4KKworPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy9jaGVjay1sYXlvdXQuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2No
ZWNrTGF5b3V0KCcudGFibGUnKTsKKzwvc2NyaXB0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWludHJpbnNpYy1kaW1lbnNpb25z
L3RhYmxlcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1pbnRyaW5zaWMtZGlt
ZW5zaW9ucy90YWJsZXMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM0OTZlMTAxNzViNDJiYjg2
YjM1OGY5MTE3MzcxNjJlZDg3M2I4ZTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2Nzcy1pbnRyaW5zaWMtZGltZW5zaW9ucy90YWJsZXMtZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsMjUgQEAKKyAKK1BBU1MKKyBQQVNTCisgCitQQVNTCisgUEFTUworIAorUEFTUworIAorUEFT
UworIAorUEFTUworIAorUEFTUworIFBBU1MKKyAKK1BBU1MKKyBQQVNTCisgCitQQVNTCisgCitQ
QVNTCisgCitQQVNTCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWludHJpbnNp
Yy1kaW1lbnNpb25zL3RhYmxlcy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtaW50cmluc2lj
LWRpbWVuc2lvbnMvdGFibGVzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWZlOTFiMjUzMmMxNDU1MzVlNmI1
MGNiNjdkNmFjZTQ0NDIzYzllMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
Y3NzLWludHJpbnNpYy1kaW1lbnNpb25zL3RhYmxlcy5odG1sCkBAIC0wLDAgKzEsMTMxIEBACis8
IURPQ1RZUEUgaHRtbD4KKzxzdHlsZT4KK3RhYmxlIHsKKyAgICBib3JkZXI6IDVweCBzb2xpZCBz
YWxtb247CisgICAgcGFkZGluZzogNXB4OworfQorLmNoaWxkIHsKKyAgICBkaXNwbGF5OiBpbmxp
bmUtYmxvY2s7CisgICAgd2lkdGg6IDUwcHg7CisgICAgaGVpZ2h0OiAyMHB4OworICAgIGJhY2tn
cm91bmQtY29sb3I6IHBpbms7Cit9CisuY29sbGFwc2UgeworICAgIGJvcmRlci1jb2xsYXBzZTog
Y29sbGFwc2U7Cit9Cis8L3N0eWxlPgorCis8dGFibGUgZGF0YS1leHBlY3RlZC13aWR0aD0xMzA+
CisgICAgPHRkPgorICAgICAgICA8ZGl2IGNsYXNzPSJjaGlsZCI+PC9kaXY+CisgICAgICAgIDxk
aXYgY2xhc3M9ImNoaWxkIj48L2Rpdj4KKyAgICA8L3RkPgorPC90YWJsZT4KKworPHRhYmxlIHN0
eWxlPSJ3aWR0aDogLXdlYmtpdC1taW4tY29udGVudCIgZGF0YS1leHBlY3RlZC13aWR0aD03Nj4K
KyAgICA8dGQ+CisgICAgICAgIDxkaXYgY2xhc3M9ImNoaWxkIj48L2Rpdj4KKyAgICAgICAgPGRp
diBjbGFzcz0iY2hpbGQiPjwvZGl2PgorICAgIDwvdGQ+Cis8L3RhYmxlPgorCis8dGFibGUgc3R5
bGU9IndpZHRoOiAtd2Via2l0LW1heC1jb250ZW50IiBkYXRhLWV4cGVjdGVkLXdpZHRoPTEzMD4K
KyAgICA8dGQ+CisgICAgICAgIDxkaXYgY2xhc3M9ImNoaWxkIj48L2Rpdj4KKyAgICAgICAgPGRp
diBjbGFzcz0iY2hpbGQiPjwvZGl2PgorICAgIDwvdGQ+Cis8L3RhYmxlPgorCis8ZGl2IHN0eWxl
PSJ3aWR0aDogMTAwcHgiPgorICAgIDx0YWJsZSBzdHlsZT0id2lkdGg6IC13ZWJraXQtZml0LWNv
bnRlbnQiIGRhdGEtZXhwZWN0ZWQtd2lkdGg9MTAwPgorICAgICAgICA8dGQ+CisgICAgICAgICAg
ICA8ZGl2IGNsYXNzPSJjaGlsZCI+PC9kaXY+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjaGls
ZCI+PC9kaXY+CisgICAgICAgIDwvdGQ+CisgICAgPC90YWJsZT4KKzwvZGl2PgorCis8dGFibGUg
c3R5bGU9IndpZHRoOiAtd2Via2l0LWZpdC1jb250ZW50IiBkYXRhLWV4cGVjdGVkLXdpZHRoPTEz
MD4KKyAgICA8dGQ+CisgICAgICAgIDxkaXYgY2xhc3M9ImNoaWxkIj48L2Rpdj4KKyAgICAgICAg
PGRpdiBjbGFzcz0iY2hpbGQiPjwvZGl2PgorICAgIDwvdGQ+Cis8L3RhYmxlPgorCis8ZGl2IHN0
eWxlPSJ3aWR0aDogNDAwcHgiPgorICAgIDx0YWJsZSBzdHlsZT0id2lkdGg6IC13ZWJraXQtZml0
LWNvbnRlbnQiIGRhdGEtZXhwZWN0ZWQtd2lkdGg9MTMwPgorICAgICAgICA8dGQ+CisgICAgICAg
ICAgICA8ZGl2IGNsYXNzPSJjaGlsZCI+PC9kaXY+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJj
aGlsZCI+PC9kaXY+CisgICAgICAgIDwvdGQ+CisgICAgPC90YWJsZT4KKzwvZGl2PgorCis8ZGl2
IHN0eWxlPSJ3aWR0aDogNDAwcHgiPgorICAgIDx0YWJsZSBzdHlsZT0id2lkdGg6IC13ZWJraXQt
ZmlsbC1hdmFpbGFibGUiICBkYXRhLWV4cGVjdGVkLXdpZHRoPTQwMD4KKyAgICAgICAgPHRkPgor
ICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2hpbGQiPjwvZGl2PgorICAgICAgICAgICAgPGRpdiBj
bGFzcz0iY2hpbGQiPjwvZGl2PgorICAgICAgICA8L3RkPgorICAgIDwvdGFibGU+Cis8ZGl2Pgor
Cis8dGFibGUgY2xhc3M9ImNvbGxhcHNlIiBkYXRhLWV4cGVjdGVkLXdpZHRoPTExNj4KKyAgICA8
dGQ+CisgICAgICAgIDxkaXYgY2xhc3M9ImNoaWxkIj48L2Rpdj4KKyAgICAgICAgPGRpdiBjbGFz
cz0iY2hpbGQiPjwvZGl2PgorICAgIDwvdGQ+Cis8L3RhYmxlPgorCis8dGFibGUgY2xhc3M9ImNv
bGxhcHNlIiBzdHlsZT0id2lkdGg6IC13ZWJraXQtbWluLWNvbnRlbnQiIGRhdGEtZXhwZWN0ZWQt
d2lkdGg9NjI+CisgICAgPHRkPgorICAgICAgICA8ZGl2IGNsYXNzPSJjaGlsZCI+PC9kaXY+Cisg
ICAgICAgIDxkaXYgY2xhc3M9ImNoaWxkIj48L2Rpdj4KKyAgICA8L3RkPgorPC90YWJsZT4KKwor
PHRhYmxlIGNsYXNzPSJjb2xsYXBzZSIgc3R5bGU9IndpZHRoOiAtd2Via2l0LW1heC1jb250ZW50
IiBkYXRhLWV4cGVjdGVkLXdpZHRoPTExNj4KKyAgICA8dGQ+CisgICAgICAgIDxkaXYgY2xhc3M9
ImNoaWxkIj48L2Rpdj4KKyAgICAgICAgPGRpdiBjbGFzcz0iY2hpbGQiPjwvZGl2PgorICAgIDwv
dGQ+Cis8L3RhYmxlPgorCis8ZGl2IHN0eWxlPSJ3aWR0aDogMTAwcHgiPgorICAgIDx0YWJsZSBj
bGFzcz0iY29sbGFwc2UiIHN0eWxlPSJ3aWR0aDogLXdlYmtpdC1maXQtY29udGVudCIgZGF0YS1l
eHBlY3RlZC13aWR0aD0xMDA+CisgICAgICAgIDx0ZD4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9
ImNoaWxkIj48L2Rpdj4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNoaWxkIj48L2Rpdj4KKyAg
ICAgICAgPC90ZD4KKyAgICA8L3RhYmxlPgorPC9kaXY+CisKKzx0YWJsZSBjbGFzcz0iY29sbGFw
c2UiIHN0eWxlPSJ3aWR0aDogLXdlYmtpdC1maXQtY29udGVudCIgZGF0YS1leHBlY3RlZC13aWR0
aD0xMTY+CisgICAgPHRkPgorICAgICAgICA8ZGl2IGNsYXNzPSJjaGlsZCI+PC9kaXY+CisgICAg
ICAgIDxkaXYgY2xhc3M9ImNoaWxkIj48L2Rpdj4KKyAgICA8L3RkPgorPC90YWJsZT4KKworPGRp
diBzdHlsZT0id2lkdGg6IDQwMHB4Ij4KKyAgICA8dGFibGUgY2xhc3M9ImNvbGxhcHNlIiBzdHls
ZT0id2lkdGg6IC13ZWJraXQtZml0LWNvbnRlbnQiIGRhdGEtZXhwZWN0ZWQtd2lkdGg9MTE2Pgor
ICAgICAgICA8dGQ+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjaGlsZCI+PC9kaXY+CisgICAg
ICAgICAgICA8ZGl2IGNsYXNzPSJjaGlsZCI+PC9kaXY+CisgICAgICAgIDwvdGQ+CisgICAgPC90
YWJsZT4KKzwvZGl2PgorCis8ZGl2IHN0eWxlPSJ3aWR0aDogNDAwcHgiPgorICAgIDx0YWJsZSBj
bGFzcz0iY29sbGFwc2UiIHN0eWxlPSJ3aWR0aDogLXdlYmtpdC1maWxsLWF2YWlsYWJsZSIgIGRh
dGEtZXhwZWN0ZWQtd2lkdGg9NDAwPgorICAgICAgICA8dGQ+CisgICAgICAgICAgICA8ZGl2IGNs
YXNzPSJjaGlsZCI+PC9kaXY+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjaGlsZCI+PC9kaXY+
CisgICAgICAgIDwvdGQ+CisgICAgPC90YWJsZT4KKzxkaXY+CisKKzxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvY2hlY2stbGF5b3V0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitjaGVja0xh
eW91dCgndGFibGUnKTsKKzwvc2NyaXB0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192057</attachid>
            <date>2013-03-07 11:50:01 -0800</date>
            <delta_ts>2013-03-11 16:18:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-111515-20130307194605.patch</filename>
            <type>text/plain</type>
            <size>22214</size>
            <attacher name="Ojan Vafai">ojan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1MTA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2JiZWRhNzExNTAyYjlm
OTg5Mzc3ZDE1OGJjMDFjNjA5MTNmODcyNC4uZDEyMTg0YmFkNjYyOTE2ZGJlMWI5OGYzNDdmMDU0
YTIxNDk2MDYxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDEzLTAzLTA1ICBPamFu
IFZhZmFpICA8b2phbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW50cmluc2ljIHdpZHRoIGtl
eXdvcmQgdmFsdWVzIGRvbid0IHdvcmsgZm9yIHRhYmxlcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTExNTE1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHM6IGZhc3QvY3NzLWludHJpbnNpYy1kaW1l
bnNpb25zL2Nzcy10YWJsZXMuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9jc3MtaW50cmluc2lj
LWRpbWVuc2lvbnMvdGFibGVzLmh0bWwKKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3gu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpjb21wdXRlSW50cmluc2ljTG9naWNh
bFdpZHRoVXNpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpjb21wdXRlTG9naWNh
bFdpZHRoSW5SZWdpb25Vc2luZyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1
dGVSZXBsYWNlZExvZ2ljYWxXaWR0aFVzaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJv
eDo6Y29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsV2lkdGhVc2luZyk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckJveC5oOgorICAgICAgICBQYXNzIGluIHRoZSBib3JkZXIgYW5kIHBhZGRpbmcg
YXMgYW4gYXJndW1lbnQgc2luY2UgUmVuZGVyVGFibGUgbmVlZHMKKyAgICAgICAgdG8gcGFzcyBp
biBhIGRpZmZlcmVudCB2YWx1ZS4gVW5mb3J0dW5hdGVseSwgdGhlIG1hdGggZG9lc24ndCB3b3Jr
IG91dCByaWdodAorICAgICAgICBpbiB0aGUgcG9zaXRpb25lZC9yZXBsYWNlZCBjYXNlcyBpZiB3
ZSBqdXN0IHBhc3MgMC4gV2UgbmVlZCB0byBwYXNzIGluIHRoZSBjb3JyZWN0CisgICAgICAgIGJv
cmRlciBhbmQgcGFkZGluZyBhbmQgdGhlbiBzdWJ0cmFjdCBpdCBmcm9tIHRoZSByZXN1bHQuCisK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVGFibGU6OnVwZGF0ZUxvZ2ljYWxXaWR0aCk6CisgICAgICAgIENvbXB1dGUgaW50cmlu
c2ljIHdpZHRocyBhcyB3ZWxsIGFzIHNwZWNpZmllZCBvbmVzLiBEb3duIHRoZSByb2FkCisgICAg
ICAgIHdlIG1heSB3YW50IHRvIGNvbnNpZGVyIGhhdmluZyBpbnRyaW5zaWMgd2lkdGggdmFsdWVz
IHJldHVybiB0cnVlIGZvcgorICAgICAgICBpc1NwZWNpZmllZC4KKworICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGFibGU6OmNvbnZlcnRTdHlsZUxvZ2ljYWxXaWR0aFRvQ29tcHV0ZWRXaWR0aCk6
CisgICAgICAgIENvbXB1dGUgaW50cmluc2ljIHdpZHRocyBhcyB3ZWxsLgorCisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUYWJsZTo6Y29tcHV0ZUludHJpbnNpY0xvZ2ljYWxXaWR0aHMpOgorICAg
ICAgICBJbXBsZW1lbnQgdGhpcyBtZXRob2Qgc28gdGhhdCB0aGUgUmVuZGVyQm94Ojpjb21wdXRl
SW50cmluc2ljTG9naWNhbFdpZHRoVXNpbmcKKyAgICAgICAgZ2V0cyB0aGUgcmlnaHQgaW50cmlu
c2ljIHZhbHVlcyBpbnN0ZWFkIG9mIHRoZSBwcmVmZXJyZWQgdmFsdWVzLgorCisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUYWJsZTo6Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZS5oOgorCiAyMDEzLTAzLTA3ICBBbmRyZXkgTHVz
aG5pa292ICA8bHVzaG5pa292QGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9y
OiBbQUNFXSBzZXQgY29ycmVjdCBmb250CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3gu
Y3BwCmluZGV4IDQ1NzMzODBkNDYyODk1NTdlNTczZTliMWNmMTdlY2E2YmE1MWQ5NzQuLjBkZGQ3
YTc0YzFhZWUyMGFjOTc2NmIxZTcwZjI5NWQ3MGRkNWJlNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3guY3BwCkBAIC0yMDU0LDcgKzIwNTQsNyBAQCBMYXlvdXRVbml0IFJlbmRl
ckJveDo6ZmlsbEF2YWlsYWJsZU1lYXN1cmUoTGF5b3V0VW5pdCBhdmFpbGFibGVMb2dpY2FsV2lk
dGgsIExheQogICAgIHJldHVybiBhdmFpbGFibGVMb2dpY2FsV2lkdGggLSBtYXJnaW5TdGFydCAt
IG1hcmdpbkVuZDsKIH0KIAotTGF5b3V0VW5pdCBSZW5kZXJCb3g6OmNvbXB1dGVJbnRyaW5zaWNM
b2dpY2FsV2lkdGhVc2luZyhMZW5ndGggbG9naWNhbFdpZHRoTGVuZ3RoLCBMYXlvdXRVbml0IGF2
YWlsYWJsZUxvZ2ljYWxXaWR0aCkgY29uc3QKK0xheW91dFVuaXQgUmVuZGVyQm94Ojpjb21wdXRl
SW50cmluc2ljTG9naWNhbFdpZHRoVXNpbmcoTGVuZ3RoIGxvZ2ljYWxXaWR0aExlbmd0aCwgTGF5
b3V0VW5pdCBhdmFpbGFibGVMb2dpY2FsV2lkdGgsIExheW91dFVuaXQgYm9yZGVyQW5kUGFkZGlu
ZykgY29uc3QKIHsKICAgICBpZiAobG9naWNhbFdpZHRoTGVuZ3RoLnR5cGUoKSA9PSBGaWxsQXZh
aWxhYmxlKQogICAgICAgICByZXR1cm4gZmlsbEF2YWlsYWJsZU1lYXN1cmUoYXZhaWxhYmxlTG9n
aWNhbFdpZHRoKTsKQEAgLTIwNjMsOCArMjA2Myw2IEBAIExheW91dFVuaXQgUmVuZGVyQm94Ojpj
b21wdXRlSW50cmluc2ljTG9naWNhbFdpZHRoVXNpbmcoTGVuZ3RoIGxvZ2ljYWxXaWR0aExlbmd0
CiAgICAgTGF5b3V0VW5pdCBtYXhMb2dpY2FsV2lkdGggPSAwOwogICAgIGNvbXB1dGVJbnRyaW5z
aWNMb2dpY2FsV2lkdGhzKG1pbkxvZ2ljYWxXaWR0aCwgbWF4TG9naWNhbFdpZHRoKTsKIAotICAg
IExheW91dFVuaXQgYm9yZGVyQW5kUGFkZGluZyA9IGJvcmRlckFuZFBhZGRpbmdMb2dpY2FsV2lk
dGgoKTsKLQogICAgIGlmIChsb2dpY2FsV2lkdGhMZW5ndGgudHlwZSgpID09IE1pbkNvbnRlbnQp
CiAgICAgICAgIHJldHVybiBtaW5Mb2dpY2FsV2lkdGggKyBib3JkZXJBbmRQYWRkaW5nOwogCkBA
IC0yMTA0LDcgKzIxMDIsNyBAQCBMYXlvdXRVbml0IFJlbmRlckJveDo6Y29tcHV0ZUxvZ2ljYWxX
aWR0aEluUmVnaW9uVXNpbmcoU2l6ZVR5cGUgd2lkdGhUeXBlLCBMYXlvdQogICAgIH0KIAogICAg
IGlmIChsb2dpY2FsV2lkdGguaXNJbnRyaW5zaWMoKSkKLSAgICAgICAgcmV0dXJuIGNvbXB1dGVJ
bnRyaW5zaWNMb2dpY2FsV2lkdGhVc2luZyhsb2dpY2FsV2lkdGgsIGF2YWlsYWJsZUxvZ2ljYWxX
aWR0aCk7CisgICAgICAgIHJldHVybiBjb21wdXRlSW50cmluc2ljTG9naWNhbFdpZHRoVXNpbmco
bG9naWNhbFdpZHRoLCBhdmFpbGFibGVMb2dpY2FsV2lkdGgsIGJvcmRlckFuZFBhZGRpbmdMb2dp
Y2FsV2lkdGgoKSk7CiAKICAgICBMYXlvdXRVbml0IG1hcmdpblN0YXJ0ID0gMDsKICAgICBMYXlv
dXRVbml0IG1hcmdpbkVuZCA9IDA7CkBAIC0yNjA5LDcgKzI2MDcsNyBAQCBMYXlvdXRVbml0IFJl
bmRlckJveDo6Y29tcHV0ZVJlcGxhY2VkTG9naWNhbFdpZHRoVXNpbmcoU2l6ZVR5cGUgc2l6ZVR5
cGUsIExlbmd0aAogICAgICAgICBjYXNlIE1heENvbnRlbnQ6IHsKICAgICAgICAgICAgIC8vIE1p
bkNvbnRlbnQvTWF4Q29udGVudCBkb24ndCBuZWVkIHRoZSBhdmFpbGFibGVMb2dpY2FsV2lkdGgg
YXJndW1lbnQuCiAgICAgICAgICAgICBMYXlvdXRVbml0IGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCA9
IDA7Ci0gICAgICAgICAgICByZXR1cm4gY29tcHV0ZUludHJpbnNpY0xvZ2ljYWxXaWR0aFVzaW5n
KGxvZ2ljYWxXaWR0aCwgYXZhaWxhYmxlTG9naWNhbFdpZHRoKSAtIGJvcmRlckFuZFBhZGRpbmdM
b2dpY2FsV2lkdGgoKTsKKyAgICAgICAgICAgIHJldHVybiBjb21wdXRlSW50cmluc2ljTG9naWNh
bFdpZHRoVXNpbmcobG9naWNhbFdpZHRoLCBhdmFpbGFibGVMb2dpY2FsV2lkdGgsIGJvcmRlckFu
ZFBhZGRpbmdMb2dpY2FsV2lkdGgoKSkgLSBib3JkZXJBbmRQYWRkaW5nTG9naWNhbFdpZHRoKCk7
CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBWaWV3cG9ydFBlcmNlbnRhZ2VXaWR0aDoKICAgICAg
ICAgY2FzZSBWaWV3cG9ydFBlcmNlbnRhZ2VIZWlnaHQ6CkBAIC0yNjI4LDcgKzI2MjYsNyBAQCBM
YXlvdXRVbml0IFJlbmRlckJveDo6Y29tcHV0ZVJlcGxhY2VkTG9naWNhbFdpZHRoVXNpbmcoU2l6
ZVR5cGUgc2l6ZVR5cGUsIExlbmd0aAogICAgICAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBjYXNl
cyB3aGVuIGNvbnRhaW5pbmcgYmxvY2sgd2lkdGggaXMgY2FsY3VsYXRlZCBvciB2aWV3cG9ydCBw
ZXJjZW50LgogICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTkxMDcxCiAgICAgICAgICAgICBpZiAobG9naWNhbFdpZHRoLmlzSW50cmluc2ljKCkp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsV2lkdGhVc2lu
Zyhsb2dpY2FsV2lkdGgsIGN3KSAtIGJvcmRlckFuZFBhZGRpbmdMb2dpY2FsV2lkdGgoKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gY29tcHV0ZUludHJpbnNpY0xvZ2ljYWxXaWR0aFVzaW5nKGxv
Z2ljYWxXaWR0aCwgY3csIGJvcmRlckFuZFBhZGRpbmdMb2dpY2FsV2lkdGgoKSkgLSBib3JkZXJB
bmRQYWRkaW5nTG9naWNhbFdpZHRoKCk7CiAgICAgICAgICAgICBpZiAoY3cgPiAwIHx8ICghY3cg
JiYgKGNvbnRhaW5lckxvZ2ljYWxXaWR0aC5pc0ZpeGVkKCkgfHwgY29udGFpbmVyTG9naWNhbFdp
ZHRoLmlzUGVyY2VudCgpKSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGFkanVzdENvbnRlbnRC
b3hMb2dpY2FsV2lkdGhGb3JCb3hTaXppbmcobWluaW11bVZhbHVlRm9yTGVuZ3RoKGxvZ2ljYWxX
aWR0aCwgY3cpKTsKICAgICAgICAgfQpAQCAtMzA5OSw3ICszMDk3LDcgQEAgdm9pZCBSZW5kZXJC
b3g6OmNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbFdpZHRoVXNpbmcoU2l6ZVR5cGUgd2lkdGhTaXpl
VHlwZSwgTGVuZ3QKICAgICBpZiAod2lkdGhTaXplVHlwZSA9PSBNaW5TaXplICYmIGxvZ2ljYWxX
aWR0aC5pc0F1dG8oKSkKICAgICAgICAgbG9naWNhbFdpZHRoID0gTGVuZ3RoKDAsIEZpeGVkKTsK
ICAgICBlbHNlIGlmIChsb2dpY2FsV2lkdGguaXNJbnRyaW5zaWMoKSkKLSAgICAgICAgbG9naWNh
bFdpZHRoID0gTGVuZ3RoKGNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsV2lkdGhVc2luZyhsb2dpY2Fs
V2lkdGgsIGNvbnRhaW5lckxvZ2ljYWxXaWR0aCkgLSBib3JkZXJzUGx1c1BhZGRpbmcsIEZpeGVk
KTsKKyAgICAgICAgbG9naWNhbFdpZHRoID0gTGVuZ3RoKGNvbXB1dGVJbnRyaW5zaWNMb2dpY2Fs
V2lkdGhVc2luZyhsb2dpY2FsV2lkdGgsIGNvbnRhaW5lckxvZ2ljYWxXaWR0aCwgYm9yZGVyc1Bs
dXNQYWRkaW5nKSAtIGJvcmRlcnNQbHVzUGFkZGluZywgRml4ZWQpOwogCiAgICAgLy8gJ2xlZnQn
IGFuZCAncmlnaHQnIGNhbm5vdCBib3RoIGJlICdhdXRvJyBiZWNhdXNlIG9uZSB3b3VsZCBvZiBi
ZWVuCiAgICAgLy8gY29udmVydGVkIHRvIHRoZSBzdGF0aWMgcG9zaXRpb24gYWxyZWFkeQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCmluZGV4IDFkOGYxMTBmMGVhN2Y4MzUyOWQxYzli
MzdmNjk3ZWFjMTVhZjlmNDQuLjFlM2VhY2ZkYTI1OGI1OGYyMGJjNmU3ZmI2YTU3NDZiM2JiYzIy
NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKQEAgLTYwOCw2ICs2MDgsOCBA
QCBwcm90ZWN0ZWQ6CiAjZW5kaWYKIAogICAgIHZvaWQgY29tcHV0ZVBvc2l0aW9uZWRMb2dpY2Fs
V2lkdGgoTG9naWNhbEV4dGVudENvbXB1dGVkVmFsdWVzJiwgUmVuZGVyUmVnaW9uKiA9IDAsIExh
eW91dFVuaXQgb2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSA9IDApIGNvbnN0OworCisg
ICAgTGF5b3V0VW5pdCBjb21wdXRlSW50cmluc2ljTG9naWNhbFdpZHRoVXNpbmcoTGVuZ3RoIGxv
Z2ljYWxXaWR0aExlbmd0aCwgTGF5b3V0VW5pdCBhdmFpbGFibGVMb2dpY2FsV2lkdGgsIExheW91
dFVuaXQgYm9yZGVyQW5kUGFkZGluZykgY29uc3Q7CiAgICAgCiAgICAgdmlydHVhbCBib29sIHNo
b3VsZENvbXB1dGVTaXplQXNSZXBsYWNlZCgpIGNvbnN0IHsgcmV0dXJuIGlzUmVwbGFjZWQoKSAm
JiAhaXNJbmxpbmVCbG9ja09ySW5saW5lVGFibGUoKTsgfQogCkBAIC02NTYsOCArNjU4LDYgQEAg
cHJpdmF0ZToKICAgICBMYXlvdXRVbml0IGZpbGxBdmFpbGFibGVNZWFzdXJlKExheW91dFVuaXQg
YXZhaWxhYmxlTG9naWNhbFdpZHRoKSBjb25zdDsKICAgICBMYXlvdXRVbml0IGZpbGxBdmFpbGFi
bGVNZWFzdXJlKExheW91dFVuaXQgYXZhaWxhYmxlTG9naWNhbFdpZHRoLCBMYXlvdXRVbml0JiBt
YXJnaW5TdGFydCwgTGF5b3V0VW5pdCYgbWFyZ2luRW5kKSBjb25zdDsKIAotICAgIExheW91dFVu
aXQgY29tcHV0ZUludHJpbnNpY0xvZ2ljYWxXaWR0aFVzaW5nKExlbmd0aCBsb2dpY2FsV2lkdGhM
ZW5ndGgsIExheW91dFVuaXQgYXZhaWxhYmxlTG9naWNhbFdpZHRoKSBjb25zdDsKLQogICAgIHZp
cnR1YWwgdm9pZCBjb21wdXRlSW50cmluc2ljTG9naWNhbFdpZHRocyhMYXlvdXRVbml0JiBtaW5M
b2dpY2FsV2lkdGgsIExheW91dFVuaXQmIG1heExvZ2ljYWxXaWR0aCkgY29uc3Q7CiAKICAgICAv
LyBUaGlzIGZ1bmN0aW9uIGNhbGN1bGF0ZXMgdGhlIG1pbmltdW0gYW5kIG1heGltdW0gcHJlZmVy
cmVkIHdpZHRocyBmb3IgYW4gb2JqZWN0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRhYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
YWJsZS5jcHAKaW5kZXggNjA4NWZhOGE3NWFhZTMwZTE4YThjNTZiNzRkMDVhYzJjYWMzZDcxZS4u
MzViNjAwZGVjNGI5YmE4ODBjNzM3Zjg4YWE5NjRkZjY3YzkwZmFkYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwCkBAIC0yNTMsNyArMjUzLDcgQEAgdm9pZCBSZW5k
ZXJUYWJsZTo6dXBkYXRlTG9naWNhbFdpZHRoKCkKICAgICBMYXlvdXRVbml0IGNvbnRhaW5lcldp
ZHRoSW5JbmxpbmVEaXJlY3Rpb24gPSBoYXNQZXJwZW5kaWN1bGFyQ29udGFpbmluZ0Jsb2NrID8g
cGVycGVuZGljdWxhckNvbnRhaW5pbmdCbG9ja0xvZ2ljYWxIZWlnaHQoKSA6IGF2YWlsYWJsZUxv
Z2ljYWxXaWR0aDsKIAogICAgIExlbmd0aCBzdHlsZUxvZ2ljYWxXaWR0aCA9IHN0eWxlKCktPmxv
Z2ljYWxXaWR0aCgpOwotICAgIGlmIChzdHlsZUxvZ2ljYWxXaWR0aC5pc1NwZWNpZmllZCgpICYm
IHN0eWxlTG9naWNhbFdpZHRoLmlzUG9zaXRpdmUoKSkKKyAgICBpZiAoKHN0eWxlTG9naWNhbFdp
ZHRoLmlzU3BlY2lmaWVkKCkgJiYgc3R5bGVMb2dpY2FsV2lkdGguaXNQb3NpdGl2ZSgpKSB8fCBz
dHlsZUxvZ2ljYWxXaWR0aC5pc0ludHJpbnNpYygpKQogICAgICAgICBzZXRMb2dpY2FsV2lkdGgo
Y29udmVydFN0eWxlTG9naWNhbFdpZHRoVG9Db21wdXRlZFdpZHRoKHN0eWxlTG9naWNhbFdpZHRo
LCBjb250YWluZXJXaWR0aEluSW5saW5lRGlyZWN0aW9uKSk7CiAgICAgZWxzZSB7CiAgICAgICAg
IC8vIFN1YnRyYWN0IG91dCBhbnkgZml4ZWQgbWFyZ2lucyBmcm9tIG91ciBhdmFpbGFibGUgd2lk
dGggZm9yIGF1dG8gd2lkdGggdGFibGVzLgpAQCAtMjc4LDE0ICsyNzgsMTQgQEAgdm9pZCBSZW5k
ZXJUYWJsZTo6dXBkYXRlTG9naWNhbFdpZHRoKCkKICAgICAKICAgICAvLyBFbnN1cmUgd2UgYXJl
bid0IGJpZ2dlciB0aGFuIG91ciBtYXgtd2lkdGggc3R5bGUuCiAgICAgTGVuZ3RoIHN0eWxlTWF4
TG9naWNhbFdpZHRoID0gc3R5bGUoKS0+bG9naWNhbE1heFdpZHRoKCk7Ci0gICAgaWYgKHN0eWxl
TWF4TG9naWNhbFdpZHRoLmlzU3BlY2lmaWVkKCkgJiYgIXN0eWxlTWF4TG9naWNhbFdpZHRoLmlz
TmVnYXRpdmUoKSkgeworICAgIGlmICgoc3R5bGVNYXhMb2dpY2FsV2lkdGguaXNTcGVjaWZpZWQo
KSAmJiAhc3R5bGVNYXhMb2dpY2FsV2lkdGguaXNOZWdhdGl2ZSgpKSB8fCBzdHlsZU1heExvZ2lj
YWxXaWR0aC5pc0ludHJpbnNpYygpKSB7CiAgICAgICAgIExheW91dFVuaXQgY29tcHV0ZWRNYXhM
b2dpY2FsV2lkdGggPSBjb252ZXJ0U3R5bGVMb2dpY2FsV2lkdGhUb0NvbXB1dGVkV2lkdGgoc3R5
bGVNYXhMb2dpY2FsV2lkdGgsIGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCk7CiAgICAgICAgIHNldExv
Z2ljYWxXaWR0aChtaW48aW50Pihsb2dpY2FsV2lkdGgoKSwgY29tcHV0ZWRNYXhMb2dpY2FsV2lk
dGgpKTsKICAgICB9CiAKICAgICAvLyBFbnN1cmUgd2UgYXJlbid0IHNtYWxsZXIgdGhhbiBvdXIg
bWluLXdpZHRoIHN0eWxlLgogICAgIExlbmd0aCBzdHlsZU1pbkxvZ2ljYWxXaWR0aCA9IHN0eWxl
KCktPmxvZ2ljYWxNaW5XaWR0aCgpOwotICAgIGlmIChzdHlsZU1pbkxvZ2ljYWxXaWR0aC5pc1Nw
ZWNpZmllZCgpICYmICFzdHlsZU1pbkxvZ2ljYWxXaWR0aC5pc05lZ2F0aXZlKCkpIHsKKyAgICBp
ZiAoKHN0eWxlTWluTG9naWNhbFdpZHRoLmlzU3BlY2lmaWVkKCkgJiYgIXN0eWxlTWluTG9naWNh
bFdpZHRoLmlzTmVnYXRpdmUoKSkgfHwgc3R5bGVNaW5Mb2dpY2FsV2lkdGguaXNJbnRyaW5zaWMo
KSkgewogICAgICAgICBMYXlvdXRVbml0IGNvbXB1dGVkTWluTG9naWNhbFdpZHRoID0gY29udmVy
dFN0eWxlTG9naWNhbFdpZHRoVG9Db21wdXRlZFdpZHRoKHN0eWxlTWluTG9naWNhbFdpZHRoLCBh
dmFpbGFibGVMb2dpY2FsV2lkdGgpOwogICAgICAgICBzZXRMb2dpY2FsV2lkdGgobWF4PGludD4o
bG9naWNhbFdpZHRoKCksIGNvbXB1dGVkTWluTG9naWNhbFdpZHRoKSk7CiAgICAgfQpAQCAtMzEz
LDExICszMTMsMTQgQEAgdm9pZCBSZW5kZXJUYWJsZTo6dXBkYXRlTG9naWNhbFdpZHRoKCkKIC8v
IFRoaXMgbWV0aG9kIHRha2VzIGEgUmVuZGVyU3R5bGUncyBsb2dpY2FsIHdpZHRoLCBtaW4td2lk
dGgsIG9yIG1heC13aWR0aCBsZW5ndGggYW5kIGNvbXB1dGVzIGl0cyBhY3R1YWwgdmFsdWUuCiBM
YXlvdXRVbml0IFJlbmRlclRhYmxlOjpjb252ZXJ0U3R5bGVMb2dpY2FsV2lkdGhUb0NvbXB1dGVk
V2lkdGgoY29uc3QgTGVuZ3RoJiBzdHlsZUxvZ2ljYWxXaWR0aCwgTGF5b3V0VW5pdCBhdmFpbGFi
bGVXaWR0aCkKIHsKKyAgICBpZiAoc3R5bGVMb2dpY2FsV2lkdGguaXNJbnRyaW5zaWMoKSkKKyAg
ICAgICAgcmV0dXJuIGNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsV2lkdGhVc2luZyhzdHlsZUxvZ2lj
YWxXaWR0aCwgYXZhaWxhYmxlV2lkdGgsIGJvcmRlcnNQYWRkaW5nQW5kU3BhY2luZ0luUm93RGly
ZWN0aW9uKCkpOworCiAgICAgLy8gSFRNTCB0YWJsZXMnIHdpZHRoIHN0eWxlcyBhbHJlYWR5IGlu
Y2x1ZGUgYm9yZGVycyBhbmQgcGFkZGluZ3MsIGJ1dCBDU1MgdGFibGVzJyB3aWR0aCBzdHlsZXMg
ZG8gbm90LgogICAgIExheW91dFVuaXQgYm9yZGVycyA9IDA7CiAgICAgYm9vbCBpc0NTU1RhYmxl
ID0gIW5vZGUoKSB8fCAhbm9kZSgpLT5oYXNUYWdOYW1lKHRhYmxlVGFnKTsKICAgICBpZiAoaXND
U1NUYWJsZSAmJiBzdHlsZUxvZ2ljYWxXaWR0aC5pc1NwZWNpZmllZCgpICYmIHN0eWxlTG9naWNh
bFdpZHRoLmlzUG9zaXRpdmUoKSAmJiBzdHlsZSgpLT5ib3hTaXppbmcoKSA9PSBDT05URU5UX0JP
WCkKLSAgICAgICAgICAgIGJvcmRlcnMgPSBib3JkZXJTdGFydCgpICsgYm9yZGVyRW5kKCkgKyAo
Y29sbGFwc2VCb3JkZXJzKCkgPyBMYXlvdXRVbml0KCkgOiBwYWRkaW5nU3RhcnQoKSArIHBhZGRp
bmdFbmQoKSk7CisgICAgICAgIGJvcmRlcnMgPSBib3JkZXJTdGFydCgpICsgYm9yZGVyRW5kKCkg
KyAoY29sbGFwc2VCb3JkZXJzKCkgPyBMYXlvdXRVbml0KCkgOiBwYWRkaW5nU3RhcnQoKSArIHBh
ZGRpbmdFbmQoKSk7CiAKICAgICByZXR1cm4gbWluaW11bVZhbHVlRm9yTGVuZ3RoKHN0eWxlTG9n
aWNhbFdpZHRoLCBhdmFpbGFibGVXaWR0aCwgdmlldygpKSArIGJvcmRlcnM7CiB9CkBAIC03MTcs
MTQgKzcyMCwyMiBAQCB2b2lkIFJlbmRlclRhYmxlOjpwYWludE1hc2soUGFpbnRJbmZvJiBwYWlu
dEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldAogICAgIHBhaW50TWFza0ltYWdl
cyhwYWludEluZm8sIHJlY3QpOwogfQogCit2b2lkIFJlbmRlclRhYmxlOjpjb21wdXRlSW50cmlu
c2ljTG9naWNhbFdpZHRocyhMYXlvdXRVbml0JiBtaW5XaWR0aCwgTGF5b3V0VW5pdCYgbWF4V2lk
dGgpIGNvbnN0Cit7CisgICAgcmVjYWxjU2VjdGlvbnNJZk5lZWRlZCgpOworICAgIC8vIEZJWE1F
OiBEbyB0aGUgcmVjYWxjIGluIGJvcmRlclN0YXJ0L2JvcmRlckVuZCBhbmQgbWFrZSB0aG9zZSBj
b25zdF9jYXN0IHRoaXMgY2FsbC4KKyAgICAvLyBUaGVuIG1fYm9yZGVyU3RhcnQvbV9ib3JkZXJF
bmQgd2lsbCBiZSB0cmFuc3BhcmVudCBhIGNhY2hlIGFuZCBpdCByZW1vdmVzIHRoZSBwb3NzaWJp
bGl0eQorICAgIC8vIG9mIHJlYWRpbmcgb3V0IHN0YWxlIHZhbHVlcy4KKyAgICBjb25zdF9jYXN0
PFJlbmRlclRhYmxlKj4odGhpcyktPnJlY2FsY0JvcmRlcnNJblJvd0RpcmVjdGlvbigpOworICAg
IC8vIEZJWE1FOiBSZXN0cnVjdHVyZSB0aGUgdGFibGUgbGF5b3V0IGNvZGUgc28gdGhhdCB3ZSBj
YW4gbWFrZSB0aGlzIG1ldGhvZCBjb25zdC4KKyAgICBjb25zdF9jYXN0PFJlbmRlclRhYmxlKj4o
dGhpcyktPm1fdGFibGVMYXlvdXQtPmNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsV2lkdGhzKG1pbldp
ZHRoLCBtYXhXaWR0aCk7Cit9CisKIHZvaWQgUmVuZGVyVGFibGU6OmNvbXB1dGVQcmVmZXJyZWRM
b2dpY2FsV2lkdGhzKCkKIHsKICAgICBBU1NFUlQocHJlZmVycmVkTG9naWNhbFdpZHRoc0RpcnR5
KCkpOwogCi0gICAgcmVjYWxjU2VjdGlvbnNJZk5lZWRlZCgpOwotICAgIHJlY2FsY0JvcmRlcnNJ
blJvd0RpcmVjdGlvbigpOwotCi0gICAgbV90YWJsZUxheW91dC0+Y29tcHV0ZUludHJpbnNpY0xv
Z2ljYWxXaWR0aHMobV9taW5QcmVmZXJyZWRMb2dpY2FsV2lkdGgsIG1fbWF4UHJlZmVycmVkTG9n
aWNhbFdpZHRoKTsKKyAgICBjb21wdXRlSW50cmluc2ljTG9naWNhbFdpZHRocyhtX21pblByZWZl
cnJlZExvZ2ljYWxXaWR0aCwgbV9tYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGgpOwogCiAgICAgaW50
IGJvcmRlcnNQYWRkaW5nQW5kU3BhY2luZyA9IGJvcmRlcnNQYWRkaW5nQW5kU3BhY2luZ0luUm93
RGlyZWN0aW9uKCk7CiAgICAgbV9taW5QcmVmZXJyZWRMb2dpY2FsV2lkdGggKz0gYm9yZGVyc1Bh
ZGRpbmdBbmRTcGFjaW5nOwpAQCAtNzMyLDYgKzc0Myw3IEBAIHZvaWQgUmVuZGVyVGFibGU6OmNv
bXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkKIAogICAgIG1fdGFibGVMYXlvdXQtPmFwcGx5
UHJlZmVycmVkTG9naWNhbFdpZHRoUXVpcmtzKG1fbWluUHJlZmVycmVkTG9naWNhbFdpZHRoLCBt
X21heFByZWZlcnJlZExvZ2ljYWxXaWR0aCk7CiAKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGlu
Y2x1ZGUgY2FwdGlvbnMgaW4gY29tcHV0ZUludHJpbnNpY0xvZ2ljYWxXaWR0aHMuCiAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fY2FwdGlvbnMuc2l6ZSgpOyBpKyspCiAgICAgICAgIG1f
bWluUHJlZmVycmVkTG9naWNhbFdpZHRoID0gbWF4KG1fbWluUHJlZmVycmVkTG9naWNhbFdpZHRo
LCBtX2NhcHRpb25zW2ldLT5taW5QcmVmZXJyZWRMb2dpY2FsV2lkdGgoKSk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmgKaW5kZXggNTc2MDI0MTlhZTI2MjJhODg1OGVhYWFk
Y2U2NjU1ZDJiZTYyYjU5Yi4uYjc4ZDg0OWUyYzE5Y2Q5OGU3ZTAzMDQwZTU5NzY0YmExMzQ0ZmYx
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmgKQEAgLTI3Nyw3ICsyNzcs
OCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwYWludEJveERlY29yYXRpb25zKFBhaW50
SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jik7CiAgICAgdmlydHVhbCB2b2lkIHBhaW50TWFzayhQ
YWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpOwogICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQo
KTsKLSAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUludHJpbnNpY0xvZ2ljYWxXaWR0aHMoTGF5b3V0VW5pdCYg
bWluV2lkdGgsIExheW91dFVuaXQmIG1heFdpZHRoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIHZvaWQgY29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoKSBPVkVSUklERTsKICAgICB2
aXJ0dWFsIGJvb2wgbm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVz
dWx0JiwgY29uc3QgSGl0VGVzdExvY2F0aW9uJiBsb2NhdGlvbkluQ29udGFpbmVyLCBjb25zdCBM
YXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQsIEhpdFRlc3RBY3Rpb24pIE9WRVJSSURFOwog
CiAgICAgdmlydHVhbCBpbnQgYmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUsIGJvb2wgZmly
c3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSwgTGluZVBvc2l0aW9uTW9kZSA9IFBvc2l0aW9uT25D
b250YWluaW5nTGluZSkgY29uc3QgT1ZFUlJJREU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggM2U3ZDkxYTU4NDBhYzgxOTRk
YzA2OGQwOWY0OGViZTNkMWFlNGZkYi4uNTg0OTM2ZDViYTAzMWE0NGNkNGViNTI0NTYyNTAzOGNm
ZGJjZmRhZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEzLTAzLTA1ICBPamFuIFZhZmFpICA8
b2phbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW50cmluc2ljIHdpZHRoIGtleXdvcmQgdmFs
dWVzIGRvbid0IHdvcmsgZm9yIHRhYmxlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTExNTE1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBmYXN0L2Nzcy1pbnRyaW5zaWMtZGltZW5zaW9ucy9jc3MtdGFi
bGVzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9jc3MtaW50cmluc2ljLWRp
bWVuc2lvbnMvY3NzLXRhYmxlcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy1pbnRy
aW5zaWMtZGltZW5zaW9ucy90YWJsZXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2Nzcy1pbnRyaW5zaWMtZGltZW5zaW9ucy90YWJsZXMuaHRtbDogQWRkZWQuCisKIDIwMTMt
MDMtMDYgIE9qYW4gVmFmYWkgIDxvamFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZWNhbGN1
bGF0ZSBib3JkZXJzIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGFibGUgbGF5b3V0CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1pbnRyaW5zaWMtZGltZW5zaW9ucy9jc3MtdGFibGVzLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWludHJpbnNpYy1kaW1lbnNpb25zL2Nz
cy10YWJsZXMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM0OTZlMTAxNzViNDJiYjg2YjM1OGY5
MTE3MzcxNjJlZDg3M2I4ZTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nz
cy1pbnRyaW5zaWMtZGltZW5zaW9ucy9jc3MtdGFibGVzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDI1IEBACisgCitQQVNTCisgUEFTUworIAorUEFTUworIFBBU1MKKyAKK1BBU1MKKyAKK1BBU1MK
KyAKK1BBU1MKKyAKK1BBU1MKKyBQQVNTCisgCitQQVNTCisgUEFTUworIAorUEFTUworIAorUEFT
UworIAorUEFTUworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1pbnRyaW5zaWMt
ZGltZW5zaW9ucy9jc3MtdGFibGVzLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1pbnRyaW5z
aWMtZGltZW5zaW9ucy9jc3MtdGFibGVzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWY4ZDE1ZTZlZTk2NDdm
ODQyMGNlMGIzNGY4MTkyYTg1YjEwMmRhMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvY3NzLWludHJpbnNpYy1kaW1lbnNpb25zL2Nzcy10YWJsZXMuaHRtbApAQCAtMCwwICsx
LDEzNSBAQAorPCFET0NUWVBFIGh0bWw+Cis8c3R5bGU+CisudGFibGUgeworICAgIGRpc3BsYXk6
IHRhYmxlOworICAgIGJvcmRlcjogNXB4IHNvbGlkIHNhbG1vbjsKKyAgICBwYWRkaW5nOiA1cHg7
Cit9CisudGQgeworICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7Cit9CisuY2hpbGQgeworICAgIGRp
c3BsYXk6IGlubGluZS1ibG9jazsKKyAgICB3aWR0aDogNTBweDsKKyAgICBoZWlnaHQ6IDIwcHg7
CisgICAgYmFja2dyb3VuZC1jb2xvcjogcGluazsKK30KKy5jb2xsYXBzZSB7CisgICAgYm9yZGVy
LWNvbGxhcHNlOiBjb2xsYXBzZTsKK30KKzwvc3R5bGU+CisKKzxkaXYgY2xhc3M9InRhYmxlIiBk
YXRhLWV4cGVjdGVkLXdpZHRoPTEyND4KKyAgICA8ZGl2IGNsYXNzPSJ0ZCI+CisgICAgICAgIDxk
aXYgY2xhc3M9ImNoaWxkIj48L2Rpdj4KKyAgICAgICAgPGRpdiBjbGFzcz0iY2hpbGQiPjwvZGl2
PgorICAgIDwvZGl2PgorPC9kaXY+CisKKzxkaXYgY2xhc3M9InRhYmxlIiBzdHlsZT0id2lkdGg6
IC13ZWJraXQtbWluLWNvbnRlbnQiIGRhdGEtZXhwZWN0ZWQtd2lkdGg9NzA+CisgICAgPGRpdiBj
bGFzcz0idGQiPgorICAgICAgICA8ZGl2IGNsYXNzPSJjaGlsZCI+PC9kaXY+CisgICAgICAgIDxk
aXYgY2xhc3M9ImNoaWxkIj48L2Rpdj4KKyAgICA8L2Rpdj4KKzwvZGl2PgorCis8ZGl2IGNsYXNz
PSJ0YWJsZSIgc3R5bGU9IndpZHRoOiAtd2Via2l0LW1heC1jb250ZW50IiBkYXRhLWV4cGVjdGVk
LXdpZHRoPTEyND4KKyAgICA8ZGl2IGNsYXNzPSJ0ZCI+CisgICAgICAgIDxkaXYgY2xhc3M9ImNo
aWxkIj48L2Rpdj4KKyAgICAgICAgPGRpdiBjbGFzcz0iY2hpbGQiPjwvZGl2PgorICAgIDwvZGl2
PgorPC9kaXY+CisKKzxkaXYgc3R5bGU9IndpZHRoOiAxMDBweCI+CisgICAgPGRpdiBjbGFzcz0i
dGFibGUiIHN0eWxlPSJ3aWR0aDogLXdlYmtpdC1maXQtY29udGVudCIgZGF0YS1leHBlY3RlZC13
aWR0aD0xMDA+CisgICAgICAgIDxkaXYgY2xhc3M9InRkIj4KKyAgICAgICAgICAgIDxkaXYgY2xh
c3M9ImNoaWxkIj48L2Rpdj4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNoaWxkIj48L2Rpdj4K
KyAgICAgICAgPC9kaXY+CisgICAgPC9kaXY+Cis8L2Rpdj4KKworPGRpdiBjbGFzcz0idGFibGUi
IHN0eWxlPSJ3aWR0aDogLXdlYmtpdC1maXQtY29udGVudCIgZGF0YS1leHBlY3RlZC13aWR0aD0x
MjQ+CisgICAgPGRpdiBjbGFzcz0idGQiPgorICAgICAgICA8ZGl2IGNsYXNzPSJjaGlsZCI+PC9k
aXY+CisgICAgICAgIDxkaXYgY2xhc3M9ImNoaWxkIj48L2Rpdj4KKyAgICA8L2Rpdj4KKzwvZGl2
PgorCis8ZGl2IHN0eWxlPSJ3aWR0aDogNDAwcHgiPgorICAgIDxkaXYgY2xhc3M9InRhYmxlIiBz
dHlsZT0id2lkdGg6IC13ZWJraXQtZml0LWNvbnRlbnQiIGRhdGEtZXhwZWN0ZWQtd2lkdGg9MTI0
PgorICAgICAgICA8ZGl2IGNsYXNzPSJ0ZCI+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjaGls
ZCI+PC9kaXY+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjaGlsZCI+PC9kaXY+CisgICAgICAg
IDwvZGl2PgorICAgIDwvZGl2PgorPC9kaXY+CisKKzxkaXYgc3R5bGU9IndpZHRoOiA0MDBweCI+
CisgICAgPGRpdiBjbGFzcz0idGFibGUiIHN0eWxlPSJ3aWR0aDogLXdlYmtpdC1maWxsLWF2YWls
YWJsZSIgIGRhdGEtZXhwZWN0ZWQtd2lkdGg9NDAwPgorICAgICAgICA8ZGl2IGNsYXNzPSJ0ZCI+
CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjaGlsZCI+PC9kaXY+CisgICAgICAgICAgICA8ZGl2
IGNsYXNzPSJjaGlsZCI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvZGl2PgorPGRpdj4K
KworPGRpdiBjbGFzcz0idGFibGUgY29sbGFwc2UiIGRhdGEtZXhwZWN0ZWQtd2lkdGg9MTE0Pgor
ICAgIDxkaXYgY2xhc3M9InRkIj4KKyAgICAgICAgPGRpdiBjbGFzcz0iY2hpbGQiPjwvZGl2Pgor
ICAgICAgICA8ZGl2IGNsYXNzPSJjaGlsZCI+PC9kaXY+CisgICAgPC9kaXY+Cis8L2Rpdj4KKwor
PGRpdiBjbGFzcz0idGFibGUgY29sbGFwc2UiIHN0eWxlPSJ3aWR0aDogLXdlYmtpdC1taW4tY29u
dGVudCIgZGF0YS1leHBlY3RlZC13aWR0aD02MD4KKyAgICA8ZGl2IGNsYXNzPSJ0ZCI+CisgICAg
ICAgIDxkaXYgY2xhc3M9ImNoaWxkIj48L2Rpdj4KKyAgICAgICAgPGRpdiBjbGFzcz0iY2hpbGQi
PjwvZGl2PgorICAgIDwvZGl2PgorPC9kaXY+CisKKzxkaXYgY2xhc3M9InRhYmxlIGNvbGxhcHNl
IiBzdHlsZT0id2lkdGg6IC13ZWJraXQtbWF4LWNvbnRlbnQiIGRhdGEtZXhwZWN0ZWQtd2lkdGg9
MTE0PgorICAgIDxkaXYgY2xhc3M9InRkIj4KKyAgICAgICAgPGRpdiBjbGFzcz0iY2hpbGQiPjwv
ZGl2PgorICAgICAgICA8ZGl2IGNsYXNzPSJjaGlsZCI+PC9kaXY+CisgICAgPC9kaXY+Cis8L2Rp
dj4KKworPGRpdiBzdHlsZT0id2lkdGg6IDEwMHB4Ij4KKyAgICA8ZGl2IGNsYXNzPSJ0YWJsZSBj
b2xsYXBzZSIgc3R5bGU9IndpZHRoOiAtd2Via2l0LWZpdC1jb250ZW50IiBkYXRhLWV4cGVjdGVk
LXdpZHRoPTEwMD4KKyAgICAgICAgPGRpdiBjbGFzcz0idGQiPgorICAgICAgICAgICAgPGRpdiBj
bGFzcz0iY2hpbGQiPjwvZGl2PgorICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2hpbGQiPjwvZGl2
PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKzwvZGl2PgorCis8ZGl2IGNsYXNzPSJ0YWJs
ZSBjb2xsYXBzZSIgc3R5bGU9IndpZHRoOiAtd2Via2l0LWZpdC1jb250ZW50IiBkYXRhLWV4cGVj
dGVkLXdpZHRoPTExND4KKyAgICA8ZGl2IGNsYXNzPSJ0ZCI+CisgICAgICAgIDxkaXYgY2xhc3M9
ImNoaWxkIj48L2Rpdj4KKyAgICAgICAgPGRpdiBjbGFzcz0iY2hpbGQiPjwvZGl2PgorICAgIDwv
ZGl2PgorPC9kaXY+CisKKzxkaXYgc3R5bGU9IndpZHRoOiA0MDBweCI+CisgICAgPGRpdiBjbGFz
cz0idGFibGUgY29sbGFwc2UiIHN0eWxlPSJ3aWR0aDogLXdlYmtpdC1maXQtY29udGVudCIgZGF0
YS1leHBlY3RlZC13aWR0aD0xMTQ+CisgICAgICAgIDxkaXYgY2xhc3M9InRkIj4KKyAgICAgICAg
ICAgIDxkaXYgY2xhc3M9ImNoaWxkIj48L2Rpdj4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNo
aWxkIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9kaXY+Cis8L2Rpdj4KKworPGRpdiBz
dHlsZT0id2lkdGg6IDQwMHB4Ij4KKyAgICA8ZGl2IGNsYXNzPSJ0YWJsZSBjb2xsYXBzZSIgc3R5
bGU9IndpZHRoOiAtd2Via2l0LWZpbGwtYXZhaWxhYmxlIiAgZGF0YS1leHBlY3RlZC13aWR0aD00
MDA+CisgICAgICAgIDxkaXYgY2xhc3M9InRkIj4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNo
aWxkIj48L2Rpdj4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNoaWxkIj48L2Rpdj4KKyAgICAg
ICAgPC9kaXY+CisgICAgPC9kaXY+Cis8ZGl2PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL2NoZWNrLWxheW91dC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorY2hlY2tMYXlvdXQoJy50
YWJsZScpOworPC9zY3JpcHQ+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MtaW50cmluc2ljLWRpbWVuc2lvbnMvdGFibGVzLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWludHJpbnNpYy1kaW1lbnNpb25zL3RhYmxl
cy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzQ5NmUxMDE3NWI0MmJiODZiMzU4ZjkxMTczNzE2
MmVkODczYjhlMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWludHJp
bnNpYy1kaW1lbnNpb25zL3RhYmxlcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyNSBAQAorIAor
UEFTUworIFBBU1MKKyAKK1BBU1MKKyBQQVNTCisgCitQQVNTCisgCitQQVNTCisgCitQQVNTCisg
CitQQVNTCisgUEFTUworIAorUEFTUworIFBBU1MKKyAKK1BBU1MKKyAKK1BBU1MKKyAKK1BBU1MK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MtaW50cmluc2ljLWRpbWVuc2lvbnMv
dGFibGVzLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1pbnRyaW5zaWMtZGltZW5zaW9ucy90
YWJsZXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZmU5MWIyNTMyYzE0NTUzNWU2YjUwY2I2N2Q2YWNlNDQ0
MjNjOWUwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtaW50cmluc2lj
LWRpbWVuc2lvbnMvdGFibGVzLmh0bWwKQEAgLTAsMCArMSwxMzEgQEAKKzwhRE9DVFlQRSBodG1s
PgorPHN0eWxlPgordGFibGUgeworICAgIGJvcmRlcjogNXB4IHNvbGlkIHNhbG1vbjsKKyAgICBw
YWRkaW5nOiA1cHg7Cit9CisuY2hpbGQgeworICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAg
ICB3aWR0aDogNTBweDsKKyAgICBoZWlnaHQ6IDIwcHg7CisgICAgYmFja2dyb3VuZC1jb2xvcjog
cGluazsKK30KKy5jb2xsYXBzZSB7CisgICAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTsKK30K
Kzwvc3R5bGU+CisKKzx0YWJsZSBkYXRhLWV4cGVjdGVkLXdpZHRoPTEzMD4KKyAgICA8dGQ+Cisg
ICAgICAgIDxkaXYgY2xhc3M9ImNoaWxkIj48L2Rpdj4KKyAgICAgICAgPGRpdiBjbGFzcz0iY2hp
bGQiPjwvZGl2PgorICAgIDwvdGQ+Cis8L3RhYmxlPgorCis8dGFibGUgc3R5bGU9IndpZHRoOiAt
d2Via2l0LW1pbi1jb250ZW50IiBkYXRhLWV4cGVjdGVkLXdpZHRoPTc2PgorICAgIDx0ZD4KKyAg
ICAgICAgPGRpdiBjbGFzcz0iY2hpbGQiPjwvZGl2PgorICAgICAgICA8ZGl2IGNsYXNzPSJjaGls
ZCI+PC9kaXY+CisgICAgPC90ZD4KKzwvdGFibGU+CisKKzx0YWJsZSBzdHlsZT0id2lkdGg6IC13
ZWJraXQtbWF4LWNvbnRlbnQiIGRhdGEtZXhwZWN0ZWQtd2lkdGg9MTMwPgorICAgIDx0ZD4KKyAg
ICAgICAgPGRpdiBjbGFzcz0iY2hpbGQiPjwvZGl2PgorICAgICAgICA8ZGl2IGNsYXNzPSJjaGls
ZCI+PC9kaXY+CisgICAgPC90ZD4KKzwvdGFibGU+CisKKzxkaXYgc3R5bGU9IndpZHRoOiAxMDBw
eCI+CisgICAgPHRhYmxlIHN0eWxlPSJ3aWR0aDogLXdlYmtpdC1maXQtY29udGVudCIgZGF0YS1l
eHBlY3RlZC13aWR0aD0xMDA+CisgICAgICAgIDx0ZD4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9
ImNoaWxkIj48L2Rpdj4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNoaWxkIj48L2Rpdj4KKyAg
ICAgICAgPC90ZD4KKyAgICA8L3RhYmxlPgorPC9kaXY+CisKKzx0YWJsZSBzdHlsZT0id2lkdGg6
IC13ZWJraXQtZml0LWNvbnRlbnQiIGRhdGEtZXhwZWN0ZWQtd2lkdGg9MTMwPgorICAgIDx0ZD4K
KyAgICAgICAgPGRpdiBjbGFzcz0iY2hpbGQiPjwvZGl2PgorICAgICAgICA8ZGl2IGNsYXNzPSJj
aGlsZCI+PC9kaXY+CisgICAgPC90ZD4KKzwvdGFibGU+CisKKzxkaXYgc3R5bGU9IndpZHRoOiA0
MDBweCI+CisgICAgPHRhYmxlIHN0eWxlPSJ3aWR0aDogLXdlYmtpdC1maXQtY29udGVudCIgZGF0
YS1leHBlY3RlZC13aWR0aD0xMzA+CisgICAgICAgIDx0ZD4KKyAgICAgICAgICAgIDxkaXYgY2xh
c3M9ImNoaWxkIj48L2Rpdj4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNoaWxkIj48L2Rpdj4K
KyAgICAgICAgPC90ZD4KKyAgICA8L3RhYmxlPgorPC9kaXY+CisKKzxkaXYgc3R5bGU9IndpZHRo
OiA0MDBweCI+CisgICAgPHRhYmxlIHN0eWxlPSJ3aWR0aDogLXdlYmtpdC1maWxsLWF2YWlsYWJs
ZSIgIGRhdGEtZXhwZWN0ZWQtd2lkdGg9NDAwPgorICAgICAgICA8dGQ+CisgICAgICAgICAgICA8
ZGl2IGNsYXNzPSJjaGlsZCI+PC9kaXY+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjaGlsZCI+
PC9kaXY+CisgICAgICAgIDwvdGQ+CisgICAgPC90YWJsZT4KKzxkaXY+CisKKzx0YWJsZSBjbGFz
cz0iY29sbGFwc2UiIGRhdGEtZXhwZWN0ZWQtd2lkdGg9MTE2PgorICAgIDx0ZD4KKyAgICAgICAg
PGRpdiBjbGFzcz0iY2hpbGQiPjwvZGl2PgorICAgICAgICA8ZGl2IGNsYXNzPSJjaGlsZCI+PC9k
aXY+CisgICAgPC90ZD4KKzwvdGFibGU+CisKKzx0YWJsZSBjbGFzcz0iY29sbGFwc2UiIHN0eWxl
PSJ3aWR0aDogLXdlYmtpdC1taW4tY29udGVudCIgZGF0YS1leHBlY3RlZC13aWR0aD02Mj4KKyAg
ICA8dGQ+CisgICAgICAgIDxkaXYgY2xhc3M9ImNoaWxkIj48L2Rpdj4KKyAgICAgICAgPGRpdiBj
bGFzcz0iY2hpbGQiPjwvZGl2PgorICAgIDwvdGQ+Cis8L3RhYmxlPgorCis8dGFibGUgY2xhc3M9
ImNvbGxhcHNlIiBzdHlsZT0id2lkdGg6IC13ZWJraXQtbWF4LWNvbnRlbnQiIGRhdGEtZXhwZWN0
ZWQtd2lkdGg9MTE2PgorICAgIDx0ZD4KKyAgICAgICAgPGRpdiBjbGFzcz0iY2hpbGQiPjwvZGl2
PgorICAgICAgICA8ZGl2IGNsYXNzPSJjaGlsZCI+PC9kaXY+CisgICAgPC90ZD4KKzwvdGFibGU+
CisKKzxkaXYgc3R5bGU9IndpZHRoOiAxMDBweCI+CisgICAgPHRhYmxlIGNsYXNzPSJjb2xsYXBz
ZSIgc3R5bGU9IndpZHRoOiAtd2Via2l0LWZpdC1jb250ZW50IiBkYXRhLWV4cGVjdGVkLXdpZHRo
PTEwMD4KKyAgICAgICAgPHRkPgorICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2hpbGQiPjwvZGl2
PgorICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2hpbGQiPjwvZGl2PgorICAgICAgICA8L3RkPgor
ICAgIDwvdGFibGU+Cis8L2Rpdj4KKworPHRhYmxlIGNsYXNzPSJjb2xsYXBzZSIgc3R5bGU9Indp
ZHRoOiAtd2Via2l0LWZpdC1jb250ZW50IiBkYXRhLWV4cGVjdGVkLXdpZHRoPTExNj4KKyAgICA8
dGQ+CisgICAgICAgIDxkaXYgY2xhc3M9ImNoaWxkIj48L2Rpdj4KKyAgICAgICAgPGRpdiBjbGFz
cz0iY2hpbGQiPjwvZGl2PgorICAgIDwvdGQ+Cis8L3RhYmxlPgorCis8ZGl2IHN0eWxlPSJ3aWR0
aDogNDAwcHgiPgorICAgIDx0YWJsZSBjbGFzcz0iY29sbGFwc2UiIHN0eWxlPSJ3aWR0aDogLXdl
YmtpdC1maXQtY29udGVudCIgZGF0YS1leHBlY3RlZC13aWR0aD0xMTY+CisgICAgICAgIDx0ZD4K
KyAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNoaWxkIj48L2Rpdj4KKyAgICAgICAgICAgIDxkaXYg
Y2xhc3M9ImNoaWxkIj48L2Rpdj4KKyAgICAgICAgPC90ZD4KKyAgICA8L3RhYmxlPgorPC9kaXY+
CisKKzxkaXYgc3R5bGU9IndpZHRoOiA0MDBweCI+CisgICAgPHRhYmxlIGNsYXNzPSJjb2xsYXBz
ZSIgc3R5bGU9IndpZHRoOiAtd2Via2l0LWZpbGwtYXZhaWxhYmxlIiAgZGF0YS1leHBlY3RlZC13
aWR0aD00MDA+CisgICAgICAgIDx0ZD4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNoaWxkIj48
L2Rpdj4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNoaWxkIj48L2Rpdj4KKyAgICAgICAgPC90
ZD4KKyAgICA8L3RhYmxlPgorPGRpdj4KKworPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9j
aGVjay1sYXlvdXQuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2NoZWNrTGF5b3V0KCd0YWJsZScp
OworPC9zY3JpcHQ+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>
<flag name="review"
          id="213178"
          type_id="1"
          status="+"
          setter="jchaffraix"
    />
    <flag name="commit-queue"
          id="213335"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
      

    </bug>

</bugzilla>