<?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>212928</bug_id>
          
          <creation_ts>2020-06-08 15:32:16 -0700</creation_ts>
          <short_desc>TextManipulation should only convert text from Node&apos;s text content to tokens</short_desc>
          <delta_ts>2020-06-08 23:55:16 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>HTML Editing</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sihui Liu">sihui_liu</reporter>
          <assigned_to name="Sihui Liu">sihui_liu</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>mifenton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1660427</commentid>
    <comment_count>0</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-06-08 15:32:16 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1660441</commentid>
    <comment_count>1</comment_count>
      <attachid>401386</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-06-08 15:50:22 -0700</bug_when>
    <thetext>Created attachment 401386
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1660538</commentid>
    <comment_count>2</comment_count>
      <attachid>401408</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-06-08 18:55:22 -0700</bug_when>
    <thetext>Created attachment 401408
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1660556</commentid>
    <comment_count>3</comment_count>
      <attachid>401408</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-06-08 20:24:09 -0700</bug_when>
    <thetext>Comment on attachment 401408
Patch

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

&gt; Source/WebCore/editing/TextManipulationController.cpp:234
&gt; +                if (contiansDelimiter) {

Nit - contiansDelimiter =&gt; containsDelimiter

&gt; Source/WebCore/editing/TextManipulationController.cpp:329
&gt; +TextManipulationController::ManipulationUnit TextManipulationController::createUnit(const Vector&lt;String&gt;&amp; text, Node* textNode)

Maybe make this take `Node&amp; textNode`, since we never expect it to be null?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1660587</commentid>
    <comment_count>4</comment_count>
      <attachid>401419</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-06-08 23:29:56 -0700</bug_when>
    <thetext>Created attachment 401419
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1660595</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-06-08 23:54:25 -0700</bug_when>
    <thetext>Committed r262778: &lt;https://trac.webkit.org/changeset/262778&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 401419.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1660596</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-06-08 23:55:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/64152411&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401386</attachid>
            <date>2020-06-08 15:50:22 -0700</date>
            <delta_ts>2020-06-08 18:55:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>Patch_0608</filename>
            <type>text/plain</type>
            <size>15569</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA0Y2I3ZDVjMjJhZi4uZDJhZDgyMTM3ODcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMCBAQAorMjAyMC0wNi0wOCAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4K
KworICAgICAgICBUZXh0TWFuaXB1bGF0aW9uIHNob3VsZCBvbmx5IGNvbnZlcnQgdGV4dCBmcm9t
IE5vZGUncyB0ZXh0IGNvbnRlbnQgdG8gdG9rZW5zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTI5MjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUZXh0SXRlcmF0b3IgbWF5IGVtaXQgdGV4dCBsaWtlIGxp
bmUgYnJlYWtzIGJldHdlZW4gbm9kZXMuIFRoaXMga2luZCBvZiB0ZXh0IGlzIGdlbmVyYXRlZCBi
YXNlZCBvbiB0aGUgcmFuZ2Ugb2YgCisgICAgICAgIFRleHRJdGVyYXRvciBhbmQgc3R5bGUgb2Yg
bm9kZS4gV2UgbmVlZCB0aGlzIHRleHQgZm9yIHNwbGl0dGluZyB0b2tlbnMgb3Igc3BsaXR0aW5n
IHBhcmFncmFwaHMsIGJ1dCB3ZSBzaG91bGQgCisgICAgICAgIG5vdCBjb252ZXJ0IGl0IHRvIG5v
cm1hbCB0b2tlbnMuIFRoaXMgaXMgYmVjYXVzZSB0b2tlbnMgc2hvdWxkIGJlIGNyZWF0ZWQgZnJv
bSBjb250ZW50IG9mIG5vZGUgYW5kIHRleHQgCisgICAgICAgIG1hbmlwdWxhdGlvbiBmYWlscyBp
ZiBjb250ZW50IGRvZXMgbm90IG1hdGNoLiBUaGUgY2hhbmdlIG9mIHRoaXMga2luZCBvZiB0ZXh0
IGRvZXMgbm90IGluZGljYXRlIGNoYW5nZSBpbiAKKyAgICAgICAgY29udGVudCBhbmQgd2UgbWF5
IHN0aWxsIGJlIGFibGUgdG8gZmluaXNoIHRleHQgbWFuaXB1bGF0aW9uLgorCisgICAgICAgIFRl
c3Q6IFRleHRNYW5pcHVsYXRpb24uQ29tcGxldGVUZXh0TWFuaXB1bGF0aW9uUmVwbGFjZVR3b1Np
bXBsZVBhcmFncmFwaHMKKworICAgICAgICAqIGVkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRy
b2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNJblByaXZhdGVVc2VBcmVhKToKKyAgICAg
ICAgKFdlYkNvcmU6OmlzVG9rZW5EZWxpbWl0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UGFyYWdy
YXBoQ29udGVudEl0ZXJhdG9yOjpjdXJyZW50Q29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpQ
YXJhZ3JhcGhDb250ZW50SXRlcmF0b3I6OmFwcGVuZFRvVGV4dCk6CisgICAgICAgIChXZWJDb3Jl
OjpQYXJhZ3JhcGhDb250ZW50SXRlcmF0b3I6OmFkdmFuY2VJdGVyYXRvck5vZGVBbmRVcGRhdGVU
ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpjcmVh
dGVVbml0KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpw
YXJzZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6b2Jz
ZXJ2ZVBhcmFncmFwaHMpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dE1hbmlwdWxhdGlvbkNvbnRy
b2xsZXI6OnJlcGxhY2UpOgorICAgICAgICAqIGVkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRy
b2xsZXIuaDoKKwogMjAyMC0wNi0wNSAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAK
ICAgICAgICAgUkVHUkVTU0lPTiAocjI1NjY0OCk6IEFwcGxlIFBheSA8YnV0dG9uPiBlbGVtZW50
cyBubyBsb25nZXIgdXNlIHRoZSBkZWZhdWx0IGNvcm5lciByYWRpdXMgb24gaU9TIChhZmZlY3Rz
IFN0cmlwZS5qcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1hbmlw
dWxhdGlvbkNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0TWFuaXB1
bGF0aW9uQ29udHJvbGxlci5jcHAKaW5kZXggMzVmYmJlZjY4YmYuLjdlNWZiZTY0YjZmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRNYW5pcHVsYXRpb25Db250cm9sbGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRNYW5pcHVsYXRpb25Db250cm9s
bGVyLmNwcApAQCAtMTQzLDYgKzE0MywxNiBAQCB2b2lkIFRleHRNYW5pcHVsYXRpb25Db250cm9s
bGVyOjpzdGFydE9ic2VydmluZ1BhcmFncmFwaHMoTWFuaXB1bGF0aW9uSXRlbUNhbGxiYQogICAg
IGZsdXNoUGVuZGluZ0l0ZW1zRm9yQ2FsbGJhY2soKTsKIH0KIAorc3RhdGljIGJvb2wgaXNJblBy
aXZhdGVVc2VBcmVhKFVDaGFyIGNoYXJhY3RlcikKK3sKKyAgICByZXR1cm4gMHhFMDAwIDw9IGNo
YXJhY3RlciAmJiBjaGFyYWN0ZXIgPD0gMHhGOEZGOworfQorCitzdGF0aWMgYm9vbCBpc1Rva2Vu
RGVsaW1pdGVyKFVDaGFyIGNoYXJhY3RlcikKK3sKKyAgICByZXR1cm4gaXNIVE1MTGluZUJyZWFr
KGNoYXJhY3RlcikgfHwgaXNJblByaXZhdGVVc2VBcmVhKGNoYXJhY3Rlcik7Cit9CisKIGNsYXNz
IFBhcmFncmFwaENvbnRlbnRJdGVyYXRvciB7CiBwdWJsaWM6CiAgICAgUGFyYWdyYXBoQ29udGVu
dEl0ZXJhdG9yKGNvbnN0IFBvc2l0aW9uJiBzdGFydCwgY29uc3QgUG9zaXRpb24mIGVuZCkKQEAg
LTE2NiwxNCArMTc2LDE0IEBAIHB1YmxpYzoKIAogICAgIHN0cnVjdCBDdXJyZW50Q29udGVudCB7
CiAgICAgICAgIFJlZlB0cjxOb2RlPiBub2RlOwotICAgICAgICBTdHJpbmdWaWV3IHRleHQ7Cisg
ICAgICAgIFZlY3RvcjxTdHJpbmc+IHRleHQ7CiAgICAgICAgIGJvb2wgaXNUZXh0Q29udGVudCB7
IGZhbHNlIH07CiAgICAgICAgIGJvb2wgaXNSZXBsYWNlZENvbnRlbnQgeyBmYWxzZSB9OwogICAg
IH07CiAKICAgICBDdXJyZW50Q29udGVudCBjdXJyZW50Q29udGVudCgpCiAgICAgewotICAgICAg
ICBDdXJyZW50Q29udGVudCBjb250ZW50ID0geyBtX25vZGUuY29weVJlZigpLCBtX3RleHQgPyBt
X3RleHQudmFsdWUoKSA6IFN0cmluZ1ZpZXcgeyB9LCAhIW1fdGV4dCB9OworICAgICAgICBDdXJy
ZW50Q29udGVudCBjb250ZW50ID0geyBtX25vZGUuY29weVJlZigpLCBtX3RleHQgPyBtX3RleHQu
dmFsdWUoKSA6IFZlY3RvcjxTdHJpbmc+IHsgfSwgISFtX3RleHQgfTsKICAgICAgICAgaWYgKGNv
bnRlbnQubm9kZSkgewogICAgICAgICAgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gY29udGVudC5u
b2RlLT5yZW5kZXJlcigpKSB7CiAgICAgICAgICAgICAgICAgaWYgKHJlbmRlcmVyLT5pc1JlbmRl
clJlcGxhY2VkKCkpIHsKQEAgLTIwMCwyNCArMjEwLDQ2IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICBtX25vZGUgPSBtX3Bhc3RFbmROb2RlOwogICAgIH0KIAorICAgIHZvaWQgYXBwZW5kVG9UZXh0
KFZlY3RvcjxTdHJpbmc+JiB0ZXh0LCBTdHJpbmdCdWlsZGVyJiBzdHJpbmdCdWlsZGVyKQorICAg
IHsKKyAgICAgICAgaWYgKCFzdHJpbmdCdWlsZGVyLmlzRW1wdHkoKSkgeworICAgICAgICAgICAg
dGV4dC5hcHBlbmQoc3RyaW5nQnVpbGRlci50b1N0cmluZygpKTsKKyAgICAgICAgICAgIHN0cmlu
Z0J1aWxkZXIuY2xlYXIoKTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIHZvaWQgYWR2YW5jZUl0
ZXJhdG9yTm9kZUFuZFVwZGF0ZVRleHQoKQogICAgIHsKICAgICAgICAgQVNTRVJUKHNob3VsZEFk
dmFuY2VJdGVyYXRvclBhc3RDdXJyZW50Tm9kZSgpKTsKIAogICAgICAgICBTdHJpbmdCdWlsZGVy
IHN0cmluZ0J1aWxkZXI7CisgICAgICAgIFZlY3RvcjxTdHJpbmc+IHRleHQ7CiAgICAgICAgIHdo
aWxlIChzaG91bGRBZHZhbmNlSXRlcmF0b3JQYXN0Q3VycmVudE5vZGUoKSkgewotICAgICAgICAg
ICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobV9pdGVyYXRvci50ZXh0KCkpOworICAgICAgICAgICAg
aWYgKCFtX2l0ZXJhdG9yLm5vZGUoKSkgeworICAgICAgICAgICAgICAgIGF1dG8gaXRlcmF0b3JU
ZXh0ID0gbV9pdGVyYXRvci50ZXh0KCk7CisgICAgICAgICAgICAgICAgYm9vbCBjb250aWFuc0Rl
bGltaXRlciA9IGZhbHNlOworICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAw
OyBpbmRleCA8IGl0ZXJhdG9yVGV4dC5sZW5ndGgoKSAmJiAhY29udGlhbnNEZWxpbWl0ZXI7ICsr
aW5kZXgpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpYW5zRGVsaW1pdGVyID0gaXNUb2tlbkRl
bGltaXRlcihpdGVyYXRvclRleHRbaW5kZXhdKTsKKworICAgICAgICAgICAgICAgIGlmIChjb250
aWFuc0RlbGltaXRlcikgeworICAgICAgICAgICAgICAgICAgICBhcHBlbmRUb1RleHQodGV4dCwg
c3RyaW5nQnVpbGRlcik7CisgICAgICAgICAgICAgICAgICAgIHRleHQuYXBwZW5kKHsgfSk7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmQobV9pdGVyYXRvci50ZXh0KCkpOworCiAgICAgICAgICAgICBtX2l0
ZXJhdG9yLmFkdmFuY2UoKTsKICAgICAgICAgICAgIG1faXRlcmF0b3JOb2RlID0gbV9pdGVyYXRv
ci5hdEVuZCgpID8gbnVsbHB0ciA6IGNyZWF0ZUxpdmVSYW5nZShtX2l0ZXJhdG9yLnJhbmdlKCkp
LT5maXJzdE5vZGUoKTsKICAgICAgICAgfQotICAgICAgICBtX3RleHQgPSB7IHN0cmluZ0J1aWxk
ZXIudG9TdHJpbmcoKSB9OworICAgICAgICBhcHBlbmRUb1RleHQodGV4dCwgc3RyaW5nQnVpbGRl
cik7CisgICAgICAgIG1fdGV4dCA9IHRleHQ7CiAgICAgfQogCiAgICAgVGV4dEl0ZXJhdG9yIG1f
aXRlcmF0b3I7CiAgICAgUmVmUHRyPE5vZGU+IG1faXRlcmF0b3JOb2RlOwogICAgIFJlZlB0cjxO
b2RlPiBtX25vZGU7CiAgICAgUmVmUHRyPE5vZGU+IG1fcGFzdEVuZE5vZGU7Ci0gICAgT3B0aW9u
YWw8U3RyaW5nPiBtX3RleHQ7CisgICAgT3B0aW9uYWw8VmVjdG9yPFN0cmluZz4+IG1fdGV4dDsK
IH07CiAKIHN0YXRpYyBib29sIHNob3VsZEV4dHJhY3RWYWx1ZUZvclRleHRNYW5pcHVsYXRpb24o
Y29uc3QgSFRNTElucHV0RWxlbWVudCYgaW5wdXQpCkBAIC0yOTQsMzYgKzMyNiwzNCBAQCBzdGF0
aWMgYm9vbCBpc0VuY2xvc2luZ0l0ZW1Cb3VuZGFyeUVsZW1lbnQoY29uc3QgRWxlbWVudCYgZWxl
bWVudCkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXN0YXRpYyBib29sIGlzSW5Qcml2YXRlVXNl
QXJlYShVQ2hhciBjaGFyYWN0ZXIpCi17Ci0gICAgcmV0dXJuIDB4RTAwMCA8PSBjaGFyYWN0ZXIg
JiYgY2hhcmFjdGVyIDw9IDB4RjhGRjsKLX0KLQotc3RhdGljIGJvb2wgaXNUb2tlbkRlbGltaXRl
cihVQ2hhciBjaGFyYWN0ZXIpCitUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6TWFuaXB1bGF0
aW9uVW5pdCBUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6Y3JlYXRlVW5pdChjb25zdCBWZWN0
b3I8U3RyaW5nPiYgdGV4dCwgTm9kZSogdGV4dE5vZGUpCiB7Ci0gICAgcmV0dXJuIGlzSFRNTExp
bmVCcmVhayhjaGFyYWN0ZXIpIHx8IGlzSW5Qcml2YXRlVXNlQXJlYShjaGFyYWN0ZXIpOworICAg
IE1hbmlwdWxhdGlvblVuaXQgdW5pdCA9IHsgKnRleHROb2RlIH07CisgICAgZm9yIChhdXRvJiB0
ZXh0RW50cnkgOiB0ZXh0KSB7CisgICAgICAgIGlmICghdGV4dEVudHJ5LmlzTnVsbCgpKQorICAg
ICAgICAgICAgcGFyc2UodW5pdCwgdGV4dEVudHJ5LCB0ZXh0Tm9kZSk7CisgICAgICAgIGVsc2Ug
eworICAgICAgICAgICAgaWYgKHVuaXQudG9rZW5zLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAg
ICB1bml0LmZpcnN0VG9rZW5Db250YWluc0RlbGltaXRlciA9IHRydWU7CisgICAgICAgICAgICB1
bml0Lmxhc3RUb2tlbkNvbnRhaW5zRGVsaW1pdGVyID0gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0K
KyAgICByZXR1cm4gdW5pdDsKIH0KIAotVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6Ok1hbmlw
dWxhdGlvblVuaXQgVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6OnBhcnNlKFN0cmluZ1ZpZXcg
dGV4dCwgTm9kZSogdGV4dE5vZGUpCit2b2lkIFRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpw
YXJzZShNYW5pcHVsYXRpb25Vbml0JiB1bml0LCBjb25zdCBTdHJpbmcmIHRleHQsIE5vZGUqIHRl
eHROb2RlKQogewotICAgIFZlY3RvcjxNYW5pcHVsYXRpb25Ub2tlbj4gdG9rZW5zOwogICAgIEV4
Y2x1c2lvblJ1bGVNYXRjaGVyIGV4Y2x1c2lvblJ1bGVNYXRjaGVyKG1fZXhjbHVzaW9uUnVsZXMp
OworICAgIGJvb2wgaXNOb2RlRXhjbHVkZWQgPSBleGNsdXNpb25SdWxlTWF0Y2hlci5pc0V4Y2x1
ZGVkKHRleHROb2RlKTsKICAgICBzaXplX3QgcG9zaXRpb25PZkxhc3ROb25IVE1MU3BhY2UgPSBX
VEY6Om5vdEZvdW5kOwogICAgIHNpemVfdCBzdGFydFBvc2l0aW9uT2ZDdXJyZW50VG9rZW4gPSAw
OwotICAgIGJvb2wgaXNOb2RlRXhjbHVkZWQgPSBleGNsdXNpb25SdWxlTWF0Y2hlci5pc0V4Y2x1
ZGVkKHRleHROb2RlKTsKLSAgICBib29sIGNvbnRhaW5zT25seUhUTUxTcGFjZSA9IHRydWU7Ci0g
ICAgYm9vbCBjb250YWluc1Rva2VuRGVsaW1pdGVyID0gZmFsc2U7Ci0gICAgYm9vbCBmaXJzdFRv
a2VuQ29udGFpbnNEZWxpbWl0ZXIgPSBmYWxzZTsKLSAgICBib29sIGxhc3RUb2tlbkNvbnRhaW5z
RGVsaW1pdGVyID0gZmFsc2U7Ci0KICAgICBzaXplX3QgaW5kZXggPSAwOwogICAgIGZvciAoOyBp
bmRleCA8IHRleHQubGVuZ3RoKCk7ICsraW5kZXgpIHsKICAgICAgICAgYXV0byBjaGFyYWN0ZXIg
PSB0ZXh0W2luZGV4XTsKICAgICAgICAgaWYgKGlzVG9rZW5EZWxpbWl0ZXIoY2hhcmFjdGVyKSkg
ewotICAgICAgICAgICAgY29udGFpbnNUb2tlbkRlbGltaXRlciA9IHRydWU7CiAgICAgICAgICAg
ICBpZiAocG9zaXRpb25PZkxhc3ROb25IVE1MU3BhY2UgIT0gV1RGOjpub3RGb3VuZCAmJiBzdGFy
dFBvc2l0aW9uT2ZDdXJyZW50VG9rZW4gPD0gcG9zaXRpb25PZkxhc3ROb25IVE1MU3BhY2UpIHsK
LSAgICAgICAgICAgICAgICBhdXRvIHRva2VuU3RyaW5nID0gdGV4dC5zdWJzdHJpbmcoc3RhcnRQ
b3NpdGlvbk9mQ3VycmVudFRva2VuLCBwb3NpdGlvbk9mTGFzdE5vbkhUTUxTcGFjZSArIDEgLSBz
dGFydFBvc2l0aW9uT2ZDdXJyZW50VG9rZW4pLnRvU3RyaW5nKCk7Ci0gICAgICAgICAgICAgICAg
dG9rZW5zLmFwcGVuZChNYW5pcHVsYXRpb25Ub2tlbiB7IG1fdG9rZW5JZGVudGlmaWVyLmdlbmVy
YXRlKCksIHRva2VuU3RyaW5nLCB0b2tlbkluZm8odGV4dE5vZGUpLCBpc05vZGVFeGNsdWRlZCB9
KTsKKyAgICAgICAgICAgICAgICBhdXRvIHN0cmluZ0ZvclRva2VuID0gdGV4dC5zdWJzdHJpbmco
c3RhcnRQb3NpdGlvbk9mQ3VycmVudFRva2VuLCBwb3NpdGlvbk9mTGFzdE5vbkhUTUxTcGFjZSAr
IDEgLSBzdGFydFBvc2l0aW9uT2ZDdXJyZW50VG9rZW4pOworICAgICAgICAgICAgICAgIHVuaXQu
dG9rZW5zLmFwcGVuZChNYW5pcHVsYXRpb25Ub2tlbiB7IG1fdG9rZW5JZGVudGlmaWVyLmdlbmVy
YXRlKCksIHN0cmluZ0ZvclRva2VuLCB0b2tlbkluZm8odGV4dE5vZGUpLCBpc05vZGVFeGNsdWRl
ZCB9KTsKICAgICAgICAgICAgICAgICBzdGFydFBvc2l0aW9uT2ZDdXJyZW50VG9rZW4gPSBwb3Np
dGlvbk9mTGFzdE5vbkhUTUxTcGFjZSArIDE7CiAgICAgICAgICAgICB9CiAKQEAgLTMzMiwyNSAr
MzYyLDI0IEBAIFRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpNYW5pcHVsYXRpb25Vbml0IFRl
eHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpwYXJzZShTCiAKICAgICAgICAgICAgIC0taW5kZXg7
CiAKLSAgICAgICAgICAgIGF1dG8gc3RyaW5nRm9yVG9rZW4gPSB0ZXh0LnN1YnN0cmluZyhzdGFy
dFBvc2l0aW9uT2ZDdXJyZW50VG9rZW4sIGluZGV4ICsgMSAtIHN0YXJ0UG9zaXRpb25PZkN1cnJl
bnRUb2tlbikudG9TdHJpbmcoKTsKLSAgICAgICAgICAgIGlmICh0b2tlbnMuaXNFbXB0eSgpKQot
ICAgICAgICAgICAgICAgIGZpcnN0VG9rZW5Db250YWluc0RlbGltaXRlciA9IHRydWU7Ci0gICAg
ICAgICAgICB0b2tlbnMuYXBwZW5kKE1hbmlwdWxhdGlvblRva2VuIHsgbV90b2tlbklkZW50aWZp
ZXIuZ2VuZXJhdGUoKSwgc3RyaW5nRm9yVG9rZW4sIHRva2VuSW5mbyh0ZXh0Tm9kZSksIHRydWUg
fSk7CisgICAgICAgICAgICBhdXRvIHN0cmluZ0ZvclRva2VuID0gdGV4dC5zdWJzdHJpbmcoc3Rh
cnRQb3NpdGlvbk9mQ3VycmVudFRva2VuLCBpbmRleCArIDEgLSBzdGFydFBvc2l0aW9uT2ZDdXJy
ZW50VG9rZW4pOworICAgICAgICAgICAgaWYgKHVuaXQudG9rZW5zLmlzRW1wdHkoKSAmJiAhdW5p
dC5maXJzdFRva2VuQ29udGFpbnNEZWxpbWl0ZXIpCisgICAgICAgICAgICAgICAgdW5pdC5maXJz
dFRva2VuQ29udGFpbnNEZWxpbWl0ZXIgPSB0cnVlOworICAgICAgICAgICAgdW5pdC50b2tlbnMu
YXBwZW5kKE1hbmlwdWxhdGlvblRva2VuIHsgbV90b2tlbklkZW50aWZpZXIuZ2VuZXJhdGUoKSwg
c3RyaW5nRm9yVG9rZW4sIHRva2VuSW5mbyh0ZXh0Tm9kZSksIHRydWUgfSk7CiAgICAgICAgICAg
ICBzdGFydFBvc2l0aW9uT2ZDdXJyZW50VG9rZW4gPSBpbmRleCArIDE7Ci0gICAgICAgICAgICBs
YXN0VG9rZW5Db250YWluc0RlbGltaXRlciA9IHRydWU7CisgICAgICAgICAgICB1bml0Lmxhc3RU
b2tlbkNvbnRhaW5zRGVsaW1pdGVyID0gdHJ1ZTsKICAgICAgICAgfSBlbHNlIGlmIChpc05vdEhU
TUxTcGFjZShjaGFyYWN0ZXIpKSB7Ci0gICAgICAgICAgICBjb250YWluc09ubHlIVE1MU3BhY2Ug
PSBmYWxzZTsKKyAgICAgICAgICAgIGlmICghaXNOb2RlRXhjbHVkZWQpCisgICAgICAgICAgICAg
ICAgdW5pdC5hcmVBbGxUb2tlbnNFeGNsdWRlZCA9IGZhbHNlOwogICAgICAgICAgICAgcG9zaXRp
b25PZkxhc3ROb25IVE1MU3BhY2UgPSBpbmRleDsKICAgICAgICAgfQogICAgIH0KIAogICAgIGlm
IChzdGFydFBvc2l0aW9uT2ZDdXJyZW50VG9rZW4gPCB0ZXh0Lmxlbmd0aCgpKSB7Ci0gICAgICAg
IGF1dG8gdG9rZW5TdHJpbmcgPSB0ZXh0LnN1YnN0cmluZyhzdGFydFBvc2l0aW9uT2ZDdXJyZW50
VG9rZW4sIGluZGV4ICsgMSAtIHN0YXJ0UG9zaXRpb25PZkN1cnJlbnRUb2tlbikudG9TdHJpbmco
KTsKLSAgICAgICAgdG9rZW5zLmFwcGVuZChNYW5pcHVsYXRpb25Ub2tlbiB7IG1fdG9rZW5JZGVu
dGlmaWVyLmdlbmVyYXRlKCksIHRva2VuU3RyaW5nLCB0b2tlbkluZm8odGV4dE5vZGUpLCBpc05v
ZGVFeGNsdWRlZCB9KTsKLSAgICAgICAgbGFzdFRva2VuQ29udGFpbnNEZWxpbWl0ZXIgPSBmYWxz
ZTsKKyAgICAgICAgYXV0byBzdHJpbmdGb3JUb2tlbiA9IHRleHQuc3Vic3RyaW5nKHN0YXJ0UG9z
aXRpb25PZkN1cnJlbnRUb2tlbiwgaW5kZXggKyAxIC0gc3RhcnRQb3NpdGlvbk9mQ3VycmVudFRv
a2VuKTsKKyAgICAgICAgdW5pdC50b2tlbnMuYXBwZW5kKE1hbmlwdWxhdGlvblRva2VuIHsgbV90
b2tlbklkZW50aWZpZXIuZ2VuZXJhdGUoKSwgc3RyaW5nRm9yVG9rZW4sIHRva2VuSW5mbyh0ZXh0
Tm9kZSksIGlzTm9kZUV4Y2x1ZGVkIH0pOworICAgICAgICB1bml0Lmxhc3RUb2tlbkNvbnRhaW5z
RGVsaW1pdGVyID0gZmFsc2U7CiAgICAgfQotCi0gICAgcmV0dXJuIHsgV1RGTW92ZSh0b2tlbnMp
LCAqdGV4dE5vZGUsIGNvbnRhaW5zT25seUhUTUxTcGFjZSB8fCBpc05vZGVFeGNsdWRlZCwgY29u
dGFpbnNUb2tlbkRlbGltaXRlciwgZmlyc3RUb2tlbkNvbnRhaW5zRGVsaW1pdGVyLCBsYXN0VG9r
ZW5Db250YWluc0RlbGltaXRlciB9OwogfQogCiB2b2lkIFRleHRNYW5pcHVsYXRpb25Db250cm9s
bGVyOjphZGRJdGVtSWZQb3NzaWJsZShWZWN0b3I8TWFuaXB1bGF0aW9uVW5pdD4mJiB1bml0cykK
QEAgLTQzMiwyMyArNDYxLDI0IEBAIHZvaWQgVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6Om9i
c2VydmVQYXJhZ3JhcGhzKGNvbnN0IFBvc2l0aW9uJiBzdGFydCwgY29uc3QKIAogICAgICAgICBp
ZiAoY29udGVudC5pc1JlcGxhY2VkQ29udGVudCkgewogICAgICAgICAgICAgaWYgKCF1bml0c0lu
Q3VycmVudFBhcmFncmFwaC5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgdW5pdHNJbkN1cnJl
bnRQYXJhZ3JhcGguYXBwZW5kKE1hbmlwdWxhdGlvblVuaXQgeyB7IE1hbmlwdWxhdGlvblRva2Vu
IHsgbV90b2tlbklkZW50aWZpZXIuZ2VuZXJhdGUoKSwgIltdIiwgdG9rZW5JbmZvKGNvbnRlbnQu
bm9kZS5nZXQoKSksIHRydWUgfSB9LCAqY29udGVudE5vZGUgfSk7CisgICAgICAgICAgICAgICAg
dW5pdHNJbkN1cnJlbnRQYXJhZ3JhcGguYXBwZW5kKE1hbmlwdWxhdGlvblVuaXQgeyAqY29udGVu
dE5vZGUsIHsgTWFuaXB1bGF0aW9uVG9rZW4geyBtX3Rva2VuSWRlbnRpZmllci5nZW5lcmF0ZSgp
LCAiW10iLCB0b2tlbkluZm8oY29udGVudC5ub2RlLmdldCgpKSwgdHJ1ZSB9IH0gfSk7CiAgICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCiAgICAgICAgIGlmICghY29udGVudC5pc1Rl
eHRDb250ZW50KQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgYXV0byB1bml0c0lu
Q3VycmVudE5vZGUgPSBwYXJzZShjb250ZW50LnRleHQsIGNvbnRlbnROb2RlKTsKLSAgICAgICAg
aWYgKHVuaXRzSW5DdXJyZW50Tm9kZS5maXJzdFRva2VuQ29udGFpbnNEZWxpbWl0ZXIpCisgICAg
ICAgIGF1dG8gY3VycmVudFVuaXQgPSBjcmVhdGVVbml0KGNvbnRlbnQudGV4dCwgY29udGVudE5v
ZGUpOworICAgICAgICBpZiAoY3VycmVudFVuaXQuZmlyc3RUb2tlbkNvbnRhaW5zRGVsaW1pdGVy
KQogICAgICAgICAgICAgYWRkSXRlbUlmUG9zc2libGUoc3RkOjpleGNoYW5nZSh1bml0c0luQ3Vy
cmVudFBhcmFncmFwaCwgeyB9KSk7CiAKLSAgICAgICAgaWYgKHVuaXRzSW5DdXJyZW50UGFyYWdy
YXBoLmlzRW1wdHkoKSAmJiB1bml0c0luQ3VycmVudE5vZGUuYXJlQWxsVG9rZW5zRXhjbHVkZWQp
Ci0gICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmICh1bml0c0luQ3VycmVudFBh
cmFncmFwaC5pc0VtcHR5KCkgJiYgY3VycmVudFVuaXQuYXJlQWxsVG9rZW5zRXhjbHVkZWQpCisg
ICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICB1bml0c0luQ3VycmVudFBhcmFncmFwaC5h
cHBlbmQoV1RGTW92ZSh1bml0c0luQ3VycmVudE5vZGUpKTsKKyAgICAgICAgYm9vbCBjdXJyZW50
VW5pdEVuZHNXaXRoRGVsaW1pdGVyID0gY3VycmVudFVuaXQubGFzdFRva2VuQ29udGFpbnNEZWxp
bWl0ZXI7CisgICAgICAgIHVuaXRzSW5DdXJyZW50UGFyYWdyYXBoLmFwcGVuZChXVEZNb3ZlKGN1
cnJlbnRVbml0KSk7CiAKLSAgICAgICAgaWYgKHVuaXRzSW5DdXJyZW50Tm9kZS5sYXN0VG9rZW5D
b250YWluc0RlbGltaXRlcikKKyAgICAgICAgaWYgKGN1cnJlbnRVbml0RW5kc1dpdGhEZWxpbWl0
ZXIpCiAgICAgICAgICAgICBhZGRJdGVtSWZQb3NzaWJsZShzdGQ6OmV4Y2hhbmdlKHVuaXRzSW5D
dXJyZW50UGFyYWdyYXBoLCB7IH0pKTsKICAgICB9CiAKQEAgLTY4MCw3ICs3MTAsNyBAQCBhdXRv
IFRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpyZXBsYWNlKGNvbnN0IE1hbmlwdWxhdGlvbkl0
ZW1EYXRhJiBpdGVtLCBjb25zdAogCiAgICAgICAgICAgICB0b2tlbnNJbkN1cnJlbnROb2RlLmFw
cGVuZChpdGVtLnRva2Vuc1tjdXJyZW50VG9rZW5JbmRleF0pOwogICAgICAgICB9IGVsc2UKLSAg
ICAgICAgICAgIHRva2Vuc0luQ3VycmVudE5vZGUgPSBwYXJzZShjb250ZW50LnRleHQsIGNvbnRl
bnQubm9kZS5nZXQoKSkudG9rZW5zOworICAgICAgICAgICAgdG9rZW5zSW5DdXJyZW50Tm9kZSA9
IGNyZWF0ZVVuaXQoY29udGVudC50ZXh0LCBjb250ZW50Lm5vZGUuZ2V0KCkpLnRva2VuczsKIAog
ICAgICAgICBib29sIGlzTm9kZUluY2x1ZGVkID0gV1RGOjphbnlPZih0b2tlbnNJbkN1cnJlbnRO
b2RlLCBbXSAoYXV0byYgdG9rZW4pIHsKICAgICAgICAgICAgIHJldHVybiAhdG9rZW4uaXNFeGNs
dWRlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1hbmlwdWxhdGlv
bkNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNv
bnRyb2xsZXIuaAppbmRleCA4NzM1OTE0YTFiMS4uYTg2MWVmOTE5MTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRNYW5pcHVsYXRpb25Db250cm9sbGVyLmgKQEAgLTE1
MSwxNCArMTUxLDE0IEBAIHByaXZhdGU6CiAgICAgfTsKIAogICAgIHN0cnVjdCBNYW5pcHVsYXRp
b25Vbml0IHsKLSAgICAgICAgVmVjdG9yPE1hbmlwdWxhdGlvblRva2VuPiB0b2tlbnM7CiAgICAg
ICAgIFJlZjxOb2RlPiBub2RlOworICAgICAgICBWZWN0b3I8TWFuaXB1bGF0aW9uVG9rZW4+IHRv
a2VuczsKICAgICAgICAgYm9vbCBhcmVBbGxUb2tlbnNFeGNsdWRlZCB7IHRydWUgfTsKLSAgICAg
ICAgYm9vbCBjb250YWluc0xpbmVCcmVhayB7IGZhbHNlIH07CiAgICAgICAgIGJvb2wgZmlyc3RU
b2tlbkNvbnRhaW5zRGVsaW1pdGVyIHsgZmFsc2UgfTsKICAgICAgICAgYm9vbCBsYXN0VG9rZW5D
b250YWluc0RlbGltaXRlciB7IGZhbHNlIH07CiAgICAgfTsKLSAgICBNYW5pcHVsYXRpb25Vbml0
IHBhcnNlKFN0cmluZ1ZpZXcsIE5vZGUqKTsKKyAgICBNYW5pcHVsYXRpb25Vbml0IGNyZWF0ZVVu
aXQoY29uc3QgVmVjdG9yPFN0cmluZz4mLCBOb2RlKik7CisgICAgdm9pZCBwYXJzZShNYW5pcHVs
YXRpb25Vbml0JiwgY29uc3QgU3RyaW5nJiwgTm9kZSopOwogCiAgICAgdm9pZCBhZGRJdGVtKE1h
bmlwdWxhdGlvbkl0ZW1EYXRhJiYpOwogICAgIHZvaWQgYWRkSXRlbUlmUG9zc2libGUoVmVjdG9y
PE1hbmlwdWxhdGlvblVuaXQ+JiYpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9v
bHMvQ2hhbmdlTG9nCmluZGV4IDIyOTc1YmI2ZDcyLi4wM2U0MmI4N2JlMiAxMDA2NDQKLS0tIGEv
VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisy
MDIwLTA2LTA4ICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIFRl
eHRNYW5pcHVsYXRpb24gc2hvdWxkIG9ubHkgY29udmVydCB0ZXh0IGZyb20gTm9kZSdzIHRleHQg
Y29udGVudCB0byB0b2tlbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxMjkyOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9UZXh0TWFuaXB1bGF0
aW9uLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisKIDIwMjAtMDYtMDYgIFBl
bmcgTGl1ICA8cGVuZy5saXU2QGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMjYy
NDU2KTogW2lPUyBEZWJ1Z10gVGVzdFdlYktpdEFQSS5XS1dlYlZpZXdDbG9zZUFsbE1lZGlhUHJl
c2VudGF0aW9ucy5QaWN0dXJlSW5QaWN0dXJlIGlzIGZyZXF1ZW50bHkgdGltaW5nIG91dApkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9UZXh0TWFuaXB1
bGF0aW9uLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9UZXh0TWFu
aXB1bGF0aW9uLm1tCmluZGV4IGE0ZDFmOWI4YjA5Li5mMjQxYzM0MWE5NyAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9UZXh0TWFuaXB1bGF0aW9uLm1t
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVGV4dE1hbmlwdWxh
dGlvbi5tbQpAQCAtMTAxOSw2ICsxMDE5LDQwIEBAIFRFU1QoVGV4dE1hbmlwdWxhdGlvbiwgQ29t
cGxldGVUZXh0TWFuaXB1bGF0aW9uRGlzZ2FyZHNUb2tlbnMpCiAgICAgRVhQRUNUX1dLX1NUUkVR
KCI8cD5oZWxsbywgPGk+V2ViS2l0PC9pPjwvcD4iLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRp
bmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQuYm9keS5pbm5lckhUTUwiXSk7CiB9CiAKK1RFU1QoVGV4
dE1hbmlwdWxhdGlvbiwgQ29tcGxldGVUZXh0TWFuaXB1bGF0aW9uUmVwbGFjZVR3b1NpbXBsZVBh
cmFncmFwaHMpCit7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tUZXh0TWFuaXB1bGF0
aW9uRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtb
VGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDQwMCwg
NDAwKV0pOworICAgIFt3ZWJWaWV3IF9zZXRUZXh0TWFuaXB1bGF0aW9uRGVsZWdhdGU6ZGVsZWdh
dGUuZ2V0KCldOworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpAIjxw
PmhlbGxvPC9wPndvcmxkIl07CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19X
S1RleHRNYW5pcHVsYXRpb25Db25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisKKyAgICBkb25l
ID0gZmFsc2U7CisgICAgW3dlYlZpZXcgX3N0YXJ0VGV4dE1hbmlwdWxhdGlvbnNXaXRoQ29uZmln
dXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpIGNvbXBsZXRpb246XnsKKyAgICAgICAgZG9uZSA9
IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKwor
ICAgIGF1dG8gKml0ZW1zID0gW2RlbGVnYXRlIGl0ZW1zXTsKKyAgICBFWFBFQ1RfRVEoaXRlbXMu
Y291bnQsIDJVTCk7CisgICAgRVhQRUNUX0VRKGl0ZW1zWzBdLnRva2Vucy5jb3VudCwgMVVMKTsK
KyAgICBFWFBFQ1RfU1RSRVEoImhlbGxvIiwgaXRlbXNbMF0udG9rZW5zWzBdLmNvbnRlbnQuVVRG
OFN0cmluZyk7CisgICAgRVhQRUNUX0VRKGl0ZW1zWzFdLnRva2Vucy5jb3VudCwgMVVMKTsKKyAg
ICBFWFBFQ1RfU1RSRVEoIndvcmxkIiwgaXRlbXNbMV0udG9rZW5zWzBdLmNvbnRlbnQuVVRGOFN0
cmluZyk7CisKKyAgICBkb25lID0gZmFsc2U7CisgICAgW3dlYlZpZXcgX2NvbXBsZXRlVGV4dE1h
bmlwdWxhdGlvbkZvckl0ZW1zOkBbCisgICAgICAgIGNyZWF0ZUl0ZW0oaXRlbXNbMF0uaWRlbnRp
Zmllciwge3sgaXRlbXNbMF0udG9rZW5zWzBdLmlkZW50aWZpZXIsIEAiSGVsbG8iIH19KS5nZXQo
KSwKKyAgICAgICAgY3JlYXRlSXRlbShpdGVtc1sxXS5pZGVudGlmaWVyLCB7eyBpdGVtc1sxXS50
b2tlbnNbMF0uaWRlbnRpZmllciwgQCJXb3JsZCIgfX0pLmdldCgpCisgICAgXSBjb21wbGV0aW9u
Ol4oTlNBcnJheTxOU0Vycm9yICo+ICplcnJvcnMpIHsKKyAgICAgICAgRVhQRUNUX0VRKGVycm9y
cywgbmlsKTsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZkb25lKTsKKworICAgIEVYUEVDVF9XS19TVFJFUSgiPHA+SGVsbG88L3A+
V29ybGQiLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQu
Ym9keS5pbm5lckhUTUwiXSk7Cit9CisKIFRFU1QoVGV4dE1hbmlwdWxhdGlvbiwgQ29tcGxldGVU
ZXh0TWFuaXB1bGF0aW9uUmVwbGFjZU11bHRpcGxlU2ltcGxlUGFyYWdyYXBocykKIHsKICAgICBh
dXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1RleHRNYW5pcHVsYXRpb25EZWxlZ2F0ZSBhbGxvY10g
aW5pdF0pOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401408</attachid>
            <date>2020-06-08 18:55:22 -0700</date>
            <delta_ts>2020-06-08 23:29:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212928-20200608185521.patch</filename>
            <type>text/plain</type>
            <size>15758</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyNzQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmU5ZmY5OWE4ZjE0NjE4
YmJlNGM5ZDhjMzM0OGQzOWU5YjgyZWE2Ni4uNzYwNGQ3ZTE1Mjc1Nzg0YzJiZjExZThkNmI3ZWY0
MTM4NWE4NGQwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIwLTA2LTA4ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIFRleHRNYW5pcHVsYXRpb24g
c2hvdWxkIG9ubHkgY29udmVydCB0ZXh0IGZyb20gTm9kZSdzIHRleHQgY29udGVudCB0byB0b2tl
bnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMjky
OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRleHRJ
dGVyYXRvciBtYXkgZW1pdCB0ZXh0IGxpa2UgbGluZSBicmVha3MgYmV0d2VlbiBub2Rlcy4gVGhp
cyBraW5kIG9mIHRleHQgaXMgZ2VuZXJhdGVkIGJhc2VkIG9uIHRoZSByYW5nZSBvZiAKKyAgICAg
ICAgVGV4dEl0ZXJhdG9yIGFuZCBzdHlsZSBvZiBub2RlLiBXZSBuZWVkIHRoaXMgdGV4dCBmb3Ig
c3BsaXR0aW5nIHRva2VucyBvciBzcGxpdHRpbmcgcGFyYWdyYXBocywgYnV0IHdlIHNob3VsZCAK
KyAgICAgICAgbm90IGNvbnZlcnQgaXQgdG8gbm9ybWFsIHRva2Vucy4gVGhpcyBpcyBiZWNhdXNl
IHRva2VucyBzaG91bGQgYmUgY3JlYXRlZCBmcm9tIGNvbnRlbnQgb2Ygbm9kZSBhbmQgdGV4dCAK
KyAgICAgICAgbWFuaXB1bGF0aW9uIGZhaWxzIGlmIGNvbnRlbnQgZG9lcyBub3QgbWF0Y2guIFRo
ZSBjaGFuZ2Ugb2YgdGhpcyBraW5kIG9mIHRleHQgZG9lcyBub3QgaW5kaWNhdGUgY2hhbmdlIGlu
IAorICAgICAgICBjb250ZW50IGFuZCB3ZSBtYXkgc3RpbGwgYmUgYWJsZSB0byBmaW5pc2ggdGV4
dCBtYW5pcHVsYXRpb24uCisKKyAgICAgICAgVGVzdDogVGV4dE1hbmlwdWxhdGlvbi5Db21wbGV0
ZVRleHRNYW5pcHVsYXRpb25SZXBsYWNlVHdvU2ltcGxlUGFyYWdyYXBocworCisgICAgICAgICog
ZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojppc0luUHJpdmF0ZVVzZUFyZWEpOgorICAgICAgICAoV2ViQ29yZTo6aXNUb2tlbkRlbGltaXRl
cik6CisgICAgICAgIChXZWJDb3JlOjpQYXJhZ3JhcGhDb250ZW50SXRlcmF0b3I6OmN1cnJlbnRD
b250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBhcmFncmFwaENvbnRlbnRJdGVyYXRvcjo6YXBw
ZW5kVG9UZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlBhcmFncmFwaENvbnRlbnRJdGVyYXRvcjo6
YWR2YW5jZUl0ZXJhdG9yTm9kZUFuZFVwZGF0ZVRleHQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6OmNyZWF0ZVVuaXQpOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6OnBhcnNlKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpvYnNlcnZlUGFyYWdyYXBocyk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6cmVwbGFjZSk6CisgICAgICAgICog
ZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5oOgorCiAyMDIwLTA2LTA4ICBQaW5r
aSBHeWFuY2hhbmRhbmkgIDxwZ3lhbmNoYW5kYW5pQGFwcGxlLmNvbT4KIAogICAgICAgICBSZWxl
YXNlIEFzc2VydCBAIFdlYkNvcmU6OlJlbmRlclRyZWVCdWlsZGVyOjpSZW5kZXJUcmVlQnVpbGRl
cgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29u
dHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRNYW5pcHVsYXRpb25Db250
cm9sbGVyLmNwcAppbmRleCAzNWZiYmVmNjhiZjQzYmZmYTQ3Yjk1ZDE4NzgyODFmODczOWIyOWE5
Li40MzQ5ZDU3NGE2NWMxYTUzZjA5MDhmNzNhOTk3NTdjNmU5NTE3NzVkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRNYW5pcHVsYXRpb25Db250cm9sbGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRNYW5pcHVsYXRpb25Db250cm9sbGVyLmNwcApA
QCAtMTQzLDYgKzE0MywxNiBAQCB2b2lkIFRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpzdGFy
dE9ic2VydmluZ1BhcmFncmFwaHMoTWFuaXB1bGF0aW9uSXRlbUNhbGxiYQogICAgIGZsdXNoUGVu
ZGluZ0l0ZW1zRm9yQ2FsbGJhY2soKTsKIH0KIAorc3RhdGljIGJvb2wgaXNJblByaXZhdGVVc2VB
cmVhKFVDaGFyIGNoYXJhY3RlcikKK3sKKyAgICByZXR1cm4gMHhFMDAwIDw9IGNoYXJhY3RlciAm
JiBjaGFyYWN0ZXIgPD0gMHhGOEZGOworfQorCitzdGF0aWMgYm9vbCBpc1Rva2VuRGVsaW1pdGVy
KFVDaGFyIGNoYXJhY3RlcikKK3sKKyAgICByZXR1cm4gaXNIVE1MTGluZUJyZWFrKGNoYXJhY3Rl
cikgfHwgaXNJblByaXZhdGVVc2VBcmVhKGNoYXJhY3Rlcik7Cit9CisKIGNsYXNzIFBhcmFncmFw
aENvbnRlbnRJdGVyYXRvciB7CiBwdWJsaWM6CiAgICAgUGFyYWdyYXBoQ29udGVudEl0ZXJhdG9y
KGNvbnN0IFBvc2l0aW9uJiBzdGFydCwgY29uc3QgUG9zaXRpb24mIGVuZCkKQEAgLTE2NiwxNCAr
MTc2LDE0IEBAIHB1YmxpYzoKIAogICAgIHN0cnVjdCBDdXJyZW50Q29udGVudCB7CiAgICAgICAg
IFJlZlB0cjxOb2RlPiBub2RlOwotICAgICAgICBTdHJpbmdWaWV3IHRleHQ7CisgICAgICAgIFZl
Y3RvcjxTdHJpbmc+IHRleHQ7CiAgICAgICAgIGJvb2wgaXNUZXh0Q29udGVudCB7IGZhbHNlIH07
CiAgICAgICAgIGJvb2wgaXNSZXBsYWNlZENvbnRlbnQgeyBmYWxzZSB9OwogICAgIH07CiAKICAg
ICBDdXJyZW50Q29udGVudCBjdXJyZW50Q29udGVudCgpCiAgICAgewotICAgICAgICBDdXJyZW50
Q29udGVudCBjb250ZW50ID0geyBtX25vZGUuY29weVJlZigpLCBtX3RleHQgPyBtX3RleHQudmFs
dWUoKSA6IFN0cmluZ1ZpZXcgeyB9LCAhIW1fdGV4dCB9OworICAgICAgICBDdXJyZW50Q29udGVu
dCBjb250ZW50ID0geyBtX25vZGUuY29weVJlZigpLCBtX3RleHQgPyBtX3RleHQudmFsdWUoKSA6
IFZlY3RvcjxTdHJpbmc+IHsgfSwgISFtX3RleHQgfTsKICAgICAgICAgaWYgKGNvbnRlbnQubm9k
ZSkgewogICAgICAgICAgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gY29udGVudC5ub2RlLT5yZW5k
ZXJlcigpKSB7CiAgICAgICAgICAgICAgICAgaWYgKHJlbmRlcmVyLT5pc1JlbmRlclJlcGxhY2Vk
KCkpIHsKQEAgLTIwMCwyNCArMjEwLDQ2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBtX25vZGUg
PSBtX3Bhc3RFbmROb2RlOwogICAgIH0KIAorICAgIHZvaWQgYXBwZW5kVG9UZXh0KFZlY3RvcjxT
dHJpbmc+JiB0ZXh0LCBTdHJpbmdCdWlsZGVyJiBzdHJpbmdCdWlsZGVyKQorICAgIHsKKyAgICAg
ICAgaWYgKCFzdHJpbmdCdWlsZGVyLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgdGV4dC5hcHBl
bmQoc3RyaW5nQnVpbGRlci50b1N0cmluZygpKTsKKyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIu
Y2xlYXIoKTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIHZvaWQgYWR2YW5jZUl0ZXJhdG9yTm9k
ZUFuZFVwZGF0ZVRleHQoKQogICAgIHsKICAgICAgICAgQVNTRVJUKHNob3VsZEFkdmFuY2VJdGVy
YXRvclBhc3RDdXJyZW50Tm9kZSgpKTsKIAogICAgICAgICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1
aWxkZXI7CisgICAgICAgIFZlY3RvcjxTdHJpbmc+IHRleHQ7CiAgICAgICAgIHdoaWxlIChzaG91
bGRBZHZhbmNlSXRlcmF0b3JQYXN0Q3VycmVudE5vZGUoKSkgewotICAgICAgICAgICAgc3RyaW5n
QnVpbGRlci5hcHBlbmQobV9pdGVyYXRvci50ZXh0KCkpOworICAgICAgICAgICAgaWYgKCFtX2l0
ZXJhdG9yLm5vZGUoKSkgeworICAgICAgICAgICAgICAgIGF1dG8gaXRlcmF0b3JUZXh0ID0gbV9p
dGVyYXRvci50ZXh0KCk7CisgICAgICAgICAgICAgICAgYm9vbCBjb250aWFuc0RlbGltaXRlciA9
IGZhbHNlOworICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8
IGl0ZXJhdG9yVGV4dC5sZW5ndGgoKSAmJiAhY29udGlhbnNEZWxpbWl0ZXI7ICsraW5kZXgpCisg
ICAgICAgICAgICAgICAgICAgIGNvbnRpYW5zRGVsaW1pdGVyID0gaXNUb2tlbkRlbGltaXRlcihp
dGVyYXRvclRleHRbaW5kZXhdKTsKKworICAgICAgICAgICAgICAgIGlmIChjb250aWFuc0RlbGlt
aXRlcikgeworICAgICAgICAgICAgICAgICAgICBhcHBlbmRUb1RleHQodGV4dCwgc3RyaW5nQnVp
bGRlcik7CisgICAgICAgICAgICAgICAgICAgIHRleHQuYXBwZW5kKHsgfSk7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmQobV9pdGVyYXRvci50ZXh0KCkpOworCiAgICAgICAgICAgICBtX2l0ZXJhdG9yLmFk
dmFuY2UoKTsKICAgICAgICAgICAgIG1faXRlcmF0b3JOb2RlID0gbV9pdGVyYXRvci5hdEVuZCgp
ID8gbnVsbHB0ciA6IGNyZWF0ZUxpdmVSYW5nZShtX2l0ZXJhdG9yLnJhbmdlKCkpLT5maXJzdE5v
ZGUoKTsKICAgICAgICAgfQotICAgICAgICBtX3RleHQgPSB7IHN0cmluZ0J1aWxkZXIudG9TdHJp
bmcoKSB9OworICAgICAgICBhcHBlbmRUb1RleHQodGV4dCwgc3RyaW5nQnVpbGRlcik7CisgICAg
ICAgIG1fdGV4dCA9IHRleHQ7CiAgICAgfQogCiAgICAgVGV4dEl0ZXJhdG9yIG1faXRlcmF0b3I7
CiAgICAgUmVmUHRyPE5vZGU+IG1faXRlcmF0b3JOb2RlOwogICAgIFJlZlB0cjxOb2RlPiBtX25v
ZGU7CiAgICAgUmVmUHRyPE5vZGU+IG1fcGFzdEVuZE5vZGU7Ci0gICAgT3B0aW9uYWw8U3RyaW5n
PiBtX3RleHQ7CisgICAgT3B0aW9uYWw8VmVjdG9yPFN0cmluZz4+IG1fdGV4dDsKIH07CiAKIHN0
YXRpYyBib29sIHNob3VsZEV4dHJhY3RWYWx1ZUZvclRleHRNYW5pcHVsYXRpb24oY29uc3QgSFRN
TElucHV0RWxlbWVudCYgaW5wdXQpCkBAIC0yOTQsMzYgKzMyNiwzNCBAQCBzdGF0aWMgYm9vbCBp
c0VuY2xvc2luZ0l0ZW1Cb3VuZGFyeUVsZW1lbnQoY29uc3QgRWxlbWVudCYgZWxlbWVudCkKICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKLXN0YXRpYyBib29sIGlzSW5Qcml2YXRlVXNlQXJlYShVQ2hh
ciBjaGFyYWN0ZXIpCi17Ci0gICAgcmV0dXJuIDB4RTAwMCA8PSBjaGFyYWN0ZXIgJiYgY2hhcmFj
dGVyIDw9IDB4RjhGRjsKLX0KLQotc3RhdGljIGJvb2wgaXNUb2tlbkRlbGltaXRlcihVQ2hhciBj
aGFyYWN0ZXIpCitUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6TWFuaXB1bGF0aW9uVW5pdCBU
ZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6Y3JlYXRlVW5pdChjb25zdCBWZWN0b3I8U3RyaW5n
PiYgdGV4dCwgTm9kZSogdGV4dE5vZGUpCiB7Ci0gICAgcmV0dXJuIGlzSFRNTExpbmVCcmVhayhj
aGFyYWN0ZXIpIHx8IGlzSW5Qcml2YXRlVXNlQXJlYShjaGFyYWN0ZXIpOworICAgIE1hbmlwdWxh
dGlvblVuaXQgdW5pdCA9IHsgKnRleHROb2RlLCB7IH0gfTsKKyAgICBmb3IgKGF1dG8mIHRleHRF
bnRyeSA6IHRleHQpIHsKKyAgICAgICAgaWYgKCF0ZXh0RW50cnkuaXNOdWxsKCkpCisgICAgICAg
ICAgICBwYXJzZSh1bml0LCB0ZXh0RW50cnksIHRleHROb2RlKTsKKyAgICAgICAgZWxzZSB7Cisg
ICAgICAgICAgICBpZiAodW5pdC50b2tlbnMuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIHVu
aXQuZmlyc3RUb2tlbkNvbnRhaW5zRGVsaW1pdGVyID0gdHJ1ZTsKKyAgICAgICAgICAgIHVuaXQu
bGFzdFRva2VuQ29udGFpbnNEZWxpbWl0ZXIgPSB0cnVlOworICAgICAgICB9CisgICAgfQorICAg
IHJldHVybiB1bml0OwogfQogCi1UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6TWFuaXB1bGF0
aW9uVW5pdCBUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6cGFyc2UoU3RyaW5nVmlldyB0ZXh0
LCBOb2RlKiB0ZXh0Tm9kZSkKK3ZvaWQgVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6OnBhcnNl
KE1hbmlwdWxhdGlvblVuaXQmIHVuaXQsIGNvbnN0IFN0cmluZyYgdGV4dCwgTm9kZSogdGV4dE5v
ZGUpCiB7Ci0gICAgVmVjdG9yPE1hbmlwdWxhdGlvblRva2VuPiB0b2tlbnM7CiAgICAgRXhjbHVz
aW9uUnVsZU1hdGNoZXIgZXhjbHVzaW9uUnVsZU1hdGNoZXIobV9leGNsdXNpb25SdWxlcyk7Cisg
ICAgYm9vbCBpc05vZGVFeGNsdWRlZCA9IGV4Y2x1c2lvblJ1bGVNYXRjaGVyLmlzRXhjbHVkZWQo
dGV4dE5vZGUpOwogICAgIHNpemVfdCBwb3NpdGlvbk9mTGFzdE5vbkhUTUxTcGFjZSA9IFdURjo6
bm90Rm91bmQ7CiAgICAgc2l6ZV90IHN0YXJ0UG9zaXRpb25PZkN1cnJlbnRUb2tlbiA9IDA7Ci0g
ICAgYm9vbCBpc05vZGVFeGNsdWRlZCA9IGV4Y2x1c2lvblJ1bGVNYXRjaGVyLmlzRXhjbHVkZWQo
dGV4dE5vZGUpOwotICAgIGJvb2wgY29udGFpbnNPbmx5SFRNTFNwYWNlID0gdHJ1ZTsKLSAgICBi
b29sIGNvbnRhaW5zVG9rZW5EZWxpbWl0ZXIgPSBmYWxzZTsKLSAgICBib29sIGZpcnN0VG9rZW5D
b250YWluc0RlbGltaXRlciA9IGZhbHNlOwotICAgIGJvb2wgbGFzdFRva2VuQ29udGFpbnNEZWxp
bWl0ZXIgPSBmYWxzZTsKLQogICAgIHNpemVfdCBpbmRleCA9IDA7CiAgICAgZm9yICg7IGluZGV4
IDwgdGV4dC5sZW5ndGgoKTsgKytpbmRleCkgewogICAgICAgICBhdXRvIGNoYXJhY3RlciA9IHRl
eHRbaW5kZXhdOwogICAgICAgICBpZiAoaXNUb2tlbkRlbGltaXRlcihjaGFyYWN0ZXIpKSB7Ci0g
ICAgICAgICAgICBjb250YWluc1Rva2VuRGVsaW1pdGVyID0gdHJ1ZTsKICAgICAgICAgICAgIGlm
IChwb3NpdGlvbk9mTGFzdE5vbkhUTUxTcGFjZSAhPSBXVEY6Om5vdEZvdW5kICYmIHN0YXJ0UG9z
aXRpb25PZkN1cnJlbnRUb2tlbiA8PSBwb3NpdGlvbk9mTGFzdE5vbkhUTUxTcGFjZSkgewotICAg
ICAgICAgICAgICAgIGF1dG8gdG9rZW5TdHJpbmcgPSB0ZXh0LnN1YnN0cmluZyhzdGFydFBvc2l0
aW9uT2ZDdXJyZW50VG9rZW4sIHBvc2l0aW9uT2ZMYXN0Tm9uSFRNTFNwYWNlICsgMSAtIHN0YXJ0
UG9zaXRpb25PZkN1cnJlbnRUb2tlbikudG9TdHJpbmcoKTsKLSAgICAgICAgICAgICAgICB0b2tl
bnMuYXBwZW5kKE1hbmlwdWxhdGlvblRva2VuIHsgbV90b2tlbklkZW50aWZpZXIuZ2VuZXJhdGUo
KSwgdG9rZW5TdHJpbmcsIHRva2VuSW5mbyh0ZXh0Tm9kZSksIGlzTm9kZUV4Y2x1ZGVkIH0pOwor
ICAgICAgICAgICAgICAgIGF1dG8gc3RyaW5nRm9yVG9rZW4gPSB0ZXh0LnN1YnN0cmluZyhzdGFy
dFBvc2l0aW9uT2ZDdXJyZW50VG9rZW4sIHBvc2l0aW9uT2ZMYXN0Tm9uSFRNTFNwYWNlICsgMSAt
IHN0YXJ0UG9zaXRpb25PZkN1cnJlbnRUb2tlbik7CisgICAgICAgICAgICAgICAgdW5pdC50b2tl
bnMuYXBwZW5kKE1hbmlwdWxhdGlvblRva2VuIHsgbV90b2tlbklkZW50aWZpZXIuZ2VuZXJhdGUo
KSwgc3RyaW5nRm9yVG9rZW4sIHRva2VuSW5mbyh0ZXh0Tm9kZSksIGlzTm9kZUV4Y2x1ZGVkIH0p
OwogICAgICAgICAgICAgICAgIHN0YXJ0UG9zaXRpb25PZkN1cnJlbnRUb2tlbiA9IHBvc2l0aW9u
T2ZMYXN0Tm9uSFRNTFNwYWNlICsgMTsKICAgICAgICAgICAgIH0KIApAQCAtMzMyLDI1ICszNjIs
MjQgQEAgVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6Ok1hbmlwdWxhdGlvblVuaXQgVGV4dE1h
bmlwdWxhdGlvbkNvbnRyb2xsZXI6OnBhcnNlKFMKIAogICAgICAgICAgICAgLS1pbmRleDsKIAot
ICAgICAgICAgICAgYXV0byBzdHJpbmdGb3JUb2tlbiA9IHRleHQuc3Vic3RyaW5nKHN0YXJ0UG9z
aXRpb25PZkN1cnJlbnRUb2tlbiwgaW5kZXggKyAxIC0gc3RhcnRQb3NpdGlvbk9mQ3VycmVudFRv
a2VuKS50b1N0cmluZygpOwotICAgICAgICAgICAgaWYgKHRva2Vucy5pc0VtcHR5KCkpCi0gICAg
ICAgICAgICAgICAgZmlyc3RUb2tlbkNvbnRhaW5zRGVsaW1pdGVyID0gdHJ1ZTsKLSAgICAgICAg
ICAgIHRva2Vucy5hcHBlbmQoTWFuaXB1bGF0aW9uVG9rZW4geyBtX3Rva2VuSWRlbnRpZmllci5n
ZW5lcmF0ZSgpLCBzdHJpbmdGb3JUb2tlbiwgdG9rZW5JbmZvKHRleHROb2RlKSwgdHJ1ZSB9KTsK
KyAgICAgICAgICAgIGF1dG8gc3RyaW5nRm9yVG9rZW4gPSB0ZXh0LnN1YnN0cmluZyhzdGFydFBv
c2l0aW9uT2ZDdXJyZW50VG9rZW4sIGluZGV4ICsgMSAtIHN0YXJ0UG9zaXRpb25PZkN1cnJlbnRU
b2tlbik7CisgICAgICAgICAgICBpZiAodW5pdC50b2tlbnMuaXNFbXB0eSgpICYmICF1bml0LmZp
cnN0VG9rZW5Db250YWluc0RlbGltaXRlcikKKyAgICAgICAgICAgICAgICB1bml0LmZpcnN0VG9r
ZW5Db250YWluc0RlbGltaXRlciA9IHRydWU7CisgICAgICAgICAgICB1bml0LnRva2Vucy5hcHBl
bmQoTWFuaXB1bGF0aW9uVG9rZW4geyBtX3Rva2VuSWRlbnRpZmllci5nZW5lcmF0ZSgpLCBzdHJp
bmdGb3JUb2tlbiwgdG9rZW5JbmZvKHRleHROb2RlKSwgdHJ1ZSB9KTsKICAgICAgICAgICAgIHN0
YXJ0UG9zaXRpb25PZkN1cnJlbnRUb2tlbiA9IGluZGV4ICsgMTsKLSAgICAgICAgICAgIGxhc3RU
b2tlbkNvbnRhaW5zRGVsaW1pdGVyID0gdHJ1ZTsKKyAgICAgICAgICAgIHVuaXQubGFzdFRva2Vu
Q29udGFpbnNEZWxpbWl0ZXIgPSB0cnVlOwogICAgICAgICB9IGVsc2UgaWYgKGlzTm90SFRNTFNw
YWNlKGNoYXJhY3RlcikpIHsKLSAgICAgICAgICAgIGNvbnRhaW5zT25seUhUTUxTcGFjZSA9IGZh
bHNlOworICAgICAgICAgICAgaWYgKCFpc05vZGVFeGNsdWRlZCkKKyAgICAgICAgICAgICAgICB1
bml0LmFyZUFsbFRva2Vuc0V4Y2x1ZGVkID0gZmFsc2U7CiAgICAgICAgICAgICBwb3NpdGlvbk9m
TGFzdE5vbkhUTUxTcGFjZSA9IGluZGV4OwogICAgICAgICB9CiAgICAgfQogCiAgICAgaWYgKHN0
YXJ0UG9zaXRpb25PZkN1cnJlbnRUb2tlbiA8IHRleHQubGVuZ3RoKCkpIHsKLSAgICAgICAgYXV0
byB0b2tlblN0cmluZyA9IHRleHQuc3Vic3RyaW5nKHN0YXJ0UG9zaXRpb25PZkN1cnJlbnRUb2tl
biwgaW5kZXggKyAxIC0gc3RhcnRQb3NpdGlvbk9mQ3VycmVudFRva2VuKS50b1N0cmluZygpOwot
ICAgICAgICB0b2tlbnMuYXBwZW5kKE1hbmlwdWxhdGlvblRva2VuIHsgbV90b2tlbklkZW50aWZp
ZXIuZ2VuZXJhdGUoKSwgdG9rZW5TdHJpbmcsIHRva2VuSW5mbyh0ZXh0Tm9kZSksIGlzTm9kZUV4
Y2x1ZGVkIH0pOwotICAgICAgICBsYXN0VG9rZW5Db250YWluc0RlbGltaXRlciA9IGZhbHNlOwor
ICAgICAgICBhdXRvIHN0cmluZ0ZvclRva2VuID0gdGV4dC5zdWJzdHJpbmcoc3RhcnRQb3NpdGlv
bk9mQ3VycmVudFRva2VuLCBpbmRleCArIDEgLSBzdGFydFBvc2l0aW9uT2ZDdXJyZW50VG9rZW4p
OworICAgICAgICB1bml0LnRva2Vucy5hcHBlbmQoTWFuaXB1bGF0aW9uVG9rZW4geyBtX3Rva2Vu
SWRlbnRpZmllci5nZW5lcmF0ZSgpLCBzdHJpbmdGb3JUb2tlbiwgdG9rZW5JbmZvKHRleHROb2Rl
KSwgaXNOb2RlRXhjbHVkZWQgfSk7CisgICAgICAgIHVuaXQubGFzdFRva2VuQ29udGFpbnNEZWxp
bWl0ZXIgPSBmYWxzZTsKICAgICB9Ci0KLSAgICByZXR1cm4geyBXVEZNb3ZlKHRva2VucyksICp0
ZXh0Tm9kZSwgY29udGFpbnNPbmx5SFRNTFNwYWNlIHx8IGlzTm9kZUV4Y2x1ZGVkLCBjb250YWlu
c1Rva2VuRGVsaW1pdGVyLCBmaXJzdFRva2VuQ29udGFpbnNEZWxpbWl0ZXIsIGxhc3RUb2tlbkNv
bnRhaW5zRGVsaW1pdGVyIH07CiB9CiAKIHZvaWQgVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6
OmFkZEl0ZW1JZlBvc3NpYmxlKFZlY3RvcjxNYW5pcHVsYXRpb25Vbml0PiYmIHVuaXRzKQpAQCAt
NDMyLDIzICs0NjEsMjQgQEAgdm9pZCBUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6b2JzZXJ2
ZVBhcmFncmFwaHMoY29uc3QgUG9zaXRpb24mIHN0YXJ0LCBjb25zdAogCiAgICAgICAgIGlmIChj
b250ZW50LmlzUmVwbGFjZWRDb250ZW50KSB7CiAgICAgICAgICAgICBpZiAoIXVuaXRzSW5DdXJy
ZW50UGFyYWdyYXBoLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICB1bml0c0luQ3VycmVudFBh
cmFncmFwaC5hcHBlbmQoTWFuaXB1bGF0aW9uVW5pdCB7IHsgTWFuaXB1bGF0aW9uVG9rZW4geyBt
X3Rva2VuSWRlbnRpZmllci5nZW5lcmF0ZSgpLCAiW10iLCB0b2tlbkluZm8oY29udGVudC5ub2Rl
LmdldCgpKSwgdHJ1ZSB9IH0sICpjb250ZW50Tm9kZSB9KTsKKyAgICAgICAgICAgICAgICB1bml0
c0luQ3VycmVudFBhcmFncmFwaC5hcHBlbmQoTWFuaXB1bGF0aW9uVW5pdCB7ICpjb250ZW50Tm9k
ZSwgeyBNYW5pcHVsYXRpb25Ub2tlbiB7IG1fdG9rZW5JZGVudGlmaWVyLmdlbmVyYXRlKCksICJb
XSIsIHRva2VuSW5mbyhjb250ZW50Lm5vZGUuZ2V0KCkpLCB0cnVlIH0gfSB9KTsKICAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKCFjb250ZW50LmlzVGV4dENv
bnRlbnQpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBhdXRvIHVuaXRzSW5DdXJy
ZW50Tm9kZSA9IHBhcnNlKGNvbnRlbnQudGV4dCwgY29udGVudE5vZGUpOwotICAgICAgICBpZiAo
dW5pdHNJbkN1cnJlbnROb2RlLmZpcnN0VG9rZW5Db250YWluc0RlbGltaXRlcikKKyAgICAgICAg
YXV0byBjdXJyZW50VW5pdCA9IGNyZWF0ZVVuaXQoY29udGVudC50ZXh0LCBjb250ZW50Tm9kZSk7
CisgICAgICAgIGlmIChjdXJyZW50VW5pdC5maXJzdFRva2VuQ29udGFpbnNEZWxpbWl0ZXIpCiAg
ICAgICAgICAgICBhZGRJdGVtSWZQb3NzaWJsZShzdGQ6OmV4Y2hhbmdlKHVuaXRzSW5DdXJyZW50
UGFyYWdyYXBoLCB7IH0pKTsKIAotICAgICAgICBpZiAodW5pdHNJbkN1cnJlbnRQYXJhZ3JhcGgu
aXNFbXB0eSgpICYmIHVuaXRzSW5DdXJyZW50Tm9kZS5hcmVBbGxUb2tlbnNFeGNsdWRlZCkKLSAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKHVuaXRzSW5DdXJyZW50UGFyYWdy
YXBoLmlzRW1wdHkoKSAmJiBjdXJyZW50VW5pdC5hcmVBbGxUb2tlbnNFeGNsdWRlZCkKKyAgICAg
ICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIHVuaXRzSW5DdXJyZW50UGFyYWdyYXBoLmFwcGVu
ZChXVEZNb3ZlKHVuaXRzSW5DdXJyZW50Tm9kZSkpOworICAgICAgICBib29sIGN1cnJlbnRVbml0
RW5kc1dpdGhEZWxpbWl0ZXIgPSBjdXJyZW50VW5pdC5sYXN0VG9rZW5Db250YWluc0RlbGltaXRl
cjsKKyAgICAgICAgdW5pdHNJbkN1cnJlbnRQYXJhZ3JhcGguYXBwZW5kKFdURk1vdmUoY3VycmVu
dFVuaXQpKTsKIAotICAgICAgICBpZiAodW5pdHNJbkN1cnJlbnROb2RlLmxhc3RUb2tlbkNvbnRh
aW5zRGVsaW1pdGVyKQorICAgICAgICBpZiAoY3VycmVudFVuaXRFbmRzV2l0aERlbGltaXRlcikK
ICAgICAgICAgICAgIGFkZEl0ZW1JZlBvc3NpYmxlKHN0ZDo6ZXhjaGFuZ2UodW5pdHNJbkN1cnJl
bnRQYXJhZ3JhcGgsIHsgfSkpOwogICAgIH0KIApAQCAtNjgwLDcgKzcxMCw3IEBAIGF1dG8gVGV4
dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6OnJlcGxhY2UoY29uc3QgTWFuaXB1bGF0aW9uSXRlbURh
dGEmIGl0ZW0sIGNvbnN0CiAKICAgICAgICAgICAgIHRva2Vuc0luQ3VycmVudE5vZGUuYXBwZW5k
KGl0ZW0udG9rZW5zW2N1cnJlbnRUb2tlbkluZGV4XSk7CiAgICAgICAgIH0gZWxzZQotICAgICAg
ICAgICAgdG9rZW5zSW5DdXJyZW50Tm9kZSA9IHBhcnNlKGNvbnRlbnQudGV4dCwgY29udGVudC5u
b2RlLmdldCgpKS50b2tlbnM7CisgICAgICAgICAgICB0b2tlbnNJbkN1cnJlbnROb2RlID0gY3Jl
YXRlVW5pdChjb250ZW50LnRleHQsIGNvbnRlbnQubm9kZS5nZXQoKSkudG9rZW5zOwogCiAgICAg
ICAgIGJvb2wgaXNOb2RlSW5jbHVkZWQgPSBXVEY6OmFueU9mKHRva2Vuc0luQ3VycmVudE5vZGUs
IFtdIChhdXRvJiB0b2tlbikgewogICAgICAgICAgICAgcmV0dXJuICF0b2tlbi5pc0V4Y2x1ZGVk
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29u
dHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJv
bGxlci5oCmluZGV4IDg3MzU5MTRhMWIxMGUzNTIxNDI1N2NiZjMzNjYwNDRmNzAxN2QwZmYuLmE4
NjFlZjkxOTEzZmU4NWE1NWI3OWQwODZhZDJmMDY3N2FiYWEzNjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1RleHRNYW5pcHVsYXRpb25Db250cm9sbGVyLmgKQEAgLTE1MSwx
NCArMTUxLDE0IEBAIHByaXZhdGU6CiAgICAgfTsKIAogICAgIHN0cnVjdCBNYW5pcHVsYXRpb25V
bml0IHsKLSAgICAgICAgVmVjdG9yPE1hbmlwdWxhdGlvblRva2VuPiB0b2tlbnM7CiAgICAgICAg
IFJlZjxOb2RlPiBub2RlOworICAgICAgICBWZWN0b3I8TWFuaXB1bGF0aW9uVG9rZW4+IHRva2Vu
czsKICAgICAgICAgYm9vbCBhcmVBbGxUb2tlbnNFeGNsdWRlZCB7IHRydWUgfTsKLSAgICAgICAg
Ym9vbCBjb250YWluc0xpbmVCcmVhayB7IGZhbHNlIH07CiAgICAgICAgIGJvb2wgZmlyc3RUb2tl
bkNvbnRhaW5zRGVsaW1pdGVyIHsgZmFsc2UgfTsKICAgICAgICAgYm9vbCBsYXN0VG9rZW5Db250
YWluc0RlbGltaXRlciB7IGZhbHNlIH07CiAgICAgfTsKLSAgICBNYW5pcHVsYXRpb25Vbml0IHBh
cnNlKFN0cmluZ1ZpZXcsIE5vZGUqKTsKKyAgICBNYW5pcHVsYXRpb25Vbml0IGNyZWF0ZVVuaXQo
Y29uc3QgVmVjdG9yPFN0cmluZz4mLCBOb2RlKik7CisgICAgdm9pZCBwYXJzZShNYW5pcHVsYXRp
b25Vbml0JiwgY29uc3QgU3RyaW5nJiwgTm9kZSopOwogCiAgICAgdm9pZCBhZGRJdGVtKE1hbmlw
dWxhdGlvbkl0ZW1EYXRhJiYpOwogICAgIHZvaWQgYWRkSXRlbUlmUG9zc2libGUoVmVjdG9yPE1h
bmlwdWxhdGlvblVuaXQ+JiYpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMv
Q2hhbmdlTG9nCmluZGV4IDc3M2QyOWQ5YzJhM2E1OGRiMjNjMTMwMDMxNTZjOWE5Y2U0MjFhZTAu
LjIxY2Y1NzM1Mzk5YjU4YTFjNDI5MzA4ZTQyZDc5N2E3ZjBlMjM5NWUgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAy
MC0wNi0wOCAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAgICBUZXh0
TWFuaXB1bGF0aW9uIHNob3VsZCBvbmx5IGNvbnZlcnQgdGV4dCBmcm9tIE5vZGUncyB0ZXh0IGNv
bnRlbnQgdG8gdG9rZW5zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMTI5MjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVGV4dE1hbmlwdWxhdGlv
bi5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorCiAyMDIwLTA2LTA4ICBTYW0g
V2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggdGVzdCByZXN1bHRzIGFm
dGVyIHIyNjI3MzMuCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1RleHRNYW5pcHVsYXRpb24ubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1RleHRNYW5pcHVsYXRpb24ubW0KaW5kZXggYTRkMWY5YjhiMDk4ZWY4ZDNkN2Nh
ZTgyOWM4NjM5ZWYxZjU0Y2FlNy4uZjI0MWMzNDFhOTdiZDRkNDAzZWRjZjhhOTA2NGVmMzdiMGEw
MWU3NCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9U
ZXh0TWFuaXB1bGF0aW9uLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvVGV4dE1hbmlwdWxhdGlvbi5tbQpAQCAtMTAxOSw2ICsxMDE5LDQwIEBAIFRFU1QoVGV4
dE1hbmlwdWxhdGlvbiwgQ29tcGxldGVUZXh0TWFuaXB1bGF0aW9uRGlzZ2FyZHNUb2tlbnMpCiAg
ICAgRVhQRUNUX1dLX1NUUkVRKCI8cD5oZWxsbywgPGk+V2ViS2l0PC9pPjwvcD4iLCBbd2ViVmll
dyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQuYm9keS5pbm5lckhUTUwi
XSk7CiB9CiAKK1RFU1QoVGV4dE1hbmlwdWxhdGlvbiwgQ29tcGxldGVUZXh0TWFuaXB1bGF0aW9u
UmVwbGFjZVR3b1NpbXBsZVBhcmFncmFwaHMpCit7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0
TlMoW1tUZXh0TWFuaXB1bGF0aW9uRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICBhdXRvIHdl
YlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01h
a2VSZWN0KDAsIDAsIDQwMCwgNDAwKV0pOworICAgIFt3ZWJWaWV3IF9zZXRUZXh0TWFuaXB1bGF0
aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlM
b2FkSFRNTFN0cmluZzpAIjxwPmhlbGxvPC9wPndvcmxkIl07CisgICAgYXV0byBjb25maWd1cmF0
aW9uID0gYWRvcHROUyhbW19XS1RleHRNYW5pcHVsYXRpb25Db25maWd1cmF0aW9uIGFsbG9jXSBp
bml0XSk7CisKKyAgICBkb25lID0gZmFsc2U7CisgICAgW3dlYlZpZXcgX3N0YXJ0VGV4dE1hbmlw
dWxhdGlvbnNXaXRoQ29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpIGNvbXBsZXRpb246
XnsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRp
bDo6cnVuKCZkb25lKTsKKworICAgIGF1dG8gKml0ZW1zID0gW2RlbGVnYXRlIGl0ZW1zXTsKKyAg
ICBFWFBFQ1RfRVEoaXRlbXMuY291bnQsIDJVTCk7CisgICAgRVhQRUNUX0VRKGl0ZW1zWzBdLnRv
a2Vucy5jb3VudCwgMVVMKTsKKyAgICBFWFBFQ1RfU1RSRVEoImhlbGxvIiwgaXRlbXNbMF0udG9r
ZW5zWzBdLmNvbnRlbnQuVVRGOFN0cmluZyk7CisgICAgRVhQRUNUX0VRKGl0ZW1zWzFdLnRva2Vu
cy5jb3VudCwgMVVMKTsKKyAgICBFWFBFQ1RfU1RSRVEoIndvcmxkIiwgaXRlbXNbMV0udG9rZW5z
WzBdLmNvbnRlbnQuVVRGOFN0cmluZyk7CisKKyAgICBkb25lID0gZmFsc2U7CisgICAgW3dlYlZp
ZXcgX2NvbXBsZXRlVGV4dE1hbmlwdWxhdGlvbkZvckl0ZW1zOkBbCisgICAgICAgIGNyZWF0ZUl0
ZW0oaXRlbXNbMF0uaWRlbnRpZmllciwge3sgaXRlbXNbMF0udG9rZW5zWzBdLmlkZW50aWZpZXIs
IEAiSGVsbG8iIH19KS5nZXQoKSwKKyAgICAgICAgY3JlYXRlSXRlbShpdGVtc1sxXS5pZGVudGlm
aWVyLCB7eyBpdGVtc1sxXS50b2tlbnNbMF0uaWRlbnRpZmllciwgQCJXb3JsZCIgfX0pLmdldCgp
CisgICAgXSBjb21wbGV0aW9uOl4oTlNBcnJheTxOU0Vycm9yICo+ICplcnJvcnMpIHsKKyAgICAg
ICAgRVhQRUNUX0VRKGVycm9ycywgbmlsKTsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07
CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKworICAgIEVYUEVDVF9XS19T
VFJFUSgiPHA+SGVsbG88L3A+V29ybGQiLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZh
U2NyaXB0OkAiZG9jdW1lbnQuYm9keS5pbm5lckhUTUwiXSk7Cit9CisKIFRFU1QoVGV4dE1hbmlw
dWxhdGlvbiwgQ29tcGxldGVUZXh0TWFuaXB1bGF0aW9uUmVwbGFjZU11bHRpcGxlU2ltcGxlUGFy
YWdyYXBocykKIHsKICAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1RleHRNYW5pcHVsYXRp
b25EZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401419</attachid>
            <date>2020-06-08 23:29:56 -0700</date>
            <delta_ts>2020-06-08 23:54:26 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-212928-20200608232955.patch</filename>
            <type>text/plain</type>
            <size>15753</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyNzQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmU5ZmY5OWE4ZjE0NjE4
YmJlNGM5ZDhjMzM0OGQzOWU5YjgyZWE2Ni4uZjk2NDY1OWI4OTU1Njk3YzRmYTZiNDk1ZWFmNmM2
ZWE3YTkxNDAxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIwLTA2LTA4ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIFRleHRNYW5pcHVsYXRpb24g
c2hvdWxkIG9ubHkgY29udmVydCB0ZXh0IGZyb20gTm9kZSdzIHRleHQgY29udGVudCB0byB0b2tl
bnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMjky
OAorCisgICAgICAgIFJldmlld2VkIGJ5IFdlbnNvbiBIc2llaC4KKworICAgICAgICBUZXh0SXRl
cmF0b3IgbWF5IGVtaXQgdGV4dCBsaWtlIGxpbmUgYnJlYWtzIGJldHdlZW4gbm9kZXMuIFRoaXMg
a2luZCBvZiB0ZXh0IGlzIGdlbmVyYXRlZCBiYXNlZCBvbiB0aGUgcmFuZ2Ugb2YgCisgICAgICAg
IFRleHRJdGVyYXRvciBhbmQgc3R5bGUgb2Ygbm9kZS4gV2UgbmVlZCB0aGlzIHRleHQgZm9yIHNw
bGl0dGluZyB0b2tlbnMgb3Igc3BsaXR0aW5nIHBhcmFncmFwaHMsIGJ1dCB3ZSBzaG91bGQgCisg
ICAgICAgIG5vdCBjb252ZXJ0IGl0IHRvIG5vcm1hbCB0b2tlbnMuIFRoaXMgaXMgYmVjYXVzZSB0
b2tlbnMgc2hvdWxkIGJlIGNyZWF0ZWQgZnJvbSBjb250ZW50IG9mIG5vZGUgYW5kIHRleHQgCisg
ICAgICAgIG1hbmlwdWxhdGlvbiBmYWlscyBpZiBjb250ZW50IGRvZXMgbm90IG1hdGNoLiBUaGUg
Y2hhbmdlIG9mIHRoaXMga2luZCBvZiB0ZXh0IGRvZXMgbm90IGluZGljYXRlIGNoYW5nZSBpbiAK
KyAgICAgICAgY29udGVudCBhbmQgd2UgbWF5IHN0aWxsIGJlIGFibGUgdG8gZmluaXNoIHRleHQg
bWFuaXB1bGF0aW9uLgorCisgICAgICAgIFRlc3Q6IFRleHRNYW5pcHVsYXRpb24uQ29tcGxldGVU
ZXh0TWFuaXB1bGF0aW9uUmVwbGFjZVR3b1NpbXBsZVBhcmFncmFwaHMKKworICAgICAgICAqIGVk
aXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
aXNJblByaXZhdGVVc2VBcmVhKToKKyAgICAgICAgKFdlYkNvcmU6OmlzVG9rZW5EZWxpbWl0ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6UGFyYWdyYXBoQ29udGVudEl0ZXJhdG9yOjpjdXJyZW50Q29u
dGVudCk6CisgICAgICAgIChXZWJDb3JlOjpQYXJhZ3JhcGhDb250ZW50SXRlcmF0b3I6OmFwcGVu
ZFRvVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpQYXJhZ3JhcGhDb250ZW50SXRlcmF0b3I6OmFk
dmFuY2VJdGVyYXRvck5vZGVBbmRVcGRhdGVUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRN
YW5pcHVsYXRpb25Db250cm9sbGVyOjpjcmVhdGVVbml0KToKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpwYXJzZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6b2JzZXJ2ZVBhcmFncmFwaHMpOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6OnJlcGxhY2UpOgorICAgICAgICAqIGVk
aXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuaDoKKwogMjAyMC0wNi0wOCAgUGlua2kg
R3lhbmNoYW5kYW5pICA8cGd5YW5jaGFuZGFuaUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVsZWFz
ZSBBc3NlcnQgQCBXZWJDb3JlOjpSZW5kZXJUcmVlQnVpbGRlcjo6UmVuZGVyVHJlZUJ1aWxkZXIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRy
b2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJv
bGxlci5jcHAKaW5kZXggMzVmYmJlZjY4YmY0M2JmZmE0N2I5NWQxODc4MjgxZjg3MzliMjlhOS4u
YTJiMjAwMmM2MTI5NGFlOTU5ODc1ODdhNmI3NmJhNWRmNDIyMTJjOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5jcHAKQEAg
LTE0Myw2ICsxNDMsMTYgQEAgdm9pZCBUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6c3RhcnRP
YnNlcnZpbmdQYXJhZ3JhcGhzKE1hbmlwdWxhdGlvbkl0ZW1DYWxsYmEKICAgICBmbHVzaFBlbmRp
bmdJdGVtc0ZvckNhbGxiYWNrKCk7CiB9CiAKK3N0YXRpYyBib29sIGlzSW5Qcml2YXRlVXNlQXJl
YShVQ2hhciBjaGFyYWN0ZXIpCit7CisgICAgcmV0dXJuIDB4RTAwMCA8PSBjaGFyYWN0ZXIgJiYg
Y2hhcmFjdGVyIDw9IDB4RjhGRjsKK30KKworc3RhdGljIGJvb2wgaXNUb2tlbkRlbGltaXRlcihV
Q2hhciBjaGFyYWN0ZXIpCit7CisgICAgcmV0dXJuIGlzSFRNTExpbmVCcmVhayhjaGFyYWN0ZXIp
IHx8IGlzSW5Qcml2YXRlVXNlQXJlYShjaGFyYWN0ZXIpOworfQorCiBjbGFzcyBQYXJhZ3JhcGhD
b250ZW50SXRlcmF0b3IgewogcHVibGljOgogICAgIFBhcmFncmFwaENvbnRlbnRJdGVyYXRvcihj
b25zdCBQb3NpdGlvbiYgc3RhcnQsIGNvbnN0IFBvc2l0aW9uJiBlbmQpCkBAIC0xNjYsMTQgKzE3
NiwxNCBAQCBwdWJsaWM6CiAKICAgICBzdHJ1Y3QgQ3VycmVudENvbnRlbnQgewogICAgICAgICBS
ZWZQdHI8Tm9kZT4gbm9kZTsKLSAgICAgICAgU3RyaW5nVmlldyB0ZXh0OworICAgICAgICBWZWN0
b3I8U3RyaW5nPiB0ZXh0OwogICAgICAgICBib29sIGlzVGV4dENvbnRlbnQgeyBmYWxzZSB9Owog
ICAgICAgICBib29sIGlzUmVwbGFjZWRDb250ZW50IHsgZmFsc2UgfTsKICAgICB9OwogCiAgICAg
Q3VycmVudENvbnRlbnQgY3VycmVudENvbnRlbnQoKQogICAgIHsKLSAgICAgICAgQ3VycmVudENv
bnRlbnQgY29udGVudCA9IHsgbV9ub2RlLmNvcHlSZWYoKSwgbV90ZXh0ID8gbV90ZXh0LnZhbHVl
KCkgOiBTdHJpbmdWaWV3IHsgfSwgISFtX3RleHQgfTsKKyAgICAgICAgQ3VycmVudENvbnRlbnQg
Y29udGVudCA9IHsgbV9ub2RlLmNvcHlSZWYoKSwgbV90ZXh0ID8gbV90ZXh0LnZhbHVlKCkgOiBW
ZWN0b3I8U3RyaW5nPiB7IH0sICEhbV90ZXh0IH07CiAgICAgICAgIGlmIChjb250ZW50Lm5vZGUp
IHsKICAgICAgICAgICAgIGlmIChhdXRvKiByZW5kZXJlciA9IGNvbnRlbnQubm9kZS0+cmVuZGVy
ZXIoKSkgewogICAgICAgICAgICAgICAgIGlmIChyZW5kZXJlci0+aXNSZW5kZXJSZXBsYWNlZCgp
KSB7CkBAIC0yMDAsMjQgKzIxMCw0NiBAQCBwcml2YXRlOgogICAgICAgICAgICAgbV9ub2RlID0g
bV9wYXN0RW5kTm9kZTsKICAgICB9CiAKKyAgICB2b2lkIGFwcGVuZFRvVGV4dChWZWN0b3I8U3Ry
aW5nPiYgdGV4dCwgU3RyaW5nQnVpbGRlciYgc3RyaW5nQnVpbGRlcikKKyAgICB7CisgICAgICAg
IGlmICghc3RyaW5nQnVpbGRlci5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIHRleHQuYXBwZW5k
KHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKSk7CisgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmNs
ZWFyKCk7CisgICAgICAgIH0KKyAgICB9CisKICAgICB2b2lkIGFkdmFuY2VJdGVyYXRvck5vZGVB
bmRVcGRhdGVUZXh0KCkKICAgICB7CiAgICAgICAgIEFTU0VSVChzaG91bGRBZHZhbmNlSXRlcmF0
b3JQYXN0Q3VycmVudE5vZGUoKSk7CiAKICAgICAgICAgU3RyaW5nQnVpbGRlciBzdHJpbmdCdWls
ZGVyOworICAgICAgICBWZWN0b3I8U3RyaW5nPiB0ZXh0OwogICAgICAgICB3aGlsZSAoc2hvdWxk
QWR2YW5jZUl0ZXJhdG9yUGFzdEN1cnJlbnROb2RlKCkpIHsKLSAgICAgICAgICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kKG1faXRlcmF0b3IudGV4dCgpKTsKKyAgICAgICAgICAgIGlmICghbV9pdGVy
YXRvci5ub2RlKCkpIHsKKyAgICAgICAgICAgICAgICBhdXRvIGl0ZXJhdG9yVGV4dCA9IG1faXRl
cmF0b3IudGV4dCgpOworICAgICAgICAgICAgICAgIGJvb2wgY29udGFpbnNEZWxpbWl0ZXIgPSBm
YWxzZTsKKyAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCBp
dGVyYXRvclRleHQubGVuZ3RoKCkgJiYgIWNvbnRhaW5zRGVsaW1pdGVyOyArK2luZGV4KQorICAg
ICAgICAgICAgICAgICAgICBjb250YWluc0RlbGltaXRlciA9IGlzVG9rZW5EZWxpbWl0ZXIoaXRl
cmF0b3JUZXh0W2luZGV4XSk7CisKKyAgICAgICAgICAgICAgICBpZiAoY29udGFpbnNEZWxpbWl0
ZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgYXBwZW5kVG9UZXh0KHRleHQsIHN0cmluZ0J1aWxk
ZXIpOworICAgICAgICAgICAgICAgICAgICB0ZXh0LmFwcGVuZCh7IH0pOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIu
YXBwZW5kKG1faXRlcmF0b3IudGV4dCgpKTsKKwogICAgICAgICAgICAgbV9pdGVyYXRvci5hZHZh
bmNlKCk7CiAgICAgICAgICAgICBtX2l0ZXJhdG9yTm9kZSA9IG1faXRlcmF0b3IuYXRFbmQoKSA/
IG51bGxwdHIgOiBjcmVhdGVMaXZlUmFuZ2UobV9pdGVyYXRvci5yYW5nZSgpKS0+Zmlyc3ROb2Rl
KCk7CiAgICAgICAgIH0KLSAgICAgICAgbV90ZXh0ID0geyBzdHJpbmdCdWlsZGVyLnRvU3RyaW5n
KCkgfTsKKyAgICAgICAgYXBwZW5kVG9UZXh0KHRleHQsIHN0cmluZ0J1aWxkZXIpOworICAgICAg
ICBtX3RleHQgPSB0ZXh0OwogICAgIH0KIAogICAgIFRleHRJdGVyYXRvciBtX2l0ZXJhdG9yOwog
ICAgIFJlZlB0cjxOb2RlPiBtX2l0ZXJhdG9yTm9kZTsKICAgICBSZWZQdHI8Tm9kZT4gbV9ub2Rl
OwogICAgIFJlZlB0cjxOb2RlPiBtX3Bhc3RFbmROb2RlOwotICAgIE9wdGlvbmFsPFN0cmluZz4g
bV90ZXh0OworICAgIE9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBtX3RleHQ7CiB9OwogCiBzdGF0
aWMgYm9vbCBzaG91bGRFeHRyYWN0VmFsdWVGb3JUZXh0TWFuaXB1bGF0aW9uKGNvbnN0IEhUTUxJ
bnB1dEVsZW1lbnQmIGlucHV0KQpAQCAtMjk0LDM2ICszMjYsMzQgQEAgc3RhdGljIGJvb2wgaXNF
bmNsb3NpbmdJdGVtQm91bmRhcnlFbGVtZW50KGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpCiAgICAg
cmV0dXJuIGZhbHNlOwogfQogCi1zdGF0aWMgYm9vbCBpc0luUHJpdmF0ZVVzZUFyZWEoVUNoYXIg
Y2hhcmFjdGVyKQotewotICAgIHJldHVybiAweEUwMDAgPD0gY2hhcmFjdGVyICYmIGNoYXJhY3Rl
ciA8PSAweEY4RkY7Ci19Ci0KLXN0YXRpYyBib29sIGlzVG9rZW5EZWxpbWl0ZXIoVUNoYXIgY2hh
cmFjdGVyKQorVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6Ok1hbmlwdWxhdGlvblVuaXQgVGV4
dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6OmNyZWF0ZVVuaXQoY29uc3QgVmVjdG9yPFN0cmluZz4m
IHRleHQsIE5vZGUmIHRleHROb2RlKQogewotICAgIHJldHVybiBpc0hUTUxMaW5lQnJlYWsoY2hh
cmFjdGVyKSB8fCBpc0luUHJpdmF0ZVVzZUFyZWEoY2hhcmFjdGVyKTsKKyAgICBNYW5pcHVsYXRp
b25Vbml0IHVuaXQgPSB7IHRleHROb2RlLCB7IH0gfTsKKyAgICBmb3IgKGF1dG8mIHRleHRFbnRy
eSA6IHRleHQpIHsKKyAgICAgICAgaWYgKCF0ZXh0RW50cnkuaXNOdWxsKCkpCisgICAgICAgICAg
ICBwYXJzZSh1bml0LCB0ZXh0RW50cnksIHRleHROb2RlKTsKKyAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICBpZiAodW5pdC50b2tlbnMuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIHVuaXQu
Zmlyc3RUb2tlbkNvbnRhaW5zRGVsaW1pdGVyID0gdHJ1ZTsKKyAgICAgICAgICAgIHVuaXQubGFz
dFRva2VuQ29udGFpbnNEZWxpbWl0ZXIgPSB0cnVlOworICAgICAgICB9CisgICAgfQorICAgIHJl
dHVybiB1bml0OwogfQogCi1UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6TWFuaXB1bGF0aW9u
VW5pdCBUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6cGFyc2UoU3RyaW5nVmlldyB0ZXh0LCBO
b2RlKiB0ZXh0Tm9kZSkKK3ZvaWQgVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6OnBhcnNlKE1h
bmlwdWxhdGlvblVuaXQmIHVuaXQsIGNvbnN0IFN0cmluZyYgdGV4dCwgTm9kZSYgdGV4dE5vZGUp
CiB7Ci0gICAgVmVjdG9yPE1hbmlwdWxhdGlvblRva2VuPiB0b2tlbnM7CiAgICAgRXhjbHVzaW9u
UnVsZU1hdGNoZXIgZXhjbHVzaW9uUnVsZU1hdGNoZXIobV9leGNsdXNpb25SdWxlcyk7CisgICAg
Ym9vbCBpc05vZGVFeGNsdWRlZCA9IGV4Y2x1c2lvblJ1bGVNYXRjaGVyLmlzRXhjbHVkZWQoJnRl
eHROb2RlKTsKICAgICBzaXplX3QgcG9zaXRpb25PZkxhc3ROb25IVE1MU3BhY2UgPSBXVEY6Om5v
dEZvdW5kOwogICAgIHNpemVfdCBzdGFydFBvc2l0aW9uT2ZDdXJyZW50VG9rZW4gPSAwOwotICAg
IGJvb2wgaXNOb2RlRXhjbHVkZWQgPSBleGNsdXNpb25SdWxlTWF0Y2hlci5pc0V4Y2x1ZGVkKHRl
eHROb2RlKTsKLSAgICBib29sIGNvbnRhaW5zT25seUhUTUxTcGFjZSA9IHRydWU7Ci0gICAgYm9v
bCBjb250YWluc1Rva2VuRGVsaW1pdGVyID0gZmFsc2U7Ci0gICAgYm9vbCBmaXJzdFRva2VuQ29u
dGFpbnNEZWxpbWl0ZXIgPSBmYWxzZTsKLSAgICBib29sIGxhc3RUb2tlbkNvbnRhaW5zRGVsaW1p
dGVyID0gZmFsc2U7Ci0KICAgICBzaXplX3QgaW5kZXggPSAwOwogICAgIGZvciAoOyBpbmRleCA8
IHRleHQubGVuZ3RoKCk7ICsraW5kZXgpIHsKICAgICAgICAgYXV0byBjaGFyYWN0ZXIgPSB0ZXh0
W2luZGV4XTsKICAgICAgICAgaWYgKGlzVG9rZW5EZWxpbWl0ZXIoY2hhcmFjdGVyKSkgewotICAg
ICAgICAgICAgY29udGFpbnNUb2tlbkRlbGltaXRlciA9IHRydWU7CiAgICAgICAgICAgICBpZiAo
cG9zaXRpb25PZkxhc3ROb25IVE1MU3BhY2UgIT0gV1RGOjpub3RGb3VuZCAmJiBzdGFydFBvc2l0
aW9uT2ZDdXJyZW50VG9rZW4gPD0gcG9zaXRpb25PZkxhc3ROb25IVE1MU3BhY2UpIHsKLSAgICAg
ICAgICAgICAgICBhdXRvIHRva2VuU3RyaW5nID0gdGV4dC5zdWJzdHJpbmcoc3RhcnRQb3NpdGlv
bk9mQ3VycmVudFRva2VuLCBwb3NpdGlvbk9mTGFzdE5vbkhUTUxTcGFjZSArIDEgLSBzdGFydFBv
c2l0aW9uT2ZDdXJyZW50VG9rZW4pLnRvU3RyaW5nKCk7Ci0gICAgICAgICAgICAgICAgdG9rZW5z
LmFwcGVuZChNYW5pcHVsYXRpb25Ub2tlbiB7IG1fdG9rZW5JZGVudGlmaWVyLmdlbmVyYXRlKCks
IHRva2VuU3RyaW5nLCB0b2tlbkluZm8odGV4dE5vZGUpLCBpc05vZGVFeGNsdWRlZCB9KTsKKyAg
ICAgICAgICAgICAgICBhdXRvIHN0cmluZ0ZvclRva2VuID0gdGV4dC5zdWJzdHJpbmcoc3RhcnRQ
b3NpdGlvbk9mQ3VycmVudFRva2VuLCBwb3NpdGlvbk9mTGFzdE5vbkhUTUxTcGFjZSArIDEgLSBz
dGFydFBvc2l0aW9uT2ZDdXJyZW50VG9rZW4pOworICAgICAgICAgICAgICAgIHVuaXQudG9rZW5z
LmFwcGVuZChNYW5pcHVsYXRpb25Ub2tlbiB7IG1fdG9rZW5JZGVudGlmaWVyLmdlbmVyYXRlKCks
IHN0cmluZ0ZvclRva2VuLCB0b2tlbkluZm8oJnRleHROb2RlKSwgaXNOb2RlRXhjbHVkZWQgfSk7
CiAgICAgICAgICAgICAgICAgc3RhcnRQb3NpdGlvbk9mQ3VycmVudFRva2VuID0gcG9zaXRpb25P
Zkxhc3ROb25IVE1MU3BhY2UgKyAxOwogICAgICAgICAgICAgfQogCkBAIC0zMzIsMjUgKzM2Miwy
NCBAQCBUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6TWFuaXB1bGF0aW9uVW5pdCBUZXh0TWFu
aXB1bGF0aW9uQ29udHJvbGxlcjo6cGFyc2UoUwogCiAgICAgICAgICAgICAtLWluZGV4OwogCi0g
ICAgICAgICAgICBhdXRvIHN0cmluZ0ZvclRva2VuID0gdGV4dC5zdWJzdHJpbmcoc3RhcnRQb3Np
dGlvbk9mQ3VycmVudFRva2VuLCBpbmRleCArIDEgLSBzdGFydFBvc2l0aW9uT2ZDdXJyZW50VG9r
ZW4pLnRvU3RyaW5nKCk7Ci0gICAgICAgICAgICBpZiAodG9rZW5zLmlzRW1wdHkoKSkKLSAgICAg
ICAgICAgICAgICBmaXJzdFRva2VuQ29udGFpbnNEZWxpbWl0ZXIgPSB0cnVlOwotICAgICAgICAg
ICAgdG9rZW5zLmFwcGVuZChNYW5pcHVsYXRpb25Ub2tlbiB7IG1fdG9rZW5JZGVudGlmaWVyLmdl
bmVyYXRlKCksIHN0cmluZ0ZvclRva2VuLCB0b2tlbkluZm8odGV4dE5vZGUpLCB0cnVlIH0pOwor
ICAgICAgICAgICAgYXV0byBzdHJpbmdGb3JUb2tlbiA9IHRleHQuc3Vic3RyaW5nKHN0YXJ0UG9z
aXRpb25PZkN1cnJlbnRUb2tlbiwgaW5kZXggKyAxIC0gc3RhcnRQb3NpdGlvbk9mQ3VycmVudFRv
a2VuKTsKKyAgICAgICAgICAgIGlmICh1bml0LnRva2Vucy5pc0VtcHR5KCkgJiYgIXVuaXQuZmly
c3RUb2tlbkNvbnRhaW5zRGVsaW1pdGVyKQorICAgICAgICAgICAgICAgIHVuaXQuZmlyc3RUb2tl
bkNvbnRhaW5zRGVsaW1pdGVyID0gdHJ1ZTsKKyAgICAgICAgICAgIHVuaXQudG9rZW5zLmFwcGVu
ZChNYW5pcHVsYXRpb25Ub2tlbiB7IG1fdG9rZW5JZGVudGlmaWVyLmdlbmVyYXRlKCksIHN0cmlu
Z0ZvclRva2VuLCB0b2tlbkluZm8oJnRleHROb2RlKSwgdHJ1ZSB9KTsKICAgICAgICAgICAgIHN0
YXJ0UG9zaXRpb25PZkN1cnJlbnRUb2tlbiA9IGluZGV4ICsgMTsKLSAgICAgICAgICAgIGxhc3RU
b2tlbkNvbnRhaW5zRGVsaW1pdGVyID0gdHJ1ZTsKKyAgICAgICAgICAgIHVuaXQubGFzdFRva2Vu
Q29udGFpbnNEZWxpbWl0ZXIgPSB0cnVlOwogICAgICAgICB9IGVsc2UgaWYgKGlzTm90SFRNTFNw
YWNlKGNoYXJhY3RlcikpIHsKLSAgICAgICAgICAgIGNvbnRhaW5zT25seUhUTUxTcGFjZSA9IGZh
bHNlOworICAgICAgICAgICAgaWYgKCFpc05vZGVFeGNsdWRlZCkKKyAgICAgICAgICAgICAgICB1
bml0LmFyZUFsbFRva2Vuc0V4Y2x1ZGVkID0gZmFsc2U7CiAgICAgICAgICAgICBwb3NpdGlvbk9m
TGFzdE5vbkhUTUxTcGFjZSA9IGluZGV4OwogICAgICAgICB9CiAgICAgfQogCiAgICAgaWYgKHN0
YXJ0UG9zaXRpb25PZkN1cnJlbnRUb2tlbiA8IHRleHQubGVuZ3RoKCkpIHsKLSAgICAgICAgYXV0
byB0b2tlblN0cmluZyA9IHRleHQuc3Vic3RyaW5nKHN0YXJ0UG9zaXRpb25PZkN1cnJlbnRUb2tl
biwgaW5kZXggKyAxIC0gc3RhcnRQb3NpdGlvbk9mQ3VycmVudFRva2VuKS50b1N0cmluZygpOwot
ICAgICAgICB0b2tlbnMuYXBwZW5kKE1hbmlwdWxhdGlvblRva2VuIHsgbV90b2tlbklkZW50aWZp
ZXIuZ2VuZXJhdGUoKSwgdG9rZW5TdHJpbmcsIHRva2VuSW5mbyh0ZXh0Tm9kZSksIGlzTm9kZUV4
Y2x1ZGVkIH0pOwotICAgICAgICBsYXN0VG9rZW5Db250YWluc0RlbGltaXRlciA9IGZhbHNlOwor
ICAgICAgICBhdXRvIHN0cmluZ0ZvclRva2VuID0gdGV4dC5zdWJzdHJpbmcoc3RhcnRQb3NpdGlv
bk9mQ3VycmVudFRva2VuLCBpbmRleCArIDEgLSBzdGFydFBvc2l0aW9uT2ZDdXJyZW50VG9rZW4p
OworICAgICAgICB1bml0LnRva2Vucy5hcHBlbmQoTWFuaXB1bGF0aW9uVG9rZW4geyBtX3Rva2Vu
SWRlbnRpZmllci5nZW5lcmF0ZSgpLCBzdHJpbmdGb3JUb2tlbiwgdG9rZW5JbmZvKCZ0ZXh0Tm9k
ZSksIGlzTm9kZUV4Y2x1ZGVkIH0pOworICAgICAgICB1bml0Lmxhc3RUb2tlbkNvbnRhaW5zRGVs
aW1pdGVyID0gZmFsc2U7CiAgICAgfQotCi0gICAgcmV0dXJuIHsgV1RGTW92ZSh0b2tlbnMpLCAq
dGV4dE5vZGUsIGNvbnRhaW5zT25seUhUTUxTcGFjZSB8fCBpc05vZGVFeGNsdWRlZCwgY29udGFp
bnNUb2tlbkRlbGltaXRlciwgZmlyc3RUb2tlbkNvbnRhaW5zRGVsaW1pdGVyLCBsYXN0VG9rZW5D
b250YWluc0RlbGltaXRlciB9OwogfQogCiB2b2lkIFRleHRNYW5pcHVsYXRpb25Db250cm9sbGVy
OjphZGRJdGVtSWZQb3NzaWJsZShWZWN0b3I8TWFuaXB1bGF0aW9uVW5pdD4mJiB1bml0cykKQEAg
LTQzMiwyMyArNDYxLDI0IEBAIHZvaWQgVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6Om9ic2Vy
dmVQYXJhZ3JhcGhzKGNvbnN0IFBvc2l0aW9uJiBzdGFydCwgY29uc3QKIAogICAgICAgICBpZiAo
Y29udGVudC5pc1JlcGxhY2VkQ29udGVudCkgewogICAgICAgICAgICAgaWYgKCF1bml0c0luQ3Vy
cmVudFBhcmFncmFwaC5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgdW5pdHNJbkN1cnJlbnRQ
YXJhZ3JhcGguYXBwZW5kKE1hbmlwdWxhdGlvblVuaXQgeyB7IE1hbmlwdWxhdGlvblRva2VuIHsg
bV90b2tlbklkZW50aWZpZXIuZ2VuZXJhdGUoKSwgIltdIiwgdG9rZW5JbmZvKGNvbnRlbnQubm9k
ZS5nZXQoKSksIHRydWUgfSB9LCAqY29udGVudE5vZGUgfSk7CisgICAgICAgICAgICAgICAgdW5p
dHNJbkN1cnJlbnRQYXJhZ3JhcGguYXBwZW5kKE1hbmlwdWxhdGlvblVuaXQgeyAqY29udGVudE5v
ZGUsIHsgTWFuaXB1bGF0aW9uVG9rZW4geyBtX3Rva2VuSWRlbnRpZmllci5nZW5lcmF0ZSgpLCAi
W10iLCB0b2tlbkluZm8oY29udGVudC5ub2RlLmdldCgpKSwgdHJ1ZSB9IH0gfSk7CiAgICAgICAg
ICAgICBjb250aW51ZTsKICAgICAgICAgfQogCiAgICAgICAgIGlmICghY29udGVudC5pc1RleHRD
b250ZW50KQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgYXV0byB1bml0c0luQ3Vy
cmVudE5vZGUgPSBwYXJzZShjb250ZW50LnRleHQsIGNvbnRlbnROb2RlKTsKLSAgICAgICAgaWYg
KHVuaXRzSW5DdXJyZW50Tm9kZS5maXJzdFRva2VuQ29udGFpbnNEZWxpbWl0ZXIpCisgICAgICAg
IGF1dG8gY3VycmVudFVuaXQgPSBjcmVhdGVVbml0KGNvbnRlbnQudGV4dCwgKmNvbnRlbnROb2Rl
KTsKKyAgICAgICAgaWYgKGN1cnJlbnRVbml0LmZpcnN0VG9rZW5Db250YWluc0RlbGltaXRlcikK
ICAgICAgICAgICAgIGFkZEl0ZW1JZlBvc3NpYmxlKHN0ZDo6ZXhjaGFuZ2UodW5pdHNJbkN1cnJl
bnRQYXJhZ3JhcGgsIHsgfSkpOwogCi0gICAgICAgIGlmICh1bml0c0luQ3VycmVudFBhcmFncmFw
aC5pc0VtcHR5KCkgJiYgdW5pdHNJbkN1cnJlbnROb2RlLmFyZUFsbFRva2Vuc0V4Y2x1ZGVkKQot
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAodW5pdHNJbkN1cnJlbnRQYXJh
Z3JhcGguaXNFbXB0eSgpICYmIGN1cnJlbnRVbml0LmFyZUFsbFRva2Vuc0V4Y2x1ZGVkKQorICAg
ICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgdW5pdHNJbkN1cnJlbnRQYXJhZ3JhcGguYXBw
ZW5kKFdURk1vdmUodW5pdHNJbkN1cnJlbnROb2RlKSk7CisgICAgICAgIGJvb2wgY3VycmVudFVu
aXRFbmRzV2l0aERlbGltaXRlciA9IGN1cnJlbnRVbml0Lmxhc3RUb2tlbkNvbnRhaW5zRGVsaW1p
dGVyOworICAgICAgICB1bml0c0luQ3VycmVudFBhcmFncmFwaC5hcHBlbmQoV1RGTW92ZShjdXJy
ZW50VW5pdCkpOwogCi0gICAgICAgIGlmICh1bml0c0luQ3VycmVudE5vZGUubGFzdFRva2VuQ29u
dGFpbnNEZWxpbWl0ZXIpCisgICAgICAgIGlmIChjdXJyZW50VW5pdEVuZHNXaXRoRGVsaW1pdGVy
KQogICAgICAgICAgICAgYWRkSXRlbUlmUG9zc2libGUoc3RkOjpleGNoYW5nZSh1bml0c0luQ3Vy
cmVudFBhcmFncmFwaCwgeyB9KSk7CiAgICAgfQogCkBAIC02ODAsNyArNzEwLDcgQEAgYXV0byBU
ZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6cmVwbGFjZShjb25zdCBNYW5pcHVsYXRpb25JdGVt
RGF0YSYgaXRlbSwgY29uc3QKIAogICAgICAgICAgICAgdG9rZW5zSW5DdXJyZW50Tm9kZS5hcHBl
bmQoaXRlbS50b2tlbnNbY3VycmVudFRva2VuSW5kZXhdKTsKICAgICAgICAgfSBlbHNlCi0gICAg
ICAgICAgICB0b2tlbnNJbkN1cnJlbnROb2RlID0gcGFyc2UoY29udGVudC50ZXh0LCBjb250ZW50
Lm5vZGUuZ2V0KCkpLnRva2VuczsKKyAgICAgICAgICAgIHRva2Vuc0luQ3VycmVudE5vZGUgPSBj
cmVhdGVVbml0KGNvbnRlbnQudGV4dCwgKmNvbnRlbnQubm9kZSkudG9rZW5zOwogCiAgICAgICAg
IGJvb2wgaXNOb2RlSW5jbHVkZWQgPSBXVEY6OmFueU9mKHRva2Vuc0luQ3VycmVudE5vZGUsIFtd
IChhdXRvJiB0b2tlbikgewogICAgICAgICAgICAgcmV0dXJuICF0b2tlbi5pc0V4Y2x1ZGVkOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJv
bGxlci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxl
ci5oCmluZGV4IDg3MzU5MTRhMWIxMGUzNTIxNDI1N2NiZjMzNjYwNDRmNzAxN2QwZmYuLjE0ZTc1
MTkwYTdhNjQzZmM1YzEyN2MxMDIwYjM2YzcwZTQ3ZWRiN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1RleHRNYW5pcHVsYXRpb25Db250cm9sbGVyLmgKQEAgLTE1MSwxNCAr
MTUxLDE0IEBAIHByaXZhdGU6CiAgICAgfTsKIAogICAgIHN0cnVjdCBNYW5pcHVsYXRpb25Vbml0
IHsKLSAgICAgICAgVmVjdG9yPE1hbmlwdWxhdGlvblRva2VuPiB0b2tlbnM7CiAgICAgICAgIFJl
ZjxOb2RlPiBub2RlOworICAgICAgICBWZWN0b3I8TWFuaXB1bGF0aW9uVG9rZW4+IHRva2VuczsK
ICAgICAgICAgYm9vbCBhcmVBbGxUb2tlbnNFeGNsdWRlZCB7IHRydWUgfTsKLSAgICAgICAgYm9v
bCBjb250YWluc0xpbmVCcmVhayB7IGZhbHNlIH07CiAgICAgICAgIGJvb2wgZmlyc3RUb2tlbkNv
bnRhaW5zRGVsaW1pdGVyIHsgZmFsc2UgfTsKICAgICAgICAgYm9vbCBsYXN0VG9rZW5Db250YWlu
c0RlbGltaXRlciB7IGZhbHNlIH07CiAgICAgfTsKLSAgICBNYW5pcHVsYXRpb25Vbml0IHBhcnNl
KFN0cmluZ1ZpZXcsIE5vZGUqKTsKKyAgICBNYW5pcHVsYXRpb25Vbml0IGNyZWF0ZVVuaXQoY29u
c3QgVmVjdG9yPFN0cmluZz4mLCBOb2RlJik7CisgICAgdm9pZCBwYXJzZShNYW5pcHVsYXRpb25V
bml0JiwgY29uc3QgU3RyaW5nJiwgTm9kZSYpOwogCiAgICAgdm9pZCBhZGRJdGVtKE1hbmlwdWxh
dGlvbkl0ZW1EYXRhJiYpOwogICAgIHZvaWQgYWRkSXRlbUlmUG9zc2libGUoVmVjdG9yPE1hbmlw
dWxhdGlvblVuaXQ+JiYpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hh
bmdlTG9nCmluZGV4IDc3M2QyOWQ5YzJhM2E1OGRiMjNjMTMwMDMxNTZjOWE5Y2U0MjFhZTAuLmQ1
MTViOTk4MzQ0ZmVhM2I2ZjhkNTkzMzI5OTEwYTlhMDdmZjIxZTggMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMC0w
Ni0wOCAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAgICBUZXh0TWFu
aXB1bGF0aW9uIHNob3VsZCBvbmx5IGNvbnZlcnQgdGV4dCBmcm9tIE5vZGUncyB0ZXh0IGNvbnRl
bnQgdG8gdG9rZW5zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMTI5MjgKKworICAgICAgICBSZXZpZXdlZCBieSBXZW5zb24gSHNpZWguCisKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1RleHRNYW5pcHVsYXRpb24ubW06
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKwogMjAyMC0wNi0wOCAgU2FtIFdlaW5p
ZyAgPHdlaW5pZ0BhcHBsZS5jb20+CiAKICAgICAgICAgRml4IHRlc3QgcmVzdWx0cyBhZnRlciBy
MjYyNzMzLgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9UZXh0TWFuaXB1bGF0aW9uLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9UZXh0TWFuaXB1bGF0aW9uLm1tCmluZGV4IGE0ZDFmOWI4YjA5OGVmOGQzZDdjYWU4Mjlj
ODYzOWVmMWY1NGNhZTcuLmYyNDFjMzQxYTk3YmQ0ZDQwM2VkY2Y4YTkwNjRlZjM3YjBhMDFlNzQg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVGV4dE1h
bmlwdWxhdGlvbi5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1RleHRNYW5pcHVsYXRpb24ubW0KQEAgLTEwMTksNiArMTAxOSw0MCBAQCBURVNUKFRleHRNYW5p
cHVsYXRpb24sIENvbXBsZXRlVGV4dE1hbmlwdWxhdGlvbkRpc2dhcmRzVG9rZW5zKQogICAgIEVY
UEVDVF9XS19TVFJFUSgiPHA+aGVsbG8sIDxpPldlYktpdDwvaT48L3A+IiwgW3dlYlZpZXcgc3Ry
aW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LmJvZHkuaW5uZXJIVE1MIl0pOwog
fQogCitURVNUKFRleHRNYW5pcHVsYXRpb24sIENvbXBsZXRlVGV4dE1hbmlwdWxhdGlvblJlcGxh
Y2VUd29TaW1wbGVQYXJhZ3JhcGhzKQoreworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtb
VGV4dE1hbmlwdWxhdGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgYXV0byB3ZWJWaWV3
ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVj
dCgwLCAwLCA0MDAsIDQwMCldKTsKKyAgICBbd2ViVmlldyBfc2V0VGV4dE1hbmlwdWxhdGlvbkRl
bGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhU
TUxTdHJpbmc6QCI8cD5oZWxsbzwvcD53b3JsZCJdOworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9
IGFkb3B0TlMoW1tfV0tUZXh0TWFuaXB1bGF0aW9uQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0p
OworCisgICAgZG9uZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3IF9zdGFydFRleHRNYW5pcHVsYXRp
b25zV2l0aENvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKSBjb21wbGV0aW9uOl57Cisg
ICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1
bigmZG9uZSk7CisKKyAgICBhdXRvICppdGVtcyA9IFtkZWxlZ2F0ZSBpdGVtc107CisgICAgRVhQ
RUNUX0VRKGl0ZW1zLmNvdW50LCAyVUwpOworICAgIEVYUEVDVF9FUShpdGVtc1swXS50b2tlbnMu
Y291bnQsIDFVTCk7CisgICAgRVhQRUNUX1NUUkVRKCJoZWxsbyIsIGl0ZW1zWzBdLnRva2Vuc1sw
XS5jb250ZW50LlVURjhTdHJpbmcpOworICAgIEVYUEVDVF9FUShpdGVtc1sxXS50b2tlbnMuY291
bnQsIDFVTCk7CisgICAgRVhQRUNUX1NUUkVRKCJ3b3JsZCIsIGl0ZW1zWzFdLnRva2Vuc1swXS5j
b250ZW50LlVURjhTdHJpbmcpOworCisgICAgZG9uZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3IF9j
b21wbGV0ZVRleHRNYW5pcHVsYXRpb25Gb3JJdGVtczpAWworICAgICAgICBjcmVhdGVJdGVtKGl0
ZW1zWzBdLmlkZW50aWZpZXIsIHt7IGl0ZW1zWzBdLnRva2Vuc1swXS5pZGVudGlmaWVyLCBAIkhl
bGxvIiB9fSkuZ2V0KCksCisgICAgICAgIGNyZWF0ZUl0ZW0oaXRlbXNbMV0uaWRlbnRpZmllciwg
e3sgaXRlbXNbMV0udG9rZW5zWzBdLmlkZW50aWZpZXIsIEAiV29ybGQiIH19KS5nZXQoKQorICAg
IF0gY29tcGxldGlvbjpeKE5TQXJyYXk8TlNFcnJvciAqPiAqZXJyb3JzKSB7CisgICAgICAgIEVY
UEVDVF9FUShlcnJvcnMsIG5pbCk7CisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1dOworICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisKKyAgICBFWFBFQ1RfV0tfU1RSRVEo
IjxwPkhlbGxvPC9wPldvcmxkIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlw
dDpAImRvY3VtZW50LmJvZHkuaW5uZXJIVE1MIl0pOworfQorCiBURVNUKFRleHRNYW5pcHVsYXRp
b24sIENvbXBsZXRlVGV4dE1hbmlwdWxhdGlvblJlcGxhY2VNdWx0aXBsZVNpbXBsZVBhcmFncmFw
aHMpCiB7CiAgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tUZXh0TWFuaXB1bGF0aW9uRGVs
ZWdhdGUgYWxsb2NdIGluaXRdKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>