<?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>208218</bug_id>
          
          <creation_ts>2020-02-25 14:33:00 -0800</creation_ts>
          <short_desc>Make sure a client cannot cause a whole DOM tree to get leaked by simply holding on to a WKBundleNodeHandle</short_desc>
          <delta_ts>2020-02-26 12:57:56 -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>WebKit2</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="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>jacob_uphoff</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1622760</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-02-25 14:33:00 -0800</bug_when>
    <thetext>Make sure a client cannot cause a whole DOM tree to get leaked by simply holding on to a WKBundleNodeHandle. WKBundleNodeHandle currently refs its node, which keeps the whole HTML document alive.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1622761</commentid>
    <comment_count>1</comment_count>
      <attachid>391688</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-02-25 14:36:50 -0800</bug_when>
    <thetext>Created attachment 391688
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1622813</commentid>
    <comment_count>2</comment_count>
      <attachid>391688</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-02-25 16:20:26 -0800</bug_when>
    <thetext>Comment on attachment 391688
Patch

Clearing flags on attachment: 391688

Committed r257389: &lt;https://trac.webkit.org/changeset/257389&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1622814</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-02-25 16:20:28 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1622818</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-02-25 16:21:17 -0800</bug_when>
    <thetext>&lt;rdar://problem/59785892&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1622998</commentid>
    <comment_count>5</comment_count>
    <who name="Jacob Uphoff">jacob_uphoff</who>
    <bug_when>2020-02-26 07:51:13 -0800</bug_when>
    <thetext>Looks like the patch broke api tests in wk1&amp;wk2 https://build.webkit.org/builders/Apple-Catalina-Debug-WK2-Tests/builds/2518/steps/run-api-tests/logs/stdio and also caused 50+ debug tests to crash on wk2 https://build.webkit.org/results/Apple-Catalina-Debug-WK2-Tests/r257467%20(2536)/results.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1623000</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-02-26 07:53:25 -0800</bug_when>
    <thetext>(In reply to Jacob Uphoff from comment #5)
&gt; Looks like the patch broke api tests in wk1&amp;wk2
&gt; https://build.webkit.org/builders/Apple-Catalina-Debug-WK2-Tests/builds/2518/
&gt; steps/run-api-tests/logs/stdio and also caused 50+ debug tests to crash on
&gt; wk2
&gt; https://build.webkit.org/results/Apple-Catalina-Debug-WK2-Tests/
&gt; r257467%20(2536)/results.html

Oh, easy fix. Will take care of it now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1623001</commentid>
    <comment_count>7</comment_count>
    <who name="Jacob Uphoff">jacob_uphoff</who>
    <bug_when>2020-02-26 07:55:25 -0800</bug_when>
    <thetext>Didn&apos;t see your comment till I had already rolled out out..</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1623005</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-02-26 08:04:28 -0800</bug_when>
    <thetext>(In reply to Chris Dumez from comment #6)
&gt; (In reply to Jacob Uphoff from comment #5)
&gt; &gt; Looks like the patch broke api tests in wk1&amp;wk2
&gt; &gt; https://build.webkit.org/builders/Apple-Catalina-Debug-WK2-Tests/builds/2518/
&gt; &gt; steps/run-api-tests/logs/stdio and also caused 50+ debug tests to crash on
&gt; &gt; wk2
&gt; &gt; https://build.webkit.org/results/Apple-Catalina-Debug-WK2-Tests/
&gt; &gt; r257467%20(2536)/results.html
&gt; 
&gt; Oh, easy fix. Will take care of it now.

Fix landed in https://trac.webkit.org/changeset/257471/webkit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1623059</commentid>
    <comment_count>9</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-02-26 10:58:36 -0800</bug_when>
    <thetext>Reverted r257389 for reason:

257471

Committed r257482: &lt;https://trac.webkit.org/changeset/257482&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1623094</commentid>
    <comment_count>10</comment_count>
      <attachid>391764</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-02-26 11:58:43 -0800</bug_when>
    <thetext>Created attachment 391764
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1623119</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-02-26 12:57:18 -0800</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 391764:

editing/spelling/spellcheck-async-remove-frame.html bug 158401 (authors: morrita@google.com, rniwa@webkit.org, and tony@chromium.org)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1623121</commentid>
    <comment_count>12</comment_count>
      <attachid>391764</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-02-26 12:57:54 -0800</bug_when>
    <thetext>Comment on attachment 391764
Patch

Clearing flags on attachment: 391764

Committed r257503: &lt;https://trac.webkit.org/changeset/257503&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1623122</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-02-26 12:57:56 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391688</attachid>
            <date>2020-02-25 14:36:50 -0800</date>
            <delta_ts>2020-02-26 11:58:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208218-20200225143649.patch</filename>
            <type>text/plain</type>
            <size>16280</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3MzU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGE1ZWRiMzhhZjlhMGIyZTQ5
MGQxZjM2YTY2YTZiODk5NjIyMTM3MzAuLjYzNjk0NTYxZmZlM2RlZGE3MTE4ZjE4MGZiNTA1MzUz
ZDIyMTgwNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDggQEAKKzIwMjAtMDItMjUgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIHN1cmUgYSBjbGllbnQgY2Fu
bm90IGNhdXNlIGEgd2hvbGUgRE9NIHRyZWUgdG8gZ2V0IGxlYWtlZCBieSBzaW1wbHkgaG9sZGlu
ZyBvbiB0byBhIFdLQnVuZGxlTm9kZUhhbmRsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4MjE4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgTWFrZSBzdXJlIGEgY2xpZW50IGNhbm5vdCBjYXVzZSBhIHdo
b2xlIERPTSB0cmVlIHRvIGdldCBsZWFrZWQgYnkgc2ltcGx5IGhvbGRpbmcgb24gdG8gYSBXS0J1
bmRsZU5vZGVIYW5kbGUuCisgICAgICAgIFByZXZpb3VzbHksIFdLQnVuZGxlTm9kZUhhbmRsZSB3
b3VsZCByZWYgaXRzIG5vZGUsIHdoaWNoIHdvdWxkIGtlZXAgdGhlIHdob2xlIEhUTUwgZG9jdW1l
bnQgYWxpdmUuIFRvIHByb3RlY3QKKyAgICAgICAgYWdhaW5zdCB0aGlzLCBJbmplY3RlZEJ1bmRs
ZU5vZGVIYW5kbGUgaXMgbm93IGFuIEFjdGl2ZURPTU9iamVjdCB3aGljaCBudWxscyBvdXQgaXRz
IG5vZGUgUmVmUHRyIHdoZW4gdGhlCisgICAgICAgIGRvY3VtZW50IGlzIGdldHRpbmcgcmVhZHkg
Zm9yIGRlc3RydWN0aW9uIChpLmUuIEFjdGl2ZURPTU9iamVjdDo6c3RvcCgpIGlzIGNhbGxlZCku
CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRs
ZU5vZGVIYW5kbGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZU5vZGVIYW5k
bGU6OkluamVjdGVkQnVuZGxlTm9kZUhhbmRsZSk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVk
QnVuZGxlTm9kZUhhbmRsZTo6fkluamVjdGVkQnVuZGxlTm9kZUhhbmRsZSk6CisgICAgICAgIChX
ZWJLaXQ6OkluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6Y29yZU5vZGUpOgorICAgICAgICAoV2Vi
S2l0OjpJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6OmRvY3VtZW50KToKKyAgICAgICAgKFdlYktp
dDo6SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOjplbGVtZW50Qm91bmRzKToKKyAgICAgICAgKFdl
YktpdDo6SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOjpyZW5kZXJSZWN0KToKKyAgICAgICAgKFdl
YktpdDo6SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOjpyZW5kZXJlZEltYWdlKToKKyAgICAgICAg
KFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOjp2aXNpYmxlUmFuZ2UpOgorICAgICAg
ICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6OnNldEhUTUxJbnB1dEVsZW1lbnRW
YWx1ZUZvclVzZXIpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6
OnNldEhUTUxJbnB1dEVsZW1lbnRTcGVsbGNoZWNrRW5hYmxlZCk6CisgICAgICAgIChXZWJLaXQ6
OkluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6aXNIVE1MSW5wdXRFbGVtZW50QXV0b0ZpbGxlZCBj
b25zdCk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6aXNIVE1M
SW5wdXRFbGVtZW50QXV0b0ZpbGxlZEFuZFZpZXdhYmxlIGNvbnN0KToKKyAgICAgICAgKFdlYktp
dDo6SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOjpzZXRIVE1MSW5wdXRFbGVtZW50QXV0b0ZpbGxl
ZCk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6c2V0SFRNTElu
cHV0RWxlbWVudEF1dG9GaWxsZWRBbmRWaWV3YWJsZSk6CisgICAgICAgIChXZWJLaXQ6OkluamVj
dGVkQnVuZGxlTm9kZUhhbmRsZTo6aXNIVE1MSW5wdXRFbGVtZW50QXV0b0ZpbGxCdXR0b25FbmFi
bGVkIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOjpz
ZXRIVE1MSW5wdXRFbGVtZW50QXV0b0ZpbGxCdXR0b25FbmFibGVkKToKKyAgICAgICAgKFdlYktp
dDo6SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOjpodG1sSW5wdXRFbGVtZW50QXV0b0ZpbGxCdXR0
b25UeXBlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxl
OjpodG1sSW5wdXRFbGVtZW50TGFzdEF1dG9GaWxsQnV0dG9uVHlwZSBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6OkluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6aXNBdXRvRmlsbEF2YWlsYWJsZSBj
b25zdCk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6c2V0QXV0
b0ZpbGxBdmFpbGFibGUpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZU5vZGVIYW5k
bGU6Omh0bWxJbnB1dEVsZW1lbnRBdXRvRmlsbEJ1dHRvbkJvdW5kcyk6CisgICAgICAgIChXZWJL
aXQ6OkluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6aHRtbElucHV0RWxlbWVudExhc3RDaGFuZ2VX
YXNVc2VyRWRpdCk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6
aHRtbFRleHRBcmVhRWxlbWVudExhc3RDaGFuZ2VXYXNVc2VyRWRpdCk6CisgICAgICAgIChXZWJL
aXQ6OkluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6aXNUZXh0RmllbGQgY29uc3QpOgorICAgICAg
ICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6Omh0bWxUYWJsZUNlbGxFbGVtZW50
Q2VsbEFib3ZlKToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOjpk
b2N1bWVudEZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxl
OjpodG1sRnJhbWVFbGVtZW50Q29udGVudEZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0
ZWRCdW5kbGVOb2RlSGFuZGxlOjpodG1sSUZyYW1lRWxlbWVudENvbnRlbnRGcmFtZSk6CisgICAg
ICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6c3RvcCk6CisgICAgICAgIChX
ZWJLaXQ6OkluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6YWN0aXZlRE9NT2JqZWN0TmFtZSBjb25z
dCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5k
bGVOb2RlSGFuZGxlLmg6CisKIDIwMjAtMDItMjUgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxl
LmNvbT4KIAogICAgICAgICBSZWdyZXNzaW9uKENvb2tpZUNhY2hlKSBIYW5nIGFuZCB2ZXJ5IGhp
Z2ggQ1BVIHVzYWdlIG9uIG55dGltZXMuY29tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVu
ZGxlTm9kZUhhbmRsZS5jcHAKaW5kZXggOTM1ZjhkZDM2YmUwMTliNGZhZmJjNGU0NTZkMTQ2Yzk3
MGI5OWFhNy4uMDhmNTA0MzI2OWU5YzUzMTQwYjA0ZTBhNjllZjAyNmEyYTg3ZWJhOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3Rl
ZEJ1bmRsZU5vZGVIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmNwcApAQCAtOTksMjIgKzk5
LDI3IEBAIFJlZjxJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU+IEluamVjdGVkQnVuZGxlTm9kZUhh
bmRsZTo6Y3JlYXRlKE5vZGUmIG5vZGUpCiB9CiAKIEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6
SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlKE5vZGUmIG5vZGUpCi0gICAgOiBtX25vZGUobm9kZSkK
KyAgICA6IEFjdGl2ZURPTU9iamVjdChub2RlLmRvY3VtZW50KCkpCisgICAgLCBtX25vZGUoJm5v
ZGUpCiB7CiB9CiAKIEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6fkluamVjdGVkQnVuZGxlTm9k
ZUhhbmRsZSgpCiB7Ci0gICAgZG9tTm9kZUhhbmRsZUNhY2hlKCkucmVtb3ZlKG1fbm9kZS5wdHIo
KSk7CisgICAgaWYgKG1fbm9kZSkKKyAgICAgICAgZG9tTm9kZUhhbmRsZUNhY2hlKCkucmVtb3Zl
KG1fbm9kZS5nZXQoKSk7CiB9CiAKIE5vZGUqIEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6Y29y
ZU5vZGUoKQogewotICAgIHJldHVybiBtX25vZGUucHRyKCk7CisgICAgcmV0dXJuIG1fbm9kZS5n
ZXQoKTsKIH0KIAotUmVmPEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZT4gSW5qZWN0ZWRCdW5kbGVO
b2RlSGFuZGxlOjpkb2N1bWVudCgpCitSZWZQdHI8SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlPiBJ
bmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6OmRvY3VtZW50KCkKIHsKKyAgICBpZiAoIW1fbm9kZSkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKICAgICByZXR1cm4gZ2V0T3JDcmVhdGUobV9ub2Rl
LT5kb2N1bWVudCgpKTsKIH0KIApAQCAtMTI2LDExICsxMzEsMTQgQEAgSW50UmVjdCBJbmplY3Rl
ZEJ1bmRsZU5vZGVIYW5kbGU6OmVsZW1lbnRCb3VuZHMoKQogICAgIGlmICghaXM8RWxlbWVudD4o
bV9ub2RlKSkKICAgICAgICAgcmV0dXJuIEludFJlY3QoKTsKIAotICAgIHJldHVybiBkb3duY2Fz
dDxFbGVtZW50PihtX25vZGUuZ2V0KCkpLmJvdW5kc0luUm9vdFZpZXdTcGFjZSgpOworICAgIHJl
dHVybiBkb3duY2FzdDxFbGVtZW50PigqbV9ub2RlKS5ib3VuZHNJblJvb3RWaWV3U3BhY2UoKTsK
IH0KICAgICAKIEludFJlY3QgSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOjpyZW5kZXJSZWN0KGJv
b2wqIGlzUmVwbGFjZWQpCiB7CisgICAgaWYgKCFtX25vZGUpCisgICAgICAgIHJldHVybiB7IH07
CisKICAgICByZXR1cm4gbV9ub2RlLT5waXhlbFNuYXBwZWRSZW5kZXJSZWN0KGlzUmVwbGFjZWQp
OwogfQogCkBAIC0xODgsNiArMTk2LDkgQEAgc3RhdGljIFJlZlB0cjxXZWJJbWFnZT4gaW1hZ2VG
b3JSZWN0KEZyYW1lVmlldyogZnJhbWVWaWV3LCBjb25zdCBJbnRSZWN0JiBwYWludGkKIAogUmVm
UHRyPFdlYkltYWdlPiBJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6OnJlbmRlcmVkSW1hZ2UoU25h
cHNob3RPcHRpb25zIG9wdGlvbnMsIGJvb2wgc2hvdWxkRXhjbHVkZU92ZXJmbG93LCBjb25zdCBP
cHRpb25hbDxmbG9hdD4mIGJpdG1hcFdpZHRoKQogeworICAgIGlmICghbV9ub2RlKQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKwogICAgIEZyYW1lKiBmcmFtZSA9IG1fbm9kZS0+ZG9jdW1lbnQo
KS5mcmFtZSgpOwogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAt
MjEwLDcgKzIyMSw3IEBAIFJlZlB0cjxXZWJJbWFnZT4gSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxl
OjpyZW5kZXJlZEltYWdlKFNuYXBzaG90T3B0aW9ucyBvcHRpb25zCiAgICAgICAgIHBhaW50aW5n
UmVjdCA9IHNuYXBwZWRJbnRSZWN0KHJlbmRlcmVyLT5wYWludGluZ1Jvb3RSZWN0KHRvcExldmVs
UmVjdCkpOwogICAgIH0KIAotICAgIGZyYW1lVmlldy0+c2V0Tm9kZVRvRHJhdyhtX25vZGUucHRy
KCkpOworICAgIGZyYW1lVmlldy0+c2V0Tm9kZVRvRHJhdyhtX25vZGUuZ2V0KCkpOwogICAgIGF1
dG8gaW1hZ2UgPSBpbWFnZUZvclJlY3QoZnJhbWVWaWV3LCBwYWludGluZ1JlY3QsIGJpdG1hcFdp
ZHRoLCBvcHRpb25zKTsKICAgICBmcmFtZVZpZXctPnNldE5vZGVUb0RyYXcoMCk7CiAKQEAgLTIx
OSw4ICsyMzAsMTEgQEAgUmVmUHRyPFdlYkltYWdlPiBJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6
OnJlbmRlcmVkSW1hZ2UoU25hcHNob3RPcHRpb25zIG9wdGlvbnMKIAogUmVmUHRyPEluamVjdGVk
QnVuZGxlUmFuZ2VIYW5kbGU+IEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6dmlzaWJsZVJhbmdl
KCkKIHsKLSAgICBWaXNpYmxlUG9zaXRpb24gc3RhcnQgPSBmaXJzdFBvc2l0aW9uSW5Ob2RlKG1f
bm9kZS5wdHIoKSk7Ci0gICAgVmlzaWJsZVBvc2l0aW9uIGVuZCA9IGxhc3RQb3NpdGlvbkluTm9k
ZShtX25vZGUucHRyKCkpOworICAgIGlmICghbV9ub2RlKQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKworICAgIFZpc2libGVQb3NpdGlvbiBzdGFydCA9IGZpcnN0UG9zaXRpb25Jbk5vZGUobV9u
b2RlLmdldCgpKTsKKyAgICBWaXNpYmxlUG9zaXRpb24gZW5kID0gbGFzdFBvc2l0aW9uSW5Ob2Rl
KG1fbm9kZS5nZXQoKSk7CiAKICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gbWFrZVJhbmdlKHN0
YXJ0LCBlbmQpOwogICAgIHJldHVybiBJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlOjpnZXRPckNy
ZWF0ZShyYW5nZS5nZXQoKSk7CkBAIC0yMzEsNyArMjQ1LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRs
ZU5vZGVIYW5kbGU6OnNldEhUTUxJbnB1dEVsZW1lbnRWYWx1ZUZvclVzZXIoY29uc3QgU3RyaW5n
JiB2YWwKICAgICBpZiAoIWlzPEhUTUxJbnB1dEVsZW1lbnQ+KG1fbm9kZSkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KG1fbm9kZS5nZXQoKSkuc2V0
VmFsdWVGb3JVc2VyKHZhbHVlKTsKKyAgICBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50PigqbV9u
b2RlKS5zZXRWYWx1ZUZvclVzZXIodmFsdWUpOwogfQogCiB2b2lkIEluamVjdGVkQnVuZGxlTm9k
ZUhhbmRsZTo6c2V0SFRNTElucHV0RWxlbWVudFNwZWxsY2hlY2tFbmFibGVkKGJvb2wgZW5hYmxl
ZCkKQEAgLTIzOSw3ICsyNTMsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6c2V0
SFRNTElucHV0RWxlbWVudFNwZWxsY2hlY2tFbmFibGVkKGJvb2wgZW5hYmxlZAogICAgIGlmICgh
aXM8SFRNTElucHV0RWxlbWVudD4obV9ub2RlKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZG93
bmNhc3Q8SFRNTElucHV0RWxlbWVudD4obV9ub2RlLmdldCgpKS5zZXRTcGVsbGNoZWNrRGlzYWJs
ZWRFeGNlcHRUZXh0UmVwbGFjZW1lbnQoIWVuYWJsZWQpOworICAgIGRvd25jYXN0PEhUTUxJbnB1
dEVsZW1lbnQ+KCptX25vZGUpLnNldFNwZWxsY2hlY2tEaXNhYmxlZEV4Y2VwdFRleHRSZXBsYWNl
bWVudCghZW5hYmxlZCk7CiB9CiAKIGJvb2wgSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOjppc0hU
TUxJbnB1dEVsZW1lbnRBdXRvRmlsbGVkKCkgY29uc3QKQEAgLTI0Nyw3ICsyNjEsNyBAQCBib29s
IEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6aXNIVE1MSW5wdXRFbGVtZW50QXV0b0ZpbGxlZCgp
IGNvbnN0CiAgICAgaWYgKCFpczxIVE1MSW5wdXRFbGVtZW50PihtX25vZGUpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgcmV0dXJuIGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+
KG1fbm9kZS5nZXQoKSkuaXNBdXRvRmlsbGVkKCk7CisgICAgcmV0dXJuIGRvd25jYXN0PEhUTUxJ
bnB1dEVsZW1lbnQ+KCptX25vZGUpLmlzQXV0b0ZpbGxlZCgpOwogfQogCiBib29sIEluamVjdGVk
QnVuZGxlTm9kZUhhbmRsZTo6aXNIVE1MSW5wdXRFbGVtZW50QXV0b0ZpbGxlZEFuZFZpZXdhYmxl
KCkgY29uc3QKQEAgLTI1NSw3ICsyNjksNyBAQCBib29sIEluamVjdGVkQnVuZGxlTm9kZUhhbmRs
ZTo6aXNIVE1MSW5wdXRFbGVtZW50QXV0b0ZpbGxlZEFuZFZpZXdhYmxlKCkgY29uc3QKICAgICBp
ZiAoIWlzPEhUTUxJbnB1dEVsZW1lbnQ+KG1fbm9kZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgIHJldHVybiBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50PihtX25vZGUuZ2V0KCkpLmlz
QXV0b0ZpbGxlZEFuZFZpZXdhYmxlKCk7CisgICAgcmV0dXJuIGRvd25jYXN0PEhUTUxJbnB1dEVs
ZW1lbnQ+KCptX25vZGUpLmlzQXV0b0ZpbGxlZEFuZFZpZXdhYmxlKCk7CiB9CiAKIHZvaWQgSW5q
ZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOjpzZXRIVE1MSW5wdXRFbGVtZW50QXV0b0ZpbGxlZChib29s
IGZpbGxlZCkKQEAgLTI2Myw3ICsyNzcsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlTm9kZUhhbmRs
ZTo6c2V0SFRNTElucHV0RWxlbWVudEF1dG9GaWxsZWQoYm9vbCBmaWxsZWQpCiAgICAgaWYgKCFp
czxIVE1MSW5wdXRFbGVtZW50PihtX25vZGUpKQogICAgICAgICByZXR1cm47CiAKLSAgICBkb3du
Y2FzdDxIVE1MSW5wdXRFbGVtZW50PihtX25vZGUuZ2V0KCkpLnNldEF1dG9GaWxsZWQoZmlsbGVk
KTsKKyAgICBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50PigqbV9ub2RlKS5zZXRBdXRvRmlsbGVk
KGZpbGxlZCk7CiB9CiAKIHZvaWQgSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOjpzZXRIVE1MSW5w
dXRFbGVtZW50QXV0b0ZpbGxlZEFuZFZpZXdhYmxlKGJvb2wgYXV0b0ZpbGxlZEFuZFZpZXdhYmxl
KQpAQCAtMjcxLDcgKzI4NSw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOjpzZXRI
VE1MSW5wdXRFbGVtZW50QXV0b0ZpbGxlZEFuZFZpZXdhYmxlKGJvb2wgYXV0CiAgICAgaWYgKCFp
czxIVE1MSW5wdXRFbGVtZW50PihtX25vZGUpKQogICAgICAgICByZXR1cm47CiAKLSAgICBkb3du
Y2FzdDxIVE1MSW5wdXRFbGVtZW50PihtX25vZGUuZ2V0KCkpLnNldEF1dG9GaWxsZWRBbmRWaWV3
YWJsZShhdXRvRmlsbGVkQW5kVmlld2FibGUpOworICAgIGRvd25jYXN0PEhUTUxJbnB1dEVsZW1l
bnQ+KCptX25vZGUpLnNldEF1dG9GaWxsZWRBbmRWaWV3YWJsZShhdXRvRmlsbGVkQW5kVmlld2Fi
bGUpOwogfQogCiBib29sIEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6aXNIVE1MSW5wdXRFbGVt
ZW50QXV0b0ZpbGxCdXR0b25FbmFibGVkKCkgY29uc3QKQEAgLTI3OSw3ICsyOTMsNyBAQCBib29s
IEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6aXNIVE1MSW5wdXRFbGVtZW50QXV0b0ZpbGxCdXR0
b25FbmFibGVkKCkgY29uc3QKICAgICBpZiAoIWlzPEhUTUxJbnB1dEVsZW1lbnQ+KG1fbm9kZSkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICByZXR1cm4gZG93bmNhc3Q8SFRNTElu
cHV0RWxlbWVudD4obV9ub2RlLmdldCgpKS5hdXRvRmlsbEJ1dHRvblR5cGUoKSAhPSBBdXRvRmls
bEJ1dHRvblR5cGU6Ok5vbmU7CisgICAgcmV0dXJuIGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+
KCptX25vZGUpLmF1dG9GaWxsQnV0dG9uVHlwZSgpICE9IEF1dG9GaWxsQnV0dG9uVHlwZTo6Tm9u
ZTsKIH0KIAogdm9pZCBJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6OnNldEhUTUxJbnB1dEVsZW1l
bnRBdXRvRmlsbEJ1dHRvbkVuYWJsZWQoQXV0b0ZpbGxCdXR0b25UeXBlIGF1dG9GaWxsQnV0dG9u
VHlwZSkKQEAgLTI4NywyMSArMzAxLDIxIEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxl
OjpzZXRIVE1MSW5wdXRFbGVtZW50QXV0b0ZpbGxCdXR0b25FbmFibGVkKEF1dG9GaWxsCiAgICAg
aWYgKCFpczxIVE1MSW5wdXRFbGVtZW50PihtX25vZGUpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50PihtX25vZGUuZ2V0KCkpLnNldFNob3dBdXRvRmls
bEJ1dHRvbihhdXRvRmlsbEJ1dHRvblR5cGUpOworICAgIGRvd25jYXN0PEhUTUxJbnB1dEVsZW1l
bnQ+KCptX25vZGUpLnNldFNob3dBdXRvRmlsbEJ1dHRvbihhdXRvRmlsbEJ1dHRvblR5cGUpOwog
fQogCiBBdXRvRmlsbEJ1dHRvblR5cGUgSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOjpodG1sSW5w
dXRFbGVtZW50QXV0b0ZpbGxCdXR0b25UeXBlKCkgY29uc3QKIHsKICAgICBpZiAoIWlzPEhUTUxJ
bnB1dEVsZW1lbnQ+KG1fbm9kZSkpCiAgICAgICAgIHJldHVybiBBdXRvRmlsbEJ1dHRvblR5cGU6
Ok5vbmU7Ci0gICAgcmV0dXJuIGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KG1fbm9kZS5nZXQo
KSkuYXV0b0ZpbGxCdXR0b25UeXBlKCk7CisgICAgcmV0dXJuIGRvd25jYXN0PEhUTUxJbnB1dEVs
ZW1lbnQ+KCptX25vZGUpLmF1dG9GaWxsQnV0dG9uVHlwZSgpOwogfQogCiBBdXRvRmlsbEJ1dHRv
blR5cGUgSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOjpodG1sSW5wdXRFbGVtZW50TGFzdEF1dG9G
aWxsQnV0dG9uVHlwZSgpIGNvbnN0CiB7CiAgICAgaWYgKCFpczxIVE1MSW5wdXRFbGVtZW50Piht
X25vZGUpKQogICAgICAgICByZXR1cm4gQXV0b0ZpbGxCdXR0b25UeXBlOjpOb25lOwotICAgIHJl
dHVybiBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50PihtX25vZGUuZ2V0KCkpLmxhc3RBdXRvRmls
bEJ1dHRvblR5cGUoKTsKKyAgICByZXR1cm4gZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4oKm1f
bm9kZSkubGFzdEF1dG9GaWxsQnV0dG9uVHlwZSgpOwogfQogCiBib29sIEluamVjdGVkQnVuZGxl
Tm9kZUhhbmRsZTo6aXNBdXRvRmlsbEF2YWlsYWJsZSgpIGNvbnN0CkBAIC0zMDksNyArMzIzLDcg
QEAgYm9vbCBJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6OmlzQXV0b0ZpbGxBdmFpbGFibGUoKSBj
b25zdAogICAgIGlmICghaXM8SFRNTElucHV0RWxlbWVudD4obV9ub2RlKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KG1fbm9k
ZS5nZXQoKSkuaXNBdXRvRmlsbEF2YWlsYWJsZSgpOworICAgIHJldHVybiBkb3duY2FzdDxIVE1M
SW5wdXRFbGVtZW50PigqbV9ub2RlKS5pc0F1dG9GaWxsQXZhaWxhYmxlKCk7CiB9CiAKIHZvaWQg
SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOjpzZXRBdXRvRmlsbEF2YWlsYWJsZShib29sIGF1dG9G
aWxsQXZhaWxhYmxlKQpAQCAtMzE3LDcgKzMzMSw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVOb2Rl
SGFuZGxlOjpzZXRBdXRvRmlsbEF2YWlsYWJsZShib29sIGF1dG9GaWxsQXZhaWxhYmxlKQogICAg
IGlmICghaXM8SFRNTElucHV0RWxlbWVudD4obV9ub2RlKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4obV9ub2RlLmdldCgpKS5zZXRBdXRvRmlsbEF2
YWlsYWJsZShhdXRvRmlsbEF2YWlsYWJsZSk7CisgICAgZG93bmNhc3Q8SFRNTElucHV0RWxlbWVu
dD4oKm1fbm9kZSkuc2V0QXV0b0ZpbGxBdmFpbGFibGUoYXV0b0ZpbGxBdmFpbGFibGUpOwogfQog
CiBJbnRSZWN0IEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6aHRtbElucHV0RWxlbWVudEF1dG9G
aWxsQnV0dG9uQm91bmRzKCkKQEAgLTMyNSw3ICszMzksNyBAQCBJbnRSZWN0IEluamVjdGVkQnVu
ZGxlTm9kZUhhbmRsZTo6aHRtbElucHV0RWxlbWVudEF1dG9GaWxsQnV0dG9uQm91bmRzKCkKICAg
ICBpZiAoIWlzPEhUTUxJbnB1dEVsZW1lbnQ+KG1fbm9kZSkpCiAgICAgICAgIHJldHVybiBJbnRS
ZWN0KCk7CiAKLSAgICBhdXRvIGF1dG9GaWxsQnV0dG9uID0gZG93bmNhc3Q8SFRNTElucHV0RWxl
bWVudD4obV9ub2RlLmdldCgpKS5hdXRvRmlsbEJ1dHRvbkVsZW1lbnQoKTsKKyAgICBhdXRvIGF1
dG9GaWxsQnV0dG9uID0gZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4oKm1fbm9kZSkuYXV0b0Zp
bGxCdXR0b25FbGVtZW50KCk7CiAgICAgaWYgKCFhdXRvRmlsbEJ1dHRvbikKICAgICAgICAgcmV0
dXJuIEludFJlY3QoKTsKIApAQCAtMzM3LDcgKzM1MSw3IEBAIGJvb2wgSW5qZWN0ZWRCdW5kbGVO
b2RlSGFuZGxlOjpodG1sSW5wdXRFbGVtZW50TGFzdENoYW5nZVdhc1VzZXJFZGl0KCkKICAgICBp
ZiAoIWlzPEhUTUxJbnB1dEVsZW1lbnQ+KG1fbm9kZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgIHJldHVybiBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50PihtX25vZGUuZ2V0KCkpLmxh
c3RDaGFuZ2VXYXNVc2VyRWRpdCgpOworICAgIHJldHVybiBkb3duY2FzdDxIVE1MSW5wdXRFbGVt
ZW50PigqbV9ub2RlKS5sYXN0Q2hhbmdlV2FzVXNlckVkaXQoKTsKIH0KIAogYm9vbCBJbmplY3Rl
ZEJ1bmRsZU5vZGVIYW5kbGU6Omh0bWxUZXh0QXJlYUVsZW1lbnRMYXN0Q2hhbmdlV2FzVXNlckVk
aXQoKQpAQCAtMzQ1LDcgKzM1OSw3IEBAIGJvb2wgSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOjpo
dG1sVGV4dEFyZWFFbGVtZW50TGFzdENoYW5nZVdhc1VzZXJFZGl0KCkKICAgICBpZiAoIWlzPEhU
TUxUZXh0QXJlYUVsZW1lbnQ+KG1fbm9kZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
IHJldHVybiBkb3duY2FzdDxIVE1MVGV4dEFyZWFFbGVtZW50PihtX25vZGUuZ2V0KCkpLmxhc3RD
aGFuZ2VXYXNVc2VyRWRpdCgpOworICAgIHJldHVybiBkb3duY2FzdDxIVE1MVGV4dEFyZWFFbGVt
ZW50PigqbV9ub2RlKS5sYXN0Q2hhbmdlV2FzVXNlckVkaXQoKTsKIH0KIAogYm9vbCBJbmplY3Rl
ZEJ1bmRsZU5vZGVIYW5kbGU6OmlzVGV4dEZpZWxkKCkgY29uc3QKQEAgLTM1Myw3ICszNjcsNyBA
QCBib29sIEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6aXNUZXh0RmllbGQoKSBjb25zdAogICAg
IGlmICghaXM8SFRNTElucHV0RWxlbWVudD4obV9ub2RlKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgcmV0dXJuIGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KG1fbm9kZS5nZXQoKSku
aXNUZXh0RmllbGQoKTsKKyAgICByZXR1cm4gZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4oKm1f
bm9kZSkuaXNUZXh0RmllbGQoKTsKIH0KIAogYm9vbCBJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6
OmlzU2VsZWN0RWxlbWVudCgpIGNvbnN0CkBAIC0zNjYsMTUgKzM4MCwxNSBAQCBSZWZQdHI8SW5q
ZWN0ZWRCdW5kbGVOb2RlSGFuZGxlPiBJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6Omh0bWxUYWJs
ZUNlbGxFbGVtZW50QwogICAgIGlmICghaXM8SFRNTFRhYmxlQ2VsbEVsZW1lbnQ+KG1fbm9kZSkp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIGdldE9yQ3JlYXRlKGRvd25j
YXN0PEhUTUxUYWJsZUNlbGxFbGVtZW50PihtX25vZGUuZ2V0KCkpLmNlbGxBYm92ZSgpKTsKKyAg
ICByZXR1cm4gZ2V0T3JDcmVhdGUoZG93bmNhc3Q8SFRNTFRhYmxlQ2VsbEVsZW1lbnQ+KCptX25v
ZGUpLmNlbGxBYm92ZSgpKTsKIH0KIAogUmVmUHRyPFdlYkZyYW1lPiBJbmplY3RlZEJ1bmRsZU5v
ZGVIYW5kbGU6OmRvY3VtZW50RnJhbWUoKQogewotICAgIGlmICghbV9ub2RlLT5pc0RvY3VtZW50
Tm9kZSgpKQorICAgIGlmICghbV9ub2RlIHx8ICFtX25vZGUtPmlzRG9jdW1lbnROb2RlKCkpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgRnJhbWUqIGZyYW1lID0gZG93bmNhc3Q8RG9j
dW1lbnQ+KG1fbm9kZS5nZXQoKSkuZnJhbWUoKTsKKyAgICBGcmFtZSogZnJhbWUgPSBkb3duY2Fz
dDxEb2N1bWVudD4oKm1fbm9kZSkuZnJhbWUoKTsKICAgICBpZiAoIWZyYW1lKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIApAQCAtMzg2LDcgKzQwMCw3IEBAIFJlZlB0cjxXZWJGcmFtZT4gSW5q
ZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOjpodG1sRnJhbWVFbGVtZW50Q29udGVudEZyYW1lKCkKICAg
ICBpZiAoIWlzPEhUTUxGcmFtZUVsZW1lbnQ+KG1fbm9kZSkpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCi0gICAgRnJhbWUqIGZyYW1lID0gZG93bmNhc3Q8SFRNTEZyYW1lRWxlbWVudD4obV9u
b2RlLmdldCgpKS5jb250ZW50RnJhbWUoKTsKKyAgICBGcmFtZSogZnJhbWUgPSBkb3duY2FzdDxI
VE1MRnJhbWVFbGVtZW50PigqbV9ub2RlKS5jb250ZW50RnJhbWUoKTsKICAgICBpZiAoIWZyYW1l
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtMzk4LDExICs0MTIsMjUgQEAgUmVmUHRy
PFdlYkZyYW1lPiBJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6Omh0bWxJRnJhbWVFbGVtZW50Q29u
dGVudEZyYW1lKCkKICAgICBpZiAoIWlzPEhUTUxJRnJhbWVFbGVtZW50PihtX25vZGUpKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIEZyYW1lKiBmcmFtZSA9IGRvd25jYXN0PEhUTUxJ
RnJhbWVFbGVtZW50PihtX25vZGUuZ2V0KCkpLmNvbnRlbnRGcmFtZSgpOworICAgIEZyYW1lKiBm
cmFtZSA9IGRvd25jYXN0PEhUTUxJRnJhbWVFbGVtZW50PigqbV9ub2RlKS5jb250ZW50RnJhbWUo
KTsKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIHJldHVy
biBXZWJGcmFtZTo6ZnJvbUNvcmVGcmFtZSgqZnJhbWUpOwogfQogCit2b2lkIEluamVjdGVkQnVu
ZGxlTm9kZUhhbmRsZTo6c3RvcCgpCit7CisgICAgLy8gSW52YWxpZGF0ZSBoYW5kbGVzIHRvIG5v
ZGVzIGluc2lkZSBkb2N1bWVudHMgdGhhdCBhcmUgYWJvdXQgdG8gYmUgZGVzdHJveWVkIGluIG9y
ZGVyIHRvIHByZXZlbnQgbGVha3MuCisgICAgaWYgKG1fbm9kZSkgeworICAgICAgICBkb21Ob2Rl
SGFuZGxlQ2FjaGUoKS5yZW1vdmUobV9ub2RlLmdldCgpKTsKKyAgICAgICAgbV9ub2RlID0gbnVs
bHB0cjsKKyAgICB9Cit9CisKK2NvbnN0IGNoYXIqIEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6
YWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuICJJbmplY3RlZEJ1bmRs
ZU5vZGVIYW5kbGUiOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVO
b2RlSGFuZGxlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9N
L0luamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5oCmluZGV4IDQyY2YyMjI4ZDU2OGQyNTc4MTQwZjky
YmUxMDU1NmI4ZmVmZWU3M2YuLmZhZmExOWZiMzJkNDU5ZjMyOGYyNGJlNDIwN2IwOWVkMmQ3MGRi
YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9E
T00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuaApAQCAtMjgs
NiArMjgsNyBAQAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgogI2luY2x1ZGUgIkltYWdlT3B0aW9u
cy5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQmFzZS5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvQWN0aXZlRE9NT2JqZWN0Lmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRl
IDx3dGYvT3B0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBAIC00NSw3ICs0Niw3
IEBAIGNsYXNzIEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ7CiBjbGFzcyBXZWJGcmFtZTsKIGNs
YXNzIFdlYkltYWdlOwogCi1jbGFzcyBJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUgOiBwdWJsaWMg
QVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpCdW5kbGVOb2RlSGFuZGxlPiB7Citj
bGFzcyBJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQ
STo6T2JqZWN0OjpUeXBlOjpCdW5kbGVOb2RlSGFuZGxlPiwgcHVibGljIFdlYkNvcmU6OkFjdGl2
ZURPTU9iamVjdCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZlB0cjxJbmplY3RlZEJ1bmRsZU5v
ZGVIYW5kbGU+IGdldE9yQ3JlYXRlKEpTQ29udGV4dFJlZiwgSlNPYmplY3RSZWYpOwogICAgIHN0
YXRpYyBSZWZQdHI8SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlPiBnZXRPckNyZWF0ZShXZWJDb3Jl
OjpOb2RlKik7CkBAIC01Niw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICBXZWJDb3JlOjpOb2RlKiBj
b3JlTm9kZSgpOwogCiAgICAgLy8gQ29udmVuaWVuY2UgRE9NIE9wZXJhdGlvbnMKLSAgICBSZWY8
SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlPiBkb2N1bWVudCgpOworICAgIFJlZlB0cjxJbmplY3Rl
ZEJ1bmRsZU5vZGVIYW5kbGU+IGRvY3VtZW50KCk7CiAKICAgICAvLyBBZGRpdGlvbmFsIERPTSBP
cGVyYXRpb25zCiAgICAgLy8gTm90ZTogVGhlc2Ugc2hvdWxkIG9ubHkgYmUgb3BlcmF0aW9ucyB0
aGF0IGFyZSBub3QgZXhwb3NlZCB0byBKYXZhU2NyaXB0LgpAQCAtOTIsNyArOTMsMTEgQEAgcHJp
dmF0ZToKICAgICBzdGF0aWMgUmVmPEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZT4gY3JlYXRlKFdl
YkNvcmU6Ok5vZGUmKTsKICAgICBJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUoV2ViQ29yZTo6Tm9k
ZSYpOwogCi0gICAgUmVmPFdlYkNvcmU6Ok5vZGU+IG1fbm9kZTsKKyAgICAvLyBBY3RpdmVET01P
YmplY3QuCisgICAgdm9pZCBzdG9wKCkgZmluYWw7CisgICAgY29uc3QgY2hhciogYWN0aXZlRE9N
T2JqZWN0TmFtZSgpIGNvbnN0IGZpbmFsOworCisgICAgUmVmUHRyPFdlYkNvcmU6Ok5vZGU+IG1f
bm9kZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391764</attachid>
            <date>2020-02-26 11:58:43 -0800</date>
            <delta_ts>2020-02-26 12:57:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208218-20200226115843.patch</filename>
            <type>text/plain</type>
            <size>17247</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3NDgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDhmMzk3ZjE4NGQ1MzE1ZWQ1
NjMxZmE5MzQ4NzZhNjNiOGJkNGQ5M2UuLjIwMGJkNmVhOGRhYWVkZmQ5Zjg0MDJmMmFjYmM5Y2Y4
YzkzZTI5NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDggQEAKKzIwMjAtMDItMjYgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIHN1cmUgYSBjbGllbnQgY2Fu
bm90IGNhdXNlIGEgd2hvbGUgRE9NIHRyZWUgdG8gZ2V0IGxlYWtlZCBieSBzaW1wbHkgaG9sZGlu
ZyBvbiB0byBhIFdLQnVuZGxlTm9kZUhhbmRsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4MjE4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgUnlvc3Vr
ZSBOaXdhLgorCisgICAgICAgIE1ha2Ugc3VyZSBhIGNsaWVudCBjYW5ub3QgY2F1c2UgYSB3aG9s
ZSBET00gdHJlZSB0byBnZXQgbGVha2VkIGJ5IHNpbXBseSBob2xkaW5nIG9uIHRvIGEgV0tCdW5k
bGVOb2RlSGFuZGxlLgorICAgICAgICBQcmV2aW91c2x5LCBXS0J1bmRsZU5vZGVIYW5kbGUgd291
bGQgcmVmIGl0cyBub2RlLCB3aGljaCB3b3VsZCBrZWVwIHRoZSB3aG9sZSBIVE1MIGRvY3VtZW50
IGFsaXZlLiBUbyBwcm90ZWN0CisgICAgICAgIGFnYWluc3QgdGhpcywgSW5qZWN0ZWRCdW5kbGVO
b2RlSGFuZGxlIGlzIG5vdyBhbiBBY3RpdmVET01PYmplY3Qgd2hpY2ggbnVsbHMgb3V0IGl0cyBu
b2RlIFJlZlB0ciB3aGVuIHRoZQorICAgICAgICBkb2N1bWVudCBpcyBnZXR0aW5nIHJlYWR5IGZv
ciBkZXN0cnVjdGlvbiAoaS5lLiBBY3RpdmVET01PYmplY3Q6OnN0b3AoKSBpcyBjYWxsZWQpLgor
CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVO
b2RlSGFuZGxlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxl
OjpJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1
bmRsZU5vZGVIYW5kbGU6On5JbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUpOgorICAgICAgICAoV2Vi
S2l0OjpJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6OmNvcmVOb2RlKToKKyAgICAgICAgKFdlYktp
dDo6SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOjpkb2N1bWVudCk6CisgICAgICAgIChXZWJLaXQ6
OkluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6ZWxlbWVudEJvdW5kcyk6CisgICAgICAgIChXZWJL
aXQ6OkluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6cmVuZGVyUmVjdCk6CisgICAgICAgIChXZWJL
aXQ6OkluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6cmVuZGVyZWRJbWFnZSk6CisgICAgICAgIChX
ZWJLaXQ6OkluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6dmlzaWJsZVJhbmdlKToKKyAgICAgICAg
KFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOjpzZXRIVE1MSW5wdXRFbGVtZW50VmFs
dWVGb3JVc2VyKToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOjpz
ZXRIVE1MSW5wdXRFbGVtZW50U3BlbGxjaGVja0VuYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpJ
bmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6OmlzSFRNTElucHV0RWxlbWVudEF1dG9GaWxsZWQgY29u
c3QpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6OmlzSFRNTElu
cHV0RWxlbWVudEF1dG9GaWxsZWRBbmRWaWV3YWJsZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6
OkluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6c2V0SFRNTElucHV0RWxlbWVudEF1dG9GaWxsZWQp
OgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6OnNldEhUTUxJbnB1
dEVsZW1lbnRBdXRvRmlsbGVkQW5kVmlld2FibGUpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3Rl
ZEJ1bmRsZU5vZGVIYW5kbGU6OmlzSFRNTElucHV0RWxlbWVudEF1dG9GaWxsQnV0dG9uRW5hYmxl
ZCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6c2V0
SFRNTElucHV0RWxlbWVudEF1dG9GaWxsQnV0dG9uRW5hYmxlZCk6CisgICAgICAgIChXZWJLaXQ6
OkluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6aHRtbElucHV0RWxlbWVudEF1dG9GaWxsQnV0dG9u
VHlwZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6
aHRtbElucHV0RWxlbWVudExhc3RBdXRvRmlsbEJ1dHRvblR5cGUgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6OmlzQXV0b0ZpbGxBdmFpbGFibGUgY29u
c3QpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6OnNldEF1dG9G
aWxsQXZhaWxhYmxlKToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxl
OjpodG1sSW5wdXRFbGVtZW50QXV0b0ZpbGxCdXR0b25Cb3VuZHMpOgorICAgICAgICAoV2ViS2l0
OjpJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6Omh0bWxJbnB1dEVsZW1lbnRMYXN0Q2hhbmdlV2Fz
VXNlckVkaXQpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6Omh0
bWxUZXh0QXJlYUVsZW1lbnRMYXN0Q2hhbmdlV2FzVXNlckVkaXQpOgorICAgICAgICAoV2ViS2l0
OjpJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6OmlzVGV4dEZpZWxkIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOjpodG1sVGFibGVDZWxsRWxlbWVudENl
bGxBYm92ZSk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6ZG9j
dW1lbnRGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6
aHRtbEZyYW1lRWxlbWVudENvbnRlbnRGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVk
QnVuZGxlTm9kZUhhbmRsZTo6aHRtbElGcmFtZUVsZW1lbnRDb250ZW50RnJhbWUpOgorICAgICAg
ICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6OnN0b3ApOgorICAgICAgICAoV2Vi
S2l0OjpJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6OmFjdGl2ZURPTU9iamVjdE5hbWUgY29uc3Qp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxl
Tm9kZUhhbmRsZS5oOgorCiAyMDIwLTAyLTI2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjI1NzQ3MS4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRC
dW5kbGVOb2RlSGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmNwcAppbmRleCA5MzVmOGRkMzZiZTAx
OWI0ZmFmYmM0ZTQ1NmQxNDZjOTcwYjk5YWE3Li5kMzg3YWRiNjRkZDBkYTZiMjdlNGJmMWMwNjdk
NTFiZTk4NWY5YWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5k
bGUuY3BwCkBAIC04NCwzNyArODQsNDQgQEAgUmVmUHRyPEluamVjdGVkQnVuZGxlTm9kZUhhbmRs
ZT4gSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOjpnZXRPckNyZWF0ZShOb2RlKiBub2QKIAogUmVm
PEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZT4gSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOjpnZXRP
ckNyZWF0ZShOb2RlJiBub2RlKQogewotICAgIERPTU5vZGVIYW5kbGVDYWNoZTo6QWRkUmVzdWx0
IHJlc3VsdCA9IGRvbU5vZGVIYW5kbGVDYWNoZSgpLmFkZCgmbm9kZSwgbnVsbHB0cik7Ci0gICAg
aWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKLSAgICAgICAgcmV0dXJuIFJlZjxJbmplY3RlZEJ1bmRs
ZU5vZGVIYW5kbGU+KCpyZXN1bHQuaXRlcmF0b3ItPnZhbHVlKTsKKyAgICBpZiAoYXV0byogZXhp
c3RpbmdIYW5kbGUgPSBkb21Ob2RlSGFuZGxlQ2FjaGUoKS5nZXQoJm5vZGUpKQorICAgICAgICBy
ZXR1cm4gUmVmPEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZT4oKmV4aXN0aW5nSGFuZGxlKTsKIAot
ICAgIFJlZjxJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU+IG5vZGVIYW5kbGUgPSBJbmplY3RlZEJ1
bmRsZU5vZGVIYW5kbGU6OmNyZWF0ZShub2RlKTsKLSAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVl
ID0gbm9kZUhhbmRsZS5wdHIoKTsKKyAgICBhdXRvIG5vZGVIYW5kbGUgPSBJbmplY3RlZEJ1bmRs
ZU5vZGVIYW5kbGU6OmNyZWF0ZShub2RlKTsKKyAgICBpZiAobm9kZUhhbmRsZS0+Y29yZU5vZGUo
KSkKKyAgICAgICAgZG9tTm9kZUhhbmRsZUNhY2hlKCkuYWRkKG5vZGVIYW5kbGUtPmNvcmVOb2Rl
KCksIG5vZGVIYW5kbGUucHRyKCkpOwogICAgIHJldHVybiBub2RlSGFuZGxlOwogfQogCiBSZWY8
SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlPiBJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6OmNyZWF0
ZShOb2RlJiBub2RlKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEluamVjdGVkQnVuZGxl
Tm9kZUhhbmRsZShub2RlKSk7CisgICAgYXV0byBoYW5kbGUgPSBhZG9wdFJlZigqbmV3IEluamVj
dGVkQnVuZGxlTm9kZUhhbmRsZShub2RlKSk7CisgICAgaGFuZGxlLT5zdXNwZW5kSWZOZWVkZWQo
KTsKKyAgICByZXR1cm4gaGFuZGxlOwogfQogCiBJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6Oklu
amVjdGVkQnVuZGxlTm9kZUhhbmRsZShOb2RlJiBub2RlKQotICAgIDogbV9ub2RlKG5vZGUpCisg
ICAgOiBBY3RpdmVET01PYmplY3Qobm9kZS5kb2N1bWVudCgpKQorICAgICwgbV9ub2RlKCZub2Rl
KQogewogfQogCiBJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6On5JbmplY3RlZEJ1bmRsZU5vZGVI
YW5kbGUoKQogewotICAgIGRvbU5vZGVIYW5kbGVDYWNoZSgpLnJlbW92ZShtX25vZGUucHRyKCkp
OworICAgIGlmIChtX25vZGUpCisgICAgICAgIGRvbU5vZGVIYW5kbGVDYWNoZSgpLnJlbW92ZSht
X25vZGUuZ2V0KCkpOwogfQogCiBOb2RlKiBJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6OmNvcmVO
b2RlKCkKIHsKLSAgICByZXR1cm4gbV9ub2RlLnB0cigpOworICAgIHJldHVybiBtX25vZGUuZ2V0
KCk7CiB9CiAKLVJlZjxJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU+IEluamVjdGVkQnVuZGxlTm9k
ZUhhbmRsZTo6ZG9jdW1lbnQoKQorUmVmUHRyPEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZT4gSW5q
ZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOjpkb2N1bWVudCgpCiB7CisgICAgaWYgKCFtX25vZGUpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworCiAgICAgcmV0dXJuIGdldE9yQ3JlYXRlKG1fbm9kZS0+
ZG9jdW1lbnQoKSk7CiB9CiAKQEAgLTEyNiwxMSArMTMzLDE0IEBAIEludFJlY3QgSW5qZWN0ZWRC
dW5kbGVOb2RlSGFuZGxlOjplbGVtZW50Qm91bmRzKCkKICAgICBpZiAoIWlzPEVsZW1lbnQ+KG1f
bm9kZSkpCiAgICAgICAgIHJldHVybiBJbnRSZWN0KCk7CiAKLSAgICByZXR1cm4gZG93bmNhc3Q8
RWxlbWVudD4obV9ub2RlLmdldCgpKS5ib3VuZHNJblJvb3RWaWV3U3BhY2UoKTsKKyAgICByZXR1
cm4gZG93bmNhc3Q8RWxlbWVudD4oKm1fbm9kZSkuYm91bmRzSW5Sb290Vmlld1NwYWNlKCk7CiB9
CiAgICAgCiBJbnRSZWN0IEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6cmVuZGVyUmVjdChib29s
KiBpc1JlcGxhY2VkKQogeworICAgIGlmICghbV9ub2RlKQorICAgICAgICByZXR1cm4geyB9Owor
CiAgICAgcmV0dXJuIG1fbm9kZS0+cGl4ZWxTbmFwcGVkUmVuZGVyUmVjdChpc1JlcGxhY2VkKTsK
IH0KIApAQCAtMTg4LDYgKzE5OCw5IEBAIHN0YXRpYyBSZWZQdHI8V2ViSW1hZ2U+IGltYWdlRm9y
UmVjdChGcmFtZVZpZXcqIGZyYW1lVmlldywgY29uc3QgSW50UmVjdCYgcGFpbnRpCiAKIFJlZlB0
cjxXZWJJbWFnZT4gSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOjpyZW5kZXJlZEltYWdlKFNuYXBz
aG90T3B0aW9ucyBvcHRpb25zLCBib29sIHNob3VsZEV4Y2x1ZGVPdmVyZmxvdywgY29uc3QgT3B0
aW9uYWw8ZmxvYXQ+JiBiaXRtYXBXaWR0aCkKIHsKKyAgICBpZiAoIW1fbm9kZSkKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisKICAgICBGcmFtZSogZnJhbWUgPSBtX25vZGUtPmRvY3VtZW50KCku
ZnJhbWUoKTsKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTIx
MCw3ICsyMjMsNyBAQCBSZWZQdHI8V2ViSW1hZ2U+IEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6
cmVuZGVyZWRJbWFnZShTbmFwc2hvdE9wdGlvbnMgb3B0aW9ucwogICAgICAgICBwYWludGluZ1Jl
Y3QgPSBzbmFwcGVkSW50UmVjdChyZW5kZXJlci0+cGFpbnRpbmdSb290UmVjdCh0b3BMZXZlbFJl
Y3QpKTsKICAgICB9CiAKLSAgICBmcmFtZVZpZXctPnNldE5vZGVUb0RyYXcobV9ub2RlLnB0cigp
KTsKKyAgICBmcmFtZVZpZXctPnNldE5vZGVUb0RyYXcobV9ub2RlLmdldCgpKTsKICAgICBhdXRv
IGltYWdlID0gaW1hZ2VGb3JSZWN0KGZyYW1lVmlldywgcGFpbnRpbmdSZWN0LCBiaXRtYXBXaWR0
aCwgb3B0aW9ucyk7CiAgICAgZnJhbWVWaWV3LT5zZXROb2RlVG9EcmF3KDApOwogCkBAIC0yMTks
OCArMjMyLDExIEBAIFJlZlB0cjxXZWJJbWFnZT4gSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOjpy
ZW5kZXJlZEltYWdlKFNuYXBzaG90T3B0aW9ucyBvcHRpb25zCiAKIFJlZlB0cjxJbmplY3RlZEJ1
bmRsZVJhbmdlSGFuZGxlPiBJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6OnZpc2libGVSYW5nZSgp
CiB7Ci0gICAgVmlzaWJsZVBvc2l0aW9uIHN0YXJ0ID0gZmlyc3RQb3NpdGlvbkluTm9kZShtX25v
ZGUucHRyKCkpOwotICAgIFZpc2libGVQb3NpdGlvbiBlbmQgPSBsYXN0UG9zaXRpb25Jbk5vZGUo
bV9ub2RlLnB0cigpKTsKKyAgICBpZiAoIW1fbm9kZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisKKyAgICBWaXNpYmxlUG9zaXRpb24gc3RhcnQgPSBmaXJzdFBvc2l0aW9uSW5Ob2RlKG1fbm9k
ZS5nZXQoKSk7CisgICAgVmlzaWJsZVBvc2l0aW9uIGVuZCA9IGxhc3RQb3NpdGlvbkluTm9kZSht
X25vZGUuZ2V0KCkpOwogCiAgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IG1ha2VSYW5nZShzdGFy
dCwgZW5kKTsKICAgICByZXR1cm4gSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZTo6Z2V0T3JDcmVh
dGUocmFuZ2UuZ2V0KCkpOwpAQCAtMjMxLDcgKzI0Nyw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVO
b2RlSGFuZGxlOjpzZXRIVE1MSW5wdXRFbGVtZW50VmFsdWVGb3JVc2VyKGNvbnN0IFN0cmluZyYg
dmFsCiAgICAgaWYgKCFpczxIVE1MSW5wdXRFbGVtZW50PihtX25vZGUpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50PihtX25vZGUuZ2V0KCkpLnNldFZh
bHVlRm9yVXNlcih2YWx1ZSk7CisgICAgZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4oKm1fbm9k
ZSkuc2V0VmFsdWVGb3JVc2VyKHZhbHVlKTsKIH0KIAogdm9pZCBJbmplY3RlZEJ1bmRsZU5vZGVI
YW5kbGU6OnNldEhUTUxJbnB1dEVsZW1lbnRTcGVsbGNoZWNrRW5hYmxlZChib29sIGVuYWJsZWQp
CkBAIC0yMzksNyArMjU1LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6OnNldEhU
TUxJbnB1dEVsZW1lbnRTcGVsbGNoZWNrRW5hYmxlZChib29sIGVuYWJsZWQKICAgICBpZiAoIWlz
PEhUTUxJbnB1dEVsZW1lbnQ+KG1fbm9kZSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGRvd25j
YXN0PEhUTUxJbnB1dEVsZW1lbnQ+KG1fbm9kZS5nZXQoKSkuc2V0U3BlbGxjaGVja0Rpc2FibGVk
RXhjZXB0VGV4dFJlcGxhY2VtZW50KCFlbmFibGVkKTsKKyAgICBkb3duY2FzdDxIVE1MSW5wdXRF
bGVtZW50PigqbV9ub2RlKS5zZXRTcGVsbGNoZWNrRGlzYWJsZWRFeGNlcHRUZXh0UmVwbGFjZW1l
bnQoIWVuYWJsZWQpOwogfQogCiBib29sIEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6aXNIVE1M
SW5wdXRFbGVtZW50QXV0b0ZpbGxlZCgpIGNvbnN0CkBAIC0yNDcsNyArMjYzLDcgQEAgYm9vbCBJ
bmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6OmlzSFRNTElucHV0RWxlbWVudEF1dG9GaWxsZWQoKSBj
b25zdAogICAgIGlmICghaXM8SFRNTElucHV0RWxlbWVudD4obV9ub2RlKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIAotICAgIHJldHVybiBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50Piht
X25vZGUuZ2V0KCkpLmlzQXV0b0ZpbGxlZCgpOworICAgIHJldHVybiBkb3duY2FzdDxIVE1MSW5w
dXRFbGVtZW50PigqbV9ub2RlKS5pc0F1dG9GaWxsZWQoKTsKIH0KIAogYm9vbCBJbmplY3RlZEJ1
bmRsZU5vZGVIYW5kbGU6OmlzSFRNTElucHV0RWxlbWVudEF1dG9GaWxsZWRBbmRWaWV3YWJsZSgp
IGNvbnN0CkBAIC0yNTUsNyArMjcxLDcgQEAgYm9vbCBJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6
OmlzSFRNTElucHV0RWxlbWVudEF1dG9GaWxsZWRBbmRWaWV3YWJsZSgpIGNvbnN0CiAgICAgaWYg
KCFpczxIVE1MSW5wdXRFbGVtZW50PihtX25vZGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICByZXR1cm4gZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4obV9ub2RlLmdldCgpKS5pc0F1
dG9GaWxsZWRBbmRWaWV3YWJsZSgpOworICAgIHJldHVybiBkb3duY2FzdDxIVE1MSW5wdXRFbGVt
ZW50PigqbV9ub2RlKS5pc0F1dG9GaWxsZWRBbmRWaWV3YWJsZSgpOwogfQogCiB2b2lkIEluamVj
dGVkQnVuZGxlTm9kZUhhbmRsZTo6c2V0SFRNTElucHV0RWxlbWVudEF1dG9GaWxsZWQoYm9vbCBm
aWxsZWQpCkBAIC0yNjMsNyArMjc5LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6
OnNldEhUTUxJbnB1dEVsZW1lbnRBdXRvRmlsbGVkKGJvb2wgZmlsbGVkKQogICAgIGlmICghaXM8
SFRNTElucHV0RWxlbWVudD4obV9ub2RlKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZG93bmNh
c3Q8SFRNTElucHV0RWxlbWVudD4obV9ub2RlLmdldCgpKS5zZXRBdXRvRmlsbGVkKGZpbGxlZCk7
CisgICAgZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4oKm1fbm9kZSkuc2V0QXV0b0ZpbGxlZChm
aWxsZWQpOwogfQogCiB2b2lkIEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6c2V0SFRNTElucHV0
RWxlbWVudEF1dG9GaWxsZWRBbmRWaWV3YWJsZShib29sIGF1dG9GaWxsZWRBbmRWaWV3YWJsZSkK
QEAgLTI3MSw3ICsyODcsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6c2V0SFRN
TElucHV0RWxlbWVudEF1dG9GaWxsZWRBbmRWaWV3YWJsZShib29sIGF1dAogICAgIGlmICghaXM8
SFRNTElucHV0RWxlbWVudD4obV9ub2RlKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZG93bmNh
c3Q8SFRNTElucHV0RWxlbWVudD4obV9ub2RlLmdldCgpKS5zZXRBdXRvRmlsbGVkQW5kVmlld2Fi
bGUoYXV0b0ZpbGxlZEFuZFZpZXdhYmxlKTsKKyAgICBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50
PigqbV9ub2RlKS5zZXRBdXRvRmlsbGVkQW5kVmlld2FibGUoYXV0b0ZpbGxlZEFuZFZpZXdhYmxl
KTsKIH0KIAogYm9vbCBJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6OmlzSFRNTElucHV0RWxlbWVu
dEF1dG9GaWxsQnV0dG9uRW5hYmxlZCgpIGNvbnN0CkBAIC0yNzksNyArMjk1LDcgQEAgYm9vbCBJ
bmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6OmlzSFRNTElucHV0RWxlbWVudEF1dG9GaWxsQnV0dG9u
RW5hYmxlZCgpIGNvbnN0CiAgICAgaWYgKCFpczxIVE1MSW5wdXRFbGVtZW50PihtX25vZGUpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgcmV0dXJuIGRvd25jYXN0PEhUTUxJbnB1
dEVsZW1lbnQ+KG1fbm9kZS5nZXQoKSkuYXV0b0ZpbGxCdXR0b25UeXBlKCkgIT0gQXV0b0ZpbGxC
dXR0b25UeXBlOjpOb25lOworICAgIHJldHVybiBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50Pigq
bV9ub2RlKS5hdXRvRmlsbEJ1dHRvblR5cGUoKSAhPSBBdXRvRmlsbEJ1dHRvblR5cGU6Ok5vbmU7
CiB9CiAKIHZvaWQgSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOjpzZXRIVE1MSW5wdXRFbGVtZW50
QXV0b0ZpbGxCdXR0b25FbmFibGVkKEF1dG9GaWxsQnV0dG9uVHlwZSBhdXRvRmlsbEJ1dHRvblR5
cGUpCkBAIC0yODcsMjEgKzMwMywyMSBAQCB2b2lkIEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6
c2V0SFRNTElucHV0RWxlbWVudEF1dG9GaWxsQnV0dG9uRW5hYmxlZChBdXRvRmlsbAogICAgIGlm
ICghaXM8SFRNTElucHV0RWxlbWVudD4obV9ub2RlKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
ZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4obV9ub2RlLmdldCgpKS5zZXRTaG93QXV0b0ZpbGxC
dXR0b24oYXV0b0ZpbGxCdXR0b25UeXBlKTsKKyAgICBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50
PigqbV9ub2RlKS5zZXRTaG93QXV0b0ZpbGxCdXR0b24oYXV0b0ZpbGxCdXR0b25UeXBlKTsKIH0K
IAogQXV0b0ZpbGxCdXR0b25UeXBlIEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6aHRtbElucHV0
RWxlbWVudEF1dG9GaWxsQnV0dG9uVHlwZSgpIGNvbnN0CiB7CiAgICAgaWYgKCFpczxIVE1MSW5w
dXRFbGVtZW50PihtX25vZGUpKQogICAgICAgICByZXR1cm4gQXV0b0ZpbGxCdXR0b25UeXBlOjpO
b25lOwotICAgIHJldHVybiBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50PihtX25vZGUuZ2V0KCkp
LmF1dG9GaWxsQnV0dG9uVHlwZSgpOworICAgIHJldHVybiBkb3duY2FzdDxIVE1MSW5wdXRFbGVt
ZW50PigqbV9ub2RlKS5hdXRvRmlsbEJ1dHRvblR5cGUoKTsKIH0KIAogQXV0b0ZpbGxCdXR0b25U
eXBlIEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6aHRtbElucHV0RWxlbWVudExhc3RBdXRvRmls
bEJ1dHRvblR5cGUoKSBjb25zdAogewogICAgIGlmICghaXM8SFRNTElucHV0RWxlbWVudD4obV9u
b2RlKSkKICAgICAgICAgcmV0dXJuIEF1dG9GaWxsQnV0dG9uVHlwZTo6Tm9uZTsKLSAgICByZXR1
cm4gZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4obV9ub2RlLmdldCgpKS5sYXN0QXV0b0ZpbGxC
dXR0b25UeXBlKCk7CisgICAgcmV0dXJuIGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KCptX25v
ZGUpLmxhc3RBdXRvRmlsbEJ1dHRvblR5cGUoKTsKIH0KIAogYm9vbCBJbmplY3RlZEJ1bmRsZU5v
ZGVIYW5kbGU6OmlzQXV0b0ZpbGxBdmFpbGFibGUoKSBjb25zdApAQCAtMzA5LDcgKzMyNSw3IEBA
IGJvb2wgSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOjppc0F1dG9GaWxsQXZhaWxhYmxlKCkgY29u
c3QKICAgICBpZiAoIWlzPEhUTUxJbnB1dEVsZW1lbnQ+KG1fbm9kZSkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIHJldHVybiBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50PihtX25vZGUu
Z2V0KCkpLmlzQXV0b0ZpbGxBdmFpbGFibGUoKTsKKyAgICByZXR1cm4gZG93bmNhc3Q8SFRNTElu
cHV0RWxlbWVudD4oKm1fbm9kZSkuaXNBdXRvRmlsbEF2YWlsYWJsZSgpOwogfQogCiB2b2lkIElu
amVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6c2V0QXV0b0ZpbGxBdmFpbGFibGUoYm9vbCBhdXRvRmls
bEF2YWlsYWJsZSkKQEAgLTMxNyw3ICszMzMsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlTm9kZUhh
bmRsZTo6c2V0QXV0b0ZpbGxBdmFpbGFibGUoYm9vbCBhdXRvRmlsbEF2YWlsYWJsZSkKICAgICBp
ZiAoIWlzPEhUTUxJbnB1dEVsZW1lbnQ+KG1fbm9kZSkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KG1fbm9kZS5nZXQoKSkuc2V0QXV0b0ZpbGxBdmFp
bGFibGUoYXV0b0ZpbGxBdmFpbGFibGUpOworICAgIGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+
KCptX25vZGUpLnNldEF1dG9GaWxsQXZhaWxhYmxlKGF1dG9GaWxsQXZhaWxhYmxlKTsKIH0KIAog
SW50UmVjdCBJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6Omh0bWxJbnB1dEVsZW1lbnRBdXRvRmls
bEJ1dHRvbkJvdW5kcygpCkBAIC0zMjUsNyArMzQxLDcgQEAgSW50UmVjdCBJbmplY3RlZEJ1bmRs
ZU5vZGVIYW5kbGU6Omh0bWxJbnB1dEVsZW1lbnRBdXRvRmlsbEJ1dHRvbkJvdW5kcygpCiAgICAg
aWYgKCFpczxIVE1MSW5wdXRFbGVtZW50PihtX25vZGUpKQogICAgICAgICByZXR1cm4gSW50UmVj
dCgpOwogCi0gICAgYXV0byBhdXRvRmlsbEJ1dHRvbiA9IGRvd25jYXN0PEhUTUxJbnB1dEVsZW1l
bnQ+KG1fbm9kZS5nZXQoKSkuYXV0b0ZpbGxCdXR0b25FbGVtZW50KCk7CisgICAgYXV0byBhdXRv
RmlsbEJ1dHRvbiA9IGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KCptX25vZGUpLmF1dG9GaWxs
QnV0dG9uRWxlbWVudCgpOwogICAgIGlmICghYXV0b0ZpbGxCdXR0b24pCiAgICAgICAgIHJldHVy
biBJbnRSZWN0KCk7CiAKQEAgLTMzNyw3ICszNTMsNyBAQCBib29sIEluamVjdGVkQnVuZGxlTm9k
ZUhhbmRsZTo6aHRtbElucHV0RWxlbWVudExhc3RDaGFuZ2VXYXNVc2VyRWRpdCgpCiAgICAgaWYg
KCFpczxIVE1MSW5wdXRFbGVtZW50PihtX25vZGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICByZXR1cm4gZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4obV9ub2RlLmdldCgpKS5sYXN0
Q2hhbmdlV2FzVXNlckVkaXQoKTsKKyAgICByZXR1cm4gZG93bmNhc3Q8SFRNTElucHV0RWxlbWVu
dD4oKm1fbm9kZSkubGFzdENoYW5nZVdhc1VzZXJFZGl0KCk7CiB9CiAKIGJvb2wgSW5qZWN0ZWRC
dW5kbGVOb2RlSGFuZGxlOjpodG1sVGV4dEFyZWFFbGVtZW50TGFzdENoYW5nZVdhc1VzZXJFZGl0
KCkKQEAgLTM0NSw3ICszNjEsNyBAQCBib29sIEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6aHRt
bFRleHRBcmVhRWxlbWVudExhc3RDaGFuZ2VXYXNVc2VyRWRpdCgpCiAgICAgaWYgKCFpczxIVE1M
VGV4dEFyZWFFbGVtZW50PihtX25vZGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBy
ZXR1cm4gZG93bmNhc3Q8SFRNTFRleHRBcmVhRWxlbWVudD4obV9ub2RlLmdldCgpKS5sYXN0Q2hh
bmdlV2FzVXNlckVkaXQoKTsKKyAgICByZXR1cm4gZG93bmNhc3Q8SFRNTFRleHRBcmVhRWxlbWVu
dD4oKm1fbm9kZSkubGFzdENoYW5nZVdhc1VzZXJFZGl0KCk7CiB9CiAKIGJvb2wgSW5qZWN0ZWRC
dW5kbGVOb2RlSGFuZGxlOjppc1RleHRGaWVsZCgpIGNvbnN0CkBAIC0zNTMsNyArMzY5LDcgQEAg
Ym9vbCBJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6OmlzVGV4dEZpZWxkKCkgY29uc3QKICAgICBp
ZiAoIWlzPEhUTUxJbnB1dEVsZW1lbnQ+KG1fbm9kZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgIHJldHVybiBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50PihtX25vZGUuZ2V0KCkpLmlz
VGV4dEZpZWxkKCk7CisgICAgcmV0dXJuIGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KCptX25v
ZGUpLmlzVGV4dEZpZWxkKCk7CiB9CiAKIGJvb2wgSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOjpp
c1NlbGVjdEVsZW1lbnQoKSBjb25zdApAQCAtMzY2LDE1ICszODIsMTUgQEAgUmVmUHRyPEluamVj
dGVkQnVuZGxlTm9kZUhhbmRsZT4gSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOjpodG1sVGFibGVD
ZWxsRWxlbWVudEMKICAgICBpZiAoIWlzPEhUTUxUYWJsZUNlbGxFbGVtZW50PihtX25vZGUpKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBnZXRPckNyZWF0ZShkb3duY2Fz
dDxIVE1MVGFibGVDZWxsRWxlbWVudD4obV9ub2RlLmdldCgpKS5jZWxsQWJvdmUoKSk7CisgICAg
cmV0dXJuIGdldE9yQ3JlYXRlKGRvd25jYXN0PEhUTUxUYWJsZUNlbGxFbGVtZW50PigqbV9ub2Rl
KS5jZWxsQWJvdmUoKSk7CiB9CiAKIFJlZlB0cjxXZWJGcmFtZT4gSW5qZWN0ZWRCdW5kbGVOb2Rl
SGFuZGxlOjpkb2N1bWVudEZyYW1lKCkKIHsKLSAgICBpZiAoIW1fbm9kZS0+aXNEb2N1bWVudE5v
ZGUoKSkKKyAgICBpZiAoIW1fbm9kZSB8fCAhbV9ub2RlLT5pc0RvY3VtZW50Tm9kZSgpKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIEZyYW1lKiBmcmFtZSA9IGRvd25jYXN0PERvY3Vt
ZW50PihtX25vZGUuZ2V0KCkpLmZyYW1lKCk7CisgICAgRnJhbWUqIGZyYW1lID0gZG93bmNhc3Q8
RG9jdW1lbnQ+KCptX25vZGUpLmZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKQEAgLTM4Niw3ICs0MDIsNyBAQCBSZWZQdHI8V2ViRnJhbWU+IEluamVj
dGVkQnVuZGxlTm9kZUhhbmRsZTo6aHRtbEZyYW1lRWxlbWVudENvbnRlbnRGcmFtZSgpCiAgICAg
aWYgKCFpczxIVE1MRnJhbWVFbGVtZW50PihtX25vZGUpKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAotICAgIEZyYW1lKiBmcmFtZSA9IGRvd25jYXN0PEhUTUxGcmFtZUVsZW1lbnQ+KG1fbm9k
ZS5nZXQoKSkuY29udGVudEZyYW1lKCk7CisgICAgRnJhbWUqIGZyYW1lID0gZG93bmNhc3Q8SFRN
TEZyYW1lRWxlbWVudD4oKm1fbm9kZSkuY29udGVudEZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTM5OCwxMSArNDE0LDI1IEBAIFJlZlB0cjxX
ZWJGcmFtZT4gSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOjpodG1sSUZyYW1lRWxlbWVudENvbnRl
bnRGcmFtZSgpCiAgICAgaWYgKCFpczxIVE1MSUZyYW1lRWxlbWVudD4obV9ub2RlKSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBGcmFtZSogZnJhbWUgPSBkb3duY2FzdDxIVE1MSUZy
YW1lRWxlbWVudD4obV9ub2RlLmdldCgpKS5jb250ZW50RnJhbWUoKTsKKyAgICBGcmFtZSogZnJh
bWUgPSBkb3duY2FzdDxIVE1MSUZyYW1lRWxlbWVudD4oKm1fbm9kZSkuY29udGVudEZyYW1lKCk7
CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICByZXR1cm4g
V2ViRnJhbWU6OmZyb21Db3JlRnJhbWUoKmZyYW1lKTsKIH0KIAordm9pZCBJbmplY3RlZEJ1bmRs
ZU5vZGVIYW5kbGU6OnN0b3AoKQoreworICAgIC8vIEludmFsaWRhdGUgaGFuZGxlcyB0byBub2Rl
cyBpbnNpZGUgZG9jdW1lbnRzIHRoYXQgYXJlIGFib3V0IHRvIGJlIGRlc3Ryb3llZCBpbiBvcmRl
ciB0byBwcmV2ZW50IGxlYWtzLgorICAgIGlmIChtX25vZGUpIHsKKyAgICAgICAgZG9tTm9kZUhh
bmRsZUNhY2hlKCkucmVtb3ZlKG1fbm9kZS5nZXQoKSk7CisgICAgICAgIG1fbm9kZSA9IG51bGxw
dHI7CisgICAgfQorfQorCitjb25zdCBjaGFyKiBJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6OmFj
dGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdAoreworICAgIHJldHVybiAiSW5qZWN0ZWRCdW5kbGVO
b2RlSGFuZGxlIjsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9k
ZUhhbmRsZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9J
bmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuaAppbmRleCA0MmNmMjIyOGQ1NjhkMjU3ODE0MGY5MmJl
MTA1NTZiOGZlZmVlNzNmLi5mYWZhMTlmYjMyZDQ1OWYzMjhmMjRiZTQyMDdiMDllZDJkNzBkYmJl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9N
L0luamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmgKQEAgLTI4LDYg
KzI4LDcgQEAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKICNpbmNsdWRlICJJbWFnZU9wdGlvbnMu
aCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Jhc2UuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L0FjdGl2ZURPTU9iamVjdC5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8
d3RmL09wdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpAQCAtNDUsNyArNDYsNyBA
QCBjbGFzcyBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkOwogY2xhc3MgV2ViRnJhbWU7CiBjbGFz
cyBXZWJJbWFnZTsKIAotY2xhc3MgSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlIDogcHVibGljIEFQ
STo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6QnVuZGxlTm9kZUhhbmRsZT4geworY2xh
c3MgSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6
Ok9iamVjdDo6VHlwZTo6QnVuZGxlTm9kZUhhbmRsZT4sIHB1YmxpYyBXZWJDb3JlOjpBY3RpdmVE
T01PYmplY3QgewogcHVibGljOgogICAgIHN0YXRpYyBSZWZQdHI8SW5qZWN0ZWRCdW5kbGVOb2Rl
SGFuZGxlPiBnZXRPckNyZWF0ZShKU0NvbnRleHRSZWYsIEpTT2JqZWN0UmVmKTsKICAgICBzdGF0
aWMgUmVmUHRyPEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZT4gZ2V0T3JDcmVhdGUoV2ViQ29yZTo6
Tm9kZSopOwpAQCAtNTYsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAgV2ViQ29yZTo6Tm9kZSogY29y
ZU5vZGUoKTsKIAogICAgIC8vIENvbnZlbmllbmNlIERPTSBPcGVyYXRpb25zCi0gICAgUmVmPElu
amVjdGVkQnVuZGxlTm9kZUhhbmRsZT4gZG9jdW1lbnQoKTsKKyAgICBSZWZQdHI8SW5qZWN0ZWRC
dW5kbGVOb2RlSGFuZGxlPiBkb2N1bWVudCgpOwogCiAgICAgLy8gQWRkaXRpb25hbCBET00gT3Bl
cmF0aW9ucwogICAgIC8vIE5vdGU6IFRoZXNlIHNob3VsZCBvbmx5IGJlIG9wZXJhdGlvbnMgdGhh
dCBhcmUgbm90IGV4cG9zZWQgdG8gSmF2YVNjcmlwdC4KQEAgLTkyLDcgKzkzLDExIEBAIHByaXZh
dGU6CiAgICAgc3RhdGljIFJlZjxJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU+IGNyZWF0ZShXZWJD
b3JlOjpOb2RlJik7CiAgICAgSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlKFdlYkNvcmU6Ok5vZGUm
KTsKIAotICAgIFJlZjxXZWJDb3JlOjpOb2RlPiBtX25vZGU7CisgICAgLy8gQWN0aXZlRE9NT2Jq
ZWN0LgorICAgIHZvaWQgc3RvcCgpIGZpbmFsOworICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9i
amVjdE5hbWUoKSBjb25zdCBmaW5hbDsKKworICAgIFJlZlB0cjxXZWJDb3JlOjpOb2RlPiBtX25v
ZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
</data>

          </attachment>
      

    </bug>

</bugzilla>