<?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>198333</bug_id>
          
          <creation_ts>2019-05-29 08:23:04 -0700</creation_ts>
          <short_desc>Reestablish WebSWClientConnection in case of network process crash</short_desc>
          <delta_ts>2019-05-30 14:51:18 -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>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>
          
          
          <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="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>achristensen</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>japhet</cc>
    
    <cc>tsavell</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1539960</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-05-29 08:23:04 -0700</bug_when>
    <thetext>Reestablish WebSWClientConnection in case of network process crash</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1539964</commentid>
    <comment_count>1</comment_count>
      <attachid>370853</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-05-29 09:09:17 -0700</bug_when>
    <thetext>Created attachment 370853
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1540142</commentid>
    <comment_count>2</comment_count>
      <attachid>370853</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-05-29 15:21:14 -0700</bug_when>
    <thetext>Comment on attachment 370853
Patch

Clearing flags on attachment: 370853

Committed r245873: &lt;https://trac.webkit.org/changeset/245873&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1540143</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-05-29 15:21:16 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1540144</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-05-29 15:22:14 -0700</bug_when>
    <thetext>&lt;rdar://problem/51239460&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1540469</commentid>
    <comment_count>5</comment_count>
    <who name="Truitt Savell">tsavell</who>
    <bug_when>2019-05-30 14:51:18 -0700</bug_when>
    <thetext>It looks like the new test http/wpt/service-workers/service-worker-networkprocess-crash.html

Added in https://trac.webkit.org/changeset/245873/webkit

is failing and crashing.

It also appears this patch caused multiple other flakey crashes.
I was able to reproduce the failures on 245873 but not on 245872.

History:
https://webkit-test-results.webkit.org/dashboards/flakiness_dashboard.html#showAllRuns=true&amp;tests=http%2Fwpt%2Fservice-workers%2Fupdate-service-worker.https.html%20http%2Fwpt%2Fservice-workers%2Fuseragent.https.html%20http%2Fwpt%2Fservice-workers%2Fservice-worker-networkprocess-crash.html%20imported%2Fw3c%2Fweb-platform-tests%2FFileAPI%2Fhistorical.https.html%20http%2Fwpt%2Fcache-storage%2Fquota-third-party.https.html%20imported%2Fw3c%2Fweb-platform-tests%2Ffetch%2Fapi%2Fpolicies%2Freferrer-no-referrer-service-worker.https.html%20http%2Fwpt%2Fcrypto%2Faes-cbc-crash.any.worker.html</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>370853</attachid>
            <date>2019-05-29 09:09:17 -0700</date>
            <delta_ts>2019-05-29 15:21:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-198333-20190529090916.patch</filename>
            <type>text/plain</type>
            <size>29163</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ1ODQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTIwOGQ1MmJjNGVkYTBm
