<?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>127039</bug_id>
          
          <creation_ts>2014-01-15 02:45:04 -0800</creation_ts>
          <short_desc>Remove the CSS selector profiler.</short_desc>
          <delta_ts>2014-01-15 12:05:14 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andreas Kling">kling</reporter>
          <assigned_to name="Andreas Kling">kling</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>graouts</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>joepeck</cc>
    
    <cc>kling</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>968246</commentid>
    <comment_count>0</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2014-01-15 02:45:04 -0800</bug_when>
    <thetext>The selector profiler was painting a mostly fictional picture of what
selectors we were spending time on. It never really grokked the fast
path selectors, nor did it understand recent additions like the extra 
cascading pass or the selector JIT.

Somewhat ironically, this may end up making some selectors run faster
since it removes a number of brances in hot code.

FWIW, Blink removed theirs here &lt;https://codereview.chromium.org/21049007&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>968247</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2014-01-15 02:45:26 -0800</bug_when>
    <thetext>&lt;rdar://problem/15823608&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>968250</commentid>
    <comment_count>2</comment_count>
      <attachid>221253</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2014-01-15 02:50:10 -0800</bug_when>
    <thetext>Created attachment 221253
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>968252</commentid>
    <comment_count>3</comment_count>
      <attachid>221255</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2014-01-15 02:56:54 -0800</bug_when>
    <thetext>Created attachment 221255
Patch with removed files</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>968255</commentid>
    <comment_count>4</comment_count>
      <attachid>221255</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2014-01-15 03:06:58 -0800</bug_when>
    <thetext>Comment on attachment 221255
Patch with removed files

Selector profiles are somewhere between useless and actively harmful unless you know a ton about engine internals. Removal is a good idea.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>968409</commentid>
    <comment_count>5</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2014-01-15 11:26:36 -0800</bug_when>
    <thetext>Sounds good. I never liked it either.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>968411</commentid>
    <comment_count>6</comment_count>
      <attachid>221255</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-01-15 11:34:08 -0800</bug_when>
    <thetext>Comment on attachment 221255
Patch with removed files

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

&gt; Source/WebInspectorUI/UserInterface/CSSSelectorProfileType.js:-61
&gt; -        return WebInspector.UIString(&quot;CSS selector profiles show how long the selector matching has taken in total and how many times a certain selector has matched DOM elements (the results are approximate due to matching algorithm optimizations.)&quot;);

Nit: This patch removes localized strings but does not update localizedStrings.js.

To automatically update the localized strings you can run:

    shell&gt; ./Tools/Scripts/extract-localizable-js-strings ./Source/WebInspectorUI/Localizations/en.lproj/localizedStrings.js ./Source/WebInspectorUI/UserInterface

There is a basic script you can run, something like ./Tools/Scripts/update-localizable-strings, but the command above just targets WebInspectorUI strings and takes ~1 second.

I&apos;ll update the strings now.

Good job on this removal! I think you covered everything!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>968412</commentid>
    <comment_count>7</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-01-15 11:35:39 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; I&apos;ll update the strings now.

Actually, this hasn&apos;t landed yet! So there is time for you to update the strings =)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>968422</commentid>
    <comment_count>8</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2014-01-15 12:05:14 -0800</bug_when>
    <thetext>Committed r162084: &lt;http://trac.webkit.org/changeset/162084&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>221253</attachid>
            <date>2014-01-15 02:50:10 -0800</date>
            <delta_ts>2014-01-15 02:56:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-127039.diff</filename>
            <type>text/plain</type>
            <size>41108</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBjZGNmM2YwLi4xZjBhMjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjgg
QEAKKzIwMTQtMDEtMTUgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgorCisgICAg
ICAgIFJlbW92ZSB0aGUgQ1NTIHNlbGVjdG9yIHByb2ZpbGVyLgorICAgICAgICA8aHR0cHM6Ly93
ZWJraXQub3JnL2IvMTI3MDM5PgorCisgICAgICAgIFRoZSBzZWxlY3RvciBwcm9maWxlciB3YXMg
cGFpbnRpbmcgYSBtb3N0bHkgZmljdGlvbmFsIHBpY3R1cmUgb2Ygd2hhdAorICAgICAgICBzZWxl
Y3RvcnMgd2Ugd2VyZSBzcGVuZGluZyB0aW1lIG9uLiBJdCBuZXZlciByZWFsbHkgZ3Jva2tlZCB0
aGUgZmFzdAorICAgICAgICBwYXRoIHNlbGVjdG9ycywgbm9yIGRpZCBpdCB1bmRlcnN0YW5kIHJl
Y2VudCBhZGRpdGlvbnMgbGlrZSB0aGUgZXh0cmEKKyAgICAgICAgY2FzY2FkaW5nIHBhc3Mgb3Ig
dGhlIHNlbGVjdG9yIEpJVC4KKworICAgICAgICBTb21ld2hhdCBpcm9uaWNhbGx5LCB0aGlzIG1h
eSBlbmQgdXAgbWFraW5nIHNvbWUgc2VsZWN0b3JzIHJ1biBmYXN0ZXIKKyAgICAgICAgc2luY2Ug
aXQgcmVtb3ZlcyBhIG51bWJlciBvZiBicmFuY2VzIGluIGhvdCBjb2RlLgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogY3NzL0VsZW1lbnRSdWxlQ29s
bGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSdWxlQ29sbGVjdG9yOjpjb2xs
ZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3QpOgorICAgICAgICAqIGNzcy9FbGVtZW50UnVsZUNvbGxl
Y3Rvci5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJh
Y2tlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
cHJvdG9jb2wvQ1NTLmpzb246CisKIDIwMTQtMDEtMTQgIENoYW5nU2VvayBPaCAgPGNoYW5nc2Vv
ay5vaEBjb2xsYWJvcmEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgYnVpbGQgZml4IGFmdGVy
IHIxNjE5ODAuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVudFJ1bGVDb2xs
ZWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmNwcApp
bmRleCAwMzY3NjRiLi5iYTliN2EyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRWxl
bWVudFJ1bGVDb2xsZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9FbGVtZW50UnVs
ZUNvbGxlY3Rvci5jcHAKQEAgLTM2MSwxNiArMzYxLDYgQEAgaW5saW5lIGJvb2wgRWxlbWVudFJ1
bGVDb2xsZWN0b3I6OnJ1bGVNYXRjaGVzKGNvbnN0IFJ1bGVEYXRhJiBydWxlRGF0YSwgUHNldWRv
SWQKIAogdm9pZCBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6Y29sbGVjdE1hdGNoaW5nUnVsZXNGb3JM
aXN0KGNvbnN0IFZlY3RvcjxSdWxlRGF0YT4qIHJ1bGVzLCBjb25zdCBNYXRjaFJlcXVlc3QmIG1h
dGNoUmVxdWVzdCwgU3R5bGVSZXNvbHZlcjo6UnVsZVJhbmdlJiBydWxlUmFuZ2UpCiB7Ci0gICAg
aWYgKFVOTElLRUxZKEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aGFzRnJvbnRlbmRzKCkpKSB7
Ci0gICAgICAgIGRvQ29sbGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0PHRydWU+KHJ1bGVzLCBtYXRj
aFJlcXVlc3QsIHJ1bGVSYW5nZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgZG9Db2xs
ZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3Q8ZmFsc2U+KHJ1bGVzLCBtYXRjaFJlcXVlc3QsIHJ1bGVS
YW5nZSk7Ci19Ci0KLXRlbXBsYXRlPGJvb2wgaGFzSW5zcGVjdG9yRnJvbnRlbmRzPgotdm9pZCBF
bGVtZW50UnVsZUNvbGxlY3Rvcjo6ZG9Db2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3QoY29uc3Qg
VmVjdG9yPFJ1bGVEYXRhPiogcnVsZXMsIGNvbnN0IE1hdGNoUmVxdWVzdCYgbWF0Y2hSZXF1ZXN0
LCBTdHlsZVJlc29sdmVyOjpSdWxlUmFuZ2UmIHJ1bGVSYW5nZSkKLXsKICAgICBpZiAoIXJ1bGVz
KQogICAgICAgICByZXR1cm47CiAKQEAgLTM4Miw5ICszNzIsNiBAQCB2b2lkIEVsZW1lbnRSdWxl
Q29sbGVjdG9yOjpkb0NvbGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlzdChjb25zdCBWZWN0b3I8UnVs
ZURhdGE+KgogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgU3R5bGVSdWxlKiBydWxl
ID0gcnVsZURhdGEucnVsZSgpOwotICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29r
aWUgY29va2llOwotICAgICAgICBpZiAoaGFzSW5zcGVjdG9yRnJvbnRlbmRzKQotICAgICAgICAg
ICAgY29va2llID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsTWF0Y2hSdWxlKCZkb2N1
bWVudCgpLCBydWxlLCBtX2luc3BlY3RvckNTU09NV3JhcHBlcnMsIGRvY3VtZW50KCkuc3R5bGVT
aGVldENvbGxlY3Rpb24oKSk7CiAgICAgICAgIFBzZXVkb0lkIGR5bmFtaWNQc2V1ZG8gPSBOT1BT
RVVETzsKICAgICAgICAgaWYgKHJ1bGVNYXRjaGVzKHJ1bGVEYXRhLCBkeW5hbWljUHNldWRvKSkg
ewogICAgICAgICAgICAgLy8gRm9yIFNoYXJpbmdSdWxlcyB0ZXN0aW5nLCBhbnkgbWF0Y2ggaXMg
Z29vZCBlbm91Z2gsIHdlIGRvbid0IGNhcmUgd2hhdCBpcyBtYXRjaGVkLgpAQCAtMzk1LDI1ICsz
ODIsMTYgQEAgdm9pZCBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6ZG9Db2xsZWN0TWF0Y2hpbmdSdWxl
c0Zvckxpc3QoY29uc3QgVmVjdG9yPFJ1bGVEYXRhPioKIAogICAgICAgICAgICAgLy8gSWYgdGhl
IHJ1bGUgaGFzIG5vIHByb3BlcnRpZXMgdG8gYXBwbHksIHRoZW4gaWdub3JlIGl0IGluIHRoZSBu
b24tZGVidWcgbW9kZS4KICAgICAgICAgICAgIGNvbnN0IFN0eWxlUHJvcGVydGllcyYgcHJvcGVy
dGllcyA9IHJ1bGUtPnByb3BlcnRpZXMoKTsKLSAgICAgICAgICAgIGlmIChwcm9wZXJ0aWVzLmlz
RW1wdHkoKSAmJiAhbWF0Y2hSZXF1ZXN0LmluY2x1ZGVFbXB0eVJ1bGVzKSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKGhhc0luc3BlY3RvckZyb250ZW5kcykKLSAgICAgICAgICAgICAgICAgICAgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRNYXRjaFJ1bGUoY29va2llLCBmYWxzZSk7CisgICAg
ICAgICAgICBpZiAocHJvcGVydGllcy5pc0VtcHR5KCkgJiYgIW1hdGNoUmVxdWVzdC5pbmNsdWRl
RW1wdHlSdWxlcykKICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIC8vIEZJWE1FOiBFeHBvc2luZyB0aGUgbm9uLXN0YW5kYXJkIGdldE1hdGNoZWRD
U1NSdWxlcyBBUEkgdG8gd2ViIGlzIHRoZSBvbmx5IHJlYXNvbiB0aGlzIGlzIG5lZWRlZC4KLSAg
ICAgICAgICAgIGlmIChtX3NhbWVPcmlnaW5Pbmx5ICYmICFydWxlRGF0YS5oYXNEb2N1bWVudFNl
Y3VyaXR5T3JpZ2luKCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoaGFzSW5zcGVjdG9yRnJvbnRl
bmRzKQotICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZE1h
dGNoUnVsZShjb29raWUsIGZhbHNlKTsKKyAgICAgICAgICAgIGlmIChtX3NhbWVPcmlnaW5Pbmx5
ICYmICFydWxlRGF0YS5oYXNEb2N1bWVudFNlY3VyaXR5T3JpZ2luKCkpCiAgICAgICAgICAgICAg
ICAgY29udGludWU7Ci0gICAgICAgICAgICB9CiAgICAgICAgICAgICAvLyBJZiB3ZSdyZSBtYXRj
aGluZyBub3JtYWwgcnVsZXMsIHNldCBhIHBzZXVkbyBiaXQgaWYKICAgICAgICAgICAgIC8vIHdl
IHJlYWxseSBqdXN0IG1hdGNoZWQgYSBwc2V1ZG8tZWxlbWVudC4KICAgICAgICAgICAgIGlmIChk
eW5hbWljUHNldWRvICE9IE5PUFNFVURPICYmIG1fcHNldWRvU3R5bGVSZXF1ZXN0LnBzZXVkb0lk
ID09IE5PUFNFVURPKSB7Ci0gICAgICAgICAgICAgICAgaWYgKG1fbW9kZSA9PSBTZWxlY3RvckNo
ZWNrZXI6OkNvbGxlY3RpbmdSdWxlcykgewotICAgICAgICAgICAgICAgICAgICBpZiAoaGFzSW5z
cGVjdG9yRnJvbnRlbmRzKQotICAgICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRNYXRjaFJ1bGUoY29va2llLCBmYWxzZSk7CisgICAgICAgICAgICAgICAg
aWYgKG1fbW9kZSA9PSBTZWxlY3RvckNoZWNrZXI6OkNvbGxlY3RpbmdSdWxlcykKICAgICAgICAg
ICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
IGlmIChkeW5hbWljUHNldWRvIDwgRklSU1RfSU5URVJOQUxfUFNFVURPSUQpCiAgICAgICAgICAg
ICAgICAgICAgIHN0YXRlLnN0eWxlKCktPnNldEhhc1BzZXVkb1N0eWxlKGR5bmFtaWNQc2V1ZG8p
OwogICAgICAgICAgICAgfSBlbHNlIHsKQEAgLTQyNCwxMyArNDAyLDkgQEAgdm9pZCBFbGVtZW50
UnVsZUNvbGxlY3Rvcjo6ZG9Db2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3QoY29uc3QgVmVjdG9y
PFJ1bGVEYXRhPioKIAogICAgICAgICAgICAgICAgIC8vIEFkZCB0aGlzIHJ1bGUgdG8gb3VyIGxp
c3Qgb2YgbWF0Y2hlZCBydWxlcy4KICAgICAgICAgICAgICAgICBhZGRNYXRjaGVkUnVsZSgmcnVs
ZURhdGEpOwotICAgICAgICAgICAgICAgIGlmIChoYXNJbnNwZWN0b3JGcm9udGVuZHMpCi0gICAg
ICAgICAgICAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkTWF0Y2hSdWxlKGNv
b2tpZSwgdHJ1ZSk7CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KLSAgICAgICAgaWYgKGhhc0luc3BlY3RvckZyb250ZW5kcykKLSAgICAgICAgICAg
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkTWF0Y2hSdWxlKGNvb2tpZSwgZmFsc2UpOwog
ICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0VsZW1lbnRSdWxlQ29s
bGVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3IuaAppbmRl
eCBiNWQyNjU2Li4yNWM1NDYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVu
dFJ1bGVDb2xsZWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVudFJ1bGVDb2xs
ZWN0b3IuaApAQCAtNDQsNyArNDQsNiBAQCBwdWJsaWM6CiAgICAgICAgIDogbV9zdGF0ZShzdGF0
ZSkKICAgICAgICAgLCBtX3J1bGVTZXRzKHN0eWxlUmVzb2x2ZXItPnJ1bGVTZXRzKCkpCiAgICAg
ICAgICwgbV9zZWxlY3RvckZpbHRlcihzdHlsZVJlc29sdmVyLT5zZWxlY3RvckZpbHRlcigpKQot
ICAgICAgICAsIG1faW5zcGVjdG9yQ1NTT01XcmFwcGVycyhzdHlsZVJlc29sdmVyLT5pbnNwZWN0
b3JDU1NPTVdyYXBwZXJzKCkpCiAgICAgICAgICwgbV9zY29wZVJlc29sdmVyKHN0eWxlUmVzb2x2
ZXItPnNjb3BlUmVzb2x2ZXIoKSkKICAgICAgICAgLCBtX2lzUHJpbnRTdHlsZShmYWxzZSkKICAg
ICAgICAgLCBtX3JlZ2lvbkZvclN0eWxpbmcoMCkKQEAgLTg4LDEzICs4Nyw5IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBhZGRNYXRjaGVkUnVsZShjb25zdCBSdWxlRGF0YSopOwogICAgIHZvaWQgY2xl
YXJNYXRjaGVkUnVsZXMoKTsKIAotICAgIHRlbXBsYXRlPGJvb2wgaGFzSW5zcGVjdG9yRnJvbnRl
bmRzPgotICAgIHZvaWQgZG9Db2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3QoY29uc3QgVmVjdG9y
PFJ1bGVEYXRhPiosIGNvbnN0IE1hdGNoUmVxdWVzdCYsIFN0eWxlUmVzb2x2ZXI6OlJ1bGVSYW5n
ZSYpOwotCiAgICAgY29uc3QgU3R5bGVSZXNvbHZlcjo6U3RhdGUmIG1fc3RhdGU7CiAgICAgRG9j
dW1lbnRSdWxlU2V0cyYgbV9ydWxlU2V0czsKICAgICBTZWxlY3RvckZpbHRlciYgbV9zZWxlY3Rv
ckZpbHRlcjsKLSAgICBJbnNwZWN0b3JDU1NPTVdyYXBwZXJzJiBtX2luc3BlY3RvckNTU09NV3Jh
cHBlcnM7CiAgICAgU3R5bGVTY29wZVJlc29sdmVyKiBtX3Njb3BlUmVzb2x2ZXI7CiAKICAgICBi
b29sIG1faXNQcmludFN0eWxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNTU0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDU1NBZ2VudC5jcHAKaW5kZXggYjM5NWQxNC4uYzA4NDk5MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCkBAIC03Niw2MSArNzYsNiBAQCBl
bnVtIEZvcmNlUHNldWRvQ2xhc3NGbGFncyB7CiAgICAgUHNldWRvVmlzaXRlZCA9IDEgPDwgMwog
fTsKIAotc3RydWN0IFJ1bGVNYXRjaERhdGEgewotICAgIFN0cmluZyBzZWxlY3RvcjsKLSAgICBT
dHJpbmcgdXJsOwotICAgIHVuc2lnbmVkIGxpbmVOdW1iZXI7Ci0gICAgZG91YmxlIHN0YXJ0VGlt
ZTsKLX07Ci0KLXN0cnVjdCBSdWxlTWF0Y2hpbmdTdGF0cyB7Ci0gICAgUnVsZU1hdGNoaW5nU3Rh
dHMoKQotICAgICAgICA6IGxpbmVOdW1iZXIoMCksIHRvdGFsVGltZSgwLjApLCBoaXRzKDApLCBt
YXRjaGVzKDApCi0gICAgewotICAgIH0KLSAgICBSdWxlTWF0Y2hpbmdTdGF0cyhjb25zdCBSdWxl
TWF0Y2hEYXRhJiBkYXRhLCBkb3VibGUgdG90YWxUaW1lLCB1bnNpZ25lZCBoaXRzLCB1bnNpZ25l
ZCBtYXRjaGVzKQotICAgICAgICA6IHNlbGVjdG9yKGRhdGEuc2VsZWN0b3IpLCB1cmwoZGF0YS51
cmwpLCBsaW5lTnVtYmVyKGRhdGEubGluZU51bWJlciksIHRvdGFsVGltZSh0b3RhbFRpbWUpLCBo
aXRzKGhpdHMpLCBtYXRjaGVzKG1hdGNoZXMpCi0gICAgewotICAgIH0KLQotICAgIFN0cmluZyBz
ZWxlY3RvcjsKLSAgICBTdHJpbmcgdXJsOwotICAgIHVuc2lnbmVkIGxpbmVOdW1iZXI7Ci0gICAg
ZG91YmxlIHRvdGFsVGltZTsKLSAgICB1bnNpZ25lZCBoaXRzOwotICAgIHVuc2lnbmVkIG1hdGNo
ZXM7Ci19OwotCi1jbGFzcyBTZWxlY3RvclByb2ZpbGUgewotICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwotcHVibGljOgotICAgIFNlbGVjdG9yUHJvZmlsZSgpCi0gICAgICAgIDogbV90b3Rh
bE1hdGNoaW5nVGltZU1TKDAuMCkKLSAgICB7Ci0gICAgfQotICAgIHZpcnR1YWwgflNlbGVjdG9y
UHJvZmlsZSgpCi0gICAgewotICAgIH0KLQotICAgIGRvdWJsZSB0b3RhbE1hdGNoaW5nVGltZU1z
KCkgY29uc3QgeyByZXR1cm4gbV90b3RhbE1hdGNoaW5nVGltZU1TOyB9Ci0KLSAgICBTdHJpbmcg
bWFrZUtleSgpOwotICAgIHZvaWQgc3RhcnRTZWxlY3Rvcihjb25zdCBDU1NTdHlsZVJ1bGUqKTsK
LSAgICB2b2lkIGNvbW1pdFNlbGVjdG9yKGJvb2wpOwotICAgIHZvaWQgY29tbWl0U2VsZWN0b3JU
aW1lKCk7Ci0gICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlNlbGVj
dG9yUHJvZmlsZT4gdG9JbnNwZWN0b3JPYmplY3QoKSBjb25zdDsKLQotcHJpdmF0ZToKLQotICAg
IC8vIEtleSBpcyAic2VsZWN0b3I/dXJsOmxpbmUiLgotICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJp
bmcsIFJ1bGVNYXRjaGluZ1N0YXRzPiBSdWxlTWF0Y2hpbmdTdGF0c01hcDsKLQotICAgIGRvdWJs
ZSBtX3RvdGFsTWF0Y2hpbmdUaW1lTVM7Ci0gICAgUnVsZU1hdGNoaW5nU3RhdHNNYXAgbV9ydWxl
TWF0Y2hpbmdTdGF0czsKLSAgICBSdWxlTWF0Y2hEYXRhIG1fY3VycmVudE1hdGNoRGF0YTsKLX07
Ci0KLQogc3RhdGljIHVuc2lnbmVkIGNvbXB1dGVQc2V1ZG9DbGFzc01hc2soSW5zcGVjdG9yQXJy
YXkqIHBzZXVkb0NsYXNzQXJyYXkpCiB7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcs
IGFjdGl2ZSwgKEFTQ0lJTGl0ZXJhbCgiYWN0aXZlIikpKTsKQEAgLTE2MCw3MiArMTA1LDYgQEAg
c3RhdGljIHVuc2lnbmVkIGNvbXB1dGVQc2V1ZG9DbGFzc01hc2soSW5zcGVjdG9yQXJyYXkqIHBz
ZXVkb0NsYXNzQXJyYXkpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotaW5saW5lIFN0cmluZyBT
ZWxlY3RvclByb2ZpbGU6Om1ha2VLZXkoKQotewotICAgIHJldHVybiBtYWtlU3RyaW5nKG1fY3Vy
cmVudE1hdGNoRGF0YS5zZWxlY3RvciwgIj8iLCBtX2N1cnJlbnRNYXRjaERhdGEudXJsLCAiOiIs
IFN0cmluZzo6bnVtYmVyKG1fY3VycmVudE1hdGNoRGF0YS5saW5lTnVtYmVyKSk7Ci19Ci0KLWlu
bGluZSB2b2lkIFNlbGVjdG9yUHJvZmlsZTo6c3RhcnRTZWxlY3Rvcihjb25zdCBDU1NTdHlsZVJ1
bGUqIHJ1bGUpCi17Ci0gICAgbV9jdXJyZW50TWF0Y2hEYXRhLnNlbGVjdG9yID0gcnVsZS0+c2Vs
ZWN0b3JUZXh0KCk7Ci0gICAgQ1NTU3R5bGVTaGVldCogc3R5bGVTaGVldCA9IHJ1bGUtPnBhcmVu
dFN0eWxlU2hlZXQoKTsKLSAgICBTdHJpbmcgdXJsID0gZW1wdHlTdHJpbmcoKTsKLSAgICBpZiAo
c3R5bGVTaGVldCkgewotICAgICAgICB1cmwgPSBJbnNwZWN0b3JTdHlsZVNoZWV0OjpzdHlsZVNo
ZWV0VVJMKHN0eWxlU2hlZXQpOwotICAgICAgICBpZiAodXJsLmlzRW1wdHkoKSkKLSAgICAgICAg
ICAgIHVybCA9IEluc3BlY3RvckRPTUFnZW50Ojpkb2N1bWVudFVSTFN0cmluZyhzdHlsZVNoZWV0
LT5vd25lckRvY3VtZW50KCkpOwotICAgIH0KLSAgICBtX2N1cnJlbnRNYXRjaERhdGEudXJsID0g
dXJsOwotICAgIG1fY3VycmVudE1hdGNoRGF0YS5saW5lTnVtYmVyID0gcnVsZS0+c3R5bGVSdWxl
KCktPnNvdXJjZUxpbmUoKTsKLSAgICBtX2N1cnJlbnRNYXRjaERhdGEuc3RhcnRUaW1lID0gbW9u
b3RvbmljYWxseUluY3JlYXNpbmdUaW1lTVMoKTsKLX0KLQotaW5saW5lIHZvaWQgU2VsZWN0b3JQ
cm9maWxlOjpjb21taXRTZWxlY3Rvcihib29sIG1hdGNoZWQpCi17Ci0gICAgZG91YmxlIG1hdGNo
VGltZU1TID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lTVMoKSAtIG1fY3VycmVudE1hdGNo
RGF0YS5zdGFydFRpbWU7Ci0gICAgbV90b3RhbE1hdGNoaW5nVGltZU1TICs9IG1hdGNoVGltZU1T
OwotCi0gICAgUnVsZU1hdGNoaW5nU3RhdHNNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBtX3J1bGVN
YXRjaGluZ1N0YXRzLmFkZChtYWtlS2V5KCksIFJ1bGVNYXRjaGluZ1N0YXRzKG1fY3VycmVudE1h
dGNoRGF0YSwgbWF0Y2hUaW1lTVMsIDEsIG1hdGNoZWQgPyAxIDogMCkpOwotICAgIGlmICghcmVz
dWx0LmlzTmV3RW50cnkpIHsKLSAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS50b3RhbFRp
bWUgKz0gbWF0Y2hUaW1lTVM7Ci0gICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUuaGl0cyAr
PSAxOwotICAgICAgICBpZiAobWF0Y2hlZCkKLSAgICAgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+
dmFsdWUubWF0Y2hlcyArPSAxOwotICAgIH0KLX0KLQotaW5saW5lIHZvaWQgU2VsZWN0b3JQcm9m
aWxlOjpjb21taXRTZWxlY3RvclRpbWUoKQotewotICAgIGRvdWJsZSBwcm9jZXNzaW5nVGltZU1T
ID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lTVMoKSAtIG1fY3VycmVudE1hdGNoRGF0YS5z
dGFydFRpbWU7Ci0gICAgbV90b3RhbE1hdGNoaW5nVGltZU1TICs9IHByb2Nlc3NpbmdUaW1lTVM7
Ci0KLSAgICBSdWxlTWF0Y2hpbmdTdGF0c01hcDo6aXRlcmF0b3IgaXQgPSBtX3J1bGVNYXRjaGlu
Z1N0YXRzLmZpbmQobWFrZUtleSgpKTsKLSAgICBpZiAoaXQgPT0gbV9ydWxlTWF0Y2hpbmdTdGF0
cy5lbmQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaXQtPnZhbHVlLnRvdGFsVGltZSArPSBw
cm9jZXNzaW5nVGltZU1TOwotfQotCi1QYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkNTUzo6U2VsZWN0b3JQcm9maWxlPiBTZWxlY3RvclByb2ZpbGU6OnRvSW5zcGVjdG9yT2JqZWN0
KCkgY29uc3QKLXsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpTZWxlY3RvclByb2ZpbGVFbnRyeT4+IHNlbGVjdG9y
UHJvZmlsZURhdGEgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpDU1M6OlNlbGVjdG9yUHJvZmlsZUVudHJ5Pjo6Y3JlYXRlKCk7Ci0gICAgZm9y
IChSdWxlTWF0Y2hpbmdTdGF0c01hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3J1bGVNYXRjaGlu
Z1N0YXRzLmJlZ2luKCk7IGl0ICE9IG1fcnVsZU1hdGNoaW5nU3RhdHMuZW5kKCk7ICsraXQpIHsK
LSAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6U2VsZWN0b3JQcm9m
aWxlRW50cnk+IGVudHJ5ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpTZWxlY3RvclBy
b2ZpbGVFbnRyeTo6Y3JlYXRlKCkKLSAgICAgICAgICAgIC5zZXRTZWxlY3RvcihpdC0+dmFsdWUu
c2VsZWN0b3IpCi0gICAgICAgICAgICAuc2V0VXJsKGl0LT52YWx1ZS51cmwpCi0gICAgICAgICAg
ICAuc2V0TGluZU51bWJlcihpdC0+dmFsdWUubGluZU51bWJlcikKLSAgICAgICAgICAgIC5zZXRU
aW1lKGl0LT52YWx1ZS50b3RhbFRpbWUpCi0gICAgICAgICAgICAuc2V0SGl0Q291bnQoaXQtPnZh
bHVlLmhpdHMpCi0gICAgICAgICAgICAuc2V0TWF0Y2hDb3VudChpdC0+dmFsdWUubWF0Y2hlcyk7
Ci0gICAgICAgIHNlbGVjdG9yUHJvZmlsZURhdGEtPmFkZEl0ZW0oZW50cnkucmVsZWFzZSgpKTsK
LSAgICB9Ci0KLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpTZWxlY3Rv
clByb2ZpbGU+IHJlc3VsdCA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6U2VsZWN0b3JQ
cm9maWxlOjpjcmVhdGUoKQotICAgICAgICAuc2V0VG90YWxUaW1lKHRvdGFsTWF0Y2hpbmdUaW1l
TXMoKSkKLSAgICAgICAgLnNldERhdGEoc2VsZWN0b3JQcm9maWxlRGF0YSk7Ci0gICAgcmV0dXJu
IHJlc3VsdC5yZWxlYXNlKCk7Ci19Ci0KIGNsYXNzIFVwZGF0ZVJlZ2lvbkxheW91dFRhc2sgewog
cHVibGljOgogICAgIFVwZGF0ZVJlZ2lvbkxheW91dFRhc2soSW5zcGVjdG9yQ1NTQWdlbnQqKTsK
QEAgLTY0Miw4ICs1MjEsNiBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50Ojp3aWxsRGVzdHJveUZy
b250ZW5kQW5kQmFja2VuZCgpCiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci5jbGVhcigpOwogCiAg
ICAgcmVzZXROb25QZXJzaXN0ZW50RGF0YSgpOwotICAgIFN0cmluZyBlcnJvclN0cmluZzsKLSAg
ICBzdG9wU2VsZWN0b3JQcm9maWxlckltcGwoJmVycm9yU3RyaW5nLCBmYWxzZSk7CiB9CiAKIHZv
aWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmRpc2NhcmRBZ2VudCgpCkBAIC0xMDgyLDUyICs5NTksNiBA
QCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXROYW1lZEZsb3dDb2xsZWN0aW9uKEVycm9yU3Ry
aW5nKiBlcnJvclN0cmluZywgaW50IGRvYwogICAgIHJlc3VsdCA9IG5hbWVkRmxvd3MucmVsZWFz
ZSgpOwogfQogCi12b2lkIEluc3BlY3RvckNTU0FnZW50OjpzdGFydFNlbGVjdG9yUHJvZmlsZXIo
RXJyb3JTdHJpbmcqKQotewotICAgIG1fY3VycmVudFNlbGVjdG9yUHJvZmlsZSA9IGFkb3B0UHRy
KG5ldyBTZWxlY3RvclByb2ZpbGUoKSk7Ci19Ci0KLXZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnN0
b3BTZWxlY3RvclByb2ZpbGVyKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgUmVmUHRyPEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6U2VsZWN0b3JQcm9maWxlPiYgcmVzdWx0KQotewotICAg
IHJlc3VsdCA9IHN0b3BTZWxlY3RvclByb2ZpbGVySW1wbChlcnJvclN0cmluZywgdHJ1ZSk7Ci19
Ci0KLVBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpTZWxlY3RvclByb2Zp
bGU+IEluc3BlY3RvckNTU0FnZW50OjpzdG9wU2VsZWN0b3JQcm9maWxlckltcGwoRXJyb3JTdHJp
bmcqLCBib29sIG5lZWRQcm9maWxlKQotewotICAgIGlmICghbV9jdXJyZW50U2VsZWN0b3JQcm9m
aWxlKQotICAgICAgICByZXR1cm4gMDsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6Q1NTOjpTZWxlY3RvclByb2ZpbGU+IHJlc3VsdDsKLSAgICBpZiAobV9mcm9udGVuZERpc3Bh
dGNoZXIgJiYgbmVlZFByb2ZpbGUpCi0gICAgICAgIHJlc3VsdCA9IG1fY3VycmVudFNlbGVjdG9y
UHJvZmlsZS0+dG9JbnNwZWN0b3JPYmplY3QoKTsKLSAgICBtX2N1cnJlbnRTZWxlY3RvclByb2Zp
bGUuY2xlYXIoKTsKLSAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKLX0KLQotdm9pZCBJbnNw
ZWN0b3JDU1NBZ2VudDo6d2lsbE1hdGNoUnVsZShTdHlsZVJ1bGUqIHJ1bGUsIEluc3BlY3RvckNT
U09NV3JhcHBlcnMmIGluc3BlY3RvckNTU09NV3JhcHBlcnMsIERvY3VtZW50U3R5bGVTaGVldENv
bGxlY3Rpb24mIHN0eWxlU2hlZXRDb2xsZWN0aW9uKQotewotLy8gICAgcHJpbnRmKCJJbnNwZWN0
b3JDU1NBZ2VudDo6d2lsbE1hdGNoUnVsZSAlc1xuIiwgcnVsZS0+c2VsZWN0b3JMaXN0KCkuc2Vs
ZWN0b3JzVGV4dCgpLnV0ZjgoKS5kYXRhKCkpOwotICAgIGlmIChtX2N1cnJlbnRTZWxlY3RvclBy
b2ZpbGUpCi0gICAgICAgIG1fY3VycmVudFNlbGVjdG9yUHJvZmlsZS0+c3RhcnRTZWxlY3Rvcihp
bnNwZWN0b3JDU1NPTVdyYXBwZXJzLmdldFdyYXBwZXJGb3JSdWxlSW5TaGVldHMocnVsZSwgc3R5
bGVTaGVldENvbGxlY3Rpb24pKTsKLX0KLQotdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6ZGlkTWF0
Y2hSdWxlKGJvb2wgbWF0Y2hlZCkKLXsKLSAgICBpZiAobV9jdXJyZW50U2VsZWN0b3JQcm9maWxl
KQotICAgICAgICBtX2N1cnJlbnRTZWxlY3RvclByb2ZpbGUtPmNvbW1pdFNlbGVjdG9yKG1hdGNo
ZWQpOwotfQotCi12b2lkIEluc3BlY3RvckNTU0FnZW50Ojp3aWxsUHJvY2Vzc1J1bGUoU3R5bGVS
dWxlKiBydWxlLCBTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyKQotewotICAgIGlmIChtX2N1
cnJlbnRTZWxlY3RvclByb2ZpbGUpCi0gICAgICAgIG1fY3VycmVudFNlbGVjdG9yUHJvZmlsZS0+
c3RhcnRTZWxlY3RvcihzdHlsZVJlc29sdmVyLmluc3BlY3RvckNTU09NV3JhcHBlcnMoKS5nZXRX
cmFwcGVyRm9yUnVsZUluU2hlZXRzKHJ1bGUsIHN0eWxlUmVzb2x2ZXIuZG9jdW1lbnQoKS5zdHls
ZVNoZWV0Q29sbGVjdGlvbigpKSk7Ci19Ci0KLXZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmRpZFBy
b2Nlc3NSdWxlKCkKLXsKLSAgICBpZiAobV9jdXJyZW50U2VsZWN0b3JQcm9maWxlKQotICAgICAg
ICBtX2N1cnJlbnRTZWxlY3RvclByb2ZpbGUtPmNvbW1pdFNlbGVjdG9yVGltZSgpOwotfQotCiBJ
bnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGUqIEluc3BlY3RvckNTU0FnZW50Ojphc0lu
c3BlY3RvclN0eWxlU2hlZXQoRWxlbWVudCogZWxlbWVudCkKIHsKICAgICBOb2RlVG9JbnNwZWN0
b3JTdHlsZVNoZWV0OjppdGVyYXRvciBpdCA9IG1fbm9kZVRvSW5zcGVjdG9yU3R5bGVTaGVldC5m
aW5kKGVsZW1lbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNTU0FnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdl
bnQuaAppbmRleCAwY2Q2NDIyLi5lZTEyZDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaApAQCAtNTgsNyArNTgsNiBAQCBjbGFzcyBJbnN0cnVtZW50
aW5nQWdlbnRzOwogY2xhc3MgTmFtZU5vZGVNYXA7CiBjbGFzcyBOb2RlOwogY2xhc3MgTm9kZUxp
c3Q7Ci1jbGFzcyBTZWxlY3RvclByb2ZpbGU7CiBjbGFzcyBTdHlsZVJlc29sdmVyOwogY2xhc3Mg
U3R5bGVSdWxlOwogY2xhc3MgVXBkYXRlUmVnaW9uTGF5b3V0VGFzazsKQEAgLTEyOCwxNSArMTI3
LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBmb3JjZVBzZXVkb1N0YXRlKEVycm9yU3Ry
aW5nKiwgaW50IG5vZGVJZCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXk+
JiBmb3JjZWRQc2V1ZG9DbGFzc2VzKTsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0TmFtZWRGbG93Q29s
bGVjdGlvbihFcnJvclN0cmluZyosIGludCBkb2N1bWVudE5vZGVJZCwgUmVmUHRyPEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6TmFtZWRG
bG93Pj4mIHJlc3VsdCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc3RhcnRTZWxlY3RvclByb2ZpbGVy
KEVycm9yU3RyaW5nKik7Ci0gICAgdmlydHVhbCB2b2lkIHN0b3BTZWxlY3RvclByb2ZpbGVyKEVy
cm9yU3RyaW5nKiwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6U2VsZWN0b3JQ
cm9maWxlPiYpOwotCi0gICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6
OlNlbGVjdG9yUHJvZmlsZT4gc3RvcFNlbGVjdG9yUHJvZmlsZXJJbXBsKEVycm9yU3RyaW5nKiwg
Ym9vbCBuZWVkUHJvZmlsZSk7Ci0gICAgdm9pZCB3aWxsTWF0Y2hSdWxlKFN0eWxlUnVsZSosIElu
c3BlY3RvckNTU09NV3JhcHBlcnMmLCBEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uJik7Ci0g
ICAgdm9pZCBkaWRNYXRjaFJ1bGUoYm9vbCk7Ci0gICAgdm9pZCB3aWxsUHJvY2Vzc1J1bGUoU3R5
bGVSdWxlKiwgU3R5bGVSZXNvbHZlciYpOwotICAgIHZvaWQgZGlkUHJvY2Vzc1J1bGUoKTsKLQog
cHJpdmF0ZToKICAgICBjbGFzcyBTdHlsZVNoZWV0QWN0aW9uOwogICAgIGNsYXNzIFNldFN0eWxl
U2hlZXRUZXh0QWN0aW9uOwpAQCAtMTk1LDggKzE4NSw2IEBAIHByaXZhdGU6CiAgICAgT3duUHRy
PENoYW5nZVJlZ2lvbk92ZXJzZXRUYXNrPiBtX2NoYW5nZVJlZ2lvbk92ZXJzZXRUYXNrOwogCiAg
ICAgaW50IG1fbGFzdFN0eWxlU2hlZXRJZDsKLQotICAgIE93blB0cjxTZWxlY3RvclByb2ZpbGU+
IG1fY3VycmVudFNlbGVjdG9yUHJvZmlsZTsKIH07CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAppbmRleCBi
YmU4ODVmLi40Njg1ZjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcApAQCAtNTUwLDQyICs1NTAsNiBAQCB2b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkU2NoZWR1bGVTdHlsZVJlY2FsY3VsYXRpb25JbXBs
KEluc3RydW1lbnRpbmdBZwogICAgICAgICByZXNvdXJjZUFnZW50LT5kaWRTY2hlZHVsZVN0eWxl
UmVjYWxjdWxhdGlvbihkb2N1bWVudCk7CiB9CiAKLUluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNv
b2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxNYXRjaFJ1bGVJbXBsKEluc3RydW1l
bnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIFN0eWxlUnVsZSogcnVsZSwgSW5zcGVj
dG9yQ1NTT01XcmFwcGVycyYgaW5zcGVjdG9yQ1NTT01XcmFwcGVycywgRG9jdW1lbnRTdHlsZVNo
ZWV0Q29sbGVjdGlvbiYgc2hlZXRDb2xsZWN0aW9uKQotewotICAgIEluc3BlY3RvckNTU0FnZW50
KiBjc3NBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvckNTU0FnZW50KCk7Ci0g
ICAgaWYgKGNzc0FnZW50KSB7Ci0gICAgICAgIGNzc0FnZW50LT53aWxsTWF0Y2hSdWxlKHJ1bGUs
IGluc3BlY3RvckNTU09NV3JhcHBlcnMsIHNoZWV0Q29sbGVjdGlvbik7Ci0gICAgICAgIHJldHVy
biBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUoaW5zdHJ1bWVudGluZ0FnZW50cywgMSk7
Ci0gICAgfQotCi0gICAgcmV0dXJuIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSgpOwot
fQotCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkTWF0Y2hSdWxlSW1wbChjb25z
dCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmIGNvb2tpZSwgYm9vbCBtYXRjaGVkKQot
ewotICAgIEluc3BlY3RvckNTU0FnZW50KiBjc3NBZ2VudCA9IGNvb2tpZS5pbnN0cnVtZW50aW5n
QWdlbnRzKCktPmluc3BlY3RvckNTU0FnZW50KCk7Ci0gICAgaWYgKGNzc0FnZW50KQotICAgICAg
ICBjc3NBZ2VudC0+ZGlkTWF0Y2hSdWxlKG1hdGNoZWQpOwotfQotCi1JbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUHJvY2Vzc1J1bGVJ
bXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIFN0eWxlUnVsZSog
cnVsZSwgU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlcikKLXsKLSAgICBJbnNwZWN0b3JDU1NB
Z2VudCogY3NzQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JDU1NBZ2VudCgp
OwotICAgIGlmIChjc3NBZ2VudCkgewotICAgICAgICBjc3NBZ2VudC0+d2lsbFByb2Nlc3NSdWxl
KHJ1bGUsIHN0eWxlUmVzb2x2ZXIpOwotICAgICAgICByZXR1cm4gSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uQ29va2llKGluc3RydW1lbnRpbmdBZ2VudHMsIDEpOwotICAgIH0KLQotICAgIHJldHVy
biBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUoKTsKLX0KLQotdm9pZCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZFByb2Nlc3NSdWxlSW1wbChjb25zdCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25Db29raWUmIGNvb2tpZSkKLXsKLSAgICBJbnNwZWN0b3JDU1NBZ2VudCogY3NzQWdl
bnQgPSBjb29raWUuaW5zdHJ1bWVudGluZ0FnZW50cygpLT5pbnNwZWN0b3JDU1NBZ2VudCgpOwot
ICAgIGlmIChjc3NBZ2VudCkKLSAgICAgICAgY3NzQWdlbnQtPmRpZFByb2Nlc3NSdWxlKCk7Ci19
Ci0KIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjphcHBseUVtdWxhdGVkTWVkaWFJbXBs
KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIFN0cmluZyogbWVkaWEp
CiB7CiAgICAgaWYgKEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50ID0gaW5zdHJ1bWVudGlu
Z0FnZW50cy0+aW5zcGVjdG9yUGFnZUFnZW50KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKaW5kZXggNzEzMWJjZC4uNWVhZWZm
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1l
bnRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24uaApAQCAtMTU5LDEwICsxNTksNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsUmVjYWxjdWxhdGVTdHlsZShEb2N1bWVudCop
OwogICAgIHN0YXRpYyB2b2lkIGRpZFJlY2FsY3VsYXRlU3R5bGUoY29uc3QgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uQ29va2llJik7CiAgICAgc3RhdGljIHZvaWQgZGlkU2NoZWR1bGVTdHlsZVJl
Y2FsY3VsYXRpb24oRG9jdW1lbnQqKTsKLSAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uQ29va2llIHdpbGxNYXRjaFJ1bGUoRG9jdW1lbnQqLCBTdHlsZVJ1bGUqLCBJbnNwZWN0b3JD
U1NPTVdyYXBwZXJzJiwgRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbiYpOwotICAgIHN0YXRp
YyB2b2lkIGRpZE1hdGNoUnVsZShjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUm
LCBib29sIG1hdGNoZWQpOwotICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29r
aWUgd2lsbFByb2Nlc3NSdWxlKERvY3VtZW50KiwgU3R5bGVSdWxlKiwgU3R5bGVSZXNvbHZlciYp
OwotICAgIHN0YXRpYyB2b2lkIGRpZFByb2Nlc3NSdWxlKGNvbnN0IEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbkNvb2tpZSYpOwogCiAgICAgc3RhdGljIHZvaWQgYXBwbHlFbXVsYXRlZE1lZGlhKEZy
YW1lKiwgU3RyaW5nKik7CiAgICAgc3RhdGljIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KEZyYW1lKiwg
dW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciosIFJlc291cmNlUmVxdWVz
dCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpOwpAQCAtMzQ5LDEw
ICszNDUsNiBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25D
b29raWUgd2lsbFJlY2FsY3VsYXRlU3R5bGVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBGcmFt
ZSopOwogICAgIHN0YXRpYyB2b2lkIGRpZFJlY2FsY3VsYXRlU3R5bGVJbXBsKGNvbnN0IEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYpOwogICAgIHN0YXRpYyB2b2lkIGRpZFNjaGVkdWxl
U3R5bGVSZWNhbGN1bGF0aW9uSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgRG9jdW1lbnQqKTsK
LSAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxNYXRjaFJ1bGVJ
bXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBTdHlsZVJ1bGUqLCBJbnNwZWN0b3JDU1NPTVdyYXBw
ZXJzJiwgRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbiYpOwotICAgIHN0YXRpYyB2b2lkIGRp
ZE1hdGNoUnVsZUltcGwoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJiwgYm9v
bCBtYXRjaGVkKTsKLSAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdp
bGxQcm9jZXNzUnVsZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIFN0eWxlUnVsZSosIFN0eWxl
UmVzb2x2ZXImKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRQcm9jZXNzUnVsZUltcGwoY29uc3QgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJik7CiAKICAgICBzdGF0aWMgdm9pZCBhcHBseUVt
dWxhdGVkTWVkaWFJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBTdHJpbmcqKTsKICAgICBzdGF0
aWMgdm9pZCB3aWxsU2VuZFJlcXVlc3RJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCB1bnNpZ25l
ZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiwgUmVzb3VyY2VSZXF1ZXN0JiwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSk7CkBAIC0xMTcyLDYwICsxMTY0
LDYgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRTY2hlZHVsZVN0
eWxlUmVjYWxjdWxhdGlvbihEb2N1bWVudCogZG8KICNlbmRpZgogfQogCi1pbmxpbmUgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbE1h
dGNoUnVsZShEb2N1bWVudCogZG9jdW1lbnQsIFN0eWxlUnVsZSogcnVsZSwgSW5zcGVjdG9yQ1NT
T01XcmFwcGVycyYgaW5zcGVjdG9yQ1NTT01XcmFwcGVycywgRG9jdW1lbnRTdHlsZVNoZWV0Q29s
bGVjdGlvbiYgc3R5bGVTaGVldENvbGxlY3Rpb24pCi17Ci0jaWYgRU5BQkxFKElOU1BFQ1RPUikK
LSAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFMoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Q29va2llKCkpOwotICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdl
bnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckRvY3VtZW50KGRvY3VtZW50KSkKLSAgICAgICAg
cmV0dXJuIHdpbGxNYXRjaFJ1bGVJbXBsKGluc3RydW1lbnRpbmdBZ2VudHMsIHJ1bGUsIGluc3Bl
Y3RvckNTU09NV3JhcHBlcnMsIHN0eWxlU2hlZXRDb2xsZWN0aW9uKTsKLSNlbHNlCi0gICAgVU5V
U0VEX1BBUkFNKGRvY3VtZW50KTsKLSAgICBVTlVTRURfUEFSQU0ocnVsZSk7Ci0gICAgVU5VU0VE
X1BBUkFNKGluc3BlY3RvckNTU09NV3JhcHBlcnMpOwotICAgIFVOVVNFRF9QQVJBTShzdHlsZVNo
ZWV0Q29sbGVjdGlvbik7Ci0jZW5kaWYKLSAgICByZXR1cm4gSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uQ29va2llKCk7Ci19Ci0KLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
ZGlkTWF0Y2hSdWxlKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYgY29va2ll
LCBib29sIG1hdGNoZWQpCi17Ci0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBGQVNUX1JFVFVS
Tl9JRl9OT19GUk9OVEVORFModm9pZCgpKTsKLSAgICBpZiAoY29va2llLmlzVmFsaWQoKSkKLSAg
ICAgICAgZGlkTWF0Y2hSdWxlSW1wbChjb29raWUsIG1hdGNoZWQpOwotI2Vsc2UKLSAgICBVTlVT
RURfUEFSQU0oY29va2llKTsKLSAgICBVTlVTRURfUEFSQU0obWF0Y2hlZCk7Ci0jZW5kaWYKLX0K
LQotaW5saW5lIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OndpbGxQcm9jZXNzUnVsZShEb2N1bWVudCogZG9jdW1lbnQsIFN0eWxlUnVsZSog
cnVsZSwgU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlcikKLXsKLSNpZiBFTkFCTEUoSU5TUEVD
VE9SKQotICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyhJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25Db29raWUoKSk7Ci0gICAgaWYgKCFydWxlKQotICAgICAgICByZXR1cm4gSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uQ29va2llKCk7Ci0gICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGlu
c3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRG9jdW1lbnQoZG9jdW1l
bnQpKQotICAgICAgICByZXR1cm4gd2lsbFByb2Nlc3NSdWxlSW1wbChpbnN0cnVtZW50aW5nQWdl
bnRzLCBydWxlLCBzdHlsZVJlc29sdmVyKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGRvY3Vt
ZW50KTsKLSAgICBVTlVTRURfUEFSQU0ocnVsZSk7Ci0gICAgVU5VU0VEX1BBUkFNKHN0eWxlUmVz
b2x2ZXIpOwotI2VuZGlmCi0gICAgcmV0dXJuIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tp
ZSgpOwotfQotCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFByb2Nl
c3NSdWxlKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYgY29va2llKQotewot
I2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKHZv
aWQoKSk7Ci0gICAgaWYgKGNvb2tpZS5pc1ZhbGlkKCkpCi0gICAgICAgIGRpZFByb2Nlc3NSdWxl
SW1wbChjb29raWUpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oY29va2llKTsKLSNlbmRpZgot
fQotCiBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmFwcGx5RW11bGF0ZWRN
ZWRpYShGcmFtZSogZnJhbWUsIFN0cmluZyogbWVkaWEpCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RP
UikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9DU1MuanNv
biBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9DU1MuanNvbgppbmRleCA0NDVl
MTIzLi5mOWMyNjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvcHJvdG9j
b2wvQ1NTLmpzb24KKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL3Byb3RvY29sL0NTUy5q
c29uCkBAIC0xODksMjcgKzE4OSw2IEBACiAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQ1NT
IG1lZGlhIHF1ZXJ5IGRlc2NyaXB0b3IuIgogICAgICAgICB9LAogICAgICAgICB7Ci0gICAgICAg
ICAgICAiaWQiOiAiU2VsZWN0b3JQcm9maWxlRW50cnkiLAotICAgICAgICAgICAgInR5cGUiOiAi
b2JqZWN0IiwKLSAgICAgICAgICAgICJwcm9wZXJ0aWVzIjogWwotICAgICAgICAgICAgICAgIHsg
Im5hbWUiOiAic2VsZWN0b3IiLCAidHlwZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRpb24iOiAiQ1NT
IHNlbGVjdG9yIG9mIHRoZSBjb3JyZXNwb25kaW5nIHJ1bGUuIiB9LAotICAgICAgICAgICAgICAg
IHsgIm5hbWUiOiAidXJsIiwgInR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjogIlVSTCBv
ZiB0aGUgcmVzb3VyY2UgY29udGFpbmluZyB0aGUgY29ycmVzcG9uZGluZyBydWxlLiIgfSwKLSAg
ICAgICAgICAgICAgICB7ICJuYW1lIjogImxpbmVOdW1iZXIiLCAidHlwZSI6ICJpbnRlZ2VyIiwg
ImRlc2NyaXB0aW9uIjogIlNlbGVjdG9yIGxpbmUgbnVtYmVyIGluIHRoZSByZXNvdXJjZSBmb3Ig
dGhlIGNvcnJlc3BvbmRpbmcgcnVsZS4iIH0sCi0gICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ0
aW1lIiwgInR5cGUiOiAibnVtYmVyIiwgImRlc2NyaXB0aW9uIjogIlRvdGFsIHRpbWUgdGhpcyBy
dWxlIGhhbmRsaW5nIGNvbnRyaWJ1dGVkIHRvIHRoZSBicm93c2VyIHJ1bm5pbmcgdGltZSBkdXJp
bmcgcHJvZmlsaW5nIChpbiBtaWxsaXNlY29uZHMuKSIgfSwKLSAgICAgICAgICAgICAgICB7ICJu
YW1lIjogImhpdENvdW50IiwgInR5cGUiOiAiaW50ZWdlciIsICJkZXNjcmlwdGlvbiI6ICJOdW1i
ZXIgb2YgdGltZXMgdGhpcyBydWxlIHdhcyBjb25zaWRlcmVkIGEgY2FuZGlkYXRlIGZvciBtYXRj
aGluZyBhZ2FpbnN0IERPTSBlbGVtZW50cy4iIH0sCi0gICAgICAgICAgICAgICAgeyAibmFtZSI6
ICJtYXRjaENvdW50IiwgInR5cGUiOiAiaW50ZWdlciIsICJkZXNjcmlwdGlvbiI6ICJOdW1iZXIg
b2YgdGltZXMgdGhpcyBydWxlIGFjdHVhbGx5IG1hdGNoZWQgYSBET00gZWxlbWVudC4iIH0KLSAg
ICAgICAgICAgIF0sCi0gICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQ1NTIHNlbGVjdG9yIHBy
b2ZpbGUgZW50cnkuIgotICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAgICAiaWQiOiAi
U2VsZWN0b3JQcm9maWxlIiwKLSAgICAgICAgICAgICJ0eXBlIjogIm9iamVjdCIsCi0gICAgICAg
ICAgICAicHJvcGVydGllcyI6IFsKLSAgICAgICAgICAgICAgICB7ICJuYW1lIjogInRvdGFsVGlt
ZSIsICJ0eXBlIjogIm51bWJlciIsICJkZXNjcmlwdGlvbiI6ICJUb3RhbCBwcm9jZXNzaW5nIHRp
bWUgZm9yIGFsbCBzZWxlY3RvcnMgaW4gdGhlIHByb2ZpbGUgKGluIG1pbGxpc2Vjb25kcy4pIiB9
LAotICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZGF0YSIsICJ0eXBlIjogImFycmF5IiwgIml0
ZW1zIjogeyAiJHJlZiI6ICJTZWxlY3RvclByb2ZpbGVFbnRyeSIgfSwgImRlc2NyaXB0aW9uIjog
IkNTUyBzZWxlY3RvciBwcm9maWxlIGVudHJpZXMuIiB9Ci0gICAgICAgICAgICBdCi0gICAgICAg
IH0sCi0gICAgICAgIHsKICAgICAgICAgICAgICJpZCI6ICJSZWdpb24iLAogICAgICAgICAgICAg
InR5cGUiOiAib2JqZWN0IiwKICAgICAgICAgICAgICJwcm9wZXJ0aWVzIjogWwpAQCAtMzg0LDE1
ICszNjMsNiBAQAogICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkVuc3VyZXMgdGhhdCB0aGUg
Z2l2ZW4gbm9kZSB3aWxsIGhhdmUgc3BlY2lmaWVkIHBzZXVkby1jbGFzc2VzIHdoZW5ldmVyIGl0
cyBzdHlsZSBpcyBjb21wdXRlZCBieSB0aGUgYnJvd3Nlci4iCiAgICAgICAgIH0sCiAgICAgICAg
IHsKLSAgICAgICAgICAgICJuYW1lIjogInN0YXJ0U2VsZWN0b3JQcm9maWxlciIKLSAgICAgICAg
fSwKLSAgICAgICAgewotICAgICAgICAgICAgIm5hbWUiOiAic3RvcFNlbGVjdG9yUHJvZmlsZXIi
LAotICAgICAgICAgICAgInJldHVybnMiOiBbCi0gICAgICAgICAgICAgICAgeyAibmFtZSI6ICJw
cm9maWxlIiwgIiRyZWYiOiAiU2VsZWN0b3JQcm9maWxlIiB9Ci0gICAgICAgICAgICBdCi0gICAg
ICAgIH0sCi0gICAgICAgIHsKICAgICAgICAgICAgICJuYW1lIjogImdldE5hbWVkRmxvd0NvbGxl
Y3Rpb24iLAogICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgICAgICAgeyAi
bmFtZSI6ICJkb2N1bWVudE5vZGVJZCIsICIkcmVmIjogIkRPTS5Ob2RlSWQiLCAiZGVzY3JpcHRp
b24iOiAiVGhlIGRvY3VtZW50IG5vZGUgaWQgZm9yIHdoaWNoIHRvIGdldCB0aGUgTmFtZWQgRmxv
dyBDb2xsZWN0aW9uLiIgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKaW5kZXggYTM5MTUyYS4uY2Nk
ZjdlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTQtMDEt
MTUgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSB0
aGUgQ1NTIHNlbGVjdG9yIHByb2ZpbGVyLgorICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2Iv
MTI3MDM5PgorCisgICAgICAgIFB1cmdlIHNlbGVjdG9yIHByb2ZpbGVyIGNvZGUgZnJvbSB0aGUg
bmV3IFdlYiBJbnNwZWN0b3IgVUkuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0NTU1NlbGVjdG9yUHJvZmlsZU9iamVjdC5q
czogUmVtb3ZlZC4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0NTU1NlbGVjdG9yUHJvZmlsZVR5
cGUuanM6IFJlbW92ZWQuCisgICAgICAgICogVXNlckludGVyZmFjZS9DU1NTZWxlY3RvclByb2Zp
bGVWaWV3LmpzOiBSZW1vdmVkLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udGVudFZpZXcu
anM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkNvbnRlbnRWaWV3LmlzVmlld2FibGUpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2Uv
SW5zcGVjdG9yV2ViQmFja2VuZENvbW1hbmRzLmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2Uv
SW5zdHJ1bWVudFNpZGViYXJQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5JbnN0cnVt
ZW50U2lkZWJhclBhbmVsKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5JbnN0cnVtZW50U2lkZWJh
clBhbmVsLnByb3RvdHlwZS5fcmVjb3JkUHJvZmlsZUdseXBoTW91c2VkT3Zlcik6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuSW5zdHJ1bWVudFNpZGViYXJQYW5lbC5wcm90b3R5cGUuX3JlY29yZFBy
b2ZpbGVHbHlwaE1vdXNlZERvd24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkluc3RydW1lbnRT
aWRlYmFyUGFuZWwucHJvdG90eXBlLl9yZWNvcmRQcm9maWxlR2x5cGhDbGlja2VkKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5JbnN0cnVtZW50U2lkZWJhclBhbmVsLnByb3RvdHlwZS5fcHJvZmls
ZVR5cGVXYXNTZWxlY3RlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSW5zdHJ1bWVudFNpZGVi
YXJQYW5lbC5wcm90b3R5cGUuX3Byb2ZpbGVzQ2xlYXJlZCk6CisgICAgICAgICogVXNlckludGVy
ZmFjZS9NYWluLmh0bWw6CisgICAgICAgICogVXNlckludGVyZmFjZS9Qcm9maWxlTWFuYWdlci5q
czoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm9maWxlTWFuYWdlcik6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuUHJvZmlsZU1hbmFnZXIucHJvdG90eXBlLmluaXRpYWxpemUpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlByb2ZpbGVNYW5hZ2VyLnByb3RvdHlwZS5fY2hlY2tGb3JJbnRlcnJ1cHRp
b25zKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm9maWxlTWFuYWdlci5wcm90b3R5cGUuX2F0
dGVtcHRUb1Jlc3VtZVByb2ZpbGluZyk6CisgICAgICAgICogV2ViSW5zcGVjdG9yVUkudmN4cHJv
ai9XZWJJbnNwZWN0b3JVSS52Y3hwcm9qOgorICAgICAgICAqIFdlYkluc3BlY3RvclVJLnZjeHBy
b2ovV2ViSW5zcGVjdG9yVUkudmN4cHJvai5maWx0ZXJzOgorCiAyMDE0LTAxLTEzICBUaW1vdGh5
IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KIAogICAgICAgICBTbmFwIHRpbWUgZGl2aWRl
cnMgdG8gbmVhcmVzdCBudW1iZXJzIGluc3RlYWQgb2YganVzdCBkaXZpZGluZyB0aGUgdGltZSBz
cGFuIGludG8gbWF4IGRlbnNpdHkgc2xpY2VzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Db250ZW50Vmlldy5qcwppbmRleCA1MGU5NzI3Li4yYmQ3ZWZhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250ZW50Vmll
dy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250ZW50Vmll
dy5qcwpAQCAtNjYsOSArNjYsNiBAQCBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcgPSBmdW5jdGlv
bihyZXByZXNlbnRlZE9iamVjdCkKICAgICAgICAgaWYgKHJlcHJlc2VudGVkT2JqZWN0IGluc3Rh
bmNlb2YgV2ViSW5zcGVjdG9yLkphdmFTY3JpcHRQcm9maWxlT2JqZWN0KQogICAgICAgICAgICAg
cmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuSmF2YVNjcmlwdFByb2ZpbGVWaWV3KHJlcHJlc2VudGVk
T2JqZWN0KTsKIAotICAgICAgICBpZiAocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJ
bnNwZWN0b3IuQ1NTU2VsZWN0b3JQcm9maWxlT2JqZWN0KQotICAgICAgICAgICAgcmV0dXJuIG5l
dyBXZWJJbnNwZWN0b3IuQ1NTU2VsZWN0b3JQcm9maWxlVmlldyhyZXByZXNlbnRlZE9iamVjdCk7
Ci0KICAgICAgICAgaWYgKHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9y
LkNhbnZhc1Byb2ZpbGVPYmplY3QpCiAgICAgICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rv
ci5DYW52YXNQcm9maWxlVmlldyhyZXByZXNlbnRlZE9iamVjdCk7CiAKQEAgLTEyNSw4ICsxMjIs
NiBAQCBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcuaXNWaWV3YWJsZSA9IGZ1bmN0aW9uKHJlcHJl
c2VudGVkT2JqZWN0KQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBpZiAocmVwcmVzZW50ZWRP
YmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuSmF2YVNjcmlwdFByb2ZpbGVPYmplY3QpCiAg
ICAgICAgIHJldHVybiB0cnVlOwotICAgIGlmIChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9m
IFdlYkluc3BlY3Rvci5DU1NTZWxlY3RvclByb2ZpbGVPYmplY3QpCi0gICAgICAgIHJldHVybiB0
cnVlOwogICAgIGlmIChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5D
YW52YXNQcm9maWxlT2JqZWN0KQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBpZiAocmVwcmVz
ZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuQ29udGVudEZsb3cpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9JbnNwZWN0b3JXZWJCYWNr
ZW5kQ29tbWFuZHMuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9JbnNw
ZWN0b3JXZWJCYWNrZW5kQ29tbWFuZHMuanMKaW5kZXggZWY4ZjQ5OC4uMWIzYTMxNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSW5zcGVjdG9yV2ViQmFj
a2VuZENvbW1hbmRzLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L0luc3BlY3RvcldlYkJhY2tlbmRDb21tYW5kcy5qcwpAQCAtNDUsOCArNDUsNiBAQCBJbnNwZWN0
b3JCYWNrZW5kLnJlZ2lzdGVyQ29tbWFuZCgiQ1NTLnNldFJ1bGVTZWxlY3RvciIsIFt7Im5hbWUi
OiAicnVsZUlkIiwgInR5cAogSW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlckNvbW1hbmQoIkNTUy5h
ZGRSdWxlIiwgW3sibmFtZSI6ICJjb250ZXh0Tm9kZUlkIiwgInR5cGUiOiAibnVtYmVyIiwgIm9w
dGlvbmFsIjogZmFsc2V9LCB7Im5hbWUiOiAic2VsZWN0b3IiLCAidHlwZSI6ICJzdHJpbmciLCAi
b3B0aW9uYWwiOiBmYWxzZX1dLCBbInJ1bGUiXSk7CiBJbnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVy
Q29tbWFuZCgiQ1NTLmdldFN1cHBvcnRlZENTU1Byb3BlcnRpZXMiLCBbXSwgWyJjc3NQcm9wZXJ0
aWVzIl0pOwogSW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlckNvbW1hbmQoIkNTUy5mb3JjZVBzZXVk
b1N0YXRlIiwgW3sibmFtZSI6ICJub2RlSWQiLCAidHlwZSI6ICJudW1iZXIiLCAib3B0aW9uYWwi
OiBmYWxzZX0sIHsibmFtZSI6ICJmb3JjZWRQc2V1ZG9DbGFzc2VzIiwgInR5cGUiOiAib2JqZWN0
IiwgIm9wdGlvbmFsIjogZmFsc2V9XSwgW10pOwotSW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlckNv
bW1hbmQoIkNTUy5zdGFydFNlbGVjdG9yUHJvZmlsZXIiLCBbXSwgW10pOwotSW5zcGVjdG9yQmFj
a2VuZC5yZWdpc3RlckNvbW1hbmQoIkNTUy5zdG9wU2VsZWN0b3JQcm9maWxlciIsIFtdLCBbInBy
b2ZpbGUiXSk7CiBJbnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVyQ29tbWFuZCgiQ1NTLmdldE5hbWVk
Rmxvd0NvbGxlY3Rpb24iLCBbeyJuYW1lIjogImRvY3VtZW50Tm9kZUlkIiwgInR5cGUiOiAibnVt
YmVyIiwgIm9wdGlvbmFsIjogZmFsc2V9XSwgWyJuYW1lZEZsb3dzIl0pOwogCiAvLyBDYW52YXMu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9JbnN0cnVt
ZW50U2lkZWJhclBhbmVsLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
SW5zdHJ1bWVudFNpZGViYXJQYW5lbC5qcwppbmRleCBjMGI4MGRlLi43YjM4OGFhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9JbnN0cnVtZW50U2lkZWJh
clBhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0luc3Ry
dW1lbnRTaWRlYmFyUGFuZWwuanMKQEAgLTk5LDE4ICs5OSwxMiBAQCBXZWJJbnNwZWN0b3IuSW5z
dHJ1bWVudFNpZGViYXJQYW5lbCA9IGZ1bmN0aW9uKCkKICAgICBzdGFydEphdmFTY3JpcHRQcm9m
aWxlT3B0aW9uLnZhbHVlID0gV2ViSW5zcGVjdG9yLkluc3RydW1lbnRTaWRlYmFyUGFuZWwuU3Rh
cnRKYXZhU2NyaXB0UHJvZmlsZVZhbHVlOwogICAgIHN0YXJ0SmF2YVNjcmlwdFByb2ZpbGVPcHRp
b24uc2VsZWN0ZWQgPSBmYWxzZTsKICAgICAKLSAgICB2YXIgc3RhcnRDU1NTZWxlY3RvclByb2Zp
bGVPcHRpb24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJvcHRpb24iKTsKLSAgICBzdGFydENT
U1NlbGVjdG9yUHJvZmlsZU9wdGlvbi50ZXh0Q29udGVudCA9IFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiU3RhcnQgQ1NTIFNlbGVjdG9yIFByb2ZpbGUiKTsKLSAgICBzdGFydENTU1NlbGVjdG9yUHJv
ZmlsZU9wdGlvbi52YWx1ZSA9IFdlYkluc3BlY3Rvci5JbnN0cnVtZW50U2lkZWJhclBhbmVsLlN0
YXJ0Q1NTU2VsZWN0b3JQcm9maWxlVmFsdWU7Ci0gICAgc3RhcnRDU1NTZWxlY3RvclByb2ZpbGVP
cHRpb24uc2VsZWN0ZWQgPSBmYWxzZTsKLQogICAgIHZhciBzdGFydENhbnZhc1Byb2ZpbGVPcHRp
b24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJvcHRpb24iKTsKICAgICBzdGFydENhbnZhc1By
b2ZpbGVPcHRpb24udGV4dENvbnRlbnQgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlN0YXJ0IENh
bnZhcyBQcm9maWxlIik7CiAgICAgc3RhcnRDYW52YXNQcm9maWxlT3B0aW9uLnZhbHVlID0gV2Vi
SW5zcGVjdG9yLkluc3RydW1lbnRTaWRlYmFyUGFuZWwuU3RhcnRDYW52YXNQcm9maWxlVmFsdWU7
CiAgICAgc3RhcnRDYW52YXNQcm9maWxlT3B0aW9uLnNlbGVjdGVkID0gZmFsc2U7CiAKICAgICB0
aGlzLl9yZWNvcmRQcm9maWxlR2x5cGhFbGVtZW50LmFkZChzdGFydEphdmFTY3JpcHRQcm9maWxl
T3B0aW9uKTsKLSAgICB0aGlzLl9yZWNvcmRQcm9maWxlR2x5cGhFbGVtZW50LmFkZChzdGFydENT
U1NlbGVjdG9yUHJvZmlsZU9wdGlvbik7CiAgICAgdGhpcy5fcmVjb3JkUHJvZmlsZUdseXBoRWxl
bWVudC5hZGQoc3RhcnRDYW52YXNQcm9maWxlT3B0aW9uKTsKIAogICAgIHByb2ZpbGVzVGl0bGVC
YXJFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX3JlY29yZFByb2ZpbGVHbHlwaEVsZW1lbnQpOwpA
QCAtMTU1LDcgKzE0OSw2IEBAIFdlYkluc3BlY3Rvci5JbnN0cnVtZW50U2lkZWJhclBhbmVsLkNv
bG9yc0ljb25TdHlsZUNsYXNzID0gImNvbG9ycy1pY29uIjsKIFdlYkluc3BlY3Rvci5JbnN0cnVt
ZW50U2lkZWJhclBhbmVsLlNjcmlwdEljb25TdHlsZUNsYXNzID0gInNjcmlwdC1pY29uIjsKIFdl
Ykluc3BlY3Rvci5JbnN0cnVtZW50U2lkZWJhclBhbmVsLlByb2ZpbGVJY29uU3R5bGVDbGFzcyA9
ICJwcm9maWxlLWljb24iOwogV2ViSW5zcGVjdG9yLkluc3RydW1lbnRTaWRlYmFyUGFuZWwuU3Rh
cnRKYXZhU2NyaXB0UHJvZmlsZVZhbHVlID0gInN0YXJ0LWphdmFzY3JpcHQtcHJvZmlsZSI7Ci1X
ZWJJbnNwZWN0b3IuSW5zdHJ1bWVudFNpZGViYXJQYW5lbC5TdGFydENTU1NlbGVjdG9yUHJvZmls
ZVZhbHVlID0gInN0YXJ0LWNzcy1zZWxlY3Rvci1wcm9maWxlIjsKIFdlYkluc3BlY3Rvci5JbnN0
cnVtZW50U2lkZWJhclBhbmVsLlN0YXJ0Q2FudmFzUHJvZmlsZVZhbHVlID0gInN0YXJ0LWNhbnZh
cy1wcm9maWxlIjsKIAogV2ViSW5zcGVjdG9yLkluc3RydW1lbnRTaWRlYmFyUGFuZWwuU2VsZWN0
ZWRUaW1lbGluZUNvb2tpZUtleSA9ICJpbnN0cnVtZW50LXNpZGViYXItcGFuZWwtc2VsZWN0ZWQt
dGltZWxpbmUiOwpAQCAtMzA2LDcgKzI5OSw3IEBAIFdlYkluc3BlY3Rvci5JbnN0cnVtZW50U2lk
ZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAgIHRoaXMuX3JlY29yZFByb2Zp
bGVHbHlwaEVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShXZWJJbnNwZWN0b3IuSW5zdHJ1bWVudFNp
ZGViYXJQYW5lbC5SZWNvcmRHbHlwaFJlY29yZGluZ0ZvcmNlZFN0eWxlQ2xhc3MpOwogCi0gICAg
ICAgIGlmIChXZWJJbnNwZWN0b3IucHJvZmlsZU1hbmFnZXIuaXNQcm9maWxpbmdKYXZhU2NyaXB0
KCkgfHwgV2ViSW5zcGVjdG9yLnByb2ZpbGVNYW5hZ2VyLmlzUHJvZmlsaW5nQ1NTU2VsZWN0b3Jz
KCkgfHwgV2ViSW5zcGVjdG9yLnByb2ZpbGVNYW5hZ2VyLmlzUHJvZmlsaW5nQ2FudmFzKCkpCisg
ICAgICAgIGlmIChXZWJJbnNwZWN0b3IucHJvZmlsZU1hbmFnZXIuaXNQcm9maWxpbmdKYXZhU2Ny
aXB0KCkgfHwgV2ViSW5zcGVjdG9yLnByb2ZpbGVNYW5hZ2VyLmlzUHJvZmlsaW5nQ2FudmFzKCkp
CiAgICAgICAgICAgICB0aGlzLl9yZWNvcmRQcm9maWxlU3RhdHVzRWxlbWVudC50ZXh0Q29udGVu
dCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU3RvcCBQcm9maWxpbmciKTsKICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgdGhpcy5fcmVjb3JkUHJvZmlsZVN0YXR1c0VsZW1lbnQudGV4dENvbnRl
bnQgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlN0YXJ0IFByb2ZpbGluZyIpOwpAQCAtMzI5LDcg
KzMyMiw3IEBAIFdlYkluc3BlY3Rvci5JbnN0cnVtZW50U2lkZWJhclBhbmVsLnByb3RvdHlwZSA9
IHsKICAgICAgICAgCiAgICAgICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gc2hvdyB0aGUgc2VsZWN0
IGlmIHRoZSB1c2VyIGlzIGN1cnJlbnRseSBwcm9maWxpbmcuIEluIHRoYXQgY2FzZSwKICAgICAg
ICAgLy8gdGhlIHVzZXIgc2hvdWxkIGp1c3QgYmUgYWJsZSB0byBjbGljayB0aGUgcmVjb3JkIGJ1
dHRvbiB0byBzdG9wIHByb2ZpbGluZy4KLSAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5wcm9maWxl
TWFuYWdlci5pc1Byb2ZpbGluZ0phdmFTY3JpcHQoKSB8fCBXZWJJbnNwZWN0b3IucHJvZmlsZU1h
bmFnZXIuaXNQcm9maWxpbmdDU1NTZWxlY3RvcnMoKSB8fCBXZWJJbnNwZWN0b3IucHJvZmlsZU1h
bmFnZXIuaXNQcm9maWxpbmdDYW52YXMoKSkKKyAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5wcm9m
aWxlTWFuYWdlci5pc1Byb2ZpbGluZ0phdmFTY3JpcHQoKSB8fCBXZWJJbnNwZWN0b3IucHJvZmls
ZU1hbmFnZXIuaXNQcm9maWxpbmdDYW52YXMoKSkKICAgICAgICAgICAgIGV2ZW50LnByZXZlbnRE
ZWZhdWx0KCk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgLy8gV2hlbiBhIHNlbGVjdCBp
cyBvcGVuZWQsIGEgY2xpY2sgZXZlbnQgd2lsbCBiZSBmaXJlZCB3aGVuIHRoZSBzZWxlY3QgaXMg
Y2xvc2VkLApAQCAtMzUxLDggKzM0NCw2IEBAIFdlYkluc3BlY3Rvci5JbnN0cnVtZW50U2lkZWJh
clBhbmVsLnByb3RvdHlwZSA9IHsKIAogICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLnByb2ZpbGVN
YW5hZ2VyLmlzUHJvZmlsaW5nSmF2YVNjcmlwdCgpKQogICAgICAgICAgICAgV2ViSW5zcGVjdG9y
LnByb2ZpbGVNYW5hZ2VyLnN0b3BQcm9maWxpbmdKYXZhU2NyaXB0KCk7Ci0gICAgICAgIGlmIChX
ZWJJbnNwZWN0b3IucHJvZmlsZU1hbmFnZXIuaXNQcm9maWxpbmdDU1NTZWxlY3RvcnMoKSkKLSAg
ICAgICAgICAgIFdlYkluc3BlY3Rvci5wcm9maWxlTWFuYWdlci5zdG9wUHJvZmlsaW5nQ1NTU2Vs
ZWN0b3JzKCk7CiAgICAgICAgIGlmIChXZWJJbnNwZWN0b3IucHJvZmlsZU1hbmFnZXIuaXNQcm9m
aWxpbmdDYW52YXMoKSkKICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5wcm9maWxlTWFuYWdlci5z
dG9wUHJvZmlsaW5nQ2FudmFzKCk7CiAgICAgfSwKQEAgLTM2Niw4ICszNTcsNiBAQCBXZWJJbnNw
ZWN0b3IuSW5zdHJ1bWVudFNpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBz
ZWxlY3RlZFZhbHVlID0gdGhpcy5fcmVjb3JkUHJvZmlsZUdseXBoRWxlbWVudC5vcHRpb25zW3Nl
bGVjdGVkSW5kZXhdLnZhbHVlOwogICAgICAgICBpZiAoc2VsZWN0ZWRWYWx1ZSA9PT0gV2ViSW5z
cGVjdG9yLkluc3RydW1lbnRTaWRlYmFyUGFuZWwuU3RhcnRKYXZhU2NyaXB0UHJvZmlsZVZhbHVl
KQogICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnByb2ZpbGVNYW5hZ2VyLnN0YXJ0UHJvZmlsaW5n
SmF2YVNjcmlwdCgpOwotICAgICAgICBlbHNlIGlmIChzZWxlY3RlZFZhbHVlID09PSBXZWJJbnNw
ZWN0b3IuSW5zdHJ1bWVudFNpZGViYXJQYW5lbC5TdGFydENTU1NlbGVjdG9yUHJvZmlsZVZhbHVl
KQotICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnByb2ZpbGVNYW5hZ2VyLnN0YXJ0UHJvZmlsaW5n
Q1NTU2VsZWN0b3JzKCk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgY29uc29sZS5hc3Nl
cnQoc2VsZWN0ZWRWYWx1ZSA9PT0gV2ViSW5zcGVjdG9yLkluc3RydW1lbnRTaWRlYmFyUGFuZWwu
U3RhcnRDYW52YXNQcm9maWxlVmFsdWUpOwogICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnByb2Zp
bGVNYW5hZ2VyLnN0YXJ0UHJvZmlsaW5nQ2FudmFzKCk7CkBAIC01MDksNyArNDk4LDYgQEAgV2Vi
SW5zcGVjdG9yLkluc3RydW1lbnRTaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB0
aGlzLl9wcm9maWxlVHJlZUVsZW1lbnRNYXAgPSB7fTsKICAgICAgICAgCiAgICAgICAgIFdlYklu
c3BlY3Rvci5jb250ZW50QnJvd3Nlci5jb250ZW50Vmlld0NvbnRhaW5lci5jbG9zZUFsbENvbnRl
bnRWaWV3c09mUHJvdG90eXBlKFdlYkluc3BlY3Rvci5KYXZhU2NyaXB0UHJvZmlsZVZpZXcpOwot
ICAgICAgICBXZWJJbnNwZWN0b3IuY29udGVudEJyb3dzZXIuY29udGVudFZpZXdDb250YWluZXIu
Y2xvc2VBbGxDb250ZW50Vmlld3NPZlByb3RvdHlwZShXZWJJbnNwZWN0b3IuQ1NTU2VsZWN0b3JQ
cm9maWxlVmlldyk7CiAgICAgICAgIFdlYkluc3BlY3Rvci5jb250ZW50QnJvd3Nlci5jb250ZW50
Vmlld0NvbnRhaW5lci5jbG9zZUFsbENvbnRlbnRWaWV3c09mUHJvdG90eXBlKFdlYkluc3BlY3Rv
ci5DYW52YXNQcm9maWxlVmlldyk7CiAgICAgICAgIAogICAgICAgICB0aGlzLnVwZGF0ZUVtcHR5
Q29udGVudFBsYWNlaG9sZGVyKFdlYkluc3BlY3Rvci5VSVN0cmluZygiTm8gUmVjb3JkZWQgUHJv
ZmlsZXMiKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9NYWluLmh0bWwgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0
bWwKaW5kZXggZDUzMjliNi4uZTI3YmUwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL01haW4uaHRtbApAQCAtMzU2LDE0ICszNTYsMTEgQEAKICAgICA8c2NyaXB0
IHNyYz0iUHJvZmlsZVZpZXcuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJKYXZhU2Ny
aXB0UHJvZmlsZVR5cGUuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJKYXZhU2NyaXB0
UHJvZmlsZVZpZXcuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJDU1NTZWxlY3RvclBy
b2ZpbGVUeXBlLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iQ1NTU2VsZWN0b3JQcm9m
aWxlVmlldy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkNhbnZhc0RhdGFHcmlkTm9k
ZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkNhbnZhc1Byb2ZpbGVUeXBlLmpzIj48
L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQ2FudmFzUHJvZmlsZVZpZXcuanMiPjwvc2NyaXB0
PgogICAgIDxzY3JpcHQgc3JjPSJQcm9maWxlT2JqZWN0LmpzIj48L3NjcmlwdD4KICAgICA8c2Ny
aXB0IHNyYz0iSmF2YVNjcmlwdFByb2ZpbGVPYmplY3QuanMiPjwvc2NyaXB0PgotICAgIDxzY3Jp
cHQgc3JjPSJDU1NTZWxlY3RvclByb2ZpbGVPYmplY3QuanMiPjwvc2NyaXB0PgogICAgIDxzY3Jp
cHQgc3JjPSJDYW52YXNQcm9maWxlT2JqZWN0LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNy
Yz0iRGVidWdnZXJTaWRlYmFyUGFuZWwuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJC
cmVha3BvaW50VHJlZUVsZW1lbnQuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvZmlsZU1hbmFnZXIuanMgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm9maWxlTWFuYWdlci5qcwppbmRleCA1NmU1MjYz
Li41YTk4MmE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Qcm9maWxlTWFuYWdlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Qcm9maWxlTWFuYWdlci5qcwpAQCAtMjgsNyArMjgsNiBAQCBXZWJJbnNwZWN0b3IuUHJv
ZmlsZU1hbmFnZXIgPSBmdW5jdGlvbigpCiAgICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRo
aXMpOwogCiAgICAgdGhpcy5famF2YVNjcmlwdFByb2ZpbGVUeXBlID0gbmV3IFdlYkluc3BlY3Rv
ci5KYXZhU2NyaXB0UHJvZmlsZVR5cGU7Ci0gICAgdGhpcy5fY3NzU2VsZWN0b3JQcm9maWxlVHlw
ZSA9IG5ldyBXZWJJbnNwZWN0b3IuQ1NTU2VsZWN0b3JQcm9maWxlVHlwZTsKICAgICB0aGlzLl9j
YW52YXNQcm9maWxlVHlwZSA9IG5ldyBXZWJJbnNwZWN0b3IuQ2FudmFzUHJvZmlsZVR5cGU7CiAK
ICAgICBQcm9maWxlckFnZW50LmVuYWJsZSgpOwpAQCAtNjAsMTMgKzU5LDEwIEBAIFdlYkluc3Bl
Y3Rvci5Qcm9maWxlTWFuYWdlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2NoZWNrRm9y
SW50ZXJydXB0aW9ucygpOwogCiAgICAgICAgIHRoaXMuX3JlY29yZGluZ0phdmFTY3JpcHRQcm9m
aWxlID0gbnVsbDsKLSAgICAgICAgdGhpcy5fcmVjb3JkaW5nQ1NTU2VsZWN0b3JQcm9maWxlID0g
bnVsbDsKICAgICAgICAgdGhpcy5fcmVjb3JkaW5nQ2FudmFzUHJvZmlsZSA9IG51bGw7CiAKICAg
ICAgICAgdGhpcy5faXNQcm9maWxpbmcgPSBmYWxzZTsKIAotICAgICAgICB0aGlzLl9jc3NTZWxl
Y3RvclByb2ZpbGVUeXBlLnJlc2V0KCk7Ci0KICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9M
aXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlByb2ZpbGVNYW5hZ2VyLkV2ZW50LkNsZWFyZWQpOwogICAg
IH0sCiAKQEAgLTg1LDQ1ICs4MSw2IEBAIFdlYkluc3BlY3Rvci5Qcm9maWxlTWFuYWdlci5wcm90
b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2phdmFTY3JpcHRQcm9maWxlVHlwZS5zdG9wUmVjb3Jk
aW5nUHJvZmlsZSgpOwogICAgIH0sCiAKLSAgICBpc1Byb2ZpbGluZ0NTU1NlbGVjdG9yczogZnVu
Y3Rpb24oKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2Nzc1NlbGVjdG9yUHJvZmlsZVR5
cGUuaXNSZWNvcmRpbmdQcm9maWxlKCk7Ci0gICAgfSwKLQotICAgIHN0YXJ0UHJvZmlsaW5nQ1NT
U2VsZWN0b3JzOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB0aGlzLl9jc3NTZWxlY3RvclBy
b2ZpbGVUeXBlLnN0YXJ0UmVjb3JkaW5nUHJvZmlsZSgpOwotICAgICAgICAKLSAgICAgICAgdmFy
IGlkID0gdGhpcy5fY3NzU2VsZWN0b3JQcm9maWxlVHlwZS5uZXh0UHJvZmlsZUlkKCk7Ci0gICAg
ICAgIHRoaXMuX3JlY29yZGluZ0NTU1NlbGVjdG9yUHJvZmlsZSA9IG5ldyBXZWJJbnNwZWN0b3Iu
Q1NTU2VsZWN0b3JQcm9maWxlT2JqZWN0KFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ1NTIFNlbGVj
dG9yIFByb2ZpbGUgJWQiKS5mb3JtYXQoaWQpLCBpZCwgdHJ1ZSk7Ci0gICAgICAgIHRoaXMuZGlz
cGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5Qcm9maWxlTWFuYWdlci5FdmVudC5Q
cm9maWxlV2FzQWRkZWQsIHtwcm9maWxlOiB0aGlzLl9yZWNvcmRpbmdDU1NTZWxlY3RvclByb2Zp
bGV9KTsKLSAgICAgICAgCi0gICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdl
Ykluc3BlY3Rvci5Qcm9maWxlTWFuYWdlci5FdmVudC5Qcm9maWxpbmdTdGFydGVkKTsKLSAgICB9
LAotICAgIAotICAgIHN0b3BQcm9maWxpbmdDU1NTZWxlY3RvcnM6IGZ1bmN0aW9uKCkKLSAgICB7
Ci0gICAgICAgIGZ1bmN0aW9uIGNzc1Byb2ZpbGluZ1N0b3BwZWQoZXJyb3IsIHByb2ZpbGUpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIGlmIChlcnJvcikKLSAgICAgICAgICAgICAgICByZXR1cm47
Ci0KLSAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX3JlY29yZGluZ0NTU1NlbGVjdG9y
UHJvZmlsZSk7Ci0KLSAgICAgICAgICAgIHRoaXMuX3JlY29yZGluZ0NTU1NlbGVjdG9yUHJvZmls
ZS5kYXRhID0gcHJvZmlsZS5kYXRhOwotICAgICAgICAgICAgdGhpcy5fcmVjb3JkaW5nQ1NTU2Vs
ZWN0b3JQcm9maWxlLnRvdGFsVGltZSA9IHByb2ZpbGUudG90YWxUaW1lOwotICAgICAgICAgICAg
dGhpcy5fcmVjb3JkaW5nQ1NTU2VsZWN0b3JQcm9maWxlLnJlY29yZGluZyA9IGZhbHNlOwotICAg
ICAgICAgICAgCi0gICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJ
bnNwZWN0b3IuUHJvZmlsZU1hbmFnZXIuRXZlbnQuUHJvZmlsZVdhc1VwZGF0ZWQsIHtwcm9maWxl
OiB0aGlzLl9yZWNvcmRpbmdDU1NTZWxlY3RvclByb2ZpbGV9KTsKLQotICAgICAgICAgICAgdGhp
cy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlByb2ZpbGVNYW5hZ2VyLkV2
ZW50LlByb2ZpbGluZ0VuZGVkLCB7cHJvZmlsZTogdGhpcy5fcmVjb3JkaW5nQ1NTU2VsZWN0b3JQ
cm9maWxlfSk7Ci0KLSAgICAgICAgICAgIHRoaXMuX3JlY29yZGluZ0NTU1NlbGVjdG9yUHJvZmls
ZSA9IG51bGw7Ci0gICAgICAgIH0KLQotICAgICAgICB0aGlzLl9jc3NTZWxlY3RvclByb2ZpbGVU
eXBlLnN0b3BSZWNvcmRpbmdQcm9maWxlKGNzc1Byb2ZpbGluZ1N0b3BwZWQuYmluZCh0aGlzKSk7
Ci0gICAgfSwKLQogICAgIGlzUHJvZmlsaW5nQ2FudmFzOiBmdW5jdGlvbigpCiAgICAgewogICAg
ICAgICByZXR1cm4gdGhpcy5fY2FudmFzUHJvZmlsZVR5cGUuaXNSZWNvcmRpbmdQcm9maWxlKCk7
CkBAIC0yNDcsOSArMjA0LDYgQEAgV2ViSW5zcGVjdG9yLlByb2ZpbGVNYW5hZ2VyLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgaWYgKHRoaXMuX3JlY29yZGluZ0phdmFTY3JpcHRQcm9maWxlKSB7CiAg
ICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuUHJv
ZmlsZU1hbmFnZXIuRXZlbnQuUHJvZmlsaW5nSW50ZXJydXB0ZWQsIHtwcm9maWxlOiB0aGlzLl9y
ZWNvcmRpbmdKYXZhU2NyaXB0UHJvZmlsZX0pOwogICAgICAgICAgICAgdGhpcy5famF2YVNjcmlw
dFByb2ZpbGVUeXBlLnNldFJlY29yZGluZ1Byb2ZpbGUoZmFsc2UpOwotICAgICAgICB9IGVsc2Ug
aWYgKHRoaXMuX3JlY29yZGluZ0NTU1NlbGVjdG9yUHJvZmlsZSkgewotICAgICAgICAgICAgdGhp
cy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlByb2ZpbGVNYW5hZ2VyLkV2
ZW50LlByb2ZpbGluZ0ludGVycnVwdGVkLCB7cHJvZmlsZTogdGhpcy5fcmVjb3JkaW5nQ1NTU2Vs
ZWN0b3JQcm9maWxlfSk7Ci0gICAgICAgICAgICB0aGlzLl9jc3NTZWxlY3RvclByb2ZpbGVUeXBl
LnNldFJlY29yZGluZ1Byb2ZpbGUoZmFsc2UpOwogICAgICAgICB9IGVsc2UgaWYgKHRoaXMuX3Jl
Y29yZGluZ0NhbnZhc1Byb2ZpbGUpIHsKICAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRv
TGlzdGVuZXJzKFdlYkluc3BlY3Rvci5Qcm9maWxlTWFuYWdlci5FdmVudC5Qcm9maWxpbmdJbnRl
cnJ1cHRlZCwge3Byb2ZpbGU6IHRoaXMuX3JlY29yZGluZ0NhbnZhc1Byb2ZpbGV9KTsKICAgICAg
ICAgICAgIHRoaXMuX2NhbnZhc1Byb2ZpbGVUeXBlLnNldFJlY29yZGluZ1Byb2ZpbGUoZmFsc2Up
OwpAQCAtMjYyLDggKzIxNiw2IEBAIFdlYkluc3BlY3Rvci5Qcm9maWxlTWFuYWdlci5wcm90b3R5
cGUgPSB7CiAKICAgICAgICAgaWYgKHRoaXMuX3JlY29yZGluZ0phdmFTY3JpcHRQcm9maWxlKQog
ICAgICAgICAgICAgdGhpcy5zdGFydFByb2ZpbGluZ0phdmFTY3JpcHQoKTsKLSAgICAgICAgZWxz
ZSBpZiAodGhpcy5fcmVjb3JkaW5nQ1NTU2VsZWN0b3JQcm9maWxlKQotICAgICAgICAgICAgdGhp
cy5zdGFydFByb2ZpbGluZ0NTU1NlbGVjdG9ycygpOwogICAgICAgICBlbHNlIGlmICh0aGlzLl9y
ZWNvcmRpbmdDYW52YXNQcm9maWxlKQogICAgICAgICAgICAgdGhpcy5zdGFydFByb2ZpbGluZ0Nh
bnZhcygpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9XZWJJbnNw
ZWN0b3JVSS52Y3hwcm9qL1dlYkluc3BlY3RvclVJLnZjeHByb2ogYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvV2ViSW5zcGVjdG9yVUkudmN4cHJvai9XZWJJbnNwZWN0b3JVSS52Y3hwcm9qCmluZGV4
IDk3OTQ3YTQuLjJlYjQ1M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9XZWJJ
bnNwZWN0b3JVSS52Y3hwcm9qL1dlYkluc3BlY3RvclVJLnZjeHByb2oKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1dlYkluc3BlY3RvclVJLnZjeHByb2ovV2ViSW5zcGVjdG9yVUkudmN4cHJv
agpAQCAtMzA1LDkgKzMwNSw2IEBACiAgICAgPE5vbmUgSW5jbHVkZT0iLi5cVXNlckludGVyZmFj
ZVxDU1NPYnNlcnZlci5qcyIgLz4KICAgICA8Tm9uZSBJbmNsdWRlPSIuLlxVc2VySW50ZXJmYWNl
XENTU1Byb3BlcnR5LmpzIiAvPgogICAgIDxOb25lIEluY2x1ZGU9Ii4uXFVzZXJJbnRlcmZhY2Vc
Q1NTUnVsZS5qcyIgLz4KLSAgICA8Tm9uZSBJbmNsdWRlPSIuLlxVc2VySW50ZXJmYWNlXENTU1Nl
bGVjdG9yUHJvZmlsZU9iamVjdC5qcyIgLz4KLSAgICA8Tm9uZSBJbmNsdWRlPSIuLlxVc2VySW50
ZXJmYWNlXENTU1NlbGVjdG9yUHJvZmlsZVR5cGUuanMiIC8+Ci0gICAgPE5vbmUgSW5jbHVkZT0i
Li5cVXNlckludGVyZmFjZVxDU1NTZWxlY3RvclByb2ZpbGVWaWV3LmpzIiAvPgogICAgIDxOb25l
IEluY2x1ZGU9Ii4uXFVzZXJJbnRlcmZhY2VcQ1NTU3R5bGVEZWNsYXJhdGlvbi5qcyIgLz4KICAg
ICA8Tm9uZSBJbmNsdWRlPSIuLlxVc2VySW50ZXJmYWNlXENTU1N0eWxlRGVjbGFyYXRpb25TZWN0
aW9uLmNzcyIgLz4KICAgICA8Tm9uZSBJbmNsdWRlPSIuLlxVc2VySW50ZXJmYWNlXENTU1N0eWxl
RGVjbGFyYXRpb25TZWN0aW9uLmpzIiAvPgpAQCAtNzg4LDQgKzc4NSw0IEBACiAgIDxJbXBvcnQg
UHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+CiAgIDxJ
bXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+CiAgIDwvSW1wb3J0R3JvdXA+Ci08
L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorPC9Qcm9qZWN0PgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1dlYkluc3BlY3RvclVJLnZjeHByb2ovV2ViSW5z
cGVjdG9yVUkudmN4cHJvai5maWx0ZXJzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1dlYkluc3Bl
Y3RvclVJLnZjeHByb2ovV2ViSW5zcGVjdG9yVUkudmN4cHJvai5maWx0ZXJzCmluZGV4IGYyYTI2
MGEuLmYxNjA3OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9XZWJJbnNwZWN0
b3JVSS52Y3hwcm9qL1dlYkluc3BlY3RvclVJLnZjeHByb2ouZmlsdGVycworKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvV2ViSW5zcGVjdG9yVUkudmN4cHJvai9XZWJJbnNwZWN0b3JVSS52Y3hw
cm9qLmZpbHRlcnMKQEAgLTI3NiwxNSArMjc2LDYgQEAKICAgICA8Tm9uZSBJbmNsdWRlPSIuLlxV
c2VySW50ZXJmYWNlXENTU1J1bGUuanMiPgogICAgICAgPEZpbHRlcj5Vc2VySW50ZXJmYWNlPC9G
aWx0ZXI+CiAgICAgPC9Ob25lPgotICAgIDxOb25lIEluY2x1ZGU9Ii4uXFVzZXJJbnRlcmZhY2Vc
Q1NTU2VsZWN0b3JQcm9maWxlT2JqZWN0LmpzIj4KLSAgICAgIDxGaWx0ZXI+VXNlckludGVyZmFj
ZTwvRmlsdGVyPgotICAgIDwvTm9uZT4KLSAgICA8Tm9uZSBJbmNsdWRlPSIuLlxVc2VySW50ZXJm
YWNlXENTU1NlbGVjdG9yUHJvZmlsZVR5cGUuanMiPgotICAgICAgPEZpbHRlcj5Vc2VySW50ZXJm
YWNlPC9GaWx0ZXI+Ci0gICAgPC9Ob25lPgotICAgIDxOb25lIEluY2x1ZGU9Ii4uXFVzZXJJbnRl
cmZhY2VcQ1NTU2VsZWN0b3JQcm9maWxlVmlldy5qcyI+Ci0gICAgICA8RmlsdGVyPlVzZXJJbnRl
cmZhY2U8L0ZpbHRlcj4KLSAgICA8L05vbmU+CiAgICAgPE5vbmUgSW5jbHVkZT0iLi5cVXNlcklu
dGVyZmFjZVxDU1NTdHlsZURlY2xhcmF0aW9uLmpzIj4KICAgICAgIDxGaWx0ZXI+VXNlckludGVy
ZmFjZTwvRmlsdGVyPgogICAgIDwvTm9uZT4KQEAgLTE3MzksNCArMTczMCw0IEBACiAgICAgPC9O
b25lPgogICAgIDxOb25lIEluY2x1ZGU9IldlYkluc3BlY3RvclVJUG9zdEJ1aWxkLmNtZCIgLz4K
ICAgPC9JdGVtR3JvdXA+Ci08L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQor
PC9Qcm9qZWN0Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>221255</attachid>
            <date>2014-01-15 02:56:54 -0800</date>
            <delta_ts>2014-01-15 11:34:08 -0800</delta_ts>
            <desc>Patch with removed files</desc>
            <filename>bug-127039.diff</filename>
            <type>text/plain</type>
            <size>55624</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBjZGNmM2YwLi4xZjBhMjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjgg
QEAKKzIwMTQtMDEtMTUgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgorCisgICAg
ICAgIFJlbW92ZSB0aGUgQ1NTIHNlbGVjdG9yIHByb2ZpbGVyLgorICAgICAgICA8aHR0cHM6Ly93
ZWJraXQub3JnL2IvMTI3MDM5PgorCisgICAgICAgIFRoZSBzZWxlY3RvciBwcm9maWxlciB3YXMg
cGFpbnRpbmcgYSBtb3N0bHkgZmljdGlvbmFsIHBpY3R1cmUgb2Ygd2hhdAorICAgICAgICBzZWxl
Y3RvcnMgd2Ugd2VyZSBzcGVuZGluZyB0aW1lIG9uLiBJdCBuZXZlciByZWFsbHkgZ3Jva2tlZCB0
aGUgZmFzdAorICAgICAgICBwYXRoIHNlbGVjdG9ycywgbm9yIGRpZCBpdCB1bmRlcnN0YW5kIHJl
Y2VudCBhZGRpdGlvbnMgbGlrZSB0aGUgZXh0cmEKKyAgICAgICAgY2FzY2FkaW5nIHBhc3Mgb3Ig
dGhlIHNlbGVjdG9yIEpJVC4KKworICAgICAgICBTb21ld2hhdCBpcm9uaWNhbGx5LCB0aGlzIG1h
eSBlbmQgdXAgbWFraW5nIHNvbWUgc2VsZWN0b3JzIHJ1biBmYXN0ZXIKKyAgICAgICAgc2luY2Ug
aXQgcmVtb3ZlcyBhIG51bWJlciBvZiBicmFuY2VzIGluIGhvdCBjb2RlLgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogY3NzL0VsZW1lbnRSdWxlQ29s
bGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSdWxlQ29sbGVjdG9yOjpjb2xs
ZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3QpOgorICAgICAgICAqIGNzcy9FbGVtZW50UnVsZUNvbGxl
Y3Rvci5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJh
Y2tlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
cHJvdG9jb2wvQ1NTLmpzb246CisKIDIwMTQtMDEtMTQgIENoYW5nU2VvayBPaCAgPGNoYW5nc2Vv
ay5vaEBjb2xsYWJvcmEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgYnVpbGQgZml4IGFmdGVy
IHIxNjE5ODAuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVudFJ1bGVDb2xs
ZWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmNwcApp
bmRleCAwMzY3NjRiLi5iYTliN2EyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRWxl
bWVudFJ1bGVDb2xsZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9FbGVtZW50UnVs
ZUNvbGxlY3Rvci5jcHAKQEAgLTM2MSwxNiArMzYxLDYgQEAgaW5saW5lIGJvb2wgRWxlbWVudFJ1
bGVDb2xsZWN0b3I6OnJ1bGVNYXRjaGVzKGNvbnN0IFJ1bGVEYXRhJiBydWxlRGF0YSwgUHNldWRv
SWQKIAogdm9pZCBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6Y29sbGVjdE1hdGNoaW5nUnVsZXNGb3JM
aXN0KGNvbnN0IFZlY3RvcjxSdWxlRGF0YT4qIHJ1bGVzLCBjb25zdCBNYXRjaFJlcXVlc3QmIG1h
dGNoUmVxdWVzdCwgU3R5bGVSZXNvbHZlcjo6UnVsZVJhbmdlJiBydWxlUmFuZ2UpCiB7Ci0gICAg
aWYgKFVOTElLRUxZKEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aGFzRnJvbnRlbmRzKCkpKSB7
Ci0gICAgICAgIGRvQ29sbGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0PHRydWU+KHJ1bGVzLCBtYXRj
aFJlcXVlc3QsIHJ1bGVSYW5nZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgZG9Db2xs
ZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3Q8ZmFsc2U+KHJ1bGVzLCBtYXRjaFJlcXVlc3QsIHJ1bGVS
YW5nZSk7Ci19Ci0KLXRlbXBsYXRlPGJvb2wgaGFzSW5zcGVjdG9yRnJvbnRlbmRzPgotdm9pZCBF
bGVtZW50UnVsZUNvbGxlY3Rvcjo6ZG9Db2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3QoY29uc3Qg
VmVjdG9yPFJ1bGVEYXRhPiogcnVsZXMsIGNvbnN0IE1hdGNoUmVxdWVzdCYgbWF0Y2hSZXF1ZXN0
LCBTdHlsZVJlc29sdmVyOjpSdWxlUmFuZ2UmIHJ1bGVSYW5nZSkKLXsKICAgICBpZiAoIXJ1bGVz
KQogICAgICAgICByZXR1cm47CiAKQEAgLTM4Miw5ICszNzIsNiBAQCB2b2lkIEVsZW1lbnRSdWxl
Q29sbGVjdG9yOjpkb0NvbGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlzdChjb25zdCBWZWN0b3I8UnVs
ZURhdGE+KgogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgU3R5bGVSdWxlKiBydWxl
ID0gcnVsZURhdGEucnVsZSgpOwotICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29r
aWUgY29va2llOwotICAgICAgICBpZiAoaGFzSW5zcGVjdG9yRnJvbnRlbmRzKQotICAgICAgICAg
ICAgY29va2llID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsTWF0Y2hSdWxlKCZkb2N1
bWVudCgpLCBydWxlLCBtX2luc3BlY3RvckNTU09NV3JhcHBlcnMsIGRvY3VtZW50KCkuc3R5bGVT
aGVldENvbGxlY3Rpb24oKSk7CiAgICAgICAgIFBzZXVkb0lkIGR5bmFtaWNQc2V1ZG8gPSBOT1BT
RVVETzsKICAgICAgICAgaWYgKHJ1bGVNYXRjaGVzKHJ1bGVEYXRhLCBkeW5hbWljUHNldWRvKSkg
ewogICAgICAgICAgICAgLy8gRm9yIFNoYXJpbmdSdWxlcyB0ZXN0aW5nLCBhbnkgbWF0Y2ggaXMg
Z29vZCBlbm91Z2gsIHdlIGRvbid0IGNhcmUgd2hhdCBpcyBtYXRjaGVkLgpAQCAtMzk1LDI1ICsz
ODIsMTYgQEAgdm9pZCBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6ZG9Db2xsZWN0TWF0Y2hpbmdSdWxl
c0Zvckxpc3QoY29uc3QgVmVjdG9yPFJ1bGVEYXRhPioKIAogICAgICAgICAgICAgLy8gSWYgdGhl
IHJ1bGUgaGFzIG5vIHByb3BlcnRpZXMgdG8gYXBwbHksIHRoZW4gaWdub3JlIGl0IGluIHRoZSBu
b24tZGVidWcgbW9kZS4KICAgICAgICAgICAgIGNvbnN0IFN0eWxlUHJvcGVydGllcyYgcHJvcGVy
dGllcyA9IHJ1bGUtPnByb3BlcnRpZXMoKTsKLSAgICAgICAgICAgIGlmIChwcm9wZXJ0aWVzLmlz
RW1wdHkoKSAmJiAhbWF0Y2hSZXF1ZXN0LmluY2x1ZGVFbXB0eVJ1bGVzKSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKGhhc0luc3BlY3RvckZyb250ZW5kcykKLSAgICAgICAgICAgICAgICAgICAgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRNYXRjaFJ1bGUoY29va2llLCBmYWxzZSk7CisgICAg
ICAgICAgICBpZiAocHJvcGVydGllcy5pc0VtcHR5KCkgJiYgIW1hdGNoUmVxdWVzdC5pbmNsdWRl
RW1wdHlSdWxlcykKICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIC8vIEZJWE1FOiBFeHBvc2luZyB0aGUgbm9uLXN0YW5kYXJkIGdldE1hdGNoZWRD
U1NSdWxlcyBBUEkgdG8gd2ViIGlzIHRoZSBvbmx5IHJlYXNvbiB0aGlzIGlzIG5lZWRlZC4KLSAg
ICAgICAgICAgIGlmIChtX3NhbWVPcmlnaW5Pbmx5ICYmICFydWxlRGF0YS5oYXNEb2N1bWVudFNl
Y3VyaXR5T3JpZ2luKCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoaGFzSW5zcGVjdG9yRnJvbnRl
bmRzKQotICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZE1h
dGNoUnVsZShjb29raWUsIGZhbHNlKTsKKyAgICAgICAgICAgIGlmIChtX3NhbWVPcmlnaW5Pbmx5
ICYmICFydWxlRGF0YS5oYXNEb2N1bWVudFNlY3VyaXR5T3JpZ2luKCkpCiAgICAgICAgICAgICAg
ICAgY29udGludWU7Ci0gICAgICAgICAgICB9CiAgICAgICAgICAgICAvLyBJZiB3ZSdyZSBtYXRj
aGluZyBub3JtYWwgcnVsZXMsIHNldCBhIHBzZXVkbyBiaXQgaWYKICAgICAgICAgICAgIC8vIHdl
IHJlYWxseSBqdXN0IG1hdGNoZWQgYSBwc2V1ZG8tZWxlbWVudC4KICAgICAgICAgICAgIGlmIChk
eW5hbWljUHNldWRvICE9IE5PUFNFVURPICYmIG1fcHNldWRvU3R5bGVSZXF1ZXN0LnBzZXVkb0lk
ID09IE5PUFNFVURPKSB7Ci0gICAgICAgICAgICAgICAgaWYgKG1fbW9kZSA9PSBTZWxlY3RvckNo
ZWNrZXI6OkNvbGxlY3RpbmdSdWxlcykgewotICAgICAgICAgICAgICAgICAgICBpZiAoaGFzSW5z
cGVjdG9yRnJvbnRlbmRzKQotICAgICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRNYXRjaFJ1bGUoY29va2llLCBmYWxzZSk7CisgICAgICAgICAgICAgICAg
aWYgKG1fbW9kZSA9PSBTZWxlY3RvckNoZWNrZXI6OkNvbGxlY3RpbmdSdWxlcykKICAgICAgICAg
ICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
IGlmIChkeW5hbWljUHNldWRvIDwgRklSU1RfSU5URVJOQUxfUFNFVURPSUQpCiAgICAgICAgICAg
ICAgICAgICAgIHN0YXRlLnN0eWxlKCktPnNldEhhc1BzZXVkb1N0eWxlKGR5bmFtaWNQc2V1ZG8p
OwogICAgICAgICAgICAgfSBlbHNlIHsKQEAgLTQyNCwxMyArNDAyLDkgQEAgdm9pZCBFbGVtZW50
UnVsZUNvbGxlY3Rvcjo6ZG9Db2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3QoY29uc3QgVmVjdG9y
PFJ1bGVEYXRhPioKIAogICAgICAgICAgICAgICAgIC8vIEFkZCB0aGlzIHJ1bGUgdG8gb3VyIGxp
c3Qgb2YgbWF0Y2hlZCBydWxlcy4KICAgICAgICAgICAgICAgICBhZGRNYXRjaGVkUnVsZSgmcnVs
ZURhdGEpOwotICAgICAgICAgICAgICAgIGlmIChoYXNJbnNwZWN0b3JGcm9udGVuZHMpCi0gICAg
ICAgICAgICAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkTWF0Y2hSdWxlKGNv
b2tpZSwgdHJ1ZSk7CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KLSAgICAgICAgaWYgKGhhc0luc3BlY3RvckZyb250ZW5kcykKLSAgICAgICAgICAg
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkTWF0Y2hSdWxlKGNvb2tpZSwgZmFsc2UpOwog
ICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0VsZW1lbnRSdWxlQ29s
bGVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3IuaAppbmRl
eCBiNWQyNjU2Li4yNWM1NDYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVu
dFJ1bGVDb2xsZWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVudFJ1bGVDb2xs
ZWN0b3IuaApAQCAtNDQsNyArNDQsNiBAQCBwdWJsaWM6CiAgICAgICAgIDogbV9zdGF0ZShzdGF0
ZSkKICAgICAgICAgLCBtX3J1bGVTZXRzKHN0eWxlUmVzb2x2ZXItPnJ1bGVTZXRzKCkpCiAgICAg
ICAgICwgbV9zZWxlY3RvckZpbHRlcihzdHlsZVJlc29sdmVyLT5zZWxlY3RvckZpbHRlcigpKQot
ICAgICAgICAsIG1faW5zcGVjdG9yQ1NTT01XcmFwcGVycyhzdHlsZVJlc29sdmVyLT5pbnNwZWN0
b3JDU1NPTVdyYXBwZXJzKCkpCiAgICAgICAgICwgbV9zY29wZVJlc29sdmVyKHN0eWxlUmVzb2x2
ZXItPnNjb3BlUmVzb2x2ZXIoKSkKICAgICAgICAgLCBtX2lzUHJpbnRTdHlsZShmYWxzZSkKICAg
ICAgICAgLCBtX3JlZ2lvbkZvclN0eWxpbmcoMCkKQEAgLTg4LDEzICs4Nyw5IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBhZGRNYXRjaGVkUnVsZShjb25zdCBSdWxlRGF0YSopOwogICAgIHZvaWQgY2xl
YXJNYXRjaGVkUnVsZXMoKTsKIAotICAgIHRlbXBsYXRlPGJvb2wgaGFzSW5zcGVjdG9yRnJvbnRl
bmRzPgotICAgIHZvaWQgZG9Db2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3QoY29uc3QgVmVjdG9y
PFJ1bGVEYXRhPiosIGNvbnN0IE1hdGNoUmVxdWVzdCYsIFN0eWxlUmVzb2x2ZXI6OlJ1bGVSYW5n
ZSYpOwotCiAgICAgY29uc3QgU3R5bGVSZXNvbHZlcjo6U3RhdGUmIG1fc3RhdGU7CiAgICAgRG9j
dW1lbnRSdWxlU2V0cyYgbV9ydWxlU2V0czsKICAgICBTZWxlY3RvckZpbHRlciYgbV9zZWxlY3Rv
ckZpbHRlcjsKLSAgICBJbnNwZWN0b3JDU1NPTVdyYXBwZXJzJiBtX2luc3BlY3RvckNTU09NV3Jh
cHBlcnM7CiAgICAgU3R5bGVTY29wZVJlc29sdmVyKiBtX3Njb3BlUmVzb2x2ZXI7CiAKICAgICBi
b29sIG1faXNQcmludFN0eWxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNTU0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDU1NBZ2VudC5jcHAKaW5kZXggYjM5NWQxNC4uYzA4NDk5MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCkBAIC03Niw2MSArNzYsNiBAQCBl
bnVtIEZvcmNlUHNldWRvQ2xhc3NGbGFncyB7CiAgICAgUHNldWRvVmlzaXRlZCA9IDEgPDwgMwog
fTsKIAotc3RydWN0IFJ1bGVNYXRjaERhdGEgewotICAgIFN0cmluZyBzZWxlY3RvcjsKLSAgICBT
dHJpbmcgdXJsOwotICAgIHVuc2lnbmVkIGxpbmVOdW1iZXI7Ci0gICAgZG91YmxlIHN0YXJ0VGlt
ZTsKLX07Ci0KLXN0cnVjdCBSdWxlTWF0Y2hpbmdTdGF0cyB7Ci0gICAgUnVsZU1hdGNoaW5nU3Rh
dHMoKQotICAgICAgICA6IGxpbmVOdW1iZXIoMCksIHRvdGFsVGltZSgwLjApLCBoaXRzKDApLCBt
YXRjaGVzKDApCi0gICAgewotICAgIH0KLSAgICBSdWxlTWF0Y2hpbmdTdGF0cyhjb25zdCBSdWxl
TWF0Y2hEYXRhJiBkYXRhLCBkb3VibGUgdG90YWxUaW1lLCB1bnNpZ25lZCBoaXRzLCB1bnNpZ25l
ZCBtYXRjaGVzKQotICAgICAgICA6IHNlbGVjdG9yKGRhdGEuc2VsZWN0b3IpLCB1cmwoZGF0YS51
cmwpLCBsaW5lTnVtYmVyKGRhdGEubGluZU51bWJlciksIHRvdGFsVGltZSh0b3RhbFRpbWUpLCBo
aXRzKGhpdHMpLCBtYXRjaGVzKG1hdGNoZXMpCi0gICAgewotICAgIH0KLQotICAgIFN0cmluZyBz
ZWxlY3RvcjsKLSAgICBTdHJpbmcgdXJsOwotICAgIHVuc2lnbmVkIGxpbmVOdW1iZXI7Ci0gICAg
ZG91YmxlIHRvdGFsVGltZTsKLSAgICB1bnNpZ25lZCBoaXRzOwotICAgIHVuc2lnbmVkIG1hdGNo
ZXM7Ci19OwotCi1jbGFzcyBTZWxlY3RvclByb2ZpbGUgewotICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwotcHVibGljOgotICAgIFNlbGVjdG9yUHJvZmlsZSgpCi0gICAgICAgIDogbV90b3Rh
bE1hdGNoaW5nVGltZU1TKDAuMCkKLSAgICB7Ci0gICAgfQotICAgIHZpcnR1YWwgflNlbGVjdG9y
UHJvZmlsZSgpCi0gICAgewotICAgIH0KLQotICAgIGRvdWJsZSB0b3RhbE1hdGNoaW5nVGltZU1z
KCkgY29uc3QgeyByZXR1cm4gbV90b3RhbE1hdGNoaW5nVGltZU1TOyB9Ci0KLSAgICBTdHJpbmcg
bWFrZUtleSgpOwotICAgIHZvaWQgc3RhcnRTZWxlY3Rvcihjb25zdCBDU1NTdHlsZVJ1bGUqKTsK
LSAgICB2b2lkIGNvbW1pdFNlbGVjdG9yKGJvb2wpOwotICAgIHZvaWQgY29tbWl0U2VsZWN0b3JU
aW1lKCk7Ci0gICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlNlbGVj
dG9yUHJvZmlsZT4gdG9JbnNwZWN0b3JPYmplY3QoKSBjb25zdDsKLQotcHJpdmF0ZToKLQotICAg
IC8vIEtleSBpcyAic2VsZWN0b3I/dXJsOmxpbmUiLgotICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJp
bmcsIFJ1bGVNYXRjaGluZ1N0YXRzPiBSdWxlTWF0Y2hpbmdTdGF0c01hcDsKLQotICAgIGRvdWJs
ZSBtX3RvdGFsTWF0Y2hpbmdUaW1lTVM7Ci0gICAgUnVsZU1hdGNoaW5nU3RhdHNNYXAgbV9ydWxl
TWF0Y2hpbmdTdGF0czsKLSAgICBSdWxlTWF0Y2hEYXRhIG1fY3VycmVudE1hdGNoRGF0YTsKLX07
Ci0KLQogc3RhdGljIHVuc2lnbmVkIGNvbXB1dGVQc2V1ZG9DbGFzc01hc2soSW5zcGVjdG9yQXJy
YXkqIHBzZXVkb0NsYXNzQXJyYXkpCiB7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcs
IGFjdGl2ZSwgKEFTQ0lJTGl0ZXJhbCgiYWN0aXZlIikpKTsKQEAgLTE2MCw3MiArMTA1LDYgQEAg
c3RhdGljIHVuc2lnbmVkIGNvbXB1dGVQc2V1ZG9DbGFzc01hc2soSW5zcGVjdG9yQXJyYXkqIHBz
ZXVkb0NsYXNzQXJyYXkpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotaW5saW5lIFN0cmluZyBT
ZWxlY3RvclByb2ZpbGU6Om1ha2VLZXkoKQotewotICAgIHJldHVybiBtYWtlU3RyaW5nKG1fY3Vy
cmVudE1hdGNoRGF0YS5zZWxlY3RvciwgIj8iLCBtX2N1cnJlbnRNYXRjaERhdGEudXJsLCAiOiIs
IFN0cmluZzo6bnVtYmVyKG1fY3VycmVudE1hdGNoRGF0YS5saW5lTnVtYmVyKSk7Ci19Ci0KLWlu
bGluZSB2b2lkIFNlbGVjdG9yUHJvZmlsZTo6c3RhcnRTZWxlY3Rvcihjb25zdCBDU1NTdHlsZVJ1
bGUqIHJ1bGUpCi17Ci0gICAgbV9jdXJyZW50TWF0Y2hEYXRhLnNlbGVjdG9yID0gcnVsZS0+c2Vs
ZWN0b3JUZXh0KCk7Ci0gICAgQ1NTU3R5bGVTaGVldCogc3R5bGVTaGVldCA9IHJ1bGUtPnBhcmVu
dFN0eWxlU2hlZXQoKTsKLSAgICBTdHJpbmcgdXJsID0gZW1wdHlTdHJpbmcoKTsKLSAgICBpZiAo
c3R5bGVTaGVldCkgewotICAgICAgICB1cmwgPSBJbnNwZWN0b3JTdHlsZVNoZWV0OjpzdHlsZVNo
ZWV0VVJMKHN0eWxlU2hlZXQpOwotICAgICAgICBpZiAodXJsLmlzRW1wdHkoKSkKLSAgICAgICAg
ICAgIHVybCA9IEluc3BlY3RvckRPTUFnZW50Ojpkb2N1bWVudFVSTFN0cmluZyhzdHlsZVNoZWV0
LT5vd25lckRvY3VtZW50KCkpOwotICAgIH0KLSAgICBtX2N1cnJlbnRNYXRjaERhdGEudXJsID0g
dXJsOwotICAgIG1fY3VycmVudE1hdGNoRGF0YS5saW5lTnVtYmVyID0gcnVsZS0+c3R5bGVSdWxl
KCktPnNvdXJjZUxpbmUoKTsKLSAgICBtX2N1cnJlbnRNYXRjaERhdGEuc3RhcnRUaW1lID0gbW9u
b3RvbmljYWxseUluY3JlYXNpbmdUaW1lTVMoKTsKLX0KLQotaW5saW5lIHZvaWQgU2VsZWN0b3JQ
cm9maWxlOjpjb21taXRTZWxlY3Rvcihib29sIG1hdGNoZWQpCi17Ci0gICAgZG91YmxlIG1hdGNo
VGltZU1TID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lTVMoKSAtIG1fY3VycmVudE1hdGNo
RGF0YS5zdGFydFRpbWU7Ci0gICAgbV90b3RhbE1hdGNoaW5nVGltZU1TICs9IG1hdGNoVGltZU1T
OwotCi0gICAgUnVsZU1hdGNoaW5nU3RhdHNNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBtX3J1bGVN
YXRjaGluZ1N0YXRzLmFkZChtYWtlS2V5KCksIFJ1bGVNYXRjaGluZ1N0YXRzKG1fY3VycmVudE1h
dGNoRGF0YSwgbWF0Y2hUaW1lTVMsIDEsIG1hdGNoZWQgPyAxIDogMCkpOwotICAgIGlmICghcmVz
dWx0LmlzTmV3RW50cnkpIHsKLSAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS50b3RhbFRp
bWUgKz0gbWF0Y2hUaW1lTVM7Ci0gICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUuaGl0cyAr
PSAxOwotICAgICAgICBpZiAobWF0Y2hlZCkKLSAgICAgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+
dmFsdWUubWF0Y2hlcyArPSAxOwotICAgIH0KLX0KLQotaW5saW5lIHZvaWQgU2VsZWN0b3JQcm9m
aWxlOjpjb21taXRTZWxlY3RvclRpbWUoKQotewotICAgIGRvdWJsZSBwcm9jZXNzaW5nVGltZU1T
ID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lTVMoKSAtIG1fY3VycmVudE1hdGNoRGF0YS5z
dGFydFRpbWU7Ci0gICAgbV90b3RhbE1hdGNoaW5nVGltZU1TICs9IHByb2Nlc3NpbmdUaW1lTVM7
Ci0KLSAgICBSdWxlTWF0Y2hpbmdTdGF0c01hcDo6aXRlcmF0b3IgaXQgPSBtX3J1bGVNYXRjaGlu
Z1N0YXRzLmZpbmQobWFrZUtleSgpKTsKLSAgICBpZiAoaXQgPT0gbV9ydWxlTWF0Y2hpbmdTdGF0
cy5lbmQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaXQtPnZhbHVlLnRvdGFsVGltZSArPSBw
cm9jZXNzaW5nVGltZU1TOwotfQotCi1QYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkNTUzo6U2VsZWN0b3JQcm9maWxlPiBTZWxlY3RvclByb2ZpbGU6OnRvSW5zcGVjdG9yT2JqZWN0
KCkgY29uc3QKLXsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpTZWxlY3RvclByb2ZpbGVFbnRyeT4+IHNlbGVjdG9y
UHJvZmlsZURhdGEgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpDU1M6OlNlbGVjdG9yUHJvZmlsZUVudHJ5Pjo6Y3JlYXRlKCk7Ci0gICAgZm9y
IChSdWxlTWF0Y2hpbmdTdGF0c01hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3J1bGVNYXRjaGlu
Z1N0YXRzLmJlZ2luKCk7IGl0ICE9IG1fcnVsZU1hdGNoaW5nU3RhdHMuZW5kKCk7ICsraXQpIHsK
LSAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6U2VsZWN0b3JQcm9m
aWxlRW50cnk+IGVudHJ5ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpTZWxlY3RvclBy
b2ZpbGVFbnRyeTo6Y3JlYXRlKCkKLSAgICAgICAgICAgIC5zZXRTZWxlY3RvcihpdC0+dmFsdWUu
c2VsZWN0b3IpCi0gICAgICAgICAgICAuc2V0VXJsKGl0LT52YWx1ZS51cmwpCi0gICAgICAgICAg
ICAuc2V0TGluZU51bWJlcihpdC0+dmFsdWUubGluZU51bWJlcikKLSAgICAgICAgICAgIC5zZXRU
aW1lKGl0LT52YWx1ZS50b3RhbFRpbWUpCi0gICAgICAgICAgICAuc2V0SGl0Q291bnQoaXQtPnZh
bHVlLmhpdHMpCi0gICAgICAgICAgICAuc2V0TWF0Y2hDb3VudChpdC0+dmFsdWUubWF0Y2hlcyk7
Ci0gICAgICAgIHNlbGVjdG9yUHJvZmlsZURhdGEtPmFkZEl0ZW0oZW50cnkucmVsZWFzZSgpKTsK
LSAgICB9Ci0KLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpTZWxlY3Rv
clByb2ZpbGU+IHJlc3VsdCA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6U2VsZWN0b3JQ
cm9maWxlOjpjcmVhdGUoKQotICAgICAgICAuc2V0VG90YWxUaW1lKHRvdGFsTWF0Y2hpbmdUaW1l
TXMoKSkKLSAgICAgICAgLnNldERhdGEoc2VsZWN0b3JQcm9maWxlRGF0YSk7Ci0gICAgcmV0dXJu
IHJlc3VsdC5yZWxlYXNlKCk7Ci19Ci0KIGNsYXNzIFVwZGF0ZVJlZ2lvbkxheW91dFRhc2sgewog
cHVibGljOgogICAgIFVwZGF0ZVJlZ2lvbkxheW91dFRhc2soSW5zcGVjdG9yQ1NTQWdlbnQqKTsK
QEAgLTY0Miw4ICs1MjEsNiBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50Ojp3aWxsRGVzdHJveUZy
b250ZW5kQW5kQmFja2VuZCgpCiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci5jbGVhcigpOwogCiAg
ICAgcmVzZXROb25QZXJzaXN0ZW50RGF0YSgpOwotICAgIFN0cmluZyBlcnJvclN0cmluZzsKLSAg
ICBzdG9wU2VsZWN0b3JQcm9maWxlckltcGwoJmVycm9yU3RyaW5nLCBmYWxzZSk7CiB9CiAKIHZv
aWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmRpc2NhcmRBZ2VudCgpCkBAIC0xMDgyLDUyICs5NTksNiBA
QCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXROYW1lZEZsb3dDb2xsZWN0aW9uKEVycm9yU3Ry
aW5nKiBlcnJvclN0cmluZywgaW50IGRvYwogICAgIHJlc3VsdCA9IG5hbWVkRmxvd3MucmVsZWFz
ZSgpOwogfQogCi12b2lkIEluc3BlY3RvckNTU0FnZW50OjpzdGFydFNlbGVjdG9yUHJvZmlsZXIo
RXJyb3JTdHJpbmcqKQotewotICAgIG1fY3VycmVudFNlbGVjdG9yUHJvZmlsZSA9IGFkb3B0UHRy
KG5ldyBTZWxlY3RvclByb2ZpbGUoKSk7Ci19Ci0KLXZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnN0
b3BTZWxlY3RvclByb2ZpbGVyKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgUmVmUHRyPEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6U2VsZWN0b3JQcm9maWxlPiYgcmVzdWx0KQotewotICAg
IHJlc3VsdCA9IHN0b3BTZWxlY3RvclByb2ZpbGVySW1wbChlcnJvclN0cmluZywgdHJ1ZSk7Ci19
Ci0KLVBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpTZWxlY3RvclByb2Zp
bGU+IEluc3BlY3RvckNTU0FnZW50OjpzdG9wU2VsZWN0b3JQcm9maWxlckltcGwoRXJyb3JTdHJp
bmcqLCBib29sIG5lZWRQcm9maWxlKQotewotICAgIGlmICghbV9jdXJyZW50U2VsZWN0b3JQcm9m
aWxlKQotICAgICAgICByZXR1cm4gMDsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6Q1NTOjpTZWxlY3RvclByb2ZpbGU+IHJlc3VsdDsKLSAgICBpZiAobV9mcm9udGVuZERpc3Bh
dGNoZXIgJiYgbmVlZFByb2ZpbGUpCi0gICAgICAgIHJlc3VsdCA9IG1fY3VycmVudFNlbGVjdG9y
UHJvZmlsZS0+dG9JbnNwZWN0b3JPYmplY3QoKTsKLSAgICBtX2N1cnJlbnRTZWxlY3RvclByb2Zp
bGUuY2xlYXIoKTsKLSAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKLX0KLQotdm9pZCBJbnNw
ZWN0b3JDU1NBZ2VudDo6d2lsbE1hdGNoUnVsZShTdHlsZVJ1bGUqIHJ1bGUsIEluc3BlY3RvckNT
U09NV3JhcHBlcnMmIGluc3BlY3RvckNTU09NV3JhcHBlcnMsIERvY3VtZW50U3R5bGVTaGVldENv
bGxlY3Rpb24mIHN0eWxlU2hlZXRDb2xsZWN0aW9uKQotewotLy8gICAgcHJpbnRmKCJJbnNwZWN0
b3JDU1NBZ2VudDo6d2lsbE1hdGNoUnVsZSAlc1xuIiwgcnVsZS0+c2VsZWN0b3JMaXN0KCkuc2Vs
ZWN0b3JzVGV4dCgpLnV0ZjgoKS5kYXRhKCkpOwotICAgIGlmIChtX2N1cnJlbnRTZWxlY3RvclBy
b2ZpbGUpCi0gICAgICAgIG1fY3VycmVudFNlbGVjdG9yUHJvZmlsZS0+c3RhcnRTZWxlY3Rvcihp
bnNwZWN0b3JDU1NPTVdyYXBwZXJzLmdldFdyYXBwZXJGb3JSdWxlSW5TaGVldHMocnVsZSwgc3R5
bGVTaGVldENvbGxlY3Rpb24pKTsKLX0KLQotdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6ZGlkTWF0
Y2hSdWxlKGJvb2wgbWF0Y2hlZCkKLXsKLSAgICBpZiAobV9jdXJyZW50U2VsZWN0b3JQcm9maWxl
KQotICAgICAgICBtX2N1cnJlbnRTZWxlY3RvclByb2ZpbGUtPmNvbW1pdFNlbGVjdG9yKG1hdGNo
ZWQpOwotfQotCi12b2lkIEluc3BlY3RvckNTU0FnZW50Ojp3aWxsUHJvY2Vzc1J1bGUoU3R5bGVS
dWxlKiBydWxlLCBTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyKQotewotICAgIGlmIChtX2N1
cnJlbnRTZWxlY3RvclByb2ZpbGUpCi0gICAgICAgIG1fY3VycmVudFNlbGVjdG9yUHJvZmlsZS0+
c3RhcnRTZWxlY3RvcihzdHlsZVJlc29sdmVyLmluc3BlY3RvckNTU09NV3JhcHBlcnMoKS5nZXRX
cmFwcGVyRm9yUnVsZUluU2hlZXRzKHJ1bGUsIHN0eWxlUmVzb2x2ZXIuZG9jdW1lbnQoKS5zdHls
ZVNoZWV0Q29sbGVjdGlvbigpKSk7Ci19Ci0KLXZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmRpZFBy
b2Nlc3NSdWxlKCkKLXsKLSAgICBpZiAobV9jdXJyZW50U2VsZWN0b3JQcm9maWxlKQotICAgICAg
ICBtX2N1cnJlbnRTZWxlY3RvclByb2ZpbGUtPmNvbW1pdFNlbGVjdG9yVGltZSgpOwotfQotCiBJ
bnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGUqIEluc3BlY3RvckNTU0FnZW50Ojphc0lu
c3BlY3RvclN0eWxlU2hlZXQoRWxlbWVudCogZWxlbWVudCkKIHsKICAgICBOb2RlVG9JbnNwZWN0
b3JTdHlsZVNoZWV0OjppdGVyYXRvciBpdCA9IG1fbm9kZVRvSW5zcGVjdG9yU3R5bGVTaGVldC5m
aW5kKGVsZW1lbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNTU0FnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdl
bnQuaAppbmRleCAwY2Q2NDIyLi5lZTEyZDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaApAQCAtNTgsNyArNTgsNiBAQCBjbGFzcyBJbnN0cnVtZW50
aW5nQWdlbnRzOwogY2xhc3MgTmFtZU5vZGVNYXA7CiBjbGFzcyBOb2RlOwogY2xhc3MgTm9kZUxp
c3Q7Ci1jbGFzcyBTZWxlY3RvclByb2ZpbGU7CiBjbGFzcyBTdHlsZVJlc29sdmVyOwogY2xhc3Mg
U3R5bGVSdWxlOwogY2xhc3MgVXBkYXRlUmVnaW9uTGF5b3V0VGFzazsKQEAgLTEyOCwxNSArMTI3
LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBmb3JjZVBzZXVkb1N0YXRlKEVycm9yU3Ry
aW5nKiwgaW50IG5vZGVJZCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXk+
JiBmb3JjZWRQc2V1ZG9DbGFzc2VzKTsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0TmFtZWRGbG93Q29s
bGVjdGlvbihFcnJvclN0cmluZyosIGludCBkb2N1bWVudE5vZGVJZCwgUmVmUHRyPEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6TmFtZWRG
bG93Pj4mIHJlc3VsdCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc3RhcnRTZWxlY3RvclByb2ZpbGVy
KEVycm9yU3RyaW5nKik7Ci0gICAgdmlydHVhbCB2b2lkIHN0b3BTZWxlY3RvclByb2ZpbGVyKEVy
cm9yU3RyaW5nKiwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6U2VsZWN0b3JQ
cm9maWxlPiYpOwotCi0gICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6
OlNlbGVjdG9yUHJvZmlsZT4gc3RvcFNlbGVjdG9yUHJvZmlsZXJJbXBsKEVycm9yU3RyaW5nKiwg
Ym9vbCBuZWVkUHJvZmlsZSk7Ci0gICAgdm9pZCB3aWxsTWF0Y2hSdWxlKFN0eWxlUnVsZSosIElu
c3BlY3RvckNTU09NV3JhcHBlcnMmLCBEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uJik7Ci0g
ICAgdm9pZCBkaWRNYXRjaFJ1bGUoYm9vbCk7Ci0gICAgdm9pZCB3aWxsUHJvY2Vzc1J1bGUoU3R5
bGVSdWxlKiwgU3R5bGVSZXNvbHZlciYpOwotICAgIHZvaWQgZGlkUHJvY2Vzc1J1bGUoKTsKLQog
cHJpdmF0ZToKICAgICBjbGFzcyBTdHlsZVNoZWV0QWN0aW9uOwogICAgIGNsYXNzIFNldFN0eWxl
U2hlZXRUZXh0QWN0aW9uOwpAQCAtMTk1LDggKzE4NSw2IEBAIHByaXZhdGU6CiAgICAgT3duUHRy
PENoYW5nZVJlZ2lvbk92ZXJzZXRUYXNrPiBtX2NoYW5nZVJlZ2lvbk92ZXJzZXRUYXNrOwogCiAg
ICAgaW50IG1fbGFzdFN0eWxlU2hlZXRJZDsKLQotICAgIE93blB0cjxTZWxlY3RvclByb2ZpbGU+
IG1fY3VycmVudFNlbGVjdG9yUHJvZmlsZTsKIH07CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAppbmRleCBi
YmU4ODVmLi40Njg1ZjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcApAQCAtNTUwLDQyICs1NTAsNiBAQCB2b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkU2NoZWR1bGVTdHlsZVJlY2FsY3VsYXRpb25JbXBs
KEluc3RydW1lbnRpbmdBZwogICAgICAgICByZXNvdXJjZUFnZW50LT5kaWRTY2hlZHVsZVN0eWxl
UmVjYWxjdWxhdGlvbihkb2N1bWVudCk7CiB9CiAKLUluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNv
b2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxNYXRjaFJ1bGVJbXBsKEluc3RydW1l
bnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIFN0eWxlUnVsZSogcnVsZSwgSW5zcGVj
dG9yQ1NTT01XcmFwcGVycyYgaW5zcGVjdG9yQ1NTT01XcmFwcGVycywgRG9jdW1lbnRTdHlsZVNo
ZWV0Q29sbGVjdGlvbiYgc2hlZXRDb2xsZWN0aW9uKQotewotICAgIEluc3BlY3RvckNTU0FnZW50
KiBjc3NBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvckNTU0FnZW50KCk7Ci0g
ICAgaWYgKGNzc0FnZW50KSB7Ci0gICAgICAgIGNzc0FnZW50LT53aWxsTWF0Y2hSdWxlKHJ1bGUs
IGluc3BlY3RvckNTU09NV3JhcHBlcnMsIHNoZWV0Q29sbGVjdGlvbik7Ci0gICAgICAgIHJldHVy
biBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUoaW5zdHJ1bWVudGluZ0FnZW50cywgMSk7
Ci0gICAgfQotCi0gICAgcmV0dXJuIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSgpOwot
fQotCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkTWF0Y2hSdWxlSW1wbChjb25z
dCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmIGNvb2tpZSwgYm9vbCBtYXRjaGVkKQot
ewotICAgIEluc3BlY3RvckNTU0FnZW50KiBjc3NBZ2VudCA9IGNvb2tpZS5pbnN0cnVtZW50aW5n
QWdlbnRzKCktPmluc3BlY3RvckNTU0FnZW50KCk7Ci0gICAgaWYgKGNzc0FnZW50KQotICAgICAg
ICBjc3NBZ2VudC0+ZGlkTWF0Y2hSdWxlKG1hdGNoZWQpOwotfQotCi1JbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUHJvY2Vzc1J1bGVJ
bXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIFN0eWxlUnVsZSog
cnVsZSwgU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlcikKLXsKLSAgICBJbnNwZWN0b3JDU1NB
Z2VudCogY3NzQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JDU1NBZ2VudCgp
OwotICAgIGlmIChjc3NBZ2VudCkgewotICAgICAgICBjc3NBZ2VudC0+d2lsbFByb2Nlc3NSdWxl
KHJ1bGUsIHN0eWxlUmVzb2x2ZXIpOwotICAgICAgICByZXR1cm4gSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uQ29va2llKGluc3RydW1lbnRpbmdBZ2VudHMsIDEpOwotICAgIH0KLQotICAgIHJldHVy
biBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUoKTsKLX0KLQotdm9pZCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZFByb2Nlc3NSdWxlSW1wbChjb25zdCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25Db29raWUmIGNvb2tpZSkKLXsKLSAgICBJbnNwZWN0b3JDU1NBZ2VudCogY3NzQWdl
bnQgPSBjb29raWUuaW5zdHJ1bWVudGluZ0FnZW50cygpLT5pbnNwZWN0b3JDU1NBZ2VudCgpOwot
ICAgIGlmIChjc3NBZ2VudCkKLSAgICAgICAgY3NzQWdlbnQtPmRpZFByb2Nlc3NSdWxlKCk7Ci19
Ci0KIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjphcHBseUVtdWxhdGVkTWVkaWFJbXBs
KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIFN0cmluZyogbWVkaWEp
CiB7CiAgICAgaWYgKEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50ID0gaW5zdHJ1bWVudGlu
Z0FnZW50cy0+aW5zcGVjdG9yUGFnZUFnZW50KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKaW5kZXggNzEzMWJjZC4uNWVhZWZm
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1l
bnRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24uaApAQCAtMTU5LDEwICsxNTksNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsUmVjYWxjdWxhdGVTdHlsZShEb2N1bWVudCop
OwogICAgIHN0YXRpYyB2b2lkIGRpZFJlY2FsY3VsYXRlU3R5bGUoY29uc3QgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uQ29va2llJik7CiAgICAgc3RhdGljIHZvaWQgZGlkU2NoZWR1bGVTdHlsZVJl
Y2FsY3VsYXRpb24oRG9jdW1lbnQqKTsKLSAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uQ29va2llIHdpbGxNYXRjaFJ1bGUoRG9jdW1lbnQqLCBTdHlsZVJ1bGUqLCBJbnNwZWN0b3JD
U1NPTVdyYXBwZXJzJiwgRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbiYpOwotICAgIHN0YXRp
YyB2b2lkIGRpZE1hdGNoUnVsZShjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUm
LCBib29sIG1hdGNoZWQpOwotICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29r
aWUgd2lsbFByb2Nlc3NSdWxlKERvY3VtZW50KiwgU3R5bGVSdWxlKiwgU3R5bGVSZXNvbHZlciYp
OwotICAgIHN0YXRpYyB2b2lkIGRpZFByb2Nlc3NSdWxlKGNvbnN0IEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbkNvb2tpZSYpOwogCiAgICAgc3RhdGljIHZvaWQgYXBwbHlFbXVsYXRlZE1lZGlhKEZy
YW1lKiwgU3RyaW5nKik7CiAgICAgc3RhdGljIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KEZyYW1lKiwg
dW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciosIFJlc291cmNlUmVxdWVz
dCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpOwpAQCAtMzQ5LDEw
ICszNDUsNiBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25D
b29raWUgd2lsbFJlY2FsY3VsYXRlU3R5bGVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBGcmFt
ZSopOwogICAgIHN0YXRpYyB2b2lkIGRpZFJlY2FsY3VsYXRlU3R5bGVJbXBsKGNvbnN0IEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYpOwogICAgIHN0YXRpYyB2b2lkIGRpZFNjaGVkdWxl
U3R5bGVSZWNhbGN1bGF0aW9uSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgRG9jdW1lbnQqKTsK
LSAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxNYXRjaFJ1bGVJ
bXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBTdHlsZVJ1bGUqLCBJbnNwZWN0b3JDU1NPTVdyYXBw
ZXJzJiwgRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbiYpOwotICAgIHN0YXRpYyB2b2lkIGRp
ZE1hdGNoUnVsZUltcGwoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJiwgYm9v
bCBtYXRjaGVkKTsKLSAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdp
bGxQcm9jZXNzUnVsZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIFN0eWxlUnVsZSosIFN0eWxl
UmVzb2x2ZXImKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRQcm9jZXNzUnVsZUltcGwoY29uc3QgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJik7CiAKICAgICBzdGF0aWMgdm9pZCBhcHBseUVt
dWxhdGVkTWVkaWFJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBTdHJpbmcqKTsKICAgICBzdGF0
aWMgdm9pZCB3aWxsU2VuZFJlcXVlc3RJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCB1bnNpZ25l
ZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiwgUmVzb3VyY2VSZXF1ZXN0JiwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSk7CkBAIC0xMTcyLDYwICsxMTY0
LDYgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRTY2hlZHVsZVN0
eWxlUmVjYWxjdWxhdGlvbihEb2N1bWVudCogZG8KICNlbmRpZgogfQogCi1pbmxpbmUgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbE1h
dGNoUnVsZShEb2N1bWVudCogZG9jdW1lbnQsIFN0eWxlUnVsZSogcnVsZSwgSW5zcGVjdG9yQ1NT
T01XcmFwcGVycyYgaW5zcGVjdG9yQ1NTT01XcmFwcGVycywgRG9jdW1lbnRTdHlsZVNoZWV0Q29s
bGVjdGlvbiYgc3R5bGVTaGVldENvbGxlY3Rpb24pCi17Ci0jaWYgRU5BQkxFKElOU1BFQ1RPUikK
LSAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFMoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Q29va2llKCkpOwotICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdl
bnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckRvY3VtZW50KGRvY3VtZW50KSkKLSAgICAgICAg
cmV0dXJuIHdpbGxNYXRjaFJ1bGVJbXBsKGluc3RydW1lbnRpbmdBZ2VudHMsIHJ1bGUsIGluc3Bl
Y3RvckNTU09NV3JhcHBlcnMsIHN0eWxlU2hlZXRDb2xsZWN0aW9uKTsKLSNlbHNlCi0gICAgVU5V
U0VEX1BBUkFNKGRvY3VtZW50KTsKLSAgICBVTlVTRURfUEFSQU0ocnVsZSk7Ci0gICAgVU5VU0VE
X1BBUkFNKGluc3BlY3RvckNTU09NV3JhcHBlcnMpOwotICAgIFVOVVNFRF9QQVJBTShzdHlsZVNo
ZWV0Q29sbGVjdGlvbik7Ci0jZW5kaWYKLSAgICByZXR1cm4gSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uQ29va2llKCk7Ci19Ci0KLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
ZGlkTWF0Y2hSdWxlKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYgY29va2ll
LCBib29sIG1hdGNoZWQpCi17Ci0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBGQVNUX1JFVFVS
Tl9JRl9OT19GUk9OVEVORFModm9pZCgpKTsKLSAgICBpZiAoY29va2llLmlzVmFsaWQoKSkKLSAg
ICAgICAgZGlkTWF0Y2hSdWxlSW1wbChjb29raWUsIG1hdGNoZWQpOwotI2Vsc2UKLSAgICBVTlVT
RURfUEFSQU0oY29va2llKTsKLSAgICBVTlVTRURfUEFSQU0obWF0Y2hlZCk7Ci0jZW5kaWYKLX0K
LQotaW5saW5lIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OndpbGxQcm9jZXNzUnVsZShEb2N1bWVudCogZG9jdW1lbnQsIFN0eWxlUnVsZSog
cnVsZSwgU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlcikKLXsKLSNpZiBFTkFCTEUoSU5TUEVD
VE9SKQotICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyhJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25Db29raWUoKSk7Ci0gICAgaWYgKCFydWxlKQotICAgICAgICByZXR1cm4gSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uQ29va2llKCk7Ci0gICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGlu
c3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRG9jdW1lbnQoZG9jdW1l
bnQpKQotICAgICAgICByZXR1cm4gd2lsbFByb2Nlc3NSdWxlSW1wbChpbnN0cnVtZW50aW5nQWdl
bnRzLCBydWxlLCBzdHlsZVJlc29sdmVyKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGRvY3Vt
ZW50KTsKLSAgICBVTlVTRURfUEFSQU0ocnVsZSk7Ci0gICAgVU5VU0VEX1BBUkFNKHN0eWxlUmVz
b2x2ZXIpOwotI2VuZGlmCi0gICAgcmV0dXJuIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tp
ZSgpOwotfQotCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFByb2Nl
c3NSdWxlKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYgY29va2llKQotewot
I2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKHZv
aWQoKSk7Ci0gICAgaWYgKGNvb2tpZS5pc1ZhbGlkKCkpCi0gICAgICAgIGRpZFByb2Nlc3NSdWxl
SW1wbChjb29raWUpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oY29va2llKTsKLSNlbmRpZgot
fQotCiBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmFwcGx5RW11bGF0ZWRN
ZWRpYShGcmFtZSogZnJhbWUsIFN0cmluZyogbWVkaWEpCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RP
UikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9DU1MuanNv
biBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9DU1MuanNvbgppbmRleCA0NDVl
MTIzLi5mOWMyNjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvcHJvdG9j
b2wvQ1NTLmpzb24KKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL3Byb3RvY29sL0NTUy5q
c29uCkBAIC0xODksMjcgKzE4OSw2IEBACiAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQ1NT
IG1lZGlhIHF1ZXJ5IGRlc2NyaXB0b3IuIgogICAgICAgICB9LAogICAgICAgICB7Ci0gICAgICAg
ICAgICAiaWQiOiAiU2VsZWN0b3JQcm9maWxlRW50cnkiLAotICAgICAgICAgICAgInR5cGUiOiAi
b2JqZWN0IiwKLSAgICAgICAgICAgICJwcm9wZXJ0aWVzIjogWwotICAgICAgICAgICAgICAgIHsg
Im5hbWUiOiAic2VsZWN0b3IiLCAidHlwZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRpb24iOiAiQ1NT
IHNlbGVjdG9yIG9mIHRoZSBjb3JyZXNwb25kaW5nIHJ1bGUuIiB9LAotICAgICAgICAgICAgICAg
IHsgIm5hbWUiOiAidXJsIiwgInR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjogIlVSTCBv
ZiB0aGUgcmVzb3VyY2UgY29udGFpbmluZyB0aGUgY29ycmVzcG9uZGluZyBydWxlLiIgfSwKLSAg
ICAgICAgICAgICAgICB7ICJuYW1lIjogImxpbmVOdW1iZXIiLCAidHlwZSI6ICJpbnRlZ2VyIiwg
ImRlc2NyaXB0aW9uIjogIlNlbGVjdG9yIGxpbmUgbnVtYmVyIGluIHRoZSByZXNvdXJjZSBmb3Ig
dGhlIGNvcnJlc3BvbmRpbmcgcnVsZS4iIH0sCi0gICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ0
aW1lIiwgInR5cGUiOiAibnVtYmVyIiwgImRlc2NyaXB0aW9uIjogIlRvdGFsIHRpbWUgdGhpcyBy
dWxlIGhhbmRsaW5nIGNvbnRyaWJ1dGVkIHRvIHRoZSBicm93c2VyIHJ1bm5pbmcgdGltZSBkdXJp
bmcgcHJvZmlsaW5nIChpbiBtaWxsaXNlY29uZHMuKSIgfSwKLSAgICAgICAgICAgICAgICB7ICJu
YW1lIjogImhpdENvdW50IiwgInR5cGUiOiAiaW50ZWdlciIsICJkZXNjcmlwdGlvbiI6ICJOdW1i
ZXIgb2YgdGltZXMgdGhpcyBydWxlIHdhcyBjb25zaWRlcmVkIGEgY2FuZGlkYXRlIGZvciBtYXRj
aGluZyBhZ2FpbnN0IERPTSBlbGVtZW50cy4iIH0sCi0gICAgICAgICAgICAgICAgeyAibmFtZSI6
ICJtYXRjaENvdW50IiwgInR5cGUiOiAiaW50ZWdlciIsICJkZXNjcmlwdGlvbiI6ICJOdW1iZXIg
b2YgdGltZXMgdGhpcyBydWxlIGFjdHVhbGx5IG1hdGNoZWQgYSBET00gZWxlbWVudC4iIH0KLSAg
ICAgICAgICAgIF0sCi0gICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQ1NTIHNlbGVjdG9yIHBy
b2ZpbGUgZW50cnkuIgotICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAgICAiaWQiOiAi
U2VsZWN0b3JQcm9maWxlIiwKLSAgICAgICAgICAgICJ0eXBlIjogIm9iamVjdCIsCi0gICAgICAg
ICAgICAicHJvcGVydGllcyI6IFsKLSAgICAgICAgICAgICAgICB7ICJuYW1lIjogInRvdGFsVGlt
ZSIsICJ0eXBlIjogIm51bWJlciIsICJkZXNjcmlwdGlvbiI6ICJUb3RhbCBwcm9jZXNzaW5nIHRp
bWUgZm9yIGFsbCBzZWxlY3RvcnMgaW4gdGhlIHByb2ZpbGUgKGluIG1pbGxpc2Vjb25kcy4pIiB9
LAotICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZGF0YSIsICJ0eXBlIjogImFycmF5IiwgIml0
ZW1zIjogeyAiJHJlZiI6ICJTZWxlY3RvclByb2ZpbGVFbnRyeSIgfSwgImRlc2NyaXB0aW9uIjog
IkNTUyBzZWxlY3RvciBwcm9maWxlIGVudHJpZXMuIiB9Ci0gICAgICAgICAgICBdCi0gICAgICAg
IH0sCi0gICAgICAgIHsKICAgICAgICAgICAgICJpZCI6ICJSZWdpb24iLAogICAgICAgICAgICAg
InR5cGUiOiAib2JqZWN0IiwKICAgICAgICAgICAgICJwcm9wZXJ0aWVzIjogWwpAQCAtMzg0LDE1
ICszNjMsNiBAQAogICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkVuc3VyZXMgdGhhdCB0aGUg
Z2l2ZW4gbm9kZSB3aWxsIGhhdmUgc3BlY2lmaWVkIHBzZXVkby1jbGFzc2VzIHdoZW5ldmVyIGl0
cyBzdHlsZSBpcyBjb21wdXRlZCBieSB0aGUgYnJvd3Nlci4iCiAgICAgICAgIH0sCiAgICAgICAg
IHsKLSAgICAgICAgICAgICJuYW1lIjogInN0YXJ0U2VsZWN0b3JQcm9maWxlciIKLSAgICAgICAg
fSwKLSAgICAgICAgewotICAgICAgICAgICAgIm5hbWUiOiAic3RvcFNlbGVjdG9yUHJvZmlsZXIi
LAotICAgICAgICAgICAgInJldHVybnMiOiBbCi0gICAgICAgICAgICAgICAgeyAibmFtZSI6ICJw
cm9maWxlIiwgIiRyZWYiOiAiU2VsZWN0b3JQcm9maWxlIiB9Ci0gICAgICAgICAgICBdCi0gICAg
ICAgIH0sCi0gICAgICAgIHsKICAgICAgICAgICAgICJuYW1lIjogImdldE5hbWVkRmxvd0NvbGxl
Y3Rpb24iLAogICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgICAgICAgeyAi
bmFtZSI6ICJkb2N1bWVudE5vZGVJZCIsICIkcmVmIjogIkRPTS5Ob2RlSWQiLCAiZGVzY3JpcHRp
b24iOiAiVGhlIGRvY3VtZW50IG5vZGUgaWQgZm9yIHdoaWNoIHRvIGdldCB0aGUgTmFtZWQgRmxv
dyBDb2xsZWN0aW9uLiIgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKaW5kZXggYTM5MTUyYS4uY2Nk
ZjdlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTQtMDEt
MTUgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSB0
aGUgQ1NTIHNlbGVjdG9yIHByb2ZpbGVyLgorICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2Iv
MTI3MDM5PgorCisgICAgICAgIFB1cmdlIHNlbGVjdG9yIHByb2ZpbGVyIGNvZGUgZnJvbSB0aGUg
bmV3IFdlYiBJbnNwZWN0b3IgVUkuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0NTU1NlbGVjdG9yUHJvZmlsZU9iamVjdC5q
czogUmVtb3ZlZC4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0NTU1NlbGVjdG9yUHJvZmlsZVR5
cGUuanM6IFJlbW92ZWQuCisgICAgICAgICogVXNlckludGVyZmFjZS9DU1NTZWxlY3RvclByb2Zp
bGVWaWV3LmpzOiBSZW1vdmVkLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udGVudFZpZXcu
anM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkNvbnRlbnRWaWV3LmlzVmlld2FibGUpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2Uv
SW5zcGVjdG9yV2ViQmFja2VuZENvbW1hbmRzLmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2Uv
SW5zdHJ1bWVudFNpZGViYXJQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5JbnN0cnVt
ZW50U2lkZWJhclBhbmVsKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5JbnN0cnVtZW50U2lkZWJh
clBhbmVsLnByb3RvdHlwZS5fcmVjb3JkUHJvZmlsZUdseXBoTW91c2VkT3Zlcik6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuSW5zdHJ1bWVudFNpZGViYXJQYW5lbC5wcm90b3R5cGUuX3JlY29yZFBy
b2ZpbGVHbHlwaE1vdXNlZERvd24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkluc3RydW1lbnRT
aWRlYmFyUGFuZWwucHJvdG90eXBlLl9yZWNvcmRQcm9maWxlR2x5cGhDbGlja2VkKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5JbnN0cnVtZW50U2lkZWJhclBhbmVsLnByb3RvdHlwZS5fcHJvZmls
ZVR5cGVXYXNTZWxlY3RlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSW5zdHJ1bWVudFNpZGVi
YXJQYW5lbC5wcm90b3R5cGUuX3Byb2ZpbGVzQ2xlYXJlZCk6CisgICAgICAgICogVXNlckludGVy
ZmFjZS9NYWluLmh0bWw6CisgICAgICAgICogVXNlckludGVyZmFjZS9Qcm9maWxlTWFuYWdlci5q
czoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm9maWxlTWFuYWdlcik6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuUHJvZmlsZU1hbmFnZXIucHJvdG90eXBlLmluaXRpYWxpemUpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlByb2ZpbGVNYW5hZ2VyLnByb3RvdHlwZS5fY2hlY2tGb3JJbnRlcnJ1cHRp
b25zKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm9maWxlTWFuYWdlci5wcm90b3R5cGUuX2F0
dGVtcHRUb1Jlc3VtZVByb2ZpbGluZyk6CisgICAgICAgICogV2ViSW5zcGVjdG9yVUkudmN4cHJv
ai9XZWJJbnNwZWN0b3JVSS52Y3hwcm9qOgorICAgICAgICAqIFdlYkluc3BlY3RvclVJLnZjeHBy
b2ovV2ViSW5zcGVjdG9yVUkudmN4cHJvai5maWx0ZXJzOgorCiAyMDE0LTAxLTEzICBUaW1vdGh5
IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KIAogICAgICAgICBTbmFwIHRpbWUgZGl2aWRl
cnMgdG8gbmVhcmVzdCBudW1iZXJzIGluc3RlYWQgb2YganVzdCBkaXZpZGluZyB0aGUgdGltZSBz
cGFuIGludG8gbWF4IGRlbnNpdHkgc2xpY2VzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvQ1NTU2VsZWN0b3JQcm9maWxlT2JqZWN0LmpzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ1NTU2VsZWN0b3JQcm9maWxlT2JqZWN0Lmpz
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZjA4N2QwLi4wMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NTU1NlbGVjdG9yUHJvZmlsZU9iamVj
dC5qcworKysgL2Rldi9udWxsCkBAIC0xLDU4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1XZWJJbnNw
ZWN0b3IuQ1NTU2VsZWN0b3JQcm9maWxlT2JqZWN0ID0gZnVuY3Rpb24odGl0bGUsIGlkLCByZWNv
cmRpbmcsIGRhdGEsIHRvdGFsVGltZSkKLXsKLSAgICBXZWJJbnNwZWN0b3IuUHJvZmlsZU9iamVj
dC5jYWxsKHRoaXMsIFdlYkluc3BlY3Rvci5DU1NTZWxlY3RvclByb2ZpbGVUeXBlLlR5cGVJZCwg
dGl0bGUsIGlkLCByZWNvcmRpbmcpOwotCi0gICAgdGhpcy5fZGF0YSA9IGRhdGEgfHwgW107Ci0g
ICAgdGhpcy5fdG90YWxUaW1lID0gdG90YWxUaW1lIHx8IDA7Ci19OwotCi1XZWJJbnNwZWN0b3Iu
Q1NTU2VsZWN0b3JQcm9maWxlT2JqZWN0LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3Rvcjog
V2ViSW5zcGVjdG9yLkNTU1NlbGVjdG9yUHJvZmlsZU9iamVjdCwKLSAgICAKLSAgICBnZXQgZGF0
YSgpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fZGF0YTsKLSAgICB9LAotCi0gICAgc2V0
IGRhdGEoZGF0YSkKLSAgICB7Ci0gICAgICAgIHRoaXMuX2RhdGEgPSBkYXRhOwotICAgIH0sCi0K
LSAgICBnZXQgdG90YWxUaW1lKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl90b3RhbFRp
bWU7Ci0gICAgfSwKLQotICAgIHNldCB0b3RhbFRpbWUodG90YWxUaW1lKQotICAgIHsKLSAgICAg
ICAgdGhpcy5fdG90YWxUaW1lID0gdG90YWxUaW1lOwotICAgIH0KLX07Ci0KLVdlYkluc3BlY3Rv
ci5DU1NTZWxlY3RvclByb2ZpbGVPYmplY3QucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3Bl
Y3Rvci5Qcm9maWxlT2JqZWN0LnByb3RvdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NTU1NlbGVjdG9yUHJvZmlsZVR5cGUuanMgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9DU1NTZWxlY3RvclByb2ZpbGVUeXBlLmpzCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NTAzOWI1Li4wMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NTU1NlbGVjdG9yUHJvZmlsZVR5cGUuanMK
KysrIC9kZXYvbnVsbApAQCAtMSwxMDcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MSBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEz
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotLyoqCi0gKiBAY29uc3RydWN0b3IKLSAqLwotV2ViSW5zcGVj
dG9yLkNTU1NlbGVjdG9yUHJvZmlsZVR5cGUgPSBmdW5jdGlvbigpCi17Ci0gICAgV2ViSW5zcGVj
dG9yLlByb2ZpbGVUeXBlLmNhbGwodGhpcywgV2ViSW5zcGVjdG9yLkNTU1NlbGVjdG9yUHJvZmls
ZVR5cGUuVHlwZUlkLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNvbGxlY3QgQ1NTIFNlbGVjdG9y
IFByb2ZpbGUiKSk7Ci0gICAgdGhpcy5fcmVjb3JkaW5nID0gZmFsc2U7Ci0gICAgdGhpcy5fcHJv
ZmlsZVVpZCA9IDE7Ci0gICAgV2ViSW5zcGVjdG9yLkNTU1NlbGVjdG9yUHJvZmlsZVR5cGUuaW5z
dGFuY2UgPSB0aGlzOwotfQotCi1XZWJJbnNwZWN0b3IuQ1NTU2VsZWN0b3JQcm9maWxlVHlwZS5U
eXBlSWQgPSAiU0VMRUNUT1IiOwotCi1XZWJJbnNwZWN0b3IuQ1NTU2VsZWN0b3JQcm9maWxlVHlw
ZS5wcm90b3R5cGUgPSB7Ci0gICAgZ2V0IGJ1dHRvblRvb2x0aXAoKQotICAgIHsKLSAgICAgICAg
cmV0dXJuIHRoaXMuX3JlY29yZGluZyA/IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU3RvcCBDU1Mg
c2VsZWN0b3IgcHJvZmlsaW5nLiIpIDogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTdGFydCBDU1Mg
c2VsZWN0b3IgcHJvZmlsaW5nLiIpOwotICAgIH0sCi0KLSAgICBidXR0b25DbGlja2VkOiBmdW5j
dGlvbigpCi0gICAgewotICAgICAgICBpZiAodGhpcy5fcmVjb3JkaW5nKQotICAgICAgICAgICAg
dGhpcy5zdG9wUmVjb3JkaW5nUHJvZmlsZSgpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB0
aGlzLnN0YXJ0UmVjb3JkaW5nUHJvZmlsZSgpOwotICAgIH0sCi0KLSAgICBnZXQgdHJlZUl0ZW1U
aXRsZSgpCi0gICAgewotICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDU1Mg
U0VMRUNUT1IgUFJPRklMRVMiKTsKLSAgICB9LAotCi0gICAgZ2V0IGRlc2NyaXB0aW9uKCkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNTUyBzZWxlY3RvciBw
cm9maWxlcyBzaG93IGhvdyBsb25nIHRoZSBzZWxlY3RvciBtYXRjaGluZyBoYXMgdGFrZW4gaW4g
dG90YWwgYW5kIGhvdyBtYW55IHRpbWVzIGEgY2VydGFpbiBzZWxlY3RvciBoYXMgbWF0Y2hlZCBE
T00gZWxlbWVudHMgKHRoZSByZXN1bHRzIGFyZSBhcHByb3hpbWF0ZSBkdWUgdG8gbWF0Y2hpbmcg
YWxnb3JpdGhtIG9wdGltaXphdGlvbnMuKSIpOwotICAgIH0sCi0KLSAgICByZXNldDogZnVuY3Rp
b24oKQotICAgIHsKLSAgICAgICAgdGhpcy5fcHJvZmlsZVVpZCA9IDE7Ci0gICAgfSwKLQotICAg
IG5leHRQcm9maWxlSWQ6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9w
cm9maWxlVWlkKys7Ci0gICAgfSwKLQotICAgIGlzUmVjb3JkaW5nUHJvZmlsZTogZnVuY3Rpb24o
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX3JlY29yZGluZzsKLSAgICB9LAotCi0gICAg
c2V0UmVjb3JkaW5nUHJvZmlsZTogZnVuY3Rpb24oaXNQcm9maWxpbmcpCi0gICAgewotICAgICAg
ICB0aGlzLl9yZWNvcmRpbmcgPSBpc1Byb2ZpbGluZzsKLSAgICB9LAotCi0gICAgc3RhcnRSZWNv
cmRpbmdQcm9maWxlOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB0aGlzLl9yZWNvcmRpbmcg
PSB0cnVlOwotICAgICAgICBDU1NBZ2VudC5zdGFydFNlbGVjdG9yUHJvZmlsZXIoKTsKLSAgICB9
LAotCi0gICAgc3RvcFJlY29yZGluZ1Byb2ZpbGU6IGZ1bmN0aW9uKGNhbGxiYWNrKQotICAgIHsK
LSAgICAgICAgdGhpcy5fcmVjb3JkaW5nID0gZmFsc2U7Ci0gICAgICAgIENTU0FnZW50LnN0b3BT
ZWxlY3RvclByb2ZpbGVyKGNhbGxiYWNrKTsKLSAgICB9LAotCi0gICAgY3JlYXRlU2lkZWJhclRy
ZWVFbGVtZW50Rm9yUHJvZmlsZTogZnVuY3Rpb24ocHJvZmlsZSkKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBuZXcgV2ViSW5zcGVjdG9yLlByb2ZpbGVTaWRlYmFyVHJlZUVsZW1lbnQocHJvZmlsZSwg
cHJvZmlsZS50aXRsZSwgInByb2ZpbGUtc2lkZWJhci10cmVlLWl0ZW0iKTsKLSAgICB9LAotCi0g
ICAgY3JlYXRlVmlldzogZnVuY3Rpb24ocHJvZmlsZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBu
ZXcgV2ViSW5zcGVjdG9yLkNTU1NlbGVjdG9yUHJvZmlsZVZpZXcocHJvZmlsZSk7Ci0gICAgfQot
fQotCi1XZWJJbnNwZWN0b3IuQ1NTU2VsZWN0b3JQcm9maWxlVHlwZS5wcm90b3R5cGUuX19wcm90
b19fID0gV2ViSW5zcGVjdG9yLlByb2ZpbGVUeXBlLnByb3RvdHlwZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NTU1NlbGVjdG9yUHJvZmlsZVZpZXcu
anMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9DU1NTZWxlY3RvclByb2Zp
bGVWaWV3LmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYjE2NzcwLi4wMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NTU1NlbGVjdG9yUHJv
ZmlsZVZpZXcuanMKKysrIC9kZXYvbnVsbApAQCAtMSwyMzAgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICogQ29weXJp
Z2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotLyoqCi0gKiBAY29uc3RydWN0b3IKLSAq
IEBleHRlbmRzIFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUKLSAqIEBwYXJhbSB7V2ViSW5zcGVj
dG9yLkNTU1NlbGVjdG9yUHJvZmlsZVZpZXd9IHByb2ZpbGVWaWV3Ci0gKi8KLVdlYkluc3BlY3Rv
ci5DU1NTZWxlY3RvckRhdGFHcmlkTm9kZSA9IGZ1bmN0aW9uKHByb2ZpbGVWaWV3LCBkYXRhKQot
ewotICAgIFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUuY2FsbCh0aGlzLCBkYXRhLCBmYWxzZSk7
Ci0gICAgdGhpcy5fcHJvZmlsZVZpZXcgPSBwcm9maWxlVmlldzsKLX0KLQotV2ViSW5zcGVjdG9y
LkNTU1NlbGVjdG9yRGF0YUdyaWROb2RlLnByb3RvdHlwZSA9IHsKLSAgICBnZXQgZGF0YSgpCi0g
ICAgewotICAgICAgICB2YXIgZGF0YSA9IHt9OwotICAgICAgICBkYXRhLnNlbGVjdG9yID0gdGhp
cy5fZGF0YS5zZWxlY3RvcjsKLSAgICAgICAgZGF0YS5tYXRjaGVzID0gdGhpcy5fZGF0YS5tYXRj
aENvdW50OwotCi0gICAgICAgIGlmICh0aGlzLl9wcm9maWxlVmlldy5zaG93VGltZUFzUGVyY2Vu
dC52YWx1ZSkKLSAgICAgICAgICAgIGRhdGEudGltZSA9IE51bWJlcih0aGlzLl9kYXRhLnRpbWVQ
ZXJjZW50KS50b0ZpeGVkKDEpICsgIiUiOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBkYXRh
LnRpbWUgPSBOdW1iZXIuc2Vjb25kc1RvU3RyaW5nKHRoaXMuX2RhdGEudGltZSAvIDEwMDAsIHRy
dWUpOwotCi0gICAgICAgIHJldHVybiBkYXRhOwotICAgIH0sCi0KLSAgICBnZXQgcmF3RGF0YSgp
Ci0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fZGF0YTsKLSAgICB9LAotCi0gICAgY3JlYXRl
Q2VsbDogZnVuY3Rpb24oY29sdW1uSWRlbnRpZmllcikKLSAgICB7Ci0gICAgICAgIHZhciBjZWxs
ID0gV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5wcm90b3R5cGUuY3JlYXRlQ2VsbC5jYWxsKHRo
aXMsIGNvbHVtbklkZW50aWZpZXIpOwotICAgICAgICBpZiAoY29sdW1uSWRlbnRpZmllciA9PT0g
InNlbGVjdG9yIiAmJiBjZWxsLmZpcnN0Q2hpbGQpIHsKLSAgICAgICAgICAgIGNlbGwuZmlyc3RD
aGlsZC50aXRsZSA9IHRoaXMucmF3RGF0YS5zZWxlY3RvcjsKLSAgICAgICAgICAgIHJldHVybiBj
ZWxsOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGNvbHVtbklkZW50aWZpZXIgIT09ICJzb3Vy
Y2UiKQotICAgICAgICAgICAgcmV0dXJuIGNlbGw7Ci0KLSAgICAgICAgY2VsbC5yZW1vdmVDaGls
ZHJlbigpOwotCi0gICAgICAgIGlmICh0aGlzLnJhd0RhdGEudXJsKSB7Ci0gICAgICAgICAgICB2
YXIgd3JhcHBlckRpdiA9IGNlbGwuY3JlYXRlQ2hpbGQoImRpdiIpOwotICAgICAgICAgICAgd3Jh
cHBlckRpdi5hcHBlbmRDaGlsZCh0aGlzLl9saW5raWZ5TG9jYXRpb24odGhpcy5yYXdEYXRhLnVy
bCwgdGhpcy5yYXdEYXRhLmxpbmVOdW1iZXIpKTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVy
biBjZWxsOwotICAgIH0sCi0KLSAgICBfbGlua2lmeUxvY2F0aW9uOiBmdW5jdGlvbih1cmwsIGxp
bmVOdW1iZXIpCi0gICAgewotICAgICAgICAvLyBGSVhNRTogU2VsZWN0b3JQcm9maWxlRW50cnkg
bmVlZCBjb2x1bW5OdW1iZXJzLgotICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLmxpbmtpZnlM
b2NhdGlvbih1cmwsIGxpbmVOdW1iZXIsIDApOwotICAgIH0KLX0KLQotV2ViSW5zcGVjdG9yLkNT
U1NlbGVjdG9yRGF0YUdyaWROb2RlLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3Iu
RGF0YUdyaWROb2RlLnByb3RvdHlwZTsKLQotLyoqCi0gKiBAY29uc3RydWN0b3IKLSAqIEBleHRl
bmRzIFdlYkluc3BlY3Rvci5WaWV3Ci0gKiBAcGFyYW0ge0NTU0FnZW50LlNlbGVjdG9yUHJvZmls
ZX0gcHJvZmlsZQotICovCi1XZWJJbnNwZWN0b3IuQ1NTU2VsZWN0b3JQcm9maWxlVmlldyA9IGZ1
bmN0aW9uKHByb2ZpbGUpCi17Ci0gICAgY29uc29sZS5hc3NlcnQocHJvZmlsZSBpbnN0YW5jZW9m
IFdlYkluc3BlY3Rvci5DU1NTZWxlY3RvclByb2ZpbGVPYmplY3QpOwotCi0gICAgV2ViSW5zcGVj
dG9yLlByb2ZpbGVWaWV3LmNhbGwodGhpcywgcHJvZmlsZSwgImNzcy1zZWxlY3Rvci1wcm9maWxl
ci1zaG93LXRpbWUtYXMtcGVyY2VudCIpOwotfQotCi1XZWJJbnNwZWN0b3IuQ1NTU2VsZWN0b3JQ
cm9maWxlVmlldy5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5D
U1NTZWxlY3RvclByb2ZpbGVWaWV3LAotCi0gICAgdXBkYXRlTGF5b3V0OiBmdW5jdGlvbigpCi0g
ICAgewotICAgICAgICBpZiAodGhpcy5kYXRhR3JpZCkKLSAgICAgICAgICAgIHRoaXMuZGF0YUdy
aWQudXBkYXRlTGF5b3V0KCk7Ci0gICAgfSwKLQotICAgIGdldCByZWNvcmRpbmdUaXRsZSgpCi0g
ICAgewotICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZWNvcmRpbmcgQ1NT
IFNlbGVjdG9yIFByb2ZpbGVcdTIwMjYiKTsKLSAgICB9LAotCi0gICAgZGlzcGxheVByb2ZpbGU6
IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHZhciBjb2x1bW5zID0geyAic2VsZWN0b3IiOiB7
IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNlbGVjdG9yIiksIHdpZHRoOiAiNTUwcHgi
LCBzb3J0YWJsZTogdHJ1ZSB9LAotICAgICAgICAgICAgICAgICAgICAgICAgInNvdXJjZSI6IHsg
dGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU291cmNlIiksIHdpZHRoOiAiMTAwcHgiLCBz
b3J0YWJsZTogdHJ1ZSB9LAotICAgICAgICAgICAgICAgICAgICAgICAgInRpbWUiOiB7IHRpdGxl
OiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlRvdGFsIiksIHdpZHRoOiAiNzJweCIsIHNvcnQ6ICJk
ZXNjZW5kaW5nIiwgc29ydGFibGU6IHRydWUgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICJt
YXRjaGVzIjogeyB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJNYXRjaGVzIiksIHdpZHRo
OiAiNzJweCIsIHNvcnRhYmxlOiB0cnVlIH0gfTsKLQotICAgICAgICB0aGlzLmRhdGFHcmlkID0g
bmV3IFdlYkluc3BlY3Rvci5EYXRhR3JpZChjb2x1bW5zKTsKLSAgICAgICAgdGhpcy5kYXRhR3Jp
ZC5lbGVtZW50LmNsYXNzTGlzdC5hZGQoInNlbGVjdG9yLXByb2ZpbGUtdmlldyIpOwotICAgICAg
ICB0aGlzLmRhdGFHcmlkLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRhdGFHcmlkLkV2
ZW50LlNvcnRDaGFuZ2VkLCB0aGlzLl9zb3J0UHJvZmlsZSwgdGhpcyk7Ci0KLSAgICAgICAgdGhp
cy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuZGF0YUdyaWQuZWxlbWVudCk7Ci0gICAgICAgIHRo
aXMuZGF0YUdyaWQudXBkYXRlTGF5b3V0KCk7Ci0KLSAgICAgICAgdGhpcy5fY3JlYXRlUHJvZmls
ZU5vZGVzKCk7Ci0gICAgICAgIHRoaXMuX3NvcnRQcm9maWxlKCk7Ci0gICAgfSwKLQotICAgIF9j
cmVhdGVQcm9maWxlTm9kZXM6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHZhciBkYXRhID0g
dGhpcy5wcm9maWxlLmRhdGE7Ci0gICAgICAgIGlmICghZGF0YSkgewotICAgICAgICAgICAgLy8g
VGhlIHByb2ZpbGVyIG1heSBoYXZlIGJlZW4gdGVybWluYXRlZCB3aXRoIHRoZSAiQ2xlYXIgYWxs
IHByb2ZpbGVzLiIgYnV0dG9uLgotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAg
ICAgICAgdGhpcy5wcm9maWxlLmNoaWxkcmVuID0gW107Ci0gICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgZGF0YS5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgZGF0YVtpXS50aW1lUGVyY2Vu
dCA9IGRhdGFbaV0udGltZSAqIDEwMCAvIHRoaXMucHJvZmlsZS50b3RhbFRpbWU7Ci0gICAgICAg
ICAgICB2YXIgbm9kZSA9IG5ldyBXZWJJbnNwZWN0b3IuQ1NTU2VsZWN0b3JEYXRhR3JpZE5vZGUo
dGhpcywgZGF0YVtpXSk7Ci0gICAgICAgICAgICB0aGlzLnByb2ZpbGUuY2hpbGRyZW4ucHVzaChu
b2RlKTsKLSAgICAgICAgfQotICAgIH0sCi0KLSAgICByZWJ1aWxkR3JpZEl0ZW1zOiBmdW5jdGlv
bigpCi0gICAgewotICAgICAgICB0aGlzLmRhdGFHcmlkLnJlbW92ZUNoaWxkcmVuKCk7Ci0KLSAg
ICAgICAgdmFyIGNoaWxkcmVuID0gdGhpcy5wcm9maWxlLmNoaWxkcmVuOwotICAgICAgICB2YXIg
Y291bnQgPSBjaGlsZHJlbi5sZW5ndGg7Ci0KLSAgICAgICAgZm9yICh2YXIgaW5kZXggPSAwOyBp
bmRleCA8IGNvdW50OyArK2luZGV4KQotICAgICAgICAgICAgdGhpcy5kYXRhR3JpZC5hcHBlbmRD
aGlsZChjaGlsZHJlbltpbmRleF0pOwotICAgIH0sCi0KLSAgICByZWZyZXNoRGF0YTogZnVuY3Rp
b24oKQotICAgIHsKLSAgICAgICAgdmFyIGNoaWxkID0gdGhpcy5kYXRhR3JpZC5jaGlsZHJlblsw
XTsKLSAgICAgICAgd2hpbGUgKGNoaWxkKSB7Ci0gICAgICAgICAgICBjaGlsZC5yZWZyZXNoKCk7
Ci0gICAgICAgICAgICBjaGlsZCA9IGNoaWxkLnRyYXZlcnNlTmV4dE5vZGUoZmFsc2UsIG51bGws
IHRydWUpOwotICAgICAgICB9Ci0gICAgfSwKLQotICAgIHRvZ2dsZVRpbWVEaXNwbGF5OiBmdW5j
dGlvbihldmVudCkKLSAgICB7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5Qcm9maWxlVmlldy5wcm90
b3R5cGUudG9nZ2xlVGltZURpc3BsYXkuY2FsbCh0aGlzLCBldmVudCk7Ci0gICAgICAgIHRoaXMu
c2hvd1RpbWVBc1BlcmNlbnQudmFsdWUgPSAhdGhpcy5zaG93VGltZUFzUGVyY2VudC52YWx1ZTsK
LSAgICAgICAgdGhpcy5yZWZyZXNoRGF0YSgpOwotICAgIH0sCi0KLSAgICBfc29ydFByb2ZpbGU6
IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHZhciBzb3J0QXNjZW5kaW5nID0gdGhpcy5kYXRh
R3JpZC5zb3J0T3JkZXIgPT09ICJhc2NlbmRpbmciOwotICAgICAgICB2YXIgc29ydENvbHVtbklk
ZW50aWZpZXIgPSB0aGlzLmRhdGFHcmlkLnNvcnRDb2x1bW5JZGVudGlmaWVyOwotCi0gICAgICAg
IGZ1bmN0aW9uIHNlbGVjdG9yQ29tcGFyYXRvcihhLCBiKQotICAgICAgICB7Ci0gICAgICAgICAg
ICB2YXIgcmVzdWx0ID0gYi5yYXdEYXRhLnNlbGVjdG9yLmxvY2FsZUNvbXBhcmUoYS5yYXdEYXRh
LnNlbGVjdG9yKTsKLSAgICAgICAgICAgIHJldHVybiBzb3J0QXNjZW5kaW5nID8gLXJlc3VsdCA6
IHJlc3VsdDsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIHNvdXJjZUNvbXBhcmF0b3Io
YSwgYikKLSAgICAgICAgewotICAgICAgICAgICAgdmFyIGFSYXdEYXRhID0gYS5yYXdEYXRhOwot
ICAgICAgICAgICAgdmFyIGJSYXdEYXRhID0gYi5yYXdEYXRhOwotICAgICAgICAgICAgdmFyIHJl
c3VsdCA9IGJSYXdEYXRhLnVybC5sb2NhbGVDb21wYXJlKGFSYXdEYXRhLnVybCk7Ci0gICAgICAg
ICAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgICAgICAgICByZXN1bHQgPSBiUmF3RGF0YS5saW5l
TnVtYmVyIC0gYVJhd0RhdGEubGluZU51bWJlcjsKLSAgICAgICAgICAgIHJldHVybiBzb3J0QXNj
ZW5kaW5nID8gLXJlc3VsdCA6IHJlc3VsdDsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9u
IHRpbWVDb21wYXJhdG9yKGEsIGIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnN0IHJlc3Vs
dCA9IGIucmF3RGF0YS50aW1lIC0gYS5yYXdEYXRhLnRpbWU7Ci0gICAgICAgICAgICByZXR1cm4g
c29ydEFzY2VuZGluZyA/IC1yZXN1bHQgOiByZXN1bHQ7Ci0gICAgICAgIH0KLQotICAgICAgICBm
dW5jdGlvbiBtYXRjaGVzQ29tcGFyYXRvcihhLCBiKQotICAgICAgICB7Ci0gICAgICAgICAgICBj
b25zdCByZXN1bHQgPSBiLnJhd0RhdGEubWF0Y2hDb3VudCAtIGEucmF3RGF0YS5tYXRjaENvdW50
OwotICAgICAgICAgICAgcmV0dXJuIHNvcnRBc2NlbmRpbmcgPyAtcmVzdWx0IDogcmVzdWx0Owot
ICAgICAgICB9Ci0KLSAgICAgICAgdmFyIGNvbXBhcmF0b3I7Ci0gICAgICAgIHN3aXRjaCAoc29y
dENvbHVtbklkZW50aWZpZXIpIHsKLSAgICAgICAgY2FzZSAidGltZSI6Ci0gICAgICAgICAgICBj
b21wYXJhdG9yID0gdGltZUNvbXBhcmF0b3I7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
Y2FzZSAibWF0Y2hlcyI6Ci0gICAgICAgICAgICBjb21wYXJhdG9yID0gbWF0Y2hlc0NvbXBhcmF0
b3I7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSAic2VsZWN0b3IiOgotICAgICAg
ICAgICAgY29tcGFyYXRvciA9IHNlbGVjdG9yQ29tcGFyYXRvcjsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICBjYXNlICJzb3VyY2UiOgotICAgICAgICAgICAgY29tcGFyYXRvciA9IHNvdXJj
ZUNvbXBhcmF0b3I7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCi0gICAgICAgIHRo
aXMucHJvZmlsZS5jaGlsZHJlbi5zb3J0KGNvbXBhcmF0b3IpOwotCi0gICAgICAgIHRoaXMucmVi
dWlsZEdyaWRJdGVtcygpOwotICAgIH0KLX0KLQotV2ViSW5zcGVjdG9yLkNTU1NlbGVjdG9yUHJv
ZmlsZVZpZXcucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5Qcm9maWxlVmlldy5w
cm90b3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Db250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Nv
bnRlbnRWaWV3LmpzCmluZGV4IDUwZTk3MjcuLjJiZDdlZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRlbnRWaWV3LmpzCkBAIC02Niw5ICs2Niw2
IEBAIFdlYkluc3BlY3Rvci5Db250ZW50VmlldyA9IGZ1bmN0aW9uKHJlcHJlc2VudGVkT2JqZWN0
KQogICAgICAgICBpZiAocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3Iu
SmF2YVNjcmlwdFByb2ZpbGVPYmplY3QpCiAgICAgICAgICAgICByZXR1cm4gbmV3IFdlYkluc3Bl
Y3Rvci5KYXZhU2NyaXB0UHJvZmlsZVZpZXcocmVwcmVzZW50ZWRPYmplY3QpOwogCi0gICAgICAg
IGlmIChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5DU1NTZWxlY3Rv
clByb2ZpbGVPYmplY3QpCi0gICAgICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5DU1NT
ZWxlY3RvclByb2ZpbGVWaWV3KHJlcHJlc2VudGVkT2JqZWN0KTsKLQogICAgICAgICBpZiAocmVw
cmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuQ2FudmFzUHJvZmlsZU9iamVj
dCkKICAgICAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkNhbnZhc1Byb2ZpbGVWaWV3
KHJlcHJlc2VudGVkT2JqZWN0KTsKIApAQCAtMTI1LDggKzEyMiw2IEBAIFdlYkluc3BlY3Rvci5D
b250ZW50Vmlldy5pc1ZpZXdhYmxlID0gZnVuY3Rpb24ocmVwcmVzZW50ZWRPYmplY3QpCiAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIGlmIChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdl
Ykluc3BlY3Rvci5KYXZhU2NyaXB0UHJvZmlsZU9iamVjdCkKICAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgaWYgKHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkNTU1Nl
bGVjdG9yUHJvZmlsZU9iamVjdCkKLSAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgaWYgKHJlcHJl
c2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkNhbnZhc1Byb2ZpbGVPYmplY3Qp
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGlmIChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5j
ZW9mIFdlYkluc3BlY3Rvci5Db250ZW50RmxvdykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0luc3BlY3RvcldlYkJhY2tlbmRDb21tYW5kcy5qcyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0luc3BlY3RvcldlYkJhY2tlbmRDb21t
YW5kcy5qcwppbmRleCBlZjhmNDk4Li4xYjNhMzE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9JbnNwZWN0b3JXZWJCYWNrZW5kQ29tbWFuZHMuanMKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSW5zcGVjdG9yV2ViQmFja2Vu
ZENvbW1hbmRzLmpzCkBAIC00NSw4ICs0NSw2IEBAIEluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJD
b21tYW5kKCJDU1Muc2V0UnVsZVNlbGVjdG9yIiwgW3sibmFtZSI6ICJydWxlSWQiLCAidHlwCiBJ
bnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVyQ29tbWFuZCgiQ1NTLmFkZFJ1bGUiLCBbeyJuYW1lIjog
ImNvbnRleHROb2RlSWQiLCAidHlwZSI6ICJudW1iZXIiLCAib3B0aW9uYWwiOiBmYWxzZX0sIHsi
bmFtZSI6ICJzZWxlY3RvciIsICJ0eXBlIjogInN0cmluZyIsICJvcHRpb25hbCI6IGZhbHNlfV0s
IFsicnVsZSJdKTsKIEluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJDb21tYW5kKCJDU1MuZ2V0U3Vw
cG9ydGVkQ1NTUHJvcGVydGllcyIsIFtdLCBbImNzc1Byb3BlcnRpZXMiXSk7CiBJbnNwZWN0b3JC
YWNrZW5kLnJlZ2lzdGVyQ29tbWFuZCgiQ1NTLmZvcmNlUHNldWRvU3RhdGUiLCBbeyJuYW1lIjog
Im5vZGVJZCIsICJ0eXBlIjogIm51bWJlciIsICJvcHRpb25hbCI6IGZhbHNlfSwgeyJuYW1lIjog
ImZvcmNlZFBzZXVkb0NsYXNzZXMiLCAidHlwZSI6ICJvYmplY3QiLCAib3B0aW9uYWwiOiBmYWxz
ZX1dLCBbXSk7Ci1JbnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVyQ29tbWFuZCgiQ1NTLnN0YXJ0U2Vs
ZWN0b3JQcm9maWxlciIsIFtdLCBbXSk7Ci1JbnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVyQ29tbWFu
ZCgiQ1NTLnN0b3BTZWxlY3RvclByb2ZpbGVyIiwgW10sIFsicHJvZmlsZSJdKTsKIEluc3BlY3Rv
ckJhY2tlbmQucmVnaXN0ZXJDb21tYW5kKCJDU1MuZ2V0TmFtZWRGbG93Q29sbGVjdGlvbiIsIFt7
Im5hbWUiOiAiZG9jdW1lbnROb2RlSWQiLCAidHlwZSI6ICJudW1iZXIiLCAib3B0aW9uYWwiOiBm
YWxzZX1dLCBbIm5hbWVkRmxvd3MiXSk7CiAKIC8vIENhbnZhcy4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0luc3RydW1lbnRTaWRlYmFyUGFuZWwuanMg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9JbnN0cnVtZW50U2lkZWJhclBh
bmVsLmpzCmluZGV4IGMwYjgwZGUuLjdiMzg4YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0luc3RydW1lbnRTaWRlYmFyUGFuZWwuanMKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSW5zdHJ1bWVudFNpZGViYXJQYW5lbC5q
cwpAQCAtOTksMTggKzk5LDEyIEBAIFdlYkluc3BlY3Rvci5JbnN0cnVtZW50U2lkZWJhclBhbmVs
ID0gZnVuY3Rpb24oKQogICAgIHN0YXJ0SmF2YVNjcmlwdFByb2ZpbGVPcHRpb24udmFsdWUgPSBX
ZWJJbnNwZWN0b3IuSW5zdHJ1bWVudFNpZGViYXJQYW5lbC5TdGFydEphdmFTY3JpcHRQcm9maWxl
VmFsdWU7CiAgICAgc3RhcnRKYXZhU2NyaXB0UHJvZmlsZU9wdGlvbi5zZWxlY3RlZCA9IGZhbHNl
OwogICAgIAotICAgIHZhciBzdGFydENTU1NlbGVjdG9yUHJvZmlsZU9wdGlvbiA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoIm9wdGlvbiIpOwotICAgIHN0YXJ0Q1NTU2VsZWN0b3JQcm9maWxlT3B0
aW9uLnRleHRDb250ZW50ID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTdGFydCBDU1MgU2VsZWN0
b3IgUHJvZmlsZSIpOwotICAgIHN0YXJ0Q1NTU2VsZWN0b3JQcm9maWxlT3B0aW9uLnZhbHVlID0g
V2ViSW5zcGVjdG9yLkluc3RydW1lbnRTaWRlYmFyUGFuZWwuU3RhcnRDU1NTZWxlY3RvclByb2Zp
bGVWYWx1ZTsKLSAgICBzdGFydENTU1NlbGVjdG9yUHJvZmlsZU9wdGlvbi5zZWxlY3RlZCA9IGZh
bHNlOwotCiAgICAgdmFyIHN0YXJ0Q2FudmFzUHJvZmlsZU9wdGlvbiA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoIm9wdGlvbiIpOwogICAgIHN0YXJ0Q2FudmFzUHJvZmlsZU9wdGlvbi50ZXh0Q29u
dGVudCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU3RhcnQgQ2FudmFzIFByb2ZpbGUiKTsKICAg
ICBzdGFydENhbnZhc1Byb2ZpbGVPcHRpb24udmFsdWUgPSBXZWJJbnNwZWN0b3IuSW5zdHJ1bWVu
dFNpZGViYXJQYW5lbC5TdGFydENhbnZhc1Byb2ZpbGVWYWx1ZTsKICAgICBzdGFydENhbnZhc1By
b2ZpbGVPcHRpb24uc2VsZWN0ZWQgPSBmYWxzZTsKIAogICAgIHRoaXMuX3JlY29yZFByb2ZpbGVH
bHlwaEVsZW1lbnQuYWRkKHN0YXJ0SmF2YVNjcmlwdFByb2ZpbGVPcHRpb24pOwotICAgIHRoaXMu
X3JlY29yZFByb2ZpbGVHbHlwaEVsZW1lbnQuYWRkKHN0YXJ0Q1NTU2VsZWN0b3JQcm9maWxlT3B0
aW9uKTsKICAgICB0aGlzLl9yZWNvcmRQcm9maWxlR2x5cGhFbGVtZW50LmFkZChzdGFydENhbnZh
c1Byb2ZpbGVPcHRpb24pOwogCiAgICAgcHJvZmlsZXNUaXRsZUJhckVsZW1lbnQuYXBwZW5kQ2hp
bGQodGhpcy5fcmVjb3JkUHJvZmlsZUdseXBoRWxlbWVudCk7CkBAIC0xNTUsNyArMTQ5LDYgQEAg
V2ViSW5zcGVjdG9yLkluc3RydW1lbnRTaWRlYmFyUGFuZWwuQ29sb3JzSWNvblN0eWxlQ2xhc3Mg
PSAiY29sb3JzLWljb24iOwogV2ViSW5zcGVjdG9yLkluc3RydW1lbnRTaWRlYmFyUGFuZWwuU2Ny
aXB0SWNvblN0eWxlQ2xhc3MgPSAic2NyaXB0LWljb24iOwogV2ViSW5zcGVjdG9yLkluc3RydW1l
bnRTaWRlYmFyUGFuZWwuUHJvZmlsZUljb25TdHlsZUNsYXNzID0gInByb2ZpbGUtaWNvbiI7CiBX
ZWJJbnNwZWN0b3IuSW5zdHJ1bWVudFNpZGViYXJQYW5lbC5TdGFydEphdmFTY3JpcHRQcm9maWxl
VmFsdWUgPSAic3RhcnQtamF2YXNjcmlwdC1wcm9maWxlIjsKLVdlYkluc3BlY3Rvci5JbnN0cnVt
ZW50U2lkZWJhclBhbmVsLlN0YXJ0Q1NTU2VsZWN0b3JQcm9maWxlVmFsdWUgPSAic3RhcnQtY3Nz
LXNlbGVjdG9yLXByb2ZpbGUiOwogV2ViSW5zcGVjdG9yLkluc3RydW1lbnRTaWRlYmFyUGFuZWwu
U3RhcnRDYW52YXNQcm9maWxlVmFsdWUgPSAic3RhcnQtY2FudmFzLXByb2ZpbGUiOwogCiBXZWJJ
bnNwZWN0b3IuSW5zdHJ1bWVudFNpZGViYXJQYW5lbC5TZWxlY3RlZFRpbWVsaW5lQ29va2llS2V5
ID0gImluc3RydW1lbnQtc2lkZWJhci1wYW5lbC1zZWxlY3RlZC10aW1lbGluZSI7CkBAIC0zMDYs
NyArMjk5LDcgQEAgV2ViSW5zcGVjdG9yLkluc3RydW1lbnRTaWRlYmFyUGFuZWwucHJvdG90eXBl
ID0gewogICAgIHsKICAgICAgICAgdGhpcy5fcmVjb3JkUHJvZmlsZUdseXBoRWxlbWVudC5jbGFz
c0xpc3QucmVtb3ZlKFdlYkluc3BlY3Rvci5JbnN0cnVtZW50U2lkZWJhclBhbmVsLlJlY29yZEds
eXBoUmVjb3JkaW5nRm9yY2VkU3R5bGVDbGFzcyk7CiAKLSAgICAgICAgaWYgKFdlYkluc3BlY3Rv
ci5wcm9maWxlTWFuYWdlci5pc1Byb2ZpbGluZ0phdmFTY3JpcHQoKSB8fCBXZWJJbnNwZWN0b3Iu
cHJvZmlsZU1hbmFnZXIuaXNQcm9maWxpbmdDU1NTZWxlY3RvcnMoKSB8fCBXZWJJbnNwZWN0b3Iu
cHJvZmlsZU1hbmFnZXIuaXNQcm9maWxpbmdDYW52YXMoKSkKKyAgICAgICAgaWYgKFdlYkluc3Bl
Y3Rvci5wcm9maWxlTWFuYWdlci5pc1Byb2ZpbGluZ0phdmFTY3JpcHQoKSB8fCBXZWJJbnNwZWN0
b3IucHJvZmlsZU1hbmFnZXIuaXNQcm9maWxpbmdDYW52YXMoKSkKICAgICAgICAgICAgIHRoaXMu
X3JlY29yZFByb2ZpbGVTdGF0dXNFbGVtZW50LnRleHRDb250ZW50ID0gV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJTdG9wIFByb2ZpbGluZyIpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICB0aGlz
Ll9yZWNvcmRQcm9maWxlU3RhdHVzRWxlbWVudC50ZXh0Q29udGVudCA9IFdlYkluc3BlY3Rvci5V
SVN0cmluZygiU3RhcnQgUHJvZmlsaW5nIik7CkBAIC0zMjksNyArMzIyLDcgQEAgV2ViSW5zcGVj
dG9yLkluc3RydW1lbnRTaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICAKICAgICAg
ICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBzaG93IHRoZSBzZWxlY3QgaWYgdGhlIHVzZXIgaXMgY3Vy
cmVudGx5IHByb2ZpbGluZy4gSW4gdGhhdCBjYXNlLAogICAgICAgICAvLyB0aGUgdXNlciBzaG91
bGQganVzdCBiZSBhYmxlIHRvIGNsaWNrIHRoZSByZWNvcmQgYnV0dG9uIHRvIHN0b3AgcHJvZmls
aW5nLgotICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLnByb2ZpbGVNYW5hZ2VyLmlzUHJvZmlsaW5n
SmF2YVNjcmlwdCgpIHx8IFdlYkluc3BlY3Rvci5wcm9maWxlTWFuYWdlci5pc1Byb2ZpbGluZ0NT
U1NlbGVjdG9ycygpIHx8IFdlYkluc3BlY3Rvci5wcm9maWxlTWFuYWdlci5pc1Byb2ZpbGluZ0Nh
bnZhcygpKQorICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLnByb2ZpbGVNYW5hZ2VyLmlzUHJvZmls
aW5nSmF2YVNjcmlwdCgpIHx8IFdlYkluc3BlY3Rvci5wcm9maWxlTWFuYWdlci5pc1Byb2ZpbGlu
Z0NhbnZhcygpKQogICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKICAgICAgICAg
ZWxzZSB7CiAgICAgICAgICAgICAvLyBXaGVuIGEgc2VsZWN0IGlzIG9wZW5lZCwgYSBjbGljayBl
dmVudCB3aWxsIGJlIGZpcmVkIHdoZW4gdGhlIHNlbGVjdCBpcyBjbG9zZWQsCkBAIC0zNTEsOCAr
MzQ0LDYgQEAgV2ViSW5zcGVjdG9yLkluc3RydW1lbnRTaWRlYmFyUGFuZWwucHJvdG90eXBlID0g
ewogCiAgICAgICAgIGlmIChXZWJJbnNwZWN0b3IucHJvZmlsZU1hbmFnZXIuaXNQcm9maWxpbmdK
YXZhU2NyaXB0KCkpCiAgICAgICAgICAgICBXZWJJbnNwZWN0b3IucHJvZmlsZU1hbmFnZXIuc3Rv
cFByb2ZpbGluZ0phdmFTY3JpcHQoKTsKLSAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5wcm9maWxl
TWFuYWdlci5pc1Byb2ZpbGluZ0NTU1NlbGVjdG9ycygpKQotICAgICAgICAgICAgV2ViSW5zcGVj
dG9yLnByb2ZpbGVNYW5hZ2VyLnN0b3BQcm9maWxpbmdDU1NTZWxlY3RvcnMoKTsKICAgICAgICAg
aWYgKFdlYkluc3BlY3Rvci5wcm9maWxlTWFuYWdlci5pc1Byb2ZpbGluZ0NhbnZhcygpKQogICAg
ICAgICAgICAgV2ViSW5zcGVjdG9yLnByb2ZpbGVNYW5hZ2VyLnN0b3BQcm9maWxpbmdDYW52YXMo
KTsKICAgICB9LApAQCAtMzY2LDggKzM1Nyw2IEBAIFdlYkluc3BlY3Rvci5JbnN0cnVtZW50U2lk
ZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgdmFyIHNlbGVjdGVkVmFsdWUgPSB0aGlz
Ll9yZWNvcmRQcm9maWxlR2x5cGhFbGVtZW50Lm9wdGlvbnNbc2VsZWN0ZWRJbmRleF0udmFsdWU7
CiAgICAgICAgIGlmIChzZWxlY3RlZFZhbHVlID09PSBXZWJJbnNwZWN0b3IuSW5zdHJ1bWVudFNp
ZGViYXJQYW5lbC5TdGFydEphdmFTY3JpcHRQcm9maWxlVmFsdWUpCiAgICAgICAgICAgICBXZWJJ
bnNwZWN0b3IucHJvZmlsZU1hbmFnZXIuc3RhcnRQcm9maWxpbmdKYXZhU2NyaXB0KCk7Ci0gICAg
ICAgIGVsc2UgaWYgKHNlbGVjdGVkVmFsdWUgPT09IFdlYkluc3BlY3Rvci5JbnN0cnVtZW50U2lk
ZWJhclBhbmVsLlN0YXJ0Q1NTU2VsZWN0b3JQcm9maWxlVmFsdWUpCi0gICAgICAgICAgICBXZWJJ
bnNwZWN0b3IucHJvZmlsZU1hbmFnZXIuc3RhcnRQcm9maWxpbmdDU1NTZWxlY3RvcnMoKTsKICAg
ICAgICAgZWxzZSB7CiAgICAgICAgICAgICBjb25zb2xlLmFzc2VydChzZWxlY3RlZFZhbHVlID09
PSBXZWJJbnNwZWN0b3IuSW5zdHJ1bWVudFNpZGViYXJQYW5lbC5TdGFydENhbnZhc1Byb2ZpbGVW
YWx1ZSk7CiAgICAgICAgICAgICBXZWJJbnNwZWN0b3IucHJvZmlsZU1hbmFnZXIuc3RhcnRQcm9m
aWxpbmdDYW52YXMoKTsKQEAgLTUwOSw3ICs0OTgsNiBAQCBXZWJJbnNwZWN0b3IuSW5zdHJ1bWVu
dFNpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX3Byb2ZpbGVUcmVlRWxl
bWVudE1hcCA9IHt9OwogICAgICAgICAKICAgICAgICAgV2ViSW5zcGVjdG9yLmNvbnRlbnRCcm93
c2VyLmNvbnRlbnRWaWV3Q29udGFpbmVyLmNsb3NlQWxsQ29udGVudFZpZXdzT2ZQcm90b3R5cGUo
V2ViSW5zcGVjdG9yLkphdmFTY3JpcHRQcm9maWxlVmlldyk7Ci0gICAgICAgIFdlYkluc3BlY3Rv
ci5jb250ZW50QnJvd3Nlci5jb250ZW50Vmlld0NvbnRhaW5lci5jbG9zZUFsbENvbnRlbnRWaWV3
c09mUHJvdG90eXBlKFdlYkluc3BlY3Rvci5DU1NTZWxlY3RvclByb2ZpbGVWaWV3KTsKICAgICAg
ICAgV2ViSW5zcGVjdG9yLmNvbnRlbnRCcm93c2VyLmNvbnRlbnRWaWV3Q29udGFpbmVyLmNsb3Nl
QWxsQ29udGVudFZpZXdzT2ZQcm90b3R5cGUoV2ViSW5zcGVjdG9yLkNhbnZhc1Byb2ZpbGVWaWV3
KTsKICAgICAgICAgCiAgICAgICAgIHRoaXMudXBkYXRlRW1wdHlDb250ZW50UGxhY2Vob2xkZXIo
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJObyBSZWNvcmRlZCBQcm9maWxlcyIpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbCBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbAppbmRleCBkNTMyOWI2Li5l
MjdiZTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9N
YWluLmh0bWwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5o
dG1sCkBAIC0zNTYsMTQgKzM1NiwxMSBAQAogICAgIDxzY3JpcHQgc3JjPSJQcm9maWxlVmlldy5q
cyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkphdmFTY3JpcHRQcm9maWxlVHlwZS5qcyI+
PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkphdmFTY3JpcHRQcm9maWxlVmlldy5qcyI+PC9z
Y3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9IkNTU1NlbGVjdG9yUHJvZmlsZVR5cGUuanMiPjwvc2Ny
aXB0PgotICAgIDxzY3JpcHQgc3JjPSJDU1NTZWxlY3RvclByb2ZpbGVWaWV3LmpzIj48L3Njcmlw
dD4KICAgICA8c2NyaXB0IHNyYz0iQ2FudmFzRGF0YUdyaWROb2RlLmpzIj48L3NjcmlwdD4KICAg
ICA8c2NyaXB0IHNyYz0iQ2FudmFzUHJvZmlsZVR5cGUuanMiPjwvc2NyaXB0PgogICAgIDxzY3Jp
cHQgc3JjPSJDYW52YXNQcm9maWxlVmlldy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9
IlByb2ZpbGVPYmplY3QuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJKYXZhU2NyaXB0
UHJvZmlsZU9iamVjdC5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9IkNTU1NlbGVjdG9y
UHJvZmlsZU9iamVjdC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkNhbnZhc1Byb2Zp
bGVPYmplY3QuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJEZWJ1Z2dlclNpZGViYXJQ
YW5lbC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkJyZWFrcG9pbnRUcmVlRWxlbWVu
dC5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Qcm9maWxlTWFuYWdlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1Byb2ZpbGVNYW5hZ2VyLmpzCmluZGV4IDU2ZTUyNjMuLjVhOTgyYTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb2ZpbGVNYW5hZ2VyLmpz
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb2ZpbGVNYW5hZ2Vy
LmpzCkBAIC0yOCw3ICsyOCw2IEBAIFdlYkluc3BlY3Rvci5Qcm9maWxlTWFuYWdlciA9IGZ1bmN0
aW9uKCkKICAgICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CiAKICAgICB0aGlzLl9q
YXZhU2NyaXB0UHJvZmlsZVR5cGUgPSBuZXcgV2ViSW5zcGVjdG9yLkphdmFTY3JpcHRQcm9maWxl
VHlwZTsKLSAgICB0aGlzLl9jc3NTZWxlY3RvclByb2ZpbGVUeXBlID0gbmV3IFdlYkluc3BlY3Rv
ci5DU1NTZWxlY3RvclByb2ZpbGVUeXBlOwogICAgIHRoaXMuX2NhbnZhc1Byb2ZpbGVUeXBlID0g
bmV3IFdlYkluc3BlY3Rvci5DYW52YXNQcm9maWxlVHlwZTsKIAogICAgIFByb2ZpbGVyQWdlbnQu
ZW5hYmxlKCk7CkBAIC02MCwxMyArNTksMTAgQEAgV2ViSW5zcGVjdG9yLlByb2ZpbGVNYW5hZ2Vy
LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fY2hlY2tGb3JJbnRlcnJ1cHRpb25zKCk7CiAK
ICAgICAgICAgdGhpcy5fcmVjb3JkaW5nSmF2YVNjcmlwdFByb2ZpbGUgPSBudWxsOwotICAgICAg
ICB0aGlzLl9yZWNvcmRpbmdDU1NTZWxlY3RvclByb2ZpbGUgPSBudWxsOwogICAgICAgICB0aGlz
Ll9yZWNvcmRpbmdDYW52YXNQcm9maWxlID0gbnVsbDsKIAogICAgICAgICB0aGlzLl9pc1Byb2Zp
bGluZyA9IGZhbHNlOwogCi0gICAgICAgIHRoaXMuX2Nzc1NlbGVjdG9yUHJvZmlsZVR5cGUucmVz
ZXQoKTsKLQogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0
b3IuUHJvZmlsZU1hbmFnZXIuRXZlbnQuQ2xlYXJlZCk7CiAgICAgfSwKIApAQCAtODUsNDUgKzgx
LDYgQEAgV2ViSW5zcGVjdG9yLlByb2ZpbGVNYW5hZ2VyLnByb3RvdHlwZSA9IHsKICAgICAgICAg
dGhpcy5famF2YVNjcmlwdFByb2ZpbGVUeXBlLnN0b3BSZWNvcmRpbmdQcm9maWxlKCk7CiAgICAg
fSwKIAotICAgIGlzUHJvZmlsaW5nQ1NTU2VsZWN0b3JzOiBmdW5jdGlvbigpCi0gICAgewotICAg
ICAgICByZXR1cm4gdGhpcy5fY3NzU2VsZWN0b3JQcm9maWxlVHlwZS5pc1JlY29yZGluZ1Byb2Zp
bGUoKTsKLSAgICB9LAotCi0gICAgc3RhcnRQcm9maWxpbmdDU1NTZWxlY3RvcnM6IGZ1bmN0aW9u
KCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX2Nzc1NlbGVjdG9yUHJvZmlsZVR5cGUuc3RhcnRSZWNv
cmRpbmdQcm9maWxlKCk7Ci0gICAgICAgIAotICAgICAgICB2YXIgaWQgPSB0aGlzLl9jc3NTZWxl
Y3RvclByb2ZpbGVUeXBlLm5leHRQcm9maWxlSWQoKTsKLSAgICAgICAgdGhpcy5fcmVjb3JkaW5n
Q1NTU2VsZWN0b3JQcm9maWxlID0gbmV3IFdlYkluc3BlY3Rvci5DU1NTZWxlY3RvclByb2ZpbGVP
YmplY3QoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDU1MgU2VsZWN0b3IgUHJvZmlsZSAlZCIpLmZv
cm1hdChpZCksIGlkLCB0cnVlKTsKLSAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5l
cnMoV2ViSW5zcGVjdG9yLlByb2ZpbGVNYW5hZ2VyLkV2ZW50LlByb2ZpbGVXYXNBZGRlZCwge3By
b2ZpbGU6IHRoaXMuX3JlY29yZGluZ0NTU1NlbGVjdG9yUHJvZmlsZX0pOwotICAgICAgICAKLSAg
ICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlByb2ZpbGVN
YW5hZ2VyLkV2ZW50LlByb2ZpbGluZ1N0YXJ0ZWQpOwotICAgIH0sCi0gICAgCi0gICAgc3RvcFBy
b2ZpbGluZ0NTU1NlbGVjdG9yczogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgZnVuY3Rpb24g
Y3NzUHJvZmlsaW5nU3RvcHBlZChlcnJvciwgcHJvZmlsZSkKLSAgICAgICAgewotICAgICAgICAg
ICAgaWYgKGVycm9yKQotICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgY29u
c29sZS5hc3NlcnQodGhpcy5fcmVjb3JkaW5nQ1NTU2VsZWN0b3JQcm9maWxlKTsKLQotICAgICAg
ICAgICAgdGhpcy5fcmVjb3JkaW5nQ1NTU2VsZWN0b3JQcm9maWxlLmRhdGEgPSBwcm9maWxlLmRh
dGE7Ci0gICAgICAgICAgICB0aGlzLl9yZWNvcmRpbmdDU1NTZWxlY3RvclByb2ZpbGUudG90YWxU
aW1lID0gcHJvZmlsZS50b3RhbFRpbWU7Ci0gICAgICAgICAgICB0aGlzLl9yZWNvcmRpbmdDU1NT
ZWxlY3RvclByb2ZpbGUucmVjb3JkaW5nID0gZmFsc2U7Ci0gICAgICAgICAgICAKLSAgICAgICAg
ICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5Qcm9maWxlTWFu
YWdlci5FdmVudC5Qcm9maWxlV2FzVXBkYXRlZCwge3Byb2ZpbGU6IHRoaXMuX3JlY29yZGluZ0NT
U1NlbGVjdG9yUHJvZmlsZX0pOwotCi0gICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xp
c3RlbmVycyhXZWJJbnNwZWN0b3IuUHJvZmlsZU1hbmFnZXIuRXZlbnQuUHJvZmlsaW5nRW5kZWQs
IHtwcm9maWxlOiB0aGlzLl9yZWNvcmRpbmdDU1NTZWxlY3RvclByb2ZpbGV9KTsKLQotICAgICAg
ICAgICAgdGhpcy5fcmVjb3JkaW5nQ1NTU2VsZWN0b3JQcm9maWxlID0gbnVsbDsKLSAgICAgICAg
fQotCi0gICAgICAgIHRoaXMuX2Nzc1NlbGVjdG9yUHJvZmlsZVR5cGUuc3RvcFJlY29yZGluZ1By
b2ZpbGUoY3NzUHJvZmlsaW5nU3RvcHBlZC5iaW5kKHRoaXMpKTsKLSAgICB9LAotCiAgICAgaXNQ
cm9maWxpbmdDYW52YXM6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9j
YW52YXNQcm9maWxlVHlwZS5pc1JlY29yZGluZ1Byb2ZpbGUoKTsKQEAgLTI0Nyw5ICsyMDQsNiBA
QCBXZWJJbnNwZWN0b3IuUHJvZmlsZU1hbmFnZXIucHJvdG90eXBlID0gewogICAgICAgICBpZiAo
dGhpcy5fcmVjb3JkaW5nSmF2YVNjcmlwdFByb2ZpbGUpIHsKICAgICAgICAgICAgIHRoaXMuZGlz
cGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5Qcm9maWxlTWFuYWdlci5FdmVudC5Q
cm9maWxpbmdJbnRlcnJ1cHRlZCwge3Byb2ZpbGU6IHRoaXMuX3JlY29yZGluZ0phdmFTY3JpcHRQ
cm9maWxlfSk7CiAgICAgICAgICAgICB0aGlzLl9qYXZhU2NyaXB0UHJvZmlsZVR5cGUuc2V0UmVj
b3JkaW5nUHJvZmlsZShmYWxzZSk7Ci0gICAgICAgIH0gZWxzZSBpZiAodGhpcy5fcmVjb3JkaW5n
Q1NTU2VsZWN0b3JQcm9maWxlKSB7Ci0gICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xp
c3RlbmVycyhXZWJJbnNwZWN0b3IuUHJvZmlsZU1hbmFnZXIuRXZlbnQuUHJvZmlsaW5nSW50ZXJy
dXB0ZWQsIHtwcm9maWxlOiB0aGlzLl9yZWNvcmRpbmdDU1NTZWxlY3RvclByb2ZpbGV9KTsKLSAg
ICAgICAgICAgIHRoaXMuX2Nzc1NlbGVjdG9yUHJvZmlsZVR5cGUuc2V0UmVjb3JkaW5nUHJvZmls
ZShmYWxzZSk7CiAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5fcmVjb3JkaW5nQ2FudmFzUHJvZmls
ZSkgewogICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVj
dG9yLlByb2ZpbGVNYW5hZ2VyLkV2ZW50LlByb2ZpbGluZ0ludGVycnVwdGVkLCB7cHJvZmlsZTog
dGhpcy5fcmVjb3JkaW5nQ2FudmFzUHJvZmlsZX0pOwogICAgICAgICAgICAgdGhpcy5fY2FudmFz
UHJvZmlsZVR5cGUuc2V0UmVjb3JkaW5nUHJvZmlsZShmYWxzZSk7CkBAIC0yNjIsOCArMjE2LDYg
QEAgV2ViSW5zcGVjdG9yLlByb2ZpbGVNYW5hZ2VyLnByb3RvdHlwZSA9IHsKIAogICAgICAgICBp
ZiAodGhpcy5fcmVjb3JkaW5nSmF2YVNjcmlwdFByb2ZpbGUpCiAgICAgICAgICAgICB0aGlzLnN0
YXJ0UHJvZmlsaW5nSmF2YVNjcmlwdCgpOwotICAgICAgICBlbHNlIGlmICh0aGlzLl9yZWNvcmRp
bmdDU1NTZWxlY3RvclByb2ZpbGUpCi0gICAgICAgICAgICB0aGlzLnN0YXJ0UHJvZmlsaW5nQ1NT
U2VsZWN0b3JzKCk7CiAgICAgICAgIGVsc2UgaWYgKHRoaXMuX3JlY29yZGluZ0NhbnZhc1Byb2Zp
bGUpCiAgICAgICAgICAgICB0aGlzLnN0YXJ0UHJvZmlsaW5nQ2FudmFzKCk7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1dlYkluc3BlY3RvclVJLnZjeHByb2ovV2Vi
SW5zcGVjdG9yVUkudmN4cHJvaiBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9XZWJJbnNwZWN0b3JV
SS52Y3hwcm9qL1dlYkluc3BlY3RvclVJLnZjeHByb2oKaW5kZXggOTc5NDdhNC4uMmViNDUzZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1dlYkluc3BlY3RvclVJLnZjeHByb2ov
V2ViSW5zcGVjdG9yVUkudmN4cHJvagorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvV2ViSW5z
cGVjdG9yVUkudmN4cHJvai9XZWJJbnNwZWN0b3JVSS52Y3hwcm9qCkBAIC0zMDUsOSArMzA1LDYg
QEAKICAgICA8Tm9uZSBJbmNsdWRlPSIuLlxVc2VySW50ZXJmYWNlXENTU09ic2VydmVyLmpzIiAv
PgogICAgIDxOb25lIEluY2x1ZGU9Ii4uXFVzZXJJbnRlcmZhY2VcQ1NTUHJvcGVydHkuanMiIC8+
CiAgICAgPE5vbmUgSW5jbHVkZT0iLi5cVXNlckludGVyZmFjZVxDU1NSdWxlLmpzIiAvPgotICAg
IDxOb25lIEluY2x1ZGU9Ii4uXFVzZXJJbnRlcmZhY2VcQ1NTU2VsZWN0b3JQcm9maWxlT2JqZWN0
LmpzIiAvPgotICAgIDxOb25lIEluY2x1ZGU9Ii4uXFVzZXJJbnRlcmZhY2VcQ1NTU2VsZWN0b3JQ
cm9maWxlVHlwZS5qcyIgLz4KLSAgICA8Tm9uZSBJbmNsdWRlPSIuLlxVc2VySW50ZXJmYWNlXENT
U1NlbGVjdG9yUHJvZmlsZVZpZXcuanMiIC8+CiAgICAgPE5vbmUgSW5jbHVkZT0iLi5cVXNlcklu
dGVyZmFjZVxDU1NTdHlsZURlY2xhcmF0aW9uLmpzIiAvPgogICAgIDxOb25lIEluY2x1ZGU9Ii4u
XFVzZXJJbnRlcmZhY2VcQ1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24uY3NzIiAvPgogICAgIDxO
b25lIEluY2x1ZGU9Ii4uXFVzZXJJbnRlcmZhY2VcQ1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24u
anMiIC8+CkBAIC03ODgsNCArNzg1LDQgQEAKICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0
c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KICAgPEltcG9ydEdyb3VwIExhYmVsPSJF
eHRlbnNpb25UYXJnZXRzIj4KICAgPC9JbXBvcnRHcm91cD4KLTwvUHJvamVjdD4KXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCis8L1Byb2plY3Q+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvV2ViSW5zcGVjdG9yVUkudmN4cHJvai9XZWJJbnNwZWN0b3JVSS52Y3hwcm9qLmZp
bHRlcnMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvV2ViSW5zcGVjdG9yVUkudmN4cHJvai9XZWJJ
bnNwZWN0b3JVSS52Y3hwcm9qLmZpbHRlcnMKaW5kZXggZjJhMjYwYS4uZjE2MDc4YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1dlYkluc3BlY3RvclVJLnZjeHByb2ovV2ViSW5z
cGVjdG9yVUkudmN4cHJvai5maWx0ZXJzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9XZWJJ
bnNwZWN0b3JVSS52Y3hwcm9qL1dlYkluc3BlY3RvclVJLnZjeHByb2ouZmlsdGVycwpAQCAtMjc2
LDE1ICsyNzYsNiBAQAogICAgIDxOb25lIEluY2x1ZGU9Ii4uXFVzZXJJbnRlcmZhY2VcQ1NTUnVs
ZS5qcyI+CiAgICAgICA8RmlsdGVyPlVzZXJJbnRlcmZhY2U8L0ZpbHRlcj4KICAgICA8L05vbmU+
Ci0gICAgPE5vbmUgSW5jbHVkZT0iLi5cVXNlckludGVyZmFjZVxDU1NTZWxlY3RvclByb2ZpbGVP
YmplY3QuanMiPgotICAgICAgPEZpbHRlcj5Vc2VySW50ZXJmYWNlPC9GaWx0ZXI+Ci0gICAgPC9O
b25lPgotICAgIDxOb25lIEluY2x1ZGU9Ii4uXFVzZXJJbnRlcmZhY2VcQ1NTU2VsZWN0b3JQcm9m
aWxlVHlwZS5qcyI+Ci0gICAgICA8RmlsdGVyPlVzZXJJbnRlcmZhY2U8L0ZpbHRlcj4KLSAgICA8
L05vbmU+Ci0gICAgPE5vbmUgSW5jbHVkZT0iLi5cVXNlckludGVyZmFjZVxDU1NTZWxlY3RvclBy
b2ZpbGVWaWV3LmpzIj4KLSAgICAgIDxGaWx0ZXI+VXNlckludGVyZmFjZTwvRmlsdGVyPgotICAg
IDwvTm9uZT4KICAgICA8Tm9uZSBJbmNsdWRlPSIuLlxVc2VySW50ZXJmYWNlXENTU1N0eWxlRGVj
bGFyYXRpb24uanMiPgogICAgICAgPEZpbHRlcj5Vc2VySW50ZXJmYWNlPC9GaWx0ZXI+CiAgICAg
PC9Ob25lPgpAQCAtMTczOSw0ICsxNzMwLDQgQEAKICAgICA8L05vbmU+CiAgICAgPE5vbmUgSW5j
bHVkZT0iV2ViSW5zcGVjdG9yVUlQb3N0QnVpbGQuY21kIiAvPgogICA8L0l0ZW1Hcm91cD4KLTwv
UHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCis8L1Byb2plY3Q+Cg==
</data>
<flag name="review"
          id="245129"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>