<?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>203238</bug_id>
          
          <creation_ts>2019-10-22 01:17:18 -0700</creation_ts>
          <short_desc>[Web Animations] Only process CSS properties affected by a given CSS transition</short_desc>
          <delta_ts>2019-10-24 09:35:16 -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>
          
          
          <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="Antoine Quint">graouts</reporter>
          <assigned_to name="Antoine Quint">graouts</assigned_to>
          <cc>dino</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1582282</commentid>
    <comment_count>0</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2019-10-22 01:17:18 -0700</bug_when>
    <thetext>[Web Animations] Only process CSS properties affected by a given CSS transition</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1582286</commentid>
    <comment_count>1</comment_count>
      <attachid>381524</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2019-10-22 01:21:05 -0700</bug_when>
    <thetext>Created attachment 381524
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1582288</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-10-22 01:21:58 -0700</bug_when>
    <thetext>&lt;rdar://problem/56492517&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1582364</commentid>
    <comment_count>3</comment_count>
      <attachid>381524</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-10-22 08:09:32 -0700</bug_when>
    <thetext>Comment on attachment 381524
Patch

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

&gt; Source/WebCore/animation/AnimationTimeline.cpp:497
&gt; +    auto compileTransitionPropertiesInStyle = [&amp;](const RenderStyle&amp; style) {

This is already a long function. I think you should move this and processProperty into real functions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1583297</commentid>
    <comment_count>4</comment_count>
      <attachid>381793</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2019-10-24 02:58:56 -0700</bug_when>
    <thetext>Created attachment 381793
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1583371</commentid>
    <comment_count>5</comment_count>
      <attachid>381793</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-10-24 08:49:54 -0700</bug_when>
    <thetext>Comment on attachment 381793
Patch

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

&gt; Source/WebCore/animation/AnimationTimeline.cpp:379
&gt; +void AnimationTimeline::updateCSSTransitionsForElementAndProperty(Element&amp; element, CSSPropertyID property, const RenderStyle&amp; currentStyle, const RenderStyle&amp; afterChangeStyle, AnimationTimeline::PropertyToTransitionMap&amp; runningTransitionsByProperty, PropertyToTransitionMap&amp; completedTransitionsByProperty, const MonotonicTime&amp; generationTime)

You can pass MonotonicTime by value (it has sizeof(double)).

&gt; Source/WebCore/animation/AnimationTimeline.cpp:535
&gt;          }

I would return here and remove the else.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1583394</commentid>
    <comment_count>6</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2019-10-24 09:35:16 -0700</bug_when>
    <thetext>Committed r251543: &lt;https://trac.webkit.org/changeset/251543&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>381524</attachid>
            <date>2019-10-22 01:21:05 -0700</date>
            <delta_ts>2019-10-24 02:58:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203238-20191022102104.patch</filename>
            <type>text/plain</type>
            <size>4961</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxNDE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTdiNTk4Yjg4ZGY3M2Qz
ZGVjOGIwOWI1MWRmMDNiYzllYjMzZjY5ZS4uMzM2OWRhZDQ4ZmJlNjczNDM2Y2UxMTMyMjQwYmVi
Mzc1MjNlNDNkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE5LTEwLTIyICBBbnRv
aW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYiBBbmltYXRpb25z
XSBPbmx5IHByb2Nlc3MgQ1NTIHByb3BlcnRpZXMgYWZmZWN0ZWQgYnkgYSBnaXZlbiBDU1MgdHJh
bnNpdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjAzMjM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
V2hlbiB0aGUgInRyYW5zaXRpb24iIHByb3BlcnR5LCBvciBvbmUgb2YgaXRzIGxvbmdoYW5kcywg
d291bGQgY2hhbmdlIHdlIHdvdWxkIGl0ZXJhdGUgb3ZlciBldmVyeSBrbm93biBDU1MgcHJvcGVy
dHkgdG8gaWRlbnRpZnkgd2hldGhlciB0aGUgYmVmb3JlIGFuZCBhZnRlcgorICAgICAgICBzdHls
ZXMgc2hvd2VkIHJlYXNvbnMgdG8gY3JlYXRlLCBtb2RpZnkgb3IgY2FuY2VsIGEgYmFja2luZyBD
U1NUcmFuc2l0aW9uIG9iamVjdC4gSG93ZXZlciwgd2Ugb25seSBuZWVkIHRvIGRvIHRoaXMgaW4g
dGhlIGNhc2Ugd2hlcmUgInRyYW5zaXRpb24tcHJvcGVydHkiIGlzCisgICAgICAgICJhbGwiLCBp
ZS4gd2hlcmUgdGhlIEFuaW1hdGlvbiBvYmplY3QgaGFzIGl0cyBhbmltYXRpb25Nb2RlKCkgc2V0
IHRvIEFuaW1hdGlvbjo6QW5pbWF0ZUFsbC4gSW4gYWxsIG90aGVyIGNhc2VzLCB3ZSBvbmx5IG5l
ZWQgdG8gaXRlcmF0ZSBvdmVyIHRoZSBDU1MgcHJvcGVydGllcworICAgICAgICBzcGVjaWZpZWQg
YnkgInRyYW5zaXRpb24tcHJvcGVydHkiLgorCisgICAgICAgIFdlIG5vdyBjb21waWxlIGEgbGlz
dCBvZiBDU1MgcHJvcGVydGllcyB0byBpdGVyYXRlIG92ZXIgYnkgbG9va2luZyBhdCBhbGwgcHJv
cGVydGllcyBsaXN0ZWQgaW4gdGhlICJ0cmFuc2l0aW9uLXByb3BlcnR5IiBmb3IgdGhlIGJlZm9y
ZSBhbmQgYWZ0ZXIgc3R5bGVzLgorCisgICAgICAgICogYW5pbWF0aW9uL0FuaW1hdGlvblRpbWVs
aW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvblRpbWVsaW5lOjp1cGRhdGVDU1NU
cmFuc2l0aW9uc0ZvckVsZW1lbnQpOgorCiAyMDE5LTEwLTIxICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CiAKICAgICAgICAgU3VzcGVuZCBkZWRpY2F0ZWQgd29ya2VyIHRocmVhZHMg
d2hpbGUgaW4gdGhlIGJhY2svZm9yd2FyZCBjYWNoZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYW5pbWF0aW9uL0FuaW1hdGlvblRpbWVsaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1h
dGlvbi9BbmltYXRpb25UaW1lbGluZS5jcHAKaW5kZXggMDRmYjc4MDMyYTg4MzBkOWYyMjQwODUx
MmYyMWNhZDA3M2M1OWRlZC4uMWYzZWVlNzllMTNkMTllYzgzYjAzZTFlMjRjODc0OWVlMDQ0Y2Rm
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1hdGlvblRpbWVsaW5l
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9uVGltZWxpbmUuY3Bw
CkBAIC0zNzEsMTMgKzM3MSw3IEBAIHZvaWQgQW5pbWF0aW9uVGltZWxpbmU6OnVwZGF0ZUNTU1Ry
YW5zaXRpb25zRm9yRWxlbWVudChFbGVtZW50JiBlbGVtZW50LCBjb25zdCBSCiAKICAgICBhdXRv
IGdlbmVyYXRpb25UaW1lID0gTW9ub3RvbmljVGltZTo6bm93KCk7CiAKLSAgICBhdXRvIG51bWJl
ck9mUHJvcGVydGllcyA9IENTU1Byb3BlcnR5QW5pbWF0aW9uOjpnZXROdW1Qcm9wZXJ0aWVzKCk7
Ci0gICAgZm9yIChpbnQgcHJvcGVydHlJbmRleCA9IDA7IHByb3BlcnR5SW5kZXggPCBudW1iZXJP
ZlByb3BlcnRpZXM7ICsrcHJvcGVydHlJbmRleCkgewotICAgICAgICBPcHRpb25hbDxib29sPiBp
c1Nob3J0aGFuZDsKLSAgICAgICAgYXV0byBwcm9wZXJ0eSA9IENTU1Byb3BlcnR5QW5pbWF0aW9u
OjpnZXRQcm9wZXJ0eUF0SW5kZXgocHJvcGVydHlJbmRleCwgaXNTaG9ydGhhbmQpOwotICAgICAg
ICBpZiAoaXNTaG9ydGhhbmQgJiYgKmlzU2hvcnRoYW5kKQotICAgICAgICAgICAgY29udGludWU7
Ci0KKyAgICBhdXRvIHByb2Nlc3NQcm9wZXJ0eSA9IFsmXShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5
KSB7CiAgICAgICAgIGNvbnN0IEFuaW1hdGlvbiogbWF0Y2hpbmdCYWNraW5nQW5pbWF0aW9uID0g
bnVsbHB0cjsKICAgICAgICAgaWYgKGF1dG8qIHRyYW5zaXRpb25zID0gYWZ0ZXJDaGFuZ2VTdHls
ZS50cmFuc2l0aW9ucygpKSB7CiAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRy
YW5zaXRpb25zLT5zaXplKCk7ICsraSkgewpAQCAtNDk0LDYgKzQ4OCw1MyBAQCB2b2lkIEFuaW1h
dGlvblRpbWVsaW5lOjp1cGRhdGVDU1NUcmFuc2l0aW9uc0ZvckVsZW1lbnQoRWxlbWVudCYgZWxl
bWVudCwgY29uc3QgUgogICAgICAgICAgICAgICAgIGVuc3VyZVJ1bm5pbmdUcmFuc2l0aW9uc0J5
UHJvcGVydHkoZWxlbWVudCkuc2V0KHByb3BlcnR5LCBDU1NUcmFuc2l0aW9uOjpjcmVhdGUoZWxl
bWVudCwgcHJvcGVydHksIGdlbmVyYXRpb25UaW1lLCAqbWF0Y2hpbmdCYWNraW5nQW5pbWF0aW9u
LCAmcHJldmlvdXNseVJ1bm5pbmdUcmFuc2l0aW9uQ3VycmVudFN0eWxlLCBhZnRlckNoYW5nZVN0
eWxlLCBkZWxheSwgZHVyYXRpb24sIHJldmVyc2luZ0FkanVzdGVkU3RhcnRTdHlsZSwgcmV2ZXJz
aW5nU2hvcnRlbmluZ0ZhY3RvcikpOwogICAgICAgICAgICAgfQogICAgICAgICB9CisgICAgfTsK
KworICAgIC8vIEZpcnN0LCBsZXQncyBjb21waWxlIHRoZSBsaXN0IG9mIGFsbCBDU1MgcHJvcGVy
dGllcyBmb3VuZCBpbiB0aGUgY3VycmVudCBzdHlsZSBhbmQgdGhlIGFmdGVyLWNoYW5nZSBzdHls
ZS4KKyAgICBIYXNoU2V0PENTU1Byb3BlcnR5SUQ+IHRyYW5zaXRpb25Qcm9wZXJ0aWVzOworICAg
IGJvb2wgdHJhbnNpdGlvblByb3BlcnRpZXNDb250YWluQWxsID0gZmFsc2U7CisKKyAgICBhdXRv
IGNvbXBpbGVUcmFuc2l0aW9uUHJvcGVydGllc0luU3R5bGUgPSBbJl0oY29uc3QgUmVuZGVyU3R5
bGUmIHN0eWxlKSB7CisgICAgICAgIGlmICh0cmFuc2l0aW9uUHJvcGVydGllc0NvbnRhaW5BbGwp
CisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgYXV0byogdHJhbnNpdGlvbnMgPSBzdHls
ZS50cmFuc2l0aW9ucygpOworICAgICAgICBpZiAoIXRyYW5zaXRpb25zKQorICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdHJhbnNpdGlvbnMtPnNp
emUoKTsgKytpKSB7CisgICAgICAgICAgICBjb25zdCBhdXRvJiBhbmltYXRpb24gPSB0cmFuc2l0
aW9ucy0+YW5pbWF0aW9uKGkpOworICAgICAgICAgICAgYXV0byBtb2RlID0gYW5pbWF0aW9uLmFu
aW1hdGlvbk1vZGUoKTsKKyAgICAgICAgICAgIGlmIChtb2RlID09IEFuaW1hdGlvbjo6QW5pbWF0
ZVNpbmdsZVByb3BlcnR5KSB7CisgICAgICAgICAgICAgICAgYXV0byBwcm9wZXJ0eSA9IGFuaW1h
dGlvbi5wcm9wZXJ0eSgpOworICAgICAgICAgICAgICAgIGlmIChpc1Nob3J0aGFuZENTU1Byb3Bl
cnR5KHByb3BlcnR5KSkgeworICAgICAgICAgICAgICAgICAgICBhdXRvIHNob3J0aGFuZCA9IHNo
b3J0aGFuZEZvclByb3BlcnR5KHByb3BlcnR5KTsKKyAgICAgICAgICAgICAgICAgICAgZm9yIChz
aXplX3QgaiA9IDA7IGogPCBzaG9ydGhhbmQubGVuZ3RoKCk7ICsraikKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHRyYW5zaXRpb25Qcm9wZXJ0aWVzLmFkZChzaG9ydGhhbmQucHJvcGVydGllcygp
W2pdKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgdHJhbnNp
dGlvblByb3BlcnRpZXMuYWRkKHByb3BlcnR5KTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAobW9k
ZSA9PSBBbmltYXRpb246OkFuaW1hdGVBbGwpIHsKKyAgICAgICAgICAgICAgICB0cmFuc2l0aW9u
UHJvcGVydGllc0NvbnRhaW5BbGwgPSB0cnVlOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH07CisKKyAgICBjb21waWxlVHJhbnNpdGlvblBy
b3BlcnRpZXNJblN0eWxlKGN1cnJlbnRTdHlsZSk7CisgICAgY29tcGlsZVRyYW5zaXRpb25Qcm9w
ZXJ0aWVzSW5TdHlsZShhZnRlckNoYW5nZVN0eWxlKTsKKworICAgIGlmICh0cmFuc2l0aW9uUHJv
cGVydGllc0NvbnRhaW5BbGwpIHsKKyAgICAgICAgYXV0byBudW1iZXJPZlByb3BlcnRpZXMgPSBD
U1NQcm9wZXJ0eUFuaW1hdGlvbjo6Z2V0TnVtUHJvcGVydGllcygpOworICAgICAgICBmb3IgKGlu
dCBwcm9wZXJ0eUluZGV4ID0gMDsgcHJvcGVydHlJbmRleCA8IG51bWJlck9mUHJvcGVydGllczsg
Kytwcm9wZXJ0eUluZGV4KSB7CisgICAgICAgICAgICBPcHRpb25hbDxib29sPiBpc1Nob3J0aGFu
ZDsKKyAgICAgICAgICAgIGF1dG8gcHJvcGVydHkgPSBDU1NQcm9wZXJ0eUFuaW1hdGlvbjo6Z2V0
UHJvcGVydHlBdEluZGV4KHByb3BlcnR5SW5kZXgsIGlzU2hvcnRoYW5kKTsKKyAgICAgICAgICAg
IGlmIChpc1Nob3J0aGFuZCAmJiAqaXNTaG9ydGhhbmQpCisgICAgICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgICAgICBwcm9jZXNzUHJvcGVydHkocHJvcGVydHkpOworICAgICAgICB9Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgZm9yIChhdXRvIHByb3BlcnR5IDogdHJhbnNpdGlvblByb3Bl
cnRpZXMpCisgICAgICAgICAgICBwcm9jZXNzUHJvcGVydHkocHJvcGVydHkpOwogICAgIH0KIH0K
IAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>381793</attachid>
            <date>2019-10-24 02:58:56 -0700</date>
            <delta_ts>2019-10-24 08:49:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203238-20191024115854.patch</filename>
            <type>text/plain</type>
            <size>27934</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxNTM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDM1ZTBjMThmZDVlZWZm
