<?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>214712</bug_id>
          
          <creation_ts>2020-07-23 16:54:14 -0700</creation_ts>
          <short_desc>steps() timing function on a transform animation triggers a render every frame</short_desc>
          <delta_ts>2020-08-27 07:58:23 -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>Animations</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=214708</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=215229</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=215853</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>darin</cc>
    
    <cc>dino</cc>
    
    <cc>ggaren</cc>
    
    <cc>graouts</cc>
    
    <cc>graouts</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1674466</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-07-23 16:54:14 -0700</bug_when>
    <thetext>steps() timing function on a transform animation triggers a render every frame</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1674469</commentid>
    <comment_count>1</comment_count>
      <attachid>405097</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-07-23 16:54:42 -0700</bug_when>
    <thetext>Created attachment 405097
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1674470</commentid>
    <comment_count>2</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-07-23 16:54:45 -0700</bug_when>
    <thetext>&lt;rdar://problem/62737868&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1674553</commentid>
    <comment_count>3</comment_count>
      <attachid>405129</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-07-23 22:46:23 -0700</bug_when>
    <thetext>Created attachment 405129
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1674658</commentid>
    <comment_count>4</comment_count>
      <attachid>405129</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-07-24 08:49:55 -0700</bug_when>
    <thetext>Comment on attachment 405129
Patch

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

&gt; Source/WebCore/animation/KeyframeEffect.h:214
&gt; +    Optional&lt;bool&gt; m_isRunningAccelerated;

I&apos;m really not a fan of using Optional&lt;bool&gt; (outside of a something decoding a bool value or similar uses). I almost never understand what it is trying to represent. In most cases an enum is much clearer. I think that would be true here too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1674715</commentid>
    <comment_count>5</comment_count>
      <attachid>405129</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-07-24 10:04:32 -0700</bug_when>
    <thetext>Comment on attachment 405129
Patch

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

&gt; Source/WebCore/animation/KeyframeEffect.cpp:1558
&gt; +    computeSomeKeyframesUseStepsTimingFunction();

what an interesting function name! (but not new)

&gt;&gt; Source/WebCore/animation/KeyframeEffect.h:214
&gt;&gt; +    Optional&lt;bool&gt; m_isRunningAccelerated;
&gt; 
&gt; I&apos;m really not a fan of using Optional&lt;bool&gt; (outside of a something decoding a bool value or similar uses). I almost never understand what it is trying to represent. In most cases an enum is much clearer. I think that would be true here too.

You&apos;d rather a yes/no/IDK-yet tristate?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1674765</commentid>
    <comment_count>6</comment_count>
      <attachid>405129</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-07-24 11:14:13 -0700</bug_when>
    <thetext>Comment on attachment 405129
Patch

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

&gt;&gt;&gt; Source/WebCore/animation/KeyframeEffect.h:214
&gt;&gt;&gt; +    Optional&lt;bool&gt; m_isRunningAccelerated;
&gt;&gt; 
&gt;&gt; I&apos;m really not a fan of using Optional&lt;bool&gt; (outside of a something decoding a bool value or similar uses). I almost never understand what it is trying to represent. In most cases an enum is much clearer. I think that would be true here too.
&gt; 
&gt; You&apos;d rather a yes/no/IDK-yet tristate?

I don’t have the same problem with it that Sam does. But just reminding you that we do have &lt;wtf/TriState.h&gt; and of course we can make more enums &quot;until the cows come home&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1674772</commentid>
    <comment_count>7</comment_count>
      <attachid>405129</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-07-24 11:30:13 -0700</bug_when>
    <thetext>Comment on attachment 405129
Patch

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

&gt;&gt;&gt;&gt; Source/WebCore/animation/KeyframeEffect.h:214
&gt;&gt;&gt;&gt; +    Optional&lt;bool&gt; m_isRunningAccelerated;
&gt;&gt;&gt; 
&gt;&gt;&gt; I&apos;m really not a fan of using Optional&lt;bool&gt; (outside of a something decoding a bool value or similar uses). I almost never understand what it is trying to represent. In most cases an enum is much clearer. I think that would be true here too.
&gt;&gt; 
&gt;&gt; You&apos;d rather a yes/no/IDK-yet tristate?
&gt; 
&gt; I don’t have the same problem with it that Sam does. But just reminding you that we do have &lt;wtf/TriState.h&gt; and of course we can make more enums &quot;until the cows come home&quot;.

I believe the states are: { NotRunning, RunningUnaccelerated, RunningAccelerated }. IDK-yet / Indeterminate aren&apos;t a 100% fit here because we always know our state. Perhaps an enum would make this clearer. Or just two separate data members, m_isRunning and m_isAccelerated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1674776</commentid>
    <comment_count>8</comment_count>
      <attachid>405129</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-07-24 11:39:06 -0700</bug_when>
    <thetext>Comment on attachment 405129
Patch

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

&gt;&gt;&gt;&gt;&gt; Source/WebCore/animation/KeyframeEffect.h:214
&gt;&gt;&gt;&gt;&gt; +    Optional&lt;bool&gt; m_isRunningAccelerated;
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; I&apos;m really not a fan of using Optional&lt;bool&gt; (outside of a something decoding a bool value or similar uses). I almost never understand what it is trying to represent. In most cases an enum is much clearer. I think that would be true here too.
&gt;&gt;&gt; 
&gt;&gt;&gt; You&apos;d rather a yes/no/IDK-yet tristate?
&gt;&gt; 
&gt;&gt; I don’t have the same problem with it that Sam does. But just reminding you that we do have &lt;wtf/TriState.h&gt; and of course we can make more enums &quot;until the cows come home&quot;.
&gt; 
&gt; I believe the states are: { NotRunning, RunningUnaccelerated, RunningAccelerated }. IDK-yet / Indeterminate aren&apos;t a 100% fit here because we always know our state. Perhaps an enum would make this clearer. Or just two separate data members, m_isRunning and m_isAccelerated.

The code definitely implies that WTF::nullopt is used as an &quot;I don’t know&quot; state.

animationDidChangeTimingProperties sets it to WTF::nullopt. That’s not &quot;not running&quot;.

I think we just proved that a custom enum would be better than the alternatives above; might help us clarify our thinking.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1674785</commentid>
    <comment_count>9</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-07-24 12:17:56 -0700</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #7)

&gt; I believe the states are: { NotRunning, RunningUnaccelerated,
&gt; RunningAccelerated }. IDK-yet / Indeterminate aren&apos;t a 100% fit here because
&gt; we always know our state. Perhaps an enum would make this clearer. Or just
&gt; two separate data members, m_isRunning and m_isAccelerated.

I don&apos;t think it includes RunningUnaccelerated (that&apos;s surely state that&apos;s tracked elsewhere). It&apos;s more like &quot;have I tried to run it accelerated: not yet/yes and failed/yes and succeeded&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1674812</commentid>
    <comment_count>10</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-07-24 14:04:28 -0700</bug_when>
    <thetext>https://trac.webkit.org/changeset/264856/webkit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1683366</commentid>
    <comment_count>11</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-08-27 07:58:23 -0700</bug_when>
    <thetext>This caused bug 215853.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>405097</attachid>
            <date>2020-07-23 16:54:42 -0700</date>
            <delta_ts>2020-07-23 22:46:22 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-214712-20200723165442.patch</filename>
            <type>text/plain</type>
            <size>7368</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0NzI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTk5YzgwOGM3ZjZjNGQ2
