<?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>202553</bug_id>
          
          <creation_ts>2019-10-03 17:50:13 -0700</creation_ts>
          <short_desc>Move WKProcessPool._registerURLSchemeServiceWorkersCanHandle to _WKWebsiteDataStoreConfiguration</short_desc>
          <delta_ts>2019-10-11 09:18:20 -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>New Bugs</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=202850</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="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>aakash_jain</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1576661</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-10-03 17:50:13 -0700</bug_when>
    <thetext>Move WKProcessPool._registerURLSchemeServiceWorkersCanHandle to _WKWebsiteDataStoreConfiguration</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1576662</commentid>
    <comment_count>1</comment_count>
      <attachid>380171</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-10-03 17:52:24 -0700</bug_when>
    <thetext>Created attachment 380171
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1576668</commentid>
    <comment_count>2</comment_count>
      <attachid>380175</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-10-03 18:03:57 -0700</bug_when>
    <thetext>Created attachment 380175
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1576856</commentid>
    <comment_count>3</comment_count>
      <attachid>380175</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-10-04 07:54:25 -0700</bug_when>
    <thetext>Comment on attachment 380175
Patch

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

&gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:2429
&gt; +void NetworkProcess::addServiceWorkerSession(PAL::SessionID sessionID, bool processTerminationDelayEnabled, HashSet&lt;String&gt;&amp;&amp; registeredSchemes, String&amp; serviceWorkerRegistrationDirectory, const SandboxExtension::Handle&amp; handle)

