<?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>209926</bug_id>
          
          <creation_ts>2020-04-02 13:45:56 -0700</creation_ts>
          <short_desc>Prevent non app-bound domain cookies from being read or set using API calls</short_desc>
          <delta_ts>2020-04-03 16:39:12 -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>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kate Cheney">katherine_cheney</reporter>
          <assigned_to name="Kate Cheney">katherine_cheney</assigned_to>
          <cc>beidson</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>thorton</cc>
    
    <cc>wilander</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1637047</commentid>
    <comment_count>0</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-04-02 13:45:56 -0700</bug_when>
    <thetext>We should adjust WebKit API calls to only be able to set and access app-bound domain cookies.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637048</commentid>
    <comment_count>1</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-04-02 13:46:29 -0700</bug_when>
    <thetext>&lt;rdar://problem/61071428&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637110</commentid>
    <comment_count>2</comment_count>
      <attachid>395312</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-04-02 15:46:22 -0700</bug_when>
    <thetext>Created attachment 395312
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637132</commentid>
    <comment_count>3</comment_count>
      <attachid>395318</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-04-02 16:20:15 -0700</bug_when>
    <thetext>Created attachment 395318
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637528</commentid>
    <comment_count>4</comment_count>
      <attachid>395318</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-04-03 14:25:09 -0700</bug_when>
    <thetext>Comment on attachment 395318
Patch

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

&gt; Source/WebKit/UIProcess/API/APIHTTPCookieStore.cpp:42
&gt; +#define HTTP_COOKIE_STORE_ADDITIONS_1 false
&gt; +#define HTTP_COOKIE_STORE_ADDITIONS_2

Working with Kate out-of-band on a better name for these

&gt; Source/WebKit/UIProcess/API/APIHTTPCookieStore.cpp:65
&gt; +void HTTPCookieStore::filterAppBoundCookies(const Vector&lt;WebCore::Cookie&gt;&amp; cookies, CompletionHandler&lt;void(Vector&lt;WebCore::Cookie&gt;&amp;&amp;)&gt;&amp;&amp; completionHandler)

I&apos;d change this to:

Vector&lt;WebCore::Cookie&gt; HTTPCookieStore::filterAppBoundCookies(const Vector&lt;WebCore::Cookie&gt;&amp; cookies) {...}

Have it return the filtered vector.

And have the caller call the completion handler.

&gt; Source/WebKit/UIProcess/API/APIHTTPCookieStore.cpp:96
&gt; +            filterAppBoundCookies(allCookies, WTFMove(completionHandler));

&quot;Filter&quot; is an operation completely distinct from calling a completion handler.

Make my above change, and this becomes:
completionHandler(filterAppBoundCookies(allCookies));

Reads nicer.

&gt; Source/WebKit/UIProcess/API/APIHTTPCookieStore.cpp:103
&gt; +        filterAppBoundCookies(cookies, WTFMove(completionHandler));

Ditto.

&gt; Source/WebKit/UIProcess/API/APIHTTPCookieStore.cpp:115
&gt; +        filterAppBoundCookies(cookies, WTFMove(completionHandler));

Ditto.

