<?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>184216</bug_id>
          
          <creation_ts>2018-03-31 19:09:53 -0700</creation_ts>
          <short_desc>Make SecurityOrigin safe to create and use from any thread</short_desc>
          <delta_ts>2018-04-03 09:31:27 -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>WebCore Misc.</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>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>mkwst</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1410909</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-03-31 19:09:53 -0700</bug_when>
    <thetext>It turns out that we have code constructing and using SecurityOrigin objects from non-main threads. This is currently unsafe, mostly because of SecurityOrigin&apos;s reliance on the SchemeRegistry.

Note that it will be safe to:
- Construct a SecurityOrigin from any thread A and use that origin later on same thread A

It will not be safe to:
- Pass a SecurityOrigin to another thread without calling isolatedCopy().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1410926</commentid>
    <comment_count>1</comment_count>
      <attachid>336950</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-03-31 20:32:27 -0700</bug_when>
    <thetext>Created attachment 336950
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1410931</commentid>
    <comment_count>2</comment_count>
      <attachid>336951</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-03-31 21:37:24 -0700</bug_when>
    <thetext>Created attachment 336951
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1411346</commentid>
    <comment_count>3</comment_count>
      <attachid>336951</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-04-02 20:21:15 -0700</bug_when>
    <thetext>Comment on attachment 336951
Patch

I wonder whether we should not be making more SchemeRegistry thread safe.
All the methods only used by Document/DocumentLoader seem fine to me.
I am less sure of the Database one but probably it is and will remain safe?

Out of pure curiosity, it seems that we are really locking for write but maybe we could allow multiple read in parallel?
Especially since we barely touch Schemes.

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

