<?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>123368</bug_id>
          
          <creation_ts>2013-10-25 15:56:10 -0700</creation_ts>
          <short_desc>Web Inspector: Remove a lot of the current Timelines code to make room for a new implementation</short_desc>
          <delta_ts>2014-01-20 18:59:34 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Timothy Hatcher">timothy</reporter>
          <assigned_to name="Timothy Hatcher">timothy</assigned_to>
          <cc>graouts</cc>
    
    <cc>joepeck</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>943799</commentid>
    <comment_count>0</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2013-10-25 15:56:10 -0700</bug_when>
    <thetext>We are redoing how the Timelines sidebar and view work. To do this we need to remove the current version to make it easier to add the new stuff.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943800</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2013-10-25 15:56:47 -0700</bug_when>
    <thetext>&lt;rdar://problem/15324355&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943801</commentid>
    <comment_count>2</comment_count>
      <attachid>215225</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2013-10-25 15:57:27 -0700</bug_when>
    <thetext>Created attachment 215225
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>944140</commentid>
    <comment_count>3</comment_count>
      <attachid>215225</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-10-28 10:25:03 -0700</bug_when>
    <thetext>Comment on attachment 215225
Patch

rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>944141</commentid>
    <comment_count>4</comment_count>
      <attachid>215225</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-10-28 10:26:27 -0700</bug_when>
    <thetext>Comment on attachment 215225
Patch

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

&gt; Source/WebInspectorUI/ChangeLog:18
&gt; +        * UserInterface/InstrumentSidebarPanel.js: Removed.

You might also need to remove &quot;Removed&quot; files from vcproj files: (I only care about removals, not new files)

WebInspectorUI.vcxproj/WebInspectorUI.vcxproj
552:    &lt;None Include=&quot;..\UserInterface\InstrumentSidebarPanel.js&quot; /&gt;

WebInspectorUI.vcxproj/WebInspectorUI.vcxproj.filters
606:    &lt;None Include=&quot;..\UserInterface\InstrumentSidebarPanel.js&quot;&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>970110</commentid>
    <comment_count>5</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2014-01-20 18:59:34 -0800</bug_when>
    <thetext>https://trac.webkit.org/changeset/162397</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>215225</attachid>
            <date>2013-10-25 15:57:27 -0700</date>
            <delta_ts>2013-10-28 10:26:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>123368.patch</filename>
            <type>text/plain</type>
            <size>107841</size>
            <attacher name="Timothy Hatcher">timothy</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IGJkNGRiYTguLjM3MDRmNTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDEzLTEwLTI1ICBUaW1vdGh5IEhhdGNo
ZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgYSBsb3Qgb2YgdGhlIGN1
cnJlbnQgVGltZWxpbmVzIGNvZGUgdG8gbWFrZSByb29tIGZvciBhIG5ldyBpbXBsZW1lbnRhdGlv
bi4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIz
MzY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBM
b2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanM6CisgICAgICAgICogVXNl
ckludGVyZmFjZS9Db250ZW50Vmlldy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db250ZW50
Vmlldyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcuaXNWaWV3YWJsZSk6Cisg
ICAgICAgICogVXNlckludGVyZmFjZS9EYXNoYm9hcmRWaWV3LmpzOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkRhc2hib2FyZFZpZXcucHJvdG90eXBlLl9uZXR3b3JrSXRlbVdhc0NsaWNrZWQpOgor
ICAgICAgICAqIFVzZXJJbnRlcmZhY2UvSW5zcGVjdG9yRnJvbnRlbmRBUEkuanM6CisgICAgICAg
IChJbnNwZWN0b3JGcm9udGVuZEFQSS5zZXRUaW1lbGluZVByb2ZpbGluZ0VuYWJsZWQpOgorICAg
ICAgICAoSW5zcGVjdG9yRnJvbnRlbmRBUEkuc3RvcFByb2ZpbGluZ0phdmFTY3JpcHQpOgorICAg
ICAgICAqIFVzZXJJbnRlcmZhY2UvSW5zdHJ1bWVudFNpZGViYXJQYW5lbC5qczogUmVtb3ZlZC4K
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01haW4uaHRtbDoKKyAgICAgICAgKiBVc2VySW50ZXJm
YWNlL01haW4uanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuY29udGVudExvYWRlZCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3Iuc2lkZWJhclBhbmVsRm9yUmVwcmVzZW50ZWRPYmplY3QpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLm9wZW5VUkwpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvT2Jq
ZWN0LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk9iamVjdC5hZGRFdmVudExpc3RlbmVyKToK
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1RpbWVsaW5lTWFuYWdlci5qczoKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5UaW1lbGluZU1hbmFnZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVs
aW5lTWFuYWdlci5wcm90b3R5cGUuc3RhcnRSZWNvcmRpbmcpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlRpbWVsaW5lTWFuYWdlci5wcm90b3R5cGUuZXZlbnRSZWNvcmRlZC5wcm9jZXNzUmVjb3Jk
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZU1hbmFnZXIucHJvdG90eXBlLmV2ZW50
UmVjb3JkZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lTWFuYWdlci5wcm90b3R5
cGUub2JqZWN0Rm9yQ29va2llKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZU1hbmFn
ZXIucHJvdG90eXBlLl9hZGRSZWNvcmQpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVGltZWxp
bmVzT2JqZWN0LmpzOiBSZW1vdmVkLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVGltZWxpbmVP
dmVydmlldy5jc3M6IFJlbW92ZWQuCisgICAgICAgICogVXNlckludGVyZmFjZS9UaW1lbGluZU92
ZXJ2aWV3LmpzOiBSZW1vdmVkLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVGltZWxpbmVTaWRl
YmFyUGFuZWwuY3NzOiBBZGRlZC4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1RpbWVsaW5lU2lk
ZWJhclBhbmVsLmpzOiBBZGRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVNpZGVi
YXJQYW5lbCk6CisgICAgICAgICogVXNlckludGVyZmFjZS9UaW1lbGluZXNDb250ZW50Vmlldy5j
c3M6IFJlbW92ZWQuCisgICAgICAgICogVXNlckludGVyZmFjZS9UaW1lbGluZXNDb250ZW50Vmll
dy5qczogUmVtb3ZlZC4KKwogMjAxMy0xMC0yMSAgQWxleGFuZHJ1IENoaWN1bGl0YSAgPGFjaGlj
dUBhZG9iZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogW0NTUyBSZWdpb25zXSBGbG93
cyBhcmUgbm90IGxvYWRpbmcgaWYgeW91IHJlZnJlc2ggdGhlIHBhZ2Ugc2V2ZXJhbCB0aW1lcwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL0xvY2FsaXphdGlvbnMvZW4ubHByb2ov
bG9jYWxpemVkU3RyaW5ncy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Mb2NhbGl6YXRpb25z
L2VuLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMKaW5kZXggZmEyOTVhNi4uNmY2MDA2YSAxMDA2
NDQKQmluYXJ5IGZpbGVzIGEvU291cmNlL1dlYkluc3BlY3RvclVJL0xvY2FsaXphdGlvbnMvZW4u
bHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcyBhbmQgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvTG9j
YWxpemF0aW9ucy9lbi5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzIGRpZmZlcgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udGVudFZpZXcuanMgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250ZW50Vmlldy5qcwppbmRleCA3
YzQ3NWMyLi5lODk5YzA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Db250ZW50Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Db250ZW50Vmlldy5qcwpAQCAtNjAsOSArNjAsNiBAQCBXZWJJbnNwZWN0b3IuQ29u
dGVudFZpZXcgPSBmdW5jdGlvbihyZXByZXNlbnRlZE9iamVjdCkKICAgICAgICAgaWYgKHJlcHJl
c2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkxvZ09iamVjdCkKICAgICAgICAg
ICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkxvZ0NvbnRlbnRWaWV3KHJlcHJlc2VudGVkT2Jq
ZWN0KTsKIAotICAgICAgICBpZiAocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNw
ZWN0b3IuVGltZWxpbmVzT2JqZWN0KQotICAgICAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0
b3IuVGltZWxpbmVzQ29udGVudFZpZXcocmVwcmVzZW50ZWRPYmplY3QpOwotCiAgICAgICAgIGlm
IChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5KYXZhU2NyaXB0UHJv
ZmlsZU9iamVjdCkKICAgICAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkphdmFTY3Jp
cHRQcm9maWxlVmlldyhyZXByZXNlbnRlZE9iamVjdCk7CiAKQEAgLTExOCw4ICsxMTUsNiBAQCBX
ZWJJbnNwZWN0b3IuQ29udGVudFZpZXcuaXNWaWV3YWJsZSA9IGZ1bmN0aW9uKHJlcHJlc2VudGVk
T2JqZWN0KQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBpZiAocmVwcmVzZW50ZWRPYmplY3Qg
aW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuTG9nT2JqZWN0KQogICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICBpZiAocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuVGltZWxp
bmVzT2JqZWN0KQotICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBpZiAocmVwcmVzZW50ZWRPYmpl
Y3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuSmF2YVNjcmlwdFByb2ZpbGVPYmplY3QpCiAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIGlmIChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdl
Ykluc3BlY3Rvci5DU1NTZWxlY3RvclByb2ZpbGVPYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9EYXNoYm9hcmRWaWV3LmpzIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRGFzaGJvYXJkVmlldy5qcwppbmRleCA2NDUzZTVh
Li45ODI4MzliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9EYXNoYm9hcmRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL0Rhc2hib2FyZFZpZXcuanMKQEAgLTE5MSw4ICsxOTEsNyBAQCBXZWJJbnNwZWN0b3IuRGFz
aGJvYXJkVmlldy5wcm90b3R5cGUgPSB7CiAKICAgICBfbmV0d29ya0l0ZW1XYXNDbGlja2VkOiBm
dW5jdGlvbigpCiAgICAgewotICAgICAgICBXZWJJbnNwZWN0b3IubmF2aWdhdGlvblNpZGViYXIu
c2VsZWN0ZWRTaWRlYmFyUGFuZWwgPSBXZWJJbnNwZWN0b3IuaW5zdHJ1bWVudFNpZGViYXJQYW5l
bDsKLSAgICAgICAgV2ViSW5zcGVjdG9yLmluc3RydW1lbnRTaWRlYmFyUGFuZWwuc2hvd1RpbWVs
aW5lRm9yUmVjb3JkVHlwZShXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmQuVHlwZS5OZXR3b3Jr
KTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLm5hdmlnYXRpb25TaWRlYmFyLnNlbGVjdGVkU2lkZWJh
clBhbmVsID0gV2ViSW5zcGVjdG9yLnRpbWVsaW5lU2lkZWJhclBhbmVsOwogICAgIH0sCiAKICAg
ICBfY29uc29sZUl0ZW1XYXNDbGlja2VkOiBmdW5jdGlvbihzY29wZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0luc3BlY3RvckZyb250ZW5kQVBJLmpz
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSW5zcGVjdG9yRnJvbnRlbmRB
UEkuanMKaW5kZXggYTU0MDU5NS4uMjdlMTZjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvSW5zcGVjdG9yRnJvbnRlbmRBUEkuanMKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSW5zcGVjdG9yRnJvbnRlbmRBUEkuanMKQEAg
LTU3LDggKzU3LDcgQEAgSW5zcGVjdG9yRnJvbnRlbmRBUEkgPSB7CiAgICAgc2V0VGltZWxpbmVQ
cm9maWxpbmdFbmFibGVkOiBmdW5jdGlvbihlbmFibGVkKQogICAgIHsKICAgICAgICAgaWYgKGVu
YWJsZWQpIHsKLSAgICAgICAgICAgIFdlYkluc3BlY3Rvci5uYXZpZ2F0aW9uU2lkZWJhci5zZWxl
Y3RlZFNpZGViYXJQYW5lbCA9IFdlYkluc3BlY3Rvci5pbnN0cnVtZW50U2lkZWJhclBhbmVsOwot
ICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmluc3RydW1lbnRTaWRlYmFyUGFuZWwuc2hvd1RpbWVs
aW5lKCk7CisgICAgICAgICAgICBXZWJJbnNwZWN0b3IubmF2aWdhdGlvblNpZGViYXIuc2VsZWN0
ZWRTaWRlYmFyUGFuZWwgPSBXZWJJbnNwZWN0b3IudGltZWxpbmVTaWRlYmFyUGFuZWw7CiAgICAg
ICAgICAgICBXZWJJbnNwZWN0b3IudGltZWxpbmVNYW5hZ2VyLnN0YXJ0UmVjb3JkaW5nKCk7CiAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBXZWJJbnNwZWN0b3IudGltZWxpbmVNYW5hZ2Vy
LnN0b3BSZWNvcmRpbmcoKTsKQEAgLTc3LDcgKzc2LDcgQEAgSW5zcGVjdG9yRnJvbnRlbmRBUEkg
PSB7CiAKICAgICBzdG9wUHJvZmlsaW5nSmF2YVNjcmlwdDogZnVuY3Rpb24oKQogICAgIHsKLSAg
ICAgICAgV2ViSW5zcGVjdG9yLmluc3RydW1lbnRTaWRlYmFyUGFuZWwuc2hvdygpOworICAgICAg
ICBXZWJJbnNwZWN0b3IudGltZWxpbmVTaWRlYmFyUGFuZWwuc2hvdygpOwogICAgICAgICBXZWJJ
bnNwZWN0b3IucHJvZmlsZU1hbmFnZXIuc3RvcFByb2ZpbGluZ0phdmFTY3JpcHQoKTsKICAgICB9
LAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9JbnN0
cnVtZW50U2lkZWJhclBhbmVsLmNzcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL0luc3RydW1lbnRTaWRlYmFyUGFuZWwuY3NzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBhNmI3YjIzLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL0luc3RydW1lbnRTaWRlYmFyUGFuZWwuY3NzCisrKyAvZGV2L251bGwKQEAgLTEsMTIx
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0uc2lkZWJhciA+IC5wYW5lbC5pbnN0cnVtZW50ID4gLnRp
dGxlLWJhciB7Ci0gICAgcG9zaXRpb246IGFic29sdXRlOwotICAgIGxlZnQ6IDA7Ci0gICAgcmln
aHQ6IDA7Ci0KLSAgICBib3gtc2hhZG93OiBpbnNldCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMikg
MCAxcHggMDsKLSAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgcmdiKDE3OSwgMTc5LCAxNzkp
OwotCi0gICAgaGVpZ2h0OiAyMnB4OwotICAgIHBhZGRpbmc6IDRweCA2cHg7Ci0KLSAgICBmb250
LXNpemU6IDExcHg7Ci0gICAgZm9udC1mYW1pbHk6ICJMdWNpZGEgR3JhbmRlIiwgc2Fucy1zZXJp
ZjsKLQotICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7Ci0gICAgb3ZlcmZsb3c6IGhpZGRlbjsKLX0K
LQotLnNpZGViYXIgPiAucGFuZWwuaW5zdHJ1bWVudCA+IC50aXRsZS1iYXIudGltZWxpbmVzIHsK
LSAgICB0b3A6IDA7Ci19Ci0KLS5zaWRlYmFyID4gLnBhbmVsLmluc3RydW1lbnQgPiAudGl0bGUt
YmFyID4gLnJlY29yZC1nbHlwaCB7Ci0gICAgcG9zaXRpb246IGFic29sdXRlOwotICAgIHRvcDog
MDsKLSAgICByaWdodDogMDsKLSAgICB3aWR0aDogMjFweDsKLSAgICBoZWlnaHQ6IDIxcHg7Ci0g
ICAgcGFkZGluZzogMDsKLSAgICBib3JkZXI6IG5vbmU7Ci0gICAgb3V0bGluZTogbm9uZTsKLSAg
ICBjb2xvcjogdHJhbnNwYXJlbnQ7Ci0gICAgb3ZlcmZsb3c6IGhpZGRlbjsKLSAgICAKLSAgICAt
d2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7Ci0KLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3Bh
cmVudDsKLSAgICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWltYWdlLXNldCh1cmwoSW1hZ2Vz
L1JlY29yZGluZ1N0b3BwZWQucG5nKSAxeCwgdXJsKEltYWdlcy9SZWNvcmRpbmdTdG9wcGVkQDJ4
LnBuZykgMngpOwotICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7Ci0gICAgYmFja2dy
b3VuZC1zaXplOiAyMXB4IDIxcHg7Ci19Ci0KLS5zaWRlYmFyID4gLnBhbmVsLmluc3RydW1lbnQg
PiAudGl0bGUtYmFyID4gLnJlY29yZC1nbHlwaC5yZWNvcmRpbmcgewotICAgIGJhY2tncm91bmQt
aW1hZ2U6IC13ZWJraXQtaW1hZ2Utc2V0KHVybChJbWFnZXMvUmVjb3JkaW5nLnBuZykgMXgsIHVy
bChJbWFnZXMvUmVjb3JkaW5nQDJ4LnBuZykgMngpOwotfQotCi0uc2lkZWJhciA+IC5wYW5lbC5p
bnN0cnVtZW50ID4gLnRpdGxlLWJhciA+IC5yZWNvcmQtZ2x5cGg6aG92ZXIgewotICAgIGJhY2tn
cm91bmQtaW1hZ2U6IC13ZWJraXQtaW1hZ2Utc2V0KHVybChJbWFnZXMvUmVjb3JkaW5nSG92ZXJl
ZC5wbmcpIDF4LCB1cmwoSW1hZ2VzL1JlY29yZGluZ0hvdmVyZWRAMngucG5nKSAyeCk7Ci19Ci0K
LS5zaWRlYmFyID4gLnBhbmVsLmluc3RydW1lbnQgPiAudGl0bGUtYmFyID4gLnJlY29yZC1nbHlw
aC5yZWNvcmRpbmc6aG92ZXIgewotICAgIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtaW1hZ2Ut
c2V0KHVybChJbWFnZXMvUmVjb3JkaW5nU3RvcHBlZC5wbmcpIDF4LCB1cmwoSW1hZ2VzL1JlY29y
ZGluZ1N0b3BwZWRAMngucG5nKSAyeCk7Ci19Ci0KLS5zaWRlYmFyID4gLnBhbmVsLmluc3RydW1l
bnQgPiAudGl0bGUtYmFyID4gLnJlY29yZC1nbHlwaC5mb3JjZWQgewotICAgIGJhY2tncm91bmQt
aW1hZ2U6IC13ZWJraXQtaW1hZ2Utc2V0KHVybChJbWFnZXMvUmVjb3JkaW5nU3RvcHBlZC5wbmcp
IDF4LCB1cmwoSW1hZ2VzL1JlY29yZGluZ1N0b3BwZWRAMngucG5nKSAyeCkgIWltcG9ydGFudDsK
LX0KLQotLnNpZGViYXIgPiAucGFuZWwuaW5zdHJ1bWVudCA+IC50aXRsZS1iYXIgPiAucmVjb3Jk
LWdseXBoLnJlY29yZGluZy5mb3JjZWQgewotICAgIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQt
aW1hZ2Utc2V0KHVybChJbWFnZXMvUmVjb3JkaW5nLnBuZykgMXgsIHVybChJbWFnZXMvUmVjb3Jk
aW5nQDJ4LnBuZykgMngpICFpbXBvcnRhbnQ7Ci19Ci0KLS5zaWRlYmFyID4gLnBhbmVsLmluc3Ry
dW1lbnQgPiAudGl0bGUtYmFyID4gLnJlY29yZC1zdGF0dXMgewotICAgIHBvc2l0aW9uOiBhYnNv
bHV0ZTsKLSAgICB0b3A6IDA7Ci0gICAgcmlnaHQ6IDIxcHg7Ci0gICAgbGluZS1oZWlnaHQ6IDIw
cHg7Ci0gICAgY29sb3I6IHJnYig3NiwgNzYsIDc2KTsKLX0KLQotLnNpZGViYXIgPiAucGFuZWwu
aW5zdHJ1bWVudCA+IC5uYXZpZ2F0aW9uLXNpZGViYXItcGFuZWwtY29udGVudC10cmVlLW91dGxp
bmUudGltZWxpbmVzIHsKLSAgICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gICAgdG9wOiAyMnB4Owot
ICAgIGxlZnQ6IDA7Ci0gICAgcmlnaHQ6IDA7Ci0gICAgaGVpZ2h0OiA3OHB4OwotfQotCi0uc2lk
ZWJhciA+IC5wYW5lbC5pbnN0cnVtZW50ID4gLm5hdmlnYXRpb24tc2lkZWJhci1wYW5lbC1jb250
ZW50LXRyZWUtb3V0bGluZS50aW1lbGluZXMgLml0ZW06bm90KDpmaXJzdC1jaGlsZCk6bm90KC5z
ZWxlY3RlZCkgewotICAgIGJvcmRlci10b3AtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4xKTsKLX0K
LQotLnNpZGViYXIgPiAucGFuZWwuaW5zdHJ1bWVudCA+IC5uYXZpZ2F0aW9uLXNpZGViYXItcGFu
ZWwtY29udGVudC10cmVlLW91dGxpbmUudGltZWxpbmVzIC5pdGVtLnNlbGVjdGVkICsgLml0ZW0g
ewotICAgIGJvcmRlci10b3AtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC40KTsKLX0KLQotLnNpZGVi
YXIgPiAucGFuZWwuaW5zdHJ1bWVudCA+IC50aXRsZS1iYXIucHJvZmlsZXMgewotICAgIHRvcDog
MTAwcHg7Ci0gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHJnYigxNzksIDE3OSwgMTc5KTsKLSAg
ICBoZWlnaHQ6IDIzcHg7Ci19Ci0KLS5zaWRlYmFyID4gLnBhbmVsLmluc3RydW1lbnQgPiAuY29u
dGVudCwKLS5zaWRlYmFyID4gLnBhbmVsLmluc3RydW1lbnQgPiAuZW1wdHktY29udGVudC1wbGFj
ZWhvbGRlciB7Ci0gICAgdG9wOiAxMjNweDsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0luc3RydW1lbnRTaWRlYmFyUGFuZWwuanMgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9JbnN0cnVtZW50U2lkZWJhclBhbmVsLmpzCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmOGY5YmJjLi4wMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0luc3RydW1lbnRTaWRlYmFyUGFuZWwuanMK
KysrIC9kZXYvbnVsbApAQCAtMSw0OTAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLVdlYkluc3BlY3Rv
ci5JbnN0cnVtZW50U2lkZWJhclBhbmVsID0gZnVuY3Rpb24oKQotewotICAgIFdlYkluc3BlY3Rv
ci5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLmNhbGwodGhpcywgImluc3RydW1lbnQiLCBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIlRpbWVsaW5lcyIpLCAiSW1hZ2VzL05hdmlnYXRpb25JdGVtU3RvcHdh
dGNoLnN2ZyIsICIyIik7Ci0KLSAgICB0aGlzLmZpbHRlckJhci5wbGFjZWhvbGRlciA9IFdlYklu
c3BlY3Rvci5VSVN0cmluZygiRmlsdGVyIFByb2ZpbGUgTGlzdCIpOwotCi0gICAgdmFyIHRpbWVs
aW5lc1RpdGxlQmFyRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAg
IHRpbWVsaW5lc1RpdGxlQmFyRWxlbWVudC50ZXh0Q29udGVudCA9IFdlYkluc3BlY3Rvci5VSVN0
cmluZygiVGltZWxpbmVzIik7Ci0gICAgdGltZWxpbmVzVGl0bGVCYXJFbGVtZW50LmNsYXNzTGlz
dC5hZGQoV2ViSW5zcGVjdG9yLkluc3RydW1lbnRTaWRlYmFyUGFuZWwuVGl0bGVCYXJTdHlsZUNs
YXNzKTsKLSAgICB0aW1lbGluZXNUaXRsZUJhckVsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNw
ZWN0b3IuSW5zdHJ1bWVudFNpZGViYXJQYW5lbC5UaW1lbGluZXNUaXRsZUJhclN0eWxlQ2xhc3Mp
OwotICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aW1lbGluZXNUaXRsZUJhckVsZW1lbnQp
OwotCi0gICAgdGhpcy5fcmVjb3JkR2x5cGhFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiZGl2Iik7Ci0gICAgdGhpcy5fcmVjb3JkR2x5cGhFbGVtZW50LmNsYXNzTmFtZSA9IFdlYklu
c3BlY3Rvci5JbnN0cnVtZW50U2lkZWJhclBhbmVsLlJlY29yZEdseXBoU3R5bGVDbGFzczsKLSAg
ICB0aGlzLl9yZWNvcmRHbHlwaEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VvdmVyIiwg
dGhpcy5fcmVjb3JkR2x5cGhNb3VzZWRPdmVyLmJpbmQodGhpcykpOwotICAgIHRoaXMuX3JlY29y
ZEdseXBoRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW91dCIsIHRoaXMuX3JlY29yZEds
eXBoTW91c2VkT3V0LmJpbmQodGhpcykpOwotICAgIHRoaXMuX3JlY29yZEdseXBoRWxlbWVudC5h
ZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX3JlY29yZEdseXBoQ2xpY2tlZC5iaW5kKHRo
aXMpKTsKLSAgICB0aW1lbGluZXNUaXRsZUJhckVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fcmVj
b3JkR2x5cGhFbGVtZW50KTsKLQotICAgIHRoaXMuX3JlY29yZFN0YXR1c0VsZW1lbnQgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICB0aGlzLl9yZWNvcmRTdGF0dXNFbGVtZW50
LmNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5JbnN0cnVtZW50U2lkZWJhclBhbmVsLlJlY29yZFN0
YXR1c1N0eWxlQ2xhc3M7Ci0gICAgdGltZWxpbmVzVGl0bGVCYXJFbGVtZW50LmFwcGVuZENoaWxk
KHRoaXMuX3JlY29yZFN0YXR1c0VsZW1lbnQpOwotCi0gICAgdmFyIHRpbWVsaW5lc1RyZWVPdXRs
aW5lRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIm9sIik7Ci0gICAgdGltZWxpbmVz
VHJlZU91dGxpbmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25T
aWRlYmFyUGFuZWwuQ29udGVudFRyZWVPdXRsaW5lRWxlbWVudFN0eWxlQ2xhc3NOYW1lKTsKLSAg
ICB0aW1lbGluZXNUcmVlT3V0bGluZUVsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3Iu
TmF2aWdhdGlvblNpZGViYXJQYW5lbC5IaWRlRGlzY2xvc3VyZUJ1dHRvbnNTdHlsZUNsYXNzTmFt
ZSk7Ci0gICAgdGltZWxpbmVzVHJlZU91dGxpbmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5z
cGVjdG9yLkluc3RydW1lbnRTaWRlYmFyUGFuZWwuVGltZWxpbmVzVHJlZU91dGxpbmVTdHlsZUNs
YXNzKTsKLSAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGltZWxpbmVzVHJlZU91dGxpbmVF
bGVtZW50KTsKLQotICAgIHRoaXMuX3RpbWVsaW5lc1RyZWVPdXRsaW5lID0gbmV3IFRyZWVPdXRs
aW5lKHRpbWVsaW5lc1RyZWVPdXRsaW5lRWxlbWVudCk7Ci0gICAgdGhpcy5fdGltZWxpbmVzVHJl
ZU91dGxpbmUuYWxsb3dzUmVwZWF0U2VsZWN0aW9uID0gdHJ1ZTsKLQotICAgIHRoaXMuX3RpbWVs
aW5lc1RyZWVFbGVtZW50ID0gbmV3IFdlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQoV2Vi
SW5zcGVjdG9yLkluc3RydW1lbnRTaWRlYmFyUGFuZWwuU3RvcHdhdGNoSWNvblN0eWxlQ2xhc3Ms
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiVGltZWxpbmVzIiksIG51bGwsIFdlYkluc3BlY3Rvci50
aW1lbGluZU1hbmFnZXIudGltZWxpbmVzKTsKLQotICAgIHZhciBuZXR3b3JrVGltZWxpbmVUcmVl
RWxlbWVudCA9IG5ldyBXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50KFdlYkluc3BlY3Rv
ci5JbnN0cnVtZW50U2lkZWJhclBhbmVsLk5ldHdvcmtJY29uU3R5bGVDbGFzcywgV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJOZXR3b3JrIFJlcXVlc3RzIiksIG51bGwsIFdlYkluc3BlY3Rvci5UaW1l
bGluZVJlY29yZC5UeXBlLk5ldHdvcmspOwotICAgIG5ldHdvcmtUaW1lbGluZVRyZWVFbGVtZW50
LnNtYWxsID0gdHJ1ZTsKLSAgICBuZXR3b3JrVGltZWxpbmVUcmVlRWxlbWVudC50d29MaW5lID0g
dHJ1ZTsKLSAgICB0aGlzLl90aW1lbGluZXNUcmVlT3V0bGluZS5hcHBlbmRDaGlsZChuZXR3b3Jr
VGltZWxpbmVUcmVlRWxlbWVudCk7Ci0KLSAgICAvLyBTZWxlY3QgYnkgZGVmYXVsdCwgYnV0IGRv
bid0IGFsbG93IGZvY3VzIG9yIG9uc2VsZWN0IHRvIHByZXZlbnQgc2hvd2luZyB0aGUgY29udGVu
dCB2aWV3LgotICAgIG5ldHdvcmtUaW1lbGluZVRyZWVFbGVtZW50LnNlbGVjdCh0cnVlLCBmYWxz
ZSwgdHJ1ZSk7Ci0KLSAgICB2YXIgbGF5b3V0VGltZWxpbmVUcmVlRWxlbWVudCA9IG5ldyBXZWJJ
bnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50KFdlYkluc3BlY3Rvci5JbnN0cnVtZW50U2lkZWJh
clBhbmVsLkNvbG9yc0ljb25TdHlsZUNsYXNzLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkxheW91
dCAmIFJlbmRlcmluZyIpLCBudWxsLCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmQuVHlwZS5M
YXlvdXQpOwotICAgIGxheW91dFRpbWVsaW5lVHJlZUVsZW1lbnQuc21hbGwgPSB0cnVlOwotICAg
IGxheW91dFRpbWVsaW5lVHJlZUVsZW1lbnQudHdvTGluZSA9IHRydWU7Ci0gICAgdGhpcy5fdGlt
ZWxpbmVzVHJlZU91dGxpbmUuYXBwZW5kQ2hpbGQobGF5b3V0VGltZWxpbmVUcmVlRWxlbWVudCk7
Ci0KLSAgICB2YXIgc2NyaXB0VGltZWxpbmVUcmVlRWxlbWVudCA9IG5ldyBXZWJJbnNwZWN0b3Iu
R2VuZXJhbFRyZWVFbGVtZW50KFdlYkluc3BlY3Rvci5JbnN0cnVtZW50U2lkZWJhclBhbmVsLlNj
cmlwdEljb25TdHlsZUNsYXNzLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkphdmFTY3JpcHQgJiBF
dmVudHMiKSwgbnVsbCwgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkLlR5cGUuU2NyaXB0KTsK
LSAgICBzY3JpcHRUaW1lbGluZVRyZWVFbGVtZW50LnNtYWxsID0gdHJ1ZTsKLSAgICBzY3JpcHRU
aW1lbGluZVRyZWVFbGVtZW50LnR3b0xpbmUgPSB0cnVlOwotICAgIHRoaXMuX3RpbWVsaW5lc1Ry
ZWVPdXRsaW5lLmFwcGVuZENoaWxkKHNjcmlwdFRpbWVsaW5lVHJlZUVsZW1lbnQpOwotCi0gICAg
dGhpcy5fdGltZWxpbmVUcmVlRWxlbWVudE1hcCA9IHt9OwotICAgIHRoaXMuX3RpbWVsaW5lVHJl
ZUVsZW1lbnRNYXBbV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkLlR5cGUuTmV0d29ya10gPSBu
ZXR3b3JrVGltZWxpbmVUcmVlRWxlbWVudDsKLSAgICB0aGlzLl90aW1lbGluZVRyZWVFbGVtZW50
TWFwW1dlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZC5UeXBlLkxheW91dF0gPSBsYXlvdXRUaW1l
bGluZVRyZWVFbGVtZW50OwotICAgIHRoaXMuX3RpbWVsaW5lVHJlZUVsZW1lbnRNYXBbV2ViSW5z
cGVjdG9yLlRpbWVsaW5lUmVjb3JkLlR5cGUuU2NyaXB0XSA9IHNjcmlwdFRpbWVsaW5lVHJlZUVs
ZW1lbnQ7Ci0KLSAgICB2YXIgcHJvZmlsZXNUaXRsZUJhckVsZW1lbnQgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJkaXYiKTsKLSAgICBwcm9maWxlc1RpdGxlQmFyRWxlbWVudC50ZXh0Q29udGVu
dCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiUHJvZmlsZXMiKTsKLSAgICBwcm9maWxlc1RpdGxl
QmFyRWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5JbnN0cnVtZW50U2lkZWJhclBh
bmVsLlRpdGxlQmFyU3R5bGVDbGFzcyk7Ci0gICAgcHJvZmlsZXNUaXRsZUJhckVsZW1lbnQuY2xh
c3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuSW5zdHJ1bWVudFNpZGViYXJQYW5lbC5Qcm9maWxlc1Rp
dGxlQmFyU3R5bGVDbGFzcyk7Ci0gICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHByb2ZpbGVz
VGl0bGVCYXJFbGVtZW50KTsKLSAgICAKLSAgICB0aGlzLl9yZWNvcmRQcm9maWxlR2x5cGhFbGVt
ZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2VsZWN0Iik7Ci0gICAgdGhpcy5fcmVjb3Jk
UHJvZmlsZUdseXBoRWxlbWVudC5jbGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuSW5zdHJ1bWVudFNp
ZGViYXJQYW5lbC5SZWNvcmRHbHlwaFN0eWxlQ2xhc3M7Ci0gICAgdGhpcy5fcmVjb3JkUHJvZmls
ZUdseXBoRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW92ZXIiLCB0aGlzLl9yZWNvcmRQ
cm9maWxlR2x5cGhNb3VzZWRPdmVyLmJpbmQodGhpcykpOwotICAgIHRoaXMuX3JlY29yZFByb2Zp
bGVHbHlwaEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VvdXQiLCB0aGlzLl9yZWNvcmRQ
cm9maWxlR2x5cGhNb3VzZWRPdXQuYmluZCh0aGlzKSk7Ci0gICAgdGhpcy5fcmVjb3JkUHJvZmls
ZUdseXBoRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCB0aGlzLl9yZWNvcmRQ
cm9maWxlR2x5cGhNb3VzZWREb3duLmJpbmQodGhpcykpOwotICAgIHRoaXMuX3JlY29yZFByb2Zp
bGVHbHlwaEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9yZWNvcmRQcm9m
aWxlR2x5cGhDbGlja2VkLmJpbmQodGhpcykpOwotICAgIHRoaXMuX3JlY29yZFByb2ZpbGVHbHlw
aEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIiwgdGhpcy5fcHJvZmlsZVR5cGVXYXNT
ZWxlY3RlZC5iaW5kKHRoaXMpKTsKLQotICAgIHZhciBzdGFydEphdmFTY3JpcHRQcm9maWxlT3B0
aW9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib3B0aW9uIik7Ci0gICAgc3RhcnRKYXZhU2Ny
aXB0UHJvZmlsZU9wdGlvbi50ZXh0Q29udGVudCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU3Rh
cnQgSmF2YVNjcmlwdCBQcm9maWxlIik7Ci0gICAgc3RhcnRKYXZhU2NyaXB0UHJvZmlsZU9wdGlv
bi52YWx1ZSA9IFdlYkluc3BlY3Rvci5JbnN0cnVtZW50U2lkZWJhclBhbmVsLlN0YXJ0SmF2YVNj
cmlwdFByb2ZpbGVWYWx1ZTsKLSAgICBzdGFydEphdmFTY3JpcHRQcm9maWxlT3B0aW9uLnNlbGVj
dGVkID0gZmFsc2U7Ci0gICAgCi0gICAgdmFyIHN0YXJ0Q1NTU2VsZWN0b3JQcm9maWxlT3B0aW9u
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib3B0aW9uIik7Ci0gICAgc3RhcnRDU1NTZWxlY3Rv
clByb2ZpbGVPcHRpb24udGV4dENvbnRlbnQgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlN0YXJ0
IENTUyBTZWxlY3RvciBQcm9maWxlIik7Ci0gICAgc3RhcnRDU1NTZWxlY3RvclByb2ZpbGVPcHRp
b24udmFsdWUgPSBXZWJJbnNwZWN0b3IuSW5zdHJ1bWVudFNpZGViYXJQYW5lbC5TdGFydENTU1Nl
bGVjdG9yUHJvZmlsZVZhbHVlOwotICAgIHN0YXJ0Q1NTU2VsZWN0b3JQcm9maWxlT3B0aW9uLnNl
bGVjdGVkID0gZmFsc2U7Ci0KLSAgICB2YXIgc3RhcnRDYW52YXNQcm9maWxlT3B0aW9uID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgib3B0aW9uIik7Ci0gICAgc3RhcnRDYW52YXNQcm9maWxlT3B0
aW9uLnRleHRDb250ZW50ID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTdGFydCBDYW52YXMgUHJv
ZmlsZSIpOwotICAgIHN0YXJ0Q2FudmFzUHJvZmlsZU9wdGlvbi52YWx1ZSA9IFdlYkluc3BlY3Rv
ci5JbnN0cnVtZW50U2lkZWJhclBhbmVsLlN0YXJ0Q2FudmFzUHJvZmlsZVZhbHVlOwotICAgIHN0
YXJ0Q2FudmFzUHJvZmlsZU9wdGlvbi5zZWxlY3RlZCA9IGZhbHNlOwotCi0gICAgdGhpcy5fcmVj
b3JkUHJvZmlsZUdseXBoRWxlbWVudC5hZGQoc3RhcnRKYXZhU2NyaXB0UHJvZmlsZU9wdGlvbik7
Ci0gICAgdGhpcy5fcmVjb3JkUHJvZmlsZUdseXBoRWxlbWVudC5hZGQoc3RhcnRDU1NTZWxlY3Rv
clByb2ZpbGVPcHRpb24pOwotICAgIHRoaXMuX3JlY29yZFByb2ZpbGVHbHlwaEVsZW1lbnQuYWRk
KHN0YXJ0Q2FudmFzUHJvZmlsZU9wdGlvbik7Ci0KLSAgICBwcm9maWxlc1RpdGxlQmFyRWxlbWVu
dC5hcHBlbmRDaGlsZCh0aGlzLl9yZWNvcmRQcm9maWxlR2x5cGhFbGVtZW50KTsKLQotICAgIHRo
aXMuX3JlY29yZFByb2ZpbGVHbHlwaEVsZW1lbnQuc2VsZWN0ZWRJbmRleCA9IC0xOwotICAgIAot
ICAgIHRoaXMuX3JlY29yZFByb2ZpbGVTdGF0dXNFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiZGl2Iik7Ci0gICAgdGhpcy5fcmVjb3JkUHJvZmlsZVN0YXR1c0VsZW1lbnQuY2xhc3NO
YW1lID0gV2ViSW5zcGVjdG9yLkluc3RydW1lbnRTaWRlYmFyUGFuZWwuUmVjb3JkU3RhdHVzU3R5
bGVDbGFzczsKLSAgICBwcm9maWxlc1RpdGxlQmFyRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9y
ZWNvcmRQcm9maWxlU3RhdHVzRWxlbWVudCk7Ci0KLSAgICBXZWJJbnNwZWN0b3IudGltZWxpbmVN
YW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRpbWVsaW5lTWFuYWdlci5FdmVu
dC5SZWNvcmRpbmdTdGFydGVkLCB0aGlzLl9yZWNvcmRpbmdTdGFydGVkLCB0aGlzKTsKLSAgICBX
ZWJJbnNwZWN0b3IudGltZWxpbmVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9y
LlRpbWVsaW5lTWFuYWdlci5FdmVudC5SZWNvcmRpbmdTdG9wcGVkLCB0aGlzLl9yZWNvcmRpbmdT
dG9wcGVkLCB0aGlzKTsKLQotICAgIFdlYkluc3BlY3Rvci5wcm9maWxlTWFuYWdlci5hZGRFdmVu
dExpc3RlbmVyKFdlYkluc3BlY3Rvci5Qcm9maWxlTWFuYWdlci5FdmVudC5Qcm9maWxlV2FzQWRk
ZWQsIHRoaXMuX3Byb2ZpbGVXYXNBZGRlZCwgdGhpcyk7Ci0gICAgV2ViSW5zcGVjdG9yLnByb2Zp
bGVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlByb2ZpbGVNYW5hZ2VyLkV2
ZW50LlByb2ZpbGVXYXNVcGRhdGVkLCB0aGlzLl9wcm9maWxlV2FzVXBkYXRlZCwgdGhpcyk7Ci0g
ICAgV2ViSW5zcGVjdG9yLnByb2ZpbGVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVj
dG9yLlByb2ZpbGVNYW5hZ2VyLkV2ZW50LkNsZWFyZWQsIHRoaXMuX3Byb2ZpbGVzQ2xlYXJlZCwg
dGhpcyk7Ci0gICAgCi0gICAgV2ViSW5zcGVjdG9yLnByb2ZpbGVNYW5hZ2VyLmFkZEV2ZW50TGlz
dGVuZXIoV2ViSW5zcGVjdG9yLlByb2ZpbGVNYW5hZ2VyLkV2ZW50LlByb2ZpbGluZ1N0YXJ0ZWQs
IHRoaXMuX3Byb2ZpbGluZ1N0YXJ0ZWQsIHRoaXMpOwotICAgIFdlYkluc3BlY3Rvci5wcm9maWxl
TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Qcm9maWxlTWFuYWdlci5FdmVu
dC5Qcm9maWxpbmdFbmRlZCwgdGhpcy5fcHJvZmlsaW5nRW5kZWQsIHRoaXMpOwotICAgIFdlYklu
c3BlY3Rvci5wcm9maWxlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Qcm9m
aWxlTWFuYWdlci5FdmVudC5Qcm9maWxpbmdJbnRlcnJ1cHRlZCwgdGhpcy5fcHJvZmlsaW5nSW50
ZXJydXB0ZWQsIHRoaXMpOwotCi0gICAgdGhpcy51cGRhdGVFbXB0eUNvbnRlbnRQbGFjZWhvbGRl
cihXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk5vIFJlY29yZGVkIFByb2ZpbGVzIikpOwotICAgIAot
ICAgIC8vIE1hcHMgZnJvbSBwcm9maWxlIHRpdGxlcyAtPiB0cmVlIGVsZW1lbnRzLgotICAgIHRo
aXMuX3Byb2ZpbGVUcmVlRWxlbWVudE1hcCA9IHt9OwotCi0gICAgdGhpcy5fdGltZWxpbmVzVHJl
ZU91dGxpbmUub25zZWxlY3QgPSB0aGlzLl90aW1lbGluZXNUcmVlRWxlbWVudFNlbGVjdGVkLmJp
bmQodGhpcyk7Ci0gICAgdGhpcy5jb250ZW50VHJlZU91dGxpbmUub25zZWxlY3QgPSB0aGlzLl9w
cm9maWxlU2VsZWN0ZWQuYmluZCh0aGlzKTsKLX07Ci0KLVdlYkluc3BlY3Rvci5JbnN0cnVtZW50
U2lkZWJhclBhbmVsLlRpdGxlQmFyU3R5bGVDbGFzcyA9ICJ0aXRsZS1iYXIiOwotV2ViSW5zcGVj
dG9yLkluc3RydW1lbnRTaWRlYmFyUGFuZWwuVGltZWxpbmVzVGl0bGVCYXJTdHlsZUNsYXNzID0g
InRpbWVsaW5lcyI7Ci1XZWJJbnNwZWN0b3IuSW5zdHJ1bWVudFNpZGViYXJQYW5lbC5UaW1lbGlu
ZXNUcmVlT3V0bGluZVN0eWxlQ2xhc3MgPSAidGltZWxpbmVzIjsKLVdlYkluc3BlY3Rvci5JbnN0
cnVtZW50U2lkZWJhclBhbmVsLlJlY29yZEdseXBoU3R5bGVDbGFzcyA9ICJyZWNvcmQtZ2x5cGgi
OwotV2ViSW5zcGVjdG9yLkluc3RydW1lbnRTaWRlYmFyUGFuZWwuUmVjb3JkR2x5cGhSZWNvcmRp
bmdTdHlsZUNsYXNzID0gInJlY29yZGluZyI7Ci1XZWJJbnNwZWN0b3IuSW5zdHJ1bWVudFNpZGVi
YXJQYW5lbC5SZWNvcmRHbHlwaFJlY29yZGluZ0ZvcmNlZFN0eWxlQ2xhc3MgPSAiZm9yY2VkIjsK
LVdlYkluc3BlY3Rvci5JbnN0cnVtZW50U2lkZWJhclBhbmVsLlJlY29yZFN0YXR1c1N0eWxlQ2xh
c3MgPSAicmVjb3JkLXN0YXR1cyI7Ci1XZWJJbnNwZWN0b3IuSW5zdHJ1bWVudFNpZGViYXJQYW5l
bC5Qcm9maWxlc1RpdGxlQmFyU3R5bGVDbGFzcyA9ICJwcm9maWxlcyI7Ci1XZWJJbnNwZWN0b3Iu
SW5zdHJ1bWVudFNpZGViYXJQYW5lbC5TdG9wd2F0Y2hJY29uU3R5bGVDbGFzcyA9ICJzdG9wd2F0
Y2gtaWNvbiI7Ci1XZWJJbnNwZWN0b3IuSW5zdHJ1bWVudFNpZGViYXJQYW5lbC5OZXR3b3JrSWNv
blN0eWxlQ2xhc3MgPSAibmV0d29yay1pY29uIjsKLVdlYkluc3BlY3Rvci5JbnN0cnVtZW50U2lk
ZWJhclBhbmVsLkNvbG9yc0ljb25TdHlsZUNsYXNzID0gImNvbG9ycy1pY29uIjsKLVdlYkluc3Bl
Y3Rvci5JbnN0cnVtZW50U2lkZWJhclBhbmVsLlNjcmlwdEljb25TdHlsZUNsYXNzID0gInNjcmlw
dC1pY29uIjsKLVdlYkluc3BlY3Rvci5JbnN0cnVtZW50U2lkZWJhclBhbmVsLlByb2ZpbGVJY29u
U3R5bGVDbGFzcyA9ICJwcm9maWxlLWljb24iOwotV2ViSW5zcGVjdG9yLkluc3RydW1lbnRTaWRl
YmFyUGFuZWwuU3RhcnRKYXZhU2NyaXB0UHJvZmlsZVZhbHVlID0gInN0YXJ0LWphdmFzY3JpcHQt
cHJvZmlsZSI7Ci1XZWJJbnNwZWN0b3IuSW5zdHJ1bWVudFNpZGViYXJQYW5lbC5TdGFydENTU1Nl
bGVjdG9yUHJvZmlsZVZhbHVlID0gInN0YXJ0LWNzcy1zZWxlY3Rvci1wcm9maWxlIjsKLVdlYklu
c3BlY3Rvci5JbnN0cnVtZW50U2lkZWJhclBhbmVsLlN0YXJ0Q2FudmFzUHJvZmlsZVZhbHVlID0g
InN0YXJ0LWNhbnZhcy1wcm9maWxlIjsKLQotV2ViSW5zcGVjdG9yLkluc3RydW1lbnRTaWRlYmFy
UGFuZWwucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuSW5zdHJ1
bWVudFNpZGViYXJQYW5lbCwKLQotICAgIC8vIFB1YmxpYwotCi0gICAgdHJlZUVsZW1lbnRGb3JS
ZXByZXNlbnRlZE9iamVjdDogZnVuY3Rpb24ocmVwcmVzZW50ZWRPYmplY3QpCi0gICAgewotICAg
ICAgICBpZiAocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuVGltZWxp
bmVzT2JqZWN0KQotICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3RpbWVsaW5lc1RyZWVFbGVtZW50
OwotICAgICAgICByZXR1cm4gdGhpcy5jb250ZW50VHJlZU91dGxpbmUuZ2V0Q2FjaGVkVHJlZUVs
ZW1lbnQocmVwcmVzZW50ZWRPYmplY3QpOwotICAgIH0sCi0KLSAgICBzaG93VGltZWxpbmU6IGZ1
bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5jb250ZW50QnJvd3Nlci5zaG93
Q29udGVudFZpZXdGb3JSZXByZXNlbnRlZE9iamVjdChXZWJJbnNwZWN0b3IudGltZWxpbmVNYW5h
Z2VyLnRpbWVsaW5lcyk7Ci0gICAgfSwKLQotICAgIHNob3dUaW1lbGluZUZvclJlY29yZFR5cGU6
IGZ1bmN0aW9uKHR5cGUpCi0gICAgewotICAgICAgICB2YXIgdHJlZUVsZW1lbnRUb1NlbGVjdCA9
IHRoaXMuX3RpbWVsaW5lVHJlZUVsZW1lbnRNYXBbdHlwZV07Ci0gICAgICAgIGlmICghdHJlZUVs
ZW1lbnRUb1NlbGVjdCkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICB0cmVlRWxlbWVu
dFRvU2VsZWN0LnNlbGVjdCh0cnVlLCB0cnVlKTsKLSAgICB9LAotCi0gICAgc2hvd1Byb2ZpbGU6
IGZ1bmN0aW9uKHR5cGUsIHRpdGxlKQotICAgIHsKLSAgICAgICAgdmFyIHByb2ZpbGVUcmVlRWxl
bWVudHMgPSB0aGlzLmNvbnRlbnRUcmVlT3V0bGluZS5jaGlsZHJlbjsKLSAgICAgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBwcm9maWxlVHJlZUVsZW1lbnRzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAg
ICAgICB2YXIgdHJlZUVsZW1lbnQgPSBwcm9maWxlVHJlZUVsZW1lbnRzW2ldOwotICAgICAgICAg
ICAgdmFyIHByb2ZpbGUgPSB0cmVlRWxlbWVudC5yZXByZXNlbnRlZE9iamVjdDsKLSAgICAgICAg
ICAgIGlmIChwcm9maWxlLnR5cGUgPT09IHR5cGUgJiYgcHJvZmlsZS50aXRsZSA9PT0gdGl0bGUp
IHsKLSAgICAgICAgICAgICAgICB0cmVlRWxlbWVudC5yZXZlYWxBbmRTZWxlY3QoKTsKLSAgICAg
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9LAotCi0g
ICAgc2hvd246IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIC8vIERlbGVnYXRlIHRvIFRpbWVs
aW5lc0NvbnRlbnRWaWV3IHRvIHNlbGVjdCB0aGUgZGVmYXVsdCByZWNvcmQgdHlwZS4KLSAgICAg
ICAgV2ViSW5zcGVjdG9yLmNvbnRlbnRCcm93c2VyLnNob3dDb250ZW50Vmlld0ZvclJlcHJlc2Vu
dGVkT2JqZWN0KFdlYkluc3BlY3Rvci50aW1lbGluZU1hbmFnZXIudGltZWxpbmVzKTsKLSAgICAg
ICAgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwucHJvdG90eXBlLnNob3duLmNh
bGwodGhpcyk7Ci0gICAgfSwKLQotICAgIC8vIFByaXZhdGUKLQotICAgIF90aW1lbGluZXNUcmVl
RWxlbWVudFNlbGVjdGVkOiBmdW5jdGlvbih0cmVlRWxlbWVudCwgc2VsZWN0ZWRCeVVzZXIpCi0g
ICAgewotICAgICAgICBpZiAodGhpcy5fdGltZWxpbmVUcmVlRWxlbWVudE1hcFt0cmVlRWxlbWVu
dC5yZXByZXNlbnRlZE9iamVjdF0gIT09IHRyZWVFbGVtZW50KQotICAgICAgICAgICAgcmV0dXJu
OwotCi0gICAgICAgIC8vIERlc2VsZWN0IGFueSB0cmVlIGVsZW1lbnQgaW4gdGhlIG1haW4gY29u
dGVudCB0cmVlIG91dGxpbmUgdG8gcHJldmVudCB0d28gc2VsZWN0aW9ucyBpbiB0aGUgc2lkZWJh
ci4KLSAgICAgICAgdmFyIHNlbGVjdGVkVHJlZUVsZW1lbnQgPSB0aGlzLmNvbnRlbnRUcmVlT3V0
bGluZS5zZWxlY3RlZFRyZWVFbGVtZW50OwotICAgICAgICBpZiAoc2VsZWN0ZWRUcmVlRWxlbWVu
dCkKLSAgICAgICAgICAgIHNlbGVjdGVkVHJlZUVsZW1lbnQuZGVzZWxlY3QoKTsKLQotICAgICAg
ICB2YXIgY29udGVudFZpZXcgPSBXZWJJbnNwZWN0b3IuY29udGVudEJyb3dzZXIuY29udGVudFZp
ZXdGb3JSZXByZXNlbnRlZE9iamVjdChXZWJJbnNwZWN0b3IudGltZWxpbmVNYW5hZ2VyLnRpbWVs
aW5lcyk7Ci0gICAgICAgIGNvbnRlbnRWaWV3LnNob3dUaW1lbGluZUZvclJlY29yZFR5cGUodHJl
ZUVsZW1lbnQucmVwcmVzZW50ZWRPYmplY3QpOwotICAgICAgICBXZWJJbnNwZWN0b3IuY29udGVu
dEJyb3dzZXIuc2hvd0NvbnRlbnRWaWV3KGNvbnRlbnRWaWV3KTsKLSAgICB9LAotCi0gICAgX3By
b2ZpbGluZ1N0YXJ0ZWQ6IGZ1bmN0aW9uKGV2ZW50KQotICAgIHsKLSAgICAgICAgdGhpcy5fcmVj
b3JkUHJvZmlsZVN0YXR1c0VsZW1lbnQudGV4dENvbnRlbnQgPSBXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIlByb2ZpbGluZyIpOwotICAgICAgICB0aGlzLl9yZWNvcmRQcm9maWxlR2x5cGhFbGVtZW50
LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLkluc3RydW1lbnRTaWRlYmFyUGFuZWwuUmVjb3Jk
R2x5cGhSZWNvcmRpbmdTdHlsZUNsYXNzKTsKLSAgICB9LAotCi0gICAgX3Byb2ZpbGluZ0VuZGVk
OiBmdW5jdGlvbihldmVudCkKLSAgICB7Ci0gICAgICAgIC8vIEltbWVkaWF0ZWx5IGNyZWF0ZSBh
IHZpZXcgZm9yIHRoaXMgcHJvZmlsZSBzbyB0aGF0IGl0IGlzIGFyY2hpdmVkIGFjcm9zcyBwYWdl
IGxvYWRzLgotICAgICAgICBpZiAoZXZlbnQgJiYgZXZlbnQuZGF0YS5wcm9maWxlKSB7Ci0gICAg
ICAgICAgICBXZWJJbnNwZWN0b3IuY29udGVudEJyb3dzZXIuY29udGVudFZpZXdGb3JSZXByZXNl
bnRlZE9iamVjdChldmVudC5kYXRhLnByb2ZpbGUpOwotICAgICAgICAgICAgdmFyIHRyZWVFbGVt
ZW50ID0gdGhpcy50cmVlRWxlbWVudEZvclJlcHJlc2VudGVkT2JqZWN0KGV2ZW50LmRhdGEucHJv
ZmlsZSk7Ci0gICAgICAgICAgICBpZiAodHJlZUVsZW1lbnQpIHsKLSAgICAgICAgICAgICAgICB0
cmVlRWxlbWVudC5zdGF0dXMgPSBudWxsOwotICAgICAgICAgICAgICAgIGlmICghZXZlbnQuZGF0
YS5mcm9tQ29uc29sZSkKLSAgICAgICAgICAgICAgICAgICAgdHJlZUVsZW1lbnQuc2VsZWN0KCk7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICB0aGlzLl9yZWNvcmRQcm9maWxl
U3RhdHVzRWxlbWVudC50ZXh0Q29udGVudCA9ICIiOwotICAgICAgICB0aGlzLl9yZWNvcmRQcm9m
aWxlR2x5cGhFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoV2ViSW5zcGVjdG9yLkluc3RydW1lbnRT
aWRlYmFyUGFuZWwuUmVjb3JkR2x5cGhSZWNvcmRpbmdTdHlsZUNsYXNzKTsKLSAgICB9LAotCi0g
ICAgX3Byb2ZpbGluZ0ludGVycnVwdGVkOiBmdW5jdGlvbihldmVudCkKLSAgICB7Ci0gICAgICAg
IHRoaXMuX3Byb2ZpbGluZ0VuZGVkKCk7Ci0KLSAgICAgICAgdmFyIHByb2ZpbGUgPSBldmVudC5k
YXRhLnByb2ZpbGU7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KHByb2ZpbGUgaW5zdGFuY2VvZiBX
ZWJJbnNwZWN0b3IuUHJvZmlsZU9iamVjdCk7Ci0KLSAgICAgICAgdmFyIHRyZWVFbGVtZW50ID0g
dGhpcy50cmVlRWxlbWVudEZvclJlcHJlc2VudGVkT2JqZWN0KHByb2ZpbGUpOwotICAgICAgICBj
b25zb2xlLmFzc2VydCh0cmVlRWxlbWVudCk7Ci0gICAgICAgIGlmICghdHJlZUVsZW1lbnQpCi0g
ICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgdHJlZUVsZW1lbnQudHJlZU91dGxpbmUucmVt
b3ZlQ2hpbGQodHJlZUVsZW1lbnQpOwotICAgIH0sCi0KLSAgICBfcmVjb3JkUHJvZmlsZUdseXBo
TW91c2VkT3ZlcjogZnVuY3Rpb24oZXZlbnQpCi0gICAgewotICAgICAgICB0aGlzLl9yZWNvcmRQ
cm9maWxlR2x5cGhFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoV2ViSW5zcGVjdG9yLkluc3RydW1l
bnRTaWRlYmFyUGFuZWwuUmVjb3JkR2x5cGhSZWNvcmRpbmdGb3JjZWRTdHlsZUNsYXNzKTsKLQot
ICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLnByb2ZpbGVNYW5hZ2VyLmlzUHJvZmlsaW5nSmF2YVNj
cmlwdCgpIHx8IFdlYkluc3BlY3Rvci5wcm9maWxlTWFuYWdlci5pc1Byb2ZpbGluZ0NTU1NlbGVj
dG9ycygpIHx8IFdlYkluc3BlY3Rvci5wcm9maWxlTWFuYWdlci5pc1Byb2ZpbGluZ0NhbnZhcygp
KQotICAgICAgICAgICAgdGhpcy5fcmVjb3JkUHJvZmlsZVN0YXR1c0VsZW1lbnQudGV4dENvbnRl
bnQgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlN0b3AgUHJvZmlsaW5nIik7Ci0gICAgICAgIGVs
c2UKLSAgICAgICAgICAgIHRoaXMuX3JlY29yZFByb2ZpbGVTdGF0dXNFbGVtZW50LnRleHRDb250
ZW50ID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTdGFydCBQcm9maWxpbmciKTsKLSAgICB9LAot
Ci0gICAgX3JlY29yZFByb2ZpbGVHbHlwaE1vdXNlZE91dDogZnVuY3Rpb24oZXZlbnQpCi0gICAg
ewotICAgICAgICB0aGlzLl9yZWNvcmRQcm9maWxlR2x5cGhFbGVtZW50LmNsYXNzTGlzdC5yZW1v
dmUoV2ViSW5zcGVjdG9yLkluc3RydW1lbnRTaWRlYmFyUGFuZWwuUmVjb3JkR2x5cGhSZWNvcmRp
bmdGb3JjZWRTdHlsZUNsYXNzKTsKLQotICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLnByb2ZpbGVN
YW5hZ2VyLmlzUHJvZmlsaW5nSmF2YVNjcmlwdCgpKQotICAgICAgICAgICAgdGhpcy5fcmVjb3Jk
UHJvZmlsZVN0YXR1c0VsZW1lbnQudGV4dENvbnRlbnQgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IlByb2ZpbGluZyIpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB0aGlzLl9yZWNvcmRQcm9m
aWxlU3RhdHVzRWxlbWVudC50ZXh0Q29udGVudCA9ICIiOwotICAgIH0sCi0gICAgCi0gICAgX3Jl
Y29yZFByb2ZpbGVHbHlwaE1vdXNlZERvd246IGZ1bmN0aW9uKGV2ZW50KQotICAgIHsKLSAgICAg
ICAgLy8gRG9uJ3Qgc2hvdyBhbnkgb3B0aW9uIGFzIHNlbGVjdGVkIGluIHRoZSBwcm9maWxlIHNl
bGVjdG9yLgotICAgICAgICB0aGlzLl9yZWNvcmRQcm9maWxlR2x5cGhFbGVtZW50LnNlbGVjdGVk
SW5kZXggPSAtMTsKLSAgICAgICAgCi0gICAgICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gc2hvdyB0
aGUgc2VsZWN0IGlmIHRoZSB1c2VyIGlzIGN1cnJlbnRseSBwcm9maWxpbmcuIEluIHRoYXQgY2Fz
ZSwKLSAgICAgICAgLy8gdGhlIHVzZXIgc2hvdWxkIGp1c3QgYmUgYWJsZSB0byBjbGljayB0aGUg
cmVjb3JkIGJ1dHRvbiB0byBzdG9wIHByb2ZpbGluZy4KLSAgICAgICAgaWYgKFdlYkluc3BlY3Rv
ci5wcm9maWxlTWFuYWdlci5pc1Byb2ZpbGluZ0phdmFTY3JpcHQoKSB8fCBXZWJJbnNwZWN0b3Iu
cHJvZmlsZU1hbmFnZXIuaXNQcm9maWxpbmdDU1NTZWxlY3RvcnMoKSB8fCBXZWJJbnNwZWN0b3Iu
cHJvZmlsZU1hbmFnZXIuaXNQcm9maWxpbmdDYW52YXMoKSkKLSAgICAgICAgICAgIGV2ZW50LnBy
ZXZlbnREZWZhdWx0KCk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgLy8gV2hlbiBhIHNl
bGVjdCBpcyBvcGVuZWQsIGEgY2xpY2sgZXZlbnQgd2lsbCBiZSBmaXJlZCB3aGVuIHRoZSBzZWxl
Y3QgaXMgY2xvc2VkLAotICAgICAgICAgICAgLy8gd2hldGhlciBvciBub3QgYW55dGhpbmcgd2Fz
IHNlbGVjdGVkLiBXZSB3YW50IHRvIGlnbm9yZSB0aGF0IGNsaWNrLCBiZWNhdXNlIGl0Ci0gICAg
ICAgICAgICAvLyB3b3VsZCBpbnN0YW50bHkgc3RvcCBwcm9maWxpbmcuCi0gICAgICAgICAgICB0
aGlzLl9zaG91bGRJZ25vcmVSZWNvcmRQcm9maWxlR2x5cGhDbGljayA9IHRydWU7Ci0gICAgICAg
IH0KLSAgICB9LAotCi0gICAgX3JlY29yZFByb2ZpbGVHbHlwaENsaWNrZWQ6IGZ1bmN0aW9uKGV2
ZW50KQotICAgIHsKLSAgICAgICAgLy8gQWRkIGZvcmNlZCBjbGFzcyB0byBwcmV2ZW50IHRoZSBn
bHlwaCBmcm9tIHNob3dpbmcgYSBjb25mdXNpbmcgc3RhdHVzIGFmdGVyIGNsaWNrLgotICAgICAg
ICB0aGlzLl9yZWNvcmRQcm9maWxlR2x5cGhFbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVj
dG9yLkluc3RydW1lbnRTaWRlYmFyUGFuZWwuUmVjb3JkR2x5cGhSZWNvcmRpbmdGb3JjZWRTdHls
ZUNsYXNzKTsKLQotICAgICAgICBpZiAodGhpcy5fc2hvdWxkSWdub3JlUmVjb3JkUHJvZmlsZUds
eXBoQ2xpY2spIHsKLSAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9zaG91bGRJZ25vcmVSZWNvcmRQ
cm9maWxlR2x5cGhDbGljazsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAg
ICAgIGlmIChXZWJJbnNwZWN0b3IucHJvZmlsZU1hbmFnZXIuaXNQcm9maWxpbmdKYXZhU2NyaXB0
KCkpCi0gICAgICAgICAgICBXZWJJbnNwZWN0b3IucHJvZmlsZU1hbmFnZXIuc3RvcFByb2ZpbGlu
Z0phdmFTY3JpcHQoKTsKLSAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5wcm9maWxlTWFuYWdlci5p
c1Byb2ZpbGluZ0NTU1NlbGVjdG9ycygpKQotICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnByb2Zp
bGVNYW5hZ2VyLnN0b3BQcm9maWxpbmdDU1NTZWxlY3RvcnMoKTsKLSAgICAgICAgaWYgKFdlYklu
c3BlY3Rvci5wcm9maWxlTWFuYWdlci5pc1Byb2ZpbGluZ0NhbnZhcygpKQotICAgICAgICAgICAg
V2ViSW5zcGVjdG9yLnByb2ZpbGVNYW5hZ2VyLnN0b3BQcm9maWxpbmdDYW52YXMoKTsKLSAgICB9
LAotCi0gICAgX3Byb2ZpbGVUeXBlV2FzU2VsZWN0ZWQ6IGZ1bmN0aW9uKGV2ZW50KQotICAgIHsK
LSAgICAgICAgdmFyIHNlbGVjdGVkSW5kZXggPSB0aGlzLl9yZWNvcmRQcm9maWxlR2x5cGhFbGVt
ZW50LnNlbGVjdGVkSW5kZXg7Ci0gICAgICAgIGlmIChzZWxlY3RlZEluZGV4ID09PSAtMSkKLSAg
ICAgICAgICAgIHJldHVybjsKLQotICAgICAgICB2YXIgc2VsZWN0ZWRWYWx1ZSA9IHRoaXMuX3Jl
Y29yZFByb2ZpbGVHbHlwaEVsZW1lbnQub3B0aW9uc1tzZWxlY3RlZEluZGV4XS52YWx1ZTsKLSAg
ICAgICAgaWYgKHNlbGVjdGVkVmFsdWUgPT09IFdlYkluc3BlY3Rvci5JbnN0cnVtZW50U2lkZWJh
clBhbmVsLlN0YXJ0SmF2YVNjcmlwdFByb2ZpbGVWYWx1ZSkKLSAgICAgICAgICAgIFdlYkluc3Bl
Y3Rvci5wcm9maWxlTWFuYWdlci5zdGFydFByb2ZpbGluZ0phdmFTY3JpcHQoKTsKLSAgICAgICAg
ZWxzZSBpZiAoc2VsZWN0ZWRWYWx1ZSA9PT0gV2ViSW5zcGVjdG9yLkluc3RydW1lbnRTaWRlYmFy
UGFuZWwuU3RhcnRDU1NTZWxlY3RvclByb2ZpbGVWYWx1ZSkKLSAgICAgICAgICAgIFdlYkluc3Bl
Y3Rvci5wcm9maWxlTWFuYWdlci5zdGFydFByb2ZpbGluZ0NTU1NlbGVjdG9ycygpOwotICAgICAg
ICBlbHNlIHsKLSAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHNlbGVjdGVkVmFsdWUgPT09IFdl
Ykluc3BlY3Rvci5JbnN0cnVtZW50U2lkZWJhclBhbmVsLlN0YXJ0Q2FudmFzUHJvZmlsZVZhbHVl
KTsKLSAgICAgICAgICAgIFdlYkluc3BlY3Rvci5wcm9maWxlTWFuYWdlci5zdGFydFByb2ZpbGlu
Z0NhbnZhcygpOwotICAgICAgICB9Ci0gICAgfSwKLQotICAgIF9yZWNvcmRpbmdTdGFydGVkOiBm
dW5jdGlvbihldmVudCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX3JlY29yZFN0YXR1c0VsZW1lbnQu
dGV4dENvbnRlbnQgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlY29yZGluZyIpOwotICAgICAg
ICB0aGlzLl9yZWNvcmRHbHlwaEVsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuSW5z
dHJ1bWVudFNpZGViYXJQYW5lbC5SZWNvcmRHbHlwaFJlY29yZGluZ1N0eWxlQ2xhc3MpOwotICAg
IH0sCi0KLSAgICBfcmVjb3JkaW5nU3RvcHBlZDogZnVuY3Rpb24oZXZlbnQpCi0gICAgewotICAg
ICAgICB0aGlzLl9yZWNvcmRTdGF0dXNFbGVtZW50LnRleHRDb250ZW50ID0gIiI7Ci0gICAgICAg
IHRoaXMuX3JlY29yZEdseXBoRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKFdlYkluc3BlY3Rvci5J
bnN0cnVtZW50U2lkZWJhclBhbmVsLlJlY29yZEdseXBoUmVjb3JkaW5nU3R5bGVDbGFzcyk7Ci0g
ICAgfSwKLQotICAgIF9yZWNvcmRHbHlwaE1vdXNlZE92ZXI6IGZ1bmN0aW9uKGV2ZW50KQotICAg
IHsKLSAgICAgICAgdGhpcy5fcmVjb3JkR2x5cGhFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoV2Vi
SW5zcGVjdG9yLkluc3RydW1lbnRTaWRlYmFyUGFuZWwuUmVjb3JkR2x5cGhSZWNvcmRpbmdGb3Jj
ZWRTdHlsZUNsYXNzKTsKLQotICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLnRpbWVsaW5lTWFuYWdl
ci5yZWNvcmRpbmcpCi0gICAgICAgICAgICB0aGlzLl9yZWNvcmRTdGF0dXNFbGVtZW50LnRleHRD
b250ZW50ID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTdG9wIFJlY29yZGluZyIpOwotICAgICAg
ICBlbHNlCi0gICAgICAgICAgICB0aGlzLl9yZWNvcmRTdGF0dXNFbGVtZW50LnRleHRDb250ZW50
ID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTdGFydCBSZWNvcmRpbmciKTsKLSAgICB9LAotCi0g
ICAgX3JlY29yZEdseXBoTW91c2VkT3V0OiBmdW5jdGlvbihldmVudCkKLSAgICB7Ci0gICAgICAg
IHRoaXMuX3JlY29yZEdseXBoRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKFdlYkluc3BlY3Rvci5J
bnN0cnVtZW50U2lkZWJhclBhbmVsLlJlY29yZEdseXBoUmVjb3JkaW5nRm9yY2VkU3R5bGVDbGFz
cyk7Ci0KLSAgICAgICAgaWYgKFdlYkluc3BlY3Rvci50aW1lbGluZU1hbmFnZXIucmVjb3JkaW5n
KQotICAgICAgICAgICAgdGhpcy5fcmVjb3JkU3RhdHVzRWxlbWVudC50ZXh0Q29udGVudCA9IFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiUmVjb3JkaW5nIik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIHRoaXMuX3JlY29yZFN0YXR1c0VsZW1lbnQudGV4dENvbnRlbnQgPSAiIjsKLSAgICB9LAot
Ci0gICAgX3JlY29yZEdseXBoQ2xpY2tlZDogZnVuY3Rpb24oZXZlbnQpCi0gICAgewotICAgICAg
ICAvLyBBZGQgZm9yY2VkIGNsYXNzIHRvIHByZXZlbnQgdGhlIGdseXBoIGZyb20gc2hvd2luZyBh
IGNvbmZ1c2luZyBzdGF0dXMgYWZ0ZXIgY2xpY2suCi0gICAgICAgIHRoaXMuX3JlY29yZEdseXBo
RWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5JbnN0cnVtZW50U2lkZWJhclBhbmVs
LlJlY29yZEdseXBoUmVjb3JkaW5nRm9yY2VkU3R5bGVDbGFzcyk7Ci0KLSAgICAgICAgaWYgKFdl
Ykluc3BlY3Rvci50aW1lbGluZU1hbmFnZXIucmVjb3JkaW5nKQotICAgICAgICAgICAgV2ViSW5z
cGVjdG9yLnRpbWVsaW5lTWFuYWdlci5zdG9wUmVjb3JkaW5nKCk7Ci0gICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIFdlYkluc3BlY3Rvci50aW1lbGluZU1hbmFnZXIuc3RhcnRSZWNvcmRpbmcoKTsK
LSAgICB9LAotICAgIAotICAgIF90aXRsZUZvclByb2ZpbGU6IGZ1bmN0aW9uKHByb2ZpbGUpCi0g
ICAgewotICAgICAgICBjb25zb2xlLmFzc2VydChwcm9maWxlIGluc3RhbmNlb2YgV2ViSW5zcGVj
dG9yLlByb2ZpbGVPYmplY3QpOwotCi0gICAgICAgIHZhciB0aXRsZSA9IHByb2ZpbGUudGl0bGU7
Ci0gICAgICAgIGlmICh0aXRsZS5zdGFydHNXaXRoKFdlYkluc3BlY3Rvci5Qcm9maWxlTWFuYWdl
ci5Vc2VySW5pdGlhdGVkUHJvZmlsZU5hbWUpKSB7Ci0gICAgICAgICAgICB2YXIganNQcm9maWxl
c0NvdW50ID0gMDsKLSAgICAgICAgICAgIHZhciBwcm9maWxlcyA9IHRoaXMuY29udGVudFRyZWVP
dXRsaW5lLmNoaWxkcmVuOwotICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9maWxl
cy5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgICAgIGlmIChwcm9maWxlc1tpXS5yZXByZXNl
bnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5KYXZhU2NyaXB0UHJvZmlsZU9iamVj
dCkKLSAgICAgICAgICAgICAgICAgICAganNQcm9maWxlc0NvdW50Kys7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICBpZiAocHJvZmlsZS5yZWNvcmRpbmcpCi0gICAgICAgICAgICAgICAganNQ
cm9maWxlc0NvdW50Kys7Ci0gICAgICAgICAgICB0aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiSmF2YVNjcmlwdCBQcm9maWxlICVkIikuZm9ybWF0KGpzUHJvZmlsZXNDb3VudCk7Ci0gICAg
ICAgIH0KLSAgICAgICAgCi0gICAgICAgIHJldHVybiB0aXRsZTsKLSAgICB9LAotICAgIAotICAg
IF9wcm9maWxlV2FzQWRkZWQ6IGZ1bmN0aW9uKGV2ZW50KQotICAgIHsKLSAgICAgICAgdmFyIHBy
b2ZpbGUgPSBldmVudC5kYXRhLnByb2ZpbGU7Ci0gICAgICAgIHZhciB0aXRsZSA9IHByb2ZpbGUu
dGl0bGU7Ci0KLSAgICAgICAgY29uc29sZS5hc3NlcnQocHJvZmlsZSBpbnN0YW5jZW9mIFdlYklu
c3BlY3Rvci5Qcm9maWxlT2JqZWN0KTsKLQotICAgICAgICB2YXIgcHJvZmlsZVRyZWVFbGVtZW50
ID0gbmV3IFdlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQoV2ViSW5zcGVjdG9yLkluc3Ry
dW1lbnRTaWRlYmFyUGFuZWwuUHJvZmlsZUljb25TdHlsZUNsYXNzLCB0aGlzLl90aXRsZUZvclBy
b2ZpbGUocHJvZmlsZSksIG51bGwsIHByb2ZpbGUsIGZhbHNlKTsKLSAgICAgICAgcHJvZmlsZVRy
ZWVFbGVtZW50LnNtYWxsID0gdHJ1ZTsKLSAgICAgICAgaWYgKHByb2ZpbGUucmVjb3JkaW5nKQot
ICAgICAgICAgICAgcHJvZmlsZVRyZWVFbGVtZW50LnN0YXR1cyA9IG5ldyBXZWJJbnNwZWN0b3Iu
SW5kZXRlcm1pbmF0ZVByb2dyZXNzU3Bpbm5lcigpLmVsZW1lbnQ7Ci0KLSAgICAgICAgaWYgKCF0
aGlzLl9wcm9maWxlVHJlZUVsZW1lbnRNYXBbdGl0bGVdKSB7Ci0gICAgICAgICAgICAvLyBXZSBk
b24ndCB3YW50IHRvIHRyYWNrIHRoZSBwbGFjZW1lbnQgb2YgdGhlICJSZWNvcmRpbmcuLi4iIHRp
dGxlLiBBbGwgb2YgdGhlIHByb2ZpbGVzIGNvbGxlY3RlZCBmcm9tCi0gICAgICAgICAgICAvLyB0
aGUgRGV2ZWxvcCBtZW51IHdpbGwgYmUgdW5pcXVlbHkgbmFtZWQsIHNvIHdlIGRvbid0IGhhdmUg
dG8gd29ycnkgYWJvdXQgY3JlYXRpbmcgZm9sZGVycyBmb3IgdGhlbS4KLSAgICAgICAgICAgIGlm
ICghcHJvZmlsZS5yZWNvcmRpbmcpCi0gICAgICAgICAgICAgICAgdGhpcy5fcHJvZmlsZVRyZWVF
bGVtZW50TWFwW3RpdGxlXSA9IHByb2ZpbGVUcmVlRWxlbWVudDsKLQotICAgICAgICAgICAgdGhp
cy5jb250ZW50VHJlZU91dGxpbmUuaW5zZXJ0Q2hpbGQocHJvZmlsZVRyZWVFbGVtZW50LCAwKTsK
LSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgaWYgKHRo
aXMuX3Byb2ZpbGVUcmVlRWxlbWVudE1hcFt0aXRsZV0gaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3Iu
Rm9sZGVyVHJlZUVsZW1lbnQpIHsKLSAgICAgICAgICAgIHByb2ZpbGVUcmVlRWxlbWVudC5tYWlu
VGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJ1biAlZCIpLmZvcm1hdCh0aGlzLl9wcm9m
aWxlVHJlZUVsZW1lbnRNYXBbdGl0bGVdLmNoaWxkcmVuLmxlbmd0aCArIDEpOwotICAgICAgICAg
ICAgdGhpcy5fcHJvZmlsZVRyZWVFbGVtZW50TWFwW3RpdGxlXS5hcHBlbmRDaGlsZChwcm9maWxl
VHJlZUVsZW1lbnQpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAg
aWYgKHRoaXMuX3Byb2ZpbGVUcmVlRWxlbWVudE1hcFt0aXRsZV0gaW5zdGFuY2VvZiBXZWJJbnNw
ZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50KSB7Ci0gICAgICAgICAgICB2YXIgcHJvZmlsZUZvbGRl
ckVsZW1lbnQgPSBuZXcgV2ViSW5zcGVjdG9yLkZvbGRlclRyZWVFbGVtZW50KHRpdGxlLCBudWxs
LCBudWxsKTsKLSAgICAgICAgICAgIHZhciBvbGRQcm9maWxlVHJlZUVsZW1lbnQgPSB0aGlzLl9w
cm9maWxlVHJlZUVsZW1lbnRNYXBbdGl0bGVdOwotICAgICAgICAgICAgCi0gICAgICAgICAgICB2
YXIgcHJvZmlsZUluZGV4ID0gdGhpcy5jb250ZW50VHJlZU91dGxpbmUuY2hpbGRyZW4uaW5kZXhP
ZihvbGRQcm9maWxlVHJlZUVsZW1lbnQpOwotICAgICAgICAgICAgdGhpcy5jb250ZW50VHJlZU91
dGxpbmUucmVtb3ZlQ2hpbGQob2xkUHJvZmlsZVRyZWVFbGVtZW50KTsKLSAgICAgICAgICAgIAot
ICAgICAgICAgICAgdGhpcy5jb250ZW50VHJlZU91dGxpbmUuaW5zZXJ0Q2hpbGQocHJvZmlsZUZv
bGRlckVsZW1lbnQsIHByb2ZpbGVJbmRleCk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIC8v
IEFkZCB0aGUgb2xkIHRyZWUgZWxlbWVudCB3aXRoIHRoZSBzYW1lIHRpdGxlIGFzIHRoZSBwcm9m
aWxlIHRoYXQgd2FzIGFkZGVkLCBhbmQgdGhlCi0gICAgICAgICAgICAvLyBwcm9maWxlIHRoYXQg
d2FzIGFkZGVkIHRvIHRoZSBmb2xkZXIgd2UgYXJlIGNyZWF0aW5nIHRvIHRyYWNrIGFsbCBwcm9m
aWxlcyB3aXRoIHRoZQotICAgICAgICAgICAgLy8gZ2l2ZW4gdGl0bGUuIEFkZCB0aGUgb2xkIG9u
ZSBhcyBSdW4gMSwgYW5kIHRoZSBuZXcgb25lIGFzIFJ1biAyLiBBbnkgYWRkaXRpb25hbCBwcm9m
aWxlcwotICAgICAgICAgICAgLy8gd2l0aCB0aGUgc2FtZSB0aXRsZSB3aWxsIGJlIGFkZGVkIGFz
IFJ1biBuLgotICAgICAgICAgICAgb2xkUHJvZmlsZVRyZWVFbGVtZW50Lm1haW5UaXRsZSA9IFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiUnVuICVkIikuZm9ybWF0KDEpOwotICAgICAgICAgICAgcHJv
ZmlsZVRyZWVFbGVtZW50Lm1haW5UaXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiUnVuICVk
IikuZm9ybWF0KDIpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBwcm9maWxlRm9sZGVyRWxl
bWVudC5hcHBlbmRDaGlsZChvbGRQcm9maWxlVHJlZUVsZW1lbnQpOwotICAgICAgICAgICAgcHJv
ZmlsZUZvbGRlckVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvZmlsZVRyZWVFbGVtZW50KTsKLQotICAg
ICAgICAgICAgdGhpcy5fcHJvZmlsZVRyZWVFbGVtZW50TWFwW3RpdGxlXSA9IHByb2ZpbGVGb2xk
ZXJFbGVtZW50OwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfSwKLQotICAg
IF9wcm9maWxlV2FzVXBkYXRlZDogZnVuY3Rpb24oZXZlbnQpCi0gICAgewotICAgICAgICB2YXIg
cHJvZmlsZSA9IGV2ZW50LmRhdGEucHJvZmlsZTsKLSAgICAgICAgY29uc29sZS5hc3NlcnQocHJv
ZmlsZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Qcm9maWxlT2JqZWN0KTsKLQotICAgICAgICB2
YXIgdHJlZUVsZW1lbnQgPSB0aGlzLnRyZWVFbGVtZW50Rm9yUmVwcmVzZW50ZWRPYmplY3QocHJv
ZmlsZSk7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRyZWVFbGVtZW50KTsKLSAgICAgICAgaWYg
KCF0cmVlRWxlbWVudCkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAvLyBVcGRhdGUg
dGhlIHRpdGxlIG9mIHRoZSB0cmVlIGVsZW1lbnQuCi0gICAgICAgIHRyZWVFbGVtZW50Lm1haW5U
aXRsZSA9IHRoaXMuX3RpdGxlRm9yUHJvZmlsZShwcm9maWxlKTsKLSAgICB9LAotCi0gICAgX3By
b2ZpbGVzQ2xlYXJlZDogZnVuY3Rpb24oZXZlbnQpCi0gICAgewotICAgICAgICB0aGlzLmNvbnRl
bnRUcmVlT3V0bGluZS5yZW1vdmVDaGlsZHJlbigpOwotICAgICAgICB0aGlzLl9wcm9maWxlVHJl
ZUVsZW1lbnRNYXAgPSB7fTsKLSAgICAgICAgCi0gICAgICAgIFdlYkluc3BlY3Rvci5jb250ZW50
QnJvd3Nlci5jb250ZW50Vmlld0NvbnRhaW5lci5jbG9zZUFsbENvbnRlbnRWaWV3c09mUHJvdG90
eXBlKFdlYkluc3BlY3Rvci5KYXZhU2NyaXB0UHJvZmlsZVZpZXcpOwotICAgICAgICBXZWJJbnNw
ZWN0b3IuY29udGVudEJyb3dzZXIuY29udGVudFZpZXdDb250YWluZXIuY2xvc2VBbGxDb250ZW50
Vmlld3NPZlByb3RvdHlwZShXZWJJbnNwZWN0b3IuQ1NTU2VsZWN0b3JQcm9maWxlVmlldyk7Ci0g
ICAgICAgIFdlYkluc3BlY3Rvci5jb250ZW50QnJvd3Nlci5jb250ZW50Vmlld0NvbnRhaW5lci5j
bG9zZUFsbENvbnRlbnRWaWV3c09mUHJvdG90eXBlKFdlYkluc3BlY3Rvci5DYW52YXNQcm9maWxl
Vmlldyk7Ci0gICAgICAgIAotICAgICAgICB0aGlzLnVwZGF0ZUVtcHR5Q29udGVudFBsYWNlaG9s
ZGVyKFdlYkluc3BlY3Rvci5VSVN0cmluZygiTm8gUmVjb3JkZWQgUHJvZmlsZXMiKSk7Ci0gICAg
fSwKLQotICAgIF9wcm9maWxlU2VsZWN0ZWQ6IGZ1bmN0aW9uKHRyZWVFbGVtZW50LCBzZWxlY3Rl
ZEJ5VXNlcikKLSAgICB7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRyZWVFbGVtZW50LnJlcHJl
c2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlByb2ZpbGVPYmplY3QpOwotICAg
ICAgICBpZiAoISh0cmVlRWxlbWVudC5yZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYklu
c3BlY3Rvci5Qcm9maWxlT2JqZWN0KSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAv
LyBEZXNlbGVjdCBhbnkgdHJlZSBlbGVtZW50IGluIHRoZSB0aW1lbGluZXMgdHJlZSBvdXRsaW5l
IHRvIHByZXZlbnQgdHdvIHNlbGVjdGlvbnMgaW4gdGhlIHNpZGViYXIuCi0gICAgICAgIHZhciBz
ZWxlY3RlZFRyZWVFbGVtZW50ID0gdGhpcy5fdGltZWxpbmVzVHJlZU91dGxpbmUuc2VsZWN0ZWRU
cmVlRWxlbWVudDsKLSAgICAgICAgaWYgKHNlbGVjdGVkVHJlZUVsZW1lbnQpCi0gICAgICAgICAg
ICBzZWxlY3RlZFRyZWVFbGVtZW50LmRlc2VsZWN0KCk7Ci0KLSAgICAgICAgV2ViSW5zcGVjdG9y
LmNvbnRlbnRCcm93c2VyLnNob3dDb250ZW50Vmlld0ZvclJlcHJlc2VudGVkT2JqZWN0KHRyZWVF
bGVtZW50LnJlcHJlc2VudGVkT2JqZWN0KTsKLSAgICB9Ci19OwotCi1XZWJJbnNwZWN0b3IuSW5z
dHJ1bWVudFNpZGViYXJQYW5lbC5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLk5h
dmlnYXRpb25TaWRlYmFyUGFuZWwucHJvdG90eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCmluZGV4IGFlOTExMzUuLjVkZjcwMzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbAorKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwKQEAgLTgxLDkgKzgx
LDggQEAKICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IkFwcGxpY2F0aW9uQ2FjaGVJ
Y29ucy5jc3MiPgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iUmVzb3VyY2VUcmVl
RWxlbWVudC5jc3MiPgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVHJlZUVsZW1l
bnRTdGF0dXNCdXR0b24uY3NzIj4KLSAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Iklu
c3RydW1lbnRTaWRlYmFyUGFuZWwuY3NzIj4KKyAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9IlRpbWVsaW5lU2lkZWJhclBhbmVsLmNzcyI+CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSJJbnN0cnVtZW50SWNvbnMuY3NzIj4KLSAgICA8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9IlRpbWVsaW5lc0NvbnRlbnRWaWV3LmNzcyI+CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSJUaW1lbGluZURlY29yYXRpb25zLmNzcyI+CiAgICAgPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSJOZXR3b3JrRGF0YUdyaWQuY3NzIj4KICAgICA8bGluayByZWw9InN0eWxl
c2hlZXQiIGhyZWY9IlRpbWVsaW5lRGF0YUdyaWQuY3NzIj4KQEAgLTMyMiwxNSArMzIxLDEzIEBA
CiAgICAgPHNjcmlwdCBzcmM9IkNTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yLmpzIj48L3Nj
cmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQ1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24uanMiPjwv
c2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJJbmRldGVybWluYXRlUHJvZ3Jlc3NTcGlubmVyLmpz
Ij48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iSW5zdHJ1bWVudFNpZGViYXJQYW5lbC5qcyI+
PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9IlRpbWVsaW5lU2lkZWJhclBhbmVsLmpzIj48L3Nj
cmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTmV0d29ya0dyYXBoQ2FsY3VsYXRvci5qcyI+PC9zY3Jp
cHQ+CiAgICAgPHNjcmlwdCBzcmM9IlRpbWVsaW5lRGVjb3JhdGlvbnMuanMiPjwvc2NyaXB0Pgot
ICAgIDxzY3JpcHQgc3JjPSJUaW1lbGluZXNPYmplY3QuanMiPjwvc2NyaXB0PgogICAgIDxzY3Jp
cHQgc3JjPSJUaW1lbGluZURhdGFHcmlkLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0i
TmV0d29ya0RhdGFHcmlkLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTGF5b3V0VGlt
ZWxpbmVEYXRhR3JpZC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlNjcmlwdFRpbWVs
aW5lRGF0YUdyaWQuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJUaW1lbGluZXNDb250
ZW50Vmlldy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlJlc291cmNlVGltZWxpbmVE
YXRhR3JpZE5vZGUuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJSZXNvdXJjZVRpbWVs
aW5lRGF0YUdyaWROb2RlUGF0aENvbXBvbmVudC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBz
cmM9IkxheW91dFRpbWVsaW5lUmVjb3JkLmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uanMgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9NYWluLmpzCmluZGV4IDI3Nzg2YTguLjg5ZmIyNzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uanMKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5qcwpAQCAtMjIxLDE1ICsy
MjEsMTUgQEAgV2ViSW5zcGVjdG9yLmNvbnRlbnRMb2FkZWQgPSBmdW5jdGlvbigpCiAgICAgdGhp
cy50b29sYmFyLmFkZFRvb2xiYXJJdGVtKHRoaXMudW5kb2NrQnV0dG9uTmF2aWdhdGlvbkl0ZW0s
IFdlYkluc3BlY3Rvci5Ub29sYmFyLlNlY3Rpb24uQ29udHJvbCk7CiAKICAgICB0aGlzLnJlc291
cmNlU2lkZWJhclBhbmVsID0gbmV3IFdlYkluc3BlY3Rvci5SZXNvdXJjZVNpZGViYXJQYW5lbDsK
LSAgICB0aGlzLmluc3RydW1lbnRTaWRlYmFyUGFuZWwgPSBuZXcgV2ViSW5zcGVjdG9yLkluc3Ry
dW1lbnRTaWRlYmFyUGFuZWw7CisgICAgdGhpcy50aW1lbGluZVNpZGViYXJQYW5lbCA9IG5ldyBX
ZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFuZWw7CiAgICAgdGhpcy5kZWJ1Z2dlclNpZGVi
YXJQYW5lbCA9IG5ldyBXZWJJbnNwZWN0b3IuRGVidWdnZXJTaWRlYmFyUGFuZWw7CiAKICAgICB0
aGlzLm5hdmlnYXRpb25TaWRlYmFyLmFkZFNpZGViYXJQYW5lbCh0aGlzLnJlc291cmNlU2lkZWJh
clBhbmVsKTsKLSAgICB0aGlzLm5hdmlnYXRpb25TaWRlYmFyLmFkZFNpZGViYXJQYW5lbCh0aGlz
Lmluc3RydW1lbnRTaWRlYmFyUGFuZWwpOworICAgIHRoaXMubmF2aWdhdGlvblNpZGViYXIuYWRk
U2lkZWJhclBhbmVsKHRoaXMudGltZWxpbmVTaWRlYmFyUGFuZWwpOwogICAgIHRoaXMubmF2aWdh
dGlvblNpZGViYXIuYWRkU2lkZWJhclBhbmVsKHRoaXMuZGVidWdnZXJTaWRlYmFyUGFuZWwpOwog
CiAgICAgdGhpcy50b29sYmFyLmFkZFRvb2xiYXJJdGVtKHRoaXMucmVzb3VyY2VTaWRlYmFyUGFu
ZWwudG9vbGJhckl0ZW0sIFdlYkluc3BlY3Rvci5Ub29sYmFyLlNlY3Rpb24uTGVmdCk7Ci0gICAg
dGhpcy50b29sYmFyLmFkZFRvb2xiYXJJdGVtKHRoaXMuaW5zdHJ1bWVudFNpZGViYXJQYW5lbC50
b29sYmFySXRlbSwgV2ViSW5zcGVjdG9yLlRvb2xiYXIuU2VjdGlvbi5MZWZ0KTsKKyAgICB0aGlz
LnRvb2xiYXIuYWRkVG9vbGJhckl0ZW0odGhpcy50aW1lbGluZVNpZGViYXJQYW5lbC50b29sYmFy
SXRlbSwgV2ViSW5zcGVjdG9yLlRvb2xiYXIuU2VjdGlvbi5MZWZ0KTsKICAgICB0aGlzLnRvb2xi
YXIuYWRkVG9vbGJhckl0ZW0odGhpcy5kZWJ1Z2dlclNpZGViYXJQYW5lbC50b29sYmFySXRlbSwg
V2ViSW5zcGVjdG9yLlRvb2xiYXIuU2VjdGlvbi5MZWZ0KTsKIAogICAgIC8vIFRoZSB0b29sYmFy
IGJ1dHRvbiBmb3IgdGhlIGNvbnNvbGUuCkBAIC0zNTksOSArMzU5LDYgQEAgV2ViSW5zcGVjdG9y
LnNpZGViYXJQYW5lbEZvclJlcHJlc2VudGVkT2JqZWN0ID0gZnVuY3Rpb24ocmVwcmVzZW50ZWRP
YmplY3QpCiAgICAgaWYgKHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9y
LkxvZ09iamVjdCkKICAgICAgICAgcmV0dXJuIG51bGw7CiAKLSAgICBpZiAocmVwcmVzZW50ZWRP
YmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuVGltZWxpbmVzT2JqZWN0IHx8IHJlcHJlc2Vu
dGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlByb2ZpbGVPYmplY3QpCi0gICAgICAg
IHJldHVybiB0aGlzLmluc3RydW1lbnRTaWRlYmFyUGFuZWw7Ci0KICAgICBjb25zb2xlLmVycm9y
KCJVbmtub3duIHJlcHJlc2VudGVkT2JqZWN0OiAiLCByZXByZXNlbnRlZE9iamVjdCk7CiAgICAg
cmV0dXJuIG51bGw7CiB9CkBAIC01MTcsNyArNTE0LDcgQEAgV2ViSW5zcGVjdG9yLm9wZW5VUkwg
PSBmdW5jdGlvbih1cmwsIGZyYW1lLCBhbHdheXNPcGVuRXh0ZXJuYWxseSwgbGluZU51bWJlcikK
ICAgICAgICAgY29uc29sZS5hc3NlcnQocHJvZmlsZVRpdGxlWzBdID09PSAnLycpOwogICAgICAg
ICBwcm9maWxlVGl0bGUgPSBwcm9maWxlVGl0bGUuc3Vic3RyaW5nKDEpOwogCi0gICAgICAgIHRo
aXMuaW5zdHJ1bWVudFNpZGViYXJQYW5lbC5zaG93UHJvZmlsZShwcm9maWxlVHlwZSwgcHJvZmls
ZVRpdGxlKTsKKyAgICAgICAgdGhpcy50aW1lbGluZVNpZGViYXJQYW5lbC5zaG93UHJvZmlsZShw
cm9maWxlVHlwZSwgcHJvZmlsZVRpdGxlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvT2JqZWN0LmpzIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvT2JqZWN0LmpzCmluZGV4IDJjM2Fi
MTkuLjA4MTlmZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL09iamVjdC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9P
YmplY3QuanMKQEAgLTU1LDExICs1NSwxMSBAQCBXZWJJbnNwZWN0b3IuT2JqZWN0LmFkZEV2ZW50
TGlzdGVuZXIgPSBmdW5jdGlvbihldmVudFR5cGUsIGxpc3RlbmVyLCB0aGlzT2JqZWN0KQogewog
ICAgIHRoaXNPYmplY3QgPSB0aGlzT2JqZWN0IHx8IG51bGw7CiAKLSAgICBjb25zb2xlLmFzc2Vy
dChldmVudFR5cGUpOworICAgIGNvbnNvbGUuYXNzZXJ0KGV2ZW50VHlwZSwgIlVua25vd24gZXZl
bnRUeXBlIHJlZ2lzdGVyaW5nIGxpc3RlbmVyICIgKyBsaXN0ZW5lcik7CiAgICAgaWYgKCFldmVu
dFR5cGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIGNvbnNvbGUuYXNzZXJ0KGxpc3RlbmVyKTsK
KyAgICBjb25zb2xlLmFzc2VydChsaXN0ZW5lciwgIk5vIGxpc3RlbmVyIHdoZW4gcmVnaXN0ZXJp
bmcgZm9yIGV2ZW50VHlwZSAiICsgZXZlbnRUeXBlKTsKICAgICBpZiAoIWxpc3RlbmVyKQogICAg
ICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1RpbWVsaW5lTWFuYWdlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1RpbWVsaW5lTWFuYWdlci5qcwppbmRleCBhMWFkNDZlLi45YWI2Njg3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UaW1lbGluZU1hbmFnZXIu
anMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGltZWxpbmVNYW5h
Z2VyLmpzCkBAIC0zMiwxMSArMzIsNiBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVNYW5hZ2VyID0g
ZnVuY3Rpb24oKQogICAgIFdlYkluc3BlY3Rvci5GcmFtZS5hZGRFdmVudExpc3RlbmVyKFdlYklu
c3BlY3Rvci5GcmFtZS5FdmVudC5SZXNvdXJjZVdhc0FkZGVkLCB0aGlzLl9yZXNvdXJjZVdhc0Fk
ZGVkLCB0aGlzKTsKIAogICAgIHRoaXMuX3JlY29yZGluZyA9IGZhbHNlOwotICAgIHRoaXMuX3Jl
Y29yZHMgPSBbXTsKLSAgICB0aGlzLl90eXBlUmVjb3JkcyA9IHt9OwotICAgIHRoaXMuX2xvYWRF
dmVudFRpbWUgPSBOYU47Ci0gICAgdGhpcy5fZXZlbnRNYXJrZXJzID0gW107Ci0gICAgdGhpcy5f
dGltZWxpbmVzT2JqZWN0ID0gbmV3IFdlYkluc3BlY3Rvci5UaW1lbGluZXNPYmplY3Q7CiB9Owog
CiBXZWJJbnNwZWN0b3IuVGltZWxpbmVNYW5hZ2VyLkV2ZW50ID0gewpAQCAtNjYsMzMgKzYxLDEx
IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZU1hbmFnZXIucHJvdG90eXBlID0gewogICAgICAgICBy
ZXR1cm4gdGhpcy5fbG9hZEV2ZW50VGltZTsKICAgICB9LAogCi0gICAgZ2V0IHRpbWVsaW5lRXZl
bnRNYXJrZXJzKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9ldmVudE1hcmtlcnM7Ci0g
ICAgfSwKLQotICAgIGdldCByZWNvcmRzKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9y
ZWNvcmRzOwotICAgIH0sCi0KLSAgICBnZXQgdGltZWxpbmVzKCkKLSAgICB7Ci0gICAgICAgIHJl
dHVybiB0aGlzLl90aW1lbGluZXNPYmplY3Q7Ci0gICAgfSwKLQotICAgIHJlY29yZHNXaXRoVHlw
ZTogZnVuY3Rpb24odHlwZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl90eXBlUmVjb3Jk
c1t0eXBlXSB8fCBbXTsKLSAgICB9LAotCiAgICAgc3RhcnRSZWNvcmRpbmc6IGZ1bmN0aW9uKCkK
ICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9yZWNvcmRpbmcpCiAgICAgICAgICAgICByZXR1cm47
CiAKLSAgICAgICAgdGhpcy5fY2xlYXIoKTsKLQogICAgICAgICB0aGlzLl9yZWNvcmRpbmcgPSB0
cnVlOwogCiAgICAgICAgIFRpbWVsaW5lQWdlbnQuc3RhcnQoKTsKQEAgLTE1Myw2ICsxMjYsNyBA
QCBXZWJJbnNwZWN0b3IuVGltZWxpbmVNYW5hZ2VyLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAg
ICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuVGltZWxpbmVN
YW5hZ2VyLkV2ZW50LlJlY29yZGVkRXZlbnRNYXJrZXIsIHtldmVudE1hcmtlcjogZXZlbnRNYXJr
ZXJ9KTsKICAgICAgICAgICAgICAgICB0aGlzLl9zdG9wQXV0b1JlY29yZGluZ1Nvb24oKTsKICAg
ICAgICAgICAgICAgICBicmVhazsKKwogICAgICAgICAgICAgY2FzZSBUaW1lbGluZUFnZW50LkV2
ZW50VHlwZS5NYXJrRE9NQ29udGVudDoKICAgICAgICAgICAgICAgICB2YXIgbWFpbkZyYW1lID0g
V2ViSW5zcGVjdG9yLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLm1haW5GcmFtZTsKICAgICAgICAgICAg
ICAgICBjb25zb2xlLmFzc2VydChtYWluRnJhbWUpOwpAQCAtMTY0LDE5ICsxMzgsMjMgQEAgV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lTWFuYWdlci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAg
dGhpcy5fZXZlbnRNYXJrZXJzLnB1c2goZXZlbnRNYXJrZXIpOwogICAgICAgICAgICAgICAgIHRo
aXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5UaW1lbGluZU1hbmFnZXIu
RXZlbnQuUmVjb3JkZWRFdmVudE1hcmtlciwge2V2ZW50TWFya2VyOiBldmVudE1hcmtlcn0pOwog
ICAgICAgICAgICAgICAgIGJyZWFrOworCiAgICAgICAgICAgICBjYXNlIFRpbWVsaW5lQWdlbnQu
RXZlbnRUeXBlLlNjaGVkdWxlU3R5bGVSZWNhbGN1bGF0aW9uOgogICAgICAgICAgICAgICAgIGNv
bnNvbGUuYXNzZXJ0KGlzTmFOKGVuZFRpbWUpKTsKICAgICAgICAgICAgICAgICAvLyBQYXNzIHRo
ZSBzdGFydFRpbWUgYXMgdGhlIGVuZFRpbWUgc2luY2UgdGhpcyByZWNvcmQgdHlwZSBoYXMgbm8g
ZHVyYXRpb24uCiAgICAgICAgICAgICAgICAgdGhpcy5fYWRkUmVjb3JkKG5ldyBXZWJJbnNwZWN0
b3IuTGF5b3V0VGltZWxpbmVSZWNvcmQoV2ViSW5zcGVjdG9yLkxheW91dFRpbWVsaW5lUmVjb3Jk
LkV2ZW50VHlwZS5JbnZhbGlkYXRlU3R5bGVzLCBzdGFydFRpbWUsIHN0YXJ0VGltZSwgY2FsbEZy
YW1lcykpOwogICAgICAgICAgICAgICAgIGJyZWFrOworCiAgICAgICAgICAgICBjYXNlIFRpbWVs
aW5lQWdlbnQuRXZlbnRUeXBlLlJlY2FsY3VsYXRlU3R5bGVzOgogICAgICAgICAgICAgICAgIHRo
aXMuX2FkZFJlY29yZChuZXcgV2ViSW5zcGVjdG9yLkxheW91dFRpbWVsaW5lUmVjb3JkKFdlYklu
c3BlY3Rvci5MYXlvdXRUaW1lbGluZVJlY29yZC5FdmVudFR5cGUuUmVjYWxjdWxhdGVTdHlsZXMs
IHN0YXJ0VGltZSwgZW5kVGltZSwgY2FsbEZyYW1lcykpOwogICAgICAgICAgICAgICAgIGJyZWFr
OworCiAgICAgICAgICAgICBjYXNlIFRpbWVsaW5lQWdlbnQuRXZlbnRUeXBlLkludmFsaWRhdGVM
YXlvdXQ6CiAgICAgICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoaXNOYU4oZW5kVGltZSkpOwog
ICAgICAgICAgICAgICAgIC8vIFBhc3MgdGhlIHN0YXJ0VGltZSBhcyB0aGUgZW5kVGltZSBzaW5j
ZSB0aGlzIHJlY29yZCB0eXBlIGhhcyBubyBkdXJhdGlvbi4KICAgICAgICAgICAgICAgICB0aGlz
Ll9hZGRSZWNvcmQobmV3IFdlYkluc3BlY3Rvci5MYXlvdXRUaW1lbGluZVJlY29yZChXZWJJbnNw
ZWN0b3IuTGF5b3V0VGltZWxpbmVSZWNvcmQuRXZlbnRUeXBlLkludmFsaWRhdGVMYXlvdXQsIHN0
YXJ0VGltZSwgc3RhcnRUaW1lLCBjYWxsRnJhbWVzKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CisKICAgICAgICAgICAgIGNhc2UgVGltZWxpbmVBZ2VudC5FdmVudFR5cGUuTGF5b3V0OgogICAg
ICAgICAgICAgICAgIC8vIENPTVBBVElCSUxJVFkgKGlPUyA2KTogTGF5b3V0IHJlY29yZHMgZGlk
IG5vdCBjb250YWluIGFyZWEgcHJvcGVydGllcy4gVGhpcyBpcyBub3QgZXhwb3NlZCB2aWEgYSBx
dWFkICJyb290Ii4KICAgICAgICAgICAgICAgICB2YXIgcXVhZCA9IHJlY29yZC5kYXRhLnJvb3Qg
PyBuZXcgV2ViSW5zcGVjdG9yLlF1YWQocmVjb3JkLmRhdGEucm9vdCkgOiBudWxsOwpAQCAtMTg1
LDYgKzE2Myw3IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZU1hbmFnZXIucHJvdG90eXBlID0gewog
ICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgdGhpcy5fYWRkUmVjb3Jk
KG5ldyBXZWJJbnNwZWN0b3IuTGF5b3V0VGltZWxpbmVSZWNvcmQoV2ViSW5zcGVjdG9yLkxheW91
dFRpbWVsaW5lUmVjb3JkLkV2ZW50VHlwZS5MYXlvdXQsIHN0YXJ0VGltZSwgZW5kVGltZSwgY2Fs
bEZyYW1lcykpOwogICAgICAgICAgICAgICAgIGJyZWFrOworCiAgICAgICAgICAgICBjYXNlIFRp
bWVsaW5lQWdlbnQuRXZlbnRUeXBlLlBhaW50OgogICAgICAgICAgICAgICAgIC8vIENPTVBBVElC
SUxJVFkgKGlPUyA2KTogUGFpbnQgcmVjb3JkcyBkYXRhIGNvbnRhaW5lZCB4LCB5LCB3aWR0aCwg
aGVpZ2h0IHByb3BlcnRpZXMuIFRoaXMgYmVjYW1lIGEgcXVhZCAiY2xpcCIuCiAgICAgICAgICAg
ICAgICAgdmFyIHF1YWQgPSByZWNvcmQuZGF0YS5jbGlwID8gbmV3IFdlYkluc3BlY3Rvci5RdWFk
KHJlY29yZC5kYXRhLmNsaXApIDogbnVsbDsKQEAgLTE5Myw2ICsxNzIsNyBAQCBXZWJJbnNwZWN0
b3IuVGltZWxpbmVNYW5hZ2VyLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICBlbHNlCiAg
ICAgICAgICAgICAgICAgICAgIHRoaXMuX2FkZFJlY29yZChuZXcgV2ViSW5zcGVjdG9yLkxheW91
dFRpbWVsaW5lUmVjb3JkKFdlYkluc3BlY3Rvci5MYXlvdXRUaW1lbGluZVJlY29yZC5FdmVudFR5
cGUuUGFpbnQsIHN0YXJ0VGltZSwgZW5kVGltZSwgY2FsbEZyYW1lcywgcmVjb3JkLmRhdGEueCwg
cmVjb3JkLmRhdGEueSwgcmVjb3JkLmRhdGEud2lkdGgsIHJlY29yZC5kYXRhLmhlaWdodCkpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOworCiAgICAgICAgICAgICBjYXNlIFRpbWVsaW5lQWdlbnQu
RXZlbnRUeXBlLkV2YWx1YXRlU2NyaXB0OgogICAgICAgICAgICAgICAgIHZhciByZXNvdXJjZSA9
IFdlYkluc3BlY3Rvci5mcmFtZVJlc291cmNlTWFuYWdlci5yZXNvdXJjZUZvclVSTChyZWNvcmQu
ZGF0YS51cmwpOwogCkBAIC0yMDksMTEgKzE4OSwxMyBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVN
YW5hZ2VyLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAg
ICBicmVhazsKKwogICAgICAgICAgICAgY2FzZSBUaW1lbGluZUFnZW50LkV2ZW50VHlwZS5UaW1l
U3RhbXA6CiAgICAgICAgICAgICAgICAgdmFyIGV2ZW50TWFya2VyID0gbmV3IFdlYkluc3BlY3Rv
ci5UaW1lbGluZUV2ZW50TWFya2VyKHN0YXJ0VGltZSwgV2ViSW5zcGVjdG9yLlRpbWVsaW5lRXZl
bnRNYXJrZXIuVHlwZS5UaW1lU3RhbXApOwogICAgICAgICAgICAgICAgIHRoaXMuX2V2ZW50TWFy
a2Vycy5wdXNoKGV2ZW50TWFya2VyKTsKICAgICAgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZl
bnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuVGltZWxpbmVNYW5hZ2VyLkV2ZW50LlJlY29yZGVk
RXZlbnRNYXJrZXIsIHtldmVudE1hcmtlcjogZXZlbnRNYXJrZXJ9KTsKICAgICAgICAgICAgICAg
ICBicmVhazsKKwogICAgICAgICAgICAgY2FzZSBUaW1lbGluZUFnZW50LkV2ZW50VHlwZS5GdW5j
dGlvbkNhbGw6CiAgICAgICAgICAgICAgICAgLy8gRnVuY3Rpb25DYWxsIGFsd2F5cyBoYXBwZW5z
IGFzIGEgY2hpbGQgb2YgYW5vdGhlciByZWNvcmQsIGFuZCBzaW5jZSB0aGUgRnVuY3Rpb25DYWxs
IHJlY29yZAogICAgICAgICAgICAgICAgIC8vIGhhcyB1c2VmdWwgaW5mbyB3ZSBqdXN0IG1ha2Ug
dGhlIHRpbWVsaW5lIHJlY29yZCBoZXJlIChjb21iaW5pbmcgdGhlIGRhdGEgZnJvbSBib3RoIHJl
Y29yZHMpLgpAQCAtMjQ0LDYgKzIyNiw3IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZU1hbmFnZXIu
cHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIGJyZWFr
OworCiAgICAgICAgICAgICBjYXNlIFRpbWVsaW5lQWdlbnQuRXZlbnRUeXBlLlRpbWVySW5zdGFs
bDoKICAgICAgICAgICAgIGNhc2UgVGltZWxpbmVBZ2VudC5FdmVudFR5cGUuVGltZXJSZW1vdmU6
CiAgICAgICAgICAgICAgICAgLy8gQ09NUEFUSUJJTElUWSAoaU9TIDYpOiBUaW1lckluc3RhbGwg
YW5kIFRpbWVyUmVtb3ZlIGRpZCBub3QgaGF2ZSBhIHN0YWNrIHRyYWNlLgpAQCAtMzAxLDIxICsy
ODQsMTIgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lTWFuYWdlci5wcm90b3R5cGUgPSB7CiAKICAg
ICBvYmplY3RGb3JDb29raWU6IGZ1bmN0aW9uKGNvb2tpZSkKICAgICB7Ci0gICAgICAgIHJldHVy
biB0aGlzLnRpbWVsaW5lczsKKyAgICAgICAgLy8gRklYTUU6IE5lZWRzIHRvIHJldHVybiBzb21l
dGhpbmcgdXNlZnVsIHdoZW4gV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29va2llVHlwZS5UaW1l
bGluZXMgaXMgdXNlZCBhZ2Fpbi4KKyAgICAgICAgcmV0dXJuIHt9OwogICAgIH0sCiAKICAgICAv
LyBQcml2YXRlCiAKLSAgICBfY2xlYXI6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHRoaXMu
X3JlY29yZHMgPSBbXTsKLSAgICAgICAgdGhpcy5fdHlwZVJlY29yZHMgPSB7fTsKLSAgICAgICAg
dGhpcy5fbG9hZEV2ZW50VGltZSA9IE5hTjsKLSAgICAgICAgdGhpcy5fZXZlbnRNYXJrZXJzID0g
W107Ci0KLSAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9y
LlRpbWVsaW5lTWFuYWdlci5FdmVudC5SZWNvcmRzQ2xlYXJlZCk7Ci0gICAgfSwKLQogICAgIF9j
YWxsRnJhbWVzRnJvbVBheWxvYWQ6IGZ1bmN0aW9uKHBheWxvYWQpCiAgICAgewogICAgICAgICBp
ZiAoIXBheWxvYWQpCkBAIC0zNDksMTMgKzMyMyw3IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZU1h
bmFnZXIucHJvdG90eXBlID0gewogCiAgICAgX2FkZFJlY29yZDogZnVuY3Rpb24ocmVjb3JkKQog
ICAgIHsKLSAgICAgICAgdGhpcy5fcmVjb3Jkcy5wdXNoKHJlY29yZCk7Ci0KLSAgICAgICAgaWYg
KCF0aGlzLl90eXBlUmVjb3Jkc1tyZWNvcmQudHlwZV0pCi0gICAgICAgICAgICB0aGlzLl90eXBl
UmVjb3Jkc1tyZWNvcmQudHlwZV0gPSBbXTsKLSAgICAgICAgdGhpcy5fdHlwZVJlY29yZHNbcmVj
b3JkLnR5cGVdLnB1c2gocmVjb3JkKTsKLQotICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xp
c3RlbmVycyhXZWJJbnNwZWN0b3IuVGltZWxpbmVNYW5hZ2VyLkV2ZW50LlJlY29yZEFkZGVkLCB7
cmVjb3JkOiByZWNvcmR9KTsKKyAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudC4KIAogICAgICAg
ICAvLyBPbmx5IHdvcnJ5IGFib3V0IGRlYWQgdGltZSBhZnRlciB0aGUgbG9hZCBldmVudC4KICAg
ICAgICAgaWYgKCFpc05hTih0aGlzLl9sb2FkRXZlbnRUaW1lKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1RpbWVsaW5lT3ZlcnZpZXcuY3NzIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGltZWxpbmVPdmVydmlldy5jc3MKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJlMjM3ZTMuLjAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGltZWxpbmVPdmVydmlldy5jc3MKKysrIC9k
ZXYvbnVsbApAQCAtMSw3NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotLnRpbWVsaW5lLW92ZXJ2aWV3
ID4gLnRpbWVsaW5lIHsKLSAgICBoZWlnaHQ6IDI2cHg7Ci19Ci0KLS50aW1lbGluZS1vdmVydmll
dyA+IC50aW1lbGluZTpub3QoOmZpcnN0LWNoaWxkKSB7Ci0gICAgYm9yZGVyLXRvcDogMXB4IHNv
bGlkIHJnYigyMzUsIDIzNSwgMjM1KTsKLX0KLQotLnRpbWVsaW5lLW92ZXJ2aWV3ID4gLnRpbWVs
aW5lID4gLmJhci1jb250YWluZXIgewotICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKLSAgICBoZWln
aHQ6IDEwMCU7Ci0gICAgbWFyZ2luLWxlZnQ6IDNweDsKLSAgICBtYXJnaW4tcmlnaHQ6IDNweDsK
LX0KLQotLnRpbWVsaW5lLW92ZXJ2aWV3ID4gLnRpbWVsaW5lIC5iYXIgewotICAgIHBvc2l0aW9u
OiBhYnNvbHV0ZTsKLSAgICB0b3A6IDZweDsKLSAgICBtYXJnaW4tbGVmdDogLTJweDsKLSAgICBt
YXJnaW4tcmlnaHQ6IC0ycHg7Ci0gICAgYm9yZGVyLXdpZHRoOiA0cHggNHB4IDVweDsKLSAgICBi
b3JkZXItaW1hZ2Utc2xpY2U6IDQgNCA1IDQgZmlsbDsKLSAgICBoZWlnaHQ6IDEzcHg7Ci0gICAg
bWluLXdpZHRoOiA1cHg7Ci0gICAgb3BhY2l0eTogMC44OwotfQotCi0udGltZWxpbmUtb3ZlcnZp
ZXcgPiAudGltZWxpbmUgLmJhci53YWl0aW5nIHsKLSAgICBvcGFjaXR5OiAwLjQ7Ci19Ci0KLS50
aW1lbGluZS1vdmVydmlldyA+IC50aW1lbGluZS50aW1lbGluZS1yZWNvcmQtdHlwZS1uZXR3b3Jr
IC5iYXIgewotICAgIGJvcmRlci1pbWFnZS1zb3VyY2U6IC13ZWJraXQtaW1hZ2Utc2V0KHVybChJ
bWFnZXMvVGltZWxpbmVCYXJCbHVlLnBuZykgMXgsIHVybChJbWFnZXMvVGltZWxpbmVCYXJCbHVl
QDJ4LnBuZykgMngpOwotfQotCi0udGltZWxpbmUtb3ZlcnZpZXcgPiAudGltZWxpbmUudGltZWxp
bmUtcmVjb3JkLXR5cGUtbGF5b3V0IC5iYXIgewotICAgIGJvcmRlci1pbWFnZS1zb3VyY2U6IC13
ZWJraXQtaW1hZ2Utc2V0KHVybChJbWFnZXMvVGltZWxpbmVCYXJQdXJwbGUucG5nKSAxeCwgdXJs
KEltYWdlcy9UaW1lbGluZUJhclB1cnBsZUAyeC5wbmcpIDJ4KTsKLX0KLQotLnRpbWVsaW5lLW92
ZXJ2aWV3ID4gLnRpbWVsaW5lLnRpbWVsaW5lLXJlY29yZC10eXBlLXNjcmlwdCAuYmFyIHsKLSAg
ICBib3JkZXItaW1hZ2Utc291cmNlOiAtd2Via2l0LWltYWdlLXNldCh1cmwoSW1hZ2VzL1RpbWVs
aW5lQmFyT3JhbmdlLnBuZykgMXgsIHVybChJbWFnZXMvVGltZWxpbmVCYXJPcmFuZ2VAMngucG5n
KSAyeCk7Ci19Ci0KLS50aW1lbGluZS1vdmVydmlldyAudGltZWxpbmUtZGVjb3JhdGlvbnMgPiAu
ZXZlbnQtbWFya2VycyB7Ci0gICAgaGVpZ2h0OiA3OHB4OwotICAgIGJvdHRvbTogMjJweDsKLSAg
ICB0b3A6IGF1dG87Ci19Ci0KLS50aW1lbGluZS1vdmVydmlldyAudGltZWxpbmUtZGVjb3JhdGlv
bnMgPiAuZXZlbnQtbWFya2VycyA+IC5ldmVudC1tYXJrZXItdG9vbHRpcCB7Ci0gICAgei1pbmRl
eDogMzAwOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVGltZWxpbmVPdmVydmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1RpbWVsaW5lT3ZlcnZpZXcuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEx
N2ViODNlLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1RpbWVsaW5lT3ZlcnZpZXcuanMKKysrIC9kZXYvbnVsbApAQCAtMSwyNTEgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLVdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3ID0gZnVuY3Rpb24oZGF0YVNv
dXJjZSwgcmVjb3JkVHlwZXMpCi17Ci0gICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMp
OwotCi0gICAgY29uc29sZS5hc3NlcnQoZGF0YVNvdXJjZSk7Ci0gICAgY29uc29sZS5hc3NlcnQo
cmVjb3JkVHlwZXMgaW5zdGFuY2VvZiBBcnJheSk7Ci0KLSAgICB0aGlzLl9lbGVtZW50ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgdGhpcy5fZWxlbWVudC5jbGFzc05hbWUg
PSBXZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlldy5TdHlsZUNsYXNzTmFtZTsKLQotICAgIHRo
aXMuX3JlY29yZFR5cGVzID0gcmVjb3JkVHlwZXM7Ci0KLSAgICB0aGlzLl90aW1lbGluZURlY29y
YXRpb25zID0gbmV3IFdlYkluc3BlY3Rvci5UaW1lbGluZURlY29yYXRpb25zOwotCi0gICAgdGhp
cy5fdGltZWxpbmVFbGVtZW50cyA9IFtdOwotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5f
cmVjb3JkVHlwZXMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgdmFyIHRpbWVsaW5lRWxlbWVudCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICB0aW1lbGluZUVsZW1lbnQu
Y2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlldy5UaW1lbGluZUVsZW1l
bnRTdHlsZUNsYXNzTmFtZSk7Ci0gICAgICAgIHRpbWVsaW5lRWxlbWVudC5jbGFzc0xpc3QuYWRk
KHRoaXMuX3JlY29yZFR5cGVzW2ldKTsKLSAgICAgICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGls
ZCh0aW1lbGluZUVsZW1lbnQpOwotCi0gICAgICAgIHZhciBiYXJDb250YWluZXJFbGVtZW50ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgICAgIGJhckNvbnRhaW5lckVsZW1l
bnQuY2xhc3NOYW1lID0gV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXcuQmFyQ29udGFpbmVy
RWxlbWVudFN0eWxlQ2xhc3NOYW1lOwotICAgICAgICB0aW1lbGluZUVsZW1lbnQuYXBwZW5kQ2hp
bGQoYmFyQ29udGFpbmVyRWxlbWVudCk7Ci0gICAgICAgIHRpbWVsaW5lRWxlbWVudC5fYmFyQ29u
dGFpbmVyRWxlbWVudCA9IGJhckNvbnRhaW5lckVsZW1lbnQ7Ci0KLSAgICAgICAgdGhpcy5fdGlt
ZWxpbmVFbGVtZW50cy5wdXNoKHRpbWVsaW5lRWxlbWVudCk7Ci0gICAgfQotCi0gICAgdGhpcy5f
ZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl90aW1lbGluZURlY29yYXRpb25zLmVsZW1lbnQpOwot
Ci0gICAgdGhpcy5fZGF0YVNvdXJjZSA9IGRhdGFTb3VyY2U7Ci19OwotCi1XZWJJbnNwZWN0b3Iu
VGltZWxpbmVPdmVydmlldy5TdHlsZUNsYXNzTmFtZSA9ICJ0aW1lbGluZS1vdmVydmlldyI7Ci1X
ZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlldy5UaW1lbGluZUVsZW1lbnRTdHlsZUNsYXNzTmFt
ZSA9ICJ0aW1lbGluZSI7Ci1XZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlldy5CYXJDb250YWlu
ZXJFbGVtZW50U3R5bGVDbGFzc05hbWUgPSAiYmFyLWNvbnRhaW5lciI7Ci1XZWJJbnNwZWN0b3Iu
VGltZWxpbmVPdmVydmlldy5CYXJFbGVtZW50U3R5bGVDbGFzc05hbWUgPSAiYmFyIjsKLVdlYklu
c3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3LldhaXRpbmdCYXJFbGVtZW50U3R5bGVDbGFzc05hbWUg
PSAid2FpdGluZyI7Ci0KLVdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3LnByb3RvdHlwZSA9
IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXcsCi0KLSAg
ICAvLyBQdWJsaWMKLQotICAgIGdldCBlbGVtZW50KCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0
aGlzLl9lbGVtZW50OwotICAgIH0sCi0KLSAgICBnZXQgcmVjb3JkVHlwZXMoKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIHRoaXMuX3JlY29yZFR5cGVzOwotICAgIH0sCi0KLSAgICBjbGVhcjogZnVu
Y3Rpb24oKQotICAgIHsKLSAgICAgICAgdGhpcy5fbWluaW11bUJvdW5kYXJ5ID0gTmFOOwotICAg
ICAgICB0aGlzLl9tYXhpbXVtQm91bmRhcnkgPSBOYU47Ci0gICAgICAgIHRoaXMuX2JvdW5kYXJ5
U3BhbiA9IE5hTjsKLQotICAgICAgICB0aGlzLl90aW1lbGluZURlY29yYXRpb25zLmNsZWFyKCk7
Ci0gICAgICAgIHRoaXMuX3RpbWVsaW5lRGVjb3JhdGlvbnMudXBkYXRlSGVhZGVyVGltZXModGhp
cy5fYm91bmRhcnlTcGFuKTsKLQotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX3Rp
bWVsaW5lRWxlbWVudHMubGVuZ3RoOyArK2kpCi0gICAgICAgICAgICB0aGlzLl90aW1lbGluZUVs
ZW1lbnRzW2ldLl9iYXJDb250YWluZXJFbGVtZW50LnJlbW92ZUNoaWxkcmVuKCk7Ci0gICAgfSwK
LQotICAgIHVwZGF0ZTogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdmFyIG1pbmltdW1Cb3Vu
ZGFyeSA9IE5hTjsKLSAgICAgICAgdmFyIG1heGltdW1Cb3VuZGFyeSA9IE5hTjsKLQotICAgICAg
ICB2YXIgcmVjb3JkcyA9IFtdOwotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX3Jl
Y29yZFR5cGVzLmxlbmd0aDsgKytpKQotICAgICAgICAgICAgcmVjb3Jkcy5wdXNoKHRoaXMuX2Rh
dGFTb3VyY2UudGltZWxpbmVPdmVydmlld1JlY29yZHNXaXRoVHlwZSh0aGlzLl9yZWNvcmRUeXBl
c1tpXSkpOwotCi0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVjb3Jkcy5sZW5ndGg7ICsr
aSkgewotICAgICAgICAgICAgdmFyIGN1cnJlbnRSZWNvcmRzID0gcmVjb3Jkc1tpXTsKLSAgICAg
ICAgICAgIGlmICghY3VycmVudFJlY29yZHMubGVuZ3RoKQotICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwotCi0gICAgICAgICAgICAvLyBUaGUgZmlyc3QgcmVjb3JkIGNhbiBiZSBhc3N1bWVkIHRv
IGJlIHRoZSBvbGRlc3Qgc3RhcnQgdGltZS4KLSAgICAgICAgICAgIHZhciBmaXJzdFJlY29yZCA9
IGN1cnJlbnRSZWNvcmRzWzBdOwotICAgICAgICAgICAgaWYgKGlzTmFOKG1pbmltdW1Cb3VuZGFy
eSkgfHwgZmlyc3RSZWNvcmQuc3RhcnRUaW1lIDwgbWluaW11bUJvdW5kYXJ5KQotICAgICAgICAg
ICAgICAgIG1pbmltdW1Cb3VuZGFyeSA9IGZpcnN0UmVjb3JkLnN0YXJ0VGltZTsKLQotICAgICAg
ICAgICAgaWYgKHRoaXMuX3JlY29yZFR5cGVzW2ldID09PSBXZWJJbnNwZWN0b3IuVGltZWxpbmVS
ZWNvcmQuVHlwZS5OZXR3b3JrKSB7Ci0gICAgICAgICAgICAgICAgLy8gRm9yIHRoZSBOZXR3b3Jr
IHRpbWVsaW5lIHdlIG5lZWQgdG8gbG9vayBhdCBhbGwgdGhlIHJlY29yZHMgc2luY2UKLSAgICAg
ICAgICAgICAgICAvLyBsb25nIGxvYWRpbmcgcmVzb3VyY2VzIGNhbiBiZSBhbnl3aGVyZSwgbm90
IGp1c3QgYXQgdGhlIGVuZC4gVGhlIG90aGVyCi0gICAgICAgICAgICAgICAgLy8gdGltZWxpbmVz
IGFyZSBzdGF0aWMsIHNvIHRoZSBsYXN0IHJlY29yZCBpcyBhbHdheXMgdGhlIG5ld2VzdC4KLSAg
ICAgICAgICAgICAgICBmb3IgKHZhciBqID0gY3VycmVudFJlY29yZHMubGVuZ3RoIC0gMTsgaiA+
PSAwOyAtLWopIHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIHJlY29yZCA9IGN1cnJlbnRSZWNv
cmRzW2pdOwotICAgICAgICAgICAgICAgICAgICBpZiAoaXNOYU4obWF4aW11bUJvdW5kYXJ5KSB8
fCByZWNvcmQuZW5kVGltZSA+IG1heGltdW1Cb3VuZGFyeSkKLSAgICAgICAgICAgICAgICAgICAg
ICAgIG1heGltdW1Cb3VuZGFyeSA9IHJlY29yZC5lbmRUaW1lOwotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgLy8gVGhlIG5ld2VzdCByZWNv
cmQgd2lsbCBhbHdheXMgYmUgYXQgdGhlIGVuZC4KLSAgICAgICAgICAgICAgICB2YXIgbGFzdFJl
Y29yZCA9IGN1cnJlbnRSZWNvcmRzLmxhc3RWYWx1ZTsKLSAgICAgICAgICAgICAgICBpZiAoaXNO
YU4obWF4aW11bUJvdW5kYXJ5KSB8fCBsYXN0UmVjb3JkLmVuZFRpbWUgPiBtYXhpbXVtQm91bmRh
cnkpCi0gICAgICAgICAgICAgICAgICAgIG1heGltdW1Cb3VuZGFyeSA9IGxhc3RSZWNvcmQuZW5k
VGltZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIHRoaXMuX21pbmltdW1C
b3VuZGFyeSA9IG1pbmltdW1Cb3VuZGFyeTsKLSAgICAgICAgdGhpcy5fbWF4aW11bUJvdW5kYXJ5
ID0gbWF4aW11bUJvdW5kYXJ5OwotICAgICAgICB0aGlzLl9ib3VuZGFyeVNwYW4gPSBtYXhpbXVt
Qm91bmRhcnkgLSBtaW5pbXVtQm91bmRhcnk7Ci0KLSAgICAgICAgdGhpcy5fdGltZWxpbmVEZWNv
cmF0aW9ucy51cGRhdGVIZWFkZXJUaW1lcyh0aGlzLl9ib3VuZGFyeVNwYW4pOwotICAgICAgICB0
aGlzLl90aW1lbGluZURlY29yYXRpb25zLnVwZGF0ZUV2ZW50TWFya2Vycyh0aGlzLl9taW5pbXVt
Qm91bmRhcnksIHRoaXMuX21heGltdW1Cb3VuZGFyeSk7Ci0KLSAgICAgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCByZWNvcmRzLmxlbmd0aDsgKytpKQotICAgICAgICAgICAgdGhpcy5fdXBkYXRlVGlt
ZWxpbmVCYXJzKHRoaXMuX3RpbWVsaW5lRWxlbWVudHNbaV0sIHRoaXMuX3JlY29yZFR5cGVzW2ld
LCByZWNvcmRzW2ldKTsKLSAgICB9LAotCi0gICAgdXBkYXRlTGF5b3V0OiBmdW5jdGlvbigpCi0g
ICAgewotICAgICAgICB0aGlzLl90aW1lbGluZURlY29yYXRpb25zLnVwZGF0ZUhlYWRlclRpbWVz
KHRoaXMuX2JvdW5kYXJ5U3Bhbik7Ci0gICAgfSwKLQotICAgIGFkZFRpbWVsaW5lRXZlbnRNYXJr
ZXI6IGZ1bmN0aW9uKGV2ZW50TWFya2VyKQotICAgIHsKLSAgICAgICAgdGhpcy5fdGltZWxpbmVE
ZWNvcmF0aW9ucy5hZGRUaW1lbGluZUV2ZW50TWFya2VyKGV2ZW50TWFya2VyKTsKLSAgICB9LAot
Ci0gICAgLy8gUHJpdmF0ZQotCi0gICAgX3VwZGF0ZVRpbWVsaW5lQmFyczogZnVuY3Rpb24odGlt
ZWxpbmVFbGVtZW50LCB0eXBlLCByZWNvcmRzKQotICAgIHsKLSAgICAgICAgZnVuY3Rpb24gY29t
cHV0ZUFjdGl2ZVBlcmNlbnRhZ2VzKHJlY29yZCkKLSAgICAgICAgewotICAgICAgICAgICAgLy8g
Q29tcHV0ZSBwZXJjZW50YWdlcyBmb3IgZW5kVGltZSBhbmQgdGhlIHN0YXJ0IG9mIGFjdGl2ZUR1
cmF0aW9uLgotCi0gICAgICAgICAgICB2YXIgYWN0aXZlU3RhcnRUaW1lID0gcmVjb3JkLmVuZFRp
bWUgLSByZWNvcmQuYWN0aXZlRHVyYXRpb247Ci0gICAgICAgICAgICBpZiAoaXNOYU4oYWN0aXZl
U3RhcnRUaW1lKSkKLSAgICAgICAgICAgICAgICBhY3RpdmVTdGFydFRpbWUgPSByZWNvcmQuZW5k
VGltZTsKLQotICAgICAgICAgICAgaWYgKGlzTmFOKGFjdGl2ZVN0YXJ0VGltZSkpCi0gICAgICAg
ICAgICAgICAgdmFyIHN0YXJ0ID0gMDsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAg
ICB2YXIgc3RhcnQgPSAoKGFjdGl2ZVN0YXJ0VGltZSAtIHRoaXMuX21pbmltdW1Cb3VuZGFyeSkg
LyB0aGlzLl9ib3VuZGFyeVNwYW4pICogMTAwOwotCi0gICAgICAgICAgICBpZiAoaXNOYU4ocmVj
b3JkLmVuZFRpbWUpKQotICAgICAgICAgICAgICAgIHZhciBlbmQgPSAxMDA7Ci0gICAgICAgICAg
ICBlbHNlCi0gICAgICAgICAgICAgICAgdmFyIGVuZCA9ICgocmVjb3JkLmVuZFRpbWUgLSB0aGlz
Ll9taW5pbXVtQm91bmRhcnkpIC8gdGhpcy5fYm91bmRhcnlTcGFuKSAqIDEwMDsKLQotICAgICAg
ICAgICAgcmV0dXJuIHtzdGFydDogc3RhcnQsIGVuZDogZW5kfTsKLSAgICAgICAgfQotCi0gICAg
ICAgIGZ1bmN0aW9uIGNvbXB1dGVQZXJjZW50YWdlcyhyZWNvcmQpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIC8vIENvbXB1dGUgcGVyY2VudGFnZXMgZm9yIHN0YXJ0VGltZSBhbmQgZW5kVGltZS4K
LQotICAgICAgICAgICAgaWYgKGlzTmFOKHJlY29yZC5zdGFydFRpbWUpKQotICAgICAgICAgICAg
ICAgIHZhciBzdGFydCA9IDA7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgdmFy
IHN0YXJ0ID0gKChyZWNvcmQuc3RhcnRUaW1lIC0gdGhpcy5fbWluaW11bUJvdW5kYXJ5KSAvIHRo
aXMuX2JvdW5kYXJ5U3BhbikgKiAxMDA7Ci0KLSAgICAgICAgICAgIGlmIChpc05hTihyZWNvcmQu
ZW5kVGltZSkpCi0gICAgICAgICAgICAgICAgdmFyIGVuZCA9IDEwMDsKLSAgICAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgICAgICB2YXIgZW5kID0gKChyZWNvcmQuZW5kVGltZSAtIHRoaXMuX21p
bmltdW1Cb3VuZGFyeSkgLyB0aGlzLl9ib3VuZGFyeVNwYW4pICogMTAwOwotCi0gICAgICAgICAg
ICByZXR1cm4ge3N0YXJ0OiBzdGFydCwgZW5kOiBlbmR9OwotICAgICAgICB9Ci0KLSAgICAgICAg
ZnVuY3Rpb24gYWRkQmFyKHN0YXJ0UGVyY2VudGFnZSwgZW5kUGVyY2VudGFnZSwgZXh0cmFCYXJT
dHlsZUNsYXNzKQotICAgICAgICB7Ci0gICAgICAgICAgICB2YXIgYmFyRWxlbWVudCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICAgICAgYmFyRWxlbWVudC5jbGFzc05h
bWUgPSBXZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlldy5CYXJFbGVtZW50U3R5bGVDbGFzc05h
bWU7Ci0gICAgICAgICAgICBpZiAoZXh0cmFCYXJTdHlsZUNsYXNzKQotICAgICAgICAgICAgICAg
IGJhckVsZW1lbnQuY2xhc3NMaXN0LmFkZChleHRyYUJhclN0eWxlQ2xhc3MpOwotCi0gICAgICAg
ICAgICBpZiAoc3RhcnRQZXJjZW50YWdlID09PSAwIHx8IHN0YXJ0UGVyY2VudGFnZSAhPT0gZW5k
UGVyY2VudGFnZSkKLSAgICAgICAgICAgICAgICBiYXJFbGVtZW50LnN0eWxlLmxlZnQgPSBzdGFy
dFBlcmNlbnRhZ2UgKyAiJSI7Ci0gICAgICAgICAgICBiYXJFbGVtZW50LnN0eWxlLnJpZ2h0ID0g
KDEwMCAtIGVuZFBlcmNlbnRhZ2UpICsgIiUiOwotCi0gICAgICAgICAgICB0aW1lbGluZUVsZW1l
bnQuX2JhckNvbnRhaW5lckVsZW1lbnQuYXBwZW5kQ2hpbGQoYmFyRWxlbWVudCk7Ci0gICAgICAg
IH0KLQotICAgICAgICBmdW5jdGlvbiBjcmVhdGVCYXJzKHBlcmNlbnRhZ2VDYWxjdWxhdG9yLCBl
eHRyYUJhclN0eWxlQ2xhc3MpCi0gICAgICAgIHsKLSAgICAgICAgICAgIC8vIEl0ZXJhdGUgb3Zl
ciB0aGUgcmVjb3JkcyBhbmQgZmluZCB0aGUgcGVyY2VudGFnZSBkaXN0cmlidXRpb24gb24gdGhl
IGdyYXBoLgotICAgICAgICAgICAgLy8gVGhlIHBlcmNlbnRhZ2VzIGFyZSByZWNvcmRlZCBpbiBh
IHNwYXJzZSBhcnJheSBmcm9tIDAtMTAwLgotCi0gICAgICAgICAgICB2YXIgdGltZWxpbmVTbG90
cyA9IG5ldyBBcnJheSgxMDEpOwotICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZWNv
cmRzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICAgICAgdmFyIHBlcmNlbnRhZ2VzID0gcGVy
Y2VudGFnZUNhbGN1bGF0b3IuY2FsbCh0aGlzLCByZWNvcmRzW2ldKTsKLSAgICAgICAgICAgICAg
ICB2YXIgZW5kID0gTWF0aC5yb3VuZChwZXJjZW50YWdlcy5lbmQpOwotICAgICAgICAgICAgICAg
IGZvciAodmFyIGogPSBNYXRoLnJvdW5kKHBlcmNlbnRhZ2VzLnN0YXJ0KTsgaiA8PSBlbmQ7ICsr
aikKLSAgICAgICAgICAgICAgICAgICAgdGltZWxpbmVTbG90c1tqXSA9IHRydWU7Ci0gICAgICAg
ICAgICB9Ci0KLSAgICAgICAgICAgIHZhciBiYXJTdGFydCA9IE5hTjsKLSAgICAgICAgICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgdGltZWxpbmVTbG90cy5sZW5ndGg7ICsraSkgewotICAgICAgICAg
ICAgICAgIGlmICh0aW1lbGluZVNsb3RzW2ldKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChp
c05hTihiYXJTdGFydCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBiYXJTdGFydCA9IGk7Ci0g
ICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFpc05hTihi
YXJTdGFydCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGFkZEJhci5jYWxsKHRoaXMsIGJh
clN0YXJ0LCBpLCBleHRyYUJhclN0eWxlQ2xhc3MpOwotICAgICAgICAgICAgICAgICAgICAgICAg
YmFyU3RhcnQgPSBOYU47Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmICghaXNOYU4oYmFyU3RhcnQpKSB7Ci0g
ICAgICAgICAgICAgICAgYWRkQmFyLmNhbGwodGhpcywgYmFyU3RhcnQsIDEwMCwgZXh0cmFCYXJT
dHlsZUNsYXNzKTsKLSAgICAgICAgICAgICAgICBiYXJTdGFydCA9IE5hTjsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfQotCi0gICAgICAgIHRpbWVsaW5lRWxlbWVudC5fYmFyQ29udGFpbmVyRWxl
bWVudC5yZW1vdmVDaGlsZHJlbigpOwotCi0gICAgICAgIC8vIFRoZSBOZXR3b3JrIHRpbWVsaW5l
IHNob3dzIHR3byBiYXJzLiBUaGUgZmlyc3QgaXMgdGhlIHRvdGFsIHRpbWUgKHdhaXRpbmcgZm9y
IHRoZSByZXNvdXJjZSB1bnRpbCBpdCBmaW5pc2hlcykuCi0gICAgICAgIC8vIFRoZSBzZWNvbmQg
YmFyIGlzIHRoZSBhY3RpdmUgZG93bmxvYWQgdGltZSAoZmlyc3QgZmlyc3QgcmVzcG9uc2UgdG8g
ZmluaXNoLikKLSAgICAgICAgaWYgKHR5cGUgPT09IFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29y
ZC5UeXBlLk5ldHdvcmspIHsKLSAgICAgICAgICAgIGNyZWF0ZUJhcnMuY2FsbCh0aGlzLCBjb21w
dXRlUGVyY2VudGFnZXMsIFdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3LldhaXRpbmdCYXJF
bGVtZW50U3R5bGVDbGFzc05hbWUpOwotICAgICAgICAgICAgY3JlYXRlQmFycy5jYWxsKHRoaXMs
IGNvbXB1dGVBY3RpdmVQZXJjZW50YWdlcyk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAg
Y3JlYXRlQmFycy5jYWxsKHRoaXMsIGNvbXB1dGVQZXJjZW50YWdlcyk7Ci0gICAgfQotfTsKLQot
V2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXcucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYklu
c3BlY3Rvci5PYmplY3QucHJvdG90eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVGltZWxpbmVTaWRlYmFyUGFuZWwuY3NzIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGltZWxpbmVTaWRlYmFyUGFuZWwuY3NzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU2NjIyNDQKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UaW1lbGluZVNpZGViYXJQYW5lbC5j
c3MKQEAgLTAsMCArMSwyNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy5zaWRlYmFyID4gLnBhbmVsLnRpbWVs
aW5lIHsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1RpbWVsaW5lU2lkZWJhclBhbmVsLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVGltZWxpbmVTaWRlYmFyUGFuZWwuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uN2E2ZDA2NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1RpbWVsaW5lU2lkZWJhclBhbmVsLmpzCkBAIC0wLDAgKzEsMzYgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCitXZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwgPSBmdW5jdGlv
bigpCit7CisgICAgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwuY2FsbCh0aGlz
LCAidGltZWxpbmUiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlRpbWVsaW5lcyIpLCAiSW1hZ2Vz
L05hdmlnYXRpb25JdGVtU3RvcHdhdGNoLnN2ZyIsICIyIik7CisKKyAgICB0aGlzLmZpbHRlckJh
ci5wbGFjZWhvbGRlciA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiRmlsdGVyIFRpbWVsaW5lIExp
c3QiKTsKK307CisKK1dlYkluc3BlY3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbC5wcm90b3R5cGUg
PSB7CisgICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbCwK
KyAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLnByb3Rv
dHlwZSwKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9UaW1lbGluZXNDb250ZW50Vmlldy5jc3MgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9UaW1lbGluZXNDb250ZW50Vmlldy5jc3MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDkzNzIwNzEuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVGltZWxpbmVzQ29udGVudFZpZXcuY3NzCisrKyAvZGV2L251bGwKQEAgLTEsMjQ3
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0uY29udGVudC12aWV3LnRpbWVsaW5lcyA+IC50aW1lbGlu
ZS1vdmVydmlldyB7Ci0gICAgcG9zaXRpb246IGFic29sdXRlOwotICAgIHRvcDogMDsKLSAgICBs
ZWZ0OiAwOwotICAgIHJpZ2h0OiAwOwotICAgIGhlaWdodDogMTAwcHg7Ci19Ci0KLS5jb250ZW50
LXZpZXcudGltZWxpbmVzID4gLmRhdGEtZ3JpZCB7Ci0gICAgcG9zaXRpb246IGFic29sdXRlOwot
ICAgIHRvcDogMTAwcHg7Ci0gICAgbGVmdDogMDsKLSAgICByaWdodDogMDsKLSAgICBib3R0b206
IDA7Ci0gICAgb3V0bGluZTogMDsKLSAgICBib3JkZXI6IG5vbmU7Ci0gICAgYm9yZGVyLXRvcDog
MXB4IHNvbGlkIHJnYigxNzksIDE3OSwgMTc5KTsKLX0KLQotLmNvbnRlbnQtdmlldy50aW1lbGlu
ZXMgPiAuZGF0YS1ncmlkIHRoIHsKLSAgICBoZWlnaHQ6IDIxcHg7Ci0KLSAgICBmb250LXNpemU6
IDExcHg7Ci0gICAgZm9udC1mYW1pbHk6ICJMdWNpZGEgR3JhbmRlIiwgc2Fucy1zZXJpZjsKLQot
ICAgIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCwgcmdiKDI0
OCwgMjQ4LCAyNDgpLCByZ2IoMjI2LCAyMjYsIDIyNikpOwotCi0gICAgYmFja2dyb3VuZC1zaXpl
OiAxMDAlIDEwMCUgIWltcG9ydGFudDsKLSAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXIg
IWltcG9ydGFudDsKLSAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0ICFpbXBvcnRhbnQ7
Ci0KLSAgICBib3gtc2hhZG93OiBpbnNldCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSkgMCAxcHgg
MDsKLSAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgcmdiKDE3OSwgMTc5LCAxNzkpICFpbXBv
cnRhbnQ7Ci19Ci0KLS5jb250ZW50LXZpZXcudGltZWxpbmVzID4gLmRhdGEtZ3JpZCB0aDpub3Qo
Omxhc3QtY2hpbGQpIHsKLSAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCByZ2IoMTc5LCAxNzks
IDE3OSk7Ci19Ci0KLS5jb250ZW50LXZpZXcudGltZWxpbmVzID4gLmRhdGEtZ3JpZCB0aC5zb3J0
YWJsZTpub3QoLm1vdXNlLW92ZXItY29sbGFwc2VyKTphY3RpdmUgewotICAgIGJhY2tncm91bmQt
aW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCwgcmdiKDIxOSwgMjE5LCAyMTkpLCBy
Z2IoMTg4LCAxODgsIDE4OCkpICFpbXBvcnRhbnQ7Ci19Ci0KLS5jb250ZW50LXZpZXcudGltZWxp
bmVzID4gLmRhdGEtZ3JpZCB0aC5zb3J0LWFzY2VuZGluZywKLS5jb250ZW50LXZpZXcudGltZWxp
bmVzID4gLmRhdGEtZ3JpZCB0aC5zb3J0LWRlc2NlbmRpbmcgewotICAgIGJhY2tncm91bmQtaW1h
Z2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCwgcmdiKDIzMCwgMjMwLCAyMzApLCByZ2Io
MjAwLCAyMDAsIDIwMCkpICFpbXBvcnRhbnQ7Ci19Ci0KLS5jb250ZW50LXZpZXcudGltZWxpbmVz
ID4gLmRhdGEtZ3JpZCAuZGF0YS1jb250YWluZXIgewotICAgIHRvcDogMjJweDsKLX0KLQotLmNv
bnRlbnQtdmlldy50aW1lbGluZXMgPiAuZGF0YS1ncmlkIHRhYmxlLmRhdGEgewotICAgIGJhY2tn
cm91bmQtc2l6ZTogYXV0byA0MnB4OwotICAgIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGlu
ZWFyLWdyYWRpZW50KHRvcCwgd2hpdGUsIHdoaXRlIDUwJSwgcmdiKDk1JSwgOTUlLCA5NSUpIDUw
JSwgcmdiKDk1JSwgOTUlLCA5NSUpKTsKLSAgICBmb250LXNpemU6IDExcHg7Ci19Ci0KLS5jb250
ZW50LXZpZXcudGltZWxpbmVzID4gLmRhdGEtZ3JpZCB0aCwKLS5jb250ZW50LXZpZXcudGltZWxp
bmVzID4gLmRhdGEtZ3JpZCB0ZCB7Ci0gICAgcGFkZGluZy1sZWZ0OiA2cHg7Ci0gICAgcGFkZGlu
Zy1yaWdodDogNnB4OwotfQotCi0uY29udGVudC12aWV3LnRpbWVsaW5lcyA+IC5kYXRhLWdyaWQg
dGQ6bGFzdC1jaGlsZCB7Ci0gICAgcGFkZGluZy1yaWdodDogMTJweDsKLX0KLQotLmNvbnRlbnQt
dmlldy50aW1lbGluZXMgPiAuZGF0YS1ncmlkIHRkIHsKLSAgICBwYWRkaW5nLXRvcDogMnB4Owot
ICAgIHBhZGRpbmctYm90dG9tOiAycHg7Ci0gICAgbGluZS1oZWlnaHQ6IDE3cHg7Ci19Ci0KLS5j
b250ZW50LXZpZXcudGltZWxpbmVzID4gLmRhdGEtZ3JpZCB0ZDpub3QoOmxhc3QtY2hpbGQpIHsK
LSAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCByZ2IoMTc5LCAxNzksIDE3OSk7Ci19Ci0KLS5j
b250ZW50LXZpZXcudGltZWxpbmVzID4gLmRhdGEtZ3JpZCAuY29sdW1uLWdyb3VwLWRldGFpbHMg
ewotICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4wNyk7Ci19Ci0KLS5jb250
ZW50LXZpZXcudGltZWxpbmVzID4gLmRhdGEtZ3JpZC5jb2xsYXBzZWQtZGV0YWlscyB0ZC5jb2x1
bW4tZ3JvdXAtZGV0YWlsczpub3QoOmxhc3QtY2hpbGQpIHsKLSAgICBib3JkZXItcmlnaHQ6IG5v
bmU7IC8qIFByZXZlbnQgYSBzcG9yYWRpYyBkb3VibGUtdGhpY2sgYm9yZGVyIGFwcGVhcmFuY2Ug
aW4gY29sbGFwc2VkIDAtd2lkdGggY29sdW1ucy4gKi8KLX0KLQotLmNvbnRlbnQtdmlldy50aW1l
bGluZXMgPiAuZGF0YS1ncmlkIHRkIC5zdWJ0aXRsZSB7Ci0gICAgY29sb3I6IHJnYmEoMCwgMCwg
MCwgMC43KTsKLX0KLQotLmNvbnRlbnQtdmlldy50aW1lbGluZXMgPiAuZGF0YS1ncmlkIHRkIC5z
dWJ0aXRsZTo6YmVmb3JlIHsKLSAgICBjb250ZW50OiAiIOKAlCAiOwotfQotCi0uY29udGVudC12
aWV3LnRpbWVsaW5lcyA+IC5kYXRhLWdyaWQ6Zm9jdXMgdHIuc2VsZWN0ZWQgdGQgLnN1YnRpdGxl
IHsKLSAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjkpOwotfQotCi0uY29udGVudC12
aWV3LnRpbWVsaW5lcyA+IC5kYXRhLWdyaWQgdGQgLmljb24gewotICAgIGRpc3BsYXk6IGlubGlu
ZS1ibG9jazsKLSAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wOwotCi0gICAgd2lkdGg6IDE2cHg7Ci0g
ICAgaGVpZ2h0OiAxNnB4OwotCi0gICAgbWFyZ2luLXJpZ2h0OiAycHg7Ci19Ci0KLS5jb250ZW50
LXZpZXcudGltZWxpbmVzID4gLmRhdGEtZ3JpZCB0ZC50aW1lbGluZS1jb2x1bW4gewotICAgIHBh
ZGRpbmctbGVmdDogMXB4OwotICAgIHBhZGRpbmctcmlnaHQ6IDFweDsKLX0KLQotLmNvbnRlbnQt
dmlldy50aW1lbGluZXMgPiAuZGF0YS1ncmlkIHRkIC5nby10by1hcnJvdyB7Ci0gICAgZmxvYXQ6
IHJpZ2h0OwotCi0gICAgdmlzaWJpbGl0eTogaGlkZGVuOwotCi0gICAgbWFyZ2luLWxlZnQ6IDJw
eDsKLX0KLQotLmNvbnRlbnQtdmlldy50aW1lbGluZXMgPiAuZGF0YS1ncmlkIHRyLnNlbGVjdGVk
IC5nby10by1hcnJvdywKLS5jb250ZW50LXZpZXcudGltZWxpbmVzID4gLmRhdGEtZ3JpZCB0cjpo
b3ZlciAuZ28tdG8tYXJyb3cgewotICAgIHZpc2liaWxpdHk6IHZpc2libGU7Ci19Ci0KLS5jb250
ZW50LXZpZXcudGltZWxpbmVzID4gLmRhdGEtZ3JpZCB0ZC5lcnJvciB7Ci0gICAgY29sb3I6IHJn
YigyMjQsIDE2LCAxNik7Ci19Ci0KLS5jb250ZW50LXZpZXcudGltZWxpbmVzID4gLmRhdGEtZ3Jp
ZCB0ci5zZWxlY3RlZCB0ZC5lcnJvciB7Ci0gICAgY29sb3I6IGluaGVyaXQ7Ci19Ci0KLS5jb250
ZW50LXZpZXcudGltZWxpbmVzID4gLmRhdGEtZ3JpZCB0ci5vZmZzY3JlZW4gewotICAgIGhlaWdo
dDogMjFweDsKLX0KLQotLmNvbnRlbnQtdmlldy50aW1lbGluZXMgPiAuZGF0YS1ncmlkIHRyLm9m
ZnNjcmVlbiB0ZCB7Ci0gICAgZGlzcGxheTogbm9uZTsKLX0KLQotLyogQ29sdW1uIGNvbGxhcHNl
ciAqLwotCi0uY29udGVudC12aWV3LnRpbWVsaW5lcyA+IC5kYXRhLWdyaWQgdGguY29sbGFwc2Vy
IHsKLSAgICBwb3NpdGlvbjogcmVsYXRpdmU7Ci19Ci0KLS5jb250ZW50LXZpZXcudGltZWxpbmVz
ID4gLmRhdGEtZ3JpZCB0aC5jb2xsYXBzZXIgPiAuZGl2aWRlciB7Ci0gICAgcG9zaXRpb246IGFi
c29sdXRlOwotICAgIHdpZHRoOiAycHg7Ci0gICAgdG9wOiAwOwotICAgIHJpZ2h0OiAyNXB4Owot
ICAgIGJvdHRvbTogMDsKLQotICAgIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdy
YWRpZW50KHJnYmEoMTI4LCAxMjgsIDEyOCwgMCksIHJnYigxMjgsIDEyOCwgMTI4KSwgcmdiYSgx
MjgsIDEyOCwgMTI4LCAwKSksCi0gICAgICAgIC13ZWJraXQtbGluZWFyLWdyYWRpZW50KHJnYmEo
MjU1LCAyNTUsIDI1NSwgMCksIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43NSksIHJnYmEoMjU1LCAy
NTUsIDI1NSwgMCkpOwotICAgIGJhY2tncm91bmQtc2l6ZTogMXB4IDE3cHgsIDFweCAxN3B4Owot
ICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7Ci0gICAgYmFja2dyb3VuZC1wb3NpdGlv
bjogMCBjZW50ZXIsIDFweCBjZW50ZXI7Ci19Ci0KLS5jb250ZW50LXZpZXcudGltZWxpbmVzID4g
LmRhdGEtZ3JpZCB0aC5jb2xsYXBzZXIgPiAuY29sbGFwc2VyLWJ1dHRvbiB7Ci0gICAgcG9zaXRp
b246IGFic29sdXRlOwotICAgIHRvcDogMDsKLSAgICByaWdodDogNXB4OwotICAgIGJvdHRvbTog
MDsKLSAgICBoZWlnaHQ6IDE1cHg7Ci0gICAgd2lkdGg6IDE1cHg7Ci0gICAgbWFyZ2luLWJvdHRv
bTogYXV0bzsKLSAgICBtYXJnaW4tdG9wOiBhdXRvOwotCi0gICAgYmFja2dyb3VuZC1pbWFnZTog
LXdlYmtpdC1jYW52YXModGltZWxpbmUtZGF0YWdyaWQtY29sbGFwc2UtYnV0dG9uLWxlc3Mtbm9y
bWFsKTsKLSAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OwotICAgIGJhY2tncm91bmQt
cG9zaXRpb246IGNlbnRlcjsKLSAgICBiYWNrZ3JvdW5kLXNpemU6IDE1cHggMTNweDsKLX0KLQot
LmNvbnRlbnQtdmlldy50aW1lbGluZXMgPiAuZGF0YS1ncmlkIHRoLmNvbGxhcHNlciA+IC5jb2xs
YXBzZXItYnV0dG9uOmFjdGl2ZSB7Ci0gICAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1jYW52
YXModGltZWxpbmUtZGF0YWdyaWQtY29sbGFwc2UtYnV0dG9uLWxlc3MtYWN0aXZlKTsKLX0KLQot
LmNvbnRlbnQtdmlldy50aW1lbGluZXMgPiAuZGF0YS1ncmlkIHRoLmNvbGxhcHNlci5jb2xsYXBz
ZWQgPiAuY29sbGFwc2VyLWJ1dHRvbiB7Ci0gICAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1j
YW52YXModGltZWxpbmUtZGF0YWdyaWQtY29sbGFwc2UtYnV0dG9uLW1vcmUtbm9ybWFsKTsKLX0K
LQotLmNvbnRlbnQtdmlldy50aW1lbGluZXMgPiAuZGF0YS1ncmlkIHRoLmNvbGxhcHNlci5jb2xs
YXBzZWQgPiAuY29sbGFwc2VyLWJ1dHRvbjphY3RpdmUgewotICAgIGJhY2tncm91bmQtaW1hZ2U6
IC13ZWJraXQtY2FudmFzKHRpbWVsaW5lLWRhdGFncmlkLWNvbGxhcHNlLWJ1dHRvbi1tb3JlLWFj
dGl2ZSk7Ci19Ci0KLS5jb250ZW50LXZpZXcudGltZWxpbmVzID4gLmRhdGEtZ3JpZCB0aC5zb3J0
LWFzY2VuZGluZy5jb2xsYXBzZXIgPiBkaXY6Zmlyc3QtY2hpbGQsCi0uY29udGVudC12aWV3LnRp
bWVsaW5lcyA+IC5kYXRhLWdyaWQgdGguc29ydC1kZXNjZW5kaW5nLmNvbGxhcHNlciA+IGRpdjpm
aXJzdC1jaGlsZCB7Ci0gICAgbWFyZ2luLXJpZ2h0OiAyN3B4OwotfQotCi0uY29udGVudC12aWV3
LnRpbWVsaW5lcyA+IC5kYXRhLWdyaWQgPiAubmF2aWdhdGlvbi1iYXItY29udGFpbmVyIHsKLSAg
ICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gICAgdG9wOiAtMzNweDsKLSAgICBsZWZ0OiAwOwotICAg
IHJpZ2h0OiAwOwotICAgIGhlaWdodDogMzNweDsKLQotICAgIHBvaW50ZXItZXZlbnRzOiBub25l
OwotICAgIHZpc2liaWxpdHk6IGhpZGRlbjsKLX0KLQotLmNvbnRlbnQtdmlldy50aW1lbGluZXMg
PiAuZGF0YS1ncmlkOmhvdmVyID4gLm5hdmlnYXRpb24tYmFyLWNvbnRhaW5lciB7Ci0gICAgcG9p
bnRlci1ldmVudHM6IGFsbDsKLSAgICB2aXNpYmlsaXR5OiB2aXNpYmxlOwotfQotCi0uY29udGVu
dC12aWV3LnRpbWVsaW5lcyA+IC5kYXRhLWdyaWQgPiAubmF2aWdhdGlvbi1iYXItY29udGFpbmVy
ID4gLm5hdmlnYXRpb24tYmFyIHsKLSAgICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gICAgdG9wOiAx
MHB4OwotICAgIGxlZnQ6IDA7Ci0gICAgcmlnaHQ6IDA7Ci0gICAgaGVpZ2h0OiAyM3B4OwotICAg
IGJvcmRlcjogbm9uZTsKLSAgICBib3JkZXItdG9wOiAxcHggc29saWQgcmdiKDIwMCwgMjAwLCAy
MDApOwotICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCByZ2IoMTc5LCAxNzksIDE3OSk7Ci0g
ICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9UaW1lbGluZXNDb250ZW50Vmlldy5qcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1RpbWVsaW5lc0NvbnRlbnRWaWV3LmpzCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxOTg0YWUzLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1RpbWVsaW5lc0NvbnRlbnRWaWV3LmpzCisrKyAv
ZGV2L251bGwKQEAgLTEsNzY3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1XZWJJbnNwZWN0b3IuVGlt
ZWxpbmVzQ29udGVudFZpZXcgPSBmdW5jdGlvbihyZXByZXNlbnRlZE9iamVjdCkKLXsKLSAgICBX
ZWJJbnNwZWN0b3IuQ29udGVudFZpZXcuY2FsbCh0aGlzLCByZXByZXNlbnRlZE9iamVjdCk7Ci0K
LSAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuVGltZWxpbmVzQ29u
dGVudFZpZXcuU3R5bGVDbGFzc05hbWUpOwotCi0gICAgdGhpcy5fdGltZWxpbmVPdmVydmlldyA9
IG5ldyBXZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlldyh0aGlzLCBbV2ViSW5zcGVjdG9yLlRp
bWVsaW5lUmVjb3JkLlR5cGUuTmV0d29yaywgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkLlR5
cGUuTGF5b3V0LCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmQuVHlwZS5TY3JpcHRdKTsKLSAg
ICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fdGltZWxpbmVPdmVydmlldy5lbGVtZW50
KTsKLQotICAgIGZ1bmN0aW9uIGNyZWF0ZVBhdGhDb21wb25lbnQoZGlzcGxheU5hbWUsIGNsYXNz
TmFtZSwgcmVwcmVzZW50ZWRPYmplY3QpCi0gICAgewotICAgICAgICB2YXIgcGF0aENvbXBvbmVu
dCA9IG5ldyBXZWJJbnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0aENvbXBvbmVudChkaXNwbGF5TmFt
ZSwgY2xhc3NOYW1lLCByZXByZXNlbnRlZE9iamVjdCk7Ci0gICAgICAgIHBhdGhDb21wb25lbnQu
YWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0aENvbXBvbmVudC5F
dmVudC5TaWJsaW5nV2FzU2VsZWN0ZWQsIHRoaXMuX3BhdGhDb21wb25lbnRTZWxlY3RlZCwgdGhp
cyk7Ci0gICAgICAgIHJldHVybiBwYXRoQ29tcG9uZW50OwotICAgIH0KLQotICAgIHZhciBuZXR3
b3JrUGF0aENvbXBvbmVudCA9IGNyZWF0ZVBhdGhDb21wb25lbnQuY2FsbCh0aGlzLCBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIk5ldHdvcmsgUmVxdWVzdHMiKSwgV2ViSW5zcGVjdG9yLkluc3RydW1l
bnRTaWRlYmFyUGFuZWwuTmV0d29ya0ljb25TdHlsZUNsYXNzLCBXZWJJbnNwZWN0b3IuVGltZWxp
bmVSZWNvcmQuVHlwZS5OZXR3b3JrKTsKLSAgICB2YXIgbGF5b3V0UGF0aENvbXBvbmVudCA9IGNy
ZWF0ZVBhdGhDb21wb25lbnQuY2FsbCh0aGlzLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkxheW91
dCAmIFJlbmRlcmluZyIpLCBXZWJJbnNwZWN0b3IuSW5zdHJ1bWVudFNpZGViYXJQYW5lbC5Db2xv
cnNJY29uU3R5bGVDbGFzcywgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkLlR5cGUuTGF5b3V0
KTsKLSAgICB2YXIgc2NyaXB0UGF0aENvbXBvbmVudCA9IGNyZWF0ZVBhdGhDb21wb25lbnQuY2Fs
bCh0aGlzLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkphdmFTY3JpcHQgJiBFdmVudHMiKSwgV2Vi
SW5zcGVjdG9yLkluc3RydW1lbnRTaWRlYmFyUGFuZWwuU2NyaXB0SWNvblN0eWxlQ2xhc3MsIFdl
Ykluc3BlY3Rvci5UaW1lbGluZVJlY29yZC5UeXBlLlNjcmlwdCk7Ci0KLSAgICBuZXR3b3JrUGF0
aENvbXBvbmVudC5uZXh0U2libGluZyA9IGxheW91dFBhdGhDb21wb25lbnQ7Ci0gICAgbGF5b3V0
UGF0aENvbXBvbmVudC5wcmV2aW91c1NpYmxpbmcgPSBuZXR3b3JrUGF0aENvbXBvbmVudDsKLSAg
ICBsYXlvdXRQYXRoQ29tcG9uZW50Lm5leHRTaWJsaW5nID0gc2NyaXB0UGF0aENvbXBvbmVudDsK
LSAgICBzY3JpcHRQYXRoQ29tcG9uZW50LnByZXZpb3VzU2libGluZyA9IGxheW91dFBhdGhDb21w
b25lbnQ7Ci0KLSAgICB0aGlzLl9jdXJyZW50UmVjb3JkVHlwZSA9IG51bGw7Ci0gICAgdGhpcy5f
Y3VycmVudFJlY29yZFR5cGVTZXR0aW5nID0gbmV3IFdlYkluc3BlY3Rvci5TZXR0aW5nKCJ0aW1l
bGluZS12aWV3LWN1cnJlbnQtcmVjb3JkLXR5cGUiLCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNv
cmQuVHlwZS5OZXR3b3JrKTsKLSAgICB0aGlzLl9jdXJyZW50RGF0YUdyaWQgPSBudWxsOwotCi0g
ICAgdmFyIG5ldHdvcmtEYXRhR3JpZENvbHVtbnMgPSB7bmFtZToge30sIGRvbWFpbjoge30sIHR5
cGU6IHt9LCBzdGF0dXNDb2RlOiB7fSwgY2FjaGVkOiB7fSwgc2l6ZToge30sIHRyYW5zZmVyU2l6
ZToge30sIGxhdGVuY3k6IHt9LCBkdXJhdGlvbjoge30sIHRpbWVsaW5lOiB7fX07Ci0KLSAgICBu
ZXR3b3JrRGF0YUdyaWRDb2x1bW5zLm5hbWUudGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmco
Ik5hbWUiKTsKLSAgICBuZXR3b3JrRGF0YUdyaWRDb2x1bW5zLm5hbWUud2lkdGggPSAiMTUlIjsK
LQotICAgIG5ldHdvcmtEYXRhR3JpZENvbHVtbnMuZG9tYWluLnRpdGxlID0gV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJEb21haW4iKTsKLSAgICBuZXR3b3JrRGF0YUdyaWRDb2x1bW5zLmRvbWFpbi53
aWR0aCA9ICIxMCUiOwotICAgIG5ldHdvcmtEYXRhR3JpZENvbHVtbnMuZG9tYWluLmdyb3VwID0g
V2ViSW5zcGVjdG9yLk5ldHdvcmtEYXRhR3JpZC5EZXRhaWxzQ29sdW1uR3JvdXA7Ci0KLSAgICBu
ZXR3b3JrRGF0YUdyaWRDb2x1bW5zLnR5cGUudGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IlR5cGUiKTsKLSAgICBuZXR3b3JrRGF0YUdyaWRDb2x1bW5zLnR5cGUud2lkdGggPSAiOCUiOwot
ICAgIG5ldHdvcmtEYXRhR3JpZENvbHVtbnMudHlwZS5ncm91cCA9IFdlYkluc3BlY3Rvci5OZXR3
b3JrRGF0YUdyaWQuRGV0YWlsc0NvbHVtbkdyb3VwOwotICAgIG5ldHdvcmtEYXRhR3JpZENvbHVt
bnMudHlwZS5zY29wZUJhciA9IHRoaXMuX21ha2VDb2x1bW5TY29wZUJhcigibmV0d29yayIsIFdl
Ykluc3BlY3Rvci5SZXNvdXJjZS5UeXBlKTsKLQotICAgIG5ldHdvcmtEYXRhR3JpZENvbHVtbnMu
c3RhdHVzQ29kZS50aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU3RhdHVzIik7Ci0gICAg
bmV0d29ya0RhdGFHcmlkQ29sdW1ucy5zdGF0dXNDb2RlLndpZHRoID0gIjYlIjsKLSAgICBuZXR3
b3JrRGF0YUdyaWRDb2x1bW5zLnN0YXR1c0NvZGUuZ3JvdXAgPSBXZWJJbnNwZWN0b3IuTmV0d29y
a0RhdGFHcmlkLkRldGFpbHNDb2x1bW5Hcm91cDsKLQotICAgIG5ldHdvcmtEYXRhR3JpZENvbHVt
bnMuY2FjaGVkLnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDYWNoZWQiKTsKLSAgICBu
ZXR3b3JrRGF0YUdyaWRDb2x1bW5zLmNhY2hlZC53aWR0aCA9ICI3JSI7Ci0gICAgbmV0d29ya0Rh
dGFHcmlkQ29sdW1ucy5jYWNoZWQuZ3JvdXAgPSBXZWJJbnNwZWN0b3IuTmV0d29ya0RhdGFHcmlk
LkRldGFpbHNDb2x1bW5Hcm91cDsKLQotICAgIG5ldHdvcmtEYXRhR3JpZENvbHVtbnMuc2l6ZS50
aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2l6ZSIpOwotICAgIG5ldHdvcmtEYXRhR3Jp
ZENvbHVtbnMuc2l6ZS53aWR0aCA9ICI4JSI7Ci0gICAgbmV0d29ya0RhdGFHcmlkQ29sdW1ucy5z
aXplLmFsaWduZWQgPSAicmlnaHQiOwotICAgIG5ldHdvcmtEYXRhR3JpZENvbHVtbnMuc2l6ZS5n
cm91cCA9IFdlYkluc3BlY3Rvci5OZXR3b3JrRGF0YUdyaWQuRGV0YWlsc0NvbHVtbkdyb3VwOwot
Ci0gICAgbmV0d29ya0RhdGFHcmlkQ29sdW1ucy50cmFuc2ZlclNpemUudGl0bGUgPSBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIlRyYW5zZmVycmVkIik7Ci0gICAgbmV0d29ya0RhdGFHcmlkQ29sdW1u
cy50cmFuc2ZlclNpemUud2lkdGggPSAiOCUiOwotICAgIG5ldHdvcmtEYXRhR3JpZENvbHVtbnMu
dHJhbnNmZXJTaXplLmFsaWduZWQgPSAicmlnaHQiOwotICAgIG5ldHdvcmtEYXRhR3JpZENvbHVt
bnMudHJhbnNmZXJTaXplLmdyb3VwID0gV2ViSW5zcGVjdG9yLk5ldHdvcmtEYXRhR3JpZC5EZXRh
aWxzQ29sdW1uR3JvdXA7Ci0KLSAgICBuZXR3b3JrRGF0YUdyaWRDb2x1bW5zLmxhdGVuY3kudGl0
bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkxhdGVuY3kiKTsKLSAgICBuZXR3b3JrRGF0YUdy
aWRDb2x1bW5zLmxhdGVuY3kud2lkdGggPSAiOSUiOwotICAgIG5ldHdvcmtEYXRhR3JpZENvbHVt
bnMubGF0ZW5jeS5hbGlnbmVkID0gInJpZ2h0IjsKLSAgICBuZXR3b3JrRGF0YUdyaWRDb2x1bW5z
LmxhdGVuY3kuZ3JvdXAgPSBXZWJJbnNwZWN0b3IuTmV0d29ya0RhdGFHcmlkLkRldGFpbHNDb2x1
bW5Hcm91cDsKLQotICAgIG5ldHdvcmtEYXRhR3JpZENvbHVtbnMuZHVyYXRpb24udGl0bGUgPSBX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkR1cmF0aW9uIik7Ci0gICAgbmV0d29ya0RhdGFHcmlkQ29s
dW1ucy5kdXJhdGlvbi53aWR0aCA9ICI5JSI7Ci0gICAgbmV0d29ya0RhdGFHcmlkQ29sdW1ucy5k
dXJhdGlvbi5hbGlnbmVkID0gInJpZ2h0IjsKLSAgICBuZXR3b3JrRGF0YUdyaWRDb2x1bW5zLmR1
cmF0aW9uLmdyb3VwID0gV2ViSW5zcGVjdG9yLk5ldHdvcmtEYXRhR3JpZC5EZXRhaWxzQ29sdW1u
R3JvdXA7Ci0KLSAgICBuZXR3b3JrRGF0YUdyaWRDb2x1bW5zLnRpbWVsaW5lLnRpdGxlID0gV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJUaW1lbGluZSIpOwotICAgIG5ldHdvcmtEYXRhR3JpZENvbHVt
bnMudGltZWxpbmUud2lkdGggPSAiMjAlIjsKLSAgICBuZXR3b3JrRGF0YUdyaWRDb2x1bW5zLnRp
bWVsaW5lLnNvcnQgPSAiYXNjZW5kaW5nIjsKLSAgICBuZXR3b3JrRGF0YUdyaWRDb2x1bW5zLnRp
bWVsaW5lLmNvbGxhcHNlc0dyb3VwID0gV2ViSW5zcGVjdG9yLk5ldHdvcmtEYXRhR3JpZC5EZXRh
aWxzQ29sdW1uR3JvdXA7Ci0KLSAgICB2YXIgbGF5b3V0RGF0YUdyaWRDb2x1bW5zID0ge2V2ZW50
VHlwZToge30sIGluaXRpYXRvckNhbGxGcmFtZToge30sIHdpZHRoOiB7fSwgaGVpZ2h0OiB7fSwg
YXJlYToge30sIHN0YXJ0VGltZToge30sIGR1cmF0aW9uOiB7fX07Ci0KLSAgICBsYXlvdXREYXRh
R3JpZENvbHVtbnMuZXZlbnRUeXBlLnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJUeXBl
Iik7Ci0gICAgbGF5b3V0RGF0YUdyaWRDb2x1bW5zLmV2ZW50VHlwZS53aWR0aCA9ICIxNSUiOwot
ICAgIGxheW91dERhdGFHcmlkQ29sdW1ucy5ldmVudFR5cGUuc2NvcGVCYXIgPSB0aGlzLl9tYWtl
Q29sdW1uU2NvcGVCYXIoImxheW91dCIsIFdlYkluc3BlY3Rvci5MYXlvdXRUaW1lbGluZVJlY29y
ZC5FdmVudFR5cGUpOwotCi0gICAgbGF5b3V0RGF0YUdyaWRDb2x1bW5zLmluaXRpYXRvckNhbGxG
cmFtZS50aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiSW5pdGlhdG9yIik7Ci0gICAgbGF5
b3V0RGF0YUdyaWRDb2x1bW5zLmluaXRpYXRvckNhbGxGcmFtZS53aWR0aCA9ICIyNSUiOwotCi0g
ICAgbGF5b3V0RGF0YUdyaWRDb2x1bW5zLndpZHRoLnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJXaWR0aCIpOwotICAgIGxheW91dERhdGFHcmlkQ29sdW1ucy53aWR0aC53aWR0aCA9ICI4
JSI7Ci0KLSAgICBsYXlvdXREYXRhR3JpZENvbHVtbnMuaGVpZ2h0LnRpdGxlID0gV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJIZWlnaHQiKTsKLSAgICBsYXlvdXREYXRhR3JpZENvbHVtbnMuaGVpZ2h0
LndpZHRoID0gIjglIjsKLQotICAgIGxheW91dERhdGFHcmlkQ29sdW1ucy5hcmVhLnRpdGxlID0g
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJBcmVhIik7Ci0gICAgbGF5b3V0RGF0YUdyaWRDb2x1bW5z
LmFyZWEud2lkdGggPSAiMTIlIjsKLQotICAgIGxheW91dERhdGFHcmlkQ29sdW1ucy5zdGFydFRp
bWUudGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlN0YXJ0IFRpbWUiKTsKLSAgICBsYXlv
dXREYXRhR3JpZENvbHVtbnMuc3RhcnRUaW1lLndpZHRoID0gIjglIjsKLSAgICBsYXlvdXREYXRh
R3JpZENvbHVtbnMuc3RhcnRUaW1lLmFsaWduZWQgPSAicmlnaHQiOwotICAgIGxheW91dERhdGFH
cmlkQ29sdW1ucy5zdGFydFRpbWUuc29ydCA9ICJhc2NlbmRpbmciOwotCi0gICAgbGF5b3V0RGF0
YUdyaWRDb2x1bW5zLmR1cmF0aW9uLnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJEdXJh
dGlvbiIpOwotICAgIGxheW91dERhdGFHcmlkQ29sdW1ucy5kdXJhdGlvbi53aWR0aCA9ICI4JSI7
Ci0gICAgbGF5b3V0RGF0YUdyaWRDb2x1bW5zLmR1cmF0aW9uLmFsaWduZWQgPSAicmlnaHQiOwot
Ci0gICAgdmFyIHNjcmlwdERhdGFHcmlkQ29sdW1ucyA9IHtldmVudFR5cGU6IHt9LCBkZXRhaWxz
OiB7fSwgcmVzb3VyY2U6IHt9LCBzdGFydFRpbWU6IHt9LCBkdXJhdGlvbjoge319OwotCi0gICAg
c2NyaXB0RGF0YUdyaWRDb2x1bW5zLmV2ZW50VHlwZS50aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0
cmluZygiVHlwZSIpOwotICAgIHNjcmlwdERhdGFHcmlkQ29sdW1ucy5ldmVudFR5cGUud2lkdGgg
PSAiMTUlIjsKLSAgICBzY3JpcHREYXRhR3JpZENvbHVtbnMuZXZlbnRUeXBlLnNjb3BlQmFyID0g
dGhpcy5fbWFrZUNvbHVtblNjb3BlQmFyKCJzY3JpcHQiLCBXZWJJbnNwZWN0b3IuU2NyaXB0VGlt
ZWxpbmVSZWNvcmQuRXZlbnRUeXBlKTsKLQotICAgIHNjcmlwdERhdGFHcmlkQ29sdW1ucy5kZXRh
aWxzLnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJEZXRhaWxzIik7Ci0gICAgc2NyaXB0
RGF0YUdyaWRDb2x1bW5zLmRldGFpbHMud2lkdGggPSAiMTUlIjsKLQotICAgIHNjcmlwdERhdGFH
cmlkQ29sdW1ucy5yZXNvdXJjZS50aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiTG9jYXRp
b24iKTsKLSAgICBzY3JpcHREYXRhR3JpZENvbHVtbnMucmVzb3VyY2Uud2lkdGggPSAiMTUlIjsK
LQotICAgIHNjcmlwdERhdGFHcmlkQ29sdW1ucy5zdGFydFRpbWUudGl0bGUgPSBXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIlN0YXJ0IFRpbWUiKTsKLSAgICBzY3JpcHREYXRhR3JpZENvbHVtbnMuc3Rh
cnRUaW1lLndpZHRoID0gIjEwJSI7Ci0gICAgc2NyaXB0RGF0YUdyaWRDb2x1bW5zLnN0YXJ0VGlt
ZS5hbGlnbmVkID0gInJpZ2h0IjsKLSAgICBzY3JpcHREYXRhR3JpZENvbHVtbnMuc3RhcnRUaW1l
LnNvcnQgPSAiYXNjZW5kaW5nIjsKLQotICAgIHNjcmlwdERhdGFHcmlkQ29sdW1ucy5kdXJhdGlv
bi50aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiRHVyYXRpb24iKTsKLSAgICBzY3JpcHRE
YXRhR3JpZENvbHVtbnMuZHVyYXRpb24ud2lkdGggPSAiMTAlIjsKLSAgICBzY3JpcHREYXRhR3Jp
ZENvbHVtbnMuZHVyYXRpb24uYWxpZ25lZCA9ICJyaWdodCI7Ci0KLSAgICBmb3IgKHZhciBjb2x1
bW4gaW4gbmV0d29ya0RhdGFHcmlkQ29sdW1ucykKLSAgICAgICAgbmV0d29ya0RhdGFHcmlkQ29s
dW1uc1tjb2x1bW5dLnNvcnRhYmxlID0gdHJ1ZTsKLQotICAgIGZvciAodmFyIGNvbHVtbiBpbiBs
YXlvdXREYXRhR3JpZENvbHVtbnMpCi0gICAgICAgIGxheW91dERhdGFHcmlkQ29sdW1uc1tjb2x1
bW5dLnNvcnRhYmxlID0gdHJ1ZTsKLQotICAgIGZvciAodmFyIGNvbHVtbiBpbiBzY3JpcHREYXRh
R3JpZENvbHVtbnMpCi0gICAgICAgIHNjcmlwdERhdGFHcmlkQ29sdW1uc1tjb2x1bW5dLnNvcnRh
YmxlID0gdHJ1ZTsKLQotICAgIHZhciBuZXR3b3JrRGF0YUdyaWQgPSBuZXcgV2ViSW5zcGVjdG9y
Lk5ldHdvcmtEYXRhR3JpZChuZXR3b3JrRGF0YUdyaWRDb2x1bW5zKTsKLSAgICB2YXIgbGF5b3V0
RGF0YUdyaWQgPSBuZXcgV2ViSW5zcGVjdG9yLkxheW91dFRpbWVsaW5lRGF0YUdyaWQobGF5b3V0
RGF0YUdyaWRDb2x1bW5zKTsKLSAgICB2YXIgc2NyaXB0RGF0YUdyaWQgPSBuZXcgV2ViSW5zcGVj
dG9yLlNjcmlwdFRpbWVsaW5lRGF0YUdyaWQoc2NyaXB0RGF0YUdyaWRDb2x1bW5zKTsKLQotICAg
IG5ldHdvcmtEYXRhR3JpZC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5EYXRhR3JpZC5F
dmVudC5TZWxlY3RlZE5vZGVDaGFuZ2VkLCB0aGlzLl9zZWxlY3RlZE5vZGVDaGFuZ2VkLCB0aGlz
KTsKLQotICAgIHRoaXMuX3BhdGhDb21wb25lbnRNYXAgPSB7fTsKLSAgICB0aGlzLl9wYXRoQ29t
cG9uZW50TWFwW1dlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZC5UeXBlLk5ldHdvcmtdID0gbmV0
d29ya1BhdGhDb21wb25lbnQ7Ci0gICAgdGhpcy5fcGF0aENvbXBvbmVudE1hcFtXZWJJbnNwZWN0
b3IuVGltZWxpbmVSZWNvcmQuVHlwZS5MYXlvdXRdID0gbGF5b3V0UGF0aENvbXBvbmVudDsKLSAg
ICB0aGlzLl9wYXRoQ29tcG9uZW50TWFwW1dlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZC5UeXBl
LlNjcmlwdF0gPSBzY3JpcHRQYXRoQ29tcG9uZW50OwotCi0gICAgdGhpcy5fZGF0YUdyaWRNYXAg
PSB7fTsKLSAgICB0aGlzLl9kYXRhR3JpZE1hcFtXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmQu
VHlwZS5OZXR3b3JrXSA9IG5ldHdvcmtEYXRhR3JpZDsKLSAgICB0aGlzLl9kYXRhR3JpZE1hcFtX
ZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmQuVHlwZS5MYXlvdXRdID0gbGF5b3V0RGF0YUdyaWQ7
Ci0gICAgdGhpcy5fZGF0YUdyaWRNYXBbV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkLlR5cGUu
U2NyaXB0XSA9IHNjcmlwdERhdGFHcmlkOwotCi0gICAgZm9yICh2YXIgdHlwZSBpbiB0aGlzLl9k
YXRhR3JpZE1hcCkgewotICAgICAgICB2YXIgZGF0YUdyaWQgPSB0aGlzLl9kYXRhR3JpZE1hcFt0
eXBlXTsKLSAgICAgICAgZGF0YUdyaWQuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRGF0
YUdyaWQuRXZlbnQuU29ydENoYW5nZWQsIHRoaXMuX3NvcnRDdXJyZW50RGF0YUdyaWQsIHRoaXMp
OwotICAgICAgICBkYXRhR3JpZC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5UaW1lbGlu
ZURhdGFHcmlkLkV2ZW50LkZpbHRlcnNEaWRDaGFuZ2UsIHRoaXMuX2RhdGFHcmlkRmlsdGVyc0Rp
ZENoYW5nZSwgdGhpcyk7Ci0gICAgICAgIGRhdGFHcmlkLnNjcm9sbENvbnRhaW5lci5hZGRFdmVu
dExpc3RlbmVyKCJzY3JvbGwiLCB0aGlzLl91cGRhdGVPZmZzY3JlZW5Sb3dzLmJpbmQodGhpcykp
OwotICAgIH0KLQotICAgIHRoaXMuX3BlbmRpbmdSZWNvcmRzID0ge307Ci0KLSAgICBmb3IgKHZh
ciB0eXBlTmFtZSBpbiBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmQuVHlwZSkgewotICAgICAg
ICB2YXIgdHlwZSA9IFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZC5UeXBlW3R5cGVOYW1lXTsK
LSAgICAgICAgdGhpcy5fcGVuZGluZ1JlY29yZHNbdHlwZV0gPSBXZWJJbnNwZWN0b3IudGltZWxp
bmVNYW5hZ2VyLnJlY29yZHNXaXRoVHlwZSh0eXBlKTsKLSAgICB9Ci0KLSAgICB0aGlzLl9wZW5k
aW5nUmVmcmVzaEdyaWROb2RlcyA9IHt9OwotICAgIHRoaXMuX3BlbmRpbmdFdmVudE1hcmtlcnMg
PSB7fTsKLQotICAgIFdlYkluc3BlY3Rvci5SZXNvdXJjZVRpbWVsaW5lRGF0YUdyaWROb2RlLmFk
ZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlJlc291cmNlVGltZWxpbmVEYXRhR3JpZE5vZGUu
RXZlbnQuTmVlZHNSZWZyZXNoLCB0aGlzLl9zY2hlZHVsZUdyaWROb2RlRm9yUmVmcmVzaCwgdGhp
cyk7Ci0gICAgV2ViSW5zcGVjdG9yLnRpbWVsaW5lTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdl
Ykluc3BlY3Rvci5UaW1lbGluZU1hbmFnZXIuRXZlbnQuUmVjb3Jkc0NsZWFyZWQsIHRoaXMuX3Jl
Y29yZHNDbGVhcmVkLCB0aGlzKTsKLSAgICBXZWJJbnNwZWN0b3IudGltZWxpbmVNYW5hZ2VyLmFk
ZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRpbWVsaW5lTWFuYWdlci5FdmVudC5SZWNvcmRB
ZGRlZCwgdGhpcy5fcmVjb3JkQWRkZWQsIHRoaXMpOwotICAgIFdlYkluc3BlY3Rvci50aW1lbGlu
ZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVGltZWxpbmVNYW5hZ2VyLkV2
ZW50LlJlY29yZGVkRXZlbnRNYXJrZXIsIHRoaXMuX3JlY29yZGVkRXZlbnRNYXJrZXIsIHRoaXMp
OwotCi0gICAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lc0NvbnRlbnRWaWV3LmdlbmVyYXRlRW1ib3Nz
ZWRDb2xsYXBzZUltYWdlcygpOwotfTsKLQotV2ViSW5zcGVjdG9yLlRpbWVsaW5lc0NvbnRlbnRW
aWV3LlN0eWxlQ2xhc3NOYW1lID0gInRpbWVsaW5lcyI7Ci1XZWJJbnNwZWN0b3IuVGltZWxpbmVz
Q29udGVudFZpZXcuT2Zmc2NyZWVuRGF0YUdyaWRSb3dTdHlsZUNsYXNzTmFtZSA9ICJvZmZzY3Jl
ZW4iOwotV2ViSW5zcGVjdG9yLlRpbWVsaW5lc0NvbnRlbnRWaWV3LlVwZGF0ZUludGVydmFsID0g
NTAwOyAvLyAwLjUgc2Vjb25kcwotCi1XZWJJbnNwZWN0b3IuVGltZWxpbmVzQ29udGVudFZpZXcu
Q29sbGFwc2VCdXR0b24gPSB7fTsKLVdlYkluc3BlY3Rvci5UaW1lbGluZXNDb250ZW50Vmlldy5D
b2xsYXBzZUJ1dHRvbi5Nb3JlID0gIm1vcmUiOwotV2ViSW5zcGVjdG9yLlRpbWVsaW5lc0NvbnRl
bnRWaWV3LkNvbGxhcHNlQnV0dG9uLkxlc3MgPSAibGVzcyI7Ci0KLVdlYkluc3BlY3Rvci5UaW1l
bGluZXNDb250ZW50Vmlldy5Db2xsYXBzZUJ1dHRvbi5TdGF0ZXMgPSB7fTsKLVdlYkluc3BlY3Rv
ci5UaW1lbGluZXNDb250ZW50Vmlldy5Db2xsYXBzZUJ1dHRvbi5TdGF0ZXMuTm9ybWFsID0gIm5v
cm1hbCI7Ci1XZWJJbnNwZWN0b3IuVGltZWxpbmVzQ29udGVudFZpZXcuQ29sbGFwc2VCdXR0b24u
U3RhdGVzLkFjdGl2ZSA9ICJhY3RpdmUiOwotCi1XZWJJbnNwZWN0b3IuVGltZWxpbmVzQ29udGVu
dFZpZXcuZ2VuZXJhdGVFbWJvc3NlZENvbGxhcHNlSW1hZ2VzID0gZnVuY3Rpb24oKQotewotICAg
IGlmIChXZWJJbnNwZWN0b3IuVGltZWxpbmVzQ29udGVudFZpZXcuX2dlbmVyYXRlZEltYWdlcykK
LSAgICAgICAgcmV0dXJuOwotICAgIFdlYkluc3BlY3Rvci5UaW1lbGluZXNDb250ZW50Vmlldy5f
Z2VuZXJhdGVkSW1hZ2VzID0gdHJ1ZTsKLQotICAgIGdlbmVyYXRlRW1ib3NzZWRJbWFnZXMoIklt
YWdlcy9Nb3JlQ29sdW1ucy5zdmciLCAxNSwgMTMsIFdlYkluc3BlY3Rvci5UaW1lbGluZXNDb250
ZW50Vmlldy5Db2xsYXBzZUJ1dHRvbi5TdGF0ZXMsIGNhbnZhc0lkZW50aWZpZXIuYmluZCh0aGlz
LCBXZWJJbnNwZWN0b3IuVGltZWxpbmVzQ29udGVudFZpZXcuQ29sbGFwc2VCdXR0b24uTW9yZSkp
OwotICAgIGdlbmVyYXRlRW1ib3NzZWRJbWFnZXMoIkltYWdlcy9MZXNzQ29sdW1ucy5zdmciLCAx
NSwgMTMsIFdlYkluc3BlY3Rvci5UaW1lbGluZXNDb250ZW50Vmlldy5Db2xsYXBzZUJ1dHRvbi5T
dGF0ZXMsIGNhbnZhc0lkZW50aWZpZXIuYmluZCh0aGlzLCBXZWJJbnNwZWN0b3IuVGltZWxpbmVz
Q29udGVudFZpZXcuQ29sbGFwc2VCdXR0b24uTGVzcykpOwotCi0gICAgZnVuY3Rpb24gY2FudmFz
SWRlbnRpZmllcih0eXBlLCBzdGF0ZSkgewotICAgICAgICByZXR1cm4gInRpbWVsaW5lLWRhdGFn
cmlkLWNvbGxhcHNlLWJ1dHRvbi0iICsgdHlwZSArICItIiArIHN0YXRlOwotICAgIH0KLX0KLQot
V2ViSW5zcGVjdG9yLlRpbWVsaW5lc0NvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKLSAgICBjb25z
dHJ1Y3RvcjogV2ViSW5zcGVjdG9yLlRpbWVsaW5lc0NvbnRlbnRWaWV3LAotCi0gICAgLy8gUHVi
bGljCi0KLSAgICBnZXQgYWxsb3dlZE5hdmlnYXRpb25TaWRlYmFyUGFuZWxzKCkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBbImluc3RydW1lbnQiXTsKLSAgICB9LAotCi0gICAgc2hvd1RpbWVsaW5l
Rm9yUmVjb3JkVHlwZTogZnVuY3Rpb24odHlwZSkKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzLl9j
dXJyZW50UmVjb3JkVHlwZSA9PT0gdHlwZSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAg
ICB0aGlzLl9jdXJyZW50UmVjb3JkVHlwZSA9IHR5cGU7Ci0gICAgICAgIHRoaXMuX2N1cnJlbnRS
ZWNvcmRUeXBlU2V0dGluZy52YWx1ZSA9IHR5cGU7Ci0KLSAgICAgICAgaWYgKHRoaXMuX2N1cnJl
bnREYXRhR3JpZCkgewotICAgICAgICAgICAgLy8gU2F2ZSBzY3JvbGwgcG9zaXRvbiBiZWZvcmUg
cmVtb3ZpbmcgZnJvbSB0aGUgZG9jdW1lbnQuCi0gICAgICAgICAgICBpZiAodGhpcy5fY3VycmVu
dERhdGFHcmlkLmlzU2Nyb2xsZWRUb0xhc3RSb3coKSkgewotICAgICAgICAgICAgICAgIHRoaXMu
X2N1cnJlbnREYXRhR3JpZC5fc2F2ZWRJc1Njcm9sbGVkVG9MYXN0Um93ID0gdHJ1ZTsKLSAgICAg
ICAgICAgICAgICBkZWxldGUgdGhpcy5fY3VycmVudERhdGFHcmlkLl9zYXZlZFNjcm9sbFRvcDsK
LSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgdGhpcy5fY3VycmVudERhdGFH
cmlkLl9zYXZlZFNjcm9sbFRvcCA9IHRoaXMuX2N1cnJlbnREYXRhR3JpZC5zY3JvbGxDb250YWlu
ZXIuc2Nyb2xsVG9wOwotICAgICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9jdXJyZW50RGF0YUdy
aWQuX3NhdmVkSXNTY3JvbGxlZFRvTGFzdFJvdzsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgdGhpcy5lbGVtZW50LnJlbW92ZUNoaWxkKHRoaXMuX2N1cnJlbnREYXRhR3JpZC5lbGVtZW50
KTsKLSAgICAgICAgICAgIHRoaXMuX2N1cnJlbnREYXRhR3JpZC5oaWRkZW4oKTsKLSAgICAgICAg
fQotCi0gICAgICAgIHRoaXMuX2N1cnJlbnREYXRhR3JpZCA9IHRoaXMuX2RhdGFHcmlkTWFwW3R5
cGVdOwotICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9jdXJyZW50RGF0YUdyaWQpOwotCi0g
ICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9jdXJyZW50RGF0YUdyaWQuZWxl
bWVudCk7Ci0gICAgICAgIHRoaXMuX2N1cnJlbnREYXRhR3JpZC51cGRhdGVMYXlvdXQoKTsKLSAg
ICAgICAgdGhpcy5fY3VycmVudERhdGFHcmlkLnNob3duKCk7Ci0KLSAgICAgICAgLy8gUmVzdG9y
ZSBzY3JvbGwgcG9zaXRvbiBub3cgdGhhdCB3ZSBhcmUgYmFjayBpbiB0aGUgZG9jdW1lbnQuCi0g
ICAgICAgIGlmICh0aGlzLl9jdXJyZW50RGF0YUdyaWQuX3NhdmVkSXNTY3JvbGxlZFRvTGFzdFJv
dykKLSAgICAgICAgICAgIHRoaXMuX2N1cnJlbnREYXRhR3JpZC5zY3JvbGxUb0xhc3RSb3coKTsK
LSAgICAgICAgZWxzZSBpZiAodGhpcy5fY3VycmVudERhdGFHcmlkLl9zYXZlZFNjcm9sbFRvcCkK
LSAgICAgICAgICAgIHRoaXMuX2N1cnJlbnREYXRhR3JpZC5zY3JvbGxDb250YWluZXIuc2Nyb2xs
VG9wID0gdGhpcy5fY3VycmVudERhdGFHcmlkLl9zYXZlZFNjcm9sbFRvcDsKLQotICAgICAgICB0
aGlzLl91cGRhdGVQZW5kaW5nUmVjb3JkcygpOwotCi0gICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVu
dFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5FdmVudC5TZWxlY3Rpb25QYXRo
Q29tcG9uZW50c0RpZENoYW5nZSk7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5pbnN0cnVtZW50U2lk
ZWJhclBhbmVsLnNob3dUaW1lbGluZUZvclJlY29yZFR5cGUodHlwZSk7Ci0gICAgfSwKLQotICAg
IGdldCBzdXBwb3J0c1NwbGl0Q29udGVudEJyb3dzZXIoKQotICAgIHsKLSAgICAgICAgLy8gVGhl
IGxheW91dCBvZiB0aGUgb3ZlcnZpZXcgYW5kIHNwbGl0IGNvbnRlbnQgYnJvd3NlciBkb24ndCB3
b3JrIHdlbGwuCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9LAotCi0gICAgZ2V0IHNlbGVj
dGlvblBhdGhDb21wb25lbnRzKCkKLSAgICB7Ci0gICAgICAgIHZhciBwYXRoQ29tcG9uZW50cyA9
IFt0aGlzLl9wYXRoQ29tcG9uZW50TWFwW3RoaXMuX2N1cnJlbnRSZWNvcmRUeXBlXV0gfHwgW107
Ci0KLSAgICAgICAgaWYgKHRoaXMuX2N1cnJlbnREYXRhR3JpZCkgewotICAgICAgICAgICAgdmFy
IHNlbGVjdGVkTm9kZSA9IHRoaXMuX2N1cnJlbnREYXRhR3JpZC5zZWxlY3RlZE5vZGU7Ci0gICAg
ICAgICAgICBpZiAoc2VsZWN0ZWROb2RlIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlJlc291cmNl
VGltZWxpbmVEYXRhR3JpZE5vZGUpIHsKLSAgICAgICAgICAgICAgICB2YXIgcGF0aENvbXBvbmVu
dCA9IG5ldyBXZWJJbnNwZWN0b3IuUmVzb3VyY2VUaW1lbGluZURhdGFHcmlkTm9kZVBhdGhDb21w
b25lbnQoc2VsZWN0ZWROb2RlKTsKLSAgICAgICAgICAgICAgICBwYXRoQ29tcG9uZW50LmFkZEV2
ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhDb21wb25lbnQuRXZlbnQu
U2libGluZ1dhc1NlbGVjdGVkLCB0aGlzLl9kYXRhR3JpZE5vZGVQYXRoQ29tcG9uZW50U2VsZWN0
ZWQsIHRoaXMpOwotICAgICAgICAgICAgICAgIHBhdGhDb21wb25lbnRzLnB1c2gocGF0aENvbXBv
bmVudCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gcGF0aENv
bXBvbmVudHM7Ci0gICAgfSwKLQotICAgIHVwZGF0ZUxheW91dDogZnVuY3Rpb24oKQotICAgIHsK
LSAgICAgICAgaWYgKHRoaXMuX2N1cnJlbnREYXRhR3JpZCkKLSAgICAgICAgICAgIHRoaXMuX2N1
cnJlbnREYXRhR3JpZC51cGRhdGVMYXlvdXQoKTsKLSAgICAgICAgdGhpcy5fdGltZWxpbmVPdmVy
dmlldy51cGRhdGVMYXlvdXQoKTsKLSAgICAgICAgdGhpcy5fdXBkYXRlT2Zmc2NyZWVuUm93cygp
OwotICAgIH0sCi0KLSAgICBnZXQgc2Nyb2xsYWJsZUVsZW1lbnRzKCkKLSAgICB7Ci0gICAgICAg
IGlmICghdGhpcy5fY3VycmVudERhdGFHcmlkKQotICAgICAgICAgICAgcmV0dXJuIG51bGw7Ci0g
ICAgICAgIHJldHVybiBbdGhpcy5fY3VycmVudERhdGFHcmlkLnNjcm9sbENvbnRhaW5lcl07Ci0g
ICAgfSwKLQotICAgIGdldCBzaG91bGRLZWVwRWxlbWVudHNTY3JvbGxlZFRvQm90dG9tKCkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0sCi0KLSAgICBzaG93bjogZnVuY3Rpb24o
KQotICAgIHsKLSAgICAgICAgaWYgKHRoaXMuX2N1cnJlbnRSZWNvcmRUeXBlKSB7Ci0gICAgICAg
ICAgICB0aGlzLl91cGRhdGVQZW5kaW5nUmVjb3JkcygpOwotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHRoaXMuX2N1cnJlbnREYXRhR3JpZCkKLSAgICAgICAg
ICAgIHRoaXMuX2N1cnJlbnREYXRhR3JpZC5zaG93bigpOwotCi0gICAgICAgIHRoaXMuc2hvd1Rp
bWVsaW5lRm9yUmVjb3JkVHlwZSh0aGlzLl9jdXJyZW50UmVjb3JkVHlwZVNldHRpbmcudmFsdWUp
OwotICAgIH0sCi0KLSAgICBoaWRkZW46IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIGlmICh0
aGlzLl9jdXJyZW50RGF0YUdyaWQpCi0gICAgICAgICAgICB0aGlzLl9jdXJyZW50RGF0YUdyaWQu
aGlkZGVuKCk7Ci0gICAgfSwKLQotICAgIHNhdmVUb0Nvb2tpZTogZnVuY3Rpb24oY29va2llKQot
ICAgIHsKLSAgICAgICAgY29va2llLnR5cGUgPSBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXdDb29r
aWVUeXBlLlRpbWVsaW5lczsKLSAgICAgICAgY29va2llLnRpbWVsaW5lID0gdGhpcy5fY3VycmVu
dFJlY29yZFR5cGVTZXR0aW5nLnZhbHVlOwotICAgIH0sCi0KLSAgICByZXN0b3JlRnJvbUNvb2tp
ZTogZnVuY3Rpb24oY29va2llKQotICAgIHsKLSAgICAgICAgdGhpcy5zaG93VGltZWxpbmVGb3JS
ZWNvcmRUeXBlKGNvb2tpZS50aW1lbGluZSk7Ci0gICAgfSwKLQotICAgIHRpbWVsaW5lT3ZlcnZp
ZXdSZWNvcmRzV2l0aFR5cGU6IGZ1bmN0aW9uKHR5cGUpCi0gICAgewotICAgICAgICByZXR1cm4g
dGhpcy5fZmlsdGVyUmVjb3Jkc1dpdGhUeXBlKFdlYkluc3BlY3Rvci50aW1lbGluZU1hbmFnZXIu
cmVjb3Jkc1dpdGhUeXBlKHR5cGUpLCB0eXBlKTsKLSAgICB9LAotCi0gICAgLy8gUHJpdmF0ZQot
Ci0gICAgX3BhdGhDb21wb25lbnRTZWxlY3RlZDogZnVuY3Rpb24oZXZlbnQpCi0gICAgewotICAg
ICAgICB0aGlzLnNob3dUaW1lbGluZUZvclJlY29yZFR5cGUoZXZlbnQuZGF0YS5wYXRoQ29tcG9u
ZW50LnJlcHJlc2VudGVkT2JqZWN0KTsKLSAgICB9LAotCi0gICAgX2RhdGFHcmlkTm9kZVBhdGhD
b21wb25lbnRTZWxlY3RlZDogZnVuY3Rpb24oZXZlbnQpCi0gICAgewotICAgICAgICBjb25zb2xl
LmFzc2VydChldmVudC5kYXRhLnBhdGhDb21wb25lbnQgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3Iu
UmVzb3VyY2VUaW1lbGluZURhdGFHcmlkTm9kZVBhdGhDb21wb25lbnQpOwotICAgICAgICBpZiAo
IShldmVudC5kYXRhLnBhdGhDb21wb25lbnQgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuUmVzb3Vy
Y2VUaW1lbGluZURhdGFHcmlkTm9kZVBhdGhDb21wb25lbnQpKQotICAgICAgICAgICAgcmV0dXJu
OwotCi0gICAgICAgIGV2ZW50LmRhdGEucGF0aENvbXBvbmVudC5yZXNvdXJjZVRpbWVsaW5lRGF0
YUdyaWROb2RlLnJldmVhbEFuZFNlbGVjdCgpOwotICAgICAgICBldmVudC5kYXRhLnBhdGhDb21w
b25lbnQucmVzb3VyY2VUaW1lbGluZURhdGFHcmlkTm9kZS5kYXRhR3JpZC5lbGVtZW50LmZvY3Vz
KCk7Ci0gICAgfSwKLQotICAgIF9zZWxlY3RlZE5vZGVDaGFuZ2VkOiBmdW5jdGlvbihldmVudCkK
LSAgICB7Ci0gICAgICAgIGlmICh0aGlzLl9pZ25vcmVTZWxlY3Rpb25FdmVudCkKLSAgICAgICAg
ICAgIHJldHVybjsKLQotICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJ
bnNwZWN0b3IuQ29udGVudFZpZXcuRXZlbnQuU2VsZWN0aW9uUGF0aENvbXBvbmVudHNEaWRDaGFu
Z2UpOwotICAgIH0sCi0KLSAgICBfcmVjb3Jkc0NsZWFyZWQ6IGZ1bmN0aW9uKGV2ZW50KQotICAg
IHsKLSAgICAgICAgdGhpcy5fcGVuZGluZ1JlY29yZHMgPSB7fTsKLSAgICAgICAgdGhpcy5fcGVu
ZGluZ1JlZnJlc2hHcmlkTm9kZXMgPSB7fTsKLSAgICAgICAgdGhpcy5fcGVuZGluZ0V2ZW50TWFy
a2VycyA9IHt9OwotCi0gICAgICAgIGZvciAodmFyIHR5cGUgaW4gdGhpcy5fZGF0YUdyaWRNYXAp
IHsKLSAgICAgICAgICAgIHZhciBkYXRhR3JpZCA9IHRoaXMuX2RhdGFHcmlkTWFwW3R5cGVdOwot
ICAgICAgICAgICAgZGVsZXRlIGRhdGFHcmlkLl9zYXZlZElzU2Nyb2xsZWRUb0xhc3RSb3c7Ci0g
ICAgICAgICAgICBkZWxldGUgZGF0YUdyaWQuX3NhdmVkU2Nyb2xsVG9wOwotICAgICAgICAgICAg
ZGF0YUdyaWQucmVtb3ZlQ2hpbGRyZW4oKTsKLSAgICAgICAgICAgIGRhdGFHcmlkLnJlc2V0KCk7
Ci0gICAgICAgIH0KLQotICAgICAgICB0aGlzLl90aW1lbGluZU92ZXJ2aWV3LmNsZWFyKCk7Ci0g
ICAgfSwKLQotICAgIF9yZWNvcmRBZGRlZDogZnVuY3Rpb24oZXZlbnQpCi0gICAgewotICAgICAg
ICB0aGlzLl9hZGRSZWNvcmRUb0RhdGFHcmlkKGV2ZW50LmRhdGEucmVjb3JkKTsKLSAgICB9LAot
Ci0gICAgX3JlY29yZGVkRXZlbnRNYXJrZXI6IGZ1bmN0aW9uKGV2ZW50KQotICAgIHsKLSAgICAg
ICAgdmFyIGV2ZW50TWFya2VyID0gZXZlbnQuZGF0YS5ldmVudE1hcmtlcjsKLSAgICAgICAgdGhp
cy5fdGltZWxpbmVPdmVydmlldy5hZGRUaW1lbGluZUV2ZW50TWFya2VyKGV2ZW50TWFya2VyKTsK
LQotICAgICAgICBmb3IgKHZhciB0eXBlIGluIHRoaXMuX2RhdGFHcmlkTWFwKSB7Ci0gICAgICAg
ICAgICBpZiAoIXRoaXMuX3BlbmRpbmdFdmVudE1hcmtlcnNbdHlwZV0pCi0gICAgICAgICAgICAg
ICAgdGhpcy5fcGVuZGluZ0V2ZW50TWFya2Vyc1t0eXBlXSA9IFtdOwotICAgICAgICAgICAgdGhp
cy5fcGVuZGluZ0V2ZW50TWFya2Vyc1t0eXBlXS5wdXNoKGV2ZW50TWFya2VyKTsKLQotICAgICAg
ICAgICAgdGhpcy5fZGF0YUdyaWRNYXBbdHlwZV0uYWRkVGltZWxpbmVFdmVudE1hcmtlcihldmVu
dE1hcmtlcik7Ci0gICAgICAgIH0KLQotICAgICAgICB0aGlzLl91cGRhdGVQZW5kaW5nUmVjb3Jk
c1Nvb24oKTsKLSAgICB9LAotCi0gICAgX2FkZFJlY29yZFRvRGF0YUdyaWQ6IGZ1bmN0aW9uKHJl
Y29yZCkKLSAgICB7Ci0gICAgICAgIGlmICghdGhpcy5fcGVuZGluZ1JlY29yZHNbcmVjb3JkLnR5
cGVdKQotICAgICAgICAgICAgdGhpcy5fcGVuZGluZ1JlY29yZHNbcmVjb3JkLnR5cGVdID0gW107
Ci0gICAgICAgIHRoaXMuX3BlbmRpbmdSZWNvcmRzW3JlY29yZC50eXBlXS5wdXNoKHJlY29yZCk7
Ci0KLSAgICAgICAgdGhpcy5fdXBkYXRlUGVuZGluZ1JlY29yZHNTb29uKCk7Ci0gICAgfSwKLQot
ICAgIF91cGRhdGVQZW5kaW5nUmVjb3Jkc1Nvb246IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAg
IGlmICghdGhpcy52aXNpYmxlIHx8IHRoaXMuX3VwZGF0ZVBlbmRpbmdSZWNvcmRzVGltZW91dCkK
LSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICB0aGlzLl91cGRhdGVQZW5kaW5nUmVjb3Jk
c1RpbWVvdXQgPSBzZXRUaW1lb3V0KHRoaXMuX3VwZGF0ZVBlbmRpbmdSZWNvcmRzLmJpbmQodGhp
cyksIFdlYkluc3BlY3Rvci5UaW1lbGluZXNDb250ZW50Vmlldy5VcGRhdGVJbnRlcnZhbCk7Ci0g
ICAgfSwKLQotICAgIF91cGRhdGVQZW5kaW5nUmVjb3JkczogZnVuY3Rpb24oKQotICAgIHsKLSAg
ICAgICAgaWYgKHRoaXMuX3VwZGF0ZVBlbmRpbmdSZWNvcmRzVGltZW91dCkgewotICAgICAgICAg
ICAgY2xlYXJUaW1lb3V0KHRoaXMuX3VwZGF0ZVBlbmRpbmdSZWNvcmRzVGltZW91dCk7Ci0gICAg
ICAgICAgICBkZWxldGUgdGhpcy5fdXBkYXRlUGVuZGluZ1JlY29yZHNUaW1lb3V0OwotICAgICAg
ICB9Ci0KLSAgICAgICAgdGhpcy5fdGltZWxpbmVPdmVydmlldy51cGRhdGUoKTsKLQotICAgICAg
ICBjb25zb2xlLmFzc2VydCh0aGlzLl9kYXRhR3JpZE1hcFt0aGlzLl9jdXJyZW50UmVjb3JkVHlw
ZV0gPT09IHRoaXMuX2N1cnJlbnREYXRhR3JpZCk7Ci0gICAgICAgIGlmICh0aGlzLl9kYXRhR3Jp
ZE1hcFt0aGlzLl9jdXJyZW50UmVjb3JkVHlwZV0gIT09IHRoaXMuX2N1cnJlbnREYXRhR3JpZCkK
LSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICB2YXIgaXNTY3JvbGxlZFRvTGFzdFJvdyA9
IHRoaXMuX2N1cnJlbnREYXRhR3JpZC5pc1Njcm9sbGVkVG9MYXN0Um93KCk7Ci0KLSAgICAgICAg
Ly8gSWYgdGhlIGRhdGEgZ3JpZCBoYXMgYSB0aW1lbGluZSBjYWxjdWxhdG9yLCBwYXNzIHRocm91
Z2ggYWxsIHRoZSBwZW5kaW5nIHJlY29yZHMgZmlyc3QKLSAgICAgICAgLy8gdG8gdXBkYXRlIHRo
ZSB0aW1lbGluZSBib3VuZHMuIElmIHRoZSBib3VuZHMgY2hhbmdlIHdlIG5lZWQgdG8gcmVmcmVz
aCBhbGwgbm9kZXMKLSAgICAgICAgLy8gaW4gdGhlIGRhdGEgZ3JpZCwgb3RoZXJ3aXNlIHdlIGNh
biBqdXN0IHByb2NlZWQgYW5kIHVwZGF0ZSB0aGUgcGVuZGluZyByZWNvcmRzLgotICAgICAgICB2
YXIgd2FzQm91bmRzQ2hhbmdlID0gdGhpcy5fdXBkYXRlQ2FsY3VsYXRvckJvdW5kc0ZvclBlbmRp
bmdSZWNvcmRzQW5kRXZlbnRNYXJrZXJzKCk7Ci0gICAgICAgIHRoaXMuX3VwZGF0ZVBlbmRpbmdS
ZWNvcmRzV2l0aE5ld0JvdW5kcyh3YXNCb3VuZHNDaGFuZ2UpOwotCi0gICAgICAgIHRoaXMuX3Vw
ZGF0ZU9mZnNjcmVlblJvd3MoKTsKLQotICAgICAgICB0aGlzLl9jdXJyZW50RGF0YUdyaWQudXBk
YXRlKCk7Ci0gICAgICAgIGlmIChpc1Njcm9sbGVkVG9MYXN0Um93KQotICAgICAgICAgICAgdGhp
cy5fY3VycmVudERhdGFHcmlkLnNjcm9sbFRvTGFzdFJvdygpOwotICAgIH0sCi0KLSAgICBfdXBk
YXRlQ2FsY3VsYXRvckJvdW5kc0ZvclBlbmRpbmdSZWNvcmRzQW5kRXZlbnRNYXJrZXJzOiBmdW5j
dGlvbigpCi0gICAgewotICAgICAgICB2YXIgY3VycmVudERhdGFHcmlkID0gdGhpcy5fY3VycmVu
dERhdGFHcmlkOwotICAgICAgICBpZiAoIWN1cnJlbnREYXRhR3JpZC5jdXJyZW50Q2FsY3VsYXRv
cikKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICB2YXIgd2FzQm91bmRzQ2hh
bmdlID0gZmFsc2U7Ci0KLSAgICAgICAgdmFyIHBlbmRpbmdSZWNvcmRzID0gdGhpcy5fcGVuZGlu
Z1JlY29yZHNbdGhpcy5fY3VycmVudFJlY29yZFR5cGVdOwotICAgICAgICBpZiAocGVuZGluZ1Jl
Y29yZHMpIHsKLSAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGVuZGluZ1JlY29yZHMu
bGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgICAgICBpZiAoY3VycmVudERhdGFHcmlkLnVwZGF0
ZUNhbGN1bGF0b3JCb3VuZGFyaWVzV2l0aFJlY29yZChwZW5kaW5nUmVjb3Jkc1tpXSkpCi0gICAg
ICAgICAgICAgICAgICAgIHdhc0JvdW5kc0NoYW5nZSA9IHRydWU7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIH0KLQotICAgICAgICB2YXIgcGVuZGluZ1JlZnJlc2hHcmlkTm9kZXMgPSB0aGlzLl9w
ZW5kaW5nUmVmcmVzaEdyaWROb2Rlc1t0aGlzLl9jdXJyZW50UmVjb3JkVHlwZV07Ci0gICAgICAg
IGlmIChwZW5kaW5nUmVmcmVzaEdyaWROb2RlcykgewotICAgICAgICAgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBwZW5kaW5nUmVmcmVzaEdyaWROb2Rlcy5sZW5ndGg7ICsraSkgewotICAgICAgICAg
ICAgICAgIGlmIChjdXJyZW50RGF0YUdyaWQudXBkYXRlQ2FsY3VsYXRvckJvdW5kYXJpZXNXaXRo
RGF0YUdyaWROb2RlKHBlbmRpbmdSZWZyZXNoR3JpZE5vZGVzW2ldKSkKLSAgICAgICAgICAgICAg
ICAgICAgd2FzQm91bmRzQ2hhbmdlID0gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQot
Ci0gICAgICAgIHZhciBwZW5kaW5nRXZlbnRNYXJrZXJzID0gdGhpcy5fcGVuZGluZ0V2ZW50TWFy
a2Vyc1t0aGlzLl9jdXJyZW50UmVjb3JkVHlwZV07Ci0gICAgICAgIGlmIChwZW5kaW5nRXZlbnRN
YXJrZXJzKSB7Ci0gICAgICAgICAgICBkZWxldGUgdGhpcy5fcGVuZGluZ0V2ZW50TWFya2Vyc1t0
aGlzLl9jdXJyZW50UmVjb3JkVHlwZV07Ci0KLSAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgcGVuZGluZ0V2ZW50TWFya2Vycy5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgICAgIGlm
IChjdXJyZW50RGF0YUdyaWQudXBkYXRlQ2FsY3VsYXRvckJvdW5kYXJpZXNXaXRoRXZlbnRNYXJr
ZXIocGVuZGluZ0V2ZW50TWFya2Vyc1tpXSkpCi0gICAgICAgICAgICAgICAgICAgIHdhc0JvdW5k
c0NoYW5nZSA9IHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1
cm4gd2FzQm91bmRzQ2hhbmdlOwotICAgIH0sCi0KLSAgICBfdXBkYXRlUGVuZGluZ1JlY29yZHNX
aXRoTmV3Qm91bmRzOiBmdW5jdGlvbihyZWZyZXNoQWxsTm9kZXMpCi0gICAgewotICAgICAgICB2
YXIgc29ydENvbXBhcmF0b3IgPSB0aGlzLl9zb3J0Q29tcGFyYXRvci5iaW5kKHRoaXMpOwotCi0g
ICAgICAgIHZhciBwZW5kaW5nUmVjb3JkcyA9IHRoaXMuX3BlbmRpbmdSZWNvcmRzW3RoaXMuX2N1
cnJlbnRSZWNvcmRUeXBlXTsKLSAgICAgICAgaWYgKHBlbmRpbmdSZWNvcmRzKSB7Ci0gICAgICAg
ICAgICBkZWxldGUgdGhpcy5fcGVuZGluZ1JlY29yZHNbdGhpcy5fY3VycmVudFJlY29yZFR5cGVd
OwotICAgICAgICAgICAgcGVuZGluZ1JlY29yZHMgPSB0aGlzLl9maWx0ZXJSZWNvcmRzV2l0aFR5
cGUocGVuZGluZ1JlY29yZHMsIHRoaXMuX2N1cnJlbnRSZWNvcmRUeXBlKTsKLQotICAgICAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwZW5kaW5nUmVjb3Jkcy5sZW5ndGg7ICsraSkgewotICAg
ICAgICAgICAgICAgIHZhciBkYXRhR3JpZE5vZGUgPSB0aGlzLl9jcmVhdGVEYXRhR3JpZE5vZGVG
b3JSZWNvcmQocGVuZGluZ1JlY29yZHNbaV0pOwotICAgICAgICAgICAgICAgIGlmICh0aGlzLl9j
dXJyZW50RGF0YUdyaWQuc29ydENvbHVtbklkZW50aWZpZXIpIHsKLSAgICAgICAgICAgICAgICAg
ICAgdmFyIGluc2VydGlvbkluZGV4ID0gaW5zZXJ0aW9uSW5kZXhGb3JPYmplY3RJbkxpc3RTb3J0
ZWRCeUZ1bmN0aW9uKGRhdGFHcmlkTm9kZSwgdGhpcy5fY3VycmVudERhdGFHcmlkLmNoaWxkcmVu
LCBzb3J0Q29tcGFyYXRvcik7Ci0gICAgICAgICAgICAgICAgICAgIHRoaXMuX2N1cnJlbnREYXRh
R3JpZC5pbnNlcnRDaGlsZChkYXRhR3JpZE5vZGUsIGluc2VydGlvbkluZGV4KTsKLSAgICAgICAg
ICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgdGhpcy5fY3VycmVudERhdGFHcmlk
LmFwcGVuZENoaWxkKGRhdGFHcmlkTm9kZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQot
ICAgICAgICB2YXIgcGVuZGluZ1JlZnJlc2hHcmlkTm9kZXMgPSByZWZyZXNoQWxsTm9kZXMgPyB0
aGlzLl9jdXJyZW50RGF0YUdyaWQuY2hpbGRyZW4uc2xpY2UoKSA6IHRoaXMuX3BlbmRpbmdSZWZy
ZXNoR3JpZE5vZGVzW3RoaXMuX2N1cnJlbnRSZWNvcmRUeXBlXTsKLSAgICAgICAgaWYgKHBlbmRp
bmdSZWZyZXNoR3JpZE5vZGVzKSB7Ci0gICAgICAgICAgICBkZWxldGUgdGhpcy5fcGVuZGluZ1Jl
ZnJlc2hHcmlkTm9kZXNbdGhpcy5fY3VycmVudFJlY29yZFR5cGVdOwotCi0gICAgICAgICAgICB2
YXIgc2VsZWN0ZWROb2RlID0gdGhpcy5fY3VycmVudERhdGFHcmlkLnNlbGVjdGVkTm9kZTsKLQot
ICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwZW5kaW5nUmVmcmVzaEdyaWROb2Rlcy5s
ZW5ndGg7ICsraSkgewotICAgICAgICAgICAgICAgIHZhciBkYXRhR3JpZE5vZGUgPSBwZW5kaW5n
UmVmcmVzaEdyaWROb2Rlc1tpXTsKLSAgICAgICAgICAgICAgICBkZWxldGUgZGF0YUdyaWROb2Rl
Ll9wZW5kaW5nUmVmcmVzaDsKLSAgICAgICAgICAgICAgICBkYXRhR3JpZE5vZGUucmVmcmVzaCgp
OwotCi0gICAgICAgICAgICAgICAgaWYgKCF0aGlzLl9jdXJyZW50RGF0YUdyaWQuc29ydENvbHVt
bklkZW50aWZpZXIpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAg
ICAgICAgaWYgKGRhdGFHcmlkTm9kZSA9PT0gc2VsZWN0ZWROb2RlKQotICAgICAgICAgICAgICAg
ICAgICB0aGlzLl9pZ25vcmVTZWxlY3Rpb25FdmVudCA9IHRydWU7Ci0KLSAgICAgICAgICAgICAg
ICAvLyBSZW1vdmUgdGhlIGRhdGEgZ3JpZCBub2RlIHNvIHdlIGNhbiBmaW5kIHRoZSByaWdodCBz
b3J0ZWQgbG9jYXRpb24gdG8gcmVpbnNlcnQgaXQuIFdlIG5lZWQgdG8KLSAgICAgICAgICAgICAg
ICAvLyByZW1vdmUgaXQgZmlyc3Qgc28gaW5zZXJ0aW9uSW5kZXhGb3JPYmplY3RJbkxpc3RTb3J0
ZWRCeUZ1bmN0aW9uIGRvZXMgbm90IHJldHVybiB0aGUgY3VycmVudCBpbmRleC4KLSAgICAgICAg
ICAgICAgICB0aGlzLl9jdXJyZW50RGF0YUdyaWQucmVtb3ZlQ2hpbGQoZGF0YUdyaWROb2RlKTsK
LQotICAgICAgICAgICAgICAgIHZhciBpbnNlcnRpb25JbmRleCA9IGluc2VydGlvbkluZGV4Rm9y
T2JqZWN0SW5MaXN0U29ydGVkQnlGdW5jdGlvbihkYXRhR3JpZE5vZGUsIHRoaXMuX2N1cnJlbnRE
YXRhR3JpZC5jaGlsZHJlbiwgc29ydENvbXBhcmF0b3IpOwotICAgICAgICAgICAgICAgIHRoaXMu
X2N1cnJlbnREYXRhR3JpZC5pbnNlcnRDaGlsZChkYXRhR3JpZE5vZGUsIGluc2VydGlvbkluZGV4
KTsKLQotICAgICAgICAgICAgICAgIGlmIChkYXRhR3JpZE5vZGUgPT09IHNlbGVjdGVkTm9kZSkg
ewotICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZE5vZGUucmV2ZWFsQW5kU2VsZWN0KCk7Ci0g
ICAgICAgICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9pZ25vcmVTZWxlY3Rpb25FdmVudDsKLSAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9LAotCi0gICAg
X3VwZGF0ZU9mZnNjcmVlblJvd3M6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHZhciBkYXRh
VGFibGVCb2R5ID0gdGhpcy5fY3VycmVudERhdGFHcmlkLmRhdGFUYWJsZUJvZHk7Ci0gICAgICAg
IHZhciByb3dzID0gZGF0YVRhYmxlQm9keS5jaGlsZHJlbjsKLSAgICAgICAgdmFyIHJlY29yZHND
b3VudCA9IHJvd3MubGVuZ3RoOwotICAgICAgICBpZiAocmVjb3Jkc0NvdW50IDwgMikKLSAgICAg
ICAgICAgIHJldHVybjsgIC8vIEZpbGxlciByb3cgb25seS4KLQotICAgICAgICBjb25zdCBvdmVy
Zmxvd1BhZGRpbmcgPSAxMDA7Ci0gICAgICAgIHZhciB2aXNpYmxlVG9wID0gdGhpcy5fY3VycmVu
dERhdGFHcmlkLnNjcm9sbENvbnRhaW5lci5zY3JvbGxUb3AgLSBvdmVyZmxvd1BhZGRpbmc7Ci0g
ICAgICAgIHZhciB2aXNpYmxlQm90dG9tID0gdmlzaWJsZVRvcCArIHRoaXMuX2N1cnJlbnREYXRh
R3JpZC5zY3JvbGxDb250YWluZXIub2Zmc2V0SGVpZ2h0ICsgb3ZlcmZsb3dQYWRkaW5nOwotCi0g
ICAgICAgIHZhciByb3dIZWlnaHQgPSAwOwotCi0gICAgICAgIC8vIEZpbGxlciBpcyBhdCByZWNv
cmRzQ291bnQgLSAxLgotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJlY29yZHNDb3VudCAt
IDE7ICsraSkgewotICAgICAgICAgICAgdmFyIHJvdyA9IHJvd3NbaV07Ci0gICAgICAgICAgICBp
ZiAoIXJvd0hlaWdodCkKLSAgICAgICAgICAgICAgICByb3dIZWlnaHQgPSByb3cub2Zmc2V0SGVp
Z2h0OwotCi0gICAgICAgICAgICB2YXIgcm93SXNWaXNpYmxlID0gKGkgKiByb3dIZWlnaHQpIDwg
dmlzaWJsZUJvdHRvbSAmJiAoKGkgKyAxKSAqIHJvd0hlaWdodCkgPiB2aXNpYmxlVG9wOwotICAg
ICAgICAgICAgaWYgKHJvd0lzVmlzaWJsZSAhPT0gcm93LnJvd0lzVmlzaWJsZSkgewotICAgICAg
ICAgICAgICAgIGlmIChyb3dJc1Zpc2libGUpCi0gICAgICAgICAgICAgICAgICAgIHJvdy5jbGFz
c0xpc3QucmVtb3ZlKFdlYkluc3BlY3Rvci5UaW1lbGluZXNDb250ZW50Vmlldy5PZmZzY3JlZW5E
YXRhR3JpZFJvd1N0eWxlQ2xhc3NOYW1lKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAg
ICAgICAgICAgICAgIHJvdy5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5UaW1lbGluZXNDb250
ZW50Vmlldy5PZmZzY3JlZW5EYXRhR3JpZFJvd1N0eWxlQ2xhc3NOYW1lKTsKLSAgICAgICAgICAg
ICAgICByb3cucm93SXNWaXNpYmxlID0gcm93SXNWaXNpYmxlOwotICAgICAgICAgICAgfQotICAg
ICAgICB9Ci0gICAgfSwKLQotICAgIF9zb3J0Q3VycmVudERhdGFHcmlkOiBmdW5jdGlvbigpCi0g
ICAgewotICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9jdXJyZW50RGF0YUdyaWQpOwotICAg
ICAgICBpZiAoIXRoaXMuX2N1cnJlbnREYXRhR3JpZCkKLSAgICAgICAgICAgIHJldHVybjsKLQot
ICAgICAgICB2YXIgc29ydENvbHVtbklkZW50aWZpZXIgPSB0aGlzLl9jdXJyZW50RGF0YUdyaWQu
c29ydENvbHVtbklkZW50aWZpZXI7Ci0gICAgICAgIGlmICghc29ydENvbHVtbklkZW50aWZpZXIp
Ci0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgdmFyIHNlbGVjdGVkTm9kZSA9IHRoaXMu
X2N1cnJlbnREYXRhR3JpZC5zZWxlY3RlZE5vZGU7Ci0gICAgICAgIHRoaXMuX2lnbm9yZVNlbGVj
dGlvbkV2ZW50ID0gdHJ1ZTsKLQotICAgICAgICB2YXIgbm9kZXMgPSB0aGlzLl9jdXJyZW50RGF0
YUdyaWQuY2hpbGRyZW4uc2xpY2UoKTsKLSAgICAgICAgbm9kZXMuc29ydCh0aGlzLl9zb3J0Q29t
cGFyYXRvci5iaW5kKHRoaXMpKTsKLQotICAgICAgICB0aGlzLl9jdXJyZW50RGF0YUdyaWQucmVt
b3ZlQ2hpbGRyZW4oKTsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2Rlcy5sZW5ndGg7
ICsraSkKLSAgICAgICAgICAgIHRoaXMuX2N1cnJlbnREYXRhR3JpZC5hcHBlbmRDaGlsZChub2Rl
c1tpXSk7Ci0KLSAgICAgICAgaWYgKHNlbGVjdGVkTm9kZSkKLSAgICAgICAgICAgIHNlbGVjdGVk
Tm9kZS5yZXZlYWxBbmRTZWxlY3QoKTsKLQotICAgICAgICBkZWxldGUgdGhpcy5faWdub3JlU2Vs
ZWN0aW9uRXZlbnQ7Ci0KLSAgICAgICAgdGhpcy5fdXBkYXRlT2Zmc2NyZWVuUm93cygpOwotICAg
IH0sCi0KLSAgICBfc29ydENvbXBhcmF0b3I6IGZ1bmN0aW9uKG5vZGUxLCBub2RlMikKLSAgICB7
Ci0gICAgICAgIHZhciBzb3J0Q29sdW1uSWRlbnRpZmllciA9IHRoaXMuX2N1cnJlbnREYXRhR3Jp
ZC5zb3J0Q29sdW1uSWRlbnRpZmllcjsKLSAgICAgICAgaWYgKCFzb3J0Q29sdW1uSWRlbnRpZmll
cikKLSAgICAgICAgICAgIHJldHVybiAwOwotCi0gICAgICAgIHZhciBzb3J0RGlyZWN0aW9uID0g
dGhpcy5fY3VycmVudERhdGFHcmlkLnNvcnRPcmRlciA9PT0gImFzY2VuZGluZyIgPyAxIDogLTE7
Ci0KLSAgICAgICAgdmFyIHZhbHVlMSA9IG5vZGUxLmRhdGFbc29ydENvbHVtbklkZW50aWZpZXJd
OwotICAgICAgICB2YXIgdmFsdWUyID0gbm9kZTIuZGF0YVtzb3J0Q29sdW1uSWRlbnRpZmllcl07
Ci0KLSAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZTEgPT09ICJudW1iZXIiICYmIHR5cGVvZiB2YWx1
ZTIgPT09ICJudW1iZXIiKSB7Ci0gICAgICAgICAgICBpZiAoaXNOYU4odmFsdWUxKSAmJiBpc05h
Tih2YWx1ZTIpKQotICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAgaWYgKGlz
TmFOKHZhbHVlMSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHNvcnREaXJlY3Rpb24gKiAtMTsK
LSAgICAgICAgICAgIGlmIChpc05hTih2YWx1ZTIpKQotICAgICAgICAgICAgICAgIHJldHVybiBz
b3J0RGlyZWN0aW9uICogMTsKLSAgICAgICAgICAgIHJldHVybiAodmFsdWUxIC0gdmFsdWUyKSAq
IHNvcnREaXJlY3Rpb247Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAodHlwZW9mIHZhbHVlMSA9
PT0gInN0cmluZyIgJiYgdHlwZW9mIHZhbHVlMiA9PT0gInN0cmluZyIpCi0gICAgICAgICAgICBy
ZXR1cm4gdmFsdWUxLmxvY2FsZUNvbXBhcmUodmFsdWUyKSAqIHNvcnREaXJlY3Rpb247Ci0KLSAg
ICAgICAgaWYgKHZhbHVlMSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5DYWxsRnJhbWUgfHwgdmFs
dWUyIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkNhbGxGcmFtZSkgewotICAgICAgICAgICAgLy8g
U29ydCBieSBmdW5jdGlvbiBuYW1lIGlmIGF2YWlsYWJsZSwgdGhlbiBmYWxsIGJhY2sgdG8gdGhl
IHNvdXJjZSBjb2RlIG9iamVjdC4KLSAgICAgICAgICAgIHZhbHVlMSA9IHZhbHVlMSAmJiB2YWx1
ZTEuZnVuY3Rpb25OYW1lID8gdmFsdWUxLmZ1bmN0aW9uTmFtZSA6ICh2YWx1ZTEgJiYgdmFsdWUx
LnNvdXJjZUNvZGVMb2NhdGlvbiA/IHZhbHVlMS5zb3VyY2VDb2RlTG9jYXRpb24uc291cmNlQ29k
ZSA6ICIiKTsKLSAgICAgICAgICAgIHZhbHVlMiA9IHZhbHVlMiAmJiB2YWx1ZTIuZnVuY3Rpb25O
YW1lID8gdmFsdWUyLmZ1bmN0aW9uTmFtZSA6ICh2YWx1ZTIgJiYgdmFsdWUyLnNvdXJjZUNvZGVM
b2NhdGlvbiA/IHZhbHVlMi5zb3VyY2VDb2RlTG9jYXRpb24uc291cmNlQ29kZSA6ICIiKTsKLSAg
ICAgICAgfQotCi0gICAgICAgIGlmICh2YWx1ZTEgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuU291
cmNlQ29kZSB8fCB2YWx1ZTIgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuU291cmNlQ29kZSkgewot
ICAgICAgICAgICAgdmFsdWUxID0gdmFsdWUxID8gdmFsdWUxLmRpc3BsYXlOYW1lIHx8ICIiIDog
IiI7Ci0gICAgICAgICAgICB2YWx1ZTIgPSB2YWx1ZTIgPyB2YWx1ZTIuZGlzcGxheU5hbWUgfHwg
IiIgOiAiIjsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIEZvciBldmVyeXRoaW5nIGVsc2UgKG1v
c3RseSBib29sZWFucykuCi0gICAgICAgIHJldHVybiAodmFsdWUxIDwgdmFsdWUyID8gLTEgOiAo
dmFsdWUxID4gdmFsdWUyID8gMSA6IDApKSAqIHNvcnREaXJlY3Rpb247Ci0gICAgfSwKLQotICAg
IF9jcmVhdGVEYXRhR3JpZE5vZGVGb3JSZWNvcmQ6IGZ1bmN0aW9uKHJlY29yZCkKLSAgICB7Ci0g
ICAgICAgIHZhciBiYXNlU3RhcnRUaW1lID0gV2ViSW5zcGVjdG9yLnRpbWVsaW5lTWFuYWdlci5y
ZWNvcmRzWzBdLnN0YXJ0VGltZTsKLQotICAgICAgICBzd2l0Y2ggKHJlY29yZC50eXBlKSB7Ci0g
ICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkLlR5cGUuTmV0d29yazoKLSAg
ICAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlJlc291cmNlVGltZWxpbmVEYXRhR3Jp
ZE5vZGUocmVjb3JkKTsKLSAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmQu
VHlwZS5MYXlvdXQ6Ci0gICAgICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5MYXlvdXRU
aW1lbGluZURhdGFHcmlkTm9kZShyZWNvcmQsIGJhc2VTdGFydFRpbWUpOwotICAgICAgICBjYXNl
IFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZC5UeXBlLlNjcmlwdDoKLSAgICAgICAgICAgIHJl
dHVybiBuZXcgV2ViSW5zcGVjdG9yLlNjcmlwdFRpbWVsaW5lRGF0YUdyaWROb2RlKHJlY29yZCwg
YmFzZVN0YXJ0VGltZSk7Ci0gICAgICAgIH0KLQotICAgICAgICBjb25zb2xlLmVycm9yKCJVbmtu
b3duIHJlY29yZCB0eXBlOiAiICsgcmVjb3JkLnR5cGUpOwotICAgICAgICByZXR1cm4gbnVsbDsK
LSAgICB9LAotCi0gICAgX3NjaGVkdWxlR3JpZE5vZGVGb3JSZWZyZXNoOiBmdW5jdGlvbihldmVu
dCkKLSAgICB7Ci0gICAgICAgIHZhciBncmlkTm9kZSA9IGV2ZW50LnRhcmdldDsKLSAgICAgICAg
dmFyIHJlY29yZCA9IGdyaWROb2RlLnJlY29yZDsKLQotICAgICAgICBpZiAoZ3JpZE5vZGUuX3Bl
bmRpbmdSZWZyZXNoKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBncmlkTm9kZS5fcGVu
ZGluZ1JlZnJlc2ggPSB0cnVlOwotCi0gICAgICAgIGlmICghdGhpcy5fcGVuZGluZ1JlZnJlc2hH
cmlkTm9kZXNbcmVjb3JkLnR5cGVdKQotICAgICAgICAgICAgdGhpcy5fcGVuZGluZ1JlZnJlc2hH
cmlkTm9kZXNbcmVjb3JkLnR5cGVdID0gW107Ci0gICAgICAgIHRoaXMuX3BlbmRpbmdSZWZyZXNo
R3JpZE5vZGVzW3JlY29yZC50eXBlXS5wdXNoKGdyaWROb2RlKTsKLQotICAgICAgICB0aGlzLl91
cGRhdGVQZW5kaW5nUmVjb3Jkc1Nvb24oKTsKLSAgICB9LAotCi0gICAgX21ha2VDb2x1bW5TY29w
ZUJhcjogZnVuY3Rpb24ocHJlZml4LCBkaWN0aW9uYXJ5KQotICAgIHsKLSAgICAgICAgcHJlZml4
ID0gInRpbWVsaW5lLSIgKyBwcmVmaXggKyAiLWRhdGEtZ3JpZC0iOwotCi0gICAgICAgIHZhciBr
ZXlzID0gT2JqZWN0LmtleXMoZGljdGlvbmFyeSkuZmlsdGVyKGZ1bmN0aW9uKGtleSkgewotICAg
ICAgICAgICAgcmV0dXJuIHR5cGVvZiBkaWN0aW9uYXJ5W2tleV0gPT09ICJzdHJpbmciIHx8IGRp
Y3Rpb25hcnlba2V5XSBpbnN0YW5jZW9mIFN0cmluZzsKLSAgICAgICAgfSk7Ci0KLSAgICAgICAg
dmFyIHNjb3BlQmFySXRlbXMgPSBrZXlzLm1hcChmdW5jdGlvbihrZXkpIHsKLSAgICAgICAgICAg
IHZhciB2YWx1ZSA9IGRpY3Rpb25hcnlba2V5XTsKLSAgICAgICAgICAgIHZhciBpZCA9IHByZWZp
eCArIHZhbHVlOwotICAgICAgICAgICAgdmFyIGxhYmVsID0gZGljdGlvbmFyeS5kaXNwbGF5TmFt
ZSh2YWx1ZSwgdHJ1ZSk7Ci0gICAgICAgICAgICB2YXIgaXRlbSA9IG5ldyBXZWJJbnNwZWN0b3Iu
U2NvcGVCYXJJdGVtKGlkLCBsYWJlbCk7Ci0gICAgICAgICAgICBpdGVtLnZhbHVlID0gdmFsdWU7
Ci0gICAgICAgICAgICByZXR1cm4gaXRlbTsKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgc2NvcGVC
YXJJdGVtcy51bnNoaWZ0KG5ldyBXZWJJbnNwZWN0b3IuU2NvcGVCYXJJdGVtKHByZWZpeCArICJ0
eXBlLWFsbCIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiQWxsIiksIHRydWUpKTsKLQotICAgICAg
ICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5TY29wZUJhcihwcmVmaXggKyAic2NvcGUtYmFyIiwg
c2NvcGVCYXJJdGVtcywgc2NvcGVCYXJJdGVtc1swXSk7Ci0gICAgfSwKLQotICAgIF9kYXRhR3Jp
ZEZpbHRlcnNEaWRDaGFuZ2U6IGZ1bmN0aW9uKGV2ZW50KQotICAgIHsKLSAgICAgICAgdmFyIGRh
dGFHcmlkID0gZXZlbnQudGFyZ2V0OwotICAgICAgICBpZiAodGhpcy5fY3VycmVudERhdGFHcmlk
ID09PSBkYXRhR3JpZCkKLSAgICAgICAgICAgIHRoaXMuX3JlZnJlc2hBbGxSZWNvcmRzRm9yQ3Vy
cmVudERhdGFHcmlkKCk7Ci0KLSAgICAgICAgdGhpcy5fdGltZWxpbmVPdmVydmlldy51cGRhdGUo
KTsKLSAgICB9LAotCi0gICAgX3JlZnJlc2hBbGxSZWNvcmRzRm9yQ3VycmVudERhdGFHcmlkOiBm
dW5jdGlvbigpCi0gICAgewotICAgICAgICB2YXIgZGF0YUdyaWQgPSB0aGlzLl9jdXJyZW50RGF0
YUdyaWQ7Ci0gICAgICAgIHZhciByZWNvcmRUeXBlID0gdGhpcy5fY3VycmVudFJlY29yZFR5cGU7
Ci0gICAgICAgIHZhciByZWNvcmRzID0gdGhpcy50aW1lbGluZU92ZXJ2aWV3UmVjb3Jkc1dpdGhU
eXBlKHJlY29yZFR5cGUpOwotCi0gICAgICAgIHZhciBub2RlcyA9IHJlY29yZHMubWFwKGZ1bmN0
aW9uKHJlY29yZCkgewotICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2NyZWF0ZURhdGFHcmlkTm9k
ZUZvclJlY29yZChyZWNvcmQpOwotICAgICAgICB9LCB0aGlzKTsKLQotICAgICAgICBkYXRhR3Jp
ZC5yZW1vdmVDaGlsZHJlbigpOwotICAgICAgICBub2Rlcy5zb3J0KHRoaXMuX3NvcnRDb21wYXJh
dG9yLmJpbmQodGhpcykpLmZvckVhY2goZnVuY3Rpb24obm9kZSkgewotICAgICAgICAgICAgZGF0
YUdyaWQuYXBwZW5kQ2hpbGQobm9kZSk7Ci0gICAgICAgIH0pOwotCi0gICAgICAgIGRlbGV0ZSB0
aGlzLl9wZW5kaW5nUmVmcmVzaEdyaWROb2Rlc1tyZWNvcmRUeXBlXTsKLQotICAgICAgICB0aGlz
Ll91cGRhdGVPZmZzY3JlZW5Sb3dzKCk7Ci0gICAgfSwKLQotICAgIF9maWx0ZXJSZWNvcmRzV2l0
aFR5cGU6IGZ1bmN0aW9uKHJlY29yZHMsIHR5cGUpCi0gICAgewotICAgICAgICB2YXIgZGF0YUdy
aWQgPSB0aGlzLl9kYXRhR3JpZE1hcFt0eXBlXTsKLSAgICAgICAgdmFyIGlkZW50aWZpZXJzID0g
ZGF0YUdyaWQuZmlsdGVyYWJsZUNvbHVtbnM7Ci0KLSAgICAgICAgZnVuY3Rpb24gZmlsdGVyYWJs
ZVZhbHVlRm9yUmVjb3JkQW5kSWRlbnRpZmllcihyZWNvcmQsIGlkZW50aWZpZXIpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIHN3aXRjaCAodHlwZSkgewotICAgICAgICAgICAgY2FzZSBXZWJJbnNw
ZWN0b3IuVGltZWxpbmVSZWNvcmQuVHlwZS5OZXR3b3JrOgotICAgICAgICAgICAgICAgIHJldHVy
biByZWNvcmQucmVzb3VyY2VbaWRlbnRpZmllcl07Ci0gICAgICAgICAgICBjYXNlIFdlYkluc3Bl
Y3Rvci5UaW1lbGluZVJlY29yZC5UeXBlLkxheW91dDoKLSAgICAgICAgICAgICAgICByZXR1cm4g
cmVjb3JkW2lkZW50aWZpZXJdOwotICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuVGltZWxp
bmVSZWNvcmQuVHlwZS5TY3JpcHQ6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHJlY29yZFtpZGVu
dGlmaWVyXTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiByZWNv
cmRzLmZpbHRlcihmdW5jdGlvbihyZWNvcmQpIHsKLSAgICAgICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgaWRlbnRpZmllcnMubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAgICAgICB2YXIgaWRl
bnRpZmllciA9IGlkZW50aWZpZXJzW2ldOwotICAgICAgICAgICAgICAgIHZhciBzY29wZUJhciA9
IGRhdGFHcmlkLmNvbHVtbnNbaWRlbnRpZmllcl0uc2NvcGVCYXI7Ci0gICAgICAgICAgICAgICAg
aWYgKCFzY29wZUJhciB8fCBzY29wZUJhci5kZWZhdWx0SXRlbS5zZWxlY3RlZCkKLSAgICAgICAg
ICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgdmFyIHZhbHVlID0gZmlsdGVy
YWJsZVZhbHVlRm9yUmVjb3JkQW5kSWRlbnRpZmllcihyZWNvcmQsIGlkZW50aWZpZXIpOwotICAg
ICAgICAgICAgICAgIHZhciBtYXRjaGVzRmlsdGVyID0gc2NvcGVCYXIuc2VsZWN0ZWRJdGVtcy5z
b21lKGZ1bmN0aW9uKHNjb3BlQmFySXRlbSkgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4g
KHNjb3BlQmFySXRlbS52YWx1ZSA9PT0gdmFsdWUpOwotICAgICAgICAgICAgICAgIH0pOwotICAg
ICAgICAgICAgICAgIGlmICghbWF0Y2hlc0ZpbHRlcikKLSAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
ICAgIH0pOwotICAgIH0KLX07Ci0KLVdlYkluc3BlY3Rvci5UaW1lbGluZXNDb250ZW50Vmlldy5w
cm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LnByb3RvdHlwZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1RpbWVsaW5l
c09iamVjdC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1RpbWVsaW5l
c09iamVjdC5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWVhMDkzMS4uMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UaW1lbGluZXNPYmpl
Y3QuanMKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotV2ViSW5z
cGVjdG9yLlRpbWVsaW5lc09iamVjdCA9IGZ1bmN0aW9uKCkKLXsKLX07Ci0KLVdlYkluc3BlY3Rv
ci5UaW1lbGluZXNPYmplY3QucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNw
ZWN0b3IuVGltZWxpbmVzT2JqZWN0Ci19OwotCi1XZWJJbnNwZWN0b3IuVGltZWxpbmVzT2JqZWN0
LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZTsK
</data>
<flag name="review"
          id="237922"
          type_id="1"
          status="+"
          setter="joepeck"
    />
    <flag name="commit-queue"
          id="237923"
          type_id="3"
          status="-"
          setter="timothy"
    />
          </attachment>
      

    </bug>

</bugzilla>