<?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>119436</bug_id>
          
          <creation_ts>2013-08-02 01:15:27 -0700</creation_ts>
          <short_desc>[curl] Improve detecting and handling of SSL related errors</short_desc>
          <delta_ts>2014-05-27 05:05:36 -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 Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>117300</blocked>
    
    <blocked>124569</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter>sipka</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>davidsz</cc>
    
    <cc>galpeter</cc>
    
    <cc>peavo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>914055</commentid>
    <comment_count>0</comment_count>
      <attachid>207993</attachid>
    <who name="">sipka</who>
    <bug_when>2013-08-02 01:15:27 -0700</bug_when>
    <thetext>Created attachment 207993
First draft

Enable SSL verification when we have a way of shipping certs and/or reporting SSL errors to the user.
The certificate verification result reported for the user. The enabled domains are stored in a non-persistent way and the certificate are saved into a pem format file. 
Future plan is to stop the communication until the user gives an answer to enable or disable those sites, which have invalid certificates and separate the enable domains and save function of the certs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>938797</commentid>
    <comment_count>1</comment_count>
      <attachid>213988</attachid>
    <who name="">sipka</who>
    <bug_when>2013-10-11 08:10:07 -0700</bug_when>
    <thetext>Created attachment 213988
working progress patch

Enable SSL verification when we have a way of shipping certs and/or reporting SSL errors to the user.
Set the exact SSL verification error on CURL and store the enabled domain with certificate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939414</commentid>
    <comment_count>2</comment_count>
    <who name="Peter Gal">galpeter</who>
    <bug_when>2013-10-14 04:36:56 -0700</bug_when>
    <thetext>peavo could you help us a bit: on wincairo does the libcurl uses openssl? or it uses some other ssl library? We would like to extract additional informations from bad certificates.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939892</commentid>
    <comment_count>3</comment_count>
    <who name="">peavo</who>
    <bug_when>2013-10-15 01:54:34 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; peavo could you help us a bit: on wincairo does the libcurl uses openssl? or it uses some other ssl library? We would like to extract additional informations from bad certificates.

Yes, I believe wincairo uses openssl. It is built with the define USE_SSLEAY, and depends on the dll ssleay32.dll.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>940348</commentid>
    <comment_count>4</comment_count>
      <attachid>214354</attachid>
    <who name="">sipka</who>
    <bug_when>2013-10-16 04:47:21 -0700</bug_when>
    <thetext>Created attachment 214354
working progress patch v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>940349</commentid>
    <comment_count>5</comment_count>
    <who name="">sipka</who>
    <bug_when>2013-10-16 04:52:11 -0700</bug_when>
    <thetext>Now also Win platform is supported. 
Peavo, would you help me to test this on wincairo?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>940656</commentid>
    <comment_count>6</comment_count>
    <who name="">peavo</who>
    <bug_when>2013-10-16 23:32:51 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Now also Win platform is supported. 
&gt; Peavo, would you help me to test this on wincairo?

Yes, will do :) Which cases do you want me to test?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>940689</commentid>
    <comment_count>7</comment_count>
    <who name="">sipka</who>
    <bug_when>2013-10-17 01:04:39 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #5)
&gt; &gt; Now also Win platform is supported. 
&gt; &gt; Peavo, would you help me to test this on wincairo?
&gt; 
&gt; Yes, will do :) Which cases do you want me to test?

There are some websites that throw  an SSL/TLS handshake fail, could you please run some tests and find out whether or not the security certificate of these sites can be accepted in order to load the content?  It is also important to have MiniBrowser remember these certificate informations in runtime, so it wont ask the user for permission every single time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>941485</commentid>
    <comment_count>8</comment_count>
    <who name="">peavo</who>
    <bug_when>2013-10-19 04:40:34 -0700</bug_when>
    <thetext>I get the following compile error:

&gt;..\platform\network\curl\SSLHandle.cpp(64): error C2144: syntax error : &apos;unsigned int&apos; should be preceded by &apos;;&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>941745</commentid>
    <comment_count>9</comment_count>
      <attachid>214710</attachid>
    <who name="">sipka</who>
    <bug_when>2013-10-21 00:59:07 -0700</bug_when>
    <thetext>Created attachment 214710
working progress patch

peavo: Yes, it&apos;s careless error that has been corrected with this patch. Could you repeat the test please?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>941838</commentid>
    <comment_count>10</comment_count>
    <who name="">peavo</who>
    <bug_when>2013-10-21 07:25:38 -0700</bug_when>
    <thetext>&gt; static int certVerifyCallback(int ok, X509_STORE_CTX *ctx)
&gt; {
&gt;    // whether the verification of the certificate in question was passed (preverify_ok=1) or not (preverify_ok=0)

&gt;    unsigned err = X509_STORE_CTX_get_error(ctx);
&gt;    if (!err)
&gt;        return 1;

I never get past this, err is always 0, is that correct?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>941955</commentid>
    <comment_count>11</comment_count>
    <who name="">sipka</who>
    <bug_when>2013-10-21 12:10:00 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; &gt; static int certVerifyCallback(int ok, X509_STORE_CTX *ctx)
&gt; &gt; {
&gt; &gt;    // whether the verification of the certificate in question was passed (preverify_ok=1) or not (preverify_ok=0)
&gt; 
&gt; &gt;    unsigned err = X509_STORE_CTX_get_error(ctx);
&gt; &gt;    if (!err)
&gt; &gt;        return 1;
&gt; 
&gt; I never get past this, err is always 0, is that correct?

In those cases too, where the certificate is untrusted?
On the website below you can test the error messages you receive self-signed SSL certificate:
https://www.pcwebshop.co.uk/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942232</commentid>
    <comment_count>12</comment_count>
    <who name="">peavo</who>
    <bug_when>2013-10-22 04:41:41 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; &gt; 
&gt; &gt; I never get past this, err is always 0, is that correct?
&gt; 
&gt; In those cases too, where the certificate is untrusted?
&gt; On the website below you can test the error messages you receive self-signed SSL certificate:
&gt; https://www.pcwebshop.co.uk/

Yes, I have tried https://duckduckgo.com, without a pem file, and err == 0.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942246</commentid>
    <comment_count>13</comment_count>
    <who name="">sipka</who>
    <bug_when>2013-10-22 05:19:34 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (In reply to comment #11)
&gt; &gt; &gt; 
&gt; &gt; &gt; I never get past this, err is always 0, is that correct?
&gt; &gt; 
&gt; &gt; In those cases too, where the certificate is untrusted?
&gt; &gt; On the website below you can test the error messages you receive self-signed SSL certificate:
&gt; &gt; https://www.pcwebshop.co.uk/
&gt; 
&gt; Yes, I have tried https://duckduckgo.com, without a pem file, and err == 0.

Have you got any SSL warnings on any sites where the content didn&apos;t load? (e.g.: SSL handshake error) If so, can you ignore them?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942392</commentid>
    <comment_count>14</comment_count>
    <who name="">peavo</who>
    <bug_when>2013-10-22 13:19:20 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (In reply to comment #12)
&gt; &gt; (In reply to comment #11)
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; I never get past this, err is always 0, is that correct?
&gt; &gt; &gt; 
&gt; &gt; &gt; In those cases too, where the certificate is untrusted?
&gt; &gt; &gt; On the website below you can test the error messages you receive self-signed SSL certificate:
&gt; &gt; &gt; https://www.pcwebshop.co.uk/
&gt; &gt; 
&gt; &gt; Yes, I have tried https://duckduckgo.com, without a pem file, and err == 0.
&gt; 
&gt; Have you got any SSL warnings on any sites where the content didn&apos;t load? (e.g.: SSL handshake error) If so, can you ignore them?

OK, I think I know why I am getting err == 0 now.
I am running with the env variable CURL_CA_BUNDLE_PATH set to a .pem file.
When I visit e.g. https://duckduckgo.com, the certificate is trusted, and err will  of course be zero then. The page then loads fine, which it should :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943064</commentid>
    <comment_count>15</comment_count>
    <who name="">sipka</who>
    <bug_when>2013-10-24 03:42:37 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (In reply to comment #13)
&gt; &gt; (In reply to comment #12)
&gt; &gt; &gt; (In reply to comment #11)
&gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; I never get past this, err is always 0, is that correct?
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; In those cases too, where the certificate is untrusted?
&gt; &gt; &gt; &gt; On the website below you can test the error messages you receive self-signed SSL certificate:
&gt; &gt; &gt; &gt; https://www.pcwebshop.co.uk/
&gt; &gt; &gt; 
&gt; &gt; &gt; Yes, I have tried https://duckduckgo.com, without a pem file, and err == 0.
&gt; &gt; 
&gt; &gt; Have you got any SSL warnings on any sites where the content didn&apos;t load? (e.g.: SSL handshake error) If so, can you ignore them?
&gt; 
&gt; OK, I think I know why I am getting err == 0 now.
&gt; I am running with the env variable CURL_CA_BUNDLE_PATH set to a .pem file.
&gt; When I visit e.g. https://duckduckgo.com, the certificate is trusted, and err will  of course be zero then. The page then loads fine, which it should :)

Ok, thanks a lot. So it seems to work fine on wincairo too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943097</commentid>
    <comment_count>16</comment_count>
    <who name="">peavo</who>
    <bug_when>2013-10-24 06:21:17 -0700</bug_when>
    <thetext>I now tested without a .pem file locally, and when I visit a secure site, I get err == 20 (X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY), which I assume is correct. But the host is not found in the list, so the load fails. How will I add allowed hosts to the host list?

Also, the function bool pemData(X509_STORE_CTX *ctx, String&amp; certificate) compiles fine on Windows, maybe it should be used here as well?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>947696</commentid>
    <comment_count>17</comment_count>
    <who name="">sipka</who>
    <bug_when>2013-11-06 07:53:09 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; I now tested without a .pem file locally, and when I visit a secure site, I get err == 20 (X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY), which I assume is correct. But the host is not found in the list, so the load fails. How will I add allowed hosts to the host list?
&gt;
How can you skipped ssl errors currently in WinCairo? With this patch it should be the same. 
 
&gt; Also, the function bool pemData(X509_STORE_CTX *ctx, String&amp; certificate) compiles fine on Windows, maybe it should be used here as well?

This required to extract additional ssl error informations and currently we cannot test it on windows so we will skip it for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>949227</commentid>
    <comment_count>18</comment_count>
    <who name="">sipka</who>
    <bug_when>2013-11-11 00:09:36 -0800</bug_when>
    <thetext>ping for review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>949577</commentid>
    <comment_count>19</comment_count>
    <who name="">peavo</who>
    <bug_when>2013-11-11 23:31:18 -0800</bug_when>
    <thetext>(In reply to comment #17)
&gt; (In reply to comment #16)
&gt; &gt; I now tested without a .pem file locally, and when I visit a secure site, I get err == 20 (X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY), which I assume is correct. But the host is not found in the list, so the load fails. How will I add allowed hosts to the host list?
&gt; &gt;
&gt; How can you skipped ssl errors currently in WinCairo? With this patch it should be the same. 
&gt; 

I did not skip ssl errors, the load failed. Is there a way to accept the new certificate, to successfully load the page?

&gt; &gt; Also, the function bool pemData(X509_STORE_CTX *ctx, String&amp; certificate) compiles fine on Windows, maybe it should be used here as well?
&gt; 
&gt; This required to extract additional ssl error informations and currently we cannot test it on windows so we will skip it for now.

Ok, it seemed to manage to extract the certificate when I tested :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>949621</commentid>
    <comment_count>20</comment_count>
    <who name="">sipka</who>
    <bug_when>2013-11-12 04:30:17 -0800</bug_when>
    <thetext>(In reply to comment #19)
&gt; (In reply to comment #17)
&gt; &gt; (In reply to comment #16)
&gt; &gt; &gt; I now tested without a .pem file locally, and when I visit a secure site, I get err == 20 (X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY), which I assume is correct. But the host is not found in the list, so the load fails. How will I add allowed hosts to the host list?
&gt; &gt; &gt;
&gt; &gt; How can you skipped ssl errors currently in WinCairo? With this patch it should be the same. 
&gt; &gt; 

seems like the ssl error handler is not yet implemented on win platform and the user can not opt to skip the certificate verification either.

&gt; 
&gt; I did not skip ssl errors, the load failed. Is there a way to accept the new certificate, to successfully load the page?
&gt; 
&gt; &gt; &gt; Also, the function bool pemData(X509_STORE_CTX *ctx, String&amp; certificate) compiles fine on Windows, maybe it should be used here as well?
&gt; &gt; 
&gt; &gt; This required to extract additional ssl error informations and currently we cannot test it on windows so we will skip it for now.
&gt; 
&gt; Ok, it seemed to manage to extract the certificate when I tested :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>950120</commentid>
    <comment_count>21</comment_count>
      <attachid>216791</attachid>
    <who name="">sipka</who>
    <bug_when>2013-11-13 03:55:02 -0800</bug_when>
    <thetext>Created attachment 216791
proposed patch

update for review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>950197</commentid>
    <comment_count>22</comment_count>
      <attachid>216791</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2013-11-13 09:16:36 -0800</bug_when>
    <thetext>Comment on attachment 216791
proposed patch

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

Looks very good!  A few style problems need to be cleaned up, but otherwise this looks great!  Thanks for getting this functionality in place.

&gt; Source/WebCore/platform/network/curl/ResourceHandleManager.cpp:618
&gt; +                ResourceError resourceError = ResourceError(String(), msg-&gt;data.result, String(url), String(curl_easy_strerror(msg-&gt;data.result)));

This construct is a little funny.  Why not just declare resourceError with construction in place?

ResourceError resourceError(String(), msg-&gt;data.result, String(url), String(curl_easy_strerror(msg-&gt;data.result));

&gt; Source/WebCore/platform/network/curl/SSLHandle.cpp:122
&gt; +bool pemData(X509_STORE_CTX *ctx, String&amp; certificate)

We write this as X509_STORE_CTX*

&gt; Source/WebCore/platform/network/curl/SSLHandle.cpp:142
&gt; +static int certVerifyCallback(int ok, X509_STORE_CTX *ctx)

X509_STORE_CTX*

&gt; Source/WebCore/platform/network/curl/SSLHandle.cpp:150
&gt; +    SSL* ssl = (SSL*)X509_STORE_CTX_get_ex_data(ctx, SSL_get_ex_data_X509_STORE_CTX_idx());

This should be a C++-style cast (prob. a reinterpret_cast&lt;SSL*&gt;)

&gt; Source/WebCore/platform/network/curl/SSLHandle.cpp:152
&gt; +    ResourceHandle* job  = (ResourceHandle*)SSL_CTX_get_app_data(sslctx);

C++ style cast.

&gt; Source/WebCore/platform/network/curl/SSLHandle.cpp:170
&gt; +        // so don&apos;t need to curl verifies the authenticity of the peer&apos;s certificate

Because of this large comment, you should wrap the comment and curl_easy_setopt in brackets to make the structure clear:

if (ok) {
    // blah blah
    curl_easy_setopt(...)
}

&gt; Source/WebCore/platform/network/curl/SSLHandle.cpp:175
&gt; +static CURLcode sslctxfun(CURL * curl, void * sslctx, void * parm)

CURL* curl, void* sslctx, void* parm

&gt; Source/WebCore/platform/network/curl/SSLHandle.cpp:177
&gt; +    SSL_CTX_set_app_data((SSL_CTX*)sslctx, parm);

C++-style casts, please.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>950198</commentid>
    <comment_count>23</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2013-11-13 09:18:40 -0800</bug_when>
    <thetext>(In reply to comment #22)
&gt; (From update of attachment 216791 [details])
&gt; &gt; Source/WebCore/platform/network/curl/SSLHandle.cpp:150
&gt; &gt; +    SSL* ssl = (SSL*)X509_STORE_CTX_get_ex_data(ctx, SSL_get_ex_data_X509_STORE_CTX_idx());
&gt; 
&gt; This should be a C++-style cast (prob. a reinterpret_cast&lt;SSL*&gt;)

I didn&apos;t do an exhaustive check for C-style casts, so please double-check that all of your casting is done using C++ style.  Sometimes this (annoyingly) requires you to chain a couple of casts together, but it&apos;s still preferred so that it&apos;s explicit what type conversions you are doing.

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>950591</commentid>
    <comment_count>24</comment_count>
      <attachid>216915</attachid>
    <who name="">sipka</who>
    <bug_when>2013-11-14 03:56:54 -0800</bug_when>
    <thetext>Created attachment 216915
proposed patch v2

Thanks for the detailed review! I fixed the style problems you&apos;ve mentioned.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>950987</commentid>
    <comment_count>25</comment_count>
      <attachid>217023</attachid>
    <who name="">sipka</who>
    <bug_when>2013-11-15 01:27:13 -0800</bug_when>
    <thetext>Created attachment 217023
proposed patch

I fixed a careless error and recheck the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>952335</commentid>
    <comment_count>26</comment_count>
      <attachid>217023</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2013-11-19 17:20:27 -0800</bug_when>
    <thetext>Comment on attachment 217023
proposed patch

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

Looks very good.  Looking at this in more detail I had a few questions, as well as a concern about initialization of m_sslErrors.

&gt; Source/WebCore/platform/network/ResourceHandleInternal.h:182
&gt; +        unsigned m_sslErrors;

This will not get initialized on other platforms. Maybe this should be protected by #if USE(CURL) or something?

&gt; Source/WebCore/platform/network/curl/ResourceHandleCurl.cpp:121
&gt; +    allowsAnyHTTPSCertificateHosts(host.lower());

This says the key is always lower-case...

&gt; Source/WebCore/platform/network/curl/SSLHandle.cpp:40
&gt; +void allowsAnyHTTPSCertificateHosts(const String&amp; host)

... host always seems to be supplied as lower case.

&gt; Source/WebCore/platform/network/curl/SSLHandle.cpp:54
&gt; +            it-&gt;value = cert;

What is the case-ness of &apos;cert&apos;?  Is it always lower case? Mixed case?

&gt; Source/WebCore/platform/network/curl/SSLHandle.cpp:57
&gt; +        if (it-&gt;value == cert)

This comparison assumes that the certificate state in allowedHosts is always the same as the passed cert. Do we need case insensitive compare?

&gt; Source/WebCore/platform/network/curl/SSLHandle.cpp:134
&gt; +    long len = BIO_get_mem_data(bio, &amp;data);

len is signed. If it can be negative (e.g., error case) the following code will cause problems.

&gt; Source/WebCore/platform/network/curl/SSLHandle.cpp:136
&gt; +    certificate = data;

Do we care about the case provided by the certificate store?

&gt; Source/WebCore/platform/network/curl/SSLHandle.cpp:165
&gt; +    ok = sslIgnoreHTTPSCertificate(host.lower(), certificate);

So should we be using &quot;certificate.lower()&quot; here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>952588</commentid>
    <comment_count>27</comment_count>
    <who name="">sipka</who>
    <bug_when>2013-11-20 08:01:15 -0800</bug_when>
    <thetext>(In reply to comment #26)
&gt; (From update of attachment 217023 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=217023&amp;action=review
&gt; 
&gt; Looks very good.  Looking at this in more detail I had a few questions, as well as a concern about initialization of m_sslErrors.
&gt; 
Thanks for the detailed review. 

&gt; &gt; Source/WebCore/platform/network/ResourceHandleInternal.h:182
&gt; &gt; +        unsigned m_sslErrors;
&gt; 
&gt; This will not get initialized on other platforms. Maybe this should be protected by #if USE(CURL) or something?
&gt;
Yes, it&apos;s protected by #if USE(CURL). I generated the diffs with bigger lines of context, to show this part.  
 
&gt; &gt; Source/WebCore/platform/network/curl/ResourceHandleCurl.cpp:121
&gt; &gt; +    allowsAnyHTTPSCertificateHosts(host.lower());
&gt; 
&gt; This says the key is always lower-case...
&gt; 

I want to handle/storage the host in insensitive case at here. 

&gt; &gt; Source/WebCore/platform/network/curl/SSLHandle.cpp:40
&gt; &gt; +void allowsAnyHTTPSCertificateHosts(const String&amp; host)
&gt; 
&gt; ... host always seems to be supplied as lower case.
&gt; 
&gt; &gt; Source/WebCore/platform/network/curl/SSLHandle.cpp:54
&gt; &gt; +            it-&gt;value = cert;
&gt; 
&gt; What is the case-ness of &apos;cert&apos;?  Is it always lower case? Mixed case?
&gt; 

It&apos;s mixed case, I get the certificate in PEM format which is simply base64 encoded data.

&gt; &gt; Source/WebCore/platform/network/curl/SSLHandle.cpp:57
&gt; &gt; +        if (it-&gt;value == cert)
&gt; 
&gt; This comparison assumes that the certificate state in allowedHosts is always the same as the passed cert. Do we need case insensitive compare?
&gt; 
We need a case sensitive compare.

&gt; &gt; Source/WebCore/platform/network/curl/SSLHandle.cpp:134
&gt; &gt; +    long len = BIO_get_mem_data(bio, &amp;data);
&gt; 
&gt; len is signed. If it can be negative (e.g., error case) the following code will cause problems.

Yes, the BIO_get_mem_data returns with a long value and it&apos;s possible to be a negative value. I fixed this part. 

&gt; 
&gt; &gt; Source/WebCore/platform/network/curl/SSLHandle.cpp:136
&gt; &gt; +    certificate = data;
&gt; 
&gt; Do we care about the case provided by the certificate store?
&gt; 
Yes, mixed case is important. 

&gt; &gt; Source/WebCore/platform/network/curl/SSLHandle.cpp:165
&gt; &gt; +    ok = sslIgnoreHTTPSCertificate(host.lower(), certificate);
&gt; 
&gt; So should we be using &quot;certificate.lower()&quot; here?

No, we need to pass the certificate in mixed case to handle this base64 encoded data.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>952589</commentid>
    <comment_count>28</comment_count>
      <attachid>217434</attachid>
    <who name="">sipka</who>
    <bug_when>2013-11-20 08:01:46 -0800</bug_when>
    <thetext>Created attachment 217434
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>952592</commentid>
    <comment_count>29</comment_count>
      <attachid>217435</attachid>
    <who name="">sipka</who>
    <bug_when>2013-11-20 08:05:00 -0800</bug_when>
    <thetext>Created attachment 217435
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>952640</commentid>
    <comment_count>30</comment_count>
      <attachid>217435</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2013-11-20 09:55:42 -0800</bug_when>
    <thetext>Comment on attachment 217435
proposed patch

Great!  Thanks for updating the patch. r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>952642</commentid>
    <comment_count>31</comment_count>
      <attachid>217435</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-11-20 09:56:25 -0800</bug_when>
    <thetext>Comment on attachment 217435
proposed patch

Rejecting attachment 217435 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.appspot.com&apos;, &apos;--bot-id=webkit-cq-02&apos;, &apos;apply-attachment&apos;, &apos;--no-update&apos;, &apos;--non-interactive&apos;, 217435, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
ching file Source/WebCore/platform/network/curl/ResourceError.h
patching file Source/WebCore/platform/network/curl/ResourceHandleCurl.cpp
patching file Source/WebCore/platform/network/curl/ResourceHandleManager.cpp
patching file Source/WebCore/platform/network/curl/SSLHandle.cpp
patching file Source/WebCore/platform/network/curl/SSLHandle.h

Failed to run &quot;[u&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;, &apos;--reviewer&apos;, u&apos;Brent Fulgham&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

Full output: http://webkit-queues.appspot.com/results/30648001</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>952644</commentid>
    <comment_count>32</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2013-11-20 09:57:59 -0800</bug_when>
    <thetext>It looks like the revised format of your patch confused the landing system. Can you just generate the patch one more time with all default settings and I&apos;ll r+ it for landing?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>952736</commentid>
    <comment_count>33</comment_count>
      <attachid>217468</attachid>
    <who name="">sipka</who>
    <bug_when>2013-11-20 12:58:16 -0800</bug_when>
    <thetext>Created attachment 217468
proposed patch

just generate the patch one more time with all default settings</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>952793</commentid>
    <comment_count>34</comment_count>
      <attachid>217468</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2013-11-20 14:56:00 -0800</bug_when>
    <thetext>Comment on attachment 217468
proposed patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>952806</commentid>
    <comment_count>35</comment_count>
      <attachid>217468</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-11-20 15:23:15 -0800</bug_when>
    <thetext>Comment on attachment 217468
proposed patch

Clearing flags on attachment: 217468

Committed r159587: &lt;http://trac.webkit.org/changeset/159587&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>952809</commentid>
    <comment_count>36</comment_count>
      <attachid>217468</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-11-20 15:28:11 -0800</bug_when>
    <thetext>Comment on attachment 217468
proposed patch

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

&gt; Source/WebCore/platform/network/curl/SSLHandle.cpp:46
&gt; +    HashMap&lt;String, String&gt;::iterator it = allowedHosts.find(host);
&gt; +    if (it != allowedHosts.end())
&gt; +        it-&gt;value = String();
&gt; +    else
&gt; +        allowedHosts.add(host, String());

This should be written like this:

    allowedHosts.set(host, String());

It doesn’t require multiple lines of code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>952999</commentid>
    <comment_count>37</comment_count>
    <who name="">sipka</who>
    <bug_when>2013-11-21 01:52:06 -0800</bug_when>
    <thetext>(In reply to comment #36)
&gt; (From update of attachment 217468 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=217468&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/network/curl/SSLHandle.cpp:46
&gt; &gt; +    HashMap&lt;String, String&gt;::iterator it = allowedHosts.find(host);
&gt; &gt; +    if (it != allowedHosts.end())
&gt; &gt; +        it-&gt;value = String();
&gt; &gt; +    else
&gt; &gt; +        allowedHosts.add(host, String());
&gt; 
&gt; This should be written like this:
&gt; 
&gt;     allowedHosts.set(host, String());
&gt; 
&gt; It doesn’t require multiple lines of code.

Yes, you are right, thanks. I paid attention to it in Bug124569.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1011941</commentid>
    <comment_count>38</comment_count>
    <who name="">sipka</who>
    <bug_when>2014-05-27 05:05:36 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>207993</attachid>
            <date>2013-08-02 01:15:27 -0700</date>
            <delta_ts>2013-10-11 08:10:07 -0700</delta_ts>
            <desc>First draft</desc>
            <filename>sslworkingprogresspatch.diff</filename>
            <type>text/plain</type>
            <size>20780</size>
            <attacher>sipka</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTml4LmNtYWtlIGIvU291cmNlL1dl
YkNvcmUvUGxhdGZvcm1OaXguY21ha2UKaW5kZXggNmYzODk4Zi4uMzRmYTE5NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1OaXguY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUv
UGxhdGZvcm1OaXguY21ha2UKQEAgLTI5Miw2ICsyOTIsNyBAQCBpZiAoV1RGX1VTRV9DVVJMKQog
ICAgICAgICBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcAogICAg
ICAgICBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVNYW5hZ2VyLmNwcAogICAg
ICAgICBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlQ3VybC5jcHAKKyAg
ICAgICAgcGxhdGZvcm0vbmV0d29yay9jdXJsL1NTTE1hbmFnZXIuY3BwCiAgICAgKQogCiAgICAg
bGlzdChBUFBFTkQgV2ViQ29yZV9MSUJSQVJJRVMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZU1hbmFnZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlTWFuYWdlci5jcHAK
aW5kZXggMjVjMjE3MS4uZDE3NWJiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlTWFuYWdlci5jcHAKQEAg
LTEsMyArMSw0IEBACisKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDYgQXBwbGUgQ29t
cHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYg
TWljaGFlbCBFbW1lbCBtaWtlLmVtbWVsQGdtYWlsLmNvbQpAQCAtNTksNiArNjAsMTAgQEAKICNk
ZWZpbmUgTUFYX1BBVEggTUFYUEFUSExFTgogI2VuZGlmCiAKKyNpbmNsdWRlICJTU0xNYW5hZ2Vy
LmgiCisjaW5jbHVkZSA8aW9zdHJlYW0+IAorI2luY2x1ZGUgPG9wZW5zc2wveDUwOV92ZnkuaD4K
KwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjb25zdCBpbnQgc2VsZWN0VGltZW91dE1TID0gNTsK
QEAgLTkwOCwxMyArOTEzLDE2IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGVNYW5hZ2VyOjppbml0aWFs
aXplSGFuZGxlKFJlc291cmNlSGFuZGxlKiBqb2IpCiAgICAgY3VybF9lYXN5X3NldG9wdChkLT5t
X2hhbmRsZSwgQ1VSTE9QVF9ETlNfQ0FDSEVfVElNRU9VVCwgNjAgKiA1KTsgLy8gNSBtaW51dGVz
CiAgICAgY3VybF9lYXN5X3NldG9wdChkLT5tX2hhbmRsZSwgQ1VSTE9QVF9QUk9UT0NPTFMsIGFs
bG93ZWRQcm90b2NvbHMpOwogICAgIGN1cmxfZWFzeV9zZXRvcHQoZC0+bV9oYW5kbGUsIENVUkxP
UFRfUkVESVJfUFJPVE9DT0xTLCBhbGxvd2VkUHJvdG9jb2xzKTsKKyAgICAvL2N1cmxfZWFzeV9z
ZXRvcHQoZC0+bV9oYW5kbGUsIENVUkxPUFRfQ0FQQVRILCAiLi9jZXJ0cy8iKTsKKyAgICAKKyAg
ICBTU0xNYW5hZ2VyJiBzc2xNYW5hZ2VyID0gU1NMTWFuYWdlcjo6SW5zdGFuY2UoKTsKICAgICAv
LyBGSVhNRTogRW5hYmxlIFNTTCB2ZXJpZmljYXRpb24gd2hlbiB3ZSBoYXZlIGEgd2F5IG9mIHNo
aXBwaW5nIGNlcnRzCiAgICAgLy8gYW5kL29yIHJlcG9ydGluZyBTU0wgZXJyb3JzIHRvIHRoZSB1
c2VyLgogICAgIGlmIChpZ25vcmVTU0xFcnJvcnMpCi0gICAgICAgIGN1cmxfZWFzeV9zZXRvcHQo
ZC0+bV9oYW5kbGUsIENVUkxPUFRfU1NMX1ZFUklGWVBFRVIsIGZhbHNlKTsKKyAgICAgICAgc3Ns
TWFuYWdlci5lbmFibGVDZXJ0aWZpY2F0ZXMoZC0+bV9oYW5kbGUpOwogCiAgICAgaWYgKCFtX2Nl
cnRpZmljYXRlUGF0aC5pc051bGwoKSkKLSAgICAgICBjdXJsX2Vhc3lfc2V0b3B0KGQtPm1faGFu
ZGxlLCBDVVJMT1BUX0NBSU5GTywgbV9jZXJ0aWZpY2F0ZVBhdGguZGF0YSgpKTsKKyAgICAgICAg
c3NsTWFuYWdlci5zZXRDQUluZm8oZC0+bV9oYW5kbGUsIG1fY2VydGlmaWNhdGVQYXRoLmRhdGEo
KSk7CiAKICAgICAvLyBlbmFibGUgZ3ppcCBhbmQgZGVmbGF0ZSB0aHJvdWdoIEFjY2VwdC1FbmNv
ZGluZzoKICAgICBjdXJsX2Vhc3lfc2V0b3B0KGQtPm1faGFuZGxlLCBDVVJMT1BUX0VOQ09ESU5H
LCAiIik7CkBAIC05NDYsNiArOTU0LDE4IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGVNYW5hZ2VyOjpp
bml0aWFsaXplSGFuZGxlKFJlc291cmNlSGFuZGxlKiBqb2IpCiAgICAgICAgIH0KICAgICB9CiAK
KyAgICBzc2xNYW5hZ2VyLnNldFNTTEVuYWJsZWQoIXNzbE1hbmFnZXIuaXNJbnZhbGlkQ2VydGlm
aWNhdGlvbihkLT5tX2hhbmRsZSkpOworICAgIGxvbmcgdmVyaWZ5UmVzdWx0ID0gc3NsTWFuYWdl
ci5nZXRWZXJpZnlSZXN1bHQoKTsKKyAgICBpZiAodmVyaWZ5UmVzdWx0ICE9IFg1MDlfVl9PSyAm
JiAhc3NsTWFuYWdlci5nZXRTU0xFbmFibGVkKCkpIHsgICAgICAgIAorICAgICAgICAvLyBGSVhN
RTogRW5hYmxlIFNTTCB2ZXJpZmljYXRpb24gYnkgdXNlciwgbmVlZCB0byBoYW5kbGUgYXN5bmMg
ZXZlbnRzIAorICAgICAgICBpZiAoc3NsTWFuYWdlci5nZXRBbnN3ZXIoKSkgeworICAgICAgICAg
ICAgc3NsTWFuYWdlci5lbmFibGVDZXJ0aWZpY2F0ZXMoZC0+bV9oYW5kbGUpOworICAgICAgICAg
ICAgaWYgKCFtX2NlcnRpZmljYXRlUGF0aC5pc051bGwoKSkgCisgICAgICAgICAgICAgICAgc3Ns
TWFuYWdlci5zZXRDZXJ0aWZpY2F0aW9uTGlzdChkLT5tX2hhbmRsZSwgbV9jZXJ0aWZpY2F0ZVBh
dGguZGF0YSgpKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAodmVyaWZ5UmVzdWx0ICE9IFg1
MDlfVl9PSyAmJiBzc2xNYW5hZ2VyLmdldFNTTEVuYWJsZWQoKSkgCisgICAgICAgIHNzbE1hbmFn
ZXIuZW5hYmxlQ2VydGlmaWNhdGVzKGQtPm1faGFuZGxlKTsgICAgIAorICAgIAogICAgIFN0cmlu
ZyBjb29raWVzID0gQ29va2llTWFuYWdlcjo6Z2V0SW5zdGFuY2UoKS5jb29raWVzRm9yU2Vzc2lv
bihLVVJMKFBhcnNlZFVSTFN0cmluZywgZC0+bV91cmwpLCBXaXRoSHR0cE9ubHlDb29raWVzKTsK
ICAgICBpZiAoIWNvb2tpZXMuaXNFbXB0eSgpKSB7CiAgICAgICAgIFN0cmluZyBoZWFkZXIoIkNv
b2tpZTogIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvU1NMTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
U1NMTWFuYWdlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjM2M2M2
MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9TU0xNYW5hZ2VyLmNwcApAQCAtMCwwICsxLDI5MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMyBVbml2ZXJzaXR5IG9mIFN6ZWdlZAorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8gICAgICAgCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJTU0xNYW5hZ2VyLmgiCisKKyNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSA8ZnN0cmVh
bT4KKyNpbmNsdWRlIDxvcGVuc3NsL3g1MDlfdmZ5Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworU1NMTWFuYWdlcjo6U1NMTWFuYWdlcigpIDoKKyAgICB2ZXJpZnlSZXN1bHQoMCksIAorICAg
IGNlcnRpZmljYXRlcygpLCAKKyAgICBzc2xFbmFibGVkKGZhbHNlKSwKKyAgICBkb21haW5TZXQo
KQorICAgIHsgfQorCitTU0xNYW5hZ2VyOjp+U1NMTWFuYWdlcigpIHsgfQorCitTU0xNYW5hZ2Vy
JiBTU0xNYW5hZ2VyOjpJbnN0YW5jZSgpCit7CisgICAgc3RhdGljIFNTTE1hbmFnZXIgc3NsTWFu
YWdlcjsKKyAgICByZXR1cm4gc3NsTWFuYWdlcjsKK30KKwordm9pZCBTU0xNYW5hZ2VyOjpzZXRD
QUluZm8oQ1VSTCogaGFuZGxlLCBjb25zdCBjaGFyKiBwQ0FDZXJ0RmlsZSkKK3sKKyAgICBzdGQ6
Omlmc3RyZWFtIGNlcnRGaWxlKHBDQUNlcnRGaWxlKTsKKyAgICBpZiAoY2VydEZpbGUuZ29vZCgp
KSAKKyAgICAgICAgY3VybF9lYXN5X3NldG9wdChoYW5kbGUsIENVUkxPUFRfQ0FJTkZPLCBwQ0FD
ZXJ0RmlsZSk7Cit9CisKK2Jvb2wgU1NMTWFuYWdlcjo6aXNFbmFibGVkRG9tYWluKENVUkwqIGhh
bmRsZSkgCit7CisgICAgY2hhciogdXJsOworICAgIGN1cmxfZWFzeV9nZXRpbmZvKGhhbmRsZSwg
Q1VSTElORk9fRUZGRUNUSVZFX1VSTCwgJnVybCk7CisgICAgS1VSTCBrdXJsID0gS1VSTChQYXJz
ZWRVUkxTdHJpbmcsIHVybCk7CisgICAgcmV0dXJuIChkb21haW5TZXQuZmluZChrdXJsLmhvc3Qo
KSkgIT0gZG9tYWluU2V0LmVuZCgpKTsgCit9CisKK3ZvaWQgU1NMTWFuYWdlcjo6c2V0U1NMRW5h
YmxlZChib29sIHZhbHVlKSAKK3sKKyAgICBzc2xFbmFibGVkID0gdmFsdWU7Cit9CisKK2Jvb2wg
U1NMTWFuYWdlcjo6Z2V0U1NMRW5hYmxlZCgpIAoreworICAgIHJldHVybiBzc2xFbmFibGVkOwor
fQorCitsb25nIFNTTE1hbmFnZXI6OmdldFZlcmlmeVJlc3VsdCgpIAoreworICAgIHJldHVybiB2
ZXJpZnlSZXN1bHQ7Cit9CisKK1N0cmluZyBTU0xNYW5hZ2VyOjpnZXRWYWxpZGF0aW9uTXNnKCkg
Cit7CisgICAgc3dpdGNoICh2ZXJpZnlSZXN1bHQpIHsKKyAgICAvLyB0aGUgb3BlcmF0aW9uIHdh
cyBzdWNjZXNzZnVsbAorICAgIGNhc2UgWDUwOV9WX09LIDogCisgICAgICAgIHJldHVybiAiT0su
IjsKKyAgICAvLyB0aGUgaXNzdWVyIGNlcnRpZmljYXRlIGNvdWxkIG5vdCBiZSBmb3VuZDogdGhp
cyBvY2N1cnMgaWYgdGhlIGlzc3VlciBjZXJ0aWZpY2F0ZSBvZiBhbiB1bnRydXN0ZWQgY2VydGlm
aWNhdGUgY2Fubm90IGJlIGZvdW5kLgorICAgIGNhc2UgWDUwOV9WX0VSUl9VTkFCTEVfVE9fR0VU
X0lTU1VFUl9DRVJUIDoKKyAgICAgICAgcmV0dXJuICAiVW5hYmxlIHRvIGdldCBpc3N1ZXIgY2Vy
dGlmaWNhdGUuIjsgCisgICAgLy8gdGhlIENSTCBvZiBhIGNlcnRpZmljYXRlIGNvdWxkIG5vdCBi
ZSBmb3VuZC4gCisgICAgY2FzZSBYNTA5X1ZfRVJSX1VOQUJMRV9UT19HRVRfQ1JMIDoKKyAgICAg
ICAgcmV0dXJuICJVbmFibGUgdG8gZ2V0IGNlcnRpZmljYXRlIENSTC4iOyAKKyAgICAvLyB0aGUg
Y2VydGlmaWNhdGUgc2lnbmF0dXJlIGNvdWxkIG5vdCBiZSBkZWNyeXB0ZWQuIFRoaXMgbWVhbnMg
dGhhdCB0aGUgYWN0dWFsIHNpZ25hdHVyZSB2YWx1ZSBjb3VsZCBub3QgYmUgZGV0ZXJtaW5lZCBy
YXRoZXIgdGhhbiBpdCBub3QgbWF0Y2hpbmcgdGhlIGV4cGVjdGVkIHZhbHVlLCB0aGlzIGlzIG9u
bHkgbWVhbmluZ2Z1bCBmb3IgUlNBIGtleXMuIAorICAgIGNhc2UgWDUwOV9WX0VSUl9VTkFCTEVf
VE9fREVDUllQVF9DRVJUX1NJR05BVFVSRSA6CisgICAgICAgIHJldHVybiAiVW5hYmxlIHRvIGRl
Y3J5cHQgY2VydGlmaWNhdGUncyBzaWduYXR1cmUuIjsKKyAgICAvLyB0aGUgQ1JMIHNpZ25hdHVy
ZSBjb3VsZCBub3QgYmUgZGVjcnlwdGVkOiB0aGlzIG1lYW5zIHRoYXQgdGhlIGFjdHVhbCBzaWdu
YXR1cmUgdmFsdWUgY291bGQgbm90IGJlIGRldGVybWluZWQgcmF0aGVyIHRoYW4gaXQgbm90IG1h
dGNoaW5nIHRoZSBleHBlY3RlZCB2YWx1ZS4gVW51c2VkLiAKKyAgICBjYXNlIFg1MDlfVl9FUlJf
VU5BQkxFX1RPX0RFQ1JZUFRfQ1JMX1NJR05BVFVSRSA6CisgICAgICAgIHJldHVybiAiVW5hYmxl
IHRvIGRlY3J5cHQgQ1JMJ3Mgc2lnbmF0dXJlLiI7CisgICAgLy8gdGhlIHB1YmxpYyBrZXkgaW4g
dGhlIGNlcnRpZmljYXRlIFN1YmplY3RQdWJsaWNLZXlJbmZvIGNvdWxkIG5vdCBiZSByZWFkLiAK
KyAgICBjYXNlIFg1MDlfVl9FUlJfVU5BQkxFX1RPX0RFQ09ERV9JU1NVRVJfUFVCTElDX0tFWSA6
CisgICAgICAgIHJldHVybiAiVW5hYmxlIHRvIGRlY29kZSBpc3N1ZXIgcHVibGljIGtleS4iOwor
ICAgIC8vIHRoZSBzaWduYXR1cmUgb2YgdGhlIGNlcnRpZmljYXRlIGlzIGludmFsaWQuIAorICAg
IGNhc2UgWDUwOV9WX0VSUl9DRVJUX1NJR05BVFVSRV9GQUlMVVJFIDoKKyAgICAgICAgcmV0dXJu
ICJDZXJ0aWZpY2F0ZSBzaWduYXR1cmUgZmFpbHVyZS4iOworICAgIC8vIHRoZSBjZXJ0aWZpY2F0
ZSBpcyBub3QgeWV0IHZhbGlkOiB0aGUgbm90QmVmb3JlIGRhdGUgaXMgYWZ0ZXIgdGhlIGN1cnJl
bnQgdGltZS4gCisgICAgY2FzZSBYNTA5X1ZfRVJSX0NFUlRfTk9UX1lFVF9WQUxJRCA6CisgICAg
ICAgIHJldHVybiAiQ2VydGlmaWNhdGUgaXMgbm90IHlldCB2YWxpZC4iOworICAgIC8vIHRoZSBj
ZXJ0aWZpY2F0ZSBoYXMgZXhwaXJlZDogdGhhdCBpcyB0aGUgbm90QWZ0ZXIgZGF0ZSBpcyBiZWZv
cmUgdGhlIGN1cnJlbnQgdGltZS4gCisgICAgY2FzZSBYNTA5X1ZfRVJSX0NFUlRfSEFTX0VYUElS
RUQgOgorICAgICAgICByZXR1cm4gIkNlcnRpZmljYXRlIGhhcyBleHBpcmVkLiI7CisgICAgLy8g
dGhlIENSTCBpcyBub3QgeWV0IHZhbGlkLiAKKyAgICBjYXNlIFg1MDlfVl9FUlJfQ1JMX05PVF9Z
RVRfVkFMSUQgOgorICAgICAgICByZXR1cm4gIkNSTCBpcyBub3QgeWV0IHZhbGlkLiI7CisgICAg
Ly8gdGhlIENSTCBoYXMgZXhwaXJlZC4gCisgICAgY2FzZSBYNTA5X1ZfRVJSX0NSTF9IQVNfRVhQ
SVJFRCA6IAorICAgICAgICByZXR1cm4gIkNSTCBoYXMgZXhwaXJlZC4iOworICAgIC8vIHRoZSBj
ZXJ0aWZpY2F0ZSBub3RCZWZvcmUgZmllbGQgY29udGFpbnMgYW4gaW52YWxpZCB0aW1lLiAKKyAg
ICBjYXNlIFg1MDlfVl9FUlJfRVJST1JfSU5fQ0VSVF9OT1RfQkVGT1JFX0ZJRUxEIDoKKyAgICAg
ICAgcmV0dXJuICJGb3JtYXQgZXJyb3IgaW4gY2VydGlmaWNhdGUncyBub3RCZWZvcmUgZmllbGQu
IjsKKyAgICAvLyB0aGUgY2VydGlmaWNhdGUgbm90QWZ0ZXIgZmllbGQgY29udGFpbnMgYW4gaW52
YWxpZCB0aW1lLiAKKyAgICBjYXNlIFg1MDlfVl9FUlJfRVJST1JfSU5fQ0VSVF9OT1RfQUZURVJf
RklFTEQgOgorICAgICAgICByZXR1cm4gIkZvcm1hdCBlcnJvciBpbiBjZXJ0aWZpY2F0ZSdzIG5v
dEFmdGVyIGZpZWxkLiI7CisgICAgLy8gdGhlIENSTCBsYXN0VXBkYXRlIGZpZWxkIGNvbnRhaW5z
IGFuIGludmFsaWQgdGltZS4gCisgICAgY2FzZSBYNTA5X1ZfRVJSX0VSUk9SX0lOX0NSTF9MQVNU
X1VQREFURV9GSUVMRCA6CisgICAgICAgIHJldHVybiAiRm9ybWF0IGVycm9yIGluIENSTCdzIGxh
c3RVcGRhdGUgZmllbGQuIjsKKyAgICAvLyB0aGUgQ1JMIG5leHRVcGRhdGUgZmllbGQgY29udGFp
bnMgYW4gaW52YWxpZCB0aW1lLiAKKyAgICBjYXNlIFg1MDlfVl9FUlJfRVJST1JfSU5fQ1JMX05F
WFRfVVBEQVRFX0ZJRUxEIDoKKyAgICAgICAgcmV0dXJuICJGb3JtYXQgZXJyb3IgaW4gQ1JMJ3Mg
bmV4dFVwZGF0ZSBmaWVsZC4iOworICAgIC8vIGFuIGVycm9yIG9jY3VycmVkIHRyeWluZyB0byBh
bGxvY2F0ZSBtZW1vcnkuIFRoaXMgc2hvdWxkIG5ldmVyIGhhcHBlbi4gCisgICAgY2FzZSBYNTA5
X1ZfRVJSX09VVF9PRl9NRU0gOgorICAgICAgICByZXR1cm4gIk91dCBvZiBtZW1vcnkuIjsKKyAg
ICAvLyB0aGUgcGFzc2VkIGNlcnRpZmljYXRlIGlzIHNlbGYgc2lnbmVkIGFuZCB0aGUgc2FtZSBj
ZXJ0aWZpY2F0ZSBjYW5ub3QgYmUgZm91bmQgaW4gdGhlIGxpc3Qgb2YgdHJ1c3RlZCBjZXJ0aWZp
Y2F0ZXMuIAorICAgIGNhc2UgWDUwOV9WX0VSUl9ERVBUSF9aRVJPX1NFTEZfU0lHTkVEX0NFUlQg
OgorICAgICAgICByZXR1cm4gIlNlbGYgc2lnbmVkIGNlcnRpZmljYXRlLiI7CisgICAgLy8gdGhl
IGNlcnRpZmljYXRlIGNoYWluIGNvdWxkIGJlIGJ1aWx0IHVwIHVzaW5nIHRoZSB1bnRydXN0ZWQg
Y2VydGlmaWNhdGVzIGJ1dCB0aGUgcm9vdCBjb3VsZCBub3QgYmUgZm91bmQgbG9jYWxseS4gCisg
ICAgY2FzZSBYNTA5X1ZfRVJSX1NFTEZfU0lHTkVEX0NFUlRfSU5fQ0hBSU4gOgorICAgICAgICBy
ZXR1cm4gIlNlbGYgc2lnbmVkIGNlcnRpZmljYXRlIGluIGNlcnRpZmljYXRlIGNoYWluLiI7Cisg
ICAgLy8gdGhlIGlzc3VlciBjZXJ0aWZpY2F0ZSBvZiBhIGxvY2FsbHkgbG9va2VkIHVwIGNlcnRp
ZmljYXRlIGNvdWxkIG5vdCBiZSBmb3VuZC4gVGhpcyBub3JtYWxseSBtZWFucyB0aGUgbGlzdCBv
ZiB0cnVzdGVkIGNlcnRpZmljYXRlcyBpcyBub3QgY29tcGxldGUuCisgICAgY2FzZSBYNTA5X1Zf
RVJSX1VOQUJMRV9UT19HRVRfSVNTVUVSX0NFUlRfTE9DQUxMWSA6CisgICAgICAgIHJldHVybiAi
VW5hYmxlIHRvIGdldCBsb2NhbCBpc3N1ZXIgY2VydGlmaWNhdGUuIjsKKyAgICAvLyBubyBzaWdu
YXR1cmVzIGNvdWxkIGJlIHZlcmlmaWVkIGJlY2F1c2UgdGhlIGNoYWluIGNvbnRhaW5zIG9ubHkg
b25lIGNlcnRpZmljYXRlIGFuZCBpdCBpcyBub3Qgc2VsZiBzaWduZWQuIAorICAgIGNhc2UgWDUw
OV9WX0VSUl9VTkFCTEVfVE9fVkVSSUZZX0xFQUZfU0lHTkFUVVJFIDoKKyAgICAgICAgcmV0dXJu
ICJVbmFibGUgdG8gdmVyaWZ5IHRoZSBmaXJzdCBjZXJ0aWZpY2F0ZS4iOworICAgIC8vIHRoZSBj
ZXJ0aWZpY2F0ZSBjaGFpbiBsZW5ndGggaXMgZ3JlYXRlciB0aGFuIHRoZSBzdXBwbGllZCBtYXhp
bXVtIGRlcHRoLiBVbnVzZWQuIAorICAgIGNhc2UgWDUwOV9WX0VSUl9DRVJUX0NIQUlOX1RPT19M
T05HIDoKKyAgICAgICAgcmV0dXJuICJDZXJ0aWZpY2F0ZSBjaGFpbiB0b28gbG9uZy4iOworICAg
IC8vIHRoZSBjZXJ0aWZpY2F0ZSBoYXMgYmVlbiByZXZva2VkLiAKKyAgICBjYXNlIFg1MDlfVl9F
UlJfQ0VSVF9SRVZPS0VEIDoKKyAgICAgICAgcmV0dXJuICJDZXJ0aWZpY2F0ZSByZXZva2VkLiI7
CisgICAgLy8gYSBDQSBjZXJ0aWZpY2F0ZSBpcyBpbnZhbGlkLiBFaXRoZXIgaXQgaXMgbm90IGEg
Q0Egb3IgaXRzIGV4dGVuc2lvbnMgYXJlIG5vdCBjb25zaXN0ZW50IHdpdGggdGhlIHN1cHBsaWVk
IHB1cnBvc2UuIAorICAgIGNhc2UgWDUwOV9WX0VSUl9JTlZBTElEX0NBIDoKKyAgICAgICAgcmV0
dXJuICJJbnZhbGlkIENBIGNlcnRpZmljYXRlLiI7CisgICAgLy8gdGhlIGJhc2ljQ29uc3RyYWlu
dHMgcGF0aGxlbmd0aCBwYXJhbWV0ZXIgaGFzIGJlZW4gZXhjZWVkZWQuIAorICAgIGNhc2UgWDUw
OV9WX0VSUl9QQVRIX0xFTkdUSF9FWENFRURFRCA6CisgICAgICAgIHJldHVybiAiUGF0aCBsZW5n
dGggY29uc3RyYWludCBleGNlZWRlZC4iOworICAgIC8vIHRoZSBzdXBwbGllZCBjZXJ0aWZpY2F0
ZSBjYW5ub3QgYmUgdXNlZCBmb3IgdGhlIHNwZWNpZmllZCBwdXJwb3NlLiAKKyAgICBjYXNlIFg1
MDlfVl9FUlJfSU5WQUxJRF9QVVJQT1NFIDoKKyAgICAgICAgcmV0dXJuICJVbnN1cHBvcnRlZCBj
ZXJ0aWZpY2F0ZSBwdXJwb3NlLiI7CisgICAgLy8gdGhlIHJvb3QgQ0EgaXMgbm90IG1hcmtlZCBh
cyB0cnVzdGVkIGZvciB0aGUgc3BlY2lmaWVkIHB1cnBvc2UuIAorICAgIGNhc2UgWDUwOV9WX0VS
Ul9DRVJUX1VOVFJVU1RFRCA6CisgICAgICAgIHJldHVybiAiQ2VydGlmaWNhdGUgbm90IHRydXN0
ZWQuIjsKKyAgICAvLyB0aGUgcm9vdCBDQSBpcyBtYXJrZWQgdG8gcmVqZWN0IHRoZSBzcGVjaWZp
ZWQgcHVycG9zZS4KKyAgICBjYXNlIFg1MDlfVl9FUlJfQ0VSVF9SRUpFQ1RFRCA6CisgICAgICAg
IHJldHVybiAiQ2VydGlmaWNhdGUgcmVqZWN0ZWQuIjsKKyAgICAvLyB0aGUgY3VycmVudCBjYW5k
aWRhdGUgaXNzdWVyIGNlcnRpZmljYXRlIHdhcyByZWplY3RlZCBiZWNhdXNlIGl0cyBzdWJqZWN0
IG5hbWUgZGlkIG5vdCBtYXRjaCB0aGUgaXNzdWVyIG5hbWUgb2YgdGhlIGN1cnJlbnQgY2VydGlm
aWNhdGUuIFRoaXMgaXMgb25seSBzZXQgaWYgaXNzdWVyIGNoZWNrIGRlYnVnZ2luZyBpcyBlbmFi
bGVkIGl0IGlzIHVzZWQgZm9yIHN0YXR1cyBub3RpZmljYXRpb24gYW5kIGlzIG5vdCBpbiBpdHNl
bGYgYW4gZXJyb3IuIAorICAgIGNhc2UgWDUwOV9WX0VSUl9TVUJKRUNUX0lTU1VFUl9NSVNNQVRD
SCA6CisgICAgICAgIHJldHVybiAiU3ViamVjdCBpc3N1ZXIgbWlzbWF0Y2guIjsKKyAgICAvLyB0
aGUgY3VycmVudCBjYW5kaWRhdGUgaXNzdWVyIGNlcnRpZmljYXRlIHdhcyByZWplY3RlZCBiZWNh
dXNlIGl0cyBzdWJqZWN0IGtleSBpZGVudGlmaWVyIHdhcyBwcmVzZW50IGFuZCBkaWQgbm90IG1h
dGNoIHRoZSBhdXRob3JpdHkga2V5IGlkZW50aWZpZXIgY3VycmVudCBjZXJ0aWZpY2F0ZS4gVGhp
cyBpcyBvbmx5IHNldCBpZiBpc3N1ZXIgY2hlY2sgZGVidWdnaW5nIGlzIGVuYWJsZWQgaXQgaXMg
dXNlZCBmb3Igc3RhdHVzIG5vdGlmaWNhdGlvbiBhbmQgaXMgbm90IGluIGl0c2VsZiBhbiBlcnJv
ci4gCisgICAgY2FzZSBYNTA5X1ZfRVJSX0FLSURfU0tJRF9NSVNNQVRDSCA6CisgICAgICAgIHJl
dHVybiAiQXV0aG9yaXR5IGFuZCBzdWJqZWN0IGtleSBpZGVudGlmaWVyIG1pc21hdGNoLiI7Cisg
ICAgLy8gdGhlIGN1cnJlbnQgY2FuZGlkYXRlIGlzc3VlciBjZXJ0aWZpY2F0ZSB3YXMgcmVqZWN0
ZWQgYmVjYXVzZSBpdHMgaXNzdWVyIG5hbWUgYW5kIHNlcmlhbCBudW1iZXIgd2FzIHByZXNlbnQg
YW5kIGRpZCBub3QgbWF0Y2ggdGhlIGF1dGhvcml0eSBrZXkgaWRlbnRpZmllciBvZiB0aGUgY3Vy
cmVudCBjZXJ0aWZpY2F0ZS4gVGhpcyBpcyBvbmx5IHNldCBpZiBpc3N1ZXIgY2hlY2sgZGVidWdn
aW5nIGlzIGVuYWJsZWQgaXQgaXMgdXNlZCBmb3Igc3RhdHVzIG5vdGlmaWNhdGlvbiBhbmQgaXMg
bm90IGluIGl0c2VsZiBhbiBlcnJvci4gCisgICAgY2FzZSBYNTA5X1ZfRVJSX0FLSURfSVNTVUVS
X1NFUklBTF9NSVNNQVRDSCA6CisgICAgICAgIHJldHVybiAiQXV0aG9yaXR5IGFuZCBpc3N1ZXIg
c2VyaWFsIG51bWJlciBtaXNtYXRjaC4iOworICAgIC8vIHRoZSBjdXJyZW50IGNhbmRpZGF0ZSBp
c3N1ZXIgY2VydGlmaWNhdGUgd2FzIHJlamVjdGVkIGJlY2F1c2UgaXRzIGtleVVzYWdlIGV4dGVu
c2lvbiBkb2VzIG5vdCBwZXJtaXQgY2VydGlmaWNhdGUgc2lnbmluZy4gVGhpcyBpcyBvbmx5IHNl
dCBpZiBpc3N1ZXIgY2hlY2sgZGVidWdnaW5nIGlzIGVuYWJsZWQgaXQgaXMgdXNlZCBmb3Igc3Rh
dHVzIG5vdGlmaWNhdGlvbiBhbmQgaXMgbm90IGluIGl0c2VsZiBhbiBlcnJvci4gCisgICAgY2Fz
ZSBYNTA5X1ZfRVJSX0tFWVVTQUdFX05PX0NFUlRTSUdOIDoKKyAgICAgICAgcmV0dXJuICJLZXkg
dXNhZ2UgZG9lcyBub3QgaW5jbHVkZSBjZXJ0aWZpY2F0ZSBzaWduaW5nLiI7CisgICAgLy8gYSBj
ZXJ0aWZpY2F0ZSBleHRlbnNpb24gaGFkIGFuIGludmFsaWQgdmFsdWUgKGZvciBleGFtcGxlIGFu
IGluY29ycmVjdCBlbmNvZGluZykgb3Igc29tZSB2YWx1ZSBpbmNvbnNpc3RlbnQgd2l0aCBvdGhl
ciBleHRlbnNpb25zLiAKKyAgICBjYXNlIFg1MDlfVl9FUlJfSU5WQUxJRF9FWFRFTlNJT04gOgor
ICAgICAgICByZXR1cm4gIkludmFsaWQgb3IgaW5jb25zaXN0ZW50IGNlcnRpZmljYXRlIGV4dGVu
c2lvbi4iOworICAgIC8vIGEgY2VydGlmaWNhdGUgcG9saWNpZXMgZXh0ZW5zaW9uIGhhZCBhbiBp
bnZhbGlkIHZhbHVlIChmb3IgZXhhbXBsZSBhbiBpbmNvcnJlY3QgZW5jb2RpbmcpIG9yIHNvbWUg
dmFsdWUgaW5jb25zaXN0ZW50IHdpdGggb3RoZXIgZXh0ZW5zaW9ucy4gVGhpcyBlcnJvciBvbmx5
IG9jY3VycyBpZiBwb2xpY3kgcHJvY2Vzc2luZyBpcyBlbmFibGVkLiAKKyAgICBjYXNlIFg1MDlf
Vl9FUlJfSU5WQUxJRF9QT0xJQ1lfRVhURU5TSU9OIDoKKyAgICAgICAgcmV0dXJuICJJbnZhbGlk
IG9yIGluY29uc2lzdGVudCBjZXJ0aWZpY2F0ZSBwb2xpY3kgZXh0ZW5zaW9uLiI7CisgICAgLy8g
dGhlIHZlcmlmaWNhdGlvbiBmbGFncyB3ZXJlIHNldCB0byByZXF1aXJlIGFuZCBleHBsaWNpdCBw
b2xpY3kgYnV0IG5vbmUgd2FzIHByZXNlbnQuIAorICAgIGNhc2UgWDUwOV9WX0VSUl9OT19FWFBM
SUNJVF9QT0xJQ1kgOgorICAgICAgICByZXR1cm4gIk5vIGV4cGxpY2l0IHBvbGljeS4iOworICAg
IC8vIHRoZSBvbmx5IENSTHMgdGhhdCBjb3VsZCBiZSBmb3VuZCBkaWQgbm90IG1hdGNoIHRoZSBz
Y29wZSBvZiB0aGUgY2VydGlmaWNhdGUuIAorICAgIGNhc2UgWDUwOV9WX0VSUl9ESUZGRVJFTlRf
Q1JMX1NDT1BFIDoKKyAgICAgICAgcmV0dXJuICJEaWZmZXJlbnQgQ1JMIHNjb3BlLiI7CisgICAg
Ly8gc29tZSBmZWF0dXJlIG9mIGEgY2VydGlmaWNhdGUgZXh0ZW5zaW9uIGlzIG5vdCBzdXBwb3J0
ZWQuIFVudXNlZC4gCisgICAgY2FzZSBYNTA5X1ZfRVJSX1VOU1VQUE9SVEVEX0VYVEVOU0lPTl9G
RUFUVVJFIDoKKyAgICAgICAgcmV0dXJuICJVbnN1cHBvcnRlZCBleHRlbnNpb24gZmVhdHVyZS4i
OworICAgIC8vIGEgbmFtZSBjb25zdHJhaW50IHZpb2xhdGlvbiBvY2N1cmVkIGluIHRoZSBwZXJt
aXR0ZWQgc3VidHJlZXMuIAorICAgIGNhc2UgWDUwOV9WX0VSUl9QRVJNSVRURURfVklPTEFUSU9O
IDoKKyAgICAgICAgcmV0dXJuICJQZXJtaXR0ZWQgc3VidHJlZSB2aW9sYXRpb24uIjsKKyAgICAv
LyBhIG5hbWUgY29uc3RyYWludCB2aW9sYXRpb24gb2NjdXJlZCBpbiB0aGUgZXhjbHVkZWQgc3Vi
dHJlZXMuIAorICAgIGNhc2UgWDUwOV9WX0VSUl9FWENMVURFRF9WSU9MQVRJT04gOgorICAgICAg
ICByZXR1cm4gIkV4Y2x1ZGVkIHN1YnRyZWUgdmlvbGF0aW9uLiI7CisgICAgLy8gYSBjZXJ0aWZp
Y2F0ZSBuYW1lIGNvbnN0cmFpbnRzIGV4dGVuc2lvbiBpbmNsdWRlZCBhIG1pbmltdW0gb3IgbWF4
aW11bSBmaWVsZDogdGhpcyBpcyBub3Qgc3VwcG9ydGVkLiAKKyAgICBjYXNlIFg1MDlfVl9FUlJf
U1VCVFJFRV9NSU5NQVggOgorICAgICAgICByZXR1cm4gIk5hbWUgY29uc3RyYWludHMgbWluaW11
bSBhbmQgbWF4aW11bSBub3Qgc3VwcG9ydGVkLiI7CisgICAgLy8gYW4gdW5zdXBwb3J0ZWQgbmFt
ZSBjb25zdHJhaW50IHR5cGUgd2FzIGVuY291bnRlcmVkLiBPcGVuU1NMIGN1cnJlbnRseSBvbmx5
IHN1cHBvcnRzIGRpcmVjdG9yeSBuYW1lLCBETlMgbmFtZSwgZW1haWwgYW5kIFVSSSB0eXBlcy4g
CisgICAgY2FzZSBYNTA5X1ZfRVJSX1VOU1VQUE9SVEVEX0NPTlNUUkFJTlRfVFlQRSA6CisgICAg
ICAgIHJldHVybiAiVW5zdXBwb3J0ZWQgbmFtZSBjb25zdHJhaW50IHR5cGUuIjsKKyAgICAvLyB0
aGUgZm9ybWF0IG9mIHRoZSBuYW1lIGNvbnN0cmFpbnQgaXMgbm90IHJlY29nbmlzZWQ6IGZvciBl
eGFtcGxlIGFuIGVtYWlsIGFkZHJlc3MgZm9ybWF0IG9mIGEgZm9ybSBub3QgbWVudGlvbmVkIGlu
IFJGQzMyODAuIFRoaXMgY291bGQgYmUgY2F1c2VkIGJ5IGEgZ2FyYmFnZSBleHRlbnNpb24gb3Ig
c29tZSBuZXcgZmVhdHVyZSBub3QgY3VycmVudGx5IHN1cHBvcnRlZC4gCisgICAgY2FzZSBYNTA5
X1ZfRVJSX1VOU1VQUE9SVEVEX0NPTlNUUkFJTlRfU1lOVEFYIDogCisgICAgICAgIHJldHVybiAi
VW5zdXBwb3J0ZWQgb3IgaW52YWxpZCBuYW1lIGNvbnN0cmFpbnQgc3ludGF4LiI7CisgICAgLy8g
YW4gZXJyb3Igb2NjdXJlZCB3aGVuIGF0dGVtcHRpbmcgdG8gdmVyaWZ5IHRoZSBDUkwgcGF0aC4g
VGhpcyBlcnJvciBjYW4gb25seSBoYXBwZW4gaWYgZXh0ZW5kZWQgQ1JMIGNoZWNraW5nIGlzIGVu
YWJsZWQuIAorICAgIGNhc2UgWDUwOV9WX0VSUl9DUkxfUEFUSF9WQUxJREFUSU9OX0VSUk9SIDoK
KyAgICAgICAgcmV0dXJuICJDUkwgcGF0aCB2YWxpZGF0aW9uIGVycm9yLiI7CisgICAgLy8gYW4g
YXBwbGljYXRpb24gc3BlY2lmaWMgZXJyb3IuIFRoaXMgd2lsbCBuZXZlciBiZSByZXR1cm5lZCB1
bmxlc3MgZXhwbGljaXRseSBzZXQgYnkgYW4gYXBwbGljYXRpb24uIAorICAgIGNhc2UgWDUwOV9W
X0VSUl9BUFBMSUNBVElPTl9WRVJJRklDQVRJT04gOgorICAgICAgICByZXR1cm4gICJBcHBsaWNh
dGlvbiB2ZXJpZmljYXRpb24gZmFpbHVyZS4iOworICAgIGRlZmF1bHQgOgorICAgICAgICByZXR1
cm4gIlVua25vd24gY2VydGlmaWNhdGUgcHJvYmxlbS4iOworICAgIH0KK30KKworYm9vbCBTU0xN
YW5hZ2VyOjppc0ludmFsaWRDZXJ0aWZpY2F0aW9uKENVUkwqIGhhbmRsZSkKK3sKKyAgICBDVVJM
KiBjbG9uZWRIYW5kbGUgPSBjdXJsX2Vhc3lfZHVwaGFuZGxlKGhhbmRsZSk7CisgICAgY3VybF9l
YXN5X3NldG9wdChjbG9uZWRIYW5kbGUsIENVUkxPUFRfQ09OTkVDVF9PTkxZLCAxKTsKKyAgICBj
dXJsX2Vhc3lfc2V0b3B0KGNsb25lZEhhbmRsZSwgQ1VSTE9QVF9TU0xfVkVSSUZZUEVFUiwgMSk7
CisgICAgY3VybF9lYXN5X3NldG9wdChjbG9uZWRIYW5kbGUsIENVUkxPUFRfU1NMX1ZFUklGWUhP
U1QsIDIpOworICAgIGN1cmxfZWFzeV9zZXRvcHQoY2xvbmVkSGFuZGxlLCBDVVJMT1BUX0NFUlRJ
TkZPLCB0cnVlKTsKKyAgICBjZXJ0aWZpY2F0ZXMudG9faW5mbyA9IDA7CisgICAgY3VybF9lYXN5
X2dldGluZm8oY2xvbmVkSGFuZGxlLCBDVVJMSU5GT19DRVJUSU5GTywgJmNlcnRpZmljYXRlcy50
b19pbmZvKTsKKyAgICBDVVJMY29kZSByZXN1bHQgPSBjdXJsX2Vhc3lfcGVyZm9ybShjbG9uZWRI
YW5kbGUpOworICAgIGN1cmxfZWFzeV9zZXRvcHQoY2xvbmVkSGFuZGxlLCBDVVJMT1BUX0NPTk5F
Q1RfT05MWSwgMSk7CisgICAgY3VybF9lYXN5X3NldG9wdChjbG9uZWRIYW5kbGUsIENVUkxPUFRf
U1NMX1ZFUklGWVBFRVIsIDApOworICAgIGN1cmxfZWFzeV9zZXRvcHQoY2xvbmVkSGFuZGxlLCBD
VVJMT1BUX1NTTF9WRVJJRllIT1NULCAwKTsKKyAgICBjdXJsX2Vhc3lfcGVyZm9ybShjbG9uZWRI
YW5kbGUpOworICAgIGN1cmxfZWFzeV9zZXRvcHQoY2xvbmVkSGFuZGxlLCBDVVJMT1BUX0NFUlRJ
TkZPLCB0cnVlKTsKKyAgICBjdXJsX2Vhc3lfZ2V0aW5mbyhjbG9uZWRIYW5kbGUsIENVUkxJTkZP
X1NTTF9WRVJJRllSRVNVTFQsICZ2ZXJpZnlSZXN1bHQpOworICAgIGN1cmxfZWFzeV9jbGVhbnVw
KGNsb25lZEhhbmRsZSk7CisgICAgaWYgKHJlc3VsdCA9PSBDVVJMRV9TU0xfQ0FDRVJUKSAgIAor
ICAgICAgICByZXR1cm4gKCFpc0VuYWJsZWREb21haW4oaGFuZGxlKSk7CisgICAgcmV0dXJuIGZh
bHNlOworfQorCit2b2lkIFNTTE1hbmFnZXI6OmVuYWJsZUNlcnRpZmljYXRlcyhDVVJMKiBoYW5k
bGUpIAoreworICAgIGN1cmxfZWFzeV9zZXRvcHQoaGFuZGxlLCBDVVJMT1BUX1NTTF9WRVJJRllQ
RUVSLCBmYWxzZSk7CisgICAgY3VybF9lYXN5X3NldG9wdChoYW5kbGUsIENVUkxPUFRfU1NMX1ZF
UklGWUhPU1QsIGZhbHNlKTsKK30KKworYm9vbCBTU0xNYW5hZ2VyOjpnZXRBbnN3ZXIoKSAKK3sK
KyAgICAvLyBub3QgaW1wbGVtZW50ZWQKKyAgICBmcHJpbnRmKHN0ZGVyciwgIkludmFsaWQgY2Vy
dGlmaWNhdGlvbjogJXMgRG8geW91IHdhbnQgdG8gY29udGludWUgKHkgfCBuKT9cbiIsIGdldFZh
bGlkYXRpb25Nc2coKS51dGY4KCkuZGF0YSgpKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3Zv
aWQgU1NMTWFuYWdlcjo6c2V0Q2VydGlmaWNhdGlvbkxpc3QoQ1VSTCogaGFuZGxlLCBjb25zdCBj
aGFyKiBwQ0FDZXJ0RmlsZSkKK3sKKyAgICBDVVJMKiBjbG9uZWRIYW5kbGUgPSBjdXJsX2Vhc3lf
ZHVwaGFuZGxlKGhhbmRsZSk7CisgICAgY2hhciogdXJsOworICAgIGN1cmxfZWFzeV9nZXRpbmZv
KGNsb25lZEhhbmRsZSwgQ1VSTElORk9fRUZGRUNUSVZFX1VSTCwgJnVybCk7CisgICAgS1VSTCBr
dXJsID0gS1VSTChQYXJzZWRVUkxTdHJpbmcsIHVybCk7CisgICAgZG9tYWluU2V0LmFkZChrdXJs
Lmhvc3QoKSk7CisgICAgY3VybF9lYXN5X3NldG9wdChjbG9uZWRIYW5kbGUsIENVUkxPUFRfQ09O
TkVDVF9PTkxZLCAxKTsKKyAgICBjdXJsX2Vhc3lfc2V0b3B0KGNsb25lZEhhbmRsZSwgQ1VSTE9Q
VF9TU0xfVkVSSUZZUEVFUiwgZmFsc2UpOworICAgIGN1cmxfZWFzeV9zZXRvcHQoY2xvbmVkSGFu
ZGxlLCBDVVJMT1BUX0NFUlRJTkZPLCB0cnVlKTsKKyAgICBjZXJ0aWZpY2F0ZXMudG9faW5mbyA9
IDA7CisgICAgY3VybF9lYXN5X2dldGluZm8oY2xvbmVkSGFuZGxlLCBDVVJMSU5GT19DRVJUSU5G
TywgJmNlcnRpZmljYXRlcy50b19pbmZvKTsKKyAgICBDVVJMY29kZSByZXMgPSBjdXJsX2Vhc3lf
cGVyZm9ybShjbG9uZWRIYW5kbGUpOworICAgIGlmICghcmVzICYmIGNlcnRpZmljYXRlcy50b19p
bmZvKSB7CisgICAgICAgIHN0ZDo6b2ZzdHJlYW0gbXlmaWxlOworICAgICAgICBteWZpbGUub3Bl
bihwQ0FDZXJ0RmlsZSwgc3RkOjppb3M6OmFwcCk7CisgICAgICAgIGlmIChteWZpbGUuaXNfb3Bl
bigpKSB7CisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNlcnRpZmljYXRlcy50b19j
ZXJ0aW5mby0+bnVtX29mX2NlcnRzOyArK2kpIHsKKyAgICAgICAgICAgICAgICBzdHJ1Y3QgY3Vy
bF9zbGlzdCAqc2xpc3Q7CisgICAgICAgICAgICAgICAgZm9yIChzbGlzdCA9IGNlcnRpZmljYXRl
cy50b19jZXJ0aW5mby0+Y2VydGluZm9baV07IHNsaXN0OyBzbGlzdCA9IHNsaXN0LT5uZXh0KSAK
KyAgICAgICAgICAgICAgICAgICAgbXlmaWxlIDw8IHJlbW92ZUNlcnRUaXRsZShzbGlzdC0+ZGF0
YSkudXRmOCgpLmRhdGEoKSA8PCBzdGQ6OmVuZGw7ICAgCisgICAgICAgICAgICB9CisgICAgICAg
IG15ZmlsZS5jbG9zZSgpOworICAgICAgICB9CisgICAgfQorICAgIGN1cmxfZWFzeV9jbGVhbnVw
KGNsb25lZEhhbmRsZSk7Cit9CisKK1N0cmluZyBTU0xNYW5hZ2VyOjpyZW1vdmVDZXJ0VGl0bGUo
Y29uc3QgY2hhciogZGF0YSkgCit7CisgICAgU3RyaW5nIHJlc3VsdDsKKyAgICBTdHJpbmcgY2Vy
dEJlZ2luKCItLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0iKTsKKyAgICBpZiAoZGF0YSkgCisg
ICAgICAgIHJlc3VsdCA9IGRhdGE7CisgICAgc3RkOjpzaXplX3QgZm91bmQgPSByZXN1bHQuZmlu
ZChjZXJ0QmVnaW4pOworICAgIGlmIChmb3VuZCAhPSBub3RGb3VuZCkgCisgICAgICAgIHJlc3Vs
dC5yZW1vdmUoMCwgZm91bmQpOworICAgIAorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9TU0xNYW5hZ2Vy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU1NMTWFuYWdlci5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg0ODQ5NGMKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU1NMTWFuYWdlci5oCkBA
IC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgVW5pdmVyc2l0eSBvZiBT
emVnZWQKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgU1NMTWFuYWdlcl9oCisjZGVmaW5lIFNTTE1hbmFnZXJfaAorCisjaW5jbHVk
ZSA8Y3VybC9jdXJsLmg+CisjaW5jbHVkZSA8c3RyaW5nPgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0
Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ0hhc2guaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCit1bmlvbiBDZXJ0UHRyIHsKKyAgICBzdHJ1Y3QgY3VybF9zbGlzdCAgICAq
dG9faW5mbzsKKyAgICBzdHJ1Y3QgY3VybF9jZXJ0aW5mbyAqdG9fY2VydGluZm87Cit9OworCitj
bGFzcyBTU0xNYW5hZ2VyIHsKK3B1YmxpYzoKKyAgICBib29sIGlzSW52YWxpZENlcnRpZmljYXRp
b24oQ1VSTCopOworICAgIHZvaWQgc2V0Q0FJbmZvKENVUkwqLCBjb25zdCBjaGFyKik7CisgICAg
c3RhdGljIFNTTE1hbmFnZXImIEluc3RhbmNlKCk7CisgICAgdm9pZCBlbmFibGVDZXJ0aWZpY2F0
ZXMoQ1VSTCopOworICAgIHZvaWQgc2V0Q2VydGlmaWNhdGlvbkxpc3QoQ1VSTCosIGNvbnN0IGNo
YXIqKTsKKyAgICBsb25nIGdldFZlcmlmeVJlc3VsdCgpOworICAgIHZvaWQgc2V0U1NMRW5hYmxl
ZChib29sKTsKKyAgICBib29sIGdldFNTTEVuYWJsZWQoKTsKKyAgICBib29sIGdldEFuc3dlcigp
OworcHJpdmF0ZToKKyAgICBTU0xNYW5hZ2VyKCk7CisgICAgU1NMTWFuYWdlcihTU0xNYW5hZ2Vy
IGNvbnN0Jik7CisgICAgU1NMTWFuYWdlciYgb3BlcmF0b3I9KFNTTE1hbmFnZXIgY29uc3QmKTsK
KyAgICB2aXJ0dWFsIH5TU0xNYW5hZ2VyKCk7CisgICAgYm9vbCBpc0VuYWJsZWREb21haW4oQ1VS
TCopOworICAgIFN0cmluZyByZW1vdmVDZXJ0VGl0bGUoY29uc3QgY2hhciopOworICAgIFN0cmlu
ZyBnZXRWYWxpZGF0aW9uTXNnKCk7CisgICAgbG9uZyB2ZXJpZnlSZXN1bHQ7CisgICAgQ2VydFB0
ciBjZXJ0aWZpY2F0ZXM7CisgICAgYm9vbCBzc2xFbmFibGVkOworICAgIEhhc2hTZXQ8U3RyaW5n
PiBkb21haW5TZXQ7Cit9OworCit9CisKKyNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213988</attachid>
            <date>2013-10-11 08:10:07 -0700</date>
            <delta_ts>2013-10-16 04:47:21 -0700</delta_ts>
            <desc>working progress patch</desc>
            <filename>general_WebKit.patch</filename>
            <type>text/plain</type>
            <size>21186</size>
            <attacher>sipka</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBiZjY5YzkyLi45NDg0YzE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQg
QEAKKzIwMTMtMTAtMTEgIFNpcGthIFLDs2JlcnQgIDxzaXBrYUBpbmYudS1zemVnZWQuaHU+CisK
KyAgICAgICAgW2N1cmxdIEltcHJvdmUgZGV0ZWN0aW5nIGFuZCBoYW5kbGluZyBvZiBTU0wgcmVs
YXRlZCBlcnJvcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTExOTQzNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFNldCB0aGUgZXhhY3QgU1NMIHZlcmlmaWNhdGlvbiBlcnJvciBvbiBDVVJMCisgICAgICAg
IGFuZCBzdG9yZSB0aGUgZW5hYmxlZCBkb21haW4gd2l0aCBjZXJ0aWZpY2F0ZS4KKworICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
c291cmNlSGFuZGxlSW50ZXJuYWw6OlJlc291cmNlSGFuZGxlSW50ZXJuYWwpOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUVycm9yLmg6CisgICAgICAgIChXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yOjpSZXNvdXJjZUVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlRXJyb3I6OnNzbEVycm9ycyk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUVycm9yOjpz
ZXRTU0xFcnJvcnMpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhh
bmRsZUN1cmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnNldEhvc3RB
bGxvd3NBbnlIVFRQU0NlcnRpZmljYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvUmVzb3VyY2VIYW5kbGVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
SGFuZGxlTWFuYWdlcjo6ZG93bmxvYWRUaW1lckNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlSGFuZGxlTWFuYWdlcjo6aW5pdGlhbGl6ZUhhbmRsZSk6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9jdXJsL1NTTEhhbmRsZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6YWxsb3dzQW55SFRUUFNDZXJ0aWZpY2F0ZUhvc3RzKToKKyAgICAgICAgKFdlYkNvcmU6OnNz
bElnbm9yZUhUVFBTQ2VydGlmaWNhdGUpOgorICAgICAgICAoV2ViQ29yZTo6c3NsQ2VydGlmaWNh
dGVGbGFnKToKKyAgICAgICAgKFdlYkNvcmU6OmNlcnRWZXJpZnlDYWxsYmFjayk6CisgICAgICAg
IChXZWJDb3JlOjpzc2xjdHhmdW4pOgorICAgICAgICAoV2ViQ29yZTo6c2V0U1NMVmVyaWZ5T3B0
aW9ucyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL1NTTEhhbmRsZS5oOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VFcnJv
ci5oLgorCiAyMDEzLTEwLTEwICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAg
ICAgICBEbyBhIGJpdCBvZiBvcHRpbWl6YXRpb24gYW5kIGNsZWFudXAgaW4gdGhlIEhUTUxFbGVt
ZW50IGNsYXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlSGFuZGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
SGFuZGxlLmgKaW5kZXggMDI5NDVlMS4uMWQ5YjZlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaApAQCAtMTM4LDcgKzEzOCw3IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgdm9pZCBzZXRDbGllbnRDZXJ0aWZpY2F0ZShjb25zdCBTdHJpbmcm
IGhvc3QsIENGRGF0YVJlZik7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKFdJTikgJiYgVVNFKENV
UkwpCisjaWYgKFBMQVRGT1JNKFdJTikgfHwgUExBVEZPUk0oTklYKSkgJiYgVVNFKENVUkwpCiAg
ICAgc3RhdGljIHZvaWQgc2V0SG9zdEFsbG93c0FueUhUVFBTQ2VydGlmaWNhdGUoY29uc3QgU3Ry
aW5nJik7CiAjZW5kaWYKICNpZiBQTEFURk9STShXSU4pICYmIFVTRShDVVJMKSAmJiBVU0UoQ0Yp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFu
ZGxlSW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VI
YW5kbGVJbnRlcm5hbC5oCmluZGV4IDliOGE4OWEuLjYwZmI2NzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5o
CkBAIC0xMDEsNiArMTAxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgLCBt
X2NhbmNlbGxlZChmYWxzZSkKICAgICAgICAgICAgICwgbV9hdXRoRmFpbHVyZUNvdW50KDApCiAg
ICAgICAgICAgICAsIG1fZm9ybURhdGFTdHJlYW0obG9hZGVyKQorICAgICAgICAgICAgLCBtX3Nz
bEVycm9ycygwKQogI2VuZGlmCiAjaWYgVVNFKFNPVVApCiAgICAgICAgICAgICAsIG1fY2FuY2Vs
bGVkKGZhbHNlKQpAQCAtMTc4LDYgKzE3OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgdW5zaWduZWQgc2hvcnQgbV9hdXRoRmFpbHVyZUNvdW50OwogCiAgICAgICAgIEZvcm1EYXRh
U3RyZWFtIG1fZm9ybURhdGFTdHJlYW07CisgICAgICAgIHVuc2lnbmVkIG1fc3NsRXJyb3JzOwog
ICAgICAgICBWZWN0b3I8Y2hhcj4gbV9wb3N0Qnl0ZXM7CiAKICAgICAgICAgT3duUHRyPE11bHRp
cGFydEhhbmRsZT4gbV9tdWx0aXBhcnRIYW5kbGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VFcnJvci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlRXJyb3IuaAppbmRleCBjYThkMzZiLi43NTU1
ZjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVz
b3VyY2VFcnJvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9S
ZXNvdXJjZUVycm9yLmgKQEAgLTMzLDE0ICszMywyMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBSZXNvdXJjZUVycm9yIDogcHVibGljIFJlc291cmNlRXJyb3JCYXNlCiB7CiBwdWJsaWM6
Ci0gICAgUmVzb3VyY2VFcnJvcigpCisgICAgUmVzb3VyY2VFcnJvcigpIDogbV9zc2xFcnJvcnMo
MCkKICAgICB7CiAgICAgfQogCiAgICAgUmVzb3VyY2VFcnJvcihjb25zdCBTdHJpbmcmIGRvbWFp
biwgaW50IGVycm9yQ29kZSwgY29uc3QgU3RyaW5nJiBmYWlsaW5nVVJMLCBjb25zdCBTdHJpbmcm
IGxvY2FsaXplZERlc2NyaXB0aW9uKQotICAgICAgICA6IFJlc291cmNlRXJyb3JCYXNlKGRvbWFp
biwgZXJyb3JDb2RlLCBmYWlsaW5nVVJMLCBsb2NhbGl6ZWREZXNjcmlwdGlvbikKKyAgICAgICAg
OiBSZXNvdXJjZUVycm9yQmFzZShkb21haW4sIGVycm9yQ29kZSwgZmFpbGluZ1VSTCwgbG9jYWxp
emVkRGVzY3JpcHRpb24pLCBtX3NzbEVycm9ycygwKQogICAgIHsKICAgICB9CisKKyAgICB1bnNp
Z25lZCBzc2xFcnJvcnMoKSBjb25zdCB7IHJldHVybiBtX3NzbEVycm9yczsgfQorICAgIHZvaWQg
c2V0U1NMRXJyb3JzKHVuc2lnbmVkIHNzbFZlcmlmeVJlc3VsdCkgeyBtX3NzbEVycm9ycyA9IHNz
bFZlcmlmeVJlc3VsdDsgfQorCitwcml2YXRlOgorICAgIHVuc2lnbmVkIG1fc3NsRXJyb3JzOwog
fTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L1Jlc291cmNlSGFuZGxlQ3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcAppbmRleCBjOTE4ZjE1Li5iMDgyMmEwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5k
bGVDdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVz
b3VyY2VIYW5kbGVDdXJsLmNwcApAQCAtMzYsNiArMzYsMTAgQEAKICNpbmNsdWRlICJSZXNvdXJj
ZUhhbmRsZU1hbmFnZXIuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKIAorI2lmIFBMQVRG
T1JNKE5JWCkKKyNpbmNsdWRlICJTU0xIYW5kbGUuaCIKKyNlbmRpZgorCiAjaWYgUExBVEZPUk0o
V0lOKSAmJiBVU0UoQ0YpCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3
dGYvUmV0YWluUHRyLmg+CkBAIC0xNDUsNiArMTQ5LDEzIEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6
OnNldENsaWVudENlcnRpZmljYXRlKGNvbnN0IFN0cmluZyYgaG9zdCwgQ0ZEYXRhUmVmIGNlcnQp
CiB9CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKE5JWCkKK3ZvaWQgUmVzb3VyY2VIYW5kbGU6OnNl
dEhvc3RBbGxvd3NBbnlIVFRQU0NlcnRpZmljYXRlKGNvbnN0IFN0cmluZyYgaG9zdCkKK3sKKyAg
ICBhbGxvd3NBbnlIVFRQU0NlcnRpZmljYXRlSG9zdHMoaG9zdC5sb3dlcigpKTsKK30KKyNlbmRp
ZgorCiB2b2lkIFJlc291cmNlSGFuZGxlOjpwbGF0Zm9ybVNldERlZmVyc0xvYWRpbmcoYm9vbCBk
ZWZlcnMpCiB7CiAgICAgaWYgKCFkLT5tX2hhbmRsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZU1hbmFnZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlTWFuYWdlci5j
cHAKaW5kZXggYzhhOTIwYi4uNjQxODQyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlTWFuYWdlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlTWFuYWdlci5jcHAK
QEAgLTQyLDYgKzQyLDkgQEAKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAjaW5jbHVk
ZSAiTXVsdGlwYXJ0SGFuZGxlLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpZiBQ
TEFURk9STShOSVgpCisjaW5jbHVkZSAiU1NMSGFuZGxlLmgiCisjZW5kaWYKICNpbmNsdWRlICJS
ZXNvdXJjZUVycm9yLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJS
ZXNvdXJjZUhhbmRsZUludGVybmFsLmgiCkBAIC02MTQsOCArNjE3LDEzIEBAIHZvaWQgUmVzb3Vy
Y2VIYW5kbGVNYW5hZ2VyOjpkb3dubG9hZFRpbWVyQ2FsbGJhY2soVGltZXI8UmVzb3VyY2VIYW5k
bGVNYW5hZ2VyPioKICNpZm5kZWYgTkRFQlVHCiAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwg
IkN1cmwgRVJST1IgZm9yIHVybD0nJXMnLCBlcnJvcjogJyVzJ1xuIiwgdXJsLCBjdXJsX2Vhc3lf
c3RyZXJyb3IobXNnLT5kYXRhLnJlc3VsdCkpOwogI2VuZGlmCi0gICAgICAgICAgICBpZiAoZC0+
Y2xpZW50KCkpCi0gICAgICAgICAgICAgICAgZC0+Y2xpZW50KCktPmRpZEZhaWwoam9iLCBSZXNv
dXJjZUVycm9yKFN0cmluZygpLCBtc2ctPmRhdGEucmVzdWx0LCBTdHJpbmcodXJsKSwgU3RyaW5n
KGN1cmxfZWFzeV9zdHJlcnJvcihtc2ctPmRhdGEucmVzdWx0KSkpKTsKKyAgICAgICAgICAgIGlm
IChkLT5jbGllbnQoKSkgeworICAgICAgICAgICAgICAgIFJlc291cmNlRXJyb3IgcmVzb3VyY2VF
cnJvciA9IFJlc291cmNlRXJyb3IoU3RyaW5nKCksIG1zZy0+ZGF0YS5yZXN1bHQsIFN0cmluZyh1
cmwpLCBTdHJpbmcoY3VybF9lYXN5X3N0cmVycm9yKG1zZy0+ZGF0YS5yZXN1bHQpKSk7CisjaWYg
UExBVEZPUk0oTklYKQorICAgICAgICAgICAgICAgICAgICByZXNvdXJjZUVycm9yLnNldFNTTEVy
cm9ycyhkLT5tX3NzbEVycm9ycyk7CisjZW5kaWYKKyAgICAgICAgICAgICAgICBkLT5jbGllbnQo
KS0+ZGlkRmFpbChqb2IsIHJlc291cmNlRXJyb3IpOworICAgICAgICAgICAgfQogICAgICAgICB9
CiAKICAgICAgICAgcmVtb3ZlRnJvbUN1cmwoam9iKTsKQEAgLTkzMiw2ICs5NDAsOCBAQCB2b2lk
IFJlc291cmNlSGFuZGxlTWFuYWdlcjo6aW5pdGlhbGl6ZUhhbmRsZShSZXNvdXJjZUhhbmRsZSog
am9iKQogICAgIGlmIChnZXRlbnYoIkRFQlVHX0NVUkwiKSkKICAgICAgICAgY3VybF9lYXN5X3Nl
dG9wdChkLT5tX2hhbmRsZSwgQ1VSTE9QVF9WRVJCT1NFLCAxKTsKICNlbmRpZgorICAgIGN1cmxf
ZWFzeV9zZXRvcHQoZC0+bV9oYW5kbGUsIENVUkxPUFRfU1NMX1ZFUklGWVBFRVIsIDFMKTsKKyAg
ICBjdXJsX2Vhc3lfc2V0b3B0KGQtPm1faGFuZGxlLCBDVVJMT1BUX1NTTF9WRVJJRllIT1NULCAy
TCk7CiAgICAgY3VybF9lYXN5X3NldG9wdChkLT5tX2hhbmRsZSwgQ1VSTE9QVF9QUklWQVRFLCBq
b2IpOwogICAgIGN1cmxfZWFzeV9zZXRvcHQoZC0+bV9oYW5kbGUsIENVUkxPUFRfRVJST1JCVUZG
RVIsIG1fY3VybEVycm9yQnVmZmVyKTsKICAgICBjdXJsX2Vhc3lfc2V0b3B0KGQtPm1faGFuZGxl
LCBDVVJMT1BUX1dSSVRFRlVOQ1RJT04sIHdyaXRlQ2FsbGJhY2spOwpAQCAtOTUwLDcgKzk2MCwx
MCBAQCB2b2lkIFJlc291cmNlSGFuZGxlTWFuYWdlcjo6aW5pdGlhbGl6ZUhhbmRsZShSZXNvdXJj
ZUhhbmRsZSogam9iKQogICAgIC8vIGFuZC9vciByZXBvcnRpbmcgU1NMIGVycm9ycyB0byB0aGUg
dXNlci4KICAgICBpZiAoaWdub3JlU1NMRXJyb3JzKQogICAgICAgICBjdXJsX2Vhc3lfc2V0b3B0
KGQtPm1faGFuZGxlLCBDVVJMT1BUX1NTTF9WRVJJRllQRUVSLCBmYWxzZSk7Ci0KKyNpZiBQTEFU
Rk9STShOSVgpCisgICAgZWxzZQorICAgICAgICBzZXRTU0xWZXJpZnlPcHRpb25zKGpvYik7Cisj
ZW5kaWYKICAgICBpZiAoIW1fY2VydGlmaWNhdGVQYXRoLmlzTnVsbCgpKQogICAgICAgIGN1cmxf
ZWFzeV9zZXRvcHQoZC0+bV9oYW5kbGUsIENVUkxPUFRfQ0FJTkZPLCBtX2NlcnRpZmljYXRlUGF0
aC5kYXRhKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvU1NMSGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9TU0xIYW5kbGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVkMTE2
NDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvU1NMSGFuZGxlLmNwcApAQCAtMCwwICsxLDE2OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMyBVbml2ZXJzaXR5IG9mIFN6ZWdlZAorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVU5JVkVSU0lUWSBPRiBTWkVHRUQgYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKwor
I2luY2x1ZGUgIlNTTEhhbmRsZS5oIgorCisjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVJbnRlcm5h
bC5oIgorCisjaW5jbHVkZSA8b3BlbnNzbC9wZW0uaD4KKyNpbmNsdWRlIDxvcGVuc3NsL3NzbC5o
PgorI2luY2x1ZGUgPG9wZW5zc2wveDUwOV92ZnkuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitzdGF0aWMgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gYWxsb3dlZEhvc3RzOworCit2b2lkIGFs
bG93c0FueUhUVFBTQ2VydGlmaWNhdGVIb3N0cyhjb25zdCBTdHJpbmcmIGhvc3QpCit7CisgICAg
SGFzaE1hcDxTdHJpbmcsIFN0cmluZz46Oml0ZXJhdG9yIGl0ID0gIGFsbG93ZWRIb3N0cy5maW5k
KGhvc3QpOworICAgIGlmIChpdCAhPSBhbGxvd2VkSG9zdHMuZW5kKCkpCisgICAgICAgIGl0LT52
YWx1ZSA9IFN0cmluZygpOworICAgIGVsc2UKKyAgICAgICAgYWxsb3dlZEhvc3RzLmFkZChob3N0
LCBTdHJpbmcoKSk7Cit9CisKK2Jvb2wgc3NsSWdub3JlSFRUUFNDZXJ0aWZpY2F0ZShjb25zdCBT
dHJpbmcmIGhvc3QsIGNvbnN0IFN0cmluZyYgY2VydCkKK3sKKyAgICBIYXNoTWFwPFN0cmluZywg
U3RyaW5nPjo6aXRlcmF0b3IgaXQgPSBhbGxvd2VkSG9zdHMuZmluZChob3N0KTsKKyAgICBpZiAo
aXQgIT0gYWxsb3dlZEhvc3RzLmVuZCgpKSB7CisgICAgICAgIGlmICgoaXQtPnZhbHVlKS5pc0Vt
cHR5KCkpIHsKKyAgICAgICAgICAgIGl0LT52YWx1ZSA9IGNlcnQ7CisgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoaXQtPnZhbHVlID09IGNlcnQpCisgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCit1bnNp
Z25lZCBzc2xDZXJ0aWZpY2F0ZUZsYWcoY29uc3QgdW5zaWduZWQmIHNzbEVycm9yKQoreworICAg
IHN3aXRjaCAoc3NsRXJyb3IpIHsKKyAgICBjYXNlIFg1MDlfVl9FUlJfVU5BQkxFX1RPX0dFVF9J
U1NVRVJfQ0VSVCA6IC8vIHRoZSBpc3N1ZXIgY2VydGlmaWNhdGUgY291bGQgbm90IGJlIGZvdW5k
OiB0aGlzIG9jY3VycyBpZiB0aGUgaXNzdWVyIGNlcnRpZmljYXRlIG9mIGFuIHVudHJ1c3RlZCBj
ZXJ0aWZpY2F0ZSBjYW5ub3QgYmUgZm91bmQuCisgICAgY2FzZSBYNTA5X1ZfRVJSX1VOQUJMRV9U
T19HRVRfQ1JMIDogLy8gdGhlIENSTCBvZiBhIGNlcnRpZmljYXRlIGNvdWxkIG5vdCBiZSBmb3Vu
ZC4KKyAgICBjYXNlIFg1MDlfVl9FUlJfVU5BQkxFX1RPX0dFVF9JU1NVRVJfQ0VSVF9MT0NBTExZ
IDogLy8gdGhlIGlzc3VlciBjZXJ0aWZpY2F0ZSBvZiBhIGxvY2FsbHkgbG9va2VkIHVwIGNlcnRp
ZmljYXRlIGNvdWxkIG5vdCBiZSBmb3VuZC4gVGhpcyBub3JtYWxseSBtZWFucyB0aGUgbGlzdCBv
ZiB0cnVzdGVkIGNlcnRpZmljYXRlcyBpcyBub3QgY29tcGxldGUuCisgICAgICAgIHJldHVybiBT
U0xfQ0VSVElGSUNBVEVfVU5LTk9XTl9DQTsKKyAgICBjYXNlIFg1MDlfVl9FUlJfVU5BQkxFX1RP
X0RFQ1JZUFRfQ0VSVF9TSUdOQVRVUkUgOiAvLyB0aGUgY2VydGlmaWNhdGUgc2lnbmF0dXJlIGNv
dWxkIG5vdCBiZSBkZWNyeXB0ZWQuIFRoaXMgbWVhbnMgdGhhdCB0aGUgYWN0dWFsIHNpZ25hdHVy
ZSB2YWx1ZSBjb3VsZCBub3QgYmUgZGV0ZXJtaW5lZCByYXRoZXIgdGhhbiBpdCBub3QgbWF0Y2hp
bmcgdGhlIGV4cGVjdGVkIHZhbHVlLCB0aGlzIGlzIG9ubHkgbWVhbmluZ2Z1bCBmb3IgUlNBIGtl
eXMuCisgICAgY2FzZSBYNTA5X1ZfRVJSX1VOQUJMRV9UT19ERUNSWVBUX0NSTF9TSUdOQVRVUkUg
OiAvLyB0aGUgQ1JMIHNpZ25hdHVyZSBjb3VsZCBub3QgYmUgZGVjcnlwdGVkOiB0aGlzIG1lYW5z
IHRoYXQgdGhlIGFjdHVhbCBzaWduYXR1cmUgdmFsdWUgY291bGQgbm90IGJlIGRldGVybWluZWQg
cmF0aGVyIHRoYW4gaXQgbm90IG1hdGNoaW5nIHRoZSBleHBlY3RlZCB2YWx1ZS4gVW51c2VkLgor
ICAgIGNhc2UgWDUwOV9WX0VSUl9VTkFCTEVfVE9fREVDT0RFX0lTU1VFUl9QVUJMSUNfS0VZIDog
Ly8gdGhlIHB1YmxpYyBrZXkgaW4gdGhlIGNlcnRpZmljYXRlIFN1YmplY3RQdWJsaWNLZXlJbmZv
IGNvdWxkIG5vdCBiZSByZWFkLgorICAgIGNhc2UgWDUwOV9WX0VSUl9DRVJUX1NJR05BVFVSRV9G
QUlMVVJFIDogLy8gdGhlIHNpZ25hdHVyZSBvZiB0aGUgY2VydGlmaWNhdGUgaXMgaW52YWxpZC4K
KyAgICBjYXNlIFg1MDlfVl9FUlJfREVQVEhfWkVST19TRUxGX1NJR05FRF9DRVJUIDogLy8gdGhl
IHBhc3NlZCBjZXJ0aWZpY2F0ZSBpcyBzZWxmIHNpZ25lZCBhbmQgdGhlIHNhbWUgY2VydGlmaWNh
dGUgY2Fubm90IGJlIGZvdW5kIGluIHRoZSBsaXN0IG9mIHRydXN0ZWQgY2VydGlmaWNhdGVzLgor
ICAgIGNhc2UgWDUwOV9WX0VSUl9TRUxGX1NJR05FRF9DRVJUX0lOX0NIQUlOIDogLy8gdGhlIGNl
cnRpZmljYXRlIGNoYWluIGNvdWxkIGJlIGJ1aWx0IHVwIHVzaW5nIHRoZSB1bnRydXN0ZWQgY2Vy
dGlmaWNhdGVzIGJ1dCB0aGUgcm9vdCBjb3VsZCBub3QgYmUgZm91bmQgbG9jYWxseS4KKyAgICBj
YXNlIFg1MDlfVl9FUlJfVU5BQkxFX1RPX1ZFUklGWV9MRUFGX1NJR05BVFVSRSA6IC8vIG5vIHNp
Z25hdHVyZXMgY291bGQgYmUgdmVyaWZpZWQgYmVjYXVzZSB0aGUgY2hhaW4gY29udGFpbnMgb25s
eSBvbmUgY2VydGlmaWNhdGUgYW5kIGl0IGlzIG5vdCBzZWxmIHNpZ25lZC4KKyAgICBjYXNlIFg1
MDlfVl9FUlJfSU5WQUxJRF9QVVJQT1NFIDogLy8gdGhlIHN1cHBsaWVkIGNlcnRpZmljYXRlIGNh
bm5vdCBiZSB1c2VkIGZvciB0aGUgc3BlY2lmaWVkIHB1cnBvc2UuCisgICAgY2FzZSBYNTA5X1Zf
RVJSX0NFUlRfVU5UUlVTVEVEIDogLy8gdGhlIHJvb3QgQ0EgaXMgbm90IG1hcmtlZCBhcyB0cnVz
dGVkIGZvciB0aGUgc3BlY2lmaWVkIHB1cnBvc2UuCisgICAgY2FzZSBYNTA5X1ZfRVJSX0NFUlRf
UkVKRUNURUQgOiAvLyB0aGUgcm9vdCBDQSBpcyBtYXJrZWQgdG8gcmVqZWN0IHRoZSBzcGVjaWZp
ZWQgcHVycG9zZS4KKyAgICBjYXNlIFg1MDlfVl9FUlJfTk9fRVhQTElDSVRfUE9MSUNZIDogLy8g
dGhlIHZlcmlmaWNhdGlvbiBmbGFncyB3ZXJlIHNldCB0byByZXF1aXJlIGFuZCBleHBsaWNpdCBw
b2xpY3kgYnV0IG5vbmUgd2FzIHByZXNlbnQuCisgICAgY2FzZSBYNTA5X1ZfRVJSX0RJRkZFUkVO
VF9DUkxfU0NPUEUgOiAvLyB0aGUgb25seSBDUkxzIHRoYXQgY291bGQgYmUgZm91bmQgZGlkIG5v
dCBtYXRjaCB0aGUgc2NvcGUgb2YgdGhlIGNlcnRpZmljYXRlLgorICAgICAgICByZXR1cm4gU1NM
X0NFUlRJRklDQVRFX0lOU0VDVVJFOworICAgIGNhc2UgWDUwOV9WX0VSUl9DRVJUX05PVF9ZRVRf
VkFMSUQgOiAvLyB0aGUgY2VydGlmaWNhdGUgaXMgbm90IHlldCB2YWxpZDogdGhlIG5vdEJlZm9y
ZSBkYXRlIGlzIGFmdGVyIHRoZSBjdXJyZW50IHRpbWUuCisgICAgY2FzZSBYNTA5X1ZfRVJSX0NS
TF9OT1RfWUVUX1ZBTElEIDogLy8gdGhlIENSTCBpcyBub3QgeWV0IHZhbGlkLgorICAgICAgICBy
ZXR1cm4gU1NMX0NFUlRJRklDQVRFX05PVF9BQ1RJVkFURUQ7CisgICAgY2FzZSBYNTA5X1ZfRVJS
X0NFUlRfSEFTX0VYUElSRUQgOiAvLyB0aGUgY2VydGlmaWNhdGUgaGFzIGV4cGlyZWQ6IHRoYXQg
aXMgdGhlIG5vdEFmdGVyIGRhdGUgaXMgYmVmb3JlIHRoZSBjdXJyZW50IHRpbWUuCisgICAgY2Fz
ZSBYNTA5X1ZfRVJSX0NSTF9IQVNfRVhQSVJFRCA6IC8vIHRoZSBDUkwgaGFzIGV4cGlyZWQuCisg
ICAgICAgIHJldHVybiBTU0xfQ0VSVElGSUNBVEVfRVhQSVJFRDsKKyAgICBjYXNlIFg1MDlfVl9F
UlJfRVJST1JfSU5fQ0VSVF9OT1RfQkVGT1JFX0ZJRUxEIDogLy8gdGhlIGNlcnRpZmljYXRlIG5v
dEJlZm9yZSBmaWVsZCBjb250YWlucyBhbiBpbnZhbGlkIHRpbWUuCisgICAgY2FzZSBYNTA5X1Zf
RVJSX0VSUk9SX0lOX0NFUlRfTk9UX0FGVEVSX0ZJRUxEIDogLy8gdGhlIGNlcnRpZmljYXRlIG5v
dEFmdGVyIGZpZWxkIGNvbnRhaW5zIGFuIGludmFsaWQgdGltZS4KKyAgICBjYXNlIFg1MDlfVl9F
UlJfRVJST1JfSU5fQ1JMX0xBU1RfVVBEQVRFX0ZJRUxEIDogLy8gdGhlIENSTCBsYXN0VXBkYXRl
IGZpZWxkIGNvbnRhaW5zIGFuIGludmFsaWQgdGltZS4KKyAgICBjYXNlIFg1MDlfVl9FUlJfRVJS
T1JfSU5fQ1JMX05FWFRfVVBEQVRFX0ZJRUxEIDogLy8gdGhlIENSTCBuZXh0VXBkYXRlIGZpZWxk
IGNvbnRhaW5zIGFuIGludmFsaWQgdGltZS4KKyAgICBjYXNlIFg1MDlfVl9FUlJfT1VUX09GX01F
TSA6IC8vIGFuIGVycm9yIG9jY3VycmVkIHRyeWluZyB0byBhbGxvY2F0ZSBtZW1vcnkuIFRoaXMg
c2hvdWxkIG5ldmVyIGhhcHBlbi4KKyAgICBjYXNlIFg1MDlfVl9FUlJfQ0VSVF9DSEFJTl9UT09f
TE9ORyA6IC8vIHRoZSBjZXJ0aWZpY2F0ZSBjaGFpbiBsZW5ndGggaXMgZ3JlYXRlciB0aGFuIHRo
ZSBzdXBwbGllZCBtYXhpbXVtIGRlcHRoLiBVbnVzZWQuCisgICAgY2FzZSBYNTA5X1ZfRVJSX1BB
VEhfTEVOR1RIX0VYQ0VFREVEIDogLy8gdGhlIGJhc2ljQ29uc3RyYWludHMgcGF0aGxlbmd0aCBw
YXJhbWV0ZXIgaGFzIGJlZW4gZXhjZWVkZWQuCisgICAgY2FzZSBYNTA5X1ZfRVJSX0lOVkFMSURf
RVhURU5TSU9OIDogLy8gYSBjZXJ0aWZpY2F0ZSBleHRlbnNpb24gaGFkIGFuIGludmFsaWQgdmFs
dWUgKGZvciBleGFtcGxlIGFuIGluY29ycmVjdCBlbmNvZGluZykgb3Igc29tZSB2YWx1ZSBpbmNv
bnNpc3RlbnQgd2l0aCBvdGhlciBleHRlbnNpb25zLgorICAgIGNhc2UgWDUwOV9WX0VSUl9JTlZB
TElEX1BPTElDWV9FWFRFTlNJT04gOiAvLyBhIGNlcnRpZmljYXRlIHBvbGljaWVzIGV4dGVuc2lv
biBoYWQgYW4gaW52YWxpZCB2YWx1ZSAoZm9yIGV4YW1wbGUgYW4gaW5jb3JyZWN0IGVuY29kaW5n
KSBvciBzb21lIHZhbHVlIGluY29uc2lzdGVudCB3aXRoIG90aGVyIGV4dGVuc2lvbnMuIFRoaXMg
ZXJyb3Igb25seSBvY2N1cnMgaWYgcG9saWN5IHByb2Nlc3NpbmcgaXMgZW5hYmxlZC4KKyAgICBj
YXNlIFg1MDlfVl9FUlJfVU5TVVBQT1JURURfRVhURU5TSU9OX0ZFQVRVUkUgOiAvLyBzb21lIGZl
YXR1cmUgb2YgYSBjZXJ0aWZpY2F0ZSBleHRlbnNpb24gaXMgbm90IHN1cHBvcnRlZC4gVW51c2Vk
LgorICAgIGNhc2UgWDUwOV9WX0VSUl9QRVJNSVRURURfVklPTEFUSU9OIDogLy8gYSBuYW1lIGNv
bnN0cmFpbnQgdmlvbGF0aW9uIG9jY3VyZWQgaW4gdGhlIHBlcm1pdHRlZCBzdWJ0cmVlcy4KKyAg
ICBjYXNlIFg1MDlfVl9FUlJfRVhDTFVERURfVklPTEFUSU9OIDogLy8gYSBuYW1lIGNvbnN0cmFp
bnQgdmlvbGF0aW9uIG9jY3VyZWQgaW4gdGhlIGV4Y2x1ZGVkIHN1YnRyZWVzLgorICAgIGNhc2Ug
WDUwOV9WX0VSUl9TVUJUUkVFX01JTk1BWCA6IC8vIGEgY2VydGlmaWNhdGUgbmFtZSBjb25zdHJh
aW50cyBleHRlbnNpb24gaW5jbHVkZWQgYSBtaW5pbXVtIG9yIG1heGltdW0gZmllbGQ6IHRoaXMg
aXMgbm90IHN1cHBvcnRlZC4KKyAgICBjYXNlIFg1MDlfVl9FUlJfVU5TVVBQT1JURURfQ09OU1RS
QUlOVF9UWVBFIDogLy8gYW4gdW5zdXBwb3J0ZWQgbmFtZSBjb25zdHJhaW50IHR5cGUgd2FzIGVu
Y291bnRlcmVkLiBPcGVuU1NMIGN1cnJlbnRseSBvbmx5IHN1cHBvcnRzIGRpcmVjdG9yeSBuYW1l
LCBETlMgbmFtZSwgZW1haWwgYW5kIFVSSSB0eXBlcy4KKyAgICBjYXNlIFg1MDlfVl9FUlJfVU5T
VVBQT1JURURfQ09OU1RSQUlOVF9TWU5UQVggOiAvLyB0aGUgZm9ybWF0IG9mIHRoZSBuYW1lIGNv
bnN0cmFpbnQgaXMgbm90IHJlY29nbmlzZWQ6IGZvciBleGFtcGxlIGFuIGVtYWlsIGFkZHJlc3Mg
Zm9ybWF0IG9mIGEgZm9ybSBub3QgbWVudGlvbmVkIGluIFJGQzMyODAuIFRoaXMgY291bGQgYmUg
Y2F1c2VkIGJ5IGEgZ2FyYmFnZSBleHRlbnNpb24gb3Igc29tZSBuZXcgZmVhdHVyZSBub3QgY3Vy
cmVudGx5IHN1cHBvcnRlZC4KKyAgICBjYXNlIFg1MDlfVl9FUlJfQ1JMX1BBVEhfVkFMSURBVElP
Tl9FUlJPUiA6IC8vIGFuIGVycm9yIG9jY3VyZWQgd2hlbiBhdHRlbXB0aW5nIHRvIHZlcmlmeSB0
aGUgQ1JMIHBhdGguIFRoaXMgZXJyb3IgY2FuIG9ubHkgaGFwcGVuIGlmIGV4dGVuZGVkIENSTCBj
aGVja2luZyBpcyBlbmFibGVkLgorICAgIGNhc2UgWDUwOV9WX0VSUl9BUFBMSUNBVElPTl9WRVJJ
RklDQVRJT04gOiAvLyBhbiBhcHBsaWNhdGlvbiBzcGVjaWZpYyBlcnJvci4gVGhpcyB3aWxsIG5l
dmVyIGJlIHJldHVybmVkIHVubGVzcyBleHBsaWNpdGx5IHNldCBieSBhbiBhcHBsaWNhdGlvbi4K
KyAgICAgICAgcmV0dXJuIFNTTF9DRVJUSUZJQ0FURV9HRU5FUklDX0VSUk9SOworICAgIGNhc2Ug
WDUwOV9WX0VSUl9DRVJUX1JFVk9LRUQgOiAvLyB0aGUgY2VydGlmaWNhdGUgaGFzIGJlZW4gcmV2
b2tlZC4KKyAgICAgICAgcmV0dXJuIFNTTF9DRVJUSUZJQ0FURV9SRVZPS0VEOworICAgIGNhc2Ug
WDUwOV9WX0VSUl9JTlZBTElEX0NBIDogLy8gYSBDQSBjZXJ0aWZpY2F0ZSBpcyBpbnZhbGlkLiBF
aXRoZXIgaXQgaXMgbm90IGEgQ0Egb3IgaXRzIGV4dGVuc2lvbnMgYXJlIG5vdCBjb25zaXN0ZW50
IHdpdGggdGhlIHN1cHBsaWVkIHB1cnBvc2UuCisgICAgY2FzZSBYNTA5X1ZfRVJSX1NVQkpFQ1Rf
SVNTVUVSX01JU01BVENIIDogLy8gdGhlIGN1cnJlbnQgY2FuZGlkYXRlIGlzc3VlciBjZXJ0aWZp
Y2F0ZSB3YXMgcmVqZWN0ZWQgYmVjYXVzZSBpdHMgc3ViamVjdCBuYW1lIGRpZCBub3QgbWF0Y2gg
dGhlIGlzc3VlciBuYW1lIG9mIHRoZSBjdXJyZW50IGNlcnRpZmljYXRlLiBUaGlzIGlzIG9ubHkg
c2V0IGlmIGlzc3VlciBjaGVjayBkZWJ1Z2dpbmcgaXMgZW5hYmxlZCBpdCBpcyB1c2VkIGZvciBz
dGF0dXMgbm90aWZpY2F0aW9uIGFuZCBpcyBub3QgaW4gaXRzZWxmIGFuIGVycm9yLgorICAgIGNh
c2UgWDUwOV9WX0VSUl9BS0lEX1NLSURfTUlTTUFUQ0ggOiAvLyB0aGUgY3VycmVudCBjYW5kaWRh
dGUgaXNzdWVyIGNlcnRpZmljYXRlIHdhcyByZWplY3RlZCBiZWNhdXNlIGl0cyBzdWJqZWN0IGtl
eSBpZGVudGlmaWVyIHdhcyBwcmVzZW50IGFuZCBkaWQgbm90IG1hdGNoIHRoZSBhdXRob3JpdHkg
a2V5IGlkZW50aWZpZXIgY3VycmVudCBjZXJ0aWZpY2F0ZS4gVGhpcyBpcyBvbmx5IHNldCBpZiBp
c3N1ZXIgY2hlY2sgZGVidWdnaW5nIGlzIGVuYWJsZWQgaXQgaXMgdXNlZCBmb3Igc3RhdHVzIG5v
dGlmaWNhdGlvbiBhbmQgaXMgbm90IGluIGl0c2VsZiBhbiBlcnJvci4KKyAgICBjYXNlIFg1MDlf
Vl9FUlJfQUtJRF9JU1NVRVJfU0VSSUFMX01JU01BVENIIDogLy8gdGhlIGN1cnJlbnQgY2FuZGlk
YXRlIGlzc3VlciBjZXJ0aWZpY2F0ZSB3YXMgcmVqZWN0ZWQgYmVjYXVzZSBpdHMgaXNzdWVyIG5h
bWUgYW5kIHNlcmlhbCBudW1iZXIgd2FzIHByZXNlbnQgYW5kIGRpZCBub3QgbWF0Y2ggdGhlIGF1
dGhvcml0eSBrZXkgaWRlbnRpZmllciBvZiB0aGUgY3VycmVudCBjZXJ0aWZpY2F0ZS4gVGhpcyBp
cyBvbmx5IHNldCBpZiBpc3N1ZXIgY2hlY2sgZGVidWdnaW5nIGlzIGVuYWJsZWQgaXQgaXMgdXNl
ZCBmb3Igc3RhdHVzIG5vdGlmaWNhdGlvbiBhbmQgaXMgbm90IGluIGl0c2VsZiBhbiBlcnJvci4K
KyAgICBjYXNlIFg1MDlfVl9FUlJfS0VZVVNBR0VfTk9fQ0VSVFNJR04gOiAvLyB0aGUgY3VycmVu
dCBjYW5kaWRhdGUgaXNzdWVyIGNlcnRpZmljYXRlIHdhcyByZWplY3RlZCBiZWNhdXNlIGl0cyBr
ZXlVc2FnZSBleHRlbnNpb24gZG9lcyBub3QgcGVybWl0IGNlcnRpZmljYXRlIHNpZ25pbmcuIFRo
aXMgaXMgb25seSBzZXQgaWYgaXNzdWVyIGNoZWNrIGRlYnVnZ2luZyBpcyBlbmFibGVkIGl0IGlz
IHVzZWQgZm9yIHN0YXR1cyBub3RpZmljYXRpb24gYW5kIGlzIG5vdCBpbiBpdHNlbGYgYW4gZXJy
b3IuCisgICAgICAgIHJldHVybiBTU0xfQ0VSVElGSUNBVEVfQkFEX0lERU5USVRZOworICAgIGRl
ZmF1bHQgOgorICAgICAgICByZXR1cm4gU1NMX0NFUlRJRklDQVRFX0dFTkVSSUNfRVJST1I7Cisg
ICAgfQorfQorCitzdGF0aWMgaW50IGNlcnRWZXJpZnlDYWxsYmFjayhpbnQgb2ssIFg1MDlfU1RP
UkVfQ1RYICpjdHgpCit7CisgICAgLy8gd2hldGhlciB0aGUgdmVyaWZpY2F0aW9uIG9mIHRoZSBj
ZXJ0aWZpY2F0ZSBpbiBxdWVzdGlvbiB3YXMgcGFzc2VkIChwcmV2ZXJpZnlfb2s9MSkgb3Igbm90
IChwcmV2ZXJpZnlfb2s9MCkKKworICAgIHVuc2lnbmVkIGVyciA9IFg1MDlfU1RPUkVfQ1RYX2dl
dF9lcnJvcihjdHgpOworICAgIGlmICghZXJyKQorICAgICAgICByZXR1cm4gMTsKKworICAgIFg1
MDkqIGVyckNlcnQgPSBYNTA5X1NUT1JFX0NUWF9nZXRfY3VycmVudF9jZXJ0KGN0eCk7CisKKyAg
ICAvLyBnZXQgdGhlIGNlcnQgaW4gUEVNIGZvcm1hdAorICAgIEJJTyogYmlvID0gQklPX25ldyhC
SU9fc19tZW0oKSk7CisgICAgdW5zaWduZWQgY2hhciAqZGF0YTsKKworICAgIGludCByZXMgPSBQ
RU1fd3JpdGVfYmlvX1g1MDkoYmlvLCBlcnJDZXJ0KTsKKyAgICBpZiAoIXJlcykKKyAgICAgICAg
cmV0dXJuIDA7CisgICAgQklPX2dldF9tZW1fZGF0YShiaW8sICZkYXRhKTsKKworICAgIFNTTCog
c3NsID0gKFNTTCopWDUwOV9TVE9SRV9DVFhfZ2V0X2V4X2RhdGEoY3R4LCBTU0xfZ2V0X2V4X2Rh
dGFfWDUwOV9TVE9SRV9DVFhfaWR4KCkpOworICAgIFNTTF9DVFgqIHNzbGN0eCA9IFNTTF9nZXRf
U1NMX0NUWChzc2wpOworICAgIFJlc291cmNlSGFuZGxlKiBqb2IgID0gKFJlc291cmNlSGFuZGxl
KilTU0xfQ1RYX2dldF9hcHBfZGF0YShzc2xjdHgpOworICAgIFJlc291cmNlSGFuZGxlSW50ZXJu
YWwqIGQgPSBqb2ItPmdldEludGVybmFsKCk7CisgICAgU3RyaW5nIGhvc3QgPSBqb2ItPmZpcnN0
UmVxdWVzdCgpLnVybCgpLmhvc3QoKTsKKyAgICBkLT5tX3NzbEVycm9ycyA9IHNzbENlcnRpZmlj
YXRlRmxhZyhlcnIpOworICAgIG9rID0gc3NsSWdub3JlSFRUUFNDZXJ0aWZpY2F0ZShob3N0Lmxv
d2VyKCksIGRhdGEpOworICAgIC8vIGlmIHRoZSBob3N0IGFuZCB0aGUgY2VydGlmaWNhdGUgYXJl
IHN0b3JlZCBmb3IgdGhlIGN1cnJlbnQgaGFuZGxlIHRoYXQgbWVhbnMgaXMgZW5hYmxlZCwKKyAg
ICAvLyBzbyBkb24ndCBuZWVkIHRvIGN1cmwgdmVyaWZpZXMgdGhlIGF1dGhlbnRpY2l0eSBvZiB0
aGUgcGVlcidzIGNlcnRpZmljYXRlCisgICAgaWYgKG9rKQorICAgICAgICBjdXJsX2Vhc3lfc2V0
b3B0KGQtPm1faGFuZGxlLCBDVVJMT1BUX1NTTF9WRVJJRllQRUVSLCBmYWxzZSk7CisKKyAgICBy
ZXR1cm4gb2s7Cit9CisKK3N0YXRpYyBDVVJMY29kZSBzc2xjdHhmdW4oQ1VSTCAqIGN1cmwsIHZv
aWQgKiBzc2xjdHgsIHZvaWQgKiBwYXJtKQoreworICAgIFNTTF9DVFhfc2V0X2FwcF9kYXRhKChT
U0xfQ1RYKilzc2xjdHgsIHBhcm0pOworICAgIFNTTF9DVFhfc2V0X3ZlcmlmeSgoU1NMX0NUWCop
c3NsY3R4LCBTU0xfVkVSSUZZX1BFRVIsIGNlcnRWZXJpZnlDYWxsYmFjayk7CisgICAgcmV0dXJu
IENVUkxFX09LOworfQorCit2b2lkIHNldFNTTFZlcmlmeU9wdGlvbnMoUmVzb3VyY2VIYW5kbGUq
IGhhbmRsZSkKK3sKKyAgICBSZXNvdXJjZUhhbmRsZUludGVybmFsKiBkID0gaGFuZGxlLT5nZXRJ
bnRlcm5hbCgpOworICAgIGN1cmxfZWFzeV9zZXRvcHQoZC0+bV9oYW5kbGUsIENVUkxPUFRfU1NM
X0NUWF9EQVRBLCBoYW5kbGUpOworICAgIGN1cmxfZWFzeV9zZXRvcHQoZC0+bV9oYW5kbGUsIENV
UkxPUFRfU1NMX0NUWF9GVU5DVElPTiwgc3NsY3R4ZnVuKTsKK30KKworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NTTEhhbmRsZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NTTEhhbmRsZS5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZlODdjNDMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU1NMSGFuZGxlLmgKQEAgLTAsMCArMSw1MiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBVbml2ZXJzaXR5IG9mIFN6ZWdlZAorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVU5JVkVSU0lUWSBPRiBTWkVH
RUQgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgU1NMSGFuZGxlX2gKKyNkZWZpbmUgU1NMSGFuZGxlX2gKKworI2luY2x1ZGUgIlJl
c291cmNlSGFuZGxlLmgiCisKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCit0eXBlZGVmIGVudW0geworICAgIFNTTF9DRVJUSUZJQ0FURV9V
TktOT1dOX0NBICAgID0gKDEgPDwgMCksIC8vIFRoZSBzaWduaW5nIGNlcnRpZmljYXRlIGF1dGhv
cml0eSBpcyBub3Qga25vd24uCisgICAgU1NMX0NFUlRJRklDQVRFX0JBRF9JREVOVElUWSAgPSAo
MSA8PCAxKSwgLy8gVGhlIGNlcnRpZmljYXRlIGRvZXMgbm90IG1hdGNoIHRoZSBleHBlY3RlZCBp
ZGVudGl0eSBvZiB0aGUgc2l0ZSB0aGF0IGl0IHdhcyByZXRyaWV2ZWQgZnJvbS4KKyAgICBTU0xf
Q0VSVElGSUNBVEVfTk9UX0FDVElWQVRFRCA9ICgxIDw8IDIpLCAvLyBUaGUgY2VydGlmaWNhdGUn
cyBhY3RpdmF0aW9uIHRpbWUgaXMgc3RpbGwgaW4gdGhlIGZ1dHVyZQorICAgIFNTTF9DRVJUSUZJ
Q0FURV9FWFBJUkVEICAgICAgID0gKDEgPDwgMyksIC8vIFRoZSBjZXJ0aWZpY2F0ZSBoYXMgZXhw
aXJlZAorICAgIFNTTF9DRVJUSUZJQ0FURV9SRVZPS0VEICAgICAgID0gKDEgPDwgNCksIC8vIFRo
ZSBjZXJ0aWZpY2F0ZSBoYXMgYmVlbiByZXZva2VkCisgICAgU1NMX0NFUlRJRklDQVRFX0lOU0VD
VVJFICAgICAgPSAoMSA8PCA1KSwgLy8gVGhlIGNlcnRpZmljYXRlJ3MgYWxnb3JpdGhtIGlzIGNv
bnNpZGVyZWQgaW5zZWN1cmUuCisgICAgU1NMX0NFUlRJRklDQVRFX0dFTkVSSUNfRVJST1IgPSAo
MSA8PCA2KSAvLyBTb21lIG90aGVyIGVycm9yIG9jY3VycmVkIHZhbGlkYXRpbmcgdGhlIGNlcnRp
ZmljYXRlCit9IFNTTENlcnRpZmljYXRlRmxhZ3M7CisKKwordm9pZCBhbGxvd3NBbnlIVFRQU0Nl
cnRpZmljYXRlSG9zdHMoY29uc3QgU3RyaW5nJik7Citib29sIHNzbElnbm9yZUhUVFBTQ2VydGlm
aWNhdGUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJik7Cit2b2lkIHNldFNTTFZlcmlmeU9w
dGlvbnMoUmVzb3VyY2VIYW5kbGUqKTsKKworfQorCisjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214354</attachid>
            <date>2013-10-16 04:47:21 -0700</date>
            <delta_ts>2013-10-21 00:59:07 -0700</delta_ts>
            <desc>working progress patch v2</desc>
            <filename>general.patch</filename>
            <type>text/plain</type>
            <size>26217</size>
            <attacher>sipka</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhNTQ3MTlkLi44ZWVhZGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzcg
QEAKKzIwMTMtMTAtMTYgIFNpcGthIFLDs2JlcnQgIDxzaXBrYUBpbmYudS1zemVnZWQuaHU+CisK
KyAgICAgICAgW2N1cmxdIEltcHJvdmUgZGV0ZWN0aW5nIGFuZCBoYW5kbGluZyBvZiBTU0wgcmVs
YXRlZCBlcnJvcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTExOTQzNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFNldCB0aGUgZXhhY3QgU1NMIHZlcmlmaWNhdGlvbiBlcnJvciBvbiBDVVJMCisgICAgICAg
IGFuZCBzdG9yZSB0aGUgZW5hYmxlZCBkb21haW4gd2l0aCBjZXJ0aWZpY2F0ZS4KKworICAgICAg
ICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2o6CisgICAgICAgICogV2ViQ29yZS52
Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VIYW5kbGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
SGFuZGxlSW50ZXJuYWwuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlSW50ZXJu
YWw6OlJlc291cmNlSGFuZGxlSW50ZXJuYWwpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
Y3VybC9SZXNvdXJjZUVycm9yLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUVycm9yOjpS
ZXNvdXJjZUVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlRXJyb3I6OnNzbEVycm9y
cyk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUVycm9yOjpzZXRTU0xFcnJvcnMpOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnNldEhvc3RBbGxvd3NBbnlIVFRQU0NlcnRp
ZmljYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVN
YW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlTWFuYWdlcjo6ZG93
bmxvYWRUaW1lckNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlTWFu
YWdlcjo6aW5pdGlhbGl6ZUhhbmRsZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJs
L1NTTEhhbmRsZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6YWxsb3dzQW55SFRUUFND
ZXJ0aWZpY2F0ZUhvc3RzKToKKyAgICAgICAgKFdlYkNvcmU6OnNzbElnbm9yZUhUVFBTQ2VydGlm
aWNhdGUpOgorICAgICAgICAoV2ViQ29yZTo6c3NsQ2VydGlmaWNhdGVGbGFnKToKKyAgICAgICAg
KFdlYkNvcmU6OnBlbURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Y2VydFZlcmlmeUNhbGxiYWNr
KToKKyAgICAgICAgKFdlYkNvcmU6OnNzbGN0eGZ1bik6CisgICAgICAgIChXZWJDb3JlOjpzZXRT
U0xWZXJpZnlPcHRpb25zKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU1NMSGFu
ZGxlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9S
ZXNvdXJjZUVycm9yLmguCisKIDIwMTMtMTAtMTYgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBw
bGUuY29tPgogCiAgICAgICAgIFJlbmRlckVsZW1lbnQ6OmlzQ2hpbGRBbGxvd2VkKCkgc2hvdWxk
IHRha2UgY29uc3QgcmVmZXJlbmNlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHBy
b2ovV2ViQ29yZS52Y3hwcm9qCmluZGV4IDU4NWRkNDMuLjcwNjQyNjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagpAQCAtODE1Nyw2ICs4MTU3
LDE2IEBACiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9t
QnVpbGQ+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1
aWxkPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZv
cm1cbmV0d29ya1xjdXJsXFNTTEhhbmRsZS5jcHAiPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxk
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzIn
Ij50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPnRydWU8
L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdTdWZmaXh8V2luMzInIj50cnVl
PC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnU3VmZml4fHg2NCciPnRydWU8
L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPnRydWU8L0V4
Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj50cnVlPC9FeGNsdWRl
ZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzInIj50cnVlPC9FeGNsdWRl
ZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+dHJ1ZTwvRXhjbHVkZWRG
cm9tQnVpbGQ+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxw
bGF0Zm9ybVxzcWxcU1FMaXRlQXV0aG9yaXplci5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxwbGF0Zm9ybVxzcWxcU1FMaXRlRGF0YWJhc2UuY3BwIiAvPgogICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cc3FsXFNRTGl0ZUZpbGVTeXN0ZW0uY3BwIiAvPgpAQCAt
MTkxNjEsNiArMTkxNzEsMTYgQEAKICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzInIj50cnVl
PC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+dHJ1ZTwv
RXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgPC9DdXN0b21CdWlsZFN0ZXA+CisgICAgPEN1c3RvbUJ1
aWxkU3RlcCBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXGN1cmxcU1NMSGFuZGxlLmgiPgor
ICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAg
IDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J0RlYnVnfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1
ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
RGVidWdTdWZmaXh8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNs
dWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J0RlYnVnU3VmZml4fHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1
ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
UmVsZWFzZXxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVk
RnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVs
ZWFzZXx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21C
dWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rp
b258V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21C
dWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rp
b258eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgPC9DdXN0b21CdWlsZFN0ZXA+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxzcWxcU1FMaXRlRGF0YWJhc2Uu
aCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXHNxbFxTUUxpdGVGaWxl
U3lzdGVtLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxzcWxcU1FM
aXRlU3RhdGVtZW50LmgiIC8+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZj
eHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZj
eHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKaW5kZXggNGRlZWUwNi4uNDU5YmY3ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5m
aWx0ZXJzCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHBy
b2ouZmlsdGVycwpAQCAtMTkxNCw2ICsxOTE0LDkgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXHBsYXRmb3JtXG5ldHdvcmtcY3VybFxTb2NrZXRTdHJlYW1IYW5kbGVDdXJsLmNwcCI+CiAg
ICAgICA8RmlsdGVyPnBsYXRmb3JtXG5ldHdvcmtcY3VybDwvRmlsdGVyPgogICAgIDwvQ2xDb21w
aWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cbmV0d29ya1xjdXJsXFNT
TEhhbmRsZS5jcHAiPgorICAgICAgPEZpbHRlcj5wbGF0Zm9ybVxuZXR3b3JrXGN1cmw8L0ZpbHRl
cj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3Jt
XHNxbFxTUUxpdGVBdXRob3JpemVyLmNwcCI+CiAgICAgICA8RmlsdGVyPnBsYXRmb3JtXHNxbDwv
RmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgpAQCAtMTQ2OTQsNiArMTQ2OTcsOSBAQAogICAgIDxD
dXN0b21CdWlsZFN0ZXAgSW5jbHVkZT0iLi5ccGxhdGZvcm1cbmV0d29ya1xjdXJsXFJlc291cmNl
UmVzcG9uc2UuaCI+CiAgICAgICA8RmlsdGVyPnBsYXRmb3JtXG5ldHdvcmtcY3VybDwvRmlsdGVy
PgogICAgIDwvQ3VzdG9tQnVpbGRTdGVwPgorICAgIDxDdXN0b21CdWlsZFN0ZXAgSW5jbHVkZT0i
Li5ccGxhdGZvcm1cbmV0d29ya1xjdXJsXFNTTEhhbmRsZS5oIj4KKyAgICAgIDxGaWx0ZXI+cGxh
dGZvcm1cbmV0d29ya1xjdXJsPC9GaWx0ZXI+CisgICAgPC9DdXN0b21CdWlsZFN0ZXA+CiAgICAg
PEN1c3RvbUJ1aWxkU3RlcCBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxpbWFnZS1kZWNvZGVyc1xnaWZc
R0lGSW1hZ2VEZWNvZGVyLmgiPgogICAgICAgPEZpbHRlcj5wbGF0Zm9ybVxpbWFnZS1kZWNvZGVy
c1xnaWY8L0ZpbHRlcj4KICAgICA8L0N1c3RvbUJ1aWxkU3RlcD4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaAppbmRleCAwMjk0NWUxLi4xZDli
NmU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
SGFuZGxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhh
bmRsZS5oCkBAIC0xMzgsNyArMTM4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIHNldENs
aWVudENlcnRpZmljYXRlKGNvbnN0IFN0cmluZyYgaG9zdCwgQ0ZEYXRhUmVmKTsKICNlbmRpZgog
Ci0jaWYgUExBVEZPUk0oV0lOKSAmJiBVU0UoQ1VSTCkKKyNpZiAoUExBVEZPUk0oV0lOKSB8fCBQ
TEFURk9STShOSVgpKSAmJiBVU0UoQ1VSTCkKICAgICBzdGF0aWMgdm9pZCBzZXRIb3N0QWxsb3dz
QW55SFRUUFNDZXJ0aWZpY2F0ZShjb25zdCBTdHJpbmcmKTsKICNlbmRpZgogI2lmIFBMQVRGT1JN
KFdJTikgJiYgVVNFKENVUkwpICYmIFVTRShDRikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmgKaW5kZXggOWI4YTg5
YS4uNjBmYjY3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZUhhbmRsZUludGVybmFsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmgKQEAgLTEwMSw2ICsxMDEsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgICAgICAsIG1fY2FuY2VsbGVkKGZhbHNlKQogICAgICAgICAg
ICAgLCBtX2F1dGhGYWlsdXJlQ291bnQoMCkKICAgICAgICAgICAgICwgbV9mb3JtRGF0YVN0cmVh
bShsb2FkZXIpCisgICAgICAgICAgICAsIG1fc3NsRXJyb3JzKDApCiAjZW5kaWYKICNpZiBVU0Uo
U09VUCkKICAgICAgICAgICAgICwgbV9jYW5jZWxsZWQoZmFsc2UpCkBAIC0xNzgsNiArMTc5LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB1bnNpZ25lZCBzaG9ydCBtX2F1dGhGYWls
dXJlQ291bnQ7CiAKICAgICAgICAgRm9ybURhdGFTdHJlYW0gbV9mb3JtRGF0YVN0cmVhbTsKKyAg
ICAgICAgdW5zaWduZWQgbV9zc2xFcnJvcnM7CiAgICAgICAgIFZlY3RvcjxjaGFyPiBtX3Bvc3RC
eXRlczsKIAogICAgICAgICBPd25QdHI8TXVsdGlwYXJ0SGFuZGxlPiBtX211bHRpcGFydEhhbmRs
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNv
dXJjZUVycm9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3Vy
Y2VFcnJvci5oCmluZGV4IGNhOGQzNmIuLjc1NTVmNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUVycm9yLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlRXJyb3IuaApAQCAtMzMsMTQgKzMz
LDIwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlc291cmNlRXJyb3IgOiBwdWJsaWMg
UmVzb3VyY2VFcnJvckJhc2UKIHsKIHB1YmxpYzoKLSAgICBSZXNvdXJjZUVycm9yKCkKKyAgICBS
ZXNvdXJjZUVycm9yKCkgOiBtX3NzbEVycm9ycygwKQogICAgIHsKICAgICB9CiAKICAgICBSZXNv
dXJjZUVycm9yKGNvbnN0IFN0cmluZyYgZG9tYWluLCBpbnQgZXJyb3JDb2RlLCBjb25zdCBTdHJp
bmcmIGZhaWxpbmdVUkwsIGNvbnN0IFN0cmluZyYgbG9jYWxpemVkRGVzY3JpcHRpb24pCi0gICAg
ICAgIDogUmVzb3VyY2VFcnJvckJhc2UoZG9tYWluLCBlcnJvckNvZGUsIGZhaWxpbmdVUkwsIGxv
Y2FsaXplZERlc2NyaXB0aW9uKQorICAgICAgICA6IFJlc291cmNlRXJyb3JCYXNlKGRvbWFpbiwg
ZXJyb3JDb2RlLCBmYWlsaW5nVVJMLCBsb2NhbGl6ZWREZXNjcmlwdGlvbiksIG1fc3NsRXJyb3Jz
KDApCiAgICAgewogICAgIH0KKworICAgIHVuc2lnbmVkIHNzbEVycm9ycygpIGNvbnN0IHsgcmV0
dXJuIG1fc3NsRXJyb3JzOyB9CisgICAgdm9pZCBzZXRTU0xFcnJvcnModW5zaWduZWQgc3NsVmVy
aWZ5UmVzdWx0KSB7IG1fc3NsRXJyb3JzID0gc3NsVmVyaWZ5UmVzdWx0OyB9CisKK3ByaXZhdGU6
CisgICAgdW5zaWduZWQgbV9zc2xFcnJvcnM7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3Bw
CmluZGV4IGM5MThmMTUuLmI5YWUwMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCkBAIC0zNCw4
ICszNCwxMCBAQAogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiUmVzb3Vy
Y2VIYW5kbGVJbnRlcm5hbC5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlTWFuYWdlci5oIgor
I2luY2x1ZGUgIlNTTEhhbmRsZS5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogCisKICNp
ZiBQTEFURk9STShXSU4pICYmIFVTRShDRikKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KQEAgLTExNiwxOSArMTE4LDEwIEBAIHZvaWQgUmVz
b3VyY2VIYW5kbGU6OmNhbmNlbCgpCiAgICAgUmVzb3VyY2VIYW5kbGVNYW5hZ2VyOjpzaGFyZWRJ
bnN0YW5jZSgpLT5jYW5jZWwodGhpcyk7CiB9CiAKLSNpZiBQTEFURk9STShXSU4pICYmIFVTRShD
RikKLXN0YXRpYyBIYXNoU2V0PFN0cmluZz4mIGFsbG93c0FueUhUVFBTQ2VydGlmaWNhdGVIb3N0
cygpCi17Ci0gICAgc3RhdGljIEhhc2hTZXQ8U3RyaW5nPiBob3N0czsKLQotICAgIHJldHVybiBo
b3N0czsKLX0KLQogdm9pZCBSZXNvdXJjZUhhbmRsZTo6c2V0SG9zdEFsbG93c0FueUhUVFBTQ2Vy
dGlmaWNhdGUoY29uc3QgU3RyaW5nJiBob3N0KQogewotICAgIGFsbG93c0FueUhUVFBTQ2VydGlm
aWNhdGVIb3N0cygpLmFkZChob3N0Lmxvd2VyKCkpOworICAgIGFsbG93c0FueUhUVFBTQ2VydGlm
aWNhdGVIb3N0cyhob3N0Lmxvd2VyKCkpOwogfQotI2VuZGlmCiAKICNpZiBQTEFURk9STShXSU4p
ICYmIFVTRShDRikKIC8vIEZJWE1FOiAgVGhlIENGRGF0YVJlZiB3aWxsIG5lZWQgdG8gYmUgc29t
ZXRoaW5nIGVsc2Ugd2hlbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL1Jlc291cmNlSGFuZGxlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVNYW5hZ2VyLmNwcAppbmRleCBjOGE5MjBi
Li4zZjZjMDAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvUmVzb3VyY2VIYW5kbGVNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVNYW5hZ2VyLmNwcApAQCAtNDUsNiArNDUsNyBA
QAogI2luY2x1ZGUgIlJlc291cmNlRXJyb3IuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5o
IgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlSW50ZXJuYWwuaCIKKyNpbmNsdWRlICJTU0xIYW5k
bGUuaCIKIAogI2lmIE9TKFdJTkRPV1MpCiAjaW5jbHVkZSAiV2ViQ29yZUJ1bmRsZVdpbi5oIgpA
QCAtNjE0LDggKzYxNSwxMSBAQCB2b2lkIFJlc291cmNlSGFuZGxlTWFuYWdlcjo6ZG93bmxvYWRU
aW1lckNhbGxiYWNrKFRpbWVyPFJlc291cmNlSGFuZGxlTWFuYWdlcj4qCiAjaWZuZGVmIE5ERUJV
RwogICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJDdXJsIEVSUk9SIGZvciB1cmw9JyVzJywg
ZXJyb3I6ICclcydcbiIsIHVybCwgY3VybF9lYXN5X3N0cmVycm9yKG1zZy0+ZGF0YS5yZXN1bHQp
KTsKICNlbmRpZgotICAgICAgICAgICAgaWYgKGQtPmNsaWVudCgpKQotICAgICAgICAgICAgICAg
IGQtPmNsaWVudCgpLT5kaWRGYWlsKGpvYiwgUmVzb3VyY2VFcnJvcihTdHJpbmcoKSwgbXNnLT5k
YXRhLnJlc3VsdCwgU3RyaW5nKHVybCksIFN0cmluZyhjdXJsX2Vhc3lfc3RyZXJyb3IobXNnLT5k
YXRhLnJlc3VsdCkpKSk7CisgICAgICAgICAgICBpZiAoZC0+Y2xpZW50KCkpIHsKKyAgICAgICAg
ICAgICAgICBSZXNvdXJjZUVycm9yIHJlc291cmNlRXJyb3IgPSBSZXNvdXJjZUVycm9yKFN0cmlu
ZygpLCBtc2ctPmRhdGEucmVzdWx0LCBTdHJpbmcodXJsKSwgU3RyaW5nKGN1cmxfZWFzeV9zdHJl
cnJvcihtc2ctPmRhdGEucmVzdWx0KSkpOworICAgICAgICAgICAgICAgIHJlc291cmNlRXJyb3Iu
c2V0U1NMRXJyb3JzKGQtPm1fc3NsRXJyb3JzKTsKKyAgICAgICAgICAgICAgICBkLT5jbGllbnQo
KS0+ZGlkRmFpbChqb2IsIHJlc291cmNlRXJyb3IpOworICAgICAgICAgICAgfQogICAgICAgICB9
CiAKICAgICAgICAgcmVtb3ZlRnJvbUN1cmwoam9iKTsKQEAgLTkzMiw2ICs5MzYsOCBAQCB2b2lk
IFJlc291cmNlSGFuZGxlTWFuYWdlcjo6aW5pdGlhbGl6ZUhhbmRsZShSZXNvdXJjZUhhbmRsZSog
am9iKQogICAgIGlmIChnZXRlbnYoIkRFQlVHX0NVUkwiKSkKICAgICAgICAgY3VybF9lYXN5X3Nl
dG9wdChkLT5tX2hhbmRsZSwgQ1VSTE9QVF9WRVJCT1NFLCAxKTsKICNlbmRpZgorICAgIGN1cmxf
ZWFzeV9zZXRvcHQoZC0+bV9oYW5kbGUsIENVUkxPUFRfU1NMX1ZFUklGWVBFRVIsIDFMKTsKKyAg
ICBjdXJsX2Vhc3lfc2V0b3B0KGQtPm1faGFuZGxlLCBDVVJMT1BUX1NTTF9WRVJJRllIT1NULCAy
TCk7CiAgICAgY3VybF9lYXN5X3NldG9wdChkLT5tX2hhbmRsZSwgQ1VSTE9QVF9QUklWQVRFLCBq
b2IpOwogICAgIGN1cmxfZWFzeV9zZXRvcHQoZC0+bV9oYW5kbGUsIENVUkxPUFRfRVJST1JCVUZG
RVIsIG1fY3VybEVycm9yQnVmZmVyKTsKICAgICBjdXJsX2Vhc3lfc2V0b3B0KGQtPm1faGFuZGxl
LCBDVVJMT1BUX1dSSVRFRlVOQ1RJT04sIHdyaXRlQ2FsbGJhY2spOwpAQCAtOTUwLDYgKzk1Niw4
IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGVNYW5hZ2VyOjppbml0aWFsaXplSGFuZGxlKFJlc291cmNl
SGFuZGxlKiBqb2IpCiAgICAgLy8gYW5kL29yIHJlcG9ydGluZyBTU0wgZXJyb3JzIHRvIHRoZSB1
c2VyLgogICAgIGlmIChpZ25vcmVTU0xFcnJvcnMpCiAgICAgICAgIGN1cmxfZWFzeV9zZXRvcHQo
ZC0+bV9oYW5kbGUsIENVUkxPUFRfU1NMX1ZFUklGWVBFRVIsIGZhbHNlKTsKKyAgICBlbHNlCisg
ICAgICAgIHNldFNTTFZlcmlmeU9wdGlvbnMoam9iKTsKIAogICAgIGlmICghbV9jZXJ0aWZpY2F0
ZVBhdGguaXNOdWxsKCkpCiAgICAgICAgY3VybF9lYXN5X3NldG9wdChkLT5tX2hhbmRsZSwgQ1VS
TE9QVF9DQUlORk8sIG1fY2VydGlmaWNhdGVQYXRoLmRhdGEoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU1NMSGFuZGxlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9TU0xIYW5kbGUuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU2NjM4ZjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU1NMSGFuZGxlLmNwcApAQCAtMCwwICsxLDE5
MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBVbml2ZXJzaXR5IG9mIFN6ZWdlZAorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVU5JVkVSU0lUWSBPRiBT
WkVHRUQgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIlNTTEhhbmRsZS5oIgorCisjaW5j
bHVkZSAiUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oIgorCisjaW5jbHVkZSA8b3BlbnNzbC9wZW0u
aD4KKyNpbmNsdWRlIDxvcGVuc3NsL3NzbC5oPgorI2luY2x1ZGUgPG9wZW5zc2wveDUwOV92Znku
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgSGFzaE1hcDxTdHJpbmcsIFN0cmlu
Zz4gYWxsb3dlZEhvc3RzOworCit2b2lkIGFsbG93c0FueUhUVFBTQ2VydGlmaWNhdGVIb3N0cyhj
b25zdCBTdHJpbmcmIGhvc3QpCit7CisgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz46Oml0ZXJh
dG9yIGl0ID0gYWxsb3dlZEhvc3RzLmZpbmQoaG9zdCk7CisgICAgaWYgKGl0ICE9IGFsbG93ZWRI
b3N0cy5lbmQoKSkKKyAgICAgICAgaXQtPnZhbHVlID0gU3RyaW5nKCk7CisgICAgZWxzZQorICAg
ICAgICBhbGxvd2VkSG9zdHMuYWRkKGhvc3QsIFN0cmluZygpKTsKK30KKworYm9vbCBzc2xJZ25v
cmVIVFRQU0NlcnRpZmljYXRlKGNvbnN0IFN0cmluZyYgaG9zdCwgY29uc3QgU3RyaW5nJiBjZXJ0
KQoreworICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+OjppdGVyYXRvciBpdCA9IGFsbG93ZWRI
b3N0cy5maW5kKGhvc3QpOworICAgIGlmIChpdCAhPSBhbGxvd2VkSG9zdHMuZW5kKCkpIHsKKyAg
ICAgICAgaWYgKChpdC0+dmFsdWUpLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgaXQtPnZhbHVl
ID0gY2VydDsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIGlm
IChpdC0+dmFsdWUgPT0gY2VydCkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKK2ludCBzc2wKK3Vuc2lnbmVkIHNzbENlcnRpZmljYXRlRmxh
Zyhjb25zdCB1bnNpZ25lZCYgc3NsRXJyb3IpCit7CisgICAgc3dpdGNoIChzc2xFcnJvcikgewor
ICAgIGNhc2UgWDUwOV9WX0VSUl9VTkFCTEVfVE9fR0VUX0lTU1VFUl9DRVJUIDogLy8gdGhlIGlz
c3VlciBjZXJ0aWZpY2F0ZSBjb3VsZCBub3QgYmUgZm91bmQ6IHRoaXMgb2NjdXJzIGlmIHRoZSBp
c3N1ZXIgY2VydGlmaWNhdGUgb2YgYW4gdW50cnVzdGVkIGNlcnRpZmljYXRlIGNhbm5vdCBiZSBm
b3VuZC4KKyAgICBjYXNlIFg1MDlfVl9FUlJfVU5BQkxFX1RPX0dFVF9DUkwgOiAvLyB0aGUgQ1JM
IG9mIGEgY2VydGlmaWNhdGUgY291bGQgbm90IGJlIGZvdW5kLgorICAgIGNhc2UgWDUwOV9WX0VS
Ul9VTkFCTEVfVE9fR0VUX0lTU1VFUl9DRVJUX0xPQ0FMTFkgOiAvLyB0aGUgaXNzdWVyIGNlcnRp
ZmljYXRlIG9mIGEgbG9jYWxseSBsb29rZWQgdXAgY2VydGlmaWNhdGUgY291bGQgbm90IGJlIGZv
dW5kLiBUaGlzIG5vcm1hbGx5IG1lYW5zIHRoZSBsaXN0IG9mIHRydXN0ZWQgY2VydGlmaWNhdGVz
IGlzIG5vdCBjb21wbGV0ZS4KKyAgICAgICAgcmV0dXJuIFNTTF9DRVJUSUZJQ0FURV9VTktOT1dO
X0NBOworICAgIGNhc2UgWDUwOV9WX0VSUl9VTkFCTEVfVE9fREVDUllQVF9DRVJUX1NJR05BVFVS
RSA6IC8vIHRoZSBjZXJ0aWZpY2F0ZSBzaWduYXR1cmUgY291bGQgbm90IGJlIGRlY3J5cHRlZC4g
VGhpcyBtZWFucyB0aGF0IHRoZSBhY3R1YWwgc2lnbmF0dXJlIHZhbHVlIGNvdWxkIG5vdCBiZSBk
ZXRlcm1pbmVkIHJhdGhlciB0aGFuIGl0IG5vdCBtYXRjaGluZyB0aGUgZXhwZWN0ZWQgdmFsdWUs
IHRoaXMgaXMgb25seSBtZWFuaW5nZnVsIGZvciBSU0Ega2V5cy4KKyAgICBjYXNlIFg1MDlfVl9F
UlJfVU5BQkxFX1RPX0RFQ1JZUFRfQ1JMX1NJR05BVFVSRSA6IC8vIHRoZSBDUkwgc2lnbmF0dXJl
IGNvdWxkIG5vdCBiZSBkZWNyeXB0ZWQ6IHRoaXMgbWVhbnMgdGhhdCB0aGUgYWN0dWFsIHNpZ25h
dHVyZSB2YWx1ZSBjb3VsZCBub3QgYmUgZGV0ZXJtaW5lZCByYXRoZXIgdGhhbiBpdCBub3QgbWF0
Y2hpbmcgdGhlIGV4cGVjdGVkIHZhbHVlLiBVbnVzZWQuCisgICAgY2FzZSBYNTA5X1ZfRVJSX1VO
QUJMRV9UT19ERUNPREVfSVNTVUVSX1BVQkxJQ19LRVkgOiAvLyB0aGUgcHVibGljIGtleSBpbiB0
aGUgY2VydGlmaWNhdGUgU3ViamVjdFB1YmxpY0tleUluZm8gY291bGQgbm90IGJlIHJlYWQuCisg
ICAgY2FzZSBYNTA5X1ZfRVJSX0NFUlRfU0lHTkFUVVJFX0ZBSUxVUkUgOiAvLyB0aGUgc2lnbmF0
dXJlIG9mIHRoZSBjZXJ0aWZpY2F0ZSBpcyBpbnZhbGlkLgorICAgIGNhc2UgWDUwOV9WX0VSUl9E
RVBUSF9aRVJPX1NFTEZfU0lHTkVEX0NFUlQgOiAvLyB0aGUgcGFzc2VkIGNlcnRpZmljYXRlIGlz
IHNlbGYgc2lnbmVkIGFuZCB0aGUgc2FtZSBjZXJ0aWZpY2F0ZSBjYW5ub3QgYmUgZm91bmQgaW4g
dGhlIGxpc3Qgb2YgdHJ1c3RlZCBjZXJ0aWZpY2F0ZXMuCisgICAgY2FzZSBYNTA5X1ZfRVJSX1NF
TEZfU0lHTkVEX0NFUlRfSU5fQ0hBSU4gOiAvLyB0aGUgY2VydGlmaWNhdGUgY2hhaW4gY291bGQg
YmUgYnVpbHQgdXAgdXNpbmcgdGhlIHVudHJ1c3RlZCBjZXJ0aWZpY2F0ZXMgYnV0IHRoZSByb290
IGNvdWxkIG5vdCBiZSBmb3VuZCBsb2NhbGx5LgorICAgIGNhc2UgWDUwOV9WX0VSUl9VTkFCTEVf
VE9fVkVSSUZZX0xFQUZfU0lHTkFUVVJFIDogLy8gbm8gc2lnbmF0dXJlcyBjb3VsZCBiZSB2ZXJp
ZmllZCBiZWNhdXNlIHRoZSBjaGFpbiBjb250YWlucyBvbmx5IG9uZSBjZXJ0aWZpY2F0ZSBhbmQg
aXQgaXMgbm90IHNlbGYgc2lnbmVkLgorICAgIGNhc2UgWDUwOV9WX0VSUl9JTlZBTElEX1BVUlBP
U0UgOiAvLyB0aGUgc3VwcGxpZWQgY2VydGlmaWNhdGUgY2Fubm90IGJlIHVzZWQgZm9yIHRoZSBz
cGVjaWZpZWQgcHVycG9zZS4KKyAgICBjYXNlIFg1MDlfVl9FUlJfQ0VSVF9VTlRSVVNURUQgOiAv
LyB0aGUgcm9vdCBDQSBpcyBub3QgbWFya2VkIGFzIHRydXN0ZWQgZm9yIHRoZSBzcGVjaWZpZWQg
cHVycG9zZS4KKyAgICBjYXNlIFg1MDlfVl9FUlJfQ0VSVF9SRUpFQ1RFRCA6IC8vIHRoZSByb290
IENBIGlzIG1hcmtlZCB0byByZWplY3QgdGhlIHNwZWNpZmllZCBwdXJwb3NlLgorICAgIGNhc2Ug
WDUwOV9WX0VSUl9OT19FWFBMSUNJVF9QT0xJQ1kgOiAvLyB0aGUgdmVyaWZpY2F0aW9uIGZsYWdz
IHdlcmUgc2V0IHRvIHJlcXVpcmUgYW5kIGV4cGxpY2l0IHBvbGljeSBidXQgbm9uZSB3YXMgcHJl
c2VudC4KKyAgICBjYXNlIFg1MDlfVl9FUlJfRElGRkVSRU5UX0NSTF9TQ09QRSA6IC8vIHRoZSBv
bmx5IENSTHMgdGhhdCBjb3VsZCBiZSBmb3VuZCBkaWQgbm90IG1hdGNoIHRoZSBzY29wZSBvZiB0
aGUgY2VydGlmaWNhdGUuCisgICAgICAgIHJldHVybiBTU0xfQ0VSVElGSUNBVEVfSU5TRUNVUkU7
CisgICAgY2FzZSBYNTA5X1ZfRVJSX0NFUlRfTk9UX1lFVF9WQUxJRCA6IC8vIHRoZSBjZXJ0aWZp
Y2F0ZSBpcyBub3QgeWV0IHZhbGlkOiB0aGUgbm90QmVmb3JlIGRhdGUgaXMgYWZ0ZXIgdGhlIGN1
cnJlbnQgdGltZS4KKyAgICBjYXNlIFg1MDlfVl9FUlJfQ1JMX05PVF9ZRVRfVkFMSUQgOiAvLyB0
aGUgQ1JMIGlzIG5vdCB5ZXQgdmFsaWQuCisgICAgICAgIHJldHVybiBTU0xfQ0VSVElGSUNBVEVf
Tk9UX0FDVElWQVRFRDsKKyAgICBjYXNlIFg1MDlfVl9FUlJfQ0VSVF9IQVNfRVhQSVJFRCA6IC8v
IHRoZSBjZXJ0aWZpY2F0ZSBoYXMgZXhwaXJlZDogdGhhdCBpcyB0aGUgbm90QWZ0ZXIgZGF0ZSBp
cyBiZWZvcmUgdGhlIGN1cnJlbnQgdGltZS4KKyAgICBjYXNlIFg1MDlfVl9FUlJfQ1JMX0hBU19F
WFBJUkVEIDogLy8gdGhlIENSTCBoYXMgZXhwaXJlZC4KKyAgICAgICAgcmV0dXJuIFNTTF9DRVJU
SUZJQ0FURV9FWFBJUkVEOworICAgIGNhc2UgWDUwOV9WX0VSUl9FUlJPUl9JTl9DRVJUX05PVF9C
RUZPUkVfRklFTEQgOiAvLyB0aGUgY2VydGlmaWNhdGUgbm90QmVmb3JlIGZpZWxkIGNvbnRhaW5z
IGFuIGludmFsaWQgdGltZS4KKyAgICBjYXNlIFg1MDlfVl9FUlJfRVJST1JfSU5fQ0VSVF9OT1Rf
QUZURVJfRklFTEQgOiAvLyB0aGUgY2VydGlmaWNhdGUgbm90QWZ0ZXIgZmllbGQgY29udGFpbnMg
YW4gaW52YWxpZCB0aW1lLgorICAgIGNhc2UgWDUwOV9WX0VSUl9FUlJPUl9JTl9DUkxfTEFTVF9V
UERBVEVfRklFTEQgOiAvLyB0aGUgQ1JMIGxhc3RVcGRhdGUgZmllbGQgY29udGFpbnMgYW4gaW52
YWxpZCB0aW1lLgorICAgIGNhc2UgWDUwOV9WX0VSUl9FUlJPUl9JTl9DUkxfTkVYVF9VUERBVEVf
RklFTEQgOiAvLyB0aGUgQ1JMIG5leHRVcGRhdGUgZmllbGQgY29udGFpbnMgYW4gaW52YWxpZCB0
aW1lLgorICAgIGNhc2UgWDUwOV9WX0VSUl9PVVRfT0ZfTUVNIDogLy8gYW4gZXJyb3Igb2NjdXJy
ZWQgdHJ5aW5nIHRvIGFsbG9jYXRlIG1lbW9yeS4gVGhpcyBzaG91bGQgbmV2ZXIgaGFwcGVuLgor
ICAgIGNhc2UgWDUwOV9WX0VSUl9DRVJUX0NIQUlOX1RPT19MT05HIDogLy8gdGhlIGNlcnRpZmlj
YXRlIGNoYWluIGxlbmd0aCBpcyBncmVhdGVyIHRoYW4gdGhlIHN1cHBsaWVkIG1heGltdW0gZGVw
dGguIFVudXNlZC4KKyAgICBjYXNlIFg1MDlfVl9FUlJfUEFUSF9MRU5HVEhfRVhDRUVERUQgOiAv
LyB0aGUgYmFzaWNDb25zdHJhaW50cyBwYXRobGVuZ3RoIHBhcmFtZXRlciBoYXMgYmVlbiBleGNl
ZWRlZC4KKyAgICBjYXNlIFg1MDlfVl9FUlJfSU5WQUxJRF9FWFRFTlNJT04gOiAvLyBhIGNlcnRp
ZmljYXRlIGV4dGVuc2lvbiBoYWQgYW4gaW52YWxpZCB2YWx1ZSAoZm9yIGV4YW1wbGUgYW4gaW5j
b3JyZWN0IGVuY29kaW5nKSBvciBzb21lIHZhbHVlIGluY29uc2lzdGVudCB3aXRoIG90aGVyIGV4
dGVuc2lvbnMuCisgICAgY2FzZSBYNTA5X1ZfRVJSX0lOVkFMSURfUE9MSUNZX0VYVEVOU0lPTiA6
IC8vIGEgY2VydGlmaWNhdGUgcG9saWNpZXMgZXh0ZW5zaW9uIGhhZCBhbiBpbnZhbGlkIHZhbHVl
IChmb3IgZXhhbXBsZSBhbiBpbmNvcnJlY3QgZW5jb2RpbmcpIG9yIHNvbWUgdmFsdWUgaW5jb25z
aXN0ZW50IHdpdGggb3RoZXIgZXh0ZW5zaW9ucy4gVGhpcyBlcnJvciBvbmx5IG9jY3VycyBpZiBw
b2xpY3kgcHJvY2Vzc2luZyBpcyBlbmFibGVkLgorICAgIGNhc2UgWDUwOV9WX0VSUl9VTlNVUFBP
UlRFRF9FWFRFTlNJT05fRkVBVFVSRSA6IC8vIHNvbWUgZmVhdHVyZSBvZiBhIGNlcnRpZmljYXRl
IGV4dGVuc2lvbiBpcyBub3Qgc3VwcG9ydGVkLiBVbnVzZWQuCisgICAgY2FzZSBYNTA5X1ZfRVJS
X1BFUk1JVFRFRF9WSU9MQVRJT04gOiAvLyBhIG5hbWUgY29uc3RyYWludCB2aW9sYXRpb24gb2Nj
dXJlZCBpbiB0aGUgcGVybWl0dGVkIHN1YnRyZWVzLgorICAgIGNhc2UgWDUwOV9WX0VSUl9FWENM
VURFRF9WSU9MQVRJT04gOiAvLyBhIG5hbWUgY29uc3RyYWludCB2aW9sYXRpb24gb2NjdXJlZCBp
biB0aGUgZXhjbHVkZWQgc3VidHJlZXMuCisgICAgY2FzZSBYNTA5X1ZfRVJSX1NVQlRSRUVfTUlO
TUFYIDogLy8gYSBjZXJ0aWZpY2F0ZSBuYW1lIGNvbnN0cmFpbnRzIGV4dGVuc2lvbiBpbmNsdWRl
ZCBhIG1pbmltdW0gb3IgbWF4aW11bSBmaWVsZDogdGhpcyBpcyBub3Qgc3VwcG9ydGVkLgorICAg
IGNhc2UgWDUwOV9WX0VSUl9VTlNVUFBPUlRFRF9DT05TVFJBSU5UX1RZUEUgOiAvLyBhbiB1bnN1
cHBvcnRlZCBuYW1lIGNvbnN0cmFpbnQgdHlwZSB3YXMgZW5jb3VudGVyZWQuIE9wZW5TU0wgY3Vy
cmVudGx5IG9ubHkgc3VwcG9ydHMgZGlyZWN0b3J5IG5hbWUsIEROUyBuYW1lLCBlbWFpbCBhbmQg
VVJJIHR5cGVzLgorICAgIGNhc2UgWDUwOV9WX0VSUl9VTlNVUFBPUlRFRF9DT05TVFJBSU5UX1NZ
TlRBWCA6IC8vIHRoZSBmb3JtYXQgb2YgdGhlIG5hbWUgY29uc3RyYWludCBpcyBub3QgcmVjb2du
aXNlZDogZm9yIGV4YW1wbGUgYW4gZW1haWwgYWRkcmVzcyBmb3JtYXQgb2YgYSBmb3JtIG5vdCBt
ZW50aW9uZWQgaW4gUkZDMzI4MC4gVGhpcyBjb3VsZCBiZSBjYXVzZWQgYnkgYSBnYXJiYWdlIGV4
dGVuc2lvbiBvciBzb21lIG5ldyBmZWF0dXJlIG5vdCBjdXJyZW50bHkgc3VwcG9ydGVkLgorICAg
IGNhc2UgWDUwOV9WX0VSUl9DUkxfUEFUSF9WQUxJREFUSU9OX0VSUk9SIDogLy8gYW4gZXJyb3Ig
b2NjdXJlZCB3aGVuIGF0dGVtcHRpbmcgdG8gdmVyaWZ5IHRoZSBDUkwgcGF0aC4gVGhpcyBlcnJv
ciBjYW4gb25seSBoYXBwZW4gaWYgZXh0ZW5kZWQgQ1JMIGNoZWNraW5nIGlzIGVuYWJsZWQuCisg
ICAgY2FzZSBYNTA5X1ZfRVJSX0FQUExJQ0FUSU9OX1ZFUklGSUNBVElPTiA6IC8vIGFuIGFwcGxp
Y2F0aW9uIHNwZWNpZmljIGVycm9yLiBUaGlzIHdpbGwgbmV2ZXIgYmUgcmV0dXJuZWQgdW5sZXNz
IGV4cGxpY2l0bHkgc2V0IGJ5IGFuIGFwcGxpY2F0aW9uLgorICAgICAgICByZXR1cm4gU1NMX0NF
UlRJRklDQVRFX0dFTkVSSUNfRVJST1I7CisgICAgY2FzZSBYNTA5X1ZfRVJSX0NFUlRfUkVWT0tF
RCA6IC8vIHRoZSBjZXJ0aWZpY2F0ZSBoYXMgYmVlbiByZXZva2VkLgorICAgICAgICByZXR1cm4g
U1NMX0NFUlRJRklDQVRFX1JFVk9LRUQ7CisgICAgY2FzZSBYNTA5X1ZfRVJSX0lOVkFMSURfQ0Eg
OiAvLyBhIENBIGNlcnRpZmljYXRlIGlzIGludmFsaWQuIEVpdGhlciBpdCBpcyBub3QgYSBDQSBv
ciBpdHMgZXh0ZW5zaW9ucyBhcmUgbm90IGNvbnNpc3RlbnQgd2l0aCB0aGUgc3VwcGxpZWQgcHVy
cG9zZS4KKyAgICBjYXNlIFg1MDlfVl9FUlJfU1VCSkVDVF9JU1NVRVJfTUlTTUFUQ0ggOiAvLyB0
aGUgY3VycmVudCBjYW5kaWRhdGUgaXNzdWVyIGNlcnRpZmljYXRlIHdhcyByZWplY3RlZCBiZWNh
dXNlIGl0cyBzdWJqZWN0IG5hbWUgZGlkIG5vdCBtYXRjaCB0aGUgaXNzdWVyIG5hbWUgb2YgdGhl
IGN1cnJlbnQgY2VydGlmaWNhdGUuIFRoaXMgaXMgb25seSBzZXQgaWYgaXNzdWVyIGNoZWNrIGRl
YnVnZ2luZyBpcyBlbmFibGVkIGl0IGlzIHVzZWQgZm9yIHN0YXR1cyBub3RpZmljYXRpb24gYW5k
IGlzIG5vdCBpbiBpdHNlbGYgYW4gZXJyb3IuCisgICAgY2FzZSBYNTA5X1ZfRVJSX0FLSURfU0tJ
RF9NSVNNQVRDSCA6IC8vIHRoZSBjdXJyZW50IGNhbmRpZGF0ZSBpc3N1ZXIgY2VydGlmaWNhdGUg
d2FzIHJlamVjdGVkIGJlY2F1c2UgaXRzIHN1YmplY3Qga2V5IGlkZW50aWZpZXIgd2FzIHByZXNl
bnQgYW5kIGRpZCBub3QgbWF0Y2ggdGhlIGF1dGhvcml0eSBrZXkgaWRlbnRpZmllciBjdXJyZW50
IGNlcnRpZmljYXRlLiBUaGlzIGlzIG9ubHkgc2V0IGlmIGlzc3VlciBjaGVjayBkZWJ1Z2dpbmcg
aXMgZW5hYmxlZCBpdCBpcyB1c2VkIGZvciBzdGF0dXMgbm90aWZpY2F0aW9uIGFuZCBpcyBub3Qg
aW4gaXRzZWxmIGFuIGVycm9yLgorICAgIGNhc2UgWDUwOV9WX0VSUl9BS0lEX0lTU1VFUl9TRVJJ
QUxfTUlTTUFUQ0ggOiAvLyB0aGUgY3VycmVudCBjYW5kaWRhdGUgaXNzdWVyIGNlcnRpZmljYXRl
IHdhcyByZWplY3RlZCBiZWNhdXNlIGl0cyBpc3N1ZXIgbmFtZSBhbmQgc2VyaWFsIG51bWJlciB3
YXMgcHJlc2VudCBhbmQgZGlkIG5vdCBtYXRjaCB0aGUgYXV0aG9yaXR5IGtleSBpZGVudGlmaWVy
IG9mIHRoZSBjdXJyZW50IGNlcnRpZmljYXRlLiBUaGlzIGlzIG9ubHkgc2V0IGlmIGlzc3VlciBj
aGVjayBkZWJ1Z2dpbmcgaXMgZW5hYmxlZCBpdCBpcyB1c2VkIGZvciBzdGF0dXMgbm90aWZpY2F0
aW9uIGFuZCBpcyBub3QgaW4gaXRzZWxmIGFuIGVycm9yLgorICAgIGNhc2UgWDUwOV9WX0VSUl9L
RVlVU0FHRV9OT19DRVJUU0lHTiA6IC8vIHRoZSBjdXJyZW50IGNhbmRpZGF0ZSBpc3N1ZXIgY2Vy
dGlmaWNhdGUgd2FzIHJlamVjdGVkIGJlY2F1c2UgaXRzIGtleVVzYWdlIGV4dGVuc2lvbiBkb2Vz
IG5vdCBwZXJtaXQgY2VydGlmaWNhdGUgc2lnbmluZy4gVGhpcyBpcyBvbmx5IHNldCBpZiBpc3N1
ZXIgY2hlY2sgZGVidWdnaW5nIGlzIGVuYWJsZWQgaXQgaXMgdXNlZCBmb3Igc3RhdHVzIG5vdGlm
aWNhdGlvbiBhbmQgaXMgbm90IGluIGl0c2VsZiBhbiBlcnJvci4KKyAgICAgICAgcmV0dXJuIFNT
TF9DRVJUSUZJQ0FURV9CQURfSURFTlRJVFk7CisgICAgZGVmYXVsdCA6CisgICAgICAgIHJldHVy
biBTU0xfQ0VSVElGSUNBVEVfR0VORVJJQ19FUlJPUjsKKyAgICB9Cit9CisKKyNpZiAhUExBVEZP
Uk0oV0lOKQorLy8gc3VjY2VzcyBvZiBjZXJ0aWZpY2F0ZSBleHRyYWN0aW9uCitib29sIHBlbURh
dGEoWDUwOV9TVE9SRV9DVFggKmN0eCwgU3RyaW5nJiBjZXJ0aWZpY2F0ZSkKK3sKKyAgICBTdHJp
bmcgcGVtRGF0YTsKKyAgICBYNTA5KiBlcnJDZXJ0ID0gWDUwOV9TVE9SRV9DVFhfZ2V0X2N1cnJl
bnRfY2VydChjdHgpOworCisgICAgLy8gZ2V0IHRoZSBjZXJ0IGluIFBFTSBmb3JtYXQKKyAgICBC
SU8qIGJpbyA9IEJJT19uZXcoQklPX3NfbWVtKCkpOworCisgICAgaW50IHJlcyA9IFBFTV93cml0
ZV9iaW9fWDUwOShiaW8sIGVyckNlcnQpOworICAgIGlmICghcmVzKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICB1bnNpZ25lZCBjaGFyICpkYXRhOworICAgIGxvbmcgbGVuID0gQklPX2dl
dF9tZW1fZGF0YShiaW8sICZkYXRhKTsKKyAgICBkYXRhW2xlbl0gPSAnXDAnOworICAgIGNlcnRp
ZmljYXRlID0gZGF0YTsKKyAgICBCSU9fZnJlZShiaW8pOworICAgIHJldHVybiB0cnVlOworfQor
I2VuZGlmCisKK3N0YXRpYyBpbnQgY2VydFZlcmlmeUNhbGxiYWNrKGludCBvaywgWDUwOV9TVE9S
RV9DVFggKmN0eCkKK3sKKyAgICAvLyB3aGV0aGVyIHRoZSB2ZXJpZmljYXRpb24gb2YgdGhlIGNl
cnRpZmljYXRlIGluIHF1ZXN0aW9uIHdhcyBwYXNzZWQgKHByZXZlcmlmeV9vaz0xKSBvciBub3Qg
KHByZXZlcmlmeV9vaz0wKQorCisgICAgdW5zaWduZWQgZXJyID0gWDUwOV9TVE9SRV9DVFhfZ2V0
X2Vycm9yKGN0eCk7CisgICAgaWYgKCFlcnIpCisgICAgICAgIHJldHVybiAxOworCisgICAgU1NM
KiBzc2wgPSAoU1NMKilYNTA5X1NUT1JFX0NUWF9nZXRfZXhfZGF0YShjdHgsIFNTTF9nZXRfZXhf
ZGF0YV9YNTA5X1NUT1JFX0NUWF9pZHgoKSk7CisgICAgU1NMX0NUWCogc3NsY3R4ID0gU1NMX2dl
dF9TU0xfQ1RYKHNzbCk7CisgICAgUmVzb3VyY2VIYW5kbGUqIGpvYiAgPSAoUmVzb3VyY2VIYW5k
bGUqKVNTTF9DVFhfZ2V0X2FwcF9kYXRhKHNzbGN0eCk7CisgICAgU3RyaW5nIGhvc3QgPSBqb2It
PmZpcnN0UmVxdWVzdCgpLnVybCgpLmhvc3QoKTsKKyAgICBSZXNvdXJjZUhhbmRsZUludGVybmFs
KiBkID0gam9iLT5nZXRJbnRlcm5hbCgpOworCisgICAgZC0+bV9zc2xFcnJvcnMgPSBzc2xDZXJ0
aWZpY2F0ZUZsYWcoZXJyKTsKKworI2lmIFBMQVRGT1JNKFdJTikKKyAgICBIYXNoTWFwPFN0cmlu
ZywgU3RyaW5nPjo6aXRlcmF0b3IgaXQgPSBhbGxvd2VkSG9zdHMuZmluZChob3N0KTsKKyAgICBv
ayA9IChpdCAhPSBhbGxvd2VkSG9zdHMuZW5kKCkpOworI2Vsc2UKKyAgICBTdHJpbmcgY2VydGlm
aWNhdGU7CisgICAgaWYgKCFwZW1EYXRhKGN0eCwgY2VydGlmaWNhdGUpKQorICAgICAgICByZXR1
cm4gMDsKKyAgICBvayA9IHNzbElnbm9yZUhUVFBTQ2VydGlmaWNhdGUoaG9zdC5sb3dlcigpLCBj
ZXJ0aWZpY2F0ZSk7CisjZW5kaWYKKworICAgIGlmIChvaykKKyAgICAgICAgLy8gaWYgdGhlIGhv
c3QgYW5kIHRoZSBjZXJ0aWZpY2F0ZSBhcmUgc3RvcmVkIGZvciB0aGUgY3VycmVudCBoYW5kbGUg
dGhhdCBtZWFucyBpcyBlbmFibGVkLAorICAgICAgICAvLyBzbyBkb24ndCBuZWVkIHRvIGN1cmwg
dmVyaWZpZXMgdGhlIGF1dGhlbnRpY2l0eSBvZiB0aGUgcGVlcidzIGNlcnRpZmljYXRlCisgICAg
ICAgIGN1cmxfZWFzeV9zZXRvcHQoZC0+bV9oYW5kbGUsIENVUkxPUFRfU1NMX1ZFUklGWVBFRVIs
IGZhbHNlKTsKKyAgICByZXR1cm4gb2s7Cit9CisKK3N0YXRpYyBDVVJMY29kZSBzc2xjdHhmdW4o
Q1VSTCAqIGN1cmwsIHZvaWQgKiBzc2xjdHgsIHZvaWQgKiBwYXJtKQoreworICAgIFNTTF9DVFhf
c2V0X2FwcF9kYXRhKChTU0xfQ1RYKilzc2xjdHgsIHBhcm0pOworICAgIFNTTF9DVFhfc2V0X3Zl
cmlmeSgoU1NMX0NUWCopc3NsY3R4LCBTU0xfVkVSSUZZX1BFRVIsIGNlcnRWZXJpZnlDYWxsYmFj
ayk7CisgICAgcmV0dXJuIENVUkxFX09LOworfQorCit2b2lkIHNldFNTTFZlcmlmeU9wdGlvbnMo
UmVzb3VyY2VIYW5kbGUqIGhhbmRsZSkKK3sKKyAgICBSZXNvdXJjZUhhbmRsZUludGVybmFsKiBk
ID0gaGFuZGxlLT5nZXRJbnRlcm5hbCgpOworICAgIGN1cmxfZWFzeV9zZXRvcHQoZC0+bV9oYW5k
bGUsIENVUkxPUFRfU1NMX0NUWF9EQVRBLCBoYW5kbGUpOworICAgIGN1cmxfZWFzeV9zZXRvcHQo
ZC0+bV9oYW5kbGUsIENVUkxPUFRfU1NMX0NUWF9GVU5DVElPTiwgc3NsY3R4ZnVuKTsKK30KKwor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NTTEhh
bmRsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NTTEhhbmRsZS5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZlODdjNDMKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU1NMSGFuZGxlLmgK
QEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBVbml2ZXJzaXR5IG9m
IFN6ZWdlZAorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVU5J
VkVSU0lUWSBPRiBTWkVHRUQgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgU1NMSGFuZGxlX2gKKyNkZWZpbmUgU1NMSGFuZGxlX2gK
KworI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCisKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit0eXBlZGVmIGVudW0geworICAgIFNT
TF9DRVJUSUZJQ0FURV9VTktOT1dOX0NBICAgID0gKDEgPDwgMCksIC8vIFRoZSBzaWduaW5nIGNl
cnRpZmljYXRlIGF1dGhvcml0eSBpcyBub3Qga25vd24uCisgICAgU1NMX0NFUlRJRklDQVRFX0JB
RF9JREVOVElUWSAgPSAoMSA8PCAxKSwgLy8gVGhlIGNlcnRpZmljYXRlIGRvZXMgbm90IG1hdGNo
IHRoZSBleHBlY3RlZCBpZGVudGl0eSBvZiB0aGUgc2l0ZSB0aGF0IGl0IHdhcyByZXRyaWV2ZWQg
ZnJvbS4KKyAgICBTU0xfQ0VSVElGSUNBVEVfTk9UX0FDVElWQVRFRCA9ICgxIDw8IDIpLCAvLyBU
aGUgY2VydGlmaWNhdGUncyBhY3RpdmF0aW9uIHRpbWUgaXMgc3RpbGwgaW4gdGhlIGZ1dHVyZQor
ICAgIFNTTF9DRVJUSUZJQ0FURV9FWFBJUkVEICAgICAgID0gKDEgPDwgMyksIC8vIFRoZSBjZXJ0
aWZpY2F0ZSBoYXMgZXhwaXJlZAorICAgIFNTTF9DRVJUSUZJQ0FURV9SRVZPS0VEICAgICAgID0g
KDEgPDwgNCksIC8vIFRoZSBjZXJ0aWZpY2F0ZSBoYXMgYmVlbiByZXZva2VkCisgICAgU1NMX0NF
UlRJRklDQVRFX0lOU0VDVVJFICAgICAgPSAoMSA8PCA1KSwgLy8gVGhlIGNlcnRpZmljYXRlJ3Mg
YWxnb3JpdGhtIGlzIGNvbnNpZGVyZWQgaW5zZWN1cmUuCisgICAgU1NMX0NFUlRJRklDQVRFX0dF
TkVSSUNfRVJST1IgPSAoMSA8PCA2KSAvLyBTb21lIG90aGVyIGVycm9yIG9jY3VycmVkIHZhbGlk
YXRpbmcgdGhlIGNlcnRpZmljYXRlCit9IFNTTENlcnRpZmljYXRlRmxhZ3M7CisKKwordm9pZCBh
bGxvd3NBbnlIVFRQU0NlcnRpZmljYXRlSG9zdHMoY29uc3QgU3RyaW5nJik7Citib29sIHNzbEln
bm9yZUhUVFBTQ2VydGlmaWNhdGUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJik7Cit2b2lk
IHNldFNTTFZlcmlmeU9wdGlvbnMoUmVzb3VyY2VIYW5kbGUqKTsKKworfQorCisjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214710</attachid>
            <date>2013-10-21 00:59:07 -0700</date>
            <delta_ts>2013-11-13 03:55:02 -0800</delta_ts>
            <desc>working progress patch</desc>
            <filename>general.patch</filename>
            <type>text/plain</type>
            <size>26190</size>
            <attacher>sipka</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA5ODk2ZGZmLi42ZmZmNTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzcg
QEAKKzIwMTMtMTAtMjEgIFNpcGthIFLDs2JlcnQgIDxzaXBrYUBpbmYudS1zemVnZWQuaHU+CisK
KyAgICAgICAgW2N1cmxdIEltcHJvdmUgZGV0ZWN0aW5nIGFuZCBoYW5kbGluZyBvZiBTU0wgcmVs
YXRlZCBlcnJvcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTExOTQzNiAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBTZXQgdGhlIGV4YWN0IFNTTCB2ZXJpZmljYXRpb24gZXJyb3Igb24gQ1VSTAorICAgICAg
ICBhbmQgc3RvcmUgdGhlIGVuYWJsZWQgZG9tYWluIHdpdGggY2VydGlmaWNhdGUuIAorCisgICAg
ICAgICogV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvajoKKyAgICAgICAgKiBXZWJDb3Jl
LnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZUhhbmRsZS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VIYW5kbGVJbnRlcm5hbC5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVJbnRl
cm5hbDo6UmVzb3VyY2VIYW5kbGVJbnRlcm5hbCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9jdXJsL1Jlc291cmNlRXJyb3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlRXJyb3I6
OlJlc291cmNlRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VFcnJvcjo6c3NsRXJy
b3JzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlRXJyb3I6OnNldFNTTEVycm9ycyk6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6c2V0SG9zdEFsbG93c0FueUhUVFBTQ2Vy
dGlmaWNhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRs
ZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVNYW5hZ2VyOjpk
b3dubG9hZFRpbWVyQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVN
YW5hZ2VyOjppbml0aWFsaXplSGFuZGxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvU1NMSGFuZGxlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjphbGxvd3NBbnlIVFRQ
U0NlcnRpZmljYXRlSG9zdHMpOgorICAgICAgICAoV2ViQ29yZTo6c3NsSWdub3JlSFRUUFNDZXJ0
aWZpY2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpzc2xDZXJ0aWZpY2F0ZUZsYWcpOgorICAgICAg
ICAoV2ViQ29yZTo6cGVtRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpjZXJ0VmVyaWZ5Q2FsbGJh
Y2spOgorICAgICAgICAoV2ViQ29yZTo6c3NsY3R4ZnVuKToKKyAgICAgICAgKFdlYkNvcmU6OnNl
dFNTTFZlcmlmeU9wdGlvbnMpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9TU0xI
YW5kbGUuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L1Jlc291cmNlRXJyb3IuaC4KKwogMjAxMy0xMC0yMSAgU2FudG9zaCBNYWh0byAgPHNhbnRvc2gu
bWFAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgQVNTRVJUSU9OIEZBSUxFRDogIXN0eWxlLT5wcm9w
ZXJ0eUlzSW1wb3J0YW50KHByb3BlcnR5SUQpIGluIFdlYkNvcmU6OnNldFRleHREZWNvcmF0aW9u
UHJvcGVydHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJD
b3JlLnZjeHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hw
cm9qCmluZGV4IDJmNWNmZWIuLjVkYzI5ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagpAQCAtODE2Nyw2ICs4MTY3LDE2IEBACiAgICAgICA8
RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdQcm9kdWN0aW9ufFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgICA8
RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdQcm9kdWN0aW9ufHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgIDwvQ2xD
b21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cbmV0d29ya1xjdXJs
XFNTTEhhbmRsZS5jcHAiPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj50cnVlPC9FeGNsdWRl
ZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1
aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nRGVidWdTdWZmaXh8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21C
dWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J0RlYnVnU3VmZml4fHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1
aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxk
PgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAg
ICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAg
ICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAg
PC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxzcWxcU1FM
aXRlQXV0aG9yaXplci5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9y
bVxzcWxcU1FMaXRlRGF0YWJhc2UuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
cGxhdGZvcm1cc3FsXFNRTGl0ZUZpbGVTeXN0ZW0uY3BwIiAvPgpAQCAtMTkxNzIsNiArMTkxODIs
MTYgQEAKICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21C
dWlsZD4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVp
bGQ+CiAgICAgPC9DdXN0b21CdWlsZFN0ZXA+CisgICAgPEN1c3RvbUJ1aWxkU3RlcCBJbmNsdWRl
PSIuLlxwbGF0Zm9ybVxuZXR3b3JrXGN1cmxcU1NMSGFuZGxlLmgiPgorICAgICAgPEV4Y2x1ZGVk
RnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVi
dWd8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21C
dWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2
NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdTdWZmaXh8V2lu
MzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnU3VmZml4fHg2
NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMici
PnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj50cnVl
PC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzInIj50cnVl
PC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+dHJ1ZTwv
RXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgPC9DdXN0b21CdWlsZFN0ZXA+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxzcWxcU1FMaXRlRGF0YWJhc2UuaCIgLz4KICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXHNxbFxTUUxpdGVGaWxlU3lzdGVtLmgiIC8+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxzcWxcU1FMaXRlU3RhdGVtZW50Lmgi
IC8+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52
Y3hwcm9qLmZpbHRlcnMgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52
Y3hwcm9qLmZpbHRlcnMKaW5kZXggYWM3NzIyYi4uMWU4NDQwNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwpAQCAt
MTkxNCw2ICsxOTE0LDkgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXG5l
dHdvcmtcY3VybFxTb2NrZXRTdHJlYW1IYW5kbGVDdXJsLmNwcCI+CiAgICAgICA8RmlsdGVyPnBs
YXRmb3JtXG5ldHdvcmtcY3VybDwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cbmV0d29ya1xjdXJsXFNTTEhhbmRsZS5jcHAiPgor
ICAgICAgPEZpbHRlcj5wbGF0Zm9ybVxuZXR3b3JrXGN1cmw8L0ZpbHRlcj4KKyAgICA8L0NsQ29t
cGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXHNxbFxTUUxpdGVBdXRo
b3JpemVyLmNwcCI+CiAgICAgICA8RmlsdGVyPnBsYXRmb3JtXHNxbDwvRmlsdGVyPgogICAgIDwv
Q2xDb21waWxlPgpAQCAtMTQ2OTcsNiArMTQ3MDAsOSBAQAogICAgIDxDdXN0b21CdWlsZFN0ZXAg
SW5jbHVkZT0iLi5ccGxhdGZvcm1cbmV0d29ya1xjdXJsXFJlc291cmNlUmVzcG9uc2UuaCI+CiAg
ICAgICA8RmlsdGVyPnBsYXRmb3JtXG5ldHdvcmtcY3VybDwvRmlsdGVyPgogICAgIDwvQ3VzdG9t
QnVpbGRTdGVwPgorICAgIDxDdXN0b21CdWlsZFN0ZXAgSW5jbHVkZT0iLi5ccGxhdGZvcm1cbmV0
d29ya1xjdXJsXFNTTEhhbmRsZS5oIj4KKyAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cbmV0d29ya1xj
dXJsPC9GaWx0ZXI+CisgICAgPC9DdXN0b21CdWlsZFN0ZXA+CiAgICAgPEN1c3RvbUJ1aWxkU3Rl
cCBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxpbWFnZS1kZWNvZGVyc1xnaWZcR0lGSW1hZ2VEZWNvZGVy
LmgiPgogICAgICAgPEZpbHRlcj5wbGF0Zm9ybVxpbWFnZS1kZWNvZGVyc1xnaWY8L0ZpbHRlcj4K
ICAgICA8L0N1c3RvbUJ1aWxkU3RlcD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VIYW5kbGUuaAppbmRleCAwMjk0NWUxLi4xZDliNmU2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCkBAIC0xMzgs
NyArMTM4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIHNldENsaWVudENlcnRpZmljYXRl
KGNvbnN0IFN0cmluZyYgaG9zdCwgQ0ZEYXRhUmVmKTsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0o
V0lOKSAmJiBVU0UoQ1VSTCkKKyNpZiAoUExBVEZPUk0oV0lOKSB8fCBQTEFURk9STShOSVgpKSAm
JiBVU0UoQ1VSTCkKICAgICBzdGF0aWMgdm9pZCBzZXRIb3N0QWxsb3dzQW55SFRUUFNDZXJ0aWZp
Y2F0ZShjb25zdCBTdHJpbmcmKTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKFdJTikgJiYgVVNFKENV
UkwpICYmIFVTRShDRikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmgKaW5kZXggOWI4YTg5YS4uNjBmYjY3NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUlu
dGVybmFsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhh
bmRsZUludGVybmFsLmgKQEAgLTEwMSw2ICsxMDEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgICAgICAsIG1fY2FuY2VsbGVkKGZhbHNlKQogICAgICAgICAgICAgLCBtX2F1dGhGYWls
dXJlQ291bnQoMCkKICAgICAgICAgICAgICwgbV9mb3JtRGF0YVN0cmVhbShsb2FkZXIpCisgICAg
ICAgICAgICAsIG1fc3NsRXJyb3JzKDApCiAjZW5kaWYKICNpZiBVU0UoU09VUCkKICAgICAgICAg
ICAgICwgbV9jYW5jZWxsZWQoZmFsc2UpCkBAIC0xNzgsNiArMTc5LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICB1bnNpZ25lZCBzaG9ydCBtX2F1dGhGYWlsdXJlQ291bnQ7CiAKICAg
ICAgICAgRm9ybURhdGFTdHJlYW0gbV9mb3JtRGF0YVN0cmVhbTsKKyAgICAgICAgdW5zaWduZWQg
bV9zc2xFcnJvcnM7CiAgICAgICAgIFZlY3RvcjxjaGFyPiBtX3Bvc3RCeXRlczsKIAogICAgICAg
ICBPd25QdHI8TXVsdGlwYXJ0SGFuZGxlPiBtX211bHRpcGFydEhhbmRsZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUVycm9yLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VFcnJvci5oCmluZGV4
IGNhOGQzNmIuLjc1NTVmNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9SZXNvdXJjZUVycm9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL1Jlc291cmNlRXJyb3IuaApAQCAtMzMsMTQgKzMzLDIwIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIGNsYXNzIFJlc291cmNlRXJyb3IgOiBwdWJsaWMgUmVzb3VyY2VFcnJvckJh
c2UKIHsKIHB1YmxpYzoKLSAgICBSZXNvdXJjZUVycm9yKCkKKyAgICBSZXNvdXJjZUVycm9yKCkg
OiBtX3NzbEVycm9ycygwKQogICAgIHsKICAgICB9CiAKICAgICBSZXNvdXJjZUVycm9yKGNvbnN0
IFN0cmluZyYgZG9tYWluLCBpbnQgZXJyb3JDb2RlLCBjb25zdCBTdHJpbmcmIGZhaWxpbmdVUkws
IGNvbnN0IFN0cmluZyYgbG9jYWxpemVkRGVzY3JpcHRpb24pCi0gICAgICAgIDogUmVzb3VyY2VF
cnJvckJhc2UoZG9tYWluLCBlcnJvckNvZGUsIGZhaWxpbmdVUkwsIGxvY2FsaXplZERlc2NyaXB0
aW9uKQorICAgICAgICA6IFJlc291cmNlRXJyb3JCYXNlKGRvbWFpbiwgZXJyb3JDb2RlLCBmYWls
aW5nVVJMLCBsb2NhbGl6ZWREZXNjcmlwdGlvbiksIG1fc3NsRXJyb3JzKDApCiAgICAgewogICAg
IH0KKworICAgIHVuc2lnbmVkIHNzbEVycm9ycygpIGNvbnN0IHsgcmV0dXJuIG1fc3NsRXJyb3Jz
OyB9CisgICAgdm9pZCBzZXRTU0xFcnJvcnModW5zaWduZWQgc3NsVmVyaWZ5UmVzdWx0KSB7IG1f
c3NsRXJyb3JzID0gc3NsVmVyaWZ5UmVzdWx0OyB9CisKK3ByaXZhdGU6CisgICAgdW5zaWduZWQg
bV9zc2xFcnJvcnM7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCmluZGV4IGM5MThmMTUu
LjZkM2NiYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5j
bHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZUludGVybmFs
LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVNYW5hZ2VyLmgiCisjaW5jbHVkZSAiU1NMSGFu
ZGxlLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAKICNpZiBQTEFURk9STShXSU4pICYm
IFVTRShDRikKQEAgLTExNiwxOSArMTE3LDEwIEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmNhbmNl
bCgpCiAgICAgUmVzb3VyY2VIYW5kbGVNYW5hZ2VyOjpzaGFyZWRJbnN0YW5jZSgpLT5jYW5jZWwo
dGhpcyk7CiB9CiAKLSNpZiBQTEFURk9STShXSU4pICYmIFVTRShDRikKLXN0YXRpYyBIYXNoU2V0
PFN0cmluZz4mIGFsbG93c0FueUhUVFBTQ2VydGlmaWNhdGVIb3N0cygpCi17Ci0gICAgc3RhdGlj
IEhhc2hTZXQ8U3RyaW5nPiBob3N0czsKLQotICAgIHJldHVybiBob3N0czsKLX0KLQogdm9pZCBS
ZXNvdXJjZUhhbmRsZTo6c2V0SG9zdEFsbG93c0FueUhUVFBTQ2VydGlmaWNhdGUoY29uc3QgU3Ry
aW5nJiBob3N0KQogewotICAgIGFsbG93c0FueUhUVFBTQ2VydGlmaWNhdGVIb3N0cygpLmFkZCho
b3N0Lmxvd2VyKCkpOworICAgIGFsbG93c0FueUhUVFBTQ2VydGlmaWNhdGVIb3N0cyhob3N0Lmxv
d2VyKCkpOwogfQotI2VuZGlmCiAKICNpZiBQTEFURk9STShXSU4pICYmIFVTRShDRikKIC8vIEZJ
WE1FOiAgVGhlIENGRGF0YVJlZiB3aWxsIG5lZWQgdG8gYmUgc29tZXRoaW5nIGVsc2Ugd2hlbgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNl
SGFuZGxlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
UmVzb3VyY2VIYW5kbGVNYW5hZ2VyLmNwcAppbmRleCBjOGE5MjBiLi4zZjZjMDAxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVN
YW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVz
b3VyY2VIYW5kbGVNYW5hZ2VyLmNwcApAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUgIlJlc291
cmNlRXJyb3IuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIlJlc291
cmNlSGFuZGxlSW50ZXJuYWwuaCIKKyNpbmNsdWRlICJTU0xIYW5kbGUuaCIKIAogI2lmIE9TKFdJ
TkRPV1MpCiAjaW5jbHVkZSAiV2ViQ29yZUJ1bmRsZVdpbi5oIgpAQCAtNjE0LDggKzYxNSwxMSBA
QCB2b2lkIFJlc291cmNlSGFuZGxlTWFuYWdlcjo6ZG93bmxvYWRUaW1lckNhbGxiYWNrKFRpbWVy
PFJlc291cmNlSGFuZGxlTWFuYWdlcj4qCiAjaWZuZGVmIE5ERUJVRwogICAgICAgICAgICAgZnBy
aW50ZihzdGRlcnIsICJDdXJsIEVSUk9SIGZvciB1cmw9JyVzJywgZXJyb3I6ICclcydcbiIsIHVy
bCwgY3VybF9lYXN5X3N0cmVycm9yKG1zZy0+ZGF0YS5yZXN1bHQpKTsKICNlbmRpZgotICAgICAg
ICAgICAgaWYgKGQtPmNsaWVudCgpKQotICAgICAgICAgICAgICAgIGQtPmNsaWVudCgpLT5kaWRG
YWlsKGpvYiwgUmVzb3VyY2VFcnJvcihTdHJpbmcoKSwgbXNnLT5kYXRhLnJlc3VsdCwgU3RyaW5n
KHVybCksIFN0cmluZyhjdXJsX2Vhc3lfc3RyZXJyb3IobXNnLT5kYXRhLnJlc3VsdCkpKSk7Cisg
ICAgICAgICAgICBpZiAoZC0+Y2xpZW50KCkpIHsKKyAgICAgICAgICAgICAgICBSZXNvdXJjZUVy
cm9yIHJlc291cmNlRXJyb3IgPSBSZXNvdXJjZUVycm9yKFN0cmluZygpLCBtc2ctPmRhdGEucmVz
dWx0LCBTdHJpbmcodXJsKSwgU3RyaW5nKGN1cmxfZWFzeV9zdHJlcnJvcihtc2ctPmRhdGEucmVz
dWx0KSkpOworICAgICAgICAgICAgICAgIHJlc291cmNlRXJyb3Iuc2V0U1NMRXJyb3JzKGQtPm1f
c3NsRXJyb3JzKTsKKyAgICAgICAgICAgICAgICBkLT5jbGllbnQoKS0+ZGlkRmFpbChqb2IsIHJl
c291cmNlRXJyb3IpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAKICAgICAgICAgcmVtb3Zl
RnJvbUN1cmwoam9iKTsKQEAgLTkzMiw2ICs5MzYsOCBAQCB2b2lkIFJlc291cmNlSGFuZGxlTWFu
YWdlcjo6aW5pdGlhbGl6ZUhhbmRsZShSZXNvdXJjZUhhbmRsZSogam9iKQogICAgIGlmIChnZXRl
bnYoIkRFQlVHX0NVUkwiKSkKICAgICAgICAgY3VybF9lYXN5X3NldG9wdChkLT5tX2hhbmRsZSwg
Q1VSTE9QVF9WRVJCT1NFLCAxKTsKICNlbmRpZgorICAgIGN1cmxfZWFzeV9zZXRvcHQoZC0+bV9o
YW5kbGUsIENVUkxPUFRfU1NMX1ZFUklGWVBFRVIsIDFMKTsKKyAgICBjdXJsX2Vhc3lfc2V0b3B0
KGQtPm1faGFuZGxlLCBDVVJMT1BUX1NTTF9WRVJJRllIT1NULCAyTCk7CiAgICAgY3VybF9lYXN5
X3NldG9wdChkLT5tX2hhbmRsZSwgQ1VSTE9QVF9QUklWQVRFLCBqb2IpOwogICAgIGN1cmxfZWFz
eV9zZXRvcHQoZC0+bV9oYW5kbGUsIENVUkxPUFRfRVJST1JCVUZGRVIsIG1fY3VybEVycm9yQnVm
ZmVyKTsKICAgICBjdXJsX2Vhc3lfc2V0b3B0KGQtPm1faGFuZGxlLCBDVVJMT1BUX1dSSVRFRlVO
Q1RJT04sIHdyaXRlQ2FsbGJhY2spOwpAQCAtOTUwLDYgKzk1Niw4IEBAIHZvaWQgUmVzb3VyY2VI
YW5kbGVNYW5hZ2VyOjppbml0aWFsaXplSGFuZGxlKFJlc291cmNlSGFuZGxlKiBqb2IpCiAgICAg
Ly8gYW5kL29yIHJlcG9ydGluZyBTU0wgZXJyb3JzIHRvIHRoZSB1c2VyLgogICAgIGlmIChpZ25v
cmVTU0xFcnJvcnMpCiAgICAgICAgIGN1cmxfZWFzeV9zZXRvcHQoZC0+bV9oYW5kbGUsIENVUkxP
UFRfU1NMX1ZFUklGWVBFRVIsIGZhbHNlKTsKKyAgICBlbHNlCisgICAgICAgIHNldFNTTFZlcmlm
eU9wdGlvbnMoam9iKTsKIAogICAgIGlmICghbV9jZXJ0aWZpY2F0ZVBhdGguaXNOdWxsKCkpCiAg
ICAgICAgY3VybF9lYXN5X3NldG9wdChkLT5tX2hhbmRsZSwgQ1VSTE9QVF9DQUlORk8sIG1fY2Vy
dGlmaWNhdGVQYXRoLmRhdGEoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvU1NMSGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9TU0xIYW5kbGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLmVjNThhYjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvU1NMSGFuZGxlLmNwcApAQCAtMCwwICsxLDE5MCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMyBVbml2ZXJzaXR5IG9mIFN6ZWdlZAorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVU5JVkVSU0lUWSBPRiBTWkVHRUQgYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKworI2luY2x1ZGUgIlNTTEhhbmRsZS5oIgorCisjaW5jbHVkZSAiUmVzb3VyY2VIYW5k
bGVJbnRlcm5hbC5oIgorCisjaW5jbHVkZSA8b3BlbnNzbC9wZW0uaD4KKyNpbmNsdWRlIDxvcGVu
c3NsL3NzbC5oPgorI2luY2x1ZGUgPG9wZW5zc2wveDUwOV92ZnkuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitzdGF0aWMgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gYWxsb3dlZEhvc3RzOwor
Cit2b2lkIGFsbG93c0FueUhUVFBTQ2VydGlmaWNhdGVIb3N0cyhjb25zdCBTdHJpbmcmIGhvc3Qp
Cit7CisgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz46Oml0ZXJhdG9yIGl0ID0gYWxsb3dlZEhv
c3RzLmZpbmQoaG9zdCk7CisgICAgaWYgKGl0ICE9IGFsbG93ZWRIb3N0cy5lbmQoKSkKKyAgICAg
ICAgaXQtPnZhbHVlID0gU3RyaW5nKCk7CisgICAgZWxzZQorICAgICAgICBhbGxvd2VkSG9zdHMu
YWRkKGhvc3QsIFN0cmluZygpKTsKK30KKworYm9vbCBzc2xJZ25vcmVIVFRQU0NlcnRpZmljYXRl
KGNvbnN0IFN0cmluZyYgaG9zdCwgY29uc3QgU3RyaW5nJiBjZXJ0KQoreworICAgIEhhc2hNYXA8
U3RyaW5nLCBTdHJpbmc+OjppdGVyYXRvciBpdCA9IGFsbG93ZWRIb3N0cy5maW5kKGhvc3QpOwor
ICAgIGlmIChpdCAhPSBhbGxvd2VkSG9zdHMuZW5kKCkpIHsKKyAgICAgICAgaWYgKChpdC0+dmFs
dWUpLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgaXQtPnZhbHVlID0gY2VydDsKKyAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIGlmIChpdC0+dmFsdWUgPT0gY2Vy
dCkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKK3Vuc2lnbmVkIHNzbENlcnRpZmljYXRlRmxhZyhjb25zdCB1bnNpZ25lZCYgc3NsRXJyb3Ip
Cit7CisgICAgc3dpdGNoIChzc2xFcnJvcikgeworICAgIGNhc2UgWDUwOV9WX0VSUl9VTkFCTEVf
VE9fR0VUX0lTU1VFUl9DRVJUIDogLy8gdGhlIGlzc3VlciBjZXJ0aWZpY2F0ZSBjb3VsZCBub3Qg
YmUgZm91bmQ6IHRoaXMgb2NjdXJzIGlmIHRoZSBpc3N1ZXIgY2VydGlmaWNhdGUgb2YgYW4gdW50
cnVzdGVkIGNlcnRpZmljYXRlIGNhbm5vdCBiZSBmb3VuZC4KKyAgICBjYXNlIFg1MDlfVl9FUlJf
VU5BQkxFX1RPX0dFVF9DUkwgOiAvLyB0aGUgQ1JMIG9mIGEgY2VydGlmaWNhdGUgY291bGQgbm90
IGJlIGZvdW5kLgorICAgIGNhc2UgWDUwOV9WX0VSUl9VTkFCTEVfVE9fR0VUX0lTU1VFUl9DRVJU
X0xPQ0FMTFkgOiAvLyB0aGUgaXNzdWVyIGNlcnRpZmljYXRlIG9mIGEgbG9jYWxseSBsb29rZWQg
dXAgY2VydGlmaWNhdGUgY291bGQgbm90IGJlIGZvdW5kLiBUaGlzIG5vcm1hbGx5IG1lYW5zIHRo
ZSBsaXN0IG9mIHRydXN0ZWQgY2VydGlmaWNhdGVzIGlzIG5vdCBjb21wbGV0ZS4KKyAgICAgICAg
cmV0dXJuIFNTTF9DRVJUSUZJQ0FURV9VTktOT1dOX0NBOworICAgIGNhc2UgWDUwOV9WX0VSUl9V
TkFCTEVfVE9fREVDUllQVF9DRVJUX1NJR05BVFVSRSA6IC8vIHRoZSBjZXJ0aWZpY2F0ZSBzaWdu
YXR1cmUgY291bGQgbm90IGJlIGRlY3J5cHRlZC4gVGhpcyBtZWFucyB0aGF0IHRoZSBhY3R1YWwg
c2lnbmF0dXJlIHZhbHVlIGNvdWxkIG5vdCBiZSBkZXRlcm1pbmVkIHJhdGhlciB0aGFuIGl0IG5v
dCBtYXRjaGluZyB0aGUgZXhwZWN0ZWQgdmFsdWUsIHRoaXMgaXMgb25seSBtZWFuaW5nZnVsIGZv
ciBSU0Ega2V5cy4KKyAgICBjYXNlIFg1MDlfVl9FUlJfVU5BQkxFX1RPX0RFQ1JZUFRfQ1JMX1NJ
R05BVFVSRSA6IC8vIHRoZSBDUkwgc2lnbmF0dXJlIGNvdWxkIG5vdCBiZSBkZWNyeXB0ZWQ6IHRo
aXMgbWVhbnMgdGhhdCB0aGUgYWN0dWFsIHNpZ25hdHVyZSB2YWx1ZSBjb3VsZCBub3QgYmUgZGV0
ZXJtaW5lZCByYXRoZXIgdGhhbiBpdCBub3QgbWF0Y2hpbmcgdGhlIGV4cGVjdGVkIHZhbHVlLiBV
bnVzZWQuCisgICAgY2FzZSBYNTA5X1ZfRVJSX1VOQUJMRV9UT19ERUNPREVfSVNTVUVSX1BVQkxJ
Q19LRVkgOiAvLyB0aGUgcHVibGljIGtleSBpbiB0aGUgY2VydGlmaWNhdGUgU3ViamVjdFB1Ymxp
Y0tleUluZm8gY291bGQgbm90IGJlIHJlYWQuCisgICAgY2FzZSBYNTA5X1ZfRVJSX0NFUlRfU0lH
TkFUVVJFX0ZBSUxVUkUgOiAvLyB0aGUgc2lnbmF0dXJlIG9mIHRoZSBjZXJ0aWZpY2F0ZSBpcyBp
bnZhbGlkLgorICAgIGNhc2UgWDUwOV9WX0VSUl9ERVBUSF9aRVJPX1NFTEZfU0lHTkVEX0NFUlQg
OiAvLyB0aGUgcGFzc2VkIGNlcnRpZmljYXRlIGlzIHNlbGYgc2lnbmVkIGFuZCB0aGUgc2FtZSBj
ZXJ0aWZpY2F0ZSBjYW5ub3QgYmUgZm91bmQgaW4gdGhlIGxpc3Qgb2YgdHJ1c3RlZCBjZXJ0aWZp
Y2F0ZXMuCisgICAgY2FzZSBYNTA5X1ZfRVJSX1NFTEZfU0lHTkVEX0NFUlRfSU5fQ0hBSU4gOiAv
LyB0aGUgY2VydGlmaWNhdGUgY2hhaW4gY291bGQgYmUgYnVpbHQgdXAgdXNpbmcgdGhlIHVudHJ1
c3RlZCBjZXJ0aWZpY2F0ZXMgYnV0IHRoZSByb290IGNvdWxkIG5vdCBiZSBmb3VuZCBsb2NhbGx5
LgorICAgIGNhc2UgWDUwOV9WX0VSUl9VTkFCTEVfVE9fVkVSSUZZX0xFQUZfU0lHTkFUVVJFIDog
Ly8gbm8gc2lnbmF0dXJlcyBjb3VsZCBiZSB2ZXJpZmllZCBiZWNhdXNlIHRoZSBjaGFpbiBjb250
YWlucyBvbmx5IG9uZSBjZXJ0aWZpY2F0ZSBhbmQgaXQgaXMgbm90IHNlbGYgc2lnbmVkLgorICAg
IGNhc2UgWDUwOV9WX0VSUl9JTlZBTElEX1BVUlBPU0UgOiAvLyB0aGUgc3VwcGxpZWQgY2VydGlm
aWNhdGUgY2Fubm90IGJlIHVzZWQgZm9yIHRoZSBzcGVjaWZpZWQgcHVycG9zZS4KKyAgICBjYXNl
IFg1MDlfVl9FUlJfQ0VSVF9VTlRSVVNURUQgOiAvLyB0aGUgcm9vdCBDQSBpcyBub3QgbWFya2Vk
IGFzIHRydXN0ZWQgZm9yIHRoZSBzcGVjaWZpZWQgcHVycG9zZS4KKyAgICBjYXNlIFg1MDlfVl9F
UlJfQ0VSVF9SRUpFQ1RFRCA6IC8vIHRoZSByb290IENBIGlzIG1hcmtlZCB0byByZWplY3QgdGhl
IHNwZWNpZmllZCBwdXJwb3NlLgorICAgIGNhc2UgWDUwOV9WX0VSUl9OT19FWFBMSUNJVF9QT0xJ
Q1kgOiAvLyB0aGUgdmVyaWZpY2F0aW9uIGZsYWdzIHdlcmUgc2V0IHRvIHJlcXVpcmUgYW5kIGV4
cGxpY2l0IHBvbGljeSBidXQgbm9uZSB3YXMgcHJlc2VudC4KKyAgICBjYXNlIFg1MDlfVl9FUlJf
RElGRkVSRU5UX0NSTF9TQ09QRSA6IC8vIHRoZSBvbmx5IENSTHMgdGhhdCBjb3VsZCBiZSBmb3Vu
ZCBkaWQgbm90IG1hdGNoIHRoZSBzY29wZSBvZiB0aGUgY2VydGlmaWNhdGUuCisgICAgICAgIHJl
dHVybiBTU0xfQ0VSVElGSUNBVEVfSU5TRUNVUkU7CisgICAgY2FzZSBYNTA5X1ZfRVJSX0NFUlRf
Tk9UX1lFVF9WQUxJRCA6IC8vIHRoZSBjZXJ0aWZpY2F0ZSBpcyBub3QgeWV0IHZhbGlkOiB0aGUg
bm90QmVmb3JlIGRhdGUgaXMgYWZ0ZXIgdGhlIGN1cnJlbnQgdGltZS4KKyAgICBjYXNlIFg1MDlf
Vl9FUlJfQ1JMX05PVF9ZRVRfVkFMSUQgOiAvLyB0aGUgQ1JMIGlzIG5vdCB5ZXQgdmFsaWQuCisg
ICAgICAgIHJldHVybiBTU0xfQ0VSVElGSUNBVEVfTk9UX0FDVElWQVRFRDsKKyAgICBjYXNlIFg1
MDlfVl9FUlJfQ0VSVF9IQVNfRVhQSVJFRCA6IC8vIHRoZSBjZXJ0aWZpY2F0ZSBoYXMgZXhwaXJl
ZDogdGhhdCBpcyB0aGUgbm90QWZ0ZXIgZGF0ZSBpcyBiZWZvcmUgdGhlIGN1cnJlbnQgdGltZS4K
KyAgICBjYXNlIFg1MDlfVl9FUlJfQ1JMX0hBU19FWFBJUkVEIDogLy8gdGhlIENSTCBoYXMgZXhw
aXJlZC4KKyAgICAgICAgcmV0dXJuIFNTTF9DRVJUSUZJQ0FURV9FWFBJUkVEOworICAgIGNhc2Ug
WDUwOV9WX0VSUl9FUlJPUl9JTl9DRVJUX05PVF9CRUZPUkVfRklFTEQgOiAvLyB0aGUgY2VydGlm
aWNhdGUgbm90QmVmb3JlIGZpZWxkIGNvbnRhaW5zIGFuIGludmFsaWQgdGltZS4KKyAgICBjYXNl
IFg1MDlfVl9FUlJfRVJST1JfSU5fQ0VSVF9OT1RfQUZURVJfRklFTEQgOiAvLyB0aGUgY2VydGlm
aWNhdGUgbm90QWZ0ZXIgZmllbGQgY29udGFpbnMgYW4gaW52YWxpZCB0aW1lLgorICAgIGNhc2Ug
WDUwOV9WX0VSUl9FUlJPUl9JTl9DUkxfTEFTVF9VUERBVEVfRklFTEQgOiAvLyB0aGUgQ1JMIGxh
c3RVcGRhdGUgZmllbGQgY29udGFpbnMgYW4gaW52YWxpZCB0aW1lLgorICAgIGNhc2UgWDUwOV9W
X0VSUl9FUlJPUl9JTl9DUkxfTkVYVF9VUERBVEVfRklFTEQgOiAvLyB0aGUgQ1JMIG5leHRVcGRh
dGUgZmllbGQgY29udGFpbnMgYW4gaW52YWxpZCB0aW1lLgorICAgIGNhc2UgWDUwOV9WX0VSUl9P
VVRfT0ZfTUVNIDogLy8gYW4gZXJyb3Igb2NjdXJyZWQgdHJ5aW5nIHRvIGFsbG9jYXRlIG1lbW9y
eS4gVGhpcyBzaG91bGQgbmV2ZXIgaGFwcGVuLgorICAgIGNhc2UgWDUwOV9WX0VSUl9DRVJUX0NI
QUlOX1RPT19MT05HIDogLy8gdGhlIGNlcnRpZmljYXRlIGNoYWluIGxlbmd0aCBpcyBncmVhdGVy
IHRoYW4gdGhlIHN1cHBsaWVkIG1heGltdW0gZGVwdGguIFVudXNlZC4KKyAgICBjYXNlIFg1MDlf
Vl9FUlJfUEFUSF9MRU5HVEhfRVhDRUVERUQgOiAvLyB0aGUgYmFzaWNDb25zdHJhaW50cyBwYXRo
bGVuZ3RoIHBhcmFtZXRlciBoYXMgYmVlbiBleGNlZWRlZC4KKyAgICBjYXNlIFg1MDlfVl9FUlJf
SU5WQUxJRF9FWFRFTlNJT04gOiAvLyBhIGNlcnRpZmljYXRlIGV4dGVuc2lvbiBoYWQgYW4gaW52
YWxpZCB2YWx1ZSAoZm9yIGV4YW1wbGUgYW4gaW5jb3JyZWN0IGVuY29kaW5nKSBvciBzb21lIHZh
bHVlIGluY29uc2lzdGVudCB3aXRoIG90aGVyIGV4dGVuc2lvbnMuCisgICAgY2FzZSBYNTA5X1Zf
RVJSX0lOVkFMSURfUE9MSUNZX0VYVEVOU0lPTiA6IC8vIGEgY2VydGlmaWNhdGUgcG9saWNpZXMg
ZXh0ZW5zaW9uIGhhZCBhbiBpbnZhbGlkIHZhbHVlIChmb3IgZXhhbXBsZSBhbiBpbmNvcnJlY3Qg
ZW5jb2RpbmcpIG9yIHNvbWUgdmFsdWUgaW5jb25zaXN0ZW50IHdpdGggb3RoZXIgZXh0ZW5zaW9u
cy4gVGhpcyBlcnJvciBvbmx5IG9jY3VycyBpZiBwb2xpY3kgcHJvY2Vzc2luZyBpcyBlbmFibGVk
LgorICAgIGNhc2UgWDUwOV9WX0VSUl9VTlNVUFBPUlRFRF9FWFRFTlNJT05fRkVBVFVSRSA6IC8v
IHNvbWUgZmVhdHVyZSBvZiBhIGNlcnRpZmljYXRlIGV4dGVuc2lvbiBpcyBub3Qgc3VwcG9ydGVk
LiBVbnVzZWQuCisgICAgY2FzZSBYNTA5X1ZfRVJSX1BFUk1JVFRFRF9WSU9MQVRJT04gOiAvLyBh
IG5hbWUgY29uc3RyYWludCB2aW9sYXRpb24gb2NjdXJlZCBpbiB0aGUgcGVybWl0dGVkIHN1YnRy
ZWVzLgorICAgIGNhc2UgWDUwOV9WX0VSUl9FWENMVURFRF9WSU9MQVRJT04gOiAvLyBhIG5hbWUg
Y29uc3RyYWludCB2aW9sYXRpb24gb2NjdXJlZCBpbiB0aGUgZXhjbHVkZWQgc3VidHJlZXMuCisg
ICAgY2FzZSBYNTA5X1ZfRVJSX1NVQlRSRUVfTUlOTUFYIDogLy8gYSBjZXJ0aWZpY2F0ZSBuYW1l
IGNvbnN0cmFpbnRzIGV4dGVuc2lvbiBpbmNsdWRlZCBhIG1pbmltdW0gb3IgbWF4aW11bSBmaWVs
ZDogdGhpcyBpcyBub3Qgc3VwcG9ydGVkLgorICAgIGNhc2UgWDUwOV9WX0VSUl9VTlNVUFBPUlRF
RF9DT05TVFJBSU5UX1RZUEUgOiAvLyBhbiB1bnN1cHBvcnRlZCBuYW1lIGNvbnN0cmFpbnQgdHlw
ZSB3YXMgZW5jb3VudGVyZWQuIE9wZW5TU0wgY3VycmVudGx5IG9ubHkgc3VwcG9ydHMgZGlyZWN0
b3J5IG5hbWUsIEROUyBuYW1lLCBlbWFpbCBhbmQgVVJJIHR5cGVzLgorICAgIGNhc2UgWDUwOV9W
X0VSUl9VTlNVUFBPUlRFRF9DT05TVFJBSU5UX1NZTlRBWCA6IC8vIHRoZSBmb3JtYXQgb2YgdGhl
IG5hbWUgY29uc3RyYWludCBpcyBub3QgcmVjb2duaXNlZDogZm9yIGV4YW1wbGUgYW4gZW1haWwg
YWRkcmVzcyBmb3JtYXQgb2YgYSBmb3JtIG5vdCBtZW50aW9uZWQgaW4gUkZDMzI4MC4gVGhpcyBj
b3VsZCBiZSBjYXVzZWQgYnkgYSBnYXJiYWdlIGV4dGVuc2lvbiBvciBzb21lIG5ldyBmZWF0dXJl
IG5vdCBjdXJyZW50bHkgc3VwcG9ydGVkLgorICAgIGNhc2UgWDUwOV9WX0VSUl9DUkxfUEFUSF9W
QUxJREFUSU9OX0VSUk9SIDogLy8gYW4gZXJyb3Igb2NjdXJlZCB3aGVuIGF0dGVtcHRpbmcgdG8g
dmVyaWZ5IHRoZSBDUkwgcGF0aC4gVGhpcyBlcnJvciBjYW4gb25seSBoYXBwZW4gaWYgZXh0ZW5k
ZWQgQ1JMIGNoZWNraW5nIGlzIGVuYWJsZWQuCisgICAgY2FzZSBYNTA5X1ZfRVJSX0FQUExJQ0FU
SU9OX1ZFUklGSUNBVElPTiA6IC8vIGFuIGFwcGxpY2F0aW9uIHNwZWNpZmljIGVycm9yLiBUaGlz
IHdpbGwgbmV2ZXIgYmUgcmV0dXJuZWQgdW5sZXNzIGV4cGxpY2l0bHkgc2V0IGJ5IGFuIGFwcGxp
Y2F0aW9uLgorICAgICAgICByZXR1cm4gU1NMX0NFUlRJRklDQVRFX0dFTkVSSUNfRVJST1I7Cisg
ICAgY2FzZSBYNTA5X1ZfRVJSX0NFUlRfUkVWT0tFRCA6IC8vIHRoZSBjZXJ0aWZpY2F0ZSBoYXMg
YmVlbiByZXZva2VkLgorICAgICAgICByZXR1cm4gU1NMX0NFUlRJRklDQVRFX1JFVk9LRUQ7Cisg
ICAgY2FzZSBYNTA5X1ZfRVJSX0lOVkFMSURfQ0EgOiAvLyBhIENBIGNlcnRpZmljYXRlIGlzIGlu
dmFsaWQuIEVpdGhlciBpdCBpcyBub3QgYSBDQSBvciBpdHMgZXh0ZW5zaW9ucyBhcmUgbm90IGNv
bnNpc3RlbnQgd2l0aCB0aGUgc3VwcGxpZWQgcHVycG9zZS4KKyAgICBjYXNlIFg1MDlfVl9FUlJf
U1VCSkVDVF9JU1NVRVJfTUlTTUFUQ0ggOiAvLyB0aGUgY3VycmVudCBjYW5kaWRhdGUgaXNzdWVy
IGNlcnRpZmljYXRlIHdhcyByZWplY3RlZCBiZWNhdXNlIGl0cyBzdWJqZWN0IG5hbWUgZGlkIG5v
dCBtYXRjaCB0aGUgaXNzdWVyIG5hbWUgb2YgdGhlIGN1cnJlbnQgY2VydGlmaWNhdGUuIFRoaXMg
aXMgb25seSBzZXQgaWYgaXNzdWVyIGNoZWNrIGRlYnVnZ2luZyBpcyBlbmFibGVkIGl0IGlzIHVz
ZWQgZm9yIHN0YXR1cyBub3RpZmljYXRpb24gYW5kIGlzIG5vdCBpbiBpdHNlbGYgYW4gZXJyb3Iu
CisgICAgY2FzZSBYNTA5X1ZfRVJSX0FLSURfU0tJRF9NSVNNQVRDSCA6IC8vIHRoZSBjdXJyZW50
IGNhbmRpZGF0ZSBpc3N1ZXIgY2VydGlmaWNhdGUgd2FzIHJlamVjdGVkIGJlY2F1c2UgaXRzIHN1
YmplY3Qga2V5IGlkZW50aWZpZXIgd2FzIHByZXNlbnQgYW5kIGRpZCBub3QgbWF0Y2ggdGhlIGF1
dGhvcml0eSBrZXkgaWRlbnRpZmllciBjdXJyZW50IGNlcnRpZmljYXRlLiBUaGlzIGlzIG9ubHkg
c2V0IGlmIGlzc3VlciBjaGVjayBkZWJ1Z2dpbmcgaXMgZW5hYmxlZCBpdCBpcyB1c2VkIGZvciBz
dGF0dXMgbm90aWZpY2F0aW9uIGFuZCBpcyBub3QgaW4gaXRzZWxmIGFuIGVycm9yLgorICAgIGNh
c2UgWDUwOV9WX0VSUl9BS0lEX0lTU1VFUl9TRVJJQUxfTUlTTUFUQ0ggOiAvLyB0aGUgY3VycmVu
dCBjYW5kaWRhdGUgaXNzdWVyIGNlcnRpZmljYXRlIHdhcyByZWplY3RlZCBiZWNhdXNlIGl0cyBp
c3N1ZXIgbmFtZSBhbmQgc2VyaWFsIG51bWJlciB3YXMgcHJlc2VudCBhbmQgZGlkIG5vdCBtYXRj
aCB0aGUgYXV0aG9yaXR5IGtleSBpZGVudGlmaWVyIG9mIHRoZSBjdXJyZW50IGNlcnRpZmljYXRl
LiBUaGlzIGlzIG9ubHkgc2V0IGlmIGlzc3VlciBjaGVjayBkZWJ1Z2dpbmcgaXMgZW5hYmxlZCBp
dCBpcyB1c2VkIGZvciBzdGF0dXMgbm90aWZpY2F0aW9uIGFuZCBpcyBub3QgaW4gaXRzZWxmIGFu
IGVycm9yLgorICAgIGNhc2UgWDUwOV9WX0VSUl9LRVlVU0FHRV9OT19DRVJUU0lHTiA6IC8vIHRo
ZSBjdXJyZW50IGNhbmRpZGF0ZSBpc3N1ZXIgY2VydGlmaWNhdGUgd2FzIHJlamVjdGVkIGJlY2F1
c2UgaXRzIGtleVVzYWdlIGV4dGVuc2lvbiBkb2VzIG5vdCBwZXJtaXQgY2VydGlmaWNhdGUgc2ln
bmluZy4gVGhpcyBpcyBvbmx5IHNldCBpZiBpc3N1ZXIgY2hlY2sgZGVidWdnaW5nIGlzIGVuYWJs
ZWQgaXQgaXMgdXNlZCBmb3Igc3RhdHVzIG5vdGlmaWNhdGlvbiBhbmQgaXMgbm90IGluIGl0c2Vs
ZiBhbiBlcnJvci4KKyAgICAgICAgcmV0dXJuIFNTTF9DRVJUSUZJQ0FURV9CQURfSURFTlRJVFk7
CisgICAgZGVmYXVsdCA6CisgICAgICAgIHJldHVybiBTU0xfQ0VSVElGSUNBVEVfR0VORVJJQ19F
UlJPUjsKKyAgICB9Cit9CisKKyNpZiAhUExBVEZPUk0oV0lOKQorLy8gc3VjY2VzcyBvZiBjZXJ0
aWZpY2F0ZSBleHRyYWN0aW9uCitib29sIHBlbURhdGEoWDUwOV9TVE9SRV9DVFggKmN0eCwgU3Ry
aW5nJiBjZXJ0aWZpY2F0ZSkKK3sKKyAgICBTdHJpbmcgcGVtRGF0YTsKKyAgICBYNTA5KiBlcnJD
ZXJ0ID0gWDUwOV9TVE9SRV9DVFhfZ2V0X2N1cnJlbnRfY2VydChjdHgpOworCisgICAgLy8gZ2V0
IHRoZSBjZXJ0IGluIFBFTSBmb3JtYXQKKyAgICBCSU8qIGJpbyA9IEJJT19uZXcoQklPX3NfbWVt
KCkpOworCisgICAgaW50IHJlcyA9IFBFTV93cml0ZV9iaW9fWDUwOShiaW8sIGVyckNlcnQpOwor
ICAgIGlmICghcmVzKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICB1bnNpZ25lZCBjaGFy
ICpkYXRhOworICAgIGxvbmcgbGVuID0gQklPX2dldF9tZW1fZGF0YShiaW8sICZkYXRhKTsKKyAg
ICBkYXRhW2xlbl0gPSAnXDAnOworICAgIGNlcnRpZmljYXRlID0gZGF0YTsKKyAgICBCSU9fZnJl
ZShiaW8pOworICAgIHJldHVybiB0cnVlOworfQorI2VuZGlmCisKK3N0YXRpYyBpbnQgY2VydFZl
cmlmeUNhbGxiYWNrKGludCBvaywgWDUwOV9TVE9SRV9DVFggKmN0eCkKK3sKKyAgICAvLyB3aGV0
aGVyIHRoZSB2ZXJpZmljYXRpb24gb2YgdGhlIGNlcnRpZmljYXRlIGluIHF1ZXN0aW9uIHdhcyBw
YXNzZWQgKHByZXZlcmlmeV9vaz0xKSBvciBub3QgKHByZXZlcmlmeV9vaz0wKQorCisgICAgdW5z
aWduZWQgZXJyID0gWDUwOV9TVE9SRV9DVFhfZ2V0X2Vycm9yKGN0eCk7CisgICAgaWYgKCFlcnIp
CisgICAgICAgIHJldHVybiAxOworCisgICAgU1NMKiBzc2wgPSAoU1NMKilYNTA5X1NUT1JFX0NU
WF9nZXRfZXhfZGF0YShjdHgsIFNTTF9nZXRfZXhfZGF0YV9YNTA5X1NUT1JFX0NUWF9pZHgoKSk7
CisgICAgU1NMX0NUWCogc3NsY3R4ID0gU1NMX2dldF9TU0xfQ1RYKHNzbCk7CisgICAgUmVzb3Vy
Y2VIYW5kbGUqIGpvYiAgPSAoUmVzb3VyY2VIYW5kbGUqKVNTTF9DVFhfZ2V0X2FwcF9kYXRhKHNz
bGN0eCk7CisgICAgU3RyaW5nIGhvc3QgPSBqb2ItPmZpcnN0UmVxdWVzdCgpLnVybCgpLmhvc3Qo
KTsKKyAgICBSZXNvdXJjZUhhbmRsZUludGVybmFsKiBkID0gam9iLT5nZXRJbnRlcm5hbCgpOwor
CisgICAgZC0+bV9zc2xFcnJvcnMgPSBzc2xDZXJ0aWZpY2F0ZUZsYWcoZXJyKTsKKworI2lmIFBM
QVRGT1JNKFdJTikKKyAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPjo6aXRlcmF0b3IgaXQgPSBh
bGxvd2VkSG9zdHMuZmluZChob3N0KTsKKyAgICBvayA9IChpdCAhPSBhbGxvd2VkSG9zdHMuZW5k
KCkpOworI2Vsc2UKKyAgICBTdHJpbmcgY2VydGlmaWNhdGU7CisgICAgaWYgKCFwZW1EYXRhKGN0
eCwgY2VydGlmaWNhdGUpKQorICAgICAgICByZXR1cm4gMDsKKyAgICBvayA9IHNzbElnbm9yZUhU
VFBTQ2VydGlmaWNhdGUoaG9zdC5sb3dlcigpLCBjZXJ0aWZpY2F0ZSk7CisjZW5kaWYKKworICAg
IGlmIChvaykKKyAgICAgICAgLy8gaWYgdGhlIGhvc3QgYW5kIHRoZSBjZXJ0aWZpY2F0ZSBhcmUg
c3RvcmVkIGZvciB0aGUgY3VycmVudCBoYW5kbGUgdGhhdCBtZWFucyBpcyBlbmFibGVkLAorICAg
ICAgICAvLyBzbyBkb24ndCBuZWVkIHRvIGN1cmwgdmVyaWZpZXMgdGhlIGF1dGhlbnRpY2l0eSBv
ZiB0aGUgcGVlcidzIGNlcnRpZmljYXRlCisgICAgICAgIGN1cmxfZWFzeV9zZXRvcHQoZC0+bV9o
YW5kbGUsIENVUkxPUFRfU1NMX1ZFUklGWVBFRVIsIGZhbHNlKTsKKyAgICByZXR1cm4gb2s7Cit9
CisKK3N0YXRpYyBDVVJMY29kZSBzc2xjdHhmdW4oQ1VSTCAqIGN1cmwsIHZvaWQgKiBzc2xjdHgs
IHZvaWQgKiBwYXJtKQoreworICAgIFNTTF9DVFhfc2V0X2FwcF9kYXRhKChTU0xfQ1RYKilzc2xj
dHgsIHBhcm0pOworICAgIFNTTF9DVFhfc2V0X3ZlcmlmeSgoU1NMX0NUWCopc3NsY3R4LCBTU0xf
VkVSSUZZX1BFRVIsIGNlcnRWZXJpZnlDYWxsYmFjayk7CisgICAgcmV0dXJuIENVUkxFX09LOwor
fQorCit2b2lkIHNldFNTTFZlcmlmeU9wdGlvbnMoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSkKK3sK
KyAgICBSZXNvdXJjZUhhbmRsZUludGVybmFsKiBkID0gaGFuZGxlLT5nZXRJbnRlcm5hbCgpOwor
ICAgIGN1cmxfZWFzeV9zZXRvcHQoZC0+bV9oYW5kbGUsIENVUkxPUFRfU1NMX0NUWF9EQVRBLCBo
YW5kbGUpOworICAgIGN1cmxfZWFzeV9zZXRvcHQoZC0+bV9oYW5kbGUsIENVUkxPUFRfU1NMX0NU
WF9GVU5DVElPTiwgc3NsY3R4ZnVuKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NTTEhhbmRsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL1NTTEhhbmRsZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLmZlODdjNDMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvU1NMSGFuZGxlLmgKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMyBVbml2ZXJzaXR5IG9mIFN6ZWdlZAorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVU5JVkVSU0lUWSBPRiBTWkVHRUQgYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgU1NM
SGFuZGxlX2gKKyNkZWZpbmUgU1NMSGFuZGxlX2gKKworI2luY2x1ZGUgIlJlc291cmNlSGFuZGxl
LmgiCisKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCit0eXBlZGVmIGVudW0geworICAgIFNTTF9DRVJUSUZJQ0FURV9VTktOT1dOX0NBICAg
ID0gKDEgPDwgMCksIC8vIFRoZSBzaWduaW5nIGNlcnRpZmljYXRlIGF1dGhvcml0eSBpcyBub3Qg
a25vd24uCisgICAgU1NMX0NFUlRJRklDQVRFX0JBRF9JREVOVElUWSAgPSAoMSA8PCAxKSwgLy8g
VGhlIGNlcnRpZmljYXRlIGRvZXMgbm90IG1hdGNoIHRoZSBleHBlY3RlZCBpZGVudGl0eSBvZiB0
aGUgc2l0ZSB0aGF0IGl0IHdhcyByZXRyaWV2ZWQgZnJvbS4KKyAgICBTU0xfQ0VSVElGSUNBVEVf
Tk9UX0FDVElWQVRFRCA9ICgxIDw8IDIpLCAvLyBUaGUgY2VydGlmaWNhdGUncyBhY3RpdmF0aW9u
IHRpbWUgaXMgc3RpbGwgaW4gdGhlIGZ1dHVyZQorICAgIFNTTF9DRVJUSUZJQ0FURV9FWFBJUkVE
ICAgICAgID0gKDEgPDwgMyksIC8vIFRoZSBjZXJ0aWZpY2F0ZSBoYXMgZXhwaXJlZAorICAgIFNT
TF9DRVJUSUZJQ0FURV9SRVZPS0VEICAgICAgID0gKDEgPDwgNCksIC8vIFRoZSBjZXJ0aWZpY2F0
ZSBoYXMgYmVlbiByZXZva2VkCisgICAgU1NMX0NFUlRJRklDQVRFX0lOU0VDVVJFICAgICAgPSAo
MSA8PCA1KSwgLy8gVGhlIGNlcnRpZmljYXRlJ3MgYWxnb3JpdGhtIGlzIGNvbnNpZGVyZWQgaW5z
ZWN1cmUuCisgICAgU1NMX0NFUlRJRklDQVRFX0dFTkVSSUNfRVJST1IgPSAoMSA8PCA2KSAvLyBT
b21lIG90aGVyIGVycm9yIG9jY3VycmVkIHZhbGlkYXRpbmcgdGhlIGNlcnRpZmljYXRlCit9IFNT
TENlcnRpZmljYXRlRmxhZ3M7CisKKwordm9pZCBhbGxvd3NBbnlIVFRQU0NlcnRpZmljYXRlSG9z
dHMoY29uc3QgU3RyaW5nJik7Citib29sIHNzbElnbm9yZUhUVFBTQ2VydGlmaWNhdGUoY29uc3Qg
U3RyaW5nJiwgY29uc3QgU3RyaW5nJik7Cit2b2lkIHNldFNTTFZlcmlmeU9wdGlvbnMoUmVzb3Vy
Y2VIYW5kbGUqKTsKKworfQorCisjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>216791</attachid>
            <date>2013-11-13 03:55:02 -0800</date>
            <delta_ts>2013-11-14 03:56:54 -0800</delta_ts>
            <desc>proposed patch</desc>
            <filename>general.patch</filename>
            <type>text/plain</type>
            <size>26449</size>
            <attacher>sipka</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAzOWRkYzIzLi4zYjhkYTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzcg
QEAKKzIwMTMtMTEtMTMgIFJvYmVydCBTaXBrYSAgPHNpcGthQGluZi51LXN6ZWdlZC5odT4KKwor
ICAgICAgICBbY3VybF0gSW1wcm92ZSBkZXRlY3RpbmcgYW5kIGhhbmRsaW5nIG9mIFNTTCByZWxh
dGVkIGVycm9ycworICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTExOTQzNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFNldCB0aGUgZXhhY3QgU1NMIHZlcmlmaWNhdGlvbiBlcnJvciBvbiBDVVJMCisgICAgICAg
IGFuZCBzdG9yZSB0aGUgZW5hYmxlZCBkb21haW4gd2l0aCBjZXJ0aWZpY2F0ZS4KKworICAgICAg
ICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2o6CisgICAgICAgICogV2ViQ29yZS52
Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VIYW5kbGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
SGFuZGxlSW50ZXJuYWwuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlSW50ZXJu
YWw6OlJlc291cmNlSGFuZGxlSW50ZXJuYWwpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
Y3VybC9SZXNvdXJjZUVycm9yLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUVycm9yOjpS
ZXNvdXJjZUVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlRXJyb3I6OnNzbEVycm9y
cyk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUVycm9yOjpzZXRTU0xFcnJvcnMpOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnNldEhvc3RBbGxvd3NBbnlIVFRQU0NlcnRp
ZmljYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVN
YW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlTWFuYWdlcjo6ZG93
bmxvYWRUaW1lckNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlTWFu
YWdlcjo6aW5pdGlhbGl6ZUhhbmRsZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJs
L1NTTEhhbmRsZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6YWxsb3dzQW55SFRUUFND
ZXJ0aWZpY2F0ZUhvc3RzKToKKyAgICAgICAgKFdlYkNvcmU6OnNzbElnbm9yZUhUVFBTQ2VydGlm
aWNhdGUpOgorICAgICAgICAoV2ViQ29yZTo6c3NsQ2VydGlmaWNhdGVGbGFnKToKKyAgICAgICAg
KFdlYkNvcmU6OnBlbURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Y2VydFZlcmlmeUNhbGxiYWNr
KToKKyAgICAgICAgKFdlYkNvcmU6OnNzbGN0eGZ1bik6CisgICAgICAgIChXZWJDb3JlOjpzZXRT
U0xWZXJpZnlPcHRpb25zKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU1NMSGFu
ZGxlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9S
ZXNvdXJjZUVycm9yLmguCisKIDIwMTMtMTEtMTMgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBh
cHBsZS5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IGtleSBnZW5lcmF0aW9uIGFuZCBKV0sgaW1w
b3J0IGZvciBSU0FTU0EtUEtDUzEtdjFfNQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4
cHJvai9XZWJDb3JlLnZjeHByb2oKaW5kZXggNzJjYzhkOS4uZTBjZDVlYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCkBAIC04MzkyLDYgKzgz
OTIsMTYgQEAKICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzInIj50cnVlPC9FeGNsdWRlZEZy
b21CdWlsZD4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9t
QnVpbGQ+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0
Zm9ybVxuZXR3b3JrXGN1cmxcU1NMSGFuZGxlLmNwcCI+CisgICAgICA8RXhjbHVkZWRGcm9tQnVp
bGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4z
MiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+dHJ1
ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHxXaW4zMiciPnRy
dWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdTdWZmaXh8eDY0JyI+dHJ1
ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+dHJ1ZTwv
RXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPnRydWU8L0V4Y2x1
ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1
ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4NjQnIj50cnVlPC9FeGNsdWRl
ZEZyb21CdWlsZD4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XHBsYXRmb3JtXHNxbFxTUUxpdGVBdXRob3JpemVyLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXHBsYXRmb3JtXHNxbFxTUUxpdGVEYXRhYmFzZS5jcHAiIC8+CiAgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxzcWxcU1FMaXRlRmlsZVN5c3RlbS5jcHAiIC8+CkBA
IC0xOTQ4NCw2ICsxOTQ5NCwxNiBAQAogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnxXaW4zMiciPnRy
dWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4NjQnIj50cnVl
PC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICA8L0N1c3RvbUJ1aWxkU3RlcD4KKyAgICA8Q3VzdG9t
QnVpbGRTdGVwIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcY3VybFxTU0xIYW5kbGUuaCI+
CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAg
ICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nRGVidWd8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhj
bHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdEZWJ1Z1N1ZmZpeHxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4
Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nRGVidWdTdWZmaXh8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhj
bHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdSZWxlYXNlfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVk
ZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdS
ZWxlYXNlfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJv
bUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVj
dGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJv
bUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVj
dGlvbnx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICA8L0N1c3RvbUJ1aWxkU3Rl
cD4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXHNxbFxTUUxpdGVEYXRhYmFz
ZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cc3FsXFNRTGl0ZUZp
bGVTeXN0ZW0uaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXHNxbFxT
UUxpdGVTdGF0ZW1lbnQuaCIgLz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
dmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
dmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwppbmRleCA1MzQ5MWNhLi5lYTM4ZTAwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9q
LmZpbHRlcnMKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4
cHJvai5maWx0ZXJzCkBAIC0xOTIwLDYgKzE5MjAsOSBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5ccGxhdGZvcm1cbmV0d29ya1xjdXJsXFNvY2tldFN0cmVhbUhhbmRsZUN1cmwuY3BwIj4K
ICAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cbmV0d29ya1xjdXJsPC9GaWx0ZXI+CiAgICAgPC9DbENv
bXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXGN1cmxc
U1NMSGFuZGxlLmNwcCI+CisgICAgICA8RmlsdGVyPnBsYXRmb3JtXG5ldHdvcmtcY3VybDwvRmls
dGVyPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZv
cm1cc3FsXFNRTGl0ZUF1dGhvcml6ZXIuY3BwIj4KICAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cc3Fs
PC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBAIC0xNTA1Niw2ICsxNTA1OSw5IEBACiAgICAg
PEN1c3RvbUJ1aWxkU3RlcCBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXGN1cmxcUmVzb3Vy
Y2VSZXNwb25zZS5oIj4KICAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cbmV0d29ya1xjdXJsPC9GaWx0
ZXI+CiAgICAgPC9DdXN0b21CdWlsZFN0ZXA+CisgICAgPEN1c3RvbUJ1aWxkU3RlcCBJbmNsdWRl
PSIuLlxwbGF0Zm9ybVxuZXR3b3JrXGN1cmxcU1NMSGFuZGxlLmgiPgorICAgICAgPEZpbHRlcj5w
bGF0Zm9ybVxuZXR3b3JrXGN1cmw8L0ZpbHRlcj4KKyAgICA8L0N1c3RvbUJ1aWxkU3RlcD4KICAg
ICA8Q3VzdG9tQnVpbGRTdGVwIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGltYWdlLWRlY29kZXJzXGdp
ZlxHSUZJbWFnZURlY29kZXIuaCI+CiAgICAgICA8RmlsdGVyPnBsYXRmb3JtXGltYWdlLWRlY29k
ZXJzXGdpZjwvRmlsdGVyPgogICAgIDwvQ3VzdG9tQnVpbGRTdGVwPgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCmluZGV4IDAyOTQ1ZTEuLjFk
OWI2ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VIYW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
SGFuZGxlLmgKQEAgLTEzOCw3ICsxMzgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgc2V0
Q2xpZW50Q2VydGlmaWNhdGUoY29uc3QgU3RyaW5nJiBob3N0LCBDRkRhdGFSZWYpOwogI2VuZGlm
CiAKLSNpZiBQTEFURk9STShXSU4pICYmIFVTRShDVVJMKQorI2lmIChQTEFURk9STShXSU4pIHx8
IFBMQVRGT1JNKE5JWCkpICYmIFVTRShDVVJMKQogICAgIHN0YXRpYyB2b2lkIHNldEhvc3RBbGxv
d3NBbnlIVFRQU0NlcnRpZmljYXRlKGNvbnN0IFN0cmluZyYpOwogI2VuZGlmCiAjaWYgUExBVEZP
Uk0oV0lOKSAmJiBVU0UoQ1VSTCkgJiYgVVNFKENGKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaAppbmRleCA5Yjhh
ODlhLi42MGZiNjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaApAQCAtMTAxLDYgKzEwMSw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgICwgbV9jYW5jZWxsZWQoZmFsc2UpCiAgICAgICAg
ICAgICAsIG1fYXV0aEZhaWx1cmVDb3VudCgwKQogICAgICAgICAgICAgLCBtX2Zvcm1EYXRhU3Ry
ZWFtKGxvYWRlcikKKyAgICAgICAgICAgICwgbV9zc2xFcnJvcnMoMCkKICNlbmRpZgogI2lmIFVT
RShTT1VQKQogICAgICAgICAgICAgLCBtX2NhbmNlbGxlZChmYWxzZSkKQEAgLTE3OCw2ICsxNzks
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHVuc2lnbmVkIHNob3J0IG1fYXV0aEZh
aWx1cmVDb3VudDsKIAogICAgICAgICBGb3JtRGF0YVN0cmVhbSBtX2Zvcm1EYXRhU3RyZWFtOwor
ICAgICAgICB1bnNpZ25lZCBtX3NzbEVycm9yczsKICAgICAgICAgVmVjdG9yPGNoYXI+IG1fcG9z
dEJ5dGVzOwogCiAgICAgICAgIE93blB0cjxNdWx0aXBhcnRIYW5kbGU+IG1fbXVsdGlwYXJ0SGFu
ZGxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jl
c291cmNlRXJyb3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNv
dXJjZUVycm9yLmgKaW5kZXggY2E4ZDM2Yi4uNzU1NWY1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlRXJyb3IuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VFcnJvci5oCkBAIC0zMywxNCAr
MzMsMjAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3VyY2VFcnJvciA6IHB1Ymxp
YyBSZXNvdXJjZUVycm9yQmFzZQogewogcHVibGljOgotICAgIFJlc291cmNlRXJyb3IoKQorICAg
IFJlc291cmNlRXJyb3IoKSA6IG1fc3NsRXJyb3JzKDApCiAgICAgewogICAgIH0KIAogICAgIFJl
c291cmNlRXJyb3IoY29uc3QgU3RyaW5nJiBkb21haW4sIGludCBlcnJvckNvZGUsIGNvbnN0IFN0
cmluZyYgZmFpbGluZ1VSTCwgY29uc3QgU3RyaW5nJiBsb2NhbGl6ZWREZXNjcmlwdGlvbikKLSAg
ICAgICAgOiBSZXNvdXJjZUVycm9yQmFzZShkb21haW4sIGVycm9yQ29kZSwgZmFpbGluZ1VSTCwg
bG9jYWxpemVkRGVzY3JpcHRpb24pCisgICAgICAgIDogUmVzb3VyY2VFcnJvckJhc2UoZG9tYWlu
LCBlcnJvckNvZGUsIGZhaWxpbmdVUkwsIGxvY2FsaXplZERlc2NyaXB0aW9uKSwgbV9zc2xFcnJv
cnMoMCkKICAgICB7CiAgICAgfQorCisgICAgdW5zaWduZWQgc3NsRXJyb3JzKCkgY29uc3QgeyBy
ZXR1cm4gbV9zc2xFcnJvcnM7IH0KKyAgICB2b2lkIHNldFNTTEVycm9ycyh1bnNpZ25lZCBzc2xW
ZXJpZnlSZXN1bHQpIHsgbV9zc2xFcnJvcnMgPSBzc2xWZXJpZnlSZXN1bHQ7IH0KKworcHJpdmF0
ZToKKyAgICB1bnNpZ25lZCBtX3NzbEVycm9yczsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5j
cHAKaW5kZXggNTNhMDBmMy4uZDc5MjM1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAKQEAgLTM0
LDYgKzM0LDcgQEAKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlJlc291
cmNlSGFuZGxlSW50ZXJuYWwuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZU1hbmFnZXIuaCIK
KyNpbmNsdWRlICJTU0xIYW5kbGUuaCIKIAogI2lmIFBMQVRGT1JNKFdJTikgJiYgVVNFKENGKQog
I2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CkBAIC0xMTUsMTkgKzExNiwxMSBAQCB2b2lkIFJl
c291cmNlSGFuZGxlOjpjYW5jZWwoKQogICAgIFJlc291cmNlSGFuZGxlTWFuYWdlcjo6c2hhcmVk
SW5zdGFuY2UoKS0+Y2FuY2VsKHRoaXMpOwogfQogCi0jaWYgUExBVEZPUk0oV0lOKSAmJiBVU0Uo
Q0YpCi1zdGF0aWMgSGFzaFNldDxTdHJpbmc+JiBhbGxvd3NBbnlIVFRQU0NlcnRpZmljYXRlSG9z
dHMoKQotewotICAgIHN0YXRpYyBIYXNoU2V0PFN0cmluZz4gaG9zdHM7Ci0KLSAgICByZXR1cm4g
aG9zdHM7Ci19Ci0KIHZvaWQgUmVzb3VyY2VIYW5kbGU6OnNldEhvc3RBbGxvd3NBbnlIVFRQU0Nl
cnRpZmljYXRlKGNvbnN0IFN0cmluZyYgaG9zdCkKIHsKLSAgICBhbGxvd3NBbnlIVFRQU0NlcnRp
ZmljYXRlSG9zdHMoKS5hZGQoaG9zdC5sb3dlcigpKTsKKyAgICBhbGxvd3NBbnlIVFRQU0NlcnRp
ZmljYXRlSG9zdHMoaG9zdC5sb3dlcigpKTsKIH0KLSNlbmRpZgorCiAKICNpZiBQTEFURk9STShX
SU4pICYmIFVTRShDRikKIC8vIEZJWE1FOiAgVGhlIENGRGF0YVJlZiB3aWxsIG5lZWQgdG8gYmUg
c29tZXRoaW5nIGVsc2Ugd2hlbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVNYW5hZ2VyLmNwcAppbmRleCAwYmYy
NDE3Li44ZDRkNTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvUmVzb3VyY2VIYW5kbGVNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVNYW5hZ2VyLmNwcApAQCAtNDQsNiArNDQs
NyBAQAogI2luY2x1ZGUgIlJlc291cmNlRXJyb3IuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRs
ZS5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlSW50ZXJuYWwuaCIKKyNpbmNsdWRlICJTU0xI
YW5kbGUuaCIKIAogI2lmIE9TKFdJTkRPV1MpCiAjaW5jbHVkZSAiV2ViQ29yZUJ1bmRsZVdpbi5o
IgpAQCAtNjEzLDggKzYxNCwxMSBAQCB2b2lkIFJlc291cmNlSGFuZGxlTWFuYWdlcjo6ZG93bmxv
YWRUaW1lckNhbGxiYWNrKFRpbWVyPFJlc291cmNlSGFuZGxlTWFuYWdlcj4qCiAjaWZuZGVmIE5E
RUJVRwogICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJDdXJsIEVSUk9SIGZvciB1cmw9JyVz
JywgZXJyb3I6ICclcydcbiIsIHVybCwgY3VybF9lYXN5X3N0cmVycm9yKG1zZy0+ZGF0YS5yZXN1
bHQpKTsKICNlbmRpZgotICAgICAgICAgICAgaWYgKGQtPmNsaWVudCgpKQotICAgICAgICAgICAg
ICAgIGQtPmNsaWVudCgpLT5kaWRGYWlsKGpvYiwgUmVzb3VyY2VFcnJvcihTdHJpbmcoKSwgbXNn
LT5kYXRhLnJlc3VsdCwgU3RyaW5nKHVybCksIFN0cmluZyhjdXJsX2Vhc3lfc3RyZXJyb3IobXNn
LT5kYXRhLnJlc3VsdCkpKSk7CisgICAgICAgICAgICBpZiAoZC0+Y2xpZW50KCkpIHsKKyAgICAg
ICAgICAgICAgICBSZXNvdXJjZUVycm9yIHJlc291cmNlRXJyb3IgPSBSZXNvdXJjZUVycm9yKFN0
cmluZygpLCBtc2ctPmRhdGEucmVzdWx0LCBTdHJpbmcodXJsKSwgU3RyaW5nKGN1cmxfZWFzeV9z
dHJlcnJvcihtc2ctPmRhdGEucmVzdWx0KSkpOworICAgICAgICAgICAgICAgIHJlc291cmNlRXJy
b3Iuc2V0U1NMRXJyb3JzKGQtPm1fc3NsRXJyb3JzKTsKKyAgICAgICAgICAgICAgICBkLT5jbGll
bnQoKS0+ZGlkRmFpbChqb2IsIHJlc291cmNlRXJyb3IpOworICAgICAgICAgICAgfQogICAgICAg
ICB9CiAKICAgICAgICAgcmVtb3ZlRnJvbUN1cmwoam9iKTsKQEAgLTkzMSw2ICs5MzUsOCBAQCB2
b2lkIFJlc291cmNlSGFuZGxlTWFuYWdlcjo6aW5pdGlhbGl6ZUhhbmRsZShSZXNvdXJjZUhhbmRs
ZSogam9iKQogICAgIGlmIChnZXRlbnYoIkRFQlVHX0NVUkwiKSkKICAgICAgICAgY3VybF9lYXN5
X3NldG9wdChkLT5tX2hhbmRsZSwgQ1VSTE9QVF9WRVJCT1NFLCAxKTsKICNlbmRpZgorICAgIGN1
cmxfZWFzeV9zZXRvcHQoZC0+bV9oYW5kbGUsIENVUkxPUFRfU1NMX1ZFUklGWVBFRVIsIDFMKTsK
KyAgICBjdXJsX2Vhc3lfc2V0b3B0KGQtPm1faGFuZGxlLCBDVVJMT1BUX1NTTF9WRVJJRllIT1NU
LCAyTCk7CiAgICAgY3VybF9lYXN5X3NldG9wdChkLT5tX2hhbmRsZSwgQ1VSTE9QVF9QUklWQVRF
LCBqb2IpOwogICAgIGN1cmxfZWFzeV9zZXRvcHQoZC0+bV9oYW5kbGUsIENVUkxPUFRfRVJST1JC
VUZGRVIsIG1fY3VybEVycm9yQnVmZmVyKTsKICAgICBjdXJsX2Vhc3lfc2V0b3B0KGQtPm1faGFu
ZGxlLCBDVVJMT1BUX1dSSVRFRlVOQ1RJT04sIHdyaXRlQ2FsbGJhY2spOwpAQCAtOTQ1LDEwICs5
NTEsMTEgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZU1hbmFnZXI6OmluaXRpYWxpemVIYW5kbGUoUmVz
b3VyY2VIYW5kbGUqIGpvYikKICAgICBjdXJsX2Vhc3lfc2V0b3B0KGQtPm1faGFuZGxlLCBDVVJM
T1BUX0ROU19DQUNIRV9USU1FT1VULCA2MCAqIDUpOyAvLyA1IG1pbnV0ZXMKICAgICBjdXJsX2Vh
c3lfc2V0b3B0KGQtPm1faGFuZGxlLCBDVVJMT1BUX1BST1RPQ09MUywgYWxsb3dlZFByb3RvY29s
cyk7CiAgICAgY3VybF9lYXN5X3NldG9wdChkLT5tX2hhbmRsZSwgQ1VSTE9QVF9SRURJUl9QUk9U
T0NPTFMsIGFsbG93ZWRQcm90b2NvbHMpOwotICAgIC8vIEZJWE1FOiBFbmFibGUgU1NMIHZlcmlm
aWNhdGlvbiB3aGVuIHdlIGhhdmUgYSB3YXkgb2Ygc2hpcHBpbmcgY2VydHMKLSAgICAvLyBhbmQv
b3IgcmVwb3J0aW5nIFNTTCBlcnJvcnMgdG8gdGhlIHVzZXIuCisKICAgICBpZiAoaWdub3JlU1NM
RXJyb3JzKQogICAgICAgICBjdXJsX2Vhc3lfc2V0b3B0KGQtPm1faGFuZGxlLCBDVVJMT1BUX1NT
TF9WRVJJRllQRUVSLCBmYWxzZSk7CisgICAgZWxzZQorICAgICAgICBzZXRTU0xWZXJpZnlPcHRp
b25zKGpvYik7CiAKICAgICBpZiAoIW1fY2VydGlmaWNhdGVQYXRoLmlzTnVsbCgpKQogICAgICAg
IGN1cmxfZWFzeV9zZXRvcHQoZC0+bV9oYW5kbGUsIENVUkxPUFRfQ0FJTkZPLCBtX2NlcnRpZmlj
YXRlUGF0aC5kYXRhKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL1NTTEhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvU1NMSGFuZGxlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4z
YjZjOGE5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL1NTTEhhbmRsZS5jcHAKQEAgLTAsMCArMSwxODkgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTMgVW5pdmVyc2l0eSBvZiBTemVnZWQKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFVOSVZFUlNJVFkgT0YgU1pFR0VEIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisKKyNpbmNsdWRlICJTU0xIYW5kbGUuaCIKKworI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlSW50
ZXJuYWwuaCIKKworI2luY2x1ZGUgPG9wZW5zc2wvcGVtLmg+CisjaW5jbHVkZSA8b3BlbnNzbC9z
c2wuaD4KKyNpbmNsdWRlIDxvcGVuc3NsL3g1MDlfdmZ5Lmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworc3RhdGljIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IGFsbG93ZWRIb3N0czsKKwordm9p
ZCBhbGxvd3NBbnlIVFRQU0NlcnRpZmljYXRlSG9zdHMoY29uc3QgU3RyaW5nJiBob3N0KQorewor
ICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+OjppdGVyYXRvciBpdCA9IGFsbG93ZWRIb3N0cy5m
aW5kKGhvc3QpOworICAgIGlmIChpdCAhPSBhbGxvd2VkSG9zdHMuZW5kKCkpCisgICAgICAgIGl0
LT52YWx1ZSA9IFN0cmluZygpOworICAgIGVsc2UKKyAgICAgICAgYWxsb3dlZEhvc3RzLmFkZCho
b3N0LCBTdHJpbmcoKSk7Cit9CisKK2Jvb2wgc3NsSWdub3JlSFRUUFNDZXJ0aWZpY2F0ZShjb25z
dCBTdHJpbmcmIGhvc3QsIGNvbnN0IFN0cmluZyYgY2VydCkKK3sKKyAgICBIYXNoTWFwPFN0cmlu
ZywgU3RyaW5nPjo6aXRlcmF0b3IgaXQgPSBhbGxvd2VkSG9zdHMuZmluZChob3N0KTsKKyAgICBp
ZiAoaXQgIT0gYWxsb3dlZEhvc3RzLmVuZCgpKSB7CisgICAgICAgIGlmICgoaXQtPnZhbHVlKS5p
c0VtcHR5KCkpIHsKKyAgICAgICAgICAgIGl0LT52YWx1ZSA9IGNlcnQ7CisgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoaXQtPnZhbHVlID09IGNlcnQpCisg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCit1
bnNpZ25lZCBzc2xDZXJ0aWZpY2F0ZUZsYWcoY29uc3QgdW5zaWduZWQmIHNzbEVycm9yKQorewor
ICAgIHN3aXRjaCAoc3NsRXJyb3IpIHsKKyAgICBjYXNlIFg1MDlfVl9FUlJfVU5BQkxFX1RPX0dF
VF9JU1NVRVJfQ0VSVCA6IC8vIHRoZSBpc3N1ZXIgY2VydGlmaWNhdGUgY291bGQgbm90IGJlIGZv
dW5kOiB0aGlzIG9jY3VycyBpZiB0aGUgaXNzdWVyIGNlcnRpZmljYXRlIG9mIGFuIHVudHJ1c3Rl
ZCBjZXJ0aWZpY2F0ZSBjYW5ub3QgYmUgZm91bmQuCisgICAgY2FzZSBYNTA5X1ZfRVJSX1VOQUJM
RV9UT19HRVRfQ1JMIDogLy8gdGhlIENSTCBvZiBhIGNlcnRpZmljYXRlIGNvdWxkIG5vdCBiZSBm
b3VuZC4KKyAgICBjYXNlIFg1MDlfVl9FUlJfVU5BQkxFX1RPX0dFVF9JU1NVRVJfQ0VSVF9MT0NB
TExZIDogLy8gdGhlIGlzc3VlciBjZXJ0aWZpY2F0ZSBvZiBhIGxvY2FsbHkgbG9va2VkIHVwIGNl
cnRpZmljYXRlIGNvdWxkIG5vdCBiZSBmb3VuZC4gVGhpcyBub3JtYWxseSBtZWFucyB0aGUgbGlz
dCBvZiB0cnVzdGVkIGNlcnRpZmljYXRlcyBpcyBub3QgY29tcGxldGUuCisgICAgICAgIHJldHVy
biBTU0xfQ0VSVElGSUNBVEVfVU5LTk9XTl9DQTsKKyAgICBjYXNlIFg1MDlfVl9FUlJfVU5BQkxF
X1RPX0RFQ1JZUFRfQ0VSVF9TSUdOQVRVUkUgOiAvLyB0aGUgY2VydGlmaWNhdGUgc2lnbmF0dXJl
IGNvdWxkIG5vdCBiZSBkZWNyeXB0ZWQuIFRoaXMgbWVhbnMgdGhhdCB0aGUgYWN0dWFsIHNpZ25h
dHVyZSB2YWx1ZSBjb3VsZCBub3QgYmUgZGV0ZXJtaW5lZCByYXRoZXIgdGhhbiBpdCBub3QgbWF0
Y2hpbmcgdGhlIGV4cGVjdGVkIHZhbHVlLCB0aGlzIGlzIG9ubHkgbWVhbmluZ2Z1bCBmb3IgUlNB
IGtleXMuCisgICAgY2FzZSBYNTA5X1ZfRVJSX1VOQUJMRV9UT19ERUNSWVBUX0NSTF9TSUdOQVRV
UkUgOiAvLyB0aGUgQ1JMIHNpZ25hdHVyZSBjb3VsZCBub3QgYmUgZGVjcnlwdGVkOiB0aGlzIG1l
YW5zIHRoYXQgdGhlIGFjdHVhbCBzaWduYXR1cmUgdmFsdWUgY291bGQgbm90IGJlIGRldGVybWlu
ZWQgcmF0aGVyIHRoYW4gaXQgbm90IG1hdGNoaW5nIHRoZSBleHBlY3RlZCB2YWx1ZS4gVW51c2Vk
LgorICAgIGNhc2UgWDUwOV9WX0VSUl9VTkFCTEVfVE9fREVDT0RFX0lTU1VFUl9QVUJMSUNfS0VZ
IDogLy8gdGhlIHB1YmxpYyBrZXkgaW4gdGhlIGNlcnRpZmljYXRlIFN1YmplY3RQdWJsaWNLZXlJ
bmZvIGNvdWxkIG5vdCBiZSByZWFkLgorICAgIGNhc2UgWDUwOV9WX0VSUl9DRVJUX1NJR05BVFVS
RV9GQUlMVVJFIDogLy8gdGhlIHNpZ25hdHVyZSBvZiB0aGUgY2VydGlmaWNhdGUgaXMgaW52YWxp
ZC4KKyAgICBjYXNlIFg1MDlfVl9FUlJfREVQVEhfWkVST19TRUxGX1NJR05FRF9DRVJUIDogLy8g
dGhlIHBhc3NlZCBjZXJ0aWZpY2F0ZSBpcyBzZWxmIHNpZ25lZCBhbmQgdGhlIHNhbWUgY2VydGlm
aWNhdGUgY2Fubm90IGJlIGZvdW5kIGluIHRoZSBsaXN0IG9mIHRydXN0ZWQgY2VydGlmaWNhdGVz
LgorICAgIGNhc2UgWDUwOV9WX0VSUl9TRUxGX1NJR05FRF9DRVJUX0lOX0NIQUlOIDogLy8gdGhl
IGNlcnRpZmljYXRlIGNoYWluIGNvdWxkIGJlIGJ1aWx0IHVwIHVzaW5nIHRoZSB1bnRydXN0ZWQg
Y2VydGlmaWNhdGVzIGJ1dCB0aGUgcm9vdCBjb3VsZCBub3QgYmUgZm91bmQgbG9jYWxseS4KKyAg
ICBjYXNlIFg1MDlfVl9FUlJfVU5BQkxFX1RPX1ZFUklGWV9MRUFGX1NJR05BVFVSRSA6IC8vIG5v
IHNpZ25hdHVyZXMgY291bGQgYmUgdmVyaWZpZWQgYmVjYXVzZSB0aGUgY2hhaW4gY29udGFpbnMg
b25seSBvbmUgY2VydGlmaWNhdGUgYW5kIGl0IGlzIG5vdCBzZWxmIHNpZ25lZC4KKyAgICBjYXNl
IFg1MDlfVl9FUlJfSU5WQUxJRF9QVVJQT1NFIDogLy8gdGhlIHN1cHBsaWVkIGNlcnRpZmljYXRl
IGNhbm5vdCBiZSB1c2VkIGZvciB0aGUgc3BlY2lmaWVkIHB1cnBvc2UuCisgICAgY2FzZSBYNTA5
X1ZfRVJSX0NFUlRfVU5UUlVTVEVEIDogLy8gdGhlIHJvb3QgQ0EgaXMgbm90IG1hcmtlZCBhcyB0
cnVzdGVkIGZvciB0aGUgc3BlY2lmaWVkIHB1cnBvc2UuCisgICAgY2FzZSBYNTA5X1ZfRVJSX0NF
UlRfUkVKRUNURUQgOiAvLyB0aGUgcm9vdCBDQSBpcyBtYXJrZWQgdG8gcmVqZWN0IHRoZSBzcGVj
aWZpZWQgcHVycG9zZS4KKyAgICBjYXNlIFg1MDlfVl9FUlJfTk9fRVhQTElDSVRfUE9MSUNZIDog
Ly8gdGhlIHZlcmlmaWNhdGlvbiBmbGFncyB3ZXJlIHNldCB0byByZXF1aXJlIGFuZCBleHBsaWNp
dCBwb2xpY3kgYnV0IG5vbmUgd2FzIHByZXNlbnQuCisgICAgY2FzZSBYNTA5X1ZfRVJSX0RJRkZF
UkVOVF9DUkxfU0NPUEUgOiAvLyB0aGUgb25seSBDUkxzIHRoYXQgY291bGQgYmUgZm91bmQgZGlk
IG5vdCBtYXRjaCB0aGUgc2NvcGUgb2YgdGhlIGNlcnRpZmljYXRlLgorICAgICAgICByZXR1cm4g
U1NMX0NFUlRJRklDQVRFX0lOU0VDVVJFOworICAgIGNhc2UgWDUwOV9WX0VSUl9DRVJUX05PVF9Z
RVRfVkFMSUQgOiAvLyB0aGUgY2VydGlmaWNhdGUgaXMgbm90IHlldCB2YWxpZDogdGhlIG5vdEJl
Zm9yZSBkYXRlIGlzIGFmdGVyIHRoZSBjdXJyZW50IHRpbWUuCisgICAgY2FzZSBYNTA5X1ZfRVJS
X0NSTF9OT1RfWUVUX1ZBTElEIDogLy8gdGhlIENSTCBpcyBub3QgeWV0IHZhbGlkLgorICAgICAg
ICByZXR1cm4gU1NMX0NFUlRJRklDQVRFX05PVF9BQ1RJVkFURUQ7CisgICAgY2FzZSBYNTA5X1Zf
RVJSX0NFUlRfSEFTX0VYUElSRUQgOiAvLyB0aGUgY2VydGlmaWNhdGUgaGFzIGV4cGlyZWQ6IHRo
YXQgaXMgdGhlIG5vdEFmdGVyIGRhdGUgaXMgYmVmb3JlIHRoZSBjdXJyZW50IHRpbWUuCisgICAg
Y2FzZSBYNTA5X1ZfRVJSX0NSTF9IQVNfRVhQSVJFRCA6IC8vIHRoZSBDUkwgaGFzIGV4cGlyZWQu
CisgICAgICAgIHJldHVybiBTU0xfQ0VSVElGSUNBVEVfRVhQSVJFRDsKKyAgICBjYXNlIFg1MDlf
Vl9FUlJfRVJST1JfSU5fQ0VSVF9OT1RfQkVGT1JFX0ZJRUxEIDogLy8gdGhlIGNlcnRpZmljYXRl
IG5vdEJlZm9yZSBmaWVsZCBjb250YWlucyBhbiBpbnZhbGlkIHRpbWUuCisgICAgY2FzZSBYNTA5
X1ZfRVJSX0VSUk9SX0lOX0NFUlRfTk9UX0FGVEVSX0ZJRUxEIDogLy8gdGhlIGNlcnRpZmljYXRl
IG5vdEFmdGVyIGZpZWxkIGNvbnRhaW5zIGFuIGludmFsaWQgdGltZS4KKyAgICBjYXNlIFg1MDlf
Vl9FUlJfRVJST1JfSU5fQ1JMX0xBU1RfVVBEQVRFX0ZJRUxEIDogLy8gdGhlIENSTCBsYXN0VXBk
YXRlIGZpZWxkIGNvbnRhaW5zIGFuIGludmFsaWQgdGltZS4KKyAgICBjYXNlIFg1MDlfVl9FUlJf
RVJST1JfSU5fQ1JMX05FWFRfVVBEQVRFX0ZJRUxEIDogLy8gdGhlIENSTCBuZXh0VXBkYXRlIGZp
ZWxkIGNvbnRhaW5zIGFuIGludmFsaWQgdGltZS4KKyAgICBjYXNlIFg1MDlfVl9FUlJfT1VUX09G
X01FTSA6IC8vIGFuIGVycm9yIG9jY3VycmVkIHRyeWluZyB0byBhbGxvY2F0ZSBtZW1vcnkuIFRo
aXMgc2hvdWxkIG5ldmVyIGhhcHBlbi4KKyAgICBjYXNlIFg1MDlfVl9FUlJfQ0VSVF9DSEFJTl9U
T09fTE9ORyA6IC8vIHRoZSBjZXJ0aWZpY2F0ZSBjaGFpbiBsZW5ndGggaXMgZ3JlYXRlciB0aGFu
IHRoZSBzdXBwbGllZCBtYXhpbXVtIGRlcHRoLiBVbnVzZWQuCisgICAgY2FzZSBYNTA5X1ZfRVJS
X1BBVEhfTEVOR1RIX0VYQ0VFREVEIDogLy8gdGhlIGJhc2ljQ29uc3RyYWludHMgcGF0aGxlbmd0
aCBwYXJhbWV0ZXIgaGFzIGJlZW4gZXhjZWVkZWQuCisgICAgY2FzZSBYNTA5X1ZfRVJSX0lOVkFM
SURfRVhURU5TSU9OIDogLy8gYSBjZXJ0aWZpY2F0ZSBleHRlbnNpb24gaGFkIGFuIGludmFsaWQg
dmFsdWUgKGZvciBleGFtcGxlIGFuIGluY29ycmVjdCBlbmNvZGluZykgb3Igc29tZSB2YWx1ZSBp
bmNvbnNpc3RlbnQgd2l0aCBvdGhlciBleHRlbnNpb25zLgorICAgIGNhc2UgWDUwOV9WX0VSUl9J
TlZBTElEX1BPTElDWV9FWFRFTlNJT04gOiAvLyBhIGNlcnRpZmljYXRlIHBvbGljaWVzIGV4dGVu
c2lvbiBoYWQgYW4gaW52YWxpZCB2YWx1ZSAoZm9yIGV4YW1wbGUgYW4gaW5jb3JyZWN0IGVuY29k
aW5nKSBvciBzb21lIHZhbHVlIGluY29uc2lzdGVudCB3aXRoIG90aGVyIGV4dGVuc2lvbnMuIFRo
aXMgZXJyb3Igb25seSBvY2N1cnMgaWYgcG9saWN5IHByb2Nlc3NpbmcgaXMgZW5hYmxlZC4KKyAg
ICBjYXNlIFg1MDlfVl9FUlJfVU5TVVBQT1JURURfRVhURU5TSU9OX0ZFQVRVUkUgOiAvLyBzb21l
IGZlYXR1cmUgb2YgYSBjZXJ0aWZpY2F0ZSBleHRlbnNpb24gaXMgbm90IHN1cHBvcnRlZC4gVW51
c2VkLgorICAgIGNhc2UgWDUwOV9WX0VSUl9QRVJNSVRURURfVklPTEFUSU9OIDogLy8gYSBuYW1l
IGNvbnN0cmFpbnQgdmlvbGF0aW9uIG9jY3VyZWQgaW4gdGhlIHBlcm1pdHRlZCBzdWJ0cmVlcy4K
KyAgICBjYXNlIFg1MDlfVl9FUlJfRVhDTFVERURfVklPTEFUSU9OIDogLy8gYSBuYW1lIGNvbnN0
cmFpbnQgdmlvbGF0aW9uIG9jY3VyZWQgaW4gdGhlIGV4Y2x1ZGVkIHN1YnRyZWVzLgorICAgIGNh
c2UgWDUwOV9WX0VSUl9TVUJUUkVFX01JTk1BWCA6IC8vIGEgY2VydGlmaWNhdGUgbmFtZSBjb25z
dHJhaW50cyBleHRlbnNpb24gaW5jbHVkZWQgYSBtaW5pbXVtIG9yIG1heGltdW0gZmllbGQ6IHRo
aXMgaXMgbm90IHN1cHBvcnRlZC4KKyAgICBjYXNlIFg1MDlfVl9FUlJfVU5TVVBQT1JURURfQ09O
U1RSQUlOVF9UWVBFIDogLy8gYW4gdW5zdXBwb3J0ZWQgbmFtZSBjb25zdHJhaW50IHR5cGUgd2Fz
IGVuY291bnRlcmVkLiBPcGVuU1NMIGN1cnJlbnRseSBvbmx5IHN1cHBvcnRzIGRpcmVjdG9yeSBu
YW1lLCBETlMgbmFtZSwgZW1haWwgYW5kIFVSSSB0eXBlcy4KKyAgICBjYXNlIFg1MDlfVl9FUlJf
VU5TVVBQT1JURURfQ09OU1RSQUlOVF9TWU5UQVggOiAvLyB0aGUgZm9ybWF0IG9mIHRoZSBuYW1l
IGNvbnN0cmFpbnQgaXMgbm90IHJlY29nbmlzZWQ6IGZvciBleGFtcGxlIGFuIGVtYWlsIGFkZHJl
c3MgZm9ybWF0IG9mIGEgZm9ybSBub3QgbWVudGlvbmVkIGluIFJGQzMyODAuIFRoaXMgY291bGQg
YmUgY2F1c2VkIGJ5IGEgZ2FyYmFnZSBleHRlbnNpb24gb3Igc29tZSBuZXcgZmVhdHVyZSBub3Qg
Y3VycmVudGx5IHN1cHBvcnRlZC4KKyAgICBjYXNlIFg1MDlfVl9FUlJfQ1JMX1BBVEhfVkFMSURB
VElPTl9FUlJPUiA6IC8vIGFuIGVycm9yIG9jY3VyZWQgd2hlbiBhdHRlbXB0aW5nIHRvIHZlcmlm
eSB0aGUgQ1JMIHBhdGguIFRoaXMgZXJyb3IgY2FuIG9ubHkgaGFwcGVuIGlmIGV4dGVuZGVkIENS
TCBjaGVja2luZyBpcyBlbmFibGVkLgorICAgIGNhc2UgWDUwOV9WX0VSUl9BUFBMSUNBVElPTl9W
RVJJRklDQVRJT04gOiAvLyBhbiBhcHBsaWNhdGlvbiBzcGVjaWZpYyBlcnJvci4gVGhpcyB3aWxs
IG5ldmVyIGJlIHJldHVybmVkIHVubGVzcyBleHBsaWNpdGx5IHNldCBieSBhbiBhcHBsaWNhdGlv
bi4KKyAgICAgICAgcmV0dXJuIFNTTF9DRVJUSUZJQ0FURV9HRU5FUklDX0VSUk9SOworICAgIGNh
c2UgWDUwOV9WX0VSUl9DRVJUX1JFVk9LRUQgOiAvLyB0aGUgY2VydGlmaWNhdGUgaGFzIGJlZW4g
cmV2b2tlZC4KKyAgICAgICAgcmV0dXJuIFNTTF9DRVJUSUZJQ0FURV9SRVZPS0VEOworICAgIGNh
c2UgWDUwOV9WX0VSUl9JTlZBTElEX0NBIDogLy8gYSBDQSBjZXJ0aWZpY2F0ZSBpcyBpbnZhbGlk
LiBFaXRoZXIgaXQgaXMgbm90IGEgQ0Egb3IgaXRzIGV4dGVuc2lvbnMgYXJlIG5vdCBjb25zaXN0
ZW50IHdpdGggdGhlIHN1cHBsaWVkIHB1cnBvc2UuCisgICAgY2FzZSBYNTA5X1ZfRVJSX1NVQkpF
Q1RfSVNTVUVSX01JU01BVENIIDogLy8gdGhlIGN1cnJlbnQgY2FuZGlkYXRlIGlzc3VlciBjZXJ0
aWZpY2F0ZSB3YXMgcmVqZWN0ZWQgYmVjYXVzZSBpdHMgc3ViamVjdCBuYW1lIGRpZCBub3QgbWF0
Y2ggdGhlIGlzc3VlciBuYW1lIG9mIHRoZSBjdXJyZW50IGNlcnRpZmljYXRlLiBUaGlzIGlzIG9u
bHkgc2V0IGlmIGlzc3VlciBjaGVjayBkZWJ1Z2dpbmcgaXMgZW5hYmxlZCBpdCBpcyB1c2VkIGZv
ciBzdGF0dXMgbm90aWZpY2F0aW9uIGFuZCBpcyBub3QgaW4gaXRzZWxmIGFuIGVycm9yLgorICAg
IGNhc2UgWDUwOV9WX0VSUl9BS0lEX1NLSURfTUlTTUFUQ0ggOiAvLyB0aGUgY3VycmVudCBjYW5k
aWRhdGUgaXNzdWVyIGNlcnRpZmljYXRlIHdhcyByZWplY3RlZCBiZWNhdXNlIGl0cyBzdWJqZWN0
IGtleSBpZGVudGlmaWVyIHdhcyBwcmVzZW50IGFuZCBkaWQgbm90IG1hdGNoIHRoZSBhdXRob3Jp
dHkga2V5IGlkZW50aWZpZXIgY3VycmVudCBjZXJ0aWZpY2F0ZS4gVGhpcyBpcyBvbmx5IHNldCBp
ZiBpc3N1ZXIgY2hlY2sgZGVidWdnaW5nIGlzIGVuYWJsZWQgaXQgaXMgdXNlZCBmb3Igc3RhdHVz
IG5vdGlmaWNhdGlvbiBhbmQgaXMgbm90IGluIGl0c2VsZiBhbiBlcnJvci4KKyAgICBjYXNlIFg1
MDlfVl9FUlJfQUtJRF9JU1NVRVJfU0VSSUFMX01JU01BVENIIDogLy8gdGhlIGN1cnJlbnQgY2Fu
ZGlkYXRlIGlzc3VlciBjZXJ0aWZpY2F0ZSB3YXMgcmVqZWN0ZWQgYmVjYXVzZSBpdHMgaXNzdWVy
IG5hbWUgYW5kIHNlcmlhbCBudW1iZXIgd2FzIHByZXNlbnQgYW5kIGRpZCBub3QgbWF0Y2ggdGhl
IGF1dGhvcml0eSBrZXkgaWRlbnRpZmllciBvZiB0aGUgY3VycmVudCBjZXJ0aWZpY2F0ZS4gVGhp
cyBpcyBvbmx5IHNldCBpZiBpc3N1ZXIgY2hlY2sgZGVidWdnaW5nIGlzIGVuYWJsZWQgaXQgaXMg
dXNlZCBmb3Igc3RhdHVzIG5vdGlmaWNhdGlvbiBhbmQgaXMgbm90IGluIGl0c2VsZiBhbiBlcnJv
ci4KKyAgICBjYXNlIFg1MDlfVl9FUlJfS0VZVVNBR0VfTk9fQ0VSVFNJR04gOiAvLyB0aGUgY3Vy
cmVudCBjYW5kaWRhdGUgaXNzdWVyIGNlcnRpZmljYXRlIHdhcyByZWplY3RlZCBiZWNhdXNlIGl0
cyBrZXlVc2FnZSBleHRlbnNpb24gZG9lcyBub3QgcGVybWl0IGNlcnRpZmljYXRlIHNpZ25pbmcu
IFRoaXMgaXMgb25seSBzZXQgaWYgaXNzdWVyIGNoZWNrIGRlYnVnZ2luZyBpcyBlbmFibGVkIGl0
IGlzIHVzZWQgZm9yIHN0YXR1cyBub3RpZmljYXRpb24gYW5kIGlzIG5vdCBpbiBpdHNlbGYgYW4g
ZXJyb3IuCisgICAgICAgIHJldHVybiBTU0xfQ0VSVElGSUNBVEVfQkFEX0lERU5USVRZOworICAg
IGRlZmF1bHQgOgorICAgICAgICByZXR1cm4gU1NMX0NFUlRJRklDQVRFX0dFTkVSSUNfRVJST1I7
CisgICAgfQorfQorCisjaWYgIVBMQVRGT1JNKFdJTikKKy8vIHN1Y2Nlc3Mgb2YgY2VydGlmaWNh
dGUgZXh0cmFjdGlvbgorYm9vbCBwZW1EYXRhKFg1MDlfU1RPUkVfQ1RYICpjdHgsIFN0cmluZyYg
Y2VydGlmaWNhdGUpCit7CisgICAgWDUwOSogZXJyQ2VydCA9IFg1MDlfU1RPUkVfQ1RYX2dldF9j
dXJyZW50X2NlcnQoY3R4KTsKKworICAgIC8vIGdldCB0aGUgY2VydCBpbiBQRU0gZm9ybWF0Cisg
ICAgQklPKiBiaW8gPSBCSU9fbmV3KEJJT19zX21lbSgpKTsKKworICAgIGludCByZXMgPSBQRU1f
d3JpdGVfYmlvX1g1MDkoYmlvLCBlcnJDZXJ0KTsKKyAgICBpZiAoIXJlcykKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgdW5zaWduZWQgY2hhciAqZGF0YTsKKyAgICBsb25nIGxlbiA9IEJJ
T19nZXRfbWVtX2RhdGEoYmlvLCAmZGF0YSk7CisgICAgZGF0YVtsZW5dID0gJ1wwJzsKKyAgICBj
ZXJ0aWZpY2F0ZSA9IGRhdGE7CisgICAgQklPX2ZyZWUoYmlvKTsKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKyNlbmRpZgorCitzdGF0aWMgaW50IGNlcnRWZXJpZnlDYWxsYmFjayhpbnQgb2ssIFg1MDlf
U1RPUkVfQ1RYICpjdHgpCit7CisgICAgLy8gd2hldGhlciB0aGUgdmVyaWZpY2F0aW9uIG9mIHRo
ZSBjZXJ0aWZpY2F0ZSBpbiBxdWVzdGlvbiB3YXMgcGFzc2VkIChwcmV2ZXJpZnlfb2s9MSkgb3Ig
bm90IChwcmV2ZXJpZnlfb2s9MCkKKworICAgIHVuc2lnbmVkIGVyciA9IFg1MDlfU1RPUkVfQ1RY
X2dldF9lcnJvcihjdHgpOworICAgIGlmICghZXJyKQorICAgICAgICByZXR1cm4gMTsKKworICAg
IFNTTCogc3NsID0gKFNTTCopWDUwOV9TVE9SRV9DVFhfZ2V0X2V4X2RhdGEoY3R4LCBTU0xfZ2V0
X2V4X2RhdGFfWDUwOV9TVE9SRV9DVFhfaWR4KCkpOworICAgIFNTTF9DVFgqIHNzbGN0eCA9IFNT
TF9nZXRfU1NMX0NUWChzc2wpOworICAgIFJlc291cmNlSGFuZGxlKiBqb2IgID0gKFJlc291cmNl
SGFuZGxlKilTU0xfQ1RYX2dldF9hcHBfZGF0YShzc2xjdHgpOworICAgIFN0cmluZyBob3N0ID0g
am9iLT5maXJzdFJlcXVlc3QoKS51cmwoKS5ob3N0KCk7CisgICAgUmVzb3VyY2VIYW5kbGVJbnRl
cm5hbCogZCA9IGpvYi0+Z2V0SW50ZXJuYWwoKTsKKworICAgIGQtPm1fc3NsRXJyb3JzID0gc3Ns
Q2VydGlmaWNhdGVGbGFnKGVycik7CisKKyNpZiBQTEFURk9STShXSU4pCisgICAgSGFzaE1hcDxT
dHJpbmcsIFN0cmluZz46Oml0ZXJhdG9yIGl0ID0gYWxsb3dlZEhvc3RzLmZpbmQoaG9zdCk7Cisg
ICAgb2sgPSAoaXQgIT0gYWxsb3dlZEhvc3RzLmVuZCgpKTsKKyNlbHNlCisgICAgU3RyaW5nIGNl
cnRpZmljYXRlOworICAgIGlmICghcGVtRGF0YShjdHgsIGNlcnRpZmljYXRlKSkKKyAgICAgICAg
cmV0dXJuIDA7CisgICAgb2sgPSBzc2xJZ25vcmVIVFRQU0NlcnRpZmljYXRlKGhvc3QubG93ZXIo
KSwgY2VydGlmaWNhdGUpOworI2VuZGlmCisKKyAgICBpZiAob2spCisgICAgICAgIC8vIGlmIHRo
ZSBob3N0IGFuZCB0aGUgY2VydGlmaWNhdGUgYXJlIHN0b3JlZCBmb3IgdGhlIGN1cnJlbnQgaGFu
ZGxlIHRoYXQgbWVhbnMgaXMgZW5hYmxlZCwKKyAgICAgICAgLy8gc28gZG9uJ3QgbmVlZCB0byBj
dXJsIHZlcmlmaWVzIHRoZSBhdXRoZW50aWNpdHkgb2YgdGhlIHBlZXIncyBjZXJ0aWZpY2F0ZQor
ICAgICAgICBjdXJsX2Vhc3lfc2V0b3B0KGQtPm1faGFuZGxlLCBDVVJMT1BUX1NTTF9WRVJJRllQ
RUVSLCBmYWxzZSk7CisgICAgcmV0dXJuIG9rOworfQorCitzdGF0aWMgQ1VSTGNvZGUgc3NsY3R4
ZnVuKENVUkwgKiBjdXJsLCB2b2lkICogc3NsY3R4LCB2b2lkICogcGFybSkKK3sKKyAgICBTU0xf
Q1RYX3NldF9hcHBfZGF0YSgoU1NMX0NUWCopc3NsY3R4LCBwYXJtKTsKKyAgICBTU0xfQ1RYX3Nl
dF92ZXJpZnkoKFNTTF9DVFgqKXNzbGN0eCwgU1NMX1ZFUklGWV9QRUVSLCBjZXJ0VmVyaWZ5Q2Fs
bGJhY2spOworICAgIHJldHVybiBDVVJMRV9PSzsKK30KKwordm9pZCBzZXRTU0xWZXJpZnlPcHRp
b25zKFJlc291cmNlSGFuZGxlKiBoYW5kbGUpCit7CisgICAgUmVzb3VyY2VIYW5kbGVJbnRlcm5h
bCogZCA9IGhhbmRsZS0+Z2V0SW50ZXJuYWwoKTsKKyAgICBjdXJsX2Vhc3lfc2V0b3B0KGQtPm1f
aGFuZGxlLCBDVVJMT1BUX1NTTF9DVFhfREFUQSwgaGFuZGxlKTsKKyAgICBjdXJsX2Vhc3lfc2V0
b3B0KGQtPm1faGFuZGxlLCBDVVJMT1BUX1NTTF9DVFhfRlVOQ1RJT04sIHNzbGN0eGZ1bik7Cit9
CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9T
U0xIYW5kbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9TU0xIYW5k
bGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZTg3YzQzCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NTTEhhbmRs
ZS5oCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgVW5pdmVyc2l0
eSBvZiBTemVnZWQKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFVOSVZFUlNJVFkgT0YgU1pFR0VEIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFNTTEhhbmRsZV9oCisjZGVmaW5lIFNTTEhhbmRs
ZV9oCisKKyNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgorCisjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordHlwZWRlZiBlbnVtIHsKKyAg
ICBTU0xfQ0VSVElGSUNBVEVfVU5LTk9XTl9DQSAgICA9ICgxIDw8IDApLCAvLyBUaGUgc2lnbmlu
ZyBjZXJ0aWZpY2F0ZSBhdXRob3JpdHkgaXMgbm90IGtub3duLgorICAgIFNTTF9DRVJUSUZJQ0FU
RV9CQURfSURFTlRJVFkgID0gKDEgPDwgMSksIC8vIFRoZSBjZXJ0aWZpY2F0ZSBkb2VzIG5vdCBt
YXRjaCB0aGUgZXhwZWN0ZWQgaWRlbnRpdHkgb2YgdGhlIHNpdGUgdGhhdCBpdCB3YXMgcmV0cmll
dmVkIGZyb20uCisgICAgU1NMX0NFUlRJRklDQVRFX05PVF9BQ1RJVkFURUQgPSAoMSA8PCAyKSwg
Ly8gVGhlIGNlcnRpZmljYXRlJ3MgYWN0aXZhdGlvbiB0aW1lIGlzIHN0aWxsIGluIHRoZSBmdXR1
cmUKKyAgICBTU0xfQ0VSVElGSUNBVEVfRVhQSVJFRCAgICAgICA9ICgxIDw8IDMpLCAvLyBUaGUg
Y2VydGlmaWNhdGUgaGFzIGV4cGlyZWQKKyAgICBTU0xfQ0VSVElGSUNBVEVfUkVWT0tFRCAgICAg
ICA9ICgxIDw8IDQpLCAvLyBUaGUgY2VydGlmaWNhdGUgaGFzIGJlZW4gcmV2b2tlZAorICAgIFNT
TF9DRVJUSUZJQ0FURV9JTlNFQ1VSRSAgICAgID0gKDEgPDwgNSksIC8vIFRoZSBjZXJ0aWZpY2F0
ZSdzIGFsZ29yaXRobSBpcyBjb25zaWRlcmVkIGluc2VjdXJlLgorICAgIFNTTF9DRVJUSUZJQ0FU
RV9HRU5FUklDX0VSUk9SID0gKDEgPDwgNikgLy8gU29tZSBvdGhlciBlcnJvciBvY2N1cnJlZCB2
YWxpZGF0aW5nIHRoZSBjZXJ0aWZpY2F0ZQorfSBTU0xDZXJ0aWZpY2F0ZUZsYWdzOworCisKK3Zv
aWQgYWxsb3dzQW55SFRUUFNDZXJ0aWZpY2F0ZUhvc3RzKGNvbnN0IFN0cmluZyYpOworYm9vbCBz
c2xJZ25vcmVIVFRQU0NlcnRpZmljYXRlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpOwor
dm9pZCBzZXRTU0xWZXJpZnlPcHRpb25zKFJlc291cmNlSGFuZGxlKik7CisKK30KKworI2VuZGlm
Cg==
</data>
<flag name="review"
          id="239835"
          type_id="1"
          status="-"
          setter="bfulgham"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>216915</attachid>
            <date>2013-11-14 03:56:54 -0800</date>
            <delta_ts>2013-11-15 01:27:13 -0800</delta_ts>
            <desc>proposed patch v2</desc>
            <filename>general.patch</filename>
            <type>text/plain</type>
            <size>26442</size>
            <attacher>sipka</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBiNGMzM2I5Li5hYzhhOWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYg
QEAKKzIwMTMtMTEtMTQgIFJvYmVydCBTaXBrYSAgPHNpcGthQGluZi51LXN6ZWdlZC5odT4KKwor
ICAgICAgICBbY3VybF0gSW1wcm92ZSBkZXRlY3RpbmcgYW5kIGhhbmRsaW5nIG9mIFNTTCByZWxh
dGVkIGVycm9ycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTE5NDM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgU2V0IHRoZSBleGFjdCBTU0wgdmVyaWZpY2F0aW9uIGVycm9yIG9uIENVUkwKKyAgICAgICAg
YW5kIHN0b3JlIHRoZSBlbmFibGVkIGRvbWFpbiB3aXRoIGNlcnRpZmljYXRlLgorCisgICAgICAg
ICogV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnZj
eHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZUhhbmRsZS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VI
YW5kbGVJbnRlcm5hbC5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVJbnRlcm5h
bDo6UmVzb3VyY2VIYW5kbGVJbnRlcm5hbCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9j
dXJsL1Jlc291cmNlRXJyb3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlRXJyb3I6OlJl
c291cmNlRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VFcnJvcjo6c3NsRXJyb3Jz
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlRXJyb3I6OnNldFNTTEVycm9ycyk6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6c2V0SG9zdEFsbG93c0FueUhUVFBTQ2VydGlm
aWNhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZU1h
bmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVNYW5hZ2VyOjpkb3du
bG9hZFRpbWVyQ2FsbGJhY2spOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9TU0xI
YW5kbGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmFsbG93c0FueUhUVFBTQ2VydGlm
aWNhdGVIb3N0cyk6CisgICAgICAgIChXZWJDb3JlOjpzc2xJZ25vcmVIVFRQU0NlcnRpZmljYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OnNzbENlcnRpZmljYXRlRmxhZyk6CisgICAgICAgIChXZWJD
b3JlOjpwZW1EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OmNlcnRWZXJpZnlDYWxsYmFjayk6Cisg
ICAgICAgIChXZWJDb3JlOjpzc2xjdHhmdW4pOgorICAgICAgICAoV2ViQ29yZTo6c2V0U1NMVmVy
aWZ5T3B0aW9ucyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL1NTTEhhbmRsZS5o
OiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3Vy
Y2VFcnJvci5oLgorCiAyMDEzLTExLTE0ICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ft
c3VuZy5jb20+CiAKICAgICAgICAgSW50cm9kdWNlIEZJTFRFUl9UWVBFX0NBU1RTIGZvciBjaGls
ZCBmaWx0ZXIgY2xhc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJv
ai9XZWJDb3JlLnZjeHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29y
ZS52Y3hwcm9qCmluZGV4IDE3NTQ3YzkuLjMyM2ZlNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagpAQCAtODM5Miw2ICs4MzkyLDE2IEBACiAg
ICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAg
ICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAg
IDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cbmV0d29y
a1xjdXJsXFNTTEhhbmRsZS5jcHAiPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj50cnVlPC9F
eGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPnRydWU8L0V4Y2x1ZGVk
RnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdTdWZmaXh8V2luMzInIj50cnVlPC9FeGNsdWRl
ZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnU3VmZml4fHg2NCciPnRydWU8L0V4Y2x1ZGVk
RnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJv
bUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWls
ZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWls
ZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+
CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxz
cWxcU1FMaXRlQXV0aG9yaXplci5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxw
bGF0Zm9ybVxzcWxcU1FMaXRlRGF0YWJhc2UuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5ccGxhdGZvcm1cc3FsXFNRTGl0ZUZpbGVTeXN0ZW0uY3BwIiAvPgpAQCAtMTk1MDYsNiAr
MTk1MTYsMTYgQEAKICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzInIj50cnVlPC9FeGNsdWRl
ZEZyb21CdWlsZD4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+dHJ1ZTwvRXhjbHVkZWRG
cm9tQnVpbGQ+CiAgICAgPC9DdXN0b21CdWlsZFN0ZXA+CisgICAgPEN1c3RvbUJ1aWxkU3RlcCBJ
bmNsdWRlPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXGN1cmxcU1NMSGFuZGxlLmgiPgorICAgICAgPEV4
Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nRGVidWd8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRl
ZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0Rl
YnVnfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1
aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdTdWZm
aXh8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21C
dWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnU3Vm
Zml4fHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1
aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxX
aW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxk
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQn
Ij50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzIn
Ij50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+
dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgPC9DdXN0b21CdWlsZFN0ZXA+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxzcWxcU1FMaXRlRGF0YWJhc2UuaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXHNxbFxTUUxpdGVGaWxlU3lzdGVtLmgi
IC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxzcWxcU1FMaXRlU3RhdGVt
ZW50LmgiIC8+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2Vi
Q29yZS52Y3hwcm9qLmZpbHRlcnMgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2Vi
Q29yZS52Y3hwcm9qLmZpbHRlcnMKaW5kZXggZDA4ZjNkOS4uYTcyOTA2MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVy
cwpAQCAtMTkyMCw2ICsxOTIwLDkgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRm
b3JtXG5ldHdvcmtcY3VybFxTb2NrZXRTdHJlYW1IYW5kbGVDdXJsLmNwcCI+CiAgICAgICA8Rmls
dGVyPnBsYXRmb3JtXG5ldHdvcmtcY3VybDwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgorICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cbmV0d29ya1xjdXJsXFNTTEhhbmRsZS5j
cHAiPgorICAgICAgPEZpbHRlcj5wbGF0Zm9ybVxuZXR3b3JrXGN1cmw8L0ZpbHRlcj4KKyAgICA8
L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXHNxbFxTUUxp
dGVBdXRob3JpemVyLmNwcCI+CiAgICAgICA8RmlsdGVyPnBsYXRmb3JtXHNxbDwvRmlsdGVyPgog
ICAgIDwvQ2xDb21waWxlPgpAQCAtMTUwNjUsNiArMTUwNjgsOSBAQAogICAgIDxDdXN0b21CdWls
ZFN0ZXAgSW5jbHVkZT0iLi5ccGxhdGZvcm1cbmV0d29ya1xjdXJsXFJlc291cmNlUmVzcG9uc2Uu
aCI+CiAgICAgICA8RmlsdGVyPnBsYXRmb3JtXG5ldHdvcmtcY3VybDwvRmlsdGVyPgogICAgIDwv
Q3VzdG9tQnVpbGRTdGVwPgorICAgIDxDdXN0b21CdWlsZFN0ZXAgSW5jbHVkZT0iLi5ccGxhdGZv
cm1cbmV0d29ya1xjdXJsXFNTTEhhbmRsZS5oIj4KKyAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cbmV0
d29ya1xjdXJsPC9GaWx0ZXI+CisgICAgPC9DdXN0b21CdWlsZFN0ZXA+CiAgICAgPEN1c3RvbUJ1
aWxkU3RlcCBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxpbWFnZS1kZWNvZGVyc1xnaWZcR0lGSW1hZ2VE
ZWNvZGVyLmgiPgogICAgICAgPEZpbHRlcj5wbGF0Zm9ybVxpbWFnZS1kZWNvZGVyc1xnaWY8L0Zp
bHRlcj4KICAgICA8L0N1c3RvbUJ1aWxkU3RlcD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaAppbmRleCAwMjk0NWUxLi4xZDliNmU2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCkBA
IC0xMzgsNyArMTM4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIHNldENsaWVudENlcnRp
ZmljYXRlKGNvbnN0IFN0cmluZyYgaG9zdCwgQ0ZEYXRhUmVmKTsKICNlbmRpZgogCi0jaWYgUExB
VEZPUk0oV0lOKSAmJiBVU0UoQ1VSTCkKKyNpZiAoUExBVEZPUk0oV0lOKSB8fCBQTEFURk9STShO
SVgpKSAmJiBVU0UoQ1VSTCkKICAgICBzdGF0aWMgdm9pZCBzZXRIb3N0QWxsb3dzQW55SFRUUFND
ZXJ0aWZpY2F0ZShjb25zdCBTdHJpbmcmKTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKFdJTikgJiYg
VVNFKENVUkwpICYmIFVTRShDRikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmgKaW5kZXggOWI4YTg5YS4uNjBmYjY3
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhh
bmRsZUludGVybmFsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZUhhbmRsZUludGVybmFsLmgKQEAgLTEwMSw2ICsxMDEsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgICAgICAsIG1fY2FuY2VsbGVkKGZhbHNlKQogICAgICAgICAgICAgLCBtX2F1
dGhGYWlsdXJlQ291bnQoMCkKICAgICAgICAgICAgICwgbV9mb3JtRGF0YVN0cmVhbShsb2FkZXIp
CisgICAgICAgICAgICAsIG1fc3NsRXJyb3JzKDApCiAjZW5kaWYKICNpZiBVU0UoU09VUCkKICAg
ICAgICAgICAgICwgbV9jYW5jZWxsZWQoZmFsc2UpCkBAIC0xNzgsNiArMTc5LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICB1bnNpZ25lZCBzaG9ydCBtX2F1dGhGYWlsdXJlQ291bnQ7
CiAKICAgICAgICAgRm9ybURhdGFTdHJlYW0gbV9mb3JtRGF0YVN0cmVhbTsKKyAgICAgICAgdW5z
aWduZWQgbV9zc2xFcnJvcnM7CiAgICAgICAgIFZlY3RvcjxjaGFyPiBtX3Bvc3RCeXRlczsKIAog
ICAgICAgICBPd25QdHI8TXVsdGlwYXJ0SGFuZGxlPiBtX211bHRpcGFydEhhbmRsZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUVycm9y
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VFcnJvci5o
CmluZGV4IGNhOGQzNmIuLjc1NTVmNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUVycm9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlRXJyb3IuaApAQCAtMzMsMTQgKzMzLDIwIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlc291cmNlRXJyb3IgOiBwdWJsaWMgUmVzb3VyY2VF
cnJvckJhc2UKIHsKIHB1YmxpYzoKLSAgICBSZXNvdXJjZUVycm9yKCkKKyAgICBSZXNvdXJjZUVy
cm9yKCkgOiBtX3NzbEVycm9ycygwKQogICAgIHsKICAgICB9CiAKICAgICBSZXNvdXJjZUVycm9y
KGNvbnN0IFN0cmluZyYgZG9tYWluLCBpbnQgZXJyb3JDb2RlLCBjb25zdCBTdHJpbmcmIGZhaWxp
bmdVUkwsIGNvbnN0IFN0cmluZyYgbG9jYWxpemVkRGVzY3JpcHRpb24pCi0gICAgICAgIDogUmVz
b3VyY2VFcnJvckJhc2UoZG9tYWluLCBlcnJvckNvZGUsIGZhaWxpbmdVUkwsIGxvY2FsaXplZERl
c2NyaXB0aW9uKQorICAgICAgICA6IFJlc291cmNlRXJyb3JCYXNlKGRvbWFpbiwgZXJyb3JDb2Rl
LCBmYWlsaW5nVVJMLCBsb2NhbGl6ZWREZXNjcmlwdGlvbiksIG1fc3NsRXJyb3JzKDApCiAgICAg
ewogICAgIH0KKworICAgIHVuc2lnbmVkIHNzbEVycm9ycygpIGNvbnN0IHsgcmV0dXJuIG1fc3Ns
RXJyb3JzOyB9CisgICAgdm9pZCBzZXRTU0xFcnJvcnModW5zaWduZWQgc3NsVmVyaWZ5UmVzdWx0
KSB7IG1fc3NsRXJyb3JzID0gc3NsVmVyaWZ5UmVzdWx0OyB9CisKK3ByaXZhdGU6CisgICAgdW5z
aWduZWQgbV9zc2xFcnJvcnM7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCmluZGV4IDUz
YTAwZjMuLmQ3OTIzNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCkBAIC0zNCw2ICszNCw3IEBA
CiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZUlu
dGVybmFsLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVNYW5hZ2VyLmgiCisjaW5jbHVkZSAi
U1NMSGFuZGxlLmgiCiAKICNpZiBQTEFURk9STShXSU4pICYmIFVTRShDRikKICNpbmNsdWRlIDx3
dGYvUGFzc1JlZlB0ci5oPgpAQCAtMTE1LDE5ICsxMTYsMTEgQEAgdm9pZCBSZXNvdXJjZUhhbmRs
ZTo6Y2FuY2VsKCkKICAgICBSZXNvdXJjZUhhbmRsZU1hbmFnZXI6OnNoYXJlZEluc3RhbmNlKCkt
PmNhbmNlbCh0aGlzKTsKIH0KIAotI2lmIFBMQVRGT1JNKFdJTikgJiYgVVNFKENGKQotc3RhdGlj
IEhhc2hTZXQ8U3RyaW5nPiYgYWxsb3dzQW55SFRUUFNDZXJ0aWZpY2F0ZUhvc3RzKCkKLXsKLSAg
ICBzdGF0aWMgSGFzaFNldDxTdHJpbmc+IGhvc3RzOwotCi0gICAgcmV0dXJuIGhvc3RzOwotfQot
CiB2b2lkIFJlc291cmNlSGFuZGxlOjpzZXRIb3N0QWxsb3dzQW55SFRUUFNDZXJ0aWZpY2F0ZShj
b25zdCBTdHJpbmcmIGhvc3QpCiB7Ci0gICAgYWxsb3dzQW55SFRUUFNDZXJ0aWZpY2F0ZUhvc3Rz
KCkuYWRkKGhvc3QubG93ZXIoKSk7CisgICAgYWxsb3dzQW55SFRUUFNDZXJ0aWZpY2F0ZUhvc3Rz
KGhvc3QubG93ZXIoKSk7CiB9Ci0jZW5kaWYKKwogCiAjaWYgUExBVEZPUk0oV0lOKSAmJiBVU0Uo
Q0YpCiAvLyBGSVhNRTogIFRoZSBDRkRhdGFSZWYgd2lsbCBuZWVkIHRvIGJlIHNvbWV0aGluZyBl
bHNlIHdoZW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9SZXNvdXJjZUhhbmRsZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL1Jlc291cmNlSGFuZGxlTWFuYWdlci5jcHAKaW5kZXggMGJmMjQxNy4uNzk4Y2U3
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291
cmNlSGFuZGxlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL1Jlc291cmNlSGFuZGxlTWFuYWdlci5jcHAKQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNs
dWRlICJSZXNvdXJjZUVycm9yLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNs
dWRlICJSZXNvdXJjZUhhbmRsZUludGVybmFsLmgiCisjaW5jbHVkZSAiU1NMSGFuZGxlLmgiCiAK
ICNpZiBPUyhXSU5ET1dTKQogI2luY2x1ZGUgIldlYkNvcmVCdW5kbGVXaW4uaCIKQEAgLTYxMyw4
ICs2MTQsMTEgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZU1hbmFnZXI6OmRvd25sb2FkVGltZXJDYWxs
YmFjayhUaW1lcjxSZXNvdXJjZUhhbmRsZU1hbmFnZXI+KgogI2lmbmRlZiBOREVCVUcKICAgICAg
ICAgICAgIGZwcmludGYoc3RkZXJyLCAiQ3VybCBFUlJPUiBmb3IgdXJsPSclcycsIGVycm9yOiAn
JXMnXG4iLCB1cmwsIGN1cmxfZWFzeV9zdHJlcnJvcihtc2ctPmRhdGEucmVzdWx0KSk7CiAjZW5k
aWYKLSAgICAgICAgICAgIGlmIChkLT5jbGllbnQoKSkKLSAgICAgICAgICAgICAgICBkLT5jbGll
bnQoKS0+ZGlkRmFpbChqb2IsIFJlc291cmNlRXJyb3IoU3RyaW5nKCksIG1zZy0+ZGF0YS5yZXN1
bHQsIFN0cmluZyh1cmwpLCBTdHJpbmcoY3VybF9lYXN5X3N0cmVycm9yKG1zZy0+ZGF0YS5yZXN1
bHQpKSkpOworICAgICAgICAgICAgaWYgKGQtPmNsaWVudCgpKSB7CisgICAgICAgICAgICAgICAg
UmVzb3VyY2VFcnJvciByZXNvdXJjZUVycm9yKFN0cmluZygpLCBtc2ctPmRhdGEucmVzdWx0LCBT
dHJpbmcodXJsKSwgU3RyaW5nKGN1cmxfZWFzeV9zdHJlcnJvcihtc2ctPmRhdGEucmVzdWx0KSk7
CisgICAgICAgICAgICAgICAgcmVzb3VyY2VFcnJvci5zZXRTU0xFcnJvcnMoZC0+bV9zc2xFcnJv
cnMpOworICAgICAgICAgICAgICAgIGQtPmNsaWVudCgpLT5kaWRGYWlsKGpvYiwgcmVzb3VyY2VF
cnJvcik7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KIAogICAgICAgICByZW1vdmVGcm9tQ3Vy
bChqb2IpOwpAQCAtOTMxLDYgKzkzNSw4IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGVNYW5hZ2VyOjpp
bml0aWFsaXplSGFuZGxlKFJlc291cmNlSGFuZGxlKiBqb2IpCiAgICAgaWYgKGdldGVudigiREVC
VUdfQ1VSTCIpKQogICAgICAgICBjdXJsX2Vhc3lfc2V0b3B0KGQtPm1faGFuZGxlLCBDVVJMT1BU
X1ZFUkJPU0UsIDEpOwogI2VuZGlmCisgICAgY3VybF9lYXN5X3NldG9wdChkLT5tX2hhbmRsZSwg
Q1VSTE9QVF9TU0xfVkVSSUZZUEVFUiwgMUwpOworICAgIGN1cmxfZWFzeV9zZXRvcHQoZC0+bV9o
YW5kbGUsIENVUkxPUFRfU1NMX1ZFUklGWUhPU1QsIDJMKTsKICAgICBjdXJsX2Vhc3lfc2V0b3B0
KGQtPm1faGFuZGxlLCBDVVJMT1BUX1BSSVZBVEUsIGpvYik7CiAgICAgY3VybF9lYXN5X3NldG9w
dChkLT5tX2hhbmRsZSwgQ1VSTE9QVF9FUlJPUkJVRkZFUiwgbV9jdXJsRXJyb3JCdWZmZXIpOwog
ICAgIGN1cmxfZWFzeV9zZXRvcHQoZC0+bV9oYW5kbGUsIENVUkxPUFRfV1JJVEVGVU5DVElPTiwg
d3JpdGVDYWxsYmFjayk7CkBAIC05NDUsMTAgKzk1MSwxMSBAQCB2b2lkIFJlc291cmNlSGFuZGxl
TWFuYWdlcjo6aW5pdGlhbGl6ZUhhbmRsZShSZXNvdXJjZUhhbmRsZSogam9iKQogICAgIGN1cmxf
ZWFzeV9zZXRvcHQoZC0+bV9oYW5kbGUsIENVUkxPUFRfRE5TX0NBQ0hFX1RJTUVPVVQsIDYwICog
NSk7IC8vIDUgbWludXRlcwogICAgIGN1cmxfZWFzeV9zZXRvcHQoZC0+bV9oYW5kbGUsIENVUkxP
UFRfUFJPVE9DT0xTLCBhbGxvd2VkUHJvdG9jb2xzKTsKICAgICBjdXJsX2Vhc3lfc2V0b3B0KGQt
Pm1faGFuZGxlLCBDVVJMT1BUX1JFRElSX1BST1RPQ09MUywgYWxsb3dlZFByb3RvY29scyk7Ci0g
ICAgLy8gRklYTUU6IEVuYWJsZSBTU0wgdmVyaWZpY2F0aW9uIHdoZW4gd2UgaGF2ZSBhIHdheSBv
ZiBzaGlwcGluZyBjZXJ0cwotICAgIC8vIGFuZC9vciByZXBvcnRpbmcgU1NMIGVycm9ycyB0byB0
aGUgdXNlci4KKwogICAgIGlmIChpZ25vcmVTU0xFcnJvcnMpCiAgICAgICAgIGN1cmxfZWFzeV9z
ZXRvcHQoZC0+bV9oYW5kbGUsIENVUkxPUFRfU1NMX1ZFUklGWVBFRVIsIGZhbHNlKTsKKyAgICBl
bHNlCisgICAgICAgIHNldFNTTFZlcmlmeU9wdGlvbnMoam9iKTsKIAogICAgIGlmICghbV9jZXJ0
aWZpY2F0ZVBhdGguaXNOdWxsKCkpCiAgICAgICAgY3VybF9lYXN5X3NldG9wdChkLT5tX2hhbmRs
ZSwgQ1VSTE9QVF9DQUlORk8sIG1fY2VydGlmaWNhdGVQYXRoLmRhdGEoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU1NMSGFuZGxlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9TU0xIYW5kbGUuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ0YTVhM2EKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU1NMSGFuZGxlLmNwcApAQCAtMCww
ICsxLDE5MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBVbml2ZXJzaXR5IG9mIFN6ZWdl
ZAorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVU5JVkVSU0lU
WSBPRiBTWkVHRUQgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIlNTTEhhbmRsZS5oIgor
CisjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oIgorCisjaW5jbHVkZSA8b3BlbnNz
bC9wZW0uaD4KKyNpbmNsdWRlIDxvcGVuc3NsL3NzbC5oPgorI2luY2x1ZGUgPG9wZW5zc2wveDUw
OV92ZnkuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgSGFzaE1hcDxTdHJpbmcs
IFN0cmluZz4gYWxsb3dlZEhvc3RzOworCit2b2lkIGFsbG93c0FueUhUVFBTQ2VydGlmaWNhdGVI
b3N0cyhjb25zdCBTdHJpbmcmIGhvc3QpCit7CisgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz46
Oml0ZXJhdG9yIGl0ID0gYWxsb3dlZEhvc3RzLmZpbmQoaG9zdCk7CisgICAgaWYgKGl0ICE9IGFs
bG93ZWRIb3N0cy5lbmQoKSkKKyAgICAgICAgaXQtPnZhbHVlID0gU3RyaW5nKCk7CisgICAgZWxz
ZQorICAgICAgICBhbGxvd2VkSG9zdHMuYWRkKGhvc3QsIFN0cmluZygpKTsKK30KKworYm9vbCBz
c2xJZ25vcmVIVFRQU0NlcnRpZmljYXRlKGNvbnN0IFN0cmluZyYgaG9zdCwgY29uc3QgU3RyaW5n
JiBjZXJ0KQoreworICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+OjppdGVyYXRvciBpdCA9IGFs
bG93ZWRIb3N0cy5maW5kKGhvc3QpOworICAgIGlmIChpdCAhPSBhbGxvd2VkSG9zdHMuZW5kKCkp
IHsKKyAgICAgICAgaWYgKChpdC0+dmFsdWUpLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgaXQt
PnZhbHVlID0gY2VydDsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAg
ICAgIGlmIChpdC0+dmFsdWUgPT0gY2VydCkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3Vuc2lnbmVkIHNzbENlcnRpZmljYXRlRmxhZyhj
b25zdCB1bnNpZ25lZCYgc3NsRXJyb3IpCit7CisgICAgc3dpdGNoIChzc2xFcnJvcikgeworICAg
IGNhc2UgWDUwOV9WX0VSUl9VTkFCTEVfVE9fR0VUX0lTU1VFUl9DRVJUIDogLy8gdGhlIGlzc3Vl
ciBjZXJ0aWZpY2F0ZSBjb3VsZCBub3QgYmUgZm91bmQ6IHRoaXMgb2NjdXJzIGlmIHRoZSBpc3N1
ZXIgY2VydGlmaWNhdGUgb2YgYW4gdW50cnVzdGVkIGNlcnRpZmljYXRlIGNhbm5vdCBiZSBmb3Vu
ZC4KKyAgICBjYXNlIFg1MDlfVl9FUlJfVU5BQkxFX1RPX0dFVF9DUkwgOiAvLyB0aGUgQ1JMIG9m
IGEgY2VydGlmaWNhdGUgY291bGQgbm90IGJlIGZvdW5kLgorICAgIGNhc2UgWDUwOV9WX0VSUl9V
TkFCTEVfVE9fR0VUX0lTU1VFUl9DRVJUX0xPQ0FMTFkgOiAvLyB0aGUgaXNzdWVyIGNlcnRpZmlj
YXRlIG9mIGEgbG9jYWxseSBsb29rZWQgdXAgY2VydGlmaWNhdGUgY291bGQgbm90IGJlIGZvdW5k
LiBUaGlzIG5vcm1hbGx5IG1lYW5zIHRoZSBsaXN0IG9mIHRydXN0ZWQgY2VydGlmaWNhdGVzIGlz
IG5vdCBjb21wbGV0ZS4KKyAgICAgICAgcmV0dXJuIFNTTF9DRVJUSUZJQ0FURV9VTktOT1dOX0NB
OworICAgIGNhc2UgWDUwOV9WX0VSUl9VTkFCTEVfVE9fREVDUllQVF9DRVJUX1NJR05BVFVSRSA6
IC8vIHRoZSBjZXJ0aWZpY2F0ZSBzaWduYXR1cmUgY291bGQgbm90IGJlIGRlY3J5cHRlZC4gVGhp
cyBtZWFucyB0aGF0IHRoZSBhY3R1YWwgc2lnbmF0dXJlIHZhbHVlIGNvdWxkIG5vdCBiZSBkZXRl
cm1pbmVkIHJhdGhlciB0aGFuIGl0IG5vdCBtYXRjaGluZyB0aGUgZXhwZWN0ZWQgdmFsdWUsIHRo
aXMgaXMgb25seSBtZWFuaW5nZnVsIGZvciBSU0Ega2V5cy4KKyAgICBjYXNlIFg1MDlfVl9FUlJf
VU5BQkxFX1RPX0RFQ1JZUFRfQ1JMX1NJR05BVFVSRSA6IC8vIHRoZSBDUkwgc2lnbmF0dXJlIGNv
dWxkIG5vdCBiZSBkZWNyeXB0ZWQ6IHRoaXMgbWVhbnMgdGhhdCB0aGUgYWN0dWFsIHNpZ25hdHVy
ZSB2YWx1ZSBjb3VsZCBub3QgYmUgZGV0ZXJtaW5lZCByYXRoZXIgdGhhbiBpdCBub3QgbWF0Y2hp
bmcgdGhlIGV4cGVjdGVkIHZhbHVlLiBVbnVzZWQuCisgICAgY2FzZSBYNTA5X1ZfRVJSX1VOQUJM
RV9UT19ERUNPREVfSVNTVUVSX1BVQkxJQ19LRVkgOiAvLyB0aGUgcHVibGljIGtleSBpbiB0aGUg
Y2VydGlmaWNhdGUgU3ViamVjdFB1YmxpY0tleUluZm8gY291bGQgbm90IGJlIHJlYWQuCisgICAg
Y2FzZSBYNTA5X1ZfRVJSX0NFUlRfU0lHTkFUVVJFX0ZBSUxVUkUgOiAvLyB0aGUgc2lnbmF0dXJl
IG9mIHRoZSBjZXJ0aWZpY2F0ZSBpcyBpbnZhbGlkLgorICAgIGNhc2UgWDUwOV9WX0VSUl9ERVBU
SF9aRVJPX1NFTEZfU0lHTkVEX0NFUlQgOiAvLyB0aGUgcGFzc2VkIGNlcnRpZmljYXRlIGlzIHNl
bGYgc2lnbmVkIGFuZCB0aGUgc2FtZSBjZXJ0aWZpY2F0ZSBjYW5ub3QgYmUgZm91bmQgaW4gdGhl
IGxpc3Qgb2YgdHJ1c3RlZCBjZXJ0aWZpY2F0ZXMuCisgICAgY2FzZSBYNTA5X1ZfRVJSX1NFTEZf
U0lHTkVEX0NFUlRfSU5fQ0hBSU4gOiAvLyB0aGUgY2VydGlmaWNhdGUgY2hhaW4gY291bGQgYmUg
YnVpbHQgdXAgdXNpbmcgdGhlIHVudHJ1c3RlZCBjZXJ0aWZpY2F0ZXMgYnV0IHRoZSByb290IGNv
dWxkIG5vdCBiZSBmb3VuZCBsb2NhbGx5LgorICAgIGNhc2UgWDUwOV9WX0VSUl9VTkFCTEVfVE9f
VkVSSUZZX0xFQUZfU0lHTkFUVVJFIDogLy8gbm8gc2lnbmF0dXJlcyBjb3VsZCBiZSB2ZXJpZmll
ZCBiZWNhdXNlIHRoZSBjaGFpbiBjb250YWlucyBvbmx5IG9uZSBjZXJ0aWZpY2F0ZSBhbmQgaXQg
aXMgbm90IHNlbGYgc2lnbmVkLgorICAgIGNhc2UgWDUwOV9WX0VSUl9JTlZBTElEX1BVUlBPU0Ug
OiAvLyB0aGUgc3VwcGxpZWQgY2VydGlmaWNhdGUgY2Fubm90IGJlIHVzZWQgZm9yIHRoZSBzcGVj
aWZpZWQgcHVycG9zZS4KKyAgICBjYXNlIFg1MDlfVl9FUlJfQ0VSVF9VTlRSVVNURUQgOiAvLyB0
aGUgcm9vdCBDQSBpcyBub3QgbWFya2VkIGFzIHRydXN0ZWQgZm9yIHRoZSBzcGVjaWZpZWQgcHVy
cG9zZS4KKyAgICBjYXNlIFg1MDlfVl9FUlJfQ0VSVF9SRUpFQ1RFRCA6IC8vIHRoZSByb290IENB
IGlzIG1hcmtlZCB0byByZWplY3QgdGhlIHNwZWNpZmllZCBwdXJwb3NlLgorICAgIGNhc2UgWDUw
OV9WX0VSUl9OT19FWFBMSUNJVF9QT0xJQ1kgOiAvLyB0aGUgdmVyaWZpY2F0aW9uIGZsYWdzIHdl
cmUgc2V0IHRvIHJlcXVpcmUgYW5kIGV4cGxpY2l0IHBvbGljeSBidXQgbm9uZSB3YXMgcHJlc2Vu
dC4KKyAgICBjYXNlIFg1MDlfVl9FUlJfRElGRkVSRU5UX0NSTF9TQ09QRSA6IC8vIHRoZSBvbmx5
IENSTHMgdGhhdCBjb3VsZCBiZSBmb3VuZCBkaWQgbm90IG1hdGNoIHRoZSBzY29wZSBvZiB0aGUg
Y2VydGlmaWNhdGUuCisgICAgICAgIHJldHVybiBTU0xfQ0VSVElGSUNBVEVfSU5TRUNVUkU7Cisg
ICAgY2FzZSBYNTA5X1ZfRVJSX0NFUlRfTk9UX1lFVF9WQUxJRCA6IC8vIHRoZSBjZXJ0aWZpY2F0
ZSBpcyBub3QgeWV0IHZhbGlkOiB0aGUgbm90QmVmb3JlIGRhdGUgaXMgYWZ0ZXIgdGhlIGN1cnJl
bnQgdGltZS4KKyAgICBjYXNlIFg1MDlfVl9FUlJfQ1JMX05PVF9ZRVRfVkFMSUQgOiAvLyB0aGUg
Q1JMIGlzIG5vdCB5ZXQgdmFsaWQuCisgICAgICAgIHJldHVybiBTU0xfQ0VSVElGSUNBVEVfTk9U
X0FDVElWQVRFRDsKKyAgICBjYXNlIFg1MDlfVl9FUlJfQ0VSVF9IQVNfRVhQSVJFRCA6IC8vIHRo
ZSBjZXJ0aWZpY2F0ZSBoYXMgZXhwaXJlZDogdGhhdCBpcyB0aGUgbm90QWZ0ZXIgZGF0ZSBpcyBi
ZWZvcmUgdGhlIGN1cnJlbnQgdGltZS4KKyAgICBjYXNlIFg1MDlfVl9FUlJfQ1JMX0hBU19FWFBJ
UkVEIDogLy8gdGhlIENSTCBoYXMgZXhwaXJlZC4KKyAgICAgICAgcmV0dXJuIFNTTF9DRVJUSUZJ
Q0FURV9FWFBJUkVEOworICAgIGNhc2UgWDUwOV9WX0VSUl9FUlJPUl9JTl9DRVJUX05PVF9CRUZP
UkVfRklFTEQgOiAvLyB0aGUgY2VydGlmaWNhdGUgbm90QmVmb3JlIGZpZWxkIGNvbnRhaW5zIGFu
IGludmFsaWQgdGltZS4KKyAgICBjYXNlIFg1MDlfVl9FUlJfRVJST1JfSU5fQ0VSVF9OT1RfQUZU
RVJfRklFTEQgOiAvLyB0aGUgY2VydGlmaWNhdGUgbm90QWZ0ZXIgZmllbGQgY29udGFpbnMgYW4g
aW52YWxpZCB0aW1lLgorICAgIGNhc2UgWDUwOV9WX0VSUl9FUlJPUl9JTl9DUkxfTEFTVF9VUERB
VEVfRklFTEQgOiAvLyB0aGUgQ1JMIGxhc3RVcGRhdGUgZmllbGQgY29udGFpbnMgYW4gaW52YWxp
ZCB0aW1lLgorICAgIGNhc2UgWDUwOV9WX0VSUl9FUlJPUl9JTl9DUkxfTkVYVF9VUERBVEVfRklF
TEQgOiAvLyB0aGUgQ1JMIG5leHRVcGRhdGUgZmllbGQgY29udGFpbnMgYW4gaW52YWxpZCB0aW1l
LgorICAgIGNhc2UgWDUwOV9WX0VSUl9PVVRfT0ZfTUVNIDogLy8gYW4gZXJyb3Igb2NjdXJyZWQg
dHJ5aW5nIHRvIGFsbG9jYXRlIG1lbW9yeS4gVGhpcyBzaG91bGQgbmV2ZXIgaGFwcGVuLgorICAg
IGNhc2UgWDUwOV9WX0VSUl9DRVJUX0NIQUlOX1RPT19MT05HIDogLy8gdGhlIGNlcnRpZmljYXRl
IGNoYWluIGxlbmd0aCBpcyBncmVhdGVyIHRoYW4gdGhlIHN1cHBsaWVkIG1heGltdW0gZGVwdGgu
IFVudXNlZC4KKyAgICBjYXNlIFg1MDlfVl9FUlJfUEFUSF9MRU5HVEhfRVhDRUVERUQgOiAvLyB0
aGUgYmFzaWNDb25zdHJhaW50cyBwYXRobGVuZ3RoIHBhcmFtZXRlciBoYXMgYmVlbiBleGNlZWRl
ZC4KKyAgICBjYXNlIFg1MDlfVl9FUlJfSU5WQUxJRF9FWFRFTlNJT04gOiAvLyBhIGNlcnRpZmlj
YXRlIGV4dGVuc2lvbiBoYWQgYW4gaW52YWxpZCB2YWx1ZSAoZm9yIGV4YW1wbGUgYW4gaW5jb3Jy
ZWN0IGVuY29kaW5nKSBvciBzb21lIHZhbHVlIGluY29uc2lzdGVudCB3aXRoIG90aGVyIGV4dGVu
c2lvbnMuCisgICAgY2FzZSBYNTA5X1ZfRVJSX0lOVkFMSURfUE9MSUNZX0VYVEVOU0lPTiA6IC8v
IGEgY2VydGlmaWNhdGUgcG9saWNpZXMgZXh0ZW5zaW9uIGhhZCBhbiBpbnZhbGlkIHZhbHVlIChm
b3IgZXhhbXBsZSBhbiBpbmNvcnJlY3QgZW5jb2RpbmcpIG9yIHNvbWUgdmFsdWUgaW5jb25zaXN0
ZW50IHdpdGggb3RoZXIgZXh0ZW5zaW9ucy4gVGhpcyBlcnJvciBvbmx5IG9jY3VycyBpZiBwb2xp
Y3kgcHJvY2Vzc2luZyBpcyBlbmFibGVkLgorICAgIGNhc2UgWDUwOV9WX0VSUl9VTlNVUFBPUlRF
RF9FWFRFTlNJT05fRkVBVFVSRSA6IC8vIHNvbWUgZmVhdHVyZSBvZiBhIGNlcnRpZmljYXRlIGV4
dGVuc2lvbiBpcyBub3Qgc3VwcG9ydGVkLiBVbnVzZWQuCisgICAgY2FzZSBYNTA5X1ZfRVJSX1BF
Uk1JVFRFRF9WSU9MQVRJT04gOiAvLyBhIG5hbWUgY29uc3RyYWludCB2aW9sYXRpb24gb2NjdXJl
ZCBpbiB0aGUgcGVybWl0dGVkIHN1YnRyZWVzLgorICAgIGNhc2UgWDUwOV9WX0VSUl9FWENMVURF
RF9WSU9MQVRJT04gOiAvLyBhIG5hbWUgY29uc3RyYWludCB2aW9sYXRpb24gb2NjdXJlZCBpbiB0
aGUgZXhjbHVkZWQgc3VidHJlZXMuCisgICAgY2FzZSBYNTA5X1ZfRVJSX1NVQlRSRUVfTUlOTUFY
IDogLy8gYSBjZXJ0aWZpY2F0ZSBuYW1lIGNvbnN0cmFpbnRzIGV4dGVuc2lvbiBpbmNsdWRlZCBh
IG1pbmltdW0gb3IgbWF4aW11bSBmaWVsZDogdGhpcyBpcyBub3Qgc3VwcG9ydGVkLgorICAgIGNh
c2UgWDUwOV9WX0VSUl9VTlNVUFBPUlRFRF9DT05TVFJBSU5UX1RZUEUgOiAvLyBhbiB1bnN1cHBv
cnRlZCBuYW1lIGNvbnN0cmFpbnQgdHlwZSB3YXMgZW5jb3VudGVyZWQuIE9wZW5TU0wgY3VycmVu
dGx5IG9ubHkgc3VwcG9ydHMgZGlyZWN0b3J5IG5hbWUsIEROUyBuYW1lLCBlbWFpbCBhbmQgVVJJ
IHR5cGVzLgorICAgIGNhc2UgWDUwOV9WX0VSUl9VTlNVUFBPUlRFRF9DT05TVFJBSU5UX1NZTlRB
WCA6IC8vIHRoZSBmb3JtYXQgb2YgdGhlIG5hbWUgY29uc3RyYWludCBpcyBub3QgcmVjb2duaXNl
ZDogZm9yIGV4YW1wbGUgYW4gZW1haWwgYWRkcmVzcyBmb3JtYXQgb2YgYSBmb3JtIG5vdCBtZW50
aW9uZWQgaW4gUkZDMzI4MC4gVGhpcyBjb3VsZCBiZSBjYXVzZWQgYnkgYSBnYXJiYWdlIGV4dGVu
c2lvbiBvciBzb21lIG5ldyBmZWF0dXJlIG5vdCBjdXJyZW50bHkgc3VwcG9ydGVkLgorICAgIGNh
c2UgWDUwOV9WX0VSUl9DUkxfUEFUSF9WQUxJREFUSU9OX0VSUk9SIDogLy8gYW4gZXJyb3Igb2Nj
dXJlZCB3aGVuIGF0dGVtcHRpbmcgdG8gdmVyaWZ5IHRoZSBDUkwgcGF0aC4gVGhpcyBlcnJvciBj
YW4gb25seSBoYXBwZW4gaWYgZXh0ZW5kZWQgQ1JMIGNoZWNraW5nIGlzIGVuYWJsZWQuCisgICAg
Y2FzZSBYNTA5X1ZfRVJSX0FQUExJQ0FUSU9OX1ZFUklGSUNBVElPTiA6IC8vIGFuIGFwcGxpY2F0
aW9uIHNwZWNpZmljIGVycm9yLiBUaGlzIHdpbGwgbmV2ZXIgYmUgcmV0dXJuZWQgdW5sZXNzIGV4
cGxpY2l0bHkgc2V0IGJ5IGFuIGFwcGxpY2F0aW9uLgorICAgICAgICByZXR1cm4gU1NMX0NFUlRJ
RklDQVRFX0dFTkVSSUNfRVJST1I7CisgICAgY2FzZSBYNTA5X1ZfRVJSX0NFUlRfUkVWT0tFRCA6
IC8vIHRoZSBjZXJ0aWZpY2F0ZSBoYXMgYmVlbiByZXZva2VkLgorICAgICAgICByZXR1cm4gU1NM
X0NFUlRJRklDQVRFX1JFVk9LRUQ7CisgICAgY2FzZSBYNTA5X1ZfRVJSX0lOVkFMSURfQ0EgOiAv
LyBhIENBIGNlcnRpZmljYXRlIGlzIGludmFsaWQuIEVpdGhlciBpdCBpcyBub3QgYSBDQSBvciBp
dHMgZXh0ZW5zaW9ucyBhcmUgbm90IGNvbnNpc3RlbnQgd2l0aCB0aGUgc3VwcGxpZWQgcHVycG9z
ZS4KKyAgICBjYXNlIFg1MDlfVl9FUlJfU1VCSkVDVF9JU1NVRVJfTUlTTUFUQ0ggOiAvLyB0aGUg
Y3VycmVudCBjYW5kaWRhdGUgaXNzdWVyIGNlcnRpZmljYXRlIHdhcyByZWplY3RlZCBiZWNhdXNl
IGl0cyBzdWJqZWN0IG5hbWUgZGlkIG5vdCBtYXRjaCB0aGUgaXNzdWVyIG5hbWUgb2YgdGhlIGN1
cnJlbnQgY2VydGlmaWNhdGUuIFRoaXMgaXMgb25seSBzZXQgaWYgaXNzdWVyIGNoZWNrIGRlYnVn
Z2luZyBpcyBlbmFibGVkIGl0IGlzIHVzZWQgZm9yIHN0YXR1cyBub3RpZmljYXRpb24gYW5kIGlz
IG5vdCBpbiBpdHNlbGYgYW4gZXJyb3IuCisgICAgY2FzZSBYNTA5X1ZfRVJSX0FLSURfU0tJRF9N
SVNNQVRDSCA6IC8vIHRoZSBjdXJyZW50IGNhbmRpZGF0ZSBpc3N1ZXIgY2VydGlmaWNhdGUgd2Fz
IHJlamVjdGVkIGJlY2F1c2UgaXRzIHN1YmplY3Qga2V5IGlkZW50aWZpZXIgd2FzIHByZXNlbnQg
YW5kIGRpZCBub3QgbWF0Y2ggdGhlIGF1dGhvcml0eSBrZXkgaWRlbnRpZmllciBjdXJyZW50IGNl
cnRpZmljYXRlLiBUaGlzIGlzIG9ubHkgc2V0IGlmIGlzc3VlciBjaGVjayBkZWJ1Z2dpbmcgaXMg
ZW5hYmxlZCBpdCBpcyB1c2VkIGZvciBzdGF0dXMgbm90aWZpY2F0aW9uIGFuZCBpcyBub3QgaW4g
aXRzZWxmIGFuIGVycm9yLgorICAgIGNhc2UgWDUwOV9WX0VSUl9BS0lEX0lTU1VFUl9TRVJJQUxf
TUlTTUFUQ0ggOiAvLyB0aGUgY3VycmVudCBjYW5kaWRhdGUgaXNzdWVyIGNlcnRpZmljYXRlIHdh
cyByZWplY3RlZCBiZWNhdXNlIGl0cyBpc3N1ZXIgbmFtZSBhbmQgc2VyaWFsIG51bWJlciB3YXMg
cHJlc2VudCBhbmQgZGlkIG5vdCBtYXRjaCB0aGUgYXV0aG9yaXR5IGtleSBpZGVudGlmaWVyIG9m
IHRoZSBjdXJyZW50IGNlcnRpZmljYXRlLiBUaGlzIGlzIG9ubHkgc2V0IGlmIGlzc3VlciBjaGVj
ayBkZWJ1Z2dpbmcgaXMgZW5hYmxlZCBpdCBpcyB1c2VkIGZvciBzdGF0dXMgbm90aWZpY2F0aW9u
IGFuZCBpcyBub3QgaW4gaXRzZWxmIGFuIGVycm9yLgorICAgIGNhc2UgWDUwOV9WX0VSUl9LRVlV
U0FHRV9OT19DRVJUU0lHTiA6IC8vIHRoZSBjdXJyZW50IGNhbmRpZGF0ZSBpc3N1ZXIgY2VydGlm
aWNhdGUgd2FzIHJlamVjdGVkIGJlY2F1c2UgaXRzIGtleVVzYWdlIGV4dGVuc2lvbiBkb2VzIG5v
dCBwZXJtaXQgY2VydGlmaWNhdGUgc2lnbmluZy4gVGhpcyBpcyBvbmx5IHNldCBpZiBpc3N1ZXIg
Y2hlY2sgZGVidWdnaW5nIGlzIGVuYWJsZWQgaXQgaXMgdXNlZCBmb3Igc3RhdHVzIG5vdGlmaWNh
dGlvbiBhbmQgaXMgbm90IGluIGl0c2VsZiBhbiBlcnJvci4KKyAgICAgICAgcmV0dXJuIFNTTF9D
RVJUSUZJQ0FURV9CQURfSURFTlRJVFk7CisgICAgZGVmYXVsdCA6CisgICAgICAgIHJldHVybiBT
U0xfQ0VSVElGSUNBVEVfR0VORVJJQ19FUlJPUjsKKyAgICB9Cit9CisKKyNpZiAhUExBVEZPUk0o
V0lOKQorLy8gc3VjY2VzcyBvZiBjZXJ0aWZpY2F0ZSBleHRyYWN0aW9uCitib29sIHBlbURhdGEo
WDUwOV9TVE9SRV9DVFgqIGN0eCwgU3RyaW5nJiBjZXJ0aWZpY2F0ZSkKK3sKKyAgICBYNTA5KiBl
cnJDZXJ0ID0gWDUwOV9TVE9SRV9DVFhfZ2V0X2N1cnJlbnRfY2VydChjdHgpOworCisgICAgLy8g
Z2V0IHRoZSBjZXJ0IGluIFBFTSBmb3JtYXQKKyAgICBCSU8qIGJpbyA9IEJJT19uZXcoQklPX3Nf
bWVtKCkpOworCisgICAgaW50IHJlcyA9IFBFTV93cml0ZV9iaW9fWDUwOShiaW8sIGVyckNlcnQp
OworICAgIGlmICghcmVzKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICB1bnNpZ25lZCBj
aGFyICpkYXRhOworICAgIGxvbmcgbGVuID0gQklPX2dldF9tZW1fZGF0YShiaW8sICZkYXRhKTsK
KyAgICBkYXRhW2xlbl0gPSAnXDAnOworICAgIGNlcnRpZmljYXRlID0gZGF0YTsKKyAgICBCSU9f
ZnJlZShiaW8pOworICAgIHJldHVybiB0cnVlOworfQorI2VuZGlmCisKK3N0YXRpYyBpbnQgY2Vy
dFZlcmlmeUNhbGxiYWNrKGludCBvaywgWDUwOV9TVE9SRV9DVFgqIGN0eCkKK3sKKyAgICAvLyB3
aGV0aGVyIHRoZSB2ZXJpZmljYXRpb24gb2YgdGhlIGNlcnRpZmljYXRlIGluIHF1ZXN0aW9uIHdh
cyBwYXNzZWQgKHByZXZlcmlmeV9vaz0xKSBvciBub3QgKHByZXZlcmlmeV9vaz0wKQorCisgICAg
dW5zaWduZWQgZXJyID0gWDUwOV9TVE9SRV9DVFhfZ2V0X2Vycm9yKGN0eCk7CisgICAgaWYgKCFl
cnIpCisgICAgICAgIHJldHVybiAxOworCisgICAgU1NMKiBzc2wgPSByZWludGVycHJldF9jYXN0
PFNTTCo+KFg1MDlfU1RPUkVfQ1RYX2dldF9leF9kYXRhKGN0eCwgU1NMX2dldF9leF9kYXRhX1g1
MDlfU1RPUkVfQ1RYX2lkeCgpKSk7CisgICAgU1NMX0NUWCogc3NsY3R4ID0gU1NMX2dldF9TU0xf
Q1RYKHNzbCk7CisgICAgUmVzb3VyY2VIYW5kbGUqIGpvYiAgPSByZWludGVycHJldF9jYXN0PFJl
c291cmNlSGFuZGxlKj4oU1NMX0NUWF9nZXRfYXBwX2RhdGEoc3NsY3R4KSk7CisgICAgU3RyaW5n
IGhvc3QgPSBqb2ItPmZpcnN0UmVxdWVzdCgpLnVybCgpLmhvc3QoKTsKKyAgICBSZXNvdXJjZUhh
bmRsZUludGVybmFsKiBkID0gam9iLT5nZXRJbnRlcm5hbCgpOworCisgICAgZC0+bV9zc2xFcnJv
cnMgPSBzc2xDZXJ0aWZpY2F0ZUZsYWcoZXJyKTsKKworI2lmIFBMQVRGT1JNKFdJTikKKyAgICBI
YXNoTWFwPFN0cmluZywgU3RyaW5nPjo6aXRlcmF0b3IgaXQgPSBhbGxvd2VkSG9zdHMuZmluZCho
b3N0KTsKKyAgICBvayA9IChpdCAhPSBhbGxvd2VkSG9zdHMuZW5kKCkpOworI2Vsc2UKKyAgICBT
dHJpbmcgY2VydGlmaWNhdGU7CisgICAgaWYgKCFwZW1EYXRhKGN0eCwgY2VydGlmaWNhdGUpKQor
ICAgICAgICByZXR1cm4gMDsKKyAgICBvayA9IHNzbElnbm9yZUhUVFBTQ2VydGlmaWNhdGUoaG9z
dC5sb3dlcigpLCBjZXJ0aWZpY2F0ZSk7CisjZW5kaWYKKworICAgIGlmIChvaykgeworICAgICAg
ICAvLyBpZiB0aGUgaG9zdCBhbmQgdGhlIGNlcnRpZmljYXRlIGFyZSBzdG9yZWQgZm9yIHRoZSBj
dXJyZW50IGhhbmRsZSB0aGF0IG1lYW5zIGlzIGVuYWJsZWQsCisgICAgICAgIC8vIHNvIGRvbid0
IG5lZWQgdG8gY3VybCB2ZXJpZmllcyB0aGUgYXV0aGVudGljaXR5IG9mIHRoZSBwZWVyJ3MgY2Vy
dGlmaWNhdGUKKyAgICAgICAgY3VybF9lYXN5X3NldG9wdChkLT5tX2hhbmRsZSwgQ1VSTE9QVF9T
U0xfVkVSSUZZUEVFUiwgZmFsc2UpOworICAgIH0KKyAgICByZXR1cm4gb2s7Cit9CisKK3N0YXRp
YyBDVVJMY29kZSBzc2xjdHhmdW4oQ1VSTCogY3VybCwgdm9pZCogc3NsY3R4LCB2b2lkKiBwYXJt
KQoreworICAgIFNTTF9DVFhfc2V0X2FwcF9kYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8U1NMX0NUWCo+
KHNzbGN0eCksIHBhcm0pOworICAgIFNTTF9DVFhfc2V0X3ZlcmlmeShyZWludGVycHJldF9jYXN0
PFNTTF9DVFgqPihzc2xjdHgpLCBTU0xfVkVSSUZZX1BFRVIsIGNlcnRWZXJpZnlDYWxsYmFjayk7
CisgICAgcmV0dXJuIENVUkxFX09LOworfQorCit2b2lkIHNldFNTTFZlcmlmeU9wdGlvbnMoUmVz
b3VyY2VIYW5kbGUqIGhhbmRsZSkKK3sKKyAgICBSZXNvdXJjZUhhbmRsZUludGVybmFsKiBkID0g
aGFuZGxlLT5nZXRJbnRlcm5hbCgpOworICAgIGN1cmxfZWFzeV9zZXRvcHQoZC0+bV9oYW5kbGUs
IENVUkxPUFRfU1NMX0NUWF9EQVRBLCBoYW5kbGUpOworICAgIGN1cmxfZWFzeV9zZXRvcHQoZC0+
bV9oYW5kbGUsIENVUkxPUFRfU1NMX0NUWF9GVU5DVElPTiwgc3NsY3R4ZnVuKTsKK30KKworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NTTEhhbmRs
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NTTEhhbmRsZS5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZlODdjNDMKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU1NMSGFuZGxlLmgKQEAg
LTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBVbml2ZXJzaXR5IG9mIFN6
ZWdlZAorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVU5JVkVS
U0lUWSBPRiBTWkVHRUQgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBD
T01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgU1NMSGFuZGxlX2gKKyNkZWZpbmUgU1NMSGFuZGxlX2gKKwor
I2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCisKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit0eXBlZGVmIGVudW0geworICAgIFNTTF9D
RVJUSUZJQ0FURV9VTktOT1dOX0NBICAgID0gKDEgPDwgMCksIC8vIFRoZSBzaWduaW5nIGNlcnRp
ZmljYXRlIGF1dGhvcml0eSBpcyBub3Qga25vd24uCisgICAgU1NMX0NFUlRJRklDQVRFX0JBRF9J
REVOVElUWSAgPSAoMSA8PCAxKSwgLy8gVGhlIGNlcnRpZmljYXRlIGRvZXMgbm90IG1hdGNoIHRo
ZSBleHBlY3RlZCBpZGVudGl0eSBvZiB0aGUgc2l0ZSB0aGF0IGl0IHdhcyByZXRyaWV2ZWQgZnJv
bS4KKyAgICBTU0xfQ0VSVElGSUNBVEVfTk9UX0FDVElWQVRFRCA9ICgxIDw8IDIpLCAvLyBUaGUg
Y2VydGlmaWNhdGUncyBhY3RpdmF0aW9uIHRpbWUgaXMgc3RpbGwgaW4gdGhlIGZ1dHVyZQorICAg
IFNTTF9DRVJUSUZJQ0FURV9FWFBJUkVEICAgICAgID0gKDEgPDwgMyksIC8vIFRoZSBjZXJ0aWZp
Y2F0ZSBoYXMgZXhwaXJlZAorICAgIFNTTF9DRVJUSUZJQ0FURV9SRVZPS0VEICAgICAgID0gKDEg
PDwgNCksIC8vIFRoZSBjZXJ0aWZpY2F0ZSBoYXMgYmVlbiByZXZva2VkCisgICAgU1NMX0NFUlRJ
RklDQVRFX0lOU0VDVVJFICAgICAgPSAoMSA8PCA1KSwgLy8gVGhlIGNlcnRpZmljYXRlJ3MgYWxn
b3JpdGhtIGlzIGNvbnNpZGVyZWQgaW5zZWN1cmUuCisgICAgU1NMX0NFUlRJRklDQVRFX0dFTkVS
SUNfRVJST1IgPSAoMSA8PCA2KSAvLyBTb21lIG90aGVyIGVycm9yIG9jY3VycmVkIHZhbGlkYXRp
bmcgdGhlIGNlcnRpZmljYXRlCit9IFNTTENlcnRpZmljYXRlRmxhZ3M7CisKKwordm9pZCBhbGxv
d3NBbnlIVFRQU0NlcnRpZmljYXRlSG9zdHMoY29uc3QgU3RyaW5nJik7Citib29sIHNzbElnbm9y
ZUhUVFBTQ2VydGlmaWNhdGUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJik7Cit2b2lkIHNl
dFNTTFZlcmlmeU9wdGlvbnMoUmVzb3VyY2VIYW5kbGUqKTsKKworfQorCisjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>217023</attachid>
            <date>2013-11-15 01:27:13 -0800</date>
            <delta_ts>2013-11-20 08:01:46 -0800</delta_ts>
            <desc>proposed patch</desc>
            <filename>general.patch</filename>
            <type>text/plain</type>
            <size>26443</size>
            <attacher>sipka</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBiNGMzM2I5Li5hYzhhOWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYg
QEAKKzIwMTMtMTEtMTQgIFJvYmVydCBTaXBrYSAgPHNpcGthQGluZi51LXN6ZWdlZC5odT4KKwor
ICAgICAgICBbY3VybF0gSW1wcm92ZSBkZXRlY3RpbmcgYW5kIGhhbmRsaW5nIG9mIFNTTCByZWxh
dGVkIGVycm9ycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTE5NDM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgU2V0IHRoZSBleGFjdCBTU0wgdmVyaWZpY2F0aW9uIGVycm9yIG9uIENVUkwKKyAgICAgICAg
YW5kIHN0b3JlIHRoZSBlbmFibGVkIGRvbWFpbiB3aXRoIGNlcnRpZmljYXRlLgorCisgICAgICAg
ICogV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnZj
eHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZUhhbmRsZS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VI
YW5kbGVJbnRlcm5hbC5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVJbnRlcm5h
bDo6UmVzb3VyY2VIYW5kbGVJbnRlcm5hbCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9j
dXJsL1Jlc291cmNlRXJyb3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlRXJyb3I6OlJl
c291cmNlRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VFcnJvcjo6c3NsRXJyb3Jz
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlRXJyb3I6OnNldFNTTEVycm9ycyk6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6c2V0SG9zdEFsbG93c0FueUhUVFBTQ2VydGlm
aWNhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZU1h
bmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVNYW5hZ2VyOjpkb3du
bG9hZFRpbWVyQ2FsbGJhY2spOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9TU0xI
YW5kbGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmFsbG93c0FueUhUVFBTQ2VydGlm
aWNhdGVIb3N0cyk6CisgICAgICAgIChXZWJDb3JlOjpzc2xJZ25vcmVIVFRQU0NlcnRpZmljYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OnNzbENlcnRpZmljYXRlRmxhZyk6CisgICAgICAgIChXZWJD
b3JlOjpwZW1EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OmNlcnRWZXJpZnlDYWxsYmFjayk6Cisg
ICAgICAgIChXZWJDb3JlOjpzc2xjdHhmdW4pOgorICAgICAgICAoV2ViQ29yZTo6c2V0U1NMVmVy
aWZ5T3B0aW9ucyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL1NTTEhhbmRsZS5o
OiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3Vy
Y2VFcnJvci5oLgorCiAyMDEzLTExLTE0ICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ft
c3VuZy5jb20+CiAKICAgICAgICAgSW50cm9kdWNlIEZJTFRFUl9UWVBFX0NBU1RTIGZvciBjaGls
ZCBmaWx0ZXIgY2xhc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJv
ai9XZWJDb3JlLnZjeHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29y
ZS52Y3hwcm9qCmluZGV4IDE3NTQ3YzkuLjMyM2ZlNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagpAQCAtODM5Miw2ICs4MzkyLDE2IEBACiAg
ICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAg
ICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAg
IDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cbmV0d29y
a1xjdXJsXFNTTEhhbmRsZS5jcHAiPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj50cnVlPC9F
eGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPnRydWU8L0V4Y2x1ZGVk
RnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdTdWZmaXh8V2luMzInIj50cnVlPC9FeGNsdWRl
ZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnU3VmZml4fHg2NCciPnRydWU8L0V4Y2x1ZGVk
RnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJv
bUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWls
ZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWls
ZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+
CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxz
cWxcU1FMaXRlQXV0aG9yaXplci5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxw
bGF0Zm9ybVxzcWxcU1FMaXRlRGF0YWJhc2UuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5ccGxhdGZvcm1cc3FsXFNRTGl0ZUZpbGVTeXN0ZW0uY3BwIiAvPgpAQCAtMTk1MDYsNiAr
MTk1MTYsMTYgQEAKICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzInIj50cnVlPC9FeGNsdWRl
ZEZyb21CdWlsZD4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+dHJ1ZTwvRXhjbHVkZWRG
cm9tQnVpbGQ+CiAgICAgPC9DdXN0b21CdWlsZFN0ZXA+CisgICAgPEN1c3RvbUJ1aWxkU3RlcCBJ
bmNsdWRlPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXGN1cmxcU1NMSGFuZGxlLmgiPgorICAgICAgPEV4
Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nRGVidWd8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRl
ZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0Rl
YnVnfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1
aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdTdWZm
aXh8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21C
dWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnU3Vm
Zml4fHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1
aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxX
aW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxk
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQn
Ij50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzIn
Ij50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+
dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgPC9DdXN0b21CdWlsZFN0ZXA+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxzcWxcU1FMaXRlRGF0YWJhc2UuaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXHNxbFxTUUxpdGVGaWxlU3lzdGVtLmgi
IC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxzcWxcU1FMaXRlU3RhdGVt
ZW50LmgiIC8+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2Vi
Q29yZS52Y3hwcm9qLmZpbHRlcnMgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2Vi
Q29yZS52Y3hwcm9qLmZpbHRlcnMKaW5kZXggZDA4ZjNkOS4uYTcyOTA2MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVy
cwpAQCAtMTkyMCw2ICsxOTIwLDkgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRm
b3JtXG5ldHdvcmtcY3VybFxTb2NrZXRTdHJlYW1IYW5kbGVDdXJsLmNwcCI+CiAgICAgICA8Rmls
dGVyPnBsYXRmb3JtXG5ldHdvcmtcY3VybDwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgorICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cbmV0d29ya1xjdXJsXFNTTEhhbmRsZS5j
cHAiPgorICAgICAgPEZpbHRlcj5wbGF0Zm9ybVxuZXR3b3JrXGN1cmw8L0ZpbHRlcj4KKyAgICA8
L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXHNxbFxTUUxp
dGVBdXRob3JpemVyLmNwcCI+CiAgICAgICA8RmlsdGVyPnBsYXRmb3JtXHNxbDwvRmlsdGVyPgog
ICAgIDwvQ2xDb21waWxlPgpAQCAtMTUwNjUsNiArMTUwNjgsOSBAQAogICAgIDxDdXN0b21CdWls
ZFN0ZXAgSW5jbHVkZT0iLi5ccGxhdGZvcm1cbmV0d29ya1xjdXJsXFJlc291cmNlUmVzcG9uc2Uu
aCI+CiAgICAgICA8RmlsdGVyPnBsYXRmb3JtXG5ldHdvcmtcY3VybDwvRmlsdGVyPgogICAgIDwv
Q3VzdG9tQnVpbGRTdGVwPgorICAgIDxDdXN0b21CdWlsZFN0ZXAgSW5jbHVkZT0iLi5ccGxhdGZv
cm1cbmV0d29ya1xjdXJsXFNTTEhhbmRsZS5oIj4KKyAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cbmV0
d29ya1xjdXJsPC9GaWx0ZXI+CisgICAgPC9DdXN0b21CdWlsZFN0ZXA+CiAgICAgPEN1c3RvbUJ1
aWxkU3RlcCBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxpbWFnZS1kZWNvZGVyc1xnaWZcR0lGSW1hZ2VE
ZWNvZGVyLmgiPgogICAgICAgPEZpbHRlcj5wbGF0Zm9ybVxpbWFnZS1kZWNvZGVyc1xnaWY8L0Zp
bHRlcj4KICAgICA8L0N1c3RvbUJ1aWxkU3RlcD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaAppbmRleCAwMjk0NWUxLi4xZDliNmU2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCkBA
IC0xMzgsNyArMTM4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIHNldENsaWVudENlcnRp
ZmljYXRlKGNvbnN0IFN0cmluZyYgaG9zdCwgQ0ZEYXRhUmVmKTsKICNlbmRpZgogCi0jaWYgUExB
VEZPUk0oV0lOKSAmJiBVU0UoQ1VSTCkKKyNpZiAoUExBVEZPUk0oV0lOKSB8fCBQTEFURk9STShO
SVgpKSAmJiBVU0UoQ1VSTCkKICAgICBzdGF0aWMgdm9pZCBzZXRIb3N0QWxsb3dzQW55SFRUUFND
ZXJ0aWZpY2F0ZShjb25zdCBTdHJpbmcmKTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKFdJTikgJiYg
VVNFKENVUkwpICYmIFVTRShDRikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmgKaW5kZXggOWI4YTg5YS4uNjBmYjY3
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhh
bmRsZUludGVybmFsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZUhhbmRsZUludGVybmFsLmgKQEAgLTEwMSw2ICsxMDEsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgICAgICAsIG1fY2FuY2VsbGVkKGZhbHNlKQogICAgICAgICAgICAgLCBtX2F1
dGhGYWlsdXJlQ291bnQoMCkKICAgICAgICAgICAgICwgbV9mb3JtRGF0YVN0cmVhbShsb2FkZXIp
CisgICAgICAgICAgICAsIG1fc3NsRXJyb3JzKDApCiAjZW5kaWYKICNpZiBVU0UoU09VUCkKICAg
ICAgICAgICAgICwgbV9jYW5jZWxsZWQoZmFsc2UpCkBAIC0xNzgsNiArMTc5LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICB1bnNpZ25lZCBzaG9ydCBtX2F1dGhGYWlsdXJlQ291bnQ7
CiAKICAgICAgICAgRm9ybURhdGFTdHJlYW0gbV9mb3JtRGF0YVN0cmVhbTsKKyAgICAgICAgdW5z
aWduZWQgbV9zc2xFcnJvcnM7CiAgICAgICAgIFZlY3RvcjxjaGFyPiBtX3Bvc3RCeXRlczsKIAog
ICAgICAgICBPd25QdHI8TXVsdGlwYXJ0SGFuZGxlPiBtX211bHRpcGFydEhhbmRsZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUVycm9y
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VFcnJvci5o
CmluZGV4IGNhOGQzNmIuLjc1NTVmNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUVycm9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlRXJyb3IuaApAQCAtMzMsMTQgKzMzLDIwIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlc291cmNlRXJyb3IgOiBwdWJsaWMgUmVzb3VyY2VF
cnJvckJhc2UKIHsKIHB1YmxpYzoKLSAgICBSZXNvdXJjZUVycm9yKCkKKyAgICBSZXNvdXJjZUVy
cm9yKCkgOiBtX3NzbEVycm9ycygwKQogICAgIHsKICAgICB9CiAKICAgICBSZXNvdXJjZUVycm9y
KGNvbnN0IFN0cmluZyYgZG9tYWluLCBpbnQgZXJyb3JDb2RlLCBjb25zdCBTdHJpbmcmIGZhaWxp
bmdVUkwsIGNvbnN0IFN0cmluZyYgbG9jYWxpemVkRGVzY3JpcHRpb24pCi0gICAgICAgIDogUmVz
b3VyY2VFcnJvckJhc2UoZG9tYWluLCBlcnJvckNvZGUsIGZhaWxpbmdVUkwsIGxvY2FsaXplZERl
c2NyaXB0aW9uKQorICAgICAgICA6IFJlc291cmNlRXJyb3JCYXNlKGRvbWFpbiwgZXJyb3JDb2Rl
LCBmYWlsaW5nVVJMLCBsb2NhbGl6ZWREZXNjcmlwdGlvbiksIG1fc3NsRXJyb3JzKDApCiAgICAg
ewogICAgIH0KKworICAgIHVuc2lnbmVkIHNzbEVycm9ycygpIGNvbnN0IHsgcmV0dXJuIG1fc3Ns
RXJyb3JzOyB9CisgICAgdm9pZCBzZXRTU0xFcnJvcnModW5zaWduZWQgc3NsVmVyaWZ5UmVzdWx0
KSB7IG1fc3NsRXJyb3JzID0gc3NsVmVyaWZ5UmVzdWx0OyB9CisKK3ByaXZhdGU6CisgICAgdW5z
aWduZWQgbV9zc2xFcnJvcnM7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCmluZGV4IDUz
YTAwZjMuLmQ3OTIzNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCkBAIC0zNCw2ICszNCw3IEBA
CiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZUlu
dGVybmFsLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVNYW5hZ2VyLmgiCisjaW5jbHVkZSAi
U1NMSGFuZGxlLmgiCiAKICNpZiBQTEFURk9STShXSU4pICYmIFVTRShDRikKICNpbmNsdWRlIDx3
dGYvUGFzc1JlZlB0ci5oPgpAQCAtMTE1LDE5ICsxMTYsMTEgQEAgdm9pZCBSZXNvdXJjZUhhbmRs
ZTo6Y2FuY2VsKCkKICAgICBSZXNvdXJjZUhhbmRsZU1hbmFnZXI6OnNoYXJlZEluc3RhbmNlKCkt
PmNhbmNlbCh0aGlzKTsKIH0KIAotI2lmIFBMQVRGT1JNKFdJTikgJiYgVVNFKENGKQotc3RhdGlj
IEhhc2hTZXQ8U3RyaW5nPiYgYWxsb3dzQW55SFRUUFNDZXJ0aWZpY2F0ZUhvc3RzKCkKLXsKLSAg
ICBzdGF0aWMgSGFzaFNldDxTdHJpbmc+IGhvc3RzOwotCi0gICAgcmV0dXJuIGhvc3RzOwotfQot
CiB2b2lkIFJlc291cmNlSGFuZGxlOjpzZXRIb3N0QWxsb3dzQW55SFRUUFNDZXJ0aWZpY2F0ZShj
b25zdCBTdHJpbmcmIGhvc3QpCiB7Ci0gICAgYWxsb3dzQW55SFRUUFNDZXJ0aWZpY2F0ZUhvc3Rz
KCkuYWRkKGhvc3QubG93ZXIoKSk7CisgICAgYWxsb3dzQW55SFRUUFNDZXJ0aWZpY2F0ZUhvc3Rz
KGhvc3QubG93ZXIoKSk7CiB9Ci0jZW5kaWYKKwogCiAjaWYgUExBVEZPUk0oV0lOKSAmJiBVU0Uo
Q0YpCiAvLyBGSVhNRTogIFRoZSBDRkRhdGFSZWYgd2lsbCBuZWVkIHRvIGJlIHNvbWV0aGluZyBl
bHNlIHdoZW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9SZXNvdXJjZUhhbmRsZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL1Jlc291cmNlSGFuZGxlTWFuYWdlci5jcHAKaW5kZXggMGJmMjQxNy4uNzk4Y2U3
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291
cmNlSGFuZGxlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL1Jlc291cmNlSGFuZGxlTWFuYWdlci5jcHAKQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNs
dWRlICJSZXNvdXJjZUVycm9yLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNs
dWRlICJSZXNvdXJjZUhhbmRsZUludGVybmFsLmgiCisjaW5jbHVkZSAiU1NMSGFuZGxlLmgiCiAK
ICNpZiBPUyhXSU5ET1dTKQogI2luY2x1ZGUgIldlYkNvcmVCdW5kbGVXaW4uaCIKQEAgLTYxMyw4
ICs2MTQsMTEgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZU1hbmFnZXI6OmRvd25sb2FkVGltZXJDYWxs
YmFjayhUaW1lcjxSZXNvdXJjZUhhbmRsZU1hbmFnZXI+KgogI2lmbmRlZiBOREVCVUcKICAgICAg
ICAgICAgIGZwcmludGYoc3RkZXJyLCAiQ3VybCBFUlJPUiBmb3IgdXJsPSclcycsIGVycm9yOiAn
JXMnXG4iLCB1cmwsIGN1cmxfZWFzeV9zdHJlcnJvcihtc2ctPmRhdGEucmVzdWx0KSk7CiAjZW5k
aWYKLSAgICAgICAgICAgIGlmIChkLT5jbGllbnQoKSkKLSAgICAgICAgICAgICAgICBkLT5jbGll
bnQoKS0+ZGlkRmFpbChqb2IsIFJlc291cmNlRXJyb3IoU3RyaW5nKCksIG1zZy0+ZGF0YS5yZXN1
bHQsIFN0cmluZyh1cmwpLCBTdHJpbmcoY3VybF9lYXN5X3N0cmVycm9yKG1zZy0+ZGF0YS5yZXN1
bHQpKSkpOworICAgICAgICAgICAgaWYgKGQtPmNsaWVudCgpKSB7CisgICAgICAgICAgICAgICAg
UmVzb3VyY2VFcnJvciByZXNvdXJjZUVycm9yKFN0cmluZygpLCBtc2ctPmRhdGEucmVzdWx0LCBT
dHJpbmcodXJsKSwgU3RyaW5nKGN1cmxfZWFzeV9zdHJlcnJvcihtc2ctPmRhdGEucmVzdWx0KSkp
OworICAgICAgICAgICAgICAgIHJlc291cmNlRXJyb3Iuc2V0U1NMRXJyb3JzKGQtPm1fc3NsRXJy
b3JzKTsKKyAgICAgICAgICAgICAgICBkLT5jbGllbnQoKS0+ZGlkRmFpbChqb2IsIHJlc291cmNl
RXJyb3IpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAKICAgICAgICAgcmVtb3ZlRnJvbUN1
cmwoam9iKTsKQEAgLTkzMSw2ICs5MzUsOCBAQCB2b2lkIFJlc291cmNlSGFuZGxlTWFuYWdlcjo6
aW5pdGlhbGl6ZUhhbmRsZShSZXNvdXJjZUhhbmRsZSogam9iKQogICAgIGlmIChnZXRlbnYoIkRF
QlVHX0NVUkwiKSkKICAgICAgICAgY3VybF9lYXN5X3NldG9wdChkLT5tX2hhbmRsZSwgQ1VSTE9Q
VF9WRVJCT1NFLCAxKTsKICNlbmRpZgorICAgIGN1cmxfZWFzeV9zZXRvcHQoZC0+bV9oYW5kbGUs
IENVUkxPUFRfU1NMX1ZFUklGWVBFRVIsIDFMKTsKKyAgICBjdXJsX2Vhc3lfc2V0b3B0KGQtPm1f
aGFuZGxlLCBDVVJMT1BUX1NTTF9WRVJJRllIT1NULCAyTCk7CiAgICAgY3VybF9lYXN5X3NldG9w
dChkLT5tX2hhbmRsZSwgQ1VSTE9QVF9QUklWQVRFLCBqb2IpOwogICAgIGN1cmxfZWFzeV9zZXRv
cHQoZC0+bV9oYW5kbGUsIENVUkxPUFRfRVJST1JCVUZGRVIsIG1fY3VybEVycm9yQnVmZmVyKTsK
ICAgICBjdXJsX2Vhc3lfc2V0b3B0KGQtPm1faGFuZGxlLCBDVVJMT1BUX1dSSVRFRlVOQ1RJT04s
IHdyaXRlQ2FsbGJhY2spOwpAQCAtOTQ1LDEwICs5NTEsMTEgQEAgdm9pZCBSZXNvdXJjZUhhbmRs
ZU1hbmFnZXI6OmluaXRpYWxpemVIYW5kbGUoUmVzb3VyY2VIYW5kbGUqIGpvYikKICAgICBjdXJs
X2Vhc3lfc2V0b3B0KGQtPm1faGFuZGxlLCBDVVJMT1BUX0ROU19DQUNIRV9USU1FT1VULCA2MCAq
IDUpOyAvLyA1IG1pbnV0ZXMKICAgICBjdXJsX2Vhc3lfc2V0b3B0KGQtPm1faGFuZGxlLCBDVVJM
T1BUX1BST1RPQ09MUywgYWxsb3dlZFByb3RvY29scyk7CiAgICAgY3VybF9lYXN5X3NldG9wdChk
LT5tX2hhbmRsZSwgQ1VSTE9QVF9SRURJUl9QUk9UT0NPTFMsIGFsbG93ZWRQcm90b2NvbHMpOwot
ICAgIC8vIEZJWE1FOiBFbmFibGUgU1NMIHZlcmlmaWNhdGlvbiB3aGVuIHdlIGhhdmUgYSB3YXkg
b2Ygc2hpcHBpbmcgY2VydHMKLSAgICAvLyBhbmQvb3IgcmVwb3J0aW5nIFNTTCBlcnJvcnMgdG8g
dGhlIHVzZXIuCisKICAgICBpZiAoaWdub3JlU1NMRXJyb3JzKQogICAgICAgICBjdXJsX2Vhc3lf
c2V0b3B0KGQtPm1faGFuZGxlLCBDVVJMT1BUX1NTTF9WRVJJRllQRUVSLCBmYWxzZSk7CisgICAg
ZWxzZQorICAgICAgICBzZXRTU0xWZXJpZnlPcHRpb25zKGpvYik7CiAKICAgICBpZiAoIW1fY2Vy
dGlmaWNhdGVQYXRoLmlzTnVsbCgpKQogICAgICAgIGN1cmxfZWFzeV9zZXRvcHQoZC0+bV9oYW5k
bGUsIENVUkxPUFRfQ0FJTkZPLCBtX2NlcnRpZmljYXRlUGF0aC5kYXRhKCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NTTEhhbmRsZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU1NMSGFuZGxlLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NGE1YTNhCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NTTEhhbmRsZS5jcHAKQEAgLTAs
MCArMSwxOTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgVW5pdmVyc2l0eSBvZiBTemVn
ZWQKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFVOSVZFUlNJ
VFkgT0YgU1pFR0VEIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09N
UFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJTU0xIYW5kbGUuaCIK
KworI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlSW50ZXJuYWwuaCIKKworI2luY2x1ZGUgPG9wZW5z
c2wvcGVtLmg+CisjaW5jbHVkZSA8b3BlbnNzbC9zc2wuaD4KKyNpbmNsdWRlIDxvcGVuc3NsL3g1
MDlfdmZ5Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIEhhc2hNYXA8U3RyaW5n
LCBTdHJpbmc+IGFsbG93ZWRIb3N0czsKKwordm9pZCBhbGxvd3NBbnlIVFRQU0NlcnRpZmljYXRl
SG9zdHMoY29uc3QgU3RyaW5nJiBob3N0KQoreworICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+
OjppdGVyYXRvciBpdCA9IGFsbG93ZWRIb3N0cy5maW5kKGhvc3QpOworICAgIGlmIChpdCAhPSBh
bGxvd2VkSG9zdHMuZW5kKCkpCisgICAgICAgIGl0LT52YWx1ZSA9IFN0cmluZygpOworICAgIGVs
c2UKKyAgICAgICAgYWxsb3dlZEhvc3RzLmFkZChob3N0LCBTdHJpbmcoKSk7Cit9CisKK2Jvb2wg
c3NsSWdub3JlSFRUUFNDZXJ0aWZpY2F0ZShjb25zdCBTdHJpbmcmIGhvc3QsIGNvbnN0IFN0cmlu
ZyYgY2VydCkKK3sKKyAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPjo6aXRlcmF0b3IgaXQgPSBh
bGxvd2VkSG9zdHMuZmluZChob3N0KTsKKyAgICBpZiAoaXQgIT0gYWxsb3dlZEhvc3RzLmVuZCgp
KSB7CisgICAgICAgIGlmICgoaXQtPnZhbHVlKS5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIGl0
LT52YWx1ZSA9IGNlcnQ7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAg
ICAgICBpZiAoaXQtPnZhbHVlID09IGNlcnQpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCit1bnNpZ25lZCBzc2xDZXJ0aWZpY2F0ZUZsYWco
Y29uc3QgdW5zaWduZWQmIHNzbEVycm9yKQoreworICAgIHN3aXRjaCAoc3NsRXJyb3IpIHsKKyAg
ICBjYXNlIFg1MDlfVl9FUlJfVU5BQkxFX1RPX0dFVF9JU1NVRVJfQ0VSVCA6IC8vIHRoZSBpc3N1
ZXIgY2VydGlmaWNhdGUgY291bGQgbm90IGJlIGZvdW5kOiB0aGlzIG9jY3VycyBpZiB0aGUgaXNz
dWVyIGNlcnRpZmljYXRlIG9mIGFuIHVudHJ1c3RlZCBjZXJ0aWZpY2F0ZSBjYW5ub3QgYmUgZm91
bmQuCisgICAgY2FzZSBYNTA5X1ZfRVJSX1VOQUJMRV9UT19HRVRfQ1JMIDogLy8gdGhlIENSTCBv
ZiBhIGNlcnRpZmljYXRlIGNvdWxkIG5vdCBiZSBmb3VuZC4KKyAgICBjYXNlIFg1MDlfVl9FUlJf
VU5BQkxFX1RPX0dFVF9JU1NVRVJfQ0VSVF9MT0NBTExZIDogLy8gdGhlIGlzc3VlciBjZXJ0aWZp
Y2F0ZSBvZiBhIGxvY2FsbHkgbG9va2VkIHVwIGNlcnRpZmljYXRlIGNvdWxkIG5vdCBiZSBmb3Vu
ZC4gVGhpcyBub3JtYWxseSBtZWFucyB0aGUgbGlzdCBvZiB0cnVzdGVkIGNlcnRpZmljYXRlcyBp
cyBub3QgY29tcGxldGUuCisgICAgICAgIHJldHVybiBTU0xfQ0VSVElGSUNBVEVfVU5LTk9XTl9D
QTsKKyAgICBjYXNlIFg1MDlfVl9FUlJfVU5BQkxFX1RPX0RFQ1JZUFRfQ0VSVF9TSUdOQVRVUkUg
OiAvLyB0aGUgY2VydGlmaWNhdGUgc2lnbmF0dXJlIGNvdWxkIG5vdCBiZSBkZWNyeXB0ZWQuIFRo
aXMgbWVhbnMgdGhhdCB0aGUgYWN0dWFsIHNpZ25hdHVyZSB2YWx1ZSBjb3VsZCBub3QgYmUgZGV0
ZXJtaW5lZCByYXRoZXIgdGhhbiBpdCBub3QgbWF0Y2hpbmcgdGhlIGV4cGVjdGVkIHZhbHVlLCB0
aGlzIGlzIG9ubHkgbWVhbmluZ2Z1bCBmb3IgUlNBIGtleXMuCisgICAgY2FzZSBYNTA5X1ZfRVJS
X1VOQUJMRV9UT19ERUNSWVBUX0NSTF9TSUdOQVRVUkUgOiAvLyB0aGUgQ1JMIHNpZ25hdHVyZSBj
b3VsZCBub3QgYmUgZGVjcnlwdGVkOiB0aGlzIG1lYW5zIHRoYXQgdGhlIGFjdHVhbCBzaWduYXR1
cmUgdmFsdWUgY291bGQgbm90IGJlIGRldGVybWluZWQgcmF0aGVyIHRoYW4gaXQgbm90IG1hdGNo
aW5nIHRoZSBleHBlY3RlZCB2YWx1ZS4gVW51c2VkLgorICAgIGNhc2UgWDUwOV9WX0VSUl9VTkFC
TEVfVE9fREVDT0RFX0lTU1VFUl9QVUJMSUNfS0VZIDogLy8gdGhlIHB1YmxpYyBrZXkgaW4gdGhl
IGNlcnRpZmljYXRlIFN1YmplY3RQdWJsaWNLZXlJbmZvIGNvdWxkIG5vdCBiZSByZWFkLgorICAg
IGNhc2UgWDUwOV9WX0VSUl9DRVJUX1NJR05BVFVSRV9GQUlMVVJFIDogLy8gdGhlIHNpZ25hdHVy
ZSBvZiB0aGUgY2VydGlmaWNhdGUgaXMgaW52YWxpZC4KKyAgICBjYXNlIFg1MDlfVl9FUlJfREVQ
VEhfWkVST19TRUxGX1NJR05FRF9DRVJUIDogLy8gdGhlIHBhc3NlZCBjZXJ0aWZpY2F0ZSBpcyBz
ZWxmIHNpZ25lZCBhbmQgdGhlIHNhbWUgY2VydGlmaWNhdGUgY2Fubm90IGJlIGZvdW5kIGluIHRo
ZSBsaXN0IG9mIHRydXN0ZWQgY2VydGlmaWNhdGVzLgorICAgIGNhc2UgWDUwOV9WX0VSUl9TRUxG
X1NJR05FRF9DRVJUX0lOX0NIQUlOIDogLy8gdGhlIGNlcnRpZmljYXRlIGNoYWluIGNvdWxkIGJl
IGJ1aWx0IHVwIHVzaW5nIHRoZSB1bnRydXN0ZWQgY2VydGlmaWNhdGVzIGJ1dCB0aGUgcm9vdCBj
b3VsZCBub3QgYmUgZm91bmQgbG9jYWxseS4KKyAgICBjYXNlIFg1MDlfVl9FUlJfVU5BQkxFX1RP
X1ZFUklGWV9MRUFGX1NJR05BVFVSRSA6IC8vIG5vIHNpZ25hdHVyZXMgY291bGQgYmUgdmVyaWZp
ZWQgYmVjYXVzZSB0aGUgY2hhaW4gY29udGFpbnMgb25seSBvbmUgY2VydGlmaWNhdGUgYW5kIGl0
IGlzIG5vdCBzZWxmIHNpZ25lZC4KKyAgICBjYXNlIFg1MDlfVl9FUlJfSU5WQUxJRF9QVVJQT1NF
IDogLy8gdGhlIHN1cHBsaWVkIGNlcnRpZmljYXRlIGNhbm5vdCBiZSB1c2VkIGZvciB0aGUgc3Bl
Y2lmaWVkIHB1cnBvc2UuCisgICAgY2FzZSBYNTA5X1ZfRVJSX0NFUlRfVU5UUlVTVEVEIDogLy8g
dGhlIHJvb3QgQ0EgaXMgbm90IG1hcmtlZCBhcyB0cnVzdGVkIGZvciB0aGUgc3BlY2lmaWVkIHB1
cnBvc2UuCisgICAgY2FzZSBYNTA5X1ZfRVJSX0NFUlRfUkVKRUNURUQgOiAvLyB0aGUgcm9vdCBD
QSBpcyBtYXJrZWQgdG8gcmVqZWN0IHRoZSBzcGVjaWZpZWQgcHVycG9zZS4KKyAgICBjYXNlIFg1
MDlfVl9FUlJfTk9fRVhQTElDSVRfUE9MSUNZIDogLy8gdGhlIHZlcmlmaWNhdGlvbiBmbGFncyB3
ZXJlIHNldCB0byByZXF1aXJlIGFuZCBleHBsaWNpdCBwb2xpY3kgYnV0IG5vbmUgd2FzIHByZXNl
bnQuCisgICAgY2FzZSBYNTA5X1ZfRVJSX0RJRkZFUkVOVF9DUkxfU0NPUEUgOiAvLyB0aGUgb25s
eSBDUkxzIHRoYXQgY291bGQgYmUgZm91bmQgZGlkIG5vdCBtYXRjaCB0aGUgc2NvcGUgb2YgdGhl
IGNlcnRpZmljYXRlLgorICAgICAgICByZXR1cm4gU1NMX0NFUlRJRklDQVRFX0lOU0VDVVJFOwor
ICAgIGNhc2UgWDUwOV9WX0VSUl9DRVJUX05PVF9ZRVRfVkFMSUQgOiAvLyB0aGUgY2VydGlmaWNh
dGUgaXMgbm90IHlldCB2YWxpZDogdGhlIG5vdEJlZm9yZSBkYXRlIGlzIGFmdGVyIHRoZSBjdXJy
ZW50IHRpbWUuCisgICAgY2FzZSBYNTA5X1ZfRVJSX0NSTF9OT1RfWUVUX1ZBTElEIDogLy8gdGhl
IENSTCBpcyBub3QgeWV0IHZhbGlkLgorICAgICAgICByZXR1cm4gU1NMX0NFUlRJRklDQVRFX05P
VF9BQ1RJVkFURUQ7CisgICAgY2FzZSBYNTA5X1ZfRVJSX0NFUlRfSEFTX0VYUElSRUQgOiAvLyB0
aGUgY2VydGlmaWNhdGUgaGFzIGV4cGlyZWQ6IHRoYXQgaXMgdGhlIG5vdEFmdGVyIGRhdGUgaXMg
YmVmb3JlIHRoZSBjdXJyZW50IHRpbWUuCisgICAgY2FzZSBYNTA5X1ZfRVJSX0NSTF9IQVNfRVhQ
SVJFRCA6IC8vIHRoZSBDUkwgaGFzIGV4cGlyZWQuCisgICAgICAgIHJldHVybiBTU0xfQ0VSVElG
SUNBVEVfRVhQSVJFRDsKKyAgICBjYXNlIFg1MDlfVl9FUlJfRVJST1JfSU5fQ0VSVF9OT1RfQkVG
T1JFX0ZJRUxEIDogLy8gdGhlIGNlcnRpZmljYXRlIG5vdEJlZm9yZSBmaWVsZCBjb250YWlucyBh
biBpbnZhbGlkIHRpbWUuCisgICAgY2FzZSBYNTA5X1ZfRVJSX0VSUk9SX0lOX0NFUlRfTk9UX0FG
VEVSX0ZJRUxEIDogLy8gdGhlIGNlcnRpZmljYXRlIG5vdEFmdGVyIGZpZWxkIGNvbnRhaW5zIGFu
IGludmFsaWQgdGltZS4KKyAgICBjYXNlIFg1MDlfVl9FUlJfRVJST1JfSU5fQ1JMX0xBU1RfVVBE
QVRFX0ZJRUxEIDogLy8gdGhlIENSTCBsYXN0VXBkYXRlIGZpZWxkIGNvbnRhaW5zIGFuIGludmFs
aWQgdGltZS4KKyAgICBjYXNlIFg1MDlfVl9FUlJfRVJST1JfSU5fQ1JMX05FWFRfVVBEQVRFX0ZJ
RUxEIDogLy8gdGhlIENSTCBuZXh0VXBkYXRlIGZpZWxkIGNvbnRhaW5zIGFuIGludmFsaWQgdGlt
ZS4KKyAgICBjYXNlIFg1MDlfVl9FUlJfT1VUX09GX01FTSA6IC8vIGFuIGVycm9yIG9jY3VycmVk
IHRyeWluZyB0byBhbGxvY2F0ZSBtZW1vcnkuIFRoaXMgc2hvdWxkIG5ldmVyIGhhcHBlbi4KKyAg
ICBjYXNlIFg1MDlfVl9FUlJfQ0VSVF9DSEFJTl9UT09fTE9ORyA6IC8vIHRoZSBjZXJ0aWZpY2F0
ZSBjaGFpbiBsZW5ndGggaXMgZ3JlYXRlciB0aGFuIHRoZSBzdXBwbGllZCBtYXhpbXVtIGRlcHRo
LiBVbnVzZWQuCisgICAgY2FzZSBYNTA5X1ZfRVJSX1BBVEhfTEVOR1RIX0VYQ0VFREVEIDogLy8g
dGhlIGJhc2ljQ29uc3RyYWludHMgcGF0aGxlbmd0aCBwYXJhbWV0ZXIgaGFzIGJlZW4gZXhjZWVk
ZWQuCisgICAgY2FzZSBYNTA5X1ZfRVJSX0lOVkFMSURfRVhURU5TSU9OIDogLy8gYSBjZXJ0aWZp
Y2F0ZSBleHRlbnNpb24gaGFkIGFuIGludmFsaWQgdmFsdWUgKGZvciBleGFtcGxlIGFuIGluY29y
cmVjdCBlbmNvZGluZykgb3Igc29tZSB2YWx1ZSBpbmNvbnNpc3RlbnQgd2l0aCBvdGhlciBleHRl
bnNpb25zLgorICAgIGNhc2UgWDUwOV9WX0VSUl9JTlZBTElEX1BPTElDWV9FWFRFTlNJT04gOiAv
LyBhIGNlcnRpZmljYXRlIHBvbGljaWVzIGV4dGVuc2lvbiBoYWQgYW4gaW52YWxpZCB2YWx1ZSAo
Zm9yIGV4YW1wbGUgYW4gaW5jb3JyZWN0IGVuY29kaW5nKSBvciBzb21lIHZhbHVlIGluY29uc2lz
dGVudCB3aXRoIG90aGVyIGV4dGVuc2lvbnMuIFRoaXMgZXJyb3Igb25seSBvY2N1cnMgaWYgcG9s
aWN5IHByb2Nlc3NpbmcgaXMgZW5hYmxlZC4KKyAgICBjYXNlIFg1MDlfVl9FUlJfVU5TVVBQT1JU
RURfRVhURU5TSU9OX0ZFQVRVUkUgOiAvLyBzb21lIGZlYXR1cmUgb2YgYSBjZXJ0aWZpY2F0ZSBl
eHRlbnNpb24gaXMgbm90IHN1cHBvcnRlZC4gVW51c2VkLgorICAgIGNhc2UgWDUwOV9WX0VSUl9Q
RVJNSVRURURfVklPTEFUSU9OIDogLy8gYSBuYW1lIGNvbnN0cmFpbnQgdmlvbGF0aW9uIG9jY3Vy
ZWQgaW4gdGhlIHBlcm1pdHRlZCBzdWJ0cmVlcy4KKyAgICBjYXNlIFg1MDlfVl9FUlJfRVhDTFVE
RURfVklPTEFUSU9OIDogLy8gYSBuYW1lIGNvbnN0cmFpbnQgdmlvbGF0aW9uIG9jY3VyZWQgaW4g
dGhlIGV4Y2x1ZGVkIHN1YnRyZWVzLgorICAgIGNhc2UgWDUwOV9WX0VSUl9TVUJUUkVFX01JTk1B
WCA6IC8vIGEgY2VydGlmaWNhdGUgbmFtZSBjb25zdHJhaW50cyBleHRlbnNpb24gaW5jbHVkZWQg
YSBtaW5pbXVtIG9yIG1heGltdW0gZmllbGQ6IHRoaXMgaXMgbm90IHN1cHBvcnRlZC4KKyAgICBj
YXNlIFg1MDlfVl9FUlJfVU5TVVBQT1JURURfQ09OU1RSQUlOVF9UWVBFIDogLy8gYW4gdW5zdXBw
b3J0ZWQgbmFtZSBjb25zdHJhaW50IHR5cGUgd2FzIGVuY291bnRlcmVkLiBPcGVuU1NMIGN1cnJl
bnRseSBvbmx5IHN1cHBvcnRzIGRpcmVjdG9yeSBuYW1lLCBETlMgbmFtZSwgZW1haWwgYW5kIFVS
SSB0eXBlcy4KKyAgICBjYXNlIFg1MDlfVl9FUlJfVU5TVVBQT1JURURfQ09OU1RSQUlOVF9TWU5U
QVggOiAvLyB0aGUgZm9ybWF0IG9mIHRoZSBuYW1lIGNvbnN0cmFpbnQgaXMgbm90IHJlY29nbmlz
ZWQ6IGZvciBleGFtcGxlIGFuIGVtYWlsIGFkZHJlc3MgZm9ybWF0IG9mIGEgZm9ybSBub3QgbWVu
dGlvbmVkIGluIFJGQzMyODAuIFRoaXMgY291bGQgYmUgY2F1c2VkIGJ5IGEgZ2FyYmFnZSBleHRl
bnNpb24gb3Igc29tZSBuZXcgZmVhdHVyZSBub3QgY3VycmVudGx5IHN1cHBvcnRlZC4KKyAgICBj
YXNlIFg1MDlfVl9FUlJfQ1JMX1BBVEhfVkFMSURBVElPTl9FUlJPUiA6IC8vIGFuIGVycm9yIG9j
Y3VyZWQgd2hlbiBhdHRlbXB0aW5nIHRvIHZlcmlmeSB0aGUgQ1JMIHBhdGguIFRoaXMgZXJyb3Ig
Y2FuIG9ubHkgaGFwcGVuIGlmIGV4dGVuZGVkIENSTCBjaGVja2luZyBpcyBlbmFibGVkLgorICAg
IGNhc2UgWDUwOV9WX0VSUl9BUFBMSUNBVElPTl9WRVJJRklDQVRJT04gOiAvLyBhbiBhcHBsaWNh
dGlvbiBzcGVjaWZpYyBlcnJvci4gVGhpcyB3aWxsIG5ldmVyIGJlIHJldHVybmVkIHVubGVzcyBl
eHBsaWNpdGx5IHNldCBieSBhbiBhcHBsaWNhdGlvbi4KKyAgICAgICAgcmV0dXJuIFNTTF9DRVJU
SUZJQ0FURV9HRU5FUklDX0VSUk9SOworICAgIGNhc2UgWDUwOV9WX0VSUl9DRVJUX1JFVk9LRUQg
OiAvLyB0aGUgY2VydGlmaWNhdGUgaGFzIGJlZW4gcmV2b2tlZC4KKyAgICAgICAgcmV0dXJuIFNT
TF9DRVJUSUZJQ0FURV9SRVZPS0VEOworICAgIGNhc2UgWDUwOV9WX0VSUl9JTlZBTElEX0NBIDog
Ly8gYSBDQSBjZXJ0aWZpY2F0ZSBpcyBpbnZhbGlkLiBFaXRoZXIgaXQgaXMgbm90IGEgQ0Egb3Ig
aXRzIGV4dGVuc2lvbnMgYXJlIG5vdCBjb25zaXN0ZW50IHdpdGggdGhlIHN1cHBsaWVkIHB1cnBv
c2UuCisgICAgY2FzZSBYNTA5X1ZfRVJSX1NVQkpFQ1RfSVNTVUVSX01JU01BVENIIDogLy8gdGhl
IGN1cnJlbnQgY2FuZGlkYXRlIGlzc3VlciBjZXJ0aWZpY2F0ZSB3YXMgcmVqZWN0ZWQgYmVjYXVz
ZSBpdHMgc3ViamVjdCBuYW1lIGRpZCBub3QgbWF0Y2ggdGhlIGlzc3VlciBuYW1lIG9mIHRoZSBj
dXJyZW50IGNlcnRpZmljYXRlLiBUaGlzIGlzIG9ubHkgc2V0IGlmIGlzc3VlciBjaGVjayBkZWJ1
Z2dpbmcgaXMgZW5hYmxlZCBpdCBpcyB1c2VkIGZvciBzdGF0dXMgbm90aWZpY2F0aW9uIGFuZCBp
cyBub3QgaW4gaXRzZWxmIGFuIGVycm9yLgorICAgIGNhc2UgWDUwOV9WX0VSUl9BS0lEX1NLSURf
TUlTTUFUQ0ggOiAvLyB0aGUgY3VycmVudCBjYW5kaWRhdGUgaXNzdWVyIGNlcnRpZmljYXRlIHdh
cyByZWplY3RlZCBiZWNhdXNlIGl0cyBzdWJqZWN0IGtleSBpZGVudGlmaWVyIHdhcyBwcmVzZW50
IGFuZCBkaWQgbm90IG1hdGNoIHRoZSBhdXRob3JpdHkga2V5IGlkZW50aWZpZXIgY3VycmVudCBj
ZXJ0aWZpY2F0ZS4gVGhpcyBpcyBvbmx5IHNldCBpZiBpc3N1ZXIgY2hlY2sgZGVidWdnaW5nIGlz
IGVuYWJsZWQgaXQgaXMgdXNlZCBmb3Igc3RhdHVzIG5vdGlmaWNhdGlvbiBhbmQgaXMgbm90IGlu
IGl0c2VsZiBhbiBlcnJvci4KKyAgICBjYXNlIFg1MDlfVl9FUlJfQUtJRF9JU1NVRVJfU0VSSUFM
X01JU01BVENIIDogLy8gdGhlIGN1cnJlbnQgY2FuZGlkYXRlIGlzc3VlciBjZXJ0aWZpY2F0ZSB3
YXMgcmVqZWN0ZWQgYmVjYXVzZSBpdHMgaXNzdWVyIG5hbWUgYW5kIHNlcmlhbCBudW1iZXIgd2Fz
IHByZXNlbnQgYW5kIGRpZCBub3QgbWF0Y2ggdGhlIGF1dGhvcml0eSBrZXkgaWRlbnRpZmllciBv
ZiB0aGUgY3VycmVudCBjZXJ0aWZpY2F0ZS4gVGhpcyBpcyBvbmx5IHNldCBpZiBpc3N1ZXIgY2hl
Y2sgZGVidWdnaW5nIGlzIGVuYWJsZWQgaXQgaXMgdXNlZCBmb3Igc3RhdHVzIG5vdGlmaWNhdGlv
biBhbmQgaXMgbm90IGluIGl0c2VsZiBhbiBlcnJvci4KKyAgICBjYXNlIFg1MDlfVl9FUlJfS0VZ
VVNBR0VfTk9fQ0VSVFNJR04gOiAvLyB0aGUgY3VycmVudCBjYW5kaWRhdGUgaXNzdWVyIGNlcnRp
ZmljYXRlIHdhcyByZWplY3RlZCBiZWNhdXNlIGl0cyBrZXlVc2FnZSBleHRlbnNpb24gZG9lcyBu
b3QgcGVybWl0IGNlcnRpZmljYXRlIHNpZ25pbmcuIFRoaXMgaXMgb25seSBzZXQgaWYgaXNzdWVy
IGNoZWNrIGRlYnVnZ2luZyBpcyBlbmFibGVkIGl0IGlzIHVzZWQgZm9yIHN0YXR1cyBub3RpZmlj
YXRpb24gYW5kIGlzIG5vdCBpbiBpdHNlbGYgYW4gZXJyb3IuCisgICAgICAgIHJldHVybiBTU0xf
Q0VSVElGSUNBVEVfQkFEX0lERU5USVRZOworICAgIGRlZmF1bHQgOgorICAgICAgICByZXR1cm4g
U1NMX0NFUlRJRklDQVRFX0dFTkVSSUNfRVJST1I7CisgICAgfQorfQorCisjaWYgIVBMQVRGT1JN
KFdJTikKKy8vIHN1Y2Nlc3Mgb2YgY2VydGlmaWNhdGUgZXh0cmFjdGlvbgorYm9vbCBwZW1EYXRh
KFg1MDlfU1RPUkVfQ1RYKiBjdHgsIFN0cmluZyYgY2VydGlmaWNhdGUpCit7CisgICAgWDUwOSog
ZXJyQ2VydCA9IFg1MDlfU1RPUkVfQ1RYX2dldF9jdXJyZW50X2NlcnQoY3R4KTsKKworICAgIC8v
IGdldCB0aGUgY2VydCBpbiBQRU0gZm9ybWF0CisgICAgQklPKiBiaW8gPSBCSU9fbmV3KEJJT19z
X21lbSgpKTsKKworICAgIGludCByZXMgPSBQRU1fd3JpdGVfYmlvX1g1MDkoYmlvLCBlcnJDZXJ0
KTsKKyAgICBpZiAoIXJlcykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgdW5zaWduZWQg
Y2hhciAqZGF0YTsKKyAgICBsb25nIGxlbiA9IEJJT19nZXRfbWVtX2RhdGEoYmlvLCAmZGF0YSk7
CisgICAgZGF0YVtsZW5dID0gJ1wwJzsKKyAgICBjZXJ0aWZpY2F0ZSA9IGRhdGE7CisgICAgQklP
X2ZyZWUoYmlvKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKyNlbmRpZgorCitzdGF0aWMgaW50IGNl
cnRWZXJpZnlDYWxsYmFjayhpbnQgb2ssIFg1MDlfU1RPUkVfQ1RYKiBjdHgpCit7CisgICAgLy8g
d2hldGhlciB0aGUgdmVyaWZpY2F0aW9uIG9mIHRoZSBjZXJ0aWZpY2F0ZSBpbiBxdWVzdGlvbiB3
YXMgcGFzc2VkIChwcmV2ZXJpZnlfb2s9MSkgb3Igbm90IChwcmV2ZXJpZnlfb2s9MCkKKworICAg
IHVuc2lnbmVkIGVyciA9IFg1MDlfU1RPUkVfQ1RYX2dldF9lcnJvcihjdHgpOworICAgIGlmICgh
ZXJyKQorICAgICAgICByZXR1cm4gMTsKKworICAgIFNTTCogc3NsID0gcmVpbnRlcnByZXRfY2Fz
dDxTU0wqPihYNTA5X1NUT1JFX0NUWF9nZXRfZXhfZGF0YShjdHgsIFNTTF9nZXRfZXhfZGF0YV9Y
NTA5X1NUT1JFX0NUWF9pZHgoKSkpOworICAgIFNTTF9DVFgqIHNzbGN0eCA9IFNTTF9nZXRfU1NM
X0NUWChzc2wpOworICAgIFJlc291cmNlSGFuZGxlKiBqb2IgID0gcmVpbnRlcnByZXRfY2FzdDxS
ZXNvdXJjZUhhbmRsZSo+KFNTTF9DVFhfZ2V0X2FwcF9kYXRhKHNzbGN0eCkpOworICAgIFN0cmlu
ZyBob3N0ID0gam9iLT5maXJzdFJlcXVlc3QoKS51cmwoKS5ob3N0KCk7CisgICAgUmVzb3VyY2VI
YW5kbGVJbnRlcm5hbCogZCA9IGpvYi0+Z2V0SW50ZXJuYWwoKTsKKworICAgIGQtPm1fc3NsRXJy
b3JzID0gc3NsQ2VydGlmaWNhdGVGbGFnKGVycik7CisKKyNpZiBQTEFURk9STShXSU4pCisgICAg
SGFzaE1hcDxTdHJpbmcsIFN0cmluZz46Oml0ZXJhdG9yIGl0ID0gYWxsb3dlZEhvc3RzLmZpbmQo
aG9zdCk7CisgICAgb2sgPSAoaXQgIT0gYWxsb3dlZEhvc3RzLmVuZCgpKTsKKyNlbHNlCisgICAg
U3RyaW5nIGNlcnRpZmljYXRlOworICAgIGlmICghcGVtRGF0YShjdHgsIGNlcnRpZmljYXRlKSkK
KyAgICAgICAgcmV0dXJuIDA7CisgICAgb2sgPSBzc2xJZ25vcmVIVFRQU0NlcnRpZmljYXRlKGhv
c3QubG93ZXIoKSwgY2VydGlmaWNhdGUpOworI2VuZGlmCisKKyAgICBpZiAob2spIHsKKyAgICAg
ICAgLy8gaWYgdGhlIGhvc3QgYW5kIHRoZSBjZXJ0aWZpY2F0ZSBhcmUgc3RvcmVkIGZvciB0aGUg
Y3VycmVudCBoYW5kbGUgdGhhdCBtZWFucyBpcyBlbmFibGVkLAorICAgICAgICAvLyBzbyBkb24n
dCBuZWVkIHRvIGN1cmwgdmVyaWZpZXMgdGhlIGF1dGhlbnRpY2l0eSBvZiB0aGUgcGVlcidzIGNl
cnRpZmljYXRlCisgICAgICAgIGN1cmxfZWFzeV9zZXRvcHQoZC0+bV9oYW5kbGUsIENVUkxPUFRf
U1NMX1ZFUklGWVBFRVIsIGZhbHNlKTsKKyAgICB9CisgICAgcmV0dXJuIG9rOworfQorCitzdGF0
aWMgQ1VSTGNvZGUgc3NsY3R4ZnVuKENVUkwqIGN1cmwsIHZvaWQqIHNzbGN0eCwgdm9pZCogcGFy
bSkKK3sKKyAgICBTU0xfQ1RYX3NldF9hcHBfZGF0YShyZWludGVycHJldF9jYXN0PFNTTF9DVFgq
Pihzc2xjdHgpLCBwYXJtKTsKKyAgICBTU0xfQ1RYX3NldF92ZXJpZnkocmVpbnRlcnByZXRfY2Fz
dDxTU0xfQ1RYKj4oc3NsY3R4KSwgU1NMX1ZFUklGWV9QRUVSLCBjZXJ0VmVyaWZ5Q2FsbGJhY2sp
OworICAgIHJldHVybiBDVVJMRV9PSzsKK30KKwordm9pZCBzZXRTU0xWZXJpZnlPcHRpb25zKFJl
c291cmNlSGFuZGxlKiBoYW5kbGUpCit7CisgICAgUmVzb3VyY2VIYW5kbGVJbnRlcm5hbCogZCA9
IGhhbmRsZS0+Z2V0SW50ZXJuYWwoKTsKKyAgICBjdXJsX2Vhc3lfc2V0b3B0KGQtPm1faGFuZGxl
LCBDVVJMT1BUX1NTTF9DVFhfREFUQSwgaGFuZGxlKTsKKyAgICBjdXJsX2Vhc3lfc2V0b3B0KGQt
Pm1faGFuZGxlLCBDVVJMT1BUX1NTTF9DVFhfRlVOQ1RJT04sIHNzbGN0eGZ1bik7Cit9CisKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9TU0xIYW5k
bGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9TU0xIYW5kbGUuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZTg3YzQzCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NTTEhhbmRsZS5oCkBA
IC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgVW5pdmVyc2l0eSBvZiBT
emVnZWQKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFVOSVZF
UlNJVFkgT0YgU1pFR0VEIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
Q09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIFNTTEhhbmRsZV9oCisjZGVmaW5lIFNTTEhhbmRsZV9oCisK
KyNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgorCisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordHlwZWRlZiBlbnVtIHsKKyAgICBTU0xf
Q0VSVElGSUNBVEVfVU5LTk9XTl9DQSAgICA9ICgxIDw8IDApLCAvLyBUaGUgc2lnbmluZyBjZXJ0
aWZpY2F0ZSBhdXRob3JpdHkgaXMgbm90IGtub3duLgorICAgIFNTTF9DRVJUSUZJQ0FURV9CQURf
SURFTlRJVFkgID0gKDEgPDwgMSksIC8vIFRoZSBjZXJ0aWZpY2F0ZSBkb2VzIG5vdCBtYXRjaCB0
aGUgZXhwZWN0ZWQgaWRlbnRpdHkgb2YgdGhlIHNpdGUgdGhhdCBpdCB3YXMgcmV0cmlldmVkIGZy
b20uCisgICAgU1NMX0NFUlRJRklDQVRFX05PVF9BQ1RJVkFURUQgPSAoMSA8PCAyKSwgLy8gVGhl
IGNlcnRpZmljYXRlJ3MgYWN0aXZhdGlvbiB0aW1lIGlzIHN0aWxsIGluIHRoZSBmdXR1cmUKKyAg
ICBTU0xfQ0VSVElGSUNBVEVfRVhQSVJFRCAgICAgICA9ICgxIDw8IDMpLCAvLyBUaGUgY2VydGlm
aWNhdGUgaGFzIGV4cGlyZWQKKyAgICBTU0xfQ0VSVElGSUNBVEVfUkVWT0tFRCAgICAgICA9ICgx
IDw8IDQpLCAvLyBUaGUgY2VydGlmaWNhdGUgaGFzIGJlZW4gcmV2b2tlZAorICAgIFNTTF9DRVJU
SUZJQ0FURV9JTlNFQ1VSRSAgICAgID0gKDEgPDwgNSksIC8vIFRoZSBjZXJ0aWZpY2F0ZSdzIGFs
Z29yaXRobSBpcyBjb25zaWRlcmVkIGluc2VjdXJlLgorICAgIFNTTF9DRVJUSUZJQ0FURV9HRU5F
UklDX0VSUk9SID0gKDEgPDwgNikgLy8gU29tZSBvdGhlciBlcnJvciBvY2N1cnJlZCB2YWxpZGF0
aW5nIHRoZSBjZXJ0aWZpY2F0ZQorfSBTU0xDZXJ0aWZpY2F0ZUZsYWdzOworCisKK3ZvaWQgYWxs
b3dzQW55SFRUUFNDZXJ0aWZpY2F0ZUhvc3RzKGNvbnN0IFN0cmluZyYpOworYm9vbCBzc2xJZ25v
cmVIVFRQU0NlcnRpZmljYXRlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpOwordm9pZCBz
ZXRTU0xWZXJpZnlPcHRpb25zKFJlc291cmNlSGFuZGxlKik7CisKK30KKworI2VuZGlmCg==
</data>
<flag name="review"
          id="240086"
          type_id="1"
          status="-"
          setter="bfulgham"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>217434</attachid>
            <date>2013-11-20 08:01:46 -0800</date>
            <delta_ts>2013-11-20 08:05:00 -0800</delta_ts>
            <desc>proposed patch</desc>
            <filename>general.patch</filename>
            <type>text/plain</type>
            <size>40512</size>
            <attacher>sipka</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBmM2M4MzI1Li41MGNjYWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDE1ICsxLDQ5
IEBACisyMDEzLTExLTIwICBSb2JlcnQgU2lwa2EgIDxzaXBrYUBpbmYudS1zemVnZWQuaHU+CisK
KyAgICAgICAgW2N1cmxdIEltcHJvdmUgZGV0ZWN0aW5nIGFuZCBoYW5kbGluZyBvZiBTU0wgcmVs
YXRlZCBlcnJvcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTExOTQzNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFNldCB0aGUgZXhhY3QgU1NMIHZlcmlmaWNhdGlvbiBlcnJvciBvbiBDVVJMCisgICAgICAg
IGFuZCBzdG9yZSB0aGUgZW5hYmxlZCBkb21haW4gd2l0aCBjZXJ0aWZpY2F0ZS4KKworICAgICAg
ICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2o6CisgICAgICAgICogV2ViQ29yZS52
Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VIYW5kbGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
SGFuZGxlSW50ZXJuYWwuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlSW50ZXJu
YWw6OlJlc291cmNlSGFuZGxlSW50ZXJuYWwpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
Y3VybC9SZXNvdXJjZUVycm9yLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUVycm9yOjpS
ZXNvdXJjZUVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlRXJyb3I6OnNzbEVycm9y
cyk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUVycm9yOjpzZXRTU0xFcnJvcnMpOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnNldEhvc3RBbGxvd3NBbnlIVFRQU0NlcnRp
ZmljYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVN
YW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlTWFuYWdlcjo6ZG93
bmxvYWRUaW1lckNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlTWFu
YWdlcjo6aW5pdGlhbGl6ZUhhbmRsZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJs
L1NTTEhhbmRsZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6YWxsb3dzQW55SFRUUFND
ZXJ0aWZpY2F0ZUhvc3RzKToKKyAgICAgICAgKFdlYkNvcmU6OnNzbElnbm9yZUhUVFBTQ2VydGlm
aWNhdGUpOgorICAgICAgICAoV2ViQ29yZTo6c3NsQ2VydGlmaWNhdGVGbGFnKToKKyAgICAgICAg
KFdlYkNvcmU6OnBlbURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Y2VydFZlcmlmeUNhbGxiYWNr
KToKKyAgICAgICAgKFdlYkNvcmU6OnNzbGN0eGZ1bik6CisgICAgICAgIChXZWJDb3JlOjpzZXRT
U0xWZXJpZnlPcHRpb25zKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU1NMSGFu
ZGxlLmg6IEFkZGVkLgorCiAyMDEzLTExLTIwICBBbmRyZWkgQnVjdXIgIDxhYnVjdXJAYWRvYmUu
Y29tPgogCiAgICAgICAgIFtDU1NSZWdpb25zXSBNb3ZlIHJlZ2lvbiBzdHlsaW5nIGNvZGUgaW50
byBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTIyOTU3CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWlobmVhIE92
aWRlbmllLgogCiAgICAgICAgIFRoZSBwYXRjaCBtb3ZlcyBhbGwgdGhlIHJlZ2lvbiBzdHlsaW5n
IGZ1bmN0aW9uYWxpdHkgb3V0c2lkZSBvZiBSZW5kZXJSZWdpb24KICAgICAgICAgdG8gUmVuZGVy
TmFtZWRGbG93RnJhZ21lbnQgYW5kIG91dHNpZGUgb2YgUmVuZGVyRmxvd1RocmVhZCB0byBSZW5k
ZXJOYW1lZEZsb3dUaHJlYWQuCiAgICAgICAgIFRoaXMgZ2VuZXJhdGVzIGEgY291cGxlIG9mIHVu
ZGVzaXJlZCBjYXN0cyB0aGF0IHdpbGwgYmUgcmVtb3ZlZCBpbiBsYXRlciBwYXRjaGVzCiAgICAg
ICAgIHdoZW4gZXZlcnl0aGluZyBDU1MgUmVnaW9ucyBzcGVjaWZpYyB3aWxsIGJlIGxvY2F0ZWQg
aW5zaWRlIFJlbmRlck5hbWVkRmxvd1RocmVhZAogICAgICAgICBhbmQgUmVuZGVyTmFtZWRGbG93
RnJhZ21lbnQgKGUuZy4gdGhlIG1vdmUgb2YgdGhlIGlzVmFsaWQgZmxhZywgdGhlIGF1dG8taGVp
Z2h0CiAgICAgICAgIGNvZGUgZXRjLikuCiAKICAgICAgICAgVGhlIHBhaW50aW5nIGZ1bmN0aW9u
IHdhcyBhbHNvIG1vdmVkIGZyb20gUmVuZGVyUmVnaW9uIHRvIFJlbmRlck5hbWVkRmxvd0ZyYWdt
ZW50LiBJdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNv
cmUudmN4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHBy
b2oKaW5kZXggODdmZjZkZC4uNjFlYjQ0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCkBAIC04MzkyLDMwICs4MzkyLDQwIEBACiAgICAgICA8
RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdSZWxlYXNlfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgICA8RXhj
bHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdSZWxlYXNlfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgICAgPEV4Y2x1ZGVk
RnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJv
ZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgICAgPEV4Y2x1ZGVk
RnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJv
ZHVjdGlvbnx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICA8L0NsQ29tcGlsZT4K
ICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcY3VybFxTb2NrZXRT
dHJlYW1IYW5kbGVDdXJsLmNwcCI+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPnRydWU8L0V4
Y2x1ZGVkRnJvbUJ1aWxkPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRG
cm9tQnVpbGQ+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHxXaW4zMiciPnRydWU8L0V4Y2x1ZGVk
RnJvbUJ1aWxkPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdTdWZmaXh8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRG
cm9tQnVpbGQ+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9t
QnVpbGQ+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxk
PgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxk
PgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4K
ICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXG5l
dHdvcmtcY3VybFxTU0xIYW5kbGUuY3BwIj4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+dHJ1
ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj50cnVlPC9FeGNs
dWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnU3VmZml4fFdpbjMyJyI+dHJ1ZTwvRXhj
bHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHx4NjQnIj50cnVlPC9FeGNs
dWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj50cnVlPC9FeGNsdWRl
ZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9t
QnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9t
QnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1
aWxkPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZv
cm1cc3FsXFNRTGl0ZUF1dGhvcml6ZXIuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5ccGxhdGZvcm1cc3FsXFNRTGl0ZURhdGFiYXNlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXHBsYXRmb3JtXHNxbFxTUUxpdGVGaWxlU3lzdGVtLmNwcCIgLz4KICAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXHNxbFxTUUxpdGVTdGF0ZW1lbnQuY3BwIiAvPgog
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cc3FsXFNRTGl0ZVRyYW5zYWN0aW9u
LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXHNxbFxTUUxWYWx1
ZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVx0ZXh0XEJpZGlD
b250ZXh0LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXHRleHRc
RGF0ZVRpbWVGb3JtYXQuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZv
cm1cdGV4dFxMaW5lRW5kaW5nLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBs
YXRmb3JtXHRleHRcTG9jYWxlTm9uZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxwbGF0Zm9ybVx0ZXh0XExvY2FsZVRvU2NyaXB0TWFwcGluZ0RlZmF1bHQuY3BwIiAvPgogICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cdGV4dFxQbGF0Zm9ybUxvY2FsZS5jcHAi
IC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVx0ZXh0XFF1b3RlZFByaW50
YWJsZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVx0ZXh0XFJl
Z3VsYXJFeHByZXNzaW9uLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRm
b3JtXHRleHRcU2VnbWVudGVkU3RyaW5nLmNwcCIgLz4KQEAgLTE5NTQyLDMwICsxOTU1Miw0MCBA
QAogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgog
ICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICAg
IDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J1Byb2R1Y3Rpb258V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICAg
IDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgPC9D
dXN0b21CdWlsZFN0ZXA+CiAgICAgPEN1c3RvbUJ1aWxkU3RlcCBJbmNsdWRlPSIuLlxwbGF0Zm9y
bVxuZXR3b3JrXGN1cmxcUmVzb3VyY2VSZXNwb25zZS5oIj4KICAgICAgIDxFeGNsdWRlZEZyb21C
dWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdp
bjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj50
cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnU3VmZml4fFdpbjMyJyI+
dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHx4NjQnIj50
cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj50cnVl
PC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+dHJ1ZTwvRXhj
bHVkZWRGcm9tQnVpbGQ+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMyJyI+dHJ1ZTwvRXhj
bHVkZWRGcm9tQnVpbGQ+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2NCciPnRydWU8L0V4Y2x1
ZGVkRnJvbUJ1aWxkPgogICAgIDwvQ3VzdG9tQnVpbGRTdGVwPgorICAgIDxDdXN0b21CdWlsZFN0
ZXAgSW5jbHVkZT0iLi5ccGxhdGZvcm1cbmV0d29ya1xjdXJsXFNTTEhhbmRsZS5oIj4KKyAgICAg
IDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J0RlYnVnfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhj
bHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdEZWJ1Z3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZy
b21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVn
U3VmZml4fFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRG
cm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1
Z1N1ZmZpeHx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZy
b21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVh
c2V8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21C
dWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8
eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufFdp
bjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2
NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgIDwvQ3VzdG9tQnVpbGRTdGVwPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cc3FsXFNRTGl0ZURhdGFiYXNlLmgiIC8+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxzcWxcU1FMaXRlRmlsZVN5c3Rl
bS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cc3FsXFNRTGl0ZVN0
YXRlbWVudC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cc3FsXFNR
TGl0ZVRyYW5zYWN0aW9uLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9y
bVxzcWxcU1FMVmFsdWUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3Jt
XHRleHRcQmlkaUNvbnRleHQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRm
b3JtXHRleHRcQmlkaVJlc29sdmVyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxw
bGF0Zm9ybVx0ZXh0XEJpZGlSdW5MaXN0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxwbGF0Zm9ybVx0ZXh0XERhdGVUaW1lRm9ybWF0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxwbGF0Zm9ybVx0ZXh0XERlY29kZUVzY2FwZVNlcXVlbmNlcy5oIiAvPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cdGV4dFxIeXBoZW5hdGlvbi5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcTGF0aW4xVGV4dEl0ZXJh
dG9yLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVx0ZXh0XExpbmVC
cmVha0l0ZXJhdG9yUG9vbElDVS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxh
dGZvcm1cdGV4dFxMaW5lRW5kaW5nLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxw
bGF0Zm9ybVx0ZXh0XExvY2FsZVRvU2NyaXB0TWFwcGluZy5oIiAvPgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCmluZGV4
IGEyOGY0MjQuLjA3M2U0ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4
cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycworKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKQEAgLTE5MTQsMzAgKzE5MTQsMzMgQEAK
ICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcY3VybFxNdWx0aXBh
cnRIYW5kbGUuY3BwIj4KICAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cbmV0d29ya1xjdXJsPC9GaWx0
ZXI+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9y
bVxuZXR3b3JrXGN1cmxcUHJveHlTZXJ2ZXJDdXJsLmNwcCI+CiAgICAgICA8RmlsdGVyPnBsYXRm
b3JtXG5ldHdvcmtcY3VybDwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cbmV0d29ya1xjdXJsXFJlc291cmNlSGFuZGxlQ3VybC5j
cHAiPgogICAgICAgPEZpbHRlcj5wbGF0Zm9ybVxuZXR3b3JrXGN1cmw8L0ZpbHRlcj4KICAgICA8
L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXG5ldHdvcmtc
Y3VybFxSZXNvdXJjZUhhbmRsZU1hbmFnZXIuY3BwIj4KICAgICAgIDxGaWx0ZXI+cGxhdGZvcm1c
bmV0d29ya1xjdXJsPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXGN1cmxcU29ja2V0U3RyZWFtSGFuZGxlQ3VybC5j
cHAiPgogICAgICAgPEZpbHRlcj5wbGF0Zm9ybVxuZXR3b3JrXGN1cmw8L0ZpbHRlcj4KICAgICA8
L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXG5ldHdvcmtc
Y3VybFxTU0xIYW5kbGUuY3BwIj4KKyAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cbmV0d29ya1xjdXJs
PC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxw
bGF0Zm9ybVxzcWxcU1FMaXRlQXV0aG9yaXplci5jcHAiPgogICAgICAgPEZpbHRlcj5wbGF0Zm9y
bVxzcWw8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXHBsYXRmb3JtXHNxbFxTUUxpdGVEYXRhYmFzZS5jcHAiPgogICAgICAgPEZpbHRlcj5wbGF0
Zm9ybVxzcWw8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXHBsYXRmb3JtXHNxbFxTUUxpdGVGaWxlU3lzdGVtLmNwcCI+CiAgICAgICA8RmlsdGVy
PnBsYXRmb3JtXHNxbDwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5ccGxhdGZvcm1cc3FsXFNRTGl0ZVN0YXRlbWVudC5jcHAiPgogICAgICAgPEZp
bHRlcj5wbGF0Zm9ybVxzcWw8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXHNxbFxTUUxpdGVUcmFuc2FjdGlvbi5jcHAiPgogICAg
ICAgPEZpbHRlcj5wbGF0Zm9ybVxzcWw8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTE1
MDc0LDMwICsxNTA3NywzMyBAQAogICAgIDxDdXN0b21CdWlsZFN0ZXAgSW5jbHVkZT0iLi5ccGxh
dGZvcm1cbmV0d29ya1xjdXJsXE11bHRpcGFydEhhbmRsZS5oIj4KICAgICAgIDxGaWx0ZXI+cGxh
dGZvcm1cbmV0d29ya1xjdXJsPC9GaWx0ZXI+CiAgICAgPC9DdXN0b21CdWlsZFN0ZXA+CiAgICAg
PEN1c3RvbUJ1aWxkU3RlcCBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXGN1cmxcUmVzb3Vy
Y2VFcnJvci5oIj4KICAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cbmV0d29ya1xjdXJsPC9GaWx0ZXI+
CiAgICAgPC9DdXN0b21CdWlsZFN0ZXA+CiAgICAgPEN1c3RvbUJ1aWxkU3RlcCBJbmNsdWRlPSIu
LlxwbGF0Zm9ybVxuZXR3b3JrXGN1cmxcUmVzb3VyY2VIYW5kbGVNYW5hZ2VyLmgiPgogICAgICAg
PEZpbHRlcj5wbGF0Zm9ybVxuZXR3b3JrXGN1cmw8L0ZpbHRlcj4KICAgICA8L0N1c3RvbUJ1aWxk
U3RlcD4KICAgICA8Q3VzdG9tQnVpbGRTdGVwIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXG5ldHdvcmtc
Y3VybFxSZXNvdXJjZVJlcXVlc3QuaCI+CiAgICAgICA8RmlsdGVyPnBsYXRmb3JtXG5ldHdvcmtc
Y3VybDwvRmlsdGVyPgogICAgIDwvQ3VzdG9tQnVpbGRTdGVwPgogICAgIDxDdXN0b21CdWlsZFN0
ZXAgSW5jbHVkZT0iLi5ccGxhdGZvcm1cbmV0d29ya1xjdXJsXFJlc291cmNlUmVzcG9uc2UuaCI+
CiAgICAgICA8RmlsdGVyPnBsYXRmb3JtXG5ldHdvcmtcY3VybDwvRmlsdGVyPgogICAgIDwvQ3Vz
dG9tQnVpbGRTdGVwPgorICAgIDxDdXN0b21CdWlsZFN0ZXAgSW5jbHVkZT0iLi5ccGxhdGZvcm1c
bmV0d29ya1xjdXJsXFNTTEhhbmRsZS5oIj4KKyAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cbmV0d29y
a1xjdXJsPC9GaWx0ZXI+CisgICAgPC9DdXN0b21CdWlsZFN0ZXA+CiAgICAgPEN1c3RvbUJ1aWxk
U3RlcCBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxpbWFnZS1kZWNvZGVyc1xnaWZcR0lGSW1hZ2VEZWNv
ZGVyLmgiPgogICAgICAgPEZpbHRlcj5wbGF0Zm9ybVxpbWFnZS1kZWNvZGVyc1xnaWY8L0ZpbHRl
cj4KICAgICA8L0N1c3RvbUJ1aWxkU3RlcD4KICAgICA8Q3VzdG9tQnVpbGRTdGVwIEluY2x1ZGU9
Ii4uXHBsYXRmb3JtXGltYWdlLWRlY29kZXJzXGdpZlxHSUZJbWFnZVJlYWRlci5oIj4KICAgICAg
IDxGaWx0ZXI+cGxhdGZvcm1caW1hZ2UtZGVjb2RlcnNcZ2lmPC9GaWx0ZXI+CiAgICAgPC9DdXN0
b21CdWlsZFN0ZXA+CiAgICAgPEN1c3RvbUJ1aWxkU3RlcCBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxp
bWFnZS1kZWNvZGVyc1xqcGVnXEpQRUdJbWFnZURlY29kZXIuaCI+CiAgICAgICA8RmlsdGVyPnBs
YXRmb3JtXGltYWdlLWRlY29kZXJzXGpwZWc8L0ZpbHRlcj4KICAgICA8L0N1c3RvbUJ1aWxkU3Rl
cD4KICAgICA8Q3VzdG9tQnVpbGRTdGVwIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGltYWdlLWRlY29k
ZXJzXHBuZ1xQTkdJbWFnZURlY29kZXIuaCI+CiAgICAgICA8RmlsdGVyPnBsYXRmb3JtXGltYWdl
LWRlY29kZXJzXHBuZzwvRmlsdGVyPgogICAgIDwvQ3VzdG9tQnVpbGRTdGVwPgogICAgIDxDdXN0
b21CdWlsZFN0ZXAgSW5jbHVkZT0iLi5ccGxhdGZvcm1caW1hZ2UtZGVjb2RlcnNcYm1wXEJNUElt
YWdlRGVjb2Rlci5oIj4KICAgICAgIDxGaWx0ZXI+cGxhdGZvcm1caW1hZ2UtZGVjb2RlcnNcYm1w
PC9GaWx0ZXI+CiAgICAgPC9DdXN0b21CdWlsZFN0ZXA+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgKaW5kZXggZGFmMDY3Yi4uZmY4MDY3NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRs
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUu
aApAQCAtMTM5LDMxICsxMzksMzEgQEAgcHVibGljOgogICAgIENGVVJMU3RvcmFnZVNlc3Npb25S
ZWYgc3RvcmFnZVNlc3Npb24oKSBjb25zdDsKICAgICBDRlVSTENvbm5lY3Rpb25SZWYgY29ubmVj
dGlvbigpIGNvbnN0OwogICAgIENGVVJMQ29ubmVjdGlvblJlZiByZWxlYXNlQ29ubmVjdGlvbkZv
ckRvd25sb2FkKCk7CiAgICAgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBjdXJyZW50UmVxdWVzdCgp
IGNvbnN0OwogICAgIHN0YXRpYyB2b2lkIHNldEhvc3RBbGxvd3NBbnlIVFRQU0NlcnRpZmljYXRl
KGNvbnN0IFN0cmluZyYpOwogICAgIHN0YXRpYyB2b2lkIHNldENsaWVudENlcnRpZmljYXRlKGNv
bnN0IFN0cmluZyYgaG9zdCwgQ0ZEYXRhUmVmKTsKICAgICBzdGF0aWMgQ0ZVUkxDb25uZWN0aW9u
Q2xpZW50X1Y2KiBjb25uZWN0aW9uQ2xpZW50Q2FsbGJhY2tzKCk7CiAKICNpZiBVU0UoUVVJQ0tf
TE9PSykKICAgICBRdWlja0xvb2tIYW5kbGUqIHF1aWNrTG9va0hhbmRsZSgpIHsgcmV0dXJuIG1f
cXVpY2tMb29rLmdldCgpOyB9CiAgICAgdm9pZCBzZXRRdWlja0xvb2tIYW5kbGUoUGFzc093blB0
cjxRdWlja0xvb2tIYW5kbGU+IGhhbmRsZSkgeyBtX3F1aWNrTG9vayA9IGhhbmRsZTsgfQogI2Vu
ZGlmIC8vIFVTRShRVUlDS19MT09LKQogCiAjZW5kaWYgLy8gVVNFKENGTkVUV09SSykKIAotI2lm
IFBMQVRGT1JNKFdJTikgJiYgVVNFKENVUkwpCisjaWYgKFBMQVRGT1JNKFdJTikgfHwgUExBVEZP
Uk0oTklYKSkgJiYgVVNFKENVUkwpCiAgICAgc3RhdGljIHZvaWQgc2V0SG9zdEFsbG93c0FueUhU
VFBTQ2VydGlmaWNhdGUoY29uc3QgU3RyaW5nJik7CiAjZW5kaWYKICNpZiBQTEFURk9STShXSU4p
ICYmIFVTRShDVVJMKSAmJiBVU0UoQ0YpCiAgICAgc3RhdGljIHZvaWQgc2V0Q2xpZW50Q2VydGlm
aWNhdGUoY29uc3QgU3RyaW5nJiBob3N0LCBDRkRhdGFSZWYpOwogI2VuZGlmCiAKICAgICBib29s
IHNob3VsZENvbnRlbnRTbmlmZigpIGNvbnN0OwogICAgIHN0YXRpYyBib29sIHNob3VsZENvbnRl
bnRTbmlmZlVSTChjb25zdCBVUkwmKTsKIAogICAgIHN0YXRpYyB2b2lkIGZvcmNlQ29udGVudFNu
aWZmaW5nKCk7CiAKICNpZiBVU0UoV0lOSU5FVCkKICAgICB2b2lkIHNldFN5bmNocm9ub3VzSW50
ZXJuZXRIYW5kbGUoSElOVEVSTkVUKTsKICAgICB2b2lkIGZpbGVMb2FkVGltZXIoVGltZXI8UmVz
b3VyY2VIYW5kbGU+Kik7CiAgICAgdm9pZCBvblJlZGlyZWN0KCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oCmlu
ZGV4IGE4ZTA5NzcuLjc1ZTIyN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oCkBAIC05MCwzMCArOTAsMzEg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgLCBtX2ludGVybmV0SGFuZGxlKDAp
CiAgICAgICAgICAgICAsIG1fY29ubmVjdEhhbmRsZSgwKQogICAgICAgICAgICAgLCBtX3JlcXVl
c3RIYW5kbGUoMCkKICAgICAgICAgICAgICwgbV9zZW50RW5kUmVxdWVzdChmYWxzZSkKICAgICAg
ICAgICAgICwgbV9ieXRlc1JlbWFpbmluZ1RvV3JpdGUoMCkKICAgICAgICAgICAgICwgbV9sb2Fk
U3luY2hyb25vdXNseShmYWxzZSkKICAgICAgICAgICAgICwgbV9oYXNSZWNlaXZlZFJlc3BvbnNl
KGZhbHNlKQogI2VuZGlmCiAjaWYgVVNFKENVUkwpCiAgICAgICAgICAgICAsIG1faGFuZGxlKDAp
CiAgICAgICAgICAgICAsIG1fdXJsKDApCiAgICAgICAgICAgICAsIG1fY3VzdG9tSGVhZGVycygw
KQogICAgICAgICAgICAgLCBtX2NhbmNlbGxlZChmYWxzZSkKICAgICAgICAgICAgICwgbV9hdXRo
RmFpbHVyZUNvdW50KDApCiAgICAgICAgICAgICAsIG1fZm9ybURhdGFTdHJlYW0obG9hZGVyKQor
ICAgICAgICAgICAgLCBtX3NzbEVycm9ycygwKQogI2VuZGlmCiAjaWYgVVNFKFNPVVApCiAgICAg
ICAgICAgICAsIG1fY2FuY2VsbGVkKGZhbHNlKQogICAgICAgICAgICAgLCBtX3JlYWRCdWZmZXJQ
dHIoMCkKICAgICAgICAgICAgICwgbV9yZWFkQnVmZmVyU2l6ZSgwKQogICAgICAgICAgICAgLCBt
X2JvZHlTaXplKDApCiAgICAgICAgICAgICAsIG1fYm9keURhdGFTZW50KDApCiAgICAgICAgICAg
ICAsIG1fcmVkaXJlY3RDb3VudCgwKQogI2VuZGlmCiAjaWYgUExBVEZPUk0oTUFDKQogICAgICAg
ICAgICAgLCBtX3N0YXJ0V2hlblNjaGVkdWxlZChmYWxzZSkKICAgICAgICAgICAgICwgbV9uZWVk
c1NpdGVTcGVjaWZpY1F1aXJrcyhmYWxzZSkKICAgICAgICAgICAgICwgbV9jdXJyZW50TWFjQ2hh
bGxlbmdlKG5pbCkKICNlbmRpZgogICAgICAgICAgICAgLCBtX3NjaGVkdWxlZEZhaWx1cmVUeXBl
KFJlc291cmNlSGFuZGxlOjpOb0ZhaWx1cmUpCkBAIC0xNjgsMzAgKzE2OSwzMSBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIFZlY3RvcjxjaGFyPiBtX2Zvcm1EYXRhOwogICAgICAgICBz
aXplX3QgbV9ieXRlc1JlbWFpbmluZ1RvV3JpdGU7CiAgICAgICAgIGJvb2wgbV9sb2FkU3luY2hy
b25vdXNseTsKICAgICAgICAgYm9vbCBtX2hhc1JlY2VpdmVkUmVzcG9uc2U7CiAgICAgICAgIFN0
cmluZyBtX3JlZGlyZWN0VXJsOwogI2VuZGlmCiAjaWYgVVNFKENVUkwpCiAgICAgICAgIENVUkwq
IG1faGFuZGxlOwogICAgICAgICBjaGFyKiBtX3VybDsKICAgICAgICAgc3RydWN0IGN1cmxfc2xp
c3QqIG1fY3VzdG9tSGVhZGVyczsKICAgICAgICAgUmVzb3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNl
OwogICAgICAgICBib29sIG1fY2FuY2VsbGVkOwogICAgICAgICB1bnNpZ25lZCBzaG9ydCBtX2F1
dGhGYWlsdXJlQ291bnQ7CiAKICAgICAgICAgRm9ybURhdGFTdHJlYW0gbV9mb3JtRGF0YVN0cmVh
bTsKKyAgICAgICAgdW5zaWduZWQgbV9zc2xFcnJvcnM7CiAgICAgICAgIFZlY3RvcjxjaGFyPiBt
X3Bvc3RCeXRlczsKIAogICAgICAgICBPd25QdHI8TXVsdGlwYXJ0SGFuZGxlPiBtX211bHRpcGFy
dEhhbmRsZTsKICNlbmRpZgogI2lmIFVTRShTT1VQKQogICAgICAgICBHUmVmUHRyPFNvdXBNZXNz
YWdlPiBtX3NvdXBNZXNzYWdlOwogICAgICAgICBSZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7
CiAgICAgICAgIGJvb2wgbV9jYW5jZWxsZWQ7CiAgICAgICAgIEdSZWZQdHI8U291cFJlcXVlc3Q+
IG1fc291cFJlcXVlc3Q7CiAgICAgICAgIEdSZWZQdHI8R0lucHV0U3RyZWFtPiBtX2lucHV0U3Ry
ZWFtOwogICAgICAgICBHUmVmUHRyPFNvdXBNdWx0aXBhcnRJbnB1dFN0cmVhbT4gbV9tdWx0aXBh
cnRJbnB1dFN0cmVhbTsKICAgICAgICAgR1JlZlB0cjxHQ2FuY2VsbGFibGU+IG1fY2FuY2VsbGFi
bGU7CiAgICAgICAgIEdSZWZQdHI8R0FzeW5jUmVzdWx0PiBtX2RlZmVycmVkUmVzdWx0OwogICAg
ICAgICBHUmVmUHRyPEdTb3VyY2U+IG1fdGltZW91dFNvdXJjZTsKICAgICAgICAgR093blB0cjxj
aGFyPiBtX2RlZmF1bHRSZWFkQnVmZmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlRXJyb3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUVycm9yLmgKaW5kZXggY2E4ZDM2Yi4uNzU1NWY1NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNl
RXJyb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3Vy
Y2VFcnJvci5oCkBAIC0yMSwyOCArMjEsMzQgQEAKICAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKICAqLwogCiAjaWZuZGVmIFJlc291cmNlRXJyb3JfaAogI2RlZmluZSBS
ZXNvdXJjZUVycm9yX2gKIAogI2luY2x1ZGUgIlJlc291cmNlRXJyb3JCYXNlLmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUmVzb3VyY2VFcnJvciA6IHB1YmxpYyBSZXNvdXJjZUVy
cm9yQmFzZQogewogcHVibGljOgotICAgIFJlc291cmNlRXJyb3IoKQorICAgIFJlc291cmNlRXJy
b3IoKSA6IG1fc3NsRXJyb3JzKDApCiAgICAgewogICAgIH0KIAogICAgIFJlc291cmNlRXJyb3Io
Y29uc3QgU3RyaW5nJiBkb21haW4sIGludCBlcnJvckNvZGUsIGNvbnN0IFN0cmluZyYgZmFpbGlu
Z1VSTCwgY29uc3QgU3RyaW5nJiBsb2NhbGl6ZWREZXNjcmlwdGlvbikKLSAgICAgICAgOiBSZXNv
dXJjZUVycm9yQmFzZShkb21haW4sIGVycm9yQ29kZSwgZmFpbGluZ1VSTCwgbG9jYWxpemVkRGVz
Y3JpcHRpb24pCisgICAgICAgIDogUmVzb3VyY2VFcnJvckJhc2UoZG9tYWluLCBlcnJvckNvZGUs
IGZhaWxpbmdVUkwsIGxvY2FsaXplZERlc2NyaXB0aW9uKSwgbV9zc2xFcnJvcnMoMCkKICAgICB7
CiAgICAgfQorCisgICAgdW5zaWduZWQgc3NsRXJyb3JzKCkgY29uc3QgeyByZXR1cm4gbV9zc2xF
cnJvcnM7IH0KKyAgICB2b2lkIHNldFNTTEVycm9ycyh1bnNpZ25lZCBzc2xWZXJpZnlSZXN1bHQp
IHsgbV9zc2xFcnJvcnMgPSBzc2xWZXJpZnlSZXN1bHQ7IH0KKworcHJpdmF0ZToKKyAgICB1bnNp
Z25lZCBtX3NzbEVycm9yczsKIH07CiAKIH0KIAogI2VuZGlmIC8vIFJlc291cmNlRXJyb3JfaF8K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJj
ZUhhbmRsZUN1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jl
c291cmNlSGFuZGxlQ3VybC5jcHAKaW5kZXggMzE4OTdjZi4uNDAxM2NmMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFu
ZGxlQ3VybC5jcHAKQEAgLTIyLDMwICsyMiwzMSBAQAogICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQogICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCiAKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJj
ZUxvYWRlci5oIgogI2luY2x1ZGUgIkNyZWRlbnRpYWxTdG9yYWdlLmgiCiAjaW5jbHVkZSAiTmV0
d29ya2luZ0NvbnRleHQuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUg
IlJlc291cmNlSGFuZGxlSW50ZXJuYWwuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZU1hbmFn
ZXIuaCIKKyNpbmNsdWRlICJTU0xIYW5kbGUuaCIKIAogI2lmIFBMQVRGT1JNKFdJTikgJiYgVVNF
KENGKQogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0
ci5oPgogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgV2ViQ29yZVN5bmNo
cm9ub3VzTG9hZGVyIDogcHVibGljIFJlc291cmNlSGFuZGxlQ2xpZW50IHsKIHB1YmxpYzoKICAg
ICBXZWJDb3JlU3luY2hyb25vdXNMb2FkZXIoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNl
aXZlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAg
ICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiwgY29uc3QgY2hh
ciosIGludCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmlu
aXNoTG9hZGluZyhSZXNvdXJjZUhhbmRsZSosIGRvdWJsZSAvKmZpbmlzaFRpbWUqLyk7CkBAIC0x
MDMsNDMgKzEwNCwzNCBAQCBib29sIFJlc291cmNlSGFuZGxlOjpzdGFydCgpCiAgICAgLy8gSWYg
dGhlIGZyYW1lIGlzIG5vdCBudWxsIGJ1dCB0aGUgcGFnZSBpcyBudWxsIHRoaXMgbXVzdCBiZSBh
biBhdHRlbXB0ZWQKICAgICAvLyBsb2FkIGZyb20gYW4gdW5sb2FkIGhhbmRsZXIsIHNvIGxldCdz
IGp1c3QgYmxvY2sgaXQuCiAgICAgLy8gSWYgYm90aCB0aGUgZnJhbWUgYW5kIHRoZSBwYWdlIGFy
ZSBub3QgbnVsbCB0aGUgY29udGV4dCBpcyB2YWxpZC4KICAgICBpZiAoZC0+bV9jb250ZXh0ICYm
ICFkLT5tX2NvbnRleHQtPmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
UmVzb3VyY2VIYW5kbGVNYW5hZ2VyOjpzaGFyZWRJbnN0YW5jZSgpLT5hZGQodGhpcyk7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmNhbmNlbCgpCiB7CiAgICAg
UmVzb3VyY2VIYW5kbGVNYW5hZ2VyOjpzaGFyZWRJbnN0YW5jZSgpLT5jYW5jZWwodGhpcyk7CiB9
CiAKLSNpZiBQTEFURk9STShXSU4pICYmIFVTRShDRikKLXN0YXRpYyBIYXNoU2V0PFN0cmluZz4m
IGFsbG93c0FueUhUVFBTQ2VydGlmaWNhdGVIb3N0cygpCi17Ci0gICAgc3RhdGljIEhhc2hTZXQ8
U3RyaW5nPiBob3N0czsKLQotICAgIHJldHVybiBob3N0czsKLX0KLQogdm9pZCBSZXNvdXJjZUhh
bmRsZTo6c2V0SG9zdEFsbG93c0FueUhUVFBTQ2VydGlmaWNhdGUoY29uc3QgU3RyaW5nJiBob3N0
KQogewotICAgIGFsbG93c0FueUhUVFBTQ2VydGlmaWNhdGVIb3N0cygpLmFkZChob3N0Lmxvd2Vy
KCkpOworICAgIGFsbG93c0FueUhUVFBTQ2VydGlmaWNhdGVIb3N0cyhob3N0Lmxvd2VyKCkpOwog
fQotI2VuZGlmCiAKICNpZiBQTEFURk9STShXSU4pICYmIFVTRShDRikKIC8vIEZJWE1FOiAgVGhl
IENGRGF0YVJlZiB3aWxsIG5lZWQgdG8gYmUgc29tZXRoaW5nIGVsc2Ugd2hlbgogLy8gYnVpbGRp
bmcgd2l0aG91dCAKIHN0YXRpYyBIYXNoTWFwPFN0cmluZywgUmV0YWluUHRyPENGRGF0YVJlZj4g
PiYgY2xpZW50Q2VydHMoKQogewogICAgIHN0YXRpYyBIYXNoTWFwPFN0cmluZywgUmV0YWluUHRy
PENGRGF0YVJlZj4gPiBjZXJ0czsKICAgICByZXR1cm4gY2VydHM7CiB9CiAKIHZvaWQgUmVzb3Vy
Y2VIYW5kbGU6OnNldENsaWVudENlcnRpZmljYXRlKGNvbnN0IFN0cmluZyYgaG9zdCwgQ0ZEYXRh
UmVmIGNlcnQpCiB7CiAgICAgY2xpZW50Q2VydHMoKS5zZXQoaG9zdC5sb3dlcigpLCBjZXJ0KTsK
IH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL1Jlc291cmNlSGFuZGxlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVNYW5hZ2VyLmNwcAppbmRleCAyMTM4ZDI3Li41YTcy
OTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVz
b3VyY2VIYW5kbGVNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVNYW5hZ2VyLmNwcApAQCAtMzQsMzAgKzM0LDMxIEBACiAg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJSZXNv
dXJjZUhhbmRsZU1hbmFnZXIuaCIKIAogI2luY2x1ZGUgIkNyZWRlbnRpYWxTdG9yYWdlLmgiCiAj
aW5jbHVkZSAiQ3VybENhY2hlTWFuYWdlci5oIgogI2luY2x1ZGUgIkRhdGFVUkwuaCIKICNpbmNs
dWRlICJIVFRQUGFyc2Vycy5oIgogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKICNpbmNs
dWRlICJNdWx0aXBhcnRIYW5kbGUuaCIKICNpbmNsdWRlICJSZXNvdXJjZUVycm9yLmgiCiAjaW5j
bHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZUludGVybmFs
LmgiCisjaW5jbHVkZSAiU1NMSGFuZGxlLmgiCiAKICNpZiBPUyhXSU5ET1dTKQogI2luY2x1ZGUg
IldlYkNvcmVCdW5kbGVXaW4uaCIKICNpbmNsdWRlIDxzaGxvYmouaD4KICNpbmNsdWRlIDxzaGx3
YXBpLmg+CiAjZWxzZQogI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgogI2RlZmluZSBNQVhfUEFUSCBN
QVhQQVRITEVOCiAjZW5kaWYKIAogI2luY2x1ZGUgPGVycm5vLmg+CiAjaW5jbHVkZSA8c3RkaW8u
aD4KICNpZiBVU0UoQ0YpCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2VuZGlmCkBAIC02
MTAsMzEgKzYxMSwzMyBAQCB2b2lkIFJlc291cmNlSGFuZGxlTWFuYWdlcjo6ZG93bmxvYWRUaW1l
ckNhbGxiYWNrKFRpbWVyPFJlc291cmNlSGFuZGxlTWFuYWdlcj4qCiAKICAgICAgICAgICAgIGlm
IChkLT5tX211bHRpcGFydEhhbmRsZSkKICAgICAgICAgICAgICAgICBkLT5tX211bHRpcGFydEhh
bmRsZS0+Y29udGVudEVuZGVkKCk7CiAKICAgICAgICAgICAgIGlmIChkLT5jbGllbnQoKSkgewog
ICAgICAgICAgICAgICAgIGQtPmNsaWVudCgpLT5kaWRGaW5pc2hMb2FkaW5nKGpvYiwgMCk7CiAg
ICAgICAgICAgICAgICAgQ3VybENhY2hlTWFuYWdlcjo6Z2V0SW5zdGFuY2UoKS5kaWRGaW5pc2hM
b2FkaW5nKGpvYi0+Zmlyc3RSZXF1ZXN0KCkudXJsKCkuc3RyaW5nKCkpOwogICAgICAgICAgICAg
fQogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgY2hhciogdXJsID0gMDsKICAgICAgICAg
ICAgIGN1cmxfZWFzeV9nZXRpbmZvKGQtPm1faGFuZGxlLCBDVVJMSU5GT19FRkZFQ1RJVkVfVVJM
LCAmdXJsKTsKICNpZm5kZWYgTkRFQlVHCiAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkN1
cmwgRVJST1IgZm9yIHVybD0nJXMnLCBlcnJvcjogJyVzJ1xuIiwgdXJsLCBjdXJsX2Vhc3lfc3Ry
ZXJyb3IobXNnLT5kYXRhLnJlc3VsdCkpOwogI2VuZGlmCiAgICAgICAgICAgICBpZiAoZC0+Y2xp
ZW50KCkpIHsKLSAgICAgICAgICAgICAgICBkLT5jbGllbnQoKS0+ZGlkRmFpbChqb2IsIFJlc291
cmNlRXJyb3IoU3RyaW5nKCksIG1zZy0+ZGF0YS5yZXN1bHQsIFN0cmluZyh1cmwpLCBTdHJpbmco
Y3VybF9lYXN5X3N0cmVycm9yKG1zZy0+ZGF0YS5yZXN1bHQpKSkpOworICAgICAgICAgICAgICAg
IFJlc291cmNlRXJyb3IgcmVzb3VyY2VFcnJvcihTdHJpbmcoKSwgbXNnLT5kYXRhLnJlc3VsdCwg
U3RyaW5nKHVybCksIFN0cmluZyhjdXJsX2Vhc3lfc3RyZXJyb3IobXNnLT5kYXRhLnJlc3VsdCkp
KTsKKyAgICAgICAgICAgICAgICByZXNvdXJjZUVycm9yLnNldFNTTEVycm9ycyhkLT5tX3NzbEVy
cm9ycyk7CisgICAgICAgICAgICAgICAgZC0+Y2xpZW50KCktPmRpZEZhaWwoam9iLCByZXNvdXJj
ZUVycm9yKTsKICAgICAgICAgICAgICAgICBDdXJsQ2FjaGVNYW5hZ2VyOjpnZXRJbnN0YW5jZSgp
LmRpZEZhaWwoam9iLT5maXJzdFJlcXVlc3QoKS51cmwoKS5zdHJpbmcoKSk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KIAogICAgICAgICByZW1vdmVGcm9tQ3VybChqb2IpOwogICAgIH0KIAog
ICAgIGJvb2wgc3RhcnRlZCA9IHN0YXJ0U2NoZWR1bGVkSm9icygpOyAvLyBuZXcgam9icyBtaWdo
dCBoYXZlIGJlZW4gYWRkZWQgaW4gdGhlIG1lYW50aW1lCiAKICAgICBpZiAoIW1fZG93bmxvYWRU
aW1lci5pc0FjdGl2ZSgpICYmIChzdGFydGVkIHx8IChydW5uaW5nSGFuZGxlcyA+IDApKSkKICAg
ICAgICAgbV9kb3dubG9hZFRpbWVyLnN0YXJ0T25lU2hvdChwb2xsVGltZVNlY29uZHMpOwogfQog
CiB2b2lkIFJlc291cmNlSGFuZGxlTWFuYWdlcjo6c2V0UHJveHlJbmZvKGNvbnN0IFN0cmluZyYg
aG9zdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg
bG9uZyBwb3J0LApAQCAtOTMwLDQ4ICs5MzMsNTEgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZU1hbmFn
ZXI6OmluaXRpYWxpemVIYW5kbGUoUmVzb3VyY2VIYW5kbGUqIGpvYikKICAgICAgICAgZC0+bV9y
ZXNwb25zZS5zZXRNaW1lVHlwZShNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRNSU1FVHlwZUZvclBhdGgo
dXJsKSk7CiAgICAgfQogCiAgICAgZC0+bV9oYW5kbGUgPSBjdXJsX2Vhc3lfaW5pdCgpOwogCiAg
ICAgaWYgKGQtPm1fZGVmZXJzTG9hZGluZykgewogICAgICAgICBDVVJMY29kZSBlcnJvciA9IGN1
cmxfZWFzeV9wYXVzZShkLT5tX2hhbmRsZSwgQ1VSTFBBVVNFX0FMTCk7CiAgICAgICAgIC8vIElm
IHdlIGRpZCBub3QgcGF1c2UgdGhlIGhhbmRsZSwgd2Ugd291bGQgQVNTRVJUIGluIHRoZQogICAg
ICAgICAvLyBoZWFkZXIgY2FsbGJhY2suIFNvIGp1c3QgYXNzZXJ0IGhlcmUuCiAgICAgICAgIEFT
U0VSVF9VTlVTRUQoZXJyb3IsIGVycm9yID09IENVUkxFX09LKTsKICAgICB9CiAjaWZuZGVmIE5E
RUJVRwogICAgIGlmIChnZXRlbnYoIkRFQlVHX0NVUkwiKSkKICAgICAgICAgY3VybF9lYXN5X3Nl
dG9wdChkLT5tX2hhbmRsZSwgQ1VSTE9QVF9WRVJCT1NFLCAxKTsKICNlbmRpZgorICAgIGN1cmxf
ZWFzeV9zZXRvcHQoZC0+bV9oYW5kbGUsIENVUkxPUFRfU1NMX1ZFUklGWVBFRVIsIDFMKTsKKyAg
ICBjdXJsX2Vhc3lfc2V0b3B0KGQtPm1faGFuZGxlLCBDVVJMT1BUX1NTTF9WRVJJRllIT1NULCAy
TCk7CiAgICAgY3VybF9lYXN5X3NldG9wdChkLT5tX2hhbmRsZSwgQ1VSTE9QVF9QUklWQVRFLCBq
b2IpOwogICAgIGN1cmxfZWFzeV9zZXRvcHQoZC0+bV9oYW5kbGUsIENVUkxPUFRfRVJST1JCVUZG
RVIsIG1fY3VybEVycm9yQnVmZmVyKTsKICAgICBjdXJsX2Vhc3lfc2V0b3B0KGQtPm1faGFuZGxl
LCBDVVJMT1BUX1dSSVRFRlVOQ1RJT04sIHdyaXRlQ2FsbGJhY2spOwogICAgIGN1cmxfZWFzeV9z
ZXRvcHQoZC0+bV9oYW5kbGUsIENVUkxPUFRfV1JJVEVEQVRBLCBqb2IpOwogICAgIGN1cmxfZWFz
eV9zZXRvcHQoZC0+bV9oYW5kbGUsIENVUkxPUFRfSEVBREVSRlVOQ1RJT04sIGhlYWRlckNhbGxi
YWNrKTsKICAgICBjdXJsX2Vhc3lfc2V0b3B0KGQtPm1faGFuZGxlLCBDVVJMT1BUX1dSSVRFSEVB
REVSLCBqb2IpOwogICAgIGN1cmxfZWFzeV9zZXRvcHQoZC0+bV9oYW5kbGUsIENVUkxPUFRfQVVU
T1JFRkVSRVIsIDEpOwogICAgIGN1cmxfZWFzeV9zZXRvcHQoZC0+bV9oYW5kbGUsIENVUkxPUFRf
Rk9MTE9XTE9DQVRJT04sIDEpOwogICAgIGN1cmxfZWFzeV9zZXRvcHQoZC0+bV9oYW5kbGUsIENV
UkxPUFRfTUFYUkVESVJTLCAxMCk7CiAgICAgY3VybF9lYXN5X3NldG9wdChkLT5tX2hhbmRsZSwg
Q1VSTE9QVF9IVFRQQVVUSCwgQ1VSTEFVVEhfQU5ZKTsKICAgICBjdXJsX2Vhc3lfc2V0b3B0KGQt
Pm1faGFuZGxlLCBDVVJMT1BUX1NIQVJFLCBtX2N1cmxTaGFyZUhhbmRsZSk7CiAgICAgY3VybF9l
YXN5X3NldG9wdChkLT5tX2hhbmRsZSwgQ1VSTE9QVF9ETlNfQ0FDSEVfVElNRU9VVCwgNjAgKiA1
KTsgLy8gNSBtaW51dGVzCiAgICAgY3VybF9lYXN5X3NldG9wdChkLT5tX2hhbmRsZSwgQ1VSTE9Q
VF9QUk9UT0NPTFMsIGFsbG93ZWRQcm90b2NvbHMpOwogICAgIGN1cmxfZWFzeV9zZXRvcHQoZC0+
bV9oYW5kbGUsIENVUkxPUFRfUkVESVJfUFJPVE9DT0xTLCBhbGxvd2VkUHJvdG9jb2xzKTsKLSAg
ICAvLyBGSVhNRTogRW5hYmxlIFNTTCB2ZXJpZmljYXRpb24gd2hlbiB3ZSBoYXZlIGEgd2F5IG9m
IHNoaXBwaW5nIGNlcnRzCi0gICAgLy8gYW5kL29yIHJlcG9ydGluZyBTU0wgZXJyb3JzIHRvIHRo
ZSB1c2VyLgorCiAgICAgaWYgKGlnbm9yZVNTTEVycm9ycykKICAgICAgICAgY3VybF9lYXN5X3Nl
dG9wdChkLT5tX2hhbmRsZSwgQ1VSTE9QVF9TU0xfVkVSSUZZUEVFUiwgZmFsc2UpOworICAgIGVs
c2UKKyAgICAgICAgc2V0U1NMVmVyaWZ5T3B0aW9ucyhqb2IpOwogCiAgICAgaWYgKCFtX2NlcnRp
ZmljYXRlUGF0aC5pc051bGwoKSkKICAgICAgICBjdXJsX2Vhc3lfc2V0b3B0KGQtPm1faGFuZGxl
LCBDVVJMT1BUX0NBSU5GTywgbV9jZXJ0aWZpY2F0ZVBhdGguZGF0YSgpKTsKIAogICAgIC8vIGVu
YWJsZSBnemlwIGFuZCBkZWZsYXRlIHRocm91Z2ggQWNjZXB0LUVuY29kaW5nOgogICAgIGN1cmxf
ZWFzeV9zZXRvcHQoZC0+bV9oYW5kbGUsIENVUkxPUFRfRU5DT0RJTkcsICIiKTsKIAogICAgIC8v
IHVybCBtdXN0IHJlbWFpbiB2YWxpZCB0aHJvdWdoIHRoZSByZXF1ZXN0CiAgICAgQVNTRVJUKCFk
LT5tX3VybCk7CiAKICAgICAvLyB1cmwgaXMgaW4gQVNDSUkgc28gbGF0aW4xKCkgd2lsbCBvbmx5
IGNvbnZlcnQgaXQgdG8gY2hhciogd2l0aG91dCBjaGFyYWN0ZXIgdHJhbnNsYXRpb24uCiAgICAg
ZC0+bV91cmwgPSBmYXN0U3RyRHVwKHVybFN0cmluZy5sYXRpbjEoKS5kYXRhKCkpOwogICAgIGN1
cmxfZWFzeV9zZXRvcHQoZC0+bV9oYW5kbGUsIENVUkxPUFRfVVJMLCBkLT5tX3VybCk7CiAKICAg
ICBpZiAobV9jb29raWVKYXJGaWxlTmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9TU0xIYW5kbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL1NTTEhhbmRsZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uZmFhNWVmNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9TU0xIYW5kbGUuY3BwCkBAIC0wLDAgKzEsMTk3IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEzIFVuaXZlcnNpdHkgb2YgU3plZ2VkCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBVTklWRVJTSVRZIE9GIFNaRUdFRCBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisKKyNpbmNsdWRlICJTU0xIYW5kbGUuaCIKKworI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlSW50
ZXJuYWwuaCIKKworI2luY2x1ZGUgPG9wZW5zc2wvcGVtLmg+CisjaW5jbHVkZSA8b3BlbnNzbC9z
c2wuaD4KKyNpbmNsdWRlIDxvcGVuc3NsL3g1MDlfdmZ5Lmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworc3RhdGljIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IGFsbG93ZWRIb3N0czsKKwordm9p
ZCBhbGxvd3NBbnlIVFRQU0NlcnRpZmljYXRlSG9zdHMoY29uc3QgU3RyaW5nJiBob3N0KQorewor
ICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+OjppdGVyYXRvciBpdCA9IGFsbG93ZWRIb3N0cy5m
aW5kKGhvc3QpOworICAgIGlmIChpdCAhPSBhbGxvd2VkSG9zdHMuZW5kKCkpCisgICAgICAgIGl0
LT52YWx1ZSA9IFN0cmluZygpOworICAgIGVsc2UKKyAgICAgICAgYWxsb3dlZEhvc3RzLmFkZCho
b3N0LCBTdHJpbmcoKSk7Cit9CisKK2Jvb2wgc3NsSWdub3JlSFRUUFNDZXJ0aWZpY2F0ZShjb25z
dCBTdHJpbmcmIGhvc3QsIGNvbnN0IFN0cmluZyYgY2VydCkKK3sKKyAgICBIYXNoTWFwPFN0cmlu
ZywgU3RyaW5nPjo6aXRlcmF0b3IgaXQgPSBhbGxvd2VkSG9zdHMuZmluZChob3N0KTsKKyAgICBp
ZiAoaXQgIT0gYWxsb3dlZEhvc3RzLmVuZCgpKSB7CisgICAgICAgIGlmICgoaXQtPnZhbHVlKS5p
c0VtcHR5KCkpIHsKKyAgICAgICAgICAgIGl0LT52YWx1ZSA9IGNlcnQ7CisgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoaXQtPnZhbHVlID09IGNlcnQpCisg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCit1
bnNpZ25lZCBzc2xDZXJ0aWZpY2F0ZUZsYWcoY29uc3QgdW5zaWduZWQmIHNzbEVycm9yKQorewor
ICAgIHN3aXRjaCAoc3NsRXJyb3IpIHsKKyAgICBjYXNlIFg1MDlfVl9FUlJfVU5BQkxFX1RPX0dF
VF9JU1NVRVJfQ0VSVCA6IC8vIHRoZSBpc3N1ZXIgY2VydGlmaWNhdGUgY291bGQgbm90IGJlIGZv
dW5kOiB0aGlzIG9jY3VycyBpZiB0aGUgaXNzdWVyIGNlcnRpZmljYXRlIG9mIGFuIHVudHJ1c3Rl
ZCBjZXJ0aWZpY2F0ZSBjYW5ub3QgYmUgZm91bmQuCisgICAgY2FzZSBYNTA5X1ZfRVJSX1VOQUJM
RV9UT19HRVRfQ1JMIDogLy8gdGhlIENSTCBvZiBhIGNlcnRpZmljYXRlIGNvdWxkIG5vdCBiZSBm
b3VuZC4KKyAgICBjYXNlIFg1MDlfVl9FUlJfVU5BQkxFX1RPX0dFVF9JU1NVRVJfQ0VSVF9MT0NB
TExZIDogLy8gdGhlIGlzc3VlciBjZXJ0aWZpY2F0ZSBvZiBhIGxvY2FsbHkgbG9va2VkIHVwIGNl
cnRpZmljYXRlIGNvdWxkIG5vdCBiZSBmb3VuZC4gVGhpcyBub3JtYWxseSBtZWFucyB0aGUgbGlz
dCBvZiB0cnVzdGVkIGNlcnRpZmljYXRlcyBpcyBub3QgY29tcGxldGUuCisgICAgICAgIHJldHVy
biBTU0xfQ0VSVElGSUNBVEVfVU5LTk9XTl9DQTsKKyAgICBjYXNlIFg1MDlfVl9FUlJfVU5BQkxF
X1RPX0RFQ1JZUFRfQ0VSVF9TSUdOQVRVUkUgOiAvLyB0aGUgY2VydGlmaWNhdGUgc2lnbmF0dXJl
IGNvdWxkIG5vdCBiZSBkZWNyeXB0ZWQuIFRoaXMgbWVhbnMgdGhhdCB0aGUgYWN0dWFsIHNpZ25h
dHVyZSB2YWx1ZSBjb3VsZCBub3QgYmUgZGV0ZXJtaW5lZCByYXRoZXIgdGhhbiBpdCBub3QgbWF0
Y2hpbmcgdGhlIGV4cGVjdGVkIHZhbHVlLCB0aGlzIGlzIG9ubHkgbWVhbmluZ2Z1bCBmb3IgUlNB
IGtleXMuCisgICAgY2FzZSBYNTA5X1ZfRVJSX1VOQUJMRV9UT19ERUNSWVBUX0NSTF9TSUdOQVRV
UkUgOiAvLyB0aGUgQ1JMIHNpZ25hdHVyZSBjb3VsZCBub3QgYmUgZGVjcnlwdGVkOiB0aGlzIG1l
YW5zIHRoYXQgdGhlIGFjdHVhbCBzaWduYXR1cmUgdmFsdWUgY291bGQgbm90IGJlIGRldGVybWlu
ZWQgcmF0aGVyIHRoYW4gaXQgbm90IG1hdGNoaW5nIHRoZSBleHBlY3RlZCB2YWx1ZS4gVW51c2Vk
LgorICAgIGNhc2UgWDUwOV9WX0VSUl9VTkFCTEVfVE9fREVDT0RFX0lTU1VFUl9QVUJMSUNfS0VZ
IDogLy8gdGhlIHB1YmxpYyBrZXkgaW4gdGhlIGNlcnRpZmljYXRlIFN1YmplY3RQdWJsaWNLZXlJ
bmZvIGNvdWxkIG5vdCBiZSByZWFkLgorICAgIGNhc2UgWDUwOV9WX0VSUl9DRVJUX1NJR05BVFVS
RV9GQUlMVVJFIDogLy8gdGhlIHNpZ25hdHVyZSBvZiB0aGUgY2VydGlmaWNhdGUgaXMgaW52YWxp
ZC4KKyAgICBjYXNlIFg1MDlfVl9FUlJfREVQVEhfWkVST19TRUxGX1NJR05FRF9DRVJUIDogLy8g
dGhlIHBhc3NlZCBjZXJ0aWZpY2F0ZSBpcyBzZWxmIHNpZ25lZCBhbmQgdGhlIHNhbWUgY2VydGlm
aWNhdGUgY2Fubm90IGJlIGZvdW5kIGluIHRoZSBsaXN0IG9mIHRydXN0ZWQgY2VydGlmaWNhdGVz
LgorICAgIGNhc2UgWDUwOV9WX0VSUl9TRUxGX1NJR05FRF9DRVJUX0lOX0NIQUlOIDogLy8gdGhl
IGNlcnRpZmljYXRlIGNoYWluIGNvdWxkIGJlIGJ1aWx0IHVwIHVzaW5nIHRoZSB1bnRydXN0ZWQg
Y2VydGlmaWNhdGVzIGJ1dCB0aGUgcm9vdCBjb3VsZCBub3QgYmUgZm91bmQgbG9jYWxseS4KKyAg
ICBjYXNlIFg1MDlfVl9FUlJfVU5BQkxFX1RPX1ZFUklGWV9MRUFGX1NJR05BVFVSRSA6IC8vIG5v
IHNpZ25hdHVyZXMgY291bGQgYmUgdmVyaWZpZWQgYmVjYXVzZSB0aGUgY2hhaW4gY29udGFpbnMg
b25seSBvbmUgY2VydGlmaWNhdGUgYW5kIGl0IGlzIG5vdCBzZWxmIHNpZ25lZC4KKyAgICBjYXNl
IFg1MDlfVl9FUlJfSU5WQUxJRF9QVVJQT1NFIDogLy8gdGhlIHN1cHBsaWVkIGNlcnRpZmljYXRl
IGNhbm5vdCBiZSB1c2VkIGZvciB0aGUgc3BlY2lmaWVkIHB1cnBvc2UuCisgICAgY2FzZSBYNTA5
X1ZfRVJSX0NFUlRfVU5UUlVTVEVEIDogLy8gdGhlIHJvb3QgQ0EgaXMgbm90IG1hcmtlZCBhcyB0
cnVzdGVkIGZvciB0aGUgc3BlY2lmaWVkIHB1cnBvc2UuCisgICAgY2FzZSBYNTA5X1ZfRVJSX0NF
UlRfUkVKRUNURUQgOiAvLyB0aGUgcm9vdCBDQSBpcyBtYXJrZWQgdG8gcmVqZWN0IHRoZSBzcGVj
aWZpZWQgcHVycG9zZS4KKyAgICBjYXNlIFg1MDlfVl9FUlJfTk9fRVhQTElDSVRfUE9MSUNZIDog
Ly8gdGhlIHZlcmlmaWNhdGlvbiBmbGFncyB3ZXJlIHNldCB0byByZXF1aXJlIGFuZCBleHBsaWNp
dCBwb2xpY3kgYnV0IG5vbmUgd2FzIHByZXNlbnQuCisgICAgY2FzZSBYNTA5X1ZfRVJSX0RJRkZF
UkVOVF9DUkxfU0NPUEUgOiAvLyB0aGUgb25seSBDUkxzIHRoYXQgY291bGQgYmUgZm91bmQgZGlk
IG5vdCBtYXRjaCB0aGUgc2NvcGUgb2YgdGhlIGNlcnRpZmljYXRlLgorICAgICAgICByZXR1cm4g
U1NMX0NFUlRJRklDQVRFX0lOU0VDVVJFOworICAgIGNhc2UgWDUwOV9WX0VSUl9DRVJUX05PVF9Z
RVRfVkFMSUQgOiAvLyB0aGUgY2VydGlmaWNhdGUgaXMgbm90IHlldCB2YWxpZDogdGhlIG5vdEJl
Zm9yZSBkYXRlIGlzIGFmdGVyIHRoZSBjdXJyZW50IHRpbWUuCisgICAgY2FzZSBYNTA5X1ZfRVJS
X0NSTF9OT1RfWUVUX1ZBTElEIDogLy8gdGhlIENSTCBpcyBub3QgeWV0IHZhbGlkLgorICAgICAg
ICByZXR1cm4gU1NMX0NFUlRJRklDQVRFX05PVF9BQ1RJVkFURUQ7CisgICAgY2FzZSBYNTA5X1Zf
RVJSX0NFUlRfSEFTX0VYUElSRUQgOiAvLyB0aGUgY2VydGlmaWNhdGUgaGFzIGV4cGlyZWQ6IHRo
YXQgaXMgdGhlIG5vdEFmdGVyIGRhdGUgaXMgYmVmb3JlIHRoZSBjdXJyZW50IHRpbWUuCisgICAg
Y2FzZSBYNTA5X1ZfRVJSX0NSTF9IQVNfRVhQSVJFRCA6IC8vIHRoZSBDUkwgaGFzIGV4cGlyZWQu
CisgICAgICAgIHJldHVybiBTU0xfQ0VSVElGSUNBVEVfRVhQSVJFRDsKKyAgICBjYXNlIFg1MDlf
Vl9FUlJfRVJST1JfSU5fQ0VSVF9OT1RfQkVGT1JFX0ZJRUxEIDogLy8gdGhlIGNlcnRpZmljYXRl
IG5vdEJlZm9yZSBmaWVsZCBjb250YWlucyBhbiBpbnZhbGlkIHRpbWUuCisgICAgY2FzZSBYNTA5
X1ZfRVJSX0VSUk9SX0lOX0NFUlRfTk9UX0FGVEVSX0ZJRUxEIDogLy8gdGhlIGNlcnRpZmljYXRl
IG5vdEFmdGVyIGZpZWxkIGNvbnRhaW5zIGFuIGludmFsaWQgdGltZS4KKyAgICBjYXNlIFg1MDlf
Vl9FUlJfRVJST1JfSU5fQ1JMX0xBU1RfVVBEQVRFX0ZJRUxEIDogLy8gdGhlIENSTCBsYXN0VXBk
YXRlIGZpZWxkIGNvbnRhaW5zIGFuIGludmFsaWQgdGltZS4KKyAgICBjYXNlIFg1MDlfVl9FUlJf
RVJST1JfSU5fQ1JMX05FWFRfVVBEQVRFX0ZJRUxEIDogLy8gdGhlIENSTCBuZXh0VXBkYXRlIGZp
ZWxkIGNvbnRhaW5zIGFuIGludmFsaWQgdGltZS4KKyAgICBjYXNlIFg1MDlfVl9FUlJfT1VUX09G
X01FTSA6IC8vIGFuIGVycm9yIG9jY3VycmVkIHRyeWluZyB0byBhbGxvY2F0ZSBtZW1vcnkuIFRo
aXMgc2hvdWxkIG5ldmVyIGhhcHBlbi4KKyAgICBjYXNlIFg1MDlfVl9FUlJfQ0VSVF9DSEFJTl9U
T09fTE9ORyA6IC8vIHRoZSBjZXJ0aWZpY2F0ZSBjaGFpbiBsZW5ndGggaXMgZ3JlYXRlciB0aGFu
IHRoZSBzdXBwbGllZCBtYXhpbXVtIGRlcHRoLiBVbnVzZWQuCisgICAgY2FzZSBYNTA5X1ZfRVJS
X1BBVEhfTEVOR1RIX0VYQ0VFREVEIDogLy8gdGhlIGJhc2ljQ29uc3RyYWludHMgcGF0aGxlbmd0
aCBwYXJhbWV0ZXIgaGFzIGJlZW4gZXhjZWVkZWQuCisgICAgY2FzZSBYNTA5X1ZfRVJSX0lOVkFM
SURfRVhURU5TSU9OIDogLy8gYSBjZXJ0aWZpY2F0ZSBleHRlbnNpb24gaGFkIGFuIGludmFsaWQg
dmFsdWUgKGZvciBleGFtcGxlIGFuIGluY29ycmVjdCBlbmNvZGluZykgb3Igc29tZSB2YWx1ZSBp
bmNvbnNpc3RlbnQgd2l0aCBvdGhlciBleHRlbnNpb25zLgorICAgIGNhc2UgWDUwOV9WX0VSUl9J
TlZBTElEX1BPTElDWV9FWFRFTlNJT04gOiAvLyBhIGNlcnRpZmljYXRlIHBvbGljaWVzIGV4dGVu
c2lvbiBoYWQgYW4gaW52YWxpZCB2YWx1ZSAoZm9yIGV4YW1wbGUgYW4gaW5jb3JyZWN0IGVuY29k
aW5nKSBvciBzb21lIHZhbHVlIGluY29uc2lzdGVudCB3aXRoIG90aGVyIGV4dGVuc2lvbnMuIFRo
aXMgZXJyb3Igb25seSBvY2N1cnMgaWYgcG9saWN5IHByb2Nlc3NpbmcgaXMgZW5hYmxlZC4KKyAg
ICBjYXNlIFg1MDlfVl9FUlJfVU5TVVBQT1JURURfRVhURU5TSU9OX0ZFQVRVUkUgOiAvLyBzb21l
IGZlYXR1cmUgb2YgYSBjZXJ0aWZpY2F0ZSBleHRlbnNpb24gaXMgbm90IHN1cHBvcnRlZC4gVW51
c2VkLgorICAgIGNhc2UgWDUwOV9WX0VSUl9QRVJNSVRURURfVklPTEFUSU9OIDogLy8gYSBuYW1l
IGNvbnN0cmFpbnQgdmlvbGF0aW9uIG9jY3VyZWQgaW4gdGhlIHBlcm1pdHRlZCBzdWJ0cmVlcy4K
KyAgICBjYXNlIFg1MDlfVl9FUlJfRVhDTFVERURfVklPTEFUSU9OIDogLy8gYSBuYW1lIGNvbnN0
cmFpbnQgdmlvbGF0aW9uIG9jY3VyZWQgaW4gdGhlIGV4Y2x1ZGVkIHN1YnRyZWVzLgorICAgIGNh
c2UgWDUwOV9WX0VSUl9TVUJUUkVFX01JTk1BWCA6IC8vIGEgY2VydGlmaWNhdGUgbmFtZSBjb25z
dHJhaW50cyBleHRlbnNpb24gaW5jbHVkZWQgYSBtaW5pbXVtIG9yIG1heGltdW0gZmllbGQ6IHRo
aXMgaXMgbm90IHN1cHBvcnRlZC4KKyAgICBjYXNlIFg1MDlfVl9FUlJfVU5TVVBQT1JURURfQ09O
U1RSQUlOVF9UWVBFIDogLy8gYW4gdW5zdXBwb3J0ZWQgbmFtZSBjb25zdHJhaW50IHR5cGUgd2Fz
IGVuY291bnRlcmVkLiBPcGVuU1NMIGN1cnJlbnRseSBvbmx5IHN1cHBvcnRzIGRpcmVjdG9yeSBu
YW1lLCBETlMgbmFtZSwgZW1haWwgYW5kIFVSSSB0eXBlcy4KKyAgICBjYXNlIFg1MDlfVl9FUlJf
VU5TVVBQT1JURURfQ09OU1RSQUlOVF9TWU5UQVggOiAvLyB0aGUgZm9ybWF0IG9mIHRoZSBuYW1l
IGNvbnN0cmFpbnQgaXMgbm90IHJlY29nbmlzZWQ6IGZvciBleGFtcGxlIGFuIGVtYWlsIGFkZHJl
c3MgZm9ybWF0IG9mIGEgZm9ybSBub3QgbWVudGlvbmVkIGluIFJGQzMyODAuIFRoaXMgY291bGQg
YmUgY2F1c2VkIGJ5IGEgZ2FyYmFnZSBleHRlbnNpb24gb3Igc29tZSBuZXcgZmVhdHVyZSBub3Qg
Y3VycmVudGx5IHN1cHBvcnRlZC4KKyAgICBjYXNlIFg1MDlfVl9FUlJfQ1JMX1BBVEhfVkFMSURB
VElPTl9FUlJPUiA6IC8vIGFuIGVycm9yIG9jY3VyZWQgd2hlbiBhdHRlbXB0aW5nIHRvIHZlcmlm
eSB0aGUgQ1JMIHBhdGguIFRoaXMgZXJyb3IgY2FuIG9ubHkgaGFwcGVuIGlmIGV4dGVuZGVkIENS
TCBjaGVja2luZyBpcyBlbmFibGVkLgorICAgIGNhc2UgWDUwOV9WX0VSUl9BUFBMSUNBVElPTl9W
RVJJRklDQVRJT04gOiAvLyBhbiBhcHBsaWNhdGlvbiBzcGVjaWZpYyBlcnJvci4gVGhpcyB3aWxs
IG5ldmVyIGJlIHJldHVybmVkIHVubGVzcyBleHBsaWNpdGx5IHNldCBieSBhbiBhcHBsaWNhdGlv
bi4KKyAgICAgICAgcmV0dXJuIFNTTF9DRVJUSUZJQ0FURV9HRU5FUklDX0VSUk9SOworICAgIGNh
c2UgWDUwOV9WX0VSUl9DRVJUX1JFVk9LRUQgOiAvLyB0aGUgY2VydGlmaWNhdGUgaGFzIGJlZW4g
cmV2b2tlZC4KKyAgICAgICAgcmV0dXJuIFNTTF9DRVJUSUZJQ0FURV9SRVZPS0VEOworICAgIGNh
c2UgWDUwOV9WX0VSUl9JTlZBTElEX0NBIDogLy8gYSBDQSBjZXJ0aWZpY2F0ZSBpcyBpbnZhbGlk
LiBFaXRoZXIgaXQgaXMgbm90IGEgQ0Egb3IgaXRzIGV4dGVuc2lvbnMgYXJlIG5vdCBjb25zaXN0
ZW50IHdpdGggdGhlIHN1cHBsaWVkIHB1cnBvc2UuCisgICAgY2FzZSBYNTA5X1ZfRVJSX1NVQkpF
Q1RfSVNTVUVSX01JU01BVENIIDogLy8gdGhlIGN1cnJlbnQgY2FuZGlkYXRlIGlzc3VlciBjZXJ0
aWZpY2F0ZSB3YXMgcmVqZWN0ZWQgYmVjYXVzZSBpdHMgc3ViamVjdCBuYW1lIGRpZCBub3QgbWF0
Y2ggdGhlIGlzc3VlciBuYW1lIG9mIHRoZSBjdXJyZW50IGNlcnRpZmljYXRlLiBUaGlzIGlzIG9u
bHkgc2V0IGlmIGlzc3VlciBjaGVjayBkZWJ1Z2dpbmcgaXMgZW5hYmxlZCBpdCBpcyB1c2VkIGZv
ciBzdGF0dXMgbm90aWZpY2F0aW9uIGFuZCBpcyBub3QgaW4gaXRzZWxmIGFuIGVycm9yLgorICAg
IGNhc2UgWDUwOV9WX0VSUl9BS0lEX1NLSURfTUlTTUFUQ0ggOiAvLyB0aGUgY3VycmVudCBjYW5k
aWRhdGUgaXNzdWVyIGNlcnRpZmljYXRlIHdhcyByZWplY3RlZCBiZWNhdXNlIGl0cyBzdWJqZWN0
IGtleSBpZGVudGlmaWVyIHdhcyBwcmVzZW50IGFuZCBkaWQgbm90IG1hdGNoIHRoZSBhdXRob3Jp
dHkga2V5IGlkZW50aWZpZXIgY3VycmVudCBjZXJ0aWZpY2F0ZS4gVGhpcyBpcyBvbmx5IHNldCBp
ZiBpc3N1ZXIgY2hlY2sgZGVidWdnaW5nIGlzIGVuYWJsZWQgaXQgaXMgdXNlZCBmb3Igc3RhdHVz
IG5vdGlmaWNhdGlvbiBhbmQgaXMgbm90IGluIGl0c2VsZiBhbiBlcnJvci4KKyAgICBjYXNlIFg1
MDlfVl9FUlJfQUtJRF9JU1NVRVJfU0VSSUFMX01JU01BVENIIDogLy8gdGhlIGN1cnJlbnQgY2Fu
ZGlkYXRlIGlzc3VlciBjZXJ0aWZpY2F0ZSB3YXMgcmVqZWN0ZWQgYmVjYXVzZSBpdHMgaXNzdWVy
IG5hbWUgYW5kIHNlcmlhbCBudW1iZXIgd2FzIHByZXNlbnQgYW5kIGRpZCBub3QgbWF0Y2ggdGhl
IGF1dGhvcml0eSBrZXkgaWRlbnRpZmllciBvZiB0aGUgY3VycmVudCBjZXJ0aWZpY2F0ZS4gVGhp
cyBpcyBvbmx5IHNldCBpZiBpc3N1ZXIgY2hlY2sgZGVidWdnaW5nIGlzIGVuYWJsZWQgaXQgaXMg
dXNlZCBmb3Igc3RhdHVzIG5vdGlmaWNhdGlvbiBhbmQgaXMgbm90IGluIGl0c2VsZiBhbiBlcnJv
ci4KKyAgICBjYXNlIFg1MDlfVl9FUlJfS0VZVVNBR0VfTk9fQ0VSVFNJR04gOiAvLyB0aGUgY3Vy
cmVudCBjYW5kaWRhdGUgaXNzdWVyIGNlcnRpZmljYXRlIHdhcyByZWplY3RlZCBiZWNhdXNlIGl0
cyBrZXlVc2FnZSBleHRlbnNpb24gZG9lcyBub3QgcGVybWl0IGNlcnRpZmljYXRlIHNpZ25pbmcu
IFRoaXMgaXMgb25seSBzZXQgaWYgaXNzdWVyIGNoZWNrIGRlYnVnZ2luZyBpcyBlbmFibGVkIGl0
IGlzIHVzZWQgZm9yIHN0YXR1cyBub3RpZmljYXRpb24gYW5kIGlzIG5vdCBpbiBpdHNlbGYgYW4g
ZXJyb3IuCisgICAgICAgIHJldHVybiBTU0xfQ0VSVElGSUNBVEVfQkFEX0lERU5USVRZOworICAg
IGRlZmF1bHQgOgorICAgICAgICByZXR1cm4gU1NMX0NFUlRJRklDQVRFX0dFTkVSSUNfRVJST1I7
CisgICAgfQorfQorCisjaWYgIVBMQVRGT1JNKFdJTikKKy8vIHN1Y2Nlc3Mgb2YgY2VydGlmaWNh
dGUgZXh0cmFjdGlvbgorYm9vbCBwZW1EYXRhKFg1MDlfU1RPUkVfQ1RYKiBjdHgsIFN0cmluZyYg
Y2VydGlmaWNhdGUpCit7CisgICAgWDUwOSogZXJyQ2VydCA9IFg1MDlfU1RPUkVfQ1RYX2dldF9j
dXJyZW50X2NlcnQoY3R4KTsKKworICAgIC8vIGdldCB0aGUgY2VydCBpbiBQRU0gZm9ybWF0Cisg
ICAgQklPKiBiaW8gPSBCSU9fbmV3KEJJT19zX21lbSgpKTsKKworICAgIGludCByZXMgPSBQRU1f
d3JpdGVfYmlvX1g1MDkoYmlvLCBlcnJDZXJ0KTsKKyAgICBpZiAoIXJlcykgeworICAgICAgICBC
SU9fZnJlZShiaW8pOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgdW5zaWdu
ZWQgY2hhciogZGF0YTsKKyAgICBsb25nIGxlbiA9IEJJT19nZXRfbWVtX2RhdGEoYmlvLCAmZGF0
YSk7CisgICAgaWYgKGxlbiA+IDApIHsKKyAgICAgICAgQklPX2ZyZWUoYmlvKTsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGRhdGFbbGVuXSA9ICdcMCc7CisgICAgY2VydGlm
aWNhdGUgPSBkYXRhOworICAgIEJJT19mcmVlKGJpbyk7CisgICAgcmV0dXJuIHRydWU7Cit9Cisj
ZW5kaWYKKworc3RhdGljIGludCBjZXJ0VmVyaWZ5Q2FsbGJhY2soaW50IG9rLCBYNTA5X1NUT1JF
X0NUWCogY3R4KQoreworICAgIC8vIHdoZXRoZXIgdGhlIHZlcmlmaWNhdGlvbiBvZiB0aGUgY2Vy
dGlmaWNhdGUgaW4gcXVlc3Rpb24gd2FzIHBhc3NlZCAocHJldmVyaWZ5X29rPTEpIG9yIG5vdCAo
cHJldmVyaWZ5X29rPTApCisKKyAgICB1bnNpZ25lZCBlcnIgPSBYNTA5X1NUT1JFX0NUWF9nZXRf
ZXJyb3IoY3R4KTsKKyAgICBpZiAoIWVycikKKyAgICAgICAgcmV0dXJuIDE7CisKKyAgICBTU0wq
IHNzbCA9IHJlaW50ZXJwcmV0X2Nhc3Q8U1NMKj4oWDUwOV9TVE9SRV9DVFhfZ2V0X2V4X2RhdGEo
Y3R4LCBTU0xfZ2V0X2V4X2RhdGFfWDUwOV9TVE9SRV9DVFhfaWR4KCkpKTsKKyAgICBTU0xfQ1RY
KiBzc2xjdHggPSBTU0xfZ2V0X1NTTF9DVFgoc3NsKTsKKyAgICBSZXNvdXJjZUhhbmRsZSogam9i
ID0gcmVpbnRlcnByZXRfY2FzdDxSZXNvdXJjZUhhbmRsZSo+KFNTTF9DVFhfZ2V0X2FwcF9kYXRh
KHNzbGN0eCkpOworICAgIFN0cmluZyBob3N0ID0gam9iLT5maXJzdFJlcXVlc3QoKS51cmwoKS5o
b3N0KCk7CisgICAgUmVzb3VyY2VIYW5kbGVJbnRlcm5hbCogZCA9IGpvYi0+Z2V0SW50ZXJuYWwo
KTsKKworICAgIGQtPm1fc3NsRXJyb3JzID0gc3NsQ2VydGlmaWNhdGVGbGFnKGVycik7CisKKyNp
ZiBQTEFURk9STShXSU4pCisgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz46Oml0ZXJhdG9yIGl0
ID0gYWxsb3dlZEhvc3RzLmZpbmQoaG9zdCk7CisgICAgb2sgPSAoaXQgIT0gYWxsb3dlZEhvc3Rz
LmVuZCgpKTsKKyNlbHNlCisgICAgU3RyaW5nIGNlcnRpZmljYXRlOworICAgIGlmICghcGVtRGF0
YShjdHgsIGNlcnRpZmljYXRlKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgb2sgPSBzc2xJZ25v
cmVIVFRQU0NlcnRpZmljYXRlKGhvc3QubG93ZXIoKSwgY2VydGlmaWNhdGUpOworI2VuZGlmCisK
KyAgICBpZiAob2spIHsKKyAgICAgICAgLy8gaWYgdGhlIGhvc3QgYW5kIHRoZSBjZXJ0aWZpY2F0
ZSBhcmUgc3RvcmVkIGZvciB0aGUgY3VycmVudCBoYW5kbGUgdGhhdCBtZWFucyBpcyBlbmFibGVk
LAorICAgICAgICAvLyBzbyBkb24ndCBuZWVkIHRvIGN1cmwgdmVyaWZpZXMgdGhlIGF1dGhlbnRp
Y2l0eSBvZiB0aGUgcGVlcidzIGNlcnRpZmljYXRlCisgICAgICAgIGN1cmxfZWFzeV9zZXRvcHQo
ZC0+bV9oYW5kbGUsIENVUkxPUFRfU1NMX1ZFUklGWVBFRVIsIGZhbHNlKTsKKyAgICB9CisgICAg
cmV0dXJuIG9rOworfQorCitzdGF0aWMgQ1VSTGNvZGUgc3NsY3R4ZnVuKENVUkwqIGN1cmwsIHZv
aWQqIHNzbGN0eCwgdm9pZCogcGFybSkKK3sKKyAgICBTU0xfQ1RYX3NldF9hcHBfZGF0YShyZWlu
dGVycHJldF9jYXN0PFNTTF9DVFgqPihzc2xjdHgpLCBwYXJtKTsKKyAgICBTU0xfQ1RYX3NldF92
ZXJpZnkocmVpbnRlcnByZXRfY2FzdDxTU0xfQ1RYKj4oc3NsY3R4KSwgU1NMX1ZFUklGWV9QRUVS
LCBjZXJ0VmVyaWZ5Q2FsbGJhY2spOworICAgIHJldHVybiBDVVJMRV9PSzsKK30KKwordm9pZCBz
ZXRTU0xWZXJpZnlPcHRpb25zKFJlc291cmNlSGFuZGxlKiBoYW5kbGUpCit7CisgICAgUmVzb3Vy
Y2VIYW5kbGVJbnRlcm5hbCogZCA9IGhhbmRsZS0+Z2V0SW50ZXJuYWwoKTsKKyAgICBjdXJsX2Vh
c3lfc2V0b3B0KGQtPm1faGFuZGxlLCBDVVJMT1BUX1NTTF9DVFhfREFUQSwgaGFuZGxlKTsKKyAg
ICBjdXJsX2Vhc3lfc2V0b3B0KGQtPm1faGFuZGxlLCBDVVJMT1BUX1NTTF9DVFhfRlVOQ1RJT04s
IHNzbGN0eGZ1bik7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9TU0xIYW5kbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9TU0xIYW5kbGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5l
MWVkYTFkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL1NTTEhhbmRsZS5oCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMgVW5pdmVyc2l0eSBvZiBTemVnZWQKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFVOSVZFUlNJVFkgT0YgU1pFR0VEIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgU1NMSGFuZGxlX2gKKyNkZWZpbmUgU1NM
SGFuZGxlX2gKKworI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCisKKyNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit0eXBlZGVmIGVudW0g
eworICAgIFNTTF9DRVJUSUZJQ0FURV9VTktOT1dOX0NBID0gKDEgPDwgMCksIC8vIFRoZSBzaWdu
aW5nIGNlcnRpZmljYXRlIGF1dGhvcml0eSBpcyBub3Qga25vd24uCisgICAgU1NMX0NFUlRJRklD
QVRFX0JBRF9JREVOVElUWSA9ICgxIDw8IDEpLCAvLyBUaGUgY2VydGlmaWNhdGUgZG9lcyBub3Qg
bWF0Y2ggdGhlIGV4cGVjdGVkIGlkZW50aXR5IG9mIHRoZSBzaXRlIHRoYXQgaXQgd2FzIHJldHJp
ZXZlZCBmcm9tLgorICAgIFNTTF9DRVJUSUZJQ0FURV9OT1RfQUNUSVZBVEVEID0gKDEgPDwgMiks
IC8vIFRoZSBjZXJ0aWZpY2F0ZSdzIGFjdGl2YXRpb24gdGltZSBpcyBzdGlsbCBpbiB0aGUgZnV0
dXJlCisgICAgU1NMX0NFUlRJRklDQVRFX0VYUElSRUQgPSAoMSA8PCAzKSwgLy8gVGhlIGNlcnRp
ZmljYXRlIGhhcyBleHBpcmVkCisgICAgU1NMX0NFUlRJRklDQVRFX1JFVk9LRUQgPSAoMSA8PCA0
KSwgLy8gVGhlIGNlcnRpZmljYXRlIGhhcyBiZWVuIHJldm9rZWQKKyAgICBTU0xfQ0VSVElGSUNB
VEVfSU5TRUNVUkUgPSAoMSA8PCA1KSwgLy8gVGhlIGNlcnRpZmljYXRlJ3MgYWxnb3JpdGhtIGlz
IGNvbnNpZGVyZWQgaW5zZWN1cmUuCisgICAgU1NMX0NFUlRJRklDQVRFX0dFTkVSSUNfRVJST1Ig
PSAoMSA8PCA2KSAvLyBTb21lIG90aGVyIGVycm9yIG9jY3VycmVkIHZhbGlkYXRpbmcgdGhlIGNl
cnRpZmljYXRlCit9IFNTTENlcnRpZmljYXRlRmxhZ3M7CisKKwordm9pZCBhbGxvd3NBbnlIVFRQ
U0NlcnRpZmljYXRlSG9zdHMoY29uc3QgU3RyaW5nJik7Citib29sIHNzbElnbm9yZUhUVFBTQ2Vy
dGlmaWNhdGUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJik7Cit2b2lkIHNldFNTTFZlcmlm
eU9wdGlvbnMoUmVzb3VyY2VIYW5kbGUqKTsKKworfQorCisjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>217435</attachid>
            <date>2013-11-20 08:05:00 -0800</date>
            <delta_ts>2013-11-20 09:56:25 -0800</delta_ts>
            <desc>proposed patch</desc>
            <filename>general.patch</filename>
            <type>text/plain</type>
            <size>40512</size>
            <attacher>sipka</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBmM2M4MzI1Li41MGNjYWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDE1ICsxLDQ5
IEBACisyMDEzLTExLTIwICBSb2JlcnQgU2lwa2EgIDxzaXBrYUBpbmYudS1zemVnZWQuaHU+CisK
KyAgICAgICAgW2N1cmxdIEltcHJvdmUgZGV0ZWN0aW5nIGFuZCBoYW5kbGluZyBvZiBTU0wgcmVs
YXRlZCBlcnJvcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTExOTQzNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFNldCB0aGUgZXhhY3QgU1NMIHZlcmlmaWNhdGlvbiBlcnJvciBvbiBDVVJMCisgICAgICAg
IGFuZCBzdG9yZSB0aGUgZW5hYmxlZCBkb21haW4gd2l0aCBjZXJ0aWZpY2F0ZS4KKworICAgICAg
ICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2o6CisgICAgICAgICogV2ViQ29yZS52
Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VIYW5kbGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
SGFuZGxlSW50ZXJuYWwuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlSW50ZXJu
YWw6OlJlc291cmNlSGFuZGxlSW50ZXJuYWwpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
Y3VybC9SZXNvdXJjZUVycm9yLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUVycm9yOjpS
ZXNvdXJjZUVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlRXJyb3I6OnNzbEVycm9y
cyk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUVycm9yOjpzZXRTU0xFcnJvcnMpOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnNldEhvc3RBbGxvd3NBbnlIVFRQU0NlcnRp
ZmljYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVN
YW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlTWFuYWdlcjo6ZG93
bmxvYWRUaW1lckNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlTWFu
YWdlcjo6aW5pdGlhbGl6ZUhhbmRsZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJs
L1NTTEhhbmRsZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6YWxsb3dzQW55SFRUUFND
ZXJ0aWZpY2F0ZUhvc3RzKToKKyAgICAgICAgKFdlYkNvcmU6OnNzbElnbm9yZUhUVFBTQ2VydGlm
aWNhdGUpOgorICAgICAgICAoV2ViQ29yZTo6c3NsQ2VydGlmaWNhdGVGbGFnKToKKyAgICAgICAg
KFdlYkNvcmU6OnBlbURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Y2VydFZlcmlmeUNhbGxiYWNr
KToKKyAgICAgICAgKFdlYkNvcmU6OnNzbGN0eGZ1bik6CisgICAgICAgIChXZWJDb3JlOjpzZXRT
U0xWZXJpZnlPcHRpb25zKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU1NMSGFu
ZGxlLmg6IEFkZGVkLgorCiAyMDEzLTExLTIwICBBbmRyZWkgQnVjdXIgIDxhYnVjdXJAYWRvYmUu
Y29tPgogCiAgICAgICAgIFtDU1NSZWdpb25zXSBNb3ZlIHJlZ2lvbiBzdHlsaW5nIGNvZGUgaW50
byBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTIyOTU3CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWlobmVhIE92
aWRlbmllLgogCiAgICAgICAgIFRoZSBwYXRjaCBtb3ZlcyBhbGwgdGhlIHJlZ2lvbiBzdHlsaW5n
IGZ1bmN0aW9uYWxpdHkgb3V0c2lkZSBvZiBSZW5kZXJSZWdpb24KICAgICAgICAgdG8gUmVuZGVy
TmFtZWRGbG93RnJhZ21lbnQgYW5kIG91dHNpZGUgb2YgUmVuZGVyRmxvd1RocmVhZCB0byBSZW5k
ZXJOYW1lZEZsb3dUaHJlYWQuCiAgICAgICAgIFRoaXMgZ2VuZXJhdGVzIGEgY291cGxlIG9mIHVu
ZGVzaXJlZCBjYXN0cyB0aGF0IHdpbGwgYmUgcmVtb3ZlZCBpbiBsYXRlciBwYXRjaGVzCiAgICAg
ICAgIHdoZW4gZXZlcnl0aGluZyBDU1MgUmVnaW9ucyBzcGVjaWZpYyB3aWxsIGJlIGxvY2F0ZWQg
aW5zaWRlIFJlbmRlck5hbWVkRmxvd1RocmVhZAogICAgICAgICBhbmQgUmVuZGVyTmFtZWRGbG93
RnJhZ21lbnQgKGUuZy4gdGhlIG1vdmUgb2YgdGhlIGlzVmFsaWQgZmxhZywgdGhlIGF1dG8taGVp
Z2h0CiAgICAgICAgIGNvZGUgZXRjLikuCiAKICAgICAgICAgVGhlIHBhaW50aW5nIGZ1bmN0aW9u
IHdhcyBhbHNvIG1vdmVkIGZyb20gUmVuZGVyUmVnaW9uIHRvIFJlbmRlck5hbWVkRmxvd0ZyYWdt
ZW50LiBJdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNv
cmUudmN4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHBy
b2oKaW5kZXggODdmZjZkZC4uNjFlYjQ0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCkBAIC04MzkyLDMwICs4MzkyLDQwIEBACiAgICAgICA8
RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdSZWxlYXNlfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgICA8RXhj
bHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdSZWxlYXNlfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgICAgPEV4Y2x1ZGVk
RnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJv
ZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgICAgPEV4Y2x1ZGVk
RnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJv
ZHVjdGlvbnx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICA8L0NsQ29tcGlsZT4K
ICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcY3VybFxTb2NrZXRT
dHJlYW1IYW5kbGVDdXJsLmNwcCI+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPnRydWU8L0V4
Y2x1ZGVkRnJvbUJ1aWxkPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRG
cm9tQnVpbGQ+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHxXaW4zMiciPnRydWU8L0V4Y2x1ZGVk
RnJvbUJ1aWxkPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdTdWZmaXh8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRG
cm9tQnVpbGQ+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9t
QnVpbGQ+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxk
PgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxk
PgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4K
ICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXG5l
dHdvcmtcY3VybFxTU0xIYW5kbGUuY3BwIj4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+dHJ1
ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj50cnVlPC9FeGNs
dWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnU3VmZml4fFdpbjMyJyI+dHJ1ZTwvRXhj
bHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHx4NjQnIj50cnVlPC9FeGNs
dWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj50cnVlPC9FeGNsdWRl
ZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9t
QnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9t
QnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1
aWxkPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZv
cm1cc3FsXFNRTGl0ZUF1dGhvcml6ZXIuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5ccGxhdGZvcm1cc3FsXFNRTGl0ZURhdGFiYXNlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXHBsYXRmb3JtXHNxbFxTUUxpdGVGaWxlU3lzdGVtLmNwcCIgLz4KICAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXHNxbFxTUUxpdGVTdGF0ZW1lbnQuY3BwIiAvPgog
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cc3FsXFNRTGl0ZVRyYW5zYWN0aW9u
LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXHNxbFxTUUxWYWx1
ZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVx0ZXh0XEJpZGlD
b250ZXh0LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXHRleHRc
RGF0ZVRpbWVGb3JtYXQuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZv
cm1cdGV4dFxMaW5lRW5kaW5nLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBs
YXRmb3JtXHRleHRcTG9jYWxlTm9uZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxwbGF0Zm9ybVx0ZXh0XExvY2FsZVRvU2NyaXB0TWFwcGluZ0RlZmF1bHQuY3BwIiAvPgogICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cdGV4dFxQbGF0Zm9ybUxvY2FsZS5jcHAi
IC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVx0ZXh0XFF1b3RlZFByaW50
YWJsZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVx0ZXh0XFJl
Z3VsYXJFeHByZXNzaW9uLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRm
b3JtXHRleHRcU2VnbWVudGVkU3RyaW5nLmNwcCIgLz4KQEAgLTE5NTQyLDMwICsxOTU1Miw0MCBA
QAogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgog
ICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICAg
IDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J1Byb2R1Y3Rpb258V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICAg
IDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgPC9D
dXN0b21CdWlsZFN0ZXA+CiAgICAgPEN1c3RvbUJ1aWxkU3RlcCBJbmNsdWRlPSIuLlxwbGF0Zm9y
bVxuZXR3b3JrXGN1cmxcUmVzb3VyY2VSZXNwb25zZS5oIj4KICAgICAgIDxFeGNsdWRlZEZyb21C
dWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdp
bjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj50
cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnU3VmZml4fFdpbjMyJyI+
dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHx4NjQnIj50
cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj50cnVl
PC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+dHJ1ZTwvRXhj
bHVkZWRGcm9tQnVpbGQ+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMyJyI+dHJ1ZTwvRXhj
bHVkZWRGcm9tQnVpbGQ+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2NCciPnRydWU8L0V4Y2x1
ZGVkRnJvbUJ1aWxkPgogICAgIDwvQ3VzdG9tQnVpbGRTdGVwPgorICAgIDxDdXN0b21CdWlsZFN0
ZXAgSW5jbHVkZT0iLi5ccGxhdGZvcm1cbmV0d29ya1xjdXJsXFNTTEhhbmRsZS5oIj4KKyAgICAg
IDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J0RlYnVnfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhj
bHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdEZWJ1Z3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZy
b21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVn
U3VmZml4fFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRG
cm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1
Z1N1ZmZpeHx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZy
b21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVh
c2V8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21C
dWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8
eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufFdp
bjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2
NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgIDwvQ3VzdG9tQnVpbGRTdGVwPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cc3FsXFNRTGl0ZURhdGFiYXNlLmgiIC8+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxzcWxcU1FMaXRlRmlsZVN5c3Rl
bS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cc3FsXFNRTGl0ZVN0
YXRlbWVudC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cc3FsXFNR
TGl0ZVRyYW5zYWN0aW9uLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9y
bVxzcWxcU1FMVmFsdWUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3Jt
XHRleHRcQmlkaUNvbnRleHQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRm
b3JtXHRleHRcQmlkaVJlc29sdmVyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxw
bGF0Zm9ybVx0ZXh0XEJpZGlSdW5MaXN0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxwbGF0Zm9ybVx0ZXh0XERhdGVUaW1lRm9ybWF0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxwbGF0Zm9ybVx0ZXh0XERlY29kZUVzY2FwZVNlcXVlbmNlcy5oIiAvPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cdGV4dFxIeXBoZW5hdGlvbi5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcTGF0aW4xVGV4dEl0ZXJh
dG9yLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVx0ZXh0XExpbmVC
cmVha0l0ZXJhdG9yUG9vbElDVS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxh
dGZvcm1cdGV4dFxMaW5lRW5kaW5nLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxw
bGF0Zm9ybVx0ZXh0XExvY2FsZVRvU2NyaXB0TWFwcGluZy5oIiAvPgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCmluZGV4
IGEyOGY0MjQuLjA3M2U0ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4
cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycworKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKQEAgLTE5MTQsMzAgKzE5MTQsMzMgQEAK
ICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcY3VybFxNdWx0aXBh
cnRIYW5kbGUuY3BwIj4KICAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cbmV0d29ya1xjdXJsPC9GaWx0
ZXI+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9y
bVxuZXR3b3JrXGN1cmxcUHJveHlTZXJ2ZXJDdXJsLmNwcCI+CiAgICAgICA8RmlsdGVyPnBsYXRm
b3JtXG5ldHdvcmtcY3VybDwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cbmV0d29ya1xjdXJsXFJlc291cmNlSGFuZGxlQ3VybC5j
cHAiPgogICAgICAgPEZpbHRlcj5wbGF0Zm9ybVxuZXR3b3JrXGN1cmw8L0ZpbHRlcj4KICAgICA8
L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXG5ldHdvcmtc
Y3VybFxSZXNvdXJjZUhhbmRsZU1hbmFnZXIuY3BwIj4KICAgICAgIDxGaWx0ZXI+cGxhdGZvcm1c
bmV0d29ya1xjdXJsPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXGN1cmxcU29ja2V0U3RyZWFtSGFuZGxlQ3VybC5j
cHAiPgogICAgICAgPEZpbHRlcj5wbGF0Zm9ybVxuZXR3b3JrXGN1cmw8L0ZpbHRlcj4KICAgICA8
L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXG5ldHdvcmtc
Y3VybFxTU0xIYW5kbGUuY3BwIj4KKyAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cbmV0d29ya1xjdXJs
PC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxw
bGF0Zm9ybVxzcWxcU1FMaXRlQXV0aG9yaXplci5jcHAiPgogICAgICAgPEZpbHRlcj5wbGF0Zm9y
bVxzcWw8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXHBsYXRmb3JtXHNxbFxTUUxpdGVEYXRhYmFzZS5jcHAiPgogICAgICAgPEZpbHRlcj5wbGF0
Zm9ybVxzcWw8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXHBsYXRmb3JtXHNxbFxTUUxpdGVGaWxlU3lzdGVtLmNwcCI+CiAgICAgICA8RmlsdGVy
PnBsYXRmb3JtXHNxbDwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5ccGxhdGZvcm1cc3FsXFNRTGl0ZVN0YXRlbWVudC5jcHAiPgogICAgICAgPEZp
bHRlcj5wbGF0Zm9ybVxzcWw8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXHNxbFxTUUxpdGVUcmFuc2FjdGlvbi5jcHAiPgogICAg
ICAgPEZpbHRlcj5wbGF0Zm9ybVxzcWw8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTE1
MDc0LDMwICsxNTA3NywzMyBAQAogICAgIDxDdXN0b21CdWlsZFN0ZXAgSW5jbHVkZT0iLi5ccGxh
dGZvcm1cbmV0d29ya1xjdXJsXE11bHRpcGFydEhhbmRsZS5oIj4KICAgICAgIDxGaWx0ZXI+cGxh
dGZvcm1cbmV0d29ya1xjdXJsPC9GaWx0ZXI+CiAgICAgPC9DdXN0b21CdWlsZFN0ZXA+CiAgICAg
PEN1c3RvbUJ1aWxkU3RlcCBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXGN1cmxcUmVzb3Vy
Y2VFcnJvci5oIj4KICAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cbmV0d29ya1xjdXJsPC9GaWx0ZXI+
CiAgICAgPC9DdXN0b21CdWlsZFN0ZXA+CiAgICAgPEN1c3RvbUJ1aWxkU3RlcCBJbmNsdWRlPSIu
LlxwbGF0Zm9ybVxuZXR3b3JrXGN1cmxcUmVzb3VyY2VIYW5kbGVNYW5hZ2VyLmgiPgogICAgICAg
PEZpbHRlcj5wbGF0Zm9ybVxuZXR3b3JrXGN1cmw8L0ZpbHRlcj4KICAgICA8L0N1c3RvbUJ1aWxk
U3RlcD4KICAgICA8Q3VzdG9tQnVpbGRTdGVwIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXG5ldHdvcmtc
Y3VybFxSZXNvdXJjZVJlcXVlc3QuaCI+CiAgICAgICA8RmlsdGVyPnBsYXRmb3JtXG5ldHdvcmtc
Y3VybDwvRmlsdGVyPgogICAgIDwvQ3VzdG9tQnVpbGRTdGVwPgogICAgIDxDdXN0b21CdWlsZFN0
ZXAgSW5jbHVkZT0iLi5ccGxhdGZvcm1cbmV0d29ya1xjdXJsXFJlc291cmNlUmVzcG9uc2UuaCI+
CiAgICAgICA8RmlsdGVyPnBsYXRmb3JtXG5ldHdvcmtcY3VybDwvRmlsdGVyPgogICAgIDwvQ3Vz
dG9tQnVpbGRTdGVwPgorICAgIDxDdXN0b21CdWlsZFN0ZXAgSW5jbHVkZT0iLi5ccGxhdGZvcm1c
bmV0d29ya1xjdXJsXFNTTEhhbmRsZS5oIj4KKyAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cbmV0d29y
a1xjdXJsPC9GaWx0ZXI+CisgICAgPC9DdXN0b21CdWlsZFN0ZXA+CiAgICAgPEN1c3RvbUJ1aWxk
U3RlcCBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxpbWFnZS1kZWNvZGVyc1xnaWZcR0lGSW1hZ2VEZWNv
ZGVyLmgiPgogICAgICAgPEZpbHRlcj5wbGF0Zm9ybVxpbWFnZS1kZWNvZGVyc1xnaWY8L0ZpbHRl
cj4KICAgICA8L0N1c3RvbUJ1aWxkU3RlcD4KICAgICA8Q3VzdG9tQnVpbGRTdGVwIEluY2x1ZGU9
Ii4uXHBsYXRmb3JtXGltYWdlLWRlY29kZXJzXGdpZlxHSUZJbWFnZVJlYWRlci5oIj4KICAgICAg
IDxGaWx0ZXI+cGxhdGZvcm1caW1hZ2UtZGVjb2RlcnNcZ2lmPC9GaWx0ZXI+CiAgICAgPC9DdXN0
b21CdWlsZFN0ZXA+CiAgICAgPEN1c3RvbUJ1aWxkU3RlcCBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxp
bWFnZS1kZWNvZGVyc1xqcGVnXEpQRUdJbWFnZURlY29kZXIuaCI+CiAgICAgICA8RmlsdGVyPnBs
YXRmb3JtXGltYWdlLWRlY29kZXJzXGpwZWc8L0ZpbHRlcj4KICAgICA8L0N1c3RvbUJ1aWxkU3Rl
cD4KICAgICA8Q3VzdG9tQnVpbGRTdGVwIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGltYWdlLWRlY29k
ZXJzXHBuZ1xQTkdJbWFnZURlY29kZXIuaCI+CiAgICAgICA8RmlsdGVyPnBsYXRmb3JtXGltYWdl
LWRlY29kZXJzXHBuZzwvRmlsdGVyPgogICAgIDwvQ3VzdG9tQnVpbGRTdGVwPgogICAgIDxDdXN0
b21CdWlsZFN0ZXAgSW5jbHVkZT0iLi5ccGxhdGZvcm1caW1hZ2UtZGVjb2RlcnNcYm1wXEJNUElt
YWdlRGVjb2Rlci5oIj4KICAgICAgIDxGaWx0ZXI+cGxhdGZvcm1caW1hZ2UtZGVjb2RlcnNcYm1w
PC9GaWx0ZXI+CiAgICAgPC9DdXN0b21CdWlsZFN0ZXA+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgKaW5kZXggZGFmMDY3Yi4uZmY4MDY3NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRs
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUu
aApAQCAtMTM5LDMxICsxMzksMzEgQEAgcHVibGljOgogICAgIENGVVJMU3RvcmFnZVNlc3Npb25S
ZWYgc3RvcmFnZVNlc3Npb24oKSBjb25zdDsKICAgICBDRlVSTENvbm5lY3Rpb25SZWYgY29ubmVj
dGlvbigpIGNvbnN0OwogICAgIENGVVJMQ29ubmVjdGlvblJlZiByZWxlYXNlQ29ubmVjdGlvbkZv
ckRvd25sb2FkKCk7CiAgICAgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBjdXJyZW50UmVxdWVzdCgp
IGNvbnN0OwogICAgIHN0YXRpYyB2b2lkIHNldEhvc3RBbGxvd3NBbnlIVFRQU0NlcnRpZmljYXRl
KGNvbnN0IFN0cmluZyYpOwogICAgIHN0YXRpYyB2b2lkIHNldENsaWVudENlcnRpZmljYXRlKGNv
bnN0IFN0cmluZyYgaG9zdCwgQ0ZEYXRhUmVmKTsKICAgICBzdGF0aWMgQ0ZVUkxDb25uZWN0aW9u
Q2xpZW50X1Y2KiBjb25uZWN0aW9uQ2xpZW50Q2FsbGJhY2tzKCk7CiAKICNpZiBVU0UoUVVJQ0tf
TE9PSykKICAgICBRdWlja0xvb2tIYW5kbGUqIHF1aWNrTG9va0hhbmRsZSgpIHsgcmV0dXJuIG1f
cXVpY2tMb29rLmdldCgpOyB9CiAgICAgdm9pZCBzZXRRdWlja0xvb2tIYW5kbGUoUGFzc093blB0
cjxRdWlja0xvb2tIYW5kbGU+IGhhbmRsZSkgeyBtX3F1aWNrTG9vayA9IGhhbmRsZTsgfQogI2Vu
ZGlmIC8vIFVTRShRVUlDS19MT09LKQogCiAjZW5kaWYgLy8gVVNFKENGTkVUV09SSykKIAotI2lm
IFBMQVRGT1JNKFdJTikgJiYgVVNFKENVUkwpCisjaWYgKFBMQVRGT1JNKFdJTikgfHwgUExBVEZP
Uk0oTklYKSkgJiYgVVNFKENVUkwpCiAgICAgc3RhdGljIHZvaWQgc2V0SG9zdEFsbG93c0FueUhU
VFBTQ2VydGlmaWNhdGUoY29uc3QgU3RyaW5nJik7CiAjZW5kaWYKICNpZiBQTEFURk9STShXSU4p
ICYmIFVTRShDVVJMKSAmJiBVU0UoQ0YpCiAgICAgc3RhdGljIHZvaWQgc2V0Q2xpZW50Q2VydGlm
aWNhdGUoY29uc3QgU3RyaW5nJiBob3N0LCBDRkRhdGFSZWYpOwogI2VuZGlmCiAKICAgICBib29s
IHNob3VsZENvbnRlbnRTbmlmZigpIGNvbnN0OwogICAgIHN0YXRpYyBib29sIHNob3VsZENvbnRl
bnRTbmlmZlVSTChjb25zdCBVUkwmKTsKIAogICAgIHN0YXRpYyB2b2lkIGZvcmNlQ29udGVudFNu
aWZmaW5nKCk7CiAKICNpZiBVU0UoV0lOSU5FVCkKICAgICB2b2lkIHNldFN5bmNocm9ub3VzSW50
ZXJuZXRIYW5kbGUoSElOVEVSTkVUKTsKICAgICB2b2lkIGZpbGVMb2FkVGltZXIoVGltZXI8UmVz
b3VyY2VIYW5kbGU+Kik7CiAgICAgdm9pZCBvblJlZGlyZWN0KCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oCmlu
ZGV4IGE4ZTA5NzcuLjc1ZTIyN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oCkBAIC05MCwzMCArOTAsMzEg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgLCBtX2ludGVybmV0SGFuZGxlKDAp
CiAgICAgICAgICAgICAsIG1fY29ubmVjdEhhbmRsZSgwKQogICAgICAgICAgICAgLCBtX3JlcXVl
c3RIYW5kbGUoMCkKICAgICAgICAgICAgICwgbV9zZW50RW5kUmVxdWVzdChmYWxzZSkKICAgICAg
ICAgICAgICwgbV9ieXRlc1JlbWFpbmluZ1RvV3JpdGUoMCkKICAgICAgICAgICAgICwgbV9sb2Fk
U3luY2hyb25vdXNseShmYWxzZSkKICAgICAgICAgICAgICwgbV9oYXNSZWNlaXZlZFJlc3BvbnNl
KGZhbHNlKQogI2VuZGlmCiAjaWYgVVNFKENVUkwpCiAgICAgICAgICAgICAsIG1faGFuZGxlKDAp
CiAgICAgICAgICAgICAsIG1fdXJsKDApCiAgICAgICAgICAgICAsIG1fY3VzdG9tSGVhZGVycygw
KQogICAgICAgICAgICAgLCBtX2NhbmNlbGxlZChmYWxzZSkKICAgICAgICAgICAgICwgbV9hdXRo
RmFpbHVyZUNvdW50KDApCiAgICAgICAgICAgICAsIG1fZm9ybURhdGFTdHJlYW0obG9hZGVyKQor
ICAgICAgICAgICAgLCBtX3NzbEVycm9ycygwKQogI2VuZGlmCiAjaWYgVVNFKFNPVVApCiAgICAg
ICAgICAgICAsIG1fY2FuY2VsbGVkKGZhbHNlKQogICAgICAgICAgICAgLCBtX3JlYWRCdWZmZXJQ
dHIoMCkKICAgICAgICAgICAgICwgbV9yZWFkQnVmZmVyU2l6ZSgwKQogICAgICAgICAgICAgLCBt
X2JvZHlTaXplKDApCiAgICAgICAgICAgICAsIG1fYm9keURhdGFTZW50KDApCiAgICAgICAgICAg
ICAsIG1fcmVkaXJlY3RDb3VudCgwKQogI2VuZGlmCiAjaWYgUExBVEZPUk0oTUFDKQogICAgICAg
ICAgICAgLCBtX3N0YXJ0V2hlblNjaGVkdWxlZChmYWxzZSkKICAgICAgICAgICAgICwgbV9uZWVk
c1NpdGVTcGVjaWZpY1F1aXJrcyhmYWxzZSkKICAgICAgICAgICAgICwgbV9jdXJyZW50TWFjQ2hh
bGxlbmdlKG5pbCkKICNlbmRpZgogICAgICAgICAgICAgLCBtX3NjaGVkdWxlZEZhaWx1cmVUeXBl
KFJlc291cmNlSGFuZGxlOjpOb0ZhaWx1cmUpCkBAIC0xNjgsMzAgKzE2OSwzMSBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIFZlY3RvcjxjaGFyPiBtX2Zvcm1EYXRhOwogICAgICAgICBz
aXplX3QgbV9ieXRlc1JlbWFpbmluZ1RvV3JpdGU7CiAgICAgICAgIGJvb2wgbV9sb2FkU3luY2hy
b25vdXNseTsKICAgICAgICAgYm9vbCBtX2hhc1JlY2VpdmVkUmVzcG9uc2U7CiAgICAgICAgIFN0
cmluZyBtX3JlZGlyZWN0VXJsOwogI2VuZGlmCiAjaWYgVVNFKENVUkwpCiAgICAgICAgIENVUkwq
IG1faGFuZGxlOwogICAgICAgICBjaGFyKiBtX3VybDsKICAgICAgICAgc3RydWN0IGN1cmxfc2xp
c3QqIG1fY3VzdG9tSGVhZGVyczsKICAgICAgICAgUmVzb3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNl
OwogICAgICAgICBib29sIG1fY2FuY2VsbGVkOwogICAgICAgICB1bnNpZ25lZCBzaG9ydCBtX2F1
dGhGYWlsdXJlQ291bnQ7CiAKICAgICAgICAgRm9ybURhdGFTdHJlYW0gbV9mb3JtRGF0YVN0cmVh
bTsKKyAgICAgICAgdW5zaWduZWQgbV9zc2xFcnJvcnM7CiAgICAgICAgIFZlY3RvcjxjaGFyPiBt
X3Bvc3RCeXRlczsKIAogICAgICAgICBPd25QdHI8TXVsdGlwYXJ0SGFuZGxlPiBtX211bHRpcGFy
dEhhbmRsZTsKICNlbmRpZgogI2lmIFVTRShTT1VQKQogICAgICAgICBHUmVmUHRyPFNvdXBNZXNz
YWdlPiBtX3NvdXBNZXNzYWdlOwogICAgICAgICBSZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7
CiAgICAgICAgIGJvb2wgbV9jYW5jZWxsZWQ7CiAgICAgICAgIEdSZWZQdHI8U291cFJlcXVlc3Q+
IG1fc291cFJlcXVlc3Q7CiAgICAgICAgIEdSZWZQdHI8R0lucHV0U3RyZWFtPiBtX2lucHV0U3Ry
ZWFtOwogICAgICAgICBHUmVmUHRyPFNvdXBNdWx0aXBhcnRJbnB1dFN0cmVhbT4gbV9tdWx0aXBh
cnRJbnB1dFN0cmVhbTsKICAgICAgICAgR1JlZlB0cjxHQ2FuY2VsbGFibGU+IG1fY2FuY2VsbGFi
bGU7CiAgICAgICAgIEdSZWZQdHI8R0FzeW5jUmVzdWx0PiBtX2RlZmVycmVkUmVzdWx0OwogICAg
ICAgICBHUmVmUHRyPEdTb3VyY2U+IG1fdGltZW91dFNvdXJjZTsKICAgICAgICAgR093blB0cjxj
aGFyPiBtX2RlZmF1bHRSZWFkQnVmZmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlRXJyb3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUVycm9yLmgKaW5kZXggY2E4ZDM2Yi4uNzU1NWY1NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNl
RXJyb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3Vy
Y2VFcnJvci5oCkBAIC0yMSwyOCArMjEsMzQgQEAKICAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKICAqLwogCiAjaWZuZGVmIFJlc291cmNlRXJyb3JfaAogI2RlZmluZSBS
ZXNvdXJjZUVycm9yX2gKIAogI2luY2x1ZGUgIlJlc291cmNlRXJyb3JCYXNlLmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUmVzb3VyY2VFcnJvciA6IHB1YmxpYyBSZXNvdXJjZUVy
cm9yQmFzZQogewogcHVibGljOgotICAgIFJlc291cmNlRXJyb3IoKQorICAgIFJlc291cmNlRXJy
b3IoKSA6IG1fc3NsRXJyb3JzKDApCiAgICAgewogICAgIH0KIAogICAgIFJlc291cmNlRXJyb3Io
Y29uc3QgU3RyaW5nJiBkb21haW4sIGludCBlcnJvckNvZGUsIGNvbnN0IFN0cmluZyYgZmFpbGlu
Z1VSTCwgY29uc3QgU3RyaW5nJiBsb2NhbGl6ZWREZXNjcmlwdGlvbikKLSAgICAgICAgOiBSZXNv
dXJjZUVycm9yQmFzZShkb21haW4sIGVycm9yQ29kZSwgZmFpbGluZ1VSTCwgbG9jYWxpemVkRGVz
Y3JpcHRpb24pCisgICAgICAgIDogUmVzb3VyY2VFcnJvckJhc2UoZG9tYWluLCBlcnJvckNvZGUs
IGZhaWxpbmdVUkwsIGxvY2FsaXplZERlc2NyaXB0aW9uKSwgbV9zc2xFcnJvcnMoMCkKICAgICB7
CiAgICAgfQorCisgICAgdW5zaWduZWQgc3NsRXJyb3JzKCkgY29uc3QgeyByZXR1cm4gbV9zc2xF
cnJvcnM7IH0KKyAgICB2b2lkIHNldFNTTEVycm9ycyh1bnNpZ25lZCBzc2xWZXJpZnlSZXN1bHQp
IHsgbV9zc2xFcnJvcnMgPSBzc2xWZXJpZnlSZXN1bHQ7IH0KKworcHJpdmF0ZToKKyAgICB1bnNp
Z25lZCBtX3NzbEVycm9yczsKIH07CiAKIH0KIAogI2VuZGlmIC8vIFJlc291cmNlRXJyb3JfaF8K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJj
ZUhhbmRsZUN1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jl
c291cmNlSGFuZGxlQ3VybC5jcHAKaW5kZXggMzE4OTdjZi4uNDAxM2NmMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFu
ZGxlQ3VybC5jcHAKQEAgLTIyLDMwICsyMiwzMSBAQAogICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQogICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCiAKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJj
ZUxvYWRlci5oIgogI2luY2x1ZGUgIkNyZWRlbnRpYWxTdG9yYWdlLmgiCiAjaW5jbHVkZSAiTmV0
d29ya2luZ0NvbnRleHQuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUg
IlJlc291cmNlSGFuZGxlSW50ZXJuYWwuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZU1hbmFn
ZXIuaCIKKyNpbmNsdWRlICJTU0xIYW5kbGUuaCIKIAogI2lmIFBMQVRGT1JNKFdJTikgJiYgVVNF
KENGKQogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0
ci5oPgogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgV2ViQ29yZVN5bmNo
cm9ub3VzTG9hZGVyIDogcHVibGljIFJlc291cmNlSGFuZGxlQ2xpZW50IHsKIHB1YmxpYzoKICAg
ICBXZWJDb3JlU3luY2hyb25vdXNMb2FkZXIoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNl
aXZlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAg
ICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiwgY29uc3QgY2hh
ciosIGludCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmlu
aXNoTG9hZGluZyhSZXNvdXJjZUhhbmRsZSosIGRvdWJsZSAvKmZpbmlzaFRpbWUqLyk7CkBAIC0x
MDMsNDMgKzEwNCwzNCBAQCBib29sIFJlc291cmNlSGFuZGxlOjpzdGFydCgpCiAgICAgLy8gSWYg
dGhlIGZyYW1lIGlzIG5vdCBudWxsIGJ1dCB0aGUgcGFnZSBpcyBudWxsIHRoaXMgbXVzdCBiZSBh
biBhdHRlbXB0ZWQKICAgICAvLyBsb2FkIGZyb20gYW4gdW5sb2FkIGhhbmRsZXIsIHNvIGxldCdz
IGp1c3QgYmxvY2sgaXQuCiAgICAgLy8gSWYgYm90aCB0aGUgZnJhbWUgYW5kIHRoZSBwYWdlIGFy
ZSBub3QgbnVsbCB0aGUgY29udGV4dCBpcyB2YWxpZC4KICAgICBpZiAoZC0+bV9jb250ZXh0ICYm
ICFkLT5tX2NvbnRleHQtPmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
UmVzb3VyY2VIYW5kbGVNYW5hZ2VyOjpzaGFyZWRJbnN0YW5jZSgpLT5hZGQodGhpcyk7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmNhbmNlbCgpCiB7CiAgICAg
UmVzb3VyY2VIYW5kbGVNYW5hZ2VyOjpzaGFyZWRJbnN0YW5jZSgpLT5jYW5jZWwodGhpcyk7CiB9
CiAKLSNpZiBQTEFURk9STShXSU4pICYmIFVTRShDRikKLXN0YXRpYyBIYXNoU2V0PFN0cmluZz4m
IGFsbG93c0FueUhUVFBTQ2VydGlmaWNhdGVIb3N0cygpCi17Ci0gICAgc3RhdGljIEhhc2hTZXQ8
U3RyaW5nPiBob3N0czsKLQotICAgIHJldHVybiBob3N0czsKLX0KLQogdm9pZCBSZXNvdXJjZUhh
bmRsZTo6c2V0SG9zdEFsbG93c0FueUhUVFBTQ2VydGlmaWNhdGUoY29uc3QgU3RyaW5nJiBob3N0
KQogewotICAgIGFsbG93c0FueUhUVFBTQ2VydGlmaWNhdGVIb3N0cygpLmFkZChob3N0Lmxvd2Vy
KCkpOworICAgIGFsbG93c0FueUhUVFBTQ2VydGlmaWNhdGVIb3N0cyhob3N0Lmxvd2VyKCkpOwog
fQotI2VuZGlmCiAKICNpZiBQTEFURk9STShXSU4pICYmIFVTRShDRikKIC8vIEZJWE1FOiAgVGhl
IENGRGF0YVJlZiB3aWxsIG5lZWQgdG8gYmUgc29tZXRoaW5nIGVsc2Ugd2hlbgogLy8gYnVpbGRp
bmcgd2l0aG91dCAKIHN0YXRpYyBIYXNoTWFwPFN0cmluZywgUmV0YWluUHRyPENGRGF0YVJlZj4g
PiYgY2xpZW50Q2VydHMoKQogewogICAgIHN0YXRpYyBIYXNoTWFwPFN0cmluZywgUmV0YWluUHRy
PENGRGF0YVJlZj4gPiBjZXJ0czsKICAgICByZXR1cm4gY2VydHM7CiB9CiAKIHZvaWQgUmVzb3Vy
Y2VIYW5kbGU6OnNldENsaWVudENlcnRpZmljYXRlKGNvbnN0IFN0cmluZyYgaG9zdCwgQ0ZEYXRh
UmVmIGNlcnQpCiB7CiAgICAgY2xpZW50Q2VydHMoKS5zZXQoaG9zdC5sb3dlcigpLCBjZXJ0KTsK
IH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL1Jlc291cmNlSGFuZGxlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVNYW5hZ2VyLmNwcAppbmRleCAyMTM4ZDI3Li41YTcy
OTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVz
b3VyY2VIYW5kbGVNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVNYW5hZ2VyLmNwcApAQCAtMzQsMzAgKzM0LDMxIEBACiAg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJSZXNv
dXJjZUhhbmRsZU1hbmFnZXIuaCIKIAogI2luY2x1ZGUgIkNyZWRlbnRpYWxTdG9yYWdlLmgiCiAj
aW5jbHVkZSAiQ3VybENhY2hlTWFuYWdlci5oIgogI2luY2x1ZGUgIkRhdGFVUkwuaCIKICNpbmNs
dWRlICJIVFRQUGFyc2Vycy5oIgogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKICNpbmNs
dWRlICJNdWx0aXBhcnRIYW5kbGUuaCIKICNpbmNsdWRlICJSZXNvdXJjZUVycm9yLmgiCiAjaW5j
bHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZUludGVybmFs
LmgiCisjaW5jbHVkZSAiU1NMSGFuZGxlLmgiCiAKICNpZiBPUyhXSU5ET1dTKQogI2luY2x1ZGUg
IldlYkNvcmVCdW5kbGVXaW4uaCIKICNpbmNsdWRlIDxzaGxvYmouaD4KICNpbmNsdWRlIDxzaGx3
YXBpLmg+CiAjZWxzZQogI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgogI2RlZmluZSBNQVhfUEFUSCBN
QVhQQVRITEVOCiAjZW5kaWYKIAogI2luY2x1ZGUgPGVycm5vLmg+CiAjaW5jbHVkZSA8c3RkaW8u
aD4KICNpZiBVU0UoQ0YpCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2VuZGlmCkBAIC02
MTAsMzEgKzYxMSwzMyBAQCB2b2lkIFJlc291cmNlSGFuZGxlTWFuYWdlcjo6ZG93bmxvYWRUaW1l
ckNhbGxiYWNrKFRpbWVyPFJlc291cmNlSGFuZGxlTWFuYWdlcj4qCiAKICAgICAgICAgICAgIGlm
IChkLT5tX211bHRpcGFydEhhbmRsZSkKICAgICAgICAgICAgICAgICBkLT5tX211bHRpcGFydEhh
bmRsZS0+Y29udGVudEVuZGVkKCk7CiAKICAgICAgICAgICAgIGlmIChkLT5jbGllbnQoKSkgewog
ICAgICAgICAgICAgICAgIGQtPmNsaWVudCgpLT5kaWRGaW5pc2hMb2FkaW5nKGpvYiwgMCk7CiAg
ICAgICAgICAgICAgICAgQ3VybENhY2hlTWFuYWdlcjo6Z2V0SW5zdGFuY2UoKS5kaWRGaW5pc2hM
b2FkaW5nKGpvYi0+Zmlyc3RSZXF1ZXN0KCkudXJsKCkuc3RyaW5nKCkpOwogICAgICAgICAgICAg
fQogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgY2hhciogdXJsID0gMDsKICAgICAgICAg
ICAgIGN1cmxfZWFzeV9nZXRpbmZvKGQtPm1faGFuZGxlLCBDVVJMSU5GT19FRkZFQ1RJVkVfVVJM
LCAmdXJsKTsKICNpZm5kZWYgTkRFQlVHCiAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkN1
cmwgRVJST1IgZm9yIHVybD0nJXMnLCBlcnJvcjogJyVzJ1xuIiwgdXJsLCBjdXJsX2Vhc3lfc3Ry
ZXJyb3IobXNnLT5kYXRhLnJlc3VsdCkpOwogI2VuZGlmCiAgICAgICAgICAgICBpZiAoZC0+Y2xp
ZW50KCkpIHsKLSAgICAgICAgICAgICAgICBkLT5jbGllbnQoKS0+ZGlkRmFpbChqb2IsIFJlc291
cmNlRXJyb3IoU3RyaW5nKCksIG1zZy0+ZGF0YS5yZXN1bHQsIFN0cmluZyh1cmwpLCBTdHJpbmco
Y3VybF9lYXN5X3N0cmVycm9yKG1zZy0+ZGF0YS5yZXN1bHQpKSkpOworICAgICAgICAgICAgICAg
IFJlc291cmNlRXJyb3IgcmVzb3VyY2VFcnJvcihTdHJpbmcoKSwgbXNnLT5kYXRhLnJlc3VsdCwg
U3RyaW5nKHVybCksIFN0cmluZyhjdXJsX2Vhc3lfc3RyZXJyb3IobXNnLT5kYXRhLnJlc3VsdCkp
KTsKKyAgICAgICAgICAgICAgICByZXNvdXJjZUVycm9yLnNldFNTTEVycm9ycyhkLT5tX3NzbEVy
cm9ycyk7CisgICAgICAgICAgICAgICAgZC0+Y2xpZW50KCktPmRpZEZhaWwoam9iLCByZXNvdXJj
ZUVycm9yKTsKICAgICAgICAgICAgICAgICBDdXJsQ2FjaGVNYW5hZ2VyOjpnZXRJbnN0YW5jZSgp
LmRpZEZhaWwoam9iLT5maXJzdFJlcXVlc3QoKS51cmwoKS5zdHJpbmcoKSk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KIAogICAgICAgICByZW1vdmVGcm9tQ3VybChqb2IpOwogICAgIH0KIAog
ICAgIGJvb2wgc3RhcnRlZCA9IHN0YXJ0U2NoZWR1bGVkSm9icygpOyAvLyBuZXcgam9icyBtaWdo
dCBoYXZlIGJlZW4gYWRkZWQgaW4gdGhlIG1lYW50aW1lCiAKICAgICBpZiAoIW1fZG93bmxvYWRU
aW1lci5pc0FjdGl2ZSgpICYmIChzdGFydGVkIHx8IChydW5uaW5nSGFuZGxlcyA+IDApKSkKICAg
ICAgICAgbV9kb3dubG9hZFRpbWVyLnN0YXJ0T25lU2hvdChwb2xsVGltZVNlY29uZHMpOwogfQog
CiB2b2lkIFJlc291cmNlSGFuZGxlTWFuYWdlcjo6c2V0UHJveHlJbmZvKGNvbnN0IFN0cmluZyYg
aG9zdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg
bG9uZyBwb3J0LApAQCAtOTMwLDQ4ICs5MzMsNTEgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZU1hbmFn
ZXI6OmluaXRpYWxpemVIYW5kbGUoUmVzb3VyY2VIYW5kbGUqIGpvYikKICAgICAgICAgZC0+bV9y
ZXNwb25zZS5zZXRNaW1lVHlwZShNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRNSU1FVHlwZUZvclBhdGgo
dXJsKSk7CiAgICAgfQogCiAgICAgZC0+bV9oYW5kbGUgPSBjdXJsX2Vhc3lfaW5pdCgpOwogCiAg
ICAgaWYgKGQtPm1fZGVmZXJzTG9hZGluZykgewogICAgICAgICBDVVJMY29kZSBlcnJvciA9IGN1
cmxfZWFzeV9wYXVzZShkLT5tX2hhbmRsZSwgQ1VSTFBBVVNFX0FMTCk7CiAgICAgICAgIC8vIElm
IHdlIGRpZCBub3QgcGF1c2UgdGhlIGhhbmRsZSwgd2Ugd291bGQgQVNTRVJUIGluIHRoZQogICAg
ICAgICAvLyBoZWFkZXIgY2FsbGJhY2suIFNvIGp1c3QgYXNzZXJ0IGhlcmUuCiAgICAgICAgIEFT
U0VSVF9VTlVTRUQoZXJyb3IsIGVycm9yID09IENVUkxFX09LKTsKICAgICB9CiAjaWZuZGVmIE5E
RUJVRwogICAgIGlmIChnZXRlbnYoIkRFQlVHX0NVUkwiKSkKICAgICAgICAgY3VybF9lYXN5X3Nl
dG9wdChkLT5tX2hhbmRsZSwgQ1VSTE9QVF9WRVJCT1NFLCAxKTsKICNlbmRpZgorICAgIGN1cmxf
ZWFzeV9zZXRvcHQoZC0+bV9oYW5kbGUsIENVUkxPUFRfU1NMX1ZFUklGWVBFRVIsIDFMKTsKKyAg
ICBjdXJsX2Vhc3lfc2V0b3B0KGQtPm1faGFuZGxlLCBDVVJMT1BUX1NTTF9WRVJJRllIT1NULCAy
TCk7CiAgICAgY3VybF9lYXN5X3NldG9wdChkLT5tX2hhbmRsZSwgQ1VSTE9QVF9QUklWQVRFLCBq
b2IpOwogICAgIGN1cmxfZWFzeV9zZXRvcHQoZC0+bV9oYW5kbGUsIENVUkxPUFRfRVJST1JCVUZG
RVIsIG1fY3VybEVycm9yQnVmZmVyKTsKICAgICBjdXJsX2Vhc3lfc2V0b3B0KGQtPm1faGFuZGxl
LCBDVVJMT1BUX1dSSVRFRlVOQ1RJT04sIHdyaXRlQ2FsbGJhY2spOwogICAgIGN1cmxfZWFzeV9z
ZXRvcHQoZC0+bV9oYW5kbGUsIENVUkxPUFRfV1JJVEVEQVRBLCBqb2IpOwogICAgIGN1cmxfZWFz
eV9zZXRvcHQoZC0+bV9oYW5kbGUsIENVUkxPUFRfSEVBREVSRlVOQ1RJT04sIGhlYWRlckNhbGxi
YWNrKTsKICAgICBjdXJsX2Vhc3lfc2V0b3B0KGQtPm1faGFuZGxlLCBDVVJMT1BUX1dSSVRFSEVB
REVSLCBqb2IpOwogICAgIGN1cmxfZWFzeV9zZXRvcHQoZC0+bV9oYW5kbGUsIENVUkxPUFRfQVVU
T1JFRkVSRVIsIDEpOwogICAgIGN1cmxfZWFzeV9zZXRvcHQoZC0+bV9oYW5kbGUsIENVUkxPUFRf
Rk9MTE9XTE9DQVRJT04sIDEpOwogICAgIGN1cmxfZWFzeV9zZXRvcHQoZC0+bV9oYW5kbGUsIENV
UkxPUFRfTUFYUkVESVJTLCAxMCk7CiAgICAgY3VybF9lYXN5X3NldG9wdChkLT5tX2hhbmRsZSwg
Q1VSTE9QVF9IVFRQQVVUSCwgQ1VSTEFVVEhfQU5ZKTsKICAgICBjdXJsX2Vhc3lfc2V0b3B0KGQt
Pm1faGFuZGxlLCBDVVJMT1BUX1NIQVJFLCBtX2N1cmxTaGFyZUhhbmRsZSk7CiAgICAgY3VybF9l
YXN5X3NldG9wdChkLT5tX2hhbmRsZSwgQ1VSTE9QVF9ETlNfQ0FDSEVfVElNRU9VVCwgNjAgKiA1
KTsgLy8gNSBtaW51dGVzCiAgICAgY3VybF9lYXN5X3NldG9wdChkLT5tX2hhbmRsZSwgQ1VSTE9Q
VF9QUk9UT0NPTFMsIGFsbG93ZWRQcm90b2NvbHMpOwogICAgIGN1cmxfZWFzeV9zZXRvcHQoZC0+
bV9oYW5kbGUsIENVUkxPUFRfUkVESVJfUFJPVE9DT0xTLCBhbGxvd2VkUHJvdG9jb2xzKTsKLSAg
ICAvLyBGSVhNRTogRW5hYmxlIFNTTCB2ZXJpZmljYXRpb24gd2hlbiB3ZSBoYXZlIGEgd2F5IG9m
IHNoaXBwaW5nIGNlcnRzCi0gICAgLy8gYW5kL29yIHJlcG9ydGluZyBTU0wgZXJyb3JzIHRvIHRo
ZSB1c2VyLgorCiAgICAgaWYgKGlnbm9yZVNTTEVycm9ycykKICAgICAgICAgY3VybF9lYXN5X3Nl
dG9wdChkLT5tX2hhbmRsZSwgQ1VSTE9QVF9TU0xfVkVSSUZZUEVFUiwgZmFsc2UpOworICAgIGVs
c2UKKyAgICAgICAgc2V0U1NMVmVyaWZ5T3B0aW9ucyhqb2IpOwogCiAgICAgaWYgKCFtX2NlcnRp
ZmljYXRlUGF0aC5pc051bGwoKSkKICAgICAgICBjdXJsX2Vhc3lfc2V0b3B0KGQtPm1faGFuZGxl
LCBDVVJMT1BUX0NBSU5GTywgbV9jZXJ0aWZpY2F0ZVBhdGguZGF0YSgpKTsKIAogICAgIC8vIGVu
YWJsZSBnemlwIGFuZCBkZWZsYXRlIHRocm91Z2ggQWNjZXB0LUVuY29kaW5nOgogICAgIGN1cmxf
ZWFzeV9zZXRvcHQoZC0+bV9oYW5kbGUsIENVUkxPUFRfRU5DT0RJTkcsICIiKTsKIAogICAgIC8v
IHVybCBtdXN0IHJlbWFpbiB2YWxpZCB0aHJvdWdoIHRoZSByZXF1ZXN0CiAgICAgQVNTRVJUKCFk
LT5tX3VybCk7CiAKICAgICAvLyB1cmwgaXMgaW4gQVNDSUkgc28gbGF0aW4xKCkgd2lsbCBvbmx5
IGNvbnZlcnQgaXQgdG8gY2hhciogd2l0aG91dCBjaGFyYWN0ZXIgdHJhbnNsYXRpb24uCiAgICAg
ZC0+bV91cmwgPSBmYXN0U3RyRHVwKHVybFN0cmluZy5sYXRpbjEoKS5kYXRhKCkpOwogICAgIGN1
cmxfZWFzeV9zZXRvcHQoZC0+bV9oYW5kbGUsIENVUkxPUFRfVVJMLCBkLT5tX3VybCk7CiAKICAg
ICBpZiAobV9jb29raWVKYXJGaWxlTmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9TU0xIYW5kbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL1NTTEhhbmRsZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uZmFhNWVmNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9TU0xIYW5kbGUuY3BwCkBAIC0wLDAgKzEsMTk3IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEzIFVuaXZlcnNpdHkgb2YgU3plZ2VkCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBVTklWRVJTSVRZIE9GIFNaRUdFRCBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisKKyNpbmNsdWRlICJTU0xIYW5kbGUuaCIKKworI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlSW50
ZXJuYWwuaCIKKworI2luY2x1ZGUgPG9wZW5zc2wvcGVtLmg+CisjaW5jbHVkZSA8b3BlbnNzbC9z
c2wuaD4KKyNpbmNsdWRlIDxvcGVuc3NsL3g1MDlfdmZ5Lmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworc3RhdGljIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IGFsbG93ZWRIb3N0czsKKwordm9p
ZCBhbGxvd3NBbnlIVFRQU0NlcnRpZmljYXRlSG9zdHMoY29uc3QgU3RyaW5nJiBob3N0KQorewor
ICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+OjppdGVyYXRvciBpdCA9IGFsbG93ZWRIb3N0cy5m
aW5kKGhvc3QpOworICAgIGlmIChpdCAhPSBhbGxvd2VkSG9zdHMuZW5kKCkpCisgICAgICAgIGl0
LT52YWx1ZSA9IFN0cmluZygpOworICAgIGVsc2UKKyAgICAgICAgYWxsb3dlZEhvc3RzLmFkZCho
b3N0LCBTdHJpbmcoKSk7Cit9CisKK2Jvb2wgc3NsSWdub3JlSFRUUFNDZXJ0aWZpY2F0ZShjb25z
dCBTdHJpbmcmIGhvc3QsIGNvbnN0IFN0cmluZyYgY2VydCkKK3sKKyAgICBIYXNoTWFwPFN0cmlu
ZywgU3RyaW5nPjo6aXRlcmF0b3IgaXQgPSBhbGxvd2VkSG9zdHMuZmluZChob3N0KTsKKyAgICBp
ZiAoaXQgIT0gYWxsb3dlZEhvc3RzLmVuZCgpKSB7CisgICAgICAgIGlmICgoaXQtPnZhbHVlKS5p
c0VtcHR5KCkpIHsKKyAgICAgICAgICAgIGl0LT52YWx1ZSA9IGNlcnQ7CisgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoaXQtPnZhbHVlID09IGNlcnQpCisg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCit1
bnNpZ25lZCBzc2xDZXJ0aWZpY2F0ZUZsYWcoY29uc3QgdW5zaWduZWQmIHNzbEVycm9yKQorewor
ICAgIHN3aXRjaCAoc3NsRXJyb3IpIHsKKyAgICBjYXNlIFg1MDlfVl9FUlJfVU5BQkxFX1RPX0dF
VF9JU1NVRVJfQ0VSVCA6IC8vIHRoZSBpc3N1ZXIgY2VydGlmaWNhdGUgY291bGQgbm90IGJlIGZv
dW5kOiB0aGlzIG9jY3VycyBpZiB0aGUgaXNzdWVyIGNlcnRpZmljYXRlIG9mIGFuIHVudHJ1c3Rl
ZCBjZXJ0aWZpY2F0ZSBjYW5ub3QgYmUgZm91bmQuCisgICAgY2FzZSBYNTA5X1ZfRVJSX1VOQUJM
RV9UT19HRVRfQ1JMIDogLy8gdGhlIENSTCBvZiBhIGNlcnRpZmljYXRlIGNvdWxkIG5vdCBiZSBm
b3VuZC4KKyAgICBjYXNlIFg1MDlfVl9FUlJfVU5BQkxFX1RPX0dFVF9JU1NVRVJfQ0VSVF9MT0NB
TExZIDogLy8gdGhlIGlzc3VlciBjZXJ0aWZpY2F0ZSBvZiBhIGxvY2FsbHkgbG9va2VkIHVwIGNl
cnRpZmljYXRlIGNvdWxkIG5vdCBiZSBmb3VuZC4gVGhpcyBub3JtYWxseSBtZWFucyB0aGUgbGlz
dCBvZiB0cnVzdGVkIGNlcnRpZmljYXRlcyBpcyBub3QgY29tcGxldGUuCisgICAgICAgIHJldHVy
biBTU0xfQ0VSVElGSUNBVEVfVU5LTk9XTl9DQTsKKyAgICBjYXNlIFg1MDlfVl9FUlJfVU5BQkxF
X1RPX0RFQ1JZUFRfQ0VSVF9TSUdOQVRVUkUgOiAvLyB0aGUgY2VydGlmaWNhdGUgc2lnbmF0dXJl
IGNvdWxkIG5vdCBiZSBkZWNyeXB0ZWQuIFRoaXMgbWVhbnMgdGhhdCB0aGUgYWN0dWFsIHNpZ25h
dHVyZSB2YWx1ZSBjb3VsZCBub3QgYmUgZGV0ZXJtaW5lZCByYXRoZXIgdGhhbiBpdCBub3QgbWF0
Y2hpbmcgdGhlIGV4cGVjdGVkIHZhbHVlLCB0aGlzIGlzIG9ubHkgbWVhbmluZ2Z1bCBmb3IgUlNB
IGtleXMuCisgICAgY2FzZSBYNTA5X1ZfRVJSX1VOQUJMRV9UT19ERUNSWVBUX0NSTF9TSUdOQVRV
UkUgOiAvLyB0aGUgQ1JMIHNpZ25hdHVyZSBjb3VsZCBub3QgYmUgZGVjcnlwdGVkOiB0aGlzIG1l
YW5zIHRoYXQgdGhlIGFjdHVhbCBzaWduYXR1cmUgdmFsdWUgY291bGQgbm90IGJlIGRldGVybWlu
ZWQgcmF0aGVyIHRoYW4gaXQgbm90IG1hdGNoaW5nIHRoZSBleHBlY3RlZCB2YWx1ZS4gVW51c2Vk
LgorICAgIGNhc2UgWDUwOV9WX0VSUl9VTkFCTEVfVE9fREVDT0RFX0lTU1VFUl9QVUJMSUNfS0VZ
IDogLy8gdGhlIHB1YmxpYyBrZXkgaW4gdGhlIGNlcnRpZmljYXRlIFN1YmplY3RQdWJsaWNLZXlJ
bmZvIGNvdWxkIG5vdCBiZSByZWFkLgorICAgIGNhc2UgWDUwOV9WX0VSUl9DRVJUX1NJR05BVFVS
RV9GQUlMVVJFIDogLy8gdGhlIHNpZ25hdHVyZSBvZiB0aGUgY2VydGlmaWNhdGUgaXMgaW52YWxp
ZC4KKyAgICBjYXNlIFg1MDlfVl9FUlJfREVQVEhfWkVST19TRUxGX1NJR05FRF9DRVJUIDogLy8g
dGhlIHBhc3NlZCBjZXJ0aWZpY2F0ZSBpcyBzZWxmIHNpZ25lZCBhbmQgdGhlIHNhbWUgY2VydGlm
aWNhdGUgY2Fubm90IGJlIGZvdW5kIGluIHRoZSBsaXN0IG9mIHRydXN0ZWQgY2VydGlmaWNhdGVz
LgorICAgIGNhc2UgWDUwOV9WX0VSUl9TRUxGX1NJR05FRF9DRVJUX0lOX0NIQUlOIDogLy8gdGhl
IGNlcnRpZmljYXRlIGNoYWluIGNvdWxkIGJlIGJ1aWx0IHVwIHVzaW5nIHRoZSB1bnRydXN0ZWQg
Y2VydGlmaWNhdGVzIGJ1dCB0aGUgcm9vdCBjb3VsZCBub3QgYmUgZm91bmQgbG9jYWxseS4KKyAg
ICBjYXNlIFg1MDlfVl9FUlJfVU5BQkxFX1RPX1ZFUklGWV9MRUFGX1NJR05BVFVSRSA6IC8vIG5v
IHNpZ25hdHVyZXMgY291bGQgYmUgdmVyaWZpZWQgYmVjYXVzZSB0aGUgY2hhaW4gY29udGFpbnMg
b25seSBvbmUgY2VydGlmaWNhdGUgYW5kIGl0IGlzIG5vdCBzZWxmIHNpZ25lZC4KKyAgICBjYXNl
IFg1MDlfVl9FUlJfSU5WQUxJRF9QVVJQT1NFIDogLy8gdGhlIHN1cHBsaWVkIGNlcnRpZmljYXRl
IGNhbm5vdCBiZSB1c2VkIGZvciB0aGUgc3BlY2lmaWVkIHB1cnBvc2UuCisgICAgY2FzZSBYNTA5
X1ZfRVJSX0NFUlRfVU5UUlVTVEVEIDogLy8gdGhlIHJvb3QgQ0EgaXMgbm90IG1hcmtlZCBhcyB0
cnVzdGVkIGZvciB0aGUgc3BlY2lmaWVkIHB1cnBvc2UuCisgICAgY2FzZSBYNTA5X1ZfRVJSX0NF
UlRfUkVKRUNURUQgOiAvLyB0aGUgcm9vdCBDQSBpcyBtYXJrZWQgdG8gcmVqZWN0IHRoZSBzcGVj
aWZpZWQgcHVycG9zZS4KKyAgICBjYXNlIFg1MDlfVl9FUlJfTk9fRVhQTElDSVRfUE9MSUNZIDog
Ly8gdGhlIHZlcmlmaWNhdGlvbiBmbGFncyB3ZXJlIHNldCB0byByZXF1aXJlIGFuZCBleHBsaWNp
dCBwb2xpY3kgYnV0IG5vbmUgd2FzIHByZXNlbnQuCisgICAgY2FzZSBYNTA5X1ZfRVJSX0RJRkZF
UkVOVF9DUkxfU0NPUEUgOiAvLyB0aGUgb25seSBDUkxzIHRoYXQgY291bGQgYmUgZm91bmQgZGlk
IG5vdCBtYXRjaCB0aGUgc2NvcGUgb2YgdGhlIGNlcnRpZmljYXRlLgorICAgICAgICByZXR1cm4g
U1NMX0NFUlRJRklDQVRFX0lOU0VDVVJFOworICAgIGNhc2UgWDUwOV9WX0VSUl9DRVJUX05PVF9Z
RVRfVkFMSUQgOiAvLyB0aGUgY2VydGlmaWNhdGUgaXMgbm90IHlldCB2YWxpZDogdGhlIG5vdEJl
Zm9yZSBkYXRlIGlzIGFmdGVyIHRoZSBjdXJyZW50IHRpbWUuCisgICAgY2FzZSBYNTA5X1ZfRVJS
X0NSTF9OT1RfWUVUX1ZBTElEIDogLy8gdGhlIENSTCBpcyBub3QgeWV0IHZhbGlkLgorICAgICAg
ICByZXR1cm4gU1NMX0NFUlRJRklDQVRFX05PVF9BQ1RJVkFURUQ7CisgICAgY2FzZSBYNTA5X1Zf
RVJSX0NFUlRfSEFTX0VYUElSRUQgOiAvLyB0aGUgY2VydGlmaWNhdGUgaGFzIGV4cGlyZWQ6IHRo
YXQgaXMgdGhlIG5vdEFmdGVyIGRhdGUgaXMgYmVmb3JlIHRoZSBjdXJyZW50IHRpbWUuCisgICAg
Y2FzZSBYNTA5X1ZfRVJSX0NSTF9IQVNfRVhQSVJFRCA6IC8vIHRoZSBDUkwgaGFzIGV4cGlyZWQu
CisgICAgICAgIHJldHVybiBTU0xfQ0VSVElGSUNBVEVfRVhQSVJFRDsKKyAgICBjYXNlIFg1MDlf
Vl9FUlJfRVJST1JfSU5fQ0VSVF9OT1RfQkVGT1JFX0ZJRUxEIDogLy8gdGhlIGNlcnRpZmljYXRl
IG5vdEJlZm9yZSBmaWVsZCBjb250YWlucyBhbiBpbnZhbGlkIHRpbWUuCisgICAgY2FzZSBYNTA5
X1ZfRVJSX0VSUk9SX0lOX0NFUlRfTk9UX0FGVEVSX0ZJRUxEIDogLy8gdGhlIGNlcnRpZmljYXRl
IG5vdEFmdGVyIGZpZWxkIGNvbnRhaW5zIGFuIGludmFsaWQgdGltZS4KKyAgICBjYXNlIFg1MDlf
Vl9FUlJfRVJST1JfSU5fQ1JMX0xBU1RfVVBEQVRFX0ZJRUxEIDogLy8gdGhlIENSTCBsYXN0VXBk
YXRlIGZpZWxkIGNvbnRhaW5zIGFuIGludmFsaWQgdGltZS4KKyAgICBjYXNlIFg1MDlfVl9FUlJf
RVJST1JfSU5fQ1JMX05FWFRfVVBEQVRFX0ZJRUxEIDogLy8gdGhlIENSTCBuZXh0VXBkYXRlIGZp
ZWxkIGNvbnRhaW5zIGFuIGludmFsaWQgdGltZS4KKyAgICBjYXNlIFg1MDlfVl9FUlJfT1VUX09G
X01FTSA6IC8vIGFuIGVycm9yIG9jY3VycmVkIHRyeWluZyB0byBhbGxvY2F0ZSBtZW1vcnkuIFRo
aXMgc2hvdWxkIG5ldmVyIGhhcHBlbi4KKyAgICBjYXNlIFg1MDlfVl9FUlJfQ0VSVF9DSEFJTl9U
T09fTE9ORyA6IC8vIHRoZSBjZXJ0aWZpY2F0ZSBjaGFpbiBsZW5ndGggaXMgZ3JlYXRlciB0aGFu
IHRoZSBzdXBwbGllZCBtYXhpbXVtIGRlcHRoLiBVbnVzZWQuCisgICAgY2FzZSBYNTA5X1ZfRVJS
X1BBVEhfTEVOR1RIX0VYQ0VFREVEIDogLy8gdGhlIGJhc2ljQ29uc3RyYWludHMgcGF0aGxlbmd0
aCBwYXJhbWV0ZXIgaGFzIGJlZW4gZXhjZWVkZWQuCisgICAgY2FzZSBYNTA5X1ZfRVJSX0lOVkFM
SURfRVhURU5TSU9OIDogLy8gYSBjZXJ0aWZpY2F0ZSBleHRlbnNpb24gaGFkIGFuIGludmFsaWQg
dmFsdWUgKGZvciBleGFtcGxlIGFuIGluY29ycmVjdCBlbmNvZGluZykgb3Igc29tZSB2YWx1ZSBp
bmNvbnNpc3RlbnQgd2l0aCBvdGhlciBleHRlbnNpb25zLgorICAgIGNhc2UgWDUwOV9WX0VSUl9J
TlZBTElEX1BPTElDWV9FWFRFTlNJT04gOiAvLyBhIGNlcnRpZmljYXRlIHBvbGljaWVzIGV4dGVu
c2lvbiBoYWQgYW4gaW52YWxpZCB2YWx1ZSAoZm9yIGV4YW1wbGUgYW4gaW5jb3JyZWN0IGVuY29k
aW5nKSBvciBzb21lIHZhbHVlIGluY29uc2lzdGVudCB3aXRoIG90aGVyIGV4dGVuc2lvbnMuIFRo
aXMgZXJyb3Igb25seSBvY2N1cnMgaWYgcG9saWN5IHByb2Nlc3NpbmcgaXMgZW5hYmxlZC4KKyAg
ICBjYXNlIFg1MDlfVl9FUlJfVU5TVVBQT1JURURfRVhURU5TSU9OX0ZFQVRVUkUgOiAvLyBzb21l
IGZlYXR1cmUgb2YgYSBjZXJ0aWZpY2F0ZSBleHRlbnNpb24gaXMgbm90IHN1cHBvcnRlZC4gVW51
c2VkLgorICAgIGNhc2UgWDUwOV9WX0VSUl9QRVJNSVRURURfVklPTEFUSU9OIDogLy8gYSBuYW1l
IGNvbnN0cmFpbnQgdmlvbGF0aW9uIG9jY3VyZWQgaW4gdGhlIHBlcm1pdHRlZCBzdWJ0cmVlcy4K
KyAgICBjYXNlIFg1MDlfVl9FUlJfRVhDTFVERURfVklPTEFUSU9OIDogLy8gYSBuYW1lIGNvbnN0
cmFpbnQgdmlvbGF0aW9uIG9jY3VyZWQgaW4gdGhlIGV4Y2x1ZGVkIHN1YnRyZWVzLgorICAgIGNh
c2UgWDUwOV9WX0VSUl9TVUJUUkVFX01JTk1BWCA6IC8vIGEgY2VydGlmaWNhdGUgbmFtZSBjb25z
dHJhaW50cyBleHRlbnNpb24gaW5jbHVkZWQgYSBtaW5pbXVtIG9yIG1heGltdW0gZmllbGQ6IHRo
aXMgaXMgbm90IHN1cHBvcnRlZC4KKyAgICBjYXNlIFg1MDlfVl9FUlJfVU5TVVBQT1JURURfQ09O
U1RSQUlOVF9UWVBFIDogLy8gYW4gdW5zdXBwb3J0ZWQgbmFtZSBjb25zdHJhaW50IHR5cGUgd2Fz
IGVuY291bnRlcmVkLiBPcGVuU1NMIGN1cnJlbnRseSBvbmx5IHN1cHBvcnRzIGRpcmVjdG9yeSBu
YW1lLCBETlMgbmFtZSwgZW1haWwgYW5kIFVSSSB0eXBlcy4KKyAgICBjYXNlIFg1MDlfVl9FUlJf
VU5TVVBQT1JURURfQ09OU1RSQUlOVF9TWU5UQVggOiAvLyB0aGUgZm9ybWF0IG9mIHRoZSBuYW1l
IGNvbnN0cmFpbnQgaXMgbm90IHJlY29nbmlzZWQ6IGZvciBleGFtcGxlIGFuIGVtYWlsIGFkZHJl
c3MgZm9ybWF0IG9mIGEgZm9ybSBub3QgbWVudGlvbmVkIGluIFJGQzMyODAuIFRoaXMgY291bGQg
YmUgY2F1c2VkIGJ5IGEgZ2FyYmFnZSBleHRlbnNpb24gb3Igc29tZSBuZXcgZmVhdHVyZSBub3Qg
Y3VycmVudGx5IHN1cHBvcnRlZC4KKyAgICBjYXNlIFg1MDlfVl9FUlJfQ1JMX1BBVEhfVkFMSURB
VElPTl9FUlJPUiA6IC8vIGFuIGVycm9yIG9jY3VyZWQgd2hlbiBhdHRlbXB0aW5nIHRvIHZlcmlm
eSB0aGUgQ1JMIHBhdGguIFRoaXMgZXJyb3IgY2FuIG9ubHkgaGFwcGVuIGlmIGV4dGVuZGVkIENS
TCBjaGVja2luZyBpcyBlbmFibGVkLgorICAgIGNhc2UgWDUwOV9WX0VSUl9BUFBMSUNBVElPTl9W
RVJJRklDQVRJT04gOiAvLyBhbiBhcHBsaWNhdGlvbiBzcGVjaWZpYyBlcnJvci4gVGhpcyB3aWxs
IG5ldmVyIGJlIHJldHVybmVkIHVubGVzcyBleHBsaWNpdGx5IHNldCBieSBhbiBhcHBsaWNhdGlv
bi4KKyAgICAgICAgcmV0dXJuIFNTTF9DRVJUSUZJQ0FURV9HRU5FUklDX0VSUk9SOworICAgIGNh
c2UgWDUwOV9WX0VSUl9DRVJUX1JFVk9LRUQgOiAvLyB0aGUgY2VydGlmaWNhdGUgaGFzIGJlZW4g
cmV2b2tlZC4KKyAgICAgICAgcmV0dXJuIFNTTF9DRVJUSUZJQ0FURV9SRVZPS0VEOworICAgIGNh
c2UgWDUwOV9WX0VSUl9JTlZBTElEX0NBIDogLy8gYSBDQSBjZXJ0aWZpY2F0ZSBpcyBpbnZhbGlk
LiBFaXRoZXIgaXQgaXMgbm90IGEgQ0Egb3IgaXRzIGV4dGVuc2lvbnMgYXJlIG5vdCBjb25zaXN0
ZW50IHdpdGggdGhlIHN1cHBsaWVkIHB1cnBvc2UuCisgICAgY2FzZSBYNTA5X1ZfRVJSX1NVQkpF
Q1RfSVNTVUVSX01JU01BVENIIDogLy8gdGhlIGN1cnJlbnQgY2FuZGlkYXRlIGlzc3VlciBjZXJ0
aWZpY2F0ZSB3YXMgcmVqZWN0ZWQgYmVjYXVzZSBpdHMgc3ViamVjdCBuYW1lIGRpZCBub3QgbWF0
Y2ggdGhlIGlzc3VlciBuYW1lIG9mIHRoZSBjdXJyZW50IGNlcnRpZmljYXRlLiBUaGlzIGlzIG9u
bHkgc2V0IGlmIGlzc3VlciBjaGVjayBkZWJ1Z2dpbmcgaXMgZW5hYmxlZCBpdCBpcyB1c2VkIGZv
ciBzdGF0dXMgbm90aWZpY2F0aW9uIGFuZCBpcyBub3QgaW4gaXRzZWxmIGFuIGVycm9yLgorICAg
IGNhc2UgWDUwOV9WX0VSUl9BS0lEX1NLSURfTUlTTUFUQ0ggOiAvLyB0aGUgY3VycmVudCBjYW5k
aWRhdGUgaXNzdWVyIGNlcnRpZmljYXRlIHdhcyByZWplY3RlZCBiZWNhdXNlIGl0cyBzdWJqZWN0
IGtleSBpZGVudGlmaWVyIHdhcyBwcmVzZW50IGFuZCBkaWQgbm90IG1hdGNoIHRoZSBhdXRob3Jp
dHkga2V5IGlkZW50aWZpZXIgY3VycmVudCBjZXJ0aWZpY2F0ZS4gVGhpcyBpcyBvbmx5IHNldCBp
ZiBpc3N1ZXIgY2hlY2sgZGVidWdnaW5nIGlzIGVuYWJsZWQgaXQgaXMgdXNlZCBmb3Igc3RhdHVz
IG5vdGlmaWNhdGlvbiBhbmQgaXMgbm90IGluIGl0c2VsZiBhbiBlcnJvci4KKyAgICBjYXNlIFg1
MDlfVl9FUlJfQUtJRF9JU1NVRVJfU0VSSUFMX01JU01BVENIIDogLy8gdGhlIGN1cnJlbnQgY2Fu
ZGlkYXRlIGlzc3VlciBjZXJ0aWZpY2F0ZSB3YXMgcmVqZWN0ZWQgYmVjYXVzZSBpdHMgaXNzdWVy
IG5hbWUgYW5kIHNlcmlhbCBudW1iZXIgd2FzIHByZXNlbnQgYW5kIGRpZCBub3QgbWF0Y2ggdGhl
IGF1dGhvcml0eSBrZXkgaWRlbnRpZmllciBvZiB0aGUgY3VycmVudCBjZXJ0aWZpY2F0ZS4gVGhp
cyBpcyBvbmx5IHNldCBpZiBpc3N1ZXIgY2hlY2sgZGVidWdnaW5nIGlzIGVuYWJsZWQgaXQgaXMg
dXNlZCBmb3Igc3RhdHVzIG5vdGlmaWNhdGlvbiBhbmQgaXMgbm90IGluIGl0c2VsZiBhbiBlcnJv
ci4KKyAgICBjYXNlIFg1MDlfVl9FUlJfS0VZVVNBR0VfTk9fQ0VSVFNJR04gOiAvLyB0aGUgY3Vy
cmVudCBjYW5kaWRhdGUgaXNzdWVyIGNlcnRpZmljYXRlIHdhcyByZWplY3RlZCBiZWNhdXNlIGl0
cyBrZXlVc2FnZSBleHRlbnNpb24gZG9lcyBub3QgcGVybWl0IGNlcnRpZmljYXRlIHNpZ25pbmcu
IFRoaXMgaXMgb25seSBzZXQgaWYgaXNzdWVyIGNoZWNrIGRlYnVnZ2luZyBpcyBlbmFibGVkIGl0
IGlzIHVzZWQgZm9yIHN0YXR1cyBub3RpZmljYXRpb24gYW5kIGlzIG5vdCBpbiBpdHNlbGYgYW4g
ZXJyb3IuCisgICAgICAgIHJldHVybiBTU0xfQ0VSVElGSUNBVEVfQkFEX0lERU5USVRZOworICAg
IGRlZmF1bHQgOgorICAgICAgICByZXR1cm4gU1NMX0NFUlRJRklDQVRFX0dFTkVSSUNfRVJST1I7
CisgICAgfQorfQorCisjaWYgIVBMQVRGT1JNKFdJTikKKy8vIHN1Y2Nlc3Mgb2YgY2VydGlmaWNh
dGUgZXh0cmFjdGlvbgorYm9vbCBwZW1EYXRhKFg1MDlfU1RPUkVfQ1RYKiBjdHgsIFN0cmluZyYg
Y2VydGlmaWNhdGUpCit7CisgICAgWDUwOSogZXJyQ2VydCA9IFg1MDlfU1RPUkVfQ1RYX2dldF9j
dXJyZW50X2NlcnQoY3R4KTsKKworICAgIC8vIGdldCB0aGUgY2VydCBpbiBQRU0gZm9ybWF0Cisg
ICAgQklPKiBiaW8gPSBCSU9fbmV3KEJJT19zX21lbSgpKTsKKworICAgIGludCByZXMgPSBQRU1f
d3JpdGVfYmlvX1g1MDkoYmlvLCBlcnJDZXJ0KTsKKyAgICBpZiAoIXJlcykgeworICAgICAgICBC
SU9fZnJlZShiaW8pOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgdW5zaWdu
ZWQgY2hhciogZGF0YTsKKyAgICBsb25nIGxlbiA9IEJJT19nZXRfbWVtX2RhdGEoYmlvLCAmZGF0
YSk7CisgICAgaWYgKGxlbiA8IDApIHsKKyAgICAgICAgQklPX2ZyZWUoYmlvKTsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGRhdGFbbGVuXSA9ICdcMCc7CisgICAgY2VydGlm
aWNhdGUgPSBkYXRhOworICAgIEJJT19mcmVlKGJpbyk7CisgICAgcmV0dXJuIHRydWU7Cit9Cisj
ZW5kaWYKKworc3RhdGljIGludCBjZXJ0VmVyaWZ5Q2FsbGJhY2soaW50IG9rLCBYNTA5X1NUT1JF
X0NUWCogY3R4KQoreworICAgIC8vIHdoZXRoZXIgdGhlIHZlcmlmaWNhdGlvbiBvZiB0aGUgY2Vy
dGlmaWNhdGUgaW4gcXVlc3Rpb24gd2FzIHBhc3NlZCAocHJldmVyaWZ5X29rPTEpIG9yIG5vdCAo
cHJldmVyaWZ5X29rPTApCisKKyAgICB1bnNpZ25lZCBlcnIgPSBYNTA5X1NUT1JFX0NUWF9nZXRf
ZXJyb3IoY3R4KTsKKyAgICBpZiAoIWVycikKKyAgICAgICAgcmV0dXJuIDE7CisKKyAgICBTU0wq
IHNzbCA9IHJlaW50ZXJwcmV0X2Nhc3Q8U1NMKj4oWDUwOV9TVE9SRV9DVFhfZ2V0X2V4X2RhdGEo
Y3R4LCBTU0xfZ2V0X2V4X2RhdGFfWDUwOV9TVE9SRV9DVFhfaWR4KCkpKTsKKyAgICBTU0xfQ1RY
KiBzc2xjdHggPSBTU0xfZ2V0X1NTTF9DVFgoc3NsKTsKKyAgICBSZXNvdXJjZUhhbmRsZSogam9i
ID0gcmVpbnRlcnByZXRfY2FzdDxSZXNvdXJjZUhhbmRsZSo+KFNTTF9DVFhfZ2V0X2FwcF9kYXRh
KHNzbGN0eCkpOworICAgIFN0cmluZyBob3N0ID0gam9iLT5maXJzdFJlcXVlc3QoKS51cmwoKS5o
b3N0KCk7CisgICAgUmVzb3VyY2VIYW5kbGVJbnRlcm5hbCogZCA9IGpvYi0+Z2V0SW50ZXJuYWwo
KTsKKworICAgIGQtPm1fc3NsRXJyb3JzID0gc3NsQ2VydGlmaWNhdGVGbGFnKGVycik7CisKKyNp
ZiBQTEFURk9STShXSU4pCisgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz46Oml0ZXJhdG9yIGl0
ID0gYWxsb3dlZEhvc3RzLmZpbmQoaG9zdCk7CisgICAgb2sgPSAoaXQgIT0gYWxsb3dlZEhvc3Rz
LmVuZCgpKTsKKyNlbHNlCisgICAgU3RyaW5nIGNlcnRpZmljYXRlOworICAgIGlmICghcGVtRGF0
YShjdHgsIGNlcnRpZmljYXRlKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgb2sgPSBzc2xJZ25v
cmVIVFRQU0NlcnRpZmljYXRlKGhvc3QubG93ZXIoKSwgY2VydGlmaWNhdGUpOworI2VuZGlmCisK
KyAgICBpZiAob2spIHsKKyAgICAgICAgLy8gaWYgdGhlIGhvc3QgYW5kIHRoZSBjZXJ0aWZpY2F0
ZSBhcmUgc3RvcmVkIGZvciB0aGUgY3VycmVudCBoYW5kbGUgdGhhdCBtZWFucyBpcyBlbmFibGVk
LAorICAgICAgICAvLyBzbyBkb24ndCBuZWVkIHRvIGN1cmwgdmVyaWZpZXMgdGhlIGF1dGhlbnRp
Y2l0eSBvZiB0aGUgcGVlcidzIGNlcnRpZmljYXRlCisgICAgICAgIGN1cmxfZWFzeV9zZXRvcHQo
ZC0+bV9oYW5kbGUsIENVUkxPUFRfU1NMX1ZFUklGWVBFRVIsIGZhbHNlKTsKKyAgICB9CisgICAg
cmV0dXJuIG9rOworfQorCitzdGF0aWMgQ1VSTGNvZGUgc3NsY3R4ZnVuKENVUkwqIGN1cmwsIHZv
aWQqIHNzbGN0eCwgdm9pZCogcGFybSkKK3sKKyAgICBTU0xfQ1RYX3NldF9hcHBfZGF0YShyZWlu
dGVycHJldF9jYXN0PFNTTF9DVFgqPihzc2xjdHgpLCBwYXJtKTsKKyAgICBTU0xfQ1RYX3NldF92
ZXJpZnkocmVpbnRlcnByZXRfY2FzdDxTU0xfQ1RYKj4oc3NsY3R4KSwgU1NMX1ZFUklGWV9QRUVS
LCBjZXJ0VmVyaWZ5Q2FsbGJhY2spOworICAgIHJldHVybiBDVVJMRV9PSzsKK30KKwordm9pZCBz
ZXRTU0xWZXJpZnlPcHRpb25zKFJlc291cmNlSGFuZGxlKiBoYW5kbGUpCit7CisgICAgUmVzb3Vy
Y2VIYW5kbGVJbnRlcm5hbCogZCA9IGhhbmRsZS0+Z2V0SW50ZXJuYWwoKTsKKyAgICBjdXJsX2Vh
c3lfc2V0b3B0KGQtPm1faGFuZGxlLCBDVVJMT1BUX1NTTF9DVFhfREFUQSwgaGFuZGxlKTsKKyAg
ICBjdXJsX2Vhc3lfc2V0b3B0KGQtPm1faGFuZGxlLCBDVVJMT1BUX1NTTF9DVFhfRlVOQ1RJT04s
IHNzbGN0eGZ1bik7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9TU0xIYW5kbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9TU0xIYW5kbGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5l
MWVkYTFkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL1NTTEhhbmRsZS5oCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMgVW5pdmVyc2l0eSBvZiBTemVnZWQKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFVOSVZFUlNJVFkgT0YgU1pFR0VEIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgU1NMSGFuZGxlX2gKKyNkZWZpbmUgU1NM
SGFuZGxlX2gKKworI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCisKKyNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit0eXBlZGVmIGVudW0g
eworICAgIFNTTF9DRVJUSUZJQ0FURV9VTktOT1dOX0NBID0gKDEgPDwgMCksIC8vIFRoZSBzaWdu
aW5nIGNlcnRpZmljYXRlIGF1dGhvcml0eSBpcyBub3Qga25vd24uCisgICAgU1NMX0NFUlRJRklD
QVRFX0JBRF9JREVOVElUWSA9ICgxIDw8IDEpLCAvLyBUaGUgY2VydGlmaWNhdGUgZG9lcyBub3Qg
bWF0Y2ggdGhlIGV4cGVjdGVkIGlkZW50aXR5IG9mIHRoZSBzaXRlIHRoYXQgaXQgd2FzIHJldHJp
ZXZlZCBmcm9tLgorICAgIFNTTF9DRVJUSUZJQ0FURV9OT1RfQUNUSVZBVEVEID0gKDEgPDwgMiks
IC8vIFRoZSBjZXJ0aWZpY2F0ZSdzIGFjdGl2YXRpb24gdGltZSBpcyBzdGlsbCBpbiB0aGUgZnV0
dXJlCisgICAgU1NMX0NFUlRJRklDQVRFX0VYUElSRUQgPSAoMSA8PCAzKSwgLy8gVGhlIGNlcnRp
ZmljYXRlIGhhcyBleHBpcmVkCisgICAgU1NMX0NFUlRJRklDQVRFX1JFVk9LRUQgPSAoMSA8PCA0
KSwgLy8gVGhlIGNlcnRpZmljYXRlIGhhcyBiZWVuIHJldm9rZWQKKyAgICBTU0xfQ0VSVElGSUNB
VEVfSU5TRUNVUkUgPSAoMSA8PCA1KSwgLy8gVGhlIGNlcnRpZmljYXRlJ3MgYWxnb3JpdGhtIGlz
IGNvbnNpZGVyZWQgaW5zZWN1cmUuCisgICAgU1NMX0NFUlRJRklDQVRFX0dFTkVSSUNfRVJST1Ig
PSAoMSA8PCA2KSAvLyBTb21lIG90aGVyIGVycm9yIG9jY3VycmVkIHZhbGlkYXRpbmcgdGhlIGNl
cnRpZmljYXRlCit9IFNTTENlcnRpZmljYXRlRmxhZ3M7CisKKwordm9pZCBhbGxvd3NBbnlIVFRQ
U0NlcnRpZmljYXRlSG9zdHMoY29uc3QgU3RyaW5nJik7Citib29sIHNzbElnbm9yZUhUVFBTQ2Vy
dGlmaWNhdGUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJik7Cit2b2lkIHNldFNTTFZlcmlm
eU9wdGlvbnMoUmVzb3VyY2VIYW5kbGUqKTsKKworfQorCisjZW5kaWYK
</data>
<flag name="review"
          id="240568"
          type_id="1"
          status="+"
          setter="bfulgham"
    />
    <flag name="commit-queue"
          id="240569"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>217468</attachid>
            <date>2013-11-20 12:58:16 -0800</date>
            <delta_ts>2013-11-20 15:28:11 -0800</delta_ts>
            <desc>proposed patch</desc>
            <filename>proposedpatch.patch</filename>
            <type>text/plain</type>
            <size>26483</size>
            <attacher>sipka</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBmM2M4MzI1Li41MGNjYWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzcg
QEAKKzIwMTMtMTEtMjAgIFJvYmVydCBTaXBrYSAgPHNpcGthQGluZi51LXN6ZWdlZC5odT4KKwor
ICAgICAgICBbY3VybF0gSW1wcm92ZSBkZXRlY3RpbmcgYW5kIGhhbmRsaW5nIG9mIFNTTCByZWxh
dGVkIGVycm9ycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTE5NDM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgU2V0IHRoZSBleGFjdCBTU0wgdmVyaWZpY2F0aW9uIGVycm9yIG9uIENVUkwKKyAgICAgICAg
YW5kIHN0b3JlIHRoZSBlbmFibGVkIGRvbWFpbiB3aXRoIGNlcnRpZmljYXRlLgorCisgICAgICAg
ICogV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnZj
eHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZUhhbmRsZS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VI
YW5kbGVJbnRlcm5hbC5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVJbnRlcm5h
bDo6UmVzb3VyY2VIYW5kbGVJbnRlcm5hbCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9j
dXJsL1Jlc291cmNlRXJyb3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlRXJyb3I6OlJl
c291cmNlRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VFcnJvcjo6c3NsRXJyb3Jz
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlRXJyb3I6OnNldFNTTEVycm9ycyk6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6c2V0SG9zdEFsbG93c0FueUhUVFBTQ2VydGlm
aWNhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZU1h
bmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVNYW5hZ2VyOjpkb3du
bG9hZFRpbWVyQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVNYW5h
Z2VyOjppbml0aWFsaXplSGFuZGxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
U1NMSGFuZGxlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjphbGxvd3NBbnlIVFRQU0Nl
cnRpZmljYXRlSG9zdHMpOgorICAgICAgICAoV2ViQ29yZTo6c3NsSWdub3JlSFRUUFNDZXJ0aWZp
Y2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpzc2xDZXJ0aWZpY2F0ZUZsYWcpOgorICAgICAgICAo
V2ViQ29yZTo6cGVtRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpjZXJ0VmVyaWZ5Q2FsbGJhY2sp
OgorICAgICAgICAoV2ViQ29yZTo6c3NsY3R4ZnVuKToKKyAgICAgICAgKFdlYkNvcmU6OnNldFNT
TFZlcmlmeU9wdGlvbnMpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9TU0xIYW5k
bGUuaDogQWRkZWQuCisKIDIwMTMtMTEtMjAgIEFuZHJlaSBCdWN1ciAgPGFidWN1ckBhZG9iZS5j
b20+CiAKICAgICAgICAgW0NTU1JlZ2lvbnNdIE1vdmUgcmVnaW9uIHN0eWxpbmcgY29kZSBpbnRv
IFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hw
cm9qL1dlYkNvcmUudmN4cHJvagppbmRleCA4N2ZmNmRkLi42MWViNDRkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKQEAgLTg0MDQsNiArODQw
NCwxNiBAQAogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJv
bUJ1aWxkPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21C
dWlsZD4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRm
b3JtXG5ldHdvcmtcY3VybFxTU0xIYW5kbGUuY3BwIj4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWls
ZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMy
JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj50cnVl
PC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnU3VmZml4fFdpbjMyJyI+dHJ1
ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHx4NjQnIj50cnVl
PC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj50cnVlPC9F
eGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+dHJ1ZTwvRXhjbHVk
ZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMyJyI+dHJ1ZTwvRXhjbHVk
ZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2NCciPnRydWU8L0V4Y2x1ZGVk
RnJvbUJ1aWxkPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
cGxhdGZvcm1cc3FsXFNRTGl0ZUF1dGhvcml6ZXIuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5ccGxhdGZvcm1cc3FsXFNRTGl0ZURhdGFiYXNlLmNwcCIgLz4KICAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXHNxbFxTUUxpdGVGaWxlU3lzdGVtLmNwcCIgLz4KQEAg
LTE5NTU0LDYgKzE5NTY0LDE2IEBACiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMyJyI+dHJ1
ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2NCciPnRydWU8
L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgIDwvQ3VzdG9tQnVpbGRTdGVwPgorICAgIDxDdXN0b21C
dWlsZFN0ZXAgSW5jbHVkZT0iLi5ccGxhdGZvcm1cbmV0d29ya1xjdXJsXFNTTEhhbmRsZS5oIj4K
KyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAg
ICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdEZWJ1Z3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNs
dWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J0RlYnVnU3VmZml4fFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhj
bHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdEZWJ1Z1N1ZmZpeHx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNs
dWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J1JlbGVhc2V8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRl
ZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Jl
bGVhc2V8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9t
QnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0
aW9ufFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9t
QnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0
aW9ufHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgIDwvQ3VzdG9tQnVpbGRTdGVw
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cc3FsXFNRTGl0ZURhdGFiYXNl
LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxzcWxcU1FMaXRlRmls
ZVN5c3RlbS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cc3FsXFNR
TGl0ZVN0YXRlbWVudC5oIiAvPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52
Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52
Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCmluZGV4IGEyOGY0MjQuLjA3M2U0ZjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ou
ZmlsdGVycworKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hw
cm9qLmZpbHRlcnMKQEAgLTE5MjYsNiArMTkyNiw5IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxwbGF0Zm9ybVxuZXR3b3JrXGN1cmxcU29ja2V0U3RyZWFtSGFuZGxlQ3VybC5jcHAiPgog
ICAgICAgPEZpbHRlcj5wbGF0Zm9ybVxuZXR3b3JrXGN1cmw8L0ZpbHRlcj4KICAgICA8L0NsQ29t
cGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcY3VybFxT
U0xIYW5kbGUuY3BwIj4KKyAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cbmV0d29ya1xjdXJsPC9GaWx0
ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9y
bVxzcWxcU1FMaXRlQXV0aG9yaXplci5jcHAiPgogICAgICAgPEZpbHRlcj5wbGF0Zm9ybVxzcWw8
L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTE1MDg2LDYgKzE1MDg5LDkgQEAKICAgICA8
Q3VzdG9tQnVpbGRTdGVwIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcY3VybFxSZXNvdXJj
ZVJlc3BvbnNlLmgiPgogICAgICAgPEZpbHRlcj5wbGF0Zm9ybVxuZXR3b3JrXGN1cmw8L0ZpbHRl
cj4KICAgICA8L0N1c3RvbUJ1aWxkU3RlcD4KKyAgICA8Q3VzdG9tQnVpbGRTdGVwIEluY2x1ZGU9
Ii4uXHBsYXRmb3JtXG5ldHdvcmtcY3VybFxTU0xIYW5kbGUuaCI+CisgICAgICA8RmlsdGVyPnBs
YXRmb3JtXG5ldHdvcmtcY3VybDwvRmlsdGVyPgorICAgIDwvQ3VzdG9tQnVpbGRTdGVwPgogICAg
IDxDdXN0b21CdWlsZFN0ZXAgSW5jbHVkZT0iLi5ccGxhdGZvcm1caW1hZ2UtZGVjb2RlcnNcZ2lm
XEdJRkltYWdlRGVjb2Rlci5oIj4KICAgICAgIDxGaWx0ZXI+cGxhdGZvcm1caW1hZ2UtZGVjb2Rl
cnNcZ2lmPC9GaWx0ZXI+CiAgICAgPC9DdXN0b21CdWlsZFN0ZXA+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgKaW5kZXggZGFmMDY3Yi4uZmY4
MDY3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZUhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VI
YW5kbGUuaApAQCAtMTUxLDcgKzE1MSw3IEBAIHB1YmxpYzoKIAogI2VuZGlmIC8vIFVTRShDRk5F
VFdPUkspCiAKLSNpZiBQTEFURk9STShXSU4pICYmIFVTRShDVVJMKQorI2lmIChQTEFURk9STShX
SU4pIHx8IFBMQVRGT1JNKE5JWCkpICYmIFVTRShDVVJMKQogICAgIHN0YXRpYyB2b2lkIHNldEhv
c3RBbGxvd3NBbnlIVFRQU0NlcnRpZmljYXRlKGNvbnN0IFN0cmluZyYpOwogI2VuZGlmCiAjaWYg
UExBVEZPUk0oV0lOKSAmJiBVU0UoQ1VSTCkgJiYgVVNFKENGKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaAppbmRl
eCBhOGUwOTc3Li43NWUyMjdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaApAQCAtMTAyLDYgKzEwMiw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgICwgbV9jYW5jZWxsZWQoZmFsc2UpCiAg
ICAgICAgICAgICAsIG1fYXV0aEZhaWx1cmVDb3VudCgwKQogICAgICAgICAgICAgLCBtX2Zvcm1E
YXRhU3RyZWFtKGxvYWRlcikKKyAgICAgICAgICAgICwgbV9zc2xFcnJvcnMoMCkKICNlbmRpZgog
I2lmIFVTRShTT1VQKQogICAgICAgICAgICAgLCBtX2NhbmNlbGxlZChmYWxzZSkKQEAgLTE4MCw2
ICsxODEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHVuc2lnbmVkIHNob3J0IG1f
YXV0aEZhaWx1cmVDb3VudDsKIAogICAgICAgICBGb3JtRGF0YVN0cmVhbSBtX2Zvcm1EYXRhU3Ry
ZWFtOworICAgICAgICB1bnNpZ25lZCBtX3NzbEVycm9yczsKICAgICAgICAgVmVjdG9yPGNoYXI+
IG1fcG9zdEJ5dGVzOwogCiAgICAgICAgIE93blB0cjxNdWx0aXBhcnRIYW5kbGU+IG1fbXVsdGlw
YXJ0SGFuZGxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL1Jlc291cmNlRXJyb3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9SZXNvdXJjZUVycm9yLmgKaW5kZXggY2E4ZDM2Yi4uNzU1NWY1NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlRXJyb3IuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VFcnJvci5oCkBAIC0z
MywxNCArMzMsMjAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3VyY2VFcnJvciA6
IHB1YmxpYyBSZXNvdXJjZUVycm9yQmFzZQogewogcHVibGljOgotICAgIFJlc291cmNlRXJyb3Io
KQorICAgIFJlc291cmNlRXJyb3IoKSA6IG1fc3NsRXJyb3JzKDApCiAgICAgewogICAgIH0KIAog
ICAgIFJlc291cmNlRXJyb3IoY29uc3QgU3RyaW5nJiBkb21haW4sIGludCBlcnJvckNvZGUsIGNv
bnN0IFN0cmluZyYgZmFpbGluZ1VSTCwgY29uc3QgU3RyaW5nJiBsb2NhbGl6ZWREZXNjcmlwdGlv
bikKLSAgICAgICAgOiBSZXNvdXJjZUVycm9yQmFzZShkb21haW4sIGVycm9yQ29kZSwgZmFpbGlu
Z1VSTCwgbG9jYWxpemVkRGVzY3JpcHRpb24pCisgICAgICAgIDogUmVzb3VyY2VFcnJvckJhc2Uo
ZG9tYWluLCBlcnJvckNvZGUsIGZhaWxpbmdVUkwsIGxvY2FsaXplZERlc2NyaXB0aW9uKSwgbV9z
c2xFcnJvcnMoMCkKICAgICB7CiAgICAgfQorCisgICAgdW5zaWduZWQgc3NsRXJyb3JzKCkgY29u
c3QgeyByZXR1cm4gbV9zc2xFcnJvcnM7IH0KKyAgICB2b2lkIHNldFNTTEVycm9ycyh1bnNpZ25l
ZCBzc2xWZXJpZnlSZXN1bHQpIHsgbV9zc2xFcnJvcnMgPSBzc2xWZXJpZnlSZXN1bHQ7IH0KKwor
cHJpdmF0ZToKKyAgICB1bnNpZ25lZCBtX3NzbEVycm9yczsKIH07CiAKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxl
Q3VybC5jcHAKaW5kZXggMzE4OTdjZi4uNDAxM2NmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAK
QEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUg
IlJlc291cmNlSGFuZGxlSW50ZXJuYWwuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZU1hbmFn
ZXIuaCIKKyNpbmNsdWRlICJTU0xIYW5kbGUuaCIKIAogI2lmIFBMQVRGT1JNKFdJTikgJiYgVVNF
KENGKQogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CkBAIC0xMTUsMTkgKzExNiwxMCBAQCB2
b2lkIFJlc291cmNlSGFuZGxlOjpjYW5jZWwoKQogICAgIFJlc291cmNlSGFuZGxlTWFuYWdlcjo6
c2hhcmVkSW5zdGFuY2UoKS0+Y2FuY2VsKHRoaXMpOwogfQogCi0jaWYgUExBVEZPUk0oV0lOKSAm
JiBVU0UoQ0YpCi1zdGF0aWMgSGFzaFNldDxTdHJpbmc+JiBhbGxvd3NBbnlIVFRQU0NlcnRpZmlj
YXRlSG9zdHMoKQotewotICAgIHN0YXRpYyBIYXNoU2V0PFN0cmluZz4gaG9zdHM7Ci0KLSAgICBy
ZXR1cm4gaG9zdHM7Ci19Ci0KIHZvaWQgUmVzb3VyY2VIYW5kbGU6OnNldEhvc3RBbGxvd3NBbnlI
VFRQU0NlcnRpZmljYXRlKGNvbnN0IFN0cmluZyYgaG9zdCkKIHsKLSAgICBhbGxvd3NBbnlIVFRQ
U0NlcnRpZmljYXRlSG9zdHMoKS5hZGQoaG9zdC5sb3dlcigpKTsKKyAgICBhbGxvd3NBbnlIVFRQ
U0NlcnRpZmljYXRlSG9zdHMoaG9zdC5sb3dlcigpKTsKIH0KLSNlbmRpZgogCiAjaWYgUExBVEZP
Uk0oV0lOKSAmJiBVU0UoQ0YpCiAvLyBGSVhNRTogIFRoZSBDRkRhdGFSZWYgd2lsbCBuZWVkIHRv
IGJlIHNvbWV0aGluZyBlbHNlIHdoZW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlTWFuYWdlci5jcHAKaW5kZXgg
MjEzOGQyNy4uNWE3Mjk3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL1Jlc291cmNlSGFuZGxlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlTWFuYWdlci5jcHAKQEAgLTQ2LDYg
KzQ2LDcgQEAKICNpbmNsdWRlICJSZXNvdXJjZUVycm9yLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VI
YW5kbGUuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZUludGVybmFsLmgiCisjaW5jbHVkZSAi
U1NMSGFuZGxlLmgiCiAKICNpZiBPUyhXSU5ET1dTKQogI2luY2x1ZGUgIldlYkNvcmVCdW5kbGVX
aW4uaCIKQEAgLTYyMiw3ICs2MjMsOSBAQCB2b2lkIFJlc291cmNlSGFuZGxlTWFuYWdlcjo6ZG93
bmxvYWRUaW1lckNhbGxiYWNrKFRpbWVyPFJlc291cmNlSGFuZGxlTWFuYWdlcj4qCiAgICAgICAg
ICAgICBmcHJpbnRmKHN0ZGVyciwgIkN1cmwgRVJST1IgZm9yIHVybD0nJXMnLCBlcnJvcjogJyVz
J1xuIiwgdXJsLCBjdXJsX2Vhc3lfc3RyZXJyb3IobXNnLT5kYXRhLnJlc3VsdCkpOwogI2VuZGlm
CiAgICAgICAgICAgICBpZiAoZC0+Y2xpZW50KCkpIHsKLSAgICAgICAgICAgICAgICBkLT5jbGll
bnQoKS0+ZGlkRmFpbChqb2IsIFJlc291cmNlRXJyb3IoU3RyaW5nKCksIG1zZy0+ZGF0YS5yZXN1
bHQsIFN0cmluZyh1cmwpLCBTdHJpbmcoY3VybF9lYXN5X3N0cmVycm9yKG1zZy0+ZGF0YS5yZXN1
bHQpKSkpOworICAgICAgICAgICAgICAgIFJlc291cmNlRXJyb3IgcmVzb3VyY2VFcnJvcihTdHJp
bmcoKSwgbXNnLT5kYXRhLnJlc3VsdCwgU3RyaW5nKHVybCksIFN0cmluZyhjdXJsX2Vhc3lfc3Ry
ZXJyb3IobXNnLT5kYXRhLnJlc3VsdCkpKTsKKyAgICAgICAgICAgICAgICByZXNvdXJjZUVycm9y
LnNldFNTTEVycm9ycyhkLT5tX3NzbEVycm9ycyk7CisgICAgICAgICAgICAgICAgZC0+Y2xpZW50
KCktPmRpZEZhaWwoam9iLCByZXNvdXJjZUVycm9yKTsKICAgICAgICAgICAgICAgICBDdXJsQ2Fj
aGVNYW5hZ2VyOjpnZXRJbnN0YW5jZSgpLmRpZEZhaWwoam9iLT5maXJzdFJlcXVlc3QoKS51cmwo
KS5zdHJpbmcoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTk0Miw2ICs5NDUsOCBA
QCB2b2lkIFJlc291cmNlSGFuZGxlTWFuYWdlcjo6aW5pdGlhbGl6ZUhhbmRsZShSZXNvdXJjZUhh
bmRsZSogam9iKQogICAgIGlmIChnZXRlbnYoIkRFQlVHX0NVUkwiKSkKICAgICAgICAgY3VybF9l
YXN5X3NldG9wdChkLT5tX2hhbmRsZSwgQ1VSTE9QVF9WRVJCT1NFLCAxKTsKICNlbmRpZgorICAg
IGN1cmxfZWFzeV9zZXRvcHQoZC0+bV9oYW5kbGUsIENVUkxPUFRfU1NMX1ZFUklGWVBFRVIsIDFM
KTsKKyAgICBjdXJsX2Vhc3lfc2V0b3B0KGQtPm1faGFuZGxlLCBDVVJMT1BUX1NTTF9WRVJJRllI
T1NULCAyTCk7CiAgICAgY3VybF9lYXN5X3NldG9wdChkLT5tX2hhbmRsZSwgQ1VSTE9QVF9QUklW
QVRFLCBqb2IpOwogICAgIGN1cmxfZWFzeV9zZXRvcHQoZC0+bV9oYW5kbGUsIENVUkxPUFRfRVJS
T1JCVUZGRVIsIG1fY3VybEVycm9yQnVmZmVyKTsKICAgICBjdXJsX2Vhc3lfc2V0b3B0KGQtPm1f
aGFuZGxlLCBDVVJMT1BUX1dSSVRFRlVOQ1RJT04sIHdyaXRlQ2FsbGJhY2spOwpAQCAtOTU2LDEw
ICs5NjEsMTEgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZU1hbmFnZXI6OmluaXRpYWxpemVIYW5kbGUo
UmVzb3VyY2VIYW5kbGUqIGpvYikKICAgICBjdXJsX2Vhc3lfc2V0b3B0KGQtPm1faGFuZGxlLCBD
VVJMT1BUX0ROU19DQUNIRV9USU1FT1VULCA2MCAqIDUpOyAvLyA1IG1pbnV0ZXMKICAgICBjdXJs
X2Vhc3lfc2V0b3B0KGQtPm1faGFuZGxlLCBDVVJMT1BUX1BST1RPQ09MUywgYWxsb3dlZFByb3Rv
Y29scyk7CiAgICAgY3VybF9lYXN5X3NldG9wdChkLT5tX2hhbmRsZSwgQ1VSTE9QVF9SRURJUl9Q
Uk9UT0NPTFMsIGFsbG93ZWRQcm90b2NvbHMpOwotICAgIC8vIEZJWE1FOiBFbmFibGUgU1NMIHZl
cmlmaWNhdGlvbiB3aGVuIHdlIGhhdmUgYSB3YXkgb2Ygc2hpcHBpbmcgY2VydHMKLSAgICAvLyBh
bmQvb3IgcmVwb3J0aW5nIFNTTCBlcnJvcnMgdG8gdGhlIHVzZXIuCisKICAgICBpZiAoaWdub3Jl
U1NMRXJyb3JzKQogICAgICAgICBjdXJsX2Vhc3lfc2V0b3B0KGQtPm1faGFuZGxlLCBDVVJMT1BU
X1NTTF9WRVJJRllQRUVSLCBmYWxzZSk7CisgICAgZWxzZQorICAgICAgICBzZXRTU0xWZXJpZnlP
cHRpb25zKGpvYik7CiAKICAgICBpZiAoIW1fY2VydGlmaWNhdGVQYXRoLmlzTnVsbCgpKQogICAg
ICAgIGN1cmxfZWFzeV9zZXRvcHQoZC0+bV9oYW5kbGUsIENVUkxPUFRfQ0FJTkZPLCBtX2NlcnRp
ZmljYXRlUGF0aC5kYXRhKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL1NTTEhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvU1NMSGFuZGxlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li5lNDU0YzJmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL1NTTEhhbmRsZS5jcHAKQEAgLTAsMCArMSwxOTcgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTMgVW5pdmVyc2l0eSBvZiBTemVnZWQKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFVOSVZFUlNJVFkgT0YgU1pFR0VEIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lu
Y2x1ZGUgIlNTTEhhbmRsZS5oIgorCisjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5o
IgorCisjaW5jbHVkZSA8b3BlbnNzbC9wZW0uaD4KKyNpbmNsdWRlIDxvcGVuc3NsL3NzbC5oPgor
I2luY2x1ZGUgPG9wZW5zc2wveDUwOV92ZnkuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitz
dGF0aWMgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gYWxsb3dlZEhvc3RzOworCit2b2lkIGFsbG93
c0FueUhUVFBTQ2VydGlmaWNhdGVIb3N0cyhjb25zdCBTdHJpbmcmIGhvc3QpCit7CisgICAgSGFz
aE1hcDxTdHJpbmcsIFN0cmluZz46Oml0ZXJhdG9yIGl0ID0gYWxsb3dlZEhvc3RzLmZpbmQoaG9z
dCk7CisgICAgaWYgKGl0ICE9IGFsbG93ZWRIb3N0cy5lbmQoKSkKKyAgICAgICAgaXQtPnZhbHVl
ID0gU3RyaW5nKCk7CisgICAgZWxzZQorICAgICAgICBhbGxvd2VkSG9zdHMuYWRkKGhvc3QsIFN0
cmluZygpKTsKK30KKworYm9vbCBzc2xJZ25vcmVIVFRQU0NlcnRpZmljYXRlKGNvbnN0IFN0cmlu
ZyYgaG9zdCwgY29uc3QgU3RyaW5nJiBjZXJ0KQoreworICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJp
bmc+OjppdGVyYXRvciBpdCA9IGFsbG93ZWRIb3N0cy5maW5kKGhvc3QpOworICAgIGlmIChpdCAh
PSBhbGxvd2VkSG9zdHMuZW5kKCkpIHsKKyAgICAgICAgaWYgKChpdC0+dmFsdWUpLmlzRW1wdHko
KSkgeworICAgICAgICAgICAgaXQtPnZhbHVlID0gY2VydDsKKyAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICB9CisgICAgICAgIGlmIChpdC0+dmFsdWUgPT0gY2VydCkKKyAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3Vuc2lnbmVk
IHNzbENlcnRpZmljYXRlRmxhZyhjb25zdCB1bnNpZ25lZCYgc3NsRXJyb3IpCit7CisgICAgc3dp
dGNoIChzc2xFcnJvcikgeworICAgIGNhc2UgWDUwOV9WX0VSUl9VTkFCTEVfVE9fR0VUX0lTU1VF
Ul9DRVJUIDogLy8gdGhlIGlzc3VlciBjZXJ0aWZpY2F0ZSBjb3VsZCBub3QgYmUgZm91bmQ6IHRo
aXMgb2NjdXJzIGlmIHRoZSBpc3N1ZXIgY2VydGlmaWNhdGUgb2YgYW4gdW50cnVzdGVkIGNlcnRp
ZmljYXRlIGNhbm5vdCBiZSBmb3VuZC4KKyAgICBjYXNlIFg1MDlfVl9FUlJfVU5BQkxFX1RPX0dF
VF9DUkwgOiAvLyB0aGUgQ1JMIG9mIGEgY2VydGlmaWNhdGUgY291bGQgbm90IGJlIGZvdW5kLgor
ICAgIGNhc2UgWDUwOV9WX0VSUl9VTkFCTEVfVE9fR0VUX0lTU1VFUl9DRVJUX0xPQ0FMTFkgOiAv
LyB0aGUgaXNzdWVyIGNlcnRpZmljYXRlIG9mIGEgbG9jYWxseSBsb29rZWQgdXAgY2VydGlmaWNh
dGUgY291bGQgbm90IGJlIGZvdW5kLiBUaGlzIG5vcm1hbGx5IG1lYW5zIHRoZSBsaXN0IG9mIHRy
dXN0ZWQgY2VydGlmaWNhdGVzIGlzIG5vdCBjb21wbGV0ZS4KKyAgICAgICAgcmV0dXJuIFNTTF9D
RVJUSUZJQ0FURV9VTktOT1dOX0NBOworICAgIGNhc2UgWDUwOV9WX0VSUl9VTkFCTEVfVE9fREVD
UllQVF9DRVJUX1NJR05BVFVSRSA6IC8vIHRoZSBjZXJ0aWZpY2F0ZSBzaWduYXR1cmUgY291bGQg
bm90IGJlIGRlY3J5cHRlZC4gVGhpcyBtZWFucyB0aGF0IHRoZSBhY3R1YWwgc2lnbmF0dXJlIHZh
bHVlIGNvdWxkIG5vdCBiZSBkZXRlcm1pbmVkIHJhdGhlciB0aGFuIGl0IG5vdCBtYXRjaGluZyB0
aGUgZXhwZWN0ZWQgdmFsdWUsIHRoaXMgaXMgb25seSBtZWFuaW5nZnVsIGZvciBSU0Ega2V5cy4K
KyAgICBjYXNlIFg1MDlfVl9FUlJfVU5BQkxFX1RPX0RFQ1JZUFRfQ1JMX1NJR05BVFVSRSA6IC8v
IHRoZSBDUkwgc2lnbmF0dXJlIGNvdWxkIG5vdCBiZSBkZWNyeXB0ZWQ6IHRoaXMgbWVhbnMgdGhh
dCB0aGUgYWN0dWFsIHNpZ25hdHVyZSB2YWx1ZSBjb3VsZCBub3QgYmUgZGV0ZXJtaW5lZCByYXRo
ZXIgdGhhbiBpdCBub3QgbWF0Y2hpbmcgdGhlIGV4cGVjdGVkIHZhbHVlLiBVbnVzZWQuCisgICAg
Y2FzZSBYNTA5X1ZfRVJSX1VOQUJMRV9UT19ERUNPREVfSVNTVUVSX1BVQkxJQ19LRVkgOiAvLyB0
aGUgcHVibGljIGtleSBpbiB0aGUgY2VydGlmaWNhdGUgU3ViamVjdFB1YmxpY0tleUluZm8gY291
bGQgbm90IGJlIHJlYWQuCisgICAgY2FzZSBYNTA5X1ZfRVJSX0NFUlRfU0lHTkFUVVJFX0ZBSUxV
UkUgOiAvLyB0aGUgc2lnbmF0dXJlIG9mIHRoZSBjZXJ0aWZpY2F0ZSBpcyBpbnZhbGlkLgorICAg
IGNhc2UgWDUwOV9WX0VSUl9ERVBUSF9aRVJPX1NFTEZfU0lHTkVEX0NFUlQgOiAvLyB0aGUgcGFz
c2VkIGNlcnRpZmljYXRlIGlzIHNlbGYgc2lnbmVkIGFuZCB0aGUgc2FtZSBjZXJ0aWZpY2F0ZSBj
YW5ub3QgYmUgZm91bmQgaW4gdGhlIGxpc3Qgb2YgdHJ1c3RlZCBjZXJ0aWZpY2F0ZXMuCisgICAg
Y2FzZSBYNTA5X1ZfRVJSX1NFTEZfU0lHTkVEX0NFUlRfSU5fQ0hBSU4gOiAvLyB0aGUgY2VydGlm
aWNhdGUgY2hhaW4gY291bGQgYmUgYnVpbHQgdXAgdXNpbmcgdGhlIHVudHJ1c3RlZCBjZXJ0aWZp
Y2F0ZXMgYnV0IHRoZSByb290IGNvdWxkIG5vdCBiZSBmb3VuZCBsb2NhbGx5LgorICAgIGNhc2Ug
WDUwOV9WX0VSUl9VTkFCTEVfVE9fVkVSSUZZX0xFQUZfU0lHTkFUVVJFIDogLy8gbm8gc2lnbmF0
dXJlcyBjb3VsZCBiZSB2ZXJpZmllZCBiZWNhdXNlIHRoZSBjaGFpbiBjb250YWlucyBvbmx5IG9u
ZSBjZXJ0aWZpY2F0ZSBhbmQgaXQgaXMgbm90IHNlbGYgc2lnbmVkLgorICAgIGNhc2UgWDUwOV9W
X0VSUl9JTlZBTElEX1BVUlBPU0UgOiAvLyB0aGUgc3VwcGxpZWQgY2VydGlmaWNhdGUgY2Fubm90
IGJlIHVzZWQgZm9yIHRoZSBzcGVjaWZpZWQgcHVycG9zZS4KKyAgICBjYXNlIFg1MDlfVl9FUlJf
Q0VSVF9VTlRSVVNURUQgOiAvLyB0aGUgcm9vdCBDQSBpcyBub3QgbWFya2VkIGFzIHRydXN0ZWQg
Zm9yIHRoZSBzcGVjaWZpZWQgcHVycG9zZS4KKyAgICBjYXNlIFg1MDlfVl9FUlJfQ0VSVF9SRUpF
Q1RFRCA6IC8vIHRoZSByb290IENBIGlzIG1hcmtlZCB0byByZWplY3QgdGhlIHNwZWNpZmllZCBw
dXJwb3NlLgorICAgIGNhc2UgWDUwOV9WX0VSUl9OT19FWFBMSUNJVF9QT0xJQ1kgOiAvLyB0aGUg
dmVyaWZpY2F0aW9uIGZsYWdzIHdlcmUgc2V0IHRvIHJlcXVpcmUgYW5kIGV4cGxpY2l0IHBvbGlj
eSBidXQgbm9uZSB3YXMgcHJlc2VudC4KKyAgICBjYXNlIFg1MDlfVl9FUlJfRElGRkVSRU5UX0NS
TF9TQ09QRSA6IC8vIHRoZSBvbmx5IENSTHMgdGhhdCBjb3VsZCBiZSBmb3VuZCBkaWQgbm90IG1h
dGNoIHRoZSBzY29wZSBvZiB0aGUgY2VydGlmaWNhdGUuCisgICAgICAgIHJldHVybiBTU0xfQ0VS
VElGSUNBVEVfSU5TRUNVUkU7CisgICAgY2FzZSBYNTA5X1ZfRVJSX0NFUlRfTk9UX1lFVF9WQUxJ
RCA6IC8vIHRoZSBjZXJ0aWZpY2F0ZSBpcyBub3QgeWV0IHZhbGlkOiB0aGUgbm90QmVmb3JlIGRh
dGUgaXMgYWZ0ZXIgdGhlIGN1cnJlbnQgdGltZS4KKyAgICBjYXNlIFg1MDlfVl9FUlJfQ1JMX05P
VF9ZRVRfVkFMSUQgOiAvLyB0aGUgQ1JMIGlzIG5vdCB5ZXQgdmFsaWQuCisgICAgICAgIHJldHVy
biBTU0xfQ0VSVElGSUNBVEVfTk9UX0FDVElWQVRFRDsKKyAgICBjYXNlIFg1MDlfVl9FUlJfQ0VS
VF9IQVNfRVhQSVJFRCA6IC8vIHRoZSBjZXJ0aWZpY2F0ZSBoYXMgZXhwaXJlZDogdGhhdCBpcyB0
aGUgbm90QWZ0ZXIgZGF0ZSBpcyBiZWZvcmUgdGhlIGN1cnJlbnQgdGltZS4KKyAgICBjYXNlIFg1
MDlfVl9FUlJfQ1JMX0hBU19FWFBJUkVEIDogLy8gdGhlIENSTCBoYXMgZXhwaXJlZC4KKyAgICAg
ICAgcmV0dXJuIFNTTF9DRVJUSUZJQ0FURV9FWFBJUkVEOworICAgIGNhc2UgWDUwOV9WX0VSUl9F
UlJPUl9JTl9DRVJUX05PVF9CRUZPUkVfRklFTEQgOiAvLyB0aGUgY2VydGlmaWNhdGUgbm90QmVm
b3JlIGZpZWxkIGNvbnRhaW5zIGFuIGludmFsaWQgdGltZS4KKyAgICBjYXNlIFg1MDlfVl9FUlJf
RVJST1JfSU5fQ0VSVF9OT1RfQUZURVJfRklFTEQgOiAvLyB0aGUgY2VydGlmaWNhdGUgbm90QWZ0
ZXIgZmllbGQgY29udGFpbnMgYW4gaW52YWxpZCB0aW1lLgorICAgIGNhc2UgWDUwOV9WX0VSUl9F
UlJPUl9JTl9DUkxfTEFTVF9VUERBVEVfRklFTEQgOiAvLyB0aGUgQ1JMIGxhc3RVcGRhdGUgZmll
bGQgY29udGFpbnMgYW4gaW52YWxpZCB0aW1lLgorICAgIGNhc2UgWDUwOV9WX0VSUl9FUlJPUl9J
Tl9DUkxfTkVYVF9VUERBVEVfRklFTEQgOiAvLyB0aGUgQ1JMIG5leHRVcGRhdGUgZmllbGQgY29u
dGFpbnMgYW4gaW52YWxpZCB0aW1lLgorICAgIGNhc2UgWDUwOV9WX0VSUl9PVVRfT0ZfTUVNIDog
Ly8gYW4gZXJyb3Igb2NjdXJyZWQgdHJ5aW5nIHRvIGFsbG9jYXRlIG1lbW9yeS4gVGhpcyBzaG91
bGQgbmV2ZXIgaGFwcGVuLgorICAgIGNhc2UgWDUwOV9WX0VSUl9DRVJUX0NIQUlOX1RPT19MT05H
IDogLy8gdGhlIGNlcnRpZmljYXRlIGNoYWluIGxlbmd0aCBpcyBncmVhdGVyIHRoYW4gdGhlIHN1
cHBsaWVkIG1heGltdW0gZGVwdGguIFVudXNlZC4KKyAgICBjYXNlIFg1MDlfVl9FUlJfUEFUSF9M
RU5HVEhfRVhDRUVERUQgOiAvLyB0aGUgYmFzaWNDb25zdHJhaW50cyBwYXRobGVuZ3RoIHBhcmFt
ZXRlciBoYXMgYmVlbiBleGNlZWRlZC4KKyAgICBjYXNlIFg1MDlfVl9FUlJfSU5WQUxJRF9FWFRF
TlNJT04gOiAvLyBhIGNlcnRpZmljYXRlIGV4dGVuc2lvbiBoYWQgYW4gaW52YWxpZCB2YWx1ZSAo
Zm9yIGV4YW1wbGUgYW4gaW5jb3JyZWN0IGVuY29kaW5nKSBvciBzb21lIHZhbHVlIGluY29uc2lz
dGVudCB3aXRoIG90aGVyIGV4dGVuc2lvbnMuCisgICAgY2FzZSBYNTA5X1ZfRVJSX0lOVkFMSURf
UE9MSUNZX0VYVEVOU0lPTiA6IC8vIGEgY2VydGlmaWNhdGUgcG9saWNpZXMgZXh0ZW5zaW9uIGhh
ZCBhbiBpbnZhbGlkIHZhbHVlIChmb3IgZXhhbXBsZSBhbiBpbmNvcnJlY3QgZW5jb2RpbmcpIG9y
IHNvbWUgdmFsdWUgaW5jb25zaXN0ZW50IHdpdGggb3RoZXIgZXh0ZW5zaW9ucy4gVGhpcyBlcnJv
ciBvbmx5IG9jY3VycyBpZiBwb2xpY3kgcHJvY2Vzc2luZyBpcyBlbmFibGVkLgorICAgIGNhc2Ug
WDUwOV9WX0VSUl9VTlNVUFBPUlRFRF9FWFRFTlNJT05fRkVBVFVSRSA6IC8vIHNvbWUgZmVhdHVy
ZSBvZiBhIGNlcnRpZmljYXRlIGV4dGVuc2lvbiBpcyBub3Qgc3VwcG9ydGVkLiBVbnVzZWQuCisg
ICAgY2FzZSBYNTA5X1ZfRVJSX1BFUk1JVFRFRF9WSU9MQVRJT04gOiAvLyBhIG5hbWUgY29uc3Ry
YWludCB2aW9sYXRpb24gb2NjdXJlZCBpbiB0aGUgcGVybWl0dGVkIHN1YnRyZWVzLgorICAgIGNh
c2UgWDUwOV9WX0VSUl9FWENMVURFRF9WSU9MQVRJT04gOiAvLyBhIG5hbWUgY29uc3RyYWludCB2
aW9sYXRpb24gb2NjdXJlZCBpbiB0aGUgZXhjbHVkZWQgc3VidHJlZXMuCisgICAgY2FzZSBYNTA5
X1ZfRVJSX1NVQlRSRUVfTUlOTUFYIDogLy8gYSBjZXJ0aWZpY2F0ZSBuYW1lIGNvbnN0cmFpbnRz
IGV4dGVuc2lvbiBpbmNsdWRlZCBhIG1pbmltdW0gb3IgbWF4aW11bSBmaWVsZDogdGhpcyBpcyBu
b3Qgc3VwcG9ydGVkLgorICAgIGNhc2UgWDUwOV9WX0VSUl9VTlNVUFBPUlRFRF9DT05TVFJBSU5U
X1RZUEUgOiAvLyBhbiB1bnN1cHBvcnRlZCBuYW1lIGNvbnN0cmFpbnQgdHlwZSB3YXMgZW5jb3Vu
dGVyZWQuIE9wZW5TU0wgY3VycmVudGx5IG9ubHkgc3VwcG9ydHMgZGlyZWN0b3J5IG5hbWUsIERO
UyBuYW1lLCBlbWFpbCBhbmQgVVJJIHR5cGVzLgorICAgIGNhc2UgWDUwOV9WX0VSUl9VTlNVUFBP
UlRFRF9DT05TVFJBSU5UX1NZTlRBWCA6IC8vIHRoZSBmb3JtYXQgb2YgdGhlIG5hbWUgY29uc3Ry
YWludCBpcyBub3QgcmVjb2duaXNlZDogZm9yIGV4YW1wbGUgYW4gZW1haWwgYWRkcmVzcyBmb3Jt
YXQgb2YgYSBmb3JtIG5vdCBtZW50aW9uZWQgaW4gUkZDMzI4MC4gVGhpcyBjb3VsZCBiZSBjYXVz
ZWQgYnkgYSBnYXJiYWdlIGV4dGVuc2lvbiBvciBzb21lIG5ldyBmZWF0dXJlIG5vdCBjdXJyZW50
bHkgc3VwcG9ydGVkLgorICAgIGNhc2UgWDUwOV9WX0VSUl9DUkxfUEFUSF9WQUxJREFUSU9OX0VS
Uk9SIDogLy8gYW4gZXJyb3Igb2NjdXJlZCB3aGVuIGF0dGVtcHRpbmcgdG8gdmVyaWZ5IHRoZSBD
UkwgcGF0aC4gVGhpcyBlcnJvciBjYW4gb25seSBoYXBwZW4gaWYgZXh0ZW5kZWQgQ1JMIGNoZWNr
aW5nIGlzIGVuYWJsZWQuCisgICAgY2FzZSBYNTA5X1ZfRVJSX0FQUExJQ0FUSU9OX1ZFUklGSUNB
VElPTiA6IC8vIGFuIGFwcGxpY2F0aW9uIHNwZWNpZmljIGVycm9yLiBUaGlzIHdpbGwgbmV2ZXIg
YmUgcmV0dXJuZWQgdW5sZXNzIGV4cGxpY2l0bHkgc2V0IGJ5IGFuIGFwcGxpY2F0aW9uLgorICAg
ICAgICByZXR1cm4gU1NMX0NFUlRJRklDQVRFX0dFTkVSSUNfRVJST1I7CisgICAgY2FzZSBYNTA5
X1ZfRVJSX0NFUlRfUkVWT0tFRCA6IC8vIHRoZSBjZXJ0aWZpY2F0ZSBoYXMgYmVlbiByZXZva2Vk
LgorICAgICAgICByZXR1cm4gU1NMX0NFUlRJRklDQVRFX1JFVk9LRUQ7CisgICAgY2FzZSBYNTA5
X1ZfRVJSX0lOVkFMSURfQ0EgOiAvLyBhIENBIGNlcnRpZmljYXRlIGlzIGludmFsaWQuIEVpdGhl
ciBpdCBpcyBub3QgYSBDQSBvciBpdHMgZXh0ZW5zaW9ucyBhcmUgbm90IGNvbnNpc3RlbnQgd2l0
aCB0aGUgc3VwcGxpZWQgcHVycG9zZS4KKyAgICBjYXNlIFg1MDlfVl9FUlJfU1VCSkVDVF9JU1NV
RVJfTUlTTUFUQ0ggOiAvLyB0aGUgY3VycmVudCBjYW5kaWRhdGUgaXNzdWVyIGNlcnRpZmljYXRl
IHdhcyByZWplY3RlZCBiZWNhdXNlIGl0cyBzdWJqZWN0IG5hbWUgZGlkIG5vdCBtYXRjaCB0aGUg
aXNzdWVyIG5hbWUgb2YgdGhlIGN1cnJlbnQgY2VydGlmaWNhdGUuIFRoaXMgaXMgb25seSBzZXQg
aWYgaXNzdWVyIGNoZWNrIGRlYnVnZ2luZyBpcyBlbmFibGVkIGl0IGlzIHVzZWQgZm9yIHN0YXR1
cyBub3RpZmljYXRpb24gYW5kIGlzIG5vdCBpbiBpdHNlbGYgYW4gZXJyb3IuCisgICAgY2FzZSBY
NTA5X1ZfRVJSX0FLSURfU0tJRF9NSVNNQVRDSCA6IC8vIHRoZSBjdXJyZW50IGNhbmRpZGF0ZSBp
c3N1ZXIgY2VydGlmaWNhdGUgd2FzIHJlamVjdGVkIGJlY2F1c2UgaXRzIHN1YmplY3Qga2V5IGlk
ZW50aWZpZXIgd2FzIHByZXNlbnQgYW5kIGRpZCBub3QgbWF0Y2ggdGhlIGF1dGhvcml0eSBrZXkg
aWRlbnRpZmllciBjdXJyZW50IGNlcnRpZmljYXRlLiBUaGlzIGlzIG9ubHkgc2V0IGlmIGlzc3Vl
ciBjaGVjayBkZWJ1Z2dpbmcgaXMgZW5hYmxlZCBpdCBpcyB1c2VkIGZvciBzdGF0dXMgbm90aWZp
Y2F0aW9uIGFuZCBpcyBub3QgaW4gaXRzZWxmIGFuIGVycm9yLgorICAgIGNhc2UgWDUwOV9WX0VS
Ul9BS0lEX0lTU1VFUl9TRVJJQUxfTUlTTUFUQ0ggOiAvLyB0aGUgY3VycmVudCBjYW5kaWRhdGUg
aXNzdWVyIGNlcnRpZmljYXRlIHdhcyByZWplY3RlZCBiZWNhdXNlIGl0cyBpc3N1ZXIgbmFtZSBh
bmQgc2VyaWFsIG51bWJlciB3YXMgcHJlc2VudCBhbmQgZGlkIG5vdCBtYXRjaCB0aGUgYXV0aG9y
aXR5IGtleSBpZGVudGlmaWVyIG9mIHRoZSBjdXJyZW50IGNlcnRpZmljYXRlLiBUaGlzIGlzIG9u
bHkgc2V0IGlmIGlzc3VlciBjaGVjayBkZWJ1Z2dpbmcgaXMgZW5hYmxlZCBpdCBpcyB1c2VkIGZv
ciBzdGF0dXMgbm90aWZpY2F0aW9uIGFuZCBpcyBub3QgaW4gaXRzZWxmIGFuIGVycm9yLgorICAg
IGNhc2UgWDUwOV9WX0VSUl9LRVlVU0FHRV9OT19DRVJUU0lHTiA6IC8vIHRoZSBjdXJyZW50IGNh
bmRpZGF0ZSBpc3N1ZXIgY2VydGlmaWNhdGUgd2FzIHJlamVjdGVkIGJlY2F1c2UgaXRzIGtleVVz
YWdlIGV4dGVuc2lvbiBkb2VzIG5vdCBwZXJtaXQgY2VydGlmaWNhdGUgc2lnbmluZy4gVGhpcyBp
cyBvbmx5IHNldCBpZiBpc3N1ZXIgY2hlY2sgZGVidWdnaW5nIGlzIGVuYWJsZWQgaXQgaXMgdXNl
ZCBmb3Igc3RhdHVzIG5vdGlmaWNhdGlvbiBhbmQgaXMgbm90IGluIGl0c2VsZiBhbiBlcnJvci4K
KyAgICAgICAgcmV0dXJuIFNTTF9DRVJUSUZJQ0FURV9CQURfSURFTlRJVFk7CisgICAgZGVmYXVs
dCA6CisgICAgICAgIHJldHVybiBTU0xfQ0VSVElGSUNBVEVfR0VORVJJQ19FUlJPUjsKKyAgICB9
Cit9CisKKyNpZiAhUExBVEZPUk0oV0lOKQorLy8gc3VjY2VzcyBvZiBjZXJ0aWZpY2F0ZSBleHRy
YWN0aW9uCitib29sIHBlbURhdGEoWDUwOV9TVE9SRV9DVFgqIGN0eCwgU3RyaW5nJiBjZXJ0aWZp
Y2F0ZSkKK3sKKyAgICBYNTA5KiBlcnJDZXJ0ID0gWDUwOV9TVE9SRV9DVFhfZ2V0X2N1cnJlbnRf
Y2VydChjdHgpOworCisgICAgLy8gZ2V0IHRoZSBjZXJ0IGluIFBFTSBmb3JtYXQKKyAgICBCSU8q
IGJpbyA9IEJJT19uZXcoQklPX3NfbWVtKCkpOworCisgICAgaW50IHJlcyA9IFBFTV93cml0ZV9i
aW9fWDUwOShiaW8sIGVyckNlcnQpOworICAgIGlmICghcmVzKSB7CisgICAgICAgIEJJT19mcmVl
KGJpbyk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBjaGFy
KiBkYXRhOworICAgIGxvbmcgbGVuID0gQklPX2dldF9tZW1fZGF0YShiaW8sICZkYXRhKTsKKyAg
ICBpZiAobGVuIDwgMCkgeworICAgICAgICBCSU9fZnJlZShiaW8pOworICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorCisgICAgZGF0YVtsZW5dID0gJ1wwJzsKKyAgICBjZXJ0aWZpY2F0ZSA9
IGRhdGE7CisgICAgQklPX2ZyZWUoYmlvKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKyNlbmRpZgor
CitzdGF0aWMgaW50IGNlcnRWZXJpZnlDYWxsYmFjayhpbnQgb2ssIFg1MDlfU1RPUkVfQ1RYKiBj
dHgpCit7CisgICAgLy8gd2hldGhlciB0aGUgdmVyaWZpY2F0aW9uIG9mIHRoZSBjZXJ0aWZpY2F0
ZSBpbiBxdWVzdGlvbiB3YXMgcGFzc2VkIChwcmV2ZXJpZnlfb2s9MSkgb3Igbm90IChwcmV2ZXJp
Znlfb2s9MCkKKworICAgIHVuc2lnbmVkIGVyciA9IFg1MDlfU1RPUkVfQ1RYX2dldF9lcnJvcihj
dHgpOworICAgIGlmICghZXJyKQorICAgICAgICByZXR1cm4gMTsKKworICAgIFNTTCogc3NsID0g
cmVpbnRlcnByZXRfY2FzdDxTU0wqPihYNTA5X1NUT1JFX0NUWF9nZXRfZXhfZGF0YShjdHgsIFNT
TF9nZXRfZXhfZGF0YV9YNTA5X1NUT1JFX0NUWF9pZHgoKSkpOworICAgIFNTTF9DVFgqIHNzbGN0
eCA9IFNTTF9nZXRfU1NMX0NUWChzc2wpOworICAgIFJlc291cmNlSGFuZGxlKiBqb2IgPSByZWlu
dGVycHJldF9jYXN0PFJlc291cmNlSGFuZGxlKj4oU1NMX0NUWF9nZXRfYXBwX2RhdGEoc3NsY3R4
KSk7CisgICAgU3RyaW5nIGhvc3QgPSBqb2ItPmZpcnN0UmVxdWVzdCgpLnVybCgpLmhvc3QoKTsK
KyAgICBSZXNvdXJjZUhhbmRsZUludGVybmFsKiBkID0gam9iLT5nZXRJbnRlcm5hbCgpOworCisg
ICAgZC0+bV9zc2xFcnJvcnMgPSBzc2xDZXJ0aWZpY2F0ZUZsYWcoZXJyKTsKKworI2lmIFBMQVRG
T1JNKFdJTikKKyAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPjo6aXRlcmF0b3IgaXQgPSBhbGxv
d2VkSG9zdHMuZmluZChob3N0KTsKKyAgICBvayA9IChpdCAhPSBhbGxvd2VkSG9zdHMuZW5kKCkp
OworI2Vsc2UKKyAgICBTdHJpbmcgY2VydGlmaWNhdGU7CisgICAgaWYgKCFwZW1EYXRhKGN0eCwg
Y2VydGlmaWNhdGUpKQorICAgICAgICByZXR1cm4gMDsKKyAgICBvayA9IHNzbElnbm9yZUhUVFBT
Q2VydGlmaWNhdGUoaG9zdC5sb3dlcigpLCBjZXJ0aWZpY2F0ZSk7CisjZW5kaWYKKworICAgIGlm
IChvaykgeworICAgICAgICAvLyBpZiB0aGUgaG9zdCBhbmQgdGhlIGNlcnRpZmljYXRlIGFyZSBz
dG9yZWQgZm9yIHRoZSBjdXJyZW50IGhhbmRsZSB0aGF0IG1lYW5zIGlzIGVuYWJsZWQsCisgICAg
ICAgIC8vIHNvIGRvbid0IG5lZWQgdG8gY3VybCB2ZXJpZmllcyB0aGUgYXV0aGVudGljaXR5IG9m
IHRoZSBwZWVyJ3MgY2VydGlmaWNhdGUKKyAgICAgICAgY3VybF9lYXN5X3NldG9wdChkLT5tX2hh
bmRsZSwgQ1VSTE9QVF9TU0xfVkVSSUZZUEVFUiwgZmFsc2UpOworICAgIH0KKyAgICByZXR1cm4g
b2s7Cit9CisKK3N0YXRpYyBDVVJMY29kZSBzc2xjdHhmdW4oQ1VSTCogY3VybCwgdm9pZCogc3Ns
Y3R4LCB2b2lkKiBwYXJtKQoreworICAgIFNTTF9DVFhfc2V0X2FwcF9kYXRhKHJlaW50ZXJwcmV0
X2Nhc3Q8U1NMX0NUWCo+KHNzbGN0eCksIHBhcm0pOworICAgIFNTTF9DVFhfc2V0X3ZlcmlmeShy
ZWludGVycHJldF9jYXN0PFNTTF9DVFgqPihzc2xjdHgpLCBTU0xfVkVSSUZZX1BFRVIsIGNlcnRW
ZXJpZnlDYWxsYmFjayk7CisgICAgcmV0dXJuIENVUkxFX09LOworfQorCit2b2lkIHNldFNTTFZl
cmlmeU9wdGlvbnMoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSkKK3sKKyAgICBSZXNvdXJjZUhhbmRs
ZUludGVybmFsKiBkID0gaGFuZGxlLT5nZXRJbnRlcm5hbCgpOworICAgIGN1cmxfZWFzeV9zZXRv
cHQoZC0+bV9oYW5kbGUsIENVUkxPUFRfU1NMX0NUWF9EQVRBLCBoYW5kbGUpOworICAgIGN1cmxf
ZWFzeV9zZXRvcHQoZC0+bV9oYW5kbGUsIENVUkxPUFRfU1NMX0NUWF9GVU5DVElPTiwgc3NsY3R4
ZnVuKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL1NTTEhhbmRsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L1NTTEhhbmRsZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUxZWRhMWQK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
U1NMSGFuZGxlLmgKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBV
bml2ZXJzaXR5IG9mIFN6ZWdlZAorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VU5JVkVSU0lUWSBPRiBTWkVHRUQgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBTU0xIYW5kbGVfaAorI2RlZmluZSBTU0xIYW5kbGVf
aAorCisjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKKworI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3R5cGVkZWYgZW51bSB7CisgICAg
U1NMX0NFUlRJRklDQVRFX1VOS05PV05fQ0EgPSAoMSA8PCAwKSwgLy8gVGhlIHNpZ25pbmcgY2Vy
dGlmaWNhdGUgYXV0aG9yaXR5IGlzIG5vdCBrbm93bi4KKyAgICBTU0xfQ0VSVElGSUNBVEVfQkFE
X0lERU5USVRZID0gKDEgPDwgMSksIC8vIFRoZSBjZXJ0aWZpY2F0ZSBkb2VzIG5vdCBtYXRjaCB0
aGUgZXhwZWN0ZWQgaWRlbnRpdHkgb2YgdGhlIHNpdGUgdGhhdCBpdCB3YXMgcmV0cmlldmVkIGZy
b20uCisgICAgU1NMX0NFUlRJRklDQVRFX05PVF9BQ1RJVkFURUQgPSAoMSA8PCAyKSwgLy8gVGhl
IGNlcnRpZmljYXRlJ3MgYWN0aXZhdGlvbiB0aW1lIGlzIHN0aWxsIGluIHRoZSBmdXR1cmUKKyAg
ICBTU0xfQ0VSVElGSUNBVEVfRVhQSVJFRCA9ICgxIDw8IDMpLCAvLyBUaGUgY2VydGlmaWNhdGUg
aGFzIGV4cGlyZWQKKyAgICBTU0xfQ0VSVElGSUNBVEVfUkVWT0tFRCA9ICgxIDw8IDQpLCAvLyBU
aGUgY2VydGlmaWNhdGUgaGFzIGJlZW4gcmV2b2tlZAorICAgIFNTTF9DRVJUSUZJQ0FURV9JTlNF
Q1VSRSA9ICgxIDw8IDUpLCAvLyBUaGUgY2VydGlmaWNhdGUncyBhbGdvcml0aG0gaXMgY29uc2lk
ZXJlZCBpbnNlY3VyZS4KKyAgICBTU0xfQ0VSVElGSUNBVEVfR0VORVJJQ19FUlJPUiA9ICgxIDw8
IDYpIC8vIFNvbWUgb3RoZXIgZXJyb3Igb2NjdXJyZWQgdmFsaWRhdGluZyB0aGUgY2VydGlmaWNh
dGUKK30gU1NMQ2VydGlmaWNhdGVGbGFnczsKKworCit2b2lkIGFsbG93c0FueUhUVFBTQ2VydGlm
aWNhdGVIb3N0cyhjb25zdCBTdHJpbmcmKTsKK2Jvb2wgc3NsSWdub3JlSFRUUFNDZXJ0aWZpY2F0
ZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKTsKK3ZvaWQgc2V0U1NMVmVyaWZ5T3B0aW9u
cyhSZXNvdXJjZUhhbmRsZSopOworCit9CisKKyNlbmRpZgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>