<?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>235507</bug_id>
          
          <creation_ts>2022-01-24 04:42:39 -0800</creation_ts>
          <short_desc>[GTK] REGRESSION: Cumulative velocity for scrolling doesn&apos;t work</short_desc>
          <delta_ts>2022-02-17 12:03:28 -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>WebKitGTK</component>
          <version>WebKit 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="Alice Mikhaylenko">alicem</reporter>
          <assigned_to name="Alice Mikhaylenko">alicem</assigned_to>
          <cc>bugs-noreply</cc>
    
    <cc>clord</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1833260</commentid>
    <comment_count>0</comment_count>
    <who name="Alice Mikhaylenko">alicem</who>
    <bug_when>2022-01-24 04:42:39 -0800</bug_when>
    <thetext>I thought this was a problem with my patch in https://bugs.webkit.org/show_bug.cgi?id=235436, but it doesn&apos;t seem to be working in canary either, with either touchpad or touchscreen.

The velocity doesn&apos;t seem affected by ongoing scrolling, and quickly scrolling with multiple swipes is noticeably slower than in 2.34.x. Not sure what it could be offhand.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1835855</commentid>
    <comment_count>1</comment_count>
    <who name="Alice Mikhaylenko">alicem</who>
    <bug_when>2022-02-01 01:02:12 -0800</bug_when>
    <thetext>Ok, so ScrollingEffectsController destroys and recreates ScrollAnimationKinetic every time you scroll. That would explain it. Not sure how to cleanly fix this though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839080</commentid>
    <comment_count>2</comment_count>
      <attachid>451354</attachid>
    <who name="Alice Mikhaylenko">alicem</who>
    <bug_when>2022-02-09 03:54:16 -0800</bug_when>
    <thetext>Created attachment 451354
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839096</commentid>
    <comment_count>3</comment_count>
      <attachid>451354</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2022-02-09 05:04:23 -0800</bug_when>
    <thetext>Comment on attachment 451354
Patch

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

Overall good, but I guess I&apos;d like to understand that animateScroll removal and I think my suggestion for the change to prepareLastVelocity is worthwhile implementing before committing.

