<?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>90267</bug_id>
          
          <creation_ts>2012-06-29 03:50:27 -0700</creation_ts>
          <short_desc>Handle SSL errors for SOUP</short_desc>
          <delta_ts>2012-08-10 00:47:18 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Soup</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>andersca</cc>
    
    <cc>ap</cc>
    
    <cc>beidson</cc>
    
    <cc>christian</cc>
    
    <cc>danw</cc>
    
    <cc>gustavo</cc>
    
    <cc>japhet</cc>
    
    <cc>jochen</cc>
    
    <cc>mrobinson</cc>
    
    <cc>rakuco</cc>
    
    <cc>sam</cc>
    
    <cc>svillar</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>660345</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-06-29 03:50:27 -0700</bug_when>
    <thetext>The soup network backend doesn&apos;t handle SSL errors because it relies on embedders to handle them themselves using the SoupSession directly. This is not possible in WebKit2, so we need to provide a way to allow the UI process to handle SSL errors. Having SSL handling mechanism in WebCore not only beneficts webkit2, but also webkit1, since it will make easier for embedders to handle these errors and will provide a more robust default behaviour.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>660361</commentid>
    <comment_count>1</comment_count>
      <attachid>150136</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-06-29 04:29:10 -0700</bug_when>
    <thetext>Created attachment 150136
Patch

Handle SSL errors in the soup backend adding a way to allow the WebKit layer decide on what to do. This will allow us to expose an API to handles SSL errors from the UI process in WebKit2. The behaviour is the same than the current one in both WebKit1 and WebKit2, except for the cases where a subresource has a different https origin and the certificate can&apos;t be trusted. In such cases the subresource fails to load now. Now it works the following way:

         - When the main resource receives the response with SSL errors, it asynchronously asks the WebKit layer to check the certificate in a way similar to the policy checker.
         - The default implementation for all ports using the soup backend is to accept the certificate for compatibility. In WebKit2 a message will be send to the UI process, but for now the certificate is always accepted too.
         - If the WebKit layer accepts the certificate, it&apos;s stored in the DocumentLoader to check it for subresources.
         - When a subresource receives the response with SSL errors, the certificate is compared to the saved certificate in DocumentLoader, which is considered the trusted certificate. It will be accepted or denied depending on the trusted certificate without asking the WebKit layer.
         - If the certificate is accepted the resource continues loading normally. If it&apos;s denied the resource load finishes with a normal SSL error.
         - If the ssl mode is set to strict in the SoupSession (in WebKit2 is always set to FALSE), this mechanism doesn&apos;t even start because soup returns and error earlier and the load finishes with a normal SSL error.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>660480</commentid>
    <comment_count>2</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-06-29 07:54:04 -0700</bug_when>
    <thetext>The patch touches a bunch of non-SOUP specific code, so it shouldn&apos;t have the [SOUP] prefix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>660482</commentid>
    <comment_count>3</comment_count>
      <attachid>150136</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-06-29 07:55:30 -0700</bug_when>
    <thetext>Comment on attachment 150136
Patch

Historically, we&apos;ve avoided putting TLS-specific logic into WebKit.  I&apos;m not necessarily opposed to doing that, but if we do it, we should do it in a way that could be used by other ports rather than adding a bunch of #if USE(SOUP) macros in the loader.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>660483</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-06-29 07:55:53 -0700</bug_when>
    <thetext>I also suspect that ap has opinions on this topic, but he&apos;s on vacation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>660500</commentid>
    <comment_count>5</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-06-29 08:15:26 -0700</bug_when>
    <thetext>What does Mac WebKit2 do? Are https tests enabled in WebKitTestRunner? I&apos;m reading my bugmail, but don&apos;t deeply think or research things while on vacation :)

Mac WebKit1 uses a side channel to communicate with loader, which is arguably not so great for cross-platform API:

    [NSURLRequest setAllowsAnyHTTPSCertificate:YES forHost:@&quot;localhost&quot;];
    [NSURLRequest setAllowsAnyHTTPSCertificate:YES forHost:@&quot;127.0.0.1&quot;];</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>661278</commentid>
    <comment_count>6</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-07-01 23:44:03 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 150136 [details])
&gt; Historically, we&apos;ve avoided putting TLS-specific logic into WebKit.  I&apos;m not necessarily opposed to doing that, but if we do it, we should do it in a way that could be used by other ports rather than adding a bunch of #if USE(SOUP) macros in the loader.

Yes, that&apos;s not possible in WebKit2, at least not for soup based ports, because the network is in the web process and the soup session is not available in the UI process. Qt simply sends a sync message to the UI process to handle SSL errors, but I prefer to make this fully asyncrhonous, and I don&apos;t know what Mac does for WebKit2. I&apos;ve tried to make the code as port-agnostic as possible, only the certificate object and flags are specific to soup, with the idea of being easily reusable for other ports, but added fisrt as soup only just as a proof of concept. If other ports are interested in this approach I&apos;ll rework the patch to make it available for all ports.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>661280</commentid>
    <comment_count>7</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-07-01 23:51:40 -0700</bug_when>
    <thetext>I&apos;m not sure you understood my comment.  My concern is that you&apos;re introducing SOUP-specific types and code into cross-port code.  Rather than adding #ifdef SOUP to these files, we should create the necessary platform abstractions to do this in a general way.

Before doing that, however, we should understand how apple-mac solves this problem.  It&apos;s something of a red flag that you don&apos;t understand how they solve this problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>661282</commentid>
    <comment_count>8</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-07-01 23:56:40 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; I&apos;m not sure you understood my comment.  My concern is that you&apos;re introducing SOUP-specific types and code into cross-port code.  Rather than adding #ifdef SOUP to these files, we should create the necessary platform abstractions to do this in a general way.

Yes, that&apos;s what I meant with reworking the patch to make the code available to all ports.

&gt; Before doing that, however, we should understand how apple-mac solves this problem.  It&apos;s something of a red flag that you don&apos;t understand how they solve this problem.

Sure, I&apos;ll check the code and ask apple guys.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>661495</commentid>
    <comment_count>9</comment_count>
    <who name="">jochen</who>
    <bug_when>2012-07-02 08:05:00 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; What does Mac WebKit2 do? Are https tests enabled in WebKitTestRunner? I&apos;m reading my bugmail, but don&apos;t deeply think or research things while on vacation :)

Tests that require HTTPS currently don&apos;t work on WebKit2 based ports: See bug 74295

&gt; 
&gt; Mac WebKit1 uses a side channel to communicate with loader, which is arguably not so great for cross-platform API:
&gt; 
&gt;     [NSURLRequest setAllowsAnyHTTPSCertificate:YES forHost:@&quot;localhost&quot;];
&gt;     [NSURLRequest setAllowsAnyHTTPSCertificate:YES forHost:@&quot;127.0.0.1&quot;];</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>661525</commentid>
    <comment_count>10</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-07-02 08:57:42 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #5)
&gt; &gt; What does Mac WebKit2 do? Are https tests enabled in WebKitTestRunner? I&apos;m reading my bugmail, but don&apos;t deeply think or research things while on vacation :)
&gt; 
&gt; Tests that require HTTPS currently don&apos;t work on WebKit2 based ports: See bug 74295

I&apos;ll add comments over in bug 74295, but this is not entirely true anymore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>662282</commentid>
    <comment_count>11</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-07-03 09:06:52 -0700</bug_when>
    <thetext>Maybe it would help everyone clarify the course forward if you would provide a simple test case that shows exactly one problem that needs to be solved.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>662685</commentid>
    <comment_count>12</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-07-03 23:40:29 -0700</bug_when>
    <thetext>Go to a website with an invalid certificate, like https://www.aeat.com/, for example. Web browsers like chromium or firefox (I don&apos;t know what safari does) show a custom error page informing the https certificate can&apos;t be trusted, and allowing the user to continue loading the page or cancel the load. In WebKit1 embedders could implement this using the network objects directly (SoupSession in the case of soup based ports), but that&apos;s not possible in WebKit2, because the SoupSession object is in the web process. This patch would allow to expose an API to implement this feature.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663409</commentid>
    <comment_count>13</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-07-05 02:20:55 -0700</bug_when>
    <thetext>Looking at the code, it seems to me that mac and win ports don&apos;t support this use case in WebKit2. The certificate info is serialized as part of ResourceError, so I assume they simply fail to load and the certificate info is sent to the UI process with the ResourceError.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663464</commentid>
    <comment_count>14</comment_count>
      <attachid>150136</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-07-05 03:52:11 -0700</bug_when>
    <thetext>Comment on attachment 150136
Patch

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

&gt; Looking at the code, it seems to me that mac and win ports don&apos;t support this use case in WebKit2.

This cannot be true - Safari can deal with untrusted certificates. I don&apos;t know all the details, but in the UI, there are options to just continue, or to mark the certificate as trusted for the site permanently. I think that the latter would store the decision in Keychain, and the former calls an NSURLRequest SPI similar to +allowsAnyHTTPSCertificateForHost: to remember the decision in a CFNetwork session, and then the request is retried.

Other ports likely have their solutions too. It might be possible to create a cross-platform abstraction, but I doubt that making an additional client call on every failure would be the right one.

&gt; Source/WebCore/ChangeLog:3
&gt; +        [SOUP] Handle SSL errors

A patch that touches cross-platform code should not have [] prefixes. Especially now that you say that WebKit2 ports need this.

&gt; Source/WebCore/ChangeLog:8
&gt; +        No new tests, this is covered by existing tests.

This explanation doesn&apos;t ring true. If this change is covered by existing skipped tests, they should be unskilled in the same patch.

&gt; Source/WebCore/ChangeLog:12
&gt; +        Handle SSL errors in the soup backend adding a way to allow the
&gt; +        WebKit layer decide on what to do. This will allow us to expose an
&gt; +        API to handles SSL errors from the UI process in WebKit2.

Can other network back-ends cannot recover from an SSL failure on a specific connection? If not, exposing this functionality in WebKit API would be undesirable, even for a single port.

There is also the question of how request oriented APIs deal with connection level settings. In my experience, this adds a serious amount of trouble. It&apos;s sometimes unavoidable, e.g. for NTLM authentication or keep-alive, but should be minimized when possible.

&gt; Source/WebCore/ChangeLog:20
&gt; +         - When the main resource receives the response with SSL errors,
&gt; +           it asynchronously asks the WebKit layer to check the
&gt; +           certificate in a way similar to the policy checker.

Do you envision a need for UI process to make complicated decisions? If not, a setting should be just sent to WebProcess in advance to minimize complexity and XPC traffic.

&gt; Source/WebCore/ChangeLog:31
&gt; +         - When a subresource receives the response with SSL errors, the
&gt; +           certificate is compared to the saved certificate in
&gt; +           DocumentLoader, which is considered the trusted
&gt; +           certificate. It will be accepted or denied depending on the
&gt; +           trusted certificate without asking the WebKit layer.

While this logic makes sense on the surface, I think that it&apos;s without precedent in browsers. Do any other browsers behave like this?

&gt; Source/WebCore/ChangeLog:51
&gt; +        * loader/FrameLoaderClient.h:
&gt; +        (FrameLoaderClient): Add dispatchCheckTlsCertificate().

Style nit: TLS should be capitalized everywhere.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663474</commentid>
    <comment_count>15</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-07-05 04:09:04 -0700</bug_when>
    <thetext>I think that a solution for tests is separate from what&apos;s needed for browsers. Proposing one for Mac WK2 in bug 90600.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663487</commentid>
    <comment_count>16</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-07-05 04:26:01 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (From update of attachment 150136 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=150136&amp;action=review
&gt; 
&gt; &gt; Looking at the code, it seems to me that mac and win ports don&apos;t support this use case in WebKit2.
&gt; 
&gt; This cannot be true - Safari can deal with untrusted certificates. I don&apos;t know all the details, but in the UI, there are options to just continue, or to mark the certificate as trusted for the site permanently. I think that the latter would store the decision in Keychain, and the former calls an NSURLRequest SPI similar to +allowsAnyHTTPSCertificateForHost: to remember the decision in a CFNetwork session, and then the request is retried.

Ok, I didn&apos;t find code for that in WebKit, I guess they use injected bundle in the app side. I don&apos;t have a mac to check what safari does either.

&gt; Other ports likely have their solutions too. It might be possible to create a cross-platform abstraction, but I doubt that making an additional client call on every failure would be the right one.

So, instead of stopping the load until a decision has been made by the WebKit layer, we could use a solution similar to what mac and win seem to do. In case of SSL errors, if the host is not in the list of hosts which any HTTPS certificate should be allowed, we simply finish the load with an error. The error sent to the UI process contains the certificate. The app can handle this error differently and ask the user to decide what to do. If the user decide to ignore SSL errors an continue with the load, the hostname is sent to the web process to be included in the list of hosts that should allow any certificate and a new request is made.

If I&apos;m not wrong again, Qt port sends a sync message to the UI process to decide whether to ignore SSL errors or not. That would block the whole web process until the decision is made by the user, so I prefer to avoid any soluttion that is not asynchronous. 

&gt; &gt; Source/WebCore/ChangeLog:3
&gt; &gt; +        [SOUP] Handle SSL errors
&gt; 
&gt; A patch that touches cross-platform code should not have [] prefixes. Especially now that you say that WebKit2 ports need this.

Ok, I thought this solution might not be valid for other ports.

&gt; &gt; Source/WebCore/ChangeLog:8
&gt; &gt; +        No new tests, this is covered by existing tests.
&gt; 
&gt; This explanation doesn&apos;t ring true. If this change is covered by existing skipped tests, they should be unskilled in the same patch.

No, this should not affect skipped tests. 

&gt; &gt; Source/WebCore/ChangeLog:12
&gt; &gt; +        Handle SSL errors in the soup backend adding a way to allow the
&gt; &gt; +        WebKit layer decide on what to do. This will allow us to expose an
&gt; &gt; +        API to handles SSL errors from the UI process in WebKit2.
&gt; 
&gt; Can other network back-ends cannot recover from an SSL failure on a specific connection? If not, exposing this functionality in WebKit API would be undesirable, even for a single port.
&gt; 
&gt; There is also the question of how request oriented APIs deal with connection level settings. In my experience, this adds a serious amount of trouble. It&apos;s sometimes unavoidable, e.g. for NTLM authentication or keep-alive, but should be minimized when possible.

I don&apos;t know.

&gt; &gt; Source/WebCore/ChangeLog:20
&gt; &gt; +         - When the main resource receives the response with SSL errors,
&gt; &gt; +           it asynchronously asks the WebKit layer to check the
&gt; &gt; +           certificate in a way similar to the policy checker.
&gt; 
&gt; Do you envision a need for UI process to make complicated decisions? If not, a setting should be just sent to WebProcess in advance to minimize complexity and XPC traffic.

No, just allow or reject the certificate for the given website. But this can&apos;t be a global setting, because teh decission might depend on the concrete error or the site the user is trying to access.

&gt; &gt; Source/WebCore/ChangeLog:31
&gt; &gt; +         - When a subresource receives the response with SSL errors, the
&gt; &gt; +           certificate is compared to the saved certificate in
&gt; &gt; +           DocumentLoader, which is considered the trusted
&gt; &gt; +           certificate. It will be accepted or denied depending on the
&gt; &gt; +           trusted certificate without asking the WebKit layer.
&gt; 
&gt; While this logic makes sense on the surface, I think that it&apos;s without precedent in browsers. Do any other browsers behave like this?

Yes, at least chromium and firefox do that, I don&apos;t know how it&apos;s done in the code, but they only ask the user to accept/reject the certificate for the main resource. When the user decides to continue, all other subresources are loaded without asking the user. When a subresource has an invalid certificate rom another website it&apos;s not loaded without asking the user either.

&gt; &gt; Source/WebCore/ChangeLog:51
&gt; &gt; +        * loader/FrameLoaderClient.h:
&gt; &gt; +        (FrameLoaderClient): Add dispatchCheckTlsCertificate().
&gt; 
&gt; Style nit: TLS should be capitalized everywhere.

Ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>664128</commentid>
    <comment_count>17</comment_count>
      <attachid>151088</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-07-06 08:49:17 -0700</bug_when>
    <thetext>Created attachment 151088
New patch

This is a new patch following a simpler approach based on what win port does. It doesn&apos;t affect WebKit1, because in this case the wk layer should handle the errors using the SoupSession object directly. If SoupSession is set to strict mode, SSL errors will be handled by the SoupSession, otherwhise they will be ignored, so it&apos;s exactly the same behaviour. For WebKit2 we are also ignoring SSL errors by default for compatibility, but that will be removed once the UI process can handle those errors. This patch doesn&apos;t change any cross-platform code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>664137</commentid>
    <comment_count>18</comment_count>
      <attachid>151088</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-07-06 09:23:46 -0700</bug_when>
    <thetext>Comment on attachment 151088
New patch

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

This looks good to me apart from a concern about how you save TLS certifictes (indexed only on URL and not port). I think it would be good for Sergio and Dan to take a look though.

&gt; Source/WebCore/platform/network/soup/ResourceError.h:32
&gt;  #include &quot;ResourceErrorBase.h&quot;
&gt;  
&gt; +#include &lt;wtf/gobject/GRefPtr.h&gt;
&gt; +

Nit: This header could go directly under the first, I think.

&gt; Source/WebCore/platform/network/soup/ResourceError.h:52
&gt; +    ResourceError(const String&amp; domain, int errorCode, const String&amp; failingURL, const String&amp; localizedDescription, unsigned tlsErrors, GTlsCertificate* certificate)
&gt; +        : ResourceErrorBase(domain, errorCode, failingURL, localizedDescription)
&gt; +        , m_tlsErrors(tlsErrors)
&gt; +        , m_certificate(certificate)

m_tlsErrors is uninitialized for other constructors. Maybe it should be initialized to 0 for completeness.

&gt; Source/WebCore/platform/network/soup/ResourceHandleSoup.cpp:172
&gt; +static bool ignoreSSLErrors = false;

I like to prefix my global static variables with g. Which, I think, could be useful in this case too.

&gt; Source/WebCore/platform/network/soup/ResourceHandleSoup.cpp:431
&gt; +        if (d-&gt;m_response.soupMessageTLSErrors() &amp;&amp; !ignoreSSLErrors &amp;&amp; !allowsAnyHTTPSCertificateHosts().contains(handle-&gt;firstRequest().url().host().lower())) {

Does host() also include the port number? If I&apos;m not mistaken you want something like the security domain (scheme-host-scheme). The scheme may not be important here, but perhaps it would be better to make this conditional on protocolHostAndPortAreEqual.

I also wonder what happens when you make a request to http://foo.com and then http://foo.com:80.

&gt; Source/WebCore/platform/network/soup/ResourceHandleSoup.cpp:432
&gt; +            CertificatesMap::iterator iter = clientCertificates().find(handle-&gt;firstRequest().url().host().lower());

I think it makes sense to put this entire check into a helper method called something like messageHasUnignoredTLSError.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>664139</commentid>
    <comment_count>19</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-07-06 09:36:26 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; (From update of attachment 151088 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=151088&amp;action=review
&gt; 
&gt; This looks good to me apart from a concern about how you save TLS certifictes (indexed only on URL and not port). I think it would be good for Sergio and Dan to take a look though.
&gt; 
&gt; &gt; Source/WebCore/platform/network/soup/ResourceError.h:32
&gt; &gt;  #include &quot;ResourceErrorBase.h&quot;
&gt; &gt;  
&gt; &gt; +#include &lt;wtf/gobject/GRefPtr.h&gt;
&gt; &gt; +
&gt; 
&gt; Nit: This header could go directly under the first, I think.

Yes.

&gt; &gt; Source/WebCore/platform/network/soup/ResourceError.h:52
&gt; &gt; +    ResourceError(const String&amp; domain, int errorCode, const String&amp; failingURL, const String&amp; localizedDescription, unsigned tlsErrors, GTlsCertificate* certificate)
&gt; &gt; +        : ResourceErrorBase(domain, errorCode, failingURL, localizedDescription)
&gt; &gt; +        , m_tlsErrors(tlsErrors)
&gt; &gt; +        , m_certificate(certificate)
&gt; 
&gt; m_tlsErrors is uninitialized for other constructors. Maybe it should be initialized to 0 for completeness.

Right, good catch :-)

&gt; &gt; Source/WebCore/platform/network/soup/ResourceHandleSoup.cpp:172
&gt; &gt; +static bool ignoreSSLErrors = false;
&gt; 
&gt; I like to prefix my global static variables with g. Which, I think, could be useful in this case too.

I thought that was only for const globals. 

&gt; &gt; Source/WebCore/platform/network/soup/ResourceHandleSoup.cpp:431
&gt; &gt; +        if (d-&gt;m_response.soupMessageTLSErrors() &amp;&amp; !ignoreSSLErrors &amp;&amp; !allowsAnyHTTPSCertificateHosts().contains(handle-&gt;firstRequest().url().host().lower())) {
&gt; 
&gt; Does host() also include the port number? If I&apos;m not mistaken you want something like the security domain (scheme-host-scheme). The scheme may not be important here, but perhaps it would be better to make this conditional on protocolHostAndPortAreEqual.
&gt; 
&gt; I also wonder what happens when you make a request to http://foo.com and then http://foo.com:80.

hmm, I&apos;ve followed the same approach than CF, see ResourceHandleCFNet.cpp. Chromium also stores the certs per host using handler-&gt;request_url().host() in ssl_policy.cc

&gt; &gt; Source/WebCore/platform/network/soup/ResourceHandleSoup.cpp:432
&gt; &gt; +            CertificatesMap::iterator iter = clientCertificates().find(handle-&gt;firstRequest().url().host().lower());
&gt; 
&gt; I think it makes sense to put this entire check into a helper method called something like messageHasUnignoredTLSError.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>664144</commentid>
    <comment_count>20</comment_count>
      <attachid>151088</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-07-06 09:39:55 -0700</bug_when>
    <thetext>Comment on attachment 151088
New patch

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

&gt;&gt;&gt; Source/WebCore/platform/network/soup/ResourceHandleSoup.cpp:431
&gt;&gt;&gt; +        if (d-&gt;m_response.soupMessageTLSErrors() &amp;&amp; !ignoreSSLErrors &amp;&amp; !allowsAnyHTTPSCertificateHosts().contains(handle-&gt;firstRequest().url().host().lower())) {
&gt;&gt; 
&gt;&gt; Does host() also include the port number? If I&apos;m not mistaken you want something like the security domain (scheme-host-scheme). The scheme may not be important here, but perhaps it would be better to make this conditional on protocolHostAndPortAreEqual.
&gt;&gt; 
&gt;&gt; I also wonder what happens when you make a request to http://foo.com and then http://foo.com:80.
&gt; 
&gt; hmm, I&apos;ve followed the same approach than CF, see ResourceHandleCFNet.cpp. Chromium also stores the certs per host using handler-&gt;request_url().host() in ssl_policy.cc

I&apos;ll defer here to someone who knows more than me about TLS, perhaps Dan or Sergio.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>664189</commentid>
    <comment_count>21</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-07-06 10:37:55 -0700</bug_when>
    <thetext>I don&apos;t feel like my concerns have been addressed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>664374</commentid>
    <comment_count>22</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-07-07 02:57:02 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; I don&apos;t feel like my concerns have been addressed.

what exactly? The new patch doesn&apos;t stop the current resource load until a decision is made, but it finishes the load with an error. Then, it&apos;s up to the app to handle that error differently, whitelist the certificate for the host, and start a new load. The patch doesn&apos;t change any corss-platform code, and I think it&apos;s does the same than the CF backend.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>665699</commentid>
    <comment_count>23</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-07-10 06:07:56 -0700</bug_when>
    <thetext>The concern is that this patch adds an entirely different way to do something that can already be done in other ports. Ifdefs are powerful, but as much as possible, we don&apos;t want ports to do things in entirely custom ways, because that complicates future work on the code, especially refactoring.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>666560</commentid>
    <comment_count>24</comment_count>
      <attachid>151657</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-07-11 02:33:02 -0700</bug_when>
    <thetext>Created attachment 151657
Updated patch to address review comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>666561</commentid>
    <comment_count>25</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-07-11 02:37:14 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; The concern is that this patch adds an entirely different way to do something that can already be done in other ports. Ifdefs are powerful, but as much as possible, we don&apos;t want ports to do things in entirely custom ways, because that complicates future work on the code, especially refactoring.

hmm, are you talking about the first or second patch? In the second patch the only #ifdefed code I added is in ResourceHandle.h, which is full of platform #ifdefs. The new methods I added in the #ifdef block are mostly the same than the methods used by the CF backend. I don&apos;t know what CF does internally nor what safari does, but apparently, we are now doing the same than CF, or at least a very similar approach.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>666578</commentid>
    <comment_count>26</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-07-11 02:49:12 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; (From update of attachment 151088 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=151088&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/network/soup/ResourceHandleSoup.cpp:431
&gt; &gt; +        if (d-&gt;m_response.soupMessageTLSErrors() &amp;&amp; !ignoreSSLErrors &amp;&amp; !allowsAnyHTTPSCertificateHosts().contains(handle-&gt;firstRequest().url().host().lower())) {
&gt; 
&gt; Does host() also include the port number? If I&apos;m not mistaken you want something like the security domain (scheme-host-scheme). The scheme may not be important here, but perhaps it would be better to make this conditional on protocolHostAndPortAreEqual.
&gt; 
&gt; I also wonder what happens when you make a request to http://foo.com and then http://foo.com:80.

allowsAnyHTTPSCertificateHosts() won&apos;t be exposed in the API, it&apos;s mainly used for testing. Mac and win ports use it in DRT and WTR to allow any certificates in localhost and 127.0.0.1. That&apos;s what we&apos;ll do for WTR too. 

When an invalid certificate will be accepted by the wk layer, setClientCertificate() will be used. In this case, the certificate is stored per host, and it&apos;s always checked. So, if https://foo.com is loaded and the certificate is accepted, when loading https://foo.com:80, the certificate will be checked for foo.com. If the certificate is the same, then it will be loaded, otherwise (no certificate or it&apos;s invalid and different) the load will finish with an error. Then, again, it&apos;s up to the app to handle the error and accept/reject the certificate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>666583</commentid>
    <comment_count>27</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-07-11 02:53:22 -0700</bug_when>
    <thetext>&gt; When an invalid certificate will be accepted by the wk layer, setClientCertificate() will be used. In this case, the certificate is stored per host, and it&apos;s always checked. So, if https://foo.com is loaded and the certificate is accepted, when loading https://foo.com:80, the certificate will be checked for foo.com. If the certificate is the same, then it will be loaded, otherwise (no certificate or it&apos;s invalid and different) the load will finish with an error. Then, again, it&apos;s up to the app to handle the error and accept/reject the certificate.

hmm, in this particular case, the previous certificate would be lost, so I think we should store a list of certificates per host, like chromium does.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>666601</commentid>
    <comment_count>28</comment_count>
      <attachid>151657</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-07-11 03:22:15 -0700</bug_when>
    <thetext>Comment on attachment 151657
Updated patch to address review comments

Attachment 151657 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/13215019</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>666676</commentid>
    <comment_count>29</comment_count>
      <attachid>151687</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-07-11 05:01:34 -0700</bug_when>
    <thetext>Created attachment 151687
Updated patch

Updated patch to allow saving more than one certificate per host. Instead of saving the certificate and compare the whole data to check whether it&apos;s equal to another one, I&apos;ve followed the same approach than chromium, computing and saving the SHA1 of the certificate data. To make it easiert to add and check certificates I&apos;ve used a simpler helper class. This should also fix the EFL build, adding the new message to LocalizedStrings instead of adding a translatable string directly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>666772</commentid>
    <comment_count>30</comment_count>
      <attachid>151712</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-07-11 08:30:17 -0700</bug_when>
    <thetext>Created attachment 151712
Updated patch

This is just a minor improvement. Dan told me about soup_message_get_https_status(), so I&apos;ve updated the patch to use it instead of g_obejct_get().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>668809</commentid>
    <comment_count>31</comment_count>
      <attachid>152205</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-07-13 03:14:50 -0700</bug_when>
    <thetext>Created attachment 152205
Rebased to current git master

Rebased to current git master because some parts of the patch landed already in another patch, so this is now even simpler.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>691373</commentid>
    <comment_count>32</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-08-09 04:56:57 -0700</bug_when>
    <thetext>(In reply to comment #31)
&gt; Created an attachment (id=152205) [details]
&gt; Rebased to current git master
&gt; 
&gt; Rebased to current git master because some parts of the patch landed already in another patch, so this is now even simpler.

Does anybody still have objections to land this patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>691506</commentid>
    <comment_count>33</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-08-09 09:34:47 -0700</bug_when>
    <thetext>I do not have objections.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>691510</commentid>
    <comment_count>34</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-08-09 09:39:51 -0700</bug_when>
    <thetext>(In reply to comment #33)
&gt; I do not have objections.

Thanks AP! I think we can go ahead with this patch, though it&apos;d be great to get an opinion from Dan about whether it&apos;s important to certificates for host+port or if just the host is enough.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>691516</commentid>
    <comment_count>35</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-08-09 09:48:45 -0700</bug_when>
    <thetext>(In reply to comment #34)
&gt; (In reply to comment #33)
&gt; &gt; I do not have objections.
&gt; 
&gt; Thanks AP! I think we can go ahead with this patch, though it&apos;d be great to get an opinion from Dan about whether it&apos;s important to certificates for host+port or if just the host is enough.

I updated the patch already to allow saving more than one certificate per host to handle such cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>691521</commentid>
    <comment_count>36</comment_count>
    <who name="Dan Winship">danw</who>
    <bug_when>2012-08-09 09:52:50 -0700</bug_when>
    <thetext>(In reply to comment #34)
&gt; it&apos;d be great to get an opinion from Dan about whether it&apos;s important to certificates for host+port or if just the host is enough.

&quot;whatever other browsers do&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>691523</commentid>
    <comment_count>37</comment_count>
      <attachid>152205</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-08-09 09:55:07 -0700</bug_when>
    <thetext>Comment on attachment 152205
Rebased to current git master

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

&gt; Source/WebCore/ChangeLog:18
&gt; +        (WebCore::ResourceError::ResourceError): Add new constrcutor for

constrcutor -&gt; constructor

&gt; Source/WebCore/platform/network/soup/ResourceHandleSoup.cpp:164
&gt; +class HostTLSCertificates {

Maybe HostTLSCertificateSet to to make it clear that this is a set?

&gt; Source/WebCore/platform/network/soup/ResourceHandleSoup.cpp:166
&gt; +    static const size_t sha1HashSize = 20;

This can be defined in the scope that it&apos;s used.

&gt; Source/WebCore/platform/network/soup/ResourceHandleSoup.cpp:175
&gt; +    bool check(GTlsCertificate* certificate)

How about &quot;contains&quot; ?

&gt; Source/WebCore/platform/network/soup/ResourceHandleSoup.cpp:195
&gt; +        return base64Encode(reinterpret_cast&lt;const char*&gt;(digest.data()), sha1HashSize);

It&apos;s a bit surprising that base64Encode does not return a CString.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>692301</commentid>
    <comment_count>38</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-08-10 00:47:18 -0700</bug_when>
    <thetext>Committed r125258: &lt;http://trac.webkit.org/changeset/125258&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150136</attachid>
            <date>2012-06-29 04:29:10 -0700</date>
            <delta_ts>2012-07-06 08:49:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk-ssl-errors.diff</filename>
            <type>text/plain</type>
            <size>41458</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggOGRmMWQ2NC4uZjNkOGI3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMi0wNi0yOSAg
Q2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW1NP
VVBdIEhhbmRsZSBTU0wgZXJyb3JzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD05MDI2NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBHQnl0ZUFycmF5LgorCisgICAgICAgICogd3Rm
L2dvYmplY3QvR1JlZlB0ci5jcHA6CisgICAgICAgICogd3RmL2dvYmplY3QvR1JlZlB0ci5oOgor
ICAgICAgICAqIHd0Zi9nb2JqZWN0L0dUeXBlZGVmcy5oOgorCiAyMDEyLTA2LTI2ICBUb3IgQXJu
ZSBWZXN0YsO4ICA8dG9yLmFybmUudmVzdGJvQG5va2lhLmNvbT4KIAogICAgICAgICBbUXRdIEFk
ZCBtaXNzaW5nIGhlYWRlcyB0byBIRUFERVJTCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODUwYmM3YS4uZjkyZTUx
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk5IEBACisyMDEyLTA2LTI5ICBDYXJsb3MgR2FyY2lh
IENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKworICAgICAgICBbU09VUF0gSGFuZGxlIFNT
TCBlcnJvcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTkwMjY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
Tm8gbmV3IHRlc3RzLCB0aGlzIGlzIGNvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAg
ICAgSGFuZGxlIFNTTCBlcnJvcnMgaW4gdGhlIHNvdXAgYmFja2VuZCBhZGRpbmcgYSB3YXkgdG8g
YWxsb3cgdGhlCisgICAgICAgIFdlYktpdCBsYXllciBkZWNpZGUgb24gd2hhdCB0byBkby4gVGhp
cyB3aWxsIGFsbG93IHVzIHRvIGV4cG9zZSBhbgorICAgICAgICBBUEkgdG8gaGFuZGxlcyBTU0wg
ZXJyb3JzIGZyb20gdGhlIFVJIHByb2Nlc3MgaW4gV2ViS2l0Mi4KKyAgICAgICAgVGhlIGJlaGF2
aW91ciBpcyB0aGUgc2FtZSB0aGFuIHRoZSBjdXJyZW50IG9uZSBpbiBib3RoIFdlYktpdDEgYW5k
CisgICAgICAgIFdlYktpdDIsIGV4Y2VwdCBmb3IgdGhlIGNhc2VzIHdoZXJlIGEgc3VicmVzb3Vy
Y2UgaGFzIGEgZGlmZmVyZW50CisgICAgICAgIGh0dHBzIG9yaWdpbiBhbmQgdGhlIGNlcnRpZmlj
YXRlIGNhbid0IGJlIHRydXN0ZWQuIEluIHN1Y2ggY2FzZXMKKyAgICAgICAgdGhlIHN1YnJlc291
cmNlIGZhaWxzIHRvIGxvYWQgbm93LiBOb3cgaXQgd29ya3MgdGhlIGZvbGxvd2luZyB3YXk6CisK
KyAgICAgICAgIC0gV2hlbiB0aGUgbWFpbiByZXNvdXJjZSByZWNlaXZlcyB0aGUgcmVzcG9uc2Ug
d2l0aCBTU0wgZXJyb3JzLAorICAgICAgICAgICBpdCBhc3luY2hyb25vdXNseSBhc2tzIHRoZSBX
ZWJLaXQgbGF5ZXIgdG8gY2hlY2sgdGhlCisgICAgICAgICAgIGNlcnRpZmljYXRlIGluIGEgd2F5
IHNpbWlsYXIgdG8gdGhlIHBvbGljeSBjaGVja2VyLgorICAgICAgICAgLSBUaGUgZGVmYXVsdCBp
bXBsZW1lbnRhdGlvbiBmb3IgYWxsIHBvcnRzIHVzaW5nIHRoZSBzb3VwIGJhY2tlbmQKKyAgICAg
ICAgICAgaXMgdG8gYWNjZXB0IHRoZSBjZXJ0aWZpY2F0ZSBmb3IgY29tcGF0aWJpbGl0eS4gSW4g
V2ViS2l0MiBhCisgICAgICAgICAgIG1lc3NhZ2Ugd2lsbCBiZSBzZW5kIHRvIHRoZSBVSSBwcm9j
ZXNzLCBidXQgZm9yIG5vdyB0aGUKKyAgICAgICAgICAgY2VydGlmaWNhdGUgaXMgYWx3YXlzIGFj
Y2VwdGVkIHRvby4KKyAgICAgICAgIC0gSWYgdGhlIFdlYktpdCBsYXllciBhY2NlcHRzIHRoZSBj
ZXJ0aWZpY2F0ZSwgaXQncyBzdG9yZWQgaW4gdGhlCisgICAgICAgICAgIERvY3VtZW50TG9hZGVy
IHRvIGNoZWNrIGl0IGZvciBzdWJyZXNvdXJjZXMuCisgICAgICAgICAtIFdoZW4gYSBzdWJyZXNv
dXJjZSByZWNlaXZlcyB0aGUgcmVzcG9uc2Ugd2l0aCBTU0wgZXJyb3JzLCB0aGUKKyAgICAgICAg
ICAgY2VydGlmaWNhdGUgaXMgY29tcGFyZWQgdG8gdGhlIHNhdmVkIGNlcnRpZmljYXRlIGluCisg
ICAgICAgICAgIERvY3VtZW50TG9hZGVyLCB3aGljaCBpcyBjb25zaWRlcmVkIHRoZSB0cnVzdGVk
CisgICAgICAgICAgIGNlcnRpZmljYXRlLiBJdCB3aWxsIGJlIGFjY2VwdGVkIG9yIGRlbmllZCBk
ZXBlbmRpbmcgb24gdGhlCisgICAgICAgICAgIHRydXN0ZWQgY2VydGlmaWNhdGUgd2l0aG91dCBh
c2tpbmcgdGhlIFdlYktpdCBsYXllci4KKyAgICAgICAgIC0gSWYgdGhlIGNlcnRpZmljYXRlIGlz
IGFjY2VwdGVkIHRoZSByZXNvdXJjZSBjb250aW51ZXMgbG9hZGluZworICAgICAgICAgICBub3Jt
YWxseS4gSWYgaXQncyBkZW5pZWQgdGhlIHJlc291cmNlIGxvYWQgZmluaXNoZXMgd2l0aCBhCisg
ICAgICAgICAgIG5vcm1hbCBTU0wgZXJyb3IuCisgICAgICAgICAtIElmIHRoZSBzc2wgbW9kZSBp
cyBzZXQgdG8gc3RyaWN0IGluIHRoZSBTb3VwU2Vzc2lvbiAoaW4gV2ViS2l0MgorICAgICAgICAg
ICBpcyBhbHdheXMgc2V0IHRvIEZBTFNFKSwgdGhpcyBtZWNoYW5pc20gZG9lc24ndCBldmVuIHN0
YXJ0CisgICAgICAgICAgIGJlY2F1c2Ugc291cCByZXR1cm5zIGFuZCBlcnJvciBlYXJsaWVyIGFu
ZCB0aGUgbG9hZCBmaW5pc2hlcworICAgICAgICAgICB3aXRoIGEgbm9ybWFsIFNTTCBlcnJvci4K
KworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOiBBZGQgbG9hZGVyL3NvdXAgdG8gdGhlIGluY2x1
ZGVzIHBhdGguCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbTogQWRkIG5ldyBmaWxlcyB0
byBjb21waWxhdGlvbi4KKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZTogRGl0dG8uCisgICAg
ICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dExvYWRlcjo6dHJ1c3RlZENlcnRpZmljYXRlKTogR2V0IHRoZSB0cnN1dGVkCisgICAgICAgIGNl
cnRpZmljYXRlLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnNldFRydXN0ZWRD
ZXJ0aWZpY2F0ZSk6IFNldCBhCisgICAgICAgIGNlcnRpZmljYXRlIHRvIGJlIGNvbnNpZGVyZWQg
dHJ1c3RlZC4KKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6CisgICAgICAgIChXZWJD
b3JlOjpFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaENoZWNrVGxzQ2VydGlmaWNhdGUp
OgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAoRnJhbWVM
b2FkZXJDbGllbnQpOiBBZGQgZGlzcGF0Y2hDaGVja1Rsc0NlcnRpZmljYXRlKCkuCisgICAgICAg
ICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgIChSZXNvdXJjZUxvYWRlcik6Cisg
ICAgICAgICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmg6CisgICAgICAgIChTdWJyZXNvdXJj
ZUxvYWRlcik6CisgICAgICAgICogbG9hZGVyL3NvdXAvUmVzb3VyY2VMb2FkZXJTb3VwLmNwcDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6Y2hlY2tUbHNDZXJ0aWZp
Y2F0ZSk6IENhbGwKKyAgICAgICAgZGlzcGF0Y2hDaGVja1Rsc0NlcnRpZmljYXRlKCkgb24gdGhl
IGxvYWRlciBjbGllbnQgdG8gYXNrIHRoZQorICAgICAgICBXZWJLaXQgbGF5ZXIgdG8gY2hlY2sg
dGhlIEhUVFBTIGNlcnRpZmljYXRlLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6
OmNvbnRpbnVlQWZ0ZXJDaGVja1Rsc0NlcnRpZmljYXRlKToKKyAgICAgICAgQ2FsbGVkIHdoZW4g
dGhlIFdlYktpdCBsYXllciBoYXMgbWFkZSBhIGRlY2lzaW9uIGFib3V0IHRoZSBIVFRQUworICAg
ICAgICBjZXJ0aWZpY2F0ZS4KKyAgICAgICAgKiBsb2FkZXIvc291cC9TdWJyZXNvdXJjZUxvYWRl
clNvdXAuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnRsc0NlcnRpZmljYXRlRXF1YWwp
OiBDaGVjayB3aGV0aGVyIHR3byBHVGxzQ2VydGlmaWNhdGUKKyAgICAgICAgb2JqZWN0cyBjb250
YWluIHRoZSBzYW1lIEhUVE9QUyBjZXJ0aWZpY2F0ZS4KKyAgICAgICAgKFdlYkNvcmU6OlN1YnJl
c291cmNlTG9hZGVyOjpjaGVja1Rsc0NlcnRpZmljYXRlKTogQ2hlY2sgaWYgdGhlCisgICAgICAg
IGNlcnRpZmljYXRlIGhhcyBhbHJlYWR5IGJlZW4gYWNjZXB0ZWQgYnkgdGhlIFdlYktpdCBsYXll
ciB0bworICAgICAgICBkZWNpZGUgd2hldGhlciBhY2NlcHQgb3IgZGVueSB0aGUgcmVxdWVzdC4K
KyAgICAgICAgKiBsb2FkZXIvc291cC9UbHNDZXJ0aWZpY2F0ZUNhbGxiYWNrLmg6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6VGxzQ2VydGlmaWNhdGVDYWxsYmFjazo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRsc0NlcnRpZmljYXRlQ2FsbGJhY2s6On5UbHNDZXJ0aWZpY2F0ZUNhbGxi
YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlRsc0NlcnRpZmljYXRlQ2FsbGJhY2s6OmNhbGxiYWNr
SUQpOgorICAgICAgICAoV2ViQ29yZTo6VGxzQ2VydGlmaWNhdGVDYWxsYmFjazo6cGVyZm9ybUNh
bGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlRsc0NlcnRpZmljYXRlQ2FsbGJhY2s6OmludmFs
aWRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VGxzQ2VydGlmaWNhdGVDYWxsYmFjazo6VGxzQ2Vy
dGlmaWNhdGVDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpUbHNDZXJ0aWZpY2F0ZUNhbGxi
YWNrOjpnZW5lcmF0ZUNhbGxiYWNrSUQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VIYW5kbGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxl
Q2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNsaWVudDo6Y2hlY2tU
bHNDZXJ0aWZpY2F0ZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNl
SGFuZGxlU291cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjphbGxvd3NBbnlIVFRQU0NlcnRpZmlj
YXRlSG9zdHMpOiBHbG9iYWwgc2V0IHRvIHN0b3JlCisgICAgICAgIGhvc3RuYW1lcyBmb3Igd2hp
Y2ggU1NMIGVycm9ycyBzaG91bGQgYmUgaWdub3JlZC4KKyAgICAgICAgKFdlYkNvcmU6OmNvbnRp
bnVlTG9hZGluZ1Jlc291cmNlKTogQ29udGludWUgd2l0aCB0aGUgbG9hZCBhZnRlciBhCisgICAg
ICAgIEhUVFBTIGNlcnRpZmljYXRlIGhhcyBiZW4gYWNjZXB0ZWQgb3IgZm9yIG5vbiBIVFRQUyBj
b25uZWN0aW9ucy4KKyAgICAgICAgKFdlYkNvcmU6OnRsc0NlcnRpZmljYXRlQ2FsbGJhY2spOiBD
YWxsZWQgd2hlbiB0aGUgZGVjaXNpb24gZm9yCisgICAgICAgIHRoZSBIVFRQUyBjZXJ0aWZpY2F0
ZSBoYXMgYmVlbiBtYWRlLiBJZiB0aGUgY2VydGlmaWNhdGUgaXMgbm90CisgICAgICAgIHRydXN0
ZWQsIHRoZSBsb2FkIGZhaWxzIHdpdGggYSBub3JtYWwgU1NMIGVycm9yLgorICAgICAgICAoV2Vi
Q29yZTo6c2VuZFJlcXVlc3RDYWxsYmFjayk6IEluIGNhc2Ugb2YgU1NMIGVycm9ycywKKyAgICAg
ICAgYXN5bmNocm9ub3VzbHkgY2hlY2sgdGhlIGNlcnRpZmljYXRlIHRvIGRlY2lkZSB3aGV0aGVy
IHRvIGlnbm9yZQorICAgICAgICB0aGUgZXJyb3JzIGFuZCBjb250aW51ZSBsb2FkaW5nIHRoZSBy
ZXNvdXJjZSBvciBmaW5pc2ggdGhlIGxvYWRpbmcKKyAgICAgICAgd2l0aCBhbiBlcnJvci4KKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpzZXRIb3N0QWxsb3dzQW55SFRUUFNDZXJ0
aWZpY2F0ZSk6IEFkZAorICAgICAgICB0aGUgZ2l2ZW4gaG9zdG5hbWUgdG8gdGhlIGxpc3Qgb2Yg
aG9zdHMgZm9yIHdoaWNoIFNTTCBlcnJvcnMgYXJlCisgICAgICAgIGlnbm9yZWQuIFVzZWQgYnkg
RFJUIHRvIGlnbm9yZSBTU0wgZXJyb3JzIGZvciBsb2NhbGhvc3Qgd2hlbgorICAgICAgICBydW5u
aW5nIGxheW91dCB0ZXN0cy4KKwogMjAxMi0wNi0yNyAgTWFyeSBXdSAgPG1hcnkud3VAdG9yY2ht
b2JpbGUuY29tLmNuPgogCiAgICAgICAgIFtCbGFja0JlcnJ5XSAwLWxlbmd0aCByZXNwb25zZSB3
aXRoIG5vIGNvbnRlbnQtdHlwZSBzaG91bGRuJ3QgZG93bmxvYWQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwppbmRl
eCBkNDZkMzFkLi5iYTM5YjMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIw
MTItMDYtMjkgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisg
ICAgICAgIFtTT1VQXSBIYW5kbGUgU1NMIGVycm9ycworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTAyNjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3Vw
cG9ydEVmbC5jcHA6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OnNldEhvc3RB
bGxvd3NBbnlIVFRQU0NlcnRpZmljYXRlKTogQ2FsbAorICAgICAgICBSZXNvdXJjZUhhbmRsZTo6
c2V0SG9zdEFsbG93c0FueUhUVFBTQ2VydGlmaWNhdGUoKSB3aXRoIHRoZSBnaXZlbgorICAgICAg
ICBob3N0bmFtZS4KKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBv
cnRFZmwuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hDaGVja1Rs
c0NlcnRpZmljYXRlKTogQWNjZXB0CisgICAgICAgIGFsbCBjZXJ0aWZpY2F0ZXMgYnkgZGVmYXVs
dC4KKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5oOgorCiAy
MDEyLTA2LTI3ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAog
ICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTIxMzk4LgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCmlu
ZGV4IDc1MDRkZDQuLjVlYzUxMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAor
MjAxMi0wNi0yOSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisK
KyAgICAgICAgW1NPVVBdIEhhbmRsZSBTU0wgZXJyb3JzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDI2NworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVT
dXBwb3J0R3RrLmNwcDoKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6c2V0SG9z
dEFsbG93c0FueUhUVFBTQ2VydGlmaWNhdGUpOiBDYWxsCisgICAgICAgIFJlc291cmNlSGFuZGxl
OjpzZXRIb3N0QWxsb3dzQW55SFRUUFNDZXJ0aWZpY2F0ZSgpIHdpdGggdGhlIGdpdmVuCisgICAg
ICAgIGhvc3RuYW1lLgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3Vw
cG9ydEd0ay5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3Rr
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoQ2hlY2tU
bHNDZXJ0aWZpY2F0ZSk6IEFjY2VwdAorICAgICAgICBhbGwgY2VydGlmaWNhdGVzIGJ5IGRlZmF1
bHQuCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaDoKKwog
MjAxMi0wNi0yNSAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgogCiAg
ICAgICAgIEpTTG9jayBzaG91bGQgYmUgcGVyLUpTR2xvYmFsRGF0YQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDc4
ZGQ5OTkuLmNlOGYzNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0wNi0yOSAg
Q2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW1NP
VVBdIEhhbmRsZSBTU0wgZXJyb3JzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD05MDI2NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRj
aENoZWNrVGxzQ2VydGlmaWNhdGUpOiBOb3QKKyAgICAgICAgeWV0IGltcGxlbWVudGVkLCBmb3Ig
bm93IGl0IGp1c3QgYWNjZXB0cyBhbGwgY2VydGlmaWNhdGVzIGZvcgorICAgICAgICBjb21wYXRp
YmlsaXR5IHdpdGggdGhlIGN1cnJlbnQgYmVoYXZpb3VyLiBUaGlzIHdpbGwgc2VuZCBhIG1lc3Nh
Z2UKKyAgICAgICAgdG8gdGhlIFVJIHByb2Nlc3MgdG8gaGFuZGxlIHRoZSBTU0wgZXJyb3JzLgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
aDoKKwogMjAxMi0wNi0yNyAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5j
b20+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gRml4IHRoZSBidWlsZCB3aXRob3V0IFRFWFRVUkVf
TUFQUEVSX0dMLgpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9n
CmluZGV4IDY4YmVlZDUuLmZhMzE5ZmMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysg
Yi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMi0wNi0yOSAgQ2FybG9zIEdh
cmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW1NPVVBdIEhhbmRs
ZSBTU0wgZXJyb3JzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD05MDI2NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIElnbm9yZSBTU0wgY2VydGlmaWNhdGUgZXJyb3JzIG9uIGxvY2FsaG9zdCBhbmQgMTI3LjAu
MC4xIHdoZW4KKyAgICAgICAgcnVubmluZyB0ZXN0cy4KKworICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL2VmbC9EdW1wUmVuZGVyVHJlZS5jcHA6CisgICAgICAgIChtYWluKToKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9ndGsvRHVtcFJlbmRlclRyZWUuY3BwOgorICAgICAgICAoc2V0RGVmYXVs
dHNUb0NvbnNpc3RlbnRTdGF0ZVZhbHVlc0ZvclRlc3RpbmcpOgorCiAyMDEyLTA2LTI3ICBTaGVy
aWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmll
d2VkLCByb2xsaW5nIG91dCByMTIxMzYzLCByMTIxMzY3LCByMTIxMzg0LCBhbmQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL2dvYmplY3QvR1JlZlB0ci5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9n
b2JqZWN0L0dSZWZQdHIuY3BwCmluZGV4IDNhMDE0ZGEuLjVhYTA2N2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL2dvYmplY3QvR1JlZlB0ci5jcHAKKysrIGIvU291cmNlL1dURi93dGYvZ29i
amVjdC9HUmVmUHRyLmNwcApAQCAtMTIwLDYgKzEyMCwxOSBAQCB0ZW1wbGF0ZSA8PiB2b2lkIGRl
cmVmR1B0cihHUHRyQXJyYXkqIHB0cikKICAgICAgICAgZ19wdHJfYXJyYXlfdW5yZWYocHRyKTsK
IH0KIAordGVtcGxhdGUgPD4gR0J5dGVBcnJheSogcmVmR1B0cihHQnl0ZUFycmF5KiBwdHIpCit7
CisgICAgaWYgKHB0cikKKyAgICAgICAgZ19ieXRlX2FycmF5X3JlZihwdHIpOworICAgIHJldHVy
biBwdHI7Cit9CisKK3RlbXBsYXRlIDw+IHZvaWQgZGVyZWZHUHRyKEdCeXRlQXJyYXkqIHB0cikK
K3sKKyAgICBpZiAocHRyKQorICAgICAgICBnX2J5dGVfYXJyYXlfdW5yZWYocHRyKTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV1RGCiAKICNlbmRpZiAvLyBFTkFCTEUoR0xJQl9TVVBQT1JUKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvZ29iamVjdC9HUmVmUHRyLmggYi9Tb3VyY2UvV1RGL3d0
Zi9nb2JqZWN0L0dSZWZQdHIuaAppbmRleCBmNGZmM2QxLi5kZjY4ODhjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9nb2JqZWN0L0dSZWZQdHIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9nb2Jq
ZWN0L0dSZWZQdHIuaApAQCAtMjEwLDYgKzIxMCw4IEBAIHRlbXBsYXRlIDw+IEdTb3VyY2UqIHJl
ZkdQdHIoR1NvdXJjZSogcHRyKTsKIHRlbXBsYXRlIDw+IHZvaWQgZGVyZWZHUHRyKEdTb3VyY2Uq
IHB0cik7CiB0ZW1wbGF0ZSA8PiBHUHRyQXJyYXkqIHJlZkdQdHIoR1B0ckFycmF5Kik7CiB0ZW1w
bGF0ZSA8PiB2b2lkIGRlcmVmR1B0cihHUHRyQXJyYXkqKTsKK3RlbXBsYXRlIDw+IEdCeXRlQXJy
YXkqIHJlZkdQdHIoR0J5dGVBcnJheSopOwordGVtcGxhdGUgPD4gdm9pZCBkZXJlZkdQdHIoR0J5
dGVBcnJheSopOwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW5saW5lIFQqIHJlZkdQdHIoVCog
cHRyKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvZ29iamVjdC9HVHlwZWRlZnMuaCBi
L1NvdXJjZS9XVEYvd3RmL2dvYmplY3QvR1R5cGVkZWZzLmgKaW5kZXggNzljMzNkMi4uMmVmYzA3
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvZ29iamVjdC9HVHlwZWRlZnMuaAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9nb2JqZWN0L0dUeXBlZGVmcy5oCkBAIC02NCw2ICs2NCw3IEBAIHR5cGVk
ZWYgdW5pb24gX0dka0V2ZW50IEdka0V2ZW50OwogdHlwZWRlZiBzdHJ1Y3QgX0dUaW1lciBHVGlt
ZXI7CiB0eXBlZGVmIHN0cnVjdCBfR0tleUZpbGUgR0tleUZpbGU7CiB0eXBlZGVmIHN0cnVjdCBf
R1B0ckFycmF5IEdQdHJBcnJheTsKK3R5cGVkZWYgc3RydWN0IF9HQnl0ZUFycmF5IEdCeXRlQXJy
YXk7CiAKICNpZiBVU0UoQ0FJUk8pCiB0eXBlZGVmIHN0cnVjdCBfY2Fpcm9fc3VyZmFjZSBjYWly
b19zdXJmYWNlX3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBi
L1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IGVhZTBhNzEuLjFiM2IyZWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0dOVW1ha2VmaWxlLmFtCkBAIC00NSw2ICs0NSw3IEBAIHdlYmNvcmVfY3BwZmxhZ3MgKz0g
XAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlIFwKIAktSSQoc3Jj
ZGlyKS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9pY29uIFwKKwktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
c291cCBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYkNvcmUvbWF0aG1sIFwKIAktSSQoc3JjZGly
KS9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDM1ZWMyZWMuLjBm
ZmM2YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysr
IGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMjkyNiw2ICsyOTI2LDkg
QEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3Vy
Y2VMb2FkZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVEYXRhLmggXAog
CVNvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaCBcCisJU291cmNlL1dl
YkNvcmUvbG9hZGVyL3NvdXAvUmVzb3VyY2VMb2FkZXJTb3VwLmNwcCBcCisJU291cmNlL1dlYkNv
cmUvbG9hZGVyL3NvdXAvU3VicmVzb3VyY2VMb2FkZXJTb3VwLmNwcCBcCisJU291cmNlL1dlYkNv
cmUvbG9hZGVyL3NvdXAvVGxzQ2VydGlmaWNhdGVDYWxsYmFjay5oIFwKIAlTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvVGV4dFJlc291cmNlRGVjb2Rlci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9UZXh0UmVzb3VyY2VEZWNvZGVyLmggXAogCVNvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRh
YmxlTG9hZGVyQ2xpZW50LmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1F
ZmwuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCAyMmFmMGU2
Li44ZTFjMWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtNSw2ICs1LDcgQEAgTElT
VChBUFBFTkQgV2ViQ29yZV9MSU5LX0ZMQUdTCiAKIExJU1QoQVBQRU5EIFdlYkNvcmVfSU5DTFVE
RV9ESVJFQ1RPUklFUwogICAiJHtXRUJDT1JFX0RJUn0vYWNjZXNzaWJpbGl0eS9lZmwiCisgICIk
e1dFQkNPUkVfRElSfS9sb2FkZXIvc291cCIKICAgIiR7V0VCQ09SRV9ESVJ9L3BhZ2UvZWZsIgog
ICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZWZsIgogICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZv
cm0vZ3JhcGhpY3MvZWZsIgpAQCAtMTksNiArMjAsOCBAQCBMSVNUKEFQUEVORCBXZWJDb3JlX0lO
Q0xVREVfRElSRUNUT1JJRVMKIExJU1QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICBhY2Nlc3Np
YmlsaXR5L2VmbC9BY2Nlc3NpYmlsaXR5T2JqZWN0RWZsLmNwcAogICBiaW5kaW5ncy9qcy9TY3Jp
cHRDb250cm9sbGVyRWZsLmNwcAorICBsb2FkZXIvc291cC9SZXNvdXJjZUxvYWRlclNvdXAuY3Bw
CisgIGxvYWRlci9zb3VwL1N1YnJlc291cmNlTG9hZGVyU291cC5jcHAKICAgcGFnZS9lZmwvRHJh
Z0NvbnRyb2xsZXJFZmwuY3BwCiAgIHBhZ2UvZWZsL0V2ZW50SGFuZGxlckVmbC5jcHAKICAgcGxh
dGZvcm0vQ3Vyc29yLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3Vt
ZW50TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAppbmRl
eCBiMGI1MGVhLi42OGE3NDBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIu
aApAQCAtNDQsNiArNDQsMTEgQEAKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgogCisjaWYgVVNFKFNPVVApCit0eXBlZGVmIF9HVGxzQ2VydGlmaWNhdGUg
R1Rsc0NlcnRpZmljYXRlOworI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KKyNlbmRp
ZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlSG9z
dDsKQEAgLTI0Miw2ICsyNDcsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIEFw
cGxpY2F0aW9uQ2FjaGVIb3N0KiBhcHBsaWNhdGlvbkNhY2hlSG9zdCgpIGNvbnN0IHsgcmV0dXJu
IG1fYXBwbGljYXRpb25DYWNoZUhvc3QuZ2V0KCk7IH0KIAorI2lmIFVTRShTT1VQKQorICAgICAg
ICBHVGxzQ2VydGlmaWNhdGUqIHRydXN0ZWRDZXJ0aWZpY2F0ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
dHJ1c3RlZENlcnRpZmljYXRlLmdldCgpOyB9CisgICAgICAgIHZvaWQgc2V0VHJ1c3RlZENlcnRp
ZmljYXRlKEdUbHNDZXJ0aWZpY2F0ZSogY2VydGlmaWNhdGUpIHsgbV90cnVzdGVkQ2VydGlmaWNh
dGUgPSBjZXJ0aWZpY2F0ZTsgfQorI2VuZGlmCisKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIERv
Y3VtZW50TG9hZGVyKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN1YnN0aXR1dGVEYXRh
Jik7CiAKQEAgLTM0Niw2ICszNTYsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAg
ZnJpZW5kIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OyAgLy8gZm9yIHN1YnN0aXR1dGUgcmVz
b3VyY2UgZGVsaXZlcnkKICAgICAgICAgT3duUHRyPEFwcGxpY2F0aW9uQ2FjaGVIb3N0PiBtX2Fw
cGxpY2F0aW9uQ2FjaGVIb3N0OworI2lmIFVTRShTT1VQKQorICAgICAgICBHUmVmUHRyPEdUbHND
ZXJ0aWZpY2F0ZT4gbV90cnVzdGVkQ2VydGlmaWNhdGU7CisjZW5kaWYKICAgICB9OwogCiAgICAg
aW5saW5lIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnJlY29yZE1lbW9yeUNhY2hlTG9hZEZvckZ1dHVy
ZUNsaWVudE5vdGlmaWNhdGlvbihjb25zdCBTdHJpbmcmIHVybCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9F
bXB0eUNsaWVudHMuaAppbmRleCA5NzlhNGFjLi5mODlhZDQ3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0VtcHR5Q2xpZW50cy5oCkBAIC0zODYsNiArMzg2LDEwIEBAIHB1YmxpYzoKICNpZiBFTkFCTEUo
V0VCX0lOVEVOVFMpCiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoSW50ZW50KFBhc3NSZWZQdHI8
SW50ZW50UmVxdWVzdD4pIE9WRVJSSURFOwogI2VuZGlmCisKKyNpZiBVU0UoU09VUCkKKyAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hDaGVja1Rsc0NlcnRpZmljYXRlKFJlc291cmNlTG9hZGVyKiwg
VGxzQ2VydGlmaWNhdGVEZWNpc2lvbkZ1bmN0aW9uLCBHVGxzQ2VydGlmaWNhdGVGbGFncywgR1Rs
c0NlcnRpZmljYXRlKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIHsgfQorI2VuZGlmCiB9Owog
CiBjbGFzcyBFbXB0eVRleHRDaGVja2VyQ2xpZW50IDogcHVibGljIFRleHRDaGVja2VyQ2xpZW50
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5o
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggYmU4MTAy
OC4uNWUxNzNiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgK
QEAgLTQ0LDYgKzQ0LDExIEBAIHR5cGVkZWYgdm9pZCogUmVtb3RlQVhPYmplY3RSZWY7CiAjZW5k
aWYKICNlbmRpZgogCisjaWYgVVNFKFNPVVApCisjaW5jbHVkZSAiVGxzQ2VydGlmaWNhdGVDYWxs
YmFjay5oIgorI2luY2x1ZGUgPGxpYnNvdXAvc291cC5oPgorI2VuZGlmCisKIHR5cGVkZWYgY2xh
c3MgX2pvYmplY3QqIGpvYmplY3Q7CiAKICNpZiBQTEFURk9STShNQUMpICYmICFkZWZpbmVkKF9f
T0JKQ19fKQpAQCAtMTAzLDYgKzEwOCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFz
cyBXaWRnZXQ7CiAKICAgICB0eXBlZGVmIHZvaWQgKFBvbGljeUNoZWNrZXI6OipGcmFtZVBvbGlj
eUZ1bmN0aW9uKShQb2xpY3lBY3Rpb24pOworI2lmIFVTRShTT1VQKQorICAgIHR5cGVkZWYgdm9p
ZCAoUmVzb3VyY2VMb2FkZXI6OipUbHNDZXJ0aWZpY2F0ZURlY2lzaW9uRnVuY3Rpb24pKFRsc0Nl
cnRpZmljYXRlRGVjaXNpb24pOworI2VuZGlmCiAKICAgICBjbGFzcyBGcmFtZUxvYWRlckNsaWVu
dCB7CiAgICAgcHVibGljOgpAQCAtMzQzLDYgKzM1MSwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxEaXNjb25uZWN0RE9NV2luZG93RXh0
ZW5zaW9uRnJvbUdsb2JhbE9iamVjdChET01XaW5kb3dFeHRlbnNpb24qKSB7IH0KICAgICAgICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9uVG9HbG9i
YWxPYmplY3QoRE9NV2luZG93RXh0ZW5zaW9uKikgeyB9CiAgICAgICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaFdpbGxEZXN0cm95R2xvYmFsT2JqZWN0Rm9yRE9NV2luZG93RXh0ZW5zaW9uKERPTVdp
bmRvd0V4dGVuc2lvbiopIHsgfQorCisjaWYgVVNFKFNPVVApCisgICAgICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaENoZWNrVGxzQ2VydGlmaWNhdGUoUmVzb3VyY2VMb2FkZXIqLCBUbHNDZXJ0aWZp
Y2F0ZURlY2lzaW9uRnVuY3Rpb24sIEdUbHNDZXJ0aWZpY2F0ZUZsYWdzLCBHVGxzQ2VydGlmaWNh
dGUqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgPSAwOworI2VuZGlmCiAgICAgfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jl
c291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaApp
bmRleCBmMmRkY2NjLi45Y2JlMzZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2Fk
ZXIuaApAQCAtMTM1LDYgKzEzNSw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNpZiBFTkFCTEUo
QkxPQikKICAgICAgICAgdmlydHVhbCBBc3luY0ZpbGVTdHJlYW0qIGNyZWF0ZUFzeW5jRmlsZVN0
cmVhbShGaWxlU3RyZWFtQ2xpZW50Kik7CiAjZW5kaWYKKyNpZiBVU0UoU09VUCkKKyAgICAgICAg
dmlydHVhbCB2b2lkIGNoZWNrVGxzQ2VydGlmaWNhdGUoR1Rsc0NlcnRpZmljYXRlRmxhZ3MsIEdU
bHNDZXJ0aWZpY2F0ZSosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBQYXNzUmVmUHRyPFRsc0Nl
cnRpZmljYXRlQ2FsbGJhY2s+KTsKKyNlbmRpZgogCiAgICAgICAgIGNvbnN0IEtVUkwmIHVybCgp
IGNvbnN0IHsgcmV0dXJuIG1fcmVxdWVzdC51cmwoKTsgfSAKICAgICAgICAgUmVzb3VyY2VIYW5k
bGUqIGhhbmRsZSgpIGNvbnN0IHsgcmV0dXJuIG1faGFuZGxlLmdldCgpOyB9CkBAIC0xNjMsMTAg
KzE2NiwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFJlZlB0cjxGcmFtZT4gbV9m
cmFtZTsKICAgICAgICAgUmVmUHRyPERvY3VtZW50TG9hZGVyPiBtX2RvY3VtZW50TG9hZGVyOwog
ICAgICAgICBSZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7Ci0gICAgICAgIAorCiAgICAgcHJp
dmF0ZToKICAgICAgICAgdmlydHVhbCB2b2lkIHdpbGxDYW5jZWwoY29uc3QgUmVzb3VyY2VFcnJv
ciYpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZENhbmNlbChjb25zdCBSZXNvdXJjZUVy
cm9yJikgPSAwOworI2lmIFVTRShTT1VQKQorICAgICAgICB2b2lkIGNvbnRpbnVlQWZ0ZXJDaGVj
a1Rsc0NlcnRpZmljYXRlKFRsc0NlcnRpZmljYXRlRGVjaXNpb24pOworI2VuZGlmCiAKICAgICAg
ICAgUmVzb3VyY2VSZXF1ZXN0IG1fcmVxdWVzdDsKICAgICAgICAgUmVzb3VyY2VSZXF1ZXN0IG1f
b3JpZ2luYWxSZXF1ZXN0OyAvLyBCZWZvcmUgcmVkaXJlY3RzLgpAQCAtMTgyLDYgKzE4OCw5IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBtX2RlZmVyc0xvYWRpbmc7CiAgICAg
ICAgIFJlc291cmNlUmVxdWVzdCBtX2RlZmVycmVkUmVxdWVzdDsKICAgICAgICAgUmVzb3VyY2VM
b2FkZXJPcHRpb25zIG1fb3B0aW9uczsKKyNpZiBVU0UoU09VUCkKKyAgICAgICAgUmVmUHRyPFRs
c0NlcnRpZmljYXRlQ2FsbGJhY2s+IG1fdGxzQ2VydGlmaWNhdGVDYWxsYmFjazsKKyNlbmRpZgog
ICAgIH07CiAKIGlubGluZSBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBSZXNvdXJjZUxvYWRlcjo6
cmVzcG9uc2UoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJl
c291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIu
aAppbmRleCA5ZjAwYmY0Li44N2Q4NGVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvU3VicmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVz
b3VyY2VMb2FkZXIuaApAQCAtNzEsNiArNzEsOSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9p
ZCBkaWREb3dubG9hZERhdGEoaW50KTsKICNlbmRpZgogICAgIHZpcnR1YWwgdm9pZCByZWxlYXNl
UmVzb3VyY2VzKCk7CisjaWYgVVNFKFNPVVApCisgICAgdmlydHVhbCB2b2lkIGNoZWNrVGxzQ2Vy
dGlmaWNhdGUoR1Rsc0NlcnRpZmljYXRlRmxhZ3MsIEdUbHNDZXJ0aWZpY2F0ZSosIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmLCBQYXNzUmVmUHRyPFRsc0NlcnRpZmljYXRlQ2FsbGJhY2s+KTsKKyNl
bmRpZgogCiAgICAgYm9vbCBjaGVja0ZvckhUVFBTdGF0dXNDb2RlRXJyb3IoKTsKICAgICB2b2lk
IHNlbmREYXRhVG9SZXNvdXJjZShjb25zdCBjaGFyKiwgaW50KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9zb3VwL1Jlc291cmNlTG9hZGVyU291cC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvc291cC9SZXNvdXJjZUxvYWRlclNvdXAuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjAyZGE0MTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvc291cC9SZXNvdXJjZUxvYWRlclNvdXAuY3BwCkBAIC0wLDAgKzEsNDYgQEAK
Ky8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDEyIElnYWxpYSBTLkwuCisgKgorICogIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAq
ICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVi
bGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICog
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCisgKiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqICBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0x
MzAxICBVU0EKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVzb3VyY2VM
b2FkZXIuaCIKKworI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCisjaW5jbHVkZSAiRnJhbWUu
aCIKKyNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgorI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBSZXNvdXJjZUxvYWRlcjo6Y2hlY2tU
bHNDZXJ0aWZpY2F0ZShHVGxzQ2VydGlmaWNhdGVGbGFncyBjZXJ0aWZpY2F0ZUZsYWdzLCBHVGxz
Q2VydGlmaWNhdGUqIGNlcnRpZmljYXRlLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSwgUGFzc1JlZlB0cjxUbHNDZXJ0aWZpY2F0ZUNhbGxiYWNrPiBjYWxsYmFjaykKK3sKKyAgICBB
U1NFUlQoIW1fdGxzQ2VydGlmaWNhdGVDYWxsYmFjayk7CisgICAgbV90bHNDZXJ0aWZpY2F0ZUNh
bGxiYWNrID0gY2FsbGJhY2s7CisgICAgZG9jdW1lbnRMb2FkZXIoKS0+c2V0VHJ1c3RlZENlcnRp
ZmljYXRlKGNlcnRpZmljYXRlKTsKKyAgICBtX2ZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCktPmRp
c3BhdGNoQ2hlY2tUbHNDZXJ0aWZpY2F0ZSh0aGlzLCAmUmVzb3VyY2VMb2FkZXI6OmNvbnRpbnVl
QWZ0ZXJDaGVja1Rsc0NlcnRpZmljYXRlLCBjZXJ0aWZpY2F0ZUZsYWdzLCBjZXJ0aWZpY2F0ZSwg
cmVzcG9uc2UpOworfQorCit2b2lkIFJlc291cmNlTG9hZGVyOjpjb250aW51ZUFmdGVyQ2hlY2tU
bHNDZXJ0aWZpY2F0ZShUbHNDZXJ0aWZpY2F0ZURlY2lzaW9uIGRlY2lzaW9uKQoreworICAgIEFT
U0VSVChtX3Rsc0NlcnRpZmljYXRlQ2FsbGJhY2spOworICAgIGlmIChkZWNpc2lvbiA9PSBUbHND
ZXJ0aWZpY2F0ZURlbnkpCisgICAgICAgIGRvY3VtZW50TG9hZGVyKCktPnNldFRydXN0ZWRDZXJ0
aWZpY2F0ZSgwKTsKKyAgICBtX3Rsc0NlcnRpZmljYXRlQ2FsbGJhY2stPnBlcmZvcm1DYWxsYmFj
ayhkZWNpc2lvbik7CisgICAgbV90bHNDZXJ0aWZpY2F0ZUNhbGxiYWNrID0gMDsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL3Nv
dXAvU3VicmVzb3VyY2VMb2FkZXJTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9zb3Vw
L1N1YnJlc291cmNlTG9hZGVyU291cC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uYWNmOGUwYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9z
b3VwL1N1YnJlc291cmNlTG9hZGVyU291cC5jcHAKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqICBD
b3B5cmlnaHQgKEMpIDIwMTIgSWdhbGlhIFMuTC4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK
KyAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoK
KyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdl
bmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90
LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy
YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTdWJyZXNvdXJjZUxvYWRlci5o
IgorCisjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9H
UmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIGJvb2wgdGxzQ2VydGlm
aWNhdGVFcXVhbChHVGxzQ2VydGlmaWNhdGUqIGNlcnRpZmljYXRlQSwgR1Rsc0NlcnRpZmljYXRl
KiBjZXJ0aWZpY2F0ZUIpCit7CisgICAgaWYgKCFjZXJ0aWZpY2F0ZUEgfHwgIWNlcnRpZmljYXRl
QikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKGNlcnRpZmljYXRlQSA9PSBjZXJ0
aWZpY2F0ZUIpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgR0J5dGVBcnJheSogY2VydGlm
aWNhdGVEYXRhID0gMDsKKyAgICBnX29iamVjdF9nZXQoR19PQkpFQ1QoY2VydGlmaWNhdGVBKSwg
ImNlcnRpZmljYXRlIiwgJmNlcnRpZmljYXRlRGF0YSwgTlVMTCk7CisgICAgaWYgKCFjZXJ0aWZp
Y2F0ZURhdGEpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBHUmVmUHRyPEdCeXRlQXJyYXk+
IGNlcnRpZmljYXRlRGF0YUEgPSBhZG9wdEdSZWYoY2VydGlmaWNhdGVEYXRhKTsKKworICAgIGNl
cnRpZmljYXRlRGF0YSA9IDA7CisgICAgZ19vYmplY3RfZ2V0KEdfT0JKRUNUKGNlcnRpZmljYXRl
QiksICJjZXJ0aWZpY2F0ZSIsICZjZXJ0aWZpY2F0ZURhdGEsIE5VTEwpOworICAgIGlmICghY2Vy
dGlmaWNhdGVEYXRhKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgR1JlZlB0cjxHQnl0ZUFy
cmF5PiBjZXJ0aWZpY2F0ZURhdGFCID0gYWRvcHRHUmVmKGNlcnRpZmljYXRlRGF0YSk7CisKKyAg
ICBpZiAoY2VydGlmaWNhdGVEYXRhQS0+bGVuICE9IGNlcnRpZmljYXRlRGF0YUItPmxlbikKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjZXJ0aWZp
Y2F0ZURhdGFBLT5sZW47IGkrKykKKyAgICAgICAgaWYgKGNlcnRpZmljYXRlRGF0YUEtPmRhdGFb
aV0gIT0gY2VydGlmaWNhdGVEYXRhQi0+ZGF0YVtpXSkKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpjaGVj
a1Rsc0NlcnRpZmljYXRlKEdUbHNDZXJ0aWZpY2F0ZUZsYWdzIGNlcnRpZmljYXRlRmxhZ3MsIEdU
bHNDZXJ0aWZpY2F0ZSogY2VydGlmaWNhdGUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlLCBQYXNzUmVmUHRyPFRsc0NlcnRpZmljYXRlQ2FsbGJhY2s+IGNhbGxiYWNrKQoreworICAg
IGlmICh0bHNDZXJ0aWZpY2F0ZUVxdWFsKGNlcnRpZmljYXRlLCBkb2N1bWVudExvYWRlcigpLT50
cnVzdGVkQ2VydGlmaWNhdGUoKSkpCisgICAgICAgIGNhbGxiYWNrLT5wZXJmb3JtQ2FsbGJhY2so
VGxzQ2VydGlmaWNhdGVBY2NlcHQpOworICAgIGVsc2UKKyAgICAgICAgY2FsbGJhY2stPnBlcmZv
cm1DYWxsYmFjayhUbHNDZXJ0aWZpY2F0ZURlbnkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvc291cC9UbHNDZXJ0aWZpY2F0
ZUNhbGxiYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvc291cC9UbHNDZXJ0aWZpY2F0ZUNh
bGxiYWNrLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTg5M2ZmZQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9zb3VwL1Rsc0NlcnRpZmljYXRl
Q2FsbGJhY2suaApAQCAtMCwwICsxLDg0IEBACisvKgorICogIENvcHlyaWdodCAoQykgMjAxMiBJ
Z2FsaWEgUy5MLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAq
CisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExlc3NlciBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBM
aWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVl
IFNvZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0
aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKworI2lmbmRlZiBUbHND
ZXJ0aWZpY2F0ZUNhbGxiYWNrX2gKKyNkZWZpbmUgVGxzQ2VydGlmaWNhdGVDYWxsYmFja19oCisK
KyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgor
I2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitlbnVtIFRsc0NlcnRpZmljYXRlRGVjaXNpb24gewor
ICAgIFRsc0NlcnRpZmljYXRlQWNjZXB0LAorICAgIFRsc0NlcnRpZmljYXRlRGVueQorfTsKKwor
Y2xhc3MgVGxzQ2VydGlmaWNhdGVDYWxsYmFjayA6IHB1YmxpYyBSZWZDb3VudGVkPFRsc0NlcnRp
ZmljYXRlQ2FsbGJhY2s+IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIHZvaWQgKCpDYWxsYmFja0Z1
bmN0aW9uKShUbHNDZXJ0aWZpY2F0ZURlY2lzaW9uLCB2b2lkKik7CisKKyAgICBzdGF0aWMgUGFz
c1JlZlB0cjxUbHNDZXJ0aWZpY2F0ZUNhbGxiYWNrPiBjcmVhdGUodm9pZCogY29udGV4dCwgQ2Fs
bGJhY2tGdW5jdGlvbiBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgVGxzQ2VydGlmaWNhdGVDYWxsYmFjayhjb250ZXh0LCBjYWxsYmFjaykpOworICAgIH0KKwor
ICAgIHZpcnR1YWwgflRsc0NlcnRpZmljYXRlQ2FsbGJhY2soKQorICAgIHsKKyAgICB9CisKKyAg
ICB1aW50NjRfdCBjYWxsYmFja0lEKCkgY29uc3QgeyByZXR1cm4gbV9jYWxsYmFja0lEOyB9CisK
KyAgICB2b2lkIHBlcmZvcm1DYWxsYmFjayhUbHNDZXJ0aWZpY2F0ZURlY2lzaW9uIGRlY2lzaW9u
KQorICAgIHsKKyAgICAgICAgaWYgKCFtX2NhbGxiYWNrKQorICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICBtX2NhbGxiYWNrKGRlY2lzaW9uLCBtX2NvbnRleHQpOworICAgICAgICBtX2NhbGxi
YWNrID0gMDsKKyAgICB9CisKKyAgICB2b2lkIGludmFsaWRhdGUoKQorICAgIHsKKyAgICAgICAg
bV9jYWxsYmFjayA9IDA7CisgICAgfQorCitwcml2YXRlOgorICAgIFRsc0NlcnRpZmljYXRlQ2Fs
bGJhY2sodm9pZCogY29udGV4dCwgQ2FsbGJhY2tGdW5jdGlvbiBjYWxsYmFjaykKKyAgICAgICAg
OiBtX2NvbnRleHQoY29udGV4dCkKKyAgICAgICAgLCBtX2NhbGxiYWNrSUQoZ2VuZXJhdGVDYWxs
YmFja0lEKCkpCisgICAgICAgICwgbV9jYWxsYmFjayhjYWxsYmFjaykKKyAgICB7CisgICAgICAg
IEFTU0VSVChtX2NhbGxiYWNrKTsKKyAgICB9CisKKyAgICBzdGF0aWMgdWludDY0X3QgZ2VuZXJh
dGVDYWxsYmFja0lEKCkKKyAgICB7CisgICAgICAgIHN0YXRpYyB1aW50NjRfdCB1bmlxdWVDYWxs
YmFja0lEID0gMTsKKyAgICAgICAgcmV0dXJuIHVuaXF1ZUNhbGxiYWNrSUQrKzsKKyAgICB9CisK
KyAgICB2b2lkKiBtX2NvbnRleHQ7CisgICAgdWludDY0X3QgbV9jYWxsYmFja0lEOworICAgIENh
bGxiYWNrRnVuY3Rpb24gbV9jYWxsYmFjazsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlSGFuZGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
SGFuZGxlLmgKaW5kZXggZGRjYTBkMi4uMGY1YWE0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaApAQCAtMTY4LDYgKzE2OCw3IEBAIHB1
YmxpYzoKIAogI2lmIFVTRShTT1VQKQogICAgIHN0YXRpYyBTb3VwU2Vzc2lvbiogZGVmYXVsdFNl
c3Npb24oKTsKKyAgICBzdGF0aWMgdm9pZCBzZXRIb3N0QWxsb3dzQW55SFRUUFNDZXJ0aWZpY2F0
ZShjb25zdCBTdHJpbmcmKTsKICNlbmRpZgogCiAgICAgLy8gVXNlZCB0byB3b3JrIGFyb3VuZCB0
aGUgZmFjdCB0aGF0IHlvdSBkb24ndCBnZXQgYW55IG1vcmUgTlNVUkxDb25uZWN0aW9uIGNhbGxi
YWNrcyB1bnRpbCB5b3UgcmV0dXJuIGZyb20gdGhlIG9uZSB5b3UncmUgaW4uCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmgK
aW5kZXggYmVmYmNjZi4uYTBkNzg3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaApAQCAtMzksNiArMzksMTEgQEAK
ICNpbmNsdWRlIDxDb25kaXRpb25hbE1hY3Jvcy5oPgogI2VuZGlmCiAKKyNpZiBVU0UoU09VUCkK
KyNpbmNsdWRlICJUbHNDZXJ0aWZpY2F0ZUNhbGxiYWNrLmgiCisjaW5jbHVkZSA8bGlic291cC9z
b3VwLmg+CisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKE1BQykKIE9CSkNfQ0xBU1MgTlNDYWNoZWRV
UkxSZXNwb25zZTsKICNlbmRpZgpAQCAtMTA5LDYgKzExNCw5IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICNpZiBFTkFCTEUoQkxPQikKICAgICAgICAgdmlydHVhbCBBc3luY0ZpbGVTdHJlYW0qIGNy
ZWF0ZUFzeW5jRmlsZVN0cmVhbShGaWxlU3RyZWFtQ2xpZW50KikgeyByZXR1cm4gMDsgfQogI2Vu
ZGlmCisjaWYgVVNFKFNPVVApCisgICAgICAgIHZpcnR1YWwgdm9pZCBjaGVja1Rsc0NlcnRpZmlj
YXRlKEdUbHNDZXJ0aWZpY2F0ZUZsYWdzLCBHVGxzQ2VydGlmaWNhdGUqLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiwgUGFzc1JlZlB0cjxUbHNDZXJ0aWZpY2F0ZUNhbGxiYWNrPiBjYWxsYmFjaykg
eyBjYWxsYmFjay0+cGVyZm9ybUNhbGxiYWNrKFRsc0NlcnRpZmljYXRlRGVueSk7ICB9CisjZW5k
aWYKICAgICB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwCmluZGV4IDEwYzZmYTkuLmRiMjE3
NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNv
dXJjZUhhbmRsZVNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
c291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwCkBAIC00OSw2ICs0OSw3IEBACiAjaW5jbHVkZSA8
ZmNudGwuaD4KICNpbmNsdWRlIDxnaW8vZ2lvLmg+CiAjaW5jbHVkZSA8Z2xpYi5oPgorI2luY2x1
ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CiAjZGVmaW5lIExJQlNPVVBfVVNFX1VOU1RBQkxFX1JFUVVF
U1RfQVBJCiAjaW5jbHVkZSA8bGlic291cC9zb3VwLXJlcXVlc3QtaHR0cC5oPgogI2luY2x1ZGUg
PGxpYnNvdXAvc291cC1yZXF1ZXN0ZXIuaD4KQEAgLTE2OCw2ICsxNjksMTIgQEAgc3RhdGljIGJv
b2wgc3RhcnROb25IVFRQUmVxdWVzdChSZXNvdXJjZUhhbmRsZSosIEtVUkwpOwogc3RhdGljIGlu
dCAgbWlsaXNlY29uZHNTaW5jZVJlcXVlc3QoZG91YmxlIHJlcXVlc3RUaW1lKTsKICNlbmRpZgog
CitzdGF0aWMgSGFzaFNldDxTdHJpbmc+JiBhbGxvd3NBbnlIVFRQU0NlcnRpZmljYXRlSG9zdHMo
KQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoSGFzaFNldDxTdHJpbmc+LCBob3N0cywgKCkp
OworICAgIHJldHVybiBob3N0czsKK30KKwogUmVzb3VyY2VIYW5kbGVJbnRlcm5hbDo6flJlc291
cmNlSGFuZGxlSW50ZXJuYWwoKQogewogfQpAQCAtMzQ4LDYgKzM1NSw0NiBAQCBzdGF0aWMgUmVz
b3VyY2VFcnJvciBjb252ZXJ0U291cEVycm9yVG9SZXNvdXJjZUVycm9yKEdFcnJvciogZXJyb3Is
IFNvdXBSZXF1ZXN0KgogICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZzo6ZnJvbVVURjgo
ZXJyb3ItPm1lc3NhZ2UpKTsKIH0KIAorc3RhdGljIHZvaWQgY29udGludWVMb2FkaW5nUmVzb3Vy
Y2UoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSkKK3sKKyAgICBSZXNvdXJjZUhhbmRsZUludGVybmFs
KiBkID0gaGFuZGxlLT5nZXRJbnRlcm5hbCgpOworICAgIFJlc291cmNlSGFuZGxlQ2xpZW50KiBj
bGllbnQgPSBoYW5kbGUtPmNsaWVudCgpOworCisgICAgY2xpZW50LT5kaWRSZWNlaXZlUmVzcG9u
c2UoaGFuZGxlLCBkLT5tX3Jlc3BvbnNlKTsKKworICAgIGlmIChkLT5tX2NhbmNlbGxlZCkgewor
ICAgICAgICBjbGVhbnVwU291cFJlcXVlc3RPcGVyYXRpb24oaGFuZGxlKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIGdfaW5wdXRfc3RyZWFtX3JlYWRfYXN5bmMoZC0+bV9pbnB1dFN0
cmVhbS5nZXQoKSwgZC0+bV9idWZmZXIsIFJFQURfQlVGRkVSX1NJWkUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHX1BSSU9SSVRZX0RFRkFVTFQsIGQtPm1fY2FuY2VsbGFibGUuZ2V0
KCksIHJlYWRDYWxsYmFjaywgaGFuZGxlKTsKK30KKworc3RhdGljIHZvaWQgdGxzQ2VydGlmaWNh
dGVDYWxsYmFjayhUbHNDZXJ0aWZpY2F0ZURlY2lzaW9uIGRlY2lzaW9uLCB2b2lkKiBjb250ZXh0
KQoreworICAgIFJlZlB0cjxSZXNvdXJjZUhhbmRsZT4gaGFuZGxlID0gc3RhdGljX2Nhc3Q8UmVz
b3VyY2VIYW5kbGUqPihjb250ZXh0KTsKKyAgICBSZXNvdXJjZUhhbmRsZUludGVybmFsKiBkID0g
aGFuZGxlLT5nZXRJbnRlcm5hbCgpOworICAgIFJlc291cmNlSGFuZGxlQ2xpZW50KiBjbGllbnQg
PSBoYW5kbGUtPmNsaWVudCgpOworICAgIGlmIChkLT5tX2NhbmNlbGxlZCB8fCAhY2xpZW50KSB7
CisgICAgICAgIGNsZWFudXBTb3VwUmVxdWVzdE9wZXJhdGlvbihoYW5kbGUuZ2V0KCkpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgc3dpdGNoIChkZWNpc2lvbikgeworICAgIGNhc2Ug
VGxzQ2VydGlmaWNhdGVBY2NlcHQ6CisgICAgICAgIGNvbnRpbnVlTG9hZGluZ1Jlc291cmNlKGhh
bmRsZS5nZXQoKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVGxzQ2VydGlmaWNhdGVEZW55
OiB7CisgICAgICAgIEdPd25QdHI8Y2hhcj4gdXJpKHNvdXBfdXJpX3RvX3N0cmluZyhzb3VwX3Jl
cXVlc3RfZ2V0X3VyaShkLT5tX3NvdXBSZXF1ZXN0LmdldCgpKSwgRkFMU0UpKTsKKyAgICAgICAg
Y2xpZW50LT5kaWRGYWlsKGhhbmRsZS5nZXQoKSwgUmVzb3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0
cmluZyhTT1VQX0hUVFBfRVJST1IpLCBTT1VQX1NUQVRVU19TU0xfRkFJTEVELAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVyaS5nZXQoKSwgU3Ry
aW5nOjpmcm9tVVRGOChfKCJVbmFjY2VwdGFibGUgVExTIGNlcnRpZmljYXRlIikpKSk7CisgICAg
ICAgIGNsZWFudXBTb3VwUmVxdWVzdE9wZXJhdGlvbihoYW5kbGUuZ2V0KCkpOworICAgICAgICBi
cmVhazsKKyAgICB9CisgICAgfQorfQorCiBzdGF0aWMgdm9pZCBzZW5kUmVxdWVzdENhbGxiYWNr
KEdPYmplY3QqIHNvdXJjZSwgR0FzeW5jUmVzdWx0KiByZXMsIGdwb2ludGVyIGRhdGEpCiB7CiAg
ICAgUmVmUHRyPFJlc291cmNlSGFuZGxlPiBoYW5kbGUgPSBzdGF0aWNfY2FzdDxSZXNvdXJjZUhh
bmRsZSo+KGRhdGEpOwpAQCAtMzgzLDYgKzQzMCwyMSBAQCBzdGF0aWMgdm9pZCBzZW5kUmVxdWVz
dENhbGxiYWNrKEdPYmplY3QqIHNvdXJjZSwgR0FzeW5jUmVzdWx0KiByZXMsIGdwb2ludGVyIGRh
dAogICAgICAgICAgICAgZC0+bV9yZXNwb25zZS5zZXRTbmlmZmVkQ29udGVudFR5cGUoc25pZmZl
ZFR5cGUpOwogICAgICAgICB9CiAgICAgICAgIGQtPm1fcmVzcG9uc2UudXBkYXRlRnJvbVNvdXBN
ZXNzYWdlKHNvdXBNZXNzYWdlKTsKKworICAgICAgICBpZiAoIWFsbG93c0FueUhUVFBTQ2VydGlm
aWNhdGVIb3N0cygpLmNvbnRhaW5zKGhhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkudXJsKCkuaG9zdCgp
Lmxvd2VyKCkpKSB7CisgICAgICAgICAgICBHVGxzQ2VydGlmaWNhdGVGbGFncyBjZXJ0aWZpY2F0
ZUZsYWdzOworICAgICAgICAgICAgZ19vYmplY3RfZ2V0KEdfT0JKRUNUKHNvdXBNZXNzYWdlKSwg
InRscy1lcnJvcnMiLCAmY2VydGlmaWNhdGVGbGFncywgTlVMTCk7CisKKyAgICAgICAgICAgIGlm
IChjZXJ0aWZpY2F0ZUZsYWdzICYgR19UTFNfQ0VSVElGSUNBVEVfVkFMSURBVEVfQUxMKSB7Cisg
ICAgICAgICAgICAgICAgR1Rsc0NlcnRpZmljYXRlKiBjZXJ0aWZpY2F0ZTsKKyAgICAgICAgICAg
ICAgICBnX29iamVjdF9nZXQoR19PQkpFQ1Qoc291cE1lc3NhZ2UpLCAidGxzLWNlcnRpZmljYXRl
IiwgJmNlcnRpZmljYXRlLCBOVUxMKTsKKworICAgICAgICAgICAgICAgIFJlZlB0cjxUbHNDZXJ0
aWZpY2F0ZUNhbGxiYWNrPiBjYWxsYmFjayA9IFRsc0NlcnRpZmljYXRlQ2FsbGJhY2s6OmNyZWF0
ZShoYW5kbGUuZ2V0KCksIHRsc0NlcnRpZmljYXRlQ2FsbGJhY2spOworICAgICAgICAgICAgICAg
IGNsaWVudC0+Y2hlY2tUbHNDZXJ0aWZpY2F0ZShjZXJ0aWZpY2F0ZUZsYWdzLCBjZXJ0aWZpY2F0
ZSwgZC0+bV9yZXNwb25zZSwgY2FsbGJhY2suZ2V0KCkpOworICAgICAgICAgICAgICAgIGdfb2Jq
ZWN0X3VucmVmKGNlcnRpZmljYXRlKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBkLT5tX3Jlc3BvbnNlLnNl
dFVSTChoYW5kbGUtPmZpcnN0UmVxdWVzdCgpLnVybCgpKTsKICAgICAgICAgY29uc3QgZ2NoYXIq
IGNvbnRlbnRUeXBlID0gc291cF9yZXF1ZXN0X2dldF9jb250ZW50X3R5cGUoZC0+bV9zb3VwUmVx
dWVzdC5nZXQoKSk7CkBAIC0zOTEsMTUgKzQ1Myw3IEBAIHN0YXRpYyB2b2lkIHNlbmRSZXF1ZXN0
Q2FsbGJhY2soR09iamVjdCogc291cmNlLCBHQXN5bmNSZXN1bHQqIHJlcywgZ3BvaW50ZXIgZGF0
CiAgICAgICAgIGQtPm1fcmVzcG9uc2Uuc2V0RXhwZWN0ZWRDb250ZW50TGVuZ3RoKHNvdXBfcmVx
dWVzdF9nZXRfY29udGVudF9sZW5ndGgoZC0+bV9zb3VwUmVxdWVzdC5nZXQoKSkpOwogICAgIH0K
IAotICAgIGNsaWVudC0+ZGlkUmVjZWl2ZVJlc3BvbnNlKGhhbmRsZS5nZXQoKSwgZC0+bV9yZXNw
b25zZSk7Ci0KLSAgICBpZiAoZC0+bV9jYW5jZWxsZWQpIHsKLSAgICAgICAgY2xlYW51cFNvdXBS
ZXF1ZXN0T3BlcmF0aW9uKGhhbmRsZS5nZXQoKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBnX2lucHV0X3N0cmVhbV9yZWFkX2FzeW5jKGQtPm1faW5wdXRTdHJlYW0uZ2V0KCksIGQt
Pm1fYnVmZmVyLCBSRUFEX0JVRkZFUl9TSVpFLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR19QUklPUklUWV9ERUZBVUxULCBkLT5tX2NhbmNlbGxhYmxlLmdldCgpLCByZWFkQ2FsbGJh
Y2ssIGhhbmRsZS5nZXQoKSk7CisgICAgY29udGludWVMb2FkaW5nUmVzb3VyY2UoaGFuZGxlLmdl
dCgpKTsKIH0KIAogc3RhdGljIGJvb2wgYWRkRmlsZVRvU291cE1lc3NhZ2VCb2R5KFNvdXBNZXNz
YWdlKiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGZpbGVOYW1lU3RyaW5nLCBzaXplX3Qgb2Zmc2V0
LCBzaXplX3QgbGVuZ3RoVG9TZW5kLCB1bnNpZ25lZCBsb25nJiB0b3RhbEJvZHlTaXplKQpAQCAt
NzM4LDYgKzc5MiwxMSBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpjYW5jZWwoKQogICAgICAgICBn
X2NhbmNlbGxhYmxlX2NhbmNlbChkLT5tX2NhbmNlbGxhYmxlLmdldCgpKTsKIH0KIAordm9pZCBS
ZXNvdXJjZUhhbmRsZTo6c2V0SG9zdEFsbG93c0FueUhUVFBTQ2VydGlmaWNhdGUoY29uc3QgU3Ry
aW5nJiBob3N0KQoreworICAgIGFsbG93c0FueUhUVFBTQ2VydGlmaWNhdGVIb3N0cygpLmFkZCho
b3N0Lmxvd2VyKCkpOworfQorCiBzdGF0aWMgYm9vbCBoYXNCZWVuU2VudChSZXNvdXJjZUhhbmRs
ZSogaGFuZGxlKQogewogICAgIFJlc291cmNlSGFuZGxlSW50ZXJuYWwqIGQgPSBoYW5kbGUtPmdl
dEludGVybmFsKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9y
dC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29y
ZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcAppbmRleCBmZTFmNzBkLi5jZWU5
OGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVu
ZGVyVHJlZVN1cHBvcnRFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBw
b3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHAKQEAgLTY1NSw2ICs2NTUsMTEgQEAgdm9p
ZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OnNldFNlcmlhbGl6ZUhUVFBMb2Fkcyhib29sIGVu
YWJsZWQpCiAgICAgV2ViQ29yZTo6cmVzb3VyY2VMb2FkU2NoZWR1bGVyKCktPnNldFNlcmlhbExv
YWRpbmdFbmFibGVkKGVuYWJsZWQpOwogfQogCit2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0
azo6c2V0SG9zdEFsbG93c0FueUhUVFBTQ2VydGlmaWNhdGUoY29uc3QgY2hhciogaG9zdG5hbWUp
Cit7CisgICAgUmVzb3VyY2VIYW5kbGU6OnNldEhvc3RBbGxvd3NBbnlIVFRQU0NlcnRpZmljYXRl
KFN0cmluZzo6ZnJvbVVURjgoaG9zdG5hbWUpKTsKK30KKwogdm9pZCBEdW1wUmVuZGVyVHJlZVN1
cHBvcnRFZmw6OnNlbmRXZWJJbnRlbnRSZXNwb25zZShFd2tfSW50ZW50X1JlcXVlc3QqIHJlcXVl
c3QsIEpTU3RyaW5nUmVmIHJlc3BvbnNlKQogewogI2lmIEVOQUJMRShXRUJfSU5URU5UUykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVl
U3VwcG9ydEVmbC5oIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRl
clRyZWVTdXBwb3J0RWZsLmgKaW5kZXggZTliYTdlOC4uZWI2ZjhjYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmgK
KysrIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBw
b3J0RWZsLmgKQEAgLTEwOSw2ICsxMDksOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgc2V0
QXV0aG9yQW5kVXNlclN0eWxlc0VuYWJsZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGJvb2wpOwog
ICAgIHN0YXRpYyB2b2lkIHNldERvbWFpblJlbGF4YXRpb25Gb3JiaWRkZW5Gb3JVUkxTY2hlbWUo
Ym9vbCBmb3JiaWRkZW4sIGNvbnN0IFN0cmluZyYgc2NoZW1lKTsKICAgICBzdGF0aWMgdm9pZCBz
ZXRTZXJpYWxpemVIVFRQTG9hZHMoYm9vbCk7CisKKyAgICBzdGF0aWMgdm9pZCBzZXRIb3N0QWxs
b3dzQW55SFRUUFNDZXJ0aWZpY2F0ZShjb25zdCBjaGFyKiBob3N0bmFtZSk7CiAgICAgCiAgICAg
Ly8gV2ViIEludGVudHMKICAgICBzdGF0aWMgdm9pZCBzZW5kV2ViSW50ZW50UmVzcG9uc2UoRXdr
X0ludGVudF9SZXF1ZXN0KiwgSlNTdHJpbmdSZWYgcmVzcG9uc2UpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwIGIv
U291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3Bw
CmluZGV4IDUwNzJkZTIuLmFkZGQ0OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dl
YkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHAKQEAgLTEwNzEsNCAr
MTA3MSw5IEBAIFBhc3NSZWZQdHI8RnJhbWVOZXR3b3JraW5nQ29udGV4dD4gRnJhbWVMb2FkZXJD
bGllbnRFZmw6OmNyZWF0ZU5ldHdvcmtpbmdDb250ZXh0CiAgICAgcmV0dXJuIEZyYW1lTmV0d29y
a2luZ0NvbnRleHRFZmw6OmNyZWF0ZShFV0tQcml2YXRlOjpjb3JlRnJhbWUobV9mcmFtZSksIG1f
ZnJhbWUpOwogfQogCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaENoZWNrVGxzQ2Vy
dGlmaWNhdGUoUmVzb3VyY2VMb2FkZXIqIHJlc291cmNlTG9hZGVyLCBUbHNDZXJ0aWZpY2F0ZURl
Y2lzaW9uRnVuY3Rpb24gZGVjaXNpb25GdW5jdGlvbiwgR1Rsc0NlcnRpZmljYXRlRmxhZ3MsIEdU
bHNDZXJ0aWZpY2F0ZSosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKQoreworICAgIChyZXNvdXJj
ZUxvYWRlci0+KmRlY2lzaW9uRnVuY3Rpb24pKFRsc0NlcnRpZmljYXRlQWNjZXB0KTsKK30KKwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRFZmwuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9h
ZGVyQ2xpZW50RWZsLmgKaW5kZXggNjNkOGE0NC4uNWQ5NWY0NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuaAorKysgYi9T
b3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5oCkBA
IC0yMTAsNiArMjEwLDggQEAgY2xhc3MgRnJhbWVMb2FkZXJDbGllbnRFZmwgOiBwdWJsaWMgRnJh
bWVMb2FkZXJDbGllbnQgewogICAgIHZpcnR1YWwgdm9pZCBkb3dubG9hZChSZXNvdXJjZUhhbmRs
ZSosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKIAog
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpGcmFtZU5ldHdvcmtpbmdDb250ZXh0PiBj
cmVhdGVOZXR3b3JraW5nQ29udGV4dCgpOworCisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoQ2hl
Y2tUbHNDZXJ0aWZpY2F0ZShSZXNvdXJjZUxvYWRlciosIFRsc0NlcnRpZmljYXRlRGVjaXNpb25G
dW5jdGlvbiwgR1Rsc0NlcnRpZmljYXRlRmxhZ3MsIEdUbHNDZXJ0aWZpY2F0ZSosIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmKTsKICBwcml2YXRlOgogICAgIEV2YXNfT2JqZWN0ICptX3ZpZXc7CiAg
ICAgRXZhc19PYmplY3QgKm1fZnJhbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9X
ZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwIGIvU291cmNlL1dlYktp
dC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNwcAppbmRleCA5
ZWI4NjcxLi4yNjYwMGU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3Vw
cG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3Rr
L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHAKQEAgLTkwMiwzICs5
MDIsOCBAQCB2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6cmVzZXRUcmFja2VkUmVwYWlu
dHMoV2ViS2l0V2ViRnJhbWUqIGZyYW1lKQogICAgIGlmIChjb3JlRnJhbWUgJiYgY29yZUZyYW1l
LT52aWV3KCkpCiAgICAgICAgIGNvcmVGcmFtZS0+dmlldygpLT5yZXNldFRyYWNrZWRSZXBhaW50
cygpOwogfQorCit2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6c2V0SG9zdEFsbG93c0Fu
eUhUVFBTQ2VydGlmaWNhdGUoY29uc3QgY2hhciogaG9zdG5hbWUpCit7CisgICAgUmVzb3VyY2VI
YW5kbGU6OnNldEhvc3RBbGxvd3NBbnlIVFRQU0NlcnRpZmljYXRlKFN0cmluZzo6ZnJvbVVURjgo
aG9zdG5hbWUpKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBw
b3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5oIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29y
ZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmgKaW5kZXggNzk4MzJmYS4uYTEyMmI4
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRl
clRyZWVTdXBwb3J0R3RrLmgKKysrIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQv
RHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmgKQEAgLTEzMiw2ICsxMzIsOCBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIEdTTGlzdCogdHJhY2tlZFJlcGFpbnRSZWN0cyhXZWJLaXRXZWJGcmFtZSopOwog
ICAgIHN0YXRpYyB2b2lkIHJlc2V0VHJhY2tlZFJlcGFpbnRzKFdlYktpdFdlYkZyYW1lKik7CiAK
KyAgICBzdGF0aWMgdm9pZCBzZXRIb3N0QWxsb3dzQW55SFRUUFNDZXJ0aWZpY2F0ZShjb25zdCBj
aGFyKiBob3N0bmFtZSk7CisKIHByaXZhdGU6CiAgICAgc3RhdGljIGJvb2wgc19kcnRSdW47CiAg
ICAgc3RhdGljIGJvb2wgc19saW5rc0luY2x1ZGVkSW5UYWJDaGFpbjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcCBi
L1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNw
cAppbmRleCA3ZjZjOTRmLi4yODA4MDc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9X
ZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCkBAIC0xMjU2LDQg
KzEyNTYsOSBAQCBQYXNzUmVmUHRyPEZyYW1lTmV0d29ya2luZ0NvbnRleHQ+IEZyYW1lTG9hZGVy
Q2xpZW50OjpjcmVhdGVOZXR3b3JraW5nQ29udGV4dCgpCiAgICAgcmV0dXJuIEZyYW1lTmV0d29y
a2luZ0NvbnRleHRHdGs6OmNyZWF0ZShjb3JlKG1fZnJhbWUpKTsKIH0KIAordm9pZCBGcmFtZUxv
YWRlckNsaWVudDo6ZGlzcGF0Y2hDaGVja1Rsc0NlcnRpZmljYXRlKFJlc291cmNlTG9hZGVyKiBy
ZXNvdXJjZUxvYWRlciwgVGxzQ2VydGlmaWNhdGVEZWNpc2lvbkZ1bmN0aW9uIGRlY2lzaW9uRnVu
Y3Rpb24sIEdUbHNDZXJ0aWZpY2F0ZUZsYWdzLCBHVGxzQ2VydGlmaWNhdGUqLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJikKK3sKKyAgICAocmVzb3VyY2VMb2FkZXItPipkZWNpc2lv
bkZ1bmN0aW9uKShUbHNDZXJ0aWZpY2F0ZUFjY2VwdCk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmggYi9T
b3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oCmlu
ZGV4IDY4NWM5M2MuLjc2MjExZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNv
cmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmgKKysrIGIvU291cmNlL1dlYktpdC9ndGsv
V2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaApAQCAtMTg4LDYgKzE4OCw4IEBA
IG5hbWVzcGFjZSBXZWJLaXQgewogCiAgICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3Jl
OjpGcmFtZU5ldHdvcmtpbmdDb250ZXh0PiBjcmVhdGVOZXR3b3JraW5nQ29udGV4dCgpOwogCisg
ICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaENoZWNrVGxzQ2VydGlmaWNhdGUoV2ViQ29yZTo6
UmVzb3VyY2VMb2FkZXIqLCBXZWJDb3JlOjpUbHNDZXJ0aWZpY2F0ZURlY2lzaW9uRnVuY3Rpb24s
IEdUbHNDZXJ0aWZpY2F0ZUZsYWdzLCBHVGxzQ2VydGlmaWNhdGUqLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJik7CisKICAgICBwcml2YXRlOgogICAgICAgICBXZWJLaXRXZWJGcmFt
ZSogbV9mcmFtZTsKICAgICAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCA5YTdkMjkzLi4xNzY1MDY0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtMTYyMSw2ICsxNjIxLDE0
IEBAIGJvb2wgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNob3VsZEZvcmNlVW5pdmVyc2FsQWNjZXNz
RnJvbUxvY2FsVVJMKGNvbnN0IFdlYkNvcmU6CiAgICAgcmV0dXJuIHdlYlBhZ2UtPmluamVjdGVk
QnVuZGxlTG9hZGVyQ2xpZW50KCkuc2hvdWxkRm9yY2VVbml2ZXJzYWxBY2Nlc3NGcm9tTG9jYWxV
Ukwod2ViUGFnZSwgdXJsLnN0cmluZygpKTsKIH0KIAorI2lmIFVTRShTT1VQKQordm9pZCBXZWJG
cmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hDaGVja1Rsc0NlcnRpZmljYXRlKFJlc291cmNlTG9h
ZGVyKiByZXNvdXJjZUxvYWRlciwgVGxzQ2VydGlmaWNhdGVEZWNpc2lvbkZ1bmN0aW9uIGRlY2lz
aW9uRnVuY3Rpb24sIEdUbHNDZXJ0aWZpY2F0ZUZsYWdzLCBHVGxzQ2VydGlmaWNhdGUqLCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIChyZXNv
dXJjZUxvYWRlci0+KmRlY2lzaW9uRnVuY3Rpb24pKFRsc0NlcnRpZmljYXRlQWNjZXB0KTsKK30K
KyNlbmRpZgorCiBQYXNzUmVmUHRyPEZyYW1lTmV0d29ya2luZ0NvbnRleHQ+IFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpjcmVhdGVOZXR3b3JraW5nQ29udGV4dCgpCiB7CiAgICAgUmVmUHRyPFdlYkZy
YW1lTmV0d29ya2luZ0NvbnRleHQ+IGNvbnRleHQgPSBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0
OjpjcmVhdGUobV9mcmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggMjA3
ZTQ0Mi4uNmI4YTk0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMjQxLDYg
KzI0MSwxMCBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCBib29sIHNob3VsZEZvcmNlVW5pdmVy
c2FsQWNjZXNzRnJvbUxvY2FsVVJMKGNvbnN0IFdlYkNvcmU6OktVUkwmKSBPVkVSUklERTsKIAor
I2lmIFVTRShTT1VQKQorICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaENoZWNrVGxzQ2VydGlmaWNh
dGUoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXIqLCBXZWJDb3JlOjpUbHNDZXJ0aWZpY2F0ZURlY2lz
aW9uRnVuY3Rpb24sIEdUbHNDZXJ0aWZpY2F0ZUZsYWdzLCBHVGxzQ2VydGlmaWNhdGUqLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJikgT1ZFUlJJREU7CisjZW5kaWYKKwogICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpGcmFtZU5ldHdvcmtpbmdDb250ZXh0PiBjcmVhdGVO
ZXR3b3JraW5nQ29udGV4dCgpIE9WRVJSSURFOwogCiAgICAgV2ViRnJhbWUqIG1fZnJhbWU7CmRp
ZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvRHVtcFJlbmRlclRyZWUuY3BwIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL0R1bXBSZW5kZXJUcmVlLmNwcAppbmRleCBhYWNlNDc1
Li4zYmMyMmFhIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvRHVtcFJlbmRl
clRyZWUuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9EdW1wUmVuZGVyVHJlZS5j
cHAKQEAgLTQxNCw2ICs0MTQsMTAgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQog
ICAgIGJyb3dzZXIgPSBEdW1wUmVuZGVyVHJlZUNocm9tZTo6Y3JlYXRlKGVjb3JlX2V2YXNfZ2V0
KGVjb3JlRXZhcy5nZXQoKSkpOwogICAgIGFkZEZvbnRzVG9FbnZpcm9ubWVudCgpOwogCisgICAg
Ly8gSWdub3JlIFNTTCBjZXJ0aWZpY2F0ZSBlcnJvcnMgb24gbG9jYWxob3N0IGFuZCAxMjcuMC4w
LjEuCisgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpzZXRIb3N0QWxsb3dzQW55SFRUUFND
ZXJ0aWZpY2F0ZSgibG9jYWxob3N0Iik7CisgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpz
ZXRIb3N0QWxsb3dzQW55SFRUUFNDZXJ0aWZpY2F0ZSgiMTI3LjAuMC4xIik7CisKICAgICBpZiAo
dXNlTG9uZ1J1bm5pbmdTZXJ2ZXJNb2RlKGFyZ2MsIGFyZ3YpKSB7CiAgICAgICAgIHByaW50U2Vw
YXJhdG9ycyA9IHRydWU7CiAgICAgICAgIHJ1blRlc3RpbmdTZXJ2ZXJMb29wKCk7CmRpZmYgLS1n
aXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsvRHVtcFJlbmRlclRyZWUuY3BwIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvZ3RrL0R1bXBSZW5kZXJUcmVlLmNwcAppbmRleCAxOWI5NjY2Li43ZTg4
ZTZkIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsvRHVtcFJlbmRlclRyZWUu
Y3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9EdW1wUmVuZGVyVHJlZS5jcHAKQEAg
LTYwNiw2ICs2MDYsMTAgQEAgc3RhdGljIHZvaWQgc2V0RGVmYXVsdHNUb0NvbnNpc3RlbnRTdGF0
ZVZhbHVlc0ZvclRlc3RpbmcoKQogICAgIHdlYmtpdF9zZXRfd2ViX2RhdGFiYXNlX2RpcmVjdG9y
eV9wYXRoKGRhdGFiYXNlRGlyZWN0b3J5KTsKICAgICBnX2ZyZWUoZGF0YWJhc2VEaXJlY3Rvcnkp
OwogCisgICAgLy8gSWdub3JlIFNTTCBjZXJ0aWZpY2F0ZSBlcnJvcnMgb24gbG9jYWxob3N0IGFu
ZCAxMjcuMC4wLjEuCisgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpzZXRIb3N0QWxsb3dz
QW55SFRUUFNDZXJ0aWZpY2F0ZSgibG9jYWxob3N0Iik7CisgICAgRHVtcFJlbmRlclRyZWVTdXBw
b3J0R3RrOjpzZXRIb3N0QWxsb3dzQW55SFRUUFNDZXJ0aWZpY2F0ZSgiMTI3LjAuMC4xIik7CisK
ICNpZiBkZWZpbmVkKEdUS19BUElfVkVSU0lPTl8yKQogICAgIGd0a19yY19wYXJzZV9zdHJpbmco
InN0eWxlIFwibml4X3Njcm9sbGJhcl9zcGFjaW5nXCIgICAgICAgICAgICAgICAgICAgICIKICAg
ICAgICAgICAgICAgICAgICAgICAgICJ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiCg==
</data>
<flag name="review"
          id="158328"
          type_id="1"
          status="-"
          setter="abarth"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>151088</attachid>
            <date>2012-07-06 08:49:17 -0700</date>
            <delta_ts>2012-07-11 02:33:02 -0700</delta_ts>
            <desc>New patch</desc>
            <filename>wk-ssl-errors2.diff</filename>
            <type>text/plain</type>
            <size>18221</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggNWI5YjY4OS4uZTJiODkyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxMi0wNy0wNiAg
Q2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgSGFu
ZGxlIFNTTCBlcnJvcnMgZm9yIFNPVVAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTkwMjY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIEdCeXRlQXJyYXkuCisKKyAgICAgICAgKiB3
dGYvZ29iamVjdC9HUmVmUHRyLmNwcDoKKyAgICAgICAgKFdURjo6cmVmR1B0cik6CisgICAgICAg
IChXVEYpOgorICAgICAgICAoV1RGOjpkZXJlZkdQdHIpOgorICAgICAgICAqIHd0Zi9nb2JqZWN0
L0dSZWZQdHIuaDoKKyAgICAgICAgKFdURik6CisgICAgICAgICogd3RmL2dvYmplY3QvR1R5cGVk
ZWZzLmg6CisKIDIwMTItMDctMDUgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAog
ICAgICAgICBJTkxJTkVfQVJNX0ZVTkNUSU9OKHRoaW5neSkgc2hvdWxkIG1ha2UgdGhpbmd5IGJl
IHRodW1iMiBpZiB3ZSdyZSB1c2luZyB0aHVtYjIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5NTNlYWI4Li43YjQ3
NzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDUgQEAKKzIwMTItMDctMDYgIENhcmxvcyBHYXJj
aWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIEhhbmRsZSBTU0wgZXJy
b3JzIGZvciBTT1VQCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD05MDI2NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIE5vIG5ldyB0ZXN0cywgdGhpcyBpcyBjb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUVycm9yLmg6CisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yOjpSZXNvdXJjZUVycm9yKTogQWRkIG5ldyBjb25zdHJjdXRvciBmb3IKKyAg
ICAgICAgU1NMIGVycm9ycyB0aGF0IHJlY2VpdmVzIGEgY2VydGlmaWNhdGUgYW5kIFRMUyBlcnJv
cnMuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUVycm9yOjp0bHNFcnJvcnMpOiBSZXR1cm4g
VExTIGVycm9ycy4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlRXJyb3I6OmNlcnRpZmljYXRl
KTogUmV0dXJuIHRoZSBjZXJ0aWZpY2F0ZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3Nv
dXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFsbG93c0FueUhU
VFBTQ2VydGlmaWNhdGVIb3N0cyk6IEdsb2JhbCBzZXQgdG8gc3RvcmUKKyAgICAgICAgaG9zdG5h
bWVzIGZvciB3aGljaCBTU0wgZXJyb3JzIHNob3VsZCBiZSBpZ25vcmVkLgorICAgICAgICAoV2Vi
Q29yZTo6Y2xpZW50Q2VydGlmaWNhdGVzKTogR2xvYmFsIG1hcCB0byBzdG9yZSBjbGllbnQKKyAg
ICAgICAgY2VydGlmaWNhdGVzLgorICAgICAgICAoV2ViQ29yZTo6dGxzQ2VydGlmaWNhdGVFcXVh
bCk6IENoZWNrIHdoZXRoZXIgdHdvIEdUbHNDZXJ0aWZpY2F0ZQorICAgICAgICBvYmplY3RzIGNv
bnRhaW4gdGhlIHNhbWUgSFRUUFMgY2VydGlmaWNhdGUuCisgICAgICAgIChXZWJDb3JlOjpzZW5k
UmVxdWVzdENhbGxiYWNrKTogRmluaXNoIHRoZSBsb2FkIHdpdGggYW4gZXJyb3IgaW4KKyAgICAg
ICAgY2FzZSBvZiBTU0wgZXJyb3JzIG5vdCBoYW5kbGVkIGJ5IHRoZSBTb3VwU2Vzc2lvbi4KKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpzZXRIb3N0QWxsb3dzQW55SFRUUFNDZXJ0
aWZpY2F0ZSk6IEFkZAorICAgICAgICB0aGUgZ2l2ZW4gaG9zdG5hbWUgdG8gdGhlIGxpc3Qgb2Yg
aG9zdHMgZm9yIHdoaWNoIFNTTCBlcnJvcnMgYXJlCisgICAgICAgIGlnbm9yZWQuCisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6c2V0Q2xpZW50Q2VydGlmaWNhdGUpOiBTdG9yZSB0
aGUgY2xpZW50CisgICAgICAgIGNlcnRpZmljYXRlIGZvciB0aGUgZ2l2ZW4gaG9zdC4KKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpzZXRJZ25vcmVTU0xFcnJvcnMpOiBTZXQgd2hl
dGhlciBhbGwgU1NMCisgICAgICAgIGVycm9ycyBzaG91bGQgYmUgaWdub3JlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXNwb25zZS5oOgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZTo6c291cE1lc3NhZ2VDZXJ0aWZpY2F0ZSk6IFJldHVybiB0
aGUKKyAgICAgICAgY2VydGlmaWNhdGUuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlOjpzb3VwTWVzc2FnZVRMU0Vycm9ycyk6IFJldHVybiB0aGUgVExTCisgICAgICAgIGVycm9y
cy4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXNwb25zZVNvdXAu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6dG9Tb3VwTWVzc2FnZSk6
IFNldCB0aGUgY2VydGlmaWNhdGUKKyAgICAgICAgYW5kIFRMUyBlcnJvcnMgdG8gdGhlIG5ld2x5
IGNyZWF0ZWQgU291cE1lc3NhZ2UuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
Ojp1cGRhdGVGcm9tU291cE1lc3NhZ2UpOiBHZXQgdGhlCisgICAgICAgIGNlcnRpZmljYXRlIGFu
ZCBUTFMgZXJyb3JzIGZyb20gdGhlIFNvdXBNZXNzYWdlLgorCiAyMDEyLTA3LTA1ICBBcm5hdWQg
UmVuZXZpZXIgIDxhcm5vQHJlbmV2aWVyLm5ldD4KIAogICAgICAgICBbR1RLXSBTaG93aW5nIHRo
ZSBjb250ZXh0IG1lbnUgaW4gdGhlIFdlYiBJbnNwZWN0b3IgY2FuIGNyYXNoIHRoZSBicm93c2Vy
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L2VmbC9DaGFuZ2VMb2cKaW5kZXggNzUxNzEzYy4uMWFhZTkyYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9lZmwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE1IEBACisyMDEyLTA3LTA2ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJj
aWFAaWdhbGlhLmNvbT4KKworICAgICAgICBIYW5kbGUgU1NMIGVycm9ycyBmb3IgU09VUAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTAyNjcKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJZ25vcmUgU1NMIGVy
cm9ycyBieSBkZWZhdWx0IGZvciBjb21wYXRpYmlsaXR5LgorCisgICAgICAgICogZXdrL2V3a19t
YWluLmNwcDoKKyAgICAgICAgKF9ld2tfaW5pdF9ib2R5KToKKwogMjAxMi0wNy0wNSAgS2lob25n
IEt3b24gIDxraWhvbmcua3dvbkBzYW1zdW5nLmNvbT4KIAogICAgICAgICBbRUZMXSBDaGFuZ2Ug
Y2xhc3MgbmFtZSBmcm9tIE5vdGlmaWNhdGlvbkNsaWVudEVmbCB0byBOb3RpZmljYXRpb25QcmVz
ZW50ZXJDbGllbnRFZmwuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggYjFhN2MxYy4uYmU1M2MwNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Z3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTA3LTA2ICBDYXJsb3MgR2FyY2lh
IENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKworICAgICAgICBIYW5kbGUgU1NMIGVycm9y
cyBmb3IgU09VUAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9OTAyNjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBJZ25vcmUgU1NMIGVycm9ycyBieSBkZWZhdWx0IGZvciBjb21wYXRpYmlsaXR5LgorCisgICAg
ICAgICogd2Via2l0L3dlYmtpdGdsb2JhbHMuY3BwOgorICAgICAgICAod2Via2l0SW5pdCk6CisK
IDIwMTItMDctMDIgIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgRG8gbm90IGRvIGFueSBsb2dnaW5nIGluaXRpYWxpemF0aW9uIHdoZW4gbG9nZ2luZyBp
cyBkaXNhYmxlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDhmMDUyYjcuLmE3NjEyZmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNyBAQAorMjAxMi0wNy0wNiAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lh
QGlnYWxpYS5jb20+CisKKyAgICAgICAgSGFuZGxlIFNTTCBlcnJvcnMgZm9yIFNPVVAKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkwMjY3CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSWdub3JlIFNTTCBlcnJv
cnMgYnkgZGVmYXVsdCBmb3IgY29tcGF0aWJpbGl0eS4KKworICAgICAgICAqIFdlYlByb2Nlc3Mv
ZWZsL1dlYlByb2Nlc3NNYWluRWZsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc01h
aW5FZmwpOgorICAgICAgICAqIFdlYlByb2Nlc3MvZ3RrL1dlYlByb2Nlc3NNYWluR3RrLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc01haW5HdGspOgorCiAyMDEyLTA3LTA1ICBDaHJp
c3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5jb20+CiAKICAgICAgICAgW1dL
Ml1bRUZMXSBFd2tfVmlldyBuZWVkcyB0byByZXBvcnQgbG9hZCBzdGF0dXMgY2hhbmdlcwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvZ29iamVjdC9HUmVmUHRyLmNwcCBiL1NvdXJjZS9XVEYv
d3RmL2dvYmplY3QvR1JlZlB0ci5jcHAKaW5kZXggM2EwMTRkYS4uNWFhMDY3YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvZ29iamVjdC9HUmVmUHRyLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi9nb2JqZWN0L0dSZWZQdHIuY3BwCkBAIC0xMjAsNiArMTIwLDE5IEBAIHRlbXBsYXRlIDw+IHZv
aWQgZGVyZWZHUHRyKEdQdHJBcnJheSogcHRyKQogICAgICAgICBnX3B0cl9hcnJheV91bnJlZihw
dHIpOwogfQogCit0ZW1wbGF0ZSA8PiBHQnl0ZUFycmF5KiByZWZHUHRyKEdCeXRlQXJyYXkqIHB0
cikKK3sKKyAgICBpZiAocHRyKQorICAgICAgICBnX2J5dGVfYXJyYXlfcmVmKHB0cik7CisgICAg
cmV0dXJuIHB0cjsKK30KKwordGVtcGxhdGUgPD4gdm9pZCBkZXJlZkdQdHIoR0J5dGVBcnJheSog
cHRyKQoreworICAgIGlmIChwdHIpCisgICAgICAgIGdfYnl0ZV9hcnJheV91bnJlZihwdHIpOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAogI2VuZGlmIC8vIEVOQUJMRShHTElCX1NVUFBPUlQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9nb2JqZWN0L0dSZWZQdHIuaCBiL1NvdXJjZS9X
VEYvd3RmL2dvYmplY3QvR1JlZlB0ci5oCmluZGV4IGY0ZmYzZDEuLmRmNjg4OGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL2dvYmplY3QvR1JlZlB0ci5oCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L2dvYmplY3QvR1JlZlB0ci5oCkBAIC0yMTAsNiArMjEwLDggQEAgdGVtcGxhdGUgPD4gR1NvdXJj
ZSogcmVmR1B0cihHU291cmNlKiBwdHIpOwogdGVtcGxhdGUgPD4gdm9pZCBkZXJlZkdQdHIoR1Nv
dXJjZSogcHRyKTsKIHRlbXBsYXRlIDw+IEdQdHJBcnJheSogcmVmR1B0cihHUHRyQXJyYXkqKTsK
IHRlbXBsYXRlIDw+IHZvaWQgZGVyZWZHUHRyKEdQdHJBcnJheSopOwordGVtcGxhdGUgPD4gR0J5
dGVBcnJheSogcmVmR1B0cihHQnl0ZUFycmF5Kik7Cit0ZW1wbGF0ZSA8PiB2b2lkIGRlcmVmR1B0
cihHQnl0ZUFycmF5Kik7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgVCogcmVmR1B0
cihUKiBwdHIpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9nb2JqZWN0L0dUeXBlZGVm
cy5oIGIvU291cmNlL1dURi93dGYvZ29iamVjdC9HVHlwZWRlZnMuaAppbmRleCA3OWMzM2QyLi4y
ZWZjMDcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9nb2JqZWN0L0dUeXBlZGVmcy5oCisr
KyBiL1NvdXJjZS9XVEYvd3RmL2dvYmplY3QvR1R5cGVkZWZzLmgKQEAgLTY0LDYgKzY0LDcgQEAg
dHlwZWRlZiB1bmlvbiBfR2RrRXZlbnQgR2RrRXZlbnQ7CiB0eXBlZGVmIHN0cnVjdCBfR1RpbWVy
IEdUaW1lcjsKIHR5cGVkZWYgc3RydWN0IF9HS2V5RmlsZSBHS2V5RmlsZTsKIHR5cGVkZWYgc3Ry
dWN0IF9HUHRyQXJyYXkgR1B0ckFycmF5OwordHlwZWRlZiBzdHJ1Y3QgX0dCeXRlQXJyYXkgR0J5
dGVBcnJheTsKIAogI2lmIFVTRShDQUlSTykKIHR5cGVkZWYgc3RydWN0IF9jYWlyb19zdXJmYWNl
IGNhaXJvX3N1cmZhY2VfdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VIYW5kbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
UmVzb3VyY2VIYW5kbGUuaAppbmRleCBkZGNhMGQyLi5jMGRkNzY5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCkBAIC0xNjgsNiArMTY4
LDkgQEAgcHVibGljOgogCiAjaWYgVVNFKFNPVVApCiAgICAgc3RhdGljIFNvdXBTZXNzaW9uKiBk
ZWZhdWx0U2Vzc2lvbigpOworICAgIHN0YXRpYyB2b2lkIHNldEhvc3RBbGxvd3NBbnlIVFRQU0Nl
cnRpZmljYXRlKGNvbnN0IFN0cmluZyYpOworICAgIHN0YXRpYyB2b2lkIHNldENsaWVudENlcnRp
ZmljYXRlKGNvbnN0IFN0cmluZyYgaG9zdCwgR1Rsc0NlcnRpZmljYXRlKik7CisgICAgc3RhdGlj
IHZvaWQgc2V0SWdub3JlU1NMRXJyb3JzKGJvb2wpOwogI2VuZGlmCiAKICAgICAvLyBVc2VkIHRv
IHdvcmsgYXJvdW5kIHRoZSBmYWN0IHRoYXQgeW91IGRvbid0IGdldCBhbnkgbW9yZSBOU1VSTENv
bm5lY3Rpb24gY2FsbGJhY2tzIHVudGlsIHlvdSByZXR1cm4gZnJvbSB0aGUgb25lIHlvdSdyZSBp
bi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNv
dXJjZUVycm9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3Vy
Y2VFcnJvci5oCmluZGV4IDJkMTEzNjcuLjBiMzc5NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUVycm9yLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3IuaApAQCAtMjgsNiArMjgs
MTAgQEAKIAogI2luY2x1ZGUgIlJlc291cmNlRXJyb3JCYXNlLmgiCiAKKyNpbmNsdWRlIDx3dGYv
Z29iamVjdC9HUmVmUHRyLmg+CisKK3R5cGVkZWYgc3RydWN0IF9HVGxzQ2VydGlmaWNhdGUgR1Rs
c0NlcnRpZmljYXRlOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJlc291cmNlRXJy
b3IgOiBwdWJsaWMgUmVzb3VyY2VFcnJvckJhc2UKQEAgLTQxLDYgKzQ1LDIwIEBAIHB1YmxpYzoK
ICAgICAgICAgOiBSZXNvdXJjZUVycm9yQmFzZShkb21haW4sIGVycm9yQ29kZSwgZmFpbGluZ1VS
TCwgbG9jYWxpemVkRGVzY3JpcHRpb24pCiAgICAgewogICAgIH0KKworICAgIFJlc291cmNlRXJy
b3IoY29uc3QgU3RyaW5nJiBkb21haW4sIGludCBlcnJvckNvZGUsIGNvbnN0IFN0cmluZyYgZmFp
bGluZ1VSTCwgY29uc3QgU3RyaW5nJiBsb2NhbGl6ZWREZXNjcmlwdGlvbiwgdW5zaWduZWQgdGxz
RXJyb3JzLCBHVGxzQ2VydGlmaWNhdGUqIGNlcnRpZmljYXRlKQorICAgICAgICA6IFJlc291cmNl
RXJyb3JCYXNlKGRvbWFpbiwgZXJyb3JDb2RlLCBmYWlsaW5nVVJMLCBsb2NhbGl6ZWREZXNjcmlw
dGlvbikKKyAgICAgICAgLCBtX3Rsc0Vycm9ycyh0bHNFcnJvcnMpCisgICAgICAgICwgbV9jZXJ0
aWZpY2F0ZShjZXJ0aWZpY2F0ZSkKKyAgICB7CisgICAgfQorCisgICAgdW5zaWduZWQgdGxzRXJy
b3JzKCkgY29uc3QgeyByZXR1cm4gbV90bHNFcnJvcnM7IH0KKyAgICBHVGxzQ2VydGlmaWNhdGUq
IGNlcnRpZmljYXRlKCkgY29uc3QgeyByZXR1cm4gbV9jZXJ0aWZpY2F0ZS5nZXQoKTsgfQorCitw
cml2YXRlOgorICAgIHVuc2lnbmVkIG1fdGxzRXJyb3JzOworICAgIEdSZWZQdHI8R1Rsc0NlcnRp
ZmljYXRlPiBtX2NlcnRpZmljYXRlOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcAppbmRl
eCA2MGU0ZTE1Li40YjllMWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcApAQCAtNDksNiArNDks
NyBAQAogI2luY2x1ZGUgPGZjbnRsLmg+CiAjaW5jbHVkZSA8Z2lvL2dpby5oPgogI2luY2x1ZGUg
PGdsaWIuaD4KKyNpbmNsdWRlIDxnbGliL2dpMThuLWxpYi5oPgogI2RlZmluZSBMSUJTT1VQX1VT
RV9VTlNUQUJMRV9SRVFVRVNUX0FQSQogI2luY2x1ZGUgPGxpYnNvdXAvc291cC1yZXF1ZXN0LWh0
dHAuaD4KICNpbmNsdWRlIDxsaWJzb3VwL3NvdXAtcmVxdWVzdGVyLmg+CkBAIC0xNjgsNiArMTY5
LDIxIEBAIHN0YXRpYyBib29sIHN0YXJ0Tm9uSFRUUFJlcXVlc3QoUmVzb3VyY2VIYW5kbGUqLCBL
VVJMKTsKIHN0YXRpYyBpbnQgIG1pbGlzZWNvbmRzU2luY2VSZXF1ZXN0KGRvdWJsZSByZXF1ZXN0
VGltZSk7CiAjZW5kaWYKIAorc3RhdGljIGJvb2wgaWdub3JlU1NMRXJyb3JzID0gZmFsc2U7CisK
K3N0YXRpYyBIYXNoU2V0PFN0cmluZz4mIGFsbG93c0FueUhUVFBTQ2VydGlmaWNhdGVIb3N0cygp
Cit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChIYXNoU2V0PFN0cmluZz4sIGhvc3RzLCAoKSk7
CisgICAgcmV0dXJuIGhvc3RzOworfQorCit0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBHUmVmUHRy
PEdUbHNDZXJ0aWZpY2F0ZT4gPiBDZXJ0aWZpY2F0ZXNNYXA7CitzdGF0aWMgQ2VydGlmaWNhdGVz
TWFwJiBjbGllbnRDZXJ0aWZpY2F0ZXMoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ2Vy
dGlmaWNhdGVzTWFwLCBjZXJ0aWZpY2F0ZXMsICgpKTsKKyAgICByZXR1cm4gY2VydGlmaWNhdGVz
OworfQorCiBSZXNvdXJjZUhhbmRsZUludGVybmFsOjp+UmVzb3VyY2VIYW5kbGVJbnRlcm5hbCgp
CiB7CiB9CkBAIC0zNTAsNiArMzY2LDMyIEBAIHN0YXRpYyBSZXNvdXJjZUVycm9yIGNvbnZlcnRT
b3VwRXJyb3JUb1Jlc291cmNlRXJyb3IoR0Vycm9yKiBlcnJvciwgU291cFJlcXVlc3QqCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgU3RyaW5nOjpmcm9tVVRGOChlcnJvci0+bWVzc2FnZSkpOwog
fQogCitzdGF0aWMgYm9vbCB0bHNDZXJ0aWZpY2F0ZUVxdWFsKEdUbHNDZXJ0aWZpY2F0ZSogY2Vy
dGlmaWNhdGVBLCBHVGxzQ2VydGlmaWNhdGUqIGNlcnRpZmljYXRlQikKK3sKKyAgICBpZiAoIWNl
cnRpZmljYXRlQSB8fCAhY2VydGlmaWNhdGVCKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBpZiAoY2VydGlmaWNhdGVBID09IGNlcnRpZmljYXRlQikKKyAgICAgICAgcmV0dXJuIHRydWU7
CisKKyAgICBHQnl0ZUFycmF5KiBjZXJ0aWZpY2F0ZURhdGEgPSAwOworICAgIGdfb2JqZWN0X2dl
dChHX09CSkVDVChjZXJ0aWZpY2F0ZUEpLCAiY2VydGlmaWNhdGUiLCAmY2VydGlmaWNhdGVEYXRh
LCBOVUxMKTsKKyAgICBpZiAoIWNlcnRpZmljYXRlRGF0YSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIEdSZWZQdHI8R0J5dGVBcnJheT4gY2VydGlmaWNhdGVEYXRhQSA9IGFkb3B0R1JlZihj
ZXJ0aWZpY2F0ZURhdGEpOworCisgICAgY2VydGlmaWNhdGVEYXRhID0gMDsKKyAgICBnX29iamVj
dF9nZXQoR19PQkpFQ1QoY2VydGlmaWNhdGVCKSwgImNlcnRpZmljYXRlIiwgJmNlcnRpZmljYXRl
RGF0YSwgTlVMTCk7CisgICAgaWYgKCFjZXJ0aWZpY2F0ZURhdGEpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICBHUmVmUHRyPEdCeXRlQXJyYXk+IGNlcnRpZmljYXRlRGF0YUIgPSBhZG9wdEdS
ZWYoY2VydGlmaWNhdGVEYXRhKTsKKworICAgIGlmIChjZXJ0aWZpY2F0ZURhdGFBLT5sZW4gIT0g
Y2VydGlmaWNhdGVEYXRhQi0+bGVuKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1
cm4gIW1lbWNtcChjZXJ0aWZpY2F0ZURhdGFBLT5kYXRhLCBjZXJ0aWZpY2F0ZURhdGFCLT5kYXRh
LCBjZXJ0aWZpY2F0ZURhdGFBLT5sZW4pOworfQorCiBzdGF0aWMgdm9pZCBzZW5kUmVxdWVzdENh
bGxiYWNrKEdPYmplY3QqIHNvdXJjZSwgR0FzeW5jUmVzdWx0KiByZXMsIGdwb2ludGVyIGRhdGEp
CiB7CiAgICAgUmVmUHRyPFJlc291cmNlSGFuZGxlPiBoYW5kbGUgPSBzdGF0aWNfY2FzdDxSZXNv
dXJjZUhhbmRsZSo+KGRhdGEpOwpAQCAtMzg1LDYgKzQyNywxOCBAQCBzdGF0aWMgdm9pZCBzZW5k
UmVxdWVzdENhbGxiYWNrKEdPYmplY3QqIHNvdXJjZSwgR0FzeW5jUmVzdWx0KiByZXMsIGdwb2lu
dGVyIGRhdAogICAgICAgICAgICAgZC0+bV9yZXNwb25zZS5zZXRTbmlmZmVkQ29udGVudFR5cGUo
c25pZmZlZFR5cGUpOwogICAgICAgICB9CiAgICAgICAgIGQtPm1fcmVzcG9uc2UudXBkYXRlRnJv
bVNvdXBNZXNzYWdlKHNvdXBNZXNzYWdlKTsKKworICAgICAgICBpZiAoZC0+bV9yZXNwb25zZS5z
b3VwTWVzc2FnZVRMU0Vycm9ycygpICYmICFpZ25vcmVTU0xFcnJvcnMgJiYgIWFsbG93c0FueUhU
VFBTQ2VydGlmaWNhdGVIb3N0cygpLmNvbnRhaW5zKGhhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkudXJs
KCkuaG9zdCgpLmxvd2VyKCkpKSB7CisgICAgICAgICAgICBDZXJ0aWZpY2F0ZXNNYXA6Oml0ZXJh
dG9yIGl0ZXIgPSBjbGllbnRDZXJ0aWZpY2F0ZXMoKS5maW5kKGhhbmRsZS0+Zmlyc3RSZXF1ZXN0
KCkudXJsKCkuaG9zdCgpLmxvd2VyKCkpOworICAgICAgICAgICAgaWYgKGl0ZXIgPT0gY2xpZW50
Q2VydGlmaWNhdGVzKCkuZW5kKCkgfHwgIXRsc0NlcnRpZmljYXRlRXF1YWwoZC0+bV9yZXNwb25z
ZS5zb3VwTWVzc2FnZUNlcnRpZmljYXRlKCksIChpdGVyLT5zZWNvbmQpLmdldCgpKSkgeworICAg
ICAgICAgICAgICAgIEdPd25QdHI8Y2hhcj4gdXJpKHNvdXBfdXJpX3RvX3N0cmluZyhzb3VwX3Jl
cXVlc3RfZ2V0X3VyaShkLT5tX3NvdXBSZXF1ZXN0LmdldCgpKSwgRkFMU0UpKTsKKyAgICAgICAg
ICAgICAgICBjbGllbnQtPmRpZEZhaWwoaGFuZGxlLmdldCgpLCBSZXNvdXJjZUVycm9yKGdfcXVh
cmtfdG9fc3RyaW5nKFNPVVBfSFRUUF9FUlJPUiksIFNPVVBfU1RBVFVTX1NTTF9GQUlMRUQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1cmkuZ2V0KCksIFN0cmluZzo6ZnJvbVVURjgoXygiVW5hY2NlcHRhYmxlIFRMUyBjZXJ0aWZp
Y2F0ZSIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGQtPm1fcmVzcG9uc2Uuc291cE1lc3NhZ2VUTFNFcnJvcnMoKSwgZC0+bV9y
ZXNwb25zZS5zb3VwTWVzc2FnZUNlcnRpZmljYXRlKCkpKTsKKyAgICAgICAgICAgICAgICBjbGVh
bnVwU291cFJlcXVlc3RPcGVyYXRpb24oaGFuZGxlLmdldCgpKTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBk
LT5tX3Jlc3BvbnNlLnNldFVSTChoYW5kbGUtPmZpcnN0UmVxdWVzdCgpLnVybCgpKTsKICAgICAg
ICAgY29uc3QgZ2NoYXIqIGNvbnRlbnRUeXBlID0gc291cF9yZXF1ZXN0X2dldF9jb250ZW50X3R5
cGUoZC0+bV9zb3VwUmVxdWVzdC5nZXQoKSk7CkBAIC03NDAsNiArNzk0LDIxIEBAIHZvaWQgUmVz
b3VyY2VIYW5kbGU6OmNhbmNlbCgpCiAgICAgICAgIGdfY2FuY2VsbGFibGVfY2FuY2VsKGQtPm1f
Y2FuY2VsbGFibGUuZ2V0KCkpOwogfQogCit2b2lkIFJlc291cmNlSGFuZGxlOjpzZXRIb3N0QWxs
b3dzQW55SFRUUFNDZXJ0aWZpY2F0ZShjb25zdCBTdHJpbmcmIGhvc3QpCit7CisgICAgYWxsb3dz
QW55SFRUUFNDZXJ0aWZpY2F0ZUhvc3RzKCkuYWRkKGhvc3QubG93ZXIoKSk7Cit9CisKK3ZvaWQg
UmVzb3VyY2VIYW5kbGU6OnNldENsaWVudENlcnRpZmljYXRlKGNvbnN0IFN0cmluZyYgaG9zdCwg
R1Rsc0NlcnRpZmljYXRlKiBjZXJ0aWZpY2F0ZSkKK3sKKyAgICBjbGllbnRDZXJ0aWZpY2F0ZXMo
KS5zZXQoaG9zdC5sb3dlcigpLCBjZXJ0aWZpY2F0ZSk7Cit9CisKK3ZvaWQgUmVzb3VyY2VIYW5k
bGU6OnNldElnbm9yZVNTTEVycm9ycyhib29sIGlnbm9yZSkKK3sKKyAgICBpZ25vcmVTU0xFcnJv
cnMgPSBpZ25vcmU7Cit9CisKIHN0YXRpYyBib29sIGhhc0JlZW5TZW50KFJlc291cmNlSGFuZGxl
KiBoYW5kbGUpCiB7CiAgICAgUmVzb3VyY2VIYW5kbGVJbnRlcm5hbCogZCA9IGhhbmRsZS0+Z2V0
SW50ZXJuYWwoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
c291cC9SZXNvdXJjZVJlc3BvbnNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvUmVzb3VyY2VSZXNwb25zZS5oCmluZGV4IDg2MjRjMDUuLjA2YTU0ZDAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlc3BvbnNl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVz
cG9uc2UuaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2VCYXNl
LmgiCiAKICNpbmNsdWRlIDxsaWJzb3VwL3NvdXAuaD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9H
UmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMzcsMTggKzM4LDIxIEBAIHB1
YmxpYzoKICAgICBSZXNvdXJjZVJlc3BvbnNlKCkKICAgICAgICAgOiBSZXNvdXJjZVJlc3BvbnNl
QmFzZSgpCiAgICAgICAgICwgbV9zb3VwRmxhZ3Moc3RhdGljX2Nhc3Q8U291cE1lc3NhZ2VGbGFn
cz4oMCkpCisgICAgICAgICwgbV90bHNFcnJvcnMoc3RhdGljX2Nhc3Q8R1Rsc0NlcnRpZmljYXRl
RmxhZ3M+KDApKQogICAgIHsKICAgICB9CiAKICAgICBSZXNvdXJjZVJlc3BvbnNlKGNvbnN0IEtV
UkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgbG9uZyBsb25nIGV4cGVjdGVkTGVuZ3Ro
LCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUp
CiAgICAgICAgIDogUmVzb3VyY2VSZXNwb25zZUJhc2UodXJsLCBtaW1lVHlwZSwgZXhwZWN0ZWRM
ZW5ndGgsIHRleHRFbmNvZGluZ05hbWUsIGZpbGVuYW1lKQogICAgICAgICAsIG1fc291cEZsYWdz
KHN0YXRpY19jYXN0PFNvdXBNZXNzYWdlRmxhZ3M+KDApKQorICAgICAgICAsIG1fdGxzRXJyb3Jz
KHN0YXRpY19jYXN0PEdUbHNDZXJ0aWZpY2F0ZUZsYWdzPigwKSkKICAgICB7CiAgICAgfQogCiAg
ICAgUmVzb3VyY2VSZXNwb25zZShTb3VwTWVzc2FnZSogc291cE1lc3NhZ2UpCiAgICAgICAgIDog
UmVzb3VyY2VSZXNwb25zZUJhc2UoKQogICAgICAgICAsIG1fc291cEZsYWdzKHN0YXRpY19jYXN0
PFNvdXBNZXNzYWdlRmxhZ3M+KDApKQorICAgICAgICAsIG1fdGxzRXJyb3JzKHN0YXRpY19jYXN0
PEdUbHNDZXJ0aWZpY2F0ZUZsYWdzPigwKSkKICAgICB7CiAgICAgICAgIHVwZGF0ZUZyb21Tb3Vw
TWVzc2FnZShzb3VwTWVzc2FnZSk7CiAgICAgfQpAQCAtNjIsMTEgKzY2LDE2IEBAIHB1YmxpYzoK
ICAgICBjb25zdCBTdHJpbmcmIHNuaWZmZWRDb250ZW50VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1f
c25pZmZlZENvbnRlbnRUeXBlOyB9CiAgICAgdm9pZCBzZXRTbmlmZmVkQ29udGVudFR5cGUoY29u
c3QgU3RyaW5nJiB2YWx1ZSkgeyBtX3NuaWZmZWRDb250ZW50VHlwZSA9IHZhbHVlOyB9CiAKKyAg
ICBHVGxzQ2VydGlmaWNhdGUqIHNvdXBNZXNzYWdlQ2VydGlmaWNhdGUoKSBjb25zdCB7IHJldHVy
biBtX2NlcnRpZmljYXRlLmdldCgpOyB9CisgICAgR1Rsc0NlcnRpZmljYXRlRmxhZ3Mgc291cE1l
c3NhZ2VUTFNFcnJvcnMoKSBjb25zdCB7IHJldHVybiBtX3Rsc0Vycm9yczsgfQorCiBwcml2YXRl
OgogICAgIGZyaWVuZCBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlQmFzZTsKIAogICAgIFNvdXBNZXNz
YWdlRmxhZ3MgbV9zb3VwRmxhZ3M7CiAgICAgU3RyaW5nIG1fc25pZmZlZENvbnRlbnRUeXBlOwor
ICAgIEdSZWZQdHI8R1Rsc0NlcnRpZmljYXRlPiBtX2NlcnRpZmljYXRlOworICAgIEdUbHNDZXJ0
aWZpY2F0ZUZsYWdzIG1fdGxzRXJyb3JzOwogCiAgICAgdm9pZCBkb1VwZGF0ZVJlc291cmNlUmVz
cG9uc2UoKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1Jlc291cmNlUmVzcG9uc2VTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvc291cC9SZXNvdXJjZVJlc3BvbnNlU291cC5jcHAKaW5kZXggMTU1MDQ4Yi4uMzEw
YjRiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jl
c291cmNlUmVzcG9uc2VTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL3NvdXAvUmVzb3VyY2VSZXNwb25zZVNvdXAuY3BwCkBAIC01MSw2ICs1MSwxMSBAQCBTb3Vw
TWVzc2FnZSogUmVzb3VyY2VSZXNwb25zZTo6dG9Tb3VwTWVzc2FnZSgpIGNvbnN0CiAKICAgICBz
b3VwX21lc3NhZ2Vfc2V0X2ZsYWdzKHNvdXBNZXNzYWdlLCBtX3NvdXBGbGFncyk7CiAKKyAgICBp
ZiAobV9jZXJ0aWZpY2F0ZSkKKyAgICAgICAgZ19vYmplY3Rfc2V0KEdfT0JKRUNUKHNvdXBNZXNz
YWdlKSwgInRscy1jZXJ0aWZpY2F0ZSIsIG1fY2VydGlmaWNhdGUuZ2V0KCksIE5VTEwpOworICAg
IGlmIChtX3Rsc0Vycm9ycykKKyAgICAgICAgZ19vYmplY3Rfc2V0KEdfT0JKRUNUKHNvdXBNZXNz
YWdlKSwgInRscy1lcnJvcnMiLCBtX3Rsc0Vycm9ycywgTlVMTCk7CisKICAgICAvLyBCb2R5IGRh
dGEgaXMgbm90IGluIHRoZSBtZXNzYWdlLgogICAgIHJldHVybiBzb3VwTWVzc2FnZTsKIH0KQEAg
LTg0LDYgKzg5LDEwIEBAIHZvaWQgUmVzb3VyY2VSZXNwb25zZTo6dXBkYXRlRnJvbVNvdXBNZXNz
YWdlKFNvdXBNZXNzYWdlKiBzb3VwTWVzc2FnZSkKICAgICBzZXRFeHBlY3RlZENvbnRlbnRMZW5n
dGgoc291cF9tZXNzYWdlX2hlYWRlcnNfZ2V0X2NvbnRlbnRfbGVuZ3RoKHNvdXBNZXNzYWdlLT5y
ZXNwb25zZV9oZWFkZXJzKSk7CiAgICAgc2V0SFRUUFN0YXR1c1RleHQoc291cE1lc3NhZ2UtPnJl
YXNvbl9waHJhc2UpOwogICAgIHNldFN1Z2dlc3RlZEZpbGVuYW1lKGZpbGVuYW1lRnJvbUhUVFBD
b250ZW50RGlzcG9zaXRpb24oaHR0cEhlYWRlckZpZWxkKCJDb250ZW50LURpc3Bvc2l0aW9uIikp
KTsKKworICAgIEdUbHNDZXJ0aWZpY2F0ZSogY2VydGlmaWNhdGUgPSAwOworICAgIGdfb2JqZWN0
X2dldChHX09CSkVDVChzb3VwTWVzc2FnZSksICJ0bHMtY2VydGlmaWNhdGUiLCAmY2VydGlmaWNh
dGUsICJ0bHMtZXJyb3JzIiwgJm1fdGxzRXJyb3JzLCBOVUxMKTsKKyAgICBtX2NlcnRpZmljYXRl
ID0gY2VydGlmaWNhdGU7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3
ay9ld2tfbWFpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX21haW4uY3BwCmluZGV4
IGI0OGMyOGEuLmE1MDkwNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tf
bWFpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19tYWluLmNwcApAQCAtMTgx
LDUgKzE4MSw3IEBAIEVpbmFfQm9vbCBfZXdrX2luaXRfYm9keSh2b2lkKQogICAgIFNvdXBTZXNz
aW9uRmVhdHVyZSogYXV0aF9kaWFsb2cgPSBzdGF0aWNfY2FzdDxTb3VwU2Vzc2lvbkZlYXR1cmUq
PihnX29iamVjdF9uZXcoRVdLX1RZUEVfU09VUF9BVVRIX0RJQUxPRywgMCkpOwogICAgIHNvdXBf
c2Vzc2lvbl9hZGRfZmVhdHVyZShzZXNzaW9uLCBhdXRoX2RpYWxvZyk7CiAKKyAgICBXZWJDb3Jl
OjpSZXNvdXJjZUhhbmRsZTo6c2V0SWdub3JlU1NMRXJyb3JzKHRydWUpOworCiAgICAgcmV0dXJu
IHRydWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0Z2xv
YmFscy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0Z2xvYmFscy5jcHAKaW5k
ZXggNDJmN2ExZC4uNDAzNTZiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0
L3dlYmtpdGdsb2JhbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRn
bG9iYWxzLmNwcApAQCAtNTMxLDYgKzUzMSw4IEBAIHZvaWQgd2Via2l0SW5pdCgpCiAgICAgc291
cF9zZXNzaW9uX2FkZF9mZWF0dXJlKHNlc3Npb24sIGF1dGhEaWFsb2cpOwogICAgIGdfb2JqZWN0
X3VucmVmKGF1dGhEaWFsb2cpOwogCisgICAgV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnNldEln
bm9yZVNTTEVycm9ycyh0cnVlKTsKKwogI2lmIFVTRShDTFVUVEVSKQogICAgIGd0a19jbHV0dGVy
X2luaXQoMCwgMCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvZWZsL1dlYlByb2Nlc3NNYWluRWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
ZWZsL1dlYlByb2Nlc3NNYWluRWZsLmNwcAppbmRleCA5MmQzNTE2Li42YTBiYmNhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2VmbC9XZWJQcm9jZXNzTWFpbkVmbC5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9lZmwvV2ViUHJvY2Vzc01haW5FZmwuY3Bw
CkBAIC03NCw2ICs3NCw4IEBAIFdLX0VYUE9SVCBpbnQgV2ViUHJvY2Vzc01haW5FZmwoaW50IGFy
Z2MsIGNoYXIqIGFyZ3ZbXSkKICAgICAgICAgc291cF91cmlfZnJlZShwcm94eVVyaSk7CiAgICAg
fQogCisgICAgV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnNldElnbm9yZVNTTEVycm9ycyh0cnVl
KTsKKwogICAgIGludCBzb2NrZXQgPSBhdG9pKGFyZ3ZbMV0pOwogICAgIFdlYlByb2Nlc3M6OnNo
YXJlZCgpLmluaXRpYWxpemUoc29ja2V0LCBSdW5Mb29wOjptYWluKCkpOwogICAgIFJ1bkxvb3A6
OnJ1bigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9ndGsvV2ViUHJv
Y2Vzc01haW5HdGsuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9ndGsvV2ViUHJvY2Vz
c01haW5HdGsuY3BwCmluZGV4IDQ1Yjg1ODEuLjkwZjlmYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvZ3RrL1dlYlByb2Nlc3NNYWluR3RrLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL2d0ay9XZWJQcm9jZXNzTWFpbkd0ay5jcHAKQEAgLTcwLDYgKzcw
LDkgQEAgV0tfRVhQT1JUIGludCBXZWJQcm9jZXNzTWFpbkd0ayhpbnQgYXJnYywgY2hhciogYXJn
dltdKQogICAgIGdfb2JqZWN0X3NldChzZXNzaW9uLCBTT1VQX1NFU1NJT05fU1NMX1VTRV9TWVNU
RU1fQ0FfRklMRSwgVFJVRSwKICAgICAgICAgICAgICAgICAgU09VUF9TRVNTSU9OX1NTTF9TVFJJ
Q1QsIEZBTFNFLCBOVUxMKTsKIAorICAgIC8vIFRoaXMgaXMgZm9yIGNvbXBhdGliaWxpdHksIGl0
IHdpbGwgYmUgcmVtb3ZlZCB3aGVuIFVJIHByb2Nlc3MgY2FuIGhhbmRsZSBTU0wgZXJyb3JzLgor
ICAgIFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpzZXRJZ25vcmVTU0xFcnJvcnModHJ1ZSk7CisK
ICAgICBSdW5Mb29wOjpydW4oKTsKIAogICAgIHJldHVybiAwOwo=
</data>
<flag name="review"
          id="159464"
          type_id="1"
          status="-"
          setter="mrobinson"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>151657</attachid>
            <date>2012-07-11 02:33:02 -0700</date>
            <delta_ts>2012-07-11 05:01:34 -0700</delta_ts>
            <desc>Updated patch to address review comments</desc>
            <filename>wk-ssl-errors3.diff</filename>
            <type>text/plain</type>
            <size>18814</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggMDY2Zjk3NS4uYTZlMzkzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxMi0wNy0xMSAg
Q2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgSGFu
ZGxlIFNTTCBlcnJvcnMgZm9yIFNPVVAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTkwMjY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIEdCeXRlQXJyYXkuCisKKyAgICAgICAgKiB3
dGYvZ29iamVjdC9HUmVmUHRyLmNwcDoKKyAgICAgICAgKFdURjo6cmVmR1B0cik6CisgICAgICAg
IChXVEYpOgorICAgICAgICAoV1RGOjpkZXJlZkdQdHIpOgorICAgICAgICAqIHd0Zi9nb2JqZWN0
L0dSZWZQdHIuaDoKKyAgICAgICAgKFdURik6CisgICAgICAgICogd3RmL2dvYmplY3QvR1R5cGVk
ZWZzLmg6CisKIDIwMTItMDctMTAgIEpvY2VseW4gVHVyY290dGUgIDxqb2NlbHluLnR1cmNvdHRl
QG5va2lhLmNvbT4KIAogICAgICAgICBSZS1lbmFibGUgX19kZWNsc3BlYyhkbHtpbXBvcnQsZXhw
b3J0fSkgZm9yIE1pbkdXIHdoZW4gdXNpbmcgRVhQT1JUX01BQ1JPUwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDRm
YmIwNTMuLmQ0MTM5YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0OCBAQAorMjAxMi0wNy0xMSAg
Q2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgSGFu
ZGxlIFNTTCBlcnJvcnMgZm9yIFNPVVAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTkwMjY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCB0aGlzIGlzIGNvdmVyZWQgYnkgZXhpc3Rpbmcg
dGVzdHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3IuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlRXJyb3I6OlJlc291cmNlRXJyb3IpOiBBZGQgbmV3IGNvbnN0cmN1
dG9yIGZvcgorICAgICAgICBTU0wgZXJyb3JzIHRoYXQgcmVjZWl2ZXMgYSBjZXJ0aWZpY2F0ZSBh
bmQgVExTIGVycm9ycy4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlRXJyb3I6OnRsc0Vycm9y
cyk6IFJldHVybiBUTFMgZXJyb3JzLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VFcnJvcjo6
Y2VydGlmaWNhdGUpOiBSZXR1cm4gdGhlIGNlcnRpZmljYXRlLgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
YWxsb3dzQW55SFRUUFNDZXJ0aWZpY2F0ZUhvc3RzKTogR2xvYmFsIHNldCB0byBzdG9yZQorICAg
ICAgICBob3N0bmFtZXMgZm9yIHdoaWNoIFNTTCBlcnJvcnMgc2hvdWxkIGJlIGlnbm9yZWQuCisg
ICAgICAgIChXZWJDb3JlOjpjbGllbnRDZXJ0aWZpY2F0ZXMpOiBHbG9iYWwgbWFwIHRvIHN0b3Jl
IGNsaWVudAorICAgICAgICBjZXJ0aWZpY2F0ZXMuCisgICAgICAgIChXZWJDb3JlOjp0bHNDZXJ0
aWZpY2F0ZUVxdWFsKTogQ2hlY2sgd2hldGhlciB0d28gR1Rsc0NlcnRpZmljYXRlCisgICAgICAg
IG9iamVjdHMgY29udGFpbiB0aGUgc2FtZSBIVFRQUyBjZXJ0aWZpY2F0ZS4KKyAgICAgICAgKFdl
YkNvcmU6Omhhc1VuaWdub3JlZFRMU0Vycm9ycyk6IEhlbHBlciBmdW5jdGlvbiB0byBjaGVjayB3
aGV0aGVyCisgICAgICAgIGN1cnJlbnQgbWVzc2FnZSBjb250YWlucyBUTFMgZXJyb3JzIHRoYXQg
c2hvdWxkbid0IGJlIGlnbm9yZWQgYW5kCisgICAgICAgIGNlcnRpZmljYXRlIGhhc24ndCBiZWVu
IGFwcHJvdmVkIGFscmVhZHkuCisgICAgICAgIChXZWJDb3JlOjpzZW5kUmVxdWVzdENhbGxiYWNr
KTogRmluaXNoIHRoZSBsb2FkIHdpdGggYW4gZXJyb3IgaW4KKyAgICAgICAgY2FzZSBvZiBTU0wg
ZXJyb3JzIG5vdCBoYW5kbGVkIGJ5IHRoZSBTb3VwU2Vzc2lvbi4KKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlSGFuZGxlOjpzZXRIb3N0QWxsb3dzQW55SFRUUFNDZXJ0aWZpY2F0ZSk6IEFkZAor
ICAgICAgICB0aGUgZ2l2ZW4gaG9zdG5hbWUgdG8gdGhlIGxpc3Qgb2YgaG9zdHMgZm9yIHdoaWNo
IFNTTCBlcnJvcnMgYXJlCisgICAgICAgIGlnbm9yZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUhhbmRsZTo6c2V0Q2xpZW50Q2VydGlmaWNhdGUpOiBTdG9yZSB0aGUgY2xpZW50CisgICAg
ICAgIGNlcnRpZmljYXRlIGZvciB0aGUgZ2l2ZW4gaG9zdC4KKyAgICAgICAgKFdlYkNvcmU6OlJl
c291cmNlSGFuZGxlOjpzZXRJZ25vcmVTU0xFcnJvcnMpOiBTZXQgd2hldGhlciBhbGwgU1NMCisg
ICAgICAgIGVycm9ycyBzaG91bGQgYmUgaWdub3JlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL3NvdXAvUmVzb3VyY2VSZXNwb25zZS5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZTo6c291cE1lc3NhZ2VDZXJ0aWZpY2F0ZSk6IFJldHVybiB0aGUKKyAgICAgICAgY2Vy
dGlmaWNhdGUuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlOjpzb3VwTWVzc2Fn
ZVRMU0Vycm9ycyk6IFJldHVybiB0aGUgVExTCisgICAgICAgIGVycm9ycy4KKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXNwb25zZVNvdXAuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6dG9Tb3VwTWVzc2FnZSk6IFNldCB0aGUgY2VydGlm
aWNhdGUKKyAgICAgICAgYW5kIFRMUyBlcnJvcnMgdG8gdGhlIG5ld2x5IGNyZWF0ZWQgU291cE1l
c3NhZ2UuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlOjp1cGRhdGVGcm9tU291
cE1lc3NhZ2UpOiBHZXQgdGhlCisgICAgICAgIGNlcnRpZmljYXRlIGFuZCBUTFMgZXJyb3JzIGZy
b20gdGhlIFNvdXBNZXNzYWdlLgorCiAyMDEyLTA3LTEwICBTaGlueWEgS2F3YW5ha2EgIDxzaGlu
eWFrQGNocm9taXVtLm9yZz4KIAogICAgICAgICBTaGFkb3dSb290IHNob3VsZCBrbm93IGl0cyB0
eXBlIGluIGRlYnVnIGJ1aWxkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCmluZGV4IDE0MWY4YmYuLjRhMWIzMTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L2VmbC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wNy0xMSAgQ2FybG9zIEdh
cmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgSGFuZGxlIFNTTCBl
cnJvcnMgZm9yIFNPVVAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTkwMjY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgSWdub3JlIFNTTCBlcnJvcnMgYnkgZGVmYXVsdCBmb3IgY29tcGF0aWJpbGl0eS4KKwor
ICAgICAgICAqIGV3ay9ld2tfbWFpbi5jcHA6CisgICAgICAgIChfZXdrX2luaXRfYm9keSk6CisK
IDIwMTItMDctMTAgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBM
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQ29uZmlndXJhdGlvbkZvclZpZXdwb3J0IHNob3VsZCBt
b3ZlIHRvIEludGVybmFscwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCmluZGV4IDk1ZmE1M2UuLjQ3ODViOTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L2d0ay9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wNy0xMSAgQ2FybG9zIEdhcmNp
YSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgSGFuZGxlIFNTTCBlcnJv
cnMgZm9yIFNPVVAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTkwMjY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgSWdub3JlIFNTTCBlcnJvcnMgYnkgZGVmYXVsdCBmb3IgY29tcGF0aWJpbGl0eS4KKworICAg
ICAgICAqIHdlYmtpdC93ZWJraXRnbG9iYWxzLmNwcDoKKyAgICAgICAgKHdlYmtpdEluaXQpOgor
CiAyMDEyLTA3LTEwICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
V2ViQ29yZTo6U2V0dGluZ3MgZm9yIEhpeGllNzYgV2ViU29ja2V0IHByb3RvY29sIGRvZXNuJ3Qg
ZG8gYW55dGhpbmcgYW5kIHNob3VsZCBiZSByZW1vdmVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZjg3MTJlMi4u
Mzk5ZGE3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTA3LTExICBDYXJsb3Mg
R2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKworICAgICAgICBIYW5kbGUgU1NM
IGVycm9ycyBmb3IgU09VUAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9OTAyNjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBJZ25vcmUgU1NMIGVycm9ycyBieSBkZWZhdWx0IGZvciBjb21wYXRpYmlsaXR5Lgor
CisgICAgICAgICogV2ViUHJvY2Vzcy9lZmwvV2ViUHJvY2Vzc01haW5FZmwuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzTWFpbkVmbCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9ndGsv
V2ViUHJvY2Vzc01haW5HdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzTWFpbkd0
ayk6CisKIDIwMTItMDctMTAgIE5vJ2FtIFJvc2VudGhhbCAgPG5vYW0ucm9zZW50aGFsQG5va2lh
LmNvbT4KIAogICAgICAgICBbUXRdIEVuYWJsZSBhbnRpYWxpYXNpbmcgZm9yIFRleHR1cmVNYXBw
ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2dvYmplY3QvR1JlZlB0ci5jcHAgYi9Tb3Vy
Y2UvV1RGL3d0Zi9nb2JqZWN0L0dSZWZQdHIuY3BwCmluZGV4IDNhMDE0ZGEuLjVhYTA2N2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2dvYmplY3QvR1JlZlB0ci5jcHAKKysrIGIvU291cmNl
L1dURi93dGYvZ29iamVjdC9HUmVmUHRyLmNwcApAQCAtMTIwLDYgKzEyMCwxOSBAQCB0ZW1wbGF0
ZSA8PiB2b2lkIGRlcmVmR1B0cihHUHRyQXJyYXkqIHB0cikKICAgICAgICAgZ19wdHJfYXJyYXlf
dW5yZWYocHRyKTsKIH0KIAordGVtcGxhdGUgPD4gR0J5dGVBcnJheSogcmVmR1B0cihHQnl0ZUFy
cmF5KiBwdHIpCit7CisgICAgaWYgKHB0cikKKyAgICAgICAgZ19ieXRlX2FycmF5X3JlZihwdHIp
OworICAgIHJldHVybiBwdHI7Cit9CisKK3RlbXBsYXRlIDw+IHZvaWQgZGVyZWZHUHRyKEdCeXRl
QXJyYXkqIHB0cikKK3sKKyAgICBpZiAocHRyKQorICAgICAgICBnX2J5dGVfYXJyYXlfdW5yZWYo
cHRyKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV1RGCiAKICNlbmRpZiAvLyBFTkFCTEUoR0xJQl9T
VVBQT1JUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvZ29iamVjdC9HUmVmUHRyLmggYi9T
b3VyY2UvV1RGL3d0Zi9nb2JqZWN0L0dSZWZQdHIuaAppbmRleCBmNGZmM2QxLi5kZjY4ODhjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9nb2JqZWN0L0dSZWZQdHIuaAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9nb2JqZWN0L0dSZWZQdHIuaApAQCAtMjEwLDYgKzIxMCw4IEBAIHRlbXBsYXRlIDw+
IEdTb3VyY2UqIHJlZkdQdHIoR1NvdXJjZSogcHRyKTsKIHRlbXBsYXRlIDw+IHZvaWQgZGVyZWZH
UHRyKEdTb3VyY2UqIHB0cik7CiB0ZW1wbGF0ZSA8PiBHUHRyQXJyYXkqIHJlZkdQdHIoR1B0ckFy
cmF5Kik7CiB0ZW1wbGF0ZSA8PiB2b2lkIGRlcmVmR1B0cihHUHRyQXJyYXkqKTsKK3RlbXBsYXRl
IDw+IEdCeXRlQXJyYXkqIHJlZkdQdHIoR0J5dGVBcnJheSopOwordGVtcGxhdGUgPD4gdm9pZCBk
ZXJlZkdQdHIoR0J5dGVBcnJheSopOwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW5saW5lIFQq
IHJlZkdQdHIoVCogcHRyKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvZ29iamVjdC9H
VHlwZWRlZnMuaCBiL1NvdXJjZS9XVEYvd3RmL2dvYmplY3QvR1R5cGVkZWZzLmgKaW5kZXggNzlj
MzNkMi4uMmVmYzA3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvZ29iamVjdC9HVHlwZWRl
ZnMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9nb2JqZWN0L0dUeXBlZGVmcy5oCkBAIC02NCw2ICs2
NCw3IEBAIHR5cGVkZWYgdW5pb24gX0dka0V2ZW50IEdka0V2ZW50OwogdHlwZWRlZiBzdHJ1Y3Qg
X0dUaW1lciBHVGltZXI7CiB0eXBlZGVmIHN0cnVjdCBfR0tleUZpbGUgR0tleUZpbGU7CiB0eXBl
ZGVmIHN0cnVjdCBfR1B0ckFycmF5IEdQdHJBcnJheTsKK3R5cGVkZWYgc3RydWN0IF9HQnl0ZUFy
cmF5IEdCeXRlQXJyYXk7CiAKICNpZiBVU0UoQ0FJUk8pCiB0eXBlZGVmIHN0cnVjdCBfY2Fpcm9f
c3VyZmFjZSBjYWlyb19zdXJmYWNlX3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgKaW5kZXggZGRjYTBkMi4uYzBkZDc2OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaApAQCAtMTY4
LDYgKzE2OCw5IEBAIHB1YmxpYzoKIAogI2lmIFVTRShTT1VQKQogICAgIHN0YXRpYyBTb3VwU2Vz
c2lvbiogZGVmYXVsdFNlc3Npb24oKTsKKyAgICBzdGF0aWMgdm9pZCBzZXRIb3N0QWxsb3dzQW55
SFRUUFNDZXJ0aWZpY2F0ZShjb25zdCBTdHJpbmcmKTsKKyAgICBzdGF0aWMgdm9pZCBzZXRDbGll
bnRDZXJ0aWZpY2F0ZShjb25zdCBTdHJpbmcmIGhvc3QsIEdUbHNDZXJ0aWZpY2F0ZSopOworICAg
IHN0YXRpYyB2b2lkIHNldElnbm9yZVNTTEVycm9ycyhib29sKTsKICNlbmRpZgogCiAgICAgLy8g
VXNlZCB0byB3b3JrIGFyb3VuZCB0aGUgZmFjdCB0aGF0IHlvdSBkb24ndCBnZXQgYW55IG1vcmUg
TlNVUkxDb25uZWN0aW9uIGNhbGxiYWNrcyB1bnRpbCB5b3UgcmV0dXJuIGZyb20gdGhlIG9uZSB5
b3UncmUgaW4uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3Nv
dXAvUmVzb3VyY2VFcnJvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3Vw
L1Jlc291cmNlRXJyb3IuaAppbmRleCAyZDExMzY3Li4zNzg4MGU1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJvci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUVycm9yLmgKQEAgLTI3
LDYgKzI3LDkgQEAKICNkZWZpbmUgUmVzb3VyY2VFcnJvcl9oCiAKICNpbmNsdWRlICJSZXNvdXJj
ZUVycm9yQmFzZS5oIgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KKwordHlwZWRl
ZiBzdHJ1Y3QgX0dUbHNDZXJ0aWZpY2F0ZSBHVGxzQ2VydGlmaWNhdGU7CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApAQCAtMzQsMTMgKzM3LDI5IEBAIGNsYXNzIFJlc291cmNlRXJyb3IgOiBwdWJs
aWMgUmVzb3VyY2VFcnJvckJhc2UKIHsKIHB1YmxpYzoKICAgICBSZXNvdXJjZUVycm9yKCkKKyAg
ICAgICAgOiBtX3Rsc0Vycm9ycygwKQogICAgIHsKICAgICB9CiAKICAgICBSZXNvdXJjZUVycm9y
KGNvbnN0IFN0cmluZyYgZG9tYWluLCBpbnQgZXJyb3JDb2RlLCBjb25zdCBTdHJpbmcmIGZhaWxp
bmdVUkwsIGNvbnN0IFN0cmluZyYgbG9jYWxpemVkRGVzY3JpcHRpb24pCiAgICAgICAgIDogUmVz
b3VyY2VFcnJvckJhc2UoZG9tYWluLCBlcnJvckNvZGUsIGZhaWxpbmdVUkwsIGxvY2FsaXplZERl
c2NyaXB0aW9uKQorICAgICAgICAsIG1fdGxzRXJyb3JzKDApCiAgICAgewogICAgIH0KKworICAg
IFJlc291cmNlRXJyb3IoY29uc3QgU3RyaW5nJiBkb21haW4sIGludCBlcnJvckNvZGUsIGNvbnN0
IFN0cmluZyYgZmFpbGluZ1VSTCwgY29uc3QgU3RyaW5nJiBsb2NhbGl6ZWREZXNjcmlwdGlvbiwg
dW5zaWduZWQgdGxzRXJyb3JzLCBHVGxzQ2VydGlmaWNhdGUqIGNlcnRpZmljYXRlKQorICAgICAg
ICA6IFJlc291cmNlRXJyb3JCYXNlKGRvbWFpbiwgZXJyb3JDb2RlLCBmYWlsaW5nVVJMLCBsb2Nh
bGl6ZWREZXNjcmlwdGlvbikKKyAgICAgICAgLCBtX3Rsc0Vycm9ycyh0bHNFcnJvcnMpCisgICAg
ICAgICwgbV9jZXJ0aWZpY2F0ZShjZXJ0aWZpY2F0ZSkKKyAgICB7CisgICAgfQorCisgICAgdW5z
aWduZWQgdGxzRXJyb3JzKCkgY29uc3QgeyByZXR1cm4gbV90bHNFcnJvcnM7IH0KKyAgICBHVGxz
Q2VydGlmaWNhdGUqIGNlcnRpZmljYXRlKCkgY29uc3QgeyByZXR1cm4gbV9jZXJ0aWZpY2F0ZS5n
ZXQoKTsgfQorCitwcml2YXRlOgorICAgIHVuc2lnbmVkIG1fdGxzRXJyb3JzOworICAgIEdSZWZQ
dHI8R1Rsc0NlcnRpZmljYXRlPiBtX2NlcnRpZmljYXRlOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVT
b3VwLmNwcAppbmRleCA2MGU0ZTE1Li5lOGIwMGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcApA
QCAtNDksNiArNDksNyBAQAogI2luY2x1ZGUgPGZjbnRsLmg+CiAjaW5jbHVkZSA8Z2lvL2dpby5o
PgogI2luY2x1ZGUgPGdsaWIuaD4KKyNpbmNsdWRlIDxnbGliL2dpMThuLWxpYi5oPgogI2RlZmlu
ZSBMSUJTT1VQX1VTRV9VTlNUQUJMRV9SRVFVRVNUX0FQSQogI2luY2x1ZGUgPGxpYnNvdXAvc291
cC1yZXF1ZXN0LWh0dHAuaD4KICNpbmNsdWRlIDxsaWJzb3VwL3NvdXAtcmVxdWVzdGVyLmg+CkBA
IC0xNjgsNiArMTY5LDIxIEBAIHN0YXRpYyBib29sIHN0YXJ0Tm9uSFRUUFJlcXVlc3QoUmVzb3Vy
Y2VIYW5kbGUqLCBLVVJMKTsKIHN0YXRpYyBpbnQgIG1pbGlzZWNvbmRzU2luY2VSZXF1ZXN0KGRv
dWJsZSByZXF1ZXN0VGltZSk7CiAjZW5kaWYKIAorc3RhdGljIGJvb2wgZ0lnbm9yZVNTTEVycm9y
cyA9IGZhbHNlOworCitzdGF0aWMgSGFzaFNldDxTdHJpbmc+JiBhbGxvd3NBbnlIVFRQU0NlcnRp
ZmljYXRlSG9zdHMoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoSGFzaFNldDxTdHJpbmc+
LCBob3N0cywgKCkpOworICAgIHJldHVybiBob3N0czsKK30KKwordHlwZWRlZiBIYXNoTWFwPFN0
cmluZywgR1JlZlB0cjxHVGxzQ2VydGlmaWNhdGU+ID4gQ2VydGlmaWNhdGVzTWFwOworc3RhdGlj
IENlcnRpZmljYXRlc01hcCYgY2xpZW50Q2VydGlmaWNhdGVzKCkKK3sKKyAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKENlcnRpZmljYXRlc01hcCwgY2VydGlmaWNhdGVzLCAoKSk7CisgICAgcmV0dXJu
IGNlcnRpZmljYXRlczsKK30KKwogUmVzb3VyY2VIYW5kbGVJbnRlcm5hbDo6flJlc291cmNlSGFu
ZGxlSW50ZXJuYWwoKQogewogfQpAQCAtMzUwLDYgKzM2NiwzOSBAQCBzdGF0aWMgUmVzb3VyY2VF
cnJvciBjb252ZXJ0U291cEVycm9yVG9SZXNvdXJjZUVycm9yKEdFcnJvciogZXJyb3IsIFNvdXBS
ZXF1ZXN0KgogICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZzo6ZnJvbVVURjgoZXJyb3It
Pm1lc3NhZ2UpKTsKIH0KIAorc3RhdGljIGJvb2wgdGxzQ2VydGlmaWNhdGVFcXVhbChHVGxzQ2Vy
dGlmaWNhdGUqIGNlcnRpZmljYXRlQSwgR1Rsc0NlcnRpZmljYXRlKiBjZXJ0aWZpY2F0ZUIpCit7
CisgICAgaWYgKCFjZXJ0aWZpY2F0ZUEgfHwgIWNlcnRpZmljYXRlQikKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgaWYgKGNlcnRpZmljYXRlQSA9PSBjZXJ0aWZpY2F0ZUIpCisgICAgICAg
IHJldHVybiB0cnVlOworCisgICAgR0J5dGVBcnJheSogY2VydGlmaWNhdGVEYXRhID0gMDsKKyAg
ICBnX29iamVjdF9nZXQoR19PQkpFQ1QoY2VydGlmaWNhdGVBKSwgImNlcnRpZmljYXRlIiwgJmNl
cnRpZmljYXRlRGF0YSwgTlVMTCk7CisgICAgaWYgKCFjZXJ0aWZpY2F0ZURhdGEpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICBHUmVmUHRyPEdCeXRlQXJyYXk+IGNlcnRpZmljYXRlRGF0YUEg
PSBhZG9wdEdSZWYoY2VydGlmaWNhdGVEYXRhKTsKKworICAgIGNlcnRpZmljYXRlRGF0YSA9IDA7
CisgICAgZ19vYmplY3RfZ2V0KEdfT0JKRUNUKGNlcnRpZmljYXRlQiksICJjZXJ0aWZpY2F0ZSIs
ICZjZXJ0aWZpY2F0ZURhdGEsIE5VTEwpOworICAgIGlmICghY2VydGlmaWNhdGVEYXRhKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgR1JlZlB0cjxHQnl0ZUFycmF5PiBjZXJ0aWZpY2F0ZURh
dGFCID0gYWRvcHRHUmVmKGNlcnRpZmljYXRlRGF0YSk7CisKKyAgICBpZiAoY2VydGlmaWNhdGVE
YXRhQS0+bGVuICE9IGNlcnRpZmljYXRlRGF0YUItPmxlbikKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgcmV0dXJuICFtZW1jbXAoY2VydGlmaWNhdGVEYXRhQS0+ZGF0YSwgY2VydGlmaWNh
dGVEYXRhQi0+ZGF0YSwgY2VydGlmaWNhdGVEYXRhQS0+bGVuKTsKK30KKworc3RhdGljIGlubGlu
ZSBib29sIGhhc1VuaWdub3JlZFRMU0Vycm9ycyhSZXNvdXJjZUhhbmRsZSogaGFuZGxlKQorewor
ICAgIHJldHVybiBoYW5kbGUtPmdldEludGVybmFsKCktPm1fcmVzcG9uc2Uuc291cE1lc3NhZ2VU
TFNFcnJvcnMoKQorICAgICAgICAmJiAhZ0lnbm9yZVNTTEVycm9ycworICAgICAgICAmJiAhYWxs
b3dzQW55SFRUUFNDZXJ0aWZpY2F0ZUhvc3RzKCkuY29udGFpbnMoaGFuZGxlLT5maXJzdFJlcXVl
c3QoKS51cmwoKS5ob3N0KCkubG93ZXIoKSk7Cit9CisKIHN0YXRpYyB2b2lkIHNlbmRSZXF1ZXN0
Q2FsbGJhY2soR09iamVjdCogc291cmNlLCBHQXN5bmNSZXN1bHQqIHJlcywgZ3BvaW50ZXIgZGF0
YSkKIHsKICAgICBSZWZQdHI8UmVzb3VyY2VIYW5kbGU+IGhhbmRsZSA9IHN0YXRpY19jYXN0PFJl
c291cmNlSGFuZGxlKj4oZGF0YSk7CkBAIC0zODUsNiArNDM0LDE4IEBAIHN0YXRpYyB2b2lkIHNl
bmRSZXF1ZXN0Q2FsbGJhY2soR09iamVjdCogc291cmNlLCBHQXN5bmNSZXN1bHQqIHJlcywgZ3Bv
aW50ZXIgZGF0CiAgICAgICAgICAgICBkLT5tX3Jlc3BvbnNlLnNldFNuaWZmZWRDb250ZW50VHlw
ZShzbmlmZmVkVHlwZSk7CiAgICAgICAgIH0KICAgICAgICAgZC0+bV9yZXNwb25zZS51cGRhdGVG
cm9tU291cE1lc3NhZ2Uoc291cE1lc3NhZ2UpOworCisgICAgICAgIGlmIChoYXNVbmlnbm9yZWRU
TFNFcnJvcnMoaGFuZGxlLmdldCgpKSkgeworICAgICAgICAgICAgQ2VydGlmaWNhdGVzTWFwOjpp
dGVyYXRvciBpdGVyID0gY2xpZW50Q2VydGlmaWNhdGVzKCkuZmluZChoYW5kbGUtPmZpcnN0UmVx
dWVzdCgpLnVybCgpLmhvc3QoKS5sb3dlcigpKTsKKyAgICAgICAgICAgIGlmIChpdGVyID09IGNs
aWVudENlcnRpZmljYXRlcygpLmVuZCgpIHx8ICF0bHNDZXJ0aWZpY2F0ZUVxdWFsKGQtPm1fcmVz
cG9uc2Uuc291cE1lc3NhZ2VDZXJ0aWZpY2F0ZSgpLCAoaXRlci0+c2Vjb25kKS5nZXQoKSkpIHsK
KyAgICAgICAgICAgICAgICBHT3duUHRyPGNoYXI+IHVyaShzb3VwX3VyaV90b19zdHJpbmcoc291
cF9yZXF1ZXN0X2dldF91cmkoZC0+bV9zb3VwUmVxdWVzdC5nZXQoKSksIEZBTFNFKSk7CisgICAg
ICAgICAgICAgICAgY2xpZW50LT5kaWRGYWlsKGhhbmRsZS5nZXQoKSwgUmVzb3VyY2VFcnJvcihn
X3F1YXJrX3RvX3N0cmluZyhTT1VQX0hUVFBfRVJST1IpLCBTT1VQX1NUQVRVU19TU0xfRkFJTEVE
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdXJpLmdldCgpLCBTdHJpbmc6OmZyb21VVEY4KF8oIlVuYWNjZXB0YWJsZSBUTFMgY2Vy
dGlmaWNhdGUiKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkLT5tX3Jlc3BvbnNlLnNvdXBNZXNzYWdlVExTRXJyb3JzKCksIGQt
Pm1fcmVzcG9uc2Uuc291cE1lc3NhZ2VDZXJ0aWZpY2F0ZSgpKSk7CisgICAgICAgICAgICAgICAg
Y2xlYW51cFNvdXBSZXF1ZXN0T3BlcmF0aW9uKGhhbmRsZS5nZXQoKSk7CisgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAg
ICAgZC0+bV9yZXNwb25zZS5zZXRVUkwoaGFuZGxlLT5maXJzdFJlcXVlc3QoKS51cmwoKSk7CiAg
ICAgICAgIGNvbnN0IGdjaGFyKiBjb250ZW50VHlwZSA9IHNvdXBfcmVxdWVzdF9nZXRfY29udGVu
dF90eXBlKGQtPm1fc291cFJlcXVlc3QuZ2V0KCkpOwpAQCAtNzQwLDYgKzgwMSwyMSBAQCB2b2lk
IFJlc291cmNlSGFuZGxlOjpjYW5jZWwoKQogICAgICAgICBnX2NhbmNlbGxhYmxlX2NhbmNlbChk
LT5tX2NhbmNlbGxhYmxlLmdldCgpKTsKIH0KIAordm9pZCBSZXNvdXJjZUhhbmRsZTo6c2V0SG9z
dEFsbG93c0FueUhUVFBTQ2VydGlmaWNhdGUoY29uc3QgU3RyaW5nJiBob3N0KQoreworICAgIGFs
bG93c0FueUhUVFBTQ2VydGlmaWNhdGVIb3N0cygpLmFkZChob3N0Lmxvd2VyKCkpOworfQorCit2
b2lkIFJlc291cmNlSGFuZGxlOjpzZXRDbGllbnRDZXJ0aWZpY2F0ZShjb25zdCBTdHJpbmcmIGhv
c3QsIEdUbHNDZXJ0aWZpY2F0ZSogY2VydGlmaWNhdGUpCit7CisgICAgY2xpZW50Q2VydGlmaWNh
dGVzKCkuc2V0KGhvc3QubG93ZXIoKSwgY2VydGlmaWNhdGUpOworfQorCit2b2lkIFJlc291cmNl
SGFuZGxlOjpzZXRJZ25vcmVTU0xFcnJvcnMoYm9vbCBpZ25vcmVTU0xFcnJvcnMpCit7CisgICAg
Z0lnbm9yZVNTTEVycm9ycyA9IGlnbm9yZVNTTEVycm9yczsKK30KKwogc3RhdGljIGJvb2wgaGFz
QmVlblNlbnQoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSkKIHsKICAgICBSZXNvdXJjZUhhbmRsZUlu
dGVybmFsKiBkID0gaGFuZGxlLT5nZXRJbnRlcm5hbCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVzcG9uc2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlc3BvbnNlLmgKaW5kZXggODYy
NGMwNS4uMDZhNTRkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1Jlc291cmNlUmVzcG9uc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXNwb25zZS5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVk
ZSAiUmVzb3VyY2VSZXNwb25zZUJhc2UuaCIKIAogI2luY2x1ZGUgPGxpYnNvdXAvc291cC5oPgor
I2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC0zNywxOCArMzgsMjEgQEAgcHVibGljOgogICAgIFJlc291cmNlUmVzcG9uc2UoKQogICAg
ICAgICA6IFJlc291cmNlUmVzcG9uc2VCYXNlKCkKICAgICAgICAgLCBtX3NvdXBGbGFncyhzdGF0
aWNfY2FzdDxTb3VwTWVzc2FnZUZsYWdzPigwKSkKKyAgICAgICAgLCBtX3Rsc0Vycm9ycyhzdGF0
aWNfY2FzdDxHVGxzQ2VydGlmaWNhdGVGbGFncz4oMCkpCiAgICAgewogICAgIH0KIAogICAgIFJl
c291cmNlUmVzcG9uc2UoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBs
b25nIGxvbmcgZXhwZWN0ZWRMZW5ndGgsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwg
Y29uc3QgU3RyaW5nJiBmaWxlbmFtZSkKICAgICAgICAgOiBSZXNvdXJjZVJlc3BvbnNlQmFzZSh1
cmwsIG1pbWVUeXBlLCBleHBlY3RlZExlbmd0aCwgdGV4dEVuY29kaW5nTmFtZSwgZmlsZW5hbWUp
CiAgICAgICAgICwgbV9zb3VwRmxhZ3Moc3RhdGljX2Nhc3Q8U291cE1lc3NhZ2VGbGFncz4oMCkp
CisgICAgICAgICwgbV90bHNFcnJvcnMoc3RhdGljX2Nhc3Q8R1Rsc0NlcnRpZmljYXRlRmxhZ3M+
KDApKQogICAgIHsKICAgICB9CiAKICAgICBSZXNvdXJjZVJlc3BvbnNlKFNvdXBNZXNzYWdlKiBz
b3VwTWVzc2FnZSkKICAgICAgICAgOiBSZXNvdXJjZVJlc3BvbnNlQmFzZSgpCiAgICAgICAgICwg
bV9zb3VwRmxhZ3Moc3RhdGljX2Nhc3Q8U291cE1lc3NhZ2VGbGFncz4oMCkpCisgICAgICAgICwg
bV90bHNFcnJvcnMoc3RhdGljX2Nhc3Q8R1Rsc0NlcnRpZmljYXRlRmxhZ3M+KDApKQogICAgIHsK
ICAgICAgICAgdXBkYXRlRnJvbVNvdXBNZXNzYWdlKHNvdXBNZXNzYWdlKTsKICAgICB9CkBAIC02
MiwxMSArNjYsMTYgQEAgcHVibGljOgogICAgIGNvbnN0IFN0cmluZyYgc25pZmZlZENvbnRlbnRU
eXBlKCkgY29uc3QgeyByZXR1cm4gbV9zbmlmZmVkQ29udGVudFR5cGU7IH0KICAgICB2b2lkIHNl
dFNuaWZmZWRDb250ZW50VHlwZShjb25zdCBTdHJpbmcmIHZhbHVlKSB7IG1fc25pZmZlZENvbnRl
bnRUeXBlID0gdmFsdWU7IH0KIAorICAgIEdUbHNDZXJ0aWZpY2F0ZSogc291cE1lc3NhZ2VDZXJ0
aWZpY2F0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2VydGlmaWNhdGUuZ2V0KCk7IH0KKyAgICBHVGxz
Q2VydGlmaWNhdGVGbGFncyBzb3VwTWVzc2FnZVRMU0Vycm9ycygpIGNvbnN0IHsgcmV0dXJuIG1f
dGxzRXJyb3JzOyB9CisKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFJlc291cmNlUmVzcG9u
c2VCYXNlOwogCiAgICAgU291cE1lc3NhZ2VGbGFncyBtX3NvdXBGbGFnczsKICAgICBTdHJpbmcg
bV9zbmlmZmVkQ29udGVudFR5cGU7CisgICAgR1JlZlB0cjxHVGxzQ2VydGlmaWNhdGU+IG1fY2Vy
dGlmaWNhdGU7CisgICAgR1Rsc0NlcnRpZmljYXRlRmxhZ3MgbV90bHNFcnJvcnM7CiAKICAgICB2
b2lkIGRvVXBkYXRlUmVzb3VyY2VSZXNwb25zZSgpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXNwb25zZVNvdXAuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVzcG9uc2VTb3Vw
LmNwcAppbmRleCAxNTUwNDhiLi4zMTBiNGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXNwb25zZVNvdXAuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlc3BvbnNlU291cC5jcHAK
QEAgLTUxLDYgKzUxLDExIEBAIFNvdXBNZXNzYWdlKiBSZXNvdXJjZVJlc3BvbnNlOjp0b1NvdXBN
ZXNzYWdlKCkgY29uc3QKIAogICAgIHNvdXBfbWVzc2FnZV9zZXRfZmxhZ3Moc291cE1lc3NhZ2Us
IG1fc291cEZsYWdzKTsKIAorICAgIGlmIChtX2NlcnRpZmljYXRlKQorICAgICAgICBnX29iamVj
dF9zZXQoR19PQkpFQ1Qoc291cE1lc3NhZ2UpLCAidGxzLWNlcnRpZmljYXRlIiwgbV9jZXJ0aWZp
Y2F0ZS5nZXQoKSwgTlVMTCk7CisgICAgaWYgKG1fdGxzRXJyb3JzKQorICAgICAgICBnX29iamVj
dF9zZXQoR19PQkpFQ1Qoc291cE1lc3NhZ2UpLCAidGxzLWVycm9ycyIsIG1fdGxzRXJyb3JzLCBO
VUxMKTsKKwogICAgIC8vIEJvZHkgZGF0YSBpcyBub3QgaW4gdGhlIG1lc3NhZ2UuCiAgICAgcmV0
dXJuIHNvdXBNZXNzYWdlOwogfQpAQCAtODQsNiArODksMTAgQEAgdm9pZCBSZXNvdXJjZVJlc3Bv
bnNlOjp1cGRhdGVGcm9tU291cE1lc3NhZ2UoU291cE1lc3NhZ2UqIHNvdXBNZXNzYWdlKQogICAg
IHNldEV4cGVjdGVkQ29udGVudExlbmd0aChzb3VwX21lc3NhZ2VfaGVhZGVyc19nZXRfY29udGVu
dF9sZW5ndGgoc291cE1lc3NhZ2UtPnJlc3BvbnNlX2hlYWRlcnMpKTsKICAgICBzZXRIVFRQU3Rh
dHVzVGV4dChzb3VwTWVzc2FnZS0+cmVhc29uX3BocmFzZSk7CiAgICAgc2V0U3VnZ2VzdGVkRmls
ZW5hbWUoZmlsZW5hbWVGcm9tSFRUUENvbnRlbnREaXNwb3NpdGlvbihodHRwSGVhZGVyRmllbGQo
IkNvbnRlbnQtRGlzcG9zaXRpb24iKSkpOworCisgICAgR1Rsc0NlcnRpZmljYXRlKiBjZXJ0aWZp
Y2F0ZSA9IDA7CisgICAgZ19vYmplY3RfZ2V0KEdfT0JKRUNUKHNvdXBNZXNzYWdlKSwgInRscy1j
ZXJ0aWZpY2F0ZSIsICZjZXJ0aWZpY2F0ZSwgInRscy1lcnJvcnMiLCAmbV90bHNFcnJvcnMsIE5V
TEwpOworICAgIG1fY2VydGlmaWNhdGUgPSBjZXJ0aWZpY2F0ZTsKIH0KIAogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19tYWluLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZs
L2V3ay9ld2tfbWFpbi5jcHAKaW5kZXggYjQ4YzI4YS4uYTUwOTA2NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9lZmwvZXdrL2V3a19tYWluLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9l
d2svZXdrX21haW4uY3BwCkBAIC0xODEsNSArMTgxLDcgQEAgRWluYV9Cb29sIF9ld2tfaW5pdF9i
b2R5KHZvaWQpCiAgICAgU291cFNlc3Npb25GZWF0dXJlKiBhdXRoX2RpYWxvZyA9IHN0YXRpY19j
YXN0PFNvdXBTZXNzaW9uRmVhdHVyZSo+KGdfb2JqZWN0X25ldyhFV0tfVFlQRV9TT1VQX0FVVEhf
RElBTE9HLCAwKSk7CiAgICAgc291cF9zZXNzaW9uX2FkZF9mZWF0dXJlKHNlc3Npb24sIGF1dGhf
ZGlhbG9nKTsKIAorICAgIFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpzZXRJZ25vcmVTU0xFcnJv
cnModHJ1ZSk7CisKICAgICByZXR1cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvZ3RrL3dlYmtpdC93ZWJraXRnbG9iYWxzLmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXRnbG9iYWxzLmNwcAppbmRleCA0MmY3YTFkLi40MDM1NmI4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0Z2xvYmFscy5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9ndGsvd2Via2l0L3dlYmtpdGdsb2JhbHMuY3BwCkBAIC01MzEsNiArNTMxLDggQEAgdm9p
ZCB3ZWJraXRJbml0KCkKICAgICBzb3VwX3Nlc3Npb25fYWRkX2ZlYXR1cmUoc2Vzc2lvbiwgYXV0
aERpYWxvZyk7CiAgICAgZ19vYmplY3RfdW5yZWYoYXV0aERpYWxvZyk7CiAKKyAgICBXZWJDb3Jl
OjpSZXNvdXJjZUhhbmRsZTo6c2V0SWdub3JlU1NMRXJyb3JzKHRydWUpOworCiAjaWYgVVNFKENM
VVRURVIpCiAgICAgZ3RrX2NsdXR0ZXJfaW5pdCgwLCAwKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9lZmwvV2ViUHJvY2Vzc01haW5FZmwuY3BwIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9lZmwvV2ViUHJvY2Vzc01haW5FZmwuY3BwCmluZGV4IDky
ZDM1MTYuLjZhMGJiY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvZWZs
L1dlYlByb2Nlc3NNYWluRWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2Vm
bC9XZWJQcm9jZXNzTWFpbkVmbC5jcHAKQEAgLTc0LDYgKzc0LDggQEAgV0tfRVhQT1JUIGludCBX
ZWJQcm9jZXNzTWFpbkVmbChpbnQgYXJnYywgY2hhciogYXJndltdKQogICAgICAgICBzb3VwX3Vy
aV9mcmVlKHByb3h5VXJpKTsKICAgICB9CiAKKyAgICBXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6
c2V0SWdub3JlU1NMRXJyb3JzKHRydWUpOworCiAgICAgaW50IHNvY2tldCA9IGF0b2koYXJndlsx
XSk7CiAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuaW5pdGlhbGl6ZShzb2NrZXQsIFJ1bkxvb3A6
Om1haW4oKSk7CiAgICAgUnVuTG9vcDo6cnVuKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL2d0ay9XZWJQcm9jZXNzTWFpbkd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL2d0ay9XZWJQcm9jZXNzTWFpbkd0ay5jcHAKaW5kZXggNDViODU4MS4uOTBmOWZj
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9ndGsvV2ViUHJvY2Vzc01h
aW5HdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvZ3RrL1dlYlByb2Nlc3NN
YWluR3RrLmNwcApAQCAtNzAsNiArNzAsOSBAQCBXS19FWFBPUlQgaW50IFdlYlByb2Nlc3NNYWlu
R3RrKGludCBhcmdjLCBjaGFyKiBhcmd2W10pCiAgICAgZ19vYmplY3Rfc2V0KHNlc3Npb24sIFNP
VVBfU0VTU0lPTl9TU0xfVVNFX1NZU1RFTV9DQV9GSUxFLCBUUlVFLAogICAgICAgICAgICAgICAg
ICBTT1VQX1NFU1NJT05fU1NMX1NUUklDVCwgRkFMU0UsIE5VTEwpOwogCisgICAgLy8gVGhpcyBp
cyBmb3IgY29tcGF0aWJpbGl0eSwgaXQgd2lsbCBiZSByZW1vdmVkIHdoZW4gVUkgcHJvY2VzcyBj
YW4gaGFuZGxlIFNTTCBlcnJvcnMuCisgICAgV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnNldEln
bm9yZVNTTEVycm9ycyh0cnVlKTsKKwogICAgIFJ1bkxvb3A6OnJ1bigpOwogCiAgICAgcmV0dXJu
IDA7Cg==
</data>
<flag name="commit-queue"
          id="160179"
          type_id="3"
          status="-"
          setter="gyuyoung.kim"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>151687</attachid>
            <date>2012-07-11 05:01:34 -0700</date>
            <delta_ts>2012-07-11 08:30:17 -0700</delta_ts>
            <desc>Updated patch</desc>
            <filename>wk-ssl-errors4.diff</filename>
            <type>text/plain</type>
            <size>21776</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggMDY2Zjk3NS4uYTZlMzkzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxMi0wNy0xMSAg
Q2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgSGFu
ZGxlIFNTTCBlcnJvcnMgZm9yIFNPVVAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTkwMjY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIEdCeXRlQXJyYXkuCisKKyAgICAgICAgKiB3
dGYvZ29iamVjdC9HUmVmUHRyLmNwcDoKKyAgICAgICAgKFdURjo6cmVmR1B0cik6CisgICAgICAg
IChXVEYpOgorICAgICAgICAoV1RGOjpkZXJlZkdQdHIpOgorICAgICAgICAqIHd0Zi9nb2JqZWN0
L0dSZWZQdHIuaDoKKyAgICAgICAgKFdURik6CisgICAgICAgICogd3RmL2dvYmplY3QvR1R5cGVk
ZWZzLmg6CisKIDIwMTItMDctMTAgIEpvY2VseW4gVHVyY290dGUgIDxqb2NlbHluLnR1cmNvdHRl
QG5va2lhLmNvbT4KIAogICAgICAgICBSZS1lbmFibGUgX19kZWNsc3BlYyhkbHtpbXBvcnQsZXhw
b3J0fSkgZm9yIE1pbkdXIHdoZW4gdXNpbmcgRVhQT1JUX01BQ1JPUwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDRm
YmIwNTMuLjc5NTljYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MSBAQAorMjAxMi0wNy0xMSAg
Q2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgSGFu
ZGxlIFNTTCBlcnJvcnMgZm9yIFNPVVAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTkwMjY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCB0aGlzIGlzIGNvdmVyZWQgYnkgZXhpc3Rpbmcg
dGVzdHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmg6CisgICAgICAg
IChXZWJDb3JlKTogQWRkIHVuYWNjZXB0YWJsZVRMU0NlcnRpZmljYXRlKCkgZm9yIFNPVVAuCisg
ICAgICAgICogcGxhdGZvcm0vZWZsL0xvY2FsaXplZFN0cmluZ3NFZmwuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6dW5hY2NlcHRhYmxlVExTQ2VydGlmaWNhdGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2d0ay9Mb2NhbGl6ZWRTdHJpbmdzR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnVuYWNjZXB0
YWJsZVRMU0NlcnRpZmljYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
SGFuZGxlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3Iu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlRXJyb3I6OlJlc291cmNlRXJyb3IpOiBBZGQg
bmV3IGNvbnN0cmN1dG9yIGZvcgorICAgICAgICBTU0wgZXJyb3JzIHRoYXQgcmVjZWl2ZXMgYSBj
ZXJ0aWZpY2F0ZSBhbmQgVExTIGVycm9ycy4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlRXJy
b3I6OnRsc0Vycm9ycyk6IFJldHVybiBUTFMgZXJyb3JzLgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VFcnJvcjo6Y2VydGlmaWNhdGUpOiBSZXR1cm4gdGhlIGNlcnRpZmljYXRlLgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwOgorICAgICAg
ICAoSG9zdFRMU0NlcnRpZmljYXRlcyk6IEhlbHBlciBjbGFzcyB0byBzdG9yZSBjZXJ0aWZpY2F0
ZXMgZm9yIGEKKyAgICAgICAgaG9zdC4KKyAgICAgICAgKFdlYkNvcmU6Okhvc3RUTFNDZXJ0aWZp
Y2F0ZXM6OmFkZCk6IEFkZCBhIG5ldyBjZXJ0aWZpY2F0ZS4KKyAgICAgICAgKFdlYkNvcmU6Okhv
c3RUTFNDZXJ0aWZpY2F0ZXM6OmNoZWNrKTogQ2hlY2sgd2hldGhlciBjZXJ0aWZpY2F0ZQorICAg
ICAgICBpcyBzdG9yZWQuCisgICAgICAgIChXZWJDb3JlOjpIb3N0VExTQ2VydGlmaWNhdGVzOjpj
b21wdXRlQ2VydGlmaWNhdGVIYXNoKTogQ29tcHV0ZQorICAgICAgICB0aGUgU0hBMSBvZiB0aGUg
Y2VydGlmaWNhdGUgZGF0YS4KKyAgICAgICAgKFdlYkNvcmU6OmFsbG93c0FueUhUVFBTQ2VydGlm
aWNhdGVIb3N0cyk6IEdsb2JhbCBzZXQgdG8gc3RvcmUKKyAgICAgICAgaG9zdG5hbWVzIGZvciB3
aGljaCBTU0wgZXJyb3JzIHNob3VsZCBiZSBpZ25vcmVkLgorICAgICAgICAoV2ViQ29yZTo6Y2xp
ZW50Q2VydGlmaWNhdGVzKTogR2xvYmFsIG1hcCB0byBzdG9yZSBjbGllbnQKKyAgICAgICAgY2Vy
dGlmaWNhdGVzLgorICAgICAgICAoV2ViQ29yZTo6dGxzQ2VydGlmaWNhdGVFcXVhbCk6IENoZWNr
IHdoZXRoZXIgdHdvIEdUbHNDZXJ0aWZpY2F0ZQorICAgICAgICBvYmplY3RzIGNvbnRhaW4gdGhl
IHNhbWUgSFRUUFMgY2VydGlmaWNhdGUuCisgICAgICAgIChXZWJDb3JlOjpoYXNVbmlnbm9yZWRU
TFNFcnJvcnMpOiBIZWxwZXIgZnVuY3Rpb24gdG8gY2hlY2sgd2hldGhlcgorICAgICAgICBjdXJy
ZW50IG1lc3NhZ2UgY29udGFpbnMgVExTIGVycm9ycyB0aGF0IHNob3VsZG4ndCBiZSBpZ25vcmVk
IGFuZAorICAgICAgICBjZXJ0aWZpY2F0ZSBoYXNuJ3QgYmVlbiBhcHByb3ZlZCBhbHJlYWR5Lgor
ICAgICAgICAoV2ViQ29yZTo6c2VuZFJlcXVlc3RDYWxsYmFjayk6IEZpbmlzaCB0aGUgbG9hZCB3
aXRoIGFuIGVycm9yIGluCisgICAgICAgIGNhc2Ugb2YgU1NMIGVycm9ycyBub3QgaGFuZGxlZCBi
eSB0aGUgU291cFNlc3Npb24uCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6c2V0
SG9zdEFsbG93c0FueUhUVFBTQ2VydGlmaWNhdGUpOiBBZGQKKyAgICAgICAgdGhlIGdpdmVuIGhv
c3RuYW1lIHRvIHRoZSBsaXN0IG9mIGhvc3RzIGZvciB3aGljaCBTU0wgZXJyb3JzIGFyZQorICAg
ICAgICBpZ25vcmVkLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnNldENsaWVu
dENlcnRpZmljYXRlKTogU3RvcmUgdGhlIGNsaWVudAorICAgICAgICBjZXJ0aWZpY2F0ZSBmb3Ig
dGhlIGdpdmVuIGhvc3QuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6c2V0SWdu
b3JlU1NMRXJyb3JzKTogU2V0IHdoZXRoZXIgYWxsIFNTTAorICAgICAgICBlcnJvcnMgc2hvdWxk
IGJlIGlnbm9yZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVz
cG9uc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2U6OnNvdXBNZXNzYWdl
Q2VydGlmaWNhdGUpOiBSZXR1cm4gdGhlCisgICAgICAgIGNlcnRpZmljYXRlLgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6c291cE1lc3NhZ2VUTFNFcnJvcnMpOiBSZXR1cm4g
dGhlIFRMUworICAgICAgICBlcnJvcnMuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3Vw
L1Jlc291cmNlUmVzcG9uc2VTb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2U6OnRvU291cE1lc3NhZ2UpOiBTZXQgdGhlIGNlcnRpZmljYXRlCisgICAgICAgIGFuZCBU
TFMgZXJyb3JzIHRvIHRoZSBuZXdseSBjcmVhdGVkIFNvdXBNZXNzYWdlLgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZTo6dXBkYXRlRnJvbVNvdXBNZXNzYWdlKTogR2V0IHRoZQor
ICAgICAgICBjZXJ0aWZpY2F0ZSBhbmQgVExTIGVycm9ycyBmcm9tIHRoZSBTb3VwTWVzc2FnZS4K
KwogMjAxMi0wNy0xMCAgU2hpbnlhIEthd2FuYWthICA8c2hpbnlha0BjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgU2hhZG93Um9vdCBzaG91bGQga25vdyBpdHMgdHlwZSBpbiBkZWJ1ZyBidWlsZC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
ZWZsL0NoYW5nZUxvZwppbmRleCAxNDFmOGJmLi40YTFiMzEwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMTItMDctMTEgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNp
YUBpZ2FsaWEuY29tPgorCisgICAgICAgIEhhbmRsZSBTU0wgZXJyb3JzIGZvciBTT1VQCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDI2NworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElnbm9yZSBTU0wgZXJy
b3JzIGJ5IGRlZmF1bHQgZm9yIGNvbXBhdGliaWxpdHkuCisKKyAgICAgICAgKiBld2svZXdrX21h
aW4uY3BwOgorICAgICAgICAoX2V3a19pbml0X2JvZHkpOgorCiAyMDEyLTA3LTEwICBBZGFtIEJh
cnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgTGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcENvbmZpZ3VyYXRpb25Gb3JWaWV3cG9ydCBzaG91bGQgbW92ZSB0byBJbnRlcm5hbHMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZ3Rr
L0NoYW5nZUxvZwppbmRleCA5NWZhNTNlLi40Nzg1YjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTUgQEAKKzIwMTItMDctMTEgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBp
Z2FsaWEuY29tPgorCisgICAgICAgIEhhbmRsZSBTU0wgZXJyb3JzIGZvciBTT1VQCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDI2NworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElnbm9yZSBTU0wgZXJyb3Jz
IGJ5IGRlZmF1bHQgZm9yIGNvbXBhdGliaWxpdHkuCisKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0
Z2xvYmFscy5jcHA6CisgICAgICAgICh3ZWJraXRJbml0KToKKwogMjAxMi0wNy0xMCAgQWRhbSBC
YXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFdlYkNvcmU6OlNldHRpbmdzIGZv
ciBIaXhpZTc2IFdlYlNvY2tldCBwcm90b2NvbCBkb2Vzbid0IGRvIGFueXRoaW5nIGFuZCBzaG91
bGQgYmUgcmVtb3ZlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGY4NzEyZTIuLjM5OWRhNzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNyBAQAorMjAxMi0wNy0xMSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2Fy
Y2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgSGFuZGxlIFNTTCBlcnJvcnMgZm9yIFNPVVAKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkwMjY3CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSWdub3JlIFNTTCBl
cnJvcnMgYnkgZGVmYXVsdCBmb3IgY29tcGF0aWJpbGl0eS4KKworICAgICAgICAqIFdlYlByb2Nl
c3MvZWZsL1dlYlByb2Nlc3NNYWluRWZsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c01haW5FZmwpOgorICAgICAgICAqIFdlYlByb2Nlc3MvZ3RrL1dlYlByb2Nlc3NNYWluR3RrLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc01haW5HdGspOgorCiAyMDEyLTA3LTEwICBO
bydhbSBSb3NlbnRoYWwgIDxub2FtLnJvc2VudGhhbEBub2tpYS5jb20+CiAKICAgICAgICAgW1F0
XSBFbmFibGUgYW50aWFsaWFzaW5nIGZvciBUZXh0dXJlTWFwcGVyCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9nb2JqZWN0L0dSZWZQdHIuY3BwIGIvU291cmNlL1dURi93dGYvZ29iamVjdC9H
UmVmUHRyLmNwcAppbmRleCAzYTAxNGRhLi41YWEwNjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi9nb2JqZWN0L0dSZWZQdHIuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL2dvYmplY3QvR1Jl
ZlB0ci5jcHAKQEAgLTEyMCw2ICsxMjAsMTkgQEAgdGVtcGxhdGUgPD4gdm9pZCBkZXJlZkdQdHIo
R1B0ckFycmF5KiBwdHIpCiAgICAgICAgIGdfcHRyX2FycmF5X3VucmVmKHB0cik7CiB9CiAKK3Rl
bXBsYXRlIDw+IEdCeXRlQXJyYXkqIHJlZkdQdHIoR0J5dGVBcnJheSogcHRyKQoreworICAgIGlm
IChwdHIpCisgICAgICAgIGdfYnl0ZV9hcnJheV9yZWYocHRyKTsKKyAgICByZXR1cm4gcHRyOwor
fQorCit0ZW1wbGF0ZSA8PiB2b2lkIGRlcmVmR1B0cihHQnl0ZUFycmF5KiBwdHIpCit7CisgICAg
aWYgKHB0cikKKyAgICAgICAgZ19ieXRlX2FycmF5X3VucmVmKHB0cik7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIFdURgogCiAjZW5kaWYgLy8gRU5BQkxFKEdMSUJfU1VQUE9SVCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL2dvYmplY3QvR1JlZlB0ci5oIGIvU291cmNlL1dURi93dGYvZ29iamVj
dC9HUmVmUHRyLmgKaW5kZXggZjRmZjNkMS4uZGY2ODg4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvZ29iamVjdC9HUmVmUHRyLmgKKysrIGIvU291cmNlL1dURi93dGYvZ29iamVjdC9HUmVm
UHRyLmgKQEAgLTIxMCw2ICsyMTAsOCBAQCB0ZW1wbGF0ZSA8PiBHU291cmNlKiByZWZHUHRyKEdT
b3VyY2UqIHB0cik7CiB0ZW1wbGF0ZSA8PiB2b2lkIGRlcmVmR1B0cihHU291cmNlKiBwdHIpOwog
dGVtcGxhdGUgPD4gR1B0ckFycmF5KiByZWZHUHRyKEdQdHJBcnJheSopOwogdGVtcGxhdGUgPD4g
dm9pZCBkZXJlZkdQdHIoR1B0ckFycmF5Kik7Cit0ZW1wbGF0ZSA8PiBHQnl0ZUFycmF5KiByZWZH
UHRyKEdCeXRlQXJyYXkqKTsKK3RlbXBsYXRlIDw+IHZvaWQgZGVyZWZHUHRyKEdCeXRlQXJyYXkq
KTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSBUKiByZWZHUHRyKFQqIHB0cikKIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2dvYmplY3QvR1R5cGVkZWZzLmggYi9Tb3VyY2Uv
V1RGL3d0Zi9nb2JqZWN0L0dUeXBlZGVmcy5oCmluZGV4IDc5YzMzZDIuLjJlZmMwNzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2dvYmplY3QvR1R5cGVkZWZzLmgKKysrIGIvU291cmNlL1dU
Ri93dGYvZ29iamVjdC9HVHlwZWRlZnMuaApAQCAtNjQsNiArNjQsNyBAQCB0eXBlZGVmIHVuaW9u
IF9HZGtFdmVudCBHZGtFdmVudDsKIHR5cGVkZWYgc3RydWN0IF9HVGltZXIgR1RpbWVyOwogdHlw
ZWRlZiBzdHJ1Y3QgX0dLZXlGaWxlIEdLZXlGaWxlOwogdHlwZWRlZiBzdHJ1Y3QgX0dQdHJBcnJh
eSBHUHRyQXJyYXk7Cit0eXBlZGVmIHN0cnVjdCBfR0J5dGVBcnJheSBHQnl0ZUFycmF5OwogCiAj
aWYgVVNFKENBSVJPKQogdHlwZWRlZiBzdHJ1Y3QgX2NhaXJvX3N1cmZhY2UgY2Fpcm9fc3VyZmFj
ZV90OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5n
cy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5oCmluZGV4IGZl
NjY4NmQuLjkxMzM3OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2Fs
aXplZFN0cmluZ3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJp
bmdzLmgKQEAgLTIxOSw2ICsyMTksOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgU3RyaW5n
IGRhdGVGb3JtYXRNb250aFRleHQoKTsKICAgICBTdHJpbmcgZGF0ZUZvcm1hdERheUluTW9udGhU
ZXh0KCk7CiAjZW5kaWYKKyNpZiBVU0UoU09VUCkKKyAgICBTdHJpbmcgdW5hY2NlcHRhYmxlVExT
Q2VydGlmaWNhdGUoKTsKKyNlbmRpZgogCiAjaWYgIVBMQVRGT1JNKENIUk9NSVVNKQogI2RlZmlu
ZSBXRUJfVUlfU1RSSU5HKHN0cmluZywgZGVzY3JpcHRpb24pIFdlYkNvcmU6OmxvY2FsaXplZFN0
cmluZyhzdHJpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvTG9j
YWxpemVkU3RyaW5nc0VmbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvTG9jYWxp
emVkU3RyaW5nc0VmbC5jcHAKaW5kZXggMjYzYjViMy4uOTI1MmZiMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL0xvY2FsaXplZFN0cmluZ3NFZmwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9Mb2NhbGl6ZWRTdHJpbmdzRWZsLmNwcApAQCAtNTY2
LDYgKzU2NiwxMSBAQCBTdHJpbmcgaW5zZWN1cmVQbHVnaW5WZXJzaW9uVGV4dCgpCiAgICAgcmV0
dXJuIFN0cmluZygpOwogfQogCitTdHJpbmcgdW5hY2NlcHRhYmxlVExTQ2VydGlmaWNhdGUoKQor
eworICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KCJVbmFjY2VwdGFibGUgVExTIGNlcnRpZmlj
YXRlIik7Cit9CisKIFN0cmluZyBsb2NhbGl6ZWRTdHJpbmcoY29uc3QgY2hhcioga2V5KQogewog
ICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGtleSwgc3RybGVuKGtleSkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0xvY2FsaXplZFN0cmluZ3NHdGsuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0xvY2FsaXplZFN0cmluZ3NHdGsuY3BwCmluZGV4
IDRiYjJjZTAuLmY2ZDJmYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9Mb2NhbGl6ZWRTdHJpbmdzR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvTG9jYWxpemVkU3RyaW5nc0d0ay5jcHAKQEAgLTcxNyw2ICs3MTcsMTEgQEAgU3RyaW5nIHZh
bGlkYXRpb25NZXNzYWdlU3RlcE1pc21hdGNoVGV4dChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJp
bmcmKQogICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KF8oInN0ZXAgbWlzbWF0Y2giKSk7CiB9
CiAKK1N0cmluZyB1bmFjY2VwdGFibGVUTFNDZXJ0aWZpY2F0ZSgpCit7CisgICAgcmV0dXJuIFN0
cmluZzo6ZnJvbVVURjgoXygiVW5hY2NlcHRhYmxlIFRMUyBjZXJ0aWZpY2F0ZSIpKTsKK30KKwog
U3RyaW5nIGxvY2FsaXplZFN0cmluZyhjb25zdCBjaGFyKiBrZXkpCiB7CiAgICAgcmV0dXJuIFN0
cmluZzo6ZnJvbVVURjgoa2V5LCBzdHJsZW4oa2V5KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgKaW5kZXggZGRjYTBkMi4uYzBkZDc2OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRs
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUu
aApAQCAtMTY4LDYgKzE2OCw5IEBAIHB1YmxpYzoKIAogI2lmIFVTRShTT1VQKQogICAgIHN0YXRp
YyBTb3VwU2Vzc2lvbiogZGVmYXVsdFNlc3Npb24oKTsKKyAgICBzdGF0aWMgdm9pZCBzZXRIb3N0
QWxsb3dzQW55SFRUUFNDZXJ0aWZpY2F0ZShjb25zdCBTdHJpbmcmKTsKKyAgICBzdGF0aWMgdm9p
ZCBzZXRDbGllbnRDZXJ0aWZpY2F0ZShjb25zdCBTdHJpbmcmIGhvc3QsIEdUbHNDZXJ0aWZpY2F0
ZSopOworICAgIHN0YXRpYyB2b2lkIHNldElnbm9yZVNTTEVycm9ycyhib29sKTsKICNlbmRpZgog
CiAgICAgLy8gVXNlZCB0byB3b3JrIGFyb3VuZCB0aGUgZmFjdCB0aGF0IHlvdSBkb24ndCBnZXQg
YW55IG1vcmUgTlNVUkxDb25uZWN0aW9uIGNhbGxiYWNrcyB1bnRpbCB5b3UgcmV0dXJuIGZyb20g
dGhlIG9uZSB5b3UncmUgaW4uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9zb3VwL1Jlc291cmNlRXJyb3IuaAppbmRleCAyZDExMzY3Li4zNzg4MGU1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJvci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUVycm9y
LmgKQEAgLTI3LDYgKzI3LDkgQEAKICNkZWZpbmUgUmVzb3VyY2VFcnJvcl9oCiAKICNpbmNsdWRl
ICJSZXNvdXJjZUVycm9yQmFzZS5oIgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4K
KwordHlwZWRlZiBzdHJ1Y3QgX0dUbHNDZXJ0aWZpY2F0ZSBHVGxzQ2VydGlmaWNhdGU7CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMzQsMTMgKzM3LDI5IEBAIGNsYXNzIFJlc291cmNlRXJy
b3IgOiBwdWJsaWMgUmVzb3VyY2VFcnJvckJhc2UKIHsKIHB1YmxpYzoKICAgICBSZXNvdXJjZUVy
cm9yKCkKKyAgICAgICAgOiBtX3Rsc0Vycm9ycygwKQogICAgIHsKICAgICB9CiAKICAgICBSZXNv
dXJjZUVycm9yKGNvbnN0IFN0cmluZyYgZG9tYWluLCBpbnQgZXJyb3JDb2RlLCBjb25zdCBTdHJp
bmcmIGZhaWxpbmdVUkwsIGNvbnN0IFN0cmluZyYgbG9jYWxpemVkRGVzY3JpcHRpb24pCiAgICAg
ICAgIDogUmVzb3VyY2VFcnJvckJhc2UoZG9tYWluLCBlcnJvckNvZGUsIGZhaWxpbmdVUkwsIGxv
Y2FsaXplZERlc2NyaXB0aW9uKQorICAgICAgICAsIG1fdGxzRXJyb3JzKDApCiAgICAgewogICAg
IH0KKworICAgIFJlc291cmNlRXJyb3IoY29uc3QgU3RyaW5nJiBkb21haW4sIGludCBlcnJvckNv
ZGUsIGNvbnN0IFN0cmluZyYgZmFpbGluZ1VSTCwgY29uc3QgU3RyaW5nJiBsb2NhbGl6ZWREZXNj
cmlwdGlvbiwgdW5zaWduZWQgdGxzRXJyb3JzLCBHVGxzQ2VydGlmaWNhdGUqIGNlcnRpZmljYXRl
KQorICAgICAgICA6IFJlc291cmNlRXJyb3JCYXNlKGRvbWFpbiwgZXJyb3JDb2RlLCBmYWlsaW5n
VVJMLCBsb2NhbGl6ZWREZXNjcmlwdGlvbikKKyAgICAgICAgLCBtX3Rsc0Vycm9ycyh0bHNFcnJv
cnMpCisgICAgICAgICwgbV9jZXJ0aWZpY2F0ZShjZXJ0aWZpY2F0ZSkKKyAgICB7CisgICAgfQor
CisgICAgdW5zaWduZWQgdGxzRXJyb3JzKCkgY29uc3QgeyByZXR1cm4gbV90bHNFcnJvcnM7IH0K
KyAgICBHVGxzQ2VydGlmaWNhdGUqIGNlcnRpZmljYXRlKCkgY29uc3QgeyByZXR1cm4gbV9jZXJ0
aWZpY2F0ZS5nZXQoKTsgfQorCitwcml2YXRlOgorICAgIHVuc2lnbmVkIG1fdGxzRXJyb3JzOwor
ICAgIEdSZWZQdHI8R1Rsc0NlcnRpZmljYXRlPiBtX2NlcnRpZmljYXRlOwogfTsKIAogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFu
ZGxlU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3Vy
Y2VIYW5kbGVTb3VwLmNwcAppbmRleCA2MGU0ZTE1Li43YWViNzI4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVT
b3VwLmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAi
R093blB0clNvdXAuaCIKICNpbmNsdWRlICJIVFRQUGFyc2Vycy5oIgorI2luY2x1ZGUgIkxvY2Fs
aXplZFN0cmluZ3MuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVS
ZWdpc3RyeS5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCkBAIC01Niw2ICs1Nyw3IEBA
CiAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICNpbmNsdWRl
IDx1bmlzdGQuaD4KKyNpbmNsdWRlIDx3dGYvU0hBMS5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0
L0dSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKQEAgLTE1OSw2ICsx
NjEsNDMgQEAgcHJpdmF0ZToKICAgICBHUmVmUHRyPEdNYWluTG9vcD4gbV9tYWluTG9vcDsKIH07
CiAKK2NsYXNzIEhvc3RUTFNDZXJ0aWZpY2F0ZXMgeworcHVibGljOgorICAgIHN0YXRpYyBjb25z
dCBzaXplX3Qgc2hhMUhhc2hTaXplID0gMjA7CisKKyAgICB2b2lkIGFkZChHVGxzQ2VydGlmaWNh
dGUqIGNlcnRpZmljYXRlKQorICAgIHsKKyAgICAgICAgU3RyaW5nIGNlcnRpZmljYXRlSGFzaCA9
IGNvbXB1dGVDZXJ0aWZpY2F0ZUhhc2goY2VydGlmaWNhdGUpOworICAgICAgICBpZiAoIWNlcnRp
ZmljYXRlSGFzaC5pc0VtcHR5KCkpCisgICAgICAgICAgICBtX2NlcnRpZmljYXRlcy5hZGQoY2Vy
dGlmaWNhdGVIYXNoKTsKKyAgICB9CisKKyAgICBib29sIGNoZWNrKEdUbHNDZXJ0aWZpY2F0ZSog
Y2VydGlmaWNhdGUpCisgICAgeworICAgICAgICByZXR1cm4gbV9jZXJ0aWZpY2F0ZXMuY29udGFp
bnMoY29tcHV0ZUNlcnRpZmljYXRlSGFzaChjZXJ0aWZpY2F0ZSkpOworICAgIH0KKworcHJpdmF0
ZToKKyAgICBzdGF0aWMgU3RyaW5nIGNvbXB1dGVDZXJ0aWZpY2F0ZUhhc2goR1Rsc0NlcnRpZmlj
YXRlKiBjZXJ0aWZpY2F0ZSkKKyAgICB7CisgICAgICAgIEdCeXRlQXJyYXkqIGRhdGEgPSAwOwor
ICAgICAgICBnX29iamVjdF9nZXQoR19PQkpFQ1QoY2VydGlmaWNhdGUpLCAiY2VydGlmaWNhdGUi
LCAmZGF0YSwgTlVMTCk7CisgICAgICAgIGlmICghZGF0YSkKKyAgICAgICAgICAgIHJldHVybiBT
dHJpbmcoKTsKKworICAgICAgICBHUmVmUHRyPEdCeXRlQXJyYXk+IGNlcnRpZmljYXRlRGF0YSA9
IGFkb3B0R1JlZihkYXRhKTsKKyAgICAgICAgU0hBMSBzaGExOworICAgICAgICBzaGExLmFkZEJ5
dGVzKGNlcnRpZmljYXRlRGF0YS0+ZGF0YSwgY2VydGlmaWNhdGVEYXRhLT5sZW4pOworCisgICAg
ICAgIFZlY3Rvcjx1aW50OF90LCBzaGExSGFzaFNpemU+IGRpZ2VzdDsKKyAgICAgICAgc2hhMS5j
b21wdXRlSGFzaChkaWdlc3QpOworCisgICAgICAgIHJldHVybiBiYXNlNjRFbmNvZGUocmVpbnRl
cnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGlnZXN0LmRhdGEoKSksIHNoYTFIYXNoU2l6ZSk7Cisg
ICAgfQorCisgICAgSGFzaFNldDxTdHJpbmc+IG1fY2VydGlmaWNhdGVzOworfTsKKwogc3RhdGlj
IHZvaWQgY2xlYW51cFNvdXBSZXF1ZXN0T3BlcmF0aW9uKFJlc291cmNlSGFuZGxlKiwgYm9vbCBp
c0Rlc3Ryb3lpbmcpOwogc3RhdGljIHZvaWQgc2VuZFJlcXVlc3RDYWxsYmFjayhHT2JqZWN0Kiwg
R0FzeW5jUmVzdWx0KiwgZ3BvaW50ZXIpOwogc3RhdGljIHZvaWQgcmVhZENhbGxiYWNrKEdPYmpl
Y3QqLCBHQXN5bmNSZXN1bHQqLCBncG9pbnRlcik7CkBAIC0xNjgsNiArMjA3LDIxIEBAIHN0YXRp
YyBib29sIHN0YXJ0Tm9uSFRUUFJlcXVlc3QoUmVzb3VyY2VIYW5kbGUqLCBLVVJMKTsKIHN0YXRp
YyBpbnQgIG1pbGlzZWNvbmRzU2luY2VSZXF1ZXN0KGRvdWJsZSByZXF1ZXN0VGltZSk7CiAjZW5k
aWYKIAorc3RhdGljIGJvb2wgZ0lnbm9yZVNTTEVycm9ycyA9IGZhbHNlOworCitzdGF0aWMgSGFz
aFNldDxTdHJpbmc+JiBhbGxvd3NBbnlIVFRQU0NlcnRpZmljYXRlSG9zdHMoKQoreworICAgIERF
RklORV9TVEFUSUNfTE9DQUwoSGFzaFNldDxTdHJpbmc+LCBob3N0cywgKCkpOworICAgIHJldHVy
biBob3N0czsKK30KKwordHlwZWRlZiBIYXNoTWFwPFN0cmluZywgSG9zdFRMU0NlcnRpZmljYXRl
cz4gQ2VydGlmaWNhdGVzTWFwOworc3RhdGljIENlcnRpZmljYXRlc01hcCYgY2xpZW50Q2VydGlm
aWNhdGVzKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENlcnRpZmljYXRlc01hcCwgY2Vy
dGlmaWNhdGVzLCAoKSk7CisgICAgcmV0dXJuIGNlcnRpZmljYXRlczsKK30KKwogUmVzb3VyY2VI
YW5kbGVJbnRlcm5hbDo6flJlc291cmNlSGFuZGxlSW50ZXJuYWwoKQogewogfQpAQCAtMzUwLDYg
KzQwNCwxMyBAQCBzdGF0aWMgUmVzb3VyY2VFcnJvciBjb252ZXJ0U291cEVycm9yVG9SZXNvdXJj
ZUVycm9yKEdFcnJvciogZXJyb3IsIFNvdXBSZXF1ZXN0KgogICAgICAgICAgICAgICAgICAgICAg
ICAgIFN0cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1lc3NhZ2UpKTsKIH0KIAorc3RhdGljIGlubGlu
ZSBib29sIGhhc1VuaWdub3JlZFRMU0Vycm9ycyhSZXNvdXJjZUhhbmRsZSogaGFuZGxlKQorewor
ICAgIHJldHVybiBoYW5kbGUtPmdldEludGVybmFsKCktPm1fcmVzcG9uc2Uuc291cE1lc3NhZ2VU
TFNFcnJvcnMoKQorICAgICAgICAmJiAhZ0lnbm9yZVNTTEVycm9ycworICAgICAgICAmJiAhYWxs
b3dzQW55SFRUUFNDZXJ0aWZpY2F0ZUhvc3RzKCkuY29udGFpbnMoaGFuZGxlLT5maXJzdFJlcXVl
c3QoKS51cmwoKS5ob3N0KCkubG93ZXIoKSk7Cit9CisKIHN0YXRpYyB2b2lkIHNlbmRSZXF1ZXN0
Q2FsbGJhY2soR09iamVjdCogc291cmNlLCBHQXN5bmNSZXN1bHQqIHJlcywgZ3BvaW50ZXIgZGF0
YSkKIHsKICAgICBSZWZQdHI8UmVzb3VyY2VIYW5kbGU+IGhhbmRsZSA9IHN0YXRpY19jYXN0PFJl
c291cmNlSGFuZGxlKj4oZGF0YSk7CkBAIC0zODUsNiArNDQ2LDE4IEBAIHN0YXRpYyB2b2lkIHNl
bmRSZXF1ZXN0Q2FsbGJhY2soR09iamVjdCogc291cmNlLCBHQXN5bmNSZXN1bHQqIHJlcywgZ3Bv
aW50ZXIgZGF0CiAgICAgICAgICAgICBkLT5tX3Jlc3BvbnNlLnNldFNuaWZmZWRDb250ZW50VHlw
ZShzbmlmZmVkVHlwZSk7CiAgICAgICAgIH0KICAgICAgICAgZC0+bV9yZXNwb25zZS51cGRhdGVG
cm9tU291cE1lc3NhZ2Uoc291cE1lc3NhZ2UpOworCisgICAgICAgIGlmIChoYXNVbmlnbm9yZWRU
TFNFcnJvcnMoaGFuZGxlLmdldCgpKSkgeworICAgICAgICAgICAgQ2VydGlmaWNhdGVzTWFwOjpp
dGVyYXRvciBpdGVyID0gY2xpZW50Q2VydGlmaWNhdGVzKCkuZmluZChoYW5kbGUtPmZpcnN0UmVx
dWVzdCgpLnVybCgpLmhvc3QoKS5sb3dlcigpKTsKKyAgICAgICAgICAgIGlmIChpdGVyID09IGNs
aWVudENlcnRpZmljYXRlcygpLmVuZCgpIHx8ICFpdGVyLT5zZWNvbmQuY2hlY2soZC0+bV9yZXNw
b25zZS5zb3VwTWVzc2FnZUNlcnRpZmljYXRlKCkpKSB7CisgICAgICAgICAgICAgICAgR093blB0
cjxjaGFyPiB1cmkoc291cF91cmlfdG9fc3RyaW5nKHNvdXBfcmVxdWVzdF9nZXRfdXJpKGQtPm1f
c291cFJlcXVlc3QuZ2V0KCkpLCBGQUxTRSkpOworICAgICAgICAgICAgICAgIGNsaWVudC0+ZGlk
RmFpbChoYW5kbGUuZ2V0KCksIFJlc291cmNlRXJyb3IoZ19xdWFya190b19zdHJpbmcoU09VUF9I
VFRQX0VSUk9SKSwgU09VUF9TVEFUVVNfU1NMX0ZBSUxFRCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVyaS5nZXQoKSwgdW5hY2Nl
cHRhYmxlVExTQ2VydGlmaWNhdGUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQtPm1fcmVzcG9uc2Uuc291cE1lc3NhZ2VUTFNF
cnJvcnMoKSwgZC0+bV9yZXNwb25zZS5zb3VwTWVzc2FnZUNlcnRpZmljYXRlKCkpKTsKKyAgICAg
ICAgICAgICAgICBjbGVhbnVwU291cFJlcXVlc3RPcGVyYXRpb24oaGFuZGxlLmdldCgpKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICB9IGVs
c2UgewogICAgICAgICBkLT5tX3Jlc3BvbnNlLnNldFVSTChoYW5kbGUtPmZpcnN0UmVxdWVzdCgp
LnVybCgpKTsKICAgICAgICAgY29uc3QgZ2NoYXIqIGNvbnRlbnRUeXBlID0gc291cF9yZXF1ZXN0
X2dldF9jb250ZW50X3R5cGUoZC0+bV9zb3VwUmVxdWVzdC5nZXQoKSk7CkBAIC03NDAsNiArODEz
LDIxIEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmNhbmNlbCgpCiAgICAgICAgIGdfY2FuY2VsbGFi
bGVfY2FuY2VsKGQtPm1fY2FuY2VsbGFibGUuZ2V0KCkpOwogfQogCit2b2lkIFJlc291cmNlSGFu
ZGxlOjpzZXRIb3N0QWxsb3dzQW55SFRUUFNDZXJ0aWZpY2F0ZShjb25zdCBTdHJpbmcmIGhvc3Qp
Cit7CisgICAgYWxsb3dzQW55SFRUUFNDZXJ0aWZpY2F0ZUhvc3RzKCkuYWRkKGhvc3QubG93ZXIo
KSk7Cit9CisKK3ZvaWQgUmVzb3VyY2VIYW5kbGU6OnNldENsaWVudENlcnRpZmljYXRlKGNvbnN0
IFN0cmluZyYgaG9zdCwgR1Rsc0NlcnRpZmljYXRlKiBjZXJ0aWZpY2F0ZSkKK3sKKyAgICBjbGll
bnRDZXJ0aWZpY2F0ZXMoKS5hZGQoaG9zdC5sb3dlcigpLCBIb3N0VExTQ2VydGlmaWNhdGVzKCkp
Lml0ZXJhdG9yLT5zZWNvbmQuYWRkKGNlcnRpZmljYXRlKTsKK30KKwordm9pZCBSZXNvdXJjZUhh
bmRsZTo6c2V0SWdub3JlU1NMRXJyb3JzKGJvb2wgaWdub3JlU1NMRXJyb3JzKQoreworICAgIGdJ
Z25vcmVTU0xFcnJvcnMgPSBpZ25vcmVTU0xFcnJvcnM7Cit9CisKIHN0YXRpYyBib29sIGhhc0Jl
ZW5TZW50KFJlc291cmNlSGFuZGxlKiBoYW5kbGUpCiB7CiAgICAgUmVzb3VyY2VIYW5kbGVJbnRl
cm5hbCogZCA9IGhhbmRsZS0+Z2V0SW50ZXJuYWwoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlc3BvbnNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXNwb25zZS5oCmluZGV4IDg2MjRj
MDUuLjA2YTU0ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
c291cC9SZXNvdXJjZVJlc3BvbnNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9zb3VwL1Jlc291cmNlUmVzcG9uc2UuaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUg
IlJlc291cmNlUmVzcG9uc2VCYXNlLmgiCiAKICNpbmNsdWRlIDxsaWJzb3VwL3NvdXAuaD4KKyNp
bmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApA
QCAtMzcsMTggKzM4LDIxIEBAIHB1YmxpYzoKICAgICBSZXNvdXJjZVJlc3BvbnNlKCkKICAgICAg
ICAgOiBSZXNvdXJjZVJlc3BvbnNlQmFzZSgpCiAgICAgICAgICwgbV9zb3VwRmxhZ3Moc3RhdGlj
X2Nhc3Q8U291cE1lc3NhZ2VGbGFncz4oMCkpCisgICAgICAgICwgbV90bHNFcnJvcnMoc3RhdGlj
X2Nhc3Q8R1Rsc0NlcnRpZmljYXRlRmxhZ3M+KDApKQogICAgIHsKICAgICB9CiAKICAgICBSZXNv
dXJjZVJlc3BvbnNlKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgbG9u
ZyBsb25nIGV4cGVjdGVkTGVuZ3RoLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGNv
bnN0IFN0cmluZyYgZmlsZW5hbWUpCiAgICAgICAgIDogUmVzb3VyY2VSZXNwb25zZUJhc2UodXJs
LCBtaW1lVHlwZSwgZXhwZWN0ZWRMZW5ndGgsIHRleHRFbmNvZGluZ05hbWUsIGZpbGVuYW1lKQog
ICAgICAgICAsIG1fc291cEZsYWdzKHN0YXRpY19jYXN0PFNvdXBNZXNzYWdlRmxhZ3M+KDApKQor
ICAgICAgICAsIG1fdGxzRXJyb3JzKHN0YXRpY19jYXN0PEdUbHNDZXJ0aWZpY2F0ZUZsYWdzPigw
KSkKICAgICB7CiAgICAgfQogCiAgICAgUmVzb3VyY2VSZXNwb25zZShTb3VwTWVzc2FnZSogc291
cE1lc3NhZ2UpCiAgICAgICAgIDogUmVzb3VyY2VSZXNwb25zZUJhc2UoKQogICAgICAgICAsIG1f
c291cEZsYWdzKHN0YXRpY19jYXN0PFNvdXBNZXNzYWdlRmxhZ3M+KDApKQorICAgICAgICAsIG1f
dGxzRXJyb3JzKHN0YXRpY19jYXN0PEdUbHNDZXJ0aWZpY2F0ZUZsYWdzPigwKSkKICAgICB7CiAg
ICAgICAgIHVwZGF0ZUZyb21Tb3VwTWVzc2FnZShzb3VwTWVzc2FnZSk7CiAgICAgfQpAQCAtNjIs
MTEgKzY2LDE2IEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHJpbmcmIHNuaWZmZWRDb250ZW50VHlw
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc25pZmZlZENvbnRlbnRUeXBlOyB9CiAgICAgdm9pZCBzZXRT
bmlmZmVkQ29udGVudFR5cGUoY29uc3QgU3RyaW5nJiB2YWx1ZSkgeyBtX3NuaWZmZWRDb250ZW50
VHlwZSA9IHZhbHVlOyB9CiAKKyAgICBHVGxzQ2VydGlmaWNhdGUqIHNvdXBNZXNzYWdlQ2VydGlm
aWNhdGUoKSBjb25zdCB7IHJldHVybiBtX2NlcnRpZmljYXRlLmdldCgpOyB9CisgICAgR1Rsc0Nl
cnRpZmljYXRlRmxhZ3Mgc291cE1lc3NhZ2VUTFNFcnJvcnMoKSBjb25zdCB7IHJldHVybiBtX3Rs
c0Vycm9yczsgfQorCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBSZXNvdXJjZVJlc3BvbnNl
QmFzZTsKIAogICAgIFNvdXBNZXNzYWdlRmxhZ3MgbV9zb3VwRmxhZ3M7CiAgICAgU3RyaW5nIG1f
c25pZmZlZENvbnRlbnRUeXBlOworICAgIEdSZWZQdHI8R1Rsc0NlcnRpZmljYXRlPiBtX2NlcnRp
ZmljYXRlOworICAgIEdUbHNDZXJ0aWZpY2F0ZUZsYWdzIG1fdGxzRXJyb3JzOwogCiAgICAgdm9p
ZCBkb1VwZGF0ZVJlc291cmNlUmVzcG9uc2UoKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVzcG9uc2VTb3VwLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlc3BvbnNlU291cC5j
cHAKaW5kZXggMTU1MDQ4Yi4uMzEwYjRiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVzcG9uc2VTb3VwLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXNwb25zZVNvdXAuY3BwCkBA
IC01MSw2ICs1MSwxMSBAQCBTb3VwTWVzc2FnZSogUmVzb3VyY2VSZXNwb25zZTo6dG9Tb3VwTWVz
c2FnZSgpIGNvbnN0CiAKICAgICBzb3VwX21lc3NhZ2Vfc2V0X2ZsYWdzKHNvdXBNZXNzYWdlLCBt
X3NvdXBGbGFncyk7CiAKKyAgICBpZiAobV9jZXJ0aWZpY2F0ZSkKKyAgICAgICAgZ19vYmplY3Rf
c2V0KEdfT0JKRUNUKHNvdXBNZXNzYWdlKSwgInRscy1jZXJ0aWZpY2F0ZSIsIG1fY2VydGlmaWNh
dGUuZ2V0KCksIE5VTEwpOworICAgIGlmIChtX3Rsc0Vycm9ycykKKyAgICAgICAgZ19vYmplY3Rf
c2V0KEdfT0JKRUNUKHNvdXBNZXNzYWdlKSwgInRscy1lcnJvcnMiLCBtX3Rsc0Vycm9ycywgTlVM
TCk7CisKICAgICAvLyBCb2R5IGRhdGEgaXMgbm90IGluIHRoZSBtZXNzYWdlLgogICAgIHJldHVy
biBzb3VwTWVzc2FnZTsKIH0KQEAgLTg0LDYgKzg5LDEwIEBAIHZvaWQgUmVzb3VyY2VSZXNwb25z
ZTo6dXBkYXRlRnJvbVNvdXBNZXNzYWdlKFNvdXBNZXNzYWdlKiBzb3VwTWVzc2FnZSkKICAgICBz
ZXRFeHBlY3RlZENvbnRlbnRMZW5ndGgoc291cF9tZXNzYWdlX2hlYWRlcnNfZ2V0X2NvbnRlbnRf
bGVuZ3RoKHNvdXBNZXNzYWdlLT5yZXNwb25zZV9oZWFkZXJzKSk7CiAgICAgc2V0SFRUUFN0YXR1
c1RleHQoc291cE1lc3NhZ2UtPnJlYXNvbl9waHJhc2UpOwogICAgIHNldFN1Z2dlc3RlZEZpbGVu
YW1lKGZpbGVuYW1lRnJvbUhUVFBDb250ZW50RGlzcG9zaXRpb24oaHR0cEhlYWRlckZpZWxkKCJD
b250ZW50LURpc3Bvc2l0aW9uIikpKTsKKworICAgIEdUbHNDZXJ0aWZpY2F0ZSogY2VydGlmaWNh
dGUgPSAwOworICAgIGdfb2JqZWN0X2dldChHX09CSkVDVChzb3VwTWVzc2FnZSksICJ0bHMtY2Vy
dGlmaWNhdGUiLCAmY2VydGlmaWNhdGUsICJ0bHMtZXJyb3JzIiwgJm1fdGxzRXJyb3JzLCBOVUxM
KTsKKyAgICBtX2NlcnRpZmljYXRlID0gY2VydGlmaWNhdGU7CiB9CiAKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfbWFpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9l
d2svZXdrX21haW4uY3BwCmluZGV4IGI0OGMyOGEuLmE1MDkwNjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvZWZsL2V3ay9ld2tfbWFpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdr
L2V3a19tYWluLmNwcApAQCAtMTgxLDUgKzE4MSw3IEBAIEVpbmFfQm9vbCBfZXdrX2luaXRfYm9k
eSh2b2lkKQogICAgIFNvdXBTZXNzaW9uRmVhdHVyZSogYXV0aF9kaWFsb2cgPSBzdGF0aWNfY2Fz
dDxTb3VwU2Vzc2lvbkZlYXR1cmUqPihnX29iamVjdF9uZXcoRVdLX1RZUEVfU09VUF9BVVRIX0RJ
QUxPRywgMCkpOwogICAgIHNvdXBfc2Vzc2lvbl9hZGRfZmVhdHVyZShzZXNzaW9uLCBhdXRoX2Rp
YWxvZyk7CiAKKyAgICBXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6c2V0SWdub3JlU1NMRXJyb3Jz
KHRydWUpOworCiAgICAgcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2d0ay93ZWJraXQvd2Via2l0Z2xvYmFscy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQv
d2Via2l0Z2xvYmFscy5jcHAKaW5kZXggNDJmN2ExZC4uNDAzNTZiOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdGdsb2JhbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvZ3RrL3dlYmtpdC93ZWJraXRnbG9iYWxzLmNwcApAQCAtNTMxLDYgKzUzMSw4IEBAIHZvaWQg
d2Via2l0SW5pdCgpCiAgICAgc291cF9zZXNzaW9uX2FkZF9mZWF0dXJlKHNlc3Npb24sIGF1dGhE
aWFsb2cpOwogICAgIGdfb2JqZWN0X3VucmVmKGF1dGhEaWFsb2cpOwogCisgICAgV2ViQ29yZTo6
UmVzb3VyY2VIYW5kbGU6OnNldElnbm9yZVNTTEVycm9ycyh0cnVlKTsKKwogI2lmIFVTRShDTFVU
VEVSKQogICAgIGd0a19jbHV0dGVyX2luaXQoMCwgMCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvZWZsL1dlYlByb2Nlc3NNYWluRWZsLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvZWZsL1dlYlByb2Nlc3NNYWluRWZsLmNwcAppbmRleCA5MmQz
NTE2Li42YTBiYmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2VmbC9X
ZWJQcm9jZXNzTWFpbkVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9lZmwv
V2ViUHJvY2Vzc01haW5FZmwuY3BwCkBAIC03NCw2ICs3NCw4IEBAIFdLX0VYUE9SVCBpbnQgV2Vi
UHJvY2Vzc01haW5FZmwoaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkKICAgICAgICAgc291cF91cmlf
ZnJlZShwcm94eVVyaSk7CiAgICAgfQogCisgICAgV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnNl
dElnbm9yZVNTTEVycm9ycyh0cnVlKTsKKwogICAgIGludCBzb2NrZXQgPSBhdG9pKGFyZ3ZbMV0p
OwogICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmluaXRpYWxpemUoc29ja2V0LCBSdW5Mb29wOjpt
YWluKCkpOwogICAgIFJ1bkxvb3A6OnJ1bigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9ndGsvV2ViUHJvY2Vzc01haW5HdGsuY3BwIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9ndGsvV2ViUHJvY2Vzc01haW5HdGsuY3BwCmluZGV4IDQ1Yjg1ODEuLjkwZjlmYzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvZ3RrL1dlYlByb2Nlc3NNYWlu
R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2d0ay9XZWJQcm9jZXNzTWFp
bkd0ay5jcHAKQEAgLTcwLDYgKzcwLDkgQEAgV0tfRVhQT1JUIGludCBXZWJQcm9jZXNzTWFpbkd0
ayhpbnQgYXJnYywgY2hhciogYXJndltdKQogICAgIGdfb2JqZWN0X3NldChzZXNzaW9uLCBTT1VQ
X1NFU1NJT05fU1NMX1VTRV9TWVNURU1fQ0FfRklMRSwgVFJVRSwKICAgICAgICAgICAgICAgICAg
U09VUF9TRVNTSU9OX1NTTF9TVFJJQ1QsIEZBTFNFLCBOVUxMKTsKIAorICAgIC8vIFRoaXMgaXMg
Zm9yIGNvbXBhdGliaWxpdHksIGl0IHdpbGwgYmUgcmVtb3ZlZCB3aGVuIFVJIHByb2Nlc3MgY2Fu
IGhhbmRsZSBTU0wgZXJyb3JzLgorICAgIFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpzZXRJZ25v
cmVTU0xFcnJvcnModHJ1ZSk7CisKICAgICBSdW5Mb29wOjpydW4oKTsKIAogICAgIHJldHVybiAw
Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>151712</attachid>
            <date>2012-07-11 08:30:17 -0700</date>
            <delta_ts>2012-07-13 03:14:50 -0700</delta_ts>
            <desc>Updated patch</desc>
            <filename>wk-ssl-errors5.diff</filename>
            <type>text/plain</type>
            <size>21641</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggMDY2Zjk3NS4uYTZlMzkzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxMi0wNy0xMSAg
Q2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgSGFu
ZGxlIFNTTCBlcnJvcnMgZm9yIFNPVVAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTkwMjY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIEdCeXRlQXJyYXkuCisKKyAgICAgICAgKiB3
dGYvZ29iamVjdC9HUmVmUHRyLmNwcDoKKyAgICAgICAgKFdURjo6cmVmR1B0cik6CisgICAgICAg
IChXVEYpOgorICAgICAgICAoV1RGOjpkZXJlZkdQdHIpOgorICAgICAgICAqIHd0Zi9nb2JqZWN0
L0dSZWZQdHIuaDoKKyAgICAgICAgKFdURik6CisgICAgICAgICogd3RmL2dvYmplY3QvR1R5cGVk
ZWZzLmg6CisKIDIwMTItMDctMTAgIEpvY2VseW4gVHVyY290dGUgIDxqb2NlbHluLnR1cmNvdHRl
QG5va2lhLmNvbT4KIAogICAgICAgICBSZS1lbmFibGUgX19kZWNsc3BlYyhkbHtpbXBvcnQsZXhw
b3J0fSkgZm9yIE1pbkdXIHdoZW4gdXNpbmcgRVhQT1JUX01BQ1JPUwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDRm
YmIwNTMuLjc5NTljYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MSBAQAorMjAxMi0wNy0xMSAg
Q2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgSGFu
ZGxlIFNTTCBlcnJvcnMgZm9yIFNPVVAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTkwMjY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCB0aGlzIGlzIGNvdmVyZWQgYnkgZXhpc3Rpbmcg
dGVzdHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmg6CisgICAgICAg
IChXZWJDb3JlKTogQWRkIHVuYWNjZXB0YWJsZVRMU0NlcnRpZmljYXRlKCkgZm9yIFNPVVAuCisg
ICAgICAgICogcGxhdGZvcm0vZWZsL0xvY2FsaXplZFN0cmluZ3NFZmwuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6dW5hY2NlcHRhYmxlVExTQ2VydGlmaWNhdGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2d0ay9Mb2NhbGl6ZWRTdHJpbmdzR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnVuYWNjZXB0
YWJsZVRMU0NlcnRpZmljYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
SGFuZGxlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3Iu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlRXJyb3I6OlJlc291cmNlRXJyb3IpOiBBZGQg
bmV3IGNvbnN0cmN1dG9yIGZvcgorICAgICAgICBTU0wgZXJyb3JzIHRoYXQgcmVjZWl2ZXMgYSBj
ZXJ0aWZpY2F0ZSBhbmQgVExTIGVycm9ycy4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlRXJy
b3I6OnRsc0Vycm9ycyk6IFJldHVybiBUTFMgZXJyb3JzLgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VFcnJvcjo6Y2VydGlmaWNhdGUpOiBSZXR1cm4gdGhlIGNlcnRpZmljYXRlLgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwOgorICAgICAg
ICAoSG9zdFRMU0NlcnRpZmljYXRlcyk6IEhlbHBlciBjbGFzcyB0byBzdG9yZSBjZXJ0aWZpY2F0
ZXMgZm9yIGEKKyAgICAgICAgaG9zdC4KKyAgICAgICAgKFdlYkNvcmU6Okhvc3RUTFNDZXJ0aWZp
Y2F0ZXM6OmFkZCk6IEFkZCBhIG5ldyBjZXJ0aWZpY2F0ZS4KKyAgICAgICAgKFdlYkNvcmU6Okhv
c3RUTFNDZXJ0aWZpY2F0ZXM6OmNoZWNrKTogQ2hlY2sgd2hldGhlciBjZXJ0aWZpY2F0ZQorICAg
ICAgICBpcyBzdG9yZWQuCisgICAgICAgIChXZWJDb3JlOjpIb3N0VExTQ2VydGlmaWNhdGVzOjpj
b21wdXRlQ2VydGlmaWNhdGVIYXNoKTogQ29tcHV0ZQorICAgICAgICB0aGUgU0hBMSBvZiB0aGUg
Y2VydGlmaWNhdGUgZGF0YS4KKyAgICAgICAgKFdlYkNvcmU6OmFsbG93c0FueUhUVFBTQ2VydGlm
aWNhdGVIb3N0cyk6IEdsb2JhbCBzZXQgdG8gc3RvcmUKKyAgICAgICAgaG9zdG5hbWVzIGZvciB3
aGljaCBTU0wgZXJyb3JzIHNob3VsZCBiZSBpZ25vcmVkLgorICAgICAgICAoV2ViQ29yZTo6Y2xp
ZW50Q2VydGlmaWNhdGVzKTogR2xvYmFsIG1hcCB0byBzdG9yZSBjbGllbnQKKyAgICAgICAgY2Vy
dGlmaWNhdGVzLgorICAgICAgICAoV2ViQ29yZTo6dGxzQ2VydGlmaWNhdGVFcXVhbCk6IENoZWNr
IHdoZXRoZXIgdHdvIEdUbHNDZXJ0aWZpY2F0ZQorICAgICAgICBvYmplY3RzIGNvbnRhaW4gdGhl
IHNhbWUgSFRUUFMgY2VydGlmaWNhdGUuCisgICAgICAgIChXZWJDb3JlOjpoYXNVbmlnbm9yZWRU
TFNFcnJvcnMpOiBIZWxwZXIgZnVuY3Rpb24gdG8gY2hlY2sgd2hldGhlcgorICAgICAgICBjdXJy
ZW50IG1lc3NhZ2UgY29udGFpbnMgVExTIGVycm9ycyB0aGF0IHNob3VsZG4ndCBiZSBpZ25vcmVk
IGFuZAorICAgICAgICBjZXJ0aWZpY2F0ZSBoYXNuJ3QgYmVlbiBhcHByb3ZlZCBhbHJlYWR5Lgor
ICAgICAgICAoV2ViQ29yZTo6c2VuZFJlcXVlc3RDYWxsYmFjayk6IEZpbmlzaCB0aGUgbG9hZCB3
aXRoIGFuIGVycm9yIGluCisgICAgICAgIGNhc2Ugb2YgU1NMIGVycm9ycyBub3QgaGFuZGxlZCBi
eSB0aGUgU291cFNlc3Npb24uCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6c2V0
SG9zdEFsbG93c0FueUhUVFBTQ2VydGlmaWNhdGUpOiBBZGQKKyAgICAgICAgdGhlIGdpdmVuIGhv
c3RuYW1lIHRvIHRoZSBsaXN0IG9mIGhvc3RzIGZvciB3aGljaCBTU0wgZXJyb3JzIGFyZQorICAg
ICAgICBpZ25vcmVkLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnNldENsaWVu
dENlcnRpZmljYXRlKTogU3RvcmUgdGhlIGNsaWVudAorICAgICAgICBjZXJ0aWZpY2F0ZSBmb3Ig
dGhlIGdpdmVuIGhvc3QuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6c2V0SWdu
b3JlU1NMRXJyb3JzKTogU2V0IHdoZXRoZXIgYWxsIFNTTAorICAgICAgICBlcnJvcnMgc2hvdWxk
IGJlIGlnbm9yZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVz
cG9uc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2U6OnNvdXBNZXNzYWdl
Q2VydGlmaWNhdGUpOiBSZXR1cm4gdGhlCisgICAgICAgIGNlcnRpZmljYXRlLgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6c291cE1lc3NhZ2VUTFNFcnJvcnMpOiBSZXR1cm4g
dGhlIFRMUworICAgICAgICBlcnJvcnMuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3Vw
L1Jlc291cmNlUmVzcG9uc2VTb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2U6OnRvU291cE1lc3NhZ2UpOiBTZXQgdGhlIGNlcnRpZmljYXRlCisgICAgICAgIGFuZCBU
TFMgZXJyb3JzIHRvIHRoZSBuZXdseSBjcmVhdGVkIFNvdXBNZXNzYWdlLgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZTo6dXBkYXRlRnJvbVNvdXBNZXNzYWdlKTogR2V0IHRoZQor
ICAgICAgICBjZXJ0aWZpY2F0ZSBhbmQgVExTIGVycm9ycyBmcm9tIHRoZSBTb3VwTWVzc2FnZS4K
KwogMjAxMi0wNy0xMCAgU2hpbnlhIEthd2FuYWthICA8c2hpbnlha0BjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgU2hhZG93Um9vdCBzaG91bGQga25vdyBpdHMgdHlwZSBpbiBkZWJ1ZyBidWlsZC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
ZWZsL0NoYW5nZUxvZwppbmRleCAxNDFmOGJmLi40YTFiMzEwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMTItMDctMTEgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNp
YUBpZ2FsaWEuY29tPgorCisgICAgICAgIEhhbmRsZSBTU0wgZXJyb3JzIGZvciBTT1VQCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDI2NworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElnbm9yZSBTU0wgZXJy
b3JzIGJ5IGRlZmF1bHQgZm9yIGNvbXBhdGliaWxpdHkuCisKKyAgICAgICAgKiBld2svZXdrX21h
aW4uY3BwOgorICAgICAgICAoX2V3a19pbml0X2JvZHkpOgorCiAyMDEyLTA3LTEwICBBZGFtIEJh
cnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgTGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcENvbmZpZ3VyYXRpb25Gb3JWaWV3cG9ydCBzaG91bGQgbW92ZSB0byBJbnRlcm5hbHMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZ3Rr
L0NoYW5nZUxvZwppbmRleCA5NWZhNTNlLi40Nzg1YjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTUgQEAKKzIwMTItMDctMTEgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBp
Z2FsaWEuY29tPgorCisgICAgICAgIEhhbmRsZSBTU0wgZXJyb3JzIGZvciBTT1VQCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDI2NworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElnbm9yZSBTU0wgZXJyb3Jz
IGJ5IGRlZmF1bHQgZm9yIGNvbXBhdGliaWxpdHkuCisKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0
Z2xvYmFscy5jcHA6CisgICAgICAgICh3ZWJraXRJbml0KToKKwogMjAxMi0wNy0xMCAgQWRhbSBC
YXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFdlYkNvcmU6OlNldHRpbmdzIGZv
ciBIaXhpZTc2IFdlYlNvY2tldCBwcm90b2NvbCBkb2Vzbid0IGRvIGFueXRoaW5nIGFuZCBzaG91
bGQgYmUgcmVtb3ZlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGY4NzEyZTIuLjM5OWRhNzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNyBAQAorMjAxMi0wNy0xMSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2Fy
Y2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgSGFuZGxlIFNTTCBlcnJvcnMgZm9yIFNPVVAKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkwMjY3CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSWdub3JlIFNTTCBl
cnJvcnMgYnkgZGVmYXVsdCBmb3IgY29tcGF0aWJpbGl0eS4KKworICAgICAgICAqIFdlYlByb2Nl
c3MvZWZsL1dlYlByb2Nlc3NNYWluRWZsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c01haW5FZmwpOgorICAgICAgICAqIFdlYlByb2Nlc3MvZ3RrL1dlYlByb2Nlc3NNYWluR3RrLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc01haW5HdGspOgorCiAyMDEyLTA3LTEwICBO
bydhbSBSb3NlbnRoYWwgIDxub2FtLnJvc2VudGhhbEBub2tpYS5jb20+CiAKICAgICAgICAgW1F0
XSBFbmFibGUgYW50aWFsaWFzaW5nIGZvciBUZXh0dXJlTWFwcGVyCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9nb2JqZWN0L0dSZWZQdHIuY3BwIGIvU291cmNlL1dURi93dGYvZ29iamVjdC9H
UmVmUHRyLmNwcAppbmRleCAzYTAxNGRhLi41YWEwNjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi9nb2JqZWN0L0dSZWZQdHIuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL2dvYmplY3QvR1Jl
ZlB0ci5jcHAKQEAgLTEyMCw2ICsxMjAsMTkgQEAgdGVtcGxhdGUgPD4gdm9pZCBkZXJlZkdQdHIo
R1B0ckFycmF5KiBwdHIpCiAgICAgICAgIGdfcHRyX2FycmF5X3VucmVmKHB0cik7CiB9CiAKK3Rl
bXBsYXRlIDw+IEdCeXRlQXJyYXkqIHJlZkdQdHIoR0J5dGVBcnJheSogcHRyKQoreworICAgIGlm
IChwdHIpCisgICAgICAgIGdfYnl0ZV9hcnJheV9yZWYocHRyKTsKKyAgICByZXR1cm4gcHRyOwor
fQorCit0ZW1wbGF0ZSA8PiB2b2lkIGRlcmVmR1B0cihHQnl0ZUFycmF5KiBwdHIpCit7CisgICAg
aWYgKHB0cikKKyAgICAgICAgZ19ieXRlX2FycmF5X3VucmVmKHB0cik7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIFdURgogCiAjZW5kaWYgLy8gRU5BQkxFKEdMSUJfU1VQUE9SVCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL2dvYmplY3QvR1JlZlB0ci5oIGIvU291cmNlL1dURi93dGYvZ29iamVj
dC9HUmVmUHRyLmgKaW5kZXggZjRmZjNkMS4uZGY2ODg4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvZ29iamVjdC9HUmVmUHRyLmgKKysrIGIvU291cmNlL1dURi93dGYvZ29iamVjdC9HUmVm
UHRyLmgKQEAgLTIxMCw2ICsyMTAsOCBAQCB0ZW1wbGF0ZSA8PiBHU291cmNlKiByZWZHUHRyKEdT
b3VyY2UqIHB0cik7CiB0ZW1wbGF0ZSA8PiB2b2lkIGRlcmVmR1B0cihHU291cmNlKiBwdHIpOwog
dGVtcGxhdGUgPD4gR1B0ckFycmF5KiByZWZHUHRyKEdQdHJBcnJheSopOwogdGVtcGxhdGUgPD4g
dm9pZCBkZXJlZkdQdHIoR1B0ckFycmF5Kik7Cit0ZW1wbGF0ZSA8PiBHQnl0ZUFycmF5KiByZWZH
UHRyKEdCeXRlQXJyYXkqKTsKK3RlbXBsYXRlIDw+IHZvaWQgZGVyZWZHUHRyKEdCeXRlQXJyYXkq
KTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSBUKiByZWZHUHRyKFQqIHB0cikKIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2dvYmplY3QvR1R5cGVkZWZzLmggYi9Tb3VyY2Uv
V1RGL3d0Zi9nb2JqZWN0L0dUeXBlZGVmcy5oCmluZGV4IDc5YzMzZDIuLjJlZmMwNzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2dvYmplY3QvR1R5cGVkZWZzLmgKKysrIGIvU291cmNlL1dU
Ri93dGYvZ29iamVjdC9HVHlwZWRlZnMuaApAQCAtNjQsNiArNjQsNyBAQCB0eXBlZGVmIHVuaW9u
IF9HZGtFdmVudCBHZGtFdmVudDsKIHR5cGVkZWYgc3RydWN0IF9HVGltZXIgR1RpbWVyOwogdHlw
ZWRlZiBzdHJ1Y3QgX0dLZXlGaWxlIEdLZXlGaWxlOwogdHlwZWRlZiBzdHJ1Y3QgX0dQdHJBcnJh
eSBHUHRyQXJyYXk7Cit0eXBlZGVmIHN0cnVjdCBfR0J5dGVBcnJheSBHQnl0ZUFycmF5OwogCiAj
aWYgVVNFKENBSVJPKQogdHlwZWRlZiBzdHJ1Y3QgX2NhaXJvX3N1cmZhY2UgY2Fpcm9fc3VyZmFj
ZV90OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5n
cy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5oCmluZGV4IGZl
NjY4NmQuLjkxMzM3OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2Fs
aXplZFN0cmluZ3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJp
bmdzLmgKQEAgLTIxOSw2ICsyMTksOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgU3RyaW5n
IGRhdGVGb3JtYXRNb250aFRleHQoKTsKICAgICBTdHJpbmcgZGF0ZUZvcm1hdERheUluTW9udGhU
ZXh0KCk7CiAjZW5kaWYKKyNpZiBVU0UoU09VUCkKKyAgICBTdHJpbmcgdW5hY2NlcHRhYmxlVExT
Q2VydGlmaWNhdGUoKTsKKyNlbmRpZgogCiAjaWYgIVBMQVRGT1JNKENIUk9NSVVNKQogI2RlZmlu
ZSBXRUJfVUlfU1RSSU5HKHN0cmluZywgZGVzY3JpcHRpb24pIFdlYkNvcmU6OmxvY2FsaXplZFN0
cmluZyhzdHJpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvTG9j
YWxpemVkU3RyaW5nc0VmbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvTG9jYWxp
emVkU3RyaW5nc0VmbC5jcHAKaW5kZXggMjYzYjViMy4uOTI1MmZiMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL0xvY2FsaXplZFN0cmluZ3NFZmwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9Mb2NhbGl6ZWRTdHJpbmdzRWZsLmNwcApAQCAtNTY2
LDYgKzU2NiwxMSBAQCBTdHJpbmcgaW5zZWN1cmVQbHVnaW5WZXJzaW9uVGV4dCgpCiAgICAgcmV0
dXJuIFN0cmluZygpOwogfQogCitTdHJpbmcgdW5hY2NlcHRhYmxlVExTQ2VydGlmaWNhdGUoKQor
eworICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KCJVbmFjY2VwdGFibGUgVExTIGNlcnRpZmlj
YXRlIik7Cit9CisKIFN0cmluZyBsb2NhbGl6ZWRTdHJpbmcoY29uc3QgY2hhcioga2V5KQogewog
ICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGtleSwgc3RybGVuKGtleSkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0xvY2FsaXplZFN0cmluZ3NHdGsuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0xvY2FsaXplZFN0cmluZ3NHdGsuY3BwCmluZGV4
IDRiYjJjZTAuLmY2ZDJmYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9Mb2NhbGl6ZWRTdHJpbmdzR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvTG9jYWxpemVkU3RyaW5nc0d0ay5jcHAKQEAgLTcxNyw2ICs3MTcsMTEgQEAgU3RyaW5nIHZh
bGlkYXRpb25NZXNzYWdlU3RlcE1pc21hdGNoVGV4dChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJp
bmcmKQogICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KF8oInN0ZXAgbWlzbWF0Y2giKSk7CiB9
CiAKK1N0cmluZyB1bmFjY2VwdGFibGVUTFNDZXJ0aWZpY2F0ZSgpCit7CisgICAgcmV0dXJuIFN0
cmluZzo6ZnJvbVVURjgoXygiVW5hY2NlcHRhYmxlIFRMUyBjZXJ0aWZpY2F0ZSIpKTsKK30KKwog
U3RyaW5nIGxvY2FsaXplZFN0cmluZyhjb25zdCBjaGFyKiBrZXkpCiB7CiAgICAgcmV0dXJuIFN0
cmluZzo6ZnJvbVVURjgoa2V5LCBzdHJsZW4oa2V5KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgKaW5kZXggZGRjYTBkMi4uYzBkZDc2OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRs
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUu
aApAQCAtMTY4LDYgKzE2OCw5IEBAIHB1YmxpYzoKIAogI2lmIFVTRShTT1VQKQogICAgIHN0YXRp
YyBTb3VwU2Vzc2lvbiogZGVmYXVsdFNlc3Npb24oKTsKKyAgICBzdGF0aWMgdm9pZCBzZXRIb3N0
QWxsb3dzQW55SFRUUFNDZXJ0aWZpY2F0ZShjb25zdCBTdHJpbmcmKTsKKyAgICBzdGF0aWMgdm9p
ZCBzZXRDbGllbnRDZXJ0aWZpY2F0ZShjb25zdCBTdHJpbmcmIGhvc3QsIEdUbHNDZXJ0aWZpY2F0
ZSopOworICAgIHN0YXRpYyB2b2lkIHNldElnbm9yZVNTTEVycm9ycyhib29sKTsKICNlbmRpZgog
CiAgICAgLy8gVXNlZCB0byB3b3JrIGFyb3VuZCB0aGUgZmFjdCB0aGF0IHlvdSBkb24ndCBnZXQg
YW55IG1vcmUgTlNVUkxDb25uZWN0aW9uIGNhbGxiYWNrcyB1bnRpbCB5b3UgcmV0dXJuIGZyb20g
dGhlIG9uZSB5b3UncmUgaW4uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9zb3VwL1Jlc291cmNlRXJyb3IuaAppbmRleCAyZDExMzY3Li4zNzg4MGU1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJvci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUVycm9y
LmgKQEAgLTI3LDYgKzI3LDkgQEAKICNkZWZpbmUgUmVzb3VyY2VFcnJvcl9oCiAKICNpbmNsdWRl
ICJSZXNvdXJjZUVycm9yQmFzZS5oIgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4K
KwordHlwZWRlZiBzdHJ1Y3QgX0dUbHNDZXJ0aWZpY2F0ZSBHVGxzQ2VydGlmaWNhdGU7CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMzQsMTMgKzM3LDI5IEBAIGNsYXNzIFJlc291cmNlRXJy
b3IgOiBwdWJsaWMgUmVzb3VyY2VFcnJvckJhc2UKIHsKIHB1YmxpYzoKICAgICBSZXNvdXJjZUVy
cm9yKCkKKyAgICAgICAgOiBtX3Rsc0Vycm9ycygwKQogICAgIHsKICAgICB9CiAKICAgICBSZXNv
dXJjZUVycm9yKGNvbnN0IFN0cmluZyYgZG9tYWluLCBpbnQgZXJyb3JDb2RlLCBjb25zdCBTdHJp
bmcmIGZhaWxpbmdVUkwsIGNvbnN0IFN0cmluZyYgbG9jYWxpemVkRGVzY3JpcHRpb24pCiAgICAg
ICAgIDogUmVzb3VyY2VFcnJvckJhc2UoZG9tYWluLCBlcnJvckNvZGUsIGZhaWxpbmdVUkwsIGxv
Y2FsaXplZERlc2NyaXB0aW9uKQorICAgICAgICAsIG1fdGxzRXJyb3JzKDApCiAgICAgewogICAg
IH0KKworICAgIFJlc291cmNlRXJyb3IoY29uc3QgU3RyaW5nJiBkb21haW4sIGludCBlcnJvckNv
ZGUsIGNvbnN0IFN0cmluZyYgZmFpbGluZ1VSTCwgY29uc3QgU3RyaW5nJiBsb2NhbGl6ZWREZXNj
cmlwdGlvbiwgdW5zaWduZWQgdGxzRXJyb3JzLCBHVGxzQ2VydGlmaWNhdGUqIGNlcnRpZmljYXRl
KQorICAgICAgICA6IFJlc291cmNlRXJyb3JCYXNlKGRvbWFpbiwgZXJyb3JDb2RlLCBmYWlsaW5n
VVJMLCBsb2NhbGl6ZWREZXNjcmlwdGlvbikKKyAgICAgICAgLCBtX3Rsc0Vycm9ycyh0bHNFcnJv
cnMpCisgICAgICAgICwgbV9jZXJ0aWZpY2F0ZShjZXJ0aWZpY2F0ZSkKKyAgICB7CisgICAgfQor
CisgICAgdW5zaWduZWQgdGxzRXJyb3JzKCkgY29uc3QgeyByZXR1cm4gbV90bHNFcnJvcnM7IH0K
KyAgICBHVGxzQ2VydGlmaWNhdGUqIGNlcnRpZmljYXRlKCkgY29uc3QgeyByZXR1cm4gbV9jZXJ0
aWZpY2F0ZS5nZXQoKTsgfQorCitwcml2YXRlOgorICAgIHVuc2lnbmVkIG1fdGxzRXJyb3JzOwor
ICAgIEdSZWZQdHI8R1Rsc0NlcnRpZmljYXRlPiBtX2NlcnRpZmljYXRlOwogfTsKIAogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFu
ZGxlU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3Vy
Y2VIYW5kbGVTb3VwLmNwcAppbmRleCA2MGU0ZTE1Li43YWViNzI4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVT
b3VwLmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAi
R093blB0clNvdXAuaCIKICNpbmNsdWRlICJIVFRQUGFyc2Vycy5oIgorI2luY2x1ZGUgIkxvY2Fs
aXplZFN0cmluZ3MuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVS
ZWdpc3RyeS5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCkBAIC01Niw2ICs1Nyw3IEBA
CiAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICNpbmNsdWRl
IDx1bmlzdGQuaD4KKyNpbmNsdWRlIDx3dGYvU0hBMS5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0
L0dSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKQEAgLTE1OSw2ICsx
NjEsNDMgQEAgcHJpdmF0ZToKICAgICBHUmVmUHRyPEdNYWluTG9vcD4gbV9tYWluTG9vcDsKIH07
CiAKK2NsYXNzIEhvc3RUTFNDZXJ0aWZpY2F0ZXMgeworcHVibGljOgorICAgIHN0YXRpYyBjb25z
dCBzaXplX3Qgc2hhMUhhc2hTaXplID0gMjA7CisKKyAgICB2b2lkIGFkZChHVGxzQ2VydGlmaWNh
dGUqIGNlcnRpZmljYXRlKQorICAgIHsKKyAgICAgICAgU3RyaW5nIGNlcnRpZmljYXRlSGFzaCA9
IGNvbXB1dGVDZXJ0aWZpY2F0ZUhhc2goY2VydGlmaWNhdGUpOworICAgICAgICBpZiAoIWNlcnRp
ZmljYXRlSGFzaC5pc0VtcHR5KCkpCisgICAgICAgICAgICBtX2NlcnRpZmljYXRlcy5hZGQoY2Vy
dGlmaWNhdGVIYXNoKTsKKyAgICB9CisKKyAgICBib29sIGNoZWNrKEdUbHNDZXJ0aWZpY2F0ZSog
Y2VydGlmaWNhdGUpCisgICAgeworICAgICAgICByZXR1cm4gbV9jZXJ0aWZpY2F0ZXMuY29udGFp
bnMoY29tcHV0ZUNlcnRpZmljYXRlSGFzaChjZXJ0aWZpY2F0ZSkpOworICAgIH0KKworcHJpdmF0
ZToKKyAgICBzdGF0aWMgU3RyaW5nIGNvbXB1dGVDZXJ0aWZpY2F0ZUhhc2goR1Rsc0NlcnRpZmlj
YXRlKiBjZXJ0aWZpY2F0ZSkKKyAgICB7CisgICAgICAgIEdCeXRlQXJyYXkqIGRhdGEgPSAwOwor
ICAgICAgICBnX29iamVjdF9nZXQoR19PQkpFQ1QoY2VydGlmaWNhdGUpLCAiY2VydGlmaWNhdGUi
LCAmZGF0YSwgTlVMTCk7CisgICAgICAgIGlmICghZGF0YSkKKyAgICAgICAgICAgIHJldHVybiBT
dHJpbmcoKTsKKworICAgICAgICBHUmVmUHRyPEdCeXRlQXJyYXk+IGNlcnRpZmljYXRlRGF0YSA9
IGFkb3B0R1JlZihkYXRhKTsKKyAgICAgICAgU0hBMSBzaGExOworICAgICAgICBzaGExLmFkZEJ5
dGVzKGNlcnRpZmljYXRlRGF0YS0+ZGF0YSwgY2VydGlmaWNhdGVEYXRhLT5sZW4pOworCisgICAg
ICAgIFZlY3Rvcjx1aW50OF90LCBzaGExSGFzaFNpemU+IGRpZ2VzdDsKKyAgICAgICAgc2hhMS5j
b21wdXRlSGFzaChkaWdlc3QpOworCisgICAgICAgIHJldHVybiBiYXNlNjRFbmNvZGUocmVpbnRl
cnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGlnZXN0LmRhdGEoKSksIHNoYTFIYXNoU2l6ZSk7Cisg
ICAgfQorCisgICAgSGFzaFNldDxTdHJpbmc+IG1fY2VydGlmaWNhdGVzOworfTsKKwogc3RhdGlj
IHZvaWQgY2xlYW51cFNvdXBSZXF1ZXN0T3BlcmF0aW9uKFJlc291cmNlSGFuZGxlKiwgYm9vbCBp
c0Rlc3Ryb3lpbmcpOwogc3RhdGljIHZvaWQgc2VuZFJlcXVlc3RDYWxsYmFjayhHT2JqZWN0Kiwg
R0FzeW5jUmVzdWx0KiwgZ3BvaW50ZXIpOwogc3RhdGljIHZvaWQgcmVhZENhbGxiYWNrKEdPYmpl
Y3QqLCBHQXN5bmNSZXN1bHQqLCBncG9pbnRlcik7CkBAIC0xNjgsNiArMjA3LDIxIEBAIHN0YXRp
YyBib29sIHN0YXJ0Tm9uSFRUUFJlcXVlc3QoUmVzb3VyY2VIYW5kbGUqLCBLVVJMKTsKIHN0YXRp
YyBpbnQgIG1pbGlzZWNvbmRzU2luY2VSZXF1ZXN0KGRvdWJsZSByZXF1ZXN0VGltZSk7CiAjZW5k
aWYKIAorc3RhdGljIGJvb2wgZ0lnbm9yZVNTTEVycm9ycyA9IGZhbHNlOworCitzdGF0aWMgSGFz
aFNldDxTdHJpbmc+JiBhbGxvd3NBbnlIVFRQU0NlcnRpZmljYXRlSG9zdHMoKQoreworICAgIERF
RklORV9TVEFUSUNfTE9DQUwoSGFzaFNldDxTdHJpbmc+LCBob3N0cywgKCkpOworICAgIHJldHVy
biBob3N0czsKK30KKwordHlwZWRlZiBIYXNoTWFwPFN0cmluZywgSG9zdFRMU0NlcnRpZmljYXRl
cz4gQ2VydGlmaWNhdGVzTWFwOworc3RhdGljIENlcnRpZmljYXRlc01hcCYgY2xpZW50Q2VydGlm
aWNhdGVzKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENlcnRpZmljYXRlc01hcCwgY2Vy
dGlmaWNhdGVzLCAoKSk7CisgICAgcmV0dXJuIGNlcnRpZmljYXRlczsKK30KKwogUmVzb3VyY2VI
YW5kbGVJbnRlcm5hbDo6flJlc291cmNlSGFuZGxlSW50ZXJuYWwoKQogewogfQpAQCAtMzUwLDYg
KzQwNCwxMyBAQCBzdGF0aWMgUmVzb3VyY2VFcnJvciBjb252ZXJ0U291cEVycm9yVG9SZXNvdXJj
ZUVycm9yKEdFcnJvciogZXJyb3IsIFNvdXBSZXF1ZXN0KgogICAgICAgICAgICAgICAgICAgICAg
ICAgIFN0cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1lc3NhZ2UpKTsKIH0KIAorc3RhdGljIGlubGlu
ZSBib29sIGhhc1VuaWdub3JlZFRMU0Vycm9ycyhSZXNvdXJjZUhhbmRsZSogaGFuZGxlKQorewor
ICAgIHJldHVybiBoYW5kbGUtPmdldEludGVybmFsKCktPm1fcmVzcG9uc2Uuc291cE1lc3NhZ2VU
TFNFcnJvcnMoKQorICAgICAgICAmJiAhZ0lnbm9yZVNTTEVycm9ycworICAgICAgICAmJiAhYWxs
b3dzQW55SFRUUFNDZXJ0aWZpY2F0ZUhvc3RzKCkuY29udGFpbnMoaGFuZGxlLT5maXJzdFJlcXVl
c3QoKS51cmwoKS5ob3N0KCkubG93ZXIoKSk7Cit9CisKIHN0YXRpYyB2b2lkIHNlbmRSZXF1ZXN0
Q2FsbGJhY2soR09iamVjdCogc291cmNlLCBHQXN5bmNSZXN1bHQqIHJlcywgZ3BvaW50ZXIgZGF0
YSkKIHsKICAgICBSZWZQdHI8UmVzb3VyY2VIYW5kbGU+IGhhbmRsZSA9IHN0YXRpY19jYXN0PFJl
c291cmNlSGFuZGxlKj4oZGF0YSk7CkBAIC0zODUsNiArNDQ2LDE4IEBAIHN0YXRpYyB2b2lkIHNl
bmRSZXF1ZXN0Q2FsbGJhY2soR09iamVjdCogc291cmNlLCBHQXN5bmNSZXN1bHQqIHJlcywgZ3Bv
aW50ZXIgZGF0CiAgICAgICAgICAgICBkLT5tX3Jlc3BvbnNlLnNldFNuaWZmZWRDb250ZW50VHlw
ZShzbmlmZmVkVHlwZSk7CiAgICAgICAgIH0KICAgICAgICAgZC0+bV9yZXNwb25zZS51cGRhdGVG
cm9tU291cE1lc3NhZ2Uoc291cE1lc3NhZ2UpOworCisgICAgICAgIGlmIChoYXNVbmlnbm9yZWRU
TFNFcnJvcnMoaGFuZGxlLmdldCgpKSkgeworICAgICAgICAgICAgQ2VydGlmaWNhdGVzTWFwOjpp
dGVyYXRvciBpdGVyID0gY2xpZW50Q2VydGlmaWNhdGVzKCkuZmluZChoYW5kbGUtPmZpcnN0UmVx
dWVzdCgpLnVybCgpLmhvc3QoKS5sb3dlcigpKTsKKyAgICAgICAgICAgIGlmIChpdGVyID09IGNs
aWVudENlcnRpZmljYXRlcygpLmVuZCgpIHx8ICFpdGVyLT5zZWNvbmQuY2hlY2soZC0+bV9yZXNw
b25zZS5zb3VwTWVzc2FnZUNlcnRpZmljYXRlKCkpKSB7CisgICAgICAgICAgICAgICAgR093blB0
cjxjaGFyPiB1cmkoc291cF91cmlfdG9fc3RyaW5nKHNvdXBfcmVxdWVzdF9nZXRfdXJpKGQtPm1f
c291cFJlcXVlc3QuZ2V0KCkpLCBGQUxTRSkpOworICAgICAgICAgICAgICAgIGNsaWVudC0+ZGlk
RmFpbChoYW5kbGUuZ2V0KCksIFJlc291cmNlRXJyb3IoZ19xdWFya190b19zdHJpbmcoU09VUF9I
VFRQX0VSUk9SKSwgU09VUF9TVEFUVVNfU1NMX0ZBSUxFRCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVyaS5nZXQoKSwgdW5hY2Nl
cHRhYmxlVExTQ2VydGlmaWNhdGUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQtPm1fcmVzcG9uc2Uuc291cE1lc3NhZ2VUTFNF
cnJvcnMoKSwgZC0+bV9yZXNwb25zZS5zb3VwTWVzc2FnZUNlcnRpZmljYXRlKCkpKTsKKyAgICAg
ICAgICAgICAgICBjbGVhbnVwU291cFJlcXVlc3RPcGVyYXRpb24oaGFuZGxlLmdldCgpKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICB9IGVs
c2UgewogICAgICAgICBkLT5tX3Jlc3BvbnNlLnNldFVSTChoYW5kbGUtPmZpcnN0UmVxdWVzdCgp
LnVybCgpKTsKICAgICAgICAgY29uc3QgZ2NoYXIqIGNvbnRlbnRUeXBlID0gc291cF9yZXF1ZXN0
X2dldF9jb250ZW50X3R5cGUoZC0+bV9zb3VwUmVxdWVzdC5nZXQoKSk7CkBAIC03NDAsNiArODEz
LDIxIEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmNhbmNlbCgpCiAgICAgICAgIGdfY2FuY2VsbGFi
bGVfY2FuY2VsKGQtPm1fY2FuY2VsbGFibGUuZ2V0KCkpOwogfQogCit2b2lkIFJlc291cmNlSGFu
ZGxlOjpzZXRIb3N0QWxsb3dzQW55SFRUUFNDZXJ0aWZpY2F0ZShjb25zdCBTdHJpbmcmIGhvc3Qp
Cit7CisgICAgYWxsb3dzQW55SFRUUFNDZXJ0aWZpY2F0ZUhvc3RzKCkuYWRkKGhvc3QubG93ZXIo
KSk7Cit9CisKK3ZvaWQgUmVzb3VyY2VIYW5kbGU6OnNldENsaWVudENlcnRpZmljYXRlKGNvbnN0
IFN0cmluZyYgaG9zdCwgR1Rsc0NlcnRpZmljYXRlKiBjZXJ0aWZpY2F0ZSkKK3sKKyAgICBjbGll
bnRDZXJ0aWZpY2F0ZXMoKS5hZGQoaG9zdC5sb3dlcigpLCBIb3N0VExTQ2VydGlmaWNhdGVzKCkp
Lml0ZXJhdG9yLT5zZWNvbmQuYWRkKGNlcnRpZmljYXRlKTsKK30KKwordm9pZCBSZXNvdXJjZUhh
bmRsZTo6c2V0SWdub3JlU1NMRXJyb3JzKGJvb2wgaWdub3JlU1NMRXJyb3JzKQoreworICAgIGdJ
Z25vcmVTU0xFcnJvcnMgPSBpZ25vcmVTU0xFcnJvcnM7Cit9CisKIHN0YXRpYyBib29sIGhhc0Jl
ZW5TZW50KFJlc291cmNlSGFuZGxlKiBoYW5kbGUpCiB7CiAgICAgUmVzb3VyY2VIYW5kbGVJbnRl
cm5hbCogZCA9IGhhbmRsZS0+Z2V0SW50ZXJuYWwoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlc3BvbnNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXNwb25zZS5oCmluZGV4IDg2MjRj
MDUuLjA2YTU0ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
c291cC9SZXNvdXJjZVJlc3BvbnNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9zb3VwL1Jlc291cmNlUmVzcG9uc2UuaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUg
IlJlc291cmNlUmVzcG9uc2VCYXNlLmgiCiAKICNpbmNsdWRlIDxsaWJzb3VwL3NvdXAuaD4KKyNp
bmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApA
QCAtMzcsMTggKzM4LDIxIEBAIHB1YmxpYzoKICAgICBSZXNvdXJjZVJlc3BvbnNlKCkKICAgICAg
ICAgOiBSZXNvdXJjZVJlc3BvbnNlQmFzZSgpCiAgICAgICAgICwgbV9zb3VwRmxhZ3Moc3RhdGlj
X2Nhc3Q8U291cE1lc3NhZ2VGbGFncz4oMCkpCisgICAgICAgICwgbV90bHNFcnJvcnMoc3RhdGlj
X2Nhc3Q8R1Rsc0NlcnRpZmljYXRlRmxhZ3M+KDApKQogICAgIHsKICAgICB9CiAKICAgICBSZXNv
dXJjZVJlc3BvbnNlKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgbG9u
ZyBsb25nIGV4cGVjdGVkTGVuZ3RoLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGNv
bnN0IFN0cmluZyYgZmlsZW5hbWUpCiAgICAgICAgIDogUmVzb3VyY2VSZXNwb25zZUJhc2UodXJs
LCBtaW1lVHlwZSwgZXhwZWN0ZWRMZW5ndGgsIHRleHRFbmNvZGluZ05hbWUsIGZpbGVuYW1lKQog
ICAgICAgICAsIG1fc291cEZsYWdzKHN0YXRpY19jYXN0PFNvdXBNZXNzYWdlRmxhZ3M+KDApKQor
ICAgICAgICAsIG1fdGxzRXJyb3JzKHN0YXRpY19jYXN0PEdUbHNDZXJ0aWZpY2F0ZUZsYWdzPigw
KSkKICAgICB7CiAgICAgfQogCiAgICAgUmVzb3VyY2VSZXNwb25zZShTb3VwTWVzc2FnZSogc291
cE1lc3NhZ2UpCiAgICAgICAgIDogUmVzb3VyY2VSZXNwb25zZUJhc2UoKQogICAgICAgICAsIG1f
c291cEZsYWdzKHN0YXRpY19jYXN0PFNvdXBNZXNzYWdlRmxhZ3M+KDApKQorICAgICAgICAsIG1f
dGxzRXJyb3JzKHN0YXRpY19jYXN0PEdUbHNDZXJ0aWZpY2F0ZUZsYWdzPigwKSkKICAgICB7CiAg
ICAgICAgIHVwZGF0ZUZyb21Tb3VwTWVzc2FnZShzb3VwTWVzc2FnZSk7CiAgICAgfQpAQCAtNjIs
MTEgKzY2LDE2IEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHJpbmcmIHNuaWZmZWRDb250ZW50VHlw
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc25pZmZlZENvbnRlbnRUeXBlOyB9CiAgICAgdm9pZCBzZXRT
bmlmZmVkQ29udGVudFR5cGUoY29uc3QgU3RyaW5nJiB2YWx1ZSkgeyBtX3NuaWZmZWRDb250ZW50
VHlwZSA9IHZhbHVlOyB9CiAKKyAgICBHVGxzQ2VydGlmaWNhdGUqIHNvdXBNZXNzYWdlQ2VydGlm
aWNhdGUoKSBjb25zdCB7IHJldHVybiBtX2NlcnRpZmljYXRlLmdldCgpOyB9CisgICAgR1Rsc0Nl
cnRpZmljYXRlRmxhZ3Mgc291cE1lc3NhZ2VUTFNFcnJvcnMoKSBjb25zdCB7IHJldHVybiBtX3Rs
c0Vycm9yczsgfQorCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBSZXNvdXJjZVJlc3BvbnNl
QmFzZTsKIAogICAgIFNvdXBNZXNzYWdlRmxhZ3MgbV9zb3VwRmxhZ3M7CiAgICAgU3RyaW5nIG1f
c25pZmZlZENvbnRlbnRUeXBlOworICAgIEdSZWZQdHI8R1Rsc0NlcnRpZmljYXRlPiBtX2NlcnRp
ZmljYXRlOworICAgIEdUbHNDZXJ0aWZpY2F0ZUZsYWdzIG1fdGxzRXJyb3JzOwogCiAgICAgdm9p
ZCBkb1VwZGF0ZVJlc291cmNlUmVzcG9uc2UoKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVzcG9uc2VTb3VwLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlc3BvbnNlU291cC5j
cHAKaW5kZXggMTU1MDQ4Yi4uZGRhYTg5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVzcG9uc2VTb3VwLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXNwb25zZVNvdXAuY3BwCkBA
IC01MSw2ICs1MSw4IEBAIFNvdXBNZXNzYWdlKiBSZXNvdXJjZVJlc3BvbnNlOjp0b1NvdXBNZXNz
YWdlKCkgY29uc3QKIAogICAgIHNvdXBfbWVzc2FnZV9zZXRfZmxhZ3Moc291cE1lc3NhZ2UsIG1f
c291cEZsYWdzKTsKIAorICAgIGdfb2JqZWN0X3NldChHX09CSkVDVChzb3VwTWVzc2FnZSksICJ0
bHMtY2VydGlmaWNhdGUiLCBtX2NlcnRpZmljYXRlLmdldCgpLCAidGxzLWVycm9ycyIsIG1fdGxz
RXJyb3JzLCBOVUxMKTsKKwogICAgIC8vIEJvZHkgZGF0YSBpcyBub3QgaW4gdGhlIG1lc3NhZ2Uu
CiAgICAgcmV0dXJuIHNvdXBNZXNzYWdlOwogfQpAQCAtODQsNiArODYsMTAgQEAgdm9pZCBSZXNv
dXJjZVJlc3BvbnNlOjp1cGRhdGVGcm9tU291cE1lc3NhZ2UoU291cE1lc3NhZ2UqIHNvdXBNZXNz
YWdlKQogICAgIHNldEV4cGVjdGVkQ29udGVudExlbmd0aChzb3VwX21lc3NhZ2VfaGVhZGVyc19n
ZXRfY29udGVudF9sZW5ndGgoc291cE1lc3NhZ2UtPnJlc3BvbnNlX2hlYWRlcnMpKTsKICAgICBz
ZXRIVFRQU3RhdHVzVGV4dChzb3VwTWVzc2FnZS0+cmVhc29uX3BocmFzZSk7CiAgICAgc2V0U3Vn
Z2VzdGVkRmlsZW5hbWUoZmlsZW5hbWVGcm9tSFRUUENvbnRlbnREaXNwb3NpdGlvbihodHRwSGVh
ZGVyRmllbGQoIkNvbnRlbnQtRGlzcG9zaXRpb24iKSkpOworCisgICAgR1Rsc0NlcnRpZmljYXRl
KiBjZXJ0aWZpY2F0ZSA9IDA7CisgICAgc291cF9tZXNzYWdlX2dldF9odHRwc19zdGF0dXMoc291
cE1lc3NhZ2UsICZjZXJ0aWZpY2F0ZSwgJm1fdGxzRXJyb3JzKTsKKyAgICBtX2NlcnRpZmljYXRl
ID0gY2VydGlmaWNhdGU7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3
ay9ld2tfbWFpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX21haW4uY3BwCmluZGV4
IGI0OGMyOGEuLmE1MDkwNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tf
bWFpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19tYWluLmNwcApAQCAtMTgx
LDUgKzE4MSw3IEBAIEVpbmFfQm9vbCBfZXdrX2luaXRfYm9keSh2b2lkKQogICAgIFNvdXBTZXNz
aW9uRmVhdHVyZSogYXV0aF9kaWFsb2cgPSBzdGF0aWNfY2FzdDxTb3VwU2Vzc2lvbkZlYXR1cmUq
PihnX29iamVjdF9uZXcoRVdLX1RZUEVfU09VUF9BVVRIX0RJQUxPRywgMCkpOwogICAgIHNvdXBf
c2Vzc2lvbl9hZGRfZmVhdHVyZShzZXNzaW9uLCBhdXRoX2RpYWxvZyk7CiAKKyAgICBXZWJDb3Jl
OjpSZXNvdXJjZUhhbmRsZTo6c2V0SWdub3JlU1NMRXJyb3JzKHRydWUpOworCiAgICAgcmV0dXJu
IHRydWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0Z2xv
YmFscy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0Z2xvYmFscy5jcHAKaW5k
ZXggNDJmN2ExZC4uNDAzNTZiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0
L3dlYmtpdGdsb2JhbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRn
bG9iYWxzLmNwcApAQCAtNTMxLDYgKzUzMSw4IEBAIHZvaWQgd2Via2l0SW5pdCgpCiAgICAgc291
cF9zZXNzaW9uX2FkZF9mZWF0dXJlKHNlc3Npb24sIGF1dGhEaWFsb2cpOwogICAgIGdfb2JqZWN0
X3VucmVmKGF1dGhEaWFsb2cpOwogCisgICAgV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnNldEln
bm9yZVNTTEVycm9ycyh0cnVlKTsKKwogI2lmIFVTRShDTFVUVEVSKQogICAgIGd0a19jbHV0dGVy
X2luaXQoMCwgMCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvZWZsL1dlYlByb2Nlc3NNYWluRWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
ZWZsL1dlYlByb2Nlc3NNYWluRWZsLmNwcAppbmRleCA5MmQzNTE2Li42YTBiYmNhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2VmbC9XZWJQcm9jZXNzTWFpbkVmbC5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9lZmwvV2ViUHJvY2Vzc01haW5FZmwuY3Bw
CkBAIC03NCw2ICs3NCw4IEBAIFdLX0VYUE9SVCBpbnQgV2ViUHJvY2Vzc01haW5FZmwoaW50IGFy
Z2MsIGNoYXIqIGFyZ3ZbXSkKICAgICAgICAgc291cF91cmlfZnJlZShwcm94eVVyaSk7CiAgICAg
fQogCisgICAgV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnNldElnbm9yZVNTTEVycm9ycyh0cnVl
KTsKKwogICAgIGludCBzb2NrZXQgPSBhdG9pKGFyZ3ZbMV0pOwogICAgIFdlYlByb2Nlc3M6OnNo
YXJlZCgpLmluaXRpYWxpemUoc29ja2V0LCBSdW5Mb29wOjptYWluKCkpOwogICAgIFJ1bkxvb3A6
OnJ1bigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9ndGsvV2ViUHJv
Y2Vzc01haW5HdGsuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9ndGsvV2ViUHJvY2Vz
c01haW5HdGsuY3BwCmluZGV4IDQ1Yjg1ODEuLjkwZjlmYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvZ3RrL1dlYlByb2Nlc3NNYWluR3RrLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL2d0ay9XZWJQcm9jZXNzTWFpbkd0ay5jcHAKQEAgLTcwLDYgKzcw
LDkgQEAgV0tfRVhQT1JUIGludCBXZWJQcm9jZXNzTWFpbkd0ayhpbnQgYXJnYywgY2hhciogYXJn
dltdKQogICAgIGdfb2JqZWN0X3NldChzZXNzaW9uLCBTT1VQX1NFU1NJT05fU1NMX1VTRV9TWVNU
RU1fQ0FfRklMRSwgVFJVRSwKICAgICAgICAgICAgICAgICAgU09VUF9TRVNTSU9OX1NTTF9TVFJJ
Q1QsIEZBTFNFLCBOVUxMKTsKIAorICAgIC8vIFRoaXMgaXMgZm9yIGNvbXBhdGliaWxpdHksIGl0
IHdpbGwgYmUgcmVtb3ZlZCB3aGVuIFVJIHByb2Nlc3MgY2FuIGhhbmRsZSBTU0wgZXJyb3JzLgor
ICAgIFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpzZXRJZ25vcmVTU0xFcnJvcnModHJ1ZSk7CisK
ICAgICBSdW5Mb29wOjpydW4oKTsKIAogICAgIHJldHVybiAwOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>152205</attachid>
            <date>2012-07-13 03:14:50 -0700</date>
            <delta_ts>2012-08-09 09:55:07 -0700</delta_ts>
            <desc>Rebased to current git master</desc>
            <filename>wk-ssl-errors5.diff</filename>
            <type>text/plain</type>
            <size>15669</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBjODk0OTM2Li5kMDViOGZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDkg
QEAKKzIwMTItMDctMTMgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIEhhbmRsZSBTU0wgZXJyb3JzIGZvciBTT1VQCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDI2NworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgdGhpcyBpcyBjb3Zl
cmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogcGxhdGZvcm0vTG9jYWxpemVkU3Ry
aW5ncy5oOgorICAgICAgICAoV2ViQ29yZSk6IEFkZCB1bmFjY2VwdGFibGVUTFNDZXJ0aWZpY2F0
ZSgpIGZvciBTT1VQLgorICAgICAgICAqIHBsYXRmb3JtL2VmbC9Mb2NhbGl6ZWRTdHJpbmdzRWZs
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnVuYWNjZXB0YWJsZVRMU0NlcnRpZmljYXRlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ndGsvTG9jYWxpemVkU3RyaW5nc0d0ay5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjp1bmFjY2VwdGFibGVUTFNDZXJ0aWZpY2F0ZSk6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9SZXNvdXJjZUhhbmRsZS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291
cC9SZXNvdXJjZUVycm9yLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUVycm9yOjpSZXNv
dXJjZUVycm9yKTogQWRkIG5ldyBjb25zdHJjdXRvciBmb3IKKyAgICAgICAgU1NMIGVycm9ycyB0
aGF0IHJlY2VpdmVzIGEgY2VydGlmaWNhdGUgYW5kIFRMUyBlcnJvcnMuCisgICAgICAgIChXZWJD
b3JlOjpSZXNvdXJjZUVycm9yOjp0bHNFcnJvcnMpOiBSZXR1cm4gVExTIGVycm9ycy4KKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlRXJyb3I6OmNlcnRpZmljYXRlKTogUmV0dXJuIHRoZSBjZXJ0
aWZpY2F0ZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVT
b3VwLmNwcDoKKyAgICAgICAgKEhvc3RUTFNDZXJ0aWZpY2F0ZXMpOiBIZWxwZXIgY2xhc3MgdG8g
c3RvcmUgY2VydGlmaWNhdGVzIGZvciBhCisgICAgICAgIGhvc3QuCisgICAgICAgIChXZWJDb3Jl
OjpIb3N0VExTQ2VydGlmaWNhdGVzOjphZGQpOiBBZGQgYSBuZXcgY2VydGlmaWNhdGUuCisgICAg
ICAgIChXZWJDb3JlOjpIb3N0VExTQ2VydGlmaWNhdGVzOjpjaGVjayk6IENoZWNrIHdoZXRoZXIg
Y2VydGlmaWNhdGUKKyAgICAgICAgaXMgc3RvcmVkLgorICAgICAgICAoV2ViQ29yZTo6SG9zdFRM
U0NlcnRpZmljYXRlczo6Y29tcHV0ZUNlcnRpZmljYXRlSGFzaCk6IENvbXB1dGUKKyAgICAgICAg
dGhlIFNIQTEgb2YgdGhlIGNlcnRpZmljYXRlIGRhdGEuCisgICAgICAgIChXZWJDb3JlOjphbGxv
d3NBbnlIVFRQU0NlcnRpZmljYXRlSG9zdHMpOiBHbG9iYWwgc2V0IHRvIHN0b3JlCisgICAgICAg
IGhvc3RuYW1lcyBmb3Igd2hpY2ggU1NMIGVycm9ycyBzaG91bGQgYmUgaWdub3JlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OmNsaWVudENlcnRpZmljYXRlcyk6IEdsb2JhbCBtYXAgdG8gc3RvcmUgY2xp
ZW50CisgICAgICAgIGNlcnRpZmljYXRlcy4KKyAgICAgICAgKFdlYkNvcmU6Omhhc1VuaWdub3Jl
ZFRMU0Vycm9ycyk6IEhlbHBlciBmdW5jdGlvbiB0byBjaGVjayB3aGV0aGVyCisgICAgICAgIGN1
cnJlbnQgbWVzc2FnZSBjb250YWlucyBUTFMgZXJyb3JzIHRoYXQgc2hvdWxkbid0IGJlIGlnbm9y
ZWQgYW5kCisgICAgICAgIGNlcnRpZmljYXRlIGhhc24ndCBiZWVuIGFwcHJvdmVkIGFscmVhZHku
CisgICAgICAgIChXZWJDb3JlOjpzZW5kUmVxdWVzdENhbGxiYWNrKTogRmluaXNoIHRoZSBsb2Fk
IHdpdGggYW4gZXJyb3IgaW4KKyAgICAgICAgY2FzZSBvZiBTU0wgZXJyb3JzIG5vdCBoYW5kbGVk
IGJ5IHRoZSBTb3VwU2Vzc2lvbi4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpz
ZXRIb3N0QWxsb3dzQW55SFRUUFNDZXJ0aWZpY2F0ZSk6IEFkZAorICAgICAgICB0aGUgZ2l2ZW4g
aG9zdG5hbWUgdG8gdGhlIGxpc3Qgb2YgaG9zdHMgZm9yIHdoaWNoIFNTTCBlcnJvcnMgYXJlCisg
ICAgICAgIGlnbm9yZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6c2V0Q2xp
ZW50Q2VydGlmaWNhdGUpOiBTdG9yZSB0aGUgY2xpZW50CisgICAgICAgIGNlcnRpZmljYXRlIGZv
ciB0aGUgZ2l2ZW4gaG9zdC4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpzZXRJ
Z25vcmVTU0xFcnJvcnMpOiBTZXQgd2hldGhlciBhbGwgU1NMCisgICAgICAgIGVycm9ycyBzaG91
bGQgYmUgaWdub3JlZC4KKwogMjAxMi0wNy0xMiAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2Fy
Y2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gQWRkIEFQSSB0byBnZXQgSFRUUFMgc3Rh
dHVzIHRvIFdlYktpdDIgR1RLKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCmluZGV4IDE0MWY4YmYuLjIyMmRjYTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L2VmbC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wNy0xMyAgQ2FybG9zIEdh
cmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgSGFuZGxlIFNTTCBl
cnJvcnMgZm9yIFNPVVAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTkwMjY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgSWdub3JlIFNTTCBlcnJvcnMgYnkgZGVmYXVsdCBmb3IgY29tcGF0aWJpbGl0eS4KKwor
ICAgICAgICAqIGV3ay9ld2tfbWFpbi5jcHA6CisgICAgICAgIChfZXdrX2luaXRfYm9keSk6CisK
IDIwMTItMDctMTAgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBM
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQ29uZmlndXJhdGlvbkZvclZpZXdwb3J0IHNob3VsZCBt
b3ZlIHRvIEludGVybmFscwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCmluZGV4IDk1ZmE1M2UuLmQzMjZjYjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L2d0ay9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wNy0xMyAgQ2FybG9zIEdhcmNp
YSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgSGFuZGxlIFNTTCBlcnJv
cnMgZm9yIFNPVVAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTkwMjY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgSWdub3JlIFNTTCBlcnJvcnMgYnkgZGVmYXVsdCBmb3IgY29tcGF0aWJpbGl0eS4KKworICAg
ICAgICAqIHdlYmtpdC93ZWJraXRnbG9iYWxzLmNwcDoKKyAgICAgICAgKHdlYmtpdEluaXQpOgor
CiAyMDEyLTA3LTEwICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
V2ViQ29yZTo6U2V0dGluZ3MgZm9yIEhpeGllNzYgV2ViU29ja2V0IHByb3RvY29sIGRvZXNuJ3Qg
ZG8gYW55dGhpbmcgYW5kIHNob3VsZCBiZSByZW1vdmVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYzkwMDg1Yy4u
NTQwYjQxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTA3LTEzICBDYXJsb3Mg
R2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKworICAgICAgICBIYW5kbGUgU1NM
IGVycm9ycyBmb3IgU09VUAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9OTAyNjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBJZ25vcmUgU1NMIGVycm9ycyBieSBkZWZhdWx0IGZvciBjb21wYXRpYmlsaXR5Lgor
CisgICAgICAgICogV2ViUHJvY2Vzcy9lZmwvV2ViUHJvY2Vzc01haW5FZmwuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzTWFpbkVmbCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9ndGsv
V2ViUHJvY2Vzc01haW5HdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzTWFpbkd0
ayk6CisKIDIwMTItMDctMTIgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFtHVEtdIEFkZCBBUEkgdG8gZ2V0IEhUVFBTIHN0YXR1cyB0byBXZWJL
aXQyIEdUSysKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0
cmluZ3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuaAppbmRl
eCBmZTY2ODZkLi45MTMzNzk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9M
b2NhbGl6ZWRTdHJpbmdzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVk
U3RyaW5ncy5oCkBAIC0yMTksNiArMjE5LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIFN0
cmluZyBkYXRlRm9ybWF0TW9udGhUZXh0KCk7CiAgICAgU3RyaW5nIGRhdGVGb3JtYXREYXlJbk1v
bnRoVGV4dCgpOwogI2VuZGlmCisjaWYgVVNFKFNPVVApCisgICAgU3RyaW5nIHVuYWNjZXB0YWJs
ZVRMU0NlcnRpZmljYXRlKCk7CisjZW5kaWYKIAogI2lmICFQTEFURk9STShDSFJPTUlVTSkKICNk
ZWZpbmUgV0VCX1VJX1NUUklORyhzdHJpbmcsIGRlc2NyaXB0aW9uKSBXZWJDb3JlOjpsb2NhbGl6
ZWRTdHJpbmcoc3RyaW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZs
L0xvY2FsaXplZFN0cmluZ3NFZmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL0xv
Y2FsaXplZFN0cmluZ3NFZmwuY3BwCmluZGV4IDI2M2I1YjMuLjkyNTJmYjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9Mb2NhbGl6ZWRTdHJpbmdzRWZsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvTG9jYWxpemVkU3RyaW5nc0VmbC5jcHAKQEAg
LTU2Niw2ICs1NjYsMTEgQEAgU3RyaW5nIGluc2VjdXJlUGx1Z2luVmVyc2lvblRleHQoKQogICAg
IHJldHVybiBTdHJpbmcoKTsKIH0KIAorU3RyaW5nIHVuYWNjZXB0YWJsZVRMU0NlcnRpZmljYXRl
KCkKK3sKKyAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOCgiVW5hY2NlcHRhYmxlIFRMUyBjZXJ0
aWZpY2F0ZSIpOworfQorCiBTdHJpbmcgbG9jYWxpemVkU3RyaW5nKGNvbnN0IGNoYXIqIGtleSkK
IHsKICAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChrZXksIHN0cmxlbihrZXkpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9Mb2NhbGl6ZWRTdHJpbmdzR3RrLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9Mb2NhbGl6ZWRTdHJpbmdzR3RrLmNwcApp
bmRleCA0YmIyY2UwLi5mNmQyZmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvTG9jYWxpemVkU3RyaW5nc0d0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3RrL0xvY2FsaXplZFN0cmluZ3NHdGsuY3BwCkBAIC03MTcsNiArNzE3LDExIEBAIFN0cmlu
ZyB2YWxpZGF0aW9uTWVzc2FnZVN0ZXBNaXNtYXRjaFRleHQoY29uc3QgU3RyaW5nJiwgY29uc3Qg
U3RyaW5nJikKICAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChfKCJzdGVwIG1pc21hdGNoIikp
OwogfQogCitTdHJpbmcgdW5hY2NlcHRhYmxlVExTQ2VydGlmaWNhdGUoKQoreworICAgIHJldHVy
biBTdHJpbmc6OmZyb21VVEY4KF8oIlVuYWNjZXB0YWJsZSBUTFMgY2VydGlmaWNhdGUiKSk7Cit9
CisKIFN0cmluZyBsb2NhbGl6ZWRTdHJpbmcoY29uc3QgY2hhcioga2V5KQogewogICAgIHJldHVy
biBTdHJpbmc6OmZyb21VVEY4KGtleSwgc3RybGVuKGtleSkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCmluZGV4IDUwNzFmNGIuLmNjMjE5
MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VI
YW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFu
ZGxlLmgKQEAgLTE2OCw2ICsxNjgsOSBAQCBwdWJsaWM6CiAKICNpZiBVU0UoU09VUCkKICAgICBz
dGF0aWMgU291cFNlc3Npb24qIGRlZmF1bHRTZXNzaW9uKCk7CisgICAgc3RhdGljIHZvaWQgc2V0
SG9zdEFsbG93c0FueUhUVFBTQ2VydGlmaWNhdGUoY29uc3QgU3RyaW5nJik7CisgICAgc3RhdGlj
IHZvaWQgc2V0Q2xpZW50Q2VydGlmaWNhdGUoY29uc3QgU3RyaW5nJiBob3N0LCBHVGxzQ2VydGlm
aWNhdGUqKTsKKyAgICBzdGF0aWMgdm9pZCBzZXRJZ25vcmVTU0xFcnJvcnMoYm9vbCk7CiAjZW5k
aWYKIAogICAgIC8vIFVzZWQgdG8gd29yayBhcm91bmQgdGhlIGZhY3QgdGhhdCB5b3UgZG9uJ3Qg
Z2V0IGFueSBtb3JlIE5TVVJMQ29ubmVjdGlvbiBjYWxsYmFja3MgdW50aWwgeW91IHJldHVybiBm
cm9tIHRoZSBvbmUgeW91J3JlIGluLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvc291cC9SZXNvdXJjZUVycm9yLmgKaW5kZXggMmQxMTM2Ny4uMzc4ODBlNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlRXJy
b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VF
cnJvci5oCkBAIC0yNyw2ICsyNyw5IEBACiAjZGVmaW5lIFJlc291cmNlRXJyb3JfaAogCiAjaW5j
bHVkZSAiUmVzb3VyY2VFcnJvckJhc2UuaCIKKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRy
Lmg+CisKK3R5cGVkZWYgc3RydWN0IF9HVGxzQ2VydGlmaWNhdGUgR1Rsc0NlcnRpZmljYXRlOwog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM0LDEzICszNywyOSBAQCBjbGFzcyBSZXNvdXJj
ZUVycm9yIDogcHVibGljIFJlc291cmNlRXJyb3JCYXNlCiB7CiBwdWJsaWM6CiAgICAgUmVzb3Vy
Y2VFcnJvcigpCisgICAgICAgIDogbV90bHNFcnJvcnMoMCkKICAgICB7CiAgICAgfQogCiAgICAg
UmVzb3VyY2VFcnJvcihjb25zdCBTdHJpbmcmIGRvbWFpbiwgaW50IGVycm9yQ29kZSwgY29uc3Qg
U3RyaW5nJiBmYWlsaW5nVVJMLCBjb25zdCBTdHJpbmcmIGxvY2FsaXplZERlc2NyaXB0aW9uKQog
ICAgICAgICA6IFJlc291cmNlRXJyb3JCYXNlKGRvbWFpbiwgZXJyb3JDb2RlLCBmYWlsaW5nVVJM
LCBsb2NhbGl6ZWREZXNjcmlwdGlvbikKKyAgICAgICAgLCBtX3Rsc0Vycm9ycygwKQogICAgIHsK
ICAgICB9CisKKyAgICBSZXNvdXJjZUVycm9yKGNvbnN0IFN0cmluZyYgZG9tYWluLCBpbnQgZXJy
b3JDb2RlLCBjb25zdCBTdHJpbmcmIGZhaWxpbmdVUkwsIGNvbnN0IFN0cmluZyYgbG9jYWxpemVk
RGVzY3JpcHRpb24sIHVuc2lnbmVkIHRsc0Vycm9ycywgR1Rsc0NlcnRpZmljYXRlKiBjZXJ0aWZp
Y2F0ZSkKKyAgICAgICAgOiBSZXNvdXJjZUVycm9yQmFzZShkb21haW4sIGVycm9yQ29kZSwgZmFp
bGluZ1VSTCwgbG9jYWxpemVkRGVzY3JpcHRpb24pCisgICAgICAgICwgbV90bHNFcnJvcnModGxz
RXJyb3JzKQorICAgICAgICAsIG1fY2VydGlmaWNhdGUoY2VydGlmaWNhdGUpCisgICAgeworICAg
IH0KKworICAgIHVuc2lnbmVkIHRsc0Vycm9ycygpIGNvbnN0IHsgcmV0dXJuIG1fdGxzRXJyb3Jz
OyB9CisgICAgR1Rsc0NlcnRpZmljYXRlKiBjZXJ0aWZpY2F0ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
Y2VydGlmaWNhdGUuZ2V0KCk7IH0KKworcHJpdmF0ZToKKyAgICB1bnNpZ25lZCBtX3Rsc0Vycm9y
czsKKyAgICBHUmVmUHRyPEdUbHNDZXJ0aWZpY2F0ZT4gbV9jZXJ0aWZpY2F0ZTsKIH07CiAKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJj
ZUhhbmRsZVNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jl
c291cmNlSGFuZGxlU291cC5jcHAKaW5kZXggNjBlNGUxNS4uN2FlYjcyOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFu
ZGxlU291cC5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1
ZGUgIkdPd25QdHJTb3VwLmgiCiAjaW5jbHVkZSAiSFRUUFBhcnNlcnMuaCIKKyNpbmNsdWRlICJM
b2NhbGl6ZWRTdHJpbmdzLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1JTUVU
eXBlUmVnaXN0cnkuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgpAQCAtNTYsNiArNTcs
NyBAQAogI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAjaW5j
bHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8d3RmL1NIQTEuaD4KICNpbmNsdWRlIDx3dGYvZ29i
amVjdC9HUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCkBAIC0xNTks
NiArMTYxLDQzIEBAIHByaXZhdGU6CiAgICAgR1JlZlB0cjxHTWFpbkxvb3A+IG1fbWFpbkxvb3A7
CiB9OwogCitjbGFzcyBIb3N0VExTQ2VydGlmaWNhdGVzIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
Y29uc3Qgc2l6ZV90IHNoYTFIYXNoU2l6ZSA9IDIwOworCisgICAgdm9pZCBhZGQoR1Rsc0NlcnRp
ZmljYXRlKiBjZXJ0aWZpY2F0ZSkKKyAgICB7CisgICAgICAgIFN0cmluZyBjZXJ0aWZpY2F0ZUhh
c2ggPSBjb21wdXRlQ2VydGlmaWNhdGVIYXNoKGNlcnRpZmljYXRlKTsKKyAgICAgICAgaWYgKCFj
ZXJ0aWZpY2F0ZUhhc2guaXNFbXB0eSgpKQorICAgICAgICAgICAgbV9jZXJ0aWZpY2F0ZXMuYWRk
KGNlcnRpZmljYXRlSGFzaCk7CisgICAgfQorCisgICAgYm9vbCBjaGVjayhHVGxzQ2VydGlmaWNh
dGUqIGNlcnRpZmljYXRlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fY2VydGlmaWNhdGVzLmNv
bnRhaW5zKGNvbXB1dGVDZXJ0aWZpY2F0ZUhhc2goY2VydGlmaWNhdGUpKTsKKyAgICB9CisKK3By
aXZhdGU6CisgICAgc3RhdGljIFN0cmluZyBjb21wdXRlQ2VydGlmaWNhdGVIYXNoKEdUbHNDZXJ0
aWZpY2F0ZSogY2VydGlmaWNhdGUpCisgICAgeworICAgICAgICBHQnl0ZUFycmF5KiBkYXRhID0g
MDsKKyAgICAgICAgZ19vYmplY3RfZ2V0KEdfT0JKRUNUKGNlcnRpZmljYXRlKSwgImNlcnRpZmlj
YXRlIiwgJmRhdGEsIE5VTEwpOworICAgICAgICBpZiAoIWRhdGEpCisgICAgICAgICAgICByZXR1
cm4gU3RyaW5nKCk7CisKKyAgICAgICAgR1JlZlB0cjxHQnl0ZUFycmF5PiBjZXJ0aWZpY2F0ZURh
dGEgPSBhZG9wdEdSZWYoZGF0YSk7CisgICAgICAgIFNIQTEgc2hhMTsKKyAgICAgICAgc2hhMS5h
ZGRCeXRlcyhjZXJ0aWZpY2F0ZURhdGEtPmRhdGEsIGNlcnRpZmljYXRlRGF0YS0+bGVuKTsKKwor
ICAgICAgICBWZWN0b3I8dWludDhfdCwgc2hhMUhhc2hTaXplPiBkaWdlc3Q7CisgICAgICAgIHNo
YTEuY29tcHV0ZUhhc2goZGlnZXN0KTsKKworICAgICAgICByZXR1cm4gYmFzZTY0RW5jb2RlKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRpZ2VzdC5kYXRhKCkpLCBzaGExSGFzaFNpemUp
OworICAgIH0KKworICAgIEhhc2hTZXQ8U3RyaW5nPiBtX2NlcnRpZmljYXRlczsKK307CisKIHN0
YXRpYyB2b2lkIGNsZWFudXBTb3VwUmVxdWVzdE9wZXJhdGlvbihSZXNvdXJjZUhhbmRsZSosIGJv
b2wgaXNEZXN0cm95aW5nKTsKIHN0YXRpYyB2b2lkIHNlbmRSZXF1ZXN0Q2FsbGJhY2soR09iamVj
dCosIEdBc3luY1Jlc3VsdCosIGdwb2ludGVyKTsKIHN0YXRpYyB2b2lkIHJlYWRDYWxsYmFjayhH
T2JqZWN0KiwgR0FzeW5jUmVzdWx0KiwgZ3BvaW50ZXIpOwpAQCAtMTY4LDYgKzIwNywyMSBAQCBz
dGF0aWMgYm9vbCBzdGFydE5vbkhUVFBSZXF1ZXN0KFJlc291cmNlSGFuZGxlKiwgS1VSTCk7CiBz
dGF0aWMgaW50ICBtaWxpc2Vjb25kc1NpbmNlUmVxdWVzdChkb3VibGUgcmVxdWVzdFRpbWUpOwog
I2VuZGlmCiAKK3N0YXRpYyBib29sIGdJZ25vcmVTU0xFcnJvcnMgPSBmYWxzZTsKKworc3RhdGlj
IEhhc2hTZXQ8U3RyaW5nPiYgYWxsb3dzQW55SFRUUFNDZXJ0aWZpY2F0ZUhvc3RzKCkKK3sKKyAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKEhhc2hTZXQ8U3RyaW5nPiwgaG9zdHMsICgpKTsKKyAgICBy
ZXR1cm4gaG9zdHM7Cit9CisKK3R5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIEhvc3RUTFNDZXJ0aWZp
Y2F0ZXM+IENlcnRpZmljYXRlc01hcDsKK3N0YXRpYyBDZXJ0aWZpY2F0ZXNNYXAmIGNsaWVudENl
cnRpZmljYXRlcygpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChDZXJ0aWZpY2F0ZXNNYXAs
IGNlcnRpZmljYXRlcywgKCkpOworICAgIHJldHVybiBjZXJ0aWZpY2F0ZXM7Cit9CisKIFJlc291
cmNlSGFuZGxlSW50ZXJuYWw6On5SZXNvdXJjZUhhbmRsZUludGVybmFsKCkKIHsKIH0KQEAgLTM1
MCw2ICs0MDQsMTMgQEAgc3RhdGljIFJlc291cmNlRXJyb3IgY29udmVydFNvdXBFcnJvclRvUmVz
b3VyY2VFcnJvcihHRXJyb3IqIGVycm9yLCBTb3VwUmVxdWVzdCoKICAgICAgICAgICAgICAgICAg
ICAgICAgICBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSk7CiB9CiAKK3N0YXRpYyBp
bmxpbmUgYm9vbCBoYXNVbmlnbm9yZWRUTFNFcnJvcnMoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSkK
K3sKKyAgICByZXR1cm4gaGFuZGxlLT5nZXRJbnRlcm5hbCgpLT5tX3Jlc3BvbnNlLnNvdXBNZXNz
YWdlVExTRXJyb3JzKCkKKyAgICAgICAgJiYgIWdJZ25vcmVTU0xFcnJvcnMKKyAgICAgICAgJiYg
IWFsbG93c0FueUhUVFBTQ2VydGlmaWNhdGVIb3N0cygpLmNvbnRhaW5zKGhhbmRsZS0+Zmlyc3RS
ZXF1ZXN0KCkudXJsKCkuaG9zdCgpLmxvd2VyKCkpOworfQorCiBzdGF0aWMgdm9pZCBzZW5kUmVx
dWVzdENhbGxiYWNrKEdPYmplY3QqIHNvdXJjZSwgR0FzeW5jUmVzdWx0KiByZXMsIGdwb2ludGVy
IGRhdGEpCiB7CiAgICAgUmVmUHRyPFJlc291cmNlSGFuZGxlPiBoYW5kbGUgPSBzdGF0aWNfY2Fz
dDxSZXNvdXJjZUhhbmRsZSo+KGRhdGEpOwpAQCAtMzg1LDYgKzQ0NiwxOCBAQCBzdGF0aWMgdm9p
ZCBzZW5kUmVxdWVzdENhbGxiYWNrKEdPYmplY3QqIHNvdXJjZSwgR0FzeW5jUmVzdWx0KiByZXMs
IGdwb2ludGVyIGRhdAogICAgICAgICAgICAgZC0+bV9yZXNwb25zZS5zZXRTbmlmZmVkQ29udGVu
dFR5cGUoc25pZmZlZFR5cGUpOwogICAgICAgICB9CiAgICAgICAgIGQtPm1fcmVzcG9uc2UudXBk
YXRlRnJvbVNvdXBNZXNzYWdlKHNvdXBNZXNzYWdlKTsKKworICAgICAgICBpZiAoaGFzVW5pZ25v
cmVkVExTRXJyb3JzKGhhbmRsZS5nZXQoKSkpIHsKKyAgICAgICAgICAgIENlcnRpZmljYXRlc01h
cDo6aXRlcmF0b3IgaXRlciA9IGNsaWVudENlcnRpZmljYXRlcygpLmZpbmQoaGFuZGxlLT5maXJz
dFJlcXVlc3QoKS51cmwoKS5ob3N0KCkubG93ZXIoKSk7CisgICAgICAgICAgICBpZiAoaXRlciA9
PSBjbGllbnRDZXJ0aWZpY2F0ZXMoKS5lbmQoKSB8fCAhaXRlci0+c2Vjb25kLmNoZWNrKGQtPm1f
cmVzcG9uc2Uuc291cE1lc3NhZ2VDZXJ0aWZpY2F0ZSgpKSkgeworICAgICAgICAgICAgICAgIEdP
d25QdHI8Y2hhcj4gdXJpKHNvdXBfdXJpX3RvX3N0cmluZyhzb3VwX3JlcXVlc3RfZ2V0X3VyaShk
LT5tX3NvdXBSZXF1ZXN0LmdldCgpKSwgRkFMU0UpKTsKKyAgICAgICAgICAgICAgICBjbGllbnQt
PmRpZEZhaWwoaGFuZGxlLmdldCgpLCBSZXNvdXJjZUVycm9yKGdfcXVhcmtfdG9fc3RyaW5nKFNP
VVBfSFRUUF9FUlJPUiksIFNPVVBfU1RBVFVTX1NTTF9GQUlMRUQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmkuZ2V0KCksIHVu
YWNjZXB0YWJsZVRMU0NlcnRpZmljYXRlKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLT5tX3Jlc3BvbnNlLnNvdXBNZXNzYWdl
VExTRXJyb3JzKCksIGQtPm1fcmVzcG9uc2Uuc291cE1lc3NhZ2VDZXJ0aWZpY2F0ZSgpKSk7Cisg
ICAgICAgICAgICAgICAgY2xlYW51cFNvdXBSZXF1ZXN0T3BlcmF0aW9uKGhhbmRsZS5nZXQoKSk7
CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAg
fSBlbHNlIHsKICAgICAgICAgZC0+bV9yZXNwb25zZS5zZXRVUkwoaGFuZGxlLT5maXJzdFJlcXVl
c3QoKS51cmwoKSk7CiAgICAgICAgIGNvbnN0IGdjaGFyKiBjb250ZW50VHlwZSA9IHNvdXBfcmVx
dWVzdF9nZXRfY29udGVudF90eXBlKGQtPm1fc291cFJlcXVlc3QuZ2V0KCkpOwpAQCAtNzQwLDYg
KzgxMywyMSBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpjYW5jZWwoKQogICAgICAgICBnX2NhbmNl
bGxhYmxlX2NhbmNlbChkLT5tX2NhbmNlbGxhYmxlLmdldCgpKTsKIH0KIAordm9pZCBSZXNvdXJj
ZUhhbmRsZTo6c2V0SG9zdEFsbG93c0FueUhUVFBTQ2VydGlmaWNhdGUoY29uc3QgU3RyaW5nJiBo
b3N0KQoreworICAgIGFsbG93c0FueUhUVFBTQ2VydGlmaWNhdGVIb3N0cygpLmFkZChob3N0Lmxv
d2VyKCkpOworfQorCit2b2lkIFJlc291cmNlSGFuZGxlOjpzZXRDbGllbnRDZXJ0aWZpY2F0ZShj
b25zdCBTdHJpbmcmIGhvc3QsIEdUbHNDZXJ0aWZpY2F0ZSogY2VydGlmaWNhdGUpCit7CisgICAg
Y2xpZW50Q2VydGlmaWNhdGVzKCkuYWRkKGhvc3QubG93ZXIoKSwgSG9zdFRMU0NlcnRpZmljYXRl
cygpKS5pdGVyYXRvci0+c2Vjb25kLmFkZChjZXJ0aWZpY2F0ZSk7Cit9CisKK3ZvaWQgUmVzb3Vy
Y2VIYW5kbGU6OnNldElnbm9yZVNTTEVycm9ycyhib29sIGlnbm9yZVNTTEVycm9ycykKK3sKKyAg
ICBnSWdub3JlU1NMRXJyb3JzID0gaWdub3JlU1NMRXJyb3JzOworfQorCiBzdGF0aWMgYm9vbCBo
YXNCZWVuU2VudChSZXNvdXJjZUhhbmRsZSogaGFuZGxlKQogewogICAgIFJlc291cmNlSGFuZGxl
SW50ZXJuYWwqIGQgPSBoYW5kbGUtPmdldEludGVybmFsKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9ld2svZXdrX21haW4uY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19t
YWluLmNwcAppbmRleCBiNDhjMjhhLi5hNTA5MDY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2VmbC9ld2svZXdrX21haW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfbWFp
bi5jcHAKQEAgLTE4MSw1ICsxODEsNyBAQCBFaW5hX0Jvb2wgX2V3a19pbml0X2JvZHkodm9pZCkK
ICAgICBTb3VwU2Vzc2lvbkZlYXR1cmUqIGF1dGhfZGlhbG9nID0gc3RhdGljX2Nhc3Q8U291cFNl
c3Npb25GZWF0dXJlKj4oZ19vYmplY3RfbmV3KEVXS19UWVBFX1NPVVBfQVVUSF9ESUFMT0csIDAp
KTsKICAgICBzb3VwX3Nlc3Npb25fYWRkX2ZlYXR1cmUoc2Vzc2lvbiwgYXV0aF9kaWFsb2cpOwog
CisgICAgV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnNldElnbm9yZVNTTEVycm9ycyh0cnVlKTsK
KwogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvd2Vi
a2l0L3dlYmtpdGdsb2JhbHMuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdGds
b2JhbHMuY3BwCmluZGV4IDQyZjdhMWQuLjQwMzU2YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvZ3RrL3dlYmtpdC93ZWJraXRnbG9iYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0Z2xvYmFscy5jcHAKQEAgLTUzMSw2ICs1MzEsOCBAQCB2b2lkIHdlYmtpdElu
aXQoKQogICAgIHNvdXBfc2Vzc2lvbl9hZGRfZmVhdHVyZShzZXNzaW9uLCBhdXRoRGlhbG9nKTsK
ICAgICBnX29iamVjdF91bnJlZihhdXRoRGlhbG9nKTsKIAorICAgIFdlYkNvcmU6OlJlc291cmNl
SGFuZGxlOjpzZXRJZ25vcmVTU0xFcnJvcnModHJ1ZSk7CisKICNpZiBVU0UoQ0xVVFRFUikKICAg
ICBndGtfY2x1dHRlcl9pbml0KDAsIDApOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL2VmbC9XZWJQcm9jZXNzTWFpbkVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL2VmbC9XZWJQcm9jZXNzTWFpbkVmbC5jcHAKaW5kZXggOTJkMzUxNi4uNmEw
YmJjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9lZmwvV2ViUHJvY2Vz
c01haW5FZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvZWZsL1dlYlByb2Nl
c3NNYWluRWZsLmNwcApAQCAtNzQsNiArNzQsOCBAQCBXS19FWFBPUlQgaW50IFdlYlByb2Nlc3NN
YWluRWZsKGludCBhcmdjLCBjaGFyKiBhcmd2W10pCiAgICAgICAgIHNvdXBfdXJpX2ZyZWUocHJv
eHlVcmkpOwogICAgIH0KIAorICAgIFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpzZXRJZ25vcmVT
U0xFcnJvcnModHJ1ZSk7CisKICAgICBpbnQgc29ja2V0ID0gYXRvaShhcmd2WzFdKTsKICAgICBX
ZWJQcm9jZXNzOjpzaGFyZWQoKS5pbml0aWFsaXplKHNvY2tldCwgUnVuTG9vcDo6bWFpbigpKTsK
ICAgICBSdW5Mb29wOjpydW4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvZ3RrL1dlYlByb2Nlc3NNYWluR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
Z3RrL1dlYlByb2Nlc3NNYWluR3RrLmNwcAppbmRleCA0NWI4NTgxLi45MGY5ZmM1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2d0ay9XZWJQcm9jZXNzTWFpbkd0ay5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9ndGsvV2ViUHJvY2Vzc01haW5HdGsuY3Bw
CkBAIC03MCw2ICs3MCw5IEBAIFdLX0VYUE9SVCBpbnQgV2ViUHJvY2Vzc01haW5HdGsoaW50IGFy
Z2MsIGNoYXIqIGFyZ3ZbXSkKICAgICBnX29iamVjdF9zZXQoc2Vzc2lvbiwgU09VUF9TRVNTSU9O
X1NTTF9VU0VfU1lTVEVNX0NBX0ZJTEUsIFRSVUUsCiAgICAgICAgICAgICAgICAgIFNPVVBfU0VT
U0lPTl9TU0xfU1RSSUNULCBGQUxTRSwgTlVMTCk7CiAKKyAgICAvLyBUaGlzIGlzIGZvciBjb21w
YXRpYmlsaXR5LCBpdCB3aWxsIGJlIHJlbW92ZWQgd2hlbiBVSSBwcm9jZXNzIGNhbiBoYW5kbGUg
U1NMIGVycm9ycy4KKyAgICBXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6c2V0SWdub3JlU1NMRXJy
b3JzKHRydWUpOworCiAgICAgUnVuTG9vcDo6cnVuKCk7CiAKICAgICByZXR1cm4gMDsK
</data>
<flag name="review"
          id="160838"
          type_id="1"
          status="+"
          setter="mrobinson"
    />
          </attachment>
      

    </bug>

</bugzilla>