Seems strange to have a String&amp; serviceWorkerRegistrationDirectory.
I guess this would be a String&amp;&amp; ideally.

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/ServiceWorkerBasic.mm:489
&gt; +    [dataStore removeDataOfTypes:[WKWebsiteDataStore allWebsiteDataTypes] modifiedSince:[NSDate distantPast] completionHandler:^() {

It might be good to leave a test using the default data store.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1576888</commentid>
    <comment_count>4</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-10-04 09:43:36 -0700</bug_when>
    <thetext>Done, and done!

http://trac.webkit.org/r250728</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1576890</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-10-04 09:44:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/55985536&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380171</attachid>
            <date>2019-10-03 17:52:24 -0700</date>
            <delta_ts>2019-10-03 18:03:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202553-20191003175224.patch</filename>
            <type>text/plain</type>
            <size>70995</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1MDY2NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDE5LTEwLTAzICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTW92ZSBXS1By
b2Nlc3NQb29sLl9yZWdpc3RlclVSTFNjaGVtZVNlcnZpY2VXb3JrZXJzQ2FuSGFuZGxlIHRvIF9X
S1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDI1NTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OlNXU2VydmVyKToKKyAgICAgICAgKiB3
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTV1Nl
cnZlcjo6cmVnaXN0ZXJlZFNjaGVtZXMgY29uc3QpOgorICAgICAgICAqIHdvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZl
ckpvYlF1ZXVlOjpydW5SZWdpc3RlckpvYik6CisKIDIwMTktMTAtMDMgIHlvdWVubiBmYWJsZXQg
IDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlZ3Jlc3Npb246IGlPUyAxMy4xIE1lZGlh
U3RyZWFtVHJhY2suZW5hYmxlZCA9IGZhbHNlIGtpbGxzIGF1ZGlvIHRyYWNrCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAko
cmV2aXNpb24gMjUwNjY1KQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5OSwxMCArMjk5LDExIEBAIHZvaWQg
U1dTZXJ2ZXI6OkNvbm5lY3Rpb246OnN5bmNUZXJtaW5hdGUKICAgICAgICAgbV9zZXJ2ZXIuc3lu
Y1Rlcm1pbmF0ZVdvcmtlcigqd29ya2VyKTsKIH0KIAotU1dTZXJ2ZXI6OlNXU2VydmVyKFVuaXF1
ZVJlZjxTV09yaWdpblN0b3JlPiYmIG9yaWdpblN0b3JlLCBib29sIHByb2Nlc3NUZXJtaW5hdGlv
bkRlbGF5RW5hYmxlZCwgU3RyaW5nJiYgcmVnaXN0cmF0aW9uRGF0YWJhc2VEaXJlY3RvcnksIFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ3JlYXRlQ29udGV4dENvbm5lY3Rpb25DYWxsYmFjayYm
IGNhbGxiYWNrKQorU1dTZXJ2ZXI6OlNXU2VydmVyKFVuaXF1ZVJlZjxTV09yaWdpblN0b3JlPiYm
IG9yaWdpblN0b3JlLCBIYXNoU2V0PFN0cmluZz4mJiByZWdpc3RlcmVkU2NoZW1lcywgYm9vbCBw
cm9jZXNzVGVybWluYXRpb25EZWxheUVuYWJsZWQsIFN0cmluZyYmIHJlZ2lzdHJhdGlvbkRhdGFi
YXNlRGlyZWN0b3J5LCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENyZWF0ZUNvbnRleHRDb25u
ZWN0aW9uQ2FsbGJhY2smJiBjYWxsYmFjaykKICAgICA6IG1fb3JpZ2luU3RvcmUoV1RGTW92ZShv
cmlnaW5TdG9yZSkpCiAgICAgLCBtX3Nlc3Npb25JRChzZXNzaW9uSUQpCiAgICAgLCBtX2lzUHJv
Y2Vzc1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVkKHByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5RW5hYmxl
ZCkKKyAgICAsIG1fcmVnaXN0ZXJlZFNjaGVtZXMoV1RGTW92ZShyZWdpc3RlcmVkU2NoZW1lcykp
CiAgICAgLCBtX2NyZWF0ZUNvbnRleHRDb25uZWN0aW9uQ2FsbGJhY2soV1RGTW92ZShjYWxsYmFj
aykpCiB7CiAgICAgQVNTRVJUKCFyZWdpc3RyYXRpb25EYXRhYmFzZURpcmVjdG9yeS5pc0VtcHR5
KCkgfHwgbV9zZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCShyZXZpc2lvbiAyNTA2NjUp
CisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEyNSw3ICsxMjUsNyBAQCBwdWJsaWM6CiAgICAgfTsKIAogICAgIHVz
aW5nIENyZWF0ZUNvbnRleHRDb25uZWN0aW9uQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKGNvbnN0
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJik+OwotICAgIFdFQkNPUkVfRVhQT1JUIFNXU2Vy
dmVyKFVuaXF1ZVJlZjxTV09yaWdpblN0b3JlPiYmLCBib29sIHByb2Nlc3NUZXJtaW5hdGlvbkRl
bGF5RW5hYmxlZCwgU3RyaW5nJiYgcmVnaXN0cmF0aW9uRGF0YWJhc2VEaXJlY3RvcnksIFBBTDo6
U2Vzc2lvbklELCBDcmVhdGVDb250ZXh0Q29ubmVjdGlvbkNhbGxiYWNrJiYpOworICAgIFdFQkNP
UkVfRVhQT1JUIFNXU2VydmVyKFVuaXF1ZVJlZjxTV09yaWdpblN0b3JlPiYmLCBIYXNoU2V0PFN0
cmluZz4mJiByZWdpc3RlcmVkU2NoZW1lcywgYm9vbCBwcm9jZXNzVGVybWluYXRpb25EZWxheUVu
YWJsZWQsIFN0cmluZyYmIHJlZ2lzdHJhdGlvbkRhdGFiYXNlRGlyZWN0b3J5LCBQQUw6OlNlc3Np
b25JRCwgQ3JlYXRlQ29udGV4dENvbm5lY3Rpb25DYWxsYmFjayYmKTsKIAogICAgIFdFQkNPUkVf
RVhQT1JUIH5TV1NlcnZlcigpOwogCkBAIC0xNjQsNiArMTY0LDcgQEAgcHVibGljOgogICAgIENv
bm5lY3Rpb24qIGNvbm5lY3Rpb24oU1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBpZGVudGlm
aWVyKSBjb25zdCB7IHJldHVybiBtX2Nvbm5lY3Rpb25zLmdldChpZGVudGlmaWVyKTsgfQogCiAg
ICAgY29uc3QgSGFzaE1hcDxTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBzdGQ6OnVuaXF1
ZV9wdHI8Q29ubmVjdGlvbj4+JiBjb25uZWN0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fY29ubmVj
dGlvbnM7IH0KKyAgICBjb25zdCBIYXNoU2V0PFN0cmluZz4gcmVnaXN0ZXJlZFNjaGVtZXMoKSBj
b25zdCB7IHJldHVybiBtX3JlZ2lzdGVyZWRTY2hlbWVzOyB9CiAKICAgICBTV09yaWdpblN0b3Jl
JiBvcmlnaW5TdG9yZSgpIHsgcmV0dXJuIG1fb3JpZ2luU3RvcmU7IH0KIApAQCAtMjU1LDYgKzI1
Niw3IEBAIHByaXZhdGU6CiAgICAgUEFMOjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7CiAgICAgYm9v
bCBtX2ltcG9ydENvbXBsZXRlZCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2lzUHJvY2Vzc1Rlcm1p
bmF0aW9uRGVsYXlFbmFibGVkIHsgdHJ1ZSB9OworICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3JlZ2lz
dGVyZWRTY2hlbWVzOwogICAgIFZlY3RvcjxDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+PiBtX2Ns
ZWFyQ29tcGxldGlvbkNhbGxiYWNrczsKICAgICBWZWN0b3I8RnVuY3Rpb248dm9pZChjb25zdCBI
YXNoU2V0PFNlY3VyaXR5T3JpZ2luRGF0YT4mKT4+IG1fZ2V0T3JpZ2luc1dpdGhSZWdpc3RyYXRp
b25zQ2FsbGJhY2tzOwogICAgIEhhc2hNYXA8UmVnaXN0cmFibGVEb21haW4sIFNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbio+IG1fY29udGV4dENvbm5lY3Rpb25zOwpJbmRleDogU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9i
UXVldWUuY3BwCShyZXZpc2lvbiAyNTA2NjUpCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjAs
NyArMjYwLDcgQEAgdm9pZCBTV1NlcnZlckpvYlF1ZXVlOjpydW5SZWdpc3RlckpvYihjbwogewog
ICAgIEFTU0VSVChqb2IudHlwZSA9PSBTZXJ2aWNlV29ya2VySm9iVHlwZTo6UmVnaXN0ZXIpOwog
Ci0gICAgaWYgKCFzaG91bGRUcmVhdEFzUG90ZW50aWFsbHlUcnVzdHdvcnRoeShqb2Iuc2NyaXB0
VVJMKSAmJiAhU2NoZW1lUmVnaXN0cnk6OmlzU2VydmljZVdvcmtlckNvbnRhaW5lckN1c3RvbVNj
aGVtZShqb2Iuc2NyaXB0VVJMLnByb3RvY29sKCkudG9TdHJpbmdXaXRob3V0Q29weWluZygpKSkK
KyAgICBpZiAoIXNob3VsZFRyZWF0QXNQb3RlbnRpYWxseVRydXN0d29ydGh5KGpvYi5zY3JpcHRV
UkwpICYmICFtX3NlcnZlci5yZWdpc3RlcmVkU2NoZW1lcygpLmNvbnRhaW5zKGpvYi5zY3JpcHRV
UkwucHJvdG9jb2woKS50b1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkpKQogICAgICAgICByZXR1cm4g
cmVqZWN0Q3VycmVudEpvYihFeGNlcHRpb25EYXRhIHsgU2VjdXJpdHlFcnJvciwgIlNjcmlwdCBV
UkwgaXMgbm90IHBvdGVudGlhbGx5IHRydXN0d29ydGh5Il9zIH0pOwogCiAgICAgLy8gSWYgdGhl
IG9yaWdpbiBvZiBqb2IncyBzY3JpcHQgdXJsIGlzIG5vdCBqb2IncyByZWZlcnJlcidzIG9yaWdp
biwgdGhlbjoKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTA2NzcpCisrKyBTb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ3IEBACisyMDE5LTEwLTAzICBB
bGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTW92
ZSBXS1Byb2Nlc3NQb29sLl9yZWdpc3RlclVSTFNjaGVtZVNlcnZpY2VXb3JrZXJzQ2FuSGFuZGxl
IHRvIF9XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDI1NTMKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJdCB3YXMgb25seSB1c2VkIGZvciB0ZXN0aW5n
LCBhbmQgYWxsIHRoZSB0ZXN0cyB0aGF0IHVzZSBpdCBzdGlsbCBwYXNzIHdpdGggdGhlIG5ldyBT
UEkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjppbml0aWFsaXplTmV0d29ya1Byb2Nlc3MpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6YWRkV2Vic2l0ZURhdGFTdG9yZSk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzd1NlcnZlckZvclNlc3Npb24pOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6YWRkU2VydmljZVdvcmtlclNlc3Npb24pOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAgICogU2hh
cmVkL0F1eGlsaWFyeVByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpBdXhpbGlhcnlQcm9j
ZXNzOjpyZWdpc3RlclVSTFNjaGVtZVNlcnZpY2VXb3JrZXJzQ2FuSGFuZGxlIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBTaGFyZWQvQXV4aWxpYXJ5UHJvY2Vzcy5oOgorICAgICAgICAqIFNo
YXJlZC9BdXhpbGlhcnlQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFNoYXJlZC9XZWJz
aXRlRGF0YVN0b3JlUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRh
U3RvcmVQYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRl
RGF0YVN0b3JlUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2Vic2l0ZURh
dGFTdG9yZVBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJv
Y2Vzc1Bvb2wubW06CisgICAgICAgICgtW1dLUHJvY2Vzc1Bvb2wgX3JlZ2lzdGVyVVJMU2NoZW1l
U2VydmljZVdvcmtlcnNDYW5IYW5kbGU6XSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLm1tOgor
ICAgICAgICAoLVtfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiByZWdpc3RlclVSTFNj
aGVtZVNlcnZpY2VXb3JrZXJzQ2FuSGFuZGxlRm9yVGVzdGluZzpdKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9v
bDo6ZW5zdXJlTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9v
bDo6aW5pdGlhbGl6ZU5ld1dlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
UG9vbDo6cmVnaXN0ZXJVUkxTY2hlbWVTZXJ2aWNlV29ya2Vyc0NhbkhhbmRsZSk6IERlbGV0ZWQu
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbToKKyAgICAgICAg
KFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6cGFyYW1ldGVycyk6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OmNvcHkpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5o
OgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6c2Vydmlj
ZVdvcmtlclJlZ2lzdGVyZWRTY2hlbWVzIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0
ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OnJlZ2lzdGVyU2VydmljZVdvcmtlclNjaGVtZSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nlc3MpOgorCiAyMDE5LTEwLTAzICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVwbGFjZSBfV0tQ
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uc3VwcHJlc3Nlc0Nvbm5lY3Rpb25UZXJtaW5hdGlvbk9u
U3lzdGVtQ2hhbmdlIHdpdGggU1BJIG9uIF9XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9u
CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmNwcAkocmV2aXNpb24gMjUwNjY1KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyMywxMCArMzIzLDcgQEAgdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6aW5pdGlhbGl6ZU5ldHdvcmtQcgogI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKICAgICBpZiAocGFyZW50UHJvY2Vzc0hhc1NlcnZpY2VXb3JrZXJFbnRpdGxlbWVu
dCgpKSB7CiAgICAgICAgIGJvb2wgc2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5
RW5hYmxlZCA9IHRydWU7Ci0gICAgICAgIGFkZFNlcnZpY2VXb3JrZXJTZXNzaW9uKFBBTDo6U2Vz
c2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCksIHNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRp
b25EZWxheUVuYWJsZWQsIHBhcmFtZXRlcnMuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVj
dG9yeSwgcGFyYW1ldGVycy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5RXh0ZW5z
aW9uSGFuZGxlKTsKLQotICAgICAgICBmb3IgKGF1dG8mIHNjaGVtZSA6IHBhcmFtZXRlcnMudXJs
U2NoZW1lc1NlcnZpY2VXb3JrZXJzQ2FuSGFuZGxlKQotICAgICAgICAgICAgcmVnaXN0ZXJVUkxT
Y2hlbWVTZXJ2aWNlV29ya2Vyc0NhbkhhbmRsZShzY2hlbWUpOworICAgICAgICBhZGRTZXJ2aWNl
V29ya2VyU2Vzc2lvbihQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpLCBzZXJ2aWNl
V29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVkLCB7IH0sIHBhcmFtZXRlcnMuc2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSwgcGFyYW1ldGVycy5zZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKICAgICB9CiAjZW5kaWYKICAg
ICBpbml0aWFsaXplU3RvcmFnZVF1b3RhKHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFt
ZXRlcnMpOwpAQCAtNDUyLDcgKzQ0OSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmFkZFdlYnNp
dGVEYXRhU3RvcmUKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBpZiAocGFyZW50
UHJvY2Vzc0hhc1NlcnZpY2VXb3JrZXJFbnRpdGxlbWVudCgpKQotICAgICAgICBhZGRTZXJ2aWNl
V29ya2VyU2Vzc2lvbihwYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5zZXNzaW9u
SUQsIHBhcmFtZXRlcnMuc2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5RW5hYmxl
ZCwgcGFyYW1ldGVycy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5LCBwYXJhbWV0
ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwor
ICAgICAgICBhZGRTZXJ2aWNlV29ya2VyU2Vzc2lvbihwYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9u
UGFyYW1ldGVycy5zZXNzaW9uSUQsIHBhcmFtZXRlcnMuc2VydmljZVdvcmtlclByb2Nlc3NUZXJt
aW5hdGlvbkRlbGF5RW5hYmxlZCwgV1RGTW92ZShwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdp
c3RlcmVkU2NoZW1lcyksIHBhcmFtZXRlcnMuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVj
dG9yeSwgcGFyYW1ldGVycy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5RXh0ZW5z
aW9uSGFuZGxlKTsKICNlbmRpZgogCiAgICAgbV9zdG9yYWdlTWFuYWdlclNldC0+YWRkKHBhcmFt
ZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnNlc3Npb25JRCwgcGFyYW1ldGVycy5sb2Nh
bFN0b3JhZ2VEaXJlY3RvcnksIHBhcmFtZXRlcnMubG9jYWxTdG9yYWdlRGlyZWN0b3J5RXh0ZW5z
aW9uSGFuZGxlKTsKQEAgLTIzOTMsMTEgKzIzOTAsMTIgQEAgU1dTZXJ2ZXImIE5ldHdvcmtQcm9j
ZXNzOjpzd1NlcnZlckZvclNlcwogICAgIGF1dG8gcmVzdWx0ID0gbV9zd1NlcnZlcnMuZW5zdXJl
KHNlc3Npb25JRCwgWyZdIHsKICAgICAgICAgYXV0byBpbmZvID0gbV9zZXJ2aWNlV29ya2VySW5m
by5nZXQoc2Vzc2lvbklEKTsKICAgICAgICAgYXV0byBwYXRoID0gaW5mby5kYXRhYmFzZVBhdGg7
CisgICAgICAgIGF1dG8gcmVnaXN0ZXJlZFNjaGVtZXMgPSBpbmZvLnJlZ2lzdGVyZWRTY2hlbWVz
OwogICAgICAgICAvLyBUaGVyZSBzaG91bGQgYWxyZWFkeSBiZSBhIHJlZ2lzdGVyZWQgcGF0aCBm
b3IgdGhpcyBQQUw6OlNlc3Npb25JRC4KICAgICAgICAgLy8gSWYgdGhlcmUncyBub3QsIHRoZW4g
d2hlcmUgZGlkIHRoaXMgUEFMOjpTZXNzaW9uSUQgY29tZSBmcm9tPwogICAgICAgICBBU1NFUlQo
c2Vzc2lvbklELmlzRXBoZW1lcmFsKCkgfHwgIXBhdGguaXNFbXB0eSgpKTsKIAotICAgICAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxTV1NlcnZlcj4obWFrZVVuaXF1ZVJlZjxXZWJTV09yaWdpblN0b3Jl
PigpLCBpbmZvLnByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5RW5hYmxlZCwgV1RGTW92ZShwYXRoKSwg
c2Vzc2lvbklELCBbdGhpcywgc2Vzc2lvbklEXShhdXRvJiByZWdpc3RyYWJsZURvbWFpbikgewor
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTV1NlcnZlcj4obWFrZVVuaXF1ZVJlZjxXZWJTV09y
aWdpblN0b3JlPigpLCBXVEZNb3ZlKHJlZ2lzdGVyZWRTY2hlbWVzKSwgaW5mby5wcm9jZXNzVGVy
bWluYXRpb25EZWxheUVuYWJsZWQsIFdURk1vdmUocGF0aCksIHNlc3Npb25JRCwgW3RoaXMsIHNl
c3Npb25JRF0oYXV0byYgcmVnaXN0cmFibGVEb21haW4pIHsKICAgICAgICAgICAgIEFTU0VSVCgh
cmVnaXN0cmFibGVEb21haW4uaXNFbXB0eSgpKTsKICAgICAgICAgICAgIHBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkVzdGFibGlz
aFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyB7IHJlZ2lzdHJhYmxlRG9t
YWluLCBzZXNzaW9uSUQgfSwgMCk7CiAgICAgICAgIH0pOwpAQCAtMjQyOCwxMSArMjQyNiwxMiBA
QCB2b2lkIE5ldHdvcmtQcm9jZXNzOjp1bnJlZ2lzdGVyU1dTZXJ2ZXJDCiAgICAgICAgIHN0b3Jl
LT51bnJlZ2lzdGVyU1dTZXJ2ZXJDb25uZWN0aW9uKGNvbm5lY3Rpb24pOwogfQogCi12b2lkIE5l
dHdvcmtQcm9jZXNzOjphZGRTZXJ2aWNlV29ya2VyU2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIGJvb2wgcHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVkLCBTdHJpbmcmIHNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnksIGNvbnN0IFNhbmRib3hFeHRlbnNpb246Okhh
bmRsZSYgaGFuZGxlKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6YWRkU2VydmljZVdvcmtlclNlc3Np
b24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBib29sIHByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5
RW5hYmxlZCwgSGFzaFNldDxTdHJpbmc+JiYgcmVnaXN0ZXJlZFNjaGVtZXMsIFN0cmluZyYgc2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlJiBoYW5kbGUpCiB7CiAgICAgU2VydmljZVdvcmtlckluZm8gaW5mbyB7CiAgICAgICAg
IHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnksCiAgICAgICAgIHByb2Nlc3NUZXJt
aW5hdGlvbkRlbGF5RW5hYmxlZCwKKyAgICAgICAgV1RGTW92ZShyZWdpc3RlcmVkU2NoZW1lcykK
ICAgICB9OwogICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9zZXJ2aWNlV29ya2VySW5mby5hZGQoc2Vz
c2lvbklELCBXVEZNb3ZlKGluZm8pKTsKICAgICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50cnkpIHsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgJ
KHJldmlzaW9uIDI1MDY2NSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuaAkod29ya2luZyBjb3B5KQpAQCAtNDU5LDcgKzQ1OSw3IEBAIHByaXZhdGU6CiAg
ICAgCiAgICAgV2ViU1dPcmlnaW5TdG9yZSogZXhpc3RpbmdTV09yaWdpblN0b3JlRm9yU2Vzc2lv
bihQQUw6OlNlc3Npb25JRCkgY29uc3Q7CiAKLSAgICB2b2lkIGFkZFNlcnZpY2VXb3JrZXJTZXNz
aW9uKFBBTDo6U2Vzc2lvbklELCBib29sIHByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5RW5hYmxlZCwg
U3RyaW5nJiBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5LCBjb25zdCBTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGUmKTsKKyAgICB2b2lkIGFkZFNlcnZpY2VXb3JrZXJTZXNzaW9uKFBB
TDo6U2Vzc2lvbklELCBib29sIHByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5RW5hYmxlZCwgSGFzaFNl
dDxTdHJpbmc+JiYgcmVnaXN0ZXJlZFNjaGVtZXMsIFN0cmluZyYgc2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbkRpcmVjdG9yeSwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJik7CiAjZW5k
aWYKIAogICAgIHZvaWQgcG9zdFN0b3JhZ2VUYXNrKENyb3NzVGhyZWFkVGFzayYmKTsKQEAgLTUy
Nyw2ICs1MjcsNyBAQCBwcml2YXRlOgogICAgIHN0cnVjdCBTZXJ2aWNlV29ya2VySW5mbyB7CiAg
ICAgICAgIFN0cmluZyBkYXRhYmFzZVBhdGg7CiAgICAgICAgIGJvb2wgcHJvY2Vzc1Rlcm1pbmF0
aW9uRGVsYXlFbmFibGVkIHsgdHJ1ZSB9OworICAgICAgICBIYXNoU2V0PFN0cmluZz4gcmVnaXN0
ZXJlZFNjaGVtZXM7CiAgICAgfTsKICAgICBIYXNoTWFwPFBBTDo6U2Vzc2lvbklELCBTZXJ2aWNl
V29ya2VySW5mbz4gbV9zZXJ2aWNlV29ya2VySW5mbzsKICAgICBIYXNoTWFwPFBBTDo6U2Vzc2lv
bklELCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1dTZXJ2ZXI+PiBtX3N3U2VydmVyczsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0F1eGlsaWFyeVByb2Nlc3MuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0F1eGlsaWFyeVByb2Nlc3MuY3BwCShyZXZpc2lvbiAy
NTA2NjUpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXhpbGlhcnlQcm9jZXNzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTk1LDExICsxOTUsNiBAQCB2b2lkIEF1eGlsaWFyeVByb2Nlc3M6OnNo
dXREb3duKCkKICAgICB0ZXJtaW5hdGUoKTsKIH0KIAotdm9pZCBBdXhpbGlhcnlQcm9jZXNzOjpy
ZWdpc3RlclVSTFNjaGVtZVNlcnZpY2VXb3JrZXJzQ2FuSGFuZGxlKGNvbnN0IFN0cmluZyYgdXJs
U2NoZW1lKSBjb25zdAotewotICAgIFdlYkNvcmU6OlNjaGVtZVJlZ2lzdHJ5OjpyZWdpc3RlclVS
TFNjaGVtZVNlcnZpY2VXb3JrZXJzQ2FuSGFuZGxlKHVybFNjaGVtZSk7Ci19Ci0KICNpZiAhUExB
VEZPUk0oQ09DT0EpCiB2b2lkIEF1eGlsaWFyeVByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZSgp
CiB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXhpbGlhcnlQcm9jZXNzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvQXV4aWxpYXJ5UHJvY2Vzcy5oCShyZXZpc2lv
biAyNTA2NjUpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXhpbGlhcnlQcm9jZXNzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEyMSw3ICsxMjEsNiBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2b2lkIGRp
ZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRl
OwogCi0gICAgdm9pZCByZWdpc3RlclVSTFNjaGVtZVNlcnZpY2VXb3JrZXJzQ2FuSGFuZGxlKGNv
bnN0IFN0cmluZyYpIGNvbnN0OwogI2lmIE9TKExJTlVYKQogICAgIHZvaWQgZGlkUmVjZWl2ZU1l
bW9yeVByZXNzdXJlRXZlbnQoYm9vbCBpc0NyaXRpY2FsKTsKICNlbmRpZgpJbmRleDogU291cmNl
L1dlYktpdC9TaGFyZWQvQXV4aWxpYXJ5UHJvY2Vzcy5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXhpbGlhcnlQcm9jZXNzLm1lc3NhZ2VzLmluCShyZXZp
c2lvbiAyNTA2NjUpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXhpbGlhcnlQcm9jZXNzLm1l
c3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw3ICsyMiw2IEBACiAKIG1lc3NhZ2VzIC0+
IEF1eGlsaWFyeVByb2Nlc3MgewogICAgIFNodXREb3duKCkKLSAgICBSZWdpc3RlclVSTFNjaGVt
ZVNlcnZpY2VXb3JrZXJzQ2FuSGFuZGxlKFN0cmluZyBzY2hlbWUpCiAgICAgU2V0UHJvY2Vzc1N1
cHByZXNzaW9uRW5hYmxlZChib29sIGZsYWcpCiAKICNpZiBPUyhMSU5VWCkKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5jcHAJ
KHJldmlzaW9uIDI1MDY2NSkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhU3Rv
cmVQYXJhbWV0ZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsNiArNTEsNyBAQCB2b2lkIFdl
YnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzOjplbmNvZGUoCiAKICNpZiBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCiAgICAgZW5jb2RlciA8PCBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5
IDw8IHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUgPDwg
c2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5RW5hYmxlZDsKKyAgICBlbmNvZGVy
IDw8IHNlcnZpY2VXb3JrZXJSZWdpc3RlcmVkU2NoZW1lczsKICNlbmRpZgogCiAgICAgZW5jb2Rl
ciA8PCBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPDwgbG9jYWxTdG9yYWdlRGlyZWN0b3J5RXh0ZW5z
aW9uSGFuZGxlOwpAQCAtMTI3LDYgKzEyOCwxMiBAQCBPcHRpb25hbDxXZWJzaXRlRGF0YVN0b3Jl
UGFyYW1ldGVycz4gV2ViCiAgICAgaWYgKCFzZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9u
RGVsYXlFbmFibGVkKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIHBhcmFtZXRl
cnMuc2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5RW5hYmxlZCA9IFdURk1vdmUo
KnNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheUVuYWJsZWQpOworICAgIAorICAg
IE9wdGlvbmFsPEhhc2hTZXQ8U3RyaW5nPj4gc2VydmljZVdvcmtlclJlZ2lzdGVyZWRTY2hlbWVz
OworICAgIGRlY29kZXIgPj4gc2VydmljZVdvcmtlclJlZ2lzdGVyZWRTY2hlbWVzOworICAgIGlm
ICghc2VydmljZVdvcmtlclJlZ2lzdGVyZWRTY2hlbWVzKQorICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgIHBhcmFtZXRlcnMuc2VydmljZVdvcmtlclJlZ2lzdGVyZWRTY2hlbWVzID0g
V1RGTW92ZSgqc2VydmljZVdvcmtlclJlZ2lzdGVyZWRTY2hlbWVzKTsKICNlbmRpZgogCiAgICAg
T3B0aW9uYWw8U3RyaW5nPiBsb2NhbFN0b3JhZ2VEaXJlY3Rvcnk7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmgJKHJldmlzaW9u
IDI1MDY2NSkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhU3RvcmVQYXJhbWV0
ZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTY2LDYgKzY2LDcgQEAgc3RydWN0IFdlYnNpdGVEYXRh
U3RvcmVQYXJhbWV0ZXJzIHsKICAgICBTdHJpbmcgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRp
cmVjdG9yeTsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbkRpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKICAgICBib29sIHNlcnZpY2VXb3JrZXJQ
cm9jZXNzVGVybWluYXRpb25EZWxheUVuYWJsZWQgeyB0cnVlIH07CisgICAgSGFzaFNldDxTdHJp
bmc+IHNlcnZpY2VXb3JrZXJSZWdpc3RlcmVkU2NoZW1lczsKICNlbmRpZgogCiAgICAgU3RyaW5n
IGxvY2FsU3RvcmFnZURpcmVjdG9yeTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5jcHAJKHJldmlzaW9uIDI1MDY2NSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQ0LDkgKzU0NCw2
IEBAIE5ldHdvcmtQcm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjplbnMKICAgICBpZiAoIXBh
cmFtZXRlcnMuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSkKICAgICAgICAgcGFy
YW1ldGVycy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5ID0gIFdlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rvcnko
KTsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3Rv
cnkocGFyYW1ldGVycy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5LCBwYXJhbWV0
ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwot
Ci0gICAgaWYgKCFtX3NjaGVtZXNTZXJ2aWNlV29ya2Vyc0NhbkhhbmRsZS5pc0VtcHR5KCkpCi0g
ICAgICAgIHBhcmFtZXRlcnMudXJsU2NoZW1lc1NlcnZpY2VXb3JrZXJzQ2FuSGFuZGxlID0gY29w
eVRvVmVjdG9yKG1fc2NoZW1lc1NlcnZpY2VXb3JrZXJzQ2FuSGFuZGxlKTsKICNlbmRpZgogCiAg
ICAgYXV0byBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBtX3dlYnNpdGVEYXRhU3RvcmUgPyBtX3dl
YnNpdGVEYXRhU3RvcmUtPnJlc29sdmVkTG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkgOiBudWxsU3Ry
aW5nKCk7CkBAIC05MjQsNyArOTIxLDExIEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmluaXRpYWxp
emVOZXdXZWJQcm8KICAgICBwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVkQXNDT1JTRW5h
YmxlZCA9IGNvcHlUb1ZlY3RvcihtX3NjaGVtZXNUb1JlZ2lzdGVyQXNDT1JTRW5hYmxlZCk7CiAg
ICAgcGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEFzQWx3YXlzUmV2YWxpZGF0ZWQgPSBj
b3B5VG9WZWN0b3IobV9zY2hlbWVzVG9SZWdpc3RlckFzQWx3YXlzUmV2YWxpZGF0ZWQpOwogICAg
IHBhcmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWRBc0NhY2hlUGFydGl0aW9uZWQgPSBjb3B5
VG9WZWN0b3IobV9zY2hlbWVzVG9SZWdpc3RlckFzQ2FjaGVQYXJ0aXRpb25lZCk7Ci0gICAgcGFy
YW1ldGVycy51cmxTY2hlbWVzU2VydmljZVdvcmtlcnNDYW5IYW5kbGUgPSBjb3B5VG9WZWN0b3Io
bV9zY2hlbWVzU2VydmljZVdvcmtlcnNDYW5IYW5kbGUpOworICAgIGlmICh3ZWJzaXRlRGF0YVN0
b3JlKQorICAgICAgICBwYXJhbWV0ZXJzLnVybFNjaGVtZXNTZXJ2aWNlV29ya2Vyc0NhbkhhbmRs
ZSA9IGNvcHlUb1ZlY3Rvcih3ZWJzaXRlRGF0YVN0b3JlLT5jb25maWd1cmF0aW9uKCkuc2Vydmlj
ZVdvcmtlclJlZ2lzdGVyZWRTY2hlbWVzKCkpOworICAgIGVsc2UgeworICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsgLy8gRklYTUU6IFJlbW92ZSBiZWZvcmUgY29tbWl0dGluZy4KKyAgICB9
CiAgICAgcGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEFzQ2FuRGlzcGxheU9ubHlJZkNh
blJlcXVlc3QgPSBjb3B5VG9WZWN0b3IobV9zY2hlbWVzVG9SZWdpc3RlckFzQ2FuRGlzcGxheU9u
bHlJZkNhblJlcXVlc3QpOwogCiAgICAgcGFyYW1ldGVycy5zaG91bGRBbHdheXNVc2VDb21wbGV4
VGV4dENvZGVQYXRoID0gbV9hbHdheXNVc2VzQ29tcGxleFRleHRDb2RlUGF0aDsKQEAgLTE1MzYs
MTQgKzE1MzcsNiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpyZWdpc3RlclVSTFNjaGVtZUFzCiAg
ICAgc2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpSZWdpc3RlclVSTFNj
aGVtZUFzQ2FjaGVQYXJ0aXRpb25lZCh1cmxTY2hlbWUpKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNz
UG9vbDo6cmVnaXN0ZXJVUkxTY2hlbWVTZXJ2aWNlV29ya2Vyc0NhbkhhbmRsZShjb25zdCBTdHJp
bmcmIHVybFNjaGVtZSkKLXsKLSAgICBtX3NjaGVtZXNTZXJ2aWNlV29ya2Vyc0NhbkhhbmRsZS5h
ZGQodXJsU2NoZW1lKTsKLSAgICBzZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OkF1eGlsaWFy
eVByb2Nlc3M6OlJlZ2lzdGVyVVJMU2NoZW1lU2VydmljZVdvcmtlcnNDYW5IYW5kbGUodXJsU2No
ZW1lKSk7Ci0gICAgaWYgKG1fbmV0d29ya1Byb2Nlc3MpCi0gICAgICAgIG1fbmV0d29ya1Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OkF1eGlsaWFyeVByb2Nlc3M6OlJlZ2lzdGVyVVJMU2NoZW1lU2Vy
dmljZVdvcmtlcnNDYW5IYW5kbGUodXJsU2NoZW1lKSwgMCk7Ci19Ci0KIHZvaWQgV2ViUHJvY2Vz
c1Bvb2w6OnJlZ2lzdGVyVVJMU2NoZW1lQXNDYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdChjb25z
dCBTdHJpbmcmIHVybFNjaGVtZSkKIHsKICAgICBtX3NjaGVtZXNUb1JlZ2lzdGVyQXNDYW5EaXNw
bGF5T25seUlmQ2FuUmVxdWVzdC5hZGQodXJsU2NoZW1lKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAkocmV2aXNpb24gMjUwNjY1KQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAkod29ya2luZyBjb3B5KQpAQCAtMjcyLDcg
KzI3Miw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlZ2lzdGVyVVJMU2NoZW1lQXNEaXNwbGF5SXNv
bGF0ZWQoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCByZWdpc3RlclVSTFNjaGVtZUFzQ09SU0Vu
YWJsZWQoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCByZWdpc3RlclVSTFNjaGVtZUFzQ2FjaGVQ
YXJ0aXRpb25lZChjb25zdCBTdHJpbmcmKTsKLSAgICB2b2lkIHJlZ2lzdGVyVVJMU2NoZW1lU2Vy
dmljZVdvcmtlcnNDYW5IYW5kbGUoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCByZWdpc3RlclVS
TFNjaGVtZUFzQ2FuRGlzcGxheU9ubHlJZkNhblJlcXVlc3QoY29uc3QgU3RyaW5nJik7CiAKICAg
ICBWaXNpdGVkTGlua1N0b3JlJiB2aXNpdGVkTGlua1N0b3JlKCkgeyByZXR1cm4gbV92aXNpdGVk
TGlua1N0b3JlLmdldCgpOyB9CkBAIC02NTAsNyArNjQ5LDYgQEAgcHJpdmF0ZToKICAgICBIYXNo
U2V0PFN0cmluZz4gbV9zY2hlbWVzVG9SZWdpc3RlckFzQ09SU0VuYWJsZWQ7CiAgICAgSGFzaFNl
dDxTdHJpbmc+IG1fc2NoZW1lc1RvUmVnaXN0ZXJBc0Fsd2F5c1JldmFsaWRhdGVkOwogICAgIEhh
c2hTZXQ8U3RyaW5nPiBtX3NjaGVtZXNUb1JlZ2lzdGVyQXNDYWNoZVBhcnRpdGlvbmVkOwotICAg
IEhhc2hTZXQ8U3RyaW5nPiBtX3NjaGVtZXNTZXJ2aWNlV29ya2Vyc0NhbkhhbmRsZTsKICAgICBI
YXNoU2V0PFN0cmluZz4gbV9zY2hlbWVzVG9SZWdpc3RlckFzQ2FuRGlzcGxheU9ubHlJZkNhblJl
cXVlc3Q7CiAKICAgICBib29sIG1fYWx3YXlzVXNlc0NvbXBsZXhUZXh0Q29kZVBhdGggeyBmYWxz
ZSB9OwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bv
b2wubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
UHJvY2Vzc1Bvb2wubW0JKHJldmlzaW9uIDI1MDY2NSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xODksMTEg
KzE4OSw2IEBAIC0gKHZvaWQpX3NldEFsbG93c1NwZWNpZmljSFRUUFNDZXJ0aWZpY2EKICAgICBf
cHJvY2Vzc1Bvb2wtPmFsbG93U3BlY2lmaWNIVFRQU0NlcnRpZmljYXRlRm9ySG9zdChXZWJLaXQ6
OldlYkNlcnRpZmljYXRlSW5mbzo6Y3JlYXRlKFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbygoX19i
cmlkZ2UgQ0ZBcnJheVJlZiljZXJ0aWZpY2F0ZUNoYWluKSkucHRyKCksIGhvc3QpOwogfQogCi0t
ICh2b2lkKV9yZWdpc3RlclVSTFNjaGVtZVNlcnZpY2VXb3JrZXJzQ2FuSGFuZGxlOihOU1N0cmlu
ZyAqKXNjaGVtZQotewotICAgIF9wcm9jZXNzUG9vbC0+cmVnaXN0ZXJVUkxTY2hlbWVTZXJ2aWNl
V29ya2Vyc0NhbkhhbmRsZShzY2hlbWUpOwotfQotCiAtICh2b2lkKV9yZWdpc3RlclVSTFNjaGVt
ZUFzQ2FuRGlzcGxheU9ubHlJZkNhblJlcXVlc3Q6KE5TU3RyaW5nICopc2NoZW1lCiB7CiAgICAg
X3Byb2Nlc3NQb29sLT5yZWdpc3RlclVSTFNjaGVtZUFzQ2FuRGlzcGxheU9ubHlJZkNhblJlcXVl
c3Qoc2NoZW1lKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1By
b2Nlc3NQb29sUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oCShyZXZpc2lvbiAyNTA2NjUpCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaAko
d29ya2luZyBjb3B5KQpAQCAtMTIyLDcgKzEyMiw2IEBACiAKIC8vIFRlc3Qgb25seS4KIC0gKHZv
aWQpX3NldEFsbG93c0FueVNTTENlcnRpZmljYXRlRm9yU2VydmljZVdvcmtlcjooQk9PTClhbGxv
d3MgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40KSwgaW9zKDExLjMpKTsKLS0gKHZvaWQp
X3JlZ2lzdGVyVVJMU2NoZW1lU2VydmljZVdvcmtlcnNDYW5IYW5kbGU6KE5TU3RyaW5nICopc2No
ZW1lIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMuNCksIGlvcygxMS4zKSk7CiAtICh2b2lk
KV9nZXRBY3RpdmVQYWdlc09yaWdpbnNJbldlYlByb2Nlc3NGb3JUZXN0aW5nOihwaWRfdClwaWQg
Y29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoTlNBcnJheTxOU1N0cmluZyAqPiAqKSljb21wbGV0
aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE0LjQpLCBpb3MoMTIuMikpOwog
LSAoQk9PTClfbmV0d29ya1Byb2Nlc3NIYXNFbnRpdGxlbWVudEZvclRlc3Rpbmc6KE5TU3RyaW5n
ICopZW50aXRsZW1lbnQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNC40KSwgaW9zKDEyLjIp
KTsKIC0gKHZvaWQpX2NsZWFyUGVybWFuZW50Q3JlZGVudGlhbHNGb3JQcm90ZWN0aW9uU3BhY2U6
KE5TVVJMUHJvdGVjdGlvblNwYWNlICopcHJvdGVjdGlvblNwYWNlIFdLX0FQSV9BVkFJTEFCTEUo
bWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0
ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaAkocmV2aXNpb24gMjUwNjc3KQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9u
LmgJKHdvcmtpbmcgY29weSkKQEAgLTcxLDYgKzcxLDcgQEAgV0tfQ0xBU1NfQVZBSUxBQkxFKG1h
Y29zKDEwLjEzKSwgaW9zKDExLgogQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgc3VwcHJlc3Nl
c0Nvbm5lY3Rpb25UZXJtaW5hdGlvbk9uU3lzdGVtQ2hhbmdlIFdLX0FQSV9BVkFJTEFCTEUobWFj
b3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAKIC8vIFRlc3Rpbmcgb25seS4KKy0g
KHZvaWQpcmVnaXN0ZXJVUkxTY2hlbWVTZXJ2aWNlV29ya2Vyc0NhbkhhbmRsZUZvclRlc3Rpbmc6
KE5TU3RyaW5nICopc2NoZW1lIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlv
cyhXS19JT1NfVEJBKSk7CiBAcHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCBhbGxMb2Fkc0Jsb2Nr
ZWRCeURldmljZU1hbmFnZW1lbnRSZXN0cmljdGlvbnNGb3JUZXN0aW5nIFdLX0FQSV9BVkFJTEFC
TEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAKIEBlbmQKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24ubW0JKHJldmlzaW9uIDI1MDY3NykK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbi5tbQkod29ya2luZyBjb3B5KQpAQCAtNDAwLDYgKzQwMCwxMSBAQCAtICh2
b2lkKXNldEFsbExvYWRzQmxvY2tlZEJ5RGV2aWNlTWFuYWdlCiAgICAgX2NvbmZpZ3VyYXRpb24t
PnNldEFsbExvYWRzQmxvY2tlZEJ5RGV2aWNlTWFuYWdlbWVudFJlc3RyaWN0aW9uc0ZvclRlc3Rp
bmcoYmxvY2tlZCk7CiB9CiAKKy0gKHZvaWQpcmVnaXN0ZXJVUkxTY2hlbWVTZXJ2aWNlV29ya2Vy
c0NhbkhhbmRsZUZvclRlc3Rpbmc6KE5TU3RyaW5nICopc2NoZW1lCit7CisgICAgX2NvbmZpZ3Vy
YXRpb24tPnJlZ2lzdGVyU2VydmljZVdvcmtlclNjaGVtZShzY2hlbWUpOworfQorCiAtIChBUEk6
Ok9iamVjdCYpX2FwaU9iamVjdAogewogICAgIHJldHVybiAqX2NvbmZpZ3VyYXRpb247CkluZGV4
OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwCShyZXZpc2lvbiAyNTA2
NzcpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0
b3JlQ29uZmlndXJhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0LDYgKzU0LDcgQEAgUmVm
PFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiBXZWJzaQogICAgIGF1dG8gY29weSA9IFdl
YnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpjcmVhdGUobV9pc1BlcnNpc3RlbnQpOwogCiAg
ICAgY29weS0+bV9zZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVkID0g
dGhpcy0+bV9zZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVkOworICAg
IGNvcHktPm1fc2VydmljZVdvcmtlclJlZ2lzdGVyZWRTY2hlbWVzID0gdGhpcy0+bV9zZXJ2aWNl
V29ya2VyUmVnaXN0ZXJlZFNjaGVtZXM7CiAgICAgY29weS0+bV9mYXN0U2VydmVyVHJ1c3RFdmFs
dWF0aW9uRW5hYmxlZCA9IHRoaXMtPm1fZmFzdFNlcnZlclRydXN0RXZhbHVhdGlvbkVuYWJsZWQ7
CiAgICAgY29weS0+bV9uZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZVZhbGlkYXRpb25FbmFibGVkID0g
dGhpcy0+bV9uZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZVZhbGlkYXRpb25FbmFibGVkOwogICAgIGNv
cHktPm1fY2FjaGVTdG9yYWdlRGlyZWN0b3J5ID0gdGhpcy0+bV9jYWNoZVN0b3JhZ2VEaXJlY3Rv
cnk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YVN0b3JlQ29uZmlndXJhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmgJKHJldmlzaW9u
IDI1MDY3NykKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTExNyw2ICsxMTcsOSBA
QCBwdWJsaWM6CiAgICAgYm9vbCBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXlF
bmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9u
RGVsYXlFbmFibGVkOyB9CiAgICAgdm9pZCBzZXRTZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0
aW9uRGVsYXlFbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBtX3NlcnZpY2VXb3JrZXJQcm9jZXNzVGVy
bWluYXRpb25EZWxheUVuYWJsZWQgPSBlbmFibGVkOyB9CiAKKyAgICBjb25zdCBIYXNoU2V0PFN0
cmluZz4gc2VydmljZVdvcmtlclJlZ2lzdGVyZWRTY2hlbWVzKCkgY29uc3QgeyByZXR1cm4gbV9z
ZXJ2aWNlV29ya2VyUmVnaXN0ZXJlZFNjaGVtZXM7IH0KKyAgICB2b2lkIHJlZ2lzdGVyU2Vydmlj
ZVdvcmtlclNjaGVtZShTdHJpbmcmJiBzY2hlbWUpIHsgbV9zZXJ2aWNlV29ya2VyUmVnaXN0ZXJl
ZFNjaGVtZXMuYWRkKHNjaGVtZSk7IH0KKyAgICAKICAgICBjb25zdCBTdHJpbmcmIHNvdXJjZUFw
cGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlQXBwbGlj
YXRpb25CdW5kbGVJZGVudGlmaWVyOyB9CiAgICAgdm9pZCBzZXRTb3VyY2VBcHBsaWNhdGlvbkJ1
bmRsZUlkZW50aWZpZXIoU3RyaW5nJiYgaWRlbnRpZmllcikgeyBtX3NvdXJjZUFwcGxpY2F0aW9u
QnVuZGxlSWRlbnRpZmllciA9IFdURk1vdmUoaWRlbnRpZmllcik7IH0KIApAQCAtMTc5LDYgKzE4
Miw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3Rlc3RpbmdTZXNzaW9uRW5hYmxlZCB7IGZhbHNl
IH07CiAgICAgYm9vbCBtX3N1cHByZXNzZXNDb25uZWN0aW9uVGVybWluYXRpb25PblN5c3RlbUNo
YW5nZSB7IGZhbHNlIH07CiAgICAgdW5zaWduZWQgbV90ZXN0U3BlZWRNdWx0aXBsaWVyIHsgMSB9
OworICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3NlcnZpY2VXb3JrZXJSZWdpc3RlcmVkU2NoZW1lczsK
ICNpZiBQTEFURk9STShDT0NPQSkKICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBtX3By
b3h5Q29uZmlndXJhdGlvbjsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3Rv
cmVDb2NvYS5tbQkocmV2aXNpb24gMjUwNjc3KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0xODAsNiArMTgwLDcgQEAgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMgV2Vic2l0ZURh
dGFTdAogICAgIGlmICghcGFyYW1ldGVycy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0
b3J5LmlzRW1wdHkoKSkKICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9y
UmVhZFdyaXRlRGlyZWN0b3J5KHBhcmFtZXRlcnMuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRp
cmVjdG9yeSwgcGFyYW1ldGVycy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5RXh0
ZW5zaW9uSGFuZGxlKTsKICAgICBwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWlu
YXRpb25EZWxheUVuYWJsZWQgPSBtX2NvbmZpZ3VyYXRpb24tPnNlcnZpY2VXb3JrZXJQcm9jZXNz
VGVybWluYXRpb25EZWxheUVuYWJsZWQoKTsKKyAgICBwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJS
ZWdpc3RlcmVkU2NoZW1lcyA9IG1fY29uZmlndXJhdGlvbi0+c2VydmljZVdvcmtlclJlZ2lzdGVy
ZWRTY2hlbWVzKCk7CiAjZW5kaWYKIAogICAgIHBhcmFtZXRlcnMubG9jYWxTdG9yYWdlRGlyZWN0
b3J5ID0gcmVzb2x2ZWRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDI1MDY2NSkKKysrIFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzc4LDcg
KzM3OCw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nlc3MoV2UKICAgICAg
ICAgcmVnaXN0ZXJVUkxTY2hlbWVBc0NhY2hlUGFydGl0aW9uZWQoc2NoZW1lKTsKIAogICAgIGZv
ciAoYXV0byYgc2NoZW1lIDogcGFyYW1ldGVycy51cmxTY2hlbWVzU2VydmljZVdvcmtlcnNDYW5I
YW5kbGUpCi0gICAgICAgIHJlZ2lzdGVyVVJMU2NoZW1lU2VydmljZVdvcmtlcnNDYW5IYW5kbGUo
c2NoZW1lKTsKKyAgICAgICAgV2ViQ29yZTo6U2NoZW1lUmVnaXN0cnk6OnJlZ2lzdGVyVVJMU2No
ZW1lU2VydmljZVdvcmtlcnNDYW5IYW5kbGUoc2NoZW1lKTsKIAogICAgIGZvciAoYXV0byYgc2No
ZW1lIDogcGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEFzQ2FuRGlzcGxheU9ubHlJZkNh
blJlcXVlc3QpCiAgICAgICAgIHJlZ2lzdGVyVVJMU2NoZW1lQXNDYW5EaXNwbGF5T25seUlmQ2Fu
UmVxdWVzdChzY2hlbWUpOwpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjUwNjkzKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTktMTAtMDMgIEFsZXggQ2hyaXN0ZW5zZW4g
IDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBNb3ZlIFdLUHJvY2Vzc1Bvb2wu
X3JlZ2lzdGVyVVJMU2NoZW1lU2VydmljZVdvcmtlcnNDYW5IYW5kbGUgdG8gX1dLV2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwMjU1MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29y
a2VyQmFzaWMubW06CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9T
dG9yYWdlUXVvdGEubW06CisKIDIwMTktMTAtMDMgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5A
YXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04oMjQ5NjQ5KTogVW5hYmxlIHRvIG9wZW4g
bG9jYWwgZmlsZXMgaW4gTWluaUJyb3dzZXIgb24gbWFjT1MKSW5kZXg6IFRvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2VydmljZVdvcmtlckJhc2ljLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2VydmljZVdvcmtlckJh
c2ljLm1tCShyZXZpc2lvbiAyNTA2NjUpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1NlcnZpY2VXb3JrZXJCYXNpYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNDY5LDYg
KzQ2OSwxMyBAQCBzZWxmLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCAoZXZlbnQpCiAKIClT
V1JFU09VUkNFIjsKIAorc3RhdGljIFdLV2Vic2l0ZURhdGFTdG9yZSAqZGF0YVN0b3JlV2l0aFJl
Z2lzdGVyZWRTZXJ2aWNlV29ya2VyU2NoZW1lKE5TU3RyaW5nICpzY2hlbWUpCit7CisgICAgX1dL
V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24gPSBbW1tfV0tXZWJz
aXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOworICAg
IFtjb25maWd1cmF0aW9uIHJlZ2lzdGVyVVJMU2NoZW1lU2VydmljZVdvcmtlcnNDYW5IYW5kbGVG
b3JUZXN0aW5nOnNjaGVtZV07CisgICAgcmV0dXJuIFtbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxv
Y10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSBhdXRvcmVsZWFzZV07Cit9
CisKIFRFU1QoU2VydmljZVdvcmtlcnMsIEJhc2ljKQogewogICAgIEFTU0VSVChtYWluQnl0ZXMp
OwpAQCAtNDc2LDE0ICs0ODMsMTcgQEAgVEVTVChTZXJ2aWNlV29ya2VycywgQmFzaWMpCiAKICAg
ICBbV0tXZWJzaXRlRGF0YVN0b3JlIF9hbGxvd1dlYnNpdGVEYXRhUmVjb3Jkc0ZvckFsbE9yaWdp
bnNdOwogCisgICAgYXV0byogZGF0YVN0b3JlID0gZGF0YVN0b3JlV2l0aFJlZ2lzdGVyZWRTZXJ2
aWNlV29ya2VyU2NoZW1lKEAic3ciKTsKKyAgICAKICAgICAvLyBTdGFydCB3aXRoIGEgY2xlYW4g
c2xhdGUgZGF0YSBzdG9yZQotICAgIFtbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3Rv
cmVdIHJlbW92ZURhdGFPZlR5cGVzOltXS1dlYnNpdGVEYXRhU3RvcmUgYWxsV2Vic2l0ZURhdGFU
eXBlc10gbW9kaWZpZWRTaW5jZTpbTlNEYXRlIGRpc3RhbnRQYXN0XSBjb21wbGV0aW9uSGFuZGxl
cjpeKCkgeworICAgIFtkYXRhU3RvcmUgcmVtb3ZlRGF0YU9mVHlwZXM6W1dLV2Vic2l0ZURhdGFT
dG9yZSBhbGxXZWJzaXRlRGF0YVR5cGVzXSBtb2RpZmllZFNpbmNlOltOU0RhdGUgZGlzdGFudFBh
c3RdIGNvbXBsZXRpb25IYW5kbGVyOl4oKSB7CiAgICAgICAgIGRvbmUgPSB0cnVlOwogICAgIH1d
OwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CiAgICAgZG9uZSA9IGZhbHNl
OwogCi0gICAgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb24g
PSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIGF1
dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9j
XSBpbml0XSk7CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0V2Vic2l0ZURhdGFTdG9yZTpkYXRhU3Rv
cmVdOwogCiAgICAgUmV0YWluUHRyPFNXTWVzc2FnZUhhbmRsZXI+IG1lc3NhZ2VIYW5kbGVyID0g
YWRvcHROUyhbW1NXTWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKICAgICBbW2NvbmZpZ3Vy
YXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjptZXNz
YWdlSGFuZGxlci5nZXQoKSBuYW1lOkAic3ciXTsKQEAgLTQ5NCw3ICs1MDQsNiBAQCBURVNUKFNl
cnZpY2VXb3JrZXJzLCBCYXNpYykKICAgICBbY29uZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5k
bGVyOmhhbmRsZXIuZ2V0KCkgZm9yVVJMU2NoZW1lOkAiU1ciXTsKIAogICAgIFJldGFpblB0cjxX
S1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZy
YW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlv
bi5nZXQoKV0pOwotICAgIFt3ZWJWaWV3LmdldCgpLmNvbmZpZ3VyYXRpb24ucHJvY2Vzc1Bvb2wg
X3JlZ2lzdGVyVVJMU2NoZW1lU2VydmljZVdvcmtlcnNDYW5IYW5kbGU6QCJzdyJdOwogCiAgICAg
TlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNV
UkwgVVJMV2l0aFN0cmluZzpAInN3Oi8vaG9zdC9tYWluLmh0bWwiXV07CiAgICAgW3dlYlZpZXcg
bG9hZFJlcXVlc3Q6cmVxdWVzdF07CkBAIC01MDQsNyArNTEzLDcgQEAgVEVTVChTZXJ2aWNlV29y
a2VycywgQmFzaWMpCiAKICAgICB3ZWJWaWV3ID0gbnVsbHB0cjsKIAotICAgIFtbV0tXZWJzaXRl
RGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVdIGZldGNoRGF0YVJlY29yZHNPZlR5cGVzOltOU1Nl
dCBzZXRXaXRoT2JqZWN0OldLV2Vic2l0ZURhdGFUeXBlU2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bnNdIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNBcnJheTxXS1dlYnNpdGVEYXRhUmVjb3JkICo+ICp3
ZWJzaXRlRGF0YVJlY29yZHMpIHsKKyAgICBbZGF0YVN0b3JlIGZldGNoRGF0YVJlY29yZHNPZlR5
cGVzOltOU1NldCBzZXRXaXRoT2JqZWN0OldLV2Vic2l0ZURhdGFUeXBlU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbnNdIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNBcnJheTxXS1dlYnNpdGVEYXRhUmVj
b3JkICo+ICp3ZWJzaXRlRGF0YVJlY29yZHMpIHsKICAgICAgICAgRVhQRUNUX0VRKDF1LCBbd2Vi
c2l0ZURhdGFSZWNvcmRzIGNvdW50XSk7CiAgICAgICAgIEVYUEVDVF9UUlVFKFt3ZWJzaXRlRGF0
YVJlY29yZHNbMF0uZGlzcGxheU5hbWUgaXNFcXVhbFRvU3RyaW5nOkAic3cgaG9zdCJdKTsKIApA
QCAtNTc2LDE0ICs1ODUsMTcgQEAgVEVTVChTZXJ2aWNlV29ya2VycywgVXNlckFnZW50T3ZlcnJp
ZGUpCiB7CiAgICAgW1dLV2Vic2l0ZURhdGFTdG9yZSBfYWxsb3dXZWJzaXRlRGF0YVJlY29yZHNG
b3JBbGxPcmlnaW5zXTsKIAorICAgIGF1dG8qIGRhdGFTdG9yZSA9IGRhdGFTdG9yZVdpdGhSZWdp
c3RlcmVkU2VydmljZVdvcmtlclNjaGVtZShAInN3Iik7CisKICAgICAvLyBTdGFydCB3aXRoIGEg
Y2xlYW4gc2xhdGUgZGF0YSBzdG9yZQotICAgIFtbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHRE
YXRhU3RvcmVdIHJlbW92ZURhdGFPZlR5cGVzOltXS1dlYnNpdGVEYXRhU3RvcmUgYWxsV2Vic2l0
ZURhdGFUeXBlc10gbW9kaWZpZWRTaW5jZTpbTlNEYXRlIGRpc3RhbnRQYXN0XSBjb21wbGV0aW9u
SGFuZGxlcjpeKCkgeworICAgIFtkYXRhU3RvcmUgcmVtb3ZlRGF0YU9mVHlwZXM6W1dLV2Vic2l0
ZURhdGFTdG9yZSBhbGxXZWJzaXRlRGF0YVR5cGVzXSBtb2RpZmllZFNpbmNlOltOU0RhdGUgZGlz
dGFudFBhc3RdIGNvbXBsZXRpb25IYW5kbGVyOl4oKSB7CiAgICAgICAgIGRvbmUgPSB0cnVlOwog
ICAgIH1dOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CiAgICAgZG9uZSA9
IGZhbHNlOwogCiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0Nv
bmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRXZWJzaXRl
RGF0YVN0b3JlOmRhdGFTdG9yZV07CiAKICAgICBhdXRvIG1lc3NhZ2VIYW5kbGVyID0gYWRvcHRO
UyhbW1NXVXNlckFnZW50TWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRXaXRoRXhwZWN0ZWRNZXNz
YWdlOkAiTWVzc2FnZSBmcm9tIHdvcmtlcjogRm9vIEN1c3RvbSBVc2VyQWdlbnQiXSk7CiAgICAg
W1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhh
bmRsZXI6bWVzc2FnZUhhbmRsZXIuZ2V0KCkgbmFtZTpAInN3Il07CkBAIC01OTUsNyArNjA3LDYg
QEAgVEVTVChTZXJ2aWNlV29ya2VycywgVXNlckFnZW50T3ZlcnJpZGUpCiAgICAgW2NvbmZpZ3Vy
YXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpoYW5kbGVyLmdldCgpIGZvclVSTFNjaGVtZTpAIlNX
Il07CiAKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0
V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmln
dXJhdGlvbi5nZXQoKV0pOwotICAgIFt3ZWJWaWV3LmdldCgpLmNvbmZpZ3VyYXRpb24ucHJvY2Vz
c1Bvb2wgX3JlZ2lzdGVyVVJMU2NoZW1lU2VydmljZVdvcmtlcnNDYW5IYW5kbGU6QCJzdyJdOwog
CiAgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tTV0N1c3RvbVVzZXJBZ2VudERlbGVnYXRl
IGFsbG9jXSBpbml0V2l0aFVzZXJBZ2VudDpAIkZvbyBDdXN0b20gVXNlckFnZW50Il0pOwogICAg
IFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CkBAIC02MTQs
NiArNjI1LDcgQEAgVEVTVChTZXJ2aWNlV29ya2VycywgVXNlckFnZW50T3ZlcnJpZGUpCiAgICAg
Y29uZmlndXJhdGlvbiA9IG51bGxwdHI7CiAKICAgICBjb25maWd1cmF0aW9uID0gYWRvcHROUyhb
W1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBbY29uZmlndXJhdGlv
biBzZXRXZWJzaXRlRGF0YVN0b3JlOmRhdGFTdG9yZV07CiAKICAgICBtZXNzYWdlSGFuZGxlciA9
IGFkb3B0TlMoW1tTV1VzZXJBZ2VudE1lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0V2l0aEV4cGVj
dGVkTWVzc2FnZTpAIk1lc3NhZ2UgZnJvbSB3b3JrZXI6IEJhciBDdXN0b20gVXNlckFnZW50Il0p
OwogICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1l
c3NhZ2VIYW5kbGVyOm1lc3NhZ2VIYW5kbGVyLmdldCgpIG5hbWU6QCJzdyJdOwpAQCAtNjI1LDcg
KzYzNyw2IEBAIFRFU1QoU2VydmljZVdvcmtlcnMsIFVzZXJBZ2VudE92ZXJyaWRlKQogICAgIFtj
b25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBmb3JVUkxTY2hl
bWU6QCJTVyJdOwogCiAgICAgd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGlu
aXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25m
aWd1cmF0aW9uLmdldCgpXSk7Ci0gICAgW3dlYlZpZXcuZ2V0KCkuY29uZmlndXJhdGlvbi5wcm9j
ZXNzUG9vbCBfcmVnaXN0ZXJVUkxTY2hlbWVTZXJ2aWNlV29ya2Vyc0NhbkhhbmRsZTpAInN3Il07
CiAKICAgICBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tTV0N1c3RvbVVzZXJBZ2VudERlbGVnYXRlIGFs
bG9jXSBpbml0V2l0aFVzZXJBZ2VudDpAIkJhciBDdXN0b20gVXNlckFnZW50Il0pOwogICAgIFt3
ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CkBAIC02NDUsMTQg
KzY1NiwxNyBAQCBURVNUKFNlcnZpY2VXb3JrZXJzLCBSZXN0b3JlRnJvbURpc2spCiAKICAgICBb
V0tXZWJzaXRlRGF0YVN0b3JlIF9hbGxvd1dlYnNpdGVEYXRhUmVjb3Jkc0ZvckFsbE9yaWdpbnNd
OwogCisgICAgYXV0byogZGF0YVN0b3JlID0gZGF0YVN0b3JlV2l0aFJlZ2lzdGVyZWRTZXJ2aWNl
V29ya2VyU2NoZW1lKEAic3ciKTsKKyAgICAKICAgICAvLyBTdGFydCB3aXRoIGEgY2xlYW4gc2xh
dGUgZGF0YSBzdG9yZQotICAgIFtbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVd
IHJlbW92ZURhdGFPZlR5cGVzOltXS1dlYnNpdGVEYXRhU3RvcmUgYWxsV2Vic2l0ZURhdGFUeXBl
c10gbW9kaWZpZWRTaW5jZTpbTlNEYXRlIGRpc3RhbnRQYXN0XSBjb21wbGV0aW9uSGFuZGxlcjpe
KCkgeworICAgIFtkYXRhU3RvcmUgcmVtb3ZlRGF0YU9mVHlwZXM6W1dLV2Vic2l0ZURhdGFTdG9y
ZSBhbGxXZWJzaXRlRGF0YVR5cGVzXSBtb2RpZmllZFNpbmNlOltOU0RhdGUgZGlzdGFudFBhc3Rd
IGNvbXBsZXRpb25IYW5kbGVyOl4oKSB7CiAgICAgICAgIGRvbmUgPSB0cnVlOwogICAgIH1dOwog
ICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CiAgICAgZG9uZSA9IGZhbHNlOwog
Ci0gICAgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb24gPSBh
ZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIGF1dG8g
Y29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBp
bml0XSk7CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0V2Vic2l0ZURhdGFTdG9yZTpkYXRhU3RvcmVd
OwogCiAgICAgUmV0YWluUHRyPFNXTWVzc2FnZUhhbmRsZXJGb3JSZXN0b3JlRnJvbURpc2tUZXN0
PiBtZXNzYWdlSGFuZGxlciA9IGFkb3B0TlMoW1tTV01lc3NhZ2VIYW5kbGVyRm9yUmVzdG9yZUZy
b21EaXNrVGVzdCBhbGxvY10gaW5pdFdpdGhFeHBlY3RlZE1lc3NhZ2U6QCJQQVNTOiBSZWdpc3Ry
YXRpb24gd2FzIHN1Y2Nlc3NmdWwgYW5kIHNlcnZpY2Ugd29ya2VyIHdhcyBhY3RpdmF0ZWQiXSk7
CiAgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVz
c2FnZUhhbmRsZXI6bWVzc2FnZUhhbmRsZXIuZ2V0KCkgbmFtZTpAInN3Il07CkBAIC02NjMsNyAr
Njc3LDYgQEAgVEVTVChTZXJ2aWNlV29ya2VycywgUmVzdG9yZUZyb21EaXNrKQogICAgIFtjb25m
aWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBmb3JVUkxTY2hlbWU6
QCJTVyJdOwogCiAgICAgUmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tX
S1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkg
Y29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7Ci0gICAgW3dlYlZpZXcuZ2V0KCku
Y29uZmlndXJhdGlvbi5wcm9jZXNzUG9vbCBfcmVnaXN0ZXJVUkxTY2hlbWVTZXJ2aWNlV29ya2Vy
c0NhbkhhbmRsZTpAInN3Il07CiAKICAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBbTlNVUkxS
ZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAic3c6Ly9ob3N0L21h
aW4uaHRtbCJdXTsKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKQEAgLTY3OCw2
ICs2OTEsNyBAQCBURVNUKFNlcnZpY2VXb3JrZXJzLCBSZXN0b3JlRnJvbURpc2spCiAgICAgZG9u
ZSA9IGZhbHNlOwogCiAgICAgY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25m
aWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0V2Vic2l0ZURh
dGFTdG9yZTpkYXRhU3RvcmVdOwogICAgIG1lc3NhZ2VIYW5kbGVyID0gYWRvcHROUyhbW1NXTWVz
c2FnZUhhbmRsZXJGb3JSZXN0b3JlRnJvbURpc2tUZXN0IGFsbG9jXSBpbml0V2l0aEV4cGVjdGVk
TWVzc2FnZTpAIlBBU1M6IFJlZ2lzdHJhdGlvbiBhbHJlYWR5IGhhcyBhbiBhY3RpdmUgd29ya2Vy
Il0pOwogICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlw
dE1lc3NhZ2VIYW5kbGVyOm1lc3NhZ2VIYW5kbGVyLmdldCgpIG5hbWU6QCJzdyJdOwogCkBAIC02
ODcsNyArNzAxLDYgQEAgVEVTVChTZXJ2aWNlV29ya2VycywgUmVzdG9yZUZyb21EaXNrKQogICAg
IFtjb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBmb3JVUkxT
Y2hlbWU6QCJTVyJdOwogCiAgICAgd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2Nd
IGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpj
b25maWd1cmF0aW9uLmdldCgpXSk7Ci0gICAgW3dlYlZpZXcuZ2V0KCkuY29uZmlndXJhdGlvbi5w
cm9jZXNzUG9vbCBfcmVnaXN0ZXJVUkxTY2hlbWVTZXJ2aWNlV29ya2Vyc0NhbkhhbmRsZTpAInN3
Il07CiAKICAgICByZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwg
VVJMV2l0aFN0cmluZzpAInN3Oi8vaG9zdC9tYWluLmh0bWwiXV07CiAgICAgW3dlYlZpZXcgbG9h
ZFJlcXVlc3Q6cmVxdWVzdF07CkBAIC03MDEsOCArNzE0LDEwIEBAIFRFU1QoU2VydmljZVdvcmtl
cnMsIENhY2hlU3RvcmFnZVJlc3RvcmUKICAgICBBU1NFUlQobWFpbkNhY2hlU3RvcmFnZUJ5dGVz
KTsKICAgICBbV0tXZWJzaXRlRGF0YVN0b3JlIF9hbGxvd1dlYnNpdGVEYXRhUmVjb3Jkc0ZvckFs
bE9yaWdpbnNdOwogCisgICAgYXV0byogZGF0YVN0b3JlID0gZGF0YVN0b3JlV2l0aFJlZ2lzdGVy
ZWRTZXJ2aWNlV29ya2VyU2NoZW1lKEAic3ciKTsKKyAgICAKICAgICAvLyBTdGFydCB3aXRoIGEg
Y2xlYW4gc2xhdGUgZGF0YSBzdG9yZQotICAgIFtbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHRE
YXRhU3RvcmVdIHJlbW92ZURhdGFPZlR5cGVzOltXS1dlYnNpdGVEYXRhU3RvcmUgYWxsV2Vic2l0
ZURhdGFUeXBlc10gbW9kaWZpZWRTaW5jZTpbTlNEYXRlIGRpc3RhbnRQYXN0XSBjb21wbGV0aW9u
SGFuZGxlcjpeKCkgeworICAgIFtkYXRhU3RvcmUgcmVtb3ZlRGF0YU9mVHlwZXM6W1dLV2Vic2l0
ZURhdGFTdG9yZSBhbGxXZWJzaXRlRGF0YVR5cGVzXSBtb2RpZmllZFNpbmNlOltOU0RhdGUgZGlz
dGFudFBhc3RdIGNvbXBsZXRpb25IYW5kbGVyOl4oKSB7CiAgICAgICAgIGRvbmUgPSB0cnVlOwog
ICAgIH1dOwogCkBAIC03MTUsMTMgKzczMCwxMyBAQCBURVNUKFNlcnZpY2VXb3JrZXJzLCBDYWNo
ZVN0b3JhZ2VSZXN0b3JlCiAgICAgaGFuZGxlci0+cmVzb3VyY2VzLnNldCgic3c6Ly9ob3N0L21h
aW4uaHRtbCIsIFJlc291cmNlSW5mbyB7IEAidGV4dC9odG1sIiwgbWFpbkNhY2hlU3RvcmFnZUJ5
dGVzIH0pOwogCiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0Nv
bmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRXZWJzaXRl
RGF0YVN0b3JlOmRhdGFTdG9yZV07CiAgICAgYXV0byBtZXNzYWdlSGFuZGxlciA9IGFkb3B0TlMo
W1tTV01lc3NhZ2VIYW5kbGVyRm9yUmVzdG9yZUZyb21EaXNrVGVzdCBhbGxvY10gaW5pdFdpdGhF
eHBlY3RlZE1lc3NhZ2U6QCJObyBjYWNoZSBzdG9yYWdlIGRhdGEiXSk7CiAKICAgICBbW2NvbmZp
Z3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpt
ZXNzYWdlSGFuZGxlci5nZXQoKSBuYW1lOkAic3ciXTsKICAgICBbY29uZmlndXJhdGlvbiBzZXRV
UkxTY2hlbWVIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgZm9yVVJMU2NoZW1lOkAiU1ciXTsKIAogICAg
IGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6
TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdl
dCgpXSk7Ci0gICAgW3dlYlZpZXcuZ2V0KCkuY29uZmlndXJhdGlvbi5wcm9jZXNzUG9vbCBfcmVn
aXN0ZXJVUkxTY2hlbWVTZXJ2aWNlV29ya2Vyc0NhbkhhbmRsZTpAInN3Il07CiAKICAgICAvLyBU
cmlnZ2VyIGNyZWF0aW9uIG9mIG5ldHdvcmsgcHJvY2Vzcy4KICAgICBbd2ViVmlldy5nZXQoKS5j
b25maWd1cmF0aW9uLnByb2Nlc3NQb29sIF9zeW5jTmV0d29ya1Byb2Nlc3NDb29raWVzXTsKQEAg
LTczNywxMyArNzUyLDEzIEBAIFRFU1QoU2VydmljZVdvcmtlcnMsIENhY2hlU3RvcmFnZVJlc3Rv
cmUKICAgICBtZXNzYWdlSGFuZGxlciA9IG51bGxwdHI7CiAKICAgICBjb25maWd1cmF0aW9uID0g
YWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBbY29u
ZmlndXJhdGlvbiBzZXRXZWJzaXRlRGF0YVN0b3JlOmRhdGFTdG9yZV07CiAgICAgbWVzc2FnZUhh
bmRsZXIgPSBhZG9wdE5TKFtbU1dNZXNzYWdlSGFuZGxlckZvclJlc3RvcmVGcm9tRGlza1Rlc3Qg
YWxsb2NdIGluaXRXaXRoRXhwZWN0ZWRNZXNzYWdlOkAiU29tZSBjYWNoZSBzdG9yYWdlIGRhdGE6
IG15IGNhY2hlIl0pOwogCiAgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxl
cl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6bWVzc2FnZUhhbmRsZXIuZ2V0KCkgbmFtZTpAInN3
Il07CiAgICAgW2NvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpoYW5kbGVyLmdldCgp
IGZvclVSTFNjaGVtZTpAIlNXIl07CiAKICAgICB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmll
dyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1
cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKLSAgICBbd2ViVmlldy5nZXQoKS5jb25maWd1
cmF0aW9uLnByb2Nlc3NQb29sIF9yZWdpc3RlclVSTFNjaGVtZVNlcnZpY2VXb3JrZXJzQ2FuSGFu
ZGxlOkAic3ciXTsKIAogICAgIHJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJM
OltOU1VSTCBVUkxXaXRoU3RyaW5nOkAic3c6Ly9ob3N0L21haW4uaHRtbCJdXTsKICAgICBbd2Vi
VmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKQEAgLTc2MCwxNCArNzc1LDE3IEBAIFRFU1QoU2Vy
dmljZVdvcmtlcnMsIEZldGNoQWZ0ZXJSZXN0b3JlRnIKIAogICAgIFtXS1dlYnNpdGVEYXRhU3Rv
cmUgX2FsbG93V2Vic2l0ZURhdGFSZWNvcmRzRm9yQWxsT3JpZ2luc107CiAKKyAgICBhdXRvKiBk
YXRhU3RvcmUgPSBkYXRhU3RvcmVXaXRoUmVnaXN0ZXJlZFNlcnZpY2VXb3JrZXJTY2hlbWUoQCJz
dyIpOworICAgIAogICAgIC8vIFN0YXJ0IHdpdGggYSBjbGVhbiBzbGF0ZSBkYXRhIHN0b3JlCi0g
ICAgW1tXS1dlYnNpdGVEYXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV0gcmVtb3ZlRGF0YU9mVHlw
ZXM6W1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxXZWJzaXRlRGF0YVR5cGVzXSBtb2RpZmllZFNpbmNl
OltOU0RhdGUgZGlzdGFudFBhc3RdIGNvbXBsZXRpb25IYW5kbGVyOl4oKSB7CisgICAgW2RhdGFT
dG9yZSByZW1vdmVEYXRhT2ZUeXBlczpbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbFdlYnNpdGVEYXRh
VHlwZXNdIG1vZGlmaWVkU2luY2U6W05TRGF0ZSBkaXN0YW50UGFzdF0gY29tcGxldGlvbkhhbmRs
ZXI6XigpIHsKICAgICAgICAgZG9uZSA9IHRydWU7CiAgICAgfV07CiAgICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZkb25lKTsKICAgICBkb25lID0gZmFsc2U7CiAKICAgICBSZXRhaW5QdHI8
V0tXZWJWaWV3Q29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZp
ZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0V2Vi
c2l0ZURhdGFTdG9yZTpkYXRhU3RvcmVdOwogCiAgICAgUmV0YWluUHRyPFNXTWVzc2FnZUhhbmRs
ZXJGb3JGZXRjaFRlc3Q+IG1lc3NhZ2VIYW5kbGVyID0gYWRvcHROUyhbW1NXTWVzc2FnZUhhbmRs
ZXJGb3JGZXRjaFRlc3QgYWxsb2NdIGluaXRdKTsKICAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNv
bnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjptZXNzYWdlSGFuZGxlci5n
ZXQoKSBuYW1lOkAic3ciXTsKQEAgLTc3OSw3ICs3OTcsNiBAQCBURVNUKFNlcnZpY2VXb3JrZXJz
LCBGZXRjaEFmdGVyUmVzdG9yZUZyCiAgICAgW2NvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFu
ZGxlcjpoYW5kbGVyLmdldCgpIGZvclVSTFNjaGVtZTpAIlNXIl07CiAKICAgICBSZXRhaW5QdHI8
V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhG
cmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRp
b24uZ2V0KCldKTsKLSAgICBbd2ViVmlldy5nZXQoKS5jb25maWd1cmF0aW9uLnByb2Nlc3NQb29s
IF9yZWdpc3RlclVSTFNjaGVtZVNlcnZpY2VXb3JrZXJzQ2FuSGFuZGxlOkAic3ciXTsKIAogICAg
IE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05T
VVJMIFVSTFdpdGhTdHJpbmc6QCJzdzovL2hvc3QvbWFpbi5odG1sIl1dOwogICAgIFt3ZWJWaWV3
IGxvYWRSZXF1ZXN0OnJlcXVlc3RdOwpAQCAtNzk0LDYgKzgxMSw3IEBAIFRFU1QoU2VydmljZVdv
cmtlcnMsIEZldGNoQWZ0ZXJSZXN0b3JlRnIKICAgICBkb25lID0gZmFsc2U7CiAKICAgICBjb25m
aWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRd
KTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRXZWJzaXRlRGF0YVN0b3JlOmRhdGFTdG9yZV07CiAg
ICAgbWVzc2FnZUhhbmRsZXIgPSBhZG9wdE5TKFtbU1dNZXNzYWdlSGFuZGxlckZvckZldGNoVGVz
dCBhbGxvY10gaW5pdF0pOwogICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xs
ZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOm1lc3NhZ2VIYW5kbGVyLmdldCgpIG5hbWU6QCJz
dyJdOwogCkBAIC04MDQsNyArODIyLDYgQEAgVEVTVChTZXJ2aWNlV29ya2VycywgRmV0Y2hBZnRl
clJlc3RvcmVGcgogICAgIFtjb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6aGFuZGxl
ci5nZXQoKSBmb3JVUkxTY2hlbWU6QCJTVyJdOwogCiAgICAgd2ViVmlldyA9IGFkb3B0TlMoW1tX
S1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkg
Y29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7Ci0gICAgW3dlYlZpZXcuZ2V0KCku
Y29uZmlndXJhdGlvbi5wcm9jZXNzUG9vbCBfcmVnaXN0ZXJVUkxTY2hlbWVTZXJ2aWNlV29ya2Vy
c0NhbkhhbmRsZTpAInN3Il07CiAKICAgICByZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0
V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAInN3Oi8vaG9zdC9tYWluLmh0bWwiXV07CiAg
ICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07CkBAIC04MjAsMTQgKzgzNywxNyBAQCBU
RVNUKFNlcnZpY2VXb3JrZXJzLCBJbnRlcmNlcHRGaXJzdExvYWRBCiAKICAgICBbV0tXZWJzaXRl
RGF0YVN0b3JlIF9hbGxvd1dlYnNpdGVEYXRhUmVjb3Jkc0ZvckFsbE9yaWdpbnNdOwogCisgICAg
YXV0byogZGF0YVN0b3JlID0gZGF0YVN0b3JlV2l0aFJlZ2lzdGVyZWRTZXJ2aWNlV29ya2VyU2No
ZW1lKEAic3ciKTsKKwogICAgIC8vIFN0YXJ0IHdpdGggYSBjbGVhbiBzbGF0ZSBkYXRhIHN0b3Jl
Ci0gICAgW1tXS1dlYnNpdGVEYXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV0gcmVtb3ZlRGF0YU9m
VHlwZXM6W1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxXZWJzaXRlRGF0YVR5cGVzXSBtb2RpZmllZFNp
bmNlOltOU0RhdGUgZGlzdGFudFBhc3RdIGNvbXBsZXRpb25IYW5kbGVyOl4oKSB7CisgICAgW2Rh
dGFTdG9yZSByZW1vdmVEYXRhT2ZUeXBlczpbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbFdlYnNpdGVE
YXRhVHlwZXNdIG1vZGlmaWVkU2luY2U6W05TRGF0ZSBkaXN0YW50UGFzdF0gY29tcGxldGlvbkhh
bmRsZXI6XigpIHsKICAgICAgICAgZG9uZSA9IHRydWU7CiAgICAgfV07CiAgICAgVGVzdFdlYktp
dEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKICAgICBkb25lID0gZmFsc2U7CiAKICAgICBSZXRhaW5Q
dHI8V0tXZWJWaWV3Q29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dl
YlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0
V2Vic2l0ZURhdGFTdG9yZTpkYXRhU3RvcmVdOwogCiAgICAgUmV0YWluUHRyPFNXTWVzc2FnZUhh
bmRsZXJXaXRoRXhwZWN0ZWRNZXNzYWdlPiBtZXNzYWdlSGFuZGxlciA9IGFkb3B0TlMoW1tTV01l
c3NhZ2VIYW5kbGVyV2l0aEV4cGVjdGVkTWVzc2FnZSBhbGxvY10gaW5pdF0pOwogICAgIFtbY29u
ZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVy
Om1lc3NhZ2VIYW5kbGVyLmdldCgpIG5hbWU6QCJzdyJdOwpAQCAtODM4LDcgKzg1OCw2IEBAIFRF
U1QoU2VydmljZVdvcmtlcnMsIEludGVyY2VwdEZpcnN0TG9hZEEKICAgICBbY29uZmlndXJhdGlv
biBzZXRVUkxTY2hlbWVIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgZm9yVVJMU2NoZW1lOkAiU1ciXTsK
IAogICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3
IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3Vy
YXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwotICAgIFt3ZWJWaWV3LmdldCgpLmNvbmZpZ3Vy
YXRpb24ucHJvY2Vzc1Bvb2wgX3JlZ2lzdGVyVVJMU2NoZW1lU2VydmljZVdvcmtlcnNDYW5IYW5k
bGU6QCJzdyJdOwogCiAgICAgZXhwZWN0ZWRNZXNzYWdlID0gIlNlcnZpY2UgV29ya2VyIGFjdGl2
YXRlZCI7CiAgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0
V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAInN3Oi8vaG9zdC9tYWluLmh0bWwiXV07CkBA
IC04NTQsNiArODczLDcgQEAgVEVTVChTZXJ2aWNlV29ya2VycywgSW50ZXJjZXB0Rmlyc3RMb2Fk
QQogICAgIGRvbmUgPSBmYWxzZTsKIAogICAgIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIFtjb25maWd1cmF0aW9uIHNl
dFdlYnNpdGVEYXRhU3RvcmU6ZGF0YVN0b3JlXTsKICAgICBtZXNzYWdlSGFuZGxlciA9IGFkb3B0
TlMoW1tTV01lc3NhZ2VIYW5kbGVyV2l0aEV4cGVjdGVkTWVzc2FnZSBhbGxvY10gaW5pdF0pOwog
ICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3Nh
Z2VIYW5kbGVyOm1lc3NhZ2VIYW5kbGVyLmdldCgpIG5hbWU6QCJzdyJdOwogCkBAIC04NjMsNyAr
ODgzLDYgQEAgVEVTVChTZXJ2aWNlV29ya2VycywgSW50ZXJjZXB0Rmlyc3RMb2FkQQogICAgIFtj
b25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBmb3JVUkxTY2hl
bWU6QCJTVyJdOwogCiAgICAgd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGlu
aXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25m
aWd1cmF0aW9uLmdldCgpXSk7Ci0gICAgW3dlYlZpZXcuZ2V0KCkuY29uZmlndXJhdGlvbi5wcm9j
ZXNzUG9vbCBfcmVnaXN0ZXJVUkxTY2hlbWVTZXJ2aWNlV29ya2Vyc0NhbkhhbmRsZTpAInN3Il07
CiAKICAgICBleHBlY3RlZE1lc3NhZ2UgPSAiSW50ZXJjZXB0ZWQgYnkgd29ya2VyIjsKICAgICBy
ZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmlu
ZzpAInN3Oi8vaG9zdC9tYWluLmh0bWwiXV07CkBAIC04NzcsMTQgKzg5NiwxNyBAQCBURVNUKFNl
cnZpY2VXb3JrZXJzLCBXYWl0Rm9yUG9saWN5RGVsZWdhCiB7CiAgICAgW1dLV2Vic2l0ZURhdGFT
dG9yZSBfYWxsb3dXZWJzaXRlRGF0YVJlY29yZHNGb3JBbGxPcmlnaW5zXTsKIAorICAgIGF1dG8q
IGRhdGFTdG9yZSA9IGRhdGFTdG9yZVdpdGhSZWdpc3RlcmVkU2VydmljZVdvcmtlclNjaGVtZShA
InN3Iik7CisKICAgICAvLyBTdGFydCB3aXRoIGEgY2xlYW4gc2xhdGUgZGF0YSBzdG9yZQotICAg
IFtbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVdIHJlbW92ZURhdGFPZlR5cGVz
OltXS1dlYnNpdGVEYXRhU3RvcmUgYWxsV2Vic2l0ZURhdGFUeXBlc10gbW9kaWZpZWRTaW5jZTpb
TlNEYXRlIGRpc3RhbnRQYXN0XSBjb21wbGV0aW9uSGFuZGxlcjpeKCkgeworICAgIFtkYXRhU3Rv
cmUgcmVtb3ZlRGF0YU9mVHlwZXM6W1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxXZWJzaXRlRGF0YVR5
cGVzXSBtb2RpZmllZFNpbmNlOltOU0RhdGUgZGlzdGFudFBhc3RdIGNvbXBsZXRpb25IYW5kbGVy
Ol4oKSB7CiAgICAgICAgIGRvbmUgPSB0cnVlOwogICAgIH1dOwogICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnJ1bigmZG9uZSk7CiAgICAgZG9uZSA9IGZhbHNlOwogCiAgICAgUmV0YWluUHRyPFdL
V2ViVmlld0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3
Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIFtjb25maWd1cmF0aW9uIHNldFdlYnNp
dGVEYXRhU3RvcmU6ZGF0YVN0b3JlXTsKIAogICAgIFJldGFpblB0cjxTV01lc3NhZ2VIYW5kbGVy
V2l0aEV4cGVjdGVkTWVzc2FnZT4gbWVzc2FnZUhhbmRsZXIgPSBhZG9wdE5TKFtbU1dNZXNzYWdl
SGFuZGxlcldpdGhFeHBlY3RlZE1lc3NhZ2UgYWxsb2NdIGluaXRdKTsKICAgICBbW2NvbmZpZ3Vy
YXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjptZXNz
YWdlSGFuZGxlci5nZXQoKSBuYW1lOkAic3ciXTsKQEAgLTg5NSw3ICs5MTcsNiBAQCBURVNUKFNl
cnZpY2VXb3JrZXJzLCBXYWl0Rm9yUG9saWN5RGVsZWdhCiAgICAgW2NvbmZpZ3VyYXRpb24gc2V0
VVJMU2NoZW1lSGFuZGxlcjpoYW5kbGVyLmdldCgpIGZvclVSTFNjaGVtZTpAIlNXIl07CiAKICAg
ICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxv
Y10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9u
OmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKLSAgICBbd2ViVmlldy5nZXQoKS5jb25maWd1cmF0aW9u
LnByb2Nlc3NQb29sIF9yZWdpc3RlclVSTFNjaGVtZVNlcnZpY2VXb3JrZXJzQ2FuSGFuZGxlOkAi
c3ciXTsKIAogICAgIC8vIFJlZ2lzdGVyIGEgc2VydmljZSB3b3JrZXIgYW5kIGFjdGl2YXRlIGl0
LgogICAgIGV4cGVjdGVkTWVzc2FnZSA9ICJTZXJ2aWNlIFdvcmtlciBhY3RpdmF0ZWQiOwpAQCAt
OTEyLDYgKzkzMyw3IEBAIFRFU1QoU2VydmljZVdvcmtlcnMsIFdhaXRGb3JQb2xpY3lEZWxlZ2EK
ICAgICBkb25lID0gZmFsc2U7CiAKICAgICBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2Vi
Vmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRX
ZWJzaXRlRGF0YVN0b3JlOmRhdGFTdG9yZV07CiAgICAgbWVzc2FnZUhhbmRsZXIgPSBhZG9wdE5T
KFtbU1dNZXNzYWdlSGFuZGxlcldpdGhFeHBlY3RlZE1lc3NhZ2UgYWxsb2NdIGluaXRdKTsKICAg
ICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdl
SGFuZGxlcjptZXNzYWdlSGFuZGxlci5nZXQoKSBuYW1lOkAic3ciXTsKIApAQCAtOTIxLDcgKzk0
Myw2IEBAIFRFU1QoU2VydmljZVdvcmtlcnMsIFdhaXRGb3JQb2xpY3lEZWxlZ2EKICAgICBbY29u
ZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgZm9yVVJMU2NoZW1l
OkAiU1ciXTsKIAogICAgIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0
V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmln
dXJhdGlvbi5nZXQoKV0pOwotICAgIFt3ZWJWaWV3LmdldCgpLmNvbmZpZ3VyYXRpb24ucHJvY2Vz
c1Bvb2wgX3JlZ2lzdGVyVVJMU2NoZW1lU2VydmljZVdvcmtlcnNDYW5IYW5kbGU6QCJzdyJdOwog
CiAgICAgLy8gVmVyaWZ5IHNlcnZpY2Ugd29ya2VyIGlzIGludGVyY2VwdGluZyBsb2FkLgogICAg
IGV4cGVjdGVkTWVzc2FnZSA9ICJJbnRlcmNlcHRlZCBieSB3b3JrZXIiOwpAQCAtOTMyLDcgKzk1
Myw2IEBAIFRFU1QoU2VydmljZVdvcmtlcnMsIFdhaXRGb3JQb2xpY3lEZWxlZ2EKICAgICBkb25l
ID0gZmFsc2U7CiAKICAgICB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5p
dFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZp
Z3VyYXRpb24uZ2V0KCldKTsKLSAgICBbd2ViVmlldy5nZXQoKS5jb25maWd1cmF0aW9uLnByb2Nl
c3NQb29sIF9yZWdpc3RlclVSTFNjaGVtZVNlcnZpY2VXb3JrZXJzQ2FuSGFuZGxlOkAic3ciXTsK
ICAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1Rlc3RTV0FzeW5jTmF2aWdhdGlvbkRlbGVn
YXRlIGFsbG9jXSBpbml0XSk7CiAgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRl
bGVnYXRlLmdldCgpXTsKICAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOmRlbGVnYXRlLmdldCgp
XTsKQEAgLTk0OSw3ICs5NjksNiBAQCBURVNUKFNlcnZpY2VXb3JrZXJzLCBXYWl0Rm9yUG9saWN5
RGVsZWdhCiAgICAgRVhQRUNUX0ZBTFNFKG5hdmlnYXRpb25GYWlsZWQpOwogCiAgICAgd2ViVmll
dyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgw
LCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7Ci0gICAg
W3dlYlZpZXcuZ2V0KCkuY29uZmlndXJhdGlvbi5wcm9jZXNzUG9vbCBfcmVnaXN0ZXJVUkxTY2hl
bWVTZXJ2aWNlV29ya2Vyc0NhbkhhbmRsZTpAInN3Il07CiAgICAgW3dlYlZpZXcgc2V0TmF2aWdh
dGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKICAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRl
OmRlbGVnYXRlLmdldCgpXTsKIApAQCAtOTcwLDggKzk4OSw3IEBAIHZvaWQgc2V0Q29uZmlndXJh
dGlvbkluamVjdGVkQnVuZGxlUGF0aCgKIHsKICAgICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+
IGNvbnRleHQgPSBhZG9wdFdLKFRlc3RXZWJLaXRBUEk6OlV0aWw6OmNyZWF0ZUNvbnRleHRGb3JJ
bmplY3RlZEJ1bmRsZVRlc3QoIkludGVybmFsc0luamVjdGVkQnVuZGxlVGVzdCIpKTsKICAgICBj
b25maWd1cmF0aW9uLnByb2Nlc3NQb29sID0gKFdLUHJvY2Vzc1Bvb2wgKiljb250ZXh0LmdldCgp
OwotICAgIGF1dG8gcG9vbCA9IGNvbmZpZ3VyYXRpb24ucHJvY2Vzc1Bvb2w7Ci0gICAgW3Bvb2wg
X3JlZ2lzdGVyVVJMU2NoZW1lU2VydmljZVdvcmtlcnNDYW5IYW5kbGU6QCJzdyJdOworICAgIGNv
bmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSA9IGRhdGFTdG9yZVdpdGhSZWdpc3RlcmVkU2Vy
dmljZVdvcmtlclNjaGVtZShAInN3Iik7CiB9CiAKIEBpbnRlcmZhY2UgUmVndWxhclBhZ2VNZXNz
YWdlSGFuZGxlciA6IE5TT2JqZWN0IDxXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyPgpAQCAtMTMzMyw4
ICsxMzUxLDkgQEAgVEVTVChTZXJ2aWNlV29ya2VycywgQ2FjaGVTdG9yYWdlSW5Qcml2YQogICAg
IGhhbmRsZXItPnJlc291cmNlcy5zZXQoInN3Oi8vaG9zdC93cml0ZUNhY2hlLmh0bWwiLCBSZXNv
dXJjZUluZm8geyBAInRleHQvaHRtbCIsIHdyaXRlQ2FjaGVCeXRlcyB9KTsKICAgICBbY29uZmln
dXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgZm9yVVJMU2NoZW1lOkAi
U1ciXTsKIAotICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkud2Vic2l0ZURhdGFTdG9yZSA9IFtXS1dl
YnNpdGVEYXRhU3RvcmUgbm9uUGVyc2lzdGVudERhdGFTdG9yZV07Ci0gICAgW2NvbmZpZ3VyYXRp
b24uZ2V0KCkucHJvY2Vzc1Bvb2wgX3JlZ2lzdGVyVVJMU2NoZW1lU2VydmljZVdvcmtlcnNDYW5I
YW5kbGU6QCJzdyJdOworICAgIF9XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uICpkYXRh
U3RvcmVDb25maWd1cmF0aW9uID0gW1tbX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24g
YWxsb2NdIGluaXROb25QZXJzaXN0ZW50Q29uZmlndXJhdGlvbl0gYXV0b3JlbGVhc2VdOworICAg
IFtkYXRhU3RvcmVDb25maWd1cmF0aW9uIHJlZ2lzdGVyVVJMU2NoZW1lU2VydmljZVdvcmtlcnND
YW5IYW5kbGVGb3JUZXN0aW5nOkAic3ciXTsKKyAgICBjb25maWd1cmF0aW9uLmdldCgpLndlYnNp
dGVEYXRhU3RvcmUgPSBbW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0V2l0aENvbmZp
Z3VyYXRpb246ZGF0YVN0b3JlQ29uZmlndXJhdGlvbl0gYXV0b3JlbGVhc2VdOwogCiAgICAgYXV0
byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01h
a2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCld
KTsKICAgICBhdXRvICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNV
UkwgVVJMV2l0aFN0cmluZzpAInN3Oi8vaG9zdC93cml0ZUNhY2hlLmh0bWwiXV07CkBAIC0xMzg4
LDE1ICsxNDA3LDIwIEBAIFRFU1QoU2VydmljZVdvcmtlcnMsIFNlcnZpY2VXb3JrZXJDYWNoZUEK
IHsKICAgICBbV0tXZWJzaXRlRGF0YVN0b3JlIF9hbGxvd1dlYnNpdGVEYXRhUmVjb3Jkc0ZvckFs
bE9yaWdpbnNdOwogCisgICAgYXV0byogZGF0YVN0b3JlID0gZGF0YVN0b3JlV2l0aFJlZ2lzdGVy
ZWRTZXJ2aWNlV29ya2VyU2NoZW1lKEAic3ciKTsKKyAgICAKICAgICAvLyBTdGFydCB3aXRoIGEg
Y2xlYW4gc2xhdGUgZGF0YSBzdG9yZQotICAgIFtbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHRE
YXRhU3RvcmVdIHJlbW92ZURhdGFPZlR5cGVzOltXS1dlYnNpdGVEYXRhU3RvcmUgYWxsV2Vic2l0
ZURhdGFUeXBlc10gbW9kaWZpZWRTaW5jZTpbTlNEYXRlIGRpc3RhbnRQYXN0XSBjb21wbGV0aW9u
SGFuZGxlcjpeKCkgeworICAgIFtkYXRhU3RvcmUgcmVtb3ZlRGF0YU9mVHlwZXM6W1dLV2Vic2l0
ZURhdGFTdG9yZSBhbGxXZWJzaXRlRGF0YVR5cGVzXSBtb2RpZmllZFNpbmNlOltOU0RhdGUgZGlz
dGFudFBhc3RdIGNvbXBsZXRpb25IYW5kbGVyOl4oKSB7CiAgICAgICAgIGRvbmUgPSB0cnVlOwog
ICAgIH1dOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CiAgICAgZG9uZSA9
IGZhbHNlOwogICAgIAogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZp
ZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAgc2V0Q29uZmlndXJhdGlvbkluamVj
dGVkQnVuZGxlUGF0aChjb25maWd1cmF0aW9uLmdldCgpKTsKKworICAgIGF1dG8gY29udGV4dCA9
IGFkb3B0V0soVGVzdFdlYktpdEFQSTo6VXRpbDo6Y3JlYXRlQ29udGV4dEZvckluamVjdGVkQnVu
ZGxlVGVzdCgiSW50ZXJuYWxzSW5qZWN0ZWRCdW5kbGVUZXN0IikpOworICAgIFtjb25maWd1cmF0
aW9uIHNldFByb2Nlc3NQb29sOihXS1Byb2Nlc3NQb29sICopY29udGV4dC5nZXQoKV07CisgICAg
W2NvbmZpZ3VyYXRpb24gc2V0V2Vic2l0ZURhdGFTdG9yZTpkYXRhU3RvcmVdOwogICAgIAogICAg
IGF1dG8gZGVmYXVsdFByZWZlcmVuY2VzID0gW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdOwog
ICAgIFtkZWZhdWx0UHJlZmVyZW5jZXMgX3NldFNlY3VyZUNvbnRleHRDaGVja3NFbmFibGVkOk5P
XTsKQEAgLTE0MTcsNyArMTQ0MSw5IEBAIFRFU1QoU2VydmljZVdvcmtlcnMsIFNlcnZpY2VXb3Jr
ZXJDYWNoZUEKICAgICB9XTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJm9wZW5lZENh
Y2hlKTsKIAotICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkud2Vic2l0ZURhdGFTdG9yZSA9IFtXS1dl
YnNpdGVEYXRhU3RvcmUgbm9uUGVyc2lzdGVudERhdGFTdG9yZV07CisgICAgX1dLV2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb24gKm5vblBlcnNpc3RlbnRDb25maWd1cmF0aW9uID0gW1tbX1dL
V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXROb25QZXJzaXN0ZW50Q29u
ZmlndXJhdGlvbl0gYXV0b3JlbGVhc2VdOworICAgIFtub25QZXJzaXN0ZW50Q29uZmlndXJhdGlv
biByZWdpc3RlclVSTFNjaGVtZVNlcnZpY2VXb3JrZXJzQ2FuSGFuZGxlRm9yVGVzdGluZzpAInN3
Il07CisgICAgY29uZmlndXJhdGlvbi5nZXQoKS53ZWJzaXRlRGF0YVN0b3JlID0gW1tbV0tXZWJz
aXRlRGF0YVN0b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOm5vblBlcnNpc3RlbnRD
b25maWd1cmF0aW9uXSBhdXRvcmVsZWFzZV07CiAKICAgICBhdXRvIG1lc3NhZ2VIYW5kbGVyID0g
YWRvcHROUyhbW1NXTWVzc2FnZUhhbmRsZXJGb3JDYWNoZVN0b3JhZ2UgYWxsb2NdIGluaXRdKTsK
ICAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNz
YWdlSGFuZGxlcjptZXNzYWdlSGFuZGxlci5nZXQoKSBuYW1lOkAic3ciXTsKQEAgLTE1NDMsNyAr
MTU2OSwxMCBAQCBURVNUKFNlcnZpY2VXb3JrZXJzLCBTZXJ2aWNlV29ya2VyQW5kQ2FjCiAKICAg
ICBbV0tXZWJzaXRlRGF0YVN0b3JlIF9hbGxvd1dlYnNpdGVEYXRhUmVjb3Jkc0ZvckFsbE9yaWdp
bnNdOwogCisgICAgYXV0byogZGF0YVN0b3JlID0gZGF0YVN0b3JlV2l0aFJlZ2lzdGVyZWRTZXJ2
aWNlV29ya2VyU2NoZW1lKEAic3ciKTsKKwogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0
TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgW2NvbmZpZ3Vy
YXRpb24gc2V0V2Vic2l0ZURhdGFTdG9yZTpkYXRhU3RvcmVdOwogICAgIHNldENvbmZpZ3VyYXRp
b25JbmplY3RlZEJ1bmRsZVBhdGgoY29uZmlndXJhdGlvbi5nZXQoKSk7CiAKICAgICBSZXRhaW5Q
dHI8RGlyZWN0b3J5UGFnZU1lc3NhZ2VIYW5kbGVyPiBkaXJlY3RvcnlQYWdlTWVzc2FnZUhhbmRs
ZXIgPSBhZG9wdE5TKFtbRGlyZWN0b3J5UGFnZU1lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0XSk7
CkBAIC0xNTY1LDcgKzE1OTQsNiBAQCBURVNUKFNlcnZpY2VXb3JrZXJzLCBTZXJ2aWNlV29ya2Vy
QW5kQ2FjCiAgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnNwaW5SdW5Mb29wKDAuMSk7CiAK
ICAgICB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpO
U01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0
KCldKTsKLSAgICBbd2ViVmlldy5nZXQoKS5jb25maWd1cmF0aW9uLnByb2Nlc3NQb29sIF9yZWdp
c3RlclVSTFNjaGVtZVNlcnZpY2VXb3JrZXJzQ2FuSGFuZGxlOkAic3ciXTsKIAogICAgIHJlcXVl
c3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAi
c3c6Ly9ob3N0L3JlZ3VsYXJQYWdlR3JhYmJpbmdDYWNoZVN0b3JhZ2VEaXJlY3RvcnkuaHRtbCJd
XTsKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKQEAgLTE1ODgsNyArMTYxNiwx
MCBAQCBURVNUKFNlcnZpY2VXb3JrZXJzLCBTZXJ2aWNlV29ya2VyQW5kQ2FjCiAgICAgW1dLV2Vi
c2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXTsKICAgICBbV0tXZWJzaXRlRGF0YVN0b3Jl
IF9hbGxvd1dlYnNpdGVEYXRhUmVjb3Jkc0ZvckFsbE9yaWdpbnNdOwogCisgICAgYXV0byogZGF0
YVN0b3JlID0gZGF0YVN0b3JlV2l0aFJlZ2lzdGVyZWRTZXJ2aWNlV29ya2VyU2NoZW1lKEAic3ci
KTsKKwogICAgIFJldGFpblB0cjxXS1dlYlZpZXdDb25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9u
ID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBb
Y29uZmlndXJhdGlvbiBzZXRXZWJzaXRlRGF0YVN0b3JlOmRhdGFTdG9yZV07CiAKICAgICBjb25m
aWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRd
KTsKICAgICBzZXRDb25maWd1cmF0aW9uSW5qZWN0ZWRCdW5kbGVQYXRoKGNvbmZpZ3VyYXRpb24u
Z2V0KCkpOwpAQCAtMTYwNiw3ICsxNjM3LDYgQEAgVEVTVChTZXJ2aWNlV29ya2VycywgU2Vydmlj
ZVdvcmtlckFuZENhYwogICAgIFtjb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6aGFu
ZGxlci5nZXQoKSBmb3JVUkxTY2hlbWU6QCJTVyJdOwogCiAgICAgUmV0YWluUHRyPFdLV2ViVmll
dz4gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNN
YWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgp
XSk7Ci0gICAgW3dlYlZpZXcuZ2V0KCkuY29uZmlndXJhdGlvbi5wcm9jZXNzUG9vbCBfcmVnaXN0
ZXJVUkxTY2hlbWVTZXJ2aWNlV29ya2Vyc0NhbkhhbmRsZTpAInN3Il07CiAKICAgICBOU1VSTFJl
cXVlc3QgKnJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxX
aXRoU3RyaW5nOkAic3c6Ly9ob3N0L21haW4uaHRtbCJdXTsKICAgICBbd2ViVmlldyBsb2FkUmVx
dWVzdDpyZXF1ZXN0XTsKQEAgLTE2NDcsNiArMTY3Nyw3IEBAIFRFU1QoU2VydmljZVdvcmtlcnMs
IE5vbkRlZmF1bHRTZXNzaW9uSUQKICAgICBSZXRhaW5QdHI8X1dLV2Vic2l0ZURhdGFTdG9yZUNv
bmZpZ3VyYXRpb24+IHdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19X
S1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgd2Vic2l0
ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCkuX3NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25E
aXJlY3RvcnkgPSBzZXJ2aWNlV29ya2Vyc1BhdGg7CiAgICAgd2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb24uZ2V0KCkuX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5ID0gaWRiUGF0aDsKKyAg
ICBbd2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gcmVnaXN0ZXJVUkxTY2hlbWVTZXJ2aWNl
V29ya2Vyc0NhbkhhbmRsZUZvclRlc3Rpbmc6QCJzdyJdOwogCiAgICAgY29uZmlndXJhdGlvbi5n
ZXQoKS53ZWJzaXRlRGF0YVN0b3JlID0gW1tbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbG9jXSBfaW5p
dFdpdGhDb25maWd1cmF0aW9uOndlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmdldCgpXSBh
dXRvcmVsZWFzZV07CiAKQEAgLTE2NjAsNyArMTY5MSw2IEBAIFRFU1QoU2VydmljZVdvcmtlcnMs
IE5vbkRlZmF1bHRTZXNzaW9uSUQKIAogICAgIGV4cGVjdGVkTWVzc2FnZSA9ICJQQVNTOiBhY3Rp
dmF0aW9uIHN1Y2Nlc3NmdWwiOwogICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYlZpZXcgPSBh
ZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwg
ODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwotICAgIFt3ZWJW
aWV3LmdldCgpLmNvbmZpZ3VyYXRpb24ucHJvY2Vzc1Bvb2wgX3JlZ2lzdGVyVVJMU2NoZW1lU2Vy
dmljZVdvcmtlcnNDYW5IYW5kbGU6QCJzdyJdOwogCiAgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0
ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAInN3
Oi8vaG9zdC9tYWluLmh0bWwiXV07CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07
CkBAIC0xNzA0LDYgKzE3MzQsOSBAQCBURVNUKFNlcnZpY2VXb3JrZXJzLCBQcm9jZXNzUGVyU2l0
ZSkKICAgICAvLyBEaXNhYmxlIHRoaXMgZGVsYXkgZm9yIHRoZSBwdXJwb3NlIG9mIHRlc3Rpbmcu
CiAgICAgX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gKmRhdGFTdG9yZUNvbmZpZ3Vy
YXRpb24gPSBbW1tfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0g
YXV0b3JlbGVhc2VdOwogICAgIGRhdGFTdG9yZUNvbmZpZ3VyYXRpb24uc2VydmljZVdvcmtlclBy
b2Nlc3NUZXJtaW5hdGlvbkRlbGF5RW5hYmxlZCA9IE5POworICAgIFtkYXRhU3RvcmVDb25maWd1
cmF0aW9uIHJlZ2lzdGVyVVJMU2NoZW1lU2VydmljZVdvcmtlcnNDYW5IYW5kbGVGb3JUZXN0aW5n
OkAic3cxIl07CisgICAgW2RhdGFTdG9yZUNvbmZpZ3VyYXRpb24gcmVnaXN0ZXJVUkxTY2hlbWVT
ZXJ2aWNlV29ya2Vyc0NhbkhhbmRsZUZvclRlc3Rpbmc6QCJzdzIiXTsKKwogICAgIGF1dG8gZGF0
YVN0b3JlID0gYWRvcHROUyhbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29u
ZmlndXJhdGlvbjpkYXRhU3RvcmVDb25maWd1cmF0aW9uXSk7CiAgICAgCiAgICAgLy8gU3RhcnQg
d2l0aCBhIGNsZWFuIHNsYXRlIGRhdGEgc3RvcmUKQEAgLTE3MzIsOCArMTc2NSw2IEBAIFRFU1Qo
U2VydmljZVdvcmtlcnMsIFByb2Nlc3NQZXJTaXRlKQogICAgIFtjb25maWd1cmF0aW9uIHNldFVS
TFNjaGVtZUhhbmRsZXI6aGFuZGxlcjIuZ2V0KCkgZm9yVVJMU2NoZW1lOkAic3cyIl07CiAKICAg
ICBXS1Byb2Nlc3NQb29sICpwcm9jZXNzUG9vbCA9IGNvbmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vz
c1Bvb2w7Ci0gICAgW3Byb2Nlc3NQb29sIF9yZWdpc3RlclVSTFNjaGVtZVNlcnZpY2VXb3JrZXJz
Q2FuSGFuZGxlOkAic3cxIl07Ci0gICAgW3Byb2Nlc3NQb29sIF9yZWdpc3RlclVSTFNjaGVtZVNl
cnZpY2VXb3JrZXJzQ2FuSGFuZGxlOkAic3cyIl07CiAKICAgICBSZXRhaW5QdHI8V0tXZWJWaWV3
PiB3ZWJWaWV3MSA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNN
YWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgp
XSk7CiAKQEAgLTE3OTEsMTQgKzE4MjIsMTcgQEAgVEVTVChTZXJ2aWNlV29ya2VycywgUGFyYWxs
ZWxQcm9jZXNzTGF1bgogewogICAgIFtXS1dlYnNpdGVEYXRhU3RvcmUgX2FsbG93V2Vic2l0ZURh
dGFSZWNvcmRzRm9yQWxsT3JpZ2luc107CiAKKyAgICBhdXRvKiBkYXRhU3RvcmUgPSBkYXRhU3Rv
cmVXaXRoUmVnaXN0ZXJlZFNlcnZpY2VXb3JrZXJTY2hlbWUoQCJzdzEiKTsKKwogICAgIC8vIFN0
YXJ0IHdpdGggYSBjbGVhbiBzbGF0ZSBkYXRhIHN0b3JlCi0gICAgW1tXS1dlYnNpdGVEYXRhU3Rv
cmUgZGVmYXVsdERhdGFTdG9yZV0gcmVtb3ZlRGF0YU9mVHlwZXM6W1dLV2Vic2l0ZURhdGFTdG9y
ZSBhbGxXZWJzaXRlRGF0YVR5cGVzXSBtb2RpZmllZFNpbmNlOltOU0RhdGUgZGlzdGFudFBhc3Rd
IGNvbXBsZXRpb25IYW5kbGVyOl4oKSB7CisgICAgW2RhdGFTdG9yZSByZW1vdmVEYXRhT2ZUeXBl
czpbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbFdlYnNpdGVEYXRhVHlwZXNdIG1vZGlmaWVkU2luY2U6
W05TRGF0ZSBkaXN0YW50UGFzdF0gY29tcGxldGlvbkhhbmRsZXI6XigpIHsKICAgICAgICAgZG9u
ZSA9IHRydWU7CiAgICAgfV07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsK
ICAgICBkb25lID0gZmFsc2U7CiAKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtb
V0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIFtjb25maWd1cmF0aW9u
IHNldFdlYnNpdGVEYXRhU3RvcmU6ZGF0YVN0b3JlXTsKIAogICAgIGF1dG8gbWVzc2FnZUhhbmRs
ZXIgPSBhZG9wdE5TKFtbU1dNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOwogICAgIFtbY29u
ZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVy
Om1lc3NhZ2VIYW5kbGVyLmdldCgpIG5hbWU6QCJzdyJdOwpAQCAtMTgxMSw3ICsxODQ1LDYgQEAg
VEVTVChTZXJ2aWNlV29ya2VycywgUGFyYWxsZWxQcm9jZXNzTGF1bgogICAgIFtjb25maWd1cmF0
aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6aGFuZGxlcjEuZ2V0KCkgZm9yVVJMU2NoZW1lOkAic3cx
Il07CiAKICAgICBhdXRvICpwcm9jZXNzUG9vbCA9IGNvbmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vz
c1Bvb2w7Ci0gICAgW3Byb2Nlc3NQb29sIF9yZWdpc3RlclVSTFNjaGVtZVNlcnZpY2VXb3JrZXJz
Q2FuSGFuZGxlOkAic3cxIl07CiAKICAgICBhdXRvIHdlYlZpZXcxID0gYWRvcHROUyhbW1dLV2Vi
VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25m
aWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKICAgICBOU1VSTFJlcXVlc3QgKnJlcXVl
c3QxID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpA
InN3MTovL2hvc3QvbWFpbi5odG1sIl1dOwpAQCAtMTgzMiw4ICsxODY1LDEwIEBAIFRFU1QoU2Vy
dmljZVdvcmtlcnMsIFRocm90dGxlQ3Jhc2gpCiAKICAgICBbV0tXZWJzaXRlRGF0YVN0b3JlIF9h
bGxvd1dlYnNpdGVEYXRhUmVjb3Jkc0ZvckFsbE9yaWdpbnNdOwogCisgICAgYXV0byogZGF0YVN0
b3JlID0gZGF0YVN0b3JlV2l0aFJlZ2lzdGVyZWRTZXJ2aWNlV29ya2VyU2NoZW1lKEAic3cxIik7
CisKICAgICAvLyBTdGFydCB3aXRoIGEgY2xlYW4gc2xhdGUgZGF0YSBzdG9yZQotICAgIFtbV0tX
ZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVdIHJlbW92ZURhdGFPZlR5cGVzOltXS1dl
YnNpdGVEYXRhU3RvcmUgYWxsV2Vic2l0ZURhdGFUeXBlc10gbW9kaWZpZWRTaW5jZTpbTlNEYXRl
IGRpc3RhbnRQYXN0XSBjb21wbGV0aW9uSGFuZGxlcjpeKCkgeworICAgIFtkYXRhU3RvcmUgcmVt
b3ZlRGF0YU9mVHlwZXM6W1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxXZWJzaXRlRGF0YVR5cGVzXSBt
b2RpZmllZFNpbmNlOltOU0RhdGUgZGlzdGFudFBhc3RdIGNvbXBsZXRpb25IYW5kbGVyOl4oKSB7
CiAgICAgICAgIGRvbmUgPSB0cnVlOwogICAgIH1dOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnJ1bigmZG9uZSk7CkBAIC0xODUxLDYgKzE4ODYsNyBAQCBURVNUKFNlcnZpY2VXb3JrZXJzLCBU
aHJvdHRsZUNyYXNoKQogICAgIH1dOwogCiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHRO
UyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBbY29uZmlndXJh
dGlvbiBzZXRXZWJzaXRlRGF0YVN0b3JlOmRhdGFTdG9yZV07CiAjaWYgUExBVEZPUk0oTUFDKQog
ICAgIFtbY29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc10gX3NldEFwcE5hcEVuYWJsZWQ6WUVTXTsK
ICNlbmRpZgpAQCAtMTg1OCw3ICsxODk0LDYgQEAgVEVTVChTZXJ2aWNlV29ya2VycywgVGhyb3R0
bGVDcmFzaCkKICAgICBbY29uZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVyOmhhbmRsZXIu
Z2V0KCkgZm9yVVJMU2NoZW1lOkAic3cxIl07CiAKICAgICBhdXRvICpwcm9jZXNzUG9vbCA9IGNv
bmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vzc1Bvb2w7Ci0gICAgW3Byb2Nlc3NQb29sIF9yZWdpc3Rl
clVSTFNjaGVtZVNlcnZpY2VXb3JrZXJzQ2FuSGFuZGxlOkAic3cxIl07CiAKICAgICBhdXRvIHdl
YlZpZXcxID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNN
YWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgp
IGFkZFRvV2luZG93OiBZRVNdKTsKICAgICBbd2ViVmlldzEgc2V0TmF2aWdhdGlvbkRlbGVnYXRl
Om5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKV07CkBAIC0xODgwLDYgKzE5MTUsNyBAQCBURVNUKFNl
cnZpY2VXb3JrZXJzLCBUaHJvdHRsZUNyYXNoKQogICAgIFtbd2ViVmlldzJDb25maWd1cmF0aW9u
IHByZWZlcmVuY2VzXSBfc2V0QXBwTmFwRW5hYmxlZDpOT107CiAjZW5kaWYKICAgICBbd2ViVmll
dzJDb25maWd1cmF0aW9uIHNldFByb2Nlc3NQb29sOnByb2Nlc3NQb29sXTsKKyAgICBbd2ViVmll
dzJDb25maWd1cmF0aW9uIHNldFdlYnNpdGVEYXRhU3RvcmU6ZGF0YVN0b3JlXTsKICAgICBbW3dl
YlZpZXcyQ29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3Nh
Z2VIYW5kbGVyOm1lc3NhZ2VIYW5kbGVyLmdldCgpIG5hbWU6QCJzdyJdOwogICAgIFt3ZWJWaWV3
MkNvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpoYW5kbGVyLmdldCgpIGZvclVSTFNj
aGVtZTpAInN3MSJdOwogICAgIHdlYlZpZXcyQ29uZmlndXJhdGlvbi5nZXQoKS5fcmVsYXRlZFdl
YlZpZXcgPSB3ZWJWaWV3MS5nZXQoKTsKQEAgLTE5MDAsMTQgKzE5MzYsMTcgQEAgVEVTVChTZXJ2
aWNlV29ya2VycywgTG9hZERhdGEpCiAKICAgICBbV0tXZWJzaXRlRGF0YVN0b3JlIF9hbGxvd1dl
YnNpdGVEYXRhUmVjb3Jkc0ZvckFsbE9yaWdpbnNdOwogCisgICAgYXV0byogZGF0YVN0b3JlID0g
ZGF0YVN0b3JlV2l0aFJlZ2lzdGVyZWRTZXJ2aWNlV29ya2VyU2NoZW1lKEAic3ciKTsKKwogICAg
IC8vIFN0YXJ0IHdpdGggYSBjbGVhbiBzbGF0ZSBkYXRhIHN0b3JlCi0gICAgW1tXS1dlYnNpdGVE
YXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV0gcmVtb3ZlRGF0YU9mVHlwZXM6W1dLV2Vic2l0ZURh
dGFTdG9yZSBhbGxXZWJzaXRlRGF0YVR5cGVzXSBtb2RpZmllZFNpbmNlOltOU0RhdGUgZGlzdGFu
dFBhc3RdIGNvbXBsZXRpb25IYW5kbGVyOl4oKSB7CisgICAgW2RhdGFTdG9yZSByZW1vdmVEYXRh
T2ZUeXBlczpbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbFdlYnNpdGVEYXRhVHlwZXNdIG1vZGlmaWVk
U2luY2U6W05TRGF0ZSBkaXN0YW50UGFzdF0gY29tcGxldGlvbkhhbmRsZXI6XigpIHsKICAgICAg
ICAgZG9uZSA9IHRydWU7CiAgICAgfV07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZk
b25lKTsKICAgICBkb25lID0gZmFsc2U7CiAKICAgICBSZXRhaW5QdHI8V0tXZWJWaWV3Q29uZmln
dXJhdGlvbj4gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9u
IGFsbG9jXSBpbml0XSk7CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0V2Vic2l0ZURhdGFTdG9yZTpk
YXRhU3RvcmVdOwogCiAgICAgUmV0YWluUHRyPFNXTWVzc2FnZUhhbmRsZXI+IG1lc3NhZ2VIYW5k
bGVyID0gYWRvcHROUyhbW1NXTWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKICAgICBbW2Nv
bmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxl
cjptZXNzYWdlSGFuZGxlci5nZXQoKSBuYW1lOkAic3ciXTsKQEAgLTE5MTgsNyArMTk1Nyw2IEBA
IFRFU1QoU2VydmljZVdvcmtlcnMsIExvYWREYXRhKQogICAgIFtjb25maWd1cmF0aW9uIHNldFVS
TFNjaGVtZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBmb3JVUkxTY2hlbWU6QCJTVyJdOwogCiAgICAg
UmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2Nd
IGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpj
b25maWd1cmF0aW9uLmdldCgpXSk7Ci0gICAgW3dlYlZpZXcuZ2V0KCkuY29uZmlndXJhdGlvbi5w
cm9jZXNzUG9vbCBfcmVnaXN0ZXJVUkxTY2hlbWVTZXJ2aWNlV29ya2Vyc0NhbkhhbmRsZTpAInN3
Il07CiAKICAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1Rlc3RTV0FzeW5jTmF2aWdhdGlv
bkRlbGVnYXRlIGFsbG9jXSBpbml0XSk7CiAgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVn
YXRlOmRlbGVnYXRlLmdldCgpXTsKQEAgLTE5NjMsNiArMjAwMSw3IEBAIFRFU1QoU2VydmljZVdv
cmtlcnMsIFJlc3RvcmVGcm9tRGlza05vbkQKIAogICAgICAgICBhdXRvIHdlYnNpdGVEYXRhU3Rv
cmVDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0
aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgICAgIHdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9u
LmdldCgpLl9zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5ID0gc3dEQlBhdGg7Cisg
ICAgICAgIFt3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiByZWdpc3RlclVSTFNjaGVtZVNl
cnZpY2VXb3JrZXJzQ2FuSGFuZGxlRm9yVGVzdGluZzpAInN3Il07CiAgICAgICAgIGF1dG8gbm9u
RGVmYXVsdERhdGFTdG9yZSA9IGFkb3B0TlMoW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9p
bml0V2l0aENvbmZpZ3VyYXRpb246d2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCld
KTsKICAgICAgICAgY29uZmlndXJhdGlvbi5nZXQoKS53ZWJzaXRlRGF0YVN0b3JlID0gbm9uRGVm
YXVsdERhdGFTdG9yZS5nZXQoKTsKIApAQCAtMTk3NSw3ICsyMDE0LDYgQEAgVEVTVChTZXJ2aWNl
V29ya2VycywgUmVzdG9yZUZyb21EaXNrTm9uRAogICAgICAgICBbY29uZmlndXJhdGlvbiBzZXRV
UkxTY2hlbWVIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgZm9yVVJMU2NoZW1lOkAiU1ciXTsKIAogICAg
ICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZy
YW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlv
bi5nZXQoKV0pOwotICAgICAgICBbd2ViVmlldy5nZXQoKS5jb25maWd1cmF0aW9uLnByb2Nlc3NQ
b29sIF9yZWdpc3RlclVSTFNjaGVtZVNlcnZpY2VXb3JrZXJzQ2FuSGFuZGxlOkAic3ciXTsKICAg
ICAgICAgcHJvdGVjdGVkUHJvY2Vzc1Bvb2wgPSB3ZWJWaWV3LmdldCgpLmNvbmZpZ3VyYXRpb24u
cHJvY2Vzc1Bvb2w7CiAKICAgICAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVz
dCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAInN3Oi8vaG9zdC9tYWluLmh0
bWwiXV1dOwpAQCAtMTk5MSw2ICsyMDI5LDcgQEAgVEVTVChTZXJ2aWNlV29ya2VycywgUmVzdG9y
ZUZyb21EaXNrTm9uRAogCiAgICAgICAgIGF1dG8gd2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRp
b24gPSBhZG9wdE5TKFtbX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gYWxsb2NdIGlu
aXRdKTsKICAgICAgICAgd2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCkuX3NlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkgPSBzd0RCUGF0aDsKKyAgICAgICAgW3dlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIHJlZ2lzdGVyVVJMU2NoZW1lU2VydmljZVdvcmtlcnND
YW5IYW5kbGVGb3JUZXN0aW5nOkAic3ciXTsKICAgICAgICAgYXV0byBub25EZWZhdWx0RGF0YVN0
b3JlID0gYWRvcHROUyhbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29uZmln
dXJhdGlvbjp3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKV0pOwogICAgICAgICBj
b25maWd1cmF0aW9uLmdldCgpLndlYnNpdGVEYXRhU3RvcmUgPSBub25EZWZhdWx0RGF0YVN0b3Jl
LmdldCgpOwogCkBAIC0yMDAzLDcgKzIwNDIsNiBAQCBURVNUKFNlcnZpY2VXb3JrZXJzLCBSZXN0
b3JlRnJvbURpc2tOb25ECiAgICAgICAgIFtjb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRs
ZXI6aGFuZGxlci5nZXQoKSBmb3JVUkxTY2hlbWU6QCJTVyJdOwogCiAgICAgICAgIGF1dG8gd2Vi
VmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVj
dCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7Ci0g
ICAgICAgIFt3ZWJWaWV3LmdldCgpLmNvbmZpZ3VyYXRpb24ucHJvY2Vzc1Bvb2wgX3JlZ2lzdGVy
VVJMU2NoZW1lU2VydmljZVdvcmtlcnNDYW5IYW5kbGU6QCJzdyJdOwogCiAgICAgICAgIFt3ZWJW
aWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdp
dGhTdHJpbmc6QCJzdzovL2hvc3QvbWFpbi5odG1sIl1dXTsKIApAQCAtMjAxNiwxNCArMjA1NCwx
NyBAQCBURVNUKFNlcnZpY2VXb3JrZXJzLCBTdXNwZW5kTmV0d29ya1Byb2NlCiB7CiAgICAgW1dL
V2Vic2l0ZURhdGFTdG9yZSBfYWxsb3dXZWJzaXRlRGF0YVJlY29yZHNGb3JBbGxPcmlnaW5zXTsK
IAorICAgIGF1dG8qIGRhdGFTdG9yZSA9IGRhdGFTdG9yZVdpdGhSZWdpc3RlcmVkU2VydmljZVdv
cmtlclNjaGVtZShAInN3Iik7CisgICAgCiAgICAgLy8gU3RhcnQgd2l0aCBhIGNsZWFuIHNsYXRl
IGRhdGEgc3RvcmUKLSAgICBbW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXSBy
ZW1vdmVEYXRhT2ZUeXBlczpbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbFdlYnNpdGVEYXRhVHlwZXNd
IG1vZGlmaWVkU2luY2U6W05TRGF0ZSBkaXN0YW50UGFzdF0gY29tcGxldGlvbkhhbmRsZXI6Xigp
IHsKKyAgICBbZGF0YVN0b3JlIHJlbW92ZURhdGFPZlR5cGVzOltXS1dlYnNpdGVEYXRhU3RvcmUg
YWxsV2Vic2l0ZURhdGFUeXBlc10gbW9kaWZpZWRTaW5jZTpbTlNEYXRlIGRpc3RhbnRQYXN0XSBj
b21wbGV0aW9uSGFuZGxlcjpeKCkgewogICAgICAgICBkb25lID0gdHJ1ZTsKICAgICB9XTsKICAg
ICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOwogICAgIGRvbmUgPSBmYWxzZTsKIAog
ICAgIFJldGFpblB0cjxXS1dlYlZpZXdDb25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uID0gYWRv
cHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBbY29uZmln
dXJhdGlvbiBzZXRXZWJzaXRlRGF0YVN0b3JlOmRhdGFTdG9yZV07CiAKICAgICBSZXRhaW5QdHI8
U1dNZXNzYWdlSGFuZGxlcj4gbWVzc2FnZUhhbmRsZXIgPSBhZG9wdE5TKFtbU1dNZXNzYWdlSGFu
ZGxlciBhbGxvY10gaW5pdF0pOwogICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRy
b2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOm1lc3NhZ2VIYW5kbGVyLmdldCgpIG5hbWU6
QCJzdyJdOwpAQCAtMjAzNCw3ICsyMDc1LDYgQEAgVEVTVChTZXJ2aWNlV29ya2VycywgU3VzcGVu
ZE5ldHdvcmtQcm9jZQogICAgIFtjb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6aGFu
ZGxlci5nZXQoKSBmb3JVUkxTY2hlbWU6QCJTVyJdOwogCiAgICAgUmV0YWluUHRyPFdLV2ViVmll
dz4gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNN
YWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgp
XSk7Ci0gICAgW3dlYlZpZXcuZ2V0KCkuY29uZmlndXJhdGlvbi5wcm9jZXNzUG9vbCBfcmVnaXN0
ZXJVUkxTY2hlbWVTZXJ2aWNlV29ya2Vyc0NhbkhhbmRsZTpAInN3Il07CiAKICAgICBhdXRvIGRl
bGVnYXRlID0gYWRvcHROUyhbW1Rlc3RTV0FzeW5jTmF2aWdhdGlvbkRlbGVnYXRlIGFsbG9jXSBp
bml0XSk7CiAgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdldCgp
XTsKQEAgLTIxMDEsMTQgKzIxNDEsMTcgQEAgVEVTVChTZXJ2aWNlV29ya2VycywgUHJvY2Vzc1Bl
clNlc3Npb24pCiB7CiAgICAgW1dLV2Vic2l0ZURhdGFTdG9yZSBfYWxsb3dXZWJzaXRlRGF0YVJl
Y29yZHNGb3JBbGxPcmlnaW5zXTsKIAorICAgIGF1dG8qIGRhdGFTdG9yZSA9IGRhdGFTdG9yZVdp
dGhSZWdpc3RlcmVkU2VydmljZVdvcmtlclNjaGVtZShAInN3MSIpOworICAgIAogICAgIC8vIFN0
YXJ0IHdpdGggYSBjbGVhbiBzbGF0ZSBkYXRhIHN0b3JlCi0gICAgW1tXS1dlYnNpdGVEYXRhU3Rv
cmUgZGVmYXVsdERhdGFTdG9yZV0gcmVtb3ZlRGF0YU9mVHlwZXM6W1dLV2Vic2l0ZURhdGFTdG9y
ZSBhbGxXZWJzaXRlRGF0YVR5cGVzXSBtb2RpZmllZFNpbmNlOltOU0RhdGUgZGlzdGFudFBhc3Rd
IGNvbXBsZXRpb25IYW5kbGVyOl4oKSB7CisgICAgW2RhdGFTdG9yZSByZW1vdmVEYXRhT2ZUeXBl
czpbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbFdlYnNpdGVEYXRhVHlwZXNdIG1vZGlmaWVkU2luY2U6
W05TRGF0ZSBkaXN0YW50UGFzdF0gY29tcGxldGlvbkhhbmRsZXI6XigpIHsKICAgICAgICAgZG9u
ZSA9IHRydWU7CiAgICAgfV07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsK
ICAgICBkb25lID0gZmFsc2U7CiAKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtb
V0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIFtjb25maWd1cmF0aW9u
IHNldFdlYnNpdGVEYXRhU3RvcmU6ZGF0YVN0b3JlXTsKIAogICAgIGF1dG8gbWVzc2FnZUhhbmRs
ZXIgPSBhZG9wdE5TKFtbU1dNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOwogICAgIFtbY29u
ZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVy
Om1lc3NhZ2VIYW5kbGVyLmdldCgpIG5hbWU6QCJzdyJdOwpAQCAtMjEyMSwxMSArMjE2NCwxMCBA
QCBURVNUKFNlcnZpY2VXb3JrZXJzLCBQcm9jZXNzUGVyU2Vzc2lvbikKICAgICBbY29uZmlndXJh
dGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVyOmhhbmRsZXIxLmdldCgpIGZvclVSTFNjaGVtZTpAInN3
MSJdOwogCiAgICAgV0tQcm9jZXNzUG9vbCAqcHJvY2Vzc1Bvb2wgPSBjb25maWd1cmF0aW9uLmdl
dCgpLnByb2Nlc3NQb29sOwotICAgIFtwcm9jZXNzUG9vbCBfcmVnaXN0ZXJVUkxTY2hlbWVTZXJ2
aWNlV29ya2Vyc0NhbkhhbmRsZTpAInN3MSJdOwogCiAgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0
ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAInN3
MTovL2hvc3QvbWFpbi5odG1sIl1dOwogCi0gICAgY29uZmlndXJhdGlvbi5nZXQoKS53ZWJzaXRl
RGF0YVN0b3JlID0gW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXTsKKyAgICBj
b25maWd1cmF0aW9uLmdldCgpLndlYnNpdGVEYXRhU3RvcmUgPSBkYXRhU3RvcmU7CiAKICAgICBh
dXRvIHdlYlZpZXcxID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpO
U01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0
KCldKTsKICAgICBbd2ViVmlldzEgbG9hZFJlcXVlc3Q6cmVxdWVzdF07CkBAIC0yMTM0LDcgKzIx
NzYsOSBAQCBURVNUKFNlcnZpY2VXb3JrZXJzLCBQcm9jZXNzUGVyU2Vzc2lvbikKIAogICAgIEVY
UEVDVF9FUSgxVSwgcHJvY2Vzc1Bvb2wuX3NlcnZpY2VXb3JrZXJQcm9jZXNzQ291bnQpOwogCi0g
ICAgY29uZmlndXJhdGlvbi5nZXQoKS53ZWJzaXRlRGF0YVN0b3JlID0gW1dLV2Vic2l0ZURhdGFT
dG9yZSBub25QZXJzaXN0ZW50RGF0YVN0b3JlXTsKKyAgICBfV0tXZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbiAqbm9uUGVyc2lzdGVudENvbmZpZ3VyYXRpb24gPSBbW1tfV0tXZWJzaXRlRGF0
YVN0b3JlQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdE5vblBlcnNpc3RlbnRDb25maWd1cmF0aW9u
XSBhdXRvcmVsZWFzZV07CisgICAgW25vblBlcnNpc3RlbnRDb25maWd1cmF0aW9uIHJlZ2lzdGVy
VVJMU2NoZW1lU2VydmljZVdvcmtlcnNDYW5IYW5kbGVGb3JUZXN0aW5nOkAic3cxIl07CisgICAg
Y29uZmlndXJhdGlvbi5nZXQoKS53ZWJzaXRlRGF0YVN0b3JlID0gW1tbV0tXZWJzaXRlRGF0YVN0
b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOm5vblBlcnNpc3RlbnRDb25maWd1cmF0
aW9uXSBhdXRvcmVsZWFzZV07CiAKICAgICBhdXRvIHdlYlZpZXcyID0gYWRvcHROUyhbW1dLV2Vi
VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25m
aWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKICAgICBbd2ViVmlldzIgbG9hZFJlcXVl
c3Q6cmVxdWVzdF07CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1N0b3JhZ2VRdW90YS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1N0b3JhZ2VRdW90YS5tbQkocmV2aXNpb24gMjUwNjY1KQorKysgVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TdG9yYWdlUXVvdGEubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTIyNyw2ICsyMjcsOCBAQCBURVNUKFdlYktpdCwgUXVvdGFEZWxlZ2F0ZSkKICAg
ICBkb25lID0gZmFsc2U7CiAgICAgX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gKnN0
b3JlQ29uZmlndXJhdGlvbiA9IFtbW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIGFs
bG9jXSBpbml0XSBhdXRvcmVsZWFzZV07CiAgICAgc3RvcmVDb25maWd1cmF0aW9uLnBlck9yaWdp
blN0b3JhZ2VRdW90YSA9IDEwMjQgKiA0MDA7CisgICAgW3N0b3JlQ29uZmlndXJhdGlvbiByZWdp
c3RlclVSTFNjaGVtZVNlcnZpY2VXb3JrZXJzQ2FuSGFuZGxlRm9yVGVzdGluZzpAInF0MSJdOwor
ICAgIFtzdG9yZUNvbmZpZ3VyYXRpb24gcmVnaXN0ZXJVUkxTY2hlbWVTZXJ2aWNlV29ya2Vyc0Nh
bkhhbmRsZUZvclRlc3Rpbmc6QCJxdDIiXTsKICAgICBXS1dlYnNpdGVEYXRhU3RvcmUgKmRhdGFT
dG9yZSA9IFtbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlv
bjpzdG9yZUNvbmZpZ3VyYXRpb25dIGF1dG9yZWxlYXNlXTsKICAgICBbZGF0YVN0b3JlIHJlbW92
ZURhdGFPZlR5cGVzOltXS1dlYnNpdGVEYXRhU3RvcmUgYWxsV2Vic2l0ZURhdGFUeXBlc10gbW9k
aWZpZWRTaW5jZTpbTlNEYXRlIGRpc3RhbnRQYXN0XSBjb21wbGV0aW9uSGFuZGxlcjpeKCkgewog
ICAgICAgICBkb25lID0gdHJ1ZTsKQEAgLTI0MiwxMiArMjQ0LDEwIEBAIFRFU1QoV2ViS2l0LCBR
dW90YURlbGVnYXRlKQogICAgIGF1dG8gaGFuZGxlcjEgPSBhZG9wdE5TKFtbU3RvcmFnZVNjaGVt
ZXMgYWxsb2NdIGluaXRdKTsKICAgICBoYW5kbGVyMS0+cmVzb3VyY2VzLnNldCgicXQxOi8vdGVz
dDEuaHRtbCIsIFJlc291cmNlSW5mbyB7IEAidGV4dC9odG1sIiwgVGVzdEJ5dGVzIH0pOwogICAg
IFtjb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6aGFuZGxlcjEuZ2V0KCkgZm9yVVJM
U2NoZW1lOkAiUVQxIl07Ci0gICAgW2NvbmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vzc1Bvb2wgX3Jl
Z2lzdGVyVVJMU2NoZW1lU2VydmljZVdvcmtlcnNDYW5IYW5kbGU6QCJxdDEiXTsKIAogICAgIGF1
dG8gaGFuZGxlcjIgPSBhZG9wdE5TKFtbU3RvcmFnZVNjaGVtZXMgYWxsb2NdIGluaXRdKTsKICAg
ICBoYW5kbGVyMi0+cmVzb3VyY2VzLnNldCgicXQyOi8vdGVzdDIuaHRtbCIsIFJlc291cmNlSW5m
byB7IEAidGV4dC9odG1sIiwgVGVzdEJ5dGVzIH0pOwogICAgIFtjb25maWd1cmF0aW9uIHNldFVS
TFNjaGVtZUhhbmRsZXI6aGFuZGxlcjIuZ2V0KCkgZm9yVVJMU2NoZW1lOkAiUVQyIl07Ci0gICAg
W2NvbmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vzc1Bvb2wgX3JlZ2lzdGVyVVJMU2NoZW1lU2Vydmlj
ZVdvcmtlcnNDYW5IYW5kbGU6QCJxdDIiXTsKIAogICAgIGF1dG8gd2ViVmlldzEgPSBhZG9wdE5T
KFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgw
MCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCkgYWRkVG9XaW5kb3c6WUVT
XSk7CiAgICAgYXV0byBkZWxlZ2F0ZTEgPSBhZG9wdE5TKFtbUXVvdGFEZWxlZ2F0ZSBhbGxvY10g
aW5pdF0pOwpAQCAtMjkwLDYgKzI5MCw3IEBAIFRFU1QoV2ViS2l0LCBRdW90YURlbGVnYXRlUmVs
b2FkKQogICAgIGRvbmUgPSBmYWxzZTsKICAgICBfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJh
dGlvbiAqc3RvcmVDb25maWd1cmF0aW9uID0gW1tbX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3Vy
YXRpb24gYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKICAgICBzdG9yZUNvbmZpZ3VyYXRpb24u
cGVyT3JpZ2luU3RvcmFnZVF1b3RhID0gMTAyNCAqIDQwMDsKKyAgICBbc3RvcmVDb25maWd1cmF0
aW9uIHJlZ2lzdGVyVVJMU2NoZW1lU2VydmljZVdvcmtlcnNDYW5IYW5kbGVGb3JUZXN0aW5nOkAi
cXQiXTsKICAgICBXS1dlYnNpdGVEYXRhU3RvcmUgKmRhdGFTdG9yZSA9IFtbW1dLV2Vic2l0ZURh
dGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpzdG9yZUNvbmZpZ3VyYXRpb25d
IGF1dG9yZWxlYXNlXTsKICAgICBbZGF0YVN0b3JlIHJlbW92ZURhdGFPZlR5cGVzOltXS1dlYnNp
dGVEYXRhU3RvcmUgYWxsV2Vic2l0ZURhdGFUeXBlc10gbW9kaWZpZWRTaW5jZTpbTlNEYXRlIGRp
c3RhbnRQYXN0XSBjb21wbGV0aW9uSGFuZGxlcjpeKCkgewogICAgICAgICBkb25lID0gdHJ1ZTsK
QEAgLTMwNSw3ICszMDYsNiBAQCBURVNUKFdlYktpdCwgUXVvdGFEZWxlZ2F0ZVJlbG9hZCkKICAg
ICBhdXRvIGhhbmRsZXIgPSBhZG9wdE5TKFtbU3RvcmFnZVNjaGVtZXMgYWxsb2NdIGluaXRdKTsK
ICAgICBoYW5kbGVyLT5yZXNvdXJjZXMuc2V0KCJxdDovL3Rlc3QxLmh0bWwiLCBSZXNvdXJjZUlu
Zm8geyBAInRleHQvaHRtbCIsIFRlc3RCeXRlcyB9KTsKICAgICBbY29uZmlndXJhdGlvbiBzZXRV
UkxTY2hlbWVIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgZm9yVVJMU2NoZW1lOkAiUVQiXTsKLSAgICBb
Y29uZmlndXJhdGlvbi5nZXQoKS5wcm9jZXNzUG9vbCBfcmVnaXN0ZXJVUkxTY2hlbWVTZXJ2aWNl
V29ya2Vyc0NhbkhhbmRsZTpAInF0Il07CiAgICAgCiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHRO
UyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4
MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpIGFkZFRvV2luZG93OllF
U10pOwogICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbUXVvdGFEZWxlZ2F0ZSBhbGxvY10g
aW5pdF0pOwpAQCAtMzM3LDYgKzMzNyw3IEBAIFRFU1QoV2ViS2l0LCBRdW90YURlbGVnYXRlTmF2
aWdhdGVGcmFnbWUKIHsKICAgICBkb25lID0gZmFsc2U7CiAgICAgX1dLV2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb24gKnN0b3JlQ29uZmlndXJhdGlvbiA9IFtbW19XS1dlYnNpdGVEYXRhU3Rv
cmVDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07CisgICAgW3N0b3JlQ29u
ZmlndXJhdGlvbiByZWdpc3RlclVSTFNjaGVtZVNlcnZpY2VXb3JrZXJzQ2FuSGFuZGxlRm9yVGVz
dGluZzpAInF0Il07CiAgICAgc3RvcmVDb25maWd1cmF0aW9uLnBlck9yaWdpblN0b3JhZ2VRdW90
YSA9IDEwMjQgKiA0MDA7CiAgICAgV0tXZWJzaXRlRGF0YVN0b3JlICpkYXRhU3RvcmUgPSBbW1tX
S1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246c3RvcmVDb25m
aWd1cmF0aW9uXSBhdXRvcmVsZWFzZV07CiAgICAgW2RhdGFTdG9yZSByZW1vdmVEYXRhT2ZUeXBl
czpbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbFdlYnNpdGVEYXRhVHlwZXNdIG1vZGlmaWVkU2luY2U6
W05TRGF0ZSBkaXN0YW50UGFzdF0gY29tcGxldGlvbkhhbmRsZXI6XigpIHsKQEAgLTM1Myw3ICsz
NTQsNiBAQCBURVNUKFdlYktpdCwgUXVvdGFEZWxlZ2F0ZU5hdmlnYXRlRnJhZ21lCiAgICAgYXV0
byBoYW5kbGVyID0gYWRvcHROUyhbW1N0b3JhZ2VTY2hlbWVzIGFsbG9jXSBpbml0XSk7CiAgICAg
aGFuZGxlci0+cmVzb3VyY2VzLnNldCgicXQ6Ly90ZXN0MS5odG1sIiwgUmVzb3VyY2VJbmZvIHsg
QCJ0ZXh0L2h0bWwiLCBUZXN0Qnl0ZXMgfSk7CiAgICAgW2NvbmZpZ3VyYXRpb24gc2V0VVJMU2No
ZW1lSGFuZGxlcjpoYW5kbGVyLmdldCgpIGZvclVSTFNjaGVtZTpAIlFUIl07Ci0gICAgW2NvbmZp
Z3VyYXRpb24uZ2V0KCkucHJvY2Vzc1Bvb2wgX3JlZ2lzdGVyVVJMU2NoZW1lU2VydmljZVdvcmtl
cnNDYW5IYW5kbGU6QCJxdCJdOwogCiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RX
S1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkg
Y29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpIGFkZFRvV2luZG93OllFU10pOwogICAg
IGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbUXVvdGFEZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwpA
QCAtMzg4LDEyICszODgsMTcgQEAgVEVTVChXZWJLaXQsIFF1b3RhRGVsZWdhdGVOYXZpZ2F0ZUZy
YWdtZQogVEVTVChXZWJLaXQsIERlZmF1bHRRdW90YSkKIHsKICAgICBkb25lID0gZmFsc2U7Ci0g
ICAgW1tXS1dlYnNpdGVEYXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV0gcmVtb3ZlRGF0YU9mVHlw
ZXM6W1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxXZWJzaXRlRGF0YVR5cGVzXSBtb2RpZmllZFNpbmNl
OltOU0RhdGUgZGlzdGFudFBhc3RdIGNvbXBsZXRpb25IYW5kbGVyOl4oKSB7CisgICAgX1dLV2Vi
c2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gKnN0b3JlQ29uZmlndXJhdGlvbiA9IFtbW19XS1dl
YnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07Cisg
ICAgW3N0b3JlQ29uZmlndXJhdGlvbiByZWdpc3RlclVSTFNjaGVtZVNlcnZpY2VXb3JrZXJzQ2Fu
SGFuZGxlRm9yVGVzdGluZzpAInF0Il07CisgICAgV0tXZWJzaXRlRGF0YVN0b3JlICpkYXRhU3Rv
cmUgPSBbW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246
c3RvcmVDb25maWd1cmF0aW9uXSBhdXRvcmVsZWFzZV07CisKKyAgICBbZGF0YVN0b3JlIHJlbW92
ZURhdGFPZlR5cGVzOltXS1dlYnNpdGVEYXRhU3RvcmUgYWxsV2Vic2l0ZURhdGFUeXBlc10gbW9k
aWZpZWRTaW5jZTpbTlNEYXRlIGRpc3RhbnRQYXN0XSBjb21wbGV0aW9uSGFuZGxlcjpeKCkgewog
ICAgICAgICBkb25lID0gdHJ1ZTsKICAgICB9XTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpy
dW4oJmRvbmUpOwogCiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmll
d0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRXZWJz
aXRlRGF0YVN0b3JlOmRhdGFTdG9yZV07CiAKICAgICBhdXRvIG1lc3NhZ2VIYW5kbGVyID0gYWRv
cHROUyhbW1F1b3RhTWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKICAgICBbW2NvbmZpZ3Vy
YXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjptZXNz
YWdlSGFuZGxlci5nZXQoKSBuYW1lOkAicXQiXTsKQEAgLTQwMSw3ICs0MDYsNiBAQCBURVNUKFdl
YktpdCwgRGVmYXVsdFF1b3RhKQogICAgIGF1dG8gaGFuZGxlciA9IGFkb3B0TlMoW1tTdG9yYWdl
U2NoZW1lcyBhbGxvY10gaW5pdF0pOwogICAgIGhhbmRsZXItPnJlc291cmNlcy5zZXQoInF0Oi8v
dGVzdDEuaHRtbCIsIFJlc291cmNlSW5mbyB7IEAidGV4dC9odG1sIiwgVGVzdFVybEJ5dGVzIH0p
OwogICAgIFtjb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBm
b3JVUkxTY2hlbWU6QCJRVCJdOwotICAgIFtjb25maWd1cmF0aW9uLmdldCgpLnByb2Nlc3NQb29s
IF9yZWdpc3RlclVSTFNjaGVtZVNlcnZpY2VXb3JrZXJzQ2FuSGFuZGxlOkAicXQiXTsKIAogICAg
IGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZy
YW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlv
bi5nZXQoKSBhZGRUb1dpbmRvdzpZRVNdKTsKICAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhb
W1F1b3RhRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380175</attachid>
            <date>2019-10-03 18:03:57 -0700</date>
            <delta_ts>2019-10-04 07:54:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202553-20191003180356.patch</filename>
            <type>text/plain</type>
            <size>70908</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1MDY2NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDE5LTEwLTAzICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTW92ZSBXS1By
b2Nlc3NQb29sLl9yZWdpc3RlclVSTFNjaGVtZVNlcnZpY2VXb3JrZXJzQ2FuSGFuZGxlIHRvIF9X
S1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDI1NTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OlNXU2VydmVyKToKKyAgICAgICAgKiB3
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTV1Nl
cnZlcjo6cmVnaXN0ZXJlZFNjaGVtZXMgY29uc3QpOgorICAgICAgICAqIHdvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZl
ckpvYlF1ZXVlOjpydW5SZWdpc3RlckpvYik6CisKIDIwMTktMTAtMDMgIHlvdWVubiBmYWJsZXQg
IDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlZ3Jlc3Npb246IGlPUyAxMy4xIE1lZGlh
U3RyZWFtVHJhY2suZW5hYmxlZCA9IGZhbHNlIGtpbGxzIGF1ZGlvIHRyYWNrCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAko
cmV2aXNpb24gMjUwNjY1KQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5OSwxMCArMjk5LDExIEBAIHZvaWQg
U1dTZXJ2ZXI6OkNvbm5lY3Rpb246OnN5bmNUZXJtaW5hdGUKICAgICAgICAgbV9zZXJ2ZXIuc3lu
Y1Rlcm1pbmF0ZVdvcmtlcigqd29ya2VyKTsKIH0KIAotU1dTZXJ2ZXI6OlNXU2VydmVyKFVuaXF1
ZVJlZjxTV09yaWdpblN0b3JlPiYmIG9yaWdpblN0b3JlLCBib29sIHByb2Nlc3NUZXJtaW5hdGlv
bkRlbGF5RW5hYmxlZCwgU3RyaW5nJiYgcmVnaXN0cmF0aW9uRGF0YWJhc2VEaXJlY3RvcnksIFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ3JlYXRlQ29udGV4dENvbm5lY3Rpb25DYWxsYmFjayYm
IGNhbGxiYWNrKQorU1dTZXJ2ZXI6OlNXU2VydmVyKFVuaXF1ZVJlZjxTV09yaWdpblN0b3JlPiYm
IG9yaWdpblN0b3JlLCBIYXNoU2V0PFN0cmluZz4mJiByZWdpc3RlcmVkU2NoZW1lcywgYm9vbCBw
cm9jZXNzVGVybWluYXRpb25EZWxheUVuYWJsZWQsIFN0cmluZyYmIHJlZ2lzdHJhdGlvbkRhdGFi
YXNlRGlyZWN0b3J5LCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENyZWF0ZUNvbnRleHRDb25u
ZWN0aW9uQ2FsbGJhY2smJiBjYWxsYmFjaykKICAgICA6IG1fb3JpZ2luU3RvcmUoV1RGTW92ZShv
cmlnaW5TdG9yZSkpCiAgICAgLCBtX3Nlc3Npb25JRChzZXNzaW9uSUQpCiAgICAgLCBtX2lzUHJv
Y2Vzc1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVkKHByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5RW5hYmxl
ZCkKKyAgICAsIG1fcmVnaXN0ZXJlZFNjaGVtZXMoV1RGTW92ZShyZWdpc3RlcmVkU2NoZW1lcykp
CiAgICAgLCBtX2NyZWF0ZUNvbnRleHRDb25uZWN0aW9uQ2FsbGJhY2soV1RGTW92ZShjYWxsYmFj
aykpCiB7CiAgICAgQVNTRVJUKCFyZWdpc3RyYXRpb25EYXRhYmFzZURpcmVjdG9yeS5pc0VtcHR5
KCkgfHwgbV9zZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCShyZXZpc2lvbiAyNTA2NjUp
CisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEyNSw3ICsxMjUsNyBAQCBwdWJsaWM6CiAgICAgfTsKIAogICAgIHVz
aW5nIENyZWF0ZUNvbnRleHRDb25uZWN0aW9uQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKGNvbnN0
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJik+OwotICAgIFdFQkNPUkVfRVhQT1JUIFNXU2Vy
dmVyKFVuaXF1ZVJlZjxTV09yaWdpblN0b3JlPiYmLCBib29sIHByb2Nlc3NUZXJtaW5hdGlvbkRl
bGF5RW5hYmxlZCwgU3RyaW5nJiYgcmVnaXN0cmF0aW9uRGF0YWJhc2VEaXJlY3RvcnksIFBBTDo6
U2Vzc2lvbklELCBDcmVhdGVDb250ZXh0Q29ubmVjdGlvbkNhbGxiYWNrJiYpOworICAgIFdFQkNP
UkVfRVhQT1JUIFNXU2VydmVyKFVuaXF1ZVJlZjxTV09yaWdpblN0b3JlPiYmLCBIYXNoU2V0PFN0
cmluZz4mJiByZWdpc3RlcmVkU2NoZW1lcywgYm9vbCBwcm9jZXNzVGVybWluYXRpb25EZWxheUVu
YWJsZWQsIFN0cmluZyYmIHJlZ2lzdHJhdGlvbkRhdGFiYXNlRGlyZWN0b3J5LCBQQUw6OlNlc3Np
b25JRCwgQ3JlYXRlQ29udGV4dENvbm5lY3Rpb25DYWxsYmFjayYmKTsKIAogICAgIFdFQkNPUkVf
RVhQT1JUIH5TV1NlcnZlcigpOwogCkBAIC0xNjQsNiArMTY0LDcgQEAgcHVibGljOgogICAgIENv
bm5lY3Rpb24qIGNvbm5lY3Rpb24oU1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBpZGVudGlm
aWVyKSBjb25zdCB7IHJldHVybiBtX2Nvbm5lY3Rpb25zLmdldChpZGVudGlmaWVyKTsgfQogCiAg
ICAgY29uc3QgSGFzaE1hcDxTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBzdGQ6OnVuaXF1
ZV9wdHI8Q29ubmVjdGlvbj4+JiBjb25uZWN0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fY29ubmVj
dGlvbnM7IH0KKyAgICBjb25zdCBIYXNoU2V0PFN0cmluZz4gcmVnaXN0ZXJlZFNjaGVtZXMoKSBj
b25zdCB7IHJldHVybiBtX3JlZ2lzdGVyZWRTY2hlbWVzOyB9CiAKICAgICBTV09yaWdpblN0b3Jl
JiBvcmlnaW5TdG9yZSgpIHsgcmV0dXJuIG1fb3JpZ2luU3RvcmU7IH0KIApAQCAtMjU1LDYgKzI1
Niw3IEBAIHByaXZhdGU6CiAgICAgUEFMOjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7CiAgICAgYm9v
bCBtX2ltcG9ydENvbXBsZXRlZCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2lzUHJvY2Vzc1Rlcm1p
bmF0aW9uRGVsYXlFbmFibGVkIHsgdHJ1ZSB9OworICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3JlZ2lz
dGVyZWRTY2hlbWVzOwogICAgIFZlY3RvcjxDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+PiBtX2Ns
ZWFyQ29tcGxldGlvbkNhbGxiYWNrczsKICAgICBWZWN0b3I8RnVuY3Rpb248dm9pZChjb25zdCBI
YXNoU2V0PFNlY3VyaXR5T3JpZ2luRGF0YT4mKT4+IG1fZ2V0T3JpZ2luc1dpdGhSZWdpc3RyYXRp
b25zQ2FsbGJhY2tzOwogICAgIEhhc2hNYXA8UmVnaXN0cmFibGVEb21haW4sIFNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbio+IG1fY29udGV4dENvbm5lY3Rpb25zOwpJbmRleDogU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9i
UXVldWUuY3BwCShyZXZpc2lvbiAyNTA2NjUpCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjAs
NyArMjYwLDcgQEAgdm9pZCBTV1NlcnZlckpvYlF1ZXVlOjpydW5SZWdpc3RlckpvYihjbwogewog
ICAgIEFTU0VSVChqb2IudHlwZSA9PSBTZXJ2aWNlV29ya2VySm9iVHlwZTo6UmVnaXN0ZXIpOwog
Ci0gICAgaWYgKCFzaG91bGRUcmVhdEFzUG90ZW50aWFsbHlUcnVzdHdvcnRoeShqb2Iuc2NyaXB0
VVJMKSAmJiAhU2NoZW1lUmVnaXN0cnk6OmlzU2VydmljZVdvcmtlckNvbnRhaW5lckN1c3RvbVNj
aGVtZShqb2Iuc2NyaXB0VVJMLnByb3RvY29sKCkudG9TdHJpbmdXaXRob3V0Q29weWluZygpKSkK
KyAgICBpZiAoIXNob3VsZFRyZWF0QXNQb3RlbnRpYWxseVRydXN0d29ydGh5KGpvYi5zY3JpcHRV
UkwpICYmICFtX3NlcnZlci5yZWdpc3RlcmVkU2NoZW1lcygpLmNvbnRhaW5zKGpvYi5zY3JpcHRV
UkwucHJvdG9jb2woKS50b1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkpKQogICAgICAgICByZXR1cm4g
cmVqZWN0Q3VycmVudEpvYihFeGNlcHRpb25EYXRhIHsgU2VjdXJpdHlFcnJvciwgIlNjcmlwdCBV
UkwgaXMgbm90IHBvdGVudGlhbGx5IHRydXN0d29ydGh5Il9zIH0pOwogCiAgICAgLy8gSWYgdGhl
IG9yaWdpbiBvZiBqb2IncyBzY3JpcHQgdXJsIGlzIG5vdCBqb2IncyByZWZlcnJlcidzIG9yaWdp
biwgdGhlbjoKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTA2NzcpCisrKyBTb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ3IEBACisyMDE5LTEwLTAzICBB
bGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTW92
ZSBXS1Byb2Nlc3NQb29sLl9yZWdpc3RlclVSTFNjaGVtZVNlcnZpY2VXb3JrZXJzQ2FuSGFuZGxl
IHRvIF9XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDI1NTMKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJdCB3YXMgb25seSB1c2VkIGZvciB0ZXN0aW5n
LCBhbmQgYWxsIHRoZSB0ZXN0cyB0aGF0IHVzZSBpdCBzdGlsbCBwYXNzIHdpdGggdGhlIG5ldyBT
UEkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjppbml0aWFsaXplTmV0d29ya1Byb2Nlc3MpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6YWRkV2Vic2l0ZURhdGFTdG9yZSk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzd1NlcnZlckZvclNlc3Npb24pOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6YWRkU2VydmljZVdvcmtlclNlc3Npb24pOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAgICogU2hh
cmVkL0F1eGlsaWFyeVByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpBdXhpbGlhcnlQcm9j
ZXNzOjpyZWdpc3RlclVSTFNjaGVtZVNlcnZpY2VXb3JrZXJzQ2FuSGFuZGxlIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBTaGFyZWQvQXV4aWxpYXJ5UHJvY2Vzcy5oOgorICAgICAgICAqIFNo
YXJlZC9BdXhpbGlhcnlQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFNoYXJlZC9XZWJz
aXRlRGF0YVN0b3JlUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRh
U3RvcmVQYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRl
RGF0YVN0b3JlUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2Vic2l0ZURh
dGFTdG9yZVBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJv
Y2Vzc1Bvb2wubW06CisgICAgICAgICgtW1dLUHJvY2Vzc1Bvb2wgX3JlZ2lzdGVyVVJMU2NoZW1l
U2VydmljZVdvcmtlcnNDYW5IYW5kbGU6XSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLm1tOgor
ICAgICAgICAoLVtfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiByZWdpc3RlclVSTFNj
aGVtZVNlcnZpY2VXb3JrZXJzQ2FuSGFuZGxlRm9yVGVzdGluZzpdKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9v
bDo6ZW5zdXJlTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9v
bDo6aW5pdGlhbGl6ZU5ld1dlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
UG9vbDo6cmVnaXN0ZXJVUkxTY2hlbWVTZXJ2aWNlV29ya2Vyc0NhbkhhbmRsZSk6IERlbGV0ZWQu
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbToKKyAgICAgICAg
KFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6cGFyYW1ldGVycyk6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OmNvcHkpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5o
OgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6c2Vydmlj
ZVdvcmtlclJlZ2lzdGVyZWRTY2hlbWVzIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0
ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OnJlZ2lzdGVyU2VydmljZVdvcmtlclNjaGVtZSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nlc3MpOgorCiAyMDE5LTEwLTAzICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVwbGFjZSBfV0tQ
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uc3VwcHJlc3Nlc0Nvbm5lY3Rpb25UZXJtaW5hdGlvbk9u
U3lzdGVtQ2hhbmdlIHdpdGggU1BJIG9uIF9XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9u
CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmNwcAkocmV2aXNpb24gMjUwNjY1KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyMywxMCArMzIzLDcgQEAgdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6aW5pdGlhbGl6ZU5ldHdvcmtQcgogI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKICAgICBpZiAocGFyZW50UHJvY2Vzc0hhc1NlcnZpY2VXb3JrZXJFbnRpdGxlbWVu
dCgpKSB7CiAgICAgICAgIGJvb2wgc2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5
RW5hYmxlZCA9IHRydWU7Ci0gICAgICAgIGFkZFNlcnZpY2VXb3JrZXJTZXNzaW9uKFBBTDo6U2Vz
c2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCksIHNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRp
b25EZWxheUVuYWJsZWQsIHBhcmFtZXRlcnMuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVj
dG9yeSwgcGFyYW1ldGVycy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5RXh0ZW5z
aW9uSGFuZGxlKTsKLQotICAgICAgICBmb3IgKGF1dG8mIHNjaGVtZSA6IHBhcmFtZXRlcnMudXJs
U2NoZW1lc1NlcnZpY2VXb3JrZXJzQ2FuSGFuZGxlKQotICAgICAgICAgICAgcmVnaXN0ZXJVUkxT
Y2hlbWVTZXJ2aWNlV29ya2Vyc0NhbkhhbmRsZShzY2hlbWUpOworICAgICAgICBhZGRTZXJ2aWNl
V29ya2VyU2Vzc2lvbihQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpLCBzZXJ2aWNl
V29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVkLCB7IH0sIHBhcmFtZXRlcnMuc2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSwgcGFyYW1ldGVycy5zZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKICAgICB9CiAjZW5kaWYKICAg
ICBpbml0aWFsaXplU3RvcmFnZVF1b3RhKHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFt
ZXRlcnMpOwpAQCAtNDUyLDcgKzQ0OSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmFkZFdlYnNp
dGVEYXRhU3RvcmUKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBpZiAocGFyZW50
UHJvY2Vzc0hhc1NlcnZpY2VXb3JrZXJFbnRpdGxlbWVudCgpKQotICAgICAgICBhZGRTZXJ2aWNl
V29ya2VyU2Vzc2lvbihwYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5zZXNzaW9u
SUQsIHBhcmFtZXRlcnMuc2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5RW5hYmxl
ZCwgcGFyYW1ldGVycy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5LCBwYXJhbWV0
ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwor
ICAgICAgICBhZGRTZXJ2aWNlV29ya2VyU2Vzc2lvbihwYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9u
UGFyYW1ldGVycy5zZXNzaW9uSUQsIHBhcmFtZXRlcnMuc2VydmljZVdvcmtlclByb2Nlc3NUZXJt
aW5hdGlvbkRlbGF5RW5hYmxlZCwgV1RGTW92ZShwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdp
c3RlcmVkU2NoZW1lcyksIHBhcmFtZXRlcnMuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVj
dG9yeSwgcGFyYW1ldGVycy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5RXh0ZW5z
aW9uSGFuZGxlKTsKICNlbmRpZgogCiAgICAgbV9zdG9yYWdlTWFuYWdlclNldC0+YWRkKHBhcmFt
ZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnNlc3Npb25JRCwgcGFyYW1ldGVycy5sb2Nh
bFN0b3JhZ2VEaXJlY3RvcnksIHBhcmFtZXRlcnMubG9jYWxTdG9yYWdlRGlyZWN0b3J5RXh0ZW5z
aW9uSGFuZGxlKTsKQEAgLTIzOTMsMTEgKzIzOTAsMTIgQEAgU1dTZXJ2ZXImIE5ldHdvcmtQcm9j
ZXNzOjpzd1NlcnZlckZvclNlcwogICAgIGF1dG8gcmVzdWx0ID0gbV9zd1NlcnZlcnMuZW5zdXJl
KHNlc3Npb25JRCwgWyZdIHsKICAgICAgICAgYXV0byBpbmZvID0gbV9zZXJ2aWNlV29ya2VySW5m
by5nZXQoc2Vzc2lvbklEKTsKICAgICAgICAgYXV0byBwYXRoID0gaW5mby5kYXRhYmFzZVBhdGg7
CisgICAgICAgIGF1dG8gcmVnaXN0ZXJlZFNjaGVtZXMgPSBpbmZvLnJlZ2lzdGVyZWRTY2hlbWVz
OwogICAgICAgICAvLyBUaGVyZSBzaG91bGQgYWxyZWFkeSBiZSBhIHJlZ2lzdGVyZWQgcGF0aCBm
b3IgdGhpcyBQQUw6OlNlc3Npb25JRC4KICAgICAgICAgLy8gSWYgdGhlcmUncyBub3QsIHRoZW4g
d2hlcmUgZGlkIHRoaXMgUEFMOjpTZXNzaW9uSUQgY29tZSBmcm9tPwogICAgICAgICBBU1NFUlQo
c2Vzc2lvbklELmlzRXBoZW1lcmFsKCkgfHwgIXBhdGguaXNFbXB0eSgpKTsKIAotICAgICAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxTV1NlcnZlcj4obWFrZVVuaXF1ZVJlZjxXZWJTV09yaWdpblN0b3Jl
PigpLCBpbmZvLnByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5RW5hYmxlZCwgV1RGTW92ZShwYXRoKSwg
c2Vzc2lvbklELCBbdGhpcywgc2Vzc2lvbklEXShhdXRvJiByZWdpc3RyYWJsZURvbWFpbikgewor
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTV1NlcnZlcj4obWFrZVVuaXF1ZVJlZjxXZWJTV09y
aWdpblN0b3JlPigpLCBXVEZNb3ZlKHJlZ2lzdGVyZWRTY2hlbWVzKSwgaW5mby5wcm9jZXNzVGVy
bWluYXRpb25EZWxheUVuYWJsZWQsIFdURk1vdmUocGF0aCksIHNlc3Npb25JRCwgW3RoaXMsIHNl
c3Npb25JRF0oYXV0byYgcmVnaXN0cmFibGVEb21haW4pIHsKICAgICAgICAgICAgIEFTU0VSVCgh
cmVnaXN0cmFibGVEb21haW4uaXNFbXB0eSgpKTsKICAgICAgICAgICAgIHBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkVzdGFibGlz
aFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyB7IHJlZ2lzdHJhYmxlRG9t
YWluLCBzZXNzaW9uSUQgfSwgMCk7CiAgICAgICAgIH0pOwpAQCAtMjQyOCwxMSArMjQyNiwxMiBA
QCB2b2lkIE5ldHdvcmtQcm9jZXNzOjp1bnJlZ2lzdGVyU1dTZXJ2ZXJDCiAgICAgICAgIHN0b3Jl
LT51bnJlZ2lzdGVyU1dTZXJ2ZXJDb25uZWN0aW9uKGNvbm5lY3Rpb24pOwogfQogCi12b2lkIE5l
dHdvcmtQcm9jZXNzOjphZGRTZXJ2aWNlV29ya2VyU2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIGJvb2wgcHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVkLCBTdHJpbmcmIHNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnksIGNvbnN0IFNhbmRib3hFeHRlbnNpb246Okhh
bmRsZSYgaGFuZGxlKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6YWRkU2VydmljZVdvcmtlclNlc3Np
b24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBib29sIHByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5
RW5hYmxlZCwgSGFzaFNldDxTdHJpbmc+JiYgcmVnaXN0ZXJlZFNjaGVtZXMsIFN0cmluZyYgc2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlJiBoYW5kbGUpCiB7CiAgICAgU2VydmljZVdvcmtlckluZm8gaW5mbyB7CiAgICAgICAg
IHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnksCiAgICAgICAgIHByb2Nlc3NUZXJt
aW5hdGlvbkRlbGF5RW5hYmxlZCwKKyAgICAgICAgV1RGTW92ZShyZWdpc3RlcmVkU2NoZW1lcykK
ICAgICB9OwogICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9zZXJ2aWNlV29ya2VySW5mby5hZGQoc2Vz
c2lvbklELCBXVEZNb3ZlKGluZm8pKTsKICAgICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50cnkpIHsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgJ
KHJldmlzaW9uIDI1MDY2NSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuaAkod29ya2luZyBjb3B5KQpAQCAtNDU5LDcgKzQ1OSw3IEBAIHByaXZhdGU6CiAg
ICAgCiAgICAgV2ViU1dPcmlnaW5TdG9yZSogZXhpc3RpbmdTV09yaWdpblN0b3JlRm9yU2Vzc2lv
bihQQUw6OlNlc3Npb25JRCkgY29uc3Q7CiAKLSAgICB2b2lkIGFkZFNlcnZpY2VXb3JrZXJTZXNz
aW9uKFBBTDo6U2Vzc2lvbklELCBib29sIHByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5RW5hYmxlZCwg
U3RyaW5nJiBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5LCBjb25zdCBTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGUmKTsKKyAgICB2b2lkIGFkZFNlcnZpY2VXb3JrZXJTZXNzaW9uKFBB
TDo6U2Vzc2lvbklELCBib29sIHByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5RW5hYmxlZCwgSGFzaFNl
dDxTdHJpbmc+JiYgcmVnaXN0ZXJlZFNjaGVtZXMsIFN0cmluZyYgc2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbkRpcmVjdG9yeSwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJik7CiAjZW5k
aWYKIAogICAgIHZvaWQgcG9zdFN0b3JhZ2VUYXNrKENyb3NzVGhyZWFkVGFzayYmKTsKQEAgLTUy
Nyw2ICs1MjcsNyBAQCBwcml2YXRlOgogICAgIHN0cnVjdCBTZXJ2aWNlV29ya2VySW5mbyB7CiAg
ICAgICAgIFN0cmluZyBkYXRhYmFzZVBhdGg7CiAgICAgICAgIGJvb2wgcHJvY2Vzc1Rlcm1pbmF0
aW9uRGVsYXlFbmFibGVkIHsgdHJ1ZSB9OworICAgICAgICBIYXNoU2V0PFN0cmluZz4gcmVnaXN0
ZXJlZFNjaGVtZXM7CiAgICAgfTsKICAgICBIYXNoTWFwPFBBTDo6U2Vzc2lvbklELCBTZXJ2aWNl
V29ya2VySW5mbz4gbV9zZXJ2aWNlV29ya2VySW5mbzsKICAgICBIYXNoTWFwPFBBTDo6U2Vzc2lv
bklELCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1dTZXJ2ZXI+PiBtX3N3U2VydmVyczsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0F1eGlsaWFyeVByb2Nlc3MuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0F1eGlsaWFyeVByb2Nlc3MuY3BwCShyZXZpc2lvbiAy
NTA2NjUpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXhpbGlhcnlQcm9jZXNzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTk1LDExICsxOTUsNiBAQCB2b2lkIEF1eGlsaWFyeVByb2Nlc3M6OnNo
dXREb3duKCkKICAgICB0ZXJtaW5hdGUoKTsKIH0KIAotdm9pZCBBdXhpbGlhcnlQcm9jZXNzOjpy
ZWdpc3RlclVSTFNjaGVtZVNlcnZpY2VXb3JrZXJzQ2FuSGFuZGxlKGNvbnN0IFN0cmluZyYgdXJs
U2NoZW1lKSBjb25zdAotewotICAgIFdlYkNvcmU6OlNjaGVtZVJlZ2lzdHJ5OjpyZWdpc3RlclVS
TFNjaGVtZVNlcnZpY2VXb3JrZXJzQ2FuSGFuZGxlKHVybFNjaGVtZSk7Ci19Ci0KICNpZiAhUExB
VEZPUk0oQ09DT0EpCiB2b2lkIEF1eGlsaWFyeVByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZSgp
CiB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXhpbGlhcnlQcm9jZXNzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvQXV4aWxpYXJ5UHJvY2Vzcy5oCShyZXZpc2lv
biAyNTA2NjUpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXhpbGlhcnlQcm9jZXNzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEyMSw3ICsxMjEsNiBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2b2lkIGRp
ZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRl
OwogCi0gICAgdm9pZCByZWdpc3RlclVSTFNjaGVtZVNlcnZpY2VXb3JrZXJzQ2FuSGFuZGxlKGNv
bnN0IFN0cmluZyYpIGNvbnN0OwogI2lmIE9TKExJTlVYKQogICAgIHZvaWQgZGlkUmVjZWl2ZU1l
bW9yeVByZXNzdXJlRXZlbnQoYm9vbCBpc0NyaXRpY2FsKTsKICNlbmRpZgpJbmRleDogU291cmNl
L1dlYktpdC9TaGFyZWQvQXV4aWxpYXJ5UHJvY2Vzcy5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXhpbGlhcnlQcm9jZXNzLm1lc3NhZ2VzLmluCShyZXZp
c2lvbiAyNTA2NjUpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXhpbGlhcnlQcm9jZXNzLm1l
c3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw3ICsyMiw2IEBACiAKIG1lc3NhZ2VzIC0+
IEF1eGlsaWFyeVByb2Nlc3MgewogICAgIFNodXREb3duKCkKLSAgICBSZWdpc3RlclVSTFNjaGVt
ZVNlcnZpY2VXb3JrZXJzQ2FuSGFuZGxlKFN0cmluZyBzY2hlbWUpCiAgICAgU2V0UHJvY2Vzc1N1
cHByZXNzaW9uRW5hYmxlZChib29sIGZsYWcpCiAKICNpZiBPUyhMSU5VWCkKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5jcHAJ
KHJldmlzaW9uIDI1MDY2NSkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhU3Rv
cmVQYXJhbWV0ZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsNiArNTEsNyBAQCB2b2lkIFdl
YnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzOjplbmNvZGUoCiAKICNpZiBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCiAgICAgZW5jb2RlciA8PCBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5
IDw8IHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUgPDwg
c2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5RW5hYmxlZDsKKyAgICBlbmNvZGVy
IDw8IHNlcnZpY2VXb3JrZXJSZWdpc3RlcmVkU2NoZW1lczsKICNlbmRpZgogCiAgICAgZW5jb2Rl
ciA8PCBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPDwgbG9jYWxTdG9yYWdlRGlyZWN0b3J5RXh0ZW5z
aW9uSGFuZGxlOwpAQCAtMTI3LDYgKzEyOCwxMiBAQCBPcHRpb25hbDxXZWJzaXRlRGF0YVN0b3Jl
UGFyYW1ldGVycz4gV2ViCiAgICAgaWYgKCFzZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9u
RGVsYXlFbmFibGVkKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIHBhcmFtZXRl
cnMuc2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5RW5hYmxlZCA9IFdURk1vdmUo
KnNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheUVuYWJsZWQpOworICAgIAorICAg
IE9wdGlvbmFsPEhhc2hTZXQ8U3RyaW5nPj4gc2VydmljZVdvcmtlclJlZ2lzdGVyZWRTY2hlbWVz
OworICAgIGRlY29kZXIgPj4gc2VydmljZVdvcmtlclJlZ2lzdGVyZWRTY2hlbWVzOworICAgIGlm
ICghc2VydmljZVdvcmtlclJlZ2lzdGVyZWRTY2hlbWVzKQorICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgIHBhcmFtZXRlcnMuc2VydmljZVdvcmtlclJlZ2lzdGVyZWRTY2hlbWVzID0g
V1RGTW92ZSgqc2VydmljZVdvcmtlclJlZ2lzdGVyZWRTY2hlbWVzKTsKICNlbmRpZgogCiAgICAg
T3B0aW9uYWw8U3RyaW5nPiBsb2NhbFN0b3JhZ2VEaXJlY3Rvcnk7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmgJKHJldmlzaW9u
IDI1MDY2NSkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhU3RvcmVQYXJhbWV0
ZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTY2LDYgKzY2LDcgQEAgc3RydWN0IFdlYnNpdGVEYXRh
U3RvcmVQYXJhbWV0ZXJzIHsKICAgICBTdHJpbmcgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRp
cmVjdG9yeTsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbkRpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKICAgICBib29sIHNlcnZpY2VXb3JrZXJQ
cm9jZXNzVGVybWluYXRpb25EZWxheUVuYWJsZWQgeyB0cnVlIH07CisgICAgSGFzaFNldDxTdHJp
bmc+IHNlcnZpY2VXb3JrZXJSZWdpc3RlcmVkU2NoZW1lczsKICNlbmRpZgogCiAgICAgU3RyaW5n
IGxvY2FsU3RvcmFnZURpcmVjdG9yeTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5jcHAJKHJldmlzaW9uIDI1MDY2NSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQ0LDkgKzU0NCw2
IEBAIE5ldHdvcmtQcm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjplbnMKICAgICBpZiAoIXBh
cmFtZXRlcnMuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSkKICAgICAgICAgcGFy
YW1ldGVycy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5ID0gIFdlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rvcnko
KTsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3Rv
cnkocGFyYW1ldGVycy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5LCBwYXJhbWV0
ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwot
Ci0gICAgaWYgKCFtX3NjaGVtZXNTZXJ2aWNlV29ya2Vyc0NhbkhhbmRsZS5pc0VtcHR5KCkpCi0g
ICAgICAgIHBhcmFtZXRlcnMudXJsU2NoZW1lc1NlcnZpY2VXb3JrZXJzQ2FuSGFuZGxlID0gY29w
eVRvVmVjdG9yKG1fc2NoZW1lc1NlcnZpY2VXb3JrZXJzQ2FuSGFuZGxlKTsKICNlbmRpZgogCiAg
ICAgYXV0byBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBtX3dlYnNpdGVEYXRhU3RvcmUgPyBtX3dl
YnNpdGVEYXRhU3RvcmUtPnJlc29sdmVkTG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkgOiBudWxsU3Ry
aW5nKCk7CkBAIC05MjQsNyArOTIxLDggQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6aW5pdGlhbGl6
ZU5ld1dlYlBybwogICAgIHBhcmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWRBc0NPUlNFbmFi
bGVkID0gY29weVRvVmVjdG9yKG1fc2NoZW1lc1RvUmVnaXN0ZXJBc0NPUlNFbmFibGVkKTsKICAg
ICBwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVkQXNBbHdheXNSZXZhbGlkYXRlZCA9IGNv
cHlUb1ZlY3RvcihtX3NjaGVtZXNUb1JlZ2lzdGVyQXNBbHdheXNSZXZhbGlkYXRlZCk7CiAgICAg
cGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEFzQ2FjaGVQYXJ0aXRpb25lZCA9IGNvcHlU
b1ZlY3RvcihtX3NjaGVtZXNUb1JlZ2lzdGVyQXNDYWNoZVBhcnRpdGlvbmVkKTsKLSAgICBwYXJh
bWV0ZXJzLnVybFNjaGVtZXNTZXJ2aWNlV29ya2Vyc0NhbkhhbmRsZSA9IGNvcHlUb1ZlY3Rvciht
X3NjaGVtZXNTZXJ2aWNlV29ya2Vyc0NhbkhhbmRsZSk7CisgICAgaWYgKHdlYnNpdGVEYXRhU3Rv
cmUpCisgICAgICAgIHBhcmFtZXRlcnMudXJsU2NoZW1lc1NlcnZpY2VXb3JrZXJzQ2FuSGFuZGxl
ID0gY29weVRvVmVjdG9yKHdlYnNpdGVEYXRhU3RvcmUtPmNvbmZpZ3VyYXRpb24oKS5zZXJ2aWNl
V29ya2VyUmVnaXN0ZXJlZFNjaGVtZXMoKSk7CiAgICAgcGFyYW1ldGVycy51cmxTY2hlbWVzUmVn
aXN0ZXJlZEFzQ2FuRGlzcGxheU9ubHlJZkNhblJlcXVlc3QgPSBjb3B5VG9WZWN0b3IobV9zY2hl
bWVzVG9SZWdpc3RlckFzQ2FuRGlzcGxheU9ubHlJZkNhblJlcXVlc3QpOwogCiAgICAgcGFyYW1l
dGVycy5zaG91bGRBbHdheXNVc2VDb21wbGV4VGV4dENvZGVQYXRoID0gbV9hbHdheXNVc2VzQ29t
cGxleFRleHRDb2RlUGF0aDsKQEAgLTE1MzYsMTQgKzE1MzQsNiBAQCB2b2lkIFdlYlByb2Nlc3NQ
b29sOjpyZWdpc3RlclVSTFNjaGVtZUFzCiAgICAgc2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2Vz
OjpXZWJQcm9jZXNzOjpSZWdpc3RlclVSTFNjaGVtZUFzQ2FjaGVQYXJ0aXRpb25lZCh1cmxTY2hl
bWUpKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVnaXN0ZXJVUkxTY2hlbWVTZXJ2aWNl
V29ya2Vyc0NhbkhhbmRsZShjb25zdCBTdHJpbmcmIHVybFNjaGVtZSkKLXsKLSAgICBtX3NjaGVt
ZXNTZXJ2aWNlV29ya2Vyc0NhbkhhbmRsZS5hZGQodXJsU2NoZW1lKTsKLSAgICBzZW5kVG9BbGxQ
cm9jZXNzZXMoTWVzc2FnZXM6OkF1eGlsaWFyeVByb2Nlc3M6OlJlZ2lzdGVyVVJMU2NoZW1lU2Vy
dmljZVdvcmtlcnNDYW5IYW5kbGUodXJsU2NoZW1lKSk7Ci0gICAgaWYgKG1fbmV0d29ya1Byb2Nl
c3MpCi0gICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OkF1eGlsaWFyeVBy
b2Nlc3M6OlJlZ2lzdGVyVVJMU2NoZW1lU2VydmljZVdvcmtlcnNDYW5IYW5kbGUodXJsU2NoZW1l
KSwgMCk7Ci19Ci0KIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlZ2lzdGVyVVJMU2NoZW1lQXNDYW5E
aXNwbGF5T25seUlmQ2FuUmVxdWVzdChjb25zdCBTdHJpbmcmIHVybFNjaGVtZSkKIHsKICAgICBt
X3NjaGVtZXNUb1JlZ2lzdGVyQXNDYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdC5hZGQodXJsU2No
ZW1lKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAkocmV2
aXNpb24gMjUwNjY1KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
aAkod29ya2luZyBjb3B5KQpAQCAtMjcyLDcgKzI3Miw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHJl
Z2lzdGVyVVJMU2NoZW1lQXNEaXNwbGF5SXNvbGF0ZWQoY29uc3QgU3RyaW5nJik7CiAgICAgdm9p
ZCByZWdpc3RlclVSTFNjaGVtZUFzQ09SU0VuYWJsZWQoY29uc3QgU3RyaW5nJik7CiAgICAgdm9p
ZCByZWdpc3RlclVSTFNjaGVtZUFzQ2FjaGVQYXJ0aXRpb25lZChjb25zdCBTdHJpbmcmKTsKLSAg
ICB2b2lkIHJlZ2lzdGVyVVJMU2NoZW1lU2VydmljZVdvcmtlcnNDYW5IYW5kbGUoY29uc3QgU3Ry
aW5nJik7CiAgICAgdm9pZCByZWdpc3RlclVSTFNjaGVtZUFzQ2FuRGlzcGxheU9ubHlJZkNhblJl
cXVlc3QoY29uc3QgU3RyaW5nJik7CiAKICAgICBWaXNpdGVkTGlua1N0b3JlJiB2aXNpdGVkTGlu
a1N0b3JlKCkgeyByZXR1cm4gbV92aXNpdGVkTGlua1N0b3JlLmdldCgpOyB9CkBAIC02NTAsNyAr
NjQ5LDYgQEAgcHJpdmF0ZToKICAgICBIYXNoU2V0PFN0cmluZz4gbV9zY2hlbWVzVG9SZWdpc3Rl
ckFzQ09SU0VuYWJsZWQ7CiAgICAgSGFzaFNldDxTdHJpbmc+IG1fc2NoZW1lc1RvUmVnaXN0ZXJB
c0Fsd2F5c1JldmFsaWRhdGVkOwogICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3NjaGVtZXNUb1JlZ2lz
dGVyQXNDYWNoZVBhcnRpdGlvbmVkOwotICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3NjaGVtZXNTZXJ2
aWNlV29ya2Vyc0NhbkhhbmRsZTsKICAgICBIYXNoU2V0PFN0cmluZz4gbV9zY2hlbWVzVG9SZWdp
c3RlckFzQ2FuRGlzcGxheU9ubHlJZkNhblJlcXVlc3Q7CiAKICAgICBib29sIG1fYWx3YXlzVXNl
c0NvbXBsZXhUZXh0Q29kZVBhdGggeyBmYWxzZSB9OwpJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0JKHJldmlzaW9uIDI1MDY2
NSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0xODksMTEgKzE4OSw2IEBAIC0gKHZvaWQpX3NldEFsbG93c1Nw
ZWNpZmljSFRUUFNDZXJ0aWZpY2EKICAgICBfcHJvY2Vzc1Bvb2wtPmFsbG93U3BlY2lmaWNIVFRQ
U0NlcnRpZmljYXRlRm9ySG9zdChXZWJLaXQ6OldlYkNlcnRpZmljYXRlSW5mbzo6Y3JlYXRlKFdl
YkNvcmU6OkNlcnRpZmljYXRlSW5mbygoX19icmlkZ2UgQ0ZBcnJheVJlZiljZXJ0aWZpY2F0ZUNo
YWluKSkucHRyKCksIGhvc3QpOwogfQogCi0tICh2b2lkKV9yZWdpc3RlclVSTFNjaGVtZVNlcnZp
Y2VXb3JrZXJzQ2FuSGFuZGxlOihOU1N0cmluZyAqKXNjaGVtZQotewotICAgIF9wcm9jZXNzUG9v
bC0+cmVnaXN0ZXJVUkxTY2hlbWVTZXJ2aWNlV29ya2Vyc0NhbkhhbmRsZShzY2hlbWUpOwotfQot
CiAtICh2b2lkKV9yZWdpc3RlclVSTFNjaGVtZUFzQ2FuRGlzcGxheU9ubHlJZkNhblJlcXVlc3Q6
KE5TU3RyaW5nICopc2NoZW1lCiB7CiAgICAgX3Byb2Nlc3NQb29sLT5yZWdpc3RlclVSTFNjaGVt
ZUFzQ2FuRGlzcGxheU9ubHlJZkNhblJlcXVlc3Qoc2NoZW1lKTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0
ZS5oCShyZXZpc2lvbiAyNTA2NjUpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTIyLDcgKzEyMiw2
IEBACiAKIC8vIFRlc3Qgb25seS4KIC0gKHZvaWQpX3NldEFsbG93c0FueVNTTENlcnRpZmljYXRl
Rm9yU2VydmljZVdvcmtlcjooQk9PTClhbGxvd3MgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4x
My40KSwgaW9zKDExLjMpKTsKLS0gKHZvaWQpX3JlZ2lzdGVyVVJMU2NoZW1lU2VydmljZVdvcmtl
cnNDYW5IYW5kbGU6KE5TU3RyaW5nICopc2NoZW1lIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAu
MTMuNCksIGlvcygxMS4zKSk7CiAtICh2b2lkKV9nZXRBY3RpdmVQYWdlc09yaWdpbnNJbldlYlBy
b2Nlc3NGb3JUZXN0aW5nOihwaWRfdClwaWQgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoTlNB
cnJheTxOU1N0cmluZyAqPiAqKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1h
Y29zKDEwLjE0LjQpLCBpb3MoMTIuMikpOwogLSAoQk9PTClfbmV0d29ya1Byb2Nlc3NIYXNFbnRp
dGxlbWVudEZvclRlc3Rpbmc6KE5TU3RyaW5nICopZW50aXRsZW1lbnQgV0tfQVBJX0FWQUlMQUJM
RShtYWNvcygxMC4xNC40KSwgaW9zKDEyLjIpKTsKIC0gKHZvaWQpX2NsZWFyUGVybWFuZW50Q3Jl
ZGVudGlhbHNGb3JQcm90ZWN0aW9uU3BhY2U6KE5TVVJMUHJvdGVjdGlvblNwYWNlICopcHJvdGVj
dGlvblNwYWNlIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1Nf
VEJBKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0
ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaAkocmV2
aXNpb24gMjUwNjc3KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dl
YnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTcxLDYgKzcx
LDcgQEAgV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zKDEwLjEzKSwgaW9zKDExLgogQHByb3BlcnR5
IChub25hdG9taWMpIEJPT0wgc3VwcHJlc3Nlc0Nvbm5lY3Rpb25UZXJtaW5hdGlvbk9uU3lzdGVt
Q2hhbmdlIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJB
KSk7CiAKIC8vIFRlc3Rpbmcgb25seS4KKy0gKHZvaWQpcmVnaXN0ZXJVUkxTY2hlbWVTZXJ2aWNl
V29ya2Vyc0NhbkhhbmRsZUZvclRlc3Rpbmc6KE5TU3RyaW5nICopc2NoZW1lIFdLX0FQSV9BVkFJ
TEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiBAcHJvcGVydHkgKG5v
bmF0b21pYykgQk9PTCBhbGxMb2Fkc0Jsb2NrZWRCeURldmljZU1hbmFnZW1lbnRSZXN0cmljdGlv
bnNGb3JUZXN0aW5nIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19J
T1NfVEJBKSk7CiAKIEBlbmQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3Vy
YXRpb24ubW0JKHJldmlzaW9uIDI1MDY3NykKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5tbQkod29ya2luZyBjb3B5
KQpAQCAtNDAwLDYgKzQwMCwxMSBAQCAtICh2b2lkKXNldEFsbExvYWRzQmxvY2tlZEJ5RGV2aWNl
TWFuYWdlCiAgICAgX2NvbmZpZ3VyYXRpb24tPnNldEFsbExvYWRzQmxvY2tlZEJ5RGV2aWNlTWFu
YWdlbWVudFJlc3RyaWN0aW9uc0ZvclRlc3RpbmcoYmxvY2tlZCk7CiB9CiAKKy0gKHZvaWQpcmVn
aXN0ZXJVUkxTY2hlbWVTZXJ2aWNlV29ya2Vyc0NhbkhhbmRsZUZvclRlc3Rpbmc6KE5TU3RyaW5n
ICopc2NoZW1lCit7CisgICAgX2NvbmZpZ3VyYXRpb24tPnJlZ2lzdGVyU2VydmljZVdvcmtlclNj
aGVtZShzY2hlbWUpOworfQorCiAtIChBUEk6Ok9iamVjdCYpX2FwaU9iamVjdAogewogICAgIHJl
dHVybiAqX2NvbmZpZ3VyYXRpb247CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb24uY3BwCShyZXZpc2lvbiAyNTA2NzcpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTU0LDYgKzU0LDcgQEAgUmVmPFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9u
PiBXZWJzaQogICAgIGF1dG8gY29weSA9IFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpj
cmVhdGUobV9pc1BlcnNpc3RlbnQpOwogCiAgICAgY29weS0+bV9zZXJ2aWNlV29ya2VyUHJvY2Vz
c1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVkID0gdGhpcy0+bV9zZXJ2aWNlV29ya2VyUHJvY2Vzc1Rl
cm1pbmF0aW9uRGVsYXlFbmFibGVkOworICAgIGNvcHktPm1fc2VydmljZVdvcmtlclJlZ2lzdGVy
ZWRTY2hlbWVzID0gdGhpcy0+bV9zZXJ2aWNlV29ya2VyUmVnaXN0ZXJlZFNjaGVtZXM7CiAgICAg
Y29weS0+bV9mYXN0U2VydmVyVHJ1c3RFdmFsdWF0aW9uRW5hYmxlZCA9IHRoaXMtPm1fZmFzdFNl
cnZlclRydXN0RXZhbHVhdGlvbkVuYWJsZWQ7CiAgICAgY29weS0+bV9uZXR3b3JrQ2FjaGVTcGVj
dWxhdGl2ZVZhbGlkYXRpb25FbmFibGVkID0gdGhpcy0+bV9uZXR3b3JrQ2FjaGVTcGVjdWxhdGl2
ZVZhbGlkYXRpb25FbmFibGVkOwogICAgIGNvcHktPm1fY2FjaGVTdG9yYWdlRGlyZWN0b3J5ID0g
dGhpcy0+bV9jYWNoZVN0b3JhZ2VEaXJlY3Rvcnk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3Rv
cmVDb25maWd1cmF0aW9uLmgJKHJldmlzaW9uIDI1MDY3NykKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmgJKHdvcmtp
bmcgY29weSkKQEAgLTExNyw2ICsxMTcsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBzZXJ2aWNlV29y
a2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2
aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVkOyB9CiAgICAgdm9pZCBzZXRT
ZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVkKGJvb2wgZW5hYmxlZCkg
eyBtX3NlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheUVuYWJsZWQgPSBlbmFibGVk
OyB9CiAKKyAgICBjb25zdCBIYXNoU2V0PFN0cmluZz4gc2VydmljZVdvcmtlclJlZ2lzdGVyZWRT
Y2hlbWVzKCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2aWNlV29ya2VyUmVnaXN0ZXJlZFNjaGVtZXM7
IH0KKyAgICB2b2lkIHJlZ2lzdGVyU2VydmljZVdvcmtlclNjaGVtZShTdHJpbmcmJiBzY2hlbWUp
IHsgbV9zZXJ2aWNlV29ya2VyUmVnaXN0ZXJlZFNjaGVtZXMuYWRkKHNjaGVtZSk7IH0KKyAgICAK
ICAgICBjb25zdCBTdHJpbmcmIHNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigpIGNv
bnN0IHsgcmV0dXJuIG1fc291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyOyB9CiAgICAg
dm9pZCBzZXRTb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoU3RyaW5nJiYgaWRlbnRp
ZmllcikgeyBtX3NvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllciA9IFdURk1vdmUoaWRl
bnRpZmllcik7IH0KIApAQCAtMTc5LDYgKzE4Miw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3Rl
c3RpbmdTZXNzaW9uRW5hYmxlZCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3N1cHByZXNzZXNDb25u
ZWN0aW9uVGVybWluYXRpb25PblN5c3RlbUNoYW5nZSB7IGZhbHNlIH07CiAgICAgdW5zaWduZWQg
bV90ZXN0U3BlZWRNdWx0aXBsaWVyIHsgMSB9OworICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3NlcnZp
Y2VXb3JrZXJSZWdpc3RlcmVkU2NoZW1lczsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBSZXRh
aW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBtX3Byb3h5Q29uZmlndXJhdGlvbjsKICNlbmRpZgpJbmRl
eDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFT
dG9yZUNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNp
dGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQkocmV2aXNpb24gMjUwNjc3KQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFT
dG9yZUNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xODAsNiArMTgwLDcgQEAgV2Vic2l0ZURh
dGFTdG9yZVBhcmFtZXRlcnMgV2Vic2l0ZURhdGFTdAogICAgIGlmICghcGFyYW1ldGVycy5zZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5LmlzRW1wdHkoKSkKICAgICAgICAgU2FuZGJv
eEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KHBhcmFtZXRlcnMu
c2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSwgcGFyYW1ldGVycy5zZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKICAgICBwYXJhbWV0ZXJz
LnNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheUVuYWJsZWQgPSBtX2NvbmZpZ3Vy
YXRpb24tPnNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheUVuYWJsZWQoKTsKKyAg
ICBwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RlcmVkU2NoZW1lcyA9IG1fY29uZmlndXJh
dGlvbi0+c2VydmljZVdvcmtlclJlZ2lzdGVyZWRTY2hlbWVzKCk7CiAjZW5kaWYKIAogICAgIHBh
cmFtZXRlcnMubG9jYWxTdG9yYWdlRGlyZWN0b3J5ID0gcmVzb2x2ZWRMb2NhbFN0b3JhZ2VEaXJl
Y3RvcnkoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHJl
dmlzaW9uIDI1MDY2NSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzc4LDcgKzM3OCw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6aW5p
dGlhbGl6ZVdlYlByb2Nlc3MoV2UKICAgICAgICAgcmVnaXN0ZXJVUkxTY2hlbWVBc0NhY2hlUGFy
dGl0aW9uZWQoc2NoZW1lKTsKIAogICAgIGZvciAoYXV0byYgc2NoZW1lIDogcGFyYW1ldGVycy51
cmxTY2hlbWVzU2VydmljZVdvcmtlcnNDYW5IYW5kbGUpCi0gICAgICAgIHJlZ2lzdGVyVVJMU2No
ZW1lU2VydmljZVdvcmtlcnNDYW5IYW5kbGUoc2NoZW1lKTsKKyAgICAgICAgV2ViQ29yZTo6U2No
ZW1lUmVnaXN0cnk6OnJlZ2lzdGVyVVJMU2NoZW1lU2VydmljZVdvcmtlcnNDYW5IYW5kbGUoc2No
ZW1lKTsKIAogICAgIGZvciAoYXV0byYgc2NoZW1lIDogcGFyYW1ldGVycy51cmxTY2hlbWVzUmVn
aXN0ZXJlZEFzQ2FuRGlzcGxheU9ubHlJZkNhblJlcXVlc3QpCiAgICAgICAgIHJlZ2lzdGVyVVJM
U2NoZW1lQXNDYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdChzY2hlbWUpOwpJbmRleDogVG9vbHMv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjUwNjkz
KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIw
MTktMTAtMDMgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKwor
ICAgICAgICBNb3ZlIFdLUHJvY2Vzc1Bvb2wuX3JlZ2lzdGVyVVJMU2NoZW1lU2VydmljZVdvcmtl
cnNDYW5IYW5kbGUgdG8gX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjU1MworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29ya2VyQmFzaWMubW06CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TdG9yYWdlUXVvdGEubW06CisKIDIwMTktMTAtMDMg
IFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJ
T04oMjQ5NjQ5KTogVW5hYmxlIHRvIG9wZW4gbG9jYWwgZmlsZXMgaW4gTWluaUJyb3dzZXIgb24g
bWFjT1MKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2Vydmlj
ZVdvcmtlckJhc2ljLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvU2VydmljZVdvcmtlckJhc2ljLm1tCShyZXZpc2lvbiAyNTA2NjUpCisrKyBU
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NlcnZpY2VXb3JrZXJCYXNpYy5t
bQkod29ya2luZyBjb3B5KQpAQCAtNDY5LDYgKzQ2OSwxMyBAQCBzZWxmLmFkZEV2ZW50TGlzdGVu
ZXIoIm1lc3NhZ2UiLCAoZXZlbnQpCiAKIClTV1JFU09VUkNFIjsKIAorc3RhdGljIFdLV2Vic2l0
ZURhdGFTdG9yZSAqZGF0YVN0b3JlV2l0aFJlZ2lzdGVyZWRTZXJ2aWNlV29ya2VyU2NoZW1lKE5T
U3RyaW5nICpzY2hlbWUpCit7CisgICAgX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24g
KmNvbmZpZ3VyYXRpb24gPSBbW1tfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBhbGxv
Y10gaW5pdF0gYXV0b3JlbGVhc2VdOworICAgIFtjb25maWd1cmF0aW9uIHJlZ2lzdGVyVVJMU2No
ZW1lU2VydmljZVdvcmtlcnNDYW5IYW5kbGVGb3JUZXN0aW5nOnNjaGVtZV07CisgICAgcmV0dXJu
IFtbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpjb25m
aWd1cmF0aW9uXSBhdXRvcmVsZWFzZV07Cit9CisKIFRFU1QoU2VydmljZVdvcmtlcnMsIEJhc2lj
KQogewogICAgIEFTU0VSVChtYWluQnl0ZXMpOwpAQCAtNDc2LDE0ICs0ODMsMTcgQEAgVEVTVChT
ZXJ2aWNlV29ya2VycywgQmFzaWMpCiAKICAgICBbV0tXZWJzaXRlRGF0YVN0b3JlIF9hbGxvd1dl
YnNpdGVEYXRhUmVjb3Jkc0ZvckFsbE9yaWdpbnNdOwogCisgICAgYXV0byogZGF0YVN0b3JlID0g
ZGF0YVN0b3JlV2l0aFJlZ2lzdGVyZWRTZXJ2aWNlV29ya2VyU2NoZW1lKEAic3ciKTsKKyAgICAK
ICAgICAvLyBTdGFydCB3aXRoIGEgY2xlYW4gc2xhdGUgZGF0YSBzdG9yZQotICAgIFtbV0tXZWJz
aXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVdIHJlbW92ZURhdGFPZlR5cGVzOltXS1dlYnNp
dGVEYXRhU3RvcmUgYWxsV2Vic2l0ZURhdGFUeXBlc10gbW9kaWZpZWRTaW5jZTpbTlNEYXRlIGRp
c3RhbnRQYXN0XSBjb21wbGV0aW9uSGFuZGxlcjpeKCkgeworICAgIFtkYXRhU3RvcmUgcmVtb3Zl
RGF0YU9mVHlwZXM6W1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxXZWJzaXRlRGF0YVR5cGVzXSBtb2Rp
ZmllZFNpbmNlOltOU0RhdGUgZGlzdGFudFBhc3RdIGNvbXBsZXRpb25IYW5kbGVyOl4oKSB7CiAg
ICAgICAgIGRvbmUgPSB0cnVlOwogICAgIH1dOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1
bigmZG9uZSk7CiAgICAgZG9uZSA9IGZhbHNlOwogCi0gICAgUmV0YWluUHRyPFdLV2ViVmlld0Nv
bmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJh
dGlvbiBhbGxvY10gaW5pdF0pOworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tX
S1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgW2NvbmZpZ3VyYXRpb24g
c2V0V2Vic2l0ZURhdGFTdG9yZTpkYXRhU3RvcmVdOwogCiAgICAgUmV0YWluUHRyPFNXTWVzc2Fn
ZUhhbmRsZXI+IG1lc3NhZ2VIYW5kbGVyID0gYWRvcHROUyhbW1NXTWVzc2FnZUhhbmRsZXIgYWxs
b2NdIGluaXRdKTsKICAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBh
ZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjptZXNzYWdlSGFuZGxlci5nZXQoKSBuYW1lOkAic3ciXTsK
QEAgLTQ5NCw3ICs1MDQsNiBAQCBURVNUKFNlcnZpY2VXb3JrZXJzLCBCYXNpYykKICAgICBbY29u
ZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgZm9yVVJMU2NoZW1l
OkAiU1ciXTsKIAogICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtb
V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDAp
IGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwotICAgIFt3ZWJWaWV3LmdldCgp
LmNvbmZpZ3VyYXRpb24ucHJvY2Vzc1Bvb2wgX3JlZ2lzdGVyVVJMU2NoZW1lU2VydmljZVdvcmtl
cnNDYW5IYW5kbGU6QCJzdyJdOwogCiAgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05TVVJM
UmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAInN3Oi8vaG9zdC9t
YWluLmh0bWwiXV07CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07CkBAIC01MDQs
NyArNTEzLDcgQEAgVEVTVChTZXJ2aWNlV29ya2VycywgQmFzaWMpCiAKICAgICB3ZWJWaWV3ID0g
bnVsbHB0cjsKIAotICAgIFtbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVdIGZl
dGNoRGF0YVJlY29yZHNPZlR5cGVzOltOU1NldCBzZXRXaXRoT2JqZWN0OldLV2Vic2l0ZURhdGFU
eXBlU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnNdIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNBcnJh
eTxXS1dlYnNpdGVEYXRhUmVjb3JkICo+ICp3ZWJzaXRlRGF0YVJlY29yZHMpIHsKKyAgICBbZGF0
YVN0b3JlIGZldGNoRGF0YVJlY29yZHNPZlR5cGVzOltOU1NldCBzZXRXaXRoT2JqZWN0OldLV2Vi
c2l0ZURhdGFUeXBlU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnNdIGNvbXBsZXRpb25IYW5kbGVy
Ol4oTlNBcnJheTxXS1dlYnNpdGVEYXRhUmVjb3JkICo+ICp3ZWJzaXRlRGF0YVJlY29yZHMpIHsK
ICAgICAgICAgRVhQRUNUX0VRKDF1LCBbd2Vic2l0ZURhdGFSZWNvcmRzIGNvdW50XSk7CiAgICAg
ICAgIEVYUEVDVF9UUlVFKFt3ZWJzaXRlRGF0YVJlY29yZHNbMF0uZGlzcGxheU5hbWUgaXNFcXVh
bFRvU3RyaW5nOkAic3cgaG9zdCJdKTsKIApAQCAtNTc2LDE0ICs1ODUsMTcgQEAgVEVTVChTZXJ2
aWNlV29ya2VycywgVXNlckFnZW50T3ZlcnJpZGUpCiB7CiAgICAgW1dLV2Vic2l0ZURhdGFTdG9y
ZSBfYWxsb3dXZWJzaXRlRGF0YVJlY29yZHNGb3JBbGxPcmlnaW5zXTsKIAorICAgIGF1dG8qIGRh
dGFTdG9yZSA9IGRhdGFTdG9yZVdpdGhSZWdpc3RlcmVkU2VydmljZVdvcmtlclNjaGVtZShAInN3
Iik7CisKICAgICAvLyBTdGFydCB3aXRoIGEgY2xlYW4gc2xhdGUgZGF0YSBzdG9yZQotICAgIFtb
V0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVdIHJlbW92ZURhdGFPZlR5cGVzOltX
S1dlYnNpdGVEYXRhU3RvcmUgYWxsV2Vic2l0ZURhdGFUeXBlc10gbW9kaWZpZWRTaW5jZTpbTlNE
YXRlIGRpc3RhbnRQYXN0XSBjb21wbGV0aW9uSGFuZGxlcjpeKCkgeworICAgIFtkYXRhU3RvcmUg
cmVtb3ZlRGF0YU9mVHlwZXM6W1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxXZWJzaXRlRGF0YVR5cGVz
XSBtb2RpZmllZFNpbmNlOltOU0RhdGUgZGlzdGFudFBhc3RdIGNvbXBsZXRpb25IYW5kbGVyOl4o
KSB7CiAgICAgICAgIGRvbmUgPSB0cnVlOwogICAgIH1dOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0
aWw6OnJ1bigmZG9uZSk7CiAgICAgZG9uZSA9IGZhbHNlOwogCiAgICAgYXV0byBjb25maWd1cmF0
aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAg
ICBbY29uZmlndXJhdGlvbiBzZXRXZWJzaXRlRGF0YVN0b3JlOmRhdGFTdG9yZV07CiAKICAgICBh
dXRvIG1lc3NhZ2VIYW5kbGVyID0gYWRvcHROUyhbW1NXVXNlckFnZW50TWVzc2FnZUhhbmRsZXIg
YWxsb2NdIGluaXRXaXRoRXhwZWN0ZWRNZXNzYWdlOkAiTWVzc2FnZSBmcm9tIHdvcmtlcjogRm9v
IEN1c3RvbSBVc2VyQWdlbnQiXSk7CiAgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29u
dHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6bWVzc2FnZUhhbmRsZXIuZ2V0KCkgbmFt
ZTpAInN3Il07CkBAIC01OTUsNyArNjA3LDYgQEAgVEVTVChTZXJ2aWNlV29ya2VycywgVXNlckFn
ZW50T3ZlcnJpZGUpCiAgICAgW2NvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpoYW5k
bGVyLmdldCgpIGZvclVSTFNjaGVtZTpAIlNXIl07CiAKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9w
dE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAw
LCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwotICAgIFt3ZWJWaWV3
LmdldCgpLmNvbmZpZ3VyYXRpb24ucHJvY2Vzc1Bvb2wgX3JlZ2lzdGVyVVJMU2NoZW1lU2Vydmlj
ZVdvcmtlcnNDYW5IYW5kbGU6QCJzdyJdOwogCiAgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMo
W1tTV0N1c3RvbVVzZXJBZ2VudERlbGVnYXRlIGFsbG9jXSBpbml0V2l0aFVzZXJBZ2VudDpAIkZv
byBDdXN0b20gVXNlckFnZW50Il0pOwogICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0
ZTpkZWxlZ2F0ZS5nZXQoKV07CkBAIC02MTQsNiArNjI1LDcgQEAgVEVTVChTZXJ2aWNlV29ya2Vy
cywgVXNlckFnZW50T3ZlcnJpZGUpCiAgICAgY29uZmlndXJhdGlvbiA9IG51bGxwdHI7CiAKICAg
ICBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2Nd
IGluaXRdKTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRXZWJzaXRlRGF0YVN0b3JlOmRhdGFTdG9y
ZV07CiAKICAgICBtZXNzYWdlSGFuZGxlciA9IGFkb3B0TlMoW1tTV1VzZXJBZ2VudE1lc3NhZ2VI
YW5kbGVyIGFsbG9jXSBpbml0V2l0aEV4cGVjdGVkTWVzc2FnZTpAIk1lc3NhZ2UgZnJvbSB3b3Jr
ZXI6IEJhciBDdXN0b20gVXNlckFnZW50Il0pOwogICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29u
dGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOm1lc3NhZ2VIYW5kbGVyLmdl
dCgpIG5hbWU6QCJzdyJdOwpAQCAtNjI1LDcgKzYzNyw2IEBAIFRFU1QoU2VydmljZVdvcmtlcnMs
IFVzZXJBZ2VudE92ZXJyaWRlKQogICAgIFtjb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRs
ZXI6aGFuZGxlci5nZXQoKSBmb3JVUkxTY2hlbWU6QCJTVyJdOwogCiAgICAgd2ViVmlldyA9IGFk
b3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4
MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7Ci0gICAgW3dlYlZp
ZXcuZ2V0KCkuY29uZmlndXJhdGlvbi5wcm9jZXNzUG9vbCBfcmVnaXN0ZXJVUkxTY2hlbWVTZXJ2
aWNlV29ya2Vyc0NhbkhhbmRsZTpAInN3Il07CiAKICAgICBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tT
V0N1c3RvbVVzZXJBZ2VudERlbGVnYXRlIGFsbG9jXSBpbml0V2l0aFVzZXJBZ2VudDpAIkJhciBD
dXN0b20gVXNlckFnZW50Il0pOwogICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpk
ZWxlZ2F0ZS5nZXQoKV07CkBAIC02NDUsMTQgKzY1NiwxNyBAQCBURVNUKFNlcnZpY2VXb3JrZXJz
LCBSZXN0b3JlRnJvbURpc2spCiAKICAgICBbV0tXZWJzaXRlRGF0YVN0b3JlIF9hbGxvd1dlYnNp
dGVEYXRhUmVjb3Jkc0ZvckFsbE9yaWdpbnNdOwogCisgICAgYXV0byogZGF0YVN0b3JlID0gZGF0
YVN0b3JlV2l0aFJlZ2lzdGVyZWRTZXJ2aWNlV29ya2VyU2NoZW1lKEAic3ciKTsKKyAgICAKICAg
ICAvLyBTdGFydCB3aXRoIGEgY2xlYW4gc2xhdGUgZGF0YSBzdG9yZQotICAgIFtbV0tXZWJzaXRl
RGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVdIHJlbW92ZURhdGFPZlR5cGVzOltXS1dlYnNpdGVE
YXRhU3RvcmUgYWxsV2Vic2l0ZURhdGFUeXBlc10gbW9kaWZpZWRTaW5jZTpbTlNEYXRlIGRpc3Rh
bnRQYXN0XSBjb21wbGV0aW9uSGFuZGxlcjpeKCkgeworICAgIFtkYXRhU3RvcmUgcmVtb3ZlRGF0
YU9mVHlwZXM6W1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxXZWJzaXRlRGF0YVR5cGVzXSBtb2RpZmll
ZFNpbmNlOltOU0RhdGUgZGlzdGFudFBhc3RdIGNvbXBsZXRpb25IYW5kbGVyOl4oKSB7CiAgICAg
ICAgIGRvbmUgPSB0cnVlOwogICAgIH1dOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigm
ZG9uZSk7CiAgICAgZG9uZSA9IGZhbHNlOwogCi0gICAgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZp
Z3VyYXRpb24+IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlv
biBhbGxvY10gaW5pdF0pOworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dl
YlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0
V2Vic2l0ZURhdGFTdG9yZTpkYXRhU3RvcmVdOwogCiAgICAgUmV0YWluUHRyPFNXTWVzc2FnZUhh
bmRsZXJGb3JSZXN0b3JlRnJvbURpc2tUZXN0PiBtZXNzYWdlSGFuZGxlciA9IGFkb3B0TlMoW1tT
V01lc3NhZ2VIYW5kbGVyRm9yUmVzdG9yZUZyb21EaXNrVGVzdCBhbGxvY10gaW5pdFdpdGhFeHBl
Y3RlZE1lc3NhZ2U6QCJQQVNTOiBSZWdpc3RyYXRpb24gd2FzIHN1Y2Nlc3NmdWwgYW5kIHNlcnZp
Y2Ugd29ya2VyIHdhcyBhY3RpdmF0ZWQiXSk7CiAgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250
ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6bWVzc2FnZUhhbmRsZXIuZ2V0
KCkgbmFtZTpAInN3Il07CkBAIC02NjMsNyArNjc3LDYgQEAgVEVTVChTZXJ2aWNlV29ya2Vycywg
UmVzdG9yZUZyb21EaXNrKQogICAgIFtjb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6
aGFuZGxlci5nZXQoKSBmb3JVUkxTY2hlbWU6QCJTVyJdOwogCiAgICAgUmV0YWluUHRyPFdLV2Vi
Vmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6
TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdl
dCgpXSk7Ci0gICAgW3dlYlZpZXcuZ2V0KCkuY29uZmlndXJhdGlvbi5wcm9jZXNzUG9vbCBfcmVn
aXN0ZXJVUkxTY2hlbWVTZXJ2aWNlV29ya2Vyc0NhbkhhbmRsZTpAInN3Il07CiAKICAgICBOU1VS
TFJlcXVlc3QgKnJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBV
UkxXaXRoU3RyaW5nOkAic3c6Ly9ob3N0L21haW4uaHRtbCJdXTsKICAgICBbd2ViVmlldyBsb2Fk
UmVxdWVzdDpyZXF1ZXN0XTsKQEAgLTY3OCw2ICs2OTEsNyBAQCBURVNUKFNlcnZpY2VXb3JrZXJz
LCBSZXN0b3JlRnJvbURpc2spCiAgICAgZG9uZSA9IGZhbHNlOwogCiAgICAgY29uZmlndXJhdGlv
biA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAg
W2NvbmZpZ3VyYXRpb24gc2V0V2Vic2l0ZURhdGFTdG9yZTpkYXRhU3RvcmVdOwogICAgIG1lc3Nh
Z2VIYW5kbGVyID0gYWRvcHROUyhbW1NXTWVzc2FnZUhhbmRsZXJGb3JSZXN0b3JlRnJvbURpc2tU
ZXN0IGFsbG9jXSBpbml0V2l0aEV4cGVjdGVkTWVzc2FnZTpAIlBBU1M6IFJlZ2lzdHJhdGlvbiBh
bHJlYWR5IGhhcyBhbiBhY3RpdmUgd29ya2VyIl0pOwogICAgIFtbY29uZmlndXJhdGlvbiB1c2Vy
Q29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOm1lc3NhZ2VIYW5kbGVy
LmdldCgpIG5hbWU6QCJzdyJdOwogCkBAIC02ODcsNyArNzAxLDYgQEAgVEVTVChTZXJ2aWNlV29y
a2VycywgUmVzdG9yZUZyb21EaXNrKQogICAgIFtjb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhh
bmRsZXI6aGFuZGxlci5nZXQoKSBmb3JVUkxTY2hlbWU6QCJTVyJdOwogCiAgICAgd2ViVmlldyA9
IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAw
LCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7Ci0gICAgW3dl
YlZpZXcuZ2V0KCkuY29uZmlndXJhdGlvbi5wcm9jZXNzUG9vbCBfcmVnaXN0ZXJVUkxTY2hlbWVT
ZXJ2aWNlV29ya2Vyc0NhbkhhbmRsZTpAInN3Il07CiAKICAgICByZXF1ZXN0ID0gW05TVVJMUmVx
dWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAInN3Oi8vaG9zdC9tYWlu
Lmh0bWwiXV07CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07CkBAIC03MDEsOCAr
NzE0LDEwIEBAIFRFU1QoU2VydmljZVdvcmtlcnMsIENhY2hlU3RvcmFnZVJlc3RvcmUKICAgICBB
U1NFUlQobWFpbkNhY2hlU3RvcmFnZUJ5dGVzKTsKICAgICBbV0tXZWJzaXRlRGF0YVN0b3JlIF9h
bGxvd1dlYnNpdGVEYXRhUmVjb3Jkc0ZvckFsbE9yaWdpbnNdOwogCisgICAgYXV0byogZGF0YVN0
b3JlID0gZGF0YVN0b3JlV2l0aFJlZ2lzdGVyZWRTZXJ2aWNlV29ya2VyU2NoZW1lKEAic3ciKTsK
KyAgICAKICAgICAvLyBTdGFydCB3aXRoIGEgY2xlYW4gc2xhdGUgZGF0YSBzdG9yZQotICAgIFtb
V0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVdIHJlbW92ZURhdGFPZlR5cGVzOltX
S1dlYnNpdGVEYXRhU3RvcmUgYWxsV2Vic2l0ZURhdGFUeXBlc10gbW9kaWZpZWRTaW5jZTpbTlNE
YXRlIGRpc3RhbnRQYXN0XSBjb21wbGV0aW9uSGFuZGxlcjpeKCkgeworICAgIFtkYXRhU3RvcmUg
cmVtb3ZlRGF0YU9mVHlwZXM6W1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxXZWJzaXRlRGF0YVR5cGVz
XSBtb2RpZmllZFNpbmNlOltOU0RhdGUgZGlzdGFudFBhc3RdIGNvbXBsZXRpb25IYW5kbGVyOl4o
KSB7CiAgICAgICAgIGRvbmUgPSB0cnVlOwogICAgIH1dOwogCkBAIC03MTUsMTMgKzczMCwxMyBA
QCBURVNUKFNlcnZpY2VXb3JrZXJzLCBDYWNoZVN0b3JhZ2VSZXN0b3JlCiAgICAgaGFuZGxlci0+
cmVzb3VyY2VzLnNldCgic3c6Ly9ob3N0L21haW4uaHRtbCIsIFJlc291cmNlSW5mbyB7IEAidGV4
dC9odG1sIiwgbWFpbkNhY2hlU3RvcmFnZUJ5dGVzIH0pOwogCiAgICAgYXV0byBjb25maWd1cmF0
aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAg
ICBbY29uZmlndXJhdGlvbiBzZXRXZWJzaXRlRGF0YVN0b3JlOmRhdGFTdG9yZV07CiAgICAgYXV0
byBtZXNzYWdlSGFuZGxlciA9IGFkb3B0TlMoW1tTV01lc3NhZ2VIYW5kbGVyRm9yUmVzdG9yZUZy
b21EaXNrVGVzdCBhbGxvY10gaW5pdFdpdGhFeHBlY3RlZE1lc3NhZ2U6QCJObyBjYWNoZSBzdG9y
YWdlIGRhdGEiXSk7CiAKICAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVy
XSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjptZXNzYWdlSGFuZGxlci5nZXQoKSBuYW1lOkAic3ci
XTsKICAgICBbY29uZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVyOmhhbmRsZXIuZ2V0KCkg
Zm9yVVJMU2NoZW1lOkAiU1ciXTsKIAogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dl
YlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29u
ZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7Ci0gICAgW3dlYlZpZXcuZ2V0KCkuY29u
ZmlndXJhdGlvbi5wcm9jZXNzUG9vbCBfcmVnaXN0ZXJVUkxTY2hlbWVTZXJ2aWNlV29ya2Vyc0Nh
bkhhbmRsZTpAInN3Il07CiAKICAgICAvLyBUcmlnZ2VyIGNyZWF0aW9uIG9mIG5ldHdvcmsgcHJv
Y2Vzcy4KICAgICBbd2ViVmlldy5nZXQoKS5jb25maWd1cmF0aW9uLnByb2Nlc3NQb29sIF9zeW5j
TmV0d29ya1Byb2Nlc3NDb29raWVzXTsKQEAgLTczNywxMyArNzUyLDEzIEBAIFRFU1QoU2Vydmlj
ZVdvcmtlcnMsIENhY2hlU3RvcmFnZVJlc3RvcmUKICAgICBtZXNzYWdlSGFuZGxlciA9IG51bGxw
dHI7CiAKICAgICBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRp
b24gYWxsb2NdIGluaXRdKTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRXZWJzaXRlRGF0YVN0b3Jl
OmRhdGFTdG9yZV07CiAgICAgbWVzc2FnZUhhbmRsZXIgPSBhZG9wdE5TKFtbU1dNZXNzYWdlSGFu
ZGxlckZvclJlc3RvcmVGcm9tRGlza1Rlc3QgYWxsb2NdIGluaXRXaXRoRXhwZWN0ZWRNZXNzYWdl
OkAiU29tZSBjYWNoZSBzdG9yYWdlIGRhdGE6IG15IGNhY2hlIl0pOwogCiAgICAgW1tjb25maWd1
cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6bWVz
c2FnZUhhbmRsZXIuZ2V0KCkgbmFtZTpAInN3Il07CiAgICAgW2NvbmZpZ3VyYXRpb24gc2V0VVJM
U2NoZW1lSGFuZGxlcjpoYW5kbGVyLmdldCgpIGZvclVSTFNjaGVtZTpAIlNXIl07CiAKICAgICB3
ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VS
ZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsK
LSAgICBbd2ViVmlldy5nZXQoKS5jb25maWd1cmF0aW9uLnByb2Nlc3NQb29sIF9yZWdpc3RlclVS
TFNjaGVtZVNlcnZpY2VXb3JrZXJzQ2FuSGFuZGxlOkAic3ciXTsKIAogICAgIHJlcXVlc3QgPSBb
TlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAic3c6Ly9o
b3N0L21haW4uaHRtbCJdXTsKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKQEAg
LTc2MCwxNCArNzc1LDE3IEBAIFRFU1QoU2VydmljZVdvcmtlcnMsIEZldGNoQWZ0ZXJSZXN0b3Jl
RnIKIAogICAgIFtXS1dlYnNpdGVEYXRhU3RvcmUgX2FsbG93V2Vic2l0ZURhdGFSZWNvcmRzRm9y
QWxsT3JpZ2luc107CiAKKyAgICBhdXRvKiBkYXRhU3RvcmUgPSBkYXRhU3RvcmVXaXRoUmVnaXN0
ZXJlZFNlcnZpY2VXb3JrZXJTY2hlbWUoQCJzdyIpOworICAgIAogICAgIC8vIFN0YXJ0IHdpdGgg
YSBjbGVhbiBzbGF0ZSBkYXRhIHN0b3JlCi0gICAgW1tXS1dlYnNpdGVEYXRhU3RvcmUgZGVmYXVs
dERhdGFTdG9yZV0gcmVtb3ZlRGF0YU9mVHlwZXM6W1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxXZWJz
aXRlRGF0YVR5cGVzXSBtb2RpZmllZFNpbmNlOltOU0RhdGUgZGlzdGFudFBhc3RdIGNvbXBsZXRp
b25IYW5kbGVyOl4oKSB7CisgICAgW2RhdGFTdG9yZSByZW1vdmVEYXRhT2ZUeXBlczpbV0tXZWJz
aXRlRGF0YVN0b3JlIGFsbFdlYnNpdGVEYXRhVHlwZXNdIG1vZGlmaWVkU2luY2U6W05TRGF0ZSBk
aXN0YW50UGFzdF0gY29tcGxldGlvbkhhbmRsZXI6XigpIHsKICAgICAgICAgZG9uZSA9IHRydWU7
CiAgICAgfV07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKICAgICBkb25l
ID0gZmFsc2U7CiAKICAgICBSZXRhaW5QdHI8V0tXZWJWaWV3Q29uZmlndXJhdGlvbj4gY29uZmln
dXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7
CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0V2Vic2l0ZURhdGFTdG9yZTpkYXRhU3RvcmVdOwogCiAg
ICAgUmV0YWluUHRyPFNXTWVzc2FnZUhhbmRsZXJGb3JGZXRjaFRlc3Q+IG1lc3NhZ2VIYW5kbGVy
ID0gYWRvcHROUyhbW1NXTWVzc2FnZUhhbmRsZXJGb3JGZXRjaFRlc3QgYWxsb2NdIGluaXRdKTsK
ICAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNz
YWdlSGFuZGxlcjptZXNzYWdlSGFuZGxlci5nZXQoKSBuYW1lOkAic3ciXTsKQEAgLTc3OSw3ICs3
OTcsNiBAQCBURVNUKFNlcnZpY2VXb3JrZXJzLCBGZXRjaEFmdGVyUmVzdG9yZUZyCiAgICAgW2Nv
bmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpoYW5kbGVyLmdldCgpIGZvclVSTFNjaGVt
ZTpAIlNXIl07CiAKICAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhb
W1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAw
KSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKLSAgICBbd2ViVmlldy5nZXQo
KS5jb25maWd1cmF0aW9uLnByb2Nlc3NQb29sIF9yZWdpc3RlclVSTFNjaGVtZVNlcnZpY2VXb3Jr
ZXJzQ2FuSGFuZGxlOkAic3ciXTsKIAogICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtOU1VS
TFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJzdzovL2hvc3Qv
bWFpbi5odG1sIl1dOwogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3RdOwpAQCAtNzk0
LDYgKzgxMSw3IEBAIFRFU1QoU2VydmljZVdvcmtlcnMsIEZldGNoQWZ0ZXJSZXN0b3JlRnIKICAg
ICBkb25lID0gZmFsc2U7CiAKICAgICBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmll
d0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRXZWJz
aXRlRGF0YVN0b3JlOmRhdGFTdG9yZV07CiAgICAgbWVzc2FnZUhhbmRsZXIgPSBhZG9wdE5TKFtb
U1dNZXNzYWdlSGFuZGxlckZvckZldGNoVGVzdCBhbGxvY10gaW5pdF0pOwogICAgIFtbY29uZmln
dXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOm1l
c3NhZ2VIYW5kbGVyLmdldCgpIG5hbWU6QCJzdyJdOwogCkBAIC04MDQsNyArODIyLDYgQEAgVEVT
VChTZXJ2aWNlV29ya2VycywgRmV0Y2hBZnRlclJlc3RvcmVGcgogICAgIFtjb25maWd1cmF0aW9u
IHNldFVSTFNjaGVtZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBmb3JVUkxTY2hlbWU6QCJTVyJdOwog
CiAgICAgd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6
TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdl
dCgpXSk7Ci0gICAgW3dlYlZpZXcuZ2V0KCkuY29uZmlndXJhdGlvbi5wcm9jZXNzUG9vbCBfcmVn
aXN0ZXJVUkxTY2hlbWVTZXJ2aWNlV29ya2Vyc0NhbkhhbmRsZTpAInN3Il07CiAKICAgICByZXF1
ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpA
InN3Oi8vaG9zdC9tYWluLmh0bWwiXV07CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVz
dF07CkBAIC04MjAsMTQgKzgzNywxNyBAQCBURVNUKFNlcnZpY2VXb3JrZXJzLCBJbnRlcmNlcHRG
aXJzdExvYWRBCiAKICAgICBbV0tXZWJzaXRlRGF0YVN0b3JlIF9hbGxvd1dlYnNpdGVEYXRhUmVj
b3Jkc0ZvckFsbE9yaWdpbnNdOwogCisgICAgYXV0byogZGF0YVN0b3JlID0gZGF0YVN0b3JlV2l0
aFJlZ2lzdGVyZWRTZXJ2aWNlV29ya2VyU2NoZW1lKEAic3ciKTsKKwogICAgIC8vIFN0YXJ0IHdp
dGggYSBjbGVhbiBzbGF0ZSBkYXRhIHN0b3JlCi0gICAgW1tXS1dlYnNpdGVEYXRhU3RvcmUgZGVm
YXVsdERhdGFTdG9yZV0gcmVtb3ZlRGF0YU9mVHlwZXM6W1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxX
ZWJzaXRlRGF0YVR5cGVzXSBtb2RpZmllZFNpbmNlOltOU0RhdGUgZGlzdGFudFBhc3RdIGNvbXBs
ZXRpb25IYW5kbGVyOl4oKSB7CisgICAgW2RhdGFTdG9yZSByZW1vdmVEYXRhT2ZUeXBlczpbV0tX
ZWJzaXRlRGF0YVN0b3JlIGFsbFdlYnNpdGVEYXRhVHlwZXNdIG1vZGlmaWVkU2luY2U6W05TRGF0
ZSBkaXN0YW50UGFzdF0gY29tcGxldGlvbkhhbmRsZXI6XigpIHsKICAgICAgICAgZG9uZSA9IHRy
dWU7CiAgICAgfV07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKICAgICBk
b25lID0gZmFsc2U7CiAKICAgICBSZXRhaW5QdHI8V0tXZWJWaWV3Q29uZmlndXJhdGlvbj4gY29u
ZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0
XSk7CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0V2Vic2l0ZURhdGFTdG9yZTpkYXRhU3RvcmVdOwog
CiAgICAgUmV0YWluUHRyPFNXTWVzc2FnZUhhbmRsZXJXaXRoRXhwZWN0ZWRNZXNzYWdlPiBtZXNz
YWdlSGFuZGxlciA9IGFkb3B0TlMoW1tTV01lc3NhZ2VIYW5kbGVyV2l0aEV4cGVjdGVkTWVzc2Fn
ZSBhbGxvY10gaW5pdF0pOwogICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xs
ZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOm1lc3NhZ2VIYW5kbGVyLmdldCgpIG5hbWU6QCJz
dyJdOwpAQCAtODM4LDcgKzg1OCw2IEBAIFRFU1QoU2VydmljZVdvcmtlcnMsIEludGVyY2VwdEZp
cnN0TG9hZEEKICAgICBbY29uZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVyOmhhbmRsZXIu
Z2V0KCkgZm9yVVJMU2NoZW1lOkAiU1ciXTsKIAogICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IHdl
YlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJl
Y3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwot
ICAgIFt3ZWJWaWV3LmdldCgpLmNvbmZpZ3VyYXRpb24ucHJvY2Vzc1Bvb2wgX3JlZ2lzdGVyVVJM
U2NoZW1lU2VydmljZVdvcmtlcnNDYW5IYW5kbGU6QCJzdyJdOwogCiAgICAgZXhwZWN0ZWRNZXNz
YWdlID0gIlNlcnZpY2UgV29ya2VyIGFjdGl2YXRlZCI7CiAgICAgTlNVUkxSZXF1ZXN0ICpyZXF1
ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpA
InN3Oi8vaG9zdC9tYWluLmh0bWwiXV07CkBAIC04NTQsNiArODczLDcgQEAgVEVTVChTZXJ2aWNl
V29ya2VycywgSW50ZXJjZXB0Rmlyc3RMb2FkQQogICAgIGRvbmUgPSBmYWxzZTsKIAogICAgIGNv
bmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5p
dF0pOworICAgIFtjb25maWd1cmF0aW9uIHNldFdlYnNpdGVEYXRhU3RvcmU6ZGF0YVN0b3JlXTsK
ICAgICBtZXNzYWdlSGFuZGxlciA9IGFkb3B0TlMoW1tTV01lc3NhZ2VIYW5kbGVyV2l0aEV4cGVj
dGVkTWVzc2FnZSBhbGxvY10gaW5pdF0pOwogICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVu
dENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOm1lc3NhZ2VIYW5kbGVyLmdldCgp
IG5hbWU6QCJzdyJdOwogCkBAIC04NjMsNyArODgzLDYgQEAgVEVTVChTZXJ2aWNlV29ya2Vycywg
SW50ZXJjZXB0Rmlyc3RMb2FkQQogICAgIFtjb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRs
ZXI6aGFuZGxlci5nZXQoKSBmb3JVUkxTY2hlbWU6QCJTVyJdOwogCiAgICAgd2ViVmlldyA9IGFk
b3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4
MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7Ci0gICAgW3dlYlZp
ZXcuZ2V0KCkuY29uZmlndXJhdGlvbi5wcm9jZXNzUG9vbCBfcmVnaXN0ZXJVUkxTY2hlbWVTZXJ2
aWNlV29ya2Vyc0NhbkhhbmRsZTpAInN3Il07CiAKICAgICBleHBlY3RlZE1lc3NhZ2UgPSAiSW50
ZXJjZXB0ZWQgYnkgd29ya2VyIjsKICAgICByZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0
V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAInN3Oi8vaG9zdC9tYWluLmh0bWwiXV07CkBA
IC04NzcsMTQgKzg5NiwxNyBAQCBURVNUKFNlcnZpY2VXb3JrZXJzLCBXYWl0Rm9yUG9saWN5RGVs
ZWdhCiB7CiAgICAgW1dLV2Vic2l0ZURhdGFTdG9yZSBfYWxsb3dXZWJzaXRlRGF0YVJlY29yZHNG
b3JBbGxPcmlnaW5zXTsKIAorICAgIGF1dG8qIGRhdGFTdG9yZSA9IGRhdGFTdG9yZVdpdGhSZWdp
c3RlcmVkU2VydmljZVdvcmtlclNjaGVtZShAInN3Iik7CisKICAgICAvLyBTdGFydCB3aXRoIGEg
Y2xlYW4gc2xhdGUgZGF0YSBzdG9yZQotICAgIFtbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHRE
YXRhU3RvcmVdIHJlbW92ZURhdGFPZlR5cGVzOltXS1dlYnNpdGVEYXRhU3RvcmUgYWxsV2Vic2l0
ZURhdGFUeXBlc10gbW9kaWZpZWRTaW5jZTpbTlNEYXRlIGRpc3RhbnRQYXN0XSBjb21wbGV0aW9u
SGFuZGxlcjpeKCkgeworICAgIFtkYXRhU3RvcmUgcmVtb3ZlRGF0YU9mVHlwZXM6W1dLV2Vic2l0
ZURhdGFTdG9yZSBhbGxXZWJzaXRlRGF0YVR5cGVzXSBtb2RpZmllZFNpbmNlOltOU0RhdGUgZGlz
dGFudFBhc3RdIGNvbXBsZXRpb25IYW5kbGVyOl4oKSB7CiAgICAgICAgIGRvbmUgPSB0cnVlOwog
ICAgIH1dOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CiAgICAgZG9uZSA9
IGZhbHNlOwogCiAgICAgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3Vy
YXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwor
ICAgIFtjb25maWd1cmF0aW9uIHNldFdlYnNpdGVEYXRhU3RvcmU6ZGF0YVN0b3JlXTsKIAogICAg
IFJldGFpblB0cjxTV01lc3NhZ2VIYW5kbGVyV2l0aEV4cGVjdGVkTWVzc2FnZT4gbWVzc2FnZUhh
bmRsZXIgPSBhZG9wdE5TKFtbU1dNZXNzYWdlSGFuZGxlcldpdGhFeHBlY3RlZE1lc3NhZ2UgYWxs
b2NdIGluaXRdKTsKICAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBh
ZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjptZXNzYWdlSGFuZGxlci5nZXQoKSBuYW1lOkAic3ciXTsK
QEAgLTg5NSw3ICs5MTcsNiBAQCBURVNUKFNlcnZpY2VXb3JrZXJzLCBXYWl0Rm9yUG9saWN5RGVs
ZWdhCiAgICAgW2NvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpoYW5kbGVyLmdldCgp
IGZvclVSTFNjaGVtZTpAIlNXIl07CiAKICAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3
ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAs
IDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKLSAgICBb
d2ViVmlldy5nZXQoKS5jb25maWd1cmF0aW9uLnByb2Nlc3NQb29sIF9yZWdpc3RlclVSTFNjaGVt
ZVNlcnZpY2VXb3JrZXJzQ2FuSGFuZGxlOkAic3ciXTsKIAogICAgIC8vIFJlZ2lzdGVyIGEgc2Vy
dmljZSB3b3JrZXIgYW5kIGFjdGl2YXRlIGl0LgogICAgIGV4cGVjdGVkTWVzc2FnZSA9ICJTZXJ2
aWNlIFdvcmtlciBhY3RpdmF0ZWQiOwpAQCAtOTEyLDYgKzkzMyw3IEBAIFRFU1QoU2VydmljZVdv
cmtlcnMsIFdhaXRGb3JQb2xpY3lEZWxlZ2EKICAgICBkb25lID0gZmFsc2U7CiAKICAgICBjb25m
aWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRd
KTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRXZWJzaXRlRGF0YVN0b3JlOmRhdGFTdG9yZV07CiAg
ICAgbWVzc2FnZUhhbmRsZXIgPSBhZG9wdE5TKFtbU1dNZXNzYWdlSGFuZGxlcldpdGhFeHBlY3Rl
ZE1lc3NhZ2UgYWxsb2NdIGluaXRdKTsKICAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRD
b250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjptZXNzYWdlSGFuZGxlci5nZXQoKSBu
YW1lOkAic3ciXTsKIApAQCAtOTIxLDcgKzk0Myw2IEBAIFRFU1QoU2VydmljZVdvcmtlcnMsIFdh
aXRGb3JQb2xpY3lEZWxlZ2EKICAgICBbY29uZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVy
OmhhbmRsZXIuZ2V0KCkgZm9yVVJMU2NoZW1lOkAiU1ciXTsKIAogICAgIHdlYlZpZXcgPSBhZG9w
dE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAw
LCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwotICAgIFt3ZWJWaWV3
LmdldCgpLmNvbmZpZ3VyYXRpb24ucHJvY2Vzc1Bvb2wgX3JlZ2lzdGVyVVJMU2NoZW1lU2Vydmlj
ZVdvcmtlcnNDYW5IYW5kbGU6QCJzdyJdOwogCiAgICAgLy8gVmVyaWZ5IHNlcnZpY2Ugd29ya2Vy
IGlzIGludGVyY2VwdGluZyBsb2FkLgogICAgIGV4cGVjdGVkTWVzc2FnZSA9ICJJbnRlcmNlcHRl
ZCBieSB3b3JrZXIiOwpAQCAtOTMyLDcgKzk1Myw2IEBAIFRFU1QoU2VydmljZVdvcmtlcnMsIFdh
aXRGb3JQb2xpY3lEZWxlZ2EKICAgICBkb25lID0gZmFsc2U7CiAKICAgICB3ZWJWaWV3ID0gYWRv
cHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgw
MCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKLSAgICBbd2ViVmll
dy5nZXQoKS5jb25maWd1cmF0aW9uLnByb2Nlc3NQb29sIF9yZWdpc3RlclVSTFNjaGVtZVNlcnZp
Y2VXb3JrZXJzQ2FuSGFuZGxlOkAic3ciXTsKICAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhb
W1Rlc3RTV0FzeW5jTmF2aWdhdGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0XSk7CiAgICAgW3dlYlZp
ZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKICAgICBbd2ViVmlldyBz
ZXRVSURlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKQEAgLTk0OSw3ICs5NjksNiBAQCBURVNUKFNl
cnZpY2VXb3JrZXJzLCBXYWl0Rm9yUG9saWN5RGVsZWdhCiAgICAgRVhQRUNUX0ZBTFNFKG5hdmln
YXRpb25GYWlsZWQpOwogCiAgICAgd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2Nd
IGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpj
b25maWd1cmF0aW9uLmdldCgpXSk7Ci0gICAgW3dlYlZpZXcuZ2V0KCkuY29uZmlndXJhdGlvbi5w
cm9jZXNzUG9vbCBfcmVnaXN0ZXJVUkxTY2hlbWVTZXJ2aWNlV29ya2Vyc0NhbkhhbmRsZTpAInN3
Il07CiAgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsK
ICAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKIApAQCAtOTcwLDgg
Kzk4OSw3IEBAIHZvaWQgc2V0Q29uZmlndXJhdGlvbkluamVjdGVkQnVuZGxlUGF0aCgKIHsKICAg
ICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQgPSBhZG9wdFdLKFRlc3RXZWJLaXRB
UEk6OlV0aWw6OmNyZWF0ZUNvbnRleHRGb3JJbmplY3RlZEJ1bmRsZVRlc3QoIkludGVybmFsc0lu
amVjdGVkQnVuZGxlVGVzdCIpKTsKICAgICBjb25maWd1cmF0aW9uLnByb2Nlc3NQb29sID0gKFdL
UHJvY2Vzc1Bvb2wgKiljb250ZXh0LmdldCgpOwotICAgIGF1dG8gcG9vbCA9IGNvbmZpZ3VyYXRp
b24ucHJvY2Vzc1Bvb2w7Ci0gICAgW3Bvb2wgX3JlZ2lzdGVyVVJMU2NoZW1lU2VydmljZVdvcmtl
cnNDYW5IYW5kbGU6QCJzdyJdOworICAgIGNvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSA9
IGRhdGFTdG9yZVdpdGhSZWdpc3RlcmVkU2VydmljZVdvcmtlclNjaGVtZShAInN3Iik7CiB9CiAK
IEBpbnRlcmZhY2UgUmVndWxhclBhZ2VNZXNzYWdlSGFuZGxlciA6IE5TT2JqZWN0IDxXS1Njcmlw
dE1lc3NhZ2VIYW5kbGVyPgpAQCAtMTMzMyw4ICsxMzUxLDkgQEAgVEVTVChTZXJ2aWNlV29ya2Vy
cywgQ2FjaGVTdG9yYWdlSW5Qcml2YQogICAgIGhhbmRsZXItPnJlc291cmNlcy5zZXQoInN3Oi8v
aG9zdC93cml0ZUNhY2hlLmh0bWwiLCBSZXNvdXJjZUluZm8geyBAInRleHQvaHRtbCIsIHdyaXRl
Q2FjaGVCeXRlcyB9KTsKICAgICBbY29uZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVyOmhh
bmRsZXIuZ2V0KCkgZm9yVVJMU2NoZW1lOkAiU1ciXTsKIAotICAgIGNvbmZpZ3VyYXRpb24uZ2V0
KCkud2Vic2l0ZURhdGFTdG9yZSA9IFtXS1dlYnNpdGVEYXRhU3RvcmUgbm9uUGVyc2lzdGVudERh
dGFTdG9yZV07Ci0gICAgW2NvbmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vzc1Bvb2wgX3JlZ2lzdGVy
VVJMU2NoZW1lU2VydmljZVdvcmtlcnNDYW5IYW5kbGU6QCJzdyJdOworICAgIF9XS1dlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uICpkYXRhU3RvcmVDb25maWd1cmF0aW9uID0gW1tbX1dLV2Vi
c2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXROb25QZXJzaXN0ZW50Q29uZmln
dXJhdGlvbl0gYXV0b3JlbGVhc2VdOworICAgIFtkYXRhU3RvcmVDb25maWd1cmF0aW9uIHJlZ2lz
dGVyVVJMU2NoZW1lU2VydmljZVdvcmtlcnNDYW5IYW5kbGVGb3JUZXN0aW5nOkAic3ciXTsKKyAg
ICBjb25maWd1cmF0aW9uLmdldCgpLndlYnNpdGVEYXRhU3RvcmUgPSBbW1tXS1dlYnNpdGVEYXRh
U3RvcmUgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246ZGF0YVN0b3JlQ29uZmlndXJhdGlv
bl0gYXV0b3JlbGVhc2VdOwogCiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmll
dyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1
cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKICAgICBhdXRvICpyZXF1ZXN0ID0gW05TVVJM
UmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAInN3Oi8vaG9zdC93
cml0ZUNhY2hlLmh0bWwiXV07CkBAIC0xMzg4LDE1ICsxNDA3LDIwIEBAIFRFU1QoU2VydmljZVdv
cmtlcnMsIFNlcnZpY2VXb3JrZXJDYWNoZUEKIHsKICAgICBbV0tXZWJzaXRlRGF0YVN0b3JlIF9h
bGxvd1dlYnNpdGVEYXRhUmVjb3Jkc0ZvckFsbE9yaWdpbnNdOwogCisgICAgYXV0byogZGF0YVN0
b3JlID0gZGF0YVN0b3JlV2l0aFJlZ2lzdGVyZWRTZXJ2aWNlV29ya2VyU2NoZW1lKEAic3ciKTsK
KyAgICAKICAgICAvLyBTdGFydCB3aXRoIGEgY2xlYW4gc2xhdGUgZGF0YSBzdG9yZQotICAgIFtb
V0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVdIHJlbW92ZURhdGFPZlR5cGVzOltX
S1dlYnNpdGVEYXRhU3RvcmUgYWxsV2Vic2l0ZURhdGFUeXBlc10gbW9kaWZpZWRTaW5jZTpbTlNE
YXRlIGRpc3RhbnRQYXN0XSBjb21wbGV0aW9uSGFuZGxlcjpeKCkgeworICAgIFtkYXRhU3RvcmUg
cmVtb3ZlRGF0YU9mVHlwZXM6W1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxXZWJzaXRlRGF0YVR5cGVz
XSBtb2RpZmllZFNpbmNlOltOU0RhdGUgZGlzdGFudFBhc3RdIGNvbXBsZXRpb25IYW5kbGVyOl4o
KSB7CiAgICAgICAgIGRvbmUgPSB0cnVlOwogICAgIH1dOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0
aWw6OnJ1bigmZG9uZSk7CiAgICAgZG9uZSA9IGZhbHNlOwogICAgIAogICAgIGF1dG8gY29uZmln
dXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7
Ci0gICAgc2V0Q29uZmlndXJhdGlvbkluamVjdGVkQnVuZGxlUGF0aChjb25maWd1cmF0aW9uLmdl
dCgpKTsKKworICAgIGF1dG8gY29udGV4dCA9IGFkb3B0V0soVGVzdFdlYktpdEFQSTo6VXRpbDo6
Y3JlYXRlQ29udGV4dEZvckluamVjdGVkQnVuZGxlVGVzdCgiSW50ZXJuYWxzSW5qZWN0ZWRCdW5k
bGVUZXN0IikpOworICAgIFtjb25maWd1cmF0aW9uIHNldFByb2Nlc3NQb29sOihXS1Byb2Nlc3NQ
b29sICopY29udGV4dC5nZXQoKV07CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0V2Vic2l0ZURhdGFT
dG9yZTpkYXRhU3RvcmVdOwogICAgIAogICAgIGF1dG8gZGVmYXVsdFByZWZlcmVuY2VzID0gW2Nv
bmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdOwogICAgIFtkZWZhdWx0UHJlZmVyZW5jZXMgX3NldFNl
Y3VyZUNvbnRleHRDaGVja3NFbmFibGVkOk5PXTsKQEAgLTE0MTcsNyArMTQ0MSw5IEBAIFRFU1Qo
U2VydmljZVdvcmtlcnMsIFNlcnZpY2VXb3JrZXJDYWNoZUEKICAgICB9XTsKICAgICBUZXN0V2Vi
S2l0QVBJOjpVdGlsOjpydW4oJm9wZW5lZENhY2hlKTsKIAotICAgIGNvbmZpZ3VyYXRpb24uZ2V0
KCkud2Vic2l0ZURhdGFTdG9yZSA9IFtXS1dlYnNpdGVEYXRhU3RvcmUgbm9uUGVyc2lzdGVudERh
dGFTdG9yZV07CisgICAgX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gKm5vblBlcnNp
c3RlbnRDb25maWd1cmF0aW9uID0gW1tbX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24g
YWxsb2NdIGluaXROb25QZXJzaXN0ZW50Q29uZmlndXJhdGlvbl0gYXV0b3JlbGVhc2VdOworICAg
IFtub25QZXJzaXN0ZW50Q29uZmlndXJhdGlvbiByZWdpc3RlclVSTFNjaGVtZVNlcnZpY2VXb3Jr
ZXJzQ2FuSGFuZGxlRm9yVGVzdGluZzpAInN3Il07CisgICAgY29uZmlndXJhdGlvbi5nZXQoKS53
ZWJzaXRlRGF0YVN0b3JlID0gW1tbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbG9jXSBfaW5pdFdpdGhD
b25maWd1cmF0aW9uOm5vblBlcnNpc3RlbnRDb25maWd1cmF0aW9uXSBhdXRvcmVsZWFzZV07CiAK
ICAgICBhdXRvIG1lc3NhZ2VIYW5kbGVyID0gYWRvcHROUyhbW1NXTWVzc2FnZUhhbmRsZXJGb3JD
YWNoZVN0b3JhZ2UgYWxsb2NdIGluaXRdKTsKICAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRl
bnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjptZXNzYWdlSGFuZGxlci5nZXQo
KSBuYW1lOkAic3ciXTsKQEAgLTE1NDMsNyArMTU2OSwxMCBAQCBURVNUKFNlcnZpY2VXb3JrZXJz
LCBTZXJ2aWNlV29ya2VyQW5kQ2FjCiAKICAgICBbV0tXZWJzaXRlRGF0YVN0b3JlIF9hbGxvd1dl
YnNpdGVEYXRhUmVjb3Jkc0ZvckFsbE9yaWdpbnNdOwogCisgICAgYXV0byogZGF0YVN0b3JlID0g
ZGF0YVN0b3JlV2l0aFJlZ2lzdGVyZWRTZXJ2aWNlV29ya2VyU2NoZW1lKEAic3ciKTsKKwogICAg
IGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFs
bG9jXSBpbml0XSk7CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0V2Vic2l0ZURhdGFTdG9yZTpkYXRh
U3RvcmVdOwogICAgIHNldENvbmZpZ3VyYXRpb25JbmplY3RlZEJ1bmRsZVBhdGgoY29uZmlndXJh
dGlvbi5nZXQoKSk7CiAKICAgICBSZXRhaW5QdHI8RGlyZWN0b3J5UGFnZU1lc3NhZ2VIYW5kbGVy
PiBkaXJlY3RvcnlQYWdlTWVzc2FnZUhhbmRsZXIgPSBhZG9wdE5TKFtbRGlyZWN0b3J5UGFnZU1l
c3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0XSk7CkBAIC0xNTY1LDcgKzE1OTQsNiBAQCBURVNUKFNl
cnZpY2VXb3JrZXJzLCBTZXJ2aWNlV29ya2VyQW5kQ2FjCiAgICAgICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnNwaW5SdW5Mb29wKDAuMSk7CiAKICAgICB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2Vi
VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25m
aWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKLSAgICBbd2ViVmlldy5nZXQoKS5jb25m
aWd1cmF0aW9uLnByb2Nlc3NQb29sIF9yZWdpc3RlclVSTFNjaGVtZVNlcnZpY2VXb3JrZXJzQ2Fu
SGFuZGxlOkAic3ciXTsKIAogICAgIHJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRo
VVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAic3c6Ly9ob3N0L3JlZ3VsYXJQYWdlR3JhYmJpbmdD
YWNoZVN0b3JhZ2VEaXJlY3RvcnkuaHRtbCJdXTsKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpy
ZXF1ZXN0XTsKQEAgLTE1ODgsNyArMTYxNiwxMCBAQCBURVNUKFNlcnZpY2VXb3JrZXJzLCBTZXJ2
aWNlV29ya2VyQW5kQ2FjCiAgICAgW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3Jl
XTsKICAgICBbV0tXZWJzaXRlRGF0YVN0b3JlIF9hbGxvd1dlYnNpdGVEYXRhUmVjb3Jkc0ZvckFs
bE9yaWdpbnNdOwogCisgICAgYXV0byogZGF0YVN0b3JlID0gZGF0YVN0b3JlV2l0aFJlZ2lzdGVy
ZWRTZXJ2aWNlV29ya2VyU2NoZW1lKEAic3ciKTsKKwogICAgIFJldGFpblB0cjxXS1dlYlZpZXdD
b25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3Vy
YXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRXZWJzaXRlRGF0YVN0
b3JlOmRhdGFTdG9yZV07CiAKICAgICBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmll
d0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBzZXRDb25maWd1cmF0aW9uSW5qZWN0
ZWRCdW5kbGVQYXRoKGNvbmZpZ3VyYXRpb24uZ2V0KCkpOwpAQCAtMTYwNiw3ICsxNjM3LDYgQEAg
VEVTVChTZXJ2aWNlV29ya2VycywgU2VydmljZVdvcmtlckFuZENhYwogICAgIFtjb25maWd1cmF0
aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBmb3JVUkxTY2hlbWU6QCJTVyJd
OwogCiAgICAgUmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZp
ZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmln
dXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7Ci0gICAgW3dlYlZpZXcuZ2V0KCkuY29uZmln
dXJhdGlvbi5wcm9jZXNzUG9vbCBfcmVnaXN0ZXJVUkxTY2hlbWVTZXJ2aWNlV29ya2Vyc0Nhbkhh
bmRsZTpAInN3Il07CiAKICAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0
IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAic3c6Ly9ob3N0L21haW4uaHRt
bCJdXTsKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKQEAgLTE2NDcsNiArMTY3
Nyw3IEBAIFRFU1QoU2VydmljZVdvcmtlcnMsIE5vbkRlZmF1bHRTZXNzaW9uSUQKICAgICBSZXRh
aW5QdHI8X1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24+IHdlYnNpdGVEYXRhU3RvcmVD
b25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9u
IGFsbG9jXSBpbml0XSk7CiAgICAgd2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCku
X3NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkgPSBzZXJ2aWNlV29ya2Vyc1BhdGg7
CiAgICAgd2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCkuX2luZGV4ZWREQkRhdGFi
YXNlRGlyZWN0b3J5ID0gaWRiUGF0aDsKKyAgICBbd2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRp
b24gcmVnaXN0ZXJVUkxTY2hlbWVTZXJ2aWNlV29ya2Vyc0NhbkhhbmRsZUZvclRlc3Rpbmc6QCJz
dyJdOwogCiAgICAgY29uZmlndXJhdGlvbi5nZXQoKS53ZWJzaXRlRGF0YVN0b3JlID0gW1tbV0tX
ZWJzaXRlRGF0YVN0b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOndlYnNpdGVEYXRh
U3RvcmVDb25maWd1cmF0aW9uLmdldCgpXSBhdXRvcmVsZWFzZV07CiAKQEAgLTE2NjAsNyArMTY5
MSw2IEBAIFRFU1QoU2VydmljZVdvcmtlcnMsIE5vbkRlZmF1bHRTZXNzaW9uSUQKIAogICAgIGV4
cGVjdGVkTWVzc2FnZSA9ICJQQVNTOiBhY3RpdmF0aW9uIHN1Y2Nlc3NmdWwiOwogICAgIFJldGFp
blB0cjxXS1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0
V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmln
dXJhdGlvbi5nZXQoKV0pOwotICAgIFt3ZWJWaWV3LmdldCgpLmNvbmZpZ3VyYXRpb24ucHJvY2Vz
c1Bvb2wgX3JlZ2lzdGVyVVJMU2NoZW1lU2VydmljZVdvcmtlcnNDYW5IYW5kbGU6QCJzdyJdOwog
CiAgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVS
TDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAInN3Oi8vaG9zdC9tYWluLmh0bWwiXV07CiAgICAgW3dl
YlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07CkBAIC0xNzA0LDYgKzE3MzQsOSBAQCBURVNUKFNl
cnZpY2VXb3JrZXJzLCBQcm9jZXNzUGVyU2l0ZSkKICAgICAvLyBEaXNhYmxlIHRoaXMgZGVsYXkg
Zm9yIHRoZSBwdXJwb3NlIG9mIHRlc3RpbmcuCiAgICAgX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb24gKmRhdGFTdG9yZUNvbmZpZ3VyYXRpb24gPSBbW1tfV0tXZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOwogICAgIGRhdGFTdG9yZUNv
bmZpZ3VyYXRpb24uc2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5RW5hYmxlZCA9
IE5POworICAgIFtkYXRhU3RvcmVDb25maWd1cmF0aW9uIHJlZ2lzdGVyVVJMU2NoZW1lU2Vydmlj
ZVdvcmtlcnNDYW5IYW5kbGVGb3JUZXN0aW5nOkAic3cxIl07CisgICAgW2RhdGFTdG9yZUNvbmZp
Z3VyYXRpb24gcmVnaXN0ZXJVUkxTY2hlbWVTZXJ2aWNlV29ya2Vyc0NhbkhhbmRsZUZvclRlc3Rp
bmc6QCJzdzIiXTsKKwogICAgIGF1dG8gZGF0YVN0b3JlID0gYWRvcHROUyhbW1dLV2Vic2l0ZURh
dGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpkYXRhU3RvcmVDb25maWd1cmF0
aW9uXSk7CiAgICAgCiAgICAgLy8gU3RhcnQgd2l0aCBhIGNsZWFuIHNsYXRlIGRhdGEgc3RvcmUK
QEAgLTE3MzIsOCArMTc2NSw2IEBAIFRFU1QoU2VydmljZVdvcmtlcnMsIFByb2Nlc3NQZXJTaXRl
KQogICAgIFtjb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6aGFuZGxlcjIuZ2V0KCkg
Zm9yVVJMU2NoZW1lOkAic3cyIl07CiAKICAgICBXS1Byb2Nlc3NQb29sICpwcm9jZXNzUG9vbCA9
IGNvbmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vzc1Bvb2w7Ci0gICAgW3Byb2Nlc3NQb29sIF9yZWdp
c3RlclVSTFNjaGVtZVNlcnZpY2VXb3JrZXJzQ2FuSGFuZGxlOkAic3cxIl07Ci0gICAgW3Byb2Nl
c3NQb29sIF9yZWdpc3RlclVSTFNjaGVtZVNlcnZpY2VXb3JrZXJzQ2FuSGFuZGxlOkAic3cyIl07
CiAKICAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3MSA9IGFkb3B0TlMoW1tXS1dlYlZp
ZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmln
dXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAKQEAgLTE3OTEsMTQgKzE4MjIsMTcgQEAg
VEVTVChTZXJ2aWNlV29ya2VycywgUGFyYWxsZWxQcm9jZXNzTGF1bgogewogICAgIFtXS1dlYnNp
dGVEYXRhU3RvcmUgX2FsbG93V2Vic2l0ZURhdGFSZWNvcmRzRm9yQWxsT3JpZ2luc107CiAKKyAg
ICBhdXRvKiBkYXRhU3RvcmUgPSBkYXRhU3RvcmVXaXRoUmVnaXN0ZXJlZFNlcnZpY2VXb3JrZXJT
Y2hlbWUoQCJzdzEiKTsKKwogICAgIC8vIFN0YXJ0IHdpdGggYSBjbGVhbiBzbGF0ZSBkYXRhIHN0
b3JlCi0gICAgW1tXS1dlYnNpdGVEYXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV0gcmVtb3ZlRGF0
YU9mVHlwZXM6W1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxXZWJzaXRlRGF0YVR5cGVzXSBtb2RpZmll
ZFNpbmNlOltOU0RhdGUgZGlzdGFudFBhc3RdIGNvbXBsZXRpb25IYW5kbGVyOl4oKSB7CisgICAg
W2RhdGFTdG9yZSByZW1vdmVEYXRhT2ZUeXBlczpbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbFdlYnNp
dGVEYXRhVHlwZXNdIG1vZGlmaWVkU2luY2U6W05TRGF0ZSBkaXN0YW50UGFzdF0gY29tcGxldGlv
bkhhbmRsZXI6XigpIHsKICAgICAgICAgZG9uZSA9IHRydWU7CiAgICAgfV07CiAgICAgVGVzdFdl
YktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKICAgICBkb25lID0gZmFsc2U7CiAKICAgICBhdXRv
IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10g
aW5pdF0pOworICAgIFtjb25maWd1cmF0aW9uIHNldFdlYnNpdGVEYXRhU3RvcmU6ZGF0YVN0b3Jl
XTsKIAogICAgIGF1dG8gbWVzc2FnZUhhbmRsZXIgPSBhZG9wdE5TKFtbU1dNZXNzYWdlSGFuZGxl
ciBhbGxvY10gaW5pdF0pOwogICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xs
ZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOm1lc3NhZ2VIYW5kbGVyLmdldCgpIG5hbWU6QCJz
dyJdOwpAQCAtMTgxMSw3ICsxODQ1LDYgQEAgVEVTVChTZXJ2aWNlV29ya2VycywgUGFyYWxsZWxQ
cm9jZXNzTGF1bgogICAgIFtjb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6aGFuZGxl
cjEuZ2V0KCkgZm9yVVJMU2NoZW1lOkAic3cxIl07CiAKICAgICBhdXRvICpwcm9jZXNzUG9vbCA9
IGNvbmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vzc1Bvb2w7Ci0gICAgW3Byb2Nlc3NQb29sIF9yZWdp
c3RlclVSTFNjaGVtZVNlcnZpY2VXb3JrZXJzQ2FuSGFuZGxlOkAic3cxIl07CiAKICAgICBhdXRv
IHdlYlZpZXcxID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01h
a2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCld
KTsKICAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QxID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0
aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAInN3MTovL2hvc3QvbWFpbi5odG1sIl1dOwpAQCAt
MTgzMiw4ICsxODY1LDEwIEBAIFRFU1QoU2VydmljZVdvcmtlcnMsIFRocm90dGxlQ3Jhc2gpCiAK
ICAgICBbV0tXZWJzaXRlRGF0YVN0b3JlIF9hbGxvd1dlYnNpdGVEYXRhUmVjb3Jkc0ZvckFsbE9y
aWdpbnNdOwogCisgICAgYXV0byogZGF0YVN0b3JlID0gZGF0YVN0b3JlV2l0aFJlZ2lzdGVyZWRT
ZXJ2aWNlV29ya2VyU2NoZW1lKEAic3cxIik7CisKICAgICAvLyBTdGFydCB3aXRoIGEgY2xlYW4g
c2xhdGUgZGF0YSBzdG9yZQotICAgIFtbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3Rv
cmVdIHJlbW92ZURhdGFPZlR5cGVzOltXS1dlYnNpdGVEYXRhU3RvcmUgYWxsV2Vic2l0ZURhdGFU
eXBlc10gbW9kaWZpZWRTaW5jZTpbTlNEYXRlIGRpc3RhbnRQYXN0XSBjb21wbGV0aW9uSGFuZGxl
cjpeKCkgeworICAgIFtkYXRhU3RvcmUgcmVtb3ZlRGF0YU9mVHlwZXM6W1dLV2Vic2l0ZURhdGFT
dG9yZSBhbGxXZWJzaXRlRGF0YVR5cGVzXSBtb2RpZmllZFNpbmNlOltOU0RhdGUgZGlzdGFudFBh
c3RdIGNvbXBsZXRpb25IYW5kbGVyOl4oKSB7CiAgICAgICAgIGRvbmUgPSB0cnVlOwogICAgIH1d
OwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CkBAIC0xODUxLDYgKzE4ODYs
NyBAQCBURVNUKFNlcnZpY2VXb3JrZXJzLCBUaHJvdHRsZUNyYXNoKQogICAgIH1dOwogCiAgICAg
YXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxs
b2NdIGluaXRdKTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRXZWJzaXRlRGF0YVN0b3JlOmRhdGFT
dG9yZV07CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIFtbY29uZmlndXJhdGlvbiBwcmVmZXJlbmNl
c10gX3NldEFwcE5hcEVuYWJsZWQ6WUVTXTsKICNlbmRpZgpAQCAtMTg1OCw3ICsxODk0LDYgQEAg
VEVTVChTZXJ2aWNlV29ya2VycywgVGhyb3R0bGVDcmFzaCkKICAgICBbY29uZmlndXJhdGlvbiBz
ZXRVUkxTY2hlbWVIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgZm9yVVJMU2NoZW1lOkAic3cxIl07CiAK
ICAgICBhdXRvICpwcm9jZXNzUG9vbCA9IGNvbmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vzc1Bvb2w7
Ci0gICAgW3Byb2Nlc3NQb29sIF9yZWdpc3RlclVSTFNjaGVtZVNlcnZpY2VXb3JrZXJzQ2FuSGFu
ZGxlOkAic3cxIl07CiAKICAgICBhdXRvIHdlYlZpZXcxID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZp
ZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmln
dXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpIGFkZFRvV2luZG93OiBZRVNdKTsKICAgICBbd2Vi
VmlldzEgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOm5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKV07CkBA
IC0xODgwLDYgKzE5MTUsNyBAQCBURVNUKFNlcnZpY2VXb3JrZXJzLCBUaHJvdHRsZUNyYXNoKQog
ICAgIFtbd2ViVmlldzJDb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSBfc2V0QXBwTmFwRW5hYmxl
ZDpOT107CiAjZW5kaWYKICAgICBbd2ViVmlldzJDb25maWd1cmF0aW9uIHNldFByb2Nlc3NQb29s
OnByb2Nlc3NQb29sXTsKKyAgICBbd2ViVmlldzJDb25maWd1cmF0aW9uIHNldFdlYnNpdGVEYXRh
U3RvcmU6ZGF0YVN0b3JlXTsKICAgICBbW3dlYlZpZXcyQ29uZmlndXJhdGlvbiB1c2VyQ29udGVu
dENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOm1lc3NhZ2VIYW5kbGVyLmdldCgp
IG5hbWU6QCJzdyJdOwogICAgIFt3ZWJWaWV3MkNvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFu
ZGxlcjpoYW5kbGVyLmdldCgpIGZvclVSTFNjaGVtZTpAInN3MSJdOwogICAgIHdlYlZpZXcyQ29u
ZmlndXJhdGlvbi5nZXQoKS5fcmVsYXRlZFdlYlZpZXcgPSB3ZWJWaWV3MS5nZXQoKTsKQEAgLTE5
MDAsMTQgKzE5MzYsMTcgQEAgVEVTVChTZXJ2aWNlV29ya2VycywgTG9hZERhdGEpCiAKICAgICBb
V0tXZWJzaXRlRGF0YVN0b3JlIF9hbGxvd1dlYnNpdGVEYXRhUmVjb3Jkc0ZvckFsbE9yaWdpbnNd
OwogCisgICAgYXV0byogZGF0YVN0b3JlID0gZGF0YVN0b3JlV2l0aFJlZ2lzdGVyZWRTZXJ2aWNl
V29ya2VyU2NoZW1lKEAic3ciKTsKKwogICAgIC8vIFN0YXJ0IHdpdGggYSBjbGVhbiBzbGF0ZSBk
YXRhIHN0b3JlCi0gICAgW1tXS1dlYnNpdGVEYXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV0gcmVt
b3ZlRGF0YU9mVHlwZXM6W1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxXZWJzaXRlRGF0YVR5cGVzXSBt
b2RpZmllZFNpbmNlOltOU0RhdGUgZGlzdGFudFBhc3RdIGNvbXBsZXRpb25IYW5kbGVyOl4oKSB7
CisgICAgW2RhdGFTdG9yZSByZW1vdmVEYXRhT2ZUeXBlczpbV0tXZWJzaXRlRGF0YVN0b3JlIGFs
bFdlYnNpdGVEYXRhVHlwZXNdIG1vZGlmaWVkU2luY2U6W05TRGF0ZSBkaXN0YW50UGFzdF0gY29t
cGxldGlvbkhhbmRsZXI6XigpIHsKICAgICAgICAgZG9uZSA9IHRydWU7CiAgICAgfV07CiAgICAg
VGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKICAgICBkb25lID0gZmFsc2U7CiAKICAg
ICBSZXRhaW5QdHI8V0tXZWJWaWV3Q29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbiA9IGFkb3B0
TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgW2NvbmZpZ3Vy
YXRpb24gc2V0V2Vic2l0ZURhdGFTdG9yZTpkYXRhU3RvcmVdOwogCiAgICAgUmV0YWluUHRyPFNX
TWVzc2FnZUhhbmRsZXI+IG1lc3NhZ2VIYW5kbGVyID0gYWRvcHROUyhbW1NXTWVzc2FnZUhhbmRs
ZXIgYWxsb2NdIGluaXRdKTsKICAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9s
bGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjptZXNzYWdlSGFuZGxlci5nZXQoKSBuYW1lOkAi
c3ciXTsKQEAgLTE5MTgsNyArMTk1Nyw2IEBAIFRFU1QoU2VydmljZVdvcmtlcnMsIExvYWREYXRh
KQogICAgIFtjb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBm
b3JVUkxTY2hlbWU6QCJTVyJdOwogCiAgICAgUmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmlldyA9
IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAw
LCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7Ci0gICAgW3dl
YlZpZXcuZ2V0KCkuY29uZmlndXJhdGlvbi5wcm9jZXNzUG9vbCBfcmVnaXN0ZXJVUkxTY2hlbWVT
ZXJ2aWNlV29ya2Vyc0NhbkhhbmRsZTpAInN3Il07CiAKICAgICBhdXRvIGRlbGVnYXRlID0gYWRv
cHROUyhbW1Rlc3RTV0FzeW5jTmF2aWdhdGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0XSk7CiAgICAg
W3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKQEAgLTE5NjMs
NiArMjAwMSw3IEBAIFRFU1QoU2VydmljZVdvcmtlcnMsIFJlc3RvcmVGcm9tRGlza05vbkQKIAog
ICAgICAgICBhdXRvIHdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19X
S1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgICAgIHdl
YnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmdldCgpLl9zZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uRGlyZWN0b3J5ID0gc3dEQlBhdGg7CisgICAgICAgIFt3ZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvbiByZWdpc3RlclVSTFNjaGVtZVNlcnZpY2VXb3JrZXJzQ2FuSGFuZGxlRm9yVGVzdGlu
ZzpAInN3Il07CiAgICAgICAgIGF1dG8gbm9uRGVmYXVsdERhdGFTdG9yZSA9IGFkb3B0TlMoW1tX
S1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246d2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKICAgICAgICAgY29uZmlndXJhdGlvbi5nZXQo
KS53ZWJzaXRlRGF0YVN0b3JlID0gbm9uRGVmYXVsdERhdGFTdG9yZS5nZXQoKTsKIApAQCAtMTk3
NSw3ICsyMDE0LDYgQEAgVEVTVChTZXJ2aWNlV29ya2VycywgUmVzdG9yZUZyb21EaXNrTm9uRAog
ICAgICAgICBbY29uZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVyOmhhbmRsZXIuZ2V0KCkg
Zm9yVVJMU2NoZW1lOkAiU1ciXTsKIAogICAgICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtb
V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDAp
IGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwotICAgICAgICBbd2ViVmlldy5n
ZXQoKS5jb25maWd1cmF0aW9uLnByb2Nlc3NQb29sIF9yZWdpc3RlclVSTFNjaGVtZVNlcnZpY2VX
b3JrZXJzQ2FuSGFuZGxlOkAic3ciXTsKICAgICAgICAgcHJvdGVjdGVkUHJvY2Vzc1Bvb2wgPSB3
ZWJWaWV3LmdldCgpLmNvbmZpZ3VyYXRpb24ucHJvY2Vzc1Bvb2w7CiAKICAgICAgICAgW3dlYlZp
ZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0
aFN0cmluZzpAInN3Oi8vaG9zdC9tYWluLmh0bWwiXV1dOwpAQCAtMTk5MSw2ICsyMDI5LDcgQEAg
VEVTVChTZXJ2aWNlV29ya2VycywgUmVzdG9yZUZyb21EaXNrTm9uRAogCiAgICAgICAgIGF1dG8g
d2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLV2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAgICAgICAgd2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb24uZ2V0KCkuX3NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rvcnkg
PSBzd0RCUGF0aDsKKyAgICAgICAgW3dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIHJlZ2lz
dGVyVVJMU2NoZW1lU2VydmljZVdvcmtlcnNDYW5IYW5kbGVGb3JUZXN0aW5nOkAic3ciXTsKICAg
ICAgICAgYXV0byBub25EZWZhdWx0RGF0YVN0b3JlID0gYWRvcHROUyhbW1dLV2Vic2l0ZURhdGFT
dG9yZSBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjp3ZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvbi5nZXQoKV0pOwogICAgICAgICBjb25maWd1cmF0aW9uLmdldCgpLndlYnNpdGVEYXRh
U3RvcmUgPSBub25EZWZhdWx0RGF0YVN0b3JlLmdldCgpOwogCkBAIC0yMDAzLDcgKzIwNDIsNiBA
QCBURVNUKFNlcnZpY2VXb3JrZXJzLCBSZXN0b3JlRnJvbURpc2tOb25ECiAgICAgICAgIFtjb25m
aWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBmb3JVUkxTY2hlbWU6
QCJTVyJdOwogCiAgICAgICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxs
b2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlv
bjpjb25maWd1cmF0aW9uLmdldCgpXSk7Ci0gICAgICAgIFt3ZWJWaWV3LmdldCgpLmNvbmZpZ3Vy
YXRpb24ucHJvY2Vzc1Bvb2wgX3JlZ2lzdGVyVVJMU2NoZW1lU2VydmljZVdvcmtlcnNDYW5IYW5k
bGU6QCJzdyJdOwogCiAgICAgICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3Qg
cmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJzdzovL2hvc3QvbWFpbi5odG1s
Il1dXTsKIApAQCAtMjAxNiwxNCArMjA1NCwxNyBAQCBURVNUKFNlcnZpY2VXb3JrZXJzLCBTdXNw
ZW5kTmV0d29ya1Byb2NlCiB7CiAgICAgW1dLV2Vic2l0ZURhdGFTdG9yZSBfYWxsb3dXZWJzaXRl
RGF0YVJlY29yZHNGb3JBbGxPcmlnaW5zXTsKIAorICAgIGF1dG8qIGRhdGFTdG9yZSA9IGRhdGFT
dG9yZVdpdGhSZWdpc3RlcmVkU2VydmljZVdvcmtlclNjaGVtZShAInN3Iik7CisgICAgCiAgICAg
Ly8gU3RhcnQgd2l0aCBhIGNsZWFuIHNsYXRlIGRhdGEgc3RvcmUKLSAgICBbW1dLV2Vic2l0ZURh
dGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXSByZW1vdmVEYXRhT2ZUeXBlczpbV0tXZWJzaXRlRGF0
YVN0b3JlIGFsbFdlYnNpdGVEYXRhVHlwZXNdIG1vZGlmaWVkU2luY2U6W05TRGF0ZSBkaXN0YW50
UGFzdF0gY29tcGxldGlvbkhhbmRsZXI6XigpIHsKKyAgICBbZGF0YVN0b3JlIHJlbW92ZURhdGFP
ZlR5cGVzOltXS1dlYnNpdGVEYXRhU3RvcmUgYWxsV2Vic2l0ZURhdGFUeXBlc10gbW9kaWZpZWRT
aW5jZTpbTlNEYXRlIGRpc3RhbnRQYXN0XSBjb21wbGV0aW9uSGFuZGxlcjpeKCkgewogICAgICAg
ICBkb25lID0gdHJ1ZTsKICAgICB9XTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRv
bmUpOwogICAgIGRvbmUgPSBmYWxzZTsKIAogICAgIFJldGFpblB0cjxXS1dlYlZpZXdDb25maWd1
cmF0aW9uPiBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24g
YWxsb2NdIGluaXRdKTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRXZWJzaXRlRGF0YVN0b3JlOmRh
dGFTdG9yZV07CiAKICAgICBSZXRhaW5QdHI8U1dNZXNzYWdlSGFuZGxlcj4gbWVzc2FnZUhhbmRs
ZXIgPSBhZG9wdE5TKFtbU1dNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOwogICAgIFtbY29u
ZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVy
Om1lc3NhZ2VIYW5kbGVyLmdldCgpIG5hbWU6QCJzdyJdOwpAQCAtMjAzNCw3ICsyMDc1LDYgQEAg
VEVTVChTZXJ2aWNlV29ya2VycywgU3VzcGVuZE5ldHdvcmtQcm9jZQogICAgIFtjb25maWd1cmF0
aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBmb3JVUkxTY2hlbWU6QCJTVyJd
OwogCiAgICAgUmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZp
ZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmln
dXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7Ci0gICAgW3dlYlZpZXcuZ2V0KCkuY29uZmln
dXJhdGlvbi5wcm9jZXNzUG9vbCBfcmVnaXN0ZXJVUkxTY2hlbWVTZXJ2aWNlV29ya2Vyc0Nhbkhh
bmRsZTpAInN3Il07CiAKICAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1Rlc3RTV0FzeW5j
TmF2aWdhdGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0XSk7CiAgICAgW3dlYlZpZXcgc2V0TmF2aWdh
dGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKQEAgLTIxMDEsMTQgKzIxNDEsMTcgQEAgVEVT
VChTZXJ2aWNlV29ya2VycywgUHJvY2Vzc1BlclNlc3Npb24pCiB7CiAgICAgW1dLV2Vic2l0ZURh
dGFTdG9yZSBfYWxsb3dXZWJzaXRlRGF0YVJlY29yZHNGb3JBbGxPcmlnaW5zXTsKIAorICAgIGF1
dG8qIGRhdGFTdG9yZSA9IGRhdGFTdG9yZVdpdGhSZWdpc3RlcmVkU2VydmljZVdvcmtlclNjaGVt
ZShAInN3MSIpOworICAgIAogICAgIC8vIFN0YXJ0IHdpdGggYSBjbGVhbiBzbGF0ZSBkYXRhIHN0
b3JlCi0gICAgW1tXS1dlYnNpdGVEYXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV0gcmVtb3ZlRGF0
YU9mVHlwZXM6W1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxXZWJzaXRlRGF0YVR5cGVzXSBtb2RpZmll
ZFNpbmNlOltOU0RhdGUgZGlzdGFudFBhc3RdIGNvbXBsZXRpb25IYW5kbGVyOl4oKSB7CisgICAg
W2RhdGFTdG9yZSByZW1vdmVEYXRhT2ZUeXBlczpbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbFdlYnNp
dGVEYXRhVHlwZXNdIG1vZGlmaWVkU2luY2U6W05TRGF0ZSBkaXN0YW50UGFzdF0gY29tcGxldGlv
bkhhbmRsZXI6XigpIHsKICAgICAgICAgZG9uZSA9IHRydWU7CiAgICAgfV07CiAgICAgVGVzdFdl
YktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKICAgICBkb25lID0gZmFsc2U7CiAKICAgICBhdXRv
IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10g
aW5pdF0pOworICAgIFtjb25maWd1cmF0aW9uIHNldFdlYnNpdGVEYXRhU3RvcmU6ZGF0YVN0b3Jl
XTsKIAogICAgIGF1dG8gbWVzc2FnZUhhbmRsZXIgPSBhZG9wdE5TKFtbU1dNZXNzYWdlSGFuZGxl
ciBhbGxvY10gaW5pdF0pOwogICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xs
ZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOm1lc3NhZ2VIYW5kbGVyLmdldCgpIG5hbWU6QCJz
dyJdOwpAQCAtMjEyMSwxMSArMjE2NCwxMCBAQCBURVNUKFNlcnZpY2VXb3JrZXJzLCBQcm9jZXNz
UGVyU2Vzc2lvbikKICAgICBbY29uZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVyOmhhbmRs
ZXIxLmdldCgpIGZvclVSTFNjaGVtZTpAInN3MSJdOwogCiAgICAgV0tQcm9jZXNzUG9vbCAqcHJv
Y2Vzc1Bvb2wgPSBjb25maWd1cmF0aW9uLmdldCgpLnByb2Nlc3NQb29sOwotICAgIFtwcm9jZXNz
UG9vbCBfcmVnaXN0ZXJVUkxTY2hlbWVTZXJ2aWNlV29ya2Vyc0NhbkhhbmRsZTpAInN3MSJdOwog
CiAgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVS
TDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAInN3MTovL2hvc3QvbWFpbi5odG1sIl1dOwogCi0gICAg
Y29uZmlndXJhdGlvbi5nZXQoKS53ZWJzaXRlRGF0YVN0b3JlID0gW1dLV2Vic2l0ZURhdGFTdG9y
ZSBkZWZhdWx0RGF0YVN0b3JlXTsKKyAgICBjb25maWd1cmF0aW9uLmdldCgpLndlYnNpdGVEYXRh
U3RvcmUgPSBkYXRhU3RvcmU7CiAKICAgICBhdXRvIHdlYlZpZXcxID0gYWRvcHROUyhbW1dLV2Vi
VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25m
aWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKICAgICBbd2ViVmlldzEgbG9hZFJlcXVl
c3Q6cmVxdWVzdF07CkBAIC0yMTM0LDcgKzIxNzYsOSBAQCBURVNUKFNlcnZpY2VXb3JrZXJzLCBQ
cm9jZXNzUGVyU2Vzc2lvbikKIAogICAgIEVYUEVDVF9FUSgxVSwgcHJvY2Vzc1Bvb2wuX3NlcnZp
Y2VXb3JrZXJQcm9jZXNzQ291bnQpOwogCi0gICAgY29uZmlndXJhdGlvbi5nZXQoKS53ZWJzaXRl
RGF0YVN0b3JlID0gW1dLV2Vic2l0ZURhdGFTdG9yZSBub25QZXJzaXN0ZW50RGF0YVN0b3JlXTsK
KyAgICBfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiAqbm9uUGVyc2lzdGVudENvbmZp
Z3VyYXRpb24gPSBbW1tfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBhbGxvY10gaW5p
dE5vblBlcnNpc3RlbnRDb25maWd1cmF0aW9uXSBhdXRvcmVsZWFzZV07CisgICAgW25vblBlcnNp
c3RlbnRDb25maWd1cmF0aW9uIHJlZ2lzdGVyVVJMU2NoZW1lU2VydmljZVdvcmtlcnNDYW5IYW5k
bGVGb3JUZXN0aW5nOkAic3cxIl07CisgICAgY29uZmlndXJhdGlvbi5nZXQoKS53ZWJzaXRlRGF0
YVN0b3JlID0gW1tbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0
aW9uOm5vblBlcnNpc3RlbnRDb25maWd1cmF0aW9uXSBhdXRvcmVsZWFzZV07CiAKICAgICBhdXRv
IHdlYlZpZXcyID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01h
a2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCld
KTsKICAgICBbd2ViVmlldzIgbG9hZFJlcXVlc3Q6cmVxdWVzdF07CkluZGV4OiBUb29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1N0b3JhZ2VRdW90YS5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1N0b3JhZ2VRdW90YS5tbQko
cmV2aXNpb24gMjUwNjY1KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9TdG9yYWdlUXVvdGEubW0JKHdvcmtpbmcgY29weSkKQEAgLTIyNyw2ICsyMjcsOCBAQCBURVNU
KFdlYktpdCwgUXVvdGFEZWxlZ2F0ZSkKICAgICBkb25lID0gZmFsc2U7CiAgICAgX1dLV2Vic2l0
ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gKnN0b3JlQ29uZmlndXJhdGlvbiA9IFtbW19XS1dlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07CiAgICAg
c3RvcmVDb25maWd1cmF0aW9uLnBlck9yaWdpblN0b3JhZ2VRdW90YSA9IDEwMjQgKiA0MDA7Cisg
ICAgW3N0b3JlQ29uZmlndXJhdGlvbiByZWdpc3RlclVSTFNjaGVtZVNlcnZpY2VXb3JrZXJzQ2Fu
SGFuZGxlRm9yVGVzdGluZzpAInF0MSJdOworICAgIFtzdG9yZUNvbmZpZ3VyYXRpb24gcmVnaXN0
ZXJVUkxTY2hlbWVTZXJ2aWNlV29ya2Vyc0NhbkhhbmRsZUZvclRlc3Rpbmc6QCJxdDIiXTsKICAg
ICBXS1dlYnNpdGVEYXRhU3RvcmUgKmRhdGFTdG9yZSA9IFtbW1dLV2Vic2l0ZURhdGFTdG9yZSBh
bGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpzdG9yZUNvbmZpZ3VyYXRpb25dIGF1dG9yZWxl
YXNlXTsKICAgICBbZGF0YVN0b3JlIHJlbW92ZURhdGFPZlR5cGVzOltXS1dlYnNpdGVEYXRhU3Rv
cmUgYWxsV2Vic2l0ZURhdGFUeXBlc10gbW9kaWZpZWRTaW5jZTpbTlNEYXRlIGRpc3RhbnRQYXN0
XSBjb21wbGV0aW9uSGFuZGxlcjpeKCkgewogICAgICAgICBkb25lID0gdHJ1ZTsKQEAgLTI0Miwx
MiArMjQ0LDEwIEBAIFRFU1QoV2ViS2l0LCBRdW90YURlbGVnYXRlKQogICAgIGF1dG8gaGFuZGxl
cjEgPSBhZG9wdE5TKFtbU3RvcmFnZVNjaGVtZXMgYWxsb2NdIGluaXRdKTsKICAgICBoYW5kbGVy
MS0+cmVzb3VyY2VzLnNldCgicXQxOi8vdGVzdDEuaHRtbCIsIFJlc291cmNlSW5mbyB7IEAidGV4
dC9odG1sIiwgVGVzdEJ5dGVzIH0pOwogICAgIFtjb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhh
bmRsZXI6aGFuZGxlcjEuZ2V0KCkgZm9yVVJMU2NoZW1lOkAiUVQxIl07Ci0gICAgW2NvbmZpZ3Vy
YXRpb24uZ2V0KCkucHJvY2Vzc1Bvb2wgX3JlZ2lzdGVyVVJMU2NoZW1lU2VydmljZVdvcmtlcnND
YW5IYW5kbGU6QCJxdDEiXTsKIAogICAgIGF1dG8gaGFuZGxlcjIgPSBhZG9wdE5TKFtbU3RvcmFn
ZVNjaGVtZXMgYWxsb2NdIGluaXRdKTsKICAgICBoYW5kbGVyMi0+cmVzb3VyY2VzLnNldCgicXQy
Oi8vdGVzdDIuaHRtbCIsIFJlc291cmNlSW5mbyB7IEAidGV4dC9odG1sIiwgVGVzdEJ5dGVzIH0p
OwogICAgIFtjb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6aGFuZGxlcjIuZ2V0KCkg
Zm9yVVJMU2NoZW1lOkAiUVQyIl07Ci0gICAgW2NvbmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vzc1Bv
b2wgX3JlZ2lzdGVyVVJMU2NoZW1lU2VydmljZVdvcmtlcnNDYW5IYW5kbGU6QCJxdDIiXTsKIAog
ICAgIGF1dG8gd2ViVmlldzEgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdp
dGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3Vy
YXRpb24uZ2V0KCkgYWRkVG9XaW5kb3c6WUVTXSk7CiAgICAgYXV0byBkZWxlZ2F0ZTEgPSBhZG9w
dE5TKFtbUXVvdGFEZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwpAQCAtMjkwLDYgKzI5MCw3IEBAIFRF
U1QoV2ViS2l0LCBRdW90YURlbGVnYXRlUmVsb2FkKQogICAgIGRvbmUgPSBmYWxzZTsKICAgICBf
V0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiAqc3RvcmVDb25maWd1cmF0aW9uID0gW1tb
X1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNl
XTsKICAgICBzdG9yZUNvbmZpZ3VyYXRpb24ucGVyT3JpZ2luU3RvcmFnZVF1b3RhID0gMTAyNCAq
IDQwMDsKKyAgICBbc3RvcmVDb25maWd1cmF0aW9uIHJlZ2lzdGVyVVJMU2NoZW1lU2VydmljZVdv
cmtlcnNDYW5IYW5kbGVGb3JUZXN0aW5nOkAicXQiXTsKICAgICBXS1dlYnNpdGVEYXRhU3RvcmUg
KmRhdGFTdG9yZSA9IFtbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29uZmln
dXJhdGlvbjpzdG9yZUNvbmZpZ3VyYXRpb25dIGF1dG9yZWxlYXNlXTsKICAgICBbZGF0YVN0b3Jl
IHJlbW92ZURhdGFPZlR5cGVzOltXS1dlYnNpdGVEYXRhU3RvcmUgYWxsV2Vic2l0ZURhdGFUeXBl
c10gbW9kaWZpZWRTaW5jZTpbTlNEYXRlIGRpc3RhbnRQYXN0XSBjb21wbGV0aW9uSGFuZGxlcjpe
KCkgewogICAgICAgICBkb25lID0gdHJ1ZTsKQEAgLTMwNSw3ICszMDYsNiBAQCBURVNUKFdlYktp
dCwgUXVvdGFEZWxlZ2F0ZVJlbG9hZCkKICAgICBhdXRvIGhhbmRsZXIgPSBhZG9wdE5TKFtbU3Rv
cmFnZVNjaGVtZXMgYWxsb2NdIGluaXRdKTsKICAgICBoYW5kbGVyLT5yZXNvdXJjZXMuc2V0KCJx
dDovL3Rlc3QxLmh0bWwiLCBSZXNvdXJjZUluZm8geyBAInRleHQvaHRtbCIsIFRlc3RCeXRlcyB9
KTsKICAgICBbY29uZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVyOmhhbmRsZXIuZ2V0KCkg
Zm9yVVJMU2NoZW1lOkAiUVQiXTsKLSAgICBbY29uZmlndXJhdGlvbi5nZXQoKS5wcm9jZXNzUG9v
bCBfcmVnaXN0ZXJVUkxTY2hlbWVTZXJ2aWNlV29ya2Vyc0NhbkhhbmRsZTpAInF0Il07CiAgICAg
CiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRX
aXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1
cmF0aW9uLmdldCgpIGFkZFRvV2luZG93OllFU10pOwogICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9w
dE5TKFtbUXVvdGFEZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwpAQCAtMzM3LDYgKzMzNyw3IEBAIFRF
U1QoV2ViS2l0LCBRdW90YURlbGVnYXRlTmF2aWdhdGVGcmFnbWUKIHsKICAgICBkb25lID0gZmFs
c2U7CiAgICAgX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gKnN0b3JlQ29uZmlndXJh
dGlvbiA9IFtbW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSBh
dXRvcmVsZWFzZV07CisgICAgW3N0b3JlQ29uZmlndXJhdGlvbiByZWdpc3RlclVSTFNjaGVtZVNl
cnZpY2VXb3JrZXJzQ2FuSGFuZGxlRm9yVGVzdGluZzpAInF0Il07CiAgICAgc3RvcmVDb25maWd1
cmF0aW9uLnBlck9yaWdpblN0b3JhZ2VRdW90YSA9IDEwMjQgKiA0MDA7CiAgICAgV0tXZWJzaXRl
RGF0YVN0b3JlICpkYXRhU3RvcmUgPSBbW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0
V2l0aENvbmZpZ3VyYXRpb246c3RvcmVDb25maWd1cmF0aW9uXSBhdXRvcmVsZWFzZV07CiAgICAg
W2RhdGFTdG9yZSByZW1vdmVEYXRhT2ZUeXBlczpbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbFdlYnNp
dGVEYXRhVHlwZXNdIG1vZGlmaWVkU2luY2U6W05TRGF0ZSBkaXN0YW50UGFzdF0gY29tcGxldGlv
bkhhbmRsZXI6XigpIHsKQEAgLTM1Myw3ICszNTQsNiBAQCBURVNUKFdlYktpdCwgUXVvdGFEZWxl
Z2F0ZU5hdmlnYXRlRnJhZ21lCiAgICAgYXV0byBoYW5kbGVyID0gYWRvcHROUyhbW1N0b3JhZ2VT
Y2hlbWVzIGFsbG9jXSBpbml0XSk7CiAgICAgaGFuZGxlci0+cmVzb3VyY2VzLnNldCgicXQ6Ly90
ZXN0MS5odG1sIiwgUmVzb3VyY2VJbmZvIHsgQCJ0ZXh0L2h0bWwiLCBUZXN0Qnl0ZXMgfSk7CiAg
ICAgW2NvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpoYW5kbGVyLmdldCgpIGZvclVS
TFNjaGVtZTpAIlFUIl07Ci0gICAgW2NvbmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vzc1Bvb2wgX3Jl
Z2lzdGVyVVJMU2NoZW1lU2VydmljZVdvcmtlcnNDYW5IYW5kbGU6QCJxdCJdOwogCiAgICAgYXV0
byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6
TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdl
dCgpIGFkZFRvV2luZG93OllFU10pOwogICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbUXVv
dGFEZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwpAQCAtMzg4LDEyICszODgsMTcgQEAgVEVTVChXZWJL
aXQsIFF1b3RhRGVsZWdhdGVOYXZpZ2F0ZUZyYWdtZQogVEVTVChXZWJLaXQsIERlZmF1bHRRdW90
YSkKIHsKICAgICBkb25lID0gZmFsc2U7Ci0gICAgW1tXS1dlYnNpdGVEYXRhU3RvcmUgZGVmYXVs
dERhdGFTdG9yZV0gcmVtb3ZlRGF0YU9mVHlwZXM6W1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxXZWJz
aXRlRGF0YVR5cGVzXSBtb2RpZmllZFNpbmNlOltOU0RhdGUgZGlzdGFudFBhc3RdIGNvbXBsZXRp
b25IYW5kbGVyOl4oKSB7CisgICAgX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gKnN0
b3JlQ29uZmlndXJhdGlvbiA9IFtbW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIGFs
bG9jXSBpbml0XSBhdXRvcmVsZWFzZV07CisgICAgW3N0b3JlQ29uZmlndXJhdGlvbiByZWdpc3Rl
clVSTFNjaGVtZVNlcnZpY2VXb3JrZXJzQ2FuSGFuZGxlRm9yVGVzdGluZzpAInF0Il07CisgICAg
V0tXZWJzaXRlRGF0YVN0b3JlICpkYXRhU3RvcmUgPSBbW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxs
b2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246c3RvcmVDb25maWd1cmF0aW9uXSBhdXRvcmVsZWFz
ZV07CisKKyAgICBbZGF0YVN0b3JlIHJlbW92ZURhdGFPZlR5cGVzOltXS1dlYnNpdGVEYXRhU3Rv
cmUgYWxsV2Vic2l0ZURhdGFUeXBlc10gbW9kaWZpZWRTaW5jZTpbTlNEYXRlIGRpc3RhbnRQYXN0
XSBjb21wbGV0aW9uSGFuZGxlcjpeKCkgewogICAgICAgICBkb25lID0gdHJ1ZTsKICAgICB9XTsK
ICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOwogCiAgICAgYXV0byBjb25maWd1
cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsK
KyAgICBbY29uZmlndXJhdGlvbiBzZXRXZWJzaXRlRGF0YVN0b3JlOmRhdGFTdG9yZV07CiAKICAg
ICBhdXRvIG1lc3NhZ2VIYW5kbGVyID0gYWRvcHROUyhbW1F1b3RhTWVzc2FnZUhhbmRsZXIgYWxs
b2NdIGluaXRdKTsKICAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBh
ZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjptZXNzYWdlSGFuZGxlci5nZXQoKSBuYW1lOkAicXQiXTsK
QEAgLTQwMSw3ICs0MDYsNiBAQCBURVNUKFdlYktpdCwgRGVmYXVsdFF1b3RhKQogICAgIGF1dG8g
aGFuZGxlciA9IGFkb3B0TlMoW1tTdG9yYWdlU2NoZW1lcyBhbGxvY10gaW5pdF0pOwogICAgIGhh
bmRsZXItPnJlc291cmNlcy5zZXQoInF0Oi8vdGVzdDEuaHRtbCIsIFJlc291cmNlSW5mbyB7IEAi
dGV4dC9odG1sIiwgVGVzdFVybEJ5dGVzIH0pOwogICAgIFtjb25maWd1cmF0aW9uIHNldFVSTFNj
aGVtZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBmb3JVUkxTY2hlbWU6QCJRVCJdOwotICAgIFtjb25m
aWd1cmF0aW9uLmdldCgpLnByb2Nlc3NQb29sIF9yZWdpc3RlclVSTFNjaGVtZVNlcnZpY2VXb3Jr
ZXJzQ2FuSGFuZGxlOkAicXQiXTsKIAogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0
V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDAp
IGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKSBhZGRUb1dpbmRvdzpZRVNdKTsKICAg
ICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1F1b3RhRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsK
</data>
<flag name="review"
          id="395894"
          type_id="1"
          status="+"
          setter="youennf"
    />
          </attachment>
      

    </bug>

</bugzilla>