MGViOTFhMTQ0OGNlNjg1OTViMTMzM2M3Ny4uZjQwODhlMGEyYjE5ZGNkZGRiMjk4ZjRhNGZmYjM1
OTFlZWY3NDA3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDIwLTA3LTIzICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIHN0ZXBzKCkgdGlt
aW5nIGZ1bmN0aW9uIG9uIGEgdHJhbnNmb3JtIGFuaW1hdGlvbiB0cmlnZ2VycyBhIHJlbmRlciBl
dmVyeSBmcmFtZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjE0NzEyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MjczNzg2OD4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgKE9PUFMh
KS4KKworICAgICAgICAqIGFuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpLZXlmcmFtZUVmZmVjdDo6aXNSdW5uaW5nQWNjZWxlcmF0ZWRBbmltYXRpb25Gb3JQ
cm9wZXJ0eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpLZXlmcmFtZUVmZmVjdDo6YW5pbWF0
aW9uRGlkQ2hhbmdlVGltaW5nUHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpLZXlmcmFt
ZUVmZmVjdDo6YW5pbWF0aW9uV2FzQ2FuY2VsZWQpOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZnJh
bWVFZmZlY3Q6OndpbGxDaGFuZ2VSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpLZXlmcmFt
ZUVmZmVjdDo6YW5pbWF0aW9uU3VzcGVuc2lvblN0YXRlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdl
YkNvcmU6OktleWZyYW1lRWZmZWN0OjphcHBseVBlbmRpbmdBY2NlbGVyYXRlZEFjdGlvbnMpOgor
ICAgICAgICAqIGFuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6
S2V5ZnJhbWVFZmZlY3Q6OmlzUnVubmluZ0FjY2VsZXJhdGVkIGNvbnN0KToKKwogMjAyMC0wNy0y
MiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAg
IFNhZmFyaSBkb2VzIG5vdCBwcmVzZW50IENlcnRpZmljYXRlSW5mbyBmb3Igc2VydmljZS13b3Jr
ZXIgc2VydmVkIGRvY3VtZW50cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9u
L0tleWZyYW1lRWZmZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVm
ZmVjdC5jcHAKaW5kZXggZWEwNmY2NTFjN2QxNzY2YzI3M2UwNzQyMWE4ZmVlZWY3MTJhMGRjYi4u
OTBkMDI5MzBjZTFmYmYxYmZmZDIzMzM4ZmZiMTFhYTRlNDNlZDk0YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuY3BwCkBAIC0xMjMyLDcgKzEyMzIsNyBAQCBi
b29sIEtleWZyYW1lRWZmZWN0Ojppc0N1cnJlbnRseUFmZmVjdGluZ1Byb3BlcnR5KENTU1Byb3Bl
cnR5SUQgcHJvcGVydHksIEFjY2VsZQogCiBib29sIEtleWZyYW1lRWZmZWN0Ojppc1J1bm5pbmdB
Y2NlbGVyYXRlZEFuaW1hdGlvbkZvclByb3BlcnR5KENTU1Byb3BlcnR5SUQgcHJvcGVydHkpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIG1faXNSdW5uaW5nQWNjZWxlcmF0ZWQgJiYgQ1NTUHJvcGVydHlB
bmltYXRpb246OmFuaW1hdGlvbk9mUHJvcGVydHlJc0FjY2VsZXJhdGVkKHByb3BlcnR5KSAmJiBt
X2JsZW5kaW5nS2V5ZnJhbWVzLnByb3BlcnRpZXMoKS5jb250YWlucyhwcm9wZXJ0eSk7CisgICAg
cmV0dXJuIGlzUnVubmluZ0FjY2VsZXJhdGVkKCkgJiYgQ1NTUHJvcGVydHlBbmltYXRpb246OmFu
aW1hdGlvbk9mUHJvcGVydHlJc0FjY2VsZXJhdGVkKHByb3BlcnR5KSAmJiBtX2JsZW5kaW5nS2V5
ZnJhbWVzLnByb3BlcnRpZXMoKS5jb250YWlucyhwcm9wZXJ0eSk7CiB9CiAKIHZvaWQgS2V5ZnJh
bWVFZmZlY3Q6OmludmFsaWRhdGUoKQpAQCAtMTU1NSwyNyArMTU1NSwzMSBAQCB2b2lkIEtleWZy
YW1lRWZmZWN0OjphbmltYXRpb25EaWRQbGF5KCkKIAogdm9pZCBLZXlmcmFtZUVmZmVjdDo6YW5p
bWF0aW9uRGlkQ2hhbmdlVGltaW5nUHJvcGVydGllcygpCiB7CisgICAgY29tcHV0ZVNvbWVLZXlm
cmFtZXNVc2VTdGVwc1RpbWluZ0Z1bmN0aW9uKCk7CisgICAgLy8gVGhlIHRpbWluZyBmdW5jdGlv
biBjYW4gYWZmZWN0IHdoZXRoZXIgdGhlIHBsYXRmb3JtIGNhbiBydW4gdGhpcyBhcyBhbiBhY2Nl
bGVyYXRlZCBhbmltYXRpb24uCisgICAgbV9pc1J1bm5pbmdBY2NlbGVyYXRlZCA9IFdURjo6bnVs
bG9wdDsKKwogICAgIC8vIFRoZXJlIGlzIG5vIG5lZWQgdG8gdXBkYXRlIHRoZSBhbmltYXRpb24g
aWYgd2UncmUgbm90IHBsYXlpbmcgYWxyZWFkeS4gSWYgdXBkYXRpbmcgdGltaW5nCiAgICAgLy8g
bWVhbnMgd2UncmUgbW92aW5nIGludG8gYW4gYWN0aXZlIGxleGljYWxHbG9iYWxPYmplY3QsIHdl
J2xsIHBpY2sgdGhpcyB1cCBpbiBhcHBseSgpLgotICAgIGlmIChtX2lzUnVubmluZ0FjY2VsZXJh
dGVkIHx8IGlzQWJvdXRUb1J1bkFjY2VsZXJhdGVkKCkpCisgICAgaWYgKGlzUnVubmluZ0FjY2Vs
ZXJhdGVkKCkgfHwgaXNBYm91dFRvUnVuQWNjZWxlcmF0ZWQoKSkKICAgICAgICAgYWRkUGVuZGlu
Z0FjY2VsZXJhdGVkQWN0aW9uKEFjY2VsZXJhdGVkQWN0aW9uOjpVcGRhdGVUaW1pbmcpOwogfQog
CiB2b2lkIEtleWZyYW1lRWZmZWN0OjphbmltYXRpb25XYXNDYW5jZWxlZCgpCiB7Ci0gICAgaWYg
KG1faXNSdW5uaW5nQWNjZWxlcmF0ZWQgfHwgaXNBYm91dFRvUnVuQWNjZWxlcmF0ZWQoKSkKKyAg
ICBpZiAoaXNSdW5uaW5nQWNjZWxlcmF0ZWQoKSB8fCBpc0Fib3V0VG9SdW5BY2NlbGVyYXRlZCgp
KQogICAgICAgICBhZGRQZW5kaW5nQWNjZWxlcmF0ZWRBY3Rpb24oQWNjZWxlcmF0ZWRBY3Rpb246
OlN0b3ApOwogfQogCiB2b2lkIEtleWZyYW1lRWZmZWN0Ojp3aWxsQ2hhbmdlUmVuZGVyZXIoKQog
ewotICAgIGlmIChtX2lzUnVubmluZ0FjY2VsZXJhdGVkIHx8IGlzQWJvdXRUb1J1bkFjY2VsZXJh
dGVkKCkpCisgICAgaWYgKGlzUnVubmluZ0FjY2VsZXJhdGVkKCkgfHwgaXNBYm91dFRvUnVuQWNj
ZWxlcmF0ZWQoKSkKICAgICAgICAgYWRkUGVuZGluZ0FjY2VsZXJhdGVkQWN0aW9uKEFjY2VsZXJh
dGVkQWN0aW9uOjpTdG9wKTsKIH0KIAogdm9pZCBLZXlmcmFtZUVmZmVjdDo6YW5pbWF0aW9uU3Vz
cGVuc2lvblN0YXRlRGlkQ2hhbmdlKGJvb2wgYW5pbWF0aW9uSXNTdXNwZW5kZWQpCiB7Ci0gICAg
aWYgKG1faXNSdW5uaW5nQWNjZWxlcmF0ZWQgfHwgaXNBYm91dFRvUnVuQWNjZWxlcmF0ZWQoKSkK
KyAgICBpZiAoaXNSdW5uaW5nQWNjZWxlcmF0ZWQoKSB8fCBpc0Fib3V0VG9SdW5BY2NlbGVyYXRl
ZCgpKQogICAgICAgICBhZGRQZW5kaW5nQWNjZWxlcmF0ZWRBY3Rpb24oYW5pbWF0aW9uSXNTdXNw
ZW5kZWQgPyBBY2NlbGVyYXRlZEFjdGlvbjo6UGF1c2UgOiBBY2NlbGVyYXRlZEFjdGlvbjo6UGxh
eSk7CiB9CiAKQEAgLTE1OTUsNyArMTU5OSw3IEBAIHZvaWQgS2V5ZnJhbWVFZmZlY3Q6OmFwcGx5
UGVuZGluZ0FjY2VsZXJhdGVkQWN0aW9ucygpCiAgICAgICAgIC8vIGluIHdoaWNoIGNhc2UgaWYg
d2UgYXNrZWQgZm9yIHRoZSBhbmltYXRpb24gdG8gc3RvcCwgd2UgY2FuIGRpc2NhcmQgdGhlIGN1
cnJlbnQgc2V0IG9mIGFjY2VsZXJhdGVkIGFjdGlvbnMuCiAgICAgICAgIGlmIChtX2xhc3RSZWNv
cmRlZEFjY2VsZXJhdGVkQWN0aW9uID09IEFjY2VsZXJhdGVkQWN0aW9uOjpTdG9wKSB7CiAgICAg
ICAgICAgICBtX3BlbmRpbmdBY2NlbGVyYXRlZEFjdGlvbnMuY2xlYXIoKTsKLSAgICAgICAgICAg
IG1faXNSdW5uaW5nQWNjZWxlcmF0ZWQgPSBmYWxzZTsKKyAgICAgICAgICAgIG1faXNSdW5uaW5n
QWNjZWxlcmF0ZWQgPSBXVEY6Om51bGxvcHQ7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuOwog
ICAgIH0KQEAgLTE2MjcsNiArMTYzMSw3IEBAIHZvaWQgS2V5ZnJhbWVFZmZlY3Q6OmFwcGx5UGVu
ZGluZ0FjY2VsZXJhdGVkQWN0aW9ucygpCiAgICAgICAgIHN3aXRjaCAoYWN0aW9uKSB7CiAgICAg
ICAgIGNhc2UgQWNjZWxlcmF0ZWRBY3Rpb246OlBsYXk6CiAgICAgICAgICAgICBtX2lzUnVubmlu
Z0FjY2VsZXJhdGVkID0gc3RhcnRBbmltYXRpb24oKTsKKyAgICAgICAgICAgIExPR19XSVRIX1NU
UkVBTShBbmltYXRpb25zLCBzdHJlYW0gPDwgIktleWZyYW1lRWZmZWN0ICIgPDwgdGhpcyA8PCAi
IGFwcGx5UGVuZGluZ0FjY2VsZXJhdGVkQWN0aW9ucyAiIDw8IG1fYmxlbmRpbmdLZXlmcmFtZXMu
YW5pbWF0aW9uTmFtZSgpIDw8ICIgUGxheSwgc3RhcnRlZCBhY2NlbGVyYXRlZDogIiA8PCAqbV9p
c1J1bm5pbmdBY2NlbGVyYXRlZCk7CiAgICAgICAgICAgICBpZiAoIW1faXNSdW5uaW5nQWNjZWxl
cmF0ZWQpIHsKICAgICAgICAgICAgICAgICBtX2xhc3RSZWNvcmRlZEFjY2VsZXJhdGVkQWN0aW9u
ID0gQWNjZWxlcmF0ZWRBY3Rpb246OlN0b3A7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAt
MTYzNiw3ICsxNjQxLDggQEAgdm9pZCBLZXlmcmFtZUVmZmVjdDo6YXBwbHlQZW5kaW5nQWNjZWxl
cmF0ZWRBY3Rpb25zKCkKICAgICAgICAgICAgIHJlbmRlcmVyLT5hbmltYXRpb25QYXVzZWQodGlt
ZU9mZnNldCwgbV9ibGVuZGluZ0tleWZyYW1lcy5hbmltYXRpb25OYW1lKCkpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQWNjZWxlcmF0ZWRBY3Rpb246OlVwZGF0ZVRpbWluZzoK
LSAgICAgICAgICAgIHN0YXJ0QW5pbWF0aW9uKCk7CisgICAgICAgICAgICBtX2lzUnVubmluZ0Fj
Y2VsZXJhdGVkID0gc3RhcnRBbmltYXRpb24oKTsKKyAgICAgICAgICAgIExPR19XSVRIX1NUUkVB
TShBbmltYXRpb25zLCBzdHJlYW0gPDwgIktleWZyYW1lRWZmZWN0ICIgPDwgdGhpcyA8PCAiIGFw
cGx5UGVuZGluZ0FjY2VsZXJhdGVkQWN0aW9ucyAiIDw8IG1fYmxlbmRpbmdLZXlmcmFtZXMuYW5p
bWF0aW9uTmFtZSgpIDw8ICIgVXBkYXRlVGltaW5nLCBzdGFydGVkIGFjY2VsZXJhdGVkOiAiIDw8
ICptX2lzUnVubmluZ0FjY2VsZXJhdGVkKTsKICAgICAgICAgICAgIGlmIChhbmltYXRpb24oKS0+
cGxheVN0YXRlKCkgPT0gV2ViQW5pbWF0aW9uOjpQbGF5U3RhdGU6OlBhdXNlZCkKICAgICAgICAg
ICAgICAgICByZW5kZXJlci0+YW5pbWF0aW9uUGF1c2VkKHRpbWVPZmZzZXQsIG1fYmxlbmRpbmdL
ZXlmcmFtZXMuYW5pbWF0aW9uTmFtZSgpKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTY0NSw3
ICsxNjUxLDcgQEAgdm9pZCBLZXlmcmFtZUVmZmVjdDo6YXBwbHlQZW5kaW5nQWNjZWxlcmF0ZWRB
Y3Rpb25zKCkKICAgICAgICAgICAgIHJlbmRlcmVyLT5hbmltYXRpb25GaW5pc2hlZChtX2JsZW5k
aW5nS2V5ZnJhbWVzLmFuaW1hdGlvbk5hbWUoKSk7CiAgICAgICAgICAgICBpZiAoIWRvY3VtZW50
KCktPnJlbmRlclRyZWVCZWluZ0Rlc3Ryb3llZCgpKQogICAgICAgICAgICAgICAgIG1fdGFyZ2V0
LT5pbnZhbGlkYXRlU3R5bGVBbmRMYXllckNvbXBvc2l0aW9uKCk7Ci0gICAgICAgICAgICBtX2lz
UnVubmluZ0FjY2VsZXJhdGVkID0gZmFsc2U7CisgICAgICAgICAgICBtX2lzUnVubmluZ0FjY2Vs
ZXJhdGVkID0gV1RGOjpudWxsb3B0OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3Qu
aCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5oCmluZGV4IGFmZjdi
ODAzMjU1YjZkNjg1MGNlYjFiZmFjZDU0NDYyMTUzZmY3YmMuLmFkODVjYzM1NTk4ODlhYWI0Mzk1
YjE4NTU2NjY0Y2ZlNjY4MWQ5ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlv
bi9LZXlmcmFtZUVmZmVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFt
ZUVmZmVjdC5oCkBAIC0xMzgsNyArMTM4LDcgQEAgcHVibGljOgogICAgIFJlbmRlckVsZW1lbnQq
IHJlbmRlcmVyKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgY29uc3QgUmVuZGVyU3R5bGUmIGN1cnJl
bnRTdHlsZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgdHJpZ2dlcnNTdGFja2luZ0NvbnRl
eHQoKSBjb25zdCB7IHJldHVybiBtX3RyaWdnZXJzU3RhY2tpbmdDb250ZXh0OyB9Ci0gICAgYm9v
bCBpc1J1bm5pbmdBY2NlbGVyYXRlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNSdW5uaW5nQWNjZWxl
cmF0ZWQ7IH0KKyAgICBib29sIGlzUnVubmluZ0FjY2VsZXJhdGVkKCkgY29uc3QgeyByZXR1cm4g
bV9pc1J1bm5pbmdBY2NlbGVyYXRlZC52YWx1ZU9yKGZhbHNlKTsgfQogICAgIGJvb2wgaXNBYm91
dFRvUnVuQWNjZWxlcmF0ZWQoKSBjb25zdCB7IHJldHVybiBtX2FjY2VsZXJhdGVkUHJvcGVydGll
c1N0YXRlICE9IEFjY2VsZXJhdGVkUHJvcGVydGllczo6Tm9uZSAmJiBtX2xhc3RSZWNvcmRlZEFj
Y2VsZXJhdGVkQWN0aW9uICE9IEFjY2VsZXJhdGVkQWN0aW9uOjpTdG9wOyB9CiAgICAgYm9vbCBp
c0NvbXBsZXRlbHlBY2NlbGVyYXRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYWNjZWxlcmF0ZWRQcm9w
ZXJ0aWVzU3RhdGUgPT0gQWNjZWxlcmF0ZWRQcm9wZXJ0aWVzOjpBbGw7IH0KICAgICBib29sIGZp
bHRlckZ1bmN0aW9uTGlzdHNNYXRjaCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fZmlsdGVy
RnVuY3Rpb25MaXN0c01hdGNoOyB9CkBAIC0yMTEsNyArMjExLDcgQEAgcHJpdmF0ZToKICAgICBD
b21wb3NpdGVPcGVyYXRpb24gbV9jb21wb3NpdGVPcGVyYXRpb24geyBDb21wb3NpdGVPcGVyYXRp
b246OlJlcGxhY2UgfTsKICAgICBBY2NlbGVyYXRlZFByb3BlcnRpZXMgbV9hY2NlbGVyYXRlZFBy
b3BlcnRpZXNTdGF0ZSB7IEFjY2VsZXJhdGVkUHJvcGVydGllczo6Tm9uZSB9OwogICAgIEFuaW1h
dGlvbkVmZmVjdFBoYXNlIG1fcGhhc2VBdExhc3RBcHBsaWNhdGlvbiB7IEFuaW1hdGlvbkVmZmVj
dFBoYXNlOjpJZGxlIH07Ci0gICAgYm9vbCBtX2lzUnVubmluZ0FjY2VsZXJhdGVkIHsgZmFsc2Ug
fTsKKyAgICBPcHRpb25hbDxib29sPiBtX2lzUnVubmluZ0FjY2VsZXJhdGVkOwogICAgIGJvb2wg
bV9uZWVkc0ZvcmNlZExheW91dCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3RyaWdnZXJzU3RhY2tp
bmdDb250ZXh0IHsgZmFsc2UgfTsKICAgICBib29sIG1fdHJhbnNmb3JtRnVuY3Rpb25MaXN0c01h
dGNoIHsgZmFsc2UgfTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>405129</attachid>
            <date>2020-07-23 22:46:23 -0700</date>
            <delta_ts>2020-07-24 10:04:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214712-20200723224622.patch</filename>
            <type>text/plain</type>
            <size>16533</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0NzI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTk5YzgwOGM3ZjZjNGQ2