MTYzNTUyNzIxNjQ0MTAwNjNlNTk2NTBmNS4uZmIwZTVlNjQ4OTFhOTFjMzBiZTc3ZDQxOGEwNGIz
MzAxNzdmNGNhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE5LTA1LTI5ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBSZWVzdGFibGlzaCBXZWJT
V0NsaWVudENvbm5lY3Rpb24gaW4gY2FzZSBvZiBuZXR3b3JrIHByb2Nlc3MgY3Jhc2gKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODMzMworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlZmFjdG9yIERvY3Vt
ZW50TG9hZGVyIHRvIG5vIGxvbmdlciB0YWtlIGEgcmVmIHRvIHRoZSBTV0NsaWVudENvbm5lY3Rp
b24uCisgICAgICAgIEluc3RlYWQsIHN0b3JlIHRoZSBzZXNzaW9uSUQgYW5kIGdldCB0aGUgU1dD
bGllbnRDb25uZWN0aW9uIGZyb20gaXQuCisgICAgICAgIFJlbW92ZSB1bnVzZWQgY29kZSBmcm9t
IFNlcnZpY2VXb3JrZXJDb250YWluZXIuCisKKyAgICAgICAgVGVzdDogaHR0cC93cHQvc2Vydmlj
ZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLW5ldHdvcmtwcm9jZXNzLWNyYXNoLmh0bWwKKworICAg
ICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudExvYWRlcjo6cmVnaXN0ZXJUZW1wb3JhcnlTZXJ2aWNlV29ya2VyQ2xpZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjp1bnJlZ2lzdGVyVGVtcG9yYXJ5U2VydmljZVdv
cmtlckNsaWVudCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6CisgICAgICAg
ICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwOgorICAgICAgICAq
IHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmg6CisgICAgICAgICogd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JDbGllbnQuaDoKKwogMjAxOS0wNS0yOSAgTHVk
b3ZpY28gZGUgTml0dGlzICA8bHVkb3ZpY28uZGVuaXR0aXNAY29sbGFib3JhLmNvbT4KIAogICAg
ICAgICBQbGF0Zm9ybUV2ZW50S2V5Ym9hcmRHdGsgc3RpbGwgdXNlcyBvbGQga2V5IGFsaWFzZXMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggOTAwYmJlOGYxOGRhNGViODA1NmMyZTBiYWM2ZDUwODAwYzg1YTdjNi4uOGUx
NDU1MjAxOGMyNzBhZDEyY2ZkZWM1MmEwYjY2ZjAzOGNkODliYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSw0NSBAQAorMjAxOS0wNS0yOSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisK
KyAgICAgICAgUmVlc3RhYmxpc2ggV2ViU1dDbGllbnRDb25uZWN0aW9uIGluIGNhc2Ugb2YgbmV0
d29yayBwcm9jZXNzIGNyYXNoCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xOTgzMzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBXZWJTV0NsaWVudENvbm5lY3Rpb24gbm93IHRha2VzIGEgUmVmUHRyPElQQzo6
Q29ubmVjdGlvbj4gc28gdGhhdCBvbiBuZXR3b3JrIHByb2Nlc3MgY3Jhc2gsIGl0IHdpbGwgc2V0
IGl0IGJhY2sgdG8gbnVsbC4KKyAgICAgICAgT24gdGhlIG5leHQgY2FsbCB0aGF0IG5lZWRzIHRo
ZSBjb25uZWN0aW9uLCBXZWJTV0NsaWVudENvbm5lY3Rpb24gd2lsbCByZWluaXRpYWxpemUgaXRz
IHVuZGVybHlpbmcgSVBDIGNvbm5lY3Rpb24gYW5kIGl0cyBvd24gaWRlbnRpZmllci4KKyAgICAg
ICAgTWFrZSBzdXJlIHRoYXQgYWxsIGNvZGUgcGF0aHMgcmVxdWlyaW5nIHRoaXMgaW5pdGlhbGl6
YXRpb24gYXJlIGNvdmVyZWQuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uOjpkaWRDbG9zZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbjo6c2VydmljZVdvcmtlckNvbm5lY3Rpb25Gb3JTZXNzaW9uKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjppc1JlZ2lzdGVyZWRBY3RpdmVTV0NsaWVu
dENvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246
OmluaXRpYWxpemVTV0NsaWVudENvbm5lY3Rpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU1dD
bGllbnRDb25uZWN0aW9uOjpXZWJTV0NsaWVudENvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0
OjpXZWJTV0NsaWVudENvbm5lY3Rpb246On5XZWJTV0NsaWVudENvbm5lY3Rpb24pOgorICAgICAg
ICAoV2ViS2l0OjpXZWJTV0NsaWVudENvbm5lY3Rpb246OmluaXRpYWxpemVDb25uZWN0aW9uSWZO
ZWVkZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NsaWVudENvbm5lY3Rpb246OmVuc3VyZUNv
bm5lY3Rpb25BbmRTZW5kKToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dDbGllbnRDb25uZWN0aW9u
OjpzY2hlZHVsZUpvYkluU2VydmVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dDbGllbnRDb25u
ZWN0aW9uOjpmaW5pc2hGZXRjaGluZ1NjcmlwdEluU2VydmVyKToKKyAgICAgICAgKFdlYktpdDo6
V2ViU1dDbGllbnRDb25uZWN0aW9uOjphZGRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSW5TZXJ2
ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NsaWVudENvbm5lY3Rpb246OnJlbW92ZVNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25JblNlcnZlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ2xp
ZW50Q29ubmVjdGlvbjo6cmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KToKKyAgICAgICAgKFdl
YktpdDo6V2ViU1dDbGllbnRDb25uZWN0aW9uOjp1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVu
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6ZGlkUmVzb2x2ZVJl
Z2lzdHJhdGlvblByb21pc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NsaWVudENvbm5lY3Rp
b246Om1hdGNoUmVnaXN0cmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dDbGllbnRDb25u
ZWN0aW9uOjpydW5PckRlbGF5VGFza0ZvckltcG9ydCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNX
Q2xpZW50Q29ubmVjdGlvbjo6d2hlblJlZ2lzdHJhdGlvblJlYWR5KToKKyAgICAgICAgKFdlYktp
dDo6V2ViU1dDbGllbnRDb25uZWN0aW9uOjpnZXRSZWdpc3RyYXRpb25zKToKKyAgICAgICAgKFdl
YktpdDo6V2ViU1dDbGllbnRDb25uZWN0aW9uOjpzdGFydEZldGNoKToKKyAgICAgICAgKFdlYktp
dDo6V2ViU1dDbGllbnRDb25uZWN0aW9uOjpjYW5jZWxGZXRjaCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6Y29udGludWVEaWRSZWNlaXZlRmV0Y2hSZXNwb25zZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6Y29ubmVjdGlvblRvU2Vy
dmVyTG9zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6c3luY1Rl
cm1pbmF0ZVdvcmtlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6
c2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJT
V0NsaWVudENvbm5lY3Rpb246OnVwZGF0ZVRocm90dGxlU3RhdGUpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uaDoKKwogMjAxOS0wNS0yOCAgRnVq
aWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KIAogICAgICAgICBbV2luQ2Fp
cm9dIFJFR1JFU1NJT04ocjI0NTE4NikgQ3Jhc2ggaW4gTmV0d29ya0NhY2hlOjpJT0NoYW5uZWw6
OnJlYWQgaW4gaHR0cC90ZXN0cy9JbmRleGVkREIgc29tZSB0ZXN0cwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudExvYWRlci5jcHAKaW5kZXggYmQ5Y2VmODA0MTQ3YmRjYjA0ZGRhN2ViOTJh
ODVmYTE4YTZjMzM2Yy4uZDFkOTgxMzhkMGU3ZjNiOTdhMDQ3NDkyOTllZGI1YzBlNTU0MGZjZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCkBAIC0xODE1LDE4ICsx
ODE1LDIwIEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnJlZ2lzdGVyVGVtcG9yYXJ5U2VydmljZVdv
cmtlckNsaWVudChjb25zdCBVUkwmIHVybCkKIAogICAgIG1fdGVtcG9yYXJ5U2VydmljZVdvcmtl
ckNsaWVudCA9IFRlbXBvcmFyeVNlcnZpY2VXb3JrZXJDbGllbnQgewogICAgICAgICBEb2N1bWVu
dElkZW50aWZpZXI6OmdlbmVyYXRlKCksCi0gICAgICAgICpTZXJ2aWNlV29ya2VyUHJvdmlkZXI6
OnNpbmdsZXRvbigpLmV4aXN0aW5nU2VydmljZVdvcmtlckNvbm5lY3Rpb25Gb3JTZXNzaW9uKG1f
ZnJhbWUtPnBhZ2UoKS0+c2Vzc2lvbklEKCkpCisgICAgICAgIG1fZnJhbWUtPnBhZ2UoKS0+c2Vz
c2lvbklEKCkKICAgICB9OwogCisgICAgYXV0byYgc2VydmljZVdvcmtlckNvbm5lY3Rpb24gPSBT
ZXJ2aWNlV29ya2VyUHJvdmlkZXI6OnNpbmdsZXRvbigpLnNlcnZpY2VXb3JrZXJDb25uZWN0aW9u
Rm9yU2Vzc2lvbihtX3RlbXBvcmFyeVNlcnZpY2VXb3JrZXJDbGllbnQtPnNlc3Npb25JRCk7CisK
ICAgICAvLyBGSVhNRTogQ29tcHV0ZSBTZXJ2aWNlV29ya2VyQ2xpZW50RnJhbWVUeXBlIGFwcHJv
cHJpYXRlbHkuCi0gICAgU2VydmljZVdvcmtlckNsaWVudERhdGEgZGF0YSB7IHsgbV90ZW1wb3Jh
cnlTZXJ2aWNlV29ya2VyQ2xpZW50LT5zZXJ2aWNlV29ya2VyQ29ubmVjdGlvbi0+c2VydmVyQ29u
bmVjdGlvbklkZW50aWZpZXIoKSwgbV90ZW1wb3JhcnlTZXJ2aWNlV29ya2VyQ2xpZW50LT5kb2N1
bWVudElkZW50aWZpZXIgfSwgU2VydmljZVdvcmtlckNsaWVudFR5cGU6OldpbmRvdywgU2Vydmlj
ZVdvcmtlckNsaWVudEZyYW1lVHlwZTo6Tm9uZSwgdXJsIH07CisgICAgU2VydmljZVdvcmtlckNs
aWVudERhdGEgZGF0YSB7IHsgc2VydmljZVdvcmtlckNvbm5lY3Rpb24uc2VydmVyQ29ubmVjdGlv
bklkZW50aWZpZXIoKSwgbV90ZW1wb3JhcnlTZXJ2aWNlV29ya2VyQ2xpZW50LT5kb2N1bWVudElk
ZW50aWZpZXIgfSwgU2VydmljZVdvcmtlckNsaWVudFR5cGU6OldpbmRvdywgU2VydmljZVdvcmtl
ckNsaWVudEZyYW1lVHlwZTo6Tm9uZSwgdXJsIH07CiAKICAgICBSZWZQdHI8U2VjdXJpdHlPcmln
aW4+IHRvcE9yaWdpbjsKICAgICBpZiAobV9mcmFtZS0+aXNNYWluRnJhbWUoKSkKICAgICAgICAg
dG9wT3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh1cmwpOwogICAgIGVsc2UKICAgICAg
ICAgdG9wT3JpZ2luID0gJm1fZnJhbWUtPm1haW5GcmFtZSgpLmRvY3VtZW50KCktPnRvcE9yaWdp
bigpOwotICAgIG1fdGVtcG9yYXJ5U2VydmljZVdvcmtlckNsaWVudC0+c2VydmljZVdvcmtlckNv
bm5lY3Rpb24tPnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudCgqdG9wT3JpZ2luLCBXVEZNb3Zl
KGRhdGEpLCBtX3NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhLT5pZGVudGlmaWVyLCBtX2Zy
YW1lLT5sb2FkZXIoKS51c2VyQWdlbnQodXJsKSk7CisgICAgc2VydmljZVdvcmtlckNvbm5lY3Rp
b24ucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KCp0b3BPcmlnaW4sIFdURk1vdmUoZGF0YSks
IG1fc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEtPmlkZW50aWZpZXIsIG1fZnJhbWUtPmxv
YWRlcigpLnVzZXJBZ2VudCh1cmwpKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHVybCk7CiAj
ZW5kaWYKQEAgLTE4MzgsNyArMTg0MCw4IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnVucmVnaXN0
ZXJUZW1wb3JhcnlTZXJ2aWNlV29ya2VyQ2xpZW50KCkKICAgICBpZiAoIW1fdGVtcG9yYXJ5U2Vy
dmljZVdvcmtlckNsaWVudCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV90ZW1wb3JhcnlTZXJ2
aWNlV29ya2VyQ2xpZW50LT5zZXJ2aWNlV29ya2VyQ29ubmVjdGlvbi0+dW5yZWdpc3RlclNlcnZp
Y2VXb3JrZXJDbGllbnQobV90ZW1wb3JhcnlTZXJ2aWNlV29ya2VyQ2xpZW50LT5kb2N1bWVudElk
ZW50aWZpZXIpOworICAgIGF1dG8mIHNlcnZpY2VXb3JrZXJDb25uZWN0aW9uID0gU2VydmljZVdv
cmtlclByb3ZpZGVyOjpzaW5nbGV0b24oKS5zZXJ2aWNlV29ya2VyQ29ubmVjdGlvbkZvclNlc3Np
b24obV90ZW1wb3JhcnlTZXJ2aWNlV29ya2VyQ2xpZW50LT5zZXNzaW9uSUQpOworICAgIHNlcnZp
Y2VXb3JrZXJDb25uZWN0aW9uLnVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KG1fdGVtcG9y
YXJ5U2VydmljZVdvcmtlckNsaWVudC0+ZG9jdW1lbnRJZGVudGlmaWVyKTsKICAgICBtX3RlbXBv
cmFyeVNlcnZpY2VXb3JrZXJDbGllbnQgPSBXVEY6Om51bGxvcHQ7CiAjZW5kaWYKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKaW5kZXggNTlhY2I3ZTlmNDZkNWVkZmY0MWU1
MDRiMzRlN2NjZTk0YTM1NmM3Ny4uN2YyNjk3YmM1Njc1ZjU2OTMwYjUyNDk4ZjJjYzA4ZTdlYmU0
ODViZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKQEAgLTYxMSw3ICs2
MTEsNyBAQCBwcml2YXRlOgogICAgIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25E
YXRhPiBtX3NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhOwogICAgIHN0cnVjdCBUZW1wb3Jh
cnlTZXJ2aWNlV29ya2VyQ2xpZW50IHsKICAgICAgICAgRG9jdW1lbnRJZGVudGlmaWVyIGRvY3Vt
ZW50SWRlbnRpZmllcjsKLSAgICAgICAgUmVmPFNXQ2xpZW50Q29ubmVjdGlvbj4gc2VydmljZVdv
cmtlckNvbm5lY3Rpb247CisgICAgICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRDsKICAgICB9
OwogICAgIE9wdGlvbmFsPFRlbXBvcmFyeVNlcnZpY2VXb3JrZXJDbGllbnQ+IG1fdGVtcG9yYXJ5
U2VydmljZVdvcmtlckNsaWVudDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwCmluZGV4IGRmZGEx
MGQ4MThhYzEzZDE2MGYzNTQyOWEyMjQ1ZjcwNDczMmI1ZjQuLmIyZDI2MTVhMTI2M2QxNjI2NjE4
MjAwNDY0OGY5MGVkYTY5MjA2YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAKQEAgLTU3NSwxMiArNTc1
LDYgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpkZXN0cm95Sm9iKFNlcnZpY2VXb3Jr
ZXJKb2ImIGpvYikKICAgICBtX2pvYk1hcC5yZW1vdmUoam9iLmlkZW50aWZpZXIoKSk7CiB9CiAK
LVNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6Y29u
bmVjdGlvbklkZW50aWZpZXIoKQotewotICAgIEFTU0VSVChtX3N3Q29ubmVjdGlvbik7Ci0gICAg
cmV0dXJuIG1fc3dDb25uZWN0aW9uLT5zZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcigpOwotfQot
CiBjb25zdCBjaGFyKiBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjphY3RpdmVET01PYmplY3ROYW1l
KCkgY29uc3QKIHsKICAgICByZXR1cm4gIlNlcnZpY2VXb3JrZXJDb250YWluZXIiOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWlu
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFp
bmVyLmgKaW5kZXggODMxNjVmMDEyZmQ0NjAxMmY1ODE3MmU0ZTM5ZTc4MjFhODk0ZThkMy4uYmM0
MGQwNjBjNzFiZGExN2VhMDk5YjQ4ZTg0ZWFiMjVhMjFhYjQ4YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5oCkBA
IC0xMDMsNyArMTAzLDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEZpbmlzaEdldFJlZ2lzdHJh
dGlvblJlcXVlc3QodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIE9wdGlvbmFsPFNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25EYXRhPiYmKTsKICAgICB2b2lkIGRpZEZpbmlzaEdldFJlZ2lzdHJh
dGlvbnNSZXF1ZXN0KHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBWZWN0b3I8U2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbkRhdGE+JiYpOwogCi0gICAgU1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRp
ZmllciBjb25uZWN0aW9uSWRlbnRpZmllcigpIGZpbmFsOwogICAgIERvY3VtZW50T3JXb3JrZXJJ
ZGVudGlmaWVyIGNvbnRleHRJZGVudGlmaWVyKCkgZmluYWw7CiAKICAgICBTV0NsaWVudENvbm5l
Y3Rpb24mIGVuc3VyZVNXQ2xpZW50Q29ubmVjdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JDbGllbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iQ2xpZW50LmgKaW5kZXggNmM0
ODE4ZWY4ZmJmNGYxYzA4YzkyY2JkNTM0NDA3YWUwYWU0OTA1Ni4uYzA5MjQ5YTlmMmMwODU4ZTBj
Mjk3MmQyY2IwYTk2YTY5Yjg4MGQzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYkNsaWVudC5oCkBAIC01MSw4ICs1MSw2IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc3RhcnRTY3JpcHRGZXRjaEZvckpvYihTZXJ2aWNl
V29ya2VySm9iJiwgRmV0Y2hPcHRpb25zOjpDYWNoZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBq
b2JGaW5pc2hlZExvYWRpbmdTY3JpcHQoU2VydmljZVdvcmtlckpvYiYsIGNvbnN0IFN0cmluZyYg
c2NyaXB0LCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmLCBjb25z
dCBTdHJpbmcmIHJlZmVycmVyUG9saWN5KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGpvYkZhaWxl
ZExvYWRpbmdTY3JpcHQoU2VydmljZVdvcmtlckpvYiYsIGNvbnN0IFJlc291cmNlRXJyb3ImLCBF
eGNlcHRpb24mJikgPSAwOwotCi0gICAgdmlydHVhbCBTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlm
aWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyKCkgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKaW5kZXggOGIxYWQ1ZWRmMGU2YjkwZDU4YzI0
ZTYxNWZhZGM5YzcxMDdhNWY2OC4uMDM3ZjcxMDA0Yjc3MTUzYWIxYWNkNmNkOWRiNmNlZWE2Zjhh
NTg5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC0xOTUsMTEgKzE5NSw5IEBAIHZv
aWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mKQog
I2VuZGlmCiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisgICAgbV9zd0Nvbm5lY3Rpb25z
QnlJZGVudGlmaWVyLmNsZWFyKCk7CiAgICAgZm9yIChhdXRvJiBjb25uZWN0aW9uIDogbV9zd0Nv
bm5lY3Rpb25zQnlTZXNzaW9uLnZhbHVlcygpKQogICAgICAgICBjb25uZWN0aW9uLT5jb25uZWN0
aW9uVG9TZXJ2ZXJMb3N0KCk7Ci0gICAgCi0gICAgbV9zd0Nvbm5lY3Rpb25zQnlJZGVudGlmaWVy
LmNsZWFyKCk7Ci0gICAgbV9zd0Nvbm5lY3Rpb25zQnlTZXNzaW9uLmNsZWFyKCk7CiAjZW5kaWYK
IH0KIApAQCAtMjYyLDE0ICsyNjAsMjIgQEAgV2ViSURCQ29ubmVjdGlvblRvU2VydmVyJiBOZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmlkYkNvbm5lY3Rpb25Ub1NlcnZlckZvclNlc3MKIFdlYlNX
Q2xpZW50Q29ubmVjdGlvbiYgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpzZXJ2aWNlV29ya2Vy
Q29ubmVjdGlvbkZvclNlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogewogICAgIEFT
U0VSVChzZXNzaW9uSUQuaXNWYWxpZCgpKTsKLSAgICByZXR1cm4gKm1fc3dDb25uZWN0aW9uc0J5
U2Vzc2lvbi5lbnN1cmUoc2Vzc2lvbklELCBbJl0gewotICAgICAgICBhdXRvIGNvbm5lY3Rpb24g
PSBXZWJTV0NsaWVudENvbm5lY3Rpb246OmNyZWF0ZShtX2Nvbm5lY3Rpb24sIHNlc3Npb25JRCk7
Ci0gICAgICAgIAotICAgICAgICBhdXRvIHJlc3VsdCA9IG1fc3dDb25uZWN0aW9uc0J5SWRlbnRp
Zmllci5hZGQoY29ubmVjdGlvbi0+c2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIoKSwgY29ubmVj
dGlvbi5wdHIoKSk7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdF
bnRyeSk7Ci0gICAgICAgIAotICAgICAgICByZXR1cm4gY29ubmVjdGlvbjsKKyAgICByZXR1cm4g
Km1fc3dDb25uZWN0aW9uc0J5U2Vzc2lvbi5lbnN1cmUoc2Vzc2lvbklELCBbc2Vzc2lvbklEXSB7
CisgICAgICAgIHJldHVybiBXZWJTV0NsaWVudENvbm5lY3Rpb246OmNyZWF0ZShzZXNzaW9uSUQp
OwogICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKIH0KKworU1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRp
ZmllciBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmluaXRpYWxpemVTV0NsaWVudENvbm5lY3Rp
b24oV2ViU1dDbGllbnRDb25uZWN0aW9uJiBjb25uZWN0aW9uKQoreworICAgIFNXU2VydmVyQ29u
bmVjdGlvbklkZW50aWZpZXIgaWRlbnRpZmllcjsKKyAgICBib29sIHJlc3VsdCA9IG1fY29ubmVj
dGlvbi0+c2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpF
c3RhYmxpc2hTV1NlcnZlckNvbm5lY3Rpb24oY29ubmVjdGlvbi5zZXNzaW9uSUQoKSksIE1lc3Nh
Z2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6RXN0YWJsaXNoU1dTZXJ2ZXJDb25u
ZWN0aW9uOjpSZXBseShpZGVudGlmaWVyKSwgMCk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQs
IHJlc3VsdCk7CisKKyAgICBBU1NFUlQoIW1fc3dDb25uZWN0aW9uc0J5SWRlbnRpZmllci5jb250
YWlucyhpZGVudGlmaWVyKSk7CisgICAgbV9zd0Nvbm5lY3Rpb25zQnlJZGVudGlmaWVyLmFkZChp
ZGVudGlmaWVyLCAmY29ubmVjdGlvbik7CisKKyAgICByZXR1cm4gaWRlbnRpZmllcjsKK30KKwog
I2VuZGlmCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgKaW5kZXgg
YjhiMzEzOTg1MTdmYTI4ZTlhZTRkZDljMTEyNmJmYWEyNmIyN2U1OC4uNWE5YzRkYzRiZjQxZTA0
MGZlYTUwZGVhNWY5OTI0Y2Q0ZjgxMmI1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgKQEAgLTI5
LDYgKzI5LDcgQEAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiU2hhcmVhYmxl
UmVzb3VyY2UuaCIKICNpbmNsdWRlICJXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIuaCIKKyNpbmNs
dWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJUeXBlcy5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTc0LDYgKzc1LDgg
QEAgcHVibGljOgogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBXZWJTV0NsaWVudENv
bm5lY3Rpb24qIGV4aXN0aW5nU2VydmljZVdvcmtlckNvbm5lY3Rpb25Gb3JTZXNzaW9uKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCkgeyByZXR1cm4gbV9zd0Nvbm5lY3Rpb25zQnlTZXNzaW9uLmdl
dChzZXNzaW9uSUQpOyB9CiAgICAgV2ViU1dDbGllbnRDb25uZWN0aW9uJiBzZXJ2aWNlV29ya2Vy
Q29ubmVjdGlvbkZvclNlc3Npb24oUEFMOjpTZXNzaW9uSUQpOworCisgICAgV2ViQ29yZTo6U1dT
ZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBpbml0aWFsaXplU1dDbGllbnRDb25uZWN0aW9uKFdl
YlNXQ2xpZW50Q29ubmVjdGlvbiYpOwogI2VuZGlmCiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9u
LmNwcAppbmRleCBiZWYwNDIyZjkzMzMxNTM4YTlhMjVjYmYwMWJjODNiYjY4ZDMzMjAzLi45NTFl
NjVmNmMwNWIxYzU1MzFjODBhZTMzNDRmYjRkNTQwYWNlMzVlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5j
cHAKQEAgLTMxLDcgKzMxLDcgQEAKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVk
ZSAiRm9ybURhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCi0jaW5jbHVkZSAi
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlcy5oIgorI2luY2x1ZGUgIk5ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDbGllbnRGZXRj
aC5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYlBy
b2Nlc3MuaCIKQEAgLTUxLDQwICs1MSw1NyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5h
bWVzcGFjZSBQQUw7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotV2ViU1dDbGllbnRDb25u
ZWN0aW9uOjpXZWJTV0NsaWVudENvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9u
LCBTZXNzaW9uSUQgc2Vzc2lvbklEKQorCitXZWJTV0NsaWVudENvbm5lY3Rpb246OldlYlNXQ2xp
ZW50Q29ubmVjdGlvbihTZXNzaW9uSUQgc2Vzc2lvbklEKQogICAgIDogbV9zZXNzaW9uSUQoc2Vz
c2lvbklEKQotICAgICwgbV9jb25uZWN0aW9uKGNvbm5lY3Rpb24pCiAgICAgLCBtX3N3T3JpZ2lu
VGFibGUobWFrZVVuaXF1ZVJlZjxXZWJTV09yaWdpblRhYmxlPigpKQogewogICAgIEFTU0VSVChz
ZXNzaW9uSUQuaXNWYWxpZCgpKTsKLSAgICBib29sIHJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2Vz
OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6RXN0YWJsaXNoU1dTZXJ2ZXJDb25uZWN0
aW9uKHNlc3Npb25JRCksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
RXN0YWJsaXNoU1dTZXJ2ZXJDb25uZWN0aW9uOjpSZXBseShtX2lkZW50aWZpZXIpKTsKKyAgICBp
bml0aWFsaXplQ29ubmVjdGlvbklmTmVlZGVkKCk7Cit9CisKK1dlYlNXQ2xpZW50Q29ubmVjdGlv
bjo6fldlYlNXQ2xpZW50Q29ubmVjdGlvbigpCit7Cit9CisKK3ZvaWQgV2ViU1dDbGllbnRDb25u
ZWN0aW9uOjppbml0aWFsaXplQ29ubmVjdGlvbklmTmVlZGVkKCkKK3sKKyAgICBpZiAobV9jb25u
ZWN0aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvJiBuZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24gPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24oKTsKKworICAgIG1fY29ubmVjdGlvbiA9ICZuZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24u
Y29ubmVjdGlvbigpOworICAgIG1faWRlbnRpZmllciA9IG5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bi5pbml0aWFsaXplU1dDbGllbnRDb25uZWN0aW9uKCp0aGlzKTsKIAotICAgIEFTU0VSVF9VTlVT
RUQocmVzdWx0LCByZXN1bHQpOwogICAgIHVwZGF0ZVRocm90dGxlU3RhdGUoKTsKIH0KIAotV2Vi
U1dDbGllbnRDb25uZWN0aW9uOjp+V2ViU1dDbGllbnRDb25uZWN0aW9uKCkKK3RlbXBsYXRlPHR5
cGVuYW1lIFU+Cit2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6ZW5zdXJlQ29ubmVjdGlvbkFu
ZFNlbmQoY29uc3QgVSYgbWVzc2FnZSkKIHsKKyAgICBpbml0aWFsaXplQ29ubmVjdGlvbklmTmVl
ZGVkKCk7CisgICAgc2VuZChtZXNzYWdlKTsKIH0KIAogdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rp
b246OnNjaGVkdWxlSm9iSW5TZXJ2ZXIoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGEmIGpvYkRh
dGEpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpTY2hlZHVs
ZUpvYkluU2VydmVyKGpvYkRhdGEpKTsKKyAgICBlbnN1cmVDb25uZWN0aW9uQW5kU2VuZChNZXNz
YWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpTY2hlZHVsZUpvYkluU2VydmVyKGpvYkRhdGEp
KTsKIH0KIAogdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OmZpbmlzaEZldGNoaW5nU2NyaXB0
SW5TZXJ2ZXIoY29uc3QgU2VydmljZVdvcmtlckZldGNoUmVzdWx0JiByZXN1bHQpCiB7Ci0gICAg
c2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpGaW5pc2hGZXRjaGluZ1Njcmlw
dEluU2VydmVyKHJlc3VsdCkpOworICAgIGVuc3VyZUNvbm5lY3Rpb25BbmRTZW5kKE1lc3NhZ2Vz
OjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OkZpbmlzaEZldGNoaW5nU2NyaXB0SW5TZXJ2ZXIocmVz
dWx0KSk7CiB9CiAKIHZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjphZGRTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uSW5TZXJ2ZXIoU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIg
aWRlbnRpZmllcikKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246
OkFkZFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JblNlcnZlcihpZGVudGlmaWVyKSk7CisgICAg
ZW5zdXJlQ29ubmVjdGlvbkFuZFNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6
QWRkU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkluU2VydmVyKGlkZW50aWZpZXIpKTsKIH0KIAog
dm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OnJlbW92ZVNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25JblNlcnZlcihTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciBpZGVudGlmaWVy
KQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6UmVtb3ZlU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbkluU2VydmVyKGlkZW50aWZpZXIpKTsKKyAgICBlbnN1cmVD
b25uZWN0aW9uQW5kU2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpSZW1vdmVT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSW5TZXJ2ZXIoaWRlbnRpZmllcikpOwogfQogCiB2b2lk
IFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXIoU2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIgZGVzdGluYXRpb25JZGVudGlmaWVyLCBNZXNzYWdlV2l0aE1lc3Nh
Z2VQb3J0cyYmIG1lc3NhZ2UsIGNvbnN0IFNlcnZpY2VXb3JrZXJPckNsaWVudElkZW50aWZpZXIm
IHNvdXJjZUlkZW50aWZpZXIpCkBAIC05NiwxNyArMTEzLDE3IEBAIHZvaWQgV2ViU1dDbGllbnRD
b25uZWN0aW9uOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlcihTZXJ2aWNlV29ya2VySWRlbnRp
ZmllciBkCiAKIHZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjpyZWdpc3RlclNlcnZpY2VXb3Jr
ZXJDbGllbnQoY29uc3QgU2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbiwgY29uc3QgV2ViQ29yZTo6
U2VydmljZVdvcmtlckNsaWVudERhdGEmIGRhdGEsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyPiYgY29udHJvbGxpbmdTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQpCiB7Ci0g
ICAgc2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpSZWdpc3RlclNlcnZpY2VX
b3JrZXJDbGllbnQgeyB0b3BPcmlnaW4uZGF0YSgpLCBkYXRhLCBjb250cm9sbGluZ1NlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCB1c2VyQWdlbnQgfSk7CisgICAgZW5zdXJlQ29u
bmVjdGlvbkFuZFNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6UmVnaXN0ZXJT
ZXJ2aWNlV29ya2VyQ2xpZW50IHsgdG9wT3JpZ2luLmRhdGEoKSwgZGF0YSwgY29udHJvbGxpbmdT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgdXNlckFnZW50IH0pOwogfQogCiB2
b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6dW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQo
RG9jdW1lbnRJZGVudGlmaWVyIGNvbnRleHRJZGVudGlmaWVyKQogewotICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6VW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQg
eyBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciB7IHNlcnZlckNvbm5lY3Rpb25JZGVudGlm
aWVyKCksIGNvbnRleHRJZGVudGlmaWVyIH0gfSk7CisgICAgZW5zdXJlQ29ubmVjdGlvbkFuZFNl
bmQoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6VW5yZWdpc3RlclNlcnZpY2VXb3Jr
ZXJDbGllbnQgeyBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciB7IHNlcnZlckNvbm5lY3Rp
b25JZGVudGlmaWVyKCksIGNvbnRleHRJZGVudGlmaWVyIH0gfSk7CiB9CiAKIHZvaWQgV2ViU1dD
bGllbnRDb25uZWN0aW9uOjpkaWRSZXNvbHZlUmVnaXN0cmF0aW9uUHJvbWlzZShjb25zdCBTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiBrZXkpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uOjpEaWRSZXNvbHZlUmVnaXN0cmF0aW9uUHJvbWlzZShrZXkpKTsK
KyAgICBlbnN1cmVDb25uZWN0aW9uQW5kU2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0
aW9uOjpEaWRSZXNvbHZlUmVnaXN0cmF0aW9uUHJvbWlzZShrZXkpKTsKIH0KIAogYm9vbCBXZWJT
V0NsaWVudENvbm5lY3Rpb246Om1heUhhdmVTZXJ2aWNlV29ya2VyUmVnaXN0ZXJlZEZvck9yaWdp
bihjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbikgY29uc3QKQEAgLTE1NywyMyArMTc0
LDI1IEBAIHZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjptYXRjaFJlZ2lzdHJhdGlvbihTZWN1
cml0eU9yaWdpbkRhdGEmJiB0b3BPcmlnaW4sIGNvCiAgICAgcnVuT3JEZWxheVRhc2tGb3JJbXBv
cnQoW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHRvcE9yaWdpbiA9IFdURk1v
dmUodG9wT3JpZ2luKSwgY2xpZW50VVJMXSgpIG11dGFibGUgewogICAgICAgICB1aW50NjRfdCBj
YWxsYmFja0lEID0gKyttX3ByZXZpb3VzQ2FsbGJhY2tJZGVudGlmaWVyOwogICAgICAgICBtX29u
Z29pbmdNYXRjaFJlZ2lzdHJhdGlvblRhc2tzLmFkZChjYWxsYmFja0lELCBXVEZNb3ZlKGNhbGxi
YWNrKSk7Ci0gICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6TWF0
Y2hSZWdpc3RyYXRpb24oY2FsbGJhY2tJRCwgdG9wT3JpZ2luLCBjbGllbnRVUkwpKTsKKyAgICAg
ICAgZW5zdXJlQ29ubmVjdGlvbkFuZFNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlv
bjo6TWF0Y2hSZWdpc3RyYXRpb24oY2FsbGJhY2tJRCwgdG9wT3JpZ2luLCBjbGllbnRVUkwpKTsK
ICAgICB9KTsKIH0KIAogdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OnJ1bk9yRGVsYXlUYXNr
Rm9ySW1wb3J0KFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIHRhc2spCiB7Ci0gICAgaWYgKG1fc3dP
cmlnaW5UYWJsZS0+aXNJbXBvcnRlZCgpKQorICAgIGlmIChtX3N3T3JpZ2luVGFibGUtPmlzSW1w
b3J0ZWQoKSkgewogICAgICAgICB0YXNrKCk7Ci0gICAgZWxzZQotICAgICAgICBtX3Rhc2tzUGVu
ZGluZ09yaWdpbkltcG9ydC5hcHBlbmQoV1RGTW92ZSh0YXNrKSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisgICAgbV90YXNrc1BlbmRpbmdPcmlnaW5JbXBvcnQuYXBwZW5kKFdURk1vdmUodGFz
aykpOworICAgIGluaXRpYWxpemVDb25uZWN0aW9uSWZOZWVkZWQoKTsKIH0KIAogdm9pZCBXZWJT
V0NsaWVudENvbm5lY3Rpb246OndoZW5SZWdpc3RyYXRpb25SZWFkeShjb25zdCBTZWN1cml0eU9y
aWdpbiYgdG9wT3JpZ2luLCBjb25zdCBVUkwmIGNsaWVudFVSTCwgV2hlblJlZ2lzdHJhdGlvblJl
YWR5Q2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gKytt
X3ByZXZpb3VzQ2FsbGJhY2tJZGVudGlmaWVyOwogICAgIG1fb25nb2luZ1JlZ2lzdHJhdGlvblJl
YWR5VGFza3MuYWRkKGNhbGxiYWNrSUQsIFdURk1vdmUoY2FsbGJhY2spKTsKLSAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OldoZW5SZWdpc3RyYXRpb25SZWFkeShjYWxs
YmFja0lELCB0b3BPcmlnaW4uZGF0YSgpLCBjbGllbnRVUkwpKTsKKyAgICBlbnN1cmVDb25uZWN0
aW9uQW5kU2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpXaGVuUmVnaXN0cmF0
aW9uUmVhZHkoY2FsbGJhY2tJRCwgdG9wT3JpZ2luLmRhdGEoKSwgY2xpZW50VVJMKSk7CiB9CiAK
IHZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjpyZWdpc3RyYXRpb25SZWFkeSh1aW50NjRfdCBj
YWxsYmFja0lELCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YSYmIHJlZ2lz
dHJhdGlvbkRhdGEpCkBAIC0xOTUsMjcgKzIxNCwyOSBAQCB2b2lkIFdlYlNXQ2xpZW50Q29ubmVj
dGlvbjo6Z2V0UmVnaXN0cmF0aW9ucyhTZWN1cml0eU9yaWdpbkRhdGEmJiB0b3BPcmlnaW4sIGNv
bgogICAgIHJ1bk9yRGVsYXlUYXNrRm9ySW1wb3J0KFt0aGlzLCBjYWxsYmFjayA9IFdURk1vdmUo
Y2FsbGJhY2spLCB0b3BPcmlnaW4gPSBXVEZNb3ZlKHRvcE9yaWdpbiksIGNsaWVudFVSTF0oKSBt
dXRhYmxlIHsKICAgICAgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9ICsrbV9wcmV2aW91c0NhbGxi
YWNrSWRlbnRpZmllcjsKICAgICAgICAgbV9vbmdvaW5nR2V0UmVnaXN0cmF0aW9uc1Rhc2tzLmFk
ZChjYWxsYmFja0lELCBXVEZNb3ZlKGNhbGxiYWNrKSk7Ci0gICAgICAgIHNlbmQoTWVzc2FnZXM6
OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6R2V0UmVnaXN0cmF0aW9ucyhjYWxsYmFja0lELCB0b3BP
cmlnaW4sIGNsaWVudFVSTCkpOworICAgICAgICBlbnN1cmVDb25uZWN0aW9uQW5kU2VuZChNZXNz
YWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpHZXRSZWdpc3RyYXRpb25zKGNhbGxiYWNrSUQs
IHRvcE9yaWdpbiwgY2xpZW50VVJMKSk7CiAgICAgfSk7CiB9CiAKIHZvaWQgV2ViU1dDbGllbnRD
b25uZWN0aW9uOjpzdGFydEZldGNoKEZldGNoSWRlbnRpZmllciBmZXRjaElkZW50aWZpZXIsIFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25JZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IEZldGNo
T3B0aW9ucyYgb3B0aW9ucywgY29uc3QgU3RyaW5nJiByZWZlcnJlcikKIHsKLSAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OlN0YXJ0RmV0Y2ggeyBzZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uSWRlbnRpZmllciwgZmV0Y2hJZGVudGlmaWVyLCByZXF1ZXN0LCBvcHRpb25z
LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlIHsgcmVxdWVzdC5odHRwQm9keSgpIH0sIHJlZmVycmVy
IH0pOworICAgIGVuc3VyZUNvbm5lY3Rpb25BbmRTZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNv
bm5lY3Rpb246OlN0YXJ0RmV0Y2ggeyBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmll
ciwgZmV0Y2hJZGVudGlmaWVyLCByZXF1ZXN0LCBvcHRpb25zLCBJUEM6OkZvcm1EYXRhUmVmZXJl
bmNlIHsgcmVxdWVzdC5odHRwQm9keSgpIH0sIHJlZmVycmVyIH0pOwogfQogCiB2b2lkIFdlYlNX
Q2xpZW50Q29ubmVjdGlvbjo6Y2FuY2VsRmV0Y2goRmV0Y2hJZGVudGlmaWVyIGZldGNoSWRlbnRp
ZmllciwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgc2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbklkZW50aWZpZXIpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJD
b25uZWN0aW9uOjpDYW5jZWxGZXRjaCB7IHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlm
aWVyLCBmZXRjaElkZW50aWZpZXIgfSk7CisgICAgZW5zdXJlQ29ubmVjdGlvbkFuZFNlbmQoTWVz
c2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6Q2FuY2VsRmV0Y2ggeyBzZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uSWRlbnRpZmllciwgZmV0Y2hJZGVudGlmaWVyIH0pOwogfQogCiB2b2lkIFdl
YlNXQ2xpZW50Q29ubmVjdGlvbjo6Y29udGludWVEaWRSZWNlaXZlRmV0Y2hSZXNwb25zZShGZXRj
aElkZW50aWZpZXIgZmV0Y2hJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRl
bnRpZmllciBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcikKIHsKLSAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OkNvbnRpbnVlRGlkUmVjZWl2ZUZldGNo
UmVzcG9uc2UgeyBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgZmV0Y2hJZGVu
dGlmaWVyIH0pOworICAgIGVuc3VyZUNvbm5lY3Rpb25BbmRTZW5kKE1lc3NhZ2VzOjpXZWJTV1Nl
cnZlckNvbm5lY3Rpb246OkNvbnRpbnVlRGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UgeyBzZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgZmV0Y2hJZGVudGlmaWVyIH0pOwogfQogCiB2
b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6Y29ubmVjdGlvblRvU2VydmVyTG9zdCgpCiB7Cisg
ICAgbV9jb25uZWN0aW9uID0gbnVsbHB0cjsKKwogICAgIGF1dG8gcmVnaXN0cmF0aW9uVGFza3Mg
PSBXVEZNb3ZlKG1fb25nb2luZ01hdGNoUmVnaXN0cmF0aW9uVGFza3MpOwogICAgIGZvciAoYXV0
byYgY2FsbGJhY2sgOiByZWdpc3RyYXRpb25UYXNrcy52YWx1ZXMoKSkKICAgICAgICAgY2FsbGJh
Y2soV1RGOjpudWxsb3B0KTsKQEAgLTIyOSwxMyArMjUwLDIxIEBAIHZvaWQgV2ViU1dDbGllbnRD
b25uZWN0aW9uOjpjb25uZWN0aW9uVG9TZXJ2ZXJMb3N0KCkKIAogdm9pZCBXZWJTV0NsaWVudENv
bm5lY3Rpb246OnN5bmNUZXJtaW5hdGVXb3JrZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRl
bnRpZmllcikKIHsKKyAgICBpbml0aWFsaXplQ29ubmVjdGlvbklmTmVlZGVkKCk7CisKICAgICBz
ZW5kU3luYyhNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpTeW5jVGVybWluYXRlV29y
a2VyRnJvbUNsaWVudChpZGVudGlmaWVyKSwgTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlv
bjo6U3luY1Rlcm1pbmF0ZVdvcmtlckZyb21DbGllbnQ6OlJlcGx5KCkpOwogfQogCitXZWJDb3Jl
OjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6c2Vy
dmVyQ29ubmVjdGlvbklkZW50aWZpZXIoKSBjb25zdAoreworICAgIGNvbnN0X2Nhc3Q8V2ViU1dD
bGllbnRDb25uZWN0aW9uKj4odGhpcyktPmluaXRpYWxpemVDb25uZWN0aW9uSWZOZWVkZWQoKTsK
KyAgICByZXR1cm4gbV9pZGVudGlmaWVyOworfQorCiB2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlv
bjo6dXBkYXRlVGhyb3R0bGVTdGF0ZSgpCiB7CiAgICAgbV9pc1Rocm90dGxlYWJsZSA9IFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLmFyZUFsbFBhZ2VzVGhyb3R0bGVhYmxlKCk7Ci0gICAgc2VuZChN
ZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpTZXRUaHJvdHRsZVN0YXRlIHsgbV9pc1Ro
cm90dGxlYWJsZSB9KTsKKyAgICBlbnN1cmVDb25uZWN0aW9uQW5kU2VuZChNZXNzYWdlczo6V2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uOjpTZXRUaHJvdHRsZVN0YXRlIHsgbV9pc1Rocm90dGxlYWJsZSB9
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5oCmluZGV4IDUxNzdh
MzQ5MTNiMGQzYTJmNzhhZmViMWJlOTkxMGNlYTg4OWUzMjEuLjFlZTcyODQ0NjQ4YjA5ZWZmNjAx
NmMzMTYxZWJiYzNlMTMyOTA5YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5oCkBAIC00NywxMiArNDcsMTIg
QEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJTV09yaWdpblRhYmxlOwogY2xhc3MgV2Vi
U2VydmljZVdvcmtlclByb3ZpZGVyOwogCi1jbGFzcyBXZWJTV0NsaWVudENvbm5lY3Rpb24gZmlu
YWwgOiBwdWJsaWMgV2ViQ29yZTo6U1dDbGllbnRDb25uZWN0aW9uLCBwdWJsaWMgSVBDOjpNZXNz
YWdlU2VuZGVyLCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworY2xhc3MgV2ViU1dDbGll
bnRDb25uZWN0aW9uIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlNXQ2xpZW50Q29ubmVjdGlvbiwg
cHJpdmF0ZSBJUEM6Ok1lc3NhZ2VTZW5kZXIsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJTV0NsaWVudENvbm5lY3Rpb24+IGNyZWF0ZShJ
UEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgeyBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJTV0NsaWVudENvbm5lY3Rpb24geyBjb25uZWN0aW9uLCBz
ZXNzaW9uSUQgfSk7IH0KKyAgICBzdGF0aWMgUmVmPFdlYlNXQ2xpZW50Q29ubmVjdGlvbj4gY3Jl
YXRlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJT
V0NsaWVudENvbm5lY3Rpb24geyBzZXNzaW9uSUQgfSk7IH0KICAgICB+V2ViU1dDbGllbnRDb25u
ZWN0aW9uKCk7CiAKLSAgICBXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIHNl
cnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pZGVudGlm
aWVyOyB9CisgICAgV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBzZXJ2ZXJD
b25uZWN0aW9uSWRlbnRpZmllcigpIGNvbnN0IGZpbmFsOwogCiAgICAgdm9pZCBhZGRTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uSW5TZXJ2ZXIoV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbklkZW50aWZpZXIpIGZpbmFsOwogICAgIHZvaWQgcmVtb3ZlU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbkluU2VydmVyKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlm
aWVyKSBmaW5hbDsKQEAgLTY5LDggKzY5LDEyIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc3luY1Rl
cm1pbmF0ZVdvcmtlcihXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcikgZmluYWw7CiAK
KyAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdCB7IHJldHVybiBtX3Nlc3Npb25J
RDsgfQorCiBwcml2YXRlOgotICAgIFdlYlNXQ2xpZW50Q29ubmVjdGlvbihJUEM6OkNvbm5lY3Rp
b24mLCBQQUw6OlNlc3Npb25JRCk7CisgICAgZXhwbGljaXQgV2ViU1dDbGllbnRDb25uZWN0aW9u
KFBBTDo6U2Vzc2lvbklEKTsKKworICAgIHZvaWQgaW5pdGlhbGl6ZUNvbm5lY3Rpb25JZk5lZWRl
ZCgpOwogCiAgICAgdm9pZCBzY2hlZHVsZUpvYkluU2VydmVyKGNvbnN0IFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJKb2JEYXRhJikgZmluYWw7CiAgICAgdm9pZCBmaW5pc2hGZXRjaGluZ1NjcmlwdElu
U2VydmVyKGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdCYpIGZpbmFsOwpA
QCAtOTQsMTYgKzk4LDE4IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHJ1bk9yRGVsYXlUYXNrRm9y
SW1wb3J0KFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIHRhc2spOwogCi0gICAgSVBDOjpDb25uZWN0
aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fY29u
bmVjdGlvbi5wdHIoKTsgfQorICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5l
Y3Rpb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2Nvbm5lY3Rpb24uZ2V0KCk7IH0KICAgICB1
aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IG1faWRlbnRpZmllci50b1VJbnQ2NCgpOyB9CiAKICAgICB2b2lkIHNldFNXT3JpZ2luVGFibGVT
aGFyZWRNZW1vcnkoY29uc3QgU2hhcmVkTWVtb3J5OjpIYW5kbGUmKTsKICAgICB2b2lkIHNldFNX
T3JpZ2luVGFibGVJc0ltcG9ydGVkKCk7CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiB2b2lk
IGVuc3VyZUNvbm5lY3Rpb25BbmRTZW5kKGNvbnN0IFUmIG1lc3NhZ2UpOworCiAgICAgUEFMOjpT
ZXNzaW9uSUQgbV9zZXNzaW9uSUQ7CiAgICAgV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRl
bnRpZmllciBtX2lkZW50aWZpZXI7CiAKLSAgICBSZWY8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5l
Y3Rpb247CisgICAgUmVmUHRyPElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOwogICAgIFVu
aXF1ZVJlZjxXZWJTV09yaWdpblRhYmxlPiBtX3N3T3JpZ2luVGFibGU7CiAKICAgICB1aW50NjRf
dCBtX3ByZXZpb3VzQ2FsbGJhY2tJZGVudGlmaWVyIHsgMCB9OwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDUxZGQyNGZlMGQ5
YzYxNGMzNzc3NzczOGY5NGI2OWJlYzdjOTExMWEuLjQ1ZDJlOWZhMmYwNTNmN2JhYWQxY2ExOGRh
NDA2YzE1NmFhNTU3YzAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxOS0wNS0yOSAgWW91ZW5u
IEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVlc3RhYmxpc2ggV2ViU1dD
bGllbnRDb25uZWN0aW9uIGluIGNhc2Ugb2YgbmV0d29yayBwcm9jZXNzIGNyYXNoCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTgzMzMKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0dHAvd3B0L3NlcnZp
Y2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1uZXR3b3JrcHJvY2Vzcy1jcmFzaC1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdv
cmtlci1uZXR3b3JrcHJvY2Vzcy1jcmFzaC5odG1sOiBBZGRlZC4KKwogMjAxOS0wNS0yOCAgWWFj
aW5lIEJhbmRvdSAgPHlhY2luZS5iYW5kb3VAc29mdGF0aG9tZS5jb20+CiAKICAgICAgICAgW01T
RV1bR1N0cmVhbWVyXSB1cGRhdGUgdGhlIHJlYWR5U3RhdGUgY29ycmVjdGx5IGluIE1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lck1TRQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQv
c2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLW5ldHdvcmtwcm9jZXNzLWNyYXNoLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdv
cmtlci1uZXR3b3JrcHJvY2Vzcy1jcmFzaC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTJkZWEw
ZmI5MWIxMDQxNmQwNDliYzYxMzI5ZGVmOTkwZDNlYmVhNgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1uZXR3b3Jr
cHJvY2Vzcy1jcmFzaC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1IEBACisKK1BBU1MgU2V0dXAg
d29ya2VyIAorUEFTUyBGcmFtZSBiZWluZyBjb250cm9sbGVkIAorUEFTUyBGcmFtZSBiZWluZyBj
b250cm9sbGVkIGFmdGVyIG5ldHdvcmsgcHJvY2VzcyBjcmFzaCAKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLW5ldHdvcmtw
cm9jZXNzLWNyYXNoLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMv
c2VydmljZS13b3JrZXItbmV0d29ya3Byb2Nlc3MtY3Jhc2guaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MDQy
MGMyZWUwNDc4MTBmZTUxMDFhMjAxYmE3NmM4ZjNkNWE4Yjg2Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLW5ldHdv
cmtwcm9jZXNzLWNyYXNoLmh0bWwKQEAgLTAsMCArMSw1OCBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorPHRpdGxlPkNhY2hlIFN0b3JhZ2U6IG5ldHdvcmsgcHJvY2VzcyBjcmFz
aDwvdGl0bGU+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+Cit2YXIgc2NvcGUgPSAiL1dlYktpdC9zZXJ2
aWNlLXdvcmtlcnMvcmVzb3VyY2VzIjsKKworZnVuY3Rpb24gd2l0aEZyYW1lKHVybCkKK3sKKyAg
ICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHsKKyAgICAgICAgbGV0IGZyYW1lID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaWZyYW1lJyk7CisgICAgICAgIGZyYW1lLnNyYyA9IHVy
bDsKKyAgICAgICAgZnJhbWUub25sb2FkID0gZnVuY3Rpb24oKSB7IHJlc29sdmUoZnJhbWUpOyB9
OworICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGZyYW1lKTsKKyAgICB9KTsKK30K
KworYXN5bmMgZnVuY3Rpb24gcmVnaXN0ZXJTZXJ2aWNlV29ya2VyKCkKK3sKKyAgICB2YXIgcmVn
aXN0cmF0aW9uID0gYXdhaXQgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoImZldGNo
RXZlbnQtd29ya2VyLmpzIiwgeyBzY29wZSA6IHNjb3BlIH0pOworICAgIHZhciBhY3RpdmVXb3Jr
ZXIgPSByZWdpc3RyYXRpb24uYWN0aXZlOworICAgIGlmIChhY3RpdmVXb3JrZXIpCisgICAgICAg
IHJldHVybjsKKyAgICBhY3RpdmVXb3JrZXIgPSByZWdpc3RyYXRpb24uaW5zdGFsbGluZzsKKyAg
ICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7CisgICAgICAgIGFjdGl2ZVdvcmtlci5h
ZGRFdmVudExpc3RlbmVyKCdzdGF0ZWNoYW5nZScsICgpID0+IHsKKyAgICAgICAgICAgIGlmIChh
Y3RpdmVXb3JrZXIuc3RhdGUgPT09ICJhY3RpdmF0ZWQiKQorICAgICAgICAgICAgICAgIHJlc29s
dmUocmVnaXN0cmF0aW9uKTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9CisKK3Byb21pc2VfdGVz
dChhc3luYyAodGVzdCkgPT4geworICAgIGF3YWl0IHJlZ2lzdGVyU2VydmljZVdvcmtlcigpOwor
fSwgIlNldHVwIHdvcmtlciIpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKKyAg
ICBjb25zdCBmcmFtZSA9IGF3YWl0IHdpdGhGcmFtZShzY29wZSArICIvZW1wdHkuaHRtbCIpOwor
ICAgIGFzc2VydF9ub3RfZXF1YWxzKGZyYW1lLmNvbnRlbnRXaW5kb3cubmF2aWdhdG9yLnNlcnZp
Y2VXb3JrZXIuY29udHJvbGxlciwgbnVsbCk7CisgICAgZnJhbWUucmVtb3ZlKCk7Cit9LCAiRnJh
bWUgYmVpbmcgY29udHJvbGxlZCIpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsK
KyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIgJiYgd2luZG93LnRlc3RSdW5uZXIudGVybWluYXRl
TmV0d29ya1Byb2Nlc3MpCisgICAgICAgIHRlc3RSdW5uZXIudGVybWluYXRlTmV0d29ya1Byb2Nl
c3MoKTsKKworICAgIGNvbnN0IGZyYW1lID0gYXdhaXQgd2l0aEZyYW1lKHNjb3BlICsgIi9lbXB0
eS5odG1sIik7CisgICAgYXNzZXJ0X25vdF9lcXVhbHMoZnJhbWUuY29udGVudFdpbmRvdy5uYXZp
Z2F0b3Iuc2VydmljZVdvcmtlci5jb250cm9sbGVyLCBudWxsKTsKKyAgICBmcmFtZS5yZW1vdmUo
KTsKK30sICJGcmFtZSBiZWluZyBjb250cm9sbGVkIGFmdGVyIG5ldHdvcmsgcHJvY2VzcyBjcmFz
aCIpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisK
</data>

          </attachment>
      

    </bug>

</bugzilla>