ZmRmMTY2ZWU1YWZiOTVmMGZhMDM4NDk0MC4uM2I4NDIyYjU5MjFjNjg5M2IzYjdlNDM3NmU5YmEy
ODkzMTNmYmYzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE5LTEwLTI0ICBBbnRv
aW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYiBBbmltYXRpb25z
XSBPbmx5IHByb2Nlc3MgQ1NTIHByb3BlcnRpZXMgYWZmZWN0ZWQgYnkgYSBnaXZlbiBDU1MgdHJh
bnNpdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjAzMjM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
V2hlbiB0aGUgInRyYW5zaXRpb24iIHByb3BlcnR5LCBvciBvbmUgb2YgaXRzIGxvbmdoYW5kcywg
d291bGQgY2hhbmdlIHdlIHdvdWxkIGl0ZXJhdGUgb3ZlciBldmVyeSBrbm93biBDU1MgcHJvcGVy
dHkgdG8gaWRlbnRpZnkgd2hldGhlciB0aGUgYmVmb3JlIGFuZCBhZnRlcgorICAgICAgICBzdHls
ZXMgc2hvd2VkIHJlYXNvbnMgdG8gY3JlYXRlLCBtb2RpZnkgb3IgY2FuY2VsIGEgYmFja2luZyBD
U1NUcmFuc2l0aW9uIG9iamVjdC4gSG93ZXZlciwgd2Ugb25seSBuZWVkIHRvIGRvIHRoaXMgaW4g
dGhlIGNhc2Ugd2hlcmUgInRyYW5zaXRpb24tcHJvcGVydHkiIGlzCisgICAgICAgICJhbGwiLCBp
ZS4gd2hlcmUgdGhlIEFuaW1hdGlvbiBvYmplY3QgaGFzIGl0cyBhbmltYXRpb25Nb2RlKCkgc2V0
IHRvIEFuaW1hdGlvbjo6QW5pbWF0ZUFsbC4gSW4gYWxsIG90aGVyIGNhc2VzLCB3ZSBvbmx5IG5l
ZWQgdG8gaXRlcmF0ZSBvdmVyIHRoZSBDU1MgcHJvcGVydGllcworICAgICAgICBzcGVjaWZpZWQg
YnkgInRyYW5zaXRpb24tcHJvcGVydHkiLgorCisgICAgICAgIFdlIG5vdyBjb21waWxlIGEgbGlz
dCBvZiBDU1MgcHJvcGVydGllcyB0byBpdGVyYXRlIG92ZXIgYnkgbG9va2luZyBhdCBhbGwgcHJv
cGVydGllcyBsaXN0ZWQgaW4gdGhlICJ0cmFuc2l0aW9uLXByb3BlcnR5IiBmb3IgdGhlIGJlZm9y
ZSBhbmQgYWZ0ZXIgc3R5bGVzLgorCisgICAgICAgICogYW5pbWF0aW9uL0FuaW1hdGlvblRpbWVs
aW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbXBpbGVUcmFuc2l0aW9uUHJvcGVydGllc0lu
U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uVGltZWxpbmU6OnVwZGF0ZUNTU1Ry
YW5zaXRpb25zRm9yRWxlbWVudEFuZFByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1h
dGlvblRpbWVsaW5lOjp1cGRhdGVDU1NUcmFuc2l0aW9uc0ZvckVsZW1lbnQpOgorICAgICAgICAq
IGFuaW1hdGlvbi9BbmltYXRpb25UaW1lbGluZS5oOgorCiAyMDE5LTEwLTI0ICBBbnR0aSBLb2l2
aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBNb3ZlIE1hdGNoUmVzdWx0IGFuZCBy
ZWxhdGVkIHR5cGVzIG91dCBvZiBTdHlsZVJlc29sdmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9hbmltYXRpb24vQW5pbWF0aW9uVGltZWxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvYW5p
bWF0aW9uL0FuaW1hdGlvblRpbWVsaW5lLmNwcAppbmRleCAwNGZiNzgwMzJhODgzMGQ5ZjIyNDA4
NTEyZjIxY2FkMDczYzU5ZGVkLi42ZWIyNDVlMzMyM2YyZDYwYTdhNTFkNzYxZTBiNTJlNjM1YmM5
NmMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9uVGltZWxp
bmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25UaW1lbGluZS5j
cHAKQEAgLTM0OSw2ICszNDksMTUzIEBAIEFuaW1hdGlvblRpbWVsaW5lOjpQcm9wZXJ0eVRvVHJh
bnNpdGlvbk1hcCYgQW5pbWF0aW9uVGltZWxpbmU6OmVuc3VyZVJ1bm5pbmdUcmFuCiAgICAgfSku
aXRlcmF0b3ItPnZhbHVlOwogfQogCitzdGF0aWMgdm9pZCBjb21waWxlVHJhbnNpdGlvblByb3Bl
cnRpZXNJblN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgSGFzaFNldDxDU1NQcm9wZXJ0
eUlEPiYgdHJhbnNpdGlvblByb3BlcnRpZXMsIGJvb2wmIHRyYW5zaXRpb25Qcm9wZXJ0aWVzQ29u
dGFpbkFsbCkKK3sKKyAgICBpZiAodHJhbnNpdGlvblByb3BlcnRpZXNDb250YWluQWxsKQorICAg
ICAgICByZXR1cm47CisKKyAgICBhdXRvKiB0cmFuc2l0aW9ucyA9IHN0eWxlLnRyYW5zaXRpb25z
KCk7CisgICAgaWYgKCF0cmFuc2l0aW9ucykKKyAgICAgICAgcmV0dXJuOworCisgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCB0cmFuc2l0aW9ucy0+c2l6ZSgpOyArK2kpIHsKKyAgICAgICAgY29u
c3QgYXV0byYgYW5pbWF0aW9uID0gdHJhbnNpdGlvbnMtPmFuaW1hdGlvbihpKTsKKyAgICAgICAg
YXV0byBtb2RlID0gYW5pbWF0aW9uLmFuaW1hdGlvbk1vZGUoKTsKKyAgICAgICAgaWYgKG1vZGUg
PT0gQW5pbWF0aW9uOjpBbmltYXRlU2luZ2xlUHJvcGVydHkpIHsKKyAgICAgICAgICAgIGF1dG8g
cHJvcGVydHkgPSBhbmltYXRpb24ucHJvcGVydHkoKTsKKyAgICAgICAgICAgIGlmIChpc1Nob3J0
aGFuZENTU1Byb3BlcnR5KHByb3BlcnR5KSkgeworICAgICAgICAgICAgICAgIGF1dG8gc2hvcnRo
YW5kID0gc2hvcnRoYW5kRm9yUHJvcGVydHkocHJvcGVydHkpOworICAgICAgICAgICAgICAgIGZv
ciAoc2l6ZV90IGogPSAwOyBqIDwgc2hvcnRoYW5kLmxlbmd0aCgpOyArK2opCisgICAgICAgICAg
ICAgICAgICAgIHRyYW5zaXRpb25Qcm9wZXJ0aWVzLmFkZChzaG9ydGhhbmQucHJvcGVydGllcygp
W2pdKTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIHRyYW5zaXRpb25Qcm9w
ZXJ0aWVzLmFkZChwcm9wZXJ0eSk7CisgICAgICAgIH0gZWxzZSBpZiAobW9kZSA9PSBBbmltYXRp
b246OkFuaW1hdGVBbGwpIHsKKyAgICAgICAgICAgIHRyYW5zaXRpb25Qcm9wZXJ0aWVzQ29udGFp
bkFsbCA9IHRydWU7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9Cit9CisK
K3ZvaWQgQW5pbWF0aW9uVGltZWxpbmU6OnVwZGF0ZUNTU1RyYW5zaXRpb25zRm9yRWxlbWVudEFu
ZFByb3BlcnR5KEVsZW1lbnQmIGVsZW1lbnQsIENTU1Byb3BlcnR5SUQgcHJvcGVydHksIGNvbnN0
IFJlbmRlclN0eWxlJiBjdXJyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlJiBhZnRlckNoYW5n
ZVN0eWxlLCBBbmltYXRpb25UaW1lbGluZTo6UHJvcGVydHlUb1RyYW5zaXRpb25NYXAmIHJ1bm5p
bmdUcmFuc2l0aW9uc0J5UHJvcGVydHksIFByb3BlcnR5VG9UcmFuc2l0aW9uTWFwJiBjb21wbGV0
ZWRUcmFuc2l0aW9uc0J5UHJvcGVydHksIGNvbnN0IE1vbm90b25pY1RpbWUmIGdlbmVyYXRpb25U
aW1lKQoreworICAgIGNvbnN0IEFuaW1hdGlvbiogbWF0Y2hpbmdCYWNraW5nQW5pbWF0aW9uID0g
bnVsbHB0cjsKKyAgICBpZiAoYXV0byogdHJhbnNpdGlvbnMgPSBhZnRlckNoYW5nZVN0eWxlLnRy
YW5zaXRpb25zKCkpIHsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0cmFuc2l0aW9u
cy0+c2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIGF1dG8mIGJhY2tpbmdBbmltYXRpb24gPSB0
cmFuc2l0aW9ucy0+YW5pbWF0aW9uKGkpOworICAgICAgICAgICAgaWYgKHRyYW5zaXRpb25NYXRj
aGVzUHJvcGVydHkoYmFja2luZ0FuaW1hdGlvbiwgcHJvcGVydHkpKQorICAgICAgICAgICAgICAg
IG1hdGNoaW5nQmFja2luZ0FuaW1hdGlvbiA9ICZiYWNraW5nQW5pbWF0aW9uOworICAgICAgICB9
CisgICAgfQorCisgICAgLy8gaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy10cmFuc2l0aW9u
cy0xLyNiZWZvcmUtY2hhbmdlLXN0eWxlCisgICAgLy8gRGVmaW5lIHRoZSBiZWZvcmUtY2hhbmdl
IHN0eWxlIGFzIHRoZSBjb21wdXRlZCB2YWx1ZXMgb2YgYWxsIHByb3BlcnRpZXMgb24gdGhlIGVs
ZW1lbnQgYXMgb2YgdGhlIHByZXZpb3VzIHN0eWxlIGNoYW5nZSBldmVudCwgZXhjZXB0IHdpdGgK
KyAgICAvLyBhbnkgc3R5bGVzIGRlcml2ZWQgZnJvbSBkZWNsYXJhdGl2ZSBhbmltYXRpb25zIHN1
Y2ggYXMgQ1NTIFRyYW5zaXRpb25zLCBDU1MgQW5pbWF0aW9ucywgYW5kIFNNSUwgQW5pbWF0aW9u
cyB1cGRhdGVkIHRvIHRoZSBjdXJyZW50IHRpbWUuCisgICAgYXV0byBleGlzdGluZ0FuaW1hdGlv
biA9IGNzc0FuaW1hdGlvbkZvckVsZW1lbnRBbmRQcm9wZXJ0eShlbGVtZW50LCBwcm9wZXJ0eSk7
CisgICAgY29uc3QgYXV0byYgYmVmb3JlQ2hhbmdlU3R5bGUgPSBleGlzdGluZ0FuaW1hdGlvbiA/
IGRvd25jYXN0PENTU0FuaW1hdGlvbj4oZXhpc3RpbmdBbmltYXRpb24uZ2V0KCkpLT51bmFuaW1h
dGVkU3R5bGUoKSA6IGN1cnJlbnRTdHlsZTsKKworICAgIGlmICghcnVubmluZ1RyYW5zaXRpb25z
QnlQcm9wZXJ0eS5jb250YWlucyhwcm9wZXJ0eSkKKyAgICAgICAgJiYgIUNTU1Byb3BlcnR5QW5p
bWF0aW9uOjpwcm9wZXJ0aWVzRXF1YWwocHJvcGVydHksICZiZWZvcmVDaGFuZ2VTdHlsZSwgJmFm
dGVyQ2hhbmdlU3R5bGUpCisgICAgICAgICYmIENTU1Byb3BlcnR5QW5pbWF0aW9uOjpjYW5Qcm9w
ZXJ0eUJlSW50ZXJwb2xhdGVkKHByb3BlcnR5LCAmYmVmb3JlQ2hhbmdlU3R5bGUsICZhZnRlckNo
YW5nZVN0eWxlKQorICAgICAgICAmJiAhcHJvcGVydHlJblN0eWxlTWF0Y2hlc1ZhbHVlRm9yVHJh
bnNpdGlvbkluTWFwKHByb3BlcnR5LCBhZnRlckNoYW5nZVN0eWxlLCBjb21wbGV0ZWRUcmFuc2l0
aW9uc0J5UHJvcGVydHkpCisgICAgICAgICYmIG1hdGNoaW5nQmFja2luZ0FuaW1hdGlvbiAmJiB0
cmFuc2l0aW9uQ29tYmluZWREdXJhdGlvbihtYXRjaGluZ0JhY2tpbmdBbmltYXRpb24pID4gMCkg
eworICAgICAgICAvLyAxLiBJZiBhbGwgb2YgdGhlIGZvbGxvd2luZyBhcmUgdHJ1ZToKKyAgICAg
ICAgLy8gICAtIHRoZSBlbGVtZW50IGRvZXMgbm90IGhhdmUgYSBydW5uaW5nIHRyYW5zaXRpb24g
Zm9yIHRoZSBwcm9wZXJ0eSwKKyAgICAgICAgLy8gICAtIHRoZSBiZWZvcmUtY2hhbmdlIHN0eWxl
IGlzIGRpZmZlcmVudCBmcm9tIGFuZCBjYW4gYmUgaW50ZXJwb2xhdGVkIHdpdGggdGhlIGFmdGVy
LWNoYW5nZSBzdHlsZSBmb3IgdGhhdCBwcm9wZXJ0eSwKKyAgICAgICAgLy8gICAtIHRoZSBlbGVt
ZW50IGRvZXMgbm90IGhhdmUgYSBjb21wbGV0ZWQgdHJhbnNpdGlvbiBmb3IgdGhlIHByb3BlcnR5
IG9yIHRoZSBlbmQgdmFsdWUgb2YgdGhlIGNvbXBsZXRlZCB0cmFuc2l0aW9uIGlzIGRpZmZlcmVu
dCBmcm9tIHRoZSBhZnRlci1jaGFuZ2Ugc3R5bGUgZm9yIHRoZSBwcm9wZXJ0eSwKKyAgICAgICAg
Ly8gICAtIHRoZXJlIGlzIGEgbWF0Y2hpbmcgdHJhbnNpdGlvbi1wcm9wZXJ0eSB2YWx1ZSwgYW5k
CisgICAgICAgIC8vICAgLSB0aGUgY29tYmluZWQgZHVyYXRpb24gaXMgZ3JlYXRlciB0aGFuIDBz
LAorCisgICAgICAgIC8vIHRoZW4gaW1wbGVtZW50YXRpb25zIG11c3QgcmVtb3ZlIHRoZSBjb21w
bGV0ZWQgdHJhbnNpdGlvbiAoaWYgcHJlc2VudCkgZnJvbSB0aGUgc2V0IG9mIGNvbXBsZXRlZCB0
cmFuc2l0aW9ucworICAgICAgICBjb21wbGV0ZWRUcmFuc2l0aW9uc0J5UHJvcGVydHkucmVtb3Zl
KHByb3BlcnR5KTsKKworICAgICAgICAvLyBhbmQgc3RhcnQgYSB0cmFuc2l0aW9uIHdob3NlOgor
ICAgICAgICAvLyAgIC0gc3RhcnQgdGltZSBpcyB0aGUgdGltZSBvZiB0aGUgc3R5bGUgY2hhbmdl
IGV2ZW50IHBsdXMgdGhlIG1hdGNoaW5nIHRyYW5zaXRpb24gZGVsYXksCisgICAgICAgIC8vICAg
LSBlbmQgdGltZSBpcyB0aGUgc3RhcnQgdGltZSBwbHVzIHRoZSBtYXRjaGluZyB0cmFuc2l0aW9u
IGR1cmF0aW9uLAorICAgICAgICAvLyAgIC0gc3RhcnQgdmFsdWUgaXMgdGhlIHZhbHVlIG9mIHRo
ZSB0cmFuc2l0aW9uaW5nIHByb3BlcnR5IGluIHRoZSBiZWZvcmUtY2hhbmdlIHN0eWxlLAorICAg
ICAgICAvLyAgIC0gZW5kIHZhbHVlIGlzIHRoZSB2YWx1ZSBvZiB0aGUgdHJhbnNpdGlvbmluZyBw
cm9wZXJ0eSBpbiB0aGUgYWZ0ZXItY2hhbmdlIHN0eWxlLAorICAgICAgICAvLyAgIC0gcmV2ZXJz
aW5nLWFkanVzdGVkIHN0YXJ0IHZhbHVlIGlzIHRoZSBzYW1lIGFzIHRoZSBzdGFydCB2YWx1ZSwg
YW5kCisgICAgICAgIC8vICAgLSByZXZlcnNpbmcgc2hvcnRlbmluZyBmYWN0b3IgaXMgMS4KKyAg
ICAgICAgYXV0byBkZWxheSA9IFNlY29uZHMobWF0Y2hpbmdCYWNraW5nQW5pbWF0aW9uLT5kZWxh
eSgpKTsKKyAgICAgICAgYXV0byBkdXJhdGlvbiA9IFNlY29uZHMobWF0Y2hpbmdCYWNraW5nQW5p
bWF0aW9uLT5kdXJhdGlvbigpKTsKKyAgICAgICAgYXV0byYgcmV2ZXJzaW5nQWRqdXN0ZWRTdGFy
dFN0eWxlID0gYmVmb3JlQ2hhbmdlU3R5bGU7CisgICAgICAgIGF1dG8gcmV2ZXJzaW5nU2hvcnRl
bmluZ0ZhY3RvciA9IDE7CisgICAgICAgIHJ1bm5pbmdUcmFuc2l0aW9uc0J5UHJvcGVydHkuc2V0
KHByb3BlcnR5LCBDU1NUcmFuc2l0aW9uOjpjcmVhdGUoZWxlbWVudCwgcHJvcGVydHksIGdlbmVy
YXRpb25UaW1lLCAqbWF0Y2hpbmdCYWNraW5nQW5pbWF0aW9uLCAmYmVmb3JlQ2hhbmdlU3R5bGUs
IGFmdGVyQ2hhbmdlU3R5bGUsIGRlbGF5LCBkdXJhdGlvbiwgcmV2ZXJzaW5nQWRqdXN0ZWRTdGFy
dFN0eWxlLCByZXZlcnNpbmdTaG9ydGVuaW5nRmFjdG9yKSk7CisgICAgfSBlbHNlIGlmIChjb21w
bGV0ZWRUcmFuc2l0aW9uc0J5UHJvcGVydHkuY29udGFpbnMocHJvcGVydHkpICYmICFwcm9wZXJ0
eUluU3R5bGVNYXRjaGVzVmFsdWVGb3JUcmFuc2l0aW9uSW5NYXAocHJvcGVydHksIGFmdGVyQ2hh
bmdlU3R5bGUsIGNvbXBsZXRlZFRyYW5zaXRpb25zQnlQcm9wZXJ0eSkpIHsKKyAgICAgICAgLy8g
Mi4gT3RoZXJ3aXNlLCBpZiB0aGUgZWxlbWVudCBoYXMgYSBjb21wbGV0ZWQgdHJhbnNpdGlvbiBm
b3IgdGhlIHByb3BlcnR5IGFuZCB0aGUgZW5kIHZhbHVlIG9mIHRoZSBjb21wbGV0ZWQgdHJhbnNp
dGlvbiBpcyBkaWZmZXJlbnQgZnJvbQorICAgICAgICAvLyAgICB0aGUgYWZ0ZXItY2hhbmdlIHN0
eWxlIGZvciB0aGUgcHJvcGVydHksIHRoZW4gaW1wbGVtZW50YXRpb25zIG11c3QgcmVtb3ZlIHRo
ZSBjb21wbGV0ZWQgdHJhbnNpdGlvbiBmcm9tIHRoZSBzZXQgb2YgY29tcGxldGVkIHRyYW5zaXRp
b25zLgorICAgICAgICBjb21wbGV0ZWRUcmFuc2l0aW9uc0J5UHJvcGVydHkucmVtb3ZlKHByb3Bl
cnR5KTsKKyAgICB9CisKKyAgICBib29sIGhhc1J1bm5pbmdUcmFuc2l0aW9uID0gcnVubmluZ1Ry
YW5zaXRpb25zQnlQcm9wZXJ0eS5jb250YWlucyhwcm9wZXJ0eSk7CisgICAgaWYgKChoYXNSdW5u
aW5nVHJhbnNpdGlvbiB8fCBjb21wbGV0ZWRUcmFuc2l0aW9uc0J5UHJvcGVydHkuY29udGFpbnMo
cHJvcGVydHkpKSAmJiAhbWF0Y2hpbmdCYWNraW5nQW5pbWF0aW9uKSB7CisgICAgICAgIC8vIDMu
IElmIHRoZSBlbGVtZW50IGhhcyBhIHJ1bm5pbmcgdHJhbnNpdGlvbiBvciBjb21wbGV0ZWQgdHJh
bnNpdGlvbiBmb3IgdGhlIHByb3BlcnR5LCBhbmQgdGhlcmUgaXMgbm90IGEgbWF0Y2hpbmcgdHJh
bnNpdGlvbi1wcm9wZXJ0eQorICAgICAgICAvLyAgICB2YWx1ZSwgdGhlbiBpbXBsZW1lbnRhdGlv
bnMgbXVzdCBjYW5jZWwgdGhlIHJ1bm5pbmcgdHJhbnNpdGlvbiBvciByZW1vdmUgdGhlIGNvbXBs
ZXRlZCB0cmFuc2l0aW9uIGZyb20gdGhlIHNldCBvZiBjb21wbGV0ZWQgdHJhbnNpdGlvbnMuCisg
ICAgICAgIGlmIChoYXNSdW5uaW5nVHJhbnNpdGlvbikKKyAgICAgICAgICAgIHJ1bm5pbmdUcmFu
c2l0aW9uc0J5UHJvcGVydHkudGFrZShwcm9wZXJ0eSktPmNhbmNlbCgpOworICAgICAgICBlbHNl
CisgICAgICAgICAgICBjb21wbGV0ZWRUcmFuc2l0aW9uc0J5UHJvcGVydHkucmVtb3ZlKHByb3Bl
cnR5KTsKKyAgICB9CisKKyAgICBpZiAobWF0Y2hpbmdCYWNraW5nQW5pbWF0aW9uICYmIHJ1bm5p
bmdUcmFuc2l0aW9uc0J5UHJvcGVydHkuY29udGFpbnMocHJvcGVydHkpICYmICFwcm9wZXJ0eUlu
U3R5bGVNYXRjaGVzVmFsdWVGb3JUcmFuc2l0aW9uSW5NYXAocHJvcGVydHksIGFmdGVyQ2hhbmdl
U3R5bGUsIHJ1bm5pbmdUcmFuc2l0aW9uc0J5UHJvcGVydHkpKSB7CisgICAgICAgIGF1dG8gcHJl
dmlvdXNseVJ1bm5pbmdUcmFuc2l0aW9uID0gcnVubmluZ1RyYW5zaXRpb25zQnlQcm9wZXJ0eS50
YWtlKHByb3BlcnR5KTsKKyAgICAgICAgYXV0byYgcHJldmlvdXNseVJ1bm5pbmdUcmFuc2l0aW9u
Q3VycmVudFN0eWxlID0gcHJldmlvdXNseVJ1bm5pbmdUcmFuc2l0aW9uLT5jdXJyZW50U3R5bGUo
KTsKKyAgICAgICAgLy8gNC4gSWYgdGhlIGVsZW1lbnQgaGFzIGEgcnVubmluZyB0cmFuc2l0aW9u
IGZvciB0aGUgcHJvcGVydHksIHRoZXJlIGlzIGEgbWF0Y2hpbmcgdHJhbnNpdGlvbi1wcm9wZXJ0
eSB2YWx1ZSwgYW5kIHRoZSBlbmQgdmFsdWUgb2YgdGhlIHJ1bm5pbmcKKyAgICAgICAgLy8gICAg
dHJhbnNpdGlvbiBpcyBub3QgZXF1YWwgdG8gdGhlIHZhbHVlIG9mIHRoZSBwcm9wZXJ0eSBpbiB0
aGUgYWZ0ZXItY2hhbmdlIHN0eWxlLCB0aGVuOgorICAgICAgICBpZiAoQ1NTUHJvcGVydHlBbmlt
YXRpb246OnByb3BlcnRpZXNFcXVhbChwcm9wZXJ0eSwgJnByZXZpb3VzbHlSdW5uaW5nVHJhbnNp
dGlvbkN1cnJlbnRTdHlsZSwgJmFmdGVyQ2hhbmdlU3R5bGUpIHx8ICFDU1NQcm9wZXJ0eUFuaW1h
dGlvbjo6Y2FuUHJvcGVydHlCZUludGVycG9sYXRlZChwcm9wZXJ0eSwgJmN1cnJlbnRTdHlsZSwg
JmFmdGVyQ2hhbmdlU3R5bGUpKSB7CisgICAgICAgICAgICAvLyAxLiBJZiB0aGUgY3VycmVudCB2
YWx1ZSBvZiB0aGUgcHJvcGVydHkgaW4gdGhlIHJ1bm5pbmcgdHJhbnNpdGlvbiBpcyBlcXVhbCB0
byB0aGUgdmFsdWUgb2YgdGhlIHByb3BlcnR5IGluIHRoZSBhZnRlci1jaGFuZ2Ugc3R5bGUsCisg
ICAgICAgICAgICAvLyAgICBvciBpZiB0aGVzZSB0d28gdmFsdWVzIGNhbm5vdCBiZSBpbnRlcnBv
bGF0ZWQsIHRoZW4gaW1wbGVtZW50YXRpb25zIG11c3QgY2FuY2VsIHRoZSBydW5uaW5nIHRyYW5z
aXRpb24uCisgICAgICAgICAgICBjYW5jZWxEZWNsYXJhdGl2ZUFuaW1hdGlvbigqcHJldmlvdXNs
eVJ1bm5pbmdUcmFuc2l0aW9uKTsKKyAgICAgICAgfSBlbHNlIGlmICh0cmFuc2l0aW9uQ29tYmlu
ZWREdXJhdGlvbihtYXRjaGluZ0JhY2tpbmdBbmltYXRpb24pIDw9IDAuMCB8fCAhQ1NTUHJvcGVy
dHlBbmltYXRpb246OmNhblByb3BlcnR5QmVJbnRlcnBvbGF0ZWQocHJvcGVydHksICZwcmV2aW91
c2x5UnVubmluZ1RyYW5zaXRpb25DdXJyZW50U3R5bGUsICZhZnRlckNoYW5nZVN0eWxlKSkgewor
ICAgICAgICAgICAgLy8gMi4gT3RoZXJ3aXNlLCBpZiB0aGUgY29tYmluZWQgZHVyYXRpb24gaXMg
bGVzcyB0aGFuIG9yIGVxdWFsIHRvIDBzLCBvciBpZiB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUg
cHJvcGVydHkgaW4gdGhlIHJ1bm5pbmcgdHJhbnNpdGlvbgorICAgICAgICAgICAgLy8gICAgY2Fu
bm90IGJlIGludGVycG9sYXRlZCB3aXRoIHRoZSB2YWx1ZSBvZiB0aGUgcHJvcGVydHkgaW4gdGhl
IGFmdGVyLWNoYW5nZSBzdHlsZSwgdGhlbiBpbXBsZW1lbnRhdGlvbnMgbXVzdCBjYW5jZWwgdGhl
IHJ1bm5pbmcgdHJhbnNpdGlvbi4KKyAgICAgICAgICAgIGNhbmNlbERlY2xhcmF0aXZlQW5pbWF0
aW9uKCpwcmV2aW91c2x5UnVubmluZ1RyYW5zaXRpb24pOworICAgICAgICB9IGVsc2UgaWYgKENT
U1Byb3BlcnR5QW5pbWF0aW9uOjpwcm9wZXJ0aWVzRXF1YWwocHJvcGVydHksICZwcmV2aW91c2x5
UnVubmluZ1RyYW5zaXRpb24tPnJldmVyc2luZ0FkanVzdGVkU3RhcnRTdHlsZSgpLCAmYWZ0ZXJD
aGFuZ2VTdHlsZSkpIHsKKyAgICAgICAgICAgIC8vIDMuIE90aGVyd2lzZSwgaWYgdGhlIHJldmVy
c2luZy1hZGp1c3RlZCBzdGFydCB2YWx1ZSBvZiB0aGUgcnVubmluZyB0cmFuc2l0aW9uIGlzIHRo
ZSBzYW1lIGFzIHRoZSB2YWx1ZSBvZiB0aGUgcHJvcGVydHkgaW4gdGhlIGFmdGVyLWNoYW5nZQor
ICAgICAgICAgICAgLy8gICAgc3R5bGUgKHNlZSB0aGUgc2VjdGlvbiBvbiByZXZlcnNpbmcgb2Yg
dHJhbnNpdGlvbnMgZm9yIHdoeSB0aGVzZSBjYXNlIGV4aXN0cyksIGltcGxlbWVudGF0aW9ucyBt
dXN0IGNhbmNlbCB0aGUgcnVubmluZyB0cmFuc2l0aW9uCisgICAgICAgICAgICBjYW5jZWxEZWNs
YXJhdGl2ZUFuaW1hdGlvbigqcHJldmlvdXNseVJ1bm5pbmdUcmFuc2l0aW9uKTsKKworICAgICAg
ICAgICAgLy8gYW5kIHN0YXJ0IGEgbmV3IHRyYW5zaXRpb24gd2hvc2U6CisgICAgICAgICAgICAv
LyAgIC0gcmV2ZXJzaW5nLWFkanVzdGVkIHN0YXJ0IHZhbHVlIGlzIHRoZSBlbmQgdmFsdWUgb2Yg
dGhlIHJ1bm5pbmcgdHJhbnNpdGlvbiwKKyAgICAgICAgICAgIC8vICAgLSByZXZlcnNpbmcgc2hv
cnRlbmluZyBmYWN0b3IgaXMgdGhlIGFic29sdXRlIHZhbHVlLCBjbGFtcGVkIHRvIHRoZSByYW5n
ZSBbMCwgMV0sIG9mIHRoZSBzdW0gb2Y6CisgICAgICAgICAgICAvLyAgICAgICAxLiB0aGUgb3V0
cHV0IG9mIHRoZSB0aW1pbmcgZnVuY3Rpb24gb2YgdGhlIG9sZCB0cmFuc2l0aW9uIGF0IHRoZSB0
aW1lIG9mIHRoZSBzdHlsZSBjaGFuZ2UgZXZlbnQsIHRpbWVzIHRoZSByZXZlcnNpbmcgc2hvcnRl
bmluZyBmYWN0b3Igb2YgdGhlIG9sZCB0cmFuc2l0aW9uCisgICAgICAgICAgICAvLyAgICAgICAy
LiAxIG1pbnVzIHRoZSByZXZlcnNpbmcgc2hvcnRlbmluZyBmYWN0b3Igb2YgdGhlIG9sZCB0cmFu
c2l0aW9uLgorICAgICAgICAgICAgLy8gICAtIHN0YXJ0IHRpbWUgaXMgdGhlIHRpbWUgb2YgdGhl
IHN0eWxlIGNoYW5nZSBldmVudCBwbHVzOgorICAgICAgICAgICAgLy8gICAgICAgMS4gaWYgdGhl
IG1hdGNoaW5nIHRyYW5zaXRpb24gZGVsYXkgaXMgbm9ubmVnYXRpdmUsIHRoZSBtYXRjaGluZyB0
cmFuc2l0aW9uIGRlbGF5LCBvcgorICAgICAgICAgICAgLy8gICAgICAgMi4gaWYgdGhlIG1hdGNo
aW5nIHRyYW5zaXRpb24gZGVsYXkgaXMgbmVnYXRpdmUsIHRoZSBwcm9kdWN0IG9mIHRoZSBuZXcg
dHJhbnNpdGlvbuKAmXMgcmV2ZXJzaW5nIHNob3J0ZW5pbmcgZmFjdG9yIGFuZCB0aGUgbWF0Y2hp
bmcgdHJhbnNpdGlvbiBkZWxheSwKKyAgICAgICAgICAgIC8vICAgLSBlbmQgdGltZSBpcyB0aGUg
c3RhcnQgdGltZSBwbHVzIHRoZSBwcm9kdWN0IG9mIHRoZSBtYXRjaGluZyB0cmFuc2l0aW9uIGR1
cmF0aW9uIGFuZCB0aGUgbmV3IHRyYW5zaXRpb27igJlzIHJldmVyc2luZyBzaG9ydGVuaW5nIGZh
Y3RvciwKKyAgICAgICAgICAgIC8vICAgLSBzdGFydCB2YWx1ZSBpcyB0aGUgY3VycmVudCB2YWx1
ZSBvZiB0aGUgcHJvcGVydHkgaW4gdGhlIHJ1bm5pbmcgdHJhbnNpdGlvbiwKKyAgICAgICAgICAg
IC8vICAgLSBlbmQgdmFsdWUgaXMgdGhlIHZhbHVlIG9mIHRoZSBwcm9wZXJ0eSBpbiB0aGUgYWZ0
ZXItY2hhbmdlIHN0eWxlCisgICAgICAgICAgICBhdXRvJiByZXZlcnNpbmdBZGp1c3RlZFN0YXJ0
U3R5bGUgPSBwcmV2aW91c2x5UnVubmluZ1RyYW5zaXRpb24tPnRhcmdldFN0eWxlKCk7CisgICAg
ICAgICAgICBkb3VibGUgdHJhbnNmb3JtZWRQcm9ncmVzcyA9IDE7CisgICAgICAgICAgICBpZiAo
YXV0byogZWZmZWN0ID0gcHJldmlvdXNseVJ1bm5pbmdUcmFuc2l0aW9uLT5lZmZlY3QoKSkgewor
ICAgICAgICAgICAgICAgIGlmIChhdXRvIGNvbXB1dGVkVGltaW5nUHJvZ3Jlc3MgPSBlZmZlY3Qt
PmdldENvbXB1dGVkVGltaW5nKCkucHJvZ3Jlc3MpCisgICAgICAgICAgICAgICAgICAgIHRyYW5z
Zm9ybWVkUHJvZ3Jlc3MgPSAqY29tcHV0ZWRUaW1pbmdQcm9ncmVzczsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGF1dG8gcmV2ZXJzaW5nU2hvcnRlbmluZ0ZhY3RvciA9IHN0ZDo6bWF4KHN0
ZDo6bWluKCgodHJhbnNmb3JtZWRQcm9ncmVzcyAqIHByZXZpb3VzbHlSdW5uaW5nVHJhbnNpdGlv
bi0+cmV2ZXJzaW5nU2hvcnRlbmluZ0ZhY3RvcigpKSArICgxIC0gcHJldmlvdXNseVJ1bm5pbmdU
cmFuc2l0aW9uLT5yZXZlcnNpbmdTaG9ydGVuaW5nRmFjdG9yKCkpKSwgMS4wKSwgMC4wKTsKKyAg
ICAgICAgICAgIGF1dG8gZGVsYXkgPSBtYXRjaGluZ0JhY2tpbmdBbmltYXRpb24tPmRlbGF5KCkg
PCAwID8gU2Vjb25kcyhtYXRjaGluZ0JhY2tpbmdBbmltYXRpb24tPmRlbGF5KCkpICogcmV2ZXJz
aW5nU2hvcnRlbmluZ0ZhY3RvciA6IFNlY29uZHMobWF0Y2hpbmdCYWNraW5nQW5pbWF0aW9uLT5k
ZWxheSgpKTsKKyAgICAgICAgICAgIGF1dG8gZHVyYXRpb24gPSBTZWNvbmRzKG1hdGNoaW5nQmFj
a2luZ0FuaW1hdGlvbi0+ZHVyYXRpb24oKSkgKiByZXZlcnNpbmdTaG9ydGVuaW5nRmFjdG9yOwor
CisgICAgICAgICAgICBlbnN1cmVSdW5uaW5nVHJhbnNpdGlvbnNCeVByb3BlcnR5KGVsZW1lbnQp
LnNldChwcm9wZXJ0eSwgQ1NTVHJhbnNpdGlvbjo6Y3JlYXRlKGVsZW1lbnQsIHByb3BlcnR5LCBn
ZW5lcmF0aW9uVGltZSwgKm1hdGNoaW5nQmFja2luZ0FuaW1hdGlvbiwgJnByZXZpb3VzbHlSdW5u
aW5nVHJhbnNpdGlvbkN1cnJlbnRTdHlsZSwgYWZ0ZXJDaGFuZ2VTdHlsZSwgZGVsYXksIGR1cmF0
aW9uLCByZXZlcnNpbmdBZGp1c3RlZFN0YXJ0U3R5bGUsIHJldmVyc2luZ1Nob3J0ZW5pbmdGYWN0
b3IpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIDQuIE90aGVyd2lzZSwgaW1w
bGVtZW50YXRpb25zIG11c3QgY2FuY2VsIHRoZSBydW5uaW5nIHRyYW5zaXRpb24KKyAgICAgICAg
ICAgIGNhbmNlbERlY2xhcmF0aXZlQW5pbWF0aW9uKCpwcmV2aW91c2x5UnVubmluZ1RyYW5zaXRp
b24pOworCisgICAgICAgICAgICAvLyBhbmQgc3RhcnQgYSBuZXcgdHJhbnNpdGlvbiB3aG9zZToK
KyAgICAgICAgICAgIC8vICAgLSBzdGFydCB0aW1lIGlzIHRoZSB0aW1lIG9mIHRoZSBzdHlsZSBj
aGFuZ2UgZXZlbnQgcGx1cyB0aGUgbWF0Y2hpbmcgdHJhbnNpdGlvbiBkZWxheSwKKyAgICAgICAg
ICAgIC8vICAgLSBlbmQgdGltZSBpcyB0aGUgc3RhcnQgdGltZSBwbHVzIHRoZSBtYXRjaGluZyB0
cmFuc2l0aW9uIGR1cmF0aW9uLAorICAgICAgICAgICAgLy8gICAtIHN0YXJ0IHZhbHVlIGlzIHRo
ZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBwcm9wZXJ0eSBpbiB0aGUgcnVubmluZyB0cmFuc2l0aW9u
LAorICAgICAgICAgICAgLy8gICAtIGVuZCB2YWx1ZSBpcyB0aGUgdmFsdWUgb2YgdGhlIHByb3Bl
cnR5IGluIHRoZSBhZnRlci1jaGFuZ2Ugc3R5bGUsCisgICAgICAgICAgICAvLyAgIC0gcmV2ZXJz
aW5nLWFkanVzdGVkIHN0YXJ0IHZhbHVlIGlzIHRoZSBzYW1lIGFzIHRoZSBzdGFydCB2YWx1ZSwg
YW5kCisgICAgICAgICAgICAvLyAgIC0gcmV2ZXJzaW5nIHNob3J0ZW5pbmcgZmFjdG9yIGlzIDEu
CisgICAgICAgICAgICBhdXRvIGRlbGF5ID0gU2Vjb25kcyhtYXRjaGluZ0JhY2tpbmdBbmltYXRp
b24tPmRlbGF5KCkpOworICAgICAgICAgICAgYXV0byBkdXJhdGlvbiA9IFNlY29uZHMobWF0Y2hp
bmdCYWNraW5nQW5pbWF0aW9uLT5kdXJhdGlvbigpKTsKKyAgICAgICAgICAgIGF1dG8mIHJldmVy
c2luZ0FkanVzdGVkU3RhcnRTdHlsZSA9IGN1cnJlbnRTdHlsZTsKKyAgICAgICAgICAgIGF1dG8g
cmV2ZXJzaW5nU2hvcnRlbmluZ0ZhY3RvciA9IDE7CisgICAgICAgICAgICBlbnN1cmVSdW5uaW5n
VHJhbnNpdGlvbnNCeVByb3BlcnR5KGVsZW1lbnQpLnNldChwcm9wZXJ0eSwgQ1NTVHJhbnNpdGlv
bjo6Y3JlYXRlKGVsZW1lbnQsIHByb3BlcnR5LCBnZW5lcmF0aW9uVGltZSwgKm1hdGNoaW5nQmFj
a2luZ0FuaW1hdGlvbiwgJnByZXZpb3VzbHlSdW5uaW5nVHJhbnNpdGlvbkN1cnJlbnRTdHlsZSwg
YWZ0ZXJDaGFuZ2VTdHlsZSwgZGVsYXksIGR1cmF0aW9uLCByZXZlcnNpbmdBZGp1c3RlZFN0YXJ0
U3R5bGUsIHJldmVyc2luZ1Nob3J0ZW5pbmdGYWN0b3IpKTsKKyAgICAgICAgfQorICAgIH0KK30K
Kwogdm9pZCBBbmltYXRpb25UaW1lbGluZTo6dXBkYXRlQ1NTVHJhbnNpdGlvbnNGb3JFbGVtZW50
KEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFJlbmRlclN0eWxlJiBjdXJyZW50U3R5bGUsIGNvbnN0
IFJlbmRlclN0eWxlJiBhZnRlckNoYW5nZVN0eWxlKQogewogICAgIC8vIEluIGNhc2UgdGhpcyBl
bGVtZW50IGlzIG5ld2x5IGdldHRpbmcgYSAiZGlzcGxheTogbm9uZSIgd2UgbmVlZCB0byBjYW5j
ZWwgYWxsIG9mIGl0cyB0cmFuc2l0aW9ucyBhbmQgZGlzcmVnYXJkIG5ldyBvbmVzLgpAQCAtMzcx
LDEyOSArNTE4LDI0IEBAIHZvaWQgQW5pbWF0aW9uVGltZWxpbmU6OnVwZGF0ZUNTU1RyYW5zaXRp
b25zRm9yRWxlbWVudChFbGVtZW50JiBlbGVtZW50LCBjb25zdCBSCiAKICAgICBhdXRvIGdlbmVy
YXRpb25UaW1lID0gTW9ub3RvbmljVGltZTo6bm93KCk7CiAKLSAgICBhdXRvIG51bWJlck9mUHJv
cGVydGllcyA9IENTU1Byb3BlcnR5QW5pbWF0aW9uOjpnZXROdW1Qcm9wZXJ0aWVzKCk7Ci0gICAg
Zm9yIChpbnQgcHJvcGVydHlJbmRleCA9IDA7IHByb3BlcnR5SW5kZXggPCBudW1iZXJPZlByb3Bl
cnRpZXM7ICsrcHJvcGVydHlJbmRleCkgewotICAgICAgICBPcHRpb25hbDxib29sPiBpc1Nob3J0
aGFuZDsKLSAgICAgICAgYXV0byBwcm9wZXJ0eSA9IENTU1Byb3BlcnR5QW5pbWF0aW9uOjpnZXRQ
cm9wZXJ0eUF0SW5kZXgocHJvcGVydHlJbmRleCwgaXNTaG9ydGhhbmQpOwotICAgICAgICBpZiAo
aXNTaG9ydGhhbmQgJiYgKmlzU2hvcnRoYW5kKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAg
ICAgICAgY29uc3QgQW5pbWF0aW9uKiBtYXRjaGluZ0JhY2tpbmdBbmltYXRpb24gPSBudWxscHRy
OwotICAgICAgICBpZiAoYXV0byogdHJhbnNpdGlvbnMgPSBhZnRlckNoYW5nZVN0eWxlLnRyYW5z
aXRpb25zKCkpIHsKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdHJhbnNpdGlv
bnMtPnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICAgICAgYXV0byYgYmFja2luZ0FuaW1hdGlv
biA9IHRyYW5zaXRpb25zLT5hbmltYXRpb24oaSk7Ci0gICAgICAgICAgICAgICAgaWYgKHRyYW5z
aXRpb25NYXRjaGVzUHJvcGVydHkoYmFja2luZ0FuaW1hdGlvbiwgcHJvcGVydHkpKQotICAgICAg
ICAgICAgICAgICAgICBtYXRjaGluZ0JhY2tpbmdBbmltYXRpb24gPSAmYmFja2luZ0FuaW1hdGlv
bjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIC8vIGh0dHBzOi8vZHJhZnRz
LmNzc3dnLm9yZy9jc3MtdHJhbnNpdGlvbnMtMS8jYmVmb3JlLWNoYW5nZS1zdHlsZQotICAgICAg
ICAvLyBEZWZpbmUgdGhlIGJlZm9yZS1jaGFuZ2Ugc3R5bGUgYXMgdGhlIGNvbXB1dGVkIHZhbHVl
cyBvZiBhbGwgcHJvcGVydGllcyBvbiB0aGUgZWxlbWVudCBhcyBvZiB0aGUgcHJldmlvdXMgc3R5
bGUgY2hhbmdlIGV2ZW50LCBleGNlcHQgd2l0aAotICAgICAgICAvLyBhbnkgc3R5bGVzIGRlcml2
ZWQgZnJvbSBkZWNsYXJhdGl2ZSBhbmltYXRpb25zIHN1Y2ggYXMgQ1NTIFRyYW5zaXRpb25zLCBD
U1MgQW5pbWF0aW9ucywgYW5kIFNNSUwgQW5pbWF0aW9ucyB1cGRhdGVkIHRvIHRoZSBjdXJyZW50
IHRpbWUuCi0gICAgICAgIGF1dG8gZXhpc3RpbmdBbmltYXRpb24gPSBjc3NBbmltYXRpb25Gb3JF
bGVtZW50QW5kUHJvcGVydHkoZWxlbWVudCwgcHJvcGVydHkpOwotICAgICAgICBjb25zdCBhdXRv
JiBiZWZvcmVDaGFuZ2VTdHlsZSA9IGV4aXN0aW5nQW5pbWF0aW9uID8gZG93bmNhc3Q8Q1NTQW5p
bWF0aW9uPihleGlzdGluZ0FuaW1hdGlvbi5nZXQoKSktPnVuYW5pbWF0ZWRTdHlsZSgpIDogY3Vy
cmVudFN0eWxlOwotCi0gICAgICAgIGlmICghcnVubmluZ1RyYW5zaXRpb25zQnlQcm9wZXJ0eS5j
b250YWlucyhwcm9wZXJ0eSkKLSAgICAgICAgICAgICYmICFDU1NQcm9wZXJ0eUFuaW1hdGlvbjo6
cHJvcGVydGllc0VxdWFsKHByb3BlcnR5LCAmYmVmb3JlQ2hhbmdlU3R5bGUsICZhZnRlckNoYW5n
ZVN0eWxlKQotICAgICAgICAgICAgJiYgQ1NTUHJvcGVydHlBbmltYXRpb246OmNhblByb3BlcnR5
QmVJbnRlcnBvbGF0ZWQocHJvcGVydHksICZiZWZvcmVDaGFuZ2VTdHlsZSwgJmFmdGVyQ2hhbmdl
U3R5bGUpCi0gICAgICAgICAgICAmJiAhcHJvcGVydHlJblN0eWxlTWF0Y2hlc1ZhbHVlRm9yVHJh
bnNpdGlvbkluTWFwKHByb3BlcnR5LCBhZnRlckNoYW5nZVN0eWxlLCBjb21wbGV0ZWRUcmFuc2l0
aW9uc0J5UHJvcGVydHkpCi0gICAgICAgICAgICAmJiBtYXRjaGluZ0JhY2tpbmdBbmltYXRpb24g
JiYgdHJhbnNpdGlvbkNvbWJpbmVkRHVyYXRpb24obWF0Y2hpbmdCYWNraW5nQW5pbWF0aW9uKSA+
IDApIHsKLSAgICAgICAgICAgIC8vIDEuIElmIGFsbCBvZiB0aGUgZm9sbG93aW5nIGFyZSB0cnVl
OgotICAgICAgICAgICAgLy8gICAtIHRoZSBlbGVtZW50IGRvZXMgbm90IGhhdmUgYSBydW5uaW5n
IHRyYW5zaXRpb24gZm9yIHRoZSBwcm9wZXJ0eSwKLSAgICAgICAgICAgIC8vICAgLSB0aGUgYmVm
b3JlLWNoYW5nZSBzdHlsZSBpcyBkaWZmZXJlbnQgZnJvbSBhbmQgY2FuIGJlIGludGVycG9sYXRl
ZCB3aXRoIHRoZSBhZnRlci1jaGFuZ2Ugc3R5bGUgZm9yIHRoYXQgcHJvcGVydHksCi0gICAgICAg
ICAgICAvLyAgIC0gdGhlIGVsZW1lbnQgZG9lcyBub3QgaGF2ZSBhIGNvbXBsZXRlZCB0cmFuc2l0
aW9uIGZvciB0aGUgcHJvcGVydHkgb3IgdGhlIGVuZCB2YWx1ZSBvZiB0aGUgY29tcGxldGVkIHRy
YW5zaXRpb24gaXMgZGlmZmVyZW50IGZyb20gdGhlIGFmdGVyLWNoYW5nZSBzdHlsZSBmb3IgdGhl
IHByb3BlcnR5LAotICAgICAgICAgICAgLy8gICAtIHRoZXJlIGlzIGEgbWF0Y2hpbmcgdHJhbnNp
dGlvbi1wcm9wZXJ0eSB2YWx1ZSwgYW5kCi0gICAgICAgICAgICAvLyAgIC0gdGhlIGNvbWJpbmVk
IGR1cmF0aW9uIGlzIGdyZWF0ZXIgdGhhbiAwcywKLQotICAgICAgICAgICAgLy8gdGhlbiBpbXBs
ZW1lbnRhdGlvbnMgbXVzdCByZW1vdmUgdGhlIGNvbXBsZXRlZCB0cmFuc2l0aW9uIChpZiBwcmVz
ZW50KSBmcm9tIHRoZSBzZXQgb2YgY29tcGxldGVkIHRyYW5zaXRpb25zCi0gICAgICAgICAgICBj
b21wbGV0ZWRUcmFuc2l0aW9uc0J5UHJvcGVydHkucmVtb3ZlKHByb3BlcnR5KTsKLQotICAgICAg
ICAgICAgLy8gYW5kIHN0YXJ0IGEgdHJhbnNpdGlvbiB3aG9zZToKLSAgICAgICAgICAgIC8vICAg
LSBzdGFydCB0aW1lIGlzIHRoZSB0aW1lIG9mIHRoZSBzdHlsZSBjaGFuZ2UgZXZlbnQgcGx1cyB0
aGUgbWF0Y2hpbmcgdHJhbnNpdGlvbiBkZWxheSwKLSAgICAgICAgICAgIC8vICAgLSBlbmQgdGlt
ZSBpcyB0aGUgc3RhcnQgdGltZSBwbHVzIHRoZSBtYXRjaGluZyB0cmFuc2l0aW9uIGR1cmF0aW9u
LAotICAgICAgICAgICAgLy8gICAtIHN0YXJ0IHZhbHVlIGlzIHRoZSB2YWx1ZSBvZiB0aGUgdHJh
bnNpdGlvbmluZyBwcm9wZXJ0eSBpbiB0aGUgYmVmb3JlLWNoYW5nZSBzdHlsZSwKLSAgICAgICAg
ICAgIC8vICAgLSBlbmQgdmFsdWUgaXMgdGhlIHZhbHVlIG9mIHRoZSB0cmFuc2l0aW9uaW5nIHBy
b3BlcnR5IGluIHRoZSBhZnRlci1jaGFuZ2Ugc3R5bGUsCi0gICAgICAgICAgICAvLyAgIC0gcmV2
ZXJzaW5nLWFkanVzdGVkIHN0YXJ0IHZhbHVlIGlzIHRoZSBzYW1lIGFzIHRoZSBzdGFydCB2YWx1
ZSwgYW5kCi0gICAgICAgICAgICAvLyAgIC0gcmV2ZXJzaW5nIHNob3J0ZW5pbmcgZmFjdG9yIGlz
IDEuCi0gICAgICAgICAgICBhdXRvIGRlbGF5ID0gU2Vjb25kcyhtYXRjaGluZ0JhY2tpbmdBbmlt
YXRpb24tPmRlbGF5KCkpOwotICAgICAgICAgICAgYXV0byBkdXJhdGlvbiA9IFNlY29uZHMobWF0
Y2hpbmdCYWNraW5nQW5pbWF0aW9uLT5kdXJhdGlvbigpKTsKLSAgICAgICAgICAgIGF1dG8mIHJl
dmVyc2luZ0FkanVzdGVkU3RhcnRTdHlsZSA9IGJlZm9yZUNoYW5nZVN0eWxlOwotICAgICAgICAg
ICAgYXV0byByZXZlcnNpbmdTaG9ydGVuaW5nRmFjdG9yID0gMTsKLSAgICAgICAgICAgIHJ1bm5p
bmdUcmFuc2l0aW9uc0J5UHJvcGVydHkuc2V0KHByb3BlcnR5LCBDU1NUcmFuc2l0aW9uOjpjcmVh
dGUoZWxlbWVudCwgcHJvcGVydHksIGdlbmVyYXRpb25UaW1lLCAqbWF0Y2hpbmdCYWNraW5nQW5p
bWF0aW9uLCAmYmVmb3JlQ2hhbmdlU3R5bGUsIGFmdGVyQ2hhbmdlU3R5bGUsIGRlbGF5LCBkdXJh
dGlvbiwgcmV2ZXJzaW5nQWRqdXN0ZWRTdGFydFN0eWxlLCByZXZlcnNpbmdTaG9ydGVuaW5nRmFj
dG9yKSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoY29tcGxldGVkVHJhbnNpdGlvbnNCeVByb3BlcnR5
LmNvbnRhaW5zKHByb3BlcnR5KSAmJiAhcHJvcGVydHlJblN0eWxlTWF0Y2hlc1ZhbHVlRm9yVHJh
bnNpdGlvbkluTWFwKHByb3BlcnR5LCBhZnRlckNoYW5nZVN0eWxlLCBjb21wbGV0ZWRUcmFuc2l0
aW9uc0J5UHJvcGVydHkpKSB7Ci0gICAgICAgICAgICAvLyAyLiBPdGhlcndpc2UsIGlmIHRoZSBl
bGVtZW50IGhhcyBhIGNvbXBsZXRlZCB0cmFuc2l0aW9uIGZvciB0aGUgcHJvcGVydHkgYW5kIHRo
ZSBlbmQgdmFsdWUgb2YgdGhlIGNvbXBsZXRlZCB0cmFuc2l0aW9uIGlzIGRpZmZlcmVudCBmcm9t
Ci0gICAgICAgICAgICAvLyAgICB0aGUgYWZ0ZXItY2hhbmdlIHN0eWxlIGZvciB0aGUgcHJvcGVy
dHksIHRoZW4gaW1wbGVtZW50YXRpb25zIG11c3QgcmVtb3ZlIHRoZSBjb21wbGV0ZWQgdHJhbnNp
dGlvbiBmcm9tIHRoZSBzZXQgb2YgY29tcGxldGVkIHRyYW5zaXRpb25zLgotICAgICAgICAgICAg
Y29tcGxldGVkVHJhbnNpdGlvbnNCeVByb3BlcnR5LnJlbW92ZShwcm9wZXJ0eSk7Ci0gICAgICAg
IH0KLQotICAgICAgICBib29sIGhhc1J1bm5pbmdUcmFuc2l0aW9uID0gcnVubmluZ1RyYW5zaXRp
b25zQnlQcm9wZXJ0eS5jb250YWlucyhwcm9wZXJ0eSk7Ci0gICAgICAgIGlmICgoaGFzUnVubmlu
Z1RyYW5zaXRpb24gfHwgY29tcGxldGVkVHJhbnNpdGlvbnNCeVByb3BlcnR5LmNvbnRhaW5zKHBy
b3BlcnR5KSkgJiYgIW1hdGNoaW5nQmFja2luZ0FuaW1hdGlvbikgewotICAgICAgICAgICAgLy8g
My4gSWYgdGhlIGVsZW1lbnQgaGFzIGEgcnVubmluZyB0cmFuc2l0aW9uIG9yIGNvbXBsZXRlZCB0
cmFuc2l0aW9uIGZvciB0aGUgcHJvcGVydHksIGFuZCB0aGVyZSBpcyBub3QgYSBtYXRjaGluZyB0
cmFuc2l0aW9uLXByb3BlcnR5Ci0gICAgICAgICAgICAvLyAgICB2YWx1ZSwgdGhlbiBpbXBsZW1l
bnRhdGlvbnMgbXVzdCBjYW5jZWwgdGhlIHJ1bm5pbmcgdHJhbnNpdGlvbiBvciByZW1vdmUgdGhl
IGNvbXBsZXRlZCB0cmFuc2l0aW9uIGZyb20gdGhlIHNldCBvZiBjb21wbGV0ZWQgdHJhbnNpdGlv
bnMuCi0gICAgICAgICAgICBpZiAoaGFzUnVubmluZ1RyYW5zaXRpb24pCi0gICAgICAgICAgICAg
ICAgcnVubmluZ1RyYW5zaXRpb25zQnlQcm9wZXJ0eS50YWtlKHByb3BlcnR5KS0+Y2FuY2VsKCk7
Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgY29tcGxldGVkVHJhbnNpdGlvbnNC
eVByb3BlcnR5LnJlbW92ZShwcm9wZXJ0eSk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAobWF0
Y2hpbmdCYWNraW5nQW5pbWF0aW9uICYmIHJ1bm5pbmdUcmFuc2l0aW9uc0J5UHJvcGVydHkuY29u
dGFpbnMocHJvcGVydHkpICYmICFwcm9wZXJ0eUluU3R5bGVNYXRjaGVzVmFsdWVGb3JUcmFuc2l0
aW9uSW5NYXAocHJvcGVydHksIGFmdGVyQ2hhbmdlU3R5bGUsIHJ1bm5pbmdUcmFuc2l0aW9uc0J5
UHJvcGVydHkpKSB7Ci0gICAgICAgICAgICBhdXRvIHByZXZpb3VzbHlSdW5uaW5nVHJhbnNpdGlv
biA9IHJ1bm5pbmdUcmFuc2l0aW9uc0J5UHJvcGVydHkudGFrZShwcm9wZXJ0eSk7Ci0gICAgICAg
ICAgICBhdXRvJiBwcmV2aW91c2x5UnVubmluZ1RyYW5zaXRpb25DdXJyZW50U3R5bGUgPSBwcmV2
aW91c2x5UnVubmluZ1RyYW5zaXRpb24tPmN1cnJlbnRTdHlsZSgpOwotICAgICAgICAgICAgLy8g
NC4gSWYgdGhlIGVsZW1lbnQgaGFzIGEgcnVubmluZyB0cmFuc2l0aW9uIGZvciB0aGUgcHJvcGVy
dHksIHRoZXJlIGlzIGEgbWF0Y2hpbmcgdHJhbnNpdGlvbi1wcm9wZXJ0eSB2YWx1ZSwgYW5kIHRo
ZSBlbmQgdmFsdWUgb2YgdGhlIHJ1bm5pbmcKLSAgICAgICAgICAgIC8vICAgIHRyYW5zaXRpb24g
aXMgbm90IGVxdWFsIHRvIHRoZSB2YWx1ZSBvZiB0aGUgcHJvcGVydHkgaW4gdGhlIGFmdGVyLWNo
YW5nZSBzdHlsZSwgdGhlbjoKLSAgICAgICAgICAgIGlmIChDU1NQcm9wZXJ0eUFuaW1hdGlvbjo6
cHJvcGVydGllc0VxdWFsKHByb3BlcnR5LCAmcHJldmlvdXNseVJ1bm5pbmdUcmFuc2l0aW9uQ3Vy
cmVudFN0eWxlLCAmYWZ0ZXJDaGFuZ2VTdHlsZSkgfHwgIUNTU1Byb3BlcnR5QW5pbWF0aW9uOjpj
YW5Qcm9wZXJ0eUJlSW50ZXJwb2xhdGVkKHByb3BlcnR5LCAmY3VycmVudFN0eWxlLCAmYWZ0ZXJD
aGFuZ2VTdHlsZSkpIHsKLSAgICAgICAgICAgICAgICAvLyAxLiBJZiB0aGUgY3VycmVudCB2YWx1
ZSBvZiB0aGUgcHJvcGVydHkgaW4gdGhlIHJ1bm5pbmcgdHJhbnNpdGlvbiBpcyBlcXVhbCB0byB0
aGUgdmFsdWUgb2YgdGhlIHByb3BlcnR5IGluIHRoZSBhZnRlci1jaGFuZ2Ugc3R5bGUsCi0gICAg
ICAgICAgICAgICAgLy8gICAgb3IgaWYgdGhlc2UgdHdvIHZhbHVlcyBjYW5ub3QgYmUgaW50ZXJw
b2xhdGVkLCB0aGVuIGltcGxlbWVudGF0aW9ucyBtdXN0IGNhbmNlbCB0aGUgcnVubmluZyB0cmFu
c2l0aW9uLgotICAgICAgICAgICAgICAgIGNhbmNlbERlY2xhcmF0aXZlQW5pbWF0aW9uKCpwcmV2
aW91c2x5UnVubmluZ1RyYW5zaXRpb24pOwotICAgICAgICAgICAgfSBlbHNlIGlmICh0cmFuc2l0
aW9uQ29tYmluZWREdXJhdGlvbihtYXRjaGluZ0JhY2tpbmdBbmltYXRpb24pIDw9IDAuMCB8fCAh
Q1NTUHJvcGVydHlBbmltYXRpb246OmNhblByb3BlcnR5QmVJbnRlcnBvbGF0ZWQocHJvcGVydHks
ICZwcmV2aW91c2x5UnVubmluZ1RyYW5zaXRpb25DdXJyZW50U3R5bGUsICZhZnRlckNoYW5nZVN0
eWxlKSkgewotICAgICAgICAgICAgICAgIC8vIDIuIE90aGVyd2lzZSwgaWYgdGhlIGNvbWJpbmVk
IGR1cmF0aW9uIGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byAwcywgb3IgaWYgdGhlIGN1cnJlbnQg
dmFsdWUgb2YgdGhlIHByb3BlcnR5IGluIHRoZSBydW5uaW5nIHRyYW5zaXRpb24KLSAgICAgICAg
ICAgICAgICAvLyAgICBjYW5ub3QgYmUgaW50ZXJwb2xhdGVkIHdpdGggdGhlIHZhbHVlIG9mIHRo
ZSBwcm9wZXJ0eSBpbiB0aGUgYWZ0ZXItY2hhbmdlIHN0eWxlLCB0aGVuIGltcGxlbWVudGF0aW9u
cyBtdXN0IGNhbmNlbCB0aGUgcnVubmluZyB0cmFuc2l0aW9uLgotICAgICAgICAgICAgICAgIGNh
bmNlbERlY2xhcmF0aXZlQW5pbWF0aW9uKCpwcmV2aW91c2x5UnVubmluZ1RyYW5zaXRpb24pOwot
ICAgICAgICAgICAgfSBlbHNlIGlmIChDU1NQcm9wZXJ0eUFuaW1hdGlvbjo6cHJvcGVydGllc0Vx
dWFsKHByb3BlcnR5LCAmcHJldmlvdXNseVJ1bm5pbmdUcmFuc2l0aW9uLT5yZXZlcnNpbmdBZGp1
c3RlZFN0YXJ0U3R5bGUoKSwgJmFmdGVyQ2hhbmdlU3R5bGUpKSB7Ci0gICAgICAgICAgICAgICAg
Ly8gMy4gT3RoZXJ3aXNlLCBpZiB0aGUgcmV2ZXJzaW5nLWFkanVzdGVkIHN0YXJ0IHZhbHVlIG9m
IHRoZSBydW5uaW5nIHRyYW5zaXRpb24gaXMgdGhlIHNhbWUgYXMgdGhlIHZhbHVlIG9mIHRoZSBw
cm9wZXJ0eSBpbiB0aGUgYWZ0ZXItY2hhbmdlCi0gICAgICAgICAgICAgICAgLy8gICAgc3R5bGUg
KHNlZSB0aGUgc2VjdGlvbiBvbiByZXZlcnNpbmcgb2YgdHJhbnNpdGlvbnMgZm9yIHdoeSB0aGVz
ZSBjYXNlIGV4aXN0cyksIGltcGxlbWVudGF0aW9ucyBtdXN0IGNhbmNlbCB0aGUgcnVubmluZyB0
cmFuc2l0aW9uCi0gICAgICAgICAgICAgICAgY2FuY2VsRGVjbGFyYXRpdmVBbmltYXRpb24oKnBy
ZXZpb3VzbHlSdW5uaW5nVHJhbnNpdGlvbik7Ci0KLSAgICAgICAgICAgICAgICAvLyBhbmQgc3Rh
cnQgYSBuZXcgdHJhbnNpdGlvbiB3aG9zZToKLSAgICAgICAgICAgICAgICAvLyAgIC0gcmV2ZXJz
aW5nLWFkanVzdGVkIHN0YXJ0IHZhbHVlIGlzIHRoZSBlbmQgdmFsdWUgb2YgdGhlIHJ1bm5pbmcg
dHJhbnNpdGlvbiwKLSAgICAgICAgICAgICAgICAvLyAgIC0gcmV2ZXJzaW5nIHNob3J0ZW5pbmcg
ZmFjdG9yIGlzIHRoZSBhYnNvbHV0ZSB2YWx1ZSwgY2xhbXBlZCB0byB0aGUgcmFuZ2UgWzAsIDFd
LCBvZiB0aGUgc3VtIG9mOgotICAgICAgICAgICAgICAgIC8vICAgICAgIDEuIHRoZSBvdXRwdXQg
b2YgdGhlIHRpbWluZyBmdW5jdGlvbiBvZiB0aGUgb2xkIHRyYW5zaXRpb24gYXQgdGhlIHRpbWUg
b2YgdGhlIHN0eWxlIGNoYW5nZSBldmVudCwgdGltZXMgdGhlIHJldmVyc2luZyBzaG9ydGVuaW5n
IGZhY3RvciBvZiB0aGUgb2xkIHRyYW5zaXRpb24KLSAgICAgICAgICAgICAgICAvLyAgICAgICAy
LiAxIG1pbnVzIHRoZSByZXZlcnNpbmcgc2hvcnRlbmluZyBmYWN0b3Igb2YgdGhlIG9sZCB0cmFu
c2l0aW9uLgotICAgICAgICAgICAgICAgIC8vICAgLSBzdGFydCB0aW1lIGlzIHRoZSB0aW1lIG9m
IHRoZSBzdHlsZSBjaGFuZ2UgZXZlbnQgcGx1czoKLSAgICAgICAgICAgICAgICAvLyAgICAgICAx
LiBpZiB0aGUgbWF0Y2hpbmcgdHJhbnNpdGlvbiBkZWxheSBpcyBub25uZWdhdGl2ZSwgdGhlIG1h
dGNoaW5nIHRyYW5zaXRpb24gZGVsYXksIG9yCi0gICAgICAgICAgICAgICAgLy8gICAgICAgMi4g
aWYgdGhlIG1hdGNoaW5nIHRyYW5zaXRpb24gZGVsYXkgaXMgbmVnYXRpdmUsIHRoZSBwcm9kdWN0
IG9mIHRoZSBuZXcgdHJhbnNpdGlvbuKAmXMgcmV2ZXJzaW5nIHNob3J0ZW5pbmcgZmFjdG9yIGFu
ZCB0aGUgbWF0Y2hpbmcgdHJhbnNpdGlvbiBkZWxheSwKLSAgICAgICAgICAgICAgICAvLyAgIC0g
ZW5kIHRpbWUgaXMgdGhlIHN0YXJ0IHRpbWUgcGx1cyB0aGUgcHJvZHVjdCBvZiB0aGUgbWF0Y2hp
bmcgdHJhbnNpdGlvbiBkdXJhdGlvbiBhbmQgdGhlIG5ldyB0cmFuc2l0aW9u4oCZcyByZXZlcnNp
bmcgc2hvcnRlbmluZyBmYWN0b3IsCi0gICAgICAgICAgICAgICAgLy8gICAtIHN0YXJ0IHZhbHVl
IGlzIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBwcm9wZXJ0eSBpbiB0aGUgcnVubmluZyB0cmFu
c2l0aW9uLAotICAgICAgICAgICAgICAgIC8vICAgLSBlbmQgdmFsdWUgaXMgdGhlIHZhbHVlIG9m
IHRoZSBwcm9wZXJ0eSBpbiB0aGUgYWZ0ZXItY2hhbmdlIHN0eWxlCi0gICAgICAgICAgICAgICAg
YXV0byYgcmV2ZXJzaW5nQWRqdXN0ZWRTdGFydFN0eWxlID0gcHJldmlvdXNseVJ1bm5pbmdUcmFu
c2l0aW9uLT50YXJnZXRTdHlsZSgpOwotICAgICAgICAgICAgICAgIGRvdWJsZSB0cmFuc2Zvcm1l
ZFByb2dyZXNzID0gMTsKLSAgICAgICAgICAgICAgICBpZiAoYXV0byogZWZmZWN0ID0gcHJldmlv
dXNseVJ1bm5pbmdUcmFuc2l0aW9uLT5lZmZlY3QoKSkgewotICAgICAgICAgICAgICAgICAgICBp
ZiAoYXV0byBjb21wdXRlZFRpbWluZ1Byb2dyZXNzID0gZWZmZWN0LT5nZXRDb21wdXRlZFRpbWlu
ZygpLnByb2dyZXNzKQotICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtZWRQcm9ncmVz
cyA9ICpjb21wdXRlZFRpbWluZ1Byb2dyZXNzOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICBhdXRvIHJldmVyc2luZ1Nob3J0ZW5pbmdGYWN0b3IgPSBzdGQ6Om1heChzdGQ6Om1p
bigoKHRyYW5zZm9ybWVkUHJvZ3Jlc3MgKiBwcmV2aW91c2x5UnVubmluZ1RyYW5zaXRpb24tPnJl
dmVyc2luZ1Nob3J0ZW5pbmdGYWN0b3IoKSkgKyAoMSAtIHByZXZpb3VzbHlSdW5uaW5nVHJhbnNp
dGlvbi0+cmV2ZXJzaW5nU2hvcnRlbmluZ0ZhY3RvcigpKSksIDEuMCksIDAuMCk7Ci0gICAgICAg
ICAgICAgICAgYXV0byBkZWxheSA9IG1hdGNoaW5nQmFja2luZ0FuaW1hdGlvbi0+ZGVsYXkoKSA8
IDAgPyBTZWNvbmRzKG1hdGNoaW5nQmFja2luZ0FuaW1hdGlvbi0+ZGVsYXkoKSkgKiByZXZlcnNp
bmdTaG9ydGVuaW5nRmFjdG9yIDogU2Vjb25kcyhtYXRjaGluZ0JhY2tpbmdBbmltYXRpb24tPmRl
bGF5KCkpOwotICAgICAgICAgICAgICAgIGF1dG8gZHVyYXRpb24gPSBTZWNvbmRzKG1hdGNoaW5n
QmFja2luZ0FuaW1hdGlvbi0+ZHVyYXRpb24oKSkgKiByZXZlcnNpbmdTaG9ydGVuaW5nRmFjdG9y
OwotCi0gICAgICAgICAgICAgICAgZW5zdXJlUnVubmluZ1RyYW5zaXRpb25zQnlQcm9wZXJ0eShl
bGVtZW50KS5zZXQocHJvcGVydHksIENTU1RyYW5zaXRpb246OmNyZWF0ZShlbGVtZW50LCBwcm9w
ZXJ0eSwgZ2VuZXJhdGlvblRpbWUsICptYXRjaGluZ0JhY2tpbmdBbmltYXRpb24sICZwcmV2aW91
c2x5UnVubmluZ1RyYW5zaXRpb25DdXJyZW50U3R5bGUsIGFmdGVyQ2hhbmdlU3R5bGUsIGRlbGF5
LCBkdXJhdGlvbiwgcmV2ZXJzaW5nQWRqdXN0ZWRTdGFydFN0eWxlLCByZXZlcnNpbmdTaG9ydGVu
aW5nRmFjdG9yKSk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIC8vIDQu
IE90aGVyd2lzZSwgaW1wbGVtZW50YXRpb25zIG11c3QgY2FuY2VsIHRoZSBydW5uaW5nIHRyYW5z
aXRpb24KLSAgICAgICAgICAgICAgICBjYW5jZWxEZWNsYXJhdGl2ZUFuaW1hdGlvbigqcHJldmlv
dXNseVJ1bm5pbmdUcmFuc2l0aW9uKTsKLQotICAgICAgICAgICAgICAgIC8vIGFuZCBzdGFydCBh
IG5ldyB0cmFuc2l0aW9uIHdob3NlOgotICAgICAgICAgICAgICAgIC8vICAgLSBzdGFydCB0aW1l
IGlzIHRoZSB0aW1lIG9mIHRoZSBzdHlsZSBjaGFuZ2UgZXZlbnQgcGx1cyB0aGUgbWF0Y2hpbmcg
dHJhbnNpdGlvbiBkZWxheSwKLSAgICAgICAgICAgICAgICAvLyAgIC0gZW5kIHRpbWUgaXMgdGhl
IHN0YXJ0IHRpbWUgcGx1cyB0aGUgbWF0Y2hpbmcgdHJhbnNpdGlvbiBkdXJhdGlvbiwKLSAgICAg
ICAgICAgICAgICAvLyAgIC0gc3RhcnQgdmFsdWUgaXMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhl
IHByb3BlcnR5IGluIHRoZSBydW5uaW5nIHRyYW5zaXRpb24sCi0gICAgICAgICAgICAgICAgLy8g
ICAtIGVuZCB2YWx1ZSBpcyB0aGUgdmFsdWUgb2YgdGhlIHByb3BlcnR5IGluIHRoZSBhZnRlci1j
aGFuZ2Ugc3R5bGUsCi0gICAgICAgICAgICAgICAgLy8gICAtIHJldmVyc2luZy1hZGp1c3RlZCBz
dGFydCB2YWx1ZSBpcyB0aGUgc2FtZSBhcyB0aGUgc3RhcnQgdmFsdWUsIGFuZAotICAgICAgICAg
ICAgICAgIC8vICAgLSByZXZlcnNpbmcgc2hvcnRlbmluZyBmYWN0b3IgaXMgMS4KLSAgICAgICAg
ICAgICAgICBhdXRvIGRlbGF5ID0gU2Vjb25kcyhtYXRjaGluZ0JhY2tpbmdBbmltYXRpb24tPmRl
bGF5KCkpOwotICAgICAgICAgICAgICAgIGF1dG8gZHVyYXRpb24gPSBTZWNvbmRzKG1hdGNoaW5n
QmFja2luZ0FuaW1hdGlvbi0+ZHVyYXRpb24oKSk7Ci0gICAgICAgICAgICAgICAgYXV0byYgcmV2
ZXJzaW5nQWRqdXN0ZWRTdGFydFN0eWxlID0gY3VycmVudFN0eWxlOwotICAgICAgICAgICAgICAg
IGF1dG8gcmV2ZXJzaW5nU2hvcnRlbmluZ0ZhY3RvciA9IDE7Ci0gICAgICAgICAgICAgICAgZW5z
dXJlUnVubmluZ1RyYW5zaXRpb25zQnlQcm9wZXJ0eShlbGVtZW50KS5zZXQocHJvcGVydHksIENT
U1RyYW5zaXRpb246OmNyZWF0ZShlbGVtZW50LCBwcm9wZXJ0eSwgZ2VuZXJhdGlvblRpbWUsICpt
YXRjaGluZ0JhY2tpbmdBbmltYXRpb24sICZwcmV2aW91c2x5UnVubmluZ1RyYW5zaXRpb25DdXJy
ZW50U3R5bGUsIGFmdGVyQ2hhbmdlU3R5bGUsIGRlbGF5LCBkdXJhdGlvbiwgcmV2ZXJzaW5nQWRq
dXN0ZWRTdGFydFN0eWxlLCByZXZlcnNpbmdTaG9ydGVuaW5nRmFjdG9yKSk7Ci0gICAgICAgICAg
ICB9CisgICAgLy8gRmlyc3QsIGxldCdzIGNvbXBpbGUgdGhlIGxpc3Qgb2YgYWxsIENTUyBwcm9w
ZXJ0aWVzIGZvdW5kIGluIHRoZSBjdXJyZW50IHN0eWxlIGFuZCB0aGUgYWZ0ZXItY2hhbmdlIHN0
eWxlLgorICAgIGJvb2wgdHJhbnNpdGlvblByb3BlcnRpZXNDb250YWluQWxsID0gZmFsc2U7Cisg
ICAgSGFzaFNldDxDU1NQcm9wZXJ0eUlEPiB0cmFuc2l0aW9uUHJvcGVydGllczsKKyAgICBjb21w
aWxlVHJhbnNpdGlvblByb3BlcnRpZXNJblN0eWxlKGN1cnJlbnRTdHlsZSwgdHJhbnNpdGlvblBy
b3BlcnRpZXMsIHRyYW5zaXRpb25Qcm9wZXJ0aWVzQ29udGFpbkFsbCk7CisgICAgY29tcGlsZVRy
YW5zaXRpb25Qcm9wZXJ0aWVzSW5TdHlsZShhZnRlckNoYW5nZVN0eWxlLCB0cmFuc2l0aW9uUHJv
cGVydGllcywgdHJhbnNpdGlvblByb3BlcnRpZXNDb250YWluQWxsKTsKKworICAgIGlmICh0cmFu
c2l0aW9uUHJvcGVydGllc0NvbnRhaW5BbGwpIHsKKyAgICAgICAgYXV0byBudW1iZXJPZlByb3Bl
cnRpZXMgPSBDU1NQcm9wZXJ0eUFuaW1hdGlvbjo6Z2V0TnVtUHJvcGVydGllcygpOworICAgICAg
ICBmb3IgKGludCBwcm9wZXJ0eUluZGV4ID0gMDsgcHJvcGVydHlJbmRleCA8IG51bWJlck9mUHJv
cGVydGllczsgKytwcm9wZXJ0eUluZGV4KSB7CisgICAgICAgICAgICBPcHRpb25hbDxib29sPiBp
c1Nob3J0aGFuZDsKKyAgICAgICAgICAgIGF1dG8gcHJvcGVydHkgPSBDU1NQcm9wZXJ0eUFuaW1h
dGlvbjo6Z2V0UHJvcGVydHlBdEluZGV4KHByb3BlcnR5SW5kZXgsIGlzU2hvcnRoYW5kKTsKKyAg
ICAgICAgICAgIGlmIChpc1Nob3J0aGFuZCAmJiAqaXNTaG9ydGhhbmQpCisgICAgICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgICAgICB1cGRhdGVDU1NUcmFuc2l0aW9uc0ZvckVsZW1lbnRB
bmRQcm9wZXJ0eShlbGVtZW50LCBwcm9wZXJ0eSwgY3VycmVudFN0eWxlLCBhZnRlckNoYW5nZVN0
eWxlLCBydW5uaW5nVHJhbnNpdGlvbnNCeVByb3BlcnR5LCBjb21wbGV0ZWRUcmFuc2l0aW9uc0J5
UHJvcGVydHksIGdlbmVyYXRpb25UaW1lKTsKICAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAg
ICAgIGZvciAoYXV0byBwcm9wZXJ0eSA6IHRyYW5zaXRpb25Qcm9wZXJ0aWVzKQorICAgICAgICAg
ICAgdXBkYXRlQ1NTVHJhbnNpdGlvbnNGb3JFbGVtZW50QW5kUHJvcGVydHkoZWxlbWVudCwgcHJv
cGVydHksIGN1cnJlbnRTdHlsZSwgYWZ0ZXJDaGFuZ2VTdHlsZSwgcnVubmluZ1RyYW5zaXRpb25z
QnlQcm9wZXJ0eSwgY29tcGxldGVkVHJhbnNpdGlvbnNCeVByb3BlcnR5LCBnZW5lcmF0aW9uVGlt
ZSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQW5p
bWF0aW9uVGltZWxpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25UaW1l
bGluZS5oCmluZGV4IDEyZDFlY2VhN2ZhMmIyZWQ1OWE1M2EwZTJkNTk2ZTg1MTMwNzFhOTUuLjAz
ZGMwZjQ1NjI1OWU1NzI4Y2QxOWZmOTM4MmU5MzVmOGJhODgyZGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25UaW1lbGluZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2FuaW1hdGlvbi9BbmltYXRpb25UaW1lbGluZS5oCkBAIC04NCw2ICs4NCw3IEBAIHByb3Rl
Y3RlZDoKIHByaXZhdGU6CiAgICAgUmVmUHRyPFdlYkFuaW1hdGlvbj4gY3NzQW5pbWF0aW9uRm9y
RWxlbWVudEFuZFByb3BlcnR5KEVsZW1lbnQmLCBDU1NQcm9wZXJ0eUlEKTsKICAgICBQcm9wZXJ0
eVRvVHJhbnNpdGlvbk1hcCYgZW5zdXJlUnVubmluZ1RyYW5zaXRpb25zQnlQcm9wZXJ0eShFbGVt
ZW50Jik7CisgICAgdm9pZCB1cGRhdGVDU1NUcmFuc2l0aW9uc0ZvckVsZW1lbnRBbmRQcm9wZXJ0
eShFbGVtZW50JiwgQ1NTUHJvcGVydHlJRCwgY29uc3QgUmVuZGVyU3R5bGUmIGN1cnJlbnRTdHls
ZSwgY29uc3QgUmVuZGVyU3R5bGUmIGFmdGVyQ2hhbmdlU3R5bGUsIFByb3BlcnR5VG9UcmFuc2l0
aW9uTWFwJiwgUHJvcGVydHlUb1RyYW5zaXRpb25NYXAmLCBjb25zdCBNb25vdG9uaWNUaW1lJik7
CiAgICAgdm9pZCBjYW5jZWxEZWNsYXJhdGl2ZUFuaW1hdGlvbihEZWNsYXJhdGl2ZUFuaW1hdGlv
biYpOwogCiAgICAgRWxlbWVudFRvQW5pbWF0aW9uc01hcCBtX2VsZW1lbnRUb0FuaW1hdGlvbnNN
YXA7Cg==
</data>
<flag name="review"
          id="397529"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>