&gt; Source/WebCore/platform/ScrollAnimationKinetic.cpp:-167
&gt; -        if (axisData &amp;&amp; axisData.value().animateScroll(elapsedTime)) {

Why has this call to animateScroll been removed? Doesn&apos;t this mean that there&apos;ll be an extra frame of lag when starting animated scrolls now?

&gt; Source/WebCore/platform/ScrollAnimationKinetic.cpp:234
&gt; +void ScrollAnimationKinetic::prepareLastVelocity(const MonotonicTime lastStartTime, const FloatPoint&amp; lastInitialOffset, const FloatSize&amp; lastInitialVelocity)

Personally, I&apos;d really prefer this to return the calculated value and for it to be assigned at the call-site, this is a bit confusingly named until you see how it&apos;s called. I think it&apos;d be better for this to be FloatSize ScrollAnimationKinetic::calculateLastVelocity(...)

&gt; Source/WebCore/platform/ScrollingEffectsController.cpp:319
&gt; +        kineticAnimation.prepareLastVelocity(m_lastStartTime, m_lastInitialOffset, m_lastInitialVelocity);

Then this would read m_lastVelocity = kineticAnimation.calculateLastVelocity(...) and I think that&apos;d be easier to follow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839098</commentid>
    <comment_count>4</comment_count>
    <who name="Alice Mikhaylenko">alicem</who>
    <bug_when>2022-02-09 05:19:47 -0800</bug_when>
    <thetext>&gt; Why has this call to animateScroll been removed? Doesn&apos;t this mean that there&apos;ll be an extra frame of lag when starting animated scrolls now?

Nope. Notice how the elapsed time was 0_s - it wasn&apos;t doing anything already. The actual call with non-0 elapsed time is now in prepareLastVelocity() - which I split to avoid having 3 more parameters in startAnimatedScrollWithInitialVelocity().

&gt;  Personally, I&apos;d really prefer this to return the calculated value and for it to be assigned at the call-site, this is a bit confusingly named until you see how it&apos;s called. I think it&apos;d be better for this to be FloatSize ScrollAnimationKinetic::calculateLastVelocity(...)

So you mean having a local variable in processWheelEventForKineticScrolling() to immediately pass it again to startAnimatedScrollWithInitialVelocity()? That can work, sure - though not sure if it&apos;s cleaner. I guess less state in ScrollAnimationKinetic is nice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839118</commentid>
    <comment_count>5</comment_count>
    <who name="Chris Lord">clord</who>
    <bug_when>2022-02-09 06:30:01 -0800</bug_when>
    <thetext>(In reply to Alexander Mikhaylenko from comment #4)
&gt; &gt; Why has this call to animateScroll been removed? Doesn&apos;t this mean that there&apos;ll be an extra frame of lag when starting animated scrolls now?
&gt; 
&gt; Nope. Notice how the elapsed time was 0_s - it wasn&apos;t doing anything
&gt; already. The actual call with non-0 elapsed time is now in
&gt; prepareLastVelocity() - which I split to avoid having 3 more parameters in
&gt; startAnimatedScrollWithInitialVelocity().

I see, that&apos;s fine in that case.

&gt; &gt;  Personally, I&apos;d really prefer this to return the calculated value and for it to be assigned at the call-site, this is a bit confusingly named until you see how it&apos;s called. I think it&apos;d be better for this to be FloatSize ScrollAnimationKinetic::calculateLastVelocity(...)
&gt; 
&gt; So you mean having a local variable in
&gt; processWheelEventForKineticScrolling() to immediately pass it again to
&gt; startAnimatedScrollWithInitialVelocity()? That can work, sure - though not
&gt; sure if it&apos;s cleaner. I guess less state in ScrollAnimationKinetic is nice.

Ah, I think I hadn&apos;t really understood what was happening here properly and now it makes more sense to me. I still think it&apos;s a little confusing the mix of both calculating a value based on the set inputs, and having the side effect of scrolling, when the name of it is &apos;prepareLastVelocity&apos; - it seems to do a lot more than that. Would it make sense to just call it &apos;animateScroll&apos;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839561</commentid>
    <comment_count>6</comment_count>
    <who name="Alice Mikhaylenko">alicem</who>
    <bug_when>2022-02-10 01:06:47 -0800</bug_when>
    <thetext>&gt; and having the side effect of scrolling

It doesn&apos;t have it though? :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841624</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Lord">clord</who>
    <bug_when>2022-02-15 01:24:37 -0800</bug_when>
    <thetext>(In reply to Alexander Mikhaylenko from comment #6)
&gt; &gt; and having the side effect of scrolling
&gt; 
&gt; It doesn&apos;t have it though? :)

It calls animateScroll on each axis with an elapsed time, which will change the offset of each axis - unless I&apos;m really misreading/misunderstanding something? I think this confusion is enough evidence to me that at the very least some naming needs to be reconsidered.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841631</commentid>
    <comment_count>8</comment_count>
      <attachid>452004</attachid>
    <who name="Alice Mikhaylenko">alicem</who>
    <bug_when>2022-02-15 01:51:32 -0800</bug_when>
    <thetext>Created attachment 452004
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841644</commentid>
    <comment_count>9</comment_count>
    <who name="Alice Mikhaylenko">alicem</who>
    <bug_when>2022-02-15 03:14:28 -0800</bug_when>
    <thetext>That looks unexpected. Restarting.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842196</commentid>
    <comment_count>10</comment_count>
      <attachid>452004</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2022-02-16 02:28:23 -0800</bug_when>
    <thetext>Comment on attachment 452004
Patch

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

Yes, this reads much better to me now - thanks for your patience :) I&apos;ll leave cq? in case you want to make any of the changes I suggest, but I&apos;m happy enough as it is, so don&apos;t feel obligated - ping me if you want me to set the cq+

&gt; Source/WebCore/platform/ScrollAnimationKinetic.cpp:168
&gt; +    auto accumulateVelocity = [&amp;](double velocity, double lastVelocity) -&gt; double {

Might be nice to rename lastVelocity -&gt; previousVelocity here to match the name of the parent function parameter - that does mean a name collision, which should be fine, but if you wanted to avoid that, the parent&apos;s parameter could be renamed to previousVelocities.

&gt; Source/WebCore/platform/ScrollingEffectsController.h:242
&gt; +    MonotonicTime m_previousStartTime;
&gt; +    FloatPoint m_previousInitialOffset;
&gt; +    FloatSize m_previousInitialVelocity;

Given that these are specific to kinetic animation/gestures, it&apos;d be good to somehow reflect that in the naming, or even group them together. Maybe it&apos;d be overkill, but perhaps these could be in a struct or a class - PreviousKineticAnimationInfo, or VelocityAccumulationInfo, or some better third option? I can&apos;t think of good naming that wouldn&apos;t massively balloon code-size/line-length, so maybe it&apos;s just fine as it is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842215</commentid>
    <comment_count>11</comment_count>
      <attachid>452171</attachid>
    <who name="Alice Mikhaylenko">alicem</who>
    <bug_when>2022-02-16 03:09:10 -0800</bug_when>
    <thetext>Created attachment 452171
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842216</commentid>
    <comment_count>12</comment_count>
    <who name="Alice Mikhaylenko">alicem</who>
    <bug_when>2022-02-16 03:10:01 -0800</bug_when>
    <thetext>Added an inline struct just to group them together. Doing more would likely be an overkill here indeed. :)

&gt; ping me if you want me to set the cq+

I have access to set it myself FWIW. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842778</commentid>
    <comment_count>13</comment_count>
      <attachid>452171</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2022-02-17 01:36:39 -0800</bug_when>
    <thetext>Comment on attachment 452171
Patch

LGTM. Pretty certain the failure is entirely unrelated, I&apos;ve retriggered and set cq?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843020</commentid>
    <comment_count>14</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-02-17 12:03:21 -0800</bug_when>
    <thetext>Committed r290045 (247417@main): &lt;https://commits.webkit.org/247417@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 452171.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451354</attachid>
            <date>2022-02-09 03:54:16 -0800</date>
            <delta_ts>2022-02-15 01:51:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235507-20220209165518.patch</filename>
            <type>text/plain</type>
            <size>9588</size>
            <attacher name="Alice Mikhaylenko">alicem</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5MjAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2FmZjMyMTVkZjdkODMz
YWQ5YTJhNzgzY2EyZWMwZWQ4NjNlNjRhYS4uMTc2ZjczZjE2NWIzZDg1ZTVlMTI1YmFkZjA1ZmVm
NzQ0NWYxNzg4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDIyLTAyLTA5ICBBbGV4
YW5kZXIgTWlraGF5bGVua28gIDxhbGV4bUBnbm9tZS5vcmc+CisKKyAgICAgICAgW0dUS10gUkVH
UkVTU0lPTjogQ3VtdWxhdGl2ZSB2ZWxvY2l0eSBmb3Igc2Nyb2xsaW5nIGRvZXNuJ3Qgd29yawor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1NTA3CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2Nyb2xsQW5p
bWF0aW9uS2luZXRpYyBjYW4gYWNjdW11bGF0ZSB2ZWxvY2l0eSBmcm9tIHRoZSBwcmV2aW91cyBz
Y3JvbGwKKyAgICAgICAgYW5pbWF0aW9uLiBUaGlzIHJlbGllcyBvbiByZXVzaW5nIHRoZSBzYW1l
IGFuaW1hdGlvbiBldmVyeSB0aW1lLCBzbyBpdCBjYW4KKyAgICAgICAgcGljayB1cCB0aGUgcHJl
dmlvdXMgc2Nyb2xsIGRhdGEuCisKKyAgICAgICAgSG93ZXZlciwgU2Nyb2xsaW5nRWZmZWN0c0Nv
bnRyb2xsZXIgbm93IGNyZWF0ZXMgYW5kIGRlc3Ryb3lzIFNjcm9sbEFuaW1hdGlvbktpbmV0aWMK
KyAgICAgICAgZXZlcnkgdGltZSBub3csIHdlIGNhbid0IHJlbHkgb24gdGhhdC4KKworICAgICAg
ICBJbnN0ZWFkLCBzYXZlIGFuZCBwcm9wYWdhdGUgdGhlIGRhdGEgbWFudWFsbHksIHNhbWUgYXMg
dGhlIG1hY09TIHBvcnQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25LaW5l
dGljLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvbktpbmV0aWM6OnN0YXJ0
QW5pbWF0ZWRTY3JvbGxXaXRoSW5pdGlhbFZlbG9jaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbEFuaW1hdGlvbktpbmV0aWM6OnByZXBhcmVMYXN0VmVsb2NpdHkpOgorICAgICAgICAqIHBs
YXRmb3JtL1Njcm9sbEFuaW1hdGlvbktpbmV0aWMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3Jv
bGxpbmdFZmZlY3RzQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdF
ZmZlY3RzQ29udHJvbGxlcjo6cHJvY2Vzc1doZWVsRXZlbnRGb3JLaW5ldGljU2Nyb2xsaW5nKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5oOgorCiAyMDIy
LTAxLTMxICBBbGV4YW5kZXIgTWlraGF5bGVua28gIDxhbGV4bUBnbm9tZS5vcmc+CiAKICAgICAg
ICAgW0dUS11bV1BFXSBVcGRhdGUgd2lkZ2V0IHN0eWxlIHRvIG1hdGNoIGxpYmFkd2FpdGEKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbktpbmV0aWMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uS2luZXRpYy5jcHAK
aW5kZXggMzM1NmUyNTY0YmEzODdhNWMxMDM5ZjMxN2IyN2JkOGY0M2I4ZmZmYi4uODYzMDFkMmI5
OWRjYzZhNTcxOTk4N2IzYWM0ZWIzNmVhZmJmZjBlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uS2luZXRpYy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uS2luZXRpYy5jcHAKQEAgLTE1Miw2ICsxNTIsOSBA
QCBGbG9hdFNpemUgU2Nyb2xsQW5pbWF0aW9uS2luZXRpYzo6Y29tcHV0ZVZlbG9jaXR5KCkKIAog
Ym9vbCBTY3JvbGxBbmltYXRpb25LaW5ldGljOjpzdGFydEFuaW1hdGVkU2Nyb2xsV2l0aEluaXRp
YWxWZWxvY2l0eShjb25zdCBGbG9hdFBvaW50JiBpbml0aWFsT2Zmc2V0LCBjb25zdCBGbG9hdFNp
emUmIHZlbG9jaXR5LCBib29sIG1heUhTY3JvbGwsIGJvb2wgbWF5VlNjcm9sbCkKIHsKKyAgICBt
X2luaXRpYWxPZmZzZXQgPSBpbml0aWFsT2Zmc2V0OworICAgIG1faW5pdGlhbFZlbG9jaXR5ID0g
dmVsb2NpdHk7CisKICAgICBzdG9wKCk7CiAKICAgICBpZiAodmVsb2NpdHkuaXNaZXJvKCkpIHsK
QEAgLTE2MCwxOSArMTYzLDE1IEBAIGJvb2wgU2Nyb2xsQW5pbWF0aW9uS2luZXRpYzo6c3RhcnRB
bmltYXRlZFNjcm9sbFdpdGhJbml0aWFsVmVsb2NpdHkoY29uc3QgRmxvYXRQCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBhdXRvIGVsYXBzZWRUaW1lID0gMF9zOwogICAgIGF1
dG8gZXh0ZW50cyA9IG1fY2xpZW50LnNjcm9sbEV4dGVudHNGb3JBbmltYXRpb24oKnRoaXMpOwog
Ci0gICAgYXV0byBhY2N1bXVsYXRlVmVsb2NpdHkgPSBbJl0oZG91YmxlIHZlbG9jaXR5LCBzdGQ6
Om9wdGlvbmFsPFBlckF4aXNEYXRhPiBheGlzRGF0YSkgLT4gZG91YmxlIHsKLSAgICAgICAgaWYg
KGF4aXNEYXRhICYmIGF4aXNEYXRhLnZhbHVlKCkuYW5pbWF0ZVNjcm9sbChlbGFwc2VkVGltZSkp
IHsKLSAgICAgICAgICAgIGRvdWJsZSBsYXN0VmVsb2NpdHkgPSBheGlzRGF0YS52YWx1ZSgpLnZl
bG9jaXR5KCk7Ci0gICAgICAgICAgICBpZiAoKHN0ZDo6c2lnbmJpdChsYXN0VmVsb2NpdHkpID09
IHN0ZDo6c2lnbmJpdCh2ZWxvY2l0eSkpCi0gICAgICAgICAgICAgICAgJiYgKHN0ZDo6YWJzKHZl
bG9jaXR5KSA+PSBzdGQ6OmFicyhsYXN0VmVsb2NpdHkgKiB2ZWxvY2l0eUFjY3VtdWxhdGlvbkZs
b29yKSkpIHsKLSAgICAgICAgICAgICAgICBkb3VibGUgbWluVmVsb2NpdHkgPSBsYXN0VmVsb2Np
dHkgKiB2ZWxvY2l0eUFjY3VtdWxhdGlvbkZsb29yOwotICAgICAgICAgICAgICAgIGRvdWJsZSBt
YXhWZWxvY2l0eSA9IGxhc3RWZWxvY2l0eSAqIHZlbG9jaXR5QWNjdW11bGF0aW9uQ2VpbDsKLSAg
ICAgICAgICAgICAgICBkb3VibGUgYWNjdW11bGF0aW9uTXVsdGlwbGllciA9ICh2ZWxvY2l0eSAt
IG1pblZlbG9jaXR5KSAvIChtYXhWZWxvY2l0eSAtIG1pblZlbG9jaXR5KTsKLSAgICAgICAgICAg
ICAgICB2ZWxvY2l0eSArPSBsYXN0VmVsb2NpdHkgKiBzdGQ6Om1pbihhY2N1bXVsYXRpb25NdWx0
aXBsaWVyLCB2ZWxvY2l0eUFjY3VtdWxhdGlvbk1heCk7Ci0gICAgICAgICAgICB9CisgICAgYXV0
byBhY2N1bXVsYXRlVmVsb2NpdHkgPSBbJl0oZG91YmxlIHZlbG9jaXR5LCBkb3VibGUgbGFzdFZl
bG9jaXR5KSAtPiBkb3VibGUgeworICAgICAgICBpZiAoKHN0ZDo6c2lnbmJpdChsYXN0VmVsb2Np
dHkpID09IHN0ZDo6c2lnbmJpdCh2ZWxvY2l0eSkpCisgICAgICAgICAgICAmJiAoc3RkOjphYnMo
dmVsb2NpdHkpID49IHN0ZDo6YWJzKGxhc3RWZWxvY2l0eSAqIHZlbG9jaXR5QWNjdW11bGF0aW9u
Rmxvb3IpKSkgeworICAgICAgICAgICAgZG91YmxlIG1pblZlbG9jaXR5ID0gbGFzdFZlbG9jaXR5
ICogdmVsb2NpdHlBY2N1bXVsYXRpb25GbG9vcjsKKyAgICAgICAgICAgIGRvdWJsZSBtYXhWZWxv
Y2l0eSA9IGxhc3RWZWxvY2l0eSAqIHZlbG9jaXR5QWNjdW11bGF0aW9uQ2VpbDsKKyAgICAgICAg
ICAgIGRvdWJsZSBhY2N1bXVsYXRpb25NdWx0aXBsaWVyID0gKHZlbG9jaXR5IC0gbWluVmVsb2Np
dHkpIC8gKG1heFZlbG9jaXR5IC0gbWluVmVsb2NpdHkpOworICAgICAgICAgICAgdmVsb2NpdHkg
Kz0gbGFzdFZlbG9jaXR5ICogc3RkOjptaW4oYWNjdW11bGF0aW9uTXVsdGlwbGllciwgdmVsb2Np
dHlBY2N1bXVsYXRpb25NYXgpOwogICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuIHZlbG9jaXR5
OwpAQCAtMTgxLDE0ICsxODAsMTQgQEAgYm9vbCBTY3JvbGxBbmltYXRpb25LaW5ldGljOjpzdGFy
dEFuaW1hdGVkU2Nyb2xsV2l0aEluaXRpYWxWZWxvY2l0eShjb25zdCBGbG9hdFAKICAgICBpZiAo
bWF5SFNjcm9sbCkgewogICAgICAgICBtX2hvcml6b250YWxEYXRhID0gUGVyQXhpc0RhdGEoZXh0
ZW50cy5taW5pbXVtU2Nyb2xsT2Zmc2V0KCkueCgpLAogICAgICAgICAgICAgZXh0ZW50cy5tYXhp
bXVtU2Nyb2xsT2Zmc2V0KCkueCgpLAotICAgICAgICAgICAgaW5pdGlhbE9mZnNldC54KCksIGFj
Y3VtdWxhdGVWZWxvY2l0eSh2ZWxvY2l0eS53aWR0aCgpLCBtX2hvcml6b250YWxEYXRhKSk7Cisg
ICAgICAgICAgICBpbml0aWFsT2Zmc2V0LngoKSwgYWNjdW11bGF0ZVZlbG9jaXR5KHZlbG9jaXR5
LndpZHRoKCksIG1fbGFzdFZlbG9jaXR5LndpZHRoKCkpKTsKICAgICB9IGVsc2UKICAgICAgICAg
bV9ob3Jpem9udGFsRGF0YSA9IHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmIChtYXlWU2Nyb2xsKSB7
CiAgICAgICAgIG1fdmVydGljYWxEYXRhID0gUGVyQXhpc0RhdGEoZXh0ZW50cy5taW5pbXVtU2Ny
b2xsT2Zmc2V0KCkueSgpLAogICAgICAgICAgICAgZXh0ZW50cy5tYXhpbXVtU2Nyb2xsT2Zmc2V0
KCkueSgpLAotICAgICAgICAgICAgaW5pdGlhbE9mZnNldC55KCksIGFjY3VtdWxhdGVWZWxvY2l0
eSh2ZWxvY2l0eS5oZWlnaHQoKSwgbV92ZXJ0aWNhbERhdGEpKTsKKyAgICAgICAgICAgIGluaXRp
YWxPZmZzZXQueSgpLCBhY2N1bXVsYXRlVmVsb2NpdHkodmVsb2NpdHkuaGVpZ2h0KCksIG1fbGFz
dFZlbG9jaXR5LmhlaWdodCgpKSk7CiAgICAgfSBlbHNlCiAgICAgICAgIG1fdmVydGljYWxEYXRh
ID0gc3RkOjpudWxsb3B0OwogCkBAIC0yMzIsNSArMjMxLDIzIEBAIFN0cmluZyBTY3JvbGxBbmlt
YXRpb25LaW5ldGljOjpkZWJ1Z0Rlc2NyaXB0aW9uKCkgY29uc3QKICAgICByZXR1cm4gdGV4dFN0
cmVhbS5yZWxlYXNlKCk7CiB9CiAKK3ZvaWQgU2Nyb2xsQW5pbWF0aW9uS2luZXRpYzo6cHJlcGFy
ZUxhc3RWZWxvY2l0eShjb25zdCBNb25vdG9uaWNUaW1lIGxhc3RTdGFydFRpbWUsIGNvbnN0IEZs
b2F0UG9pbnQmIGxhc3RJbml0aWFsT2Zmc2V0LCBjb25zdCBGbG9hdFNpemUmIGxhc3RJbml0aWFs
VmVsb2NpdHkpCit7CisgICAgYXV0byBlbGFwc2VkVGltZSA9IE1vbm90b25pY1RpbWU6Om5vdygp
IC0gbGFzdFN0YXJ0VGltZTsKKyAgICBhdXRvIGV4dGVudHMgPSBtX2NsaWVudC5zY3JvbGxFeHRl
bnRzRm9yQW5pbWF0aW9uKCp0aGlzKTsKKworICAgIGF1dG8gaG9yaXpvbnRhbERhdGEgPSBQZXJB
eGlzRGF0YShleHRlbnRzLm1pbmltdW1TY3JvbGxPZmZzZXQoKS54KCksCisgICAgICAgIGV4dGVu
dHMubWF4aW11bVNjcm9sbE9mZnNldCgpLngoKSwKKyAgICAgICAgbGFzdEluaXRpYWxPZmZzZXQu
eCgpLCBsYXN0SW5pdGlhbFZlbG9jaXR5LndpZHRoKCkpOworCisgICAgYXV0byB2ZXJ0aWNhbERh
dGEgPSBQZXJBeGlzRGF0YShleHRlbnRzLm1pbmltdW1TY3JvbGxPZmZzZXQoKS55KCksCisgICAg
ICAgIGV4dGVudHMubWF4aW11bVNjcm9sbE9mZnNldCgpLnkoKSwKKyAgICAgICAgbGFzdEluaXRp
YWxPZmZzZXQueSgpLCBsYXN0SW5pdGlhbFZlbG9jaXR5LmhlaWdodCgpKTsKKworICAgIGhvcml6
b250YWxEYXRhLmFuaW1hdGVTY3JvbGwoZWxhcHNlZFRpbWUpOworICAgIHZlcnRpY2FsRGF0YS5h
bmltYXRlU2Nyb2xsKGVsYXBzZWRUaW1lKTsKKworICAgIG1fbGFzdFZlbG9jaXR5ID0gRmxvYXRT
aXplKGhvcml6b250YWxEYXRhLnZlbG9jaXR5KCksIHZlcnRpY2FsRGF0YS52ZWxvY2l0eSgpKTsK
K30KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uS2luZXRpYy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsQW5pbWF0aW9uS2luZXRpYy5oCmluZGV4IGY4NDUzYjcxMGMwZTgzNGFjZTg2Nzg2
NDI3YjgxNDRjMGYzMGIwMWQuLjhhZjAzODlmMTllZjY1MGJiYWFkZmNlZDI2Njc3ZGU1M2Y2YzM3
ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbktp
bmV0aWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25LaW5l
dGljLmgKQEAgLTY4LDYgKzY4LDEyIEBAIHB1YmxpYzoKIAogICAgIEZsb2F0U2l6ZSBjb21wdXRl
VmVsb2NpdHkoKTsKIAorICAgIE1vbm90b25pY1RpbWUgc3RhcnRUaW1lKCkgeyByZXR1cm4gbV9z
dGFydFRpbWU7IH0KKyAgICBGbG9hdFNpemUgaW5pdGlhbFZlbG9jaXR5KCkgeyByZXR1cm4gbV9p
bml0aWFsVmVsb2NpdHk7IH0KKyAgICBGbG9hdFBvaW50IGluaXRpYWxPZmZzZXQoKSB7IHJldHVy
biBtX2luaXRpYWxPZmZzZXQ7IH0KKworICAgIHZvaWQgcHJlcGFyZUxhc3RWZWxvY2l0eShjb25z
dCBNb25vdG9uaWNUaW1lLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRTaXplJik7CisK
IHByaXZhdGU6CiAgICAgdm9pZCBzZXJ2aWNlQW5pbWF0aW9uKE1vbm90b25pY1RpbWUpIGZpbmFs
OwogICAgIFN0cmluZyBkZWJ1Z0Rlc2NyaXB0aW9uKCkgY29uc3QgZmluYWw7CkBAIC03Niw2ICs4
Miw5IEBAIHByaXZhdGU6CiAgICAgc3RkOjpvcHRpb25hbDxQZXJBeGlzRGF0YT4gbV92ZXJ0aWNh
bERhdGE7CiAKICAgICBWZWN0b3I8UGxhdGZvcm1XaGVlbEV2ZW50PiBtX3Njcm9sbEhpc3Rvcnk7
CisgICAgRmxvYXRQb2ludCBtX2luaXRpYWxPZmZzZXQ7CisgICAgRmxvYXRTaXplIG1faW5pdGlh
bFZlbG9jaXR5OworICAgIEZsb2F0U2l6ZSBtX2xhc3RWZWxvY2l0eTsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bGluZ0VmZmVjdHNDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bGluZ0VmZmVjdHNDb250cm9sbGVyLmNwcAppbmRleCAyZjUyNjc1ZDE1ODVmMDZkYWFlZjIzNzU0
ZmY1OGU5MjFiZTk3ZTJiLi5hNDQyYTZlZGMzOGE5MmE3NWRhNTIwNjFlZDM3ZjMzNzQ1ZTYyNDZi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29u
dHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsaW5nRWZmZWN0
c0NvbnRyb2xsZXIuY3BwCkBAIC0yNzYsMTEgKzI3NiwxOSBAQCBmbG9hdCBTY3JvbGxpbmdFZmZl
Y3RzQ29udHJvbGxlcjo6YWRqdXN0ZWRTY3JvbGxEZXN0aW5hdGlvbihTY3JvbGxFdmVudEF4aXMg
YXhpcwogI2lmIEVOQUJMRShLSU5FVElDX1NDUk9MTElORykKIGJvb2wgU2Nyb2xsaW5nRWZmZWN0
c0NvbnRyb2xsZXI6OnByb2Nlc3NXaGVlbEV2ZW50Rm9yS2luZXRpY1Njcm9sbGluZyhjb25zdCBQ
bGF0Zm9ybVdoZWVsRXZlbnQmIGV2ZW50KQogewotICAgIGlmIChpczxTY3JvbGxBbmltYXRpb25L
aW5ldGljPihtX2N1cnJlbnRBbmltYXRpb24uZ2V0KCkpKQorICAgIGlmIChpczxTY3JvbGxBbmlt
YXRpb25LaW5ldGljPihtX2N1cnJlbnRBbmltYXRpb24uZ2V0KCkpKSB7CisgICAgICAgIGF1dG8m
IGtpbmV0aWNBbmltYXRpb24gPSBkb3duY2FzdDxTY3JvbGxBbmltYXRpb25LaW5ldGljPigqbV9j
dXJyZW50QW5pbWF0aW9uKTsKKworICAgICAgICBtX2xhc3RTdGFydFRpbWUgPSBraW5ldGljQW5p
bWF0aW9uLnN0YXJ0VGltZSgpOworICAgICAgICBtX2xhc3RJbml0aWFsT2Zmc2V0ID0ga2luZXRp
Y0FuaW1hdGlvbi5pbml0aWFsT2Zmc2V0KCk7CisgICAgICAgIG1fbGFzdEluaXRpYWxWZWxvY2l0
eSA9IGtpbmV0aWNBbmltYXRpb24uaW5pdGlhbFZlbG9jaXR5KCk7CisKICAgICAgICAgbV9jdXJy
ZW50QW5pbWF0aW9uLT5zdG9wKCk7CisgICAgfQogCiAgICAgaWYgKCFldmVudC5oYXNQcmVjaXNl
U2Nyb2xsaW5nRGVsdGFzKCkpIHsKICAgICAgICAgbV9zY3JvbGxIaXN0b3J5LmNsZWFyKCk7Cisg
ICAgICAgIG1fbGFzdEluaXRpYWxWZWxvY2l0eSA9IEZsb2F0U2l6ZSgpOwogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogCkBAIC0yOTQsNiArMzAyLDcgQEAgYm9vbCBTY3JvbGxpbmdFZmZl
Y3RzQ29udHJvbGxlcjo6cHJvY2Vzc1doZWVsRXZlbnRGb3JLaW5ldGljU2Nyb2xsaW5nKGNvbnN0
IFBsYXQKICAgICBpZiAobV9jdXJyZW50QW5pbWF0aW9uICYmICFpczxTY3JvbGxBbmltYXRpb25L
aW5ldGljPihtX2N1cnJlbnRBbmltYXRpb24uZ2V0KCkpKSB7CiAgICAgICAgIG1fY3VycmVudEFu
aW1hdGlvbi0+c3RvcCgpOwogICAgICAgICBtX2N1cnJlbnRBbmltYXRpb24gPSBudWxscHRyOwor
ICAgICAgICBtX2xhc3RJbml0aWFsVmVsb2NpdHkgPSBGbG9hdFNpemUoKTsKICAgICB9CiAKICAg
ICBpZiAodXNlc1Njcm9sbFNuYXAoKSkKQEAgLTMwNiw2ICszMTUsMTEgQEAgYm9vbCBTY3JvbGxp
bmdFZmZlY3RzQ29udHJvbGxlcjo6cHJvY2Vzc1doZWVsRXZlbnRGb3JLaW5ldGljU2Nyb2xsaW5n
KGNvbnN0IFBsYXQKICAgICB3aGlsZSAoIW1fc2Nyb2xsSGlzdG9yeS5pc0VtcHR5KCkpCiAgICAg
ICAgIGtpbmV0aWNBbmltYXRpb24uYXBwZW5kVG9TY3JvbGxIaXN0b3J5KG1fc2Nyb2xsSGlzdG9y
eS50YWtlRmlyc3QoKSk7CiAKKyAgICBpZiAoIW1fbGFzdEluaXRpYWxWZWxvY2l0eS5pc1plcm8o
KSkgeworICAgICAgICBraW5ldGljQW5pbWF0aW9uLnByZXBhcmVMYXN0VmVsb2NpdHkobV9sYXN0
U3RhcnRUaW1lLCBtX2xhc3RJbml0aWFsT2Zmc2V0LCBtX2xhc3RJbml0aWFsVmVsb2NpdHkpOwor
ICAgICAgICBtX2xhc3RJbml0aWFsVmVsb2NpdHkgPSBGbG9hdFNpemUoKTsKKyAgICB9CisKICAg
ICBpZiAoZXZlbnQuaXNFbmRPZk5vbk1vbWVudHVtU2Nyb2xsKCkpIHsKICAgICAgICAga2luZXRp
Y0FuaW1hdGlvbi5zdGFydEFuaW1hdGVkU2Nyb2xsV2l0aEluaXRpYWxWZWxvY2l0eShtX2NsaWVu
dC5zY3JvbGxPZmZzZXQoKSwga2luZXRpY0FuaW1hdGlvbi5jb21wdXRlVmVsb2NpdHkoKSwgbV9j
bGllbnQuYWxsb3dzSG9yaXpvbnRhbFNjcm9sbGluZygpLCBtX2NsaWVudC5hbGxvd3NWZXJ0aWNh
bFNjcm9sbGluZygpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuaAppbmRleCAxZjk0Mjhj
MmJhMzQzMGFmYmVjODAxMDZiOGY5MWFkNTM2MjA0ZTFhLi4yY2UxZWYxZDIzNWQ4Njk3ZGRlYjEy
MzA3NGRlYzg3NTgzZTMxNGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLmgKQEAgLTIzNyw2ICsyMzcsOSBAQCBwcml2YXRl
OgogICAgIGJvb2wgcHJvY2Vzc1doZWVsRXZlbnRGb3JLaW5ldGljU2Nyb2xsaW5nKGNvbnN0IFBs
YXRmb3JtV2hlZWxFdmVudCYpOwogCiAgICAgRGVxdWU8UGxhdGZvcm1XaGVlbEV2ZW50PiBtX3Nj
cm9sbEhpc3Rvcnk7CisgICAgTW9ub3RvbmljVGltZSBtX2xhc3RTdGFydFRpbWU7CisgICAgRmxv
YXRQb2ludCBtX2xhc3RJbml0aWFsT2Zmc2V0OworICAgIEZsb2F0U2l6ZSBtX2xhc3RJbml0aWFs
VmVsb2NpdHk7CiAjZW5kaWYKIAogICAgIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyQ2xpZW50
JiBtX2NsaWVudDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452004</attachid>
            <date>2022-02-15 01:51:32 -0800</date>
            <delta_ts>2022-02-16 03:09:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235507-20220215145237.patch</filename>
            <type>text/plain</type>
            <size>11474</size>
            <attacher name="Alice Mikhaylenko">alicem</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5MjAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWY5ZGUyM2Q2NGMyMzRi
NzBkNTdkMjdkMWM3NmM2MzliODRjZWIxNC4uYzE0NGI1NmY5ZWJmNjI3YzRjZmM4Y2YzY2U5OGU4
MmJlZDYyM2ZjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDIyLTAyLTA5ICBBbGV4
YW5kZXIgTWlraGF5bGVua28gIDxhbGV4bUBnbm9tZS5vcmc+CisKKyAgICAgICAgW0dUS10gUkVH
UkVTU0lPTjogQ3VtdWxhdGl2ZSB2ZWxvY2l0eSBmb3Igc2Nyb2xsaW5nIGRvZXNuJ3Qgd29yawor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1NTA3CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2Nyb2xsQW5p
bWF0aW9uS2luZXRpYyBjYW4gYWNjdW11bGF0ZSB2ZWxvY2l0eSBmcm9tIHRoZSBwcmV2aW91cyBz
Y3JvbGwKKyAgICAgICAgYW5pbWF0aW9uLiBUaGlzIHJlbGllcyBvbiByZXVzaW5nIHRoZSBzYW1l
IGFuaW1hdGlvbiBldmVyeSB0aW1lLCBzbyBpdCBjYW4KKyAgICAgICAgcGljayB1cCB0aGUgcHJl
dmlvdXMgc2Nyb2xsIGRhdGEuCisKKyAgICAgICAgSG93ZXZlciwgU2Nyb2xsaW5nRWZmZWN0c0Nv
bnRyb2xsZXIgbm93IGNyZWF0ZXMgYW5kIGRlc3Ryb3lzIFNjcm9sbEFuaW1hdGlvbktpbmV0aWMK
KyAgICAgICAgZXZlcnkgdGltZSBub3csIHdlIGNhbid0IHJlbHkgb24gdGhhdC4KKworICAgICAg
ICBJbnN0ZWFkLCBzYXZlIGFuZCBwcm9wYWdhdGUgdGhlIGRhdGEgbWFudWFsbHksIHNhbWUgYXMg
dGhlIG1hY09TIHBvcnQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25LaW5l
dGljLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvbktpbmV0aWM6OnN0YXJ0
QW5pbWF0ZWRTY3JvbGxXaXRoSW5pdGlhbFZlbG9jaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbEFuaW1hdGlvbktpbmV0aWM6OmFjY3VtdWxhdGVWZWxvY2l0eUZyb21QcmV2aW91c0dlc3R1
cmUpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbktpbmV0aWMuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6cHJvY2Vzc1doZWVsRXZlbnRGb3JL
aW5ldGljU2Nyb2xsaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29u
dHJvbGxlci5oOgorCiAyMDIyLTAyLTEwICBBbGV4YW5kZXIgTWlraGF5bGVua28gIDxhbGV4bUBn
bm9tZS5vcmc+CiAKICAgICAgICAgW0dUS10gU2Nyb2xsYmFycyBwYWludGVkIGluY29ycmVjdGx5
IGlmIHRoZW1lIGVuYWJsZXMgc3RlcHBlcnMgKHN0ZXBwZXJzIG1pc3BsYWNlZCBvbiB2ZXJ0aWNh
bCBzY3JvbGxiYXJzLCBob3Jpem9udGFsIHNjcm9sbGJhcnMgdmVyeSBicm9rZW4pIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uS2luZXRpYy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25LaW5ldGljLmNwcAppbmRl
eCAzMzU2ZTI1NjRiYTM4N2E1YzEwMzlmMzE3YjI3YmQ4ZjQzYjhmZmZiLi4xMTFjYzFkOGNjMWNi
MjRiNDhiNmFhMjhhMjc2MGE5NWU5MTRiY2U5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxBbmltYXRpb25LaW5ldGljLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxBbmltYXRpb25LaW5ldGljLmNwcApAQCAtMTUwLDggKzE1MCwxMSBAQCBG
bG9hdFNpemUgU2Nyb2xsQW5pbWF0aW9uS2luZXRpYzo6Y29tcHV0ZVZlbG9jaXR5KCkKICAgICBy
ZXR1cm4gRmxvYXRTaXplKGFjY3VtRGVsdGEueCgpICogLTEgLyAobGFzdCAtIGZpcnN0KS52YWx1
ZSgpLCBhY2N1bURlbHRhLnkoKSAqIC0xIC8gKGxhc3QgLSBmaXJzdCkudmFsdWUoKSk7CiB9CiAK
LWJvb2wgU2Nyb2xsQW5pbWF0aW9uS2luZXRpYzo6c3RhcnRBbmltYXRlZFNjcm9sbFdpdGhJbml0
aWFsVmVsb2NpdHkoY29uc3QgRmxvYXRQb2ludCYgaW5pdGlhbE9mZnNldCwgY29uc3QgRmxvYXRT
aXplJiB2ZWxvY2l0eSwgYm9vbCBtYXlIU2Nyb2xsLCBib29sIG1heVZTY3JvbGwpCitib29sIFNj
cm9sbEFuaW1hdGlvbktpbmV0aWM6OnN0YXJ0QW5pbWF0ZWRTY3JvbGxXaXRoSW5pdGlhbFZlbG9j
aXR5KGNvbnN0IEZsb2F0UG9pbnQmIGluaXRpYWxPZmZzZXQsIGNvbnN0IEZsb2F0U2l6ZSYgdmVs
b2NpdHksIGNvbnN0IEZsb2F0U2l6ZSYgcHJldmlvdXNWZWxvY2l0eSwgYm9vbCBtYXlIU2Nyb2xs
LCBib29sIG1heVZTY3JvbGwpCiB7CisgICAgbV9pbml0aWFsT2Zmc2V0ID0gaW5pdGlhbE9mZnNl
dDsKKyAgICBtX2luaXRpYWxWZWxvY2l0eSA9IHZlbG9jaXR5OworCiAgICAgc3RvcCgpOwogCiAg
ICAgaWYgKHZlbG9jaXR5LmlzWmVybygpKSB7CkBAIC0xNjAsMTkgKzE2MywxNSBAQCBib29sIFNj
cm9sbEFuaW1hdGlvbktpbmV0aWM6OnN0YXJ0QW5pbWF0ZWRTY3JvbGxXaXRoSW5pdGlhbFZlbG9j
aXR5KGNvbnN0IEZsb2F0UAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgYXV0
byBlbGFwc2VkVGltZSA9IDBfczsKICAgICBhdXRvIGV4dGVudHMgPSBtX2NsaWVudC5zY3JvbGxF
eHRlbnRzRm9yQW5pbWF0aW9uKCp0aGlzKTsKIAotICAgIGF1dG8gYWNjdW11bGF0ZVZlbG9jaXR5
ID0gWyZdKGRvdWJsZSB2ZWxvY2l0eSwgc3RkOjpvcHRpb25hbDxQZXJBeGlzRGF0YT4gYXhpc0Rh
dGEpIC0+IGRvdWJsZSB7Ci0gICAgICAgIGlmIChheGlzRGF0YSAmJiBheGlzRGF0YS52YWx1ZSgp
LmFuaW1hdGVTY3JvbGwoZWxhcHNlZFRpbWUpKSB7Ci0gICAgICAgICAgICBkb3VibGUgbGFzdFZl
bG9jaXR5ID0gYXhpc0RhdGEudmFsdWUoKS52ZWxvY2l0eSgpOwotICAgICAgICAgICAgaWYgKChz
dGQ6OnNpZ25iaXQobGFzdFZlbG9jaXR5KSA9PSBzdGQ6OnNpZ25iaXQodmVsb2NpdHkpKQotICAg
ICAgICAgICAgICAgICYmIChzdGQ6OmFicyh2ZWxvY2l0eSkgPj0gc3RkOjphYnMobGFzdFZlbG9j
aXR5ICogdmVsb2NpdHlBY2N1bXVsYXRpb25GbG9vcikpKSB7Ci0gICAgICAgICAgICAgICAgZG91
YmxlIG1pblZlbG9jaXR5ID0gbGFzdFZlbG9jaXR5ICogdmVsb2NpdHlBY2N1bXVsYXRpb25GbG9v
cjsKLSAgICAgICAgICAgICAgICBkb3VibGUgbWF4VmVsb2NpdHkgPSBsYXN0VmVsb2NpdHkgKiB2
ZWxvY2l0eUFjY3VtdWxhdGlvbkNlaWw7Ci0gICAgICAgICAgICAgICAgZG91YmxlIGFjY3VtdWxh
dGlvbk11bHRpcGxpZXIgPSAodmVsb2NpdHkgLSBtaW5WZWxvY2l0eSkgLyAobWF4VmVsb2NpdHkg
LSBtaW5WZWxvY2l0eSk7Ci0gICAgICAgICAgICAgICAgdmVsb2NpdHkgKz0gbGFzdFZlbG9jaXR5
ICogc3RkOjptaW4oYWNjdW11bGF0aW9uTXVsdGlwbGllciwgdmVsb2NpdHlBY2N1bXVsYXRpb25N
YXgpOwotICAgICAgICAgICAgfQorICAgIGF1dG8gYWNjdW11bGF0ZVZlbG9jaXR5ID0gWyZdKGRv
dWJsZSB2ZWxvY2l0eSwgZG91YmxlIGxhc3RWZWxvY2l0eSkgLT4gZG91YmxlIHsKKyAgICAgICAg
aWYgKChzdGQ6OnNpZ25iaXQobGFzdFZlbG9jaXR5KSA9PSBzdGQ6OnNpZ25iaXQodmVsb2NpdHkp
KQorICAgICAgICAgICAgJiYgKHN0ZDo6YWJzKHZlbG9jaXR5KSA+PSBzdGQ6OmFicyhsYXN0VmVs
b2NpdHkgKiB2ZWxvY2l0eUFjY3VtdWxhdGlvbkZsb29yKSkpIHsKKyAgICAgICAgICAgIGRvdWJs
ZSBtaW5WZWxvY2l0eSA9IGxhc3RWZWxvY2l0eSAqIHZlbG9jaXR5QWNjdW11bGF0aW9uRmxvb3I7
CisgICAgICAgICAgICBkb3VibGUgbWF4VmVsb2NpdHkgPSBsYXN0VmVsb2NpdHkgKiB2ZWxvY2l0
eUFjY3VtdWxhdGlvbkNlaWw7CisgICAgICAgICAgICBkb3VibGUgYWNjdW11bGF0aW9uTXVsdGlw
bGllciA9ICh2ZWxvY2l0eSAtIG1pblZlbG9jaXR5KSAvIChtYXhWZWxvY2l0eSAtIG1pblZlbG9j
aXR5KTsKKyAgICAgICAgICAgIHZlbG9jaXR5ICs9IGxhc3RWZWxvY2l0eSAqIHN0ZDo6bWluKGFj
Y3VtdWxhdGlvbk11bHRpcGxpZXIsIHZlbG9jaXR5QWNjdW11bGF0aW9uTWF4KTsKICAgICAgICAg
fQogCiAgICAgICAgIHJldHVybiB2ZWxvY2l0eTsKQEAgLTE4MSwxNCArMTgwLDE0IEBAIGJvb2wg
U2Nyb2xsQW5pbWF0aW9uS2luZXRpYzo6c3RhcnRBbmltYXRlZFNjcm9sbFdpdGhJbml0aWFsVmVs
b2NpdHkoY29uc3QgRmxvYXRQCiAgICAgaWYgKG1heUhTY3JvbGwpIHsKICAgICAgICAgbV9ob3Jp
em9udGFsRGF0YSA9IFBlckF4aXNEYXRhKGV4dGVudHMubWluaW11bVNjcm9sbE9mZnNldCgpLngo
KSwKICAgICAgICAgICAgIGV4dGVudHMubWF4aW11bVNjcm9sbE9mZnNldCgpLngoKSwKLSAgICAg
ICAgICAgIGluaXRpYWxPZmZzZXQueCgpLCBhY2N1bXVsYXRlVmVsb2NpdHkodmVsb2NpdHkud2lk
dGgoKSwgbV9ob3Jpem9udGFsRGF0YSkpOworICAgICAgICAgICAgaW5pdGlhbE9mZnNldC54KCks
IGFjY3VtdWxhdGVWZWxvY2l0eSh2ZWxvY2l0eS53aWR0aCgpLCBwcmV2aW91c1ZlbG9jaXR5Lndp
ZHRoKCkpKTsKICAgICB9IGVsc2UKICAgICAgICAgbV9ob3Jpem9udGFsRGF0YSA9IHN0ZDo6bnVs
bG9wdDsKIAogICAgIGlmIChtYXlWU2Nyb2xsKSB7CiAgICAgICAgIG1fdmVydGljYWxEYXRhID0g
UGVyQXhpc0RhdGEoZXh0ZW50cy5taW5pbXVtU2Nyb2xsT2Zmc2V0KCkueSgpLAogICAgICAgICAg
ICAgZXh0ZW50cy5tYXhpbXVtU2Nyb2xsT2Zmc2V0KCkueSgpLAotICAgICAgICAgICAgaW5pdGlh
bE9mZnNldC55KCksIGFjY3VtdWxhdGVWZWxvY2l0eSh2ZWxvY2l0eS5oZWlnaHQoKSwgbV92ZXJ0
aWNhbERhdGEpKTsKKyAgICAgICAgICAgIGluaXRpYWxPZmZzZXQueSgpLCBhY2N1bXVsYXRlVmVs
b2NpdHkodmVsb2NpdHkuaGVpZ2h0KCksIHByZXZpb3VzVmVsb2NpdHkuaGVpZ2h0KCkpKTsKICAg
ICB9IGVsc2UKICAgICAgICAgbV92ZXJ0aWNhbERhdGEgPSBzdGQ6Om51bGxvcHQ7CiAKQEAgLTIz
Miw1ICsyMzEsMjMgQEAgU3RyaW5nIFNjcm9sbEFuaW1hdGlvbktpbmV0aWM6OmRlYnVnRGVzY3Jp
cHRpb24oKSBjb25zdAogICAgIHJldHVybiB0ZXh0U3RyZWFtLnJlbGVhc2UoKTsKIH0KIAorRmxv
YXRTaXplIFNjcm9sbEFuaW1hdGlvbktpbmV0aWM6OmFjY3VtdWxhdGVWZWxvY2l0eUZyb21QcmV2
aW91c0dlc3R1cmUoY29uc3QgTW9ub3RvbmljVGltZSBsYXN0U3RhcnRUaW1lLCBjb25zdCBGbG9h
dFBvaW50JiBsYXN0SW5pdGlhbE9mZnNldCwgY29uc3QgRmxvYXRTaXplJiBsYXN0SW5pdGlhbFZl
bG9jaXR5KQoreworICAgIGF1dG8gZWxhcHNlZFRpbWUgPSBNb25vdG9uaWNUaW1lOjpub3coKSAt
IGxhc3RTdGFydFRpbWU7CisgICAgYXV0byBleHRlbnRzID0gbV9jbGllbnQuc2Nyb2xsRXh0ZW50
c0ZvckFuaW1hdGlvbigqdGhpcyk7CisKKyAgICBhdXRvIGhvcml6b250YWxEYXRhID0gUGVyQXhp
c0RhdGEoZXh0ZW50cy5taW5pbXVtU2Nyb2xsT2Zmc2V0KCkueCgpLAorICAgICAgICBleHRlbnRz
Lm1heGltdW1TY3JvbGxPZmZzZXQoKS54KCksCisgICAgICAgIGxhc3RJbml0aWFsT2Zmc2V0Lngo
KSwgbGFzdEluaXRpYWxWZWxvY2l0eS53aWR0aCgpKTsKKworICAgIGF1dG8gdmVydGljYWxEYXRh
ID0gUGVyQXhpc0RhdGEoZXh0ZW50cy5taW5pbXVtU2Nyb2xsT2Zmc2V0KCkueSgpLAorICAgICAg
ICBleHRlbnRzLm1heGltdW1TY3JvbGxPZmZzZXQoKS55KCksCisgICAgICAgIGxhc3RJbml0aWFs
T2Zmc2V0LnkoKSwgbGFzdEluaXRpYWxWZWxvY2l0eS5oZWlnaHQoKSk7CisKKyAgICBob3Jpem9u
dGFsRGF0YS5hbmltYXRlU2Nyb2xsKGVsYXBzZWRUaW1lKTsKKyAgICB2ZXJ0aWNhbERhdGEuYW5p
bWF0ZVNjcm9sbChlbGFwc2VkVGltZSk7CisKKyAgICByZXR1cm4gRmxvYXRTaXplKGhvcml6b250
YWxEYXRhLnZlbG9jaXR5KCksIHZlcnRpY2FsRGF0YS52ZWxvY2l0eSgpKTsKK30KIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsQW5pbWF0aW9uS2luZXRpYy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5p
bWF0aW9uS2luZXRpYy5oCmluZGV4IGY4NDUzYjcxMGMwZTgzNGFjZTg2Nzg2NDI3YjgxNDRjMGYz
MGIwMWQuLjc4MTM0ZTZiYmYzOWI0ZDUyNjEzODIxZWJlMjlmMTlkMzM0MTc0MDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbktpbmV0aWMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25LaW5ldGljLmgKQEAgLTYw
LDcgKzYwLDcgQEAgcHVibGljOgogICAgIFNjcm9sbEFuaW1hdGlvbktpbmV0aWMoU2Nyb2xsQW5p
bWF0aW9uQ2xpZW50Jik7CiAgICAgdmlydHVhbCB+U2Nyb2xsQW5pbWF0aW9uS2luZXRpYygpOwog
Ci0gICAgYm9vbCBzdGFydEFuaW1hdGVkU2Nyb2xsV2l0aEluaXRpYWxWZWxvY2l0eShjb25zdCBG
bG9hdFBvaW50JiBpbml0aWFsT2Zmc2V0LCBjb25zdCBGbG9hdFNpemUmIHZlbG9jaXR5LCBib29s
IG1heUhTY3JvbGwsIGJvb2wgbWF5VlNjcm9sbCk7CisgICAgYm9vbCBzdGFydEFuaW1hdGVkU2Ny
b2xsV2l0aEluaXRpYWxWZWxvY2l0eShjb25zdCBGbG9hdFBvaW50JiBpbml0aWFsT2Zmc2V0LCBj
b25zdCBGbG9hdFNpemUmIHZlbG9jaXR5LCBjb25zdCBGbG9hdFNpemUmIHByZXZpb3VzVmVsb2Np
dHksIGJvb2wgbWF5SFNjcm9sbCwgYm9vbCBtYXlWU2Nyb2xsKTsKICAgICBib29sIHJldGFyZ2V0
QWN0aXZlQW5pbWF0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIG5ld09mZnNldCkgZmluYWw7CiAKICAg
ICB2b2lkIGFwcGVuZFRvU2Nyb2xsSGlzdG9yeShjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmKTsK
QEAgLTY4LDYgKzY4LDEyIEBAIHB1YmxpYzoKIAogICAgIEZsb2F0U2l6ZSBjb21wdXRlVmVsb2Np
dHkoKTsKIAorICAgIE1vbm90b25pY1RpbWUgc3RhcnRUaW1lKCkgeyByZXR1cm4gbV9zdGFydFRp
bWU7IH0KKyAgICBGbG9hdFNpemUgaW5pdGlhbFZlbG9jaXR5KCkgeyByZXR1cm4gbV9pbml0aWFs
VmVsb2NpdHk7IH0KKyAgICBGbG9hdFBvaW50IGluaXRpYWxPZmZzZXQoKSB7IHJldHVybiBtX2lu
aXRpYWxPZmZzZXQ7IH0KKworICAgIEZsb2F0U2l6ZSBhY2N1bXVsYXRlVmVsb2NpdHlGcm9tUHJl
dmlvdXNHZXN0dXJlKGNvbnN0IE1vbm90b25pY1RpbWUsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25z
dCBGbG9hdFNpemUmKTsKKwogcHJpdmF0ZToKICAgICB2b2lkIHNlcnZpY2VBbmltYXRpb24oTW9u
b3RvbmljVGltZSkgZmluYWw7CiAgICAgU3RyaW5nIGRlYnVnRGVzY3JpcHRpb24oKSBjb25zdCBm
aW5hbDsKQEAgLTc2LDYgKzgyLDggQEAgcHJpdmF0ZToKICAgICBzdGQ6Om9wdGlvbmFsPFBlckF4
aXNEYXRhPiBtX3ZlcnRpY2FsRGF0YTsKIAogICAgIFZlY3RvcjxQbGF0Zm9ybVdoZWVsRXZlbnQ+
IG1fc2Nyb2xsSGlzdG9yeTsKKyAgICBGbG9hdFBvaW50IG1faW5pdGlhbE9mZnNldDsKKyAgICBG
bG9hdFNpemUgbV9pbml0aWFsVmVsb2NpdHk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29u
dHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29u
dHJvbGxlci5jcHAKaW5kZXggMmY1MjY3NWQxNTg1ZjA2ZGFhZWYyMzc1NGZmNThlOTIxYmU5N2Uy
Yi4uZDJhYmM5NWZmNGNiYmEwNTI1ODFlYjY3MmEyOTZkMjNkOGU5YzUxNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLmNw
cApAQCAtMjc2LDExICsyNzYsMTkgQEAgZmxvYXQgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6
OmFkanVzdGVkU2Nyb2xsRGVzdGluYXRpb24oU2Nyb2xsRXZlbnRBeGlzIGF4aXMKICNpZiBFTkFC
TEUoS0lORVRJQ19TQ1JPTExJTkcpCiBib29sIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjpw
cm9jZXNzV2hlZWxFdmVudEZvcktpbmV0aWNTY3JvbGxpbmcoY29uc3QgUGxhdGZvcm1XaGVlbEV2
ZW50JiBldmVudCkKIHsKLSAgICBpZiAoaXM8U2Nyb2xsQW5pbWF0aW9uS2luZXRpYz4obV9jdXJy
ZW50QW5pbWF0aW9uLmdldCgpKSkKKyAgICBpZiAoaXM8U2Nyb2xsQW5pbWF0aW9uS2luZXRpYz4o
bV9jdXJyZW50QW5pbWF0aW9uLmdldCgpKSkgeworICAgICAgICBhdXRvJiBraW5ldGljQW5pbWF0
aW9uID0gZG93bmNhc3Q8U2Nyb2xsQW5pbWF0aW9uS2luZXRpYz4oKm1fY3VycmVudEFuaW1hdGlv
bik7CisKKyAgICAgICAgbV9wcmV2aW91c1N0YXJ0VGltZSA9IGtpbmV0aWNBbmltYXRpb24uc3Rh
cnRUaW1lKCk7CisgICAgICAgIG1fcHJldmlvdXNJbml0aWFsT2Zmc2V0ID0ga2luZXRpY0FuaW1h
dGlvbi5pbml0aWFsT2Zmc2V0KCk7CisgICAgICAgIG1fcHJldmlvdXNJbml0aWFsVmVsb2NpdHkg
PSBraW5ldGljQW5pbWF0aW9uLmluaXRpYWxWZWxvY2l0eSgpOworCiAgICAgICAgIG1fY3VycmVu
dEFuaW1hdGlvbi0+c3RvcCgpOworICAgIH0KIAogICAgIGlmICghZXZlbnQuaGFzUHJlY2lzZVNj
cm9sbGluZ0RlbHRhcygpKSB7CiAgICAgICAgIG1fc2Nyb2xsSGlzdG9yeS5jbGVhcigpOworICAg
ICAgICBtX3ByZXZpb3VzSW5pdGlhbFZlbG9jaXR5ID0gRmxvYXRTaXplKCk7CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTI5NCw2ICszMDIsNyBAQCBib29sIFNjcm9sbGluZ0Vm
ZmVjdHNDb250cm9sbGVyOjpwcm9jZXNzV2hlZWxFdmVudEZvcktpbmV0aWNTY3JvbGxpbmcoY29u
c3QgUGxhdAogICAgIGlmIChtX2N1cnJlbnRBbmltYXRpb24gJiYgIWlzPFNjcm9sbEFuaW1hdGlv
bktpbmV0aWM+KG1fY3VycmVudEFuaW1hdGlvbi5nZXQoKSkpIHsKICAgICAgICAgbV9jdXJyZW50
QW5pbWF0aW9uLT5zdG9wKCk7CiAgICAgICAgIG1fY3VycmVudEFuaW1hdGlvbiA9IG51bGxwdHI7
CisgICAgICAgIG1fcHJldmlvdXNJbml0aWFsVmVsb2NpdHkgPSBGbG9hdFNpemUoKTsKICAgICB9
CiAKICAgICBpZiAodXNlc1Njcm9sbFNuYXAoKSkKQEAgLTMwNiwxMyArMzE1LDE5IEBAIGJvb2wg
U2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OnByb2Nlc3NXaGVlbEV2ZW50Rm9yS2luZXRpY1Nj
cm9sbGluZyhjb25zdCBQbGF0CiAgICAgd2hpbGUgKCFtX3Njcm9sbEhpc3RvcnkuaXNFbXB0eSgp
KQogICAgICAgICBraW5ldGljQW5pbWF0aW9uLmFwcGVuZFRvU2Nyb2xsSGlzdG9yeShtX3Njcm9s
bEhpc3RvcnkudGFrZUZpcnN0KCkpOwogCisgICAgRmxvYXRTaXplIHByZXZpb3VzVmVsb2NpdHk7
CisgICAgaWYgKCFtX3ByZXZpb3VzSW5pdGlhbFZlbG9jaXR5LmlzWmVybygpKSB7CisgICAgICAg
IHByZXZpb3VzVmVsb2NpdHkgPSBraW5ldGljQW5pbWF0aW9uLmFjY3VtdWxhdGVWZWxvY2l0eUZy
b21QcmV2aW91c0dlc3R1cmUobV9wcmV2aW91c1N0YXJ0VGltZSwgbV9wcmV2aW91c0luaXRpYWxP
ZmZzZXQsIG1fcHJldmlvdXNJbml0aWFsVmVsb2NpdHkpOworICAgICAgICBtX3ByZXZpb3VzSW5p
dGlhbFZlbG9jaXR5ID0gRmxvYXRTaXplKCk7CisgICAgfQorCiAgICAgaWYgKGV2ZW50LmlzRW5k
T2ZOb25Nb21lbnR1bVNjcm9sbCgpKSB7Ci0gICAgICAgIGtpbmV0aWNBbmltYXRpb24uc3RhcnRB
bmltYXRlZFNjcm9sbFdpdGhJbml0aWFsVmVsb2NpdHkobV9jbGllbnQuc2Nyb2xsT2Zmc2V0KCks
IGtpbmV0aWNBbmltYXRpb24uY29tcHV0ZVZlbG9jaXR5KCksIG1fY2xpZW50LmFsbG93c0hvcml6
b250YWxTY3JvbGxpbmcoKSwgbV9jbGllbnQuYWxsb3dzVmVydGljYWxTY3JvbGxpbmcoKSk7Cisg
ICAgICAgIGtpbmV0aWNBbmltYXRpb24uc3RhcnRBbmltYXRlZFNjcm9sbFdpdGhJbml0aWFsVmVs
b2NpdHkobV9jbGllbnQuc2Nyb2xsT2Zmc2V0KCksIGtpbmV0aWNBbmltYXRpb24uY29tcHV0ZVZl
bG9jaXR5KCksIHByZXZpb3VzVmVsb2NpdHksIG1fY2xpZW50LmFsbG93c0hvcml6b250YWxTY3Jv
bGxpbmcoKSwgbV9jbGllbnQuYWxsb3dzVmVydGljYWxTY3JvbGxpbmcoKSk7CiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KICAgICBpZiAoZXZlbnQuaXNUcmFuc2l0aW9uaW5nVG9Nb21lbnR1
bVNjcm9sbCgpKSB7CiAgICAgICAgIGtpbmV0aWNBbmltYXRpb24uY2xlYXJTY3JvbGxIaXN0b3J5
KCk7Ci0gICAgICAgIGtpbmV0aWNBbmltYXRpb24uc3RhcnRBbmltYXRlZFNjcm9sbFdpdGhJbml0
aWFsVmVsb2NpdHkobV9jbGllbnQuc2Nyb2xsT2Zmc2V0KCksIGV2ZW50LnN3aXBlVmVsb2NpdHko
KSwgbV9jbGllbnQuYWxsb3dzSG9yaXpvbnRhbFNjcm9sbGluZygpLCBtX2NsaWVudC5hbGxvd3NW
ZXJ0aWNhbFNjcm9sbGluZygpKTsKKyAgICAgICAga2luZXRpY0FuaW1hdGlvbi5zdGFydEFuaW1h
dGVkU2Nyb2xsV2l0aEluaXRpYWxWZWxvY2l0eShtX2NsaWVudC5zY3JvbGxPZmZzZXQoKSwgZXZl
bnQuc3dpcGVWZWxvY2l0eSgpLCBwcmV2aW91c1ZlbG9jaXR5LCBtX2NsaWVudC5hbGxvd3NIb3Jp
em9udGFsU2Nyb2xsaW5nKCksIG1fY2xpZW50LmFsbG93c1ZlcnRpY2FsU2Nyb2xsaW5nKCkpOwog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5oCmluZGV4IDFmOTQyOGMyYmEzNDMw
YWZiZWM4MDEwNmI4ZjkxYWQ1MzYyMDRlMWEuLmQ4YTYyYTBjZTdiYzI2MWJiYmYzZTFjN2E4NDJh
YmYyMDRhNjhhYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGlu
Z0VmZmVjdHNDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
aW5nRWZmZWN0c0NvbnRyb2xsZXIuaApAQCAtMjM3LDYgKzIzNyw5IEBAIHByaXZhdGU6CiAgICAg
Ym9vbCBwcm9jZXNzV2hlZWxFdmVudEZvcktpbmV0aWNTY3JvbGxpbmcoY29uc3QgUGxhdGZvcm1X
aGVlbEV2ZW50Jik7CiAKICAgICBEZXF1ZTxQbGF0Zm9ybVdoZWVsRXZlbnQ+IG1fc2Nyb2xsSGlz
dG9yeTsKKyAgICBNb25vdG9uaWNUaW1lIG1fcHJldmlvdXNTdGFydFRpbWU7CisgICAgRmxvYXRQ
b2ludCBtX3ByZXZpb3VzSW5pdGlhbE9mZnNldDsKKyAgICBGbG9hdFNpemUgbV9wcmV2aW91c0lu
aXRpYWxWZWxvY2l0eTsKICNlbmRpZgogCiAgICAgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXJD
bGllbnQmIG1fY2xpZW50Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452171</attachid>
            <date>2022-02-16 03:09:10 -0800</date>
            <delta_ts>2022-02-17 12:03:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235507-20220216161014.patch</filename>
            <type>text/plain</type>
            <size>11759</size>
            <attacher name="Alice Mikhaylenko">alicem</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5MjAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWY5ZGUyM2Q2NGMyMzRi
NzBkNTdkMjdkMWM3NmM2MzliODRjZWIxNC4uYzE0NGI1NmY5ZWJmNjI3YzRjZmM4Y2YzY2U5OGU4
MmJlZDYyM2ZjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDIyLTAyLTA5ICBBbGV4
YW5kZXIgTWlraGF5bGVua28gIDxhbGV4bUBnbm9tZS5vcmc+CisKKyAgICAgICAgW0dUS10gUkVH
UkVTU0lPTjogQ3VtdWxhdGl2ZSB2ZWxvY2l0eSBmb3Igc2Nyb2xsaW5nIGRvZXNuJ3Qgd29yawor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1NTA3CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2Nyb2xsQW5p
bWF0aW9uS2luZXRpYyBjYW4gYWNjdW11bGF0ZSB2ZWxvY2l0eSBmcm9tIHRoZSBwcmV2aW91cyBz
Y3JvbGwKKyAgICAgICAgYW5pbWF0aW9uLiBUaGlzIHJlbGllcyBvbiByZXVzaW5nIHRoZSBzYW1l
IGFuaW1hdGlvbiBldmVyeSB0aW1lLCBzbyBpdCBjYW4KKyAgICAgICAgcGljayB1cCB0aGUgcHJl
dmlvdXMgc2Nyb2xsIGRhdGEuCisKKyAgICAgICAgSG93ZXZlciwgU2Nyb2xsaW5nRWZmZWN0c0Nv
bnRyb2xsZXIgbm93IGNyZWF0ZXMgYW5kIGRlc3Ryb3lzIFNjcm9sbEFuaW1hdGlvbktpbmV0aWMK
KyAgICAgICAgZXZlcnkgdGltZSBub3csIHdlIGNhbid0IHJlbHkgb24gdGhhdC4KKworICAgICAg
ICBJbnN0ZWFkLCBzYXZlIGFuZCBwcm9wYWdhdGUgdGhlIGRhdGEgbWFudWFsbHksIHNhbWUgYXMg
dGhlIG1hY09TIHBvcnQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25LaW5l
dGljLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvbktpbmV0aWM6OnN0YXJ0
QW5pbWF0ZWRTY3JvbGxXaXRoSW5pdGlhbFZlbG9jaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbEFuaW1hdGlvbktpbmV0aWM6OmFjY3VtdWxhdGVWZWxvY2l0eUZyb21QcmV2aW91c0dlc3R1
cmUpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbktpbmV0aWMuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6cHJvY2Vzc1doZWVsRXZlbnRGb3JL
aW5ldGljU2Nyb2xsaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29u
dHJvbGxlci5oOgorCiAyMDIyLTAyLTEwICBBbGV4YW5kZXIgTWlraGF5bGVua28gIDxhbGV4bUBn
bm9tZS5vcmc+CiAKICAgICAgICAgW0dUS10gU2Nyb2xsYmFycyBwYWludGVkIGluY29ycmVjdGx5
IGlmIHRoZW1lIGVuYWJsZXMgc3RlcHBlcnMgKHN0ZXBwZXJzIG1pc3BsYWNlZCBvbiB2ZXJ0aWNh
bCBzY3JvbGxiYXJzLCBob3Jpem9udGFsIHNjcm9sbGJhcnMgdmVyeSBicm9rZW4pIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uS2luZXRpYy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25LaW5ldGljLmNwcAppbmRl
eCAzMzU2ZTI1NjRiYTM4N2E1YzEwMzlmMzE3YjI3YmQ4ZjQzYjhmZmZiLi42MTgxNDg2ZDM2NWYw
OGMwZmJmMmM4M2I4YWYwZWE0MjQwOGI5NjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxBbmltYXRpb25LaW5ldGljLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxBbmltYXRpb25LaW5ldGljLmNwcApAQCAtMTUwLDggKzE1MCwxMSBAQCBG
bG9hdFNpemUgU2Nyb2xsQW5pbWF0aW9uS2luZXRpYzo6Y29tcHV0ZVZlbG9jaXR5KCkKICAgICBy
ZXR1cm4gRmxvYXRTaXplKGFjY3VtRGVsdGEueCgpICogLTEgLyAobGFzdCAtIGZpcnN0KS52YWx1
ZSgpLCBhY2N1bURlbHRhLnkoKSAqIC0xIC8gKGxhc3QgLSBmaXJzdCkudmFsdWUoKSk7CiB9CiAK
LWJvb2wgU2Nyb2xsQW5pbWF0aW9uS2luZXRpYzo6c3RhcnRBbmltYXRlZFNjcm9sbFdpdGhJbml0
aWFsVmVsb2NpdHkoY29uc3QgRmxvYXRQb2ludCYgaW5pdGlhbE9mZnNldCwgY29uc3QgRmxvYXRT
aXplJiB2ZWxvY2l0eSwgYm9vbCBtYXlIU2Nyb2xsLCBib29sIG1heVZTY3JvbGwpCitib29sIFNj
cm9sbEFuaW1hdGlvbktpbmV0aWM6OnN0YXJ0QW5pbWF0ZWRTY3JvbGxXaXRoSW5pdGlhbFZlbG9j
aXR5KGNvbnN0IEZsb2F0UG9pbnQmIGluaXRpYWxPZmZzZXQsIGNvbnN0IEZsb2F0U2l6ZSYgdmVs
b2NpdHksIGNvbnN0IEZsb2F0U2l6ZSYgcHJldmlvdXNWZWxvY2l0eSwgYm9vbCBtYXlIU2Nyb2xs
LCBib29sIG1heVZTY3JvbGwpCiB7CisgICAgbV9pbml0aWFsT2Zmc2V0ID0gaW5pdGlhbE9mZnNl
dDsKKyAgICBtX2luaXRpYWxWZWxvY2l0eSA9IHZlbG9jaXR5OworCiAgICAgc3RvcCgpOwogCiAg
ICAgaWYgKHZlbG9jaXR5LmlzWmVybygpKSB7CkBAIC0xNjAsMTkgKzE2MywxNSBAQCBib29sIFNj
cm9sbEFuaW1hdGlvbktpbmV0aWM6OnN0YXJ0QW5pbWF0ZWRTY3JvbGxXaXRoSW5pdGlhbFZlbG9j
aXR5KGNvbnN0IEZsb2F0UAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgYXV0
byBlbGFwc2VkVGltZSA9IDBfczsKICAgICBhdXRvIGV4dGVudHMgPSBtX2NsaWVudC5zY3JvbGxF
eHRlbnRzRm9yQW5pbWF0aW9uKCp0aGlzKTsKIAotICAgIGF1dG8gYWNjdW11bGF0ZVZlbG9jaXR5
ID0gWyZdKGRvdWJsZSB2ZWxvY2l0eSwgc3RkOjpvcHRpb25hbDxQZXJBeGlzRGF0YT4gYXhpc0Rh
dGEpIC0+IGRvdWJsZSB7Ci0gICAgICAgIGlmIChheGlzRGF0YSAmJiBheGlzRGF0YS52YWx1ZSgp
LmFuaW1hdGVTY3JvbGwoZWxhcHNlZFRpbWUpKSB7Ci0gICAgICAgICAgICBkb3VibGUgbGFzdFZl
bG9jaXR5ID0gYXhpc0RhdGEudmFsdWUoKS52ZWxvY2l0eSgpOwotICAgICAgICAgICAgaWYgKChz
dGQ6OnNpZ25iaXQobGFzdFZlbG9jaXR5KSA9PSBzdGQ6OnNpZ25iaXQodmVsb2NpdHkpKQotICAg
ICAgICAgICAgICAgICYmIChzdGQ6OmFicyh2ZWxvY2l0eSkgPj0gc3RkOjphYnMobGFzdFZlbG9j
aXR5ICogdmVsb2NpdHlBY2N1bXVsYXRpb25GbG9vcikpKSB7Ci0gICAgICAgICAgICAgICAgZG91
YmxlIG1pblZlbG9jaXR5ID0gbGFzdFZlbG9jaXR5ICogdmVsb2NpdHlBY2N1bXVsYXRpb25GbG9v
cjsKLSAgICAgICAgICAgICAgICBkb3VibGUgbWF4VmVsb2NpdHkgPSBsYXN0VmVsb2NpdHkgKiB2
ZWxvY2l0eUFjY3VtdWxhdGlvbkNlaWw7Ci0gICAgICAgICAgICAgICAgZG91YmxlIGFjY3VtdWxh
dGlvbk11bHRpcGxpZXIgPSAodmVsb2NpdHkgLSBtaW5WZWxvY2l0eSkgLyAobWF4VmVsb2NpdHkg
LSBtaW5WZWxvY2l0eSk7Ci0gICAgICAgICAgICAgICAgdmVsb2NpdHkgKz0gbGFzdFZlbG9jaXR5
ICogc3RkOjptaW4oYWNjdW11bGF0aW9uTXVsdGlwbGllciwgdmVsb2NpdHlBY2N1bXVsYXRpb25N
YXgpOwotICAgICAgICAgICAgfQorICAgIGF1dG8gYWNjdW11bGF0ZVZlbG9jaXR5ID0gWyZdKGRv
dWJsZSB2ZWxvY2l0eSwgZG91YmxlIHByZXZpb3VzVmVsb2NpdHkpIC0+IGRvdWJsZSB7CisgICAg
ICAgIGlmICgoc3RkOjpzaWduYml0KHByZXZpb3VzVmVsb2NpdHkpID09IHN0ZDo6c2lnbmJpdCh2
ZWxvY2l0eSkpCisgICAgICAgICAgICAmJiAoc3RkOjphYnModmVsb2NpdHkpID49IHN0ZDo6YWJz
KHByZXZpb3VzVmVsb2NpdHkgKiB2ZWxvY2l0eUFjY3VtdWxhdGlvbkZsb29yKSkpIHsKKyAgICAg
ICAgICAgIGRvdWJsZSBtaW5WZWxvY2l0eSA9IHByZXZpb3VzVmVsb2NpdHkgKiB2ZWxvY2l0eUFj
Y3VtdWxhdGlvbkZsb29yOworICAgICAgICAgICAgZG91YmxlIG1heFZlbG9jaXR5ID0gcHJldmlv
dXNWZWxvY2l0eSAqIHZlbG9jaXR5QWNjdW11bGF0aW9uQ2VpbDsKKyAgICAgICAgICAgIGRvdWJs
ZSBhY2N1bXVsYXRpb25NdWx0aXBsaWVyID0gKHZlbG9jaXR5IC0gbWluVmVsb2NpdHkpIC8gKG1h
eFZlbG9jaXR5IC0gbWluVmVsb2NpdHkpOworICAgICAgICAgICAgdmVsb2NpdHkgKz0gcHJldmlv
dXNWZWxvY2l0eSAqIHN0ZDo6bWluKGFjY3VtdWxhdGlvbk11bHRpcGxpZXIsIHZlbG9jaXR5QWNj
dW11bGF0aW9uTWF4KTsKICAgICAgICAgfQogCiAgICAgICAgIHJldHVybiB2ZWxvY2l0eTsKQEAg
LTE4MSwxNCArMTgwLDE0IEBAIGJvb2wgU2Nyb2xsQW5pbWF0aW9uS2luZXRpYzo6c3RhcnRBbmlt
YXRlZFNjcm9sbFdpdGhJbml0aWFsVmVsb2NpdHkoY29uc3QgRmxvYXRQCiAgICAgaWYgKG1heUhT
Y3JvbGwpIHsKICAgICAgICAgbV9ob3Jpem9udGFsRGF0YSA9IFBlckF4aXNEYXRhKGV4dGVudHMu
bWluaW11bVNjcm9sbE9mZnNldCgpLngoKSwKICAgICAgICAgICAgIGV4dGVudHMubWF4aW11bVNj
cm9sbE9mZnNldCgpLngoKSwKLSAgICAgICAgICAgIGluaXRpYWxPZmZzZXQueCgpLCBhY2N1bXVs
YXRlVmVsb2NpdHkodmVsb2NpdHkud2lkdGgoKSwgbV9ob3Jpem9udGFsRGF0YSkpOworICAgICAg
ICAgICAgaW5pdGlhbE9mZnNldC54KCksIGFjY3VtdWxhdGVWZWxvY2l0eSh2ZWxvY2l0eS53aWR0
aCgpLCBwcmV2aW91c1ZlbG9jaXR5LndpZHRoKCkpKTsKICAgICB9IGVsc2UKICAgICAgICAgbV9o
b3Jpem9udGFsRGF0YSA9IHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmIChtYXlWU2Nyb2xsKSB7CiAg
ICAgICAgIG1fdmVydGljYWxEYXRhID0gUGVyQXhpc0RhdGEoZXh0ZW50cy5taW5pbXVtU2Nyb2xs
T2Zmc2V0KCkueSgpLAogICAgICAgICAgICAgZXh0ZW50cy5tYXhpbXVtU2Nyb2xsT2Zmc2V0KCku
eSgpLAotICAgICAgICAgICAgaW5pdGlhbE9mZnNldC55KCksIGFjY3VtdWxhdGVWZWxvY2l0eSh2
ZWxvY2l0eS5oZWlnaHQoKSwgbV92ZXJ0aWNhbERhdGEpKTsKKyAgICAgICAgICAgIGluaXRpYWxP
ZmZzZXQueSgpLCBhY2N1bXVsYXRlVmVsb2NpdHkodmVsb2NpdHkuaGVpZ2h0KCksIHByZXZpb3Vz
VmVsb2NpdHkuaGVpZ2h0KCkpKTsKICAgICB9IGVsc2UKICAgICAgICAgbV92ZXJ0aWNhbERhdGEg
PSBzdGQ6Om51bGxvcHQ7CiAKQEAgLTIzMiw1ICsyMzEsMjMgQEAgU3RyaW5nIFNjcm9sbEFuaW1h
dGlvbktpbmV0aWM6OmRlYnVnRGVzY3JpcHRpb24oKSBjb25zdAogICAgIHJldHVybiB0ZXh0U3Ry
ZWFtLnJlbGVhc2UoKTsKIH0KIAorRmxvYXRTaXplIFNjcm9sbEFuaW1hdGlvbktpbmV0aWM6OmFj
Y3VtdWxhdGVWZWxvY2l0eUZyb21QcmV2aW91c0dlc3R1cmUoY29uc3QgTW9ub3RvbmljVGltZSBs
YXN0U3RhcnRUaW1lLCBjb25zdCBGbG9hdFBvaW50JiBsYXN0SW5pdGlhbE9mZnNldCwgY29uc3Qg
RmxvYXRTaXplJiBsYXN0SW5pdGlhbFZlbG9jaXR5KQoreworICAgIGF1dG8gZWxhcHNlZFRpbWUg
PSBNb25vdG9uaWNUaW1lOjpub3coKSAtIGxhc3RTdGFydFRpbWU7CisgICAgYXV0byBleHRlbnRz
ID0gbV9jbGllbnQuc2Nyb2xsRXh0ZW50c0ZvckFuaW1hdGlvbigqdGhpcyk7CisKKyAgICBhdXRv
IGhvcml6b250YWxEYXRhID0gUGVyQXhpc0RhdGEoZXh0ZW50cy5taW5pbXVtU2Nyb2xsT2Zmc2V0
KCkueCgpLAorICAgICAgICBleHRlbnRzLm1heGltdW1TY3JvbGxPZmZzZXQoKS54KCksCisgICAg
ICAgIGxhc3RJbml0aWFsT2Zmc2V0LngoKSwgbGFzdEluaXRpYWxWZWxvY2l0eS53aWR0aCgpKTsK
KworICAgIGF1dG8gdmVydGljYWxEYXRhID0gUGVyQXhpc0RhdGEoZXh0ZW50cy5taW5pbXVtU2Ny
b2xsT2Zmc2V0KCkueSgpLAorICAgICAgICBleHRlbnRzLm1heGltdW1TY3JvbGxPZmZzZXQoKS55
KCksCisgICAgICAgIGxhc3RJbml0aWFsT2Zmc2V0LnkoKSwgbGFzdEluaXRpYWxWZWxvY2l0eS5o
ZWlnaHQoKSk7CisKKyAgICBob3Jpem9udGFsRGF0YS5hbmltYXRlU2Nyb2xsKGVsYXBzZWRUaW1l
KTsKKyAgICB2ZXJ0aWNhbERhdGEuYW5pbWF0ZVNjcm9sbChlbGFwc2VkVGltZSk7CisKKyAgICBy
ZXR1cm4gRmxvYXRTaXplKGhvcml6b250YWxEYXRhLnZlbG9jaXR5KCksIHZlcnRpY2FsRGF0YS52
ZWxvY2l0eSgpKTsKK30KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uS2luZXRpYy5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uS2luZXRpYy5oCmluZGV4IGY4NDUzYjcxMGMw
ZTgzNGFjZTg2Nzg2NDI3YjgxNDRjMGYzMGIwMWQuLjc4MTM0ZTZiYmYzOWI0ZDUyNjEzODIxZWJl
MjlmMTlkMzM0MTc0MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bEFuaW1hdGlvbktpbmV0aWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxB
bmltYXRpb25LaW5ldGljLmgKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogICAgIFNjcm9sbEFu
aW1hdGlvbktpbmV0aWMoU2Nyb2xsQW5pbWF0aW9uQ2xpZW50Jik7CiAgICAgdmlydHVhbCB+U2Ny
b2xsQW5pbWF0aW9uS2luZXRpYygpOwogCi0gICAgYm9vbCBzdGFydEFuaW1hdGVkU2Nyb2xsV2l0
aEluaXRpYWxWZWxvY2l0eShjb25zdCBGbG9hdFBvaW50JiBpbml0aWFsT2Zmc2V0LCBjb25zdCBG
bG9hdFNpemUmIHZlbG9jaXR5LCBib29sIG1heUhTY3JvbGwsIGJvb2wgbWF5VlNjcm9sbCk7Cisg
ICAgYm9vbCBzdGFydEFuaW1hdGVkU2Nyb2xsV2l0aEluaXRpYWxWZWxvY2l0eShjb25zdCBGbG9h
dFBvaW50JiBpbml0aWFsT2Zmc2V0LCBjb25zdCBGbG9hdFNpemUmIHZlbG9jaXR5LCBjb25zdCBG
bG9hdFNpemUmIHByZXZpb3VzVmVsb2NpdHksIGJvb2wgbWF5SFNjcm9sbCwgYm9vbCBtYXlWU2Ny
b2xsKTsKICAgICBib29sIHJldGFyZ2V0QWN0aXZlQW5pbWF0aW9uKGNvbnN0IEZsb2F0UG9pbnQm
IG5ld09mZnNldCkgZmluYWw7CiAKICAgICB2b2lkIGFwcGVuZFRvU2Nyb2xsSGlzdG9yeShjb25z
dCBQbGF0Zm9ybVdoZWVsRXZlbnQmKTsKQEAgLTY4LDYgKzY4LDEyIEBAIHB1YmxpYzoKIAogICAg
IEZsb2F0U2l6ZSBjb21wdXRlVmVsb2NpdHkoKTsKIAorICAgIE1vbm90b25pY1RpbWUgc3RhcnRU
aW1lKCkgeyByZXR1cm4gbV9zdGFydFRpbWU7IH0KKyAgICBGbG9hdFNpemUgaW5pdGlhbFZlbG9j
aXR5KCkgeyByZXR1cm4gbV9pbml0aWFsVmVsb2NpdHk7IH0KKyAgICBGbG9hdFBvaW50IGluaXRp
YWxPZmZzZXQoKSB7IHJldHVybiBtX2luaXRpYWxPZmZzZXQ7IH0KKworICAgIEZsb2F0U2l6ZSBh
Y2N1bXVsYXRlVmVsb2NpdHlGcm9tUHJldmlvdXNHZXN0dXJlKGNvbnN0IE1vbm90b25pY1RpbWUs
IGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBGbG9hdFNpemUmKTsKKwogcHJpdmF0ZToKICAgICB2
b2lkIHNlcnZpY2VBbmltYXRpb24oTW9ub3RvbmljVGltZSkgZmluYWw7CiAgICAgU3RyaW5nIGRl
YnVnRGVzY3JpcHRpb24oKSBjb25zdCBmaW5hbDsKQEAgLTc2LDYgKzgyLDggQEAgcHJpdmF0ZToK
ICAgICBzdGQ6Om9wdGlvbmFsPFBlckF4aXNEYXRhPiBtX3ZlcnRpY2FsRGF0YTsKIAogICAgIFZl
Y3RvcjxQbGF0Zm9ybVdoZWVsRXZlbnQ+IG1fc2Nyb2xsSGlzdG9yeTsKKyAgICBGbG9hdFBvaW50
IG1faW5pdGlhbE9mZnNldDsKKyAgICBGbG9hdFNpemUgbV9pbml0aWFsVmVsb2NpdHk7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5jcHAKaW5kZXggMmY1MjY3NWQxNTg1ZjA2
ZGFhZWYyMzc1NGZmNThlOTIxYmU5N2UyYi4uNGVlZTE4ODE0MDg4MDc4Yzc2YmNiMGYwOWFjY2Y4
YTU5YTQ3NDIwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsaW5n
RWZmZWN0c0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bGluZ0VmZmVjdHNDb250cm9sbGVyLmNwcApAQCAtMjc2LDExICsyNzYsMTkgQEAgZmxvYXQgU2Ny
b2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OmFkanVzdGVkU2Nyb2xsRGVzdGluYXRpb24oU2Nyb2xs
RXZlbnRBeGlzIGF4aXMKICNpZiBFTkFCTEUoS0lORVRJQ19TQ1JPTExJTkcpCiBib29sIFNjcm9s
bGluZ0VmZmVjdHNDb250cm9sbGVyOjpwcm9jZXNzV2hlZWxFdmVudEZvcktpbmV0aWNTY3JvbGxp
bmcoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiBldmVudCkKIHsKLSAgICBpZiAoaXM8U2Nyb2xs
QW5pbWF0aW9uS2luZXRpYz4obV9jdXJyZW50QW5pbWF0aW9uLmdldCgpKSkKKyAgICBpZiAoaXM8
U2Nyb2xsQW5pbWF0aW9uS2luZXRpYz4obV9jdXJyZW50QW5pbWF0aW9uLmdldCgpKSkgeworICAg
ICAgICBhdXRvJiBraW5ldGljQW5pbWF0aW9uID0gZG93bmNhc3Q8U2Nyb2xsQW5pbWF0aW9uS2lu
ZXRpYz4oKm1fY3VycmVudEFuaW1hdGlvbik7CisKKyAgICAgICAgbV9wcmV2aW91c0tpbmV0aWNB
bmltYXRpb25JbmZvLnN0YXJ0VGltZSA9IGtpbmV0aWNBbmltYXRpb24uc3RhcnRUaW1lKCk7Cisg
ICAgICAgIG1fcHJldmlvdXNLaW5ldGljQW5pbWF0aW9uSW5mby5pbml0aWFsT2Zmc2V0ID0ga2lu
ZXRpY0FuaW1hdGlvbi5pbml0aWFsT2Zmc2V0KCk7CisgICAgICAgIG1fcHJldmlvdXNLaW5ldGlj
QW5pbWF0aW9uSW5mby5pbml0aWFsVmVsb2NpdHkgPSBraW5ldGljQW5pbWF0aW9uLmluaXRpYWxW
ZWxvY2l0eSgpOworCiAgICAgICAgIG1fY3VycmVudEFuaW1hdGlvbi0+c3RvcCgpOworICAgIH0K
IAogICAgIGlmICghZXZlbnQuaGFzUHJlY2lzZVNjcm9sbGluZ0RlbHRhcygpKSB7CiAgICAgICAg
IG1fc2Nyb2xsSGlzdG9yeS5jbGVhcigpOworICAgICAgICBtX3ByZXZpb3VzS2luZXRpY0FuaW1h
dGlvbkluZm8uaW5pdGlhbFZlbG9jaXR5ID0gRmxvYXRTaXplKCk7CiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CiAKQEAgLTI5NCw2ICszMDIsNyBAQCBib29sIFNjcm9sbGluZ0VmZmVjdHND
b250cm9sbGVyOjpwcm9jZXNzV2hlZWxFdmVudEZvcktpbmV0aWNTY3JvbGxpbmcoY29uc3QgUGxh
dAogICAgIGlmIChtX2N1cnJlbnRBbmltYXRpb24gJiYgIWlzPFNjcm9sbEFuaW1hdGlvbktpbmV0
aWM+KG1fY3VycmVudEFuaW1hdGlvbi5nZXQoKSkpIHsKICAgICAgICAgbV9jdXJyZW50QW5pbWF0
aW9uLT5zdG9wKCk7CiAgICAgICAgIG1fY3VycmVudEFuaW1hdGlvbiA9IG51bGxwdHI7CisgICAg
ICAgIG1fcHJldmlvdXNLaW5ldGljQW5pbWF0aW9uSW5mby5pbml0aWFsVmVsb2NpdHkgPSBGbG9h
dFNpemUoKTsKICAgICB9CiAKICAgICBpZiAodXNlc1Njcm9sbFNuYXAoKSkKQEAgLTMwNiwxMyAr
MzE1LDIwIEBAIGJvb2wgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OnByb2Nlc3NXaGVlbEV2
ZW50Rm9yS2luZXRpY1Njcm9sbGluZyhjb25zdCBQbGF0CiAgICAgd2hpbGUgKCFtX3Njcm9sbEhp
c3RvcnkuaXNFbXB0eSgpKQogICAgICAgICBraW5ldGljQW5pbWF0aW9uLmFwcGVuZFRvU2Nyb2xs
SGlzdG9yeShtX3Njcm9sbEhpc3RvcnkudGFrZUZpcnN0KCkpOwogCisgICAgRmxvYXRTaXplIHBy
ZXZpb3VzVmVsb2NpdHk7CisgICAgaWYgKCFtX3ByZXZpb3VzS2luZXRpY0FuaW1hdGlvbkluZm8u
aW5pdGlhbFZlbG9jaXR5LmlzWmVybygpKSB7CisgICAgICAgIHByZXZpb3VzVmVsb2NpdHkgPSBr
aW5ldGljQW5pbWF0aW9uLmFjY3VtdWxhdGVWZWxvY2l0eUZyb21QcmV2aW91c0dlc3R1cmUobV9w
cmV2aW91c0tpbmV0aWNBbmltYXRpb25JbmZvLnN0YXJ0VGltZSwKKyAgICAgICAgICAgIG1fcHJl
dmlvdXNLaW5ldGljQW5pbWF0aW9uSW5mby5pbml0aWFsT2Zmc2V0LCBtX3ByZXZpb3VzS2luZXRp
Y0FuaW1hdGlvbkluZm8uaW5pdGlhbFZlbG9jaXR5KTsKKyAgICAgICAgbV9wcmV2aW91c0tpbmV0
aWNBbmltYXRpb25JbmZvLmluaXRpYWxWZWxvY2l0eSA9IEZsb2F0U2l6ZSgpOworICAgIH0KKwog
ICAgIGlmIChldmVudC5pc0VuZE9mTm9uTW9tZW50dW1TY3JvbGwoKSkgewotICAgICAgICBraW5l
dGljQW5pbWF0aW9uLnN0YXJ0QW5pbWF0ZWRTY3JvbGxXaXRoSW5pdGlhbFZlbG9jaXR5KG1fY2xp
ZW50LnNjcm9sbE9mZnNldCgpLCBraW5ldGljQW5pbWF0aW9uLmNvbXB1dGVWZWxvY2l0eSgpLCBt
X2NsaWVudC5hbGxvd3NIb3Jpem9udGFsU2Nyb2xsaW5nKCksIG1fY2xpZW50LmFsbG93c1ZlcnRp
Y2FsU2Nyb2xsaW5nKCkpOworICAgICAgICBraW5ldGljQW5pbWF0aW9uLnN0YXJ0QW5pbWF0ZWRT
Y3JvbGxXaXRoSW5pdGlhbFZlbG9jaXR5KG1fY2xpZW50LnNjcm9sbE9mZnNldCgpLCBraW5ldGlj
QW5pbWF0aW9uLmNvbXB1dGVWZWxvY2l0eSgpLCBwcmV2aW91c1ZlbG9jaXR5LCBtX2NsaWVudC5h
bGxvd3NIb3Jpem9udGFsU2Nyb2xsaW5nKCksIG1fY2xpZW50LmFsbG93c1ZlcnRpY2FsU2Nyb2xs
aW5nKCkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgaWYgKGV2ZW50LmlzVHJh
bnNpdGlvbmluZ1RvTW9tZW50dW1TY3JvbGwoKSkgewogICAgICAgICBraW5ldGljQW5pbWF0aW9u
LmNsZWFyU2Nyb2xsSGlzdG9yeSgpOwotICAgICAgICBraW5ldGljQW5pbWF0aW9uLnN0YXJ0QW5p
bWF0ZWRTY3JvbGxXaXRoSW5pdGlhbFZlbG9jaXR5KG1fY2xpZW50LnNjcm9sbE9mZnNldCgpLCBl
dmVudC5zd2lwZVZlbG9jaXR5KCksIG1fY2xpZW50LmFsbG93c0hvcml6b250YWxTY3JvbGxpbmco
KSwgbV9jbGllbnQuYWxsb3dzVmVydGljYWxTY3JvbGxpbmcoKSk7CisgICAgICAgIGtpbmV0aWNB
bmltYXRpb24uc3RhcnRBbmltYXRlZFNjcm9sbFdpdGhJbml0aWFsVmVsb2NpdHkobV9jbGllbnQu
c2Nyb2xsT2Zmc2V0KCksIGV2ZW50LnN3aXBlVmVsb2NpdHkoKSwgcHJldmlvdXNWZWxvY2l0eSwg
bV9jbGllbnQuYWxsb3dzSG9yaXpvbnRhbFNjcm9sbGluZygpLCBtX2NsaWVudC5hbGxvd3NWZXJ0
aWNhbFNjcm9sbGluZygpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuaApp
bmRleCAxZjk0MjhjMmJhMzQzMGFmYmVjODAxMDZiOGY5MWFkNTM2MjA0ZTFhLi5kMTI3ZjNhYTE3
MGQ0M2RhZGY2NjZmMjlkZGRiMDcwZmZjMjBkMjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLmgKQEAgLTIzNyw2ICsyMzcs
MTIgQEAgcHJpdmF0ZToKICAgICBib29sIHByb2Nlc3NXaGVlbEV2ZW50Rm9yS2luZXRpY1Njcm9s
bGluZyhjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmKTsKIAogICAgIERlcXVlPFBsYXRmb3JtV2hl
ZWxFdmVudD4gbV9zY3JvbGxIaXN0b3J5OworCisgICAgc3RydWN0IHsKKyAgICAgICAgTW9ub3Rv
bmljVGltZSBzdGFydFRpbWU7CisgICAgICAgIEZsb2F0UG9pbnQgaW5pdGlhbE9mZnNldDsKKyAg
ICAgICAgRmxvYXRTaXplIGluaXRpYWxWZWxvY2l0eTsKKyAgICB9IG1fcHJldmlvdXNLaW5ldGlj
QW5pbWF0aW9uSW5mbzsKICNlbmRpZgogCiAgICAgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXJD
bGllbnQmIG1fY2xpZW50Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>