<?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>152496</bug_id>
          
          <creation_ts>2015-12-21 19:43:35 -0800</creation_ts>
          <short_desc>A/B testing results should be visualized intuitively on v3 UI</short_desc>
          <delta_ts>2016-02-16 13:50:08 -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>Perf Dashboard</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>cdumez</cc>
    
    <cc>dewei_zhu</cc>
    
    <cc>jond</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>rniwa</cc>
    
    <cc>slewis</cc>
    
    <cc>timothy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1150847</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-12-21 19:43:35 -0800</bug_when>
    <thetext>Listing A/B testing results in the order they were executed is useless.
We should come up with a better visualization of the test results.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150848</commentid>
    <comment_count>1</comment_count>
      <attachid>267776</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-12-21 19:44:01 -0800</bug_when>
    <thetext>Created attachment 267776
Screenshot of the proposed UI</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150864</commentid>
    <comment_count>2</comment_count>
      <attachid>267783</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-12-22 01:47:19 -0800</bug_when>
    <thetext>Created attachment 267783
Adds the feature</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1152894</commentid>
    <comment_count>3</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-01-05 14:26:38 -0800</bug_when>
    <thetext>ping?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1152897</commentid>
    <comment_count>4</comment_count>
      <attachid>267783</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-01-05 14:34:25 -0800</bug_when>
    <thetext>Comment on attachment 267783
Adds the feature

rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1152933</commentid>
    <comment_count>5</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-01-05 16:13:28 -0800</bug_when>
    <thetext>Committed r194618: &lt;http://trac.webkit.org/changeset/194618&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>267776</attachid>
            <date>2015-12-21 19:44:01 -0800</date>
            <delta_ts>2015-12-21 19:44:01 -0800</delta_ts>
            <desc>Screenshot of the proposed UI</desc>
            <filename>Visualized-AB-testing-result.png</filename>
            <type>image/png</type>
            <size>65059</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">iVBORw0KGgoAAAANSUhEUgAAArYAAAGHCAYAAABFzRF5AAAABGdBTUEAALGPC/xhBQAAACBjSFJN
AAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAACBGlUWHRYTUw6Y29tLmFkb2Jl
LnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1Q
IENvcmUgNS40LjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91
dD0iIgogICAgICAgICAgICB4bWxuczpleGlmPSJodHRwOi8vbnMuYWRvYmUuY29tL2V4aWYvMS4w
LyIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8i
PgogICAgICAgICA8ZXhpZjpQaXhlbFlEaW1lbnNpb24+MzkxPC9leGlmOlBpeGVsWURpbWVuc2lv
bj4KICAgICAgICAgPGV4aWY6UGl4ZWxYRGltZW5zaW9uPjY5NDwvZXhpZjpQaXhlbFhEaW1lbnNp
b24+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAg
IDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgpxL1tzAABAAElE
QVR4AeydC1xU1fr3f8gAgzLcBFRMREBUCinRwkQPaJlk4uWvnfJS6uvxkkV6Omna0QpLUzPTMtPT
OVReTqml4jHNvBCaoAIKFCGCghc0QC4zXAYY4H32nhmYG3hHBp/1+Wz22uvyrLW+ezb72c9+1toW
dRTAgQk0IwELCs3Y3F1riq+Vu4aSBTEBJsAEmAATuCcE2twTqSyUCTABJsAEmAATYAJMgAk0MwFW
bJsZODfHBJgAE2ACTIAJMAEmcG8IsGJ7b7iyVCbABJgAE2ACTIAJMIFmJsCKbTMD5+aYABNgAkyA
CTABJsAE7g0BVmzvDVeWygSYABNgAkyACTABJtDMBFixbWbg3BwTYAJMgAkwASbABJjAvSHAiu29
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
/B8BGb8t2r1HaQAAAABJRU5ErkJggg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267783</attachid>
            <date>2015-12-22 01:47:19 -0800</date>
            <delta_ts>2016-01-05 14:34:25 -0800</delta_ts>
            <desc>Adds the feature</desc>
            <filename>bug-152496-20151222014642.patch</filename>
            <type>text/plain</type>
            <size>95627</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwkocmV2aXNpb24gMTk0MzYwKQorKysg
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDIyMiBAQAorMjAxNS0xMi0yMSAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4K
KworICAgICAgICBBL0IgdGVzdGluZyByZXN1bHRzIHNob3VsZCBiZSB2aXN1YWxpemVkIGludHVp
dGl2ZWx5IG9uIHYzIFVJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNTI0OTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGQgdGhlICJzdGFja2luZyBibG9jayIgdmlldyBvZiBBL0IgdGVzdGluZyByZXN1
bHRzIHRvIHRoZSBhbmFseXNpcyB0YXNrIHBhZ2Ugb24gdjMgVUkuCisKKyAgICAgICAgVGhlIHBh
dGNoIGVuaGFuY2VzIEpTT04gQVBJcyBhdCAvYXBpL2FuYWx5c2lzLXRhc2sgL2FwaS9tZWFzdXJl
bWVudC1zZXQvIHRvIHJlZHVjZSB0aGUgbnVtYmVyIG9mCisgICAgICAgIEhUVFAgcmVxdWVzdHMs
IGFuZCBhZGRzIHR3byBVSSBjb21wb25lbnRzOiBUZXN0R3JvdXBSZXN1bHRzVGFibGUgYW5kIEFu
YWx5c2lzUmVzdWx0c1ZpZXdlciBib3RoCisgICAgICAgIG9mIHdoaWNoIGluaGVyaXRzIGZyb20g
YW4gYWJzdHJhY3Qgc3VwZXJjbGFzczogUmVzdWx0c1RhYmxlLgorCisgICAgICAgIFJlc3VsdHNU
YWJsZSBwcm92aWRlcyBhIHRhYnVsYXIgcHJlc2VudGF0aW9uIG9mIG1lYXN1cmVkIHZhbHVlcyBp
biByZWd1bGFyIG1lYXN1cmVtZW50IHNldHMgYW5kCisgICAgICAgIEEvQiB0ZXN0aW5nIHJlc3Vs
dHMgdXNpbmcgZ3JvdXBzIG9mIGJhciBncmFwaHMgY3JlYXRlZCBieSBCYXJHcmFwaEdyb3VwLiBU
ZXN0R3JvdXBSZXN1bHRzVGFibGUKKyAgICAgICAgaW5oZXJpdHMgZnJvbSB0aGlzIGNsYXNzIHRv
IGRpc3BsYXkgQS9CIHRlc3RpbmcgY29uZmlndXJhdGlvbnMgYW5kIHRoZSBhdmVyYWdlZCByZXN1
bHRzIGZvciBlYWNoCisgICAgICAgIGNvbmZpZ3VyYXRpb24sIGFuZCBBbmFseXNpc1Jlc3VsdHNW
aWV3ZXIgaW5oZXJpdHMgZnJvbSBpdCB0byBwcm92aWRlIGFuIGludHVpdGl2ZSB2aXN1YWxpemF0
aW9uCisgICAgICAgIG9mIHRoZSBvdXRjb21lcyBvZiBhbGwgQS9CIHRlc3RpbmcgcmVzdWx0cyBh
c3NvY2lhdGVkIHdpdGggYSBnaXZlbiBhbmFseXNpcyB0YXNrLgorCisgICAgICAgICogcHVibGlj
L2FwaS9hbmFseXNpcy10YXNrcy5waHA6CisgICAgICAgIChtYWluKTogQWRkIHRoZSBjYXBhYmls
aXR5IHRvIGZpbmQgdGhlIGFuYWx5c2lzIHRhc2sgYmFzZWQgb24gaXRzIGJ1aWxkIHJlcXVlc3Qu
CisgICAgICAgIFRoaXMgYWxsb3dzIC92My8jL2FuYWx5c2lzL3Rhc2svP2J1aWxkUmVxdWVzdD08
aWQ+IHRvIGJlIGh5cGVybGlua2VkIG9uIGJ1aWxkYm90IHBhZ2UuCisKKyAgICAgICAgKiBwdWJs
aWMvYXBpL21lYXN1cmVtZW50LXNldC5waHA6CisgICAgICAgIChtYWluKTogUmVtb3ZlZCB0aGUg
dW51c2VkIHN0YXJ0VGltZSBhbmQgZW5kVGltZSwgYW5kIGFkZGVkICJhbmFseXNpc1Rhc2siIHRv
IHF1ZXJ5IHBhcmFtZXRlcnMuCisgICAgICAgIChBbmFseXNpc1Jlc3VsdHNGZXRjaGVyKTogQWRk
ZWQuIFVzZWQgdG8gZmV0Y2ggbWVhc3VyZWQgZGF0YSBhc3NvY2lhdGVkIHdpdGggZXZlcnkgYnVp
bGQgcmVxdWVzdAorICAgICAgICBvbiBhbiBhbmFseXNpcyB0YXNrLgorICAgICAgICAoQW5hbHlz
aXNSZXN1bHRzRmV0Y2hlcjo6X19jb25zdHJ1Y3QpOgorICAgICAgICAoQW5hbHlzaXNSZXN1bHRz
RmV0Y2hlcjo6ZmV0Y2gpOiBVbmxpa2UgTWVhc3VyZW1lbnRTZXRGZXRjaGVyLCB3ZSBmZXRjaCB0
aGUgbGlzdCBvZiBjb21taXRzIGFuZAorICAgICAgICBsaXN0IG9mIG1lYXN1cmVtZW50cyBzZXBh
cmF0ZWx5IHNpbmNlIHRoZXJlIHdpbGwgYmUgYSBsb3QgbGVzcyBidWlsZHMgYW5kIGNvbW1pdHMg
dGhhbiBtZWFzdXJlZAorICAgICAgICBkYXRhIChzaW5jZSB3ZSdyZSBmZXRjaGluZyBtZWFzdXJl
ZCB2YWx1ZXMgZm9yIGFsbCB0ZXN0cyBhbmQgdGhlaXIgbWV0cmljcykuCisgICAgICAgIChBbmFs
eXNpc1Jlc3VsdHNGZXRjaGVyOjpmZXRjaF9jb21taXRzKTogRmV0Y2hlcyBjb21taXRzLgorICAg
ICAgICAoQW5hbHlzaXNSZXN1bHRzRmV0Y2hlcjo6Zm9ybWF0X21lYXN1cmVtZW50KTogTGlrZSBN
ZWFzdXJlbWVudFNldEZldGNoZXI6OmZvcm1hdF9tZWFzdXJlbWVudCBidXQKKyAgICAgICAgd2l0
aCBjb25maWdfdHlwZSBhbmQgY29uZmlnX21ldHJpYyBzaW5jZSB3ZSdyZSByZXR1cm5pbmcgbWVh
c3VyZWQgZGF0YSBmb3IgYWxsIG1ldHJpY3MgYW5kIHRlc3QKKyAgICAgICAgY29uZmlndXJhdGlv
bnMuCisgICAgICAgIChBbmFseXNpc1Jlc3VsdHNGZXRjaGVyOjpmb3JtYXRfbWFwKTogU2ltaWxh
ciB0byBNZWFzdXJlbWVudFNldEZldGNoZXI6OmZvcm1hdF9tYXAuCisKKyAgICAgICAgKiBwdWJs
aWMvdjMvY29tcG9uZW50cy9hbmFseXNpcy1yZXN1bHRzLXZpZXdlci5qczogQWRkZWQuCisgICAg
ICAgIChBbmFseXNpc1Jlc3VsdHNWaWV3ZXIpOiBBZGRlZC4gCisgICAgICAgIChBbmFseXNpc1Jl
c3VsdHNWaWV3ZXIucHJvdG90eXBlLmRpZFVwZGF0ZVJlc3VsdHMpOiBUaGlzIGNhbGxiYWNrIGlz
IGNhbGxlZCBieSBBbmFseXNpc1Rhc2tQYWdlCisgICAgICAgIHdoZW4gQS9CIHRlc3RpbmcgcmVz
dWx0cyBiZWNvbWUgYXZhaWxhYmxlLgorICAgICAgICAoQW5hbHlzaXNSZXN1bHRzVmlld2VyLnBy
b3RvdHlwZS5yZW5kZXIpOiBPdmVycmlkZXMgUmVzdWx0c1RhYmxlJ3MgcmVuZGVyIHRvIGhpZ2hs
aWdodCB0aGUgYmxvY2sKKyAgICAgICAgcmVwcmVzZW50aW5nIHRoZSBjdXJyZW50bHkgc2VsZWN0
ZWQgdGVzdCBncm91cC4KKworICAgICAgICAoQW5hbHlzaXNSZXN1bHRzVmlld2VyLnByb3RvdHlw
ZS5idWlsZFJvd0dyb3Vwcyk6IENyZWF0ZXMgYSBsaXN0IG9mIHJvd3Mgd2l0aCAic3RhY2tpbmcg
YmxvY2tzIgorICAgICAgICB0aGF0IHZpc3VhbGl6ZXMgQS9CIHRlc3RpbmcgcmVzdWx0cy4gVGhl
IGFsZ29yaXRobSB3b3JrcyBhcyBmb2xsb3dzOiAxLiBDcmVhdGUgYWxsIHRhYmxlIHJvd3MuCisg
ICAgICAgIDIuIEZpbmQgd2hpY2ggcm93IGlzIGFzc29jaWF0ZWQgd2l0aCBlYWNoIHNldCBpbiBl
YWNoIHRlc3QgZ3JvdXAuIDMuIExheW91dCAiYmxvY2tzIi4KKworICAgICAgICAoQW5hbHlzaXNS
ZXN1bHRzVmlld2VyLnByb3RvdHlwZS5fY29sbGVjdFJvb3RTZXRzSW5UZXN0R3JvdXBzKTogQ29s
bGVjdHMgcm9vdCBzZXRzIGZyb20gYWxsIGRhdGEKKyAgICAgICAgaW4gdGhlIG1lYXN1cmVtZW50
IHNldCBhcyB3ZWxsIGFzIEEvQiB0ZXN0aW5nICoqcmVxdWVzdHMqKiAocmVzdWx0cyBtYXkgY29u
dGFpbiBtb3JlIHJlcG9zaXRvcmllcworICAgICAgICB0aGFuIHJlcXVlc3RlZCBidXQgdGhleSBh
cmVuJ3QgaW50ZXJlc3RpbmcgZm9yIHRoZSBwdXJwb3NlIG9mIHZpc3VhbGl6aW5nIHJlc3VsdHMg
Zm9yIHRoZSBlbnRpcmUKKyAgICAgICAgYW5hbHlzaXMgdGFzaykuCisKKyAgICAgICAgKEFuYWx5
c2lzUmVzdWx0c1ZpZXdlci5wcm90b3R5cGUuX2J1aWxkUm93c0ZvclBvaW50c0FuZFRlc3RHcm91
cHMpOiBDcmVhdGUgdGFibGUgcm93cy4gRmlyc3QsCisgICAgICAgIGNyZWF0ZSB0YWJsZSByb3dz
IGZvciBtZWFzdXJlbWVudCBzZXQgcG9pbnRzIHRoYXQgaGF2ZSBhIG1hdGNoaW5nIHRlc3QgZ3Jv
dXAgKGkuZS4gZWl0aGVyIHNldCBBCisgICAgICAgIG9yIHNldCBCIG9mIGFuIEEvQiB0ZXN0aW5n
IHVzZXMgdGhlIHNhbWUgcm9vdCBzZXQgYXMgYSBwb2ludCkuIFNlY29uZCwgaW5zZXJ0IGEgbmV3
IHJvdyBmb3IgZWFjaAorICAgICAgICByb290IHNldCBpbiBlYWNoIHRlc3QgZ3JvdXAgd2hpY2gg
ZGlkbid0IGZpbmQgYSBtYXRjaGluZyBtZWFzdXJlbWVudCBzZXQgcG9pbnQuIFRoZXJlIGlzIGEg
bGl0dGxlCisgICAgICAgIHN1YnRsZXR5IHRoYXQgc29tZSBBL0IgdGVzdGluZyBtYXkgc3BlY2lm
eSByZXZpc2lvbnMgZm9yIGEgc3Vic2V0IG9mIHJlcG9zaXRvcmllcyBhbmQvb3Igc29tZSBBL0IK
KyAgICAgICAgdGVzdGluZyByZXN1bHRzIG1heSBhcHBlYXIgYXMgaWYgaXQgZ29lcyBiYWNrIGlu
IHRpbWUgd2l0aCByZXNwZWN0IHRvIG90aGVyIEEvQiB0ZXN0aW5nIHJlc3VsdHMuCisgICAgICAg
IEZvciBleGFtcGxlLCBjb25zaWRlciBjcmVhdGluZyB0d28gQS9CIHRlc3QgZ3JvdXBzIGZvciBX
ZWJLaXQgY2hhbmdlcyBhbmQgT1MgY2hhbmdlcyBzZXBhcmF0ZWx5LgorICAgICAgICBUaGVyZSBj
b3VsZCBiZSBubyBjb2hlcmVudCBsaW5lYXJpemF0aW9uIG9mIHRob3NlIHR3byBBL0IgdGVzdGlu
ZyBpbiB3aGljaCBib3RoIFdlYktpdCBhbmQgT1MKKyAgICAgICAgdmVyc2lvbnMgbW92ZSBmb3J3
YXJkLgorCisgICAgICAgIChBbmFseXNpc1Jlc3VsdHNWaWV3ZXIuUm9vdFNldEluVGVzdEdyb3Vw
KTogQWRkZWQuIFJlcHJlc2VudHMgYSBwYWlyICh0ZXN0IGdyb3VwLCByb290IHNldCkgc2luY2UK
KyAgICAgICAgYSByb290IHNldCBjb3VsZCBiZSBzaGFyZWQgYnkgbXVsdGlwbGUgdGVzdCBncm91
cHMuCisgICAgICAgIChBbmFseXNpc1Jlc3VsdHNWaWV3ZXIuVGVzdEdyb3VwU3RhY2tpbmdCbG9j
ayk6IEFkZGVkLiBBIHN0YWNrZWQgYmxvY2sgcmVwcmVzZW50aW5nIGEgdGVzdCBncm91cC4KKyAg
ICAgICAgKEFuYWx5c2lzUmVzdWx0c1ZpZXdlci5UZXN0R3JvdXBTdGFja2luZ0Jsb2NrLnByb3Rv
dHlwZS5hZGRSb3dJbmRleCk6IEFzc29jaWF0ZXMgYSByb3cgbnVtYmVyIHdpdGgKKyAgICAgICAg
ZWl0aGVyIHNldCBBIG9yIHNldCBCLgorICAgICAgICAoQW5hbHlzaXNSZXN1bHRzVmlld2VyLlRl
c3RHcm91cFN0YWNraW5nQmxvY2sucHJvdG90eXBlLmNyZWF0ZVN0YWNraW5nQ2VsbCk6IENyZWF0
ZXMgYSB0YWJsZSBjZWxsCisgICAgICAgIGZvciB0aGlzIGJsb2NrLgorICAgICAgICAoQW5hbHlz
aXNSZXN1bHRzVmlld2VyLlRlc3RHcm91cFN0YWNraW5nQmxvY2sucHJvdG90eXBlLmlzVGhpbik6
IFJldHVybnMgdHJ1ZSBpZiB0aGlzIHRlc3QgZ3JvdXAKKyAgICAgICAgaGFzIGZhaWxlZCBhbmQg
dGhpcyBibG9jayBzaG91bGQgbG9vayAidGhpbiIgd2l0aG91dCBhbnkgbGFiZWwuCisgICAgICAg
IChBbmFseXNpc1Jlc3VsdHNWaWV3ZXIuVGVzdEdyb3VwU3RhY2tpbmdCbG9jay5wcm90b3R5cGUu
X2NvbXB1dGVUZXN0R3JvdXBTdGF0dXMpOiBDb21wdXRlcyB0aGUKKyAgICAgICAgc3RhdHVzIGZv
ciB0aGlzIHRlc3QgZ3JvdXAuCisKKyAgICAgICAgKEFuYWx5c2lzUmVzdWx0c1ZpZXdlci5UZXN0
R3JvdXBTdGFja2luZ0dyaWQpOiBBZGRlZC4gQW5hbHlzaXNSZXN1bHRzVmlld2VyIHVzZXMgdGhp
cyBjbGFzcyB0bworICAgICAgICBsYXlvdXQgYmxvY2tzIHJlcHJlc2VudGluZyB0ZXN0IGdyb3Vw
cy4KKyAgICAgICAgKEFuYWx5c2lzUmVzdWx0c1ZpZXdlci5UZXN0R3JvdXBTdGFja2luZ0dyaWQu
cHJvdG90eXBlLmluc2VydEJsb2NrVG9Db2x1bW4pOiBJbnNlcnRzIGEgbmV3IGJsb2NrCisgICAg
ICAgIHRvIGxheW91dC4gV2Uga2VlcCBhbGwgdGVzdCBncm91cHMgZG9pbmcgdGhlIHNhbWUgQS9C
IHRlc3QgbmV4dCB0byBlYWNoIG90aGVyLgorICAgICAgICAoQW5hbHlzaXNSZXN1bHRzVmlld2Vy
LlRlc3RHcm91cFN0YWNraW5nR3JpZC5wcm90b3R5cGUubGF5b3V0KTogTGF5b3V0cyBlYWNoIGJs
b2NrIC8gdGVzdCBncm91cAorICAgICAgICBpbiB0aGUgb3JkZXIgdGhleSBhcmUgY3JlYXRlZC4K
KyAgICAgICAgKEFuYWx5c2lzUmVzdWx0c1ZpZXdlci5UZXN0R3JvdXBTdGFja2luZ0dyaWQucHJv
dG90eXBlLl9sYXlvdXRCbG9jayk6IFBsYWNlcyB0aGUgYmxvY2sgaW4gdGhlCisgICAgICAgIGxl
ZnQtbW9zdCBjb2x1bW4gdGhhdCBjYW4gYWNjb21tb2RhdGUgaXQgd2hpbGUgYXZvaWRpbmcgY29s
dW1ucyBvZiBhIGRpZmZlcmVudCB0aGluLW5lc3MuIEEgY29sdW1uCisgICAgICAgIGlzIHRoaW4g
aWYgaXRzIEEvQiB0ZXN0aW5nIGhhcyBmYWlsZWQsIGFuZCBub3QgdGhpbiBvdGhlcndpc2UuCisg
ICAgICAgIChBbmFseXNpc1Jlc3VsdHNWaWV3ZXIuVGVzdEdyb3VwU3RhY2tpbmdHcmlkLnByb3Rv
dHlwZS5jcmVhdGVDZWxsc0ZvclJvdyk6IENyZWF0ZXMgdGFibGUgY2VsbHMgZm9yCisgICAgICAg
IGEgZ2l2ZW4gcm93LiBGb3IgZWFjaCBjb2x1bW4sIGdlbmVyYXRlIGEgdGFibGUgY2VsbCBpZiB3
ZSdyZSBpbiB0aGUgZmlyc3Qgcm93IGFuZCB0aGUgZmlyc3QgYmxvY2sKKyAgICAgICAgc3RhcnRz
IGluIGEgbGF0ZXIgcm93LCBhIGJsb2NrIHN0YXJ0cyBpbiB0aGUgY3VycmVudCByb3csIG9yIHRo
ZSBsYXN0IGJsb2NrIGVuZGVkIGluIHRoZSBwcmV2aW91cworICAgICAgICByb3cgYW5kIHRoZSBu
ZXh0IGJsb2NrIG9yIHRoZSBsYXN0IHJvdyBhcHBlYXJzIGxhdGVyLgorCisgICAgICAgICogcHVi
bGljL3YzL2NvbXBvbmVudHMvYmFyLWdyYXBoLWdyb3VwLmpzOiBBZGRlZC4gQSBjb21wb25lbnQg
Zm9yIHNob3dpbmcgYSBncm91cCBvZiBiYXIgZ3JhcGhzLgorICAgICAgICAoQmFyR3JhcGhHcm91
cCk6IEFkZGVkLiBDcmVhdGVzIGEgZ3JvdXAgb2YgYmFyIGdyYXBocyB3aXRoIHRoZSBzYW1lIHZh
bHVlIHJhbmdlLiBJdCdzIHVzZWQgYnkKKyAgICAgICAgQW5hbHlzaXNSZXN1bHRzVmlld2VyIGFu
ZCBSZXN1bHRzVGFibGUgdG8gc2hvdyBiYXIgZ3JhcGhzIHRvIGNvbXBhcmUgdmFsdWVzLgorICAg
ICAgICAoU2luZ2xlQmFyR3JhcGgpOiBBIGNvbXBvbmVudCBjcmVhdGVkIGFuZCBjb2xsZWN0aXZl
bHkgY29udHJvbGxlZCBieSBCYXJHcmFwaEdyb3VwLgorCisgICAgICAgICogcHVibGljL3YzL2Nv
bXBvbmVudHMvcmVzdWx0cy10YWJsZS5qczogQWRkZWQuCisgICAgICAgIChSZXN1bHRzVGFibGUp
OiBBbiBhYnN0cmFjdCBzdXBlcmNsYXNzIGZvciBUZXN0R3JvdXBSZXN1bHRzVGFibGUgYW5kIEFu
YWx5c2lzUmVzdWx0c1ZpZXdlci4KKworICAgICAgICAoUmVzdWx0c1RhYmxlLnByb3RvdHlwZS5y
ZW5kZXIpOiBSZW5kZXJzIHRoZSB0YWJsZS4gMS4gQ2FsbCAiYnVpbGRSb3dHcm91cHMoKSIgaW1w
bGVtZW50ZWQgYnkKKyAgICAgICAgYSBzdWJjbGFzcyB0byBvYnRhaW4gdGhlIGxpc3Qgb2Ygcm93
cy4gMi4gQ29tcHV0ZSB0aGUgbGlzdCBvZiByZXBvc2l0b3JpZXMgdG8gc2hvdy4gMy4gRm9yIGVh
Y2gKKyAgICAgICAgY2VsbCBpbiB0aGUgdGFibGUsIGNvbXB1dGUgdGhlIG51bWJlciBvZiByb3dz
IHRvIHNob3cgdGhlIHNhbWUgdmFsdWUgKGZvciByb3dzcGFuKS4gNC4gUmVuZGVyIHRoZQorICAg
ICAgICB0YWJsZSB3aXRoIGFuIGV4dHJhIGxpc3Qgb2YgcmVwb3NpdG9yaWVzIGlmIGV4aXN0cy4K
KworICAgICAgICAoUmVzdWx0c1RhYmxlLnByb3RvdHlwZS5fY29tcHV0ZVJlcG9zaXRvcnlMaXN0
KTogQ29tcHV0ZSB0aGUgbGlzdCBvZiByZXBvc2l0b3JpZXMgdG8gbGlzdAorICAgICAgICByZXZp
c2lvbnMgaW4gdGhlIHRhYmxlLiBPbWl0IHJlcG9zaXRvcmllcyBub3QgcHJlc2VudCBpbiBhbnkg
cm93IG9yIGZvciB3aGljaCBhbGwgcm93cyBoYXZlIHRoZQorICAgICAgICBzYW1lIHJldmlzaW9u
LiBJbiB0aGUgbGF0dGVyIGNhc2UsIGluY2x1ZGUgaXQgaW4gdGhlIGV4dHJhIHJlcG9zaXRvcmll
cyBsaXN0ZWQgYmVsb3cgdGhlIHRhYmxlLgorICAgICAgICBUaGlzIG1pbmltaXplcyB0aGUgYW1v
dW50IG9mIHJlZHVuZGFudCBpbmZvcm1hdGlvbiBwcmVzZW50ZWQgdG8gdGhlIHVzZXIuCisKKyAg
ICAgICAgKFJlc3VsdHNUYWJsZVJvdyk6IEFkZGVkLiBSZXByZXNlbnRzIGEgc2luZ2xlIHJvdyBp
biB0aGUgdGFibGUuIFJlc3VsdHNUYWJsZSBjb25zdHJ1Y3RzIG5lY2Vzc2FyeQorICAgICAgICB0
YWJsZSBjZWxscyB0byB0YWJ1bGF0ZSB0aGUgYXNzb2NpYXRlZCByb290IHNldHMsIGFuZCBzaG93
cyB0aGUgYXNzb2NpYXRlZCByZXN1bHQgdXNpbmcgYSBncm91cGVkCisgICAgICAgIGJhciBncmFw
aC4gQWRkaXRpb25hbCBjb2x1bW5zIGFyZSB1c2VkIGJ5IEFuYWx5c2lzUmVzdWx0c1ZpZXdlciB0
byBzaG93IHN0YWNrZWQgYmxvY2tzIGZvciBBL0IKKyAgICAgICAgdGVzdGluZyBncm91cHMuCisK
KyAgICAgICAgKiBwdWJsaWMvdjMvY29tcG9uZW50cy90ZXN0LWdyb3VwLXJlc3VsdHMtdGFibGUu
anM6IEFkZGVkLgorICAgICAgICAoVGVzdEdyb3VwUmVzdWx0c1RhYmxlKToKKyAgICAgICAgKFRl
c3RHcm91cFJlc3VsdHNUYWJsZS5wcm90b3R5cGUuZGlkVXBkYXRlUmVzdWx0cyk6CisgICAgICAg
IChUZXN0R3JvdXBSZXN1bHRzVGFibGUucHJvdG90eXBlLnNldFRlc3RHcm91cCk6CisgICAgICAg
IChUZXN0R3JvdXBSZXN1bHRzVGFibGUucHJvdG90eXBlLmhlYWRpbmcpOgorICAgICAgICAoVGVz
dEdyb3VwUmVzdWx0c1RhYmxlLnByb3RvdHlwZS5yZW5kZXIpOgorICAgICAgICAoVGVzdEdyb3Vw
UmVzdWx0c1RhYmxlLnByb3RvdHlwZS5idWlsZFJvd0dyb3Vwcyk6CisKKyAgICAgICAgKiBwdWJs
aWMvdjMvaW5kZXguaHRtbDoKKyAgICAgICAgKiBwdWJsaWMvdjMvbW9kZWxzL2FuYWx5c2lzLXJl
c3VsdHMuanM6IEFkZGVkLgorICAgICAgICAoQW5hbHlzaXNSZXN1bHRzKTogQWRkZWQuIExpa2Ug
TWVhc3VyZW1lbnRTZXQsIHRoaXMgY2xhc3MgcmVwcmVzZW50cyBhIHNldCBvZiBtZWFzdXJlZCB2
YWx1ZXMKKyAgICAgICAgYXNzb2NpYXRlZCB3aXRoIGEgZ2l2ZW4gYW5hbHlzaXMgdGFzay4KKyAg
ICAgICAgKEFuYWx5c2lzUmVzdWx0cy5wcm90b3R5cGUuZmluZCk6IFJldHVybnMgYSBtZWFzdXJl
ZCB2YWx1ZWQgZm9yIGEgZ2l2ZW4gYnVpbGQgYW5kIG1ldHJpYy4KKyAgICAgICAgKEFuYWx5c2lz
UmVzdWx0cy5wcm90b3R5cGUuYWRkKTogQWRkcyBhIG5ldyBtZWFzdXJlZCB2YWx1ZS4gVXNlZCBi
eSBBbmFseXNpc1Jlc3VsdHMuZmV0Y2guCisgICAgICAgIChBbmFseXNpc1Jlc3VsdHMuZmV0Y2gp
OiBGZXRjaGVzIGRhdGEgYW5kIGNyZWF0ZXMgQW5hbHlzaXNSZXN1bHRzIGZvciBhIGdpdmVuIGFu
YWx5c2lzIHRhc2suCisKKyAgICAgICAgKiBwdWJsaWMvdjMvbW9kZWxzL2FuYWx5c2lzLXRhc2su
anM6CisgICAgICAgIChBbmFseXNpc1Rhc2sucHJvdG90eXBlLnN0YXJ0TWVhc3VyZW1lbnRJZCk6
IEFkZGVkLgorICAgICAgICAoQW5hbHlzaXNUYXNrLnByb3RvdHlwZS5lbmRNZWFzdXJlbWVudElk
KTogQWRkZWQuCisgICAgICAgIChBbmFseXNpc1Rhc2suZmV0Y2hCeUJ1aWxkUmVxdWVzdElkKTog
QWRkZWQuCisgICAgICAgIChBbmFseXNpc1Rhc2suX2ZldGNoU3Vic2V0KTogVXNlcyBEYXRhTW9k
ZWxPYmplY3QuY2FjaGVkRmV0Y2guCisKKyAgICAgICAgKiBwdWJsaWMvdjMvbW9kZWxzL2J1aWxk
LXJlcXVlc3QuanM6IEFkZGVkLgorICAgICAgICAoQnVpbGRSZXF1ZXN0KTogQWRkZWQuIFJlcHJl
c2VudHMgYSBzaW5nbGUgQS9CIHRlc3RpbmcgcmVxdWVzdCBhc3NvY2lhdGVkIHdpdGggYSB0ZXN0
IGdyb3VwLgorCisgICAgICAgICogcHVibGljL3YzL21vZGVscy9idWlsZGVyLmpzOgorICAgICAg
ICAoQnVpbGQpOiBBZGRlZC4gUmVwcmVzZW50cyBhIGJ1aWxkIGFzc29jaWF0ZWQgd2l0aCBhIGdp
dmVuIEEvQiB0ZXN0aW5nIHJlc3VsdC4KKworICAgICAgICAqIHB1YmxpYy92My9tb2RlbHMvY29t
bWl0LWxvZy5qczoKKyAgICAgICAgKENvbW1pdExvZyk6IE1hZGUgdGhpcyBjbGFzcyBpbmhlcml0
IGZyb20gRGF0YU1vZGVsT2JqZWN0LgorICAgICAgICAoQ29tbWl0TG9nLmVuc3VyZVNpbmdsZXRv
bik6IEFkZGVkLiBGaW5kcyB0aGUgc2luZ2xldG9uIG9iamVjdCBjcmVhdGVkIGZvciBhIGdpdmVu
IHJldmlzaW9uCisgICAgICAgIGluIHRoZSBzcGVjaWZpZWQgcmVwb3NpdG9yeS4gVGhpcyBoZWxw
cyBSb290U2V0IGFuZCBvdGhlciBjbGFzc2VzIGNvbXBhcmUgY29tbWl0cyBmYXN0LgorICAgICAg
ICAoQ29tbWl0TG9nLnByb3RvdHlwZS5yZXBvc2l0b3J5KTogQWRkZWQuCisgICAgICAgIChDb21t
aXRMb2cuZmV0Y2hCZXR3ZWVuUmV2aXNpb25zKTogVXNlcyBDb21taXRMb2cuZW5zdXJlU2luZ2xl
dG9uLgorCisgICAgICAgICogcHVibGljL3YzL21vZGVscy9kYXRhLW1vZGVsLmpzOgorICAgICAg
ICAoRGF0YU1vZGVsT2JqZWN0KToKKyAgICAgICAgKERhdGFNb2RlbE9iamVjdC5uYW1lZFN0YXRp
Y01hcCk6IEFkZGVkLgorICAgICAgICAoRGF0YU1vZGVsT2JqZWN0LmVuc3VyZU5hbWVkU3RhdGlj
TWFwKTogUmVuYW1lZCBmcm9tIG5hbWVkU3RhdGljTWFwIGluc3RlYWQgb2YgaW1wbGljaXRseQor
ICAgICAgICBhc3N1bWluZyB0aGF0IHRoZSBub24tc3RhdGljIHZlcnNpb24gYWx3YXlzIGNyZWF0
ZXMgdGhlIG1hcC4KKyAgICAgICAgKERhdGFNb2RlbE9iamVjdC5wcm90b3R5cGUubmFtZWRTdGF0
aWNNYXApOiBBZGRlZC4KKyAgICAgICAgKERhdGFNb2RlbE9iamVjdC5jYWNoZWRGZXRjaCk6IEV4
dHJhY3RlZCBmcm9tIEFuYWx5c2lzVGFzay5fZmV0Y2hTdWJzZXQgc28gdGhhdCBUZXN0R3JvdXAn
cworICAgICAgICBmZXRjaEJ5VGFzayBjb3VsZCBhbHNvIHVzZSBpdC4KKyAgICAgICAgKExhYmVs
ZWRPYmplY3QpOgorCisgICAgICAgICogcHVibGljL3YzL21vZGVscy9tZWFzdXJlbWVudC1hZGFw
dG9yLmpzOiBBZGRlZC4KKyAgICAgICAgKE1lYXN1cmVtZW50QWRhcHRvcik6IEV4dHJhY3RlZCBm
cm9tIE1lYXN1cmVtZW50Q2x1c3Rlci4gVGhpcyBjbGFzcyBpcyByZXNwb25zaWJsZSBmb3IKKyAg
ICAgICAgcmUtZm9ybWF0dGluZyB0aGUgZGF0YSByZWNlaXZlZCB2aWEgL2FwaS9tZWFzdXJlbWVu
dC1zZXQgSlNPTiBBUEkgaW5zaWRlIHRoZSB2MyBVSS4KKyAgICAgICAgKE1lYXN1cmVtZW50QWRh
cHRvci5wcm90b3R5cGUuZXh0cmFjdElkKTogQWRkZWQuCisgICAgICAgIChNZWFzdXJlbWVudEFk
YXB0b3IucHJvdG90eXBlLmFkb3B0VG9BbmFseXNpc1Jlc3VsdHMpOiBBZGRlZC4gVXNlZCBieSBB
bmFseXNpc1Jlc3VsdHMuCisgICAgICAgIChNZWFzdXJlbWVudEFkYXB0b3IuYWdncmVnYXRlQW5h
bHlzaXNSZXN1bHRzKTogQWRkZWQuIFVzZWQgYnkgVGVzdEdyb3VwUmVzdWx0c1RhYmxlIHRvCisg
ICAgICAgIGFnZ3JlZ2F0ZSByZXN1bHRzIGZvciBlYWNoIHRlc3QgY29uZmlndXJhdGlvbjsgZS5n
LiBjb21wdXRpbmcgdGhlIGF2ZXJhZ2UgZm9yIHNldCBBLgorICAgICAgICAoTWVhc3VyZW1lbnRB
ZGFwdG9yLnByb3RvdHlwZS5hZG9wdFRvU2VyaWVzKTogRXh0cmFjdGVkIGZyb20gTWVhc3VyZW1l
bnRDbHVzdGVyLmFkZFRvU2VyaWVzLgorICAgICAgICBBZGRlZCByb290U2V0KCkgdG8gZWFjaCBw
b2ludC4gVGhpcyBhbGxvd3MgQW5hbHlzaXNSZXN1bHRzVmlld2VyIHRvIGNvbXBhcmUgdGhlbSBh
Z2FpbnN0IHJvb3QKKyAgICAgICAgc2V0cyBhc3NvY2lhdGVkIHdpdGggQS9CIHRlc3RpbmcgcmVz
dWx0cy4KKyAgICAgICAgKE1lYXN1cmVtZW50QWRhcHRvci5jb21wdXRlQ29uZmlkZW5jZUludGVy
dmFsKTogTW92ZWQgZnJvbSBNZWFzdXJlbWVudENsdXN0ZXIuCisKKyAgICAgICAgKiBwdWJsaWMv
djMvbW9kZWxzL21lYXN1cmVtZW50LWNsdXN0ZXIuanM6CisgICAgICAgIChNZWFzdXJlbWVudENs
dXN0ZXIpOgorICAgICAgICAoTWVhc3VyZW1lbnRDbHVzdGVyLnByb3RvdHlwZS5hZGRUb1Nlcmll
cyk6CisKKyAgICAgICAgKiBwdWJsaWMvdjMvbW9kZWxzL3JlcG9zaXRvcnkuanM6CisgICAgICAg
IChSZXBvc2l0b3J5LnByb3RvdHlwZS5oYXNVcmxGb3JSZXZpc2lvbik6IEFkZGVkLgorCisgICAg
ICAgICogcHVibGljL3YzL21vZGVscy9yb290LXNldC5qczogQWRkZWQuCisgICAgICAgIChSb290
U2V0KTogQWRkZWQuIFJlcHJlc2VudHMgYSBzZXQgb2YgY29tbWl0cyBpbiBtZWFzdXJlZCByZXN1
bHRzLgorICAgICAgICAoTWVhc3VyZW1lbnRSb290U2V0KTogQWRkZWQuIERpdHRvIGZvciByZXN1
bHRzIGFzc29jaWF0ZWQgd2l0aCBBL0IgdGVzdGluZy4KKworICAgICAgICAqIHB1YmxpYy92My9t
b2RlbHMvdGVzdC1ncm91cC5qczogQWRkZWQuCisgICAgICAgIChUZXN0R3JvdXApOiBBZGRlZC4g
UmVwcmVzZW50cyBhIEEvQiB0ZXN0aW5nIG9uIGFuYWx5c2lzIHRhc2suCisgICAgICAgIChUZXN0
R3JvdXAucHJvdG90eXBlLmNyZWF0ZWRBdCk6IEFkZGVkLgorICAgICAgICAoVGVzdEdyb3VwLnBy
b3RvdHlwZS5idWlsZFJlcXVlc3RzKTogUmV0dXJucyB0aGUgbGlzdCBvZiBidWlsZCByZXF1ZXN0
cyBhc3NvY2lhdGVkIHdpdGggdGhpcworICAgICAgICBBL0IgdGVzdGluZy4KKyAgICAgICAgKFRl
c3RHcm91cC5wcm90b3R5cGUuYWRkQnVpbGRSZXF1ZXN0KTogQWRkZWQuIFVzZWQgYnkgQnVpbGRS
ZXF1ZXN0J3MgY29uc3RydWN0b3IgdG8gYXNzb2NpYXRlCisgICAgICAgIGl0c2VsZiB3aXRoIHRo
aXMgZ3JvdXAuCisgICAgICAgIChUZXN0R3JvdXAucHJvdG90eXBlLmRpZFNldFJlc3VsdCk6IEFk
ZGVkLiBDYWxsZWQgYnkgQnVpbGRSZXF1ZXN0LnNldFJlc3VsdCB3aGVuIG1lYXN1cmVkCisgICAg
ICAgIHZhbHVlcyBhcmUgZmV0Y2hlZCBhbmQgYXNzb2NpYXRlZCB3aXRoIGEgYnVpbGQgcmVxdWVz
dCBpbiB0aGlzIGdyb3VwLgorCisgICAgICAgICogcHVibGljL3YzL21vZGVscy90ZXN0LmpzOgor
ICAgICAgICAoVGVzdCk6CisKKyAgICAgICAgKiBwdWJsaWMvdjMvcGFnZXMvYW5hbHlzaXMtdGFz
ay1wYWdlLmpzOgorICAgICAgICAoQW5hbHlzaXNUYXNrUGFnZSk6CisgICAgICAgIChBbmFseXNp
c1Rhc2tQYWdlLnByb3RvdHlwZS51cGRhdGVGcm9tU2VyaWFsaXplZFN0YXRlKTogRmV0Y2ggdGhl
IGFuYWx5c2lzIHRhc2ssIHRlc3QgZ3JvdXBzCisgICAgICAgIGFzc29jaWF0ZWQgd2l0aCBpdCwg
YW5kIGFsbCBBL0IgdGVzdGluZyByZXN1bHRzIGJhc2VkIG9uIHRoZSB0YXNrIGlkIG9yIHRoZSBi
dWlsZCByZXF1ZXN0IGlkCisgICAgICAgIHNwZWNpZmllZCBpbiB0aGUgVVJMLgorICAgICAgICAo
QW5hbHlzaXNUYXNrUGFnZS5wcm90b3R5cGUuX2RpZEZldGNoVGFzayk6IEFkZGVkLiBTdGFydCBm
ZXRjaGluZyB0aGUgbWVhc3VyZWQgZGF0YS4gVGhpcyBpcworICAgICAgICB0aGUgZGF0YSBvbiBj
aGFydHMgcGFnZSBmb3Igd2hpY2ggdGhpcyBhbmFseXNpcyB0YXNrIHdhcyBjcmVhdGVkLCBub3Qg
cmVzdWx0cyBvZiBBL0IgdGVzdGluZy4KKyAgICAgICAgKEFuYWx5c2lzVGFza1BhZ2UucHJvdG90
eXBlLl9kaWRGZXRjaE1lYXN1cmVtZW50KTogQWRkZWQuIERpc3BsYXkgdGhlIGZldGNoZWQgZGF0
YSBpbiBhIHRhYmxlCisgICAgICAgIGluc2lkZSBBbmFseXNpc1Jlc3VsdHNWaWV3ZXIuCisgICAg
ICAgIChBbmFseXNpc1Rhc2tQYWdlLnByb3RvdHlwZS5fZGlkRmV0Y2hUZXN0R3JvdXBzKTogQWRk
ZWQuIERpc3BsYXkgdGhlIGxpc3Qgb2YgQS9CIHRlc3QgZ3JvdXBzCisgICAgICAgIGFzIHdlbGwg
YXMgdGhlIHJlc3VsdHMgb2YgdGhlIGZpcnN0IEEvQiB0ZXN0aW5nLgorICAgICAgICAoQW5hbHlz
aXNUYXNrUGFnZS5wcm90b3R5cGUuX2RpZEZldGNoQW5hbHlzaXNSZXN1bHRzKTogQWRkZWQuCisg
ICAgICAgIChBbmFseXNpc1Rhc2tQYWdlLnByb3RvdHlwZS5fYXNzaWduVGVzdFJlc3VsdHNJZlBv
c3NpYmxlKTogQWRkZWQuIE9uY2UgYm90aCB0aGUgYW5hbHlzaXMgdGFzaywKKyAgICAgICAgQS9C
IHRlc3QgZ3JvdXBzIGFzIHdlbGwgYXMgdGhlaXIgcmVzdWx0cyBhcmUgZmV0Y2hlZCwgdXBkYXRl
IGJ1aWxkIHJlcXVlc3RzIGluIGVhY2ggdGVzdCBncm91cAorICAgICAgICB3aXRoIHRoZWlyIHJl
c3VsdHMuCisgICAgICAgIChBbmFseXNpc1Rhc2tQYWdlLnByb3RvdHlwZS5yZW5kZXIpOiBTaG93
IHRoZSBsaXN0IG9mIHRlc3QgZ3JvdXBzIGFuZCBoaWdobGlnaHQgdGhlIGN1cnJlbnRseQorICAg
ICAgICBzZWxlY3RlZCBvbmUuCisgICAgICAgIChBbmFseXNpc1Rhc2tQYWdlLnByb3RvdHlwZS5f
c2hvd1Rlc3RHcm91cCk6IEFkZGVkLiBBIGNhbGxiYWNrIHVzZWQgYnkgQW5hbHlzaXNSZXN1bHRz
Vmlld2VyCisgICAgICAgIGFuZCBUZXN0R3JvdXBSZXN1bHRzVGFibGUgdG8gbm90aWZ5IHRoaXMg
Y2xhc3Mgd2hlbiB0aGUgdXNlciBzZWxlY3RzIGEgbmV3IHRlc3QgZ3JvdXAuCisgICAgICAgIChB
bmFseXNpc1Rhc2tQYWdlLmh0bWxUZW1wbGF0ZSk6IFVwZGF0ZWQgdGhlIHRlbXBsYXRlLgorICAg
ICAgICAoQW5hbHlzaXNUYXNrUGFnZS5jc3NUZW1wbGF0ZSk6IERpdHRvLgorCisgICAgICAgICog
cHVibGljL3YzL3BhZ2VzL2NoYXJ0cy1wYWdlLmpzOgorICAgICAgICAoQ2hhcnRzUGFnZS5jcmVh
dGVTdGF0ZUZvckFuYWx5c2lzVGFzayk6IEFkZGVkLiBDcmVhdGVzIGEgVVJMIHN0YXRlIG9iamVj
dCBmb3Igb3BlbmluZyBhIGNoYXJ0CisgICAgICAgIGFzc29jaWF0ZWQgd2l0aCBhbiBhbmFseXNp
cyB0YXNrLgorCiAyMDE1LTEyLTE3ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgog
CiAgICAgICAgIHYzIFVJIHNob3VsZG4ndCBvcGVuL2Nsb3NlIHBhbmUgc2VsZWN0b3IgYnkgbW91
c2VlbnRlci9sZWF2ZQpJbmRleDogV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9hcGkv
YW5hbHlzaXMtdGFza3MucGhwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9y
Zy9wdWJsaWMvYXBpL2FuYWx5c2lzLXRhc2tzLnBocAkocmV2aXNpb24gMTk0MzU3KQorKysgV2Vi
c2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9hcGkvYW5hbHlzaXMtdGFza3MucGhwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMCw5ICsxMCwxNSBAQCBmdW5jdGlvbiBtYWluKCRwYXRoKSB7CiAgICAg
aWYgKGNvdW50KCRwYXRoKSA+IDEpCiAgICAgICAgIGV4aXRfd2l0aF9lcnJvcignSW52YWxpZFJl
cXVlc3QnKTsKIAorICAgICRidWlsZF9yZXF1ZXN0X2lkID0gYXJyYXlfZ2V0KCRfR0VULCAnYnVp
bGRSZXF1ZXN0Jyk7CiAgICAgJHRhc2tfaWQgPSBjb3VudCgkcGF0aCkgPiAwICYmICRwYXRoWzBd
ID8gJHBhdGhbMF0gOiBhcnJheV9nZXQoJF9HRVQsICdpZCcpOwogCi0gICAgaWYgKCR0YXNrX2lk
KSB7CisgICAgaWYgKCRidWlsZF9yZXF1ZXN0X2lkKSB7CisgICAgICAgICR0YXNrcyA9ICRkYi0+
cXVlcnlfYW5kX2ZldGNoX2FsbCgnU0VMRUNUIGFuYWx5c2lzX3Rhc2tzLiogRlJPTSBidWlsZF9y
ZXF1ZXN0cywgYW5hbHlzaXNfdGVzdF9ncm91cHMsIGFuYWx5c2lzX3Rhc2tzCisgICAgICAgICAg
ICBXSEVSRSByZXF1ZXN0X2lkID0gJDEgQU5EIHJlcXVlc3RfZ3JvdXAgPSB0ZXN0Z3JvdXBfaWQg
QU5EIHRlc3Rncm91cF90YXNrID0gdGFza19pZCcsIGFycmF5KGludHZhbCgkYnVpbGRfcmVxdWVz
dF9pZCkpKTsKKyAgICAgICAgaWYgKCEkdGFza3MpCisgICAgICAgICAgICBleGl0X3dpdGhfZXJy
b3IoJ1Rhc2tOb3RGb3VuZCcsIGFycmF5KCdidWlsZFJlcXVlc3QnID0+ICRidWlsZF9yZXF1ZXN0
X2lkKSk7CisgICAgfSBlbHNlIGlmICgkdGFza19pZCkgewogICAgICAgICAkdGFza19pZCA9IGlu
dHZhbCgkdGFza19pZCk7CiAgICAgICAgICR0YXNrID0gJGRiLT5zZWxlY3RfZmlyc3Rfcm93KCdh
bmFseXNpc190YXNrcycsICd0YXNrJywgYXJyYXkoJ2lkJyA9PiAkdGFza19pZCkpOwogICAgICAg
ICBpZiAoISR0YXNrKQpJbmRleDogV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9hcGkv
bWVhc3VyZW1lbnQtc2V0LnBocAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJzaXRlcy9wZXJmLndlYmtpdC5v
cmcvcHVibGljL2FwaS9tZWFzdXJlbWVudC1zZXQucGhwCShyZXZpc2lvbiAxOTQzNTcpCisrKyBX
ZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL2FwaS9tZWFzdXJlbWVudC1zZXQucGhwCSh3
b3JraW5nIGNvcHkpCkBAIC02LDI0ICs2LDIzIEBAIGZ1bmN0aW9uIG1haW4oKSB7CiAgICAgJHBy
b2dyYW1fc3RhcnRfdGltZSA9IG1pY3JvdGltZSh0cnVlKTsKIAogICAgICRhcmd1bWVudHMgPSB2
YWxpZGF0ZV9hcmd1bWVudHMoJF9HRVQsIGFycmF5KAotICAgICAgICAncGxhdGZvcm0nID0+ICdp
bnQnLAotICAgICAgICAnbWV0cmljJyA9PiAnaW50JywKLSAgICAgICAgJ3Rlc3RHcm91cCcgPT4g
J2ludD8nLAotICAgICAgICAnc3RhcnRUaW1lJyA9PiAnaW50PycsCi0gICAgICAgICdlbmRUaW1l
JyA9PiAnaW50PycpKTsKKyAgICAgICAgJ3BsYXRmb3JtJyA9PiAnaW50PycsCisgICAgICAgICdt
ZXRyaWMnID0+ICdpbnQ/JywKKyAgICAgICAgJ2FuYWx5c2lzVGFzaycgPT4gJ2ludD8nKSk7CiAK
ICAgICAkcGxhdGZvcm1faWQgPSAkYXJndW1lbnRzWydwbGF0Zm9ybSddOwogICAgICRtZXRyaWNf
aWQgPSAkYXJndW1lbnRzWydtZXRyaWMnXTsKLQotICAgICRzdGFydF90aW1lID0gJGFyZ3VtZW50
c1snc3RhcnRUaW1lJ107Ci0gICAgJGVuZF90aW1lID0gJGFyZ3VtZW50c1snZW5kVGltZSddOwot
ICAgIGlmICghISRzdGFydF90aW1lICE9ICEhJGVuZF90aW1lKQotICAgICAgICBleGl0X3dpdGhf
ZXJyb3IoJ0ludmFsaWRUaW1lUmFuZ2UnLCBhcnJheSgnc3RhcnRUaW1lJyA9PiAkc3RhcnRfdGlt
ZSwgJ2VuZFRpbWUnID0+ICRlbmRfdGltZSkpOworICAgICR0YXNrX2lkID0gJGFyZ3VtZW50c1sn
YW5hbHlzaXNUYXNrJ107CisgICAgaWYgKCEoKCRwbGF0Zm9ybV9pZCAmJiAkbWV0cmljX2lkICYm
ICEkdGFza19pZCkgfHwgKCR0YXNrX2lkICYmICEkcGxhdGZvcm1faWQgJiYgISRtZXRyaWNfaWQp
KSkKKyAgICAgICAgZXhpdF93aXRoX2Vycm9yKCdBbWJpZ3VvdXNSZXF1ZXN0Jyk7CiAKICAgICAk
ZGIgPSBuZXcgRGF0YWJhc2U7CiAgICAgaWYgKCEkZGItPmNvbm5lY3QoKSkKICAgICAgICAgZXhp
dF93aXRoX2Vycm9yKCdEYXRhYmFzZUNvbm5lY3Rpb25GYWlsdXJlJyk7CiAKKyAgICBpZiAoJHRh
c2tfaWQpCisgICAgICAgIGV4aXRfd2l0aF9zdWNjZXNzKChuZXcgQW5hbHlzaXNSZXN1bHRzRmV0
Y2hlcigkZGIsICR0YXNrX2lkKSktPmZldGNoKCkpOworCiAgICAgJGZldGNoZXIgPSBuZXcgTWVh
c3VyZW1lbnRTZXRGZXRjaGVyKCRkYik7CiAgICAgaWYgKCEkZmV0Y2hlci0+ZmV0Y2hfY29uZmln
X2xpc3QoJHBsYXRmb3JtX2lkLCAkbWV0cmljX2lkKSkgewogICAgICAgICBleGl0X3dpdGhfZXJy
b3IoJ0NvbmZpZ3VyYXRpb25Ob3RGb3VuZCcsCkBAIC0yMTQsNiArMjEzLDc2IEBAIGNsYXNzIE1l
YXN1cmVtZW50U2V0RmV0Y2hlciB7CiAgICAgfQogfQogCitjbGFzcyBBbmFseXNpc1Jlc3VsdHNG
ZXRjaGVyIHsKKworICAgIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRkYiwgJHRhc2tfaWQpIHsKKyAg
ICAgICAgJHRoaXMtPmRiID0gJGRiOworICAgICAgICAkdGhpcy0+dGFza19pZCA9ICR0YXNrX2lk
OworICAgICAgICAkdGhpcy0+YnVpbGRfdG9fY29tbWl0cyA9IGFycmF5KCk7CisgICAgfQorCisg
ICAgZnVuY3Rpb24gZmV0Y2goKQorICAgIHsKKyAgICAgICAgJHN0YXJ0X3RpbWUgPSBtaWNyb3Rp
bWUoVFJVRSk7CisKKyAgICAgICAgLy8gRmV0Y2ggY29tbW1pdHMgc2VwYXJhdGVseSBmcm9tIHRl
c3RfcnVucyBzaW5jZSBudW1iZXIgb2YgYnVpbGRzIGlzIG11Y2ggc21hbGxlciB0aGFuIG51bWJl
ciBvZiBydW5zIGhlcmUuCisgICAgICAgICR0aGlzLT5mZXRjaF9jb21taXRzKCk7CisKKyAgICAg
ICAgJHF1ZXJ5ID0gJHRoaXMtPmRiLT5xdWVyeSgnU0VMRUNUIHRlc3RfcnVucy4qLCBidWlsZHMu
KiwgdGVzdF9jb25maWd1cmF0aW9ucy4qCisgICAgICAgICAgICBGUk9NIGJ1aWxkcywKKyAgICAg
ICAgICAgICAgICB0ZXN0X3J1bnMgSk9JTiB0ZXN0X2NvbmZpZ3VyYXRpb25zIE9OIHJ1bl9jb25m
aWcgPSBjb25maWdfaWQsCisgICAgICAgICAgICAgICAgYnVpbGRfcmVxdWVzdHMgSk9JTiBhbmFs
eXNpc190ZXN0X2dyb3VwcyBPTiByZXF1ZXN0X2dyb3VwID0gdGVzdGdyb3VwX2lkCisgICAgICAg
ICAgICBXSEVSRSBydW5fYnVpbGQgPSBidWlsZF9pZCBBTkQgYnVpbGRfaWQgPSByZXF1ZXN0X2J1
aWxkCisgICAgICAgICAgICAgICAgQU5EIHRlc3Rncm91cF90YXNrID0gJDEgQU5EIHJ1bl9jb25m
aWcgPSBjb25maWdfaWQnLCBhcnJheSgkdGhpcy0+dGFza19pZCkpOworCisgICAgICAgICRyZXN1
bHRzID0gYXJyYXkoKTsKKyAgICAgICAgd2hpbGUgKCRyb3cgPSAkdGhpcy0+ZGItPmZldGNoX25l
eHRfcm93KCRxdWVyeSkpCisgICAgICAgICAgICBhcnJheV9wdXNoKCRyZXN1bHRzLCAkdGhpcy0+
Zm9ybWF0X21lYXN1cmVtZW50KCRyb3cpKTsKKworICAgICAgICByZXR1cm4gYXJyYXkoCisgICAg
ICAgICAgICAnZm9ybWF0TWFwJyA9PiBzZWxmOjpmb3JtYXRfbWFwKCksCisgICAgICAgICAgICAn
bWVhc3VyZW1lbnRzJyA9PiAkcmVzdWx0cywKKyAgICAgICAgICAgICdlbGFwc2VkVGltZScgPT4g
KG1pY3JvdGltZShUUlVFKSAtICRzdGFydF90aW1lKSAqIDEwMDApOworICAgIH0KKworICAgIGZ1
bmN0aW9uIGZldGNoX2NvbW1pdHMoKQorICAgIHsKKyAgICAgICAgJHF1ZXJ5ID0gJHRoaXMtPmRi
LT5xdWVyeSgnU0VMRUNUIGNvbW1pdF9idWlsZCwgY29tbWl0X3JlcG9zaXRvcnksIGNvbW1pdF9y
ZXZpc2lvbiwgY29tbWl0X3RpbWUKKyAgICAgICAgICAgIEZST00gY29tbWl0cywgYnVpbGRfY29t
bWl0cywgYnVpbGRfcmVxdWVzdHMsIGFuYWx5c2lzX3Rlc3RfZ3JvdXBzCisgICAgICAgICAgICBX
SEVSRSBjb21taXRfaWQgPSBidWlsZF9jb21taXQgQU5EIGNvbW1pdF9idWlsZCA9IHJlcXVlc3Rf
YnVpbGQKKyAgICAgICAgICAgICAgICBBTkQgcmVxdWVzdF9ncm91cCA9IHRlc3Rncm91cF9pZCBB
TkQgdGVzdGdyb3VwX3Rhc2sgPSAkMScsIGFycmF5KCR0aGlzLT50YXNrX2lkKSk7CisgICAgICAg
IHdoaWxlICgkcm93ID0gJHRoaXMtPmRiLT5mZXRjaF9uZXh0X3JvdygkcXVlcnkpKSB7CisgICAg
ICAgICAgICAkY29tbWl0X3RpbWUgPSBEYXRhYmFzZTo6dG9fanNfdGltZSgkcm93Wydjb21taXRf
dGltZSddKTsKKyAgICAgICAgICAgIGFycmF5X3B1c2goYXJyYXlfZW5zdXJlX2l0ZW1faGFzX2Fy
cmF5KCR0aGlzLT5idWlsZF90b19jb21taXRzLCAkcm93Wydjb21taXRfYnVpbGQnXSksCisgICAg
ICAgICAgICAgICAgYXJyYXkoJHJvd1snY29tbWl0X3JlcG9zaXRvcnknXSwgJHJvd1snY29tbWl0
X3JldmlzaW9uJ10sICRjb21taXRfdGltZSkpOworICAgICAgICB9CisgICAgfQorCisgICAgZnVu
Y3Rpb24gZm9ybWF0X21lYXN1cmVtZW50KCRyb3cpCisgICAgeworICAgICAgICAkYnVpbGRfaWQg
PSAkcm93WydidWlsZF9pZCddOworICAgICAgICByZXR1cm4gYXJyYXkoCisgICAgICAgICAgICBp
bnR2YWwoJHJvd1sncnVuX2lkJ10pLAorICAgICAgICAgICAgZmxvYXR2YWwoJHJvd1sncnVuX21l
YW5fY2FjaGUnXSksCisgICAgICAgICAgICBpbnR2YWwoJHJvd1sncnVuX2l0ZXJhdGlvbl9jb3Vu
dF9jYWNoZSddKSwKKyAgICAgICAgICAgIGZsb2F0dmFsKCRyb3dbJ3J1bl9zdW1fY2FjaGUnXSks
CisgICAgICAgICAgICBmbG9hdHZhbCgkcm93WydydW5fc3F1YXJlX3N1bV9jYWNoZSddKSwKKyAg
ICAgICAgICAgICR0aGlzLT5idWlsZF90b19jb21taXRzWyRidWlsZF9pZF0sCisgICAgICAgICAg
ICBpbnR2YWwoJGJ1aWxkX2lkKSwKKyAgICAgICAgICAgIERhdGFiYXNlOjp0b19qc190aW1lKCRy
b3dbJ2J1aWxkX3RpbWUnXSksCisgICAgICAgICAgICAkcm93WydidWlsZF9udW1iZXInXSwKKyAg
ICAgICAgICAgIGludHZhbCgkcm93WydidWlsZF9idWlsZGVyJ10pLAorICAgICAgICAgICAgaW50
dmFsKCRyb3dbJ2NvbmZpZ19tZXRyaWMnXSksCisgICAgICAgICAgICAkcm93Wydjb25maWdfdHlw
ZSddKTsKKyAgICB9CisKKyAgICBzdGF0aWMgZnVuY3Rpb24gZm9ybWF0X21hcCgpCisgICAgewor
ICAgICAgICByZXR1cm4gYXJyYXkoJ2lkJywgJ21lYW4nLCAnaXRlcmF0aW9uQ291bnQnLCAnc3Vt
JywgJ3NxdWFyZVN1bScsICdyZXZpc2lvbnMnLAorICAgICAgICAgICAgJ2J1aWxkJywgJ2J1aWxk
VGltZScsICdidWlsZE51bWJlcicsICdidWlsZGVyJywgJ21ldHJpYycsICdjb25maWdUeXBlJyk7
CisgICAgfQorfQorCiBtYWluKCk7CiAKID8+CkluZGV4OiBXZWJzaXRlcy9wZXJmLndlYmtpdC5v
cmcvcHVibGljL3YzL2luZGV4Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vic2l0ZXMvcGVyZi53ZWJr
aXQub3JnL3B1YmxpYy92My9pbmRleC5odG1sCShyZXZpc2lvbiAxOTQzNTcpCisrKyBXZWJzaXRl
cy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL2luZGV4Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTQzLDEwICs0MywxMiBAQCBSdW4gdG9vbHMvYnVuZGxlLXYzLXNjcmlwdHMgdG8gc3BlZWQgdXAg
CiAgICAgICAgIDxzY3JpcHQgc3JjPSJpbnN0cnVtZW50YXRpb24uanMiPjwvc2NyaXB0PgogICAg
ICAgICA8c2NyaXB0IHNyYz0icmVtb3RlLmpzIj48L3NjcmlwdD4KIAorICAgICAgICA8c2NyaXB0
IHNyYz0ibW9kZWxzL21lYXN1cmVtZW50LWFkYXB0b3IuanMiPjwvc2NyaXB0PgogICAgICAgICA8
c2NyaXB0IHNyYz0ibW9kZWxzL21lYXN1cmVtZW50LWNsdXN0ZXIuanMiPjwvc2NyaXB0PgogICAg
ICAgICA8c2NyaXB0IHNyYz0ibW9kZWxzL21lYXN1cmVtZW50LXNldC5qcyI+PC9zY3JpcHQ+Ci0g
ICAgICAgIDxzY3JpcHQgc3JjPSJtb2RlbHMvY29tbWl0LWxvZy5qcyI+PC9zY3JpcHQ+CisgICAg
ICAgIDxzY3JpcHQgc3JjPSJtb2RlbHMvYW5hbHlzaXMtcmVzdWx0cy5qcyI+PC9zY3JpcHQ+CiAg
ICAgICAgIDxzY3JpcHQgc3JjPSJtb2RlbHMvZGF0YS1tb2RlbC5qcyI+PC9zY3JpcHQ+CisgICAg
ICAgIDxzY3JpcHQgc3JjPSJtb2RlbHMvY29tbWl0LWxvZy5qcyI+PC9zY3JpcHQ+CiAgICAgICAg
IDxzY3JpcHQgc3JjPSJtb2RlbHMvcGxhdGZvcm0uanMiPjwvc2NyaXB0PgogICAgICAgICA8c2Ny
aXB0IHNyYz0ibW9kZWxzL2J1aWxkZXIuanMiPjwvc2NyaXB0PgogICAgICAgICA8c2NyaXB0IHNy
Yz0ibW9kZWxzL3Rlc3QuanMiPjwvc2NyaXB0PgpAQCAtNTUsNiArNTcsOSBAQCBSdW4gdG9vbHMv
YnVuZGxlLXYzLXNjcmlwdHMgdG8gc3BlZWQgdXAgCiAgICAgICAgIDxzY3JpcHQgc3JjPSJtb2Rl
bHMvYnVnLXRyYWNrZXIuanMiPjwvc2NyaXB0PgogICAgICAgICA8c2NyaXB0IHNyYz0ibW9kZWxz
L2J1Zy5qcyI+PC9zY3JpcHQ+CiAgICAgICAgIDxzY3JpcHQgc3JjPSJtb2RlbHMvYW5hbHlzaXMt
dGFzay5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPSJtb2RlbHMvdGVzdC1ncm91
cC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPSJtb2RlbHMvYnVpbGQtcmVxdWVz
dC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPSJtb2RlbHMvcm9vdC1zZXQuanMi
Pjwvc2NyaXB0PgogCiAgICAgICAgIDxzY3JpcHQgc3JjPSJjb21wb25lbnRzL2Jhc2UuanMiPjwv
c2NyaXB0PgogICAgICAgICA8c2NyaXB0IHNyYz0iY29tcG9uZW50cy9zcGlubmVyLWljb24uanMi
Pjwvc2NyaXB0PgpAQCAtNjUsNiArNzAsMTAgQEAgUnVuIHRvb2xzL2J1bmRsZS12My1zY3JpcHRz
IHRvIHNwZWVkIHVwIAogICAgICAgICA8c2NyaXB0IHNyYz0iY29tcG9uZW50cy9pbnRlcmFjdGl2
ZS10aW1lLXNlcmllcy1jaGFydC5qcyI+PC9zY3JpcHQ+CiAgICAgICAgIDxzY3JpcHQgc3JjPSJj
b21wb25lbnRzL2NoYXJ0LXN0YXR1cy12aWV3LmpzIj48L3NjcmlwdD4KICAgICAgICAgPHNjcmlw
dCBzcmM9ImNvbXBvbmVudHMvcGFuZS1zZWxlY3Rvci5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxz
Y3JpcHQgc3JjPSJjb21wb25lbnRzL2Jhci1ncmFwaC1ncm91cC5qcyI+PC9zY3JpcHQ+CisgICAg
ICAgIDxzY3JpcHQgc3JjPSJjb21wb25lbnRzL3Jlc3VsdHMtdGFibGUuanMiPjwvc2NyaXB0Pgor
ICAgICAgICA8c2NyaXB0IHNyYz0iY29tcG9uZW50cy9hbmFseXNpcy1yZXN1bHRzLXZpZXdlci5q
cyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPSJjb21wb25lbnRzL3Rlc3QtZ3JvdXAt
cmVzdWx0cy10YWJsZS5qcyI+PC9zY3JpcHQ+CiAgICAgICAgIDxzY3JpcHQgc3JjPSJwYWdlcy9w
YWdlLmpzIj48L3NjcmlwdD4KICAgICAgICAgPHNjcmlwdCBzcmM9InBhZ2VzL3BhZ2Utcm91dGVy
LmpzIj48L3NjcmlwdD4KICAgICAgICAgPHNjcmlwdCBzcmM9InBhZ2VzL2hlYWRpbmcuanMiPjwv
c2NyaXB0PgpJbmRleDogV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9jb21wb25l
bnRzL2FuYWx5c2lzLXJlc3VsdHMtdmlld2VyLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYnNpdGVzL3Bl
cmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvY29tcG9uZW50cy9hbmFseXNpcy1yZXN1bHRzLXZpZXdl
ci5qcwkocmV2aXNpb24gMCkKKysrIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMv
Y29tcG9uZW50cy9hbmFseXNpcy1yZXN1bHRzLXZpZXdlci5qcwkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDQ5NCBAQAorCitjbGFzcyBBbmFseXNpc1Jlc3VsdHNWaWV3ZXIgZXh0ZW5kcyBSZXN1
bHRzVGFibGUgeworICAgIGNvbnN0cnVjdG9yKCkKKyAgICB7CisgICAgICAgIHN1cGVyKCdhbmFs
eXNpcy1yZXN1bHRzLXZpZXdlcicpOworICAgICAgICB0aGlzLl9zbWFsbGVySXNCZXR0ZXIgPSBm
YWxzZTsKKyAgICAgICAgdGhpcy5fc3RhcnRQb2ludCA9IG51bGw7CisgICAgICAgIHRoaXMuX2Vu
ZFBvaW50ID0gbnVsbDsKKyAgICAgICAgdGhpcy5fdGVzdEdyb3VwcyA9IG51bGw7CisgICAgICAg
IHRoaXMuX2N1cnJlbnRUZXN0R3JvdXAgPSBudWxsOworICAgICAgICB0aGlzLl9yZW5kZXJlZEN1
cnJlbnRUZXN0R3JvdXAgPSBudWxsOworICAgICAgICB0aGlzLl9zaG91bGRSZW5kZXJUYWJsZSA9
IHRydWU7CisgICAgICAgIHRoaXMuX2FkZGl0aW9uYWxIZWFkaW5nID0gbnVsbDsKKyAgICAgICAg
dGhpcy5fdGVzdEdyb3VwQ2FsbGJhY2sgPSBudWxsOworICAgIH0KKworICAgIHNldFRlc3RHcm91
cENhbGxiYWNrKGNhbGxiYWNrKSB7IHRoaXMuX3Rlc3RHcm91cENhbGxiYWNrID0gY2FsbGJhY2s7
IH0KKworICAgIHNldFNtYWxsZXJJc0JldHRlcihzbWFsbGVySXNCZXR0ZXIpCisgICAgeworICAg
ICAgICB0aGlzLl9zbWFsbGVySXNCZXR0ZXIgPSBzbWFsbGVySXNCZXR0ZXI7CisgICAgICAgIHRo
aXMuX3Nob3VsZFJlbmRlclRhYmxlID0gdHJ1ZTsKKyAgICB9CisKKyAgICBzZXRDdXJyZW50VGVz
dEdyb3VwKHRlc3RHcm91cCkKKyAgICB7CisgICAgICAgIHRoaXMuX2N1cnJlbnRUZXN0R3JvdXAg
PSB0ZXN0R3JvdXA7CisgICAgICAgIHRoaXMucmVuZGVyKCk7CisgICAgfQorCisgICAgc2V0UG9p
bnRzKHN0YXJ0UG9pbnQsIGVuZFBvaW50KQorICAgIHsKKyAgICAgICAgdGhpcy5fc3RhcnRQb2lu
dCA9IHN0YXJ0UG9pbnQ7CisgICAgICAgIHRoaXMuX2VuZFBvaW50ID0gZW5kUG9pbnQ7CisgICAg
ICAgIHRoaXMuX3Nob3VsZFJlbmRlclRhYmxlID0gdHJ1ZTsKKyAgICB9CisKKyAgICBzZXRUZXN0
R3JvdXBzKHRlc3RHcm91cHMpCisgICAgeworICAgICAgICB0aGlzLl90ZXN0R3JvdXBzID0gdGVz
dEdyb3VwczsKKyAgICAgICAgdGhpcy5fc2hvdWxkUmVuZGVyVGFibGUgPSB0cnVlOworICAgIH0K
KworICAgIGRpZFVwZGF0ZVJlc3VsdHMoKQorICAgIHsKKyAgICAgICAgdGhpcy5fc2hvdWxkUmVu
ZGVyVGFibGUgPSB0cnVlOworICAgIH0KKworICAgIHJlbmRlcigpCisgICAgeworICAgICAgICBp
ZiAoIXRoaXMuX3ZhbHVlRm9ybWF0dGVyIHx8ICF0aGlzLl9zdGFydFBvaW50KQorICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgIEluc3RydW1lbnRhdGlvbi5zdGFydE1lYXN1cmluZ1RpbWUo
J0FuYWx5c2lzUmVzdWx0c1ZpZXdlcicsICdyZW5kZXInKTsKKworICAgICAgICBpZiAodGhpcy5f
c2hvdWxkUmVuZGVyVGFibGUpIHsKKyAgICAgICAgICAgIHRoaXMuX3Nob3VsZFJlbmRlclRhYmxl
ID0gZmFsc2U7CisgICAgICAgICAgICB0aGlzLl9yZW5kZXJlZEN1cnJlbnRUZXN0R3JvdXAgPSBu
dWxsOworCisgICAgICAgICAgICBJbnN0cnVtZW50YXRpb24uc3RhcnRNZWFzdXJpbmdUaW1lKCdB
bmFseXNpc1Jlc3VsdHNWaWV3ZXInLCAncmVuZGVyVGFibGUnKTsKKyAgICAgICAgICAgIHN1cGVy
LnJlbmRlcigpOworICAgICAgICAgICAgSW5zdHJ1bWVudGF0aW9uLmVuZE1lYXN1cmluZ1RpbWUo
J0FuYWx5c2lzUmVzdWx0c1ZpZXdlcicsICdyZW5kZXJUYWJsZScpOworICAgICAgICB9CisKKyAg
ICAgICAgaWYgKHRoaXMuX2N1cnJlbnRUZXN0R3JvdXAgIT0gdGhpcy5fcmVuZGVyZWRDdXJyZW50
VGVzdEdyb3VwKSB7CisgICAgICAgICAgICBpZiAodGhpcy5fcmVuZGVyZWRDdXJyZW50VGVzdEdy
b3VwKSB7CisgICAgICAgICAgICAgICAgdmFyIGNsYXNzTmFtZSA9IHRoaXMuX2NsYXNzRm9yVGVz
dEdyb3VwKHRoaXMuX3JlbmRlcmVkQ3VycmVudFRlc3RHcm91cCk7CisgICAgICAgICAgICAgICAg
dmFyIGVsZW1lbnQgPSB0aGlzLmNvbnRlbnQoKS5xdWVyeVNlbGVjdG9yKCcuJyArIGNsYXNzTmFt
ZSk7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQpCisgICAgICAgICAgICAgICAgICAgIGVs
ZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgnc2VsZWN0ZWQnKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGlmICh0aGlzLl9jdXJyZW50VGVzdEdyb3VwKSB7CisgICAgICAgICAgICAgICAgdmFy
IGNsYXNzTmFtZSA9IHRoaXMuX2NsYXNzRm9yVGVzdEdyb3VwKHRoaXMuX2N1cnJlbnRUZXN0R3Jv
dXApOworICAgICAgICAgICAgICAgIHZhciBlbGVtZW50ID0gdGhpcy5jb250ZW50KCkucXVlcnlT
ZWxlY3RvcignLicgKyBjbGFzc05hbWUpOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50KQor
ICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmNsYXNzTGlzdC5hZGQoJ3NlbGVjdGVkJyk7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICB0aGlzLl9yZW5kZXJlZEN1cnJlbnRUZXN0R3JvdXAg
PSB0aGlzLl9jdXJyZW50VGVzdEdyb3VwOworICAgICAgICB9CisKKyAgICAgICAgSW5zdHJ1bWVu
dGF0aW9uLmVuZE1lYXN1cmluZ1RpbWUoJ0FuYWx5c2lzUmVzdWx0c1ZpZXdlcicsICdyZW5kZXIn
KTsKKyAgICB9CisKKyAgICBoZWFkaW5nKCkgeyByZXR1cm4gW0NvbXBvbmVudEJhc2UuY3JlYXRl
RWxlbWVudCgndGgnLCAnUG9pbnQnKV07IH0KKyAgICBhZGRpdGlvbmFsSGVhZGluZygpIHsgcmV0
dXJuIHRoaXMuX2FkZGl0aW9uYWxIZWFkaW5nOyB9CisKKyAgICBidWlsZFJvd0dyb3VwcygpCisg
ICAgeworICAgICAgICBJbnN0cnVtZW50YXRpb24uc3RhcnRNZWFzdXJpbmdUaW1lKCdBbmFseXNp
c1Jlc3VsdHNWaWV3ZXInLCAnYnVpbGRSb3dHcm91cHMnKTsKKworICAgICAgICB2YXIgdGVzdEdy
b3VwcyA9IHRoaXMuX3Rlc3RHcm91cHMgfHwgW107CisgICAgICAgIHZhciByb290U2V0c0luVGVz
dEdyb3VwcyA9IHRoaXMuX2NvbGxlY3RSb290U2V0c0luVGVzdEdyb3Vwcyh0ZXN0R3JvdXBzKTsK
KworICAgICAgICB2YXIgcm93VG9NYXRjaGluZ1Jvb3RTZXRzID0gbmV3IE1hcDsKKyAgICAgICAg
dmFyIHJvd0xpc3QgPSB0aGlzLl9idWlsZFJvd3NGb3JQb2ludHNBbmRUZXN0R3JvdXBzKHJvb3RT
ZXRzSW5UZXN0R3JvdXBzLCByb3dUb01hdGNoaW5nUm9vdFNldHMpOworCisgICAgICAgIHZhciB0
ZXN0R3JvdXBMYXlvdXRNYXAgPSBuZXcgTWFwOworICAgICAgICB2YXIgc2VsZiA9IHRoaXM7Cisg
ICAgICAgIHJvd0xpc3QuZm9yRWFjaChmdW5jdGlvbiAocm93LCByb3dJbmRleCkgeworICAgICAg
ICAgICAgdmFyIG1hdGNoaW5nUm9vdFNldHMgPSByb3dUb01hdGNoaW5nUm9vdFNldHMuZ2V0KHJv
dyk7CisgICAgICAgICAgICBmb3IgKHZhciBlbnRyeSBvZiBtYXRjaGluZ1Jvb3RTZXRzKSB7Cisg
ICAgICAgICAgICAgICAgdmFyIHRlc3RHcm91cCA9IGVudHJ5LnRlc3RHcm91cCgpOworCisgICAg
ICAgICAgICAgICAgdmFyIGJsb2NrID0gdGVzdEdyb3VwTGF5b3V0TWFwLmdldCh0ZXN0R3JvdXAp
OworICAgICAgICAgICAgICAgIGlmICghYmxvY2spIHsKKyAgICAgICAgICAgICAgICAgICAgYmxv
Y2sgPSBuZXcgQW5hbHlzaXNSZXN1bHRzVmlld2VyLlRlc3RHcm91cFN0YWNraW5nQmxvY2soCisg
ICAgICAgICAgICAgICAgICAgICAgICB0ZXN0R3JvdXAsIHNlbGYuX3NtYWxsZXJJc0JldHRlciwg
c2VsZi5fY2xhc3NGb3JUZXN0R3JvdXAodGVzdEdyb3VwKSwgc2VsZi5fb3BlblN0YWNraW5nQmxv
Y2suYmluZChzZWxmLCB0ZXN0R3JvdXApKTsKKyAgICAgICAgICAgICAgICAgICAgdGVzdEdyb3Vw
TGF5b3V0TWFwLnNldCh0ZXN0R3JvdXAsIGJsb2NrKTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgYmxvY2suYWRkUm93SW5kZXgoZW50cnksIHJvd0luZGV4KTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfSk7CisKKyAgICAgICAgdmFyIGdyaWQgPSBuZXcgQW5hbHlzaXNSZXN1
bHRzVmlld2VyLlRlc3RHcm91cFN0YWNraW5nR3JpZChyb3dMaXN0Lmxlbmd0aCk7CisgICAgICAg
IGZvciAodmFyIHRlc3RHcm91cCBvZiB0ZXN0R3JvdXBzKSB7CisgICAgICAgICAgICB2YXIgYmxv
Y2sgPSB0ZXN0R3JvdXBMYXlvdXRNYXAuZ2V0KHRlc3RHcm91cCk7CisgICAgICAgICAgICBpZiAo
YmxvY2spCisgICAgICAgICAgICAgICAgZ3JpZC5pbnNlcnRCbG9ja1RvQ29sdW1uKGJsb2NrKTsK
KyAgICAgICAgfQorCisgICAgICAgIGdyaWQubGF5b3V0KCk7CisgICAgICAgIGZvciAodmFyIHJv
d0luZGV4ID0gMDsgcm93SW5kZXggPCByb3dMaXN0Lmxlbmd0aDsgcm93SW5kZXgrKykKKyAgICAg
ICAgICAgIHJvd0xpc3Rbcm93SW5kZXhdLnNldEFkZGl0aW9uYWxDb2x1bW5zKGdyaWQuY3JlYXRl
Q2VsbHNGb3JSb3cocm93SW5kZXgpKTsKKworICAgICAgICB0aGlzLl9hZGRpdGlvbmFsSGVhZGlu
ZyA9IGdyaWQuX2NvbHVtbnMgPyBDb21wb25lbnRCYXNlLmNyZWF0ZUVsZW1lbnQoJ3RkJywge2Nv
bHNwYW46IGdyaWQuX2NvbHVtbnMubGVuZ3RoICsgMSwgY2xhc3M6ICdzdGFja2luZy1ibG9jayd9
KSA6IFtdOworCisgICAgICAgIEluc3RydW1lbnRhdGlvbi5lbmRNZWFzdXJpbmdUaW1lKCdBbmFs
eXNpc1Jlc3VsdHNWaWV3ZXInLCAnYnVpbGRSb3dHcm91cHMnKTsKKworICAgICAgICByZXR1cm4g
W3tyb3dzOiByb3dMaXN0fV07CisgICAgfQorCisgICAgX2NvbGxlY3RSb290U2V0c0luVGVzdEdy
b3Vwcyh0ZXN0R3JvdXBzKQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLl90ZXN0R3JvdXBzKQor
ICAgICAgICAgICAgcmV0dXJuIFtdOworCisgICAgICAgIHZhciByb290U2V0c0luVGVzdEdyb3Vw
cyA9IFtdOworICAgICAgICBmb3IgKHZhciBncm91cCBvZiB0aGlzLl90ZXN0R3JvdXBzKSB7Cisg
ICAgICAgICAgICB2YXIgc29ydGVkU2V0cyA9IGdyb3VwLnJlcXVlc3RlZFJvb3RTZXRzKCk7Cisg
ICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNvcnRlZFNldHMubGVuZ3RoOyBpKyspCisg
ICAgICAgICAgICAgICAgcm9vdFNldHNJblRlc3RHcm91cHMucHVzaChuZXcgQW5hbHlzaXNSZXN1
bHRzVmlld2VyLlJvb3RTZXRJblRlc3RHcm91cChncm91cCwgc29ydGVkU2V0c1tpXSkpOworICAg
ICAgICB9CisKKyAgICAgICAgcmV0dXJuIHJvb3RTZXRzSW5UZXN0R3JvdXBzOworICAgIH0KKwor
ICAgIF9idWlsZFJvd3NGb3JQb2ludHNBbmRUZXN0R3JvdXBzKHJvb3RTZXRzSW5UZXN0R3JvdXBz
LCByb3dUb01hdGNoaW5nUm9vdFNldHMpCisgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydCh0
aGlzLl9zdGFydFBvaW50LnNlcmllcyA9PSB0aGlzLl9lbmRQb2ludC5zZXJpZXMpOworICAgICAg
ICB2YXIgcm93TGlzdCA9IFtdOworICAgICAgICB2YXIgcG9pbnRBZnRlckVuZCA9IHRoaXMuX2Vu
ZFBvaW50LnNlcmllcy5uZXh0UG9pbnQodGhpcy5fZW5kUG9pbnQpOworICAgICAgICB2YXIgcm9v
dFNldHNXaXRoUG9pbnRzID0gbmV3IFNldDsKKyAgICAgICAgdmFyIHBvaW50SW5kZXggPSAwOwor
ICAgICAgICBmb3IgKHZhciBwb2ludCA9IHRoaXMuX3N0YXJ0UG9pbnQ7IHBvaW50ICYmIHBvaW50
ICE9IHBvaW50QWZ0ZXJFbmQ7IHBvaW50ID0gcG9pbnQuc2VyaWVzLm5leHRQb2ludChwb2ludCks
IHBvaW50SW5kZXgrKykgeworICAgICAgICAgICAgdmFyIHJvb3RTZXRJblBvaW50ID0gcG9pbnQu
cm9vdFNldCgpOworICAgICAgICAgICAgdmFyIG1hdGNoaW5nUm9vdFNldHMgPSBbXTsKKyAgICAg
ICAgICAgIGZvciAodmFyIGVudHJ5IG9mIHJvb3RTZXRzSW5UZXN0R3JvdXBzKSB7CisgICAgICAg
ICAgICAgICAgaWYgKHJvb3RTZXRJblBvaW50LmVxdWFscyhlbnRyeS5yb290U2V0KCkpKSB7Cisg
ICAgICAgICAgICAgICAgICAgIG1hdGNoaW5nUm9vdFNldHMucHVzaChlbnRyeSk7CisgICAgICAg
ICAgICAgICAgICAgIHJvb3RTZXRzV2l0aFBvaW50cy5hZGQoZW50cnkpOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCFtYXRjaGluZ1Jvb3RTZXRz
Lmxlbmd0aCAmJiBwb2ludCAhPSB0aGlzLl9zdGFydFBvaW50ICYmIHBvaW50ICE9IHRoaXMuX2Vu
ZFBvaW50KQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICB2YXIgcm93
ID0gbmV3IFJlc3VsdHNUYWJsZVJvdyhwb2ludEluZGV4LnRvU3RyaW5nKCksIHJvb3RTZXRJblBv
aW50KTsKKyAgICAgICAgICAgIHJvdy5zZXRSZXN1bHQocG9pbnQpOworCisgICAgICAgICAgICBy
b3dUb01hdGNoaW5nUm9vdFNldHMuc2V0KHJvdywgbWF0Y2hpbmdSb290U2V0cyk7CisgICAgICAg
ICAgICByb3dMaXN0LnB1c2gocm93KTsKKyAgICAgICAgfQorCisgICAgICAgIHJvb3RTZXRzSW5U
ZXN0R3JvdXBzLmZvckVhY2goZnVuY3Rpb24gKGVudHJ5KSB7CisgICAgICAgICAgICBpZiAocm9v
dFNldHNXaXRoUG9pbnRzLmhhcyhlbnRyeSkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJvd0xpc3QubGVuZ3RoOyBpKyspIHsKKyAg
ICAgICAgICAgICAgICB2YXIgcm93ID0gcm93TGlzdFtpXTsKKyAgICAgICAgICAgICAgICBpZiAo
cm93LnJvb3RTZXQoKS5lcXVhbHMoZW50cnkucm9vdFNldCgpKSkgeworICAgICAgICAgICAgICAg
ICAgICByb3dUb01hdGNoaW5nUm9vdFNldHMuZ2V0KHJvdykucHVzaChlbnRyeSk7CisgICAgICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIHZhciBncm91cFRpbWUgPSBlbnRyeS5yb290U2V0KCkubGF0ZXN0Q29tbWl0
VGltZSgpOworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByb3dMaXN0Lmxlbmd0aDsg
aSsrKSB7CisgICAgICAgICAgICAgICAgdmFyIHJvd1RpbWUgPSByb3dMaXN0W2ldLnJvb3RTZXQo
KS5sYXRlc3RDb21taXRUaW1lKCk7CisgICAgICAgICAgICAgICAgaWYgKHJvd1RpbWUgPiBncm91
cFRpbWUpIHsKKyAgICAgICAgICAgICAgICAgICAgdmFyIG5ld1JvdyA9IG5ldyBSZXN1bHRzVGFi
bGVSb3cobnVsbCwgZW50cnkucm9vdFNldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgcm93VG9N
YXRjaGluZ1Jvb3RTZXRzLnNldChuZXdSb3csIFtlbnRyeV0pOworICAgICAgICAgICAgICAgICAg
ICByb3dMaXN0LnNwbGljZShpLCAwLCBuZXdSb3cpOworICAgICAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKHJvd1RpbWUgPT0g
Z3JvdXBUaW1lKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIE1pc3Npbmcgc29tZSBjb21taXRz
LiBEbyBhcyBiZXN0IGFzIHdlIGNhbiB0byBhdm9pZCBnb2luZyBiYWNrd2FyZHMgaW4gdGltZS4K
KyAgICAgICAgICAgICAgICAgICAgdmFyIHJlcG9zaXRvcmllc0luTmV3Um93ID0gZW50cnkucm9v
dFNldCgpLnJlcG9zaXRvcmllcygpOworICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBqID0g
aTsgaiA8IHJvd0xpc3QubGVuZ3RoOyBqKyspIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZv
ciAodmFyIHJlcG9zaXRvcnkgb2YgcmVwb3NpdG9yaWVzSW5OZXdSb3cpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB2YXIgbmV3Q29tbWl0ID0gZW50cnkucm9vdFNldCgpLmNvbW1pdEZv
clJlcG9zaXRvcnkocmVwb3NpdG9yeSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFy
IHJvd0NvbW1pdCA9IHJvd0xpc3Rbal0ucm9vdFNldCgpLmNvbW1pdEZvclJlcG9zaXRvcnkocmVw
b3NpdG9yeSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFyb3dDb21taXQgfHwg
bmV3Q29tbWl0LnRpbWUoKSA8IHJvd0NvbW1pdC50aW1lKCkpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdmFyIHJvdyA9IG5ldyBSZXN1bHRzVGFibGVSb3cobnVsbCwgZW50cnku
cm9vdFNldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93VG9NYXRjaGlu
Z1Jvb3RTZXRzLnNldChyb3csIFtlbnRyeV0pOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByb3dMaXN0LnNwbGljZShqLCAwLCByb3cpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgbmV3Um93ID0gbmV3IFJlc3VsdHNU
YWJsZVJvdyhudWxsLCBlbnRyeS5yb290U2V0KCkpOworICAgICAgICAgICAgcm93VG9NYXRjaGlu
Z1Jvb3RTZXRzLnNldChuZXdSb3csIFtlbnRyeV0pOworICAgICAgICAgICAgcm93TGlzdC5wdXNo
KG5ld1Jvdyk7CisgICAgICAgIH0pOworCisgICAgICAgIHJldHVybiByb3dMaXN0OworICAgIH0K
KworICAgIF9jbGFzc0ZvclRlc3RHcm91cCh0ZXN0R3JvdXApCisgICAgeworICAgICAgICByZXR1
cm4gJ3N0YWNrZWQtdGVzdC1ncm91cC0nICsgdGVzdEdyb3VwLmlkKCk7CisgICAgfQorCisgICAg
X29wZW5TdGFja2luZ0Jsb2NrKHRlc3RHcm91cCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl90
ZXN0R3JvdXBDYWxsYmFjaykKKyAgICAgICAgICAgIHRoaXMuX3Rlc3RHcm91cENhbGxiYWNrKHRl
c3RHcm91cCk7CisgICAgfQorCisgICAgc3RhdGljIGh0bWxUZW1wbGF0ZSgpCisgICAgeworICAg
ICAgICByZXR1cm4gYDxzZWN0aW9uIGNsYXNzPSJhbmFseXNpcy12aWV3Ij4ke1Jlc3VsdHNUYWJs
ZS5odG1sVGVtcGxhdGUoKX08L3NlY3Rpb24+YDsKKyAgICB9CisKKyAgICBzdGF0aWMgY3NzVGVt
cGxhdGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFJlc3VsdHNUYWJsZS5jc3NUZW1wbGF0ZSgp
ICsgYAorICAgICAgICAgICAgLmFuYWx5c2lzLXZpZXcgLnN0YWNraW5nLWJsb2NrIHsKKyAgICAg
ICAgICAgICAgICBib3JkZXI6IHNvbGlkIDFweCAjZmZmOworICAgICAgICAgICAgICAgIGN1cnNv
cjogcG9pbnRlcjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLmFuYWx5c2lzLXZpZXcg
LnN0YWNraW5nLWJsb2NrIGEgeworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrOworICAg
ICAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKKyAgICAgICAgICAgICAgICBjb2xv
cjogaW5oZXJpdDsKKyAgICAgICAgICAgICAgICBmb250LXNpemU6IDAuOHJlbTsKKyAgICAgICAg
ICAgICAgICBwYWRkaW5nOiAwIDAuMXJlbTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
LmFuYWx5c2lzLXZpZXcgLnN0YWNraW5nLWJsb2NrOm5vdCguZmFpbGVkKSB7CisgICAgICAgICAg
ICAgICAgY29sb3I6IHdoaXRlOworICAgICAgICAgICAgICAgIG9wYWNpdHk6IDE7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIC5hbmFseXNpcy12aWV3IC5zdGFja2luZy1ibG9jay5zZWxl
Y3RlZCB7CisKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLmFuYWx5c2lzLXZpZXcgLnN0
YWNraW5nLWJsb2NrLmZhaWxlZCB7CisgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYSgx
MjgsIDUxLCAxMjgsIDAuNCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAuYW5hbHlzaXMt
dmlldyAuc3RhY2tpbmctYmxvY2suZmFpbGVkOmhvdmVyIHsKKyAgICAgICAgICAgICAgICBiYWNr
Z3JvdW5kOiByZ2JhKDEyOCwgNTEsIDEyOCwgMC42KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIC5hbmFseXNpcy12aWV3IC5zdGFja2luZy1ibG9jay5mYWlsZWQuc2VsZWN0ZWQgeworICAg
ICAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMTI4LCA1MSwgMTI4LCAxKTsKKyAgICAgICAg
ICAgICAgICBjb2xvcjogd2hpdGU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC5hbmFs
eXNpcy12aWV3IC5zdGFja2luZy1ibG9jay51bmNoYW5nZWQgeworICAgICAgICAgICAgICAgIGJh
Y2tncm91bmQ6IHJnYmEoMTI4LCAxMjgsIDEyOCwgMC4zKTsKKyAgICAgICAgICAgICAgICBjb2xv
cjogYmxhY2s7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAuYW5hbHlzaXMtdmlldyAuc3Rh
Y2tpbmctYmxvY2sudW5jaGFuZ2VkOmhvdmVyIHsKKyAgICAgICAgICAgICAgICBiYWNrZ3JvdW5k
OiByZ2JhKDEyOCwgMTI4LCAxMjgsIDAuNik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAu
YW5hbHlzaXMtdmlldyAuc3RhY2tpbmctYmxvY2sudW5jaGFuZ2VkLnNlbGVjdGVkIHsKKyAgICAg
ICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDEyOCwgMTI4LCAxMjgsIDEpOworICAgICAgICAg
ICAgICAgIGNvbG9yOiB3aGl0ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLmFuYWx5
c2lzLXZpZXcgLnN0YWNraW5nLWJsb2NrLndvcnNlIHsKKyAgICAgICAgICAgICAgICBiYWNrZ3Jv
dW5kOiByZ2JhKDI1NSwgMTAyLCAxMDIsIDAuNCk7CisgICAgICAgICAgICAgICAgY29sb3I6IGJs
YWNrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLmFuYWx5c2lzLXZpZXcgLnN0YWNraW5n
LWJsb2NrLndvcnNlOmhvdmVyIHsKKyAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1
NSwgMTAyLCAxMDIsIDAuNik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAuYW5hbHlzaXMt
dmlldyAuc3RhY2tpbmctYmxvY2sud29yc2Uuc2VsZWN0ZWQgeworICAgICAgICAgICAgICAgIGJh
Y2tncm91bmQ6IHJnYmEoMjU1LCAxMDIsIDEwMiwgMSk7CisgICAgICAgICAgICAgICAgY29sb3I6
IHdoaXRlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAuYW5hbHlzaXMtdmlldyAuc3Rh
Y2tpbmctYmxvY2suYmV0dGVyIHsKKyAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDEw
MiwgMTAyLCAyNTUsIDAuNCk7CisgICAgICAgICAgICAgICAgY29sb3I6IGJsYWNrOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgLmFuYWx5c2lzLXZpZXcgLnN0YWNraW5nLWJsb2NrLmJldHRl
cjpob3ZlciB7CisgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYSgxMDIsIDEwMiwgMjU1
LCAwLjYpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLmFuYWx5c2lzLXZpZXcgLnN0YWNr
aW5nLWJsb2NrLmJldHRlci5zZWxlY3RlZCB7CisgICAgICAgICAgICAgICAgYmFja2dyb3VuZDog
cmdiYSgxMDIsIDEwMiwgMjU1LCAxKTsKKyAgICAgICAgICAgICAgICBjb2xvcjogd2hpdGU7Cisg
ICAgICAgICAgICB9CisgICAgICAgIGA7CisgICAgfQorfQorCitDb21wb25lbnRCYXNlLmRlZmlu
ZUVsZW1lbnQoJ2FuYWx5c2lzLXJlc3VsdHMtdmlld2VyJywgQW5hbHlzaXNSZXN1bHRzVmlld2Vy
KTsKKworQW5hbHlzaXNSZXN1bHRzVmlld2VyLlJvb3RTZXRJblRlc3RHcm91cCA9IGNsYXNzIHsK
KyAgICBjb25zdHJ1Y3Rvcih0ZXN0R3JvdXAsIHJvb3RTZXQpCisgICAgeworICAgICAgICBjb25z
b2xlLmFzc2VydCh0ZXN0R3JvdXAgaW5zdGFuY2VvZiBUZXN0R3JvdXApOworICAgICAgICBjb25z
b2xlLmFzc2VydChyb290U2V0IGluc3RhbmNlb2YgUm9vdFNldCk7CisgICAgICAgIHRoaXMuX3Rl
c3RHcm91cCA9IHRlc3RHcm91cDsKKyAgICAgICAgdGhpcy5fcm9vdFNldCA9IHJvb3RTZXQ7Cisg
ICAgfQorCisgICAgdGVzdEdyb3VwKCkgeyByZXR1cm4gdGhpcy5fdGVzdEdyb3VwOyB9CisgICAg
cm9vdFNldCgpIHsgcmV0dXJuIHRoaXMuX3Jvb3RTZXQ7IH0KK30KKworQW5hbHlzaXNSZXN1bHRz
Vmlld2VyLlRlc3RHcm91cFN0YWNraW5nQmxvY2sgPSBjbGFzcyB7CisgICAgY29uc3RydWN0b3Io
dGVzdEdyb3VwLCBzbWFsbGVySXNCZXR0ZXIsIGNsYXNzTmFtZSwgY2FsbGJhY2spCisgICAgewor
ICAgICAgICB0aGlzLl90ZXN0R3JvdXAgPSB0ZXN0R3JvdXA7CisgICAgICAgIHRoaXMuX3NtYWxs
ZXJJc0JldHRlciA9IHNtYWxsZXJJc0JldHRlcjsKKyAgICAgICAgdGhpcy5fcm9vdFNldEluZGV4
Um93SW5kZXhNYXAgPSBbXTsKKyAgICAgICAgdGhpcy5fY2xhc3NOYW1lID0gY2xhc3NOYW1lOwor
ICAgICAgICB0aGlzLl9sYWJlbCA9ICctJzsKKyAgICAgICAgdGhpcy5fc3RhdHVzID0gbnVsbDsK
KyAgICAgICAgdGhpcy5fY2FsbGJhY2sgPSBjYWxsYmFjazsKKyAgICB9CisKKyAgICBhZGRSb3dJ
bmRleChyb290U2V0SW5UZXN0R3JvdXAsIHJvd0luZGV4KQorICAgIHsKKyAgICAgICAgY29uc29s
ZS5hc3NlcnQocm9vdFNldEluVGVzdEdyb3VwIGluc3RhbmNlb2YgQW5hbHlzaXNSZXN1bHRzVmll
d2VyLlJvb3RTZXRJblRlc3RHcm91cCk7CisgICAgICAgIHRoaXMuX3Jvb3RTZXRJbmRleFJvd0lu
ZGV4TWFwLnB1c2goe3Jvb3RTZXQ6IHJvb3RTZXRJblRlc3RHcm91cC5yb290U2V0KCksIHJvd0lu
ZGV4OiByb3dJbmRleH0pOworICAgIH0KKworICAgIHRlc3RHcm91cCgpIHsgcmV0dXJuIHRoaXMu
X3Rlc3RHcm91cDsgfQorCisgICAgY3JlYXRlU3RhY2tpbmdDZWxsKCkKKyAgICB7CisgICAgICAg
IHRoaXMuX2NvbXB1dGVUZXN0R3JvdXBTdGF0dXMoKTsKKworICAgICAgICB2YXIgdGl0bGUgPSB0
aGlzLl90ZXN0R3JvdXAubGFiZWwoKTsKKyAgICAgICAgcmV0dXJuIENvbXBvbmVudEJhc2UuY3Jl
YXRlRWxlbWVudCgndGQnLCB7CisgICAgICAgICAgICByb3dzcGFuOiB0aGlzLmVuZFJvd0luZGV4
KCkgLSB0aGlzLnN0YXJ0Um93SW5kZXgoKSArIDEsCisgICAgICAgICAgICB0aXRsZTogdGl0bGUs
CisgICAgICAgICAgICBjbGFzczogJ3N0YWNraW5nLWJsb2NrICcgKyB0aGlzLl9jbGFzc05hbWUg
KyAnICcgKyB0aGlzLl9zdGF0dXMsCisgICAgICAgICAgICBvbmNsaWNrOiB0aGlzLl9jYWxsYmFj
aywKKyAgICAgICAgfSwgQ29tcG9uZW50QmFzZS5jcmVhdGVMaW5rKHRoaXMuX2xhYmVsLCB0aXRs
ZSwgdGhpcy5fY2FsbGJhY2spKTsKKyAgICB9CisKKyAgICBpc0NvbXBsZXRlKCkgeyByZXR1cm4g
dGhpcy5fcm9vdFNldEluZGV4Um93SW5kZXhNYXAubGVuZ3RoID49IDI7IH0KKworICAgIHN0YXJ0
Um93SW5kZXgoKSB7IHJldHVybiB0aGlzLl9yb290U2V0SW5kZXhSb3dJbmRleE1hcFswXS5yb3dJ
bmRleDsgfQorICAgIGVuZFJvd0luZGV4KCkgeyByZXR1cm4gdGhpcy5fcm9vdFNldEluZGV4Um93
SW5kZXhNYXBbdGhpcy5fcm9vdFNldEluZGV4Um93SW5kZXhNYXAubGVuZ3RoIC0gMV0ucm93SW5k
ZXg7IH0KKyAgICBpc1RoaW4oKQorICAgIHsKKyAgICAgICAgdGhpcy5fY29tcHV0ZVRlc3RHcm91
cFN0YXR1cygpOworICAgICAgICByZXR1cm4gdGhpcy5fc3RhdHVzID09ICdmYWlsZWQnOworICAg
IH0KKworICAgIF9jb21wdXRlVGVzdEdyb3VwU3RhdHVzKCkKKyAgICB7CisgICAgICAgIGlmICh0
aGlzLl9zdGF0dXMgfHwgIXRoaXMuaXNDb21wbGV0ZSgpKQorICAgICAgICAgICAgcmV0dXJuOwor
CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX3Jvb3RTZXRJbmRleFJvd0luZGV4TWFwLmxl
bmd0aCA8PSAyKTsgLy8gRklYTUU6IFN1cHBvcnQgaGF2aW5nIG1vcmUgcm9vdCBzZXRzLgorCisg
ICAgICAgIHZhciBiZWZvcmVWYWx1ZXMgPSB0aGlzLl92YWx1ZXNGb3JSb290U2V0KHRoaXMuX3Jv
b3RTZXRJbmRleFJvd0luZGV4TWFwWzBdLnJvb3RTZXQpOworICAgICAgICB2YXIgYWZ0ZXJWYWx1
ZXMgPSB0aGlzLl92YWx1ZXNGb3JSb290U2V0KHRoaXMuX3Jvb3RTZXRJbmRleFJvd0luZGV4TWFw
WzFdLnJvb3RTZXQpOworCisgICAgICAgIHZhciBzdGF0dXMgPSAnZmFpbGVkJzsKKyAgICAgICAg
dmFyIGJlZm9yZU1lYW4gPSBTdGF0aXN0aWNzLnN1bShiZWZvcmVWYWx1ZXMpIC8gYmVmb3JlVmFs
dWVzLmxlbmd0aDsKKyAgICAgICAgdmFyIGFmdGVyTWVhbiA9IFN0YXRpc3RpY3Muc3VtKGFmdGVy
VmFsdWVzKSAvIGFmdGVyVmFsdWVzLmxlbmd0aDsKKyAgICAgICAgaWYgKGJlZm9yZVZhbHVlcy5s
ZW5ndGggJiYgYWZ0ZXJWYWx1ZXMubGVuZ3RoKSB7CisgICAgICAgICAgICB2YXIgZGlmZiA9IGFm
dGVyTWVhbiAtIGJlZm9yZU1lYW47CisgICAgICAgICAgICB0aGlzLl9sYWJlbCA9IChkaWZmIC8g
YmVmb3JlTWVhbiAqIDEwMCkudG9GaXhlZCgyKSArICclJzsKKyAgICAgICAgICAgIHN0YXR1cyA9
ICd1bmNoYW5nZWQnOworICAgICAgICAgICAgaWYgKFN0YXRpc3RpY3MudGVzdFdlbGNoc1QoYmVm
b3JlVmFsdWVzLCBhZnRlclZhbHVlcykpCisgICAgICAgICAgICAgICAgc3RhdHVzID0gZGlmZiA8
IDAgPT0gdGhpcy5fc21hbGxlcklzQmV0dGVyID8gJ2JldHRlcicgOiAnd29yc2UnOworICAgICAg
ICB9CisKKyAgICAgICAgdGhpcy5fc3RhdHVzID0gc3RhdHVzOworICAgIH0KKworICAgIF92YWx1
ZXNGb3JSb290U2V0KHJvb3RTZXQpCisgICAgeworICAgICAgICB2YXIgcmVxdWVzdHMgPSB0aGlz
Ll90ZXN0R3JvdXAucmVxdWVzdHNGb3JSb290U2V0KHJvb3RTZXQpOworICAgICAgICB2YXIgdmFs
dWVzID0gW107CisgICAgICAgIGZvciAodmFyIHJlcXVlc3Qgb2YgcmVxdWVzdHMpIHsKKyAgICAg
ICAgICAgIGlmIChyZXF1ZXN0LnJlc3VsdCgpKQorICAgICAgICAgICAgICAgIHZhbHVlcy5wdXNo
KHJlcXVlc3QucmVzdWx0KCkudmFsdWUpOworICAgICAgICB9CisgICAgICAgIHJldHVybiB2YWx1
ZXM7CisgICAgfQorfQorCitBbmFseXNpc1Jlc3VsdHNWaWV3ZXIuVGVzdEdyb3VwU3RhY2tpbmdH
cmlkID0gY2xhc3MgeworICAgIGNvbnN0cnVjdG9yKHJvd0NvdW50KQorICAgIHsKKyAgICAgICAg
dGhpcy5fYmxvY2tzID0gW107CisgICAgICAgIHRoaXMuX2NvbHVtbnMgPSBudWxsOworICAgICAg
ICB0aGlzLl9yb3dDb3VudCA9IHJvd0NvdW50OworICAgIH0KKworICAgIGluc2VydEJsb2NrVG9D
b2x1bW4obmV3QmxvY2spCisgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydChuZXdCbG9jayBp
bnN0YW5jZW9mIEFuYWx5c2lzUmVzdWx0c1ZpZXdlci5UZXN0R3JvdXBTdGFja2luZ0Jsb2NrKTsK
KyAgICAgICAgZm9yICh2YXIgaSA9IHRoaXMuX2Jsb2Nrcy5sZW5ndGggLSAxOyBpID49IDA7IGkt
LSkgeworICAgICAgICAgICAgdmFyIGN1cnJlbnRCbG9jayA9IHRoaXMuX2Jsb2Nrc1tpXTsKKyAg
ICAgICAgICAgIGlmIChjdXJyZW50QmxvY2suc3RhcnRSb3dJbmRleCgpID09IG5ld0Jsb2NrLnN0
YXJ0Um93SW5kZXgoKQorICAgICAgICAgICAgICAgICYmIGN1cnJlbnRCbG9jay5lbmRSb3dJbmRl
eCgpID09IG5ld0Jsb2NrLmVuZFJvd0luZGV4KCkpIHsKKyAgICAgICAgICAgICAgICB0aGlzLl9i
bG9ja3Muc3BsaWNlKGkgKyAxLCAwLCBuZXdCbG9jayk7CisgICAgICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHRoaXMuX2Jsb2Nrcy5wdXNoKG5l
d0Jsb2NrKTsKKyAgICB9CisKKyAgICBsYXlvdXQoKQorICAgIHsKKyAgICAgICAgdGhpcy5fY29s
dW1ucyA9IFtdOworICAgICAgICBmb3IgKHZhciBibG9jayBvZiB0aGlzLl9ibG9ja3MpCisgICAg
ICAgICAgICB0aGlzLl9sYXlvdXRCbG9jayhibG9jayk7CisgICAgfQorCisgICAgX2xheW91dEJs
b2NrKG5ld0Jsb2NrKQorICAgIHsKKyAgICAgICAgZm9yICh2YXIgY29sdW1uSW5kZXggPSAwOyBj
b2x1bW5JbmRleCA8IHRoaXMuX2NvbHVtbnMubGVuZ3RoOyBjb2x1bW5JbmRleCsrKSB7CisgICAg
ICAgICAgICB2YXIgZXhpc3RpbmdDb2x1bW4gPSB0aGlzLl9jb2x1bW5zW2NvbHVtbkluZGV4XTsK
KyAgICAgICAgICAgIGlmIChuZXdCbG9jay5pc1RoaW4oKSAhPSBleGlzdGluZ0NvbHVtblswXS5p
c1RoaW4oKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBleGlzdGluZ0NvbHVtbi5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAg
ICAgIHZhciBjdXJyZW50QmxvY2sgPSBleGlzdGluZ0NvbHVtbltpXTsKKyAgICAgICAgICAgICAg
ICBpZiAoKCFpIHx8IGV4aXN0aW5nQ29sdW1uW2kgLSAxXS5lbmRSb3dJbmRleCgpIDwgbmV3Qmxv
Y2suc3RhcnRSb3dJbmRleCgpKQorICAgICAgICAgICAgICAgICAgICAmJiBuZXdCbG9jay5lbmRS
b3dJbmRleCgpIDwgY3VycmVudEJsb2NrLnN0YXJ0Um93SW5kZXgoKSkgeworICAgICAgICAgICAg
ICAgICAgICBleGlzdGluZ0NvbHVtbi5zcGxpY2UoaSwgMCwgbmV3QmxvY2spOworICAgICAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICB2YXIgbGFzdEJsb2NrID0gZXhpc3RpbmdDb2x1bW5bZXhpc3RpbmdDb2x1bW4u
bGVuZ3RoIC0gMV07CisgICAgICAgICAgICBpZiAobGFzdEJsb2NrLmVuZFJvd0luZGV4KCkgPCBu
ZXdCbG9jay5zdGFydFJvd0luZGV4KCkpIHsKKyAgICAgICAgICAgICAgICBleGlzdGluZ0NvbHVt
bi5wdXNoKG5ld0Jsb2NrKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgICAgdGhpcy5fY29sdW1ucy5wdXNoKFtuZXdCbG9ja10pOworICAg
IH0KKworICAgIGNyZWF0ZUNlbGxzRm9yUm93KHJvd0luZGV4KQorICAgIHsKKyAgICAgICAgdmFy
IGVsZW1lbnQgPSBDb21wb25lbnRCYXNlLmNyZWF0ZUVsZW1lbnQ7CisgICAgICAgIHZhciBsaW5r
ID0gQ29tcG9uZW50QmFzZS5jcmVhdGVMaW5rOworCisgICAgICAgIHZhciBjZWxscyA9IFtlbGVt
ZW50KCd0ZCcsIHtjbGFzczogJ3N0YWNraW5nLWJsb2NrJ30sICcnKV07CisgICAgICAgIGZvciAo
dmFyIGNvbHVtbkluZGV4ID0gMDsgY29sdW1uSW5kZXggPCB0aGlzLl9jb2x1bW5zLmxlbmd0aDsg
Y29sdW1uSW5kZXgrKykgeworICAgICAgICAgICAgdmFyIGJsb2Nrc0luQ29sdW1uID0gdGhpcy5f
Y29sdW1uc1tjb2x1bW5JbmRleF07CisgICAgICAgICAgICBpZiAoIXJvd0luZGV4ICYmIGJsb2Nr
c0luQ29sdW1uWzBdLnN0YXJ0Um93SW5kZXgoKSkgeworICAgICAgICAgICAgICAgIGNlbGxzLnB1
c2godGhpcy5fY3JlYXRlRW1wdHlTdGFja2luZ0NlbGwoYmxvY2tzSW5Db2x1bW5bMF0uc3RhcnRS
b3dJbmRleCgpKSk7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJsb2Nrc0luQ29sdW1uLmxlbmd0aDsgaSsr
KSB7CisgICAgICAgICAgICAgICAgdmFyIGJsb2NrID0gYmxvY2tzSW5Db2x1bW5baV07CisgICAg
ICAgICAgICAgICAgaWYgKGJsb2NrLnN0YXJ0Um93SW5kZXgoKSA9PSByb3dJbmRleCkgeworICAg
ICAgICAgICAgICAgICAgICBjZWxscy5wdXNoKGJsb2NrLmNyZWF0ZVN0YWNraW5nQ2VsbCgpKTsK
KyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIHZhciByb3dDb3VudCA9IGkgKyAxIDwgYmxvY2tzSW5Db2x1bW4ubGVuZ3RoID8gYmxv
Y2tzSW5Db2x1bW5baSArIDFdLnN0YXJ0Um93SW5kZXgoKSA6IHRoaXMuX3Jvd0NvdW50OworICAg
ICAgICAgICAgICAgIHZhciByZW1haW5pbmdSb3dzID0gcm93Q291bnQgLSBibG9jay5lbmRSb3dJ
bmRleCgpIC0gMTsKKyAgICAgICAgICAgICAgICBpZiAocm93SW5kZXggPT0gYmxvY2suZW5kUm93
SW5kZXgoKSArIDEgJiYgcm93SW5kZXggPCByb3dDb3VudCkKKyAgICAgICAgICAgICAgICAgICAg
Y2VsbHMucHVzaCh0aGlzLl9jcmVhdGVFbXB0eVN0YWNraW5nQ2VsbChyZW1haW5pbmdSb3dzKSk7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gY2VsbHM7CisgICAg
fQorCisgICAgX2NyZWF0ZUVtcHR5U3RhY2tpbmdDZWxsKHJvd3NwYW4sIGNvbnRlbnQpCisgICAg
eworICAgICAgICByZXR1cm4gQ29tcG9uZW50QmFzZS5jcmVhdGVFbGVtZW50KCd0ZCcsIHtyb3dz
cGFuOiByb3dzcGFuLCBjbGFzczogJ3N0YWNraW5nLWJsb2NrJ30sICcnKTsKKyAgICB9CisKK30K
SW5kZXg6IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvY29tcG9uZW50cy9iYXIt
Z3JhcGgtZ3JvdXAuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1
YmxpYy92My9jb21wb25lbnRzL2Jhci1ncmFwaC1ncm91cC5qcwkocmV2aXNpb24gMCkKKysrIFdl
YnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvY29tcG9uZW50cy9iYXItZ3JhcGgtZ3Jv
dXAuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMDQgQEAKKworY2xhc3MgQmFyR3JhcGhH
cm91cCB7CisgICAgY29uc3RydWN0b3IoZm9ybWF0dGVyKQorICAgIHsKKyAgICAgICAgdGhpcy5f
YmFycyA9IFtdOworICAgICAgICB0aGlzLl9mb3JtYXR0ZXIgPSBmb3JtYXR0ZXI7CisgICAgfQor
CisgICAgYWRkQmFyKHZhbHVlLCBpbnRlcnZhbCkKKyAgICB7CisgICAgICAgIHZhciBuZXdCYXIg
PSBuZXcgU2luZ2xlQmFyR3JhcGgodGhpcyk7CisgICAgICAgIHRoaXMuX2JhcnMucHVzaCh7YmFy
OiBuZXdCYXIsIHZhbHVlOiB2YWx1ZSwgaW50ZXJ2YWw6IGludGVydmFsfSk7CisgICAgICAgIHJl
dHVybiBuZXdCYXI7CisgICAgfQorCisgICAgcmVuZGVyKCkKKyAgICB7CisgICAgICAgIEluc3Ry
dW1lbnRhdGlvbi5zdGFydE1lYXN1cmluZ1RpbWUoJ0JhckdyYXBoR3JvdXAnLCAncmVuZGVyJyk7
CisKKyAgICAgICAgdmFyIG1pbiA9IEluZmluaXR5OworICAgICAgICB2YXIgbWF4ID0gLUluZmlu
aXR5OworICAgICAgICBmb3IgKHZhciBlbnRyeSBvZiB0aGlzLl9iYXJzKSB7CisgICAgICAgICAg
ICBtaW4gPSBNYXRoLm1pbihtaW4sIGVudHJ5LmludGVydmFsID8gZW50cnkuaW50ZXJ2YWxbMF0g
OiBlbnRyeS52YWx1ZSk7CisgICAgICAgICAgICBtYXggPSBNYXRoLm1heChtYXgsIGVudHJ5Lmlu
dGVydmFsID8gZW50cnkuaW50ZXJ2YWxbMV0gOiBlbnRyeS52YWx1ZSk7CisgICAgICAgIH0KKwor
ICAgICAgICBmb3IgKHZhciBlbnRyeSBvZiB0aGlzLl9iYXJzKSB7CisgICAgICAgICAgICB2YXIg
dmFsdWUgPSBlbnRyeS52YWx1ZTsKKyAgICAgICAgICAgIHZhciBmb3JtYXR0ZWRWYWx1ZSA9IHRo
aXMuX2Zvcm1hdHRlcih2YWx1ZSk7CisgICAgICAgICAgICBpZiAoZW50cnkuaW50ZXJ2YWwpCisg
ICAgICAgICAgICAgICAgZm9ybWF0dGVkVmFsdWUgKz0gJyBcdTAwQjEnICsgKCh2YWx1ZSAtIGVu
dHJ5LmludGVydmFsWzBdKSAqIDEwMCAvIHZhbHVlKS50b0ZpeGVkKDIpICsgJyUnOworCisgICAg
ICAgICAgICB2YXIgZGlmZiA9IChtYXggLSBtaW4pOworICAgICAgICAgICAgdmFyIHJhbmdlID0g
ZGlmZiAqIDEuMjsKKyAgICAgICAgICAgIHZhciBzdGFydCA9IG1pbiAtIChyYW5nZSAtIGRpZmYp
IC8gMjsKKworICAgICAgICAgICAgZW50cnkuYmFyLnVwZGF0ZSgodmFsdWUgLSBzdGFydCkgLyBy
YW5nZSwgZm9ybWF0dGVkVmFsdWUpOworICAgICAgICAgICAgZW50cnkuYmFyLnJlbmRlcigpOwor
ICAgICAgICB9CisKKyAgICAgICAgSW5zdHJ1bWVudGF0aW9uLmVuZE1lYXN1cmluZ1RpbWUoJ0Jh
ckdyYXBoR3JvdXAnLCAncmVuZGVyJyk7CisgICAgfQorfQorCitjbGFzcyBTaW5nbGVCYXJHcmFw
aCBleHRlbmRzIENvbXBvbmVudEJhc2UgeworCisgICAgY29uc3RydWN0b3IoZ3JvdXApCisgICAg
eworICAgICAgICBjb25zb2xlLmFzc2VydChncm91cCBpbnN0YW5jZW9mIEJhckdyYXBoR3JvdXAp
OworICAgICAgICBzdXBlcignc2luZ2xlLWJhci1ncmFwaCcpOworICAgICAgICB0aGlzLl9wZXJj
ZW50YWdlID0gMDsKKyAgICAgICAgdGhpcy5fbGFiZWwgPSBudWxsOworICAgIH0KKworICAgIHVw
ZGF0ZShwZXJjZW50YWdlLCBsYWJlbCkKKyAgICB7CisgICAgICAgIHRoaXMuX3BlcmNlbnRhZ2Ug
PSBwZXJjZW50YWdlOworICAgICAgICB0aGlzLl9sYWJlbCA9IGxhYmVsOworICAgIH0KKworICAg
IHJlbmRlcigpCisgICAgeworICAgICAgICB0aGlzLmNvbnRlbnQoKS5xdWVyeVNlbGVjdG9yKCcu
cGVyY2VudGFnZScpLnN0eWxlLndpZHRoID0gYGNhbGMoJHt0aGlzLl9wZXJjZW50YWdlICogMTAw
fSUgLSAycHgpYDsKKyAgICAgICAgdGhpcy5jb250ZW50KCkucXVlcnlTZWxlY3RvcignLmxhYmVs
JykudGV4dENvbnRlbnQgPSB0aGlzLl9sYWJlbDsKKyAgICB9CisKKyAgICBzdGF0aWMgaHRtbFRl
bXBsYXRlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBgPGRpdiBjbGFzcz0ic2luZ2xlLWJhci1n
cmFwaCI+PGRpdiBjbGFzcz0icGVyY2VudGFnZSI+PC9kaXY+PGRpdiBjbGFzcz0ibGFiZWwiPi08
L2Rpdj48L2Rpdj5gOworICAgIH0KKworICAgIHN0YXRpYyBjc3NUZW1wbGF0ZSgpCisgICAgewor
ICAgICAgICByZXR1cm4gYAorICAgICAgICAgICAgLnNpbmdsZS1iYXItZ3JhcGggeworICAgICAg
ICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBi
bG9jazsKKyAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAjZWVlOworICAgICAgICAgICAgICAg
IGhlaWdodDogMTAwJTsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuOworICAgICAg
ICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKKyAgICAgICAgICAgICAgICBjb2xvcjog
YmxhY2s7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAuc2luZ2xlLWJhci1ncmFwaCAucGVy
Y2VudGFnZSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAgICAgICAg
ICAgICAgIHRvcDogMXB4OworICAgICAgICAgICAgICAgIGxlZnQ6IDFweDsKKyAgICAgICAgICAg
ICAgICBiYWNrZ3JvdW5kOiAjY2NjOworICAgICAgICAgICAgICAgIGhlaWdodDogY2FsYygxMDAl
IC0gMnB4KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC5zaW5nbGUtYmFyLWdyYXBoIC5s
YWJlbCB7CisgICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAgICAgICAgICAg
ICAgIHRvcDogY2FsYyg1MCUgLSAwLjM1cmVtKTsKKyAgICAgICAgICAgICAgICBsZWZ0OiAwOwor
ICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlOworICAgICAgICAgICAgICAgIGhlaWdodDogMTAw
JTsKKyAgICAgICAgICAgICAgICBmb250LXNpemU6IDAuOHJlbTsKKyAgICAgICAgICAgICAgICBs
aW5lLWhlaWdodDogMC44cmVtOworICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgYDsKKyAgICB9CisKK30KSW5kZXg6IFdlYnNpdGVzL3Bl
cmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvY29tcG9uZW50cy9yZXN1bHRzLXRhYmxlLmpzCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvY29tcG9uZW50cy9y
ZXN1bHRzLXRhYmxlLmpzCShyZXZpc2lvbiAwKQorKysgV2Vic2l0ZXMvcGVyZi53ZWJraXQub3Jn
L3B1YmxpYy92My9jb21wb25lbnRzL3Jlc3VsdHMtdGFibGUuanMJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSwyNTYgQEAKK2NsYXNzIFJlc3VsdHNUYWJsZSBleHRlbmRzIENvbXBvbmVudEJhc2Ug
eworICAgIGNvbnN0cnVjdG9yKG5hbWUpCisgICAgeworICAgICAgICBzdXBlcihuYW1lKTsKKyAg
ICAgICAgdGhpcy5fcmVwb3NpdG9yeUxpc3QgPSBbXTsKKyAgICAgICAgdGhpcy5fdmFsdWVGb3Jt
YXR0ZXIgPSBudWxsOworICAgIH0KKworICAgIHNldFZhbHVlRm9ybWF0dGVyKHZhbHVlRm9ybWF0
dGVyKSB7IHRoaXMuX3ZhbHVlRm9ybWF0dGVyID0gdmFsdWVGb3JtYXR0ZXI7IH0KKworICAgIHJl
bmRlcigpCisgICAgeworICAgICAgICBpZiAoIXRoaXMuX3ZhbHVlRm9ybWF0dGVyKQorICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgIEluc3RydW1lbnRhdGlvbi5zdGFydE1lYXN1cmluZ1Rp
bWUoJ1Jlc3VsdHNUYWJsZScsICdyZW5kZXInKTsKKworICAgICAgICB2YXIgcm93R3JvdXBzID0g
dGhpcy5idWlsZFJvd0dyb3VwcygpOworCisgICAgICAgIHZhciBleHRyYVJlcG9zaXRvcmllcyA9
IFtdOworICAgICAgICB2YXIgcmVwb3NpdG9yeUxpc3QgPSB0aGlzLl9jb21wdXRlUmVwb3NpdG9y
eUxpc3Qocm93R3JvdXBzLCBleHRyYVJlcG9zaXRvcmllcyk7CisKKyAgICAgICAgdmFyIGJhckdy
YXBoR3JvdXAgPSBuZXcgQmFyR3JhcGhHcm91cCh0aGlzLl92YWx1ZUZvcm1hdHRlcik7CisgICAg
ICAgIHZhciBlbGVtZW50ID0gQ29tcG9uZW50QmFzZS5jcmVhdGVFbGVtZW50OworICAgICAgICB2
YXIgbGluayA9IENvbXBvbmVudEJhc2UuY3JlYXRlTGluazsKKyAgICAgICAgdmFyIHRhYmxlQm9k
aWVzID0gcm93R3JvdXBzLm1hcChmdW5jdGlvbiAoZ3JvdXApIHsKKyAgICAgICAgICAgIHZhciBn
cm91cEhlYWRpbmcgPSBncm91cC5oZWFkaW5nOworICAgICAgICAgICAgdmFyIHJldmlzaW9uU3Vw
cmVzc2lvbkNvdW50ID0ge307CisKKyAgICAgICAgICAgIHJldHVybiBlbGVtZW50KCd0Ym9keScs
IGdyb3VwLnJvd3MubWFwKGZ1bmN0aW9uIChyb3csIHJvd0luZGV4KSB7CisgICAgICAgICAgICAg
ICAgdmFyIGNlbGxzID0gcm93LmJ1aWxkSGVhZGluZyhiYXJHcmFwaEdyb3VwKTsKKworICAgICAg
ICAgICAgICAgIGlmIChncm91cEhlYWRpbmcgJiYgIXJvd0luZGV4KQorICAgICAgICAgICAgICAg
ICAgICBjZWxscy51bnNoaWZ0KGVsZW1lbnQoJ3RoJywge3Jvd3NwYW46IGdyb3VwLnJvd3MubGVu
Z3RofSwgZ3JvdXBIZWFkaW5nKSk7CisKKyAgICAgICAgICAgICAgICB2YXIgcm9vdFNldCA9IHJv
dy5yb290U2V0KCk7CisgICAgICAgICAgICAgICAgcmVwb3NpdG9yeUxpc3QuZm9yRWFjaChmdW5j
dGlvbiAocmVwb3NpdG9yeSkgeworICAgICAgICAgICAgICAgICAgICB2YXIgY29tbWl0ID0gcm9v
dFNldCA/IHJvb3RTZXQuY29tbWl0Rm9yUmVwb3NpdG9yeShyZXBvc2l0b3J5KSA6IG51bGw7CisK
KyAgICAgICAgICAgICAgICAgICAgaWYgKHJldmlzaW9uU3VwcmVzc2lvbkNvdW50W3JlcG9zaXRv
cnkuaWQoKV0pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldmlzaW9uU3VwcmVzc2lvbkNv
dW50W3JlcG9zaXRvcnkuaWQoKV0tLTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIHZhciBzdWNjZWVk
aW5nUm93SW5kZXggPSByb3dJbmRleCArIDE7CisgICAgICAgICAgICAgICAgICAgIHdoaWxlIChz
dWNjZWVkaW5nUm93SW5kZXggPCBncm91cC5yb3dzLmxlbmd0aCkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgdmFyIHN1Y2NlZWRpbmdSb290U2V0ID0gZ3JvdXAucm93c1tzdWNjZWVkaW5nUm93
SW5kZXhdLnJvb3RTZXQoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdWNjZWVkaW5n
Um9vdFNldCAmJiBjb21taXQgIT0gc3VjY2VlZGluZ1Jvb3RTZXQuY29tbWl0Rm9yUmVwb3NpdG9y
eShyZXBvc2l0b3J5KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHN1Y2NlZWRpbmdSb3dJbmRleCsrOworICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICAgIHZhciByb3dTcGFuID0gc3VjY2VlZGluZ1Jvd0lu
ZGV4IC0gcm93SW5kZXg7CisgICAgICAgICAgICAgICAgICAgIHZhciBhdHRyaWJ1dGVzID0ge2Ns
YXNzOiAncmV2aXNpb24nfTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHJvd1NwYW4gPiAxKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICByZXZpc2lvblN1cHJlc3Npb25Db3VudFtyZXBvc2l0
b3J5LmlkKCldID0gcm93U3BhbiAtIDE7CisgICAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1
dGVzWydyb3dzcGFuJ10gPSByb3dTcGFuOyAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKHJvd0luZGV4ICsgcm93U3Bh
biA+PSBncm91cC5yb3dzLmxlbmd0aCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0
ZXNbJ2NsYXNzJ10gKz0gJyBsYXN0UmV2aXNpb24nOworCisgICAgICAgICAgICAgICAgICAgIHZh
ciBjb250ZW50ID0gJ01pc3NpbmcnOworICAgICAgICAgICAgICAgICAgICBpZiAoY29tbWl0KSB7
CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdXJsID0gY29tbWl0LnVybCgpOworICAgICAg
ICAgICAgICAgICAgICAgICAgY29udGVudCA9IHVybCA/IGxpbmsoY29tbWl0LmxhYmVsKCksIHVy
bCkgOiBjb21taXQubGFiZWwoKTsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAgICAgICAgIGNlbGxzLnB1c2goZWxlbWVudCgndGQnLCBhdHRyaWJ1dGVzLCBjb250ZW50KSk7
CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICByZXR1cm4gZWxlbWVudCgn
dHInLCBbY2VsbHMsIHJvdy5hZGRpdGlvbmFsQ29sdW1ucygpXSk7CisgICAgICAgICAgICB9KSk7
CisgICAgICAgIH0pOworCisgICAgICAgIHRoaXMucmVuZGVyUmVwbGFjZSh0aGlzLmNvbnRlbnQo
KS5xdWVyeVNlbGVjdG9yKCd0YWJsZScpLCBbCisgICAgICAgICAgICBlbGVtZW50KCd0aGVhZCcs
IFsKKyAgICAgICAgICAgICAgICB0aGlzLmhlYWRpbmcoKSwKKyAgICAgICAgICAgICAgICBlbGVt
ZW50KCd0aCcsICdSZXN1bHQnKSwKKyAgICAgICAgICAgICAgICByZXBvc2l0b3J5TGlzdC5tYXAo
ZnVuY3Rpb24gKHJlcG9zaXRvcnkpIHsgcmV0dXJuIGVsZW1lbnQoJ3RoJywgcmVwb3NpdG9yeS5s
YWJlbCgpKTsgfSksCisgICAgICAgICAgICAgICAgdGhpcy5hZGRpdGlvbmFsSGVhZGluZygpLAor
ICAgICAgICAgICAgXSksCisgICAgICAgICAgICB0YWJsZUJvZGllcywKKyAgICAgICAgXSk7CisK
KyAgICAgICAgdGhpcy5yZW5kZXJSZXBsYWNlKHRoaXMuY29udGVudCgpLnF1ZXJ5U2VsZWN0b3Io
Jy5yZXN1bHRzLXRhYmxlLWV4dHJhLXJlcG9zaXRvcmllcycpLAorICAgICAgICAgICAgZXh0cmFS
ZXBvc2l0b3JpZXMubWFwKGZ1bmN0aW9uIChjb21taXQpIHsgcmV0dXJuIGVsZW1lbnQoJ2xpJywg
Y29tbWl0LnRpdGxlKCkpOyB9KSk7CisKKyAgICAgICAgYmFyR3JhcGhHcm91cC5yZW5kZXIoKTsK
KworICAgICAgICBJbnN0cnVtZW50YXRpb24uZW5kTWVhc3VyaW5nVGltZSgnUmVzdWx0c1RhYmxl
JywgJ3JlbmRlcicpOworICAgIH0KKworICAgIGhlYWRpbmcoKSB7IHRocm93ICdOb3RJbXBsZW1l
bnRlZCc7IH0KKyAgICBhZGRpdGlvbmFsSGVhZGluZygpIHsgcmV0dXJuIFtdOyB9CisgICAgYnVp
bGRSb3dHcm91cHMoKSB7IHRocm93ICdOb3RJbXBsZW1lbnRlZCc7IH0KKworICAgIF9jb21wdXRl
UmVwb3NpdG9yeUxpc3Qocm93R3JvdXBzLCBleHRyYVJlcG9zaXRvcmllcykKKyAgICB7CisgICAg
ICAgIHZhciBhbGxSZXBvc2l0b3JpZXMgPSBSZXBvc2l0b3J5LmFsbCgpLnNvcnQoZnVuY3Rpb24g
KGEsIGIpIHsKKyAgICAgICAgICAgIGlmIChhLmhhc1VybEZvclJldmlzaW9uKCkgPT0gYi5oYXNV
cmxGb3JSZXZpc2lvbigpKSB7CisgICAgICAgICAgICAgICAgaWYgKGEubmFtZSgpID4gYi5uYW1l
KCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICAgICAgICAgIGlmIChh
Lm5hbWUoKSA8IGIubmFtZSgpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4g
YS5oYXNVcmxGb3JSZXZpc2lvbigpID8gLTEgLyogYSA8IGIgKi8gOiAxOyAvLyBhID4gYgorICAg
ICAgICB9KTsKKyAgICAgICAgdmFyIHJvb3RTZXRzID0gW107CisgICAgICAgIGZvciAodmFyIGdy
b3VwIG9mIHJvd0dyb3VwcykgeworICAgICAgICAgICAgZm9yICh2YXIgcm93IG9mIGdyb3VwLnJv
d3MpIHsKKyAgICAgICAgICAgICAgICB2YXIgcm9vdFNldCA9IHJvdy5yb290U2V0KCk7CisgICAg
ICAgICAgICAgICAgaWYgKHJvb3RTZXQpCisgICAgICAgICAgICAgICAgICAgIHJvb3RTZXRzLnB1
c2gocm9vdFNldCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFyb290
U2V0cy5sZW5ndGgpCisgICAgICAgICAgICByZXR1cm4gW107CisKKyAgICAgICAgdmFyIHJlcG9z
aXRvcnlQcmVzZW5jZU1hcCA9IHt9OworICAgICAgICBmb3IgKHZhciByZXBvc2l0b3J5IG9mIGFs
bFJlcG9zaXRvcmllcykgeworICAgICAgICAgICAgdmFyIHNvbWVDb21taXQgPSByb290U2V0c1sw
XS5jb21taXRGb3JSZXBvc2l0b3J5KHJlcG9zaXRvcnkpOworICAgICAgICAgICAgaWYgKFJvb3RT
ZXQuY29udGFpbnNNdWx0aXBsZUNvbW1pdHNGb3JSZXBvc2l0b3J5KHJvb3RTZXRzLCByZXBvc2l0
b3J5KSkKKyAgICAgICAgICAgICAgICByZXBvc2l0b3J5UHJlc2VuY2VNYXBbcmVwb3NpdG9yeS5p
ZCgpXSA9IHRydWU7CisgICAgICAgICAgICBlbHNlIGlmIChzb21lQ29tbWl0KQorICAgICAgICAg
ICAgICAgIGV4dHJhUmVwb3NpdG9yaWVzLnB1c2goc29tZUNvbW1pdCk7CisgICAgICAgIH0KKyAg
ICAgICAgcmV0dXJuIGFsbFJlcG9zaXRvcmllcy5maWx0ZXIoZnVuY3Rpb24gKHJlcG9zaXRvcnkp
IHsgcmV0dXJuIHJlcG9zaXRvcnlQcmVzZW5jZU1hcFtyZXBvc2l0b3J5LmlkKCldOyB9KTsKKyAg
ICB9CisKKyAgICBzdGF0aWMgaHRtbFRlbXBsYXRlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBg
PHRhYmxlIGNsYXNzPSJyZXN1bHRzLXRhYmxlIj48L3RhYmxlPjx1bCBjbGFzcz0icmVzdWx0cy10
YWJsZS1leHRyYS1yZXBvc2l0b3JpZXMiPjwvdWw+YDsKKyAgICB9CisKKyAgICBzdGF0aWMgY3Nz
VGVtcGxhdGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGAKKyAgICAgICAgICAgIHRhYmxlLnJl
c3VsdHMtdGFibGUgeworICAgICAgICAgICAgICAgIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7
CisgICAgICAgICAgICAgICAgYm9yZGVyOiBzb2xpZCAwcHggI2NjYzsKKyAgICAgICAgICAgICAg
ICBmb250LXNpemU6IDAuOXJlbTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLnJlc3Vs
dHMtdGFibGUgdGggeworICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKKyAgICAg
ICAgICAgICAgICBmb250LXdlaWdodDogaW5oZXJpdDsKKyAgICAgICAgICAgICAgICBmb250LXNp
emU6IDFyZW07CisgICAgICAgICAgICAgICAgcGFkZGluZzogMC4ycmVtOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAucmVzdWx0cy10YWJsZSB0ZCB7CisgICAgICAgICAgICAgICAgaGVp
Z2h0OiAxLjRyZW07CisgICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICAucmVzdWx0cy10YWJsZSB0aGVhZCB7
CisgICAgICAgICAgICAgICAgY29sb3I6ICNjOTM7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIC5yZXN1bHRzLXRhYmxlIHRkLnJldmlzaW9uIHsKKyAgICAgICAgICAgICAgICB2ZXJ0aWNh
bC1hbGlnbjogdG9wOworICAgICAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgLnJlc3VsdHMtdGFibGUgdHI6bm90KDpsYXN0LWNoaWxk
KSB0ZC5yZXZpc2lvbjphZnRlciB7CisgICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7Cisg
ICAgICAgICAgICAgICAgY29udGVudDogJyc7CisgICAgICAgICAgICAgICAgcG9zaXRpb246IGFi
c29sdXRlOworICAgICAgICAgICAgICAgIGxlZnQ6IGNhbGMoNTAlIC0gMC4yNXJlbSk7CisgICAg
ICAgICAgICAgICAgYm90dG9tOiAtMC40cmVtOworICAgICAgICAgICAgICAgIGJvcmRlci1zdHls
ZTogc29saWQ7CisgICAgICAgICAgICAgICAgYm9yZGVyLXdpZHRoOiAwLjI1cmVtOworICAgICAg
ICAgICAgICAgIGJvcmRlci1jb2xvcjogIzk5OSB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCB0cmFu
c3BhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLnJlc3VsdHMtdGFibGUgdHI6
bm90KDpsYXN0LWNoaWxkKSB0ZC5yZXZpc2lvbjpiZWZvcmUgeworICAgICAgICAgICAgICAgIGRp
c3BsYXk6IGJsb2NrOworICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICcnOworICAgICAgICAgICAg
ICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICAgICAgICAgICAgICBsZWZ0OiBjYWxjKDUwJSAt
IDFweCk7CisgICAgICAgICAgICAgICAgdG9wOiAxLjJyZW07CisgICAgICAgICAgICAgICAgaGVp
Z2h0OiBjYWxjKDEwMCUgLSAxLjRyZW0pOworICAgICAgICAgICAgICAgIGJvcmRlcjogc29saWQg
MXB4ICM5OTk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC5yZXN1
bHRzLXRhYmxlIHRyOm5vdCg6bGFzdC1jaGlsZCkgdGQucmV2aXNpb24ubGFzdFJldmlzaW9uOmFm
dGVyIHsKKyAgICAgICAgICAgICAgICBib3R0b206IC0wLjJyZW07CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAucmVzdWx0cy10YWJsZSB0cjpub3QoOmxhc3QtY2hpbGQpIHRkLnJldmlzaW9u
Lmxhc3RSZXZpc2lvbjpiZWZvcmUgeworICAgICAgICAgICAgICAgIGhlaWdodDogY2FsYygxMDAl
IC0gMS42cmVtKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLnJlc3VsdHMtdGFibGUg
dGJvZHk6bm90KDpmaXJzdC1jaGlsZCkgdHI6Zmlyc3QtY2hpbGQgdGgsCisgICAgICAgICAgICAu
cmVzdWx0cy10YWJsZSB0Ym9keTpub3QoOmZpcnN0LWNoaWxkKSB0cjpmaXJzdC1jaGlsZCB0ZCB7
CisgICAgICAgICAgICAgICAgYm9yZGVyLXRvcDogc29saWQgMXB4ICNjY2M7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIC5yZXN1bHRzLXRhYmxlIHNpbmdsZS1iYXItZ3JhcGggeworICAg
ICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrOworICAgICAgICAgICAgICAgIHdpZHRoOiA3cmVt
OworICAgICAgICAgICAgICAgIGhlaWdodDogMS4ycmVtOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAucmVzdWx0cy10YWJsZS1leHRyYS1yZXBvc2l0b3JpZXMgeworICAgICAgICAgICAg
ICAgIGxpc3Qtc3R5bGU6IG5vbmU7CisgICAgICAgICAgICAgICAgbWFyZ2luOiAwOworICAgICAg
ICAgICAgICAgIHBhZGRpbmc6IDAuNXJlbSAwIDAgMC41cmVtOworICAgICAgICAgICAgICAgIGZv
bnQtc2l6ZTogMC44cmVtOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAucmVzdWx0cy10
YWJsZS1leHRyYS1yZXBvc2l0b3JpZXMgbGkgeworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlu
bGluZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLnJlc3VsdHMtdGFibGUtZXh0cmEt
cmVwb3NpdG9yaWVzIGxpOm5vdCg6bGFzdC1jaGlsZCk6YWZ0ZXIgeworICAgICAgICAgICAgICAg
IGNvbnRlbnQ6ICcsICc7CisgICAgICAgICAgICB9CisgICAgICAgIGA7CisgICAgfQorfQorCitj
bGFzcyBSZXN1bHRzVGFibGVSb3cgeworICAgIGNvbnN0cnVjdG9yKGhlYWRpbmcsIHJvb3RTZXQp
CisgICAgeworICAgICAgICB0aGlzLl9oZWFkaW5nID0gaGVhZGluZzsKKyAgICAgICAgdGhpcy5f
cmVzdWx0ID0gbnVsbDsKKyAgICAgICAgdGhpcy5fbGluayA9IG51bGw7CisgICAgICAgIHRoaXMu
X2xhYmVsID0gJy0nOworICAgICAgICB0aGlzLl9yb290U2V0ID0gcm9vdFNldDsKKyAgICAgICAg
dGhpcy5fYWRkaXRpb25hbENvbHVtbnMgPSBbXTsKKyAgICB9CisKKyAgICByb290U2V0KCkgeyBy
ZXR1cm4gdGhpcy5fcm9vdFNldDsgfQorCisgICAgc2V0UmVzdWx0KHJlc3VsdCkgeyB0aGlzLl9y
ZXN1bHQgPSByZXN1bHQ7IH0KKyAgICBzZXRMaW5rKGxpbmssIGxhYmVsKQorICAgIHsKKyAgICAg
ICAgdGhpcy5fbGluayA9IGxpbms7CisgICAgICAgIHRoaXMuX2xhYmVsID0gbGFiZWw7CisgICAg
fQorCisgICAgYWRkaXRpb25hbENvbHVtbnMoKSB7IHJldHVybiB0aGlzLl9hZGRpdGlvbmFsQ29s
dW1uczsgfQorICAgIHNldEFkZGl0aW9uYWxDb2x1bW5zKGFkZGl0aW9uYWxDb2x1bW5zKSB7IHRo
aXMuX2FkZGl0aW9uYWxDb2x1bW5zID0gYWRkaXRpb25hbENvbHVtbnM7IH0KKworICAgIGJ1aWxk
SGVhZGluZyhiYXJHcmFwaEdyb3VwKQorICAgIHsKKyAgICAgICAgdmFyIGVsZW1lbnQgPSBDb21w
b25lbnRCYXNlLmNyZWF0ZUVsZW1lbnQ7CisgICAgICAgIHZhciBsaW5rID0gQ29tcG9uZW50QmFz
ZS5jcmVhdGVMaW5rOworCisgICAgICAgIHZhciByZXN1bHRDb250ZW50ID0gdGhpcy5fcmVzdWx0
ID8gYmFyR3JhcGhHcm91cC5hZGRCYXIodGhpcy5fcmVzdWx0LnZhbHVlLCB0aGlzLl9yZXN1bHQu
aW50ZXJ2YWwpIDogdGhpcy5fbGFiZWw7CisgICAgICAgIHJldHVybiBbCisgICAgICAgICAgICBl
bGVtZW50KCd0aCcsIHRoaXMuX2hlYWRpbmcpLAorICAgICAgICAgICAgZWxlbWVudCgndGQnLCB0
aGlzLl9saW5rID8gbGluayhyZXN1bHRDb250ZW50LCB0aGlzLl9sYWJlbCwgdGhpcy5fbGluaykg
OiByZXN1bHRDb250ZW50KSwKKyAgICAgICAgXTsKKyAgICB9Cit9CkluZGV4OiBXZWJzaXRlcy9w
ZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL2NvbXBvbmVudHMvdGVzdC1ncm91cC1yZXN1bHRzLXRh
YmxlLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMv
Y29tcG9uZW50cy90ZXN0LWdyb3VwLXJlc3VsdHMtdGFibGUuanMJKHJldmlzaW9uIDApCisrKyBX
ZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL2NvbXBvbmVudHMvdGVzdC1ncm91cC1y
ZXN1bHRzLXRhYmxlLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTcgQEAKKworY2xhc3Mg
VGVzdEdyb3VwUmVzdWx0c1RhYmxlIGV4dGVuZHMgUmVzdWx0c1RhYmxlIHsKKyAgICBjb25zdHJ1
Y3RvcigpCisgICAgeworICAgICAgICBzdXBlcigndGVzdC1ncm91cC1yZXN1bHRzLXRhYmxlJyk7
CisgICAgICAgIHRoaXMuX3Rlc3RHcm91cCA9IG51bGw7CisgICAgICAgIHRoaXMuX3JlbmRlcmVk
VGVzdEdyb3VwID0gbnVsbDsKKyAgICB9CisKKyAgICBkaWRVcGRhdGVSZXN1bHRzKCkgeyB0aGlz
Ll9yZW5kZXJlZFRlc3RHcm91cCA9IG51bGw7IH0KKyAgICBzZXRUZXN0R3JvdXAodGVzdEdyb3Vw
KSB7IHRoaXMuX3Rlc3RHcm91cCA9IHRlc3RHcm91cDsgfQorCisgICAgaGVhZGluZygpCisgICAg
eworICAgICAgICByZXR1cm4gQ29tcG9uZW50QmFzZS5jcmVhdGVFbGVtZW50KCd0aCcsIHtjb2xz
cGFuOiAyfSwgJ0NvbmZpZ3VyYXRpb24nKTsKKyAgICB9CisKKyAgICByZW5kZXIoKQorICAgIHsK
KyAgICAgICAgaWYgKHRoaXMuX3JlbmRlcmVkVGVzdEdyb3VwID09IHRoaXMuX3Rlc3RHcm91cCkK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgdGhpcy5fcmVuZGVyZWRUZXN0R3JvdXAgPSB0
aGlzLl90ZXN0R3JvdXA7CisgICAgICAgIHN1cGVyLnJlbmRlcigpOworICAgIH0KKworICAgIGJ1
aWxkUm93R3JvdXBzKCkKKyAgICB7CisgICAgICAgIHZhciB0ZXN0R3JvdXAgPSB0aGlzLl90ZXN0
R3JvdXA7CisgICAgICAgIGlmICghdGVzdEdyb3VwKQorICAgICAgICAgICAgcmV0dXJuIFtdOwor
CisgICAgICAgIHJldHVybiB0aGlzLl90ZXN0R3JvdXAucmVxdWVzdGVkUm9vdFNldHMoKS5tYXAo
ZnVuY3Rpb24gKHJvb3RTZXQsIHNldEluZGV4KSB7CisgICAgICAgICAgICB2YXIgcm93cyA9IFtu
ZXcgUmVzdWx0c1RhYmxlUm93KCdNZWFuJywgcm9vdFNldCldOworICAgICAgICAgICAgdmFyIHJl
c3VsdHMgPSBbXTsKKworICAgICAgICAgICAgZm9yICh2YXIgcmVxdWVzdCBvZiB0ZXN0R3JvdXAu
cmVxdWVzdHNGb3JSb290U2V0KHJvb3RTZXQpKSB7CisgICAgICAgICAgICAgICAgdmFyIHJlc3Vs
dCA9IHJlcXVlc3QucmVzdWx0KCk7CisgICAgICAgICAgICAgICAgdmFyIHJvdyA9IG5ldyBSZXN1
bHRzVGFibGVSb3coMSArICtyZXF1ZXN0Lm9yZGVyKCksIHJlc3VsdCA/IHJlc3VsdC5yb290U2V0
KCkgOiBudWxsKTsKKyAgICAgICAgICAgICAgICByb3dzLnB1c2gocm93KTsKKyAgICAgICAgICAg
ICAgICBpZiAocmVzdWx0KSB7CisgICAgICAgICAgICAgICAgICAgIHJvdy5zZXRMaW5rKHJlc3Vs
dC5idWlsZCgpLnVybCgpLCByZXN1bHQuYnVpbGQoKS5sYWJlbCgpKTsKKyAgICAgICAgICAgICAg
ICAgICAgcm93LnNldFJlc3VsdChyZXN1bHQpOworICAgICAgICAgICAgICAgICAgICByZXN1bHRz
LnB1c2gocmVzdWx0KTsKKyAgICAgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAg
ICAgcm93LnNldExpbmsocmVxdWVzdC5zdGF0dXNVcmwoKSwgcmVxdWVzdC5zdGF0dXNMYWJlbCgp
KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIGFnZ3JlZ2F0ZWRSZXN1bHQgPSBN
ZWFzdXJlbWVudEFkYXB0b3IuYWdncmVnYXRlQW5hbHlzaXNSZXN1bHRzKHJlc3VsdHMpOworICAg
ICAgICAgICAgaWYgKCFpc05hTihhZ2dyZWdhdGVkUmVzdWx0LnZhbHVlKSkKKyAgICAgICAgICAg
ICAgICByb3dzWzBdLnNldFJlc3VsdChhZ2dyZWdhdGVkUmVzdWx0KTsKKworICAgICAgICAgICAg
cmV0dXJuIHtoZWFkaW5nOiBTdHJpbmcuZnJvbUNoYXJDb2RlKCdBJy5jaGFyQ29kZUF0KDApICsg
c2V0SW5kZXgpLCByb3dzOnJvd3N9OworICAgICAgICB9KQorICAgIH0KK30KKworQ29tcG9uZW50
QmFzZS5kZWZpbmVFbGVtZW50KCd0ZXN0LWdyb3VwLXJlc3VsdHMtdGFibGUnLCBUZXN0R3JvdXBS
ZXN1bHRzVGFibGUpOwpJbmRleDogV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9t
b2RlbHMvYW5hbHlzaXMtcmVzdWx0cy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvcHVibGljL3YzL21vZGVscy9hbmFseXNpcy1yZXN1bHRzLmpzCShyZXZpc2lvbiAw
KQorKysgV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMvYW5hbHlzaXMt
cmVzdWx0cy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQzIEBACisKK2NsYXNzIEFuYWx5
c2lzUmVzdWx0cyB7CisgICAgY29uc3RydWN0b3IoKQorICAgIHsKKyAgICAgICAgdGhpcy5fYnVp
bGRUb01ldHJpY3NNYXAgPSB7fTsKKyAgICB9CisKKyAgICBmaW5kKGJ1aWxkSWQsIG1ldHJpYykK
KyAgICB7CisgICAgICAgIHZhciBtYXAgPSB0aGlzLl9idWlsZFRvTWV0cmljc01hcFtidWlsZElk
XTsKKyAgICAgICAgaWYgKCFtYXApCisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAg
cmV0dXJuIG1hcFttZXRyaWMuaWQoKV07CisgICAgfQorCisgICAgYWRkKG1lYXN1cmVtZW50KQor
ICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQobWVhc3VyZW1lbnQuY29uZmlnVHlwZSA9PSAn
Y3VycmVudCcpOworICAgICAgICBpZiAoIXRoaXMuX2J1aWxkVG9NZXRyaWNzTWFwW21lYXN1cmVt
ZW50LmJ1aWxkSWRdKQorICAgICAgICAgICAgdGhpcy5fYnVpbGRUb01ldHJpY3NNYXBbbWVhc3Vy
ZW1lbnQuYnVpbGRJZF0gPSB7fTsKKyAgICAgICAgdmFyIG1hcCA9IHRoaXMuX2J1aWxkVG9NZXRy
aWNzTWFwW21lYXN1cmVtZW50LmJ1aWxkSWRdOworICAgICAgICBjb25zb2xlLmFzc2VydCghbWFw
W21lYXN1cmVtZW50Lm1ldHJpY0lkXSk7CisgICAgICAgIG1hcFttZWFzdXJlbWVudC5tZXRyaWNJ
ZF0gPSBtZWFzdXJlbWVudDsKKyAgICB9CisKKyAgICBzdGF0aWMgZmV0Y2godGFza0lkKQorICAg
IHsKKyAgICAgICAgdGFza0lkID0gcGFyc2VJbnQodGFza0lkKTsKKyAgICAgICAgcmV0dXJuIGdl
dEpTT05XaXRoU3RhdHVzKGAuLi9hcGkvbWVhc3VyZW1lbnQtc2V0P2FuYWx5c2lzVGFzaz0ke3Rh
c2tJZH1gKS50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkgeworCisgICAgICAgICAgICBJbnN0cnVt
ZW50YXRpb24uc3RhcnRNZWFzdXJpbmdUaW1lKCdBbmFseXNpc1Jlc3VsdHMnLCAnZmV0Y2gnKTsK
KworICAgICAgICAgICAgdmFyIGFkYXB0b3IgPSBuZXcgTWVhc3VyZW1lbnRBZGFwdG9yKHJlc3Bv
bnNlWydmb3JtYXRNYXAnXSk7CisgICAgICAgICAgICB2YXIgcmVzdWx0cyA9IG5ldyBBbmFseXNp
c1Jlc3VsdHM7CisgICAgICAgICAgICBmb3IgKHZhciByYXdNZWFzdXJlbWVudCBvZiByZXNwb25z
ZVsnbWVhc3VyZW1lbnRzJ10pCisgICAgICAgICAgICAgICAgcmVzdWx0cy5hZGQoYWRhcHRvci5h
ZG9wdFRvQW5hbHlzaXNSZXN1bHRzKHJhd01lYXN1cmVtZW50KSk7CisKKyAgICAgICAgICAgIElu
c3RydW1lbnRhdGlvbi5lbmRNZWFzdXJpbmdUaW1lKCdBbmFseXNpc1Jlc3VsdHMnLCAnZmV0Y2gn
KTsKKworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdHM7CisgICAgICAgIH0pOworICAgIH0KK30K
SW5kZXg6IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL2FuYWx5c2lz
LXRhc2suanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92
My9tb2RlbHMvYW5hbHlzaXMtdGFzay5qcwkocmV2aXNpb24gMTk0MzU3KQorKysgV2Vic2l0ZXMv
cGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMvYW5hbHlzaXMtdGFzay5qcwkod29ya2lu
ZyBjb3B5KQpAQCAtMzMsNyArMzMsOSBAQCBjbGFzcyBBbmFseXNpc1Rhc2sgZXh0ZW5kcyBMYWJl
bGVkT2JqZWN0CiAgICAgaGFzUGVuZGluZ1JlcXVlc3RzKCkgeyByZXR1cm4gdGhpcy5fZmluaXNo
ZWRCdWlsZFJlcXVlc3RDb3VudCA8IHRoaXMuX2J1aWxkUmVxdWVzdENvdW50OyB9CiAgICAgcmVx
dWVzdExhYmVsKCkgeyByZXR1cm4gYCR7dGhpcy5fZmluaXNoZWRCdWlsZFJlcXVlc3RDb3VudH0g
b2YgJHt0aGlzLl9idWlsZFJlcXVlc3RDb3VudH1gOyB9CiAKKyAgICBzdGFydE1lYXN1cmVtZW50
SWQoKSB7IHJldHVybiB0aGlzLl9zdGFydE1lYXN1cmVtZW50SWQ7IH0KICAgICBzdGFydFRpbWUo
KSB7IHJldHVybiB0aGlzLl9zdGFydFRpbWU7IH0KKyAgICBlbmRNZWFzdXJlbWVudElkKCkgeyBy
ZXR1cm4gdGhpcy5fZW5kTWVhc3VyZW1lbnRJZDsgfQogICAgIGVuZFRpbWUoKSB7IHJldHVybiB0
aGlzLl9lbmRUaW1lOyB9CiAKICAgICBhdXRob3IoKSB7IHJldHVybiB0aGlzLl9hdXRob3IgfHwg
Jyc7IH0KQEAgLTU5LDYgKzYxLDExIEBAIGNsYXNzIEFuYWx5c2lzVGFzayBleHRlbmRzIExhYmVs
ZWRPYmplY3QKICAgICAgICAgcmV0dXJuIHRoaXMuX2ZldGNoU3Vic2V0KHtpZDogaWR9KS50aGVu
KGZ1bmN0aW9uIChkYXRhKSB7IHJldHVybiBBbmFseXNpc1Rhc2suZmluZEJ5SWQoaWQpOyB9KTsK
ICAgICB9CiAKKyAgICBzdGF0aWMgZmV0Y2hCeUJ1aWxkUmVxdWVzdElkKGlkKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIHRoaXMuX2ZldGNoU3Vic2V0KHtidWlsZFJlcXVlc3Q6IGlkfSkudGhlbihm
dW5jdGlvbiAodGFza3MpIHsgcmV0dXJuIHRhc2tzWzBdOyB9KTsKKyAgICB9CisKICAgICBzdGF0
aWMgZmV0Y2hCeVBsYXRmb3JtQW5kTWV0cmljKHBsYXRmb3JtSWQsIG1ldHJpY0lkKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIHRoaXMuX2ZldGNoU3Vic2V0KHtwbGF0Zm9ybTogcGxhdGZvcm1JZCwg
bWV0cmljOiBtZXRyaWNJZH0pLnRoZW4oZnVuY3Rpb24gKGRhdGEpIHsKQEAgLTcwLDI0ICs3Nyw3
IEBAIGNsYXNzIEFuYWx5c2lzVGFzayBleHRlbmRzIExhYmVsZWRPYmplY3QKICAgICB7CiAgICAg
ICAgIGlmICh0aGlzLl9mZXRjaEFsbFByb21pc2UpCiAgICAgICAgICAgICByZXR1cm4gdGhpcy5f
ZmV0Y2hBbGxQcm9taXNlOwotCi0gICAgICAgIHZhciBxdWVyeSA9IFtdOwotICAgICAgICBmb3Ig
KHZhciBrZXkgaW4gcGFyYW1zKQotICAgICAgICAgICAgcXVlcnkucHVzaChrZXkgKyAnPScgKyBw
YXJzZUludChwYXJhbXNba2V5XSkpOwotICAgICAgICB2YXIgcXVlcnlTdHJpbmcgPSBxdWVyeS5q
b2luKCcmJyk7Ci0KLSAgICAgICAgaWYgKCF0aGlzLl9mZXRjaFN1YnNldFByb21pc2VzKQotICAg
ICAgICAgICAgdGhpcy5fZmV0Y2hTdWJzZXRQcm9taXNlcyA9IHt9OwotICAgICAgICBlbHNlIHsK
LSAgICAgICAgICAgIHZhciBleGlzdGluZ1Byb21pc2UgPSB0aGlzLl9mZXRjaFN1YnNldFByb21p
c2VzW3F1ZXJ5U3RyaW5nXTsKLSAgICAgICAgICAgIGlmIChleGlzdGluZ1Byb21pc2UpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIGV4aXN0aW5nUHJvbWlzZTsKLSAgICAgICAgfQotCi0gICAgICAg
IHZhciBuZXdQcm9taXNlID0gZ2V0SlNPTldpdGhTdGF0dXMoJy4uL2FwaS9hbmFseXNpcy10YXNr
cz8nICsgcXVlcnlTdHJpbmcpLnRoZW4odGhpcy5fY29uc3RydWN0QW5hbHlzaXNUYXNrc0Zyb21S
YXdEYXRhLmJpbmQodGhpcykpOwotICAgICAgICB0aGlzLl9mZXRjaFN1YnNldFByb21pc2VzW3F1
ZXJ5U3RyaW5nXSA9IG5ld1Byb21pc2U7Ci0KLSAgICAgICAgcmV0dXJuIG5ld1Byb21pc2U7Cisg
ICAgICAgIHJldHVybiB0aGlzLmNhY2hlZEZldGNoKCcuLi9hcGkvYW5hbHlzaXMtdGFza3MnLCBw
YXJhbXMpLnRoZW4odGhpcy5fY29uc3RydWN0QW5hbHlzaXNUYXNrc0Zyb21SYXdEYXRhLmJpbmQo
dGhpcykpOwogICAgIH0KIAogICAgIHN0YXRpYyBmZXRjaEFsbCgpCkluZGV4OiBXZWJzaXRlcy9w
ZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVscy9idWlsZC1yZXF1ZXN0LmpzCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL2J1aWxkLXJl
cXVlc3QuanMJKHJldmlzaW9uIDApCisrKyBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGlj
L3YzL21vZGVscy9idWlsZC1yZXF1ZXN0LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDgg
QEAKKworY2xhc3MgQnVpbGRSZXF1ZXN0IGV4dGVuZHMgRGF0YU1vZGVsT2JqZWN0IHsKKworICAg
IGNvbnN0cnVjdG9yKGlkLCBvYmplY3QpCisgICAgeworICAgICAgICBzdXBlcihpZCwgb2JqZWN0
KTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQob2JqZWN0LnRlc3RHcm91cCBpbnN0YW5jZW9mIFRl
c3RHcm91cCk7CisgICAgICAgIHRoaXMuX3Rlc3RHcm91cCA9IG9iamVjdC50ZXN0R3JvdXA7Cisg
ICAgICAgIHRoaXMuX3Rlc3RHcm91cC5hZGRCdWlsZFJlcXVlc3QodGhpcyk7CisgICAgICAgIHRo
aXMuX29yZGVyID0gb2JqZWN0Lm9yZGVyOworICAgICAgICBjb25zb2xlLmFzc2VydChvYmplY3Qu
cm9vdFNldCBpbnN0YW5jZW9mIFJvb3RTZXQpOworICAgICAgICB0aGlzLl9yb290U2V0ID0gb2Jq
ZWN0LnJvb3RTZXQ7CisgICAgICAgIHRoaXMuX3N0YXR1cyA9IG9iamVjdC5zdGF0dXM7CisgICAg
ICAgIHRoaXMuX3N0YXR1c1VybCA9IG9iamVjdC51cmw7CisgICAgICAgIHRoaXMuX2J1aWxkSWQg
PSBvYmplY3QuYnVpbGQ7CisgICAgICAgIHRoaXMuX3Jlc3VsdCA9IG51bGw7CisgICAgfQorCisg
ICAgdGVzdEdyb3VwKCkgeyByZXR1cm4gdGhpcy5fdGVzdEdyb3VwOyB9CisgICAgb3JkZXIoKSB7
IHJldHVybiB0aGlzLl9vcmRlcjsgfQorICAgIHJvb3RTZXQoKSB7IHJldHVybiB0aGlzLl9yb290
U2V0OyB9CisKKyAgICBzdGF0dXNMYWJlbCgpCisgICAgeworICAgICAgICBzd2l0Y2ggKHRoaXMu
X3N0YXR1cykgeworICAgICAgICBjYXNlICdwZW5kaW5nJzoKKyAgICAgICAgICAgIHJldHVybiAn
V2FpdGluZyB0byBiZSBzY2hlZHVsZWQnOworICAgICAgICBjYXNlICdzY2hlZHVsZWQnOgorICAg
ICAgICAgICAgcmV0dXJuICdTY2hlZHVsZWQnOworICAgICAgICBjYXNlICdydW5uaW5nJzoKKyAg
ICAgICAgICAgIHJldHVybiAnUnVubmluZyc7CisgICAgICAgIGNhc2UgJ2ZhaWxlZCc6CisgICAg
ICAgICAgICByZXR1cm4gJ0ZhaWxlZCc7CisgICAgICAgIGNhc2UgJ2NvbXBsZXRlZCc6CisgICAg
ICAgICAgICByZXR1cm4gJ0NvbXBsZXRlZCc7CisgICAgICAgIH0KKyAgICB9CisgICAgc3RhdHVz
VXJsKCkgeyByZXR1cm4gdGhpcy5fc3RhdHVzVXJsOyB9CisKKyAgICBidWlsZElkKCkgeyByZXR1
cm4gdGhpcy5fYnVpbGRJZDsgfQorCisgICAgcmVzdWx0KCkgeyByZXR1cm4gdGhpcy5fcmVzdWx0
OyB9CisgICAgc2V0UmVzdWx0KHJlc3VsdCkKKyAgICB7CisgICAgICAgIHRoaXMuX3Jlc3VsdCA9
IHJlc3VsdDsKKyAgICAgICAgdGhpcy5fdGVzdEdyb3VwLmRpZFNldFJlc3VsdCh0aGlzKTsKKyAg
ICB9Cit9CkluZGV4OiBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVscy9i
dWlsZGVyLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMv
djMvbW9kZWxzL2J1aWxkZXIuanMJKHJldmlzaW9uIDE5NDM1NykKKysrIFdlYnNpdGVzL3BlcmYu
d2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL2J1aWxkZXIuanMJKHdvcmtpbmcgY29weSkKQEAg
LTEzLDMgKzEzLDE2IEBAIGNsYXNzIEJ1aWxkZXIgZXh0ZW5kcyBMYWJlbGVkT2JqZWN0IHsKICAg
ICAgICAgcmV0dXJuIHRoaXMuX2J1aWxkVXJsVGVtcGxhdGUucmVwbGFjZSgvXCRidWlsZGVyTmFt
ZS9nLCB0aGlzLm5hbWUoKSkucmVwbGFjZSgvXCRidWlsZE51bWJlci9nLCBidWlsZE51bWJlcik7
CiAgICAgfQogfQorCitjbGFzcyBCdWlsZCBleHRlbmRzIERhdGFNb2RlbE9iamVjdCB7CisgICAg
Y29uc3RydWN0b3IoaWQsIGJ1aWxkZXIsIGJ1aWxkTnVtYmVyKQorICAgIHsKKyAgICAgICAgY29u
c29sZS5hc3NlcnQoYnVpbGRlciBpbnN0YW5jZW9mIEJ1aWxkZXIpOworICAgICAgICBzdXBlcihp
ZCk7CisgICAgICAgIHRoaXMuX2J1aWxkZXIgPSBidWlsZGVyOworICAgICAgICB0aGlzLl9idWls
ZE51bWJlciA9IGJ1aWxkTnVtYmVyOworICAgIH0KKworICAgIGxhYmVsKCkgeyByZXR1cm4gYEJ1
aWxkICR7dGhpcy5fYnVpbGROdW1iZXJ9IG9uICR7dGhpcy5fYnVpbGRlci5sYWJlbCgpfWA7IH0K
KyAgICB1cmwoKSB7IHJldHVybiB0aGlzLl9idWlsZGVyLnVybEZvckJ1aWxkKHRoaXMuX2J1aWxk
TnVtYmVyKTsgfQorfQpJbmRleDogV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9t
b2RlbHMvY29tbWl0LWxvZy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJzaXRlcy9wZXJmLndlYmtpdC5v
cmcvcHVibGljL3YzL21vZGVscy9jb21taXQtbG9nLmpzCShyZXZpc2lvbiAxOTQzNTcpCisrKyBX
ZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVscy9jb21taXQtbG9nLmpzCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDExICsxLDI3IEBACiAKLWNsYXNzIENvbW1pdExvZyB7Ci0gICAg
Y29uc3RydWN0b3IocmVwb3NpdG9yeSwgcmF3RGF0YSkKK2NsYXNzIENvbW1pdExvZyBleHRlbmRz
IERhdGFNb2RlbE9iamVjdCB7CisgICAgY29uc3RydWN0b3IoaWQsIHJlcG9zaXRvcnksIHJhd0Rh
dGEpCiAgICAgeworICAgICAgICBzdXBlcihpZCk7CiAgICAgICAgIHRoaXMuX3JlcG9zaXRvcnkg
PSByZXBvc2l0b3J5OwogICAgICAgICB0aGlzLl9yYXdEYXRhID0gcmF3RGF0YTsKICAgICB9CiAK
KyAgICBzdGF0aWMgZW5zdXJlU2luZ2xldG9uKHJlcG9zaXRvcnksIHJhd0RhdGEpCisgICAgewor
ICAgICAgICB2YXIgaWQgPSByZXBvc2l0b3J5LmlkKCkgKyAnLScgKyByYXdEYXRhWydyZXZpc2lv
biddOworICAgICAgICB2YXIgc2luZ2xldG9uID0gdGhpcy5maW5kQnlJZChpZCk7CisgICAgICAg
IGlmIChzaW5nbGV0b24pIHsKKyAgICAgICAgICAgIGlmIChyYXdEYXRhLmF1dGhvck5hbWUpCisg
ICAgICAgICAgICAgICAgc2luZ2xldG9uLl9yYXdEYXRhLmF1dGhvck5hbWUgPSByYXdEYXRhLmF1
dGhvck5hbWU7CisgICAgICAgICAgICBpZiAocmF3RGF0YS5tZXNzYWdlKQorICAgICAgICAgICAg
ICAgIHNpbmdsZXRvbi5fcmF3RGF0YS5tZXNzYWdlID0gcmF3RGF0YS5tZXNzYWdlOworICAgICAg
ICAgICAgcmV0dXJuIHNpbmdsZXRvbjsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbmV3IENv
bW1pdExvZyhpZCwgcmVwb3NpdG9yeSwgcmF3RGF0YSk7CisgICAgfQorCisgICAgcmVwb3NpdG9y
eSgpIHsgcmV0dXJuIHRoaXMuX3JlcG9zaXRvcnk7IH0KICAgICB0aW1lKCkgeyByZXR1cm4gbmV3
IERhdGUodGhpcy5fcmF3RGF0YVsndGltZSddKTsgfQogICAgIGF1dGhvcigpIHsgcmV0dXJuIHRo
aXMuX3Jhd0RhdGFbJ2F1dGhvck5hbWUnXTsgfQogICAgIHJldmlzaW9uKCkgeyByZXR1cm4gdGhp
cy5fcmF3RGF0YVsncmV2aXNpb24nXTsgfQpAQCAtNDIsNyArNTgsNyBAQCBjbGFzcyBDb21taXRM
b2cgewogCiAgICAgICAgIHZhciBzZWxmID0gdGhpczsKICAgICAgICAgcmV0dXJuIGdldEpTT05X
aXRoU3RhdHVzKHVybCkudGhlbihmdW5jdGlvbiAoZGF0YSkgewotICAgICAgICAgICAgdmFyIGNv
bW1pdHMgPSBkYXRhWydjb21taXRzJ10ubWFwKGZ1bmN0aW9uIChyYXdEYXRhKSB7IHJldHVybiBu
ZXcgQ29tbWl0TG9nKHJlcG9zaXRvcnksIHJhd0RhdGEpOyB9KTsKKyAgICAgICAgICAgIHZhciBj
b21taXRzID0gZGF0YVsnY29tbWl0cyddLm1hcChmdW5jdGlvbiAocmF3RGF0YSkgeyByZXR1cm4g
Q29tbWl0TG9nLmVuc3VyZVNpbmdsZXRvbihyZXBvc2l0b3J5LCByYXdEYXRhKTsgfSk7CiAgICAg
ICAgICAgICBzZWxmLl9jYWNoZUNvbW1pdExvZ3MocmVwb3NpdG9yeSwgZnJvbSwgdG8sIGNvbW1p
dHMpOwogICAgICAgICAgICAgcmV0dXJuIGNvbW1pdHM7CiAgICAgICAgIH0pOwpJbmRleDogV2Vi
c2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMvZGF0YS1tb2RlbC5qcwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVscy9kYXRh
LW1vZGVsLmpzCShyZXZpc2lvbiAxOTQzNTcpCisrKyBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcv
cHVibGljL3YzL21vZGVscy9kYXRhLW1vZGVsLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0zLDI3ICsz
LDI5IEBAIGNsYXNzIERhdGFNb2RlbE9iamVjdCB7CiAgICAgY29uc3RydWN0b3IoaWQpCiAgICAg
ewogICAgICAgICB0aGlzLl9pZCA9IGlkOwotICAgICAgICB0aGlzLm5hbWVkU3RhdGljTWFwKCdp
ZCcpW2lkXSA9IHRoaXM7CisgICAgICAgIHRoaXMuZW5zdXJlTmFtZWRTdGF0aWNNYXAoJ2lkJylb
aWRdID0gdGhpczsKICAgICB9CiAgICAgaWQoKSB7IHJldHVybiB0aGlzLl9pZDsgfQogCi0gICAg
bmFtZWRTdGF0aWNNYXAobmFtZSkKKyAgICBzdGF0aWMgbmFtZWRTdGF0aWNNYXAobmFtZSkKICAg
ICB7Ci0gICAgICAgIHZhciBuZXdUYXJnZXQgPSB0aGlzLl9fcHJvdG9fXy5jb25zdHJ1Y3RvcjsK
LSAgICAgICAgaWYgKCFuZXdUYXJnZXRbRGF0YU1vZGVsT2JqZWN0LlN0YXRpY01hcFN5bWJvbF0p
Ci0gICAgICAgICAgICBuZXdUYXJnZXRbRGF0YU1vZGVsT2JqZWN0LlN0YXRpY01hcFN5bWJvbF0g
PSB7fTsKLSAgICAgICAgdmFyIHN0YXRpY01hcCA9IG5ld1RhcmdldFtEYXRhTW9kZWxPYmplY3Qu
U3RhdGljTWFwU3ltYm9sXTsKLSAgICAgICAgaWYgKCFzdGF0aWNNYXBbbmFtZV0pCi0gICAgICAg
ICAgICBzdGF0aWNNYXBbbmFtZV0gPSBbXTsKLSAgICAgICAgcmV0dXJuIHN0YXRpY01hcFtuYW1l
XTsKKyAgICAgICAgdmFyIHN0YXRpY01hcCA9IHRoaXNbRGF0YU1vZGVsT2JqZWN0LlN0YXRpY01h
cFN5bWJvbF07CisgICAgICAgIHJldHVybiBzdGF0aWNNYXAgPyBzdGF0aWNNYXBbbmFtZV0gOiBu
dWxsOwogICAgIH0KIAotICAgIHN0YXRpYyBuYW1lZFN0YXRpY01hcChuYW1lKQorICAgIHN0YXRp
YyBlbnN1cmVOYW1lZFN0YXRpY01hcChuYW1lKQogICAgIHsKKyAgICAgICAgaWYgKCF0aGlzW0Rh
dGFNb2RlbE9iamVjdC5TdGF0aWNNYXBTeW1ib2xdKQorICAgICAgICAgICAgdGhpc1tEYXRhTW9k
ZWxPYmplY3QuU3RhdGljTWFwU3ltYm9sXSA9IHt9OwogICAgICAgICB2YXIgc3RhdGljTWFwID0g
dGhpc1tEYXRhTW9kZWxPYmplY3QuU3RhdGljTWFwU3ltYm9sXTsKLSAgICAgICAgcmV0dXJuIHN0
YXRpY01hcCA/IHN0YXRpY01hcFtuYW1lXSA6IG51bGw7CisgICAgICAgIGlmICghc3RhdGljTWFw
W25hbWVdKQorICAgICAgICAgICAgc3RhdGljTWFwW25hbWVdID0gW107CisgICAgICAgIHJldHVy
biBzdGF0aWNNYXBbbmFtZV07CiAgICAgfQogCisgICAgbmFtZWRTdGF0aWNNYXAobmFtZSkgeyBy
ZXR1cm4gdGhpcy5fX3Byb3RvX18uY29uc3RydWN0b3IubmFtZWRTdGF0aWNNYXAobmFtZSk7IH0K
KyAgICBlbnN1cmVOYW1lZFN0YXRpY01hcChuYW1lKSB7IHJldHVybiB0aGlzLl9fcHJvdG9fXy5j
b25zdHJ1Y3Rvci5lbnN1cmVOYW1lZFN0YXRpY01hcChuYW1lKTsgfQorCiAgICAgc3RhdGljIGZp
bmRCeUlkKGlkKQogICAgIHsKICAgICAgICAgdmFyIGlkTWFwID0gdGhpcy5uYW1lZFN0YXRpY01h
cCgnaWQnKTsKQEAgLTQwLDE1ICs0MiwzNCBAQCBjbGFzcyBEYXRhTW9kZWxPYmplY3QgewogICAg
ICAgICB9CiAgICAgICAgIHJldHVybiBsaXN0OwogICAgIH0KKworICAgIHN0YXRpYyBjYWNoZWRG
ZXRjaChwYXRoLCBwYXJhbXMpCisgICAgeworICAgICAgICB2YXIgcXVlcnkgPSBbXTsKKyAgICAg
ICAgaWYgKHBhcmFtcykgeworICAgICAgICAgICAgZm9yICh2YXIga2V5IGluIHBhcmFtcykKKyAg
ICAgICAgICAgICAgICBxdWVyeS5wdXNoKGtleSArICc9JyArIHBhcnNlSW50KHBhcmFtc1trZXld
KSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHF1ZXJ5Lmxlbmd0aCkKKyAgICAgICAgICAgIHBh
dGggKz0gJz8nICsgcXVlcnkuam9pbignJicpOworCisgICAgICAgIHZhciBjYWNoZU1hcCA9IHRo
aXMuZW5zdXJlTmFtZWRTdGF0aWNNYXAoRGF0YU1vZGVsT2JqZWN0LkNhY2hlTWFwU3ltYm9sKTsK
KyAgICAgICAgaWYgKCFjYWNoZU1hcFtwYXRoXSkKKyAgICAgICAgICAgIGNhY2hlTWFwW3BhdGhd
ID0gZ2V0SlNPTldpdGhTdGF0dXMocGF0aCk7CisKKyAgICAgICAgcmV0dXJuIGNhY2hlTWFwW3Bh
dGhdOworICAgIH0KKwogfQogRGF0YU1vZGVsT2JqZWN0LlN0YXRpY01hcFN5bWJvbCA9IFN5bWJv
bCgpOworRGF0YU1vZGVsT2JqZWN0LkNhY2hlTWFwU3ltYm9sID0gU3ltYm9sKCk7CiAKIGNsYXNz
IExhYmVsZWRPYmplY3QgZXh0ZW5kcyBEYXRhTW9kZWxPYmplY3QgewogICAgIGNvbnN0cnVjdG9y
KGlkLCBvYmplY3QpCiAgICAgewogICAgICAgICBzdXBlcihpZCk7CiAgICAgICAgIHRoaXMuX25h
bWUgPSBvYmplY3QubmFtZTsKLSAgICAgICAgdGhpcy5uYW1lZFN0YXRpY01hcCgnbmFtZScpW3Ro
aXMuX25hbWVdID0gdGhpczsKKyAgICAgICAgdGhpcy5lbnN1cmVOYW1lZFN0YXRpY01hcCgnbmFt
ZScpW3RoaXMuX25hbWVdID0gdGhpczsKICAgICB9CiAKICAgICBzdGF0aWMgZmluZEJ5TmFtZShu
YW1lKQpJbmRleDogV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMvbWVh
c3VyZW1lbnQtYWRhcHRvci5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJzaXRlcy9wZXJmLndlYmtpdC5v
cmcvcHVibGljL3YzL21vZGVscy9tZWFzdXJlbWVudC1hZGFwdG9yLmpzCShyZXZpc2lvbiAwKQor
KysgV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMvbWVhc3VyZW1lbnQt
YWRhcHRvci5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEyMyBAQAorCitjbGFzcyBNZWFz
dXJlbWVudEFkYXB0b3IgeworICAgIGNvbnN0cnVjdG9yKGZvcm1hdE1hcCkKKyAgICB7CisgICAg
ICAgIHZhciBuYW1lTWFwID0ge307CisgICAgICAgIGZvcm1hdE1hcC5mb3JFYWNoKGZ1bmN0aW9u
IChrZXksIGluZGV4KSB7CisgICAgICAgICAgICBuYW1lTWFwW2tleV0gPSBpbmRleDsKKyAgICAg
ICAgfSk7CisgICAgICAgIHRoaXMuX2lkSW5kZXggPSBuYW1lTWFwWydpZCddOworICAgICAgICB0
aGlzLl9jb21taXRUaW1lSW5kZXggPSBuYW1lTWFwWydjb21taXRUaW1lJ107CisgICAgICAgIHRo
aXMuX2NvdW50SW5kZXggPSBuYW1lTWFwWydpdGVyYXRpb25Db3VudCddOworICAgICAgICB0aGlz
Ll9tZWFuSW5kZXggPSBuYW1lTWFwWydtZWFuJ107CisgICAgICAgIHRoaXMuX3N1bUluZGV4ID0g
bmFtZU1hcFsnc3VtJ107CisgICAgICAgIHRoaXMuX3NxdWFyZVN1bUluZGV4ID0gbmFtZU1hcFsn
c3F1YXJlU3VtJ107CisgICAgICAgIHRoaXMuX21hcmtlZE91dGxpZXJJbmRleCA9IG5hbWVNYXBb
J21hcmtlZE91dGxpZXInXTsKKyAgICAgICAgdGhpcy5fcmV2aXNpb25zSW5kZXggPSBuYW1lTWFw
WydyZXZpc2lvbnMnXTsKKyAgICAgICAgdGhpcy5fYnVpbGRJbmRleCA9IG5hbWVNYXBbJ2J1aWxk
J107CisgICAgICAgIHRoaXMuX2J1aWxkVGltZUluZGV4ID0gbmFtZU1hcFsnYnVpbGRUaW1lJ107
CisgICAgICAgIHRoaXMuX2J1aWxkTnVtYmVySW5kZXggPSBuYW1lTWFwWydidWlsZE51bWJlcidd
OworICAgICAgICB0aGlzLl9idWlsZGVySW5kZXggPSBuYW1lTWFwWydidWlsZGVyJ107CisgICAg
ICAgIHRoaXMuX21ldHJpY0luZGV4ID0gbmFtZU1hcFsnbWV0cmljJ107CisgICAgICAgIHRoaXMu
X2NvbmZpZ1R5cGVJbmRleCA9IG5hbWVNYXBbJ2NvbmZpZ1R5cGUnXTsKKyAgICB9CisKKyAgICBl
eHRyYWN0SWQocm93KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHJvd1t0aGlzLl9pZEluZGV4XTsK
KyAgICB9CisKKyAgICBhZG9wdFRvQW5hbHlzaXNSZXN1bHRzKHJvdykKKyAgICB7CisgICAgICAg
IHZhciBpZCA9IHJvd1t0aGlzLl9pZEluZGV4XTsKKyAgICAgICAgdmFyIG1lYW4gPSByb3dbdGhp
cy5fbWVhbkluZGV4XTsKKyAgICAgICAgdmFyIHN1bSA9IHJvd1t0aGlzLl9zdW1JbmRleF07Cisg
ICAgICAgIHZhciBzcXVhcmVTdW0gPSByb3dbdGhpcy5fc3F1YXJlU3VtSW5kZXhdOworICAgICAg
ICB2YXIgaXRlcmF0aW9uQ291bnQgPSByb3dbdGhpcy5fY291bnRJbmRleF07CisgICAgICAgIHZh
ciByZXZpc2lvbkxpc3QgPSByb3dbdGhpcy5fcmV2aXNpb25zSW5kZXhdOworICAgICAgICB2YXIg
YnVpbGRJZCA9IHJvd1t0aGlzLl9idWlsZEluZGV4XTsKKyAgICAgICAgdmFyIG1ldHJpY0lkID0g
cm93W3RoaXMuX21ldHJpY0luZGV4XTsKKyAgICAgICAgdmFyIGNvbmZpZ1R5cGUgPSByb3dbdGhp
cy5fY29uZmlnVHlwZUluZGV4XTsKKyAgICAgICAgdmFyIHNlbGYgPSB0aGlzOworICAgICAgICBy
ZXR1cm4geworICAgICAgICAgICAgaWQ6IGlkLAorICAgICAgICAgICAgYnVpbGRJZDogYnVpbGRJ
ZCwKKyAgICAgICAgICAgIG1ldHJpY0lkOiBtZXRyaWNJZCwKKyAgICAgICAgICAgIGNvbmZpZ1R5
cGU6IGNvbmZpZ1R5cGUsCisgICAgICAgICAgICByb290U2V0OiBmdW5jdGlvbiAoKSB7IHJldHVy
biBNZWFzdXJlbWVudFJvb3RTZXQuZW5zdXJlU2luZ2xldG9uKGlkLCByZXZpc2lvbkxpc3QpOyB9
LAorICAgICAgICAgICAgYnVpbGQ6IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICB2YXIg
YnVpbGRlciA9IEJ1aWxkZXIuZmluZEJ5SWQocm93W3NlbGYuX2J1aWxkZXJJbmRleF0pOworICAg
ICAgICAgICAgICAgIHJldHVybiBuZXcgQnVpbGQoaWQsIGJ1aWxkZXIsIHJvd1tzZWxmLl9idWls
ZE51bWJlckluZGV4XSk7CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgdmFsdWU6IG1lYW4s
CisgICAgICAgICAgICBzdW06IHN1bSwKKyAgICAgICAgICAgIHNxdWFyZVN1bSwKKyAgICAgICAg
ICAgIGl0ZXJhdGlvbkNvdW50OiBpdGVyYXRpb25Db3VudCwKKyAgICAgICAgICAgIGludGVydmFs
OiBNZWFzdXJlbWVudEFkYXB0b3IuY29tcHV0ZUNvbmZpZGVuY2VJbnRlcnZhbChyb3dbdGhpcy5f
Y291bnRJbmRleF0sIG1lYW4sIHN1bSwgc3F1YXJlU3VtKQorICAgICAgICB9OworICAgIH0KKwor
ICAgIHN0YXRpYyBhZ2dyZWdhdGVBbmFseXNpc1Jlc3VsdHMocmVzdWx0cykKKyAgICB7CisgICAg
ICAgIHZhciB0b3RhbFN1bSA9IDA7CisgICAgICAgIHZhciB0b3RhbFNxdWFyZVN1bSA9IDA7Cisg
ICAgICAgIHZhciB0b3RhbEl0ZXJhdGlvbkNvdW50ID0gMDsKKyAgICAgICAgdmFyIG1lYW5zID0g
W107CisgICAgICAgIGZvciAodmFyIHJlc3VsdCBvZiByZXN1bHRzKSB7CisgICAgICAgICAgICBt
ZWFucy5wdXNoKHJlc3VsdC52YWx1ZSk7CisgICAgICAgICAgICB0b3RhbFN1bSArPSByZXN1bHQu
c3VtOworICAgICAgICAgICAgdG90YWxTcXVhcmVTdW0gKz0gcmVzdWx0LnNxdWFyZVN1bTsKKyAg
ICAgICAgICAgIHRvdGFsSXRlcmF0aW9uQ291bnQgKz0gcmVzdWx0Lml0ZXJhdGlvbkNvdW50Owor
ICAgICAgICB9CisgICAgICAgIHZhciBtZWFuID0gdG90YWxTdW0gLyB0b3RhbEl0ZXJhdGlvbkNv
dW50OworICAgICAgICB2YXIgaW50ZXJ2YWw7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBp
bnRlcnZhbCA9IHRoaXMuY29tcHV0ZUNvbmZpZGVuY2VJbnRlcnZhbCh0b3RhbEl0ZXJhdGlvbkNv
dW50LCBtZWFuLCB0b3RhbFN1bSwgdG90YWxTcXVhcmVTdW0pCisgICAgICAgIH0gY2F0Y2ggKGVy
cm9yKSB7CisgICAgICAgICAgICBpbnRlcnZhbCA9IHRoaXMuY29tcHV0ZUNvbmZpZGVuY2VJbnRl
cnZhbChyZXN1bHRzLmxlbmd0aCwgbWVhbiwgU3RhdGlzdGljcy5zdW0obWVhbnMpLCBTdGF0aXN0
aWNzLnNxdWFyZVN1bShtZWFucykpOworICAgICAgICB9CisgICAgICAgIHJldHVybiB7IHZhbHVl
OiBtZWFuLCBpbnRlcnZhbDogaW50ZXJ2YWwgfTsKKyAgICB9CisKKyAgICBhZG9wdFRvU2VyaWVz
KHJvdywgc2VyaWVzLCBzZXJpZXNJbmRleCkKKyAgICB7CisgICAgICAgIHZhciBpZCA9IHJvd1t0
aGlzLl9pZEluZGV4XTsKKyAgICAgICAgdmFyIG1lYW4gPSByb3dbdGhpcy5fbWVhbkluZGV4XTsK
KyAgICAgICAgdmFyIHN1bSA9IHJvd1t0aGlzLl9zdW1JbmRleF07CisgICAgICAgIHZhciBzcXVh
cmVTdW0gPSByb3dbdGhpcy5fc3F1YXJlU3VtSW5kZXhdOworICAgICAgICB2YXIgcmV2aXNpb25M
aXN0ID0gcm93W3RoaXMuX3JldmlzaW9uc0luZGV4XTsKKyAgICAgICAgdmFyIHNlbGYgPSB0aGlz
OworICAgICAgICByZXR1cm4geworICAgICAgICAgICAgaWQ6IGlkLAorICAgICAgICAgICAgbWVh
c3VyZW1lbnQ6IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAvLyBDcmVhdGUgYSBuZXcg
TWVhc3VyZW1lbnQgY2xhc3MgdGhhdCBkb2Vzbid0IHJlcXVpcmUgbWltaWNraW5nIHdoYXQgcnVu
cy5waHAgZ2VuZXJhdGVzLgorICAgICAgICAgICAgICAgIHZhciByZXZpc2lvbnNNYXAgPSB7fTsK
KyAgICAgICAgICAgICAgICBmb3IgKHZhciByZXZpc2lvblJvdyBvZiByZXZpc2lvbkxpc3QpCisg
ICAgICAgICAgICAgICAgICAgIHJldmlzaW9uc01hcFtyZXZpc2lvblJvd1swXV0gPSByZXZpc2lv
blJvdy5zbGljZSgxKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbmV3IE1lYXN1cmVtZW50KHsK
KyAgICAgICAgICAgICAgICAgICAgaWQ6IGlkLAorICAgICAgICAgICAgICAgICAgICBtZWFuOiBt
ZWFuLAorICAgICAgICAgICAgICAgICAgICBzdW06IHN1bSwKKyAgICAgICAgICAgICAgICAgICAg
c3F1YXJlU3VtOiBzcXVhcmVTdW0sCisgICAgICAgICAgICAgICAgICAgIHJldmlzaW9uczogcmV2
aXNpb25zTWFwLAorICAgICAgICAgICAgICAgICAgICBidWlsZDogcm93W3NlbGYuX2J1aWxkSW5k
ZXhdLAorICAgICAgICAgICAgICAgICAgICBidWlsZFRpbWU6IHJvd1tzZWxmLl9idWlsZFRpbWVJ
bmRleF0sCisgICAgICAgICAgICAgICAgICAgIGJ1aWxkTnVtYmVyOiByb3dbc2VsZi5fYnVpbGRO
dW1iZXJJbmRleF0sCisgICAgICAgICAgICAgICAgICAgIGJ1aWxkZXI6IHJvd1tzZWxmLl9idWls
ZGVySW5kZXhdLAorICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSwKKyAgICAgICAg
ICAgIHJvb3RTZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIE1lYXN1cmVtZW50Um9vdFNldC5lbnN1
cmVTaW5nbGV0b24oaWQsIHJldmlzaW9uTGlzdCk7IH0sCisgICAgICAgICAgICBzZXJpZXM6IHNl
cmllcywKKyAgICAgICAgICAgIHNlcmllc0luZGV4OiBzZXJpZXNJbmRleCwKKyAgICAgICAgICAg
IHRpbWU6IHJvd1t0aGlzLl9jb21taXRUaW1lSW5kZXhdLAorICAgICAgICAgICAgdmFsdWU6IG1l
YW4sCisgICAgICAgICAgICBpbnRlcnZhbDogTWVhc3VyZW1lbnRBZGFwdG9yLmNvbXB1dGVDb25m
aWRlbmNlSW50ZXJ2YWwocm93W3RoaXMuX2NvdW50SW5kZXhdLCBtZWFuLCBzdW0sIHNxdWFyZVN1
bSkKKyAgICAgICAgfTsKKyAgICB9CisKKyAgICBzdGF0aWMgY29tcHV0ZUNvbmZpZGVuY2VJbnRl
cnZhbChpdGVyYXRpb25Db3VudCwgbWVhbiwgc3VtLCBzcXVhcmVTdW0pCisgICAgeworICAgICAg
ICB2YXIgZGVsdGEgPSBTdGF0aXN0aWNzLmNvbmZpZGVuY2VJbnRlcnZhbERlbHRhKDAuOTUsIGl0
ZXJhdGlvbkNvdW50LCBzdW0sIHNxdWFyZVN1bSk7CisgICAgICAgIHJldHVybiBpc05hTihkZWx0
YSkgPyBudWxsIDogW21lYW4gLSBkZWx0YSwgbWVhbiArIGRlbHRhXTsKKyAgICB9Cit9CkluZGV4
OiBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVscy9tZWFzdXJlbWVudC1j
bHVzdGVyLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMv
djMvbW9kZWxzL21lYXN1cmVtZW50LWNsdXN0ZXIuanMJKHJldmlzaW9uIDE5NDM1NykKKysrIFdl
YnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL21lYXN1cmVtZW50LWNsdXN0
ZXIuanMJKHdvcmtpbmcgY29weSkKQEAgLTMsMjUgKzMsNyBAQCBjbGFzcyBNZWFzdXJlbWVudENs
dXN0ZXIgewogICAgIGNvbnN0cnVjdG9yKHJlc3BvbnNlKQogICAgIHsKICAgICAgICAgdGhpcy5f
cmVzcG9uc2UgPSByZXNwb25zZTsKLSAgICAgICAgdGhpcy5faWRNYXAgPSB7fTsKLQotICAgICAg
ICB2YXIgbmFtZU1hcCA9IHt9OwotICAgICAgICByZXNwb25zZVsnZm9ybWF0TWFwJ10uZm9yRWFj
aChmdW5jdGlvbiAoa2V5LCBpbmRleCkgewotICAgICAgICAgICAgbmFtZU1hcFtrZXldID0gaW5k
ZXg7Ci0gICAgICAgIH0pOwotCi0gICAgICAgIHRoaXMuX2lkSW5kZXggPSBuYW1lTWFwWydpZCdd
OwotICAgICAgICB0aGlzLl9jb21taXRUaW1lSW5kZXggPSBuYW1lTWFwWydjb21taXRUaW1lJ107
Ci0gICAgICAgIHRoaXMuX2NvdW50SW5kZXggPSBuYW1lTWFwWydpdGVyYXRpb25Db3VudCddOwot
ICAgICAgICB0aGlzLl9tZWFuSW5kZXggPSBuYW1lTWFwWydtZWFuJ107Ci0gICAgICAgIHRoaXMu
X3N1bUluZGV4ID0gbmFtZU1hcFsnc3VtJ107Ci0gICAgICAgIHRoaXMuX3NxdWFyZVN1bUluZGV4
ID0gbmFtZU1hcFsnc3F1YXJlU3VtJ107Ci0gICAgICAgIHRoaXMuX21hcmtlZE91dGxpZXJJbmRl
eCA9IG5hbWVNYXBbJ21hcmtlZE91dGxpZXInXTsKLSAgICAgICAgdGhpcy5fcmV2aXNpb25zSW5k
ZXggPSBuYW1lTWFwWydyZXZpc2lvbnMnXTsKLSAgICAgICAgdGhpcy5fYnVpbGRJbmRleCA9IG5h
bWVNYXBbJ2J1aWxkJ107Ci0gICAgICAgIHRoaXMuX2J1aWxkVGltZUluZGV4ID0gbmFtZU1hcFsn
YnVpbGRUaW1lJ107Ci0gICAgICAgIHRoaXMuX2J1aWxkTnVtYmVySW5kZXggPSBuYW1lTWFwWydi
dWlsZE51bWJlciddOwotICAgICAgICB0aGlzLl9idWlsZGVySW5kZXggPSBuYW1lTWFwWydidWls
ZGVyJ107CisgICAgICAgIHRoaXMuX2FkYXB0b3IgPSBuZXcgTWVhc3VyZW1lbnRBZGFwdG9yKHJl
c3BvbnNlWydmb3JtYXRNYXAnXSk7CiAgICAgfQogCiAgICAgc3RhcnRUaW1lKCkgeyByZXR1cm4g
dGhpcy5fcmVzcG9uc2VbJ3N0YXJ0VGltZSddOyB9CkBAIC0zNCw3ICsxNiw3IEBAIGNsYXNzIE1l
YXN1cmVtZW50Q2x1c3RlciB7CiAKICAgICAgICAgdmFyIHNlbGYgPSB0aGlzOwogICAgICAgICBy
YXdNZWFzdXJlbWVudHMuZm9yRWFjaChmdW5jdGlvbiAocm93KSB7Ci0gICAgICAgICAgICB2YXIg
aWQgPSByb3dbc2VsZi5faWRJbmRleF07CisgICAgICAgICAgICB2YXIgaWQgPSBzZWxmLl9hZGFw
dG9yLmV4dHJhY3RJZChyb3cpOwogICAgICAgICAgICAgaWYgKGlkIGluIGlkTWFwKQogICAgICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIGlmIChyb3dbc2VsZi5fbWFya2VkT3V0bGll
ckluZGV4XSAmJiAhaW5jbHVkZU91dGxpZXJzKQpAQCAtNDIsNDEgKzI0LDcgQEAgY2xhc3MgTWVh
c3VyZW1lbnRDbHVzdGVyIHsKIAogICAgICAgICAgICAgaWRNYXBbaWRdID0gdHJ1ZTsKIAotICAg
ICAgICAgICAgdmFyIG1lYW4gPSByb3dbc2VsZi5fbWVhbkluZGV4XTsKLSAgICAgICAgICAgIHZh
ciBzdW0gPSByb3dbc2VsZi5fc3VtSW5kZXhdOwotICAgICAgICAgICAgdmFyIHNxdWFyZVN1bSA9
IHJvd1tzZWxmLl9zcXVhcmVTdW1JbmRleF07Ci0gICAgICAgICAgICBzZXJpZXMuX3Nlcmllcy5w
dXNoKHsKLSAgICAgICAgICAgICAgICBpZDogaWQsCi0gICAgICAgICAgICAgICAgX3Jhd01lYXN1
cmVtZW50OiByb3csCi0gICAgICAgICAgICAgICAgbWVhc3VyZW1lbnQ6IGZ1bmN0aW9uICgpIHsK
LSAgICAgICAgICAgICAgICAgICAgLy8gQ3JlYXRlIGEgbmV3IE1lYXN1cmVtZW50IGNsYXNzIHRo
YXQgZG9lc24ndCByZXF1aXJlIG1pbWlja2luZyB3aGF0IHJ1bnMucGhwIGdlbmVyYXRlcy4KLSAg
ICAgICAgICAgICAgICAgICAgdmFyIHJldmlzaW9uc01hcCA9IHt9OwotICAgICAgICAgICAgICAg
ICAgICBmb3IgKHZhciByZXZpc2lvblJvdyBvZiByb3dbc2VsZi5fcmV2aXNpb25zSW5kZXhdKQot
ICAgICAgICAgICAgICAgICAgICAgICAgcmV2aXNpb25zTWFwW3JldmlzaW9uUm93WzBdXSA9IHJl
dmlzaW9uUm93LnNsaWNlKDEpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IE1lYXN1
cmVtZW50KHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBpZCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgIG1lYW46IG1lYW4sCi0gICAgICAgICAgICAgICAgICAgICAgICBzdW06IHN1bSwK
LSAgICAgICAgICAgICAgICAgICAgICAgIHNxdWFyZVN1bTogc3F1YXJlU3VtLAotICAgICAgICAg
ICAgICAgICAgICAgICAgcmV2aXNpb25zOiByZXZpc2lvbnNNYXAsCi0gICAgICAgICAgICAgICAg
ICAgICAgICBidWlsZDogcm93W3NlbGYuX2J1aWxkSW5kZXhdLAotICAgICAgICAgICAgICAgICAg
ICAgICAgYnVpbGRUaW1lOiByb3dbc2VsZi5fYnVpbGRUaW1lSW5kZXhdLAotICAgICAgICAgICAg
ICAgICAgICAgICAgYnVpbGROdW1iZXI6IHJvd1tzZWxmLl9idWlsZE51bWJlckluZGV4XSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkZXI6IHJvd1tzZWxmLl9idWlsZGVySW5kZXhdLAot
ICAgICAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAg
ICAgIHNlcmllczogc2VyaWVzLAotICAgICAgICAgICAgICAgIHNlcmllc0luZGV4OiBzZXJpZXMu
X3Nlcmllcy5sZW5ndGgsCi0gICAgICAgICAgICAgICAgdGltZTogcm93W3NlbGYuX2NvbW1pdFRp
bWVJbmRleF0sCi0gICAgICAgICAgICAgICAgdmFsdWU6IG1lYW4sCi0gICAgICAgICAgICAgICAg
aW50ZXJ2YWw6IHNlbGYuX2NvbXB1dGVDb25maWRlbmNlSW50ZXJ2YWwocm93W3NlbGYuX2NvdW50
SW5kZXhdLCBtZWFuLCBzdW0sIHNxdWFyZVN1bSkKLSAgICAgICAgICAgIH0pOyAgICAgICAgICAg
IAorICAgICAgICAgICAgc2VyaWVzLl9zZXJpZXMucHVzaChzZWxmLl9hZGFwdG9yLmFkb3B0VG9T
ZXJpZXMocm93LCBzZXJpZXMsIHNlcmllcy5fc2VyaWVzLmxlbmd0aCkpOwogICAgICAgICB9KTsK
ICAgICB9Ci0KLSAgICBfY29tcHV0ZUNvbmZpZGVuY2VJbnRlcnZhbChpdGVyYXRpb25Db3VudCwg
bWVhbiwgc3VtLCBzcXVhcmVTdW0pCi0gICAgewotICAgICAgICB2YXIgZGVsdGEgPSBTdGF0aXN0
aWNzLmNvbmZpZGVuY2VJbnRlcnZhbERlbHRhKDAuOTUsIGl0ZXJhdGlvbkNvdW50LCBzdW0sIHNx
dWFyZVN1bSk7Ci0gICAgICAgIHJldHVybiBpc05hTihkZWx0YSkgPyBudWxsIDogW21lYW4gLSBk
ZWx0YSwgbWVhbiArIGRlbHRhXTsKLSAgICB9CiB9CkluZGV4OiBXZWJzaXRlcy9wZXJmLndlYmtp
dC5vcmcvcHVibGljL3YzL21vZGVscy9yZXBvc2l0b3J5LmpzCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYnNp
dGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL3JlcG9zaXRvcnkuanMJKHJldmlz
aW9uIDE5NDM1NykKKysrIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxz
L3JlcG9zaXRvcnkuanMJKHdvcmtpbmcgY29weSkKQEAgLTgsNiArOCw4IEBAIGNsYXNzIFJlcG9z
aXRvcnkgZXh0ZW5kcyBMYWJlbGVkT2JqZWN0IHsKICAgICAgICAgdGhpcy5faGFzUmVwb3J0ZWRD
b21taXRzID0gb2JqZWN0Lmhhc1JlcG9ydGVkQ29tbWl0czsKICAgICB9CiAKKyAgICBoYXNVcmxG
b3JSZXZpc2lvbigpIHsgcmV0dXJuICEhdGhpcy5fdXJsOyB9CisKICAgICB1cmxGb3JSZXZpc2lv
bihjdXJyZW50UmV2aXNpb24pCiAgICAgewogICAgICAgICByZXR1cm4gKHRoaXMuX3VybCB8fCAn
JykucmVwbGFjZSgvXCQxL2csIGN1cnJlbnRSZXZpc2lvbik7CkluZGV4OiBXZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVscy9yb290LXNldC5qcwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVscy9yb290LXNldC5qcwkocmV2
aXNpb24gMCkKKysrIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL3Jv
b3Qtc2V0LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODMgQEAKKworY2xhc3MgUm9vdFNl
dCBleHRlbmRzIERhdGFNb2RlbE9iamVjdCB7CisKKyAgICBjb25zdHJ1Y3RvcihpZCwgb2JqZWN0
KQorICAgIHsKKyAgICAgICAgc3VwZXIoaWQpOworICAgICAgICB0aGlzLl9yZXBvc2l0b3JpZXMg
PSBbXTsKKyAgICAgICAgdGhpcy5fcmVwb3NpdG9yeVRvQ29tbWl0TWFwID0ge307CisgICAgICAg
IHRoaXMuX2xhdGVzdENvbW1pdFRpbWUgPSBudWxsOworCisgICAgICAgIGlmICghb2JqZWN0KQor
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGZvciAodmFyIHJvdyBvZiBvYmplY3Qucm9v
dHMpIHsKKyAgICAgICAgICAgIHZhciByZXBvc2l0b3J5SWQgPSByb3cucmVwb3NpdG9yeTsKKyAg
ICAgICAgICAgIHZhciByZXBvc2l0b3J5ID0gUmVwb3NpdG9yeS5maW5kQnlJZChyZXBvc2l0b3J5
SWQpOworCisgICAgICAgICAgICBjb25zb2xlLmFzc2VydCghdGhpcy5fcmVwb3NpdG9yeVRvQ29t
bWl0TWFwW3JlcG9zaXRvcnlJZF0pOworICAgICAgICAgICAgdGhpcy5fcmVwb3NpdG9yeVRvQ29t
bWl0TWFwW3JlcG9zaXRvcnlJZF0gPSBDb21taXRMb2cuZW5zdXJlU2luZ2xldG9uKHJlcG9zaXRv
cnksIHJvdyk7CisgICAgICAgICAgICB0aGlzLl9yZXBvc2l0b3JpZXMucHVzaChyZXBvc2l0b3J5
KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJlcG9zaXRvcmllcygpIHsgcmV0dXJuIHRoaXMu
X3JlcG9zaXRvcmllczsgfQorICAgIGNvbW1pdEZvclJlcG9zaXRvcnkocmVwb3NpdG9yeSkgeyBy
ZXR1cm4gdGhpcy5fcmVwb3NpdG9yeVRvQ29tbWl0TWFwW3JlcG9zaXRvcnkuaWQoKV07IH0KKwor
ICAgIGxhdGVzdENvbW1pdFRpbWUoKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX2xhdGVzdENv
bW1pdFRpbWUgPT0gbnVsbCkgeworICAgICAgICAgICAgdmFyIG1heFRpbWUgPSAwOworICAgICAg
ICAgICAgZm9yICh2YXIgcmVwb3NpdG9yeUlkIGluIHRoaXMuX3JlcG9zaXRvcnlUb0NvbW1pdE1h
cCkKKyAgICAgICAgICAgICAgICBtYXhUaW1lID0gTWF0aC5tYXgobWF4VGltZSwgK3RoaXMuX3Jl
cG9zaXRvcnlUb0NvbW1pdE1hcFtyZXBvc2l0b3J5SWRdLnRpbWUoKSk7CisgICAgICAgICAgICB0
aGlzLl9sYXRlc3RDb21taXRUaW1lID0gbWF4VGltZTsKKyAgICAgICAgfQorICAgICAgICByZXR1
cm4gdGhpcy5fbGF0ZXN0Q29tbWl0VGltZTsKKyAgICB9CisKKyAgICBlcXVhbHMob3RoZXIpCisg
ICAgeworICAgICAgICBpZiAodGhpcy5fcmVwb3NpdG9yaWVzLmxlbmd0aCAhPSBvdGhlci5fcmVw
b3NpdG9yaWVzLmxlbmd0aCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgZm9y
ICh2YXIgcmVwb3NpdG9yeUlkIGluIHRoaXMuX3JlcG9zaXRvcnlUb0NvbW1pdE1hcCkgeworICAg
ICAgICAgICAgaWYgKHRoaXMuX3JlcG9zaXRvcnlUb0NvbW1pdE1hcFtyZXBvc2l0b3J5SWRdICE9
IG90aGVyLl9yZXBvc2l0b3J5VG9Db21taXRNYXBbcmVwb3NpdG9yeUlkXSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
fQorCisgICAgc3RhdGljIGNvbnRhaW5zTXVsdGlwbGVDb21taXRzRm9yUmVwb3NpdG9yeShyb290
U2V0cywgcmVwb3NpdG9yeSkKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHJlcG9zaXRv
cnkgaW5zdGFuY2VvZiBSZXBvc2l0b3J5KTsKKyAgICAgICAgaWYgKHJvb3RTZXRzLmxlbmd0aCA8
IDIpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHZhciBmaXJzdENvbW1pdCA9
IHJvb3RTZXRzWzBdLmNvbW1pdEZvclJlcG9zaXRvcnkocmVwb3NpdG9yeSk7CisgICAgICAgIGZv
ciAodmFyIHNldCBvZiByb290U2V0cykgeworICAgICAgICAgICAgdmFyIGFub3RoZXJDb21taXQg
PSBzZXQuY29tbWl0Rm9yUmVwb3NpdG9yeShyZXBvc2l0b3J5KTsKKyAgICAgICAgICAgIGlmICgh
Zmlyc3RDb21taXQgIT0gIWFub3RoZXJDb21taXQgfHwgKGZpcnN0Q29tbWl0ICYmIGZpcnN0Q29t
bWl0LnJldmlzaW9uKCkgIT0gYW5vdGhlckNvbW1pdC5yZXZpc2lvbigpKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorfQorCitjbGFzcyBNZWFzdXJlbWVudFJvb3RTZXQgZXh0ZW5kcyBSb290U2V0IHsKKworICAg
IGNvbnN0cnVjdG9yKGlkLCByZXZpc2lvbkxpc3QpCisgICAgeworICAgICAgICBzdXBlcihpZCwg
bnVsbCk7CisgICAgICAgIGZvciAodmFyIHZhbHVlcyBvZiByZXZpc2lvbkxpc3QpIHsKKyAgICAg
ICAgICAgIHZhciByZXBvc2l0b3J5SWQgPSB2YWx1ZXNbMF07CisgICAgICAgICAgICB2YXIgcmVw
b3NpdG9yeSA9IFJlcG9zaXRvcnkuZmluZEJ5SWQocmVwb3NpdG9yeUlkKTsKKworICAgICAgICAg
ICAgdGhpcy5fcmVwb3NpdG9yeVRvQ29tbWl0TWFwW3JlcG9zaXRvcnlJZF0gPSBDb21taXRMb2cu
ZW5zdXJlU2luZ2xldG9uKHJlcG9zaXRvcnksIHtyZXZpc2lvbjogdmFsdWVzWzFdLCB0aW1lOiB2
YWx1ZXNbMl19KTsKKyAgICAgICAgICAgIHRoaXMuX3JlcG9zaXRvcmllcy5wdXNoKHJlcG9zaXRv
cnkpOworICAgICAgICB9CisgICAgfQorCisgICAgc3RhdGljIGVuc3VyZVNpbmdsZXRvbihtZWFz
dXJlbWVudElkLCByZXZpc2lvbkxpc3QpCisgICAgeworICAgICAgICB2YXIgcm9vdFNldElkID0g
bWVhc3VyZW1lbnRJZCArICctcm9vdHNldCc7CisgICAgICAgIHJldHVybiBSb290U2V0LmZpbmRC
eUlkKHJvb3RTZXRJZCkgfHwgKG5ldyBNZWFzdXJlbWVudFJvb3RTZXQocm9vdFNldElkLCByZXZp
c2lvbkxpc3QpKTsKKyAgICB9Cit9CkluZGV4OiBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVi
bGljL3YzL21vZGVscy90ZXN0LWdyb3VwLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYnNpdGVzL3BlcmYu
d2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL3Rlc3QtZ3JvdXAuanMJKHJldmlzaW9uIDApCisr
KyBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVscy90ZXN0LWdyb3VwLmpz
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOTAgQEAKKworY2xhc3MgVGVzdEdyb3VwIGV4dGVu
ZHMgTGFiZWxlZE9iamVjdCB7CisKKyAgICBjb25zdHJ1Y3RvcihpZCwgb2JqZWN0KQorICAgIHsK
KyAgICAgICAgc3VwZXIoaWQsIG9iamVjdCk7CisgICAgICAgIHRoaXMuX3Rhc2tJZCA9IG9iamVj
dC50YXNrOworICAgICAgICB0aGlzLl9hdXRob3JOYW1lID0gb2JqZWN0LmF1dGhvcjsKKyAgICAg
ICAgdGhpcy5fY3JlYXRlZEF0ID0gbmV3IERhdGUob2JqZWN0LmNyZWF0ZWRBdCk7CisgICAgICAg
IHRoaXMuX2J1aWxkUmVxdWVzdHMgPSBbXTsKKyAgICAgICAgdGhpcy5fcmVxdWVzdHNBcmVJbk9y
ZGVyID0gZmFsc2U7CisgICAgICAgIHRoaXMuX3JlcG9zaXRvcmllcyA9IG51bGw7CisgICAgICAg
IHRoaXMuX3JlcXVlc3RlZFJvb3RTZXRzID0gbnVsbDsKKyAgICAgICAgdGhpcy5fYWxsUm9vdFNl
dHMgPSBudWxsOworICAgICAgICBjb25zb2xlLmFzc2VydCghb2JqZWN0LnBsYXRmb3JtIHx8IG9i
amVjdC5wbGF0Zm9ybSBpbnN0YW5jZW9mIFBsYXRmb3JtKTsKKyAgICAgICAgdGhpcy5fcGxhdGZv
cm0gPSBvYmplY3QucGxhdGZvcm07CisgICAgfQorCisgICAgY3JlYXRlZEF0KCkgeyByZXR1cm4g
dGhpcy5fY3JlYXRlZEF0OyB9CisgICAgYnVpbGRSZXF1ZXN0cygpIHsgcmV0dXJuIHRoaXMuX2J1
aWxkUmVxdWVzdHM7IH0KKyAgICBhZGRCdWlsZFJlcXVlc3QocmVxdWVzdCkKKyAgICB7CisgICAg
ICAgIHRoaXMuX2J1aWxkUmVxdWVzdHMucHVzaChyZXF1ZXN0KTsKKyAgICAgICAgdGhpcy5fcmVx
dWVzdHNBcmVJbk9yZGVyID0gZmFsc2U7CisgICAgICAgIHRoaXMuX3JlcXVlc3RlZFJvb3RTZXRz
ID0gbnVsbDsKKyAgICB9CisKKyAgICByZXF1ZXN0ZWRSb290U2V0cygpCisgICAgeworICAgICAg
ICBpZiAoIXRoaXMuX3JlcXVlc3RlZFJvb3RTZXRzKSB7CisgICAgICAgICAgICB0aGlzLl9vcmRl
ckJ1aWxkUmVxdWVzdHMoKTsKKyAgICAgICAgICAgIHRoaXMuX3JlcXVlc3RlZFJvb3RTZXRzID0g
W107CisgICAgICAgICAgICBmb3IgKHZhciByZXF1ZXN0IG9mIHRoaXMuX2J1aWxkUmVxdWVzdHMp
IHsKKyAgICAgICAgICAgICAgICB2YXIgc2V0ID0gcmVxdWVzdC5yb290U2V0KCk7CisgICAgICAg
ICAgICAgICAgaWYgKCF0aGlzLl9yZXF1ZXN0ZWRSb290U2V0cy5pbmNsdWRlcyhzZXQpKQorICAg
ICAgICAgICAgICAgICAgICB0aGlzLl9yZXF1ZXN0ZWRSb290U2V0cy5wdXNoKHNldCk7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICB0aGlzLl9yZXF1ZXN0ZWRSb290U2V0cy5zb3J0KGZ1bmN0
aW9uIChhLCBiKSB7IHJldHVybiBhLmxhdGVzdENvbW1pdFRpbWUoKSAtIGIubGF0ZXN0Q29tbWl0
VGltZSgpOyB9KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdGhpcy5fcmVxdWVzdGVkUm9v
dFNldHM7CisgICAgfQorCisgICAgcmVxdWVzdHNGb3JSb290U2V0KHJvb3RTZXQpCisgICAgewor
ICAgICAgICB0aGlzLl9vcmRlckJ1aWxkUmVxdWVzdHMoKTsKKyAgICAgICAgcmV0dXJuIHRoaXMu
X2J1aWxkUmVxdWVzdHMuZmlsdGVyKGZ1bmN0aW9uIChyZXF1ZXN0KSB7IHJldHVybiByZXF1ZXN0
LnJvb3RTZXQoKSA9PSByb290U2V0OyB9KTsKKyAgICB9CisKKyAgICBfb3JkZXJCdWlsZFJlcXVl
c3RzKCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9yZXF1ZXN0c0FyZUluT3JkZXIpCisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIHRoaXMuX2J1aWxkUmVxdWVzdHMgPSB0aGlzLl9idWls
ZFJlcXVlc3RzLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHsgcmV0dXJuIGEub3JkZXIoKSAtIGIub3Jk
ZXIoKTsgfSk7CisgICAgICAgIHRoaXMuX3JlcXVlc3RzQXJlSW5PcmRlciA9IHRydWU7CisgICAg
fQorCisgICAgZGlkU2V0UmVzdWx0KHJlcXVlc3QpCisgICAgeworICAgICAgICB0aGlzLl9hbGxS
b290U2V0cyA9IG51bGw7CisgICAgfQorCisgICAgc3RhdGljIGZldGNoQnlUYXNrKHRhc2tJZCkK
KyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLmNhY2hlZEZldGNoKCcuLi9hcGkvdGVzdC1ncm91
cHMnLCB7dGFzazogdGFza0lkfSkudGhlbihmdW5jdGlvbiAoZGF0YSkgeworICAgICAgICAgICAg
dmFyIHRlc3RHcm91cHMgPSBkYXRhWyd0ZXN0R3JvdXBzJ10ubWFwKGZ1bmN0aW9uIChyb3cpIHsK
KyAgICAgICAgICAgICAgICByb3cucGxhdGZvcm0gPSBQbGF0Zm9ybS5maW5kQnlJZChyb3cucGxh
dGZvcm0pOworICAgICAgICAgICAgICAgIHJldHVybiBuZXcgVGVzdEdyb3VwKHJvdy5pZCwgcm93
KTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICB2YXIgcm9vdElkTWFwID0ge307Cisg
ICAgICAgICAgICBmb3IgKHZhciByb290IG9mIGRhdGFbJ3Jvb3RzJ10pCisgICAgICAgICAgICAg
ICAgcm9vdElkTWFwW3Jvb3QuaWRdID0gcm9vdDsKKworICAgICAgICAgICAgdmFyIHJvb3RTZXRz
ID0gZGF0YVsncm9vdFNldHMnXS5tYXAoZnVuY3Rpb24gKHJvdykgeworICAgICAgICAgICAgICAg
IHJvdy5yb290cyA9IHJvdy5yb290cy5tYXAoZnVuY3Rpb24gKHJvb3RJZCkgeyByZXR1cm4gcm9v
dElkTWFwW3Jvb3RJZF07IH0pOworICAgICAgICAgICAgICAgIHJvdy50ZXN0R3JvdXAgPSBSb290
U2V0LmZpbmRCeUlkKHJvdy50ZXN0R3JvdXApOworICAgICAgICAgICAgICAgIHJldHVybiBuZXcg
Um9vdFNldChyb3cuaWQsIHJvdyk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgdmFy
IGJ1aWxkUmVxdWVzdHMgPSBkYXRhWydidWlsZFJlcXVlc3RzJ10ubWFwKGZ1bmN0aW9uIChyYXdE
YXRhKSB7CisgICAgICAgICAgICAgICAgcmF3RGF0YS50ZXN0R3JvdXAgPSBUZXN0R3JvdXAuZmlu
ZEJ5SWQocmF3RGF0YS50ZXN0R3JvdXApOworICAgICAgICAgICAgICAgIHJhd0RhdGEucm9vdFNl
dCA9IFJvb3RTZXQuZmluZEJ5SWQocmF3RGF0YS5yb290U2V0KTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gbmV3IEJ1aWxkUmVxdWVzdChyYXdEYXRhLmlkLCByYXdEYXRhKTsKKyAgICAgICAgICAg
IH0pOworCisgICAgICAgICAgICByZXR1cm4gdGVzdEdyb3VwczsKKyAgICAgICAgfSk7CisgICAg
fQorCit9CkluZGV4OiBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVscy90
ZXN0LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMv
bW9kZWxzL3Rlc3QuanMJKHJldmlzaW9uIDE5NDM1NykKKysrIFdlYnNpdGVzL3BlcmYud2Via2l0
Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL3Rlc3QuanMJKHdvcmtpbmcgY29weSkKQEAgLTksNyArOSw3
IEBAIGNsYXNzIFRlc3QgZXh0ZW5kcyBMYWJlbGVkT2JqZWN0IHsKICAgICAgICAgdGhpcy5fbWV0
cmljcyA9IFtdOwogCiAgICAgICAgIGlmIChpc1RvcExldmVsKQotICAgICAgICAgICAgdGhpcy5u
YW1lZFN0YXRpY01hcCgndG9wTGV2ZWxUZXN0cycpLnB1c2godGhpcyk7CisgICAgICAgICAgICB0
aGlzLmVuc3VyZU5hbWVkU3RhdGljTWFwKCd0b3BMZXZlbFRlc3RzJykucHVzaCh0aGlzKTsKICAg
ICB9CiAKICAgICBzdGF0aWMgdG9wTGV2ZWxUZXN0cygpIHsgcmV0dXJuIHRoaXMuc29ydEJ5TmFt
ZSh0aGlzLm5hbWVkU3RhdGljTWFwKCd0b3BMZXZlbFRlc3RzJykpOyB9CkluZGV4OiBXZWJzaXRl
cy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL3BhZ2VzL2FuYWx5c2lzLXRhc2stcGFnZS5qcwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL3BhZ2VzL2Fu
YWx5c2lzLXRhc2stcGFnZS5qcwkocmV2aXNpb24gMTk0MzU3KQorKysgV2Vic2l0ZXMvcGVyZi53
ZWJraXQub3JnL3B1YmxpYy92My9wYWdlcy9hbmFseXNpcy10YXNrLXBhZ2UuanMJKHdvcmtpbmcg
Y29weSkKQEAgLTUsNyArNSwxOCBAQCBjbGFzcyBBbmFseXNpc1Rhc2tQYWdlIGV4dGVuZHMgUGFn
ZVdpdGhICiAgICAgICAgIHN1cGVyKCdBbmFseXNpcyBUYXNrJyk7CiAgICAgICAgIHRoaXMuX3Rh
c2tJZCA9IG51bGw7CiAgICAgICAgIHRoaXMuX3Rhc2sgPSBudWxsOworICAgICAgICB0aGlzLl90
ZXN0R3JvdXBzID0gbnVsbDsKKyAgICAgICAgdGhpcy5fcmVuZGVyZWRUZXN0R3JvdXBzID0gbnVs
bDsKKyAgICAgICAgdGhpcy5fcmVuZGVyZWRDdXJyZW50VGVzdEdyb3VwID0gbnVsbDsKKyAgICAg
ICAgdGhpcy5fYW5hbHlzaXNSZXN1bHRzID0gbnVsbDsKKyAgICAgICAgdGhpcy5fbWVhc3VyZW1l
bnRTZXQgPSBudWxsOworICAgICAgICB0aGlzLl9zdGFydFBvaW50ID0gbnVsbDsKKyAgICAgICAg
dGhpcy5fZW5kUG9pbnQgPSBudWxsOwogICAgICAgICB0aGlzLl9lcnJvck1lc3NhZ2UgPSBudWxs
OworICAgICAgICB0aGlzLl9jdXJyZW50VGVzdEdyb3VwID0gbnVsbDsKKyAgICAgICAgdGhpcy5f
YW5hbHlzaXNSZXN1bHRzVmlld2VyID0gdGhpcy5jb250ZW50KCkucXVlcnlTZWxlY3RvcignYW5h
bHlzaXMtcmVzdWx0cy12aWV3ZXInKS5jb21wb25lbnQoKTsKKyAgICAgICAgdGhpcy5fYW5hbHlz
aXNSZXN1bHRzVmlld2VyLnNldFRlc3RHcm91cENhbGxiYWNrKHRoaXMuX3Nob3dUZXN0R3JvdXAu
YmluZCh0aGlzKSk7CisgICAgICAgIHRoaXMuX3Rlc3RHcm91cFJlc3VsdHNUYWJsZSA9IHRoaXMu
Y29udGVudCgpLnF1ZXJ5U2VsZWN0b3IoJ3Rlc3QtZ3JvdXAtcmVzdWx0cy10YWJsZScpLmNvbXBv
bmVudCgpOwogICAgIH0KIAogICAgIHRpdGxlKCkgeyByZXR1cm4gdGhpcy5fdGFzayA/IHRoaXMu
X3Rhc2subGFiZWwoKSA6ICdBbmFseXNpcyBUYXNrJzsgfQpAQCAtMTMsMTcgKzI0LDk2IEBAIGNs
YXNzIEFuYWx5c2lzVGFza1BhZ2UgZXh0ZW5kcyBQYWdlV2l0aEgKIAogICAgIHVwZGF0ZUZyb21T
ZXJpYWxpemVkU3RhdGUoc3RhdGUpCiAgICAgewotICAgICAgICB2YXIgdGFza0lkID0gcGFyc2VJ
bnQoc3RhdGUucmVtYWluaW5nUm91dGUpOwotICAgICAgICBpZiAodGFza0lkICE9IHN0YXRlLnJl
bWFpbmluZ1JvdXRlKSB7Ci0gICAgICAgICAgICB0aGlzLl9lcnJvck1lc3NhZ2UgPSBgSW52YWxp
ZCBhbmFseXNpcyB0YXNrIElEOiAke3N0YXRlLnJlbWFpbmluZ1JvdXRlfWA7CisgICAgICAgIHZh
ciBzZWxmID0gdGhpczsKKyAgICAgICAgaWYgKHN0YXRlLnJlbWFpbmluZ1JvdXRlKSB7CisgICAg
ICAgICAgICB0aGlzLl90YXNrSWQgPSBwYXJzZUludChzdGF0ZS5yZW1haW5pbmdSb3V0ZSk7Cisg
ICAgICAgICAgICBBbmFseXNpc1Rhc2suZmV0Y2hCeUlkKHRoaXMuX3Rhc2tJZCkudGhlbih0aGlz
Ll9kaWRGZXRjaFRhc2suYmluZCh0aGlzKSwgZnVuY3Rpb24gKGVycm9yKSB7CisgICAgICAgICAg
ICAgICAgc2VsZi5fZXJyb3JNZXNzYWdlID0gYEZhaWxlZCB0byBmZXRjaCB0aGUgYW5hbHlzaXMg
dGFzayAke3N0YXRlLnJlbWFpbmluZ1JvdXRlfTogJHtlcnJvcn1gOworICAgICAgICAgICAgICAg
IHNlbGYucmVuZGVyKCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIFRlc3RHcm91cC5m
ZXRjaEJ5VGFzayh0aGlzLl90YXNrSWQpLnRoZW4odGhpcy5fZGlkRmV0Y2hUZXN0R3JvdXBzLmJp
bmQodGhpcykpOworICAgICAgICAgICAgQW5hbHlzaXNSZXN1bHRzLmZldGNoKHRoaXMuX3Rhc2tJ
ZCkudGhlbih0aGlzLl9kaWRGZXRjaEFuYWx5c2lzUmVzdWx0cy5iaW5kKHRoaXMpKTsKKyAgICAg
ICAgfSBlbHNlIGlmIChzdGF0ZS5idWlsZFJlcXVlc3QpIHsKKyAgICAgICAgICAgIHZhciBidWls
ZFJlcXVlc3RJZCA9IHBhcnNlSW50KHN0YXRlLmJ1aWxkUmVxdWVzdCk7CisgICAgICAgICAgICBB
bmFseXNpc1Rhc2suZmV0Y2hCeUJ1aWxkUmVxdWVzdElkKGJ1aWxkUmVxdWVzdElkKS50aGVuKHRo
aXMuX2RpZEZldGNoVGFzay5iaW5kKHRoaXMpKS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAg
ICAgICAgICBpZiAoc2VsZi5fdGFzaykgeworICAgICAgICAgICAgICAgICAgICBUZXN0R3JvdXAu
ZmV0Y2hCeVRhc2soc2VsZi5fdGFzay5pZCgpKS50aGVuKHNlbGYuX2RpZEZldGNoVGVzdEdyb3Vw
cy5iaW5kKHNlbGYpKTsKKyAgICAgICAgICAgICAgICAgICAgQW5hbHlzaXNSZXN1bHRzLmZldGNo
KHNlbGYuX3Rhc2suaWQoKSkudGhlbih0aGlzLl9kaWRGZXRjaEFuYWx5c2lzUmVzdWx0cy5iaW5k
KHRoaXMpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LCBmdW5jdGlvbiAoZXJy
b3IpIHsKKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJvck1lc3NhZ2UgPSBgRmFpbGVkIHRvIGZl
dGNoIHRoZSBhbmFseXNpcyB0YXNrIGZvciB0aGUgYnVpbGQgcmVxdWVzdCAke2J1aWxkUmVxdWVz
dElkfTogJHtlcnJvcn1gOworICAgICAgICAgICAgICAgIHNlbGYucmVuZGVyKCk7CisgICAgICAg
ICAgICB9KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIF9kaWRGZXRjaFRhc2sodGFzaykKKyAg
ICB7CisgICAgICAgIHRoaXMuX3Rhc2sgPSB0YXNrOworICAgICAgICB2YXIgcGxhdGZvcm0gPSB0
YXNrLnBsYXRmb3JtKCk7CisgICAgICAgIHZhciBtZXRyaWMgPSB0YXNrLm1ldHJpYygpOworICAg
ICAgICB2YXIgbGFzdE1vZGlmaWVkID0gcGxhdGZvcm0ubGFzdE1vZGlmaWVkKG1ldHJpYyk7CisK
KyAgICAgICAgdGhpcy5fbWVhc3VyZW1lbnRTZXQgPSBNZWFzdXJlbWVudFNldC5maW5kU2V0KHBs
YXRmb3JtLmlkKCksIG1ldHJpYy5pZCgpLCBsYXN0TW9kaWZpZWQpOworICAgICAgICB0aGlzLl9t
ZWFzdXJlbWVudFNldC5mZXRjaEJldHdlZW4odGFzay5zdGFydFRpbWUoKSwgdGFzay5lbmRUaW1l
KCksIHRoaXMuX2RpZEZldGNoTWVhc3VyZW1lbnQuYmluZCh0aGlzKSk7CisKKyAgICAgICAgdmFy
IGZvcm1hdHRlciA9IG1ldHJpYy5tYWtlRm9ybWF0dGVyKDQpOworICAgICAgICB0aGlzLl9hbmFs
eXNpc1Jlc3VsdHNWaWV3ZXIuc2V0VmFsdWVGb3JtYXR0ZXIoZm9ybWF0dGVyKTsKKyAgICAgICAg
dGhpcy5fYW5hbHlzaXNSZXN1bHRzVmlld2VyLnNldFNtYWxsZXJJc0JldHRlcihtZXRyaWMuaXNT
bWFsbGVyQmV0dGVyKCkpOworICAgICAgICB0aGlzLl90ZXN0R3JvdXBSZXN1bHRzVGFibGUuc2V0
VmFsdWVGb3JtYXR0ZXIoZm9ybWF0dGVyKTsKKworICAgICAgICB0aGlzLnJlbmRlcigpOworICAg
IH0KKworICAgIF9kaWRGZXRjaE1lYXN1cmVtZW50KCkKKyAgICB7CisgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KHRoaXMuX3Rhc2spOworICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9tZWFzdXJl
bWVudFNldCk7CisgICAgICAgIHZhciBzZXJpZXMgPSB0aGlzLl9tZWFzdXJlbWVudFNldC5mZXRj
aGVkVGltZVNlcmllcygnY3VycmVudCcsIGZhbHNlLCBmYWxzZSk7CisgICAgICAgIHZhciBzdGFy
dFBvaW50ID0gc2VyaWVzLmZpbmRCeUlkKHRoaXMuX3Rhc2suc3RhcnRNZWFzdXJlbWVudElkKCkp
OworICAgICAgICB2YXIgZW5kUG9pbnQgPSBzZXJpZXMuZmluZEJ5SWQodGhpcy5fdGFzay5lbmRN
ZWFzdXJlbWVudElkKCkpOworICAgICAgICBpZiAoIXN0YXJ0UG9pbnQgfHwgIWVuZFBvaW50KQog
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuX2FuYWx5c2lzUmVzdWx0c1ZpZXdl
ci5zZXRQb2ludHMoc3RhcnRQb2ludCwgZW5kUG9pbnQpOworCisgICAgICAgIHRoaXMuX3N0YXJ0
UG9pbnQgPSBzdGFydFBvaW50OworICAgICAgICB0aGlzLl9lbmRQb2ludCA9IGVuZFBvaW50Owor
ICAgICAgICB0aGlzLnJlbmRlcigpOworICAgIH0KKworICAgIF9kaWRGZXRjaFRlc3RHcm91cHMo
dGVzdEdyb3VwcykKKyAgICB7CisgICAgICAgIHRoaXMuX3Rlc3RHcm91cHMgPSB0ZXN0R3JvdXBz
LnNvcnQoZnVuY3Rpb24gKGEsIGIpIHsgcmV0dXJuICthLmNyZWF0ZWRBdCgpIC0gYi5jcmVhdGVk
QXQoKTsgfSk7CisgICAgICAgIHRoaXMuX2N1cnJlbnRUZXN0R3JvdXAgPSB0ZXN0R3JvdXBzLmxl
bmd0aCA/IHRlc3RHcm91cHNbMF0gOiBudWxsOworCisgICAgICAgIHRoaXMuX2FuYWx5c2lzUmVz
dWx0c1ZpZXdlci5zZXRUZXN0R3JvdXBzKHRlc3RHcm91cHMpOworICAgICAgICB0aGlzLl90ZXN0
R3JvdXBSZXN1bHRzVGFibGUuc2V0VGVzdEdyb3VwKHRoaXMuX2N1cnJlbnRUZXN0R3JvdXApOwor
ICAgICAgICB0aGlzLl9hc3NpZ25UZXN0UmVzdWx0c0lmUG9zc2libGUoKTsKKyAgICAgICAgdGhp
cy5yZW5kZXIoKTsKKyAgICB9CisKKyAgICBfZGlkRmV0Y2hBbmFseXNpc1Jlc3VsdHMocmVzdWx0
cykKKyAgICB7CisgICAgICAgIHRoaXMuX2FuYWx5c2lzUmVzdWx0cyA9IHJlc3VsdHM7CisgICAg
ICAgIGlmICh0aGlzLl9hc3NpZ25UZXN0UmVzdWx0c0lmUG9zc2libGUoKSkKKyAgICAgICAgICAg
IHRoaXMucmVuZGVyKCk7CisgICAgfQorCisgICAgX2Fzc2lnblRlc3RSZXN1bHRzSWZQb3NzaWJs
ZSgpCisgICAgeworICAgICAgICBpZiAoIXRoaXMuX3Rhc2sgfHwgIXRoaXMuX3Rlc3RHcm91cHMg
fHwgIXRoaXMuX2FuYWx5c2lzUmVzdWx0cykKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgICAgICBmb3IgKHZhciBncm91cCBvZiB0aGlzLl90ZXN0R3JvdXBzKSB7CisgICAgICAgICAg
ICBmb3IgKHZhciByZXF1ZXN0IG9mIGdyb3VwLmJ1aWxkUmVxdWVzdHMoKSkKKyAgICAgICAgICAg
ICAgICByZXF1ZXN0LnNldFJlc3VsdCh0aGlzLl9hbmFseXNpc1Jlc3VsdHMuZmluZChyZXF1ZXN0
LmJ1aWxkSWQoKSwgdGhpcy5fdGFzay5tZXRyaWMoKSkpOwogICAgICAgICB9CiAKLSAgICAgICAg
dmFyIHNlbGYgPSB0aGlzOwotICAgICAgICBBbmFseXNpc1Rhc2suZmV0Y2hCeUlkKHRhc2tJZCku
dGhlbihmdW5jdGlvbiAodGFzaykgewotICAgICAgICAgICAgc2VsZi5fdGFzayA9IHRhc2s7Ci0g
ICAgICAgICAgICBzZWxmLnJlbmRlcigpOwotICAgICAgICB9KTsKKyAgICAgICAgdGhpcy5fYW5h
bHlzaXNSZXN1bHRzVmlld2VyLmRpZFVwZGF0ZVJlc3VsdHMoKTsKKyAgICAgICAgdGhpcy5fdGVz
dEdyb3VwUmVzdWx0c1RhYmxlLmRpZFVwZGF0ZVJlc3VsdHMoKTsKKworICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9CiAKICAgICByZW5kZXIoKQpAQCAtMzQsMjggKzEyNCw5MyBAQCBjbGFzcyBB
bmFseXNpc1Rhc2tQYWdlIGV4dGVuZHMgUGFnZVdpdGhICiAKICAgICAgICAgdGhpcy5jb250ZW50
KCkucXVlcnlTZWxlY3RvcignLmVycm9yLW1lc3NhZ2UnKS50ZXh0Q29udGVudCA9IHRoaXMuX2Vy
cm9yTWVzc2FnZSB8fCAnJzsKIAotICAgICAgICB2YXIgdjJVUkwgPSBsb2NhdGlvbi5ocmVmLnJl
cGxhY2UoJy92My8nLCAnL3YyLycpOwotICAgICAgICB0aGlzLmNvbnRlbnQoKS5xdWVyeVNlbGVj
dG9yKCcub3ZlcnZpZXctY2hhcnQnKS5pbm5lckhUTUwgPSBgTm90IHJlYWR5LiBVc2UgPGEgaHJl
Zj0iJHt2MlVSTH0iPnYyIHBhZ2U8L2E+IGZvciBub3cuYDsKKyAgICAgICAgdmFyIHYyVVJMID0g
YC92Mi8jL2FuYWx5c2lzL3Rhc2svJHt0aGlzLl90YXNrSWR9YDsKKyAgICAgICAgdGhpcy5jb250
ZW50KCkucXVlcnlTZWxlY3RvcignLmVycm9yLW1lc3NhZ2UnKS5pbm5lckhUTUwgKz0KKyAgICAg
ICAgICAgIGA8cD5UaGlzIHBhZ2UgaXMgcmVhZCBvbmx5IGZvciBub3cuIFRvIHNjaGVkdWxlIGEg
bmV3IEEvQiB0ZXN0aW5nIGpvYiwgdXNlIDxhIGhyZWY9IiR7djJVUkx9Ij52MiBwYWdlPC9hPi48
L3A+YDsKIAogICAgICAgICBpZiAodGhpcy5fdGFzaykgewogICAgICAgICAgICAgdGhpcy5yZW5k
ZXJSZXBsYWNlKHRoaXMuY29udGVudCgpLnF1ZXJ5U2VsZWN0b3IoJy5hbmFseXNpcy10YXNrLW5h
bWUnKSwgdGhpcy5fdGFzay5uYW1lKCkpOworICAgICAgICAgICAgdmFyIHBsYXRmb3JtID0gdGhp
cy5fdGFzay5wbGF0Zm9ybSgpOworICAgICAgICAgICAgdmFyIG1ldHJpYyA9IHRoaXMuX3Rhc2su
bWV0cmljKCk7CisgICAgICAgICAgICB2YXIgYW5jaG9yID0gdGhpcy5jb250ZW50KCkucXVlcnlT
ZWxlY3RvcignLnBsYXRmb3JtLW1ldHJpYy1uYW1lcyBhJyk7CisgICAgICAgICAgICB0aGlzLnJl
bmRlclJlcGxhY2UoYW5jaG9yLCBtZXRyaWMuZnVsbE5hbWUoKSArICcgb24gJyArIHBsYXRmb3Jt
LmxhYmVsKCkpOworICAgICAgICAgICAgYW5jaG9yLmhyZWYgPSB0aGlzLnJvdXRlcigpLnVybCgn
Y2hhcnRzJywgQ2hhcnRzUGFnZS5jcmVhdGVTdGF0ZUZvckFuYWx5c2lzVGFzayh0aGlzLl90YXNr
KSk7CiAgICAgICAgIH0KIAorICAgICAgICB0aGlzLl9hbmFseXNpc1Jlc3VsdHNWaWV3ZXIuc2V0
Q3VycmVudFRlc3RHcm91cCh0aGlzLl9jdXJyZW50VGVzdEdyb3VwKTsKKyAgICAgICAgdGhpcy5f
YW5hbHlzaXNSZXN1bHRzVmlld2VyLnJlbmRlcigpOworCisgICAgICAgIHZhciBlbGVtZW50ID0g
Q29tcG9uZW50QmFzZS5jcmVhdGVFbGVtZW50OworICAgICAgICB2YXIgbGluayA9IENvbXBvbmVu
dEJhc2UuY3JlYXRlTGluazsKKyAgICAgICAgaWYgKHRoaXMuX3Rlc3RHcm91cHMgIT0gdGhpcy5f
cmVuZGVyZWRUZXN0R3JvdXBzKSB7CisgICAgICAgICAgICB0aGlzLl9yZW5kZXJlZFRlc3RHcm91
cHMgPSB0aGlzLl90ZXN0R3JvdXBzOworICAgICAgICAgICAgdmFyIHNlbGYgPSB0aGlzOworICAg
ICAgICAgICAgdGhpcy5yZW5kZXJSZXBsYWNlKHRoaXMuY29udGVudCgpLnF1ZXJ5U2VsZWN0b3Io
Jy50ZXN0LWdyb3VwLWxpc3QnKSwKKyAgICAgICAgICAgICAgICB0aGlzLl90ZXN0R3JvdXBzLm1h
cChmdW5jdGlvbiAoZ3JvdXApIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQo
J2xpJywge2NsYXNzOiAndGVzdC1ncm91cC1saXN0LScgKyBncm91cC5pZCgpfSwgbGluayhncm91
cC5sYWJlbCgpLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9z
aG93VGVzdEdyb3VwKGdyb3VwKTsKKyAgICAgICAgICAgICAgICAgICAgfSkpOworICAgICAgICAg
ICAgICAgIH0pKTsKKyAgICAgICAgICAgIHRoaXMuX3JlbmRlcmVkQ3VycmVudFRlc3RHcm91cCA9
IG51bGw7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHRoaXMuX3JlbmRlcmVkQ3VycmVudFRlc3RH
cm91cCAhPSB0aGlzLl9jdXJyZW50VGVzdEdyb3VwKSB7CisgICAgICAgICAgICBpZiAodGhpcy5f
cmVuZGVyZWRDdXJyZW50VGVzdEdyb3VwKSB7CisgICAgICAgICAgICAgICAgdmFyIGVsZW1lbnQg
PSB0aGlzLmNvbnRlbnQoKS5xdWVyeVNlbGVjdG9yKCcudGVzdC1ncm91cC1saXN0LScgKyB0aGlz
Ll9yZW5kZXJlZEN1cnJlbnRUZXN0R3JvdXAuaWQoKSk7CisgICAgICAgICAgICAgICAgaWYgKGVs
ZW1lbnQpCisgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgnc2Vs
ZWN0ZWQnKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICh0aGlzLl9jdXJyZW50VGVz
dEdyb3VwKSB7CisgICAgICAgICAgICAgICAgdmFyIGVsZW1lbnQgPSB0aGlzLmNvbnRlbnQoKS5x
dWVyeVNlbGVjdG9yKCcudGVzdC1ncm91cC1saXN0LScgKyB0aGlzLl9jdXJyZW50VGVzdEdyb3Vw
LmlkKCkpOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50KQorICAgICAgICAgICAgICAgICAg
ICBlbGVtZW50LmNsYXNzTGlzdC5hZGQoJ3NlbGVjdGVkJyk7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICB0aGlzLl9yZW5kZXJlZEN1cnJlbnRUZXN0R3JvdXAgPSB0aGlzLl9jdXJyZW50VGVz
dEdyb3VwOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5fdGVzdEdyb3VwUmVzdWx0c1RhYmxl
LnJlbmRlcigpOworCiAgICAgICAgIEluc3RydW1lbnRhdGlvbi5lbmRNZWFzdXJpbmdUaW1lKCdB
bmFseXNpc1Rhc2tQYWdlJywgJ3JlbmRlcicpOwogICAgIH0KIAorICAgIF9zaG93VGVzdEdyb3Vw
KHRlc3RHcm91cCkKKyAgICB7CisgICAgICAgIHRoaXMuX2N1cnJlbnRUZXN0R3JvdXAgPSB0ZXN0
R3JvdXA7ICAgICAgICAKKyAgICAgICAgdGhpcy5fdGVzdEdyb3VwUmVzdWx0c1RhYmxlLnNldFRl
c3RHcm91cCh0aGlzLl9jdXJyZW50VGVzdEdyb3VwKTsKKyAgICAgICAgdGhpcy5yZW5kZXIoKTsK
KyAgICB9CisKICAgICBzdGF0aWMgaHRtbFRlbXBsYXRlKCkKICAgICB7CiAgICAgICAgIHJldHVy
biBgCi0gICAgICAgICAgICA8aDIgY2xhc3M9ImFuYWx5c2lzLXRhc2stbmFtZSI+PC9oMj4KLSAg
ICAgICAgICAgIDxwIGNsYXNzPSJlcnJvci1tZXNzYWdlIj48L3A+Ci0gICAgICAgICAgICA8ZGl2
IGNsYXNzPSJvdmVydmlldy1jaGFydCI+PC9kaXY+CisgICAgICAgIDxkaXYgY2xhc3M9ImFuYWx5
c2lzLXRhc2wtcGFnZS1jb250YWluZXIiPgorICAgICAgICAgICAgPGRpdiBjbGFzcz0iYW5hbHlz
aXMtdGFzbC1wYWdlIj4KKyAgICAgICAgICAgICAgICA8aDIgY2xhc3M9ImFuYWx5c2lzLXRhc2st
bmFtZSI+PC9oMj4KKyAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InBsYXRmb3JtLW1ldHJpYy1u
YW1lcyI+PGEgaHJlZj0iIj48L2E+PC9oMz4KKyAgICAgICAgICAgICAgICA8cCBjbGFzcz0iZXJy
b3ItbWVzc2FnZSI+PC9wPgorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im92ZXJ2aWV3LWNo
YXJ0Ij48L2Rpdj4KKyAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0iYW5hbHlzaXMtcmVz
dWx0cy12aWV3Ij4KKyAgICAgICAgICAgICAgICAgICAgPGFuYWx5c2lzLXJlc3VsdHMtdmlld2Vy
PjwvYW5hbHlzaXMtcmVzdWx0cy12aWV3ZXI+CisgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgor
ICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJ0ZXN0LWdyb3VwLXZpZXciPgorICAgICAg
ICAgICAgICAgICAgICA8dWwgY2xhc3M9InRlc3QtZ3JvdXAtbGlzdCI+PC91bD4KKyAgICAgICAg
ICAgICAgICAgICAgPGRpdiBjbGFzcz0idGVzdC1ncm91cC1kZXRhaWxzIj48dGVzdC1ncm91cC1y
ZXN1bHRzLXRhYmxlPjwvdGVzdC1ncm91cC1yZXN1bHRzLXRhYmxlPjwvZGl2PgorICAgICAgICAg
ICAgICAgIDwvc2VjdGlvbj4KKyAgICAgICAgICAgIDwvZGl2PgorICAgICAgICA8L2Rpdj4KIGA7
CiAgICAgfQogCiAgICAgc3RhdGljIGNzc1RlbXBsYXRlKCkKICAgICB7CiAgICAgICAgIHJldHVy
biBgCisgICAgICAgICAgICAuYW5hbHlzaXMtdGFzbC1wYWdlLWNvbnRhaW5lciB7CisgICAgICAg
ICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
LmFuYWx5c2lzLXRhc2wtcGFnZSB7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJs
b2NrOworICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IGxlZnQ7CisgICAgICAgICAgICB9CisK
ICAgICAgICAgICAgIC5hbmFseXNpcy10YXNrLW5hbWUgewogICAgICAgICAgICAgICAgIGZvbnQt
c2l6ZTogMS4ycmVtOwogICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBpbmhlcml0OwpAQCAt
NjQsMTIgKzIxOSw4NCBAQCBjbGFzcyBBbmFseXNpc1Rhc2tQYWdlIGV4dGVuZHMgUGFnZVdpdGhI
CiAgICAgICAgICAgICAgICAgcGFkZGluZzogMDsKICAgICAgICAgICAgIH0KIAorICAgICAgICAg
ICAgLnBsYXRmb3JtLW1ldHJpYy1uYW1lcyB7CisgICAgICAgICAgICAgICAgZm9udC1zaXplOiAx
cmVtOworICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBpbmhlcml0OworICAgICAgICAgICAg
ICAgIGNvbG9yOiAjYzkzOworICAgICAgICAgICAgICAgIG1hcmdpbjogMCAxcmVtOworICAgICAg
ICAgICAgICAgIHBhZGRpbmc6IDA7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC5wbGF0
Zm9ybS1tZXRyaWMtbmFtZXMgYSB7CisgICAgICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBu
b25lOworICAgICAgICAgICAgICAgIGNvbG9yOiBpbmhlcml0OworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICAucGxhdGZvcm0tbWV0cmljLW5hbWVzOmVtcHR5IHsKKyAgICAgICAgICAgICAg
ICBtYXJnaW46IDA7CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIC5lcnJvci1tZXNzYWdl
Om5vdCg6ZW1wdHkpIHsKICAgICAgICAgICAgICAgICBtYXJnaW46IDFyZW07CiAgICAgICAgICAg
ICAgICAgcGFkZGluZzogMDsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgLm92ZXJ2aWV3
LWNoYXJ0IHsKKyAgICAgICAgICAgIC5hbmFseXNpcy1yZXN1bHRzLXZpZXcgeworICAgICAgICAg
ICAgICAgIG1hcmdpbjogMXJlbTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLnRlc3Qt
Z3JvdXAtdmlldyB7CisgICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDsKKyAgICAgICAgICAg
ICAgICBmbGV4LWRpcmVjdGlvbjogcm93OworICAgICAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBz
dHJldGNoOworICAgICAgICAgICAgICAgIGFsaWduLWNvbnRlbnQ6IHN0cmV0Y2g7CisgICAgICAg
ICAgICAgICAgbWFyZ2luOiAwIDFyZW07CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC50
ZXN0LWdyb3VwLWRldGFpbHMgeworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CisgICAg
ICAgICAgICAgICAgZmxleC1ncm93OiAxOworICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206
IDFyZW07CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC50ZXN0LWNvbmZpZ3VyYXRpb24g
aDMgeworICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMXJlbTsKKyAgICAgICAgICAgICAgICBm
b250LXdlaWdodDogaW5oZXJpdDsKKyAgICAgICAgICAgICAgICBjb2xvcjogaW5oZXJpdDsKKyAg
ICAgICAgICAgICAgICBtYXJnaW46IDAgMXJlbTsKKyAgICAgICAgICAgICAgICBwYWRkaW5nOiAw
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAudGVzdC1ncm91cC1saXN0Om5vdCg6ZW1w
dHkpIHsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDA7CisgICAgICAgICAgICAgICAgcGFkZGlu
ZzogMC4ycmVtIDA7CisgICAgICAgICAgICAgICAgbGlzdC1zdHlsZTogbm9uZTsKKyAgICAgICAg
ICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgYm9yZGVyLXJp
Z2h0OiBzb2xpZCAxcHggI2NjYzsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLnRlc3Qt
Z3JvdXAtbGlzdCBsaSB7CisgICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIC50ZXN0LWdyb3VwLWxpc3QgYSB7CisgICAgICAgICAgICAg
ICAgZGlzcGxheTogYmxvY2s7CisgICAgICAgICAgICAgICAgY29sb3I6IGluaGVyaXQ7CisgICAg
ICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOworICAgICAgICAgICAgICAgIGZvbnQt
c2l6ZTogMC45cmVtOworICAgICAgICAgICAgICAgIG1hcmdpbjogMDsKKyAgICAgICAgICAgICAg
ICBwYWRkaW5nOiAwLjJyZW07CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC50ZXN0LWdy
b3VwLWxpc3QgbGkuc2VsZWN0ZWQgYSB7CisgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogcmdi
YSgyMDQsIDE1MywgNTEsIDAuMSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC50ZXN0
LWdyb3VwLWxpc3QgbGk6bm90KC5zZWxlY3RlZCkgYTpob3ZlciB7CisgICAgICAgICAgICAgICAg
YmFja2dyb3VuZDogI2VlZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLngtb3ZlcnZp
ZXctY2hhcnQgewogICAgICAgICAgICAgICAgIHdpZHRoOiBhdXRvOwogICAgICAgICAgICAgICAg
IGhlaWdodDogMTByZW07CiAgICAgICAgICAgICAgICAgbWFyZ2luOiAxcmVtOwpJbmRleDogV2Vi
c2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9wYWdlcy9jaGFydHMtcGFnZS5qcwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL3BhZ2VzL2NoYXJ0
cy1wYWdlLmpzCShyZXZpc2lvbiAxOTQzNTcpCisrKyBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcv
cHVibGljL3YzL3BhZ2VzL2NoYXJ0cy1wYWdlLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xOSw2ICsx
OSwxNyBAQCBjbGFzcyBDaGFydHNQYWdlIGV4dGVuZHMgUGFnZVdpdGhDaGFydHMgCiAgICAgICAg
IHJldHVybiBzdGF0ZTsKICAgICB9CiAKKyAgICBzdGF0aWMgY3JlYXRlU3RhdGVGb3JBbmFseXNp
c1Rhc2sodGFzaykKKyAgICB7CisgICAgICAgIHZhciBkaWZmID0gKHRhc2suZW5kVGltZSgpIC0g
dGFzay5zdGFydFRpbWUoKSkgKiAwLjE7CisgICAgICAgIHZhciBzdGF0ZSA9IHsKKyAgICAgICAg
ICAgIHBhbmVMaXN0OiBbW3Rhc2sucGxhdGZvcm0oKS5pZCgpLCB0YXNrLm1ldHJpYygpLmlkKCld
XSwKKyAgICAgICAgICAgIHNpbmNlOiBNYXRoLnJvdW5kKHRhc2suc3RhcnRUaW1lKCkgLSAoRGF0
ZS5ub3coKSAtIHRhc2suc3RhcnRUaW1lKCkpICogMC4xKSwKKyAgICAgICAgICAgIHpvb206IFt0
YXNrLnN0YXJ0VGltZSgpIC0gZGlmZiwgdGFzay5lbmRUaW1lKCkgKyBkaWZmXSwKKyAgICAgICAg
fTsKKyAgICAgICAgcmV0dXJuIHN0YXRlOworICAgIH0KKwogICAgIG9wZW4oc3RhdGUpCiAgICAg
ewogICAgICAgICB0aGlzLnRvb2xiYXIoKS5zZXROdW1iZXJPZkRheXNDYWxsYmFjayh0aGlzLnNl
dE51bWJlck9mRGF5c0Zyb21Ub29sYmFyLmJpbmQodGhpcykpOwo=
</data>
<flag name="review"
          id="292787"
          type_id="1"
          status="+"
          setter="cdumez"
    />
          </attachment>
      

    </bug>

</bugzilla>