MGViOTFhMTQ0OGNlNjg1OTViMTMzM2M3Ny4uNzQwZWIxYzkxMzM2YzY3NTZjODFjMDRmZDVhMmRl
NmZmYmI4YzExZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDIwLTA3LTIzICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIHN0ZXBzKCkgdGlt
aW5nIGZ1bmN0aW9uIG9uIGEgdHJhbnNmb3JtIGFuaW1hdGlvbiB0cmlnZ2VycyBhIHJlbmRlciBl
dmVyeSBmcmFtZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjE0NzEyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MjczNzg2OD4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBbiBhbmltYXRpb24gb2YgdHJh
bnNmb3JtLCB3aXRoIGEgc3RlcHMoKSB0aW1pbmcgZnVuY3Rpb24sIHdvdWxkIHNjaGVkdWxlIGEg
cmVuZGVyaW5nCisgICAgICAgIHVwZGF0ZSBvbiBldmVyeSBmcmFtZS4gVGhpcyBoYXBwZW5lZCBi
ZWNhdXNlIEtleWZyYW1lRWZmZWN0Ojp1cGRhdGVBY2NlbGVyYXRlZEFjdGlvbnMoKQorICAgICAg
ICB3b3VsZCBrZWVwIHRyeWluZywgYW5kIGZhaWxpbmcgdG8gc3RhcnQgdGhlIGFjY2VsZXJhdGVk
IGFuaW1hdGlvbiBldmVyeSBmcmFtZSwgc2luY2UKKyAgICAgICAgR3JhcGhpY3NMYXllckNBIHJl
ZnVzZXMgdG8gcnVuIGFjY2VsZXJhdGVkIGFuaW1hdGlvbnMgd2l0aCBzdGVwcyB0aW1pbmcgZnVu
Y3Rpb25zLgorCisgICAgICAgIEZpeCBieSBtYWtpbmcgbV9pc1J1bm5pbmdBY2NlbGVyYXRlZCBh
biBPcHRpb25hbDw+LCB3aGljaCBnZXRzIGEgdmFsdWUgb25jZSB3ZSd2ZSB0cmllZAorICAgICAg
ICB0byBydW4gdGhlIGFuaW1hdGlvbiB0aGUgZmlyc3QgdGltZS4gQWxzbyBlbnN1cmUgdGhhdCB3
ZSByZS10cnkgaWYgdGhlIHRpbWluZworICAgICAgICBmdW5jdGlvbiBjaGFuZ2VzLCB2aWEgYW5p
bWF0aW9uRGlkQ2hhbmdlVGltaW5nUHJvcGVydGllcygpLgorCisgICAgICAgIFRlc3Q6IGFuaW1h
dGlvbnMvc3RlcHMtdHJhbnNmb3JtLXJlbmRlcmluZy11cGRhdGVzLmh0bWwKKworICAgICAgICAq
IGFuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXlmcmFt
ZUVmZmVjdDo6aXNSdW5uaW5nQWNjZWxlcmF0ZWRBbmltYXRpb25Gb3JQcm9wZXJ0eSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpLZXlmcmFtZUVmZmVjdDo6dXBkYXRlQWNjZWxlcmF0ZWRBY3Rp
b25zKToKKyAgICAgICAgKFdlYkNvcmU6OktleWZyYW1lRWZmZWN0OjphbmltYXRpb25EaWRDaGFu
Z2VUaW1pbmdQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OktleWZyYW1lRWZmZWN0Ojph
bmltYXRpb25XYXNDYW5jZWxlZCk6CisgICAgICAgIChXZWJDb3JlOjpLZXlmcmFtZUVmZmVjdDo6
d2lsbENoYW5nZVJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OktleWZyYW1lRWZmZWN0Ojph
bmltYXRpb25TdXNwZW5zaW9uU3RhdGVEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6S2V5
ZnJhbWVFZmZlY3Q6OmFwcGx5UGVuZGluZ0FjY2VsZXJhdGVkQWN0aW9ucyk6CisgICAgICAgICog
YW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpLZXlmcmFtZUVm
ZmVjdDo6aXNSdW5uaW5nQWNjZWxlcmF0ZWQgY29uc3QpOgorICAgICAgICAqIHBhZ2UvUGFnZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpzdGFydFRyYWNraW5nUmVuZGVyaW5nVXBkYXRl
cyk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpyZW5kZXJpbmdVcGRhdGVDb3VudCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjp1cGRhdGVSZW5kZXJpbmcpOgorICAgICAgICAqIHBh
Z2UvUGFnZS5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkludGVybmFsczo6c3RhcnRUcmFja2luZ1JlbmRlcmluZ1VwZGF0ZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpyZW5kZXJpbmdVcGRhdGVDb3VudCk6CisgICAgICAgICog
dGVzdGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CisK
IDIwMjAtMDctMjIgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4K
IAogICAgICAgICBTYWZhcmkgZG9lcyBub3QgcHJlc2VudCBDZXJ0aWZpY2F0ZUluZm8gZm9yIHNl
cnZpY2Utd29ya2VyIHNlcnZlZCBkb2N1bWVudHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24v
S2V5ZnJhbWVFZmZlY3QuY3BwCmluZGV4IGVhMDZmNjUxYzdkMTc2NmMyNzNlMDc0MjFhOGZlZWVm
NzEyYTBkY2IuLmZhNzU4MTBmMmVhNmE1NGZjMzlhMjY3M2FjNTg0NjA0ZjY2OGFhYjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmNwcApAQCAtMTIzMiw3ICsx
MjMyLDcgQEAgYm9vbCBLZXlmcmFtZUVmZmVjdDo6aXNDdXJyZW50bHlBZmZlY3RpbmdQcm9wZXJ0
eShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBBY2NlbGUKIAogYm9vbCBLZXlmcmFtZUVmZmVjdDo6
aXNSdW5uaW5nQWNjZWxlcmF0ZWRBbmltYXRpb25Gb3JQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIHBy
b3BlcnR5KSBjb25zdAogewotICAgIHJldHVybiBtX2lzUnVubmluZ0FjY2VsZXJhdGVkICYmIENT
U1Byb3BlcnR5QW5pbWF0aW9uOjphbmltYXRpb25PZlByb3BlcnR5SXNBY2NlbGVyYXRlZChwcm9w
ZXJ0eSkgJiYgbV9ibGVuZGluZ0tleWZyYW1lcy5wcm9wZXJ0aWVzKCkuY29udGFpbnMocHJvcGVy
dHkpOworICAgIHJldHVybiBpc1J1bm5pbmdBY2NlbGVyYXRlZCgpICYmIENTU1Byb3BlcnR5QW5p
bWF0aW9uOjphbmltYXRpb25PZlByb3BlcnR5SXNBY2NlbGVyYXRlZChwcm9wZXJ0eSkgJiYgbV9i
bGVuZGluZ0tleWZyYW1lcy5wcm9wZXJ0aWVzKCkuY29udGFpbnMocHJvcGVydHkpOwogfQogCiB2
b2lkIEtleWZyYW1lRWZmZWN0OjppbnZhbGlkYXRlKCkKQEAgLTE1MDIsNyArMTUwMiw3IEBAIHZv
aWQgS2V5ZnJhbWVFZmZlY3Q6OnVwZGF0ZUFjY2VsZXJhdGVkQWN0aW9ucygpCiAgICAgLy8gSWYg
d2UncmUgbm90IGFscmVhZHkgcnVubmluZyBhY2NlbGVyYXRlZCwgdGhlIG9ubHkgdGhpbmcgd2Un
cmUgaW50ZXJlc3RlZCBpbiBpcyB3aGV0aGVyIHdlIG5lZWQgdG8gc3RhcnQgdGhlIGFuaW1hdGlv
bgogICAgIC8vIHdoaWNoIHdlIG5lZWQgdG8gZG8gb25jZSB3ZSdyZSBpbiB0aGUgYWN0aXZlIHBo
YXNlLiBPdGhlcndpc2UsIHRoZXJlJ3Mgbm8gY2hhbmdlIGluIGFjY2VsZXJhdGVkIHN0YXRlIHRv
IGNvbnNpZGVyLgogICAgIGJvb2wgaXNBY3RpdmUgPSBjb21wdXRlZFRpbWluZy5waGFzZSA9PSBB
bmltYXRpb25FZmZlY3RQaGFzZTo6QWN0aXZlOwotICAgIGlmICghbV9pc1J1bm5pbmdBY2NlbGVy
YXRlZCkgeworICAgIGlmICghbV9pc1J1bm5pbmdBY2NlbGVyYXRlZC5oYXNWYWx1ZSgpKSB7CiAg
ICAgICAgIGlmIChpc0FjdGl2ZSAmJiBhbmltYXRpb24oKS0+cGxheVN0YXRlKCkgPT0gV2ViQW5p
bWF0aW9uOjpQbGF5U3RhdGU6OlJ1bm5pbmcpCiAgICAgICAgICAgICBhZGRQZW5kaW5nQWNjZWxl
cmF0ZWRBY3Rpb24oQWNjZWxlcmF0ZWRBY3Rpb246OlBsYXkpOwogICAgICAgICByZXR1cm47CkBA
IC0xNTU1LDI3ICsxNTU1LDMxIEBAIHZvaWQgS2V5ZnJhbWVFZmZlY3Q6OmFuaW1hdGlvbkRpZFBs
YXkoKQogCiB2b2lkIEtleWZyYW1lRWZmZWN0OjphbmltYXRpb25EaWRDaGFuZ2VUaW1pbmdQcm9w
ZXJ0aWVzKCkKIHsKKyAgICBjb21wdXRlU29tZUtleWZyYW1lc1VzZVN0ZXBzVGltaW5nRnVuY3Rp
b24oKTsKKyAgICAvLyBUaGUgdGltaW5nIGZ1bmN0aW9uIGNhbiBhZmZlY3Qgd2hldGhlciB0aGUg
cGxhdGZvcm0gY2FuIHJ1biB0aGlzIGFzIGFuIGFjY2VsZXJhdGVkIGFuaW1hdGlvbi4KKyAgICBt
X2lzUnVubmluZ0FjY2VsZXJhdGVkID0gV1RGOjpudWxsb3B0OworCiAgICAgLy8gVGhlcmUgaXMg
bm8gbmVlZCB0byB1cGRhdGUgdGhlIGFuaW1hdGlvbiBpZiB3ZSdyZSBub3QgcGxheWluZyBhbHJl
YWR5LiBJZiB1cGRhdGluZyB0aW1pbmcKICAgICAvLyBtZWFucyB3ZSdyZSBtb3ZpbmcgaW50byBh
biBhY3RpdmUgbGV4aWNhbEdsb2JhbE9iamVjdCwgd2UnbGwgcGljayB0aGlzIHVwIGluIGFwcGx5
KCkuCi0gICAgaWYgKG1faXNSdW5uaW5nQWNjZWxlcmF0ZWQgfHwgaXNBYm91dFRvUnVuQWNjZWxl
cmF0ZWQoKSkKKyAgICBpZiAoaXNSdW5uaW5nQWNjZWxlcmF0ZWQoKSB8fCBpc0Fib3V0VG9SdW5B
Y2NlbGVyYXRlZCgpKQogICAgICAgICBhZGRQZW5kaW5nQWNjZWxlcmF0ZWRBY3Rpb24oQWNjZWxl
cmF0ZWRBY3Rpb246OlVwZGF0ZVRpbWluZyk7CiB9CiAKIHZvaWQgS2V5ZnJhbWVFZmZlY3Q6OmFu
aW1hdGlvbldhc0NhbmNlbGVkKCkKIHsKLSAgICBpZiAobV9pc1J1bm5pbmdBY2NlbGVyYXRlZCB8
fCBpc0Fib3V0VG9SdW5BY2NlbGVyYXRlZCgpKQorICAgIGlmIChpc1J1bm5pbmdBY2NlbGVyYXRl
ZCgpIHx8IGlzQWJvdXRUb1J1bkFjY2VsZXJhdGVkKCkpCiAgICAgICAgIGFkZFBlbmRpbmdBY2Nl
bGVyYXRlZEFjdGlvbihBY2NlbGVyYXRlZEFjdGlvbjo6U3RvcCk7CiB9CiAKIHZvaWQgS2V5ZnJh
bWVFZmZlY3Q6OndpbGxDaGFuZ2VSZW5kZXJlcigpCiB7Ci0gICAgaWYgKG1faXNSdW5uaW5nQWNj
ZWxlcmF0ZWQgfHwgaXNBYm91dFRvUnVuQWNjZWxlcmF0ZWQoKSkKKyAgICBpZiAoaXNSdW5uaW5n
QWNjZWxlcmF0ZWQoKSB8fCBpc0Fib3V0VG9SdW5BY2NlbGVyYXRlZCgpKQogICAgICAgICBhZGRQ
ZW5kaW5nQWNjZWxlcmF0ZWRBY3Rpb24oQWNjZWxlcmF0ZWRBY3Rpb246OlN0b3ApOwogfQogCiB2
b2lkIEtleWZyYW1lRWZmZWN0OjphbmltYXRpb25TdXNwZW5zaW9uU3RhdGVEaWRDaGFuZ2UoYm9v
bCBhbmltYXRpb25Jc1N1c3BlbmRlZCkKIHsKLSAgICBpZiAobV9pc1J1bm5pbmdBY2NlbGVyYXRl
ZCB8fCBpc0Fib3V0VG9SdW5BY2NlbGVyYXRlZCgpKQorICAgIGlmIChpc1J1bm5pbmdBY2NlbGVy
YXRlZCgpIHx8IGlzQWJvdXRUb1J1bkFjY2VsZXJhdGVkKCkpCiAgICAgICAgIGFkZFBlbmRpbmdB
Y2NlbGVyYXRlZEFjdGlvbihhbmltYXRpb25Jc1N1c3BlbmRlZCA/IEFjY2VsZXJhdGVkQWN0aW9u
OjpQYXVzZSA6IEFjY2VsZXJhdGVkQWN0aW9uOjpQbGF5KTsKIH0KIApAQCAtMTU5NSw3ICsxNTk5
LDcgQEAgdm9pZCBLZXlmcmFtZUVmZmVjdDo6YXBwbHlQZW5kaW5nQWNjZWxlcmF0ZWRBY3Rpb25z
KCkKICAgICAgICAgLy8gaW4gd2hpY2ggY2FzZSBpZiB3ZSBhc2tlZCBmb3IgdGhlIGFuaW1hdGlv
biB0byBzdG9wLCB3ZSBjYW4gZGlzY2FyZCB0aGUgY3VycmVudCBzZXQgb2YgYWNjZWxlcmF0ZWQg
YWN0aW9ucy4KICAgICAgICAgaWYgKG1fbGFzdFJlY29yZGVkQWNjZWxlcmF0ZWRBY3Rpb24gPT0g
QWNjZWxlcmF0ZWRBY3Rpb246OlN0b3ApIHsKICAgICAgICAgICAgIG1fcGVuZGluZ0FjY2VsZXJh
dGVkQWN0aW9ucy5jbGVhcigpOwotICAgICAgICAgICAgbV9pc1J1bm5pbmdBY2NlbGVyYXRlZCA9
IGZhbHNlOworICAgICAgICAgICAgbV9pc1J1bm5pbmdBY2NlbGVyYXRlZCA9IFdURjo6bnVsbG9w
dDsKICAgICAgICAgfQogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTYyNyw2ICsxNjMxLDcg
QEAgdm9pZCBLZXlmcmFtZUVmZmVjdDo6YXBwbHlQZW5kaW5nQWNjZWxlcmF0ZWRBY3Rpb25zKCkK
ICAgICAgICAgc3dpdGNoIChhY3Rpb24pIHsKICAgICAgICAgY2FzZSBBY2NlbGVyYXRlZEFjdGlv
bjo6UGxheToKICAgICAgICAgICAgIG1faXNSdW5uaW5nQWNjZWxlcmF0ZWQgPSBzdGFydEFuaW1h
dGlvbigpOworICAgICAgICAgICAgTE9HX1dJVEhfU1RSRUFNKEFuaW1hdGlvbnMsIHN0cmVhbSA8
PCAiS2V5ZnJhbWVFZmZlY3QgIiA8PCB0aGlzIDw8ICIgYXBwbHlQZW5kaW5nQWNjZWxlcmF0ZWRB
Y3Rpb25zICIgPDwgbV9ibGVuZGluZ0tleWZyYW1lcy5hbmltYXRpb25OYW1lKCkgPDwgIiBQbGF5
LCBzdGFydGVkIGFjY2VsZXJhdGVkOiAiIDw8ICptX2lzUnVubmluZ0FjY2VsZXJhdGVkKTsKICAg
ICAgICAgICAgIGlmICghbV9pc1J1bm5pbmdBY2NlbGVyYXRlZCkgewogICAgICAgICAgICAgICAg
IG1fbGFzdFJlY29yZGVkQWNjZWxlcmF0ZWRBY3Rpb24gPSBBY2NlbGVyYXRlZEFjdGlvbjo6U3Rv
cDsKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0xNjM2LDcgKzE2NDEsOCBAQCB2b2lkIEtl
eWZyYW1lRWZmZWN0OjphcHBseVBlbmRpbmdBY2NlbGVyYXRlZEFjdGlvbnMoKQogICAgICAgICAg
ICAgcmVuZGVyZXItPmFuaW1hdGlvblBhdXNlZCh0aW1lT2Zmc2V0LCBtX2JsZW5kaW5nS2V5ZnJh
bWVzLmFuaW1hdGlvbk5hbWUoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBB
Y2NlbGVyYXRlZEFjdGlvbjo6VXBkYXRlVGltaW5nOgotICAgICAgICAgICAgc3RhcnRBbmltYXRp
b24oKTsKKyAgICAgICAgICAgIG1faXNSdW5uaW5nQWNjZWxlcmF0ZWQgPSBzdGFydEFuaW1hdGlv
bigpOworICAgICAgICAgICAgTE9HX1dJVEhfU1RSRUFNKEFuaW1hdGlvbnMsIHN0cmVhbSA8PCAi
S2V5ZnJhbWVFZmZlY3QgIiA8PCB0aGlzIDw8ICIgYXBwbHlQZW5kaW5nQWNjZWxlcmF0ZWRBY3Rp
b25zICIgPDwgbV9ibGVuZGluZ0tleWZyYW1lcy5hbmltYXRpb25OYW1lKCkgPDwgIiBVcGRhdGVU
aW1pbmcsIHN0YXJ0ZWQgYWNjZWxlcmF0ZWQ6ICIgPDwgKm1faXNSdW5uaW5nQWNjZWxlcmF0ZWQp
OwogICAgICAgICAgICAgaWYgKGFuaW1hdGlvbigpLT5wbGF5U3RhdGUoKSA9PSBXZWJBbmltYXRp
b246OlBsYXlTdGF0ZTo6UGF1c2VkKQogICAgICAgICAgICAgICAgIHJlbmRlcmVyLT5hbmltYXRp
b25QYXVzZWQodGltZU9mZnNldCwgbV9ibGVuZGluZ0tleWZyYW1lcy5hbmltYXRpb25OYW1lKCkp
OwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xNjQ1LDcgKzE2NTEsNyBAQCB2b2lkIEtleWZyYW1l
RWZmZWN0OjphcHBseVBlbmRpbmdBY2NlbGVyYXRlZEFjdGlvbnMoKQogICAgICAgICAgICAgcmVu
ZGVyZXItPmFuaW1hdGlvbkZpbmlzaGVkKG1fYmxlbmRpbmdLZXlmcmFtZXMuYW5pbWF0aW9uTmFt
ZSgpKTsKICAgICAgICAgICAgIGlmICghZG9jdW1lbnQoKS0+cmVuZGVyVHJlZUJlaW5nRGVzdHJv
eWVkKCkpCiAgICAgICAgICAgICAgICAgbV90YXJnZXQtPmludmFsaWRhdGVTdHlsZUFuZExheWVy
Q29tcG9zaXRpb24oKTsKLSAgICAgICAgICAgIG1faXNSdW5uaW5nQWNjZWxlcmF0ZWQgPSBmYWxz
ZTsKKyAgICAgICAgICAgIG1faXNSdW5uaW5nQWNjZWxlcmF0ZWQgPSBXVEY6Om51bGxvcHQ7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5oIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0
aW9uL0tleWZyYW1lRWZmZWN0LmgKaW5kZXggYWZmN2I4MDMyNTViNmQ2ODUwY2ViMWJmYWNkNTQ0
NjIxNTNmZjdiYy4uYWQ4NWNjMzU1OTg4OWFhYjQzOTViMTg1NTY2NjRjZmU2NjgxZDllMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmgKQEAgLTEzOCw3ICsxMzgs
NyBAQCBwdWJsaWM6CiAgICAgUmVuZGVyRWxlbWVudCogcmVuZGVyZXIoKSBjb25zdCBvdmVycmlk
ZTsKICAgICBjb25zdCBSZW5kZXJTdHlsZSYgY3VycmVudFN0eWxlKCkgY29uc3Qgb3ZlcnJpZGU7
CiAgICAgYm9vbCB0cmlnZ2Vyc1N0YWNraW5nQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fdHJp
Z2dlcnNTdGFja2luZ0NvbnRleHQ7IH0KLSAgICBib29sIGlzUnVubmluZ0FjY2VsZXJhdGVkKCkg
Y29uc3QgeyByZXR1cm4gbV9pc1J1bm5pbmdBY2NlbGVyYXRlZDsgfQorICAgIGJvb2wgaXNSdW5u
aW5nQWNjZWxlcmF0ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzUnVubmluZ0FjY2VsZXJhdGVkLnZh
bHVlT3IoZmFsc2UpOyB9CiAgICAgYm9vbCBpc0Fib3V0VG9SdW5BY2NlbGVyYXRlZCgpIGNvbnN0
IHsgcmV0dXJuIG1fYWNjZWxlcmF0ZWRQcm9wZXJ0aWVzU3RhdGUgIT0gQWNjZWxlcmF0ZWRQcm9w
ZXJ0aWVzOjpOb25lICYmIG1fbGFzdFJlY29yZGVkQWNjZWxlcmF0ZWRBY3Rpb24gIT0gQWNjZWxl
cmF0ZWRBY3Rpb246OlN0b3A7IH0KICAgICBib29sIGlzQ29tcGxldGVseUFjY2VsZXJhdGVkKCkg
Y29uc3QgeyByZXR1cm4gbV9hY2NlbGVyYXRlZFByb3BlcnRpZXNTdGF0ZSA9PSBBY2NlbGVyYXRl
ZFByb3BlcnRpZXM6OkFsbDsgfQogICAgIGJvb2wgZmlsdGVyRnVuY3Rpb25MaXN0c01hdGNoKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9maWx0ZXJGdW5jdGlvbkxpc3RzTWF0Y2g7IH0KQEAg
LTIxMSw3ICsyMTEsNyBAQCBwcml2YXRlOgogICAgIENvbXBvc2l0ZU9wZXJhdGlvbiBtX2NvbXBv
c2l0ZU9wZXJhdGlvbiB7IENvbXBvc2l0ZU9wZXJhdGlvbjo6UmVwbGFjZSB9OwogICAgIEFjY2Vs
ZXJhdGVkUHJvcGVydGllcyBtX2FjY2VsZXJhdGVkUHJvcGVydGllc1N0YXRlIHsgQWNjZWxlcmF0
ZWRQcm9wZXJ0aWVzOjpOb25lIH07CiAgICAgQW5pbWF0aW9uRWZmZWN0UGhhc2UgbV9waGFzZUF0
TGFzdEFwcGxpY2F0aW9uIHsgQW5pbWF0aW9uRWZmZWN0UGhhc2U6OklkbGUgfTsKLSAgICBib29s
IG1faXNSdW5uaW5nQWNjZWxlcmF0ZWQgeyBmYWxzZSB9OworICAgIE9wdGlvbmFsPGJvb2w+IG1f
aXNSdW5uaW5nQWNjZWxlcmF0ZWQ7CiAgICAgYm9vbCBtX25lZWRzRm9yY2VkTGF5b3V0IHsgZmFs
c2UgfTsKICAgICBib29sIG1fdHJpZ2dlcnNTdGFja2luZ0NvbnRleHQgeyBmYWxzZSB9OwogICAg
IGJvb2wgbV90cmFuc2Zvcm1GdW5jdGlvbkxpc3RzTWF0Y2ggeyBmYWxzZSB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZS5jcHAKaW5kZXggZGJiMzVlZTA4YmRmMTdlYjFkNDJiNGRhNDlmODA5Zjk5NzNhMjUwNS4uMjk5
OGU4ZjliNTRmYWE5ZmU3NjI0YTY2YmMzNTU2NTM1ZTc3ZTYwNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3Bw
CkBAIC0xNDE1LDYgKzE0MTUsMTcgQEAgdm9pZCBQYWdlOjpzY2hlZHVsZVRpbWVkUmVuZGVyaW5n
VXBkYXRlKCkKICAgICByZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXIoKS5zY2hlZHVsZVRpbWVkUmVu
ZGVyaW5nVXBkYXRlKCk7CiB9CiAKK3ZvaWQgUGFnZTo6c3RhcnRUcmFja2luZ1JlbmRlcmluZ1Vw
ZGF0ZXMoKQoreworICAgIG1faXNUcmFja2luZ1JlbmRlcmluZ1VwZGF0ZXMgPSB0cnVlOworICAg
IG1fcmVuZGVyaW5nVXBkYXRlQ291bnQgPSAwOworfQorCit1bnNpZ25lZCBQYWdlOjpyZW5kZXJp
bmdVcGRhdGVDb3VudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcmVuZGVyaW5nVXBkYXRlQ291
bnQ7Cit9CisKIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3dlYmFw
cGFwaXMuaHRtbCN1cGRhdGUtdGhlLXJlbmRlcmluZwogdm9pZCBQYWdlOjp1cGRhdGVSZW5kZXJp
bmcoKQogewpAQCAtMTQ5MSw2ICsxNTAyLDkgQEAgdm9pZCBQYWdlOjp1cGRhdGVSZW5kZXJpbmco
KQogICAgICAgICBpZiAoZG9jdW1lbnQgJiYgZG9jdW1lbnQtPmRvbVdpbmRvdygpKQogICAgICAg
ICAgICAgZG9jdW1lbnQtPmRvbVdpbmRvdygpLT51bmZyZWV6ZU5vd1RpbWVzdGFtcCgpOwogICAg
IH0KKyAgICAKKyAgICBpZiAobV9pc1RyYWNraW5nUmVuZGVyaW5nVXBkYXRlcykKKyAgICAgICAg
KyttX3JlbmRlcmluZ1VwZGF0ZUNvdW50OwogCiAgICAgbGF5b3V0SWZOZWVkZWQoKTsKICAgICBk
b0FmdGVyVXBkYXRlUmVuZGVyaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCmluZGV4IDcyMGEwOTNhNDJkZGQz
NDJlOWQ4MTIxYzlkOGUzYTVhNWMzNWZhN2QuLjlkOGY4ZmI1M2Y4M2E2Njc1MDE2M2U5ZjAzNDQy
MTcwMTNmNmIzN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCkBAIC00OTMsNiArNDkzLDkgQEAgcHVibGljOgog
ICAgIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoKTsK
ICAgICB2b2lkIHNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoKTsKKyAgICAKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHN0YXJ0VHJhY2tpbmdSZW5kZXJpbmdVcGRhdGVzKCk7CisgICAgV0VC
Q09SRV9FWFBPUlQgdW5zaWduZWQgcmVuZGVyaW5nVXBkYXRlQ291bnQoKSBjb25zdDsKIAogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc3VzcGVuZFNjcmlwdGVkQW5pbWF0aW9ucygpOwogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgcmVzdW1lU2NyaXB0ZWRBbmltYXRpb25zKCk7CkBAIC05ODMsNiAr
OTg2LDkgQEAgcHJpdmF0ZToKIAogICAgIFBBTDo6U2Vzc2lvbklEIG1fc2Vzc2lvbklEOwogCisg
ICAgdW5zaWduZWQgbV9yZW5kZXJpbmdVcGRhdGVDb3VudCB7IDAgfTsKKyAgICBib29sIG1faXNU
cmFja2luZ1JlbmRlcmluZ1VwZGF0ZXMgeyBmYWxzZSB9OworCiAgICAgYm9vbCBtX2lzQ2xvc2lu
ZyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2lzUmVzdG9yaW5nQ2FjaGVkUGFnZSB7IGZhbHNlIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBhY2JmZWRjNmQ3MmIxNmZi
MzkwNjNkMTA1MGYwNDY4YjAyYzE5OWJiLi40NjhhNzNhNzgzY2E2ZjI3NjRmM2E2ZDMwOTEwY2Nh
YmIzYmM0NDExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0zNTQyLDYg
KzM1NDIsMjUgQEAgRXhjZXB0aW9uT3I8dW5zaWduZWQ+IEludGVybmFsczo6Y29tcG9zaXRpbmdV
cGRhdGVDb3VudCgpCiAgICAgcmV0dXJuIGRvY3VtZW50LT5yZW5kZXJWaWV3KCktPmNvbXBvc2l0
b3IoKS5jb21wb3NpdGluZ1VwZGF0ZUNvdW50KCk7CiB9CiAKK0V4Y2VwdGlvbk9yPHZvaWQ+IElu
dGVybmFsczo6c3RhcnRUcmFja2luZ1JlbmRlcmluZ1VwZGF0ZXMoKQoreworICAgIERvY3VtZW50
KiBkb2N1bWVudCA9IGNvbnRleHREb2N1bWVudCgpOworICAgIGlmICghZG9jdW1lbnQpCisgICAg
ICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkQWNjZXNzRXJyb3IgfTsKKworICAgIGRvY3Vt
ZW50LT5wYWdlKCktPnN0YXJ0VHJhY2tpbmdSZW5kZXJpbmdVcGRhdGVzKCk7CisgICAgcmV0dXJu
IHsgfTsKK30KKworRXhjZXB0aW9uT3I8dW5zaWduZWQ+IEludGVybmFsczo6cmVuZGVyaW5nVXBk
YXRlQ291bnQoKQoreworICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGNvbnRleHREb2N1bWVudCgp
OworICAgIGlmICghZG9jdW1lbnQpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlk
QWNjZXNzRXJyb3IgfTsKKworICAgIHJldHVybiBkb2N1bWVudC0+cGFnZSgpLT5yZW5kZXJpbmdV
cGRhdGVDb3VudCgpOworfQorCiBFeGNlcHRpb25Pcjx2b2lkPiBJbnRlcm5hbHM6OnNldENvbXBv
c2l0aW5nUG9saWN5T3ZlcnJpZGUoT3B0aW9uYWw8Q29tcG9zaXRpbmdQb2xpY3k+IHBvbGljeU92
ZXJyaWRlKQogewogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGNvbnRleHREb2N1bWVudCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggODQzZWRmYTA0ODE0NDNhNDFiMWExMDdm
MDJjOTVmMDAzMDhkZjBlYS4uYTRmYzdmZTlkYWUxYWRkMTkyN2ZlYmUzNjEwY2I2NThiYWNiM2Yx
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC01NDEsNiArNTQxLDkgQEAgcHVi
bGljOgogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHN0YXJ0VHJhY2tpbmdDb21wb3NpdGluZ1VwZGF0
ZXMoKTsKICAgICBFeGNlcHRpb25Pcjx1bnNpZ25lZD4gY29tcG9zaXRpbmdVcGRhdGVDb3VudCgp
OwogCisgICAgRXhjZXB0aW9uT3I8dm9pZD4gc3RhcnRUcmFja2luZ1JlbmRlcmluZ1VwZGF0ZXMo
KTsKKyAgICBFeGNlcHRpb25Pcjx1bnNpZ25lZD4gcmVuZGVyaW5nVXBkYXRlQ291bnQoKTsKKwog
ICAgIGVudW0gQ29tcG9zaXRpbmdQb2xpY3kgeyBOb3JtYWwsIENvbnNlcnZhdGl2ZSB9OwogICAg
IEV4Y2VwdGlvbk9yPHZvaWQ+IHNldENvbXBvc2l0aW5nUG9saWN5T3ZlcnJpZGUoT3B0aW9uYWw8
Q29tcG9zaXRpbmdQb2xpY3k+KTsKICAgICBFeGNlcHRpb25PcjxPcHRpb25hbDxDb21wb3NpdGlu
Z1BvbGljeT4+IGNvbXBvc2l0aW5nUG9saWN5T3ZlcnJpZGUoKSBjb25zdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmlkbAppbmRleCBlN2Y2NjUzY2EwODRjNDI1YTE5YzFhZGE3Yjc3MGVl
MDViOGI2N2VhLi5iMWEzYWRiMWI4NDQ2NDRiZmRjZDczZmE5MzViNmEwNGMyN2IwYWMyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKKysrIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC02MDQsNiArNjA0LDkgQEAgZW51bSBD
b250ZW50U2l6ZUNhdGVnb3J5IHsKICAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc3RhcnRU
cmFja2luZ0NvbXBvc2l0aW5nVXBkYXRlcygpOwogICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5z
aWduZWQgbG9uZyBjb21wb3NpdGluZ1VwZGF0ZUNvdW50KCk7CiAKKyAgICBbTWF5VGhyb3dFeGNl
cHRpb25dIHZvaWQgc3RhcnRUcmFja2luZ1JlbmRlcmluZ1VwZGF0ZXMoKTsKKyAgICBbTWF5VGhy
b3dFeGNlcHRpb25dIHVuc2lnbmVkIGxvbmcgcmVuZGVyaW5nVXBkYXRlQ291bnQoKTsKKwogICAg
IGF0dHJpYnV0ZSBDb21wb3NpdGluZ1BvbGljeT8gY29tcG9zaXRpbmdQb2xpY3lPdmVycmlkZTsK
IAogICAgIHZvaWQgdXBkYXRlTGF5b3V0QW5kU3R5bGVGb3JBbGxGcmFtZXMoKTsKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBh
OWUwNzQ3NjRjMzk0NGY0NGMwNWNlN2RkMTI1MjRmYjliZjIyYmY4Li5mZTA2NGU3NDE3YjM3OTQ0
YWJmOWE5MDIwNzRkMDM1NWIzMWVmYzYyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjAtMDct
MjMgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CisKKyAgICAgICAgc3Rl
cHMoKSB0aW1pbmcgZnVuY3Rpb24gb24gYSB0cmFuc2Zvcm0gYW5pbWF0aW9uIHRyaWdnZXJzIGEg
cmVuZGVyIGV2ZXJ5IGZyYW1lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTQ3MTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIGFuaW1hdGlvbnMvc3RlcHMtdHJhbnNmb3JtLXJlbmRlcmluZy11cGRhdGVz
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogYW5pbWF0aW9ucy9zdGVwcy10cmFuc2Zv
cm0tcmVuZGVyaW5nLXVwZGF0ZXMuaHRtbDogQWRkZWQuCisKIDIwMjAtMDctMjIgIEZ1amlpIEhp
cm9ub3JpICA8SGlyb25vcmkuRnVqaWlAc29ueS5jb20+CiAKICAgICAgICAgW1dpbl1bVW5pc2Ny
aWJlXSBNYXRlcmlhbCBpY29ucyBjb250YWluaW5nIHVuZGVyc2NvcmUgb3IgbnVtYmVycyBhcmVu
J3Qgc2hvd24gYmVjYXVzZSBTY3JpcHRJdGVtaXplIHNwbGl0cyB0aGVtIGFwYXJ0CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9hbmltYXRpb25zL3N0ZXBzLXRyYW5zZm9ybS1yZW5kZXJpbmctdXBk
YXRlcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9hbmltYXRpb25zL3N0ZXBzLXRyYW5zZm9y
bS1yZW5kZXJpbmctdXBkYXRlcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODViMmEzOGNhMjcz
YzZkNzAwNjg3ODZlMzM5ZGY3NDFlNjRjYTRlOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2FuaW1hdGlvbnMvc3RlcHMtdHJhbnNmb3JtLXJlbmRlcmluZy11cGRhdGVzLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDYgQEAKK1BBU1MgY291bnQgaXMgMAorUEFTUyBjb3VudCA8IDYgaXMg
dHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvc3RlcHMtdHJhbnNmb3JtLXJlbmRl
cmluZy11cGRhdGVzLmh0bWwgYi9MYXlvdXRUZXN0cy9hbmltYXRpb25zL3N0ZXBzLXRyYW5zZm9y
bS1yZW5kZXJpbmctdXBkYXRlcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIyOWVjMWFhYWUyM2FhNzU0ZGQ5
ZDUxMWI2ODdiMmJkZGZkYTZlMjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9hbmlt
YXRpb25zL3N0ZXBzLXRyYW5zZm9ybS1yZW5kZXJpbmctdXBkYXRlcy5odG1sCkBAIC0wLDAgKzEs
NTEgQEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8c2NyaXB0IHNyYz0i
Li4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKyAgICA8c3R5bGU+CisgICAg
ICAgICNib3ggeworICAgICAgICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgICAgICAgaGVpZ2h0
OiAxMDBweDsKKyAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHNpbHZlcjsKKyAgICAgICAg
fQorICAgICAgICAKKyAgICAgICAgI2JveC5hbmltYXRpbmcgeworICAgICAgICAgICAgYW5pbWF0
aW9uOiBzcGlubmVyIDAuMjVzIHN0ZXBzKDIpIDE7ICAgICAKKyAgICAgICAgfQorCisgICAgICAg
IEBrZXlmcmFtZXMgc3Bpbm5lciB7CisgICAgICAgICAgICBmcm9tIHsgdHJhbnNmb3JtOnJvdGF0
ZSgwZGVnKTsgfQorICAgICAgICAgICAgdG8gICB7IHRyYW5zZm9ybTpyb3RhdGUoMzYwZGVnKTsg
fQorICAgICAgICB9CisgICAgPC9zdHlsZT4KKyAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cu
anNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgbGV0IGNvdW50ID0gMDsKKyAgICAgICAg
d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCAoKSA9PiB7CisgICAgICAgICAgICBpZiAo
IXdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGxldCBi
b3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYm94Jyk7CisgICAgICAgICAgICBib3guYWRk
RXZlbnRMaXN0ZW5lcignYW5pbWF0aW9uc3RhcnQnLCAoKSA9PiB7CisgICAgICAgICAgICAgICAg
aW50ZXJuYWxzLnN0YXJ0VHJhY2tpbmdSZW5kZXJpbmdVcGRhdGVzKCk7CisgICAgICAgICAgICAg
ICAgc2hvdWxkQmUoJ2NvdW50JywgJzAnKTsKKyAgICAgICAgICAgIH0sIGZhbHNlKTsKKyAgICAg
ICAgICAgIGJveC5hZGRFdmVudExpc3RlbmVyKCdhbmltYXRpb25lbmQnLCAoKSA9PiB7CisgICAg
ICAgICAgICAgICAgbGV0IGNvdW50ID0gaW50ZXJuYWxzLnJlbmRlcmluZ1VwZGF0ZUNvdW50KCk7
CisgICAgICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCdjb3VudCA8IDYnKTsKKyAgICAgICAgICAg
ICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAgIH0sIGZhbHNlKTsKKyAgICAgICAgICAg
IAorICAgICAgICAgICAgYm94LmNsYXNzTGlzdC5hZGQoJ2FuaW1hdGluZycpOworICAgICAgICB9
LCBmYWxzZSk7CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8ZGl2IGlkPSJi
b3giPjwvZGl2PgorICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgIDxzY3JpcHQgc3Jj
PSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4K
</data>
<flag name="review"
          id="420522"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
      

    </bug>

</bugzilla>