&gt; Source/WebCore/platform/SchemeRegistry.cpp:497
&gt;  {

Ideally these registerXX should take a String&amp;&amp; since most of the time, they are called from IPC that can provide String&amp;&amp;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1411431</commentid>
    <comment_count>4</comment_count>
      <attachid>336951</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-04-03 09:26:52 -0700</bug_when>
    <thetext>Comment on attachment 336951
Patch

Clearing flags on attachment: 336951

Committed r230205: &lt;https://trac.webkit.org/changeset/230205&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1411432</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-04-03 09:26:54 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1411433</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-04-03 09:31:27 -0700</bug_when>
    <thetext>&lt;rdar://problem/39143063&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>336950</attachid>
            <date>2018-03-31 20:32:27 -0700</date>
            <delta_ts>2018-03-31 21:37:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184216-20180331203226.patch</filename>
            <type>text/plain</type>
            <size>26031</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwMTMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmNiOTRhODA2ZDJkNGEz
NjUxZmZlNzE4YjhhYTYwYTQ0ZjJlMjEzMS4uYmY4MTlmMmIzNzA1YmM0ODBjYTQxYzI5OWU2MTE1
MWFmM2E1NjQwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDczIEBACisyMDE4LTAzLTMxICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBTZWN1cml0eU9yaWdp
biBzYWZlIHRvIGNyZWF0ZSBhbmQgdXNlIGZyb20gYW55IHRocmVhZAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg0MjE2CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2UgZm91bmQgdGhhdCB3ZSBoYXZlIGEg
ZGVjZW50IGFtb3VudCBvZiBjb2RlIGNvbnN0cnVjdGluZyBhbmQgdXNpbmcgU2VjdXJpdHlPcmln
aW4KKyAgICAgICAgb2JqZWN0cyBmcm9tIG5vbi1tYWluIHRocmVhZHMuIFVuZm9ydHVuYXRlbHks
IHRoaXMgd2FzIG5vdCBzYWZlLCBtb3N0bHkgZHVlIHRvCisgICAgICAgIFNlY3VyaXR5T3JpZ2lu
J3MgcmVsaWFuY2Ugb24gdGhlIFNjaGVtZVJlZ2lzdHJ5LgorCisgICAgICAgIFRoaXMgcGF0Y2gg
bWFrZXMgaXQgc2FmZSB0byBjb25zdHJ1Y3QgYSBTZWN1cml0eU9yaWdpbiBvbiBhbnkgdGhyZWFk
IEEgYW5kIHVzZQorICAgICAgICBpdCBsYXRlciBvbiB0aGUgc2FtZSB0aHJlYWQgQS4gSG93ZXZl
ciwgZGV2ZWxvcGVycyBzdGlsbCBuZWVkIHRvIGNhbGwgaXNvbGF0ZWRDb3B5KCkKKyAgICAgICAg
aWYgdGhleSB3YW50IHRvIHBhc3Mgc3VjaCBvYmplY3QgdG8gYW5vdGhlciB0aHJlYWQgQi4KKwor
ICAgICAgICAqIHBhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW46OmNhbkRpc3BsYXkgY29uc3QpOgorICAgICAgICAqIHBhZ2UvU2VjdXJpdHlP
cmlnaW4uaDoKKyAgICAgICAgKiBwYWdlL1NlY3VyaXR5UG9saWN5LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Om9yaWdpbkFjY2Vzc01hcExvY2spOgorICAgICAgICAoV2ViQ29yZTo6b3JpZ2luQWNj
ZXNzTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5UG9saWN5Ojppc0FjY2Vzc1doaXRl
TGlzdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5UG9saWN5OjphZGRPcmlnaW5BY2Nl
c3NXaGl0ZWxpc3RFbnRyeSk6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eVBvbGljeTo6cmVt
b3ZlT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkpOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJp
dHlQb2xpY3k6OnJlc2V0T3JpZ2luQWNjZXNzV2hpdGVsaXN0cyk6CisgICAgICAgICogcGxhdGZv
cm0vU2NoZW1lUmVnaXN0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2NoZW1lUmVnaXN0cnlM
b2NrKToKKyAgICAgICAgKFdlYkNvcmU6OmFsbEJ1aWx0aW5TY2hlbWVzKToKKyAgICAgICAgKFdl
YkNvcmU6OmJ1aWx0aW5Mb2NhbFVSTFNjaGVtZXMpOgorICAgICAgICAoV2ViQ29yZTo6bG9jYWxV
UkxTY2hlbWVzKToKKyAgICAgICAgKFdlYkNvcmU6OmRpc3BsYXlJc29sYXRlZFVSTFNjaGVtZXMp
OgorICAgICAgICAoV2ViQ29yZTo6YnVpbHRpblNlY3VyZVNjaGVtZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6c2VjdXJlU2NoZW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpidWlsdGluU2NoZW1lc1dp
dGhVbmlxdWVPcmlnaW5zKToKKyAgICAgICAgKFdlYkNvcmU6OnNjaGVtZXNXaXRoVW5pcXVlT3Jp
Z2lucyk6CisgICAgICAgIChXZWJDb3JlOjpidWlsdGluRW1wdHlEb2N1bWVudFNjaGVtZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6ZW1wdHlEb2N1bWVudFNjaGVtZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6c2NoZW1lc0ZvcmJpZGRlbkZyb21Eb21haW5SZWxheGF0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OmJ1aWx0aW5DYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdFNjaGVtZXMpOgorICAgICAgICAo
V2ViQ29yZTo6Y2FuRGlzcGxheU9ubHlJZkNhblJlcXVlc3RTY2hlbWVzKToKKyAgICAgICAgKFdl
YkNvcmU6Om5vdEFsbG93aW5nSmF2YXNjcmlwdFVSTHNTY2hlbWVzKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjaGVtZVJlZ2lzdHJ5OjpyZWdpc3RlclVSTFNjaGVtZUFzTG9jYWwpOgorICAgICAgICAo
V2ViQ29yZTo6U2NoZW1lUmVnaXN0cnk6OnJlbW92ZVVSTFNjaGVtZVJlZ2lzdGVyZWRBc0xvY2Fs
KToKKyAgICAgICAgKFdlYkNvcmU6OnNjaGVtZXNBbGxvd2luZ0xvY2FsU3RvcmFnZUFjY2Vzc0lu
UHJpdmF0ZUJyb3dzaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OnNjaGVtZXNBbGxvd2luZ0RhdGFi
YXNlQWNjZXNzSW5Qcml2YXRlQnJvd3NpbmcpOgorICAgICAgICAoV2ViQ29yZTo6YnVpbHRpbkNP
UlNFbmFibGVkU2NoZW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpDT1JTRW5hYmxlZFNjaGVtZXMp
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5QnlwYXNzaW5nU2NoZW1l
cyk6CisgICAgICAgIChXZWJDb3JlOjpjYWNoZVBhcnRpdGlvbmluZ1NjaGVtZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6c2VydmljZVdvcmtlclNjaGVtZXMpOgorICAgICAgICAoV2ViQ29yZTo6YWx3
YXlzUmV2YWxpZGF0ZWRTY2hlbWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjaGVtZVJlZ2lzdHJ5
OjpzaG91bGRUcmVhdFVSTFNjaGVtZUFzTG9jYWwpOgorICAgICAgICAoV2ViQ29yZTo6U2NoZW1l
UmVnaXN0cnk6OnJlZ2lzdGVyVVJMU2NoZW1lQXNOb0FjY2Vzcyk6CisgICAgICAgIChXZWJDb3Jl
OjpTY2hlbWVSZWdpc3RyeTo6c2hvdWxkVHJlYXRVUkxTY2hlbWVBc05vQWNjZXNzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjaGVtZVJlZ2lzdHJ5OjpyZWdpc3RlclVSTFNjaGVtZUFzRGlzcGxheUlz
b2xhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjaGVtZVJlZ2lzdHJ5OjpzaG91bGRUcmVhdFVS
TFNjaGVtZUFzRGlzcGxheUlzb2xhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjaGVtZVJlZ2lz
dHJ5OjpyZWdpc3RlclVSTFNjaGVtZUFzU2VjdXJlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjaGVt
ZVJlZ2lzdHJ5OjpzaG91bGRUcmVhdFVSTFNjaGVtZUFzU2VjdXJlKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjaGVtZVJlZ2lzdHJ5OjpjYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdCk6CisgICAgICAg
IChXZWJDb3JlOjpTY2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJBc0NhbkRpc3BsYXlPbmx5SWZDYW5S
ZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjaGVtZVJlZ2lzdHJ5OjpyZWdpc3RlclVSTFNj
aGVtZUFzQnlwYXNzaW5nQ29udGVudFNlY3VyaXR5UG9saWN5KToKKyAgICAgICAgKFdlYkNvcmU6
OlNjaGVtZVJlZ2lzdHJ5OjpyZW1vdmVVUkxTY2hlbWVSZWdpc3RlcmVkQXNCeXBhc3NpbmdDb250
ZW50U2VjdXJpdHlQb2xpY3kpOgorICAgICAgICAoV2ViQ29yZTo6U2NoZW1lUmVnaXN0cnk6OnNj
aGVtZVNob3VsZEJ5cGFzc0NvbnRlbnRTZWN1cml0eVBvbGljeSk6CisgICAgICAgIChXZWJDb3Jl
OjpTY2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVBc0NhY2hlUGFydGl0aW9uZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6U2NoZW1lUmVnaXN0cnk6OnNob3VsZFBhcnRpdGlvbkNhY2hlRm9y
VVJMU2NoZW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlNjaGVtZVJlZ2lzdHJ5OjpyZWdpc3RlclVS
TFNjaGVtZVNlcnZpY2VXb3JrZXJzQ2FuSGFuZGxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjaGVt
ZVJlZ2lzdHJ5OjpjYW5TZXJ2aWNlV29ya2Vyc0hhbmRsZVVSTFNjaGVtZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTY2hlbWVSZWdpc3RyeTo6aXNTZXJ2aWNlV29ya2VyQ29udGFpbmVyQ3VzdG9tU2No
ZW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY2hlbWVSZWdpc3RyeS5oOgorCiAyMDE4LTAzLTMw
ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAo
cjIyOTgyOCk6IEZhY2Vib29rIGxvZ2luIHBvcHVwIGlzIGJsYW5rCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2VjdXJpdHlPcmlnaW4uY3BwCmluZGV4IDYxMmVjYTY5M2UzNWEyYmNlNzgwNjRjMmI0ODE1MDI4
YmY5ZjQzYzIuLmUxZWE1NWM4NjIwNjQwNmMyOTkyNzczM2UwZjgwN2RmNmUyODhjZTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCkBAIC01NTIsMTMgKzU1Miw2IEBAIGJv
b2wgU2VjdXJpdHlPcmlnaW46OmlzU2FtZVNjaGVtZUhvc3RQb3J0KGNvbnN0IFNlY3VyaXR5T3Jp
Z2luJiBvdGhlcikgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotVVJMIFNlY3VyaXR5T3Jp
Z2luOjp1cmxXaXRoVW5pcXVlU2VjdXJpdHlPcmlnaW4oKQotewotICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFVSTD4gdW5pcXVlU2VjdXJpdHlP
cmlnaW5VUkwoUGFyc2VkVVJMU3RyaW5nLCBNQUtFX1NUQVRJQ19TVFJJTkdfSU1QTCgiZGF0YTos
IikpOwotICAgIHJldHVybiB1bmlxdWVTZWN1cml0eU9yaWdpblVSTDsKLX0KLQogYm9vbCBTZWN1
cml0eU9yaWdpbjo6aXNMb2NhbEhvc3RPckxvb3BiYWNrSVBBZGRyZXNzKGNvbnN0IFN0cmluZyYg
aG9zdCkKIHsKICAgICBpZiAoaXNMb29wYmFja0lQQWRkcmVzcyhob3N0KSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvU2VjdXJpdHlPcmlnaW4uaAppbmRleCAyZDk2OTUwNzYwYTM5NWU0ZmNiMTAzMjJkODg1ZTE2
NWQ5NWVhZWMxLi5kY2MxNTI3YzkxMjQ5ZGZmZTdhOTE5OTExM2NhYWM5ZjZhMTBlNGI0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5oCkBAIC0yMDAsOCArMjAwLDYgQEAgcHVibGlj
OgogICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2Jyb3dzZXJz
Lmh0bWwjc2FtZS1vcmlnaW4KICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzU2FtZU9yaWdpbkFz
KGNvbnN0IFNlY3VyaXR5T3JpZ2luJikgY29uc3Q7CiAKLSAgICBzdGF0aWMgVVJMIHVybFdpdGhV
bmlxdWVTZWN1cml0eU9yaWdpbigpOwotCiAgICAgYm9vbCBpc1BvdGVudGlhbGx5VHJ1c3R3b3J0
aHkoKSBjb25zdCB7IHJldHVybiBtX2lzUG90ZW50aWFsbHlUcnVzdHdvcnRoeTsgfQogCiAgICAg
c3RhdGljIGJvb2wgaXNMb2NhbEhvc3RPckxvb3BiYWNrSVBBZGRyZXNzKGNvbnN0IFN0cmluZyYg
aG9zdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3kuY3BwCmluZGV4IDFhZWQwMDQ1
MGIwMGVmMTYwOTQ3M2JiZWJkNDdlMGY3OWExM2E2M2YuLjA5MWZkYjQyOTFlMTc3MmM5OGVjZmQ4
ZWZhMDhkY2FlYjYwMTg2MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJp
dHlQb2xpY3kuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3kuY3Bw
CkBAIC00NSw4ICs0NSwxNSBAQCBzdGF0aWMgU2VjdXJpdHlQb2xpY3k6OkxvY2FsTG9hZFBvbGlj
eSBsb2NhbExvYWRQb2xpY3kgPSBTZWN1cml0eVBvbGljeTo6QWxsb3dMbwogdHlwZWRlZiBWZWN0
b3I8T3JpZ2luQWNjZXNzRW50cnk+IE9yaWdpbkFjY2Vzc1doaXRlTGlzdDsKIHR5cGVkZWYgSGFz
aE1hcDxTdHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxPcmlnaW5BY2Nlc3NXaGl0ZUxpc3Q+PiBPcmln
aW5BY2Nlc3NNYXA7CiAKK3N0YXRpYyBMb2NrJiBvcmlnaW5BY2Nlc3NNYXBMb2NrKCkKK3sKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TG9jaz4gbG9jazsKKyAgICByZXR1cm4gbG9jazsKK30K
Kwogc3RhdGljIE9yaWdpbkFjY2Vzc01hcCYgb3JpZ2luQWNjZXNzTWFwKCkKIHsKKyAgICBBU1NF
UlQob3JpZ2luQWNjZXNzTWFwTG9jaygpLmlzSGVsZCgpKTsKICAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8T3JpZ2luQWNjZXNzTWFwPiBvcmlnaW5BY2Nlc3NNYXA7CiAgICAgcmV0dXJuIG9yaWdp
bkFjY2Vzc01hcDsKIH0KQEAgLTE0Niw2ICsxNTMsNyBAQCBib29sIFNlY3VyaXR5UG9saWN5Ojph
bGxvd1N1YnN0aXR1dGVEYXRhQWNjZXNzVG9Mb2NhbCgpCiAKIGJvb2wgU2VjdXJpdHlQb2xpY3k6
OmlzQWNjZXNzV2hpdGVMaXN0ZWQoY29uc3QgU2VjdXJpdHlPcmlnaW4qIGFjdGl2ZU9yaWdpbiwg
Y29uc3QgU2VjdXJpdHlPcmlnaW4qIHRhcmdldE9yaWdpbikKIHsKKyAgICBMb2NrZXI8TG9jaz4g
bG9ja2VyKG9yaWdpbkFjY2Vzc01hcExvY2soKSk7CiAgICAgaWYgKE9yaWdpbkFjY2Vzc1doaXRl
TGlzdCogbGlzdCA9IG9yaWdpbkFjY2Vzc01hcCgpLmdldChhY3RpdmVPcmlnaW4tPnRvU3RyaW5n
KCkpKSB7CiAgICAgICAgIGZvciAoYXV0byYgZW50cnkgOiAqbGlzdCkgewogICAgICAgICAgICAg
aWYgKGVudHJ5Lm1hdGNoZXNPcmlnaW4oKnRhcmdldE9yaWdpbikpCkBAIC0xNjMsMTIgKzE3MSwx
MyBAQCBib29sIFNlY3VyaXR5UG9saWN5Ojppc0FjY2Vzc1RvVVJMV2hpdGVMaXN0ZWQoY29uc3Qg
U2VjdXJpdHlPcmlnaW4qIGFjdGl2ZU9yaWdpbgogCiB2b2lkIFNlY3VyaXR5UG9saWN5OjphZGRP
cmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShjb25zdCBTZWN1cml0eU9yaWdpbiYgc291cmNlT3Jp
Z2luLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgZGVz
dGluYXRpb25Eb21haW4sIGJvb2wgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpCiB7Ci0gICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBBU1NFUlQoIXNvdXJjZU9yaWdpbi5pc1VuaXF1
ZSgpKTsKICAgICBpZiAoc291cmNlT3JpZ2luLmlzVW5pcXVlKCkpCiAgICAgICAgIHJldHVybjsK
IAogICAgIFN0cmluZyBzb3VyY2VTdHJpbmcgPSBzb3VyY2VPcmlnaW4udG9TdHJpbmcoKTsKKwor
ICAgIExvY2tlcjxMb2NrPiBsb2NrZXIob3JpZ2luQWNjZXNzTWFwTG9jaygpKTsKICAgICBPcmln
aW5BY2Nlc3NNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBvcmlnaW5BY2Nlc3NNYXAoKS5hZGQoc291
cmNlU3RyaW5nLCBudWxscHRyKTsKICAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpCiAgICAgICAg
IHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPE9yaWdpbkFjY2Vzc1do
aXRlTGlzdD4oKTsKQEAgLTE3OSwxMiArMTg4LDEzIEBAIHZvaWQgU2VjdXJpdHlQb2xpY3k6OmFk
ZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBzb3VyY2VP
CiAKIHZvaWQgU2VjdXJpdHlQb2xpY3k6OnJlbW92ZU9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5
KGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBzb3VyY2VPcmlnaW4sIGNvbnN0IFN0cmluZyYgZGVzdGlu
YXRpb25Qcm90b2NvbCwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbkRvbWFpbiwgYm9vbCBhbGxv
d0Rlc3RpbmF0aW9uU3ViZG9tYWlucykKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwog
ICAgIEFTU0VSVCghc291cmNlT3JpZ2luLmlzVW5pcXVlKCkpOwogICAgIGlmIChzb3VyY2VPcmln
aW4uaXNVbmlxdWUoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgU3RyaW5nIHNvdXJjZVN0cmlu
ZyA9IHNvdXJjZU9yaWdpbi50b1N0cmluZygpOworCisgICAgTG9ja2VyPExvY2s+IGxvY2tlcihv
cmlnaW5BY2Nlc3NNYXBMb2NrKCkpOwogICAgIE9yaWdpbkFjY2Vzc01hcCYgbWFwID0gb3JpZ2lu
QWNjZXNzTWFwKCk7CiAgICAgT3JpZ2luQWNjZXNzTWFwOjppdGVyYXRvciBpdCA9IG1hcC5maW5k
KHNvdXJjZVN0cmluZyk7CiAgICAgaWYgKGl0ID09IG1hcC5lbmQoKSkKQEAgLTIwMSw3ICsyMTEs
NyBAQCB2b2lkIFNlY3VyaXR5UG9saWN5OjpyZW1vdmVPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRy
eShjb25zdCBTZWN1cml0eU9yaWdpbiYgc291cgogCiB2b2lkIFNlY3VyaXR5UG9saWN5OjpyZXNl
dE9yaWdpbkFjY2Vzc1doaXRlbGlzdHMoKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CisgICAgTG9ja2VyPExvY2s+IGxvY2tlcihvcmlnaW5BY2Nlc3NNYXBMb2NrKCkpOwogICAgIG9y
aWdpbkFjY2Vzc01hcCgpLmNsZWFyKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1NjaGVtZVJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
aGVtZVJlZ2lzdHJ5LmNwcAppbmRleCA3ZTRkNjEzOTNhZjRjOTJmZjJlZjQ0N2FmOTViYmJjOWU2
MmVkMDhmLi5mYTc1MTNjOWIyNTI5MmQ4MzdhY2E5NzE1NjNiZTQ1ZTYzZDIyNDIxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY2hlbWVSZWdpc3RyeS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2NoZW1lUmVnaXN0cnkuY3BwCkBAIC02NSwxMCArNjUsMTcg
QEAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFVSTFNjaGVtZXNNYXA+IG1ha2VOZXZlckRlc3Ryb3ll
ZFNjaGVtZVNldChjb25zdCBWZWN0b3I8U3QKICAgICByZXR1cm4gc2V0OwogfQogCitzdGF0aWMg
TG9jayYgc2NoZW1lUmVnaXN0cnlMb2NrKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
TG9jaz4gbG9jazsKKyAgICByZXR1cm4gbG9jazsKK30KKwogc3RhdGljIGNvbnN0IFVSTFNjaGVt
ZXNNYXAmIGFsbEJ1aWx0aW5TY2hlbWVzKCkKIHsKICAgICBzdGF0aWMgY29uc3QgYXV0byBzY2hl
bWVzID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKICAgICAgICAgc3RhdGljIGNvbnN0IFN0cmlu
Z1ZlY3RvckZ1bmN0aW9uIGZ1bmN0aW9uc1tdIHsKKyAgICAgICAgICAgIGJ1aWx0aW5Mb2NhbFVS
TFNjaGVtZXMsCiAgICAgICAgICAgICBidWlsdGluU2VjdXJlU2NoZW1lcywKICAgICAgICAgICAg
IGJ1aWx0aW5TY2hlbWVzV2l0aFVuaXF1ZU9yaWdpbnMsCiAgICAgICAgICAgICBidWlsdGluRW1w
dHlEb2N1bWVudFNjaGVtZXMsCkBAIC05MSwxMCArOTgsMTEgQEAgc3RhdGljIGNvbnN0IFVSTFNj
aGVtZXNNYXAmIGFsbEJ1aWx0aW5TY2hlbWVzKCkKICAgICAgICAgfTsKIAogICAgICAgICBVUkxT
Y2hlbWVzTWFwIHNldDsKLSAgICAgICAgZm9yIChhdXRvJiBzY2hlbWUgOiBidWlsdGluTG9jYWxV
UkxTY2hlbWVzKCkpCi0gICAgICAgICAgICBzZXQuYWRkKHNjaGVtZSk7Ci0gICAgICAgIGZvciAo
YXV0byYgZnVuY3Rpb24gOiBmdW5jdGlvbnMpCi0gICAgICAgICAgICBhZGQoc2V0LCBmdW5jdGlv
bik7CisgICAgICAgIHsKKyAgICAgICAgICAgIExvY2tlcjxMb2NrPiBsb2NrZXIoc2NoZW1lUmVn
aXN0cnlMb2NrKCkpOworICAgICAgICAgICAgZm9yIChhdXRvJiBmdW5jdGlvbiA6IGZ1bmN0aW9u
cykKKyAgICAgICAgICAgICAgICBhZGQoc2V0LCBmdW5jdGlvbik7CisgICAgICAgIH0KICAgICAg
ICAgZm9yIChhdXRvJiBzY2hlbWUgOiBvdGhlclNjaGVtZXMpCiAgICAgICAgICAgICBzZXQuYWRk
KHNjaGVtZSk7CiAgICAgICAgIHJldHVybiBzZXQ7CkBAIC0xMDQsNiArMTEyLDcgQEAgc3RhdGlj
IGNvbnN0IFVSTFNjaGVtZXNNYXAmIGFsbEJ1aWx0aW5TY2hlbWVzKCkKIAogc3RhdGljIGNvbnN0
IFVSTFNjaGVtZXNNYXAmIGJ1aWx0aW5Mb2NhbFVSTFNjaGVtZXMoKQogeworICAgIEFTU0VSVChz
Y2hlbWVSZWdpc3RyeUxvY2soKS5pc0hlbGQoKSk7CiAgICAgc3RhdGljIGNvbnN0IGF1dG8gc2No
ZW1lcyA9IG1ha2VOZXZlckRlc3Ryb3llZChVUkxTY2hlbWVzTWFwIHsKICAgICAgICAgImZpbGUi
LAogI2lmIFBMQVRGT1JNKENPQ09BKQpAQCAtMTEzLDI3ICsxMjIsMjMgQEAgc3RhdGljIGNvbnN0
IFVSTFNjaGVtZXNNYXAmIGJ1aWx0aW5Mb2NhbFVSTFNjaGVtZXMoKQogICAgIHJldHVybiBzY2hl
bWVzOwogfQogCi1zdGF0aWMgTG9jayYgbG9jYWxVUkxTY2hlbWVzTG9jaygpCi17Ci0gICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPExvY2s+IGxvY2s7Ci0gICAgcmV0dXJuIGxvY2s7Ci19Ci0KIHN0
YXRpYyBVUkxTY2hlbWVzTWFwJiBsb2NhbFVSTFNjaGVtZXMoKQogewotICAgIEFTU0VSVChsb2Nh
bFVSTFNjaGVtZXNMb2NrKCkuaXNIZWxkKCkpOworICAgIEFTU0VSVChzY2hlbWVSZWdpc3RyeUxv
Y2soKS5pc0hlbGQoKSk7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFVSTFNjaGVtZXNNYXA+
IGxvY2FsU2NoZW1lcyA9IGJ1aWx0aW5Mb2NhbFVSTFNjaGVtZXMoKTsKICAgICByZXR1cm4gbG9j
YWxTY2hlbWVzOwogfQogCiBzdGF0aWMgVVJMU2NoZW1lc01hcCYgZGlzcGxheUlzb2xhdGVkVVJM
U2NoZW1lcygpCiB7CisgICAgQVNTRVJUKHNjaGVtZVJlZ2lzdHJ5TG9jaygpLmlzSGVsZCgpKTsK
ICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VVJMU2NoZW1lc01hcD4gZGlzcGxheUlzb2xhdGVk
U2NoZW1lczsKICAgICByZXR1cm4gZGlzcGxheUlzb2xhdGVkU2NoZW1lczsKIH0KIAogY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGJ1aWx0aW5TZWN1cmVTY2hlbWVzKCkKIHsKKyAgICBBU1NFUlQoc2No
ZW1lUmVnaXN0cnlMb2NrKCkuaXNIZWxkKCkpOwogICAgIHN0YXRpYyBjb25zdCBhdXRvIHNjaGVt
ZXMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoVmVjdG9yPFN0cmluZz4gewogICAgICAgICAiaHR0cHMi
LAogICAgICAgICAiYWJvdXQiLApAQCAtMTQ2LDIxICsxNTEsMTYgQEAgY29uc3QgVmVjdG9yPFN0
cmluZz4mIGJ1aWx0aW5TZWN1cmVTY2hlbWVzKCkKICAgICByZXR1cm4gc2NoZW1lczsKIH0KIAot
c3RhdGljIExvY2smIHNlY3VyZVNjaGVtZXNMb2NrKCkKLXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8TG9jaz4gbG9jazsKLSAgICByZXR1cm4gbG9jazsKLX0KLQogc3RhdGljIFVSTFNjaGVt
ZXNNYXAmIHNlY3VyZVNjaGVtZXMoKQogewotICAgIEFTU0VSVChzZWN1cmVTY2hlbWVzTG9jaygp
LmlzSGVsZCgpKTsKKyAgICBBU1NFUlQoc2NoZW1lUmVnaXN0cnlMb2NrKCkuaXNIZWxkKCkpOwog
ICAgIHN0YXRpYyBhdXRvIHNlY3VyZVNjaGVtZXMgPSBtYWtlTmV2ZXJEZXN0cm95ZWRTY2hlbWVT
ZXQoYnVpbHRpblNlY3VyZVNjaGVtZXMpOwogICAgIHJldHVybiBzZWN1cmVTY2hlbWVzOwogfQog
CiBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYnVpbHRpblNjaGVtZXNXaXRoVW5pcXVlT3JpZ2lucygp
CiB7CisgICAgQVNTRVJUKHNjaGVtZVJlZ2lzdHJ5TG9jaygpLmlzSGVsZCgpKTsKICAgICBzdGF0
aWMgY29uc3QgYXV0byBzY2hlbWVzID0gbWFrZU5ldmVyRGVzdHJveWVkKFZlY3RvcjxTdHJpbmc+
IHsKICAgICAgICAgImFib3V0IiwKICAgICAgICAgImphdmFzY3JpcHQiLApAQCAtMTczLDQyICsx
NzMsNDkgQEAgY29uc3QgVmVjdG9yPFN0cmluZz4mIGJ1aWx0aW5TY2hlbWVzV2l0aFVuaXF1ZU9y
aWdpbnMoKQogCiBzdGF0aWMgVVJMU2NoZW1lc01hcCYgc2NoZW1lc1dpdGhVbmlxdWVPcmlnaW5z
KCkKIHsKKyAgICBBU1NFUlQoc2NoZW1lUmVnaXN0cnlMb2NrKCkuaXNIZWxkKCkpOwogICAgIHN0
YXRpYyBhdXRvIHNjaGVtZXNXaXRoVW5pcXVlT3JpZ2lucyA9IG1ha2VOZXZlckRlc3Ryb3llZFNj
aGVtZVNldChidWlsdGluU2NoZW1lc1dpdGhVbmlxdWVPcmlnaW5zKTsKICAgICByZXR1cm4gc2No
ZW1lc1dpdGhVbmlxdWVPcmlnaW5zOwogfQogCiBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYnVpbHRp
bkVtcHR5RG9jdW1lbnRTY2hlbWVzKCkKIHsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwog
ICAgIHN0YXRpYyBjb25zdCBhdXRvIHNjaGVtZXMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoVmVjdG9y
PFN0cmluZz4geyAiYWJvdXQiIH0pOwogICAgIHJldHVybiBzY2hlbWVzOwogfQogCiBzdGF0aWMg
VVJMU2NoZW1lc01hcCYgZW1wdHlEb2N1bWVudFNjaGVtZXMoKQogeworICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7CiAgICAgc3RhdGljIGF1dG8gZW1wdHlEb2N1bWVudFNjaGVtZXMgPSBtYWtl
TmV2ZXJEZXN0cm95ZWRTY2hlbWVTZXQoYnVpbHRpbkVtcHR5RG9jdW1lbnRTY2hlbWVzKTsKICAg
ICByZXR1cm4gZW1wdHlEb2N1bWVudFNjaGVtZXM7CiB9CiAKIHN0YXRpYyBVUkxTY2hlbWVzTWFw
JiBzY2hlbWVzRm9yYmlkZGVuRnJvbURvbWFpblJlbGF4YXRpb24oKQogeworICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFVSTFNjaGVtZXNNYXA+
IHNjaGVtZXM7CiAgICAgcmV0dXJuIHNjaGVtZXM7CiB9CiAKIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBidWlsdGluQ2FuRGlzcGxheU9ubHlJZkNhblJlcXVlc3RTY2hlbWVzKCkKIHsKKyAgICBBU1NF
UlQoc2NoZW1lUmVnaXN0cnlMb2NrKCkuaXNIZWxkKCkpOwogICAgIHN0YXRpYyBjb25zdCBhdXRv
IHNjaGVtZXMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoVmVjdG9yPFN0cmluZz4geyAiYmxvYiIgfSk7
CiAgICAgcmV0dXJuIHNjaGVtZXM7CiB9CiAKIHN0YXRpYyBVUkxTY2hlbWVzTWFwJiBjYW5EaXNw
bGF5T25seUlmQ2FuUmVxdWVzdFNjaGVtZXMoKQogeworICAgIEFTU0VSVChzY2hlbWVSZWdpc3Ry
eUxvY2soKS5pc0hlbGQoKSk7CiAgICAgc3RhdGljIGF1dG8gY2FuRGlzcGxheU9ubHlJZkNhblJl
cXVlc3RTY2hlbWVzID0gbWFrZU5ldmVyRGVzdHJveWVkU2NoZW1lU2V0KGJ1aWx0aW5DYW5EaXNw
bGF5T25seUlmQ2FuUmVxdWVzdFNjaGVtZXMpOwogICAgIHJldHVybiBjYW5EaXNwbGF5T25seUlm
Q2FuUmVxdWVzdFNjaGVtZXM7CiB9CiAKIHN0YXRpYyBVUkxTY2hlbWVzTWFwJiBub3RBbGxvd2lu
Z0phdmFzY3JpcHRVUkxzU2NoZW1lcygpCiB7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
ICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VVJMU2NoZW1lc01hcD4gbm90QWxsb3dpbmdKYXZh
c2NyaXB0VVJMc1NjaGVtZXM7CiAgICAgcmV0dXJuIG5vdEFsbG93aW5nSmF2YXNjcmlwdFVSTHNT
Y2hlbWVzOwogfQpAQCAtMjE4LDEzICsyMjUsMTMgQEAgdm9pZCBTY2hlbWVSZWdpc3RyeTo6cmVn
aXN0ZXJVUkxTY2hlbWVBc0xvY2FsKGNvbnN0IFN0cmluZyYgc2NoZW1lKQogICAgIGlmIChzY2hl
bWUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIExvY2tlcjxMb2NrPiBsb2NrZXIo
bG9jYWxVUkxTY2hlbWVzTG9jaygpKTsKKyAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKHNjaGVtZVJl
Z2lzdHJ5TG9jaygpKTsKICAgICBsb2NhbFVSTFNjaGVtZXMoKS5hZGQoc2NoZW1lKTsKIH0KIAog
dm9pZCBTY2hlbWVSZWdpc3RyeTo6cmVtb3ZlVVJMU2NoZW1lUmVnaXN0ZXJlZEFzTG9jYWwoY29u
c3QgU3RyaW5nJiBzY2hlbWUpCiB7Ci0gICAgTG9ja2VyPExvY2s+IGxvY2tlcihsb2NhbFVSTFNj
aGVtZXNMb2NrKCkpOworICAgIExvY2tlcjxMb2NrPiBsb2NrZXIoc2NoZW1lUmVnaXN0cnlMb2Nr
KCkpOwogICAgIGlmIChidWlsdGluTG9jYWxVUkxTY2hlbWVzKCkuY29udGFpbnMoc2NoZW1lKSkK
ICAgICAgICAgcmV0dXJuOwogCkBAIC0yMzMsMjQgKzI0MCwyOCBAQCB2b2lkIFNjaGVtZVJlZ2lz
dHJ5OjpyZW1vdmVVUkxTY2hlbWVSZWdpc3RlcmVkQXNMb2NhbChjb25zdCBTdHJpbmcmIHNjaGVt
ZSkKIAogc3RhdGljIFVSTFNjaGVtZXNNYXAmIHNjaGVtZXNBbGxvd2luZ0xvY2FsU3RvcmFnZUFj
Y2Vzc0luUHJpdmF0ZUJyb3dzaW5nKCkKIHsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwog
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxVUkxTY2hlbWVzTWFwPiBzY2hlbWVzQWxsb3dpbmdM
b2NhbFN0b3JhZ2VBY2Nlc3NJblByaXZhdGVCcm93c2luZzsKICAgICByZXR1cm4gc2NoZW1lc0Fs
bG93aW5nTG9jYWxTdG9yYWdlQWNjZXNzSW5Qcml2YXRlQnJvd3Npbmc7CiB9CiAKIHN0YXRpYyBV
UkxTY2hlbWVzTWFwJiBzY2hlbWVzQWxsb3dpbmdEYXRhYmFzZUFjY2Vzc0luUHJpdmF0ZUJyb3dz
aW5nKCkKIHsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxVUkxTY2hlbWVzTWFwPiBzY2hlbWVzQWxsb3dpbmdEYXRhYmFzZUFjY2Vzc0luUHJp
dmF0ZUJyb3dzaW5nOwogICAgIHJldHVybiBzY2hlbWVzQWxsb3dpbmdEYXRhYmFzZUFjY2Vzc0lu
UHJpdmF0ZUJyb3dzaW5nOwogfQogCiBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYnVpbHRpbkNPUlNF
bmFibGVkU2NoZW1lcygpCiB7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBzdGF0
aWMgY29uc3QgYXV0byBzY2hlbWVzID0gbWFrZU5ldmVyRGVzdHJveWVkKFZlY3RvcjxTdHJpbmc+
IHsgImh0dHAiLCAiaHR0cHMiIH0pOwogICAgIHJldHVybiBzY2hlbWVzOwogfQogCiBzdGF0aWMg
VVJMU2NoZW1lc01hcCYgQ09SU0VuYWJsZWRTY2hlbWVzKCkKIHsKKyAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOwogICAgIC8vIEZJWE1FOiBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD03NzE2MAogICAgIHN0YXRpYyBhdXRvIHNjaGVtZXMgPSBtYWtlTmV2ZXJEZXN0cm95
ZWRTY2hlbWVTZXQoYnVpbHRpbkNPUlNFbmFibGVkU2NoZW1lcyk7CiAgICAgcmV0dXJuIHNjaGVt
ZXM7CkBAIC0yNTgsMzEgKzI2OSwyOCBAQCBzdGF0aWMgVVJMU2NoZW1lc01hcCYgQ09SU0VuYWJs
ZWRTY2hlbWVzKCkKIAogc3RhdGljIFVSTFNjaGVtZXNNYXAmIENvbnRlbnRTZWN1cml0eVBvbGlj
eUJ5cGFzc2luZ1NjaGVtZXMoKQogeworICAgIEFTU0VSVChzY2hlbWVSZWdpc3RyeUxvY2soKS5p
c0hlbGQoKSk7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFVSTFNjaGVtZXNNYXA+IHNjaGVt
ZXM7CiAgICAgcmV0dXJuIHNjaGVtZXM7CiB9CiAKIHN0YXRpYyBVUkxTY2hlbWVzTWFwJiBjYWNo
ZVBhcnRpdGlvbmluZ1NjaGVtZXMoKQogeworICAgIEFTU0VSVChzY2hlbWVSZWdpc3RyeUxvY2so
KS5pc0hlbGQoKSk7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFVSTFNjaGVtZXNNYXA+IHNj
aGVtZXM7CiAgICAgcmV0dXJuIHNjaGVtZXM7CiB9CiAKLXN0YXRpYyBMb2NrJiBzZXJ2aWNlV29y
a2VyU2NoZW1lc0xvY2soKQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxMb2NrPiBsb2Nr
OwotICAgIHJldHVybiBsb2NrOwotfQotCiBzdGF0aWMgVVJMU2NoZW1lc01hcCYgc2VydmljZVdv
cmtlclNjaGVtZXMoKQogewotICAgIEFTU0VSVChzZXJ2aWNlV29ya2VyU2NoZW1lc0xvY2soKS5p
c0hlbGQoKSk7CisgICAgQVNTRVJUKHNjaGVtZVJlZ2lzdHJ5TG9jaygpLmlzSGVsZCgpKTsKICAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VVJMU2NoZW1lc01hcD4gc2NoZW1lczsKICAgICByZXR1
cm4gc2NoZW1lczsKIH0KIAogc3RhdGljIFVSTFNjaGVtZXNNYXAmIGFsd2F5c1JldmFsaWRhdGVk
U2NoZW1lcygpCiB7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8VVJMU2NoZW1lc01hcD4gc2NoZW1lczsKICAgICByZXR1cm4gc2NoZW1lczsK
IH0KQEAgLTI5Miw3ICszMDAsNyBAQCBib29sIFNjaGVtZVJlZ2lzdHJ5OjpzaG91bGRUcmVhdFVS
TFNjaGVtZUFzTG9jYWwoY29uc3QgU3RyaW5nJiBzY2hlbWUpCiAgICAgaWYgKHNjaGVtZS5pc051
bGwoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgTG9ja2VyPExvY2s+IGxvY2tlcihs
b2NhbFVSTFNjaGVtZXNMb2NrKCkpOworICAgIExvY2tlcjxMb2NrPiBsb2NrZXIoc2NoZW1lUmVn
aXN0cnlMb2NrKCkpOwogICAgIHJldHVybiBsb2NhbFVSTFNjaGVtZXMoKS5jb250YWlucyhzY2hl
bWUpOwogfQogCkBAIC0zMDAsMjQgKzMwOCwzNiBAQCB2b2lkIFNjaGVtZVJlZ2lzdHJ5OjpyZWdp
c3RlclVSTFNjaGVtZUFzTm9BY2Nlc3MoY29uc3QgU3RyaW5nJiBzY2hlbWUpCiB7CiAgICAgaWYg
KHNjaGVtZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOworCisgICAgTG9ja2VyPExvY2s+IGxv
Y2tlcihzY2hlbWVSZWdpc3RyeUxvY2soKSk7CiAgICAgc2NoZW1lc1dpdGhVbmlxdWVPcmlnaW5z
KCkuYWRkKHNjaGVtZSk7CiB9CiAKIGJvb2wgU2NoZW1lUmVnaXN0cnk6OnNob3VsZFRyZWF0VVJM
U2NoZW1lQXNOb0FjY2Vzcyhjb25zdCBTdHJpbmcmIHNjaGVtZSkKIHsKLSAgICByZXR1cm4gIXNj
aGVtZS5pc051bGwoKSAmJiBzY2hlbWVzV2l0aFVuaXF1ZU9yaWdpbnMoKS5jb250YWlucyhzY2hl
bWUpOworICAgIGlmIChzY2hlbWUuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIExvY2tlcjxMb2NrPiBsb2NrZXIoc2NoZW1lUmVnaXN0cnlMb2NrKCkpOworICAgIHJldHVy
biBzY2hlbWVzV2l0aFVuaXF1ZU9yaWdpbnMoKS5jb250YWlucyhzY2hlbWUpOwogfQogCiB2b2lk
IFNjaGVtZVJlZ2lzdHJ5OjpyZWdpc3RlclVSTFNjaGVtZUFzRGlzcGxheUlzb2xhdGVkKGNvbnN0
IFN0cmluZyYgc2NoZW1lKQogewogICAgIGlmIChzY2hlbWUuaXNOdWxsKCkpCiAgICAgICAgIHJl
dHVybjsKKworICAgIExvY2tlcjxMb2NrPiBsb2NrZXIoc2NoZW1lUmVnaXN0cnlMb2NrKCkpOwog
ICAgIGRpc3BsYXlJc29sYXRlZFVSTFNjaGVtZXMoKS5hZGQoc2NoZW1lKTsKIH0KIAogYm9vbCBT
Y2hlbWVSZWdpc3RyeTo6c2hvdWxkVHJlYXRVUkxTY2hlbWVBc0Rpc3BsYXlJc29sYXRlZChjb25z
dCBTdHJpbmcmIHNjaGVtZSkKIHsKLSAgICByZXR1cm4gIXNjaGVtZS5pc051bGwoKSAmJiBkaXNw
bGF5SXNvbGF0ZWRVUkxTY2hlbWVzKCkuY29udGFpbnMoc2NoZW1lKTsKKyAgICBpZiAoc2NoZW1l
LmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBMb2NrZXI8TG9jaz4gbG9j
a2VyKHNjaGVtZVJlZ2lzdHJ5TG9jaygpKTsKKyAgICByZXR1cm4gZGlzcGxheUlzb2xhdGVkVVJM
U2NoZW1lcygpLmNvbnRhaW5zKHNjaGVtZSk7CiB9CiAKIHZvaWQgU2NoZW1lUmVnaXN0cnk6OnJl
Z2lzdGVyVVJMU2NoZW1lQXNTZWN1cmUoY29uc3QgU3RyaW5nJiBzY2hlbWUpCkBAIC0zMjUsNyAr
MzQ1LDcgQEAgdm9pZCBTY2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVBc1NlY3VyZShj
b25zdCBTdHJpbmcmIHNjaGVtZSkKICAgICBpZiAoc2NoZW1lLmlzTnVsbCgpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKHNlY3VyZVNjaGVtZXNMb2NrKCkpOwor
ICAgIExvY2tlcjxMb2NrPiBsb2NrZXIoc2NoZW1lUmVnaXN0cnlMb2NrKCkpOwogICAgIHNlY3Vy
ZVNjaGVtZXMoKS5hZGQoc2NoZW1lKTsKIH0KIApAQCAtMzM0LDcgKzM1NCw3IEBAIGJvb2wgU2No
ZW1lUmVnaXN0cnk6OnNob3VsZFRyZWF0VVJMU2NoZW1lQXNTZWN1cmUoY29uc3QgU3RyaW5nJiBz
Y2hlbWUpCiAgICAgaWYgKHNjaGVtZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgTG9ja2VyPExvY2s+IGxvY2tlcihzZWN1cmVTY2hlbWVzTG9jaygpKTsKKyAgICBMb2Nr
ZXI8TG9jaz4gbG9ja2VyKHNjaGVtZVJlZ2lzdHJ5TG9jaygpKTsKICAgICByZXR1cm4gc2VjdXJl
U2NoZW1lcygpLmNvbnRhaW5zKHNjaGVtZSk7CiB9CiAKQEAgLTM2OCwxMyArMzg4LDE5IEBAIGJv
b2wgU2NoZW1lUmVnaXN0cnk6OmlzRG9tYWluUmVsYXhhdGlvbkZvcmJpZGRlbkZvclVSTFNjaGVt
ZShjb25zdCBTdHJpbmcmIHNjaGVtCiAKIGJvb2wgU2NoZW1lUmVnaXN0cnk6OmNhbkRpc3BsYXlP
bmx5SWZDYW5SZXF1ZXN0KGNvbnN0IFN0cmluZyYgc2NoZW1lKQogewotICAgIHJldHVybiAhc2No
ZW1lLmlzTnVsbCgpICYmIGNhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0U2NoZW1lcygpLmNvbnRh
aW5zKHNjaGVtZSk7CisgICAgaWYgKHNjaGVtZS5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgTG9ja2VyPExvY2s+IGxvY2tlcihzY2hlbWVSZWdpc3RyeUxvY2soKSk7Cisg
ICAgcmV0dXJuIGNhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0U2NoZW1lcygpLmNvbnRhaW5zKHNj
aGVtZSk7CiB9CiAKIHZvaWQgU2NoZW1lUmVnaXN0cnk6OnJlZ2lzdGVyQXNDYW5EaXNwbGF5T25s
eUlmQ2FuUmVxdWVzdChjb25zdCBTdHJpbmcmIHNjaGVtZSkKIHsKICAgICBpZiAoc2NoZW1lLmlz
TnVsbCgpKQogICAgICAgICByZXR1cm47CisKKyAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKHNjaGVt
ZVJlZ2lzdHJ5TG9jaygpKTsKICAgICBjYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdFNjaGVtZXMo
KS5hZGQoc2NoZW1lKTsKIH0KIApAQCAtNDMwLDYgKzQ1Niw4IEBAIHZvaWQgU2NoZW1lUmVnaXN0
cnk6OnJlZ2lzdGVyVVJMU2NoZW1lQXNCeXBhc3NpbmdDb250ZW50U2VjdXJpdHlQb2xpY3koY29u
c3QgU3RyCiB7CiAgICAgaWYgKHNjaGVtZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOworCisg
ICAgTG9ja2VyPExvY2s+IGxvY2tlcihzY2hlbWVSZWdpc3RyeUxvY2soKSk7CiAgICAgQ29udGVu
dFNlY3VyaXR5UG9saWN5QnlwYXNzaW5nU2NoZW1lcygpLmFkZChzY2hlbWUpOwogfQogCkBAIC00
MzcsMTIgKzQ2NSwxOCBAQCB2b2lkIFNjaGVtZVJlZ2lzdHJ5OjpyZW1vdmVVUkxTY2hlbWVSZWdp
c3RlcmVkQXNCeXBhc3NpbmdDb250ZW50U2VjdXJpdHlQb2xpY3koYwogewogICAgIGlmIChzY2hl
bWUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsKKworICAgIExvY2tlcjxMb2NrPiBsb2NrZXIo
c2NoZW1lUmVnaXN0cnlMb2NrKCkpOwogICAgIENvbnRlbnRTZWN1cml0eVBvbGljeUJ5cGFzc2lu
Z1NjaGVtZXMoKS5yZW1vdmUoc2NoZW1lKTsKIH0KIAogYm9vbCBTY2hlbWVSZWdpc3RyeTo6c2No
ZW1lU2hvdWxkQnlwYXNzQ29udGVudFNlY3VyaXR5UG9saWN5KGNvbnN0IFN0cmluZyYgc2NoZW1l
KQogewotICAgIHJldHVybiAhc2NoZW1lLmlzTnVsbCgpICYmIENvbnRlbnRTZWN1cml0eVBvbGlj
eUJ5cGFzc2luZ1NjaGVtZXMoKS5jb250YWlucyhzY2hlbWUpOworICAgIGlmIChzY2hlbWUuaXNO
dWxsKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIExvY2tlcjxMb2NrPiBsb2NrZXIo
c2NoZW1lUmVnaXN0cnlMb2NrKCkpOworICAgIHJldHVybiBDb250ZW50U2VjdXJpdHlQb2xpY3lC
eXBhc3NpbmdTY2hlbWVzKCkuY29udGFpbnMoc2NoZW1lKTsKIH0KIAogdm9pZCBTY2hlbWVSZWdp
c3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVBc0Fsd2F5c1JldmFsaWRhdGVkKGNvbnN0IFN0cmluZyYg
c2NoZW1lKQpAQCAtNDYxLDEyICs0OTUsMTggQEAgdm9pZCBTY2hlbWVSZWdpc3RyeTo6cmVnaXN0
ZXJVUkxTY2hlbWVBc0NhY2hlUGFydGl0aW9uZWQoY29uc3QgU3RyaW5nJiBzY2hlbWUpCiB7CiAg
ICAgaWYgKHNjaGVtZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOworCisgICAgTG9ja2VyPExv
Y2s+IGxvY2tlcihzY2hlbWVSZWdpc3RyeUxvY2soKSk7CiAgICAgY2FjaGVQYXJ0aXRpb25pbmdT
Y2hlbWVzKCkuYWRkKHNjaGVtZSk7CiB9CiAKIGJvb2wgU2NoZW1lUmVnaXN0cnk6OnNob3VsZFBh
cnRpdGlvbkNhY2hlRm9yVVJMU2NoZW1lKGNvbnN0IFN0cmluZyYgc2NoZW1lKQogewotICAgIHJl
dHVybiAhc2NoZW1lLmlzTnVsbCgpICYmIGNhY2hlUGFydGl0aW9uaW5nU2NoZW1lcygpLmNvbnRh
aW5zKHNjaGVtZSk7CisgICAgaWYgKHNjaGVtZS5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgTG9ja2VyPExvY2s+IGxvY2tlcihzY2hlbWVSZWdpc3RyeUxvY2soKSk7Cisg
ICAgcmV0dXJuIGNhY2hlUGFydGl0aW9uaW5nU2NoZW1lcygpLmNvbnRhaW5zKHNjaGVtZSk7CiB9
CiAKIHZvaWQgU2NoZW1lUmVnaXN0cnk6OnJlZ2lzdGVyVVJMU2NoZW1lU2VydmljZVdvcmtlcnND
YW5IYW5kbGUoY29uc3QgU3RyaW5nJiBzY2hlbWUpCkBAIC00NzQsNyArNTE0LDcgQEAgdm9pZCBT
Y2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVTZXJ2aWNlV29ya2Vyc0NhbkhhbmRsZShj
b25zdCBTdHJpbmcmIHNjaGUKICAgICBpZiAoc2NoZW1lLmlzTnVsbCgpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKHNlcnZpY2VXb3JrZXJTY2hlbWVzTG9jaygp
KTsKKyAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKHNjaGVtZVJlZ2lzdHJ5TG9jaygpKTsKICAgICBz
ZXJ2aWNlV29ya2VyU2NoZW1lcygpLmFkZChzY2hlbWUpOwogfQogCkBAIC00OTAsMTMgKzUzMCwx
MyBAQCBib29sIFNjaGVtZVJlZ2lzdHJ5OjpjYW5TZXJ2aWNlV29ya2Vyc0hhbmRsZVVSTFNjaGVt
ZShjb25zdCBTdHJpbmcmIHNjaGVtZSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0K
IAotICAgIExvY2tlcjxMb2NrPiBsb2NrZXIoc2VydmljZVdvcmtlclNjaGVtZXNMb2NrKCkpOwor
ICAgIExvY2tlcjxMb2NrPiBsb2NrZXIoc2NoZW1lUmVnaXN0cnlMb2NrKCkpOwogICAgIHJldHVy
biBzZXJ2aWNlV29ya2VyU2NoZW1lcygpLmNvbnRhaW5zKHNjaGVtZSk7CiB9CiAKIGJvb2wgU2No
ZW1lUmVnaXN0cnk6OmlzU2VydmljZVdvcmtlckNvbnRhaW5lckN1c3RvbVNjaGVtZShjb25zdCBT
dHJpbmcmIHNjaGVtZSkKIHsKLSAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKHNlcnZpY2VXb3JrZXJT
Y2hlbWVzTG9jaygpKTsKKyAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKHNjaGVtZVJlZ2lzdHJ5TG9j
aygpKTsKICAgICByZXR1cm4gIXNjaGVtZS5pc051bGwoKSAmJiBzZXJ2aWNlV29ya2VyU2NoZW1l
cygpLmNvbnRhaW5zKHNjaGVtZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1NjaGVtZVJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY2hlbWVS
ZWdpc3RyeS5oCmluZGV4IGY3MGY5ZmNhYzQ3MDAzNjE2Y2Y5MDZiYzJjNjRlODVkMDg4YTI4ZjYu
LjBiOTNiZGIzMDYwZjE2NjZkNmY3NGRkZTI4NGZhMTgyNjliY2NkMmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NjaGVtZVJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2NoZW1lUmVnaXN0cnkuaApAQCAtMzcsMjUgKzM3LDI1IEBAIHVzaW5nIFVS
TFNjaGVtZXNNYXAgPSBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPjsK
IAogY2xhc3MgU2NoZW1lUmVnaXN0cnkgewogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyB2b2lkIHJlZ2lzdGVyVVJMU2NoZW1lQXNMb2NhbChjb25zdCBTdHJpbmcmKTsKLSAgICBz
dGF0aWMgdm9pZCByZW1vdmVVUkxTY2hlbWVSZWdpc3RlcmVkQXNMb2NhbChjb25zdCBTdHJpbmcm
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCByZWdpc3RlclVSTFNjaGVtZUFzTG9j
YWwoY29uc3QgU3RyaW5nJik7IC8vIFRocmVhZCBzYWZlLgorICAgIHN0YXRpYyB2b2lkIHJlbW92
ZVVSTFNjaGVtZVJlZ2lzdGVyZWRBc0xvY2FsKGNvbnN0IFN0cmluZyYpOyAvLyBUaHJlYWQgc2Fm
ZS4KIAotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIHNob3VsZFRyZWF0VVJMU2NoZW1l
QXNMb2NhbChjb25zdCBTdHJpbmcmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBz
aG91bGRUcmVhdFVSTFNjaGVtZUFzTG9jYWwoY29uc3QgU3RyaW5nJik7IC8vIFRocmVhZCBzYWZl
LgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGlzQnVpbHRpblNjaGVtZShjb25zdCBT
dHJpbmcmKTsKICAgICAKICAgICAvLyBTZWN1cmUgc2NoZW1lcyBkbyBub3QgdHJpZ2dlciBtaXhl
ZCBjb250ZW50IHdhcm5pbmdzLiBGb3IgZXhhbXBsZSwKICAgICAvLyBodHRwcyBhbmQgZGF0YSBh
cmUgc2VjdXJlIHNjaGVtZXMgYmVjYXVzZSB0aGV5IGNhbm5vdCBiZSBjb3JydXB0ZWQgYnkKICAg
ICAvLyBhY3RpdmUgbmV0d29yayBhdHRhY2tlcnMuCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IHZvaWQgcmVnaXN0ZXJVUkxTY2hlbWVBc1NlY3VyZShjb25zdCBTdHJpbmcmKTsKLSAgICBzdGF0
aWMgYm9vbCBzaG91bGRUcmVhdFVSTFNjaGVtZUFzU2VjdXJlKGNvbnN0IFN0cmluZyYpOworICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHJlZ2lzdGVyVVJMU2NoZW1lQXNTZWN1cmUoY29u
c3QgU3RyaW5nJik7IC8vIFRocmVhZCBzYWZlLgorICAgIHN0YXRpYyBib29sIHNob3VsZFRyZWF0
VVJMU2NoZW1lQXNTZWN1cmUoY29uc3QgU3RyaW5nJik7IC8vIFRocmVhZCBzYWZlLgogCi0gICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgcmVnaXN0ZXJVUkxTY2hlbWVBc05vQWNjZXNzKGNv
bnN0IFN0cmluZyYpOwotICAgIHN0YXRpYyBib29sIHNob3VsZFRyZWF0VVJMU2NoZW1lQXNOb0Fj
Y2Vzcyhjb25zdCBTdHJpbmcmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCByZWdp
c3RlclVSTFNjaGVtZUFzTm9BY2Nlc3MoY29uc3QgU3RyaW5nJik7IC8vIFRocmVhZCBzYWZlLgor
ICAgIHN0YXRpYyBib29sIHNob3VsZFRyZWF0VVJMU2NoZW1lQXNOb0FjY2Vzcyhjb25zdCBTdHJp
bmcmKTsgLy8gVGhyZWFkIHNhZmUuCiAKICAgICAvLyBEaXNwbGF5LWlzb2xhdGVkIHNjaGVtZXMg
Y2FuIG9ubHkgYmUgZGlzcGxheWVkIChpbiB0aGUgc2Vuc2Ugb2YKICAgICAvLyBTZWN1cml0eU9y
aWdpbjo6Y2FuRGlzcGxheSkgYnkgZG9jdW1lbnRzIGZyb20gdGhlIHNhbWUgc2NoZW1lLgotICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHJlZ2lzdGVyVVJMU2NoZW1lQXNEaXNwbGF5SXNv
bGF0ZWQoY29uc3QgU3RyaW5nJik7Ci0gICAgc3RhdGljIGJvb2wgc2hvdWxkVHJlYXRVUkxTY2hl
bWVBc0Rpc3BsYXlJc29sYXRlZChjb25zdCBTdHJpbmcmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgdm9pZCByZWdpc3RlclVSTFNjaGVtZUFzRGlzcGxheUlzb2xhdGVkKGNvbnN0IFN0cmlu
ZyYpOyAvLyBUaHJlYWQgc2FmZS4KKyAgICBzdGF0aWMgYm9vbCBzaG91bGRUcmVhdFVSTFNjaGVt
ZUFzRGlzcGxheUlzb2xhdGVkKGNvbnN0IFN0cmluZyYpOyAvLyBUaHJlYWQgc2FmZS4KIAogICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHJlZ2lzdGVyVVJMU2NoZW1lQXNFbXB0eURvY3Vt
ZW50KGNvbnN0IFN0cmluZyYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIHNob3Vs
ZExvYWRVUkxTY2hlbWVBc0VtcHR5RG9jdW1lbnQoY29uc3QgU3RyaW5nJik7CkBAIC02NSw4ICs2
NSw4IEBAIHB1YmxpYzoKIAogICAgIC8vIFN1Y2ggc2NoZW1lcyBzaG91bGQgZGVsZWdhdGUgdG8g
U2VjdXJpdHlPcmlnaW46OmNhblJlcXVlc3QgZm9yIGFueSBVUkwKICAgICAvLyBwYXNzZWQgdG8g
U2VjdXJpdHlPcmlnaW46OmNhbkRpc3BsYXkuCi0gICAgc3RhdGljIGJvb2wgY2FuRGlzcGxheU9u
bHlJZkNhblJlcXVlc3QoY29uc3QgU3RyaW5nJiBzY2hlbWUpOwotICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyB2b2lkIHJlZ2lzdGVyQXNDYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdChjb25zdCBT
dHJpbmcmIHNjaGVtZSk7CisgICAgc3RhdGljIGJvb2wgY2FuRGlzcGxheU9ubHlJZkNhblJlcXVl
c3QoY29uc3QgU3RyaW5nJiBzY2hlbWUpOyAvLyBUaHJlYWQgc2FmZS4KKyAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgdm9pZCByZWdpc3RlckFzQ2FuRGlzcGxheU9ubHlJZkNhblJlcXVlc3QoY29u
c3QgU3RyaW5nJiBzY2hlbWUpOyAvLyBUaHJlYWQgc2FmZS4KIAogICAgIC8vIFNjaGVtZXMgYWdh
aW5zdCB3aGljaCBqYXZhc2NyaXB0OiBVUkxzIHNob3VsZCBub3QgYmUgYWxsb3dlZCB0byBydW4g
KHN0b3AKICAgICAvLyBib29rbWFya2xldHMgZnJvbSBydW5uaW5nIG9uIHNlbnNpdGl2ZSBwYWdl
cykuIApAQCAtODYsMjIgKzg2LDIyIEBAIHB1YmxpYzoKIAogICAgIC8vIEFsbG93IHJlc291cmNl
cyBmcm9tIHNvbWUgc2NoZW1lcyB0byBsb2FkIG9uIGEgcGFnZSwgcmVnYXJkbGVzcyBvZiBpdHMK
ICAgICAvLyBDb250ZW50IFNlY3VyaXR5IFBvbGljeS4KLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgdm9pZCByZWdpc3RlclVSTFNjaGVtZUFzQnlwYXNzaW5nQ29udGVudFNlY3VyaXR5UG9saWN5
KGNvbnN0IFN0cmluZyYgc2NoZW1lKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBy
ZW1vdmVVUkxTY2hlbWVSZWdpc3RlcmVkQXNCeXBhc3NpbmdDb250ZW50U2VjdXJpdHlQb2xpY3ko
Y29uc3QgU3RyaW5nJiBzY2hlbWUpOwotICAgIHN0YXRpYyBib29sIHNjaGVtZVNob3VsZEJ5cGFz
c0NvbnRlbnRTZWN1cml0eVBvbGljeShjb25zdCBTdHJpbmcmIHNjaGVtZSk7CisgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIHZvaWQgcmVnaXN0ZXJVUkxTY2hlbWVBc0J5cGFzc2luZ0NvbnRlbnRT
ZWN1cml0eVBvbGljeShjb25zdCBTdHJpbmcmIHNjaGVtZSk7IC8vIFRocmVhZCBzYWZlLgorICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHJlbW92ZVVSTFNjaGVtZVJlZ2lzdGVyZWRBc0J5
cGFzc2luZ0NvbnRlbnRTZWN1cml0eVBvbGljeShjb25zdCBTdHJpbmcmIHNjaGVtZSk7IC8vIFRo
cmVhZCBzYWZlLgorICAgIHN0YXRpYyBib29sIHNjaGVtZVNob3VsZEJ5cGFzc0NvbnRlbnRTZWN1
cml0eVBvbGljeShjb25zdCBTdHJpbmcmIHNjaGVtZSk7IC8vIFRocmVhZCBzYWZlLgogCiAgICAg
Ly8gU2NoZW1lcyB3aG9zZSByZXNwb25zZXMgc2hvdWxkIGFsd2F5cyBiZSByZXZhbGlkYXRlZC4K
ICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCByZWdpc3RlclVSTFNjaGVtZUFzQWx3YXlz
UmV2YWxpZGF0ZWQoY29uc3QgU3RyaW5nJik7CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkQWx3YXlz
UmV2YWxpZGF0ZVVSTFNjaGVtZShjb25zdCBTdHJpbmcmKTsKIAogICAgIC8vIFNjaGVtZXMgd2hv
c2UgcmVxdWVzdHMgc2hvdWxkIGJlIHBhcnRpdGlvbmVkIGluIHRoZSBjYWNoZQotICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyB2b2lkIHJlZ2lzdGVyVVJMU2NoZW1lQXNDYWNoZVBhcnRpdGlvbmVk
KGNvbnN0IFN0cmluZyYgc2NoZW1lKTsKLSAgICBzdGF0aWMgYm9vbCBzaG91bGRQYXJ0aXRpb25D
YWNoZUZvclVSTFNjaGVtZShjb25zdCBTdHJpbmcmIHNjaGVtZSk7CisgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIHZvaWQgcmVnaXN0ZXJVUkxTY2hlbWVBc0NhY2hlUGFydGl0aW9uZWQoY29uc3Qg
U3RyaW5nJiBzY2hlbWUpOyAvLyBUaHJlYWQgc2FmZS4KKyAgICBzdGF0aWMgYm9vbCBzaG91bGRQ
YXJ0aXRpb25DYWNoZUZvclVSTFNjaGVtZShjb25zdCBTdHJpbmcmIHNjaGVtZSk7IC8vIFRocmVh
ZCBzYWZlLgogCiAgICAgLy8gU2NoZW1lcyBiZXNpZGVzIGh0dHAocykgdGhhdCBzZXJ2aWNlIHdv
cmtlcnMgYXJlIGFsbG93ZWQgdG8gaGFuZGxlCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZv
aWQgcmVnaXN0ZXJVUkxTY2hlbWVTZXJ2aWNlV29ya2Vyc0NhbkhhbmRsZShjb25zdCBTdHJpbmcm
IHNjaGVtZSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgY2FuU2VydmljZVdvcmtl
cnNIYW5kbGVVUkxTY2hlbWUoY29uc3QgU3RyaW5nJiBzY2hlbWUpOwotICAgIHN0YXRpYyBib29s
IGlzU2VydmljZVdvcmtlckNvbnRhaW5lckN1c3RvbVNjaGVtZShjb25zdCBTdHJpbmcmIHNjaGVt
ZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgcmVnaXN0ZXJVUkxTY2hlbWVTZXJ2
aWNlV29ya2Vyc0NhbkhhbmRsZShjb25zdCBTdHJpbmcmIHNjaGVtZSk7IC8vIFRocmVhZCBzYWZl
LgorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGNhblNlcnZpY2VXb3JrZXJzSGFuZGxl
VVJMU2NoZW1lKGNvbnN0IFN0cmluZyYgc2NoZW1lKTsgLy8gVGhyZWFkIHNhZmUuCisgICAgc3Rh
dGljIGJvb2wgaXNTZXJ2aWNlV29ya2VyQ29udGFpbmVyQ3VzdG9tU2NoZW1lKGNvbnN0IFN0cmlu
ZyYgc2NoZW1lKTsgLy8gVGhyZWFkIHNhZmUuCiAKICAgICBzdGF0aWMgYm9vbCBpc1VzZXJFeHRl
bnNpb25TY2hlbWUoY29uc3QgU3RyaW5nJiBzY2hlbWUpOwogfTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>336951</attachid>
            <date>2018-03-31 21:37:24 -0700</date>
            <delta_ts>2018-04-03 09:26:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184216-20180331213724.patch</filename>
            <type>text/plain</type>
            <size>26587</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwMTMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmNiOTRhODA2ZDJkNGEz
NjUxZmZlNzE4YjhhYTYwYTQ0ZjJlMjEzMS4uYmY4MTlmMmIzNzA1YmM0ODBjYTQxYzI5OWU2MTE1
MWFmM2E1NjQwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDczIEBACisyMDE4LTAzLTMxICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBTZWN1cml0eU9yaWdp
biBzYWZlIHRvIGNyZWF0ZSBhbmQgdXNlIGZyb20gYW55IHRocmVhZAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg0MjE2CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2UgZm91bmQgdGhhdCB3ZSBoYXZlIGEg
ZGVjZW50IGFtb3VudCBvZiBjb2RlIGNvbnN0cnVjdGluZyBhbmQgdXNpbmcgU2VjdXJpdHlPcmln
aW4KKyAgICAgICAgb2JqZWN0cyBmcm9tIG5vbi1tYWluIHRocmVhZHMuIFVuZm9ydHVuYXRlbHks
IHRoaXMgd2FzIG5vdCBzYWZlLCBtb3N0bHkgZHVlIHRvCisgICAgICAgIFNlY3VyaXR5T3JpZ2lu
J3MgcmVsaWFuY2Ugb24gdGhlIFNjaGVtZVJlZ2lzdHJ5LgorCisgICAgICAgIFRoaXMgcGF0Y2gg
bWFrZXMgaXQgc2FmZSB0byBjb25zdHJ1Y3QgYSBTZWN1cml0eU9yaWdpbiBvbiBhbnkgdGhyZWFk
IEEgYW5kIHVzZQorICAgICAgICBpdCBsYXRlciBvbiB0aGUgc2FtZSB0aHJlYWQgQS4gSG93ZXZl
ciwgZGV2ZWxvcGVycyBzdGlsbCBuZWVkIHRvIGNhbGwgaXNvbGF0ZWRDb3B5KCkKKyAgICAgICAg
aWYgdGhleSB3YW50IHRvIHBhc3Mgc3VjaCBvYmplY3QgdG8gYW5vdGhlciB0aHJlYWQgQi4KKwor
ICAgICAgICAqIHBhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW46OmNhbkRpc3BsYXkgY29uc3QpOgorICAgICAgICAqIHBhZ2UvU2VjdXJpdHlP
cmlnaW4uaDoKKyAgICAgICAgKiBwYWdlL1NlY3VyaXR5UG9saWN5LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Om9yaWdpbkFjY2Vzc01hcExvY2spOgorICAgICAgICAoV2ViQ29yZTo6b3JpZ2luQWNj
ZXNzTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5UG9saWN5Ojppc0FjY2Vzc1doaXRl
TGlzdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5UG9saWN5OjphZGRPcmlnaW5BY2Nl
c3NXaGl0ZWxpc3RFbnRyeSk6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eVBvbGljeTo6cmVt
b3ZlT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkpOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJp
dHlQb2xpY3k6OnJlc2V0T3JpZ2luQWNjZXNzV2hpdGVsaXN0cyk6CisgICAgICAgICogcGxhdGZv
cm0vU2NoZW1lUmVnaXN0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2NoZW1lUmVnaXN0cnlM
b2NrKToKKyAgICAgICAgKFdlYkNvcmU6OmFsbEJ1aWx0aW5TY2hlbWVzKToKKyAgICAgICAgKFdl
YkNvcmU6OmJ1aWx0aW5Mb2NhbFVSTFNjaGVtZXMpOgorICAgICAgICAoV2ViQ29yZTo6bG9jYWxV
UkxTY2hlbWVzKToKKyAgICAgICAgKFdlYkNvcmU6OmRpc3BsYXlJc29sYXRlZFVSTFNjaGVtZXMp
OgorICAgICAgICAoV2ViQ29yZTo6YnVpbHRpblNlY3VyZVNjaGVtZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6c2VjdXJlU2NoZW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpidWlsdGluU2NoZW1lc1dp
dGhVbmlxdWVPcmlnaW5zKToKKyAgICAgICAgKFdlYkNvcmU6OnNjaGVtZXNXaXRoVW5pcXVlT3Jp
Z2lucyk6CisgICAgICAgIChXZWJDb3JlOjpidWlsdGluRW1wdHlEb2N1bWVudFNjaGVtZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6ZW1wdHlEb2N1bWVudFNjaGVtZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6c2NoZW1lc0ZvcmJpZGRlbkZyb21Eb21haW5SZWxheGF0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OmJ1aWx0aW5DYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdFNjaGVtZXMpOgorICAgICAgICAo
V2ViQ29yZTo6Y2FuRGlzcGxheU9ubHlJZkNhblJlcXVlc3RTY2hlbWVzKToKKyAgICAgICAgKFdl
YkNvcmU6Om5vdEFsbG93aW5nSmF2YXNjcmlwdFVSTHNTY2hlbWVzKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjaGVtZVJlZ2lzdHJ5OjpyZWdpc3RlclVSTFNjaGVtZUFzTG9jYWwpOgorICAgICAgICAo
V2ViQ29yZTo6U2NoZW1lUmVnaXN0cnk6OnJlbW92ZVVSTFNjaGVtZVJlZ2lzdGVyZWRBc0xvY2Fs
KToKKyAgICAgICAgKFdlYkNvcmU6OnNjaGVtZXNBbGxvd2luZ0xvY2FsU3RvcmFnZUFjY2Vzc0lu
UHJpdmF0ZUJyb3dzaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OnNjaGVtZXNBbGxvd2luZ0RhdGFi
YXNlQWNjZXNzSW5Qcml2YXRlQnJvd3NpbmcpOgorICAgICAgICAoV2ViQ29yZTo6YnVpbHRpbkNP
UlNFbmFibGVkU2NoZW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpDT1JTRW5hYmxlZFNjaGVtZXMp
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5QnlwYXNzaW5nU2NoZW1l
cyk6CisgICAgICAgIChXZWJDb3JlOjpjYWNoZVBhcnRpdGlvbmluZ1NjaGVtZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6c2VydmljZVdvcmtlclNjaGVtZXMpOgorICAgICAgICAoV2ViQ29yZTo6YWx3
YXlzUmV2YWxpZGF0ZWRTY2hlbWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjaGVtZVJlZ2lzdHJ5
OjpzaG91bGRUcmVhdFVSTFNjaGVtZUFzTG9jYWwpOgorICAgICAgICAoV2ViQ29yZTo6U2NoZW1l
UmVnaXN0cnk6OnJlZ2lzdGVyVVJMU2NoZW1lQXNOb0FjY2Vzcyk6CisgICAgICAgIChXZWJDb3Jl
OjpTY2hlbWVSZWdpc3RyeTo6c2hvdWxkVHJlYXRVUkxTY2hlbWVBc05vQWNjZXNzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjaGVtZVJlZ2lzdHJ5OjpyZWdpc3RlclVSTFNjaGVtZUFzRGlzcGxheUlz
b2xhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjaGVtZVJlZ2lzdHJ5OjpzaG91bGRUcmVhdFVS
TFNjaGVtZUFzRGlzcGxheUlzb2xhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjaGVtZVJlZ2lz
dHJ5OjpyZWdpc3RlclVSTFNjaGVtZUFzU2VjdXJlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjaGVt
ZVJlZ2lzdHJ5OjpzaG91bGRUcmVhdFVSTFNjaGVtZUFzU2VjdXJlKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjaGVtZVJlZ2lzdHJ5OjpjYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdCk6CisgICAgICAg
IChXZWJDb3JlOjpTY2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJBc0NhbkRpc3BsYXlPbmx5SWZDYW5S
ZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjaGVtZVJlZ2lzdHJ5OjpyZWdpc3RlclVSTFNj
aGVtZUFzQnlwYXNzaW5nQ29udGVudFNlY3VyaXR5UG9saWN5KToKKyAgICAgICAgKFdlYkNvcmU6
OlNjaGVtZVJlZ2lzdHJ5OjpyZW1vdmVVUkxTY2hlbWVSZWdpc3RlcmVkQXNCeXBhc3NpbmdDb250
ZW50U2VjdXJpdHlQb2xpY3kpOgorICAgICAgICAoV2ViQ29yZTo6U2NoZW1lUmVnaXN0cnk6OnNj
aGVtZVNob3VsZEJ5cGFzc0NvbnRlbnRTZWN1cml0eVBvbGljeSk6CisgICAgICAgIChXZWJDb3Jl
OjpTY2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVBc0NhY2hlUGFydGl0aW9uZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6U2NoZW1lUmVnaXN0cnk6OnNob3VsZFBhcnRpdGlvbkNhY2hlRm9y
VVJMU2NoZW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlNjaGVtZVJlZ2lzdHJ5OjpyZWdpc3RlclVS
TFNjaGVtZVNlcnZpY2VXb3JrZXJzQ2FuSGFuZGxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjaGVt
ZVJlZ2lzdHJ5OjpjYW5TZXJ2aWNlV29ya2Vyc0hhbmRsZVVSTFNjaGVtZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTY2hlbWVSZWdpc3RyeTo6aXNTZXJ2aWNlV29ya2VyQ29udGFpbmVyQ3VzdG9tU2No
ZW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY2hlbWVSZWdpc3RyeS5oOgorCiAyMDE4LTAzLTMw
ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAo
cjIyOTgyOCk6IEZhY2Vib29rIGxvZ2luIHBvcHVwIGlzIGJsYW5rCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2VjdXJpdHlPcmlnaW4uY3BwCmluZGV4IDYxMmVjYTY5M2UzNWEyYmNlNzgwNjRjMmI0ODE1MDI4
YmY5ZjQzYzIuLjkxMTNlZTY4NTdiNzM1NzVkYmNlZDY0ZWRkZjRiZmQzMzM0ZGU4ZWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCkBAIC0xMjMsMTAgKzEyMyw2IEBAIHN0
YXRpYyBib29sIGlzTG9vcGJhY2tJUEFkZHJlc3MoY29uc3QgU3RyaW5nJiBob3N0KQogLy8gaHR0
cHM6Ly93M2MuZ2l0aHViLmlvL3dlYmFwcHNlYy1zZWN1cmUtY29udGV4dHMvI2lzLW9yaWdpbi10
cnVzdHdvcnRoeSAoRWRpdG9yJ3MgRHJhZnQsIDE3IE5vdmVtYmVyIDIwMTYpCiBzdGF0aWMgYm9v
bCBzaG91bGRUcmVhdEFzUG90ZW50aWFsbHlUcnVzdHdvcnRoeShjb25zdCBTdHJpbmcmIHByb3Rv
Y29sLCBjb25zdCBTdHJpbmcmIGhvc3QpCiB7Ci0gICAgLy8gRklYTUU6IGRlc3BpdGUgdGhlIGZv
bGxvd2luZyBTY2hlbWVSZWdpc3RyeSBmdW5jdGlvbnMgdXNpbmcgbG9ja3MgaW50ZXJuYWxseSwg
d2Ugc3RpbGwKLSAgICAvLyBoYXZlIGEgcG90ZW50aWFsIHRocmVhZC1zYWZldHkgaXNzdWUgd2l0
aCB0aGUgc3RyaW5ncyBiZWluZyBwYXNzZWQgaW4uIFRoaXMgaXMgYmVjYXVzZQotICAgIC8vIFN0
cmluZzo6aGFzaCgpIHdpbGwgYmUgY2FsbGVkIGR1cmluZyBsb29rdXAgYW5kIGl0IHBvdGVudGlh
bGx5IG1vZGlmaWVzIHRoZSBTdHJpbmcgZm9yCi0gICAgLy8gY2FjaGluZyB0aGUgaGFzaC4KICAg
ICBpZiAoU2NoZW1lUmVnaXN0cnk6OnNob3VsZFRyZWF0VVJMU2NoZW1lQXNTZWN1cmUocHJvdG9j
b2wpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIApAQCAtNTUyLDEzICs1NDgsNiBAQCBib29sIFNl
Y3VyaXR5T3JpZ2luOjppc1NhbWVTY2hlbWVIb3N0UG9ydChjb25zdCBTZWN1cml0eU9yaWdpbiYg
b3RoZXIpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVVSTCBTZWN1cml0eU9yaWdpbjo6
dXJsV2l0aFVuaXF1ZVNlY3VyaXR5T3JpZ2luKCkKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOwotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxVUkw+IHVuaXF1ZVNlY3VyaXR5T3JpZ2lu
VVJMKFBhcnNlZFVSTFN0cmluZywgTUFLRV9TVEFUSUNfU1RSSU5HX0lNUEwoImRhdGE6LCIpKTsK
LSAgICByZXR1cm4gdW5pcXVlU2VjdXJpdHlPcmlnaW5VUkw7Ci19Ci0KIGJvb2wgU2VjdXJpdHlP
cmlnaW46OmlzTG9jYWxIb3N0T3JMb29wYmFja0lQQWRkcmVzcyhjb25zdCBTdHJpbmcmIGhvc3Qp
CiB7CiAgICAgaWYgKGlzTG9vcGJhY2tJUEFkZHJlc3MoaG9zdCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Nl
Y3VyaXR5T3JpZ2luLmgKaW5kZXggMmQ5Njk1MDc2MGEzOTVlNGZjYjEwMzIyZDg4NWUxNjVkOTVl
YWVjMS4uZGNjMTUyN2M5MTI0OWRmZmU3YTkxOTkxMTNjYWFjOWY2YTEwZTRiNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uaApAQCAtMjAwLDggKzIwMCw2IEBAIHB1YmxpYzoKICAg
ICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9icm93c2Vycy5odG1s
I3NhbWUtb3JpZ2luCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc1NhbWVPcmlnaW5Bcyhjb25z
dCBTZWN1cml0eU9yaWdpbiYpIGNvbnN0OwogCi0gICAgc3RhdGljIFVSTCB1cmxXaXRoVW5pcXVl
U2VjdXJpdHlPcmlnaW4oKTsKLQogICAgIGJvb2wgaXNQb3RlbnRpYWxseVRydXN0d29ydGh5KCkg
Y29uc3QgeyByZXR1cm4gbV9pc1BvdGVudGlhbGx5VHJ1c3R3b3J0aHk7IH0KIAogICAgIHN0YXRp
YyBib29sIGlzTG9jYWxIb3N0T3JMb29wYmFja0lQQWRkcmVzcyhjb25zdCBTdHJpbmcmIGhvc3Qp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eVBvbGljeS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmNwcAppbmRleCAxYWVkMDA0NTBiMDBl
ZjE2MDk0NzNiYmViZDQ3ZTBmNzlhMTNhNjNmLi4wOTFmZGI0MjkxZTE3NzJjOThlY2ZkOGVmYTA4
ZGNhZWI2MDE4NjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9s
aWN5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmNwcApAQCAt
NDUsOCArNDUsMTUgQEAgc3RhdGljIFNlY3VyaXR5UG9saWN5OjpMb2NhbExvYWRQb2xpY3kgbG9j
YWxMb2FkUG9saWN5ID0gU2VjdXJpdHlQb2xpY3k6OkFsbG93TG8KIHR5cGVkZWYgVmVjdG9yPE9y
aWdpbkFjY2Vzc0VudHJ5PiBPcmlnaW5BY2Nlc3NXaGl0ZUxpc3Q7CiB0eXBlZGVmIEhhc2hNYXA8
U3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8T3JpZ2luQWNjZXNzV2hpdGVMaXN0Pj4gT3JpZ2luQWNj
ZXNzTWFwOwogCitzdGF0aWMgTG9jayYgb3JpZ2luQWNjZXNzTWFwTG9jaygpCit7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPExvY2s+IGxvY2s7CisgICAgcmV0dXJuIGxvY2s7Cit9CisKIHN0
YXRpYyBPcmlnaW5BY2Nlc3NNYXAmIG9yaWdpbkFjY2Vzc01hcCgpCiB7CisgICAgQVNTRVJUKG9y
aWdpbkFjY2Vzc01hcExvY2soKS5pc0hlbGQoKSk7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PE9yaWdpbkFjY2Vzc01hcD4gb3JpZ2luQWNjZXNzTWFwOwogICAgIHJldHVybiBvcmlnaW5BY2Nl
c3NNYXA7CiB9CkBAIC0xNDYsNiArMTUzLDcgQEAgYm9vbCBTZWN1cml0eVBvbGljeTo6YWxsb3dT
dWJzdGl0dXRlRGF0YUFjY2Vzc1RvTG9jYWwoKQogCiBib29sIFNlY3VyaXR5UG9saWN5Ojppc0Fj
Y2Vzc1doaXRlTGlzdGVkKGNvbnN0IFNlY3VyaXR5T3JpZ2luKiBhY3RpdmVPcmlnaW4sIGNvbnN0
IFNlY3VyaXR5T3JpZ2luKiB0YXJnZXRPcmlnaW4pCiB7CisgICAgTG9ja2VyPExvY2s+IGxvY2tl
cihvcmlnaW5BY2Nlc3NNYXBMb2NrKCkpOwogICAgIGlmIChPcmlnaW5BY2Nlc3NXaGl0ZUxpc3Qq
IGxpc3QgPSBvcmlnaW5BY2Nlc3NNYXAoKS5nZXQoYWN0aXZlT3JpZ2luLT50b1N0cmluZygpKSkg
ewogICAgICAgICBmb3IgKGF1dG8mIGVudHJ5IDogKmxpc3QpIHsKICAgICAgICAgICAgIGlmIChl
bnRyeS5tYXRjaGVzT3JpZ2luKCp0YXJnZXRPcmlnaW4pKQpAQCAtMTYzLDEyICsxNzEsMTMgQEAg
Ym9vbCBTZWN1cml0eVBvbGljeTo6aXNBY2Nlc3NUb1VSTFdoaXRlTGlzdGVkKGNvbnN0IFNlY3Vy
aXR5T3JpZ2luKiBhY3RpdmVPcmlnaW4KIAogdm9pZCBTZWN1cml0eVBvbGljeTo6YWRkT3JpZ2lu
QWNjZXNzV2hpdGVsaXN0RW50cnkoY29uc3QgU2VjdXJpdHlPcmlnaW4mIHNvdXJjZU9yaWdpbiwg
Y29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblByb3RvY29sLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0
aW9uRG9tYWluLCBib29sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKQogewotICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKCFzb3VyY2VPcmlnaW4uaXNVbmlxdWUoKSk7
CiAgICAgaWYgKHNvdXJjZU9yaWdpbi5pc1VuaXF1ZSgpKQogICAgICAgICByZXR1cm47CiAKICAg
ICBTdHJpbmcgc291cmNlU3RyaW5nID0gc291cmNlT3JpZ2luLnRvU3RyaW5nKCk7CisKKyAgICBM
b2NrZXI8TG9jaz4gbG9ja2VyKG9yaWdpbkFjY2Vzc01hcExvY2soKSk7CiAgICAgT3JpZ2luQWNj
ZXNzTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gb3JpZ2luQWNjZXNzTWFwKCkuYWRkKHNvdXJjZVN0
cmluZywgbnVsbHB0cik7CiAgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KQogICAgICAgICByZXN1
bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxPcmlnaW5BY2Nlc3NXaGl0ZUxp
c3Q+KCk7CkBAIC0xNzksMTIgKzE4OCwxMyBAQCB2b2lkIFNlY3VyaXR5UG9saWN5OjphZGRPcmln
aW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShjb25zdCBTZWN1cml0eU9yaWdpbiYgc291cmNlTwogCiB2
b2lkIFNlY3VyaXR5UG9saWN5OjpyZW1vdmVPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShjb25z
dCBTZWN1cml0eU9yaWdpbiYgc291cmNlT3JpZ2luLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9u
UHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25Eb21haW4sIGJvb2wgYWxsb3dEZXN0
aW5hdGlvblN1YmRvbWFpbnMpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBB
U1NFUlQoIXNvdXJjZU9yaWdpbi5pc1VuaXF1ZSgpKTsKICAgICBpZiAoc291cmNlT3JpZ2luLmlz
VW5pcXVlKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIFN0cmluZyBzb3VyY2VTdHJpbmcgPSBz
b3VyY2VPcmlnaW4udG9TdHJpbmcoKTsKKworICAgIExvY2tlcjxMb2NrPiBsb2NrZXIob3JpZ2lu
QWNjZXNzTWFwTG9jaygpKTsKICAgICBPcmlnaW5BY2Nlc3NNYXAmIG1hcCA9IG9yaWdpbkFjY2Vz
c01hcCgpOwogICAgIE9yaWdpbkFjY2Vzc01hcDo6aXRlcmF0b3IgaXQgPSBtYXAuZmluZChzb3Vy
Y2VTdHJpbmcpOwogICAgIGlmIChpdCA9PSBtYXAuZW5kKCkpCkBAIC0yMDEsNyArMjExLDcgQEAg
dm9pZCBTZWN1cml0eVBvbGljeTo6cmVtb3ZlT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoY29u
c3QgU2VjdXJpdHlPcmlnaW4mIHNvdXIKIAogdm9pZCBTZWN1cml0eVBvbGljeTo6cmVzZXRPcmln
aW5BY2Nlc3NXaGl0ZWxpc3RzKCkKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAg
IExvY2tlcjxMb2NrPiBsb2NrZXIob3JpZ2luQWNjZXNzTWFwTG9jaygpKTsKICAgICBvcmlnaW5B
Y2Nlc3NNYXAoKS5jbGVhcigpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY2hlbWVSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY2hlbWVS
ZWdpc3RyeS5jcHAKaW5kZXggN2U0ZDYxMzkzYWY0YzkyZmYyZWY0NDdhZjk1YmJiYzllNjJlZDA4
Zi4uNTNkYzE5NTI3MmE4N2MyMmZmYTBjZmRkMzc4NDE0YTlkODc1M2U2MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2NoZW1lUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1NjaGVtZVJlZ2lzdHJ5LmNwcApAQCAtNjUsNiArNjUsMTIgQEAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPFVSTFNjaGVtZXNNYXA+IG1ha2VOZXZlckRlc3Ryb3llZFNjaGVt
ZVNldChjb25zdCBWZWN0b3I8U3QKICAgICByZXR1cm4gc2V0OwogfQogCitzdGF0aWMgTG9jayYg
c2NoZW1lUmVnaXN0cnlMb2NrKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TG9jaz4g
bG9jazsKKyAgICByZXR1cm4gbG9jazsKK30KKwogc3RhdGljIGNvbnN0IFVSTFNjaGVtZXNNYXAm
IGFsbEJ1aWx0aW5TY2hlbWVzKCkKIHsKICAgICBzdGF0aWMgY29uc3QgYXV0byBzY2hlbWVzID0g
bWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKQEAgLTkxLDEwICs5NywxNCBAQCBzdGF0aWMgY29uc3Qg
VVJMU2NoZW1lc01hcCYgYWxsQnVpbHRpblNjaGVtZXMoKQogICAgICAgICB9OwogCiAgICAgICAg
IFVSTFNjaGVtZXNNYXAgc2V0OwotICAgICAgICBmb3IgKGF1dG8mIHNjaGVtZSA6IGJ1aWx0aW5M
b2NhbFVSTFNjaGVtZXMoKSkKLSAgICAgICAgICAgIHNldC5hZGQoc2NoZW1lKTsKLSAgICAgICAg
Zm9yIChhdXRvJiBmdW5jdGlvbiA6IGZ1bmN0aW9ucykKLSAgICAgICAgICAgIGFkZChzZXQsIGZ1
bmN0aW9uKTsKKyAgICAgICAgeworICAgICAgICAgICAgTG9ja2VyPExvY2s+IGxvY2tlcihzY2hl
bWVSZWdpc3RyeUxvY2soKSk7CisgICAgICAgICAgICBmb3IgKGF1dG8mIHNjaGVtZSA6IGJ1aWx0
aW5Mb2NhbFVSTFNjaGVtZXMoKSkKKyAgICAgICAgICAgICAgICBzZXQuYWRkKHNjaGVtZSk7CisK
KyAgICAgICAgICAgIGZvciAoYXV0byYgZnVuY3Rpb24gOiBmdW5jdGlvbnMpCisgICAgICAgICAg
ICAgICAgYWRkKHNldCwgZnVuY3Rpb24pOworICAgICAgICB9CiAgICAgICAgIGZvciAoYXV0byYg
c2NoZW1lIDogb3RoZXJTY2hlbWVzKQogICAgICAgICAgICAgc2V0LmFkZChzY2hlbWUpOwogICAg
ICAgICByZXR1cm4gc2V0OwpAQCAtMTA0LDYgKzExNCw3IEBAIHN0YXRpYyBjb25zdCBVUkxTY2hl
bWVzTWFwJiBhbGxCdWlsdGluU2NoZW1lcygpCiAKIHN0YXRpYyBjb25zdCBVUkxTY2hlbWVzTWFw
JiBidWlsdGluTG9jYWxVUkxTY2hlbWVzKCkKIHsKKyAgICBBU1NFUlQoc2NoZW1lUmVnaXN0cnlM
b2NrKCkuaXNIZWxkKCkpOwogICAgIHN0YXRpYyBjb25zdCBhdXRvIHNjaGVtZXMgPSBtYWtlTmV2
ZXJEZXN0cm95ZWQoVVJMU2NoZW1lc01hcCB7CiAgICAgICAgICJmaWxlIiwKICNpZiBQTEFURk9S
TShDT0NPQSkKQEAgLTExMywyNyArMTI0LDIzIEBAIHN0YXRpYyBjb25zdCBVUkxTY2hlbWVzTWFw
JiBidWlsdGluTG9jYWxVUkxTY2hlbWVzKCkKICAgICByZXR1cm4gc2NoZW1lczsKIH0KIAotc3Rh
dGljIExvY2smIGxvY2FsVVJMU2NoZW1lc0xvY2soKQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxMb2NrPiBsb2NrOwotICAgIHJldHVybiBsb2NrOwotfQotCiBzdGF0aWMgVVJMU2NoZW1l
c01hcCYgbG9jYWxVUkxTY2hlbWVzKCkKIHsKLSAgICBBU1NFUlQobG9jYWxVUkxTY2hlbWVzTG9j
aygpLmlzSGVsZCgpKTsKKyAgICBBU1NFUlQoc2NoZW1lUmVnaXN0cnlMb2NrKCkuaXNIZWxkKCkp
OwogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxVUkxTY2hlbWVzTWFwPiBsb2NhbFNjaGVtZXMg
PSBidWlsdGluTG9jYWxVUkxTY2hlbWVzKCk7CiAgICAgcmV0dXJuIGxvY2FsU2NoZW1lczsKIH0K
IAogc3RhdGljIFVSTFNjaGVtZXNNYXAmIGRpc3BsYXlJc29sYXRlZFVSTFNjaGVtZXMoKQogewor
ICAgIEFTU0VSVChzY2hlbWVSZWdpc3RyeUxvY2soKS5pc0hlbGQoKSk7CiAgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPFVSTFNjaGVtZXNNYXA+IGRpc3BsYXlJc29sYXRlZFNjaGVtZXM7CiAgICAg
cmV0dXJuIGRpc3BsYXlJc29sYXRlZFNjaGVtZXM7CiB9CiAKIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBidWlsdGluU2VjdXJlU2NoZW1lcygpCiB7CisgICAgQVNTRVJUKHNjaGVtZVJlZ2lzdHJ5TG9j
aygpLmlzSGVsZCgpKTsKICAgICBzdGF0aWMgY29uc3QgYXV0byBzY2hlbWVzID0gbWFrZU5ldmVy
RGVzdHJveWVkKFZlY3RvcjxTdHJpbmc+IHsKICAgICAgICAgImh0dHBzIiwKICAgICAgICAgImFi
b3V0IiwKQEAgLTE0NiwyMSArMTUzLDE2IEBAIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBidWlsdGlu
U2VjdXJlU2NoZW1lcygpCiAgICAgcmV0dXJuIHNjaGVtZXM7CiB9CiAKLXN0YXRpYyBMb2NrJiBz
ZWN1cmVTY2hlbWVzTG9jaygpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPExvY2s+IGxv
Y2s7Ci0gICAgcmV0dXJuIGxvY2s7Ci19Ci0KIHN0YXRpYyBVUkxTY2hlbWVzTWFwJiBzZWN1cmVT
Y2hlbWVzKCkKIHsKLSAgICBBU1NFUlQoc2VjdXJlU2NoZW1lc0xvY2soKS5pc0hlbGQoKSk7Cisg
ICAgQVNTRVJUKHNjaGVtZVJlZ2lzdHJ5TG9jaygpLmlzSGVsZCgpKTsKICAgICBzdGF0aWMgYXV0
byBzZWN1cmVTY2hlbWVzID0gbWFrZU5ldmVyRGVzdHJveWVkU2NoZW1lU2V0KGJ1aWx0aW5TZWN1
cmVTY2hlbWVzKTsKICAgICByZXR1cm4gc2VjdXJlU2NoZW1lczsKIH0KIAogY29uc3QgVmVjdG9y
PFN0cmluZz4mIGJ1aWx0aW5TY2hlbWVzV2l0aFVuaXF1ZU9yaWdpbnMoKQogeworICAgIEFTU0VS
VChzY2hlbWVSZWdpc3RyeUxvY2soKS5pc0hlbGQoKSk7CiAgICAgc3RhdGljIGNvbnN0IGF1dG8g
c2NoZW1lcyA9IG1ha2VOZXZlckRlc3Ryb3llZChWZWN0b3I8U3RyaW5nPiB7CiAgICAgICAgICJh
Ym91dCIsCiAgICAgICAgICJqYXZhc2NyaXB0IiwKQEAgLTE3Myw0MiArMTc1LDQ5IEBAIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBidWlsdGluU2NoZW1lc1dpdGhVbmlxdWVPcmlnaW5zKCkKIAogc3Rh
dGljIFVSTFNjaGVtZXNNYXAmIHNjaGVtZXNXaXRoVW5pcXVlT3JpZ2lucygpCiB7CisgICAgQVNT
RVJUKHNjaGVtZVJlZ2lzdHJ5TG9jaygpLmlzSGVsZCgpKTsKICAgICBzdGF0aWMgYXV0byBzY2hl
bWVzV2l0aFVuaXF1ZU9yaWdpbnMgPSBtYWtlTmV2ZXJEZXN0cm95ZWRTY2hlbWVTZXQoYnVpbHRp
blNjaGVtZXNXaXRoVW5pcXVlT3JpZ2lucyk7CiAgICAgcmV0dXJuIHNjaGVtZXNXaXRoVW5pcXVl
T3JpZ2luczsKIH0KIAogY29uc3QgVmVjdG9yPFN0cmluZz4mIGJ1aWx0aW5FbXB0eURvY3VtZW50
U2NoZW1lcygpCiB7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBzdGF0aWMgY29u
c3QgYXV0byBzY2hlbWVzID0gbWFrZU5ldmVyRGVzdHJveWVkKFZlY3RvcjxTdHJpbmc+IHsgImFi
b3V0IiB9KTsKICAgICByZXR1cm4gc2NoZW1lczsKIH0KIAogc3RhdGljIFVSTFNjaGVtZXNNYXAm
IGVtcHR5RG9jdW1lbnRTY2hlbWVzKCkKIHsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwog
ICAgIHN0YXRpYyBhdXRvIGVtcHR5RG9jdW1lbnRTY2hlbWVzID0gbWFrZU5ldmVyRGVzdHJveWVk
U2NoZW1lU2V0KGJ1aWx0aW5FbXB0eURvY3VtZW50U2NoZW1lcyk7CiAgICAgcmV0dXJuIGVtcHR5
RG9jdW1lbnRTY2hlbWVzOwogfQogCiBzdGF0aWMgVVJMU2NoZW1lc01hcCYgc2NoZW1lc0ZvcmJp
ZGRlbkZyb21Eb21haW5SZWxheGF0aW9uKCkKIHsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OwogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxVUkxTY2hlbWVzTWFwPiBzY2hlbWVzOwogICAg
IHJldHVybiBzY2hlbWVzOwogfQogCiBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYnVpbHRpbkNhbkRp
c3BsYXlPbmx5SWZDYW5SZXF1ZXN0U2NoZW1lcygpCiB7CisgICAgQVNTRVJUKHNjaGVtZVJlZ2lz
dHJ5TG9jaygpLmlzSGVsZCgpKTsKICAgICBzdGF0aWMgY29uc3QgYXV0byBzY2hlbWVzID0gbWFr
ZU5ldmVyRGVzdHJveWVkKFZlY3RvcjxTdHJpbmc+IHsgImJsb2IiIH0pOwogICAgIHJldHVybiBz
Y2hlbWVzOwogfQogCiBzdGF0aWMgVVJMU2NoZW1lc01hcCYgY2FuRGlzcGxheU9ubHlJZkNhblJl
cXVlc3RTY2hlbWVzKCkKIHsKKyAgICBBU1NFUlQoc2NoZW1lUmVnaXN0cnlMb2NrKCkuaXNIZWxk
KCkpOwogICAgIHN0YXRpYyBhdXRvIGNhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0U2NoZW1lcyA9
IG1ha2VOZXZlckRlc3Ryb3llZFNjaGVtZVNldChidWlsdGluQ2FuRGlzcGxheU9ubHlJZkNhblJl
cXVlc3RTY2hlbWVzKTsKICAgICByZXR1cm4gY2FuRGlzcGxheU9ubHlJZkNhblJlcXVlc3RTY2hl
bWVzOwogfQogCiBzdGF0aWMgVVJMU2NoZW1lc01hcCYgbm90QWxsb3dpbmdKYXZhc2NyaXB0VVJM
c1NjaGVtZXMoKQogeworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPFVSTFNjaGVtZXNNYXA+IG5vdEFsbG93aW5nSmF2YXNjcmlwdFVSTHNTY2hl
bWVzOwogICAgIHJldHVybiBub3RBbGxvd2luZ0phdmFzY3JpcHRVUkxzU2NoZW1lczsKIH0KQEAg
LTIxOCwxMyArMjI3LDEzIEBAIHZvaWQgU2NoZW1lUmVnaXN0cnk6OnJlZ2lzdGVyVVJMU2NoZW1l
QXNMb2NhbChjb25zdCBTdHJpbmcmIHNjaGVtZSkKICAgICBpZiAoc2NoZW1lLmlzTnVsbCgpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKGxvY2FsVVJMU2NoZW1l
c0xvY2soKSk7CisgICAgTG9ja2VyPExvY2s+IGxvY2tlcihzY2hlbWVSZWdpc3RyeUxvY2soKSk7
CiAgICAgbG9jYWxVUkxTY2hlbWVzKCkuYWRkKHNjaGVtZSk7CiB9CiAKIHZvaWQgU2NoZW1lUmVn
aXN0cnk6OnJlbW92ZVVSTFNjaGVtZVJlZ2lzdGVyZWRBc0xvY2FsKGNvbnN0IFN0cmluZyYgc2No
ZW1lKQogewotICAgIExvY2tlcjxMb2NrPiBsb2NrZXIobG9jYWxVUkxTY2hlbWVzTG9jaygpKTsK
KyAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKHNjaGVtZVJlZ2lzdHJ5TG9jaygpKTsKICAgICBpZiAo
YnVpbHRpbkxvY2FsVVJMU2NoZW1lcygpLmNvbnRhaW5zKHNjaGVtZSkpCiAgICAgICAgIHJldHVy
bjsKIApAQCAtMjMzLDI0ICsyNDIsMjggQEAgdm9pZCBTY2hlbWVSZWdpc3RyeTo6cmVtb3ZlVVJM
U2NoZW1lUmVnaXN0ZXJlZEFzTG9jYWwoY29uc3QgU3RyaW5nJiBzY2hlbWUpCiAKIHN0YXRpYyBV
UkxTY2hlbWVzTWFwJiBzY2hlbWVzQWxsb3dpbmdMb2NhbFN0b3JhZ2VBY2Nlc3NJblByaXZhdGVC
cm93c2luZygpCiB7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8VVJMU2NoZW1lc01hcD4gc2NoZW1lc0FsbG93aW5nTG9jYWxTdG9yYWdlQWNj
ZXNzSW5Qcml2YXRlQnJvd3Npbmc7CiAgICAgcmV0dXJuIHNjaGVtZXNBbGxvd2luZ0xvY2FsU3Rv
cmFnZUFjY2Vzc0luUHJpdmF0ZUJyb3dzaW5nOwogfQogCiBzdGF0aWMgVVJMU2NoZW1lc01hcCYg
c2NoZW1lc0FsbG93aW5nRGF0YWJhc2VBY2Nlc3NJblByaXZhdGVCcm93c2luZygpCiB7CisgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VVJMU2No
ZW1lc01hcD4gc2NoZW1lc0FsbG93aW5nRGF0YWJhc2VBY2Nlc3NJblByaXZhdGVCcm93c2luZzsK
ICAgICByZXR1cm4gc2NoZW1lc0FsbG93aW5nRGF0YWJhc2VBY2Nlc3NJblByaXZhdGVCcm93c2lu
ZzsKIH0KIAogY29uc3QgVmVjdG9yPFN0cmluZz4mIGJ1aWx0aW5DT1JTRW5hYmxlZFNjaGVtZXMo
KQogeworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgc3RhdGljIGNvbnN0IGF1dG8g
c2NoZW1lcyA9IG1ha2VOZXZlckRlc3Ryb3llZChWZWN0b3I8U3RyaW5nPiB7ICJodHRwIiwgImh0
dHBzIiB9KTsKICAgICByZXR1cm4gc2NoZW1lczsKIH0KIAogc3RhdGljIFVSTFNjaGVtZXNNYXAm
IENPUlNFbmFibGVkU2NoZW1lcygpCiB7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAg
ICAvLyBGSVhNRTogaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzcxNjAK
ICAgICBzdGF0aWMgYXV0byBzY2hlbWVzID0gbWFrZU5ldmVyRGVzdHJveWVkU2NoZW1lU2V0KGJ1
aWx0aW5DT1JTRW5hYmxlZFNjaGVtZXMpOwogICAgIHJldHVybiBzY2hlbWVzOwpAQCAtMjU4LDMx
ICsyNzEsMjggQEAgc3RhdGljIFVSTFNjaGVtZXNNYXAmIENPUlNFbmFibGVkU2NoZW1lcygpCiAK
IHN0YXRpYyBVUkxTY2hlbWVzTWFwJiBDb250ZW50U2VjdXJpdHlQb2xpY3lCeXBhc3NpbmdTY2hl
bWVzKCkKIHsKKyAgICBBU1NFUlQoc2NoZW1lUmVnaXN0cnlMb2NrKCkuaXNIZWxkKCkpOwogICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxVUkxTY2hlbWVzTWFwPiBzY2hlbWVzOwogICAgIHJldHVy
biBzY2hlbWVzOwogfQogCiBzdGF0aWMgVVJMU2NoZW1lc01hcCYgY2FjaGVQYXJ0aXRpb25pbmdT
Y2hlbWVzKCkKIHsKKyAgICBBU1NFUlQoc2NoZW1lUmVnaXN0cnlMb2NrKCkuaXNIZWxkKCkpOwog
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxVUkxTY2hlbWVzTWFwPiBzY2hlbWVzOwogICAgIHJl
dHVybiBzY2hlbWVzOwogfQogCi1zdGF0aWMgTG9jayYgc2VydmljZVdvcmtlclNjaGVtZXNMb2Nr
KCkKLXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TG9jaz4gbG9jazsKLSAgICByZXR1cm4g
bG9jazsKLX0KLQogc3RhdGljIFVSTFNjaGVtZXNNYXAmIHNlcnZpY2VXb3JrZXJTY2hlbWVzKCkK
IHsKLSAgICBBU1NFUlQoc2VydmljZVdvcmtlclNjaGVtZXNMb2NrKCkuaXNIZWxkKCkpOworICAg
IEFTU0VSVChzY2hlbWVSZWdpc3RyeUxvY2soKS5pc0hlbGQoKSk7CiAgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPFVSTFNjaGVtZXNNYXA+IHNjaGVtZXM7CiAgICAgcmV0dXJuIHNjaGVtZXM7CiB9
CiAKIHN0YXRpYyBVUkxTY2hlbWVzTWFwJiBhbHdheXNSZXZhbGlkYXRlZFNjaGVtZXMoKQogewor
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFVS
TFNjaGVtZXNNYXA+IHNjaGVtZXM7CiAgICAgcmV0dXJuIHNjaGVtZXM7CiB9CkBAIC0yOTIsNyAr
MzAyLDcgQEAgYm9vbCBTY2hlbWVSZWdpc3RyeTo6c2hvdWxkVHJlYXRVUkxTY2hlbWVBc0xvY2Fs
KGNvbnN0IFN0cmluZyYgc2NoZW1lKQogICAgIGlmIChzY2hlbWUuaXNOdWxsKCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgIExvY2tlcjxMb2NrPiBsb2NrZXIobG9jYWxVUkxTY2hlbWVz
TG9jaygpKTsKKyAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKHNjaGVtZVJlZ2lzdHJ5TG9jaygpKTsK
ICAgICByZXR1cm4gbG9jYWxVUkxTY2hlbWVzKCkuY29udGFpbnMoc2NoZW1lKTsKIH0KIApAQCAt
MzAwLDI0ICszMTAsMzYgQEAgdm9pZCBTY2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVB
c05vQWNjZXNzKGNvbnN0IFN0cmluZyYgc2NoZW1lKQogewogICAgIGlmIChzY2hlbWUuaXNOdWxs
KCkpCiAgICAgICAgIHJldHVybjsKKworICAgIExvY2tlcjxMb2NrPiBsb2NrZXIoc2NoZW1lUmVn
aXN0cnlMb2NrKCkpOwogICAgIHNjaGVtZXNXaXRoVW5pcXVlT3JpZ2lucygpLmFkZChzY2hlbWUp
OwogfQogCiBib29sIFNjaGVtZVJlZ2lzdHJ5OjpzaG91bGRUcmVhdFVSTFNjaGVtZUFzTm9BY2Nl
c3MoY29uc3QgU3RyaW5nJiBzY2hlbWUpCiB7Ci0gICAgcmV0dXJuICFzY2hlbWUuaXNOdWxsKCkg
JiYgc2NoZW1lc1dpdGhVbmlxdWVPcmlnaW5zKCkuY29udGFpbnMoc2NoZW1lKTsKKyAgICBpZiAo
c2NoZW1lLmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBMb2NrZXI8TG9j
az4gbG9ja2VyKHNjaGVtZVJlZ2lzdHJ5TG9jaygpKTsKKyAgICByZXR1cm4gc2NoZW1lc1dpdGhV
bmlxdWVPcmlnaW5zKCkuY29udGFpbnMoc2NoZW1lKTsKIH0KIAogdm9pZCBTY2hlbWVSZWdpc3Ry
eTo6cmVnaXN0ZXJVUkxTY2hlbWVBc0Rpc3BsYXlJc29sYXRlZChjb25zdCBTdHJpbmcmIHNjaGVt
ZSkKIHsKICAgICBpZiAoc2NoZW1lLmlzTnVsbCgpKQogICAgICAgICByZXR1cm47CisKKyAgICBM
b2NrZXI8TG9jaz4gbG9ja2VyKHNjaGVtZVJlZ2lzdHJ5TG9jaygpKTsKICAgICBkaXNwbGF5SXNv
bGF0ZWRVUkxTY2hlbWVzKCkuYWRkKHNjaGVtZSk7CiB9CiAKIGJvb2wgU2NoZW1lUmVnaXN0cnk6
OnNob3VsZFRyZWF0VVJMU2NoZW1lQXNEaXNwbGF5SXNvbGF0ZWQoY29uc3QgU3RyaW5nJiBzY2hl
bWUpCiB7Ci0gICAgcmV0dXJuICFzY2hlbWUuaXNOdWxsKCkgJiYgZGlzcGxheUlzb2xhdGVkVVJM
U2NoZW1lcygpLmNvbnRhaW5zKHNjaGVtZSk7CisgICAgaWYgKHNjaGVtZS5pc051bGwoKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgTG9ja2VyPExvY2s+IGxvY2tlcihzY2hlbWVSZWdp
c3RyeUxvY2soKSk7CisgICAgcmV0dXJuIGRpc3BsYXlJc29sYXRlZFVSTFNjaGVtZXMoKS5jb250
YWlucyhzY2hlbWUpOwogfQogCiB2b2lkIFNjaGVtZVJlZ2lzdHJ5OjpyZWdpc3RlclVSTFNjaGVt
ZUFzU2VjdXJlKGNvbnN0IFN0cmluZyYgc2NoZW1lKQpAQCAtMzI1LDcgKzM0Nyw3IEBAIHZvaWQg
U2NoZW1lUmVnaXN0cnk6OnJlZ2lzdGVyVVJMU2NoZW1lQXNTZWN1cmUoY29uc3QgU3RyaW5nJiBz
Y2hlbWUpCiAgICAgaWYgKHNjaGVtZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
TG9ja2VyPExvY2s+IGxvY2tlcihzZWN1cmVTY2hlbWVzTG9jaygpKTsKKyAgICBMb2NrZXI8TG9j
az4gbG9ja2VyKHNjaGVtZVJlZ2lzdHJ5TG9jaygpKTsKICAgICBzZWN1cmVTY2hlbWVzKCkuYWRk
KHNjaGVtZSk7CiB9CiAKQEAgLTMzNCw3ICszNTYsNyBAQCBib29sIFNjaGVtZVJlZ2lzdHJ5Ojpz
aG91bGRUcmVhdFVSTFNjaGVtZUFzU2VjdXJlKGNvbnN0IFN0cmluZyYgc2NoZW1lKQogICAgIGlm
IChzY2hlbWUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIExvY2tlcjxM
b2NrPiBsb2NrZXIoc2VjdXJlU2NoZW1lc0xvY2soKSk7CisgICAgTG9ja2VyPExvY2s+IGxvY2tl
cihzY2hlbWVSZWdpc3RyeUxvY2soKSk7CiAgICAgcmV0dXJuIHNlY3VyZVNjaGVtZXMoKS5jb250
YWlucyhzY2hlbWUpOwogfQogCkBAIC0zNjgsMTMgKzM5MCwxOSBAQCBib29sIFNjaGVtZVJlZ2lz
dHJ5Ojppc0RvbWFpblJlbGF4YXRpb25Gb3JiaWRkZW5Gb3JVUkxTY2hlbWUoY29uc3QgU3RyaW5n
JiBzY2hlbQogCiBib29sIFNjaGVtZVJlZ2lzdHJ5OjpjYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVz
dChjb25zdCBTdHJpbmcmIHNjaGVtZSkKIHsKLSAgICByZXR1cm4gIXNjaGVtZS5pc051bGwoKSAm
JiBjYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdFNjaGVtZXMoKS5jb250YWlucyhzY2hlbWUpOwor
ICAgIGlmIChzY2hlbWUuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIExv
Y2tlcjxMb2NrPiBsb2NrZXIoc2NoZW1lUmVnaXN0cnlMb2NrKCkpOworICAgIHJldHVybiBjYW5E
aXNwbGF5T25seUlmQ2FuUmVxdWVzdFNjaGVtZXMoKS5jb250YWlucyhzY2hlbWUpOwogfQogCiB2
b2lkIFNjaGVtZVJlZ2lzdHJ5OjpyZWdpc3RlckFzQ2FuRGlzcGxheU9ubHlJZkNhblJlcXVlc3Qo
Y29uc3QgU3RyaW5nJiBzY2hlbWUpCiB7CiAgICAgaWYgKHNjaGVtZS5pc051bGwoKSkKICAgICAg
ICAgcmV0dXJuOworCisgICAgTG9ja2VyPExvY2s+IGxvY2tlcihzY2hlbWVSZWdpc3RyeUxvY2so
KSk7CiAgICAgY2FuRGlzcGxheU9ubHlJZkNhblJlcXVlc3RTY2hlbWVzKCkuYWRkKHNjaGVtZSk7
CiB9CiAKQEAgLTQzMCw2ICs0NTgsOCBAQCB2b2lkIFNjaGVtZVJlZ2lzdHJ5OjpyZWdpc3RlclVS
TFNjaGVtZUFzQnlwYXNzaW5nQ29udGVudFNlY3VyaXR5UG9saWN5KGNvbnN0IFN0cgogewogICAg
IGlmIChzY2hlbWUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsKKworICAgIExvY2tlcjxMb2Nr
PiBsb2NrZXIoc2NoZW1lUmVnaXN0cnlMb2NrKCkpOwogICAgIENvbnRlbnRTZWN1cml0eVBvbGlj
eUJ5cGFzc2luZ1NjaGVtZXMoKS5hZGQoc2NoZW1lKTsKIH0KIApAQCAtNDM3LDEyICs0NjcsMTgg
QEAgdm9pZCBTY2hlbWVSZWdpc3RyeTo6cmVtb3ZlVVJMU2NoZW1lUmVnaXN0ZXJlZEFzQnlwYXNz
aW5nQ29udGVudFNlY3VyaXR5UG9saWN5KGMKIHsKICAgICBpZiAoc2NoZW1lLmlzTnVsbCgpKQog
ICAgICAgICByZXR1cm47CisKKyAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKHNjaGVtZVJlZ2lzdHJ5
TG9jaygpKTsKICAgICBDb250ZW50U2VjdXJpdHlQb2xpY3lCeXBhc3NpbmdTY2hlbWVzKCkucmVt
b3ZlKHNjaGVtZSk7CiB9CiAKIGJvb2wgU2NoZW1lUmVnaXN0cnk6OnNjaGVtZVNob3VsZEJ5cGFz
c0NvbnRlbnRTZWN1cml0eVBvbGljeShjb25zdCBTdHJpbmcmIHNjaGVtZSkKIHsKLSAgICByZXR1
cm4gIXNjaGVtZS5pc051bGwoKSAmJiBDb250ZW50U2VjdXJpdHlQb2xpY3lCeXBhc3NpbmdTY2hl
bWVzKCkuY29udGFpbnMoc2NoZW1lKTsKKyAgICBpZiAoc2NoZW1lLmlzTnVsbCgpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKHNjaGVtZVJlZ2lzdHJ5
TG9jaygpKTsKKyAgICByZXR1cm4gQ29udGVudFNlY3VyaXR5UG9saWN5QnlwYXNzaW5nU2NoZW1l
cygpLmNvbnRhaW5zKHNjaGVtZSk7CiB9CiAKIHZvaWQgU2NoZW1lUmVnaXN0cnk6OnJlZ2lzdGVy
VVJMU2NoZW1lQXNBbHdheXNSZXZhbGlkYXRlZChjb25zdCBTdHJpbmcmIHNjaGVtZSkKQEAgLTQ2
MSwxMiArNDk3LDE4IEBAIHZvaWQgU2NoZW1lUmVnaXN0cnk6OnJlZ2lzdGVyVVJMU2NoZW1lQXND
YWNoZVBhcnRpdGlvbmVkKGNvbnN0IFN0cmluZyYgc2NoZW1lKQogewogICAgIGlmIChzY2hlbWUu
aXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsKKworICAgIExvY2tlcjxMb2NrPiBsb2NrZXIoc2No
ZW1lUmVnaXN0cnlMb2NrKCkpOwogICAgIGNhY2hlUGFydGl0aW9uaW5nU2NoZW1lcygpLmFkZChz
Y2hlbWUpOwogfQogCiBib29sIFNjaGVtZVJlZ2lzdHJ5OjpzaG91bGRQYXJ0aXRpb25DYWNoZUZv
clVSTFNjaGVtZShjb25zdCBTdHJpbmcmIHNjaGVtZSkKIHsKLSAgICByZXR1cm4gIXNjaGVtZS5p
c051bGwoKSAmJiBjYWNoZVBhcnRpdGlvbmluZ1NjaGVtZXMoKS5jb250YWlucyhzY2hlbWUpOwor
ICAgIGlmIChzY2hlbWUuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIExv
Y2tlcjxMb2NrPiBsb2NrZXIoc2NoZW1lUmVnaXN0cnlMb2NrKCkpOworICAgIHJldHVybiBjYWNo
ZVBhcnRpdGlvbmluZ1NjaGVtZXMoKS5jb250YWlucyhzY2hlbWUpOwogfQogCiB2b2lkIFNjaGVt
ZVJlZ2lzdHJ5OjpyZWdpc3RlclVSTFNjaGVtZVNlcnZpY2VXb3JrZXJzQ2FuSGFuZGxlKGNvbnN0
IFN0cmluZyYgc2NoZW1lKQpAQCAtNDc0LDcgKzUxNiw3IEBAIHZvaWQgU2NoZW1lUmVnaXN0cnk6
OnJlZ2lzdGVyVVJMU2NoZW1lU2VydmljZVdvcmtlcnNDYW5IYW5kbGUoY29uc3QgU3RyaW5nJiBz
Y2hlCiAgICAgaWYgKHNjaGVtZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgTG9j
a2VyPExvY2s+IGxvY2tlcihzZXJ2aWNlV29ya2VyU2NoZW1lc0xvY2soKSk7CisgICAgTG9ja2Vy
PExvY2s+IGxvY2tlcihzY2hlbWVSZWdpc3RyeUxvY2soKSk7CiAgICAgc2VydmljZVdvcmtlclNj
aGVtZXMoKS5hZGQoc2NoZW1lKTsKIH0KIApAQCAtNDkwLDEzICs1MzIsMTMgQEAgYm9vbCBTY2hl
bWVSZWdpc3RyeTo6Y2FuU2VydmljZVdvcmtlcnNIYW5kbGVVUkxTY2hlbWUoY29uc3QgU3RyaW5n
JiBzY2hlbWUpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBMb2NrZXI8
TG9jaz4gbG9ja2VyKHNlcnZpY2VXb3JrZXJTY2hlbWVzTG9jaygpKTsKKyAgICBMb2NrZXI8TG9j
az4gbG9ja2VyKHNjaGVtZVJlZ2lzdHJ5TG9jaygpKTsKICAgICByZXR1cm4gc2VydmljZVdvcmtl
clNjaGVtZXMoKS5jb250YWlucyhzY2hlbWUpOwogfQogCiBib29sIFNjaGVtZVJlZ2lzdHJ5Ojpp
c1NlcnZpY2VXb3JrZXJDb250YWluZXJDdXN0b21TY2hlbWUoY29uc3QgU3RyaW5nJiBzY2hlbWUp
CiB7Ci0gICAgTG9ja2VyPExvY2s+IGxvY2tlcihzZXJ2aWNlV29ya2VyU2NoZW1lc0xvY2soKSk7
CisgICAgTG9ja2VyPExvY2s+IGxvY2tlcihzY2hlbWVSZWdpc3RyeUxvY2soKSk7CiAgICAgcmV0
dXJuICFzY2hlbWUuaXNOdWxsKCkgJiYgc2VydmljZVdvcmtlclNjaGVtZXMoKS5jb250YWlucyhz
Y2hlbWUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY2hlbWVS
ZWdpc3RyeS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2NoZW1lUmVnaXN0cnkuaAppbmRl
eCBmNzBmOWZjYWM0NzAwMzYxNmNmOTA2YmMyYzY0ZTg1ZDA4OGEyOGY2Li4wYjkzYmRiMzA2MGYx
NjY2ZDZmNzRkZGUyODRmYTE4MjY5YmNjZDJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY2hlbWVSZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
aGVtZVJlZ2lzdHJ5LmgKQEAgLTM3LDI1ICszNywyNSBAQCB1c2luZyBVUkxTY2hlbWVzTWFwID0g
SGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD47CiAKIGNsYXNzIFNjaGVt
ZVJlZ2lzdHJ5IHsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCByZWdp
c3RlclVSTFNjaGVtZUFzTG9jYWwoY29uc3QgU3RyaW5nJik7Ci0gICAgc3RhdGljIHZvaWQgcmVt
b3ZlVVJMU2NoZW1lUmVnaXN0ZXJlZEFzTG9jYWwoY29uc3QgU3RyaW5nJik7CisgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIHZvaWQgcmVnaXN0ZXJVUkxTY2hlbWVBc0xvY2FsKGNvbnN0IFN0cmlu
ZyYpOyAvLyBUaHJlYWQgc2FmZS4KKyAgICBzdGF0aWMgdm9pZCByZW1vdmVVUkxTY2hlbWVSZWdp
c3RlcmVkQXNMb2NhbChjb25zdCBTdHJpbmcmKTsgLy8gVGhyZWFkIHNhZmUuCiAKLSAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBzaG91bGRUcmVhdFVSTFNjaGVtZUFzTG9jYWwoY29uc3Qg
U3RyaW5nJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgc2hvdWxkVHJlYXRVUkxT
Y2hlbWVBc0xvY2FsKGNvbnN0IFN0cmluZyYpOyAvLyBUaHJlYWQgc2FmZS4KICAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgYm9vbCBpc0J1aWx0aW5TY2hlbWUoY29uc3QgU3RyaW5nJik7CiAgICAg
CiAgICAgLy8gU2VjdXJlIHNjaGVtZXMgZG8gbm90IHRyaWdnZXIgbWl4ZWQgY29udGVudCB3YXJu
aW5ncy4gRm9yIGV4YW1wbGUsCiAgICAgLy8gaHR0cHMgYW5kIGRhdGEgYXJlIHNlY3VyZSBzY2hl
bWVzIGJlY2F1c2UgdGhleSBjYW5ub3QgYmUgY29ycnVwdGVkIGJ5CiAgICAgLy8gYWN0aXZlIG5l
dHdvcmsgYXR0YWNrZXJzLgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHJlZ2lzdGVy
VVJMU2NoZW1lQXNTZWN1cmUoY29uc3QgU3RyaW5nJik7Ci0gICAgc3RhdGljIGJvb2wgc2hvdWxk
VHJlYXRVUkxTY2hlbWVBc1NlY3VyZShjb25zdCBTdHJpbmcmKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgdm9pZCByZWdpc3RlclVSTFNjaGVtZUFzU2VjdXJlKGNvbnN0IFN0cmluZyYpOyAv
LyBUaHJlYWQgc2FmZS4KKyAgICBzdGF0aWMgYm9vbCBzaG91bGRUcmVhdFVSTFNjaGVtZUFzU2Vj
dXJlKGNvbnN0IFN0cmluZyYpOyAvLyBUaHJlYWQgc2FmZS4KIAotICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyB2b2lkIHJlZ2lzdGVyVVJMU2NoZW1lQXNOb0FjY2Vzcyhjb25zdCBTdHJpbmcmKTsK
LSAgICBzdGF0aWMgYm9vbCBzaG91bGRUcmVhdFVSTFNjaGVtZUFzTm9BY2Nlc3MoY29uc3QgU3Ry
aW5nJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgcmVnaXN0ZXJVUkxTY2hlbWVB
c05vQWNjZXNzKGNvbnN0IFN0cmluZyYpOyAvLyBUaHJlYWQgc2FmZS4KKyAgICBzdGF0aWMgYm9v
bCBzaG91bGRUcmVhdFVSTFNjaGVtZUFzTm9BY2Nlc3MoY29uc3QgU3RyaW5nJik7IC8vIFRocmVh
ZCBzYWZlLgogCiAgICAgLy8gRGlzcGxheS1pc29sYXRlZCBzY2hlbWVzIGNhbiBvbmx5IGJlIGRp
c3BsYXllZCAoaW4gdGhlIHNlbnNlIG9mCiAgICAgLy8gU2VjdXJpdHlPcmlnaW46OmNhbkRpc3Bs
YXkpIGJ5IGRvY3VtZW50cyBmcm9tIHRoZSBzYW1lIHNjaGVtZS4KLSAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgdm9pZCByZWdpc3RlclVSTFNjaGVtZUFzRGlzcGxheUlzb2xhdGVkKGNvbnN0IFN0
cmluZyYpOwotICAgIHN0YXRpYyBib29sIHNob3VsZFRyZWF0VVJMU2NoZW1lQXNEaXNwbGF5SXNv
bGF0ZWQoY29uc3QgU3RyaW5nJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgcmVn
aXN0ZXJVUkxTY2hlbWVBc0Rpc3BsYXlJc29sYXRlZChjb25zdCBTdHJpbmcmKTsgLy8gVGhyZWFk
IHNhZmUuCisgICAgc3RhdGljIGJvb2wgc2hvdWxkVHJlYXRVUkxTY2hlbWVBc0Rpc3BsYXlJc29s
YXRlZChjb25zdCBTdHJpbmcmKTsgLy8gVGhyZWFkIHNhZmUuCiAKICAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgdm9pZCByZWdpc3RlclVSTFNjaGVtZUFzRW1wdHlEb2N1bWVudChjb25zdCBTdHJp
bmcmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBzaG91bGRMb2FkVVJMU2NoZW1l
QXNFbXB0eURvY3VtZW50KGNvbnN0IFN0cmluZyYpOwpAQCAtNjUsOCArNjUsOCBAQCBwdWJsaWM6
CiAKICAgICAvLyBTdWNoIHNjaGVtZXMgc2hvdWxkIGRlbGVnYXRlIHRvIFNlY3VyaXR5T3JpZ2lu
OjpjYW5SZXF1ZXN0IGZvciBhbnkgVVJMCiAgICAgLy8gcGFzc2VkIHRvIFNlY3VyaXR5T3JpZ2lu
OjpjYW5EaXNwbGF5LgotICAgIHN0YXRpYyBib29sIGNhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0
KGNvbnN0IFN0cmluZyYgc2NoZW1lKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBy
ZWdpc3RlckFzQ2FuRGlzcGxheU9ubHlJZkNhblJlcXVlc3QoY29uc3QgU3RyaW5nJiBzY2hlbWUp
OworICAgIHN0YXRpYyBib29sIGNhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0KGNvbnN0IFN0cmlu
ZyYgc2NoZW1lKTsgLy8gVGhyZWFkIHNhZmUuCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZv
aWQgcmVnaXN0ZXJBc0NhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0KGNvbnN0IFN0cmluZyYgc2No
ZW1lKTsgLy8gVGhyZWFkIHNhZmUuCiAKICAgICAvLyBTY2hlbWVzIGFnYWluc3Qgd2hpY2ggamF2
YXNjcmlwdDogVVJMcyBzaG91bGQgbm90IGJlIGFsbG93ZWQgdG8gcnVuIChzdG9wCiAgICAgLy8g
Ym9va21hcmtsZXRzIGZyb20gcnVubmluZyBvbiBzZW5zaXRpdmUgcGFnZXMpLiAKQEAgLTg2LDIy
ICs4NiwyMiBAQCBwdWJsaWM6CiAKICAgICAvLyBBbGxvdyByZXNvdXJjZXMgZnJvbSBzb21lIHNj
aGVtZXMgdG8gbG9hZCBvbiBhIHBhZ2UsIHJlZ2FyZGxlc3Mgb2YgaXRzCiAgICAgLy8gQ29udGVu
dCBTZWN1cml0eSBQb2xpY3kuCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgcmVnaXN0
ZXJVUkxTY2hlbWVBc0J5cGFzc2luZ0NvbnRlbnRTZWN1cml0eVBvbGljeShjb25zdCBTdHJpbmcm
IHNjaGVtZSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgcmVtb3ZlVVJMU2NoZW1l
UmVnaXN0ZXJlZEFzQnlwYXNzaW5nQ29udGVudFNlY3VyaXR5UG9saWN5KGNvbnN0IFN0cmluZyYg
c2NoZW1lKTsKLSAgICBzdGF0aWMgYm9vbCBzY2hlbWVTaG91bGRCeXBhc3NDb250ZW50U2VjdXJp
dHlQb2xpY3koY29uc3QgU3RyaW5nJiBzY2hlbWUpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyB2b2lkIHJlZ2lzdGVyVVJMU2NoZW1lQXNCeXBhc3NpbmdDb250ZW50U2VjdXJpdHlQb2xpY3ko
Y29uc3QgU3RyaW5nJiBzY2hlbWUpOyAvLyBUaHJlYWQgc2FmZS4KKyAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgdm9pZCByZW1vdmVVUkxTY2hlbWVSZWdpc3RlcmVkQXNCeXBhc3NpbmdDb250ZW50
U2VjdXJpdHlQb2xpY3koY29uc3QgU3RyaW5nJiBzY2hlbWUpOyAvLyBUaHJlYWQgc2FmZS4KKyAg
ICBzdGF0aWMgYm9vbCBzY2hlbWVTaG91bGRCeXBhc3NDb250ZW50U2VjdXJpdHlQb2xpY3koY29u
c3QgU3RyaW5nJiBzY2hlbWUpOyAvLyBUaHJlYWQgc2FmZS4KIAogICAgIC8vIFNjaGVtZXMgd2hv
c2UgcmVzcG9uc2VzIHNob3VsZCBhbHdheXMgYmUgcmV2YWxpZGF0ZWQuCiAgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIHZvaWQgcmVnaXN0ZXJVUkxTY2hlbWVBc0Fsd2F5c1JldmFsaWRhdGVkKGNv
bnN0IFN0cmluZyYpOwogICAgIHN0YXRpYyBib29sIHNob3VsZEFsd2F5c1JldmFsaWRhdGVVUkxT
Y2hlbWUoY29uc3QgU3RyaW5nJik7CiAKICAgICAvLyBTY2hlbWVzIHdob3NlIHJlcXVlc3RzIHNo
b3VsZCBiZSBwYXJ0aXRpb25lZCBpbiB0aGUgY2FjaGUKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgdm9pZCByZWdpc3RlclVSTFNjaGVtZUFzQ2FjaGVQYXJ0aXRpb25lZChjb25zdCBTdHJpbmcm
IHNjaGVtZSk7Ci0gICAgc3RhdGljIGJvb2wgc2hvdWxkUGFydGl0aW9uQ2FjaGVGb3JVUkxTY2hl
bWUoY29uc3QgU3RyaW5nJiBzY2hlbWUpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lk
IHJlZ2lzdGVyVVJMU2NoZW1lQXNDYWNoZVBhcnRpdGlvbmVkKGNvbnN0IFN0cmluZyYgc2NoZW1l
KTsgLy8gVGhyZWFkIHNhZmUuCisgICAgc3RhdGljIGJvb2wgc2hvdWxkUGFydGl0aW9uQ2FjaGVG
b3JVUkxTY2hlbWUoY29uc3QgU3RyaW5nJiBzY2hlbWUpOyAvLyBUaHJlYWQgc2FmZS4KIAogICAg
IC8vIFNjaGVtZXMgYmVzaWRlcyBodHRwKHMpIHRoYXQgc2VydmljZSB3b3JrZXJzIGFyZSBhbGxv
d2VkIHRvIGhhbmRsZQotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHJlZ2lzdGVyVVJM
U2NoZW1lU2VydmljZVdvcmtlcnNDYW5IYW5kbGUoY29uc3QgU3RyaW5nJiBzY2hlbWUpOwotICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGNhblNlcnZpY2VXb3JrZXJzSGFuZGxlVVJMU2No
ZW1lKGNvbnN0IFN0cmluZyYgc2NoZW1lKTsKLSAgICBzdGF0aWMgYm9vbCBpc1NlcnZpY2VXb3Jr
ZXJDb250YWluZXJDdXN0b21TY2hlbWUoY29uc3QgU3RyaW5nJiBzY2hlbWUpOworICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyB2b2lkIHJlZ2lzdGVyVVJMU2NoZW1lU2VydmljZVdvcmtlcnNDYW5I
YW5kbGUoY29uc3QgU3RyaW5nJiBzY2hlbWUpOyAvLyBUaHJlYWQgc2FmZS4KKyAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgYm9vbCBjYW5TZXJ2aWNlV29ya2Vyc0hhbmRsZVVSTFNjaGVtZShjb25z
dCBTdHJpbmcmIHNjaGVtZSk7IC8vIFRocmVhZCBzYWZlLgorICAgIHN0YXRpYyBib29sIGlzU2Vy
dmljZVdvcmtlckNvbnRhaW5lckN1c3RvbVNjaGVtZShjb25zdCBTdHJpbmcmIHNjaGVtZSk7IC8v
IFRocmVhZCBzYWZlLgogCiAgICAgc3RhdGljIGJvb2wgaXNVc2VyRXh0ZW5zaW9uU2NoZW1lKGNv
bnN0IFN0cmluZyYgc2NoZW1lKTsKIH07Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>