&gt; Source/WebKit/UIProcess/API/APIHTTPCookieStore.cpp:121
&gt; +    filterAppBoundCookies(cookies, [this, protectedThis = makeRef(*this), completionHandler = WTFMove(completionHandler)] (auto&amp;&amp; appBoundCookies) mutable {

Can get rid of the lambda here and just continue executing code on the resulting vector.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637556</commentid>
    <comment_count>5</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-04-03 16:05:52 -0700</bug_when>
    <thetext>(In reply to Brady Eidson from comment #4)
&gt; Comment on attachment 395318 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=395318&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/APIHTTPCookieStore.cpp:42
&gt; &gt; +#define HTTP_COOKIE_STORE_ADDITIONS_1 false
&gt; &gt; +#define HTTP_COOKIE_STORE_ADDITIONS_2
&gt; 
&gt; Working with Kate out-of-band on a better name for these
&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/APIHTTPCookieStore.cpp:65
&gt; &gt; +void HTTPCookieStore::filterAppBoundCookies(const Vector&lt;WebCore::Cookie&gt;&amp; cookies, CompletionHandler&lt;void(Vector&lt;WebCore::Cookie&gt;&amp;&amp;)&gt;&amp;&amp; completionHandler)
&gt; 
&gt; I&apos;d change this to:
&gt; 
&gt; Vector&lt;WebCore::Cookie&gt; HTTPCookieStore::filterAppBoundCookies(const
&gt; Vector&lt;WebCore::Cookie&gt;&amp; cookies) {...}
&gt; 
&gt; Have it return the filtered vector.
&gt; 
&gt; And have the caller call the completion handler.

I did not note this at the time - THere&apos;s an inner async lambda in here, necessitating passing in the outer lambda.  NM!


&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/APIHTTPCookieStore.cpp:96
&gt; &gt; +            filterAppBoundCookies(allCookies, WTFMove(completionHandler));
&gt; 
&gt; &quot;Filter&quot; is an operation completely distinct from calling a completion
&gt; handler.
&gt; 
&gt; Make my above change, and this becomes:
&gt; completionHandler(filterAppBoundCookies(allCookies));
&gt; 
&gt; Reads nicer.
&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/APIHTTPCookieStore.cpp:103
&gt; &gt; +        filterAppBoundCookies(cookies, WTFMove(completionHandler));
&gt; 
&gt; Ditto.
&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/APIHTTPCookieStore.cpp:115
&gt; &gt; +        filterAppBoundCookies(cookies, WTFMove(completionHandler));
&gt; 
&gt; Ditto.
&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/APIHTTPCookieStore.cpp:121
&gt; &gt; +    filterAppBoundCookies(cookies, [this, protectedThis = makeRef(*this), completionHandler = WTFMove(completionHandler)] (auto&amp;&amp; appBoundCookies) mutable {
&gt; 
&gt; Can get rid of the lambda here and just continue executing code on the
&gt; resulting vector.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637557</commentid>
    <comment_count>6</comment_count>
      <attachid>395318</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-04-03 16:06:20 -0700</bug_when>
    <thetext>Comment on attachment 395318
Patch

Change the names as we discussed then this is good</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637558</commentid>
    <comment_count>7</comment_count>
      <attachid>395415</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-04-03 16:17:02 -0700</bug_when>
    <thetext>Created attachment 395415
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637559</commentid>
    <comment_count>8</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-04-03 16:17:12 -0700</bug_when>
    <thetext>(In reply to Brady Eidson from comment #6)
&gt; Comment on attachment 395318 [details]
&gt; Patch
&gt; 
&gt; Change the names as we discussed then this is good

Thank you!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637563</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-04-03 16:39:11 -0700</bug_when>
    <thetext>Committed r259520: &lt;https://trac.webkit.org/changeset/259520&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 395415.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395312</attachid>
            <date>2020-04-02 15:46:22 -0700</date>
            <delta_ts>2020-04-02 16:20:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209926-20200402154621.patch</filename>
            <type>text/plain</type>
            <size>27397</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5NDIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGFhZTY3ZTI5YWIwNWZkNmE4
M2IyMGIyMjRkZDBlYTQ3MTg1YWMyYWYuLjZlOGNlYzUxM2U0YWQ4YjZhYmY5ZDM1NmU0NzVkOGUz
MjY4NGRkNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMjAtMDQtMDIgIEthdGUgQ2hl
bmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgUHJldmVudCBub24g
YXBwLWJvdW5kIGRvbWFpbiBjb29raWVzIGZyb20gYmVpbmcgcmVhZCBvciBzZXQgdXNpbmcgQVBJ
IGNhbGxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDk5MjYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYxMDcxNDI4PgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggZmlsdGVycyBvdXQg
c2V0dGluZyBhbmQgZmV0Y2hpbmcgb2YgY29va2llcyB2aWEgQVBJIGNhbGwgCisgICAgICAgIHRv
IG9ubHkgc2V0IG9yIHJldHVybiBhcHAtYm91bmQgY29va2llcy4KKworICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmNwcDoKKyAgICAgICAgKEFQSTo6SFRUUENvb2tp
ZVN0b3JlOjpmaWx0ZXJBcHBCb3VuZENvb2tpZXMpOgorICAgICAgICBUaGlzIGZ1bmN0aW9uIHF1
ZXJpZXMgdGhlIHdlYnNpdGVEYXRhU3RvcmUgZm9yIHRoZSBXS0FwcEJvdW5kRG9tYWlucworICAg
ICAgICBlbnRyaWVzIGFuZCBmaWx0ZXJzIG91dCBub24gYXBwLWJvdW5kIGRvbWFpbnMuCisKKyAg
ICAgICAgKEFQSTo6SFRUUENvb2tpZVN0b3JlOjpjb29raWVzKToKKyAgICAgICAgKEFQSTo6SFRU
UENvb2tpZVN0b3JlOjpjb29raWVzRm9yVVJMKToKKyAgICAgICAgKEFQSTo6SFRUUENvb2tpZVN0
b3JlOjpzZXRDb29raWVzKToKKyAgICAgICAgVGhlc2UgZnVuY3Rpb25zIHdlcmUgdXBkYXRlZCB0
byBzZXQvcmV0dXJuIHRoZSBjb29raWVzIGFmdGVyIHRoZXkndmUKKyAgICAgICAgYmVlbiBmaWx0
ZXJlZCB0aHJvdWdoIHRoZSBXS0FwcEJvdW5kRG9tYWlucy4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYnNpdGVEYXRhU3RvcmUubW06CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBf
YXBwQm91bmREb21haW5zOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2Nv
YS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRh
U3RvcmU6OmdldEFwcEJvdW5kRG9tYWlucyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYnNp
dGVEYXRhU3RvcmU6OmFwcEJvdW5kRG9tYWluc0ZvclRlc3RpbmcgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICBVdGlsaXplIGEgZnVuY3Rpb24gZm9ybWVybHkgdXNlZCBmb3IgdGVzdGluZyBvbmx5
IHRvIGJlIHVzZWQgaW4gdGhlCisgICAgICAgIEhUVFBDb29raWVTdG9yZS4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmg6CisKIDIwMjAtMDQtMDIg
IERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWJQYWdlUHJv
eHkgYXR0YWNobWVudCBtZXRob2RzIHNob3VsZCByZXR1cm4gZWFybHkgaWYgYXR0YWNobWVudCBl
bGVtZW50IGlzIG5vdCBlbmFibGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElIVFRQQ29va2llU3RvcmUuY3BwCmluZGV4IGI0MTZiZTNlMGU1MGVhNTgzMTI2OTFiY2Ji
ZDM2YmU5NjU1MWNlMzUuLmI4NmUyZTU0NDM4ZDFlNjUwYzU5NDBjYTg5OWRlNWY4OWYzNDE4OTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3Rv
cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3Rv
cmUuY3BwCkBAIC0yOSwxMSArMjksMTggQEAKICNpbmNsdWRlICJXZWJDb29raWVNYW5hZ2VyUHJv
eHkuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRh
U3RvcmUuaCIKKyNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5oIgogI2luY2x1
ZGUgPFdlYkNvcmUvQ29va2llLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Db29raWVTdG9yYWdlLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9IVFRQQ29va2llQWNjZXB0UG9saWN5Lmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaD4KIAorI2lmIFVTRShBUFBMRV9JTlRFUk5B
TF9TREspCisjaW5jbHVkZSA8V2ViS2l0QWRkaXRpb25zL0hUVFBDb29raWVTdG9yZUFkZGl0aW9u
cy5oPgorI2Vsc2UKKyNkZWZpbmUgSFRUUF9DT09LSUVfU1RPUkVfQURESVRJT05TIGZhbHNlCisj
ZW5kaWYKKwogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAogbmFtZXNwYWNlIEFQSSB7CkBAIC01
NCw2ICs2MSwyNiBAQCBIVFRQQ29va2llU3RvcmU6On5IVFRQQ29va2llU3RvcmUoKQogICAgIHVu
cmVnaXN0ZXJGb3JOZXdQcm9jZXNzUG9vbE5vdGlmaWNhdGlvbnMoKTsKIH0KIAordm9pZCBIVFRQ
Q29va2llU3RvcmU6OmZpbHRlckFwcEJvdW5kQ29va2llcyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6
Q29va2llPiYgY29va2llcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2ViQ29yZTo6
Q29va2llPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBWZWN0b3I8V2ViQ29yZTo6
Q29va2llPiBhcHBCb3VuZENvb2tpZXM7CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBt
X293bmluZ0RhdGFTdG9yZS0+Z2V0QXBwQm91bmREb21haW5zKFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIGNvb2tpZXMsIGFwcEJvdW5kQ29va2llcyA9IFdURk1vdmUoYXBw
Qm91bmRDb29raWVzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0gKGF1dG8mIGRvbWFpbnMpIG11dGFibGUgeworICAgICAgICBpZiAoSFRUUF9DT09LSUVf
U1RPUkVfQURESVRJT05TKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8mIGNvb2tpZSA6IGNvb2tp
ZXMpIHsKKyAgICAgICAgICAgICAgICBpZiAoZG9tYWlucy5jb250YWlucyhXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbUhvc3QoY29va2llLmRvbWFpbikpKQor
ICAgICAgICAgICAgICAgICAgICBhcHBCb3VuZENvb2tpZXMuYXBwZW5kKGNvb2tpZSk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgYXBwQm91bmRDb29raWVzID0g
Y29va2llczsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShhcHBCb3VuZENvb2tp
ZXMpKTsKKyAgICB9KTsKKyNlbHNlCisgICAgYXBwQm91bmRDb29raWVzID0gY29va2llczsKKyAg
ICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGFwcEJvdW5kQ29va2llcykpOworI2VuZGlmCit9
CisKIHZvaWQgSFRUUENvb2tpZVN0b3JlOjpjb29raWVzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsK
ICAgICBhdXRvKiBwb29sID0gbV9vd25pbmdEYXRhU3RvcmUtPnByb2Nlc3NQb29sRm9yQ29va2ll
U3RvcmFnZU9wZXJhdGlvbnMoKTsKQEAgLTYzLDE1ICs5MCwxNSBAQCB2b2lkIEhUVFBDb29raWVT
dG9yZTo6Y29va2llcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFZlY3RvcjxXZWJDb3Jl
OjpDb29raQogICAgICAgICAgICAgYWxsQ29va2llcyA9IGdldEFsbERlZmF1bHRVSVByb2Nlc3ND
b29raWVTdG9yZUNvb2tpZXMoKTsKICAgICAgICAgYWxsQ29va2llcy5hcHBlbmRWZWN0b3IobV9v
d25pbmdEYXRhU3RvcmUtPnBlbmRpbmdDb29raWVzKCkpOwogCi0gICAgICAgIFJ1bkxvb3A6Om1h
aW4oKS5kaXNwYXRjaChbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSwgYWxsQ29va2llc10gKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihhbGxDb29raWVzKTsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlciksIGFsbENvb2tpZXNdICgpIG11dGFibGUgeworICAgICAg
ICAgICAgZmlsdGVyQXBwQm91bmRDb29raWVzKGFsbENvb2tpZXMsIFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBh
dXRvKiBjb29raWVNYW5hZ2VyID0gcG9vbC0+c3VwcGxlbWVudDxXZWJLaXQ6OldlYkNvb2tpZU1h
bmFnZXJQcm94eT4oKTsKLSAgICBjb29raWVNYW5hZ2VyLT5nZXRBbGxDb29raWVzKG1fb3duaW5n
RGF0YVN0b3JlLT5zZXNzaW9uSUQoKSwgW3Bvb2wgPSBXVEZNb3ZlKHBvb2wpLCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoY29uc3QgVmVjdG9yPFdlYkNv
cmU6OkNvb2tpZT4mIGNvb2tpZXMpIG11dGFibGUgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihjb29raWVzKTsKKyAgICBjb29raWVNYW5hZ2VyLT5nZXRBbGxDb29raWVzKG1fb3duaW5nRGF0
YVN0b3JlLT5zZXNzaW9uSUQoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KSwgcG9vbCA9IFdURk1vdmUocG9vbCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcildIChjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYgY29va2llcykg
bXV0YWJsZSB7CisgICAgICAgIGZpbHRlckFwcEJvdW5kQ29va2llcyhjb29raWVzLCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgfSk7CiB9CiAKQEAgLTgyLDMwICsxMDksMzIgQEAg
dm9pZCBIVFRQQ29va2llU3RvcmU6OmNvb2tpZXNGb3JVUkwoV1RGOjpVUkwmJiB1cmwsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoVmVjdG8KICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVy
KHsgfSk7CiAKICAgICBhdXRvKiBjb29raWVNYW5hZ2VyID0gcG9vbC0+c3VwcGxlbWVudDxXZWJL
aXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eT4oKTsKLSAgICBjb29raWVNYW5hZ2VyLT5nZXRDb29r
aWVzKG1fb3duaW5nRGF0YVN0b3JlLT5zZXNzaW9uSUQoKSwgdXJsLCBbY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKFZlY3RvcjxXZWJDb3JlOjpDb29raWU+
JiYgY29va2llcykgbXV0YWJsZSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUo
Y29va2llcykpOworICAgIGNvb2tpZU1hbmFnZXItPmdldENvb2tpZXMobV9vd25pbmdEYXRhU3Rv
cmUtPnNlc3Npb25JRCgpLCB1cmwsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChWZWN0
b3I8V2ViQ29yZTo6Q29va2llPiYmIGNvb2tpZXMpIG11dGFibGUgeworICAgICAgICBmaWx0ZXJB
cHBCb3VuZENvb2tpZXMoY29va2llcywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAg
IH0pOwogfQogCiB2b2lkIEhUVFBDb29raWVTdG9yZTo6c2V0Q29va2llcyhjb25zdCBWZWN0b3I8
V2ViQ29yZTo6Q29va2llPiYgY29va2llcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQogewotICAgIGF1dG8qIHBvb2wgPSBtX293bmluZ0RhdGFTdG9yZS0+
cHJvY2Vzc1Bvb2xGb3JDb29raWVTdG9yYWdlT3BlcmF0aW9ucygpOwotICAgIGlmICghcG9vbCkg
ewotICAgICAgICBmb3IgKGF1dG8mIGNvb2tpZSA6IGNvb2tpZXMpIHsKLSAgICAgICAgICAgIC8v
IEZJWE1FOiBwZW5kaW5nQ29va2llcyB1c2VkIGZvciBkZWZhdWx0U2Vzc2lvbiBiZWNhdXNlIHNl
c3Npb24gY29va2llcyBjYW5ub3QgYmUgcHJvcGFnYXRlZCB0byBOZXR3b3JrIFByb2Nlc3Mgd2l0
aCB1aVByb2Nlc3NDb29raWVTdG9yYWdlSWRlbnRpZmllci4KLSAgICAgICAgICAgIGlmIChtX293
bmluZ0RhdGFTdG9yZS0+c2Vzc2lvbklEKCkgPT0gUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNz
aW9uSUQoKSAmJiAhY29va2llLnNlc3Npb24pCi0gICAgICAgICAgICAgICAgc2V0Q29va2llSW5E
ZWZhdWx0VUlQcm9jZXNzQ29va2llU3RvcmUoY29va2llKTsKLSAgICAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgICAgICBtX293bmluZ0RhdGFTdG9yZS0+YWRkUGVuZGluZ0Nvb2tpZShjb29raWUp
OworICAgIGZpbHRlckFwcEJvdW5kQ29va2llcyhjb29raWVzLCBbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpXSAoYXV0byYmIGFwcEJvdW5kQ29va2llcykgbXV0YWJsZSB7CisgICAgICAgIGF1
dG8qIHBvb2wgPSBtX293bmluZ0RhdGFTdG9yZS0+cHJvY2Vzc1Bvb2xGb3JDb29raWVTdG9yYWdl
T3BlcmF0aW9ucygpOworICAgICAgICBpZiAoIXBvb2wpIHsKKyAgICAgICAgICAgIGZvciAoYXV0
byYgY29va2llIDogYXBwQm91bmRDb29raWVzKSB7CisgICAgICAgICAgICAgICAgLy8gRklYTUU6
IHBlbmRpbmdDb29raWVzIHVzZWQgZm9yIGRlZmF1bHRTZXNzaW9uIGJlY2F1c2Ugc2Vzc2lvbiBj
b29raWVzIGNhbm5vdCBiZSBwcm9wYWdhdGVkIHRvIE5ldHdvcmsgUHJvY2VzcyB3aXRoIHVpUHJv
Y2Vzc0Nvb2tpZVN0b3JhZ2VJZGVudGlmaWVyLgorICAgICAgICAgICAgICAgIGlmIChtX293bmlu
Z0RhdGFTdG9yZS0+c2Vzc2lvbklEKCkgPT0gUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9u
SUQoKSAmJiAhY29va2llLnNlc3Npb24pCisgICAgICAgICAgICAgICAgICAgIHNldENvb2tpZUlu
RGVmYXVsdFVJUHJvY2Vzc0Nvb2tpZVN0b3JlKGNvb2tpZSk7CisgICAgICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgICAgICBtX293bmluZ0RhdGFTdG9yZS0+YWRkUGVuZGluZ0Nvb2tp
ZShjb29raWUpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBSdW5Mb29wOjptYWluKCku
ZGlzcGF0Y2goV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAKLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGF1dG8q
IGNvb2tpZU1hbmFnZXIgPSBwb29sLT5zdXBwbGVtZW50PFdlYktpdDo6V2ViQ29va2llTWFuYWdl
clByb3h5PigpOwotICAgIGNvb2tpZU1hbmFnZXItPnNldENvb2tpZXMobV9vd25pbmdEYXRhU3Rv
cmUtPnNlc3Npb25JRCgpLCBjb29raWVzLCBbcG9vbCA9IFdURk1vdmUocG9vbCksIGNvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgewotICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgICAgICBhdXRvKiBjb29raWVNYW5hZ2VyID0g
cG9vbC0+c3VwcGxlbWVudDxXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eT4oKTsKKyAgICAg
ICAgY29va2llTWFuYWdlci0+c2V0Q29va2llcyhtX293bmluZ0RhdGFTdG9yZS0+c2Vzc2lvbklE
KCksIGFwcEJvdW5kQ29va2llcywgW3Bvb2wgPSBXVEZNb3ZlKHBvb2wpLCBjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKKyAgICAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgICAgIH0pOwogICAgIH0pOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmgKaW5kZXgg
NGRiNzViMzVmOTNiYzc2MzdjMTljNGYzZmUyYTVjOGIxM2Q5YTAwYS4uNjFkZmYyYzRiZjE4MTY5
MzNkNjAyNzU0MTc2OWQ4ZTQwMjA5NzhlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElIVFRQQ29va2llU3RvcmUuaApAQCAtNzcsNiArNzcsOCBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBjb29raWVzRGlkQ2hhbmdlKCk7CiAgICAgdm9pZCBjb29raWVNYW5hZ2VyRGVzdHJv
eWVkKCk7CiAKKyAgICB2b2lkIGZpbHRlckFwcEJvdW5kQ29va2llcyhjb25zdCBWZWN0b3I8V2Vi
Q29yZTo6Q29va2llPiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6OkNv
b2tpZT4mJik+JiYpOworCiBwcml2YXRlOgogICAgIEhUVFBDb29raWVTdG9yZShXZWJLaXQ6Oldl
YnNpdGVEYXRhU3RvcmUmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KaW5kZXggNmU1NzhlMDNkZTIzMjA0MDE1
OTM5MWU1M2FkNTIwNDcwYmFiYjA1Ny4uYTQ4ZTFiNjIwMjZiNzcxMzJkZjRmNzk5MDI3Yjc3YzU2
YTkxY2ZjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2Vic2l0ZURhdGFTdG9yZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCkBAIC02MTMsNyArNjEzLDcgQEAgLSAoX1dLV2Vic2l0
ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gKilfY29uZmlndXJhdGlvbgogCiAtICh2b2lkKV9hcHBC
b3VuZERvbWFpbnM6KHZvaWQgKF4pKE5TQXJyYXk8TlNTdHJpbmcgKj4gKikpY29tcGxldGlvbkhh
bmRsZXIKIHsKLSAgICBfd2Vic2l0ZURhdGFTdG9yZS0+YXBwQm91bmREb21haW5zRm9yVGVzdGlu
ZyhbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXShh
dXRvJiBkb21haW5zKSBtdXRhYmxlIHsKKyAgICBfd2Vic2l0ZURhdGFTdG9yZS0+Z2V0QXBwQm91
bmREb21haW5zKFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFu
ZGxlcildKGF1dG8mIGRvbWFpbnMpIG11dGFibGUgewogICAgICAgICBWZWN0b3I8UmVmUHRyPEFQ
STo6T2JqZWN0Pj4gYXBpRG9tYWluczsKICAgICAgICAgYXBpRG9tYWlucy5yZXNlcnZlSW5pdGlh
bENhcGFjaXR5KGRvbWFpbnMuc2l6ZSgpKTsKICAgICAgICAgZm9yIChhdXRvJiBkb21haW4gOiBk
b21haW5zKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEv
Q29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCmluZGV4IGE3MGI3ZDUw
OTE1ZTQ3N2Y5ODM0MGJlZTc0OTZjYjJjMDY3OTk4ZGEuLjIyYzk4ZWYyYmNmNzU4ZmFhZGUxMzc1
MjQ2YTA4N2VhMDY0MjU0MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0K
QEAgLTQ2Niw4ICs0NjYsMTAgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpiZWdpbkFwcEJvdW5k
RG9tYWluQ2hlY2soY29uc3QgVVJMJiByZXF1ZXN0VVJMLCBXZWJGcmFtZVAKICAgICB9KTsKIH0K
IAotdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjphcHBCb3VuZERvbWFpbnNGb3JUZXN0aW5nKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
bj4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QKK3ZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6
Z2V0QXBwQm91bmREb21haW5zKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSGFzaFNldDxX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QK
IHsKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworCiAgICAgZW5zdXJlQXBwQm91bmRE
b21haW5zKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAo
YXV0byYgZG9tYWlucykgbXV0YWJsZSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGRvbWFp
bnMpOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCmluZGV4IDU1NWQzNTYwZTU1NDRlZGY1ZTA4ZmNmNzll
MmIyNzRlMDcwOWEwZDcuLmU4NDIzMTMyNTZiYTMxYmRkOGE3NTBjYTU1YjMzYWJkYWIyYzAwOTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YVN0b3JlLmgKQEAgLTI4Nyw3ICsyODcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRJ
bkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZChib29sIGVuYWJsZWQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7CiAKICAgICB2b2lkIGJlZ2luQXBwQm91bmREb21haW5DaGVjayhjb25zdCBV
UkwmLCBXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHkmKTsKLSAgICB2b2lkIGFwcEJvdW5kRG9t
YWluc0ZvclRlc3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBIYXNoU2V0PFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYpPiYmKSBjb25zdDsKKyAgICB2b2lkIGdldEFwcEJvdW5k
RG9tYWlucyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEhhc2hTZXQ8V2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4+Jik+JiYpIGNvbnN0OwogICAgIHZvaWQgZW5zdXJlQXBwQm91bmREb21h
aW5zKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSGFzaFNldDxXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbj4mKT4mJikgY29uc3Q7CiAgICAgdm9pZCByZWluaXRpYWxpemVBcHBCb3VuZERv
bWFpbnMoKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9n
CmluZGV4IDNhZThkNGE5ZjMwYzRjMTBhYWQyZjA2OThkMjI0NmI3OGQ2YTQ3NWQuLjlhZWM0ZDBi
ODE2NWNhZWI2MDRhYzAzOWIyODhjNDI1ZTg5NTIwZDggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5n
ZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAyMC0wNC0wMiAg
S2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KKworICAgICAgICBQcmV2
ZW50IG5vbiBhcHAtYm91bmQgZG9tYWluIGNvb2tpZXMgZnJvbSBiZWluZyByZWFkIG9yIHNldCB1
c2luZyBBUEkgY2FsbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIwOTkyNgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjEwNzE0Mjg+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgMyBuZXcgQVBJ
IHRlc3RzIHRvIHRlc3QgdGhhdCBub24gYXBwLWJvdW5kIGNvb2tpZXMgYXJlIG5vdCBiZWluZwor
ICAgICAgICBzZXQgb3IgcmV0dXJuZWQgdmlhIEFQSSBjYWxscy4gQWxzbyBhZGRlZCBhIGZ1bmN0
aW9uIHRvIHJlc2V0IHN0YXRlCisgICAgICAgIGJldHdlZW4gdGVzdHMgZm9yIGludGVybmFsIGRl
YnVnZ2luZy4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5B
cHBCcm93c2VyUHJpdmFjeS5tbToKKyAgICAgICAgKHNldFVwQ29va2llVGVzdCk6CisgICAgICAg
IChURVNUKToKKwogMjAyMC0wNC0wMiAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29t
PgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIyMzQ2ODUpOiBMZWFrIG9mIENBTGF5ZXIgaW4gY3Jl
YXRlQ29yZUFuaW1hdGlvbkxheWVyKCkgaW4gUGx1Z2luT2JqZWN0TWFjLm1tCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZh
Y3kubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3Nl
clByaXZhY3kubW0KaW5kZXggYTA5ZGUzMTQ1ZDYxZGYxODJjYjg2YjQzNWE2ZmFjN2NlMDViNzc2
Mi4uNzYzYmRiOGNhODQwOGI1ZjAwMDZhMTIzYTAzMDQwODNmZWVlODk3NyAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5
Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93
c2VyUHJpdmFjeS5tbQpAQCAtMzEsNiArMzEsNyBAQAogI2ltcG9ydCAiV0tXZWJWaWV3Q29uZmln
dXJhdGlvbkV4dHJhcy5oIgogI2ltcG9ydCA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgog
I2ltcG9ydCA8V2ViQ29yZS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaD4KKyNpbXBvcnQgPFdl
YktpdC9XS0hUVFBDb29raWVTdG9yZVByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1ByZWZl
cmVuY2VzUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLVXNlckNvbnRlbnRDb250cm9sbGVy
UHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaD4K
QEAgLTc4LDYgKzc5LDExIEBAIC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBz
dG9wVVJMU2NoZW1lVGFzazooaWQgPFdLVVJMU2NoZW1lVGFzaz4pdGFzCiAKIEBlbmQKIAorc3Rh
dGljIHZvaWQgY2xlYW5VcEluQXBwQnJvd3NlclByaXZhY3lUZXN0U2V0dGluZ3MoKQoreworICAg
IElOX0FQUF9CUk9XU0VSX1BSSVZBQ1lfQURESVRJT05TXzIKK30KKwogc3RhdGljIHZvaWQgaW5p
dGlhbGl6ZUluQXBwQnJvd3NlclByaXZhY3lUZXN0U2V0dGluZ3MoKQogewogICAgIFJ1bkxvb3A6
OmluaXRpYWxpemVNYWluUnVuTG9vcCgpOwpAQCAtMTE5LDYgKzEyNSw3IEBAIFRFU1QoSW5BcHBC
cm93c2VyUHJpdmFjeSwgTm9uQXBwQm91bmREb21haW5GYWlsZWRVc2VyU2NyaXB0QXRTdGFydCkK
ICAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6QCJ3aW5kb3cud2tVc2VyU2NyaXB0SW5q
ZWN0ZWQiIGNvbXBsZXRpb25IYW5kbGVyOl4oaWQgX051bGxhYmxlIHJlc3VsdCwgTlNFcnJvciAq
IF9OdWxsYWJsZSBlcnJvcikgewogICAgICAgICBFWFBFQ1RfRVEoTk8sIFtyZXN1bHQgYm9vbFZh
bHVlXSk7CiAgICAgICAgIEVYUEVDVF9GQUxTRSghIWVycm9yKTsKKyAgICAgICAgY2xlYW5VcElu
QXBwQnJvd3NlclByaXZhY3lUZXN0U2V0dGluZ3MoKTsKICAgICAgICAgaXNEb25lID0gdHJ1ZTsK
ICAgICB9XTsKIApAQCAtMTYwLDYgKzE2Nyw3IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwg
Tm9uQXBwQm91bmREb21haW5GYWlsZWRVc2VyU2NyaXB0QXRFbmQpCiAgICAgW3dlYlZpZXcgZXZh
bHVhdGVKYXZhU2NyaXB0OkAid2luZG93LndrVXNlclNjcmlwdEluamVjdGVkIiBjb21wbGV0aW9u
SGFuZGxlcjpeKGlkIF9OdWxsYWJsZSByZXN1bHQsIE5TRXJyb3IgKiBfTnVsbGFibGUgZXJyb3Ip
IHsKICAgICAgICAgRVhQRUNUX0VRKE5PLCBbcmVzdWx0IGJvb2xWYWx1ZV0pOwogICAgICAgICBF
WFBFQ1RfRkFMU0UoISFlcnJvcik7CisgICAgICAgIGNsZWFuVXBJbkFwcEJyb3dzZXJQcml2YWN5
VGVzdFNldHRpbmdzKCk7CiAgICAgICAgIGlzRG9uZSA9IHRydWU7CiAgICAgfV07CiAKQEAgLTIw
Miw2ICsyMTAsNyBAQCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIE5vbkFwcEJvdW5kRG9tYWlu
RmFpbGVkVXNlckFnZW50U2NyaXB0cykKICAgICBbd2ViVmlldzIgZXZhbHVhdGVKYXZhU2NyaXB0
OkAid2luZG93LndrVXNlclNjcmlwdEluamVjdGVkIiBjb21wbGV0aW9uSGFuZGxlcjpeKGlkIF9O
dWxsYWJsZSByZXN1bHQsIE5TRXJyb3IgKiBfTnVsbGFibGUgZXJyb3IpIHsKICAgICAgICAgRVhQ
RUNUX0ZBTFNFKHJlc3VsdCk7CiAgICAgICAgIEVYUEVDVF9UUlVFKCEhZXJyb3IpOworICAgICAg
ICBjbGVhblVwSW5BcHBCcm93c2VyUHJpdmFjeVRlc3RTZXR0aW5ncygpOwogICAgICAgICBpc0Rv
bmUgPSB0cnVlOwogICAgIH1dOwogCkBAIC0yNDcsNiArMjU2LDcgQEAgVEVTVChJbkFwcEJyb3dz
ZXJQcml2YWN5LCBTd2FwQmFja1RvQXBwQm91bmRSZWplY3RzVXNlclNjcmlwdCkKICAgICBbd2Vi
VmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6QCJ3aW5kb3cud2tVc2VyU2NyaXB0SW5qZWN0ZWQiIGNv
bXBsZXRpb25IYW5kbGVyOl4oaWQgX051bGxhYmxlIHJlc3VsdCwgTlNFcnJvciAqIF9OdWxsYWJs
ZSBlcnJvcikgewogICAgICAgICBFWFBFQ1RfRkFMU0UocmVzdWx0KTsKICAgICAgICAgRVhQRUNU
X1RSVUUoISFlcnJvcik7CisgICAgICAgIGNsZWFuVXBJbkFwcEJyb3dzZXJQcml2YWN5VGVzdFNl
dHRpbmdzKCk7CiAgICAgICAgIGlzRG9uZSA9IHRydWU7CiAgICAgfV07CiAKQEAgLTI2Nyw2ICsy
NzcsNyBAQCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIEFwcEJvdW5kRG9tYWlucykKICAgICAg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykKICAgICAgICAgICAgIEVYUEVDVF9X
S19TVFJFUShbc29ydGVkRG9tYWlucyBvYmplY3RBdEluZGV4OmldLCBbZG9tYWluc1RvQ29tcGFy
ZSBvYmplY3RBdEluZGV4OmldKTsKIAorICAgICAgICBjbGVhblVwSW5BcHBCcm93c2VyUHJpdmFj
eVRlc3RTZXR0aW5ncygpOwogICAgICAgICBpc0RvbmUgPSB0cnVlOwogICAgIH1dOwogICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKQEAgLTI4Niw2ICsyOTcsNyBAQCBURVNU
KEluQXBwQnJvd3NlclByaXZhY3ksIExvY2FsRmlsZXNBcmVBcHBCb3VuZCkKICAgICBpc0RvbmUg
PSBmYWxzZTsKICAgICBbd2ViVmlldyBfaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjpeKEJP
T0wgaXNBcHBCb3VuZCkgewogICAgICAgICBFWFBFQ1RfVFJVRShpc0FwcEJvdW5kKTsKKyAgICAg
ICAgY2xlYW5VcEluQXBwQnJvd3NlclByaXZhY3lUZXN0U2V0dGluZ3MoKTsKICAgICAgICAgaXNE
b25lID0gdHJ1ZTsKICAgICB9XTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9u
ZSk7CkBAIC0zMDQsNiArMzE2LDcgQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBEYXRhRmls
ZXNBcmVBcHBCb3VuZCkKICAgICBpc0RvbmUgPSBmYWxzZTsKICAgICBbd2ViVmlldyBfaXNOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbjpeKEJPT0wgaXNBcHBCb3VuZCkgewogICAgICAgICBFWFBF
Q1RfVFJVRShpc0FwcEJvdW5kKTsKKyAgICAgICAgY2xlYW5VcEluQXBwQnJvd3NlclByaXZhY3lU
ZXN0U2V0dGluZ3MoKTsKICAgICAgICAgaXNEb25lID0gdHJ1ZTsKICAgICB9XTsKICAgICBUZXN0
V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CkBAIC0zMjIsNiArMzM1LDcgQEAgVEVTVChJ
bkFwcEJyb3dzZXJQcml2YWN5LCBBYm91dEZpbGVzQXJlQXBwQm91bmQpCiAgICAgaXNEb25lID0g
ZmFsc2U7CiAgICAgW3dlYlZpZXcgX2lzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW46XihCT09M
IGlzQXBwQm91bmQpIHsKICAgICAgICAgRVhQRUNUX1RSVUUoaXNBcHBCb3VuZCk7CisgICAgICAg
IGNsZWFuVXBJbkFwcEJyb3dzZXJQcml2YWN5VGVzdFNldHRpbmdzKCk7CiAgICAgICAgIGlzRG9u
ZSA9IHRydWU7CiAgICAgfV07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUp
OwpAQCAtMzY2LDYgKzM4MCw3IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgTm9uQXBwQm91
bmRVc2VyU3R5bGVTaGVldEZvclNwZWNpZmljV2ViVmlld0ZhaWxzKQogICAgIFtbY29uZmlndXJh
dGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIF9hZGRVc2VyU3R5bGVTaGVldDpzdHlsZVNoZWV0
LmdldCgpXTsKIAogICAgIGV4cGVjdFNjcmlwdEV2YWx1YXRlc1RvQ29sb3Iod2ViVmlldy5nZXQo
KSwgYmFja2dyb3VuZENvbG9yU2NyaXB0LCByZWRJblJHQik7CisgICAgY2xlYW5VcEluQXBwQnJv
d3NlclByaXZhY3lUZXN0U2V0dGluZ3MoKTsKIH0KIAogVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5
LCBOb25BcHBCb3VuZFVzZXJTdHlsZVNoZWV0Rm9yQWxsV2ViVmlld3NGYWlscykKQEAgLTM4Nyw2
ICs0MDIsNyBAQCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIE5vbkFwcEJvdW5kVXNlclN0eWxl
U2hlZXRGb3JBbGxXZWJWaWV3c0ZhaWxzKQogICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVu
dENvbnRyb2xsZXJdIF9hZGRVc2VyU3R5bGVTaGVldDpzdHlsZVNoZWV0LmdldCgpXTsKIAogICAg
IGV4cGVjdFNjcmlwdEV2YWx1YXRlc1RvQ29sb3Iod2ViVmlldy5nZXQoKSwgYmFja2dyb3VuZENv
bG9yU2NyaXB0LCByZWRJblJHQik7CisgICAgY2xlYW5VcEluQXBwQnJvd3NlclByaXZhY3lUZXN0
U2V0dGluZ3MoKTsKIH0KIAogVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBOb25BcHBCb3VuZFVz
ZXJTdHlsZVNoZWV0QWZmZWN0aW5nQWxsRnJhbWVzRmFpbHMpCkBAIC00MTIsNiArNDI4LDcgQEAg
VEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBOb25BcHBCb3VuZFVzZXJTdHlsZVNoZWV0QWZmZWN0
aW5nQWxsRnJhbWVzRmFpbHMpCiAKICAgICAvLyBUaGUgc3ViZnJhbWUgc2hvdWxkIGFsc28gYmUg
YWZmZWN0ZWQuCiAgICAgZXhwZWN0U2NyaXB0RXZhbHVhdGVzVG9Db2xvcih3ZWJWaWV3LmdldCgp
LCBmcmFtZUJhY2tncm91bmRDb2xvclNjcmlwdCwgcmVkSW5SR0IpOworICAgIGNsZWFuVXBJbkFw
cEJyb3dzZXJQcml2YWN5VGVzdFNldHRpbmdzKCk7CiB9CiAKIFRFU1QoSW5BcHBCcm93c2VyUHJp
dmFjeSwgTm9uQXBwQm91bmREb21haW5DYW5ub3RBY2Nlc3NNZXNzYWdlSGFuZGxlcnMpCkBAIC00
MzgsNiArNDU1LDcgQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBOb25BcHBCb3VuZERvbWFp
bkNhbm5vdEFjY2Vzc01lc3NhZ2VIYW5kbGVycykKICAgICAvLyBTZXQgdGhlIGJhY2tncm91bmQg
Y29sb3IgdG8gcmVkIGlmIG1lc3NhZ2UgaGFuZGxlcnMgcmV0dXJuZWQgbnVsbCBzbyB3ZSBjYW4K
ICAgICAvLyBjaGVjayB3aXRob3V0IG5lZWRpbmcgYSBtZXNzYWdlIGhhbmRsZXIuCiAgICAgZXhw
ZWN0U2NyaXB0RXZhbHVhdGVzVG9Db2xvcih3ZWJWaWV3LmdldCgpLCBiYWNrZ3JvdW5kQ29sb3JT
Y3JpcHQsIHJlZEluUkdCKTsKKyAgICBjbGVhblVwSW5BcHBCcm93c2VyUHJpdmFjeVRlc3RTZXR0
aW5ncygpOwogfQogCiBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIEFwcEJvdW5kVG9Ob25BcHBC
b3VuZERvbWFpbkNhbm5vdEFjY2Vzc01lc3NhZ2VIYW5kbGVycykKQEAgLTQ3Niw2ICs0OTQsMjU0
IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgQXBwQm91bmRUb05vbkFwcEJvdW5kRG9tYWlu
Q2Fubm90QWNjZXNzTWVzc2FnZUhhbmRsZXJzCiAgICAgLy8gU2V0IHRoZSBiYWNrZ3JvdW5kIGNv
bG9yIHRvIHJlZCBpZiBtZXNzYWdlIGhhbmRsZXJzIHJldHVybmVkIG51bGwgc28gd2UgY2FuCiAg
ICAgLy8gY2hlY2sgd2l0aG91dCBuZWVkaW5nIGEgbWVzc2FnZSBoYW5kbGVyLgogICAgIGV4cGVj
dFNjcmlwdEV2YWx1YXRlc1RvQ29sb3Iod2ViVmlldy5nZXQoKSwgYmFja2dyb3VuZENvbG9yU2Ny
aXB0LCByZWRJblJHQik7CisgICAgY2xlYW5VcEluQXBwQnJvd3NlclByaXZhY3lUZXN0U2V0dGlu
Z3MoKTsKK30KKworc3RhdGljIFJldGFpblB0cjxXS0hUVFBDb29raWVTdG9yZT4gZ2xvYmFsQ29v
a2llU3RvcmU7CitzdGF0aWMgYm9vbCBnb3RGbGFnID0gZmFsc2U7CisKK3N0YXRpYyB2b2lkIHNl
dFVwQ29va2llVGVzdCgpCit7CisgICAgZ2xvYmFsQ29va2llU3RvcmUgPSBbW1dLV2Vic2l0ZURh
dGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXSBodHRwQ29va2llU3RvcmVdOworICAgIE5TQXJyYXk8
TlNIVFRQQ29va2llICo+ICpjb29raWVzID0gbmlsOworICAgIFtnbG9iYWxDb29raWVTdG9yZSBn
ZXRBbGxDb29raWVzOltjb29raWVzUHRyID0gJmNvb2tpZXNdKE5TQXJyYXk8TlNIVFRQQ29va2ll
ICo+ICpuc0Nvb2tpZXMpIHsKKyAgICAgICAgKmNvb2tpZXNQdHIgPSBbbnNDb29raWVzIHJldGFp
bl07CisgICAgICAgIGdvdEZsYWcgPSB0cnVlOworICAgIH1dOworCisgICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZnb3RGbGFnKTsKKworICAgIGZvciAoaWQgY29va2llIGluIGNvb2tpZXMp
IHsKKyAgICAgICAgZ290RmxhZyA9IGZhbHNlOworICAgICAgICBbZ2xvYmFsQ29va2llU3RvcmUg
ZGVsZXRlQ29va2llOmNvb2tpZSBjb21wbGV0aW9uSGFuZGxlcjpbXSgpIHsKKyAgICAgICAgICAg
IGdvdEZsYWcgPSB0cnVlOworICAgICAgICB9XTsKKyAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRp
bDo6cnVuKCZnb3RGbGFnKTsKKyAgICB9CisKKyAgICBjb29raWVzID0gbmlsOworICAgIGdvdEZs
YWcgPSBmYWxzZTsKKyAgICBbZ2xvYmFsQ29va2llU3RvcmUgZ2V0QWxsQ29va2llczpbY29va2ll
c1B0ciA9ICZjb29raWVzXShOU0FycmF5PE5TSFRUUENvb2tpZSAqPiAqbnNDb29raWVzKSB7Cisg
ICAgICAgICpjb29raWVzUHRyID0gW25zQ29va2llcyByZXRhaW5dOworICAgICAgICBnb3RGbGFn
ID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZ290Rmxh
Zyk7CisKKyAgICAvLyBNYWtlIHN1cmUgdGhlIGNvb2tpZSBzdG9yZSBzdGFydHMgb3V0IGVtcHR5
LgorICAgIEFTU0VSVF9FUShjb29raWVzLmNvdW50LCAwdSk7CisgICAgW2Nvb2tpZXMgcmVsZWFz
ZV07CisKKyAgICBnb3RGbGFnID0gZmFsc2U7Cit9CisKK1RFU1QoSW5BcHBCcm93c2VyUHJpdmFj
eSwgU2V0Q29va2llRm9yTm9uQXBwQm91bmREb21haW5GYWlscykKK3sKKyAgICBpbml0aWFsaXpl
SW5BcHBCcm93c2VyUHJpdmFjeVRlc3RTZXR0aW5ncygpOworICAgIFtbTlNVc2VyRGVmYXVsdHMg
c3RhbmRhcmRVc2VyRGVmYXVsdHNdIHNldEJvb2w6WUVTIGZvcktleTpAIldlYktpdERlYnVnSXNJ
bkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZCJdOworCisgICAgYXV0byBkYXRhU3RvcmUgPSBbV0tX
ZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVdOworICAgIGF1dG8gd2ViVmlldyA9IGFk
b3B0TlMoW1Rlc3RXS1dlYlZpZXcgbmV3XSk7CisgICAgW3dlYlZpZXcgbG9hZEhUTUxTdHJpbmc6
QCJPaCBoZWxsbyIgYmFzZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly93ZWJraXQu
b3JnIl1dOworICAgIFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsK
KworICAgIHNldFVwQ29va2llVGVzdCgpOworICAgIGdsb2JhbENvb2tpZVN0b3JlID0gW2RhdGFT
dG9yZSBodHRwQ29va2llU3RvcmVdOworCisgICAgTlNBcnJheTxOU0hUVFBDb29raWUgKj4gKmNv
b2tpZXMgPSBuaWw7CisKKyAgICAvLyBOb24gYXBwLWJvdW5kIGNvb2tpZS4KKyAgICBSZXRhaW5Q
dHI8TlNIVFRQQ29va2llPiBub25BcHBCb3VuZENvb2tpZSA9IFtOU0hUVFBDb29raWUgY29va2ll
V2l0aFByb3BlcnRpZXM6QHsKKyAgICAgICAgTlNIVFRQQ29va2llUGF0aDogQCIvIiwKKyAgICAg
ICAgTlNIVFRQQ29va2llTmFtZTogQCJub25BcHBCb3VuZE5hbWUiLAorICAgICAgICBOU0hUVFBD
b29raWVWYWx1ZTogQCJub25BcHBCb3VuZFZhbHVlIiwKKyAgICAgICAgTlNIVFRQQ29va2llRG9t
YWluOiBAIm5vbkFwcEJvdW5kRG9tYWluLmNvbSIsCisgICAgfV07CisKKyAgICAvLyBBcHAtYm91
bmQgY29va2llLgorICAgIFJldGFpblB0cjxOU0hUVFBDb29raWU+IGFwcEJvdW5kQ29va2llID0g
W05TSFRUUENvb2tpZSBjb29raWVXaXRoUHJvcGVydGllczpAeworICAgICAgICBOU0hUVFBDb29r
aWVQYXRoOiBAIi8iLAorICAgICAgICBOU0hUVFBDb29raWVOYW1lOiBAIndlYktpdE5hbWUiLAor
ICAgICAgICBOU0hUVFBDb29raWVWYWx1ZTogQCJ3ZWJLaXRWYWx1ZSIsCisgICAgICAgIE5TSFRU
UENvb2tpZURvbWFpbjogQCJ3d3cud2Via2l0Lm9yZyIsCisgICAgfV07CisKKyAgICBnb3RGbGFn
ID0gZmFsc2U7CisgICAgLy8gVGhpcyBzaG91bGQgbm90IGFjdHVhbGx5IHNldCBhIGNvb2tpZS4K
KyAgICBbZ2xvYmFsQ29va2llU3RvcmUgc2V0Q29va2llOm5vbkFwcEJvdW5kQ29va2llLmdldCgp
IGNvbXBsZXRpb25IYW5kbGVyOltdKCkgeworICAgICAgICBnb3RGbGFnID0gdHJ1ZTsKKyAgICB9
XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZ290RmxhZyk7CisgICAgZ290Rmxh
ZyA9IGZhbHNlOworCisgICAgLy8gVGhpcyBzaG91bGQgc3VjY2Vzc2Z1bGx5IHNldCBhIGNvb2tp
ZS4KKyAgICBbZ2xvYmFsQ29va2llU3RvcmUgc2V0Q29va2llOmFwcEJvdW5kQ29va2llLmdldCgp
IGNvbXBsZXRpb25IYW5kbGVyOltdKCkgeworICAgICAgICBnb3RGbGFnID0gdHJ1ZTsKKyAgICB9
XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZ290RmxhZyk7CisKKyAgICBjbGVh
blVwSW5BcHBCcm93c2VyUHJpdmFjeVRlc3RTZXR0aW5ncygpOworICAgIFtbTlNVc2VyRGVmYXVs
dHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIHNldEJvb2w6Tk8gZm9yS2V5OkAiV2ViS2l0RGVidWdJ
c0luQXBwQnJvd3NlclByaXZhY3lFbmFibGVkIl07CisgICAgZ290RmxhZyA9IGZhbHNlOworCisg
ICAgLy8gQ2hlY2sgdGhlIGNvb2tpZSBzdG9yZSB0byBtYWtlIHN1cmUgb25seSBvbmUgY29va2ll
IHdhcyBzZXQuCisgICAgW2dsb2JhbENvb2tpZVN0b3JlIGdldEFsbENvb2tpZXM6W2Nvb2tpZXNQ
dHIgPSAmY29va2llc10oTlNBcnJheTxOU0hUVFBDb29raWUgKj4gKm5zQ29va2llcykgeworICAg
ICAgICAqY29va2llc1B0ciA9IFtuc0Nvb2tpZXMgcmV0YWluXTsKKyAgICAgICAgZ290RmxhZyA9
IHRydWU7CisgICAgfV07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmdvdEZsYWcp
OworCisgICAgQVNTRVJUX0VRKGNvb2tpZXMuY291bnQsIDF1KTsKKworICAgIFtjb29raWVzIHJl
bGVhc2VdOworICAgIGdvdEZsYWcgPSBmYWxzZTsKKyAgICBbZ2xvYmFsQ29va2llU3RvcmUgZGVs
ZXRlQ29va2llOmFwcEJvdW5kQ29va2llLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOltdKCkgewor
ICAgICAgICBnb3RGbGFnID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0
aWw6OnJ1bigmZ290RmxhZyk7Cit9CisKK1RFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgR2V0Q29v
a2llRm9yTm9uQXBwQm91bmREb21haW5GYWlscykKK3sKKyAgICAvLyBTaW5jZSB3ZSBjYW4ndCBz
ZXQgbm9uLWFwcC1ib3VuZCBjb29raWVzIHdpdGggSW4tQXBwIEJyb3dzZXIgcHJpdmFjeSBwcm90
ZWN0aW9ucyBvbiwKKyAgICAvLyB3ZSBjYW4gdHVybiB0aGUgcHJvdGVjdGlvbnMgb2ZmIHRvIHNl
dCBhIGNvb2tpZSB3ZSB3aWxsIHRoZW4gdHJ5IHRvIGdldCB3aXRoIHByb3RlY3Rpb25zIGVuYWJs
ZWQuCisgICAgW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gc2V0Qm9vbDpO
TyBmb3JLZXk6QCJXZWJLaXREZWJ1Z0lzSW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQiXTsKKwor
ICAgIHNldFVwQ29va2llVGVzdCgpOworICAgIGdsb2JhbENvb2tpZVN0b3JlID0gW1tXS1dlYnNp
dGVEYXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV0gaHR0cENvb2tpZVN0b3JlXTsKKyAgICBOU0Fy
cmF5PE5TSFRUUENvb2tpZSAqPiAqY29va2llcyA9IG5pbDsKKworICAgIC8vIE5vbiBhcHAtYm91
bmQgY29va2llLgorICAgIFJldGFpblB0cjxOU0hUVFBDb29raWU+IG5vbkFwcEJvdW5kQ29va2ll
ID0gW05TSFRUUENvb2tpZSBjb29raWVXaXRoUHJvcGVydGllczpAeworICAgICAgICBOU0hUVFBD
b29raWVQYXRoOiBAIi8iLAorICAgICAgICBOU0hUVFBDb29raWVOYW1lOiBAIkNvb2tpZU5hbWUi
LAorICAgICAgICBOU0hUVFBDb29raWVWYWx1ZTogQCJDb29raWVWYWx1ZSIsCisgICAgICAgIE5T
SFRUUENvb2tpZURvbWFpbjogQCJub25BcHBCb3VuZERvbWFpbi5jb20iLAorICAgIH1dOworCisg
ICAgLy8gQXBwLWJvdW5kIGNvb2tpZS4KKyAgICBSZXRhaW5QdHI8TlNIVFRQQ29va2llPiBhcHBC
b3VuZENvb2tpZSA9IFtOU0hUVFBDb29raWUgY29va2llV2l0aFByb3BlcnRpZXM6QHsKKyAgICAg
ICAgTlNIVFRQQ29va2llUGF0aDogQCIvIiwKKyAgICAgICAgTlNIVFRQQ29va2llTmFtZTogQCJP
dGhlckNvb2tpZU5hbWUiLAorICAgICAgICBOU0hUVFBDb29raWVWYWx1ZTogQCJPdGhlckNvb2tp
ZVZhbHVlIiwKKyAgICAgICAgTlNIVFRQQ29va2llRG9tYWluOiBAInd3dy53ZWJraXQub3JnIiwK
KyAgICB9XTsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1Rlc3RXS1dlYlZpZXcgbmV3
XSk7CisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAic3RhcnQgbmV0
d29yayBwcm9jZXNzIl07CisKKyAgICAvLyBUaGlzIHNob3VsZCBzdWNjZXNzZnVsbHkgc2V0IGEg
Y29va2llIGJlY2F1c2UgcHJvdGVjdGlvbnMgYXJlIG9mZi4KKyAgICBbZ2xvYmFsQ29va2llU3Rv
cmUgc2V0Q29va2llOm5vbkFwcEJvdW5kQ29va2llLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOltd
KCkgeworICAgICAgICBnb3RGbGFnID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmZ290RmxhZyk7CisgICAgZ290RmxhZyA9IGZhbHNlOworCisgICAgW2ds
b2JhbENvb2tpZVN0b3JlIHNldENvb2tpZTphcHBCb3VuZENvb2tpZS5nZXQoKSBjb21wbGV0aW9u
SGFuZGxlcjpbXSgpIHsKKyAgICAgICAgZ290RmxhZyA9IHRydWU7CisgICAgfV07CisKKyAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmdvdEZsYWcpOworCisgICAgZ290RmxhZyA9IGZhbHNl
OworICAgIFtnbG9iYWxDb29raWVTdG9yZSBnZXRBbGxDb29raWVzOltjb29raWVzUHRyID0gJmNv
b2tpZXNdKE5TQXJyYXk8TlNIVFRQQ29va2llICo+ICpuc0Nvb2tpZXMpIHsKKyAgICAgICAgKmNv
b2tpZXNQdHIgPSBbbnNDb29raWVzIHJldGFpbl07CisgICAgICAgIGdvdEZsYWcgPSB0cnVlOwor
ICAgIH1dOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZnb3RGbGFnKTsKKworICAg
IC8vIENvbmZpcm0gYm90aCBjb29raWVzIGFyZSBpbiB0aGUgc3RvcmUuCisgICAgQVNTRVJUX0VR
KGNvb2tpZXMuY291bnQsIDJ1KTsKKworICAgIC8vIE5vdyBlbmFibGUgcHJvdGVjdGlvbnMgYW5k
IGVuc3VyZSB3ZSBjYW4gb25seSByZXRyaWV2ZSB0aGUgYXBwLWJvdW5kIGNvb2tpZXMuCisgICAg
W1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gc2V0Qm9vbDpZRVMgZm9yS2V5
OkAiV2ViS2l0RGVidWdJc0luQXBwQnJvd3NlclByaXZhY3lFbmFibGVkIl07CisgICAgaW5pdGlh
bGl6ZUluQXBwQnJvd3NlclByaXZhY3lUZXN0U2V0dGluZ3MoKTsKKworICAgIGdvdEZsYWcgPSBm
YWxzZTsKKyAgICBbZ2xvYmFsQ29va2llU3RvcmUgZ2V0QWxsQ29va2llczpbY29va2llc1B0ciA9
ICZjb29raWVzXShOU0FycmF5PE5TSFRUUENvb2tpZSAqPiAqbnNDb29raWVzKSB7CisgICAgICAg
ICpjb29raWVzUHRyID0gW25zQ29va2llcyByZXRhaW5dOworICAgICAgICBnb3RGbGFnID0gdHJ1
ZTsKKyAgICB9XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZ290RmxhZyk7CisK
KyAgICBBU1NFUlRfRVEoY29va2llcy5jb3VudCwgMXUpOworCisgICAgW2Nvb2tpZXMgcmVsZWFz
ZV07CisKKyAgICBnb3RGbGFnID0gZmFsc2U7CisgICAgW2dsb2JhbENvb2tpZVN0b3JlIGRlbGV0
ZUNvb2tpZTpub25BcHBCb3VuZENvb2tpZS5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpbXSgpIHsK
KyAgICAgICAgZ290RmxhZyA9IHRydWU7CisgICAgfV07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpV
dGlsOjpydW4oJmdvdEZsYWcpOworCisgICAgZ290RmxhZyA9IGZhbHNlOworICAgIFtnbG9iYWxD
b29raWVTdG9yZSBkZWxldGVDb29raWU6YXBwQm91bmRDb29raWUuZ2V0KCkgY29tcGxldGlvbkhh
bmRsZXI6W10oKSB7CisgICAgICAgIC8vIFJlc2V0IGZsYWcuCisgICAgICAgIFtbTlNVc2VyRGVm
YXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIHNldEJvb2w6Tk8gZm9yS2V5OkAiV2ViS2l0RGVi
dWdJc0luQXBwQnJvd3NlclByaXZhY3lFbmFibGVkIl07CisgICAgICAgIGNsZWFuVXBJbkFwcEJy
b3dzZXJQcml2YWN5VGVzdFNldHRpbmdzKCk7CisgICAgICAgIGdvdEZsYWcgPSB0cnVlOworICAg
IH1dOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZnb3RGbGFnKTsKK30KKworVEVT
VChJbkFwcEJyb3dzZXJQcml2YWN5LCBHZXRDb29raWVGb3JVUkxGYWlscykKK3sKKyAgICAvLyBT
aW5jZSB3ZSBjYW4ndCBzZXQgbm9uLWFwcC1ib3VuZCBjb29raWVzIHdpdGggSW4tQXBwIEJyb3dz
ZXIgcHJpdmFjeSBwcm90ZWN0aW9ucyBvbiwKKyAgICAvLyB3ZSBjYW4gdHVybiB0aGUgcHJvdGVj
dGlvbnMgb2ZmIHRvIHNldCBhIGNvb2tpZSB3ZSB3aWxsIHRoZW4gdHJ5IHRvIGdldCB3aXRoIHBy
b3RlY3Rpb25zIGVuYWJsZWQuCisgICAgW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZh
dWx0c10gc2V0Qm9vbDpOTyBmb3JLZXk6QCJXZWJLaXREZWJ1Z0lzSW5BcHBCcm93c2VyUHJpdmFj
eUVuYWJsZWQiXTsKKyAgICBzZXRVcENvb2tpZVRlc3QoKTsKKworICAgIGdsb2JhbENvb2tpZVN0
b3JlID0gW1tXS1dlYnNpdGVEYXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV0gaHR0cENvb2tpZVN0
b3JlXTsKKyAgICBOU0hUVFBDb29raWUgKm5vbkFwcEJvdW5kQ29va2llID0gW05TSFRUUENvb2tp
ZSBjb29raWVXaXRoUHJvcGVydGllczpAeworICAgICAgICBOU0hUVFBDb29raWVQYXRoOiBAIi8i
LAorICAgICAgICBOU0hUVFBDb29raWVOYW1lOiBAIm5vbkFwcEJvdW5kTmFtZSIsCisgICAgICAg
IE5TSFRUUENvb2tpZVZhbHVlOiBAIm5vbkFwcEJvdW5kVmFsdWUiLAorICAgICAgICBOU0hUVFBD
b29raWVEb21haW46IEAibm9uQXBwQm91bmREb21haW4uY29tIiwKKyAgICB9XTsKKyAgICAKKyAg
ICBOU0hUVFBDb29raWUgKmFwcEJvdW5kQ29va2llID0gW05TSFRUUENvb2tpZSBjb29raWVXaXRo
UHJvcGVydGllczpAeworICAgICAgICBOU0hUVFBDb29raWVQYXRoOiBAIi8iLAorICAgICAgICBO
U0hUVFBDb29raWVOYW1lOiBAIndlYktpdE5hbWUiLAorICAgICAgICBOU0hUVFBDb29raWVWYWx1
ZTogQCJ3ZWJLaXRWYWx1ZSIsCisgICAgICAgIE5TSFRUUENvb2tpZURvbWFpbjogQCJ3ZWJraXQu
b3JnIiwKKyAgICB9XTsKKworICAgIF9fYmxvY2sgYm9vbCBkb25lID0gZmFsc2U7CisgICAgYXV0
byB3ZWJWaWV3ID0gYWRvcHROUyhbVGVzdFdLV2ViVmlldyBuZXddKTsKKyAgICBbd2ViVmlldyBz
eW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCJzdGFydCBuZXR3b3JrIHByb2Nlc3MiXTsKKyAg
ICBbZ2xvYmFsQ29va2llU3RvcmUgc2V0Q29va2llOm5vbkFwcEJvdW5kQ29va2llIGNvbXBsZXRp
b25IYW5kbGVyOl57CisgICAgICAgIFtnbG9iYWxDb29raWVTdG9yZSBzZXRDb29raWU6YXBwQm91
bmRDb29raWUgY29tcGxldGlvbkhhbmRsZXI6XnsKKworICAgICAgICAgICAgLy8gTm93IGVuYWJs
ZSBwcm90ZWN0aW9ucyBhbmQgZW5zdXJlIHdlIGNhbiBvbmx5IHJldHJpZXZlIHRoZSBhcHAtYm91
bmQgY29va2llcy4KKyAgICAgICAgICAgIFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVm
YXVsdHNdIHNldEJvb2w6WUVTIGZvcktleTpAIldlYktpdERlYnVnSXNJbkFwcEJyb3dzZXJQcml2
YWN5RW5hYmxlZCJdOworICAgICAgICAgICAgaW5pdGlhbGl6ZUluQXBwQnJvd3NlclByaXZhY3lU
ZXN0U2V0dGluZ3MoKTsKKworICAgICAgICAgICAgW2dsb2JhbENvb2tpZVN0b3JlIF9nZXRDb29r
aWVzRm9yVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cHM6Ly93ZWJraXQub3JnLyJdIGNv
bXBsZXRpb25IYW5kbGVyOl4oTlNBcnJheTxOU0hUVFBDb29raWUgKj4gKmNvb2tpZXMpIHsKKyAg
ICAgICAgICAgICAgICBFWFBFQ1RfRVEoY29va2llcy5jb3VudCwgMXVsbCk7CisgICAgICAgICAg
ICAgICAgRVhQRUNUX1dLX1NUUkVRKGNvb2tpZXNbMF0ubmFtZSwgIndlYktpdE5hbWUiKTsKKyAg
ICAgICAgICAgICAgICBbZ2xvYmFsQ29va2llU3RvcmUgX2dldENvb2tpZXNGb3JVUkw6W05TVVJM
IFVSTFdpdGhTdHJpbmc6QCJodHRwczovL25vbkFwcEJvdW5kRG9tYWluLmNvbS8iXSBjb21wbGV0
aW9uSGFuZGxlcjpeKE5TQXJyYXk8TlNIVFRQQ29va2llICo+ICpjb29raWVzKSB7CisgICAgICAg
ICAgICAgICAgICAgIEVYUEVDVF9FUShjb29raWVzLmNvdW50LCAwdSk7CisgICAgICAgICAgICAg
ICAgICAgIFtnbG9iYWxDb29raWVTdG9yZSBkZWxldGVDb29raWU6bm9uQXBwQm91bmRDb29raWUg
Y29tcGxldGlvbkhhbmRsZXI6XnsKKyAgICAgICAgICAgICAgICAgICAgICAgIFtnbG9iYWxDb29r
aWVTdG9yZSBkZWxldGVDb29raWU6YXBwQm91bmRDb29raWUgY29tcGxldGlvbkhhbmRsZXI6XnsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNl
ckRlZmF1bHRzXSBzZXRCb29sOk5PIGZvcktleTpAIldlYktpdERlYnVnSXNJbkFwcEJyb3dzZXJQ
cml2YWN5RW5hYmxlZCJdOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFuVXBJbkFw
cEJyb3dzZXJQcml2YWN5VGVzdFNldHRpbmdzKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZG9uZSA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICB9XTsKKyAgICAgICAgICAg
ICAgICAgICAgfV07CisgICAgICAgICAgICAgICAgfV07CisgICAgICAgICAgICB9XTsKKyAgICAg
ICAgfV07CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKIH0K
IAogI2VuZGlmIC8vIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395318</attachid>
            <date>2020-04-02 16:20:15 -0700</date>
            <delta_ts>2020-04-03 16:17:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209926-20200402162015.patch</filename>
            <type>text/plain</type>
            <size>27572</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5NDIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGFhZTY3ZTI5YWIwNWZkNmE4
M2IyMGIyMjRkZDBlYTQ3MTg1YWMyYWYuLjZlOGNlYzUxM2U0YWQ4YjZhYmY5ZDM1NmU0NzVkOGUz
MjY4NGRkNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMjAtMDQtMDIgIEthdGUgQ2hl
bmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgUHJldmVudCBub24g
YXBwLWJvdW5kIGRvbWFpbiBjb29raWVzIGZyb20gYmVpbmcgcmVhZCBvciBzZXQgdXNpbmcgQVBJ
IGNhbGxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDk5MjYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYxMDcxNDI4PgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggZmlsdGVycyBvdXQg
c2V0dGluZyBhbmQgZmV0Y2hpbmcgb2YgY29va2llcyB2aWEgQVBJIGNhbGwgCisgICAgICAgIHRv
IG9ubHkgc2V0IG9yIHJldHVybiBhcHAtYm91bmQgY29va2llcy4KKworICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmNwcDoKKyAgICAgICAgKEFQSTo6SFRUUENvb2tp
ZVN0b3JlOjpmaWx0ZXJBcHBCb3VuZENvb2tpZXMpOgorICAgICAgICBUaGlzIGZ1bmN0aW9uIHF1
ZXJpZXMgdGhlIHdlYnNpdGVEYXRhU3RvcmUgZm9yIHRoZSBXS0FwcEJvdW5kRG9tYWlucworICAg
ICAgICBlbnRyaWVzIGFuZCBmaWx0ZXJzIG91dCBub24gYXBwLWJvdW5kIGRvbWFpbnMuCisKKyAg
ICAgICAgKEFQSTo6SFRUUENvb2tpZVN0b3JlOjpjb29raWVzKToKKyAgICAgICAgKEFQSTo6SFRU
UENvb2tpZVN0b3JlOjpjb29raWVzRm9yVVJMKToKKyAgICAgICAgKEFQSTo6SFRUUENvb2tpZVN0
b3JlOjpzZXRDb29raWVzKToKKyAgICAgICAgVGhlc2UgZnVuY3Rpb25zIHdlcmUgdXBkYXRlZCB0
byBzZXQvcmV0dXJuIHRoZSBjb29raWVzIGFmdGVyIHRoZXkndmUKKyAgICAgICAgYmVlbiBmaWx0
ZXJlZCB0aHJvdWdoIHRoZSBXS0FwcEJvdW5kRG9tYWlucy4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYnNpdGVEYXRhU3RvcmUubW06CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBf
YXBwQm91bmREb21haW5zOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2Nv
YS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRh
U3RvcmU6OmdldEFwcEJvdW5kRG9tYWlucyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYnNp
dGVEYXRhU3RvcmU6OmFwcEJvdW5kRG9tYWluc0ZvclRlc3RpbmcgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICBVdGlsaXplIGEgZnVuY3Rpb24gZm9ybWVybHkgdXNlZCBmb3IgdGVzdGluZyBvbmx5
IHRvIGJlIHVzZWQgaW4gdGhlCisgICAgICAgIEhUVFBDb29raWVTdG9yZS4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmg6CisKIDIwMjAtMDQtMDIg
IERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWJQYWdlUHJv
eHkgYXR0YWNobWVudCBtZXRob2RzIHNob3VsZCByZXR1cm4gZWFybHkgaWYgYXR0YWNobWVudCBl
bGVtZW50IGlzIG5vdCBlbmFibGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElIVFRQQ29va2llU3RvcmUuY3BwCmluZGV4IGI0MTZiZTNlMGU1MGVhNTgzMTI2OTFiY2Ji
ZDM2YmU5NjU1MWNlMzUuLjliOThhMGE1YzM3YjU1ZDAwYzJmYjZlZmNjMzgwMmUwYTc3OTFjMjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3Rv
cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3Rv
cmUuY3BwCkBAIC0yOSwxMSArMjksMTkgQEAKICNpbmNsdWRlICJXZWJDb29raWVNYW5hZ2VyUHJv
eHkuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRh
U3RvcmUuaCIKKyNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5oIgogI2luY2x1
ZGUgPFdlYkNvcmUvQ29va2llLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Db29raWVTdG9yYWdlLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9IVFRQQ29va2llQWNjZXB0UG9saWN5Lmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaD4KIAorI2lmIFVTRShBUFBMRV9JTlRFUk5B
TF9TREspCisjaW5jbHVkZSA8V2ViS2l0QWRkaXRpb25zL0hUVFBDb29raWVTdG9yZUFkZGl0aW9u
cy5oPgorI2Vsc2UKKyNkZWZpbmUgSFRUUF9DT09LSUVfU1RPUkVfQURESVRJT05TXzEgZmFsc2UK
KyNkZWZpbmUgSFRUUF9DT09LSUVfU1RPUkVfQURESVRJT05TXzIKKyNlbmRpZgorCiB1c2luZyBu
YW1lc3BhY2UgV2ViS2l0OwogCiBuYW1lc3BhY2UgQVBJIHsKQEAgLTU0LDYgKzYyLDI3IEBAIEhU
VFBDb29raWVTdG9yZTo6fkhUVFBDb29raWVTdG9yZSgpCiAgICAgdW5yZWdpc3RlckZvck5ld1By
b2Nlc3NQb29sTm90aWZpY2F0aW9ucygpOwogfQogCit2b2lkIEhUVFBDb29raWVTdG9yZTo6Zmls
dGVyQXBwQm91bmRDb29raWVzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiBjb29raWVz
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiYpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQoreworICAgIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+IGFwcEJvdW5k
Q29va2llczsKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgIG1fb3duaW5nRGF0YVN0b3Jl
LT5nZXRBcHBCb3VuZERvbWFpbnMoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KSwgY29va2llcywgYXBwQm91bmRDb29raWVzID0gV1RGTW92ZShhcHBCb3VuZENvb2tpZXMpLCBj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoYXV0byYgZG9t
YWlucykgbXV0YWJsZSB7CisgICAgICAgIGlmIChtX293bmluZ0RhdGFTdG9yZS0+cGFyYW1ldGVy
cygpLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5pc0luQXBwQnJvd3NlclByaXZhY3lFbmFibGVk
IHx8IEhUVFBfQ09PS0lFX1NUT1JFX0FERElUSU9OU18xKSB7CisgICAgICAgICAgICBIVFRQX0NP
T0tJRV9TVE9SRV9BRERJVElPTlNfMgorICAgICAgICAgICAgZm9yIChhdXRvJiBjb29raWUgOiBj
b29raWVzKSB7CisgICAgICAgICAgICAgICAgaWYgKGRvbWFpbnMuY29udGFpbnMoV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21Ib3N0KGNvb2tpZS5kb21haW4p
KSkKKyAgICAgICAgICAgICAgICAgICAgYXBwQm91bmRDb29raWVzLmFwcGVuZChjb29raWUpOwor
ICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGFwcEJvdW5kQ29va2ll
cyA9IGNvb2tpZXM7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoYXBwQm91bmRD
b29raWVzKSk7CisgICAgfSk7CisjZWxzZQorICAgIGFwcEJvdW5kQ29va2llcyA9IGNvb2tpZXM7
CisgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShhcHBCb3VuZENvb2tpZXMpKTsKKyNlbmRp
ZgorfQorCiB2b2lkIEhUVFBDb29raWVTdG9yZTo6Y29va2llcyhDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jik+JiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7CiAgICAgYXV0byogcG9vbCA9IG1fb3duaW5nRGF0YVN0b3JlLT5wcm9jZXNzUG9vbEZvckNv
b2tpZVN0b3JhZ2VPcGVyYXRpb25zKCk7CkBAIC02MywxNSArOTIsMTUgQEAgdm9pZCBIVFRQQ29v
a2llU3RvcmU6OmNvb2tpZXMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBWZWN0b3I8V2Vi
Q29yZTo6Q29va2kKICAgICAgICAgICAgIGFsbENvb2tpZXMgPSBnZXRBbGxEZWZhdWx0VUlQcm9j
ZXNzQ29va2llU3RvcmVDb29raWVzKCk7CiAgICAgICAgIGFsbENvb2tpZXMuYXBwZW5kVmVjdG9y
KG1fb3duaW5nRGF0YVN0b3JlLT5wZW5kaW5nQ29va2llcygpKTsKIAotICAgICAgICBSdW5Mb29w
OjptYWluKCkuZGlzcGF0Y2goW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlciksIGFsbENvb2tpZXNdICgpIG11dGFibGUgewotICAgICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoYWxsQ29va2llcyk7CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBhbGxDb29raWVzXSAoKSBtdXRhYmxlIHsKKyAg
ICAgICAgICAgIGZpbHRlckFwcEJvdW5kQ29va2llcyhhbGxDb29raWVzLCBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAg
ICAgYXV0byogY29va2llTWFuYWdlciA9IHBvb2wtPnN1cHBsZW1lbnQ8V2ViS2l0OjpXZWJDb29r
aWVNYW5hZ2VyUHJveHk+KCk7Ci0gICAgY29va2llTWFuYWdlci0+Z2V0QWxsQ29va2llcyhtX293
bmluZ0RhdGFTdG9yZS0+c2Vzc2lvbklEKCksIFtwb29sID0gV1RGTW92ZShwb29sKSwgY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKGNvbnN0IFZlY3RvcjxX
ZWJDb3JlOjpDb29raWU+JiBjb29raWVzKSBtdXRhYmxlIHsKLSAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoY29va2llcyk7CisgICAgY29va2llTWFuYWdlci0+Z2V0QWxsQ29va2llcyhtX293bmlu
Z0RhdGFTdG9yZS0+c2Vzc2lvbklEKCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyksIHBvb2wgPSBXVEZNb3ZlKHBvb2wpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXSAoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mIGNvb2tp
ZXMpIG11dGFibGUgeworICAgICAgICBmaWx0ZXJBcHBCb3VuZENvb2tpZXMoY29va2llcywgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgIH0pOwogfQogCkBAIC04MiwzMCArMTExLDMy
IEBAIHZvaWQgSFRUUENvb2tpZVN0b3JlOjpjb29raWVzRm9yVVJMKFdURjo6VVJMJiYgdXJsLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFu
ZGxlcih7IH0pOwogCiAgICAgYXV0byogY29va2llTWFuYWdlciA9IHBvb2wtPnN1cHBsZW1lbnQ8
V2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk+KCk7Ci0gICAgY29va2llTWFuYWdlci0+Z2V0
Q29va2llcyhtX293bmluZ0RhdGFTdG9yZS0+c2Vzc2lvbklEKCksIHVybCwgW2NvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChWZWN0b3I8V2ViQ29yZTo6Q29v
a2llPiYmIGNvb2tpZXMpIG11dGFibGUgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZN
b3ZlKGNvb2tpZXMpKTsKKyAgICBjb29raWVNYW5hZ2VyLT5nZXRDb29raWVzKG1fb3duaW5nRGF0
YVN0b3JlLT5zZXNzaW9uSUQoKSwgdXJsLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYo
KnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAo
VmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mJiBjb29raWVzKSBtdXRhYmxlIHsKKyAgICAgICAgZmls
dGVyQXBwQm91bmRDb29raWVzKGNvb2tpZXMsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
ICAgICB9KTsKIH0KIAogdm9pZCBIVFRQQ29va2llU3RvcmU6OnNldENvb2tpZXMoY29uc3QgVmVj
dG9yPFdlYkNvcmU6OkNvb2tpZT4mIGNvb2tpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBhdXRvKiBwb29sID0gbV9vd25pbmdEYXRhU3Rv
cmUtPnByb2Nlc3NQb29sRm9yQ29va2llU3RvcmFnZU9wZXJhdGlvbnMoKTsKLSAgICBpZiAoIXBv
b2wpIHsKLSAgICAgICAgZm9yIChhdXRvJiBjb29raWUgOiBjb29raWVzKSB7Ci0gICAgICAgICAg
ICAvLyBGSVhNRTogcGVuZGluZ0Nvb2tpZXMgdXNlZCBmb3IgZGVmYXVsdFNlc3Npb24gYmVjYXVz
ZSBzZXNzaW9uIGNvb2tpZXMgY2Fubm90IGJlIHByb3BhZ2F0ZWQgdG8gTmV0d29yayBQcm9jZXNz
IHdpdGggdWlQcm9jZXNzQ29va2llU3RvcmFnZUlkZW50aWZpZXIuCi0gICAgICAgICAgICBpZiAo
bV9vd25pbmdEYXRhU3RvcmUtPnNlc3Npb25JRCgpID09IFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0
U2Vzc2lvbklEKCkgJiYgIWNvb2tpZS5zZXNzaW9uKQotICAgICAgICAgICAgICAgIHNldENvb2tp
ZUluRGVmYXVsdFVJUHJvY2Vzc0Nvb2tpZVN0b3JlKGNvb2tpZSk7Ci0gICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICAgICAgbV9vd25pbmdEYXRhU3RvcmUtPmFkZFBlbmRpbmdDb29raWUoY29v
a2llKTsKKyAgICBmaWx0ZXJBcHBCb3VuZENvb2tpZXMoY29va2llcywgW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0gKGF1dG8mJiBhcHBCb3VuZENvb2tpZXMpIG11dGFibGUgeworICAgICAg
ICBhdXRvKiBwb29sID0gbV9vd25pbmdEYXRhU3RvcmUtPnByb2Nlc3NQb29sRm9yQ29va2llU3Rv
cmFnZU9wZXJhdGlvbnMoKTsKKyAgICAgICAgaWYgKCFwb29sKSB7CisgICAgICAgICAgICBmb3Ig
KGF1dG8mIGNvb2tpZSA6IGFwcEJvdW5kQ29va2llcykgeworICAgICAgICAgICAgICAgIC8vIEZJ
WE1FOiBwZW5kaW5nQ29va2llcyB1c2VkIGZvciBkZWZhdWx0U2Vzc2lvbiBiZWNhdXNlIHNlc3Np
b24gY29va2llcyBjYW5ub3QgYmUgcHJvcGFnYXRlZCB0byBOZXR3b3JrIFByb2Nlc3Mgd2l0aCB1
aVByb2Nlc3NDb29raWVTdG9yYWdlSWRlbnRpZmllci4KKyAgICAgICAgICAgICAgICBpZiAobV9v
d25pbmdEYXRhU3RvcmUtPnNlc3Npb25JRCgpID09IFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vz
c2lvbklEKCkgJiYgIWNvb2tpZS5zZXNzaW9uKQorICAgICAgICAgICAgICAgICAgICBzZXRDb29r
aWVJbkRlZmF1bHRVSVByb2Nlc3NDb29raWVTdG9yZShjb29raWUpOworICAgICAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgbV9vd25pbmdEYXRhU3RvcmUtPmFkZFBlbmRpbmdD
b29raWUoY29va2llKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgUnVuTG9vcDo6bWFp
bigpLmRpc3BhdGNoKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogCi0gICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBh
dXRvKiBjb29raWVNYW5hZ2VyID0gcG9vbC0+c3VwcGxlbWVudDxXZWJLaXQ6OldlYkNvb2tpZU1h
bmFnZXJQcm94eT4oKTsKLSAgICBjb29raWVNYW5hZ2VyLT5zZXRDb29raWVzKG1fb3duaW5nRGF0
YVN0b3JlLT5zZXNzaW9uSUQoKSwgY29va2llcywgW3Bvb2wgPSBXVEZNb3ZlKHBvb2wpLCBjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsK
LSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAgYXV0byogY29va2llTWFuYWdl
ciA9IHBvb2wtPnN1cHBsZW1lbnQ8V2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk+KCk7Cisg
ICAgICAgIGNvb2tpZU1hbmFnZXItPnNldENvb2tpZXMobV9vd25pbmdEYXRhU3RvcmUtPnNlc3Np
b25JRCgpLCBhcHBCb3VuZENvb2tpZXMsIFtwb29sID0gV1RGTW92ZShwb29sKSwgY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7CisgICAg
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgICAgICB9KTsKICAgICB9KTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9y
ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yZS5oCmlu
ZGV4IDRkYjc1YjM1ZjkzYmM3NjM3YzE5YzRmM2ZlMmE1YzhiMTNkOWEwMGEuLjYxZGZmMmM0YmYx
ODE2OTMzZDYwMjc1NDE3NjlkOGU0MDIwOTc4ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmgKQEAgLTc3LDYgKzc3LDggQEAgcHVibGlj
OgogICAgIHZvaWQgY29va2llc0RpZENoYW5nZSgpOwogICAgIHZvaWQgY29va2llTWFuYWdlckRl
c3Ryb3llZCgpOwogCisgICAgdm9pZCBmaWx0ZXJBcHBCb3VuZENvb2tpZXMoY29uc3QgVmVjdG9y
PFdlYkNvcmU6OkNvb2tpZT4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3Jl
OjpDb29raWU+JiYpPiYmKTsKKwogcHJpdmF0ZToKICAgICBIVFRQQ29va2llU3RvcmUoV2ViS2l0
OjpXZWJzaXRlRGF0YVN0b3JlJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCmluZGV4IDZlNTc4ZTAzZGUyMzIw
NDAxNTkzOTFlNTNhZDUyMDQ3MGJhYmIwNTcuLmE0OGUxYjYyMDI2Yjc3MTMyZGY0Zjc5OTAyN2I3
N2M1NmE5MWNmY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQpAQCAtNjEzLDcgKzYxMyw3IEBAIC0gKF9XS1dl
YnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uICopX2NvbmZpZ3VyYXRpb24KIAogLSAodm9pZClf
YXBwQm91bmREb21haW5zOih2b2lkICheKShOU0FycmF5PE5TU3RyaW5nICo+ICopKWNvbXBsZXRp
b25IYW5kbGVyCiB7Ci0gICAgX3dlYnNpdGVEYXRhU3RvcmUtPmFwcEJvdW5kRG9tYWluc0ZvclRl
c3RpbmcoW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVy
KV0oYXV0byYgZG9tYWlucykgbXV0YWJsZSB7CisgICAgX3dlYnNpdGVEYXRhU3RvcmUtPmdldEFw
cEJvdW5kRG9tYWlucyhbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlv
bkhhbmRsZXIpXShhdXRvJiBkb21haW5zKSBtdXRhYmxlIHsKICAgICAgICAgVmVjdG9yPFJlZlB0
cjxBUEk6Ok9iamVjdD4+IGFwaURvbWFpbnM7CiAgICAgICAgIGFwaURvbWFpbnMucmVzZXJ2ZUlu
aXRpYWxDYXBhY2l0eShkb21haW5zLnNpemUoKSk7CiAgICAgICAgIGZvciAoYXV0byYgZG9tYWlu
IDogZG9tYWlucykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVE
YXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQppbmRleCBhNzBi
N2Q1MDkxNWU0NzdmOTgzNDBiZWU3NDk2Y2IyYzA2Nzk5OGRhLi4yMmM5OGVmMmJjZjc1OGZhYWRl
MTM3NTI0NmEwODdlYTA2NDI1NDJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29h
Lm1tCkBAIC00NjYsOCArNDY2LDEwIEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6YmVnaW5BcHBC
b3VuZERvbWFpbkNoZWNrKGNvbnN0IFVSTCYgcmVxdWVzdFVSTCwgV2ViRnJhbWVQCiAgICAgfSk7
CiB9CiAKLXZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6YXBwQm91bmREb21haW5zRm9yVGVzdGluZyhD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4+Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0Cit2b2lkIFdlYnNpdGVEYXRhU3Rv
cmU6OmdldEFwcEJvdW5kRG9tYWlucyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEhhc2hT
ZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpIGNv
bnN0CiB7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKwogICAgIGVuc3VyZUFwcEJv
dW5kRG9tYWlucyhbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KV0gKGF1dG8mIGRvbWFpbnMpIG11dGFibGUgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihk
b21haW5zKTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAppbmRleCA1NTVkMzU2MGU1NTQ0ZWRmNWUwOGZj
Zjc5ZTJiMjc0ZTA3MDlhMGQ3Li5lODQyMzEzMjU2YmEzMWJkZDhhNzUwY2E1NWIzM2FiZGFiMmMw
MDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YVN0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFTdG9yZS5oCkBAIC0yODcsNyArMjg3LDcgQEAgcHVibGljOgogICAgIHZvaWQg
c2V0SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQoYm9vbCBlbmFibGVkLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOwogCiAgICAgdm9pZCBiZWdpbkFwcEJvdW5kRG9tYWluQ2hlY2soY29u
c3QgVVJMJiwgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5Jik7Ci0gICAgdm9pZCBhcHBCb3Vu
ZERvbWFpbnNGb3JUZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSGFzaFNldDxX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4mKT4mJikgY29uc3Q7CisgICAgdm9pZCBnZXRBcHBC
b3VuZERvbWFpbnMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBIYXNoU2V0PFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluPiYpPiYmKSBjb25zdDsKICAgICB2b2lkIGVuc3VyZUFwcEJvdW5k
RG9tYWlucyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEhhc2hTZXQ8V2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4+Jik+JiYpIGNvbnN0OwogICAgIHZvaWQgcmVpbml0aWFsaXplQXBwQm91
bmREb21haW5zKCk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5n
ZUxvZwppbmRleCAzYWU4ZDRhOWYzMGM0YzEwYWFkMmYwNjk4ZDIyNDZiNzhkNmE0NzVkLi45YWVj
NGQwYjgxNjVjYWViNjA0YWMwMzliMjg4YzQyNWU4OTUyMGQ4IDEwMDY0NAotLS0gYS9Ub29scy9D
aGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjAtMDQt
MDIgIEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAg
UHJldmVudCBub24gYXBwLWJvdW5kIGRvbWFpbiBjb29raWVzIGZyb20gYmVpbmcgcmVhZCBvciBz
ZXQgdXNpbmcgQVBJIGNhbGxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMDk5MjYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYxMDcxNDI4PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIDMgbmV3
IEFQSSB0ZXN0cyB0byB0ZXN0IHRoYXQgbm9uIGFwcC1ib3VuZCBjb29raWVzIGFyZSBub3QgYmVp
bmcKKyAgICAgICAgc2V0IG9yIHJldHVybmVkIHZpYSBBUEkgY2FsbHMuIEFsc28gYWRkZWQgYSBm
dW5jdGlvbiB0byByZXNldCBzdGF0ZQorICAgICAgICBiZXR3ZWVuIHRlc3RzIGZvciBpbnRlcm5h
bCBkZWJ1Z2dpbmcuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L0luQXBwQnJvd3NlclByaXZhY3kubW06CisgICAgICAgIChzZXRVcENvb2tpZVRlc3QpOgorICAg
ICAgICAoVEVTVCk6CisKIDIwMjAtMDQtMDIgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxl
LmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMjM0Njg1KTogTGVhayBvZiBDQUxheWVyIGlu
IGNyZWF0ZUNvcmVBbmltYXRpb25MYXllcigpIGluIFBsdWdpbk9iamVjdE1hYy5tbQpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQ
cml2YWN5Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJy
b3dzZXJQcml2YWN5Lm1tCmluZGV4IGEwOWRlMzE0NWQ2MWRmMTgyY2I4NmI0MzVhNmZhYzdjZTA1
Yjc3NjIuLjc2M2JkYjhjYTg0MDhiNWYwMDA2YTEyM2EwMzA0MDgzZmVlZTg5NzcgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJp
dmFjeS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBw
QnJvd3NlclByaXZhY3kubW0KQEAgLTMxLDYgKzMxLDcgQEAKICNpbXBvcnQgIldLV2ViVmlld0Nv
bmZpZ3VyYXRpb25FeHRyYXMuaCIKICNpbXBvcnQgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21haW4u
aD4KICNpbXBvcnQgPFdlYkNvcmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmg+CisjaW1wb3J0
IDxXZWJLaXQvV0tIVFRQQ29va2llU3RvcmVQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tQ
cmVmZXJlbmNlc1ByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1VzZXJDb250ZW50Q29udHJv
bGxlclByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRl
Lmg+CkBAIC03OCw2ICs3OSwxMSBAQCAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZp
ZXcgc3RvcFVSTFNjaGVtZVRhc2s6KGlkIDxXS1VSTFNjaGVtZVRhc2s+KXRhcwogCiBAZW5kCiAK
K3N0YXRpYyB2b2lkIGNsZWFuVXBJbkFwcEJyb3dzZXJQcml2YWN5VGVzdFNldHRpbmdzKCkKK3sK
KyAgICBJTl9BUFBfQlJPV1NFUl9QUklWQUNZX0FERElUSU9OU18yCit9CisKIHN0YXRpYyB2b2lk
IGluaXRpYWxpemVJbkFwcEJyb3dzZXJQcml2YWN5VGVzdFNldHRpbmdzKCkKIHsKICAgICBSdW5M
b29wOjppbml0aWFsaXplTWFpblJ1bkxvb3AoKTsKQEAgLTExOSw2ICsxMjUsNyBAQCBURVNUKElu
QXBwQnJvd3NlclByaXZhY3ksIE5vbkFwcEJvdW5kRG9tYWluRmFpbGVkVXNlclNjcmlwdEF0U3Rh
cnQpCiAgICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OkAid2luZG93LndrVXNlclNjcmlw
dEluamVjdGVkIiBjb21wbGV0aW9uSGFuZGxlcjpeKGlkIF9OdWxsYWJsZSByZXN1bHQsIE5TRXJy
b3IgKiBfTnVsbGFibGUgZXJyb3IpIHsKICAgICAgICAgRVhQRUNUX0VRKE5PLCBbcmVzdWx0IGJv
b2xWYWx1ZV0pOwogICAgICAgICBFWFBFQ1RfRkFMU0UoISFlcnJvcik7CisgICAgICAgIGNsZWFu
VXBJbkFwcEJyb3dzZXJQcml2YWN5VGVzdFNldHRpbmdzKCk7CiAgICAgICAgIGlzRG9uZSA9IHRy
dWU7CiAgICAgfV07CiAKQEAgLTE2MCw2ICsxNjcsNyBAQCBURVNUKEluQXBwQnJvd3NlclByaXZh
Y3ksIE5vbkFwcEJvdW5kRG9tYWluRmFpbGVkVXNlclNjcmlwdEF0RW5kKQogICAgIFt3ZWJWaWV3
IGV2YWx1YXRlSmF2YVNjcmlwdDpAIndpbmRvdy53a1VzZXJTY3JpcHRJbmplY3RlZCIgY29tcGxl
dGlvbkhhbmRsZXI6XihpZCBfTnVsbGFibGUgcmVzdWx0LCBOU0Vycm9yICogX051bGxhYmxlIGVy
cm9yKSB7CiAgICAgICAgIEVYUEVDVF9FUShOTywgW3Jlc3VsdCBib29sVmFsdWVdKTsKICAgICAg
ICAgRVhQRUNUX0ZBTFNFKCEhZXJyb3IpOworICAgICAgICBjbGVhblVwSW5BcHBCcm93c2VyUHJp
dmFjeVRlc3RTZXR0aW5ncygpOwogICAgICAgICBpc0RvbmUgPSB0cnVlOwogICAgIH1dOwogCkBA
IC0yMDIsNiArMjEwLDcgQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBOb25BcHBCb3VuZERv
bWFpbkZhaWxlZFVzZXJBZ2VudFNjcmlwdHMpCiAgICAgW3dlYlZpZXcyIGV2YWx1YXRlSmF2YVNj
cmlwdDpAIndpbmRvdy53a1VzZXJTY3JpcHRJbmplY3RlZCIgY29tcGxldGlvbkhhbmRsZXI6Xihp
ZCBfTnVsbGFibGUgcmVzdWx0LCBOU0Vycm9yICogX051bGxhYmxlIGVycm9yKSB7CiAgICAgICAg
IEVYUEVDVF9GQUxTRShyZXN1bHQpOwogICAgICAgICBFWFBFQ1RfVFJVRSghIWVycm9yKTsKKyAg
ICAgICAgY2xlYW5VcEluQXBwQnJvd3NlclByaXZhY3lUZXN0U2V0dGluZ3MoKTsKICAgICAgICAg
aXNEb25lID0gdHJ1ZTsKICAgICB9XTsKIApAQCAtMjQ3LDYgKzI1Niw3IEBAIFRFU1QoSW5BcHBC
cm93c2VyUHJpdmFjeSwgU3dhcEJhY2tUb0FwcEJvdW5kUmVqZWN0c1VzZXJTY3JpcHQpCiAgICAg
W3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OkAid2luZG93LndrVXNlclNjcmlwdEluamVjdGVk
IiBjb21wbGV0aW9uSGFuZGxlcjpeKGlkIF9OdWxsYWJsZSByZXN1bHQsIE5TRXJyb3IgKiBfTnVs
bGFibGUgZXJyb3IpIHsKICAgICAgICAgRVhQRUNUX0ZBTFNFKHJlc3VsdCk7CiAgICAgICAgIEVY
UEVDVF9UUlVFKCEhZXJyb3IpOworICAgICAgICBjbGVhblVwSW5BcHBCcm93c2VyUHJpdmFjeVRl
c3RTZXR0aW5ncygpOwogICAgICAgICBpc0RvbmUgPSB0cnVlOwogICAgIH1dOwogCkBAIC0yNjcs
NiArMjc3LDcgQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBBcHBCb3VuZERvbWFpbnMpCiAg
ICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspCiAgICAgICAgICAgICBFWFBF
Q1RfV0tfU1RSRVEoW3NvcnRlZERvbWFpbnMgb2JqZWN0QXRJbmRleDppXSwgW2RvbWFpbnNUb0Nv
bXBhcmUgb2JqZWN0QXRJbmRleDppXSk7CiAKKyAgICAgICAgY2xlYW5VcEluQXBwQnJvd3NlclBy
aXZhY3lUZXN0U2V0dGluZ3MoKTsKICAgICAgICAgaXNEb25lID0gdHJ1ZTsKICAgICB9XTsKICAg
ICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CkBAIC0yODYsNiArMjk3LDcgQEAg
VEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBMb2NhbEZpbGVzQXJlQXBwQm91bmQpCiAgICAgaXNE
b25lID0gZmFsc2U7CiAgICAgW3dlYlZpZXcgX2lzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW46
XihCT09MIGlzQXBwQm91bmQpIHsKICAgICAgICAgRVhQRUNUX1RSVUUoaXNBcHBCb3VuZCk7Cisg
ICAgICAgIGNsZWFuVXBJbkFwcEJyb3dzZXJQcml2YWN5VGVzdFNldHRpbmdzKCk7CiAgICAgICAg
IGlzRG9uZSA9IHRydWU7CiAgICAgfV07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZp
c0RvbmUpOwpAQCAtMzA0LDYgKzMxNiw3IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgRGF0
YUZpbGVzQXJlQXBwQm91bmQpCiAgICAgaXNEb25lID0gZmFsc2U7CiAgICAgW3dlYlZpZXcgX2lz
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW46XihCT09MIGlzQXBwQm91bmQpIHsKICAgICAgICAg
RVhQRUNUX1RSVUUoaXNBcHBCb3VuZCk7CisgICAgICAgIGNsZWFuVXBJbkFwcEJyb3dzZXJQcml2
YWN5VGVzdFNldHRpbmdzKCk7CiAgICAgICAgIGlzRG9uZSA9IHRydWU7CiAgICAgfV07CiAgICAg
VGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwpAQCAtMzIyLDYgKzMzNSw3IEBAIFRF
U1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgQWJvdXRGaWxlc0FyZUFwcEJvdW5kKQogICAgIGlzRG9u
ZSA9IGZhbHNlOwogICAgIFt3ZWJWaWV3IF9pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOl4o
Qk9PTCBpc0FwcEJvdW5kKSB7CiAgICAgICAgIEVYUEVDVF9UUlVFKGlzQXBwQm91bmQpOworICAg
ICAgICBjbGVhblVwSW5BcHBCcm93c2VyUHJpdmFjeVRlc3RTZXR0aW5ncygpOwogICAgICAgICBp
c0RvbmUgPSB0cnVlOwogICAgIH1dOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNE
b25lKTsKQEAgLTM2Niw2ICszODAsNyBAQCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIE5vbkFw
cEJvdW5kVXNlclN0eWxlU2hlZXRGb3JTcGVjaWZpY1dlYlZpZXdGYWlscykKICAgICBbW2NvbmZp
Z3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBfYWRkVXNlclN0eWxlU2hlZXQ6c3R5bGVT
aGVldC5nZXQoKV07CiAKICAgICBleHBlY3RTY3JpcHRFdmFsdWF0ZXNUb0NvbG9yKHdlYlZpZXcu
Z2V0KCksIGJhY2tncm91bmRDb2xvclNjcmlwdCwgcmVkSW5SR0IpOworICAgIGNsZWFuVXBJbkFw
cEJyb3dzZXJQcml2YWN5VGVzdFNldHRpbmdzKCk7CiB9CiAKIFRFU1QoSW5BcHBCcm93c2VyUHJp
dmFjeSwgTm9uQXBwQm91bmRVc2VyU3R5bGVTaGVldEZvckFsbFdlYlZpZXdzRmFpbHMpCkBAIC0z
ODcsNiArNDAyLDcgQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBOb25BcHBCb3VuZFVzZXJT
dHlsZVNoZWV0Rm9yQWxsV2ViVmlld3NGYWlscykKICAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNv
bnRlbnRDb250cm9sbGVyXSBfYWRkVXNlclN0eWxlU2hlZXQ6c3R5bGVTaGVldC5nZXQoKV07CiAK
ICAgICBleHBlY3RTY3JpcHRFdmFsdWF0ZXNUb0NvbG9yKHdlYlZpZXcuZ2V0KCksIGJhY2tncm91
bmRDb2xvclNjcmlwdCwgcmVkSW5SR0IpOworICAgIGNsZWFuVXBJbkFwcEJyb3dzZXJQcml2YWN5
VGVzdFNldHRpbmdzKCk7CiB9CiAKIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgTm9uQXBwQm91
bmRVc2VyU3R5bGVTaGVldEFmZmVjdGluZ0FsbEZyYW1lc0ZhaWxzKQpAQCAtNDEyLDYgKzQyOCw3
IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgTm9uQXBwQm91bmRVc2VyU3R5bGVTaGVldEFm
ZmVjdGluZ0FsbEZyYW1lc0ZhaWxzKQogCiAgICAgLy8gVGhlIHN1YmZyYW1lIHNob3VsZCBhbHNv
IGJlIGFmZmVjdGVkLgogICAgIGV4cGVjdFNjcmlwdEV2YWx1YXRlc1RvQ29sb3Iod2ViVmlldy5n
ZXQoKSwgZnJhbWVCYWNrZ3JvdW5kQ29sb3JTY3JpcHQsIHJlZEluUkdCKTsKKyAgICBjbGVhblVw
SW5BcHBCcm93c2VyUHJpdmFjeVRlc3RTZXR0aW5ncygpOwogfQogCiBURVNUKEluQXBwQnJvd3Nl
clByaXZhY3ksIE5vbkFwcEJvdW5kRG9tYWluQ2Fubm90QWNjZXNzTWVzc2FnZUhhbmRsZXJzKQpA
QCAtNDM4LDYgKzQ1NSw3IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgTm9uQXBwQm91bmRE
b21haW5DYW5ub3RBY2Nlc3NNZXNzYWdlSGFuZGxlcnMpCiAgICAgLy8gU2V0IHRoZSBiYWNrZ3Jv
dW5kIGNvbG9yIHRvIHJlZCBpZiBtZXNzYWdlIGhhbmRsZXJzIHJldHVybmVkIG51bGwgc28gd2Ug
Y2FuCiAgICAgLy8gY2hlY2sgd2l0aG91dCBuZWVkaW5nIGEgbWVzc2FnZSBoYW5kbGVyLgogICAg
IGV4cGVjdFNjcmlwdEV2YWx1YXRlc1RvQ29sb3Iod2ViVmlldy5nZXQoKSwgYmFja2dyb3VuZENv
bG9yU2NyaXB0LCByZWRJblJHQik7CisgICAgY2xlYW5VcEluQXBwQnJvd3NlclByaXZhY3lUZXN0
U2V0dGluZ3MoKTsKIH0KIAogVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBBcHBCb3VuZFRvTm9u
QXBwQm91bmREb21haW5DYW5ub3RBY2Nlc3NNZXNzYWdlSGFuZGxlcnMpCkBAIC00NzYsNiArNDk0
LDI1NCBAQCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIEFwcEJvdW5kVG9Ob25BcHBCb3VuZERv
bWFpbkNhbm5vdEFjY2Vzc01lc3NhZ2VIYW5kbGVycwogICAgIC8vIFNldCB0aGUgYmFja2dyb3Vu
ZCBjb2xvciB0byByZWQgaWYgbWVzc2FnZSBoYW5kbGVycyByZXR1cm5lZCBudWxsIHNvIHdlIGNh
bgogICAgIC8vIGNoZWNrIHdpdGhvdXQgbmVlZGluZyBhIG1lc3NhZ2UgaGFuZGxlci4KICAgICBl
eHBlY3RTY3JpcHRFdmFsdWF0ZXNUb0NvbG9yKHdlYlZpZXcuZ2V0KCksIGJhY2tncm91bmRDb2xv
clNjcmlwdCwgcmVkSW5SR0IpOworICAgIGNsZWFuVXBJbkFwcEJyb3dzZXJQcml2YWN5VGVzdFNl
dHRpbmdzKCk7Cit9CisKK3N0YXRpYyBSZXRhaW5QdHI8V0tIVFRQQ29va2llU3RvcmU+IGdsb2Jh
bENvb2tpZVN0b3JlOworc3RhdGljIGJvb2wgZ290RmxhZyA9IGZhbHNlOworCitzdGF0aWMgdm9p
ZCBzZXRVcENvb2tpZVRlc3QoKQoreworICAgIGdsb2JhbENvb2tpZVN0b3JlID0gW1tXS1dlYnNp
dGVEYXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV0gaHR0cENvb2tpZVN0b3JlXTsKKyAgICBOU0Fy
cmF5PE5TSFRUUENvb2tpZSAqPiAqY29va2llcyA9IG5pbDsKKyAgICBbZ2xvYmFsQ29va2llU3Rv
cmUgZ2V0QWxsQ29va2llczpbY29va2llc1B0ciA9ICZjb29raWVzXShOU0FycmF5PE5TSFRUUENv
b2tpZSAqPiAqbnNDb29raWVzKSB7CisgICAgICAgICpjb29raWVzUHRyID0gW25zQ29va2llcyBy
ZXRhaW5dOworICAgICAgICBnb3RGbGFnID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFRlc3RXZWJL
aXRBUEk6OlV0aWw6OnJ1bigmZ290RmxhZyk7CisKKyAgICBmb3IgKGlkIGNvb2tpZSBpbiBjb29r
aWVzKSB7CisgICAgICAgIGdvdEZsYWcgPSBmYWxzZTsKKyAgICAgICAgW2dsb2JhbENvb2tpZVN0
b3JlIGRlbGV0ZUNvb2tpZTpjb29raWUgY29tcGxldGlvbkhhbmRsZXI6W10oKSB7CisgICAgICAg
ICAgICBnb3RGbGFnID0gdHJ1ZTsKKyAgICAgICAgfV07CisgICAgICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnJ1bigmZ290RmxhZyk7CisgICAgfQorCisgICAgY29va2llcyA9IG5pbDsKKyAgICBn
b3RGbGFnID0gZmFsc2U7CisgICAgW2dsb2JhbENvb2tpZVN0b3JlIGdldEFsbENvb2tpZXM6W2Nv
b2tpZXNQdHIgPSAmY29va2llc10oTlNBcnJheTxOU0hUVFBDb29raWUgKj4gKm5zQ29va2llcykg
eworICAgICAgICAqY29va2llc1B0ciA9IFtuc0Nvb2tpZXMgcmV0YWluXTsKKyAgICAgICAgZ290
RmxhZyA9IHRydWU7CisgICAgfV07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmdv
dEZsYWcpOworCisgICAgLy8gTWFrZSBzdXJlIHRoZSBjb29raWUgc3RvcmUgc3RhcnRzIG91dCBl
bXB0eS4KKyAgICBBU1NFUlRfRVEoY29va2llcy5jb3VudCwgMHUpOworICAgIFtjb29raWVzIHJl
bGVhc2VdOworCisgICAgZ290RmxhZyA9IGZhbHNlOworfQorCitURVNUKEluQXBwQnJvd3NlclBy
aXZhY3ksIFNldENvb2tpZUZvck5vbkFwcEJvdW5kRG9tYWluRmFpbHMpCit7CisgICAgaW5pdGlh
bGl6ZUluQXBwQnJvd3NlclByaXZhY3lUZXN0U2V0dGluZ3MoKTsKKyAgICBbW05TVXNlckRlZmF1
bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBzZXRCb29sOllFUyBmb3JLZXk6QCJXZWJLaXREZWJ1
Z0lzSW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQiXTsKKworICAgIGF1dG8gZGF0YVN0b3JlID0g
W1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXTsKKyAgICBhdXRvIHdlYlZpZXcg
PSBhZG9wdE5TKFtUZXN0V0tXZWJWaWV3IG5ld10pOworICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3Ry
aW5nOkAiT2ggaGVsbG8iIGJhc2VVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vd2Vi
a2l0Lm9yZyJdXTsKKyAgICBbd2ViVmlldyBfdGVzdF93YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlv
bl07CisKKyAgICBzZXRVcENvb2tpZVRlc3QoKTsKKyAgICBnbG9iYWxDb29raWVTdG9yZSA9IFtk
YXRhU3RvcmUgaHR0cENvb2tpZVN0b3JlXTsKKworICAgIE5TQXJyYXk8TlNIVFRQQ29va2llICo+
ICpjb29raWVzID0gbmlsOworCisgICAgLy8gTm9uIGFwcC1ib3VuZCBjb29raWUuCisgICAgUmV0
YWluUHRyPE5TSFRUUENvb2tpZT4gbm9uQXBwQm91bmRDb29raWUgPSBbTlNIVFRQQ29va2llIGNv
b2tpZVdpdGhQcm9wZXJ0aWVzOkB7CisgICAgICAgIE5TSFRUUENvb2tpZVBhdGg6IEAiLyIsCisg
ICAgICAgIE5TSFRUUENvb2tpZU5hbWU6IEAibm9uQXBwQm91bmROYW1lIiwKKyAgICAgICAgTlNI
VFRQQ29va2llVmFsdWU6IEAibm9uQXBwQm91bmRWYWx1ZSIsCisgICAgICAgIE5TSFRUUENvb2tp
ZURvbWFpbjogQCJub25BcHBCb3VuZERvbWFpbi5jb20iLAorICAgIH1dOworCisgICAgLy8gQXBw
LWJvdW5kIGNvb2tpZS4KKyAgICBSZXRhaW5QdHI8TlNIVFRQQ29va2llPiBhcHBCb3VuZENvb2tp
ZSA9IFtOU0hUVFBDb29raWUgY29va2llV2l0aFByb3BlcnRpZXM6QHsKKyAgICAgICAgTlNIVFRQ
Q29va2llUGF0aDogQCIvIiwKKyAgICAgICAgTlNIVFRQQ29va2llTmFtZTogQCJ3ZWJLaXROYW1l
IiwKKyAgICAgICAgTlNIVFRQQ29va2llVmFsdWU6IEAid2ViS2l0VmFsdWUiLAorICAgICAgICBO
U0hUVFBDb29raWVEb21haW46IEAid3d3LndlYmtpdC5vcmciLAorICAgIH1dOworCisgICAgZ290
RmxhZyA9IGZhbHNlOworICAgIC8vIFRoaXMgc2hvdWxkIG5vdCBhY3R1YWxseSBzZXQgYSBjb29r
aWUuCisgICAgW2dsb2JhbENvb2tpZVN0b3JlIHNldENvb2tpZTpub25BcHBCb3VuZENvb2tpZS5n
ZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpbXSgpIHsKKyAgICAgICAgZ290RmxhZyA9IHRydWU7Cisg
ICAgfV07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmdvdEZsYWcpOworICAgIGdv
dEZsYWcgPSBmYWxzZTsKKworICAgIC8vIFRoaXMgc2hvdWxkIHN1Y2Nlc3NmdWxseSBzZXQgYSBj
b29raWUuCisgICAgW2dsb2JhbENvb2tpZVN0b3JlIHNldENvb2tpZTphcHBCb3VuZENvb2tpZS5n
ZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpbXSgpIHsKKyAgICAgICAgZ290RmxhZyA9IHRydWU7Cisg
ICAgfV07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmdvdEZsYWcpOworCisgICAg
Y2xlYW5VcEluQXBwQnJvd3NlclByaXZhY3lUZXN0U2V0dGluZ3MoKTsKKyAgICBbW05TVXNlckRl
ZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBzZXRCb29sOk5PIGZvcktleTpAIldlYktpdERl
YnVnSXNJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZCJdOworICAgIGdvdEZsYWcgPSBmYWxzZTsK
KworICAgIC8vIENoZWNrIHRoZSBjb29raWUgc3RvcmUgdG8gbWFrZSBzdXJlIG9ubHkgb25lIGNv
b2tpZSB3YXMgc2V0LgorICAgIFtnbG9iYWxDb29raWVTdG9yZSBnZXRBbGxDb29raWVzOltjb29r
aWVzUHRyID0gJmNvb2tpZXNdKE5TQXJyYXk8TlNIVFRQQ29va2llICo+ICpuc0Nvb2tpZXMpIHsK
KyAgICAgICAgKmNvb2tpZXNQdHIgPSBbbnNDb29raWVzIHJldGFpbl07CisgICAgICAgIGdvdEZs
YWcgPSB0cnVlOworICAgIH1dOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZnb3RG
bGFnKTsKKworICAgIEFTU0VSVF9FUShjb29raWVzLmNvdW50LCAxdSk7CisKKyAgICBbY29va2ll
cyByZWxlYXNlXTsKKyAgICBnb3RGbGFnID0gZmFsc2U7CisgICAgW2dsb2JhbENvb2tpZVN0b3Jl
IGRlbGV0ZUNvb2tpZTphcHBCb3VuZENvb2tpZS5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpbXSgp
IHsKKyAgICAgICAgZ290RmxhZyA9IHRydWU7CisgICAgfV07CisKKyAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpydW4oJmdvdEZsYWcpOworfQorCitURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIEdl
dENvb2tpZUZvck5vbkFwcEJvdW5kRG9tYWluRmFpbHMpCit7CisgICAgLy8gU2luY2Ugd2UgY2Fu
J3Qgc2V0IG5vbi1hcHAtYm91bmQgY29va2llcyB3aXRoIEluLUFwcCBCcm93c2VyIHByaXZhY3kg
cHJvdGVjdGlvbnMgb24sCisgICAgLy8gd2UgY2FuIHR1cm4gdGhlIHByb3RlY3Rpb25zIG9mZiB0
byBzZXQgYSBjb29raWUgd2Ugd2lsbCB0aGVuIHRyeSB0byBnZXQgd2l0aCBwcm90ZWN0aW9ucyBl
bmFibGVkLgorICAgIFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIHNldEJv
b2w6Tk8gZm9yS2V5OkAiV2ViS2l0RGVidWdJc0luQXBwQnJvd3NlclByaXZhY3lFbmFibGVkIl07
CisKKyAgICBzZXRVcENvb2tpZVRlc3QoKTsKKyAgICBnbG9iYWxDb29raWVTdG9yZSA9IFtbV0tX
ZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVdIGh0dHBDb29raWVTdG9yZV07CisgICAg
TlNBcnJheTxOU0hUVFBDb29raWUgKj4gKmNvb2tpZXMgPSBuaWw7CisKKyAgICAvLyBOb24gYXBw
LWJvdW5kIGNvb2tpZS4KKyAgICBSZXRhaW5QdHI8TlNIVFRQQ29va2llPiBub25BcHBCb3VuZENv
b2tpZSA9IFtOU0hUVFBDb29raWUgY29va2llV2l0aFByb3BlcnRpZXM6QHsKKyAgICAgICAgTlNI
VFRQQ29va2llUGF0aDogQCIvIiwKKyAgICAgICAgTlNIVFRQQ29va2llTmFtZTogQCJDb29raWVO
YW1lIiwKKyAgICAgICAgTlNIVFRQQ29va2llVmFsdWU6IEAiQ29va2llVmFsdWUiLAorICAgICAg
ICBOU0hUVFBDb29raWVEb21haW46IEAibm9uQXBwQm91bmREb21haW4uY29tIiwKKyAgICB9XTsK
KworICAgIC8vIEFwcC1ib3VuZCBjb29raWUuCisgICAgUmV0YWluUHRyPE5TSFRUUENvb2tpZT4g
YXBwQm91bmRDb29raWUgPSBbTlNIVFRQQ29va2llIGNvb2tpZVdpdGhQcm9wZXJ0aWVzOkB7Cisg
ICAgICAgIE5TSFRUUENvb2tpZVBhdGg6IEAiLyIsCisgICAgICAgIE5TSFRUUENvb2tpZU5hbWU6
IEAiT3RoZXJDb29raWVOYW1lIiwKKyAgICAgICAgTlNIVFRQQ29va2llVmFsdWU6IEAiT3RoZXJD
b29raWVWYWx1ZSIsCisgICAgICAgIE5TSFRUUENvb2tpZURvbWFpbjogQCJ3d3cud2Via2l0Lm9y
ZyIsCisgICAgfV07CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtUZXN0V0tXZWJWaWV3
IG5ld10pOworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpAInN0YXJ0
IG5ldHdvcmsgcHJvY2VzcyJdOworCisgICAgLy8gVGhpcyBzaG91bGQgc3VjY2Vzc2Z1bGx5IHNl
dCBhIGNvb2tpZSBiZWNhdXNlIHByb3RlY3Rpb25zIGFyZSBvZmYuCisgICAgW2dsb2JhbENvb2tp
ZVN0b3JlIHNldENvb2tpZTpub25BcHBCb3VuZENvb2tpZS5nZXQoKSBjb21wbGV0aW9uSGFuZGxl
cjpbXSgpIHsKKyAgICAgICAgZ290RmxhZyA9IHRydWU7CisgICAgfV07CisKKyAgICBUZXN0V2Vi
S2l0QVBJOjpVdGlsOjpydW4oJmdvdEZsYWcpOworICAgIGdvdEZsYWcgPSBmYWxzZTsKKworICAg
IFtnbG9iYWxDb29raWVTdG9yZSBzZXRDb29raWU6YXBwQm91bmRDb29raWUuZ2V0KCkgY29tcGxl
dGlvbkhhbmRsZXI6W10oKSB7CisgICAgICAgIGdvdEZsYWcgPSB0cnVlOworICAgIH1dOworCisg
ICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZnb3RGbGFnKTsKKworICAgIGdvdEZsYWcgPSBm
YWxzZTsKKyAgICBbZ2xvYmFsQ29va2llU3RvcmUgZ2V0QWxsQ29va2llczpbY29va2llc1B0ciA9
ICZjb29raWVzXShOU0FycmF5PE5TSFRUUENvb2tpZSAqPiAqbnNDb29raWVzKSB7CisgICAgICAg
ICpjb29raWVzUHRyID0gW25zQ29va2llcyByZXRhaW5dOworICAgICAgICBnb3RGbGFnID0gdHJ1
ZTsKKyAgICB9XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZ290RmxhZyk7CisK
KyAgICAvLyBDb25maXJtIGJvdGggY29va2llcyBhcmUgaW4gdGhlIHN0b3JlLgorICAgIEFTU0VS
VF9FUShjb29raWVzLmNvdW50LCAydSk7CisKKyAgICAvLyBOb3cgZW5hYmxlIHByb3RlY3Rpb25z
IGFuZCBlbnN1cmUgd2UgY2FuIG9ubHkgcmV0cmlldmUgdGhlIGFwcC1ib3VuZCBjb29raWVzLgor
ICAgIFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIHNldEJvb2w6WUVTIGZv
cktleTpAIldlYktpdERlYnVnSXNJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZCJdOworICAgIGlu
aXRpYWxpemVJbkFwcEJyb3dzZXJQcml2YWN5VGVzdFNldHRpbmdzKCk7CisKKyAgICBnb3RGbGFn
ID0gZmFsc2U7CisgICAgW2dsb2JhbENvb2tpZVN0b3JlIGdldEFsbENvb2tpZXM6W2Nvb2tpZXNQ
dHIgPSAmY29va2llc10oTlNBcnJheTxOU0hUVFBDb29raWUgKj4gKm5zQ29va2llcykgeworICAg
ICAgICAqY29va2llc1B0ciA9IFtuc0Nvb2tpZXMgcmV0YWluXTsKKyAgICAgICAgZ290RmxhZyA9
IHRydWU7CisgICAgfV07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmdvdEZsYWcp
OworCisgICAgQVNTRVJUX0VRKGNvb2tpZXMuY291bnQsIDF1KTsKKworICAgIFtjb29raWVzIHJl
bGVhc2VdOworCisgICAgZ290RmxhZyA9IGZhbHNlOworICAgIFtnbG9iYWxDb29raWVTdG9yZSBk
ZWxldGVDb29raWU6bm9uQXBwQm91bmRDb29raWUuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6W10o
KSB7CisgICAgICAgIGdvdEZsYWcgPSB0cnVlOworICAgIH1dOworCisgICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZnb3RGbGFnKTsKKworICAgIGdvdEZsYWcgPSBmYWxzZTsKKyAgICBbZ2xv
YmFsQ29va2llU3RvcmUgZGVsZXRlQ29va2llOmFwcEJvdW5kQ29va2llLmdldCgpIGNvbXBsZXRp
b25IYW5kbGVyOltdKCkgeworICAgICAgICAvLyBSZXNldCBmbGFnLgorICAgICAgICBbW05TVXNl
ckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBzZXRCb29sOk5PIGZvcktleTpAIldlYktp
dERlYnVnSXNJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZCJdOworICAgICAgICBjbGVhblVwSW5B
cHBCcm93c2VyUHJpdmFjeVRlc3RTZXR0aW5ncygpOworICAgICAgICBnb3RGbGFnID0gdHJ1ZTsK
KyAgICB9XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZ290RmxhZyk7Cit9CisK
K1RFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgR2V0Q29va2llRm9yVVJMRmFpbHMpCit7CisgICAg
Ly8gU2luY2Ugd2UgY2FuJ3Qgc2V0IG5vbi1hcHAtYm91bmQgY29va2llcyB3aXRoIEluLUFwcCBC
cm93c2VyIHByaXZhY3kgcHJvdGVjdGlvbnMgb24sCisgICAgLy8gd2UgY2FuIHR1cm4gdGhlIHBy
b3RlY3Rpb25zIG9mZiB0byBzZXQgYSBjb29raWUgd2Ugd2lsbCB0aGVuIHRyeSB0byBnZXQgd2l0
aCBwcm90ZWN0aW9ucyBlbmFibGVkLgorICAgIFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2Vy
RGVmYXVsdHNdIHNldEJvb2w6Tk8gZm9yS2V5OkAiV2ViS2l0RGVidWdJc0luQXBwQnJvd3NlclBy
aXZhY3lFbmFibGVkIl07CisgICAgc2V0VXBDb29raWVUZXN0KCk7CisKKyAgICBnbG9iYWxDb29r
aWVTdG9yZSA9IFtbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVdIGh0dHBDb29r
aWVTdG9yZV07CisgICAgTlNIVFRQQ29va2llICpub25BcHBCb3VuZENvb2tpZSA9IFtOU0hUVFBD
b29raWUgY29va2llV2l0aFByb3BlcnRpZXM6QHsKKyAgICAgICAgTlNIVFRQQ29va2llUGF0aDog
QCIvIiwKKyAgICAgICAgTlNIVFRQQ29va2llTmFtZTogQCJub25BcHBCb3VuZE5hbWUiLAorICAg
ICAgICBOU0hUVFBDb29raWVWYWx1ZTogQCJub25BcHBCb3VuZFZhbHVlIiwKKyAgICAgICAgTlNI
VFRQQ29va2llRG9tYWluOiBAIm5vbkFwcEJvdW5kRG9tYWluLmNvbSIsCisgICAgfV07CisgICAg
CisgICAgTlNIVFRQQ29va2llICphcHBCb3VuZENvb2tpZSA9IFtOU0hUVFBDb29raWUgY29va2ll
V2l0aFByb3BlcnRpZXM6QHsKKyAgICAgICAgTlNIVFRQQ29va2llUGF0aDogQCIvIiwKKyAgICAg
ICAgTlNIVFRQQ29va2llTmFtZTogQCJ3ZWJLaXROYW1lIiwKKyAgICAgICAgTlNIVFRQQ29va2ll
VmFsdWU6IEAid2ViS2l0VmFsdWUiLAorICAgICAgICBOU0hUVFBDb29raWVEb21haW46IEAid2Vi
a2l0Lm9yZyIsCisgICAgfV07CisKKyAgICBfX2Jsb2NrIGJvb2wgZG9uZSA9IGZhbHNlOworICAg
IGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1Rlc3RXS1dlYlZpZXcgbmV3XSk7CisgICAgW3dlYlZp
ZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAic3RhcnQgbmV0d29yayBwcm9jZXNzIl07
CisgICAgW2dsb2JhbENvb2tpZVN0b3JlIHNldENvb2tpZTpub25BcHBCb3VuZENvb2tpZSBjb21w
bGV0aW9uSGFuZGxlcjpeeworICAgICAgICBbZ2xvYmFsQ29va2llU3RvcmUgc2V0Q29va2llOmFw
cEJvdW5kQ29va2llIGNvbXBsZXRpb25IYW5kbGVyOl57CisKKyAgICAgICAgICAgIC8vIE5vdyBl
bmFibGUgcHJvdGVjdGlvbnMgYW5kIGVuc3VyZSB3ZSBjYW4gb25seSByZXRyaWV2ZSB0aGUgYXBw
LWJvdW5kIGNvb2tpZXMuCisgICAgICAgICAgICBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNl
ckRlZmF1bHRzXSBzZXRCb29sOllFUyBmb3JLZXk6QCJXZWJLaXREZWJ1Z0lzSW5BcHBCcm93c2Vy
UHJpdmFjeUVuYWJsZWQiXTsKKyAgICAgICAgICAgIGluaXRpYWxpemVJbkFwcEJyb3dzZXJQcml2
YWN5VGVzdFNldHRpbmdzKCk7CisKKyAgICAgICAgICAgIFtnbG9iYWxDb29raWVTdG9yZSBfZ2V0
Q29va2llc0ZvclVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHBzOi8vd2Via2l0Lm9yZy8i
XSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TQXJyYXk8TlNIVFRQQ29va2llICo+ICpjb29raWVzKSB7
CisgICAgICAgICAgICAgICAgRVhQRUNUX0VRKGNvb2tpZXMuY291bnQsIDF1bGwpOworICAgICAg
ICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShjb29raWVzWzBdLm5hbWUsICJ3ZWJLaXROYW1lIik7
CisgICAgICAgICAgICAgICAgW2dsb2JhbENvb2tpZVN0b3JlIF9nZXRDb29raWVzRm9yVVJMOltO
U1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cHM6Ly9ub25BcHBCb3VuZERvbWFpbi5jb20vIl0gY29t
cGxldGlvbkhhbmRsZXI6XihOU0FycmF5PE5TSFRUUENvb2tpZSAqPiAqY29va2llcykgeworICAg
ICAgICAgICAgICAgICAgICBFWFBFQ1RfRVEoY29va2llcy5jb3VudCwgMHUpOworICAgICAgICAg
ICAgICAgICAgICBbZ2xvYmFsQ29va2llU3RvcmUgZGVsZXRlQ29va2llOm5vbkFwcEJvdW5kQ29v
a2llIGNvbXBsZXRpb25IYW5kbGVyOl57CisgICAgICAgICAgICAgICAgICAgICAgICBbZ2xvYmFs
Q29va2llU3RvcmUgZGVsZXRlQ29va2llOmFwcEJvdW5kQ29va2llIGNvbXBsZXRpb25IYW5kbGVy
Ol57CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFy
ZFVzZXJEZWZhdWx0c10gc2V0Qm9vbDpOTyBmb3JLZXk6QCJXZWJLaXREZWJ1Z0lzSW5BcHBCcm93
c2VyUHJpdmFjeUVuYWJsZWQiXTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhblVw
SW5BcHBCcm93c2VyUHJpdmFjeVRlc3RTZXR0aW5ncygpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGRvbmUgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgfV07CisgICAgICAg
ICAgICAgICAgICAgIH1dOworICAgICAgICAgICAgICAgIH1dOworICAgICAgICAgICAgfV07Cisg
ICAgICAgIH1dOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7
CiB9CiAKICNlbmRpZiAvLyBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395415</attachid>
            <date>2020-04-03 16:17:02 -0700</date>
            <delta_ts>2020-04-03 16:39:12 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-209926-20200403161701.patch</filename>
            <type>text/plain</type>
            <size>27592</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5NDIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGFhZTY3ZTI5YWIwNWZkNmE4
M2IyMGIyMjRkZDBlYTQ3MTg1YWMyYWYuLjNiYjU5MTBkY2FkNDc4YTY0MTM2YTNlMjE5NDlkZWIw
NDgxNTBlODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMjAtMDQtMDIgIEthdGUgQ2hl
bmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgUHJldmVudCBub24g
YXBwLWJvdW5kIGRvbWFpbiBjb29raWVzIGZyb20gYmVpbmcgcmVhZCBvciBzZXQgdXNpbmcgQVBJ
IGNhbGxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDk5MjYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYxMDcxNDI4PgorCisgICAgICAgIFJldmll
d2VkIGJ5IEJyYWR5IEVpZHNvbi4KKworICAgICAgICBUaGlzIHBhdGNoIGZpbHRlcnMgb3V0IHNl
dHRpbmcgYW5kIGZldGNoaW5nIG9mIGNvb2tpZXMgdmlhIEFQSSBjYWxsIAorICAgICAgICB0byBv
bmx5IHNldCBvciByZXR1cm4gYXBwLWJvdW5kIGNvb2tpZXMuCisKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0FQSUhUVFBDb29raWVTdG9yZS5jcHA6CisgICAgICAgIChBUEk6OkhUVFBDb29raWVT
dG9yZTo6ZmlsdGVyQXBwQm91bmRDb29raWVzKToKKyAgICAgICAgVGhpcyBmdW5jdGlvbiBxdWVy
aWVzIHRoZSB3ZWJzaXRlRGF0YVN0b3JlIGZvciB0aGUgV0tBcHBCb3VuZERvbWFpbnMKKyAgICAg
ICAgZW50cmllcyBhbmQgZmlsdGVycyBvdXQgbm9uIGFwcC1ib3VuZCBkb21haW5zLgorCisgICAg
ICAgIChBUEk6OkhUVFBDb29raWVTdG9yZTo6Y29va2llcyk6CisgICAgICAgIChBUEk6OkhUVFBD
b29raWVTdG9yZTo6Y29va2llc0ZvclVSTCk6CisgICAgICAgIChBUEk6OkhUVFBDb29raWVTdG9y
ZTo6c2V0Q29va2llcyk6CisgICAgICAgIFRoZXNlIGZ1bmN0aW9ucyB3ZXJlIHVwZGF0ZWQgdG8g
c2V0L3JldHVybiB0aGUgY29va2llcyBhZnRlciB0aGV5J3ZlCisgICAgICAgIGJlZW4gZmlsdGVy
ZWQgdGhyb3VnaCB0aGUgV0tBcHBCb3VuZERvbWFpbnMuCisKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0FQSUhUVFBDb29raWVTdG9yZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJzaXRlRGF0YVN0b3JlLm1tOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX2Fw
cEJvdW5kRG9tYWluczpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2Ev
V2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0
b3JlOjpnZXRBcHBCb3VuZERvbWFpbnMgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRl
RGF0YVN0b3JlOjphcHBCb3VuZERvbWFpbnNGb3JUZXN0aW5nIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgVXRpbGl6ZSBhIGZ1bmN0aW9uIGZvcm1lcmx5IHVzZWQgZm9yIHRlc3Rpbmcgb25seSB0
byBiZSB1c2VkIGluIHRoZQorICAgICAgICBIVFRQQ29va2llU3RvcmUuCisKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oOgorCiAyMDIwLTA0LTAyICBE
YXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViUGFnZVByb3h5
IGF0dGFjaG1lbnQgbWV0aG9kcyBzaG91bGQgcmV0dXJuIGVhcmx5IGlmIGF0dGFjaG1lbnQgZWxl
bWVudCBpcyBub3QgZW5hYmxlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSUhUVFBDb29raWVTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJSFRUUENvb2tpZVN0b3JlLmNwcAppbmRleCBiNDE2YmUzZTBlNTBlYTU4MzEyNjkxYmNiYmQz
NmJlOTY1NTFjZTM1Li45N2U5M2NiMDY0OWMwZDdlN2VjNzhlNzk4ZDMxMzQyMTMwZTVjNTkxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3Jl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3Jl
LmNwcApAQCAtMjksMTEgKzI5LDE5IEBACiAjaW5jbHVkZSAiV2ViQ29va2llTWFuYWdlclByb3h5
LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVN0
b3JlLmgiCisjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuaCIKICNpbmNsdWRl
IDxXZWJDb3JlL0Nvb2tpZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ29va2llU3RvcmFnZS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvSFRUUENvb2tpZUFjY2VwdFBvbGljeS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg+CiAKKyNpZiBVU0UoQVBQTEVfSU5URVJOQUxf
U0RLKQorI2luY2x1ZGUgPFdlYktpdEFkZGl0aW9ucy9IVFRQQ29va2llU3RvcmVBZGRpdGlvbnMu
aD4KKyNlbHNlCisjZGVmaW5lIElOX0FQUF9CUk9XU0VSX1BSSVZBQ1lfRU5BQkxFRCBmYWxzZQor
I2RlZmluZSBJTVBMRU1FTlRfSU5fQVBQX0JST1dTRVJfUFJJVkFDWV9FTkFCTEVECisjZW5kaWYK
KwogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAogbmFtZXNwYWNlIEFQSSB7CkBAIC01NCw2ICs2
MiwyNyBAQCBIVFRQQ29va2llU3RvcmU6On5IVFRQQ29va2llU3RvcmUoKQogICAgIHVucmVnaXN0
ZXJGb3JOZXdQcm9jZXNzUG9vbE5vdGlmaWNhdGlvbnMoKTsKIH0KIAordm9pZCBIVFRQQ29va2ll
U3RvcmU6OmZpbHRlckFwcEJvdW5kQ29va2llcyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2ll
PiYgY29va2llcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2ViQ29yZTo6Q29va2ll
PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBWZWN0b3I8V2ViQ29yZTo6Q29va2ll
PiBhcHBCb3VuZENvb2tpZXM7CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBtX293bmlu
Z0RhdGFTdG9yZS0+Z2V0QXBwQm91bmREb21haW5zKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyksIGNvb2tpZXMsIGFwcEJvdW5kQ29va2llcyA9IFdURk1vdmUoYXBwQm91bmRD
b29raWVzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0g
KGF1dG8mIGRvbWFpbnMpIG11dGFibGUgeworICAgICAgICBpZiAobV9vd25pbmdEYXRhU3RvcmUt
PnBhcmFtZXRlcnMoKS5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMuaXNJbkFwcEJyb3dzZXJQcml2
YWN5RW5hYmxlZCB8fCBJTl9BUFBfQlJPV1NFUl9QUklWQUNZX0VOQUJMRUQpIHsKKyAgICAgICAg
ICAgIElNUExFTUVOVF9JTl9BUFBfQlJPV1NFUl9QUklWQUNZX0VOQUJMRUQKKyAgICAgICAgICAg
IGZvciAoYXV0byYgY29va2llIDogY29va2llcykgeworICAgICAgICAgICAgICAgIGlmIChkb21h
aW5zLmNvbnRhaW5zKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVG
cm9tSG9zdChjb29raWUuZG9tYWluKSkpCisgICAgICAgICAgICAgICAgICAgIGFwcEJvdW5kQ29v
a2llcy5hcHBlbmQoY29va2llKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlCisgICAg
ICAgICAgICBhcHBCb3VuZENvb2tpZXMgPSBjb29raWVzOworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihXVEZNb3ZlKGFwcEJvdW5kQ29va2llcykpOworICAgIH0pOworI2Vsc2UKKyAgICBhcHBC
b3VuZENvb2tpZXMgPSBjb29raWVzOworICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoYXBw
Qm91bmRDb29raWVzKSk7CisjZW5kaWYKK30KKwogdm9pZCBIVFRQQ29va2llU3RvcmU6OmNvb2tp
ZXMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGF1dG8qIHBvb2wgPSBtX293bmluZ0RhdGFT
dG9yZS0+cHJvY2Vzc1Bvb2xGb3JDb29raWVTdG9yYWdlT3BlcmF0aW9ucygpOwpAQCAtNjMsMTUg
KzkyLDE1IEBAIHZvaWQgSFRUUENvb2tpZVN0b3JlOjpjb29raWVzKENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpCiAgICAgICAgICAgICBhbGxDb29raWVz
ID0gZ2V0QWxsRGVmYXVsdFVJUHJvY2Vzc0Nvb2tpZVN0b3JlQ29va2llcygpOwogICAgICAgICBh
bGxDb29raWVzLmFwcGVuZFZlY3RvcihtX293bmluZ0RhdGFTdG9yZS0+cGVuZGluZ0Nvb2tpZXMo
KSk7CiAKLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBhbGxDb29raWVzXSAoKSBtdXRhYmxlIHsK
LSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGFsbENvb2tpZXMpOworICAgICAgICBSdW5M
b29wOjptYWluKCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgYWxsQ29v
a2llc10gKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBmaWx0ZXJBcHBCb3VuZENvb2tpZXMoYWxs
Q29va2llcywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICB9KTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAogICAgIGF1dG8qIGNvb2tpZU1hbmFnZXIgPSBwb29sLT5zdXBw
bGVtZW50PFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5PigpOwotICAgIGNvb2tpZU1hbmFn
ZXItPmdldEFsbENvb2tpZXMobV9vd25pbmdEYXRhU3RvcmUtPnNlc3Npb25JRCgpLCBbcG9vbCA9
IFdURk1vdmUocG9vbCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildIChjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYgY29va2llcykgbXV0YWJsZSB7
Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNvb2tpZXMpOworICAgIGNvb2tpZU1hbmFnZXIt
PmdldEFsbENvb2tpZXMobV9vd25pbmdEYXRhU3RvcmUtPnNlc3Npb25JRCgpLCBbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBwb29sID0gV1RGTW92ZShwb29sKSwgY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKGNvbnN0IFZlY3RvcjxX
ZWJDb3JlOjpDb29raWU+JiBjb29raWVzKSBtdXRhYmxlIHsKKyAgICAgICAgZmlsdGVyQXBwQm91
bmRDb29raWVzKGNvb2tpZXMsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICB9KTsK
IH0KIApAQCAtODIsMzAgKzExMSwzMiBAQCB2b2lkIEhUVFBDb29raWVTdG9yZTo6Y29va2llc0Zv
clVSTChXVEY6OlVSTCYmIHVybCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0bwogICAgICAg
ICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKIAogICAgIGF1dG8qIGNvb2tpZU1hbmFn
ZXIgPSBwb29sLT5zdXBwbGVtZW50PFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5PigpOwot
ICAgIGNvb2tpZU1hbmFnZXItPmdldENvb2tpZXMobV9vd25pbmdEYXRhU3RvcmUtPnNlc3Npb25J
RCgpLCB1cmwsIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
XSAoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mJiBjb29raWVzKSBtdXRhYmxlIHsKLSAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb29raWVzKSk7CisgICAgY29va2llTWFuYWdlci0+
Z2V0Q29va2llcyhtX293bmluZ0RhdGFTdG9yZS0+c2Vzc2lvbklEKCksIHVybCwgW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0gKFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiYgY29va2llcykg
bXV0YWJsZSB7CisgICAgICAgIGZpbHRlckFwcEJvdW5kQ29va2llcyhjb29raWVzLCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgfSk7CiB9CiAKIHZvaWQgSFRUUENvb2tpZVN0b3Jl
OjpzZXRDb29raWVzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiBjb29raWVzLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgYXV0byog
cG9vbCA9IG1fb3duaW5nRGF0YVN0b3JlLT5wcm9jZXNzUG9vbEZvckNvb2tpZVN0b3JhZ2VPcGVy
YXRpb25zKCk7Ci0gICAgaWYgKCFwb29sKSB7Ci0gICAgICAgIGZvciAoYXV0byYgY29va2llIDog
Y29va2llcykgewotICAgICAgICAgICAgLy8gRklYTUU6IHBlbmRpbmdDb29raWVzIHVzZWQgZm9y
IGRlZmF1bHRTZXNzaW9uIGJlY2F1c2Ugc2Vzc2lvbiBjb29raWVzIGNhbm5vdCBiZSBwcm9wYWdh
dGVkIHRvIE5ldHdvcmsgUHJvY2VzcyB3aXRoIHVpUHJvY2Vzc0Nvb2tpZVN0b3JhZ2VJZGVudGlm
aWVyLgotICAgICAgICAgICAgaWYgKG1fb3duaW5nRGF0YVN0b3JlLT5zZXNzaW9uSUQoKSA9PSBQ
QUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpICYmICFjb29raWUuc2Vzc2lvbikKLSAg
ICAgICAgICAgICAgICBzZXRDb29raWVJbkRlZmF1bHRVSVByb2Nlc3NDb29raWVTdG9yZShjb29r
aWUpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIG1fb3duaW5nRGF0YVN0b3Jl
LT5hZGRQZW5kaW5nQ29va2llKGNvb2tpZSk7CisgICAgZmlsdGVyQXBwQm91bmRDb29raWVzKGNv
b2tpZXMsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChhdXRvJiYgYXBwQm91bmRDb29r
aWVzKSBtdXRhYmxlIHsKKyAgICAgICAgYXV0byogcG9vbCA9IG1fb3duaW5nRGF0YVN0b3JlLT5w
cm9jZXNzUG9vbEZvckNvb2tpZVN0b3JhZ2VPcGVyYXRpb25zKCk7CisgICAgICAgIGlmICghcG9v
bCkgeworICAgICAgICAgICAgZm9yIChhdXRvJiBjb29raWUgOiBhcHBCb3VuZENvb2tpZXMpIHsK
KyAgICAgICAgICAgICAgICAvLyBGSVhNRTogcGVuZGluZ0Nvb2tpZXMgdXNlZCBmb3IgZGVmYXVs
dFNlc3Npb24gYmVjYXVzZSBzZXNzaW9uIGNvb2tpZXMgY2Fubm90IGJlIHByb3BhZ2F0ZWQgdG8g
TmV0d29yayBQcm9jZXNzIHdpdGggdWlQcm9jZXNzQ29va2llU3RvcmFnZUlkZW50aWZpZXIuCisg
ICAgICAgICAgICAgICAgaWYgKG1fb3duaW5nRGF0YVN0b3JlLT5zZXNzaW9uSUQoKSA9PSBQQUw6
OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpICYmICFjb29raWUuc2Vzc2lvbikKKyAgICAg
ICAgICAgICAgICAgICAgc2V0Q29va2llSW5EZWZhdWx0VUlQcm9jZXNzQ29va2llU3RvcmUoY29v
a2llKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIG1fb3duaW5n
RGF0YVN0b3JlLT5hZGRQZW5kaW5nQ29va2llKGNvb2tpZSk7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBSdW5Mb29w
OjptYWluKCkuZGlzcGF0Y2goV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgYXV0byogY29va2llTWFuYWdlciA9IHBvb2wtPnN1cHBsZW1l
bnQ8V2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk+KCk7Ci0gICAgY29va2llTWFuYWdlci0+
c2V0Q29va2llcyhtX293bmluZ0RhdGFTdG9yZS0+c2Vzc2lvbklEKCksIGNvb2tpZXMsIFtwb29s
ID0gV1RGTW92ZShwb29sKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0gKCkgbXV0YWJsZSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAg
ICAgIGF1dG8qIGNvb2tpZU1hbmFnZXIgPSBwb29sLT5zdXBwbGVtZW50PFdlYktpdDo6V2ViQ29v
a2llTWFuYWdlclByb3h5PigpOworICAgICAgICBjb29raWVNYW5hZ2VyLT5zZXRDb29raWVzKG1f
b3duaW5nRGF0YVN0b3JlLT5zZXNzaW9uSUQoKSwgYXBwQm91bmRDb29raWVzLCBbcG9vbCA9IFdU
Rk1vdmUocG9vbCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cildICgpIG11dGFibGUgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAg
ICAgfSk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElIVFRQQ29va2llU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElIVFRQQ29va2llU3RvcmUuaAppbmRleCA0ZGI3NWIzNWY5M2JjNzYzN2MxOWM0ZjNmZTJhNWM4
YjEzZDlhMDBhLi42MWRmZjJjNGJmMTgxNjkzM2Q2MDI3NTQxNzY5ZDhlNDAyMDk3OGUzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yZS5oCkBA
IC03Nyw2ICs3Nyw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvb2tpZXNEaWRDaGFuZ2UoKTsKICAg
ICB2b2lkIGNvb2tpZU1hbmFnZXJEZXN0cm95ZWQoKTsKIAorICAgIHZvaWQgZmlsdGVyQXBwQm91
bmRDb29raWVzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYmKT4mJik7CisKIHByaXZhdGU6CiAgICAg
SFRUUENvb2tpZVN0b3JlKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZSYpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5t
bQppbmRleCA2ZTU3OGUwM2RlMjMyMDQwMTU5MzkxZTUzYWQ1MjA0NzBiYWJiMDU3Li5hNDhlMWI2
MjAyNmI3NzEzMmRmNGY3OTkwMjdiNzdjNTZhOTFjZmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KQEAgLTYx
Myw3ICs2MTMsNyBAQCAtIChfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiAqKV9jb25m
aWd1cmF0aW9uCiAKIC0gKHZvaWQpX2FwcEJvdW5kRG9tYWluczoodm9pZCAoXikoTlNBcnJheTxO
U1N0cmluZyAqPiAqKSljb21wbGV0aW9uSGFuZGxlcgogewotICAgIF93ZWJzaXRlRGF0YVN0b3Jl
LT5hcHBCb3VuZERvbWFpbnNGb3JUZXN0aW5nKFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9j
a1B0cihjb21wbGV0aW9uSGFuZGxlcildKGF1dG8mIGRvbWFpbnMpIG11dGFibGUgeworICAgIF93
ZWJzaXRlRGF0YVN0b3JlLT5nZXRBcHBCb3VuZERvbWFpbnMoW2NvbXBsZXRpb25IYW5kbGVyID0g
bWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oYXV0byYgZG9tYWlucykgbXV0YWJsZSB7
CiAgICAgICAgIFZlY3RvcjxSZWZQdHI8QVBJOjpPYmplY3Q+PiBhcGlEb21haW5zOwogICAgICAg
ICBhcGlEb21haW5zLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoZG9tYWlucy5zaXplKCkpOwogICAg
ICAgICBmb3IgKGF1dG8mIGRvbWFpbiA6IGRvbWFpbnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0
b3JlQ29jb2EubW0KaW5kZXggYTcwYjdkNTA5MTVlNDc3Zjk4MzQwYmVlNzQ5NmNiMmMwNjc5OThk
YS4uMjJjOThlZjJiY2Y3NThmYWFkZTEzNzUyNDZhMDg3ZWEwNjQyNTQyYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9y
ZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29h
L1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQpAQCAtNDY2LDggKzQ2NiwxMCBAQCB2b2lkIFdlYnNp
dGVEYXRhU3RvcmU6OmJlZ2luQXBwQm91bmREb21haW5DaGVjayhjb25zdCBVUkwmIHJlcXVlc3RV
UkwsIFdlYkZyYW1lUAogICAgIH0pOwogfQogCi12b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmFwcEJv
dW5kRG9tYWluc0ZvclRlc3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBIYXNoU2V0
PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25z
dAordm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpnZXRBcHBCb3VuZERvbWFpbnMoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChjb25zdCBIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdAogeworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4o
KSk7CisKICAgICBlbnN1cmVBcHBCb3VuZERvbWFpbnMoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcildIChhdXRvJiBkb21haW5zKSBtdXRhYmxlIHsKICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoZG9tYWlucyk7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKaW5kZXgg
NTU1ZDM1NjBlNTU0NGVkZjVlMDhmY2Y3OWUyYjI3NGUwNzA5YTBkNy4uZTg0MjMxMzI1NmJhMzFi
ZGQ4YTc1MGNhNTViMzNhYmRhYjJjMDA5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaApAQCAtMjg3LDcgKzI4Nyw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEluQXBwQnJvd3NlclByaXZhY3lFbmFibGVkKGJvb2wg
ZW5hYmxlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKIAogICAgIHZvaWQgYmVnaW5B
cHBCb3VuZERvbWFpbkNoZWNrKGNvbnN0IFVSTCYsIFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94
eSYpOwotICAgIHZvaWQgYXBwQm91bmREb21haW5zRm9yVGVzdGluZyhDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+Jik+JiYpIGNv
bnN0OworICAgIHZvaWQgZ2V0QXBwQm91bmREb21haW5zKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4mKT4mJikgY29uc3Q7CiAg
ICAgdm9pZCBlbnN1cmVBcHBCb3VuZERvbWFpbnMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYpPiYmKSBjb25zdDsKICAgICB2
b2lkIHJlaW5pdGlhbGl6ZUFwcEJvdW5kRG9tYWlucygpOwogCmRpZmYgLS1naXQgYS9Ub29scy9D
aGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggM2FlOGQ0YTlmMzBjNGMxMGFhZDJmMDY5
OGQyMjQ2Yjc4ZDZhNDc1ZC4uYWY2OTg2YWU1N2E2OGZmNzlhZThhZTAzODRjMTEyZGMyYWEzM2Ri
MiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE5IEBACisyMDIwLTA0LTAyICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlA
YXBwbGUuY29tPgorCisgICAgICAgIFByZXZlbnQgbm9uIGFwcC1ib3VuZCBkb21haW4gY29va2ll
cyBmcm9tIGJlaW5nIHJlYWQgb3Igc2V0IHVzaW5nIEFQSSBjYWxscworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5OTI2CisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS82MTA3MTQyOD4KKworICAgICAgICBSZXZpZXdlZCBieSBCcmFkeSBFaWRzb24uCisK
KyAgICAgICAgQWRkZWQgMyBuZXcgQVBJIHRlc3RzIHRvIHRlc3QgdGhhdCBub24gYXBwLWJvdW5k
IGNvb2tpZXMgYXJlIG5vdCBiZWluZworICAgICAgICBzZXQgb3IgcmV0dXJuZWQgdmlhIEFQSSBj
YWxscy4gQWxzbyBhZGRlZCBhIGZ1bmN0aW9uIHRvIHJlc2V0IHN0YXRlCisgICAgICAgIGJldHdl
ZW4gdGVzdHMgZm9yIGludGVybmFsIGRlYnVnZ2luZy4KKworICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbToKKyAgICAgICAgKHNl
dFVwQ29va2llVGVzdCk6CisgICAgICAgIChURVNUKToKKwogMjAyMC0wNC0wMiAgRGF2aWQgS2ls
emVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIyMzQ2ODUp
OiBMZWFrIG9mIENBTGF5ZXIgaW4gY3JlYXRlQ29yZUFuaW1hdGlvbkxheWVyKCkgaW4gUGx1Z2lu
T2JqZWN0TWFjLm1tCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW0KaW5kZXggYTA5ZGUzMTQ1ZDYxZGYx
ODJjYjg2YjQzNWE2ZmFjN2NlMDViNzc2Mi4uNzYzYmRiOGNhODQwOGI1ZjAwMDZhMTIzYTAzMDQw
ODNmZWVlODk3NyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbQpAQCAtMzEsNiArMzEsNyBAQAog
I2ltcG9ydCAiV0tXZWJWaWV3Q29uZmlndXJhdGlvbkV4dHJhcy5oIgogI2ltcG9ydCA8V2ViQ29y
ZS9SZWdpc3RyYWJsZURvbWFpbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9SdW50aW1lQXBwbGljYXRp
b25DaGVja3MuaD4KKyNpbXBvcnQgPFdlYktpdC9XS0hUVFBDb29raWVTdG9yZVByaXZhdGUuaD4K
ICNpbXBvcnQgPFdlYktpdC9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0
L1dLVXNlckNvbnRlbnRDb250cm9sbGVyUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2Vi
c2l0ZURhdGFTdG9yZVByaXZhdGUuaD4KQEAgLTc4LDYgKzc5LDExIEBAIC0gKHZvaWQpd2ViVmll
dzooV0tXZWJWaWV3ICopd2ViVmlldyBzdG9wVVJMU2NoZW1lVGFzazooaWQgPFdLVVJMU2NoZW1l
VGFzaz4pdGFzCiAKIEBlbmQKIAorc3RhdGljIHZvaWQgY2xlYW5VcEluQXBwQnJvd3NlclByaXZh
Y3lUZXN0U2V0dGluZ3MoKQoreworICAgIElOX0FQUF9CUk9XU0VSX1BSSVZBQ1lfQURESVRJT05T
XzIKK30KKwogc3RhdGljIHZvaWQgaW5pdGlhbGl6ZUluQXBwQnJvd3NlclByaXZhY3lUZXN0U2V0
dGluZ3MoKQogewogICAgIFJ1bkxvb3A6OmluaXRpYWxpemVNYWluUnVuTG9vcCgpOwpAQCAtMTE5
LDYgKzEyNSw3IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgTm9uQXBwQm91bmREb21haW5G
YWlsZWRVc2VyU2NyaXB0QXRTdGFydCkKICAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6
QCJ3aW5kb3cud2tVc2VyU2NyaXB0SW5qZWN0ZWQiIGNvbXBsZXRpb25IYW5kbGVyOl4oaWQgX051
bGxhYmxlIHJlc3VsdCwgTlNFcnJvciAqIF9OdWxsYWJsZSBlcnJvcikgewogICAgICAgICBFWFBF
Q1RfRVEoTk8sIFtyZXN1bHQgYm9vbFZhbHVlXSk7CiAgICAgICAgIEVYUEVDVF9GQUxTRSghIWVy
cm9yKTsKKyAgICAgICAgY2xlYW5VcEluQXBwQnJvd3NlclByaXZhY3lUZXN0U2V0dGluZ3MoKTsK
ICAgICAgICAgaXNEb25lID0gdHJ1ZTsKICAgICB9XTsKIApAQCAtMTYwLDYgKzE2Nyw3IEBAIFRF
U1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgTm9uQXBwQm91bmREb21haW5GYWlsZWRVc2VyU2NyaXB0
QXRFbmQpCiAgICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OkAid2luZG93LndrVXNlclNj
cmlwdEluamVjdGVkIiBjb21wbGV0aW9uSGFuZGxlcjpeKGlkIF9OdWxsYWJsZSByZXN1bHQsIE5T
RXJyb3IgKiBfTnVsbGFibGUgZXJyb3IpIHsKICAgICAgICAgRVhQRUNUX0VRKE5PLCBbcmVzdWx0
IGJvb2xWYWx1ZV0pOwogICAgICAgICBFWFBFQ1RfRkFMU0UoISFlcnJvcik7CisgICAgICAgIGNs
ZWFuVXBJbkFwcEJyb3dzZXJQcml2YWN5VGVzdFNldHRpbmdzKCk7CiAgICAgICAgIGlzRG9uZSA9
IHRydWU7CiAgICAgfV07CiAKQEAgLTIwMiw2ICsyMTAsNyBAQCBURVNUKEluQXBwQnJvd3NlclBy
aXZhY3ksIE5vbkFwcEJvdW5kRG9tYWluRmFpbGVkVXNlckFnZW50U2NyaXB0cykKICAgICBbd2Vi
VmlldzIgZXZhbHVhdGVKYXZhU2NyaXB0OkAid2luZG93LndrVXNlclNjcmlwdEluamVjdGVkIiBj
b21wbGV0aW9uSGFuZGxlcjpeKGlkIF9OdWxsYWJsZSByZXN1bHQsIE5TRXJyb3IgKiBfTnVsbGFi
bGUgZXJyb3IpIHsKICAgICAgICAgRVhQRUNUX0ZBTFNFKHJlc3VsdCk7CiAgICAgICAgIEVYUEVD
VF9UUlVFKCEhZXJyb3IpOworICAgICAgICBjbGVhblVwSW5BcHBCcm93c2VyUHJpdmFjeVRlc3RT
ZXR0aW5ncygpOwogICAgICAgICBpc0RvbmUgPSB0cnVlOwogICAgIH1dOwogCkBAIC0yNDcsNiAr
MjU2LDcgQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBTd2FwQmFja1RvQXBwQm91bmRSZWpl
Y3RzVXNlclNjcmlwdCkKICAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6QCJ3aW5kb3cu
d2tVc2VyU2NyaXB0SW5qZWN0ZWQiIGNvbXBsZXRpb25IYW5kbGVyOl4oaWQgX051bGxhYmxlIHJl
c3VsdCwgTlNFcnJvciAqIF9OdWxsYWJsZSBlcnJvcikgewogICAgICAgICBFWFBFQ1RfRkFMU0Uo
cmVzdWx0KTsKICAgICAgICAgRVhQRUNUX1RSVUUoISFlcnJvcik7CisgICAgICAgIGNsZWFuVXBJ
bkFwcEJyb3dzZXJQcml2YWN5VGVzdFNldHRpbmdzKCk7CiAgICAgICAgIGlzRG9uZSA9IHRydWU7
CiAgICAgfV07CiAKQEAgLTI2Nyw2ICsyNzcsNyBAQCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ks
IEFwcEJvdW5kRG9tYWlucykKICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZW5ndGg7IGkr
KykKICAgICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShbc29ydGVkRG9tYWlucyBvYmplY3RBdElu
ZGV4OmldLCBbZG9tYWluc1RvQ29tcGFyZSBvYmplY3RBdEluZGV4OmldKTsKIAorICAgICAgICBj
bGVhblVwSW5BcHBCcm93c2VyUHJpdmFjeVRlc3RTZXR0aW5ncygpOwogICAgICAgICBpc0RvbmUg
PSB0cnVlOwogICAgIH1dOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsK
QEAgLTI4Niw2ICsyOTcsNyBAQCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIExvY2FsRmlsZXNB
cmVBcHBCb3VuZCkKICAgICBpc0RvbmUgPSBmYWxzZTsKICAgICBbd2ViVmlldyBfaXNOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbjpeKEJPT0wgaXNBcHBCb3VuZCkgewogICAgICAgICBFWFBFQ1Rf
VFJVRShpc0FwcEJvdW5kKTsKKyAgICAgICAgY2xlYW5VcEluQXBwQnJvd3NlclByaXZhY3lUZXN0
U2V0dGluZ3MoKTsKICAgICAgICAgaXNEb25lID0gdHJ1ZTsKICAgICB9XTsKICAgICBUZXN0V2Vi
S2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CkBAIC0zMDQsNiArMzE2LDcgQEAgVEVTVChJbkFw
cEJyb3dzZXJQcml2YWN5LCBEYXRhRmlsZXNBcmVBcHBCb3VuZCkKICAgICBpc0RvbmUgPSBmYWxz
ZTsKICAgICBbd2ViVmlldyBfaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjpeKEJPT0wgaXNB
cHBCb3VuZCkgewogICAgICAgICBFWFBFQ1RfVFJVRShpc0FwcEJvdW5kKTsKKyAgICAgICAgY2xl
YW5VcEluQXBwQnJvd3NlclByaXZhY3lUZXN0U2V0dGluZ3MoKTsKICAgICAgICAgaXNEb25lID0g
dHJ1ZTsKICAgICB9XTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CkBA
IC0zMjIsNiArMzM1LDcgQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBBYm91dEZpbGVzQXJl
QXBwQm91bmQpCiAgICAgaXNEb25lID0gZmFsc2U7CiAgICAgW3dlYlZpZXcgX2lzTmF2aWdhdGlu
Z1RvQXBwQm91bmREb21haW46XihCT09MIGlzQXBwQm91bmQpIHsKICAgICAgICAgRVhQRUNUX1RS
VUUoaXNBcHBCb3VuZCk7CisgICAgICAgIGNsZWFuVXBJbkFwcEJyb3dzZXJQcml2YWN5VGVzdFNl
dHRpbmdzKCk7CiAgICAgICAgIGlzRG9uZSA9IHRydWU7CiAgICAgfV07CiAgICAgVGVzdFdlYktp
dEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwpAQCAtMzY2LDYgKzM4MCw3IEBAIFRFU1QoSW5BcHBC
cm93c2VyUHJpdmFjeSwgTm9uQXBwQm91bmRVc2VyU3R5bGVTaGVldEZvclNwZWNpZmljV2ViVmll
d0ZhaWxzKQogICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIF9hZGRV
c2VyU3R5bGVTaGVldDpzdHlsZVNoZWV0LmdldCgpXTsKIAogICAgIGV4cGVjdFNjcmlwdEV2YWx1
YXRlc1RvQ29sb3Iod2ViVmlldy5nZXQoKSwgYmFja2dyb3VuZENvbG9yU2NyaXB0LCByZWRJblJH
Qik7CisgICAgY2xlYW5VcEluQXBwQnJvd3NlclByaXZhY3lUZXN0U2V0dGluZ3MoKTsKIH0KIAog
VEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBOb25BcHBCb3VuZFVzZXJTdHlsZVNoZWV0Rm9yQWxs
V2ViVmlld3NGYWlscykKQEAgLTM4Nyw2ICs0MDIsNyBAQCBURVNUKEluQXBwQnJvd3NlclByaXZh
Y3ksIE5vbkFwcEJvdW5kVXNlclN0eWxlU2hlZXRGb3JBbGxXZWJWaWV3c0ZhaWxzKQogICAgIFtb
Y29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIF9hZGRVc2VyU3R5bGVTaGVldDpz
dHlsZVNoZWV0LmdldCgpXTsKIAogICAgIGV4cGVjdFNjcmlwdEV2YWx1YXRlc1RvQ29sb3Iod2Vi
Vmlldy5nZXQoKSwgYmFja2dyb3VuZENvbG9yU2NyaXB0LCByZWRJblJHQik7CisgICAgY2xlYW5V
cEluQXBwQnJvd3NlclByaXZhY3lUZXN0U2V0dGluZ3MoKTsKIH0KIAogVEVTVChJbkFwcEJyb3dz
ZXJQcml2YWN5LCBOb25BcHBCb3VuZFVzZXJTdHlsZVNoZWV0QWZmZWN0aW5nQWxsRnJhbWVzRmFp
bHMpCkBAIC00MTIsNiArNDI4LDcgQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBOb25BcHBC
b3VuZFVzZXJTdHlsZVNoZWV0QWZmZWN0aW5nQWxsRnJhbWVzRmFpbHMpCiAKICAgICAvLyBUaGUg
c3ViZnJhbWUgc2hvdWxkIGFsc28gYmUgYWZmZWN0ZWQuCiAgICAgZXhwZWN0U2NyaXB0RXZhbHVh
dGVzVG9Db2xvcih3ZWJWaWV3LmdldCgpLCBmcmFtZUJhY2tncm91bmRDb2xvclNjcmlwdCwgcmVk
SW5SR0IpOworICAgIGNsZWFuVXBJbkFwcEJyb3dzZXJQcml2YWN5VGVzdFNldHRpbmdzKCk7CiB9
CiAKIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgTm9uQXBwQm91bmREb21haW5DYW5ub3RBY2Nl
c3NNZXNzYWdlSGFuZGxlcnMpCkBAIC00MzgsNiArNDU1LDcgQEAgVEVTVChJbkFwcEJyb3dzZXJQ
cml2YWN5LCBOb25BcHBCb3VuZERvbWFpbkNhbm5vdEFjY2Vzc01lc3NhZ2VIYW5kbGVycykKICAg
ICAvLyBTZXQgdGhlIGJhY2tncm91bmQgY29sb3IgdG8gcmVkIGlmIG1lc3NhZ2UgaGFuZGxlcnMg
cmV0dXJuZWQgbnVsbCBzbyB3ZSBjYW4KICAgICAvLyBjaGVjayB3aXRob3V0IG5lZWRpbmcgYSBt
ZXNzYWdlIGhhbmRsZXIuCiAgICAgZXhwZWN0U2NyaXB0RXZhbHVhdGVzVG9Db2xvcih3ZWJWaWV3
LmdldCgpLCBiYWNrZ3JvdW5kQ29sb3JTY3JpcHQsIHJlZEluUkdCKTsKKyAgICBjbGVhblVwSW5B
cHBCcm93c2VyUHJpdmFjeVRlc3RTZXR0aW5ncygpOwogfQogCiBURVNUKEluQXBwQnJvd3NlclBy
aXZhY3ksIEFwcEJvdW5kVG9Ob25BcHBCb3VuZERvbWFpbkNhbm5vdEFjY2Vzc01lc3NhZ2VIYW5k
bGVycykKQEAgLTQ3Niw2ICs0OTQsMjU0IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgQXBw
Qm91bmRUb05vbkFwcEJvdW5kRG9tYWluQ2Fubm90QWNjZXNzTWVzc2FnZUhhbmRsZXJzCiAgICAg
Ly8gU2V0IHRoZSBiYWNrZ3JvdW5kIGNvbG9yIHRvIHJlZCBpZiBtZXNzYWdlIGhhbmRsZXJzIHJl
dHVybmVkIG51bGwgc28gd2UgY2FuCiAgICAgLy8gY2hlY2sgd2l0aG91dCBuZWVkaW5nIGEgbWVz
c2FnZSBoYW5kbGVyLgogICAgIGV4cGVjdFNjcmlwdEV2YWx1YXRlc1RvQ29sb3Iod2ViVmlldy5n
ZXQoKSwgYmFja2dyb3VuZENvbG9yU2NyaXB0LCByZWRJblJHQik7CisgICAgY2xlYW5VcEluQXBw
QnJvd3NlclByaXZhY3lUZXN0U2V0dGluZ3MoKTsKK30KKworc3RhdGljIFJldGFpblB0cjxXS0hU
VFBDb29raWVTdG9yZT4gZ2xvYmFsQ29va2llU3RvcmU7CitzdGF0aWMgYm9vbCBnb3RGbGFnID0g
ZmFsc2U7CisKK3N0YXRpYyB2b2lkIHNldFVwQ29va2llVGVzdCgpCit7CisgICAgZ2xvYmFsQ29v
a2llU3RvcmUgPSBbW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXSBodHRwQ29v
a2llU3RvcmVdOworICAgIE5TQXJyYXk8TlNIVFRQQ29va2llICo+ICpjb29raWVzID0gbmlsOwor
ICAgIFtnbG9iYWxDb29raWVTdG9yZSBnZXRBbGxDb29raWVzOltjb29raWVzUHRyID0gJmNvb2tp
ZXNdKE5TQXJyYXk8TlNIVFRQQ29va2llICo+ICpuc0Nvb2tpZXMpIHsKKyAgICAgICAgKmNvb2tp
ZXNQdHIgPSBbbnNDb29raWVzIHJldGFpbl07CisgICAgICAgIGdvdEZsYWcgPSB0cnVlOworICAg
IH1dOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZnb3RGbGFnKTsKKworICAgIGZv
ciAoaWQgY29va2llIGluIGNvb2tpZXMpIHsKKyAgICAgICAgZ290RmxhZyA9IGZhbHNlOworICAg
ICAgICBbZ2xvYmFsQ29va2llU3RvcmUgZGVsZXRlQ29va2llOmNvb2tpZSBjb21wbGV0aW9uSGFu
ZGxlcjpbXSgpIHsKKyAgICAgICAgICAgIGdvdEZsYWcgPSB0cnVlOworICAgICAgICB9XTsKKyAg
ICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZnb3RGbGFnKTsKKyAgICB9CisKKyAgICBj
b29raWVzID0gbmlsOworICAgIGdvdEZsYWcgPSBmYWxzZTsKKyAgICBbZ2xvYmFsQ29va2llU3Rv
cmUgZ2V0QWxsQ29va2llczpbY29va2llc1B0ciA9ICZjb29raWVzXShOU0FycmF5PE5TSFRUUENv
b2tpZSAqPiAqbnNDb29raWVzKSB7CisgICAgICAgICpjb29raWVzUHRyID0gW25zQ29va2llcyBy
ZXRhaW5dOworICAgICAgICBnb3RGbGFnID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFRlc3RXZWJL
aXRBUEk6OlV0aWw6OnJ1bigmZ290RmxhZyk7CisKKyAgICAvLyBNYWtlIHN1cmUgdGhlIGNvb2tp
ZSBzdG9yZSBzdGFydHMgb3V0IGVtcHR5LgorICAgIEFTU0VSVF9FUShjb29raWVzLmNvdW50LCAw
dSk7CisgICAgW2Nvb2tpZXMgcmVsZWFzZV07CisKKyAgICBnb3RGbGFnID0gZmFsc2U7Cit9CisK
K1RFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgU2V0Q29va2llRm9yTm9uQXBwQm91bmREb21haW5G
YWlscykKK3sKKyAgICBpbml0aWFsaXplSW5BcHBCcm93c2VyUHJpdmFjeVRlc3RTZXR0aW5ncygp
OworICAgIFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIHNldEJvb2w6WUVT
IGZvcktleTpAIldlYktpdERlYnVnSXNJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZCJdOworCisg
ICAgYXV0byBkYXRhU3RvcmUgPSBbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVd
OworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1Rlc3RXS1dlYlZpZXcgbmV3XSk7CisgICAg
W3dlYlZpZXcgbG9hZEhUTUxTdHJpbmc6QCJPaCBoZWxsbyIgYmFzZVVSTDpbTlNVUkwgVVJMV2l0
aFN0cmluZzpAImh0dHA6Ly93ZWJraXQub3JnIl1dOworICAgIFt3ZWJWaWV3IF90ZXN0X3dhaXRG
b3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKKworICAgIHNldFVwQ29va2llVGVzdCgpOworICAgIGds
b2JhbENvb2tpZVN0b3JlID0gW2RhdGFTdG9yZSBodHRwQ29va2llU3RvcmVdOworCisgICAgTlNB
cnJheTxOU0hUVFBDb29raWUgKj4gKmNvb2tpZXMgPSBuaWw7CisKKyAgICAvLyBOb24gYXBwLWJv
dW5kIGNvb2tpZS4KKyAgICBSZXRhaW5QdHI8TlNIVFRQQ29va2llPiBub25BcHBCb3VuZENvb2tp
ZSA9IFtOU0hUVFBDb29raWUgY29va2llV2l0aFByb3BlcnRpZXM6QHsKKyAgICAgICAgTlNIVFRQ
Q29va2llUGF0aDogQCIvIiwKKyAgICAgICAgTlNIVFRQQ29va2llTmFtZTogQCJub25BcHBCb3Vu
ZE5hbWUiLAorICAgICAgICBOU0hUVFBDb29raWVWYWx1ZTogQCJub25BcHBCb3VuZFZhbHVlIiwK
KyAgICAgICAgTlNIVFRQQ29va2llRG9tYWluOiBAIm5vbkFwcEJvdW5kRG9tYWluLmNvbSIsCisg
ICAgfV07CisKKyAgICAvLyBBcHAtYm91bmQgY29va2llLgorICAgIFJldGFpblB0cjxOU0hUVFBD
b29raWU+IGFwcEJvdW5kQ29va2llID0gW05TSFRUUENvb2tpZSBjb29raWVXaXRoUHJvcGVydGll
czpAeworICAgICAgICBOU0hUVFBDb29raWVQYXRoOiBAIi8iLAorICAgICAgICBOU0hUVFBDb29r
aWVOYW1lOiBAIndlYktpdE5hbWUiLAorICAgICAgICBOU0hUVFBDb29raWVWYWx1ZTogQCJ3ZWJL
aXRWYWx1ZSIsCisgICAgICAgIE5TSFRUUENvb2tpZURvbWFpbjogQCJ3d3cud2Via2l0Lm9yZyIs
CisgICAgfV07CisKKyAgICBnb3RGbGFnID0gZmFsc2U7CisgICAgLy8gVGhpcyBzaG91bGQgbm90
IGFjdHVhbGx5IHNldCBhIGNvb2tpZS4KKyAgICBbZ2xvYmFsQ29va2llU3RvcmUgc2V0Q29va2ll
Om5vbkFwcEJvdW5kQ29va2llLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOltdKCkgeworICAgICAg
ICBnb3RGbGFnID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1
bigmZ290RmxhZyk7CisgICAgZ290RmxhZyA9IGZhbHNlOworCisgICAgLy8gVGhpcyBzaG91bGQg
c3VjY2Vzc2Z1bGx5IHNldCBhIGNvb2tpZS4KKyAgICBbZ2xvYmFsQ29va2llU3RvcmUgc2V0Q29v
a2llOmFwcEJvdW5kQ29va2llLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOltdKCkgeworICAgICAg
ICBnb3RGbGFnID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1
bigmZ290RmxhZyk7CisKKyAgICBjbGVhblVwSW5BcHBCcm93c2VyUHJpdmFjeVRlc3RTZXR0aW5n
cygpOworICAgIFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIHNldEJvb2w6
Tk8gZm9yS2V5OkAiV2ViS2l0RGVidWdJc0luQXBwQnJvd3NlclByaXZhY3lFbmFibGVkIl07Cisg
ICAgZ290RmxhZyA9IGZhbHNlOworCisgICAgLy8gQ2hlY2sgdGhlIGNvb2tpZSBzdG9yZSB0byBt
YWtlIHN1cmUgb25seSBvbmUgY29va2llIHdhcyBzZXQuCisgICAgW2dsb2JhbENvb2tpZVN0b3Jl
IGdldEFsbENvb2tpZXM6W2Nvb2tpZXNQdHIgPSAmY29va2llc10oTlNBcnJheTxOU0hUVFBDb29r
aWUgKj4gKm5zQ29va2llcykgeworICAgICAgICAqY29va2llc1B0ciA9IFtuc0Nvb2tpZXMgcmV0
YWluXTsKKyAgICAgICAgZ290RmxhZyA9IHRydWU7CisgICAgfV07CisKKyAgICBUZXN0V2ViS2l0
QVBJOjpVdGlsOjpydW4oJmdvdEZsYWcpOworCisgICAgQVNTRVJUX0VRKGNvb2tpZXMuY291bnQs
IDF1KTsKKworICAgIFtjb29raWVzIHJlbGVhc2VdOworICAgIGdvdEZsYWcgPSBmYWxzZTsKKyAg
ICBbZ2xvYmFsQ29va2llU3RvcmUgZGVsZXRlQ29va2llOmFwcEJvdW5kQ29va2llLmdldCgpIGNv
bXBsZXRpb25IYW5kbGVyOltdKCkgeworICAgICAgICBnb3RGbGFnID0gdHJ1ZTsKKyAgICB9XTsK
KworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZ290RmxhZyk7Cit9CisKK1RFU1QoSW5B
cHBCcm93c2VyUHJpdmFjeSwgR2V0Q29va2llRm9yTm9uQXBwQm91bmREb21haW5GYWlscykKK3sK
KyAgICAvLyBTaW5jZSB3ZSBjYW4ndCBzZXQgbm9uLWFwcC1ib3VuZCBjb29raWVzIHdpdGggSW4t
QXBwIEJyb3dzZXIgcHJpdmFjeSBwcm90ZWN0aW9ucyBvbiwKKyAgICAvLyB3ZSBjYW4gdHVybiB0
aGUgcHJvdGVjdGlvbnMgb2ZmIHRvIHNldCBhIGNvb2tpZSB3ZSB3aWxsIHRoZW4gdHJ5IHRvIGdl
dCB3aXRoIHByb3RlY3Rpb25zIGVuYWJsZWQuCisgICAgW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFy
ZFVzZXJEZWZhdWx0c10gc2V0Qm9vbDpOTyBmb3JLZXk6QCJXZWJLaXREZWJ1Z0lzSW5BcHBCcm93
c2VyUHJpdmFjeUVuYWJsZWQiXTsKKworICAgIHNldFVwQ29va2llVGVzdCgpOworICAgIGdsb2Jh
bENvb2tpZVN0b3JlID0gW1tXS1dlYnNpdGVEYXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV0gaHR0
cENvb2tpZVN0b3JlXTsKKyAgICBOU0FycmF5PE5TSFRUUENvb2tpZSAqPiAqY29va2llcyA9IG5p
bDsKKworICAgIC8vIE5vbiBhcHAtYm91bmQgY29va2llLgorICAgIFJldGFpblB0cjxOU0hUVFBD
b29raWU+IG5vbkFwcEJvdW5kQ29va2llID0gW05TSFRUUENvb2tpZSBjb29raWVXaXRoUHJvcGVy
dGllczpAeworICAgICAgICBOU0hUVFBDb29raWVQYXRoOiBAIi8iLAorICAgICAgICBOU0hUVFBD
b29raWVOYW1lOiBAIkNvb2tpZU5hbWUiLAorICAgICAgICBOU0hUVFBDb29raWVWYWx1ZTogQCJD
b29raWVWYWx1ZSIsCisgICAgICAgIE5TSFRUUENvb2tpZURvbWFpbjogQCJub25BcHBCb3VuZERv
bWFpbi5jb20iLAorICAgIH1dOworCisgICAgLy8gQXBwLWJvdW5kIGNvb2tpZS4KKyAgICBSZXRh
aW5QdHI8TlNIVFRQQ29va2llPiBhcHBCb3VuZENvb2tpZSA9IFtOU0hUVFBDb29raWUgY29va2ll
V2l0aFByb3BlcnRpZXM6QHsKKyAgICAgICAgTlNIVFRQQ29va2llUGF0aDogQCIvIiwKKyAgICAg
ICAgTlNIVFRQQ29va2llTmFtZTogQCJPdGhlckNvb2tpZU5hbWUiLAorICAgICAgICBOU0hUVFBD
b29raWVWYWx1ZTogQCJPdGhlckNvb2tpZVZhbHVlIiwKKyAgICAgICAgTlNIVFRQQ29va2llRG9t
YWluOiBAInd3dy53ZWJraXQub3JnIiwKKyAgICB9XTsKKworICAgIGF1dG8gd2ViVmlldyA9IGFk
b3B0TlMoW1Rlc3RXS1dlYlZpZXcgbmV3XSk7CisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxv
YWRIVE1MU3RyaW5nOkAic3RhcnQgbmV0d29yayBwcm9jZXNzIl07CisKKyAgICAvLyBUaGlzIHNo
b3VsZCBzdWNjZXNzZnVsbHkgc2V0IGEgY29va2llIGJlY2F1c2UgcHJvdGVjdGlvbnMgYXJlIG9m
Zi4KKyAgICBbZ2xvYmFsQ29va2llU3RvcmUgc2V0Q29va2llOm5vbkFwcEJvdW5kQ29va2llLmdl
dCgpIGNvbXBsZXRpb25IYW5kbGVyOltdKCkgeworICAgICAgICBnb3RGbGFnID0gdHJ1ZTsKKyAg
ICB9XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZ290RmxhZyk7CisgICAgZ290
RmxhZyA9IGZhbHNlOworCisgICAgW2dsb2JhbENvb2tpZVN0b3JlIHNldENvb2tpZTphcHBCb3Vu
ZENvb2tpZS5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpbXSgpIHsKKyAgICAgICAgZ290RmxhZyA9
IHRydWU7CisgICAgfV07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmdvdEZsYWcp
OworCisgICAgZ290RmxhZyA9IGZhbHNlOworICAgIFtnbG9iYWxDb29raWVTdG9yZSBnZXRBbGxD
b29raWVzOltjb29raWVzUHRyID0gJmNvb2tpZXNdKE5TQXJyYXk8TlNIVFRQQ29va2llICo+ICpu
c0Nvb2tpZXMpIHsKKyAgICAgICAgKmNvb2tpZXNQdHIgPSBbbnNDb29raWVzIHJldGFpbl07Cisg
ICAgICAgIGdvdEZsYWcgPSB0cnVlOworICAgIH1dOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRp
bDo6cnVuKCZnb3RGbGFnKTsKKworICAgIC8vIENvbmZpcm0gYm90aCBjb29raWVzIGFyZSBpbiB0
aGUgc3RvcmUuCisgICAgQVNTRVJUX0VRKGNvb2tpZXMuY291bnQsIDJ1KTsKKworICAgIC8vIE5v
dyBlbmFibGUgcHJvdGVjdGlvbnMgYW5kIGVuc3VyZSB3ZSBjYW4gb25seSByZXRyaWV2ZSB0aGUg
YXBwLWJvdW5kIGNvb2tpZXMuCisgICAgW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZh
dWx0c10gc2V0Qm9vbDpZRVMgZm9yS2V5OkAiV2ViS2l0RGVidWdJc0luQXBwQnJvd3NlclByaXZh
Y3lFbmFibGVkIl07CisgICAgaW5pdGlhbGl6ZUluQXBwQnJvd3NlclByaXZhY3lUZXN0U2V0dGlu
Z3MoKTsKKworICAgIGdvdEZsYWcgPSBmYWxzZTsKKyAgICBbZ2xvYmFsQ29va2llU3RvcmUgZ2V0
QWxsQ29va2llczpbY29va2llc1B0ciA9ICZjb29raWVzXShOU0FycmF5PE5TSFRUUENvb2tpZSAq
PiAqbnNDb29raWVzKSB7CisgICAgICAgICpjb29raWVzUHRyID0gW25zQ29va2llcyByZXRhaW5d
OworICAgICAgICBnb3RGbGFnID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnJ1bigmZ290RmxhZyk7CisKKyAgICBBU1NFUlRfRVEoY29va2llcy5jb3VudCwgMXUp
OworCisgICAgW2Nvb2tpZXMgcmVsZWFzZV07CisKKyAgICBnb3RGbGFnID0gZmFsc2U7CisgICAg
W2dsb2JhbENvb2tpZVN0b3JlIGRlbGV0ZUNvb2tpZTpub25BcHBCb3VuZENvb2tpZS5nZXQoKSBj
b21wbGV0aW9uSGFuZGxlcjpbXSgpIHsKKyAgICAgICAgZ290RmxhZyA9IHRydWU7CisgICAgfV07
CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmdvdEZsYWcpOworCisgICAgZ290Rmxh
ZyA9IGZhbHNlOworICAgIFtnbG9iYWxDb29raWVTdG9yZSBkZWxldGVDb29raWU6YXBwQm91bmRD
b29raWUuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6W10oKSB7CisgICAgICAgIC8vIFJlc2V0IGZs
YWcuCisgICAgICAgIFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIHNldEJv
b2w6Tk8gZm9yS2V5OkAiV2ViS2l0RGVidWdJc0luQXBwQnJvd3NlclByaXZhY3lFbmFibGVkIl07
CisgICAgICAgIGNsZWFuVXBJbkFwcEJyb3dzZXJQcml2YWN5VGVzdFNldHRpbmdzKCk7CisgICAg
ICAgIGdvdEZsYWcgPSB0cnVlOworICAgIH1dOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
cnVuKCZnb3RGbGFnKTsKK30KKworVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBHZXRDb29raWVG
b3JVUkxGYWlscykKK3sKKyAgICAvLyBTaW5jZSB3ZSBjYW4ndCBzZXQgbm9uLWFwcC1ib3VuZCBj
b29raWVzIHdpdGggSW4tQXBwIEJyb3dzZXIgcHJpdmFjeSBwcm90ZWN0aW9ucyBvbiwKKyAgICAv
LyB3ZSBjYW4gdHVybiB0aGUgcHJvdGVjdGlvbnMgb2ZmIHRvIHNldCBhIGNvb2tpZSB3ZSB3aWxs
IHRoZW4gdHJ5IHRvIGdldCB3aXRoIHByb3RlY3Rpb25zIGVuYWJsZWQuCisgICAgW1tOU1VzZXJE
ZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gc2V0Qm9vbDpOTyBmb3JLZXk6QCJXZWJLaXRE
ZWJ1Z0lzSW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQiXTsKKyAgICBzZXRVcENvb2tpZVRlc3Qo
KTsKKworICAgIGdsb2JhbENvb2tpZVN0b3JlID0gW1tXS1dlYnNpdGVEYXRhU3RvcmUgZGVmYXVs
dERhdGFTdG9yZV0gaHR0cENvb2tpZVN0b3JlXTsKKyAgICBOU0hUVFBDb29raWUgKm5vbkFwcEJv
dW5kQ29va2llID0gW05TSFRUUENvb2tpZSBjb29raWVXaXRoUHJvcGVydGllczpAeworICAgICAg
ICBOU0hUVFBDb29raWVQYXRoOiBAIi8iLAorICAgICAgICBOU0hUVFBDb29raWVOYW1lOiBAIm5v
bkFwcEJvdW5kTmFtZSIsCisgICAgICAgIE5TSFRUUENvb2tpZVZhbHVlOiBAIm5vbkFwcEJvdW5k
VmFsdWUiLAorICAgICAgICBOU0hUVFBDb29raWVEb21haW46IEAibm9uQXBwQm91bmREb21haW4u
Y29tIiwKKyAgICB9XTsKKyAgICAKKyAgICBOU0hUVFBDb29raWUgKmFwcEJvdW5kQ29va2llID0g
W05TSFRUUENvb2tpZSBjb29raWVXaXRoUHJvcGVydGllczpAeworICAgICAgICBOU0hUVFBDb29r
aWVQYXRoOiBAIi8iLAorICAgICAgICBOU0hUVFBDb29raWVOYW1lOiBAIndlYktpdE5hbWUiLAor
ICAgICAgICBOU0hUVFBDb29raWVWYWx1ZTogQCJ3ZWJLaXRWYWx1ZSIsCisgICAgICAgIE5TSFRU
UENvb2tpZURvbWFpbjogQCJ3ZWJraXQub3JnIiwKKyAgICB9XTsKKworICAgIF9fYmxvY2sgYm9v
bCBkb25lID0gZmFsc2U7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbVGVzdFdLV2ViVmll
dyBuZXddKTsKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCJzdGFy
dCBuZXR3b3JrIHByb2Nlc3MiXTsKKyAgICBbZ2xvYmFsQ29va2llU3RvcmUgc2V0Q29va2llOm5v
bkFwcEJvdW5kQ29va2llIGNvbXBsZXRpb25IYW5kbGVyOl57CisgICAgICAgIFtnbG9iYWxDb29r
aWVTdG9yZSBzZXRDb29raWU6YXBwQm91bmRDb29raWUgY29tcGxldGlvbkhhbmRsZXI6XnsKKwor
ICAgICAgICAgICAgLy8gTm93IGVuYWJsZSBwcm90ZWN0aW9ucyBhbmQgZW5zdXJlIHdlIGNhbiBv
bmx5IHJldHJpZXZlIHRoZSBhcHAtYm91bmQgY29va2llcy4KKyAgICAgICAgICAgIFtbTlNVc2Vy
RGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIHNldEJvb2w6WUVTIGZvcktleTpAIldlYktp
dERlYnVnSXNJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZCJdOworICAgICAgICAgICAgaW5pdGlh
bGl6ZUluQXBwQnJvd3NlclByaXZhY3lUZXN0U2V0dGluZ3MoKTsKKworICAgICAgICAgICAgW2ds
b2JhbENvb2tpZVN0b3JlIF9nZXRDb29raWVzRm9yVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAi
aHR0cHM6Ly93ZWJraXQub3JnLyJdIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNBcnJheTxOU0hUVFBD
b29raWUgKj4gKmNvb2tpZXMpIHsKKyAgICAgICAgICAgICAgICBFWFBFQ1RfRVEoY29va2llcy5j
b3VudCwgMXVsbCk7CisgICAgICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGNvb2tpZXNbMF0u
bmFtZSwgIndlYktpdE5hbWUiKTsKKyAgICAgICAgICAgICAgICBbZ2xvYmFsQ29va2llU3RvcmUg
X2dldENvb2tpZXNGb3JVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwczovL25vbkFwcEJv
dW5kRG9tYWluLmNvbS8iXSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TQXJyYXk8TlNIVFRQQ29va2ll
ICo+ICpjb29raWVzKSB7CisgICAgICAgICAgICAgICAgICAgIEVYUEVDVF9FUShjb29raWVzLmNv
dW50LCAwdSk7CisgICAgICAgICAgICAgICAgICAgIFtnbG9iYWxDb29raWVTdG9yZSBkZWxldGVD
b29raWU6bm9uQXBwQm91bmRDb29raWUgY29tcGxldGlvbkhhbmRsZXI6XnsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIFtnbG9iYWxDb29raWVTdG9yZSBkZWxldGVDb29raWU6YXBwQm91bmRDb29r
aWUgY29tcGxldGlvbkhhbmRsZXI6XnsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbW05T
VXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBzZXRCb29sOk5PIGZvcktleTpAIldl
YktpdERlYnVnSXNJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZCJdOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNsZWFuVXBJbkFwcEJyb3dzZXJQcml2YWN5VGVzdFNldHRpbmdzKCk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9uZSA9IHRydWU7CisgICAgICAgICAgICAgICAg
ICAgICAgICB9XTsKKyAgICAgICAgICAgICAgICAgICAgfV07CisgICAgICAgICAgICAgICAgfV07
CisgICAgICAgICAgICB9XTsKKyAgICAgICAgfV07CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZkb25lKTsKIH0KIAogI2VuZGlmIC8vIFVTRShBUFBMRV9JTlRFUk5BTF9T
REspCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>