<?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>180816</bug_id>
          
          <creation_ts>2017-12-14 09:41:35 -0800</creation_ts>
          <short_desc>Service worker script fetching currently always uses the network cache</short_desc>
          <delta_ts>2017-12-15 13:38:24 -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>Service Workers</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=180826</see_also>
          <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>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1381652</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-12-14 09:41:35 -0800</bug_when>
    <thetext>Service worker script fetching currently always uses the network cache. This is incorrect as per:
- https://w3c.github.io/ServiceWorker/#update-algorithm (step 7.2)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1381658</commentid>
    <comment_count>1</comment_count>
      <attachid>329358</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-12-14 09:50:04 -0800</bug_when>
    <thetext>Created attachment 329358
WIP Patch

Working on writing a test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1381682</commentid>
    <comment_count>2</comment_count>
      <attachid>329365</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-12-14 10:55:00 -0800</bug_when>
    <thetext>Created attachment 329365
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1381713</commentid>
    <comment_count>3</comment_count>
      <attachid>329365</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-12-14 11:39:40 -0800</bug_when>
    <thetext>Comment on attachment 329365
Patch

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

&gt; Source/WebCore/workers/service/server/SWServerJobQueue.cpp:315
&gt; +    //   current time minus registration&apos;s last update check time is greater than 86400.

Why 86400?  Why do we want to force the cache to refresh every day?  Can&apos;t the server say how long it stays valid?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1381714</commentid>
    <comment_count>4</comment_count>
      <attachid>329365</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-12-14 11:40:53 -0800</bug_when>
    <thetext>Comment on attachment 329365
Patch

As much as I think that&apos;s a bad idea, it&apos;s what the spec says.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1381715</commentid>
    <comment_count>5</comment_count>
      <attachid>329365</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-12-14 11:42:08 -0800</bug_when>
    <thetext>Comment on attachment 329365
Patch

I wonder whether cachePolicy could be a parameter of ServiceWorkerJobData.
That might help not passing this parameter explicitly everywhere.

