<?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>127655</bug_id>
          
          <creation_ts>2014-01-26 12:08:25 -0800</creation_ts>
          <short_desc>Web Inspector: Prefix existing Profiler UI classes with &quot;Legacy&quot;</short_desc>
          <delta_ts>2014-01-30 17:30:58 -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>972227</commentid>
    <comment_count>0</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2014-01-26 12:08:25 -0800</bug_when>
    <thetext>We need to keep the old profiler classes around to support iOS 6 &amp; 7.

Also remove the unfinished Canvas profiler classes, they will need redone for the Timeline view. These didn&apos;t exist on iOS 6 &amp; 7.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>972228</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2014-01-26 12:08:39 -0800</bug_when>
    <thetext>&lt;rdar://problem/15911205&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>972232</commentid>
    <comment_count>2</comment_count>
      <attachid>222280</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2014-01-26 12:16:48 -0800</bug_when>
    <thetext>Created attachment 222280
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>972233</commentid>
    <comment_count>3</comment_count>
      <attachid>222281</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2014-01-26 12:17:53 -0800</bug_when>
    <thetext>Created attachment 222281
Better Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>973195</commentid>
    <comment_count>4</comment_count>
      <attachid>222281</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-01-28 16:06:38 -0800</bug_when>
    <thetext>Comment on attachment 222281
Better Patch

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

r=me

&gt; Source/WebInspectorUI/UserInterface/Main.js:-58
&gt; -    if (InspectorBackend.registerCanvasDispatcher)
&gt; -        InspectorBackend.registerCanvasDispatcher(new WebInspector.CanvasObserver);

Do you want to also delete the Canvas protocol/agent at this time?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974131</commentid>
    <comment_count>5</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2014-01-30 17:30:58 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/163138</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222280</attachid>
            <date>2014-01-26 12:16:48 -0800</date>
            <delta_ts>2014-01-26 12:17:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-127655-20140126121651.patch</filename>
            <type>text/plain</type>
            <size>189704</size>
            <attacher name="Timothy Hatcher">timothy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYyNzM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCA2
MjAyMzU5NDY5ZjQ3ZDE0YWRlODU0ZTc4NTQ5ZmZmYzZhNzAxY2FiLi4yMmUzOGU3ZDFiYzdiZmU0
NzcxZTJlYzg5YTE4Yjg2NTZjZDU3MTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NiBAQAorMjAxNC0wMS0yNiAgVGltb3RoeSBIYXRjaGVyICA8dGltb3RoeUBhcHBsZS5j
b20+CisKKyAgICAgICAgUHJlZml4IGV4aXN0aW5nIFdlYiBJbnNwZWN0b3IgcHJvZmlsZXIgY2xh
c3NlcyB3aXRoICJMZWdhY3kiLgorCisgICAgICAgIFJlbW92ZSBhIGRlcGVuZGVuY3kgb24gUHJv
ZmlsZVZpZXcgZm9yIHNob3dUaW1lQXNQZXJjZW50IGFuZCBzZWxlY3Rpb24gYXMgYSBkcml2ZS1i
eS4KKyAgICAgICAgQWxzbyByZW1vdmUgdGhlIHVuZmluaXNoZWQgQ2FudmFzIHByb2ZpbGVyIGNs
YXNzZXMsIHRoZXkgd2lsbCBuZWVkIHJlZG9uZSBmb3IgdGhlIFRpbWVsaW5lIHZpZXcuCisKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNzY1NQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVXNlckludGVy
ZmFjZS9DYW52YXNEYXRhR3JpZE5vZGUuanM6IFJlbW92ZWQuCisgICAgICAgICogVXNlckludGVy
ZmFjZS9DYW52YXNPYnNlcnZlci5qczogUmVtb3ZlZC4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNl
L0NhbnZhc1Byb2ZpbGVPYmplY3QuanM6IFJlbW92ZWQuCisgICAgICAgICogVXNlckludGVyZmFj
ZS9DYW52YXNQcm9maWxlVHlwZS5qczogUmVtb3ZlZC4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNl
L0NhbnZhc1Byb2ZpbGVWaWV3LmpzOiBSZW1vdmVkLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2Uv
Q29uc29sZU9ic2VydmVyLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnNvbGVPYnNlcnZl
ci5wcm90b3R5cGUubWVzc2FnZUFkZGVkKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0NvbnRl
bnRWaWV3LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3KToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5pc1ZpZXdhYmxlKToKKyAgICAgICAgKiBVc2VySW50
ZXJmYWNlL0luc3BlY3RvckZyb250ZW5kQVBJLmpzOgorICAgICAgICAoSW5zcGVjdG9yRnJvbnRl
bmRBUEkuaXNQcm9maWxpbmdKYXZhU2NyaXB0KToKKyAgICAgICAgKEluc3BlY3RvckZyb250ZW5k
QVBJLnN0YXJ0UHJvZmlsaW5nSmF2YVNjcmlwdCk6CisgICAgICAgIChJbnNwZWN0b3JGcm9udGVu
ZEFQSS5zdG9wUHJvZmlsaW5nSmF2YVNjcmlwdCk6CisgICAgICAgICogVXNlckludGVyZmFjZS9M
ZWdhY3lCb3R0b21VcFByb2ZpbGVEYXRhR3JpZFRyZWUuanM6IFJlbmFtZWQgZnJvbSBTb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Cb3R0b21VcFByb2ZpbGVEYXRhR3JpZFRyZWUu
anMuCisgICAgICAgICogVXNlckludGVyZmFjZS9MZWdhY3lKYXZhU2NyaXB0UHJvZmlsZU9iamVj
dC5qczogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0ph
dmFTY3JpcHRQcm9maWxlT2JqZWN0LmpzLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTGVnYWN5
SmF2YVNjcmlwdFByb2ZpbGVUeXBlLmpzOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvSmF2YVNjcmlwdFByb2ZpbGVUeXBlLmpzLgorICAgICAgICAqIFVz
ZXJJbnRlcmZhY2UvTGVnYWN5SmF2YVNjcmlwdFByb2ZpbGVWaWV3LmNzczogUmVuYW1lZCBmcm9t
IFNvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0phdmFTY3JpcHRQcm9maWxlVmll
dy5jc3MuCisgICAgICAgICogVXNlckludGVyZmFjZS9MZWdhY3lKYXZhU2NyaXB0UHJvZmlsZVZp
ZXcuanM6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9K
YXZhU2NyaXB0UHJvZmlsZVZpZXcuanMuCisgICAgICAgICogVXNlckludGVyZmFjZS9MZWdhY3lQ
cm9maWxlRGF0YUdyaWRUcmVlLmpzOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvUHJvZmlsZURhdGFHcmlkVHJlZS5qcy4KKyAgICAgICAgKiBVc2VySW50
ZXJmYWNlL0xlZ2FjeVByb2ZpbGVNYW5hZ2VyLmpzOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvZmlsZU1hbmFnZXIuanMuCisgICAgICAgICogVXNl
ckludGVyZmFjZS9MZWdhY3lQcm9maWxlT2JqZWN0LmpzOiBSZW5hbWVkIGZyb20gU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvZmlsZU9iamVjdC5qcy4KKyAgICAgICAgKiBV
c2VySW50ZXJmYWNlL0xlZ2FjeVByb2ZpbGVUeXBlLmpzOiBSZW5hbWVkIGZyb20gU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvZmlsZVR5cGUuanMuCisgICAgICAgICogVXNl
ckludGVyZmFjZS9MZWdhY3lQcm9maWxlVmlldy5jc3M6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm9maWxlVmlldy5jc3MuCisgICAgICAgICogVXNl
ckludGVyZmFjZS9MZWdhY3lQcm9maWxlVmlldy5qczogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb2ZpbGVWaWV3LmpzLgorICAgICAgICAqIFVzZXJJ
bnRlcmZhY2UvTGVnYWN5UHJvZmlsZXJPYnNlcnZlci5qczogUmVuYW1lZCBmcm9tIFNvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb2ZpbGVyT2JzZXJ2ZXIuanMuCisgICAgICAg
ICogVXNlckludGVyZmFjZS9MZWdhY3lUb3BEb3duUHJvZmlsZURhdGFHcmlkVHJlZS5qczogUmVu
YW1lZCBmcm9tIFNvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1RvcERvd25Qcm9m
aWxlRGF0YUdyaWRUcmVlLmpzLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTWFpbi5odG1sOgor
ICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTWFpbi5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5s
b2FkZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLm9wZW5VUkwpOgorCiAyMDE0LTAxLTI1ICBU
aW1vdGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgZGVh
ZCBjb2RlIGZyb20gdGhlIEpTQyBwcm9maWxlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0JvdHRvbVVwUHJvZmlsZURhdGFHcmlkVHJlZS5qcyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0JvdHRvbVVwUHJvZmlsZURhdGFHcmlk
VHJlZS5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODk5ZjUwMzU1N2I5NTNlYjE1
ZmFhMzkxMzVmNTE3MTkzN2E2MDc1ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Cb3R0b21V
cFByb2ZpbGVEYXRhR3JpZFRyZWUuanMKKysrIC9kZXYvbnVsbApAQCAtMSwyNjUgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSAyODAgTm9ydGggSW5jLiBBbGwgUmlnaHRzIFJlc2Vy
dmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQot
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotLy8gQm90dG9t
IFVwIFByb2ZpbGluZyBzaG93cyB0aGUgZW50aXJlIGNhbGxzdGFjayBiYWNrd2FyZHM6Ci0vLyBU
aGUgcm9vdCBub2RlIGlzIGEgcmVwcmVzZW50YXRpb24gb2YgZWFjaCBpbmRpdmlkdWFsIGZ1bmN0
aW9uIGNhbGxlZCwgYW5kIGVhY2ggY2hpbGQgb2YgdGhhdCBub2RlIHJlcHJlc2VudHMKLS8vIGEg
cmV2ZXJzZS1jYWxsc3RhY2sgc2hvd2luZyBob3cgbWFueSBvZiB0aG9zZSBjYWxscyBjYW1lIGZy
b20gaXQuIFNvLCB1bmxpa2UgdG9wLWRvd24sIHRoZSBzdGF0aXN0aWNzIGluCi0vLyBlYWNoIGNo
aWxkIHN0aWxsIHJlcHJlc2VudCB0aGUgcm9vdCBub2RlLiBXZSBoYXZlIHRvIGJlIHBhcnRpY3Vs
YXJseSBjYXJlZnVsIG9mIHJlY3Vyc2lvbiB3aXRoIHRoaXMgbW9kZQotLy8gYmVjYXVzZSBhIHJv
b3Qgbm9kZSBjYW4gcmVwcmVzZW50IGl0c2VsZiBBTkQgYW4gYW5jZXN0b3IuCi0KLVdlYkluc3Bl
Y3Rvci5Cb3R0b21VcFByb2ZpbGVEYXRhR3JpZE5vZGUgPSBmdW5jdGlvbigvKlByb2ZpbGVWaWV3
Ki8gcHJvZmlsZVZpZXcsIC8qUHJvZmlsZU5vZGUqLyBwcm9maWxlTm9kZSwgLypCb3R0b21VcFBy
b2ZpbGVEYXRhR3JpZFRyZWUqLyBvd25pbmdUcmVlKQotewotICAgIFdlYkluc3BlY3Rvci5Qcm9m
aWxlRGF0YUdyaWROb2RlLmNhbGwodGhpcywgcHJvZmlsZVZpZXcsIHByb2ZpbGVOb2RlLCBvd25p
bmdUcmVlLCB0aGlzLl93aWxsSGF2ZUNoaWxkcmVuKHByb2ZpbGVOb2RlKSk7Ci0KLSAgICB0aGlz
Ll9yZW1haW5pbmdOb2RlSW5mb3MgPSBbXTsKLX0KLQotV2ViSW5zcGVjdG9yLkJvdHRvbVVwUHJv
ZmlsZURhdGFHcmlkTm9kZS5wcm90b3R5cGUgPSB7Ci0gICAgX3Rha2VQcm9wZXJ0aWVzRnJvbVBy
b2ZpbGVEYXRhR3JpZE5vZGU6IGZ1bmN0aW9uKC8qUHJvZmlsZURhdGFHcmlkTm9kZSovIHByb2Zp
bGVEYXRhR3JpZE5vZGUpCi0gICAgewotICAgICAgICB0aGlzLl9zYXZlKCk7Ci0KLSAgICAgICAg
dGhpcy5zZWxmVGltZSA9IHByb2ZpbGVEYXRhR3JpZE5vZGUuc2VsZlRpbWU7Ci0gICAgICAgIHRo
aXMudG90YWxUaW1lID0gcHJvZmlsZURhdGFHcmlkTm9kZS50b3RhbFRpbWU7Ci0gICAgICAgIHRo
aXMubnVtYmVyT2ZDYWxscyA9IHByb2ZpbGVEYXRhR3JpZE5vZGUubnVtYmVyT2ZDYWxsczsKLSAg
ICB9LAotCi0gICAgLy8gV2hlbiBmb2N1c2luZywgd2Uga2VlcCBqdXN0IHRoZSBtZW1iZXJzIG9m
IHRoZSBjYWxsc3RhY2suCi0gICAgX2tlZXBPbmx5Q2hpbGQ6IGZ1bmN0aW9uKC8qUHJvZmlsZURh
dGFHcmlkTm9kZSovIGNoaWxkKQotICAgIHsKLSAgICAgICAgdGhpcy5fc2F2ZSgpOwotCi0gICAg
ICAgIHRoaXMucmVtb3ZlQ2hpbGRyZW4oKTsKLSAgICAgICAgdGhpcy5hcHBlbmRDaGlsZChjaGls
ZCk7Ci0gICAgfSwKLQotICAgIF9leGNsdWRlOiBmdW5jdGlvbihhQ2FsbFVJRCkKLSAgICB7Ci0g
ICAgICAgIGlmICh0aGlzLl9yZW1haW5pbmdOb2RlSW5mb3MpCi0gICAgICAgICAgICB0aGlzLl9w
b3B1bGF0ZSgpOwotCi0gICAgICAgIHRoaXMuX3NhdmUoKTsKLQotICAgICAgICB2YXIgY2hpbGRy
ZW4gPSB0aGlzLmNoaWxkcmVuOwotICAgICAgICB2YXIgaW5kZXggPSB0aGlzLmNoaWxkcmVuLmxl
bmd0aDsKLQotICAgICAgICB3aGlsZSAoaW5kZXgtLSkKLSAgICAgICAgICAgIGNoaWxkcmVuW2lu
ZGV4XS5fZXhjbHVkZShhQ2FsbFVJRCk7Ci0KLSAgICAgICAgdmFyIGNoaWxkID0gdGhpcy5jaGls
ZHJlbkJ5Q2FsbFVJRFthQ2FsbFVJRF07Ci0KLSAgICAgICAgaWYgKGNoaWxkKQotICAgICAgICAg
ICAgdGhpcy5fbWVyZ2UoY2hpbGQsIHRydWUpOwotICAgIH0sCi0KLSAgICBfcmVzdG9yZTogZnVu
Y3Rpb24oKQotICAgIHsKLSAgICAgICAgV2ViSW5zcGVjdG9yLlByb2ZpbGVEYXRhR3JpZE5vZGUu
cHJvdG90eXBlLl9yZXN0b3JlKCk7Ci0KLSAgICAgICAgaWYgKCF0aGlzLmNoaWxkcmVuLmxlbmd0
aCkKLSAgICAgICAgICAgIHRoaXMuaGFzQ2hpbGRyZW4gPSB0aGlzLl93aWxsSGF2ZUNoaWxkcmVu
KCk7Ci0gICAgfSwKLQotICAgIF9tZXJnZTogZnVuY3Rpb24oLypQcm9maWxlRGF0YUdyaWROb2Rl
Ki8gY2hpbGQsIC8qQm9vbGVhbiovIHNob3VsZEFic29yYikKLSAgICB7Ci0gICAgICAgIHRoaXMu
c2VsZlRpbWUgLT0gY2hpbGQuc2VsZlRpbWU7Ci0KLSAgICAgICAgV2ViSW5zcGVjdG9yLlByb2Zp
bGVEYXRhR3JpZE5vZGUucHJvdG90eXBlLl9tZXJnZS5jYWxsKHRoaXMsIGNoaWxkLCBzaG91bGRB
YnNvcmIpOwotICAgIH0sCi0KLSAgICBfc2hhcmVkUG9wdWxhdGU6IGZ1bmN0aW9uKCkKLSAgICB7
Ci0gICAgICAgIHZhciByZW1haW5pbmdOb2RlSW5mb3MgPSB0aGlzLl9yZW1haW5pbmdOb2RlSW5m
b3M7Ci0gICAgICAgIHZhciBjb3VudCA9IHJlbWFpbmluZ05vZGVJbmZvcy5sZW5ndGg7Ci0KLSAg
ICAgICAgZm9yICh2YXIgaW5kZXggPSAwOyBpbmRleCA8IGNvdW50OyArK2luZGV4KSB7Ci0gICAg
ICAgICAgICB2YXIgbm9kZUluZm8gPSByZW1haW5pbmdOb2RlSW5mb3NbaW5kZXhdOwotICAgICAg
ICAgICAgdmFyIGFuY2VzdG9yID0gbm9kZUluZm8uYW5jZXN0b3I7Ci0gICAgICAgICAgICB2YXIg
Zm9jdXNOb2RlID0gbm9kZUluZm8uZm9jdXNOb2RlOwotICAgICAgICAgICAgdmFyIGNoaWxkID0g
dGhpcy5maW5kQ2hpbGQoYW5jZXN0b3IpOwotCi0gICAgICAgICAgICAvLyBJZiB3ZSBhbHJlYWR5
IGhhdmUgdGhpcyBjaGlsZCwgdGhlbiBtZXJnZSB0aGUgZGF0YSB0b2dldGhlci4KLSAgICAgICAg
ICAgIGlmIChjaGlsZCkgewotICAgICAgICAgICAgICAgIHZhciB0b3RhbFRpbWVBY2NvdW50ZWRG
b3IgPSBub2RlSW5mby50b3RhbFRpbWVBY2NvdW50ZWRGb3I7Ci0KLSAgICAgICAgICAgICAgICBj
aGlsZC5zZWxmVGltZSArPSBmb2N1c05vZGUuc2VsZlRpbWU7Ci0gICAgICAgICAgICAgICAgY2hp
bGQubnVtYmVyT2ZDYWxscyArPSBmb2N1c05vZGUubnVtYmVyT2ZDYWxsczsKLQotICAgICAgICAg
ICAgICAgIGlmICghdG90YWxUaW1lQWNjb3VudGVkRm9yKQotICAgICAgICAgICAgICAgICAgICBj
aGlsZC50b3RhbFRpbWUgKz0gZm9jdXNOb2RlLnRvdGFsVGltZTsKLSAgICAgICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICAgICAgLy8gSWYgbm90LCBhZGQgaXQgYXMgYSB0cnVlIGFuY2VzdG9y
LgotICAgICAgICAgICAgICAgIC8vIEluIGhlYXZ5IG1vZGUsIHdlIHRha2Ugb3VyIHZpc3VhbCBp
ZGVudGl0eSBmcm9tIGFuY2VzdG9yIG5vZGUuLi4KLSAgICAgICAgICAgICAgICBjaGlsZCA9IG5l
dyBXZWJJbnNwZWN0b3IuQm90dG9tVXBQcm9maWxlRGF0YUdyaWROb2RlKHRoaXMucHJvZmlsZVZp
ZXcsIGFuY2VzdG9yLCB0aGlzLnRyZWUpOwotCi0gICAgICAgICAgICAgICAgaWYgKGFuY2VzdG9y
ICE9PSBmb2N1c05vZGUpIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gYnV0IHRoZSBhY3R1YWwg
c3RhdGlzdGljcyBmcm9tIHRoZSAicm9vdCIgbm9kZSAoYm90dG9tIG9mIHRoZSBjYWxsc3RhY2sp
LgotICAgICAgICAgICAgICAgICAgICBjaGlsZC5zZWxmVGltZSA9IGZvY3VzTm9kZS5zZWxmVGlt
ZTsKLSAgICAgICAgICAgICAgICAgICAgY2hpbGQudG90YWxUaW1lID0gZm9jdXNOb2RlLnRvdGFs
VGltZTsKLSAgICAgICAgICAgICAgICAgICAgY2hpbGQubnVtYmVyT2ZDYWxscyA9IGZvY3VzTm9k
ZS5udW1iZXJPZkNhbGxzOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIHRo
aXMuYXBwZW5kQ2hpbGQoY2hpbGQpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB2YXIg
cGFyZW50ID0gYW5jZXN0b3IucGFyZW50OwotICAgICAgICAgICAgaWYgKHBhcmVudCAmJiBwYXJl
bnQucGFyZW50KSB7Ci0gICAgICAgICAgICAgICAgbm9kZUluZm8uYW5jZXN0b3IgPSBwYXJlbnQ7
Ci0gICAgICAgICAgICAgICAgY2hpbGQuX3JlbWFpbmluZ05vZGVJbmZvcy5wdXNoKG5vZGVJbmZv
KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGRlbGV0ZSB0aGlzLl9yZW1h
aW5pbmdOb2RlSW5mb3M7Ci0gICAgfSwKLQotICAgIF93aWxsSGF2ZUNoaWxkcmVuOiBmdW5jdGlv
bihwcm9maWxlTm9kZSkKLSAgICB7Ci0gICAgICAgIHByb2ZpbGVOb2RlID0gcHJvZmlsZU5vZGUg
fHwgdGhpcy5wcm9maWxlTm9kZTsKLSAgICAgICAgLy8gSW4gYm90dG9tIHVwIG1vZGUsIG91ciBw
YXJlbnRzIGFyZSBvdXIgY2hpbGRyZW4gc2luY2Ugd2UgZGlzcGxheSBhbiBpbnZlcnRlZCB0cmVl
LgotICAgICAgICAvLyBIb3dldmVyLCB3ZSBkb24ndCB3YW50IHRvIHNob3cgdGhlIHZlcnkgdG9w
IHBhcmVudCBzaW5jZSBpdCBpcyByZWR1bmRhbnQuCi0gICAgICAgIHJldHVybiAhIShwcm9maWxl
Tm9kZS5wYXJlbnQgJiYgcHJvZmlsZU5vZGUucGFyZW50LnBhcmVudCk7Ci0gICAgfQotfQotCi1X
ZWJJbnNwZWN0b3IuQm90dG9tVXBQcm9maWxlRGF0YUdyaWROb2RlLnByb3RvdHlwZS5fX3Byb3Rv
X18gPSBXZWJJbnNwZWN0b3IuUHJvZmlsZURhdGFHcmlkTm9kZS5wcm90b3R5cGU7Ci0KLVdlYklu
c3BlY3Rvci5Cb3R0b21VcFByb2ZpbGVEYXRhR3JpZFRyZWUgPSBmdW5jdGlvbigvKlByb2ZpbGVW
aWV3Ki8gYVByb2ZpbGVWaWV3LCAvKlByb2ZpbGVOb2RlKi8gYVByb2ZpbGVOb2RlKQotewotICAg
IFdlYkluc3BlY3Rvci5Qcm9maWxlRGF0YUdyaWRUcmVlLmNhbGwodGhpcywgYVByb2ZpbGVWaWV3
LCBhUHJvZmlsZU5vZGUpOwotCi0gICAgLy8gSXRlcmF0ZSBlYWNoIG5vZGUgaW4gcHJlLW9yZGVy
LgotICAgIHZhciBwcm9maWxlTm9kZVVJRHMgPSAwOwotICAgIHZhciBwcm9maWxlTm9kZUdyb3Vw
cyA9IFtbXSwgW2FQcm9maWxlTm9kZV1dOwotICAgIHZhciB2aXNpdGVkUHJvZmlsZU5vZGVzRm9y
Q2FsbFVJRCA9IHt9OwotCi0gICAgdGhpcy5fcmVtYWluaW5nTm9kZUluZm9zID0gW107Ci0KLSAg
ICBmb3IgKHZhciBwcm9maWxlTm9kZUdyb3VwSW5kZXggPSAwOyBwcm9maWxlTm9kZUdyb3VwSW5k
ZXggPCBwcm9maWxlTm9kZUdyb3Vwcy5sZW5ndGg7ICsrcHJvZmlsZU5vZGVHcm91cEluZGV4KSB7
Ci0gICAgICAgIHZhciBwYXJlbnRQcm9maWxlTm9kZXMgPSBwcm9maWxlTm9kZUdyb3Vwc1twcm9m
aWxlTm9kZUdyb3VwSW5kZXhdOwotICAgICAgICB2YXIgcHJvZmlsZU5vZGVzID0gcHJvZmlsZU5v
ZGVHcm91cHNbKytwcm9maWxlTm9kZUdyb3VwSW5kZXhdOwotICAgICAgICB2YXIgY291bnQgPSBw
cm9maWxlTm9kZXMubGVuZ3RoOwotCi0gICAgICAgIGZvciAodmFyIGluZGV4ID0gMDsgaW5kZXgg
PCBjb3VudDsgKytpbmRleCkgewotICAgICAgICAgICAgdmFyIHByb2ZpbGVOb2RlID0gcHJvZmls
ZU5vZGVzW2luZGV4XTsKLQotICAgICAgICAgICAgaWYgKCFwcm9maWxlTm9kZS5VSUQpCi0gICAg
ICAgICAgICAgICAgcHJvZmlsZU5vZGUuVUlEID0gKytwcm9maWxlTm9kZVVJRHM7Ci0KLSAgICAg
ICAgICAgIGlmIChwcm9maWxlTm9kZS5oZWFkICYmIHByb2ZpbGVOb2RlICE9PSBwcm9maWxlTm9k
ZS5oZWFkKSB7Ci0gICAgICAgICAgICAgICAgLy8gVGhlIHRvdGFsIHRpbWUgb2YgdGhpcyBhbmNl
c3RvciBpcyBhY2NvdW50ZWQgZm9yIGlmIHdlJ3JlIGluIGFueSBmb3JtIG9mIHJlY3Vyc2l2ZSBj
eWNsZS4KLSAgICAgICAgICAgICAgICB2YXIgdmlzaXRlZE5vZGVzID0gdmlzaXRlZFByb2ZpbGVO
b2Rlc0ZvckNhbGxVSURbcHJvZmlsZU5vZGUuY2FsbFVJRF07Ci0gICAgICAgICAgICAgICAgdmFy
IHRvdGFsVGltZUFjY291bnRlZEZvciA9IGZhbHNlOwotCi0gICAgICAgICAgICAgICAgaWYgKCF2
aXNpdGVkTm9kZXMpIHsKLSAgICAgICAgICAgICAgICAgICAgdmlzaXRlZE5vZGVzID0ge307Ci0g
ICAgICAgICAgICAgICAgICAgIHZpc2l0ZWRQcm9maWxlTm9kZXNGb3JDYWxsVUlEW3Byb2ZpbGVO
b2RlLmNhbGxVSURdID0gdmlzaXRlZE5vZGVzOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICAgICAgICAgIC8vIFRoZSB0b3RhbCB0aW1lIGZvciB0aGlzIG5vZGUgaGFzIGFs
cmVhZHkgYmVlbiBhY2NvdW50ZWQgZm9yIGlmZiBvbmUgb2YgaXQncyBwYXJlbnRzIGhhcyBhbHJl
YWR5IGJlZW4gdmlzaXRlZC4KLSAgICAgICAgICAgICAgICAgICAgLy8gV2UgY2FuIGRvIHRoaXMg
Y2hlY2sgaW4gdGhpcyBzdHlsZSBiZWNhdXNlIHdlIGFyZSB0cmF2ZXJzaW5nIHRoZSB0cmVlIGlu
IHByZS1vcmRlci4KLSAgICAgICAgICAgICAgICAgICAgdmFyIHBhcmVudENvdW50ID0gcGFyZW50
UHJvZmlsZU5vZGVzLmxlbmd0aDsKLSAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgcGFyZW50
SW5kZXggPSAwOyBwYXJlbnRJbmRleCA8IHBhcmVudENvdW50OyArK3BhcmVudEluZGV4KSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBpZiAodmlzaXRlZE5vZGVzW3BhcmVudFByb2ZpbGVOb2Rl
c1twYXJlbnRJbmRleF0uVUlEXSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFs
VGltZUFjY291bnRlZEZvciA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICB2aXNpdGVkTm9kZXNbcHJvZmlsZU5v
ZGUuVUlEXSA9IHRydWU7Ci0KLSAgICAgICAgICAgICAgICB0aGlzLl9yZW1haW5pbmdOb2RlSW5m
b3MucHVzaCh7IGFuY2VzdG9yOnByb2ZpbGVOb2RlLCBmb2N1c05vZGU6cHJvZmlsZU5vZGUsIHRv
dGFsVGltZUFjY291bnRlZEZvcjp0b3RhbFRpbWVBY2NvdW50ZWRGb3IgfSk7Ci0gICAgICAgICAg
ICB9Ci0KLSAgICAgICAgICAgIHZhciBjaGlsZHJlbiA9IHByb2ZpbGVOb2RlLmNoaWxkcmVuOwot
ICAgICAgICAgICAgaWYgKGNoaWxkcmVuLmxlbmd0aCkgewotICAgICAgICAgICAgICAgIHByb2Zp
bGVOb2RlR3JvdXBzLnB1c2gocGFyZW50UHJvZmlsZU5vZGVzLmNvbmNhdChbcHJvZmlsZU5vZGVd
KSk7Ci0gICAgICAgICAgICAgICAgcHJvZmlsZU5vZGVHcm91cHMucHVzaChjaGlsZHJlbik7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBQb3B1bGF0ZSB0aGUgdG9w
IGxldmVsIG5vZGVzLgotICAgIFdlYkluc3BlY3Rvci5Cb3R0b21VcFByb2ZpbGVEYXRhR3JpZE5v
ZGUucHJvdG90eXBlLl9wb3B1bGF0ZS5jYWxsKHRoaXMpOwotCi0gICAgcmV0dXJuIHRoaXM7Ci19
Ci0KLVdlYkluc3BlY3Rvci5Cb3R0b21VcFByb2ZpbGVEYXRhR3JpZFRyZWUucHJvdG90eXBlID0g
ewotICAgIC8vIFdoZW4gZm9jdXNpbmcsIHdlIGtlZXAgdGhlIGVudGlyZSBjYWxsc3RhY2sgdXAg
dG8gdGhpcyBhbmNlc3Rvci4KLSAgICBmb2N1czogZnVuY3Rpb24oLypQcm9maWxlRGF0YUdyaWRO
b2RlKi8gcHJvZmlsZURhdGFHcmlkTm9kZSkKLSAgICB7Ci0gICAgICAgIGlmICghcHJvZmlsZURh
dGFHcmlkTm9kZSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICB0aGlzLl9zYXZlKCk7
Ci0KLSAgICAgICAgdmFyIGN1cnJlbnROb2RlID0gcHJvZmlsZURhdGFHcmlkTm9kZTsKLSAgICAg
ICAgdmFyIGZvY3VzTm9kZSA9IHByb2ZpbGVEYXRhR3JpZE5vZGU7Ci0KLSAgICAgICAgd2hpbGUg
KGN1cnJlbnROb2RlLnBhcmVudCAmJiAoY3VycmVudE5vZGUgaW5zdGFuY2VvZiBXZWJJbnNwZWN0
b3IuUHJvZmlsZURhdGFHcmlkTm9kZSkpIHsKLSAgICAgICAgICAgIGN1cnJlbnROb2RlLl90YWtl
UHJvcGVydGllc0Zyb21Qcm9maWxlRGF0YUdyaWROb2RlKHByb2ZpbGVEYXRhR3JpZE5vZGUpOwot
Ci0gICAgICAgICAgICBmb2N1c05vZGUgPSBjdXJyZW50Tm9kZTsKLSAgICAgICAgICAgIGN1cnJl
bnROb2RlID0gY3VycmVudE5vZGUucGFyZW50OwotCi0gICAgICAgICAgICBpZiAoY3VycmVudE5v
ZGUgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuUHJvZmlsZURhdGFHcmlkTm9kZSkKLSAgICAgICAg
ICAgICAgICBjdXJyZW50Tm9kZS5fa2VlcE9ubHlDaGlsZChmb2N1c05vZGUpOwotICAgICAgICB9
Ci0KLSAgICAgICAgdGhpcy5jaGlsZHJlbiA9IFtmb2N1c05vZGVdOwotICAgICAgICB0aGlzLnRv
dGFsVGltZSA9IHByb2ZpbGVEYXRhR3JpZE5vZGUudG90YWxUaW1lOwotICAgIH0sCi0KLSAgICBl
eGNsdWRlOiBmdW5jdGlvbigvKlByb2ZpbGVEYXRhR3JpZE5vZGUqLyBwcm9maWxlRGF0YUdyaWRO
b2RlKQotICAgIHsKLSAgICAgICAgaWYgKCFwcm9maWxlRGF0YUdyaWROb2RlKQotICAgICAgICAg
ICAgcmV0dXJuOwotCi0gICAgICAgIHRoaXMuX3NhdmUoKTsKLQotICAgICAgICB2YXIgZXhjbHVk
ZWRDYWxsVUlEID0gcHJvZmlsZURhdGFHcmlkTm9kZS5jYWxsVUlEOwotICAgICAgICB2YXIgZXhj
bHVkZWRUb3BMZXZlbENoaWxkID0gdGhpcy5jaGlsZHJlbkJ5Q2FsbFVJRFtleGNsdWRlZENhbGxV
SURdOwotCi0gICAgICAgIC8vIElmIHdlIGhhdmUgYSB0b3AgbGV2ZWwgbm9kZSB0aGF0IGlzIGV4
Y2x1ZGVkLCBnZXQgcmlkIG9mIGl0IGNvbXBsZXRlbHkgKG5vdCBrZWVwaW5nIGNoaWxkcmVuKSwK
LSAgICAgICAgLy8gc2luY2UgYm90dG9tIHVwIGRhdGEgcmVsaWVzIGVudGlyZWx5IG9uIHRoZSBy
b290IG5vZGUuCi0gICAgICAgIGlmIChleGNsdWRlZFRvcExldmVsQ2hpbGQpCi0gICAgICAgICAg
ICB0aGlzLmNoaWxkcmVuLnJlbW92ZShleGNsdWRlZFRvcExldmVsQ2hpbGQpOwotCi0gICAgICAg
IHZhciBjaGlsZHJlbiA9IHRoaXMuY2hpbGRyZW47Ci0gICAgICAgIHZhciBjb3VudCA9IGNoaWxk
cmVuLmxlbmd0aDsKLQotICAgICAgICBmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwgY291bnQ7
ICsraW5kZXgpCi0gICAgICAgICAgICBjaGlsZHJlbltpbmRleF0uX2V4Y2x1ZGUoZXhjbHVkZWRD
YWxsVUlEKTsKLQotICAgICAgICBpZiAodGhpcy5sYXN0Q29tcGFyYXRvcikKLSAgICAgICAgICAg
IHRoaXMuc29ydCh0aGlzLmxhc3RDb21wYXJhdG9yLCB0cnVlKTsKLSAgICB9LAotCi0gICAgX3No
YXJlZFBvcHVsYXRlOiBXZWJJbnNwZWN0b3IuQm90dG9tVXBQcm9maWxlRGF0YUdyaWROb2RlLnBy
b3RvdHlwZS5fc2hhcmVkUG9wdWxhdGUKLX0KLQotV2ViSW5zcGVjdG9yLkJvdHRvbVVwUHJvZmls
ZURhdGFHcmlkVHJlZS5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLlByb2ZpbGVE
YXRhR3JpZFRyZWUucHJvdG90eXBlOwotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9DYW52YXNEYXRhR3JpZE5vZGUuanMgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9DYW52YXNEYXRhR3JpZE5vZGUuanMKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGYwYmJhZGJjZDY0Nzk0YzE4MjBkZDlhZTc0MmE1MWI2ZWVkYjE3ZTku
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ2FudmFzRGF0YUdyaWROb2RlLmpzCisrKyAvZGV2
L251bGwKQEAgLTEsNjcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQot
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLVdlYkluc3BlY3Rvci5DYW52YXNEYXRhR3JpZE5vZGUgPSBmdW5jdGlvbihw
cm9maWxlVmlldywgZGF0YSkKLXsKLSAgICBXZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlLmNhbGwo
dGhpcywgZGF0YSwgZmFsc2UpOwotICAgIHRoaXMuX3Byb2ZpbGVWaWV3ID0gcHJvZmlsZVZpZXc7
Ci19Ci0KLVdlYkluc3BlY3Rvci5DYW52YXNEYXRhR3JpZE5vZGUucHJvdG90eXBlID0gewotCi0g
ICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5DYW52YXNEYXRhR3JpZE5vZGUsCi0KLSAgICBn
ZXQgZGF0YSgpCi0gICAgewotICAgICAgICB2YXIgZGF0YSA9IHt9OwotICAgICAgICByZXR1cm4g
ZGF0YTsKLSAgICB9LAotCi0gICAgZ2V0IHJhd0RhdGEoKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IHRoaXMuX2RhdGE7Ci0gICAgfSwKLQotICAgIGNyZWF0ZUNlbGw6IGZ1bmN0aW9uKGNvbHVtbklk
ZW50aWZpZXIpCi0gICAgewotICAgICAgICB2YXIgY2VsbCA9IFdlYkluc3BlY3Rvci5EYXRhR3Jp
ZE5vZGUucHJvdG90eXBlLmNyZWF0ZUNlbGwuY2FsbCh0aGlzLCBjb2x1bW5JZGVudGlmaWVyKTsK
LSAgICAgICAgY2VsbC5yZW1vdmVDaGlsZHJlbigpOwotCi0gICAgICAgIGlmICh0aGlzLnJhd0Rh
dGEudXJsKSB7Ci0gICAgICAgICAgICB2YXIgd3JhcHBlckRpdiA9IGNlbGwuY3JlYXRlQ2hpbGQo
ImRpdiIpOwotICAgICAgICAgICAgd3JhcHBlckRpdi5hcHBlbmRDaGlsZCh0aGlzLl9saW5raWZ5
TG9jYXRpb24odGhpcy5yYXdEYXRhLnVybCwgdGhpcy5yYXdEYXRhLmxpbmVOdW1iZXIsIHRoaXMu
cmF3RGF0YS5jb2x1bW5OdW1iZXIpKTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiBjZWxs
OwotICAgIH0sCi0KLSAgICBfbGlua2lmeUxvY2F0aW9uOiBmdW5jdGlvbih1cmwsIGxpbmVOdW1i
ZXIsIGNvbHVtbk51bWJlcikKLSAgICB7Ci0gICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IubGlu
a2lmeUxvY2F0aW9uKHVybCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyIHx8IDApOwotICAgIH0K
LX0KLQotV2ViSW5zcGVjdG9yLkNhbnZhc0RhdGFHcmlkTm9kZS5wcm90b3R5cGUuX19wcm90b19f
ID0gV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5wcm90b3R5cGU7Ci0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NhbnZhc09ic2VydmVyLmpzIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ2FudmFzT2JzZXJ2ZXIuanMKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJiZDU2YTc0MGY4MjliODA4NWE5N2YzZWI5ZDJkMTdi
Y2EzODQ0MDguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ2FudmFzT2JzZXJ2ZXIuanMKKysr
IC9kZXYvbnVsbApAQCAtMSw0NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotV2ViSW5zcGVjdG9yLkNh
bnZhc09ic2VydmVyID0gZnVuY3Rpb24oKQotewotICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2Fs
bCh0aGlzKTsKLX07Ci0KLVdlYkluc3BlY3Rvci5DYW52YXNPYnNlcnZlci5wcm90b3R5cGUgPSB7
Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5DYW52YXNPYnNlcnZlciwKLQotICAgIC8v
IEV2ZW50cyBkZWZpbmVkIGJ5IHRoZSAiQ2FudmFzIiBkb21haW4uCi0KLSAgICBjb250ZXh0Q3Jl
YXRlZDogZnVuY3Rpb24oZnJhbWVJZCkKLSAgICB7Ci0gICAgICAgIC8vIEZJWE1FOiBJbXBsZW1l
bnQgdGhpcy4KLSAgICB9LAotCi0gICAgdHJhY2VMb2dzUmVtb3ZlZDogZnVuY3Rpb24oZnJhbWVJ
ZCwgdHJhY2VMb2dJZCkKLSAgICB7Ci0gICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcy4K
LSAgICB9Ci19OwotCi1XZWJJbnNwZWN0b3IuQ2FudmFzT2JzZXJ2ZXIucHJvdG90eXBlLl9fcHJv
dG9fXyA9IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ2FudmFzUHJvZmlsZU9iamVjdC5qcyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NhbnZhc1Byb2ZpbGVPYmplY3QuanMK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU3ZmQ0MjRlNDQ2YjBiYzE5YTk0MjVmYTZh
M2JlN2EyZmQ3ODg2Y2MuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ2FudmFzUHJvZmlsZU9i
amVjdC5qcworKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1XZWJJ
bnNwZWN0b3IuQ2FudmFzUHJvZmlsZU9iamVjdCA9IGZ1bmN0aW9uKHRpdGxlLCBpZCwgcmVjb3Jk
aW5nLCBkYXRhKQotewotICAgIFdlYkluc3BlY3Rvci5Qcm9maWxlT2JqZWN0LmNhbGwodGhpcywg
V2ViSW5zcGVjdG9yLkNhbnZhc1Byb2ZpbGVUeXBlLlR5cGVJZCwgdGl0bGUsIGlkLCByZWNvcmRp
bmcpOwotCi0gICAgdGhpcy5fZGF0YSA9IGRhdGEgfHwgW107Ci19OwotCi1XZWJJbnNwZWN0b3Iu
Q2FudmFzUHJvZmlsZU9iamVjdC5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYklu
c3BlY3Rvci5DYW52YXNQcm9maWxlT2JqZWN0LAotCi0gICAgZ2V0IGRhdGEoKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIHRoaXMuX2RhdGE7Ci0gICAgfSwKLQotICAgIHNldCBkYXRhKGRhdGEpCi0g
ICAgewotICAgICAgICB0aGlzLl9kYXRhID0gZGF0YTsKLSAgICB9Ci19OwotCi1XZWJJbnNwZWN0
b3IuQ2FudmFzUHJvZmlsZU9iamVjdC5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9y
LlByb2ZpbGVPYmplY3QucHJvdG90eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvQ2FudmFzUHJvZmlsZVR5cGUuanMgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9DYW52YXNQcm9maWxlVHlwZS5qcwpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDk5OTgxZTBiOWRkODEzYzcwYzNmZGViODM3NzFmYjVjZjM3MDcyNC4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9DYW52YXNQcm9maWxlVHlwZS5qcworKysgL2Rldi9u
dWxsCkBAIC0xLDEwOCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0g
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotV2ViSW5zcGVjdG9yLkNhbnZhc1Byb2ZpbGVUeXBlID0gZnVuY3Rpb24oKQot
ewotICAgIFdlYkluc3BlY3Rvci5Qcm9maWxlVHlwZS5jYWxsKHRoaXMsIFdlYkluc3BlY3Rvci5D
YW52YXNQcm9maWxlVHlwZS5UeXBlSWQsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ29sbGVjdCBD
YW52YXMgUHJvZmlsZSIpKTsKLSAgICB0aGlzLl9yZWNvcmRpbmcgPSBmYWxzZTsKLSAgICB0aGlz
Ll9wcm9maWxlSWQgPSAxOwotICAgIFdlYkluc3BlY3Rvci5DYW52YXNQcm9maWxlVHlwZS5pbnN0
YW5jZSA9IHRoaXM7Ci19Ci0KLVdlYkluc3BlY3Rvci5DYW52YXNQcm9maWxlVHlwZS5UeXBlSWQg
PSAiQ0FOVkFTIjsKLQotV2ViSW5zcGVjdG9yLkNhbnZhc1Byb2ZpbGVUeXBlLnByb3RvdHlwZSA9
IHsKLQotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuQ2FudmFzUHJvZmlsZVR5cGUsCi0K
LSAgICBnZXQgYnV0dG9uVG9vbHRpcCgpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fcmVj
b3JkaW5nID8gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTdG9wIENhbnZhcyBwcm9maWxpbmcuIikg
OiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlN0YXJ0IENhbnZhcyBwcm9maWxpbmcuIik7Ci0gICAg
fSwKLQotICAgIGJ1dHRvbkNsaWNrZWQ6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIGlmICh0
aGlzLl9yZWNvcmRpbmcpCi0gICAgICAgICAgICB0aGlzLnN0b3BSZWNvcmRpbmdQcm9maWxlKCk7
Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRoaXMuc3RhcnRSZWNvcmRpbmdQcm9maWxlKCk7
Ci0gICAgfSwKLQotICAgIGdldCB0cmVlSXRlbVRpdGxlKCkKLSAgICB7Ci0gICAgICAgIHJldHVy
biBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNBTlZBUyBQUk9GSUxFUyIpOwotICAgIH0sCi0KLSAg
ICBnZXQgZGVzY3JpcHRpb24oKQotICAgIHsKLSAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5V
SVN0cmluZygiQ2FudmFzIHByb2ZpbGVzIGFsbG93IHlvdSB0byBleGFtaW5lIGRyYXdpbmcgb3Bl
cmF0aW9ucyBvbiBjYW52YXMgZWxlbWVudHMuIik7Ci0gICAgfSwKLQotICAgIHJlc2V0OiBmdW5j
dGlvbigpCi0gICAgewotICAgICAgICB0aGlzLl9wcm9maWxlSWQgPSAxOwotICAgIH0sCi0KLSAg
ICBuZXh0UHJvZmlsZUlkOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5f
cHJvZmlsZUlkKys7Ci0gICAgfSwKLQotICAgIGlzUmVjb3JkaW5nUHJvZmlsZTogZnVuY3Rpb24o
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX3JlY29yZGluZzsKLSAgICB9LAotCi0gICAg
c2V0UmVjb3JkaW5nUHJvZmlsZTogZnVuY3Rpb24oaXNQcm9maWxpbmcpCi0gICAgewotICAgICAg
ICB0aGlzLl9yZWNvcmRpbmcgPSBpc1Byb2ZpbGluZzsKLSAgICB9LAotCi0gICAgc3RhcnRSZWNv
cmRpbmdQcm9maWxlOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB0aGlzLl9yZWNvcmRpbmcg
PSB0cnVlOwotICAgICAgICAvLyBGSVhNRTogVGhpcyBpcyB3aGVyZSB3ZSB3b3VsZCBhc2sgdGhl
IENhbnZhcyBBZ2VudCB0byBwcm9maWxlLgotICAgIH0sCi0KLSAgICBzdG9wUmVjb3JkaW5nUHJv
ZmlsZTogZnVuY3Rpb24oY2FsbGJhY2spCi0gICAgewotICAgICAgICB0aGlzLl9yZWNvcmRpbmcg
PSBmYWxzZTsKLSAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMgd2hlcmUgd2Ugd291bGQgYXNrIHRo
ZSBDYW52YXMgQWdlbnQgdG8gc3RvcCBwcm9maWxpbmcuCi0gICAgICAgIC8vIEZvciBub3cgcGFz
cyBpbiBhbiBlbXB0eSBhcnJheSBvZiBjYW52YXMgY2FsbHMuCi0gICAgICAgIGNhbGxiYWNrKG51
bGwsIHtkYXRhOiBbXX0pOwotICAgIH0sCi0KLSAgICBjcmVhdGVTaWRlYmFyVHJlZUVsZW1lbnRG
b3JQcm9maWxlOiBmdW5jdGlvbihwcm9maWxlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG5ldyBX
ZWJJbnNwZWN0b3IuUHJvZmlsZVNpZGViYXJUcmVlRWxlbWVudChwcm9maWxlLCBwcm9maWxlLnRp
dGxlLCAicHJvZmlsZS1zaWRlYmFyLXRyZWUtaXRlbSIpOwotICAgIH0sCi0KLSAgICBjcmVhdGVW
aWV3OiBmdW5jdGlvbihwcm9maWxlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNw
ZWN0b3IuQ2FudmFzUHJvZmlsZVZpZXcocHJvZmlsZSk7Ci0gICAgfQotfQotCi1XZWJJbnNwZWN0
b3IuQ2FudmFzUHJvZmlsZVR5cGUucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5Q
cm9maWxlVHlwZS5wcm90b3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9DYW52YXNQcm9maWxlVmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL0NhbnZhc1Byb2ZpbGVWaWV3LmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBkYTM4NWMxYTQ3N2YxYTdlOGQxNWE4M2ZmNDgyMjVmMjM5N2U2MzE5Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NhbnZhc1Byb2ZpbGVWaWV3LmpzCisrKyAvZGV2L251bGwK
QEAgLTEsMTAwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
Ci0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi1XZWJJbnNwZWN0b3IuQ2FudmFzUHJvZmlsZVZpZXcgPSBmdW5jdGlvbihwcm9maWxl
KQotewotICAgIGNvbnNvbGUuYXNzZXJ0KHByb2ZpbGUgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3Iu
Q2FudmFzUHJvZmlsZU9iamVjdCk7Ci0KLSAgICBXZWJJbnNwZWN0b3IuUHJvZmlsZVZpZXcuY2Fs
bCh0aGlzLCBwcm9maWxlKTsKLX0KLQotV2ViSW5zcGVjdG9yLkNhbnZhc1Byb2ZpbGVWaWV3LnBy
b3RvdHlwZSA9IHsKLQotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuQ2FudmFzUHJvZmls
ZVZpZXcsCi0KLSAgICB1cGRhdGVMYXlvdXQ6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIGlm
ICh0aGlzLmRhdGFHcmlkKQotICAgICAgICAgICAgdGhpcy5kYXRhR3JpZC51cGRhdGVMYXlvdXQo
KTsKLSAgICB9LAotCi0gICAgZ2V0IHJlY29yZGluZ1RpdGxlKCkKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlY29yZGluZyBDYW52YXMgUHJvZmlsZeKApiIp
OwotICAgIH0sCi0KLSAgICBkaXNwbGF5UHJvZmlsZTogZnVuY3Rpb24oKQotICAgIHsKLSAgICAg
ICAgdmFyIGNvbHVtbnMgPSB7Im51bWJlciI6IHt0aXRsZTogIiMiLCB3aWR0aDogIjUlIiwgc29y
dGFibGU6IGZhbHNlfSwKLSAgICAgICAgICAgICAgICAgICAgICAgInNvdXJjZSI6IHt0aXRsZTog
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDYWxsIiksIHdpZHRoOiAiNzUlIiwgc29ydGFibGU6IGZh
bHNlLCBkaXNjbG9zdXJlOiB0cnVlfSwKLSAgICAgICAgICAgICAgICAgICAgICAgImxvY2F0aW9u
Ijoge3RpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkxvY2F0aW9uIiksIHdpZHRoOiAiMjAl
Iiwgc29ydGFibGU6IGZhbHNlfX07Ci0KLSAgICAgICAgdGhpcy5kYXRhR3JpZCA9IG5ldyBXZWJJ
bnNwZWN0b3IuRGF0YUdyaWQoY29sdW1ucyk7Ci0gICAgICAgIHRoaXMuZGF0YUdyaWQuZWxlbWVu
dC5jbGFzc0xpc3QuYWRkKCJjYW52YXMtcHJvZmlsZS12aWV3Iik7Ci0KLSAgICAgICAgdGhpcy5l
bGVtZW50LmFwcGVuZENoaWxkKHRoaXMuZGF0YUdyaWQuZWxlbWVudCk7Ci0gICAgICAgIHRoaXMu
ZGF0YUdyaWQudXBkYXRlTGF5b3V0KCk7Ci0KLSAgICAgICAgdGhpcy5fY3JlYXRlUHJvZmlsZU5v
ZGVzKCk7Ci0gICAgfSwKLQotICAgIF9jcmVhdGVQcm9maWxlTm9kZXM6IGZ1bmN0aW9uKCkKLSAg
ICB7Ci0gICAgICAgIHZhciBkYXRhID0gdGhpcy5wcm9maWxlLmRhdGE7Ci0gICAgICAgIGlmICgh
ZGF0YSkgewotICAgICAgICAgICAgLy8gVGhlIHByb2ZpbGVyIG1heSBoYXZlIGJlZW4gdGVybWlu
YXRlZCB3aXRoIHRoZSAiQ2xlYXIgYWxsIHByb2ZpbGVzLiIgYnV0dG9uLgotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgdGhpcy5wcm9maWxlLmNoaWxkcmVuID0gW107
Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7ICsraSkgewotICAgICAg
ICAgICAgdmFyIG5vZGUgPSBuZXcgV2ViSW5zcGVjdG9yLkNhbnZhc0RhdGFHcmlkTm9kZSh0aGlz
LCBkYXRhW2ldKTsKLSAgICAgICAgICAgIHRoaXMucHJvZmlsZS5jaGlsZHJlbi5wdXNoKG5vZGUp
OwotICAgICAgICB9Ci0gICAgfSwKLQotICAgIHJlYnVpbGRHcmlkSXRlbXM6IGZ1bmN0aW9uKCkK
LSAgICB7Ci0gICAgICAgIHRoaXMuZGF0YUdyaWQucmVtb3ZlQ2hpbGRyZW4oKTsKLQotICAgICAg
ICB2YXIgY2hpbGRyZW4gPSB0aGlzLnByb2ZpbGUuY2hpbGRyZW47Ci0gICAgICAgIHZhciBjb3Vu
dCA9IGNoaWxkcmVuLmxlbmd0aDsKLQotICAgICAgICBmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4
IDwgY291bnQ7ICsraW5kZXgpCi0gICAgICAgICAgICB0aGlzLmRhdGFHcmlkLmFwcGVuZENoaWxk
KGNoaWxkcmVuW2luZGV4XSk7Ci0gICAgfSwKLQotICAgIHJlZnJlc2hEYXRhOiBmdW5jdGlvbigp
Ci0gICAgewotICAgICAgICB2YXIgY2hpbGQgPSB0aGlzLmRhdGFHcmlkLmNoaWxkcmVuWzBdOwot
ICAgICAgICB3aGlsZSAoY2hpbGQpIHsKLSAgICAgICAgICAgIGNoaWxkLnJlZnJlc2goKTsKLSAg
ICAgICAgICAgIGNoaWxkID0gY2hpbGQudHJhdmVyc2VOZXh0Tm9kZShmYWxzZSwgbnVsbCwgdHJ1
ZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLX0KLQotV2ViSW5zcGVjdG9yLkNhbnZhc1Byb2ZpbGVW
aWV3LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuUHJvZmlsZVZpZXcucHJvdG90
eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29u
c29sZU9ic2VydmVyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29u
c29sZU9ic2VydmVyLmpzCmluZGV4IDQwN2QyZTY4ZDExMTkwODlkODBjNTYzODAwZGFjNTIxNzY0
ZDQ2ZjMuLjRhZWUxZmRjM2QyOTk3OGY2NzI1MDcwNTQwMWRkOGM1ZWE2YzhkNmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnNvbGVPYnNlcnZlci5q
cworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db25zb2xlT2JzZXJ2
ZXIuanMKQEAgLTQwLDkgKzQwLDkgQEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVPYnNlcnZlci5wcm90
b3R5cGUgPSB7CiAKICAgICAgICAgaWYgKG1lc3NhZ2UudXJsID09PSAiW25hdGl2ZSBjb2RlXSIp
IHsKICAgICAgICAgICAgIGlmIChtZXNzYWdlLnR5cGUgPT09ICJwcm9maWxlIikKLSAgICAgICAg
ICAgICAgICBXZWJJbnNwZWN0b3IucHJvZmlsZU1hbmFnZXIucHJvZmlsZVdhc1N0YXJ0ZWRGcm9t
Q29uc29sZShtZXNzYWdlLnRleHQpOworICAgICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5sZWdh
Y3lQcm9maWxlTWFuYWdlci5wcm9maWxlV2FzU3RhcnRlZEZyb21Db25zb2xlKG1lc3NhZ2UudGV4
dCk7CiAgICAgICAgICAgICBlbHNlIGlmIChtZXNzYWdlLnR5cGUgPT09ICJwcm9maWxlRW5kIikK
LSAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3IucHJvZmlsZU1hbmFnZXIucHJvZmlsZVdhc0Vu
ZGVkRnJvbUNvbnNvbGUoKTsKKyAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3IubGVnYWN5UHJv
ZmlsZU1hbmFnZXIucHJvZmlsZVdhc0VuZGVkRnJvbUNvbnNvbGUoKTsKICAgICAgICAgfQogCiAg
ICAgICAgIGlmIChtZXNzYWdlLnNvdXJjZSA9PT0gImNvbnNvbGUtYXBpIiAmJiBtZXNzYWdlLnR5
cGUgPT09ICJjbGVhciIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Db250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL0NvbnRlbnRWaWV3LmpzCmluZGV4IDI5YWIyMTRiNzlkYjhkY2UwMzE2ZjdkZTAxZDJmNGNi
OGZmMjVkYTAuLmY3Y2EzYjdjMTg3ZGM2ZjRiZjdkNzllNmQwOGYzYTkwNTU1ZTY2ODQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRlbnRWaWV3Lmpz
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRlbnRWaWV3Lmpz
CkBAIC02MywxMSArNjMsOCBAQCBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcgPSBmdW5jdGlvbihy
ZXByZXNlbnRlZE9iamVjdCkKICAgICAgICAgaWYgKHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNl
b2YgV2ViSW5zcGVjdG9yLkxvZ09iamVjdCkKICAgICAgICAgICAgIHJldHVybiBuZXcgV2ViSW5z
cGVjdG9yLkxvZ0NvbnRlbnRWaWV3KHJlcHJlc2VudGVkT2JqZWN0KTsKIAotICAgICAgICBpZiAo
cmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuSmF2YVNjcmlwdFByb2Zp
bGVPYmplY3QpCi0gICAgICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5KYXZhU2NyaXB0
UHJvZmlsZVZpZXcocmVwcmVzZW50ZWRPYmplY3QpOwotCi0gICAgICAgIGlmIChyZXByZXNlbnRl
ZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5DYW52YXNQcm9maWxlT2JqZWN0KQotICAg
ICAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuQ2FudmFzUHJvZmlsZVZpZXcocmVwcmVz
ZW50ZWRPYmplY3QpOworICAgICAgICBpZiAocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBX
ZWJJbnNwZWN0b3IuTGVnYWN5SmF2YVNjcmlwdFByb2ZpbGVPYmplY3QpCisgICAgICAgICAgICBy
ZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5MZWdhY3lKYXZhU2NyaXB0UHJvZmlsZVZpZXcocmVwcmVz
ZW50ZWRPYmplY3QpOwogCiAgICAgICAgIGlmIChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9m
IFdlYkluc3BlY3Rvci5Db250ZW50RmxvdykKICAgICAgICAgICAgIHJldHVybiBuZXcgV2ViSW5z
cGVjdG9yLkNvbnRlbnRGbG93RE9NVHJlZUNvbnRlbnRWaWV3KHJlcHJlc2VudGVkT2JqZWN0KTsK
QEAgLTEyMCw5ICsxMTcsNyBAQCBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcuaXNWaWV3YWJsZSA9
IGZ1bmN0aW9uKHJlcHJlc2VudGVkT2JqZWN0KQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBp
ZiAocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuTG9nT2JqZWN0KQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2Vv
ZiBXZWJJbnNwZWN0b3IuSmF2YVNjcmlwdFByb2ZpbGVPYmplY3QpCi0gICAgICAgIHJldHVybiB0
cnVlOwotICAgIGlmIChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5D
YW52YXNQcm9maWxlT2JqZWN0KQorICAgIGlmIChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9m
IFdlYkluc3BlY3Rvci5MZWdhY3lKYXZhU2NyaXB0UHJvZmlsZU9iamVjdCkKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgaWYgKHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVj
dG9yLkNvbnRlbnRGbG93KQogICAgICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0luc3BlY3RvckZyb250ZW5kQVBJLmpzIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSW5zcGVjdG9yRnJvbnRlbmRBUEku
anMKaW5kZXggN2Q0Yzk2N2E2NTdmMWFlNzJhODNhMmQ0NzBiMTY2Y2RhOWVmMGFmZi4uNjc5NjVi
MjMyZDEzNjZlZjFkM2Y5ZWU4YjI5MzVkOTcwYmJlMDgzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSW5zcGVjdG9yRnJvbnRlbmRBUEkuanMKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSW5zcGVjdG9yRnJvbnRlbmRBUEku
anMKQEAgLTY2LDE4ICs2NiwxOCBAQCBJbnNwZWN0b3JGcm9udGVuZEFQSSA9IHsKIAogICAgIGlz
UHJvZmlsaW5nSmF2YVNjcmlwdDogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgcmV0dXJuIFdl
Ykluc3BlY3Rvci5wcm9maWxlTWFuYWdlci5pc1Byb2ZpbGluZ0phdmFTY3JpcHQoKTsKKyAgICAg
ICAgcmV0dXJuIFdlYkluc3BlY3Rvci5sZWdhY3lQcm9maWxlTWFuYWdlci5pc1Byb2ZpbGluZ0ph
dmFTY3JpcHQoKTsKICAgICB9LAogCiAgICAgc3RhcnRQcm9maWxpbmdKYXZhU2NyaXB0OiBmdW5j
dGlvbigpCiAgICAgewotICAgICAgICBXZWJJbnNwZWN0b3IucHJvZmlsZU1hbmFnZXIuc3RhcnRQ
cm9maWxpbmdKYXZhU2NyaXB0KCk7CisgICAgICAgIFdlYkluc3BlY3Rvci5sZWdhY3lQcm9maWxl
TWFuYWdlci5zdGFydFByb2ZpbGluZ0phdmFTY3JpcHQoKTsKICAgICB9LAogCiAgICAgc3RvcFBy
b2ZpbGluZ0phdmFTY3JpcHQ6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rv
ci50aW1lbGluZVNpZGViYXJQYW5lbC5zaG93KCk7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5wcm9m
aWxlTWFuYWdlci5zdG9wUHJvZmlsaW5nSmF2YVNjcmlwdCgpOworICAgICAgICBXZWJJbnNwZWN0
b3IubGVnYWN5UHJvZmlsZU1hbmFnZXIuc3RvcFByb2ZpbGluZ0phdmFTY3JpcHQoKTsKICAgICB9
LAogCiAgICAgc2V0RG9ja1NpZGU6IGZ1bmN0aW9uKHNpZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9KYXZhU2NyaXB0UHJvZmlsZU9iamVjdC5qcyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0phdmFTY3JpcHRQcm9maWxlT2Jq
ZWN0LmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NTc1NWJjNjA0YzhjNTA2N2Q0
MzE5MGEyOWE2M2FiNGIzODEyOTJiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0phdmFTY3Jp
cHRQcm9maWxlT2JqZWN0LmpzCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLVdlYkluc3BlY3Rvci5KYXZhU2NyaXB0UHJvZmlsZU9iamVjdCA9IGZ1bmN0aW9uKHRp
dGxlLCBpZCwgcmVjb3JkaW5nKQotewotICAgIFdlYkluc3BlY3Rvci5Qcm9maWxlT2JqZWN0LmNh
bGwodGhpcywgV2ViSW5zcGVjdG9yLkphdmFTY3JpcHRQcm9maWxlVHlwZS5UeXBlSWQsIHRpdGxl
LCBpZCwgcmVjb3JkaW5nKTsKLX07Ci0KLVdlYkluc3BlY3Rvci5KYXZhU2NyaXB0UHJvZmlsZU9i
amVjdC5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5KYXZhU2Ny
aXB0UHJvZmlsZU9iamVjdAotfTsKLQotV2ViSW5zcGVjdG9yLkphdmFTY3JpcHRQcm9maWxlT2Jq
ZWN0LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuUHJvZmlsZU9iamVjdC5wcm90
b3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9K
YXZhU2NyaXB0UHJvZmlsZVR5cGUuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9KYXZhU2NyaXB0UHJvZmlsZVR5cGUuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDEzYzY4YjYxYmIwZmEwNTBjMTJhNjQzMTJlN2Q0Y2ExZGI5MzY2YjUuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvSmF2YVNjcmlwdFByb2ZpbGVUeXBlLmpzCisrKyAvZGV2L251bGwKQEAg
LTEsOTUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAxMyBBcHBsZSBJbmMu
IEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLVdlYkluc3BlY3Rvci5KYXZhU2NyaXB0UHJvZmlsZVR5cGUgPSBmdW5jdGlvbigp
Ci17Ci0gICAgV2ViSW5zcGVjdG9yLlByb2ZpbGVUeXBlLmNhbGwodGhpcywgV2ViSW5zcGVjdG9y
LkphdmFTY3JpcHRQcm9maWxlVHlwZS5UeXBlSWQsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ29s
bGVjdCBKYXZhU2NyaXB0IFByb2ZpbGUiKSk7Ci0gICAgdGhpcy5fcmVjb3JkaW5nID0gZmFsc2U7
Ci0gICAgV2ViSW5zcGVjdG9yLkphdmFTY3JpcHRQcm9maWxlVHlwZS5pbnN0YW5jZSA9IHRoaXM7
Ci19Ci0KLVdlYkluc3BlY3Rvci5KYXZhU2NyaXB0UHJvZmlsZVR5cGUuVHlwZUlkID0gIkNQVSI7
Ci0KLVdlYkluc3BlY3Rvci5KYXZhU2NyaXB0UHJvZmlsZVR5cGUucHJvdG90eXBlID0gewotICAg
IGdldCBidXR0b25Ub29sdGlwKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9yZWNvcmRp
bmcgPyBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlN0b3AgSmF2YVNjcmlwdCBwcm9maWxpbmcuIikg
OiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlN0YXJ0IEphdmFTY3JpcHQgcHJvZmlsaW5nLiIpOwot
ICAgIH0sCi0KLSAgICBidXR0b25DbGlja2VkOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICBp
ZiAodGhpcy5fcmVjb3JkaW5nKSB7Ci0gICAgICAgICAgICB0aGlzLnN0b3BSZWNvcmRpbmdQcm9m
aWxlKCk7Ci0gICAgICAgICAgICBXZWJJbnNwZWN0b3IubmV0d29ya01hbmFnZXIuZW5hYmxlUmVz
b3VyY2VUcmFja2luZygpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgV2ViSW5zcGVj
dG9yLm5ldHdvcmtNYW5hZ2VyLmRpc2FibGVSZXNvdXJjZVRyYWNraW5nKCk7Ci0gICAgICAgICAg
ICB0aGlzLnN0YXJ0UmVjb3JkaW5nUHJvZmlsZSgpOwotICAgICAgICB9Ci0gICAgfSwKLQotICAg
IGdldCB0cmVlSXRlbVRpdGxlKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIkpBVkFTQ1JJUFQgUFJPRklMRVMiKTsKLSAgICB9LAotCi0gICAgZ2V0IGRlc2Ny
aXB0aW9uKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkph
dmFTY3JpcHQgcHJvZmlsZXMgc2hvdyB3aGVyZSB0aGUgZXhlY3V0aW9uIHRpbWUgaXMgc3BlbnQg
aW4geW91ciBwYWdlJ3MgSmF2YVNjcmlwdCBmdW5jdGlvbnMuIik7Ci0gICAgfSwKLQotICAgIGlz
UmVjb3JkaW5nUHJvZmlsZTogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMu
X3JlY29yZGluZzsKLSAgICB9LAotCi0gICAgc3RhcnRSZWNvcmRpbmdQcm9maWxlOiBmdW5jdGlv
bigpCi0gICAgewotICAgICAgICB0aGlzLl9yZWNvcmRpbmcgPSB0cnVlOwotICAgICAgICBQcm9m
aWxlckFnZW50LnN0YXJ0KCk7Ci0gICAgfSwKLQotICAgIHN0b3BSZWNvcmRpbmdQcm9maWxlOiBm
dW5jdGlvbigpCi0gICAgewotICAgICAgICB0aGlzLl9yZWNvcmRpbmcgPSBmYWxzZTsKLSAgICAg
ICAgUHJvZmlsZXJBZ2VudC5zdG9wKCk7Ci0gICAgfSwKLQotICAgIHNldFJlY29yZGluZ1Byb2Zp
bGU6IGZ1bmN0aW9uKGlzUHJvZmlsaW5nKQotICAgIHsKLSAgICAgICAgdGhpcy5fcmVjb3JkaW5n
ID0gaXNQcm9maWxpbmc7Ci0gICAgfSwKLQotICAgIGNyZWF0ZVNpZGViYXJUcmVlRWxlbWVudEZv
clByb2ZpbGU6IGZ1bmN0aW9uKHByb2ZpbGUpCi0gICAgewotICAgICAgICByZXR1cm4gbmV3IFdl
Ykluc3BlY3Rvci5Qcm9maWxlU2lkZWJhclRyZWVFbGVtZW50KHByb2ZpbGUsIFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiUHJvZmlsZSAlZCIpLCAicHJvZmlsZS1zaWRlYmFyLXRyZWUtaXRlbSIpOwot
ICAgIH0sCi0KLSAgICBjcmVhdGVWaWV3OiBmdW5jdGlvbihwcm9maWxlKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuSmF2YVNjcmlwdFByb2ZpbGVWaWV3KHByb2ZpbGUp
OwotICAgIH0KLX0KLQotV2ViSW5zcGVjdG9yLkphdmFTY3JpcHRQcm9maWxlVHlwZS5wcm90b3R5
cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLlByb2ZpbGVUeXBlLnByb3RvdHlwZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0phdmFTY3JpcHRQcm9m
aWxlVmlldy5jc3MgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9KYXZhU2Ny
aXB0UHJvZmlsZVZpZXcuY3NzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NDg4OWM1
NTYzMWMyOGY0MzkyZWFiNDFhZmVhN2JjN2JjOWRkMzgwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL0phdmFTY3JpcHRQcm9maWxlVmlldy5jc3MKKysrIC9kZXYvbnVsbApAQCAtMSw3NiArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotLmNvbnRlbnQtdmlldy5wcm9maWxlLXZpZXcgPiAuZGF0YS1ncmlk
IHsKLSAgICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gICAgdG9wOiAwOwotICAgIGxlZnQ6IDA7Ci0g
ICAgcmlnaHQ6IDA7Ci0gICAgYm90dG9tOiAwOwotICAgIG91dGxpbmU6IG5vbmU7Ci0gICAgYm9y
ZGVyOiBub25lOwotfQotCi0ucHJvZmlsZS12aWV3IC5kYXRhLWdyaWQgdGguYXZlcmFnZS1jb2x1
bW4gewotICAgIHRleHQtYWxpZ246IGNlbnRlcjsKLX0KLQotLnByb2ZpbGUtdmlldyAuZGF0YS1n
cmlkIHRkLmF2ZXJhZ2UtY29sdW1uIHsKLSAgICB0ZXh0LWFsaWduOiByaWdodDsKLX0KLQotLnBy
b2ZpbGUtdmlldyAuZGF0YS1ncmlkIHRoLnNlbGYtY29sdW1uIHsKLSAgICB0ZXh0LWFsaWduOiBj
ZW50ZXI7Ci19Ci0KLS5wcm9maWxlLXZpZXcgLmRhdGEtZ3JpZCB0ZC5zZWxmLWNvbHVtbiB7Ci0g
ICAgdGV4dC1hbGlnbjogcmlnaHQ7Ci19Ci0KLS5wcm9maWxlLXZpZXcgLmRhdGEtZ3JpZCB0aC50
b3RhbC1jb2x1bW4gewotICAgIHRleHQtYWxpZ246IGNlbnRlcjsKLX0KLQotLnByb2ZpbGUtdmll
dyAuZGF0YS1ncmlkIHRkLnRvdGFsLWNvbHVtbiB7Ci0gICAgdGV4dC1hbGlnbjogcmlnaHQ7Ci19
Ci0KLS5wcm9maWxlLXZpZXcgLmRhdGEtZ3JpZCAuY2FsbHMtY29sdW1uIHsKLSAgICB0ZXh0LWFs
aWduOiBjZW50ZXI7Ci19Ci0KLS5wcm9maWxlLW5vZGUtZmlsZSB7Ci0gICAgZmxvYXQ6IHJpZ2h0
OwotICAgIGNvbG9yOiBncmF5OwotICAgIG1hcmdpbi10b3A6IC0xcHg7Ci19Ci0KLS5kYXRhLWdy
aWQgdHIuc2VsZWN0ZWQgLnByb2ZpbGUtbm9kZS1maWxlIHsKLSAgICBjb2xvcjogcmdiKDMzJSwg
MzMlLCAzMyUpOwotfQotCi0uZGF0YS1ncmlkOmZvY3VzIHRyLnNlbGVjdGVkIC5wcm9maWxlLW5v
ZGUtZmlsZSB7Ci0gICAgY29sb3I6IHdoaXRlOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSmF2YVNjcmlwdFByb2ZpbGVWaWV3LmpzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSmF2YVNjcmlwdFByb2ZpbGVWaWV3LmpzCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0OTQ1YjBiYTU3OGY3MzRhOTkzODY3NmM5ZjEz
MzM2MTNjMzM3YzIyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0phdmFTY3JpcHRQcm9maWxl
Vmlldy5qcworKysgL2Rldi9udWxsCkBAIC0xLDQ2OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDA4LCAyMDEzIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
LSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotV2ViSW5zcGVjdG9yLkphdmFTY3Jp
cHRQcm9maWxlVmlldyA9IGZ1bmN0aW9uKHByb2ZpbGUpCi17Ci0gICAgY29uc29sZS5hc3NlcnQo
cHJvZmlsZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5KYXZhU2NyaXB0UHJvZmlsZU9iamVjdCk7
Ci0KLSAgICBXZWJJbnNwZWN0b3IuUHJvZmlsZVZpZXcuY2FsbCh0aGlzLCBwcm9maWxlLCAiamF2
YXNjcmlwdC1wcm9maWxlci1zaG93LXRpbWUtYXMtcGVyY2VudCIpOwotCi0gICAgdGhpcy5fc2hv
d1RyZWVCb3R0b21VcFNldHRpbmcgPSBuZXcgV2ViSW5zcGVjdG9yLlNldHRpbmcoImphdmFzY3Jp
cHQtcHJvZmlsZXItc2hvdy10cmVlLWJvdHRvbS11cCIsIHRydWUpOwotCi0gICAgdGhpcy5fc2hv
d1RyZWVCb3R0b21VcE5hdmlnYXRpb25JdGVtID0gbmV3IFdlYkluc3BlY3Rvci5BY3RpdmF0ZUJ1
dHRvbk5hdmlnYXRpb25JdGVtKCJzaG93LXRyZWUtYm90dG9tLXVwLW5hdmlnYXRpb24taXRlbSIs
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiSW52ZXJ0IGNhbGwgdHJlZSIpLCBXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIk5vcm1hbCBjYWxsIHRyZWUiKSwgIkltYWdlcy9Cb3R0b21VcFRyZWUuc3ZnIiwg
MTYsIDE2KTsKLSAgICB0aGlzLl9zaG93VHJlZUJvdHRvbVVwTmF2aWdhdGlvbkl0ZW0uYWRkRXZl
bnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlvbkl0ZW0uRXZlbnQuQ2xpY2tl
ZCwgdGhpcy5fdG9nZ2xlQm90dG9tVXBWaWV3LCB0aGlzKTsKLSAgICB0aGlzLl9zaG93VHJlZUJv
dHRvbVVwTmF2aWdhdGlvbkl0ZW0uYWN0aXZhdGVkID0gdGhpcy5fc2hvd1RyZWVCb3R0b21VcFNl
dHRpbmcudmFsdWU7Ci0KLSAgICB0aGlzLl92aWV3VHlwZSA9IG5ldyBXZWJJbnNwZWN0b3IuU2V0
dGluZygiamF2YXNjcmlwdC1wcm9maWxlci12aWV3IiwgV2ViSW5zcGVjdG9yLkphdmFTY3JpcHRQ
cm9maWxlVmlldy5fVHlwZUhlYXZ5KTsKLX0KLQotV2ViSW5zcGVjdG9yLkphdmFTY3JpcHRQcm9m
aWxlVmlldy5fVHlwZVRyZWUgPSAiVHJlZSI7Ci1XZWJJbnNwZWN0b3IuSmF2YVNjcmlwdFByb2Zp
bGVWaWV3Ll9UeXBlSGVhdnkgPSAiSGVhdnkiOwotCi1XZWJJbnNwZWN0b3IuSmF2YVNjcmlwdFBy
b2ZpbGVWaWV3LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkph
dmFTY3JpcHRQcm9maWxlVmlldywKLQotICAgIHVwZGF0ZUxheW91dDogZnVuY3Rpb24oKQotICAg
IHsKLSAgICAgICAgaWYgKHRoaXMuZGF0YUdyaWQpCi0gICAgICAgICAgICB0aGlzLmRhdGFHcmlk
LnVwZGF0ZUxheW91dCgpOwotICAgIH0sCi0KLSAgICBnZXQgcmVjb3JkaW5nVGl0bGUoKQotICAg
IHsKLSAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmVjb3JkaW5nIEphdmFT
Y3JpcHQgUHJvZmlsZVx1MjAyNiIpOwotICAgIH0sCi0KLSAgICBkaXNwbGF5UHJvZmlsZTogZnVu
Y3Rpb24oKQotICAgIHsKLSAgICAgICAgdmFyIGNvbHVtbnMgPSB7ICJzZWxmIjogeyB0aXRsZTog
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTZWxmIiksIHdpZHRoOiAiNzJweCIsIHNvcnQ6ICJkZXNj
ZW5kaW5nIiwgc29ydGFibGU6IHRydWUgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICJ0b3Rh
bCI6IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiVG90YWwiKSwgd2lkdGg6ICI3MnB4
Iiwgc29ydGFibGU6IHRydWUgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICJhdmVyYWdlIjog
eyB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJBdmVyYWdlIiksIHdpZHRoOiAiNzJweCIs
IHNvcnRhYmxlOiB0cnVlIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICAiY2FsbHMiOiB7IHRp
dGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNhbGxzIiksIHdpZHRoOiAiNTRweCIsIHNvcnRh
YmxlOiB0cnVlIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICAiZnVuY3Rpb24iOiB7IHRpdGxl
OiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkZ1bmN0aW9uIiksIGRpc2Nsb3N1cmU6IHRydWUsIHNv
cnRhYmxlOiB0cnVlIH0gfTsKLQotICAgICAgICB0aGlzLmRhdGFHcmlkID0gbmV3IFdlYkluc3Bl
Y3Rvci5EYXRhR3JpZChjb2x1bW5zKTsKLSAgICAgICAgdGhpcy5kYXRhR3JpZC5hZGRFdmVudExp
c3RlbmVyKFdlYkluc3BlY3Rvci5EYXRhR3JpZC5FdmVudC5Tb3J0Q2hhbmdlZCwgdGhpcy5fc29y
dERhdGEsIHRoaXMpOwotCi0gICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLmRh
dGFHcmlkLmVsZW1lbnQpOwotICAgICAgICB0aGlzLmRhdGFHcmlkLnVwZGF0ZUxheW91dCgpOwot
Ci0gICAgICAgIGZ1bmN0aW9uIHByb2ZpbGVDYWxsYmFjayhlcnJvciwgcHJvZmlsZSkKLSAgICAg
ICAgewotICAgICAgICAgICAgaWYgKGVycm9yKQotICAgICAgICAgICAgICAgIHJldHVybjsKLQot
ICAgICAgICAgICAgaWYgKCFwcm9maWxlLmhlYWQpIHsKLSAgICAgICAgICAgICAgICAvLyBQcm9m
aWxpbmcgd2FzIHRlbnRhdGl2ZWx5IHRlcm1pbmF0ZWQgd2l0aCB0aGUgIkNsZWFyIGFsbCBwcm9m
aWxlcy4iIGJ1dHRvbi4KLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICB0aGlzLnByb2ZpbGUuaGVhZCA9IHByb2ZpbGUuaGVhZDsKLSAgICAgICAgICAg
IHRoaXMuX2Fzc2lnblBhcmVudHNJblByb2ZpbGUoKTsKLSAgICAgICAgICAgIHRoaXMuX2NoYW5n
ZVZpZXcoKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIENPTVBBVElCSUxJVFkgKGlPUyA2KTog
Z2V0Q1BVUHJvZmlsZSB1c2UgdG8gYmUgY2FsbGVkIGdldFByb2ZpbGUuCi0gICAgICAgIGlmIChQ
cm9maWxlckFnZW50LmdldFByb2ZpbGUpCi0gICAgICAgICAgICBQcm9maWxlckFnZW50LmdldFBy
b2ZpbGUodGhpcy5wcm9maWxlLnR5cGUsIHRoaXMucHJvZmlsZS5pZCwgcHJvZmlsZUNhbGxiYWNr
LmJpbmQodGhpcykpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBQcm9maWxlckFnZW50Lmdl
dENQVVByb2ZpbGUodGhpcy5wcm9maWxlLmlkLCBwcm9maWxlQ2FsbGJhY2suYmluZCh0aGlzKSk7
Ci0gICAgfSwKLQotICAgIGdldCBuYXZpZ2F0aW9uSXRlbXMoKQotICAgIHsKLSAgICAgICAgcmV0
dXJuIFt0aGlzLl9zaG93VHJlZUJvdHRvbVVwTmF2aWdhdGlvbkl0ZW0sIHRoaXMuc2hvd1RpbWVB
c1BlcmNlbnROYXZpZ2F0aW9uSXRlbV07Ci0gICAgfSwKLQotICAgIGdldCBib3R0b21VcFByb2Zp
bGVEYXRhR3JpZFRyZWUoKQotICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLl9ib3R0b21VcFByb2Zp
bGVEYXRhR3JpZFRyZWUpCi0gICAgICAgICAgICB0aGlzLl9ib3R0b21VcFByb2ZpbGVEYXRhR3Jp
ZFRyZWUgPSBuZXcgV2ViSW5zcGVjdG9yLkJvdHRvbVVwUHJvZmlsZURhdGFHcmlkVHJlZSh0aGlz
LCB0aGlzLnByb2ZpbGUuaGVhZCk7Ci0gICAgICAgIHJldHVybiB0aGlzLl9ib3R0b21VcFByb2Zp
bGVEYXRhR3JpZFRyZWU7Ci0gICAgfSwKLQotICAgIGdldCB0b3BEb3duUHJvZmlsZURhdGFHcmlk
VHJlZSgpCi0gICAgewotICAgICAgICBpZiAoIXRoaXMuX3RvcERvd25Qcm9maWxlRGF0YUdyaWRU
cmVlKQotICAgICAgICAgICAgdGhpcy5fdG9wRG93blByb2ZpbGVEYXRhR3JpZFRyZWUgPSBuZXcg
V2ViSW5zcGVjdG9yLlRvcERvd25Qcm9maWxlRGF0YUdyaWRUcmVlKHRoaXMsIHRoaXMucHJvZmls
ZS5oZWFkKTsKLSAgICAgICAgcmV0dXJuIHRoaXMuX3RvcERvd25Qcm9maWxlRGF0YUdyaWRUcmVl
OwotICAgIH0sCi0KLSAgICB3aWxsSGlkZTogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdGhp
cy5fY3VycmVudFNlYXJjaFJlc3VsdEluZGV4ID0gLTE7Ci0gICAgfSwKLQotICAgIHJlZnJlc2g6
IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHZhciBzZWxlY3RlZFByb2ZpbGVOb2RlID0gdGhp
cy5kYXRhR3JpZC5zZWxlY3RlZE5vZGUgPyB0aGlzLmRhdGFHcmlkLnNlbGVjdGVkTm9kZS5wcm9m
aWxlTm9kZSA6IG51bGw7Ci0KLSAgICAgICAgdGhpcy5kYXRhR3JpZC5yZW1vdmVDaGlsZHJlbigp
OwotCi0gICAgICAgIHZhciBjaGlsZHJlbiA9IHRoaXMucHJvZmlsZURhdGFHcmlkVHJlZS5jaGls
ZHJlbjsKLSAgICAgICAgdmFyIGNvdW50ID0gY2hpbGRyZW4ubGVuZ3RoOwotCi0gICAgICAgIGZv
ciAodmFyIGluZGV4ID0gMDsgaW5kZXggPCBjb3VudDsgKytpbmRleCkKLSAgICAgICAgICAgIHRo
aXMuZGF0YUdyaWQuYXBwZW5kQ2hpbGQoY2hpbGRyZW5baW5kZXhdKTsKLQotICAgICAgICBpZiAo
c2VsZWN0ZWRQcm9maWxlTm9kZSkKLSAgICAgICAgICAgIHNlbGVjdGVkUHJvZmlsZU5vZGUuc2Vs
ZWN0ZWQgPSB0cnVlOwotICAgIH0sCi0KLSAgICByZWZyZXNoVmlzaWJsZURhdGE6IGZ1bmN0aW9u
KCkKLSAgICB7Ci0gICAgICAgIHZhciBjaGlsZCA9IHRoaXMuZGF0YUdyaWQuY2hpbGRyZW5bMF07
Ci0gICAgICAgIHdoaWxlIChjaGlsZCkgewotICAgICAgICAgICAgY2hpbGQucmVmcmVzaCgpOwot
ICAgICAgICAgICAgY2hpbGQgPSBjaGlsZC50cmF2ZXJzZU5leHROb2RlKGZhbHNlLCBudWxsLCB0
cnVlKTsKLSAgICAgICAgfQotICAgIH0sCi0KLSAgICBzZWFyY2hDYW5jZWxlZDogZnVuY3Rpb24o
KQotICAgIHsKLSAgICAgICAgaWYgKHRoaXMuX3NlYXJjaFJlc3VsdHMpIHsKLSAgICAgICAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fc2VhcmNoUmVzdWx0cy5sZW5ndGg7ICsraSkgewot
ICAgICAgICAgICAgICAgIHZhciBwcm9maWxlTm9kZSA9IHRoaXMuX3NlYXJjaFJlc3VsdHNbaV0u
cHJvZmlsZU5vZGU7Ci0KLSAgICAgICAgICAgICAgICBkZWxldGUgcHJvZmlsZU5vZGUuX3NlYXJj
aE1hdGNoZWRTZWxmQ29sdW1uOwotICAgICAgICAgICAgICAgIGRlbGV0ZSBwcm9maWxlTm9kZS5f
c2VhcmNoTWF0Y2hlZFRvdGFsQ29sdW1uOwotICAgICAgICAgICAgICAgIGRlbGV0ZSBwcm9maWxl
Tm9kZS5fc2VhcmNoTWF0Y2hlZENhbGxzQ29sdW1uOwotICAgICAgICAgICAgICAgIGRlbGV0ZSBw
cm9maWxlTm9kZS5fc2VhcmNoTWF0Y2hlZEZ1bmN0aW9uQ29sdW1uOwotCi0gICAgICAgICAgICAg
ICAgcHJvZmlsZU5vZGUucmVmcmVzaCgpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAg
ICAgICAgZGVsZXRlIHRoaXMuX3NlYXJjaEZpbmlzaGVkQ2FsbGJhY2s7Ci0gICAgICAgIHRoaXMu
X2N1cnJlbnRTZWFyY2hSZXN1bHRJbmRleCA9IC0xOwotICAgICAgICB0aGlzLl9zZWFyY2hSZXN1
bHRzID0gW107Ci0gICAgfSwKLQotICAgIHBlcmZvcm1TZWFyY2g6IGZ1bmN0aW9uKHF1ZXJ5LCBm
aW5pc2hlZENhbGxiYWNrKQotICAgIHsKLSAgICAgICAgLy8gQ2FsbCBzZWFyY2hDYW5jZWxlZCBz
aW5jZSBpdCB3aWxsIHJlc2V0IGV2ZXJ5dGhpbmcgd2UgbmVlZCBiZWZvcmUgZG9pbmcgYSBuZXcg
c2VhcmNoLgotICAgICAgICB0aGlzLnNlYXJjaENhbmNlbGVkKCk7Ci0KLSAgICAgICAgcXVlcnkg
PSBxdWVyeS50cmltKCk7Ci0KLSAgICAgICAgaWYgKCFxdWVyeS5sZW5ndGgpCi0gICAgICAgICAg
ICByZXR1cm47Ci0KLSAgICAgICAgdGhpcy5fc2VhcmNoRmluaXNoZWRDYWxsYmFjayA9IGZpbmlz
aGVkQ2FsbGJhY2s7Ci0KLSAgICAgICAgdmFyIGdyZWF0ZXJUaGFuID0gcXVlcnkuY2hhckF0KDAp
ID09PSAiPiI7Ci0gICAgICAgIHZhciBsZXNzVGhhbiA9IHF1ZXJ5LmNoYXJBdCgwKSA9PT0gIjwi
OwotICAgICAgICB2YXIgZXF1YWxUbyA9IChxdWVyeS5jaGFyQXQoMCkgPT09ICI9IiB8fCAoKGdy
ZWF0ZXJUaGFuIHx8IGxlc3NUaGFuKSAmJiBxdWVyeS5jaGFyQXQoMSkgPT09ICI9IikpOwotICAg
ICAgICB2YXIgcGVyY2VudFVuaXRzID0gKHF1ZXJ5Lmxhc3RJbmRleE9mKCIlIikgPT09IChxdWVy
eS5sZW5ndGggLSAxKSk7Ci0gICAgICAgIHZhciBtaWxsaXNlY29uZHNVbml0cyA9IChxdWVyeS5s
ZW5ndGggPiAyICYmIHF1ZXJ5Lmxhc3RJbmRleE9mKCJtcyIpID09PSAocXVlcnkubGVuZ3RoIC0g
MikpOwotICAgICAgICB2YXIgc2Vjb25kc1VuaXRzID0gKCFtaWxsaXNlY29uZHNVbml0cyAmJiBx
dWVyeS5sYXN0SW5kZXhPZigicyIpID09PSAocXVlcnkubGVuZ3RoIC0gMSkpOwotCi0gICAgICAg
IHZhciBxdWVyeU51bWJlciA9IHBhcnNlRmxvYXQocXVlcnkpOwotICAgICAgICBpZiAoZ3JlYXRl
clRoYW4gfHwgbGVzc1RoYW4gfHwgZXF1YWxUbykgewotICAgICAgICAgICAgaWYgKGVxdWFsVG8g
JiYgKGdyZWF0ZXJUaGFuIHx8IGxlc3NUaGFuKSkKLSAgICAgICAgICAgICAgICBxdWVyeU51bWJl
ciA9IHBhcnNlRmxvYXQocXVlcnkuc3Vic3RyaW5nKDIpKTsKLSAgICAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgICAgICBxdWVyeU51bWJlciA9IHBhcnNlRmxvYXQocXVlcnkuc3Vic3RyaW5nKDEp
KTsKLSAgICAgICAgfQotCi0gICAgICAgIHZhciBxdWVyeU51bWJlck1pbGxpc2Vjb25kcyA9IChz
ZWNvbmRzVW5pdHMgPyAocXVlcnlOdW1iZXIgKiAxMDAwKSA6IHF1ZXJ5TnVtYmVyKTsKLQotICAg
ICAgICAvLyBNYWtlIGVxdWFsVG8gaW1wbGljaXRseSB0cnVlIGlmIGl0IHdhc24ndCBzcGVjaWZp
ZWQgdGhlcmUgaXMgbm8gb3RoZXIgb3BlcmF0b3IuCi0gICAgICAgIGlmICghaXNOYU4ocXVlcnlO
dW1iZXIpICYmICEoZ3JlYXRlclRoYW4gfHwgbGVzc1RoYW4pKQotICAgICAgICAgICAgZXF1YWxU
byA9IHRydWU7Ci0KLSAgICAgICAgZnVuY3Rpb24gbWF0Y2hlc1F1ZXJ5KC8qUHJvZmlsZURhdGFH
cmlkTm9kZSovIHByb2ZpbGVEYXRhR3JpZE5vZGUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGRl
bGV0ZSBwcm9maWxlRGF0YUdyaWROb2RlLl9zZWFyY2hNYXRjaGVkU2VsZkNvbHVtbjsKLSAgICAg
ICAgICAgIGRlbGV0ZSBwcm9maWxlRGF0YUdyaWROb2RlLl9zZWFyY2hNYXRjaGVkVG90YWxDb2x1
bW47Ci0gICAgICAgICAgICBkZWxldGUgcHJvZmlsZURhdGFHcmlkTm9kZS5fc2VhcmNoTWF0Y2hl
ZEF2ZXJhZ2VDb2x1bW47Ci0gICAgICAgICAgICBkZWxldGUgcHJvZmlsZURhdGFHcmlkTm9kZS5f
c2VhcmNoTWF0Y2hlZENhbGxzQ29sdW1uOwotICAgICAgICAgICAgZGVsZXRlIHByb2ZpbGVEYXRh
R3JpZE5vZGUuX3NlYXJjaE1hdGNoZWRGdW5jdGlvbkNvbHVtbjsKLQotICAgICAgICAgICAgaWYg
KHBlcmNlbnRVbml0cykgewotICAgICAgICAgICAgICAgIGlmIChsZXNzVGhhbikgewotICAgICAg
ICAgICAgICAgICAgICBpZiAocHJvZmlsZURhdGFHcmlkTm9kZS5zZWxmUGVyY2VudCA8IHF1ZXJ5
TnVtYmVyKQotICAgICAgICAgICAgICAgICAgICAgICAgcHJvZmlsZURhdGFHcmlkTm9kZS5fc2Vh
cmNoTWF0Y2hlZFNlbGZDb2x1bW4gPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICBpZiAocHJv
ZmlsZURhdGFHcmlkTm9kZS50b3RhbFBlcmNlbnQgPCBxdWVyeU51bWJlcikKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHByb2ZpbGVEYXRhR3JpZE5vZGUuX3NlYXJjaE1hdGNoZWRUb3RhbENvbHVt
biA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChwcm9maWxlRGF0YUdyaWROb2RlLmF2
ZXJhZ2VQZXJjZW50IDwgcXVlcnlOdW1iZXJNaWxsaXNlY29uZHMpCi0gICAgICAgICAgICAgICAg
ICAgICAgICBwcm9maWxlRGF0YUdyaWROb2RlLl9zZWFyY2hNYXRjaGVkQXZlcmFnZUNvbHVtbiA9
IHRydWU7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChncmVhdGVyVGhhbikgewotICAgICAg
ICAgICAgICAgICAgICBpZiAocHJvZmlsZURhdGFHcmlkTm9kZS5zZWxmUGVyY2VudCA+IHF1ZXJ5
TnVtYmVyKQotICAgICAgICAgICAgICAgICAgICAgICAgcHJvZmlsZURhdGFHcmlkTm9kZS5fc2Vh
cmNoTWF0Y2hlZFNlbGZDb2x1bW4gPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICBpZiAocHJv
ZmlsZURhdGFHcmlkTm9kZS50b3RhbFBlcmNlbnQgPiBxdWVyeU51bWJlcikKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHByb2ZpbGVEYXRhR3JpZE5vZGUuX3NlYXJjaE1hdGNoZWRUb3RhbENvbHVt
biA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChwcm9maWxlRGF0YUdyaWROb2RlLmF2
ZXJhZ2VQZXJjZW50IDwgcXVlcnlOdW1iZXJNaWxsaXNlY29uZHMpCi0gICAgICAgICAgICAgICAg
ICAgICAgICBwcm9maWxlRGF0YUdyaWROb2RlLl9zZWFyY2hNYXRjaGVkQXZlcmFnZUNvbHVtbiA9
IHRydWU7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgaWYgKGVxdWFsVG8p
IHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHByb2ZpbGVEYXRhR3JpZE5vZGUuc2VsZlBlcmNl
bnQgPT0gcXVlcnlOdW1iZXIpCi0gICAgICAgICAgICAgICAgICAgICAgICBwcm9maWxlRGF0YUdy
aWROb2RlLl9zZWFyY2hNYXRjaGVkU2VsZkNvbHVtbiA9IHRydWU7Ci0gICAgICAgICAgICAgICAg
ICAgIGlmIChwcm9maWxlRGF0YUdyaWROb2RlLnRvdGFsUGVyY2VudCA9PSBxdWVyeU51bWJlcikK
LSAgICAgICAgICAgICAgICAgICAgICAgIHByb2ZpbGVEYXRhR3JpZE5vZGUuX3NlYXJjaE1hdGNo
ZWRUb3RhbENvbHVtbiA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChwcm9maWxlRGF0
YUdyaWROb2RlLmF2ZXJhZ2VQZXJjZW50IDwgcXVlcnlOdW1iZXJNaWxsaXNlY29uZHMpCi0gICAg
ICAgICAgICAgICAgICAgICAgICBwcm9maWxlRGF0YUdyaWROb2RlLl9zZWFyY2hNYXRjaGVkQXZl
cmFnZUNvbHVtbiA9IHRydWU7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSBlbHNl
IGlmIChtaWxsaXNlY29uZHNVbml0cyB8fCBzZWNvbmRzVW5pdHMpIHsKLSAgICAgICAgICAgICAg
ICBpZiAobGVzc1RoYW4pIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHByb2ZpbGVEYXRhR3Jp
ZE5vZGUuc2VsZlRpbWUgPCBxdWVyeU51bWJlck1pbGxpc2Vjb25kcykKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHByb2ZpbGVEYXRhR3JpZE5vZGUuX3NlYXJjaE1hdGNoZWRTZWxmQ29sdW1uID0g
dHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHByb2ZpbGVEYXRhR3JpZE5vZGUudG90YWxU
aW1lIDwgcXVlcnlOdW1iZXJNaWxsaXNlY29uZHMpCi0gICAgICAgICAgICAgICAgICAgICAgICBw
cm9maWxlRGF0YUdyaWROb2RlLl9zZWFyY2hNYXRjaGVkVG90YWxDb2x1bW4gPSB0cnVlOwotICAg
ICAgICAgICAgICAgICAgICBpZiAocHJvZmlsZURhdGFHcmlkTm9kZS5hdmVyYWdlVGltZSA8IHF1
ZXJ5TnVtYmVyTWlsbGlzZWNvbmRzKQotICAgICAgICAgICAgICAgICAgICAgICAgcHJvZmlsZURh
dGFHcmlkTm9kZS5fc2VhcmNoTWF0Y2hlZEF2ZXJhZ2VDb2x1bW4gPSB0cnVlOwotICAgICAgICAg
ICAgICAgIH0gZWxzZSBpZiAoZ3JlYXRlclRoYW4pIHsKLSAgICAgICAgICAgICAgICAgICAgaWYg
KHByb2ZpbGVEYXRhR3JpZE5vZGUuc2VsZlRpbWUgPiBxdWVyeU51bWJlck1pbGxpc2Vjb25kcykK
LSAgICAgICAgICAgICAgICAgICAgICAgIHByb2ZpbGVEYXRhR3JpZE5vZGUuX3NlYXJjaE1hdGNo
ZWRTZWxmQ29sdW1uID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHByb2ZpbGVEYXRh
R3JpZE5vZGUudG90YWxUaW1lID4gcXVlcnlOdW1iZXJNaWxsaXNlY29uZHMpCi0gICAgICAgICAg
ICAgICAgICAgICAgICBwcm9maWxlRGF0YUdyaWROb2RlLl9zZWFyY2hNYXRjaGVkVG90YWxDb2x1
bW4gPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICBpZiAocHJvZmlsZURhdGFHcmlkTm9kZS5h
dmVyYWdlVGltZSA+IHF1ZXJ5TnVtYmVyTWlsbGlzZWNvbmRzKQotICAgICAgICAgICAgICAgICAg
ICAgICAgcHJvZmlsZURhdGFHcmlkTm9kZS5fc2VhcmNoTWF0Y2hlZEF2ZXJhZ2VDb2x1bW4gPSB0
cnVlOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGlmIChlcXVhbFRvKSB7
Ci0gICAgICAgICAgICAgICAgICAgIGlmIChwcm9maWxlRGF0YUdyaWROb2RlLnNlbGZUaW1lID09
IHF1ZXJ5TnVtYmVyTWlsbGlzZWNvbmRzKQotICAgICAgICAgICAgICAgICAgICAgICAgcHJvZmls
ZURhdGFHcmlkTm9kZS5fc2VhcmNoTWF0Y2hlZFNlbGZDb2x1bW4gPSB0cnVlOwotICAgICAgICAg
ICAgICAgICAgICBpZiAocHJvZmlsZURhdGFHcmlkTm9kZS50b3RhbFRpbWUgPT0gcXVlcnlOdW1i
ZXJNaWxsaXNlY29uZHMpCi0gICAgICAgICAgICAgICAgICAgICAgICBwcm9maWxlRGF0YUdyaWRO
b2RlLl9zZWFyY2hNYXRjaGVkVG90YWxDb2x1bW4gPSB0cnVlOwotICAgICAgICAgICAgICAgICAg
ICBpZiAocHJvZmlsZURhdGFHcmlkTm9kZS5hdmVyYWdlVGltZSA9PSBxdWVyeU51bWJlck1pbGxp
c2Vjb25kcykKLSAgICAgICAgICAgICAgICAgICAgICAgIHByb2ZpbGVEYXRhR3JpZE5vZGUuX3Nl
YXJjaE1hdGNoZWRBdmVyYWdlQ29sdW1uID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGlmIChlcXVhbFRvICYmIHByb2ZpbGVE
YXRhR3JpZE5vZGUubnVtYmVyT2ZDYWxscyA9PSBxdWVyeU51bWJlcikKLSAgICAgICAgICAgICAg
ICAgICAgcHJvZmlsZURhdGFHcmlkTm9kZS5fc2VhcmNoTWF0Y2hlZENhbGxzQ29sdW1uID0gdHJ1
ZTsKLSAgICAgICAgICAgICAgICBpZiAoZ3JlYXRlclRoYW4gJiYgcHJvZmlsZURhdGFHcmlkTm9k
ZS5udW1iZXJPZkNhbGxzID4gcXVlcnlOdW1iZXIpCi0gICAgICAgICAgICAgICAgICAgIHByb2Zp
bGVEYXRhR3JpZE5vZGUuX3NlYXJjaE1hdGNoZWRDYWxsc0NvbHVtbiA9IHRydWU7Ci0gICAgICAg
ICAgICAgICAgaWYgKGxlc3NUaGFuICYmIHByb2ZpbGVEYXRhR3JpZE5vZGUubnVtYmVyT2ZDYWxs
cyA8IHF1ZXJ5TnVtYmVyKQotICAgICAgICAgICAgICAgICAgICBwcm9maWxlRGF0YUdyaWROb2Rl
Ll9zZWFyY2hNYXRjaGVkQ2FsbHNDb2x1bW4gPSB0cnVlOwotICAgICAgICAgICAgfQotCi0gICAg
ICAgICAgICBpZiAocHJvZmlsZURhdGFHcmlkTm9kZS5mdW5jdGlvbk5hbWUuaGFzU3Vic3RyaW5n
KHF1ZXJ5LCB0cnVlKSB8fCBwcm9maWxlRGF0YUdyaWROb2RlLnVybC5oYXNTdWJzdHJpbmcocXVl
cnksIHRydWUpKQotICAgICAgICAgICAgICAgIHByb2ZpbGVEYXRhR3JpZE5vZGUuX3NlYXJjaE1h
dGNoZWRGdW5jdGlvbkNvbHVtbiA9IHRydWU7Ci0KLSAgICAgICAgICAgIGlmIChwcm9maWxlRGF0
YUdyaWROb2RlLl9zZWFyY2hNYXRjaGVkU2VsZkNvbHVtbiB8fAotICAgICAgICAgICAgICAgIHBy
b2ZpbGVEYXRhR3JpZE5vZGUuX3NlYXJjaE1hdGNoZWRUb3RhbENvbHVtbiB8fAotICAgICAgICAg
ICAgICAgIHByb2ZpbGVEYXRhR3JpZE5vZGUuX3NlYXJjaE1hdGNoZWRBdmVyYWdlQ29sdW1uIHx8
Ci0gICAgICAgICAgICAgICAgcHJvZmlsZURhdGFHcmlkTm9kZS5fc2VhcmNoTWF0Y2hlZENhbGxz
Q29sdW1uIHx8Ci0gICAgICAgICAgICAgICAgcHJvZmlsZURhdGFHcmlkTm9kZS5fc2VhcmNoTWF0
Y2hlZEZ1bmN0aW9uQ29sdW1uKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHByb2Zp
bGVEYXRhR3JpZE5vZGUucmVmcmVzaCgpOwotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwot
ICAgICAgICAgICAgfQotCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLQot
ICAgICAgICB2YXIgY3VycmVudCA9IHRoaXMucHJvZmlsZURhdGFHcmlkVHJlZS5jaGlsZHJlblsw
XTsKLQotICAgICAgICB3aGlsZSAoY3VycmVudCkgewotICAgICAgICAgICAgaWYgKG1hdGNoZXNR
dWVyeShjdXJyZW50KSkgewotICAgICAgICAgICAgICAgIHRoaXMuX3NlYXJjaFJlc3VsdHMucHVz
aCh7IHByb2ZpbGVOb2RlOiBjdXJyZW50IH0pOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAg
ICBjdXJyZW50ID0gY3VycmVudC50cmF2ZXJzZU5leHROb2RlKGZhbHNlLCBudWxsLCBmYWxzZSk7
Ci0gICAgICAgIH0KLQotICAgICAgICBmaW5pc2hlZENhbGxiYWNrKHRoaXMsIHRoaXMuX3NlYXJj
aFJlc3VsdHMubGVuZ3RoKTsKLSAgICB9LAotCi0gICAganVtcFRvRmlyc3RTZWFyY2hSZXN1bHQ6
IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIGlmICghdGhpcy5fc2VhcmNoUmVzdWx0cyB8fCAh
dGhpcy5fc2VhcmNoUmVzdWx0cy5sZW5ndGgpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IHRoaXMuX2N1cnJlbnRTZWFyY2hSZXN1bHRJbmRleCA9IDA7Ci0gICAgICAgIHRoaXMuX2p1bXBU
b1NlYXJjaFJlc3VsdCh0aGlzLl9jdXJyZW50U2VhcmNoUmVzdWx0SW5kZXgpOwotICAgIH0sCi0K
LSAgICBqdW1wVG9MYXN0U2VhcmNoUmVzdWx0OiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICBp
ZiAoIXRoaXMuX3NlYXJjaFJlc3VsdHMgfHwgIXRoaXMuX3NlYXJjaFJlc3VsdHMubGVuZ3RoKQot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB0aGlzLl9jdXJyZW50U2VhcmNoUmVzdWx0SW5k
ZXggPSAodGhpcy5fc2VhcmNoUmVzdWx0cy5sZW5ndGggLSAxKTsKLSAgICAgICAgdGhpcy5fanVt
cFRvU2VhcmNoUmVzdWx0KHRoaXMuX2N1cnJlbnRTZWFyY2hSZXN1bHRJbmRleCk7Ci0gICAgfSwK
LQotICAgIGp1bXBUb05leHRTZWFyY2hSZXN1bHQ6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAg
IGlmICghdGhpcy5fc2VhcmNoUmVzdWx0cyB8fCAhdGhpcy5fc2VhcmNoUmVzdWx0cy5sZW5ndGgp
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGlmICgrK3RoaXMuX2N1cnJlbnRTZWFyY2hS
ZXN1bHRJbmRleCA+PSB0aGlzLl9zZWFyY2hSZXN1bHRzLmxlbmd0aCkKLSAgICAgICAgICAgIHRo
aXMuX2N1cnJlbnRTZWFyY2hSZXN1bHRJbmRleCA9IDA7Ci0gICAgICAgIHRoaXMuX2p1bXBUb1Nl
YXJjaFJlc3VsdCh0aGlzLl9jdXJyZW50U2VhcmNoUmVzdWx0SW5kZXgpOwotICAgIH0sCi0KLSAg
ICBqdW1wVG9QcmV2aW91c1NlYXJjaFJlc3VsdDogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAg
aWYgKCF0aGlzLl9zZWFyY2hSZXN1bHRzIHx8ICF0aGlzLl9zZWFyY2hSZXN1bHRzLmxlbmd0aCkK
LSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgaWYgKC0tdGhpcy5fY3VycmVudFNlYXJjaFJl
c3VsdEluZGV4IDwgMCkKLSAgICAgICAgICAgIHRoaXMuX2N1cnJlbnRTZWFyY2hSZXN1bHRJbmRl
eCA9ICh0aGlzLl9zZWFyY2hSZXN1bHRzLmxlbmd0aCAtIDEpOwotICAgICAgICB0aGlzLl9qdW1w
VG9TZWFyY2hSZXN1bHQodGhpcy5fY3VycmVudFNlYXJjaFJlc3VsdEluZGV4KTsKLSAgICB9LAot
Ci0gICAgc2hvd2luZ0ZpcnN0U2VhcmNoUmVzdWx0OiBmdW5jdGlvbigpCi0gICAgewotICAgICAg
ICByZXR1cm4gKHRoaXMuX2N1cnJlbnRTZWFyY2hSZXN1bHRJbmRleCA9PT0gMCk7Ci0gICAgfSwK
LQotICAgIHNob3dpbmdMYXN0U2VhcmNoUmVzdWx0OiBmdW5jdGlvbigpCi0gICAgewotICAgICAg
ICByZXR1cm4gKHRoaXMuX3NlYXJjaFJlc3VsdHMgJiYgdGhpcy5fY3VycmVudFNlYXJjaFJlc3Vs
dEluZGV4ID09PSAodGhpcy5fc2VhcmNoUmVzdWx0cy5sZW5ndGggLSAxKSk7Ci0gICAgfSwKLQot
ICAgIF9qdW1wVG9TZWFyY2hSZXN1bHQ6IGZ1bmN0aW9uKGluZGV4KQotICAgIHsKLSAgICAgICAg
dmFyIHNlYXJjaFJlc3VsdCA9IHRoaXMuX3NlYXJjaFJlc3VsdHNbaW5kZXhdOwotICAgICAgICBp
ZiAoIXNlYXJjaFJlc3VsdCkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICB2YXIgcHJv
ZmlsZU5vZGUgPSBzZWFyY2hSZXN1bHQucHJvZmlsZU5vZGU7Ci0gICAgICAgIHByb2ZpbGVOb2Rl
LnJldmVhbEFuZFNlbGVjdCgpOwotICAgIH0sCi0KLSAgICBfdG9nZ2xlQm90dG9tVXBWaWV3OiBm
dW5jdGlvbihldmVudCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX3Nob3dUcmVlQm90dG9tVXBTZXR0
aW5nLnZhbHVlID0gIXRoaXMuX3Nob3dUcmVlQm90dG9tVXBTZXR0aW5nLnZhbHVlOwotICAgICAg
ICB0aGlzLl9zaG93VHJlZUJvdHRvbVVwTmF2aWdhdGlvbkl0ZW0uYWN0aXZhdGVkID0gdGhpcy5f
c2hvd1RyZWVCb3R0b21VcFNldHRpbmcudmFsdWU7Ci0gICAgICAgIHRoaXMuX2NoYW5nZVZpZXco
KTsKLSAgICB9LAotCi0gICAgX2NoYW5nZVZpZXc6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAg
IGlmICghdGhpcy5wcm9maWxlKQotICAgICAgICAgICAgcmV0dXJuOwotICAgIAotICAgICAgICBp
ZiAoIXRoaXMuX3Nob3dUcmVlQm90dG9tVXBTZXR0aW5nLnZhbHVlKSB7Ci0gICAgICAgICAgICB0
aGlzLnByb2ZpbGVEYXRhR3JpZFRyZWUgPSB0aGlzLnRvcERvd25Qcm9maWxlRGF0YUdyaWRUcmVl
OwotICAgICAgICAgICAgdGhpcy5fc29ydFByb2ZpbGUoKTsKLSAgICAgICAgICAgIHRoaXMuX3Zp
ZXdUeXBlLnZhbHVlID0gV2ViSW5zcGVjdG9yLkphdmFTY3JpcHRQcm9maWxlVmlldy5fVHlwZVRy
ZWU7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICB0aGlzLnByb2ZpbGVEYXRhR3JpZFRy
ZWUgPSB0aGlzLmJvdHRvbVVwUHJvZmlsZURhdGFHcmlkVHJlZTsKLSAgICAgICAgICAgIHRoaXMu
X3NvcnRQcm9maWxlKCk7Ci0gICAgICAgICAgICB0aGlzLl92aWV3VHlwZS52YWx1ZSA9IFdlYklu
c3BlY3Rvci5KYXZhU2NyaXB0UHJvZmlsZVZpZXcuX1R5cGVIZWF2eTsKLSAgICAgICAgfQotCi0g
ICAgICAgIGlmICghdGhpcy5jdXJyZW50UXVlcnkgfHwgIXRoaXMuX3NlYXJjaEZpbmlzaGVkQ2Fs
bGJhY2sgfHwgIXRoaXMuX3NlYXJjaFJlc3VsdHMpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAg
ICAgICAgLy8gVGhlIGN1cnJlbnQgc2VhcmNoIG5lZWRzIHRvIGJlIHBlcmZvcm1lZCBhZ2Fpbi4g
Rmlyc3QgbmVnYXRlIG91dCBwcmV2aW91cyBtYXRjaAotICAgICAgICAvLyBjb3VudCBieSBjYWxs
aW5nIHRoZSBzZWFyY2ggZmluaXNoZWQgY2FsbGJhY2sgd2l0aCBhIG5lZ2F0aXZlIG51bWJlciBv
ZiBtYXRjaGVzLgotICAgICAgICAvLyBUaGVuIHBlcmZvcm0gdGhlIHNlYXJjaCBhZ2FpbiB0aGUg
d2l0aCBzYW1lIHF1ZXJ5IGFuZCBjYWxsYmFjay4KLSAgICAgICAgdGhpcy5fc2VhcmNoRmluaXNo
ZWRDYWxsYmFjayh0aGlzLCAtdGhpcy5fc2VhcmNoUmVzdWx0cy5sZW5ndGgpOwotICAgICAgICB0
aGlzLnBlcmZvcm1TZWFyY2godGhpcy5jdXJyZW50UXVlcnksIHRoaXMuX3NlYXJjaEZpbmlzaGVk
Q2FsbGJhY2spOwotICAgIH0sCi0KLSAgICB0b2dnbGVUaW1lRGlzcGxheTogZnVuY3Rpb24oZXZl
bnQpCi0gICAgewotICAgICAgICBXZWJJbnNwZWN0b3IuUHJvZmlsZVZpZXcucHJvdG90eXBlLnRv
Z2dsZVRpbWVEaXNwbGF5LmNhbGwodGhpcywgZXZlbnQpOwotICAgICAgICB0aGlzLnNob3dUaW1l
QXNQZXJjZW50LnZhbHVlID0gIXRoaXMuc2hvd1RpbWVBc1BlcmNlbnQudmFsdWU7Ci0gICAgICAg
IHRoaXMucmVmcmVzaFZpc2libGVEYXRhKCk7Ci0gICAgfSwKLQotICAgIF9mb2N1c0NsaWNrZWQ6
IGZ1bmN0aW9uKGV2ZW50KQotICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLmRhdGFHcmlkLnNlbGVj
dGVkTm9kZSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICB0aGlzLnByb2ZpbGVEYXRh
R3JpZFRyZWUuZm9jdXModGhpcy5kYXRhR3JpZC5zZWxlY3RlZE5vZGUpOwotICAgICAgICB0aGlz
LnJlZnJlc2goKTsKLSAgICAgICAgdGhpcy5yZWZyZXNoVmlzaWJsZURhdGEoKTsKLSAgICB9LAot
Ci0gICAgX2V4Y2x1ZGVDbGlja2VkOiBmdW5jdGlvbihldmVudCkKLSAgICB7Ci0gICAgICAgIHZh
ciBzZWxlY3RlZE5vZGUgPSB0aGlzLmRhdGFHcmlkLnNlbGVjdGVkTm9kZTsKLQotICAgICAgICBp
ZiAoIXNlbGVjdGVkTm9kZSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBzZWxlY3Rl
ZE5vZGUuZGVzZWxlY3QoKTsKLQotICAgICAgICB0aGlzLnByb2ZpbGVEYXRhR3JpZFRyZWUuZXhj
bHVkZShzZWxlY3RlZE5vZGUpOwotICAgICAgICB0aGlzLnJlZnJlc2goKTsKLSAgICAgICAgdGhp
cy5yZWZyZXNoVmlzaWJsZURhdGEoKTsKLSAgICB9LAotCi0gICAgX3Jlc2V0Q2xpY2tlZDogZnVu
Y3Rpb24oZXZlbnQpCi0gICAgewotICAgICAgICB0aGlzLnByb2ZpbGVEYXRhR3JpZFRyZWUucmVz
dG9yZSgpOwotICAgICAgICB0aGlzLnJlZnJlc2goKTsKLSAgICAgICAgdGhpcy5yZWZyZXNoVmlz
aWJsZURhdGEoKTsKLSAgICB9LAotCi0gICAgX2RhdGFHcmlkTm9kZVNlbGVjdGVkOiBmdW5jdGlv
bihub2RlKQotICAgIHsKLSAgICAgICAgLy8gRklYTUU6IFVwZGF0ZSBVSSB3ZSBoYXZlIHRvIGZv
Y3VzIG9uIGEgZGF0YSBncmlkIG5vZGUgb3IgZXhjbHVkZSBpdCBmcm9tIHRoZSBwcm9maWxlLgot
ICAgIH0sCi0KLSAgICBfZGF0YUdyaWROb2RlRGVzZWxlY3RlZDogZnVuY3Rpb24obm9kZSkKLSAg
ICB7Ci0gICAgICAgIC8vIEZJWE1FOiBVcGRhdGUgVUkgd2UgaGF2ZSB0byBmb2N1cyBvbiBhIGRh
dGEgZ3JpZCBub2RlIG9yIGV4Y2x1ZGUgaXQgZnJvbSB0aGUgcHJvZmlsZS4KLSAgICB9LAotCi0g
ICAgX3NvcnREYXRhOiBmdW5jdGlvbihldmVudCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX3NvcnRQ
cm9maWxlKHRoaXMucHJvZmlsZSk7Ci0gICAgfSwKLQotICAgIF9zb3J0UHJvZmlsZTogZnVuY3Rp
b24oKQotICAgIHsKLSAgICAgICAgdmFyIHNvcnRBc2NlbmRpbmcgPSB0aGlzLmRhdGFHcmlkLnNv
cnRPcmRlciA9PT0gImFzY2VuZGluZyI7Ci0gICAgICAgIHZhciBzb3J0Q29sdW1uSWRlbnRpZmll
ciA9IHRoaXMuZGF0YUdyaWQuc29ydENvbHVtbklkZW50aWZpZXI7Ci0gICAgICAgIHZhciBzb3J0
UHJvcGVydHkgPSB7Ci0gICAgICAgICAgICAgICAgImF2ZXJhZ2UiOiAiYXZlcmFnZVRpbWUiLAot
ICAgICAgICAgICAgICAgICJzZWxmIjogInNlbGZUaW1lIiwKLSAgICAgICAgICAgICAgICAidG90
YWwiOiAidG90YWxUaW1lIiwKLSAgICAgICAgICAgICAgICAiY2FsbHMiOiAibnVtYmVyT2ZDYWxs
cyIsCi0gICAgICAgICAgICAgICAgImZ1bmN0aW9uIjogImZ1bmN0aW9uTmFtZSIKLSAgICAgICAg
ICAgIH1bc29ydENvbHVtbklkZW50aWZpZXJdOwotCi0gICAgICAgIHRoaXMucHJvZmlsZURhdGFH
cmlkVHJlZS5zb3J0KFdlYkluc3BlY3Rvci5Qcm9maWxlRGF0YUdyaWRUcmVlLnByb3BlcnR5Q29t
cGFyYXRvcihzb3J0UHJvcGVydHksIHNvcnRBc2NlbmRpbmcpKTsKLQotICAgICAgICB0aGlzLnJl
ZnJlc2goKTsKLSAgICB9LAotCi0gICAgX2Fzc2lnblBhcmVudHNJblByb2ZpbGU6IGZ1bmN0aW9u
KCkKLSAgICB7Ci0gICAgICAgIHZhciBoZWFkID0gdGhpcy5wcm9maWxlLmhlYWQ7Ci0gICAgICAg
IGhlYWQucGFyZW50ID0gbnVsbDsKLSAgICAgICAgaGVhZC5oZWFkID0gbnVsbDsKLSAgICAgICAg
dmFyIG5vZGVzVG9UcmF2ZXJzZSA9IFsgeyBwYXJlbnQ6IGhlYWQsIGNoaWxkcmVuOiBoZWFkLmNo
aWxkcmVuIH0gXTsKLSAgICAgICAgd2hpbGUgKG5vZGVzVG9UcmF2ZXJzZS5sZW5ndGggPiAwKSB7
Ci0gICAgICAgICAgICB2YXIgcGFpciA9IG5vZGVzVG9UcmF2ZXJzZS5zaGlmdCgpOwotICAgICAg
ICAgICAgdmFyIHBhcmVudCA9IHBhaXIucGFyZW50OwotICAgICAgICAgICAgdmFyIGNoaWxkcmVu
ID0gcGFpci5jaGlsZHJlbjsKLSAgICAgICAgICAgIHZhciBsZW5ndGggPSBjaGlsZHJlbi5sZW5n
dGg7Ci0gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAg
ICAgICAgICAgICAgY2hpbGRyZW5baV0uaGVhZCA9IGhlYWQ7Ci0gICAgICAgICAgICAgICAgY2hp
bGRyZW5baV0ucGFyZW50ID0gcGFyZW50OwotICAgICAgICAgICAgICAgIGlmIChjaGlsZHJlbltp
XS5jaGlsZHJlbi5sZW5ndGggPiAwKQotICAgICAgICAgICAgICAgICAgICBub2Rlc1RvVHJhdmVy
c2UucHVzaCh7IHBhcmVudDogY2hpbGRyZW5baV0sIGNoaWxkcmVuOiBjaGlsZHJlbltpXS5jaGls
ZHJlbiB9KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLX0KLQotV2ViSW5zcGVj
dG9yLkphdmFTY3JpcHRQcm9maWxlVmlldy5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVj
dG9yLlByb2ZpbGVWaWV3LnByb3RvdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL0xlZ2FjeUJvdHRvbVVwUHJvZmlsZURhdGFHcmlkVHJlZS5qcyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0xlZ2FjeUJvdHRvbVVwUHJvZmls
ZURhdGFHcmlkVHJlZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mOWUxMTU2M2U4Njc0OTUxMzA4Zjg5ZWRkZmZm
ODAxNGUwNzdmNmJiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvTGVnYWN5Qm90dG9tVXBQcm9maWxlRGF0YUdyaWRUcmVlLmpzCkBAIC0wLDAg
KzEsMjY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IDI4MCBOb3J0aCBJbmMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisvLyBCb3R0b20gVXAgUHJvZmlsaW5nIHNob3dzIHRoZSBlbnRpcmUgY2FsbHN0YWNrIGJhY2t3
YXJkczoKKy8vIFRoZSByb290IG5vZGUgaXMgYSByZXByZXNlbnRhdGlvbiBvZiBlYWNoIGluZGl2
aWR1YWwgZnVuY3Rpb24gY2FsbGVkLCBhbmQgZWFjaCBjaGlsZCBvZiB0aGF0IG5vZGUgcmVwcmVz
ZW50cworLy8gYSByZXZlcnNlLWNhbGxzdGFjayBzaG93aW5nIGhvdyBtYW55IG9mIHRob3NlIGNh
bGxzIGNhbWUgZnJvbSBpdC4gU28sIHVubGlrZSB0b3AtZG93biwgdGhlIHN0YXRpc3RpY3MgaW4K
Ky8vIGVhY2ggY2hpbGQgc3RpbGwgcmVwcmVzZW50IHRoZSByb290IG5vZGUuIFdlIGhhdmUgdG8g
YmUgcGFydGljdWxhcmx5IGNhcmVmdWwgb2YgcmVjdXJzaW9uIHdpdGggdGhpcyBtb2RlCisvLyBi
ZWNhdXNlIGEgcm9vdCBub2RlIGNhbiByZXByZXNlbnQgaXRzZWxmIEFORCBhbiBhbmNlc3Rvci4K
KworV2ViSW5zcGVjdG9yLkxlZ2FjeUJvdHRvbVVwUHJvZmlsZURhdGFHcmlkTm9kZSA9IGZ1bmN0
aW9uKHByb2ZpbGVOb2RlLCBvd25pbmdUcmVlKQoreworICAgIFdlYkluc3BlY3Rvci5MZWdhY3lQ
cm9maWxlRGF0YUdyaWROb2RlLmNhbGwodGhpcywgcHJvZmlsZU5vZGUsIG93bmluZ1RyZWUsIHRo
aXMuX3dpbGxIYXZlQ2hpbGRyZW4ocHJvZmlsZU5vZGUpKTsKKworICAgIHRoaXMuX3JlbWFpbmlu
Z05vZGVJbmZvcyA9IFtdOworfQorCitXZWJJbnNwZWN0b3IuTGVnYWN5Qm90dG9tVXBQcm9maWxl
RGF0YUdyaWROb2RlLnByb3RvdHlwZSA9IHsKKyAgICBfdGFrZVByb3BlcnRpZXNGcm9tUHJvZmls
ZURhdGFHcmlkTm9kZTogZnVuY3Rpb24ocHJvZmlsZURhdGFHcmlkTm9kZSkKKyAgICB7CisgICAg
ICAgIHRoaXMuX3NhdmUoKTsKKworICAgICAgICB0aGlzLnNlbGZUaW1lID0gcHJvZmlsZURhdGFH
cmlkTm9kZS5zZWxmVGltZTsKKyAgICAgICAgdGhpcy50b3RhbFRpbWUgPSBwcm9maWxlRGF0YUdy
aWROb2RlLnRvdGFsVGltZTsKKyAgICAgICAgdGhpcy5udW1iZXJPZkNhbGxzID0gcHJvZmlsZURh
dGFHcmlkTm9kZS5udW1iZXJPZkNhbGxzOworICAgIH0sCisKKyAgICAvLyBXaGVuIGZvY3VzaW5n
LCB3ZSBrZWVwIGp1c3QgdGhlIG1lbWJlcnMgb2YgdGhlIGNhbGxzdGFjay4KKyAgICBfa2VlcE9u
bHlDaGlsZDogZnVuY3Rpb24oY2hpbGQpCisgICAgeworICAgICAgICB0aGlzLl9zYXZlKCk7CisK
KyAgICAgICAgdGhpcy5yZW1vdmVDaGlsZHJlbigpOworICAgICAgICB0aGlzLmFwcGVuZENoaWxk
KGNoaWxkKTsKKyAgICB9LAorCisgICAgX2V4Y2x1ZGU6IGZ1bmN0aW9uKGFDYWxsVUlEKQorICAg
IHsKKyAgICAgICAgaWYgKHRoaXMuX3JlbWFpbmluZ05vZGVJbmZvcykKKyAgICAgICAgICAgIHRo
aXMuX3BvcHVsYXRlKCk7CisKKyAgICAgICAgdGhpcy5fc2F2ZSgpOworCisgICAgICAgIHZhciBj
aGlsZHJlbiA9IHRoaXMuY2hpbGRyZW47CisgICAgICAgIHZhciBpbmRleCA9IHRoaXMuY2hpbGRy
ZW4ubGVuZ3RoOworCisgICAgICAgIHdoaWxlIChpbmRleC0tKQorICAgICAgICAgICAgY2hpbGRy
ZW5baW5kZXhdLl9leGNsdWRlKGFDYWxsVUlEKTsKKworICAgICAgICB2YXIgY2hpbGQgPSB0aGlz
LmNoaWxkcmVuQnlDYWxsVUlEW2FDYWxsVUlEXTsKKworICAgICAgICBpZiAoY2hpbGQpCisgICAg
ICAgICAgICB0aGlzLl9tZXJnZShjaGlsZCwgdHJ1ZSk7CisgICAgfSwKKworICAgIF9yZXN0b3Jl
OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBXZWJJbnNwZWN0b3IuTGVnYWN5UHJvZmlsZURh
dGFHcmlkTm9kZS5wcm90b3R5cGUuX3Jlc3RvcmUoKTsKKworICAgICAgICBpZiAoIXRoaXMuY2hp
bGRyZW4ubGVuZ3RoKQorICAgICAgICAgICAgdGhpcy5oYXNDaGlsZHJlbiA9IHRoaXMuX3dpbGxI
YXZlQ2hpbGRyZW4oKTsKKyAgICB9LAorCisgICAgX21lcmdlOiBmdW5jdGlvbihjaGlsZCwgc2hv
dWxkQWJzb3JiKQorICAgIHsKKyAgICAgICAgdGhpcy5zZWxmVGltZSAtPSBjaGlsZC5zZWxmVGlt
ZTsKKworICAgICAgICBXZWJJbnNwZWN0b3IuTGVnYWN5UHJvZmlsZURhdGFHcmlkTm9kZS5wcm90
b3R5cGUuX21lcmdlLmNhbGwodGhpcywgY2hpbGQsIHNob3VsZEFic29yYik7CisgICAgfSwKKwor
ICAgIF9zaGFyZWRQb3B1bGF0ZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdmFyIHJlbWFp
bmluZ05vZGVJbmZvcyA9IHRoaXMuX3JlbWFpbmluZ05vZGVJbmZvczsKKyAgICAgICAgdmFyIGNv
dW50ID0gcmVtYWluaW5nTm9kZUluZm9zLmxlbmd0aDsKKworICAgICAgICBmb3IgKHZhciBpbmRl
eCA9IDA7IGluZGV4IDwgY291bnQ7ICsraW5kZXgpIHsKKyAgICAgICAgICAgIHZhciBub2RlSW5m
byA9IHJlbWFpbmluZ05vZGVJbmZvc1tpbmRleF07CisgICAgICAgICAgICB2YXIgYW5jZXN0b3Ig
PSBub2RlSW5mby5hbmNlc3RvcjsKKyAgICAgICAgICAgIHZhciBmb2N1c05vZGUgPSBub2RlSW5m
by5mb2N1c05vZGU7CisgICAgICAgICAgICB2YXIgY2hpbGQgPSB0aGlzLmZpbmRDaGlsZChhbmNl
c3Rvcik7CisKKyAgICAgICAgICAgIC8vIElmIHdlIGFscmVhZHkgaGF2ZSB0aGlzIGNoaWxkLCB0
aGVuIG1lcmdlIHRoZSBkYXRhIHRvZ2V0aGVyLgorICAgICAgICAgICAgaWYgKGNoaWxkKSB7Cisg
ICAgICAgICAgICAgICAgdmFyIHRvdGFsVGltZUFjY291bnRlZEZvciA9IG5vZGVJbmZvLnRvdGFs
VGltZUFjY291bnRlZEZvcjsKKworICAgICAgICAgICAgICAgIGNoaWxkLnNlbGZUaW1lICs9IGZv
Y3VzTm9kZS5zZWxmVGltZTsKKyAgICAgICAgICAgICAgICBjaGlsZC5udW1iZXJPZkNhbGxzICs9
IGZvY3VzTm9kZS5udW1iZXJPZkNhbGxzOworCisgICAgICAgICAgICAgICAgaWYgKCF0b3RhbFRp
bWVBY2NvdW50ZWRGb3IpCisgICAgICAgICAgICAgICAgICAgIGNoaWxkLnRvdGFsVGltZSArPSBm
b2N1c05vZGUudG90YWxUaW1lOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICAvLyBJZiBub3QsIGFkZCBpdCBhcyBhIHRydWUgYW5jZXN0b3IuCisgICAgICAgICAgICAgICAg
Ly8gSW4gaGVhdnkgbW9kZSwgd2UgdGFrZSBvdXIgdmlzdWFsIGlkZW50aXR5IGZyb20gYW5jZXN0
b3Igbm9kZS4uLgorICAgICAgICAgICAgICAgIGNoaWxkID0gbmV3IFdlYkluc3BlY3Rvci5MZWdh
Y3lCb3R0b21VcFByb2ZpbGVEYXRhR3JpZE5vZGUoYW5jZXN0b3IsIHRoaXMudHJlZSwgZmFsc2Us
IHRoaXMuc2hvd1RpbWVBc1BlcmNlbnQpOworCisgICAgICAgICAgICAgICAgaWYgKGFuY2VzdG9y
ICE9PSBmb2N1c05vZGUpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gYnV0IHRoZSBhY3R1YWwg
c3RhdGlzdGljcyBmcm9tIHRoZSAicm9vdCIgbm9kZSAoYm90dG9tIG9mIHRoZSBjYWxsc3RhY2sp
LgorICAgICAgICAgICAgICAgICAgICBjaGlsZC5zZWxmVGltZSA9IGZvY3VzTm9kZS5zZWxmVGlt
ZTsKKyAgICAgICAgICAgICAgICAgICAgY2hpbGQudG90YWxUaW1lID0gZm9jdXNOb2RlLnRvdGFs
VGltZTsKKyAgICAgICAgICAgICAgICAgICAgY2hpbGQubnVtYmVyT2ZDYWxscyA9IGZvY3VzTm9k
ZS5udW1iZXJPZkNhbGxzOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHRo
aXMuYXBwZW5kQ2hpbGQoY2hpbGQpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIg
cGFyZW50ID0gYW5jZXN0b3IucGFyZW50OworICAgICAgICAgICAgaWYgKHBhcmVudCAmJiBwYXJl
bnQucGFyZW50KSB7CisgICAgICAgICAgICAgICAgbm9kZUluZm8uYW5jZXN0b3IgPSBwYXJlbnQ7
CisgICAgICAgICAgICAgICAgY2hpbGQuX3JlbWFpbmluZ05vZGVJbmZvcy5wdXNoKG5vZGVJbmZv
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGRlbGV0ZSB0aGlzLl9yZW1h
aW5pbmdOb2RlSW5mb3M7CisgICAgfSwKKworICAgIF93aWxsSGF2ZUNoaWxkcmVuOiBmdW5jdGlv
bihwcm9maWxlTm9kZSkKKyAgICB7CisgICAgICAgIHByb2ZpbGVOb2RlID0gcHJvZmlsZU5vZGUg
fHwgdGhpcy5wcm9maWxlTm9kZTsKKyAgICAgICAgLy8gSW4gYm90dG9tIHVwIG1vZGUsIG91ciBw
YXJlbnRzIGFyZSBvdXIgY2hpbGRyZW4gc2luY2Ugd2UgZGlzcGxheSBhbiBpbnZlcnRlZCB0cmVl
LgorICAgICAgICAvLyBIb3dldmVyLCB3ZSBkb24ndCB3YW50IHRvIHNob3cgdGhlIHZlcnkgdG9w
IHBhcmVudCBzaW5jZSBpdCBpcyByZWR1bmRhbnQuCisgICAgICAgIHJldHVybiAhIShwcm9maWxl
Tm9kZS5wYXJlbnQgJiYgcHJvZmlsZU5vZGUucGFyZW50LnBhcmVudCk7CisgICAgfQorfQorCitX
ZWJJbnNwZWN0b3IuTGVnYWN5Qm90dG9tVXBQcm9maWxlRGF0YUdyaWROb2RlLnByb3RvdHlwZS5f
X3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuTGVnYWN5UHJvZmlsZURhdGFHcmlkTm9kZS5wcm90b3R5
cGU7CisKK1dlYkluc3BlY3Rvci5MZWdhY3lCb3R0b21VcFByb2ZpbGVEYXRhR3JpZFRyZWUgPSBm
dW5jdGlvbihwcm9maWxlTm9kZSkKK3sKKyAgICBXZWJJbnNwZWN0b3IuTGVnYWN5UHJvZmlsZURh
dGFHcmlkVHJlZS5jYWxsKHRoaXMsIHByb2ZpbGVOb2RlKTsKKworICAgIC8vIEl0ZXJhdGUgZWFj
aCBub2RlIGluIHByZS1vcmRlci4KKyAgICB2YXIgcHJvZmlsZU5vZGVVSURzID0gMDsKKyAgICB2
YXIgcHJvZmlsZU5vZGVHcm91cHMgPSBbW10sIFtwcm9maWxlTm9kZV1dOworICAgIHZhciB2aXNp
dGVkUHJvZmlsZU5vZGVzRm9yQ2FsbFVJRCA9IHt9OworCisgICAgdGhpcy5fcmVtYWluaW5nTm9k
ZUluZm9zID0gW107CisKKyAgICBmb3IgKHZhciBwcm9maWxlTm9kZUdyb3VwSW5kZXggPSAwOyBw
cm9maWxlTm9kZUdyb3VwSW5kZXggPCBwcm9maWxlTm9kZUdyb3Vwcy5sZW5ndGg7ICsrcHJvZmls
ZU5vZGVHcm91cEluZGV4KSB7CisgICAgICAgIHZhciBwYXJlbnRQcm9maWxlTm9kZXMgPSBwcm9m
aWxlTm9kZUdyb3Vwc1twcm9maWxlTm9kZUdyb3VwSW5kZXhdOworICAgICAgICB2YXIgcHJvZmls
ZU5vZGVzID0gcHJvZmlsZU5vZGVHcm91cHNbKytwcm9maWxlTm9kZUdyb3VwSW5kZXhdOworICAg
ICAgICB2YXIgY291bnQgPSBwcm9maWxlTm9kZXMubGVuZ3RoOworCisgICAgICAgIGZvciAodmFy
IGluZGV4ID0gMDsgaW5kZXggPCBjb3VudDsgKytpbmRleCkgeworICAgICAgICAgICAgdmFyIHBy
b2ZpbGVOb2RlID0gcHJvZmlsZU5vZGVzW2luZGV4XTsKKworICAgICAgICAgICAgaWYgKCFwcm9m
aWxlTm9kZS5VSUQpCisgICAgICAgICAgICAgICAgcHJvZmlsZU5vZGUuVUlEID0gKytwcm9maWxl
Tm9kZVVJRHM7CisKKyAgICAgICAgICAgIGlmIChwcm9maWxlTm9kZS5oZWFkICYmIHByb2ZpbGVO
b2RlICE9PSBwcm9maWxlTm9kZS5oZWFkKSB7CisgICAgICAgICAgICAgICAgLy8gVGhlIHRvdGFs
IHRpbWUgb2YgdGhpcyBhbmNlc3RvciBpcyBhY2NvdW50ZWQgZm9yIGlmIHdlJ3JlIGluIGFueSBm
b3JtIG9mIHJlY3Vyc2l2ZSBjeWNsZS4KKyAgICAgICAgICAgICAgICB2YXIgdmlzaXRlZE5vZGVz
ID0gdmlzaXRlZFByb2ZpbGVOb2Rlc0ZvckNhbGxVSURbcHJvZmlsZU5vZGUuY2FsbFVJRF07Cisg
ICAgICAgICAgICAgICAgdmFyIHRvdGFsVGltZUFjY291bnRlZEZvciA9IGZhbHNlOworCisgICAg
ICAgICAgICAgICAgaWYgKCF2aXNpdGVkTm9kZXMpIHsKKyAgICAgICAgICAgICAgICAgICAgdmlz
aXRlZE5vZGVzID0ge307CisgICAgICAgICAgICAgICAgICAgIHZpc2l0ZWRQcm9maWxlTm9kZXNG
b3JDYWxsVUlEW3Byb2ZpbGVOb2RlLmNhbGxVSURdID0gdmlzaXRlZE5vZGVzOworICAgICAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIC8vIFRoZSB0b3RhbCB0aW1lIGZv
ciB0aGlzIG5vZGUgaGFzIGFscmVhZHkgYmVlbiBhY2NvdW50ZWQgZm9yIGlmZiBvbmUgb2YgaXQn
cyBwYXJlbnRzIGhhcyBhbHJlYWR5IGJlZW4gdmlzaXRlZC4KKyAgICAgICAgICAgICAgICAgICAg
Ly8gV2UgY2FuIGRvIHRoaXMgY2hlY2sgaW4gdGhpcyBzdHlsZSBiZWNhdXNlIHdlIGFyZSB0cmF2
ZXJzaW5nIHRoZSB0cmVlIGluIHByZS1vcmRlci4KKyAgICAgICAgICAgICAgICAgICAgdmFyIHBh
cmVudENvdW50ID0gcGFyZW50UHJvZmlsZU5vZGVzLmxlbmd0aDsKKyAgICAgICAgICAgICAgICAg
ICAgZm9yICh2YXIgcGFyZW50SW5kZXggPSAwOyBwYXJlbnRJbmRleCA8IHBhcmVudENvdW50OyAr
K3BhcmVudEluZGV4KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmlzaXRlZE5vZGVz
W3BhcmVudFByb2ZpbGVOb2Rlc1twYXJlbnRJbmRleF0uVUlEXSkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRvdGFsVGltZUFjY291bnRlZEZvciA9IHRydWU7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICB2aXNp
dGVkTm9kZXNbcHJvZmlsZU5vZGUuVUlEXSA9IHRydWU7CisKKyAgICAgICAgICAgICAgICB0aGlz
Ll9yZW1haW5pbmdOb2RlSW5mb3MucHVzaCh7IGFuY2VzdG9yOnByb2ZpbGVOb2RlLCBmb2N1c05v
ZGU6cHJvZmlsZU5vZGUsIHRvdGFsVGltZUFjY291bnRlZEZvcjp0b3RhbFRpbWVBY2NvdW50ZWRG
b3IgfSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciBjaGlsZHJlbiA9IHByb2Zp
bGVOb2RlLmNoaWxkcmVuOworICAgICAgICAgICAgaWYgKGNoaWxkcmVuLmxlbmd0aCkgeworICAg
ICAgICAgICAgICAgIHByb2ZpbGVOb2RlR3JvdXBzLnB1c2gocGFyZW50UHJvZmlsZU5vZGVzLmNv
bmNhdChbcHJvZmlsZU5vZGVdKSk7CisgICAgICAgICAgICAgICAgcHJvZmlsZU5vZGVHcm91cHMu
cHVzaChjaGlsZHJlbik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAv
LyBQb3B1bGF0ZSB0aGUgdG9wIGxldmVsIG5vZGVzLgorICAgIFdlYkluc3BlY3Rvci5MZWdhY3lC
b3R0b21VcFByb2ZpbGVEYXRhR3JpZE5vZGUucHJvdG90eXBlLl9wb3B1bGF0ZS5jYWxsKHRoaXMp
OworCisgICAgcmV0dXJuIHRoaXM7Cit9CisKK1dlYkluc3BlY3Rvci5MZWdhY3lCb3R0b21VcFBy
b2ZpbGVEYXRhR3JpZFRyZWUucHJvdG90eXBlID0geworICAgIC8vIFdoZW4gZm9jdXNpbmcsIHdl
IGtlZXAgdGhlIGVudGlyZSBjYWxsc3RhY2sgdXAgdG8gdGhpcyBhbmNlc3Rvci4KKyAgICBmb2N1
czogZnVuY3Rpb24ocHJvZmlsZURhdGFHcmlkTm9kZSkKKyAgICB7CisgICAgICAgIGlmICghcHJv
ZmlsZURhdGFHcmlkTm9kZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLl9z
YXZlKCk7CisKKyAgICAgICAgdmFyIGN1cnJlbnROb2RlID0gcHJvZmlsZURhdGFHcmlkTm9kZTsK
KyAgICAgICAgdmFyIGZvY3VzTm9kZSA9IHByb2ZpbGVEYXRhR3JpZE5vZGU7CisKKyAgICAgICAg
d2hpbGUgKGN1cnJlbnROb2RlLnBhcmVudCAmJiAoY3VycmVudE5vZGUgaW5zdGFuY2VvZiBXZWJJ
bnNwZWN0b3IuTGVnYWN5UHJvZmlsZURhdGFHcmlkTm9kZSkpIHsKKyAgICAgICAgICAgIGN1cnJl
bnROb2RlLl90YWtlUHJvcGVydGllc0Zyb21Qcm9maWxlRGF0YUdyaWROb2RlKHByb2ZpbGVEYXRh
R3JpZE5vZGUpOworCisgICAgICAgICAgICBmb2N1c05vZGUgPSBjdXJyZW50Tm9kZTsKKyAgICAg
ICAgICAgIGN1cnJlbnROb2RlID0gY3VycmVudE5vZGUucGFyZW50OworCisgICAgICAgICAgICBp
ZiAoY3VycmVudE5vZGUgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuTGVnYWN5UHJvZmlsZURhdGFH
cmlkTm9kZSkKKyAgICAgICAgICAgICAgICBjdXJyZW50Tm9kZS5fa2VlcE9ubHlDaGlsZChmb2N1
c05vZGUpOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5jaGlsZHJlbiA9IFtmb2N1c05vZGVd
OworICAgICAgICB0aGlzLnRvdGFsVGltZSA9IHByb2ZpbGVEYXRhR3JpZE5vZGUudG90YWxUaW1l
OworICAgIH0sCisKKyAgICBleGNsdWRlOiBmdW5jdGlvbihwcm9maWxlRGF0YUdyaWROb2RlKQor
ICAgIHsKKyAgICAgICAgaWYgKCFwcm9maWxlRGF0YUdyaWROb2RlKQorICAgICAgICAgICAgcmV0
dXJuOworCisgICAgICAgIHRoaXMuX3NhdmUoKTsKKworICAgICAgICB2YXIgZXhjbHVkZWRDYWxs
VUlEID0gcHJvZmlsZURhdGFHcmlkTm9kZS5jYWxsVUlEOworICAgICAgICB2YXIgZXhjbHVkZWRU
b3BMZXZlbENoaWxkID0gdGhpcy5jaGlsZHJlbkJ5Q2FsbFVJRFtleGNsdWRlZENhbGxVSURdOwor
CisgICAgICAgIC8vIElmIHdlIGhhdmUgYSB0b3AgbGV2ZWwgbm9kZSB0aGF0IGlzIGV4Y2x1ZGVk
LCBnZXQgcmlkIG9mIGl0IGNvbXBsZXRlbHkgKG5vdCBrZWVwaW5nIGNoaWxkcmVuKSwKKyAgICAg
ICAgLy8gc2luY2UgYm90dG9tIHVwIGRhdGEgcmVsaWVzIGVudGlyZWx5IG9uIHRoZSByb290IG5v
ZGUuCisgICAgICAgIGlmIChleGNsdWRlZFRvcExldmVsQ2hpbGQpCisgICAgICAgICAgICB0aGlz
LmNoaWxkcmVuLnJlbW92ZShleGNsdWRlZFRvcExldmVsQ2hpbGQpOworCisgICAgICAgIHZhciBj
aGlsZHJlbiA9IHRoaXMuY2hpbGRyZW47CisgICAgICAgIHZhciBjb3VudCA9IGNoaWxkcmVuLmxl
bmd0aDsKKworICAgICAgICBmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwgY291bnQ7ICsraW5k
ZXgpCisgICAgICAgICAgICBjaGlsZHJlbltpbmRleF0uX2V4Y2x1ZGUoZXhjbHVkZWRDYWxsVUlE
KTsKKworICAgICAgICBpZiAodGhpcy5sYXN0Q29tcGFyYXRvcikKKyAgICAgICAgICAgIHRoaXMu
c29ydCh0aGlzLmxhc3RDb21wYXJhdG9yLCB0cnVlKTsKKyAgICB9LAorCisgICAgX3NoYXJlZFBv
cHVsYXRlOiBXZWJJbnNwZWN0b3IuTGVnYWN5Qm90dG9tVXBQcm9maWxlRGF0YUdyaWROb2RlLnBy
b3RvdHlwZS5fc2hhcmVkUG9wdWxhdGUKK30KKworV2ViSW5zcGVjdG9yLkxlZ2FjeUJvdHRvbVVw
UHJvZmlsZURhdGFHcmlkVHJlZS5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLkxl
Z2FjeVByb2ZpbGVEYXRhR3JpZFRyZWUucHJvdG90eXBlOworCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9MZWdhY3lKYXZhU2NyaXB0UHJvZmlsZU9iamVj
dC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0xlZ2FjeUphdmFTY3Jp
cHRQcm9maWxlT2JqZWN0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFhZmFlNDE5YTNmYWY5NTQyODEzNTg4NjY2
ZTdkZWNmMzNkZjJkNDIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9MZWdhY3lKYXZhU2NyaXB0UHJvZmlsZU9iamVjdC5qcwpAQCAtMCwwICsx
LDM1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworV2ViSW5zcGVjdG9yLkxlZ2FjeUphdmFTY3JpcHRQcm9maWxl
T2JqZWN0ID0gZnVuY3Rpb24odGl0bGUsIGlkLCByZWNvcmRpbmcpCit7CisgICAgV2ViSW5zcGVj
dG9yLkxlZ2FjeVByb2ZpbGVPYmplY3QuY2FsbCh0aGlzLCBXZWJJbnNwZWN0b3IuTGVnYWN5SmF2
YVNjcmlwdFByb2ZpbGVUeXBlLlR5cGVJZCwgdGl0bGUsIGlkLCByZWNvcmRpbmcpOworfTsKKwor
V2ViSW5zcGVjdG9yLkxlZ2FjeUphdmFTY3JpcHRQcm9maWxlT2JqZWN0LnByb3RvdHlwZSA9IHsK
KyAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkxlZ2FjeUphdmFTY3JpcHRQcm9maWxlT2Jq
ZWN0Cit9OworCitXZWJJbnNwZWN0b3IuTGVnYWN5SmF2YVNjcmlwdFByb2ZpbGVPYmplY3QucHJv
dG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5MZWdhY3lQcm9maWxlT2JqZWN0LnByb3Rv
dHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0xl
Z2FjeUphdmFTY3JpcHRQcm9maWxlVHlwZS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL0xlZ2FjeUphdmFTY3JpcHRQcm9maWxlVHlwZS5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xOGY4
MzYxNTVlYzY3ZDAyMGI4Yzc5ZDZlYjNmMDI3N2E3MzBjMTRhCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTGVnYWN5SmF2YVNjcmlwdFByb2Zp
bGVUeXBlLmpzCkBAIC0wLDAgKzEsOTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIw
MTMgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCitXZWJJbnNwZWN0b3IuTGVnYWN5SmF2YVNjcmlwdFByb2Zp
bGVUeXBlID0gZnVuY3Rpb24oKQoreworICAgIFdlYkluc3BlY3Rvci5MZWdhY3lQcm9maWxlVHlw
ZS5jYWxsKHRoaXMsIFdlYkluc3BlY3Rvci5MZWdhY3lKYXZhU2NyaXB0UHJvZmlsZVR5cGUuVHlw
ZUlkLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNvbGxlY3QgSmF2YVNjcmlwdCBQcm9maWxlIikp
OworICAgIHRoaXMuX3JlY29yZGluZyA9IGZhbHNlOworICAgIFdlYkluc3BlY3Rvci5MZWdhY3lK
YXZhU2NyaXB0UHJvZmlsZVR5cGUuaW5zdGFuY2UgPSB0aGlzOworfQorCitXZWJJbnNwZWN0b3Iu
TGVnYWN5SmF2YVNjcmlwdFByb2ZpbGVUeXBlLlR5cGVJZCA9ICJDUFUiOworCitXZWJJbnNwZWN0
b3IuTGVnYWN5SmF2YVNjcmlwdFByb2ZpbGVUeXBlLnByb3RvdHlwZSA9IHsKKyAgICBnZXQgYnV0
dG9uVG9vbHRpcCgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fcmVjb3JkaW5nID8gV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJTdG9wIEphdmFTY3JpcHQgcHJvZmlsaW5nLiIpIDogV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJTdGFydCBKYXZhU2NyaXB0IHByb2ZpbGluZy4iKTsKKyAgICB9LAor
CisgICAgYnV0dG9uQ2xpY2tlZDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMu
X3JlY29yZGluZykgeworICAgICAgICAgICAgdGhpcy5zdG9wUmVjb3JkaW5nUHJvZmlsZSgpOwor
ICAgICAgICAgICAgV2ViSW5zcGVjdG9yLm5ldHdvcmtNYW5hZ2VyLmVuYWJsZVJlc291cmNlVHJh
Y2tpbmcoKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5uZXR3
b3JrTWFuYWdlci5kaXNhYmxlUmVzb3VyY2VUcmFja2luZygpOworICAgICAgICAgICAgdGhpcy5z
dGFydFJlY29yZGluZ1Byb2ZpbGUoKTsKKyAgICAgICAgfQorICAgIH0sCisKKyAgICBnZXQgdHJl
ZUl0ZW1UaXRsZSgpCisgICAgeworICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJKQVZBU0NSSVBUIFBST0ZJTEVTIik7CisgICAgfSwKKworICAgIGdldCBkZXNjcmlwdGlvbigp
CisgICAgeworICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJKYXZhU2NyaXB0
IHByb2ZpbGVzIHNob3cgd2hlcmUgdGhlIGV4ZWN1dGlvbiB0aW1lIGlzIHNwZW50IGluIHlvdXIg
cGFnZSdzIEphdmFTY3JpcHQgZnVuY3Rpb25zLiIpOworICAgIH0sCisKKyAgICBpc1JlY29yZGlu
Z1Byb2ZpbGU6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9yZWNvcmRp
bmc7CisgICAgfSwKKworICAgIHN0YXJ0UmVjb3JkaW5nUHJvZmlsZTogZnVuY3Rpb24oKQorICAg
IHsKKyAgICAgICAgdGhpcy5fcmVjb3JkaW5nID0gdHJ1ZTsKKyAgICAgICAgUHJvZmlsZXJBZ2Vu
dC5zdGFydCgpOworICAgIH0sCisKKyAgICBzdG9wUmVjb3JkaW5nUHJvZmlsZTogZnVuY3Rpb24o
KQorICAgIHsKKyAgICAgICAgdGhpcy5fcmVjb3JkaW5nID0gZmFsc2U7CisgICAgICAgIFByb2Zp
bGVyQWdlbnQuc3RvcCgpOworICAgIH0sCisKKyAgICBzZXRSZWNvcmRpbmdQcm9maWxlOiBmdW5j
dGlvbihpc1Byb2ZpbGluZykKKyAgICB7CisgICAgICAgIHRoaXMuX3JlY29yZGluZyA9IGlzUHJv
ZmlsaW5nOworICAgIH0sCisKKyAgICBjcmVhdGVTaWRlYmFyVHJlZUVsZW1lbnRGb3JQcm9maWxl
OiBmdW5jdGlvbihwcm9maWxlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0
b3IuTGVnYWN5UHJvZmlsZVNpZGViYXJUcmVlRWxlbWVudChwcm9maWxlLCBXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIlByb2ZpbGUgJWQiKSwgInByb2ZpbGUtc2lkZWJhci10cmVlLWl0ZW0iKTsKKyAg
ICB9LAorCisgICAgY3JlYXRlVmlldzogZnVuY3Rpb24ocHJvZmlsZSkKKyAgICB7CisgICAgICAg
IHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkxlZ2FjeUphdmFTY3JpcHRQcm9maWxlVmlldyhwcm9m
aWxlKTsKKyAgICB9Cit9CisKK1dlYkluc3BlY3Rvci5MZWdhY3lKYXZhU2NyaXB0UHJvZmlsZVR5
cGUucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5MZWdhY3lQcm9maWxlVHlwZS5w
cm90b3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9MZWdhY3lKYXZhU2NyaXB0UHJvZmlsZVZpZXcuY3NzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvTGVnYWN5SmF2YVNjcmlwdFByb2ZpbGVWaWV3LmNzcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li45NDg4OWM1NTYzMWMyOGY0MzkyZWFiNDFhZmVhN2JjN2JjOWRkMzgwCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTGVnYWN5SmF2YVNjcmlw
dFByb2ZpbGVWaWV3LmNzcwpAQCAtMCwwICsxLDc2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLmNvbnRlbnQt
dmlldy5wcm9maWxlLXZpZXcgPiAuZGF0YS1ncmlkIHsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7
CisgICAgdG9wOiAwOworICAgIGxlZnQ6IDA7CisgICAgcmlnaHQ6IDA7CisgICAgYm90dG9tOiAw
OworICAgIG91dGxpbmU6IG5vbmU7CisgICAgYm9yZGVyOiBub25lOworfQorCisucHJvZmlsZS12
aWV3IC5kYXRhLWdyaWQgdGguYXZlcmFnZS1jb2x1bW4geworICAgIHRleHQtYWxpZ246IGNlbnRl
cjsKK30KKworLnByb2ZpbGUtdmlldyAuZGF0YS1ncmlkIHRkLmF2ZXJhZ2UtY29sdW1uIHsKKyAg
ICB0ZXh0LWFsaWduOiByaWdodDsKK30KKworLnByb2ZpbGUtdmlldyAuZGF0YS1ncmlkIHRoLnNl
bGYtY29sdW1uIHsKKyAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Cit9CisKKy5wcm9maWxlLXZpZXcg
LmRhdGEtZ3JpZCB0ZC5zZWxmLWNvbHVtbiB7CisgICAgdGV4dC1hbGlnbjogcmlnaHQ7Cit9CisK
Ky5wcm9maWxlLXZpZXcgLmRhdGEtZ3JpZCB0aC50b3RhbC1jb2x1bW4geworICAgIHRleHQtYWxp
Z246IGNlbnRlcjsKK30KKworLnByb2ZpbGUtdmlldyAuZGF0YS1ncmlkIHRkLnRvdGFsLWNvbHVt
biB7CisgICAgdGV4dC1hbGlnbjogcmlnaHQ7Cit9CisKKy5wcm9maWxlLXZpZXcgLmRhdGEtZ3Jp
ZCAuY2FsbHMtY29sdW1uIHsKKyAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Cit9CisKKy5wcm9maWxl
LW5vZGUtZmlsZSB7CisgICAgZmxvYXQ6IHJpZ2h0OworICAgIGNvbG9yOiBncmF5OworICAgIG1h
cmdpbi10b3A6IC0xcHg7Cit9CisKKy5kYXRhLWdyaWQgdHIuc2VsZWN0ZWQgLnByb2ZpbGUtbm9k
ZS1maWxlIHsKKyAgICBjb2xvcjogcmdiKDMzJSwgMzMlLCAzMyUpOworfQorCisuZGF0YS1ncmlk
OmZvY3VzIHRyLnNlbGVjdGVkIC5wcm9maWxlLW5vZGUtZmlsZSB7CisgICAgY29sb3I6IHdoaXRl
OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTGVn
YWN5SmF2YVNjcmlwdFByb2ZpbGVWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvTGVnYWN5SmF2YVNjcmlwdFByb2ZpbGVWaWV3LmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYyNzNm
YmE3YTA1NDUxNDgzMTZjNTU3MWRlOGU3M2Y3M2EzMDk1Y2QKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9MZWdhY3lKYXZhU2NyaXB0UHJvZmls
ZVZpZXcuanMKQEAgLTAsMCArMSw0NTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIw
MTMgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCitXZWJJbnNwZWN0b3IuTGVnYWN5SmF2YVNjcmlwdFByb2Zp
bGVWaWV3ID0gZnVuY3Rpb24ocHJvZmlsZSkKK3sKKyAgICBjb25zb2xlLmFzc2VydChwcm9maWxl
IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkxlZ2FjeUphdmFTY3JpcHRQcm9maWxlT2JqZWN0KTsK
KworICAgIFdlYkluc3BlY3Rvci5MZWdhY3lQcm9maWxlVmlldy5jYWxsKHRoaXMsIHByb2ZpbGUs
ICJqYXZhc2NyaXB0LXByb2ZpbGVyLXNob3ctdGltZS1hcy1wZXJjZW50Iik7CisKKyAgICB0aGlz
Ll9zaG93VHJlZUJvdHRvbVVwU2V0dGluZyA9IG5ldyBXZWJJbnNwZWN0b3IuU2V0dGluZygiamF2
YXNjcmlwdC1wcm9maWxlci1zaG93LXRyZWUtYm90dG9tLXVwIiwgdHJ1ZSk7CisKKyAgICB0aGlz
Ll9zaG93VHJlZUJvdHRvbVVwTmF2aWdhdGlvbkl0ZW0gPSBuZXcgV2ViSW5zcGVjdG9yLkFjdGl2
YXRlQnV0dG9uTmF2aWdhdGlvbkl0ZW0oInNob3ctdHJlZS1ib3R0b20tdXAtbmF2aWdhdGlvbi1p
dGVtIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJJbnZlcnQgY2FsbCB0cmVlIiksIFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiTm9ybWFsIGNhbGwgdHJlZSIpLCAiSW1hZ2VzL0JvdHRvbVVwVHJlZS5z
dmciLCAxNiwgMTYpOworICAgIHRoaXMuX3Nob3dUcmVlQm90dG9tVXBOYXZpZ2F0aW9uSXRlbS5h
ZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5CdXR0b25OYXZpZ2F0aW9uSXRlbS5FdmVudC5D
bGlja2VkLCB0aGlzLl90b2dnbGVCb3R0b21VcFZpZXcsIHRoaXMpOworICAgIHRoaXMuX3Nob3dU
cmVlQm90dG9tVXBOYXZpZ2F0aW9uSXRlbS5hY3RpdmF0ZWQgPSB0aGlzLl9zaG93VHJlZUJvdHRv
bVVwU2V0dGluZy52YWx1ZTsKKworICAgIHRoaXMuX3ZpZXdUeXBlID0gbmV3IFdlYkluc3BlY3Rv
ci5TZXR0aW5nKCJqYXZhc2NyaXB0LXByb2ZpbGVyLXZpZXciLCBXZWJJbnNwZWN0b3IuTGVnYWN5
SmF2YVNjcmlwdFByb2ZpbGVWaWV3Ll9UeXBlSGVhdnkpOworfQorCitXZWJJbnNwZWN0b3IuTGVn
YWN5SmF2YVNjcmlwdFByb2ZpbGVWaWV3Ll9UeXBlVHJlZSA9ICJUcmVlIjsKK1dlYkluc3BlY3Rv
ci5MZWdhY3lKYXZhU2NyaXB0UHJvZmlsZVZpZXcuX1R5cGVIZWF2eSA9ICJIZWF2eSI7CisKK1dl
Ykluc3BlY3Rvci5MZWdhY3lKYXZhU2NyaXB0UHJvZmlsZVZpZXcucHJvdG90eXBlID0geworICAg
IGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuTGVnYWN5SmF2YVNjcmlwdFByb2ZpbGVWaWV3LAor
CisgICAgdXBkYXRlTGF5b3V0OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBpZiAodGhpcy5k
YXRhR3JpZCkKKyAgICAgICAgICAgIHRoaXMuZGF0YUdyaWQudXBkYXRlTGF5b3V0KCk7CisgICAg
fSwKKworICAgIGdldCByZWNvcmRpbmdUaXRsZSgpCisgICAgeworICAgICAgICByZXR1cm4gV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJSZWNvcmRpbmcgSmF2YVNjcmlwdCBQcm9maWxlXHUyMDI2Iik7
CisgICAgfSwKKworICAgIGRpc3BsYXlQcm9maWxlOiBmdW5jdGlvbigpCisgICAgeworICAgICAg
ICB2YXIgY29sdW1ucyA9IHsgInNlbGYiOiB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IlNlbGYiKSwgd2lkdGg6ICI3MnB4Iiwgc29ydDogImRlc2NlbmRpbmciLCBzb3J0YWJsZTogdHJ1
ZSB9LAorICAgICAgICAgICAgICAgICAgICAgICAgInRvdGFsIjogeyB0aXRsZTogV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJUb3RhbCIpLCB3aWR0aDogIjcycHgiLCBzb3J0YWJsZTogdHJ1ZSB9LAor
ICAgICAgICAgICAgICAgICAgICAgICAgImF2ZXJhZ2UiOiB7IHRpdGxlOiBXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIkF2ZXJhZ2UiKSwgd2lkdGg6ICI3MnB4Iiwgc29ydGFibGU6IHRydWUgfSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICJjYWxscyI6IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0
cmluZygiQ2FsbHMiKSwgd2lkdGg6ICI1NHB4Iiwgc29ydGFibGU6IHRydWUgfSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICJmdW5jdGlvbiI6IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiRnVuY3Rpb24iKSwgZGlzY2xvc3VyZTogdHJ1ZSwgc29ydGFibGU6IHRydWUgfSB9OworCisg
ICAgICAgIHRoaXMuZGF0YUdyaWQgPSBuZXcgV2ViSW5zcGVjdG9yLkRhdGFHcmlkKGNvbHVtbnMp
OworICAgICAgICB0aGlzLmRhdGFHcmlkLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRh
dGFHcmlkLkV2ZW50LlNvcnRDaGFuZ2VkLCB0aGlzLl9zb3J0RGF0YSwgdGhpcyk7CisKKyAgICAg
ICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuZGF0YUdyaWQuZWxlbWVudCk7CisgICAg
ICAgIHRoaXMuZGF0YUdyaWQudXBkYXRlTGF5b3V0KCk7CisKKyAgICAgICAgZnVuY3Rpb24gcHJv
ZmlsZUNhbGxiYWNrKGVycm9yLCBwcm9maWxlKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAo
ZXJyb3IpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBpZiAoIXByb2Zp
bGUuaGVhZCkgeworICAgICAgICAgICAgICAgIC8vIFByb2ZpbGluZyB3YXMgdGVudGF0aXZlbHkg
dGVybWluYXRlZCB3aXRoIHRoZSAiQ2xlYXIgYWxsIHByb2ZpbGVzLiIgYnV0dG9uLgorICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHRoaXMucHJvZmls
ZS5oZWFkID0gcHJvZmlsZS5oZWFkOworICAgICAgICAgICAgdGhpcy5fYXNzaWduUGFyZW50c0lu
UHJvZmlsZSgpOworICAgICAgICAgICAgdGhpcy5fY2hhbmdlVmlldygpOworICAgICAgICB9CisK
KyAgICAgICAgLy8gQ09NUEFUSUJJTElUWSAoaU9TIDYpOiBnZXRDUFVQcm9maWxlIHVzZSB0byBi
ZSBjYWxsZWQgZ2V0UHJvZmlsZS4KKyAgICAgICAgaWYgKFByb2ZpbGVyQWdlbnQuZ2V0UHJvZmls
ZSkKKyAgICAgICAgICAgIFByb2ZpbGVyQWdlbnQuZ2V0UHJvZmlsZSh0aGlzLnByb2ZpbGUudHlw
ZSwgdGhpcy5wcm9maWxlLmlkLCBwcm9maWxlQ2FsbGJhY2suYmluZCh0aGlzKSk7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIFByb2ZpbGVyQWdlbnQuZ2V0Q1BVUHJvZmlsZSh0aGlzLnByb2Zp
bGUuaWQsIHByb2ZpbGVDYWxsYmFjay5iaW5kKHRoaXMpKTsKKyAgICB9LAorCisgICAgZ2V0IG5h
dmlnYXRpb25JdGVtcygpCisgICAgeworICAgICAgICByZXR1cm4gW3RoaXMuX3Nob3dUcmVlQm90
dG9tVXBOYXZpZ2F0aW9uSXRlbSwgdGhpcy5zaG93VGltZUFzUGVyY2VudE5hdmlnYXRpb25JdGVt
XTsKKyAgICB9LAorCisgICAgZ2V0IGJvdHRvbVVwUHJvZmlsZURhdGFHcmlkVHJlZSgpCisgICAg
eworICAgICAgICBpZiAoIXRoaXMuX2JvdHRvbVVwUHJvZmlsZURhdGFHcmlkVHJlZSkKKyAgICAg
ICAgICAgIHRoaXMuX2JvdHRvbVVwUHJvZmlsZURhdGFHcmlkVHJlZSA9IG5ldyBXZWJJbnNwZWN0
b3IuTGVnYWN5Qm90dG9tVXBQcm9maWxlRGF0YUdyaWRUcmVlKHRoaXMucHJvZmlsZS5oZWFkKTsK
KyAgICAgICAgcmV0dXJuIHRoaXMuX2JvdHRvbVVwUHJvZmlsZURhdGFHcmlkVHJlZTsKKyAgICB9
LAorCisgICAgZ2V0IHRvcERvd25Qcm9maWxlRGF0YUdyaWRUcmVlKCkKKyAgICB7CisgICAgICAg
IGlmICghdGhpcy5fdG9wRG93blByb2ZpbGVEYXRhR3JpZFRyZWUpCisgICAgICAgICAgICB0aGlz
Ll90b3BEb3duUHJvZmlsZURhdGFHcmlkVHJlZSA9IG5ldyBXZWJJbnNwZWN0b3IuTGVnYWN5VG9w
RG93blByb2ZpbGVEYXRhR3JpZFRyZWUodGhpcy5wcm9maWxlLmhlYWQpOworICAgICAgICByZXR1
cm4gdGhpcy5fdG9wRG93blByb2ZpbGVEYXRhR3JpZFRyZWU7CisgICAgfSwKKworICAgIHdpbGxI
aWRlOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0aGlzLl9jdXJyZW50U2VhcmNoUmVzdWx0
SW5kZXggPSAtMTsKKyAgICB9LAorCisgICAgcmVmcmVzaDogZnVuY3Rpb24oKQorICAgIHsKKyAg
ICAgICAgdmFyIHNlbGVjdGVkUHJvZmlsZU5vZGUgPSB0aGlzLmRhdGFHcmlkLnNlbGVjdGVkTm9k
ZSA/IHRoaXMuZGF0YUdyaWQuc2VsZWN0ZWROb2RlLnByb2ZpbGVOb2RlIDogbnVsbDsKKworICAg
ICAgICB0aGlzLmRhdGFHcmlkLnJlbW92ZUNoaWxkcmVuKCk7CisKKyAgICAgICAgdmFyIGNoaWxk
cmVuID0gdGhpcy5wcm9maWxlRGF0YUdyaWRUcmVlLmNoaWxkcmVuOworICAgICAgICB2YXIgY291
bnQgPSBjaGlsZHJlbi5sZW5ndGg7CisKKyAgICAgICAgZm9yICh2YXIgaW5kZXggPSAwOyBpbmRl
eCA8IGNvdW50OyArK2luZGV4KQorICAgICAgICAgICAgdGhpcy5kYXRhR3JpZC5hcHBlbmRDaGls
ZChjaGlsZHJlbltpbmRleF0pOworCisgICAgICAgIGlmIChzZWxlY3RlZFByb2ZpbGVOb2RlKQor
ICAgICAgICAgICAgc2VsZWN0ZWRQcm9maWxlTm9kZS5zZWxlY3RlZCA9IHRydWU7CisgICAgfSwK
KworICAgIHJlZnJlc2hWaXNpYmxlRGF0YTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdmFy
IGNoaWxkID0gdGhpcy5kYXRhR3JpZC5jaGlsZHJlblswXTsKKyAgICAgICAgd2hpbGUgKGNoaWxk
KSB7CisgICAgICAgICAgICBjaGlsZC5yZWZyZXNoKHRoaXMuc2hvd1RpbWVBc1BlcmNlbnQudmFs
dWUpOworICAgICAgICAgICAgY2hpbGQgPSBjaGlsZC50cmF2ZXJzZU5leHROb2RlKGZhbHNlLCBu
dWxsLCB0cnVlKTsKKyAgICAgICAgfQorICAgIH0sCisKKyAgICBzZWFyY2hDYW5jZWxlZDogZnVu
Y3Rpb24oKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX3NlYXJjaFJlc3VsdHMpIHsKKyAgICAg
ICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fc2VhcmNoUmVzdWx0cy5sZW5ndGg7ICsr
aSkgeworICAgICAgICAgICAgICAgIHZhciBwcm9maWxlTm9kZSA9IHRoaXMuX3NlYXJjaFJlc3Vs
dHNbaV0ucHJvZmlsZU5vZGU7CisKKyAgICAgICAgICAgICAgICBkZWxldGUgcHJvZmlsZU5vZGUu
X3NlYXJjaE1hdGNoZWRTZWxmQ29sdW1uOworICAgICAgICAgICAgICAgIGRlbGV0ZSBwcm9maWxl
Tm9kZS5fc2VhcmNoTWF0Y2hlZFRvdGFsQ29sdW1uOworICAgICAgICAgICAgICAgIGRlbGV0ZSBw
cm9maWxlTm9kZS5fc2VhcmNoTWF0Y2hlZENhbGxzQ29sdW1uOworICAgICAgICAgICAgICAgIGRl
bGV0ZSBwcm9maWxlTm9kZS5fc2VhcmNoTWF0Y2hlZEZ1bmN0aW9uQ29sdW1uOworCisgICAgICAg
ICAgICAgICAgcHJvZmlsZU5vZGUucmVmcmVzaCgpOworICAgICAgICAgICAgfQorICAgICAgICB9
CisKKyAgICAgICAgZGVsZXRlIHRoaXMuX3NlYXJjaEZpbmlzaGVkQ2FsbGJhY2s7CisgICAgICAg
IHRoaXMuX2N1cnJlbnRTZWFyY2hSZXN1bHRJbmRleCA9IC0xOworICAgICAgICB0aGlzLl9zZWFy
Y2hSZXN1bHRzID0gW107CisgICAgfSwKKworICAgIHBlcmZvcm1TZWFyY2g6IGZ1bmN0aW9uKHF1
ZXJ5LCBmaW5pc2hlZENhbGxiYWNrKQorICAgIHsKKyAgICAgICAgLy8gQ2FsbCBzZWFyY2hDYW5j
ZWxlZCBzaW5jZSBpdCB3aWxsIHJlc2V0IGV2ZXJ5dGhpbmcgd2UgbmVlZCBiZWZvcmUgZG9pbmcg
YSBuZXcgc2VhcmNoLgorICAgICAgICB0aGlzLnNlYXJjaENhbmNlbGVkKCk7CisKKyAgICAgICAg
cXVlcnkgPSBxdWVyeS50cmltKCk7CisKKyAgICAgICAgaWYgKCFxdWVyeS5sZW5ndGgpCisgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5fc2VhcmNoRmluaXNoZWRDYWxsYmFjayA9
IGZpbmlzaGVkQ2FsbGJhY2s7CisKKyAgICAgICAgdmFyIGdyZWF0ZXJUaGFuID0gcXVlcnkuY2hh
ckF0KDApID09PSAiPiI7CisgICAgICAgIHZhciBsZXNzVGhhbiA9IHF1ZXJ5LmNoYXJBdCgwKSA9
PT0gIjwiOworICAgICAgICB2YXIgZXF1YWxUbyA9IChxdWVyeS5jaGFyQXQoMCkgPT09ICI9IiB8
fCAoKGdyZWF0ZXJUaGFuIHx8IGxlc3NUaGFuKSAmJiBxdWVyeS5jaGFyQXQoMSkgPT09ICI9Iikp
OworICAgICAgICB2YXIgcGVyY2VudFVuaXRzID0gKHF1ZXJ5Lmxhc3RJbmRleE9mKCIlIikgPT09
IChxdWVyeS5sZW5ndGggLSAxKSk7CisgICAgICAgIHZhciBtaWxsaXNlY29uZHNVbml0cyA9IChx
dWVyeS5sZW5ndGggPiAyICYmIHF1ZXJ5Lmxhc3RJbmRleE9mKCJtcyIpID09PSAocXVlcnkubGVu
Z3RoIC0gMikpOworICAgICAgICB2YXIgc2Vjb25kc1VuaXRzID0gKCFtaWxsaXNlY29uZHNVbml0
cyAmJiBxdWVyeS5sYXN0SW5kZXhPZigicyIpID09PSAocXVlcnkubGVuZ3RoIC0gMSkpOworCisg
ICAgICAgIHZhciBxdWVyeU51bWJlciA9IHBhcnNlRmxvYXQocXVlcnkpOworICAgICAgICBpZiAo
Z3JlYXRlclRoYW4gfHwgbGVzc1RoYW4gfHwgZXF1YWxUbykgeworICAgICAgICAgICAgaWYgKGVx
dWFsVG8gJiYgKGdyZWF0ZXJUaGFuIHx8IGxlc3NUaGFuKSkKKyAgICAgICAgICAgICAgICBxdWVy
eU51bWJlciA9IHBhcnNlRmxvYXQocXVlcnkuc3Vic3RyaW5nKDIpKTsKKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICBxdWVyeU51bWJlciA9IHBhcnNlRmxvYXQocXVlcnkuc3Vic3Ry
aW5nKDEpKTsKKyAgICAgICAgfQorCisgICAgICAgIHZhciBxdWVyeU51bWJlck1pbGxpc2Vjb25k
cyA9IChzZWNvbmRzVW5pdHMgPyAocXVlcnlOdW1iZXIgKiAxMDAwKSA6IHF1ZXJ5TnVtYmVyKTsK
KworICAgICAgICAvLyBNYWtlIGVxdWFsVG8gaW1wbGljaXRseSB0cnVlIGlmIGl0IHdhc24ndCBz
cGVjaWZpZWQgdGhlcmUgaXMgbm8gb3RoZXIgb3BlcmF0b3IuCisgICAgICAgIGlmICghaXNOYU4o
cXVlcnlOdW1iZXIpICYmICEoZ3JlYXRlclRoYW4gfHwgbGVzc1RoYW4pKQorICAgICAgICAgICAg
ZXF1YWxUbyA9IHRydWU7CisKKyAgICAgICAgZnVuY3Rpb24gbWF0Y2hlc1F1ZXJ5KC8qUHJvZmls
ZURhdGFHcmlkTm9kZSovIHByb2ZpbGVEYXRhR3JpZE5vZGUpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGRlbGV0ZSBwcm9maWxlRGF0YUdyaWROb2RlLl9zZWFyY2hNYXRjaGVkU2VsZkNvbHVtbjsK
KyAgICAgICAgICAgIGRlbGV0ZSBwcm9maWxlRGF0YUdyaWROb2RlLl9zZWFyY2hNYXRjaGVkVG90
YWxDb2x1bW47CisgICAgICAgICAgICBkZWxldGUgcHJvZmlsZURhdGFHcmlkTm9kZS5fc2VhcmNo
TWF0Y2hlZEF2ZXJhZ2VDb2x1bW47CisgICAgICAgICAgICBkZWxldGUgcHJvZmlsZURhdGFHcmlk
Tm9kZS5fc2VhcmNoTWF0Y2hlZENhbGxzQ29sdW1uOworICAgICAgICAgICAgZGVsZXRlIHByb2Zp
bGVEYXRhR3JpZE5vZGUuX3NlYXJjaE1hdGNoZWRGdW5jdGlvbkNvbHVtbjsKKworICAgICAgICAg
ICAgaWYgKHBlcmNlbnRVbml0cykgeworICAgICAgICAgICAgICAgIGlmIChsZXNzVGhhbikgewor
ICAgICAgICAgICAgICAgICAgICBpZiAocHJvZmlsZURhdGFHcmlkTm9kZS5zZWxmUGVyY2VudCA8
IHF1ZXJ5TnVtYmVyKQorICAgICAgICAgICAgICAgICAgICAgICAgcHJvZmlsZURhdGFHcmlkTm9k
ZS5fc2VhcmNoTWF0Y2hlZFNlbGZDb2x1bW4gPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBp
ZiAocHJvZmlsZURhdGFHcmlkTm9kZS50b3RhbFBlcmNlbnQgPCBxdWVyeU51bWJlcikKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHByb2ZpbGVEYXRhR3JpZE5vZGUuX3NlYXJjaE1hdGNoZWRUb3Rh
bENvbHVtbiA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGlmIChwcm9maWxlRGF0YUdyaWRO
b2RlLmF2ZXJhZ2VQZXJjZW50IDwgcXVlcnlOdW1iZXJNaWxsaXNlY29uZHMpCisgICAgICAgICAg
ICAgICAgICAgICAgICBwcm9maWxlRGF0YUdyaWROb2RlLl9zZWFyY2hNYXRjaGVkQXZlcmFnZUNv
bHVtbiA9IHRydWU7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChncmVhdGVyVGhhbikgewor
ICAgICAgICAgICAgICAgICAgICBpZiAocHJvZmlsZURhdGFHcmlkTm9kZS5zZWxmUGVyY2VudCA+
IHF1ZXJ5TnVtYmVyKQorICAgICAgICAgICAgICAgICAgICAgICAgcHJvZmlsZURhdGFHcmlkTm9k
ZS5fc2VhcmNoTWF0Y2hlZFNlbGZDb2x1bW4gPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBp
ZiAocHJvZmlsZURhdGFHcmlkTm9kZS50b3RhbFBlcmNlbnQgPiBxdWVyeU51bWJlcikKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHByb2ZpbGVEYXRhR3JpZE5vZGUuX3NlYXJjaE1hdGNoZWRUb3Rh
bENvbHVtbiA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGlmIChwcm9maWxlRGF0YUdyaWRO
b2RlLmF2ZXJhZ2VQZXJjZW50IDwgcXVlcnlOdW1iZXJNaWxsaXNlY29uZHMpCisgICAgICAgICAg
ICAgICAgICAgICAgICBwcm9maWxlRGF0YUdyaWROb2RlLl9zZWFyY2hNYXRjaGVkQXZlcmFnZUNv
bHVtbiA9IHRydWU7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKGVx
dWFsVG8pIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHByb2ZpbGVEYXRhR3JpZE5vZGUuc2Vs
ZlBlcmNlbnQgPT0gcXVlcnlOdW1iZXIpCisgICAgICAgICAgICAgICAgICAgICAgICBwcm9maWxl
RGF0YUdyaWROb2RlLl9zZWFyY2hNYXRjaGVkU2VsZkNvbHVtbiA9IHRydWU7CisgICAgICAgICAg
ICAgICAgICAgIGlmIChwcm9maWxlRGF0YUdyaWROb2RlLnRvdGFsUGVyY2VudCA9PSBxdWVyeU51
bWJlcikKKyAgICAgICAgICAgICAgICAgICAgICAgIHByb2ZpbGVEYXRhR3JpZE5vZGUuX3NlYXJj
aE1hdGNoZWRUb3RhbENvbHVtbiA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGlmIChwcm9m
aWxlRGF0YUdyaWROb2RlLmF2ZXJhZ2VQZXJjZW50IDwgcXVlcnlOdW1iZXJNaWxsaXNlY29uZHMp
CisgICAgICAgICAgICAgICAgICAgICAgICBwcm9maWxlRGF0YUdyaWROb2RlLl9zZWFyY2hNYXRj
aGVkQXZlcmFnZUNvbHVtbiA9IHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
fSBlbHNlIGlmIChtaWxsaXNlY29uZHNVbml0cyB8fCBzZWNvbmRzVW5pdHMpIHsKKyAgICAgICAg
ICAgICAgICBpZiAobGVzc1RoYW4pIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHByb2ZpbGVE
YXRhR3JpZE5vZGUuc2VsZlRpbWUgPCBxdWVyeU51bWJlck1pbGxpc2Vjb25kcykKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHByb2ZpbGVEYXRhR3JpZE5vZGUuX3NlYXJjaE1hdGNoZWRTZWxmQ29s
dW1uID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHByb2ZpbGVEYXRhR3JpZE5vZGUu
dG90YWxUaW1lIDwgcXVlcnlOdW1iZXJNaWxsaXNlY29uZHMpCisgICAgICAgICAgICAgICAgICAg
ICAgICBwcm9maWxlRGF0YUdyaWROb2RlLl9zZWFyY2hNYXRjaGVkVG90YWxDb2x1bW4gPSB0cnVl
OworICAgICAgICAgICAgICAgICAgICBpZiAocHJvZmlsZURhdGFHcmlkTm9kZS5hdmVyYWdlVGlt
ZSA8IHF1ZXJ5TnVtYmVyTWlsbGlzZWNvbmRzKQorICAgICAgICAgICAgICAgICAgICAgICAgcHJv
ZmlsZURhdGFHcmlkTm9kZS5fc2VhcmNoTWF0Y2hlZEF2ZXJhZ2VDb2x1bW4gPSB0cnVlOworICAg
ICAgICAgICAgICAgIH0gZWxzZSBpZiAoZ3JlYXRlclRoYW4pIHsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKHByb2ZpbGVEYXRhR3JpZE5vZGUuc2VsZlRpbWUgPiBxdWVyeU51bWJlck1pbGxpc2Vj
b25kcykKKyAgICAgICAgICAgICAgICAgICAgICAgIHByb2ZpbGVEYXRhR3JpZE5vZGUuX3NlYXJj
aE1hdGNoZWRTZWxmQ29sdW1uID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHByb2Zp
bGVEYXRhR3JpZE5vZGUudG90YWxUaW1lID4gcXVlcnlOdW1iZXJNaWxsaXNlY29uZHMpCisgICAg
ICAgICAgICAgICAgICAgICAgICBwcm9maWxlRGF0YUdyaWROb2RlLl9zZWFyY2hNYXRjaGVkVG90
YWxDb2x1bW4gPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBpZiAocHJvZmlsZURhdGFHcmlk
Tm9kZS5hdmVyYWdlVGltZSA+IHF1ZXJ5TnVtYmVyTWlsbGlzZWNvbmRzKQorICAgICAgICAgICAg
ICAgICAgICAgICAgcHJvZmlsZURhdGFHcmlkTm9kZS5fc2VhcmNoTWF0Y2hlZEF2ZXJhZ2VDb2x1
bW4gPSB0cnVlOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChlcXVh
bFRvKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChwcm9maWxlRGF0YUdyaWROb2RlLnNlbGZU
aW1lID09IHF1ZXJ5TnVtYmVyTWlsbGlzZWNvbmRzKQorICAgICAgICAgICAgICAgICAgICAgICAg
cHJvZmlsZURhdGFHcmlkTm9kZS5fc2VhcmNoTWF0Y2hlZFNlbGZDb2x1bW4gPSB0cnVlOworICAg
ICAgICAgICAgICAgICAgICBpZiAocHJvZmlsZURhdGFHcmlkTm9kZS50b3RhbFRpbWUgPT0gcXVl
cnlOdW1iZXJNaWxsaXNlY29uZHMpCisgICAgICAgICAgICAgICAgICAgICAgICBwcm9maWxlRGF0
YUdyaWROb2RlLl9zZWFyY2hNYXRjaGVkVG90YWxDb2x1bW4gPSB0cnVlOworICAgICAgICAgICAg
ICAgICAgICBpZiAocHJvZmlsZURhdGFHcmlkTm9kZS5hdmVyYWdlVGltZSA9PSBxdWVyeU51bWJl
ck1pbGxpc2Vjb25kcykKKyAgICAgICAgICAgICAgICAgICAgICAgIHByb2ZpbGVEYXRhR3JpZE5v
ZGUuX3NlYXJjaE1hdGNoZWRBdmVyYWdlQ29sdW1uID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmIChlcXVhbFRvICYmIHBy
b2ZpbGVEYXRhR3JpZE5vZGUubnVtYmVyT2ZDYWxscyA9PSBxdWVyeU51bWJlcikKKyAgICAgICAg
ICAgICAgICAgICAgcHJvZmlsZURhdGFHcmlkTm9kZS5fc2VhcmNoTWF0Y2hlZENhbGxzQ29sdW1u
ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBpZiAoZ3JlYXRlclRoYW4gJiYgcHJvZmlsZURhdGFH
cmlkTm9kZS5udW1iZXJPZkNhbGxzID4gcXVlcnlOdW1iZXIpCisgICAgICAgICAgICAgICAgICAg
IHByb2ZpbGVEYXRhR3JpZE5vZGUuX3NlYXJjaE1hdGNoZWRDYWxsc0NvbHVtbiA9IHRydWU7Cisg
ICAgICAgICAgICAgICAgaWYgKGxlc3NUaGFuICYmIHByb2ZpbGVEYXRhR3JpZE5vZGUubnVtYmVy
T2ZDYWxscyA8IHF1ZXJ5TnVtYmVyKQorICAgICAgICAgICAgICAgICAgICBwcm9maWxlRGF0YUdy
aWROb2RlLl9zZWFyY2hNYXRjaGVkQ2FsbHNDb2x1bW4gPSB0cnVlOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBpZiAocHJvZmlsZURhdGFHcmlkTm9kZS5mdW5jdGlvbk5hbWUuaGFzU3Vi
c3RyaW5nKHF1ZXJ5LCB0cnVlKSB8fCBwcm9maWxlRGF0YUdyaWROb2RlLnVybC5oYXNTdWJzdHJp
bmcocXVlcnksIHRydWUpKQorICAgICAgICAgICAgICAgIHByb2ZpbGVEYXRhR3JpZE5vZGUuX3Nl
YXJjaE1hdGNoZWRGdW5jdGlvbkNvbHVtbiA9IHRydWU7CisKKyAgICAgICAgICAgIGlmIChwcm9m
aWxlRGF0YUdyaWROb2RlLl9zZWFyY2hNYXRjaGVkU2VsZkNvbHVtbiB8fAorICAgICAgICAgICAg
ICAgIHByb2ZpbGVEYXRhR3JpZE5vZGUuX3NlYXJjaE1hdGNoZWRUb3RhbENvbHVtbiB8fAorICAg
ICAgICAgICAgICAgIHByb2ZpbGVEYXRhR3JpZE5vZGUuX3NlYXJjaE1hdGNoZWRBdmVyYWdlQ29s
dW1uIHx8CisgICAgICAgICAgICAgICAgcHJvZmlsZURhdGFHcmlkTm9kZS5fc2VhcmNoTWF0Y2hl
ZENhbGxzQ29sdW1uIHx8CisgICAgICAgICAgICAgICAgcHJvZmlsZURhdGFHcmlkTm9kZS5fc2Vh
cmNoTWF0Y2hlZEZ1bmN0aW9uQ29sdW1uKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IHByb2ZpbGVEYXRhR3JpZE5vZGUucmVmcmVzaCgpOworICAgICAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IH0KKworICAgICAgICB2YXIgY3VycmVudCA9IHRoaXMucHJvZmlsZURhdGFHcmlkVHJlZS5jaGls
ZHJlblswXTsKKworICAgICAgICB3aGlsZSAoY3VycmVudCkgeworICAgICAgICAgICAgaWYgKG1h
dGNoZXNRdWVyeShjdXJyZW50KSkgeworICAgICAgICAgICAgICAgIHRoaXMuX3NlYXJjaFJlc3Vs
dHMucHVzaCh7IHByb2ZpbGVOb2RlOiBjdXJyZW50IH0pOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBjdXJyZW50ID0gY3VycmVudC50cmF2ZXJzZU5leHROb2RlKGZhbHNlLCBudWxsLCBm
YWxzZSk7CisgICAgICAgIH0KKworICAgICAgICBmaW5pc2hlZENhbGxiYWNrKHRoaXMsIHRoaXMu
X3NlYXJjaFJlc3VsdHMubGVuZ3RoKTsKKyAgICB9LAorCisgICAganVtcFRvRmlyc3RTZWFyY2hS
ZXN1bHQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5fc2VhcmNoUmVzdWx0
cyB8fCAhdGhpcy5fc2VhcmNoUmVzdWx0cy5sZW5ndGgpCisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIHRoaXMuX2N1cnJlbnRTZWFyY2hSZXN1bHRJbmRleCA9IDA7CisgICAgICAgIHRoaXMu
X2p1bXBUb1NlYXJjaFJlc3VsdCh0aGlzLl9jdXJyZW50U2VhcmNoUmVzdWx0SW5kZXgpOworICAg
IH0sCisKKyAgICBqdW1wVG9MYXN0U2VhcmNoUmVzdWx0OiBmdW5jdGlvbigpCisgICAgeworICAg
ICAgICBpZiAoIXRoaXMuX3NlYXJjaFJlc3VsdHMgfHwgIXRoaXMuX3NlYXJjaFJlc3VsdHMubGVu
Z3RoKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB0aGlzLl9jdXJyZW50U2VhcmNoUmVz
dWx0SW5kZXggPSAodGhpcy5fc2VhcmNoUmVzdWx0cy5sZW5ndGggLSAxKTsKKyAgICAgICAgdGhp
cy5fanVtcFRvU2VhcmNoUmVzdWx0KHRoaXMuX2N1cnJlbnRTZWFyY2hSZXN1bHRJbmRleCk7Cisg
ICAgfSwKKworICAgIGp1bXBUb05leHRTZWFyY2hSZXN1bHQ6IGZ1bmN0aW9uKCkKKyAgICB7Cisg
ICAgICAgIGlmICghdGhpcy5fc2VhcmNoUmVzdWx0cyB8fCAhdGhpcy5fc2VhcmNoUmVzdWx0cy5s
ZW5ndGgpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGlmICgrK3RoaXMuX2N1cnJlbnRT
ZWFyY2hSZXN1bHRJbmRleCA+PSB0aGlzLl9zZWFyY2hSZXN1bHRzLmxlbmd0aCkKKyAgICAgICAg
ICAgIHRoaXMuX2N1cnJlbnRTZWFyY2hSZXN1bHRJbmRleCA9IDA7CisgICAgICAgIHRoaXMuX2p1
bXBUb1NlYXJjaFJlc3VsdCh0aGlzLl9jdXJyZW50U2VhcmNoUmVzdWx0SW5kZXgpOworICAgIH0s
CisKKyAgICBqdW1wVG9QcmV2aW91c1NlYXJjaFJlc3VsdDogZnVuY3Rpb24oKQorICAgIHsKKyAg
ICAgICAgaWYgKCF0aGlzLl9zZWFyY2hSZXN1bHRzIHx8ICF0aGlzLl9zZWFyY2hSZXN1bHRzLmxl
bmd0aCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKC0tdGhpcy5fY3VycmVudFNl
YXJjaFJlc3VsdEluZGV4IDwgMCkKKyAgICAgICAgICAgIHRoaXMuX2N1cnJlbnRTZWFyY2hSZXN1
bHRJbmRleCA9ICh0aGlzLl9zZWFyY2hSZXN1bHRzLmxlbmd0aCAtIDEpOworICAgICAgICB0aGlz
Ll9qdW1wVG9TZWFyY2hSZXN1bHQodGhpcy5fY3VycmVudFNlYXJjaFJlc3VsdEluZGV4KTsKKyAg
ICB9LAorCisgICAgc2hvd2luZ0ZpcnN0U2VhcmNoUmVzdWx0OiBmdW5jdGlvbigpCisgICAgewor
ICAgICAgICByZXR1cm4gKHRoaXMuX2N1cnJlbnRTZWFyY2hSZXN1bHRJbmRleCA9PT0gMCk7Cisg
ICAgfSwKKworICAgIHNob3dpbmdMYXN0U2VhcmNoUmVzdWx0OiBmdW5jdGlvbigpCisgICAgewor
ICAgICAgICByZXR1cm4gKHRoaXMuX3NlYXJjaFJlc3VsdHMgJiYgdGhpcy5fY3VycmVudFNlYXJj
aFJlc3VsdEluZGV4ID09PSAodGhpcy5fc2VhcmNoUmVzdWx0cy5sZW5ndGggLSAxKSk7CisgICAg
fSwKKworICAgIF9qdW1wVG9TZWFyY2hSZXN1bHQ6IGZ1bmN0aW9uKGluZGV4KQorICAgIHsKKyAg
ICAgICAgdmFyIHNlYXJjaFJlc3VsdCA9IHRoaXMuX3NlYXJjaFJlc3VsdHNbaW5kZXhdOworICAg
ICAgICBpZiAoIXNlYXJjaFJlc3VsdCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB2
YXIgcHJvZmlsZU5vZGUgPSBzZWFyY2hSZXN1bHQucHJvZmlsZU5vZGU7CisgICAgICAgIHByb2Zp
bGVOb2RlLnJldmVhbEFuZFNlbGVjdCgpOworICAgIH0sCisKKyAgICBfdG9nZ2xlQm90dG9tVXBW
aWV3OiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIHRoaXMuX3Nob3dUcmVlQm90dG9t
VXBTZXR0aW5nLnZhbHVlID0gIXRoaXMuX3Nob3dUcmVlQm90dG9tVXBTZXR0aW5nLnZhbHVlOwor
ICAgICAgICB0aGlzLl9zaG93VHJlZUJvdHRvbVVwTmF2aWdhdGlvbkl0ZW0uYWN0aXZhdGVkID0g
dGhpcy5fc2hvd1RyZWVCb3R0b21VcFNldHRpbmcudmFsdWU7CisgICAgICAgIHRoaXMuX2NoYW5n
ZVZpZXcoKTsKKyAgICB9LAorCisgICAgX2NoYW5nZVZpZXc6IGZ1bmN0aW9uKCkKKyAgICB7Cisg
ICAgICAgIGlmICghdGhpcy5wcm9maWxlKQorICAgICAgICAgICAgcmV0dXJuOworICAgIAorICAg
ICAgICBpZiAoIXRoaXMuX3Nob3dUcmVlQm90dG9tVXBTZXR0aW5nLnZhbHVlKSB7CisgICAgICAg
ICAgICB0aGlzLnByb2ZpbGVEYXRhR3JpZFRyZWUgPSB0aGlzLnRvcERvd25Qcm9maWxlRGF0YUdy
aWRUcmVlOworICAgICAgICAgICAgdGhpcy5fc29ydFByb2ZpbGUoKTsKKyAgICAgICAgICAgIHRo
aXMuX3ZpZXdUeXBlLnZhbHVlID0gV2ViSW5zcGVjdG9yLkxlZ2FjeUphdmFTY3JpcHRQcm9maWxl
Vmlldy5fVHlwZVRyZWU7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0aGlzLnByb2Zp
bGVEYXRhR3JpZFRyZWUgPSB0aGlzLmJvdHRvbVVwUHJvZmlsZURhdGFHcmlkVHJlZTsKKyAgICAg
ICAgICAgIHRoaXMuX3NvcnRQcm9maWxlKCk7CisgICAgICAgICAgICB0aGlzLl92aWV3VHlwZS52
YWx1ZSA9IFdlYkluc3BlY3Rvci5MZWdhY3lKYXZhU2NyaXB0UHJvZmlsZVZpZXcuX1R5cGVIZWF2
eTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghdGhpcy5jdXJyZW50UXVlcnkgfHwgIXRoaXMu
X3NlYXJjaEZpbmlzaGVkQ2FsbGJhY2sgfHwgIXRoaXMuX3NlYXJjaFJlc3VsdHMpCisgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgLy8gVGhlIGN1cnJlbnQgc2VhcmNoIG5lZWRzIHRvIGJl
IHBlcmZvcm1lZCBhZ2Fpbi4gRmlyc3QgbmVnYXRlIG91dCBwcmV2aW91cyBtYXRjaAorICAgICAg
ICAvLyBjb3VudCBieSBjYWxsaW5nIHRoZSBzZWFyY2ggZmluaXNoZWQgY2FsbGJhY2sgd2l0aCBh
IG5lZ2F0aXZlIG51bWJlciBvZiBtYXRjaGVzLgorICAgICAgICAvLyBUaGVuIHBlcmZvcm0gdGhl
IHNlYXJjaCBhZ2FpbiB0aGUgd2l0aCBzYW1lIHF1ZXJ5IGFuZCBjYWxsYmFjay4KKyAgICAgICAg
dGhpcy5fc2VhcmNoRmluaXNoZWRDYWxsYmFjayh0aGlzLCAtdGhpcy5fc2VhcmNoUmVzdWx0cy5s
ZW5ndGgpOworICAgICAgICB0aGlzLnBlcmZvcm1TZWFyY2godGhpcy5jdXJyZW50UXVlcnksIHRo
aXMuX3NlYXJjaEZpbmlzaGVkQ2FsbGJhY2spOworICAgIH0sCisKKyAgICB0b2dnbGVUaW1lRGlz
cGxheTogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICBXZWJJbnNwZWN0b3IuTGVnYWN5
UHJvZmlsZVZpZXcucHJvdG90eXBlLnRvZ2dsZVRpbWVEaXNwbGF5LmNhbGwodGhpcywgZXZlbnQp
OworICAgICAgICB0aGlzLnNob3dUaW1lQXNQZXJjZW50LnZhbHVlID0gIXRoaXMuc2hvd1RpbWVB
c1BlcmNlbnQudmFsdWU7CisgICAgICAgIHRoaXMucmVmcmVzaFZpc2libGVEYXRhKCk7CisgICAg
fSwKKworICAgIF9mb2N1c0NsaWNrZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAg
aWYgKCF0aGlzLmRhdGFHcmlkLnNlbGVjdGVkTm9kZSkKKyAgICAgICAgICAgIHJldHVybjsKKwor
ICAgICAgICB0aGlzLnByb2ZpbGVEYXRhR3JpZFRyZWUuZm9jdXModGhpcy5kYXRhR3JpZC5zZWxl
Y3RlZE5vZGUpOworICAgICAgICB0aGlzLnJlZnJlc2goKTsKKyAgICAgICAgdGhpcy5yZWZyZXNo
VmlzaWJsZURhdGEoKTsKKyAgICB9LAorCisgICAgX2V4Y2x1ZGVDbGlja2VkOiBmdW5jdGlvbihl
dmVudCkKKyAgICB7CisgICAgICAgIHZhciBzZWxlY3RlZE5vZGUgPSB0aGlzLmRhdGFHcmlkLnNl
bGVjdGVkTm9kZTsKKworICAgICAgICBpZiAoIXNlbGVjdGVkTm9kZSkKKyAgICAgICAgICAgIHJl
dHVybjsKKworICAgICAgICBzZWxlY3RlZE5vZGUuZGVzZWxlY3QoKTsKKworICAgICAgICB0aGlz
LnByb2ZpbGVEYXRhR3JpZFRyZWUuZXhjbHVkZShzZWxlY3RlZE5vZGUpOworICAgICAgICB0aGlz
LnJlZnJlc2goKTsKKyAgICAgICAgdGhpcy5yZWZyZXNoVmlzaWJsZURhdGEoKTsKKyAgICB9LAor
CisgICAgX3Jlc2V0Q2xpY2tlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICB0aGlz
LnByb2ZpbGVEYXRhR3JpZFRyZWUucmVzdG9yZSgpOworICAgICAgICB0aGlzLnJlZnJlc2goKTsK
KyAgICAgICAgdGhpcy5yZWZyZXNoVmlzaWJsZURhdGEoKTsKKyAgICB9LAorCisgICAgX3NvcnRE
YXRhOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIHRoaXMuX3NvcnRQcm9maWxlKHRo
aXMucHJvZmlsZSk7CisgICAgfSwKKworICAgIF9zb3J0UHJvZmlsZTogZnVuY3Rpb24oKQorICAg
IHsKKyAgICAgICAgdmFyIHNvcnRBc2NlbmRpbmcgPSB0aGlzLmRhdGFHcmlkLnNvcnRPcmRlciA9
PT0gImFzY2VuZGluZyI7CisgICAgICAgIHZhciBzb3J0Q29sdW1uSWRlbnRpZmllciA9IHRoaXMu
ZGF0YUdyaWQuc29ydENvbHVtbklkZW50aWZpZXI7CisgICAgICAgIHZhciBzb3J0UHJvcGVydHkg
PSB7CisgICAgICAgICAgICAgICAgImF2ZXJhZ2UiOiAiYXZlcmFnZVRpbWUiLAorICAgICAgICAg
ICAgICAgICJzZWxmIjogInNlbGZUaW1lIiwKKyAgICAgICAgICAgICAgICAidG90YWwiOiAidG90
YWxUaW1lIiwKKyAgICAgICAgICAgICAgICAiY2FsbHMiOiAibnVtYmVyT2ZDYWxscyIsCisgICAg
ICAgICAgICAgICAgImZ1bmN0aW9uIjogImZ1bmN0aW9uTmFtZSIKKyAgICAgICAgICAgIH1bc29y
dENvbHVtbklkZW50aWZpZXJdOworCisgICAgICAgIHRoaXMucHJvZmlsZURhdGFHcmlkVHJlZS5z
b3J0KFdlYkluc3BlY3Rvci5MZWdhY3lQcm9maWxlRGF0YUdyaWRUcmVlLnByb3BlcnR5Q29tcGFy
YXRvcihzb3J0UHJvcGVydHksIHNvcnRBc2NlbmRpbmcpKTsKKworICAgICAgICB0aGlzLnJlZnJl
c2goKTsKKyAgICB9LAorCisgICAgX2Fzc2lnblBhcmVudHNJblByb2ZpbGU6IGZ1bmN0aW9uKCkK
KyAgICB7CisgICAgICAgIHZhciBoZWFkID0gdGhpcy5wcm9maWxlLmhlYWQ7CisgICAgICAgIGhl
YWQucGFyZW50ID0gbnVsbDsKKyAgICAgICAgaGVhZC5oZWFkID0gbnVsbDsKKyAgICAgICAgdmFy
IG5vZGVzVG9UcmF2ZXJzZSA9IFsgeyBwYXJlbnQ6IGhlYWQsIGNoaWxkcmVuOiBoZWFkLmNoaWxk
cmVuIH0gXTsKKyAgICAgICAgd2hpbGUgKG5vZGVzVG9UcmF2ZXJzZS5sZW5ndGggPiAwKSB7Cisg
ICAgICAgICAgICB2YXIgcGFpciA9IG5vZGVzVG9UcmF2ZXJzZS5zaGlmdCgpOworICAgICAgICAg
ICAgdmFyIHBhcmVudCA9IHBhaXIucGFyZW50OworICAgICAgICAgICAgdmFyIGNoaWxkcmVuID0g
cGFpci5jaGlsZHJlbjsKKyAgICAgICAgICAgIHZhciBsZW5ndGggPSBjaGlsZHJlbi5sZW5ndGg7
CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CisgICAgICAg
ICAgICAgICAgY2hpbGRyZW5baV0uaGVhZCA9IGhlYWQ7CisgICAgICAgICAgICAgICAgY2hpbGRy
ZW5baV0ucGFyZW50ID0gcGFyZW50OworICAgICAgICAgICAgICAgIGlmIChjaGlsZHJlbltpXS5j
aGlsZHJlbi5sZW5ndGggPiAwKQorICAgICAgICAgICAgICAgICAgICBub2Rlc1RvVHJhdmVyc2Uu
cHVzaCh7IHBhcmVudDogY2hpbGRyZW5baV0sIGNoaWxkcmVuOiBjaGlsZHJlbltpXS5jaGlsZHJl
biB9KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKworV2ViSW5zcGVjdG9y
LkxlZ2FjeUphdmFTY3JpcHRQcm9maWxlVmlldy5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5z
cGVjdG9yLkxlZ2FjeVByb2ZpbGVWaWV3LnByb3RvdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0xlZ2FjeVByb2ZpbGVEYXRhR3JpZFRyZWUuanMg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9MZWdhY3lQcm9maWxlRGF0YUdy
aWRUcmVlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM5MDBjZmU4YjYyMGMyMjA0YTYxOGU0NTQ5N2U2ZjhjZjc4
MjlkZjIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9MZWdhY3lQcm9maWxlRGF0YUdyaWRUcmVlLmpzCkBAIC0wLDAgKzEsMzk5IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDA5IDI4MCBOb3J0aCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1dlYkluc3BlY3Rv
ci5MZWdhY3lQcm9maWxlRGF0YUdyaWROb2RlID0gZnVuY3Rpb24ocHJvZmlsZU5vZGUsIG93bmlu
Z1RyZWUsIGhhc0NoaWxkcmVuLCBzaG93VGltZUFzUGVyY2VudCkKK3sKKyAgICB0aGlzLnByb2Zp
bGVOb2RlID0gcHJvZmlsZU5vZGU7CisKKyAgICBXZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlLmNh
bGwodGhpcywgbnVsbCwgaGFzQ2hpbGRyZW4pOworCisgICAgdGhpcy5hZGRFdmVudExpc3RlbmVy
KCJwb3B1bGF0ZSIsIHRoaXMuX3BvcHVsYXRlLCB0aGlzKTsKKworICAgIHRoaXMudHJlZSA9IG93
bmluZ1RyZWU7CisKKyAgICB0aGlzLmNoaWxkcmVuQnlDYWxsVUlEID0ge307CisgICAgdGhpcy5s
YXN0Q29tcGFyYXRvciA9IG51bGw7CisKKyAgICB0aGlzLmNhbGxVSUQgPSBwcm9maWxlTm9kZS5j
YWxsVUlEOworICAgIHRoaXMuc2VsZlRpbWUgPSBwcm9maWxlTm9kZS5zZWxmVGltZTsKKyAgICB0
aGlzLnRvdGFsVGltZSA9IHByb2ZpbGVOb2RlLnRvdGFsVGltZTsKKyAgICB0aGlzLmZ1bmN0aW9u
TmFtZSA9IHByb2ZpbGVOb2RlLmZ1bmN0aW9uTmFtZTsKKyAgICB0aGlzLm51bWJlck9mQ2FsbHMg
PSBwcm9maWxlTm9kZS5udW1iZXJPZkNhbGxzOworICAgIHRoaXMudXJsID0gcHJvZmlsZU5vZGUu
dXJsOworCisgICAgdGhpcy5fc2hvd1RpbWVBc1BlcmNlbnQgPSBzaG93VGltZUFzUGVyY2VudCB8
fCBmYWxzZTsKK30KKworV2ViSW5zcGVjdG9yLkxlZ2FjeVByb2ZpbGVEYXRhR3JpZE5vZGUucHJv
dG90eXBlID0geworICAgIGdldCBkYXRhKCkKKyAgICB7CisgICAgICAgIGZ1bmN0aW9uIGZvcm1h
dE1pbGxpc2Vjb25kcyh0aW1lKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gTnVtYmVy
LnNlY29uZHNUb1N0cmluZyh0aW1lIC8gMTAwMCwgdHJ1ZSk7CisgICAgICAgIH0KKworICAgICAg
ICB2YXIgZGF0YSA9IHt9OworCisgICAgICAgIGRhdGFbImZ1bmN0aW9uIl0gPSB0aGlzLmZ1bmN0
aW9uTmFtZTsKKyAgICAgICAgZGF0YVsiY2FsbHMiXSA9IHRoaXMubnVtYmVyT2ZDYWxsczsKKwor
ICAgICAgICBpZiAodGhpcy5fc2hvd1RpbWVBc1BlcmNlbnQpIHsKKyAgICAgICAgICAgIGRhdGFb
InNlbGYiXSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiJS4yZiAlJSIpLmZvcm1hdCh0aGlzLnNl
bGZQZXJjZW50KTsKKyAgICAgICAgICAgIGRhdGFbInRvdGFsIl0gPSBXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIiUuMmYgJSUiKS5mb3JtYXQodGhpcy50b3RhbFBlcmNlbnQpOworICAgICAgICAgICAg
ZGF0YVsiYXZlcmFnZSJdID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCIlLjJmICUlIikuZm9ybWF0
KHRoaXMuYXZlcmFnZVBlcmNlbnQpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZGF0
YVsic2VsZiJdID0gZm9ybWF0TWlsbGlzZWNvbmRzKHRoaXMuc2VsZlRpbWUpOworICAgICAgICAg
ICAgZGF0YVsidG90YWwiXSA9IGZvcm1hdE1pbGxpc2Vjb25kcyh0aGlzLnRvdGFsVGltZSk7Cisg
ICAgICAgICAgICBkYXRhWyJhdmVyYWdlIl0gPSBmb3JtYXRNaWxsaXNlY29uZHModGhpcy5hdmVy
YWdlVGltZSk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gZGF0YTsKKyAgICB9LAorCisg
ICAgZ2V0IHNob3dUaW1lQXNQZXJjZW50KCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9z
aG93VGltZUFzUGVyY2VudDsKKyAgICB9LAorCisgICAgcmVmcmVzaDogZnVuY3Rpb24oc2hvd1Rp
bWVBc1BlcmNlbnQpCisgICAgeworICAgICAgICB0aGlzLl9zaG93VGltZUFzUGVyY2VudCA9IHNo
b3dUaW1lQXNQZXJjZW50OworCisgICAgICAgIFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUucHJv
dG90eXBlLnJlZnJlc2guY2FsbCh0aGlzKTsKKyAgICB9LAorCisgICAgY3JlYXRlQ2VsbDogZnVu
Y3Rpb24oY29sdW1uSWRlbnRpZmllcikKKyAgICB7CisgICAgICAgIHZhciBjZWxsID0gV2ViSW5z
cGVjdG9yLkRhdGFHcmlkTm9kZS5wcm90b3R5cGUuY3JlYXRlQ2VsbC5jYWxsKHRoaXMsIGNvbHVt
bklkZW50aWZpZXIpOworCisgICAgICAgIGlmIChjb2x1bW5JZGVudGlmaWVyID09PSAic2VsZiIg
JiYgdGhpcy5fc2VhcmNoTWF0Y2hlZFNlbGZDb2x1bW4pCisgICAgICAgICAgICBjZWxsLmNsYXNz
TGlzdC5hZGQoImhpZ2hsaWdodCIpOworICAgICAgICBlbHNlIGlmIChjb2x1bW5JZGVudGlmaWVy
ID09PSAidG90YWwiICYmIHRoaXMuX3NlYXJjaE1hdGNoZWRUb3RhbENvbHVtbikKKyAgICAgICAg
ICAgIGNlbGwuY2xhc3NMaXN0LmFkZCgiaGlnaGxpZ2h0Iik7CisgICAgICAgIGVsc2UgaWYgKGNv
bHVtbklkZW50aWZpZXIgPT09ICJhdmVyYWdlIiAmJiB0aGlzLl9zZWFyY2hNYXRjaGVkQXZlcmFn
ZUNvbHVtbikKKyAgICAgICAgICAgIGNlbGwuY2xhc3NMaXN0LmFkZCgiaGlnaGxpZ2h0Iik7Cisg
ICAgICAgIGVsc2UgaWYgKGNvbHVtbklkZW50aWZpZXIgPT09ICJjYWxscyIgJiYgdGhpcy5fc2Vh
cmNoTWF0Y2hlZENhbGxzQ29sdW1uKQorICAgICAgICAgICAgY2VsbC5jbGFzc0xpc3QuYWRkKCJo
aWdobGlnaHQiKTsKKworICAgICAgICBpZiAoY29sdW1uSWRlbnRpZmllciAhPT0gImZ1bmN0aW9u
IikKKyAgICAgICAgICAgIHJldHVybiBjZWxsOworCisgICAgICAgIGlmICh0aGlzLnByb2ZpbGVO
b2RlLl9zZWFyY2hNYXRjaGVkRnVuY3Rpb25Db2x1bW4pCisgICAgICAgICAgICBjZWxsLmNsYXNz
TGlzdC5hZGQoImhpZ2hsaWdodCIpOworCisgICAgICAgIGlmICh0aGlzLnByb2ZpbGVOb2RlLnVy
bCkgeworICAgICAgICAgICAgLy8gRklYTUUoNjI3MjUpOiBwcm9maWxlTm9kZSBzaG91bGQgcmVm
ZXJlbmNlIGEgZGVidWdnZXIgbG9jYXRpb24uCisgICAgICAgICAgICB2YXIgbGluZU51bWJlciA9
IHRoaXMucHJvZmlsZU5vZGUubGluZU51bWJlciA/IHRoaXMucHJvZmlsZU5vZGUubGluZU51bWJl
ciAtIDEgOiAwOworICAgICAgICAgICAgdmFyIHVybEVsZW1lbnQgPSB0aGlzLl9saW5raWZ5TG9j
YXRpb24odGhpcy5wcm9maWxlTm9kZS51cmwsIGxpbmVOdW1iZXIsICJwcm9maWxlLW5vZGUtZmls
ZSIpOworICAgICAgICAgICAgdXJsRWxlbWVudC5zdHlsZS5tYXhXaWR0aCA9ICI3NSUiOworICAg
ICAgICAgICAgY2VsbC5pbnNlcnRCZWZvcmUodXJsRWxlbWVudCwgY2VsbC5maXJzdENoaWxkKTsK
KyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBjZWxsOworICAgIH0sCisKKyAgICBzb3J0OiBm
dW5jdGlvbihjb21wYXJhdG9yLCBmb3JjZSkKKyAgICB7CisgICAgICAgIHZhciBncmlkTm9kZUdy
b3VwcyA9IFtbdGhpc11dOworCisgICAgICAgIGZvciAodmFyIGdyaWROb2RlR3JvdXBJbmRleCA9
IDA7IGdyaWROb2RlR3JvdXBJbmRleCA8IGdyaWROb2RlR3JvdXBzLmxlbmd0aDsgKytncmlkTm9k
ZUdyb3VwSW5kZXgpIHsKKyAgICAgICAgICAgIHZhciBncmlkTm9kZXMgPSBncmlkTm9kZUdyb3Vw
c1tncmlkTm9kZUdyb3VwSW5kZXhdOworICAgICAgICAgICAgdmFyIGNvdW50ID0gZ3JpZE5vZGVz
Lmxlbmd0aDsKKworICAgICAgICAgICAgZm9yICh2YXIgaW5kZXggPSAwOyBpbmRleCA8IGNvdW50
OyArK2luZGV4KSB7CisgICAgICAgICAgICAgICAgdmFyIGdyaWROb2RlID0gZ3JpZE5vZGVzW2lu
ZGV4XTsKKworICAgICAgICAgICAgICAgIC8vIElmIHRoZSBncmlkIG5vZGUgaXMgY29sbGFwc2Vk
LCB0aGVuIGRvbid0IHNvcnQgY2hpbGRyZW4gKHNhdmUgb3BlcmF0aW9uIGZvciBsYXRlcikuCisg
ICAgICAgICAgICAgICAgLy8gSWYgdGhlIGdyaWQgbm9kZSBoYXMgdGhlIHNhbWUgc29ydGluZyBh
cyBwcmV2aW91c2x5LCB0aGVuIHRoZXJlIGlzIG5vIHBvaW50IGluIHNvcnRpbmcgaXQgYWdhaW4u
CisgICAgICAgICAgICAgICAgaWYgKCFmb3JjZSAmJiAoIWdyaWROb2RlLmV4cGFuZGVkIHx8IGdy
aWROb2RlLmxhc3RDb21wYXJhdG9yID09PSBjb21wYXJhdG9yKSkgeworICAgICAgICAgICAgICAg
ICAgICBpZiAoZ3JpZE5vZGUuY2hpbGRyZW4ubGVuZ3RoKQorICAgICAgICAgICAgICAgICAgICAg
ICAgZ3JpZE5vZGUuc2hvdWxkUmVmcmVzaENoaWxkcmVuID0gdHJ1ZTsKKyAgICAgICAgICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgZ3Jp
ZE5vZGUubGFzdENvbXBhcmF0b3IgPSBjb21wYXJhdG9yOworCisgICAgICAgICAgICAgICAgdmFy
IGNoaWxkcmVuID0gZ3JpZE5vZGUuY2hpbGRyZW47CisgICAgICAgICAgICAgICAgdmFyIGNoaWxk
Q291bnQgPSBjaGlsZHJlbi5sZW5ndGg7CisKKyAgICAgICAgICAgICAgICBpZiAoY2hpbGRDb3Vu
dCkgeworICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbi5zb3J0KGNvbXBhcmF0b3IpOworCisg
ICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGNoaWxkSW5kZXggPSAwOyBjaGlsZEluZGV4IDwg
Y2hpbGRDb3VudDsgKytjaGlsZEluZGV4KQorICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRy
ZW5bY2hpbGRJbmRleF0uX3JlY2FsY3VsYXRlU2libGluZ3MoY2hpbGRJbmRleCk7CisKKyAgICAg
ICAgICAgICAgICAgICAgZ3JpZE5vZGVHcm91cHMucHVzaChjaGlsZHJlbik7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfSwKKworICAgIGluc2VydENo
aWxkOiBmdW5jdGlvbihwcm9maWxlRGF0YUdyaWROb2RlLCBpbmRleCkKKyAgICB7CisgICAgICAg
IFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUucHJvdG90eXBlLmluc2VydENoaWxkLmNhbGwodGhp
cywgcHJvZmlsZURhdGFHcmlkTm9kZSwgaW5kZXgpOworCisgICAgICAgIHRoaXMuY2hpbGRyZW5C
eUNhbGxVSURbcHJvZmlsZURhdGFHcmlkTm9kZS5jYWxsVUlEXSA9IHByb2ZpbGVEYXRhR3JpZE5v
ZGU7CisgICAgfSwKKworICAgIHJlbW92ZUNoaWxkOiBmdW5jdGlvbihwcm9maWxlRGF0YUdyaWRO
b2RlKQorICAgIHsKKyAgICAgICAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5wcm90b3R5cGUu
cmVtb3ZlQ2hpbGQuY2FsbCh0aGlzLCBwcm9maWxlRGF0YUdyaWROb2RlKTsKKworICAgICAgICBk
ZWxldGUgdGhpcy5jaGlsZHJlbkJ5Q2FsbFVJRFtwcm9maWxlRGF0YUdyaWROb2RlLmNhbGxVSURd
OworICAgIH0sCisKKyAgICByZW1vdmVDaGlsZHJlbjogZnVuY3Rpb24ocHJvZmlsZURhdGFHcmlk
Tm9kZSkKKyAgICB7CisgICAgICAgIFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUucHJvdG90eXBl
LnJlbW92ZUNoaWxkcmVuLmNhbGwodGhpcyk7CisKKyAgICAgICAgdGhpcy5jaGlsZHJlbkJ5Q2Fs
bFVJRCA9IHt9OworICAgIH0sCisKKyAgICBmaW5kQ2hpbGQ6IGZ1bmN0aW9uKG5vZGUpCisgICAg
eworICAgICAgICBpZiAoIW5vZGUpCisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAg
cmV0dXJuIHRoaXMuY2hpbGRyZW5CeUNhbGxVSURbbm9kZS5jYWxsVUlEXTsKKyAgICB9LAorCisg
ICAgZ2V0IGF2ZXJhZ2VUaW1lKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLnNlbGZUaW1l
IC8gTWF0aC5tYXgoMSwgdGhpcy5udW1iZXJPZkNhbGxzKTsKKyAgICB9LAorCisgICAgZ2V0IGF2
ZXJhZ2VQZXJjZW50KCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLmF2ZXJhZ2VUaW1lIC8g
dGhpcy50cmVlLnRvdGFsVGltZSAqIDEwMC4wOworICAgIH0sCisKKyAgICBnZXQgc2VsZlBlcmNl
bnQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuc2VsZlRpbWUgLyB0aGlzLnRyZWUudG90
YWxUaW1lICogMTAwLjA7CisgICAgfSwKKworICAgIGdldCB0b3RhbFBlcmNlbnQoKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIHRoaXMudG90YWxUaW1lIC8gdGhpcy50cmVlLnRvdGFsVGltZSAqIDEw
MC4wOworICAgIH0sCisKKyAgICBnZXQgX3BhcmVudCgpCisgICAgeworICAgICAgICByZXR1cm4g
dGhpcy5wYXJlbnQgIT09IHRoaXMuZGF0YUdyaWQgPyB0aGlzLnBhcmVudCA6IHRoaXMudHJlZTsK
KyAgICB9LAorCisgICAgX3BvcHVsYXRlOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAg
IHRoaXMuX3NoYXJlZFBvcHVsYXRlKCk7CisKKyAgICAgICAgaWYgKHRoaXMuX3BhcmVudCkgewor
ICAgICAgICAgICAgdmFyIGN1cnJlbnRDb21wYXJhdG9yID0gdGhpcy5fcGFyZW50Lmxhc3RDb21w
YXJhdG9yOworCisgICAgICAgICAgICBpZiAoY3VycmVudENvbXBhcmF0b3IpCisgICAgICAgICAg
ICAgICAgdGhpcy5zb3J0KGN1cnJlbnRDb21wYXJhdG9yLCB0cnVlKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGlmICh0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIpCisgICAgICAgICAgICB0aGlzLnJl
bW92ZUV2ZW50TGlzdGVuZXIoInBvcHVsYXRlIiwgdGhpcy5fcG9wdWxhdGUsIHRoaXMpOworICAg
IH0sCisKKyAgICAvLyBXaGVuIGZvY3VzaW5nIGFuZCBjb2xsYXBzaW5nIHdlIG1vZGlmeSBsb3Rz
IG9mIG5vZGVzIGluIHRoZSB0cmVlLgorICAgIC8vIFRoaXMgYWxsb3dzIHVzIHRvIHJlc3RvcmUg
dGhlbSBhbGwgdG8gdGhlaXIgb3JpZ2luYWwgc3RhdGUgd2hlbiB3ZSByZXZlcnQuCisgICAgX3Nh
dmU6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9zYXZlZENoaWxkcmVuKQor
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuX3NhdmVkU2VsZlRpbWUgPSB0aGlz
LnNlbGZUaW1lOworICAgICAgICB0aGlzLl9zYXZlZFRvdGFsVGltZSA9IHRoaXMudG90YWxUaW1l
OworICAgICAgICB0aGlzLl9zYXZlZE51bWJlck9mQ2FsbHMgPSB0aGlzLm51bWJlck9mQ2FsbHM7
CisKKyAgICAgICAgdGhpcy5fc2F2ZWRDaGlsZHJlbiA9IHRoaXMuY2hpbGRyZW4uc2xpY2UoKTsK
KyAgICB9LAorCisgICAgLy8gV2hlbiBmb2N1c2luZyBhbmQgY29sbGFwc2luZyB3ZSBtb2RpZnkg
bG90cyBvZiBub2RlcyBpbiB0aGUgdHJlZS4KKyAgICAvLyBUaGlzIGFsbG93cyB1cyB0byByZXN0
b3JlIHRoZW0gYWxsIHRvIHRoZWlyIG9yaWdpbmFsIHN0YXRlIHdoZW4gd2UgcmV2ZXJ0LgorICAg
IF9yZXN0b3JlOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBpZiAoIXRoaXMuX3NhdmVkQ2hp
bGRyZW4pCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5zZWxmVGltZSA9IHRo
aXMuX3NhdmVkU2VsZlRpbWU7CisgICAgICAgIHRoaXMudG90YWxUaW1lID0gdGhpcy5fc2F2ZWRU
b3RhbFRpbWU7CisgICAgICAgIHRoaXMubnVtYmVyT2ZDYWxscyA9IHRoaXMuX3NhdmVkTnVtYmVy
T2ZDYWxsczsKKworICAgICAgICB0aGlzLnJlbW92ZUNoaWxkcmVuKCk7CisKKyAgICAgICAgdmFy
IGNoaWxkcmVuID0gdGhpcy5fc2F2ZWRDaGlsZHJlbjsKKyAgICAgICAgdmFyIGNvdW50ID0gY2hp
bGRyZW4ubGVuZ3RoOworCisgICAgICAgIGZvciAodmFyIGluZGV4ID0gMDsgaW5kZXggPCBjb3Vu
dDsgKytpbmRleCkgeworICAgICAgICAgICAgY2hpbGRyZW5baW5kZXhdLl9yZXN0b3JlKCk7Cisg
ICAgICAgICAgICB0aGlzLmFwcGVuZENoaWxkKGNoaWxkcmVuW2luZGV4XSk7CisgICAgICAgIH0K
KyAgICB9LAorCisgICAgX21lcmdlOiBmdW5jdGlvbihjaGlsZCwgc2hvdWxkQWJzb3JiKQorICAg
IHsKKyAgICAgICAgdGhpcy5zZWxmVGltZSArPSBjaGlsZC5zZWxmVGltZTsKKworICAgICAgICBp
ZiAoIXNob3VsZEFic29yYikgeworICAgICAgICAgICAgdGhpcy50b3RhbFRpbWUgKz0gY2hpbGQu
dG90YWxUaW1lOworICAgICAgICAgICAgdGhpcy5udW1iZXJPZkNhbGxzICs9IGNoaWxkLm51bWJl
ck9mQ2FsbHM7CisgICAgICAgIH0KKworICAgICAgICB2YXIgY2hpbGRyZW4gPSB0aGlzLmNoaWxk
cmVuLnNsaWNlKCk7CisKKyAgICAgICAgdGhpcy5yZW1vdmVDaGlsZHJlbigpOworCisgICAgICAg
IHZhciBjb3VudCA9IGNoaWxkcmVuLmxlbmd0aDsKKworICAgICAgICBmb3IgKHZhciBpbmRleCA9
IDA7IGluZGV4IDwgY291bnQ7ICsraW5kZXgpIHsKKyAgICAgICAgICAgIGlmICghc2hvdWxkQWJz
b3JiIHx8IGNoaWxkcmVuW2luZGV4XSAhPT0gY2hpbGQpCisgICAgICAgICAgICAgICAgdGhpcy5h
cHBlbmRDaGlsZChjaGlsZHJlbltpbmRleF0pOworICAgICAgICB9CisKKyAgICAgICAgY2hpbGRy
ZW4gPSBjaGlsZC5jaGlsZHJlbi5zbGljZSgpOworICAgICAgICBjb3VudCA9IGNoaWxkcmVuLmxl
bmd0aDsKKworICAgICAgICBmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwgY291bnQ7ICsraW5k
ZXgpIHsKKyAgICAgICAgICAgIHZhciBvcnBoYW5lZENoaWxkID0gY2hpbGRyZW5baW5kZXhdLAor
ICAgICAgICAgICAgICAgIGV4aXN0aW5nQ2hpbGQgPSB0aGlzLmNoaWxkcmVuQnlDYWxsVUlEW29y
cGhhbmVkQ2hpbGQuY2FsbFVJRF07CisKKyAgICAgICAgICAgIGlmIChleGlzdGluZ0NoaWxkKQor
ICAgICAgICAgICAgICAgIGV4aXN0aW5nQ2hpbGQuX21lcmdlKG9ycGhhbmVkQ2hpbGQsIGZhbHNl
KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0aGlzLmFwcGVuZENoaWxkKG9y
cGhhbmVkQ2hpbGQpOworICAgICAgICB9CisgICAgfSwKKyAgICAKKyAgICBfbGlua2lmeUxvY2F0
aW9uOiBmdW5jdGlvbih1cmwsIGxpbmVOdW1iZXIsIGNsYXNzTmFtZSkKKyAgICB7CisgICAgICAg
IC8vIEZJWE1FOiBDUFVQcm9maWxlTm9kZSdzIG5lZWQgY29sdW1uTnVtYmVycy4KKyAgICAgICAg
cmV0dXJuIFdlYkluc3BlY3Rvci5saW5raWZ5TG9jYXRpb24odXJsLCBsaW5lTnVtYmVyLCAwLCBj
bGFzc05hbWUpOworICAgIH0KK30KKworV2ViSW5zcGVjdG9yLkxlZ2FjeVByb2ZpbGVEYXRhR3Jp
ZE5vZGUucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUucHJv
dG90eXBlOworCitXZWJJbnNwZWN0b3IuTGVnYWN5UHJvZmlsZURhdGFHcmlkVHJlZSA9IGZ1bmN0
aW9uKHByb2ZpbGVOb2RlKQoreworICAgIHRoaXMudHJlZSA9IHRoaXM7CisgICAgdGhpcy5jaGls
ZHJlbiA9IFtdOworCisgICAgdGhpcy50b3RhbFRpbWUgPSBwcm9maWxlTm9kZS50b3RhbFRpbWU7
CisgICAgdGhpcy5sYXN0Q29tcGFyYXRvciA9IG51bGw7CisKKyAgICB0aGlzLmNoaWxkcmVuQnlD
YWxsVUlEID0ge307Cit9CisKK1dlYkluc3BlY3Rvci5MZWdhY3lQcm9maWxlRGF0YUdyaWRUcmVl
LnByb3RvdHlwZSA9IHsKKyAgICBnZXQgZXhwYW5kZWQoKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgfSwKKworICAgIGFwcGVuZENoaWxkOiBmdW5jdGlvbihjaGlsZCkKKyAgICB7
CisgICAgICAgIHRoaXMuaW5zZXJ0Q2hpbGQoY2hpbGQsIHRoaXMuY2hpbGRyZW4ubGVuZ3RoKTsK
KyAgICB9LAorCisgICAgaW5zZXJ0Q2hpbGQ6IGZ1bmN0aW9uKGNoaWxkLCBpbmRleCkKKyAgICB7
CisgICAgICAgIHRoaXMuY2hpbGRyZW4uc3BsaWNlKGluZGV4LCAwLCBjaGlsZCk7CisgICAgICAg
IHRoaXMuY2hpbGRyZW5CeUNhbGxVSURbY2hpbGQuY2FsbFVJRF0gPSBjaGlsZDsKKyAgICB9LAor
CisgICAgcmVtb3ZlQ2hpbGRyZW46IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMuY2hp
bGRyZW4gPSBbXTsKKyAgICAgICAgdGhpcy5jaGlsZHJlbkJ5Q2FsbFVJRCA9IHt9OworICAgIH0s
CisKKyAgICBmaW5kQ2hpbGQ6IFdlYkluc3BlY3Rvci5MZWdhY3lQcm9maWxlRGF0YUdyaWROb2Rl
LnByb3RvdHlwZS5maW5kQ2hpbGQsCisgICAgc29ydDogV2ViSW5zcGVjdG9yLkxlZ2FjeVByb2Zp
bGVEYXRhR3JpZE5vZGUucHJvdG90eXBlLnNvcnQsCisKKyAgICBfc2F2ZTogZnVuY3Rpb24oKQor
ICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX3NhdmVkQ2hpbGRyZW4pCisgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgdGhpcy5fc2F2ZWRUb3RhbFRpbWUgPSB0aGlzLnRvdGFsVGltZTsKKyAg
ICAgICAgdGhpcy5fc2F2ZWRDaGlsZHJlbiA9IHRoaXMuY2hpbGRyZW4uc2xpY2UoKTsKKyAgICB9
LAorCisgICAgcmVzdG9yZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLl9z
YXZlZENoaWxkcmVuKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuY2hpbGRy
ZW4gPSB0aGlzLl9zYXZlZENoaWxkcmVuOworICAgICAgICB0aGlzLnRvdGFsVGltZSA9IHRoaXMu
X3NhdmVkVG90YWxUaW1lOworCisgICAgICAgIHZhciBjaGlsZHJlbiA9IHRoaXMuY2hpbGRyZW47
CisgICAgICAgIHZhciBjb3VudCA9IGNoaWxkcmVuLmxlbmd0aDsKKworICAgICAgICBmb3IgKHZh
ciBpbmRleCA9IDA7IGluZGV4IDwgY291bnQ7ICsraW5kZXgpCisgICAgICAgICAgICBjaGlsZHJl
bltpbmRleF0uX3Jlc3RvcmUoKTsKKworICAgICAgICB0aGlzLl9zYXZlZENoaWxkcmVuID0gbnVs
bDsKKyAgICB9Cit9CisKK1dlYkluc3BlY3Rvci5MZWdhY3lQcm9maWxlRGF0YUdyaWRUcmVlLnBy
b3BlcnR5Q29tcGFyYXRvcnMgPSBbe30sIHt9XTsKKworV2ViSW5zcGVjdG9yLkxlZ2FjeVByb2Zp
bGVEYXRhR3JpZFRyZWUucHJvcGVydHlDb21wYXJhdG9yID0gZnVuY3Rpb24ocHJvcGVydHksIGlz
QXNjZW5kaW5nKQoreworICAgIHZhciBjb21wYXJhdG9yID0gdGhpcy5wcm9wZXJ0eUNvbXBhcmF0
b3JzWyhpc0FzY2VuZGluZyA/IDEgOiAwKV1bcHJvcGVydHldOworCisgICAgaWYgKCFjb21wYXJh
dG9yKSB7CisgICAgICAgIGlmIChpc0FzY2VuZGluZykgeworICAgICAgICAgICAgY29tcGFyYXRv
ciA9IGZ1bmN0aW9uKGxocywgcmhzKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlm
IChsaHNbcHJvcGVydHldIDwgcmhzW3Byb3BlcnR5XSkKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIC0xOworCisgICAgICAgICAgICAgICAgaWYgKGxoc1twcm9wZXJ0eV0gPiByaHNbcHJvcGVy
dHldKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKKworICAgICAgICAgICAgICAgIHJl
dHVybiAwOworICAgICAgICAgICAgfTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGNv
bXBhcmF0b3IgPSBmdW5jdGlvbihsaHMsIHJocykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBpZiAobGhzW3Byb3BlcnR5XSA+IHJoc1twcm9wZXJ0eV0pCisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiAtMTsKKworICAgICAgICAgICAgICAgIGlmIChsaHNbcHJvcGVydHldIDwgcmhz
W3Byb3BlcnR5XSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CisKKyAgICAgICAgICAg
ICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIH07CisgICAgICAgIH0KKworICAgICAgICB0aGlz
LnByb3BlcnR5Q29tcGFyYXRvcnNbKGlzQXNjZW5kaW5nID8gMSA6IDApXVtwcm9wZXJ0eV0gPSBj
b21wYXJhdG9yOworICAgIH0KKworICAgIHJldHVybiBjb21wYXJhdG9yOworfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTGVnYWN5UHJvZmlsZU1hbmFn
ZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9MZWdhY3lQcm9maWxl
TWFuYWdlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MjMxNmI0MTMzZDg4MDk2YzYzYmIxMmFjZTFlNDQ4ZDQw
M2Q5M2E3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvTGVnYWN5UHJvZmlsZU1hbmFnZXIuanMKQEAgLTAsMCArMSwxODAgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCitXZWJJbnNwZWN0b3IuTGVnYWN5UHJvZmlsZU1hbmFnZXIgPSBmdW5jdGlvbigpCit7Cisg
ICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOworCisgICAgdGhpcy5famF2YVNjcmlw
dFByb2ZpbGVUeXBlID0gbmV3IFdlYkluc3BlY3Rvci5MZWdhY3lKYXZhU2NyaXB0UHJvZmlsZVR5
cGU7CisKKyAgICBQcm9maWxlckFnZW50LmVuYWJsZSgpOworICAgIFByb2ZpbGVyQWdlbnQuZ2V0
UHJvZmlsZUhlYWRlcnMoKTsKKworICAgIFdlYkluc3BlY3Rvci5GcmFtZS5hZGRFdmVudExpc3Rl
bmVyKFdlYkluc3BlY3Rvci5GcmFtZS5FdmVudC5NYWluUmVzb3VyY2VEaWRDaGFuZ2UsIHRoaXMu
X21haW5SZXNvdXJjZURpZENoYW5nZSwgdGhpcyk7CisKKyAgICB0aGlzLmluaXRpYWxpemUoKTsK
K307CisKK1dlYkluc3BlY3Rvci5MZWdhY3lQcm9maWxlTWFuYWdlci5FdmVudCA9IHsKKyAgICBQ
cm9maWxlV2FzQWRkZWQ6ICJwcm9maWxlLW1hbmFnZXItcHJvZmlsZS13YXMtYWRkZWQiLAorICAg
IFByb2ZpbGVXYXNVcGRhdGVkOiAicHJvZmlsZS1tYW5hZ2VyLXByb2ZpbGUtd2FzLXVwZGF0ZWQi
LAorICAgIFByb2ZpbGluZ1N0YXJ0ZWQ6ICJwcm9maWxlLW1hbmFnZXItcHJvZmlsaW5nLXN0YXJ0
ZWQiLAorICAgIFByb2ZpbGluZ0VuZGVkOiAicHJvZmlsZS1tYW5hZ2VyLXByb2ZpbGluZy1lbmRl
ZCIsCisgICAgUHJvZmlsaW5nSW50ZXJydXB0ZWQ6ICJwcm9maWxlLW1hbmFnZXItcHJvZmlsaW5n
LWludGVycnVwdGVkIiwKKyAgICBDbGVhcmVkOiAicHJvZmlsZS1tYW5hZ2VyLWNsZWFyZWQiCit9
OworCitXZWJJbnNwZWN0b3IuTGVnYWN5UHJvZmlsZU1hbmFnZXIuVXNlckluaXRpYXRlZFByb2Zp
bGVOYW1lID0gIm9yZy53ZWJraXQucHJvZmlsZXMudXNlci1pbml0aWF0ZWQiOworCitXZWJJbnNw
ZWN0b3IuTGVnYWN5UHJvZmlsZU1hbmFnZXIucHJvdG90eXBlID0geworICAgIGNvbnN0cnVjdG9y
OiBXZWJJbnNwZWN0b3IuTGVnYWN5UHJvZmlsZU1hbmFnZXIsCisKKyAgICAvLyBQdWJsaWMKKwor
ICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMuX2NoZWNrRm9y
SW50ZXJydXB0aW9ucygpOworCisgICAgICAgIHRoaXMuX3JlY29yZGluZ0phdmFTY3JpcHRQcm9m
aWxlID0gbnVsbDsKKworICAgICAgICB0aGlzLl9pc1Byb2ZpbGluZyA9IGZhbHNlOworCisgICAg
ICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5MZWdhY3lQcm9m
aWxlTWFuYWdlci5FdmVudC5DbGVhcmVkKTsKKyAgICB9LAorCisgICAgaXNQcm9maWxpbmdKYXZh
U2NyaXB0OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5famF2YVNjcmlw
dFByb2ZpbGVUeXBlLmlzUmVjb3JkaW5nUHJvZmlsZSgpOworICAgIH0sCisKKyAgICBzdGFydFBy
b2ZpbGluZ0phdmFTY3JpcHQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMuX2phdmFT
Y3JpcHRQcm9maWxlVHlwZS5zdGFydFJlY29yZGluZ1Byb2ZpbGUoKTsKKyAgICB9LAorCisgICAg
c3RvcFByb2ZpbGluZ0phdmFTY3JpcHQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMu
X2phdmFTY3JpcHRQcm9maWxlVHlwZS5zdG9wUmVjb3JkaW5nUHJvZmlsZSgpOworICAgIH0sCisK
KyAgICBwcm9maWxlV2FzU3RhcnRlZEZyb21Db25zb2xlOiBmdW5jdGlvbih0aXRsZSkKKyAgICB7
CisgICAgICAgIHRoaXMuc2V0UmVjb3JkaW5nSmF2YVNjcmlwdFByb2ZpbGUodHJ1ZSwgdHJ1ZSk7
CisKKyAgICAgICAgaWYgKHRpdGxlLmluZGV4T2YoV2ViSW5zcGVjdG9yLkxlZ2FjeVByb2ZpbGVN
YW5hZ2VyLlVzZXJJbml0aWF0ZWRQcm9maWxlTmFtZSkgPT09IC0xKSB7CisgICAgICAgICAgICB0
aGlzLl9yZWNvcmRpbmdKYXZhU2NyaXB0UHJvZmlsZS50aXRsZSA9IHRpdGxlOworICAgICAgICAg
ICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkxlZ2FjeVByb2Zp
bGVNYW5hZ2VyLkV2ZW50LlByb2ZpbGVXYXNVcGRhdGVkLCB7cHJvZmlsZTogdGhpcy5fcmVjb3Jk
aW5nSmF2YVNjcmlwdFByb2ZpbGV9KTsKKyAgICAgICAgfQorICAgIH0sCisKKyAgICBwcm9maWxl
V2FzRW5kZWRGcm9tQ29uc29sZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy5zZXRS
ZWNvcmRpbmdKYXZhU2NyaXB0UHJvZmlsZShmYWxzZSwgdHJ1ZSk7CisgICAgfSwKKworICAgIGFk
ZEphdmFTY3JpcHRQcm9maWxlOiBmdW5jdGlvbihwcm9maWxlKQorICAgIHsKKyAgICAgICAgY29u
c29sZS5hc3NlcnQodGhpcy5fcmVjb3JkaW5nSmF2YVNjcmlwdFByb2ZpbGUpOworICAgICAgICBp
ZiAoIXRoaXMuX3JlY29yZGluZ0phdmFTY3JpcHRQcm9maWxlKQorICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgIHRoaXMuX3JlY29yZGluZ0phdmFTY3JpcHRQcm9maWxlLnR5cGUgPSBwcm9m
aWxlLnR5cGVJZDsKKyAgICAgICAgdGhpcy5fcmVjb3JkaW5nSmF2YVNjcmlwdFByb2ZpbGUudGl0
bGUgPSBwcm9maWxlLnRpdGxlOworICAgICAgICB0aGlzLl9yZWNvcmRpbmdKYXZhU2NyaXB0UHJv
ZmlsZS5pZCA9IHByb2ZpbGUudWlkOworICAgICAgICB0aGlzLl9yZWNvcmRpbmdKYXZhU2NyaXB0
UHJvZmlsZS5yZWNvcmRpbmcgPSBmYWxzZTsKKworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRU
b0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuTGVnYWN5UHJvZmlsZU1hbmFnZXIuRXZlbnQuUHJvZmls
ZVdhc1VwZGF0ZWQsIHtwcm9maWxlOiB0aGlzLl9yZWNvcmRpbmdKYXZhU2NyaXB0UHJvZmlsZX0p
OworCisgICAgICAgIC8vIFdlIHdhbnQgdG8gcmVzZXQgX3JlY29yZGluZ0phdmFTY3JpcHRQcm9m
aWxlIHNvIHRoYXQgd2UgY2FuIGlkZW50aWZ5CisgICAgICAgIC8vIGludGVycnVwdGlvbnMsIGJ1
dCB3ZSBhbHNvIHdhbnQgdG8ga2VlcCB0cmFjayBvZiB0aGUgbGFzdCBwcm9maWxlCisgICAgICAg
IC8vIHdlJ3ZlIHJlY29yZGVkIHNvIHRoYXQgd2UgY2FuIHByb3ZpZGUgaXQgYXMgZGF0YSB0byB0
aGUgUHJvZmlsaW5nRW5kZWQgZXZlbnQKKyAgICAgICAgLy8gd2UnbGwgZGlzcGF0Y2ggaW4gc2V0
UmVjb3JkaW5nSmF2YVNjcmlwdFByb2ZpbGUoKS4KKyAgICAgICAgdGhpcy5fbGFzdEphdmFTY3Jp
cHRQcm9maWxlQWRkZWQgPSB0aGlzLl9yZWNvcmRpbmdKYXZhU2NyaXB0UHJvZmlsZTsKKyAgICAg
ICAgdGhpcy5fcmVjb3JkaW5nSmF2YVNjcmlwdFByb2ZpbGUgPSBudWxsOworICAgIH0sCisKKyAg
ICBzZXRSZWNvcmRpbmdKYXZhU2NyaXB0UHJvZmlsZTogZnVuY3Rpb24oaXNQcm9maWxpbmcsIGZy
b21Db25zb2xlKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX2lzUHJvZmlsaW5nID09PSBpc1By
b2ZpbGluZykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLl9pc1Byb2ZpbGlu
ZyA9IGlzUHJvZmlsaW5nOworCisgICAgICAgIC8vIFdlJ3ZlIGludGVycnVwdGVkIHRoZSBjdXJy
ZW50IEpTIHByb2ZpbGUgZHVlIHRvIGEgcGFnZSByZWxvYWQuIFJldHVybgorICAgICAgICAvLyBu
b3cgYW5kIF9hdHRlbXB0VG9SZXN1bWVQcm9maWxpbmcgd2lsbCBwaWNrIHRoaW5ncyB1cCBhZnRl
ciB0aGUgcmVsb2FkLgorICAgICAgICBpZiAoIWlzUHJvZmlsaW5nICYmICEhdGhpcy5fcmVjb3Jk
aW5nSmF2YVNjcmlwdFByb2ZpbGUpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYg
KGlzUHJvZmlsaW5nICYmICF0aGlzLl9yZWNvcmRpbmdKYXZhU2NyaXB0UHJvZmlsZSkKKyAgICAg
ICAgICAgIHRoaXMuX3JlY29yZGluZ0phdmFTY3JpcHRQcm9maWxlID0gbmV3IFdlYkluc3BlY3Rv
ci5MZWdhY3lKYXZhU2NyaXB0UHJvZmlsZU9iamVjdChXZWJJbnNwZWN0b3IuTGVnYWN5UHJvZmls
ZU1hbmFnZXIuVXNlckluaXRpYXRlZFByb2ZpbGVOYW1lLCAtMSwgdHJ1ZSk7CisKKyAgICAgICAg
aWYgKGlzUHJvZmlsaW5nKSB7CisgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3Rl
bmVycyhXZWJJbnNwZWN0b3IuTGVnYWN5UHJvZmlsZU1hbmFnZXIuRXZlbnQuUHJvZmlsZVdhc0Fk
ZGVkLCB7cHJvZmlsZTogdGhpcy5fcmVjb3JkaW5nSmF2YVNjcmlwdFByb2ZpbGV9KTsKKyAgICAg
ICAgICAgIGlmICghZnJvbUNvbnNvbGUpCisgICAgICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2
ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkxlZ2FjeVByb2ZpbGVNYW5hZ2VyLkV2ZW50LlBy
b2ZpbGluZ1N0YXJ0ZWQpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdGhpcy5kaXNw
YXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkxlZ2FjeVByb2ZpbGVNYW5hZ2VyLkV2
ZW50LlByb2ZpbGluZ0VuZGVkLCB7CisgICAgICAgICAgICAgICAgcHJvZmlsZTogdGhpcy5fbGFz
dEphdmFTY3JpcHRQcm9maWxlQWRkZWQsCisgICAgICAgICAgICAgICAgZnJvbUNvbnNvbGU6IGZy
b21Db25zb2xlCisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHRoaXMuX2xhc3RKYXZhU2Ny
aXB0UHJvZmlsZUFkZGVkID0gbnVsbDsKKyAgICAgICAgfQorICAgIH0sCisKKyAgICAvLyBQcml2
YXRlCisgICAgCisgICAgX21haW5SZXNvdXJjZURpZENoYW5nZTogZnVuY3Rpb24oZXZlbnQpCisg
ICAgeworICAgICAgICBjb25zb2xlLmFzc2VydChldmVudC50YXJnZXQgaW5zdGFuY2VvZiBXZWJJ
bnNwZWN0b3IuRnJhbWUpOworCisgICAgICAgIGlmICghZXZlbnQudGFyZ2V0LmlzTWFpbkZyYW1l
KCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdmFyIG9sZE1haW5SZXNvdXJjZSA9
IGV2ZW50LmRhdGEub2xkTWFpblJlc291cmNlOworICAgICAgICB2YXIgbmV3TWFpblJlc291cmNl
ID0gZXZlbnQudGFyZ2V0Lm1haW5SZXNvdXJjZTsKKyAgICAgICAgaWYgKG9sZE1haW5SZXNvdXJj
ZS51cmwgIT09IG5ld01haW5SZXNvdXJjZS51cmwpCisgICAgICAgICAgICB0aGlzLmluaXRpYWxp
emUoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdGhpcy5fYXR0ZW1wdFRvUmVzdW1lUHJv
ZmlsaW5nKCk7CisgICAgfSwKKworICAgIF9jaGVja0ZvckludGVycnVwdGlvbnM6IGZ1bmN0aW9u
KCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9yZWNvcmRpbmdKYXZhU2NyaXB0UHJvZmlsZSkg
eworICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9y
LkxlZ2FjeVByb2ZpbGVNYW5hZ2VyLkV2ZW50LlByb2ZpbGluZ0ludGVycnVwdGVkLCB7cHJvZmls
ZTogdGhpcy5fcmVjb3JkaW5nSmF2YVNjcmlwdFByb2ZpbGV9KTsKKyAgICAgICAgICAgIHRoaXMu
X2phdmFTY3JpcHRQcm9maWxlVHlwZS5zZXRSZWNvcmRpbmdQcm9maWxlKGZhbHNlKTsKKyAgICAg
ICAgfQorICAgIH0sCisKKyAgICBfYXR0ZW1wdFRvUmVzdW1lUHJvZmlsaW5nOiBmdW5jdGlvbigp
CisgICAgeworICAgICAgICB0aGlzLl9jaGVja0ZvckludGVycnVwdGlvbnMoKTsKKworICAgICAg
ICBpZiAodGhpcy5fcmVjb3JkaW5nSmF2YVNjcmlwdFByb2ZpbGUpCisgICAgICAgICAgICB0aGlz
LnN0YXJ0UHJvZmlsaW5nSmF2YVNjcmlwdCgpOworICAgIH0KK307CisKK1dlYkluc3BlY3Rvci5M
ZWdhY3lQcm9maWxlTWFuYWdlci5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLk9i
amVjdC5wcm90b3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9MZWdhY3lQcm9maWxlT2JqZWN0LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvTGVnYWN5UHJvZmlsZU9iamVjdC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNjNmZDEyM2E0
ODdmODQ5YmVlNjYyZGY3MzZmYzlmY2RiMGVjMzdjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTGVnYWN5UHJvZmlsZU9iamVjdC5qcwpAQCAt
MCwwICsxLDkzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworV2ViSW5zcGVjdG9yLkxlZ2FjeVByb2ZpbGVPYmpl
Y3QgPSBmdW5jdGlvbih0eXBlLCB0aXRsZSwgaWQsIGlzUmVjb3JkaW5nKQoreworICAgIFdlYklu
c3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKKworICAgIGNvbnNvbGUuYXNzZXJ0KHR5cGUpOwor
ICAgIGNvbnNvbGUuYXNzZXJ0KHRpdGxlKTsKKyAgICBjb25zb2xlLmFzc2VydChpZCk7CisKKyAg
ICB0aGlzLl90eXBlID0gdHlwZTsKKyAgICB0aGlzLl90aXRsZSA9IHRpdGxlOworICAgIHRoaXMu
X2lkID0gaWQ7CisgICAgdGhpcy5faXNSZWNvcmRpbmcgPSBpc1JlY29yZGluZyB8fCBmYWxzZTsK
K307CisKK1dlYkluc3BlY3Rvci5MZWdhY3lQcm9maWxlT2JqZWN0LkV2ZW50ID0geworICAgIEZp
bnNoZWRSZWNvcmRpbmc6ICJwcm9maWxlLW9iamVjdC1maW5pc2hlZC1yZWNvcmRpbmciCit9Owor
CitXZWJJbnNwZWN0b3IuTGVnYWN5UHJvZmlsZU9iamVjdC5wcm90b3R5cGUgPSB7CisgICAgY29u
c3RydWN0b3I6IFdlYkluc3BlY3Rvci5MZWdhY3lQcm9maWxlT2JqZWN0LAorICAgIAorICAgIGdl
dCB0eXBlKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl90eXBlOworICAgIH0sCisKKyAg
ICBzZXQgdHlwZSh0eXBlKQorICAgIHsKKyAgICAgICAgdGhpcy5fdHlwZSA9IHR5cGU7CisgICAg
fSwKKyAgICAKKyAgICBnZXQgdGl0bGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3Rp
dGxlOworICAgIH0sCisKKyAgICBzZXQgdGl0bGUodGl0bGUpCisgICAgeworICAgICAgICB0aGlz
Ll90aXRsZSA9IHRpdGxlOworICAgIH0sCisKKyAgICBnZXQgaWQoKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIHRoaXMuX2lkOworICAgIH0sCisKKyAgICBzZXQgaWQoaWQpCisgICAgeworICAgICAg
ICB0aGlzLl9pZCA9IGlkOworICAgIH0sCisKKyAgICBnZXQgcmVjb3JkaW5nKCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiB0aGlzLl9pc1JlY29yZGluZzsKKyAgICB9LAorCisgICAgc2V0IHJlY29y
ZGluZyhmbGFnKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX2lzUmVjb3JkaW5nID09PSBmbGFn
KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuX2lzUmVjb3JkaW5nID0gZmxh
ZzsKKyAgICAgICAgaWYgKCFmbGFnKQorICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9M
aXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkxlZ2FjeVByb2ZpbGVPYmplY3QuRXZlbnQuRmluc2hlZFJl
Y29yZGluZyk7CisgICAgfQorfTsKKworV2ViSW5zcGVjdG9yLkxlZ2FjeVByb2ZpbGVPYmplY3Qu
cHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTGVnYWN5UHJvZmls
ZVR5cGUuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9MZWdhY3lQcm9m
aWxlVHlwZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYjZkNTRjNmJlOTY0ZWQyN2JkODY1NTM5ZmZhOGMwYmZh
ZmMwMTNhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvTGVnYWN5UHJvZmlsZVR5cGUuanMKQEAgLTAsMCArMSw4NyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAwOCwgMjAxMyBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1dlYkluc3BlY3Rvci5MZWdh
Y3lQcm9maWxlVHlwZSA9IGZ1bmN0aW9uKGlkLCBuYW1lKQoreworICAgIHRoaXMuX2lkID0gaWQ7
CisgICAgdGhpcy5fbmFtZSA9IG5hbWU7Cit9CisKK1dlYkluc3BlY3Rvci5MZWdhY3lQcm9maWxl
VHlwZS5VUkxSZWdFeHAgPSAvd2Via2l0LXByb2ZpbGU6XC9cLyguKylcLyguKykjKFswLTldKykv
OworV2ViSW5zcGVjdG9yLkxlZ2FjeVByb2ZpbGVUeXBlLlByb2ZpbGVTY2hlbWUgPSAid2Via2l0
LXByb2ZpbGUiOworCitXZWJJbnNwZWN0b3IuTGVnYWN5UHJvZmlsZVR5cGUucHJvdG90eXBlID0g
eworICAgIGdldCBidXR0b25Ub29sdGlwKCkKKyAgICB7CisgICAgICAgIHJldHVybiAiIjsKKyAg
ICB9LAorCisgICAgZ2V0IGlkKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9pZDsKKyAg
ICB9LAorCisgICAgZ2V0IHRyZWVJdGVtVGl0bGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRo
aXMuX25hbWU7CisgICAgfSwKKworICAgIGdldCBuYW1lKCkKKyAgICB7CisgICAgICAgIHJldHVy
biB0aGlzLl9uYW1lOworICAgIH0sCisKKyAgICBidXR0b25DbGlja2VkOiBmdW5jdGlvbigpCisg
ICAgeworICAgIH0sCisKKyAgICB2aWV3Rm9yUHJvZmlsZTogZnVuY3Rpb24ocHJvZmlsZSkKKyAg
ICB7CisgICAgICAgIGlmICghcHJvZmlsZS5fcHJvZmlsZVZpZXcpCisgICAgICAgICAgICBwcm9m
aWxlLl9wcm9maWxlVmlldyA9IHRoaXMuY3JlYXRlVmlldyhwcm9maWxlKTsKKyAgICAgICAgcmV0
dXJuIHByb2ZpbGUuX3Byb2ZpbGVWaWV3OworICAgIH0sCisKKyAgICByZXNldDogZnVuY3Rpb24o
KQorICAgIHsKKyAgICB9LAorCisgICAgZ2V0IGRlc2NyaXB0aW9uKCkKKyAgICB7CisgICAgICAg
IHJldHVybiAiIjsKKyAgICB9LAorCisgICAgLy8gTXVzdCBiZSBpbXBsZW1lbnRlZCBieSBzdWJj
bGFzc2VzLgorICAgIGNyZWF0ZVZpZXc6IGZ1bmN0aW9uKHByb2ZpbGUpCisgICAgeworICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoIk5lZWRzIGltcGxlbWVudGVkLiIpOworICAgIH0sCisKKyAgICAv
LyBNdXN0IGJlIGltcGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMuCisgICAgY3JlYXRlU2lkZWJhclRy
ZWVFbGVtZW50Rm9yUHJvZmlsZTogZnVuY3Rpb24ocHJvZmlsZSkKKyAgICB7CisgICAgICAgIHRo
cm93IG5ldyBFcnJvcigiTmVlZHMgaW1wbGVtZW50ZWQuIik7CisgICAgfQorfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTGVnYWN5UHJvZmlsZVZpZXcu
Y3NzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTGVnYWN5UHJvZmlsZVZp
ZXcuY3NzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjY0ZDdhZTVjYjMzMDRjNWQzNjAxYjE1MTA5NmJhZmRlOGYyYTYz
ZTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9MZWdhY3lQcm9maWxlVmlldy5jc3MKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy5y
ZWNvcmRpbmctcHJvZmlsZS12aWV3IHsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgdG9w
OiAwOworICAgIHJpZ2h0OiAwOworICAgIGJvdHRvbTogMDsKKyAgICBsZWZ0OiAwOworCisgICAg
ZGlzcGxheTogLXdlYmtpdC1mbGV4OworICAgIC13ZWJraXQtZmxleC1mbG93OiByb3cgbm93cmFw
OworICAgIC13ZWJraXQtanVzdGlmeS1jb250ZW50OiBjZW50ZXI7CisgICAgLXdlYmtpdC1hbGln
bi1jb250ZW50OiBjZW50ZXI7CisgICAgLXdlYmtpdC1hbGlnbi1pdGVtczogY2VudGVyOworICAg
IAorICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigyMzIsIDIzMiwgMjMyKTsKK30KKworLnJlY29y
ZGluZy1wcm9maWxlLXZpZXcgPiAuaW5kZXRlcm1pbmF0ZS1wcm9ncmVzcy1zcGlubmVyIHsKKyAg
ICBwb3NpdGlvbjogc3RhdGljOworICAgIG1hcmdpbjogMDsKK30KKworLnJlY29yZGluZy1wcm9m
aWxlLXZpZXcgPiBzcGFuIHsKKyAgICBmb250LWZhbWlseTogJ0x1Y2lkYSBHcmFuZGUnLCBIZWx2
ZXRpY2EsIHNhbnMtc2VyaWY7CisgICAgZm9udC1zaXplOiAxNHB4OworCisgICAgdGV4dC1zaGFk
b3c6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KSAwIDFweCAwOworICAgIGNvbG9yOiByZ2IoNjAs
IDYwLCA2MCk7CisKKyAgICBwYWRkaW5nLWxlZnQ6IDEwcHg7CisKKyAgICBvdmVyZmxvdzogaGlk
ZGVuOworICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOworICAgIHdoaXRlLXNwYWNlOiBub3dy
YXA7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9M
ZWdhY3lQcm9maWxlVmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L0xlZ2FjeVByb2ZpbGVWaWV3LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNjODU4ZDU0NGVlMGY0ZDk4MWUwYzhm
NjQ3NTUxYTQ3MGQzNTFiYjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9MZWdhY3lQcm9maWxlVmlldy5qcwpAQCAtMCwwICsxLDEwOSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKK1dlYkluc3BlY3Rvci5MZWdhY3lQcm9maWxlVmlldyA9IGZ1bmN0aW9uKHBy
b2ZpbGUsIHNldHRpbmdJZCkKK3sKKyAgICBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcuY2FsbCh0
aGlzLCBwcm9maWxlKTsKKworICAgIHRoaXMuX3Byb2ZpbGUgPSBwcm9maWxlOworCisgICAgdGhp
cy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoInByb2ZpbGUtdmlldyIpOworCisgICAgdGhpcy5zaG93
VGltZUFzUGVyY2VudCA9IG5ldyBXZWJJbnNwZWN0b3IuU2V0dGluZyhzZXR0aW5nSWQsIHRydWUp
OworICAgIHRoaXMuc2hvd1RpbWVBc1BlcmNlbnROYXZpZ2F0aW9uSXRlbSA9IG5ldyBXZWJJbnNw
ZWN0b3IuQWN0aXZhdGVCdXR0b25OYXZpZ2F0aW9uSXRlbSgic2VsZWN0b3ItcHJvZmlsZXItc2hv
dy10aW1lLWFzLXBlcmNlbnQtbmF2aWdhdGlvbi1pdGVtIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJTaG93IHRpbWVzIGFzIHBlcmNlbnRhZ2VzIiksIFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2hv
dyB0aW1lcyBhcyBhYnNvbHV0ZSB0aW1lcyIpLCAiSW1hZ2VzL1BlcmNlbnQuc3ZnIiwgMTYsIDE2
KTsKKyAgICB0aGlzLnNob3dUaW1lQXNQZXJjZW50TmF2aWdhdGlvbkl0ZW0uYWRkRXZlbnRMaXN0
ZW5lcihXZWJJbnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlvbkl0ZW0uRXZlbnQuQ2xpY2tlZCwgdGhp
cy50b2dnbGVUaW1lRGlzcGxheSwgdGhpcyk7CisgICAgdGhpcy5zaG93VGltZUFzUGVyY2VudE5h
dmlnYXRpb25JdGVtLmFjdGl2YXRlZCA9IHRoaXMuc2hvd1RpbWVBc1BlcmNlbnQudmFsdWU7CisK
KyAgICBpZiAocHJvZmlsZS5yZWNvcmRpbmcpIHsKKyAgICAgICAgdGhpcy5fc2hvd1JlY29yZGlu
Z01lc3NhZ2UoKTsKKyAgICAgICAgcHJvZmlsZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rv
ci5MZWdhY3lQcm9maWxlT2JqZWN0LkV2ZW50LkZpbnNoZWRSZWNvcmRpbmcsIHRoaXMuX3Byb2Zp
bGVGaW5pc2hlZFJlY29yZGluZywgdGhpcyk7CisgICAgfSBlbHNlCisgICAgICAgIHRoaXMuZGlz
cGxheVByb2ZpbGUoKTsKK307CisKK1dlYkluc3BlY3Rvci5MZWdhY3lQcm9maWxlVmlldy5wcm90
b3R5cGUgPSB7CisgICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5MZWdhY3lQcm9maWxlVmll
dywKKworICAgIC8vIFB1YmxpYworCisgICAgZ2V0IG5hdmlnYXRpb25JdGVtcygpCisgICAgewor
ICAgICAgICByZXR1cm4gW3RoaXMuc2hvd1RpbWVBc1BlcmNlbnROYXZpZ2F0aW9uSXRlbV07Cisg
ICAgfSwKKworICAgIGdldCBhbGxvd2VkTmF2aWdhdGlvblNpZGViYXJQYW5lbHMoKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIFsiaW5zdHJ1bWVudCJdOworICAgIH0sCisKKyAgICBnZXQgcHJvZmls
ZSgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fcHJvZmlsZTsKKyAgICB9LAorCisgICAg
c2V0IHByb2ZpbGUocHJvZmlsZSkKKyAgICB7CisgICAgICAgIHRoaXMuX3Byb2ZpbGUgPSBwcm9m
aWxlOworICAgIH0sCisgICAgCisgICAgdG9nZ2xlVGltZURpc3BsYXk6IGZ1bmN0aW9uKGV2ZW50
KQorICAgIHsKKyAgICAgICAgdGhpcy5zaG93VGltZUFzUGVyY2VudE5hdmlnYXRpb25JdGVtLmFj
dGl2YXRlZCA9ICF0aGlzLnNob3dUaW1lQXNQZXJjZW50TmF2aWdhdGlvbkl0ZW0uYWN0aXZhdGVk
OworICAgIH0sCisKKyAgICBkaXNwbGF5UHJvZmlsZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAg
ICAgLy8gSW1wbGVtZW50ZWQgYnkgc3ViY2xhc3Nlcy4KKyAgICB9LAorCisgICAgZ2V0IHJlY29y
ZGluZ1RpdGxlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IlJlY29yZGluZ1x1MjAyNiIpOworICAgIH0sCisgICAgCisgICAgLy8gUHJpdmF0ZQorICAgIAor
ICAgIF9wcm9maWxlRmluaXNoZWRSZWNvcmRpbmc6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAg
IHRoaXMuX2hpZGVSZWNvcmRpbmdNZXNzYWdlKCk7CisgICAgICAgIHRoaXMuZGlzcGxheVByb2Zp
bGUoKTsKKyAgICB9LAorICAgIAorICAgIF9zaG93UmVjb3JkaW5nTWVzc2FnZTogZnVuY3Rpb24o
KQorICAgIHsKKyAgICAgICAgdGhpcy5fcmVjb3JkaW5nTWVzc2FnZUNvbnRhaW5lciA9IHRoaXMu
ZWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSk7CisgICAg
ICAgIHRoaXMuX3JlY29yZGluZ01lc3NhZ2VDb250YWluZXIuY2xhc3NOYW1lID0gInJlY29yZGlu
Zy1wcm9maWxlLXZpZXciOworICAgICAgICB0aGlzLl9yZWNvcmRpbmdNZXNzYWdlQ29udGFpbmVy
LmFwcGVuZENoaWxkKG5ldyBXZWJJbnNwZWN0b3IuSW5kZXRlcm1pbmF0ZVByb2dyZXNzU3Bpbm5l
cigpLmVsZW1lbnQpOworICAgICAgICB0aGlzLl9yZWNvcmRpbmdNZXNzYWdlQ29udGFpbmVyLmFw
cGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKSkudGV4dENvbnRlbnQgPSB0
aGlzLnJlY29yZGluZ1RpdGxlOworICAgIH0sCisgICAgCisgICAgX2hpZGVSZWNvcmRpbmdNZXNz
YWdlOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBpZiAodGhpcy5fcmVjb3JkaW5nTWVzc2Fn
ZUNvbnRhaW5lcikKKyAgICAgICAgICAgIHRoaXMuX3JlY29yZGluZ01lc3NhZ2VDb250YWluZXIu
cmVtb3ZlKCk7CisgICAgfQorfTsKKworV2ViSW5zcGVjdG9yLkxlZ2FjeVByb2ZpbGVWaWV3LnBy
b3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcucHJvdG90eXBlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTGVnYWN5UHJv
ZmlsZXJPYnNlcnZlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0xl
Z2FjeVByb2ZpbGVyT2JzZXJ2ZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGZkOTkzMzQwMDBjMzc3MjIzNzk0
YmIyOTQ3MzExNTE5NTEyODY0YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL0xlZ2FjeVByb2ZpbGVyT2JzZXJ2ZXIuanMKQEAgLTAsMCArMSw2
OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKK1dlYkluc3BlY3Rvci5MZWdhY3lQcm9maWxlck9ic2VydmVyID0g
ZnVuY3Rpb24oKQoreworICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKK307CisK
K1dlYkluc3BlY3Rvci5MZWdhY3lQcm9maWxlck9ic2VydmVyLnByb3RvdHlwZSA9IHsKKyAgICBj
b25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkxlZ2FjeVByb2ZpbGVyT2JzZXJ2ZXIsCisKKyAgICAv
LyBFdmVudHMgZGVmaW5lZCBieSB0aGUgIlByb2ZpbGVyIiBkb21haW4uCisKKyAgICByZXNldFBy
b2ZpbGVzOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRo
aXMuCisgICAgfSwKKworICAgIGFkZFByb2ZpbGVIZWFkZXI6IGZ1bmN0aW9uKHByb2ZpbGUpCisg
ICAgeworICAgICAgICBXZWJJbnNwZWN0b3IubGVnYWN5UHJvZmlsZU1hbmFnZXIuYWRkSmF2YVNj
cmlwdFByb2ZpbGUocHJvZmlsZSk7CisgICAgfSwKKworICAgIGFkZEhlYXBTbmFwc2hvdENodW5r
OiBmdW5jdGlvbih1aWQsIGNodW5rKQorICAgIHsKKyAgICAgICAgLy8gRklYTUU6IEltcGxlbWVu
dCB0aGlzICh3ZSBuZWVkIGhlYXAgc25hcHNob3RzKS4KKyAgICB9LAorCisgICAgZmluaXNoSGVh
cFNuYXBzaG90OiBmdW5jdGlvbih1aWQpCisgICAgeworICAgICAgICAvLyBGSVhNRTogSW1wbGVt
ZW50IHRoaXMgKHdlIG5lZWQgaGVhcCBzbmFwc2hvdHMpLgorICAgIH0sCisKKyAgICBzZXRSZWNv
cmRpbmdQcm9maWxlOiBmdW5jdGlvbihpc1Byb2ZpbGluZykKKyAgICB7CisgICAgICAgIFdlYklu
c3BlY3Rvci5sZWdhY3lQcm9maWxlTWFuYWdlci5zZXRSZWNvcmRpbmdKYXZhU2NyaXB0UHJvZmls
ZShpc1Byb2ZpbGluZyk7CisgICAgfSwKKworICAgIHJlcG9ydEhlYXBTbmFwc2hvdFByb2dyZXNz
OiBmdW5jdGlvbihkb25lLCB0b3RhbCkKKyAgICB7CisgICAgICAgIC8vIEZJWE1FOiBJbXBsZW1l
bnQgdGhpcyAod2UgbmVlZCBoZWFwIHNuYXBzaG90cykuCisgICAgfQorCit9OworCitXZWJJbnNw
ZWN0b3IuTGVnYWN5UHJvZmlsZXJPYnNlcnZlci5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5z
cGVjdG9yLk9iamVjdC5wcm90b3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9MZWdhY3lUb3BEb3duUHJvZmlsZURhdGFHcmlkVHJlZS5qcyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0xlZ2FjeVRvcERvd25Qcm9maWxlRGF0
YUdyaWRUcmVlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU1ZWJjNzI0YjYwMDM2MTQxNTIwMjg5OWI2ZTNjZGJm
MjA3ZGM1YjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9MZWdhY3lUb3BEb3duUHJvZmlsZURhdGFHcmlkVHJlZS5qcwpAQCAtMCwwICsxLDEy
MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSAyODAgTm9ydGggSW5jLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitX
ZWJJbnNwZWN0b3IuTGVnYWN5VG9wRG93blByb2ZpbGVEYXRhR3JpZE5vZGUgPSBmdW5jdGlvbihw
cm9maWxlTm9kZSwgb3duaW5nVHJlZSkKK3sKKyAgICB2YXIgaGFzQ2hpbGRyZW4gPSAocHJvZmls
ZU5vZGUuY2hpbGRyZW4gJiYgcHJvZmlsZU5vZGUuY2hpbGRyZW4ubGVuZ3RoKTsKKworICAgIFdl
Ykluc3BlY3Rvci5MZWdhY3lQcm9maWxlRGF0YUdyaWROb2RlLmNhbGwodGhpcywgcHJvZmlsZU5v
ZGUsIG93bmluZ1RyZWUsIGhhc0NoaWxkcmVuKTsKKworICAgIHRoaXMuX3JlbWFpbmluZ0NoaWxk
cmVuID0gcHJvZmlsZU5vZGUuY2hpbGRyZW47Cit9CisKK1dlYkluc3BlY3Rvci5MZWdhY3lUb3BE
b3duUHJvZmlsZURhdGFHcmlkTm9kZS5wcm90b3R5cGUgPSB7CisgICAgX3NoYXJlZFBvcHVsYXRl
OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB2YXIgY2hpbGRyZW4gPSB0aGlzLl9yZW1haW5p
bmdDaGlsZHJlbjsKKyAgICAgICAgdmFyIGNoaWxkcmVuTGVuZ3RoID0gY2hpbGRyZW4ubGVuZ3Ro
OworCisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRyZW5MZW5ndGg7ICsraSkKKyAg
ICAgICAgICAgIHRoaXMuYXBwZW5kQ2hpbGQobmV3IFdlYkluc3BlY3Rvci5MZWdhY3lUb3BEb3du
UHJvZmlsZURhdGFHcmlkTm9kZShjaGlsZHJlbltpXSwgdGhpcy50cmVlLCBmYWxzZSwgdGhpcy5z
aG93VGltZUFzUGVyY2VudCkpOworCisgICAgICAgIHRoaXMuX3JlbWFpbmluZ0NoaWxkcmVuID0g
bnVsbDsKKyAgICB9LAorCisgICAgX2V4Y2x1ZGU6IGZ1bmN0aW9uKGFDYWxsVUlEKQorICAgIHsK
KyAgICAgICAgaWYgKHRoaXMuX3JlbWFpbmluZ0NoaWxkcmVuKQorICAgICAgICAgICAgdGhpcy5f
cG9wdWxhdGUoKTsKKworICAgICAgICB0aGlzLl9zYXZlKCk7CisKKyAgICAgICAgdmFyIGNoaWxk
cmVuID0gdGhpcy5jaGlsZHJlbjsKKyAgICAgICAgdmFyIGluZGV4ID0gdGhpcy5jaGlsZHJlbi5s
ZW5ndGg7CisKKyAgICAgICAgd2hpbGUgKGluZGV4LS0pCisgICAgICAgICAgICBjaGlsZHJlbltp
bmRleF0uX2V4Y2x1ZGUoYUNhbGxVSUQpOworCisgICAgICAgIHZhciBjaGlsZCA9IHRoaXMuY2hp
bGRyZW5CeUNhbGxVSURbYUNhbGxVSURdOworCisgICAgICAgIGlmIChjaGlsZCkKKyAgICAgICAg
ICAgIHRoaXMuX21lcmdlKGNoaWxkLCB0cnVlKTsKKyAgICB9Cit9CisKK1dlYkluc3BlY3Rvci5M
ZWdhY3lUb3BEb3duUHJvZmlsZURhdGFHcmlkTm9kZS5wcm90b3R5cGUuX19wcm90b19fID0gV2Vi
SW5zcGVjdG9yLkxlZ2FjeVByb2ZpbGVEYXRhR3JpZE5vZGUucHJvdG90eXBlOworCitXZWJJbnNw
ZWN0b3IuTGVnYWN5VG9wRG93blByb2ZpbGVEYXRhR3JpZFRyZWUgPSBmdW5jdGlvbihwcm9maWxl
Tm9kZSkKK3sKKyAgICBXZWJJbnNwZWN0b3IuTGVnYWN5UHJvZmlsZURhdGFHcmlkVHJlZS5jYWxs
KHRoaXMsIHByb2ZpbGVOb2RlKTsKKworICAgIHRoaXMuX3JlbWFpbmluZ0NoaWxkcmVuID0gcHJv
ZmlsZU5vZGUuY2hpbGRyZW47CisKKyAgICBXZWJJbnNwZWN0b3IuTGVnYWN5VG9wRG93blByb2Zp
bGVEYXRhR3JpZE5vZGUucHJvdG90eXBlLl9wb3B1bGF0ZS5jYWxsKHRoaXMpOworfQorCitXZWJJ
bnNwZWN0b3IuTGVnYWN5VG9wRG93blByb2ZpbGVEYXRhR3JpZFRyZWUucHJvdG90eXBlID0gewor
ICAgIGZvY3VzOiBmdW5jdGlvbihwcm9maWxlRGF0YUdyaWRlTm9kZSkKKyAgICB7CisgICAgICAg
IGlmICghcHJvZmlsZURhdGFHcmlkZU5vZGUpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAg
ICAgdGhpcy5fc2F2ZSgpOworICAgICAgICBwcm9maWxlRGF0YUdyaWRlTm9kZS5zYXZlUG9zaXRp
b24oKTsKKworICAgICAgICB0aGlzLmNoaWxkcmVuID0gW3Byb2ZpbGVEYXRhR3JpZGVOb2RlXTsK
KyAgICAgICAgdGhpcy50b3RhbFRpbWUgPSBwcm9maWxlRGF0YUdyaWRlTm9kZS50b3RhbFRpbWU7
CisgICAgfSwKKworICAgIGV4Y2x1ZGU6IGZ1bmN0aW9uKHByb2ZpbGVEYXRhR3JpZGVOb2RlKQor
ICAgIHsKKyAgICAgICAgaWYgKCFwcm9maWxlRGF0YUdyaWRlTm9kZSkKKyAgICAgICAgICAgIHJl
dHVybjsKKworICAgICAgICB0aGlzLl9zYXZlKCk7CisKKyAgICAgICAgdmFyIGV4Y2x1ZGVkQ2Fs
bFVJRCA9IHByb2ZpbGVEYXRhR3JpZGVOb2RlLmNhbGxVSUQ7CisKKyAgICAgICAgV2ViSW5zcGVj
dG9yLkxlZ2FjeVRvcERvd25Qcm9maWxlRGF0YUdyaWROb2RlLnByb3RvdHlwZS5fZXhjbHVkZS5j
YWxsKHRoaXMsIGV4Y2x1ZGVkQ2FsbFVJRCk7CisKKyAgICAgICAgaWYgKHRoaXMubGFzdENvbXBh
cmF0b3IpCisgICAgICAgICAgICB0aGlzLnNvcnQodGhpcy5sYXN0Q29tcGFyYXRvciwgdHJ1ZSk7
CisgICAgfSwKKworICAgIHJlc3RvcmU6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGlmICgh
dGhpcy5fc2F2ZWRDaGlsZHJlbikKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlz
LmNoaWxkcmVuWzBdLnJlc3RvcmVQb3NpdGlvbigpOworCisgICAgICAgIFdlYkluc3BlY3Rvci5M
ZWdhY3lQcm9maWxlRGF0YUdyaWRUcmVlLnByb3RvdHlwZS5yZXN0b3JlLmNhbGwodGhpcyk7Cisg
ICAgfSwKKworICAgIF9tZXJnZTogV2ViSW5zcGVjdG9yLkxlZ2FjeVRvcERvd25Qcm9maWxlRGF0
YUdyaWROb2RlLnByb3RvdHlwZS5fbWVyZ2UsCisKKyAgICBfc2hhcmVkUG9wdWxhdGU6IFdlYklu
c3BlY3Rvci5MZWdhY3lUb3BEb3duUHJvZmlsZURhdGFHcmlkTm9kZS5wcm90b3R5cGUuX3NoYXJl
ZFBvcHVsYXRlCit9CisKK1dlYkluc3BlY3Rvci5MZWdhY3lUb3BEb3duUHJvZmlsZURhdGFHcmlk
VHJlZS5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLkxlZ2FjeVByb2ZpbGVEYXRh
R3JpZFRyZWUucHJvdG90eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvTWFpbi5odG1sIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvTWFpbi5odG1sCmluZGV4IDJlZjQ0N2VmMGI0ZDdmNmQ4YTc0MWM2MWEwMDE2MzY1ZmFmNDNi
OTcuLjY4ZDhkNjkyYzQ1MTdmMmQ2YTE2N2Y0YTc2M2QwMTViNTIwZjExYmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbAorKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwKQEAgLTk1LDggKzk1LDgg
QEAKICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ik5ldHdvcmtUaW1lbGluZU92ZXJ2
aWV3R3JhcGguY3NzIj4KICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IkxheW91dFRp
bWVsaW5lT3ZlcnZpZXdHcmFwaC5jc3MiPgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJl
Zj0iU2NyaXB0VGltZWxpbmVPdmVydmlld0dyYXBoLmNzcyI+Ci0gICAgPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSJQcm9maWxlVmlldy5jc3MiPgotICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iSmF2YVNjcmlwdFByb2ZpbGVWaWV3LmNzcyI+CisgICAgPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSJMZWdhY3lQcm9maWxlVmlldy5jc3MiPgorICAgIDxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgaHJlZj0iTGVnYWN5SmF2YVNjcmlwdFByb2ZpbGVWaWV3LmNzcyI+CiAgICAgPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJDU1NTdHlsZURldGFpbHNTaWRlYmFyUGFuZWwuY3Nz
Ij4KICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IkRPTVRyZWVEYXRhR3JpZC5jc3Mi
PgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iTGF5ZXJUcmVlU2lkZWJhclBhbmVs
LmNzcyI+CkBAIC0xNjgsMjEgKzE2OCwyMCBAQAogICAgIDxzY3JpcHQgc3JjPSJSZW1vdGVPYmpl
Y3QuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJJbnNwZWN0b3JPYnNlcnZlci5qcyI+
PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlBhZ2VPYnNlcnZlci5qcyI+PC9zY3JpcHQ+Ci0g
ICAgPHNjcmlwdCBzcmM9IkNhbnZhc09ic2VydmVyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0
IHNyYz0iQ29uc29sZU9ic2VydmVyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTmV0
d29ya09ic2VydmVyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQ1NTT2JzZXJ2ZXIu
anMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJET01PYnNlcnZlci5qcyI+PC9zY3JpcHQ+
CiAgICAgPHNjcmlwdCBzcmM9IkRlYnVnZ2VyT2JzZXJ2ZXIuanMiPjwvc2NyaXB0PgogICAgIDxz
Y3JpcHQgc3JjPSJEYXRhYmFzZU9ic2VydmVyLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNy
Yz0iUHJvZmlsZXJPYnNlcnZlci5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9IkxlZ2Fj
eVByb2ZpbGVyT2JzZXJ2ZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJMYXllclRy
ZWVPYnNlcnZlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlJ1bnRpbWVPYnNlcnZl
ci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkltYWdlVXRpbGl0aWVzLmpzIj48L3Nj
cmlwdD4KICAgICA8c2NyaXB0IHNyYz0iRGF0YUdyaWQuanMiPjwvc2NyaXB0PgotICAgIDxzY3Jp
cHQgc3JjPSJQcm9maWxlRGF0YUdyaWRUcmVlLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNy
Yz0iQm90dG9tVXBQcm9maWxlRGF0YUdyaWRUcmVlLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0
IHNyYz0iVG9wRG93blByb2ZpbGVEYXRhR3JpZFRyZWUuanMiPjwvc2NyaXB0PgorICAgIDxzY3Jp
cHQgc3JjPSJMZWdhY3lQcm9maWxlRGF0YUdyaWRUcmVlLmpzIj48L3NjcmlwdD4KKyAgICA8c2Ny
aXB0IHNyYz0iTGVnYWN5Qm90dG9tVXBQcm9maWxlRGF0YUdyaWRUcmVlLmpzIj48L3NjcmlwdD4K
KyAgICA8c2NyaXB0IHNyYz0iTGVnYWN5VG9wRG93blByb2ZpbGVEYXRhR3JpZFRyZWUuanMiPjwv
c2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJDb29raWVTdG9yYWdlT2JqZWN0LmpzIj48L3Njcmlw
dD4KICAgICA8c2NyaXB0IHNyYz0iRGF0YWJhc2VPYmplY3QuanMiPjwvc2NyaXB0PgogICAgIDxz
Y3JpcHQgc3JjPSJEYXRhYmFzZVRhYmxlT2JqZWN0LmpzIj48L3NjcmlwdD4KQEAgLTM3MywxNyAr
MzcyLDEzIEBACiAgICAgPHNjcmlwdCBzcmM9Ik5ldHdvcmtUaW1lbGluZU92ZXJ2aWV3R3JhcGgu
anMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJMYXlvdXRUaW1lbGluZU92ZXJ2aWV3R3Jh
cGguanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJTY3JpcHRUaW1lbGluZU92ZXJ2aWV3
R3JhcGguanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJQcm9maWxlTWFuYWdlci5qcyI+
PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9IlByb2ZpbGVUeXBlLmpzIj48L3NjcmlwdD4KLSAg
ICA8c2NyaXB0IHNyYz0iUHJvZmlsZVZpZXcuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3Jj
PSJKYXZhU2NyaXB0UHJvZmlsZVR5cGUuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJK
YXZhU2NyaXB0UHJvZmlsZVZpZXcuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJDYW52
YXNEYXRhR3JpZE5vZGUuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJDYW52YXNQcm9m
aWxlVHlwZS5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9IkNhbnZhc1Byb2ZpbGVWaWV3
LmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iUHJvZmlsZU9iamVjdC5qcyI+PC9zY3Jp
cHQ+Ci0gICAgPHNjcmlwdCBzcmM9IkphdmFTY3JpcHRQcm9maWxlT2JqZWN0LmpzIj48L3Njcmlw
dD4KLSAgICA8c2NyaXB0IHNyYz0iQ2FudmFzUHJvZmlsZU9iamVjdC5qcyI+PC9zY3JpcHQ+Cisg
ICAgPHNjcmlwdCBzcmM9IkxlZ2FjeVByb2ZpbGVNYW5hZ2VyLmpzIj48L3NjcmlwdD4KKyAgICA8
c2NyaXB0IHNyYz0iTGVnYWN5UHJvZmlsZVR5cGUuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQg
c3JjPSJMZWdhY3lQcm9maWxlVmlldy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ikxl
Z2FjeUphdmFTY3JpcHRQcm9maWxlVHlwZS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9
IkxlZ2FjeUphdmFTY3JpcHRQcm9maWxlVmlldy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBz
cmM9IkxlZ2FjeVByb2ZpbGVPYmplY3QuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJM
ZWdhY3lKYXZhU2NyaXB0UHJvZmlsZU9iamVjdC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBz
cmM9IkRlYnVnZ2VyU2lkZWJhclBhbmVsLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0i
QnJlYWtwb2ludFRyZWVFbGVtZW50LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQnJl
YWtwb2ludEFjdGlvbi5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9NYWluLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvTWFpbi5qcwppbmRleCA0NWI4YTdlMTBmYjMxMTI4NmU2YmEzZTgwNjFjZmI5MDMx
MGI2Y2YxLi42ZmYyMzUxZjU2NGEwMTZjMTM5MzQ2MjIzZGU2MzM5YmNkZGZmMGVlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmpzCisrKyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uanMKQEAgLTU0LDggKzU0LDYg
QEAgV2ViSW5zcGVjdG9yLmxvYWRlZCA9IGZ1bmN0aW9uKCkKICAgICAvLyBSZWdpc3RlciBvYnNl
cnZlcnMgZm9yIGV2ZW50cyBmcm9tIHRoZSBJbnNwZWN0b3JCYWNrZW5kLgogICAgIEluc3BlY3Rv
ckJhY2tlbmQucmVnaXN0ZXJJbnNwZWN0b3JEaXNwYXRjaGVyKG5ldyBXZWJJbnNwZWN0b3IuSW5z
cGVjdG9yT2JzZXJ2ZXIpOwogICAgIEluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJQYWdlRGlzcGF0
Y2hlcihuZXcgV2ViSW5zcGVjdG9yLlBhZ2VPYnNlcnZlcik7Ci0gICAgaWYgKEluc3BlY3RvckJh
Y2tlbmQucmVnaXN0ZXJDYW52YXNEaXNwYXRjaGVyKQotICAgICAgICBJbnNwZWN0b3JCYWNrZW5k
LnJlZ2lzdGVyQ2FudmFzRGlzcGF0Y2hlcihuZXcgV2ViSW5zcGVjdG9yLkNhbnZhc09ic2VydmVy
KTsKICAgICBJbnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVyQ29uc29sZURpc3BhdGNoZXIobmV3IFdl
Ykluc3BlY3Rvci5Db25zb2xlT2JzZXJ2ZXIpOwogICAgIEluc3BlY3RvckJhY2tlbmQucmVnaXN0
ZXJOZXR3b3JrRGlzcGF0Y2hlcihuZXcgV2ViSW5zcGVjdG9yLk5ldHdvcmtPYnNlcnZlcik7CiAg
ICAgSW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlckRPTURpc3BhdGNoZXIobmV3IFdlYkluc3BlY3Rv
ci5ET01PYnNlcnZlcik7CkBAIC02NCw3ICs2Miw3IEBAIFdlYkluc3BlY3Rvci5sb2FkZWQgPSBm
dW5jdGlvbigpCiAgICAgSW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlckRPTVN0b3JhZ2VEaXNwYXRj
aGVyKG5ldyBXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZU9ic2VydmVyKTsKICAgICBJbnNwZWN0b3JC
YWNrZW5kLnJlZ2lzdGVyQXBwbGljYXRpb25DYWNoZURpc3BhdGNoZXIobmV3IFdlYkluc3BlY3Rv
ci5BcHBsaWNhdGlvbkNhY2hlT2JzZXJ2ZXIpOwogICAgIEluc3BlY3RvckJhY2tlbmQucmVnaXN0
ZXJUaW1lbGluZURpc3BhdGNoZXIobmV3IFdlYkluc3BlY3Rvci5UaW1lbGluZU9ic2VydmVyKTsK
LSAgICBJbnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVyUHJvZmlsZXJEaXNwYXRjaGVyKG5ldyBXZWJJ
bnNwZWN0b3IuUHJvZmlsZXJPYnNlcnZlcik7CisgICAgSW5zcGVjdG9yQmFja2VuZC5yZWdpc3Rl
clByb2ZpbGVyRGlzcGF0Y2hlcihuZXcgV2ViSW5zcGVjdG9yLkxlZ2FjeVByb2ZpbGVyT2JzZXJ2
ZXIpOwogICAgIEluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJDU1NEaXNwYXRjaGVyKG5ldyBXZWJJ
bnNwZWN0b3IuQ1NTT2JzZXJ2ZXIpOwogICAgIGlmIChJbnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVy
TGF5ZXJUcmVlRGlzcGF0Y2hlcikKICAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5yZWdpc3Rlckxh
eWVyVHJlZURpc3BhdGNoZXIobmV3IFdlYkluc3BlY3Rvci5MYXllclRyZWVPYnNlcnZlcik7CkBA
IC05NCw3ICs5Miw3IEBAIFdlYkluc3BlY3Rvci5sb2FkZWQgPSBmdW5jdGlvbigpCiAgICAgdGhp
cy5ydW50aW1lTWFuYWdlciA9IG5ldyBXZWJJbnNwZWN0b3IuUnVudGltZU1hbmFnZXI7CiAgICAg
dGhpcy5hcHBsaWNhdGlvbkNhY2hlTWFuYWdlciA9IG5ldyBXZWJJbnNwZWN0b3IuQXBwbGljYXRp
b25DYWNoZU1hbmFnZXI7CiAgICAgdGhpcy50aW1lbGluZU1hbmFnZXIgPSBuZXcgV2ViSW5zcGVj
dG9yLlRpbWVsaW5lTWFuYWdlcjsKLSAgICB0aGlzLnByb2ZpbGVNYW5hZ2VyID0gbmV3IFdlYklu
c3BlY3Rvci5Qcm9maWxlTWFuYWdlcjsKKyAgICB0aGlzLnByb2ZpbGVNYW5hZ2VyID0gbmV3IFdl
Ykluc3BlY3Rvci5MZWdhY3lQcm9maWxlTWFuYWdlcjsKICAgICB0aGlzLmRlYnVnZ2VyTWFuYWdl
ciA9IG5ldyBXZWJJbnNwZWN0b3IuRGVidWdnZXJNYW5hZ2VyOwogICAgIHRoaXMuc291cmNlTWFw
TWFuYWdlciA9IG5ldyBXZWJJbnNwZWN0b3IuU291cmNlTWFwTWFuYWdlcjsKICAgICB0aGlzLmxh
eWVyVHJlZU1hbmFnZXIgPSBuZXcgV2ViSW5zcGVjdG9yLkxheWVyVHJlZU1hbmFnZXI7CkBAIC00
NTQsNyArNDUyLDcgQEAgV2ViSW5zcGVjdG9yLm9wZW5VUkwgPSBmdW5jdGlvbih1cmwsIGZyYW1l
LCBhbHdheXNPcGVuRXh0ZXJuYWxseSwgbGluZU51bWJlcikKICAgICB9CiAKICAgICB2YXIgcGFy
c2VkVVJMID0gcGFyc2VVUkwodXJsKTsKLSAgICBpZiAocGFyc2VkVVJMLnNjaGVtZSA9PT0gV2Vi
SW5zcGVjdG9yLlByb2ZpbGVUeXBlLlByb2ZpbGVTY2hlbWUpIHsKKyAgICBpZiAocGFyc2VkVVJM
LnNjaGVtZSA9PT0gV2ViSW5zcGVjdG9yLkxlZ2FjeVByb2ZpbGVUeXBlLlByb2ZpbGVTY2hlbWUp
IHsKICAgICAgICAgdmFyIHByb2ZpbGVUeXBlID0gcGFyc2VkVVJMLmhvc3QudG9VcHBlckNhc2Uo
KTsKICAgICAgICAgdmFyIHByb2ZpbGVUaXRsZSA9IHBhcnNlZFVSTC5wYXRoOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm9maWxlRGF0YUdyaWRU
cmVlLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvZmlsZURhdGFH
cmlkVHJlZS5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmU0YTQxODE0YzlhMzU0
MTUwZTJkOGNmNmUxNDQ0ZTVlM2ZmMzhjNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm9m
aWxlRGF0YUdyaWRUcmVlLmpzCisrKyAvZGV2L251bGwKQEAgLTEsNDAwICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDkgMjgwIE5vcnRoIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotV2ViSW5zcGVjdG9y
LlByb2ZpbGVEYXRhR3JpZE5vZGUgPSBmdW5jdGlvbihwcm9maWxlVmlldywgcHJvZmlsZU5vZGUs
IG93bmluZ1RyZWUsIGhhc0NoaWxkcmVuKQotewotICAgIHRoaXMucHJvZmlsZVZpZXcgPSBwcm9m
aWxlVmlldzsKLSAgICB0aGlzLnByb2ZpbGVOb2RlID0gcHJvZmlsZU5vZGU7Ci0KLSAgICBXZWJJ
bnNwZWN0b3IuRGF0YUdyaWROb2RlLmNhbGwodGhpcywgbnVsbCwgaGFzQ2hpbGRyZW4pOwotCi0g
ICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKCJwb3B1bGF0ZSIsIHRoaXMuX3BvcHVsYXRlLCB0aGlz
KTsKLQotICAgIHRoaXMudHJlZSA9IG93bmluZ1RyZWU7Ci0KLSAgICB0aGlzLmNoaWxkcmVuQnlD
YWxsVUlEID0ge307Ci0gICAgdGhpcy5sYXN0Q29tcGFyYXRvciA9IG51bGw7Ci0KLSAgICB0aGlz
LmNhbGxVSUQgPSBwcm9maWxlTm9kZS5jYWxsVUlEOwotICAgIHRoaXMuc2VsZlRpbWUgPSBwcm9m
aWxlTm9kZS5zZWxmVGltZTsKLSAgICB0aGlzLnRvdGFsVGltZSA9IHByb2ZpbGVOb2RlLnRvdGFs
VGltZTsKLSAgICB0aGlzLmZ1bmN0aW9uTmFtZSA9IHByb2ZpbGVOb2RlLmZ1bmN0aW9uTmFtZTsK
LSAgICB0aGlzLm51bWJlck9mQ2FsbHMgPSBwcm9maWxlTm9kZS5udW1iZXJPZkNhbGxzOwotICAg
IHRoaXMudXJsID0gcHJvZmlsZU5vZGUudXJsOwotfQotCi1XZWJJbnNwZWN0b3IuUHJvZmlsZURh
dGFHcmlkTm9kZS5wcm90b3R5cGUgPSB7Ci0gICAgZ2V0IGRhdGEoKQotICAgIHsKLSAgICAgICAg
ZnVuY3Rpb24gZm9ybWF0TWlsbGlzZWNvbmRzKHRpbWUpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IHJldHVybiBOdW1iZXIuc2Vjb25kc1RvU3RyaW5nKHRpbWUgLyAxMDAwLCB0cnVlKTsKLSAgICAg
ICAgfQotCi0gICAgICAgIHZhciBkYXRhID0ge307Ci0KLSAgICAgICAgZGF0YVsiZnVuY3Rpb24i
XSA9IHRoaXMuZnVuY3Rpb25OYW1lOwotICAgICAgICBkYXRhWyJjYWxscyJdID0gdGhpcy5udW1i
ZXJPZkNhbGxzOwotCi0gICAgICAgIGlmICh0aGlzLnByb2ZpbGVWaWV3LnNob3dUaW1lQXNQZXJj
ZW50LnZhbHVlKSB7Ci0gICAgICAgICAgICBkYXRhWyJzZWxmIl0gPSBXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIiUuMmYgJSUiKS5mb3JtYXQodGhpcy5zZWxmUGVyY2VudCk7Ci0gICAgICAgICAgICBk
YXRhWyJ0b3RhbCJdID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCIlLjJmICUlIikuZm9ybWF0KHRo
aXMudG90YWxQZXJjZW50KTsKLSAgICAgICAgICAgIGRhdGFbImF2ZXJhZ2UiXSA9IFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiJS4yZiAlJSIpLmZvcm1hdCh0aGlzLmF2ZXJhZ2VQZXJjZW50KTsKLSAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGRhdGFbInNlbGYiXSA9IGZvcm1hdE1pbGxpc2Vj
b25kcyh0aGlzLnNlbGZUaW1lKTsKLSAgICAgICAgICAgIGRhdGFbInRvdGFsIl0gPSBmb3JtYXRN
aWxsaXNlY29uZHModGhpcy50b3RhbFRpbWUpOwotICAgICAgICAgICAgZGF0YVsiYXZlcmFnZSJd
ID0gZm9ybWF0TWlsbGlzZWNvbmRzKHRoaXMuYXZlcmFnZVRpbWUpOwotICAgICAgICB9Ci0KLSAg
ICAgICAgcmV0dXJuIGRhdGE7Ci0gICAgfSwKLQotICAgIGNyZWF0ZUNlbGw6IGZ1bmN0aW9uKGNv
bHVtbklkZW50aWZpZXIpCi0gICAgewotICAgICAgICB2YXIgY2VsbCA9IFdlYkluc3BlY3Rvci5E
YXRhR3JpZE5vZGUucHJvdG90eXBlLmNyZWF0ZUNlbGwuY2FsbCh0aGlzLCBjb2x1bW5JZGVudGlm
aWVyKTsKLQotICAgICAgICBpZiAoY29sdW1uSWRlbnRpZmllciA9PT0gInNlbGYiICYmIHRoaXMu
X3NlYXJjaE1hdGNoZWRTZWxmQ29sdW1uKQotICAgICAgICAgICAgY2VsbC5jbGFzc0xpc3QuYWRk
KCJoaWdobGlnaHQiKTsKLSAgICAgICAgZWxzZSBpZiAoY29sdW1uSWRlbnRpZmllciA9PT0gInRv
dGFsIiAmJiB0aGlzLl9zZWFyY2hNYXRjaGVkVG90YWxDb2x1bW4pCi0gICAgICAgICAgICBjZWxs
LmNsYXNzTGlzdC5hZGQoImhpZ2hsaWdodCIpOwotICAgICAgICBlbHNlIGlmIChjb2x1bW5JZGVu
dGlmaWVyID09PSAiYXZlcmFnZSIgJiYgdGhpcy5fc2VhcmNoTWF0Y2hlZEF2ZXJhZ2VDb2x1bW4p
Ci0gICAgICAgICAgICBjZWxsLmNsYXNzTGlzdC5hZGQoImhpZ2hsaWdodCIpOwotICAgICAgICBl
bHNlIGlmIChjb2x1bW5JZGVudGlmaWVyID09PSAiY2FsbHMiICYmIHRoaXMuX3NlYXJjaE1hdGNo
ZWRDYWxsc0NvbHVtbikKLSAgICAgICAgICAgIGNlbGwuY2xhc3NMaXN0LmFkZCgiaGlnaGxpZ2h0
Iik7Ci0KLSAgICAgICAgaWYgKGNvbHVtbklkZW50aWZpZXIgIT09ICJmdW5jdGlvbiIpCi0gICAg
ICAgICAgICByZXR1cm4gY2VsbDsKLQotICAgICAgICBpZiAodGhpcy5wcm9maWxlTm9kZS5fc2Vh
cmNoTWF0Y2hlZEZ1bmN0aW9uQ29sdW1uKQotICAgICAgICAgICAgY2VsbC5jbGFzc0xpc3QuYWRk
KCJoaWdobGlnaHQiKTsKLQotICAgICAgICBpZiAodGhpcy5wcm9maWxlTm9kZS51cmwpIHsKLSAg
ICAgICAgICAgIC8vIEZJWE1FKDYyNzI1KTogcHJvZmlsZU5vZGUgc2hvdWxkIHJlZmVyZW5jZSBh
IGRlYnVnZ2VyIGxvY2F0aW9uLgotICAgICAgICAgICAgdmFyIGxpbmVOdW1iZXIgPSB0aGlzLnBy
b2ZpbGVOb2RlLmxpbmVOdW1iZXIgPyB0aGlzLnByb2ZpbGVOb2RlLmxpbmVOdW1iZXIgLSAxIDog
MDsKLSAgICAgICAgICAgIHZhciB1cmxFbGVtZW50ID0gdGhpcy5fbGlua2lmeUxvY2F0aW9uKHRo
aXMucHJvZmlsZU5vZGUudXJsLCBsaW5lTnVtYmVyLCAicHJvZmlsZS1ub2RlLWZpbGUiKTsKLSAg
ICAgICAgICAgIHVybEVsZW1lbnQuc3R5bGUubWF4V2lkdGggPSAiNzUlIjsKLSAgICAgICAgICAg
IGNlbGwuaW5zZXJ0QmVmb3JlKHVybEVsZW1lbnQsIGNlbGwuZmlyc3RDaGlsZCk7Ci0gICAgICAg
IH0KLQotICAgICAgICByZXR1cm4gY2VsbDsKLSAgICB9LAotCi0gICAgc2VsZWN0OiBmdW5jdGlv
bihzdXByZXNzU2VsZWN0ZWRFdmVudCkKLSAgICB7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5EYXRh
R3JpZE5vZGUucHJvdG90eXBlLnNlbGVjdC5jYWxsKHRoaXMsIHN1cHJlc3NTZWxlY3RlZEV2ZW50
KTsKLSAgICAgICAgdGhpcy5wcm9maWxlVmlldy5fZGF0YUdyaWROb2RlU2VsZWN0ZWQodGhpcyk7
Ci0gICAgfSwKLQotICAgIGRlc2VsZWN0OiBmdW5jdGlvbihzdXByZXNzRGVzZWxlY3RlZEV2ZW50
KQotICAgIHsKLSAgICAgICAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5wcm90b3R5cGUuZGVz
ZWxlY3QuY2FsbCh0aGlzLCBzdXByZXNzRGVzZWxlY3RlZEV2ZW50KTsKLSAgICAgICAgdGhpcy5w
cm9maWxlVmlldy5fZGF0YUdyaWROb2RlRGVzZWxlY3RlZCh0aGlzKTsKLSAgICB9LAotCi0gICAg
c29ydDogZnVuY3Rpb24oLypGdW5jdGlvbiovIGNvbXBhcmF0b3IsIC8qQm9vbGVhbiovIGZvcmNl
KQotICAgIHsKLSAgICAgICAgdmFyIGdyaWROb2RlR3JvdXBzID0gW1t0aGlzXV07Ci0KLSAgICAg
ICAgZm9yICh2YXIgZ3JpZE5vZGVHcm91cEluZGV4ID0gMDsgZ3JpZE5vZGVHcm91cEluZGV4IDwg
Z3JpZE5vZGVHcm91cHMubGVuZ3RoOyArK2dyaWROb2RlR3JvdXBJbmRleCkgewotICAgICAgICAg
ICAgdmFyIGdyaWROb2RlcyA9IGdyaWROb2RlR3JvdXBzW2dyaWROb2RlR3JvdXBJbmRleF07Ci0g
ICAgICAgICAgICB2YXIgY291bnQgPSBncmlkTm9kZXMubGVuZ3RoOwotCi0gICAgICAgICAgICBm
b3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwgY291bnQ7ICsraW5kZXgpIHsKLSAgICAgICAgICAg
ICAgICB2YXIgZ3JpZE5vZGUgPSBncmlkTm9kZXNbaW5kZXhdOwotCi0gICAgICAgICAgICAgICAg
Ly8gSWYgdGhlIGdyaWQgbm9kZSBpcyBjb2xsYXBzZWQsIHRoZW4gZG9uJ3Qgc29ydCBjaGlsZHJl
biAoc2F2ZSBvcGVyYXRpb24gZm9yIGxhdGVyKS4KLSAgICAgICAgICAgICAgICAvLyBJZiB0aGUg
Z3JpZCBub2RlIGhhcyB0aGUgc2FtZSBzb3J0aW5nIGFzIHByZXZpb3VzbHksIHRoZW4gdGhlcmUg
aXMgbm8gcG9pbnQgaW4gc29ydGluZyBpdCBhZ2Fpbi4KLSAgICAgICAgICAgICAgICBpZiAoIWZv
cmNlICYmICghZ3JpZE5vZGUuZXhwYW5kZWQgfHwgZ3JpZE5vZGUubGFzdENvbXBhcmF0b3IgPT09
IGNvbXBhcmF0b3IpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChncmlkTm9kZS5jaGlsZHJl
bi5sZW5ndGgpCi0gICAgICAgICAgICAgICAgICAgICAgICBncmlkTm9kZS5zaG91bGRSZWZyZXNo
Q2hpbGRyZW4gPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAg
ICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBncmlkTm9kZS5sYXN0Q29tcGFyYXRvciA9IGNv
bXBhcmF0b3I7Ci0KLSAgICAgICAgICAgICAgICB2YXIgY2hpbGRyZW4gPSBncmlkTm9kZS5jaGls
ZHJlbjsKLSAgICAgICAgICAgICAgICB2YXIgY2hpbGRDb3VudCA9IGNoaWxkcmVuLmxlbmd0aDsK
LQotICAgICAgICAgICAgICAgIGlmIChjaGlsZENvdW50KSB7Ci0gICAgICAgICAgICAgICAgICAg
IGNoaWxkcmVuLnNvcnQoY29tcGFyYXRvcik7Ci0KLSAgICAgICAgICAgICAgICAgICAgZm9yICh2
YXIgY2hpbGRJbmRleCA9IDA7IGNoaWxkSW5kZXggPCBjaGlsZENvdW50OyArK2NoaWxkSW5kZXgp
Ci0gICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbltjaGlsZEluZGV4XS5fcmVjYWxjdWxh
dGVTaWJsaW5ncyhjaGlsZEluZGV4KTsKLQotICAgICAgICAgICAgICAgICAgICBncmlkTm9kZUdy
b3Vwcy5wdXNoKGNoaWxkcmVuKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIH0KLSAgICB9LAotCi0gICAgaW5zZXJ0Q2hpbGQ6IGZ1bmN0aW9uKC8qUHJvZmlsZURh
dGFHcmlkTm9kZSovIHByb2ZpbGVEYXRhR3JpZE5vZGUsIGluZGV4KQotICAgIHsKLSAgICAgICAg
V2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5wcm90b3R5cGUuaW5zZXJ0Q2hpbGQuY2FsbCh0aGlz
LCBwcm9maWxlRGF0YUdyaWROb2RlLCBpbmRleCk7Ci0KLSAgICAgICAgdGhpcy5jaGlsZHJlbkJ5
Q2FsbFVJRFtwcm9maWxlRGF0YUdyaWROb2RlLmNhbGxVSURdID0gcHJvZmlsZURhdGFHcmlkTm9k
ZTsKLSAgICB9LAotCi0gICAgcmVtb3ZlQ2hpbGQ6IGZ1bmN0aW9uKC8qUHJvZmlsZURhdGFHcmlk
Tm9kZSovIHByb2ZpbGVEYXRhR3JpZE5vZGUpCi0gICAgewotICAgICAgICBXZWJJbnNwZWN0b3Iu
RGF0YUdyaWROb2RlLnByb3RvdHlwZS5yZW1vdmVDaGlsZC5jYWxsKHRoaXMsIHByb2ZpbGVEYXRh
R3JpZE5vZGUpOwotCi0gICAgICAgIGRlbGV0ZSB0aGlzLmNoaWxkcmVuQnlDYWxsVUlEW3Byb2Zp
bGVEYXRhR3JpZE5vZGUuY2FsbFVJRF07Ci0gICAgfSwKLQotICAgIHJlbW92ZUNoaWxkcmVuOiBm
dW5jdGlvbigvKlByb2ZpbGVEYXRhR3JpZE5vZGUqLyBwcm9maWxlRGF0YUdyaWROb2RlKQotICAg
IHsKLSAgICAgICAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5wcm90b3R5cGUucmVtb3ZlQ2hp
bGRyZW4uY2FsbCh0aGlzKTsKLQotICAgICAgICB0aGlzLmNoaWxkcmVuQnlDYWxsVUlEID0ge307
Ci0gICAgfSwKLQotICAgIGZpbmRDaGlsZDogZnVuY3Rpb24oLypOb2RlKi8gbm9kZSkKLSAgICB7
Ci0gICAgICAgIGlmICghbm9kZSkKLSAgICAgICAgICAgIHJldHVybiBudWxsOwotICAgICAgICBy
ZXR1cm4gdGhpcy5jaGlsZHJlbkJ5Q2FsbFVJRFtub2RlLmNhbGxVSURdOwotICAgIH0sCi0KLSAg
ICBnZXQgYXZlcmFnZVRpbWUoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuc2VsZlRpbWUg
LyBNYXRoLm1heCgxLCB0aGlzLm51bWJlck9mQ2FsbHMpOwotICAgIH0sCi0KLSAgICBnZXQgYXZl
cmFnZVBlcmNlbnQoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuYXZlcmFnZVRpbWUgLyB0
aGlzLnRyZWUudG90YWxUaW1lICogMTAwLjA7Ci0gICAgfSwKLQotICAgIGdldCBzZWxmUGVyY2Vu
dCgpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5zZWxmVGltZSAvIHRoaXMudHJlZS50b3Rh
bFRpbWUgKiAxMDAuMDsKLSAgICB9LAotCi0gICAgZ2V0IHRvdGFsUGVyY2VudCgpCi0gICAgewot
ICAgICAgICByZXR1cm4gdGhpcy50b3RhbFRpbWUgLyB0aGlzLnRyZWUudG90YWxUaW1lICogMTAw
LjA7Ci0gICAgfSwKLQotICAgIGdldCBfcGFyZW50KCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0
aGlzLnBhcmVudCAhPT0gdGhpcy5kYXRhR3JpZCA/IHRoaXMucGFyZW50IDogdGhpcy50cmVlOwot
ICAgIH0sCi0KLSAgICBfcG9wdWxhdGU6IGZ1bmN0aW9uKGV2ZW50KQotICAgIHsKLSAgICAgICAg
dGhpcy5fc2hhcmVkUG9wdWxhdGUoKTsKLQotICAgICAgICBpZiAodGhpcy5fcGFyZW50KSB7Ci0g
ICAgICAgICAgICB2YXIgY3VycmVudENvbXBhcmF0b3IgPSB0aGlzLl9wYXJlbnQubGFzdENvbXBh
cmF0b3I7Ci0KLSAgICAgICAgICAgIGlmIChjdXJyZW50Q29tcGFyYXRvcikKLSAgICAgICAgICAg
ICAgICB0aGlzLnNvcnQoY3VycmVudENvbXBhcmF0b3IsIHRydWUpOwotICAgICAgICB9Ci0KLSAg
ICAgICAgaWYgKHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcikKLSAgICAgICAgICAgIHRoaXMucmVt
b3ZlRXZlbnRMaXN0ZW5lcigicG9wdWxhdGUiLCB0aGlzLl9wb3B1bGF0ZSwgdGhpcyk7Ci0gICAg
fSwKLQotICAgIC8vIFdoZW4gZm9jdXNpbmcgYW5kIGNvbGxhcHNpbmcgd2UgbW9kaWZ5IGxvdHMg
b2Ygbm9kZXMgaW4gdGhlIHRyZWUuCi0gICAgLy8gVGhpcyBhbGxvd3MgdXMgdG8gcmVzdG9yZSB0
aGVtIGFsbCB0byB0aGVpciBvcmlnaW5hbCBzdGF0ZSB3aGVuIHdlIHJldmVydC4KLSAgICBfc2F2
ZTogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgaWYgKHRoaXMuX3NhdmVkQ2hpbGRyZW4pCi0g
ICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgdGhpcy5fc2F2ZWRTZWxmVGltZSA9IHRoaXMu
c2VsZlRpbWU7Ci0gICAgICAgIHRoaXMuX3NhdmVkVG90YWxUaW1lID0gdGhpcy50b3RhbFRpbWU7
Ci0gICAgICAgIHRoaXMuX3NhdmVkTnVtYmVyT2ZDYWxscyA9IHRoaXMubnVtYmVyT2ZDYWxsczsK
LQotICAgICAgICB0aGlzLl9zYXZlZENoaWxkcmVuID0gdGhpcy5jaGlsZHJlbi5zbGljZSgpOwot
ICAgIH0sCi0KLSAgICAvLyBXaGVuIGZvY3VzaW5nIGFuZCBjb2xsYXBzaW5nIHdlIG1vZGlmeSBs
b3RzIG9mIG5vZGVzIGluIHRoZSB0cmVlLgotICAgIC8vIFRoaXMgYWxsb3dzIHVzIHRvIHJlc3Rv
cmUgdGhlbSBhbGwgdG8gdGhlaXIgb3JpZ2luYWwgc3RhdGUgd2hlbiB3ZSByZXZlcnQuCi0gICAg
X3Jlc3RvcmU6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIGlmICghdGhpcy5fc2F2ZWRDaGls
ZHJlbikKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICB0aGlzLnNlbGZUaW1lID0gdGhp
cy5fc2F2ZWRTZWxmVGltZTsKLSAgICAgICAgdGhpcy50b3RhbFRpbWUgPSB0aGlzLl9zYXZlZFRv
dGFsVGltZTsKLSAgICAgICAgdGhpcy5udW1iZXJPZkNhbGxzID0gdGhpcy5fc2F2ZWROdW1iZXJP
ZkNhbGxzOwotCi0gICAgICAgIHRoaXMucmVtb3ZlQ2hpbGRyZW4oKTsKLQotICAgICAgICB2YXIg
Y2hpbGRyZW4gPSB0aGlzLl9zYXZlZENoaWxkcmVuOwotICAgICAgICB2YXIgY291bnQgPSBjaGls
ZHJlbi5sZW5ndGg7Ci0KLSAgICAgICAgZm9yICh2YXIgaW5kZXggPSAwOyBpbmRleCA8IGNvdW50
OyArK2luZGV4KSB7Ci0gICAgICAgICAgICBjaGlsZHJlbltpbmRleF0uX3Jlc3RvcmUoKTsKLSAg
ICAgICAgICAgIHRoaXMuYXBwZW5kQ2hpbGQoY2hpbGRyZW5baW5kZXhdKTsKLSAgICAgICAgfQot
ICAgIH0sCi0KLSAgICBfbWVyZ2U6IGZ1bmN0aW9uKGNoaWxkLCBzaG91bGRBYnNvcmIpCi0gICAg
ewotICAgICAgICB0aGlzLnNlbGZUaW1lICs9IGNoaWxkLnNlbGZUaW1lOwotCi0gICAgICAgIGlm
ICghc2hvdWxkQWJzb3JiKSB7Ci0gICAgICAgICAgICB0aGlzLnRvdGFsVGltZSArPSBjaGlsZC50
b3RhbFRpbWU7Ci0gICAgICAgICAgICB0aGlzLm51bWJlck9mQ2FsbHMgKz0gY2hpbGQubnVtYmVy
T2ZDYWxsczsKLSAgICAgICAgfQotCi0gICAgICAgIHZhciBjaGlsZHJlbiA9IHRoaXMuY2hpbGRy
ZW4uc2xpY2UoKTsKLQotICAgICAgICB0aGlzLnJlbW92ZUNoaWxkcmVuKCk7Ci0KLSAgICAgICAg
dmFyIGNvdW50ID0gY2hpbGRyZW4ubGVuZ3RoOwotCi0gICAgICAgIGZvciAodmFyIGluZGV4ID0g
MDsgaW5kZXggPCBjb3VudDsgKytpbmRleCkgewotICAgICAgICAgICAgaWYgKCFzaG91bGRBYnNv
cmIgfHwgY2hpbGRyZW5baW5kZXhdICE9PSBjaGlsZCkKLSAgICAgICAgICAgICAgICB0aGlzLmFw
cGVuZENoaWxkKGNoaWxkcmVuW2luZGV4XSk7Ci0gICAgICAgIH0KLQotICAgICAgICBjaGlsZHJl
biA9IGNoaWxkLmNoaWxkcmVuLnNsaWNlKCk7Ci0gICAgICAgIGNvdW50ID0gY2hpbGRyZW4ubGVu
Z3RoOwotCi0gICAgICAgIGZvciAodmFyIGluZGV4ID0gMDsgaW5kZXggPCBjb3VudDsgKytpbmRl
eCkgewotICAgICAgICAgICAgdmFyIG9ycGhhbmVkQ2hpbGQgPSBjaGlsZHJlbltpbmRleF0sCi0g
ICAgICAgICAgICAgICAgZXhpc3RpbmdDaGlsZCA9IHRoaXMuY2hpbGRyZW5CeUNhbGxVSURbb3Jw
aGFuZWRDaGlsZC5jYWxsVUlEXTsKLQotICAgICAgICAgICAgaWYgKGV4aXN0aW5nQ2hpbGQpCi0g
ICAgICAgICAgICAgICAgZXhpc3RpbmdDaGlsZC5fbWVyZ2Uob3JwaGFuZWRDaGlsZCwgZmFsc2Up
OwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHRoaXMuYXBwZW5kQ2hpbGQob3Jw
aGFuZWRDaGlsZCk7Ci0gICAgICAgIH0KLSAgICB9LAotICAgIAotICAgIF9saW5raWZ5TG9jYXRp
b246IGZ1bmN0aW9uKHVybCwgbGluZU51bWJlciwgY2xhc3NOYW1lKQotICAgIHsKLSAgICAgICAg
Ly8gRklYTUU6IENQVVByb2ZpbGVOb2RlJ3MgbmVlZCBjb2x1bW5OdW1iZXJzLgotICAgICAgICBy
ZXR1cm4gV2ViSW5zcGVjdG9yLmxpbmtpZnlMb2NhdGlvbih1cmwsIGxpbmVOdW1iZXIsIDAsIGNs
YXNzTmFtZSk7Ci0gICAgfQotfQotCi1XZWJJbnNwZWN0b3IuUHJvZmlsZURhdGFHcmlkTm9kZS5w
cm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5wcm90b3R5cGU7
Ci0KLVdlYkluc3BlY3Rvci5Qcm9maWxlRGF0YUdyaWRUcmVlID0gZnVuY3Rpb24ocHJvZmlsZVZp
ZXcsIHByb2ZpbGVOb2RlKQotewotICAgIHRoaXMudHJlZSA9IHRoaXM7Ci0gICAgdGhpcy5jaGls
ZHJlbiA9IFtdOwotCi0gICAgdGhpcy5wcm9maWxlVmlldyA9IHByb2ZpbGVWaWV3OwotCi0gICAg
dGhpcy50b3RhbFRpbWUgPSBwcm9maWxlTm9kZS50b3RhbFRpbWU7Ci0gICAgdGhpcy5sYXN0Q29t
cGFyYXRvciA9IG51bGw7Ci0KLSAgICB0aGlzLmNoaWxkcmVuQnlDYWxsVUlEID0ge307Ci19Ci0K
LVdlYkluc3BlY3Rvci5Qcm9maWxlRGF0YUdyaWRUcmVlLnByb3RvdHlwZSA9IHsKLSAgICBnZXQg
ZXhwYW5kZWQoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfSwKLQotICAgIGFw
cGVuZENoaWxkOiBmdW5jdGlvbihjaGlsZCkKLSAgICB7Ci0gICAgICAgIHRoaXMuaW5zZXJ0Q2hp
bGQoY2hpbGQsIHRoaXMuY2hpbGRyZW4ubGVuZ3RoKTsKLSAgICB9LAotCi0gICAgaW5zZXJ0Q2hp
bGQ6IGZ1bmN0aW9uKGNoaWxkLCBpbmRleCkKLSAgICB7Ci0gICAgICAgIHRoaXMuY2hpbGRyZW4u
c3BsaWNlKGluZGV4LCAwLCBjaGlsZCk7Ci0gICAgICAgIHRoaXMuY2hpbGRyZW5CeUNhbGxVSURb
Y2hpbGQuY2FsbFVJRF0gPSBjaGlsZDsKLSAgICB9LAotCi0gICAgcmVtb3ZlQ2hpbGRyZW46IGZ1
bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHRoaXMuY2hpbGRyZW4gPSBbXTsKLSAgICAgICAgdGhp
cy5jaGlsZHJlbkJ5Q2FsbFVJRCA9IHt9OwotICAgIH0sCi0KLSAgICBmaW5kQ2hpbGQ6IFdlYklu
c3BlY3Rvci5Qcm9maWxlRGF0YUdyaWROb2RlLnByb3RvdHlwZS5maW5kQ2hpbGQsCi0gICAgc29y
dDogV2ViSW5zcGVjdG9yLlByb2ZpbGVEYXRhR3JpZE5vZGUucHJvdG90eXBlLnNvcnQsCi0KLSAg
ICBfc2F2ZTogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgaWYgKHRoaXMuX3NhdmVkQ2hpbGRy
ZW4pCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgdGhpcy5fc2F2ZWRUb3RhbFRpbWUg
PSB0aGlzLnRvdGFsVGltZTsKLSAgICAgICAgdGhpcy5fc2F2ZWRDaGlsZHJlbiA9IHRoaXMuY2hp
bGRyZW4uc2xpY2UoKTsKLSAgICB9LAotCi0gICAgcmVzdG9yZTogZnVuY3Rpb24oKQotICAgIHsK
LSAgICAgICAgaWYgKCF0aGlzLl9zYXZlZENoaWxkcmVuKQotICAgICAgICAgICAgcmV0dXJuOwot
Ci0gICAgICAgIHRoaXMuY2hpbGRyZW4gPSB0aGlzLl9zYXZlZENoaWxkcmVuOwotICAgICAgICB0
aGlzLnRvdGFsVGltZSA9IHRoaXMuX3NhdmVkVG90YWxUaW1lOwotCi0gICAgICAgIHZhciBjaGls
ZHJlbiA9IHRoaXMuY2hpbGRyZW47Ci0gICAgICAgIHZhciBjb3VudCA9IGNoaWxkcmVuLmxlbmd0
aDsKLQotICAgICAgICBmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwgY291bnQ7ICsraW5kZXgp
Ci0gICAgICAgICAgICBjaGlsZHJlbltpbmRleF0uX3Jlc3RvcmUoKTsKLQotICAgICAgICB0aGlz
Ll9zYXZlZENoaWxkcmVuID0gbnVsbDsKLSAgICB9Ci19Ci0KLVdlYkluc3BlY3Rvci5Qcm9maWxl
RGF0YUdyaWRUcmVlLnByb3BlcnR5Q29tcGFyYXRvcnMgPSBbe30sIHt9XTsKLQotV2ViSW5zcGVj
dG9yLlByb2ZpbGVEYXRhR3JpZFRyZWUucHJvcGVydHlDb21wYXJhdG9yID0gZnVuY3Rpb24oLypT
dHJpbmcqLyBwcm9wZXJ0eSwgLypCb29sZWFuKi8gaXNBc2NlbmRpbmcpCi17Ci0gICAgdmFyIGNv
bXBhcmF0b3IgPSB0aGlzLnByb3BlcnR5Q29tcGFyYXRvcnNbKGlzQXNjZW5kaW5nID8gMSA6IDAp
XVtwcm9wZXJ0eV07Ci0KLSAgICBpZiAoIWNvbXBhcmF0b3IpIHsKLSAgICAgICAgaWYgKGlzQXNj
ZW5kaW5nKSB7Ci0gICAgICAgICAgICBjb21wYXJhdG9yID0gZnVuY3Rpb24obGhzLCByaHMpCi0g
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaWYgKGxoc1twcm9wZXJ0eV0gPCByaHNbcHJv
cGVydHldKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0KLSAgICAgICAgICAgICAg
ICBpZiAobGhzW3Byb3BlcnR5XSA+IHJoc1twcm9wZXJ0eV0pCi0gICAgICAgICAgICAgICAgICAg
IHJldHVybiAxOwotCi0gICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICAgICB9Owot
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgY29tcGFyYXRvciA9IGZ1bmN0aW9uKGxocywg
cmhzKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlmIChsaHNbcHJvcGVydHldID4g
cmhzW3Byb3BlcnR5XSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotCi0gICAgICAg
ICAgICAgICAgaWYgKGxoc1twcm9wZXJ0eV0gPCByaHNbcHJvcGVydHldKQotICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gMTsKLQotICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAg
ICAgfTsKLSAgICAgICAgfQotCi0gICAgICAgIHRoaXMucHJvcGVydHlDb21wYXJhdG9yc1soaXNB
c2NlbmRpbmcgPyAxIDogMCldW3Byb3BlcnR5XSA9IGNvbXBhcmF0b3I7Ci0gICAgfQotCi0gICAg
cmV0dXJuIGNvbXBhcmF0b3I7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Qcm9maWxlTWFuYWdlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1Byb2ZpbGVNYW5hZ2VyLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA1YTk4MmE0ZGRjYmI3MzJlYmNmYTE1ZTdmNzdhZGI1MjMyYWE2M2RhLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1Byb2ZpbGVNYW5hZ2VyLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMjI0
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi1XZWJJbnNwZWN0b3IuUHJvZmlsZU1hbmFnZXIgPSBmdW5j
dGlvbigpCi17Ci0gICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOwotCi0gICAgdGhp
cy5famF2YVNjcmlwdFByb2ZpbGVUeXBlID0gbmV3IFdlYkluc3BlY3Rvci5KYXZhU2NyaXB0UHJv
ZmlsZVR5cGU7Ci0gICAgdGhpcy5fY2FudmFzUHJvZmlsZVR5cGUgPSBuZXcgV2ViSW5zcGVjdG9y
LkNhbnZhc1Byb2ZpbGVUeXBlOwotCi0gICAgUHJvZmlsZXJBZ2VudC5lbmFibGUoKTsKLSAgICBQ
cm9maWxlckFnZW50LmdldFByb2ZpbGVIZWFkZXJzKCk7Ci0KLSAgICBXZWJJbnNwZWN0b3IuRnJh
bWUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRnJhbWUuRXZlbnQuTWFpblJlc291cmNl
RGlkQ2hhbmdlLCB0aGlzLl9tYWluUmVzb3VyY2VEaWRDaGFuZ2UsIHRoaXMpOwotCi0gICAgdGhp
cy5pbml0aWFsaXplKCk7Ci19OwotCi1XZWJJbnNwZWN0b3IuUHJvZmlsZU1hbmFnZXIuRXZlbnQg
PSB7Ci0gICAgUHJvZmlsZVdhc0FkZGVkOiAicHJvZmlsZS1tYW5hZ2VyLXByb2ZpbGUtd2FzLWFk
ZGVkIiwKLSAgICBQcm9maWxlV2FzVXBkYXRlZDogInByb2ZpbGUtbWFuYWdlci1wcm9maWxlLXdh
cy11cGRhdGVkIiwKLSAgICBQcm9maWxpbmdTdGFydGVkOiAicHJvZmlsZS1tYW5hZ2VyLXByb2Zp
bGluZy1zdGFydGVkIiwKLSAgICBQcm9maWxpbmdFbmRlZDogInByb2ZpbGUtbWFuYWdlci1wcm9m
aWxpbmctZW5kZWQiLAotICAgIFByb2ZpbGluZ0ludGVycnVwdGVkOiAicHJvZmlsZS1tYW5hZ2Vy
LXByb2ZpbGluZy1pbnRlcnJ1cHRlZCIsCi0gICAgQ2xlYXJlZDogInByb2ZpbGUtbWFuYWdlci1j
bGVhcmVkIgotfTsKLQotV2ViSW5zcGVjdG9yLlByb2ZpbGVNYW5hZ2VyLlVzZXJJbml0aWF0ZWRQ
cm9maWxlTmFtZSA9ICJvcmcud2Via2l0LnByb2ZpbGVzLnVzZXItaW5pdGlhdGVkIjsKLQotV2Vi
SW5zcGVjdG9yLlByb2ZpbGVNYW5hZ2VyLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3Rvcjog
V2ViSW5zcGVjdG9yLlByb2ZpbGVNYW5hZ2VyLAotCi0gICAgLy8gUHVibGljCi0KLSAgICBpbml0
aWFsaXplOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB0aGlzLl9jaGVja0ZvckludGVycnVw
dGlvbnMoKTsKLQotICAgICAgICB0aGlzLl9yZWNvcmRpbmdKYXZhU2NyaXB0UHJvZmlsZSA9IG51
bGw7Ci0gICAgICAgIHRoaXMuX3JlY29yZGluZ0NhbnZhc1Byb2ZpbGUgPSBudWxsOwotCi0gICAg
ICAgIHRoaXMuX2lzUHJvZmlsaW5nID0gZmFsc2U7Ci0KLSAgICAgICAgdGhpcy5kaXNwYXRjaEV2
ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlByb2ZpbGVNYW5hZ2VyLkV2ZW50LkNsZWFyZWQp
OwotICAgIH0sCi0KLSAgICBpc1Byb2ZpbGluZ0phdmFTY3JpcHQ6IGZ1bmN0aW9uKCkKLSAgICB7
Ci0gICAgICAgIHJldHVybiB0aGlzLl9qYXZhU2NyaXB0UHJvZmlsZVR5cGUuaXNSZWNvcmRpbmdQ
cm9maWxlKCk7Ci0gICAgfSwKLQotICAgIHN0YXJ0UHJvZmlsaW5nSmF2YVNjcmlwdDogZnVuY3Rp
b24oKQotICAgIHsKLSAgICAgICAgdGhpcy5famF2YVNjcmlwdFByb2ZpbGVUeXBlLnN0YXJ0UmVj
b3JkaW5nUHJvZmlsZSgpOwotICAgIH0sCi0KLSAgICBzdG9wUHJvZmlsaW5nSmF2YVNjcmlwdDog
ZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdGhpcy5famF2YVNjcmlwdFByb2ZpbGVUeXBlLnN0
b3BSZWNvcmRpbmdQcm9maWxlKCk7Ci0gICAgfSwKLQotICAgIGlzUHJvZmlsaW5nQ2FudmFzOiBm
dW5jdGlvbigpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fY2FudmFzUHJvZmlsZVR5cGUu
aXNSZWNvcmRpbmdQcm9maWxlKCk7Ci0gICAgfSwKLQotICAgIHN0YXJ0UHJvZmlsaW5nQ2FudmFz
OiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB0aGlzLl9jYW52YXNQcm9maWxlVHlwZS5zdGFy
dFJlY29yZGluZ1Byb2ZpbGUoKTsKLQotICAgICAgICB2YXIgaWQgPSB0aGlzLl9jYW52YXNQcm9m
aWxlVHlwZS5uZXh0UHJvZmlsZUlkKCk7Ci0gICAgICAgIHRoaXMuX3JlY29yZGluZ0NhbnZhc1By
b2ZpbGUgPSBuZXcgV2ViSW5zcGVjdG9yLkNhbnZhc1Byb2ZpbGVPYmplY3QoV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJDYW52YXMgUHJvZmlsZSAlZCIpLmZvcm1hdChpZCksIGlkLCB0cnVlKTsKLSAg
ICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlByb2ZpbGVN
YW5hZ2VyLkV2ZW50LlByb2ZpbGVXYXNBZGRlZCwge3Byb2ZpbGU6IHRoaXMuX3JlY29yZGluZ0Nh
bnZhc1Byb2ZpbGV9KTsKLQotICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhX
ZWJJbnNwZWN0b3IuUHJvZmlsZU1hbmFnZXIuRXZlbnQuUHJvZmlsaW5nU3RhcnRlZCk7Ci0gICAg
fSwKLQotICAgIHN0b3BQcm9maWxpbmdDYW52YXM6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAg
IGZ1bmN0aW9uIGNhbnZhc1Byb2ZpbGluZ1N0b3BwZWQoZXJyb3IsIHByb2ZpbGUpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIGlmIChlcnJvcikKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAg
ICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX3JlY29yZGluZ0NhbnZhc1Byb2ZpbGUpOwot
Ci0gICAgICAgICAgICB0aGlzLl9yZWNvcmRpbmdDYW52YXNQcm9maWxlLmRhdGEgPSBwcm9maWxl
LmRhdGE7Ci0gICAgICAgICAgICB0aGlzLl9yZWNvcmRpbmdDYW52YXNQcm9maWxlLnJlY29yZGlu
ZyA9IGZhbHNlOwotCi0gICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhX
ZWJJbnNwZWN0b3IuUHJvZmlsZU1hbmFnZXIuRXZlbnQuUHJvZmlsZVdhc1VwZGF0ZWQsIHtwcm9m
aWxlOiB0aGlzLl9yZWNvcmRpbmdDYW52YXNQcm9maWxlfSk7Ci0gICAgICAgICAgICB0aGlzLmRp
c3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuUHJvZmlsZU1hbmFnZXIuRXZlbnQu
UHJvZmlsaW5nRW5kZWQsIHtwcm9maWxlOiB0aGlzLl9yZWNvcmRpbmdDYW52YXNQcm9maWxlfSk7
Ci0KLSAgICAgICAgICAgIHRoaXMuX3JlY29yZGluZ0NhbnZhc1Byb2ZpbGUgPSBudWxsOwotICAg
ICAgICB9Ci0KLSAgICAgICAgdGhpcy5fY2FudmFzUHJvZmlsZVR5cGUuc3RvcFJlY29yZGluZ1By
b2ZpbGUoY2FudmFzUHJvZmlsaW5nU3RvcHBlZC5iaW5kKHRoaXMpKTsKLSAgICB9LAotCi0gICAg
cHJvZmlsZVdhc1N0YXJ0ZWRGcm9tQ29uc29sZTogZnVuY3Rpb24odGl0bGUpCi0gICAgewotICAg
ICAgICB0aGlzLnNldFJlY29yZGluZ0phdmFTY3JpcHRQcm9maWxlKHRydWUsIHRydWUpOwotCi0g
ICAgICAgIGlmICh0aXRsZS5pbmRleE9mKFdlYkluc3BlY3Rvci5Qcm9maWxlTWFuYWdlci5Vc2Vy
SW5pdGlhdGVkUHJvZmlsZU5hbWUpID09PSAtMSkgewotICAgICAgICAgICAgdGhpcy5fcmVjb3Jk
aW5nSmF2YVNjcmlwdFByb2ZpbGUudGl0bGUgPSB0aXRsZTsKLSAgICAgICAgICAgIHRoaXMuZGlz
cGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5Qcm9maWxlTWFuYWdlci5FdmVudC5Q
cm9maWxlV2FzVXBkYXRlZCwge3Byb2ZpbGU6IHRoaXMuX3JlY29yZGluZ0phdmFTY3JpcHRQcm9m
aWxlfSk7Ci0gICAgICAgIH0KLSAgICB9LAotCi0gICAgcHJvZmlsZVdhc0VuZGVkRnJvbUNvbnNv
bGU6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHRoaXMuc2V0UmVjb3JkaW5nSmF2YVNjcmlw
dFByb2ZpbGUoZmFsc2UsIHRydWUpOwotICAgIH0sCi0KLSAgICBhZGRKYXZhU2NyaXB0UHJvZmls
ZTogZnVuY3Rpb24ocHJvZmlsZSkKLSAgICB7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMu
X3JlY29yZGluZ0phdmFTY3JpcHRQcm9maWxlKTsKLSAgICAgICAgaWYgKCF0aGlzLl9yZWNvcmRp
bmdKYXZhU2NyaXB0UHJvZmlsZSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICB0aGlz
Ll9yZWNvcmRpbmdKYXZhU2NyaXB0UHJvZmlsZS50eXBlID0gcHJvZmlsZS50eXBlSWQ7Ci0gICAg
ICAgIHRoaXMuX3JlY29yZGluZ0phdmFTY3JpcHRQcm9maWxlLnRpdGxlID0gcHJvZmlsZS50aXRs
ZTsKLSAgICAgICAgdGhpcy5fcmVjb3JkaW5nSmF2YVNjcmlwdFByb2ZpbGUuaWQgPSBwcm9maWxl
LnVpZDsKLSAgICAgICAgdGhpcy5fcmVjb3JkaW5nSmF2YVNjcmlwdFByb2ZpbGUucmVjb3JkaW5n
ID0gZmFsc2U7Ci0KLSAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5z
cGVjdG9yLlByb2ZpbGVNYW5hZ2VyLkV2ZW50LlByb2ZpbGVXYXNVcGRhdGVkLCB7cHJvZmlsZTog
dGhpcy5fcmVjb3JkaW5nSmF2YVNjcmlwdFByb2ZpbGV9KTsKLQotICAgICAgICAvLyBXZSB3YW50
IHRvIHJlc2V0IF9yZWNvcmRpbmdKYXZhU2NyaXB0UHJvZmlsZSBzbyB0aGF0IHdlIGNhbiBpZGVu
dGlmeQotICAgICAgICAvLyBpbnRlcnJ1cHRpb25zLCBidXQgd2UgYWxzbyB3YW50IHRvIGtlZXAg
dHJhY2sgb2YgdGhlIGxhc3QgcHJvZmlsZQotICAgICAgICAvLyB3ZSd2ZSByZWNvcmRlZCBzbyB0
aGF0IHdlIGNhbiBwcm92aWRlIGl0IGFzIGRhdGEgdG8gdGhlIFByb2ZpbGluZ0VuZGVkIGV2ZW50
Ci0gICAgICAgIC8vIHdlJ2xsIGRpc3BhdGNoIGluIHNldFJlY29yZGluZ0phdmFTY3JpcHRQcm9m
aWxlKCkuCi0gICAgICAgIHRoaXMuX2xhc3RKYXZhU2NyaXB0UHJvZmlsZUFkZGVkID0gdGhpcy5f
cmVjb3JkaW5nSmF2YVNjcmlwdFByb2ZpbGU7Ci0gICAgICAgIHRoaXMuX3JlY29yZGluZ0phdmFT
Y3JpcHRQcm9maWxlID0gbnVsbDsKLSAgICB9LAotCi0gICAgc2V0UmVjb3JkaW5nSmF2YVNjcmlw
dFByb2ZpbGU6IGZ1bmN0aW9uKGlzUHJvZmlsaW5nLCBmcm9tQ29uc29sZSkKLSAgICB7Ci0gICAg
ICAgIGlmICh0aGlzLl9pc1Byb2ZpbGluZyA9PT0gaXNQcm9maWxpbmcpCi0gICAgICAgICAgICBy
ZXR1cm47Ci0KLSAgICAgICAgdGhpcy5faXNQcm9maWxpbmcgPSBpc1Byb2ZpbGluZzsKLQotICAg
ICAgICAvLyBXZSd2ZSBpbnRlcnJ1cHRlZCB0aGUgY3VycmVudCBKUyBwcm9maWxlIGR1ZSB0byBh
IHBhZ2UgcmVsb2FkLiBSZXR1cm4KLSAgICAgICAgLy8gbm93IGFuZCBfYXR0ZW1wdFRvUmVzdW1l
UHJvZmlsaW5nIHdpbGwgcGljayB0aGluZ3MgdXAgYWZ0ZXIgdGhlIHJlbG9hZC4KLSAgICAgICAg
aWYgKCFpc1Byb2ZpbGluZyAmJiAhIXRoaXMuX3JlY29yZGluZ0phdmFTY3JpcHRQcm9maWxlKQot
ICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlmIChpc1Byb2ZpbGluZyAmJiAhdGhpcy5f
cmVjb3JkaW5nSmF2YVNjcmlwdFByb2ZpbGUpCi0gICAgICAgICAgICB0aGlzLl9yZWNvcmRpbmdK
YXZhU2NyaXB0UHJvZmlsZSA9IG5ldyBXZWJJbnNwZWN0b3IuSmF2YVNjcmlwdFByb2ZpbGVPYmpl
Y3QoV2ViSW5zcGVjdG9yLlByb2ZpbGVNYW5hZ2VyLlVzZXJJbml0aWF0ZWRQcm9maWxlTmFtZSwg
LTEsIHRydWUpOwotCi0gICAgICAgIGlmIChpc1Byb2ZpbGluZykgewotICAgICAgICAgICAgdGhp
cy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlByb2ZpbGVNYW5hZ2VyLkV2
ZW50LlByb2ZpbGVXYXNBZGRlZCwge3Byb2ZpbGU6IHRoaXMuX3JlY29yZGluZ0phdmFTY3JpcHRQ
cm9maWxlfSk7Ci0gICAgICAgICAgICBpZiAoIWZyb21Db25zb2xlKQotICAgICAgICAgICAgICAg
IHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5Qcm9maWxlTWFuYWdl
ci5FdmVudC5Qcm9maWxpbmdTdGFydGVkKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
IHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5Qcm9maWxlTWFuYWdl
ci5FdmVudC5Qcm9maWxpbmdFbmRlZCwgewotICAgICAgICAgICAgICAgIHByb2ZpbGU6IHRoaXMu
X2xhc3RKYXZhU2NyaXB0UHJvZmlsZUFkZGVkLAotICAgICAgICAgICAgICAgIGZyb21Db25zb2xl
OiBmcm9tQ29uc29sZQotICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICB0aGlzLl9sYXN0SmF2
YVNjcmlwdFByb2ZpbGVBZGRlZCA9IG51bGw7Ci0gICAgICAgIH0KLSAgICB9LAotCi0gICAgLy8g
UHJpdmF0ZQotICAgIAotICAgIF9tYWluUmVzb3VyY2VEaWRDaGFuZ2U6IGZ1bmN0aW9uKGV2ZW50
KQotICAgIHsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoZXZlbnQudGFyZ2V0IGluc3RhbmNlb2Yg
V2ViSW5zcGVjdG9yLkZyYW1lKTsKLQotICAgICAgICBpZiAoIWV2ZW50LnRhcmdldC5pc01haW5G
cmFtZSgpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHZhciBvbGRNYWluUmVzb3Vy
Y2UgPSBldmVudC5kYXRhLm9sZE1haW5SZXNvdXJjZTsKLSAgICAgICAgdmFyIG5ld01haW5SZXNv
dXJjZSA9IGV2ZW50LnRhcmdldC5tYWluUmVzb3VyY2U7Ci0gICAgICAgIGlmIChvbGRNYWluUmVz
b3VyY2UudXJsICE9PSBuZXdNYWluUmVzb3VyY2UudXJsKQotICAgICAgICAgICAgdGhpcy5pbml0
aWFsaXplKCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRoaXMuX2F0dGVtcHRUb1Jlc3Vt
ZVByb2ZpbGluZygpOwotICAgIH0sCi0KLSAgICBfY2hlY2tGb3JJbnRlcnJ1cHRpb25zOiBmdW5j
dGlvbigpCi0gICAgewotICAgICAgICBpZiAodGhpcy5fcmVjb3JkaW5nSmF2YVNjcmlwdFByb2Zp
bGUpIHsKLSAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3Bl
Y3Rvci5Qcm9maWxlTWFuYWdlci5FdmVudC5Qcm9maWxpbmdJbnRlcnJ1cHRlZCwge3Byb2ZpbGU6
IHRoaXMuX3JlY29yZGluZ0phdmFTY3JpcHRQcm9maWxlfSk7Ci0gICAgICAgICAgICB0aGlzLl9q
YXZhU2NyaXB0UHJvZmlsZVR5cGUuc2V0UmVjb3JkaW5nUHJvZmlsZShmYWxzZSk7Ci0gICAgICAg
IH0gZWxzZSBpZiAodGhpcy5fcmVjb3JkaW5nQ2FudmFzUHJvZmlsZSkgewotICAgICAgICAgICAg
dGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlByb2ZpbGVNYW5hZ2Vy
LkV2ZW50LlByb2ZpbGluZ0ludGVycnVwdGVkLCB7cHJvZmlsZTogdGhpcy5fcmVjb3JkaW5nQ2Fu
dmFzUHJvZmlsZX0pOwotICAgICAgICAgICAgdGhpcy5fY2FudmFzUHJvZmlsZVR5cGUuc2V0UmVj
b3JkaW5nUHJvZmlsZShmYWxzZSk7Ci0gICAgICAgIH0KLSAgICB9LAotCi0gICAgX2F0dGVtcHRU
b1Jlc3VtZVByb2ZpbGluZzogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdGhpcy5fY2hlY2tG
b3JJbnRlcnJ1cHRpb25zKCk7Ci0KLSAgICAgICAgaWYgKHRoaXMuX3JlY29yZGluZ0phdmFTY3Jp
cHRQcm9maWxlKQotICAgICAgICAgICAgdGhpcy5zdGFydFByb2ZpbGluZ0phdmFTY3JpcHQoKTsK
LSAgICAgICAgZWxzZSBpZiAodGhpcy5fcmVjb3JkaW5nQ2FudmFzUHJvZmlsZSkKLSAgICAgICAg
ICAgIHRoaXMuc3RhcnRQcm9maWxpbmdDYW52YXMoKTsKLSAgICB9Ci19OwotCi1XZWJJbnNwZWN0
b3IuUHJvZmlsZU1hbmFnZXIucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5PYmpl
Y3QucHJvdG90eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvUHJvZmlsZU9iamVjdC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1Byb2ZpbGVPYmplY3QuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY3MmQ4
MThhNWI0NGRkNWI0ZjMxYjU5OWY0ODc2MzFlYzgyMTUzMjUuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvUHJvZmlsZU9iamVjdC5qcworKysgL2Rldi9udWxsCkBAIC0xLDkzICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi1XZWJJbnNwZWN0b3IuUHJvZmlsZU9iamVjdCA9IGZ1bmN0aW9uKHR5cGUsIHRp
dGxlLCBpZCwgaXNSZWNvcmRpbmcpCi17Ci0gICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRo
aXMpOwotCi0gICAgY29uc29sZS5hc3NlcnQodHlwZSk7Ci0gICAgY29uc29sZS5hc3NlcnQodGl0
bGUpOwotICAgIGNvbnNvbGUuYXNzZXJ0KGlkKTsKLQotICAgIHRoaXMuX3R5cGUgPSB0eXBlOwot
ICAgIHRoaXMuX3RpdGxlID0gdGl0bGU7Ci0gICAgdGhpcy5faWQgPSBpZDsKLSAgICB0aGlzLl9p
c1JlY29yZGluZyA9IGlzUmVjb3JkaW5nIHx8IGZhbHNlOwotfTsKLQotV2ViSW5zcGVjdG9yLlBy
b2ZpbGVPYmplY3QuRXZlbnQgPSB7Ci0gICAgRmluc2hlZFJlY29yZGluZzogInByb2ZpbGUtb2Jq
ZWN0LWZpbmlzaGVkLXJlY29yZGluZyIKLX07Ci0KLVdlYkluc3BlY3Rvci5Qcm9maWxlT2JqZWN0
LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLlByb2ZpbGVPYmpl
Y3QsCi0gICAgCi0gICAgZ2V0IHR5cGUoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX3R5
cGU7Ci0gICAgfSwKLQotICAgIHNldCB0eXBlKHR5cGUpCi0gICAgewotICAgICAgICB0aGlzLl90
eXBlID0gdHlwZTsKLSAgICB9LAotICAgIAotICAgIGdldCB0aXRsZSgpCi0gICAgewotICAgICAg
ICByZXR1cm4gdGhpcy5fdGl0bGU7Ci0gICAgfSwKLQotICAgIHNldCB0aXRsZSh0aXRsZSkKLSAg
ICB7Ci0gICAgICAgIHRoaXMuX3RpdGxlID0gdGl0bGU7Ci0gICAgfSwKLQotICAgIGdldCBpZCgp
Ci0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5faWQ7Ci0gICAgfSwKLQotICAgIHNldCBpZChp
ZCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX2lkID0gaWQ7Ci0gICAgfSwKLQotICAgIGdldCByZWNv
cmRpbmcoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2lzUmVjb3JkaW5nOwotICAgIH0s
Ci0KLSAgICBzZXQgcmVjb3JkaW5nKGZsYWcpCi0gICAgewotICAgICAgICBpZiAodGhpcy5faXNS
ZWNvcmRpbmcgPT09IGZsYWcpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgdGhpcy5f
aXNSZWNvcmRpbmcgPSBmbGFnOwotICAgICAgICBpZiAoIWZsYWcpCi0gICAgICAgICAgICB0aGlz
LmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuUHJvZmlsZU9iamVjdC5FdmVu
dC5GaW5zaGVkUmVjb3JkaW5nKTsKLSAgICB9Ci19OwotCi1XZWJJbnNwZWN0b3IuUHJvZmlsZU9i
amVjdC5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm9maWxl
VHlwZS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb2ZpbGVUeXBl
LmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZjJkNjc5NmFiOGY1Y2YwN2RiNmM4
OWNkY2ZhNjRkZmFhY2NiM2I1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb2ZpbGVUeXBl
LmpzCisrKyAvZGV2L251bGwKQEAgLTEsODcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwOCwgMjAxMyBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLVdlYkluc3BlY3Rvci5Qcm9maWxlVHlwZSA9
IGZ1bmN0aW9uKGlkLCBuYW1lKQotewotICAgIHRoaXMuX2lkID0gaWQ7Ci0gICAgdGhpcy5fbmFt
ZSA9IG5hbWU7Ci19Ci0KLVdlYkluc3BlY3Rvci5Qcm9maWxlVHlwZS5VUkxSZWdFeHAgPSAvd2Vi
a2l0LXByb2ZpbGU6XC9cLyguKylcLyguKykjKFswLTldKykvOwotV2ViSW5zcGVjdG9yLlByb2Zp
bGVUeXBlLlByb2ZpbGVTY2hlbWUgPSAid2Via2l0LXByb2ZpbGUiOwotCi1XZWJJbnNwZWN0b3Iu
UHJvZmlsZVR5cGUucHJvdG90eXBlID0gewotICAgIGdldCBidXR0b25Ub29sdGlwKCkKLSAgICB7
Ci0gICAgICAgIHJldHVybiAiIjsKLSAgICB9LAotCi0gICAgZ2V0IGlkKCkKLSAgICB7Ci0gICAg
ICAgIHJldHVybiB0aGlzLl9pZDsKLSAgICB9LAotCi0gICAgZ2V0IHRyZWVJdGVtVGl0bGUoKQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX25hbWU7Ci0gICAgfSwKLQotICAgIGdldCBuYW1l
KCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9uYW1lOwotICAgIH0sCi0KLSAgICBidXR0
b25DbGlja2VkOiBmdW5jdGlvbigpCi0gICAgewotICAgIH0sCi0KLSAgICB2aWV3Rm9yUHJvZmls
ZTogZnVuY3Rpb24ocHJvZmlsZSkKLSAgICB7Ci0gICAgICAgIGlmICghcHJvZmlsZS5fcHJvZmls
ZVZpZXcpCi0gICAgICAgICAgICBwcm9maWxlLl9wcm9maWxlVmlldyA9IHRoaXMuY3JlYXRlVmll
dyhwcm9maWxlKTsKLSAgICAgICAgcmV0dXJuIHByb2ZpbGUuX3Byb2ZpbGVWaWV3OwotICAgIH0s
Ci0KLSAgICByZXNldDogZnVuY3Rpb24oKQotICAgIHsKLSAgICB9LAotCi0gICAgZ2V0IGRlc2Ny
aXB0aW9uKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiAiIjsKLSAgICB9LAotCi0gICAgLy8gTXVz
dCBiZSBpbXBsZW1lbnRlZCBieSBzdWJjbGFzc2VzLgotICAgIGNyZWF0ZVZpZXc6IGZ1bmN0aW9u
KHByb2ZpbGUpCi0gICAgewotICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIk5lZWRzIGltcGxlbWVu
dGVkLiIpOwotICAgIH0sCi0KLSAgICAvLyBNdXN0IGJlIGltcGxlbWVudGVkIGJ5IHN1YmNsYXNz
ZXMuCi0gICAgY3JlYXRlU2lkZWJhclRyZWVFbGVtZW50Rm9yUHJvZmlsZTogZnVuY3Rpb24ocHJv
ZmlsZSkKLSAgICB7Ci0gICAgICAgIHRocm93IG5ldyBFcnJvcigiTmVlZHMgaW1wbGVtZW50ZWQu
Iik7Ci0gICAgfQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvUHJvZmlsZVZpZXcuY3NzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvUHJvZmlsZVZpZXcuY3NzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NGQ3YWU1
Y2IzMzA0YzVkMzYwMWIxNTEwOTZiYWZkZThmMmE2M2UwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1Byb2ZpbGVWaWV3LmNzcworKysgL2Rldi9udWxsCkBAIC0xLDU5ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0ucmVjb3JkaW5nLXByb2ZpbGUtdmlldyB7Ci0gICAgcG9zaXRpb246IGFic29sdXRl
OwotICAgIHRvcDogMDsKLSAgICByaWdodDogMDsKLSAgICBib3R0b206IDA7Ci0gICAgbGVmdDog
MDsKLQotICAgIGRpc3BsYXk6IC13ZWJraXQtZmxleDsKLSAgICAtd2Via2l0LWZsZXgtZmxvdzog
cm93IG5vd3JhcDsKLSAgICAtd2Via2l0LWp1c3RpZnktY29udGVudDogY2VudGVyOwotICAgIC13
ZWJraXQtYWxpZ24tY29udGVudDogY2VudGVyOwotICAgIC13ZWJraXQtYWxpZ24taXRlbXM6IGNl
bnRlcjsKLSAgICAKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjMyLCAyMzIsIDIzMik7Ci19
Ci0KLS5yZWNvcmRpbmctcHJvZmlsZS12aWV3ID4gLmluZGV0ZXJtaW5hdGUtcHJvZ3Jlc3Mtc3Bp
bm5lciB7Ci0gICAgcG9zaXRpb246IHN0YXRpYzsKLSAgICBtYXJnaW46IDA7Ci19Ci0KLS5yZWNv
cmRpbmctcHJvZmlsZS12aWV3ID4gc3BhbiB7Ci0gICAgZm9udC1mYW1pbHk6ICdMdWNpZGEgR3Jh
bmRlJywgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOwotICAgIGZvbnQtc2l6ZTogMTRweDsKLQotICAg
IHRleHQtc2hhZG93OiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSkgMCAxcHggMDsKLSAgICBjb2xv
cjogcmdiKDYwLCA2MCwgNjApOwotCi0gICAgcGFkZGluZy1sZWZ0OiAxMHB4OwotCi0gICAgb3Zl
cmZsb3c6IGhpZGRlbjsKLSAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKLSAgICB3aGl0ZS1z
cGFjZTogbm93cmFwOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvUHJvZmlsZVZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Qcm9maWxlVmlldy5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjdiNTNi
NDRiN2ZjNmM2MmY3YzExNzA4OGNmYWYxMzIwYjQ3YTQ3NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Qcm9maWxlVmlldy5qcworKysgL2Rldi9udWxsCkBAIC0xLDEwOSArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotV2ViSW5zcGVjdG9yLlByb2ZpbGVWaWV3ID0gZnVuY3Rpb24ocHJvZmlsZSwgc2V0
dGluZ0lkKQotewotICAgIFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5jYWxsKHRoaXMsIHByb2Zp
bGUpOwotCi0gICAgdGhpcy5fcHJvZmlsZSA9IHByb2ZpbGU7Ci0KLSAgICB0aGlzLmVsZW1lbnQu
Y2xhc3NMaXN0LmFkZCgicHJvZmlsZS12aWV3Iik7Ci0KLSAgICB0aGlzLnNob3dUaW1lQXNQZXJj
ZW50ID0gbmV3IFdlYkluc3BlY3Rvci5TZXR0aW5nKHNldHRpbmdJZCwgdHJ1ZSk7Ci0gICAgdGhp
cy5zaG93VGltZUFzUGVyY2VudE5hdmlnYXRpb25JdGVtID0gbmV3IFdlYkluc3BlY3Rvci5BY3Rp
dmF0ZUJ1dHRvbk5hdmlnYXRpb25JdGVtKCJzZWxlY3Rvci1wcm9maWxlci1zaG93LXRpbWUtYXMt
cGVyY2VudC1uYXZpZ2F0aW9uLWl0ZW0iLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNob3cgdGlt
ZXMgYXMgcGVyY2VudGFnZXMiKSwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTaG93IHRpbWVzIGFz
IGFic29sdXRlIHRpbWVzIiksICJJbWFnZXMvUGVyY2VudC5zdmciLCAxNiwgMTYpOwotICAgIHRo
aXMuc2hvd1RpbWVBc1BlcmNlbnROYXZpZ2F0aW9uSXRlbS5hZGRFdmVudExpc3RlbmVyKFdlYklu
c3BlY3Rvci5CdXR0b25OYXZpZ2F0aW9uSXRlbS5FdmVudC5DbGlja2VkLCB0aGlzLnRvZ2dsZVRp
bWVEaXNwbGF5LCB0aGlzKTsKLSAgICB0aGlzLnNob3dUaW1lQXNQZXJjZW50TmF2aWdhdGlvbkl0
ZW0uYWN0aXZhdGVkID0gdGhpcy5zaG93VGltZUFzUGVyY2VudC52YWx1ZTsKLQotICAgIGlmIChw
cm9maWxlLnJlY29yZGluZykgewotICAgICAgICB0aGlzLl9zaG93UmVjb3JkaW5nTWVzc2FnZSgp
OwotICAgICAgICBwcm9maWxlLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlByb2ZpbGVP
YmplY3QuRXZlbnQuRmluc2hlZFJlY29yZGluZywgdGhpcy5fcHJvZmlsZUZpbmlzaGVkUmVjb3Jk
aW5nLCB0aGlzKTsKLSAgICB9IGVsc2UKLSAgICAgICAgdGhpcy5kaXNwbGF5UHJvZmlsZSgpOwot
fTsKLQotV2ViSW5zcGVjdG9yLlByb2ZpbGVWaWV3LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1
Y3RvcjogV2ViSW5zcGVjdG9yLlByb2ZpbGVWaWV3LAotCi0gICAgLy8gUHVibGljCi0KLSAgICBn
ZXQgbmF2aWdhdGlvbkl0ZW1zKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBbdGhpcy5zaG93VGlt
ZUFzUGVyY2VudE5hdmlnYXRpb25JdGVtXTsKLSAgICB9LAotCi0gICAgZ2V0IGFsbG93ZWROYXZp
Z2F0aW9uU2lkZWJhclBhbmVscygpCi0gICAgewotICAgICAgICByZXR1cm4gWyJpbnN0cnVtZW50
Il07Ci0gICAgfSwKLQotICAgIGdldCBwcm9maWxlKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0
aGlzLl9wcm9maWxlOwotICAgIH0sCi0KLSAgICBzZXQgcHJvZmlsZShwcm9maWxlKQotICAgIHsK
LSAgICAgICAgdGhpcy5fcHJvZmlsZSA9IHByb2ZpbGU7Ci0gICAgfSwKLSAgICAKLSAgICB0b2dn
bGVUaW1lRGlzcGxheTogZnVuY3Rpb24oZXZlbnQpCi0gICAgewotICAgICAgICB0aGlzLnNob3dU
aW1lQXNQZXJjZW50TmF2aWdhdGlvbkl0ZW0uYWN0aXZhdGVkID0gIXRoaXMuc2hvd1RpbWVBc1Bl
cmNlbnROYXZpZ2F0aW9uSXRlbS5hY3RpdmF0ZWQ7Ci0gICAgfSwKLQotICAgIGRpc3BsYXlQcm9m
aWxlOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSBzdWJjbGFz
c2VzLgotICAgIH0sCi0KLSAgICBnZXQgcmVjb3JkaW5nVGl0bGUoKQotICAgIHsKLSAgICAgICAg
cmV0dXJuIFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmVjb3JkaW5nXHUyMDI2Iik7Ci0gICAgfSwK
LSAgICAKLSAgICAvLyBQcml2YXRlCi0gICAgCi0gICAgX3Byb2ZpbGVGaW5pc2hlZFJlY29yZGlu
ZzogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdGhpcy5faGlkZVJlY29yZGluZ01lc3NhZ2Uo
KTsKLSAgICAgICAgdGhpcy5kaXNwbGF5UHJvZmlsZSgpOwotICAgIH0sCi0gICAgCi0gICAgX3No
b3dSZWNvcmRpbmdNZXNzYWdlOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB0aGlzLl9yZWNv
cmRpbmdNZXNzYWdlQ29udGFpbmVyID0gdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImRpdiIpKTsKLSAgICAgICAgdGhpcy5fcmVjb3JkaW5nTWVzc2FnZUNv
bnRhaW5lci5jbGFzc05hbWUgPSAicmVjb3JkaW5nLXByb2ZpbGUtdmlldyI7Ci0gICAgICAgIHRo
aXMuX3JlY29yZGluZ01lc3NhZ2VDb250YWluZXIuYXBwZW5kQ2hpbGQobmV3IFdlYkluc3BlY3Rv
ci5JbmRldGVybWluYXRlUHJvZ3Jlc3NTcGlubmVyKCkuZWxlbWVudCk7Ci0gICAgICAgIHRoaXMu
X3JlY29yZGluZ01lc3NhZ2VDb250YWluZXIuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgic3BhbiIpKS50ZXh0Q29udGVudCA9IHRoaXMucmVjb3JkaW5nVGl0bGU7Ci0gICAgfSwK
LSAgICAKLSAgICBfaGlkZVJlY29yZGluZ01lc3NhZ2U6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAg
ICAgIGlmICh0aGlzLl9yZWNvcmRpbmdNZXNzYWdlQ29udGFpbmVyKQotICAgICAgICAgICAgdGhp
cy5fcmVjb3JkaW5nTWVzc2FnZUNvbnRhaW5lci5yZW1vdmUoKTsKLSAgICB9Ci19OwotCi1XZWJJ
bnNwZWN0b3IuUHJvZmlsZVZpZXcucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5D
b250ZW50Vmlldy5wcm90b3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Qcm9maWxlck9ic2VydmVyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvUHJvZmlsZXJPYnNlcnZlci5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggZGI4ZDBiZTk0Y2FmNDYwMmI3NGViOTBhZjRlZjE1ZjBhNjdhMmMyNC4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Qcm9maWxlck9ic2VydmVyLmpzCisrKyAvZGV2L251bGwKQEAg
LTEsNjggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLVdlYkluc3BlY3Rvci5Qcm9maWxlck9ic2VydmVy
ID0gZnVuY3Rpb24oKQotewotICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKLX07
Ci0KLVdlYkluc3BlY3Rvci5Qcm9maWxlck9ic2VydmVyLnByb3RvdHlwZSA9IHsKLSAgICBjb25z
dHJ1Y3RvcjogV2ViSW5zcGVjdG9yLlByb2ZpbGVyT2JzZXJ2ZXIsCi0KLSAgICAvLyBFdmVudHMg
ZGVmaW5lZCBieSB0aGUgIlByb2ZpbGVyIiBkb21haW4uCi0KLSAgICByZXNldFByb2ZpbGVzOiBm
dW5jdGlvbigpCi0gICAgewotICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMuCi0gICAg
fSwKLQotICAgIGFkZFByb2ZpbGVIZWFkZXI6IGZ1bmN0aW9uKHByb2ZpbGUpCi0gICAgewotICAg
ICAgICBXZWJJbnNwZWN0b3IucHJvZmlsZU1hbmFnZXIuYWRkSmF2YVNjcmlwdFByb2ZpbGUocHJv
ZmlsZSk7Ci0gICAgfSwKLQotICAgIGFkZEhlYXBTbmFwc2hvdENodW5rOiBmdW5jdGlvbih1aWQs
IGNodW5rKQotICAgIHsKLSAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzICh3ZSBuZWVk
IGhlYXAgc25hcHNob3RzKS4KLSAgICB9LAotCi0gICAgZmluaXNoSGVhcFNuYXBzaG90OiBmdW5j
dGlvbih1aWQpCi0gICAgewotICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMgKHdlIG5l
ZWQgaGVhcCBzbmFwc2hvdHMpLgotICAgIH0sCi0KLSAgICBzZXRSZWNvcmRpbmdQcm9maWxlOiBm
dW5jdGlvbihpc1Byb2ZpbGluZykKLSAgICB7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5wcm9maWxl
TWFuYWdlci5zZXRSZWNvcmRpbmdKYXZhU2NyaXB0UHJvZmlsZShpc1Byb2ZpbGluZyk7Ci0gICAg
fSwKLQotICAgIHJlcG9ydEhlYXBTbmFwc2hvdFByb2dyZXNzOiBmdW5jdGlvbihkb25lLCB0b3Rh
bCkKLSAgICB7Ci0gICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyAod2UgbmVlZCBoZWFw
IHNuYXBzaG90cykuCi0gICAgfQotCi19OwotCi1XZWJJbnNwZWN0b3IuUHJvZmlsZXJPYnNlcnZl
ci5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Ub3BEb3duUHJv
ZmlsZURhdGFHcmlkVHJlZS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1RvcERvd25Qcm9maWxlRGF0YUdyaWRUcmVlLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBiZmNjMjVlZWViYzQxYzAwYzRhNjY0YjM3YmZhZGFjN2U0ODFhZGE2Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1RvcERvd25Qcm9maWxlRGF0YUdyaWRUcmVlLmpzCisrKyAvZGV2L251
bGwKQEAgLTEsMTIxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgMjgwIE5vcnRo
IEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
Ci0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotV2ViSW5zcGVjdG9yLlRvcERvd25Qcm9maWxlRGF0YUdyaWROb2RlID0g
ZnVuY3Rpb24oLypQcm9maWxlVmlldyovIHByb2ZpbGVWaWV3LCAvKlByb2ZpbGVOb2RlKi8gcHJv
ZmlsZU5vZGUsIC8qVG9wRG93blByb2ZpbGVEYXRhR3JpZFRyZWUqLyBvd25pbmdUcmVlKQotewot
ICAgIHZhciBoYXNDaGlsZHJlbiA9IChwcm9maWxlTm9kZS5jaGlsZHJlbiAmJiBwcm9maWxlTm9k
ZS5jaGlsZHJlbi5sZW5ndGgpOwotCi0gICAgV2ViSW5zcGVjdG9yLlByb2ZpbGVEYXRhR3JpZE5v
ZGUuY2FsbCh0aGlzLCBwcm9maWxlVmlldywgcHJvZmlsZU5vZGUsIG93bmluZ1RyZWUsIGhhc0No
aWxkcmVuKTsKLQotICAgIHRoaXMuX3JlbWFpbmluZ0NoaWxkcmVuID0gcHJvZmlsZU5vZGUuY2hp
bGRyZW47Ci19Ci0KLVdlYkluc3BlY3Rvci5Ub3BEb3duUHJvZmlsZURhdGFHcmlkTm9kZS5wcm90
b3R5cGUgPSB7Ci0gICAgX3NoYXJlZFBvcHVsYXRlOiBmdW5jdGlvbigpCi0gICAgewotICAgICAg
ICB2YXIgY2hpbGRyZW4gPSB0aGlzLl9yZW1haW5pbmdDaGlsZHJlbjsKLSAgICAgICAgdmFyIGNo
aWxkcmVuTGVuZ3RoID0gY2hpbGRyZW4ubGVuZ3RoOwotCi0gICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgY2hpbGRyZW5MZW5ndGg7ICsraSkKLSAgICAgICAgICAgIHRoaXMuYXBwZW5kQ2hpbGQo
bmV3IFdlYkluc3BlY3Rvci5Ub3BEb3duUHJvZmlsZURhdGFHcmlkTm9kZSh0aGlzLnByb2ZpbGVW
aWV3LCBjaGlsZHJlbltpXSwgdGhpcy50cmVlKSk7Ci0KLSAgICAgICAgdGhpcy5fcmVtYWluaW5n
Q2hpbGRyZW4gPSBudWxsOwotICAgIH0sCi0KLSAgICBfZXhjbHVkZTogZnVuY3Rpb24oYUNhbGxV
SUQpCi0gICAgewotICAgICAgICBpZiAodGhpcy5fcmVtYWluaW5nQ2hpbGRyZW4pCi0gICAgICAg
ICAgICB0aGlzLl9wb3B1bGF0ZSgpOwotCi0gICAgICAgIHRoaXMuX3NhdmUoKTsKLQotICAgICAg
ICB2YXIgY2hpbGRyZW4gPSB0aGlzLmNoaWxkcmVuOwotICAgICAgICB2YXIgaW5kZXggPSB0aGlz
LmNoaWxkcmVuLmxlbmd0aDsKLQotICAgICAgICB3aGlsZSAoaW5kZXgtLSkKLSAgICAgICAgICAg
IGNoaWxkcmVuW2luZGV4XS5fZXhjbHVkZShhQ2FsbFVJRCk7Ci0KLSAgICAgICAgdmFyIGNoaWxk
ID0gdGhpcy5jaGlsZHJlbkJ5Q2FsbFVJRFthQ2FsbFVJRF07Ci0KLSAgICAgICAgaWYgKGNoaWxk
KQotICAgICAgICAgICAgdGhpcy5fbWVyZ2UoY2hpbGQsIHRydWUpOwotICAgIH0KLX0KLQotV2Vi
SW5zcGVjdG9yLlRvcERvd25Qcm9maWxlRGF0YUdyaWROb2RlLnByb3RvdHlwZS5fX3Byb3RvX18g
PSBXZWJJbnNwZWN0b3IuUHJvZmlsZURhdGFHcmlkTm9kZS5wcm90b3R5cGU7Ci0KLVdlYkluc3Bl
Y3Rvci5Ub3BEb3duUHJvZmlsZURhdGFHcmlkVHJlZSA9IGZ1bmN0aW9uKC8qUHJvZmlsZVZpZXcq
LyBwcm9maWxlVmlldywgLypQcm9maWxlTm9kZSovIHByb2ZpbGVOb2RlKQotewotICAgIFdlYklu
c3BlY3Rvci5Qcm9maWxlRGF0YUdyaWRUcmVlLmNhbGwodGhpcywgcHJvZmlsZVZpZXcsIHByb2Zp
bGVOb2RlKTsKLQotICAgIHRoaXMuX3JlbWFpbmluZ0NoaWxkcmVuID0gcHJvZmlsZU5vZGUuY2hp
bGRyZW47Ci0KLSAgICBXZWJJbnNwZWN0b3IuVG9wRG93blByb2ZpbGVEYXRhR3JpZE5vZGUucHJv
dG90eXBlLl9wb3B1bGF0ZS5jYWxsKHRoaXMpOwotfQotCi1XZWJJbnNwZWN0b3IuVG9wRG93blBy
b2ZpbGVEYXRhR3JpZFRyZWUucHJvdG90eXBlID0gewotICAgIGZvY3VzOiBmdW5jdGlvbigvKlBy
b2ZpbGVEYXRhR3JpZE5vZGUqLyBwcm9maWxlRGF0YUdyaWRlTm9kZSkKLSAgICB7Ci0gICAgICAg
IGlmICghcHJvZmlsZURhdGFHcmlkZU5vZGUpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAg
ICAgdGhpcy5fc2F2ZSgpOwotICAgICAgICBwcm9maWxlRGF0YUdyaWRlTm9kZS5zYXZlUG9zaXRp
b24oKTsKLQotICAgICAgICB0aGlzLmNoaWxkcmVuID0gW3Byb2ZpbGVEYXRhR3JpZGVOb2RlXTsK
LSAgICAgICAgdGhpcy50b3RhbFRpbWUgPSBwcm9maWxlRGF0YUdyaWRlTm9kZS50b3RhbFRpbWU7
Ci0gICAgfSwKLQotICAgIGV4Y2x1ZGU6IGZ1bmN0aW9uKC8qUHJvZmlsZURhdGFHcmlkTm9kZSov
IHByb2ZpbGVEYXRhR3JpZGVOb2RlKQotICAgIHsKLSAgICAgICAgaWYgKCFwcm9maWxlRGF0YUdy
aWRlTm9kZSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICB0aGlzLl9zYXZlKCk7Ci0K
LSAgICAgICAgdmFyIGV4Y2x1ZGVkQ2FsbFVJRCA9IHByb2ZpbGVEYXRhR3JpZGVOb2RlLmNhbGxV
SUQ7Ci0KLSAgICAgICAgV2ViSW5zcGVjdG9yLlRvcERvd25Qcm9maWxlRGF0YUdyaWROb2RlLnBy
b3RvdHlwZS5fZXhjbHVkZS5jYWxsKHRoaXMsIGV4Y2x1ZGVkQ2FsbFVJRCk7Ci0KLSAgICAgICAg
aWYgKHRoaXMubGFzdENvbXBhcmF0b3IpCi0gICAgICAgICAgICB0aGlzLnNvcnQodGhpcy5sYXN0
Q29tcGFyYXRvciwgdHJ1ZSk7Ci0gICAgfSwKLQotICAgIHJlc3RvcmU6IGZ1bmN0aW9uKCkKLSAg
ICB7Ci0gICAgICAgIGlmICghdGhpcy5fc2F2ZWRDaGlsZHJlbikKLSAgICAgICAgICAgIHJldHVy
bjsKLQotICAgICAgICB0aGlzLmNoaWxkcmVuWzBdLnJlc3RvcmVQb3NpdGlvbigpOwotCi0gICAg
ICAgIFdlYkluc3BlY3Rvci5Qcm9maWxlRGF0YUdyaWRUcmVlLnByb3RvdHlwZS5yZXN0b3JlLmNh
bGwodGhpcyk7Ci0gICAgfSwKLQotICAgIF9tZXJnZTogV2ViSW5zcGVjdG9yLlRvcERvd25Qcm9m
aWxlRGF0YUdyaWROb2RlLnByb3RvdHlwZS5fbWVyZ2UsCi0KLSAgICBfc2hhcmVkUG9wdWxhdGU6
IFdlYkluc3BlY3Rvci5Ub3BEb3duUHJvZmlsZURhdGFHcmlkTm9kZS5wcm90b3R5cGUuX3NoYXJl
ZFBvcHVsYXRlCi19Ci0KLVdlYkluc3BlY3Rvci5Ub3BEb3duUHJvZmlsZURhdGFHcmlkVHJlZS5w
cm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLlByb2ZpbGVEYXRhR3JpZFRyZWUucHJv
dG90eXBlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222281</attachid>
            <date>2014-01-26 12:17:53 -0800</date>
            <delta_ts>2014-01-28 16:06:34 -0800</delta_ts>
            <desc>Better Patch</desc>
            <filename>127655.patch</filename>
            <type>text/plain</type>
            <size>68691</size>
            <attacher name="Timothy Hatcher">timothy</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDYyMDIzNTkuLjIyZTM4ZTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDE0LTAxLTI2ICBUaW1vdGh5IEhhdGNo
ZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KKworICAgICAgICBQcmVmaXggZXhpc3RpbmcgV2ViIElu
c3BlY3RvciBwcm9maWxlciBjbGFzc2VzIHdpdGggIkxlZ2FjeSIuCisKKyAgICAgICAgUmVtb3Zl
IGEgZGVwZW5kZW5jeSBvbiBQcm9maWxlVmlldyBmb3Igc2hvd1RpbWVBc1BlcmNlbnQgYW5kIHNl
bGVjdGlvbiBhcyBhIGRyaXZlLWJ5LgorICAgICAgICBBbHNvIHJlbW92ZSB0aGUgdW5maW5pc2hl
ZCBDYW52YXMgcHJvZmlsZXIgY2xhc3NlcywgdGhleSB3aWxsIG5lZWQgcmVkb25lIGZvciB0aGUg
VGltZWxpbmUgdmlldy4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTI3NjU1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0NhbnZhc0RhdGFHcmlkTm9kZS5qczogUmVtb3ZlZC4K
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0NhbnZhc09ic2VydmVyLmpzOiBSZW1vdmVkLgorICAg
ICAgICAqIFVzZXJJbnRlcmZhY2UvQ2FudmFzUHJvZmlsZU9iamVjdC5qczogUmVtb3ZlZC4KKyAg
ICAgICAgKiBVc2VySW50ZXJmYWNlL0NhbnZhc1Byb2ZpbGVUeXBlLmpzOiBSZW1vdmVkLgorICAg
ICAgICAqIFVzZXJJbnRlcmZhY2UvQ2FudmFzUHJvZmlsZVZpZXcuanM6IFJlbW92ZWQuCisgICAg
ICAgICogVXNlckludGVyZmFjZS9Db25zb2xlT2JzZXJ2ZXIuanM6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuQ29uc29sZU9ic2VydmVyLnByb3RvdHlwZS5tZXNzYWdlQWRkZWQpOgorICAgICAgICAq
IFVzZXJJbnRlcmZhY2UvQ29udGVudFZpZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29u
dGVudFZpZXcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LmlzVmlld2FibGUp
OgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvSW5zcGVjdG9yRnJvbnRlbmRBUEkuanM6CisgICAg
ICAgIChJbnNwZWN0b3JGcm9udGVuZEFQSS5pc1Byb2ZpbGluZ0phdmFTY3JpcHQpOgorICAgICAg
ICAoSW5zcGVjdG9yRnJvbnRlbmRBUEkuc3RhcnRQcm9maWxpbmdKYXZhU2NyaXB0KToKKyAgICAg
ICAgKEluc3BlY3RvckZyb250ZW5kQVBJLnN0b3BQcm9maWxpbmdKYXZhU2NyaXB0KToKKyAgICAg
ICAgKiBVc2VySW50ZXJmYWNlL0xlZ2FjeUJvdHRvbVVwUHJvZmlsZURhdGFHcmlkVHJlZS5qczog
UmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0JvdHRvbVVw
UHJvZmlsZURhdGFHcmlkVHJlZS5qcy4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0xlZ2FjeUph
dmFTY3JpcHRQcm9maWxlT2JqZWN0LmpzOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvSmF2YVNjcmlwdFByb2ZpbGVPYmplY3QuanMuCisgICAgICAgICog
VXNlckludGVyZmFjZS9MZWdhY3lKYXZhU2NyaXB0UHJvZmlsZVR5cGUuanM6IFJlbmFtZWQgZnJv
bSBTb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9KYXZhU2NyaXB0UHJvZmlsZVR5
cGUuanMuCisgICAgICAgICogVXNlckludGVyZmFjZS9MZWdhY3lKYXZhU2NyaXB0UHJvZmlsZVZp
ZXcuY3NzOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
SmF2YVNjcmlwdFByb2ZpbGVWaWV3LmNzcy4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0xlZ2Fj
eUphdmFTY3JpcHRQcm9maWxlVmlldy5qczogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL0phdmFTY3JpcHRQcm9maWxlVmlldy5qcy4KKyAgICAgICAgKiBV
c2VySW50ZXJmYWNlL0xlZ2FjeVByb2ZpbGVEYXRhR3JpZFRyZWUuanM6IFJlbmFtZWQgZnJvbSBT
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm9maWxlRGF0YUdyaWRUcmVlLmpz
LgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTGVnYWN5UHJvZmlsZU1hbmFnZXIuanM6IFJlbmFt
ZWQgZnJvbSBTb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm9maWxlTWFuYWdl
ci5qcy4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0xlZ2FjeVByb2ZpbGVPYmplY3QuanM6IFJl
bmFtZWQgZnJvbSBTb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm9maWxlT2Jq
ZWN0LmpzLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTGVnYWN5UHJvZmlsZVR5cGUuanM6IFJl
bmFtZWQgZnJvbSBTb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm9maWxlVHlw
ZS5qcy4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0xlZ2FjeVByb2ZpbGVWaWV3LmNzczogUmVu
YW1lZCBmcm9tIFNvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb2ZpbGVWaWV3
LmNzcy4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0xlZ2FjeVByb2ZpbGVWaWV3LmpzOiBSZW5h
bWVkIGZyb20gU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvZmlsZVZpZXcu
anMuCisgICAgICAgICogVXNlckludGVyZmFjZS9MZWdhY3lQcm9maWxlck9ic2VydmVyLmpzOiBS
ZW5hbWVkIGZyb20gU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvZmlsZXJP
YnNlcnZlci5qcy4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0xlZ2FjeVRvcERvd25Qcm9maWxl
RGF0YUdyaWRUcmVlLmpzOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVG9wRG93blByb2ZpbGVEYXRhR3JpZFRyZWUuanMuCisgICAgICAgICogVXNlcklu
dGVyZmFjZS9NYWluLmh0bWw6CisgICAgICAgICogVXNlckludGVyZmFjZS9NYWluLmpzOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLmxvYWRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iub3BlblVS
TCk6CisKIDIwMTQtMDEtMjUgIFRpbW90aHkgSGF0Y2hlciAgPHRpbW90aHlAYXBwbGUuY29tPgog
CiAgICAgICAgIFJlbW92ZSBkZWFkIGNvZGUgZnJvbSB0aGUgSlNDIHByb2ZpbGVyLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ2FudmFzRGF0YUdyaWRO
b2RlLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ2FudmFzRGF0YUdy
aWROb2RlLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMGJiYWRiLi4wMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NhbnZhc0RhdGFHcmlk
Tm9kZS5qcworKysgL2Rldi9udWxsCkBAIC0xLDY3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1XZWJJbnNwZWN0b3IuQ2FudmFzRGF0YUdyaWRO
b2RlID0gZnVuY3Rpb24ocHJvZmlsZVZpZXcsIGRhdGEpCi17Ci0gICAgV2ViSW5zcGVjdG9yLkRh
dGFHcmlkTm9kZS5jYWxsKHRoaXMsIGRhdGEsIGZhbHNlKTsKLSAgICB0aGlzLl9wcm9maWxlVmll
dyA9IHByb2ZpbGVWaWV3OwotfQotCi1XZWJJbnNwZWN0b3IuQ2FudmFzRGF0YUdyaWROb2RlLnBy
b3RvdHlwZSA9IHsKLQotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuQ2FudmFzRGF0YUdy
aWROb2RlLAotCi0gICAgZ2V0IGRhdGEoKQotICAgIHsKLSAgICAgICAgdmFyIGRhdGEgPSB7fTsK
LSAgICAgICAgcmV0dXJuIGRhdGE7Ci0gICAgfSwKLQotICAgIGdldCByYXdEYXRhKCkKLSAgICB7
Ci0gICAgICAgIHJldHVybiB0aGlzLl9kYXRhOwotICAgIH0sCi0KLSAgICBjcmVhdGVDZWxsOiBm
dW5jdGlvbihjb2x1bW5JZGVudGlmaWVyKQotICAgIHsKLSAgICAgICAgdmFyIGNlbGwgPSBXZWJJ
bnNwZWN0b3IuRGF0YUdyaWROb2RlLnByb3RvdHlwZS5jcmVhdGVDZWxsLmNhbGwodGhpcywgY29s
dW1uSWRlbnRpZmllcik7Ci0gICAgICAgIGNlbGwucmVtb3ZlQ2hpbGRyZW4oKTsKLQotICAgICAg
ICBpZiAodGhpcy5yYXdEYXRhLnVybCkgewotICAgICAgICAgICAgdmFyIHdyYXBwZXJEaXYgPSBj
ZWxsLmNyZWF0ZUNoaWxkKCJkaXYiKTsKLSAgICAgICAgICAgIHdyYXBwZXJEaXYuYXBwZW5kQ2hp
bGQodGhpcy5fbGlua2lmeUxvY2F0aW9uKHRoaXMucmF3RGF0YS51cmwsIHRoaXMucmF3RGF0YS5s
aW5lTnVtYmVyLCB0aGlzLnJhd0RhdGEuY29sdW1uTnVtYmVyKSk7Ci0gICAgICAgIH0KLQotICAg
ICAgICByZXR1cm4gY2VsbDsKLSAgICB9LAotCi0gICAgX2xpbmtpZnlMb2NhdGlvbjogZnVuY3Rp
b24odXJsLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCi0gICAgewotICAgICAgICByZXR1cm4g
V2ViSW5zcGVjdG9yLmxpbmtpZnlMb2NhdGlvbih1cmwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJl
ciB8fCAwKTsKLSAgICB9Ci19Ci0KLVdlYkluc3BlY3Rvci5DYW52YXNEYXRhR3JpZE5vZGUucHJv
dG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUucHJvdG90eXBlOwot
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9DYW52YXNP
YnNlcnZlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NhbnZhc09i
c2VydmVyLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYmQ1NmE3Li4wMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NhbnZhc09ic2VydmVy
LmpzCisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLVdlYkluc3Bl
Y3Rvci5DYW52YXNPYnNlcnZlciA9IGZ1bmN0aW9uKCkKLXsKLSAgICBXZWJJbnNwZWN0b3IuT2Jq
ZWN0LmNhbGwodGhpcyk7Ci19OwotCi1XZWJJbnNwZWN0b3IuQ2FudmFzT2JzZXJ2ZXIucHJvdG90
eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuQ2FudmFzT2JzZXJ2ZXIsCi0K
LSAgICAvLyBFdmVudHMgZGVmaW5lZCBieSB0aGUgIkNhbnZhcyIgZG9tYWluLgotCi0gICAgY29u
dGV4dENyZWF0ZWQ6IGZ1bmN0aW9uKGZyYW1lSWQpCi0gICAgewotICAgICAgICAvLyBGSVhNRTog
SW1wbGVtZW50IHRoaXMuCi0gICAgfSwKLQotICAgIHRyYWNlTG9nc1JlbW92ZWQ6IGZ1bmN0aW9u
KGZyYW1lSWQsIHRyYWNlTG9nSWQpCi0gICAgewotICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50
IHRoaXMuCi0gICAgfQotfTsKLQotV2ViSW5zcGVjdG9yLkNhbnZhc09ic2VydmVyLnByb3RvdHlw
ZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NhbnZhc1Byb2ZpbGVPYmplY3Qu
anMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9DYW52YXNQcm9maWxlT2Jq
ZWN0LmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlN2ZkNDI0Li4wMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NhbnZhc1Byb2ZpbGVPYmpl
Y3QuanMKKysrIC9kZXYvbnVsbApAQCAtMSw0NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotV2ViSW5z
cGVjdG9yLkNhbnZhc1Byb2ZpbGVPYmplY3QgPSBmdW5jdGlvbih0aXRsZSwgaWQsIHJlY29yZGlu
ZywgZGF0YSkKLXsKLSAgICBXZWJJbnNwZWN0b3IuUHJvZmlsZU9iamVjdC5jYWxsKHRoaXMsIFdl
Ykluc3BlY3Rvci5DYW52YXNQcm9maWxlVHlwZS5UeXBlSWQsIHRpdGxlLCBpZCwgcmVjb3JkaW5n
KTsKLQotICAgIHRoaXMuX2RhdGEgPSBkYXRhIHx8IFtdOwotfTsKLQotV2ViSW5zcGVjdG9yLkNh
bnZhc1Byb2ZpbGVPYmplY3QucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNw
ZWN0b3IuQ2FudmFzUHJvZmlsZU9iamVjdCwKLQotICAgIGdldCBkYXRhKCkKLSAgICB7Ci0gICAg
ICAgIHJldHVybiB0aGlzLl9kYXRhOwotICAgIH0sCi0KLSAgICBzZXQgZGF0YShkYXRhKQotICAg
IHsKLSAgICAgICAgdGhpcy5fZGF0YSA9IGRhdGE7Ci0gICAgfQotfTsKLQotV2ViSW5zcGVjdG9y
LkNhbnZhc1Byb2ZpbGVPYmplY3QucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5Q
cm9maWxlT2JqZWN0LnByb3RvdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL0NhbnZhc1Byb2ZpbGVUeXBlLmpzIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvQ2FudmFzUHJvZmlsZVR5cGUuanMKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDA5OTk4MWUuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvQ2FudmFzUHJvZmlsZVR5cGUuanMKKysrIC9kZXYvbnVsbApAQCAtMSwx
MDggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LVdlYkluc3BlY3Rvci5DYW52YXNQcm9maWxlVHlwZSA9IGZ1bmN0aW9uKCkKLXsKLSAgICBXZWJJ
bnNwZWN0b3IuUHJvZmlsZVR5cGUuY2FsbCh0aGlzLCBXZWJJbnNwZWN0b3IuQ2FudmFzUHJvZmls
ZVR5cGUuVHlwZUlkLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNvbGxlY3QgQ2FudmFzIFByb2Zp
bGUiKSk7Ci0gICAgdGhpcy5fcmVjb3JkaW5nID0gZmFsc2U7Ci0gICAgdGhpcy5fcHJvZmlsZUlk
ID0gMTsKLSAgICBXZWJJbnNwZWN0b3IuQ2FudmFzUHJvZmlsZVR5cGUuaW5zdGFuY2UgPSB0aGlz
OwotfQotCi1XZWJJbnNwZWN0b3IuQ2FudmFzUHJvZmlsZVR5cGUuVHlwZUlkID0gIkNBTlZBUyI7
Ci0KLVdlYkluc3BlY3Rvci5DYW52YXNQcm9maWxlVHlwZS5wcm90b3R5cGUgPSB7Ci0KLSAgICBj
b25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkNhbnZhc1Byb2ZpbGVUeXBlLAotCi0gICAgZ2V0IGJ1
dHRvblRvb2x0aXAoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX3JlY29yZGluZyA/IFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiU3RvcCBDYW52YXMgcHJvZmlsaW5nLiIpIDogV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJTdGFydCBDYW52YXMgcHJvZmlsaW5nLiIpOwotICAgIH0sCi0KLSAgICBi
dXR0b25DbGlja2VkOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICBpZiAodGhpcy5fcmVjb3Jk
aW5nKQotICAgICAgICAgICAgdGhpcy5zdG9wUmVjb3JkaW5nUHJvZmlsZSgpOwotICAgICAgICBl
bHNlCi0gICAgICAgICAgICB0aGlzLnN0YXJ0UmVjb3JkaW5nUHJvZmlsZSgpOwotICAgIH0sCi0K
LSAgICBnZXQgdHJlZUl0ZW1UaXRsZSgpCi0gICAgewotICAgICAgICByZXR1cm4gV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJDQU5WQVMgUFJPRklMRVMiKTsKLSAgICB9LAotCi0gICAgZ2V0IGRlc2Ny
aXB0aW9uKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNh
bnZhcyBwcm9maWxlcyBhbGxvdyB5b3UgdG8gZXhhbWluZSBkcmF3aW5nIG9wZXJhdGlvbnMgb24g
Y2FudmFzIGVsZW1lbnRzLiIpOwotICAgIH0sCi0KLSAgICByZXNldDogZnVuY3Rpb24oKQotICAg
IHsKLSAgICAgICAgdGhpcy5fcHJvZmlsZUlkID0gMTsKLSAgICB9LAotCi0gICAgbmV4dFByb2Zp
bGVJZDogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX3Byb2ZpbGVJZCsr
OwotICAgIH0sCi0KLSAgICBpc1JlY29yZGluZ1Byb2ZpbGU6IGZ1bmN0aW9uKCkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiB0aGlzLl9yZWNvcmRpbmc7Ci0gICAgfSwKLQotICAgIHNldFJlY29yZGlu
Z1Byb2ZpbGU6IGZ1bmN0aW9uKGlzUHJvZmlsaW5nKQotICAgIHsKLSAgICAgICAgdGhpcy5fcmVj
b3JkaW5nID0gaXNQcm9maWxpbmc7Ci0gICAgfSwKLQotICAgIHN0YXJ0UmVjb3JkaW5nUHJvZmls
ZTogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdGhpcy5fcmVjb3JkaW5nID0gdHJ1ZTsKLSAg
ICAgICAgLy8gRklYTUU6IFRoaXMgaXMgd2hlcmUgd2Ugd291bGQgYXNrIHRoZSBDYW52YXMgQWdl
bnQgdG8gcHJvZmlsZS4KLSAgICB9LAotCi0gICAgc3RvcFJlY29yZGluZ1Byb2ZpbGU6IGZ1bmN0
aW9uKGNhbGxiYWNrKQotICAgIHsKLSAgICAgICAgdGhpcy5fcmVjb3JkaW5nID0gZmFsc2U7Ci0g
ICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzIHdoZXJlIHdlIHdvdWxkIGFzayB0aGUgQ2FudmFzIEFn
ZW50IHRvIHN0b3AgcHJvZmlsaW5nLgotICAgICAgICAvLyBGb3Igbm93IHBhc3MgaW4gYW4gZW1w
dHkgYXJyYXkgb2YgY2FudmFzIGNhbGxzLgotICAgICAgICBjYWxsYmFjayhudWxsLCB7ZGF0YTog
W119KTsKLSAgICB9LAotCi0gICAgY3JlYXRlU2lkZWJhclRyZWVFbGVtZW50Rm9yUHJvZmlsZTog
ZnVuY3Rpb24ocHJvZmlsZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9y
LlByb2ZpbGVTaWRlYmFyVHJlZUVsZW1lbnQocHJvZmlsZSwgcHJvZmlsZS50aXRsZSwgInByb2Zp
bGUtc2lkZWJhci10cmVlLWl0ZW0iKTsKLSAgICB9LAotCi0gICAgY3JlYXRlVmlldzogZnVuY3Rp
b24ocHJvZmlsZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkNhbnZh
c1Byb2ZpbGVWaWV3KHByb2ZpbGUpOwotICAgIH0KLX0KLQotV2ViSW5zcGVjdG9yLkNhbnZhc1By
b2ZpbGVUeXBlLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuUHJvZmlsZVR5cGUu
cHJvdG90eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvQ2FudmFzUHJvZmlsZVZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9DYW52YXNQcm9maWxlVmlldy5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ZGEzODVjMS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9DYW52YXNQcm9maWxlVmlldy5qcworKysgL2Rldi9udWxsCkBAIC0xLDEwMCArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotV2ViSW5zcGVjdG9y
LkNhbnZhc1Byb2ZpbGVWaWV3ID0gZnVuY3Rpb24ocHJvZmlsZSkKLXsKLSAgICBjb25zb2xlLmFz
c2VydChwcm9maWxlIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkNhbnZhc1Byb2ZpbGVPYmplY3Qp
OwotCi0gICAgV2ViSW5zcGVjdG9yLlByb2ZpbGVWaWV3LmNhbGwodGhpcywgcHJvZmlsZSk7Ci19
Ci0KLVdlYkluc3BlY3Rvci5DYW52YXNQcm9maWxlVmlldy5wcm90b3R5cGUgPSB7Ci0KLSAgICBj
b25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkNhbnZhc1Byb2ZpbGVWaWV3LAotCi0gICAgdXBkYXRl
TGF5b3V0OiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICBpZiAodGhpcy5kYXRhR3JpZCkKLSAg
ICAgICAgICAgIHRoaXMuZGF0YUdyaWQudXBkYXRlTGF5b3V0KCk7Ci0gICAgfSwKLQotICAgIGdl
dCByZWNvcmRpbmdUaXRsZSgpCi0gICAgewotICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJSZWNvcmRpbmcgQ2FudmFzIFByb2ZpbGXigKYiKTsKLSAgICB9LAotCi0gICAgZGlz
cGxheVByb2ZpbGU6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHZhciBjb2x1bW5zID0geyJu
dW1iZXIiOiB7dGl0bGU6ICIjIiwgd2lkdGg6ICI1JSIsIHNvcnRhYmxlOiBmYWxzZX0sCi0gICAg
ICAgICAgICAgICAgICAgICAgICJzb3VyY2UiOiB7dGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiQ2FsbCIpLCB3aWR0aDogIjc1JSIsIHNvcnRhYmxlOiBmYWxzZSwgZGlzY2xvc3VyZTogdHJ1
ZX0sCi0gICAgICAgICAgICAgICAgICAgICAgICJsb2NhdGlvbiI6IHt0aXRsZTogV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJMb2NhdGlvbiIpLCB3aWR0aDogIjIwJSIsIHNvcnRhYmxlOiBmYWxzZX19
OwotCi0gICAgICAgIHRoaXMuZGF0YUdyaWQgPSBuZXcgV2ViSW5zcGVjdG9yLkRhdGFHcmlkKGNv
bHVtbnMpOwotICAgICAgICB0aGlzLmRhdGFHcmlkLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgiY2Fu
dmFzLXByb2ZpbGUtdmlldyIpOwotCi0gICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0
aGlzLmRhdGFHcmlkLmVsZW1lbnQpOwotICAgICAgICB0aGlzLmRhdGFHcmlkLnVwZGF0ZUxheW91
dCgpOwotCi0gICAgICAgIHRoaXMuX2NyZWF0ZVByb2ZpbGVOb2RlcygpOwotICAgIH0sCi0KLSAg
ICBfY3JlYXRlUHJvZmlsZU5vZGVzOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB2YXIgZGF0
YSA9IHRoaXMucHJvZmlsZS5kYXRhOwotICAgICAgICBpZiAoIWRhdGEpIHsKLSAgICAgICAgICAg
IC8vIFRoZSBwcm9maWxlciBtYXkgaGF2ZSBiZWVuIHRlcm1pbmF0ZWQgd2l0aCB0aGUgIkNsZWFy
IGFsbCBwcm9maWxlcy4iIGJ1dHRvbi4KLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQot
Ci0gICAgICAgIHRoaXMucHJvZmlsZS5jaGlsZHJlbiA9IFtdOwotICAgICAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IGRhdGEubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIHZhciBub2RlID0gbmV3
IFdlYkluc3BlY3Rvci5DYW52YXNEYXRhR3JpZE5vZGUodGhpcywgZGF0YVtpXSk7Ci0gICAgICAg
ICAgICB0aGlzLnByb2ZpbGUuY2hpbGRyZW4ucHVzaChub2RlKTsKLSAgICAgICAgfQotICAgIH0s
Ci0KLSAgICByZWJ1aWxkR3JpZEl0ZW1zOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB0aGlz
LmRhdGFHcmlkLnJlbW92ZUNoaWxkcmVuKCk7Ci0KLSAgICAgICAgdmFyIGNoaWxkcmVuID0gdGhp
cy5wcm9maWxlLmNoaWxkcmVuOwotICAgICAgICB2YXIgY291bnQgPSBjaGlsZHJlbi5sZW5ndGg7
Ci0KLSAgICAgICAgZm9yICh2YXIgaW5kZXggPSAwOyBpbmRleCA8IGNvdW50OyArK2luZGV4KQot
ICAgICAgICAgICAgdGhpcy5kYXRhR3JpZC5hcHBlbmRDaGlsZChjaGlsZHJlbltpbmRleF0pOwot
ICAgIH0sCi0KLSAgICByZWZyZXNoRGF0YTogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdmFy
IGNoaWxkID0gdGhpcy5kYXRhR3JpZC5jaGlsZHJlblswXTsKLSAgICAgICAgd2hpbGUgKGNoaWxk
KSB7Ci0gICAgICAgICAgICBjaGlsZC5yZWZyZXNoKCk7Ci0gICAgICAgICAgICBjaGlsZCA9IGNo
aWxkLnRyYXZlcnNlTmV4dE5vZGUoZmFsc2UsIG51bGwsIHRydWUpOwotICAgICAgICB9Ci0gICAg
fQotCi19Ci0KLVdlYkluc3BlY3Rvci5DYW52YXNQcm9maWxlVmlldy5wcm90b3R5cGUuX19wcm90
b19fID0gV2ViSW5zcGVjdG9yLlByb2ZpbGVWaWV3LnByb3RvdHlwZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnNvbGVPYnNlcnZlci5qcyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnNvbGVPYnNlcnZlci5qcwppbmRl
eCA0MDdkMmU2Li40YWVlMWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Db25zb2xlT2JzZXJ2ZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvQ29uc29sZU9ic2VydmVyLmpzCkBAIC00MCw5ICs0MCw5IEBAIFdlYklu
c3BlY3Rvci5Db25zb2xlT2JzZXJ2ZXIucHJvdG90eXBlID0gewogCiAgICAgICAgIGlmIChtZXNz
YWdlLnVybCA9PT0gIltuYXRpdmUgY29kZV0iKSB7CiAgICAgICAgICAgICBpZiAobWVzc2FnZS50
eXBlID09PSAicHJvZmlsZSIpCi0gICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnByb2ZpbGVN
YW5hZ2VyLnByb2ZpbGVXYXNTdGFydGVkRnJvbUNvbnNvbGUobWVzc2FnZS50ZXh0KTsKKyAgICAg
ICAgICAgICAgICBXZWJJbnNwZWN0b3IubGVnYWN5UHJvZmlsZU1hbmFnZXIucHJvZmlsZVdhc1N0
YXJ0ZWRGcm9tQ29uc29sZShtZXNzYWdlLnRleHQpOwogICAgICAgICAgICAgZWxzZSBpZiAobWVz
c2FnZS50eXBlID09PSAicHJvZmlsZUVuZCIpCi0gICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9y
LnByb2ZpbGVNYW5hZ2VyLnByb2ZpbGVXYXNFbmRlZEZyb21Db25zb2xlKCk7CisgICAgICAgICAg
ICAgICAgV2ViSW5zcGVjdG9yLmxlZ2FjeVByb2ZpbGVNYW5hZ2VyLnByb2ZpbGVXYXNFbmRlZEZy
b21Db25zb2xlKCk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAobWVzc2FnZS5zb3VyY2UgPT09
ICJjb25zb2xlLWFwaSIgJiYgbWVzc2FnZS50eXBlID09PSAiY2xlYXIiKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udGVudFZpZXcuanMgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250ZW50Vmlldy5qcwppbmRleCAyOWFi
MjE0Li5mN2NhM2I3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Db250ZW50Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Db250ZW50Vmlldy5qcwpAQCAtNjMsMTEgKzYzLDggQEAgV2ViSW5zcGVjdG9yLkNvbnRl
bnRWaWV3ID0gZnVuY3Rpb24ocmVwcmVzZW50ZWRPYmplY3QpCiAgICAgICAgIGlmIChyZXByZXNl
bnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Mb2dPYmplY3QpCiAgICAgICAgICAg
ICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5Mb2dDb250ZW50VmlldyhyZXByZXNlbnRlZE9iamVj
dCk7CiAKLSAgICAgICAgaWYgKHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVj
dG9yLkphdmFTY3JpcHRQcm9maWxlT2JqZWN0KQotICAgICAgICAgICAgcmV0dXJuIG5ldyBXZWJJ
bnNwZWN0b3IuSmF2YVNjcmlwdFByb2ZpbGVWaWV3KHJlcHJlc2VudGVkT2JqZWN0KTsKLQotICAg
ICAgICBpZiAocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuQ2FudmFz
UHJvZmlsZU9iamVjdCkKLSAgICAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkNhbnZh
c1Byb2ZpbGVWaWV3KHJlcHJlc2VudGVkT2JqZWN0KTsKKyAgICAgICAgaWYgKHJlcHJlc2VudGVk
T2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkxlZ2FjeUphdmFTY3JpcHRQcm9maWxlT2Jq
ZWN0KQorICAgICAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuTGVnYWN5SmF2YVNjcmlw
dFByb2ZpbGVWaWV3KHJlcHJlc2VudGVkT2JqZWN0KTsKIAogICAgICAgICBpZiAocmVwcmVzZW50
ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuQ29udGVudEZsb3cpCiAgICAgICAgICAg
ICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5Db250ZW50Rmxvd0RPTVRyZWVDb250ZW50Vmlldyhy
ZXByZXNlbnRlZE9iamVjdCk7CkBAIC0xMjAsOSArMTE3LDcgQEAgV2ViSW5zcGVjdG9yLkNvbnRl
bnRWaWV3LmlzVmlld2FibGUgPSBmdW5jdGlvbihyZXByZXNlbnRlZE9iamVjdCkKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgaWYgKHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5z
cGVjdG9yLkxvZ09iamVjdCkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKHJlcHJlc2Vu
dGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkphdmFTY3JpcHRQcm9maWxlT2JqZWN0
KQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFu
Y2VvZiBXZWJJbnNwZWN0b3IuQ2FudmFzUHJvZmlsZU9iamVjdCkKKyAgICBpZiAocmVwcmVzZW50
ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuTGVnYWN5SmF2YVNjcmlwdFByb2ZpbGVP
YmplY3QpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGlmIChyZXByZXNlbnRlZE9iamVjdCBp
bnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Db250ZW50RmxvdykKICAgICAgICAgcmV0dXJuIHRydWU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9JbnNwZWN0
b3JGcm9udGVuZEFQSS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0lu
c3BlY3RvckZyb250ZW5kQVBJLmpzCmluZGV4IDdkNGM5NjcuLjY3OTY1YjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0luc3BlY3RvckZyb250ZW5kQVBJ
LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0luc3BlY3RvckZy
b250ZW5kQVBJLmpzCkBAIC02NiwxOCArNjYsMTggQEAgSW5zcGVjdG9yRnJvbnRlbmRBUEkgPSB7
CiAKICAgICBpc1Byb2ZpbGluZ0phdmFTY3JpcHQ6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAg
IHJldHVybiBXZWJJbnNwZWN0b3IucHJvZmlsZU1hbmFnZXIuaXNQcm9maWxpbmdKYXZhU2NyaXB0
KCk7CisgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IubGVnYWN5UHJvZmlsZU1hbmFnZXIuaXNQ
cm9maWxpbmdKYXZhU2NyaXB0KCk7CiAgICAgfSwKIAogICAgIHN0YXJ0UHJvZmlsaW5nSmF2YVNj
cmlwdDogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgV2ViSW5zcGVjdG9yLnByb2ZpbGVNYW5h
Z2VyLnN0YXJ0UHJvZmlsaW5nSmF2YVNjcmlwdCgpOworICAgICAgICBXZWJJbnNwZWN0b3IubGVn
YWN5UHJvZmlsZU1hbmFnZXIuc3RhcnRQcm9maWxpbmdKYXZhU2NyaXB0KCk7CiAgICAgfSwKIAog
ICAgIHN0b3BQcm9maWxpbmdKYXZhU2NyaXB0OiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICBX
ZWJJbnNwZWN0b3IudGltZWxpbmVTaWRlYmFyUGFuZWwuc2hvdygpOwotICAgICAgICBXZWJJbnNw
ZWN0b3IucHJvZmlsZU1hbmFnZXIuc3RvcFByb2ZpbGluZ0phdmFTY3JpcHQoKTsKKyAgICAgICAg
V2ViSW5zcGVjdG9yLmxlZ2FjeVByb2ZpbGVNYW5hZ2VyLnN0b3BQcm9maWxpbmdKYXZhU2NyaXB0
KCk7CiAgICAgfSwKIAogICAgIHNldERvY2tTaWRlOiBmdW5jdGlvbihzaWRlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQm90dG9tVXBQcm9maWxlRGF0
YUdyaWRUcmVlLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTGVnYWN5
Qm90dG9tVXBQcm9maWxlRGF0YUdyaWRUcmVlLmpzCnNpbWlsYXJpdHkgaW5kZXggODMlCnJlbmFt
ZSBmcm9tIFNvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0JvdHRvbVVwUHJvZmls
ZURhdGFHcmlkVHJlZS5qcwpyZW5hbWUgdG8gU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvTGVnYWN5Qm90dG9tVXBQcm9maWxlRGF0YUdyaWRUcmVlLmpzCmluZGV4IDg5OWY1MDMu
LmY5ZTExNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L0JvdHRvbVVwUHJvZmlsZURhdGFHcmlkVHJlZS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9MZWdhY3lCb3R0b21VcFByb2ZpbGVEYXRhR3JpZFRyZWUuanMKQEAg
LTMwLDE1ICszMCwxNSBAQAogLy8gZWFjaCBjaGlsZCBzdGlsbCByZXByZXNlbnQgdGhlIHJvb3Qg
bm9kZS4gV2UgaGF2ZSB0byBiZSBwYXJ0aWN1bGFybHkgY2FyZWZ1bCBvZiByZWN1cnNpb24gd2l0
aCB0aGlzIG1vZGUKIC8vIGJlY2F1c2UgYSByb290IG5vZGUgY2FuIHJlcHJlc2VudCBpdHNlbGYg
QU5EIGFuIGFuY2VzdG9yLgogCi1XZWJJbnNwZWN0b3IuQm90dG9tVXBQcm9maWxlRGF0YUdyaWRO
b2RlID0gZnVuY3Rpb24oLypQcm9maWxlVmlldyovIHByb2ZpbGVWaWV3LCAvKlByb2ZpbGVOb2Rl
Ki8gcHJvZmlsZU5vZGUsIC8qQm90dG9tVXBQcm9maWxlRGF0YUdyaWRUcmVlKi8gb3duaW5nVHJl
ZSkKK1dlYkluc3BlY3Rvci5MZWdhY3lCb3R0b21VcFByb2ZpbGVEYXRhR3JpZE5vZGUgPSBmdW5j
dGlvbihwcm9maWxlTm9kZSwgb3duaW5nVHJlZSkKIHsKLSAgICBXZWJJbnNwZWN0b3IuUHJvZmls
ZURhdGFHcmlkTm9kZS5jYWxsKHRoaXMsIHByb2ZpbGVWaWV3LCBwcm9maWxlTm9kZSwgb3duaW5n
VHJlZSwgdGhpcy5fd2lsbEhhdmVDaGlsZHJlbihwcm9maWxlTm9kZSkpOworICAgIFdlYkluc3Bl
Y3Rvci5MZWdhY3lQcm9maWxlRGF0YUdyaWROb2RlLmNhbGwodGhpcywgcHJvZmlsZU5vZGUsIG93
bmluZ1RyZWUsIHRoaXMuX3dpbGxIYXZlQ2hpbGRyZW4ocHJvZmlsZU5vZGUpKTsKIAogICAgIHRo
aXMuX3JlbWFpbmluZ05vZGVJbmZvcyA9IFtdOwogfQogCi1XZWJJbnNwZWN0b3IuQm90dG9tVXBQ
cm9maWxlRGF0YUdyaWROb2RlLnByb3RvdHlwZSA9IHsKLSAgICBfdGFrZVByb3BlcnRpZXNGcm9t
UHJvZmlsZURhdGFHcmlkTm9kZTogZnVuY3Rpb24oLypQcm9maWxlRGF0YUdyaWROb2RlKi8gcHJv
ZmlsZURhdGFHcmlkTm9kZSkKK1dlYkluc3BlY3Rvci5MZWdhY3lCb3R0b21VcFByb2ZpbGVEYXRh
R3JpZE5vZGUucHJvdG90eXBlID0geworICAgIF90YWtlUHJvcGVydGllc0Zyb21Qcm9maWxlRGF0
YUdyaWROb2RlOiBmdW5jdGlvbihwcm9maWxlRGF0YUdyaWROb2RlKQogICAgIHsKICAgICAgICAg
dGhpcy5fc2F2ZSgpOwogCkBAIC00OCw3ICs0OCw3IEBAIFdlYkluc3BlY3Rvci5Cb3R0b21VcFBy
b2ZpbGVEYXRhR3JpZE5vZGUucHJvdG90eXBlID0gewogICAgIH0sCiAKICAgICAvLyBXaGVuIGZv
Y3VzaW5nLCB3ZSBrZWVwIGp1c3QgdGhlIG1lbWJlcnMgb2YgdGhlIGNhbGxzdGFjay4KLSAgICBf
a2VlcE9ubHlDaGlsZDogZnVuY3Rpb24oLypQcm9maWxlRGF0YUdyaWROb2RlKi8gY2hpbGQpCisg
ICAgX2tlZXBPbmx5Q2hpbGQ6IGZ1bmN0aW9uKGNoaWxkKQogICAgIHsKICAgICAgICAgdGhpcy5f
c2F2ZSgpOwogCkBAIC03NywxNyArNzcsMTcgQEAgV2ViSW5zcGVjdG9yLkJvdHRvbVVwUHJvZmls
ZURhdGFHcmlkTm9kZS5wcm90b3R5cGUgPSB7CiAKICAgICBfcmVzdG9yZTogZnVuY3Rpb24oKQog
ICAgIHsKLSAgICAgICAgV2ViSW5zcGVjdG9yLlByb2ZpbGVEYXRhR3JpZE5vZGUucHJvdG90eXBl
Ll9yZXN0b3JlKCk7CisgICAgICAgIFdlYkluc3BlY3Rvci5MZWdhY3lQcm9maWxlRGF0YUdyaWRO
b2RlLnByb3RvdHlwZS5fcmVzdG9yZSgpOwogCiAgICAgICAgIGlmICghdGhpcy5jaGlsZHJlbi5s
ZW5ndGgpCiAgICAgICAgICAgICB0aGlzLmhhc0NoaWxkcmVuID0gdGhpcy5fd2lsbEhhdmVDaGls
ZHJlbigpOwogICAgIH0sCiAKLSAgICBfbWVyZ2U6IGZ1bmN0aW9uKC8qUHJvZmlsZURhdGFHcmlk
Tm9kZSovIGNoaWxkLCAvKkJvb2xlYW4qLyBzaG91bGRBYnNvcmIpCisgICAgX21lcmdlOiBmdW5j
dGlvbihjaGlsZCwgc2hvdWxkQWJzb3JiKQogICAgIHsKICAgICAgICAgdGhpcy5zZWxmVGltZSAt
PSBjaGlsZC5zZWxmVGltZTsKIAotICAgICAgICBXZWJJbnNwZWN0b3IuUHJvZmlsZURhdGFHcmlk
Tm9kZS5wcm90b3R5cGUuX21lcmdlLmNhbGwodGhpcywgY2hpbGQsIHNob3VsZEFic29yYik7Cisg
ICAgICAgIFdlYkluc3BlY3Rvci5MZWdhY3lQcm9maWxlRGF0YUdyaWROb2RlLnByb3RvdHlwZS5f
bWVyZ2UuY2FsbCh0aGlzLCBjaGlsZCwgc2hvdWxkQWJzb3JiKTsKICAgICB9LAogCiAgICAgX3No
YXJlZFBvcHVsYXRlOiBmdW5jdGlvbigpCkBAIC0xMTMsNyArMTEzLDcgQEAgV2ViSW5zcGVjdG9y
LkJvdHRvbVVwUHJvZmlsZURhdGFHcmlkTm9kZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgICAgIC8vIElmIG5vdCwgYWRkIGl0IGFzIGEgdHJ1ZSBhbmNl
c3Rvci4KICAgICAgICAgICAgICAgICAvLyBJbiBoZWF2eSBtb2RlLCB3ZSB0YWtlIG91ciB2aXN1
YWwgaWRlbnRpdHkgZnJvbSBhbmNlc3RvciBub2RlLi4uCi0gICAgICAgICAgICAgICAgY2hpbGQg
PSBuZXcgV2ViSW5zcGVjdG9yLkJvdHRvbVVwUHJvZmlsZURhdGFHcmlkTm9kZSh0aGlzLnByb2Zp
bGVWaWV3LCBhbmNlc3RvciwgdGhpcy50cmVlKTsKKyAgICAgICAgICAgICAgICBjaGlsZCA9IG5l
dyBXZWJJbnNwZWN0b3IuTGVnYWN5Qm90dG9tVXBQcm9maWxlRGF0YUdyaWROb2RlKGFuY2VzdG9y
LCB0aGlzLnRyZWUsIGZhbHNlLCB0aGlzLnNob3dUaW1lQXNQZXJjZW50KTsKIAogICAgICAgICAg
ICAgICAgIGlmIChhbmNlc3RvciAhPT0gZm9jdXNOb2RlKSB7CiAgICAgICAgICAgICAgICAgICAg
IC8vIGJ1dCB0aGUgYWN0dWFsIHN0YXRpc3RpY3MgZnJvbSB0aGUgInJvb3QiIG5vZGUgKGJvdHRv
bSBvZiB0aGUgY2FsbHN0YWNrKS4KQEAgLTE0NCwxNSArMTQ0LDE1IEBAIFdlYkluc3BlY3Rvci5C
b3R0b21VcFByb2ZpbGVEYXRhR3JpZE5vZGUucHJvdG90eXBlID0gewogICAgIH0KIH0KIAotV2Vi
SW5zcGVjdG9yLkJvdHRvbVVwUHJvZmlsZURhdGFHcmlkTm9kZS5wcm90b3R5cGUuX19wcm90b19f
ID0gV2ViSW5zcGVjdG9yLlByb2ZpbGVEYXRhR3JpZE5vZGUucHJvdG90eXBlOworV2ViSW5zcGVj
dG9yLkxlZ2FjeUJvdHRvbVVwUHJvZmlsZURhdGFHcmlkTm9kZS5wcm90b3R5cGUuX19wcm90b19f
ID0gV2ViSW5zcGVjdG9yLkxlZ2FjeVByb2ZpbGVEYXRhR3JpZE5vZGUucHJvdG90eXBlOwogCi1X
ZWJJbnNwZWN0b3IuQm90dG9tVXBQcm9maWxlRGF0YUdyaWRUcmVlID0gZnVuY3Rpb24oLypQcm9m
aWxlVmlldyovIGFQcm9maWxlVmlldywgLypQcm9maWxlTm9kZSovIGFQcm9maWxlTm9kZSkKK1dl
Ykluc3BlY3Rvci5MZWdhY3lCb3R0b21VcFByb2ZpbGVEYXRhR3JpZFRyZWUgPSBmdW5jdGlvbihw
cm9maWxlTm9kZSkKIHsKLSAgICBXZWJJbnNwZWN0b3IuUHJvZmlsZURhdGFHcmlkVHJlZS5jYWxs
KHRoaXMsIGFQcm9maWxlVmlldywgYVByb2ZpbGVOb2RlKTsKKyAgICBXZWJJbnNwZWN0b3IuTGVn
YWN5UHJvZmlsZURhdGFHcmlkVHJlZS5jYWxsKHRoaXMsIHByb2ZpbGVOb2RlKTsKIAogICAgIC8v
IEl0ZXJhdGUgZWFjaCBub2RlIGluIHByZS1vcmRlci4KICAgICB2YXIgcHJvZmlsZU5vZGVVSURz
ID0gMDsKLSAgICB2YXIgcHJvZmlsZU5vZGVHcm91cHMgPSBbW10sIFthUHJvZmlsZU5vZGVdXTsK
KyAgICB2YXIgcHJvZmlsZU5vZGVHcm91cHMgPSBbW10sIFtwcm9maWxlTm9kZV1dOwogICAgIHZh
ciB2aXNpdGVkUHJvZmlsZU5vZGVzRm9yQ2FsbFVJRCA9IHt9OwogCiAgICAgdGhpcy5fcmVtYWlu
aW5nTm9kZUluZm9zID0gW107CkBAIC0yMDIsMTQgKzIwMiwxNCBAQCBXZWJJbnNwZWN0b3IuQm90
dG9tVXBQcm9maWxlRGF0YUdyaWRUcmVlID0gZnVuY3Rpb24oLypQcm9maWxlVmlldyovIGFQcm9m
aWxlVmlldwogICAgIH0KIAogICAgIC8vIFBvcHVsYXRlIHRoZSB0b3AgbGV2ZWwgbm9kZXMuCi0g
ICAgV2ViSW5zcGVjdG9yLkJvdHRvbVVwUHJvZmlsZURhdGFHcmlkTm9kZS5wcm90b3R5cGUuX3Bv
cHVsYXRlLmNhbGwodGhpcyk7CisgICAgV2ViSW5zcGVjdG9yLkxlZ2FjeUJvdHRvbVVwUHJvZmls
ZURhdGFHcmlkTm9kZS5wcm90b3R5cGUuX3BvcHVsYXRlLmNhbGwodGhpcyk7CiAKICAgICByZXR1
cm4gdGhpczsKIH0KIAotV2ViSW5zcGVjdG9yLkJvdHRvbVVwUHJvZmlsZURhdGFHcmlkVHJlZS5w
cm90b3R5cGUgPSB7CitXZWJJbnNwZWN0b3IuTGVnYWN5Qm90dG9tVXBQcm9maWxlRGF0YUdyaWRU
cmVlLnByb3RvdHlwZSA9IHsKICAgICAvLyBXaGVuIGZvY3VzaW5nLCB3ZSBrZWVwIHRoZSBlbnRp
cmUgY2FsbHN0YWNrIHVwIHRvIHRoaXMgYW5jZXN0b3IuCi0gICAgZm9jdXM6IGZ1bmN0aW9uKC8q
UHJvZmlsZURhdGFHcmlkTm9kZSovIHByb2ZpbGVEYXRhR3JpZE5vZGUpCisgICAgZm9jdXM6IGZ1
bmN0aW9uKHByb2ZpbGVEYXRhR3JpZE5vZGUpCiAgICAgewogICAgICAgICBpZiAoIXByb2ZpbGVE
YXRhR3JpZE5vZGUpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0yMTksMTMgKzIxOSwxMyBAQCBX
ZWJJbnNwZWN0b3IuQm90dG9tVXBQcm9maWxlRGF0YUdyaWRUcmVlLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgdmFyIGN1cnJlbnROb2RlID0gcHJvZmlsZURhdGFHcmlkTm9kZTsKICAgICAgICAgdmFy
IGZvY3VzTm9kZSA9IHByb2ZpbGVEYXRhR3JpZE5vZGU7CiAKLSAgICAgICAgd2hpbGUgKGN1cnJl
bnROb2RlLnBhcmVudCAmJiAoY3VycmVudE5vZGUgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuUHJv
ZmlsZURhdGFHcmlkTm9kZSkpIHsKKyAgICAgICAgd2hpbGUgKGN1cnJlbnROb2RlLnBhcmVudCAm
JiAoY3VycmVudE5vZGUgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuTGVnYWN5UHJvZmlsZURhdGFH
cmlkTm9kZSkpIHsKICAgICAgICAgICAgIGN1cnJlbnROb2RlLl90YWtlUHJvcGVydGllc0Zyb21Q
cm9maWxlRGF0YUdyaWROb2RlKHByb2ZpbGVEYXRhR3JpZE5vZGUpOwogCiAgICAgICAgICAgICBm
b2N1c05vZGUgPSBjdXJyZW50Tm9kZTsKICAgICAgICAgICAgIGN1cnJlbnROb2RlID0gY3VycmVu
dE5vZGUucGFyZW50OwogCi0gICAgICAgICAgICBpZiAoY3VycmVudE5vZGUgaW5zdGFuY2VvZiBX
ZWJJbnNwZWN0b3IuUHJvZmlsZURhdGFHcmlkTm9kZSkKKyAgICAgICAgICAgIGlmIChjdXJyZW50
Tm9kZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5MZWdhY3lQcm9maWxlRGF0YUdyaWROb2RlKQog
ICAgICAgICAgICAgICAgIGN1cnJlbnROb2RlLl9rZWVwT25seUNoaWxkKGZvY3VzTm9kZSk7CiAg
ICAgICAgIH0KIApAQCAtMjMzLDcgKzIzMyw3IEBAIFdlYkluc3BlY3Rvci5Cb3R0b21VcFByb2Zp
bGVEYXRhR3JpZFRyZWUucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLnRvdGFsVGltZSA9IHBy
b2ZpbGVEYXRhR3JpZE5vZGUudG90YWxUaW1lOwogICAgIH0sCiAKLSAgICBleGNsdWRlOiBmdW5j
dGlvbigvKlByb2ZpbGVEYXRhR3JpZE5vZGUqLyBwcm9maWxlRGF0YUdyaWROb2RlKQorICAgIGV4
Y2x1ZGU6IGZ1bmN0aW9uKHByb2ZpbGVEYXRhR3JpZE5vZGUpCiAgICAgewogICAgICAgICBpZiAo
IXByb2ZpbGVEYXRhR3JpZE5vZGUpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0yNTgsOCArMjU4
LDggQEAgV2ViSW5zcGVjdG9yLkJvdHRvbVVwUHJvZmlsZURhdGFHcmlkVHJlZS5wcm90b3R5cGUg
PSB7CiAgICAgICAgICAgICB0aGlzLnNvcnQodGhpcy5sYXN0Q29tcGFyYXRvciwgdHJ1ZSk7CiAg
ICAgfSwKIAotICAgIF9zaGFyZWRQb3B1bGF0ZTogV2ViSW5zcGVjdG9yLkJvdHRvbVVwUHJvZmls
ZURhdGFHcmlkTm9kZS5wcm90b3R5cGUuX3NoYXJlZFBvcHVsYXRlCisgICAgX3NoYXJlZFBvcHVs
YXRlOiBXZWJJbnNwZWN0b3IuTGVnYWN5Qm90dG9tVXBQcm9maWxlRGF0YUdyaWROb2RlLnByb3Rv
dHlwZS5fc2hhcmVkUG9wdWxhdGUKIH0KIAotV2ViSW5zcGVjdG9yLkJvdHRvbVVwUHJvZmlsZURh
dGFHcmlkVHJlZS5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLlByb2ZpbGVEYXRh
R3JpZFRyZWUucHJvdG90eXBlOworV2ViSW5zcGVjdG9yLkxlZ2FjeUJvdHRvbVVwUHJvZmlsZURh
dGFHcmlkVHJlZS5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLkxlZ2FjeVByb2Zp
bGVEYXRhR3JpZFRyZWUucHJvdG90eXBlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9KYXZhU2NyaXB0UHJvZmlsZU9iamVjdC5qcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0xlZ2FjeUphdmFTY3JpcHRQcm9maWxlT2JqZWN0
LmpzCnNpbWlsYXJpdHkgaW5kZXggNzYlCnJlbmFtZSBmcm9tIFNvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL0phdmFTY3JpcHRQcm9maWxlT2JqZWN0LmpzCnJlbmFtZSB0byBTb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9MZWdhY3lKYXZhU2NyaXB0UHJvZmlsZU9i
amVjdC5qcwppbmRleCA3NTc1NWJjLi4xYWZhZTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9KYXZhU2NyaXB0UHJvZmlsZU9iamVjdC5qcworKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9MZWdhY3lKYXZhU2NyaXB0UHJvZmls
ZU9iamVjdC5qcwpAQCAtMjMsMTMgKzIzLDEzIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkphdmFTY3JpcHRQcm9maWxlT2JqZWN0ID0g
ZnVuY3Rpb24odGl0bGUsIGlkLCByZWNvcmRpbmcpCitXZWJJbnNwZWN0b3IuTGVnYWN5SmF2YVNj
cmlwdFByb2ZpbGVPYmplY3QgPSBmdW5jdGlvbih0aXRsZSwgaWQsIHJlY29yZGluZykKIHsKLSAg
ICBXZWJJbnNwZWN0b3IuUHJvZmlsZU9iamVjdC5jYWxsKHRoaXMsIFdlYkluc3BlY3Rvci5KYXZh
U2NyaXB0UHJvZmlsZVR5cGUuVHlwZUlkLCB0aXRsZSwgaWQsIHJlY29yZGluZyk7CisgICAgV2Vi
SW5zcGVjdG9yLkxlZ2FjeVByb2ZpbGVPYmplY3QuY2FsbCh0aGlzLCBXZWJJbnNwZWN0b3IuTGVn
YWN5SmF2YVNjcmlwdFByb2ZpbGVUeXBlLlR5cGVJZCwgdGl0bGUsIGlkLCByZWNvcmRpbmcpOwog
fTsKIAotV2ViSW5zcGVjdG9yLkphdmFTY3JpcHRQcm9maWxlT2JqZWN0LnByb3RvdHlwZSA9IHsK
LSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkphdmFTY3JpcHRQcm9maWxlT2JqZWN0CitX
ZWJJbnNwZWN0b3IuTGVnYWN5SmF2YVNjcmlwdFByb2ZpbGVPYmplY3QucHJvdG90eXBlID0gewor
ICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuTGVnYWN5SmF2YVNjcmlwdFByb2ZpbGVPYmpl
Y3QKIH07CiAKLVdlYkluc3BlY3Rvci5KYXZhU2NyaXB0UHJvZmlsZU9iamVjdC5wcm90b3R5cGUu
X19wcm90b19fID0gV2ViSW5zcGVjdG9yLlByb2ZpbGVPYmplY3QucHJvdG90eXBlOworV2ViSW5z
cGVjdG9yLkxlZ2FjeUphdmFTY3JpcHRQcm9maWxlT2JqZWN0LnByb3RvdHlwZS5fX3Byb3RvX18g
PSBXZWJJbnNwZWN0b3IuTGVnYWN5UHJvZmlsZU9iamVjdC5wcm90b3R5cGU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9KYXZhU2NyaXB0UHJvZmlsZVR5
cGUuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9MZWdhY3lKYXZhU2Ny
aXB0UHJvZmlsZVR5cGUuanMKc2ltaWxhcml0eSBpbmRleCA3OSUKcmVuYW1lIGZyb20gU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSmF2YVNjcmlwdFByb2ZpbGVUeXBlLmpzCnJl
bmFtZSB0byBTb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9MZWdhY3lKYXZhU2Ny
aXB0UHJvZmlsZVR5cGUuanMKaW5kZXggMTNjNjhiNi4uMThmODM2MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSmF2YVNjcmlwdFByb2ZpbGVUeXBlLmpz
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0xlZ2FjeUphdmFTY3Jp
cHRQcm9maWxlVHlwZS5qcwpAQCAtMjMsMTYgKzIzLDE2IEBACiAgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICov
CiAKLVdlYkluc3BlY3Rvci5KYXZhU2NyaXB0UHJvZmlsZVR5cGUgPSBmdW5jdGlvbigpCitXZWJJ
bnNwZWN0b3IuTGVnYWN5SmF2YVNjcmlwdFByb2ZpbGVUeXBlID0gZnVuY3Rpb24oKQogewotICAg
IFdlYkluc3BlY3Rvci5Qcm9maWxlVHlwZS5jYWxsKHRoaXMsIFdlYkluc3BlY3Rvci5KYXZhU2Ny
aXB0UHJvZmlsZVR5cGUuVHlwZUlkLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNvbGxlY3QgSmF2
YVNjcmlwdCBQcm9maWxlIikpOworICAgIFdlYkluc3BlY3Rvci5MZWdhY3lQcm9maWxlVHlwZS5j
YWxsKHRoaXMsIFdlYkluc3BlY3Rvci5MZWdhY3lKYXZhU2NyaXB0UHJvZmlsZVR5cGUuVHlwZUlk
LCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNvbGxlY3QgSmF2YVNjcmlwdCBQcm9maWxlIikpOwog
ICAgIHRoaXMuX3JlY29yZGluZyA9IGZhbHNlOwotICAgIFdlYkluc3BlY3Rvci5KYXZhU2NyaXB0
UHJvZmlsZVR5cGUuaW5zdGFuY2UgPSB0aGlzOworICAgIFdlYkluc3BlY3Rvci5MZWdhY3lKYXZh
U2NyaXB0UHJvZmlsZVR5cGUuaW5zdGFuY2UgPSB0aGlzOwogfQogCi1XZWJJbnNwZWN0b3IuSmF2
YVNjcmlwdFByb2ZpbGVUeXBlLlR5cGVJZCA9ICJDUFUiOworV2ViSW5zcGVjdG9yLkxlZ2FjeUph
dmFTY3JpcHRQcm9maWxlVHlwZS5UeXBlSWQgPSAiQ1BVIjsKIAotV2ViSW5zcGVjdG9yLkphdmFT
Y3JpcHRQcm9maWxlVHlwZS5wcm90b3R5cGUgPSB7CitXZWJJbnNwZWN0b3IuTGVnYWN5SmF2YVNj
cmlwdFByb2ZpbGVUeXBlLnByb3RvdHlwZSA9IHsKICAgICBnZXQgYnV0dG9uVG9vbHRpcCgpCiAg
ICAgewogICAgICAgICByZXR1cm4gdGhpcy5fcmVjb3JkaW5nID8gV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJTdG9wIEphdmFTY3JpcHQgcHJvZmlsaW5nLiIpIDogV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJTdGFydCBKYXZhU2NyaXB0IHByb2ZpbGluZy4iKTsKQEAgLTgzLDEzICs4MywxMyBAQCBXZWJJ
bnNwZWN0b3IuSmF2YVNjcmlwdFByb2ZpbGVUeXBlLnByb3RvdHlwZSA9IHsKIAogICAgIGNyZWF0
ZVNpZGViYXJUcmVlRWxlbWVudEZvclByb2ZpbGU6IGZ1bmN0aW9uKHByb2ZpbGUpCiAgICAgewot
ICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5Qcm9maWxlU2lkZWJhclRyZWVFbGVtZW50
KHByb2ZpbGUsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiUHJvZmlsZSAlZCIpLCAicHJvZmlsZS1z
aWRlYmFyLXRyZWUtaXRlbSIpOworICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5MZWdh
Y3lQcm9maWxlU2lkZWJhclRyZWVFbGVtZW50KHByb2ZpbGUsIFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiUHJvZmlsZSAlZCIpLCAicHJvZmlsZS1zaWRlYmFyLXRyZWUtaXRlbSIpOwogICAgIH0sCiAK
ICAgICBjcmVhdGVWaWV3OiBmdW5jdGlvbihwcm9maWxlKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IG5ldyBXZWJJbnNwZWN0b3IuSmF2YVNjcmlwdFByb2ZpbGVWaWV3KHByb2ZpbGUpOworICAgICAg
ICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5MZWdhY3lKYXZhU2NyaXB0UHJvZmlsZVZpZXcocHJv
ZmlsZSk7CiAgICAgfQogfQogCi1XZWJJbnNwZWN0b3IuSmF2YVNjcmlwdFByb2ZpbGVUeXBlLnBy
b3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuUHJvZmlsZVR5cGUucHJvdG90eXBlOwor
V2ViSW5zcGVjdG9yLkxlZ2FjeUphdmFTY3JpcHRQcm9maWxlVHlwZS5wcm90b3R5cGUuX19wcm90
b19fID0gV2ViSW5zcGVjdG9yLkxlZ2FjeVByb2ZpbGVUeXBlLnByb3RvdHlwZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0phdmFTY3JpcHRQcm9maWxl
Vmlldy5jc3MgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9MZWdhY3lKYXZh
U2NyaXB0UHJvZmlsZVZpZXcuY3NzCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBT
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9KYXZhU2NyaXB0UHJvZmlsZVZpZXcu
Y3NzCnJlbmFtZSB0byBTb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9MZWdhY3lK
YXZhU2NyaXB0UHJvZmlsZVZpZXcuY3NzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9KYXZhU2NyaXB0UHJvZmlsZVZpZXcuanMgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9MZWdhY3lKYXZhU2NyaXB0UHJvZmlsZVZpZXcuanMKc2lt
aWxhcml0eSBpbmRleCA5MiUKcmVuYW1lIGZyb20gU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvSmF2YVNjcmlwdFByb2ZpbGVWaWV3LmpzCnJlbmFtZSB0byBTb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9MZWdhY3lKYXZhU2NyaXB0UHJvZmlsZVZpZXcuanMKaW5k
ZXggNDk0NWIwYi4uZjI3M2ZiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvSmF2YVNjcmlwdFByb2ZpbGVWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0xlZ2FjeUphdmFTY3JpcHRQcm9maWxlVmlldy5qcwpAQCAt
MjMsMTEgKzIzLDExIEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5KYXZh
U2NyaXB0UHJvZmlsZVZpZXcgPSBmdW5jdGlvbihwcm9maWxlKQorV2ViSW5zcGVjdG9yLkxlZ2Fj
eUphdmFTY3JpcHRQcm9maWxlVmlldyA9IGZ1bmN0aW9uKHByb2ZpbGUpCiB7Ci0gICAgY29uc29s
ZS5hc3NlcnQocHJvZmlsZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5KYXZhU2NyaXB0UHJvZmls
ZU9iamVjdCk7CisgICAgY29uc29sZS5hc3NlcnQocHJvZmlsZSBpbnN0YW5jZW9mIFdlYkluc3Bl
Y3Rvci5MZWdhY3lKYXZhU2NyaXB0UHJvZmlsZU9iamVjdCk7CiAKLSAgICBXZWJJbnNwZWN0b3Iu
UHJvZmlsZVZpZXcuY2FsbCh0aGlzLCBwcm9maWxlLCAiamF2YXNjcmlwdC1wcm9maWxlci1zaG93
LXRpbWUtYXMtcGVyY2VudCIpOworICAgIFdlYkluc3BlY3Rvci5MZWdhY3lQcm9maWxlVmlldy5j
YWxsKHRoaXMsIHByb2ZpbGUsICJqYXZhc2NyaXB0LXByb2ZpbGVyLXNob3ctdGltZS1hcy1wZXJj
ZW50Iik7CiAKICAgICB0aGlzLl9zaG93VHJlZUJvdHRvbVVwU2V0dGluZyA9IG5ldyBXZWJJbnNw
ZWN0b3IuU2V0dGluZygiamF2YXNjcmlwdC1wcm9maWxlci1zaG93LXRyZWUtYm90dG9tLXVwIiwg
dHJ1ZSk7CiAKQEAgLTM1LDE0ICszNSwxNCBAQCBXZWJJbnNwZWN0b3IuSmF2YVNjcmlwdFByb2Zp
bGVWaWV3ID0gZnVuY3Rpb24ocHJvZmlsZSkKICAgICB0aGlzLl9zaG93VHJlZUJvdHRvbVVwTmF2
aWdhdGlvbkl0ZW0uYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlv
bkl0ZW0uRXZlbnQuQ2xpY2tlZCwgdGhpcy5fdG9nZ2xlQm90dG9tVXBWaWV3LCB0aGlzKTsKICAg
ICB0aGlzLl9zaG93VHJlZUJvdHRvbVVwTmF2aWdhdGlvbkl0ZW0uYWN0aXZhdGVkID0gdGhpcy5f
c2hvd1RyZWVCb3R0b21VcFNldHRpbmcudmFsdWU7CiAKLSAgICB0aGlzLl92aWV3VHlwZSA9IG5l
dyBXZWJJbnNwZWN0b3IuU2V0dGluZygiamF2YXNjcmlwdC1wcm9maWxlci12aWV3IiwgV2ViSW5z
cGVjdG9yLkphdmFTY3JpcHRQcm9maWxlVmlldy5fVHlwZUhlYXZ5KTsKKyAgICB0aGlzLl92aWV3
VHlwZSA9IG5ldyBXZWJJbnNwZWN0b3IuU2V0dGluZygiamF2YXNjcmlwdC1wcm9maWxlci12aWV3
IiwgV2ViSW5zcGVjdG9yLkxlZ2FjeUphdmFTY3JpcHRQcm9maWxlVmlldy5fVHlwZUhlYXZ5KTsK
IH0KIAotV2ViSW5zcGVjdG9yLkphdmFTY3JpcHRQcm9maWxlVmlldy5fVHlwZVRyZWUgPSAiVHJl
ZSI7Ci1XZWJJbnNwZWN0b3IuSmF2YVNjcmlwdFByb2ZpbGVWaWV3Ll9UeXBlSGVhdnkgPSAiSGVh
dnkiOworV2ViSW5zcGVjdG9yLkxlZ2FjeUphdmFTY3JpcHRQcm9maWxlVmlldy5fVHlwZVRyZWUg
PSAiVHJlZSI7CitXZWJJbnNwZWN0b3IuTGVnYWN5SmF2YVNjcmlwdFByb2ZpbGVWaWV3Ll9UeXBl
SGVhdnkgPSAiSGVhdnkiOwogCi1XZWJJbnNwZWN0b3IuSmF2YVNjcmlwdFByb2ZpbGVWaWV3LnBy
b3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkphdmFTY3JpcHRQcm9m
aWxlVmlldywKK1dlYkluc3BlY3Rvci5MZWdhY3lKYXZhU2NyaXB0UHJvZmlsZVZpZXcucHJvdG90
eXBlID0geworICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuTGVnYWN5SmF2YVNjcmlwdFBy
b2ZpbGVWaWV3LAogCiAgICAgdXBkYXRlTGF5b3V0OiBmdW5jdGlvbigpCiAgICAgewpAQCAtOTgs
MTQgKzk4LDE0IEBAIFdlYkluc3BlY3Rvci5KYXZhU2NyaXB0UHJvZmlsZVZpZXcucHJvdG90eXBl
ID0gewogICAgIGdldCBib3R0b21VcFByb2ZpbGVEYXRhR3JpZFRyZWUoKQogICAgIHsKICAgICAg
ICAgaWYgKCF0aGlzLl9ib3R0b21VcFByb2ZpbGVEYXRhR3JpZFRyZWUpCi0gICAgICAgICAgICB0
aGlzLl9ib3R0b21VcFByb2ZpbGVEYXRhR3JpZFRyZWUgPSBuZXcgV2ViSW5zcGVjdG9yLkJvdHRv
bVVwUHJvZmlsZURhdGFHcmlkVHJlZSh0aGlzLCB0aGlzLnByb2ZpbGUuaGVhZCk7CisgICAgICAg
ICAgICB0aGlzLl9ib3R0b21VcFByb2ZpbGVEYXRhR3JpZFRyZWUgPSBuZXcgV2ViSW5zcGVjdG9y
LkxlZ2FjeUJvdHRvbVVwUHJvZmlsZURhdGFHcmlkVHJlZSh0aGlzLnByb2ZpbGUuaGVhZCk7CiAg
ICAgICAgIHJldHVybiB0aGlzLl9ib3R0b21VcFByb2ZpbGVEYXRhR3JpZFRyZWU7CiAgICAgfSwK
IAogICAgIGdldCB0b3BEb3duUHJvZmlsZURhdGFHcmlkVHJlZSgpCiAgICAgewogICAgICAgICBp
ZiAoIXRoaXMuX3RvcERvd25Qcm9maWxlRGF0YUdyaWRUcmVlKQotICAgICAgICAgICAgdGhpcy5f
dG9wRG93blByb2ZpbGVEYXRhR3JpZFRyZWUgPSBuZXcgV2ViSW5zcGVjdG9yLlRvcERvd25Qcm9m
aWxlRGF0YUdyaWRUcmVlKHRoaXMsIHRoaXMucHJvZmlsZS5oZWFkKTsKKyAgICAgICAgICAgIHRo
aXMuX3RvcERvd25Qcm9maWxlRGF0YUdyaWRUcmVlID0gbmV3IFdlYkluc3BlY3Rvci5MZWdhY3lU
b3BEb3duUHJvZmlsZURhdGFHcmlkVHJlZSh0aGlzLnByb2ZpbGUuaGVhZCk7CiAgICAgICAgIHJl
dHVybiB0aGlzLl90b3BEb3duUHJvZmlsZURhdGFHcmlkVHJlZTsKICAgICB9LAogCkBAIC0xMzQs
NyArMTM0LDcgQEAgV2ViSW5zcGVjdG9yLkphdmFTY3JpcHRQcm9maWxlVmlldy5wcm90b3R5cGUg
PSB7CiAgICAgewogICAgICAgICB2YXIgY2hpbGQgPSB0aGlzLmRhdGFHcmlkLmNoaWxkcmVuWzBd
OwogICAgICAgICB3aGlsZSAoY2hpbGQpIHsKLSAgICAgICAgICAgIGNoaWxkLnJlZnJlc2goKTsK
KyAgICAgICAgICAgIGNoaWxkLnJlZnJlc2godGhpcy5zaG93VGltZUFzUGVyY2VudC52YWx1ZSk7
CiAgICAgICAgICAgICBjaGlsZCA9IGNoaWxkLnRyYXZlcnNlTmV4dE5vZGUoZmFsc2UsIG51bGws
IHRydWUpOwogICAgICAgICB9CiAgICAgfSwKQEAgLTM1NywxMSArMzU3LDExIEBAIFdlYkluc3Bl
Y3Rvci5KYXZhU2NyaXB0UHJvZmlsZVZpZXcucHJvdG90eXBlID0gewogICAgICAgICBpZiAoIXRo
aXMuX3Nob3dUcmVlQm90dG9tVXBTZXR0aW5nLnZhbHVlKSB7CiAgICAgICAgICAgICB0aGlzLnBy
b2ZpbGVEYXRhR3JpZFRyZWUgPSB0aGlzLnRvcERvd25Qcm9maWxlRGF0YUdyaWRUcmVlOwogICAg
ICAgICAgICAgdGhpcy5fc29ydFByb2ZpbGUoKTsKLSAgICAgICAgICAgIHRoaXMuX3ZpZXdUeXBl
LnZhbHVlID0gV2ViSW5zcGVjdG9yLkphdmFTY3JpcHRQcm9maWxlVmlldy5fVHlwZVRyZWU7Cisg
ICAgICAgICAgICB0aGlzLl92aWV3VHlwZS52YWx1ZSA9IFdlYkluc3BlY3Rvci5MZWdhY3lKYXZh
U2NyaXB0UHJvZmlsZVZpZXcuX1R5cGVUcmVlOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgdGhpcy5wcm9maWxlRGF0YUdyaWRUcmVlID0gdGhpcy5ib3R0b21VcFByb2ZpbGVEYXRhR3Jp
ZFRyZWU7CiAgICAgICAgICAgICB0aGlzLl9zb3J0UHJvZmlsZSgpOwotICAgICAgICAgICAgdGhp
cy5fdmlld1R5cGUudmFsdWUgPSBXZWJJbnNwZWN0b3IuSmF2YVNjcmlwdFByb2ZpbGVWaWV3Ll9U
eXBlSGVhdnk7CisgICAgICAgICAgICB0aGlzLl92aWV3VHlwZS52YWx1ZSA9IFdlYkluc3BlY3Rv
ci5MZWdhY3lKYXZhU2NyaXB0UHJvZmlsZVZpZXcuX1R5cGVIZWF2eTsKICAgICAgICAgfQogCiAg
ICAgICAgIGlmICghdGhpcy5jdXJyZW50UXVlcnkgfHwgIXRoaXMuX3NlYXJjaEZpbmlzaGVkQ2Fs
bGJhY2sgfHwgIXRoaXMuX3NlYXJjaFJlc3VsdHMpCkBAIC0zNzYsNyArMzc2LDcgQEAgV2ViSW5z
cGVjdG9yLkphdmFTY3JpcHRQcm9maWxlVmlldy5wcm90b3R5cGUgPSB7CiAKICAgICB0b2dnbGVU
aW1lRGlzcGxheTogZnVuY3Rpb24oZXZlbnQpCiAgICAgewotICAgICAgICBXZWJJbnNwZWN0b3Iu
UHJvZmlsZVZpZXcucHJvdG90eXBlLnRvZ2dsZVRpbWVEaXNwbGF5LmNhbGwodGhpcywgZXZlbnQp
OworICAgICAgICBXZWJJbnNwZWN0b3IuTGVnYWN5UHJvZmlsZVZpZXcucHJvdG90eXBlLnRvZ2ds
ZVRpbWVEaXNwbGF5LmNhbGwodGhpcywgZXZlbnQpOwogICAgICAgICB0aGlzLnNob3dUaW1lQXNQ
ZXJjZW50LnZhbHVlID0gIXRoaXMuc2hvd1RpbWVBc1BlcmNlbnQudmFsdWU7CiAgICAgICAgIHRo
aXMucmVmcmVzaFZpc2libGVEYXRhKCk7CiAgICAgfSwKQEAgLTQxMiwxNiArNDEyLDYgQEAgV2Vi
SW5zcGVjdG9yLkphdmFTY3JpcHRQcm9maWxlVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRo
aXMucmVmcmVzaFZpc2libGVEYXRhKCk7CiAgICAgfSwKIAotICAgIF9kYXRhR3JpZE5vZGVTZWxl
Y3RlZDogZnVuY3Rpb24obm9kZSkKLSAgICB7Ci0gICAgICAgIC8vIEZJWE1FOiBVcGRhdGUgVUkg
d2UgaGF2ZSB0byBmb2N1cyBvbiBhIGRhdGEgZ3JpZCBub2RlIG9yIGV4Y2x1ZGUgaXQgZnJvbSB0
aGUgcHJvZmlsZS4KLSAgICB9LAotCi0gICAgX2RhdGFHcmlkTm9kZURlc2VsZWN0ZWQ6IGZ1bmN0
aW9uKG5vZGUpCi0gICAgewotICAgICAgICAvLyBGSVhNRTogVXBkYXRlIFVJIHdlIGhhdmUgdG8g
Zm9jdXMgb24gYSBkYXRhIGdyaWQgbm9kZSBvciBleGNsdWRlIGl0IGZyb20gdGhlIHByb2ZpbGUu
Ci0gICAgfSwKLQogICAgIF9zb3J0RGF0YTogZnVuY3Rpb24oZXZlbnQpCiAgICAgewogICAgICAg
ICB0aGlzLl9zb3J0UHJvZmlsZSh0aGlzLnByb2ZpbGUpOwpAQCAtNDM5LDcgKzQyOSw3IEBAIFdl
Ykluc3BlY3Rvci5KYXZhU2NyaXB0UHJvZmlsZVZpZXcucHJvdG90eXBlID0gewogICAgICAgICAg
ICAgICAgICJmdW5jdGlvbiI6ICJmdW5jdGlvbk5hbWUiCiAgICAgICAgICAgICB9W3NvcnRDb2x1
bW5JZGVudGlmaWVyXTsKIAotICAgICAgICB0aGlzLnByb2ZpbGVEYXRhR3JpZFRyZWUuc29ydChX
ZWJJbnNwZWN0b3IuUHJvZmlsZURhdGFHcmlkVHJlZS5wcm9wZXJ0eUNvbXBhcmF0b3Ioc29ydFBy
b3BlcnR5LCBzb3J0QXNjZW5kaW5nKSk7CisgICAgICAgIHRoaXMucHJvZmlsZURhdGFHcmlkVHJl
ZS5zb3J0KFdlYkluc3BlY3Rvci5MZWdhY3lQcm9maWxlRGF0YUdyaWRUcmVlLnByb3BlcnR5Q29t
cGFyYXRvcihzb3J0UHJvcGVydHksIHNvcnRBc2NlbmRpbmcpKTsKIAogICAgICAgICB0aGlzLnJl
ZnJlc2goKTsKICAgICB9LApAQCAtNDY1LDQgKzQ1NSw0IEBAIFdlYkluc3BlY3Rvci5KYXZhU2Ny
aXB0UHJvZmlsZVZpZXcucHJvdG90eXBlID0gewogICAgIH0KIH0KIAotV2ViSW5zcGVjdG9yLkph
dmFTY3JpcHRQcm9maWxlVmlldy5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLlBy
b2ZpbGVWaWV3LnByb3RvdHlwZTsKK1dlYkluc3BlY3Rvci5MZWdhY3lKYXZhU2NyaXB0UHJvZmls
ZVZpZXcucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5MZWdhY3lQcm9maWxlVmll
dy5wcm90b3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Qcm9maWxlRGF0YUdyaWRUcmVlLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvTGVnYWN5UHJvZmlsZURhdGFHcmlkVHJlZS5qcwpzaW1pbGFyaXR5IGluZGV4IDg4
JQpyZW5hbWUgZnJvbSBTb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm9maWxl
RGF0YUdyaWRUcmVlLmpzCnJlbmFtZSB0byBTb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9MZWdhY3lQcm9maWxlRGF0YUdyaWRUcmVlLmpzCmluZGV4IGZlNGE0MTguLmM5MDBjZmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb2ZpbGVE
YXRhR3JpZFRyZWUuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
TGVnYWN5UHJvZmlsZURhdGFHcmlkVHJlZS5qcwpAQCAtMjMsOSArMjMsOCBAQAogICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuUHJvZmlsZURhdGFHcmlkTm9kZSA9IGZ1bmN0aW9u
KHByb2ZpbGVWaWV3LCBwcm9maWxlTm9kZSwgb3duaW5nVHJlZSwgaGFzQ2hpbGRyZW4pCitXZWJJ
bnNwZWN0b3IuTGVnYWN5UHJvZmlsZURhdGFHcmlkTm9kZSA9IGZ1bmN0aW9uKHByb2ZpbGVOb2Rl
LCBvd25pbmdUcmVlLCBoYXNDaGlsZHJlbiwgc2hvd1RpbWVBc1BlcmNlbnQpCiB7Ci0gICAgdGhp
cy5wcm9maWxlVmlldyA9IHByb2ZpbGVWaWV3OwogICAgIHRoaXMucHJvZmlsZU5vZGUgPSBwcm9m
aWxlTm9kZTsKIAogICAgIFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUuY2FsbCh0aGlzLCBudWxs
LCBoYXNDaGlsZHJlbik7CkBAIC00Myw5ICs0MiwxMSBAQCBXZWJJbnNwZWN0b3IuUHJvZmlsZURh
dGFHcmlkTm9kZSA9IGZ1bmN0aW9uKHByb2ZpbGVWaWV3LCBwcm9maWxlTm9kZSwgb3duaW5nVHJl
ZQogICAgIHRoaXMuZnVuY3Rpb25OYW1lID0gcHJvZmlsZU5vZGUuZnVuY3Rpb25OYW1lOwogICAg
IHRoaXMubnVtYmVyT2ZDYWxscyA9IHByb2ZpbGVOb2RlLm51bWJlck9mQ2FsbHM7CiAgICAgdGhp
cy51cmwgPSBwcm9maWxlTm9kZS51cmw7CisKKyAgICB0aGlzLl9zaG93VGltZUFzUGVyY2VudCA9
IHNob3dUaW1lQXNQZXJjZW50IHx8IGZhbHNlOwogfQogCi1XZWJJbnNwZWN0b3IuUHJvZmlsZURh
dGFHcmlkTm9kZS5wcm90b3R5cGUgPSB7CitXZWJJbnNwZWN0b3IuTGVnYWN5UHJvZmlsZURhdGFH
cmlkTm9kZS5wcm90b3R5cGUgPSB7CiAgICAgZ2V0IGRhdGEoKQogICAgIHsKICAgICAgICAgZnVu
Y3Rpb24gZm9ybWF0TWlsbGlzZWNvbmRzKHRpbWUpCkBAIC01OCw3ICs1OSw3IEBAIFdlYkluc3Bl
Y3Rvci5Qcm9maWxlRGF0YUdyaWROb2RlLnByb3RvdHlwZSA9IHsKICAgICAgICAgZGF0YVsiZnVu
Y3Rpb24iXSA9IHRoaXMuZnVuY3Rpb25OYW1lOwogICAgICAgICBkYXRhWyJjYWxscyJdID0gdGhp
cy5udW1iZXJPZkNhbGxzOwogCi0gICAgICAgIGlmICh0aGlzLnByb2ZpbGVWaWV3LnNob3dUaW1l
QXNQZXJjZW50LnZhbHVlKSB7CisgICAgICAgIGlmICh0aGlzLl9zaG93VGltZUFzUGVyY2VudCkg
ewogICAgICAgICAgICAgZGF0YVsic2VsZiJdID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCIlLjJm
ICUlIikuZm9ybWF0KHRoaXMuc2VsZlBlcmNlbnQpOwogICAgICAgICAgICAgZGF0YVsidG90YWwi
XSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiJS4yZiAlJSIpLmZvcm1hdCh0aGlzLnRvdGFsUGVy
Y2VudCk7CiAgICAgICAgICAgICBkYXRhWyJhdmVyYWdlIl0gPSBXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIiUuMmYgJSUiKS5mb3JtYXQodGhpcy5hdmVyYWdlUGVyY2VudCk7CkBAIC03MSw2ICs3Miwx
OCBAQCBXZWJJbnNwZWN0b3IuUHJvZmlsZURhdGFHcmlkTm9kZS5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIHJldHVybiBkYXRhOwogICAgIH0sCiAKKyAgICBnZXQgc2hvd1RpbWVBc1BlcmNlbnQoKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3Nob3dUaW1lQXNQZXJjZW50OworICAgIH0sCisK
KyAgICByZWZyZXNoOiBmdW5jdGlvbihzaG93VGltZUFzUGVyY2VudCkKKyAgICB7CisgICAgICAg
IHRoaXMuX3Nob3dUaW1lQXNQZXJjZW50ID0gc2hvd1RpbWVBc1BlcmNlbnQ7CisKKyAgICAgICAg
V2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5wcm90b3R5cGUucmVmcmVzaC5jYWxsKHRoaXMpOwor
ICAgIH0sCisKICAgICBjcmVhdGVDZWxsOiBmdW5jdGlvbihjb2x1bW5JZGVudGlmaWVyKQogICAg
IHsKICAgICAgICAgdmFyIGNlbGwgPSBXZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlLnByb3RvdHlw
ZS5jcmVhdGVDZWxsLmNhbGwodGhpcywgY29sdW1uSWRlbnRpZmllcik7CkBAIC0xMDEsMTkgKzEx
NCw3IEBAIFdlYkluc3BlY3Rvci5Qcm9maWxlRGF0YUdyaWROb2RlLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgcmV0dXJuIGNlbGw7CiAgICAgfSwKIAotICAgIHNlbGVjdDogZnVuY3Rpb24oc3VwcmVz
c1NlbGVjdGVkRXZlbnQpCi0gICAgewotICAgICAgICBXZWJJbnNwZWN0b3IuRGF0YUdyaWROb2Rl
LnByb3RvdHlwZS5zZWxlY3QuY2FsbCh0aGlzLCBzdXByZXNzU2VsZWN0ZWRFdmVudCk7Ci0gICAg
ICAgIHRoaXMucHJvZmlsZVZpZXcuX2RhdGFHcmlkTm9kZVNlbGVjdGVkKHRoaXMpOwotICAgIH0s
Ci0KLSAgICBkZXNlbGVjdDogZnVuY3Rpb24oc3VwcmVzc0Rlc2VsZWN0ZWRFdmVudCkKLSAgICB7
Ci0gICAgICAgIFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUucHJvdG90eXBlLmRlc2VsZWN0LmNh
bGwodGhpcywgc3VwcmVzc0Rlc2VsZWN0ZWRFdmVudCk7Ci0gICAgICAgIHRoaXMucHJvZmlsZVZp
ZXcuX2RhdGFHcmlkTm9kZURlc2VsZWN0ZWQodGhpcyk7Ci0gICAgfSwKLQotICAgIHNvcnQ6IGZ1
bmN0aW9uKC8qRnVuY3Rpb24qLyBjb21wYXJhdG9yLCAvKkJvb2xlYW4qLyBmb3JjZSkKKyAgICBz
b3J0OiBmdW5jdGlvbihjb21wYXJhdG9yLCBmb3JjZSkKICAgICB7CiAgICAgICAgIHZhciBncmlk
Tm9kZUdyb3VwcyA9IFtbdGhpc11dOwogCkBAIC0xNDksMjggKzE1MCwyOCBAQCBXZWJJbnNwZWN0
b3IuUHJvZmlsZURhdGFHcmlkTm9kZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KICAgICB9LAog
Ci0gICAgaW5zZXJ0Q2hpbGQ6IGZ1bmN0aW9uKC8qUHJvZmlsZURhdGFHcmlkTm9kZSovIHByb2Zp
bGVEYXRhR3JpZE5vZGUsIGluZGV4KQorICAgIGluc2VydENoaWxkOiBmdW5jdGlvbihwcm9maWxl
RGF0YUdyaWROb2RlLCBpbmRleCkKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5EYXRhR3Jp
ZE5vZGUucHJvdG90eXBlLmluc2VydENoaWxkLmNhbGwodGhpcywgcHJvZmlsZURhdGFHcmlkTm9k
ZSwgaW5kZXgpOwogCiAgICAgICAgIHRoaXMuY2hpbGRyZW5CeUNhbGxVSURbcHJvZmlsZURhdGFH
cmlkTm9kZS5jYWxsVUlEXSA9IHByb2ZpbGVEYXRhR3JpZE5vZGU7CiAgICAgfSwKIAotICAgIHJl
bW92ZUNoaWxkOiBmdW5jdGlvbigvKlByb2ZpbGVEYXRhR3JpZE5vZGUqLyBwcm9maWxlRGF0YUdy
aWROb2RlKQorICAgIHJlbW92ZUNoaWxkOiBmdW5jdGlvbihwcm9maWxlRGF0YUdyaWROb2RlKQog
ICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5wcm90b3R5cGUucmVtb3Zl
Q2hpbGQuY2FsbCh0aGlzLCBwcm9maWxlRGF0YUdyaWROb2RlKTsKIAogICAgICAgICBkZWxldGUg
dGhpcy5jaGlsZHJlbkJ5Q2FsbFVJRFtwcm9maWxlRGF0YUdyaWROb2RlLmNhbGxVSURdOwogICAg
IH0sCiAKLSAgICByZW1vdmVDaGlsZHJlbjogZnVuY3Rpb24oLypQcm9maWxlRGF0YUdyaWROb2Rl
Ki8gcHJvZmlsZURhdGFHcmlkTm9kZSkKKyAgICByZW1vdmVDaGlsZHJlbjogZnVuY3Rpb24ocHJv
ZmlsZURhdGFHcmlkTm9kZSkKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5EYXRhR3JpZE5v
ZGUucHJvdG90eXBlLnJlbW92ZUNoaWxkcmVuLmNhbGwodGhpcyk7CiAKICAgICAgICAgdGhpcy5j
aGlsZHJlbkJ5Q2FsbFVJRCA9IHt9OwogICAgIH0sCiAKLSAgICBmaW5kQ2hpbGQ6IGZ1bmN0aW9u
KC8qTm9kZSovIG5vZGUpCisgICAgZmluZENoaWxkOiBmdW5jdGlvbihub2RlKQogICAgIHsKICAg
ICAgICAgaWYgKCFub2RlKQogICAgICAgICAgICAgcmV0dXJuIG51bGw7CkBAIC0yOTQsMjIgKzI5
NSwyMCBAQCBXZWJJbnNwZWN0b3IuUHJvZmlsZURhdGFHcmlkTm9kZS5wcm90b3R5cGUgPSB7CiAg
ICAgfQogfQogCi1XZWJJbnNwZWN0b3IuUHJvZmlsZURhdGFHcmlkTm9kZS5wcm90b3R5cGUuX19w
cm90b19fID0gV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5wcm90b3R5cGU7CitXZWJJbnNwZWN0
b3IuTGVnYWN5UHJvZmlsZURhdGFHcmlkTm9kZS5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5z
cGVjdG9yLkRhdGFHcmlkTm9kZS5wcm90b3R5cGU7CiAKLVdlYkluc3BlY3Rvci5Qcm9maWxlRGF0
YUdyaWRUcmVlID0gZnVuY3Rpb24ocHJvZmlsZVZpZXcsIHByb2ZpbGVOb2RlKQorV2ViSW5zcGVj
dG9yLkxlZ2FjeVByb2ZpbGVEYXRhR3JpZFRyZWUgPSBmdW5jdGlvbihwcm9maWxlTm9kZSkKIHsK
ICAgICB0aGlzLnRyZWUgPSB0aGlzOwogICAgIHRoaXMuY2hpbGRyZW4gPSBbXTsKIAotICAgIHRo
aXMucHJvZmlsZVZpZXcgPSBwcm9maWxlVmlldzsKLQogICAgIHRoaXMudG90YWxUaW1lID0gcHJv
ZmlsZU5vZGUudG90YWxUaW1lOwogICAgIHRoaXMubGFzdENvbXBhcmF0b3IgPSBudWxsOwogCiAg
ICAgdGhpcy5jaGlsZHJlbkJ5Q2FsbFVJRCA9IHt9OwogfQogCi1XZWJJbnNwZWN0b3IuUHJvZmls
ZURhdGFHcmlkVHJlZS5wcm90b3R5cGUgPSB7CitXZWJJbnNwZWN0b3IuTGVnYWN5UHJvZmlsZURh
dGFHcmlkVHJlZS5wcm90b3R5cGUgPSB7CiAgICAgZ2V0IGV4cGFuZGVkKCkKICAgICB7CiAgICAg
ICAgIHJldHVybiB0cnVlOwpAQCAtMzMyLDggKzMzMSw4IEBAIFdlYkluc3BlY3Rvci5Qcm9maWxl
RGF0YUdyaWRUcmVlLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5jaGlsZHJlbkJ5Q2FsbFVJ
RCA9IHt9OwogICAgIH0sCiAKLSAgICBmaW5kQ2hpbGQ6IFdlYkluc3BlY3Rvci5Qcm9maWxlRGF0
YUdyaWROb2RlLnByb3RvdHlwZS5maW5kQ2hpbGQsCi0gICAgc29ydDogV2ViSW5zcGVjdG9yLlBy
b2ZpbGVEYXRhR3JpZE5vZGUucHJvdG90eXBlLnNvcnQsCisgICAgZmluZENoaWxkOiBXZWJJbnNw
ZWN0b3IuTGVnYWN5UHJvZmlsZURhdGFHcmlkTm9kZS5wcm90b3R5cGUuZmluZENoaWxkLAorICAg
IHNvcnQ6IFdlYkluc3BlY3Rvci5MZWdhY3lQcm9maWxlRGF0YUdyaWROb2RlLnByb3RvdHlwZS5z
b3J0LAogCiAgICAgX3NhdmU6IGZ1bmN0aW9uKCkKICAgICB7CkBAIC0zNjIsOSArMzYxLDkgQEAg
V2ViSW5zcGVjdG9yLlByb2ZpbGVEYXRhR3JpZFRyZWUucHJvdG90eXBlID0gewogICAgIH0KIH0K
IAotV2ViSW5zcGVjdG9yLlByb2ZpbGVEYXRhR3JpZFRyZWUucHJvcGVydHlDb21wYXJhdG9ycyA9
IFt7fSwge31dOworV2ViSW5zcGVjdG9yLkxlZ2FjeVByb2ZpbGVEYXRhR3JpZFRyZWUucHJvcGVy
dHlDb21wYXJhdG9ycyA9IFt7fSwge31dOwogCi1XZWJJbnNwZWN0b3IuUHJvZmlsZURhdGFHcmlk
VHJlZS5wcm9wZXJ0eUNvbXBhcmF0b3IgPSBmdW5jdGlvbigvKlN0cmluZyovIHByb3BlcnR5LCAv
KkJvb2xlYW4qLyBpc0FzY2VuZGluZykKK1dlYkluc3BlY3Rvci5MZWdhY3lQcm9maWxlRGF0YUdy
aWRUcmVlLnByb3BlcnR5Q29tcGFyYXRvciA9IGZ1bmN0aW9uKHByb3BlcnR5LCBpc0FzY2VuZGlu
ZykKIHsKICAgICB2YXIgY29tcGFyYXRvciA9IHRoaXMucHJvcGVydHlDb21wYXJhdG9yc1soaXNB
c2NlbmRpbmcgPyAxIDogMCldW3Byb3BlcnR5XTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvZmlsZU1hbmFnZXIuanMgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9MZWdhY3lQcm9maWxlTWFuYWdlci5qcwpzaW1pbGFyaXR5
IGluZGV4IDYxJQpyZW5hbWUgZnJvbSBTb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Qcm9maWxlTWFuYWdlci5qcwpyZW5hbWUgdG8gU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvTGVnYWN5UHJvZmlsZU1hbmFnZXIuanMKaW5kZXggNWE5ODJhNC4uNjIzMTZiNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvZmlsZU1h
bmFnZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTGVnYWN5
UHJvZmlsZU1hbmFnZXIuanMKQEAgLTIzLDEyICsyMywxMSBAQAogICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5Qcm9maWxlTWFuYWdlciA9IGZ1
bmN0aW9uKCkKK1dlYkluc3BlY3Rvci5MZWdhY3lQcm9maWxlTWFuYWdlciA9IGZ1bmN0aW9uKCkK
IHsKICAgICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CiAKLSAgICB0aGlzLl9qYXZh
U2NyaXB0UHJvZmlsZVR5cGUgPSBuZXcgV2ViSW5zcGVjdG9yLkphdmFTY3JpcHRQcm9maWxlVHlw
ZTsKLSAgICB0aGlzLl9jYW52YXNQcm9maWxlVHlwZSA9IG5ldyBXZWJJbnNwZWN0b3IuQ2FudmFz
UHJvZmlsZVR5cGU7CisgICAgdGhpcy5famF2YVNjcmlwdFByb2ZpbGVUeXBlID0gbmV3IFdlYklu
c3BlY3Rvci5MZWdhY3lKYXZhU2NyaXB0UHJvZmlsZVR5cGU7CiAKICAgICBQcm9maWxlckFnZW50
LmVuYWJsZSgpOwogICAgIFByb2ZpbGVyQWdlbnQuZ2V0UHJvZmlsZUhlYWRlcnMoKTsKQEAgLTM4
LDcgKzM3LDcgQEAgV2ViSW5zcGVjdG9yLlByb2ZpbGVNYW5hZ2VyID0gZnVuY3Rpb24oKQogICAg
IHRoaXMuaW5pdGlhbGl6ZSgpOwogfTsKIAotV2ViSW5zcGVjdG9yLlByb2ZpbGVNYW5hZ2VyLkV2
ZW50ID0geworV2ViSW5zcGVjdG9yLkxlZ2FjeVByb2ZpbGVNYW5hZ2VyLkV2ZW50ID0gewogICAg
IFByb2ZpbGVXYXNBZGRlZDogInByb2ZpbGUtbWFuYWdlci1wcm9maWxlLXdhcy1hZGRlZCIsCiAg
ICAgUHJvZmlsZVdhc1VwZGF0ZWQ6ICJwcm9maWxlLW1hbmFnZXItcHJvZmlsZS13YXMtdXBkYXRl
ZCIsCiAgICAgUHJvZmlsaW5nU3RhcnRlZDogInByb2ZpbGUtbWFuYWdlci1wcm9maWxpbmctc3Rh
cnRlZCIsCkBAIC00NywxMCArNDYsMTAgQEAgV2ViSW5zcGVjdG9yLlByb2ZpbGVNYW5hZ2VyLkV2
ZW50ID0gewogICAgIENsZWFyZWQ6ICJwcm9maWxlLW1hbmFnZXItY2xlYXJlZCIKIH07CiAKLVdl
Ykluc3BlY3Rvci5Qcm9maWxlTWFuYWdlci5Vc2VySW5pdGlhdGVkUHJvZmlsZU5hbWUgPSAib3Jn
LndlYmtpdC5wcm9maWxlcy51c2VyLWluaXRpYXRlZCI7CitXZWJJbnNwZWN0b3IuTGVnYWN5UHJv
ZmlsZU1hbmFnZXIuVXNlckluaXRpYXRlZFByb2ZpbGVOYW1lID0gIm9yZy53ZWJraXQucHJvZmls
ZXMudXNlci1pbml0aWF0ZWQiOwogCi1XZWJJbnNwZWN0b3IuUHJvZmlsZU1hbmFnZXIucHJvdG90
eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuUHJvZmlsZU1hbmFnZXIsCitX
ZWJJbnNwZWN0b3IuTGVnYWN5UHJvZmlsZU1hbmFnZXIucHJvdG90eXBlID0geworICAgIGNvbnN0
cnVjdG9yOiBXZWJJbnNwZWN0b3IuTGVnYWN5UHJvZmlsZU1hbmFnZXIsCiAKICAgICAvLyBQdWJs
aWMKIApAQCAtNTksMTEgKzU4LDEwIEBAIFdlYkluc3BlY3Rvci5Qcm9maWxlTWFuYWdlci5wcm90
b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2NoZWNrRm9ySW50ZXJydXB0aW9ucygpOwogCiAgICAg
ICAgIHRoaXMuX3JlY29yZGluZ0phdmFTY3JpcHRQcm9maWxlID0gbnVsbDsKLSAgICAgICAgdGhp
cy5fcmVjb3JkaW5nQ2FudmFzUHJvZmlsZSA9IG51bGw7CiAKICAgICAgICAgdGhpcy5faXNQcm9m
aWxpbmcgPSBmYWxzZTsKIAotICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhX
ZWJJbnNwZWN0b3IuUHJvZmlsZU1hbmFnZXIuRXZlbnQuQ2xlYXJlZCk7CisgICAgICAgIHRoaXMu
ZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5MZWdhY3lQcm9maWxlTWFuYWdl
ci5FdmVudC5DbGVhcmVkKTsKICAgICB9LAogCiAgICAgaXNQcm9maWxpbmdKYXZhU2NyaXB0OiBm
dW5jdGlvbigpCkBAIC04MSw1MCArNzksMTMgQEAgV2ViSW5zcGVjdG9yLlByb2ZpbGVNYW5hZ2Vy
LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5famF2YVNjcmlwdFByb2ZpbGVUeXBlLnN0b3BS
ZWNvcmRpbmdQcm9maWxlKCk7CiAgICAgfSwKIAotICAgIGlzUHJvZmlsaW5nQ2FudmFzOiBmdW5j
dGlvbigpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fY2FudmFzUHJvZmlsZVR5cGUuaXNS
ZWNvcmRpbmdQcm9maWxlKCk7Ci0gICAgfSwKLQotICAgIHN0YXJ0UHJvZmlsaW5nQ2FudmFzOiBm
dW5jdGlvbigpCi0gICAgewotICAgICAgICB0aGlzLl9jYW52YXNQcm9maWxlVHlwZS5zdGFydFJl
Y29yZGluZ1Byb2ZpbGUoKTsKLQotICAgICAgICB2YXIgaWQgPSB0aGlzLl9jYW52YXNQcm9maWxl
VHlwZS5uZXh0UHJvZmlsZUlkKCk7Ci0gICAgICAgIHRoaXMuX3JlY29yZGluZ0NhbnZhc1Byb2Zp
bGUgPSBuZXcgV2ViSW5zcGVjdG9yLkNhbnZhc1Byb2ZpbGVPYmplY3QoV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJDYW52YXMgUHJvZmlsZSAlZCIpLmZvcm1hdChpZCksIGlkLCB0cnVlKTsKLSAgICAg
ICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlByb2ZpbGVNYW5h
Z2VyLkV2ZW50LlByb2ZpbGVXYXNBZGRlZCwge3Byb2ZpbGU6IHRoaXMuX3JlY29yZGluZ0NhbnZh
c1Byb2ZpbGV9KTsKLQotICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJ
bnNwZWN0b3IuUHJvZmlsZU1hbmFnZXIuRXZlbnQuUHJvZmlsaW5nU3RhcnRlZCk7Ci0gICAgfSwK
LQotICAgIHN0b3BQcm9maWxpbmdDYW52YXM6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIGZ1
bmN0aW9uIGNhbnZhc1Byb2ZpbGluZ1N0b3BwZWQoZXJyb3IsIHByb2ZpbGUpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIGlmIChlcnJvcikKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAg
ICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX3JlY29yZGluZ0NhbnZhc1Byb2ZpbGUpOwotCi0g
ICAgICAgICAgICB0aGlzLl9yZWNvcmRpbmdDYW52YXNQcm9maWxlLmRhdGEgPSBwcm9maWxlLmRh
dGE7Ci0gICAgICAgICAgICB0aGlzLl9yZWNvcmRpbmdDYW52YXNQcm9maWxlLnJlY29yZGluZyA9
IGZhbHNlOwotCi0gICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJ
bnNwZWN0b3IuUHJvZmlsZU1hbmFnZXIuRXZlbnQuUHJvZmlsZVdhc1VwZGF0ZWQsIHtwcm9maWxl
OiB0aGlzLl9yZWNvcmRpbmdDYW52YXNQcm9maWxlfSk7Ci0gICAgICAgICAgICB0aGlzLmRpc3Bh
dGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuUHJvZmlsZU1hbmFnZXIuRXZlbnQuUHJv
ZmlsaW5nRW5kZWQsIHtwcm9maWxlOiB0aGlzLl9yZWNvcmRpbmdDYW52YXNQcm9maWxlfSk7Ci0K
LSAgICAgICAgICAgIHRoaXMuX3JlY29yZGluZ0NhbnZhc1Byb2ZpbGUgPSBudWxsOwotICAgICAg
ICB9Ci0KLSAgICAgICAgdGhpcy5fY2FudmFzUHJvZmlsZVR5cGUuc3RvcFJlY29yZGluZ1Byb2Zp
bGUoY2FudmFzUHJvZmlsaW5nU3RvcHBlZC5iaW5kKHRoaXMpKTsKLSAgICB9LAotCiAgICAgcHJv
ZmlsZVdhc1N0YXJ0ZWRGcm9tQ29uc29sZTogZnVuY3Rpb24odGl0bGUpCiAgICAgewogICAgICAg
ICB0aGlzLnNldFJlY29yZGluZ0phdmFTY3JpcHRQcm9maWxlKHRydWUsIHRydWUpOwogCi0gICAg
ICAgIGlmICh0aXRsZS5pbmRleE9mKFdlYkluc3BlY3Rvci5Qcm9maWxlTWFuYWdlci5Vc2VySW5p
dGlhdGVkUHJvZmlsZU5hbWUpID09PSAtMSkgeworICAgICAgICBpZiAodGl0bGUuaW5kZXhPZihX
ZWJJbnNwZWN0b3IuTGVnYWN5UHJvZmlsZU1hbmFnZXIuVXNlckluaXRpYXRlZFByb2ZpbGVOYW1l
KSA9PT0gLTEpIHsKICAgICAgICAgICAgIHRoaXMuX3JlY29yZGluZ0phdmFTY3JpcHRQcm9maWxl
LnRpdGxlID0gdGl0bGU7Ci0gICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVy
cyhXZWJJbnNwZWN0b3IuUHJvZmlsZU1hbmFnZXIuRXZlbnQuUHJvZmlsZVdhc1VwZGF0ZWQsIHtw
cm9maWxlOiB0aGlzLl9yZWNvcmRpbmdKYXZhU2NyaXB0UHJvZmlsZX0pOworICAgICAgICAgICAg
dGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkxlZ2FjeVByb2ZpbGVN
YW5hZ2VyLkV2ZW50LlByb2ZpbGVXYXNVcGRhdGVkLCB7cHJvZmlsZTogdGhpcy5fcmVjb3JkaW5n
SmF2YVNjcmlwdFByb2ZpbGV9KTsKICAgICAgICAgfQogICAgIH0sCiAKQEAgLTE0NCw3ICsxMDUs
NyBAQCBXZWJJbnNwZWN0b3IuUHJvZmlsZU1hbmFnZXIucHJvdG90eXBlID0gewogICAgICAgICB0
aGlzLl9yZWNvcmRpbmdKYXZhU2NyaXB0UHJvZmlsZS5pZCA9IHByb2ZpbGUudWlkOwogICAgICAg
ICB0aGlzLl9yZWNvcmRpbmdKYXZhU2NyaXB0UHJvZmlsZS5yZWNvcmRpbmcgPSBmYWxzZTsKIAot
ICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuUHJvZmls
ZU1hbmFnZXIuRXZlbnQuUHJvZmlsZVdhc1VwZGF0ZWQsIHtwcm9maWxlOiB0aGlzLl9yZWNvcmRp
bmdKYXZhU2NyaXB0UHJvZmlsZX0pOworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3Rl
bmVycyhXZWJJbnNwZWN0b3IuTGVnYWN5UHJvZmlsZU1hbmFnZXIuRXZlbnQuUHJvZmlsZVdhc1Vw
ZGF0ZWQsIHtwcm9maWxlOiB0aGlzLl9yZWNvcmRpbmdKYXZhU2NyaXB0UHJvZmlsZX0pOwogCiAg
ICAgICAgIC8vIFdlIHdhbnQgdG8gcmVzZXQgX3JlY29yZGluZ0phdmFTY3JpcHRQcm9maWxlIHNv
IHRoYXQgd2UgY2FuIGlkZW50aWZ5CiAgICAgICAgIC8vIGludGVycnVwdGlvbnMsIGJ1dCB3ZSBh
bHNvIHdhbnQgdG8ga2VlcCB0cmFjayBvZiB0aGUgbGFzdCBwcm9maWxlCkBAIC0xNjcsMTQgKzEy
OCwxNCBAQCBXZWJJbnNwZWN0b3IuUHJvZmlsZU1hbmFnZXIucHJvdG90eXBlID0gewogICAgICAg
ICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlmIChpc1Byb2ZpbGluZyAmJiAhdGhpcy5fcmVjb3Jk
aW5nSmF2YVNjcmlwdFByb2ZpbGUpCi0gICAgICAgICAgICB0aGlzLl9yZWNvcmRpbmdKYXZhU2Ny
aXB0UHJvZmlsZSA9IG5ldyBXZWJJbnNwZWN0b3IuSmF2YVNjcmlwdFByb2ZpbGVPYmplY3QoV2Vi
SW5zcGVjdG9yLlByb2ZpbGVNYW5hZ2VyLlVzZXJJbml0aWF0ZWRQcm9maWxlTmFtZSwgLTEsIHRy
dWUpOworICAgICAgICAgICAgdGhpcy5fcmVjb3JkaW5nSmF2YVNjcmlwdFByb2ZpbGUgPSBuZXcg
V2ViSW5zcGVjdG9yLkxlZ2FjeUphdmFTY3JpcHRQcm9maWxlT2JqZWN0KFdlYkluc3BlY3Rvci5M
ZWdhY3lQcm9maWxlTWFuYWdlci5Vc2VySW5pdGlhdGVkUHJvZmlsZU5hbWUsIC0xLCB0cnVlKTsK
IAogICAgICAgICBpZiAoaXNQcm9maWxpbmcpIHsKLSAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hF
dmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5Qcm9maWxlTWFuYWdlci5FdmVudC5Qcm9maWxl
V2FzQWRkZWQsIHtwcm9maWxlOiB0aGlzLl9yZWNvcmRpbmdKYXZhU2NyaXB0UHJvZmlsZX0pOwor
ICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkxl
Z2FjeVByb2ZpbGVNYW5hZ2VyLkV2ZW50LlByb2ZpbGVXYXNBZGRlZCwge3Byb2ZpbGU6IHRoaXMu
X3JlY29yZGluZ0phdmFTY3JpcHRQcm9maWxlfSk7CiAgICAgICAgICAgICBpZiAoIWZyb21Db25z
b2xlKQotICAgICAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYklu
c3BlY3Rvci5Qcm9maWxlTWFuYWdlci5FdmVudC5Qcm9maWxpbmdTdGFydGVkKTsKKyAgICAgICAg
ICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuTGVnYWN5
UHJvZmlsZU1hbmFnZXIuRXZlbnQuUHJvZmlsaW5nU3RhcnRlZCk7CiAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3Iu
UHJvZmlsZU1hbmFnZXIuRXZlbnQuUHJvZmlsaW5nRW5kZWQsIHsKKyAgICAgICAgICAgIHRoaXMu
ZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5MZWdhY3lQcm9maWxlTWFuYWdl
ci5FdmVudC5Qcm9maWxpbmdFbmRlZCwgewogICAgICAgICAgICAgICAgIHByb2ZpbGU6IHRoaXMu
X2xhc3RKYXZhU2NyaXB0UHJvZmlsZUFkZGVkLAogICAgICAgICAgICAgICAgIGZyb21Db25zb2xl
OiBmcm9tQ29uc29sZQogICAgICAgICAgICAgfSk7CkBAIC0yMDIsMTEgKzE2Myw4IEBAIFdlYklu
c3BlY3Rvci5Qcm9maWxlTWFuYWdlci5wcm90b3R5cGUgPSB7CiAgICAgX2NoZWNrRm9ySW50ZXJy
dXB0aW9uczogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX3JlY29yZGluZ0ph
dmFTY3JpcHRQcm9maWxlKSB7Ci0gICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3Rl
bmVycyhXZWJJbnNwZWN0b3IuUHJvZmlsZU1hbmFnZXIuRXZlbnQuUHJvZmlsaW5nSW50ZXJydXB0
ZWQsIHtwcm9maWxlOiB0aGlzLl9yZWNvcmRpbmdKYXZhU2NyaXB0UHJvZmlsZX0pOworICAgICAg
ICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkxlZ2FjeVBy
b2ZpbGVNYW5hZ2VyLkV2ZW50LlByb2ZpbGluZ0ludGVycnVwdGVkLCB7cHJvZmlsZTogdGhpcy5f
cmVjb3JkaW5nSmF2YVNjcmlwdFByb2ZpbGV9KTsKICAgICAgICAgICAgIHRoaXMuX2phdmFTY3Jp
cHRQcm9maWxlVHlwZS5zZXRSZWNvcmRpbmdQcm9maWxlKGZhbHNlKTsKLSAgICAgICAgfSBlbHNl
IGlmICh0aGlzLl9yZWNvcmRpbmdDYW52YXNQcm9maWxlKSB7Ci0gICAgICAgICAgICB0aGlzLmRp
c3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuUHJvZmlsZU1hbmFnZXIuRXZlbnQu
UHJvZmlsaW5nSW50ZXJydXB0ZWQsIHtwcm9maWxlOiB0aGlzLl9yZWNvcmRpbmdDYW52YXNQcm9m
aWxlfSk7Ci0gICAgICAgICAgICB0aGlzLl9jYW52YXNQcm9maWxlVHlwZS5zZXRSZWNvcmRpbmdQ
cm9maWxlKGZhbHNlKTsKICAgICAgICAgfQogICAgIH0sCiAKQEAgLTIxNiw5ICsxNzQsNyBAQCBX
ZWJJbnNwZWN0b3IuUHJvZmlsZU1hbmFnZXIucHJvdG90eXBlID0gewogCiAgICAgICAgIGlmICh0
aGlzLl9yZWNvcmRpbmdKYXZhU2NyaXB0UHJvZmlsZSkKICAgICAgICAgICAgIHRoaXMuc3RhcnRQ
cm9maWxpbmdKYXZhU2NyaXB0KCk7Ci0gICAgICAgIGVsc2UgaWYgKHRoaXMuX3JlY29yZGluZ0Nh
bnZhc1Byb2ZpbGUpCi0gICAgICAgICAgICB0aGlzLnN0YXJ0UHJvZmlsaW5nQ2FudmFzKCk7CiAg
ICAgfQogfTsKIAotV2ViSW5zcGVjdG9yLlByb2ZpbGVNYW5hZ2VyLnByb3RvdHlwZS5fX3Byb3Rv
X18gPSBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZTsKK1dlYkluc3BlY3Rvci5MZWdhY3lQ
cm9maWxlTWFuYWdlci5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLk9iamVjdC5w
cm90b3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Qcm9maWxlT2JqZWN0LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
TGVnYWN5UHJvZmlsZU9iamVjdC5qcwpzaW1pbGFyaXR5IGluZGV4IDg0JQpyZW5hbWUgZnJvbSBT
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm9maWxlT2JqZWN0LmpzCnJlbmFt
ZSB0byBTb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9MZWdhY3lQcm9maWxlT2Jq
ZWN0LmpzCmluZGV4IDY3MmQ4MTguLmE2M2ZkMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb2ZpbGVPYmplY3QuanMKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTGVnYWN5UHJvZmlsZU9iamVjdC5qcwpAQCAtMjMsNyAr
MjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYklu
c3BlY3Rvci5Qcm9maWxlT2JqZWN0ID0gZnVuY3Rpb24odHlwZSwgdGl0bGUsIGlkLCBpc1JlY29y
ZGluZykKK1dlYkluc3BlY3Rvci5MZWdhY3lQcm9maWxlT2JqZWN0ID0gZnVuY3Rpb24odHlwZSwg
dGl0bGUsIGlkLCBpc1JlY29yZGluZykKIHsKICAgICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwo
dGhpcyk7CiAKQEAgLTM3LDEyICszNywxMiBAQCBXZWJJbnNwZWN0b3IuUHJvZmlsZU9iamVjdCA9
IGZ1bmN0aW9uKHR5cGUsIHRpdGxlLCBpZCwgaXNSZWNvcmRpbmcpCiAgICAgdGhpcy5faXNSZWNv
cmRpbmcgPSBpc1JlY29yZGluZyB8fCBmYWxzZTsKIH07CiAKLVdlYkluc3BlY3Rvci5Qcm9maWxl
T2JqZWN0LkV2ZW50ID0geworV2ViSW5zcGVjdG9yLkxlZ2FjeVByb2ZpbGVPYmplY3QuRXZlbnQg
PSB7CiAgICAgRmluc2hlZFJlY29yZGluZzogInByb2ZpbGUtb2JqZWN0LWZpbmlzaGVkLXJlY29y
ZGluZyIKIH07CiAKLVdlYkluc3BlY3Rvci5Qcm9maWxlT2JqZWN0LnByb3RvdHlwZSA9IHsKLSAg
ICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLlByb2ZpbGVPYmplY3QsCitXZWJJbnNwZWN0b3Iu
TGVnYWN5UHJvZmlsZU9iamVjdC5wcm90b3R5cGUgPSB7CisgICAgY29uc3RydWN0b3I6IFdlYklu
c3BlY3Rvci5MZWdhY3lQcm9maWxlT2JqZWN0LAogICAgIAogICAgIGdldCB0eXBlKCkKICAgICB7
CkBAIC04Niw4ICs4Niw4IEBAIFdlYkluc3BlY3Rvci5Qcm9maWxlT2JqZWN0LnByb3RvdHlwZSA9
IHsKIAogICAgICAgICB0aGlzLl9pc1JlY29yZGluZyA9IGZsYWc7CiAgICAgICAgIGlmICghZmxh
ZykKLSAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rv
ci5Qcm9maWxlT2JqZWN0LkV2ZW50LkZpbnNoZWRSZWNvcmRpbmcpOworICAgICAgICAgICAgdGhp
cy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkxlZ2FjeVByb2ZpbGVPYmpl
Y3QuRXZlbnQuRmluc2hlZFJlY29yZGluZyk7CiAgICAgfQogfTsKIAotV2ViSW5zcGVjdG9yLlBy
b2ZpbGVPYmplY3QucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5PYmplY3QucHJv
dG90eXBlOworV2ViSW5zcGVjdG9yLkxlZ2FjeVByb2ZpbGVPYmplY3QucHJvdG90eXBlLl9fcHJv
dG9fXyA9IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvZmlsZVR5cGUuanMgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9MZWdhY3lQcm9maWxlVHlwZS5qcwpzaW1pbGFyaXR5
IGluZGV4IDkwJQpyZW5hbWUgZnJvbSBTb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Qcm9maWxlVHlwZS5qcwpyZW5hbWUgdG8gU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvTGVnYWN5UHJvZmlsZVR5cGUuanMKaW5kZXggZmYyZDY3OS4uMWI2ZDU0YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvZmlsZVR5cGUuanMK
KysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTGVnYWN5UHJvZmlsZVR5
cGUuanMKQEAgLTIzLDE2ICsyMywxNiBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNw
ZWN0b3IuUHJvZmlsZVR5cGUgPSBmdW5jdGlvbihpZCwgbmFtZSkKK1dlYkluc3BlY3Rvci5MZWdh
Y3lQcm9maWxlVHlwZSA9IGZ1bmN0aW9uKGlkLCBuYW1lKQogewogICAgIHRoaXMuX2lkID0gaWQ7
CiAgICAgdGhpcy5fbmFtZSA9IG5hbWU7CiB9CiAKLVdlYkluc3BlY3Rvci5Qcm9maWxlVHlwZS5V
UkxSZWdFeHAgPSAvd2Via2l0LXByb2ZpbGU6XC9cLyguKylcLyguKykjKFswLTldKykvOwotV2Vi
SW5zcGVjdG9yLlByb2ZpbGVUeXBlLlByb2ZpbGVTY2hlbWUgPSAid2Via2l0LXByb2ZpbGUiOwor
V2ViSW5zcGVjdG9yLkxlZ2FjeVByb2ZpbGVUeXBlLlVSTFJlZ0V4cCA9IC93ZWJraXQtcHJvZmls
ZTpcL1wvKC4rKVwvKC4rKSMoWzAtOV0rKS87CitXZWJJbnNwZWN0b3IuTGVnYWN5UHJvZmlsZVR5
cGUuUHJvZmlsZVNjaGVtZSA9ICJ3ZWJraXQtcHJvZmlsZSI7CiAKLVdlYkluc3BlY3Rvci5Qcm9m
aWxlVHlwZS5wcm90b3R5cGUgPSB7CitXZWJJbnNwZWN0b3IuTGVnYWN5UHJvZmlsZVR5cGUucHJv
dG90eXBlID0gewogICAgIGdldCBidXR0b25Ub29sdGlwKCkKICAgICB7CiAgICAgICAgIHJldHVy
biAiIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1By
b2ZpbGVWaWV3LmNzcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0xlZ2Fj
eVByb2ZpbGVWaWV3LmNzcwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvZmlsZVZpZXcuY3NzCnJlbmFtZSB0byBT
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9MZWdhY3lQcm9maWxlVmlldy5jc3MK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb2ZpbGVW
aWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTGVnYWN5UHJvZmls
ZVZpZXcuanMKc2ltaWxhcml0eSBpbmRleCA5MCUKcmVuYW1lIGZyb20gU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvZmlsZVZpZXcuanMKcmVuYW1lIHRvIFNvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0xlZ2FjeVByb2ZpbGVWaWV3LmpzCmluZGV4IGY3YjUz
YjQuLmNjODU4ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1Byb2ZpbGVWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL0xlZ2FjeVByb2ZpbGVWaWV3LmpzCkBAIC0yMyw3ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLlByb2ZpbGVWaWV3ID0g
ZnVuY3Rpb24ocHJvZmlsZSwgc2V0dGluZ0lkKQorV2ViSW5zcGVjdG9yLkxlZ2FjeVByb2ZpbGVW
aWV3ID0gZnVuY3Rpb24ocHJvZmlsZSwgc2V0dGluZ0lkKQogewogICAgIFdlYkluc3BlY3Rvci5D
b250ZW50Vmlldy5jYWxsKHRoaXMsIHByb2ZpbGUpOwogCkBAIC0zOCwxMyArMzgsMTMgQEAgV2Vi
SW5zcGVjdG9yLlByb2ZpbGVWaWV3ID0gZnVuY3Rpb24ocHJvZmlsZSwgc2V0dGluZ0lkKQogCiAg
ICAgaWYgKHByb2ZpbGUucmVjb3JkaW5nKSB7CiAgICAgICAgIHRoaXMuX3Nob3dSZWNvcmRpbmdN
ZXNzYWdlKCk7Ci0gICAgICAgIHByb2ZpbGUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3Iu
UHJvZmlsZU9iamVjdC5FdmVudC5GaW5zaGVkUmVjb3JkaW5nLCB0aGlzLl9wcm9maWxlRmluaXNo
ZWRSZWNvcmRpbmcsIHRoaXMpOworICAgICAgICBwcm9maWxlLmFkZEV2ZW50TGlzdGVuZXIoV2Vi
SW5zcGVjdG9yLkxlZ2FjeVByb2ZpbGVPYmplY3QuRXZlbnQuRmluc2hlZFJlY29yZGluZywgdGhp
cy5fcHJvZmlsZUZpbmlzaGVkUmVjb3JkaW5nLCB0aGlzKTsKICAgICB9IGVsc2UKICAgICAgICAg
dGhpcy5kaXNwbGF5UHJvZmlsZSgpOwogfTsKIAotV2ViSW5zcGVjdG9yLlByb2ZpbGVWaWV3LnBy
b3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLlByb2ZpbGVWaWV3LAor
V2ViSW5zcGVjdG9yLkxlZ2FjeVByb2ZpbGVWaWV3LnByb3RvdHlwZSA9IHsKKyAgICBjb25zdHJ1
Y3RvcjogV2ViSW5zcGVjdG9yLkxlZ2FjeVByb2ZpbGVWaWV3LAogCiAgICAgLy8gUHVibGljCiAK
QEAgLTEwNiw0ICsxMDYsNCBAQCBXZWJJbnNwZWN0b3IuUHJvZmlsZVZpZXcucHJvdG90eXBlID0g
ewogICAgIH0KIH07CiAKLVdlYkluc3BlY3Rvci5Qcm9maWxlVmlldy5wcm90b3R5cGUuX19wcm90
b19fID0gV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LnByb3RvdHlwZTsKK1dlYkluc3BlY3Rvci5M
ZWdhY3lQcm9maWxlVmlldy5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLkNvbnRl
bnRWaWV3LnByb3RvdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1Byb2ZpbGVyT2JzZXJ2ZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9MZWdhY3lQcm9maWxlck9ic2VydmVyLmpzCnNpbWlsYXJpdHkgaW5kZXggODMl
CnJlbmFtZSBmcm9tIFNvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb2ZpbGVy
T2JzZXJ2ZXIuanMKcmVuYW1lIHRvIFNvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L0xlZ2FjeVByb2ZpbGVyT2JzZXJ2ZXIuanMKaW5kZXggZGI4ZDBiZS4uNGZkOTkzMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvZmlsZXJPYnNlcnZl
ci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9MZWdhY3lQcm9m
aWxlck9ic2VydmVyLmpzCkBAIC0yMywxMyArMjMsMTMgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuUHJvZmlsZXJPYnNlcnZlciA9IGZ1
bmN0aW9uKCkKK1dlYkluc3BlY3Rvci5MZWdhY3lQcm9maWxlck9ic2VydmVyID0gZnVuY3Rpb24o
KQogewogICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKIH07CiAKLVdlYkluc3Bl
Y3Rvci5Qcm9maWxlck9ic2VydmVyLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2Vi
SW5zcGVjdG9yLlByb2ZpbGVyT2JzZXJ2ZXIsCitXZWJJbnNwZWN0b3IuTGVnYWN5UHJvZmlsZXJP
YnNlcnZlci5wcm90b3R5cGUgPSB7CisgICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5MZWdh
Y3lQcm9maWxlck9ic2VydmVyLAogCiAgICAgLy8gRXZlbnRzIGRlZmluZWQgYnkgdGhlICJQcm9m
aWxlciIgZG9tYWluLgogCkBAIC00MCw3ICs0MCw3IEBAIFdlYkluc3BlY3Rvci5Qcm9maWxlck9i
c2VydmVyLnByb3RvdHlwZSA9IHsKIAogICAgIGFkZFByb2ZpbGVIZWFkZXI6IGZ1bmN0aW9uKHBy
b2ZpbGUpCiAgICAgewotICAgICAgICBXZWJJbnNwZWN0b3IucHJvZmlsZU1hbmFnZXIuYWRkSmF2
YVNjcmlwdFByb2ZpbGUocHJvZmlsZSk7CisgICAgICAgIFdlYkluc3BlY3Rvci5sZWdhY3lQcm9m
aWxlTWFuYWdlci5hZGRKYXZhU2NyaXB0UHJvZmlsZShwcm9maWxlKTsKICAgICB9LAogCiAgICAg
YWRkSGVhcFNuYXBzaG90Q2h1bms6IGZ1bmN0aW9uKHVpZCwgY2h1bmspCkBAIC01NSw3ICs1NSw3
IEBAIFdlYkluc3BlY3Rvci5Qcm9maWxlck9ic2VydmVyLnByb3RvdHlwZSA9IHsKIAogICAgIHNl
dFJlY29yZGluZ1Byb2ZpbGU6IGZ1bmN0aW9uKGlzUHJvZmlsaW5nKQogICAgIHsKLSAgICAgICAg
V2ViSW5zcGVjdG9yLnByb2ZpbGVNYW5hZ2VyLnNldFJlY29yZGluZ0phdmFTY3JpcHRQcm9maWxl
KGlzUHJvZmlsaW5nKTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLmxlZ2FjeVByb2ZpbGVNYW5hZ2Vy
LnNldFJlY29yZGluZ0phdmFTY3JpcHRQcm9maWxlKGlzUHJvZmlsaW5nKTsKICAgICB9LAogCiAg
ICAgcmVwb3J0SGVhcFNuYXBzaG90UHJvZ3Jlc3M6IGZ1bmN0aW9uKGRvbmUsIHRvdGFsKQpAQCAt
NjUsNCArNjUsNCBAQCBXZWJJbnNwZWN0b3IuUHJvZmlsZXJPYnNlcnZlci5wcm90b3R5cGUgPSB7
CiAKIH07CiAKLVdlYkluc3BlY3Rvci5Qcm9maWxlck9ic2VydmVyLnByb3RvdHlwZS5fX3Byb3Rv
X18gPSBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZTsKK1dlYkluc3BlY3Rvci5MZWdhY3lQ
cm9maWxlck9ic2VydmVyLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuT2JqZWN0
LnByb3RvdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1RvcERvd25Qcm9maWxlRGF0YUdyaWRUcmVlLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvTGVnYWN5VG9wRG93blByb2ZpbGVEYXRhR3JpZFRyZWUuanMKc2ltaWxh
cml0eSBpbmRleCA2NiUKcmVuYW1lIGZyb20gU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVG9wRG93blByb2ZpbGVEYXRhR3JpZFRyZWUuanMKcmVuYW1lIHRvIFNvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0xlZ2FjeVRvcERvd25Qcm9maWxlRGF0YUdyaWRUcmVl
LmpzCmluZGV4IGJmY2MyNWUuLjU1ZWJjNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1RvcERvd25Qcm9maWxlRGF0YUdyaWRUcmVlLmpzCisrKyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0xlZ2FjeVRvcERvd25Qcm9maWxlRGF0
YUdyaWRUcmVlLmpzCkBAIC0yMywyMyArMjMsMjMgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAot
V2ViSW5zcGVjdG9yLlRvcERvd25Qcm9maWxlRGF0YUdyaWROb2RlID0gZnVuY3Rpb24oLypQcm9m
aWxlVmlldyovIHByb2ZpbGVWaWV3LCAvKlByb2ZpbGVOb2RlKi8gcHJvZmlsZU5vZGUsIC8qVG9w
RG93blByb2ZpbGVEYXRhR3JpZFRyZWUqLyBvd25pbmdUcmVlKQorV2ViSW5zcGVjdG9yLkxlZ2Fj
eVRvcERvd25Qcm9maWxlRGF0YUdyaWROb2RlID0gZnVuY3Rpb24ocHJvZmlsZU5vZGUsIG93bmlu
Z1RyZWUpCiB7CiAgICAgdmFyIGhhc0NoaWxkcmVuID0gKHByb2ZpbGVOb2RlLmNoaWxkcmVuICYm
IHByb2ZpbGVOb2RlLmNoaWxkcmVuLmxlbmd0aCk7CiAKLSAgICBXZWJJbnNwZWN0b3IuUHJvZmls
ZURhdGFHcmlkTm9kZS5jYWxsKHRoaXMsIHByb2ZpbGVWaWV3LCBwcm9maWxlTm9kZSwgb3duaW5n
VHJlZSwgaGFzQ2hpbGRyZW4pOworICAgIFdlYkluc3BlY3Rvci5MZWdhY3lQcm9maWxlRGF0YUdy
aWROb2RlLmNhbGwodGhpcywgcHJvZmlsZU5vZGUsIG93bmluZ1RyZWUsIGhhc0NoaWxkcmVuKTsK
IAogICAgIHRoaXMuX3JlbWFpbmluZ0NoaWxkcmVuID0gcHJvZmlsZU5vZGUuY2hpbGRyZW47CiB9
CiAKLVdlYkluc3BlY3Rvci5Ub3BEb3duUHJvZmlsZURhdGFHcmlkTm9kZS5wcm90b3R5cGUgPSB7
CitXZWJJbnNwZWN0b3IuTGVnYWN5VG9wRG93blByb2ZpbGVEYXRhR3JpZE5vZGUucHJvdG90eXBl
ID0gewogICAgIF9zaGFyZWRQb3B1bGF0ZTogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgdmFy
IGNoaWxkcmVuID0gdGhpcy5fcmVtYWluaW5nQ2hpbGRyZW47CiAgICAgICAgIHZhciBjaGlsZHJl
bkxlbmd0aCA9IGNoaWxkcmVuLmxlbmd0aDsKIAogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8
IGNoaWxkcmVuTGVuZ3RoOyArK2kpCi0gICAgICAgICAgICB0aGlzLmFwcGVuZENoaWxkKG5ldyBX
ZWJJbnNwZWN0b3IuVG9wRG93blByb2ZpbGVEYXRhR3JpZE5vZGUodGhpcy5wcm9maWxlVmlldywg
Y2hpbGRyZW5baV0sIHRoaXMudHJlZSkpOworICAgICAgICAgICAgdGhpcy5hcHBlbmRDaGlsZChu
ZXcgV2ViSW5zcGVjdG9yLkxlZ2FjeVRvcERvd25Qcm9maWxlRGF0YUdyaWROb2RlKGNoaWxkcmVu
W2ldLCB0aGlzLnRyZWUsIGZhbHNlLCB0aGlzLnNob3dUaW1lQXNQZXJjZW50KSk7CiAKICAgICAg
ICAgdGhpcy5fcmVtYWluaW5nQ2hpbGRyZW4gPSBudWxsOwogICAgIH0sCkBAIC02NCwxOSArNjQs
MTkgQEAgV2ViSW5zcGVjdG9yLlRvcERvd25Qcm9maWxlRGF0YUdyaWROb2RlLnByb3RvdHlwZSA9
IHsKICAgICB9CiB9CiAKLVdlYkluc3BlY3Rvci5Ub3BEb3duUHJvZmlsZURhdGFHcmlkTm9kZS5w
cm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLlByb2ZpbGVEYXRhR3JpZE5vZGUucHJv
dG90eXBlOworV2ViSW5zcGVjdG9yLkxlZ2FjeVRvcERvd25Qcm9maWxlRGF0YUdyaWROb2RlLnBy
b3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuTGVnYWN5UHJvZmlsZURhdGFHcmlkTm9k
ZS5wcm90b3R5cGU7CiAKLVdlYkluc3BlY3Rvci5Ub3BEb3duUHJvZmlsZURhdGFHcmlkVHJlZSA9
IGZ1bmN0aW9uKC8qUHJvZmlsZVZpZXcqLyBwcm9maWxlVmlldywgLypQcm9maWxlTm9kZSovIHBy
b2ZpbGVOb2RlKQorV2ViSW5zcGVjdG9yLkxlZ2FjeVRvcERvd25Qcm9maWxlRGF0YUdyaWRUcmVl
ID0gZnVuY3Rpb24ocHJvZmlsZU5vZGUpCiB7Ci0gICAgV2ViSW5zcGVjdG9yLlByb2ZpbGVEYXRh
R3JpZFRyZWUuY2FsbCh0aGlzLCBwcm9maWxlVmlldywgcHJvZmlsZU5vZGUpOworICAgIFdlYklu
c3BlY3Rvci5MZWdhY3lQcm9maWxlRGF0YUdyaWRUcmVlLmNhbGwodGhpcywgcHJvZmlsZU5vZGUp
OwogCiAgICAgdGhpcy5fcmVtYWluaW5nQ2hpbGRyZW4gPSBwcm9maWxlTm9kZS5jaGlsZHJlbjsK
IAotICAgIFdlYkluc3BlY3Rvci5Ub3BEb3duUHJvZmlsZURhdGFHcmlkTm9kZS5wcm90b3R5cGUu
X3BvcHVsYXRlLmNhbGwodGhpcyk7CisgICAgV2ViSW5zcGVjdG9yLkxlZ2FjeVRvcERvd25Qcm9m
aWxlRGF0YUdyaWROb2RlLnByb3RvdHlwZS5fcG9wdWxhdGUuY2FsbCh0aGlzKTsKIH0KIAotV2Vi
SW5zcGVjdG9yLlRvcERvd25Qcm9maWxlRGF0YUdyaWRUcmVlLnByb3RvdHlwZSA9IHsKLSAgICBm
b2N1czogZnVuY3Rpb24oLypQcm9maWxlRGF0YUdyaWROb2RlKi8gcHJvZmlsZURhdGFHcmlkZU5v
ZGUpCitXZWJJbnNwZWN0b3IuTGVnYWN5VG9wRG93blByb2ZpbGVEYXRhR3JpZFRyZWUucHJvdG90
eXBlID0geworICAgIGZvY3VzOiBmdW5jdGlvbihwcm9maWxlRGF0YUdyaWRlTm9kZSkKICAgICB7
CiAgICAgICAgIGlmICghcHJvZmlsZURhdGFHcmlkZU5vZGUpCiAgICAgICAgICAgICByZXR1cm47
CkBAIC04OCw3ICs4OCw3IEBAIFdlYkluc3BlY3Rvci5Ub3BEb3duUHJvZmlsZURhdGFHcmlkVHJl
ZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMudG90YWxUaW1lID0gcHJvZmlsZURhdGFHcmlk
ZU5vZGUudG90YWxUaW1lOwogICAgIH0sCiAKLSAgICBleGNsdWRlOiBmdW5jdGlvbigvKlByb2Zp
bGVEYXRhR3JpZE5vZGUqLyBwcm9maWxlRGF0YUdyaWRlTm9kZSkKKyAgICBleGNsdWRlOiBmdW5j
dGlvbihwcm9maWxlRGF0YUdyaWRlTm9kZSkKICAgICB7CiAgICAgICAgIGlmICghcHJvZmlsZURh
dGFHcmlkZU5vZGUpCiAgICAgICAgICAgICByZXR1cm47CkBAIC05Nyw3ICs5Nyw3IEBAIFdlYklu
c3BlY3Rvci5Ub3BEb3duUHJvZmlsZURhdGFHcmlkVHJlZS5wcm90b3R5cGUgPSB7CiAKICAgICAg
ICAgdmFyIGV4Y2x1ZGVkQ2FsbFVJRCA9IHByb2ZpbGVEYXRhR3JpZGVOb2RlLmNhbGxVSUQ7CiAK
LSAgICAgICAgV2ViSW5zcGVjdG9yLlRvcERvd25Qcm9maWxlRGF0YUdyaWROb2RlLnByb3RvdHlw
ZS5fZXhjbHVkZS5jYWxsKHRoaXMsIGV4Y2x1ZGVkQ2FsbFVJRCk7CisgICAgICAgIFdlYkluc3Bl
Y3Rvci5MZWdhY3lUb3BEb3duUHJvZmlsZURhdGFHcmlkTm9kZS5wcm90b3R5cGUuX2V4Y2x1ZGUu
Y2FsbCh0aGlzLCBleGNsdWRlZENhbGxVSUQpOwogCiAgICAgICAgIGlmICh0aGlzLmxhc3RDb21w
YXJhdG9yKQogICAgICAgICAgICAgdGhpcy5zb3J0KHRoaXMubGFzdENvbXBhcmF0b3IsIHRydWUp
OwpAQCAtMTEwLDEyICsxMTAsMTIgQEAgV2ViSW5zcGVjdG9yLlRvcERvd25Qcm9maWxlRGF0YUdy
aWRUcmVlLnByb3RvdHlwZSA9IHsKIAogICAgICAgICB0aGlzLmNoaWxkcmVuWzBdLnJlc3RvcmVQ
b3NpdGlvbigpOwogCi0gICAgICAgIFdlYkluc3BlY3Rvci5Qcm9maWxlRGF0YUdyaWRUcmVlLnBy
b3RvdHlwZS5yZXN0b3JlLmNhbGwodGhpcyk7CisgICAgICAgIFdlYkluc3BlY3Rvci5MZWdhY3lQ
cm9maWxlRGF0YUdyaWRUcmVlLnByb3RvdHlwZS5yZXN0b3JlLmNhbGwodGhpcyk7CiAgICAgfSwK
IAotICAgIF9tZXJnZTogV2ViSW5zcGVjdG9yLlRvcERvd25Qcm9maWxlRGF0YUdyaWROb2RlLnBy
b3RvdHlwZS5fbWVyZ2UsCisgICAgX21lcmdlOiBXZWJJbnNwZWN0b3IuTGVnYWN5VG9wRG93blBy
b2ZpbGVEYXRhR3JpZE5vZGUucHJvdG90eXBlLl9tZXJnZSwKIAotICAgIF9zaGFyZWRQb3B1bGF0
ZTogV2ViSW5zcGVjdG9yLlRvcERvd25Qcm9maWxlRGF0YUdyaWROb2RlLnByb3RvdHlwZS5fc2hh
cmVkUG9wdWxhdGUKKyAgICBfc2hhcmVkUG9wdWxhdGU6IFdlYkluc3BlY3Rvci5MZWdhY3lUb3BE
b3duUHJvZmlsZURhdGFHcmlkTm9kZS5wcm90b3R5cGUuX3NoYXJlZFBvcHVsYXRlCiB9CiAKLVdl
Ykluc3BlY3Rvci5Ub3BEb3duUHJvZmlsZURhdGFHcmlkVHJlZS5wcm90b3R5cGUuX19wcm90b19f
ID0gV2ViSW5zcGVjdG9yLlByb2ZpbGVEYXRhR3JpZFRyZWUucHJvdG90eXBlOworV2ViSW5zcGVj
dG9yLkxlZ2FjeVRvcERvd25Qcm9maWxlRGF0YUdyaWRUcmVlLnByb3RvdHlwZS5fX3Byb3RvX18g
PSBXZWJJbnNwZWN0b3IuTGVnYWN5UHJvZmlsZURhdGFHcmlkVHJlZS5wcm90b3R5cGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwKaW5kZXggMmVmNDQ3
ZS4uNjhkOGQ2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvTWFpbi5odG1sCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01h
aW4uaHRtbApAQCAtOTUsOCArOTUsOCBAQAogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJl
Zj0iTmV0d29ya1RpbWVsaW5lT3ZlcnZpZXdHcmFwaC5jc3MiPgogICAgIDxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgaHJlZj0iTGF5b3V0VGltZWxpbmVPdmVydmlld0dyYXBoLmNzcyI+CiAgICAgPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJTY3JpcHRUaW1lbGluZU92ZXJ2aWV3R3JhcGguY3Nz
Ij4KLSAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlByb2ZpbGVWaWV3LmNzcyI+Ci0g
ICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJKYXZhU2NyaXB0UHJvZmlsZVZpZXcuY3Nz
Ij4KKyAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IkxlZ2FjeVByb2ZpbGVWaWV3LmNz
cyI+CisgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJMZWdhY3lKYXZhU2NyaXB0UHJv
ZmlsZVZpZXcuY3NzIj4KICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IkNTU1N0eWxl
RGV0YWlsc1NpZGViYXJQYW5lbC5jc3MiPgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJl
Zj0iRE9NVHJlZURhdGFHcmlkLmNzcyI+CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSJMYXllclRyZWVTaWRlYmFyUGFuZWwuY3NzIj4KQEAgLTE2OCwyMSArMTY4LDIwIEBACiAgICAg
PHNjcmlwdCBzcmM9IlJlbW90ZU9iamVjdC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9
Ikluc3BlY3Rvck9ic2VydmVyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iUGFnZU9i
c2VydmVyLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iQ2FudmFzT2JzZXJ2ZXIuanMi
Pjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJDb25zb2xlT2JzZXJ2ZXIuanMiPjwvc2NyaXB0
PgogICAgIDxzY3JpcHQgc3JjPSJOZXR3b3JrT2JzZXJ2ZXIuanMiPjwvc2NyaXB0PgogICAgIDxz
Y3JpcHQgc3JjPSJDU1NPYnNlcnZlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkRP
TU9ic2VydmVyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iRGVidWdnZXJPYnNlcnZl
ci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkRhdGFiYXNlT2JzZXJ2ZXIuanMiPjwv
c2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJQcm9maWxlck9ic2VydmVyLmpzIj48L3NjcmlwdD4K
KyAgICA8c2NyaXB0IHNyYz0iTGVnYWN5UHJvZmlsZXJPYnNlcnZlci5qcyI+PC9zY3JpcHQ+CiAg
ICAgPHNjcmlwdCBzcmM9IkxheWVyVHJlZU9ic2VydmVyLmpzIj48L3NjcmlwdD4KICAgICA8c2Ny
aXB0IHNyYz0iUnVudGltZU9ic2VydmVyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0i
SW1hZ2VVdGlsaXRpZXMuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJEYXRhR3JpZC5q
cyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9IlByb2ZpbGVEYXRhR3JpZFRyZWUuanMiPjwv
c2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJCb3R0b21VcFByb2ZpbGVEYXRhR3JpZFRyZWUuanMi
Pjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJUb3BEb3duUHJvZmlsZURhdGFHcmlkVHJlZS5q
cyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9IkxlZ2FjeVByb2ZpbGVEYXRhR3JpZFRyZWUu
anMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJMZWdhY3lCb3R0b21VcFByb2ZpbGVEYXRh
R3JpZFRyZWUuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJMZWdhY3lUb3BEb3duUHJv
ZmlsZURhdGFHcmlkVHJlZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkNvb2tpZVN0
b3JhZ2VPYmplY3QuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJEYXRhYmFzZU9iamVj
dC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkRhdGFiYXNlVGFibGVPYmplY3QuanMi
Pjwvc2NyaXB0PgpAQCAtMzczLDE3ICszNzIsMTMgQEAKICAgICA8c2NyaXB0IHNyYz0iTmV0d29y
a1RpbWVsaW5lT3ZlcnZpZXdHcmFwaC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ikxh
eW91dFRpbWVsaW5lT3ZlcnZpZXdHcmFwaC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9
IlNjcmlwdFRpbWVsaW5lT3ZlcnZpZXdHcmFwaC5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBz
cmM9IlByb2ZpbGVNYW5hZ2VyLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iUHJvZmls
ZVR5cGUuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJQcm9maWxlVmlldy5qcyI+PC9z
Y3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9IkphdmFTY3JpcHRQcm9maWxlVHlwZS5qcyI+PC9zY3Jp
cHQ+Ci0gICAgPHNjcmlwdCBzcmM9IkphdmFTY3JpcHRQcm9maWxlVmlldy5qcyI+PC9zY3JpcHQ+
Ci0gICAgPHNjcmlwdCBzcmM9IkNhbnZhc0RhdGFHcmlkTm9kZS5qcyI+PC9zY3JpcHQ+Ci0gICAg
PHNjcmlwdCBzcmM9IkNhbnZhc1Byb2ZpbGVUeXBlLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0
IHNyYz0iQ2FudmFzUHJvZmlsZVZpZXcuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJQ
cm9maWxlT2JqZWN0LmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iSmF2YVNjcmlwdFBy
b2ZpbGVPYmplY3QuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJDYW52YXNQcm9maWxl
T2JqZWN0LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iTGVnYWN5UHJvZmlsZU1hbmFn
ZXIuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJMZWdhY3lQcm9maWxlVHlwZS5qcyI+
PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9IkxlZ2FjeVByb2ZpbGVWaWV3LmpzIj48L3Njcmlw
dD4KKyAgICA8c2NyaXB0IHNyYz0iTGVnYWN5SmF2YVNjcmlwdFByb2ZpbGVUeXBlLmpzIj48L3Nj
cmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iTGVnYWN5SmF2YVNjcmlwdFByb2ZpbGVWaWV3LmpzIj48
L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iTGVnYWN5UHJvZmlsZU9iamVjdC5qcyI+PC9zY3Jp
cHQ+CisgICAgPHNjcmlwdCBzcmM9IkxlZ2FjeUphdmFTY3JpcHRQcm9maWxlT2JqZWN0LmpzIj48
L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iRGVidWdnZXJTaWRlYmFyUGFuZWwuanMiPjwvc2Ny
aXB0PgogICAgIDxzY3JpcHQgc3JjPSJCcmVha3BvaW50VHJlZUVsZW1lbnQuanMiPjwvc2NyaXB0
PgogICAgIDxzY3JpcHQgc3JjPSJCcmVha3BvaW50QWN0aW9uLmpzIj48L3NjcmlwdD4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uanMgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmpzCmluZGV4IDQ1YjhhN2UuLjZm
ZjIzNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01h
aW4uanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5qcwpA
QCAtNTQsOCArNTQsNiBAQCBXZWJJbnNwZWN0b3IubG9hZGVkID0gZnVuY3Rpb24oKQogICAgIC8v
IFJlZ2lzdGVyIG9ic2VydmVycyBmb3IgZXZlbnRzIGZyb20gdGhlIEluc3BlY3RvckJhY2tlbmQu
CiAgICAgSW5zcGVjdG9yQmFja2VuZC5yZWdpc3Rlckluc3BlY3RvckRpc3BhdGNoZXIobmV3IFdl
Ykluc3BlY3Rvci5JbnNwZWN0b3JPYnNlcnZlcik7CiAgICAgSW5zcGVjdG9yQmFja2VuZC5yZWdp
c3RlclBhZ2VEaXNwYXRjaGVyKG5ldyBXZWJJbnNwZWN0b3IuUGFnZU9ic2VydmVyKTsKLSAgICBp
ZiAoSW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlckNhbnZhc0Rpc3BhdGNoZXIpCi0gICAgICAgIElu
c3BlY3RvckJhY2tlbmQucmVnaXN0ZXJDYW52YXNEaXNwYXRjaGVyKG5ldyBXZWJJbnNwZWN0b3Iu
Q2FudmFzT2JzZXJ2ZXIpOwogICAgIEluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJDb25zb2xlRGlz
cGF0Y2hlcihuZXcgV2ViSW5zcGVjdG9yLkNvbnNvbGVPYnNlcnZlcik7CiAgICAgSW5zcGVjdG9y
QmFja2VuZC5yZWdpc3Rlck5ldHdvcmtEaXNwYXRjaGVyKG5ldyBXZWJJbnNwZWN0b3IuTmV0d29y
a09ic2VydmVyKTsKICAgICBJbnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVyRE9NRGlzcGF0Y2hlcihu
ZXcgV2ViSW5zcGVjdG9yLkRPTU9ic2VydmVyKTsKQEAgLTY0LDcgKzYyLDcgQEAgV2ViSW5zcGVj
dG9yLmxvYWRlZCA9IGZ1bmN0aW9uKCkKICAgICBJbnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVyRE9N
U3RvcmFnZURpc3BhdGNoZXIobmV3IFdlYkluc3BlY3Rvci5ET01TdG9yYWdlT2JzZXJ2ZXIpOwog
ICAgIEluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJBcHBsaWNhdGlvbkNhY2hlRGlzcGF0Y2hlcihu
ZXcgV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVPYnNlcnZlcik7CiAgICAgSW5zcGVjdG9y
QmFja2VuZC5yZWdpc3RlclRpbWVsaW5lRGlzcGF0Y2hlcihuZXcgV2ViSW5zcGVjdG9yLlRpbWVs
aW5lT2JzZXJ2ZXIpOwotICAgIEluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJQcm9maWxlckRpc3Bh
dGNoZXIobmV3IFdlYkluc3BlY3Rvci5Qcm9maWxlck9ic2VydmVyKTsKKyAgICBJbnNwZWN0b3JC
YWNrZW5kLnJlZ2lzdGVyUHJvZmlsZXJEaXNwYXRjaGVyKG5ldyBXZWJJbnNwZWN0b3IuTGVnYWN5
UHJvZmlsZXJPYnNlcnZlcik7CiAgICAgSW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlckNTU0Rpc3Bh
dGNoZXIobmV3IFdlYkluc3BlY3Rvci5DU1NPYnNlcnZlcik7CiAgICAgaWYgKEluc3BlY3RvckJh
Y2tlbmQucmVnaXN0ZXJMYXllclRyZWVEaXNwYXRjaGVyKQogICAgICAgICBJbnNwZWN0b3JCYWNr
ZW5kLnJlZ2lzdGVyTGF5ZXJUcmVlRGlzcGF0Y2hlcihuZXcgV2ViSW5zcGVjdG9yLkxheWVyVHJl
ZU9ic2VydmVyKTsKQEAgLTk0LDcgKzkyLDcgQEAgV2ViSW5zcGVjdG9yLmxvYWRlZCA9IGZ1bmN0
aW9uKCkKICAgICB0aGlzLnJ1bnRpbWVNYW5hZ2VyID0gbmV3IFdlYkluc3BlY3Rvci5SdW50aW1l
TWFuYWdlcjsKICAgICB0aGlzLmFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyID0gbmV3IFdlYkluc3Bl
Y3Rvci5BcHBsaWNhdGlvbkNhY2hlTWFuYWdlcjsKICAgICB0aGlzLnRpbWVsaW5lTWFuYWdlciA9
IG5ldyBXZWJJbnNwZWN0b3IuVGltZWxpbmVNYW5hZ2VyOwotICAgIHRoaXMucHJvZmlsZU1hbmFn
ZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlByb2ZpbGVNYW5hZ2VyOworICAgIHRoaXMucHJvZmlsZU1h
bmFnZXIgPSBuZXcgV2ViSW5zcGVjdG9yLkxlZ2FjeVByb2ZpbGVNYW5hZ2VyOwogICAgIHRoaXMu
ZGVidWdnZXJNYW5hZ2VyID0gbmV3IFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1hbmFnZXI7CiAgICAg
dGhpcy5zb3VyY2VNYXBNYW5hZ2VyID0gbmV3IFdlYkluc3BlY3Rvci5Tb3VyY2VNYXBNYW5hZ2Vy
OwogICAgIHRoaXMubGF5ZXJUcmVlTWFuYWdlciA9IG5ldyBXZWJJbnNwZWN0b3IuTGF5ZXJUcmVl
TWFuYWdlcjsKQEAgLTQ1NCw3ICs0NTIsNyBAQCBXZWJJbnNwZWN0b3Iub3BlblVSTCA9IGZ1bmN0
aW9uKHVybCwgZnJhbWUsIGFsd2F5c09wZW5FeHRlcm5hbGx5LCBsaW5lTnVtYmVyKQogICAgIH0K
IAogICAgIHZhciBwYXJzZWRVUkwgPSBwYXJzZVVSTCh1cmwpOwotICAgIGlmIChwYXJzZWRVUkwu
c2NoZW1lID09PSBXZWJJbnNwZWN0b3IuUHJvZmlsZVR5cGUuUHJvZmlsZVNjaGVtZSkgeworICAg
IGlmIChwYXJzZWRVUkwuc2NoZW1lID09PSBXZWJJbnNwZWN0b3IuTGVnYWN5UHJvZmlsZVR5cGUu
UHJvZmlsZVNjaGVtZSkgewogICAgICAgICB2YXIgcHJvZmlsZVR5cGUgPSBwYXJzZWRVUkwuaG9z
dC50b1VwcGVyQ2FzZSgpOwogICAgICAgICB2YXIgcHJvZmlsZVRpdGxlID0gcGFyc2VkVVJMLnBh
dGg7CiAK
</data>
<flag name="review"
          id="246260"
          type_id="1"
          status="+"
          setter="joepeck"
    />
    <flag name="commit-queue"
          id="246261"
          type_id="3"
          status="-"
          setter="timothy"
    />
          </attachment>
      

    </bug>

</bugzilla>