<?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>44657</bug_id>
          
          <creation_ts>2010-08-25 19:15:56 -0700</creation_ts>
          <short_desc>Support FileReaderSync in workers</short_desc>
          <delta_ts>2011-06-14 10:57:21 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore JavaScript</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jian Li">jianli</reporter>
          <assigned_to name="Jian Li">jianli</assigned_to>
          <cc>dimich</cc>
    
    <cc>eric</cc>
    
    <cc>fishd</cc>
    
    <cc>kinuko</cc>
    
    <cc>levin</cc>
    
    <cc>shang.xiao.sanders</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>269678</commentid>
    <comment_count>0</comment_count>
    <who name="Jian Li">jianli</who>
    <bug_when>2010-08-25 19:15:56 -0700</bug_when>
    <thetext>Need to expose FileReaderSync and BlobBuilder in workers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269681</commentid>
    <comment_count>1</comment_count>
      <attachid>65515</attachid>
    <who name="Jian Li">jianli</who>
    <bug_when>2010-08-25 19:23:38 -0700</bug_when>
    <thetext>Created attachment 65515
Proposed Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270233</commentid>
    <comment_count>2</comment_count>
      <attachid>65649</attachid>
    <who name="Jian Li">jianli</who>
    <bug_when>2010-08-26 17:19:28 -0700</bug_when>
    <thetext>Created attachment 65649
Proposed Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270639</commentid>
    <comment_count>3</comment_count>
      <attachid>65649</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2010-08-27 11:59:18 -0700</bug_when>
    <thetext>Comment on attachment 65649
Proposed Patch

r- mostly concerned about &quot; we choose to ignore this...&quot;, but please consider the rest as well.


Why is &quot;LayoutTests/fast/files/workers/worker-read-file-sync-expected.txt&quot; a binary file?



WebCore/ChangeLog:8
 +          Also add FileException interface and make Blob/File/FileError be useable in
remove &quot;be&quot;

WebCore/html/FileError.idl:34
 +          NoStaticTables,
Since ordering doesn&apos;t matter, I suggesting sorting.

WebCore/html/FileException.idl:35
 +          DontCheckEnums
Consider sorting.

WebCore/html/FileReaderSync.cpp:133
 +      default:
Please only handle the enums in the switch.

You can change the break to return and put this assert after the switch statement.

WebCore/html/FileReaderSync.cpp:159
 +      // The File API spec says that we should use the supplied encoding if it is valid. However, we choose to ignore this
What does Firefox do?

WebCore/html/FileReaderSync.cpp:160
 +      // requirement in order to be consistent with how WebKit decodes the web content: always has the BOM override the
s/has/have/

WebCore/html/FileReaderSync.h:59
 +      const ScriptString&amp; readAsText(ScriptExecutionContext* scriptExecutionContext, Blob* blob, ExceptionCode&amp; ec) {
{ placement.

WebCore/html/FileReaderSync.h:87
 +      // See FileReader for comment about why ScriptString is used.
Referring to a comment in another file seems like it will make this comment get easily invalidated.

WebCore/html/FileReaderSync.idl:35
 +          NoStaticTables,
Extra ,

WebCore/html/FileReaderSync.h:37
 +  #include &quot;PlatformString.h&quot;
Why do we need this header?

WebCore/html/FileReaderSync.cpp:97
 +          FileReader::convertToDataURL(m_rawData, blob-&gt;type(), m_result);
m_rawData isn&apos;t needed after this point, right?

WebCore/html/FileReaderSync.cpp:127
 +          m_result += String(data, static_cast&lt;unsigned&gt;(lengthReceived));
If this same class is called again, this will keep appending.

Please consider adding a test for this.


WebCore/html/FileReaderSync.cpp:114
 +      ThreadableLoader::loadResourceSynchronously(scriptExecutionContext, request, *this, options);
It seems like it would be better to break out the ThreadableLoaderClient into a separate class that could be returned from this method with all the data and then thrown away after the data is used.

This would get rid of the issues like m_rawData staying around or things being appended to if the method is called again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270828</commentid>
    <comment_count>4</comment_count>
      <attachid>65791</attachid>
    <who name="Jian Li">jianli</who>
    <bug_when>2010-08-27 17:04:40 -0700</bug_when>
    <thetext>Created attachment 65791
Proposed Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270837</commentid>
    <comment_count>5</comment_count>
    <who name="Jian Li">jianli</who>
    <bug_when>2010-08-27 17:10:05 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 65649 [details])
&gt; r- mostly concerned about &quot; we choose to ignore this...&quot;, but please consider the rest as well.
&gt; 
&gt; 
&gt; Why is &quot;LayoutTests/fast/files/workers/worker-read-file-sync-expected.txt&quot; a binary file?

Because it contains some binary character. I have a test that reads the non-ascii characters in the binary file.
&gt; 
 

&gt; WebCore/html/FileReaderSync.cpp:159
&gt;  +      // The File API spec says that we should use the supplied encoding if it is valid. However, we choose to ignore this
&gt; What does Firefox do?

This be-consistent-with-WebKit behavior is what ap suggested last time when he reviewed my patch (https://bugs.webkit.org/show_bug.cgi?id=39131).

&gt; WebCore/html/FileReaderSync.cpp:114
&gt;  +      ThreadableLoader::loadResourceSynchronously(scriptExecutionContext, request, *this, options);
&gt; It seems like it would be better to break out the ThreadableLoaderClient into a separate class that could be returned from this method with all the data and then thrown away after the data is used.
&gt; 
&gt; This would get rid of the issues like m_rawData staying around or things being appended to if the method is called again.

Changed as suggested.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270840</commentid>
    <comment_count>6</comment_count>
      <attachid>65791</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2010-08-27 17:18:34 -0700</bug_when>
    <thetext>Comment on attachment 65791
Proposed Patch

Please consider adding a simple test in a future patch that verifies that FileReader can be used more than once and not keep filling the same buffer.



&gt; diff --git a/WebCore/html/FileReaderSync.cpp b/WebCore/html/FileReaderSync.cpp
&gt; +void FileReaderSync::read(ScriptExecutionContext* scriptExecutionContext, Blob* blob, ReadType readType, ExceptionCode&amp; ec)
&gt; +{
&gt; +    // The blob is read by routing through the request handling layer given the blob url.
&gt; +    ResourceRequest request(blob-&gt;url());
&gt; +    request.setHTTPMethod(&quot;GET&quot;);
&gt; +
&gt; +    FileReaderSyncLoader loader((readType == ReadAsBinaryString) ? &amp;m_result : 0);

Passing in m_result doesn&apos;t seem needed.  ScriptStrings are fast to copy (since they are simply a wrapper around a RefCounted object.


&gt; diff --git a/WebCore/html/FileReaderSync.h b/WebCore/html/FileReaderSync.h

&gt; +#include &quot;ThreadableLoaderClient.h&quot;

Not needed here anymore.

&gt; +#include &lt;wtf/Vector.h&gt;

Not needed here anymore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>271963</commentid>
    <comment_count>7</comment_count>
    <who name="Jian Li">jianli</who>
    <bug_when>2010-08-31 00:26:53 -0700</bug_when>
    <thetext>Committed as http://trac.webkit.org/changeset/66461.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>273285</commentid>
    <comment_count>8</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-09-02 02:51:41 -0700</bug_when>
    <thetext>http://trac.webkit.org/browser/trunk/LayoutTests/fast/files/workers/worker-read-blob-async.html

Looks to be flaky on leopard.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>273611</commentid>
    <comment_count>9</comment_count>
    <who name="Jian Li">jianli</who>
    <bug_when>2010-09-02 15:22:05 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; http://trac.webkit.org/browser/trunk/LayoutTests/fast/files/workers/worker-read-blob-async.html
&gt; 
&gt; Looks to be flaky on leopard.

That&apos;s strange. I found out one failure as the following: 
http://build.webkit.org/results/Leopard%20Intel%20Debug%20(Tests)/r66646%20(19656)/results.html

The difference is:

Received loadstart event (from worker-read-blob-async-expected.txt)
....ived loadstart event (from worker-read-blob-async-actual.txt)

The &quot;.&quot; above is hexadecimal 00. In this test, we call postMessage() to post the result back from the worker to the main document for display. It seems that we receive the garbage characters occasionally.

I will talk with relevant people to see how this is possible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>420575</commentid>
    <comment_count>10</comment_count>
    <who name="Jian Li">jianli</who>
    <bug_when>2011-06-14 10:57:21 -0700</bug_when>
    <thetext>*** Bug 41567 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65515</attachid>
            <date>2010-08-25 19:23:38 -0700</date>
            <delta_ts>2010-08-26 17:19:28 -0700</delta_ts>
            <desc>Proposed Patch</desc>
            <filename>44657</filename>
            <type>text/plain</type>
            <size>58439</size>
            <attacher name="Jian Li">jianli</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAxMDZlYTI1YjExM2Q2ODA4ZWY1MjZjZDYxZDBkNGM5YzcyZGQ0ZGY3Li4xZWQ2YTU5
YTg4ZmQyM2Q1MWYxMzAzMmE4MjljZDQzZjY2OTIzNDE5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDkgQEAK
KzIwMTAtMDgtMjUgIEppYW4gTGkgIDxqaWFubGlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFN1cHBvcnQgRmlsZVJlYWRlclN5
bmMgaW4gd29ya2Vycy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTQ0NjU3CisKKyAgICAgICAgQWRkZWQgNCB0ZXN0IGZpbGVzIHRvIHRlc3QgRmlsZVJl
YWRlclN5bmMgaW4gd29ya2Vycy4KKworICAgICAgICAqIGZhc3QvZmlsZXMvcmVhZC1ibG9iLWFz
eW5jLmh0bWw6CisgICAgICAgICogZmFzdC9maWxlcy9yZWFkLWZpbGUtYXN5bmMuaHRtbDoKKyAg
ICAgICAgKiBmYXN0L2ZpbGVzL3Jlc291cmNlcy9yZWFkLWNvbW1vbi5qczoKKyAgICAgICAgKHJl
YWRCbG9iQXNCaW5hcnlTdHJpbmcpOgorICAgICAgICAocmVhZEJsb2JBc1RleHQpOgorICAgICAg
ICAocmVhZEJsb2JBc0RhdGFVUkwpOgorICAgICAgICAoX3JlYWRCbG9iQXNCaW5hcnlTdHJpbmdB
c3luYyk6CisgICAgICAgIChfcmVhZEJsb2JBc1RleHRBc3luYyk6CisgICAgICAgIChfcmVhZEJs
b2JBc0RhdGFVUkxBc3luYyk6CisgICAgICAgIChfcmVhZEJsb2JBc0JpbmFyeVN0cmluZ1N5bmMp
OgorICAgICAgICAoX3JlYWRCbG9iQXNUZXh0U3luYyk6CisgICAgICAgIChfcmVhZEJsb2JBc0Rh
dGFVUkxTeW5jKToKKyAgICAgICAgKGNyZWF0ZVJlYWRlclN5bmMpOgorICAgICAgICAqIGZhc3Qv
ZmlsZXMvcmVzb3VyY2VzL3JlYWQtZmlsZS10ZXN0LWNhc2VzLmpzOgorICAgICAgICAodGVzdE11
bHRpcGxlUmVhZHMpOgorICAgICAgICAqIGZhc3QvZmlsZXMvcmVzb3VyY2VzL3NldHVwLWZvci1y
ZWFkLWNvbW1vbi5qczoKKyAgICAgICAgKHN0YXJ0V29ya2VyLndvcmtlci5vbm1lc3NhZ2UpOgor
ICAgICAgICAoc3RhcnRXb3JrZXIud29ya2VyLm9uZXJyb3IpOgorICAgICAgICAoc3RhcnRXb3Jr
ZXIpOgorICAgICAgICAqIGZhc3QvZmlsZXMvd29ya2Vycy9yZXNvdXJjZXMvd29ya2VyLXJlYWQt
YmxvYi1hc3luYy5qczogQWRkZWQuCisgICAgICAgICogZmFzdC9maWxlcy93b3JrZXJzL3Jlc291
cmNlcy93b3JrZXItcmVhZC1ibG9iLXN5bmMuanM6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZmls
ZXMvd29ya2Vycy9yZXNvdXJjZXMvd29ya2VyLXJlYWQtY29tbW9uLmpzOiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2ZpbGVzL3dvcmtlcnMvcmVzb3VyY2VzL3dvcmtlci1yZWFkLWZpbGUtYXN5bmMu
anM6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZmlsZXMvd29ya2Vycy9yZXNvdXJjZXMvd29ya2Vy
LXJlYWQtZmlsZS1zeW5jLmpzOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZpbGVzL3dvcmtlcnMv
d29ya2VyLXJlYWQtYmxvYi1hc3luYy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvZmlsZXMvd29ya2Vycy93b3JrZXItcmVhZC1ibG9iLWFzeW5jLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvZmlsZXMvd29ya2Vycy93b3JrZXItcmVhZC1ibG9iLXN5bmMtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZpbGVzL3dvcmtlcnMvd29ya2VyLXJlYWQtYmxv
Yi1zeW5jLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZmlsZXMvd29ya2Vycy93b3JrZXIt
cmVhZC1maWxlLWFzeW5jLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9maWxl
cy93b3JrZXJzL3dvcmtlci1yZWFkLWZpbGUtYXN5bmMuaHRtbDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9maWxlcy93b3JrZXJzL3dvcmtlci1yZWFkLWZpbGUtc3luYy1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvZmlsZXMvd29ya2Vycy93b3JrZXItcmVhZC1maWxlLXN5bmMu
aHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3RrL1NraXBwZWQ6CisgICAgICAgICog
cGxhdGZvcm0vbWFjLXdrMi9Ta2lwcGVkOgorICAgICAgICAqIHBsYXRmb3JtL3F0L1NraXBwZWQ6
CisgICAgICAgICogcGxhdGZvcm0vd2luL1NraXBwZWQ6CisKIDIwMTAtMDgtMjUgIENocmlzIE1h
cnJpbiAgPGNtYXJyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQuCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVzL3JlYWQtYmxvYi1hc3luYy5odG1sIGIvTGF5b3V0
VGVzdHMvZmFzdC9maWxlcy9yZWFkLWJsb2ItYXN5bmMuaHRtbAppbmRleCA4MDcwMTIzMjNmZjY4
MTNlMmQ4NDFlODZlNDUyZjk1OGQyNmZiOWQ2Li42ZDI2NzBhMDQxMzJiNDcxMTU5OWU2NmE3MTA1
YjcwNDNlYTAzZmM3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVzL3JlYWQtYmxv
Yi1hc3luYy5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZmlsZXMvcmVhZC1ibG9iLWFzeW5j
Lmh0bWwKQEAgLTE2LDYgKzE2LDExIEBAIHZhciB0ZXN0RmlsZUluZm9MaXN0ID0gWwogICAgIHsg
J25hbWUnOiAnZmlsZTMnLCAncGF0aCc6ICdyZXNvdXJjZXMvVVRGOC0zLnR4dCcgfSwKIF07CiAK
K2Z1bmN0aW9uIGlzUmVhZEFzQXN5bmMoKQoreworICAgIHJldHVybiB0cnVlOworfQorCiBmdW5j
dGlvbiBzdGFydFRlc3QodGVzdEZpbGVzKQogewogICAgIHJ1bk5leHRUZXN0KHRlc3RGaWxlcyk7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVzL3JlYWQtZmlsZS1hc3luYy5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC9maWxlcy9yZWFkLWZpbGUtYXN5bmMuaHRtbAppbmRleCBjNjE0
ZGZkZmI1MWQ3Zjk4Mzk3ZDdhNDlhOTc1YTE4Mzk3YjVmYTQ2Li41OGE0YTA3Y2RmZTUyYzRkNDAz
N2FkMzg0MmRmZTA5MTZjNjlmNThiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVz
L3JlYWQtZmlsZS1hc3luYy5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZmlsZXMvcmVhZC1m
aWxlLWFzeW5jLmh0bWwKQEAgLTE5LDYgKzE5LDExIEBAIHZhciB0ZXN0RmlsZUluZm9MaXN0ID0g
WwogICAgIHsgJ25hbWUnOiAnYmluYXJ5LWZpbGUnLCAncGF0aCc6ICdyZXNvdXJjZXMvYmluYXJ5
LWZpbGUnIH0sCiBdOwogCitmdW5jdGlvbiBpc1JlYWRBc0FzeW5jKCkKK3sKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKwogZnVuY3Rpb24gc3RhcnRUZXN0KHRlc3RGaWxlcykKIHsKICAgICBydW5OZXh0
VGVzdCh0ZXN0RmlsZXMpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9maWxlcy9yZXNv
dXJjZXMvcmVhZC1jb21tb24uanMgYi9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVzL3Jlc291cmNlcy9y
ZWFkLWNvbW1vbi5qcwppbmRleCBlNWQyN2YzOWY5MTNiYzlhNWNjNjBkYTJlNTQ1NTBmZGFlNzE5
MmQ4Li4wM2JjYjZmYzNjMmRkZWNlYTljMWQ1NDJhZWE5ZTQxMWI4ZGVlN2RlIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVzL3Jlc291cmNlcy9yZWFkLWNvbW1vbi5qcworKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2ZpbGVzL3Jlc291cmNlcy9yZWFkLWNvbW1vbi5qcwpAQCAtOSwyNSAr
OSw5MiBAQCBmdW5jdGlvbiBidWlsZEJsb2IoaXRlbXMsIGJ1aWxkZXIpCiAgICAgcmV0dXJuIGJ1
aWxkZXIuZ2V0QmxvYigpOwogfQogCisvLyBSZWFkcyBhIGJsb2IgZWl0aGVyIGFzeW5jaHJvbm91
c2x5IG9yIHN5bmNocm9ub3VzbHkuCiBmdW5jdGlvbiByZWFkQmxvYkFzQmluYXJ5U3RyaW5nKHRl
c3RGaWxlcywgYmxvYikKIHsKLSAgICB2YXIgcmVhZGVyID0gY3JlYXRlUmVhZGVyKHRlc3RGaWxl
cyk7Ci0gICAgcmVhZGVyLnJlYWRBc0JpbmFyeVN0cmluZyhibG9iKQorICAgIGlmIChpc1JlYWRB
c0FzeW5jKCkpCisgICAgICAgIF9yZWFkQmxvYkFzQmluYXJ5U3RyaW5nQXN5bmModGVzdEZpbGVz
LCBibG9iKTsKKyAgICBlbHNlCisgICAgICAgIF9yZWFkQmxvYkFzQmluYXJ5U3RyaW5nU3luYyh0
ZXN0RmlsZXMsIGJsb2IpOwogfQogCiBmdW5jdGlvbiByZWFkQmxvYkFzVGV4dCh0ZXN0RmlsZXMs
IGJsb2IsIGVuY29kaW5nKQogewotICAgIHZhciByZWFkZXIgPSBjcmVhdGVSZWFkZXIodGVzdEZp
bGVzKTsKLSAgICByZWFkZXIucmVhZEFzVGV4dChibG9iLCBlbmNvZGluZykKKyAgICBpZiAoaXNS
ZWFkQXNBc3luYygpKQorICAgICAgICBfcmVhZEJsb2JBc1RleHRBc3luYyh0ZXN0RmlsZXMsIGJs
b2IsIGVuY29kaW5nKTsKKyAgICBlbHNlCisgICAgICAgIF9yZWFkQmxvYkFzVGV4dFN5bmModGVz
dEZpbGVzLCBibG9iLCBlbmNvZGluZyk7CiB9CiAKIGZ1bmN0aW9uIHJlYWRCbG9iQXNEYXRhVVJM
KHRlc3RGaWxlcywgYmxvYikKIHsKLSAgICB2YXIgcmVhZGVyID0gY3JlYXRlUmVhZGVyKHRlc3RG
aWxlcyk7CisgICAgaWYgKGlzUmVhZEFzQXN5bmMoKSkKKyAgICAgICAgX3JlYWRCbG9iQXNEYXRh
VVJMQXN5bmModGVzdEZpbGVzLCBibG9iKTsKKyAgICBlbHNlCisgICAgICAgIF9yZWFkQmxvYkFz
RGF0YVVSTFN5bmModGVzdEZpbGVzLCBibG9iKTsKK30KKworLy8gUmVhZHMgYSBibG9iIGFzeW5j
aHJvbm91c2x5LgorZnVuY3Rpb24gX3JlYWRCbG9iQXNCaW5hcnlTdHJpbmdBc3luYyh0ZXN0Rmls
ZXMsIGJsb2IpCit7CisgICAgdmFyIHJlYWRlciA9IGNyZWF0ZVJlYWRlckFzeW5jKHRlc3RGaWxl
cyk7CisgICAgcmVhZGVyLnJlYWRBc0JpbmFyeVN0cmluZyhibG9iKQorfQorCitmdW5jdGlvbiBf
cmVhZEJsb2JBc1RleHRBc3luYyh0ZXN0RmlsZXMsIGJsb2IsIGVuY29kaW5nKQoreworICAgIHZh
ciByZWFkZXIgPSBjcmVhdGVSZWFkZXJBc3luYyh0ZXN0RmlsZXMpOworICAgIHJlYWRlci5yZWFk
QXNUZXh0KGJsb2IsIGVuY29kaW5nKQorfQorCitmdW5jdGlvbiBfcmVhZEJsb2JBc0RhdGFVUkxB
c3luYyh0ZXN0RmlsZXMsIGJsb2IpCit7CisgICAgdmFyIHJlYWRlciA9IGNyZWF0ZVJlYWRlckFz
eW5jKHRlc3RGaWxlcyk7CiAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoYmxvYikKIH0KIAotZnVu
Y3Rpb24gY3JlYXRlUmVhZGVyKHRlc3RGaWxlcykKKy8vIFJlYWRzIGEgYmxvYiBzeW5jaHJvbm91
c2x5LgorZnVuY3Rpb24gX3JlYWRCbG9iQXNCaW5hcnlTdHJpbmdTeW5jKHRlc3RGaWxlcywgYmxv
YikKK3sKKyAgICB2YXIgcmVhZGVyID0gY3JlYXRlUmVhZGVyU3luYygpOworICAgIHRyeSB7Cisg
ICAgICAgIHZhciByZXN1bHQgPSByZWFkZXIucmVhZEFzQmluYXJ5U3RyaW5nKGJsb2IpOworICAg
ICAgICBsb2cocmVzdWx0KTsKKyAgICB9IGNhdGNoIChlcnJvcikgeworICAgICAgICBsb2coIlJl
Y2VpdmVkIGV4Y2VwdGlvbiAiICsgZXJyb3IuY29kZSArICI6ICIgKyBlcnJvci5uYW1lKTsKKyAg
ICB9CisKKyAgICBydW5OZXh0VGVzdCh0ZXN0RmlsZXMpOworfQorCitmdW5jdGlvbiBfcmVhZEJs
b2JBc1RleHRTeW5jKHRlc3RGaWxlcywgYmxvYiwgZW5jb2RpbmcpCit7CisgICAgdmFyIHJlYWRl
ciA9IGNyZWF0ZVJlYWRlclN5bmMoKTsKKyAgICB0cnkgeworICAgICAgICB2YXIgcmVzdWx0ID0g
cmVhZGVyLnJlYWRBc1RleHQoYmxvYiwgZW5jb2RpbmcpOworICAgICAgICBsb2cocmVzdWx0KTsK
KyAgICB9IGNhdGNoIChlcnJvcikgeworICAgICAgICBsb2coIlJlY2VpdmVkIGV4Y2VwdGlvbiAi
ICsgZXJyb3IuY29kZSArICI6ICIgKyBlcnJvci5uYW1lKTsKKyAgICB9CisKKyAgICBydW5OZXh0
VGVzdCh0ZXN0RmlsZXMpOworfQorCitmdW5jdGlvbiBfcmVhZEJsb2JBc0RhdGFVUkxTeW5jKHRl
c3RGaWxlcywgYmxvYikKK3sKKyAgICB2YXIgcmVhZGVyID0gY3JlYXRlUmVhZGVyU3luYygpOwor
ICAgIHRyeSB7CisgICAgICAgIHZhciByZXN1bHQgPSByZWFkZXIucmVhZEFzRGF0YVVSTChibG9i
KTsKKyAgICAgICAgbG9nKHJlc3VsdCk7CisgICAgfSBjYXRjaCAoZXJyb3IpIHsKKyAgICAgICAg
bG9nKCJSZWNlaXZlZCBleGNlcHRpb24gIiArIGVycm9yLmNvZGUgKyAiOiAiICsgZXJyb3IubmFt
ZSk7CisgICAgfQorCisgICAgcnVuTmV4dFRlc3QodGVzdEZpbGVzKTsKK30KKworLy8gQ3JlYXRl
cyBhIHJlYWRlciBmb3IgYXN5bmNocm9ub3VzIHJlYWRpbmcuCitmdW5jdGlvbiBjcmVhdGVSZWFk
ZXJBc3luYyh0ZXN0RmlsZXMpCiB7CiAgICAgdmFyIHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7
CiAKQEAgLTQxLDYgKzEwOCwxMiBAQCBmdW5jdGlvbiBjcmVhdGVSZWFkZXIodGVzdEZpbGVzKQog
ICAgIHJldHVybiByZWFkZXI7CiB9CiAKKy8vIENyZWF0ZXMgYSByZWFkZXIgZm9yIHN5bmNocm9u
b3VzIHJlYWRpbmcuCitmdW5jdGlvbiBjcmVhdGVSZWFkZXJTeW5jKCkKK3sKKyAgICByZXR1cm4g
bmV3IEZpbGVSZWFkZXJTeW5jKCk7Cit9CisKIGZ1bmN0aW9uIGxvZ0V2ZW50KGV2ZW50KQogewog
ICAgIGxvZygiUmVjZWl2ZWQgIiArIGV2ZW50LnR5cGUgKyAiIGV2ZW50Iik7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVzL3Jlc291cmNlcy9yZWFkLWZpbGUtdGVzdC1jYXNlcy5q
cyBiL0xheW91dFRlc3RzL2Zhc3QvZmlsZXMvcmVzb3VyY2VzL3JlYWQtZmlsZS10ZXN0LWNhc2Vz
LmpzCmluZGV4IDUxOWRiNDE3M2QwOTAyOGY4YjQwY2M3YmE3MmM2NDhjNDQxOTQxMzAuLmUwOWU0
YzkyZWQ0MTJiNTYyMTUxNDIzNzI1NDZhOTUyNDMzYWI5NzkgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2Zhc3QvZmlsZXMvcmVzb3VyY2VzL3JlYWQtZmlsZS10ZXN0LWNhc2VzLmpzCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvZmlsZXMvcmVzb3VyY2VzL3JlYWQtZmlsZS10ZXN0LWNhc2VzLmpzCkBA
IC0xMjksOCArMTI5LDE0IEBAIGZ1bmN0aW9uIHRlc3RSZWFkaW5nVVRGOEVuY29kZWRGaWxlQXNE
YXRhVVJMKHRlc3RGaWxlcykKIAogZnVuY3Rpb24gdGVzdE11bHRpcGxlUmVhZHModGVzdEZpbGVz
KQogeworICAgIC8vIFRoaXMgdGVzdCBjYXNlIGlzIG9ubHkgYXZhaWxhYmxlIGZvciBhc3luYyBy
ZWFkaW5nLgorICAgIGlmICghaXNSZWFkQXNBc3luYygpKSB7CisgICAgICAgIHJ1bk5leHRUZXN0
KHRlc3RGaWxlcyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBsb2coIlRlc3QgY2Fs
bGluZyBtdWx0aXBsZSByZWFkIG1ldGhvZHMgYW5kIG9ubHkgbGFzdCBvbmUgaXMgcHJvY2Vzc2Vk
Iik7Ci0gICAgdmFyIHJlYWRlciA9IGNyZWF0ZVJlYWRlcigpOworICAgIHZhciByZWFkZXIgPSBj
cmVhdGVSZWFkZXJBc3luYygpOwogICAgIHJlYWRlci5yZWFkQXNCaW5hcnlTdHJpbmcodGVzdEZp
bGVzWydVVEY4LWZpbGUnXSk7CiAgICAgcmVhZGVyLnJlYWRBc1RleHQodGVzdEZpbGVzWydVVEY4
LWZpbGUnXSk7CiAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwodGVzdEZpbGVzWydVVEY4LWZpbGUn
XSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVzL3Jlc291cmNlcy9zZXR1cC1m
b3ItcmVhZC1jb21tb24uanMgYi9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVzL3Jlc291cmNlcy9zZXR1
cC1mb3ItcmVhZC1jb21tb24uanMKaW5kZXggNjM5OGE3YzFiMDZiOWZjNzVkZWUzYTUxZDY3Yjcy
MTdkYjU4NGYxNi4uNWM1MzcyZGNkZjgyMzljNjY4MjIwMzIxOGRkYzU2MWMzYzczYzEyNCAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9maWxlcy9yZXNvdXJjZXMvc2V0dXAtZm9yLXJlYWQt
Y29tbW9uLmpzCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZmlsZXMvcmVzb3VyY2VzL3NldHVwLWZv
ci1yZWFkLWNvbW1vbi5qcwpAQCAtMjAsMyArMjAsMjMgQEAgZnVuY3Rpb24gcnVuVGVzdHModGVz
dEZpbGVJbmZvTGlzdCkKICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbygxMCwgMTApOwogICAg
IGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKIH0KKworZnVuY3Rpb24gc3RhcnRXb3JrZXIodGVzdEZp
bGVzKQoreworICAgIHZhciB3b3JrZXIgPSBuZXcgV29ya2VyKGdldFdvcmtlclNjcmlwdFVSTCgp
KTsKKyAgICB3b3JrZXIub25tZXNzYWdlID0gZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAg
ICBsb2coZXZlbnQuZGF0YSk7CisgICAgICAgIGlmIChldmVudC5kYXRhID09ICJET05FIikgewor
ICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgIH0KKyAgICB9
CisgICAgd29ya2VyLm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIGxv
ZygiUmVjZWl2ZWQgZXJyb3IgZnJvbSB3b3JrZXI6ICIgKyBldmVudC5tZXNzYWdlKTsKKyAgICAg
ICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICB9CisgICAgd29ya2VyLnBvc3RNZXNzYWdl
KHRlc3RGaWxlcyk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVzL3dvcmtl
cnMvcmVzb3VyY2VzL3dvcmtlci1yZWFkLWJsb2ItYXN5bmMuanMgYi9MYXlvdXRUZXN0cy9mYXN0
L2ZpbGVzL3dvcmtlcnMvcmVzb3VyY2VzL3dvcmtlci1yZWFkLWJsb2ItYXN5bmMuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNDk1NTE5MmFmOThjOGM1YzgxY2YxMzUyNWU0YTNjM2FlOTA0NThjZQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZmlsZXMvd29ya2Vycy9yZXNvdXJjZXMvd29ya2Vy
LXJlYWQtYmxvYi1hc3luYy5qcwpAQCAtMCwwICsxLDcgQEAKK2ltcG9ydFNjcmlwdHMoIi4uLy4u
L3Jlc291cmNlcy9yZWFkLWNvbW1vbi5qcyIsICIuLi8uLi9yZXNvdXJjZXMvcmVhZC1ibG9iLXRl
c3QtY2FzZXMuanMiLCAid29ya2VyLXJlYWQtY29tbW9uLmpzIik7CisKK2Z1bmN0aW9uIGlzUmVh
ZEFzQXN5bmMoKQoreworICAgIHJldHVybiB0cnVlOworfQorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2ZpbGVzL3dvcmtlcnMvcmVzb3VyY2VzL3dvcmtlci1yZWFkLWJsb2Itc3luYy5q
cyBiL0xheW91dFRlc3RzL2Zhc3QvZmlsZXMvd29ya2Vycy9yZXNvdXJjZXMvd29ya2VyLXJlYWQt
YmxvYi1zeW5jLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFlOWU2YTVkNWU4ODM5MDhmYmRmMzQ2NTg5OWQ1M2U1
M2QzN2Q2NWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVzL3dvcmtl
cnMvcmVzb3VyY2VzL3dvcmtlci1yZWFkLWJsb2Itc3luYy5qcwpAQCAtMCwwICsxLDYgQEAKK2lt
cG9ydFNjcmlwdHMoIi4uLy4uL3Jlc291cmNlcy9yZWFkLWNvbW1vbi5qcyIsICIuLi8uLi9yZXNv
dXJjZXMvcmVhZC1ibG9iLXRlc3QtY2FzZXMuanMiLCAid29ya2VyLXJlYWQtY29tbW9uLmpzIik7
CisKK2Z1bmN0aW9uIGlzUmVhZEFzQXN5bmMoKQoreworICAgIHJldHVybiBmYWxzZTsKK30KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZmlsZXMvd29ya2Vycy9yZXNvdXJjZXMvd29ya2Vy
LXJlYWQtY29tbW9uLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9maWxlcy93b3JrZXJzL3Jlc291cmNl
cy93b3JrZXItcmVhZC1jb21tb24uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTcwODE5MjI1OGYyODc0YjY4NWNh
YzczOTQyNjY1NDYzN2QwZTg4OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
ZmlsZXMvd29ya2Vycy9yZXNvdXJjZXMvd29ya2VyLXJlYWQtY29tbW9uLmpzCkBAIC0wLDAgKzEs
MTEgQEAKK2Z1bmN0aW9uIGxvZyhtZXNzYWdlKQoreworICAgIHBvc3RNZXNzYWdlKG1lc3NhZ2Up
OworfQorCitvbm1lc3NhZ2UgPSBmdW5jdGlvbihldmVudCkKK3sKKyAgICB2YXIgdGVzdEZpbGVz
ID0gZXZlbnQuZGF0YTsKKyAgICBsb2coIlJlY2VpdmVkIGZpbGVzIGluIHdvcmtlciIpOworICAg
IHJ1bk5leHRUZXN0KHRlc3RGaWxlcyk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2ZpbGVzL3dvcmtlcnMvcmVzb3VyY2VzL3dvcmtlci1yZWFkLWZpbGUtYXN5bmMuanMgYi9MYXlv
dXRUZXN0cy9mYXN0L2ZpbGVzL3dvcmtlcnMvcmVzb3VyY2VzL3dvcmtlci1yZWFkLWZpbGUtYXN5
bmMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMzI3MWUwOGNjNGYyOTgwMzk4ZTQyNjI2NDY0ZGE5NGYxZWJhNTY0
NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZmlsZXMvd29ya2Vycy9yZXNv
dXJjZXMvd29ya2VyLXJlYWQtZmlsZS1hc3luYy5qcwpAQCAtMCwwICsxLDcgQEAKK2ltcG9ydFNj
cmlwdHMoIi4uLy4uL3Jlc291cmNlcy9yZWFkLWNvbW1vbi5qcyIsICIuLi8uLi9yZXNvdXJjZXMv
cmVhZC1maWxlLXRlc3QtY2FzZXMuanMiLCAid29ya2VyLXJlYWQtY29tbW9uLmpzIik7CisKK2Z1
bmN0aW9uIGlzUmVhZEFzQXN5bmMoKQoreworICAgIHJldHVybiB0cnVlOworfQorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVzL3dvcmtlcnMvcmVzb3VyY2VzL3dvcmtlci1yZWFk
LWZpbGUtc3luYy5qcyBiL0xheW91dFRlc3RzL2Zhc3QvZmlsZXMvd29ya2Vycy9yZXNvdXJjZXMv
d29ya2VyLXJlYWQtZmlsZS1zeW5jLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY1Zjc2ZWIyODQwZDBlZDdkYjAy
NWU2YzRlYWNlYzk3ZDlhY2FhZjkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2ZpbGVzL3dvcmtlcnMvcmVzb3VyY2VzL3dvcmtlci1yZWFkLWZpbGUtc3luYy5qcwpAQCAtMCww
ICsxLDYgQEAKK2ltcG9ydFNjcmlwdHMoIi4uLy4uL3Jlc291cmNlcy9yZWFkLWNvbW1vbi5qcyIs
ICIuLi8uLi9yZXNvdXJjZXMvcmVhZC1maWxlLXRlc3QtY2FzZXMuanMiLCAid29ya2VyLXJlYWQt
Y29tbW9uLmpzIik7CisKK2Z1bmN0aW9uIGlzUmVhZEFzQXN5bmMoKQoreworICAgIHJldHVybiBm
YWxzZTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZmlsZXMvd29ya2Vycy93b3Jr
ZXItcmVhZC1ibG9iLWFzeW5jLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZmlsZXMv
d29ya2Vycy93b3JrZXItcmVhZC1ibG9iLWFzeW5jLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
Y2ZlZDkwY2I5OGMwNWUxZTFjMDY1ZDk1OGRhYmU0ODQ5ZjhlYzYyCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9maWxlcy93b3JrZXJzL3dvcmtlci1yZWFkLWJsb2ItYXN5bmMt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTI0IEBACisKK1JlY2VpdmVkIGZpbGVzIGluIHdvcmtl
cgorVGVzdCByZWFkaW5nIGEgYmxvYiBjb250YWluaW5nIG5vbi1leGlzdGVudCBmaWxlCityZWFk
eVN0YXRlOiAwCitSZWNlaXZlZCBlcnJvciBldmVudAorcmVhZHlTdGF0ZTogMgorZXJyb3IgY29k
ZTogOAorUmVjZWl2ZWQgbG9hZGVuZCBldmVudAorVGVzdCByZWFkaW5nIGEgYmxvYiBjb250YWlu
aW5nIGV4aXN0ZW50IGFuZCBub24tZXhpc3RlbnQgZmlsZQorcmVhZHlTdGF0ZTogMAorUmVjZWl2
ZWQgZXJyb3IgZXZlbnQKK3JlYWR5U3RhdGU6IDIKK2Vycm9yIGNvZGU6IDgKK1JlY2VpdmVkIGxv
YWRlbmQgZXZlbnQKK1Rlc3QgcmVhZGluZyBhIGJsb2IgY29udGFpbmluZyBlbXB0eSBmaWxlCity
ZWFkeVN0YXRlOiAwCitSZWNlaXZlZCBsb2Fkc3RhcnQgZXZlbnQKK3JlYWR5U3RhdGU6IDEKK1Jl
Y2VpdmVkIGxvYWQgZXZlbnQKK3JlYWR5U3RhdGU6IDIKK3Jlc3VsdCBzaXplOiAwCityZXN1bHQ6
IAorUmVjZWl2ZWQgbG9hZGVuZCBldmVudAorVGVzdCByZWFkaW5nIGEgYmxvYiBjb250YWluaW5n
IGVtcHR5IHRleHQKK3JlYWR5U3RhdGU6IDAKK1JlY2VpdmVkIGxvYWRzdGFydCBldmVudAorcmVh
ZHlTdGF0ZTogMQorUmVjZWl2ZWQgbG9hZCBldmVudAorcmVhZHlTdGF0ZTogMgorcmVzdWx0IHNp
emU6IDAKK3Jlc3VsdDogCitSZWNlaXZlZCBsb2FkZW5kIGV2ZW50CitUZXN0IHJlYWRpbmcgYSBi
bG9iIGNvbnRhaW5pbmcgZW1wdHkgZmlsZXMgYW5kIGVtcHR5IHRleHRzCityZWFkeVN0YXRlOiAw
CitSZWNlaXZlZCBsb2Fkc3RhcnQgZXZlbnQKK3JlYWR5U3RhdGU6IDEKK1JlY2VpdmVkIGxvYWQg
ZXZlbnQKK3JlYWR5U3RhdGU6IDIKK3Jlc3VsdCBzaXplOiAwCityZXN1bHQ6IAorUmVjZWl2ZWQg
bG9hZGVuZCBldmVudAorVGVzdCByZWFkaW5nIGEgYmxvYiBjb250YWluaW5nIHNpbmdsZSBmaWxl
CityZWFkeVN0YXRlOiAwCitSZWNlaXZlZCBsb2Fkc3RhcnQgZXZlbnQKK3JlYWR5U3RhdGU6IDEK
K1JlY2VpdmVkIGxvYWQgZXZlbnQKK3JlYWR5U3RhdGU6IDIKK3Jlc3VsdCBzaXplOiA1CityZXN1
bHQ6IEhlbGxvCitSZWNlaXZlZCBsb2FkZW5kIGV2ZW50CitUZXN0IHJlYWRpbmcgYSBibG9iIGNv
bnRhaW5pbmcgc2luZ2xlIHRleHQKK3JlYWR5U3RhdGU6IDAKK1JlY2VpdmVkIGxvYWRzdGFydCBl
dmVudAorcmVhZHlTdGF0ZTogMQorUmVjZWl2ZWQgbG9hZCBldmVudAorcmVhZHlTdGF0ZTogMgor
cmVzdWx0IHNpemU6IDUKK3Jlc3VsdDogRmlyc3QKK1JlY2VpdmVkIGxvYWRlbmQgZXZlbnQKK1Rl
c3QgcmVhZGluZyBhIGJsb2IgY29udGFpbmluZyBzbGljZWQgZmlsZQorcmVhZHlTdGF0ZTogMAor
UmVjZWl2ZWQgbG9hZHN0YXJ0IGV2ZW50CityZWFkeVN0YXRlOiAxCitSZWNlaXZlZCBsb2FkIGV2
ZW50CityZWFkeVN0YXRlOiAyCityZXN1bHQgc2l6ZTogNQorcmVzdWx0OiBvbmRlcgorUmVjZWl2
ZWQgbG9hZGVuZCBldmVudAorVGVzdCByZWFkaW5nIGEgYmxvYiBjb250YWluaW5nIHNsaWNlZCB0
ZXh0CityZWFkeVN0YXRlOiAwCitSZWNlaXZlZCBsb2Fkc3RhcnQgZXZlbnQKK3JlYWR5U3RhdGU6
IDEKK1JlY2VpdmVkIGxvYWQgZXZlbnQKK3JlYWR5U3RhdGU6IDIKK3Jlc3VsdCBzaXplOiA0City
ZXN1bHQ6IGlyc3QKK1JlY2VpdmVkIGxvYWRlbmQgZXZlbnQKK1Rlc3QgcmVhZGluZyBhIGJsb2Ig
Y29udGFpbmluZyBtdWx0aXBsZSBmaWxlcworcmVhZHlTdGF0ZTogMAorUmVjZWl2ZWQgbG9hZHN0
YXJ0IGV2ZW50CityZWFkeVN0YXRlOiAxCitSZWNlaXZlZCBsb2FkIGV2ZW50CityZWFkeVN0YXRl
OiAyCityZXN1bHQgc2l6ZTogMTkKK3Jlc3VsdDogSGVsbG9Xb25kZXJmdWxXb3JsZAorUmVjZWl2
ZWQgbG9hZGVuZCBldmVudAorVGVzdCByZWFkaW5nIGEgYmxvYiBjb250YWluaW5nIG11bHRpcGxl
IHRleHRzCityZWFkeVN0YXRlOiAwCitSZWNlaXZlZCBsb2Fkc3RhcnQgZXZlbnQKK3JlYWR5U3Rh
dGU6IDEKK1JlY2VpdmVkIGxvYWQgZXZlbnQKK3JlYWR5U3RhdGU6IDIKK3Jlc3VsdCBzaXplOiAx
NgorcmVzdWx0OiBGaXJzdFNlY29uZFRoaXJkCitSZWNlaXZlZCBsb2FkZW5kIGV2ZW50CitUZXN0
IHJlYWRpbmcgYSBoeWJyaWQgYmxvYgorcmVhZHlTdGF0ZTogMAorUmVjZWl2ZWQgbG9hZHN0YXJ0
IGV2ZW50CityZWFkeVN0YXRlOiAxCitSZWNlaXZlZCBsb2FkIGV2ZW50CityZWFkeVN0YXRlOiAy
CityZXN1bHQgc2l6ZTogMzUKK3Jlc3VsdDogRmlyc3RIZWxsb1NlY29uZFdvbmRlcmZ1bFdvcmxk
VGhpcmQKK1JlY2VpdmVkIGxvYWRlbmQgZXZlbnQKK1Rlc3QgcmVhZGluZyBhIHNsaWNlZCBoeWJy
aWQgYmxvYgorcmVhZHlTdGF0ZTogMAorUmVjZWl2ZWQgbG9hZHN0YXJ0IGV2ZW50CityZWFkeVN0
YXRlOiAxCitSZWNlaXZlZCBsb2FkIGV2ZW50CityZWFkeVN0YXRlOiAyCityZXN1bHQgc2l6ZTog
MTIKK3Jlc3VsdDogbGxvU2Vjb25kV29uCitSZWNlaXZlZCBsb2FkZW5kIGV2ZW50CitUZXN0IHJl
YWRpbmcgYSB0cmlwbGUtc2xpY2VkIGh5YnJpZCBibG9iCityZWFkeVN0YXRlOiAwCitSZWNlaXZl
ZCBsb2Fkc3RhcnQgZXZlbnQKK3JlYWR5U3RhdGU6IDEKK1JlY2VpdmVkIGxvYWQgZXZlbnQKK3Jl
YWR5U3RhdGU6IDIKK3Jlc3VsdCBzaXplOiAzMAorcmVzdWx0OiBvbmRXb25kZXJmdWxXb3JsZFRo
aXJkRm9vbG9TZWMKK1JlY2VpdmVkIGxvYWRlbmQgZXZlbnQKK0RPTkUKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9maWxlcy93b3JrZXJzL3dvcmtlci1yZWFkLWJsb2ItYXN5bmMuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvZmlsZXMvd29ya2Vycy93b3JrZXItcmVhZC1ibG9iLWFzeW5j
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uOGE1NmQyMjU3NmI4OGE2MjE1MjZiODgwMjdjOTY0MjEzMDc4NWY2
NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZmlsZXMvd29ya2Vycy93b3Jr
ZXItcmVhZC1ibG9iLWFzeW5jLmh0bWwKQEAgLTAsMCArMSwzNCBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxib2R5PgorPGlucHV0IHR5cGU9ImZpbGUiIG5hbWU9ImZpbGUiIGlkPSJmaWxl
IiBvbmNoYW5nZT0ib25JbnB1dEZpbGVDaGFuZ2UodGVzdEZpbGVJbmZvTGlzdCkiIG11bHRpcGxl
PgorPHByZSBpZD0nY29uc29sZSc+PC9wcmU+CisKKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMv
c2V0dXAtZm9yLXJlYWQtY29tbW9uLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Cit2YXIgdGVzdEZp
bGVJbmZvTGlzdCA9IFsKKyAgICB7ICduYW1lJzogJ25vbi1leGlzdGVudCcsICdwYXRoJzogJy4u
L3Jlc291cmNlcy9ub24tZXhpc3RlbnQnIH0sCisgICAgeyAnbmFtZSc6ICdlbXB0eS1maWxlJywg
J3BhdGgnOiAnLi4vcmVzb3VyY2VzL2VtcHR5LWZpbGUnIH0sCisgICAgeyAnbmFtZSc6ICdmaWxl
MScsICdwYXRoJzogJy4uL3Jlc291cmNlcy9VVEY4LnR4dCcgfSwKKyAgICB7ICduYW1lJzogJ2Zp
bGUyJywgJ3BhdGgnOiAnLi4vcmVzb3VyY2VzL1VURjgtMi50eHQnIH0sCisgICAgeyAnbmFtZSc6
ICdmaWxlMycsICdwYXRoJzogJy4uL3Jlc291cmNlcy9VVEY4LTMudHh0JyB9LAorXTsKKworZnVu
Y3Rpb24gZ2V0V29ya2VyU2NyaXB0VVJMKCkKK3sKKyAgICByZXR1cm4gInJlc291cmNlcy93b3Jr
ZXItcmVhZC1ibG9iLWFzeW5jLmpzIjsKK30KKworZnVuY3Rpb24gc3RhcnRUZXN0KHRlc3RGaWxl
cykKK3sKKyAgICBzdGFydFdvcmtlcih0ZXN0RmlsZXMpOworfQorCitpZiAod2luZG93LmV2ZW50
U2VuZGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB3aW5kb3cub25sb2FkID0g
ZnVuY3Rpb24oKSB7IHJ1blRlc3RzKHRlc3RGaWxlSW5mb0xpc3QpOyB9Cit9Cis8L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZmlsZXMvd29y
a2Vycy93b3JrZXItcmVhZC1ibG9iLXN5bmMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFz
dC9maWxlcy93b3JrZXJzL3dvcmtlci1yZWFkLWJsb2Itc3luYy1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNzdmNTQxNDkzNWUzZWM5ZjEwNGM2MzE5ZWM2Mjc0MmNmZjZlMzNjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZmlsZXMvd29ya2Vycy93b3JrZXItcmVhZC1ibG9i
LXN5bmMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMzIgQEAKKworUmVjZWl2ZWQgZmlsZXMgaW4g
d29ya2VyCitUZXN0IHJlYWRpbmcgYSBibG9iIGNvbnRhaW5pbmcgbm9uLWV4aXN0ZW50IGZpbGUK
K1JlY2VpdmVkIGV4Y2VwdGlvbiA4OiBOT1RfRk9VTkRfRVJSCitUZXN0IHJlYWRpbmcgYSBibG9i
IGNvbnRhaW5pbmcgZXhpc3RlbnQgYW5kIG5vbi1leGlzdGVudCBmaWxlCitSZWNlaXZlZCBleGNl
cHRpb24gODogTk9UX0ZPVU5EX0VSUgorVGVzdCByZWFkaW5nIGEgYmxvYiBjb250YWluaW5nIGVt
cHR5IGZpbGUKKworVGVzdCByZWFkaW5nIGEgYmxvYiBjb250YWluaW5nIGVtcHR5IHRleHQKKwor
VGVzdCByZWFkaW5nIGEgYmxvYiBjb250YWluaW5nIGVtcHR5IGZpbGVzIGFuZCBlbXB0eSB0ZXh0
cworCitUZXN0IHJlYWRpbmcgYSBibG9iIGNvbnRhaW5pbmcgc2luZ2xlIGZpbGUKK0hlbGxvCitU
ZXN0IHJlYWRpbmcgYSBibG9iIGNvbnRhaW5pbmcgc2luZ2xlIHRleHQKK0ZpcnN0CitUZXN0IHJl
YWRpbmcgYSBibG9iIGNvbnRhaW5pbmcgc2xpY2VkIGZpbGUKK29uZGVyCitUZXN0IHJlYWRpbmcg
YSBibG9iIGNvbnRhaW5pbmcgc2xpY2VkIHRleHQKK2lyc3QKK1Rlc3QgcmVhZGluZyBhIGJsb2Ig
Y29udGFpbmluZyBtdWx0aXBsZSBmaWxlcworSGVsbG9Xb25kZXJmdWxXb3JsZAorVGVzdCByZWFk
aW5nIGEgYmxvYiBjb250YWluaW5nIG11bHRpcGxlIHRleHRzCitGaXJzdFNlY29uZFRoaXJkCitU
ZXN0IHJlYWRpbmcgYSBoeWJyaWQgYmxvYgorRmlyc3RIZWxsb1NlY29uZFdvbmRlcmZ1bFdvcmxk
VGhpcmQKK1Rlc3QgcmVhZGluZyBhIHNsaWNlZCBoeWJyaWQgYmxvYgorbGxvU2Vjb25kV29uCitU
ZXN0IHJlYWRpbmcgYSB0cmlwbGUtc2xpY2VkIGh5YnJpZCBibG9iCitvbmRXb25kZXJmdWxXb3Js
ZFRoaXJkRm9vbG9TZWMKK0RPTkUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9maWxl
cy93b3JrZXJzL3dvcmtlci1yZWFkLWJsb2Itc3luYy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9m
aWxlcy93b3JrZXJzL3dvcmtlci1yZWFkLWJsb2Itc3luYy5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY3ZmVl
NzcxNjU0NzA0NTAzZjg0NDI2ZTA2N2UwNDFkMjQ3NDI3NTEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2ZpbGVzL3dvcmtlcnMvd29ya2VyLXJlYWQtYmxvYi1zeW5jLmh0bWwK
QEAgLTAsMCArMSwzNCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorPGlucHV0
IHR5cGU9ImZpbGUiIG5hbWU9ImZpbGUiIGlkPSJmaWxlIiBvbmNoYW5nZT0ib25JbnB1dEZpbGVD
aGFuZ2UodGVzdEZpbGVJbmZvTGlzdCkiIG11bHRpcGxlPgorPHByZSBpZD0nY29uc29sZSc+PC9w
cmU+CisKKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc2V0dXAtZm9yLXJlYWQtY29tbW9uLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQ+Cit2YXIgdGVzdEZpbGVJbmZvTGlzdCA9IFsKKyAgICB7ICdu
YW1lJzogJ25vbi1leGlzdGVudCcsICdwYXRoJzogJy4uL3Jlc291cmNlcy9ub24tZXhpc3RlbnQn
IH0sCisgICAgeyAnbmFtZSc6ICdlbXB0eS1maWxlJywgJ3BhdGgnOiAnLi4vcmVzb3VyY2VzL2Vt
cHR5LWZpbGUnIH0sCisgICAgeyAnbmFtZSc6ICdmaWxlMScsICdwYXRoJzogJy4uL3Jlc291cmNl
cy9VVEY4LnR4dCcgfSwKKyAgICB7ICduYW1lJzogJ2ZpbGUyJywgJ3BhdGgnOiAnLi4vcmVzb3Vy
Y2VzL1VURjgtMi50eHQnIH0sCisgICAgeyAnbmFtZSc6ICdmaWxlMycsICdwYXRoJzogJy4uL3Jl
c291cmNlcy9VVEY4LTMudHh0JyB9LAorXTsKKworZnVuY3Rpb24gZ2V0V29ya2VyU2NyaXB0VVJM
KCkKK3sKKyAgICByZXR1cm4gInJlc291cmNlcy93b3JrZXItcmVhZC1ibG9iLXN5bmMuanMiOwor
fQorCitmdW5jdGlvbiBzdGFydFRlc3QodGVzdEZpbGVzKQoreworICAgIHN0YXJ0V29ya2VyKHRl
c3RGaWxlcyk7Cit9CisKK2lmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVu
dGlsRG9uZSgpOworICAgIHdpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbigpIHsgcnVuVGVzdHModGVz
dEZpbGVJbmZvTGlzdCk7IH0KK30KKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9maWxlcy93b3JrZXJzL3dvcmtlci1yZWFkLWZpbGUtYXN5
bmMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9maWxlcy93b3JrZXJzL3dvcmtlci1y
ZWFkLWZpbGUtYXN5bmMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE0OTc2NTg5MmVlMmJjNDA4
ZTFhNjIyZDQ0MWQ0NDQ4MGYyY2FjMGIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2ZpbGVzL3dvcmtlcnMvd29ya2VyLXJlYWQtZmlsZS1hc3luYy1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwxNDggQEAKKworUmVjZWl2ZWQgZmlsZXMgaW4gd29ya2VyCitUZXN0IHJlYWRpbmcg
YSBub24tZXhpc3RlbnQgZmlsZSBhcyBiaW5hcnkgc3RyaW5nCityZWFkeVN0YXRlOiAwCitSZWNl
aXZlZCBlcnJvciBldmVudAorcmVhZHlTdGF0ZTogMgorZXJyb3IgY29kZTogOAorUmVjZWl2ZWQg
bG9hZGVuZCBldmVudAorVGVzdCByZWFkaW5nIGEgbm9uLWV4aXN0ZW50IGZpbGUgYXMgdGV4dAor
cmVhZHlTdGF0ZTogMAorUmVjZWl2ZWQgZXJyb3IgZXZlbnQKK3JlYWR5U3RhdGU6IDIKK2Vycm9y
IGNvZGU6IDgKK1JlY2VpdmVkIGxvYWRlbmQgZXZlbnQKK1Rlc3QgcmVhZGluZyBhIG5vbi1leGlz
dGVudCBmaWxlIGFzIGRhdGEgVVJMCityZWFkeVN0YXRlOiAwCitSZWNlaXZlZCBlcnJvciBldmVu
dAorcmVhZHlTdGF0ZTogMgorZXJyb3IgY29kZTogOAorUmVjZWl2ZWQgbG9hZGVuZCBldmVudAor
VGVzdCByZWFkaW5nIGFuIGVtcHR5IGZpbGUgYXMgYmluYXJ5IHN0cmluZworcmVhZHlTdGF0ZTog
MAorUmVjZWl2ZWQgbG9hZHN0YXJ0IGV2ZW50CityZWFkeVN0YXRlOiAxCitSZWNlaXZlZCBsb2Fk
IGV2ZW50CityZWFkeVN0YXRlOiAyCityZXN1bHQgc2l6ZTogMAorcmVzdWx0OiAKK1JlY2VpdmVk
IGxvYWRlbmQgZXZlbnQKK1Rlc3QgcmVhZGluZyBhbiBlbXB0eSBmaWxlIGFzIHRleHQKK3JlYWR5
U3RhdGU6IDAKK1JlY2VpdmVkIGxvYWRzdGFydCBldmVudAorcmVhZHlTdGF0ZTogMQorUmVjZWl2
ZWQgbG9hZCBldmVudAorcmVhZHlTdGF0ZTogMgorcmVzdWx0IHNpemU6IDAKK3Jlc3VsdDogCitS
ZWNlaXZlZCBsb2FkZW5kIGV2ZW50CitUZXN0IHJlYWRpbmcgYW4gZW1wdHkgZmlsZSBhcyBkYXRh
IFVSTAorcmVhZHlTdGF0ZTogMAorUmVjZWl2ZWQgbG9hZHN0YXJ0IGV2ZW50CityZWFkeVN0YXRl
OiAxCitSZWNlaXZlZCBsb2FkIGV2ZW50CityZWFkeVN0YXRlOiAyCityZXN1bHQgc2l6ZTogNQor
cmVzdWx0OiBkYXRhOgorUmVjZWl2ZWQgbG9hZGVuZCBldmVudAorVGVzdCByZWFkaW5nIGEgVVRG
LTggZmlsZSBhcyBiaW5hcnkgc3RyaW5nCityZWFkeVN0YXRlOiAwCitSZWNlaXZlZCBsb2Fkc3Rh
cnQgZXZlbnQKK3JlYWR5U3RhdGU6IDEKK1JlY2VpdmVkIGxvYWQgZXZlbnQKK3JlYWR5U3RhdGU6
IDIKK3Jlc3VsdCBzaXplOiA1CityZXN1bHQ6IEhlbGxvCitSZWNlaXZlZCBsb2FkZW5kIGV2ZW50
CitUZXN0IHJlYWRpbmcgYSBiaW5hcnkgZmlsZSBhcyBiaW5hcnkgc3RyaW5nCityZWFkeVN0YXRl
OiAwCitSZWNlaXZlZCBsb2Fkc3RhcnQgZXZlbnQKK3JlYWR5U3RhdGU6IDEKK1JlY2VpdmVkIGxv
YWQgZXZlbnQKK3JlYWR5U3RhdGU6IDIKK3Jlc3VsdCBzaXplOiA5CityZXN1bHQ6IDB4MCAweDEg
MHgyIDB4ODAgMHg4MSAweDgyIDB4ZmQgMHhmZSAweGZmCitSZWNlaXZlZCBsb2FkZW5kIGV2ZW50
CitUZXN0IHJlYWRpbmcgYSBVVEYtOCBmaWxlIGFzIHRleHQKK3JlYWR5U3RhdGU6IDAKK1JlY2Vp
dmVkIGxvYWRzdGFydCBldmVudAorcmVhZHlTdGF0ZTogMQorUmVjZWl2ZWQgbG9hZCBldmVudAor
cmVhZHlTdGF0ZTogMgorcmVzdWx0IHNpemU6IDUKK3Jlc3VsdDogSGVsbG8KK1JlY2VpdmVkIGxv
YWRlbmQgZXZlbnQKK1Rlc3QgcmVhZGluZyBhIFVURi0xNkJFIEJPTSBmaWxlIGFzIHRleHQKK3Jl
YWR5U3RhdGU6IDAKK1JlY2VpdmVkIGxvYWRzdGFydCBldmVudAorcmVhZHlTdGF0ZTogMQorUmVj
ZWl2ZWQgbG9hZCBldmVudAorcmVhZHlTdGF0ZTogMgorcmVzdWx0IHNpemU6IDUKK3Jlc3VsdDog
SGVsbG8KK1JlY2VpdmVkIGxvYWRlbmQgZXZlbnQKK1Rlc3QgcmVhZGluZyBhIFVURi0xNkxFIEJP
TSBmaWxlIGFzIHRleHQKK3JlYWR5U3RhdGU6IDAKK1JlY2VpdmVkIGxvYWRzdGFydCBldmVudAor
cmVhZHlTdGF0ZTogMQorUmVjZWl2ZWQgbG9hZCBldmVudAorcmVhZHlTdGF0ZTogMgorcmVzdWx0
IHNpemU6IDUKK3Jlc3VsdDogSGVsbG8KK1JlY2VpdmVkIGxvYWRlbmQgZXZlbnQKK1Rlc3QgcmVh
ZGluZyBhIFVURi04IEJPTSBmaWxlIGFzIHRleHQKK3JlYWR5U3RhdGU6IDAKK1JlY2VpdmVkIGxv
YWRzdGFydCBldmVudAorcmVhZHlTdGF0ZTogMQorUmVjZWl2ZWQgbG9hZCBldmVudAorcmVhZHlT
dGF0ZTogMgorcmVzdWx0IHNpemU6IDUKK3Jlc3VsdDogSGVsbG8KK1JlY2VpdmVkIGxvYWRlbmQg
ZXZlbnQKK1Rlc3QgcmVhZGluZyBhIFVURi0xNkJFIGZpbGUgYXMgdGV4dCB3aXRoIFVURi0xNkJF
IGVuY29kaW5nCityZWFkeVN0YXRlOiAwCitSZWNlaXZlZCBsb2Fkc3RhcnQgZXZlbnQKK3JlYWR5
U3RhdGU6IDEKK1JlY2VpdmVkIGxvYWQgZXZlbnQKK3JlYWR5U3RhdGU6IDIKK3Jlc3VsdCBzaXpl
OiA1CityZXN1bHQ6IEhlbGxvCitSZWNlaXZlZCBsb2FkZW5kIGV2ZW50CitUZXN0IHJlYWRpbmcg
YSBVVEYtMTZCRSBCT00gZmlsZSBhcyB0ZXh0IHdpdGggVVRGOCBlbmNvZGluZworcmVhZHlTdGF0
ZTogMAorUmVjZWl2ZWQgbG9hZHN0YXJ0IGV2ZW50CityZWFkeVN0YXRlOiAxCitSZWNlaXZlZCBs
b2FkIGV2ZW50CityZWFkeVN0YXRlOiAyCityZXN1bHQgc2l6ZTogNQorcmVzdWx0OiBIZWxsbwor
UmVjZWl2ZWQgbG9hZGVuZCBldmVudAorVGVzdCByZWFkaW5nIGEgVVRGLTE2QkUgQk9NIGZpbGUg
YXMgdGV4dCB3aXRoIGludmFsaWQgZW5jb2RpbmcKK3JlYWR5U3RhdGU6IDAKK1JlY2VpdmVkIGxv
YWRzdGFydCBldmVudAorcmVhZHlTdGF0ZTogMQorUmVjZWl2ZWQgbG9hZCBldmVudAorcmVhZHlT
dGF0ZTogMgorcmVzdWx0IHNpemU6IDUKK3Jlc3VsdDogSGVsbG8KK1JlY2VpdmVkIGxvYWRlbmQg
ZXZlbnQKK1Rlc3QgcmVhZGluZyBhIFVURi04IGZpbGUgYXMgZGF0YSBVUkwKK3JlYWR5U3RhdGU6
IDAKK1JlY2VpdmVkIGxvYWRzdGFydCBldmVudAorcmVhZHlTdGF0ZTogMQorUmVjZWl2ZWQgbG9h
ZCBldmVudAorcmVhZHlTdGF0ZTogMgorcmVzdWx0IHNpemU6IDMxCityZXN1bHQ6IGRhdGE6dGV4
dC9wbGFpbjtiYXNlNjQsU0dWc2JHOD0KK1JlY2VpdmVkIGxvYWRlbmQgZXZlbnQKK1Rlc3QgY2Fs
bGluZyBtdWx0aXBsZSByZWFkIG1ldGhvZHMgYW5kIG9ubHkgbGFzdCBvbmUgaXMgcHJvY2Vzc2Vk
CityZWFkeVN0YXRlOiAwCitSZWNlaXZlZCBsb2Fkc3RhcnQgZXZlbnQKK3JlYWR5U3RhdGU6IDEK
K1JlY2VpdmVkIGxvYWQgZXZlbnQKK3JlYWR5U3RhdGU6IDIKK3Jlc3VsdCBzaXplOiAzMQorcmVz
dWx0OiBkYXRhOnRleHQvcGxhaW47YmFzZTY0LFNHVnNiRzg9CitSZWNlaXZlZCBsb2FkZW5kIGV2
ZW50CitET05FCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZmlsZXMvd29ya2Vycy93
b3JrZXItcmVhZC1maWxlLWFzeW5jLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVzL3dvcmtl
cnMvd29ya2VyLXJlYWQtZmlsZS1hc3luYy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBiYTBhNWEwNGQyMTcx
NGVkMmMyMjdiN2IxODRlODc1MDhjYmJjYWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2ZpbGVzL3dvcmtlcnMvd29ya2VyLXJlYWQtZmlsZS1hc3luYy5odG1sCkBAIC0wLDAg
KzEsMzcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxpbnB1dCB0eXBlPSJm
aWxlIiBuYW1lPSJmaWxlIiBpZD0iZmlsZSIgb25jaGFuZ2U9Im9uSW5wdXRGaWxlQ2hhbmdlKHRl
c3RGaWxlSW5mb0xpc3QpIiBtdWx0aXBsZT4KKzxwcmUgaWQ9J2NvbnNvbGUnPjwvcHJlPgorCis8
c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3NldHVwLWZvci1yZWFkLWNvbW1vbi5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0PgordmFyIHRlc3RGaWxlSW5mb0xpc3QgPSBbCisgICAgeyAnbmFtZSc6ICdu
b24tZXhpc3RlbnQnLCAncGF0aCc6ICcuLi9yZXNvdXJjZXMvbm9uLWV4aXN0ZW50JyB9LAorICAg
IHsgJ25hbWUnOiAnZW1wdHktZmlsZScsICdwYXRoJzogJy4uL3Jlc291cmNlcy9lbXB0eS1maWxl
JyB9LAorICAgIHsgJ25hbWUnOiAnVVRGOC1maWxlJywgJ3BhdGgnOiAnLi4vcmVzb3VyY2VzL1VU
RjgudHh0JyB9LAorICAgIHsgJ25hbWUnOiAnVVRGMTZCRS1CT00tZmlsZScsICdwYXRoJzogJy4u
L3Jlc291cmNlcy9VVEYxNkJFLUJPTS50eHQnIH0sCisgICAgeyAnbmFtZSc6ICdVVEYxNkxFLUJP
TS1maWxlJywgJ3BhdGgnOiAnLi4vcmVzb3VyY2VzL1VURjE2TEUtQk9NLnR4dCcgfSwKKyAgICB7
ICduYW1lJzogJ1VURjgtQk9NLWZpbGUnLCAncGF0aCc6ICcuLi9yZXNvdXJjZXMvVVRGOC1CT00u
dHh0JyB9LAorICAgIHsgJ25hbWUnOiAnVVRGMTZCRS1maWxlJywgJ3BhdGgnOiAnLi4vcmVzb3Vy
Y2VzL1VURjE2QkUudHh0JyB9LAorICAgIHsgJ25hbWUnOiAnYmluYXJ5LWZpbGUnLCAncGF0aCc6
ICcuLi9yZXNvdXJjZXMvYmluYXJ5LWZpbGUnIH0sCitdOworCitmdW5jdGlvbiBnZXRXb3JrZXJT
Y3JpcHRVUkwoKQoreworICAgIHJldHVybiAicmVzb3VyY2VzL3dvcmtlci1yZWFkLWZpbGUtYXN5
bmMuanMiOworfQorCitmdW5jdGlvbiBzdGFydFRlc3QodGVzdEZpbGVzKQoreworICAgIHN0YXJ0
V29ya2VyKHRlc3RGaWxlcyk7Cit9CisKK2lmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIud2FpdFVudGlsRG9uZSgpOworICAgIHdpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbigpIHsgcnVu
VGVzdHModGVzdEZpbGVJbmZvTGlzdCk7IH0KK30KKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9maWxlcy93b3JrZXJzL3dvcmtlci1yZWFk
LWZpbGUtc3luYy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVzL3dvcmtlcnMv
d29ya2VyLXJlYWQtZmlsZS1zeW5jLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNjkxYTU4Zjk2
NmJiNjNhYTU4MWE1YWFhZjRjMmIyMWZmNDQ1N2JhCkJpbmFyeSBmaWxlcyAvZGV2L251bGwgYW5k
IGIvTGF5b3V0VGVzdHMvZmFzdC9maWxlcy93b3JrZXJzL3dvcmtlci1yZWFkLWZpbGUtc3luYy1l
eHBlY3RlZC50eHQgZGlmZmVyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVzL3dv
cmtlcnMvd29ya2VyLXJlYWQtZmlsZS1zeW5jLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVz
L3dvcmtlcnMvd29ya2VyLXJlYWQtZmlsZS1zeW5jLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGM3M2E2OGJm
NmJkOGFiZTQzZjAwYzNiM2Y0YmI2Njg4NWU5ZDBkNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvZmlsZXMvd29ya2Vycy93b3JrZXItcmVhZC1maWxlLXN5bmMuaHRtbApAQCAt
MCwwICsxLDM3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8aW5wdXQgdHlw
ZT0iZmlsZSIgbmFtZT0iZmlsZSIgaWQ9ImZpbGUiIG9uY2hhbmdlPSJvbklucHV0RmlsZUNoYW5n
ZSh0ZXN0RmlsZUluZm9MaXN0KSIgbXVsdGlwbGU+Cis8cHJlIGlkPSdjb25zb2xlJz48L3ByZT4K
KworPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zZXR1cC1mb3ItcmVhZC1jb21tb24uanMiPjwv
c2NyaXB0PgorPHNjcmlwdD4KK3ZhciB0ZXN0RmlsZUluZm9MaXN0ID0gWworICAgIHsgJ25hbWUn
OiAnbm9uLWV4aXN0ZW50JywgJ3BhdGgnOiAnLi4vcmVzb3VyY2VzL25vbi1leGlzdGVudCcgfSwK
KyAgICB7ICduYW1lJzogJ2VtcHR5LWZpbGUnLCAncGF0aCc6ICcuLi9yZXNvdXJjZXMvZW1wdHkt
ZmlsZScgfSwKKyAgICB7ICduYW1lJzogJ1VURjgtZmlsZScsICdwYXRoJzogJy4uL3Jlc291cmNl
cy9VVEY4LnR4dCcgfSwKKyAgICB7ICduYW1lJzogJ1VURjE2QkUtQk9NLWZpbGUnLCAncGF0aCc6
ICcuLi9yZXNvdXJjZXMvVVRGMTZCRS1CT00udHh0JyB9LAorICAgIHsgJ25hbWUnOiAnVVRGMTZM
RS1CT00tZmlsZScsICdwYXRoJzogJy4uL3Jlc291cmNlcy9VVEYxNkxFLUJPTS50eHQnIH0sCisg
ICAgeyAnbmFtZSc6ICdVVEY4LUJPTS1maWxlJywgJ3BhdGgnOiAnLi4vcmVzb3VyY2VzL1VURjgt
Qk9NLnR4dCcgfSwKKyAgICB7ICduYW1lJzogJ1VURjE2QkUtZmlsZScsICdwYXRoJzogJy4uL3Jl
c291cmNlcy9VVEYxNkJFLnR4dCcgfSwKKyAgICB7ICduYW1lJzogJ2JpbmFyeS1maWxlJywgJ3Bh
dGgnOiAnLi4vcmVzb3VyY2VzL2JpbmFyeS1maWxlJyB9LAorXTsKKworZnVuY3Rpb24gZ2V0V29y
a2VyU2NyaXB0VVJMKCkKK3sKKyAgICByZXR1cm4gInJlc291cmNlcy93b3JrZXItcmVhZC1maWxl
LXN5bmMuanMiOworfQorCitmdW5jdGlvbiBzdGFydFRlc3QodGVzdEZpbGVzKQoreworICAgIHN0
YXJ0V29ya2VyKHRlc3RGaWxlcyk7Cit9CisKK2lmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIHdpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbigpIHsg
cnVuVGVzdHModGVzdEZpbGVJbmZvTGlzdCk7IH0KK30KKzwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZAppbmRleCAwYzUwZTFiZGM1OWI3YTY4MjE5MTI5
ZjEzYjNjNTJhNDBlMTZhNWRiLi5hMDFkOGMwM2I5ZThhZDFjMDVjYjhkMmRjY2U2ZThmZTliMmE0
NDg4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZAorKysgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZApAQCAtMzE2Myw2ICszMTYzLDcgQEAgaHR0
cC90ZXN0cy9sb2NhbC9mb3JtZGF0YS9zZW5kLWZvcm0tZGF0YS13aXRoLXNsaWNlZC1maWxlLmh0
bWwKIGh0dHAvdGVzdHMvbG9jYWwvZm9ybWRhdGEvdXBsb2FkLWV2ZW50cy5odG1sCiBmYXN0L2Zp
bGVzL3JlYWQtYmxvYi1hc3luYy5odG1sCiBmYXN0L2ZpbGVzL3JlYWQtZmlsZS1hc3luYy5odG1s
CitmYXN0L2ZpbGVzL3dvcmtlcnMKIGh0dHAvdGVzdHMvbWVkaWEvdmlkZW8tcGxheS1zdGFsbC1z
ZWVrLmh0bWwKIGh0dHAvdGVzdHMvbWVkaWEvdmlkZW8tcGxheS1zdGFsbC5odG1sCiBodHRwL3Rl
c3RzL21lZGlhL3ZpZGVvLXNlZWthYmxlLXN0YWxsLmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL21hYy13azIvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13
azIvU2tpcHBlZAppbmRleCBjNDk2MzIxMzEyMWExNzMzZGM1ZWQ0M2M1ZDY4Mjc1NmZlOGVlNWFj
Li42ODM3MDRhZTY2MzZjOGExMjczNTkyMjE0NTQ3ZTgwYjFjNDczMWZlIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjLXdrMi9Ta2lwcGVkCkBAIC0zNjUsNiArMzY1LDcgQEAgZmFzdC9ldmVudHMvd2lu
ZG93LWV2ZW50cy1jYXB0dXJlLmh0bWwKIGZhc3QvZXZlbnRzL3pvb20tZGJsY2xpY2suaHRtbAog
ZmFzdC9maWxlcy9yZWFkLWJsb2ItYXN5bmMuaHRtbAogZmFzdC9maWxlcy9yZWFkLWZpbGUtYXN5
bmMuaHRtbAorZmFzdC9maWxlcy93b3JrZXJzCiBmYXN0L2Zvcm1zLzI1MTUzLmh0bWwKIGZhc3Qv
Zm9ybXMvYWNjZXNzLWtleS5odG1sCiBmYXN0L2Zvcm1zL2J1dHRvbi1lbnRlci1jbGljay5odG1s
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vcXQvU2tpcHBlZAppbmRleCBhNmJmMzMwMGE0MWE1MGRkMWQ1ZDRkODc2N2U2
YmExZWFkZGFjMTJmLi4xZGIxMzk2OTY3M2U1ZDJlMzNmYzBlNmY1ZDk3YTAyMjYwNTRlYzhlIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCisrKyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKQEAgLTc4Niw2ICs3ODYsNyBAQCBodHRwL3Rlc3RzL3Nl
Y3VyaXR5L2lzb2xhdGVkV29ybGQvd29ybGQtcmV1c2UuaHRtbAogZmFzdC9kb20vV2luZG93L3dp
bmRvdy1wb3N0bWVzc2FnZS1jbG9uZS1mcmFtZXMuaHRtbAogZmFzdC9maWxlcy9yZWFkLWJsb2It
YXN5bmMuaHRtbAogZmFzdC9maWxlcy9yZWFkLWZpbGUtYXN5bmMuaHRtbAorZmFzdC9maWxlcy93
b3JrZXJzCiAKICMgTWlzc2luZyBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRBbHdheXNBY2NlcHRD
b29raWVzKCkKIGh0dHAvdGVzdHMvcGx1Z2lucy90aGlyZC1wYXJ0eS1jb29raWUtYWNjZXB0LXBv
bGljeS5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZCBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkCmluZGV4IDM2NjE4OTM0ZGY1YjkzMTBi
YWEwNjQyNWM4YWNkZWEyNzRhN2QwOWUuLjlkNjgzZTMwOThlZDkwMTFjNDM4MDcyODAyODJlZTNi
ZGY1ZTVkNDIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkCisr
KyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkCkBAIC0xOTcsNiArMTk3LDcgQEAg
ZmFzdC9ldmVudHMvZHJhZy1maWxlLWNyYXNoLmh0bWwKIGZhc3QvZG9tL1dpbmRvdy93aW5kb3ct
cG9zdG1lc3NhZ2UtY2xvbmUuaHRtbAogZmFzdC9maWxlcy9yZWFkLWJsb2ItYXN5bmMuaHRtbAog
ZmFzdC9maWxlcy9yZWFkLWZpbGUtYXN5bmMuaHRtbAorZmFzdC9maWxlcy93b3JrZXJzCiAKICMg
TmVlZCB0byBhZGQgZnVuY3Rpb25hbGl0eSB0byBEdW1wUmVuZGVyVHJlZSB0byB0ZXN0IElETiA8
cmRhcjovL3Byb2JsZW0vNTMwMTk1ND4KIGZhc3QvZW5jb2RpbmcvaWRuLXNlY3VyaXR5Lmh0bWwK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YWRjZjNiYzgwZGMwODIwYjRkODk0ODNiN2YzNjQ3YWE4MzQ5OWMzMC4uZDU2YzVkNWVhYjM0MmZk
YThkZDJhMTI5NDg5M2FmMDYxZWM2MmE5YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAxMC0wOC0yNSAgSmlh
biBMaSAgPGppYW5saUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgU3VwcG9ydCBGaWxlUmVhZGVyU3luYyBpbiB3b3JrZXJzLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDQ2NTcKKwor
ICAgICAgICBUZXN0czogZmFzdC9maWxlcy93b3JrZXJzL3dvcmtlci1yZWFkLWJsb2ItYXN5bmMu
aHRtbAorICAgICAgICAgICAgICAgZmFzdC9maWxlcy93b3JrZXJzL3dvcmtlci1yZWFkLWJsb2It
c3luYy5odG1sCisgICAgICAgICAgICAgICBmYXN0L2ZpbGVzL3dvcmtlcnMvd29ya2VyLXJlYWQt
ZmlsZS1hc3luYy5odG1sCisgICAgICAgICAgICAgICBmYXN0L2ZpbGVzL3dvcmtlcnMvd29ya2Vy
LXJlYWQtZmlsZS1zeW5jLmh0bWwKKworICAgICAgICAqIERlcml2ZWRTb3VyY2VzLmNwcDoKKyAg
ICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAg
ICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogaHRtbC9GaWxlRXhjZXB0aW9uLmg6IEFkZGVkLgorICAgICAgICAqIGh0bWwvRmlsZUV4
Y2VwdGlvbi5pZGw6IEFkZGVkLgorICAgICAgICAqIGh0bWwvRmlsZVJlYWRlclN5bmMuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKiBodG1sL0ZpbGVSZWFkZXJTeW5jLmg6IEFkZGVkLgorICAgICAgICAq
IGh0bWwvRmlsZVJlYWRlclN5bmMuaWRsOiBBZGRlZC4KKyAgICAgICAgKiB3b3JrZXJzL1dvcmtl
ckNvbnRleHQuaWRsOiBFeHBvc2UgRmlsZVJlYWRlclN5bmMgYW5kIEJsb2RCdWlsZGVyIGluIHdv
cmtlcnMuCisKIDIwMTAtMDgtMjUgIEtlbm5ldGggUnVzc2VsbCAgPGtickBnb29nbGUuY29tPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KZGlmZiAtLWdpdCBhL1dlYkNvcmUv
RGVyaXZlZFNvdXJjZXMuY3BwIGIvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAKaW5kZXggYmJh
YjY0YmZkMmJhOWZlNjBlYTEyMThjZTVlNDAxMjM3ZGFhNmY5Ni4uODFmNDA3MDAxYzk2MWFjNGM2
MTYyMmJiODBhYTE4OTY4MGVlZmU4YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9EZXJpdmVkU291cmNl
cy5jcHAKKysrIGIvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAKQEAgLTEwNyw4ICsxMDcsMTAg
QEAKICNpbmNsdWRlICJKU0ZpbGUuY3BwIgogI2luY2x1ZGUgIkpTRmlsZUVudHJ5LmNwcCIKICNp
bmNsdWRlICJKU0ZpbGVFcnJvci5jcHAiCisjaW5jbHVkZSAiSlNGaWxlRXhjZXB0aW9uLmNwcCIK
ICNpbmNsdWRlICJKU0ZpbGVMaXN0LmNwcCIKICNpbmNsdWRlICJKU0ZpbGVSZWFkZXIuY3BwIgor
I2luY2x1ZGUgIkpTRmlsZVJlYWRlclN5bmMuY3BwIgogI2luY2x1ZGUgIkpTRmlsZVN5c3RlbUNh
bGxiYWNrLmNwcCIKICNpbmNsdWRlICJKU0ZpbGVXcml0ZXIuY3BwIgogI2luY2x1ZGUgIkpTRmxh
Z3MuY3BwIgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvV2ViQ29y
ZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IGI5ZjY1ODk4MWQwZWU4MGE5MjliYjBmMTdlMjE1
NmM2Zjc5NTI3NzkuLjczODIyZTM3ZDE0OTBjOGEwNzE4YTliMWFhYWM4NWJlMWIwOGI3NjkgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9XZWJDb3JlL0Rlcml2
ZWRTb3VyY2VzLm1ha2UKQEAgLTE1MSw5ICsxNTEsMTEgQEAgRE9NX0NMQVNTRVMgPSBcCiAgICAg
RXZlbnRUYXJnZXQgXAogICAgIEZpbGUgXAogICAgIEZpbGVFbnRyeSBcCisgICAgRmlsZUV4Y2Vw
dGlvbiBcCiAgICAgRmlsZUVycm9yIFwKICAgICBGaWxlTGlzdCBcCiAgICAgRmlsZVJlYWRlciBc
CisgICAgRmlsZVJlYWRlclN5bmMgXAogICAgIEZpbGVXcml0ZXIgXAogICAgIEZpbGVTeXN0ZW1D
YWxsYmFjayBcCiAgICAgRmxhZ3MgXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkg
Yi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCA0M2Q0MjNkZjZkMzNjMGMwNjc4MjZkNDRhYzNi
ZWZiMzA2MjcwMjcyLi5hNzc4MzAzNWM5ODM4MDk3MTkyZmYyMDg1MGFiODlkYzNkMTM2MTA2IDEw
MDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQpAQCAtMTE2LDggKzExNiwxMCBAQAogICAgICAgICAgICAgJ2h0bWwvRE9NRm9ybURhdGEuaWRs
JywKICAgICAgICAgICAgICdodG1sL0ZpbGUuaWRsJywKICAgICAgICAgICAgICdodG1sL0ZpbGVF
cnJvci5pZGwnLAorICAgICAgICAgICAgJ2h0bWwvRmlsZUV4Y2VwdGlvbi5pZGwnLAogICAgICAg
ICAgICAgJ2h0bWwvRmlsZUxpc3QuaWRsJywKICAgICAgICAgICAgICdodG1sL0ZpbGVSZWFkZXIu
aWRsJywKKyAgICAgICAgICAgICdodG1sL0ZpbGVSZWFkZXJTeW5jLmlkbCcsCiAgICAgICAgICAg
ICAnaHRtbC9GaWxlV3JpdGVyLmlkbCcsCiAgICAgICAgICAgICAnaHRtbC9IVE1MQWxsQ29sbGVj
dGlvbi5pZGwnLAogICAgICAgICAgICAgJ2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuaWRsJywKQEAg
LTE1MTcsMTAgKzE1MTksMTMgQEAKICAgICAgICAgICAgICdodG1sL0ZpbGUuY3BwJywKICAgICAg
ICAgICAgICdodG1sL0ZpbGUuaCcsCiAgICAgICAgICAgICAnaHRtbC9GaWxlRXJyb3IuaCcsCisg
ICAgICAgICAgICAnaHRtbC9GaWxlRXhjZXB0aW9uLmgnLAogICAgICAgICAgICAgJ2h0bWwvRmls
ZUxpc3QuY3BwJywKICAgICAgICAgICAgICdodG1sL0ZpbGVMaXN0LmgnLAogICAgICAgICAgICAg
J2h0bWwvRmlsZVJlYWRlci5jcHAnLAogICAgICAgICAgICAgJ2h0bWwvRmlsZVJlYWRlci5oJywK
KyAgICAgICAgICAgICdodG1sL0ZpbGVSZWFkZXJTeW5jLmNwcCcsCisgICAgICAgICAgICAnaHRt
bC9GaWxlUmVhZGVyU3luYy5oJywKICAgICAgICAgICAgICdodG1sL0ZpbGVXcml0ZXIuY3BwJywK
ICAgICAgICAgICAgICdodG1sL0ZpbGVXcml0ZXIuaCcsCiAgICAgICAgICAgICAnaHRtbC9GaWxl
U3RyZWFtUHJveHkuY3BwJywKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9XZWJD
b3JlL1dlYkNvcmUucHJvCmluZGV4IGM4ZDJlMWIzM2EwNjQxNGI3ZDhjNGFiM2E1MjEwMmVjNmJi
MDVmYWQuLjAyMDA0NGUxOGI2MWFjNDViOTY0MDQ0N2Y0ZTIzY2U0YWFiNzNiYjEgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvV2ViQ29yZS5wcm8KKysrIGIvV2ViQ29yZS9XZWJDb3JlLnBybwpAQCAtNjQ1
LDYgKzY0NSw3IEBAIFNPVVJDRVMgKz0gXAogICAgIGh0bWwvRmlsZS5jcHAgXAogICAgIGh0bWwv
RmlsZUxpc3QuY3BwIFwKICAgICBodG1sL0ZpbGVSZWFkZXIuY3BwIFwKKyAgICBodG1sL0ZpbGVS
ZWFkZXJTeW5jLmNwcCBcCiAgICAgaHRtbC9GaWxlU3RyZWFtUHJveHkuY3BwIFwKICAgICBodG1s
L0ZpbGVUaHJlYWQuY3BwIFwKICAgICBodG1sL0ZpbGVXcml0ZXIuY3BwIFwKQEAgLTE0MjAsOCAr
MTQyMSwxMCBAQCBIRUFERVJTICs9IFwKICAgICBodG1sL0RPTUZvcm1EYXRhLmggXAogICAgIGh0
bWwvRmlsZS5oIFwKICAgICBodG1sL0ZpbGVFcnJvci5oIFwKKyAgICBodG1sL0ZpbGVFeGNlcHRp
b24uaCBcCiAgICAgaHRtbC9GaWxlTGlzdC5oIFwKICAgICBodG1sL0ZpbGVSZWFkZXIuaCBcCisg
ICAgaHRtbC9GaWxlUmVhZGVyU3luYy5oIFwKICAgICBodG1sL0ZpbGVTdHJlYW1Qcm94eS5oIFwK
ICAgICBodG1sL0ZpbGVUaHJlYWQuaCBcCiAgICAgaHRtbC9GaWxlVGhyZWFkVGFzay5oIFwKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9XZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IDBkMjgyMDkwNDY3M2IzMmMwMTYx
YWJjMWFiNTA0OWZhMTc4YjRkYmYuLjdjNzk3OTQ5ZGU2ODZiNTU1NjkyNjk0MDA2YjUzM2YyYWUz
NmMxNTggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oK
KysrIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtNDk4OSw2ICs0
OTg5LDE0IEBACiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBh
dGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNc
SlNGaWxlUmVhZGVyU3luYy5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJ
CQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERl
cml2ZWRTb3VyY2VzXEpTRmlsZVJlYWRlclN5bmMuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJ
CQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpcJChQcm9q
ZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNGaWxlU3lzdGVtQ2FsbGJhY2suY3BwIg0KIAkJCQk+
DQogCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KQEAgLTM3MjA5LDYgKzM3MjE3LDEwIEBACiAJCQkJ
Pg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcRmls
ZUV4Y2VwdGlvbi5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQogCQkJCVJlbGF0
aXZlUGF0aD0iLi5caHRtbFxGaWxlTGlzdC5jcHAiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQpAQCAt
MzcyMjUsNiArMzcyMzcsMTQgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQorCQkJ
CVJlbGF0aXZlUGF0aD0iLi5caHRtbFxGaWxlUmVhZGVyU3luYy5jcHAiDQorCQkJCT4NCisJCQk8
L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXEZpbGVSZWFkZXJT
eW5jLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRo
PSIuLlxodG1sXEZpbGVTdHJlYW1Qcm94eS5jcHAiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5YzY5NGQ3NmNiMTc4
NmI3YzJiNmY3N2JhYmEwNDRhNTk5ODNjYWM4Li4zNzc5MDJkNmEwMWY2YzRmYjI4MWZlYjJmZmZm
NjZiNzgxNWQ1YmNhIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtNzA2LDYgKzcwNiwxMyBAQAogCQkyRUFGQUYwRjEwRTJBRjJEMDA3RUQzRDYgLyogQmxv
Yi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkVBRkFG
MEMxMEUyQUYyRDAwN0VEM0Q2IC8qIEJsb2IuaCAqLzsgfTsKIAkJMkVCNEJDRDIxMjFGMDNFMzAw
RUM0ODg1IC8qIEJsb2JSZXNvdXJjZUhhbmRsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRUI0QkNEMDEyMUYwM0UzMDBFQzQ4ODUgLyogQmxvYlJl
c291cmNlSGFuZGxlLmNwcCAqLzsgfTsKIAkJMkVCNEJDRDMxMjFGMDNFMzAwRUM0ODg1IC8qIEJs
b2JSZXNvdXJjZUhhbmRsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMkVCNEJDRDExMjFGMDNFMzAwRUM0ODg1IC8qIEJsb2JSZXNvdXJjZUhhbmRsZS5o
ICovOyB9OworCQkyRUI0QzExRDEyMjVGRTQyMDBFQzQ4ODUgLyogRmlsZUV4Y2VwdGlvbi5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkVCNEMxMUIxMjI1
RkU0MjAwRUM0ODg1IC8qIEZpbGVFeGNlcHRpb24uaCAqLzsgfTsKKwkJMkVCNEMxMjIxMjI1RkU2
MTAwRUM0ODg1IC8qIEZpbGVSZWFkZXJTeW5jLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFQjRDMTFGMTIyNUZFNjEwMEVDNDg4NSAvKiBGaWxlUmVh
ZGVyU3luYy5jcHAgKi87IH07CisJCTJFQjRDMTIzMTIyNUZFNjEwMEVDNDg4NSAvKiBGaWxlUmVh
ZGVyU3luYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MkVCNEMxMjAxMjI1RkU2MTAwRUM0ODg1IC8qIEZpbGVSZWFkZXJTeW5jLmggKi87IH07CisJCTJF
QjRDMTM1MTIyNUZGNUEwMEVDNDg4NSAvKiBKU0ZpbGVFeGNlcHRpb24uY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkVCNEMxMzMxMjI1RkY1QTAwRUM0
ODg1IC8qIEpTRmlsZUV4Y2VwdGlvbi5jcHAgKi87IH07CisJCTJFQjRDMTM2MTIyNUZGNUEwMEVD
NDg4NSAvKiBKU0ZpbGVFeGNlcHRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDJFQjRDMTM0MTIyNUZGNUEwMEVDNDg4NSAvKiBKU0ZpbGVFeGNlcHRp
b24uaCAqLzsgfTsKKwkJMkVCNEMxMzkxMjI1RkY3MDAwRUM0ODg1IC8qIEpTRmlsZVJlYWRlclN5
bmMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkVC
NEMxMzcxMjI1RkY3MDAwRUM0ODg1IC8qIEpTRmlsZVJlYWRlclN5bmMuY3BwICovOyB9OworCQky
RUI0QzEzQTEyMjVGRjcwMDBFQzQ4ODUgLyogSlNGaWxlUmVhZGVyU3luYy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkVCNEMxMzgxMjI1RkY3MDAwRUM0
ODg1IC8qIEpTRmlsZVJlYWRlclN5bmMuaCAqLzsgfTsKIAkJMkVDRjdBREMxMDE2MkIzODAwNDI3
REU3IC8qIEpTRXJyb3JFdmVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAyRUNGN0FEQTEwMTYyQjM4MDA0MjdERTcgLyogSlNFcnJvckV2ZW50LmNw
cCAqLzsgfTsKIAkJMkVDRjdBREQxMDE2MkIzODAwNDI3REU3IC8qIEpTRXJyb3JFdmVudC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkVDRjdBREIxMDE2
MkIzODAwNDI3REU3IC8qIEpTRXJyb3JFdmVudC5oICovOyB9OwogCQkyRUNGN0FFMTEwMTYyQjU4
MDA0MjdERTcgLyogRXJyb3JFdmVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAyRUNGN0FERTEwMTYyQjU4MDA0MjdERTcgLyogRXJyb3JFdmVudC5j
cHAgKi87IH07CkBAIC02NTMxLDYgKzY1MzgsMTUgQEAKIAkJMkVBRkFGMEQxMEUyQUYyRDAwN0VE
M0Q2IC8qIEJsb2IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEJsb2IuaWRsOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkyRUI0QkNEMDEyMUYwM0UzMDBFQzQ4ODUgLyogQmxvYlJl
c291cmNlSGFuZGxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJs
b2JSZXNvdXJjZUhhbmRsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJFQjRC
Q0QxMTIxRjAzRTMwMEVDNDg4NSAvKiBCbG9iUmVzb3VyY2VIYW5kbGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQmxvYlJlc291cmNlSGFuZGxlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTJFQjRDMTFCMTIyNUZFNDIwMEVDNDg4NSAvKiBGaWxlRXhjZXB0aW9u
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZpbGVFeGNlcHRpb24uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkVCNEMxMUMxMjI1RkU0MjAwRUM0ODg1IC8qIEZp
bGVFeGNlcHRpb24uaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEZpbGVFeGNlcHRpb24uaWRs
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyRUI0QzExRjEyMjVGRTYxMDBFQzQ4ODUg
LyogRmlsZVJlYWRlclN5bmMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gRmlsZVJlYWRlclN5bmMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyRUI0
QzEyMDEyMjVGRTYxMDBFQzQ4ODUgLyogRmlsZVJlYWRlclN5bmMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRmlsZVJlYWRlclN5bmMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMkVCNEMxMjExMjI1RkU2MTAwRUM0ODg1IC8qIEZpbGVSZWFkZXJTeW5jLmlkbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IHBhdGggPSBGaWxlUmVhZGVyU3luYy5pZGw7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTJFQjRDMTMzMTIyNUZGNUEwMEVDNDg4NSAvKiBKU0ZpbGVFeGNlcHRp
b24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNGaWxlRXhjZXB0
aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkVCNEMxMzQxMjI1RkY1QTAw
RUM0ODg1IC8qIEpTRmlsZUV4Y2VwdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU0ZpbGVFeGNlcHRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkVC
NEMxMzcxMjI1RkY3MDAwRUM0ODg1IC8qIEpTRmlsZVJlYWRlclN5bmMuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNGaWxlUmVhZGVyU3luYy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTJFQjRDMTM4MTIyNUZGNzAwMEVDNDg4NSAvKiBKU0ZpbGVS
ZWFkZXJTeW5jLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRmlsZVJlYWRl
clN5bmMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkVDRjdBREExMDE2MkIzODAw
NDI3REU3IC8qIEpTRXJyb3JFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU0Vycm9yRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQky
RUNGN0FEQjEwMTYyQjM4MDA0MjdERTcgLyogSlNFcnJvckV2ZW50LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTRXJyb3JFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkyRUNGN0FERTEwMTYyQjU4MDA0MjdERTcgLyogRXJyb3JFdmVudC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFcnJvckV2ZW50LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0MDM2LDEyICsxNDA1MiwxNyBAQAogCQkJCUJDMTg4MUQ5
MEUwOEM0RUQwMDA0OEMxMyAvKiBGaWxlLmlkbCAqLywKIAkJCQkyRTNCQzBCQjExN0QzQTRGMDBC
OTQwOUEgLyogRmlsZUVycm9yLmggKi8sCiAJCQkJMkUzQkMwQkMxMTdEM0E0RjAwQjk0MDlBIC8q
IEZpbGVFcnJvci5pZGwgKi8sCisJCQkJMkVCNEMxMUIxMjI1RkU0MjAwRUM0ODg1IC8qIEZpbGVF
eGNlcHRpb24uaCAqLywKKwkJCQkyRUI0QzExQzEyMjVGRTQyMDBFQzQ4ODUgLyogRmlsZUV4Y2Vw
dGlvbi5pZGwgKi8sCiAJCQkJQkNEQkI4QUIwRTA4OENBNTAwQzYwRkY2IC8qIEZpbGVMaXN0LmNw
cCAqLywKIAkJCQlCQ0RCQjhBQTBFMDg4Q0E1MDBDNjBGRjYgLyogRmlsZUxpc3QuaCAqLywKIAkJ
CQlCQzE4ODFEQzBFMDhDNTQzMDAwNDhDMTMgLyogRmlsZUxpc3QuaWRsICovLAogCQkJCTJFOTRG
M0NCMTE4QjkwOEUwMEI3Rjc1RCAvKiBGaWxlUmVhZGVyLmNwcCAqLywKIAkJCQkyRTk0RjNDQzEx
OEI5MDhFMDBCN0Y3NUQgLyogRmlsZVJlYWRlci5oICovLAogCQkJCTJFOTRGNDI3MTE5MjA1QjMw
MEI3Rjc1RCAvKiBGaWxlUmVhZGVyLmlkbCAqLywKKwkJCQkyRUI0QzExRjEyMjVGRTYxMDBFQzQ4
ODUgLyogRmlsZVJlYWRlclN5bmMuY3BwICovLAorCQkJCTJFQjRDMTIwMTIyNUZFNjEwMEVDNDg4
NSAvKiBGaWxlUmVhZGVyU3luYy5oICovLAorCQkJCTJFQjRDMTIxMTIyNUZFNjEwMEVDNDg4NSAv
KiBGaWxlUmVhZGVyU3luYy5pZGwgKi8sCiAJCQkJODk1MjUzREExMTZDNEVGNTAwQ0FCRjAwIC8q
IEZpbGVTdHJlYW1Qcm94eS5jcHAgKi8sCiAJCQkJODk1MjUzREIxMTZDNEVGNTAwQ0FCRjAwIC8q
IEZpbGVTdHJlYW1Qcm94eS5oICovLAogCQkJCTg5NTI1MzUwMTE2NDFCMzQwMENBQkYwMCAvKiBG
aWxlVGhyZWFkLmNwcCAqLywKQEAgLTE0NDI4LDEwICsxNDQ0OSwxNCBAQAogCQkJCUJDMDBGMDEx
MEUwQTE4OTUwMEZEMDRFMyAvKiBKU0ZpbGUuaCAqLywKIAkJCQkyRTNCQzBDODExN0QzRTA4MDBC
OTQwOUEgLyogSlNGaWxlRXJyb3IuY3BwICovLAogCQkJCTJFM0JDMEM5MTE3RDNFMDgwMEI5NDA5
QSAvKiBKU0ZpbGVFcnJvci5oICovLAorCQkJCTJFQjRDMTMzMTIyNUZGNUEwMEVDNDg4NSAvKiBK
U0ZpbGVFeGNlcHRpb24uY3BwICovLAorCQkJCTJFQjRDMTM0MTIyNUZGNUEwMEVDNDg4NSAvKiBK
U0ZpbGVFeGNlcHRpb24uaCAqLywKIAkJCQlCQzAwRjAxMjBFMEExODk1MDBGRDA0RTMgLyogSlNG
aWxlTGlzdC5jcHAgKi8sCiAJCQkJQkMwMEYwMTMwRTBBMTg5NTAwRkQwNEUzIC8qIEpTRmlsZUxp
c3QuaCAqLywKIAkJCQkyRTk0RjQzOTExOTIwN0RBMDBCN0Y3NUQgLyogSlNGaWxlUmVhZGVyLmNw
cCAqLywKIAkJCQkyRTk0RjQzQTExOTIwN0RBMDBCN0Y3NUQgLyogSlNGaWxlUmVhZGVyLmggKi8s
CisJCQkJMkVCNEMxMzcxMjI1RkY3MDAwRUM0ODg1IC8qIEpTRmlsZVJlYWRlclN5bmMuY3BwICov
LAorCQkJCTJFQjRDMTM4MTIyNUZGNzAwMEVDNDg4NSAvKiBKU0ZpbGVSZWFkZXJTeW5jLmggKi8s
CiAJCQkJNDlFRUNFRjQxMDUwNzBDNDAwMDk5RkFCIC8qIEpTRmxvYXQzMkFycmF5LmNwcCAqLywK
IAkJCQk0OUVFQ0VGNTEwNTA3MEM0MDAwOTlGQUIgLyogSlNGbG9hdDMyQXJyYXkuaCAqLywKIAkJ
CQlCQzk3RTQxMDEwOTE1NEZBMDAxMEQzNjEgLyogSlNIVE1MQWxsQ29sbGVjdGlvbi5jcHAgKi8s
CkBAIC0yMDM2NSw2ICsyMDM5MCwxMCBAQAogCQkJCTg5NDdBODJDMTIyMjJDNDcwMEQ5NUYyRCAv
KiBKU01ldGFkYXRhQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTg5NDdBODNDMTIyMjM0
RjQwMEQ5NUYyRCAvKiBNZXRhZGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODk0N0E4M0QxMjIy
MzRGOTAwRDk1RjJEIC8qIE1ldGFkYXRhQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAorCQkJCTJF
QjRDMTFEMTIyNUZFNDIwMEVDNDg4NSAvKiBGaWxlRXhjZXB0aW9uLmggaW4gSGVhZGVycyAqLywK
KwkJCQkyRUI0QzEyMzEyMjVGRTYxMDBFQzQ4ODUgLyogRmlsZVJlYWRlclN5bmMuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTJFQjRDMTM2MTIyNUZGNUEwMEVDNDg4NSAvKiBKU0ZpbGVFeGNlcHRpb24u
aCBpbiBIZWFkZXJzICovLAorCQkJCTJFQjRDMTNBMTIyNUZGNzAwMEVDNDg4NSAvKiBKU0ZpbGVS
ZWFkZXJTeW5jLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVu
dFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTIyODIxLDYgKzIyODUwLDkgQEAKIAkJCQk4
OTY4NkM5RjEyMjI0NEEwMDA3NkVBQTQgLyogRE9NRmlsZVBhdGguY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJODk0N0E4MjkxMjIyMkM0NzAwRDk1RjJEIC8qIEpTTWV0YWRhdGEuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJODk0N0E4MkIxMjIyMkM0NzAwRDk1RjJEIC8qIEpTTWV0YWRhdGFDYWxsYmFj
ay5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkyRUI0QzEyMjEyMjVGRTYxMDBFQzQ4ODUgLyogRmls
ZVJlYWRlclN5bmMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMkVCNEMxMzUxMjI1RkY1QTAwRUM0
ODg1IC8qIEpTRmlsZUV4Y2VwdGlvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkyRUI0QzEzOTEy
MjVGRjcwMDBFQzQ4ODUgLyogSlNGaWxlUmVhZGVyU3luYy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9GaWxlRXhjZXB0aW9uLmggYi9XZWJDb3JlL2h0bWwvRmls
ZUV4Y2VwdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ0MTllYjdmYTIzMmRjYzkwOWE3ZTU4OGNlZDIyZDg2
YWNhNTEyYzAKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2h0bWwvRmlsZUV4Y2VwdGlvbi5o
CkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAq
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBGaWxlRXhjZXB0aW9uX2gKKyNkZWZpbmUgRmlsZUV4
Y2VwdGlvbl9oCisKKyNpZiBFTkFCTEUoQkxPQikgfHwgRU5BQkxFKEZJTEVfV1JJVEVSKQorCisj
aW5jbHVkZSAiRXhjZXB0aW9uQmFzZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IEZpbGVFeGNlcHRpb24gOiBwdWJsaWMgRXhjZXB0aW9uQmFzZSB7CitwdWJsaWM6CisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8RmlsZUV4Y2VwdGlvbj4gY3JlYXRlKGNvbnN0IEV4Y2VwdGlvbkNvZGVE
ZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24pCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IEZpbGVFeGNlcHRpb24oZGVzY3JpcHRpb24pKTsKKyAgICB9CisKKyAgICBzdGF0aWMgY29u
c3QgaW50IEZpbGVFeGNlcHRpb25PZmZzZXQgPSAxMDA7CisgICAgc3RhdGljIGNvbnN0IGludCBG
aWxlRXhjZXB0aW9uTWF4ID0gMTk5OworCisgICAgZW51bSBFdmVudEV4Y2VwdGlvbkNvZGUgewor
ICAgICAgICBVTlNQRUNJRklFRF9FVkVOVF9UWVBFX0VSUiA9IEZpbGVFeGNlcHRpb25PZmZzZXQK
KyAgICB9OworCitwcml2YXRlOgorICAgIEZpbGVFeGNlcHRpb24oY29uc3QgRXhjZXB0aW9uQ29k
ZURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbikKKyAgICAgICAgOiBFeGNlcHRpb25CYXNlKGRlc2Ny
aXB0aW9uKQorICAgIHsKKyAgICB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBFTkFCTEUoQkxPQikgfHwgRU5BQkxFKEZJTEVfV1JJVEVSKQorCisjZW5kaWYgLy8g
RmlsZUV4Y2VwdGlvbl9oCisKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9GaWxlRXhjZXB0aW9u
LmlkbCBiL1dlYkNvcmUvaHRtbC9GaWxlRXhjZXB0aW9uLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYWMzNzk1
YjQwNTk2NWU5ZDI4OWRkYzY5OTkzYmZlOTU5ZjMyNDUwCi0tLSAvZGV2L251bGwKKysrIGIvV2Vi
Q29yZS9odG1sL0ZpbGVFeGNlcHRpb24uaWRsCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1
dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworbW9kdWxlIGh0bWwg
eworICAgIGludGVyZmFjZSBbCisgICAgICAgIENvbmRpdGlvbmFsPUJMT0J8RklMRV9XUklURVIs
CisgICAgICAgIE5vU3RhdGljVGFibGVzLAorICAgICAgICBEb250Q2hlY2tFbnVtcworICAgIF0g
RmlsZUV4Y2VwdGlvbiB7CisKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIHNo
b3J0ICAgY29kZTsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyAgICAgICAg
bmFtZTsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyAgICAgICAgbWVzc2Fn
ZTsKKworI2lmIGRlZmluZWQoTEFOR1VBR0VfSkFWQVNDUklQVCkgJiYgTEFOR1VBR0VfSkFWQVND
UklQVAorICAgICAgICAvLyBPdmVycmlkZSBpbiBhIE1vemlsbGEgY29tcGF0aWJsZSBmb3JtYXQK
KyAgICAgICAgW0RvbnRFbnVtXSBET01TdHJpbmcgdG9TdHJpbmcoKTsKKyNlbmRpZgorCisgICAg
ICAgIC8vIEZpbGVFeGNlcHRpb25Db2RlCisgICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IE5P
VF9GT1VORF9FUlIgPSA4OworICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTRUNVUklUWV9F
UlIgPSAxODsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgQUJPUlRfRVJSID0gMjA7CisK
KyAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgTk9UX1JFQURBQkxFX0VSUiA9IDI0OworICAg
ICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBFTkNPRElOR19FUlIgPSAyNjsKKyAgICB9OworfQpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0ZpbGVSZWFkZXJTeW5jLmNwcCBiL1dlYkNvcmUvaHRt
bC9GaWxlUmVhZGVyU3luYy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDIwOWU5ODVkYTM3YTBjODg3NzE1NmRk
OGQ5YTExNWU0MzEwMWUxNQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvaHRtbC9GaWxlUmVh
ZGVyU3luYy5jcHAKQEAgLTAsMCArMSwxNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAg
R29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAq
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYg
RU5BQkxFKEJMT0IpCisKKyNpbmNsdWRlICJGaWxlUmVhZGVyU3luYy5oIgorCisjaW5jbHVkZSAi
QmFzZTY0LmgiCisjaW5jbHVkZSAiQmxvYi5oIgorI2luY2x1ZGUgIkZpbGVSZWFkZXIuaCIKKyNp
bmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250
ZXh0LmgiCisjaW5jbHVkZSAiVGV4dEVuY29kaW5nLmgiCisjaW5jbHVkZSAiVGV4dFJlc291cmNl
RGVjb2Rlci5oIgorI2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXIuaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitGaWxlUmVhZGVyU3luYzo6RmlsZVJlYWRlclN5bmMoKQorICAgIDogbV9yZWFk
VHlwZShSZWFkRmlsZUFzQmluYXJ5U3RyaW5nKQorICAgICwgbV9leGNlcHRpb25Db2RlKDApCisg
ICAgLCBtX3Jlc3VsdCgiIikKK3sKK30KKworY29uc3QgU2NyaXB0U3RyaW5nJiBGaWxlUmVhZGVy
U3luYzo6cmVhZEFzQmluYXJ5U3RyaW5nKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQsIEJsb2IqIGJsb2IsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlm
ICghYmxvYikKKyAgICAgICAgcmV0dXJuIG1fcmVzdWx0OworCisgICAgbV9yZWFkVHlwZSA9IFJl
YWRGaWxlQXNCaW5hcnlTdHJpbmc7CisgICAgcmVhZChzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBi
bG9iKTsKKworICAgIGVjID0gbV9leGNlcHRpb25Db2RlOworICAgIGlmIChlYykKKyAgICAgICAg
bV9yZXN1bHQgPSAiIjsKKyAgICByZXR1cm4gbV9yZXN1bHQ7Cit9CisKK2NvbnN0IFNjcmlwdFN0
cmluZyYgRmlsZVJlYWRlclN5bmM6OnJlYWRBc1RleHQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgQmxvYiogYmxvYiwgY29uc3QgU3RyaW5nJiBlbmNvZGlu
ZywgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYgKCFibG9iKQorICAgICAgICByZXR1cm4g
bV9yZXN1bHQ7CisKKyAgICBtX3JlYWRUeXBlID0gUmVhZEZpbGVBc1RleHQ7CisgICAgcmVhZChz
Y3JpcHRFeGVjdXRpb25Db250ZXh0LCBibG9iKTsKKworICAgIGVjID0gbV9leGNlcHRpb25Db2Rl
OworICAgIGlmIChlYykKKyAgICAgICAgbV9yZXN1bHQgPSAiIjsKKyAgICBlbHNlCisgICAgICAg
IGNvbnZlcnRUb1RleHQoZW5jb2RpbmcpOworICAgIHJldHVybiBtX3Jlc3VsdDsKK30KKworY29u
c3QgU2NyaXB0U3RyaW5nJiBGaWxlUmVhZGVyU3luYzo6cmVhZEFzRGF0YVVSTChTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBCbG9iKiBibG9iLCBFeGNlcHRp
b25Db2RlJiBlYykKK3sKKyAgICBpZiAoIWJsb2IpCisgICAgICAgIHJldHVybiBtX3Jlc3VsdDsK
KworICAgIG1fcmVhZFR5cGUgPSBSZWFkRmlsZUFzRGF0YVVSTDsKKyAgICByZWFkKHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQsIGJsb2IpOworCisgICAgZWMgPSBtX2V4Y2VwdGlvbkNvZGU7CisgICAg
aWYgKGVjKQorICAgICAgICBtX3Jlc3VsdCA9ICIiOworICAgIGVsc2UKKyAgICAgICAgRmlsZVJl
YWRlcjo6Y29udmVydFRvRGF0YVVSTChtX3Jhd0RhdGEsIGJsb2ItPnR5cGUoKSwgbV9yZXN1bHQp
OworICAgIHJldHVybiBtX3Jlc3VsdDsKK30KKwordm9pZCBGaWxlUmVhZGVyU3luYzo6cmVhZChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBCbG9iKiBibG9i
KQoreworICAgIC8vIFRoZSBibG9iIGlzIHJlYWQgYnkgcm91dGluZyB0aHJvdWdoIHRoZSByZXF1
ZXN0IGhhbmRsaW5nIGxheWVyIGdpdmVuIHRoZSBibG9iIHVybC4KKyAgICBSZXNvdXJjZVJlcXVl
c3QgcmVxdWVzdChibG9iLT51cmwoKSk7CisgICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9kKCJHRVQi
KTsKKworICAgIFRocmVhZGFibGVMb2FkZXJPcHRpb25zIG9wdGlvbnM7CisgICAgb3B0aW9ucy5z
ZW5kTG9hZENhbGxiYWNrcyA9IHRydWU7CisgICAgb3B0aW9ucy5zbmlmZkNvbnRlbnQgPSBmYWxz
ZTsKKyAgICBvcHRpb25zLmZvcmNlUHJlZmxpZ2h0ID0gZmFsc2U7CisgICAgb3B0aW9ucy5hbGxv
d0NyZWRlbnRpYWxzID0gdHJ1ZTsKKyAgICBvcHRpb25zLmNyb3NzT3JpZ2luUmVxdWVzdFBvbGlj
eSA9IERlbnlDcm9zc09yaWdpblJlcXVlc3RzOworCisgICAgVGhyZWFkYWJsZUxvYWRlcjo6bG9h
ZFJlc291cmNlU3luY2hyb25vdXNseShzY3JpcHRFeGVjdXRpb25Db250ZXh0LCByZXF1ZXN0LCAq
dGhpcywgb3B0aW9ucyk7Cit9CisKK3ZvaWQgRmlsZVJlYWRlclN5bmM6OmRpZFJlY2VpdmVSZXNw
b25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK3sKKyAgICBpZiAocmVzcG9u
c2UuaHR0cFN0YXR1c0NvZGUoKSAhPSAyMDApCisgICAgICAgIHJhaXNlRXhjZXB0aW9uKHJlc3Bv
bnNlLmh0dHBTdGF0dXNDb2RlKCkpOworfQorCit2b2lkIEZpbGVSZWFkZXJTeW5jOjpkaWRSZWNl
aXZlRGF0YShjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoUmVjZWl2ZWQpCit7CisgICAgc3dp
dGNoIChtX3JlYWRUeXBlKSB7CisgICAgY2FzZSBSZWFkRmlsZUFzQmluYXJ5U3RyaW5nOgorICAg
ICAgICBtX3Jlc3VsdCArPSBTdHJpbmcoZGF0YSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGxlbmd0
aFJlY2VpdmVkKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUmVhZEZpbGVBc1RleHQ6Cisg
ICAgY2FzZSBSZWFkRmlsZUFzRGF0YVVSTDoKKyAgICAgICAgbV9yYXdEYXRhLmFwcGVuZChkYXRh
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obGVuZ3RoUmVjZWl2ZWQpKTsKKyAgICAgICAgYnJlYWs7
CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorfQor
Cit2b2lkIEZpbGVSZWFkZXJTeW5jOjpkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcpCit7
Cit9CisKK3ZvaWQgRmlsZVJlYWRlclN5bmM6OmRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYp
Cit7CisgICAgLy8gVHJlYXQgYXMgaW50ZXJuYWwgZXJyb3IuCisgICAgcmFpc2VFeGNlcHRpb24o
NTAwKTsKK30KKwordm9pZCBGaWxlUmVhZGVyU3luYzo6cmFpc2VFeGNlcHRpb24oaW50IGh0dHBT
dGF0dXNDb2RlKQoreworICAgIG1fZXhjZXB0aW9uQ29kZSA9IEZpbGVSZWFkZXI6Omh0dHBTdGF0
dXNDb2RlVG9FeGNlcHRpb25Db2RlKGh0dHBTdGF0dXNDb2RlKTsKK30KKwordm9pZCBGaWxlUmVh
ZGVyU3luYzo6Y29udmVydFRvVGV4dChjb25zdCBTdHJpbmcmIGVuY29kaW5nKQoreworICAgIGlm
ICghbV9yYXdEYXRhLnNpemUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gRGVjb2RlIHRo
ZSBkYXRhLgorICAgIC8vIFRoZSBGaWxlIEFQSSBzcGVjIHNheXMgdGhhdCB3ZSBzaG91bGQgdXNl
IHRoZSBzdXBwbGllZCBlbmNvZGluZyBpZiBpdCBpcyB2YWxpZC4gSG93ZXZlciwgd2UgY2hvb3Nl
IHRvIGlnbm9yZSB0aGlzCisgICAgLy8gcmVxdWlyZW1lbnQgaW4gb3JkZXIgdG8gYmUgY29uc2lz
dGVudCB3aXRoIGhvdyBXZWJLaXQgZGVjb2RlcyB0aGUgd2ViIGNvbnRlbnQ6IGFsd2F5cyBoYXMg
dGhlIEJPTSBvdmVycmlkZSB0aGUKKyAgICAvLyBwcm92aWRlZCBlbmNvZGluZy4gICAgIAorICAg
IC8vIEZJWE1FOiBjb25zaWRlciBzdXBwb3J0aW5nIGluY3JlbWVudGFsIGRlY29kaW5nIHRvIGlt
cHJvdmUgdGhlIHBlcmYuCisgICAgUmVmUHRyPFRleHRSZXNvdXJjZURlY29kZXI+IGRlY29kZXIg
PSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoInRleHQvcGxhaW4iLCBlbmNvZGluZy5pc0Vt
cHR5KCkgPyBVVEY4RW5jb2RpbmcoKSA6IFRleHRFbmNvZGluZyhlbmNvZGluZykpOworICAgIG1f
cmVzdWx0ID0gZGVjb2Rlci0+ZGVjb2RlKCZtX3Jhd0RhdGEuYXQoMCksIG1fcmF3RGF0YS5zaXpl
KCkpOworICAgIG1fcmVzdWx0ICs9IGRlY29kZXItPmZsdXNoKCk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKyAKKyNlbmRpZiAvLyBFTkFCTEUoQkxPQikKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvaHRtbC9GaWxlUmVhZGVyU3luYy5oIGIvV2ViQ29yZS9odG1sL0ZpbGVSZWFkZXJTeW5jLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZTFlY2FiN2YwYjdjMGJkY2YwYjkxYzA4N2EwZmI4ZWI1MTliOWNjMwotLS0g
L2Rldi9udWxsCisrKyBiL1dlYkNvcmUvaHRtbC9GaWxlUmVhZGVyU3luYy5oCkBAIC0wLDAgKzEs
OTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6Cisg
KgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAq
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
CisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBGaWxlUmVhZGVyU3luY19oCisjZGVmaW5lIEZpbGVSZWFkZXJTeW5jX2gK
KworI2lmIEVOQUJMRShCTE9CKQorCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1
ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSAiU2NyaXB0U3RyaW5nLmgiCisjaW5jbHVk
ZSAiVGhyZWFkYWJsZUxvYWRlckNsaWVudC5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQmxvYjsKK2NsYXNzIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ7CisKK2NsYXNzIEZpbGVSZWFkZXJTeW5jIDogcHVibGljIFJlZkNvdW50ZWQ8Rmls
ZVJlYWRlclN5bmM+LCBwdWJsaWMgVGhyZWFkYWJsZUxvYWRlckNsaWVudCB7CitwdWJsaWM6Cisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8RmlsZVJlYWRlclN5bmM+IGNyZWF0ZSgpCisgICAgeworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEZpbGVSZWFkZXJTeW5jKCkpOworICAgIH0KKworICAg
IHZpcnR1YWwgfkZpbGVSZWFkZXJTeW5jKCkgeyB9CisKKyAgICBjb25zdCBTY3JpcHRTdHJpbmcm
IHJlYWRBc0JpbmFyeVN0cmluZyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgQmxvYiosIEV4Y2Vw
dGlvbkNvZGUmKTsKKyAgICBjb25zdCBTY3JpcHRTdHJpbmcmIHJlYWRBc1RleHQoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgQmxvYiogYmxvYiwgRXhjZXB0
aW9uQ29kZSYgZWMpIHsKKyAgICAgICAgcmV0dXJuIHJlYWRBc1RleHQoc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCwgYmxvYiwgIiIsIGVjKTsKKyAgICB9CisgICAgY29uc3QgU2NyaXB0U3RyaW5nJiBy
ZWFkQXNUZXh0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBCbG9iKiwgY29uc3QgU3RyaW5nJiBl
bmNvZGluZywgRXhjZXB0aW9uQ29kZSYpOworICAgIGNvbnN0IFNjcmlwdFN0cmluZyYgcmVhZEFz
RGF0YVVSTChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgQmxvYiosIEV4Y2VwdGlvbkNvZGUmKTsK
KworICAgIC8vIFRocmVhZGFibGVMb2FkZXJDbGllbnQKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVj
ZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciosIGludCk7CisgICAgdmlydHVhbCB2b2lkIGRpZEZp
bmlzaExvYWRpbmcodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJik7CisKK3ByaXZhdGU6CisgICAgZW51bSBSZWFk
VHlwZSB7CisgICAgICAgIFJlYWRGaWxlQXNCaW5hcnlTdHJpbmcsCisgICAgICAgIFJlYWRGaWxl
QXNUZXh0LAorICAgICAgICBSZWFkRmlsZUFzRGF0YVVSTAorICAgIH07CisKKyAgICBGaWxlUmVh
ZGVyU3luYygpOworICAgIAorICAgIHZvaWQgcmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
QmxvYiopOworICAgIHZvaWQgcmFpc2VFeGNlcHRpb24oaW50IGh0dHBTdGF0dXNDb2RlKTsKKyAg
ICB2b2lkIGNvbnZlcnRUb1RleHQoY29uc3QgU3RyaW5nJiBlbmNvZGluZyk7CisKKyAgICBSZWFk
VHlwZSBtX3JlYWRUeXBlOworICAgIEV4Y2VwdGlvbkNvZGUgbV9leGNlcHRpb25Db2RlOworCisg
ICAgLy8gU2VlIEZpbGVSZWFkZXIgZm9yIGNvbW1lbnQgYWJvdXQgd2h5IFNjcmlwdFN0cmluZyBp
cyB1c2VkLgorICAgIFNjcmlwdFN0cmluZyBtX3Jlc3VsdDsKKworICAgIC8vIFRoZSByYXcgZGF0
YS4gV2UgaGF2ZSB0byBrZWVwIHRyYWNrIG9mIGFsbCB0aGUgcmF3IGRhdGEgZm9yIGl0IHRvIGJl
IGNvbnZlcnRlZCB0byB0ZXh0IG9yIGRhdGEgVVJMIGRhdGEuCisgICAgVmVjdG9yPGNoYXI+IG1f
cmF3RGF0YTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJM
RShCTE9CKQorCisjZW5kaWYgLy8gRmlsZVJlYWRlclN5bmNfaApkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9odG1sL0ZpbGVSZWFkZXJTeW5jLmlkbCBiL1dlYkNvcmUvaHRtbC9GaWxlUmVhZGVyU3luYy5p
ZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMzUwMWEzMTAwZjhkZWI0NDBiZGJhNjk3MmFiM2Q0OGRmMWMwYzVkNgot
LS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvaHRtbC9GaWxlUmVhZGVyU3luYy5pZGwKQEAgLTAs
MCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1l
dDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCittb2R1bGUgaHRtbCB7CisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgQ29uZGl0
aW9uYWw9QkxPQiwKKyAgICAgICAgQ2FuQmVDb25zdHJ1Y3RlZCwKKyAgICAgICAgTm9TdGF0aWNU
YWJsZXMsCisgICAgXSBGaWxlUmVhZGVyU3luYyB7CisgICAgICAgIFtDYWxsV2l0aD1TY3JpcHRF
eGVjdXRpb25Db250ZXh0LCBDb252ZXJ0U2NyaXB0U3RyaW5nXSBET01TdHJpbmcgcmVhZEFzQmlu
YXJ5U3RyaW5nKGluIEJsb2IgYmxvYikKKyAgICAgICAgICAgIHJhaXNlcyhGaWxlRXhjZXB0aW9u
KTsKKyAgICAgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIENvbnZlcnRTY3Jp
cHRTdHJpbmddIERPTVN0cmluZyByZWFkQXNUZXh0KGluIEJsb2IgYmxvYiwgaW4gW09wdGlvbmFs
XSBET01TdHJpbmcgZW5jb2RpbmcpCisgICAgICAgICAgICByYWlzZXMoRmlsZUV4Y2VwdGlvbik7
CisgICAgICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LCBDb252ZXJ0U2NyaXB0
U3RyaW5nXSBET01TdHJpbmcgcmVhZEFzRGF0YVVSTChpbiBCbG9iIGJsb2IpCisgICAgICAgICAg
ICByYWlzZXMoRmlsZUV4Y2VwdGlvbik7CisgICAgfTsKK30KZGlmZiAtLWdpdCBhL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJDb250ZXh0LmlkbCBiL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0
LmlkbAppbmRleCAyN2I0YjE0YWMyNDM4NTZjMzcwMmJjNzNhNzAyMjBkMzY5MmViMDc1Li44MWE2
ODFhODEyOGNjZWM4ZDY4NGRiOTgzMDUyZDMzMDcyOThkODMyIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyQ29udGV4dC5pZGwKKysrIGIvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNv
bnRleHQuaWRsCkBAIC05Niw2ICs5NiwxMiBAQCBtb2R1bGUgdGhyZWFkcyB7CiAgICAgICAgIGF0
dHJpYnV0ZSBbSlNDQ3VzdG9tR2V0dGVyLEVuYWJsZWRBdFJ1bnRpbWVdIFdlYlNvY2tldENvbnN0
cnVjdG9yIFdlYlNvY2tldDsgLy8gVXNhYmxlIHdpdGggdGhlIG5ldyBvcGVyYXRvcgogI2VuZGlm
CiAjZW5kaWYKKworI2lmIGRlZmluZWQoRU5BQkxFX0JMT0IpICYmIEVOQUJMRV9CTE9CCisgICAg
ICAgIGF0dHJpYnV0ZSBCbG9iQnVpbGRlckNvbnN0cnVjdG9yIEJsb2JCdWlsZGVyOworICAgICAg
ICBhdHRyaWJ1dGUgRmlsZVJlYWRlckNvbnN0cnVjdG9yIEZpbGVSZWFkZXI7CisgICAgICAgIGF0
dHJpYnV0ZSBGaWxlUmVhZGVyU3luY0NvbnN0cnVjdG9yIEZpbGVSZWFkZXJTeW5jOworI2VuZGlm
CiAgICAgfTsKIAogfQo=
</data>
<flag name="commit-queue"
          id="54302"
          type_id="3"
          status="-"
          setter="jianli"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65649</attachid>
            <date>2010-08-26 17:19:28 -0700</date>
            <delta_ts>2010-08-27 17:04:40 -0700</delta_ts>
            <desc>Proposed Patch</desc>
            <filename>44657_2</filename>
            <type>text/plain</type>
            <size>62468</size>
            <attacher name="Jian Li">jianli</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAxMDZlYTI1YjExM2Q2ODA4ZWY1MjZjZDYxZDBkNGM5YzcyZGQ0ZGY3Li45MDEyZjVm
NzAyZDkwM2RjOTFiNDcyNzQ5YzZkNWY4Y2RiMWRlMWI5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTQgQEAK
KzIwMTAtMDgtMjUgIEppYW4gTGkgIDxqaWFubGlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFN1cHBvcnQgRmlsZVJlYWRlclN5
bmMgaW4gd29ya2Vycy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTQ0NjU3CisKKyAgICAgICAgQWRkZWQgNCB0ZXN0IGZpbGVzIHRvIHRlc3QgRmlsZVJl
YWRlclN5bmMgaW4gd29ya2Vycy4KKworICAgICAgICAqIGZhc3QvZmlsZXMvcmVhZC1ibG9iLWFz
eW5jLmh0bWw6CisgICAgICAgICogZmFzdC9maWxlcy9yZWFkLWZpbGUtYXN5bmMuaHRtbDoKKyAg
ICAgICAgKiBmYXN0L2ZpbGVzL3Jlc291cmNlcy9yZWFkLWNvbW1vbi5qczoKKyAgICAgICAgKHJl
YWRCbG9iQXNCaW5hcnlTdHJpbmcpOgorICAgICAgICAocmVhZEJsb2JBc1RleHQpOgorICAgICAg
ICAocmVhZEJsb2JBc0RhdGFVUkwpOgorICAgICAgICAoX3JlYWRCbG9iQXNCaW5hcnlTdHJpbmdB
c3luYyk6CisgICAgICAgIChfcmVhZEJsb2JBc1RleHRBc3luYyk6CisgICAgICAgIChfcmVhZEJs
b2JBc0RhdGFVUkxBc3luYyk6CisgICAgICAgIChfcmVhZEJsb2JBc0JpbmFyeVN0cmluZ1N5bmMp
OgorICAgICAgICAoX3JlYWRCbG9iQXNUZXh0U3luYyk6CisgICAgICAgIChfcmVhZEJsb2JBc0Rh
dGFVUkxTeW5jKToKKyAgICAgICAgKGNyZWF0ZVJlYWRlclN5bmMpOgorICAgICAgICAqIGZhc3Qv
ZmlsZXMvcmVzb3VyY2VzL3JlYWQtYmxvYi10ZXN0LWNhc2VzLmpzOgorICAgICAgICAocnVuTmV4
dFRlc3QpOgorICAgICAgICAqIGZhc3QvZmlsZXMvcmVzb3VyY2VzL3JlYWQtZmlsZS10ZXN0LWNh
c2VzLmpzOgorICAgICAgICAocnVuTmV4dFRlc3QpOgorICAgICAgICAodGVzdE11bHRpcGxlUmVh
ZHMpOgorICAgICAgICAqIGZhc3QvZmlsZXMvcmVzb3VyY2VzL3NldHVwLWZvci1yZWFkLWNvbW1v
bi5qczoKKyAgICAgICAgKGxvZyk6CisgICAgICAgIChzdGFydFdvcmtlci53b3JrZXIub25tZXNz
YWdlKToKKyAgICAgICAgKHN0YXJ0V29ya2VyLndvcmtlci5vbmVycm9yKToKKyAgICAgICAgKHN0
YXJ0V29ya2VyKToKKyAgICAgICAgKiBmYXN0L2ZpbGVzL3dvcmtlcnMvcmVzb3VyY2VzL3dvcmtl
ci1yZWFkLWJsb2ItYXN5bmMuanM6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZmlsZXMvd29ya2Vy
cy9yZXNvdXJjZXMvd29ya2VyLXJlYWQtYmxvYi1zeW5jLmpzOiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2ZpbGVzL3dvcmtlcnMvcmVzb3VyY2VzL3dvcmtlci1yZWFkLWNvbW1vbi5qczogQWRkZWQu
CisgICAgICAgICogZmFzdC9maWxlcy93b3JrZXJzL3Jlc291cmNlcy93b3JrZXItcmVhZC1maWxl
LWFzeW5jLmpzOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZpbGVzL3dvcmtlcnMvcmVzb3VyY2Vz
L3dvcmtlci1yZWFkLWZpbGUtc3luYy5qczogQWRkZWQuCisgICAgICAgICogZmFzdC9maWxlcy93
b3JrZXJzL3dvcmtlci1yZWFkLWJsb2ItYXN5bmMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2ZpbGVzL3dvcmtlcnMvd29ya2VyLXJlYWQtYmxvYi1hc3luYy5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2ZpbGVzL3dvcmtlcnMvd29ya2VyLXJlYWQtYmxvYi1zeW5jLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9maWxlcy93b3JrZXJzL3dvcmtlci1y
ZWFkLWJsb2Itc3luYy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZpbGVzL3dvcmtlcnMv
d29ya2VyLXJlYWQtZmlsZS1hc3luYy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvZmlsZXMvd29ya2Vycy93b3JrZXItcmVhZC1maWxlLWFzeW5jLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvZmlsZXMvd29ya2Vycy93b3JrZXItcmVhZC1maWxlLXN5bmMtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZpbGVzL3dvcmtlcnMvd29ya2VyLXJlYWQtZmls
ZS1zeW5jLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhw
ZWN0YXRpb25zLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvU2tpcHBlZDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9tYWMtd2syL1NraXBwZWQ6CisgICAgICAgICogcGxhdGZvcm0vcXQvU2tpcHBl
ZDoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2tpcHBlZDoKKwogMjAxMC0wOC0yNSAgQ2hyaXMg
TWFycmluICA8Y21hcnJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZC4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZmlsZXMvcmVhZC1ibG9iLWFzeW5jLmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L2ZpbGVzL3JlYWQtYmxvYi1hc3luYy5odG1sCmluZGV4IDgwNzAxMjMyM2Zm
NjgxM2UyZDg0MWU4NmU0NTJmOTU4ZDI2ZmI5ZDYuLjZkMjY3MGEwNDEzMmI0NzExNTk5ZTY2YTcx
MDViNzA0M2VhMDNmYzcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZmlsZXMvcmVhZC1i
bG9iLWFzeW5jLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9maWxlcy9yZWFkLWJsb2ItYXN5
bmMuaHRtbApAQCAtMTYsNiArMTYsMTEgQEAgdmFyIHRlc3RGaWxlSW5mb0xpc3QgPSBbCiAgICAg
eyAnbmFtZSc6ICdmaWxlMycsICdwYXRoJzogJ3Jlc291cmNlcy9VVEY4LTMudHh0JyB9LAogXTsK
IAorZnVuY3Rpb24gaXNSZWFkQXNBc3luYygpCit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIGZ1
bmN0aW9uIHN0YXJ0VGVzdCh0ZXN0RmlsZXMpCiB7CiAgICAgcnVuTmV4dFRlc3QodGVzdEZpbGVz
KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZmlsZXMvcmVhZC1maWxlLWFzeW5jLmh0
bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVzL3JlYWQtZmlsZS1hc3luYy5odG1sCmluZGV4IGM2
MTRkZmRmYjUxZDdmOTgzOTdkN2E0OWE5NzVhMTgzOTdiNWZhNDYuLjU4YTRhMDdjZGZlNTJjNGQ0
MDM3YWQzODQyZGZlMDkxNmM2OWY1OGIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZmls
ZXMvcmVhZC1maWxlLWFzeW5jLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9maWxlcy9yZWFk
LWZpbGUtYXN5bmMuaHRtbApAQCAtMTksNiArMTksMTEgQEAgdmFyIHRlc3RGaWxlSW5mb0xpc3Qg
PSBbCiAgICAgeyAnbmFtZSc6ICdiaW5hcnktZmlsZScsICdwYXRoJzogJ3Jlc291cmNlcy9iaW5h
cnktZmlsZScgfSwKIF07CiAKK2Z1bmN0aW9uIGlzUmVhZEFzQXN5bmMoKQoreworICAgIHJldHVy
biB0cnVlOworfQorCiBmdW5jdGlvbiBzdGFydFRlc3QodGVzdEZpbGVzKQogewogICAgIHJ1bk5l
eHRUZXN0KHRlc3RGaWxlcyk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVzL3Jl
c291cmNlcy9yZWFkLWJsb2ItdGVzdC1jYXNlcy5qcyBiL0xheW91dFRlc3RzL2Zhc3QvZmlsZXMv
cmVzb3VyY2VzL3JlYWQtYmxvYi10ZXN0LWNhc2VzLmpzCmluZGV4IGMxNGZhNGU0NzkwZTdjYzg4
ZjFmZTY5MjA5MzkzOGI5YzhkMjQ0ZjcuLjc1NTBjMjdhMzRiZDExYjgwYWViYzczNTQ0MTRjYjE3
NGZhMmE2YjkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZmlsZXMvcmVzb3VyY2VzL3Jl
YWQtYmxvYi10ZXN0LWNhc2VzLmpzCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZmlsZXMvcmVzb3Vy
Y2VzL3JlYWQtYmxvYi10ZXN0LWNhc2VzLmpzCkBAIC0yMyw4ICsyMyw2IEBAIGZ1bmN0aW9uIHJ1
bk5leHRUZXN0KHRlc3RGaWxlcykKICAgICAgICAgc2VsZlt0ZXN0Q2FzZXNbdGVzdEluZGV4IC0g
MV1dKHRlc3RGaWxlcyk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbG9nKCJET05FIik7Ci0gICAg
ICAgIGlmICh3aW5kb3cgJiYgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwogICAgIH0KIH0KIApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9maWxlcy9yZXNvdXJjZXMvcmVhZC1jb21tb24uanMgYi9M
YXlvdXRUZXN0cy9mYXN0L2ZpbGVzL3Jlc291cmNlcy9yZWFkLWNvbW1vbi5qcwppbmRleCBlNWQy
N2YzOWY5MTNiYzlhNWNjNjBkYTJlNTQ1NTBmZGFlNzE5MmQ4Li4wM2JjYjZmYzNjMmRkZWNlYTlj
MWQ1NDJhZWE5ZTQxMWI4ZGVlN2RlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVz
L3Jlc291cmNlcy9yZWFkLWNvbW1vbi5qcworKysgYi9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVzL3Jl
c291cmNlcy9yZWFkLWNvbW1vbi5qcwpAQCAtOSwyNSArOSw5MiBAQCBmdW5jdGlvbiBidWlsZEJs
b2IoaXRlbXMsIGJ1aWxkZXIpCiAgICAgcmV0dXJuIGJ1aWxkZXIuZ2V0QmxvYigpOwogfQogCisv
LyBSZWFkcyBhIGJsb2IgZWl0aGVyIGFzeW5jaHJvbm91c2x5IG9yIHN5bmNocm9ub3VzbHkuCiBm
dW5jdGlvbiByZWFkQmxvYkFzQmluYXJ5U3RyaW5nKHRlc3RGaWxlcywgYmxvYikKIHsKLSAgICB2
YXIgcmVhZGVyID0gY3JlYXRlUmVhZGVyKHRlc3RGaWxlcyk7Ci0gICAgcmVhZGVyLnJlYWRBc0Jp
bmFyeVN0cmluZyhibG9iKQorICAgIGlmIChpc1JlYWRBc0FzeW5jKCkpCisgICAgICAgIF9yZWFk
QmxvYkFzQmluYXJ5U3RyaW5nQXN5bmModGVzdEZpbGVzLCBibG9iKTsKKyAgICBlbHNlCisgICAg
ICAgIF9yZWFkQmxvYkFzQmluYXJ5U3RyaW5nU3luYyh0ZXN0RmlsZXMsIGJsb2IpOwogfQogCiBm
dW5jdGlvbiByZWFkQmxvYkFzVGV4dCh0ZXN0RmlsZXMsIGJsb2IsIGVuY29kaW5nKQogewotICAg
IHZhciByZWFkZXIgPSBjcmVhdGVSZWFkZXIodGVzdEZpbGVzKTsKLSAgICByZWFkZXIucmVhZEFz
VGV4dChibG9iLCBlbmNvZGluZykKKyAgICBpZiAoaXNSZWFkQXNBc3luYygpKQorICAgICAgICBf
cmVhZEJsb2JBc1RleHRBc3luYyh0ZXN0RmlsZXMsIGJsb2IsIGVuY29kaW5nKTsKKyAgICBlbHNl
CisgICAgICAgIF9yZWFkQmxvYkFzVGV4dFN5bmModGVzdEZpbGVzLCBibG9iLCBlbmNvZGluZyk7
CiB9CiAKIGZ1bmN0aW9uIHJlYWRCbG9iQXNEYXRhVVJMKHRlc3RGaWxlcywgYmxvYikKIHsKLSAg
ICB2YXIgcmVhZGVyID0gY3JlYXRlUmVhZGVyKHRlc3RGaWxlcyk7CisgICAgaWYgKGlzUmVhZEFz
QXN5bmMoKSkKKyAgICAgICAgX3JlYWRCbG9iQXNEYXRhVVJMQXN5bmModGVzdEZpbGVzLCBibG9i
KTsKKyAgICBlbHNlCisgICAgICAgIF9yZWFkQmxvYkFzRGF0YVVSTFN5bmModGVzdEZpbGVzLCBi
bG9iKTsKK30KKworLy8gUmVhZHMgYSBibG9iIGFzeW5jaHJvbm91c2x5LgorZnVuY3Rpb24gX3Jl
YWRCbG9iQXNCaW5hcnlTdHJpbmdBc3luYyh0ZXN0RmlsZXMsIGJsb2IpCit7CisgICAgdmFyIHJl
YWRlciA9IGNyZWF0ZVJlYWRlckFzeW5jKHRlc3RGaWxlcyk7CisgICAgcmVhZGVyLnJlYWRBc0Jp
bmFyeVN0cmluZyhibG9iKQorfQorCitmdW5jdGlvbiBfcmVhZEJsb2JBc1RleHRBc3luYyh0ZXN0
RmlsZXMsIGJsb2IsIGVuY29kaW5nKQoreworICAgIHZhciByZWFkZXIgPSBjcmVhdGVSZWFkZXJB
c3luYyh0ZXN0RmlsZXMpOworICAgIHJlYWRlci5yZWFkQXNUZXh0KGJsb2IsIGVuY29kaW5nKQor
fQorCitmdW5jdGlvbiBfcmVhZEJsb2JBc0RhdGFVUkxBc3luYyh0ZXN0RmlsZXMsIGJsb2IpCit7
CisgICAgdmFyIHJlYWRlciA9IGNyZWF0ZVJlYWRlckFzeW5jKHRlc3RGaWxlcyk7CiAgICAgcmVh
ZGVyLnJlYWRBc0RhdGFVUkwoYmxvYikKIH0KIAotZnVuY3Rpb24gY3JlYXRlUmVhZGVyKHRlc3RG
aWxlcykKKy8vIFJlYWRzIGEgYmxvYiBzeW5jaHJvbm91c2x5LgorZnVuY3Rpb24gX3JlYWRCbG9i
QXNCaW5hcnlTdHJpbmdTeW5jKHRlc3RGaWxlcywgYmxvYikKK3sKKyAgICB2YXIgcmVhZGVyID0g
Y3JlYXRlUmVhZGVyU3luYygpOworICAgIHRyeSB7CisgICAgICAgIHZhciByZXN1bHQgPSByZWFk
ZXIucmVhZEFzQmluYXJ5U3RyaW5nKGJsb2IpOworICAgICAgICBsb2cocmVzdWx0KTsKKyAgICB9
IGNhdGNoIChlcnJvcikgeworICAgICAgICBsb2coIlJlY2VpdmVkIGV4Y2VwdGlvbiAiICsgZXJy
b3IuY29kZSArICI6ICIgKyBlcnJvci5uYW1lKTsKKyAgICB9CisKKyAgICBydW5OZXh0VGVzdCh0
ZXN0RmlsZXMpOworfQorCitmdW5jdGlvbiBfcmVhZEJsb2JBc1RleHRTeW5jKHRlc3RGaWxlcywg
YmxvYiwgZW5jb2RpbmcpCit7CisgICAgdmFyIHJlYWRlciA9IGNyZWF0ZVJlYWRlclN5bmMoKTsK
KyAgICB0cnkgeworICAgICAgICB2YXIgcmVzdWx0ID0gcmVhZGVyLnJlYWRBc1RleHQoYmxvYiwg
ZW5jb2RpbmcpOworICAgICAgICBsb2cocmVzdWx0KTsKKyAgICB9IGNhdGNoIChlcnJvcikgewor
ICAgICAgICBsb2coIlJlY2VpdmVkIGV4Y2VwdGlvbiAiICsgZXJyb3IuY29kZSArICI6ICIgKyBl
cnJvci5uYW1lKTsKKyAgICB9CisKKyAgICBydW5OZXh0VGVzdCh0ZXN0RmlsZXMpOworfQorCitm
dW5jdGlvbiBfcmVhZEJsb2JBc0RhdGFVUkxTeW5jKHRlc3RGaWxlcywgYmxvYikKK3sKKyAgICB2
YXIgcmVhZGVyID0gY3JlYXRlUmVhZGVyU3luYygpOworICAgIHRyeSB7CisgICAgICAgIHZhciBy
ZXN1bHQgPSByZWFkZXIucmVhZEFzRGF0YVVSTChibG9iKTsKKyAgICAgICAgbG9nKHJlc3VsdCk7
CisgICAgfSBjYXRjaCAoZXJyb3IpIHsKKyAgICAgICAgbG9nKCJSZWNlaXZlZCBleGNlcHRpb24g
IiArIGVycm9yLmNvZGUgKyAiOiAiICsgZXJyb3IubmFtZSk7CisgICAgfQorCisgICAgcnVuTmV4
dFRlc3QodGVzdEZpbGVzKTsKK30KKworLy8gQ3JlYXRlcyBhIHJlYWRlciBmb3IgYXN5bmNocm9u
b3VzIHJlYWRpbmcuCitmdW5jdGlvbiBjcmVhdGVSZWFkZXJBc3luYyh0ZXN0RmlsZXMpCiB7CiAg
ICAgdmFyIHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7CiAKQEAgLTQxLDYgKzEwOCwxMiBAQCBm
dW5jdGlvbiBjcmVhdGVSZWFkZXIodGVzdEZpbGVzKQogICAgIHJldHVybiByZWFkZXI7CiB9CiAK
Ky8vIENyZWF0ZXMgYSByZWFkZXIgZm9yIHN5bmNocm9ub3VzIHJlYWRpbmcuCitmdW5jdGlvbiBj
cmVhdGVSZWFkZXJTeW5jKCkKK3sKKyAgICByZXR1cm4gbmV3IEZpbGVSZWFkZXJTeW5jKCk7Cit9
CisKIGZ1bmN0aW9uIGxvZ0V2ZW50KGV2ZW50KQogewogICAgIGxvZygiUmVjZWl2ZWQgIiArIGV2
ZW50LnR5cGUgKyAiIGV2ZW50Iik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVz
L3Jlc291cmNlcy9yZWFkLWZpbGUtdGVzdC1jYXNlcy5qcyBiL0xheW91dFRlc3RzL2Zhc3QvZmls
ZXMvcmVzb3VyY2VzL3JlYWQtZmlsZS10ZXN0LWNhc2VzLmpzCmluZGV4IDUxOWRiNDE3M2QwOTAy
OGY4YjQwY2M3YmE3MmM2NDhjNDQxOTQxMzAuLmU4YjJjOWNhMDIwMTA3ZjQyZDlhNjI0M2RjYzVl
YjM1NTY0MWU2ODQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZmlsZXMvcmVzb3VyY2Vz
L3JlYWQtZmlsZS10ZXN0LWNhc2VzLmpzCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZmlsZXMvcmVz
b3VyY2VzL3JlYWQtZmlsZS10ZXN0LWNhc2VzLmpzCkBAIC0yNiw4ICsyNiw2IEBAIGZ1bmN0aW9u
IHJ1bk5leHRUZXN0KHRlc3RGaWxlcykKICAgICAgICAgc2VsZlt0ZXN0Q2FzZXNbdGVzdEluZGV4
IC0gMV1dKHRlc3RGaWxlcyk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbG9nKCJET05FIik7Ci0g
ICAgICAgIGlmICh3aW5kb3cgJiYgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwogICAgIH0KIH0KIApAQCAt
MTI5LDggKzEyNywxNCBAQCBmdW5jdGlvbiB0ZXN0UmVhZGluZ1VURjhFbmNvZGVkRmlsZUFzRGF0
YVVSTCh0ZXN0RmlsZXMpCiAKIGZ1bmN0aW9uIHRlc3RNdWx0aXBsZVJlYWRzKHRlc3RGaWxlcykK
IHsKKyAgICAvLyBUaGlzIHRlc3QgY2FzZSBpcyBvbmx5IGF2YWlsYWJsZSBmb3IgYXN5bmMgcmVh
ZGluZy4KKyAgICBpZiAoIWlzUmVhZEFzQXN5bmMoKSkgeworICAgICAgICBydW5OZXh0VGVzdCh0
ZXN0RmlsZXMpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgbG9nKCJUZXN0IGNhbGxp
bmcgbXVsdGlwbGUgcmVhZCBtZXRob2RzIGFuZCBvbmx5IGxhc3Qgb25lIGlzIHByb2Nlc3NlZCIp
OwotICAgIHZhciByZWFkZXIgPSBjcmVhdGVSZWFkZXIoKTsKKyAgICB2YXIgcmVhZGVyID0gY3Jl
YXRlUmVhZGVyQXN5bmMoKTsKICAgICByZWFkZXIucmVhZEFzQmluYXJ5U3RyaW5nKHRlc3RGaWxl
c1snVVRGOC1maWxlJ10pOwogICAgIHJlYWRlci5yZWFkQXNUZXh0KHRlc3RGaWxlc1snVVRGOC1m
aWxlJ10pOwogICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKHRlc3RGaWxlc1snVVRGOC1maWxlJ10p
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9maWxlcy9yZXNvdXJjZXMvc2V0dXAtZm9y
LXJlYWQtY29tbW9uLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9maWxlcy9yZXNvdXJjZXMvc2V0dXAt
Zm9yLXJlYWQtY29tbW9uLmpzCmluZGV4IDYzOThhN2MxYjA2YjlmYzc1ZGVlM2E1MWQ2N2I3MjE3
ZGI1ODRmMTYuLjljYmMyYjRiNWUxYmNiYTI0NzViNTcxYzE2NGNhZGFlMGJlNDUzOWYgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZmlsZXMvcmVzb3VyY2VzL3NldHVwLWZvci1yZWFkLWNv
bW1vbi5qcworKysgYi9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVzL3Jlc291cmNlcy9zZXR1cC1mb3It
cmVhZC1jb21tb24uanMKQEAgLTEsNiArMSwxMCBAQAogZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCiB7
CiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKS5hcHBlbmRDaGlsZChkb2N1
bWVudC5jcmVhdGVUZXh0Tm9kZShtZXNzYWdlICsgIlxuIikpOworICAgIGlmIChtZXNzYWdlID09
ICJET05FIikgeworICAgICAgICBpZiAod2luZG93ICYmIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAg
ICB9CiB9CiAKIGZ1bmN0aW9uIG9uSW5wdXRGaWxlQ2hhbmdlKHRlc3RGaWxlSW5mb0xpc3QpCkBA
IC0yMCwzICsyNCwyMyBAQCBmdW5jdGlvbiBydW5UZXN0cyh0ZXN0RmlsZUluZm9MaXN0KQogICAg
IGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKDEwLCAxMCk7CiAgICAgZXZlbnRTZW5kZXIubW91c2VV
cCgpOwogfQorCitmdW5jdGlvbiBzdGFydFdvcmtlcih0ZXN0RmlsZXMsIHdvcmtlclNjcmlwdFVS
TCkKK3sKKyAgICB2YXIgd29ya2VyID0gbmV3IFdvcmtlcih3b3JrZXJTY3JpcHRVUkwpOworICAg
IHdvcmtlci5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIGxvZyhl
dmVudC5kYXRhKTsKKyAgICAgICAgaWYgKGV2ZW50LmRhdGEgPT0gIkRPTkUiKSB7CisgICAgICAg
ICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgfQorICAgIH0KKyAgICB3
b3JrZXIub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgbG9nKCJSZWNl
aXZlZCBlcnJvciBmcm9tIHdvcmtlcjogIiArIGV2ZW50Lm1lc3NhZ2UpOworICAgICAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIubm90aWZ5RG9uZSgpOworICAgIH0KKyAgICB3b3JrZXIucG9zdE1lc3NhZ2UodGVzdEZp
bGVzKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZmlsZXMvd29ya2Vycy9yZXNv
dXJjZXMvd29ya2VyLXJlYWQtYmxvYi1hc3luYy5qcyBiL0xheW91dFRlc3RzL2Zhc3QvZmlsZXMv
d29ya2Vycy9yZXNvdXJjZXMvd29ya2VyLXJlYWQtYmxvYi1hc3luYy5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
OTU1MTkyYWY5OGM4YzVjODFjZjEzNTI1ZTRhM2MzYWU5MDQ1OGNlCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9maWxlcy93b3JrZXJzL3Jlc291cmNlcy93b3JrZXItcmVhZC1i
bG9iLWFzeW5jLmpzCkBAIC0wLDAgKzEsNyBAQAoraW1wb3J0U2NyaXB0cygiLi4vLi4vcmVzb3Vy
Y2VzL3JlYWQtY29tbW9uLmpzIiwgIi4uLy4uL3Jlc291cmNlcy9yZWFkLWJsb2ItdGVzdC1jYXNl
cy5qcyIsICJ3b3JrZXItcmVhZC1jb21tb24uanMiKTsKKworZnVuY3Rpb24gaXNSZWFkQXNBc3lu
YygpCit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvZmlsZXMvd29ya2Vycy9yZXNvdXJjZXMvd29ya2VyLXJlYWQtYmxvYi1zeW5jLmpzIGIvTGF5
b3V0VGVzdHMvZmFzdC9maWxlcy93b3JrZXJzL3Jlc291cmNlcy93b3JrZXItcmVhZC1ibG9iLXN5
bmMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMWU5ZTZhNWQ1ZTg4MzkwOGZiZGYzNDY1ODk5ZDUzZTUzZDM3ZDY1
YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZmlsZXMvd29ya2Vycy9yZXNv
dXJjZXMvd29ya2VyLXJlYWQtYmxvYi1zeW5jLmpzCkBAIC0wLDAgKzEsNiBAQAoraW1wb3J0U2Ny
aXB0cygiLi4vLi4vcmVzb3VyY2VzL3JlYWQtY29tbW9uLmpzIiwgIi4uLy4uL3Jlc291cmNlcy9y
ZWFkLWJsb2ItdGVzdC1jYXNlcy5qcyIsICJ3b3JrZXItcmVhZC1jb21tb24uanMiKTsKKworZnVu
Y3Rpb24gaXNSZWFkQXNBc3luYygpCit7CisgICAgcmV0dXJuIGZhbHNlOworfQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9maWxlcy93b3JrZXJzL3Jlc291cmNlcy93b3JrZXItcmVhZC1j
b21tb24uanMgYi9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVzL3dvcmtlcnMvcmVzb3VyY2VzL3dvcmtl
ci1yZWFkLWNvbW1vbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNzA4MTkyMjU4ZjI4NzRiNjg1Y2FjNzM5NDI2
NjU0NjM3ZDBlODg5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9maWxlcy93
b3JrZXJzL3Jlc291cmNlcy93b3JrZXItcmVhZC1jb21tb24uanMKQEAgLTAsMCArMSwxMSBAQAor
ZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCit7CisgICAgcG9zdE1lc3NhZ2UobWVzc2FnZSk7Cit9CisK
K29ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2ZW50KQoreworICAgIHZhciB0ZXN0RmlsZXMgPSBldmVu
dC5kYXRhOworICAgIGxvZygiUmVjZWl2ZWQgZmlsZXMgaW4gd29ya2VyIik7CisgICAgcnVuTmV4
dFRlc3QodGVzdEZpbGVzKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZmlsZXMv
d29ya2Vycy9yZXNvdXJjZXMvd29ya2VyLXJlYWQtZmlsZS1hc3luYy5qcyBiL0xheW91dFRlc3Rz
L2Zhc3QvZmlsZXMvd29ya2Vycy9yZXNvdXJjZXMvd29ya2VyLXJlYWQtZmlsZS1hc3luYy5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4zMjcxZTA4Y2M0ZjI5ODAzOThlNDI2MjY0NjRkYTk0ZjFlYmE1NjQ2Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9maWxlcy93b3JrZXJzL3Jlc291cmNlcy93
b3JrZXItcmVhZC1maWxlLWFzeW5jLmpzCkBAIC0wLDAgKzEsNyBAQAoraW1wb3J0U2NyaXB0cygi
Li4vLi4vcmVzb3VyY2VzL3JlYWQtY29tbW9uLmpzIiwgIi4uLy4uL3Jlc291cmNlcy9yZWFkLWZp
bGUtdGVzdC1jYXNlcy5qcyIsICJ3b3JrZXItcmVhZC1jb21tb24uanMiKTsKKworZnVuY3Rpb24g
aXNSZWFkQXNBc3luYygpCit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvZmlsZXMvd29ya2Vycy9yZXNvdXJjZXMvd29ya2VyLXJlYWQtZmlsZS1z
eW5jLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9maWxlcy93b3JrZXJzL3Jlc291cmNlcy93b3JrZXIt
cmVhZC1maWxlLXN5bmMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjVmNzZlYjI4NDBkMGVkN2RiMDI1ZTZjNGVh
Y2VjOTdkOWFjYWFmOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZmlsZXMv
d29ya2Vycy9yZXNvdXJjZXMvd29ya2VyLXJlYWQtZmlsZS1zeW5jLmpzCkBAIC0wLDAgKzEsNiBA
QAoraW1wb3J0U2NyaXB0cygiLi4vLi4vcmVzb3VyY2VzL3JlYWQtY29tbW9uLmpzIiwgIi4uLy4u
L3Jlc291cmNlcy9yZWFkLWZpbGUtdGVzdC1jYXNlcy5qcyIsICJ3b3JrZXItcmVhZC1jb21tb24u
anMiKTsKKworZnVuY3Rpb24gaXNSZWFkQXNBc3luYygpCit7CisgICAgcmV0dXJuIGZhbHNlOwor
fQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9maWxlcy93b3JrZXJzL3dvcmtlci1yZWFk
LWJsb2ItYXN5bmMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9maWxlcy93b3JrZXJz
L3dvcmtlci1yZWFkLWJsb2ItYXN5bmMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZjZmVkOTBj
Yjk4YzA1ZTFlMWMwNjVkOTU4ZGFiZTQ4NDlmOGVjNjIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2ZpbGVzL3dvcmtlcnMvd29ya2VyLXJlYWQtYmxvYi1hc3luYy1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwxMjQgQEAKKworUmVjZWl2ZWQgZmlsZXMgaW4gd29ya2VyCitUZXN0
IHJlYWRpbmcgYSBibG9iIGNvbnRhaW5pbmcgbm9uLWV4aXN0ZW50IGZpbGUKK3JlYWR5U3RhdGU6
IDAKK1JlY2VpdmVkIGVycm9yIGV2ZW50CityZWFkeVN0YXRlOiAyCitlcnJvciBjb2RlOiA4CitS
ZWNlaXZlZCBsb2FkZW5kIGV2ZW50CitUZXN0IHJlYWRpbmcgYSBibG9iIGNvbnRhaW5pbmcgZXhp
c3RlbnQgYW5kIG5vbi1leGlzdGVudCBmaWxlCityZWFkeVN0YXRlOiAwCitSZWNlaXZlZCBlcnJv
ciBldmVudAorcmVhZHlTdGF0ZTogMgorZXJyb3IgY29kZTogOAorUmVjZWl2ZWQgbG9hZGVuZCBl
dmVudAorVGVzdCByZWFkaW5nIGEgYmxvYiBjb250YWluaW5nIGVtcHR5IGZpbGUKK3JlYWR5U3Rh
dGU6IDAKK1JlY2VpdmVkIGxvYWRzdGFydCBldmVudAorcmVhZHlTdGF0ZTogMQorUmVjZWl2ZWQg
bG9hZCBldmVudAorcmVhZHlTdGF0ZTogMgorcmVzdWx0IHNpemU6IDAKK3Jlc3VsdDogCitSZWNl
aXZlZCBsb2FkZW5kIGV2ZW50CitUZXN0IHJlYWRpbmcgYSBibG9iIGNvbnRhaW5pbmcgZW1wdHkg
dGV4dAorcmVhZHlTdGF0ZTogMAorUmVjZWl2ZWQgbG9hZHN0YXJ0IGV2ZW50CityZWFkeVN0YXRl
OiAxCitSZWNlaXZlZCBsb2FkIGV2ZW50CityZWFkeVN0YXRlOiAyCityZXN1bHQgc2l6ZTogMAor
cmVzdWx0OiAKK1JlY2VpdmVkIGxvYWRlbmQgZXZlbnQKK1Rlc3QgcmVhZGluZyBhIGJsb2IgY29u
dGFpbmluZyBlbXB0eSBmaWxlcyBhbmQgZW1wdHkgdGV4dHMKK3JlYWR5U3RhdGU6IDAKK1JlY2Vp
dmVkIGxvYWRzdGFydCBldmVudAorcmVhZHlTdGF0ZTogMQorUmVjZWl2ZWQgbG9hZCBldmVudAor
cmVhZHlTdGF0ZTogMgorcmVzdWx0IHNpemU6IDAKK3Jlc3VsdDogCitSZWNlaXZlZCBsb2FkZW5k
IGV2ZW50CitUZXN0IHJlYWRpbmcgYSBibG9iIGNvbnRhaW5pbmcgc2luZ2xlIGZpbGUKK3JlYWR5
U3RhdGU6IDAKK1JlY2VpdmVkIGxvYWRzdGFydCBldmVudAorcmVhZHlTdGF0ZTogMQorUmVjZWl2
ZWQgbG9hZCBldmVudAorcmVhZHlTdGF0ZTogMgorcmVzdWx0IHNpemU6IDUKK3Jlc3VsdDogSGVs
bG8KK1JlY2VpdmVkIGxvYWRlbmQgZXZlbnQKK1Rlc3QgcmVhZGluZyBhIGJsb2IgY29udGFpbmlu
ZyBzaW5nbGUgdGV4dAorcmVhZHlTdGF0ZTogMAorUmVjZWl2ZWQgbG9hZHN0YXJ0IGV2ZW50City
ZWFkeVN0YXRlOiAxCitSZWNlaXZlZCBsb2FkIGV2ZW50CityZWFkeVN0YXRlOiAyCityZXN1bHQg
c2l6ZTogNQorcmVzdWx0OiBGaXJzdAorUmVjZWl2ZWQgbG9hZGVuZCBldmVudAorVGVzdCByZWFk
aW5nIGEgYmxvYiBjb250YWluaW5nIHNsaWNlZCBmaWxlCityZWFkeVN0YXRlOiAwCitSZWNlaXZl
ZCBsb2Fkc3RhcnQgZXZlbnQKK3JlYWR5U3RhdGU6IDEKK1JlY2VpdmVkIGxvYWQgZXZlbnQKK3Jl
YWR5U3RhdGU6IDIKK3Jlc3VsdCBzaXplOiA1CityZXN1bHQ6IG9uZGVyCitSZWNlaXZlZCBsb2Fk
ZW5kIGV2ZW50CitUZXN0IHJlYWRpbmcgYSBibG9iIGNvbnRhaW5pbmcgc2xpY2VkIHRleHQKK3Jl
YWR5U3RhdGU6IDAKK1JlY2VpdmVkIGxvYWRzdGFydCBldmVudAorcmVhZHlTdGF0ZTogMQorUmVj
ZWl2ZWQgbG9hZCBldmVudAorcmVhZHlTdGF0ZTogMgorcmVzdWx0IHNpemU6IDQKK3Jlc3VsdDog
aXJzdAorUmVjZWl2ZWQgbG9hZGVuZCBldmVudAorVGVzdCByZWFkaW5nIGEgYmxvYiBjb250YWlu
aW5nIG11bHRpcGxlIGZpbGVzCityZWFkeVN0YXRlOiAwCitSZWNlaXZlZCBsb2Fkc3RhcnQgZXZl
bnQKK3JlYWR5U3RhdGU6IDEKK1JlY2VpdmVkIGxvYWQgZXZlbnQKK3JlYWR5U3RhdGU6IDIKK3Jl
c3VsdCBzaXplOiAxOQorcmVzdWx0OiBIZWxsb1dvbmRlcmZ1bFdvcmxkCitSZWNlaXZlZCBsb2Fk
ZW5kIGV2ZW50CitUZXN0IHJlYWRpbmcgYSBibG9iIGNvbnRhaW5pbmcgbXVsdGlwbGUgdGV4dHMK
K3JlYWR5U3RhdGU6IDAKK1JlY2VpdmVkIGxvYWRzdGFydCBldmVudAorcmVhZHlTdGF0ZTogMQor
UmVjZWl2ZWQgbG9hZCBldmVudAorcmVhZHlTdGF0ZTogMgorcmVzdWx0IHNpemU6IDE2CityZXN1
bHQ6IEZpcnN0U2Vjb25kVGhpcmQKK1JlY2VpdmVkIGxvYWRlbmQgZXZlbnQKK1Rlc3QgcmVhZGlu
ZyBhIGh5YnJpZCBibG9iCityZWFkeVN0YXRlOiAwCitSZWNlaXZlZCBsb2Fkc3RhcnQgZXZlbnQK
K3JlYWR5U3RhdGU6IDEKK1JlY2VpdmVkIGxvYWQgZXZlbnQKK3JlYWR5U3RhdGU6IDIKK3Jlc3Vs
dCBzaXplOiAzNQorcmVzdWx0OiBGaXJzdEhlbGxvU2Vjb25kV29uZGVyZnVsV29ybGRUaGlyZAor
UmVjZWl2ZWQgbG9hZGVuZCBldmVudAorVGVzdCByZWFkaW5nIGEgc2xpY2VkIGh5YnJpZCBibG9i
CityZWFkeVN0YXRlOiAwCitSZWNlaXZlZCBsb2Fkc3RhcnQgZXZlbnQKK3JlYWR5U3RhdGU6IDEK
K1JlY2VpdmVkIGxvYWQgZXZlbnQKK3JlYWR5U3RhdGU6IDIKK3Jlc3VsdCBzaXplOiAxMgorcmVz
dWx0OiBsbG9TZWNvbmRXb24KK1JlY2VpdmVkIGxvYWRlbmQgZXZlbnQKK1Rlc3QgcmVhZGluZyBh
IHRyaXBsZS1zbGljZWQgaHlicmlkIGJsb2IKK3JlYWR5U3RhdGU6IDAKK1JlY2VpdmVkIGxvYWRz
dGFydCBldmVudAorcmVhZHlTdGF0ZTogMQorUmVjZWl2ZWQgbG9hZCBldmVudAorcmVhZHlTdGF0
ZTogMgorcmVzdWx0IHNpemU6IDMwCityZXN1bHQ6IG9uZFdvbmRlcmZ1bFdvcmxkVGhpcmRGb29s
b1NlYworUmVjZWl2ZWQgbG9hZGVuZCBldmVudAorRE9ORQorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2ZpbGVzL3dvcmtlcnMvd29ya2VyLXJlYWQtYmxvYi1hc3luYy5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9maWxlcy93b3JrZXJzL3dvcmtlci1yZWFkLWJsb2ItYXN5bmMuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40MjJjZjYwYWE2N2JhNDJkZDI4ZjU2YzVjNThmYWZlYjBlMzY1ZDg4Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9maWxlcy93b3JrZXJzL3dvcmtlci1yZWFk
LWJsb2ItYXN5bmMuaHRtbApAQCAtMCwwICsxLDI5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorPGJvZHk+Cis8aW5wdXQgdHlwZT0iZmlsZSIgbmFtZT0iZmlsZSIgaWQ9ImZpbGUiIG9uY2hh
bmdlPSJvbklucHV0RmlsZUNoYW5nZSh0ZXN0RmlsZUluZm9MaXN0KSIgbXVsdGlwbGU+Cis8cHJl
IGlkPSdjb25zb2xlJz48L3ByZT4KKworPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zZXR1cC1m
b3ItcmVhZC1jb21tb24uanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK3ZhciB0ZXN0RmlsZUluZm9M
aXN0ID0gWworICAgIHsgJ25hbWUnOiAnbm9uLWV4aXN0ZW50JywgJ3BhdGgnOiAnLi4vcmVzb3Vy
Y2VzL25vbi1leGlzdGVudCcgfSwKKyAgICB7ICduYW1lJzogJ2VtcHR5LWZpbGUnLCAncGF0aCc6
ICcuLi9yZXNvdXJjZXMvZW1wdHktZmlsZScgfSwKKyAgICB7ICduYW1lJzogJ2ZpbGUxJywgJ3Bh
dGgnOiAnLi4vcmVzb3VyY2VzL1VURjgudHh0JyB9LAorICAgIHsgJ25hbWUnOiAnZmlsZTInLCAn
cGF0aCc6ICcuLi9yZXNvdXJjZXMvVVRGOC0yLnR4dCcgfSwKKyAgICB7ICduYW1lJzogJ2ZpbGUz
JywgJ3BhdGgnOiAnLi4vcmVzb3VyY2VzL1VURjgtMy50eHQnIH0sCitdOworCitmdW5jdGlvbiBz
dGFydFRlc3QodGVzdEZpbGVzKQoreworICAgIHN0YXJ0V29ya2VyKHRlc3RGaWxlcywgInJlc291
cmNlcy93b3JrZXItcmVhZC1ibG9iLWFzeW5jLmpzIik7Cit9CisKK2lmICh3aW5kb3cuZXZlbnRT
ZW5kZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIHdpbmRvdy5vbmxvYWQgPSBm
dW5jdGlvbigpIHsgcnVuVGVzdHModGVzdEZpbGVJbmZvTGlzdCk7IH0KK30KKzwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9maWxlcy93b3Jr
ZXJzL3dvcmtlci1yZWFkLWJsb2Itc3luYy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0
L2ZpbGVzL3dvcmtlcnMvd29ya2VyLXJlYWQtYmxvYi1zeW5jLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi43N2Y1NDE0OTM1ZTNlYzlmMTA0YzYzMTllYzYyNzQyY2ZmNmUzM2M1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9maWxlcy93b3JrZXJzL3dvcmtlci1yZWFkLWJsb2It
c3luYy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzMiBAQAorCitSZWNlaXZlZCBmaWxlcyBpbiB3
b3JrZXIKK1Rlc3QgcmVhZGluZyBhIGJsb2IgY29udGFpbmluZyBub24tZXhpc3RlbnQgZmlsZQor
UmVjZWl2ZWQgZXhjZXB0aW9uIDg6IE5PVF9GT1VORF9FUlIKK1Rlc3QgcmVhZGluZyBhIGJsb2Ig
Y29udGFpbmluZyBleGlzdGVudCBhbmQgbm9uLWV4aXN0ZW50IGZpbGUKK1JlY2VpdmVkIGV4Y2Vw
dGlvbiA4OiBOT1RfRk9VTkRfRVJSCitUZXN0IHJlYWRpbmcgYSBibG9iIGNvbnRhaW5pbmcgZW1w
dHkgZmlsZQorCitUZXN0IHJlYWRpbmcgYSBibG9iIGNvbnRhaW5pbmcgZW1wdHkgdGV4dAorCitU
ZXN0IHJlYWRpbmcgYSBibG9iIGNvbnRhaW5pbmcgZW1wdHkgZmlsZXMgYW5kIGVtcHR5IHRleHRz
CisKK1Rlc3QgcmVhZGluZyBhIGJsb2IgY29udGFpbmluZyBzaW5nbGUgZmlsZQorSGVsbG8KK1Rl
c3QgcmVhZGluZyBhIGJsb2IgY29udGFpbmluZyBzaW5nbGUgdGV4dAorRmlyc3QKK1Rlc3QgcmVh
ZGluZyBhIGJsb2IgY29udGFpbmluZyBzbGljZWQgZmlsZQorb25kZXIKK1Rlc3QgcmVhZGluZyBh
IGJsb2IgY29udGFpbmluZyBzbGljZWQgdGV4dAoraXJzdAorVGVzdCByZWFkaW5nIGEgYmxvYiBj
b250YWluaW5nIG11bHRpcGxlIGZpbGVzCitIZWxsb1dvbmRlcmZ1bFdvcmxkCitUZXN0IHJlYWRp
bmcgYSBibG9iIGNvbnRhaW5pbmcgbXVsdGlwbGUgdGV4dHMKK0ZpcnN0U2Vjb25kVGhpcmQKK1Rl
c3QgcmVhZGluZyBhIGh5YnJpZCBibG9iCitGaXJzdEhlbGxvU2Vjb25kV29uZGVyZnVsV29ybGRU
aGlyZAorVGVzdCByZWFkaW5nIGEgc2xpY2VkIGh5YnJpZCBibG9iCitsbG9TZWNvbmRXb24KK1Rl
c3QgcmVhZGluZyBhIHRyaXBsZS1zbGljZWQgaHlicmlkIGJsb2IKK29uZFdvbmRlcmZ1bFdvcmxk
VGhpcmRGb29sb1NlYworRE9ORQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVz
L3dvcmtlcnMvd29ya2VyLXJlYWQtYmxvYi1zeW5jLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zp
bGVzL3dvcmtlcnMvd29ya2VyLXJlYWQtYmxvYi1zeW5jLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWE5ZDgw
M2Y2NzhmYzRiY2E0NDZiYmUzZjBlOWQ1NTVjYmNmZjc2OAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvZmlsZXMvd29ya2Vycy93b3JrZXItcmVhZC1ibG9iLXN5bmMuaHRtbApA
QCAtMCwwICsxLDI5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8aW5wdXQg
dHlwZT0iZmlsZSIgbmFtZT0iZmlsZSIgaWQ9ImZpbGUiIG9uY2hhbmdlPSJvbklucHV0RmlsZUNo
YW5nZSh0ZXN0RmlsZUluZm9MaXN0KSIgbXVsdGlwbGU+Cis8cHJlIGlkPSdjb25zb2xlJz48L3By
ZT4KKworPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zZXR1cC1mb3ItcmVhZC1jb21tb24uanMi
Pjwvc2NyaXB0PgorPHNjcmlwdD4KK3ZhciB0ZXN0RmlsZUluZm9MaXN0ID0gWworICAgIHsgJ25h
bWUnOiAnbm9uLWV4aXN0ZW50JywgJ3BhdGgnOiAnLi4vcmVzb3VyY2VzL25vbi1leGlzdGVudCcg
fSwKKyAgICB7ICduYW1lJzogJ2VtcHR5LWZpbGUnLCAncGF0aCc6ICcuLi9yZXNvdXJjZXMvZW1w
dHktZmlsZScgfSwKKyAgICB7ICduYW1lJzogJ2ZpbGUxJywgJ3BhdGgnOiAnLi4vcmVzb3VyY2Vz
L1VURjgudHh0JyB9LAorICAgIHsgJ25hbWUnOiAnZmlsZTInLCAncGF0aCc6ICcuLi9yZXNvdXJj
ZXMvVVRGOC0yLnR4dCcgfSwKKyAgICB7ICduYW1lJzogJ2ZpbGUzJywgJ3BhdGgnOiAnLi4vcmVz
b3VyY2VzL1VURjgtMy50eHQnIH0sCitdOworCitmdW5jdGlvbiBzdGFydFRlc3QodGVzdEZpbGVz
KQoreworICAgIHN0YXJ0V29ya2VyKHRlc3RGaWxlcywgInJlc291cmNlcy93b3JrZXItcmVhZC1i
bG9iLXN5bmMuanMiKTsKK30KKworaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53
YWl0VW50aWxEb25lKCk7CisgICAgd2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkgeyBydW5UZXN0
cyh0ZXN0RmlsZUluZm9MaXN0KTsgfQorfQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVzL3dvcmtlcnMvd29ya2VyLXJlYWQtZmls
ZS1hc3luYy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVzL3dvcmtlcnMvd29y
a2VyLXJlYWQtZmlsZS1hc3luYy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTQ5NzY1ODkyZWUy
YmM0MDhlMWE2MjJkNDQxZDQ0NDgwZjJjYWMwYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvZmlsZXMvd29ya2Vycy93b3JrZXItcmVhZC1maWxlLWFzeW5jLWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDE0OCBAQAorCitSZWNlaXZlZCBmaWxlcyBpbiB3b3JrZXIKK1Rlc3QgcmVh
ZGluZyBhIG5vbi1leGlzdGVudCBmaWxlIGFzIGJpbmFyeSBzdHJpbmcKK3JlYWR5U3RhdGU6IDAK
K1JlY2VpdmVkIGVycm9yIGV2ZW50CityZWFkeVN0YXRlOiAyCitlcnJvciBjb2RlOiA4CitSZWNl
aXZlZCBsb2FkZW5kIGV2ZW50CitUZXN0IHJlYWRpbmcgYSBub24tZXhpc3RlbnQgZmlsZSBhcyB0
ZXh0CityZWFkeVN0YXRlOiAwCitSZWNlaXZlZCBlcnJvciBldmVudAorcmVhZHlTdGF0ZTogMgor
ZXJyb3IgY29kZTogOAorUmVjZWl2ZWQgbG9hZGVuZCBldmVudAorVGVzdCByZWFkaW5nIGEgbm9u
LWV4aXN0ZW50IGZpbGUgYXMgZGF0YSBVUkwKK3JlYWR5U3RhdGU6IDAKK1JlY2VpdmVkIGVycm9y
IGV2ZW50CityZWFkeVN0YXRlOiAyCitlcnJvciBjb2RlOiA4CitSZWNlaXZlZCBsb2FkZW5kIGV2
ZW50CitUZXN0IHJlYWRpbmcgYW4gZW1wdHkgZmlsZSBhcyBiaW5hcnkgc3RyaW5nCityZWFkeVN0
YXRlOiAwCitSZWNlaXZlZCBsb2Fkc3RhcnQgZXZlbnQKK3JlYWR5U3RhdGU6IDEKK1JlY2VpdmVk
IGxvYWQgZXZlbnQKK3JlYWR5U3RhdGU6IDIKK3Jlc3VsdCBzaXplOiAwCityZXN1bHQ6IAorUmVj
ZWl2ZWQgbG9hZGVuZCBldmVudAorVGVzdCByZWFkaW5nIGFuIGVtcHR5IGZpbGUgYXMgdGV4dAor
cmVhZHlTdGF0ZTogMAorUmVjZWl2ZWQgbG9hZHN0YXJ0IGV2ZW50CityZWFkeVN0YXRlOiAxCitS
ZWNlaXZlZCBsb2FkIGV2ZW50CityZWFkeVN0YXRlOiAyCityZXN1bHQgc2l6ZTogMAorcmVzdWx0
OiAKK1JlY2VpdmVkIGxvYWRlbmQgZXZlbnQKK1Rlc3QgcmVhZGluZyBhbiBlbXB0eSBmaWxlIGFz
IGRhdGEgVVJMCityZWFkeVN0YXRlOiAwCitSZWNlaXZlZCBsb2Fkc3RhcnQgZXZlbnQKK3JlYWR5
U3RhdGU6IDEKK1JlY2VpdmVkIGxvYWQgZXZlbnQKK3JlYWR5U3RhdGU6IDIKK3Jlc3VsdCBzaXpl
OiA1CityZXN1bHQ6IGRhdGE6CitSZWNlaXZlZCBsb2FkZW5kIGV2ZW50CitUZXN0IHJlYWRpbmcg
YSBVVEYtOCBmaWxlIGFzIGJpbmFyeSBzdHJpbmcKK3JlYWR5U3RhdGU6IDAKK1JlY2VpdmVkIGxv
YWRzdGFydCBldmVudAorcmVhZHlTdGF0ZTogMQorUmVjZWl2ZWQgbG9hZCBldmVudAorcmVhZHlT
dGF0ZTogMgorcmVzdWx0IHNpemU6IDUKK3Jlc3VsdDogSGVsbG8KK1JlY2VpdmVkIGxvYWRlbmQg
ZXZlbnQKK1Rlc3QgcmVhZGluZyBhIGJpbmFyeSBmaWxlIGFzIGJpbmFyeSBzdHJpbmcKK3JlYWR5
U3RhdGU6IDAKK1JlY2VpdmVkIGxvYWRzdGFydCBldmVudAorcmVhZHlTdGF0ZTogMQorUmVjZWl2
ZWQgbG9hZCBldmVudAorcmVhZHlTdGF0ZTogMgorcmVzdWx0IHNpemU6IDkKK3Jlc3VsdDogMHgw
IDB4MSAweDIgMHg4MCAweDgxIDB4ODIgMHhmZCAweGZlIDB4ZmYKK1JlY2VpdmVkIGxvYWRlbmQg
ZXZlbnQKK1Rlc3QgcmVhZGluZyBhIFVURi04IGZpbGUgYXMgdGV4dAorcmVhZHlTdGF0ZTogMAor
UmVjZWl2ZWQgbG9hZHN0YXJ0IGV2ZW50CityZWFkeVN0YXRlOiAxCitSZWNlaXZlZCBsb2FkIGV2
ZW50CityZWFkeVN0YXRlOiAyCityZXN1bHQgc2l6ZTogNQorcmVzdWx0OiBIZWxsbworUmVjZWl2
ZWQgbG9hZGVuZCBldmVudAorVGVzdCByZWFkaW5nIGEgVVRGLTE2QkUgQk9NIGZpbGUgYXMgdGV4
dAorcmVhZHlTdGF0ZTogMAorUmVjZWl2ZWQgbG9hZHN0YXJ0IGV2ZW50CityZWFkeVN0YXRlOiAx
CitSZWNlaXZlZCBsb2FkIGV2ZW50CityZWFkeVN0YXRlOiAyCityZXN1bHQgc2l6ZTogNQorcmVz
dWx0OiBIZWxsbworUmVjZWl2ZWQgbG9hZGVuZCBldmVudAorVGVzdCByZWFkaW5nIGEgVVRGLTE2
TEUgQk9NIGZpbGUgYXMgdGV4dAorcmVhZHlTdGF0ZTogMAorUmVjZWl2ZWQgbG9hZHN0YXJ0IGV2
ZW50CityZWFkeVN0YXRlOiAxCitSZWNlaXZlZCBsb2FkIGV2ZW50CityZWFkeVN0YXRlOiAyCity
ZXN1bHQgc2l6ZTogNQorcmVzdWx0OiBIZWxsbworUmVjZWl2ZWQgbG9hZGVuZCBldmVudAorVGVz
dCByZWFkaW5nIGEgVVRGLTggQk9NIGZpbGUgYXMgdGV4dAorcmVhZHlTdGF0ZTogMAorUmVjZWl2
ZWQgbG9hZHN0YXJ0IGV2ZW50CityZWFkeVN0YXRlOiAxCitSZWNlaXZlZCBsb2FkIGV2ZW50City
ZWFkeVN0YXRlOiAyCityZXN1bHQgc2l6ZTogNQorcmVzdWx0OiBIZWxsbworUmVjZWl2ZWQgbG9h
ZGVuZCBldmVudAorVGVzdCByZWFkaW5nIGEgVVRGLTE2QkUgZmlsZSBhcyB0ZXh0IHdpdGggVVRG
LTE2QkUgZW5jb2RpbmcKK3JlYWR5U3RhdGU6IDAKK1JlY2VpdmVkIGxvYWRzdGFydCBldmVudAor
cmVhZHlTdGF0ZTogMQorUmVjZWl2ZWQgbG9hZCBldmVudAorcmVhZHlTdGF0ZTogMgorcmVzdWx0
IHNpemU6IDUKK3Jlc3VsdDogSGVsbG8KK1JlY2VpdmVkIGxvYWRlbmQgZXZlbnQKK1Rlc3QgcmVh
ZGluZyBhIFVURi0xNkJFIEJPTSBmaWxlIGFzIHRleHQgd2l0aCBVVEY4IGVuY29kaW5nCityZWFk
eVN0YXRlOiAwCitSZWNlaXZlZCBsb2Fkc3RhcnQgZXZlbnQKK3JlYWR5U3RhdGU6IDEKK1JlY2Vp
dmVkIGxvYWQgZXZlbnQKK3JlYWR5U3RhdGU6IDIKK3Jlc3VsdCBzaXplOiA1CityZXN1bHQ6IEhl
bGxvCitSZWNlaXZlZCBsb2FkZW5kIGV2ZW50CitUZXN0IHJlYWRpbmcgYSBVVEYtMTZCRSBCT00g
ZmlsZSBhcyB0ZXh0IHdpdGggaW52YWxpZCBlbmNvZGluZworcmVhZHlTdGF0ZTogMAorUmVjZWl2
ZWQgbG9hZHN0YXJ0IGV2ZW50CityZWFkeVN0YXRlOiAxCitSZWNlaXZlZCBsb2FkIGV2ZW50City
ZWFkeVN0YXRlOiAyCityZXN1bHQgc2l6ZTogNQorcmVzdWx0OiBIZWxsbworUmVjZWl2ZWQgbG9h
ZGVuZCBldmVudAorVGVzdCByZWFkaW5nIGEgVVRGLTggZmlsZSBhcyBkYXRhIFVSTAorcmVhZHlT
dGF0ZTogMAorUmVjZWl2ZWQgbG9hZHN0YXJ0IGV2ZW50CityZWFkeVN0YXRlOiAxCitSZWNlaXZl
ZCBsb2FkIGV2ZW50CityZWFkeVN0YXRlOiAyCityZXN1bHQgc2l6ZTogMzEKK3Jlc3VsdDogZGF0
YTp0ZXh0L3BsYWluO2Jhc2U2NCxTR1ZzYkc4PQorUmVjZWl2ZWQgbG9hZGVuZCBldmVudAorVGVz
dCBjYWxsaW5nIG11bHRpcGxlIHJlYWQgbWV0aG9kcyBhbmQgb25seSBsYXN0IG9uZSBpcyBwcm9j
ZXNzZWQKK3JlYWR5U3RhdGU6IDAKK1JlY2VpdmVkIGxvYWRzdGFydCBldmVudAorcmVhZHlTdGF0
ZTogMQorUmVjZWl2ZWQgbG9hZCBldmVudAorcmVhZHlTdGF0ZTogMgorcmVzdWx0IHNpemU6IDMx
CityZXN1bHQ6IGRhdGE6dGV4dC9wbGFpbjtiYXNlNjQsU0dWc2JHOD0KK1JlY2VpdmVkIGxvYWRl
bmQgZXZlbnQKK0RPTkUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9maWxlcy93b3Jr
ZXJzL3dvcmtlci1yZWFkLWZpbGUtYXN5bmMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZmlsZXMv
d29ya2Vycy93b3JrZXItcmVhZC1maWxlLWFzeW5jLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTJlZDk0Yjdj
ODRmZWE1NWUyOGY0N2ZmMzJmMGYxZTlkODBhNDFkOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvZmlsZXMvd29ya2Vycy93b3JrZXItcmVhZC1maWxlLWFzeW5jLmh0bWwKQEAg
LTAsMCArMSwzMiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorPGlucHV0IHR5
cGU9ImZpbGUiIG5hbWU9ImZpbGUiIGlkPSJmaWxlIiBvbmNoYW5nZT0ib25JbnB1dEZpbGVDaGFu
Z2UodGVzdEZpbGVJbmZvTGlzdCkiIG11bHRpcGxlPgorPHByZSBpZD0nY29uc29sZSc+PC9wcmU+
CisKKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc2V0dXAtZm9yLXJlYWQtY29tbW9uLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQ+Cit2YXIgdGVzdEZpbGVJbmZvTGlzdCA9IFsKKyAgICB7ICduYW1l
JzogJ25vbi1leGlzdGVudCcsICdwYXRoJzogJy4uL3Jlc291cmNlcy9ub24tZXhpc3RlbnQnIH0s
CisgICAgeyAnbmFtZSc6ICdlbXB0eS1maWxlJywgJ3BhdGgnOiAnLi4vcmVzb3VyY2VzL2VtcHR5
LWZpbGUnIH0sCisgICAgeyAnbmFtZSc6ICdVVEY4LWZpbGUnLCAncGF0aCc6ICcuLi9yZXNvdXJj
ZXMvVVRGOC50eHQnIH0sCisgICAgeyAnbmFtZSc6ICdVVEYxNkJFLUJPTS1maWxlJywgJ3BhdGgn
OiAnLi4vcmVzb3VyY2VzL1VURjE2QkUtQk9NLnR4dCcgfSwKKyAgICB7ICduYW1lJzogJ1VURjE2
TEUtQk9NLWZpbGUnLCAncGF0aCc6ICcuLi9yZXNvdXJjZXMvVVRGMTZMRS1CT00udHh0JyB9LAor
ICAgIHsgJ25hbWUnOiAnVVRGOC1CT00tZmlsZScsICdwYXRoJzogJy4uL3Jlc291cmNlcy9VVEY4
LUJPTS50eHQnIH0sCisgICAgeyAnbmFtZSc6ICdVVEYxNkJFLWZpbGUnLCAncGF0aCc6ICcuLi9y
ZXNvdXJjZXMvVVRGMTZCRS50eHQnIH0sCisgICAgeyAnbmFtZSc6ICdiaW5hcnktZmlsZScsICdw
YXRoJzogJy4uL3Jlc291cmNlcy9iaW5hcnktZmlsZScgfSwKK107CisKK2Z1bmN0aW9uIHN0YXJ0
VGVzdCh0ZXN0RmlsZXMpCit7CisgICAgc3RhcnRXb3JrZXIodGVzdEZpbGVzLCAicmVzb3VyY2Vz
L3dvcmtlci1yZWFkLWZpbGUtYXN5bmMuanMiKTsKK30KKworaWYgKHdpbmRvdy5ldmVudFNlbmRl
cikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgd2luZG93Lm9ubG9hZCA9IGZ1bmN0
aW9uKCkgeyBydW5UZXN0cyh0ZXN0RmlsZUluZm9MaXN0KTsgfQorfQorPC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVzL3dvcmtlcnMv
d29ya2VyLXJlYWQtZmlsZS1zeW5jLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZmls
ZXMvd29ya2Vycy93b3JrZXItcmVhZC1maWxlLXN5bmMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjM2OTFhNThmOTY2YmI2M2FhNTgxYTVhYWFmNGMyYjIxZmY0NDU3YmEKQmluYXJ5IGZpbGVzIC9k
ZXYvbnVsbCBhbmQgYi9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVzL3dvcmtlcnMvd29ya2VyLXJlYWQt
ZmlsZS1zeW5jLWV4cGVjdGVkLnR4dCBkaWZmZXIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvZmlsZXMvd29ya2Vycy93b3JrZXItcmVhZC1maWxlLXN5bmMuaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3QvZmlsZXMvd29ya2Vycy93b3JrZXItcmVhZC1maWxlLXN5bmMuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li43ZDU5ZmU5NDU0Y2RkZGE2NzUwOTRjMTQ1YmNhZmRmNGFlYzE3MjA0Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9maWxlcy93b3JrZXJzL3dvcmtlci1yZWFkLWZpbGUtc3lu
Yy5odG1sCkBAIC0wLDAgKzEsMzIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4K
KzxpbnB1dCB0eXBlPSJmaWxlIiBuYW1lPSJmaWxlIiBpZD0iZmlsZSIgb25jaGFuZ2U9Im9uSW5w
dXRGaWxlQ2hhbmdlKHRlc3RGaWxlSW5mb0xpc3QpIiBtdWx0aXBsZT4KKzxwcmUgaWQ9J2NvbnNv
bGUnPjwvcHJlPgorCis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3NldHVwLWZvci1yZWFkLWNv
bW1vbi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgordmFyIHRlc3RGaWxlSW5mb0xpc3QgPSBbCisg
ICAgeyAnbmFtZSc6ICdub24tZXhpc3RlbnQnLCAncGF0aCc6ICcuLi9yZXNvdXJjZXMvbm9uLWV4
aXN0ZW50JyB9LAorICAgIHsgJ25hbWUnOiAnZW1wdHktZmlsZScsICdwYXRoJzogJy4uL3Jlc291
cmNlcy9lbXB0eS1maWxlJyB9LAorICAgIHsgJ25hbWUnOiAnVVRGOC1maWxlJywgJ3BhdGgnOiAn
Li4vcmVzb3VyY2VzL1VURjgudHh0JyB9LAorICAgIHsgJ25hbWUnOiAnVVRGMTZCRS1CT00tZmls
ZScsICdwYXRoJzogJy4uL3Jlc291cmNlcy9VVEYxNkJFLUJPTS50eHQnIH0sCisgICAgeyAnbmFt
ZSc6ICdVVEYxNkxFLUJPTS1maWxlJywgJ3BhdGgnOiAnLi4vcmVzb3VyY2VzL1VURjE2TEUtQk9N
LnR4dCcgfSwKKyAgICB7ICduYW1lJzogJ1VURjgtQk9NLWZpbGUnLCAncGF0aCc6ICcuLi9yZXNv
dXJjZXMvVVRGOC1CT00udHh0JyB9LAorICAgIHsgJ25hbWUnOiAnVVRGMTZCRS1maWxlJywgJ3Bh
dGgnOiAnLi4vcmVzb3VyY2VzL1VURjE2QkUudHh0JyB9LAorICAgIHsgJ25hbWUnOiAnYmluYXJ5
LWZpbGUnLCAncGF0aCc6ICcuLi9yZXNvdXJjZXMvYmluYXJ5LWZpbGUnIH0sCitdOworCitmdW5j
dGlvbiBzdGFydFRlc3QodGVzdEZpbGVzKQoreworICAgIHN0YXJ0V29ya2VyKHRlc3RGaWxlcywg
InJlc291cmNlcy93b3JrZXItcmVhZC1maWxlLXN5bmMuanMiKTsKK30KKworaWYgKHdpbmRvdy5l
dmVudFNlbmRlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgd2luZG93Lm9ubG9h
ZCA9IGZ1bmN0aW9uKCkgeyBydW5UZXN0cyh0ZXN0RmlsZUluZm9MaXN0KTsgfQorfQorPC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9j
aHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKaW5kZXggMGJjZDU4ZDk5N2NiNzRiNTBhOWNlYTZj
ZTdmODZmNzI2NGRhZmI4Ny4uZTQ4MzczODRhOTM4ZWQ1NjRiZTUxODZiMmFjZjVkNjZkNDA3NTAw
ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3Rh
dGlvbnMudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0
YXRpb25zLnR4dApAQCAtMTYyLDYgKzE2Miw3IEBAIFdPTlRGSVggU0tJUCA6IGZhc3QvcmVnZXgv
dGVzdDEuaHRtbCA9IFBBU1MKIAogLy8gV2UgdXNlIHdvcmtlcl91aXRlc3RzIHRvIHJ1biB3b3Jr
ZXJzIHRlc3RzLiBEb24ndCBydW4gdGhlbSBpbiB0ZXN0X3NoZWxsLgogV09OVEZJWCBTS0lQIDog
ZmFzdC93b3JrZXJzID0gUEFTUyBUSU1FT1VUIEZBSUwKK1dPTlRGSVggU0tJUCA6IGZhc3QvZmls
ZXMvd29ya2VycyA9IFBBU1MgVElNRU9VVCBGQUlMCiBXT05URklYIFNLSVAgOiBodHRwL3Rlc3Rz
L3dvcmtlcnMgPSBQQVNTIFRJTUVPVVQgRkFJTAogV09OVEZJWCBTS0lQIDogaHR0cC90ZXN0cy94
bWxodHRwcmVxdWVzdC93b3JrZXJzID0gUEFTUyBUSU1FT1VUIEZBSUwKIFdPTlRGSVggU0tJUCA6
IGh0dHAvdGVzdHMvZXZlbnRzb3VyY2Uvd29ya2VycyA9IFBBU1MgVElNRU9VVCBGQUlMCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZCBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2d0ay9Ta2lwcGVkCmluZGV4IDBjNTBlMWJkYzU5YjdhNjgyMTkxMjlmMTNiM2M1MmE0
MGUxNmE1ZGIuLmEwMWQ4YzAzYjllOGFkMWMwNWNiOGQyZGNjZTZlOGZlOWIyYTQ0ODggMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2d0ay9Ta2lwcGVkCkBAIC0zMTYzLDYgKzMxNjMsNyBAQCBodHRwL3Rlc3RzL2xv
Y2FsL2Zvcm1kYXRhL3NlbmQtZm9ybS1kYXRhLXdpdGgtc2xpY2VkLWZpbGUuaHRtbAogaHR0cC90
ZXN0cy9sb2NhbC9mb3JtZGF0YS91cGxvYWQtZXZlbnRzLmh0bWwKIGZhc3QvZmlsZXMvcmVhZC1i
bG9iLWFzeW5jLmh0bWwKIGZhc3QvZmlsZXMvcmVhZC1maWxlLWFzeW5jLmh0bWwKK2Zhc3QvZmls
ZXMvd29ya2VycwogaHR0cC90ZXN0cy9tZWRpYS92aWRlby1wbGF5LXN0YWxsLXNlZWsuaHRtbAog
aHR0cC90ZXN0cy9tZWRpYS92aWRlby1wbGF5LXN0YWxsLmh0bWwKIGh0dHAvdGVzdHMvbWVkaWEv
dmlkZW8tc2Vla2FibGUtc3RhbGwuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjLXdrMi9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9Ta2lwcGVk
CmluZGV4IGM0OTYzMjEzMTIxYTE3MzNkYzVlZDQzYzVkNjgyNzU2ZmU4ZWU1YWMuLjY4MzcwNGFl
NjYzNmM4YTEyNzM1OTIyMTQ1NDdlODBiMWM0NzMxZmUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy13azIvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMt
d2syL1NraXBwZWQKQEAgLTM2NSw2ICszNjUsNyBAQCBmYXN0L2V2ZW50cy93aW5kb3ctZXZlbnRz
LWNhcHR1cmUuaHRtbAogZmFzdC9ldmVudHMvem9vbS1kYmxjbGljay5odG1sCiBmYXN0L2ZpbGVz
L3JlYWQtYmxvYi1hc3luYy5odG1sCiBmYXN0L2ZpbGVzL3JlYWQtZmlsZS1hc3luYy5odG1sCitm
YXN0L2ZpbGVzL3dvcmtlcnMKIGZhc3QvZm9ybXMvMjUxNTMuaHRtbAogZmFzdC9mb3Jtcy9hY2Nl
c3Mta2V5Lmh0bWwKIGZhc3QvZm9ybXMvYnV0dG9uLWVudGVyLWNsaWNrLmh0bWwKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9xdC9Ta2lwcGVkCmluZGV4IGE2YmYzMzAwYTQxYTUwZGQxZDVkNGQ4NzY3ZTZiYTFlYWRkYWMx
MmYuLjFkYjEzOTY5NjczZTVkMmUzM2ZjMGU2ZjVkOTdhMDIyNjA1NGVjOGUgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vcXQvU2tpcHBlZApAQCAtNzg2LDYgKzc4Niw3IEBAIGh0dHAvdGVzdHMvc2VjdXJpdHkvaXNv
bGF0ZWRXb3JsZC93b3JsZC1yZXVzZS5odG1sCiBmYXN0L2RvbS9XaW5kb3cvd2luZG93LXBvc3Rt
ZXNzYWdlLWNsb25lLWZyYW1lcy5odG1sCiBmYXN0L2ZpbGVzL3JlYWQtYmxvYi1hc3luYy5odG1s
CiBmYXN0L2ZpbGVzL3JlYWQtZmlsZS1hc3luYy5odG1sCitmYXN0L2ZpbGVzL3dvcmtlcnMKIAog
IyBNaXNzaW5nIGxheW91dFRlc3RDb250cm9sbGVyLnNldEFsd2F5c0FjY2VwdENvb2tpZXMoKQog
aHR0cC90ZXN0cy9wbHVnaW5zL3RoaXJkLXBhcnR5LWNvb2tpZS1hY2NlcHQtcG9saWN5Lmh0bWwK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vd2luL1NraXBwZWQKaW5kZXggMzY2MTg5MzRkZjViOTMxMGJhYTA2NDI1Yzhh
Y2RlYTI3NGE3ZDA5ZS4uOWQ2ODNlMzA5OGVkOTAxMWM0MzgwNzI4MDI4MmVlM2JkZjVlNWQ0MiAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQKKysrIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQKQEAgLTE5Nyw2ICsxOTcsNyBAQCBmYXN0L2V2ZW50
cy9kcmFnLWZpbGUtY3Jhc2guaHRtbAogZmFzdC9kb20vV2luZG93L3dpbmRvdy1wb3N0bWVzc2Fn
ZS1jbG9uZS5odG1sCiBmYXN0L2ZpbGVzL3JlYWQtYmxvYi1hc3luYy5odG1sCiBmYXN0L2ZpbGVz
L3JlYWQtZmlsZS1hc3luYy5odG1sCitmYXN0L2ZpbGVzL3dvcmtlcnMKIAogIyBOZWVkIHRvIGFk
ZCBmdW5jdGlvbmFsaXR5IHRvIER1bXBSZW5kZXJUcmVlIHRvIHRlc3QgSUROIDxyZGFyOi8vcHJv
YmxlbS81MzAxOTU0PgogZmFzdC9lbmNvZGluZy9pZG4tc2VjdXJpdHkuaHRtbApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBhZGNmM2JjODBk
YzA4MjBiNGQ4OTQ4M2I3ZjM2NDdhYTgzNDk5YzMwLi5lMTk0MmQxOTE2ZDU5ODIxZGQxOTc3NWZj
NGVkN2YxZWE4YzNmZTU4IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDEwLTA4LTI1ICBKaWFuIExpICA8amlh
bmxpQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBTdXBwb3J0IEZpbGVSZWFkZXJTeW5jIGluIHdvcmtlcnMuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NDY1NworCisgICAgICAgIEFs
c28gYWRkIEZpbGVFeGNlcHRpb24gaW50ZXJmYWNlIGFuZCBtYWtlIEJsb2IvRmlsZS9GaWxlRXJy
b3IgYmUgdXNlYWJsZSBpbgorICAgICAgICB3b3JrZXJzLgorCisgICAgICAgIFRlc3RzOiBmYXN0
L2ZpbGVzL3dvcmtlcnMvd29ya2VyLXJlYWQtYmxvYi1hc3luYy5odG1sCisgICAgICAgICAgICAg
ICBmYXN0L2ZpbGVzL3dvcmtlcnMvd29ya2VyLXJlYWQtYmxvYi1zeW5jLmh0bWwKKyAgICAgICAg
ICAgICAgIGZhc3QvZmlsZXMvd29ya2Vycy93b3JrZXItcmVhZC1maWxlLWFzeW5jLmh0bWwKKyAg
ICAgICAgICAgICAgIGZhc3QvZmlsZXMvd29ya2Vycy93b3JrZXItcmVhZC1maWxlLXN5bmMuaHRt
bAorCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMuY3BwOgorICAgICAgICAqIERlcml2ZWRTb3Vy
Y2VzLm1ha2U6CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUucHJv
OgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBodG1sL0Jsb2IuaWRs
OiBBZGRlZCBOb1N0YXRpY1RhYmxlcyBhdHRyaWJ1dGUuCisgICAgICAgICogaHRtbC9GaWxlLmlk
bDogQWRkZWQgTm9TdGF0aWNUYWJsZXMgYXR0cmlidXRlLgorICAgICAgICAqIGh0bWwvRmlsZUVy
cm9yLmlkbDogQWRkZWQgTm9TdGF0aWNUYWJsZXMgYXR0cmlidXRlLgorICAgICAgICAqIGh0bWwv
RmlsZUV4Y2VwdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKiBodG1sL0ZpbGVFeGNlcHRpb24uaWRs
OiBBZGRlZC4KKyAgICAgICAgKiBodG1sL0ZpbGVSZWFkZXJTeW5jLmNwcDogQWRkZWQuCisgICAg
ICAgICogaHRtbC9GaWxlUmVhZGVyU3luYy5oOiBBZGRlZC4KKyAgICAgICAgKiBodG1sL0ZpbGVS
ZWFkZXJTeW5jLmlkbDogQWRkZWQuCisgICAgICAgICogd29ya2Vycy9Xb3JrZXJDb250ZXh0Lmlk
bDogRXhwb3NlIEZpbGVSZWFkZXJTeW5jIGFuZCBCbG9kQnVpbGRlciBpbiB3b3JrZXJzLgorCiAy
MDEwLTA4LTI1ICBLZW5uZXRoIFJ1c3NlbGwgIDxrYnJAZ29vZ2xlLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCmRpZmYgLS1naXQgYS9XZWJDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLmNwcCBiL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3BwCmluZGV4IGJiYWI2NGJmZDJiYTlm
ZTYwZWExMjE4Y2U1ZTQwMTIzN2RhYTZmOTYuLjgxZjQwNzAwMWM5NjFhYzRjNjE2MjJiYjgwYWEx
ODk2ODBlZWZlOGEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3BwCisrKyBi
L1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3BwCkBAIC0xMDcsOCArMTA3LDEwIEBACiAjaW5jbHVk
ZSAiSlNGaWxlLmNwcCIKICNpbmNsdWRlICJKU0ZpbGVFbnRyeS5jcHAiCiAjaW5jbHVkZSAiSlNG
aWxlRXJyb3IuY3BwIgorI2luY2x1ZGUgIkpTRmlsZUV4Y2VwdGlvbi5jcHAiCiAjaW5jbHVkZSAi
SlNGaWxlTGlzdC5jcHAiCiAjaW5jbHVkZSAiSlNGaWxlUmVhZGVyLmNwcCIKKyNpbmNsdWRlICJK
U0ZpbGVSZWFkZXJTeW5jLmNwcCIKICNpbmNsdWRlICJKU0ZpbGVTeXN0ZW1DYWxsYmFjay5jcHAi
CiAjaW5jbHVkZSAiSlNGaWxlV3JpdGVyLmNwcCIKICNpbmNsdWRlICJKU0ZsYWdzLmNwcCIKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1dlYkNvcmUvRGVyaXZlZFNv
dXJjZXMubWFrZQppbmRleCBiOWY2NTg5ODFkMGVlODBhOTI5YmIwZjE3ZTIxNTZjNmY3OTUyNzc5
Li43MzgyMmUzN2QxNDkwYzhhMDcxOGE5YjFhYWFjODViZTFiMDhiNzY5IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5t
YWtlCkBAIC0xNTEsOSArMTUxLDExIEBAIERPTV9DTEFTU0VTID0gXAogICAgIEV2ZW50VGFyZ2V0
IFwKICAgICBGaWxlIFwKICAgICBGaWxlRW50cnkgXAorICAgIEZpbGVFeGNlcHRpb24gXAogICAg
IEZpbGVFcnJvciBcCiAgICAgRmlsZUxpc3QgXAogICAgIEZpbGVSZWFkZXIgXAorICAgIEZpbGVS
ZWFkZXJTeW5jIFwKICAgICBGaWxlV3JpdGVyIFwKICAgICBGaWxlU3lzdGVtQ2FsbGJhY2sgXAog
ICAgIEZsYWdzIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkKaW5kZXggNDNkNDIzZGY2ZDMzYzBjMDY3ODI2ZDQ0YWMzYmVmYjMwNjI3MDI3
Mi4uYTc3ODMwMzVjOTgzODA5NzE5MmZmMjA4NTBhYjg5ZGMzZDEzNjEwNiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTExNiw4
ICsxMTYsMTAgQEAKICAgICAgICAgICAgICdodG1sL0RPTUZvcm1EYXRhLmlkbCcsCiAgICAgICAg
ICAgICAnaHRtbC9GaWxlLmlkbCcsCiAgICAgICAgICAgICAnaHRtbC9GaWxlRXJyb3IuaWRsJywK
KyAgICAgICAgICAgICdodG1sL0ZpbGVFeGNlcHRpb24uaWRsJywKICAgICAgICAgICAgICdodG1s
L0ZpbGVMaXN0LmlkbCcsCiAgICAgICAgICAgICAnaHRtbC9GaWxlUmVhZGVyLmlkbCcsCisgICAg
ICAgICAgICAnaHRtbC9GaWxlUmVhZGVyU3luYy5pZGwnLAogICAgICAgICAgICAgJ2h0bWwvRmls
ZVdyaXRlci5pZGwnLAogICAgICAgICAgICAgJ2h0bWwvSFRNTEFsbENvbGxlY3Rpb24uaWRsJywK
ICAgICAgICAgICAgICdodG1sL0hUTUxBbmNob3JFbGVtZW50LmlkbCcsCkBAIC0xNTE3LDEwICsx
NTE5LDEzIEBACiAgICAgICAgICAgICAnaHRtbC9GaWxlLmNwcCcsCiAgICAgICAgICAgICAnaHRt
bC9GaWxlLmgnLAogICAgICAgICAgICAgJ2h0bWwvRmlsZUVycm9yLmgnLAorICAgICAgICAgICAg
J2h0bWwvRmlsZUV4Y2VwdGlvbi5oJywKICAgICAgICAgICAgICdodG1sL0ZpbGVMaXN0LmNwcCcs
CiAgICAgICAgICAgICAnaHRtbC9GaWxlTGlzdC5oJywKICAgICAgICAgICAgICdodG1sL0ZpbGVS
ZWFkZXIuY3BwJywKICAgICAgICAgICAgICdodG1sL0ZpbGVSZWFkZXIuaCcsCisgICAgICAgICAg
ICAnaHRtbC9GaWxlUmVhZGVyU3luYy5jcHAnLAorICAgICAgICAgICAgJ2h0bWwvRmlsZVJlYWRl
clN5bmMuaCcsCiAgICAgICAgICAgICAnaHRtbC9GaWxlV3JpdGVyLmNwcCcsCiAgICAgICAgICAg
ICAnaHRtbC9GaWxlV3JpdGVyLmgnLAogICAgICAgICAgICAgJ2h0bWwvRmlsZVN0cmVhbVByb3h5
LmNwcCcsCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUucHJvIGIvV2ViQ29yZS9XZWJDb3Jl
LnBybwppbmRleCBjOGQyZTFiMzNhMDY0MTRiN2Q4YzRhYjNhNTIxMDJlYzZiYjA1ZmFkLi4wMjAw
NDRlMThiNjFhYzQ1Yjk2NDA0NDdmNGUyM2NlNGFhYjczYmIxIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L1dlYkNvcmUucHJvCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTY0NSw2ICs2NDUsNyBA
QCBTT1VSQ0VTICs9IFwKICAgICBodG1sL0ZpbGUuY3BwIFwKICAgICBodG1sL0ZpbGVMaXN0LmNw
cCBcCiAgICAgaHRtbC9GaWxlUmVhZGVyLmNwcCBcCisgICAgaHRtbC9GaWxlUmVhZGVyU3luYy5j
cHAgXAogICAgIGh0bWwvRmlsZVN0cmVhbVByb3h5LmNwcCBcCiAgICAgaHRtbC9GaWxlVGhyZWFk
LmNwcCBcCiAgICAgaHRtbC9GaWxlV3JpdGVyLmNwcCBcCkBAIC0xNDIwLDggKzE0MjEsMTAgQEAg
SEVBREVSUyArPSBcCiAgICAgaHRtbC9ET01Gb3JtRGF0YS5oIFwKICAgICBodG1sL0ZpbGUuaCBc
CiAgICAgaHRtbC9GaWxlRXJyb3IuaCBcCisgICAgaHRtbC9GaWxlRXhjZXB0aW9uLmggXAogICAg
IGh0bWwvRmlsZUxpc3QuaCBcCiAgICAgaHRtbC9GaWxlUmVhZGVyLmggXAorICAgIGh0bWwvRmls
ZVJlYWRlclN5bmMuaCBcCiAgICAgaHRtbC9GaWxlU3RyZWFtUHJveHkuaCBcCiAgICAgaHRtbC9G
aWxlVGhyZWFkLmggXAogICAgIGh0bWwvRmlsZVRocmVhZFRhc2suaCBcCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvagppbmRleCAwZDI4MjA5MDQ2NzNiMzJjMDE2MWFiYzFhYjUwNDlm
YTE3OGI0ZGJmLi43Yzc5Nzk0OWRlNjg2YjU1NTY5MjY5NDAwNmI1MzNmMmFlMzZjMTU4IDEwMDY0
NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1dlYkNv
cmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTQ5ODksNiArNDk4OSwxNCBAQAog
CQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIkKFdlYktp
dE91dHB1dERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTRmlsZVJlYWRl
clN5bmMuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZl
UGF0aD0iJChXZWJLaXRPdXRwdXREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNl
c1xKU0ZpbGVSZWFkZXJTeW5jLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCiAJ
CQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERl
cml2ZWRTb3VyY2VzXEpTRmlsZVN5c3RlbUNhbGxiYWNrLmNwcCINCiAJCQkJPg0KIAkJCQk8Rmls
ZUNvbmZpZ3VyYXRpb24NCkBAIC0zNzIwOSw2ICszNzIxNywxMCBAQAogCQkJCT4NCiAJCQk8L0Zp
bGU+DQogCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXEZpbGVFeGNlcHRpb24u
aCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XGh0bWxcRmlsZUxpc3QuY3BwIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KQEAgLTM3MjI1LDYgKzM3
MjM3LDE0IEBACiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXGh0bWxcRmlsZVJlYWRlclN5bmMuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJ
CTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxGaWxlUmVhZGVyU3luYy5oIg0KKwkJ
CQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxG
aWxlU3RyZWFtUHJveHkuY3BwIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KZGlmZiAtLWdpdCBhL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOWM2OTRkNzZjYjE3ODZiN2MyYjZmNzdi
YWJhMDQ0YTU5OTgzY2FjOC4uMzc3OTAyZDZhMDFmNmM0ZmIyODFmZWIyZmZmZjY2Yjc4MTVkNWJj
YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTcwNiw2
ICs3MDYsMTMgQEAKIAkJMkVBRkFGMEYxMEUyQUYyRDAwN0VEM0Q2IC8qIEJsb2IuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFQUZBRjBDMTBFMkFGMkQw
MDdFRDNENiAvKiBCbG9iLmggKi87IH07CiAJCTJFQjRCQ0QyMTIxRjAzRTMwMEVDNDg4NSAvKiBC
bG9iUmVzb3VyY2VIYW5kbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMkVCNEJDRDAxMjFGMDNFMzAwRUM0ODg1IC8qIEJsb2JSZXNvdXJjZUhhbmRs
ZS5jcHAgKi87IH07CiAJCTJFQjRCQ0QzMTIxRjAzRTMwMEVDNDg4NSAvKiBCbG9iUmVzb3VyY2VI
YW5kbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJF
QjRCQ0QxMTIxRjAzRTMwMEVDNDg4NSAvKiBCbG9iUmVzb3VyY2VIYW5kbGUuaCAqLzsgfTsKKwkJ
MkVCNEMxMUQxMjI1RkU0MjAwRUM0ODg1IC8qIEZpbGVFeGNlcHRpb24uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFQjRDMTFCMTIyNUZFNDIwMEVDNDg4
NSAvKiBGaWxlRXhjZXB0aW9uLmggKi87IH07CisJCTJFQjRDMTIyMTIyNUZFNjEwMEVDNDg4NSAv
KiBGaWxlUmVhZGVyU3luYy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAyRUI0QzExRjEyMjVGRTYxMDBFQzQ4ODUgLyogRmlsZVJlYWRlclN5bmMuY3Bw
ICovOyB9OworCQkyRUI0QzEyMzEyMjVGRTYxMDBFQzQ4ODUgLyogRmlsZVJlYWRlclN5bmMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFQjRDMTIwMTIy
NUZFNjEwMEVDNDg4NSAvKiBGaWxlUmVhZGVyU3luYy5oICovOyB9OworCQkyRUI0QzEzNTEyMjVG
RjVBMDBFQzQ4ODUgLyogSlNGaWxlRXhjZXB0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFQjRDMTMzMTIyNUZGNUEwMEVDNDg4NSAvKiBKU0Zp
bGVFeGNlcHRpb24uY3BwICovOyB9OworCQkyRUI0QzEzNjEyMjVGRjVBMDBFQzQ4ODUgLyogSlNG
aWxlRXhjZXB0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAyRUI0QzEzNDEyMjVGRjVBMDBFQzQ4ODUgLyogSlNGaWxlRXhjZXB0aW9uLmggKi87IH07
CisJCTJFQjRDMTM5MTIyNUZGNzAwMEVDNDg4NSAvKiBKU0ZpbGVSZWFkZXJTeW5jLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFQjRDMTM3MTIyNUZG
NzAwMEVDNDg4NSAvKiBKU0ZpbGVSZWFkZXJTeW5jLmNwcCAqLzsgfTsKKwkJMkVCNEMxM0ExMjI1
RkY3MDAwRUM0ODg1IC8qIEpTRmlsZVJlYWRlclN5bmMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFQjRDMTM4MTIyNUZGNzAwMEVDNDg4NSAvKiBKU0Zp
bGVSZWFkZXJTeW5jLmggKi87IH07CiAJCTJFQ0Y3QURDMTAxNjJCMzgwMDQyN0RFNyAvKiBKU0Vy
cm9yRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMkVDRjdBREExMDE2MkIzODAwNDI3REU3IC8qIEpTRXJyb3JFdmVudC5jcHAgKi87IH07CiAJ
CTJFQ0Y3QUREMTAxNjJCMzgwMDQyN0RFNyAvKiBKU0Vycm9yRXZlbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFQ0Y3QURCMTAxNjJCMzgwMDQyN0RF
NyAvKiBKU0Vycm9yRXZlbnQuaCAqLzsgfTsKIAkJMkVDRjdBRTExMDE2MkI1ODAwNDI3REU3IC8q
IEVycm9yRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMkVDRjdBREUxMDE2MkI1ODAwNDI3REU3IC8qIEVycm9yRXZlbnQuY3BwICovOyB9OwpA
QCAtNjUzMSw2ICs2NTM4LDE1IEBACiAJCTJFQUZBRjBEMTBFMkFGMkQwMDdFRDNENiAvKiBCbG9i
LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBCbG9iLmlkbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMkVCNEJDRDAxMjFGMDNFMzAwRUM0ODg1IC8qIEJsb2JSZXNvdXJjZUhhbmRs
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCbG9iUmVzb3VyY2VI
YW5kbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRUI0QkNEMTEyMUYwM0Uz
MDBFQzQ4ODUgLyogQmxvYlJlc291cmNlSGFuZGxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEJsb2JSZXNvdXJjZUhhbmRsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkyRUI0QzExQjEyMjVGRTQyMDBFQzQ4ODUgLyogRmlsZUV4Y2VwdGlvbi5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGaWxlRXhjZXB0aW9uLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTJFQjRDMTFDMTIyNUZFNDIwMEVDNDg4NSAvKiBGaWxlRXhjZXB0aW9u
LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBGaWxlRXhjZXB0aW9uLmlkbDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkVCNEMxMUYxMjI1RkU2MTAwRUM0ODg1IC8qIEZpbGVSZWFk
ZXJTeW5jLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZpbGVSZWFk
ZXJTeW5jLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkVCNEMxMjAxMjI1RkU2
MTAwRUM0ODg1IC8qIEZpbGVSZWFkZXJTeW5jLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEZpbGVSZWFkZXJTeW5jLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJF
QjRDMTIxMTIyNUZFNjEwMEVDNDg4NSAvKiBGaWxlUmVhZGVyU3luYy5pZGwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gRmlsZVJlYWRlclN5bmMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkyRUI0QzEzMzEyMjVGRjVBMDBFQzQ4ODUgLyogSlNGaWxlRXhjZXB0aW9uLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRmlsZUV4Y2VwdGlvbi5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJFQjRDMTM0MTIyNUZGNUEwMEVDNDg4NSAvKiBK
U0ZpbGVFeGNlcHRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNGaWxl
RXhjZXB0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJFQjRDMTM3MTIyNUZG
NzAwMEVDNDg4NSAvKiBKU0ZpbGVSZWFkZXJTeW5jLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTRmlsZVJlYWRlclN5bmMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkyRUI0QzEzODEyMjVGRjcwMDBFQzQ4ODUgLyogSlNGaWxlUmVhZGVyU3luYy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0ZpbGVSZWFkZXJTeW5jLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJFQ0Y3QURBMTAxNjJCMzgwMDQyN0RFNyAvKiBK
U0Vycm9yRXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNF
cnJvckV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkVDRjdBREIxMDE2
MkIzODAwNDI3REU3IC8qIEpTRXJyb3JFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKU0Vycm9yRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkVD
RjdBREUxMDE2MkI1ODAwNDI3REU3IC8qIEVycm9yRXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gRXJyb3JFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0xNDAzNiwxMiArMTQwNTIsMTcgQEAKIAkJCQlCQzE4ODFEOTBFMDhDNEVEMDAw
NDhDMTMgLyogRmlsZS5pZGwgKi8sCiAJCQkJMkUzQkMwQkIxMTdEM0E0RjAwQjk0MDlBIC8qIEZp
bGVFcnJvci5oICovLAogCQkJCTJFM0JDMEJDMTE3RDNBNEYwMEI5NDA5QSAvKiBGaWxlRXJyb3Iu
aWRsICovLAorCQkJCTJFQjRDMTFCMTIyNUZFNDIwMEVDNDg4NSAvKiBGaWxlRXhjZXB0aW9uLmgg
Ki8sCisJCQkJMkVCNEMxMUMxMjI1RkU0MjAwRUM0ODg1IC8qIEZpbGVFeGNlcHRpb24uaWRsICov
LAogCQkJCUJDREJCOEFCMEUwODhDQTUwMEM2MEZGNiAvKiBGaWxlTGlzdC5jcHAgKi8sCiAJCQkJ
QkNEQkI4QUEwRTA4OENBNTAwQzYwRkY2IC8qIEZpbGVMaXN0LmggKi8sCiAJCQkJQkMxODgxREMw
RTA4QzU0MzAwMDQ4QzEzIC8qIEZpbGVMaXN0LmlkbCAqLywKIAkJCQkyRTk0RjNDQjExOEI5MDhF
MDBCN0Y3NUQgLyogRmlsZVJlYWRlci5jcHAgKi8sCiAJCQkJMkU5NEYzQ0MxMThCOTA4RTAwQjdG
NzVEIC8qIEZpbGVSZWFkZXIuaCAqLywKIAkJCQkyRTk0RjQyNzExOTIwNUIzMDBCN0Y3NUQgLyog
RmlsZVJlYWRlci5pZGwgKi8sCisJCQkJMkVCNEMxMUYxMjI1RkU2MTAwRUM0ODg1IC8qIEZpbGVS
ZWFkZXJTeW5jLmNwcCAqLywKKwkJCQkyRUI0QzEyMDEyMjVGRTYxMDBFQzQ4ODUgLyogRmlsZVJl
YWRlclN5bmMuaCAqLywKKwkJCQkyRUI0QzEyMTEyMjVGRTYxMDBFQzQ4ODUgLyogRmlsZVJlYWRl
clN5bmMuaWRsICovLAogCQkJCTg5NTI1M0RBMTE2QzRFRjUwMENBQkYwMCAvKiBGaWxlU3RyZWFt
UHJveHkuY3BwICovLAogCQkJCTg5NTI1M0RCMTE2QzRFRjUwMENBQkYwMCAvKiBGaWxlU3RyZWFt
UHJveHkuaCAqLywKIAkJCQk4OTUyNTM1MDExNjQxQjM0MDBDQUJGMDAgLyogRmlsZVRocmVhZC5j
cHAgKi8sCkBAIC0xNDQyOCwxMCArMTQ0NDksMTQgQEAKIAkJCQlCQzAwRjAxMTBFMEExODk1MDBG
RDA0RTMgLyogSlNGaWxlLmggKi8sCiAJCQkJMkUzQkMwQzgxMTdEM0UwODAwQjk0MDlBIC8qIEpT
RmlsZUVycm9yLmNwcCAqLywKIAkJCQkyRTNCQzBDOTExN0QzRTA4MDBCOTQwOUEgLyogSlNGaWxl
RXJyb3IuaCAqLywKKwkJCQkyRUI0QzEzMzEyMjVGRjVBMDBFQzQ4ODUgLyogSlNGaWxlRXhjZXB0
aW9uLmNwcCAqLywKKwkJCQkyRUI0QzEzNDEyMjVGRjVBMDBFQzQ4ODUgLyogSlNGaWxlRXhjZXB0
aW9uLmggKi8sCiAJCQkJQkMwMEYwMTIwRTBBMTg5NTAwRkQwNEUzIC8qIEpTRmlsZUxpc3QuY3Bw
ICovLAogCQkJCUJDMDBGMDEzMEUwQTE4OTUwMEZEMDRFMyAvKiBKU0ZpbGVMaXN0LmggKi8sCiAJ
CQkJMkU5NEY0MzkxMTkyMDdEQTAwQjdGNzVEIC8qIEpTRmlsZVJlYWRlci5jcHAgKi8sCiAJCQkJ
MkU5NEY0M0ExMTkyMDdEQTAwQjdGNzVEIC8qIEpTRmlsZVJlYWRlci5oICovLAorCQkJCTJFQjRD
MTM3MTIyNUZGNzAwMEVDNDg4NSAvKiBKU0ZpbGVSZWFkZXJTeW5jLmNwcCAqLywKKwkJCQkyRUI0
QzEzODEyMjVGRjcwMDBFQzQ4ODUgLyogSlNGaWxlUmVhZGVyU3luYy5oICovLAogCQkJCTQ5RUVD
RUY0MTA1MDcwQzQwMDA5OUZBQiAvKiBKU0Zsb2F0MzJBcnJheS5jcHAgKi8sCiAJCQkJNDlFRUNF
RjUxMDUwNzBDNDAwMDk5RkFCIC8qIEpTRmxvYXQzMkFycmF5LmggKi8sCiAJCQkJQkM5N0U0MTAx
MDkxNTRGQTAwMTBEMzYxIC8qIEpTSFRNTEFsbENvbGxlY3Rpb24uY3BwICovLApAQCAtMjAzNjUs
NiArMjAzOTAsMTAgQEAKIAkJCQk4OTQ3QTgyQzEyMjIyQzQ3MDBEOTVGMkQgLyogSlNNZXRhZGF0
YUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQk4OTQ3QTgzQzEyMjIzNEY0MDBEOTVGMkQg
LyogTWV0YWRhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTg5NDdBODNEMTIyMjM0RjkwMEQ5NUYy
RCAvKiBNZXRhZGF0YUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKKwkJCQkyRUI0QzExRDEyMjVG
RTQyMDBFQzQ4ODUgLyogRmlsZUV4Y2VwdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJMkVCNEMx
MjMxMjI1RkU2MTAwRUM0ODg1IC8qIEZpbGVSZWFkZXJTeW5jLmggaW4gSGVhZGVycyAqLywKKwkJ
CQkyRUI0QzEzNjEyMjVGRjVBMDBFQzQ4ODUgLyogSlNGaWxlRXhjZXB0aW9uLmggaW4gSGVhZGVy
cyAqLywKKwkJCQkyRUI0QzEzQTEyMjVGRjcwMDBFQzQ4ODUgLyogSlNGaWxlUmVhZGVyU3luYy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vz
c2luZyA9IDA7CiAJCX07CkBAIC0yMjgyMSw2ICsyMjg1MCw5IEBACiAJCQkJODk2ODZDOUYxMjIy
NDRBMDAwNzZFQUE0IC8qIERPTUZpbGVQYXRoLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg5NDdB
ODI5MTIyMjJDNDcwMEQ5NUYyRCAvKiBKU01ldGFkYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTg5NDdBODJCMTIyMjJDNDcwMEQ5NUYyRCAvKiBKU01ldGFkYXRhQ2FsbGJhY2suY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJMkVCNEMxMjIxMjI1RkU2MTAwRUM0ODg1IC8qIEZpbGVSZWFkZXJTeW5j
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTJFQjRDMTM1MTIyNUZGNUEwMEVDNDg4NSAvKiBKU0Zp
bGVFeGNlcHRpb24uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMkVCNEMxMzkxMjI1RkY3MDAwRUM0
ODg1IC8qIEpTRmlsZVJlYWRlclN5bmMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVu
T25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2h0bWwvQmxvYi5pZGwgYi9XZWJDb3JlL2h0bWwvQmxvYi5pZGwKaW5kZXggZTA2M2I2
ZGUzNjkwODIwM2UwOTg2ODQwNGU3NDQ3ZTZiMDkwZTM4ZC4uYjIyMDIzM2RmNjFjMDkwZWY1MjFk
NjMxZjMyOTU5MmYzNjk5MGI5OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0Jsb2IuaWRsCisr
KyBiL1dlYkNvcmUvaHRtbC9CbG9iLmlkbApAQCAtMzAsNyArMzAsOSBAQAogCiBtb2R1bGUgaHRt
bCB7CiAKLSAgICBpbnRlcmZhY2UgQmxvYiB7CisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgTm9T
dGF0aWNUYWJsZXMKKyAgICBdIEJsb2IgewogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5z
aWduZWQgbG9uZyBsb25nIHNpemU7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJp
bmcgdHlwZTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0ZpbGUuaWRsIGIvV2ViQ29yZS9o
dG1sL0ZpbGUuaWRsCmluZGV4IDU2MjZjOGUwMzE1ZDJlZmQxNTYwMDlhNTlmNDhiM2FmZGZlNTcz
Y2UuLjE5Mzc5MDFiOTg3MjliYjY5YzJkMGU1OWRjZjYyMWE3NDQzMmY4MDcgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvaHRtbC9GaWxlLmlkbAorKysgYi9XZWJDb3JlL2h0bWwvRmlsZS5pZGwKQEAgLTI3
LDcgKzI3LDggQEAgbW9kdWxlIGh0bWwgewogCiAgICAgaW50ZXJmYWNlIFsKICAgICAgICAgR2Vu
ZXJhdGVOYXRpdmVDb252ZXJ0ZXIsCi0gICAgICAgIEdlbmVyYXRlVG9KUworICAgICAgICBHZW5l
cmF0ZVRvSlMsCisgICAgICAgIE5vU3RhdGljVGFibGVzCiAgICAgXSBGaWxlIDogQmxvYiB7CiAg
ICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgbmFtZTsKICNpZiBkZWZpbmVkKEVO
QUJMRV9ESVJFQ1RPUllfVVBMT0FEKSAmJiBFTkFCTEVfRElSRUNUT1JZX1VQTE9BRApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9odG1sL0ZpbGVFcnJvci5pZGwgYi9XZWJDb3JlL2h0bWwvRmlsZUVycm9y
LmlkbAppbmRleCAzNDIzZTcyMDE3NjdmOTAxZmI4NDdiNjVkYjMzNGI4NzRjY2Y1ZjllLi4yZTc5
OGFjNWJmNjI5YWMyMGZlNzQ5ZGRiOTQ2YmE0NjNiOWQ2NjdhIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2h0bWwvRmlsZUVycm9yLmlkbAorKysgYi9XZWJDb3JlL2h0bWwvRmlsZUVycm9yLmlkbApAQCAt
MzEsNiArMzEsNyBAQAogbW9kdWxlIGh0bWwgewogICAgIGludGVyZmFjZSBbCiAgICAgICAgIENv
bmRpdGlvbmFsPUJMT0J8RklMRV9XUklURVIsCisgICAgICAgIE5vU3RhdGljVGFibGVzLAogICAg
ICAgICBEb250Q2hlY2tFbnVtcwogICAgIF0gRmlsZUVycm9yIHsKICNpZiAhZGVmaW5lZChMQU5H
VUFHRV9PQkpFQ1RJVkVfQykKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9GaWxlRXhjZXB0aW9u
LmggYi9XZWJDb3JlL2h0bWwvRmlsZUV4Y2VwdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ0MTllYjdmYTIz
MmRjYzkwOWE3ZTU4OGNlZDIyZDg2YWNhNTEyYzAKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3Jl
L2h0bWwvRmlsZUV4Y2VwdGlvbi5oCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTAgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4K
KyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBGaWxlRXhjZXB0
aW9uX2gKKyNkZWZpbmUgRmlsZUV4Y2VwdGlvbl9oCisKKyNpZiBFTkFCTEUoQkxPQikgfHwgRU5B
QkxFKEZJTEVfV1JJVEVSKQorCisjaW5jbHVkZSAiRXhjZXB0aW9uQmFzZS5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIEZpbGVFeGNlcHRpb24gOiBwdWJsaWMgRXhjZXB0aW9uQmFz
ZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8RmlsZUV4Y2VwdGlvbj4gY3JlYXRl
KGNvbnN0IEV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24pCisgICAgeworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEZpbGVFeGNlcHRpb24oZGVzY3JpcHRpb24pKTsKKyAg
ICB9CisKKyAgICBzdGF0aWMgY29uc3QgaW50IEZpbGVFeGNlcHRpb25PZmZzZXQgPSAxMDA7Cisg
ICAgc3RhdGljIGNvbnN0IGludCBGaWxlRXhjZXB0aW9uTWF4ID0gMTk5OworCisgICAgZW51bSBF
dmVudEV4Y2VwdGlvbkNvZGUgeworICAgICAgICBVTlNQRUNJRklFRF9FVkVOVF9UWVBFX0VSUiA9
IEZpbGVFeGNlcHRpb25PZmZzZXQKKyAgICB9OworCitwcml2YXRlOgorICAgIEZpbGVFeGNlcHRp
b24oY29uc3QgRXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbikKKyAgICAgICAg
OiBFeGNlcHRpb25CYXNlKGRlc2NyaXB0aW9uKQorICAgIHsKKyAgICB9Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoQkxPQikgfHwgRU5BQkxFKEZJTEVf
V1JJVEVSKQorCisjZW5kaWYgLy8gRmlsZUV4Y2VwdGlvbl9oCisKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvaHRtbC9GaWxlRXhjZXB0aW9uLmlkbCBiL1dlYkNvcmUvaHRtbC9GaWxlRXhjZXB0aW9uLmlk
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4wYWMzNzk1YjQwNTk2NWU5ZDI4OWRkYzY5OTkzYmZlOTU5ZjMyNDUwCi0t
LSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9odG1sL0ZpbGVFeGNlcHRpb24uaWRsCkBAIC0wLDAg
KzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6
CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
KyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworbW9kdWxlIGh0bWwgeworICAgIGludGVyZmFjZSBbCisgICAgICAgIENvbmRpdGlv
bmFsPUJMT0J8RklMRV9XUklURVIsCisgICAgICAgIE5vU3RhdGljVGFibGVzLAorICAgICAgICBE
b250Q2hlY2tFbnVtcworICAgIF0gRmlsZUV4Y2VwdGlvbiB7CisKKyAgICAgICAgcmVhZG9ubHkg
YXR0cmlidXRlIHVuc2lnbmVkIHNob3J0ICAgY29kZTsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIERPTVN0cmluZyAgICAgICAgbmFtZTsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERP
TVN0cmluZyAgICAgICAgbWVzc2FnZTsKKworI2lmIGRlZmluZWQoTEFOR1VBR0VfSkFWQVNDUklQ
VCkgJiYgTEFOR1VBR0VfSkFWQVNDUklQVAorICAgICAgICAvLyBPdmVycmlkZSBpbiBhIE1vemls
bGEgY29tcGF0aWJsZSBmb3JtYXQKKyAgICAgICAgW0RvbnRFbnVtXSBET01TdHJpbmcgdG9TdHJp
bmcoKTsKKyNlbmRpZgorCisgICAgICAgIC8vIEZpbGVFeGNlcHRpb25Db2RlCisgICAgICAgIGNv
bnN0IHVuc2lnbmVkIHNob3J0IE5PVF9GT1VORF9FUlIgPSA4OworICAgICAgICBjb25zdCB1bnNp
Z25lZCBzaG9ydCBTRUNVUklUWV9FUlIgPSAxODsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgc2hv
cnQgQUJPUlRfRVJSID0gMjA7CisKKyAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgTk9UX1JF
QURBQkxFX0VSUiA9IDI0OworICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBFTkNPRElOR19F
UlIgPSAyNjsKKyAgICB9OworfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0ZpbGVMaXN0Lmlk
bCBiL1dlYkNvcmUvaHRtbC9GaWxlTGlzdC5pZGwKaW5kZXggNmJhZjNlMTg1N2M0ZTEzMDc4ZTE0
MDI3OWYyNmYwOWJjMDlkNzgzZS4uMGQwYjA0NmMzZWQ4YmVjYzY0YzFkMDhmZDA5NmUzODlmNDk0
OTU0NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0ZpbGVMaXN0LmlkbAorKysgYi9XZWJDb3Jl
L2h0bWwvRmlsZUxpc3QuaWRsCkBAIC0yNiw3ICsyNiw4IEBACiBtb2R1bGUgaHRtbCB7CiAKICAg
ICBpbnRlcmZhY2UgWwotICAgICAgICBIYXNJbmRleEdldHRlcgorICAgICAgICBIYXNJbmRleEdl
dHRlciwKKyAgICAgICAgTm9TdGF0aWNUYWJsZXMKICAgICBdIEZpbGVMaXN0IHsKICAgICAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbGVuZ3RoOwogICAgICAgICBGaWxlIGl0
ZW0oaW4gW0lzSW5kZXhdIHVuc2lnbmVkIGxvbmcgaW5kZXgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9odG1sL0ZpbGVSZWFkZXJTeW5jLmNwcCBiL1dlYkNvcmUvaHRtbC9GaWxlUmVhZGVyU3luYy5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNDIwOWU5ODVkYTM3YTBjODg3NzE1NmRkOGQ5YTExNWU0MzEwMWUxNQot
LS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvaHRtbC9GaWxlUmVhZGVyU3luYy5jcHAKQEAgLTAs
MCArMSwxNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBt
ZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKEJMT0IpCisKKyNp
bmNsdWRlICJGaWxlUmVhZGVyU3luYy5oIgorCisjaW5jbHVkZSAiQmFzZTY0LmgiCisjaW5jbHVk
ZSAiQmxvYi5oIgorI2luY2x1ZGUgIkZpbGVSZWFkZXIuaCIKKyNpbmNsdWRlICJSZXNvdXJjZVJl
cXVlc3QuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAi
VGV4dEVuY29kaW5nLmgiCisjaW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgorI2luY2x1
ZGUgIlRocmVhZGFibGVMb2FkZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitGaWxlUmVh
ZGVyU3luYzo6RmlsZVJlYWRlclN5bmMoKQorICAgIDogbV9yZWFkVHlwZShSZWFkRmlsZUFzQmlu
YXJ5U3RyaW5nKQorICAgICwgbV9leGNlcHRpb25Db2RlKDApCisgICAgLCBtX3Jlc3VsdCgiIikK
K3sKK30KKworY29uc3QgU2NyaXB0U3RyaW5nJiBGaWxlUmVhZGVyU3luYzo6cmVhZEFzQmluYXJ5
U3RyaW5nKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIEJs
b2IqIGJsb2IsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmICghYmxvYikKKyAgICAgICAg
cmV0dXJuIG1fcmVzdWx0OworCisgICAgbV9yZWFkVHlwZSA9IFJlYWRGaWxlQXNCaW5hcnlTdHJp
bmc7CisgICAgcmVhZChzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBibG9iKTsKKworICAgIGVjID0g
bV9leGNlcHRpb25Db2RlOworICAgIGlmIChlYykKKyAgICAgICAgbV9yZXN1bHQgPSAiIjsKKyAg
ICByZXR1cm4gbV9yZXN1bHQ7Cit9CisKK2NvbnN0IFNjcmlwdFN0cmluZyYgRmlsZVJlYWRlclN5
bmM6OnJlYWRBc1RleHQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCwgQmxvYiogYmxvYiwgY29uc3QgU3RyaW5nJiBlbmNvZGluZywgRXhjZXB0aW9uQ29kZSYg
ZWMpCit7CisgICAgaWYgKCFibG9iKQorICAgICAgICByZXR1cm4gbV9yZXN1bHQ7CisKKyAgICBt
X3JlYWRUeXBlID0gUmVhZEZpbGVBc1RleHQ7CisgICAgcmVhZChzY3JpcHRFeGVjdXRpb25Db250
ZXh0LCBibG9iKTsKKworICAgIGVjID0gbV9leGNlcHRpb25Db2RlOworICAgIGlmIChlYykKKyAg
ICAgICAgbV9yZXN1bHQgPSAiIjsKKyAgICBlbHNlCisgICAgICAgIGNvbnZlcnRUb1RleHQoZW5j
b2RpbmcpOworICAgIHJldHVybiBtX3Jlc3VsdDsKK30KKworY29uc3QgU2NyaXB0U3RyaW5nJiBG
aWxlUmVhZGVyU3luYzo6cmVhZEFzRGF0YVVSTChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0LCBCbG9iKiBibG9iLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAg
ICBpZiAoIWJsb2IpCisgICAgICAgIHJldHVybiBtX3Jlc3VsdDsKKworICAgIG1fcmVhZFR5cGUg
PSBSZWFkRmlsZUFzRGF0YVVSTDsKKyAgICByZWFkKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIGJs
b2IpOworCisgICAgZWMgPSBtX2V4Y2VwdGlvbkNvZGU7CisgICAgaWYgKGVjKQorICAgICAgICBt
X3Jlc3VsdCA9ICIiOworICAgIGVsc2UKKyAgICAgICAgRmlsZVJlYWRlcjo6Y29udmVydFRvRGF0
YVVSTChtX3Jhd0RhdGEsIGJsb2ItPnR5cGUoKSwgbV9yZXN1bHQpOworICAgIHJldHVybiBtX3Jl
c3VsdDsKK30KKwordm9pZCBGaWxlUmVhZGVyU3luYzo6cmVhZChTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBCbG9iKiBibG9iKQoreworICAgIC8vIFRoZSBi
bG9iIGlzIHJlYWQgYnkgcm91dGluZyB0aHJvdWdoIHRoZSByZXF1ZXN0IGhhbmRsaW5nIGxheWVy
IGdpdmVuIHRoZSBibG9iIHVybC4KKyAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChibG9iLT51
cmwoKSk7CisgICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9kKCJHRVQiKTsKKworICAgIFRocmVhZGFi
bGVMb2FkZXJPcHRpb25zIG9wdGlvbnM7CisgICAgb3B0aW9ucy5zZW5kTG9hZENhbGxiYWNrcyA9
IHRydWU7CisgICAgb3B0aW9ucy5zbmlmZkNvbnRlbnQgPSBmYWxzZTsKKyAgICBvcHRpb25zLmZv
cmNlUHJlZmxpZ2h0ID0gZmFsc2U7CisgICAgb3B0aW9ucy5hbGxvd0NyZWRlbnRpYWxzID0gdHJ1
ZTsKKyAgICBvcHRpb25zLmNyb3NzT3JpZ2luUmVxdWVzdFBvbGljeSA9IERlbnlDcm9zc09yaWdp
blJlcXVlc3RzOworCisgICAgVGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25v
dXNseShzY3JpcHRFeGVjdXRpb25Db250ZXh0LCByZXF1ZXN0LCAqdGhpcywgb3B0aW9ucyk7Cit9
CisKK3ZvaWQgRmlsZVJlYWRlclN5bmM6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSkKK3sKKyAgICBpZiAocmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUo
KSAhPSAyMDApCisgICAgICAgIHJhaXNlRXhjZXB0aW9uKHJlc3BvbnNlLmh0dHBTdGF0dXNDb2Rl
KCkpOworfQorCit2b2lkIEZpbGVSZWFkZXJTeW5jOjpkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFy
KiBkYXRhLCBpbnQgbGVuZ3RoUmVjZWl2ZWQpCit7CisgICAgc3dpdGNoIChtX3JlYWRUeXBlKSB7
CisgICAgY2FzZSBSZWFkRmlsZUFzQmluYXJ5U3RyaW5nOgorICAgICAgICBtX3Jlc3VsdCArPSBT
dHJpbmcoZGF0YSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGxlbmd0aFJlY2VpdmVkKSk7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgUmVhZEZpbGVBc1RleHQ6CisgICAgY2FzZSBSZWFkRmlsZUFz
RGF0YVVSTDoKKyAgICAgICAgbV9yYXdEYXRhLmFwcGVuZChkYXRhLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4obGVuZ3RoUmVjZWl2ZWQpKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorfQorCit2b2lkIEZpbGVSZWFkZXJT
eW5jOjpkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcpCit7Cit9CisKK3ZvaWQgRmlsZVJl
YWRlclN5bmM6OmRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpCit7CisgICAgLy8gVHJlYXQg
YXMgaW50ZXJuYWwgZXJyb3IuCisgICAgcmFpc2VFeGNlcHRpb24oNTAwKTsKK30KKwordm9pZCBG
aWxlUmVhZGVyU3luYzo6cmFpc2VFeGNlcHRpb24oaW50IGh0dHBTdGF0dXNDb2RlKQoreworICAg
IG1fZXhjZXB0aW9uQ29kZSA9IEZpbGVSZWFkZXI6Omh0dHBTdGF0dXNDb2RlVG9FeGNlcHRpb25D
b2RlKGh0dHBTdGF0dXNDb2RlKTsKK30KKwordm9pZCBGaWxlUmVhZGVyU3luYzo6Y29udmVydFRv
VGV4dChjb25zdCBTdHJpbmcmIGVuY29kaW5nKQoreworICAgIGlmICghbV9yYXdEYXRhLnNpemUo
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gRGVjb2RlIHRoZSBkYXRhLgorICAgIC8vIFRo
ZSBGaWxlIEFQSSBzcGVjIHNheXMgdGhhdCB3ZSBzaG91bGQgdXNlIHRoZSBzdXBwbGllZCBlbmNv
ZGluZyBpZiBpdCBpcyB2YWxpZC4gSG93ZXZlciwgd2UgY2hvb3NlIHRvIGlnbm9yZSB0aGlzCisg
ICAgLy8gcmVxdWlyZW1lbnQgaW4gb3JkZXIgdG8gYmUgY29uc2lzdGVudCB3aXRoIGhvdyBXZWJL
aXQgZGVjb2RlcyB0aGUgd2ViIGNvbnRlbnQ6IGFsd2F5cyBoYXMgdGhlIEJPTSBvdmVycmlkZSB0
aGUKKyAgICAvLyBwcm92aWRlZCBlbmNvZGluZy4gICAgIAorICAgIC8vIEZJWE1FOiBjb25zaWRl
ciBzdXBwb3J0aW5nIGluY3JlbWVudGFsIGRlY29kaW5nIHRvIGltcHJvdmUgdGhlIHBlcmYuCisg
ICAgUmVmUHRyPFRleHRSZXNvdXJjZURlY29kZXI+IGRlY29kZXIgPSBUZXh0UmVzb3VyY2VEZWNv
ZGVyOjpjcmVhdGUoInRleHQvcGxhaW4iLCBlbmNvZGluZy5pc0VtcHR5KCkgPyBVVEY4RW5jb2Rp
bmcoKSA6IFRleHRFbmNvZGluZyhlbmNvZGluZykpOworICAgIG1fcmVzdWx0ID0gZGVjb2Rlci0+
ZGVjb2RlKCZtX3Jhd0RhdGEuYXQoMCksIG1fcmF3RGF0YS5zaXplKCkpOworICAgIG1fcmVzdWx0
ICs9IGRlY29kZXItPmZsdXNoKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKyAKKyNl
bmRpZiAvLyBFTkFCTEUoQkxPQikKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9GaWxlUmVhZGVy
U3luYy5oIGIvV2ViQ29yZS9odG1sL0ZpbGVSZWFkZXJTeW5jLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTFlY2Fi
N2YwYjdjMGJkY2YwYjkxYzA4N2EwZmI4ZWI1MTliOWNjMwotLS0gL2Rldi9udWxsCisrKyBiL1dl
YkNvcmUvaHRtbC9GaWxlUmVhZGVyU3luYy5oCkBAIC0wLDAgKzEsOTggQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1
dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBGaWxl
UmVhZGVyU3luY19oCisjZGVmaW5lIEZpbGVSZWFkZXJTeW5jX2gKKworI2lmIEVOQUJMRShCTE9C
KQorCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5n
LmgiCisjaW5jbHVkZSAiU2NyaXB0U3RyaW5nLmgiCisjaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRl
ckNsaWVudC5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgQmxvYjsKK2NsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CisKK2NsYXNz
IEZpbGVSZWFkZXJTeW5jIDogcHVibGljIFJlZkNvdW50ZWQ8RmlsZVJlYWRlclN5bmM+LCBwdWJs
aWMgVGhyZWFkYWJsZUxvYWRlckNsaWVudCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQ
dHI8RmlsZVJlYWRlclN5bmM+IGNyZWF0ZSgpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IEZpbGVSZWFkZXJTeW5jKCkpOworICAgIH0KKworICAgIHZpcnR1YWwgfkZpbGVSZWFk
ZXJTeW5jKCkgeyB9CisKKyAgICBjb25zdCBTY3JpcHRTdHJpbmcmIHJlYWRBc0JpbmFyeVN0cmlu
ZyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgQmxvYiosIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBj
b25zdCBTY3JpcHRTdHJpbmcmIHJlYWRBc1RleHQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCwgQmxvYiogYmxvYiwgRXhjZXB0aW9uQ29kZSYgZWMpIHsKKyAg
ICAgICAgcmV0dXJuIHJlYWRBc1RleHQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgYmxvYiwgIiIs
IGVjKTsKKyAgICB9CisgICAgY29uc3QgU2NyaXB0U3RyaW5nJiByZWFkQXNUZXh0KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBCbG9iKiwgY29uc3QgU3RyaW5nJiBlbmNvZGluZywgRXhjZXB0aW9u
Q29kZSYpOworICAgIGNvbnN0IFNjcmlwdFN0cmluZyYgcmVhZEFzRGF0YVVSTChTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgQmxvYiosIEV4Y2VwdGlvbkNvZGUmKTsKKworICAgIC8vIFRocmVhZGFi
bGVMb2FkZXJDbGllbnQKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29u
c3QgY2hhciosIGludCk7CisgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcodW5zaWdu
ZWQgbG9uZyBpZGVudGlmaWVyKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChjb25zdCBSZXNv
dXJjZUVycm9yJik7CisKK3ByaXZhdGU6CisgICAgZW51bSBSZWFkVHlwZSB7CisgICAgICAgIFJl
YWRGaWxlQXNCaW5hcnlTdHJpbmcsCisgICAgICAgIFJlYWRGaWxlQXNUZXh0LAorICAgICAgICBS
ZWFkRmlsZUFzRGF0YVVSTAorICAgIH07CisKKyAgICBGaWxlUmVhZGVyU3luYygpOworICAgIAor
ICAgIHZvaWQgcmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgQmxvYiopOworICAgIHZvaWQg
cmFpc2VFeGNlcHRpb24oaW50IGh0dHBTdGF0dXNDb2RlKTsKKyAgICB2b2lkIGNvbnZlcnRUb1Rl
eHQoY29uc3QgU3RyaW5nJiBlbmNvZGluZyk7CisKKyAgICBSZWFkVHlwZSBtX3JlYWRUeXBlOwor
ICAgIEV4Y2VwdGlvbkNvZGUgbV9leGNlcHRpb25Db2RlOworCisgICAgLy8gU2VlIEZpbGVSZWFk
ZXIgZm9yIGNvbW1lbnQgYWJvdXQgd2h5IFNjcmlwdFN0cmluZyBpcyB1c2VkLgorICAgIFNjcmlw
dFN0cmluZyBtX3Jlc3VsdDsKKworICAgIC8vIFRoZSByYXcgZGF0YS4gV2UgaGF2ZSB0byBrZWVw
IHRyYWNrIG9mIGFsbCB0aGUgcmF3IGRhdGEgZm9yIGl0IHRvIGJlIGNvbnZlcnRlZCB0byB0ZXh0
IG9yIGRhdGEgVVJMIGRhdGEuCisgICAgVmVjdG9yPGNoYXI+IG1fcmF3RGF0YTsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShCTE9CKQorCisjZW5kaWYg
Ly8gRmlsZVJlYWRlclN5bmNfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0ZpbGVSZWFkZXJT
eW5jLmlkbCBiL1dlYkNvcmUvaHRtbC9GaWxlUmVhZGVyU3luYy5pZGwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzUw
MWEzMTAwZjhkZWI0NDBiZGJhNjk3MmFiM2Q0OGRmMWMwYzVkNgotLS0gL2Rldi9udWxsCisrKyBi
L1dlYkNvcmUvaHRtbC9GaWxlUmVhZGVyU3luYy5pZGwKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlz
dHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCittb2R1bGUg
aHRtbCB7CisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgQ29uZGl0aW9uYWw9QkxPQiwKKyAgICAg
ICAgQ2FuQmVDb25zdHJ1Y3RlZCwKKyAgICAgICAgTm9TdGF0aWNUYWJsZXMsCisgICAgXSBGaWxl
UmVhZGVyU3luYyB7CisgICAgICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LCBD
b252ZXJ0U2NyaXB0U3RyaW5nXSBET01TdHJpbmcgcmVhZEFzQmluYXJ5U3RyaW5nKGluIEJsb2Ig
YmxvYikKKyAgICAgICAgICAgIHJhaXNlcyhGaWxlRXhjZXB0aW9uKTsKKyAgICAgICAgW0NhbGxX
aXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIENvbnZlcnRTY3JpcHRTdHJpbmddIERPTVN0cmlu
ZyByZWFkQXNUZXh0KGluIEJsb2IgYmxvYiwgaW4gW09wdGlvbmFsXSBET01TdHJpbmcgZW5jb2Rp
bmcpCisgICAgICAgICAgICByYWlzZXMoRmlsZUV4Y2VwdGlvbik7CisgICAgICAgIFtDYWxsV2l0
aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LCBDb252ZXJ0U2NyaXB0U3RyaW5nXSBET01TdHJpbmcg
cmVhZEFzRGF0YVVSTChpbiBCbG9iIGJsb2IpCisgICAgICAgICAgICByYWlzZXMoRmlsZUV4Y2Vw
dGlvbik7CisgICAgfTsKK30KZGlmZiAtLWdpdCBhL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250
ZXh0LmlkbCBiL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmlkbAppbmRleCAyN2I0YjE0
YWMyNDM4NTZjMzcwMmJjNzNhNzAyMjBkMzY5MmViMDc1Li44MWE2ODFhODEyOGNjZWM4ZDY4NGRi
OTgzMDUyZDMzMDcyOThkODMyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29u
dGV4dC5pZGwKKysrIGIvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaWRsCkBAIC05Niw2
ICs5NiwxMiBAQCBtb2R1bGUgdGhyZWFkcyB7CiAgICAgICAgIGF0dHJpYnV0ZSBbSlNDQ3VzdG9t
R2V0dGVyLEVuYWJsZWRBdFJ1bnRpbWVdIFdlYlNvY2tldENvbnN0cnVjdG9yIFdlYlNvY2tldDsg
Ly8gVXNhYmxlIHdpdGggdGhlIG5ldyBvcGVyYXRvcgogI2VuZGlmCiAjZW5kaWYKKworI2lmIGRl
ZmluZWQoRU5BQkxFX0JMT0IpICYmIEVOQUJMRV9CTE9CCisgICAgICAgIGF0dHJpYnV0ZSBCbG9i
QnVpbGRlckNvbnN0cnVjdG9yIEJsb2JCdWlsZGVyOworICAgICAgICBhdHRyaWJ1dGUgRmlsZVJl
YWRlckNvbnN0cnVjdG9yIEZpbGVSZWFkZXI7CisgICAgICAgIGF0dHJpYnV0ZSBGaWxlUmVhZGVy
U3luY0NvbnN0cnVjdG9yIEZpbGVSZWFkZXJTeW5jOworI2VuZGlmCiAgICAgfTsKIAogfQo=
</data>
<flag name="review"
          id="54475"
          type_id="1"
          status="-"
          setter="levin"
    />
    <flag name="commit-queue"
          id="54476"
          type_id="3"
          status="-"
          setter="jianli"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65791</attachid>
            <date>2010-08-27 17:04:40 -0700</date>
            <delta_ts>2010-08-27 17:18:34 -0700</delta_ts>
            <desc>Proposed Patch</desc>
            <filename>44657_3</filename>
            <type>text/plain</type>
            <size>63713</size>
            <attacher name="Jian Li">jianli</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAxMDZlYTI1YjExM2Q2ODA4ZWY1MjZjZDYxZDBkNGM5YzcyZGQ0ZGY3Li45MDEyZjVm
NzAyZDkwM2RjOTFiNDcyNzQ5YzZkNWY4Y2RiMWRlMWI5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTQgQEAK
KzIwMTAtMDgtMjUgIEppYW4gTGkgIDxqaWFubGlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFN1cHBvcnQgRmlsZVJlYWRlclN5
bmMgaW4gd29ya2Vycy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTQ0NjU3CisKKyAgICAgICAgQWRkZWQgNCB0ZXN0IGZpbGVzIHRvIHRlc3QgRmlsZVJl
YWRlclN5bmMgaW4gd29ya2Vycy4KKworICAgICAgICAqIGZhc3QvZmlsZXMvcmVhZC1ibG9iLWFz
eW5jLmh0bWw6CisgICAgICAgICogZmFzdC9maWxlcy9yZWFkLWZpbGUtYXN5bmMuaHRtbDoKKyAg
ICAgICAgKiBmYXN0L2ZpbGVzL3Jlc291cmNlcy9yZWFkLWNvbW1vbi5qczoKKyAgICAgICAgKHJl
YWRCbG9iQXNCaW5hcnlTdHJpbmcpOgorICAgICAgICAocmVhZEJsb2JBc1RleHQpOgorICAgICAg
ICAocmVhZEJsb2JBc0RhdGFVUkwpOgorICAgICAgICAoX3JlYWRCbG9iQXNCaW5hcnlTdHJpbmdB
c3luYyk6CisgICAgICAgIChfcmVhZEJsb2JBc1RleHRBc3luYyk6CisgICAgICAgIChfcmVhZEJs
b2JBc0RhdGFVUkxBc3luYyk6CisgICAgICAgIChfcmVhZEJsb2JBc0JpbmFyeVN0cmluZ1N5bmMp
OgorICAgICAgICAoX3JlYWRCbG9iQXNUZXh0U3luYyk6CisgICAgICAgIChfcmVhZEJsb2JBc0Rh
dGFVUkxTeW5jKToKKyAgICAgICAgKGNyZWF0ZVJlYWRlclN5bmMpOgorICAgICAgICAqIGZhc3Qv
ZmlsZXMvcmVzb3VyY2VzL3JlYWQtYmxvYi10ZXN0LWNhc2VzLmpzOgorICAgICAgICAocnVuTmV4
dFRlc3QpOgorICAgICAgICAqIGZhc3QvZmlsZXMvcmVzb3VyY2VzL3JlYWQtZmlsZS10ZXN0LWNh
c2VzLmpzOgorICAgICAgICAocnVuTmV4dFRlc3QpOgorICAgICAgICAodGVzdE11bHRpcGxlUmVh
ZHMpOgorICAgICAgICAqIGZhc3QvZmlsZXMvcmVzb3VyY2VzL3NldHVwLWZvci1yZWFkLWNvbW1v
bi5qczoKKyAgICAgICAgKGxvZyk6CisgICAgICAgIChzdGFydFdvcmtlci53b3JrZXIub25tZXNz
YWdlKToKKyAgICAgICAgKHN0YXJ0V29ya2VyLndvcmtlci5vbmVycm9yKToKKyAgICAgICAgKHN0
YXJ0V29ya2VyKToKKyAgICAgICAgKiBmYXN0L2ZpbGVzL3dvcmtlcnMvcmVzb3VyY2VzL3dvcmtl
ci1yZWFkLWJsb2ItYXN5bmMuanM6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZmlsZXMvd29ya2Vy
cy9yZXNvdXJjZXMvd29ya2VyLXJlYWQtYmxvYi1zeW5jLmpzOiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2ZpbGVzL3dvcmtlcnMvcmVzb3VyY2VzL3dvcmtlci1yZWFkLWNvbW1vbi5qczogQWRkZWQu
CisgICAgICAgICogZmFzdC9maWxlcy93b3JrZXJzL3Jlc291cmNlcy93b3JrZXItcmVhZC1maWxl
LWFzeW5jLmpzOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZpbGVzL3dvcmtlcnMvcmVzb3VyY2Vz
L3dvcmtlci1yZWFkLWZpbGUtc3luYy5qczogQWRkZWQuCisgICAgICAgICogZmFzdC9maWxlcy93
b3JrZXJzL3dvcmtlci1yZWFkLWJsb2ItYXN5bmMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2ZpbGVzL3dvcmtlcnMvd29ya2VyLXJlYWQtYmxvYi1hc3luYy5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2ZpbGVzL3dvcmtlcnMvd29ya2VyLXJlYWQtYmxvYi1zeW5jLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9maWxlcy93b3JrZXJzL3dvcmtlci1y
ZWFkLWJsb2Itc3luYy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZpbGVzL3dvcmtlcnMv
d29ya2VyLXJlYWQtZmlsZS1hc3luYy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvZmlsZXMvd29ya2Vycy93b3JrZXItcmVhZC1maWxlLWFzeW5jLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvZmlsZXMvd29ya2Vycy93b3JrZXItcmVhZC1maWxlLXN5bmMtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZpbGVzL3dvcmtlcnMvd29ya2VyLXJlYWQtZmls
ZS1zeW5jLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhw
ZWN0YXRpb25zLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvU2tpcHBlZDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9tYWMtd2syL1NraXBwZWQ6CisgICAgICAgICogcGxhdGZvcm0vcXQvU2tpcHBl
ZDoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2tpcHBlZDoKKwogMjAxMC0wOC0yNSAgQ2hyaXMg
TWFycmluICA8Y21hcnJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZC4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZmlsZXMvcmVhZC1ibG9iLWFzeW5jLmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L2ZpbGVzL3JlYWQtYmxvYi1hc3luYy5odG1sCmluZGV4IDgwNzAxMjMyM2Zm
NjgxM2UyZDg0MWU4NmU0NTJmOTU4ZDI2ZmI5ZDYuLjZkMjY3MGEwNDEzMmI0NzExNTk5ZTY2YTcx
MDViNzA0M2VhMDNmYzcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZmlsZXMvcmVhZC1i
bG9iLWFzeW5jLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9maWxlcy9yZWFkLWJsb2ItYXN5
bmMuaHRtbApAQCAtMTYsNiArMTYsMTEgQEAgdmFyIHRlc3RGaWxlSW5mb0xpc3QgPSBbCiAgICAg
eyAnbmFtZSc6ICdmaWxlMycsICdwYXRoJzogJ3Jlc291cmNlcy9VVEY4LTMudHh0JyB9LAogXTsK
IAorZnVuY3Rpb24gaXNSZWFkQXNBc3luYygpCit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIGZ1
bmN0aW9uIHN0YXJ0VGVzdCh0ZXN0RmlsZXMpCiB7CiAgICAgcnVuTmV4dFRlc3QodGVzdEZpbGVz
KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZmlsZXMvcmVhZC1maWxlLWFzeW5jLmh0
bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVzL3JlYWQtZmlsZS1hc3luYy5odG1sCmluZGV4IGM2
MTRkZmRmYjUxZDdmOTgzOTdkN2E0OWE5NzVhMTgzOTdiNWZhNDYuLjU4YTRhMDdjZGZlNTJjNGQ0
MDM3YWQzODQyZGZlMDkxNmM2OWY1OGIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZmls
ZXMvcmVhZC1maWxlLWFzeW5jLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9maWxlcy9yZWFk
LWZpbGUtYXN5bmMuaHRtbApAQCAtMTksNiArMTksMTEgQEAgdmFyIHRlc3RGaWxlSW5mb0xpc3Qg
PSBbCiAgICAgeyAnbmFtZSc6ICdiaW5hcnktZmlsZScsICdwYXRoJzogJ3Jlc291cmNlcy9iaW5h
cnktZmlsZScgfSwKIF07CiAKK2Z1bmN0aW9uIGlzUmVhZEFzQXN5bmMoKQoreworICAgIHJldHVy
biB0cnVlOworfQorCiBmdW5jdGlvbiBzdGFydFRlc3QodGVzdEZpbGVzKQogewogICAgIHJ1bk5l
eHRUZXN0KHRlc3RGaWxlcyk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVzL3Jl
c291cmNlcy9yZWFkLWJsb2ItdGVzdC1jYXNlcy5qcyBiL0xheW91dFRlc3RzL2Zhc3QvZmlsZXMv
cmVzb3VyY2VzL3JlYWQtYmxvYi10ZXN0LWNhc2VzLmpzCmluZGV4IGMxNGZhNGU0NzkwZTdjYzg4
ZjFmZTY5MjA5MzkzOGI5YzhkMjQ0ZjcuLjc1NTBjMjdhMzRiZDExYjgwYWViYzczNTQ0MTRjYjE3
NGZhMmE2YjkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZmlsZXMvcmVzb3VyY2VzL3Jl
YWQtYmxvYi10ZXN0LWNhc2VzLmpzCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZmlsZXMvcmVzb3Vy
Y2VzL3JlYWQtYmxvYi10ZXN0LWNhc2VzLmpzCkBAIC0yMyw4ICsyMyw2IEBAIGZ1bmN0aW9uIHJ1
bk5leHRUZXN0KHRlc3RGaWxlcykKICAgICAgICAgc2VsZlt0ZXN0Q2FzZXNbdGVzdEluZGV4IC0g
MV1dKHRlc3RGaWxlcyk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbG9nKCJET05FIik7Ci0gICAg
ICAgIGlmICh3aW5kb3cgJiYgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwogICAgIH0KIH0KIApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9maWxlcy9yZXNvdXJjZXMvcmVhZC1jb21tb24uanMgYi9M
YXlvdXRUZXN0cy9mYXN0L2ZpbGVzL3Jlc291cmNlcy9yZWFkLWNvbW1vbi5qcwppbmRleCBlNWQy
N2YzOWY5MTNiYzlhNWNjNjBkYTJlNTQ1NTBmZGFlNzE5MmQ4Li4wM2JjYjZmYzNjMmRkZWNlYTlj
MWQ1NDJhZWE5ZTQxMWI4ZGVlN2RlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVz
L3Jlc291cmNlcy9yZWFkLWNvbW1vbi5qcworKysgYi9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVzL3Jl
c291cmNlcy9yZWFkLWNvbW1vbi5qcwpAQCAtOSwyNSArOSw5MiBAQCBmdW5jdGlvbiBidWlsZEJs
b2IoaXRlbXMsIGJ1aWxkZXIpCiAgICAgcmV0dXJuIGJ1aWxkZXIuZ2V0QmxvYigpOwogfQogCisv
LyBSZWFkcyBhIGJsb2IgZWl0aGVyIGFzeW5jaHJvbm91c2x5IG9yIHN5bmNocm9ub3VzbHkuCiBm
dW5jdGlvbiByZWFkQmxvYkFzQmluYXJ5U3RyaW5nKHRlc3RGaWxlcywgYmxvYikKIHsKLSAgICB2
YXIgcmVhZGVyID0gY3JlYXRlUmVhZGVyKHRlc3RGaWxlcyk7Ci0gICAgcmVhZGVyLnJlYWRBc0Jp
bmFyeVN0cmluZyhibG9iKQorICAgIGlmIChpc1JlYWRBc0FzeW5jKCkpCisgICAgICAgIF9yZWFk
QmxvYkFzQmluYXJ5U3RyaW5nQXN5bmModGVzdEZpbGVzLCBibG9iKTsKKyAgICBlbHNlCisgICAg
ICAgIF9yZWFkQmxvYkFzQmluYXJ5U3RyaW5nU3luYyh0ZXN0RmlsZXMsIGJsb2IpOwogfQogCiBm
dW5jdGlvbiByZWFkQmxvYkFzVGV4dCh0ZXN0RmlsZXMsIGJsb2IsIGVuY29kaW5nKQogewotICAg
IHZhciByZWFkZXIgPSBjcmVhdGVSZWFkZXIodGVzdEZpbGVzKTsKLSAgICByZWFkZXIucmVhZEFz
VGV4dChibG9iLCBlbmNvZGluZykKKyAgICBpZiAoaXNSZWFkQXNBc3luYygpKQorICAgICAgICBf
cmVhZEJsb2JBc1RleHRBc3luYyh0ZXN0RmlsZXMsIGJsb2IsIGVuY29kaW5nKTsKKyAgICBlbHNl
CisgICAgICAgIF9yZWFkQmxvYkFzVGV4dFN5bmModGVzdEZpbGVzLCBibG9iLCBlbmNvZGluZyk7
CiB9CiAKIGZ1bmN0aW9uIHJlYWRCbG9iQXNEYXRhVVJMKHRlc3RGaWxlcywgYmxvYikKIHsKLSAg
ICB2YXIgcmVhZGVyID0gY3JlYXRlUmVhZGVyKHRlc3RGaWxlcyk7CisgICAgaWYgKGlzUmVhZEFz
QXN5bmMoKSkKKyAgICAgICAgX3JlYWRCbG9iQXNEYXRhVVJMQXN5bmModGVzdEZpbGVzLCBibG9i
KTsKKyAgICBlbHNlCisgICAgICAgIF9yZWFkQmxvYkFzRGF0YVVSTFN5bmModGVzdEZpbGVzLCBi
bG9iKTsKK30KKworLy8gUmVhZHMgYSBibG9iIGFzeW5jaHJvbm91c2x5LgorZnVuY3Rpb24gX3Jl
YWRCbG9iQXNCaW5hcnlTdHJpbmdBc3luYyh0ZXN0RmlsZXMsIGJsb2IpCit7CisgICAgdmFyIHJl
YWRlciA9IGNyZWF0ZVJlYWRlckFzeW5jKHRlc3RGaWxlcyk7CisgICAgcmVhZGVyLnJlYWRBc0Jp
bmFyeVN0cmluZyhibG9iKQorfQorCitmdW5jdGlvbiBfcmVhZEJsb2JBc1RleHRBc3luYyh0ZXN0
RmlsZXMsIGJsb2IsIGVuY29kaW5nKQoreworICAgIHZhciByZWFkZXIgPSBjcmVhdGVSZWFkZXJB
c3luYyh0ZXN0RmlsZXMpOworICAgIHJlYWRlci5yZWFkQXNUZXh0KGJsb2IsIGVuY29kaW5nKQor
fQorCitmdW5jdGlvbiBfcmVhZEJsb2JBc0RhdGFVUkxBc3luYyh0ZXN0RmlsZXMsIGJsb2IpCit7
CisgICAgdmFyIHJlYWRlciA9IGNyZWF0ZVJlYWRlckFzeW5jKHRlc3RGaWxlcyk7CiAgICAgcmVh
ZGVyLnJlYWRBc0RhdGFVUkwoYmxvYikKIH0KIAotZnVuY3Rpb24gY3JlYXRlUmVhZGVyKHRlc3RG
aWxlcykKKy8vIFJlYWRzIGEgYmxvYiBzeW5jaHJvbm91c2x5LgorZnVuY3Rpb24gX3JlYWRCbG9i
QXNCaW5hcnlTdHJpbmdTeW5jKHRlc3RGaWxlcywgYmxvYikKK3sKKyAgICB2YXIgcmVhZGVyID0g
Y3JlYXRlUmVhZGVyU3luYygpOworICAgIHRyeSB7CisgICAgICAgIHZhciByZXN1bHQgPSByZWFk
ZXIucmVhZEFzQmluYXJ5U3RyaW5nKGJsb2IpOworICAgICAgICBsb2cocmVzdWx0KTsKKyAgICB9
IGNhdGNoIChlcnJvcikgeworICAgICAgICBsb2coIlJlY2VpdmVkIGV4Y2VwdGlvbiAiICsgZXJy
b3IuY29kZSArICI6ICIgKyBlcnJvci5uYW1lKTsKKyAgICB9CisKKyAgICBydW5OZXh0VGVzdCh0
ZXN0RmlsZXMpOworfQorCitmdW5jdGlvbiBfcmVhZEJsb2JBc1RleHRTeW5jKHRlc3RGaWxlcywg
YmxvYiwgZW5jb2RpbmcpCit7CisgICAgdmFyIHJlYWRlciA9IGNyZWF0ZVJlYWRlclN5bmMoKTsK
KyAgICB0cnkgeworICAgICAgICB2YXIgcmVzdWx0ID0gcmVhZGVyLnJlYWRBc1RleHQoYmxvYiwg
ZW5jb2RpbmcpOworICAgICAgICBsb2cocmVzdWx0KTsKKyAgICB9IGNhdGNoIChlcnJvcikgewor
ICAgICAgICBsb2coIlJlY2VpdmVkIGV4Y2VwdGlvbiAiICsgZXJyb3IuY29kZSArICI6ICIgKyBl
cnJvci5uYW1lKTsKKyAgICB9CisKKyAgICBydW5OZXh0VGVzdCh0ZXN0RmlsZXMpOworfQorCitm
dW5jdGlvbiBfcmVhZEJsb2JBc0RhdGFVUkxTeW5jKHRlc3RGaWxlcywgYmxvYikKK3sKKyAgICB2
YXIgcmVhZGVyID0gY3JlYXRlUmVhZGVyU3luYygpOworICAgIHRyeSB7CisgICAgICAgIHZhciBy
ZXN1bHQgPSByZWFkZXIucmVhZEFzRGF0YVVSTChibG9iKTsKKyAgICAgICAgbG9nKHJlc3VsdCk7
CisgICAgfSBjYXRjaCAoZXJyb3IpIHsKKyAgICAgICAgbG9nKCJSZWNlaXZlZCBleGNlcHRpb24g
IiArIGVycm9yLmNvZGUgKyAiOiAiICsgZXJyb3IubmFtZSk7CisgICAgfQorCisgICAgcnVuTmV4
dFRlc3QodGVzdEZpbGVzKTsKK30KKworLy8gQ3JlYXRlcyBhIHJlYWRlciBmb3IgYXN5bmNocm9u
b3VzIHJlYWRpbmcuCitmdW5jdGlvbiBjcmVhdGVSZWFkZXJBc3luYyh0ZXN0RmlsZXMpCiB7CiAg
ICAgdmFyIHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7CiAKQEAgLTQxLDYgKzEwOCwxMiBAQCBm
dW5jdGlvbiBjcmVhdGVSZWFkZXIodGVzdEZpbGVzKQogICAgIHJldHVybiByZWFkZXI7CiB9CiAK
Ky8vIENyZWF0ZXMgYSByZWFkZXIgZm9yIHN5bmNocm9ub3VzIHJlYWRpbmcuCitmdW5jdGlvbiBj
cmVhdGVSZWFkZXJTeW5jKCkKK3sKKyAgICByZXR1cm4gbmV3IEZpbGVSZWFkZXJTeW5jKCk7Cit9
CisKIGZ1bmN0aW9uIGxvZ0V2ZW50KGV2ZW50KQogewogICAgIGxvZygiUmVjZWl2ZWQgIiArIGV2
ZW50LnR5cGUgKyAiIGV2ZW50Iik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVz
L3Jlc291cmNlcy9yZWFkLWZpbGUtdGVzdC1jYXNlcy5qcyBiL0xheW91dFRlc3RzL2Zhc3QvZmls
ZXMvcmVzb3VyY2VzL3JlYWQtZmlsZS10ZXN0LWNhc2VzLmpzCmluZGV4IDUxOWRiNDE3M2QwOTAy
OGY4YjQwY2M3YmE3MmM2NDhjNDQxOTQxMzAuLmU4YjJjOWNhMDIwMTA3ZjQyZDlhNjI0M2RjYzVl
YjM1NTY0MWU2ODQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZmlsZXMvcmVzb3VyY2Vz
L3JlYWQtZmlsZS10ZXN0LWNhc2VzLmpzCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZmlsZXMvcmVz
b3VyY2VzL3JlYWQtZmlsZS10ZXN0LWNhc2VzLmpzCkBAIC0yNiw4ICsyNiw2IEBAIGZ1bmN0aW9u
IHJ1bk5leHRUZXN0KHRlc3RGaWxlcykKICAgICAgICAgc2VsZlt0ZXN0Q2FzZXNbdGVzdEluZGV4
IC0gMV1dKHRlc3RGaWxlcyk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbG9nKCJET05FIik7Ci0g
ICAgICAgIGlmICh3aW5kb3cgJiYgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwogICAgIH0KIH0KIApAQCAt
MTI5LDggKzEyNywxNCBAQCBmdW5jdGlvbiB0ZXN0UmVhZGluZ1VURjhFbmNvZGVkRmlsZUFzRGF0
YVVSTCh0ZXN0RmlsZXMpCiAKIGZ1bmN0aW9uIHRlc3RNdWx0aXBsZVJlYWRzKHRlc3RGaWxlcykK
IHsKKyAgICAvLyBUaGlzIHRlc3QgY2FzZSBpcyBvbmx5IGF2YWlsYWJsZSBmb3IgYXN5bmMgcmVh
ZGluZy4KKyAgICBpZiAoIWlzUmVhZEFzQXN5bmMoKSkgeworICAgICAgICBydW5OZXh0VGVzdCh0
ZXN0RmlsZXMpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgbG9nKCJUZXN0IGNhbGxp
bmcgbXVsdGlwbGUgcmVhZCBtZXRob2RzIGFuZCBvbmx5IGxhc3Qgb25lIGlzIHByb2Nlc3NlZCIp
OwotICAgIHZhciByZWFkZXIgPSBjcmVhdGVSZWFkZXIoKTsKKyAgICB2YXIgcmVhZGVyID0gY3Jl
YXRlUmVhZGVyQXN5bmMoKTsKICAgICByZWFkZXIucmVhZEFzQmluYXJ5U3RyaW5nKHRlc3RGaWxl
c1snVVRGOC1maWxlJ10pOwogICAgIHJlYWRlci5yZWFkQXNUZXh0KHRlc3RGaWxlc1snVVRGOC1m
aWxlJ10pOwogICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKHRlc3RGaWxlc1snVVRGOC1maWxlJ10p
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9maWxlcy9yZXNvdXJjZXMvc2V0dXAtZm9y
LXJlYWQtY29tbW9uLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9maWxlcy9yZXNvdXJjZXMvc2V0dXAt
Zm9yLXJlYWQtY29tbW9uLmpzCmluZGV4IDYzOThhN2MxYjA2YjlmYzc1ZGVlM2E1MWQ2N2I3MjE3
ZGI1ODRmMTYuLjljYmMyYjRiNWUxYmNiYTI0NzViNTcxYzE2NGNhZGFlMGJlNDUzOWYgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZmlsZXMvcmVzb3VyY2VzL3NldHVwLWZvci1yZWFkLWNv
bW1vbi5qcworKysgYi9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVzL3Jlc291cmNlcy9zZXR1cC1mb3It
cmVhZC1jb21tb24uanMKQEAgLTEsNiArMSwxMCBAQAogZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCiB7
CiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKS5hcHBlbmRDaGlsZChkb2N1
bWVudC5jcmVhdGVUZXh0Tm9kZShtZXNzYWdlICsgIlxuIikpOworICAgIGlmIChtZXNzYWdlID09
ICJET05FIikgeworICAgICAgICBpZiAod2luZG93ICYmIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAg
ICB9CiB9CiAKIGZ1bmN0aW9uIG9uSW5wdXRGaWxlQ2hhbmdlKHRlc3RGaWxlSW5mb0xpc3QpCkBA
IC0yMCwzICsyNCwyMyBAQCBmdW5jdGlvbiBydW5UZXN0cyh0ZXN0RmlsZUluZm9MaXN0KQogICAg
IGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKDEwLCAxMCk7CiAgICAgZXZlbnRTZW5kZXIubW91c2VV
cCgpOwogfQorCitmdW5jdGlvbiBzdGFydFdvcmtlcih0ZXN0RmlsZXMsIHdvcmtlclNjcmlwdFVS
TCkKK3sKKyAgICB2YXIgd29ya2VyID0gbmV3IFdvcmtlcih3b3JrZXJTY3JpcHRVUkwpOworICAg
IHdvcmtlci5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIGxvZyhl
dmVudC5kYXRhKTsKKyAgICAgICAgaWYgKGV2ZW50LmRhdGEgPT0gIkRPTkUiKSB7CisgICAgICAg
ICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgfQorICAgIH0KKyAgICB3
b3JrZXIub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgbG9nKCJSZWNl
aXZlZCBlcnJvciBmcm9tIHdvcmtlcjogIiArIGV2ZW50Lm1lc3NhZ2UpOworICAgICAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIubm90aWZ5RG9uZSgpOworICAgIH0KKyAgICB3b3JrZXIucG9zdE1lc3NhZ2UodGVzdEZp
bGVzKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZmlsZXMvd29ya2Vycy9yZXNv
dXJjZXMvd29ya2VyLXJlYWQtYmxvYi1hc3luYy5qcyBiL0xheW91dFRlc3RzL2Zhc3QvZmlsZXMv
d29ya2Vycy9yZXNvdXJjZXMvd29ya2VyLXJlYWQtYmxvYi1hc3luYy5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
OTU1MTkyYWY5OGM4YzVjODFjZjEzNTI1ZTRhM2MzYWU5MDQ1OGNlCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9maWxlcy93b3JrZXJzL3Jlc291cmNlcy93b3JrZXItcmVhZC1i
bG9iLWFzeW5jLmpzCkBAIC0wLDAgKzEsNyBAQAoraW1wb3J0U2NyaXB0cygiLi4vLi4vcmVzb3Vy
Y2VzL3JlYWQtY29tbW9uLmpzIiwgIi4uLy4uL3Jlc291cmNlcy9yZWFkLWJsb2ItdGVzdC1jYXNl
cy5qcyIsICJ3b3JrZXItcmVhZC1jb21tb24uanMiKTsKKworZnVuY3Rpb24gaXNSZWFkQXNBc3lu
YygpCit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvZmlsZXMvd29ya2Vycy9yZXNvdXJjZXMvd29ya2VyLXJlYWQtYmxvYi1zeW5jLmpzIGIvTGF5
b3V0VGVzdHMvZmFzdC9maWxlcy93b3JrZXJzL3Jlc291cmNlcy93b3JrZXItcmVhZC1ibG9iLXN5
bmMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMWU5ZTZhNWQ1ZTg4MzkwOGZiZGYzNDY1ODk5ZDUzZTUzZDM3ZDY1
YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZmlsZXMvd29ya2Vycy9yZXNv
dXJjZXMvd29ya2VyLXJlYWQtYmxvYi1zeW5jLmpzCkBAIC0wLDAgKzEsNiBAQAoraW1wb3J0U2Ny
aXB0cygiLi4vLi4vcmVzb3VyY2VzL3JlYWQtY29tbW9uLmpzIiwgIi4uLy4uL3Jlc291cmNlcy9y
ZWFkLWJsb2ItdGVzdC1jYXNlcy5qcyIsICJ3b3JrZXItcmVhZC1jb21tb24uanMiKTsKKworZnVu
Y3Rpb24gaXNSZWFkQXNBc3luYygpCit7CisgICAgcmV0dXJuIGZhbHNlOworfQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9maWxlcy93b3JrZXJzL3Jlc291cmNlcy93b3JrZXItcmVhZC1j
b21tb24uanMgYi9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVzL3dvcmtlcnMvcmVzb3VyY2VzL3dvcmtl
ci1yZWFkLWNvbW1vbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNzA4MTkyMjU4ZjI4NzRiNjg1Y2FjNzM5NDI2
NjU0NjM3ZDBlODg5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9maWxlcy93
b3JrZXJzL3Jlc291cmNlcy93b3JrZXItcmVhZC1jb21tb24uanMKQEAgLTAsMCArMSwxMSBAQAor
ZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCit7CisgICAgcG9zdE1lc3NhZ2UobWVzc2FnZSk7Cit9CisK
K29ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2ZW50KQoreworICAgIHZhciB0ZXN0RmlsZXMgPSBldmVu
dC5kYXRhOworICAgIGxvZygiUmVjZWl2ZWQgZmlsZXMgaW4gd29ya2VyIik7CisgICAgcnVuTmV4
dFRlc3QodGVzdEZpbGVzKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZmlsZXMv
d29ya2Vycy9yZXNvdXJjZXMvd29ya2VyLXJlYWQtZmlsZS1hc3luYy5qcyBiL0xheW91dFRlc3Rz
L2Zhc3QvZmlsZXMvd29ya2Vycy9yZXNvdXJjZXMvd29ya2VyLXJlYWQtZmlsZS1hc3luYy5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4zMjcxZTA4Y2M0ZjI5ODAzOThlNDI2MjY0NjRkYTk0ZjFlYmE1NjQ2Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9maWxlcy93b3JrZXJzL3Jlc291cmNlcy93
b3JrZXItcmVhZC1maWxlLWFzeW5jLmpzCkBAIC0wLDAgKzEsNyBAQAoraW1wb3J0U2NyaXB0cygi
Li4vLi4vcmVzb3VyY2VzL3JlYWQtY29tbW9uLmpzIiwgIi4uLy4uL3Jlc291cmNlcy9yZWFkLWZp
bGUtdGVzdC1jYXNlcy5qcyIsICJ3b3JrZXItcmVhZC1jb21tb24uanMiKTsKKworZnVuY3Rpb24g
aXNSZWFkQXNBc3luYygpCit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvZmlsZXMvd29ya2Vycy9yZXNvdXJjZXMvd29ya2VyLXJlYWQtZmlsZS1z
eW5jLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9maWxlcy93b3JrZXJzL3Jlc291cmNlcy93b3JrZXIt
cmVhZC1maWxlLXN5bmMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjVmNzZlYjI4NDBkMGVkN2RiMDI1ZTZjNGVh
Y2VjOTdkOWFjYWFmOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZmlsZXMv
d29ya2Vycy9yZXNvdXJjZXMvd29ya2VyLXJlYWQtZmlsZS1zeW5jLmpzCkBAIC0wLDAgKzEsNiBA
QAoraW1wb3J0U2NyaXB0cygiLi4vLi4vcmVzb3VyY2VzL3JlYWQtY29tbW9uLmpzIiwgIi4uLy4u
L3Jlc291cmNlcy9yZWFkLWZpbGUtdGVzdC1jYXNlcy5qcyIsICJ3b3JrZXItcmVhZC1jb21tb24u
anMiKTsKKworZnVuY3Rpb24gaXNSZWFkQXNBc3luYygpCit7CisgICAgcmV0dXJuIGZhbHNlOwor
fQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9maWxlcy93b3JrZXJzL3dvcmtlci1yZWFk
LWJsb2ItYXN5bmMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9maWxlcy93b3JrZXJz
L3dvcmtlci1yZWFkLWJsb2ItYXN5bmMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZjZmVkOTBj
Yjk4YzA1ZTFlMWMwNjVkOTU4ZGFiZTQ4NDlmOGVjNjIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2ZpbGVzL3dvcmtlcnMvd29ya2VyLXJlYWQtYmxvYi1hc3luYy1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwxMjQgQEAKKworUmVjZWl2ZWQgZmlsZXMgaW4gd29ya2VyCitUZXN0
IHJlYWRpbmcgYSBibG9iIGNvbnRhaW5pbmcgbm9uLWV4aXN0ZW50IGZpbGUKK3JlYWR5U3RhdGU6
IDAKK1JlY2VpdmVkIGVycm9yIGV2ZW50CityZWFkeVN0YXRlOiAyCitlcnJvciBjb2RlOiA4CitS
ZWNlaXZlZCBsb2FkZW5kIGV2ZW50CitUZXN0IHJlYWRpbmcgYSBibG9iIGNvbnRhaW5pbmcgZXhp
c3RlbnQgYW5kIG5vbi1leGlzdGVudCBmaWxlCityZWFkeVN0YXRlOiAwCitSZWNlaXZlZCBlcnJv
ciBldmVudAorcmVhZHlTdGF0ZTogMgorZXJyb3IgY29kZTogOAorUmVjZWl2ZWQgbG9hZGVuZCBl
dmVudAorVGVzdCByZWFkaW5nIGEgYmxvYiBjb250YWluaW5nIGVtcHR5IGZpbGUKK3JlYWR5U3Rh
dGU6IDAKK1JlY2VpdmVkIGxvYWRzdGFydCBldmVudAorcmVhZHlTdGF0ZTogMQorUmVjZWl2ZWQg
bG9hZCBldmVudAorcmVhZHlTdGF0ZTogMgorcmVzdWx0IHNpemU6IDAKK3Jlc3VsdDogCitSZWNl
aXZlZCBsb2FkZW5kIGV2ZW50CitUZXN0IHJlYWRpbmcgYSBibG9iIGNvbnRhaW5pbmcgZW1wdHkg
dGV4dAorcmVhZHlTdGF0ZTogMAorUmVjZWl2ZWQgbG9hZHN0YXJ0IGV2ZW50CityZWFkeVN0YXRl
OiAxCitSZWNlaXZlZCBsb2FkIGV2ZW50CityZWFkeVN0YXRlOiAyCityZXN1bHQgc2l6ZTogMAor
cmVzdWx0OiAKK1JlY2VpdmVkIGxvYWRlbmQgZXZlbnQKK1Rlc3QgcmVhZGluZyBhIGJsb2IgY29u
dGFpbmluZyBlbXB0eSBmaWxlcyBhbmQgZW1wdHkgdGV4dHMKK3JlYWR5U3RhdGU6IDAKK1JlY2Vp
dmVkIGxvYWRzdGFydCBldmVudAorcmVhZHlTdGF0ZTogMQorUmVjZWl2ZWQgbG9hZCBldmVudAor
cmVhZHlTdGF0ZTogMgorcmVzdWx0IHNpemU6IDAKK3Jlc3VsdDogCitSZWNlaXZlZCBsb2FkZW5k
IGV2ZW50CitUZXN0IHJlYWRpbmcgYSBibG9iIGNvbnRhaW5pbmcgc2luZ2xlIGZpbGUKK3JlYWR5
U3RhdGU6IDAKK1JlY2VpdmVkIGxvYWRzdGFydCBldmVudAorcmVhZHlTdGF0ZTogMQorUmVjZWl2
ZWQgbG9hZCBldmVudAorcmVhZHlTdGF0ZTogMgorcmVzdWx0IHNpemU6IDUKK3Jlc3VsdDogSGVs
bG8KK1JlY2VpdmVkIGxvYWRlbmQgZXZlbnQKK1Rlc3QgcmVhZGluZyBhIGJsb2IgY29udGFpbmlu
ZyBzaW5nbGUgdGV4dAorcmVhZHlTdGF0ZTogMAorUmVjZWl2ZWQgbG9hZHN0YXJ0IGV2ZW50City
ZWFkeVN0YXRlOiAxCitSZWNlaXZlZCBsb2FkIGV2ZW50CityZWFkeVN0YXRlOiAyCityZXN1bHQg
c2l6ZTogNQorcmVzdWx0OiBGaXJzdAorUmVjZWl2ZWQgbG9hZGVuZCBldmVudAorVGVzdCByZWFk
aW5nIGEgYmxvYiBjb250YWluaW5nIHNsaWNlZCBmaWxlCityZWFkeVN0YXRlOiAwCitSZWNlaXZl
ZCBsb2Fkc3RhcnQgZXZlbnQKK3JlYWR5U3RhdGU6IDEKK1JlY2VpdmVkIGxvYWQgZXZlbnQKK3Jl
YWR5U3RhdGU6IDIKK3Jlc3VsdCBzaXplOiA1CityZXN1bHQ6IG9uZGVyCitSZWNlaXZlZCBsb2Fk
ZW5kIGV2ZW50CitUZXN0IHJlYWRpbmcgYSBibG9iIGNvbnRhaW5pbmcgc2xpY2VkIHRleHQKK3Jl
YWR5U3RhdGU6IDAKK1JlY2VpdmVkIGxvYWRzdGFydCBldmVudAorcmVhZHlTdGF0ZTogMQorUmVj
ZWl2ZWQgbG9hZCBldmVudAorcmVhZHlTdGF0ZTogMgorcmVzdWx0IHNpemU6IDQKK3Jlc3VsdDog
aXJzdAorUmVjZWl2ZWQgbG9hZGVuZCBldmVudAorVGVzdCByZWFkaW5nIGEgYmxvYiBjb250YWlu
aW5nIG11bHRpcGxlIGZpbGVzCityZWFkeVN0YXRlOiAwCitSZWNlaXZlZCBsb2Fkc3RhcnQgZXZl
bnQKK3JlYWR5U3RhdGU6IDEKK1JlY2VpdmVkIGxvYWQgZXZlbnQKK3JlYWR5U3RhdGU6IDIKK3Jl
c3VsdCBzaXplOiAxOQorcmVzdWx0OiBIZWxsb1dvbmRlcmZ1bFdvcmxkCitSZWNlaXZlZCBsb2Fk
ZW5kIGV2ZW50CitUZXN0IHJlYWRpbmcgYSBibG9iIGNvbnRhaW5pbmcgbXVsdGlwbGUgdGV4dHMK
K3JlYWR5U3RhdGU6IDAKK1JlY2VpdmVkIGxvYWRzdGFydCBldmVudAorcmVhZHlTdGF0ZTogMQor
UmVjZWl2ZWQgbG9hZCBldmVudAorcmVhZHlTdGF0ZTogMgorcmVzdWx0IHNpemU6IDE2CityZXN1
bHQ6IEZpcnN0U2Vjb25kVGhpcmQKK1JlY2VpdmVkIGxvYWRlbmQgZXZlbnQKK1Rlc3QgcmVhZGlu
ZyBhIGh5YnJpZCBibG9iCityZWFkeVN0YXRlOiAwCitSZWNlaXZlZCBsb2Fkc3RhcnQgZXZlbnQK
K3JlYWR5U3RhdGU6IDEKK1JlY2VpdmVkIGxvYWQgZXZlbnQKK3JlYWR5U3RhdGU6IDIKK3Jlc3Vs
dCBzaXplOiAzNQorcmVzdWx0OiBGaXJzdEhlbGxvU2Vjb25kV29uZGVyZnVsV29ybGRUaGlyZAor
UmVjZWl2ZWQgbG9hZGVuZCBldmVudAorVGVzdCByZWFkaW5nIGEgc2xpY2VkIGh5YnJpZCBibG9i
CityZWFkeVN0YXRlOiAwCitSZWNlaXZlZCBsb2Fkc3RhcnQgZXZlbnQKK3JlYWR5U3RhdGU6IDEK
K1JlY2VpdmVkIGxvYWQgZXZlbnQKK3JlYWR5U3RhdGU6IDIKK3Jlc3VsdCBzaXplOiAxMgorcmVz
dWx0OiBsbG9TZWNvbmRXb24KK1JlY2VpdmVkIGxvYWRlbmQgZXZlbnQKK1Rlc3QgcmVhZGluZyBh
IHRyaXBsZS1zbGljZWQgaHlicmlkIGJsb2IKK3JlYWR5U3RhdGU6IDAKK1JlY2VpdmVkIGxvYWRz
dGFydCBldmVudAorcmVhZHlTdGF0ZTogMQorUmVjZWl2ZWQgbG9hZCBldmVudAorcmVhZHlTdGF0
ZTogMgorcmVzdWx0IHNpemU6IDMwCityZXN1bHQ6IG9uZFdvbmRlcmZ1bFdvcmxkVGhpcmRGb29s
b1NlYworUmVjZWl2ZWQgbG9hZGVuZCBldmVudAorRE9ORQorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2ZpbGVzL3dvcmtlcnMvd29ya2VyLXJlYWQtYmxvYi1hc3luYy5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9maWxlcy93b3JrZXJzL3dvcmtlci1yZWFkLWJsb2ItYXN5bmMuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40MjJjZjYwYWE2N2JhNDJkZDI4ZjU2YzVjNThmYWZlYjBlMzY1ZDg4Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9maWxlcy93b3JrZXJzL3dvcmtlci1yZWFk
LWJsb2ItYXN5bmMuaHRtbApAQCAtMCwwICsxLDI5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorPGJvZHk+Cis8aW5wdXQgdHlwZT0iZmlsZSIgbmFtZT0iZmlsZSIgaWQ9ImZpbGUiIG9uY2hh
bmdlPSJvbklucHV0RmlsZUNoYW5nZSh0ZXN0RmlsZUluZm9MaXN0KSIgbXVsdGlwbGU+Cis8cHJl
IGlkPSdjb25zb2xlJz48L3ByZT4KKworPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zZXR1cC1m
b3ItcmVhZC1jb21tb24uanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK3ZhciB0ZXN0RmlsZUluZm9M
aXN0ID0gWworICAgIHsgJ25hbWUnOiAnbm9uLWV4aXN0ZW50JywgJ3BhdGgnOiAnLi4vcmVzb3Vy
Y2VzL25vbi1leGlzdGVudCcgfSwKKyAgICB7ICduYW1lJzogJ2VtcHR5LWZpbGUnLCAncGF0aCc6
ICcuLi9yZXNvdXJjZXMvZW1wdHktZmlsZScgfSwKKyAgICB7ICduYW1lJzogJ2ZpbGUxJywgJ3Bh
dGgnOiAnLi4vcmVzb3VyY2VzL1VURjgudHh0JyB9LAorICAgIHsgJ25hbWUnOiAnZmlsZTInLCAn
cGF0aCc6ICcuLi9yZXNvdXJjZXMvVVRGOC0yLnR4dCcgfSwKKyAgICB7ICduYW1lJzogJ2ZpbGUz
JywgJ3BhdGgnOiAnLi4vcmVzb3VyY2VzL1VURjgtMy50eHQnIH0sCitdOworCitmdW5jdGlvbiBz
dGFydFRlc3QodGVzdEZpbGVzKQoreworICAgIHN0YXJ0V29ya2VyKHRlc3RGaWxlcywgInJlc291
cmNlcy93b3JrZXItcmVhZC1ibG9iLWFzeW5jLmpzIik7Cit9CisKK2lmICh3aW5kb3cuZXZlbnRT
ZW5kZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIHdpbmRvdy5vbmxvYWQgPSBm
dW5jdGlvbigpIHsgcnVuVGVzdHModGVzdEZpbGVJbmZvTGlzdCk7IH0KK30KKzwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9maWxlcy93b3Jr
ZXJzL3dvcmtlci1yZWFkLWJsb2Itc3luYy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0
L2ZpbGVzL3dvcmtlcnMvd29ya2VyLXJlYWQtYmxvYi1zeW5jLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi43N2Y1NDE0OTM1ZTNlYzlmMTA0YzYzMTllYzYyNzQyY2ZmNmUzM2M1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9maWxlcy93b3JrZXJzL3dvcmtlci1yZWFkLWJsb2It
c3luYy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzMiBAQAorCitSZWNlaXZlZCBmaWxlcyBpbiB3
b3JrZXIKK1Rlc3QgcmVhZGluZyBhIGJsb2IgY29udGFpbmluZyBub24tZXhpc3RlbnQgZmlsZQor
UmVjZWl2ZWQgZXhjZXB0aW9uIDg6IE5PVF9GT1VORF9FUlIKK1Rlc3QgcmVhZGluZyBhIGJsb2Ig
Y29udGFpbmluZyBleGlzdGVudCBhbmQgbm9uLWV4aXN0ZW50IGZpbGUKK1JlY2VpdmVkIGV4Y2Vw
dGlvbiA4OiBOT1RfRk9VTkRfRVJSCitUZXN0IHJlYWRpbmcgYSBibG9iIGNvbnRhaW5pbmcgZW1w
dHkgZmlsZQorCitUZXN0IHJlYWRpbmcgYSBibG9iIGNvbnRhaW5pbmcgZW1wdHkgdGV4dAorCitU
ZXN0IHJlYWRpbmcgYSBibG9iIGNvbnRhaW5pbmcgZW1wdHkgZmlsZXMgYW5kIGVtcHR5IHRleHRz
CisKK1Rlc3QgcmVhZGluZyBhIGJsb2IgY29udGFpbmluZyBzaW5nbGUgZmlsZQorSGVsbG8KK1Rl
c3QgcmVhZGluZyBhIGJsb2IgY29udGFpbmluZyBzaW5nbGUgdGV4dAorRmlyc3QKK1Rlc3QgcmVh
ZGluZyBhIGJsb2IgY29udGFpbmluZyBzbGljZWQgZmlsZQorb25kZXIKK1Rlc3QgcmVhZGluZyBh
IGJsb2IgY29udGFpbmluZyBzbGljZWQgdGV4dAoraXJzdAorVGVzdCByZWFkaW5nIGEgYmxvYiBj
b250YWluaW5nIG11bHRpcGxlIGZpbGVzCitIZWxsb1dvbmRlcmZ1bFdvcmxkCitUZXN0IHJlYWRp
bmcgYSBibG9iIGNvbnRhaW5pbmcgbXVsdGlwbGUgdGV4dHMKK0ZpcnN0U2Vjb25kVGhpcmQKK1Rl
c3QgcmVhZGluZyBhIGh5YnJpZCBibG9iCitGaXJzdEhlbGxvU2Vjb25kV29uZGVyZnVsV29ybGRU
aGlyZAorVGVzdCByZWFkaW5nIGEgc2xpY2VkIGh5YnJpZCBibG9iCitsbG9TZWNvbmRXb24KK1Rl
c3QgcmVhZGluZyBhIHRyaXBsZS1zbGljZWQgaHlicmlkIGJsb2IKK29uZFdvbmRlcmZ1bFdvcmxk
VGhpcmRGb29sb1NlYworRE9ORQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVz
L3dvcmtlcnMvd29ya2VyLXJlYWQtYmxvYi1zeW5jLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zp
bGVzL3dvcmtlcnMvd29ya2VyLXJlYWQtYmxvYi1zeW5jLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWE5ZDgw
M2Y2NzhmYzRiY2E0NDZiYmUzZjBlOWQ1NTVjYmNmZjc2OAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvZmlsZXMvd29ya2Vycy93b3JrZXItcmVhZC1ibG9iLXN5bmMuaHRtbApA
QCAtMCwwICsxLDI5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8aW5wdXQg
dHlwZT0iZmlsZSIgbmFtZT0iZmlsZSIgaWQ9ImZpbGUiIG9uY2hhbmdlPSJvbklucHV0RmlsZUNo
YW5nZSh0ZXN0RmlsZUluZm9MaXN0KSIgbXVsdGlwbGU+Cis8cHJlIGlkPSdjb25zb2xlJz48L3By
ZT4KKworPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zZXR1cC1mb3ItcmVhZC1jb21tb24uanMi
Pjwvc2NyaXB0PgorPHNjcmlwdD4KK3ZhciB0ZXN0RmlsZUluZm9MaXN0ID0gWworICAgIHsgJ25h
bWUnOiAnbm9uLWV4aXN0ZW50JywgJ3BhdGgnOiAnLi4vcmVzb3VyY2VzL25vbi1leGlzdGVudCcg
fSwKKyAgICB7ICduYW1lJzogJ2VtcHR5LWZpbGUnLCAncGF0aCc6ICcuLi9yZXNvdXJjZXMvZW1w
dHktZmlsZScgfSwKKyAgICB7ICduYW1lJzogJ2ZpbGUxJywgJ3BhdGgnOiAnLi4vcmVzb3VyY2Vz
L1VURjgudHh0JyB9LAorICAgIHsgJ25hbWUnOiAnZmlsZTInLCAncGF0aCc6ICcuLi9yZXNvdXJj
ZXMvVVRGOC0yLnR4dCcgfSwKKyAgICB7ICduYW1lJzogJ2ZpbGUzJywgJ3BhdGgnOiAnLi4vcmVz
b3VyY2VzL1VURjgtMy50eHQnIH0sCitdOworCitmdW5jdGlvbiBzdGFydFRlc3QodGVzdEZpbGVz
KQoreworICAgIHN0YXJ0V29ya2VyKHRlc3RGaWxlcywgInJlc291cmNlcy93b3JrZXItcmVhZC1i
bG9iLXN5bmMuanMiKTsKK30KKworaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53
YWl0VW50aWxEb25lKCk7CisgICAgd2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkgeyBydW5UZXN0
cyh0ZXN0RmlsZUluZm9MaXN0KTsgfQorfQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVzL3dvcmtlcnMvd29ya2VyLXJlYWQtZmls
ZS1hc3luYy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVzL3dvcmtlcnMvd29y
a2VyLXJlYWQtZmlsZS1hc3luYy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTQ5NzY1ODkyZWUy
YmM0MDhlMWE2MjJkNDQxZDQ0NDgwZjJjYWMwYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvZmlsZXMvd29ya2Vycy93b3JrZXItcmVhZC1maWxlLWFzeW5jLWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDE0OCBAQAorCitSZWNlaXZlZCBmaWxlcyBpbiB3b3JrZXIKK1Rlc3QgcmVh
ZGluZyBhIG5vbi1leGlzdGVudCBmaWxlIGFzIGJpbmFyeSBzdHJpbmcKK3JlYWR5U3RhdGU6IDAK
K1JlY2VpdmVkIGVycm9yIGV2ZW50CityZWFkeVN0YXRlOiAyCitlcnJvciBjb2RlOiA4CitSZWNl
aXZlZCBsb2FkZW5kIGV2ZW50CitUZXN0IHJlYWRpbmcgYSBub24tZXhpc3RlbnQgZmlsZSBhcyB0
ZXh0CityZWFkeVN0YXRlOiAwCitSZWNlaXZlZCBlcnJvciBldmVudAorcmVhZHlTdGF0ZTogMgor
ZXJyb3IgY29kZTogOAorUmVjZWl2ZWQgbG9hZGVuZCBldmVudAorVGVzdCByZWFkaW5nIGEgbm9u
LWV4aXN0ZW50IGZpbGUgYXMgZGF0YSBVUkwKK3JlYWR5U3RhdGU6IDAKK1JlY2VpdmVkIGVycm9y
IGV2ZW50CityZWFkeVN0YXRlOiAyCitlcnJvciBjb2RlOiA4CitSZWNlaXZlZCBsb2FkZW5kIGV2
ZW50CitUZXN0IHJlYWRpbmcgYW4gZW1wdHkgZmlsZSBhcyBiaW5hcnkgc3RyaW5nCityZWFkeVN0
YXRlOiAwCitSZWNlaXZlZCBsb2Fkc3RhcnQgZXZlbnQKK3JlYWR5U3RhdGU6IDEKK1JlY2VpdmVk
IGxvYWQgZXZlbnQKK3JlYWR5U3RhdGU6IDIKK3Jlc3VsdCBzaXplOiAwCityZXN1bHQ6IAorUmVj
ZWl2ZWQgbG9hZGVuZCBldmVudAorVGVzdCByZWFkaW5nIGFuIGVtcHR5IGZpbGUgYXMgdGV4dAor
cmVhZHlTdGF0ZTogMAorUmVjZWl2ZWQgbG9hZHN0YXJ0IGV2ZW50CityZWFkeVN0YXRlOiAxCitS
ZWNlaXZlZCBsb2FkIGV2ZW50CityZWFkeVN0YXRlOiAyCityZXN1bHQgc2l6ZTogMAorcmVzdWx0
OiAKK1JlY2VpdmVkIGxvYWRlbmQgZXZlbnQKK1Rlc3QgcmVhZGluZyBhbiBlbXB0eSBmaWxlIGFz
IGRhdGEgVVJMCityZWFkeVN0YXRlOiAwCitSZWNlaXZlZCBsb2Fkc3RhcnQgZXZlbnQKK3JlYWR5
U3RhdGU6IDEKK1JlY2VpdmVkIGxvYWQgZXZlbnQKK3JlYWR5U3RhdGU6IDIKK3Jlc3VsdCBzaXpl
OiA1CityZXN1bHQ6IGRhdGE6CitSZWNlaXZlZCBsb2FkZW5kIGV2ZW50CitUZXN0IHJlYWRpbmcg
YSBVVEYtOCBmaWxlIGFzIGJpbmFyeSBzdHJpbmcKK3JlYWR5U3RhdGU6IDAKK1JlY2VpdmVkIGxv
YWRzdGFydCBldmVudAorcmVhZHlTdGF0ZTogMQorUmVjZWl2ZWQgbG9hZCBldmVudAorcmVhZHlT
dGF0ZTogMgorcmVzdWx0IHNpemU6IDUKK3Jlc3VsdDogSGVsbG8KK1JlY2VpdmVkIGxvYWRlbmQg
ZXZlbnQKK1Rlc3QgcmVhZGluZyBhIGJpbmFyeSBmaWxlIGFzIGJpbmFyeSBzdHJpbmcKK3JlYWR5
U3RhdGU6IDAKK1JlY2VpdmVkIGxvYWRzdGFydCBldmVudAorcmVhZHlTdGF0ZTogMQorUmVjZWl2
ZWQgbG9hZCBldmVudAorcmVhZHlTdGF0ZTogMgorcmVzdWx0IHNpemU6IDkKK3Jlc3VsdDogMHgw
IDB4MSAweDIgMHg4MCAweDgxIDB4ODIgMHhmZCAweGZlIDB4ZmYKK1JlY2VpdmVkIGxvYWRlbmQg
ZXZlbnQKK1Rlc3QgcmVhZGluZyBhIFVURi04IGZpbGUgYXMgdGV4dAorcmVhZHlTdGF0ZTogMAor
UmVjZWl2ZWQgbG9hZHN0YXJ0IGV2ZW50CityZWFkeVN0YXRlOiAxCitSZWNlaXZlZCBsb2FkIGV2
ZW50CityZWFkeVN0YXRlOiAyCityZXN1bHQgc2l6ZTogNQorcmVzdWx0OiBIZWxsbworUmVjZWl2
ZWQgbG9hZGVuZCBldmVudAorVGVzdCByZWFkaW5nIGEgVVRGLTE2QkUgQk9NIGZpbGUgYXMgdGV4
dAorcmVhZHlTdGF0ZTogMAorUmVjZWl2ZWQgbG9hZHN0YXJ0IGV2ZW50CityZWFkeVN0YXRlOiAx
CitSZWNlaXZlZCBsb2FkIGV2ZW50CityZWFkeVN0YXRlOiAyCityZXN1bHQgc2l6ZTogNQorcmVz
dWx0OiBIZWxsbworUmVjZWl2ZWQgbG9hZGVuZCBldmVudAorVGVzdCByZWFkaW5nIGEgVVRGLTE2
TEUgQk9NIGZpbGUgYXMgdGV4dAorcmVhZHlTdGF0ZTogMAorUmVjZWl2ZWQgbG9hZHN0YXJ0IGV2
ZW50CityZWFkeVN0YXRlOiAxCitSZWNlaXZlZCBsb2FkIGV2ZW50CityZWFkeVN0YXRlOiAyCity
ZXN1bHQgc2l6ZTogNQorcmVzdWx0OiBIZWxsbworUmVjZWl2ZWQgbG9hZGVuZCBldmVudAorVGVz
dCByZWFkaW5nIGEgVVRGLTggQk9NIGZpbGUgYXMgdGV4dAorcmVhZHlTdGF0ZTogMAorUmVjZWl2
ZWQgbG9hZHN0YXJ0IGV2ZW50CityZWFkeVN0YXRlOiAxCitSZWNlaXZlZCBsb2FkIGV2ZW50City
ZWFkeVN0YXRlOiAyCityZXN1bHQgc2l6ZTogNQorcmVzdWx0OiBIZWxsbworUmVjZWl2ZWQgbG9h
ZGVuZCBldmVudAorVGVzdCByZWFkaW5nIGEgVVRGLTE2QkUgZmlsZSBhcyB0ZXh0IHdpdGggVVRG
LTE2QkUgZW5jb2RpbmcKK3JlYWR5U3RhdGU6IDAKK1JlY2VpdmVkIGxvYWRzdGFydCBldmVudAor
cmVhZHlTdGF0ZTogMQorUmVjZWl2ZWQgbG9hZCBldmVudAorcmVhZHlTdGF0ZTogMgorcmVzdWx0
IHNpemU6IDUKK3Jlc3VsdDogSGVsbG8KK1JlY2VpdmVkIGxvYWRlbmQgZXZlbnQKK1Rlc3QgcmVh
ZGluZyBhIFVURi0xNkJFIEJPTSBmaWxlIGFzIHRleHQgd2l0aCBVVEY4IGVuY29kaW5nCityZWFk
eVN0YXRlOiAwCitSZWNlaXZlZCBsb2Fkc3RhcnQgZXZlbnQKK3JlYWR5U3RhdGU6IDEKK1JlY2Vp
dmVkIGxvYWQgZXZlbnQKK3JlYWR5U3RhdGU6IDIKK3Jlc3VsdCBzaXplOiA1CityZXN1bHQ6IEhl
bGxvCitSZWNlaXZlZCBsb2FkZW5kIGV2ZW50CitUZXN0IHJlYWRpbmcgYSBVVEYtMTZCRSBCT00g
ZmlsZSBhcyB0ZXh0IHdpdGggaW52YWxpZCBlbmNvZGluZworcmVhZHlTdGF0ZTogMAorUmVjZWl2
ZWQgbG9hZHN0YXJ0IGV2ZW50CityZWFkeVN0YXRlOiAxCitSZWNlaXZlZCBsb2FkIGV2ZW50City
ZWFkeVN0YXRlOiAyCityZXN1bHQgc2l6ZTogNQorcmVzdWx0OiBIZWxsbworUmVjZWl2ZWQgbG9h
ZGVuZCBldmVudAorVGVzdCByZWFkaW5nIGEgVVRGLTggZmlsZSBhcyBkYXRhIFVSTAorcmVhZHlT
dGF0ZTogMAorUmVjZWl2ZWQgbG9hZHN0YXJ0IGV2ZW50CityZWFkeVN0YXRlOiAxCitSZWNlaXZl
ZCBsb2FkIGV2ZW50CityZWFkeVN0YXRlOiAyCityZXN1bHQgc2l6ZTogMzEKK3Jlc3VsdDogZGF0
YTp0ZXh0L3BsYWluO2Jhc2U2NCxTR1ZzYkc4PQorUmVjZWl2ZWQgbG9hZGVuZCBldmVudAorVGVz
dCBjYWxsaW5nIG11bHRpcGxlIHJlYWQgbWV0aG9kcyBhbmQgb25seSBsYXN0IG9uZSBpcyBwcm9j
ZXNzZWQKK3JlYWR5U3RhdGU6IDAKK1JlY2VpdmVkIGxvYWRzdGFydCBldmVudAorcmVhZHlTdGF0
ZTogMQorUmVjZWl2ZWQgbG9hZCBldmVudAorcmVhZHlTdGF0ZTogMgorcmVzdWx0IHNpemU6IDMx
CityZXN1bHQ6IGRhdGE6dGV4dC9wbGFpbjtiYXNlNjQsU0dWc2JHOD0KK1JlY2VpdmVkIGxvYWRl
bmQgZXZlbnQKK0RPTkUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9maWxlcy93b3Jr
ZXJzL3dvcmtlci1yZWFkLWZpbGUtYXN5bmMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZmlsZXMv
d29ya2Vycy93b3JrZXItcmVhZC1maWxlLWFzeW5jLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTJlZDk0Yjdj
ODRmZWE1NWUyOGY0N2ZmMzJmMGYxZTlkODBhNDFkOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvZmlsZXMvd29ya2Vycy93b3JrZXItcmVhZC1maWxlLWFzeW5jLmh0bWwKQEAg
LTAsMCArMSwzMiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorPGlucHV0IHR5
cGU9ImZpbGUiIG5hbWU9ImZpbGUiIGlkPSJmaWxlIiBvbmNoYW5nZT0ib25JbnB1dEZpbGVDaGFu
Z2UodGVzdEZpbGVJbmZvTGlzdCkiIG11bHRpcGxlPgorPHByZSBpZD0nY29uc29sZSc+PC9wcmU+
CisKKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc2V0dXAtZm9yLXJlYWQtY29tbW9uLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQ+Cit2YXIgdGVzdEZpbGVJbmZvTGlzdCA9IFsKKyAgICB7ICduYW1l
JzogJ25vbi1leGlzdGVudCcsICdwYXRoJzogJy4uL3Jlc291cmNlcy9ub24tZXhpc3RlbnQnIH0s
CisgICAgeyAnbmFtZSc6ICdlbXB0eS1maWxlJywgJ3BhdGgnOiAnLi4vcmVzb3VyY2VzL2VtcHR5
LWZpbGUnIH0sCisgICAgeyAnbmFtZSc6ICdVVEY4LWZpbGUnLCAncGF0aCc6ICcuLi9yZXNvdXJj
ZXMvVVRGOC50eHQnIH0sCisgICAgeyAnbmFtZSc6ICdVVEYxNkJFLUJPTS1maWxlJywgJ3BhdGgn
OiAnLi4vcmVzb3VyY2VzL1VURjE2QkUtQk9NLnR4dCcgfSwKKyAgICB7ICduYW1lJzogJ1VURjE2
TEUtQk9NLWZpbGUnLCAncGF0aCc6ICcuLi9yZXNvdXJjZXMvVVRGMTZMRS1CT00udHh0JyB9LAor
ICAgIHsgJ25hbWUnOiAnVVRGOC1CT00tZmlsZScsICdwYXRoJzogJy4uL3Jlc291cmNlcy9VVEY4
LUJPTS50eHQnIH0sCisgICAgeyAnbmFtZSc6ICdVVEYxNkJFLWZpbGUnLCAncGF0aCc6ICcuLi9y
ZXNvdXJjZXMvVVRGMTZCRS50eHQnIH0sCisgICAgeyAnbmFtZSc6ICdiaW5hcnktZmlsZScsICdw
YXRoJzogJy4uL3Jlc291cmNlcy9iaW5hcnktZmlsZScgfSwKK107CisKK2Z1bmN0aW9uIHN0YXJ0
VGVzdCh0ZXN0RmlsZXMpCit7CisgICAgc3RhcnRXb3JrZXIodGVzdEZpbGVzLCAicmVzb3VyY2Vz
L3dvcmtlci1yZWFkLWZpbGUtYXN5bmMuanMiKTsKK30KKworaWYgKHdpbmRvdy5ldmVudFNlbmRl
cikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgd2luZG93Lm9ubG9hZCA9IGZ1bmN0
aW9uKCkgeyBydW5UZXN0cyh0ZXN0RmlsZUluZm9MaXN0KTsgfQorfQorPC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVzL3dvcmtlcnMv
d29ya2VyLXJlYWQtZmlsZS1zeW5jLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZmls
ZXMvd29ya2Vycy93b3JrZXItcmVhZC1maWxlLXN5bmMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjM2OTFhNThmOTY2YmI2M2FhNTgxYTVhYWFmNGMyYjIxZmY0NDU3YmEKQmluYXJ5IGZpbGVzIC9k
ZXYvbnVsbCBhbmQgYi9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVzL3dvcmtlcnMvd29ya2VyLXJlYWQt
ZmlsZS1zeW5jLWV4cGVjdGVkLnR4dCBkaWZmZXIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvZmlsZXMvd29ya2Vycy93b3JrZXItcmVhZC1maWxlLXN5bmMuaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3QvZmlsZXMvd29ya2Vycy93b3JrZXItcmVhZC1maWxlLXN5bmMuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li43ZDU5ZmU5NDU0Y2RkZGE2NzUwOTRjMTQ1YmNhZmRmNGFlYzE3MjA0Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9maWxlcy93b3JrZXJzL3dvcmtlci1yZWFkLWZpbGUtc3lu
Yy5odG1sCkBAIC0wLDAgKzEsMzIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4K
KzxpbnB1dCB0eXBlPSJmaWxlIiBuYW1lPSJmaWxlIiBpZD0iZmlsZSIgb25jaGFuZ2U9Im9uSW5w
dXRGaWxlQ2hhbmdlKHRlc3RGaWxlSW5mb0xpc3QpIiBtdWx0aXBsZT4KKzxwcmUgaWQ9J2NvbnNv
bGUnPjwvcHJlPgorCis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3NldHVwLWZvci1yZWFkLWNv
bW1vbi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgordmFyIHRlc3RGaWxlSW5mb0xpc3QgPSBbCisg
ICAgeyAnbmFtZSc6ICdub24tZXhpc3RlbnQnLCAncGF0aCc6ICcuLi9yZXNvdXJjZXMvbm9uLWV4
aXN0ZW50JyB9LAorICAgIHsgJ25hbWUnOiAnZW1wdHktZmlsZScsICdwYXRoJzogJy4uL3Jlc291
cmNlcy9lbXB0eS1maWxlJyB9LAorICAgIHsgJ25hbWUnOiAnVVRGOC1maWxlJywgJ3BhdGgnOiAn
Li4vcmVzb3VyY2VzL1VURjgudHh0JyB9LAorICAgIHsgJ25hbWUnOiAnVVRGMTZCRS1CT00tZmls
ZScsICdwYXRoJzogJy4uL3Jlc291cmNlcy9VVEYxNkJFLUJPTS50eHQnIH0sCisgICAgeyAnbmFt
ZSc6ICdVVEYxNkxFLUJPTS1maWxlJywgJ3BhdGgnOiAnLi4vcmVzb3VyY2VzL1VURjE2TEUtQk9N
LnR4dCcgfSwKKyAgICB7ICduYW1lJzogJ1VURjgtQk9NLWZpbGUnLCAncGF0aCc6ICcuLi9yZXNv
dXJjZXMvVVRGOC1CT00udHh0JyB9LAorICAgIHsgJ25hbWUnOiAnVVRGMTZCRS1maWxlJywgJ3Bh
dGgnOiAnLi4vcmVzb3VyY2VzL1VURjE2QkUudHh0JyB9LAorICAgIHsgJ25hbWUnOiAnYmluYXJ5
LWZpbGUnLCAncGF0aCc6ICcuLi9yZXNvdXJjZXMvYmluYXJ5LWZpbGUnIH0sCitdOworCitmdW5j
dGlvbiBzdGFydFRlc3QodGVzdEZpbGVzKQoreworICAgIHN0YXJ0V29ya2VyKHRlc3RGaWxlcywg
InJlc291cmNlcy93b3JrZXItcmVhZC1maWxlLXN5bmMuanMiKTsKK30KKworaWYgKHdpbmRvdy5l
dmVudFNlbmRlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgd2luZG93Lm9ubG9h
ZCA9IGZ1bmN0aW9uKCkgeyBydW5UZXN0cyh0ZXN0RmlsZUluZm9MaXN0KTsgfQorfQorPC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9j
aHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKaW5kZXggMGJjZDU4ZDk5N2NiNzRiNTBhOWNlYTZj
ZTdmODZmNzI2NGRhZmI4Ny4uZTQ4MzczODRhOTM4ZWQ1NjRiZTUxODZiMmFjZjVkNjZkNDA3NTAw
ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3Rh
dGlvbnMudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0
YXRpb25zLnR4dApAQCAtMTYyLDYgKzE2Miw3IEBAIFdPTlRGSVggU0tJUCA6IGZhc3QvcmVnZXgv
dGVzdDEuaHRtbCA9IFBBU1MKIAogLy8gV2UgdXNlIHdvcmtlcl91aXRlc3RzIHRvIHJ1biB3b3Jr
ZXJzIHRlc3RzLiBEb24ndCBydW4gdGhlbSBpbiB0ZXN0X3NoZWxsLgogV09OVEZJWCBTS0lQIDog
ZmFzdC93b3JrZXJzID0gUEFTUyBUSU1FT1VUIEZBSUwKK1dPTlRGSVggU0tJUCA6IGZhc3QvZmls
ZXMvd29ya2VycyA9IFBBU1MgVElNRU9VVCBGQUlMCiBXT05URklYIFNLSVAgOiBodHRwL3Rlc3Rz
L3dvcmtlcnMgPSBQQVNTIFRJTUVPVVQgRkFJTAogV09OVEZJWCBTS0lQIDogaHR0cC90ZXN0cy94
bWxodHRwcmVxdWVzdC93b3JrZXJzID0gUEFTUyBUSU1FT1VUIEZBSUwKIFdPTlRGSVggU0tJUCA6
IGh0dHAvdGVzdHMvZXZlbnRzb3VyY2Uvd29ya2VycyA9IFBBU1MgVElNRU9VVCBGQUlMCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZCBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2d0ay9Ta2lwcGVkCmluZGV4IDBjNTBlMWJkYzU5YjdhNjgyMTkxMjlmMTNiM2M1MmE0
MGUxNmE1ZGIuLmEwMWQ4YzAzYjllOGFkMWMwNWNiOGQyZGNjZTZlOGZlOWIyYTQ0ODggMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2d0ay9Ta2lwcGVkCkBAIC0zMTYzLDYgKzMxNjMsNyBAQCBodHRwL3Rlc3RzL2xv
Y2FsL2Zvcm1kYXRhL3NlbmQtZm9ybS1kYXRhLXdpdGgtc2xpY2VkLWZpbGUuaHRtbAogaHR0cC90
ZXN0cy9sb2NhbC9mb3JtZGF0YS91cGxvYWQtZXZlbnRzLmh0bWwKIGZhc3QvZmlsZXMvcmVhZC1i
bG9iLWFzeW5jLmh0bWwKIGZhc3QvZmlsZXMvcmVhZC1maWxlLWFzeW5jLmh0bWwKK2Zhc3QvZmls
ZXMvd29ya2VycwogaHR0cC90ZXN0cy9tZWRpYS92aWRlby1wbGF5LXN0YWxsLXNlZWsuaHRtbAog
aHR0cC90ZXN0cy9tZWRpYS92aWRlby1wbGF5LXN0YWxsLmh0bWwKIGh0dHAvdGVzdHMvbWVkaWEv
dmlkZW8tc2Vla2FibGUtc3RhbGwuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjLXdrMi9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9Ta2lwcGVk
CmluZGV4IGM0OTYzMjEzMTIxYTE3MzNkYzVlZDQzYzVkNjgyNzU2ZmU4ZWU1YWMuLjY4MzcwNGFl
NjYzNmM4YTEyNzM1OTIyMTQ1NDdlODBiMWM0NzMxZmUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy13azIvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMt
d2syL1NraXBwZWQKQEAgLTM2NSw2ICszNjUsNyBAQCBmYXN0L2V2ZW50cy93aW5kb3ctZXZlbnRz
LWNhcHR1cmUuaHRtbAogZmFzdC9ldmVudHMvem9vbS1kYmxjbGljay5odG1sCiBmYXN0L2ZpbGVz
L3JlYWQtYmxvYi1hc3luYy5odG1sCiBmYXN0L2ZpbGVzL3JlYWQtZmlsZS1hc3luYy5odG1sCitm
YXN0L2ZpbGVzL3dvcmtlcnMKIGZhc3QvZm9ybXMvMjUxNTMuaHRtbAogZmFzdC9mb3Jtcy9hY2Nl
c3Mta2V5Lmh0bWwKIGZhc3QvZm9ybXMvYnV0dG9uLWVudGVyLWNsaWNrLmh0bWwKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9xdC9Ta2lwcGVkCmluZGV4IGE2YmYzMzAwYTQxYTUwZGQxZDVkNGQ4NzY3ZTZiYTFlYWRkYWMx
MmYuLjFkYjEzOTY5NjczZTVkMmUzM2ZjMGU2ZjVkOTdhMDIyNjA1NGVjOGUgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vcXQvU2tpcHBlZApAQCAtNzg2LDYgKzc4Niw3IEBAIGh0dHAvdGVzdHMvc2VjdXJpdHkvaXNv
bGF0ZWRXb3JsZC93b3JsZC1yZXVzZS5odG1sCiBmYXN0L2RvbS9XaW5kb3cvd2luZG93LXBvc3Rt
ZXNzYWdlLWNsb25lLWZyYW1lcy5odG1sCiBmYXN0L2ZpbGVzL3JlYWQtYmxvYi1hc3luYy5odG1s
CiBmYXN0L2ZpbGVzL3JlYWQtZmlsZS1hc3luYy5odG1sCitmYXN0L2ZpbGVzL3dvcmtlcnMKIAog
IyBNaXNzaW5nIGxheW91dFRlc3RDb250cm9sbGVyLnNldEFsd2F5c0FjY2VwdENvb2tpZXMoKQog
aHR0cC90ZXN0cy9wbHVnaW5zL3RoaXJkLXBhcnR5LWNvb2tpZS1hY2NlcHQtcG9saWN5Lmh0bWwK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vd2luL1NraXBwZWQKaW5kZXggMzY2MTg5MzRkZjViOTMxMGJhYTA2NDI1Yzhh
Y2RlYTI3NGE3ZDA5ZS4uOWQ2ODNlMzA5OGVkOTAxMWM0MzgwNzI4MDI4MmVlM2JkZjVlNWQ0MiAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQKKysrIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQKQEAgLTE5Nyw2ICsxOTcsNyBAQCBmYXN0L2V2ZW50
cy9kcmFnLWZpbGUtY3Jhc2guaHRtbAogZmFzdC9kb20vV2luZG93L3dpbmRvdy1wb3N0bWVzc2Fn
ZS1jbG9uZS5odG1sCiBmYXN0L2ZpbGVzL3JlYWQtYmxvYi1hc3luYy5odG1sCiBmYXN0L2ZpbGVz
L3JlYWQtZmlsZS1hc3luYy5odG1sCitmYXN0L2ZpbGVzL3dvcmtlcnMKIAogIyBOZWVkIHRvIGFk
ZCBmdW5jdGlvbmFsaXR5IHRvIER1bXBSZW5kZXJUcmVlIHRvIHRlc3QgSUROIDxyZGFyOi8vcHJv
YmxlbS81MzAxOTU0PgogZmFzdC9lbmNvZGluZy9pZG4tc2VjdXJpdHkuaHRtbApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBhZGNmM2JjODBk
YzA4MjBiNGQ4OTQ4M2I3ZjM2NDdhYTgzNDk5YzMwLi41OTJkYjM3OGFhOTEzMTFiODgzZWNiM2I3
Y2RlODhjNmIyNmNlNjc2IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDEwLTA4LTI1ICBKaWFuIExpICA8amlh
bmxpQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBTdXBwb3J0IEZpbGVSZWFkZXJTeW5jIGluIHdvcmtlcnMuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NDY1NworCisgICAgICAgIEFs
c28gYWRkIEZpbGVFeGNlcHRpb24gaW50ZXJmYWNlIGFuZCBtYWtlIEJsb2IvRmlsZS9GaWxlRXJy
b3IgdXNlYWJsZSBpbgorICAgICAgICB3b3JrZXJzLgorCisgICAgICAgIFRlc3RzOiBmYXN0L2Zp
bGVzL3dvcmtlcnMvd29ya2VyLXJlYWQtYmxvYi1hc3luYy5odG1sCisgICAgICAgICAgICAgICBm
YXN0L2ZpbGVzL3dvcmtlcnMvd29ya2VyLXJlYWQtYmxvYi1zeW5jLmh0bWwKKyAgICAgICAgICAg
ICAgIGZhc3QvZmlsZXMvd29ya2Vycy93b3JrZXItcmVhZC1maWxlLWFzeW5jLmh0bWwKKyAgICAg
ICAgICAgICAgIGZhc3QvZmlsZXMvd29ya2Vycy93b3JrZXItcmVhZC1maWxlLXN5bmMuaHRtbAor
CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMuY3BwOgorICAgICAgICAqIERlcml2ZWRTb3VyY2Vz
Lm1ha2U6CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUucHJvOgor
ICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBodG1sL0Jsb2IuaWRsOiBB
ZGRlZCBOb1N0YXRpY1RhYmxlcyBhdHRyaWJ1dGUuCisgICAgICAgICogaHRtbC9GaWxlLmlkbDog
QWRkZWQgTm9TdGF0aWNUYWJsZXMgYXR0cmlidXRlLgorICAgICAgICAqIGh0bWwvRmlsZUVycm9y
LmlkbDogQWRkZWQgTm9TdGF0aWNUYWJsZXMgYXR0cmlidXRlLgorICAgICAgICAqIGh0bWwvRmls
ZUV4Y2VwdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKiBodG1sL0ZpbGVFeGNlcHRpb24uaWRsOiBB
ZGRlZC4KKyAgICAgICAgKiBodG1sL0ZpbGVSZWFkZXJTeW5jLmNwcDogQWRkZWQuCisgICAgICAg
ICogaHRtbC9GaWxlUmVhZGVyU3luYy5oOiBBZGRlZC4KKyAgICAgICAgKiBodG1sL0ZpbGVSZWFk
ZXJTeW5jLmlkbDogQWRkZWQuCisgICAgICAgICogd29ya2Vycy9Xb3JrZXJDb250ZXh0LmlkbDog
RXhwb3NlIEZpbGVSZWFkZXJTeW5jIGFuZCBCbG9kQnVpbGRlciBpbiB3b3JrZXJzLgorCiAyMDEw
LTA4LTI1ICBLZW5uZXRoIFJ1c3NlbGwgIDxrYnJAZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBTaW1vbiBGcmFzZXIuCmRpZmYgLS1naXQgYS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2Vz
LmNwcCBiL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3BwCmluZGV4IGJiYWI2NGJmZDJiYTlmZTYw
ZWExMjE4Y2U1ZTQwMTIzN2RhYTZmOTYuLjgxZjQwNzAwMWM5NjFhYzRjNjE2MjJiYjgwYWExODk2
ODBlZWZlOGEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3BwCisrKyBiL1dl
YkNvcmUvRGVyaXZlZFNvdXJjZXMuY3BwCkBAIC0xMDcsOCArMTA3LDEwIEBACiAjaW5jbHVkZSAi
SlNGaWxlLmNwcCIKICNpbmNsdWRlICJKU0ZpbGVFbnRyeS5jcHAiCiAjaW5jbHVkZSAiSlNGaWxl
RXJyb3IuY3BwIgorI2luY2x1ZGUgIkpTRmlsZUV4Y2VwdGlvbi5jcHAiCiAjaW5jbHVkZSAiSlNG
aWxlTGlzdC5jcHAiCiAjaW5jbHVkZSAiSlNGaWxlUmVhZGVyLmNwcCIKKyNpbmNsdWRlICJKU0Zp
bGVSZWFkZXJTeW5jLmNwcCIKICNpbmNsdWRlICJKU0ZpbGVTeXN0ZW1DYWxsYmFjay5jcHAiCiAj
aW5jbHVkZSAiSlNGaWxlV3JpdGVyLmNwcCIKICNpbmNsdWRlICJKU0ZsYWdzLmNwcCIKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1dlYkNvcmUvRGVyaXZlZFNvdXJj
ZXMubWFrZQppbmRleCBiOWY2NTg5ODFkMGVlODBhOTI5YmIwZjE3ZTIxNTZjNmY3OTUyNzc5Li43
MzgyMmUzN2QxNDkwYzhhMDcxOGE5YjFhYWFjODViZTFiMDhiNzY5IDEwMDY0NAotLS0gYS9XZWJD
b3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtl
CkBAIC0xNTEsOSArMTUxLDExIEBAIERPTV9DTEFTU0VTID0gXAogICAgIEV2ZW50VGFyZ2V0IFwK
ICAgICBGaWxlIFwKICAgICBGaWxlRW50cnkgXAorICAgIEZpbGVFeGNlcHRpb24gXAogICAgIEZp
bGVFcnJvciBcCiAgICAgRmlsZUxpc3QgXAogICAgIEZpbGVSZWFkZXIgXAorICAgIEZpbGVSZWFk
ZXJTeW5jIFwKICAgICBGaWxlV3JpdGVyIFwKICAgICBGaWxlU3lzdGVtQ2FsbGJhY2sgXAogICAg
IEZsYWdzIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvV2ViQ29yZS9XZWJD
b3JlLmd5cGkKaW5kZXggNDNkNDIzZGY2ZDMzYzBjMDY3ODI2ZDQ0YWMzYmVmYjMwNjI3MDI3Mi4u
YTc3ODMwMzVjOTgzODA5NzE5MmZmMjA4NTBhYjg5ZGMzZDEzNjEwNiAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkKKysrIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTExNiw4ICsx
MTYsMTAgQEAKICAgICAgICAgICAgICdodG1sL0RPTUZvcm1EYXRhLmlkbCcsCiAgICAgICAgICAg
ICAnaHRtbC9GaWxlLmlkbCcsCiAgICAgICAgICAgICAnaHRtbC9GaWxlRXJyb3IuaWRsJywKKyAg
ICAgICAgICAgICdodG1sL0ZpbGVFeGNlcHRpb24uaWRsJywKICAgICAgICAgICAgICdodG1sL0Zp
bGVMaXN0LmlkbCcsCiAgICAgICAgICAgICAnaHRtbC9GaWxlUmVhZGVyLmlkbCcsCisgICAgICAg
ICAgICAnaHRtbC9GaWxlUmVhZGVyU3luYy5pZGwnLAogICAgICAgICAgICAgJ2h0bWwvRmlsZVdy
aXRlci5pZGwnLAogICAgICAgICAgICAgJ2h0bWwvSFRNTEFsbENvbGxlY3Rpb24uaWRsJywKICAg
ICAgICAgICAgICdodG1sL0hUTUxBbmNob3JFbGVtZW50LmlkbCcsCkBAIC0xNTE3LDEwICsxNTE5
LDEzIEBACiAgICAgICAgICAgICAnaHRtbC9GaWxlLmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9G
aWxlLmgnLAogICAgICAgICAgICAgJ2h0bWwvRmlsZUVycm9yLmgnLAorICAgICAgICAgICAgJ2h0
bWwvRmlsZUV4Y2VwdGlvbi5oJywKICAgICAgICAgICAgICdodG1sL0ZpbGVMaXN0LmNwcCcsCiAg
ICAgICAgICAgICAnaHRtbC9GaWxlTGlzdC5oJywKICAgICAgICAgICAgICdodG1sL0ZpbGVSZWFk
ZXIuY3BwJywKICAgICAgICAgICAgICdodG1sL0ZpbGVSZWFkZXIuaCcsCisgICAgICAgICAgICAn
aHRtbC9GaWxlUmVhZGVyU3luYy5jcHAnLAorICAgICAgICAgICAgJ2h0bWwvRmlsZVJlYWRlclN5
bmMuaCcsCiAgICAgICAgICAgICAnaHRtbC9GaWxlV3JpdGVyLmNwcCcsCiAgICAgICAgICAgICAn
aHRtbC9GaWxlV3JpdGVyLmgnLAogICAgICAgICAgICAgJ2h0bWwvRmlsZVN0cmVhbVByb3h5LmNw
cCcsCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUucHJvIGIvV2ViQ29yZS9XZWJDb3JlLnBy
bwppbmRleCBjOGQyZTFiMzNhMDY0MTRiN2Q4YzRhYjNhNTIxMDJlYzZiYjA1ZmFkLi4wMjAwNDRl
MThiNjFhYzQ1Yjk2NDA0NDdmNGUyM2NlNGFhYjczYmIxIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dl
YkNvcmUucHJvCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTY0NSw2ICs2NDUsNyBAQCBT
T1VSQ0VTICs9IFwKICAgICBodG1sL0ZpbGUuY3BwIFwKICAgICBodG1sL0ZpbGVMaXN0LmNwcCBc
CiAgICAgaHRtbC9GaWxlUmVhZGVyLmNwcCBcCisgICAgaHRtbC9GaWxlUmVhZGVyU3luYy5jcHAg
XAogICAgIGh0bWwvRmlsZVN0cmVhbVByb3h5LmNwcCBcCiAgICAgaHRtbC9GaWxlVGhyZWFkLmNw
cCBcCiAgICAgaHRtbC9GaWxlV3JpdGVyLmNwcCBcCkBAIC0xNDIwLDggKzE0MjEsMTAgQEAgSEVB
REVSUyArPSBcCiAgICAgaHRtbC9ET01Gb3JtRGF0YS5oIFwKICAgICBodG1sL0ZpbGUuaCBcCiAg
ICAgaHRtbC9GaWxlRXJyb3IuaCBcCisgICAgaHRtbC9GaWxlRXhjZXB0aW9uLmggXAogICAgIGh0
bWwvRmlsZUxpc3QuaCBcCiAgICAgaHRtbC9GaWxlUmVhZGVyLmggXAorICAgIGh0bWwvRmlsZVJl
YWRlclN5bmMuaCBcCiAgICAgaHRtbC9GaWxlU3RyZWFtUHJveHkuaCBcCiAgICAgaHRtbC9GaWxl
VGhyZWFkLmggXAogICAgIGh0bWwvRmlsZVRocmVhZFRhc2suaCBcCmRpZmYgLS1naXQgYS9XZWJD
b3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvagppbmRleCAwZDI4MjA5MDQ2NzNiMzJjMDE2MWFiYzFhYjUwNDlmYTE3
OGI0ZGJmLi43Yzc5Nzk0OWRlNjg2YjU1NTY5MjY5NDAwNmI1MzNmMmFlMzZjMTU4IDEwMDY0NAot
LS0gYS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1dlYkNvcmUv
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTQ5ODksNiArNDk4OSwxNCBAQAogCQkJ
CT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91
dHB1dERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTRmlsZVJlYWRlclN5
bmMuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0
aD0iJChXZWJLaXRPdXRwdXREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xK
U0ZpbGVSZWFkZXJTeW5jLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJ
UmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2
ZWRTb3VyY2VzXEpTRmlsZVN5c3RlbUNhbGxiYWNrLmNwcCINCiAJCQkJPg0KIAkJCQk8RmlsZUNv
bmZpZ3VyYXRpb24NCkBAIC0zNzIwOSw2ICszNzIxNywxMCBAQAogCQkJCT4NCiAJCQk8L0ZpbGU+
DQogCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXEZpbGVFeGNlcHRpb24uaCIN
CisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0
bWxcRmlsZUxpc3QuY3BwIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KQEAgLTM3MjI1LDYgKzM3MjM3
LDE0IEBACiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXGh0bWxcRmlsZVJlYWRlclN5bmMuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxG
aWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxGaWxlUmVhZGVyU3luYy5oIg0KKwkJCQk+
DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxGaWxl
U3RyZWFtUHJveHkuY3BwIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KZGlmZiAtLWdpdCBhL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOWM2OTRkNzZjYjE3ODZiN2MyYjZmNzdiYWJh
MDQ0YTU5OTgzY2FjOC4uMzc3OTAyZDZhMDFmNmM0ZmIyODFmZWIyZmZmZjY2Yjc4MTVkNWJjYSAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTcwNiw2ICs3
MDYsMTMgQEAKIAkJMkVBRkFGMEYxMEUyQUYyRDAwN0VEM0Q2IC8qIEJsb2IuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFQUZBRjBDMTBFMkFGMkQwMDdF
RDNENiAvKiBCbG9iLmggKi87IH07CiAJCTJFQjRCQ0QyMTIxRjAzRTMwMEVDNDg4NSAvKiBCbG9i
UmVzb3VyY2VIYW5kbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMkVCNEJDRDAxMjFGMDNFMzAwRUM0ODg1IC8qIEJsb2JSZXNvdXJjZUhhbmRsZS5j
cHAgKi87IH07CiAJCTJFQjRCQ0QzMTIxRjAzRTMwMEVDNDg4NSAvKiBCbG9iUmVzb3VyY2VIYW5k
bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFQjRC
Q0QxMTIxRjAzRTMwMEVDNDg4NSAvKiBCbG9iUmVzb3VyY2VIYW5kbGUuaCAqLzsgfTsKKwkJMkVC
NEMxMUQxMjI1RkU0MjAwRUM0ODg1IC8qIEZpbGVFeGNlcHRpb24uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFQjRDMTFCMTIyNUZFNDIwMEVDNDg4NSAv
KiBGaWxlRXhjZXB0aW9uLmggKi87IH07CisJCTJFQjRDMTIyMTIyNUZFNjEwMEVDNDg4NSAvKiBG
aWxlUmVhZGVyU3luYy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyRUI0QzExRjEyMjVGRTYxMDBFQzQ4ODUgLyogRmlsZVJlYWRlclN5bmMuY3BwICov
OyB9OworCQkyRUI0QzEyMzEyMjVGRTYxMDBFQzQ4ODUgLyogRmlsZVJlYWRlclN5bmMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFQjRDMTIwMTIyNUZF
NjEwMEVDNDg4NSAvKiBGaWxlUmVhZGVyU3luYy5oICovOyB9OworCQkyRUI0QzEzNTEyMjVGRjVB
MDBFQzQ4ODUgLyogSlNGaWxlRXhjZXB0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFQjRDMTMzMTIyNUZGNUEwMEVDNDg4NSAvKiBKU0ZpbGVF
eGNlcHRpb24uY3BwICovOyB9OworCQkyRUI0QzEzNjEyMjVGRjVBMDBFQzQ4ODUgLyogSlNGaWxl
RXhjZXB0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAyRUI0QzEzNDEyMjVGRjVBMDBFQzQ4ODUgLyogSlNGaWxlRXhjZXB0aW9uLmggKi87IH07CisJ
CTJFQjRDMTM5MTIyNUZGNzAwMEVDNDg4NSAvKiBKU0ZpbGVSZWFkZXJTeW5jLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFQjRDMTM3MTIyNUZGNzAw
MEVDNDg4NSAvKiBKU0ZpbGVSZWFkZXJTeW5jLmNwcCAqLzsgfTsKKwkJMkVCNEMxM0ExMjI1RkY3
MDAwRUM0ODg1IC8qIEpTRmlsZVJlYWRlclN5bmMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFQjRDMTM4MTIyNUZGNzAwMEVDNDg4NSAvKiBKU0ZpbGVS
ZWFkZXJTeW5jLmggKi87IH07CiAJCTJFQ0Y3QURDMTAxNjJCMzgwMDQyN0RFNyAvKiBKU0Vycm9y
RXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MkVDRjdBREExMDE2MkIzODAwNDI3REU3IC8qIEpTRXJyb3JFdmVudC5jcHAgKi87IH07CiAJCTJF
Q0Y3QUREMTAxNjJCMzgwMDQyN0RFNyAvKiBKU0Vycm9yRXZlbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFQ0Y3QURCMTAxNjJCMzgwMDQyN0RFNyAv
KiBKU0Vycm9yRXZlbnQuaCAqLzsgfTsKIAkJMkVDRjdBRTExMDE2MkI1ODAwNDI3REU3IC8qIEVy
cm9yRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMkVDRjdBREUxMDE2MkI1ODAwNDI3REU3IC8qIEVycm9yRXZlbnQuY3BwICovOyB9OwpAQCAt
NjUzMSw2ICs2NTM4LDE1IEBACiAJCTJFQUZBRjBEMTBFMkFGMkQwMDdFRDNENiAvKiBCbG9iLmlk
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBCbG9iLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMkVCNEJDRDAxMjFGMDNFMzAwRUM0ODg1IC8qIEJsb2JSZXNvdXJjZUhhbmRsZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCbG9iUmVzb3VyY2VIYW5k
bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRUI0QkNEMTEyMUYwM0UzMDBF
QzQ4ODUgLyogQmxvYlJlc291cmNlSGFuZGxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEJsb2JSZXNvdXJjZUhhbmRsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkyRUI0QzExQjEyMjVGRTQyMDBFQzQ4ODUgLyogRmlsZUV4Y2VwdGlvbi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBGaWxlRXhjZXB0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTJFQjRDMTFDMTIyNUZFNDIwMEVDNDg4NSAvKiBGaWxlRXhjZXB0aW9uLmlk
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBGaWxlRXhjZXB0aW9uLmlkbDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMkVCNEMxMUYxMjI1RkU2MTAwRUM0ODg1IC8qIEZpbGVSZWFkZXJT
eW5jLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZpbGVSZWFkZXJT
eW5jLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkVCNEMxMjAxMjI1RkU2MTAw
RUM0ODg1IC8qIEZpbGVSZWFkZXJTeW5jLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEZpbGVSZWFkZXJTeW5jLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJFQjRD
MTIxMTIyNUZFNjEwMEVDNDg4NSAvKiBGaWxlUmVhZGVyU3luYy5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gRmlsZVJlYWRlclN5bmMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkyRUI0QzEzMzEyMjVGRjVBMDBFQzQ4ODUgLyogSlNGaWxlRXhjZXB0aW9uLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRmlsZUV4Y2VwdGlvbi5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJFQjRDMTM0MTIyNUZGNUEwMEVDNDg4NSAvKiBKU0Zp
bGVFeGNlcHRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNGaWxlRXhj
ZXB0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJFQjRDMTM3MTIyNUZGNzAw
MEVDNDg4NSAvKiBKU0ZpbGVSZWFkZXJTeW5jLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTRmlsZVJlYWRlclN5bmMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkyRUI0QzEzODEyMjVGRjcwMDBFQzQ4ODUgLyogSlNGaWxlUmVhZGVyU3luYy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0ZpbGVSZWFkZXJTeW5jLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJFQ0Y3QURBMTAxNjJCMzgwMDQyN0RFNyAvKiBKU0Vy
cm9yRXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNFcnJv
ckV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkVDRjdBREIxMDE2MkIz
ODAwNDI3REU3IC8qIEpTRXJyb3JFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU0Vycm9yRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkVDRjdB
REUxMDE2MkI1ODAwNDI3REU3IC8qIEVycm9yRXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gRXJyb3JFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0xNDAzNiwxMiArMTQwNTIsMTcgQEAKIAkJCQlCQzE4ODFEOTBFMDhDNEVEMDAwNDhD
MTMgLyogRmlsZS5pZGwgKi8sCiAJCQkJMkUzQkMwQkIxMTdEM0E0RjAwQjk0MDlBIC8qIEZpbGVF
cnJvci5oICovLAogCQkJCTJFM0JDMEJDMTE3RDNBNEYwMEI5NDA5QSAvKiBGaWxlRXJyb3IuaWRs
ICovLAorCQkJCTJFQjRDMTFCMTIyNUZFNDIwMEVDNDg4NSAvKiBGaWxlRXhjZXB0aW9uLmggKi8s
CisJCQkJMkVCNEMxMUMxMjI1RkU0MjAwRUM0ODg1IC8qIEZpbGVFeGNlcHRpb24uaWRsICovLAog
CQkJCUJDREJCOEFCMEUwODhDQTUwMEM2MEZGNiAvKiBGaWxlTGlzdC5jcHAgKi8sCiAJCQkJQkNE
QkI4QUEwRTA4OENBNTAwQzYwRkY2IC8qIEZpbGVMaXN0LmggKi8sCiAJCQkJQkMxODgxREMwRTA4
QzU0MzAwMDQ4QzEzIC8qIEZpbGVMaXN0LmlkbCAqLywKIAkJCQkyRTk0RjNDQjExOEI5MDhFMDBC
N0Y3NUQgLyogRmlsZVJlYWRlci5jcHAgKi8sCiAJCQkJMkU5NEYzQ0MxMThCOTA4RTAwQjdGNzVE
IC8qIEZpbGVSZWFkZXIuaCAqLywKIAkJCQkyRTk0RjQyNzExOTIwNUIzMDBCN0Y3NUQgLyogRmls
ZVJlYWRlci5pZGwgKi8sCisJCQkJMkVCNEMxMUYxMjI1RkU2MTAwRUM0ODg1IC8qIEZpbGVSZWFk
ZXJTeW5jLmNwcCAqLywKKwkJCQkyRUI0QzEyMDEyMjVGRTYxMDBFQzQ4ODUgLyogRmlsZVJlYWRl
clN5bmMuaCAqLywKKwkJCQkyRUI0QzEyMTEyMjVGRTYxMDBFQzQ4ODUgLyogRmlsZVJlYWRlclN5
bmMuaWRsICovLAogCQkJCTg5NTI1M0RBMTE2QzRFRjUwMENBQkYwMCAvKiBGaWxlU3RyZWFtUHJv
eHkuY3BwICovLAogCQkJCTg5NTI1M0RCMTE2QzRFRjUwMENBQkYwMCAvKiBGaWxlU3RyZWFtUHJv
eHkuaCAqLywKIAkJCQk4OTUyNTM1MDExNjQxQjM0MDBDQUJGMDAgLyogRmlsZVRocmVhZC5jcHAg
Ki8sCkBAIC0xNDQyOCwxMCArMTQ0NDksMTQgQEAKIAkJCQlCQzAwRjAxMTBFMEExODk1MDBGRDA0
RTMgLyogSlNGaWxlLmggKi8sCiAJCQkJMkUzQkMwQzgxMTdEM0UwODAwQjk0MDlBIC8qIEpTRmls
ZUVycm9yLmNwcCAqLywKIAkJCQkyRTNCQzBDOTExN0QzRTA4MDBCOTQwOUEgLyogSlNGaWxlRXJy
b3IuaCAqLywKKwkJCQkyRUI0QzEzMzEyMjVGRjVBMDBFQzQ4ODUgLyogSlNGaWxlRXhjZXB0aW9u
LmNwcCAqLywKKwkJCQkyRUI0QzEzNDEyMjVGRjVBMDBFQzQ4ODUgLyogSlNGaWxlRXhjZXB0aW9u
LmggKi8sCiAJCQkJQkMwMEYwMTIwRTBBMTg5NTAwRkQwNEUzIC8qIEpTRmlsZUxpc3QuY3BwICov
LAogCQkJCUJDMDBGMDEzMEUwQTE4OTUwMEZEMDRFMyAvKiBKU0ZpbGVMaXN0LmggKi8sCiAJCQkJ
MkU5NEY0MzkxMTkyMDdEQTAwQjdGNzVEIC8qIEpTRmlsZVJlYWRlci5jcHAgKi8sCiAJCQkJMkU5
NEY0M0ExMTkyMDdEQTAwQjdGNzVEIC8qIEpTRmlsZVJlYWRlci5oICovLAorCQkJCTJFQjRDMTM3
MTIyNUZGNzAwMEVDNDg4NSAvKiBKU0ZpbGVSZWFkZXJTeW5jLmNwcCAqLywKKwkJCQkyRUI0QzEz
ODEyMjVGRjcwMDBFQzQ4ODUgLyogSlNGaWxlUmVhZGVyU3luYy5oICovLAogCQkJCTQ5RUVDRUY0
MTA1MDcwQzQwMDA5OUZBQiAvKiBKU0Zsb2F0MzJBcnJheS5jcHAgKi8sCiAJCQkJNDlFRUNFRjUx
MDUwNzBDNDAwMDk5RkFCIC8qIEpTRmxvYXQzMkFycmF5LmggKi8sCiAJCQkJQkM5N0U0MTAxMDkx
NTRGQTAwMTBEMzYxIC8qIEpTSFRNTEFsbENvbGxlY3Rpb24uY3BwICovLApAQCAtMjAzNjUsNiAr
MjAzOTAsMTAgQEAKIAkJCQk4OTQ3QTgyQzEyMjIyQzQ3MDBEOTVGMkQgLyogSlNNZXRhZGF0YUNh
bGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQk4OTQ3QTgzQzEyMjIzNEY0MDBEOTVGMkQgLyog
TWV0YWRhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTg5NDdBODNEMTIyMjM0RjkwMEQ5NUYyRCAv
KiBNZXRhZGF0YUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKKwkJCQkyRUI0QzExRDEyMjVGRTQy
MDBFQzQ4ODUgLyogRmlsZUV4Y2VwdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJMkVCNEMxMjMx
MjI1RkU2MTAwRUM0ODg1IC8qIEZpbGVSZWFkZXJTeW5jLmggaW4gSGVhZGVycyAqLywKKwkJCQky
RUI0QzEzNjEyMjVGRjVBMDBFQzQ4ODUgLyogSlNGaWxlRXhjZXB0aW9uLmggaW4gSGVhZGVycyAq
LywKKwkJCQkyRUI0QzEzQTEyMjVGRjcwMDBFQzQ4ODUgLyogSlNGaWxlUmVhZGVyU3luYy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2lu
ZyA9IDA7CiAJCX07CkBAIC0yMjgyMSw2ICsyMjg1MCw5IEBACiAJCQkJODk2ODZDOUYxMjIyNDRB
MDAwNzZFQUE0IC8qIERPTUZpbGVQYXRoLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg5NDdBODI5
MTIyMjJDNDcwMEQ5NUYyRCAvKiBKU01ldGFkYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg5
NDdBODJCMTIyMjJDNDcwMEQ5NUYyRCAvKiBKU01ldGFkYXRhQ2FsbGJhY2suY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJMkVCNEMxMjIxMjI1RkU2MTAwRUM0ODg1IC8qIEZpbGVSZWFkZXJTeW5jLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTJFQjRDMTM1MTIyNUZGNUEwMEVDNDg4NSAvKiBKU0ZpbGVF
eGNlcHRpb24uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMkVCNEMxMzkxMjI1RkY3MDAwRUM0ODg1
IC8qIEpTRmlsZVJlYWRlclN5bmMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25s
eUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9XZWJD
b3JlL2h0bWwvQmxvYi5pZGwgYi9XZWJDb3JlL2h0bWwvQmxvYi5pZGwKaW5kZXggZTA2M2I2ZGUz
NjkwODIwM2UwOTg2ODQwNGU3NDQ3ZTZiMDkwZTM4ZC4uYjIyMDIzM2RmNjFjMDkwZWY1MjFkNjMx
ZjMyOTU5MmYzNjk5MGI5OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0Jsb2IuaWRsCisrKyBi
L1dlYkNvcmUvaHRtbC9CbG9iLmlkbApAQCAtMzAsNyArMzAsOSBAQAogCiBtb2R1bGUgaHRtbCB7
CiAKLSAgICBpbnRlcmZhY2UgQmxvYiB7CisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgTm9TdGF0
aWNUYWJsZXMKKyAgICBdIEJsb2IgewogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWdu
ZWQgbG9uZyBsb25nIHNpemU7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcg
dHlwZTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0ZpbGUuaWRsIGIvV2ViQ29yZS9odG1s
L0ZpbGUuaWRsCmluZGV4IDU2MjZjOGUwMzE1ZDJlZmQxNTYwMDlhNTlmNDhiM2FmZGZlNTczY2Uu
LjE5Mzc5MDFiOTg3MjliYjY5YzJkMGU1OWRjZjYyMWE3NDQzMmY4MDcgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvaHRtbC9GaWxlLmlkbAorKysgYi9XZWJDb3JlL2h0bWwvRmlsZS5pZGwKQEAgLTI3LDcg
KzI3LDggQEAgbW9kdWxlIGh0bWwgewogCiAgICAgaW50ZXJmYWNlIFsKICAgICAgICAgR2VuZXJh
dGVOYXRpdmVDb252ZXJ0ZXIsCi0gICAgICAgIEdlbmVyYXRlVG9KUworICAgICAgICBHZW5lcmF0
ZVRvSlMsCisgICAgICAgIE5vU3RhdGljVGFibGVzCiAgICAgXSBGaWxlIDogQmxvYiB7CiAgICAg
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgbmFtZTsKICNpZiBkZWZpbmVkKEVOQUJM
RV9ESVJFQ1RPUllfVVBMT0FEKSAmJiBFTkFCTEVfRElSRUNUT1JZX1VQTE9BRApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9odG1sL0ZpbGVFcnJvci5pZGwgYi9XZWJDb3JlL2h0bWwvRmlsZUVycm9yLmlk
bAppbmRleCAzNDIzZTcyMDE3NjdmOTAxZmI4NDdiNjVkYjMzNGI4NzRjY2Y1ZjllLi5iNzM2NzBi
ZWZlNWRjZTc3MWVhNmEzNjVhYWFhMmY4ZGE2MDI4ZWZiIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0
bWwvRmlsZUVycm9yLmlkbAorKysgYi9XZWJDb3JlL2h0bWwvRmlsZUVycm9yLmlkbApAQCAtMzEs
NyArMzEsOCBAQAogbW9kdWxlIGh0bWwgewogICAgIGludGVyZmFjZSBbCiAgICAgICAgIENvbmRp
dGlvbmFsPUJMT0J8RklMRV9XUklURVIsCi0gICAgICAgIERvbnRDaGVja0VudW1zCisgICAgICAg
IERvbnRDaGVja0VudW1zLAorICAgICAgICBOb1N0YXRpY1RhYmxlcwogICAgIF0gRmlsZUVycm9y
IHsKICNpZiAhZGVmaW5lZChMQU5HVUFHRV9PQkpFQ1RJVkVfQykKICAgICAgICAgY29uc3QgdW5z
aWduZWQgc2hvcnQgTk9fTU9ESUZJQ0FUSU9OX0FMTE9XRURfRVJSID0gNzsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvaHRtbC9GaWxlRXhjZXB0aW9uLmggYi9XZWJDb3JlL2h0bWwvRmlsZUV4Y2VwdGlv
bi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjQ0MTllYjdmYTIzMmRjYzkwOWE3ZTU4OGNlZDIyZDg2YWNhNTEyYzAK
LS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2h0bWwvRmlsZUV4Y2VwdGlvbi5oCkBAIC0wLDAg
KzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6
CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
KyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBGaWxlRXhjZXB0aW9uX2gKKyNkZWZpbmUgRmlsZUV4Y2VwdGlvbl9o
CisKKyNpZiBFTkFCTEUoQkxPQikgfHwgRU5BQkxFKEZJTEVfV1JJVEVSKQorCisjaW5jbHVkZSAi
RXhjZXB0aW9uQmFzZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEZpbGVFeGNl
cHRpb24gOiBwdWJsaWMgRXhjZXB0aW9uQmFzZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NS
ZWZQdHI8RmlsZUV4Y2VwdGlvbj4gY3JlYXRlKGNvbnN0IEV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlv
biYgZGVzY3JpcHRpb24pCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEZpbGVF
eGNlcHRpb24oZGVzY3JpcHRpb24pKTsKKyAgICB9CisKKyAgICBzdGF0aWMgY29uc3QgaW50IEZp
bGVFeGNlcHRpb25PZmZzZXQgPSAxMDA7CisgICAgc3RhdGljIGNvbnN0IGludCBGaWxlRXhjZXB0
aW9uTWF4ID0gMTk5OworCisgICAgZW51bSBFdmVudEV4Y2VwdGlvbkNvZGUgeworICAgICAgICBV
TlNQRUNJRklFRF9FVkVOVF9UWVBFX0VSUiA9IEZpbGVFeGNlcHRpb25PZmZzZXQKKyAgICB9Owor
Citwcml2YXRlOgorICAgIEZpbGVFeGNlcHRpb24oY29uc3QgRXhjZXB0aW9uQ29kZURlc2NyaXB0
aW9uJiBkZXNjcmlwdGlvbikKKyAgICAgICAgOiBFeGNlcHRpb25CYXNlKGRlc2NyaXB0aW9uKQor
ICAgIHsKKyAgICB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBF
TkFCTEUoQkxPQikgfHwgRU5BQkxFKEZJTEVfV1JJVEVSKQorCisjZW5kaWYgLy8gRmlsZUV4Y2Vw
dGlvbl9oCisKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9GaWxlRXhjZXB0aW9uLmlkbCBiL1dl
YkNvcmUvaHRtbC9GaWxlRXhjZXB0aW9uLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YTVmNDI0YTI5ZTgyNzZk
NTE3Yzc2OTFjMDYyZTI5ZGNiYzBhZTk5Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9odG1s
L0ZpbGVFeGNlcHRpb24uaWRsCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTAgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworbW9kdWxlIGh0bWwgeworICAgIGlu
dGVyZmFjZSBbCisgICAgICAgIENvbmRpdGlvbmFsPUJMT0J8RklMRV9XUklURVIsCisgICAgICAg
IERvbnRDaGVja0VudW1zLAorICAgICAgICBOb1N0YXRpY1RhYmxlcworICAgIF0gRmlsZUV4Y2Vw
dGlvbiB7CisKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIHNob3J0ICAgY29k
ZTsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyAgICAgICAgbmFtZTsKKyAg
ICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyAgICAgICAgbWVzc2FnZTsKKworI2lm
IGRlZmluZWQoTEFOR1VBR0VfSkFWQVNDUklQVCkgJiYgTEFOR1VBR0VfSkFWQVNDUklQVAorICAg
ICAgICAvLyBPdmVycmlkZSBpbiBhIE1vemlsbGEgY29tcGF0aWJsZSBmb3JtYXQKKyAgICAgICAg
W0RvbnRFbnVtXSBET01TdHJpbmcgdG9TdHJpbmcoKTsKKyNlbmRpZgorCisgICAgICAgIC8vIEZp
bGVFeGNlcHRpb25Db2RlCisgICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IE5PVF9GT1VORF9F
UlIgPSA4OworICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTRUNVUklUWV9FUlIgPSAxODsK
KyAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgQUJPUlRfRVJSID0gMjA7CisKKyAgICAgICAg
Y29uc3QgdW5zaWduZWQgc2hvcnQgTk9UX1JFQURBQkxFX0VSUiA9IDI0OworICAgICAgICBjb25z
dCB1bnNpZ25lZCBzaG9ydCBFTkNPRElOR19FUlIgPSAyNjsKKyAgICB9OworfQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9odG1sL0ZpbGVMaXN0LmlkbCBiL1dlYkNvcmUvaHRtbC9GaWxlTGlzdC5pZGwK
aW5kZXggNmJhZjNlMTg1N2M0ZTEzMDc4ZTE0MDI3OWYyNmYwOWJjMDlkNzgzZS4uMGQwYjA0NmMz
ZWQ4YmVjYzY0YzFkMDhmZDA5NmUzODlmNDk0OTU0NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1s
L0ZpbGVMaXN0LmlkbAorKysgYi9XZWJDb3JlL2h0bWwvRmlsZUxpc3QuaWRsCkBAIC0yNiw3ICsy
Niw4IEBACiBtb2R1bGUgaHRtbCB7CiAKICAgICBpbnRlcmZhY2UgWwotICAgICAgICBIYXNJbmRl
eEdldHRlcgorICAgICAgICBIYXNJbmRleEdldHRlciwKKyAgICAgICAgTm9TdGF0aWNUYWJsZXMK
ICAgICBdIEZpbGVMaXN0IHsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxv
bmcgbGVuZ3RoOwogICAgICAgICBGaWxlIGl0ZW0oaW4gW0lzSW5kZXhdIHVuc2lnbmVkIGxvbmcg
aW5kZXgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0ZpbGVSZWFkZXJTeW5jLmNwcCBiL1dl
YkNvcmUvaHRtbC9GaWxlUmVhZGVyU3luYy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDhjODdjZjU3OWYzMGZm
ZmM0NGNlOGIwMWFhOWE2MTUzZWNhMzNmNQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvaHRt
bC9GaWxlUmVhZGVyU3luYy5jcHAKQEAgLTAsMCArMSwxOTMgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTAgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4K
KyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorCisjaWYgRU5BQkxFKEJMT0IpCisKKyNpbmNsdWRlICJGaWxlUmVhZGVyU3luYy5oIgorCisj
aW5jbHVkZSAiQmFzZTY0LmgiCisjaW5jbHVkZSAiQmxvYi5oIgorI2luY2x1ZGUgIkZpbGVSZWFk
ZXIuaCIKKyNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVj
dXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiVGV4dEVuY29kaW5nLmgiCisjaW5jbHVkZSAiVGV4
dFJlc291cmNlRGVjb2Rlci5oIgorI2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXIuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBGaWxlUmVhZGVyU3luY0xvYWRlciA6IHB1YmxpYyBU
aHJlYWRhYmxlTG9hZGVyQ2xpZW50IHsJCitwdWJsaWM6CisgICAgLy8gSWYgdGhlIG91dHB1dCBy
ZXN1bHQgaXMgcHJvdmlkZWQsIHVzZSBpdC4gT3RoZXJ3aXNlLCBzYXZlIGl0IGFzIHRoZSByYXcg
ZGF0YS4KKyAgICBGaWxlUmVhZGVyU3luY0xvYWRlcihTY3JpcHRTdHJpbmcqIHJlc3VsdCk7CisK
KyAgICAvLyBSZXR1cm5zIHRoZSBodHRwIHN0YXR1cyBjb2RlLgorICAgIHZvaWQgc3RhcnQoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIEV4Y2VwdGlvbkNv
ZGUmKTsKKworICAgIC8vIFRocmVhZGFibGVMb2FkZXJDbGllbnQKKyAgICB2aXJ0dWFsIHZvaWQg
ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKKyAgICB2aXJ0dWFs
IHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciosIGludCk7CisgICAgdmlydHVhbCB2b2lk
IGRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKTsKKyAgICB2aXJ0dWFs
IHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJik7CisKKyAgICBjb25zdCBWZWN0b3I8
Y2hhcj4mIHJhd0RhdGEoKSBjb25zdCB7IHJldHVybiBtX3Jhd0RhdGE7IH0KKworcHJpdmF0ZToK
KyAgICAvLyBUaGUgb3V0cHV0IHJlc3VsdC4gVGhlIGNhbGxlciBwcm92aWRlcyB0aGlzIGluIG9y
ZGVyIHRvIGxvYWQgdGhlIGJpbmFyeSBkYXRhIGRpcmVjdGx5LgorICAgIFNjcmlwdFN0cmluZyog
bV9yZXN1bHQ7CisKKyAgICAvLyBUaGUgcmF3IGRhdGEuIFRoZSBjYWxsZXIgZG9lcyBub3QgcHJv
dmlkZSB0aGUgYWJvdmUgb3V0cHV0IHJlc3VsdCBhbmQgd2UgbmVlZCB0byBzYXZlIGl0IGhlcmUu
CisgICAgVmVjdG9yPGNoYXI+IG1fcmF3RGF0YTsKKworICAgIGludCBtX2h0dHBTdGF0dXNDb2Rl
OyAgICAKK307CisKK0ZpbGVSZWFkZXJTeW5jTG9hZGVyOjpGaWxlUmVhZGVyU3luY0xvYWRlcihT
Y3JpcHRTdHJpbmcqIHJlc3VsdCkKKyAgICA6IG1fcmVzdWx0KHJlc3VsdCkKKyAgICAsIG1faHR0
cFN0YXR1c0NvZGUoMCkKK3sKK30KKwordm9pZCBGaWxlUmVhZGVyU3luY0xvYWRlcjo6c3RhcnQo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBUaHJlYWRh
YmxlTG9hZGVyT3B0aW9ucyBvcHRpb25zOworICAgIG9wdGlvbnMuc2VuZExvYWRDYWxsYmFja3Mg
PSB0cnVlOworICAgIG9wdGlvbnMuc25pZmZDb250ZW50ID0gZmFsc2U7CisgICAgb3B0aW9ucy5m
b3JjZVByZWZsaWdodCA9IGZhbHNlOworICAgIG9wdGlvbnMuYWxsb3dDcmVkZW50aWFscyA9IHRy
dWU7CisgICAgb3B0aW9ucy5jcm9zc09yaWdpblJlcXVlc3RQb2xpY3kgPSBEZW55Q3Jvc3NPcmln
aW5SZXF1ZXN0czsKKworICAgIFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9u
b3VzbHkoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgcmVxdWVzdCwgKnRoaXMsIG9wdGlvbnMpOwor
CisgICAgZWMgPSAobV9odHRwU3RhdHVzQ29kZSA9PSAyMDApID8gMCA6IEZpbGVSZWFkZXI6Omh0
dHBTdGF0dXNDb2RlVG9FeGNlcHRpb25Db2RlKG1faHR0cFN0YXR1c0NvZGUpOworfQorCit2b2lk
IEZpbGVSZWFkZXJTeW5jTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UpCit7CisgICAgbV9odHRwU3RhdHVzQ29kZSA9IHJlc3BvbnNlLmh0
dHBTdGF0dXNDb2RlKCk7Cit9CisKK3ZvaWQgRmlsZVJlYWRlclN5bmNMb2FkZXI6OmRpZFJlY2Vp
dmVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGhSZWNlaXZlZCkKK3sKKyAgICBpZiAo
bV9yZXN1bHQpCisgICAgICAgICptX3Jlc3VsdCArPSBTdHJpbmcoZGF0YSwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KGxlbmd0aFJlY2VpdmVkKSk7CisgICAgZWxzZQorICAgICAgICBtX3Jhd0RhdGEu
YXBwZW5kKGRhdGEsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihsZW5ndGhSZWNlaXZlZCkpOworfQor
Cit2b2lkIEZpbGVSZWFkZXJTeW5jTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxv
bmcpCit7Cit9CisKK3ZvaWQgRmlsZVJlYWRlclN5bmNMb2FkZXI6OmRpZEZhaWwoY29uc3QgUmVz
b3VyY2VFcnJvciYpCit7CisgICAgLy8gVHJlYXQgYXMgaW50ZXJuYWwgZXJyb3IuCisgICAgbV9o
dHRwU3RhdHVzQ29kZSA9IDUwMDsKK30KKworRmlsZVJlYWRlclN5bmM6OkZpbGVSZWFkZXJTeW5j
KCkKKyAgICA6IG1fcmVzdWx0KCIiKQoreworfQorCitjb25zdCBTY3JpcHRTdHJpbmcmIEZpbGVS
ZWFkZXJTeW5jOjpyZWFkQXNCaW5hcnlTdHJpbmcoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCwgQmxvYiogYmxvYiwgRXhjZXB0aW9uQ29kZSYgZWMpCit7Cisg
ICAgaWYgKCFibG9iKQorICAgICAgICByZXR1cm4gbV9yZXN1bHQ7CisKKyAgICByZWFkKHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQsIGJsb2IsIFJlYWRBc0JpbmFyeVN0cmluZywgZWMpOworICAgIHJl
dHVybiBtX3Jlc3VsdDsKK30KKworY29uc3QgU2NyaXB0U3RyaW5nJiBGaWxlUmVhZGVyU3luYzo6
cmVhZEFzVGV4dChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0
LCBCbG9iKiBibG9iLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nLCBFeGNlcHRpb25Db2RlJiBlYykK
K3sKKyAgICBpZiAoIWJsb2IpCisgICAgICAgIHJldHVybiBtX3Jlc3VsdDsKKworICAgIG1fZW5j
b2RpbmcgPSBlbmNvZGluZzsKKyAgICByZWFkKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIGJsb2Is
IFJlYWRBc1RleHQsIGVjKTsKKyAgICByZXR1cm4gbV9yZXN1bHQ7Cit9CisKK2NvbnN0IFNjcmlw
dFN0cmluZyYgRmlsZVJlYWRlclN5bmM6OnJlYWRBc0RhdGFVUkwoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgQmxvYiogYmxvYiwgRXhjZXB0aW9uQ29kZSYg
ZWMpCit7CisgICAgaWYgKCFibG9iKQorICAgICAgICByZXR1cm4gbV9yZXN1bHQ7CisKKyAgICBy
ZWFkKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIGJsb2IsIFJlYWRBc0RhdGFVUkwsIGVjKTsKKyAg
ICByZXR1cm4gbV9yZXN1bHQ7Cit9CisKK3ZvaWQgRmlsZVJlYWRlclN5bmM6OnJlYWQoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgQmxvYiogYmxvYiwgUmVh
ZFR5cGUgcmVhZFR5cGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIC8vIFRoZSBibG9iIGlz
IHJlYWQgYnkgcm91dGluZyB0aHJvdWdoIHRoZSByZXF1ZXN0IGhhbmRsaW5nIGxheWVyIGdpdmVu
IHRoZSBibG9iIHVybC4KKyAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChibG9iLT51cmwoKSk7
CisgICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9kKCJHRVQiKTsKKworICAgIEZpbGVSZWFkZXJTeW5j
TG9hZGVyIGxvYWRlcigocmVhZFR5cGUgPT0gUmVhZEFzQmluYXJ5U3RyaW5nKSA/ICZtX3Jlc3Vs
dCA6IDApOworICAgIGxvYWRlci5zdGFydChzY3JpcHRFeGVjdXRpb25Db250ZXh0LCByZXF1ZXN0
LCBlYyk7CisgICAgaWYgKGVjKQorICAgICAgICByZXR1cm47CisKKyAgICBzd2l0Y2ggKHJlYWRU
eXBlKSB7CisgICAgY2FzZSBSZWFkQXNCaW5hcnlTdHJpbmc6CisgICAgICAgIC8vIE5vdGhpbmcg
dG8gZG8gc2luY2Ugd2UgbmVlZCBubyBjb252ZXJzaW9uLgorICAgICAgICByZXR1cm47CisgICAg
Y2FzZSBSZWFkQXNUZXh0OgorICAgICAgICBjb252ZXJ0VG9UZXh0KGxvYWRlci5yYXdEYXRhKCks
IG1fcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgUmVhZEFzRGF0YVVSTDoKKyAg
ICAgICAgRmlsZVJlYWRlcjo6Y29udmVydFRvRGF0YVVSTChsb2FkZXIucmF3RGF0YSgpLCBibG9i
LT50eXBlKCksIG1fcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworfQorCit2b2lkIEZpbGVSZWFkZXJTeW5jOjpjb252ZXJ0VG9UZXh0
KGNvbnN0IFZlY3RvcjxjaGFyPiYgcmF3RGF0YSwgU2NyaXB0U3RyaW5nJiByZXN1bHQpCit7Cisg
ICAgaWYgKCFyYXdEYXRhLnNpemUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gRGVjb2Rl
IHRoZSBkYXRhLgorICAgIC8vIFRoZSBGaWxlIEFQSSBzcGVjIHNheXMgdGhhdCB3ZSBzaG91bGQg
dXNlIHRoZSBzdXBwbGllZCBlbmNvZGluZyBpZiBpdCBpcyB2YWxpZC4gSG93ZXZlciwgd2UgY2hv
b3NlIHRvIGlnbm9yZSB0aGlzCisgICAgLy8gcmVxdWlyZW1lbnQgaW4gb3JkZXIgdG8gYmUgY29u
c2lzdGVudCB3aXRoIGhvdyBXZWJLaXQgZGVjb2RlcyB0aGUgd2ViIGNvbnRlbnQ6IGFsd2F5cyBo
YXZlIHRoZSBCT00gb3ZlcnJpZGUgdGhlCisgICAgLy8gcHJvdmlkZWQgZW5jb2RpbmcuICAgICAK
KyAgICAvLyBGSVhNRTogY29uc2lkZXIgc3VwcG9ydGluZyBpbmNyZW1lbnRhbCBkZWNvZGluZyB0
byBpbXByb3ZlIHRoZSBwZXJmLgorICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBkZWNv
ZGVyID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0L3BsYWluIiwgbV9lbmNvZGlu
Zy5pc0VtcHR5KCkgPyBVVEY4RW5jb2RpbmcoKSA6IFRleHRFbmNvZGluZyhtX2VuY29kaW5nKSk7
CisgICAgcmVzdWx0ID0gZGVjb2Rlci0+ZGVjb2RlKHJhd0RhdGEuZGF0YSgpLCByYXdEYXRhLnNp
emUoKSk7CisgICAgcmVzdWx0ICs9IGRlY29kZXItPmZsdXNoKCk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKyAKKyNlbmRpZiAvLyBFTkFCTEUoQkxPQikKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvaHRtbC9GaWxlUmVhZGVyU3luYy5oIGIvV2ViQ29yZS9odG1sL0ZpbGVSZWFkZXJTeW5jLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMWM0NzAwZTgxNzJhMGJjOGVkMmRkNWNhODU4MDY3NTk0NDk5ZDJjMQotLS0g
L2Rldi9udWxsCisrKyBiL1dlYkNvcmUvaHRtbC9GaWxlUmVhZGVyU3luYy5oCkBAIC0wLDAgKzEs
OTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6Cisg
KgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAq
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
CisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBGaWxlUmVhZGVyU3luY19oCisjZGVmaW5lIEZpbGVSZWFkZXJTeW5jX2gK
KworI2lmIEVOQUJMRShCTE9CKQorCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1
ZGUgIlNjcmlwdFN0cmluZy5oIgorI2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXJDbGllbnQuaCIK
KyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IEJsb2I7CitjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OworCitjbGFzcyBGaWxlUmVhZGVy
U3luYyA6IHB1YmxpYyBSZWZDb3VudGVkPEZpbGVSZWFkZXJTeW5jPiwgcHVibGljIFRocmVhZGFi
bGVMb2FkZXJDbGllbnQgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZpbGVSZWFk
ZXJTeW5jPiBjcmVhdGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBGaWxl
UmVhZGVyU3luYygpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5GaWxlUmVhZGVyU3luYygpIHsg
fQorCisgICAgY29uc3QgU2NyaXB0U3RyaW5nJiByZWFkQXNCaW5hcnlTdHJpbmcoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIEJsb2IqLCBFeGNlcHRpb25Db2RlJik7CisgICAgY29uc3QgU2NyaXB0
U3RyaW5nJiByZWFkQXNUZXh0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQsIEJsb2IqIGJsb2IsIEV4Y2VwdGlvbkNvZGUmIGVjKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIHJlYWRBc1RleHQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgYmxvYiwgIiIsIGVjKTsK
KyAgICB9CisgICAgY29uc3QgU2NyaXB0U3RyaW5nJiByZWFkQXNUZXh0KFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBCbG9iKiwgY29uc3QgU3RyaW5nJiBlbmNvZGluZywgRXhjZXB0aW9uQ29kZSYp
OworICAgIGNvbnN0IFNjcmlwdFN0cmluZyYgcmVhZEFzRGF0YVVSTChTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgQmxvYiosIEV4Y2VwdGlvbkNvZGUmKTsKKworcHJpdmF0ZToKKyAgICBlbnVtIFJl
YWRUeXBlIHsKKyAgICAgICAgUmVhZEFzQmluYXJ5U3RyaW5nLAorICAgICAgICBSZWFkQXNUZXh0
LAorICAgICAgICBSZWFkQXNEYXRhVVJMCisgICAgfTsKKworICAgIEZpbGVSZWFkZXJTeW5jKCk7
CisgICAgCisgICAgdm9pZCByZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBCbG9iKiwgUmVh
ZFR5cGUsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIGNvbnZlcnRUb1RleHQoY29uc3QgVmVj
dG9yPGNoYXI+JiByYXdEYXRhLCBTY3JpcHRTdHJpbmcmIHJlc3VsdCk7CisKKyAgICAvLyBMaWtl
IFhNTEh0dHBSZXF1ZXN0Lm1fcmVzcG9uc2VUZXh0LCB3ZSBrZWVwIHRoaXMgYXMgYSBTY3JpcHRT
dHJpbmcsIG5vdCBhIFdURjo6U3RyaW5nLgorICAgIC8vIFRoYXQncyBiZWNhdXNlIHRoZXNlIHN0
cmluZ3MgY2FuIGVhc2lseSBnZXQgaHVnZSAodGhleSBhcmUgZmlsbGVkIGZyb20gdGhlIGZpbGUp
IGFuZAorICAgIC8vIGJlY2F1c2UgSlMgY2FuIGVhc2lseSBvYnNlcnZlIG1hbnkgaW50ZXJtZWRp
YXRlIHN0YXRlcywgc28gaXQncyB2ZXJ5IHVzZWZ1bCB0byBiZQorICAgIC8vIGFibGUgdG8gc2hh
cmUgdGhlIGJ1ZmZlciB3aXRoIEphdmFTY3JpcHQgdmVyc2lvbnMgb2YgdGhlIHdob2xlIG9yIHBh
cnRpYWwgc3RyaW5nLgorICAgIC8vIEluIGNvbnRyYXN0LCB0aGlzIHN0cmluZyBkb2Vzbid0IGlu
dGVyYWN0IG11Y2ggd2l0aCB0aGUgcmVzdCBvZiB0aGUgZW5naW5lIHNvIGl0J3Mgbm90IHRoYXQK
KyAgICAvLyBiaWcgYSBjb3N0IHRoYXQgaXQgaXNuJ3QgYSBTdHJpbmcuCisgICAgU2NyaXB0U3Ry
aW5nIG1fcmVzdWx0OworCisgICAgU3RyaW5nIG1fZW5jb2Rpbmc7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoQkxPQikKKworI2VuZGlmIC8vIEZpbGVS
ZWFkZXJTeW5jX2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9GaWxlUmVhZGVyU3luYy5pZGwg
Yi9XZWJDb3JlL2h0bWwvRmlsZVJlYWRlclN5bmMuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcyODE4YjFhNGI0
ZTViNDI2MDZmOTY2YjE3Njg2MjAxZTliN2QwNjIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3Jl
L2h0bWwvRmlsZVJlYWRlclN5bmMuaWRsCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlv
bi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworbW9kdWxlIGh0bWwgewor
ICAgIGludGVyZmFjZSBbCisgICAgICAgIENvbmRpdGlvbmFsPUJMT0IsCisgICAgICAgIENhbkJl
Q29uc3RydWN0ZWQsCisgICAgICAgIE5vU3RhdGljVGFibGVzCisgICAgXSBGaWxlUmVhZGVyU3lu
YyB7CisgICAgICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LCBDb252ZXJ0U2Ny
aXB0U3RyaW5nXSBET01TdHJpbmcgcmVhZEFzQmluYXJ5U3RyaW5nKGluIEJsb2IgYmxvYikKKyAg
ICAgICAgICAgIHJhaXNlcyhGaWxlRXhjZXB0aW9uKTsKKyAgICAgICAgW0NhbGxXaXRoPVNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQsIENvbnZlcnRTY3JpcHRTdHJpbmddIERPTVN0cmluZyByZWFkQXNU
ZXh0KGluIEJsb2IgYmxvYiwgaW4gW09wdGlvbmFsXSBET01TdHJpbmcgZW5jb2RpbmcpCisgICAg
ICAgICAgICByYWlzZXMoRmlsZUV4Y2VwdGlvbik7CisgICAgICAgIFtDYWxsV2l0aD1TY3JpcHRF
eGVjdXRpb25Db250ZXh0LCBDb252ZXJ0U2NyaXB0U3RyaW5nXSBET01TdHJpbmcgcmVhZEFzRGF0
YVVSTChpbiBCbG9iIGJsb2IpCisgICAgICAgICAgICByYWlzZXMoRmlsZUV4Y2VwdGlvbik7Cisg
ICAgfTsKK30KZGlmZiAtLWdpdCBhL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmlkbCBi
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmlkbAppbmRleCAyN2I0YjE0YWMyNDM4NTZj
MzcwMmJjNzNhNzAyMjBkMzY5MmViMDc1Li44MWE2ODFhODEyOGNjZWM4ZDY4NGRiOTgzMDUyZDMz
MDcyOThkODMyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5pZGwK
KysrIGIvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaWRsCkBAIC05Niw2ICs5NiwxMiBA
QCBtb2R1bGUgdGhyZWFkcyB7CiAgICAgICAgIGF0dHJpYnV0ZSBbSlNDQ3VzdG9tR2V0dGVyLEVu
YWJsZWRBdFJ1bnRpbWVdIFdlYlNvY2tldENvbnN0cnVjdG9yIFdlYlNvY2tldDsgLy8gVXNhYmxl
IHdpdGggdGhlIG5ldyBvcGVyYXRvcgogI2VuZGlmCiAjZW5kaWYKKworI2lmIGRlZmluZWQoRU5B
QkxFX0JMT0IpICYmIEVOQUJMRV9CTE9CCisgICAgICAgIGF0dHJpYnV0ZSBCbG9iQnVpbGRlckNv
bnN0cnVjdG9yIEJsb2JCdWlsZGVyOworICAgICAgICBhdHRyaWJ1dGUgRmlsZVJlYWRlckNvbnN0
cnVjdG9yIEZpbGVSZWFkZXI7CisgICAgICAgIGF0dHJpYnV0ZSBGaWxlUmVhZGVyU3luY0NvbnN0
cnVjdG9yIEZpbGVSZWFkZXJTeW5jOworI2VuZGlmCiAgICAgfTsKIAogfQo=
</data>
<flag name="review"
          id="54654"
          type_id="1"
          status="+"
          setter="levin"
    />
    <flag name="commit-queue"
          id="54655"
          type_id="3"
          status="-"
          setter="jianli"
    />
          </attachment>
      

    </bug>

</bugzilla>