Also, the test would be a good candidate for WPT upload. Would need to be testharness.js based and use WPT server.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1381717</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-12-14 11:45:20 -0800</bug_when>
    <thetext>(In reply to youenn fablet from comment #5)
&gt; Comment on attachment 329365 [details]
&gt; Patch
&gt; 
&gt; I wonder whether cachePolicy could be a parameter of ServiceWorkerJobData.
&gt; That might help not passing this parameter explicitly everywhere.

The job is passed from the WebProcess to the StorageProcess. Then when we trigger the script fetch, we only pass the job identifier from the StorageProcess to the WebProcess and the WebProcess looks up the job in its own map.

Wether or not we want to bypass the cache is determined by the StorageProcess so it cannot be passed via the Job.

&gt; 
&gt; Also, the test would be a good candidate for WPT upload. Would need to be
&gt; testharness.js based and use WPT server.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1381720</commentid>
    <comment_count>7</comment_count>
      <attachid>329365</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-12-14 11:55:07 -0800</bug_when>
    <thetext>Comment on attachment 329365
Patch

Clearing flags on attachment: 329365

Committed r225916: &lt;https://trac.webkit.org/changeset/225916&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1381721</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-12-14 11:55:08 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1381722</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-12-14 11:56:47 -0800</bug_when>
    <thetext>&lt;rdar://problem/36054182&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1381959</commentid>
    <comment_count>10</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2017-12-14 17:55:59 -0800</bug_when>
    <thetext>&gt; As much as I think that&apos;s a bad idea, it&apos;s what the spec says.

I think we should file a PR to remove this policy from the spec. It is stupid.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1381975</commentid>
    <comment_count>11</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-12-14 18:35:02 -0800</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #10)
&gt; &gt; As much as I think that&apos;s a bad idea, it&apos;s what the spec says.
&gt; 
&gt; I think we should file a PR to remove this policy from the spec. It is
&gt; stupid.

What exactly do you guys object to? You think updating a service worker should always consult the disk cache?

The way it is currently specified, it lets the developer decide what the behavior should be.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1381987</commentid>
    <comment_count>12</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-12-14 19:02:04 -0800</bug_when>
    <thetext>Maybe the issue is the 84600 seconds rule.

Note that it might not have a terrific impact since it will in most cases end up in a conditional request. Nothing too harmful here. Maybe this overriding of HTTP cache headers is a security counter measure, it would be good to know the rationale.

The spec does not say a word about when a user agent is expected to stop a service worker. It may also update it based on its own rules. By having this simple rule, one benefit is some consistency in what web developers can expect across all browsers.

If we are offline though, the update will fail and IIUC, we might retry everytime until we succeed to have a response. If so, maybe there is some room for optimization.

In the same vein, in many cases, we might get the same script resource.
Might not be worth doing the full update thing in that case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1381989</commentid>
    <comment_count>13</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2017-12-14 19:04:25 -0800</bug_when>
    <thetext>&gt; What exactly do you guys object to? You think updating a service worker
&gt; should always consult the disk cache?
&gt; 
&gt; The way it is currently specified, it lets the developer decide what the
&gt; behavior should be.

I&apos;m objecting to the needless inefficiency of reloading each service worker every day, even if there&apos;s a valid unexpired cache entry.

In what sense does the developer decide? Can the developer specify not to perform the daily reload?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1382008</commentid>
    <comment_count>14</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-12-14 19:20:39 -0800</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #13)
&gt; &gt; What exactly do you guys object to? You think updating a service worker
&gt; &gt; should always consult the disk cache?
&gt; &gt; 
&gt; &gt; The way it is currently specified, it lets the developer decide what the
&gt; &gt; behavior should be.
&gt; 
&gt; I&apos;m objecting to the needless inefficiency of reloading each service worker
&gt; every day, even if there&apos;s a valid unexpired cache entry.
&gt; 
&gt; In what sense does the developer decide? Can the developer specify not to
&gt; perform the daily reload?

Ok. The 24-hour force reload is indeed not something the developer can control. As I said, Alex and your comment were so vague, I had no idea what your were objecting to.

I would agree that the 24-hour force reload is excessive, especially in combination with soft update (which we do not implement yet). Without soft update (which happens when a load is intercepted by a service worker), we only fetch the script when:
1. The page registers a service worker
2. The page calls update() explicitly on its service worker

Therefore, without soft update, this happens rarely.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1382012</commentid>
    <comment_count>15</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-12-14 19:25:51 -0800</bug_when>
    <thetext>(In reply to Chris Dumez from comment #14)
&gt; (In reply to Geoffrey Garen from comment #13)
&gt; &gt; &gt; What exactly do you guys object to? You think updating a service worker
&gt; &gt; &gt; should always consult the disk cache?
&gt; &gt; &gt; 
&gt; &gt; &gt; The way it is currently specified, it lets the developer decide what the
&gt; &gt; &gt; behavior should be.
&gt; &gt; 
&gt; &gt; I&apos;m objecting to the needless inefficiency of reloading each service worker
&gt; &gt; every day, even if there&apos;s a valid unexpired cache entry.
&gt; &gt; 
&gt; &gt; In what sense does the developer decide? Can the developer specify not to
&gt; &gt; perform the daily reload?
&gt; 
&gt; Ok. The 24-hour force reload is indeed not something the developer can
&gt; control. As I said, Alex and your comment were so vague, I had no idea what
&gt; your were objecting to.
&gt; 
&gt; I would agree that the 24-hour force reload is excessive, especially in
&gt; combination with soft update (which we do not implement yet). Without soft
&gt; update (which happens when a load is intercepted by a service worker), we
&gt; only fetch the script when:
&gt; 1. The page registers a service worker
&gt; 2. The page calls update() explicitly on its service worker
&gt; 
&gt; Therefore, without soft update, this happens rarely.

Soft update on handle fetch is specified at:
- https://w3c.github.io/ServiceWorker/#ref-for-soft-update①

This is the part that I think is too aggressive. But we do not implement this yet.

Without soft update, update only happens when the page&apos;s script explicitly asks us to update. Therefore, I think it is fine to go to the network in such case IMHO.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1382021</commentid>
    <comment_count>16</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-12-14 19:36:25 -0800</bug_when>
    <thetext>Note also that this might be a protection against buggy service worker scripts.
It is indeed much more difficult to update a buggy service worker than a buggy web page.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1382234</commentid>
    <comment_count>17</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2017-12-15 11:58:54 -0800</bug_when>
    <thetext>&gt; Without soft update, update only happens when the page&apos;s script explicitly
&gt; asks us to update. Therefore, I think it is fine to go to the network in
&gt; such case IMHO.

Yes, we agree: An explicit registration or call to update() is a fine time to reload from origin if 24 hours have passed; but soft update goes too far by mandating reload for each service worker every 24 hours.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1382247</commentid>
    <comment_count>18</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-12-15 12:32:13 -0800</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #17)
&gt; &gt; Without soft update, update only happens when the page&apos;s script explicitly
&gt; &gt; asks us to update. Therefore, I think it is fine to go to the network in
&gt; &gt; such case IMHO.
&gt; 
&gt; Yes, we agree: An explicit registration or call to update() is a fine time
&gt; to reload from origin if 24 hours have passed; but soft update goes too far
&gt; by mandating reload for each service worker every 24 hours.

Some links:
- https://github.com/w3c/ServiceWorker/issues/514
- https://github.com/w3c/ServiceWorker/issues/715

Other browsers seem to implement this rule.

Buggy/malicious service workers blocking any kind of update seems to be one of the main reason for the current policy.
This policy allows preventing web developers from making errors that they could not easily fix.

I do not see any easy solution other than doing some regular pinging to the server or hoping that web devs will not fall into that very easy trap.
Do we have a better plan here?

The pinging modality could be optimized though, like updating all service worker at the same time for instance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1382252</commentid>
    <comment_count>19</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2017-12-15 12:43:36 -0800</bug_when>
    <thetext>&gt; Buggy/malicious service workers blocking any kind of update seems to be one
&gt; of the main reason for the current policy.
&gt; This policy allows preventing web developers from making errors that they
&gt; could not easily fix.

I don&apos;t see how this situation is different from any other case of serving a bad main resource with a long cache expiry date. Yes, those bugs happen sometimes. But they have not brought down the internet, and there is nothing unique about ServiceWorkers here.

After an author has done appropriate user testing and deployed some software, caching for more than a day should be possible. Developers who only want to cache for a day can send a cache expiry value of 24 hours.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1382287</commentid>
    <comment_count>20</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-12-15 13:38:24 -0800</bug_when>
    <thetext>&gt; I don&apos;t see how this situation is different from any other case of serving a
&gt; bad main resource with a long cache expiry date. Yes, those bugs happen
&gt; sometimes. But they have not brought down the internet, and there is nothing
&gt; unique about ServiceWorkers here.

I guess one difference is the amplitude of the risk.

If you screw things up on one main resource, only this main resource will be affected.
Chances are users will anyway navigate to some other resources and scripts can just bust the cache with fetch+&quot;no-cache&quot;.

If you screw things up with the SW script, all web site main resources might be screwed.
There might be no possibility to inject new code to fix that bug.
One might need to rely on user cleaning the cache or doing some hard reload.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>329358</attachid>
            <date>2017-12-14 09:50:04 -0800</date>
            <delta_ts>2017-12-14 10:54:59 -0800</delta_ts>
            <desc>WIP Patch</desc>
            <filename>180816_sw_noCache_wip.patch</filename>
            <type>text/plain</type>
            <size>20804</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyLmNwcAppbmRleCAzOTBjYTJjMjNkMy4uYmZlNzgwNGMyNzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5jcHAKQEAgLTk4LDcgKzk4LDcgQEAgRXhjZXB0aW9u
T3I8UmVmPFdvcmtlcj4+IFdvcmtlcjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQsIEpTQzo6UnUKIAogICAgIHdvcmtlci0+bV9zY3JpcHRMb2FkZXIgPSBXb3JrZXJTY3Jp
cHRMb2FkZXI6OmNyZWF0ZSgpOwogICAgIGF1dG8gY29udGVudFNlY3VyaXR5UG9saWN5RW5mb3Jj
ZW1lbnQgPSBzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3kgPyBDb250
ZW50U2VjdXJpdHlQb2xpY3lFbmZvcmNlbWVudDo6RG9Ob3RFbmZvcmNlIDogQ29udGVudFNlY3Vy
aXR5UG9saWN5RW5mb3JjZW1lbnQ6OkVuZm9yY2VDaGlsZFNyY0RpcmVjdGl2ZTsKLSAgICB3b3Jr
ZXItPm1fc2NyaXB0TG9hZGVyLT5sb2FkQXN5bmNocm9ub3VzbHkoJmNvbnRleHQsIHNjcmlwdFVS
TC5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgRmV0Y2hPcHRpb25zOjpNb2RlOjpTYW1lT3JpZ2luLCBj
b250ZW50U2VjdXJpdHlQb2xpY3lFbmZvcmNlbWVudCwgd29ya2VyLT5tX2lkZW50aWZpZXIsIHdv
cmtlci5wdHIoKSk7CisgICAgd29ya2VyLT5tX3NjcmlwdExvYWRlci0+bG9hZEFzeW5jaHJvbm91
c2x5KCZjb250ZXh0LCBzY3JpcHRVUkwucmVsZWFzZVJldHVyblZhbHVlKCksIEZldGNoT3B0aW9u
czo6TW9kZTo6U2FtZU9yaWdpbiwgQ2FjaGluZ1BvbGljeTo6QWxsb3dDYWNoaW5nLCBjb250ZW50
U2VjdXJpdHlQb2xpY3lFbmZvcmNlbWVudCwgd29ya2VyLT5tX2lkZW50aWZpZXIsIHdvcmtlci5w
dHIoKSk7CiAgICAgcmV0dXJuIFdURk1vdmUod29ya2VyKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwCmluZGV4IDM2ZGIyZjljOTNjLi41NjRl
YjdjNmJmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRM
b2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVy
LmNwcApAQCAtNzIsNyArNzIsNyBAQCB2b2lkIFdvcmtlclNjcmlwdExvYWRlcjo6bG9hZFN5bmNo
cm9ub3VzbHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aQogICAgIFdvcmtl
clRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkod29ya2VyR2xvYmFs
U2NvcGUsIFdURk1vdmUoKnJlcXVlc3QpLCAqdGhpcywgb3B0aW9ucyk7CiB9CiAKLXZvaWQgV29y
a2VyU2NyaXB0TG9hZGVyOjpsb2FkQXN5bmNocm9ub3VzbHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgY29uc3QgVVJMJiB1cmwsIEZldGNoT3B0aW9uczo6
TW9kZSBtb2RlLCBDb250ZW50U2VjdXJpdHlQb2xpY3lFbmZvcmNlbWVudCBjb250ZW50U2VjdXJp
dHlQb2xpY3lFbmZvcmNlbWVudCwgY29uc3QgU3RyaW5nJiBpbml0aWF0b3JJZGVudGlmaWVyLCBX
b3JrZXJTY3JpcHRMb2FkZXJDbGllbnQqIGNsaWVudCkKK3ZvaWQgV29ya2VyU2NyaXB0TG9hZGVy
Ojpsb2FkQXN5bmNocm9ub3VzbHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCwgY29uc3QgVVJMJiB1cmwsIEZldGNoT3B0aW9uczo6TW9kZSBtb2RlLCBDYWNo
aW5nUG9saWN5IGNhY2hpbmdQb2xpY3ksIENvbnRlbnRTZWN1cml0eVBvbGljeUVuZm9yY2VtZW50
IGNvbnRlbnRTZWN1cml0eVBvbGljeUVuZm9yY2VtZW50LCBjb25zdCBTdHJpbmcmIGluaXRpYXRv
cklkZW50aWZpZXIsIFdvcmtlclNjcmlwdExvYWRlckNsaWVudCogY2xpZW50KQogewogICAgIEFT
U0VSVChjbGllbnQpOwogICAgIEFTU0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKQEAgLTkx
LDYgKzkxLDcgQEAgdm9pZCBXb3JrZXJTY3JpcHRMb2FkZXI6OmxvYWRBc3luY2hyb25vdXNseShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXQKICAgICBUaHJlYWRhYmxlTG9hZGVy
T3B0aW9ucyBvcHRpb25zOwogICAgIG9wdGlvbnMuY3JlZGVudGlhbHMgPSBGZXRjaE9wdGlvbnM6
OkNyZWRlbnRpYWxzOjpTYW1lT3JpZ2luOwogICAgIG9wdGlvbnMubW9kZSA9IG1vZGU7CisgICAg
b3B0aW9ucy5jYWNoaW5nUG9saWN5ID0gY2FjaGluZ1BvbGljeTsKICAgICBvcHRpb25zLnNlbmRM
b2FkQ2FsbGJhY2tzID0gU2VuZENhbGxiYWNrczsKICAgICBvcHRpb25zLmNvbnRlbnRTZWN1cml0
eVBvbGljeUVuZm9yY2VtZW50ID0gY29udGVudFNlY3VyaXR5UG9saWN5RW5mb3JjZW1lbnQ7CiAj
aWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
U2NyaXB0TG9hZGVyLmgKaW5kZXggYTg2YzU3NGExYjAuLmM4ZDljN2Y1MDZmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmgKQEAgLTUzLDcgKzUzLDcgQEAg
cHVibGljOgogICAgIH0KIAogICAgIHZvaWQgbG9hZFN5bmNocm9ub3VzbHkoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIGNvbnN0IFVSTCYsIEZldGNoT3B0aW9uczo6TW9kZSwgQ29udGVudFNlY3Vy
aXR5UG9saWN5RW5mb3JjZW1lbnQsIGNvbnN0IFN0cmluZyYgaW5pdGlhdG9ySWRlbnRpZmllcik7
Ci0gICAgdm9pZCBsb2FkQXN5bmNocm9ub3VzbHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNv
bnN0IFVSTCYsIEZldGNoT3B0aW9uczo6TW9kZSwgQ29udGVudFNlY3VyaXR5UG9saWN5RW5mb3Jj
ZW1lbnQsIGNvbnN0IFN0cmluZyYgaW5pdGlhdG9ySWRlbnRpZmllciwgV29ya2VyU2NyaXB0TG9h
ZGVyQ2xpZW50Kik7CisgICAgdm9pZCBsb2FkQXN5bmNocm9ub3VzbHkoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIGNvbnN0IFVSTCYsIEZldGNoT3B0aW9uczo6TW9kZSwgQ2FjaGluZ1BvbGljeSwg
Q29udGVudFNlY3VyaXR5UG9saWN5RW5mb3JjZW1lbnQsIGNvbnN0IFN0cmluZyYgaW5pdGlhdG9y
SWRlbnRpZmllciwgV29ya2VyU2NyaXB0TG9hZGVyQ2xpZW50Kik7CiAKICAgICB2b2lkIG5vdGlm
eUVycm9yKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9T
V0NsaWVudENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NX
Q2xpZW50Q29ubmVjdGlvbi5jcHAKaW5kZXggOThhNDIyOWNmNmIuLjkwNjRkZDRlODg0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU1dDbGllbnRDb25uZWN0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU1dDbGllbnRDb25uZWN0
aW9uLmNwcApAQCAtMTE2LDcgKzExNiw3IEBAIHZvaWQgU1dDbGllbnRDb25uZWN0aW9uOjp1bnJl
Z2lzdHJhdGlvbkpvYlJlc29sdmVkSW5TZXJ2ZXIoY29uc3QgU2VydmljZVdvcmtlckpvCiAgICAg
fSk7CiB9CiAKLXZvaWQgU1dDbGllbnRDb25uZWN0aW9uOjpzdGFydFNjcmlwdEZldGNoRm9yU2Vy
dmVyKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYgam9iRGF0YUlkZW50aWZp
ZXIpCit2b2lkIFNXQ2xpZW50Q29ubmVjdGlvbjo6c3RhcnRTY3JpcHRGZXRjaEZvclNlcnZlcihj
b25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXImIGpvYkRhdGFJZGVudGlmaWVyLCBi
b29sIHNob3VsZEJ5cGFzc0NhY2hlKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAK
QEAgLTEzMSw4ICsxMzEsOCBAQCB2b2lkIFNXQ2xpZW50Q29ubmVjdGlvbjo6c3RhcnRTY3JpcHRG
ZXRjaEZvclNlcnZlcihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZQogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6cG9zdFRhc2tUbyhqb2It
PmNvbnRleHRJZGVudGlmaWVyKCksIFtqb2JdKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7Ci0g
ICAgICAgIGpvYi0+c3RhcnRTY3JpcHRGZXRjaCgpOworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ6OnBvc3RUYXNrVG8oam9iLT5jb250ZXh0SWRlbnRpZmllcigpLCBbam9iLCBzaG91bGRCeXBh
c3NDYWNoZV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKKyAgICAgICAgam9iLT5zdGFydFNj
cmlwdEZldGNoKHNob3VsZEJ5cGFzc0NhY2hlKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NXQ2xpZW50Q29ubmVjdGlvbi5oIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NXQ2xpZW50Q29ubmVjdGlvbi5oCmluZGV4IDEx
YzAyZWU1NmFkLi5mMDliZTBiZTk0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NXQ2xpZW50Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9TV0NsaWVudENvbm5lY3Rpb24uaApAQCAtODksNyArODksNyBAQCBwcm90ZWN0
ZWQ6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBqb2JSZWplY3RlZEluU2VydmVyKGNvbnN0IFNl
cnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYsIGNvbnN0IEV4Y2VwdGlvbkRhdGEmKTsKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlZ2lzdHJhdGlvbkpvYlJlc29sdmVkSW5TZXJ2ZXIoY29u
c3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJiwgU2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbkRhdGEmJiwgU2hvdWxkTm90aWZ5V2hlblJlc29sdmVkKTsKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHVucmVnaXN0cmF0aW9uSm9iUmVzb2x2ZWRJblNlcnZlcihjb25zdCBTZXJ2aWNlV29y
a2VySm9iRGF0YUlkZW50aWZpZXImLCBib29sIHVucmVnaXN0cmF0aW9uUmVzdWx0KTsKLSAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHN0YXJ0U2NyaXB0RmV0Y2hGb3JTZXJ2ZXIoY29uc3QgU2Vydmlj
ZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdGFy
dFNjcmlwdEZldGNoRm9yU2VydmVyKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmll
ciYsIGJvb2wgc2hvdWxkQnlwYXNzQ2FjaGUpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcG9z
dE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoRG9jdW1lbnRJZGVudGlmaWVyIGRlc3RpbmF0
aW9uQ29udGV4dElkZW50aWZpZXIsIFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgbWVzc2Fn
ZSwgU2VydmljZVdvcmtlckRhdGEmJiBzb3VyY2UsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2lu
KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZVJlZ2lzdHJhdGlvblN0YXRlKFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
U3RhdGUsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckRhdGE+Jik7CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCB1cGRhdGVXb3JrZXJTdGF0ZShTZXJ2aWNlV29ya2VySWRlbnRpZmll
ciwgU2VydmljZVdvcmtlclN0YXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcAppbmRleCA0Y2U1ODVjNjRi
Ny4uNzdjYmEyOTI1ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAKQEAgLTQzMSw3ICs0MzEsNyBAQCB2
b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmpvYlJlc29sdmVkV2l0aFVucmVnaXN0cmF0aW9u
UmVzdWx0KFNlcnZpY2VXb3JrZXJKbwogICAgIH0pOwogfQogCi12b2lkIFNlcnZpY2VXb3JrZXJD
b250YWluZXI6OnN0YXJ0U2NyaXB0RmV0Y2hGb3JKb2IoU2VydmljZVdvcmtlckpvYiYgam9iKQor
dm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpzdGFydFNjcmlwdEZldGNoRm9ySm9iKFNlcnZp
Y2VXb3JrZXJKb2ImIGpvYiwgYm9vbCBzaG91bGRCeXBhc3NDYWNoZSkKIHsKICNpZm5kZWYgTkRF
QlVHCiAgICAgQVNTRVJUKG1fY3JlYXRpb25UaHJlYWQucHRyKCkgPT0gJlRocmVhZDo6Y3VycmVu
dCgpKTsKQEAgLTQ0OSw3ICs0NDksNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OnN0
YXJ0U2NyaXB0RmV0Y2hGb3JKb2IoU2VydmljZVdvcmtlckpvYiYgam9iKQogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgam9iLmZldGNoU2NyaXB0V2l0aENvbnRleHQoKmNvbnRleHQpOwor
ICAgIGpvYi5mZXRjaFNjcmlwdFdpdGhDb250ZXh0KCpjb250ZXh0LCBzaG91bGRCeXBhc3NDYWNo
ZSk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6am9iRmluaXNoZWRMb2FkaW5n
U2NyaXB0KFNlcnZpY2VXb3JrZXJKb2ImIGpvYiwgY29uc3QgU3RyaW5nJiBzY3JpcHQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRh
aW5lci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250
YWluZXIuaAppbmRleCA3ZjdjZTgyNjI4OS4uYzVmZWRkNzIwZTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuaApA
QCAtODgsNyArODgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgam9iRmFpbGVkV2l0aEV4Y2VwdGlv
bihTZXJ2aWNlV29ya2VySm9iJiwgY29uc3QgRXhjZXB0aW9uJikgZmluYWw7CiAgICAgdm9pZCBq
b2JSZXNvbHZlZFdpdGhSZWdpc3RyYXRpb24oU2VydmljZVdvcmtlckpvYiYsIFNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25EYXRhJiYsIFNob3VsZE5vdGlmeVdoZW5SZXNvbHZlZCkgZmluYWw7CiAg
ICAgdm9pZCBqb2JSZXNvbHZlZFdpdGhVbnJlZ2lzdHJhdGlvblJlc3VsdChTZXJ2aWNlV29ya2Vy
Sm9iJiwgYm9vbCB1bnJlZ2lzdHJhdGlvblJlc3VsdCkgZmluYWw7Ci0gICAgdm9pZCBzdGFydFNj
cmlwdEZldGNoRm9ySm9iKFNlcnZpY2VXb3JrZXJKb2ImKSBmaW5hbDsKKyAgICB2b2lkIHN0YXJ0
U2NyaXB0RmV0Y2hGb3JKb2IoU2VydmljZVdvcmtlckpvYiYsIGJvb2wgc2hvdWxkQnlwYXNzQ2Fj
aGUpIGZpbmFsOwogICAgIHZvaWQgam9iRmluaXNoZWRMb2FkaW5nU2NyaXB0KFNlcnZpY2VXb3Jr
ZXJKb2ImLCBjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICB2b2lkIGpvYkZhaWxlZExvYWRpbmdT
Y3JpcHQoU2VydmljZVdvcmtlckpvYiYsIGNvbnN0IFJlc291cmNlRXJyb3ImLCBzdGQ6Om9wdGlv
bmFsPEV4Y2VwdGlvbj4mJikgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iLmNwcAppbmRleCA0YTg4MWQ3N2I1OC4uY2ExZTY5
Nzg4MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VySm9iLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlckpvYi5jcHAKQEAgLTc3LDIyICs3NywyNCBAQCB2b2lkIFNlcnZpY2VXb3JrZXJKb2I6
OnJlc29sdmVkV2l0aFVucmVnaXN0cmF0aW9uUmVzdWx0KGJvb2wgdW5yZWdpc3RyYXRpb25SZXN1
bAogICAgIG1fY2xpZW50LT5qb2JSZXNvbHZlZFdpdGhVbnJlZ2lzdHJhdGlvblJlc3VsdCgqdGhp
cywgdW5yZWdpc3RyYXRpb25SZXN1bHQpOwogfQogCi12b2lkIFNlcnZpY2VXb3JrZXJKb2I6OnN0
YXJ0U2NyaXB0RmV0Y2goKQordm9pZCBTZXJ2aWNlV29ya2VySm9iOjpzdGFydFNjcmlwdEZldGNo
KGJvb2wgc2hvdWxkQnlwYXNzQ2FjaGUpCiB7CiAgICAgQVNTRVJUKG1fY3JlYXRpb25UaHJlYWQu
cHRyKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKICAgICBBU1NFUlQoIW1fY29tcGxldGVkKTsK
IAotICAgIG1fY2xpZW50LT5zdGFydFNjcmlwdEZldGNoRm9ySm9iKCp0aGlzKTsKKyAgICBtX2Ns
aWVudC0+c3RhcnRTY3JpcHRGZXRjaEZvckpvYigqdGhpcywgc2hvdWxkQnlwYXNzQ2FjaGUpOwog
fQogCi12b2lkIFNlcnZpY2VXb3JrZXJKb2I6OmZldGNoU2NyaXB0V2l0aENvbnRleHQoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKK3ZvaWQgU2VydmljZVdvcmtlckpvYjo6ZmV0Y2hT
Y3JpcHRXaXRoQ29udGV4dChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBib29sIHNo
b3VsZEJ5cGFzc0NhY2hlKQogewogICAgIEFTU0VSVChtX2NyZWF0aW9uVGhyZWFkLnB0cigpID09
ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAgICAgQVNTRVJUKCFtX2NvbXBsZXRlZCk7CiAKKyAgICBD
YWNoaW5nUG9saWN5IGNhY2hpbmdQb2xpY3kgPSBzaG91bGRCeXBhc3NDYWNoZSA/IENhY2hpbmdQ
b2xpY3k6OkRpc2FsbG93Q2FjaGluZyA6IENhY2hpbmdQb2xpY3k6OkFsbG93Q2FjaGluZzsKKwog
ICAgIC8vIEZJWE1FOiBXb3JrZXJTY3JpcHRMb2FkZXIgaXMgdGhlIHdyb25nIGxvYWRlciBjbGFz
cyB0byB1c2UgaGVyZSwgYnV0IHRoZXJlJ3Mgbm90aGluZyBlbHNlIGJldHRlciByaWdodCBub3cu
CiAgICAgbV9zY3JpcHRMb2FkZXIgPSBXb3JrZXJTY3JpcHRMb2FkZXI6OmNyZWF0ZSgpOwotICAg
IG1fc2NyaXB0TG9hZGVyLT5sb2FkQXN5bmNocm9ub3VzbHkoJmNvbnRleHQsIG1fam9iRGF0YS5z
Y3JpcHRVUkwsIEZldGNoT3B0aW9uczo6TW9kZTo6U2FtZU9yaWdpbiwgQ29udGVudFNlY3VyaXR5
UG9saWN5RW5mb3JjZW1lbnQ6OkRvTm90RW5mb3JjZSwgInNlcnZpY2VXb3JrZXJTY3JpcHRMb2Fk
OiIsIHRoaXMpOworICAgIG1fc2NyaXB0TG9hZGVyLT5sb2FkQXN5bmNocm9ub3VzbHkoJmNvbnRl
eHQsIG1fam9iRGF0YS5zY3JpcHRVUkwsIEZldGNoT3B0aW9uczo6TW9kZTo6U2FtZU9yaWdpbiwg
Y2FjaGluZ1BvbGljeSwgQ29udGVudFNlY3VyaXR5UG9saWN5RW5mb3JjZW1lbnQ6OkRvTm90RW5m
b3JjZSwgInNlcnZpY2VXb3JrZXJTY3JpcHRMb2FkOiIsIHRoaXMpOwogfQogCiB2b2lkIFNlcnZp
Y2VXb3JrZXJKb2I6OmRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlckpvYi5oCmluZGV4IDljNDI4ZTc3MjAwLi4xNDNhN2ZjYmQ1ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJK
b2IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpv
Yi5oCkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGZhaWxlZFdpdGhFeGNlcHRp
b24oY29uc3QgRXhjZXB0aW9uJik7CiAgICAgdm9pZCByZXNvbHZlZFdpdGhSZWdpc3RyYXRpb24o
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEmJiwgU2hvdWxkTm90aWZ5V2hlblJlc29sdmVk
KTsKICAgICB2b2lkIHJlc29sdmVkV2l0aFVucmVnaXN0cmF0aW9uUmVzdWx0KGJvb2wpOwotICAg
IHZvaWQgc3RhcnRTY3JpcHRGZXRjaCgpOworICAgIHZvaWQgc3RhcnRTY3JpcHRGZXRjaChib29s
IHNob3VsZEJ5cGFzc0NhY2hlKTsKIAogICAgIHVzaW5nIElkZW50aWZpZXIgPSBTZXJ2aWNlV29y
a2VySm9iSWRlbnRpZmllcjsKICAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCB7IHJl
dHVybiBtX2pvYkRhdGEuaWRlbnRpZmllcigpLmpvYklkZW50aWZpZXI7IH0KQEAgLTY2LDcgKzY2
LDcgQEAgcHVibGljOgogICAgIFNlcnZpY2VXb3JrZXJKb2JEYXRhIGRhdGEoKSBjb25zdCB7IHJl
dHVybiBtX2pvYkRhdGE7IH0KICAgICBEZWZlcnJlZFByb21pc2UmIHByb21pc2UoKSB7IHJldHVy
biBtX3Byb21pc2UuZ2V0KCk7IH0KIAotICAgIHZvaWQgZmV0Y2hTY3JpcHRXaXRoQ29udGV4dChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0Jik7CisgICAgdm9pZCBmZXRjaFNjcmlwdFdpdGhDb250ZXh0
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBib29sIHNob3VsZEJ5cGFzc0NhY2hlKTsKIAogICAg
IGNvbnN0IERvY3VtZW50T3JXb3JrZXJJZGVudGlmaWVyJiBjb250ZXh0SWRlbnRpZmllcigpIHsg
cmV0dXJuIG1fY29udGV4dElkZW50aWZpZXI7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JDbGllbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iQ2xpZW50LmgKaW5kZXggZjEwM2Iy
NzhlMzcuLjI3NGVjOTNiZDgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlckpvYkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iQ2xpZW50LmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBqb2JGYWlsZWRXaXRoRXhjZXB0aW9uKFNlcnZpY2VXb3Jr
ZXJKb2ImLCBjb25zdCBFeGNlcHRpb24mKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGpvYlJlc29s
dmVkV2l0aFJlZ2lzdHJhdGlvbihTZXJ2aWNlV29ya2VySm9iJiwgU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbkRhdGEmJiwgU2hvdWxkTm90aWZ5V2hlblJlc29sdmVkKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGpvYlJlc29sdmVkV2l0aFVucmVnaXN0cmF0aW9uUmVzdWx0KFNlcnZpY2VXb3JrZXJK
b2ImLCBib29sIHVucmVnaXN0cmF0aW9uUmVzdWx0KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHN0
YXJ0U2NyaXB0RmV0Y2hGb3JKb2IoU2VydmljZVdvcmtlckpvYiYpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgc3RhcnRTY3JpcHRGZXRjaEZvckpvYihTZXJ2aWNlV29ya2VySm9iJiwgYm9vbCBzaG91
bGRCeXBhc3NDYWNoZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBqb2JGaW5pc2hlZExvYWRpbmdT
Y3JpcHQoU2VydmljZVdvcmtlckpvYiYsIGNvbnN0IFN0cmluZyYpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgam9iRmFpbGVkTG9hZGluZ1NjcmlwdChTZXJ2aWNlV29ya2VySm9iJiwgY29uc3QgUmVz
b3VyY2VFcnJvciYsIHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uPiYmKSA9IDA7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKaW5kZXgg
YTFiNjZkMTlhMTMuLjRmYmM3MjBjZThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcApAQCAtMjg0LDE0ICsyODQsMTQgQEAgdm9p
ZCBTV1NlcnZlcjo6cmVzb2x2ZVVucmVnaXN0cmF0aW9uSm9iKGNvbnN0IFNlcnZpY2VXb3JrZXJK
b2JEYXRhJiBqb2JEYXRhLCBjb24KICAgICBjb25uZWN0aW9uLT5yZXNvbHZlVW5yZWdpc3RyYXRp
b25Kb2JJbkNsaWVudChqb2JEYXRhLmlkZW50aWZpZXIoKSwgcmVnaXN0cmF0aW9uS2V5LCB1bnJl
Z2lzdHJhdGlvblJlc3VsdCk7CiB9CiAKLXZvaWQgU1dTZXJ2ZXI6OnN0YXJ0U2NyaXB0RmV0Y2go
Y29uc3QgU2VydmljZVdvcmtlckpvYkRhdGEmIGpvYkRhdGEpCit2b2lkIFNXU2VydmVyOjpzdGFy
dFNjcmlwdEZldGNoKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiBqb2JEYXRhLCBib29sIHNo
b3VsZEJ5cGFzc0NhY2hlKQogewogICAgIExPRyhTZXJ2aWNlV29ya2VyLCAiU2VydmVyIGlzc3Vp
bmcgc3RhcnRTY3JpcHRGZXRjaCBmb3IgY3VycmVudCBqb2IgJXMgaW4gY2xpZW50Iiwgam9iRGF0
YS5pZGVudGlmaWVyKCkubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogICAgIGF1dG8q
IGNvbm5lY3Rpb24gPSBtX2Nvbm5lY3Rpb25zLmdldChqb2JEYXRhLmNvbm5lY3Rpb25JZGVudGlm
aWVyKCkpOwogICAgIGlmICghY29ubmVjdGlvbikKICAgICAgICAgcmV0dXJuOwogCi0gICAgY29u
bmVjdGlvbi0+c3RhcnRTY3JpcHRGZXRjaEluQ2xpZW50KGpvYkRhdGEuaWRlbnRpZmllcigpKTsK
KyAgICBjb25uZWN0aW9uLT5zdGFydFNjcmlwdEZldGNoSW5DbGllbnQoam9iRGF0YS5pZGVudGlm
aWVyKCksIHNob3VsZEJ5cGFzc0NhY2hlKTsKIH0KIAogdm9pZCBTV1NlcnZlcjo6c2NyaXB0RmV0
Y2hGaW5pc2hlZChDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTZXJ2aWNlV29ya2VyRmV0
Y2hSZXN1bHQmIHJlc3VsdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXIuaAppbmRleCA1YzJlMDQzNGM2YS4uZWQ3MzNiZTA3OWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKQEAgLTEw
MSw3ICsxMDEsNyBAQCBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZWplY3RKb2JJbkNs
aWVudChjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXImLCBjb25zdCBFeGNlcHRp
b25EYXRhJikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgcmVzb2x2ZVJlZ2lzdHJhdGlvbkpv
YkluQ2xpZW50KGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYsIGNvbnN0IFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhJiwgU2hvdWxkTm90aWZ5V2hlblJlc29sdmVkKSA9
IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZXNvbHZlVW5yZWdpc3RyYXRpb25Kb2JJbkNsaWVu
dChjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXImLCBjb25zdCBTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uS2V5JiwgYm9vbCByZWdpc3RyYXRpb25SZXN1bHQpID0gMDsKLSAgICAg
ICAgdmlydHVhbCB2b2lkIHN0YXJ0U2NyaXB0RmV0Y2hJbkNsaWVudChjb25zdCBTZXJ2aWNlV29y
a2VySm9iRGF0YUlkZW50aWZpZXImKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBzdGFydFNj
cmlwdEZldGNoSW5DbGllbnQoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJiwg
Ym9vbCBzaG91bGRCeXBhc3NDYWNoZSkgPSAwOwogCiAgICAgICAgIHN0cnVjdCBSZWdpc3RyYXRp
b25SZWFkeVJlcXVlc3QgewogICAgICAgICAgICAgU2VjdXJpdHlPcmlnaW5EYXRhIHRvcE9yaWdp
bjsKQEAgLTEyOSw3ICsxMjksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWplY3RKb2IoY29uc3Qg
U2VydmljZVdvcmtlckpvYkRhdGEmLCBjb25zdCBFeGNlcHRpb25EYXRhJik7CiAgICAgdm9pZCBy
ZXNvbHZlUmVnaXN0cmF0aW9uSm9iKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiwgY29uc3Qg
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEmLCBTaG91bGROb3RpZnlXaGVuUmVzb2x2ZWQp
OwogICAgIHZvaWQgcmVzb2x2ZVVucmVnaXN0cmF0aW9uSm9iKGNvbnN0IFNlcnZpY2VXb3JrZXJK
b2JEYXRhJiwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYsIGJvb2wgdW5yZWdp
c3RyYXRpb25SZXN1bHQpOwotICAgIHZvaWQgc3RhcnRTY3JpcHRGZXRjaChjb25zdCBTZXJ2aWNl
V29ya2VySm9iRGF0YSYpOworICAgIHZvaWQgc3RhcnRTY3JpcHRGZXRjaChjb25zdCBTZXJ2aWNl
V29ya2VySm9iRGF0YSYsIGJvb2wgc2hvdWxkQnlwYXNzQ2FjaGUpOwogCiAgICAgdm9pZCBwb3N0
VGFzayhDcm9zc1RocmVhZFRhc2smJik7CiAgICAgdm9pZCBwb3N0VGFza1JlcGx5KENyb3NzVGhy
ZWFkVGFzayYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuY3BwCmluZGV4IDY1ZTg0NjljYjgwLi4wOTExNDE2
OTlmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlckpvYlF1ZXVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2VydmVySm9iUXVldWUuY3BwCkBAIC0zMDcsNyArMzA3LDE0IEBAIHZvaWQgU1dT
ZXJ2ZXJKb2JRdWV1ZTo6cnVuVXBkYXRlSm9iKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiBq
b2IpCiAgICAgaWYgKGpvYi50eXBlID09IFNlcnZpY2VXb3JrZXJKb2JUeXBlOjpVcGRhdGUgJiYg
bmV3ZXN0V29ya2VyICYmICFlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVyKGpvYi5zY3Jp
cHRVUkwsIG5ld2VzdFdvcmtlci0+c2NyaXB0VVJMKCkpKQogICAgICAgICByZXR1cm4gcmVqZWN0
Q3VycmVudEpvYihFeGNlcHRpb25EYXRhIHsgVHlwZUVycm9yLCBBU0NJSUxpdGVyYWwoIkNhbm5v
dCB1cGRhdGUgYSBzZXJ2aWNlIHdvcmtlciB3aXRoIGEgcmVxdWVzdGVkIHNjcmlwdCBVUkwgd2hv
c2UgbmV3ZXN0IHdvcmtlciBoYXMgYSBkaWZmZXJlbnQgc2NyaXB0IFVSTCIpIH0pOwogCi0gICAg
bV9zZXJ2ZXIuc3RhcnRTY3JpcHRGZXRjaChqb2IpOworICAgIC8vIFNldCByZXF1ZXN04oCZcyBj
YWNoZSBtb2RlIHRvICJuby1jYWNoZSIgaWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgYXJlIHRydWU6
CisgICAgLy8gLSByZWdpc3RyYXRpb27igJlzIHVwZGF0ZSB2aWEgY2FjaGUgbW9kZSBpcyBub3Qg
ImFsbCIuCisgICAgLy8gLSBqb2LigJlzIGZvcmNlIGJ5cGFzcyBjYWNoZSBmbGFnIGlzIHNldC4K
KyAgICAvLyAtIG5ld2VzdFdvcmtlciBpcyBub3QgbnVsbCwgYW5kIHJlZ2lzdHJhdGlvbuKAmXMg
bGFzdCB1cGRhdGUgY2hlY2sgdGltZSBpcyBub3QgbnVsbCBhbmQgdGhlIHRpbWUgZGlmZmVyZW5j
ZSBpbiBzZWNvbmRzIGNhbGN1bGF0ZWQgYnkgdGhlCisgICAgLy8gICBjdXJyZW50IHRpbWUgbWlu
dXMgcmVnaXN0cmF0aW9u4oCZcyBsYXN0IHVwZGF0ZSBjaGVjayB0aW1lIGlzIGdyZWF0ZXIgdGhh
biA4NjQwMC4KKyAgICBib29sIHNob3VsZEJ5cGFzc0NhY2hlID0gcmVnaXN0cmF0aW9uLT51cGRh
dGVWaWFDYWNoZSgpICE9IFNlcnZpY2VXb3JrZXJVcGRhdGVWaWFDYWNoZTo6QWxsCisgICAgICAg
IHx8IChuZXdlc3RXb3JrZXIgJiYgcmVnaXN0cmF0aW9uLT5sYXN0VXBkYXRlVGltZSgpICYmIChX
YWxsVGltZTo6bm93KCkgLSByZWdpc3RyYXRpb24tPmxhc3RVcGRhdGVUaW1lKCkpID4gODY0MDBf
cyk7CisgICAgbV9zZXJ2ZXIuc3RhcnRTY3JpcHRGZXRjaChqb2IsIHNob3VsZEJ5cGFzc0NhY2hl
KTsKIH0KIAogdm9pZCBTV1NlcnZlckpvYlF1ZXVlOjpyZWplY3RDdXJyZW50Sm9iKGNvbnN0IEV4
Y2VwdGlvbkRhdGEmIGV4Y2VwdGlvbkRhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyUmVnaXN0cmF0aW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyUmVnaXN0cmF0aW9uLmgKaW5kZXgg
ZjE0ZGY1YzNmZDQuLmZiNzU2OTg2M2Q4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyUmVnaXN0cmF0aW9uLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5oCkBAIC02
MSw2ICs2MSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldElzVW5pbnN0YWxsaW5nKGJvb2wpOwog
CiAgICAgdm9pZCBzZXRMYXN0VXBkYXRlVGltZShXYWxsVGltZSB0aW1lKSB7IG1fbGFzdFVwZGF0
ZVRpbWUgPSB0aW1lOyB9CisgICAgV2FsbFRpbWUgbGFzdFVwZGF0ZVRpbWUoKSBjb25zdCB7IHJl
dHVybiBtX2xhc3RVcGRhdGVUaW1lOyB9CisKICAgICBTZXJ2aWNlV29ya2VyVXBkYXRlVmlhQ2Fj
aGUgdXBkYXRlVmlhQ2FjaGUoKSBjb25zdCB7IHJldHVybiBtX3VwZGF0ZVZpYUNhY2hlOyB9CiAK
ICAgICB2b2lkIHVwZGF0ZVJlZ2lzdHJhdGlvblN0YXRlKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25TdGF0ZSwgU1dTZXJ2ZXJXb3JrZXIqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU3Rv
cmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwIGIvU291
cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVj
dGlvbi5jcHAKaW5kZXggYjNlYmQ5ODcxNzguLjRlM2RkOWE4MjAxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
V2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcApAQCAtOTEsOSArOTEsOSBAQCB2b2lkIFdlYlNXU2Vy
dmVyQ29ubmVjdGlvbjo6cmVzb2x2ZVVucmVnaXN0cmF0aW9uSm9iSW5DbGllbnQoY29uc3QgU2Vy
dmljZVdvcmtlcgogICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6VW5y
ZWdpc3RyYXRpb25Kb2JSZXNvbHZlZEluU2VydmVyKGpvYkRhdGFJZGVudGlmaWVyLCB1bnJlZ2lz
dHJhdGlvblJlc3VsdCkpOwogfQogCi12b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6c3RhcnRT
Y3JpcHRGZXRjaEluQ2xpZW50KGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYg
am9iRGF0YUlkZW50aWZpZXIpCit2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6c3RhcnRTY3Jp
cHRGZXRjaEluQ2xpZW50KGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYgam9i
RGF0YUlkZW50aWZpZXIsIGJvb2wgc2hvdWxkQnlwYXNzQ2FjaGUpCiB7Ci0gICAgc2VuZChNZXNz
YWdlczo6V2ViU1dDbGllbnRDb25uZWN0aW9uOjpTdGFydFNjcmlwdEZldGNoRm9yU2VydmVyKGpv
YkRhdGFJZGVudGlmaWVyKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViU1dDbGllbnRDb25uZWN0
aW9uOjpTdGFydFNjcmlwdEZldGNoRm9yU2VydmVyKGpvYkRhdGFJZGVudGlmaWVyLCBzaG91bGRC
eXBhc3NDYWNoZSkpOwogfQogCiB2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6dXBkYXRlUmVn
aXN0cmF0aW9uU3RhdGVJbkNsaWVudChTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmll
ciBpZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uU3RhdGUgc3RhdGUsIGNvbnN0
IHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckRhdGE+JiBzZXJ2aWNlV29ya2VyRGF0YSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJT
V1NlcnZlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2Vydmlj
ZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uaAppbmRleCBkNjlkZDVmN2ZhMS4uZGI3ZDlk
Yjg5ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdv
cmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmgKQEAgLTc0LDcgKzc0
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlamVjdEpvYkluQ2xpZW50KGNvbnN0IFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYsIGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlv
bkRhdGEmKSBmaW5hbDsKICAgICB2b2lkIHJlc29sdmVSZWdpc3RyYXRpb25Kb2JJbkNsaWVudChj
b25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXImLCBjb25zdCBXZWJD
b3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YSYsIFdlYkNvcmU6OlNob3VsZE5vdGlm
eVdoZW5SZXNvbHZlZCkgZmluYWw7CiAgICAgdm9pZCByZXNvbHZlVW5yZWdpc3RyYXRpb25Kb2JJ
bkNsaWVudChjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXImLCBj
b25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiwgYm9vbCB1bnJlZ2lz
dHJhdGlvblJlc3VsdCkgZmluYWw7Ci0gICAgdm9pZCBzdGFydFNjcmlwdEZldGNoSW5DbGllbnQo
Y29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJikgZmluYWw7Cisg
ICAgdm9pZCBzdGFydFNjcmlwdEZldGNoSW5DbGllbnQoY29uc3QgV2ViQ29yZTo6U2VydmljZVdv
cmtlckpvYkRhdGFJZGVudGlmaWVyJiwgYm9vbCBzaG91bGRCeXBhc3NDYWNoZSkgZmluYWw7CiAg
ICAgdm9pZCB1cGRhdGVSZWdpc3RyYXRpb25TdGF0ZUluQ2xpZW50KFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uU3RhdGUsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckRh
dGE+JikgZmluYWw7CiAgICAgdm9pZCB1cGRhdGVXb3JrZXJTdGF0ZUluQ2xpZW50KFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyU3RhdGUpIGZp
bmFsOwogICAgIHZvaWQgZmlyZVVwZGF0ZUZvdW5kRXZlbnQoV2ViQ29yZTo6U2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbklkZW50aWZpZXIpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLm1l
c3NhZ2VzLmluCmluZGV4IDBiMmQzNWYxZTA1Li40YjNlZTVlNzJhNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50
Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAtMjcsNyArMjcsNyBAQCBtZXNzYWdlcyAtPiBXZWJT
V0NsaWVudENvbm5lY3Rpb24gewogICAgIEpvYlJlamVjdGVkSW5TZXJ2ZXIoc3RydWN0IFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciBqb2JEYXRhSWRlbnRpZmllciwgc3Ry
dWN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEgZXhjZXB0aW9uKQogICAgIFJlZ2lzdHJhdGlvbkpv
YlJlc29sdmVkSW5TZXJ2ZXIoc3RydWN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JEYXRhSWRl
bnRpZmllciBqb2JEYXRhSWRlbnRpZmllciwgc3RydWN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25EYXRhIHJlZ2lzdHJhdGlvbiwgZW51bSBXZWJDb3JlOjpTaG91bGROb3RpZnlX
aGVuUmVzb2x2ZWQgc2hvdWxkTm90aWZ5V2hlblJlc29sdmVkKQogICAgIFVucmVnaXN0cmF0aW9u
Sm9iUmVzb2x2ZWRJblNlcnZlcihzdHJ1Y3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYkRhdGFJ
ZGVudGlmaWVyIGpvYkRhdGFJZGVudGlmaWVyLCBib29sIHVucmVnaXN0cmF0aW9uUmVzdWx0KQot
ICAgIFN0YXJ0U2NyaXB0RmV0Y2hGb3JTZXJ2ZXIoc3RydWN0IFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJKb2JEYXRhSWRlbnRpZmllciBqb2JEYXRhSWRlbnRpZmllcikKKyAgICBTdGFydFNjcmlwdEZl
dGNoRm9yU2VydmVyKHN0cnVjdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZp
ZXIgam9iRGF0YUlkZW50aWZpZXIsIGJvb2wgc2hvdWxkQnlwYXNzQ2FjaGUpCiAgICAgVXBkYXRl
UmVnaXN0cmF0aW9uU3RhdGUoV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50
aWZpZXIgaWRlbnRpZmllciwgZW51bSBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
U3RhdGUgc3RhdGUsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckRhdGE+IHNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyKQogICAgIFVwZGF0ZVdvcmtlclN0YXRlKFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBlbnVtIFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJTdGF0ZSBzdGF0ZSkKICAgICBGaXJlVXBkYXRlRm91bmRFdmVudChX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>329365</attachid>
            <date>2017-12-14 10:55:00 -0800</date>
            <delta_ts>2017-12-14 11:55:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180816-20171214105500.patch</filename>
            <type>text/plain</type>
            <size>31082</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI1OTA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmYxY2I0YTNlMjhhZjg4
MGE5NWEzNGJjZGIxMmFmNmNhNmQ1ZDk5ZC4uMjg0NDYwZTM1ZDBkZWViYzAxMjNiZmYxN2ZkZWIy
NzJlMjUyOWVjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDE3LTEyLTE0ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgU2VydmljZSB3b3JrZXIgc2Ny
aXB0IGZldGNoaW5nIGN1cnJlbnRseSBhbHdheXMgdXNlcyB0aGUgbmV0d29yayBjYWNoZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwODE2CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2VydmljZSB3b3Jr
ZXIgc2NyaXB0IGZldGNoaW5nIGN1cnJlbnRseSBhbHdheXMgdXNlcyB0aGUgbmV0d29yayBjYWNo
ZS4gVGhpcyBpcyBpbmNvcnJlY3QgYXMgcGVyOgorICAgICAgICAtIGh0dHBzOi8vdzNjLmdpdGh1
Yi5pby9TZXJ2aWNlV29ya2VyLyN1cGRhdGUtYWxnb3JpdGhtIChzdGVwIDcuMikKKworICAgICAg
ICBUZXN0czogaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVnaXN0cmF0aW9uLXVwZGF0ZVZp
YUNhY2hlLWFsbC5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL3dvcmtlcnMvc2Vydmlj
ZS9yZWdpc3RyYXRpb24tdXBkYXRlVmlhQ2FjaGUtbm9uZS5odG1sCisKKyAgICAgICAgKiB3b3Jr
ZXJzL1dvcmtlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXI6OmNyZWF0ZSk6CisgICAg
ICAgICogd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyU2NyaXB0TG9hZGVyOjpsb2FkQXN5bmNocm9ub3VzbHkpOgorICAgICAgICAqIHdvcmtl
cnMvV29ya2VyU2NyaXB0TG9hZGVyLmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NXQ2xp
ZW50Q29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTV0NsaWVudENvbm5lY3Rpb246
OnN0YXJ0U2NyaXB0RmV0Y2hGb3JTZXJ2ZXIpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9T
V0NsaWVudENvbm5lY3Rpb24uaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlckNvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGFp
bmVyOjpzdGFydFNjcmlwdEZldGNoRm9ySm9iKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckNvbnRhaW5lci5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VySm9iLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2I6OnN0
YXJ0U2NyaXB0RmV0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYjo6ZmV0
Y2hTY3JpcHRXaXRoQ29udGV4dCk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJKb2IuaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYkNs
aWVudC5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OnN0YXJ0U2NyaXB0RmV0Y2gpOgorICAgICAgICAq
IHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaDoKKyAgICAgICAgKiB3b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dT
ZXJ2ZXJKb2JRdWV1ZTo6cnVuVXBkYXRlSm9iKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2VydmVyUmVnaXN0cmF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZl
clJlZ2lzdHJhdGlvbjo6bGFzdFVwZGF0ZVRpbWUgY29uc3QpOgorCiAyMDE3LTEyLTE0ICBGcmVk
ZXJpYyBXYW5nICA8ZndhbmdAaWdhbGlhLmNvbT4KIAogICAgICAgICBNYWtlIEdyYXBoaWNzTGF5
ZXI6OmR1bXBQcm9wZXJ0aWVzIGR1bXAgbV9vZmZzZXRGcm9tUmVuZGVyZXIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXgg
YmRhMTAwZTk3NTZiNDkzZTc5MzM3OTU3ZjFmNWExMjUwZGVhNGQ4Yy4uZjY0NzUzZDk4Yzg2N2E5
NmM2MDBkNmI3NGMyODIyYzI2Yzk2YTE0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAx
Ny0xMi0xNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFNlcnZp
Y2Ugd29ya2VyIHNjcmlwdCBmZXRjaGluZyBjdXJyZW50bHkgYWx3YXlzIHVzZXMgdGhlIG5ldHdv
cmsgY2FjaGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE4MDgxNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OnN0YXJ0U2NyaXB0RmV0
Y2hJbkNsaWVudCk6CisgICAgICAgICogU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJT
V1NlcnZlckNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dD
bGllbnRDb25uZWN0aW9uLm1lc3NhZ2VzLmluOgorCiAyMDE3LTEyLTE0ICBKb3NlcGggUGVjb3Jh
cm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogQ21kLU9w
dGlvbi1SIGluIGRvY2tlZCBpbnNwZWN0b3IgY2F1c2VzIHRoZSBpbnNwZWN0b3IgdG8gcmVsb2Fk
IGluc3RlYWQgb2YgdGhlIGluc3BlY3RlZCBwYWdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5jcHAK
aW5kZXggMzkwY2EyYzIzZDNlNWU2OTZjMDgxMmYyYWJjMzcwMmY1NTQxOWZjOC4uMDVmMTdkODQ5
YjdmNTM3ZjBiMmI4MzM4M2FlYTkxNWZlMDFiZmIxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
LmNwcApAQCAtOTgsNyArOTgsNyBAQCBFeGNlcHRpb25PcjxSZWY8V29ya2VyPj4gV29ya2VyOjpj
cmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgSlNDOjpSdQogCiAgICAgd29y
a2VyLT5tX3NjcmlwdExvYWRlciA9IFdvcmtlclNjcmlwdExvYWRlcjo6Y3JlYXRlKCk7CiAgICAg
YXV0byBjb250ZW50U2VjdXJpdHlQb2xpY3lFbmZvcmNlbWVudCA9IHNob3VsZEJ5cGFzc01haW5X
b3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSA/IENvbnRlbnRTZWN1cml0eVBvbGljeUVuZm9yY2Vt
ZW50OjpEb05vdEVuZm9yY2UgOiBDb250ZW50U2VjdXJpdHlQb2xpY3lFbmZvcmNlbWVudDo6RW5m
b3JjZUNoaWxkU3JjRGlyZWN0aXZlOwotICAgIHdvcmtlci0+bV9zY3JpcHRMb2FkZXItPmxvYWRB
c3luY2hyb25vdXNseSgmY29udGV4dCwgc2NyaXB0VVJMLnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBG
ZXRjaE9wdGlvbnM6Ok1vZGU6OlNhbWVPcmlnaW4sIGNvbnRlbnRTZWN1cml0eVBvbGljeUVuZm9y
Y2VtZW50LCB3b3JrZXItPm1faWRlbnRpZmllciwgd29ya2VyLnB0cigpKTsKKyAgICB3b3JrZXIt
Pm1fc2NyaXB0TG9hZGVyLT5sb2FkQXN5bmNocm9ub3VzbHkoJmNvbnRleHQsIHNjcmlwdFVSTC5y
ZWxlYXNlUmV0dXJuVmFsdWUoKSwgRmV0Y2hPcHRpb25zOjpNb2RlOjpTYW1lT3JpZ2luLCBGZXRj
aE9wdGlvbnM6OkNhY2hlOjpEZWZhdWx0LCBjb250ZW50U2VjdXJpdHlQb2xpY3lFbmZvcmNlbWVu
dCwgd29ya2VyLT5tX2lkZW50aWZpZXIsIHdvcmtlci5wdHIoKSk7CiAgICAgcmV0dXJuIFdURk1v
dmUod29ya2VyKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJTY3JpcHRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRM
b2FkZXIuY3BwCmluZGV4IDM2ZGIyZjljOTNjODY3MTAyNDg3YzhmYWEzM2UxMzNjY2Q0YzE1ODAu
Ljg1NWJkODY0MDI3MmY1N2I4MjZhYmFhMDg0N2Y5YWU4YjdlMzM5NDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAKQEAgLTcyLDcgKzcyLDcgQEAg
dm9pZCBXb3JrZXJTY3JpcHRMb2FkZXI6OmxvYWRTeW5jaHJvbm91c2x5KFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIHNjcmlwdEV4ZWN1dGkKICAgICBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpsb2Fk
UmVzb3VyY2VTeW5jaHJvbm91c2x5KHdvcmtlckdsb2JhbFNjb3BlLCBXVEZNb3ZlKCpyZXF1ZXN0
KSwgKnRoaXMsIG9wdGlvbnMpOwogfQogCi12b2lkIFdvcmtlclNjcmlwdExvYWRlcjo6bG9hZEFz
eW5jaHJvbm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQsIGNvbnN0IFVSTCYgdXJsLCBGZXRjaE9wdGlvbnM6Ok1vZGUgbW9kZSwgQ29udGVudFNlY3Vy
aXR5UG9saWN5RW5mb3JjZW1lbnQgY29udGVudFNlY3VyaXR5UG9saWN5RW5mb3JjZW1lbnQsIGNv
bnN0IFN0cmluZyYgaW5pdGlhdG9ySWRlbnRpZmllciwgV29ya2VyU2NyaXB0TG9hZGVyQ2xpZW50
KiBjbGllbnQpCit2b2lkIFdvcmtlclNjcmlwdExvYWRlcjo6bG9hZEFzeW5jaHJvbm91c2x5KFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIGNvbnN0IFVSTCYg
dXJsLCBGZXRjaE9wdGlvbnM6Ok1vZGUgbW9kZSwgRmV0Y2hPcHRpb25zOjpDYWNoZSBjYWNoZVBv
bGljeSwgQ29udGVudFNlY3VyaXR5UG9saWN5RW5mb3JjZW1lbnQgY29udGVudFNlY3VyaXR5UG9s
aWN5RW5mb3JjZW1lbnQsIGNvbnN0IFN0cmluZyYgaW5pdGlhdG9ySWRlbnRpZmllciwgV29ya2Vy
U2NyaXB0TG9hZGVyQ2xpZW50KiBjbGllbnQpCiB7CiAgICAgQVNTRVJUKGNsaWVudCk7CiAgICAg
QVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwpAQCAtOTEsNiArOTEsNyBAQCB2b2lkIFdv
cmtlclNjcmlwdExvYWRlcjo6bG9hZEFzeW5jaHJvbm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIHNjcmlwdEV4ZWN1dAogICAgIFRocmVhZGFibGVMb2FkZXJPcHRpb25zIG9wdGlvbnM7CiAg
ICAgb3B0aW9ucy5jcmVkZW50aWFscyA9IEZldGNoT3B0aW9uczo6Q3JlZGVudGlhbHM6OlNhbWVP
cmlnaW47CiAgICAgb3B0aW9ucy5tb2RlID0gbW9kZTsKKyAgICBvcHRpb25zLmNhY2hlID0gY2Fj
aGVQb2xpY3k7CiAgICAgb3B0aW9ucy5zZW5kTG9hZENhbGxiYWNrcyA9IFNlbmRDYWxsYmFja3M7
CiAgICAgb3B0aW9ucy5jb250ZW50U2VjdXJpdHlQb2xpY3lFbmZvcmNlbWVudCA9IGNvbnRlbnRT
ZWN1cml0eVBvbGljeUVuZm9yY2VtZW50OwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmggYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5oCmluZGV4IGE4NmM1NzRh
MWIwNjVkODRhMmZkNDY3YzZmZDY0MTlhMTBkNWZlY2IuLmM4MWY4NmNhNTYxZTUyNjBkZmVmZDI5
ZWE0ZGUxMTI0OTFlOWMzYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyU2NyaXB0TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3Jp
cHRMb2FkZXIuaApAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgdm9pZCBs
b2FkU3luY2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgVVJMJiwgRmV0
Y2hPcHRpb25zOjpNb2RlLCBDb250ZW50U2VjdXJpdHlQb2xpY3lFbmZvcmNlbWVudCwgY29uc3Qg
U3RyaW5nJiBpbml0aWF0b3JJZGVudGlmaWVyKTsKLSAgICB2b2lkIGxvYWRBc3luY2hyb25vdXNs
eShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgVVJMJiwgRmV0Y2hPcHRpb25zOjpNb2Rl
LCBDb250ZW50U2VjdXJpdHlQb2xpY3lFbmZvcmNlbWVudCwgY29uc3QgU3RyaW5nJiBpbml0aWF0
b3JJZGVudGlmaWVyLCBXb3JrZXJTY3JpcHRMb2FkZXJDbGllbnQqKTsKKyAgICB2b2lkIGxvYWRB
c3luY2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgVVJMJiwgRmV0Y2hP
cHRpb25zOjpNb2RlLCBGZXRjaE9wdGlvbnM6OkNhY2hlLCBDb250ZW50U2VjdXJpdHlQb2xpY3lF
bmZvcmNlbWVudCwgY29uc3QgU3RyaW5nJiBpbml0aWF0b3JJZGVudGlmaWVyLCBXb3JrZXJTY3Jp
cHRMb2FkZXJDbGllbnQqKTsKIAogICAgIHZvaWQgbm90aWZ5RXJyb3IoKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NXQ2xpZW50Q29ubmVjdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU1dDbGllbnRDb25uZWN0aW9uLmNwcApp
bmRleCA5OGE0MjI5Y2Y2YjBiNDg5Njg2MDFlZGE4YzU1OTJiNzBhNGQ1NTJhLi44ZjZlNWE1ZjI0
NzQ0YmU3ZDg2MGJjZDRiZjRjOGJkOGZhN2IxMjE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvU1dDbGllbnRDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvU1dDbGllbnRDb25uZWN0aW9uLmNwcApAQCAtMTE2LDcgKzEx
Niw3IEBAIHZvaWQgU1dDbGllbnRDb25uZWN0aW9uOjp1bnJlZ2lzdHJhdGlvbkpvYlJlc29sdmVk
SW5TZXJ2ZXIoY29uc3QgU2VydmljZVdvcmtlckpvCiAgICAgfSk7CiB9CiAKLXZvaWQgU1dDbGll
bnRDb25uZWN0aW9uOjpzdGFydFNjcmlwdEZldGNoRm9yU2VydmVyKGNvbnN0IFNlcnZpY2VXb3Jr
ZXJKb2JEYXRhSWRlbnRpZmllciYgam9iRGF0YUlkZW50aWZpZXIpCit2b2lkIFNXQ2xpZW50Q29u
bmVjdGlvbjo6c3RhcnRTY3JpcHRGZXRjaEZvclNlcnZlcihjb25zdCBTZXJ2aWNlV29ya2VySm9i
RGF0YUlkZW50aWZpZXImIGpvYkRhdGFJZGVudGlmaWVyLCBGZXRjaE9wdGlvbnM6OkNhY2hlIGNh
Y2hlUG9saWN5KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKQEAgLTEzMSw4ICsx
MzEsOCBAQCB2b2lkIFNXQ2xpZW50Q29ubmVjdGlvbjo6c3RhcnRTY3JpcHRGZXRjaEZvclNlcnZl
cihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZQogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6cG9zdFRhc2tUbyhqb2ItPmNvbnRleHRJZGVu
dGlmaWVyKCksIFtqb2JdKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7Ci0gICAgICAgIGpvYi0+
c3RhcnRTY3JpcHRGZXRjaCgpOworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnBvc3RUYXNr
VG8oam9iLT5jb250ZXh0SWRlbnRpZmllcigpLCBbam9iLCBjYWNoZVBvbGljeV0oU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYpIHsKKyAgICAgICAgam9iLT5zdGFydFNjcmlwdEZldGNoKGNhY2hlUG9s
aWN5KTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NXQ2xpZW50Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1NXQ2xpZW50Q29ubmVjdGlvbi5oCmluZGV4IDExYzAyZWU1NmFkYzA4NGZiYWNjZTg2ZWQ2
YzVlZTEyYjM5ZDNmYTIuLjFjNTExZjJlNjE5M2E2MjQ3ZmM3NzE0MmUxYmNmMmExMmUzNmUxMzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TV0NsaWVudENvbm5l
Y3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU1dDbGllbnRDb25u
ZWN0aW9uLmgKQEAgLTg5LDcgKzg5LDcgQEAgcHJvdGVjdGVkOgogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgam9iUmVqZWN0ZWRJblNlcnZlcihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50
aWZpZXImLCBjb25zdCBFeGNlcHRpb25EYXRhJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBy
ZWdpc3RyYXRpb25Kb2JSZXNvbHZlZEluU2VydmVyKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRh
SWRlbnRpZmllciYsIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhJiYsIFNob3VsZE5vdGlm
eVdoZW5SZXNvbHZlZCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1bnJlZ2lzdHJhdGlvbkpv
YlJlc29sdmVkSW5TZXJ2ZXIoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJiwg
Ym9vbCB1bnJlZ2lzdHJhdGlvblJlc3VsdCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdGFy
dFNjcmlwdEZldGNoRm9yU2VydmVyKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmll
ciYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RhcnRTY3JpcHRGZXRjaEZvclNlcnZlcihj
b25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXImLCBGZXRjaE9wdGlvbnM6OkNhY2hl
KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xp
ZW50KERvY3VtZW50SWRlbnRpZmllciBkZXN0aW5hdGlvbkNvbnRleHRJZGVudGlmaWVyLCBSZWY8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmIG1lc3NhZ2UsIFNlcnZpY2VXb3JrZXJEYXRhJiYgc291
cmNlLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCB1cGRhdGVSZWdpc3RyYXRpb25TdGF0ZShTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRp
ZmllciwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvblN0YXRlLCBjb25zdCBzdGQ6Om9wdGlvbmFs
PFNlcnZpY2VXb3JrZXJEYXRhPiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlV29y
a2VyU3RhdGUoU2VydmljZVdvcmtlcklkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJTdGF0ZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNv
bnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
ckNvbnRhaW5lci5jcHAKaW5kZXggNGNlNTg1YzY0YjdhNTlkNjc5YzJjZGY2YjI1ODJkNmJkMGFm
YTdlMi4uYzllMTkxMTRjNGJjYmM0YTRkMDQ3YWM5NWMzODdiYTMxMzlhZjZkZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29u
dGFpbmVyLmNwcApAQCAtNDMxLDcgKzQzMSw3IEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5l
cjo6am9iUmVzb2x2ZWRXaXRoVW5yZWdpc3RyYXRpb25SZXN1bHQoU2VydmljZVdvcmtlckpvCiAg
ICAgfSk7CiB9CiAKLXZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6c3RhcnRTY3JpcHRGZXRj
aEZvckpvYihTZXJ2aWNlV29ya2VySm9iJiBqb2IpCit2b2lkIFNlcnZpY2VXb3JrZXJDb250YWlu
ZXI6OnN0YXJ0U2NyaXB0RmV0Y2hGb3JKb2IoU2VydmljZVdvcmtlckpvYiYgam9iLCBGZXRjaE9w
dGlvbnM6OkNhY2hlIGNhY2hlUG9saWN5KQogewogI2lmbmRlZiBOREVCVUcKICAgICBBU1NFUlQo
bV9jcmVhdGlvblRocmVhZC5wdHIoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwpAQCAtNDQ5LDcg
KzQ0OSw3IEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6c3RhcnRTY3JpcHRGZXRjaEZv
ckpvYihTZXJ2aWNlV29ya2VySm9iJiBqb2IpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBqb2IuZmV0Y2hTY3JpcHRXaXRoQ29udGV4dCgqY29udGV4dCk7CisgICAgam9iLmZldGNoU2Ny
aXB0V2l0aENvbnRleHQoKmNvbnRleHQsIGNhY2hlUG9saWN5KTsKIH0KIAogdm9pZCBTZXJ2aWNl
V29ya2VyQ29udGFpbmVyOjpqb2JGaW5pc2hlZExvYWRpbmdTY3JpcHQoU2VydmljZVdvcmtlckpv
YiYgam9iLCBjb25zdCBTdHJpbmcmIHNjcmlwdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5oCmluZGV4IDdmN2NlODI2
Mjg5ZjNiZDlhYmI1MmQ3NmQ3NDhkODM1YzBjMWE2NmMuLmRjNjg0Mzk2OTljOTc5NTBmNzcxYmMw
NGRmNDY2ZjdiNDZlODJkOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuaApAQCAtODgsNyArODgsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgam9iRmFpbGVkV2l0aEV4Y2VwdGlvbihTZXJ2aWNlV29ya2VySm9iJiwg
Y29uc3QgRXhjZXB0aW9uJikgZmluYWw7CiAgICAgdm9pZCBqb2JSZXNvbHZlZFdpdGhSZWdpc3Ry
YXRpb24oU2VydmljZVdvcmtlckpvYiYsIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhJiYs
IFNob3VsZE5vdGlmeVdoZW5SZXNvbHZlZCkgZmluYWw7CiAgICAgdm9pZCBqb2JSZXNvbHZlZFdp
dGhVbnJlZ2lzdHJhdGlvblJlc3VsdChTZXJ2aWNlV29ya2VySm9iJiwgYm9vbCB1bnJlZ2lzdHJh
dGlvblJlc3VsdCkgZmluYWw7Ci0gICAgdm9pZCBzdGFydFNjcmlwdEZldGNoRm9ySm9iKFNlcnZp
Y2VXb3JrZXJKb2ImKSBmaW5hbDsKKyAgICB2b2lkIHN0YXJ0U2NyaXB0RmV0Y2hGb3JKb2IoU2Vy
dmljZVdvcmtlckpvYiYsIEZldGNoT3B0aW9uczo6Q2FjaGUpIGZpbmFsOwogICAgIHZvaWQgam9i
RmluaXNoZWRMb2FkaW5nU2NyaXB0KFNlcnZpY2VXb3JrZXJKb2ImLCBjb25zdCBTdHJpbmcmKSBm
aW5hbDsKICAgICB2b2lkIGpvYkZhaWxlZExvYWRpbmdTY3JpcHQoU2VydmljZVdvcmtlckpvYiYs
IGNvbnN0IFJlc291cmNlRXJyb3ImLCBzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbj4mJikgZmluYWw7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VySm9iLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2Vy
Sm9iLmNwcAppbmRleCA0YTg4MWQ3N2I1OGY5ODczYTY1Yjg1MDc1ZDBkZDllOWY5MDVlYjIyLi5k
Mjg0OTRmMjZhMGI1Y2Y4MDFjMTMwODVmMWU4ZTE5Njc2YWJiZjkyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2IuY3BwCkBAIC03Nywy
MiArNzcsMjIgQEAgdm9pZCBTZXJ2aWNlV29ya2VySm9iOjpyZXNvbHZlZFdpdGhVbnJlZ2lzdHJh
dGlvblJlc3VsdChib29sIHVucmVnaXN0cmF0aW9uUmVzdWwKICAgICBtX2NsaWVudC0+am9iUmVz
b2x2ZWRXaXRoVW5yZWdpc3RyYXRpb25SZXN1bHQoKnRoaXMsIHVucmVnaXN0cmF0aW9uUmVzdWx0
KTsKIH0KIAotdm9pZCBTZXJ2aWNlV29ya2VySm9iOjpzdGFydFNjcmlwdEZldGNoKCkKK3ZvaWQg
U2VydmljZVdvcmtlckpvYjo6c3RhcnRTY3JpcHRGZXRjaChGZXRjaE9wdGlvbnM6OkNhY2hlIGNh
Y2hlUG9saWN5KQogewogICAgIEFTU0VSVChtX2NyZWF0aW9uVGhyZWFkLnB0cigpID09ICZUaHJl
YWQ6OmN1cnJlbnQoKSk7CiAgICAgQVNTRVJUKCFtX2NvbXBsZXRlZCk7CiAKLSAgICBtX2NsaWVu
dC0+c3RhcnRTY3JpcHRGZXRjaEZvckpvYigqdGhpcyk7CisgICAgbV9jbGllbnQtPnN0YXJ0U2Ny
aXB0RmV0Y2hGb3JKb2IoKnRoaXMsIGNhY2hlUG9saWN5KTsKIH0KIAotdm9pZCBTZXJ2aWNlV29y
a2VySm9iOjpmZXRjaFNjcmlwdFdpdGhDb250ZXh0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQpCit2b2lkIFNlcnZpY2VXb3JrZXJKb2I6OmZldGNoU2NyaXB0V2l0aENvbnRleHQoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgRmV0Y2hPcHRpb25zOjpDYWNoZSBjYWNoZVBv
bGljeSkKIHsKICAgICBBU1NFUlQobV9jcmVhdGlvblRocmVhZC5wdHIoKSA9PSAmVGhyZWFkOjpj
dXJyZW50KCkpOwogICAgIEFTU0VSVCghbV9jb21wbGV0ZWQpOwogCiAgICAgLy8gRklYTUU6IFdv
cmtlclNjcmlwdExvYWRlciBpcyB0aGUgd3JvbmcgbG9hZGVyIGNsYXNzIHRvIHVzZSBoZXJlLCBi
dXQgdGhlcmUncyBub3RoaW5nIGVsc2UgYmV0dGVyIHJpZ2h0IG5vdy4KICAgICBtX3NjcmlwdExv
YWRlciA9IFdvcmtlclNjcmlwdExvYWRlcjo6Y3JlYXRlKCk7Ci0gICAgbV9zY3JpcHRMb2FkZXIt
PmxvYWRBc3luY2hyb25vdXNseSgmY29udGV4dCwgbV9qb2JEYXRhLnNjcmlwdFVSTCwgRmV0Y2hP
cHRpb25zOjpNb2RlOjpTYW1lT3JpZ2luLCBDb250ZW50U2VjdXJpdHlQb2xpY3lFbmZvcmNlbWVu
dDo6RG9Ob3RFbmZvcmNlLCAic2VydmljZVdvcmtlclNjcmlwdExvYWQ6IiwgdGhpcyk7CisgICAg
bV9zY3JpcHRMb2FkZXItPmxvYWRBc3luY2hyb25vdXNseSgmY29udGV4dCwgbV9qb2JEYXRhLnNj
cmlwdFVSTCwgRmV0Y2hPcHRpb25zOjpNb2RlOjpTYW1lT3JpZ2luLCBjYWNoZVBvbGljeSwgQ29u
dGVudFNlY3VyaXR5UG9saWN5RW5mb3JjZW1lbnQ6OkRvTm90RW5mb3JjZSwgInNlcnZpY2VXb3Jr
ZXJTY3JpcHRMb2FkOiIsIHRoaXMpOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJKb2I6OmRpZFJl
Y2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VySm9iLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
ckpvYi5oCmluZGV4IDljNDI4ZTc3MjAwMzQyOTkxYWYzMTczYTI5ZTA0MDEyOTVkNTI5YjEuLmVh
N2E3YTMyMGZjMTQwYjU1Nzc2MTlmZTJjY2U5ZTVjNDEyNDA5N2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2IuaApAQCAtNTgsNyArNTgs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBmYWlsZWRXaXRoRXhjZXB0aW9uKGNvbnN0IEV4Y2VwdGlv
biYpOwogICAgIHZvaWQgcmVzb2x2ZWRXaXRoUmVnaXN0cmF0aW9uKFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25EYXRhJiYsIFNob3VsZE5vdGlmeVdoZW5SZXNvbHZlZCk7CiAgICAgdm9pZCByZXNv
bHZlZFdpdGhVbnJlZ2lzdHJhdGlvblJlc3VsdChib29sKTsKLSAgICB2b2lkIHN0YXJ0U2NyaXB0
RmV0Y2goKTsKKyAgICB2b2lkIHN0YXJ0U2NyaXB0RmV0Y2goRmV0Y2hPcHRpb25zOjpDYWNoZSk7
CiAKICAgICB1c2luZyBJZGVudGlmaWVyID0gU2VydmljZVdvcmtlckpvYklkZW50aWZpZXI7CiAg
ICAgSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9qb2JEYXRhLmlkZW50
aWZpZXIoKS5qb2JJZGVudGlmaWVyOyB9CkBAIC02Niw3ICs2Niw3IEBAIHB1YmxpYzoKICAgICBT
ZXJ2aWNlV29ya2VySm9iRGF0YSBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9qb2JEYXRhOyB9CiAg
ICAgRGVmZXJyZWRQcm9taXNlJiBwcm9taXNlKCkgeyByZXR1cm4gbV9wcm9taXNlLmdldCgpOyB9
CiAKLSAgICB2b2lkIGZldGNoU2NyaXB0V2l0aENvbnRleHQoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYpOworICAgIHZvaWQgZmV0Y2hTY3JpcHRXaXRoQ29udGV4dChTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiwgRmV0Y2hPcHRpb25zOjpDYWNoZSk7CiAKICAgICBjb25zdCBEb2N1bWVudE9yV29ya2Vy
SWRlbnRpZmllciYgY29udGV4dElkZW50aWZpZXIoKSB7IHJldHVybiBtX2NvbnRleHRJZGVudGlm
aWVyOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VySm9iQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlckpvYkNsaWVudC5oCmluZGV4IGYxMDNiMjc4ZTM3ZjM3ZTFiMjk0MzliMzMyNTEw
MzExMGY1NjBmNDQuLmE0Y2RhNmNlNjU3ODIxNTExZTE0NmMxNzJmMDE0MzU5YjY2ZmNlZDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9i
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJKb2JDbGllbnQuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09S
S0VSKQogCisjaW5jbHVkZSAiRmV0Y2hPcHRpb25zLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtl
clR5cGVzLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ2LDcgKzQ3LDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBqb2JGYWlsZWRXaXRoRXhjZXB0aW9uKFNlcnZpY2VXb3JrZXJK
b2ImLCBjb25zdCBFeGNlcHRpb24mKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGpvYlJlc29sdmVk
V2l0aFJlZ2lzdHJhdGlvbihTZXJ2aWNlV29ya2VySm9iJiwgU2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbkRhdGEmJiwgU2hvdWxkTm90aWZ5V2hlblJlc29sdmVkKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGpvYlJlc29sdmVkV2l0aFVucmVnaXN0cmF0aW9uUmVzdWx0KFNlcnZpY2VXb3JrZXJKb2Im
LCBib29sIHVucmVnaXN0cmF0aW9uUmVzdWx0KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHN0YXJ0
U2NyaXB0RmV0Y2hGb3JKb2IoU2VydmljZVdvcmtlckpvYiYpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgc3RhcnRTY3JpcHRGZXRjaEZvckpvYihTZXJ2aWNlV29ya2VySm9iJiwgRmV0Y2hPcHRpb25z
OjpDYWNoZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBqb2JGaW5pc2hlZExvYWRpbmdTY3JpcHQo
U2VydmljZVdvcmtlckpvYiYsIGNvbnN0IFN0cmluZyYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
am9iRmFpbGVkTG9hZGluZ1NjcmlwdChTZXJ2aWNlV29ya2VySm9iJiwgY29uc3QgUmVzb3VyY2VF
cnJvciYsIHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uPiYmKSA9IDA7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKaW5kZXggYTFiNjZk
MTlhMTNmOWRlMTVkYjI2NjM1ZmZiYTNkNzRmNmMwYTA1Yi4uMmNhNjNlNTc4ODNkMGY2MTMzN2Q5
ZTljMjUxNGQ4Nzc1MGEzOWZkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKQEAgLTI4NCwxNCArMjg0LDE0IEBAIHZvaWQgU1dT
ZXJ2ZXI6OnJlc29sdmVVbnJlZ2lzdHJhdGlvbkpvYihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0
YSYgam9iRGF0YSwgY29uCiAgICAgY29ubmVjdGlvbi0+cmVzb2x2ZVVucmVnaXN0cmF0aW9uSm9i
SW5DbGllbnQoam9iRGF0YS5pZGVudGlmaWVyKCksIHJlZ2lzdHJhdGlvbktleSwgdW5yZWdpc3Ry
YXRpb25SZXN1bHQpOwogfQogCi12b2lkIFNXU2VydmVyOjpzdGFydFNjcmlwdEZldGNoKGNvbnN0
IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiBqb2JEYXRhKQordm9pZCBTV1NlcnZlcjo6c3RhcnRTY3Jp
cHRGZXRjaChjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYgam9iRGF0YSwgRmV0Y2hPcHRpb25z
OjpDYWNoZSBjYWNoZVBvbGljeSkKIHsKICAgICBMT0coU2VydmljZVdvcmtlciwgIlNlcnZlciBp
c3N1aW5nIHN0YXJ0U2NyaXB0RmV0Y2ggZm9yIGN1cnJlbnQgam9iICVzIGluIGNsaWVudCIsIGpv
YkRhdGEuaWRlbnRpZmllcigpLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICBh
dXRvKiBjb25uZWN0aW9uID0gbV9jb25uZWN0aW9ucy5nZXQoam9iRGF0YS5jb25uZWN0aW9uSWRl
bnRpZmllcigpKTsKICAgICBpZiAoIWNvbm5lY3Rpb24pCiAgICAgICAgIHJldHVybjsKIAotICAg
IGNvbm5lY3Rpb24tPnN0YXJ0U2NyaXB0RmV0Y2hJbkNsaWVudChqb2JEYXRhLmlkZW50aWZpZXIo
KSk7CisgICAgY29ubmVjdGlvbi0+c3RhcnRTY3JpcHRGZXRjaEluQ2xpZW50KGpvYkRhdGEuaWRl
bnRpZmllcigpLCBjYWNoZVBvbGljeSk7CiB9CiAKIHZvaWQgU1dTZXJ2ZXI6OnNjcmlwdEZldGNo
RmluaXNoZWQoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgU2VydmljZVdvcmtlckZldGNo
UmVzdWx0JiByZXN1bHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVyLmgKaW5kZXggNWMyZTA0MzRjNmE5NjY2NzZlOWYxM2M0NDJlZmRmMTE5ZmI2
OTIxNy4uNGU3YzhjMzdhMDg2ZTVhYzk2ZmRjMDI0NTM2YzQyNTk1OWUxNTIwNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaApAQCAtMTAx
LDcgKzEwMSw3IEBAIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB2b2lkIHJlamVjdEpvYkluQ2xp
ZW50KGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYsIGNvbnN0IEV4Y2VwdGlv
bkRhdGEmKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZXNvbHZlUmVnaXN0cmF0aW9uSm9i
SW5DbGllbnQoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJiwgY29uc3QgU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEmLCBTaG91bGROb3RpZnlXaGVuUmVzb2x2ZWQpID0g
MDsKICAgICAgICAgdmlydHVhbCB2b2lkIHJlc29sdmVVbnJlZ2lzdHJhdGlvbkpvYkluQ2xpZW50
KGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYsIGNvbnN0IFNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25LZXkmLCBib29sIHJlZ2lzdHJhdGlvblJlc3VsdCkgPSAwOwotICAgICAg
ICB2aXJ0dWFsIHZvaWQgc3RhcnRTY3JpcHRGZXRjaEluQ2xpZW50KGNvbnN0IFNlcnZpY2VXb3Jr
ZXJKb2JEYXRhSWRlbnRpZmllciYpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHN0YXJ0U2Ny
aXB0RmV0Y2hJbkNsaWVudChjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXImLCBG
ZXRjaE9wdGlvbnM6OkNhY2hlKSA9IDA7CiAKICAgICAgICAgc3RydWN0IFJlZ2lzdHJhdGlvblJl
YWR5UmVxdWVzdCB7CiAgICAgICAgICAgICBTZWN1cml0eU9yaWdpbkRhdGEgdG9wT3JpZ2luOwpA
QCAtMTI5LDcgKzEyOSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlamVjdEpvYihjb25zdCBTZXJ2
aWNlV29ya2VySm9iRGF0YSYsIGNvbnN0IEV4Y2VwdGlvbkRhdGEmKTsKICAgICB2b2lkIHJlc29s
dmVSZWdpc3RyYXRpb25Kb2IoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGEmLCBjb25zdCBTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YSYsIFNob3VsZE5vdGlmeVdoZW5SZXNvbHZlZCk7CiAg
ICAgdm9pZCByZXNvbHZlVW5yZWdpc3RyYXRpb25Kb2IoY29uc3QgU2VydmljZVdvcmtlckpvYkRh
dGEmLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiwgYm9vbCB1bnJlZ2lzdHJh
dGlvblJlc3VsdCk7Ci0gICAgdm9pZCBzdGFydFNjcmlwdEZldGNoKGNvbnN0IFNlcnZpY2VXb3Jr
ZXJKb2JEYXRhJik7CisgICAgdm9pZCBzdGFydFNjcmlwdEZldGNoKGNvbnN0IFNlcnZpY2VXb3Jr
ZXJKb2JEYXRhJiwgRmV0Y2hPcHRpb25zOjpDYWNoZSk7CiAKICAgICB2b2lkIHBvc3RUYXNrKENy
b3NzVGhyZWFkVGFzayYmKTsKICAgICB2b2lkIHBvc3RUYXNrUmVwbHkoQ3Jvc3NUaHJlYWRUYXNr
JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlckpvYlF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHAKaW5kZXggNjVlODQ2OWNiODA2MGQ0ZTg3ZGMxN2JlYWZm
ZDE4OWU4ZDFjNDI0Ny4uYzkwNjAxMzAxNmU2YjBlMWYzZjUxZWI5OGY1NWQ3NDkyZjVlZTM2MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
ckpvYlF1ZXVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2VydmVySm9iUXVldWUuY3BwCkBAIC0zMDcsNyArMzA3LDE3IEBAIHZvaWQgU1dTZXJ2ZXJK
b2JRdWV1ZTo6cnVuVXBkYXRlSm9iKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiBqb2IpCiAg
ICAgaWYgKGpvYi50eXBlID09IFNlcnZpY2VXb3JrZXJKb2JUeXBlOjpVcGRhdGUgJiYgbmV3ZXN0
V29ya2VyICYmICFlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVyKGpvYi5zY3JpcHRVUkws
IG5ld2VzdFdvcmtlci0+c2NyaXB0VVJMKCkpKQogICAgICAgICByZXR1cm4gcmVqZWN0Q3VycmVu
dEpvYihFeGNlcHRpb25EYXRhIHsgVHlwZUVycm9yLCBBU0NJSUxpdGVyYWwoIkNhbm5vdCB1cGRh
dGUgYSBzZXJ2aWNlIHdvcmtlciB3aXRoIGEgcmVxdWVzdGVkIHNjcmlwdCBVUkwgd2hvc2UgbmV3
ZXN0IHdvcmtlciBoYXMgYSBkaWZmZXJlbnQgc2NyaXB0IFVSTCIpIH0pOwogCi0gICAgbV9zZXJ2
ZXIuc3RhcnRTY3JpcHRGZXRjaChqb2IpOworICAgIEZldGNoT3B0aW9uczo6Q2FjaGUgY2FjaGVQ
b2xpY3kgPSBGZXRjaE9wdGlvbnM6OkNhY2hlOjpEZWZhdWx0OworICAgIC8vIFNldCByZXF1ZXN0
J3MgY2FjaGUgbW9kZSB0byAibm8tY2FjaGUiIGlmIGFueSBvZiB0aGUgZm9sbG93aW5nIGFyZSB0
cnVlOgorICAgIC8vIC0gcmVnaXN0cmF0aW9uJ3MgdXBkYXRlIHZpYSBjYWNoZSBtb2RlIGlzIG5v
dCAiYWxsIi4KKyAgICAvLyAtIGpvYidzIGZvcmNlIGJ5cGFzcyBjYWNoZSBmbGFnIGlzIHNldC4K
KyAgICAvLyAtIG5ld2VzdFdvcmtlciBpcyBub3QgbnVsbCwgYW5kIHJlZ2lzdHJhdGlvbidzIGxh
c3QgdXBkYXRlIGNoZWNrIHRpbWUgaXMgbm90IG51bGwgYW5kIHRoZSB0aW1lIGRpZmZlcmVuY2Ug
aW4gc2Vjb25kcyBjYWxjdWxhdGVkIGJ5IHRoZQorICAgIC8vICAgY3VycmVudCB0aW1lIG1pbnVz
IHJlZ2lzdHJhdGlvbidzIGxhc3QgdXBkYXRlIGNoZWNrIHRpbWUgaXMgZ3JlYXRlciB0aGFuIDg2
NDAwLgorICAgIGlmIChyZWdpc3RyYXRpb24tPnVwZGF0ZVZpYUNhY2hlKCkgIT0gU2VydmljZVdv
cmtlclVwZGF0ZVZpYUNhY2hlOjpBbGwKKyAgICAgICAgfHwgKG5ld2VzdFdvcmtlciAmJiByZWdp
c3RyYXRpb24tPmxhc3RVcGRhdGVUaW1lKCkgJiYgKFdhbGxUaW1lOjpub3coKSAtIHJlZ2lzdHJh
dGlvbi0+bGFzdFVwZGF0ZVRpbWUoKSkgPiA4NjQwMF9zKSkgeworICAgICAgICBjYWNoZVBvbGlj
eSA9IEZldGNoT3B0aW9uczo6Q2FjaGU6Ok5vQ2FjaGU7CisgICAgfQorICAgIG1fc2VydmVyLnN0
YXJ0U2NyaXB0RmV0Y2goam9iLCBjYWNoZVBvbGljeSk7CiB9CiAKIHZvaWQgU1dTZXJ2ZXJKb2JR
dWV1ZTo6cmVqZWN0Q3VycmVudEpvYihjb25zdCBFeGNlcHRpb25EYXRhJiBleGNlcHRpb25EYXRh
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlclJlZ2lzdHJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5oCmluZGV4IGYxNGRmNWMzZmQ0ODA1Yzg3ZDczOWFhZmI5
YmQyZWQyMzUzNzQwOTUuLmZiNzU2OTg2M2Q4ZjZlMjZmZGQwZjA2NDU2YzRhYWE4YzE0NDQwOGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2
ZXJSZWdpc3RyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVyUmVnaXN0cmF0aW9uLmgKQEAgLTYxLDYgKzYxLDggQEAgcHVibGljOgogICAg
IHZvaWQgc2V0SXNVbmluc3RhbGxpbmcoYm9vbCk7CiAKICAgICB2b2lkIHNldExhc3RVcGRhdGVU
aW1lKFdhbGxUaW1lIHRpbWUpIHsgbV9sYXN0VXBkYXRlVGltZSA9IHRpbWU7IH0KKyAgICBXYWxs
VGltZSBsYXN0VXBkYXRlVGltZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdFVwZGF0ZVRpbWU7IH0K
KwogICAgIFNlcnZpY2VXb3JrZXJVcGRhdGVWaWFDYWNoZSB1cGRhdGVWaWFDYWNoZSgpIGNvbnN0
IHsgcmV0dXJuIG1fdXBkYXRlVmlhQ2FjaGU7IH0KIAogICAgIHZvaWQgdXBkYXRlUmVnaXN0cmF0
aW9uU3RhdGUoU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvblN0YXRlLCBTV1NlcnZlcldvcmtlciop
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcAppbmRleCBiM2ViZDk4NzE3
ODRjZjQwMGI1ODE0YjNkMDQ2ZDA3NTYyNmM3NWY4Li4yYjhkMDY1ZGZmZGRmMDYyM2RjYjE2ZmY3
NjMwMzAwY2RhYTViZjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNw
cApAQCAtOTEsOSArOTEsOSBAQCB2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6cmVzb2x2ZVVu
cmVnaXN0cmF0aW9uSm9iSW5DbGllbnQoY29uc3QgU2VydmljZVdvcmtlcgogICAgIHNlbmQoTWVz
c2FnZXM6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6VW5yZWdpc3RyYXRpb25Kb2JSZXNvbHZlZElu
U2VydmVyKGpvYkRhdGFJZGVudGlmaWVyLCB1bnJlZ2lzdHJhdGlvblJlc3VsdCkpOwogfQogCi12
b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6c3RhcnRTY3JpcHRGZXRjaEluQ2xpZW50KGNvbnN0
IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYgam9iRGF0YUlkZW50aWZpZXIpCit2b2lk
IFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6c3RhcnRTY3JpcHRGZXRjaEluQ2xpZW50KGNvbnN0IFNl
cnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYgam9iRGF0YUlkZW50aWZpZXIsIEZldGNoT3B0
aW9uczo6Q2FjaGUgY2FjaGVQb2xpY3kpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViU1dDbGll
bnRDb25uZWN0aW9uOjpTdGFydFNjcmlwdEZldGNoRm9yU2VydmVyKGpvYkRhdGFJZGVudGlmaWVy
KSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViU1dDbGllbnRDb25uZWN0aW9uOjpTdGFydFNjcmlw
dEZldGNoRm9yU2VydmVyKGpvYkRhdGFJZGVudGlmaWVyLCBjYWNoZVBvbGljeSkpOwogfQogCiB2
b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6dXBkYXRlUmVnaXN0cmF0aW9uU3RhdGVJbkNsaWVu
dChTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyLCBTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uU3RhdGUgc3RhdGUsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2Vydmlj
ZVdvcmtlckRhdGE+JiBzZXJ2aWNlV29ya2VyRGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uaCBi
L1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNv
bm5lY3Rpb24uaAppbmRleCBkNjlkZDVmN2ZhMTRhNjA0OWQ1NzdhZDRiNDkyZTRhYzUxYTMxMTE5
Li4wNzI5NDFiZGI0MzFiZWI2ODNhYzE1MTJiYzY2OWRiNzg0ZTY0NDQ5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25u
ZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oCkBAIC03NCw3ICs3NCw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCByZWplY3RKb2JJbkNsaWVudChjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iRGF0
YUlkZW50aWZpZXImLCBjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhJikgZmluYWw7CiAgICAg
dm9pZCByZXNvbHZlUmVnaXN0cmF0aW9uSm9iSW5DbGllbnQoY29uc3QgV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJiwgY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbkRhdGEmLCBXZWJDb3JlOjpTaG91bGROb3RpZnlXaGVuUmVzb2x2ZWQpIGZpbmFs
OwogICAgIHZvaWQgcmVzb2x2ZVVucmVnaXN0cmF0aW9uSm9iSW5DbGllbnQoY29uc3QgV2ViQ29y
ZTo6U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJiwgY29uc3QgV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbktleSYsIGJvb2wgdW5yZWdpc3RyYXRpb25SZXN1bHQpIGZpbmFs
OwotICAgIHZvaWQgc3RhcnRTY3JpcHRGZXRjaEluQ2xpZW50KGNvbnN0IFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYpIGZpbmFsOworICAgIHZvaWQgc3RhcnRTY3JpcHRG
ZXRjaEluQ2xpZW50KGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmll
ciYsIFdlYkNvcmU6OkZldGNoT3B0aW9uczo6Q2FjaGUpIGZpbmFsOwogICAgIHZvaWQgdXBkYXRl
UmVnaXN0cmF0aW9uU3RhdGVJbkNsaWVudChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvblN0YXRlLCBj
b25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJEYXRhPiYpIGZpbmFsOwog
ICAgIHZvaWQgdXBkYXRlV29ya2VyU3RhdGVJbkNsaWVudChXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlclN0YXRlKSBmaW5hbDsKICAgICB2b2lk
IGZpcmVVcGRhdGVGb3VuZEV2ZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25J
ZGVudGlmaWVyKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgppbmRl
eCAwYjJkMzVmMWUwNWU1MDhkNTRlMDhlMDZiZDA0M2EwNTYyZGIxM2Q4Li4zMzkxNThmODFkNzNh
OTRlYzZjYjU0MTgwNjczN2IwNzdjOWMyNjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLm1l
c3NhZ2VzLmluCkBAIC0yNyw3ICsyNyw3IEBAIG1lc3NhZ2VzIC0+IFdlYlNXQ2xpZW50Q29ubmVj
dGlvbiB7CiAgICAgSm9iUmVqZWN0ZWRJblNlcnZlcihzdHJ1Y3QgV2ViQ29yZTo6U2VydmljZVdv
cmtlckpvYkRhdGFJZGVudGlmaWVyIGpvYkRhdGFJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6
RXhjZXB0aW9uRGF0YSBleGNlcHRpb24pCiAgICAgUmVnaXN0cmF0aW9uSm9iUmVzb2x2ZWRJblNl
cnZlcihzdHJ1Y3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyIGpvYkRh
dGFJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRh
dGEgcmVnaXN0cmF0aW9uLCBlbnVtIFdlYkNvcmU6OlNob3VsZE5vdGlmeVdoZW5SZXNvbHZlZCBz
aG91bGROb3RpZnlXaGVuUmVzb2x2ZWQpCiAgICAgVW5yZWdpc3RyYXRpb25Kb2JSZXNvbHZlZElu
U2VydmVyKHN0cnVjdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXIgam9i
RGF0YUlkZW50aWZpZXIsIGJvb2wgdW5yZWdpc3RyYXRpb25SZXN1bHQpCi0gICAgU3RhcnRTY3Jp
cHRGZXRjaEZvclNlcnZlcihzdHJ1Y3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYkRhdGFJZGVu
dGlmaWVyIGpvYkRhdGFJZGVudGlmaWVyKQorICAgIFN0YXJ0U2NyaXB0RmV0Y2hGb3JTZXJ2ZXIo
c3RydWN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciBqb2JEYXRhSWRl
bnRpZmllciwgV2ViQ29yZTo6RmV0Y2hPcHRpb25zOjpDYWNoZSBjYWNoZVBvbGljeSkKICAgICBV
cGRhdGVSZWdpc3RyYXRpb25TdGF0ZShXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
SWRlbnRpZmllciBpZGVudGlmaWVyLCBlbnVtIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25TdGF0ZSBzdGF0ZSwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyRGF0
YT4gc2VydmljZVdvcmtlcklkZW50aWZpZXIpCiAgICAgVXBkYXRlV29ya2VyU3RhdGUoV2ViQ29y
ZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGVudW0g
V2ViQ29yZTo6U2VydmljZVdvcmtlclN0YXRlIHN0YXRlKQogICAgIEZpcmVVcGRhdGVGb3VuZEV2
ZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyIGlkZW50aWZp
ZXIpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKaW5kZXggZTEwZjcyMTcxYzM5ZTdkYjUxYTEzMjBmZTI4ZWMxMTZlMjE2ZTZhOS4uMGUx
NThiNjk3N2NlMzhkYzlkODQ3NTNiNmVhNjRjNDFiMWFmNjE0NiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4
IEBACisyMDE3LTEyLTE0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAg
ICAgU2VydmljZSB3b3JrZXIgc2NyaXB0IGZldGNoaW5nIGN1cnJlbnRseSBhbHdheXMgdXNlcyB0
aGUgbmV0d29yayBjYWNoZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTgwODE2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkIGxheW91dCB0ZXN0IGNvdmVyYWdlLgorCisgICAgICAgICogaHR0cC90ZXN0
cy93b3JrZXJzL3NlcnZpY2UvcmVnaXN0cmF0aW9uLXVwZGF0ZVZpYUNhY2hlLWFsbC1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3JlZ2lz
dHJhdGlvbi11cGRhdGVWaWFDYWNoZS1hbGwuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90
ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVnaXN0cmF0aW9uLXVwZGF0ZVZpYUNhY2hlLW5vbmUtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9y
ZWdpc3RyYXRpb24tdXBkYXRlVmlhQ2FjaGUtbm9uZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBo
dHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9yZXNvdXJjZXMvY2FjaGVhYmxlLXNjcmlwdC13b3Jr
ZXIucGhwOiBBZGRlZC4KKwogMjAxNy0xMi0xNCAgUm9tYWluIEJlbGxlc3NvcnQgIDxyb21haW4u
YmVsbGVzc29ydEBjcmYuY2Fub24uZnI+CiAKICAgICAgICAgW1JlYWRhYmxlIFN0cmVhbXMgQVBJ
XSBSZW1vdmUgcHJvcGVydGllcyB0ZXN0cyBjb3ZlcmVkIGJ5IFdQVApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVnaXN0cmF0aW9uLXVwZGF0ZVZp
YUNhY2hlLWFsbC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMv
c2VydmljZS9yZWdpc3RyYXRpb24tdXBkYXRlVmlhQ2FjaGUtYWxsLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5iZjU3OTk2NzUwMDdmM2EyOTE3NmQ5NTIzNjY0YzQwZTYwMzFlYzg3Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVnaXN0
cmF0aW9uLXVwZGF0ZVZpYUNhY2hlLWFsbC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyIEBACitQ
QVNTOiBUaGUgd29ya2VyIHNjcmlwdCBjYW1lIGZyb20gdGhlIG5ldHdvcmsgY2FjaGUKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVnaXN0cmF0
aW9uLXVwZGF0ZVZpYUNhY2hlLWFsbC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3Jr
ZXJzL3NlcnZpY2UvcmVnaXN0cmF0aW9uLXVwZGF0ZVZpYUNhY2hlLWFsbC5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjIwZjc2Yjc3MGE5ZjEwMGM0M2FmOWI1OGVjYmIyZGM2YTQ2NTRlZTYKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9yZWdpc3RyYXRp
b24tdXBkYXRlVmlhQ2FjaGUtYWxsLmh0bWwKQEAgLTAsMCArMSw0MyBAQAorPGh0bWw+Cis8aGVh
ZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc3ctdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8c2NyaXB0PgorCitmdW5jdGlvbiBnZXRSYW5kb21JZEZyb21Xb3JrZXIo
d29ya2VyKQoreworICAgIHdvcmtlci5wb3N0TWVzc2FnZSgiZ2V0UmFuZG9tSWQiKTsKKyAgICBy
ZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSkgeworICAgICAgbmF2aWdhdG9yLnNl
cnZpY2VXb3JrZXIuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIGZ1bmN0aW9uKGUpIHsKKyAg
ICAgICAgICAgIHJlc29sdmUoZS5kYXRhKTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9CisKK2Fz
eW5jIGZ1bmN0aW9uIHRlc3QoKQoreworICAgIHRyeSB7CisgICAgICAgIGxldCByZWdpc3RyYXRp
b24gPSBhd2FpdCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3RlcigicmVzb3VyY2VzL2Nh
Y2hlYWJsZS1zY3JpcHQtd29ya2VyLnBocCIsIHsgdXBkYXRlVmlhQ2FjaGU6ICJhbGwiIH0pOwor
ICAgICAgICBsZXQgd29ya2VyMSA9IHJlZ2lzdHJhdGlvbi5pbnN0YWxsaW5nOworICAgICAgICBh
d2FpdCB3YWl0Rm9yU3RhdGUod29ya2VyMSwgImFjdGl2YXRlZCIpOworICAgICAgICBsZXQgcmFu
ZG9tSWQxID0gYXdhaXQgZ2V0UmFuZG9tSWRGcm9tV29ya2VyKHdvcmtlcjEpOworCisgICAgICAg
IGF3YWl0IHJlZ2lzdHJhdGlvbi51cGRhdGUoKTsKKyAgICAgICAgbGV0IHdvcmtlcjIgPSByZWdp
c3RyYXRpb24uaW5zdGFsbGluZzsKKyAgICAgICAgYXdhaXQgd2FpdEZvclN0YXRlKHdvcmtlcjIs
ICJhY3RpdmF0ZWQiKTsKKyAgICAgICAgbGV0IHJhbmRvbUlkMiA9IGF3YWl0IGdldFJhbmRvbUlk
RnJvbVdvcmtlcih3b3JrZXIyKTsKKworICAgICAgICBpZiAocmFuZG9tSWQxID09PSByYW5kb21J
ZDIpCisgICAgICAgICAgICBsb2coIlBBU1M6IFRoZSB3b3JrZXIgc2NyaXB0IGNhbWUgZnJvbSB0
aGUgbmV0d29yayBjYWNoZSIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBsb2coIkZBSUw6
IFRoZSB3b3JrZXIgc2NyaXB0IGRpZCBub3QgY29tZSBmcm9tIHRoZSBuZXR3b3JrIGNhY2hlIik7
CisgICAgfSBjYXRjaChlKSB7CisgICAgICAgIGxvZygiR290IGV4Y2VwdGlvbjogIiArIGUpOwor
ICAgIH0KKyAgICBmaW5pc2hTV1Rlc3QoKTsKK30KK3Rlc3QoKTsKKzwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3Nl
cnZpY2UvcmVnaXN0cmF0aW9uLXVwZGF0ZVZpYUNhY2hlLW5vbmUtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVnaXN0cmF0aW9uLXVwZGF0ZVZp
YUNhY2hlLW5vbmUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE3MTFhNjUyNTRjNmU3M2FiZmRm
ZGM5MmRhNmIxY2M4OGIyMzI1MzIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3dvcmtlcnMvc2VydmljZS9yZWdpc3RyYXRpb24tdXBkYXRlVmlhQ2FjaGUtbm9uZS1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwyIEBACitQQVNTOiBUaGUgd29ya2VyIHNjcmlwdCBkaWQg
bm90IGNvbWUgZnJvbSB0aGUgbmV0d29yayBjYWNoZQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9yZWdpc3RyYXRpb24tdXBkYXRlVmlhQ2FjaGUt
bm9uZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVnaXN0
cmF0aW9uLXVwZGF0ZVZpYUNhY2hlLW5vbmUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZmQ0NmZhNGQ3N2Fk
NTlmMDRkMjc4MjUxYjlmMTRlZjgyODM0MzU0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVnaXN0cmF0aW9uLXVwZGF0ZVZpYUNhY2hl
LW5vbmUuaHRtbApAQCAtMCwwICsxLDQzIEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9
InJlc291cmNlcy9zdy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxz
Y3JpcHQ+CisKK2Z1bmN0aW9uIGdldFJhbmRvbUlkRnJvbVdvcmtlcih3b3JrZXIpCit7CisgICAg
d29ya2VyLnBvc3RNZXNzYWdlKCJnZXRSYW5kb21JZCIpOworICAgIHJldHVybiBuZXcgUHJvbWlz
ZShmdW5jdGlvbihyZXNvbHZlKSB7CisgICAgICBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5hZGRF
dmVudExpc3RlbmVyKCdtZXNzYWdlJywgZnVuY3Rpb24oZSkgeworICAgICAgICAgICAgcmVzb2x2
ZShlLmRhdGEpOworICAgICAgICB9KTsKKyAgICB9KTsKK30KKworYXN5bmMgZnVuY3Rpb24gdGVz
dCgpCit7CisgICAgdHJ5IHsKKyAgICAgICAgbGV0IHJlZ2lzdHJhdGlvbiA9IGF3YWl0IG5hdmln
YXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCJyZXNvdXJjZXMvY2FjaGVhYmxlLXNjcmlwdC13
b3JrZXIucGhwIiwgeyB1cGRhdGVWaWFDYWNoZTogIm5vbmUiIH0pOworICAgICAgICBsZXQgd29y
a2VyMSA9IHJlZ2lzdHJhdGlvbi5pbnN0YWxsaW5nOworICAgICAgICBhd2FpdCB3YWl0Rm9yU3Rh
dGUod29ya2VyMSwgImFjdGl2YXRlZCIpOworICAgICAgICBsZXQgcmFuZG9tSWQxID0gYXdhaXQg
Z2V0UmFuZG9tSWRGcm9tV29ya2VyKHdvcmtlcjEpOworCisgICAgICAgIGF3YWl0IHJlZ2lzdHJh
dGlvbi51cGRhdGUoKTsKKyAgICAgICAgbGV0IHdvcmtlcjIgPSByZWdpc3RyYXRpb24uaW5zdGFs
bGluZzsKKyAgICAgICAgYXdhaXQgd2FpdEZvclN0YXRlKHdvcmtlcjIsICJhY3RpdmF0ZWQiKTsK
KyAgICAgICAgbGV0IHJhbmRvbUlkMiA9IGF3YWl0IGdldFJhbmRvbUlkRnJvbVdvcmtlcih3b3Jr
ZXIyKTsKKworICAgICAgICBpZiAocmFuZG9tSWQxID09PSByYW5kb21JZDIpCisgICAgICAgICAg
ICBsb2coIkZBSUw6IFRoZSB3b3JrZXIgc2NyaXB0IGNhbWUgZnJvbSB0aGUgbmV0d29yayBjYWNo
ZSIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBsb2coIlBBU1M6IFRoZSB3b3JrZXIgc2Ny
aXB0IGRpZCBub3QgY29tZSBmcm9tIHRoZSBuZXR3b3JrIGNhY2hlIik7CisgICAgfSBjYXRjaChl
KSB7CisgICAgICAgIGxvZygiR290IGV4Y2VwdGlvbjogIiArIGUpOworICAgIH0KKyAgICBmaW5p
c2hTV1Rlc3QoKTsKK30KK3Rlc3QoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2Vz
L2NhY2hlYWJsZS1zY3JpcHQtd29ya2VyLnBocCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29y
a2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9jYWNoZWFibGUtc2NyaXB0LXdvcmtlci5waHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMDUxMzY3YzdmMmFhODlhZmZjNzY3ZWZlNzdjYmY0OGRkOTBlZjc0YQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNl
cy9jYWNoZWFibGUtc2NyaXB0LXdvcmtlci5waHAKQEAgLTAsMCArMSwxNiBAQAorPD9waHAKKyAg
ICAkbWF4X2FnZSA9IDEyICogMzEgKiAyNCAqIDYwICogNjA7IC8vb25lIHllYXIKKyAgICBoZWFk
ZXIoJ0NhY2hlLUNvbnRyb2w6IHB1YmxpYywgbWF4LWFnZT0nIC4gJG1heF9hZ2UpOworICAgIGhl
YWRlcignQ29udGVudC1UeXBlOiB0ZXh0L2phdmFzY3JpcHQnKTsKKworICAgICRyYW5kb21JZCA9
ICcnOworICAgICRjaGFyc2V0ID0gJ0FCQ0RFRkdISUtMTU5PUFFSU1RVVldYWVowMTIzNDU2Nzg5
JzsKKyAgICBmb3IgKCRpID0gMDsgJGkgPCAxNjsgJGkrKykKKyAgICAgICAgJHJhbmRvbUlkIC49
ICRjaGFyc2V0W3JhbmQoMCwgc3RybGVuKCRjaGFyc2V0KSAtIDEpXTsKKworICAgIGVjaG8gJ2xl
dCByYW5kb21JZCA9ICInIC4gJHJhbmRvbUlkIC4gJyI7JzsKKz8+CisKK3NlbGYuYWRkRXZlbnRM
aXN0ZW5lcigibWVzc2FnZSIsIGZ1bmN0aW9uKGUpIHsKKyAgIGUuc291cmNlLnBvc3RNZXNzYWdl
KHJhbmRvbUlkKTsKK30pOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>