<?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>65309</bug_id>
          
          <creation_ts>2011-07-28 05:06:21 -0700</creation_ts>
          <short_desc>[Qt] [WK2] Implement a persistent cookie storage.</short_desc>
          <delta_ts>2011-09-20 14:00:28 -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>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Qt, QtTriaged</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Luiz Agostini">luiz</reporter>
          <assigned_to name="Alexis Menard (darktears)">menard</assigned_to>
          <cc>ap</cc>
    
    <cc>beidson</cc>
    
    <cc>benjamin</cc>
    
    <cc>cshu</cc>
    
    <cc>dglazkov</cc>
    
    <cc>jberlin</cc>
    
    <cc>jesus</cc>
    
    <cc>jturcotte</cc>
    
    <cc>kling</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>menard</cc>
    
    <cc>rafael.lobo</cc>
    
    <cc>sam</cc>
    
    <cc>s.mathur</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>443424</commentid>
    <comment_count>0</comment_count>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2011-07-28 05:06:21 -0700</bug_when>
    <thetext>The objective is to extend the classes WebCookieManager and WebCookieManagerProxy providing a way for the UI process to request the current cookie list from the web process and for the UI process to reset the current cookie list in use by the web process.

This will enable the UI process to present the full cookie list to the user, and will enable the UI process to be responsible for the persistent storage of the cookies.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443432</commentid>
    <comment_count>1</comment_count>
      <attachid>102244</attachid>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2011-07-28 05:20:28 -0700</bug_when>
    <thetext>Created attachment 102244
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443436</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-28 05:23:34 -0700</bug_when>
    <thetext>Attachment 102244 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Tools/MiniBrowser/qt/CookieManager.h:1:  #ifndef header guard has wrong style, please use: CookieManager_h  [build/header_guard] [5]
Tools/MiniBrowser/qt/CookieManager.h:9:  This { should be at the end of the previous line  [whitespace/braces] [4]
Tools/MiniBrowser/qt/CookieManager.h:24:  The parameter name &quot;event&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebKit2/UIProcess/qt/qwkcontext.cpp:31:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 4 in 34 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443460</commentid>
    <comment_count>3</comment_count>
      <attachid>102244</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-28 06:27:00 -0700</bug_when>
    <thetext>Comment on attachment 102244
work in progress

Attachment 102244 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/9268125</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443481</commentid>
    <comment_count>4</comment_count>
      <attachid>102244</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-28 07:28:54 -0700</bug_when>
    <thetext>Comment on attachment 102244
work in progress

Attachment 102244 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/9269119</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443662</commentid>
    <comment_count>5</comment_count>
    <who name="Rafael Brandao">rafael.lobo</who>
    <bug_when>2011-07-28 14:51:18 -0700</bug_when>
    <thetext>I feel like I&apos;ve never used C/C++ like this before. It looks like functional programming but a bit more complicated to understand, but very interesting anyway. :)

Just one thing before I forget, on &quot;qwkcontext_p.h&quot;, you&apos;ve wrote &quot;Callbak&quot; instead of &quot;Callback&quot;. Probably a typo.

Hope to provide more relevant feedback soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444010</commentid>
    <comment_count>6</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-07-29 10:57:19 -0700</bug_when>
    <thetext>&gt;     // This struct is currently only used to provide more cookies information
&gt;     // to the Web Inspector.

This doesn&apos;t seem to be true any more.

My understanding is that for Mac and Windows ports of WebKit2, we tried hard to avoid the need to ever send the list of cookies to another process. Perhaps this functionality shouldn&apos;t be needed by any port.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444081</commentid>
    <comment_count>7</comment_count>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2011-07-29 13:55:12 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; &gt;     // This struct is currently only used to provide more cookies information
&gt; &gt;     // to the Web Inspector.
&gt; 
&gt; This doesn&apos;t seem to be true any more.
&gt; 
&gt; My understanding is that for Mac and Windows ports of WebKit2, we tried hard to avoid the need to ever send the list of cookies to another process. Perhaps this functionality shouldn&apos;t be needed by any port.

We have been discussing about the need of sending cookies from UI to web process and I must say that I am not that sure about it, but the other way around seems to be needed to show to the user the current list of cookies.

How do you plan to deal with cookies considering that we will have more then one web process?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444248</commentid>
    <comment_count>8</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-07-29 21:32:26 -0700</bug_when>
    <thetext>FWIW, Safari 5.1 can show the list of cookies in UI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444760</commentid>
    <comment_count>9</comment_count>
    <who name="Jessie Berlin">jberlin</who>
    <bug_when>2011-08-01 10:41:00 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)
&gt; &gt; &gt;     // This struct is currently only used to provide more cookies information
&gt; &gt; &gt;     // to the Web Inspector.
&gt; &gt; 
&gt; &gt; This doesn&apos;t seem to be true any more.
&gt; &gt; 
&gt; &gt; My understanding is that for Mac and Windows ports of WebKit2, we tried hard to avoid the need to ever send the list of cookies to another process. Perhaps this functionality shouldn&apos;t be needed by any port.
&gt; 
&gt; We have been discussing about the need of sending cookies from UI to web process and I must say that I am not that sure about it, but the other way around seems to be needed to show to the user the current list of cookies.
&gt; 
&gt; How do you plan to deal with cookies considering that we will have more then one web process?

In 5.1, Safari shares the CFURLStorageSession that is used by the UI Process with the Web Process. That means that the same CFHTTPCookieStorage is used by both the UI and Web processes.

Is something similar possible for your port?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444767</commentid>
    <comment_count>10</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-08-01 10:51:34 -0700</bug_when>
    <thetext>&gt; In 5.1, Safari shares the CFURLStorageSession that is used by the UI Process with the Web Process. That means that the same CFHTTPCookieStorage is used by both the UI and Web processes.
&gt; 
&gt; Is something similar possible for your port?

No, not really.
Cookies will not be shared between applications, and currently nothing in our network stack is shared between processes.

Personnally I am not a fan of resetAllCookies() but I think the message GetAllCookies will be necessary for presenting the cookies in the UI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462145</commentid>
    <comment_count>11</comment_count>
      <attachid>106333</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2011-09-05 06:38:38 -0700</bug_when>
    <thetext>Created attachment 106333
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462180</commentid>
    <comment_count>12</comment_count>
      <attachid>106333</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2011-09-05 09:47:26 -0700</bug_when>
    <thetext>Comment on attachment 106333
Patch

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

The implementation seems good, though I feel that it should either be renamed or moved to the WebKit2 directory and initialized as a factory.

&gt; Source/WebCore/WebCore.pri:9
&gt; +QT *= network sql

I&apos;m not a fan of this hard dependency of WebCore on QtSQL. If this feature is decoupled enough, can we protect its compilation with 
contains(QT_CONFIG, sql) or something like that?

&gt; Source/WebCore/platform/Cookie.h:42
&gt; +            : expires(0)

Implicit MS-from-epoch :(
But that&apos;s been there before your patch.

&gt; Source/WebCore/platform/qt/CookieJarQt.cpp:165
&gt; +    WebKit2SharedCookieJar::shared()-&gt;getHostnamesWithCookies(hostnames);
&gt;  }
&gt;  
&gt;  void deleteCookiesForHostname(const String&amp; hostname)
&gt;  {
&gt; -    // FIXME: Not yet implemented
&gt; +    WebKit2SharedCookieJar::shared()-&gt;deleteCookiesForHostname(hostname);
&gt;  }
&gt;  
&gt;  void deleteAllCookies()
&gt;  {
&gt; -    // FIXME: Not yet implemented
&gt; +    WebKit2SharedCookieJar::shared()-&gt;deleteAllCookies();

WebKit2-specific code inside WebCore? Doesn&apos;t look right.
Maybe instead do this factory style, and initialize the factory from WebProcess main? That way the implementation can live inside WebKit2 if it&apos;s WebKit2 specific.
btw what&apos;s WebKit2-specific about this apart from the name?

&gt; Source/WebCore/platform/qt/CookieJarQt.h:40
&gt; +    void deleteCookiesForHostname(const QString&amp;);

For readability, maybe use String here and not QString, as this is one of the functions called from WebCore.

&gt; Source/WebKit2/WebProcess/qt/WebProcessQt.cpp:52
&gt; +    jar-&gt;setParent(0);

This line is a bit puzzling. Could you add a comment?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462198</commentid>
    <comment_count>13</comment_count>
      <attachid>106333</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2011-09-05 11:24:07 -0700</bug_when>
    <thetext>Comment on attachment 106333
Patch

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

&gt; Source/WebCore/platform/Cookie.h:75
&gt; +#if PLATFORM(QT)
&gt; +        Cookie(const QNetworkCookie&amp;);
&gt; +        operator QNetworkCookie() const;
&gt; +#endif

Why do you need the Cookie struct? I only see you use QNetworkCookie directly in this patch.

&gt; Source/WebCore/platform/qt/CookieJarQt.cpp:155
&gt; +    WebKit2SharedCookieJar::shared()-&gt;getHostnamesWithCookies(hostnames);

Any call to those function will have the side effect of creating the SQLite database under the storage path which by default is empty.
To make it future proof and prevent unwanted wasted resources it would be nice having it created less magically. Would be cool as a factory as No&apos;am suggested.

&gt; Source/WebCore/platform/qt/CookieJarQt.cpp:256
&gt; +bool WebKit2SharedCookieJar::setCookiesFromUrl(const QList&lt;QNetworkCookie&gt;&amp; cookieList, const QUrl&amp; url)
&gt; +{

Maybe it&apos;s not worth worrying about it now, but if you have more than one process accessing the same SQLite db at the same time you might run into issues there (same app opened multiple times, or more than one WebProcess). Overall it would be good and free to wrap all updates in this function in a transaction, and it would solve this problem, so it might be worth trying it out.

&gt; Source/WebCore/platform/qt/CookieJarQt.cpp:265
&gt; +    sqlQuery.prepare(QLatin1String(&quot;DELETE FROM cookies WHERE domain=:domainvalue&quot;));
&gt; +    sqlQuery.bindValue(QLatin1String(&quot;:domainvalue&quot;), url.host());
&gt; +    sqlQuery.exec();
&gt; +
&gt; +    sqlQuery.prepare(QLatin1String(&quot;INSERT INTO cookies (cookie, domain) VALUES (:cookievalue, :domainvalue)&quot;));
&gt; +    foreach (const QNetworkCookie &amp;cookie, cookiesForUrl(url)) {

This is going to be run synchronously for each HTTP request, I wonder if this will slow down resource fetching.
It&apos;s difficult to judge without benchmarking anyway.

&gt; Source/WebCore/platform/qt/CookieJarQt.cpp:268
&gt; +            sqlQuery.bindValue(QLatin1String(&quot;:domainvalue&quot;), url.host());

You should use cookie.domain() here to handle correctly domains like &quot;.google.com&quot; when queried though getHostnamesWithCookies and deleteCookiesForHostname. If you do so you should also use it in the delete SQL query above, but I guess that means you would have to itterate over all cookies in the list in case there is more than one different domain used. I&apos;m not sure what is the best approach there.

&gt; Source/WebCore/platform/qt/CookieJarQt.cpp:283
&gt; +    sqlQuery.prepare(QLatin1String(&quot;CREATE TABLE IF NOT EXISTS cookies (id INTEGER PRIMARY KEY AUTOINCREMENT,&quot;
&gt; +                       &quot;cookie BLOB, domain VARCHAR);&quot;));

Might be worth creating an index on &quot;domain&quot;.

&gt; Source/WebCore/platform/qt/CookieJarQt.cpp:291
&gt; +    QDir().mkpath(databasePath + QLatin1String(&quot;.QtWebKit/&quot;));
&gt; +    const QString dataBaseName = databasePath + QLatin1String(&quot;.QtWebKit/cookies.db&quot;);

Since you use QDesktopServices::DataLocation by default, I don&apos;t think that the intermediate directory should be hidden.
I think cookies.db could also be put directly in cookieStorageDirectory instead.

&gt; Source/WebKit2/WebProcess/qt/WebProcessQt.cpp:50
&gt; +    WebCore::WebKit2SharedCookieJar* jar = WebCore::sharedCookieJar();
&gt; +    jar-&gt;setStoragePath(parameters.cookieStorageDirectory);

It should not be created/used if the UI process didn&apos;t set the storage path, or else assert that the storage path isn&apos;t empty.

&gt; Source/WebKit2/WebProcess/qt/WebProcessQt.cpp:66
&gt; +    WebCore::sharedCookieJar()-&gt;destroy();

This should be done after you destroy the QNAM, since it still has a reference to it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462222</commentid>
    <comment_count>14</comment_count>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2011-09-05 12:30:19 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 106333 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=106333&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/Cookie.h:75
&gt; &gt; +#if PLATFORM(QT)
&gt; &gt; +        Cookie(const QNetworkCookie&amp;);
&gt; &gt; +        operator QNetworkCookie() const;
&gt; &gt; +#endif
&gt; 
&gt; Why do you need the Cookie struct? I only see you use QNetworkCookie directly in this patch.

Some rest of a next patch.

&gt; 
&gt; &gt; Source/WebCore/platform/qt/CookieJarQt.cpp:155
&gt; &gt; +    WebKit2SharedCookieJar::shared()-&gt;getHostnamesWithCookies(hostnames);
&gt; 
&gt; Any call to those function will have the side effect of creating the SQLite database under the storage path which by default is empty.
&gt; To make it future proof and prevent unwanted wasted resources it would be nice having it created less magically. Would be cool as a factory as No&apos;am suggested.

How this use case can happen? In order to have the cookie jar created and this functions called you need to create the WebProcess which then will create the shared object first. But agree for the magic

&gt; 
&gt; &gt; Source/WebCore/platform/qt/CookieJarQt.cpp:256
&gt; &gt; +bool WebKit2SharedCookieJar::setCookiesFromUrl(const QList&lt;QNetworkCookie&gt;&amp; cookieList, const QUrl&amp; url)
&gt; &gt; +{
&gt; 
&gt; Maybe it&apos;s not worth worrying about it now, but if you have more than one process accessing the same SQLite db at the same time you might run into issues there (same app opened multiple times, or more than one WebProcess). Overall it would be good and free to wrap all updates in this function in a transaction, and it would solve this problem, so it might be worth trying it out.

SQLite3 handle the concurrency very well. We may have some tweaks if we experience issues but I&apos;d say for now it should be fine.

http://www.sqlite.org/lockingv3.html

&gt; 
&gt; &gt; Source/WebCore/platform/qt/CookieJarQt.cpp:265
&gt; &gt; +    sqlQuery.prepare(QLatin1String(&quot;DELETE FROM cookies WHERE domain=:domainvalue&quot;));
&gt; &gt; +    sqlQuery.bindValue(QLatin1String(&quot;:domainvalue&quot;), url.host());
&gt; &gt; +    sqlQuery.exec();
&gt; &gt; +
&gt; &gt; +    sqlQuery.prepare(QLatin1String(&quot;INSERT INTO cookies (cookie, domain) VALUES (:cookievalue, :domainvalue)&quot;));
&gt; &gt; +    foreach (const QNetworkCookie &amp;cookie, cookiesForUrl(url)) {
&gt; 
&gt; This is going to be run synchronously for each HTTP request, I wonder if this will slow down resource fetching.
&gt; It&apos;s difficult to judge without benchmarking anyway.
&gt; 
&gt; &gt; Source/WebCore/platform/qt/CookieJarQt.cpp:268
&gt; &gt; +            sqlQuery.bindValue(QLatin1String(&quot;:domainvalue&quot;), url.host());
&gt; 
&gt; You should use cookie.domain() here to handle correctly domains like &quot;.google.com&quot; when queried though getHostnamesWithCookies and deleteCookiesForHostname. If you do so you should also use it in the delete SQL query above, but I guess that means you would have to itterate over all cookies in the list in case there is more than one different domain used. I&apos;m not sure what is the best approach there.

The implementation of setCookiesFromUrl uses the host as comparison. Not sure neither. 

&gt; 
&gt; &gt; Source/WebCore/platform/qt/CookieJarQt.cpp:283
&gt; &gt; +    sqlQuery.prepare(QLatin1String(&quot;CREATE TABLE IF NOT EXISTS cookies (id INTEGER PRIMARY KEY AUTOINCREMENT,&quot;
&gt; &gt; +                       &quot;cookie BLOB, domain VARCHAR);&quot;));
&gt; 
&gt; Might be worth creating an index on &quot;domain&quot;.
&gt; 
&gt; &gt; Source/WebCore/platform/qt/CookieJarQt.cpp:291
&gt; &gt; +    QDir().mkpath(databasePath + QLatin1String(&quot;.QtWebKit/&quot;));
&gt; &gt; +    const QString dataBaseName = databasePath + QLatin1String(&quot;.QtWebKit/cookies.db&quot;);
&gt; 
&gt; Since you use QDesktopServices::DataLocation by default, I don&apos;t think that the intermediate directory should be hidden.
&gt; I think cookies.db could also be put directly in cookieStorageDirectory instead.
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/qt/WebProcessQt.cpp:50
&gt; &gt; +    WebCore::WebKit2SharedCookieJar* jar = WebCore::sharedCookieJar();
&gt; &gt; +    jar-&gt;setStoragePath(parameters.cookieStorageDirectory);
&gt; 
&gt; It should not be created/used if the UI process didn&apos;t set the storage path, or else assert that the storage path isn&apos;t empty.

Will modify

&gt; 
&gt; &gt; Source/WebKit2/WebProcess/qt/WebProcessQt.cpp:66
&gt; &gt; +    WebCore::sharedCookieJar()-&gt;destroy();
&gt; 
&gt; This should be done after you destroy the QNAM, since it still has a reference to it.

Agree.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462268</commentid>
    <comment_count>15</comment_count>
      <attachid>106361</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2011-09-05 15:05:58 -0700</bug_when>
    <thetext>Created attachment 106361
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462270</commentid>
    <comment_count>16</comment_count>
      <attachid>106361</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2011-09-05 15:14:04 -0700</bug_when>
    <thetext>Comment on attachment 106361
Patch

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

&gt; Source/WebCore/WebCore.pri:9
&gt; +QT *= network sql

QtSql is built by default on Qt, and there is no way to deactivate the module so I think for now it&apos;s fine depending on it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462272</commentid>
    <comment_count>17</comment_count>
      <attachid>106363</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2011-09-05 15:49:12 -0700</bug_when>
    <thetext>Created attachment 106363
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462275</commentid>
    <comment_count>18</comment_count>
      <attachid>106364</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2011-09-05 16:01:02 -0700</bug_when>
    <thetext>Created attachment 106364
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462469</commentid>
    <comment_count>19</comment_count>
      <attachid>106364</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2011-09-06 05:03:37 -0700</bug_when>
    <thetext>Comment on attachment 106364
Patch

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

&gt; Source/WebCore/platform/qt/CookieJarQt.cpp:255
&gt; +        sqlQuery.bindValue(QLatin1String(&quot;:domainvalue&quot;), url.host());

Though about it and you need to use cookie.domain() here or else:
- deleteCookiesForHostname won&apos;t work properly when asked to delete cookies for &quot;.google.com&quot;, which will be in the list returned by getHostnamesWithCookies if www.google.com created such a cookie (since getHostnamesWithCookies uses cookie.domain()).
- If www.google.com create a cookie for the domain &quot;.google.com&quot;, it won&apos;t be overwritten in the DB if mail.google.com ask to set the same cookie name later. But it will be overwritten in QNetworkCookieJar&apos;s storage.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462586</commentid>
    <comment_count>20</comment_count>
      <attachid>106427</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2011-09-06 09:25:11 -0700</bug_when>
    <thetext>Created attachment 106427
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462591</commentid>
    <comment_count>21</comment_count>
      <attachid>106427</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2011-09-06 09:28:10 -0700</bug_when>
    <thetext>Comment on attachment 106427
Patch

I think it looks fine!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462630</commentid>
    <comment_count>22</comment_count>
      <attachid>106427</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-06 10:32:37 -0700</bug_when>
    <thetext>Comment on attachment 106427
Patch

Attachment 106427 did not pass cr-mac-ews (chromium):
Output: http://queues.webkit.org/results/9595652</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462638</commentid>
    <comment_count>23</comment_count>
      <attachid>106427</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2011-09-06 10:40:44 -0700</bug_when>
    <thetext>Comment on attachment 106427
Patch

cr-mac is sick, the problem has nothing to do with this path, clearing cq-</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463497</commentid>
    <comment_count>24</comment_count>
    <who name="Jesus Sanchez-Palencia">jesus</who>
    <bug_when>2011-09-07 11:33:27 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; Created an attachment (id=106427) [details]

It still bugs me to see: &quot;+QT *= network sql&quot;
but I guess we have no other option... LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463551</commentid>
    <comment_count>25</comment_count>
    <who name="Siddharth Mathur">s.mathur</who>
    <bug_when>2011-09-07 12:03:24 -0700</bug_when>
    <thetext>Thanks for doing this!

- Do we need to call m_database.close() somewhere? 

- setCookiesFromUrl() : is it possible to combine many calls to sqlQuery.exec() with one longer query that adds multiple records? It will very likely be better for performance due to lower SQL engine as well as underlying file-system costs. 

- Also, since cookie handling is a highly exercised area of a browser, it would be nice to write to performance test for SharedCookieJarQt doing insert/read/replace. Here is a sample for QNetworkDiskCache: https://qt.gitorious.org/qt/qt/blobs/4.8/tests/benchmarks/network/access/qnetworkdiskcache/tst_qnetworkdiskcache.cpp

I would probably have saved the cookies to file(s) directly instead of depending on SQL as this is only a 2 column schema, but that&apos;s just IMHO. 

Thanks again for taking this up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463601</commentid>
    <comment_count>26</comment_count>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2011-09-07 13:12:10 -0700</bug_when>
    <thetext>(In reply to comment #25)
&gt; Thanks for doing this!
&gt; 
&gt; - Do we need to call m_database.close() somewhere? 

Yep. Good point.

&gt; 
&gt; - setCookiesFromUrl() : is it possible to combine many calls to sqlQuery.exec() with one longer query that adds multiple records? It will very likely be better for performance due to lower SQL engine as well as underlying file-system costs. 
&gt; 

Well I could improve it later. Let&apos;s make this land and I can do a separate patch which create a session, batch the queries and commit them. I&apos;m not sure yet if that&apos;s doable with QtSql and it&apos;s worth it.

&gt; - Also, since cookie handling is a highly exercised area of a browser, it would be nice to write to performance test for SharedCookieJarQt doing insert/read/replace. Here is a sample for QNetworkDiskCache: https://qt.gitorious.org/qt/qt/blobs/4.8/tests/benchmarks/network/access/qnetworkdiskcache/tst_qnetworkdiskcache.cpp

I may add that in a later commit.

&gt; 
&gt; I would probably have saved the cookies to file(s) directly instead of depending on SQL as this is only a 2 column schema, but that&apos;s just IMHO.

That will not work as it will be hard to handle concurrency access (which sqlite do fine) and also the fact that the WebProcess can be kill at any time so I&apos;d like to let an underlying framework handles it.

&gt; 
&gt; Thanks again for taking this up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463606</commentid>
    <comment_count>27</comment_count>
      <attachid>106624</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2011-09-07 13:21:02 -0700</bug_when>
    <thetext>Created attachment 106624
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463678</commentid>
    <comment_count>28</comment_count>
      <attachid>106648</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2011-09-07 14:56:15 -0700</bug_when>
    <thetext>Created attachment 106648
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463983</commentid>
    <comment_count>29</comment_count>
      <attachid>106648</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2011-09-08 03:58:25 -0700</bug_when>
    <thetext>Comment on attachment 106648
Patch

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

&gt; Source/WebCore/platform/qt/CookieJarQt.cpp:239
&gt; +    m_database.close();

QDatabase&apos;s destructor takes care of that, but I guess it doesn&apos;t hurt.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>469542</commentid>
    <comment_count>30</comment_count>
    <who name="Chang Shu">cshu</who>
    <bug_when>2011-09-19 11:09:51 -0700</bug_when>
    <thetext>It seems to me the patch is missing tests. Would it help to pass some existing layout tests?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>469977</commentid>
    <comment_count>31</comment_count>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2011-09-20 04:11:12 -0700</bug_when>
    <thetext>(In reply to comment #30)
&gt; It seems to me the patch is missing tests. Would it help to pass some existing layout tests?

The existing layout tests covers the new code. There is one test case that I can&apos;t find a way to test is the actual persistence, e.g. log in a website, close the browser and open it again and you should be logged. I don&apos;t see how we could do that with the existing layout-tests as it will require to run a http layout tests, make sure the cookie store and re-run the layout tests (but make sure the WebProcess is shutdown). I don&apos;t see how this could fit with the way the layout tests are run. We can&apos;t also easily write a API tests as it would require an http server to run.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470034</commentid>
    <comment_count>32</comment_count>
    <who name="Chang Shu">cshu</who>
    <bug_when>2011-09-20 06:50:26 -0700</bug_when>
    <thetext>(In reply to comment #31)
&gt; (In reply to comment #30)
&gt; &gt; It seems to me the patch is missing tests. Would it help to pass some existing layout tests?
&gt; 
&gt; The existing layout tests covers the new code. There is one test case that I can&apos;t find a way to test is the actual persistence, e.g. log in a website, close the browser and open it again and you should be logged. I don&apos;t see how we could do that with the existing layout-tests as it will require to run a http layout tests, make sure the cookie store and re-run the layout tests (but make sure the WebProcess is shutdown). I don&apos;t see how this could fit with the way the layout tests are run. We can&apos;t also easily write a API tests as it would require an http server to run.

Are you saying the existing layout tests cover most of the code? If so, we should see some updates on the Skipped file. I also suggest you put the above comments in the Changelog so people know some test cases have to be tested manually.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470048</commentid>
    <comment_count>33</comment_count>
      <attachid>107998</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2011-09-20 07:16:33 -0700</bug_when>
    <thetext>Created attachment 107998
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470051</commentid>
    <comment_count>34</comment_count>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2011-09-20 07:21:16 -0700</bug_when>
    <thetext>(In reply to comment #32)
&gt; (In reply to comment #31)
&gt; &gt; (In reply to comment #30)
&gt; &gt; &gt; It seems to me the patch is missing tests. Would it help to pass some existing layout tests?
&gt; &gt; 
&gt; &gt; The existing layout tests covers the new code. There is one test case that I can&apos;t find a way to test is the actual persistence, e.g. log in a website, close the browser and open it again and you should be logged. I don&apos;t see how we could do that with the existing layout-tests as it will require to run a http layout tests, make sure the cookie store and re-run the layout tests (but make sure the WebProcess is shutdown). I don&apos;t see how this could fit with the way the layout tests are run. We can&apos;t also easily write a API tests as it would require an http server to run.
&gt; 
&gt; Are you saying the existing layout tests cover most of the code? If so, we should see some updates on the Skipped file. I also suggest you put the above comments in the Changelog so people know some test cases have to be tested manually.

The tests were already enabled as the previous implementation was storing the cookies in memory. This implementation covers it and it works as I ran them and couldn&apos;t find any regressions. The only thing that is not tested and I can&apos;t find a way to make it automatic is what I described in the new patch attached : log in to a website that store persistent cookie, close the entire app, open it again and go to the website and make sure you are logged. So this patch will not make things worst, will not remove features, will not enable new tests (as they were working before) but add the persistent storage that we can&apos;t test easily. I hope this clarified your concern with the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470082</commentid>
    <comment_count>35</comment_count>
      <attachid>107998</attachid>
    <who name="Chang Shu">cshu</who>
    <bug_when>2011-09-20 08:37:40 -0700</bug_when>
    <thetext>Comment on attachment 107998
Patch

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

just have some minor questions. address them if they make sense, otherwise, just cq+. thx

&gt; Source/WebCore/platform/qt/CookieJarQt.cpp:204
&gt; +    QList&lt;QNetworkCookie&gt;::Iterator end = cookies.end();

can just move cookies.end() in while().

&gt; Source/WebCore/platform/qt/CookieJarQt.cpp:244
&gt; +    bool status = QNetworkCookieJar::setCookiesFromUrl(cookieList, url);

do we have to do all the stuff below when status==false?

&gt; Source/WebCore/platform/qt/CookieJarQt.cpp:263
&gt; +    if (!m_database.open()) {

not sure if we have to check the state of m_database every time we use it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470234</commentid>
    <comment_count>36</comment_count>
      <attachid>107998</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2011-09-20 11:52:34 -0700</bug_when>
    <thetext>Comment on attachment 107998
Patch

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

&gt;&gt; Source/WebCore/platform/qt/CookieJarQt.cpp:204
&gt;&gt; +    QList&lt;QNetworkCookie&gt;::Iterator end = cookies.end();
&gt; 
&gt; can just move cookies.end() in while().

It&apos;s to avoid re-evaluating the end() for the iterator at each loop. Optimization.

&gt;&gt; Source/WebCore/platform/qt/CookieJarQt.cpp:244

&gt; 
&gt; do we have to do all the stuff below when status==false?

Good point I will do an early return.

&gt;&gt; Source/WebCore/platform/qt/CookieJarQt.cpp:263
&gt;&gt; +    if (!m_database.open()) {
&gt; 
&gt; not sure if we have to check the state of m_database every time we use it.

This method is only called on the constructor so yes when creating the jar is nice to check that we could open the cookie database.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470240</commentid>
    <comment_count>37</comment_count>
    <who name="Chang Shu">cshu</who>
    <bug_when>2011-09-20 12:06:43 -0700</bug_when>
    <thetext>&gt; &gt;&gt; Source/WebCore/platform/qt/CookieJarQt.cpp:263
&gt; &gt;&gt; +    if (!m_database.open()) {
&gt; &gt; 
&gt; &gt; not sure if we have to check the state of m_database every time we use it.
&gt; 
&gt; This method is only called on the constructor so yes when creating the jar is nice to check that we could open the cookie database.

I mean, if database failed to open, all the subsequent db operations may cause problem since the patch does not check the validation of database when using it. But it could be overcautious. One way to test it is you don&apos;t call m_database.open() and see if you will get any crash. If operations failed silently, it&apos;s ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470248</commentid>
    <comment_count>38</comment_count>
      <attachid>108040</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2011-09-20 12:13:35 -0700</bug_when>
    <thetext>Created attachment 108040
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470310</commentid>
    <comment_count>39</comment_count>
      <attachid>108040</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-20 14:00:20 -0700</bug_when>
    <thetext>Comment on attachment 108040
Patch for landing

Clearing flags on attachment: 108040

Committed r95568: &lt;http://trac.webkit.org/changeset/95568&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470311</commentid>
    <comment_count>40</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-20 14:00:28 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102244</attachid>
            <date>2011-07-28 05:20:28 -0700</date>
            <delta_ts>2011-09-05 06:38:29 -0700</delta_ts>
            <desc>work in progress</desc>
            <filename>0001-WebKit2-Sending-the-full-cookie-list-from-web-proces.patch</filename>
            <type>text/plain</type>
            <size>43255</size>
            <attacher name="Luiz Agostini">luiz</attacher>
            
              <data encoding="base64">RnJvbSAxYTkzMGE1MzRjYmJmODliNDlkNzliYmUxNGFjZDhiODY4ZGFjMjU2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWl6IEFnb3N0aW5pIDxsdWl6LmFnb3N0aW5pQG9wZW5ib3Nz
YS5vcmc+CkRhdGU6IFRodSwgMjggSnVsIDIwMTEgMDk6MTA6MjEgLTAzMDAKU3ViamVjdDogW1BB
VENIXSBXZWJLaXQyIC0gU2VuZGluZyB0aGUgZnVsbCBjb29raWUgbGlzdCBmcm9tIHdlYiBwcm9j
ZXNzIHRvIFVJIHByb2Nlc3MgYW5kIHZpY2UgdmVyc2EKIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD02NTMwOQoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpTb3Vy
Y2UvV2ViQ29yZToKCiogV2ViQ29yZS5wcm86CiogcGxhdGZvcm0vQ29va2llLmg6CihXZWJDb3Jl
OjpDb29raWU6OkNvb2tpZSk6CiogcGxhdGZvcm0vQ29va2llSmFyLmg6CiogcGxhdGZvcm0vZWZs
L0Nvb2tpZUphckVmbC5jcHA6CihXZWJDb3JlOjpnZXRBbGxDb29raWVzKToKKFdlYkNvcmU6OnJl
c2V0QWxsQ29va2llcyk6CiogcGxhdGZvcm0vaGFpa3UvQ29va2llSmFySGFpa3UuY3BwOgooV2Vi
Q29yZTo6Z2V0QWxsQ29va2llcyk6CihXZWJDb3JlOjpyZXNldEFsbENvb2tpZXMpOgoqIHBsYXRm
b3JtL21hYy9Db29raWVKYXIubW06CihXZWJDb3JlOjpnZXRBbGxDb29raWVzKToKKFdlYkNvcmU6
OnJlc2V0QWxsQ29va2llcyk6CiogcGxhdGZvcm0vbmV0d29yay9hbmRyb2lkL0Nvb2tpZUphckFu
ZHJvaWQuY3BwOgooV2ViQ29yZTo6Z2V0QWxsQ29va2llcyk6CihXZWJDb3JlOjpyZXNldEFsbENv
b2tpZXMpOgoqIHBsYXRmb3JtL25ldHdvcmsvY2YvQ29va2llSmFyQ0ZOZXQuY3BwOgooV2ViQ29y
ZTo6Z2V0QWxsQ29va2llcyk6CihXZWJDb3JlOjpyZXNldEFsbENvb2tpZXMpOgoqIHBsYXRmb3Jt
L25ldHdvcmsvY2hyb21pdW0vQ29va2llSmFyQ2hyb21pdW0uY3BwOgooV2ViQ29yZTo6Z2V0QWxs
Q29va2llcyk6CihXZWJDb3JlOjpyZXNldEFsbENvb2tpZXMpOgoqIHBsYXRmb3JtL25ldHdvcmsv
Y3VybC9Db29raWVKYXJDdXJsLmNwcDoKKFdlYkNvcmU6OmdldEFsbENvb2tpZXMpOgooV2ViQ29y
ZTo6cmVzZXRBbGxDb29raWVzKToKKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ29va2llSmFyU291
cC5jcHA6CihXZWJDb3JlOjpnZXRBbGxDb29raWVzKToKKFdlYkNvcmU6OnJlc2V0QWxsQ29va2ll
cyk6CiogcGxhdGZvcm0vbmV0d29yay93aW4vQ29va2llSmFyV2luLmNwcDoKKFdlYkNvcmU6Omdl
dEFsbENvb2tpZXMpOgooV2ViQ29yZTo6cmVzZXRBbGxDb29raWVzKToKKiBwbGF0Zm9ybS9xdC9D
b29raWVKYXJRdC5jcHA6CihXZWJDb3JlOjpXZWJLaXQyU2hhcmVkQ29va2llSmFyOjpzaGFyZWQp
OgooV2ViQ29yZTo6V2ViS2l0MlNoYXJlZENvb2tpZUphcjo6Z2V0SG9zdG5hbWVzV2l0aENvb2tp
ZXMpOgooV2ViQ29yZTo6V2ViS2l0MlNoYXJlZENvb2tpZUphcjo6ZGVsZXRlQ29va2llc0Zvckhv
c3RuYW1lKToKKFdlYkNvcmU6OldlYktpdDJTaGFyZWRDb29raWVKYXI6OmdldEFsbENvb2tpZXMp
OgooV2ViQ29yZTo6V2ViS2l0MlNoYXJlZENvb2tpZUphcjo6cmVzZXRBbGxDb29raWVzKToKKFdl
YkNvcmU6OldlYktpdDJTaGFyZWRDb29raWVKYXI6OmRlbGV0ZUFsbENvb2tpZXMpOgooV2ViQ29y
ZTo6c2hhcmVkQ29va2llSmFyKToKKFdlYkNvcmU6OmdldEhvc3RuYW1lc1dpdGhDb29raWVzKToK
KFdlYkNvcmU6OmRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZSk6CihXZWJDb3JlOjpkZWxldGVBbGxD
b29raWVzKToKKFdlYkNvcmU6OkNvb2tpZTo6Q29va2llKToKKFdlYkNvcmU6OkNvb2tpZTo6b3Bl
cmF0b3IgUU5ldHdvcmtDb29raWUpOgooV2ViQ29yZTo6Z2V0QWxsQ29va2llcyk6CihXZWJDb3Jl
OjpyZXNldEFsbENvb2tpZXMpOgoKU291cmNlL1dlYktpdDI6CgoqIFNoYXJlZC9XZWJDb3JlQXJn
dW1lbnRDb2RlcnMuY3BwOgooQ29yZUlQQzo6OjplbmNvZGUpOgooQ29yZUlQQzo6OjpkZWNvZGUp
OgoqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoKKiBVSVByb2Nlc3MvQVBJL3F0L1dL
Vmlldy5oOgoqIFVJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuY3BwOgooV2ViS2l0OjpX
ZWJDb29raWVNYW5hZ2VyUHJveHk6OmdldEFsbENvb2tpZXMpOgooV2ViS2l0OjpXZWJDb29raWVN
YW5hZ2VyUHJveHk6OmRpZEdldEFsbENvb2tpZXMpOgooV2ViS2l0OjpXZWJDb29raWVNYW5hZ2Vy
UHJveHk6OnJlc2V0QWxsQ29va2llcyk6CiogVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94
eS5oOgooV2ViS2l0OjpHZXRBbGxDb29raWVzQ2FsbGJhY2s6OmNyZWF0ZSk6CihXZWJLaXQ6Okdl
dEFsbENvb2tpZXNDYWxsYmFjazo6cGVyZm9ybUNhbGxiYWNrKToKKFdlYktpdDo6R2V0QWxsQ29v
a2llc0NhbGxiYWNrOjppbnZhbGlkYXRlKToKKFdlYktpdDo6R2V0QWxsQ29va2llc0NhbGxiYWNr
OjpHZXRBbGxDb29raWVzQ2FsbGJhY2spOgoqIFVJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJv
eHkubWVzc2FnZXMuaW46CiogVUlQcm9jZXNzL3F0L3F3a2NvbnRleHQuY3BwOgooY29va2llQ2Fs
bGJhY2spOgooUVdLQ29udGV4dDo6Z2V0Q29va2llTGlzdCk6CihRV0tDb250ZXh0OjpyZXNldENv
b2tpZXMpOgoqIFVJUHJvY2Vzcy9xdC9xd2tjb250ZXh0Lmg6CiogVUlQcm9jZXNzL3F0L3F3a2Nv
bnRleHRfcC5oOgoqIFdlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmNwcDoKKFdl
YktpdDo6V2ViQ29va2llTWFuYWdlcjo6Z2V0QWxsQ29va2llcyk6CihXZWJLaXQ6OldlYkNvb2tp
ZU1hbmFnZXI6OnJlc2V0QWxsQ29va2llcyk6CiogV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tp
ZU1hbmFnZXIuaDoKKiBXZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5tZXNzYWdl
cy5pbjoKKiBXZWJQcm9jZXNzL3F0L1dlYlByb2Nlc3NRdC5jcHA6CihXZWJLaXQ6OldlYlByb2Nl
c3M6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MpOgoKVG9vbHM6CgoqIE1pbmlCcm93c2Vy
L3F0L0Jyb3dzZXJXaW5kb3cuY3BwOgooQnJvd3NlcldpbmRvdzo6QnJvd3NlcldpbmRvdyk6Ciog
TWluaUJyb3dzZXIvcXQvQ29va2llTWFuYWdlci5jcHA6IEFkZGVkLgooQ29va2llTWFuYWdlcjo6
c2hhcmVkKToKKENvb2tpZU1hbmFnZXI6OmR1bXBDb29raWVMaXN0KToKKENvb2tpZU1hbmFnZXI6
OnNhdmVDb29raWVMaXN0KToKKENvb2tpZU1hbmFnZXI6OnNhdmVBbmRRdWl0KToKKENvb2tpZU1h
bmFnZXI6OmdldENvb2tpZUxpc3QpOgooQ29va2llTWFuYWdlcjo6ZGlkUmVjZWl2ZUNvb2tpZUxp
c3QpOgooQ29va2llTWFuYWdlcjo6d3JpdGVDb29raWVzKToKKENvb2tpZU1hbmFnZXI6OnJlYWRD
b29raWVzKToKKENvb2tpZU1hbmFnZXI6OkNvb2tpZU1hbmFnZXIpOgooQ29va2llTWFuYWdlcjo6
dGltZXJFdmVudCk6CiogTWluaUJyb3dzZXIvcXQvQ29va2llTWFuYWdlci5oOiBBZGRlZC4KKiBN
aW5pQnJvd3Nlci9xdC9NaW5pQnJvd3Nlci5wcm86CiogTWluaUJyb3dzZXIvcXQvTWluaUJyb3dz
ZXJBcHBsaWNhdGlvbi5jcHA6CihNaW5pQnJvd3NlckFwcGxpY2F0aW9uOjpNaW5pQnJvd3NlckFw
cGxpY2F0aW9uKToKLS0tCiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8ICAgNTQgKysrKysrKysrCiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybyAg
ICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDEgKwogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Q29va2llLmggICAgICAgICAgICAgICAgICAgfCAgIDE5ICsrKwogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vQ29va2llSmFyLmggICAgICAgICAgICAgICAgfCAgIDExICsrCiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9lZmwvQ29va2llSmFyRWZsLmNwcCAgICAgICB8ICAgMTAgKysKIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2hhaWt1L0Nvb2tpZUphckhhaWt1LmNwcCAgIHwgICAxMCArKwogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0Nvb2tpZUphci5tbSAgICAgICAgICAgfCAgIDEwICsr
CiAuLi4vcGxhdGZvcm0vbmV0d29yay9hbmRyb2lkL0Nvb2tpZUphckFuZHJvaWQuY3BwICB8ICAg
MTAgKysKIC4uLi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ29va2llSmFyQ0ZOZXQuY3Bw
IHwgICAxMCArKwogLi4uL25ldHdvcmsvY2hyb21pdW0vQ29va2llSmFyQ2hyb21pdW0uY3BwICAg
ICAgICAgfCAgIDEwICsrCiAuLi4vcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckN1cmwu
Y3BwICAgICAgICB8ICAgMTAgKysKIC4uLi9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ29va2llSmFy
U291cC5jcHAgICAgICAgIHwgICAxMCArKwogLi4uL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay93
aW4vQ29va2llSmFyV2luLmNwcCAgfCAgIDEwICsrCiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9x
dC9Db29raWVKYXJRdC5jcHAgICAgICAgICB8ICAgOTkgKysrKysrKysrKysrKysrKy0KIFNvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAzNiArKysr
KysKIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwICAgIHwg
ICAzNSArKysrKysKIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
aCAgICAgIHwgICAgNiArCiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L1dLVmlldy5o
ICAgICAgICAgICB8ICAgIDEgKwogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1h
bmFnZXJQcm94eS5jcHAgfCAgIDIzICsrKysKIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJD
b29raWVNYW5hZ2VyUHJveHkuaCAgIHwgICAyMyArKysrCiAuLi4vVUlQcm9jZXNzL1dlYkNvb2tp
ZU1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbiAgICB8ICAgIDEgKwogU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL3F0L3F3a2NvbnRleHQuY3BwICAgICAgICAgfCAgIDMwICsrKysrCiBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvcXQvcXdrY29udGV4dC5oICAgICAgICAgICB8ICAgIDUgKwogU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL3F0L3F3a2NvbnRleHRfcC5oICAgICAgICAgfCAgICAyICsKIC4u
Li9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5jcHAgICAgICAgIHwgICAyMCAr
KysrCiAuLi4vV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5oICB8
ICAgIDcgKwogLi4uL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5tZXNzYWdlcy5pbiAgICAgICAg
ICAgfCAgICAzICsKIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvcXQvV2ViUHJvY2Vzc1F0LmNw
cCAgICAgIHwgICAgNiArCiBUb29scy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8ICAgMjUgKysrKwogVG9vbHMvTWluaUJyb3dzZXIvcXQvQnJvd3NlcldpbmRv
dy5jcHAgICAgICAgICAgICAgfCAgICAzICsKIFRvb2xzL01pbmlCcm93c2VyL3F0L0Nvb2tpZU1h
bmFnZXIuY3BwICAgICAgICAgICAgIHwgIDExOSArKysrKysrKysrKysrKysrKysrKwogVG9vbHMv
TWluaUJyb3dzZXIvcXQvQ29va2llTWFuYWdlci5oICAgICAgICAgICAgICAgfCAgIDQyICsrKysr
KysKIFRvb2xzL01pbmlCcm93c2VyL3F0L01pbmlCcm93c2VyLnBybyAgICAgICAgICAgICAgIHwg
ICAgMiArCiBUb29scy9NaW5pQnJvd3Nlci9xdC9NaW5pQnJvd3NlckFwcGxpY2F0aW9uLmNwcCAg
ICB8ICAgIDUgKwogMzQgZmlsZXMgY2hhbmdlZCwgNjY1IGluc2VydGlvbnMoKyksIDMgZGVsZXRp
b25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgVG9vbHMvTWluaUJyb3dzZXIvcXQvQ29va2llTWFu
YWdlci5jcHAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBUb29scy9NaW5pQnJvd3Nlci9xdC9Db29raWVN
YW5hZ2VyLmgKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTA3Y2ViNi4uZTlhNGRmZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDU3IEBACisyMDExLTA3LTI4ICBMdWl6IEFnb3N0aW5pICA8bHVpei5hZ29zdGluaUBv
cGVuYm9zc2Eub3JnPgorCisgICAgICAgIFdlYktpdDIgLSBTZW5kaW5nIHRoZSBmdWxsIGNvb2tp
ZSBsaXN0IGZyb20gd2ViIHByb2Nlc3MgdG8gVUkgcHJvY2VzcyBhbmQgdmljZSB2ZXJzYQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjUzMDkKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmUucHJv
OgorICAgICAgICAqIHBsYXRmb3JtL0Nvb2tpZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q29va2ll
OjpDb29raWUpOgorICAgICAgICAqIHBsYXRmb3JtL0Nvb2tpZUphci5oOgorICAgICAgICAqIHBs
YXRmb3JtL2VmbC9Db29raWVKYXJFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0QWxsQ29v
a2llcyk6CisgICAgICAgIChXZWJDb3JlOjpyZXNldEFsbENvb2tpZXMpOgorICAgICAgICAqIHBs
YXRmb3JtL2hhaWt1L0Nvb2tpZUphckhhaWt1LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldEFs
bENvb2tpZXMpOgorICAgICAgICAoV2ViQ29yZTo6cmVzZXRBbGxDb29raWVzKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9tYWMvQ29va2llSmFyLm1tOgorICAgICAgICAoV2ViQ29yZTo6Z2V0QWxsQ29v
a2llcyk6CisgICAgICAgIChXZWJDb3JlOjpyZXNldEFsbENvb2tpZXMpOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvYW5kcm9pZC9Db29raWVKYXJBbmRyb2lkLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmdldEFsbENvb2tpZXMpOgorICAgICAgICAoV2ViQ29yZTo6cmVzZXRBbGxDb29raWVz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZUphckNGTmV0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmdldEFsbENvb2tpZXMpOgorICAgICAgICAoV2ViQ29yZTo6cmVzZXRB
bGxDb29raWVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2Nocm9taXVtL0Nvb2tpZUph
ckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldEFsbENvb2tpZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6cmVzZXRBbGxDb29raWVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ29va2llSmFyQ3VybC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRBbGxDb29raWVz
KToKKyAgICAgICAgKFdlYkNvcmU6OnJlc2V0QWxsQ29va2llcyk6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9zb3VwL0Nvb2tpZUphclNvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0
QWxsQ29va2llcyk6CisgICAgICAgIChXZWJDb3JlOjpyZXNldEFsbENvb2tpZXMpOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvd2luL0Nvb2tpZUphcldpbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpnZXRBbGxDb29raWVzKToKKyAgICAgICAgKFdlYkNvcmU6OnJlc2V0QWxsQ29va2llcyk6
CisgICAgICAgICogcGxhdGZvcm0vcXQvQ29va2llSmFyUXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViS2l0MlNoYXJlZENvb2tpZUphcjo6c2hhcmVkKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YktpdDJTaGFyZWRDb29raWVKYXI6OmdldEhvc3RuYW1lc1dpdGhDb29raWVzKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYktpdDJTaGFyZWRDb29raWVKYXI6OmRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFt
ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXQyU2hhcmVkQ29va2llSmFyOjpnZXRBbGxDb29r
aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdDJTaGFyZWRDb29raWVKYXI6OnJlc2V0QWxs
Q29va2llcyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXQyU2hhcmVkQ29va2llSmFyOjpkZWxl
dGVBbGxDb29raWVzKToKKyAgICAgICAgKFdlYkNvcmU6OnNoYXJlZENvb2tpZUphcik6CisgICAg
ICAgIChXZWJDb3JlOjpnZXRIb3N0bmFtZXNXaXRoQ29va2llcyk6CisgICAgICAgIChXZWJDb3Jl
OjpkZWxldGVDb29raWVzRm9ySG9zdG5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6ZGVsZXRlQWxs
Q29va2llcyk6CisgICAgICAgIChXZWJDb3JlOjpDb29raWU6OkNvb2tpZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDb29raWU6Om9wZXJhdG9yIFFOZXR3b3JrQ29va2llKToKKyAgICAgICAgKFdlYkNv
cmU6OmdldEFsbENvb2tpZXMpOgorICAgICAgICAoV2ViQ29yZTo6cmVzZXRBbGxDb29raWVzKToK
KwogMjAxMS0wNy0yOCAgUm9iIEJ1aXMgIDxyYnVpc0ByaW0uY29tPgogCiAgICAgICAgIFJFR1JF
U1NJT04gKHI5MTEyNSk6IEdvb2dsZSBEcmF3aW5ncyBpcyBicm9rZW4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5k
ZXggMjUzOGIxYS4uNmRmOWE3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5w
cm8KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTE5MzAsNiArMTkzMCw3IEBA
IEhFQURFUlMgKz0gXAogICAgIHBsYXRmb3JtL0FzeW5jRmlsZVN0cmVhbS5oIFwKICAgICBwbGF0
Zm9ybS9Db250ZW50VHlwZS5oIFwKICAgICBwbGF0Zm9ybS9Db250ZXh0TWVudS5oIFwKKyAgICBw
bGF0Zm9ybS9Db29raWUuaCBcCiAgICAgcGxhdGZvcm0vQ3Jvc3NUaHJlYWRDb3BpZXIuaCBcCiAg
ICAgcGxhdGZvcm0vRGF0ZUNvbXBvbmVudHMuaCBcCiAgICAgcGxhdGZvcm0vRGVmYXVsdExvY2Fs
aXphdGlvblN0cmF0ZWd5LmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Q29va2llLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db29raWUuaAppbmRleCA0ZWVhN2Qy
Li4xMTE5NzEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db29raWUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db29raWUuaApAQCAtMjksMTIgKzI5LDI2IEBA
CiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdI
YXNoLmg+CiAKKyNpZiBQTEFURk9STShRVCkKK1FUX0JFR0lOX05BTUVTUEFDRQorY2xhc3MgUU5l
dHdvcmtDb29raWU7CitRVF9FTkRfTkFNRVNQQUNFCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiAgICAgLy8gVGhpcyBzdHJ1Y3QgaXMgY3VycmVudGx5IG9ubHkgdXNlZCB0byBwcm92
aWRlIG1vcmUgY29va2llcyBpbmZvcm1hdGlvbgogICAgIC8vIHRvIHRoZSBXZWIgSW5zcGVjdG9y
LgogCiAgICAgc3RydWN0IENvb2tpZSB7CisgICAgICAgIENvb2tpZSgpCisgICAgICAgICAgICA6
IGV4cGlyZXMoMCkKKyAgICAgICAgICAgICwgaHR0cE9ubHkoZmFsc2UpCisgICAgICAgICAgICAs
IHNlY3VyZShmYWxzZSkKKyAgICAgICAgICAgICwgc2Vzc2lvbihmYWxzZSkKKyAgICAgICAgewor
ICAgICAgICB9CisKICAgICAgICAgQ29va2llKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3Ry
aW5nJiB2YWx1ZSwgY29uc3QgU3RyaW5nJiBkb21haW4sCiAgICAgICAgICAgICAgICAgY29uc3Qg
U3RyaW5nJiBwYXRoLCBkb3VibGUgZXhwaXJlcywgYm9vbCBodHRwT25seSwgYm9vbCBzZWN1cmUs
CiAgICAgICAgICAgICAgICAgYm9vbCBzZXNzaW9uKQpAQCAtNTcsNiArNzEsMTEgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICBib29sIGh0dHBPbmx5OwogICAgICAgICBib29sIHNlY3Vy
ZTsKICAgICAgICAgYm9vbCBzZXNzaW9uOworCisjaWYgUExBVEZPUk0oUVQpCisgICAgICAgIENv
b2tpZShjb25zdCBRTmV0d29ya0Nvb2tpZSYpOworICAgICAgICBvcGVyYXRvciBRTmV0d29ya0Nv
b2tpZSgpIGNvbnN0OworI2VuZGlmCiAgICAgfTsKIAogICAgIHN0cnVjdCBDb29raWVIYXNoIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nvb2tpZUphci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vQ29va2llSmFyLmgKaW5kZXggZjIxY2ZkNC4uNDlmOWIzYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29va2llSmFyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vQ29va2llSmFyLmgKQEAgLTMxLDYgKzMxLDEwIEBACiAjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCisjaWYg
UExBVEZPUk0oUVQpCitjbGFzcyBRTmV0d29ya0Nvb2tpZUphcjsKKyNlbmRpZgorCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBEb2N1bWVudDsKQEAgLTQ2LDEwICs1MCwxNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IERvY3VtZW50
KiwgY29uc3QgS1VSTCYsIFZlY3RvcjxDb29raWU+Jik7CiAgICAgdm9pZCBkZWxldGVDb29raWUo
Y29uc3QgRG9jdW1lbnQqLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJik7CiAKKyNpZiBQTEFU
Rk9STShRVCkKKyAgICBRTmV0d29ya0Nvb2tpZUphciogc2hhcmVkQ29va2llSmFyKCk7CisjZW5k
aWYKKwogICAgIHZvaWQgZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoSGFzaFNldDxTdHJpbmc+JiBo
b3N0bmFtZXMpOwogICAgIHZvaWQgZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKGNvbnN0IFN0cmlu
ZyYgaG9zdG5hbWUpOwogICAgIHZvaWQgZGVsZXRlQWxsQ29va2llcygpOwogCisgICAgdm9pZCBn
ZXRBbGxDb29raWVzKFZlY3RvcjxDb29raWU+Jik7CisgICAgdm9pZCByZXNldEFsbENvb2tpZXMo
Y29uc3QgVmVjdG9yPENvb2tpZT4mKTsKKwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9Db29raWVKYXJFZmwuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZWZsL0Nvb2tpZUphckVmbC5jcHAKaW5kZXggMjYxYWIyMy4uZWZmMjlhNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL0Nvb2tpZUphckVmbC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL0Nvb2tpZUphckVmbC5jcHAKQEAgLTY3LDQg
KzY3LDE0IEBAIHZvaWQgZGVsZXRlQWxsQ29va2llcygpCiAgICAgLy8gRklYTUU6IE5vdCB5ZXQg
aW1wbGVtZW50ZWQKIH0KIAordm9pZCBnZXRBbGxDb29raWVzKFZlY3RvcjxDb29raWU+JikKK3sK
KyAgICAvLyBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRlZAorfQorCit2b2lkIHJlc2V0QWxsQ29v
a2llcyhjb25zdCBWZWN0b3I8Q29va2llPiYpCit7CisgICAgLy8gRklYTUU6IE5vdCB5ZXQgaW1w
bGVtZW50ZWQKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaGFp
a3UvQ29va2llSmFySGFpa3UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaGFpa3UvQ29v
a2llSmFySGFpa3UuY3BwCmluZGV4IDk2Mjg0NmIuLjU5NWU3YjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2hhaWt1L0Nvb2tpZUphckhhaWt1LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9oYWlrdS9Db29raWVKYXJIYWlrdS5jcHAKQEAgLTkwLDUgKzkwLDE1
IEBAIHZvaWQgZGVsZXRlQWxsQ29va2llcygpCiAgICAgLy8gRklYTUU6IE5vdCB5ZXQgaW1wbGVt
ZW50ZWQKIH0KIAordm9pZCBnZXRBbGxDb29raWVzKFZlY3RvcjxDb29raWU+JikKK3sKKyAgICAv
LyBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRlZAorfQorCit2b2lkIHJlc2V0QWxsQ29va2llcyhj
b25zdCBWZWN0b3I8Q29va2llPiYpCit7CisgICAgLy8gRklYTUU6IE5vdCB5ZXQgaW1wbGVtZW50
ZWQKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvQ29va2llSmFyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL0Nvb2tpZUphci5tbQppbmRleCA2YjIwOWMwLi4xNTY5YzIxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQ29va2llSmFyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9Db29raWVKYXIubW0KQEAgLTI2OSw2ICsyNjksMTYgQEAgdm9pZCBkZWxl
dGVBbGxDb29raWVzKCkKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogfQogCit2b2lk
IGdldEFsbENvb2tpZXMoVmVjdG9yPENvb2tpZT4mKQoreworICAgIC8vIEZJWE1FOiBOb3QgeWV0
IGltcGxlbWVudGVkCit9CisKK3ZvaWQgcmVzZXRBbGxDb29raWVzKGNvbnN0IFZlY3RvcjxDb29r
aWU+JikKK3sKKyAgICAvLyBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRlZAorfQorCiB9CiAKICNl
bmRpZiAvLyAhVVNFKENGTkVUV09SSykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvYW5kcm9pZC9Db29raWVKYXJBbmRyb2lkLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvYW5kcm9pZC9Db29raWVKYXJBbmRyb2lkLmNwcAppbmRleCBkMGE0
MjE3Li5iZmQ0M2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2FuZHJvaWQvQ29va2llSmFyQW5kcm9pZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9hbmRyb2lkL0Nvb2tpZUphckFuZHJvaWQuY3BwCkBAIC02Nyw0ICs2NywxNCBA
QCB2b2lkIGRlbGV0ZUFsbENvb2tpZXMoKQogICAgIC8vIEZJWE1FOiBOb3QgeWV0IGltcGxlbWVu
dGVkCiB9CiAKK3ZvaWQgZ2V0QWxsQ29va2llcyhWZWN0b3I8Q29va2llPiYpCit7CisgICAgLy8g
RklYTUU6IE5vdCB5ZXQgaW1wbGVtZW50ZWQKK30KKwordm9pZCByZXNldEFsbENvb2tpZXMoY29u
c3QgVmVjdG9yPENvb2tpZT4mKQoreworICAgIC8vIEZJWE1FOiBOb3QgeWV0IGltcGxlbWVudGVk
Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
Q29va2llSmFyQ0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9D
b29raWVKYXJDRk5ldC5jcHAKaW5kZXggMzU4YzcyZC4uYzkyMDg4YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Db29raWVKYXJDRk5ldC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Db29raWVKYXJDRk5ldC5jcHAKQEAg
LTI4Niw2ICsyODYsMTYgQEAgdm9pZCBkZWxldGVBbGxDb29raWVzKCkKICAgICBDRkhUVFBDb29r
aWVTdG9yYWdlRGVsZXRlQWxsQ29va2llcyhjb29raWVTdG9yYWdlKTsKIH0KIAordm9pZCBnZXRB
bGxDb29raWVzKFZlY3RvcjxDb29raWU+JikKK3sKKyAgICAvLyBGSVhNRTogTm90IHlldCBpbXBs
ZW1lbnRlZAorfQorCit2b2lkIHJlc2V0QWxsQ29va2llcyhjb25zdCBWZWN0b3I8Q29va2llPiYp
Cit7CisgICAgLy8gRklYTUU6IE5vdCB5ZXQgaW1wbGVtZW50ZWQKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gVVNFKENGTkVUV09SSykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2hyb21pdW0vQ29va2llSmFyQ2hyb21pdW0uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jaHJvbWl1bS9Db29raWVKYXJDaHJv
bWl1bS5jcHAKaW5kZXggNzc5ZmU0NS4uMDY3OTFiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jaHJvbWl1bS9Db29raWVKYXJDaHJvbWl1bS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jaHJvbWl1bS9Db29raWVKYXJDaHJvbWl1
bS5jcHAKQEAgLTgyLDQgKzgyLDE0IEBAIHZvaWQgZGVsZXRlQWxsQ29va2llcygpCiAgICAgLy8g
RklYTUU6IE5vdCB5ZXQgaW1wbGVtZW50ZWQKIH0KIAordm9pZCBnZXRBbGxDb29raWVzKFZlY3Rv
cjxDb29raWU+JikKK3sKKyAgICAvLyBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRlZAorfQorCit2
b2lkIHJlc2V0QWxsQ29va2llcyhjb25zdCBWZWN0b3I8Q29va2llPiYpCit7CisgICAgLy8gRklY
TUU6IE5vdCB5ZXQgaW1wbGVtZW50ZWQKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckN1
cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckN1
cmwuY3BwCmluZGV4IDU3MTAyYTcuLmJiOWZmM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJDdXJsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyQ3VybC5jcHAKQEAgLTgzLDQgKzgz
LDE0IEBAIHZvaWQgZGVsZXRlQWxsQ29va2llcygpCiAgICAgLy8gRklYTUU6IE5vdCB5ZXQgaW1w
bGVtZW50ZWQKIH0KIAordm9pZCBnZXRBbGxDb29raWVzKFZlY3RvcjxDb29raWU+JikKK3sKKyAg
ICAvLyBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRlZAorfQorCit2b2lkIHJlc2V0QWxsQ29va2ll
cyhjb25zdCBWZWN0b3I8Q29va2llPiYpCit7CisgICAgLy8gRklYTUU6IE5vdCB5ZXQgaW1wbGVt
ZW50ZWQKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL0Nvb2tpZUphclNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL0Nvb2tpZUphclNvdXAuY3BwCmluZGV4IGY3M2E2MTYuLjQ2OWQzMTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Db29raWVKYXJTb3VwLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ29va2llSmFyU291
cC5jcHAKQEAgLTEzNyw0ICsxMzcsMTQgQEAgdm9pZCBkZWxldGVBbGxDb29raWVzKCkKICAgICAv
LyBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRlZAogfQogCit2b2lkIGdldEFsbENvb2tpZXMoVmVj
dG9yPENvb2tpZT4mKQoreworICAgIC8vIEZJWE1FOiBOb3QgeWV0IGltcGxlbWVudGVkCit9CisK
K3ZvaWQgcmVzZXRBbGxDb29raWVzKGNvbnN0IFZlY3RvcjxDb29raWU+JikKK3sKKyAgICAvLyBG
SVhNRTogTm90IHlldCBpbXBsZW1lbnRlZAorfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL3dpbi9Db29raWVKYXJXaW4uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay93aW4vQ29va2llSmFyV2luLmNwcAppbmRleCAyODIwMDEwLi4y
MWVkNjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3dpbi9D
b29raWVKYXJXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2lu
L0Nvb2tpZUphcldpbi5jcHAKQEAgLTEwMSw0ICsxMDEsMTQgQEAgdm9pZCBkZWxldGVBbGxDb29r
aWVzKCkKICAgICAvLyBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRlZAogfQogCit2b2lkIGdldEFs
bENvb2tpZXMoVmVjdG9yPENvb2tpZT4mKQoreworICAgIC8vIEZJWE1FOiBOb3QgeWV0IGltcGxl
bWVudGVkCit9CisKK3ZvaWQgcmVzZXRBbGxDb29raWVzKGNvbnN0IFZlY3RvcjxDb29raWU+JikK
K3sKKyAgICAvLyBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRlZAorfQorCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9Db29raWVKYXJRdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9xdC9Db29raWVKYXJRdC5jcHAKaW5kZXggNmRjZDY2Yi4uNjhiYzQzNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvQ29va2llSmFyUXQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L0Nvb2tpZUphclF0LmNwcApAQCAtMzgsNiAr
MzgsNyBAQAogI2luY2x1ZGUgInF3ZWJmcmFtZS5oIgogI2luY2x1ZGUgInF3ZWJwYWdlLmgiCiAj
aW5jbHVkZSAicXdlYnNldHRpbmdzLmgiCisjaW5jbHVkZSA8UURhdGVUaW1lPgogI2luY2x1ZGUg
PFFOZXR3b3JrQWNjZXNzTWFuYWdlcj4KICNpbmNsdWRlIDxRTmV0d29ya0Nvb2tpZT4KICNpbmNs
dWRlIDxRU3RyaW5nTGlzdD4KQEAgLTE0MiwxOSArMTQzLDExMSBAQCB2b2lkIGRlbGV0ZUNvb2tp
ZShjb25zdCBEb2N1bWVudCosIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmKQogICAgIC8vIEZJ
WE1FOiBOb3QgeWV0IGltcGxlbWVudGVkCiB9CiAKKy8vIFRoZSBmb2xsb3dpbmcgY29kZSBpcyBv
bmx5IHVzZWQgYnkgV2ViS2l0MgorCitjbGFzcyBXZWJLaXQyU2hhcmVkQ29va2llSmFyIDogcHVi
bGljIFFOZXR3b3JrQ29va2llSmFyIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgV2ViS2l0MlNoYXJl
ZENvb2tpZUphciogc2hhcmVkKCkKKyAgICB7CisgICAgICAgIHN0YXRpYyBXZWJLaXQyU2hhcmVk
Q29va2llSmFyKiByZXN1bHQgPSBuZXcgV2ViS2l0MlNoYXJlZENvb2tpZUphcigpOworICAgICAg
ICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIHZvaWQgZ2V0SG9zdG5hbWVzV2l0aENvb2tp
ZXMoSGFzaFNldDxTdHJpbmc+JiBob3N0bmFtZXMpCisgICAgeworICAgICAgICBRTGlzdDxRTmV0
d29ya0Nvb2tpZT4gY29va2llcyA9IGFsbENvb2tpZXMoKTsKKyAgICAgICAgZm9yZWFjaCAoUU5l
dHdvcmtDb29raWUgbmV0d29ya0Nvb2tpZSwgY29va2llcykKKyAgICAgICAgICAgIGhvc3RuYW1l
cy5hZGQobmV0d29ya0Nvb2tpZS5kb21haW4oKSk7CisgICAgfQorCisgICAgdm9pZCBkZWxldGVD
b29raWVzRm9ySG9zdG5hbWUoY29uc3QgUVN0cmluZyYgaG9zdG5hbWUpCisgICAgeworICAgICAg
ICBRTGlzdDxRTmV0d29ya0Nvb2tpZT4gY29va2llcyA9IGFsbENvb2tpZXMoKTsKKyAgICAgICAg
UUxpc3Q8UU5ldHdvcmtDb29raWU+OjpJdGVyYXRvciBpdCA9IGNvb2tpZXMuYmVnaW4oKTsKKyAg
ICAgICAgZm9yICg7IGl0ICE9IGNvb2tpZXMuZW5kKCk7ICsraXQpIHsKKyAgICAgICAgICAgIGlm
IChpdC0+ZG9tYWluKCkgPT0gaG9zdG5hbWUpCisgICAgICAgICAgICAgICAgaXQgPSBjb29raWVz
LmVyYXNlKGl0KTsKKyAgICAgICAgfQorICAgICAgICBzZXRBbGxDb29raWVzKGNvb2tpZXMpOwor
ICAgIH0KKworICAgIHZvaWQgZ2V0QWxsQ29va2llcyhWZWN0b3I8Q29va2llPiYgY29va2llcykK
KyAgICB7CisgICAgICAgIFFMaXN0PFFOZXR3b3JrQ29va2llPiBwbGF0Zm9ybUNvb2tpZXMgPSBh
bGxDb29raWVzKCk7CisgICAgICAgIFFMaXN0PFFOZXR3b3JrQ29va2llPjo6SXRlcmF0b3IgaXQg
PSBwbGF0Zm9ybUNvb2tpZXMuYmVnaW4oKTsKKyAgICAgICAgZm9yICg7IGl0ICE9IHBsYXRmb3Jt
Q29va2llcy5lbmQoKTsgKytpdCkKKyAgICAgICAgICAgIGNvb2tpZXMuYXBwZW5kKCppdCk7Cisg
ICAgfQorCisgICAgdm9pZCByZXNldEFsbENvb2tpZXMoY29uc3QgVmVjdG9yPENvb2tpZT4mIGNv
b2tpZXMpCisgICAgeworICAgICAgICBRTGlzdDxRTmV0d29ya0Nvb2tpZT4gcGxhdGZvcm1Db29r
aWVzOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvb2tpZXMuc2l6ZSgpOyArK2kpCisg
ICAgICAgICAgICBwbGF0Zm9ybUNvb2tpZXMuYXBwZW5kKGNvb2tpZXNbaV0pOworCisgICAgICAg
IHNldEFsbENvb2tpZXMocGxhdGZvcm1Db29raWVzKTsKKworICAgIH0KKworICAgIHZvaWQgZGVs
ZXRlQWxsQ29va2llcygpIHsgc2V0QWxsQ29va2llcyhRTGlzdDxRTmV0d29ya0Nvb2tpZT4oKSk7
IH0KK3ByaXZhdGU6Cit9OworCitRTmV0d29ya0Nvb2tpZUphciogc2hhcmVkQ29va2llSmFyKCkK
K3sKKyAgICByZXR1cm4gV2ViS2l0MlNoYXJlZENvb2tpZUphcjo6c2hhcmVkKCk7Cit9CisKIHZv
aWQgZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoSGFzaFNldDxTdHJpbmc+JiBob3N0bmFtZXMpCiB7
Ci0gICAgLy8gRklYTUU6IE5vdCB5ZXQgaW1wbGVtZW50ZWQKKyAgICBXZWJLaXQyU2hhcmVkQ29v
a2llSmFyOjpzaGFyZWQoKS0+Z2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoaG9zdG5hbWVzKTsKIH0K
IAogdm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoY29uc3QgU3RyaW5nJiBob3N0bmFtZSkK
IHsKLSAgICAvLyBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRlZAorICAgIFdlYktpdDJTaGFyZWRD
b29raWVKYXI6OnNoYXJlZCgpLT5kZWxldGVDb29raWVzRm9ySG9zdG5hbWUoaG9zdG5hbWUpOwog
fQogCiB2b2lkIGRlbGV0ZUFsbENvb2tpZXMoKQogewotICAgIC8vIEZJWE1FOiBOb3QgeWV0IGlt
cGxlbWVudGVkCisgICAgV2ViS2l0MlNoYXJlZENvb2tpZUphcjo6c2hhcmVkKCktPmRlbGV0ZUFs
bENvb2tpZXMoKTsKK30KKworQ29va2llOjpDb29raWUoY29uc3QgUU5ldHdvcmtDb29raWUmIGNv
b2tpZSkKKyAgICA6IG5hbWUoY29va2llLm5hbWUoKS5jb25zdERhdGEoKSkKKyAgICAsIHZhbHVl
KGNvb2tpZS52YWx1ZSgpLmNvbnN0RGF0YSgpKQorICAgICwgZG9tYWluKGNvb2tpZS5kb21haW4o
KSkKKyAgICAsIHBhdGgoY29va2llLnBhdGgoKSkKKyAgICAsIGV4cGlyZXMoY29va2llLmV4cGly
YXRpb25EYXRlKCkudG9NU2Vjc1NpbmNlRXBvY2goKSkKKyAgICAsIGh0dHBPbmx5KGNvb2tpZS5p
c0h0dHBPbmx5KCkpCisgICAgLCBzZWN1cmUoY29va2llLmlzU2VjdXJlKCkpCisgICAgLCBzZXNz
aW9uKGNvb2tpZS5pc1Nlc3Npb25Db29raWUoKSkKK3sKK30KKworQ29va2llOjpvcGVyYXRvciBR
TmV0d29ya0Nvb2tpZSgpIGNvbnN0Cit7CisgICAgUU5ldHdvcmtDb29raWUgcmVzdWx0KFFTdHJp
bmcobmFtZSkudG9Bc2NpaSgpLCBRU3RyaW5nKHZhbHVlKS50b0FzY2lpKCkpOworICAgIHJlc3Vs
dC5zZXREb21haW4oZG9tYWluKTsKKyAgICByZXN1bHQuc2V0UGF0aChwYXRoKTsKKyAgICBpZiAo
c2Vzc2lvbikgeworICAgICAgICBRRGF0ZVRpbWUgZXhwaXJhdGlvbkRhdGU7CisgICAgICAgIGV4
cGlyYXRpb25EYXRlLnNldE1TZWNzU2luY2VFcG9jaChleHBpcmVzKTsKKyAgICAgICAgcmVzdWx0
LnNldEV4cGlyYXRpb25EYXRlKGV4cGlyYXRpb25EYXRlKTsKKyAgICB9CisgICAgcmVzdWx0LnNl
dEh0dHBPbmx5KGh0dHBPbmx5KTsKKyAgICByZXN1bHQuc2V0U2VjdXJlKHNlY3VyZSk7CisgICAg
cmV0dXJuIHJlc3VsdDsKK30KKwordm9pZCBnZXRBbGxDb29raWVzKFZlY3RvcjxDb29raWU+JiBj
b29raWVzKQoreworICAgIFdlYktpdDJTaGFyZWRDb29raWVKYXI6OnNoYXJlZCgpLT5nZXRBbGxD
b29raWVzKGNvb2tpZXMpOworfQorCit2b2lkIHJlc2V0QWxsQ29va2llcyhjb25zdCBWZWN0b3I8
Q29va2llPiYgY29va2llcykKK3sKKyAgICBXZWJLaXQyU2hhcmVkQ29va2llSmFyOjpzaGFyZWQo
KS0+cmVzZXRBbGxDb29raWVzKGNvb2tpZXMpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYzRjMTk1
My4uMGMxMGE2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDExLTA3LTI4ICBMdWl6
IEFnb3N0aW5pICA8bHVpei5hZ29zdGluaUBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIFdlYktp
dDIgLSBTZW5kaW5nIHRoZSBmdWxsIGNvb2tpZSBsaXN0IGZyb20gd2ViIHByb2Nlc3MgdG8gVUkg
cHJvY2VzcyBhbmQgdmljZSB2ZXJzYQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NjUzMDkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAg
ICAoQ29yZUlQQzo6OjplbmNvZGUpOgorICAgICAgICAoQ29yZUlQQzo6OjpkZWNvZGUpOgorICAg
ICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL3F0L1dLVmlldy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2Vy
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmdldEFs
bENvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRpZEdl
dEFsbENvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OnJl
c2V0QWxsQ29va2llcyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94
eS5oOgorICAgICAgICAoV2ViS2l0OjpHZXRBbGxDb29raWVzQ2FsbGJhY2s6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OkdldEFsbENvb2tpZXNDYWxsYmFjazo6cGVyZm9ybUNhbGxiYWNrKToK
KyAgICAgICAgKFdlYktpdDo6R2V0QWxsQ29va2llc0NhbGxiYWNrOjppbnZhbGlkYXRlKToKKyAg
ICAgICAgKFdlYktpdDo6R2V0QWxsQ29va2llc0NhbGxiYWNrOjpHZXRBbGxDb29raWVzQ2FsbGJh
Y2spOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkubWVzc2FnZXMu
aW46CisgICAgICAgICogVUlQcm9jZXNzL3F0L3F3a2NvbnRleHQuY3BwOgorICAgICAgICAoY29v
a2llQ2FsbGJhY2spOgorICAgICAgICAoUVdLQ29udGV4dDo6Z2V0Q29va2llTGlzdCk6CisgICAg
ICAgIChRV0tDb250ZXh0OjpyZXNldENvb2tpZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9x
d2tjb250ZXh0Lmg6CisgICAgICAgICogVUlQcm9jZXNzL3F0L3F3a2NvbnRleHRfcC5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViQ29va2llTWFuYWdlcjo6Z2V0QWxsQ29va2llcyk6CisgICAgICAgIChXZWJL
aXQ6OldlYkNvb2tpZU1hbmFnZXI6OnJlc2V0QWxsQ29va2llcyk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0Nv
b2tpZXMvV2ViQ29va2llTWFuYWdlci5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L3F0L1dlYlByb2Nlc3NRdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnBsYXRm
b3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MpOgorCiAyMDExLTA3LTI3ICBNYXJrIEhhaG5lbmJlcmcg
IDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIG9wZXJhdG9yIG5ldyBm
cm9tIEpTQ2VsbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmNwcAppbmRleCA4MzhhOTVhLi42ODkxMGE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5j
bHVkZSAiU2hhcmVhYmxlQml0bWFwLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9BdXRoZW50aWNhdGlv
bkNoYWxsZW5nZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ29va2llLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9DcmVkZW50aWFsLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9DdXJzb3IuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0RhdGFiYXNlRGV0YWlscy5oPgpAQCAtNDcxLDYgKzQ3Miw0MCBAQCBib29sIEFy
Z3VtZW50Q29kZXI8Q29tcG9zaXRpb25VbmRlcmxpbmU+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVy
KiBkZWNvZGVyLCBDb21wbwogICAgIHJldHVybiB0cnVlOwogfQogCit2b2lkIEFyZ3VtZW50Q29k
ZXI8V2ViQ29yZTo6Q29va2llPjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciogZW5jb2RlciwgY29u
c3QgV2ViQ29yZTo6Q29va2llJiBjb29raWUpCit7CisgICAgZW5jb2Rlci0+ZW5jb2RlKGNvb2tp
ZS5uYW1lKTsKKyAgICBlbmNvZGVyLT5lbmNvZGUoY29va2llLnZhbHVlKTsKKyAgICBlbmNvZGVy
LT5lbmNvZGUoY29va2llLmRvbWFpbik7CisgICAgZW5jb2Rlci0+ZW5jb2RlKGNvb2tpZS5wYXRo
KTsKKyAgICBlbmNvZGVyLT5lbmNvZGUoY29va2llLmV4cGlyZXMpOworICAgIGVuY29kZXItPmVu
Y29kZShjb29raWUuaHR0cE9ubHkpOworICAgIGVuY29kZXItPmVuY29kZShjb29raWUuc2VjdXJl
KTsKKyAgICBlbmNvZGVyLT5lbmNvZGUoY29va2llLnNlc3Npb24pOworfQorCitib29sIEFyZ3Vt
ZW50Q29kZXI8V2ViQ29yZTo6Q29va2llPjo6ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciogZGVjb2Rl
ciwgV2ViQ29yZTo6Q29va2llJiBjb29raWUpCit7CisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUo
Y29va2llLm5hbWUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLT5k
ZWNvZGUoY29va2llLnZhbHVlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVj
b2Rlci0+ZGVjb2RlKGNvb2tpZS5kb21haW4pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
aWYgKCFkZWNvZGVyLT5kZWNvZGUoY29va2llLnBhdGgpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoY29va2llLmV4cGlyZXMpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoY29va2llLmh0dHBPbmx5KSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGNvb2tpZS5zZWN1
cmUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoY29v
a2llLnNlc3Npb24pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKwogCiB2b2lkIEFyZ3VtZW50Q29kZXI8RGF0YWJhc2VEZXRhaWxzPjo6ZW5jb2RlKEFyZ3Vt
ZW50RW5jb2RlciogZW5jb2RlciwgY29uc3QgRGF0YWJhc2VEZXRhaWxzJiBkZXRhaWxzKQogewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5o
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCmluZGV4IGY0
NDM2NDAuLjMyNDE2YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3Jl
QXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmgKQEAgLTMxLDYgKzMxLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBj
bGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKICAgICBjbGFzcyBDb2xvcjsKKyAgICBzdHJ1
Y3QgQ29va2llOwogICAgIGNsYXNzIENyZWRlbnRpYWw7CiAgICAgY2xhc3MgQ3Vyc29yOwogICAg
IGNsYXNzIERhdGFiYXNlRGV0YWlsczsKQEAgLTE4Nyw2ICsxODgsMTEgQEAgdGVtcGxhdGU8PiBz
dHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDb21wb3NpdGlvblVuZGVybGluZT4gewogICAg
IHN0YXRpYyBib29sIGRlY29kZShBcmd1bWVudERlY29kZXIqLCBXZWJDb3JlOjpDb21wb3NpdGlv
blVuZGVybGluZSYpOwogfTsKIAordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJD
b3JlOjpDb29raWU+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyKiwg
Y29uc3QgV2ViQ29yZTo6Q29va2llJik7CisgICAgc3RhdGljIGJvb2wgZGVjb2RlKEFyZ3VtZW50
RGVjb2RlciosIFdlYkNvcmU6OkNvb2tpZSYpOworfTsKKwogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJn
dW1lbnRDb2RlcjxXZWJDb3JlOjpEYXRhYmFzZURldGFpbHM+IHsKICAgICBzdGF0aWMgdm9pZCBl
bmNvZGUoQXJndW1lbnRFbmNvZGVyKiwgY29uc3QgV2ViQ29yZTo6RGF0YWJhc2VEZXRhaWxzJik7
CiAgICAgc3RhdGljIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciosIFdlYkNvcmU6OkRhdGFi
YXNlRGV0YWlscyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9x
dC9XS1ZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvV0tWaWV3LmgKaW5k
ZXggMGIyZTBhNC4uZjRhMmNjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9xdC9XS1ZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L1dL
Vmlldy5oCkBAIC0yNCw1ICsyNCw2IEBACiAjaW5jbHVkZSA8V2ViS2l0Mi9xZGVza3RvcHdlYnZp
ZXcuaD4KICNpbmNsdWRlIDxXZWJLaXQyL3F0b3VjaHdlYnZpZXcuaD4KICNpbmNsdWRlIDxXZWJL
aXQyL3F0b3VjaHdlYnBhZ2UuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL3F3a2NvbnRleHQuaD4KIAog
I2VuZGlmIC8qIFdLVmlld19oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViQ29va2llTWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJDb29raWVNYW5hZ2VyUHJveHkuY3BwCmluZGV4IGU3YjRhNmEuLjY4ODY2MGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuY3BwCkBA
IC0xMjYsNiArMTI2LDI5IEBAIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5Ojpjb29raWVzRGlk
Q2hhbmdlKCkKICAgICBtX2NsaWVudC5jb29raWVzRGlkQ2hhbmdlKHRoaXMpOwogfQogCit2b2lk
IFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0QWxsQ29va2llcyhHZXRBbGxDb29raWVzQ2FsbGJh
Y2sqIGNhbGxiYWNrKQoreworICAgIEFTU0VSVChtX3dlYkNvbnRleHQpOworCisgICAgdWludDY0
X3QgY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7CisgICAgbV9nZXRBbGxDb29r
aWVzQ2FsbGJhY2tzLnNldChjYWxsYmFja0lELCBjYWxsYmFjayk7CisKKyAgICBtX3dlYkNvbnRl
eHQtPnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6R2V0QWxs
Q29va2llcyhjYWxsYmFja0lEKSk7Cit9CisKK3ZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5Ojpk
aWRHZXRBbGxDb29raWVzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiBjb29raWVzLCB1
aW50NjRfdCBjYWxsYmFja0lEKQoreworICAgIFJlZlB0cjxHZXRBbGxDb29raWVzQ2FsbGJhY2s+
IGNhbGxiYWNrID0gbV9nZXRBbGxDb29raWVzQ2FsbGJhY2tzLnRha2UoY2FsbGJhY2tJRCk7Cisg
ICAgQVNTRVJUKGNhbGxiYWNrKTsKKyAgICBjYWxsYmFjay0+cGVyZm9ybUNhbGxiYWNrKGNvb2tp
ZXMpOworfQorCit2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6cmVzZXRBbGxDb29raWVzKGNv
bnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiBjb29raWVzKQoreworICAgIEFTU0VSVChtX3dl
YkNvbnRleHQpOworICAgIG1fd2ViQ29udGV4dC0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2Vz
OjpXZWJDb29raWVNYW5hZ2VyOjpSZXNldEFsbENvb2tpZXMoY29va2llcykpOworfQorCiB2b2lk
IFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6c2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShIVFRQQ29v
a2llQWNjZXB0UG9saWN5IHBvbGljeSkKIHsKICAgICBBU1NFUlQobV93ZWJDb250ZXh0KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuaAppbmRl
eCA3ZGMyMGQ1Li4zNWQ4NGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViQ29va2llTWFuYWdlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YkNvb2tpZU1hbmFnZXJQcm94eS5oCkBAIC00MCw2ICs0MCwxMCBAQCBuYW1lc3BhY2UgQ29yZUlQ
QyB7CiAgICAgY2xhc3MgTWVzc2FnZUlEOwogfQogCituYW1lc3BhY2UgV2ViQ29yZSB7CitzdHJ1
Y3QgQ29va2llOworfQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViQ29udGV4dDsK
QEAgLTQ4LDYgKzUyLDE5IEBAIGNsYXNzIFdlYlByb2Nlc3NQcm94eTsKIHR5cGVkZWYgR2VuZXJp
Y0NhbGxiYWNrPFdLQXJyYXlSZWY+IEFycmF5Q2FsbGJhY2s7CiB0eXBlZGVmIEdlbmVyaWNDYWxs
YmFjazxXS0hUVFBDb29raWVBY2NlcHRQb2xpY3ksIEhUVFBDb29raWVBY2NlcHRQb2xpY3k+IEhU
VFBDb29raWVBY2NlcHRQb2xpY3lDYWxsYmFjazsKIAorY2xhc3MgR2V0QWxsQ29va2llc0NhbGxi
YWNrIDogcHVibGljIENhbGxiYWNrQmFzZSB7CitwdWJsaWM6CisgICAgdHlwZWRlZiB2b2lkICgq
Q2FsbGJhY2tGdW5jdGlvbikoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mLCB2b2lkKik7
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8R2V0QWxsQ29va2llc0NhbGxiYWNrPiBjcmVhdGUodm9p
ZCogY29udGV4dCwgQ2FsbGJhY2tGdW5jdGlvbiBjYWxsYmFjaykgeyByZXR1cm4gYWRvcHRSZWYo
bmV3IEdldEFsbENvb2tpZXNDYWxsYmFjayhjb250ZXh0LCBjYWxsYmFjaykpOyB9CisgICAgdm9p
ZCBwZXJmb3JtQ2FsbGJhY2soY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mIGNvb2tpZXMp
IHsgbV9jYWxsYmFjayhjb29raWVzLCBjb250ZXh0KCkpOyB9CisgICAgdm9pZCBpbnZhbGlkYXRl
KCkgeyBtX2NhbGxiYWNrID0gMDsgfQorCitwcml2YXRlOgorICAgIEdldEFsbENvb2tpZXNDYWxs
YmFjayh2b2lkKiBjb250ZXh0LCBDYWxsYmFja0Z1bmN0aW9uIGNhbGxiYWNrKSA6IENhbGxiYWNr
QmFzZShjb250ZXh0KSAsIG1fY2FsbGJhY2soY2FsbGJhY2spIHsgfQorICAgIENhbGxiYWNrRnVu
Y3Rpb24gbV9jYWxsYmFjazsKK307CisKKwogY2xhc3MgV2ViQ29va2llTWFuYWdlclByb3h5IDog
cHVibGljIEFQSU9iamVjdCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IFR5cGUgQVBJVHlw
ZSA9IFR5cGVDb29raWVNYW5hZ2VyOwpAQCAtNjQsNiArODEsOSBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoY29uc3QgU3RyaW5nJiBob3N0bmFtZSk7CiAgICAg
dm9pZCBkZWxldGVBbGxDb29raWVzKCk7CiAKKyAgICB2b2lkIGdldEFsbENvb2tpZXMoR2V0QWxs
Q29va2llc0NhbGxiYWNrKik7CisgICAgdm9pZCByZXNldEFsbENvb2tpZXMoY29uc3QgVmVjdG9y
PFdlYkNvcmU6OkNvb2tpZT4mKTsKKwogICAgIHZvaWQgc2V0SFRUUENvb2tpZUFjY2VwdFBvbGlj
eShIVFRQQ29va2llQWNjZXB0UG9saWN5KTsKICAgICB2b2lkIGdldEhUVFBDb29raWVBY2NlcHRQ
b2xpY3koUGFzc1JlZlB0cjxIVFRQQ29va2llQWNjZXB0UG9saWN5Q2FsbGJhY2s+KTsKIApAQCAt
ODIsNiArMTAyLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEdldEhvc3RuYW1lc1dpdGhDb29r
aWVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgdWludDY0X3QgY2FsbGJhY2tJRCk7CiAgICAgdm9p
ZCBkaWRHZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHVpbnQzMl90IHBvbGljeSwgdWludDY0X3Qg
Y2FsbGJhY2tJRCk7CiAKKyAgICB2b2lkIGRpZEdldEFsbENvb2tpZXMoY29uc3QgVmVjdG9yPFdl
YkNvcmU6OkNvb2tpZT4mLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKwogICAgIHZvaWQgY29va2ll
c0RpZENoYW5nZSgpOwogICAgIAogICAgIHZvaWQgZGlkUmVjZWl2ZVdlYkNvb2tpZU1hbmFnZXJQ
cm94eU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29y
ZUlQQzo6QXJndW1lbnREZWNvZGVyKik7CkBAIC05Myw2ICsxMTUsNyBAQCBwcml2YXRlOgogICAg
IFdlYkNvbnRleHQqIG1fd2ViQ29udGV4dDsKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8
QXJyYXlDYWxsYmFjaz4gPiBtX2FycmF5Q2FsbGJhY2tzOwogICAgIEhhc2hNYXA8dWludDY0X3Qs
IFJlZlB0cjxIVFRQQ29va2llQWNjZXB0UG9saWN5Q2FsbGJhY2s+ID4gbV9odHRwQ29va2llQWNj
ZXB0UG9saWN5Q2FsbGJhY2tzOworICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxHZXRBbGxD
b29raWVzQ2FsbGJhY2s+ID4gbV9nZXRBbGxDb29raWVzQ2FsbGJhY2tzOwogCiAgICAgV2ViQ29v
a2llTWFuYWdlclByb3h5Q2xpZW50IG1fY2xpZW50OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4gYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCmlu
ZGV4IDJhZTA1NDUuLmUyNzI1NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJDb29raWVNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjMsNiArMjMs
NyBAQAogbWVzc2FnZXMgLT4gV2ViQ29va2llTWFuYWdlclByb3h5IHsKICAgICBEaWRHZXRIb3N0
bmFtZXNXaXRoQ29va2llcyhWZWN0b3I8V1RGOjpTdHJpbmc+IGhvc3RuYW1lcywgdWludDY0X3Qg
Y2FsbGJhY2tJRCk7CiAgICAgRGlkR2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSh1aW50MzJfdCBw
b2xpY3ksIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIERpZEdldEFsbENvb2tpZXMoVmVjdG9y
PFdlYkNvcmU6OkNvb2tpZT4gY29va2llcywgdWludDY0X3QgY2FsbGJhY2tJRCk7CiAgICAgCiAg
ICAgQ29va2llc0RpZENoYW5nZSgpCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvcXQvcXdrY29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvcXdr
Y29udGV4dC5jcHAKaW5kZXggMTE2YjZjOC4uM2JhOTcwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL3F0L3F3a2NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9xdC9xd2tjb250ZXh0LmNwcApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgPFFE
aXI+CiAjaW5jbHVkZSA8UVBpeG1hcD4KICNpbmNsdWRlIDxRVXJsPgorI2luY2x1ZGUgIkNvb2tp
ZS5oIgogI2luY2x1ZGUgIldlYkljb25EYXRhYmFzZS5oIgogI2luY2x1ZGUgIldlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5oIgogI2luY2x1ZGUgIldLSWNvbkRhdGFiYXNlLmgiCkBAIC0xMDUsNCArMTA2
LDMzIEBAIFFJY29uIFFXS0NvbnRleHQ6Omljb25Gb3JQYWdlVVJMKGNvbnN0IFFVcmwmIHBhZ2VV
UkwpIGNvbnN0CiAgICAgcmV0dXJuIFFJY29uKCpuYXRpdmVJbWFnZSk7CiB9CiAKK3N0YXRpYyB2
b2lkIGNvb2tpZUNhbGxiYWNrKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiBjb29raWVz
LCB2b2lkKiBpbmZvKQoreworICAgIFFXS0NvbnRleHRQcml2YXRlKiBkID0gcmVpbnRlcnByZXRf
Y2FzdDxRV0tDb250ZXh0UHJpdmF0ZSo+KGluZm8pOworICAgIEFTU0VSVChkLT5tX2dldENvb2tp
ZXNDYWxsYmFrKTsKKyAgICBkLT5tX2dldENvb2tpZXNDYWxsYmFrLT5pbnZhbGlkYXRlKCk7Cisg
ICAgZC0+bV9nZXRDb29raWVzQ2FsbGJhayA9IDA7CisKKyAgICBRTGlzdDxRTmV0d29ya0Nvb2tp
ZT4gY29va2llTGlzdDsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvb2tpZXMuc2l6ZSgpOyAr
K2kpCisgICAgICAgIGNvb2tpZUxpc3QuYXBwZW5kKGNvb2tpZXNbaV0pOworICAgIGVtaXQgZC0+
cS0+ZGlkUmVjZWl2ZUNvb2tpZUxpc3QoY29va2llTGlzdCk7Cit9CisKK3ZvaWQgUVdLQ29udGV4
dDo6Z2V0Q29va2llTGlzdCgpCit7CisgICAgaWYgKGQtPm1fZ2V0Q29va2llc0NhbGxiYWspCisg
ICAgICAgIGQtPm1fZ2V0Q29va2llc0NhbGxiYWstPmludmFsaWRhdGUoKTsKKyAgICBkLT5tX2dl
dENvb2tpZXNDYWxsYmFrID0gV2ViS2l0OjpHZXRBbGxDb29raWVzQ2FsbGJhY2s6OmNyZWF0ZShk
LCBjb29raWVDYWxsYmFjayk7CisgICAgZC0+Y29udGV4dC0+Y29va2llTWFuYWdlclByb3h5KCkt
PmdldEFsbENvb2tpZXMoZC0+bV9nZXRDb29raWVzQ2FsbGJhay5nZXQoKSk7Cit9CisKK3ZvaWQg
UVdLQ29udGV4dDo6cmVzZXRDb29raWVzKGNvbnN0IFFMaXN0PFFOZXR3b3JrQ29va2llPiYgY29v
a2llcykKK3sKKyAgICBXVEY6OlZlY3RvcjxXZWJDb3JlOjpDb29raWU+IGNvb2tpZVZlY3RvcjsK
KyAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvb2tpZXMuc2l6ZSgpOyArK2kpCisgICAgICAgIGNv
b2tpZVZlY3Rvci5hcHBlbmQoY29va2llc1tpXSk7CisgICAgZC0+Y29udGV4dC0+Y29va2llTWFu
YWdlclByb3h5KCktPnJlc2V0QWxsQ29va2llcyhjb29raWVWZWN0b3IpOworfQorCiAjaW5jbHVk
ZSAibW9jX3F3a2NvbnRleHQuY3BwIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL3F0L3F3a2NvbnRleHQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9xd2tjb250
ZXh0LmgKaW5kZXggYjI1OGEyNC4uMThkZmY5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL3F0L3F3a2NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
cXQvcXdrY29udGV4dC5oCkBAIC0yMSw2ICsyMSw3IEBACiAjZGVmaW5lIHF3a2NvbnRleHRfaAog
CiAjaW5jbHVkZSAicXdlYmtpdGdsb2JhbC5oIgorI2luY2x1ZGUgPFFOZXR3b3JrQ29va2llPgog
I2luY2x1ZGUgPFFPYmplY3Q+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS0NvbnRleHQuaD4KIApAQCAt
NDAsOCArNDEsMTIgQEAgcHVibGljOgogICAgIHZvaWQgc2V0SWNvbkRhdGFiYXNlUGF0aChjb25z
dCBRU3RyaW5nJik7CiAgICAgUUljb24gaWNvbkZvclBhZ2VVUkwoY29uc3QgUVVybCYpIGNvbnN0
OwogCisgICAgdm9pZCBnZXRDb29raWVMaXN0KCk7CisgICAgdm9pZCByZXNldENvb2tpZXMoY29u
c3QgUUxpc3Q8UU5ldHdvcmtDb29raWU+Jik7CisKIHB1YmxpYzoKICAgICBRX1NJR05BTCB2b2lk
IGljb25DaGFuZ2VkRm9yUGFnZVVSTChjb25zdCBRVXJsJik7CisgICAgUV9TSUdOQUwgdm9pZCBk
aWRSZWNlaXZlQ29va2llTGlzdChjb25zdCBRTGlzdDxRTmV0d29ya0Nvb2tpZT4mKTsKIAogcHJp
dmF0ZToKICAgICBRV0tDb250ZXh0UHJpdmF0ZSogZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9xdC9xd2tjb250ZXh0X3AuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9xdC9xd2tjb250ZXh0X3AuaAppbmRleCA1YWJmOTc5Li42ZTU0N2RkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvcXdrY29udGV4dF9wLmgKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL3F0L3F3a2NvbnRleHRfcC5oCkBAIC0yMiw2ICsyMiw3IEBACiAjZGVm
aW5lIHF3a2NvbnRleHRfcF9oCiAKICNpbmNsdWRlICJXZWJDb250ZXh0LmgiCisjaW5jbHVkZSAi
V2ViQ29va2llTWFuYWdlclByb3h5LmgiCiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBjbGFz
cyBRV0tDb250ZXh0UHJpdmF0ZSB7CkBAIC0zMiw2ICszMyw3IEBAIHB1YmxpYzoKICAgICBRV0tD
b250ZXh0KiBxOwogCiAgICAgUmVmUHRyPFdlYktpdDo6V2ViQ29udGV4dD4gY29udGV4dDsKKyAg
ICBSZWZQdHI8V2ViS2l0OjpHZXRBbGxDb29raWVzQ2FsbGJhY2s+IG1fZ2V0Q29va2llc0NhbGxi
YWs7CiB9OwogCiAjZW5kaWYgLyogcWtjb250ZXh0X3BfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuY3BwIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuY3BwCmluZGV4IGU4
MjU0Y2MuLjU4NDMxYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29v
a2llcy9XZWJDb29raWVNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5jcHAKQEAgLTI4LDcgKzI4LDkgQEAKIAogI2luY2x1
ZGUgIk1lc3NhZ2VJRC5oIgogI2luY2x1ZGUgIldlYkNvb2tpZU1hbmFnZXJQcm94eU1lc3NhZ2Vz
LmgiCisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViUHJv
Y2Vzcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ29va2llLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9D
b29raWVKYXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZVN0b3JhZ2UuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CkBAIC04MCw2ICs4MiwyNCBAQCB2b2lkIFdlYkNv
b2tpZU1hbmFnZXI6OmRlbGV0ZUFsbENvb2tpZXMoKQogICAgIFdlYkNvcmU6OmRlbGV0ZUFsbENv
b2tpZXMoKTsKIH0KIAorCit2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmdldEFsbENvb2tpZXModWlu
dDY0X3QgY2FsbGJhY2tJRCkKK3sKKyAgICBXZWJQcm9jZXNzOjpMb2NhbFRlcm1pbmF0aW9uRGlz
YWJsZXIgdGVybWluYXRpb25EaXNhYmxlcihXZWJQcm9jZXNzOjpzaGFyZWQoKSk7CisKKyAgICBW
ZWN0b3I8Q29va2llPiBjb29raWVzOworICAgIFdlYkNvcmU6OmdldEFsbENvb2tpZXMoY29va2ll
cyk7CisKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2Fn
ZXM6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6RGlkR2V0QWxsQ29va2llcyhjb29raWVzLCBjYWxs
YmFja0lEKSwgMCk7Cit9CisKK3ZvaWQgV2ViQ29va2llTWFuYWdlcjo6cmVzZXRBbGxDb29raWVz
KGNvbnN0IFZlY3RvcjxDb29raWU+JiBjb29raWVzKQoreworICAgIFdlYlByb2Nlc3M6OkxvY2Fs
VGVybWluYXRpb25EaXNhYmxlciB0ZXJtaW5hdGlvbkRpc2FibGVyKFdlYlByb2Nlc3M6OnNoYXJl
ZCgpKTsKKworICAgIFdlYkNvcmU6OnJlc2V0QWxsQ29va2llcyhjb29raWVzKTsKK30KKwogdm9p
ZCBXZWJDb29raWVNYW5hZ2VyOjpzdGFydE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoKQogewogICAg
IFdlYlByb2Nlc3M6OkxvY2FsVGVybWluYXRpb25EaXNhYmxlciB0ZXJtaW5hdGlvbkRpc2FibGVy
KFdlYlByb2Nlc3M6OnNoYXJlZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5oCmluZGV4IGMwYmQxZjMuLjU5ZmEyNmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5h
Z2VyLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1h
bmFnZXIuaApAQCAtMzYsNiArMzYsMTAgQEAgbmFtZXNwYWNlIENvcmVJUEMgewogICAgIGNsYXNz
IE1lc3NhZ2VJRDsKIH0KIAorbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ29va2llOworfQor
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViQ29va2llTWFuYWdlciB7CkBAIC01Niw2
ICs2MCw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoY29u
c3QgU3RyaW5nJik7CiAgICAgdm9pZCBkZWxldGVBbGxDb29raWVzKCk7CiAKKyAgICB2b2lkIGdl
dEFsbENvb2tpZXModWludDY0X3QgY2FsbGJhY2tJRCk7CisgICAgdm9pZCByZXNldEFsbENvb2tp
ZXMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKTsKKwogICAgIHZvaWQgcGxhdGZvcm1T
ZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KEhUVFBDb29raWVBY2NlcHRQb2xpY3kpOwogICAgIHZv
aWQgZ2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSh1aW50NjRfdCBjYWxsYmFja0lEKTsKICAgICBI
VFRQQ29va2llQWNjZXB0UG9saWN5IHBsYXRmb3JtR2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tp
ZU1hbmFnZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMv
V2ViQ29va2llTWFuYWdlci5tZXNzYWdlcy5pbgppbmRleCAxNWRlOWI2Li5hYjQwMTQ4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdl
ci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvV2Vi
Q29va2llTWFuYWdlci5tZXNzYWdlcy5pbgpAQCAtMjgsNiArMjgsOSBAQAogICAgIHZvaWQgRGVs
ZXRlQ29va2llc0Zvckhvc3RuYW1lKFdURjo6U3RyaW5nIGhvc3RuYW1lKQogICAgIHZvaWQgRGVs
ZXRlQWxsQ29va2llcygpCiAKKyAgICB2b2lkIEdldEFsbENvb2tpZXModWludDY0X3QgY2FsbGJh
Y2tJRCkKKyAgICB2b2lkIFJlc2V0QWxsQ29va2llcyhXVEY6OlZlY3RvcjxXZWJDb3JlOjpDb29r
aWU+IGNvb2tpZXMpCisKICAgICB2b2lkIFNldEhUVFBDb29raWVBY2NlcHRQb2xpY3kodWludDMy
X3QgcG9saWN5KQogICAgIHZvaWQgR2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSh1aW50NjRfdCBj
YWxsYmFja0lEKQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9x
dC9XZWJQcm9jZXNzUXQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9xdC9XZWJQcm9j
ZXNzUXQuY3BwCmluZGV4IDkxOTA0NGUuLmU4MGY4NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvcXQvV2ViUHJvY2Vzc1F0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL3F0L1dlYlByb2Nlc3NRdC5jcHAKQEAgLTI5LDYgKzI5LDggQEAKICNpbmNsdWRl
ICJXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9SdW50
aW1lRW5hYmxlZEZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8UU5ldHdvcmtBY2Nlc3NNYW5hZ2VyPgor
I2luY2x1ZGUgPFFOZXR3b3JrQ29va2llSmFyPgorI2luY2x1ZGUgPFdlYkNvcmUvQ29va2llSmFy
Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCkBAIC00NCw2ICs0NiwxMCBAQCB2b2lkIFdlYlBy
b2Nlc3M6OnBsYXRmb3JtQ2xlYXJSZXNvdXJjZUNhY2hlcyhSZXNvdXJjZUNhY2hlc1RvQ2xlYXIp
CiB2b2lkIFdlYlByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MoY29uc3QgV2Vi
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycywgQ29yZUlQQzo6QXJndW1lbnRE
ZWNvZGVyKiBhcmd1bWVudHMpCiB7CiAgICAgbV9uZXR3b3JrQWNjZXNzTWFuYWdlciA9IG5ldyBR
TmV0d29ya0FjY2Vzc01hbmFnZXI7CisgICAgUU5ldHdvcmtDb29raWVKYXIqIGphciA9IFdlYkNv
cmU6OnNoYXJlZENvb2tpZUphcigpOworICAgIG1fbmV0d29ya0FjY2Vzc01hbmFnZXItPnNldENv
b2tpZUphcihqYXIpOworICAgIGphci0+c2V0UGFyZW50KDApOworCiAKICAgICAvLyBEaXNhYmxl
IHJ1bnRpbWUgZW5hYmxlZCBmZWF0dXJlcyB0aGF0IGhhdmUgbm8gV2ViS2l0MiBpbXBsZW1lbnRh
dGlvbiB5ZXQuCiAjaWYgRU5BQkxFKERFVklDRV9PUklFTlRBVElPTikKZGlmZiAtLWdpdCBhL1Rv
b2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBmZmZjMzQ1Li44ZTMzYzU5IDEw
MDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjggQEAKKzIwMTEtMDctMjggIEx1aXogQWdvc3RpbmkgIDxsdWl6LmFnb3N0aW5pQG9wZW5i
b3NzYS5vcmc+CisKKyAgICAgICAgV2ViS2l0MiAtIFNlbmRpbmcgdGhlIGZ1bGwgY29va2llIGxp
c3QgZnJvbSB3ZWIgcHJvY2VzcyB0byBVSSBwcm9jZXNzIGFuZCB2aWNlIHZlcnNhCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTMwOQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTWluaUJyb3dzZXIvcXQv
QnJvd3NlcldpbmRvdy5jcHA6CisgICAgICAgIChCcm93c2VyV2luZG93OjpCcm93c2VyV2luZG93
KToKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9xdC9Db29raWVNYW5hZ2VyLmNwcDogQWRkZWQuCisg
ICAgICAgIChDb29raWVNYW5hZ2VyOjpzaGFyZWQpOgorICAgICAgICAoQ29va2llTWFuYWdlcjo6
ZHVtcENvb2tpZUxpc3QpOgorICAgICAgICAoQ29va2llTWFuYWdlcjo6c2F2ZUNvb2tpZUxpc3Qp
OgorICAgICAgICAoQ29va2llTWFuYWdlcjo6c2F2ZUFuZFF1aXQpOgorICAgICAgICAoQ29va2ll
TWFuYWdlcjo6Z2V0Q29va2llTGlzdCk6CisgICAgICAgIChDb29raWVNYW5hZ2VyOjpkaWRSZWNl
aXZlQ29va2llTGlzdCk6CisgICAgICAgIChDb29raWVNYW5hZ2VyOjp3cml0ZUNvb2tpZXMpOgor
ICAgICAgICAoQ29va2llTWFuYWdlcjo6cmVhZENvb2tpZXMpOgorICAgICAgICAoQ29va2llTWFu
YWdlcjo6Q29va2llTWFuYWdlcik6CisgICAgICAgIChDb29raWVNYW5hZ2VyOjp0aW1lckV2ZW50
KToKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9xdC9Db29raWVNYW5hZ2VyLmg6IEFkZGVkLgorICAg
ICAgICAqIE1pbmlCcm93c2VyL3F0L01pbmlCcm93c2VyLnBybzoKKyAgICAgICAgKiBNaW5pQnJv
d3Nlci9xdC9NaW5pQnJvd3NlckFwcGxpY2F0aW9uLmNwcDoKKyAgICAgICAgKE1pbmlCcm93c2Vy
QXBwbGljYXRpb246Ok1pbmlCcm93c2VyQXBwbGljYXRpb24pOgorCiAyMDExLTA3LTI3ICBSeXVh
biBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBTdHlsZSBib3QgY29t
cGxhaW5zIGFib3V0IEVGTC1zcGVjaWZpYyBmb3J3YXJkIGRlY2xhcmF0aW9uIG5hbWluZy4KZGlm
ZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL3F0L0Jyb3dzZXJXaW5kb3cuY3BwIGIvVG9vbHMv
TWluaUJyb3dzZXIvcXQvQnJvd3NlcldpbmRvdy5jcHAKaW5kZXggZGUwNDllMS4uMjgxYzNkMiAx
MDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvcXQvQnJvd3NlcldpbmRvdy5jcHAKKysrIGIv
VG9vbHMvTWluaUJyb3dzZXIvcXQvQnJvd3NlcldpbmRvdy5jcHAKQEAgLTMzLDYgKzMzLDggQEAK
ICNpbmNsdWRlICJxdG91Y2h3ZWJ2aWV3LmgiCiAjaW5jbHVkZSAicXRvdWNod2VicGFnZS5oIgog
CisjaW5jbHVkZSAiQ29va2llTWFuYWdlci5oIgorCiAjaWYgMAogLy8gRklYTUUKIHN0YXRpYyBR
V0tQYWdlKiBuZXdQYWdlRnVuY3Rpb24oUVdLUGFnZSogcGFnZSkKQEAgLTEwNyw2ICsxMDksNyBA
QCBCcm93c2VyV2luZG93OjpCcm93c2VyV2luZG93KFdpbmRvd09wdGlvbnMqIG9wdGlvbnMpCiAg
ICAgdG9vbHNNZW51LT5hZGRBY3Rpb24oIkNoYW5nZSBVc2VyIEFnZW50IiwgdGhpcywgU0xPVChz
aG93VXNlckFnZW50RGlhbG9nKCkpKTsKICAgICB0b29sc01lbnUtPmFkZFNlcGFyYXRvcigpOwog
ICAgIHRvb2xzTWVudS0+YWRkQWN0aW9uKCJMb2FkIFVSTHMgZnJvbSBmaWxlIiwgdGhpcywgU0xP
VChsb2FkVVJMTGlzdEZyb21GaWxlKCkpKTsKKyAgICB0b29sc01lbnUtPmFkZEFjdGlvbigiRHVt
cCBDb29raWVzIiwgQ29va2llTWFuYWdlcjo6c2hhcmVkKCksIFNMT1QoZHVtcENvb2tpZUxpc3Qo
KSkpOwogCiAgICAgbV9hZGRyZXNzQmFyID0gbmV3IFFMaW5lRWRpdCgpOwogICAgIGNvbm5lY3Qo
bV9hZGRyZXNzQmFyLCBTSUdOQUwocmV0dXJuUHJlc3NlZCgpKSwgU0xPVChjaGFuZ2VMb2NhdGlv
bigpKSk7CmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9xdC9Db29raWVNYW5hZ2VyLmNw
cCBiL1Rvb2xzL01pbmlCcm93c2VyL3F0L0Nvb2tpZU1hbmFnZXIuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM0MDE2NzAKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9N
aW5pQnJvd3Nlci9xdC9Db29raWVNYW5hZ2VyLmNwcApAQCAtMCwwICsxLDExOSBAQAorI2luY2x1
ZGUgIkNvb2tpZU1hbmFnZXIuaCIKKworI2luY2x1ZGUgInF3a2NvbnRleHQuaCIKKworI2luY2x1
ZGUgPFFEZWJ1Zz4KKyNpbmNsdWRlIDxRRGlyPgorI2luY2x1ZGUgPFFGaWxlPgorI2luY2x1ZGUg
PFFUaW1lckV2ZW50PgorCitRV0tDb250ZXh0KiBkZWZhdWx0V0tDb250ZXh0KCk7CisKK0Nvb2tp
ZU1hbmFnZXIqIENvb2tpZU1hbmFnZXI6OnNoYXJlZCgpCit7CisgICAgc3RhdGljIENvb2tpZU1h
bmFnZXIqIHJlc3VsdCA9IG5ldyBDb29raWVNYW5hZ2VyKCk7CisgICAgcmV0dXJuIHJlc3VsdDsK
K30KKwordm9pZCBDb29raWVNYW5hZ2VyOjpkdW1wQ29va2llTGlzdCgpCit7CisgICAgbV9kdW1w
Q29va2llcyA9IHRydWU7CisgICAgZ2V0Q29va2llTGlzdCgpOworfQorCit2b2lkIENvb2tpZU1h
bmFnZXI6OnNhdmVDb29raWVMaXN0KCkKK3sKKyAgICBtX3NhdmVDb29raWVzID0gdHJ1ZTsKKyAg
ICBnZXRDb29raWVMaXN0KCk7Cit9CisKK3ZvaWQgQ29va2llTWFuYWdlcjo6c2F2ZUFuZFF1aXQo
KQoreworICAgIG1fc2F2ZUNvb2tpZXMgPSB0cnVlOworICAgIG1fcXVpdEFwcGxpY2F0aW9uID0g
dHJ1ZTsKKyAgICBnZXRDb29raWVMaXN0KCk7Cit9CisKK3ZvaWQgQ29va2llTWFuYWdlcjo6Z2V0
Q29va2llTGlzdCgpCit7CisgICAgY29ubmVjdChkZWZhdWx0V0tDb250ZXh0KCksIFNJR05BTChk
aWRSZWNlaXZlQ29va2llTGlzdChRTGlzdDxRTmV0d29ya0Nvb2tpZT4pKSwgdGhpcywgU0xPVChk
aWRSZWNlaXZlQ29va2llTGlzdChRTGlzdDxRTmV0d29ya0Nvb2tpZT4pKSk7CisgICAgZGVmYXVs
dFdLQ29udGV4dCgpLT5nZXRDb29raWVMaXN0KCk7Cit9CisKKwordm9pZCBDb29raWVNYW5hZ2Vy
OjpkaWRSZWNlaXZlQ29va2llTGlzdChjb25zdCBRTGlzdDxRTmV0d29ya0Nvb2tpZT4mIGNvb2tp
ZXMpCit7CisgICAgZGlzY29ubmVjdChkZWZhdWx0V0tDb250ZXh0KCksIDAsIHRoaXMsIDApOwor
CisgICAgaWYgKG1fc2F2ZUNvb2tpZXMpCisgICAgICAgIHdyaXRlQ29va2llcyhjb29raWVzKTsK
KworICAgIGlmIChtX2R1bXBDb29raWVzKSB7CisgICAgICAgIHFEZWJ1ZygpIDw8ICItLSBDb29r
aWVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLSI7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY29va2llcy5z
aXplKCk7ICsraSkKKyAgICAgICAgICAgIHFEZWJ1ZygpIDw8IGNvb2tpZXNbaV0udG9SYXdGb3Jt
KCk7CisgICAgICAgIHFEZWJ1ZygpIDw8ICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSI7CisgICAg
fQorCisgICAgaWYgKG1fcXVpdEFwcGxpY2F0aW9uKQorICAgICAgICBlbWl0IHF1aXQoKTsKKwor
ICAgIG1fc2F2ZUNvb2tpZXMgPSBmYWxzZTsKKyAgICBtX2R1bXBDb29raWVzID0gZmFsc2U7Cit9
CisKK3ZvaWQgQ29va2llTWFuYWdlcjo6d3JpdGVDb29raWVzKGNvbnN0IFFMaXN0PFFOZXR3b3Jr
Q29va2llPiYgY29va2llcykKK3sKKyAgICBRRGlyIGRpciA9IFFEaXI6OmhvbWUoKTsKKyAgICBk
aXIubWtwYXRoKCIuUXRXZWJLaXQvTWluaUJyb3dzZXIiKTsKKyAgICBRRmlsZSBmaWxlKGRpci5h
YnNvbHV0ZUZpbGVQYXRoKCIuUXRXZWJLaXQvTWluaUJyb3dzZXIvY29va2llcyIpKTsKKyAgICBp
ZiAoIWZpbGUub3BlbihRSU9EZXZpY2U6OldyaXRlT25seSkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGZpbGUucmVzaXplKDApOworICAgIFFEYXRhU3RyZWFtIHN0cmVhbSgmZmlsZSk7CisKKyAg
ICBxdWludDMyIGNvdW50ID0gY29va2llcy5zaXplKCk7CisgICAgc3RyZWFtIDw8IGNvdW50Owor
CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb29raWVzLnNpemUoKTsgKytpKQorICAgICAgICBz
dHJlYW0gPDwgY29va2llc1tpXS50b1Jhd0Zvcm0oKTsKK30KKwordm9pZCBDb29raWVNYW5hZ2Vy
OjpyZWFkQ29va2llcyhRTGlzdDxRTmV0d29ya0Nvb2tpZT4mIGNvb2tpZXMpCit7CisgICAgUURp
ciBkaXIgPSBRRGlyOjpob21lKCk7CisgICAgUUZpbGUgZmlsZShkaXIuYWJzb2x1dGVGaWxlUGF0
aCgiLlF0V2ViS2l0L01pbmlCcm93c2VyL2Nvb2tpZXMiKSk7CisgICAgaWYgKCFmaWxlLm9wZW4o
UUlPRGV2aWNlOjpSZWFkT25seSkpCisgICAgICAgIHJldHVybjsKKworICAgIFFEYXRhU3RyZWFt
IHN0cmVhbSgmZmlsZSk7CisKKyAgICBxdWludDMyIGNvdW50OworICAgIHN0cmVhbSA+PiBjb3Vu
dDsKKyAgICBmb3IgKDsgIXN0cmVhbS5hdEVuZCgpICYmIGNvdW50ID4gMDsgLS1jb3VudCkgewor
ICAgICAgICBRQnl0ZUFycmF5IHZhbHVlOworICAgICAgICBzdHJlYW0gPj4gdmFsdWU7CisgICAg
ICAgIGNvb2tpZXMuYXBwZW5kKFFOZXR3b3JrQ29va2llOjpwYXJzZUNvb2tpZXModmFsdWUpKTsK
KyAgICB9Cit9CisKK0Nvb2tpZU1hbmFnZXI6OkNvb2tpZU1hbmFnZXIoKQorICAgIDogbV9zYXZl
Q29va2llcyhmYWxzZSkKKyAgICAsIG1fZHVtcENvb2tpZXMoZmFsc2UpCisgICAgLCBtX3F1aXRB
cHBsaWNhdGlvbihmYWxzZSkKK3sKKyAgICBRTGlzdDxRTmV0d29ya0Nvb2tpZT4gY29va2llczsK
KyAgICByZWFkQ29va2llcyhjb29raWVzKTsKKyAgICBkZWZhdWx0V0tDb250ZXh0KCktPnJlc2V0
Q29va2llcyhjb29raWVzKTsKKworICAgIG1fc2F2ZVRpbWVyLnN0YXJ0KDMwMDAwLCB0aGlzKTsK
K30KKwordm9pZCBDb29raWVNYW5hZ2VyOjp0aW1lckV2ZW50KFFUaW1lckV2ZW50KiBldmVudCkK
K3sKKyAgICBpZiAoZXZlbnQtPnRpbWVySWQoKSA9PSBtX3NhdmVUaW1lci50aW1lcklkKCkpCisg
ICAgICAgIHNhdmVDb29raWVMaXN0KCk7CisKKyAgICBRT2JqZWN0Ojp0aW1lckV2ZW50KGV2ZW50
KTsKK30KZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL3F0L0Nvb2tpZU1hbmFnZXIuaCBi
L1Rvb2xzL01pbmlCcm93c2VyL3F0L0Nvb2tpZU1hbmFnZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi5hOWY3MWZkCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvTWluaUJy
b3dzZXIvcXQvQ29va2llTWFuYWdlci5oCkBAIC0wLDAgKzEsNDIgQEAKKyNpZm5kZWYgQ09PS0lF
TUFOQUdFUl9ICisjZGVmaW5lIENPT0tJRU1BTkFHRVJfSAorCisjaW5jbHVkZSA8UUJhc2ljVGlt
ZXI+CisjaW5jbHVkZSA8UU9iamVjdD4KKyNpbmNsdWRlIDxRTmV0d29ya0Nvb2tpZT4KKworY2xh
c3MgQ29va2llTWFuYWdlciA6IHB1YmxpYyBRT2JqZWN0Cit7CisgICAgUV9PQkpFQ1QKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgQ29va2llTWFuYWdlciogc2hhcmVkKCk7CisKKworcHVibGljIHNsb3Rz
OgorICAgIHZvaWQgZHVtcENvb2tpZUxpc3QoKTsKKyAgICB2b2lkIHNhdmVDb29raWVMaXN0KCk7
CisgICAgdm9pZCBzYXZlQW5kUXVpdCgpOworCitzaWduYWxzOgorICAgIHZvaWQgcXVpdCgpOwor
Citwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB2b2lkIHRpbWVyRXZlbnQoUVRpbWVyRXZlbnQqIGV2
ZW50KTsKKworcHJpdmF0ZSBzbG90czoKKyAgICB2b2lkIGRpZFJlY2VpdmVDb29raWVMaXN0KGNv
bnN0IFFMaXN0PFFOZXR3b3JrQ29va2llPiYpOworCitwcml2YXRlOgorICAgIENvb2tpZU1hbmFn
ZXIoKTsKKyAgICB2b2lkIHdyaXRlQ29va2llcyhjb25zdCBRTGlzdDxRTmV0d29ya0Nvb2tpZT4m
KTsKKyAgICB2b2lkIHJlYWRDb29raWVzKFFMaXN0PFFOZXR3b3JrQ29va2llPiYpOworICAgIHZv
aWQgZ2V0Q29va2llTGlzdCgpOworCisgICAgYm9vbCBtX3NhdmVDb29raWVzOworICAgIGJvb2wg
bV9kdW1wQ29va2llczsKKyAgICBib29sIG1fcXVpdEFwcGxpY2F0aW9uOworCisgICAgUUJhc2lj
VGltZXIgbV9zYXZlVGltZXI7Cit9OworCisjZW5kaWYgLy8gQ09PS0lFTUFOQUdFUl9ICmRpZmYg
LS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9xdC9NaW5pQnJvd3Nlci5wcm8gYi9Ub29scy9NaW5p
QnJvd3Nlci9xdC9NaW5pQnJvd3Nlci5wcm8KaW5kZXggMzk4MTUxMS4uZTcwZWQ2YyAxMDA2NDQK
LS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvcXQvTWluaUJyb3dzZXIucHJvCisrKyBiL1Rvb2xzL01p
bmlCcm93c2VyL3F0L01pbmlCcm93c2VyLnBybwpAQCAtOCw2ICs4LDcgQEAgU09VUkNFUyArPSBc
CiAgICAgTWluaUJyb3dzZXJBcHBsaWNhdGlvbi5jcHAgXAogICAgIFVybExvYWRlci5jcHAgXAog
ICAgIHV0aWxzLmNwcCBcCisgICAgQ29va2llTWFuYWdlci5jcHAgXAogCiBIRUFERVJTICs9IFwK
ICAgICBCcm93c2VyVmlldy5oIFwKQEAgLTE1LDYgKzE2LDcgQEAgSEVBREVSUyArPSBcCiAgICAg
TWluaUJyb3dzZXJBcHBsaWNhdGlvbi5oIFwKICAgICBVcmxMb2FkZXIuaCBcCiAgICAgdXRpbHMu
aCBcCisgICAgQ29va2llTWFuYWdlci5oIFwKIAogaXNFbXB0eShPVVRQVVRfRElSKTogT1VUUFVU
X0RJUiA9IC4uLy4uLy4uCiBpbmNsdWRlKC4uLy4uLy4uL1NvdXJjZS9XZWJLaXQucHJpKQpkaWZm
IC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvcXQvTWluaUJyb3dzZXJBcHBsaWNhdGlvbi5jcHAg
Yi9Ub29scy9NaW5pQnJvd3Nlci9xdC9NaW5pQnJvd3NlckFwcGxpY2F0aW9uLmNwcAppbmRleCBj
ZTdlMmI0Li4xY2U2MWZlIDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9xdC9NaW5pQnJv
d3NlckFwcGxpY2F0aW9uLmNwcAorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9xdC9NaW5pQnJvd3Nl
ckFwcGxpY2F0aW9uLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiTWluaUJyb3dz
ZXJBcHBsaWNhdGlvbi5oIgogCisjaW5jbHVkZSAiQ29va2llTWFuYWdlci5oIgogI2luY2x1ZGUg
InV0aWxzLmgiCiAjaW5jbHVkZSA8UVJlZ0V4cD4KICNpbmNsdWRlIDxRRXZlbnQ+CkBAIC03Myw2
ICs3NCwxMCBAQCBNaW5pQnJvd3NlckFwcGxpY2F0aW9uOjpNaW5pQnJvd3NlckFwcGxpY2F0aW9u
KGludCYgYXJnYywgY2hhcioqIGFyZ3YpCiAgICAgc2V0T3JnYW5pemF0aW9uTmFtZSgiTm9raWEi
KTsKICAgICBzZXRBcHBsaWNhdGlvbk5hbWUoIlF0TWluaUJyb3dzZXIiKTsKICAgICBzZXRBcHBs
aWNhdGlvblZlcnNpb24oIjAuMSIpOworICAgIHNldFF1aXRPbkxhc3RXaW5kb3dDbG9zZWQoZmFs
c2UpOworCisgICAgY29ubmVjdCh0aGlzLCBTSUdOQUwobGFzdFdpbmRvd0Nsb3NlZCgpKSwgQ29v
a2llTWFuYWdlcjo6c2hhcmVkKCksIFNMT1Qoc2F2ZUFuZFF1aXQoKSkpOworICAgIGNvbm5lY3Qo
Q29va2llTWFuYWdlcjo6c2hhcmVkKCksIFNJR05BTChxdWl0KCkpLCB0aGlzLCBTTE9UKHF1aXQo
KSkpOwogCiAgICAgaGFuZGxlVXNlck9wdGlvbnMoKTsKIH0KLS0gCjEuNy40LjEKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106333</attachid>
            <date>2011-09-05 06:38:38 -0700</date>
            <delta_ts>2011-09-05 15:05:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65309-20110905103703.patch</filename>
            <type>text/plain</type>
            <size>17228</size>
            <attacher name="Alexis Menard (darktears)">menard</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk0NTI3KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDAgQEAKKzIwMTEtMDktMDUgIEFsZXhpcyBN
ZW5hcmQgIDxhbGV4aXMubWVuYXJkQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgW1F0XSBbV0sy
XSBJbXBsZW1lbnQgYSBwZXJzaXN0ZW50IGNvb2tpZSBzdG9yYWdlLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjUzMDkKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgYSBjb29raWUgc3RvcmFn
ZSBmb3IgdGhlIFF0IHBvcnQgb24gV2ViS2l0Mi4KKyAgICAgICAgVGhlIGltcGxlbWVudGF0aW9u
IGlzIHVzaW5nIGEgU1FMaXRlIGRhdGFiYXNlIHRvIHN0b3JlIHRoZSBjb29raWVzCisgICAgICAg
IGFuZCByZXN0b3JlIHRoZW0uIEl0IHVzZXMgYSBzdGF0aWMgb2JqZWN0IGFzIENvb2tpZUphciBp
cyBub3QgYW4KKyAgICAgICAgb2JqZWN0IGJ1dCBhIHNldCBvZiBnbG9iYWwgZnVuY3Rpb25zLiBU
aGUgYWN0dWFsIHNhdmluZy9yZXN0b3JpbmcgaXMgb24KKyAgICAgICAgdGhlIFdlYlByb2Nlc3Mg
c2lkZSB3aGVyZSBvdXIgbmV0d29yayBzdGFjayBsaXZlcy4KKworICAgICAgICAqIFdlYkNvcmUu
cHJpOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIHBsYXRmb3JtL0Nvb2tpZS5o
OgorICAgICAgICAoV2ViQ29yZTo6Q29va2llOjpDb29raWUpOgorICAgICAgICAqIHBsYXRmb3Jt
L3F0L0Nvb2tpZUphclF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldEhvc3RuYW1lc1dpdGhD
b29raWVzKToKKyAgICAgICAgKFdlYkNvcmU6OmRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpkZWxldGVBbGxDb29raWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNv
b2tpZTo6Q29va2llKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZTo6b3BlcmF0b3IgUU5ldHdv
cmtDb29raWUpOgorICAgICAgICAoV2ViQ29yZTo6c2hhcmVkQ29va2llSmFyKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYktpdDJTaGFyZWRDb29raWVKYXI6OnNoYXJlZCk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJLaXQyU2hhcmVkQ29va2llSmFyOjpkZXN0cm95KToKKyAgICAgICAgKFdlYkNvcmU6
OldlYktpdDJTaGFyZWRDb29raWVKYXI6OmdldEhvc3RuYW1lc1dpdGhDb29raWVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYktpdDJTaGFyZWRDb29raWVKYXI6OmRlbGV0ZUNvb2tpZXNGb3JIb3N0
bmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXQyU2hhcmVkQ29va2llSmFyOjpkZWxldGVB
bGxDb29raWVzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdDJTaGFyZWRDb29raWVKYXI6Oldl
YktpdDJTaGFyZWRDb29raWVKYXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0MlNoYXJlZENv
b2tpZUphcjo6fldlYktpdDJTaGFyZWRDb29raWVKYXIpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
S2l0MlNoYXJlZENvb2tpZUphcjo6c2V0Q29va2llc0Zyb21VcmwpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViS2l0MlNoYXJlZENvb2tpZUphcjo6ZW5zdXJlRGF0YWJhc2VUYWJsZSk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJLaXQyU2hhcmVkQ29va2llSmFyOjpzZXRTdG9yYWdlUGF0aCk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJLaXQyU2hhcmVkQ29va2llSmFyOjpsb2FkQ29va2llcyk6CisgICAg
ICAgICogcGxhdGZvcm0vcXQvQ29va2llSmFyUXQuaDogQWRkZWQuCisKIDIwMTEtMDktMDUgIFNo
ZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2
aWV3ZWQsIHJvbGxpbmcgb3V0IHI5NDUyNS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
cHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJpCShyZXZpc2lvbiA5
NDUyNykKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJpCSh3b3JraW5nIGNvcHkpCkBAIC02
LDcgKzYsNyBAQCBpbmNsdWRlKGZlYXR1cmVzLnByaSkKICMgV2UgZW5hYmxlIFRleHR1cmVNYXBw
ZXIgYnkgZGVmYXVsdDsgcmVtb3ZlIHRoaXMgbGluZSB0byBlbmFibGUgR3JhcGhpY3NMYXllclF0
LgogQ09ORklHICs9IHRleG1hcAogCi1RVCAqPSBuZXR3b3JrCitRVCAqPSBuZXR3b3JrIHNxbAog
CiBTT1VSQ0VfRElSID0gJCRyZXBsYWNlKFBXRCwgL1dlYkNvcmUsICIiKQogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnBybwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnBybwkocmV2aXNpb24gOTQ1MjcpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybwko
d29ya2luZyBjb3B5KQpAQCAtMTk0MSw2ICsxOTQxLDcgQEAgSEVBREVSUyArPSBcCiAgICAgcGxh
dGZvcm0vQXN5bmNGaWxlU3RyZWFtLmggXAogICAgIHBsYXRmb3JtL0NvbnRlbnRUeXBlLmggXAog
ICAgIHBsYXRmb3JtL0NvbnRleHRNZW51LmggXAorICAgIHBsYXRmb3JtL0Nvb2tpZS5oIFwKICAg
ICBwbGF0Zm9ybS9Dcm9zc1RocmVhZENvcGllci5oIFwKICAgICBwbGF0Zm9ybS9EYXRlQ29tcG9u
ZW50cy5oIFwKICAgICBwbGF0Zm9ybS9EZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3kuaCBcCkBA
IC0yMDg2LDYgKzIwODcsNyBAQCBIRUFERVJTICs9IFwKICAgICBwbGF0Zm9ybS9QbGF0Zm9ybVRv
dWNoUG9pbnQuaCBcCiAgICAgcGxhdGZvcm0vUG9wdXBNZW51LmggXAogICAgIHBsYXRmb3JtL3F0
L0NsaXBib2FyZFF0LmggXAorICAgIHBsYXRmb3JtL3F0L0Nvb2tpZUphclF0LmggXAogICAgIHBs
YXRmb3JtL3F0L1FXZWJQYWdlQ2xpZW50LmggXAogICAgIHBsYXRmb3JtL3F0L1F0U3R5bGVPcHRp
b25XZWJDb21ib0JveC5oIFwKICAgICBwbGF0Zm9ybS9xdC9SZW5kZXJUaGVtZVF0LmggXApJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29va2llLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vQ29va2llLmgJKHJldmlzaW9uIDk0NTI3KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vQ29va2llLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDEyICsyOSwyMyBA
QAogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
SGFzaC5oPgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7CisjaWYgUExBVEZPUk0oUVQpCitRVF9CRUdJ
Tl9OQU1FU1BBQ0UKK2NsYXNzIFFOZXR3b3JrQ29va2llOworUVRfRU5EX05BTUVTUEFDRQorI2Vu
ZGlmCiAKLSAgICAvLyBUaGlzIHN0cnVjdCBpcyBjdXJyZW50bHkgb25seSB1c2VkIHRvIHByb3Zp
ZGUgbW9yZSBjb29raWVzIGluZm9ybWF0aW9uCi0gICAgLy8gdG8gdGhlIFdlYiBJbnNwZWN0b3Iu
CituYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBzdHJ1Y3QgQ29va2llIHsKKyAgICAgICAgQ29v
a2llKCkKKyAgICAgICAgICAgIDogZXhwaXJlcygwKQorICAgICAgICAgICAgLCBodHRwT25seShm
YWxzZSkKKyAgICAgICAgICAgICwgc2VjdXJlKGZhbHNlKQorICAgICAgICAgICAgLCBzZXNzaW9u
KGZhbHNlKQorICAgICAgICB7CisgICAgICAgIH0KKwogICAgICAgICBDb29raWUoY29uc3QgU3Ry
aW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlLCBjb25zdCBTdHJpbmcmIGRvbWFpbiwKICAg
ICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIHBhdGgsIGRvdWJsZSBleHBpcmVzLCBib29sIGh0
dHBPbmx5LCBib29sIHNlY3VyZSwKICAgICAgICAgICAgICAgICBib29sIHNlc3Npb24pCkBAIC01
Nyw2ICs2OCwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgaHR0cE9ubHk7
CiAgICAgICAgIGJvb2wgc2VjdXJlOwogICAgICAgICBib29sIHNlc3Npb247CisKKyNpZiBQTEFU
Rk9STShRVCkKKyAgICAgICAgQ29va2llKGNvbnN0IFFOZXR3b3JrQ29va2llJik7CisgICAgICAg
IG9wZXJhdG9yIFFOZXR3b3JrQ29va2llKCkgY29uc3Q7CisjZW5kaWYKICAgICB9OwogCiAgICAg
c3RydWN0IENvb2tpZUhhc2ggewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvQ29v
a2llSmFyUXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L0Nv
b2tpZUphclF0LmNwcAkocmV2aXNpb24gOTQ1MjcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9xdC9Db29raWVKYXJRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgog
ICogQ29weXJpZ2h0IChDKSAyMDA2IEdlb3JnZSBTdGFpa29zIDxzdGFpa29zQGtkZS5vcmc+Cisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRp
YXJ5KC1pZXMpCiAgKgogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCkBAIC0yNiw2ICsyNyw4
IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNvb2tpZUphclF0Lmgi
CisKICNpbmNsdWRlICJDb29raWVKYXIuaCIKIAogI2luY2x1ZGUgIkNvb2tpZS5oIgpAQCAtMzgs
MTIgKzQxLDE3IEBACiAjaW5jbHVkZSAicXdlYmZyYW1lLmgiCiAjaW5jbHVkZSAicXdlYnBhZ2Uu
aCIKICNpbmNsdWRlICJxd2Vic2V0dGluZ3MuaCIKKyNpbmNsdWRlIDxRRGF0ZVRpbWU+CisjaW5j
bHVkZSA8UURpcj4KICNpbmNsdWRlIDxRTmV0d29ya0FjY2Vzc01hbmFnZXI+CiAjaW5jbHVkZSA8
UU5ldHdvcmtDb29raWU+CisjaW5jbHVkZSA8UVNxbFF1ZXJ5PgogI2luY2x1ZGUgPFFTdHJpbmdM
aXN0PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3N0YXRpYyBXZWJLaXQyU2hhcmVkQ29va2ll
SmFyKiB3ZWJLaXQyU2hhcmVkQ29va2llSmFyID0gMDsKKwogc3RhdGljIFFOZXR3b3JrQ29va2ll
SmFyICpjb29raWVKYXIoY29uc3QgRG9jdW1lbnQgKmRvY3VtZW50KQogewogICAgIGlmICghZG9j
dW1lbnQpCkBAIC0xNDQsMTkgKzE1MiwxNjEgQEAgdm9pZCBkZWxldGVDb29raWUoY29uc3QgRG9j
dW1lbnQqLCBjb25zdAogCiB2b2lkIGdldEhvc3RuYW1lc1dpdGhDb29raWVzKEhhc2hTZXQ8U3Ry
aW5nPiYgaG9zdG5hbWVzKQogewotICAgIC8vIEZJWE1FOiBOb3QgeWV0IGltcGxlbWVudGVkCisg
ICAgV2ViS2l0MlNoYXJlZENvb2tpZUphcjo6c2hhcmVkKCktPmdldEhvc3RuYW1lc1dpdGhDb29r
aWVzKGhvc3RuYW1lcyk7CiB9CiAKIHZvaWQgZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKGNvbnN0
IFN0cmluZyYgaG9zdG5hbWUpCiB7Ci0gICAgLy8gRklYTUU6IE5vdCB5ZXQgaW1wbGVtZW50ZWQK
KyAgICBXZWJLaXQyU2hhcmVkQ29va2llSmFyOjpzaGFyZWQoKS0+ZGVsZXRlQ29va2llc0Zvckhv
c3RuYW1lKGhvc3RuYW1lKTsKIH0KIAogdm9pZCBkZWxldGVBbGxDb29raWVzKCkKIHsKLSAgICAv
LyBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRlZAorICAgIFdlYktpdDJTaGFyZWRDb29raWVKYXI6
OnNoYXJlZCgpLT5kZWxldGVBbGxDb29raWVzKCk7Cit9CisKK0Nvb2tpZTo6Q29va2llKGNvbnN0
IFFOZXR3b3JrQ29va2llJiBjb29raWUpCisgICAgOiBuYW1lKGNvb2tpZS5uYW1lKCkuY29uc3RE
YXRhKCkpCisgICAgLCB2YWx1ZShjb29raWUudmFsdWUoKS5jb25zdERhdGEoKSkKKyAgICAsIGRv
bWFpbihjb29raWUuZG9tYWluKCkpCisgICAgLCBwYXRoKGNvb2tpZS5wYXRoKCkpCisgICAgLCBl
eHBpcmVzKGNvb2tpZS5leHBpcmF0aW9uRGF0ZSgpLnRvTVNlY3NTaW5jZUVwb2NoKCkpCisgICAg
LCBodHRwT25seShjb29raWUuaXNIdHRwT25seSgpKQorICAgICwgc2VjdXJlKGNvb2tpZS5pc1Nl
Y3VyZSgpKQorICAgICwgc2Vzc2lvbihjb29raWUuaXNTZXNzaW9uQ29va2llKCkpCit7Cit9CisK
K0Nvb2tpZTo6b3BlcmF0b3IgUU5ldHdvcmtDb29raWUoKSBjb25zdAoreworICAgIFFOZXR3b3Jr
Q29va2llIHJlc3VsdChRU3RyaW5nKG5hbWUpLnRvQXNjaWkoKSwgUVN0cmluZyh2YWx1ZSkudG9B
c2NpaSgpKTsKKyAgICByZXN1bHQuc2V0RG9tYWluKGRvbWFpbik7CisgICAgcmVzdWx0LnNldFBh
dGgocGF0aCk7CisgICAgaWYgKHNlc3Npb24pIHsKKyAgICAgICAgUURhdGVUaW1lIGV4cGlyYXRp
b25EYXRlOworICAgICAgICBleHBpcmF0aW9uRGF0ZS5zZXRNU2Vjc1NpbmNlRXBvY2goZXhwaXJl
cyk7CisgICAgICAgIHJlc3VsdC5zZXRFeHBpcmF0aW9uRGF0ZShleHBpcmF0aW9uRGF0ZSk7Cisg
ICAgfQorICAgIHJlc3VsdC5zZXRIdHRwT25seShodHRwT25seSk7CisgICAgcmVzdWx0LnNldFNl
Y3VyZShzZWN1cmUpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK1dlYktpdDJTaGFyZWRDb29r
aWVKYXIqIHNoYXJlZENvb2tpZUphcigpCit7CisgICAgcmV0dXJuIFdlYktpdDJTaGFyZWRDb29r
aWVKYXI6OnNoYXJlZCgpOworfQorCitXZWJLaXQyU2hhcmVkQ29va2llSmFyKiBXZWJLaXQyU2hh
cmVkQ29va2llSmFyOjpzaGFyZWQoKQoreworICAgIGlmICghd2ViS2l0MlNoYXJlZENvb2tpZUph
cikKKyAgICAgICAgd2ViS2l0MlNoYXJlZENvb2tpZUphciA9IG5ldyBXZWJLaXQyU2hhcmVkQ29v
a2llSmFyKCk7CisgICAgcmV0dXJuIHdlYktpdDJTaGFyZWRDb29raWVKYXI7Cit9CisKK3ZvaWQg
V2ViS2l0MlNoYXJlZENvb2tpZUphcjo6ZGVzdHJveSgpCit7CisgICAgZGVsZXRlIHdlYktpdDJT
aGFyZWRDb29raWVKYXI7CisgICAgd2ViS2l0MlNoYXJlZENvb2tpZUphciA9IDA7Cit9CisKK3Zv
aWQgV2ViS2l0MlNoYXJlZENvb2tpZUphcjo6Z2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoSGFzaFNl
dDxTdHJpbmc+JiBob3N0bmFtZXMpCit7CisgICAgUUxpc3Q8UU5ldHdvcmtDb29raWU+IGNvb2tp
ZXMgPSBhbGxDb29raWVzKCk7CisgICAgZm9yZWFjaCAoY29uc3QgUU5ldHdvcmtDb29raWUmIG5l
dHdvcmtDb29raWUsIGNvb2tpZXMpCisgICAgICAgIGhvc3RuYW1lcy5hZGQobmV0d29ya0Nvb2tp
ZS5kb21haW4oKSk7Cit9CisKK3ZvaWQgV2ViS2l0MlNoYXJlZENvb2tpZUphcjo6ZGVsZXRlQ29v
a2llc0Zvckhvc3RuYW1lKGNvbnN0IFFTdHJpbmcmIGhvc3RuYW1lKQoreworICAgIFFMaXN0PFFO
ZXR3b3JrQ29va2llPiBjb29raWVzID0gYWxsQ29va2llcygpOworICAgIFFMaXN0PFFOZXR3b3Jr
Q29va2llPjo6SXRlcmF0b3IgaXQgPSBjb29raWVzLmJlZ2luKCk7CisgICAgUUxpc3Q8UU5ldHdv
cmtDb29raWU+OjpJdGVyYXRvciBlbmQgPSBjb29raWVzLmVuZCgpOworICAgIFFTcWxRdWVyeSBz
cWxRdWVyeShtX2RhdGFiYXNlKTsKKyAgICBzcWxRdWVyeS5wcmVwYXJlKFFMYXRpbjFTdHJpbmco
IkRFTEVURSBGUk9NIGNvb2tpZXMgV0hFUkUgZG9tYWluPTpkb21haW52YWx1ZSIpKTsKKyAgICBz
cWxRdWVyeS5iaW5kVmFsdWUoUUxhdGluMVN0cmluZygiOmRvbWFpbnZhbHVlIiksIGhvc3RuYW1l
KTsKKyAgICBzcWxRdWVyeS5leGVjKCk7CisgICAgd2hpbGUgKGl0ICE9IGVuZCkgeworICAgICAg
ICBpZiAoaXQtPmRvbWFpbigpID09IGhvc3RuYW1lKQorICAgICAgICAgICAgaXQgPSBjb29raWVz
LmVyYXNlKGl0KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgaXQrKzsKKyAgICB9CisgICAg
c2V0QWxsQ29va2llcyhjb29raWVzKTsKK30KKwordm9pZCBXZWJLaXQyU2hhcmVkQ29va2llSmFy
OjpkZWxldGVBbGxDb29raWVzKCkKK3sKKyAgICBRU3FsUXVlcnkgc3FsUXVlcnkobV9kYXRhYmFz
ZSk7CisgICAgc3FsUXVlcnkucHJlcGFyZShRTGF0aW4xU3RyaW5nKCJERUxFVEUgKiBGUk9NIGNv
b2tpZXMiKSk7CisgICAgc3FsUXVlcnkuZXhlYygpOworICAgIHNldEFsbENvb2tpZXMoUUxpc3Q8
UU5ldHdvcmtDb29raWU+KCkpOworfQorCitXZWJLaXQyU2hhcmVkQ29va2llSmFyOjpXZWJLaXQy
U2hhcmVkQ29va2llSmFyKCkKK3sKKyAgICBtX2RhdGFiYXNlID0gUVNxbERhdGFiYXNlOjphZGRE
YXRhYmFzZShRTGF0aW4xU3RyaW5nKCJRU1FMSVRFIikpOworfQorCitXZWJLaXQyU2hhcmVkQ29v
a2llSmFyOjp+V2ViS2l0MlNoYXJlZENvb2tpZUphcigpCit7Cit9CisKK2Jvb2wgV2ViS2l0MlNo
YXJlZENvb2tpZUphcjo6c2V0Q29va2llc0Zyb21VcmwoY29uc3QgUUxpc3Q8UU5ldHdvcmtDb29r
aWU+JiBjb29raWVMaXN0LCBjb25zdCBRVXJsJiB1cmwpCit7CisgICAgYm9vbCBzdGF0dXMgPSBR
TmV0d29ya0Nvb2tpZUphcjo6c2V0Q29va2llc0Zyb21VcmwoY29va2llTGlzdCwgdXJsKTsKKyAg
ICBRU3FsUXVlcnkgc3FsUXVlcnkobV9kYXRhYmFzZSk7CisgICAgLy8gRGVsZXRlIG9sZCBjb29r
aWVzIGZvciB0aGlzIGRvbWFpbi4KKyAgICBzcWxRdWVyeS5wcmVwYXJlKFFMYXRpbjFTdHJpbmco
IkRFTEVURSBGUk9NIGNvb2tpZXMgV0hFUkUgZG9tYWluPTpkb21haW52YWx1ZSIpKTsKKyAgICBz
cWxRdWVyeS5iaW5kVmFsdWUoUUxhdGluMVN0cmluZygiOmRvbWFpbnZhbHVlIiksIHVybC5ob3N0
KCkpOworICAgIHNxbFF1ZXJ5LmV4ZWMoKTsKKworICAgIHNxbFF1ZXJ5LnByZXBhcmUoUUxhdGlu
MVN0cmluZygiSU5TRVJUIElOVE8gY29va2llcyAoY29va2llLCBkb21haW4pIFZBTFVFUyAoOmNv
b2tpZXZhbHVlLCA6ZG9tYWludmFsdWUpIikpOworICAgIGZvcmVhY2ggKGNvbnN0IFFOZXR3b3Jr
Q29va2llICZjb29raWUsIGNvb2tpZXNGb3JVcmwodXJsKSkgeworICAgICAgICBpZiAoIWNvb2tp
ZS5pc1Nlc3Npb25Db29raWUoKSkgeworICAgICAgICAgICAgc3FsUXVlcnkuYmluZFZhbHVlKFFM
YXRpbjFTdHJpbmcoIjpjb29raWV2YWx1ZSIpLCBjb29raWUudG9SYXdGb3JtKCkpOworICAgICAg
ICAgICAgc3FsUXVlcnkuYmluZFZhbHVlKFFMYXRpbjFTdHJpbmcoIjpkb21haW52YWx1ZSIpLCB1
cmwuaG9zdCgpKTsKKyAgICAgICAgICAgIHNxbFF1ZXJ5LmV4ZWMoKTsKKyAgICAgICAgfQorICAg
IH0KKyAgICByZXR1cm4gc3RhdHVzOworfQorCit2b2lkIFdlYktpdDJTaGFyZWRDb29raWVKYXI6
OmVuc3VyZURhdGFiYXNlVGFibGUoKQoreworICAgIGlmICghbV9kYXRhYmFzZS5vcGVuKCkpIHsK
KyAgICAgICAgcVdhcm5pbmcoIkNhbid0IG9wZW4gY29va2llIGRhdGFiYXNlIik7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisgICAgUVNxbFF1ZXJ5IHNxbFF1ZXJ5KG1fZGF0YWJhc2UpOworICAg
IHNxbFF1ZXJ5LnByZXBhcmUoUUxhdGluMVN0cmluZygiQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElT
VFMgY29va2llcyAoaWQgSU5URUdFUiBQUklNQVJZIEtFWSBBVVRPSU5DUkVNRU5ULCIKKyAgICAg
ICAgICAgICAgICAgICAgICAgImNvb2tpZSBCTE9CLCBkb21haW4gVkFSQ0hBUik7IikpOworICAg
IHNxbFF1ZXJ5LmV4ZWMoKTsKIH0KIAordm9pZCBXZWJLaXQyU2hhcmVkQ29va2llSmFyOjpzZXRT
dG9yYWdlUGF0aChjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgY29uc3QgUVN0cmluZyBkYXRh
YmFzZVBhdGggPSBwYXRoOworICAgIFFEaXIoKS5ta3BhdGgoZGF0YWJhc2VQYXRoICsgUUxhdGlu
MVN0cmluZygiLlF0V2ViS2l0LyIpKTsKKyAgICBjb25zdCBRU3RyaW5nIGRhdGFCYXNlTmFtZSA9
IGRhdGFiYXNlUGF0aCArIFFMYXRpbjFTdHJpbmcoIi5RdFdlYktpdC9jb29raWVzLmRiIik7Cisg
ICAgbV9kYXRhYmFzZS5zZXREYXRhYmFzZU5hbWUoZGF0YUJhc2VOYW1lKTsKKyAgICBlbnN1cmVE
YXRhYmFzZVRhYmxlKCk7CisgICAgbG9hZENvb2tpZXMoKTsKK30KKwordm9pZCBXZWJLaXQyU2hh
cmVkQ29va2llSmFyOjpsb2FkQ29va2llcygpCit7CisgICAgUUxpc3Q8UU5ldHdvcmtDb29raWU+
IGNvb2tpZXM7CisgICAgUVNxbFF1ZXJ5IHNxbFF1ZXJ5KG1fZGF0YWJhc2UpOworICAgIHNxbFF1
ZXJ5LnByZXBhcmUoUUxhdGluMVN0cmluZygiU0VMRUNUIGNvb2tpZSBGUk9NIGNvb2tpZXMiKSk7
CisgICAgc3FsUXVlcnkuZXhlYygpOworICAgIHdoaWxlIChzcWxRdWVyeS5uZXh0KCkpCisgICAg
ICAgIGNvb2tpZXMuYXBwZW5kKFFOZXR3b3JrQ29va2llOjpwYXJzZUNvb2tpZXMoc3FsUXVlcnku
dmFsdWUoMCkudG9CeXRlQXJyYXkoKSkpOworICAgIHNldEFsbENvb2tpZXMoY29va2llcyk7Cit9
CisKKyNpbmNsdWRlICJtb2NfQ29va2llSmFyUXQuY3BwIgorCiB9CiAKIC8vIHZpbTogdHM9NCBz
dz00IGV0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9Db29raWVKYXJRdC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L0Nvb2tpZUphclF0LmgJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9Db29raWVKYXJRdC5oCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIE5v
a2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICoKKyAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
KyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2lmbmRlZiBD
b29raWVKYXJRdF9oCisjZGVmaW5lIENvb2tpZUphclF0X2gKKworI2luY2x1ZGUgPFF0Q29yZS9R
T2JqZWN0PgorI2luY2x1ZGUgPFF0TmV0d29yay9RTmV0d29ya0Nvb2tpZUphcj4KKyNpbmNsdWRl
IDxRdFNxbC9RU3FsRGF0YWJhc2U+CisKKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IFdlYktpdDJTaGFyZWRDb29raWVKYXIgOiBwdWJsaWMgUU5ldHdvcmtDb29raWVKYXIgeworICAg
IFFfT0JKRUNUCitwdWJsaWM6CisgICAgc3RhdGljIFdlYktpdDJTaGFyZWRDb29raWVKYXIqIHNo
YXJlZCgpOworICAgIHZvaWQgZGVzdHJveSgpOworCisgICAgdm9pZCBnZXRIb3N0bmFtZXNXaXRo
Q29va2llcyhIYXNoU2V0PFN0cmluZz4mKTsKKyAgICB2b2lkIGRlbGV0ZUNvb2tpZXNGb3JIb3N0
bmFtZShjb25zdCBRU3RyaW5nJik7CisgICAgdm9pZCBkZWxldGVBbGxDb29raWVzKCk7CisgICAg
dm9pZCBzZXRTdG9yYWdlUGF0aChjb25zdCBTdHJpbmcmKTsKKyAgICBib29sIHNldENvb2tpZXNG
cm9tVXJsKGNvbnN0IFFMaXN0PFFOZXR3b3JrQ29va2llPiYsIGNvbnN0IFFVcmwmKTsKKyAgICB2
b2lkIGxvYWRDb29raWVzKCk7CisKK3ByaXZhdGU6CisgICAgV2ViS2l0MlNoYXJlZENvb2tpZUph
cigpOworICAgIH5XZWJLaXQyU2hhcmVkQ29va2llSmFyKCk7CisgICAgdm9pZCBlbnN1cmVEYXRh
YmFzZVRhYmxlKCk7CisKKyAgICBRU3FsRGF0YWJhc2UgbV9kYXRhYmFzZTsKK307CisKK1dlYktp
dDJTaGFyZWRDb29raWVKYXIqIHNoYXJlZENvb2tpZUphcigpOworfQorCisjZW5kaWYKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cJKHJldmlzaW9uIDk0NTI3KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTEtMDktMDUgIEFsZXhpcyBNZW5hcmQg
IDxhbGV4aXMubWVuYXJkQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgW1F0XSBbV0syXSBJbXBs
ZW1lbnQgYSBwZXJzaXN0ZW50IGNvb2tpZSBzdG9yYWdlLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjUzMDkKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgcGFyYW1ldGVyIHRvIHRoZSBXZWJQcm9jZXNz
IGNyZWF0aW9uIHRvIHNwZWNpZnkgd2hlcmUgY29va2llcyBzaG91bGQgYmUgc2F2ZWQuCisgICAg
ICAgIEl0IGFsc28gdXNlIHRoZSBuZXcgY29va2llIHN0b3JhZ2UgaW1wbGVtZW50YXRpb24gYW5k
IHNldCBpdCB0byBvdXIgbmV0d29yayBzdGFjaworICAgICAgICBzbyBjb29raWVzIGFyZSB1c2Vk
IHdoZW4gdXNpbmcgaXQuCisKKyAgICAgICAgKiBTaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnM6OmVuY29kZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnM6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvV2ViQ29udGV4dFF0LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViQ29udGV4dDo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2Vzcyk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9xdC9XZWJQcm9jZXNzUXQuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzczo6cGxhdGZvcm1UZXJtaW5hdGUpOgorCiAyMDExLTA5LTA1ICBCYWxhenMg
S2VsZW1lbiAgPGtiYWxhenNAd2Via2l0Lm9yZz4KIAogICAgICAgICBbUXRdW1dLMl0gQWRkIHBp
eGVsIHRlc3Qgc3VwcG9ydApJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAkocmV2aXNpb24gOTQ1MjcpCisrKyBT
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTkxLDYgKzkxLDkgQEAgdm9pZCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzOjplbmNvZAogICAgICAgICBDb3JlSVBDOjplbmNvZGUoZW5jb2Rlciwgc3RvcmFnZVNl
c3Npb24pOwogI2VuZGlmIC8vIFVTRShDRlVSTFNUT1JBR0VTRVNTSU9OUykKICNlbmRpZgorI2lm
IFBMQVRGT1JNKFFUKQorICAgIGVuY29kZXItPmVuY29kZShjb29raWVTdG9yYWdlRGlyZWN0b3J5
KTsKKyNlbmRpZgogfQogCiBib29sIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29k
ZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFdlYlByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMmIHBhcmFtZXRlcnMpCkBAIC0xNzIsNiArMTc1LDExIEBAIGJvb2wgV2ViUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2QKICNlbmRpZiAvLyBVU0UoQ0ZVUkxTVE9SQUdFU0VT
U0lPTlMpCiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKFFUKQorICAgIGlmICghZGVjb2Rlci0+ZGVj
b2RlKHBhcmFtZXRlcnMuY29va2llU3RvcmFnZURpcmVjdG9yeSkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyNlbmRpZgorCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAkocmV2
aXNpb24gOTQ1MjcpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTEsNiArMTExLDkgQEAgc3RydWN0IFdl
YlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgewogICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IHNl
cmlhbGl6ZWREZWZhdWx0U3RvcmFnZVNlc3Npb247CiAjZW5kaWYgLy8gVVNFKENGVVJMU1RPUkFH
RVNFU1NJT05TKQogI2VuZGlmIC8vIFBMQVRGT1JNKFdJTikKKyNpZiBQTEFURk9STShRVCkKKyAg
ICBTdHJpbmcgY29va2llU3RvcmFnZURpcmVjdG9yeTsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvV2ViQ29udGV4
dFF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvV2ViQ29u
dGV4dFF0LmNwcAkocmV2aXNpb24gOTQ1MjcpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
cXQvV2ViQ29udGV4dFF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogCiAj
aW5jbHVkZSAiQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzLmgiCisjaW5jbHVkZSA8UURlc2t0b3BTZXJ2aWNlcz4KICNpbmNs
dWRlIDxRUHJvY2Vzcz4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC00Miw5ICs0MywxMCBAQCBT
dHJpbmcgV2ViQ29udGV4dDo6YXBwbGljYXRpb25DYWNoZURpcmVjCiAjZW5kaWYKIH0KIAotdm9p
ZCBXZWJDb250ZXh0OjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKFdlYlByb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMmKQordm9pZCBXZWJDb250ZXh0OjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQ
cm9jZXNzKFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB7CiAgICAg
cVJlZ2lzdGVyTWV0YVR5cGU8UVByb2Nlc3M6OkV4aXRTdGF0dXM+KCJRUHJvY2Vzczo6RXhpdFN0
YXR1cyIpOworICAgIHBhcmFtZXRlcnMuY29va2llU3RvcmFnZURpcmVjdG9yeSA9IFFEZXNrdG9w
U2VydmljZXM6OnN0b3JhZ2VMb2NhdGlvbihRRGVza3RvcFNlcnZpY2VzOjpEYXRhTG9jYXRpb24p
OwogfQogCiB2b2lkIFdlYkNvbnRleHQ6OnBsYXRmb3JtSW52YWxpZGF0ZUNvbnRleHQoKQpJbmRl
eDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9xdC9XZWJQcm9jZXNzUXQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvcXQvV2ViUHJvY2Vzc1F0LmNwcAkocmV2
aXNpb24gOTQ1MjcpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3F0L1dlYlByb2Nlc3NR
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDggQEAKICNpbmNsdWRlICJXZWJQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9SdW50aW1lRW5hYmxl
ZEZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8UU5ldHdvcmtBY2Nlc3NNYW5hZ2VyPgorI2luY2x1ZGUg
PFFOZXR3b3JrQ29va2llSmFyPgorI2luY2x1ZGUgPFdlYkNvcmUvQ29va2llSmFyUXQuaD4KIAog
bmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTQ0LDYgKzQ2LDEwIEBAIHZvaWQgV2ViUHJvY2Vzczo6
cGxhdGZvcm1DbGVhclJlc291cmNlQ2EKIHZvaWQgV2ViUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFs
aXplV2ViUHJvY2Vzcyhjb25zdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0
ZXJzLCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqIGFyZ3VtZW50cykKIHsKICAgICBtX25ldHdv
cmtBY2Nlc3NNYW5hZ2VyID0gbmV3IFFOZXR3b3JrQWNjZXNzTWFuYWdlcjsKKyAgICBXZWJDb3Jl
OjpXZWJLaXQyU2hhcmVkQ29va2llSmFyKiBqYXIgPSBXZWJDb3JlOjpzaGFyZWRDb29raWVKYXIo
KTsKKyAgICBqYXItPnNldFN0b3JhZ2VQYXRoKHBhcmFtZXRlcnMuY29va2llU3RvcmFnZURpcmVj
dG9yeSk7CisgICAgbV9uZXR3b3JrQWNjZXNzTWFuYWdlci0+c2V0Q29va2llSmFyKGphcik7Cisg
ICAgamFyLT5zZXRQYXJlbnQoMCk7CiAKICAgICAvLyBEaXNhYmxlIHJ1bnRpbWUgZW5hYmxlZCBm
ZWF0dXJlcyB0aGF0IGhhdmUgbm8gV2ViS2l0MiBpbXBsZW1lbnRhdGlvbiB5ZXQuCiAjaWYgRU5B
QkxFKERFVklDRV9PUklFTlRBVElPTikKQEAgLTU3LDYgKzYzLDcgQEAgdm9pZCBXZWJQcm9jZXNz
OjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcgogCiB2b2lkIFdlYlByb2Nlc3M6OnBsYXRmb3JtVGVy
bWluYXRlKCkKIHsKKyAgICBXZWJDb3JlOjpzaGFyZWRDb29raWVKYXIoKS0+ZGVzdHJveSgpOwog
ICAgIGRlbGV0ZSBtX25ldHdvcmtBY2Nlc3NNYW5hZ2VyOwogICAgIG1fbmV0d29ya0FjY2Vzc01h
bmFnZXIgPSAwOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106361</attachid>
            <date>2011-09-05 15:05:58 -0700</date>
            <delta_ts>2011-09-05 15:49:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65309-20110905190422.patch</filename>
            <type>text/plain</type>
            <size>15053</size>
            <attacher name="Alexis Menard (darktears)">menard</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk0NTM4KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTEtMDktMDUgIEFsZXhpcyBN
ZW5hcmQgIDxhbGV4aXMubWVuYXJkQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgW1F0XSBbV0sy
XSBJbXBsZW1lbnQgYSBwZXJzaXN0ZW50IGNvb2tpZSBzdG9yYWdlLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjUzMDkKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgYSBjb29raWUgc3RvcmFn
ZSBmb3IgdGhlIFF0IHBvcnQgb24gV2ViS2l0Mi4KKyAgICAgICAgVGhlIGltcGxlbWVudGF0aW9u
IGlzIHVzaW5nIGEgU1FMaXRlIGRhdGFiYXNlIHRvIHN0b3JlIHRoZSBjb29raWVzCisgICAgICAg
IGFuZCByZXN0b3JlIHRoZW0uIEl0IHVzZXMgYSBzdGF0aWMgb2JqZWN0IGFzIENvb2tpZUphciBp
cyBub3QgYW4KKyAgICAgICAgb2JqZWN0IGJ1dCBhIHNldCBvZiBnbG9iYWwgZnVuY3Rpb25zLiBU
aGUgYWN0dWFsIHNhdmluZy9yZXN0b3JpbmcgaXMgb24KKyAgICAgICAgdGhlIFdlYlByb2Nlc3Mg
c2lkZSB3aGVyZSBvdXIgbmV0d29yayBzdGFjayBsaXZlcy4KKworICAgICAgICAqIFdlYkNvcmUu
cHJpOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIHBsYXRmb3JtL3F0L0Nvb2tp
ZUphclF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldEhvc3RuYW1lc1dpdGhDb29raWVzKToK
KyAgICAgICAgKFdlYkNvcmU6OmRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZSk6CisgICAgICAgIChX
ZWJDb3JlOjpkZWxldGVBbGxDb29raWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZENvb2tp
ZUphclF0OjpzaGFyZWQpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQ29va2llSmFyUXQ6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRDb29raWVKYXJRdDo6ZGVzdHJveSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTaGFyZWRDb29raWVKYXJRdDo6Z2V0SG9zdG5hbWVzV2l0aENvb2tp
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQ29va2llSmFyUXQ6OmRlbGV0ZUNvb2tpZXNG
b3JIb3N0bmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRDb29raWVKYXJRdDo6ZGVsZXRl
QWxsQ29va2llcyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRDb29raWVKYXJRdDo6U2hhcmVk
Q29va2llSmFyUXQpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQ29va2llSmFyUXQ6On5TaGFy
ZWRDb29raWVKYXJRdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRDb29raWVKYXJRdDo6c2V0
Q29va2llc0Zyb21VcmwpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQ29va2llSmFyUXQ6OmVu
c3VyZURhdGFiYXNlVGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQ29va2llSmFyUXQ6
OnNldFN0b3JhZ2VQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZENvb2tpZUphclF0Ojps
b2FkQ29va2llcyk6CisgICAgICAgICogcGxhdGZvcm0vcXQvQ29va2llSmFyUXQuaDogQWRkZWQu
CisKIDIwMTEtMDktMDUgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29t
PgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI5NDUzNy4KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUucHJpCShyZXZpc2lvbiA5NDUyNykKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJpCSh3
b3JraW5nIGNvcHkpCkBAIC02LDcgKzYsNyBAQCBpbmNsdWRlKGZlYXR1cmVzLnByaSkKICMgV2Ug
ZW5hYmxlIFRleHR1cmVNYXBwZXIgYnkgZGVmYXVsdDsgcmVtb3ZlIHRoaXMgbGluZSB0byBlbmFi
bGUgR3JhcGhpY3NMYXllclF0LgogQ09ORklHICs9IHRleG1hcAogCi1RVCAqPSBuZXR3b3JrCitR
VCAqPSBuZXR3b3JrIHNxbAogCiBTT1VSQ0VfRElSID0gJCRyZXBsYWNlKFBXRCwgL1dlYkNvcmUs
ICIiKQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybwkocmV2aXNpb24gOTQ1MjcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnBybwkod29ya2luZyBjb3B5KQpAQCAtMjA4Niw2ICsyMDg2LDcgQEAgSEVB
REVSUyArPSBcCiAgICAgcGxhdGZvcm0vUGxhdGZvcm1Ub3VjaFBvaW50LmggXAogICAgIHBsYXRm
b3JtL1BvcHVwTWVudS5oIFwKICAgICBwbGF0Zm9ybS9xdC9DbGlwYm9hcmRRdC5oIFwKKyAgICBw
bGF0Zm9ybS9xdC9Db29raWVKYXJRdC5oIFwKICAgICBwbGF0Zm9ybS9xdC9RV2ViUGFnZUNsaWVu
dC5oIFwKICAgICBwbGF0Zm9ybS9xdC9RdFN0eWxlT3B0aW9uV2ViQ29tYm9Cb3guaCBcCiAgICAg
cGxhdGZvcm0vcXQvUmVuZGVyVGhlbWVRdC5oIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3F0L0Nvb2tpZUphclF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9xdC9Db29raWVKYXJRdC5jcHAJKHJldmlzaW9uIDk0NTI3KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vcXQvQ29va2llSmFyUXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNiBHZW9yZ2UgU3RhaWtvcyA8c3RhaWtvc0Br
ZGUub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDExIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBp
dHMgc3Vic2lkaWFyeSgtaWVzKQogICoKICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgpAQCAt
MjYsNiArMjcsOCBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDb29r
aWVKYXJRdC5oIgorCiAjaW5jbHVkZSAiQ29va2llSmFyLmgiCiAKICNpbmNsdWRlICJDb29raWUu
aCIKQEAgLTM4LDEyICs0MSwxNyBAQAogI2luY2x1ZGUgInF3ZWJmcmFtZS5oIgogI2luY2x1ZGUg
InF3ZWJwYWdlLmgiCiAjaW5jbHVkZSAicXdlYnNldHRpbmdzLmgiCisjaW5jbHVkZSA8UURhdGVU
aW1lPgorI2luY2x1ZGUgPFFEaXI+CiAjaW5jbHVkZSA8UU5ldHdvcmtBY2Nlc3NNYW5hZ2VyPgog
I2luY2x1ZGUgPFFOZXR3b3JrQ29va2llPgorI2luY2x1ZGUgPFFTcWxRdWVyeT4KICNpbmNsdWRl
IDxRU3RyaW5nTGlzdD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitzdGF0aWMgU2hhcmVkQ29v
a2llSmFyUXQqIHNfc2hhcmVkQ29va2llSmFyUXQgPSAwOworCiBzdGF0aWMgUU5ldHdvcmtDb29r
aWVKYXIgKmNvb2tpZUphcihjb25zdCBEb2N1bWVudCAqZG9jdW1lbnQpCiB7CiAgICAgaWYgKCFk
b2N1bWVudCkKQEAgLTE0NCwxOSArMTUyLDEzNiBAQCB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBE
b2N1bWVudCosIGNvbnN0CiAKIHZvaWQgZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoSGFzaFNldDxT
dHJpbmc+JiBob3N0bmFtZXMpCiB7Ci0gICAgLy8gRklYTUU6IE5vdCB5ZXQgaW1wbGVtZW50ZWQK
KyAgICBTaGFyZWRDb29raWVKYXJRdDo6c2hhcmVkKCktPmdldEhvc3RuYW1lc1dpdGhDb29raWVz
KGhvc3RuYW1lcyk7CiB9CiAKIHZvaWQgZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKGNvbnN0IFN0
cmluZyYgaG9zdG5hbWUpCiB7Ci0gICAgLy8gRklYTUU6IE5vdCB5ZXQgaW1wbGVtZW50ZWQKKyAg
ICBTaGFyZWRDb29raWVKYXJRdDo6c2hhcmVkKCktPmRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZSho
b3N0bmFtZSk7CiB9CiAKIHZvaWQgZGVsZXRlQWxsQ29va2llcygpCiB7Ci0gICAgLy8gRklYTUU6
IE5vdCB5ZXQgaW1wbGVtZW50ZWQKKyAgICBTaGFyZWRDb29raWVKYXJRdDo6c2hhcmVkKCktPmRl
bGV0ZUFsbENvb2tpZXMoKTsKK30KKworU2hhcmVkQ29va2llSmFyUXQqIFNoYXJlZENvb2tpZUph
clF0OjpzaGFyZWQoKQoreworICAgIEFTU0VSVChzX3NoYXJlZENvb2tpZUphclF0ICYmICFzX3No
YXJlZENvb2tpZUphclF0LT5tX2Nvb2tpZVN0b3JhZ2VQYXRoLmlzTnVsbCgpKTsKKyAgICByZXR1
cm4gc19zaGFyZWRDb29raWVKYXJRdDsKK30KKworU2hhcmVkQ29va2llSmFyUXQqIFNoYXJlZENv
b2tpZUphclF0OjpjcmVhdGUoY29uc3QgU3RyaW5nJiBjb29raWVTdG9yYWdlRGlyZWN0b3J5KQor
eworICAgIGlmICghc19zaGFyZWRDb29raWVKYXJRdCkKKyAgICAgICAgc19zaGFyZWRDb29raWVK
YXJRdCA9IG5ldyBTaGFyZWRDb29raWVKYXJRdChjb29raWVTdG9yYWdlRGlyZWN0b3J5KTsKKwor
ICAgIHJldHVybiBzX3NoYXJlZENvb2tpZUphclF0OworfQorCit2b2lkIFNoYXJlZENvb2tpZUph
clF0OjpkZXN0cm95KCkKK3sKKyAgICBkZWxldGUgc19zaGFyZWRDb29raWVKYXJRdDsKKyAgICBz
X3NoYXJlZENvb2tpZUphclF0ID0gMDsKIH0KIAordm9pZCBTaGFyZWRDb29raWVKYXJRdDo6Z2V0
SG9zdG5hbWVzV2l0aENvb2tpZXMoSGFzaFNldDxTdHJpbmc+JiBob3N0bmFtZXMpCit7CisgICAg
UUxpc3Q8UU5ldHdvcmtDb29raWU+IGNvb2tpZXMgPSBhbGxDb29raWVzKCk7CisgICAgZm9yZWFj
aCAoY29uc3QgUU5ldHdvcmtDb29raWUmIG5ldHdvcmtDb29raWUsIGNvb2tpZXMpCisgICAgICAg
IGhvc3RuYW1lcy5hZGQobmV0d29ya0Nvb2tpZS5kb21haW4oKSk7Cit9CisKK3ZvaWQgU2hhcmVk
Q29va2llSmFyUXQ6OmRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShjb25zdCBTdHJpbmcmIGhvc3Ru
YW1lKQoreworICAgIFFMaXN0PFFOZXR3b3JrQ29va2llPiBjb29raWVzID0gYWxsQ29va2llcygp
OworICAgIFFMaXN0PFFOZXR3b3JrQ29va2llPjo6SXRlcmF0b3IgaXQgPSBjb29raWVzLmJlZ2lu
KCk7CisgICAgUUxpc3Q8UU5ldHdvcmtDb29raWU+OjpJdGVyYXRvciBlbmQgPSBjb29raWVzLmVu
ZCgpOworICAgIFFTcWxRdWVyeSBzcWxRdWVyeShtX2RhdGFiYXNlKTsKKyAgICBzcWxRdWVyeS5w
cmVwYXJlKFFMYXRpbjFTdHJpbmcoIkRFTEVURSBGUk9NIGNvb2tpZXMgV0hFUkUgZG9tYWluPTpk
b21haW52YWx1ZSIpKTsKKyAgICBzcWxRdWVyeS5iaW5kVmFsdWUoUUxhdGluMVN0cmluZygiOmRv
bWFpbnZhbHVlIiksIFFTdHJpbmcoaG9zdG5hbWUpKTsKKyAgICBzcWxRdWVyeS5leGVjKCk7Cisg
ICAgd2hpbGUgKGl0ICE9IGVuZCkgeworICAgICAgICBpZiAoaXQtPmRvbWFpbigpID09IFFTdHJp
bmcoaG9zdG5hbWUpKQorICAgICAgICAgICAgaXQgPSBjb29raWVzLmVyYXNlKGl0KTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgaXQrKzsKKyAgICB9CisgICAgc2V0QWxsQ29va2llcyhjb29r
aWVzKTsKK30KKwordm9pZCBTaGFyZWRDb29raWVKYXJRdDo6ZGVsZXRlQWxsQ29va2llcygpCit7
CisgICAgUVNxbFF1ZXJ5IHNxbFF1ZXJ5KG1fZGF0YWJhc2UpOworICAgIHNxbFF1ZXJ5LnByZXBh
cmUoUUxhdGluMVN0cmluZygiREVMRVRFICogRlJPTSBjb29raWVzIikpOworICAgIHNxbFF1ZXJ5
LmV4ZWMoKTsKKyAgICBzZXRBbGxDb29raWVzKFFMaXN0PFFOZXR3b3JrQ29va2llPigpKTsKK30K
KworU2hhcmVkQ29va2llSmFyUXQ6OlNoYXJlZENvb2tpZUphclF0KGNvbnN0IFN0cmluZyYgY29v
a2llU3RvcmFnZURpcmVjdG9yeSkKK3sKKyAgICBtX2RhdGFiYXNlID0gUVNxbERhdGFiYXNlOjph
ZGREYXRhYmFzZShRTGF0aW4xU3RyaW5nKCJRU1FMSVRFIikpOworICAgIG1fY29va2llU3RvcmFn
ZVBhdGggPSBjb29raWVTdG9yYWdlRGlyZWN0b3J5OworICAgIFFEaXIoKS5ta3BhdGgobV9jb29r
aWVTdG9yYWdlUGF0aCArIFFMYXRpbjFTdHJpbmcoIi5RdFdlYktpdC8iKSk7CisgICAgY29uc3Qg
UVN0cmluZyBkYXRhQmFzZU5hbWUgPSBtX2Nvb2tpZVN0b3JhZ2VQYXRoICsgUUxhdGluMVN0cmlu
ZygiLlF0V2ViS2l0L2Nvb2tpZXMuZGIiKTsKKyAgICBtX2RhdGFiYXNlLnNldERhdGFiYXNlTmFt
ZShkYXRhQmFzZU5hbWUpOworICAgIGVuc3VyZURhdGFiYXNlVGFibGUoKTsKKyAgICBsb2FkQ29v
a2llcygpOworfQorCitTaGFyZWRDb29raWVKYXJRdDo6flNoYXJlZENvb2tpZUphclF0KCkKK3sK
K30KKworYm9vbCBTaGFyZWRDb29raWVKYXJRdDo6c2V0Q29va2llc0Zyb21VcmwoY29uc3QgUUxp
c3Q8UU5ldHdvcmtDb29raWU+JiBjb29raWVMaXN0LCBjb25zdCBRVXJsJiB1cmwpCit7CisgICAg
Ym9vbCBzdGF0dXMgPSBRTmV0d29ya0Nvb2tpZUphcjo6c2V0Q29va2llc0Zyb21VcmwoY29va2ll
TGlzdCwgdXJsKTsKKyAgICBRU3FsUXVlcnkgc3FsUXVlcnkobV9kYXRhYmFzZSk7CisgICAgLy8g
RGVsZXRlIG9sZCBjb29raWVzIGZvciB0aGlzIGRvbWFpbi4KKyAgICBzcWxRdWVyeS5wcmVwYXJl
KFFMYXRpbjFTdHJpbmcoIkRFTEVURSBGUk9NIGNvb2tpZXMgV0hFUkUgZG9tYWluPTpkb21haW52
YWx1ZSIpKTsKKyAgICBzcWxRdWVyeS5iaW5kVmFsdWUoUUxhdGluMVN0cmluZygiOmRvbWFpbnZh
bHVlIiksIHVybC5ob3N0KCkpOworICAgIHNxbFF1ZXJ5LmV4ZWMoKTsKKworICAgIHNxbFF1ZXJ5
LnByZXBhcmUoUUxhdGluMVN0cmluZygiSU5TRVJUIElOVE8gY29va2llcyAoY29va2llLCBkb21h
aW4pIFZBTFVFUyAoOmNvb2tpZXZhbHVlLCA6ZG9tYWludmFsdWUpIikpOworICAgIGZvcmVhY2gg
KGNvbnN0IFFOZXR3b3JrQ29va2llICZjb29raWUsIGNvb2tpZXNGb3JVcmwodXJsKSkgeworICAg
ICAgICBpZiAoY29va2llLmlzU2Vzc2lvbkNvb2tpZSgpKQorICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgIHNxbFF1ZXJ5LmJpbmRWYWx1ZShRTGF0aW4xU3RyaW5nKCI6Y29va2lldmFsdWUi
KSwgY29va2llLnRvUmF3Rm9ybSgpKTsKKyAgICAgICAgc3FsUXVlcnkuYmluZFZhbHVlKFFMYXRp
bjFTdHJpbmcoIjpkb21haW52YWx1ZSIpLCB1cmwuaG9zdCgpKTsKKyAgICAgICAgc3FsUXVlcnku
ZXhlYygpOworICAgIH0KKyAgICByZXR1cm4gc3RhdHVzOworfQorCit2b2lkIFNoYXJlZENvb2tp
ZUphclF0OjplbnN1cmVEYXRhYmFzZVRhYmxlKCkKK3sKKyAgICBpZiAoIW1fZGF0YWJhc2Uub3Bl
bigpKSB7CisgICAgICAgIHFXYXJuaW5nKCJDYW4ndCBvcGVuIGNvb2tpZSBkYXRhYmFzZSIpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIFFTcWxRdWVyeSBzcWxRdWVyeShtX2RhdGFiYXNl
KTsKKyAgICBzcWxRdWVyeS5wcmVwYXJlKFFMYXRpbjFTdHJpbmcoIkNSRUFURSBUQUJMRSBJRiBO
T1QgRVhJU1RTIGNvb2tpZXMgKGlkIElOVEVHRVIgUFJJTUFSWSBLRVkgQVVUT0lOQ1JFTUVOVCwi
CisgICAgICAgICAgICAgICAgICAgICAgICJjb29raWUgQkxPQiwgZG9tYWluIFZBUkNIQVIpOyIp
KTsKKyAgICBzcWxRdWVyeS5leGVjKCk7Cit9CisKK3ZvaWQgU2hhcmVkQ29va2llSmFyUXQ6OnNl
dFN0b3JhZ2VQYXRoKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKK30KKwordm9pZCBTaGFyZWRDb29r
aWVKYXJRdDo6bG9hZENvb2tpZXMoKQoreworICAgIFFMaXN0PFFOZXR3b3JrQ29va2llPiBjb29r
aWVzOworICAgIFFTcWxRdWVyeSBzcWxRdWVyeShtX2RhdGFiYXNlKTsKKyAgICBzcWxRdWVyeS5w
cmVwYXJlKFFMYXRpbjFTdHJpbmcoIlNFTEVDVCBjb29raWUgRlJPTSBjb29raWVzIikpOworICAg
IHNxbFF1ZXJ5LmV4ZWMoKTsKKyAgICB3aGlsZSAoc3FsUXVlcnkubmV4dCgpKQorICAgICAgICBj
b29raWVzLmFwcGVuZChRTmV0d29ya0Nvb2tpZTo6cGFyc2VDb29raWVzKHNxbFF1ZXJ5LnZhbHVl
KDApLnRvQnl0ZUFycmF5KCkpKTsKKyAgICBzZXRBbGxDb29raWVzKGNvb2tpZXMpOworfQorCisj
aW5jbHVkZSAibW9jX0Nvb2tpZUphclF0LmNwcCIKKwogfQogCiAvLyB2aW06IHRzPTQgc3c9NCBl
dApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvQ29va2llSmFyUXQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9Db29raWVKYXJRdC5oCShyZXZpc2lv
biAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvQ29va2llSmFyUXQuaAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBOb2tpYSBD
b3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqCisgKiBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgor
ICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUg
dGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAor
ICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpZm5kZWYgQ29va2ll
SmFyUXRfaAorI2RlZmluZSBDb29raWVKYXJRdF9oCisKKyNpbmNsdWRlIDxRdENvcmUvUU9iamVj
dD4KKyNpbmNsdWRlIDxRdE5ldHdvcmsvUU5ldHdvcmtDb29raWVKYXI+CisjaW5jbHVkZSA8UXRT
cWwvUVNxbERhdGFiYXNlPgorCisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTaGFy
ZWRDb29raWVKYXJRdCA6IHB1YmxpYyBRTmV0d29ya0Nvb2tpZUphciB7CisgICAgUV9PQkpFQ1QK
K3B1YmxpYzoKKyAgICBzdGF0aWMgU2hhcmVkQ29va2llSmFyUXQqIHNoYXJlZCgpOworICAgIHN0
YXRpYyBTaGFyZWRDb29raWVKYXJRdCogY3JlYXRlKGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQg
ZGVzdHJveSgpOworCisgICAgdm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhIYXNoU2V0PFN0
cmluZz4mKTsKKyAgICB2b2lkIGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShjb25zdCBTdHJpbmcm
KTsKKyAgICB2b2lkIGRlbGV0ZUFsbENvb2tpZXMoKTsKKyAgICB2b2lkIHNldFN0b3JhZ2VQYXRo
KGNvbnN0IFN0cmluZyYpOworICAgIGJvb2wgc2V0Q29va2llc0Zyb21VcmwoY29uc3QgUUxpc3Q8
UU5ldHdvcmtDb29raWU+JiwgY29uc3QgUVVybCYpOworICAgIHZvaWQgbG9hZENvb2tpZXMoKTsK
KworcHJpdmF0ZToKKyAgICBTaGFyZWRDb29raWVKYXJRdChjb25zdCBTdHJpbmcmKTsKKyAgICB+
U2hhcmVkQ29va2llSmFyUXQoKTsKKyAgICB2b2lkIGVuc3VyZURhdGFiYXNlVGFibGUoKTsKKwor
ICAgIFFTcWxEYXRhYmFzZSBtX2RhdGFiYXNlOworICAgIFFTdHJpbmcgbV9jb29raWVTdG9yYWdl
UGF0aDsKK307CisKK30KKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiA5NDUzOCkK
KysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0
IEBACisyMDExLTA5LTA1ICBBbGV4aXMgTWVuYXJkICA8YWxleGlzLm1lbmFyZEBvcGVuYm9zc2Eu
b3JnPgorCisgICAgICAgIFtRdF0gW1dLMl0gSW1wbGVtZW50IGEgcGVyc2lzdGVudCBjb29raWUg
c3RvcmFnZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTY1MzA5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkIHBhcmFtZXRlciB0byB0aGUgV2ViUHJvY2VzcyBjcmVhdGlvbiB0byBzcGVjaWZ5IHdoZXJl
IGNvb2tpZXMgc2hvdWxkIGJlIHNhdmVkLgorICAgICAgICBJdCBhbHNvIHVzZSB0aGUgbmV3IGNv
b2tpZSBzdG9yYWdlIGltcGxlbWVudGF0aW9uIGFuZCBzZXQgaXQgdG8gb3VyIG5ldHdvcmsgc3Rh
Y2sKKyAgICAgICAgc28gY29va2llcyBhcmUgdXNlZCB3aGVuIHVzaW5nIGl0LgorCisgICAgICAg
ICogU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIFNo
YXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgICogVUlQcm9jZXNz
L3F0L1dlYkNvbnRleHRRdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OnBsYXRm
b3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MpOgorICAgICAgICAqIFdlYlByb2Nlc3MvcXQvV2ViUHJv
Y2Vzc1F0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFs
aXplV2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnBsYXRmb3JtVGVy
bWluYXRlKToKKwogMjAxMS0wOS0wNSAgQmFsYXpzIEtlbGVtZW4gIDxrYmFsYXpzQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgW1F0XVtXSzJdIEFkZCBwaXhlbCB0ZXN0IHN1cHBvcnQKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycy5jcHAJKHJldmlzaW9uIDk0NTI3KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlBy
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MSw2ICs5MSw5
IEBAIHZvaWQgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2QKICAgICAgICAgQ29y
ZUlQQzo6ZW5jb2RlKGVuY29kZXIsIHN0b3JhZ2VTZXNzaW9uKTsKICNlbmRpZiAvLyBVU0UoQ0ZV
UkxTVE9SQUdFU0VTU0lPTlMpCiAjZW5kaWYKKyNpZiBQTEFURk9STShRVCkKKyAgICBlbmNvZGVy
LT5lbmNvZGUoY29va2llU3RvcmFnZURpcmVjdG9yeSk7CisjZW5kaWYKIH0KIAogYm9vbCBXZWJQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVy
KiBkZWNvZGVyLCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQpAQCAt
MTcyLDYgKzE3NSwxMSBAQCBib29sIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29k
CiAjZW5kaWYgLy8gVVNFKENGVVJMU1RPUkFHRVNFU1NJT05TKQogI2VuZGlmCiAKKyNpZiBQTEFU
Rk9STShRVCkKKyAgICBpZiAoIWRlY29kZXItPmRlY29kZShwYXJhbWV0ZXJzLmNvb2tpZVN0b3Jh
Z2VEaXJlY3RvcnkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKKwogICAgIHJldHVy
biB0cnVlOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgJKHJldmlzaW9uIDk0NTI3KQorKysgU291cmNlL1dl
YktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAkod29ya2luZyBjb3B5
KQpAQCAtMTExLDYgKzExMSw5IEBAIHN0cnVjdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
IHsKICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBzZXJpYWxpemVkRGVmYXVsdFN0b3JhZ2VTZXNz
aW9uOwogI2VuZGlmIC8vIFVTRShDRlVSTFNUT1JBR0VTRVNTSU9OUykKICNlbmRpZiAvLyBQTEFU
Rk9STShXSU4pCisjaWYgUExBVEZPUk0oUVQpCisgICAgU3RyaW5nIGNvb2tpZVN0b3JhZ2VEaXJl
Y3Rvcnk7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYkNvbnRleHRRdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYkNvbnRleHRRdC5jcHAJKHJldmlzaW9uIDk0NTI3
KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYkNvbnRleHRRdC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgIkFwcGxpY2F0aW9uQ2FjaGVT
dG9yYWdlLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgorI2lu
Y2x1ZGUgPFFEZXNrdG9wU2VydmljZXM+CiAjaW5jbHVkZSA8UVByb2Nlc3M+CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewpAQCAtNDIsOSArNDMsMTAgQEAgU3RyaW5nIFdlYkNvbnRleHQ6OmFwcGxpY2F0
aW9uQ2FjaGVEaXJlYwogI2VuZGlmCiB9CiAKLXZvaWQgV2ViQ29udGV4dDo6cGxhdGZvcm1Jbml0
aWFsaXplV2ViUHJvY2VzcyhXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJikKK3ZvaWQgV2Vi
Q29udGV4dDo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2VzcyhXZWJQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogewogICAgIHFSZWdpc3Rlck1ldGFUeXBlPFFQcm9jZXNz
OjpFeGl0U3RhdHVzPigiUVByb2Nlc3M6OkV4aXRTdGF0dXMiKTsKKyAgICBwYXJhbWV0ZXJzLmNv
b2tpZVN0b3JhZ2VEaXJlY3RvcnkgPSBRRGVza3RvcFNlcnZpY2VzOjpzdG9yYWdlTG9jYXRpb24o
UURlc2t0b3BTZXJ2aWNlczo6RGF0YUxvY2F0aW9uKTsKIH0KIAogdm9pZCBXZWJDb250ZXh0Ojpw
bGF0Zm9ybUludmFsaWRhdGVDb250ZXh0KCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvcXQvV2ViUHJvY2Vzc1F0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL3F0L1dlYlByb2Nlc3NRdC5jcHAJKHJldmlzaW9uIDk0NTI3KQorKysgU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9xdC9XZWJQcm9jZXNzUXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
OSw2ICsyOSw4IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgog
I2luY2x1ZGUgPFdlYkNvcmUvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oPgogI2luY2x1ZGUgPFFO
ZXR3b3JrQWNjZXNzTWFuYWdlcj4KKyNpbmNsdWRlIDxRTmV0d29ya0Nvb2tpZUphcj4KKyNpbmNs
dWRlIDxXZWJDb3JlL0Nvb2tpZUphclF0Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCkBAIC00
NCw2ICs0NiwxMSBAQCB2b2lkIFdlYlByb2Nlc3M6OnBsYXRmb3JtQ2xlYXJSZXNvdXJjZUNhCiB2
b2lkIFdlYlByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MoY29uc3QgV2ViUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycywgQ29yZUlQQzo6QXJndW1lbnREZWNv
ZGVyKiBhcmd1bWVudHMpCiB7CiAgICAgbV9uZXR3b3JrQWNjZXNzTWFuYWdlciA9IG5ldyBRTmV0
d29ya0FjY2Vzc01hbmFnZXI7CisgICAgQVNTRVJUKCFwYXJhbWV0ZXJzLmNvb2tpZVN0b3JhZ2VE
aXJlY3RvcnkuaXNFbXB0eSgpICYmICFwYXJhbWV0ZXJzLmNvb2tpZVN0b3JhZ2VEaXJlY3Rvcnku
aXNOdWxsKCkpOworICAgIFdlYkNvcmU6OlNoYXJlZENvb2tpZUphclF0KiBqYXIgPSBXZWJDb3Jl
OjpTaGFyZWRDb29raWVKYXJRdDo6Y3JlYXRlKHBhcmFtZXRlcnMuY29va2llU3RvcmFnZURpcmVj
dG9yeSk7CisgICAgbV9uZXR3b3JrQWNjZXNzTWFuYWdlci0+c2V0Q29va2llSmFyKGphcik7Cisg
ICAgLy8gRG8gbm90IGxldCBRTmV0d29ya0FjY2Vzc01hbmFnZXIgZGVsZXRlIHRoZSBqYXIuCisg
ICAgamFyLT5zZXRQYXJlbnQoMCk7CiAKICAgICAvLyBEaXNhYmxlIHJ1bnRpbWUgZW5hYmxlZCBm
ZWF0dXJlcyB0aGF0IGhhdmUgbm8gV2ViS2l0MiBpbXBsZW1lbnRhdGlvbiB5ZXQuCiAjaWYgRU5B
QkxFKERFVklDRV9PUklFTlRBVElPTikKQEAgLTU5LDYgKzY2LDcgQEAgdm9pZCBXZWJQcm9jZXNz
OjpwbGF0Zm9ybVRlcm1pbmF0ZSgpCiB7CiAgICAgZGVsZXRlIG1fbmV0d29ya0FjY2Vzc01hbmFn
ZXI7CiAgICAgbV9uZXR3b3JrQWNjZXNzTWFuYWdlciA9IDA7CisgICAgV2ViQ29yZTo6U2hhcmVk
Q29va2llSmFyUXQ6OnNoYXJlZCgpLT5kZXN0cm95KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106363</attachid>
            <date>2011-09-05 15:49:12 -0700</date>
            <delta_ts>2011-09-05 16:00:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65309-20110905194737.patch</filename>
            <type>text/plain</type>
            <size>14931</size>
            <attacher name="Alexis Menard (darktears)">menard</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk0NTM4KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTEtMDktMDUgIEFsZXhpcyBN
ZW5hcmQgIDxhbGV4aXMubWVuYXJkQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgW1F0XSBbV0sy
XSBJbXBsZW1lbnQgYSBwZXJzaXN0ZW50IGNvb2tpZSBzdG9yYWdlLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjUzMDkKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgYSBjb29raWUgc3RvcmFn
ZSBmb3IgdGhlIFF0IHBvcnQgb24gV2ViS2l0Mi4KKyAgICAgICAgVGhlIGltcGxlbWVudGF0aW9u
IGlzIHVzaW5nIGEgU1FMaXRlIGRhdGFiYXNlIHRvIHN0b3JlIHRoZSBjb29raWVzCisgICAgICAg
IGFuZCByZXN0b3JlIHRoZW0uIEl0IHVzZXMgYSBzdGF0aWMgb2JqZWN0IGFzIENvb2tpZUphciBp
cyBub3QgYW4KKyAgICAgICAgb2JqZWN0IGJ1dCBhIHNldCBvZiBnbG9iYWwgZnVuY3Rpb25zLiBU
aGUgYWN0dWFsIHNhdmluZy9yZXN0b3JpbmcgaXMgb24KKyAgICAgICAgdGhlIFdlYlByb2Nlc3Mg
c2lkZSB3aGVyZSBvdXIgbmV0d29yayBzdGFjayBsaXZlcy4KKworICAgICAgICAqIFdlYkNvcmUu
cHJpOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIHBsYXRmb3JtL3F0L0Nvb2tp
ZUphclF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldEhvc3RuYW1lc1dpdGhDb29raWVzKToK
KyAgICAgICAgKFdlYkNvcmU6OmRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZSk6CisgICAgICAgIChX
ZWJDb3JlOjpkZWxldGVBbGxDb29raWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZENvb2tp
ZUphclF0OjpzaGFyZWQpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQ29va2llSmFyUXQ6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRDb29raWVKYXJRdDo6ZGVzdHJveSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTaGFyZWRDb29raWVKYXJRdDo6Z2V0SG9zdG5hbWVzV2l0aENvb2tp
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQ29va2llSmFyUXQ6OmRlbGV0ZUNvb2tpZXNG
b3JIb3N0bmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRDb29raWVKYXJRdDo6ZGVsZXRl
QWxsQ29va2llcyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRDb29raWVKYXJRdDo6U2hhcmVk
Q29va2llSmFyUXQpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQ29va2llSmFyUXQ6On5TaGFy
ZWRDb29raWVKYXJRdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRDb29raWVKYXJRdDo6c2V0
Q29va2llc0Zyb21VcmwpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQ29va2llSmFyUXQ6OmVu
c3VyZURhdGFiYXNlVGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQ29va2llSmFyUXQ6
OmxvYWRDb29raWVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9Db29raWVKYXJRdC5oOiBBZGRl
ZC4KKwogMjAxMS0wOS0wNSAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5j
b20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjk0NTM3LgpJbmRleDogU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5wcmkJKHJldmlzaW9uIDk0NTI3KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcmkJ
KHdvcmtpbmcgY29weSkKQEAgLTYsNyArNiw3IEBAIGluY2x1ZGUoZmVhdHVyZXMucHJpKQogIyBX
ZSBlbmFibGUgVGV4dHVyZU1hcHBlciBieSBkZWZhdWx0OyByZW1vdmUgdGhpcyBsaW5lIHRvIGVu
YWJsZSBHcmFwaGljc0xheWVyUXQuCiBDT05GSUcgKz0gdGV4bWFwCiAKLVFUICo9IG5ldHdvcmsK
K1FUICo9IG5ldHdvcmsgc3FsCiAKIFNPVVJDRV9ESVIgPSAkJHJlcGxhY2UoUFdELCAvV2ViQ29y
ZSwgIiIpCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCShyZXZpc2lvbiA5NDUyNykKKysrIFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUucHJvCSh3b3JraW5nIGNvcHkpCkBAIC0yMDg2LDYgKzIwODYsNyBAQCBI
RUFERVJTICs9IFwKICAgICBwbGF0Zm9ybS9QbGF0Zm9ybVRvdWNoUG9pbnQuaCBcCiAgICAgcGxh
dGZvcm0vUG9wdXBNZW51LmggXAogICAgIHBsYXRmb3JtL3F0L0NsaXBib2FyZFF0LmggXAorICAg
IHBsYXRmb3JtL3F0L0Nvb2tpZUphclF0LmggXAogICAgIHBsYXRmb3JtL3F0L1FXZWJQYWdlQ2xp
ZW50LmggXAogICAgIHBsYXRmb3JtL3F0L1F0U3R5bGVPcHRpb25XZWJDb21ib0JveC5oIFwKICAg
ICBwbGF0Zm9ybS9xdC9SZW5kZXJUaGVtZVF0LmggXApJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vcXQvQ29va2llSmFyUXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3F0L0Nvb2tpZUphclF0LmNwcAkocmV2aXNpb24gOTQ1MjcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9xdC9Db29raWVKYXJRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA2IEdlb3JnZSBTdGFpa29zIDxzdGFpa29z
QGtkZS5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgTm9raWEgQ29ycG9yYXRpb24gYW5kL29y
IGl0cyBzdWJzaWRpYXJ5KC1pZXMpCiAgKgogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCkBA
IC0yNiw2ICsyNyw4IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNv
b2tpZUphclF0LmgiCisKICNpbmNsdWRlICJDb29raWVKYXIuaCIKIAogI2luY2x1ZGUgIkNvb2tp
ZS5oIgpAQCAtMzgsMTIgKzQxLDE3IEBACiAjaW5jbHVkZSAicXdlYmZyYW1lLmgiCiAjaW5jbHVk
ZSAicXdlYnBhZ2UuaCIKICNpbmNsdWRlICJxd2Vic2V0dGluZ3MuaCIKKyNpbmNsdWRlIDxRRGF0
ZVRpbWU+CisjaW5jbHVkZSA8UURpcj4KICNpbmNsdWRlIDxRTmV0d29ya0FjY2Vzc01hbmFnZXI+
CiAjaW5jbHVkZSA8UU5ldHdvcmtDb29raWU+CisjaW5jbHVkZSA8UVNxbFF1ZXJ5PgogI2luY2x1
ZGUgPFFTdHJpbmdMaXN0PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3N0YXRpYyBTaGFyZWRD
b29raWVKYXJRdCogc19zaGFyZWRDb29raWVKYXJRdCA9IDA7CisKIHN0YXRpYyBRTmV0d29ya0Nv
b2tpZUphciAqY29va2llSmFyKGNvbnN0IERvY3VtZW50ICpkb2N1bWVudCkKIHsKICAgICBpZiAo
IWRvY3VtZW50KQpAQCAtMTQ0LDE5ICsxNTIsMTM1IEBAIHZvaWQgZGVsZXRlQ29va2llKGNvbnN0
IERvY3VtZW50KiwgY29uc3QKIAogdm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhIYXNoU2V0
PFN0cmluZz4mIGhvc3RuYW1lcykKIHsKLSAgICAvLyBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRl
ZAorICAgIFNoYXJlZENvb2tpZUphclF0KiBqYXIgPSBTaGFyZWRDb29raWVKYXJRdDo6c2hhcmVk
KCk7CisgICAgaWYgKGphcikKKyAgICAgICAgamFyLT5nZXRIb3N0bmFtZXNXaXRoQ29va2llcyho
b3N0bmFtZXMpOwogfQogCiB2b2lkIGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShjb25zdCBTdHJp
bmcmIGhvc3RuYW1lKQogewotICAgIC8vIEZJWE1FOiBOb3QgeWV0IGltcGxlbWVudGVkCisgICAg
U2hhcmVkQ29va2llSmFyUXQqIGphciA9IFNoYXJlZENvb2tpZUphclF0OjpzaGFyZWQoKTsKKyAg
ICBpZiAoamFyKQorICAgICAgICBTaGFyZWRDb29raWVKYXJRdDo6c2hhcmVkKCktPmRlbGV0ZUNv
b2tpZXNGb3JIb3N0bmFtZShob3N0bmFtZSk7CiB9CiAKIHZvaWQgZGVsZXRlQWxsQ29va2llcygp
CiB7Ci0gICAgLy8gRklYTUU6IE5vdCB5ZXQgaW1wbGVtZW50ZWQKKyAgICBTaGFyZWRDb29raWVK
YXJRdDo6c2hhcmVkKCktPmRlbGV0ZUFsbENvb2tpZXMoKTsKK30KKworU2hhcmVkQ29va2llSmFy
UXQqIFNoYXJlZENvb2tpZUphclF0OjpzaGFyZWQoKQoreworICAgIHJldHVybiBzX3NoYXJlZENv
b2tpZUphclF0OworfQorCitTaGFyZWRDb29raWVKYXJRdCogU2hhcmVkQ29va2llSmFyUXQ6OmNy
ZWF0ZShjb25zdCBTdHJpbmcmIGNvb2tpZVN0b3JhZ2VEaXJlY3RvcnkpCit7CisgICAgaWYgKCFz
X3NoYXJlZENvb2tpZUphclF0KQorICAgICAgICBzX3NoYXJlZENvb2tpZUphclF0ID0gbmV3IFNo
YXJlZENvb2tpZUphclF0KGNvb2tpZVN0b3JhZ2VEaXJlY3RvcnkpOworCisgICAgcmV0dXJuIHNf
c2hhcmVkQ29va2llSmFyUXQ7Cit9CisKK3ZvaWQgU2hhcmVkQ29va2llSmFyUXQ6OmRlc3Ryb3ko
KQoreworICAgIGRlbGV0ZSBzX3NoYXJlZENvb2tpZUphclF0OworICAgIHNfc2hhcmVkQ29va2ll
SmFyUXQgPSAwOworfQorCit2b2lkIFNoYXJlZENvb2tpZUphclF0OjpnZXRIb3N0bmFtZXNXaXRo
Q29va2llcyhIYXNoU2V0PFN0cmluZz4mIGhvc3RuYW1lcykKK3sKKyAgICBRTGlzdDxRTmV0d29y
a0Nvb2tpZT4gY29va2llcyA9IGFsbENvb2tpZXMoKTsKKyAgICBmb3JlYWNoIChjb25zdCBRTmV0
d29ya0Nvb2tpZSYgbmV0d29ya0Nvb2tpZSwgY29va2llcykKKyAgICAgICAgaG9zdG5hbWVzLmFk
ZChuZXR3b3JrQ29va2llLmRvbWFpbigpKTsKK30KKwordm9pZCBTaGFyZWRDb29raWVKYXJRdDo6
ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCit7CisgICAg
UUxpc3Q8UU5ldHdvcmtDb29raWU+IGNvb2tpZXMgPSBhbGxDb29raWVzKCk7CisgICAgUUxpc3Q8
UU5ldHdvcmtDb29raWU+OjpJdGVyYXRvciBpdCA9IGNvb2tpZXMuYmVnaW4oKTsKKyAgICBRTGlz
dDxRTmV0d29ya0Nvb2tpZT46Okl0ZXJhdG9yIGVuZCA9IGNvb2tpZXMuZW5kKCk7CisgICAgUVNx
bFF1ZXJ5IHNxbFF1ZXJ5KG1fZGF0YWJhc2UpOworICAgIHNxbFF1ZXJ5LnByZXBhcmUoUUxhdGlu
MVN0cmluZygiREVMRVRFIEZST00gY29va2llcyBXSEVSRSBkb21haW49OmRvbWFpbnZhbHVlIikp
OworICAgIHNxbFF1ZXJ5LmJpbmRWYWx1ZShRTGF0aW4xU3RyaW5nKCI6ZG9tYWludmFsdWUiKSwg
UVN0cmluZyhob3N0bmFtZSkpOworICAgIHNxbFF1ZXJ5LmV4ZWMoKTsKKyAgICB3aGlsZSAoaXQg
IT0gZW5kKSB7CisgICAgICAgIGlmIChpdC0+ZG9tYWluKCkgPT0gUVN0cmluZyhob3N0bmFtZSkp
CisgICAgICAgICAgICBpdCA9IGNvb2tpZXMuZXJhc2UoaXQpOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICBpdCsrOworICAgIH0KKyAgICBzZXRBbGxDb29raWVzKGNvb2tpZXMpOworfQorCit2
b2lkIFNoYXJlZENvb2tpZUphclF0OjpkZWxldGVBbGxDb29raWVzKCkKK3sKKyAgICBRU3FsUXVl
cnkgc3FsUXVlcnkobV9kYXRhYmFzZSk7CisgICAgc3FsUXVlcnkucHJlcGFyZShRTGF0aW4xU3Ry
aW5nKCJERUxFVEUgKiBGUk9NIGNvb2tpZXMiKSk7CisgICAgc3FsUXVlcnkuZXhlYygpOworICAg
IHNldEFsbENvb2tpZXMoUUxpc3Q8UU5ldHdvcmtDb29raWU+KCkpOworfQorCitTaGFyZWRDb29r
aWVKYXJRdDo6U2hhcmVkQ29va2llSmFyUXQoY29uc3QgU3RyaW5nJiBjb29raWVTdG9yYWdlRGly
ZWN0b3J5KQoreworICAgIG1fZGF0YWJhc2UgPSBRU3FsRGF0YWJhc2U6OmFkZERhdGFiYXNlKFFM
YXRpbjFTdHJpbmcoIlFTUUxJVEUiKSk7CisgICAgbV9jb29raWVTdG9yYWdlUGF0aCA9IGNvb2tp
ZVN0b3JhZ2VEaXJlY3Rvcnk7CisgICAgUURpcigpLm1rcGF0aChtX2Nvb2tpZVN0b3JhZ2VQYXRo
ICsgUUxhdGluMVN0cmluZygiLlF0V2ViS2l0LyIpKTsKKyAgICBjb25zdCBRU3RyaW5nIGRhdGFC
YXNlTmFtZSA9IG1fY29va2llU3RvcmFnZVBhdGggKyBRTGF0aW4xU3RyaW5nKCIuUXRXZWJLaXQv
Y29va2llcy5kYiIpOworICAgIG1fZGF0YWJhc2Uuc2V0RGF0YWJhc2VOYW1lKGRhdGFCYXNlTmFt
ZSk7CisgICAgZW5zdXJlRGF0YWJhc2VUYWJsZSgpOworICAgIGxvYWRDb29raWVzKCk7Cit9CisK
K1NoYXJlZENvb2tpZUphclF0Ojp+U2hhcmVkQ29va2llSmFyUXQoKQoreworfQorCitib29sIFNo
YXJlZENvb2tpZUphclF0OjpzZXRDb29raWVzRnJvbVVybChjb25zdCBRTGlzdDxRTmV0d29ya0Nv
b2tpZT4mIGNvb2tpZUxpc3QsIGNvbnN0IFFVcmwmIHVybCkKK3sKKyAgICBib29sIHN0YXR1cyA9
IFFOZXR3b3JrQ29va2llSmFyOjpzZXRDb29raWVzRnJvbVVybChjb29raWVMaXN0LCB1cmwpOwor
ICAgIFFTcWxRdWVyeSBzcWxRdWVyeShtX2RhdGFiYXNlKTsKKyAgICAvLyBEZWxldGUgb2xkIGNv
b2tpZXMgZm9yIHRoaXMgZG9tYWluLgorICAgIHNxbFF1ZXJ5LnByZXBhcmUoUUxhdGluMVN0cmlu
ZygiREVMRVRFIEZST00gY29va2llcyBXSEVSRSBkb21haW49OmRvbWFpbnZhbHVlIikpOworICAg
IHNxbFF1ZXJ5LmJpbmRWYWx1ZShRTGF0aW4xU3RyaW5nKCI6ZG9tYWludmFsdWUiKSwgdXJsLmhv
c3QoKSk7CisgICAgc3FsUXVlcnkuZXhlYygpOworCisgICAgc3FsUXVlcnkucHJlcGFyZShRTGF0
aW4xU3RyaW5nKCJJTlNFUlQgSU5UTyBjb29raWVzIChjb29raWUsIGRvbWFpbikgVkFMVUVTICg6
Y29va2lldmFsdWUsIDpkb21haW52YWx1ZSkiKSk7CisgICAgZm9yZWFjaCAoY29uc3QgUU5ldHdv
cmtDb29raWUgJmNvb2tpZSwgY29va2llc0ZvclVybCh1cmwpKSB7CisgICAgICAgIGlmIChjb29r
aWUuaXNTZXNzaW9uQ29va2llKCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgc3Fs
UXVlcnkuYmluZFZhbHVlKFFMYXRpbjFTdHJpbmcoIjpjb29raWV2YWx1ZSIpLCBjb29raWUudG9S
YXdGb3JtKCkpOworICAgICAgICBzcWxRdWVyeS5iaW5kVmFsdWUoUUxhdGluMVN0cmluZygiOmRv
bWFpbnZhbHVlIiksIHVybC5ob3N0KCkpOworICAgICAgICBzcWxRdWVyeS5leGVjKCk7CisgICAg
fQorICAgIHJldHVybiBzdGF0dXM7Cit9CisKK3ZvaWQgU2hhcmVkQ29va2llSmFyUXQ6OmVuc3Vy
ZURhdGFiYXNlVGFibGUoKQoreworICAgIGlmICghbV9kYXRhYmFzZS5vcGVuKCkpIHsKKyAgICAg
ICAgcVdhcm5pbmcoIkNhbid0IG9wZW4gY29va2llIGRhdGFiYXNlIik7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgUVNxbFF1ZXJ5IHNxbFF1ZXJ5KG1fZGF0YWJhc2UpOworICAgIHNxbFF1
ZXJ5LnByZXBhcmUoUUxhdGluMVN0cmluZygiQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgY29v
a2llcyAoaWQgSU5URUdFUiBQUklNQVJZIEtFWSBBVVRPSU5DUkVNRU5ULCIKKyAgICAgICAgICAg
ICAgICAgICAgICAgImNvb2tpZSBCTE9CLCBkb21haW4gVkFSQ0hBUik7IikpOworICAgIHNxbFF1
ZXJ5LmV4ZWMoKTsKK30KKwordm9pZCBTaGFyZWRDb29raWVKYXJRdDo6bG9hZENvb2tpZXMoKQor
eworICAgIFFMaXN0PFFOZXR3b3JrQ29va2llPiBjb29raWVzOworICAgIFFTcWxRdWVyeSBzcWxR
dWVyeShtX2RhdGFiYXNlKTsKKyAgICBzcWxRdWVyeS5wcmVwYXJlKFFMYXRpbjFTdHJpbmcoIlNF
TEVDVCBjb29raWUgRlJPTSBjb29raWVzIikpOworICAgIHNxbFF1ZXJ5LmV4ZWMoKTsKKyAgICB3
aGlsZSAoc3FsUXVlcnkubmV4dCgpKQorICAgICAgICBjb29raWVzLmFwcGVuZChRTmV0d29ya0Nv
b2tpZTo6cGFyc2VDb29raWVzKHNxbFF1ZXJ5LnZhbHVlKDApLnRvQnl0ZUFycmF5KCkpKTsKKyAg
ICBzZXRBbGxDb29raWVzKGNvb2tpZXMpOwogfQogCisjaW5jbHVkZSAibW9jX0Nvb2tpZUphclF0
LmNwcCIKKwogfQogCiAvLyB2aW06IHRzPTQgc3c9NCBldApJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vcXQvQ29va2llSmFyUXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9xdC9Db29raWVKYXJRdC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vcXQvQ29va2llSmFyUXQuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1
YnNpZGlhcnkoLWllcykKKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisg
KgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
KyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJ
ZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAx
LCBVU0EuCisgKgorICovCisKKyNpZm5kZWYgQ29va2llSmFyUXRfaAorI2RlZmluZSBDb29raWVK
YXJRdF9oCisKKyNpbmNsdWRlIDxRdENvcmUvUU9iamVjdD4KKyNpbmNsdWRlIDxRdE5ldHdvcmsv
UU5ldHdvcmtDb29raWVKYXI+CisjaW5jbHVkZSA8UXRTcWwvUVNxbERhdGFiYXNlPgorCisjaW5j
bHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTaGFyZWRDb29raWVKYXJRdCA6IHB1YmxpYyBR
TmV0d29ya0Nvb2tpZUphciB7CisgICAgUV9PQkpFQ1QKK3B1YmxpYzoKKyAgICBzdGF0aWMgU2hh
cmVkQ29va2llSmFyUXQqIHNoYXJlZCgpOworICAgIHN0YXRpYyBTaGFyZWRDb29raWVKYXJRdCog
Y3JlYXRlKGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgZGVzdHJveSgpOworCisgICAgdm9pZCBn
ZXRIb3N0bmFtZXNXaXRoQ29va2llcyhIYXNoU2V0PFN0cmluZz4mKTsKKyAgICB2b2lkIGRlbGV0
ZUNvb2tpZXNGb3JIb3N0bmFtZShjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIGRlbGV0ZUFsbENv
b2tpZXMoKTsKKyAgICBib29sIHNldENvb2tpZXNGcm9tVXJsKGNvbnN0IFFMaXN0PFFOZXR3b3Jr
Q29va2llPiYsIGNvbnN0IFFVcmwmKTsKKyAgICB2b2lkIGxvYWRDb29raWVzKCk7CisKK3ByaXZh
dGU6CisgICAgU2hhcmVkQ29va2llSmFyUXQoY29uc3QgU3RyaW5nJik7CisgICAgflNoYXJlZENv
b2tpZUphclF0KCk7CisgICAgdm9pZCBlbnN1cmVEYXRhYmFzZVRhYmxlKCk7CisKKyAgICBRU3Fs
RGF0YWJhc2UgbV9kYXRhYmFzZTsKKyAgICBRU3RyaW5nIG1fY29va2llU3RvcmFnZVBhdGg7Cit9
OworCit9CisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gOTQ1MzgpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNCBAQAorMjAx
MS0wOS0wNSAgQWxleGlzIE1lbmFyZCAgPGFsZXhpcy5tZW5hcmRAb3BlbmJvc3NhLm9yZz4KKwor
ICAgICAgICBbUXRdIFtXSzJdIEltcGxlbWVudCBhIHBlcnNpc3RlbnQgY29va2llIHN0b3JhZ2Uu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTMwOQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBwYXJh
bWV0ZXIgdG8gdGhlIFdlYlByb2Nlc3MgY3JlYXRpb24gdG8gc3BlY2lmeSB3aGVyZSBjb29raWVz
IHNob3VsZCBiZSBzYXZlZC4KKyAgICAgICAgSXQgYWxzbyB1c2UgdGhlIG5ldyBjb29raWUgc3Rv
cmFnZSBpbXBsZW1lbnRhdGlvbiBhbmQgc2V0IGl0IHRvIG91ciBuZXR3b3JrIHN0YWNrCisgICAg
ICAgIHNvIGNvb2tpZXMgYXJlIHVzZWQgd2hlbiB1c2luZyBpdC4KKworICAgICAgICAqIFNoYXJl
ZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2Vi
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9XZWJD
b250ZXh0UXQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjpwbGF0Zm9ybUluaXRp
YWxpemVXZWJQcm9jZXNzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL3F0L1dlYlByb2Nlc3NRdC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlBy
b2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpwbGF0Zm9ybVRlcm1pbmF0ZSk6
CisKIDIwMTEtMDktMDUgIEJhbGF6cyBLZWxlbWVuICA8a2JhbGF6c0B3ZWJraXQub3JnPgogCiAg
ICAgICAgIFtRdF1bV0syXSBBZGQgcGl4ZWwgdGVzdCBzdXBwb3J0CkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3Bw
CShyZXZpc2lvbiA5NDUyNykKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTEsNiArOTEsOSBAQCB2b2lk
IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kCiAgICAgICAgIENvcmVJUEM6OmVu
Y29kZShlbmNvZGVyLCBzdG9yYWdlU2Vzc2lvbik7CiAjZW5kaWYgLy8gVVNFKENGVVJMU1RPUkFH
RVNFU1NJT05TKQogI2VuZGlmCisjaWYgUExBVEZPUk0oUVQpCisgICAgZW5jb2Rlci0+ZW5jb2Rl
KGNvb2tpZVN0b3JhZ2VEaXJlY3RvcnkpOworI2VuZGlmCiB9CiAKIGJvb2wgV2ViUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciogZGVjb2Rl
ciwgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKQEAgLTE3Miw2ICsx
NzUsMTEgQEAgYm9vbCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZAogI2VuZGlm
IC8vIFVTRShDRlVSTFNUT1JBR0VTRVNTSU9OUykKICNlbmRpZgogCisjaWYgUExBVEZPUk0oUVQp
CisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUocGFyYW1ldGVycy5jb29raWVTdG9yYWdlRGlyZWN0
b3J5KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCisKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIApJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVycy5oCShyZXZpc2lvbiA5NDUyNykKKysrIFNvdXJjZS9XZWJLaXQyL1No
YXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEx
MSw2ICsxMTEsOSBAQCBzdHJ1Y3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyB7CiAgICAg
UmV0YWluUHRyPENGRGF0YVJlZj4gc2VyaWFsaXplZERlZmF1bHRTdG9yYWdlU2Vzc2lvbjsKICNl
bmRpZiAvLyBVU0UoQ0ZVUkxTVE9SQUdFU0VTU0lPTlMpCiAjZW5kaWYgLy8gUExBVEZPUk0oV0lO
KQorI2lmIFBMQVRGT1JNKFFUKQorICAgIFN0cmluZyBjb29raWVTdG9yYWdlRGlyZWN0b3J5Owor
I2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9xdC9XZWJDb250ZXh0UXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9xdC9XZWJDb250ZXh0UXQuY3BwCShyZXZpc2lvbiA5NDUyNykKKysrIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJDb250ZXh0UXQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5o
IgogI2luY2x1ZGUgIldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKKyNpbmNsdWRlIDxR
RGVza3RvcFNlcnZpY2VzPgogI2luY2x1ZGUgPFFQcm9jZXNzPgogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKQEAgLTQyLDkgKzQzLDEwIEBAIFN0cmluZyBXZWJDb250ZXh0OjphcHBsaWNhdGlvbkNhY2hl
RGlyZWMKICNlbmRpZgogfQogCi12b2lkIFdlYkNvbnRleHQ6OnBsYXRmb3JtSW5pdGlhbGl6ZVdl
YlByb2Nlc3MoV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYpCit2b2lkIFdlYkNvbnRleHQ6
OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MoV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cyYgcGFyYW1ldGVycykKIHsKICAgICBxUmVnaXN0ZXJNZXRhVHlwZTxRUHJvY2Vzczo6RXhpdFN0
YXR1cz4oIlFQcm9jZXNzOjpFeGl0U3RhdHVzIik7CisgICAgcGFyYW1ldGVycy5jb29raWVTdG9y
YWdlRGlyZWN0b3J5ID0gUURlc2t0b3BTZXJ2aWNlczo6c3RvcmFnZUxvY2F0aW9uKFFEZXNrdG9w
U2VydmljZXM6OkRhdGFMb2NhdGlvbik7CiB9CiAKIHZvaWQgV2ViQ29udGV4dDo6cGxhdGZvcm1J
bnZhbGlkYXRlQ29udGV4dCgpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3F0L1dl
YlByb2Nlc3NRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9x
dC9XZWJQcm9jZXNzUXQuY3BwCShyZXZpc2lvbiA5NDUyNykKKysrIFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvcXQvV2ViUHJvY2Vzc1F0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjks
OCBAQAogI2luY2x1ZGUgIldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbmNsdWRl
IDxXZWJDb3JlL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaD4KICNpbmNsdWRlIDxRTmV0d29ya0Fj
Y2Vzc01hbmFnZXI+CisjaW5jbHVkZSA8UU5ldHdvcmtDb29raWVKYXI+CisjaW5jbHVkZSA8V2Vi
Q29yZS9Db29raWVKYXJRdC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApAQCAtNDQsNiArNDYs
MTEgQEAgdm9pZCBXZWJQcm9jZXNzOjpwbGF0Zm9ybUNsZWFyUmVzb3VyY2VDYQogdm9pZCBXZWJQ
cm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKGNvbnN0IFdlYlByb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciogYXJn
dW1lbnRzKQogewogICAgIG1fbmV0d29ya0FjY2Vzc01hbmFnZXIgPSBuZXcgUU5ldHdvcmtBY2Nl
c3NNYW5hZ2VyOworICAgIEFTU0VSVCghcGFyYW1ldGVycy5jb29raWVTdG9yYWdlRGlyZWN0b3J5
LmlzRW1wdHkoKSAmJiAhcGFyYW1ldGVycy5jb29raWVTdG9yYWdlRGlyZWN0b3J5LmlzTnVsbCgp
KTsKKyAgICBXZWJDb3JlOjpTaGFyZWRDb29raWVKYXJRdCogamFyID0gV2ViQ29yZTo6U2hhcmVk
Q29va2llSmFyUXQ6OmNyZWF0ZShwYXJhbWV0ZXJzLmNvb2tpZVN0b3JhZ2VEaXJlY3RvcnkpOwor
ICAgIG1fbmV0d29ya0FjY2Vzc01hbmFnZXItPnNldENvb2tpZUphcihqYXIpOworICAgIC8vIERv
IG5vdCBsZXQgUU5ldHdvcmtBY2Nlc3NNYW5hZ2VyIGRlbGV0ZSB0aGUgamFyLgorICAgIGphci0+
c2V0UGFyZW50KDApOwogCiAgICAgLy8gRGlzYWJsZSBydW50aW1lIGVuYWJsZWQgZmVhdHVyZXMg
dGhhdCBoYXZlIG5vIFdlYktpdDIgaW1wbGVtZW50YXRpb24geWV0LgogI2lmIEVOQUJMRShERVZJ
Q0VfT1JJRU5UQVRJT04pCkBAIC01OSw2ICs2Niw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6cGxhdGZv
cm1UZXJtaW5hdGUoKQogewogICAgIGRlbGV0ZSBtX25ldHdvcmtBY2Nlc3NNYW5hZ2VyOwogICAg
IG1fbmV0d29ya0FjY2Vzc01hbmFnZXIgPSAwOworICAgIFdlYkNvcmU6OlNoYXJlZENvb2tpZUph
clF0OjpzaGFyZWQoKS0+ZGVzdHJveSgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106364</attachid>
            <date>2011-09-05 16:01:02 -0700</date>
            <delta_ts>2011-09-06 09:25:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65309-20110905195927.patch</filename>
            <type>text/plain</type>
            <size>14934</size>
            <attacher name="Alexis Menard (darktears)">menard</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk0NTM4KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTEtMDktMDUgIEFsZXhpcyBN
ZW5hcmQgIDxhbGV4aXMubWVuYXJkQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgW1F0XSBbV0sy
XSBJbXBsZW1lbnQgYSBwZXJzaXN0ZW50IGNvb2tpZSBzdG9yYWdlLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjUzMDkKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgYSBjb29raWUgc3RvcmFn
ZSBmb3IgdGhlIFF0IHBvcnQgb24gV2ViS2l0Mi4KKyAgICAgICAgVGhlIGltcGxlbWVudGF0aW9u
IGlzIHVzaW5nIGEgU1FMaXRlIGRhdGFiYXNlIHRvIHN0b3JlIHRoZSBjb29raWVzCisgICAgICAg
IGFuZCByZXN0b3JlIHRoZW0uIEl0IHVzZXMgYSBzdGF0aWMgb2JqZWN0IGFzIENvb2tpZUphciBp
cyBub3QgYW4KKyAgICAgICAgb2JqZWN0IGJ1dCBhIHNldCBvZiBnbG9iYWwgZnVuY3Rpb25zLiBU
aGUgYWN0dWFsIHNhdmluZy9yZXN0b3JpbmcgaXMgb24KKyAgICAgICAgdGhlIFdlYlByb2Nlc3Mg
c2lkZSB3aGVyZSBvdXIgbmV0d29yayBzdGFjayBsaXZlcy4KKworICAgICAgICAqIFdlYkNvcmUu
cHJpOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIHBsYXRmb3JtL3F0L0Nvb2tp
ZUphclF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldEhvc3RuYW1lc1dpdGhDb29raWVzKToK
KyAgICAgICAgKFdlYkNvcmU6OmRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZSk6CisgICAgICAgIChX
ZWJDb3JlOjpkZWxldGVBbGxDb29raWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZENvb2tp
ZUphclF0OjpzaGFyZWQpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQ29va2llSmFyUXQ6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRDb29raWVKYXJRdDo6ZGVzdHJveSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTaGFyZWRDb29raWVKYXJRdDo6Z2V0SG9zdG5hbWVzV2l0aENvb2tp
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQ29va2llSmFyUXQ6OmRlbGV0ZUNvb2tpZXNG
b3JIb3N0bmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRDb29raWVKYXJRdDo6ZGVsZXRl
QWxsQ29va2llcyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRDb29raWVKYXJRdDo6U2hhcmVk
Q29va2llSmFyUXQpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQ29va2llSmFyUXQ6On5TaGFy
ZWRDb29raWVKYXJRdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRDb29raWVKYXJRdDo6c2V0
Q29va2llc0Zyb21VcmwpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQ29va2llSmFyUXQ6OmVu
c3VyZURhdGFiYXNlVGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQ29va2llSmFyUXQ6
OmxvYWRDb29raWVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9Db29raWVKYXJRdC5oOiBBZGRl
ZC4KKwogMjAxMS0wOS0wNSAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5j
b20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjk0NTM3LgpJbmRleDogU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5wcmkJKHJldmlzaW9uIDk0NTI3KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcmkJ
KHdvcmtpbmcgY29weSkKQEAgLTYsNyArNiw3IEBAIGluY2x1ZGUoZmVhdHVyZXMucHJpKQogIyBX
ZSBlbmFibGUgVGV4dHVyZU1hcHBlciBieSBkZWZhdWx0OyByZW1vdmUgdGhpcyBsaW5lIHRvIGVu
YWJsZSBHcmFwaGljc0xheWVyUXQuCiBDT05GSUcgKz0gdGV4bWFwCiAKLVFUICo9IG5ldHdvcmsK
K1FUICo9IG5ldHdvcmsgc3FsCiAKIFNPVVJDRV9ESVIgPSAkJHJlcGxhY2UoUFdELCAvV2ViQ29y
ZSwgIiIpCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCShyZXZpc2lvbiA5NDUyNykKKysrIFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUucHJvCSh3b3JraW5nIGNvcHkpCkBAIC0yMDg2LDYgKzIwODYsNyBAQCBI
RUFERVJTICs9IFwKICAgICBwbGF0Zm9ybS9QbGF0Zm9ybVRvdWNoUG9pbnQuaCBcCiAgICAgcGxh
dGZvcm0vUG9wdXBNZW51LmggXAogICAgIHBsYXRmb3JtL3F0L0NsaXBib2FyZFF0LmggXAorICAg
IHBsYXRmb3JtL3F0L0Nvb2tpZUphclF0LmggXAogICAgIHBsYXRmb3JtL3F0L1FXZWJQYWdlQ2xp
ZW50LmggXAogICAgIHBsYXRmb3JtL3F0L1F0U3R5bGVPcHRpb25XZWJDb21ib0JveC5oIFwKICAg
ICBwbGF0Zm9ybS9xdC9SZW5kZXJUaGVtZVF0LmggXApJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vcXQvQ29va2llSmFyUXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3F0L0Nvb2tpZUphclF0LmNwcAkocmV2aXNpb24gOTQ1MjcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9xdC9Db29raWVKYXJRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA2IEdlb3JnZSBTdGFpa29zIDxzdGFpa29z
QGtkZS5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgTm9raWEgQ29ycG9yYXRpb24gYW5kL29y
IGl0cyBzdWJzaWRpYXJ5KC1pZXMpCiAgKgogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCkBA
IC0yNiw2ICsyNyw4IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNv
b2tpZUphclF0LmgiCisKICNpbmNsdWRlICJDb29raWVKYXIuaCIKIAogI2luY2x1ZGUgIkNvb2tp
ZS5oIgpAQCAtMzgsMTIgKzQxLDE3IEBACiAjaW5jbHVkZSAicXdlYmZyYW1lLmgiCiAjaW5jbHVk
ZSAicXdlYnBhZ2UuaCIKICNpbmNsdWRlICJxd2Vic2V0dGluZ3MuaCIKKyNpbmNsdWRlIDxRRGF0
ZVRpbWU+CisjaW5jbHVkZSA8UURpcj4KICNpbmNsdWRlIDxRTmV0d29ya0FjY2Vzc01hbmFnZXI+
CiAjaW5jbHVkZSA8UU5ldHdvcmtDb29raWU+CisjaW5jbHVkZSA8UVNxbFF1ZXJ5PgogI2luY2x1
ZGUgPFFTdHJpbmdMaXN0PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3N0YXRpYyBTaGFyZWRD
b29raWVKYXJRdCogc19zaGFyZWRDb29raWVKYXJRdCA9IDA7CisKIHN0YXRpYyBRTmV0d29ya0Nv
b2tpZUphciAqY29va2llSmFyKGNvbnN0IERvY3VtZW50ICpkb2N1bWVudCkKIHsKICAgICBpZiAo
IWRvY3VtZW50KQpAQCAtMTQ0LDE5ICsxNTIsMTM3IEBAIHZvaWQgZGVsZXRlQ29va2llKGNvbnN0
IERvY3VtZW50KiwgY29uc3QKIAogdm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhIYXNoU2V0
PFN0cmluZz4mIGhvc3RuYW1lcykKIHsKLSAgICAvLyBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRl
ZAorICAgIFNoYXJlZENvb2tpZUphclF0KiBqYXIgPSBTaGFyZWRDb29raWVKYXJRdDo6c2hhcmVk
KCk7CisgICAgaWYgKGphcikKKyAgICAgICAgamFyLT5nZXRIb3N0bmFtZXNXaXRoQ29va2llcyho
b3N0bmFtZXMpOwogfQogCiB2b2lkIGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShjb25zdCBTdHJp
bmcmIGhvc3RuYW1lKQogewotICAgIC8vIEZJWE1FOiBOb3QgeWV0IGltcGxlbWVudGVkCisgICAg
U2hhcmVkQ29va2llSmFyUXQqIGphciA9IFNoYXJlZENvb2tpZUphclF0OjpzaGFyZWQoKTsKKyAg
ICBpZiAoamFyKQorICAgICAgICBqYXItPmRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShob3N0bmFt
ZSk7CiB9CiAKIHZvaWQgZGVsZXRlQWxsQ29va2llcygpCiB7Ci0gICAgLy8gRklYTUU6IE5vdCB5
ZXQgaW1wbGVtZW50ZWQKKyAgICBTaGFyZWRDb29raWVKYXJRdCogamFyID0gU2hhcmVkQ29va2ll
SmFyUXQ6OnNoYXJlZCgpOworICAgIGlmIChqYXIpCisgICAgICAgIGphci0+ZGVsZXRlQWxsQ29v
a2llcygpOworfQorCitTaGFyZWRDb29raWVKYXJRdCogU2hhcmVkQ29va2llSmFyUXQ6OnNoYXJl
ZCgpCit7CisgICAgcmV0dXJuIHNfc2hhcmVkQ29va2llSmFyUXQ7Cit9CisKK1NoYXJlZENvb2tp
ZUphclF0KiBTaGFyZWRDb29raWVKYXJRdDo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgY29va2llU3Rv
cmFnZURpcmVjdG9yeSkKK3sKKyAgICBpZiAoIXNfc2hhcmVkQ29va2llSmFyUXQpCisgICAgICAg
IHNfc2hhcmVkQ29va2llSmFyUXQgPSBuZXcgU2hhcmVkQ29va2llSmFyUXQoY29va2llU3RvcmFn
ZURpcmVjdG9yeSk7CisKKyAgICByZXR1cm4gc19zaGFyZWRDb29raWVKYXJRdDsKK30KKwordm9p
ZCBTaGFyZWRDb29raWVKYXJRdDo6ZGVzdHJveSgpCit7CisgICAgZGVsZXRlIHNfc2hhcmVkQ29v
a2llSmFyUXQ7CisgICAgc19zaGFyZWRDb29raWVKYXJRdCA9IDA7Cit9CisKK3ZvaWQgU2hhcmVk
Q29va2llSmFyUXQ6OmdldEhvc3RuYW1lc1dpdGhDb29raWVzKEhhc2hTZXQ8U3RyaW5nPiYgaG9z
dG5hbWVzKQoreworICAgIFFMaXN0PFFOZXR3b3JrQ29va2llPiBjb29raWVzID0gYWxsQ29va2ll
cygpOworICAgIGZvcmVhY2ggKGNvbnN0IFFOZXR3b3JrQ29va2llJiBuZXR3b3JrQ29va2llLCBj
b29raWVzKQorICAgICAgICBob3N0bmFtZXMuYWRkKG5ldHdvcmtDb29raWUuZG9tYWluKCkpOwor
fQorCit2b2lkIFNoYXJlZENvb2tpZUphclF0OjpkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoY29u
c3QgU3RyaW5nJiBob3N0bmFtZSkKK3sKKyAgICBRTGlzdDxRTmV0d29ya0Nvb2tpZT4gY29va2ll
cyA9IGFsbENvb2tpZXMoKTsKKyAgICBRTGlzdDxRTmV0d29ya0Nvb2tpZT46Okl0ZXJhdG9yIGl0
ID0gY29va2llcy5iZWdpbigpOworICAgIFFMaXN0PFFOZXR3b3JrQ29va2llPjo6SXRlcmF0b3Ig
ZW5kID0gY29va2llcy5lbmQoKTsKKyAgICBRU3FsUXVlcnkgc3FsUXVlcnkobV9kYXRhYmFzZSk7
CisgICAgc3FsUXVlcnkucHJlcGFyZShRTGF0aW4xU3RyaW5nKCJERUxFVEUgRlJPTSBjb29raWVz
IFdIRVJFIGRvbWFpbj06ZG9tYWludmFsdWUiKSk7CisgICAgc3FsUXVlcnkuYmluZFZhbHVlKFFM
YXRpbjFTdHJpbmcoIjpkb21haW52YWx1ZSIpLCBRU3RyaW5nKGhvc3RuYW1lKSk7CisgICAgc3Fs
UXVlcnkuZXhlYygpOworICAgIHdoaWxlIChpdCAhPSBlbmQpIHsKKyAgICAgICAgaWYgKGl0LT5k
b21haW4oKSA9PSBRU3RyaW5nKGhvc3RuYW1lKSkKKyAgICAgICAgICAgIGl0ID0gY29va2llcy5l
cmFzZShpdCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGl0Kys7CisgICAgfQorICAgIHNl
dEFsbENvb2tpZXMoY29va2llcyk7Cit9CisKK3ZvaWQgU2hhcmVkQ29va2llSmFyUXQ6OmRlbGV0
ZUFsbENvb2tpZXMoKQoreworICAgIFFTcWxRdWVyeSBzcWxRdWVyeShtX2RhdGFiYXNlKTsKKyAg
ICBzcWxRdWVyeS5wcmVwYXJlKFFMYXRpbjFTdHJpbmcoIkRFTEVURSAqIEZST00gY29va2llcyIp
KTsKKyAgICBzcWxRdWVyeS5leGVjKCk7CisgICAgc2V0QWxsQ29va2llcyhRTGlzdDxRTmV0d29y
a0Nvb2tpZT4oKSk7Cit9CisKK1NoYXJlZENvb2tpZUphclF0OjpTaGFyZWRDb29raWVKYXJRdChj
b25zdCBTdHJpbmcmIGNvb2tpZVN0b3JhZ2VEaXJlY3RvcnkpCit7CisgICAgbV9kYXRhYmFzZSA9
IFFTcWxEYXRhYmFzZTo6YWRkRGF0YWJhc2UoUUxhdGluMVN0cmluZygiUVNRTElURSIpKTsKKyAg
ICBjb25zdCBRU3RyaW5nIGNvb2tpZVN0b3JhZ2VQYXRoID0gY29va2llU3RvcmFnZURpcmVjdG9y
eTsKKyAgICBRRGlyKCkubWtwYXRoKGNvb2tpZVN0b3JhZ2VQYXRoICsgUUxhdGluMVN0cmluZygi
LlF0V2ViS2l0LyIpKTsKKyAgICBjb25zdCBRU3RyaW5nIGRhdGFCYXNlTmFtZSA9IGNvb2tpZVN0
b3JhZ2VQYXRoICsgUUxhdGluMVN0cmluZygiLlF0V2ViS2l0L2Nvb2tpZXMuZGIiKTsKKyAgICBt
X2RhdGFiYXNlLnNldERhdGFiYXNlTmFtZShkYXRhQmFzZU5hbWUpOworICAgIGVuc3VyZURhdGFi
YXNlVGFibGUoKTsKKyAgICBsb2FkQ29va2llcygpOworfQorCitTaGFyZWRDb29raWVKYXJRdDo6
flNoYXJlZENvb2tpZUphclF0KCkKK3sKK30KKworYm9vbCBTaGFyZWRDb29raWVKYXJRdDo6c2V0
Q29va2llc0Zyb21VcmwoY29uc3QgUUxpc3Q8UU5ldHdvcmtDb29raWU+JiBjb29raWVMaXN0LCBj
b25zdCBRVXJsJiB1cmwpCit7CisgICAgYm9vbCBzdGF0dXMgPSBRTmV0d29ya0Nvb2tpZUphcjo6
c2V0Q29va2llc0Zyb21VcmwoY29va2llTGlzdCwgdXJsKTsKKyAgICBRU3FsUXVlcnkgc3FsUXVl
cnkobV9kYXRhYmFzZSk7CisgICAgLy8gRGVsZXRlIG9sZCBjb29raWVzIGZvciB0aGlzIGRvbWFp
bi4KKyAgICBzcWxRdWVyeS5wcmVwYXJlKFFMYXRpbjFTdHJpbmcoIkRFTEVURSBGUk9NIGNvb2tp
ZXMgV0hFUkUgZG9tYWluPTpkb21haW52YWx1ZSIpKTsKKyAgICBzcWxRdWVyeS5iaW5kVmFsdWUo
UUxhdGluMVN0cmluZygiOmRvbWFpbnZhbHVlIiksIHVybC5ob3N0KCkpOworICAgIHNxbFF1ZXJ5
LmV4ZWMoKTsKKworICAgIHNxbFF1ZXJ5LnByZXBhcmUoUUxhdGluMVN0cmluZygiSU5TRVJUIElO
VE8gY29va2llcyAoY29va2llLCBkb21haW4pIFZBTFVFUyAoOmNvb2tpZXZhbHVlLCA6ZG9tYWlu
dmFsdWUpIikpOworICAgIGZvcmVhY2ggKGNvbnN0IFFOZXR3b3JrQ29va2llICZjb29raWUsIGNv
b2tpZXNGb3JVcmwodXJsKSkgeworICAgICAgICBpZiAoY29va2llLmlzU2Vzc2lvbkNvb2tpZSgp
KQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIHNxbFF1ZXJ5LmJpbmRWYWx1ZShRTGF0
aW4xU3RyaW5nKCI6Y29va2lldmFsdWUiKSwgY29va2llLnRvUmF3Rm9ybSgpKTsKKyAgICAgICAg
c3FsUXVlcnkuYmluZFZhbHVlKFFMYXRpbjFTdHJpbmcoIjpkb21haW52YWx1ZSIpLCB1cmwuaG9z
dCgpKTsKKyAgICAgICAgc3FsUXVlcnkuZXhlYygpOworICAgIH0KKyAgICByZXR1cm4gc3RhdHVz
OworfQorCit2b2lkIFNoYXJlZENvb2tpZUphclF0OjplbnN1cmVEYXRhYmFzZVRhYmxlKCkKK3sK
KyAgICBpZiAoIW1fZGF0YWJhc2Uub3BlbigpKSB7CisgICAgICAgIHFXYXJuaW5nKCJDYW4ndCBv
cGVuIGNvb2tpZSBkYXRhYmFzZSIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIFFTcWxR
dWVyeSBzcWxRdWVyeShtX2RhdGFiYXNlKTsKKyAgICBzcWxRdWVyeS5wcmVwYXJlKFFMYXRpbjFT
dHJpbmcoIkNSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTIGNvb2tpZXMgKGlkIElOVEVHRVIgUFJJ
TUFSWSBLRVkgQVVUT0lOQ1JFTUVOVCwiCisgICAgICAgICAgICAgICAgICAgICAgICJjb29raWUg
QkxPQiwgZG9tYWluIFZBUkNIQVIpOyIpKTsKKyAgICBzcWxRdWVyeS5leGVjKCk7Cit9CisKK3Zv
aWQgU2hhcmVkQ29va2llSmFyUXQ6OmxvYWRDb29raWVzKCkKK3sKKyAgICBRTGlzdDxRTmV0d29y
a0Nvb2tpZT4gY29va2llczsKKyAgICBRU3FsUXVlcnkgc3FsUXVlcnkobV9kYXRhYmFzZSk7Cisg
ICAgc3FsUXVlcnkucHJlcGFyZShRTGF0aW4xU3RyaW5nKCJTRUxFQ1QgY29va2llIEZST00gY29v
a2llcyIpKTsKKyAgICBzcWxRdWVyeS5leGVjKCk7CisgICAgd2hpbGUgKHNxbFF1ZXJ5Lm5leHQo
KSkKKyAgICAgICAgY29va2llcy5hcHBlbmQoUU5ldHdvcmtDb29raWU6OnBhcnNlQ29va2llcyhz
cWxRdWVyeS52YWx1ZSgwKS50b0J5dGVBcnJheSgpKSk7CisgICAgc2V0QWxsQ29va2llcyhjb29r
aWVzKTsKIH0KIAorI2luY2x1ZGUgIm1vY19Db29raWVKYXJRdC5jcHAiCisKIH0KIAogLy8gdmlt
OiB0cz00IHN3PTQgZXQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L0Nvb2tpZUph
clF0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvQ29va2llSmFy
UXQuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L0Nvb2tpZUph
clF0LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKgor
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMg
bGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICog
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisj
aWZuZGVmIENvb2tpZUphclF0X2gKKyNkZWZpbmUgQ29va2llSmFyUXRfaAorCisjaW5jbHVkZSA8
UXRDb3JlL1FPYmplY3Q+CisjaW5jbHVkZSA8UXROZXR3b3JrL1FOZXR3b3JrQ29va2llSmFyPgor
I2luY2x1ZGUgPFF0U3FsL1FTcWxEYXRhYmFzZT4KKworI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgU2hhcmVkQ29va2llSmFyUXQgOiBwdWJsaWMgUU5ldHdvcmtDb29raWVKYXIgewor
ICAgIFFfT0JKRUNUCitwdWJsaWM6CisgICAgc3RhdGljIFNoYXJlZENvb2tpZUphclF0KiBzaGFy
ZWQoKTsKKyAgICBzdGF0aWMgU2hhcmVkQ29va2llSmFyUXQqIGNyZWF0ZShjb25zdCBTdHJpbmcm
KTsKKyAgICB2b2lkIGRlc3Ryb3koKTsKKworICAgIHZvaWQgZ2V0SG9zdG5hbWVzV2l0aENvb2tp
ZXMoSGFzaFNldDxTdHJpbmc+Jik7CisgICAgdm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWUo
Y29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBkZWxldGVBbGxDb29raWVzKCk7CisgICAgYm9vbCBz
ZXRDb29raWVzRnJvbVVybChjb25zdCBRTGlzdDxRTmV0d29ya0Nvb2tpZT4mLCBjb25zdCBRVXJs
Jik7CisgICAgdm9pZCBsb2FkQ29va2llcygpOworCitwcml2YXRlOgorICAgIFNoYXJlZENvb2tp
ZUphclF0KGNvbnN0IFN0cmluZyYpOworICAgIH5TaGFyZWRDb29raWVKYXJRdCgpOworICAgIHZv
aWQgZW5zdXJlRGF0YWJhc2VUYWJsZSgpOworCisgICAgUVNxbERhdGFiYXNlIG1fZGF0YWJhc2U7
Cit9OworCit9CisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gOTQ1MzgpCisrKyBT
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNCBAQAor
MjAxMS0wOS0wNSAgQWxleGlzIE1lbmFyZCAgPGFsZXhpcy5tZW5hcmRAb3BlbmJvc3NhLm9yZz4K
KworICAgICAgICBbUXRdIFtXSzJdIEltcGxlbWVudCBhIHBlcnNpc3RlbnQgY29va2llIHN0b3Jh
Z2UuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTMw
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBw
YXJhbWV0ZXIgdG8gdGhlIFdlYlByb2Nlc3MgY3JlYXRpb24gdG8gc3BlY2lmeSB3aGVyZSBjb29r
aWVzIHNob3VsZCBiZSBzYXZlZC4KKyAgICAgICAgSXQgYWxzbyB1c2UgdGhlIG5ldyBjb29raWUg
c3RvcmFnZSBpbXBsZW1lbnRhdGlvbiBhbmQgc2V0IGl0IHRvIG91ciBuZXR3b3JrIHN0YWNrCisg
ICAgICAgIHNvIGNvb2tpZXMgYXJlIHVzZWQgd2hlbiB1c2luZyBpdC4KKworICAgICAgICAqIFNo
YXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQv
V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9X
ZWJDb250ZXh0UXQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjpwbGF0Zm9ybUlu
aXRpYWxpemVXZWJQcm9jZXNzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL3F0L1dlYlByb2Nlc3NR
dC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZVdl
YlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpwbGF0Zm9ybVRlcm1pbmF0
ZSk6CisKIDIwMTEtMDktMDUgIEJhbGF6cyBLZWxlbWVuICA8a2JhbGF6c0B3ZWJraXQub3JnPgog
CiAgICAgICAgIFtRdF1bV0syXSBBZGQgcGl4ZWwgdGVzdCBzdXBwb3J0CkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMu
Y3BwCShyZXZpc2lvbiA5NDUyNykKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTEsNiArOTEsOSBAQCB2
b2lkIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kCiAgICAgICAgIENvcmVJUEM6
OmVuY29kZShlbmNvZGVyLCBzdG9yYWdlU2Vzc2lvbik7CiAjZW5kaWYgLy8gVVNFKENGVVJMU1RP
UkFHRVNFU1NJT05TKQogI2VuZGlmCisjaWYgUExBVEZPUk0oUVQpCisgICAgZW5jb2Rlci0+ZW5j
b2RlKGNvb2tpZVN0b3JhZ2VEaXJlY3RvcnkpOworI2VuZGlmCiB9CiAKIGJvb2wgV2ViUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciogZGVj
b2RlciwgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKQEAgLTE3Miw2
ICsxNzUsMTEgQEAgYm9vbCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZAogI2Vu
ZGlmIC8vIFVTRShDRlVSTFNUT1JBR0VTRVNTSU9OUykKICNlbmRpZgogCisjaWYgUExBVEZPUk0o
UVQpCisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUocGFyYW1ldGVycy5jb29raWVTdG9yYWdlRGly
ZWN0b3J5KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCisKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycy5oCShyZXZpc2lvbiA5NDUyNykKKysrIFNvdXJjZS9XZWJLaXQy
L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTExMSw2ICsxMTEsOSBAQCBzdHJ1Y3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyB7CiAg
ICAgUmV0YWluUHRyPENGRGF0YVJlZj4gc2VyaWFsaXplZERlZmF1bHRTdG9yYWdlU2Vzc2lvbjsK
ICNlbmRpZiAvLyBVU0UoQ0ZVUkxTVE9SQUdFU0VTU0lPTlMpCiAjZW5kaWYgLy8gUExBVEZPUk0o
V0lOKQorI2lmIFBMQVRGT1JNKFFUKQorICAgIFN0cmluZyBjb29raWVTdG9yYWdlRGlyZWN0b3J5
OworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9xdC9XZWJDb250ZXh0UXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJDb250ZXh0UXQuY3BwCShyZXZpc2lvbiA5NDUyNykKKysr
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJDb250ZXh0UXQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJBcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKKyNpbmNsdWRl
IDxRRGVza3RvcFNlcnZpY2VzPgogI2luY2x1ZGUgPFFQcm9jZXNzPgogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKQEAgLTQyLDkgKzQzLDEwIEBAIFN0cmluZyBXZWJDb250ZXh0OjphcHBsaWNhdGlvbkNh
Y2hlRGlyZWMKICNlbmRpZgogfQogCi12b2lkIFdlYkNvbnRleHQ6OnBsYXRmb3JtSW5pdGlhbGl6
ZVdlYlByb2Nlc3MoV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYpCit2b2lkIFdlYkNvbnRl
eHQ6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MoV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycyYgcGFyYW1ldGVycykKIHsKICAgICBxUmVnaXN0ZXJNZXRhVHlwZTxRUHJvY2Vzczo6RXhp
dFN0YXR1cz4oIlFQcm9jZXNzOjpFeGl0U3RhdHVzIik7CisgICAgcGFyYW1ldGVycy5jb29raWVT
dG9yYWdlRGlyZWN0b3J5ID0gUURlc2t0b3BTZXJ2aWNlczo6c3RvcmFnZUxvY2F0aW9uKFFEZXNr
dG9wU2VydmljZXM6OkRhdGFMb2NhdGlvbik7CiB9CiAKIHZvaWQgV2ViQ29udGV4dDo6cGxhdGZv
cm1JbnZhbGlkYXRlQ29udGV4dCgpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3F0
L1dlYlByb2Nlc3NRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9xdC9XZWJQcm9jZXNzUXQuY3BwCShyZXZpc2lvbiA5NDUyNykKKysrIFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvcXQvV2ViUHJvY2Vzc1F0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNiAr
MjksOCBAQAogI2luY2x1ZGUgIldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbmNs
dWRlIDxXZWJDb3JlL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaD4KICNpbmNsdWRlIDxRTmV0d29y
a0FjY2Vzc01hbmFnZXI+CisjaW5jbHVkZSA8UU5ldHdvcmtDb29raWVKYXI+CisjaW5jbHVkZSA8
V2ViQ29yZS9Db29raWVKYXJRdC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApAQCAtNDQsNiAr
NDYsMTEgQEAgdm9pZCBXZWJQcm9jZXNzOjpwbGF0Zm9ybUNsZWFyUmVzb3VyY2VDYQogdm9pZCBX
ZWJQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKGNvbnN0IFdlYlByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2Rlciog
YXJndW1lbnRzKQogewogICAgIG1fbmV0d29ya0FjY2Vzc01hbmFnZXIgPSBuZXcgUU5ldHdvcmtB
Y2Nlc3NNYW5hZ2VyOworICAgIEFTU0VSVCghcGFyYW1ldGVycy5jb29raWVTdG9yYWdlRGlyZWN0
b3J5LmlzRW1wdHkoKSAmJiAhcGFyYW1ldGVycy5jb29raWVTdG9yYWdlRGlyZWN0b3J5LmlzTnVs
bCgpKTsKKyAgICBXZWJDb3JlOjpTaGFyZWRDb29raWVKYXJRdCogamFyID0gV2ViQ29yZTo6U2hh
cmVkQ29va2llSmFyUXQ6OmNyZWF0ZShwYXJhbWV0ZXJzLmNvb2tpZVN0b3JhZ2VEaXJlY3Rvcnkp
OworICAgIG1fbmV0d29ya0FjY2Vzc01hbmFnZXItPnNldENvb2tpZUphcihqYXIpOworICAgIC8v
IERvIG5vdCBsZXQgUU5ldHdvcmtBY2Nlc3NNYW5hZ2VyIGRlbGV0ZSB0aGUgamFyLgorICAgIGph
ci0+c2V0UGFyZW50KDApOwogCiAgICAgLy8gRGlzYWJsZSBydW50aW1lIGVuYWJsZWQgZmVhdHVy
ZXMgdGhhdCBoYXZlIG5vIFdlYktpdDIgaW1wbGVtZW50YXRpb24geWV0LgogI2lmIEVOQUJMRShE
RVZJQ0VfT1JJRU5UQVRJT04pCkBAIC01OSw2ICs2Niw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6cGxh
dGZvcm1UZXJtaW5hdGUoKQogewogICAgIGRlbGV0ZSBtX25ldHdvcmtBY2Nlc3NNYW5hZ2VyOwog
ICAgIG1fbmV0d29ya0FjY2Vzc01hbmFnZXIgPSAwOworICAgIFdlYkNvcmU6OlNoYXJlZENvb2tp
ZUphclF0OjpzaGFyZWQoKS0+ZGVzdHJveSgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106427</attachid>
            <date>2011-09-06 09:25:11 -0700</date>
            <delta_ts>2011-09-07 13:20:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65309-20110906132334.patch</filename>
            <type>text/plain</type>
            <size>14775</size>
            <attacher name="Alexis Menard (darktears)">menard</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk0NTM4KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTEtMDktMDUgIEFsZXhpcyBN
ZW5hcmQgIDxhbGV4aXMubWVuYXJkQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgW1F0XSBbV0sy
XSBJbXBsZW1lbnQgYSBwZXJzaXN0ZW50IGNvb2tpZSBzdG9yYWdlLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjUzMDkKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgYSBjb29raWUgc3RvcmFn
ZSBmb3IgdGhlIFF0IHBvcnQgb24gV2ViS2l0Mi4KKyAgICAgICAgVGhlIGltcGxlbWVudGF0aW9u
IGlzIHVzaW5nIGEgU1FMaXRlIGRhdGFiYXNlIHRvIHN0b3JlIHRoZSBjb29raWVzCisgICAgICAg
IGFuZCByZXN0b3JlIHRoZW0uIEl0IHVzZXMgYSBzdGF0aWMgb2JqZWN0IGFzIENvb2tpZUphciBp
cyBub3QgYW4KKyAgICAgICAgb2JqZWN0IGJ1dCBhIHNldCBvZiBnbG9iYWwgZnVuY3Rpb25zLiBU
aGUgYWN0dWFsIHNhdmluZy9yZXN0b3JpbmcgaXMgb24KKyAgICAgICAgdGhlIFdlYlByb2Nlc3Mg
c2lkZSB3aGVyZSBvdXIgbmV0d29yayBzdGFjayBsaXZlcy4KKworICAgICAgICAqIFdlYkNvcmUu
cHJpOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIHBsYXRmb3JtL3F0L0Nvb2tp
ZUphclF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldEhvc3RuYW1lc1dpdGhDb29raWVzKToK
KyAgICAgICAgKFdlYkNvcmU6OmRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZSk6CisgICAgICAgIChX
ZWJDb3JlOjpkZWxldGVBbGxDb29raWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZENvb2tp
ZUphclF0OjpzaGFyZWQpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQ29va2llSmFyUXQ6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRDb29raWVKYXJRdDo6ZGVzdHJveSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTaGFyZWRDb29raWVKYXJRdDo6Z2V0SG9zdG5hbWVzV2l0aENvb2tp
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQ29va2llSmFyUXQ6OmRlbGV0ZUNvb2tpZXNG
b3JIb3N0bmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRDb29raWVKYXJRdDo6ZGVsZXRl
QWxsQ29va2llcyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRDb29raWVKYXJRdDo6U2hhcmVk
Q29va2llSmFyUXQpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQ29va2llSmFyUXQ6On5TaGFy
ZWRDb29raWVKYXJRdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRDb29raWVKYXJRdDo6c2V0
Q29va2llc0Zyb21VcmwpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQ29va2llSmFyUXQ6OmVu
c3VyZURhdGFiYXNlVGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQ29va2llSmFyUXQ6
OmxvYWRDb29raWVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9Db29raWVKYXJRdC5oOiBBZGRl
ZC4KKwogMjAxMS0wOS0wNSAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5j
b20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjk0NTM3LgpJbmRleDogU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5wcmkJKHJldmlzaW9uIDk0NTI3KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcmkJ
KHdvcmtpbmcgY29weSkKQEAgLTYsNyArNiw3IEBAIGluY2x1ZGUoZmVhdHVyZXMucHJpKQogIyBX
ZSBlbmFibGUgVGV4dHVyZU1hcHBlciBieSBkZWZhdWx0OyByZW1vdmUgdGhpcyBsaW5lIHRvIGVu
YWJsZSBHcmFwaGljc0xheWVyUXQuCiBDT05GSUcgKz0gdGV4bWFwCiAKLVFUICo9IG5ldHdvcmsK
K1FUICo9IG5ldHdvcmsgc3FsCiAKIFNPVVJDRV9ESVIgPSAkJHJlcGxhY2UoUFdELCAvV2ViQ29y
ZSwgIiIpCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCShyZXZpc2lvbiA5NDUyNykKKysrIFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUucHJvCSh3b3JraW5nIGNvcHkpCkBAIC0yMDg2LDYgKzIwODYsNyBAQCBI
RUFERVJTICs9IFwKICAgICBwbGF0Zm9ybS9QbGF0Zm9ybVRvdWNoUG9pbnQuaCBcCiAgICAgcGxh
dGZvcm0vUG9wdXBNZW51LmggXAogICAgIHBsYXRmb3JtL3F0L0NsaXBib2FyZFF0LmggXAorICAg
IHBsYXRmb3JtL3F0L0Nvb2tpZUphclF0LmggXAogICAgIHBsYXRmb3JtL3F0L1FXZWJQYWdlQ2xp
ZW50LmggXAogICAgIHBsYXRmb3JtL3F0L1F0U3R5bGVPcHRpb25XZWJDb21ib0JveC5oIFwKICAg
ICBwbGF0Zm9ybS9xdC9SZW5kZXJUaGVtZVF0LmggXApJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vcXQvQ29va2llSmFyUXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3F0L0Nvb2tpZUphclF0LmNwcAkocmV2aXNpb24gOTQ1MjcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9xdC9Db29raWVKYXJRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA2IEdlb3JnZSBTdGFpa29zIDxzdGFpa29z
QGtkZS5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgTm9raWEgQ29ycG9yYXRpb24gYW5kL29y
IGl0cyBzdWJzaWRpYXJ5KC1pZXMpCiAgKgogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCkBA
IC0yNiw2ICsyNyw4IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNv
b2tpZUphclF0LmgiCisKICNpbmNsdWRlICJDb29raWVKYXIuaCIKIAogI2luY2x1ZGUgIkNvb2tp
ZS5oIgpAQCAtMzgsMTIgKzQxLDE3IEBACiAjaW5jbHVkZSAicXdlYmZyYW1lLmgiCiAjaW5jbHVk
ZSAicXdlYnBhZ2UuaCIKICNpbmNsdWRlICJxd2Vic2V0dGluZ3MuaCIKKyNpbmNsdWRlIDxRRGF0
ZVRpbWU+CisjaW5jbHVkZSA8UURpcj4KICNpbmNsdWRlIDxRTmV0d29ya0FjY2Vzc01hbmFnZXI+
CiAjaW5jbHVkZSA8UU5ldHdvcmtDb29raWU+CisjaW5jbHVkZSA8UVNxbFF1ZXJ5PgogI2luY2x1
ZGUgPFFTdHJpbmdMaXN0PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3N0YXRpYyBTaGFyZWRD
b29raWVKYXJRdCogc19zaGFyZWRDb29raWVKYXJRdCA9IDA7CisKIHN0YXRpYyBRTmV0d29ya0Nv
b2tpZUphciAqY29va2llSmFyKGNvbnN0IERvY3VtZW50ICpkb2N1bWVudCkKIHsKICAgICBpZiAo
IWRvY3VtZW50KQpAQCAtMTQ0LDE5ICsxNTIsMTMxIEBAIHZvaWQgZGVsZXRlQ29va2llKGNvbnN0
IERvY3VtZW50KiwgY29uc3QKIAogdm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhIYXNoU2V0
PFN0cmluZz4mIGhvc3RuYW1lcykKIHsKLSAgICAvLyBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRl
ZAorICAgIFNoYXJlZENvb2tpZUphclF0KiBqYXIgPSBTaGFyZWRDb29raWVKYXJRdDo6c2hhcmVk
KCk7CisgICAgaWYgKGphcikKKyAgICAgICAgamFyLT5nZXRIb3N0bmFtZXNXaXRoQ29va2llcyho
b3N0bmFtZXMpOwogfQogCiB2b2lkIGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShjb25zdCBTdHJp
bmcmIGhvc3RuYW1lKQogewotICAgIC8vIEZJWE1FOiBOb3QgeWV0IGltcGxlbWVudGVkCisgICAg
U2hhcmVkQ29va2llSmFyUXQqIGphciA9IFNoYXJlZENvb2tpZUphclF0OjpzaGFyZWQoKTsKKyAg
ICBpZiAoamFyKQorICAgICAgICBqYXItPmRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShob3N0bmFt
ZSk7CiB9CiAKIHZvaWQgZGVsZXRlQWxsQ29va2llcygpCiB7Ci0gICAgLy8gRklYTUU6IE5vdCB5
ZXQgaW1wbGVtZW50ZWQKKyAgICBTaGFyZWRDb29raWVKYXJRdCogamFyID0gU2hhcmVkQ29va2ll
SmFyUXQ6OnNoYXJlZCgpOworICAgIGlmIChqYXIpCisgICAgICAgIGphci0+ZGVsZXRlQWxsQ29v
a2llcygpOworfQorCitTaGFyZWRDb29raWVKYXJRdCogU2hhcmVkQ29va2llSmFyUXQ6OnNoYXJl
ZCgpCit7CisgICAgcmV0dXJuIHNfc2hhcmVkQ29va2llSmFyUXQ7Cit9CisKK1NoYXJlZENvb2tp
ZUphclF0KiBTaGFyZWRDb29raWVKYXJRdDo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgY29va2llU3Rv
cmFnZURpcmVjdG9yeSkKK3sKKyAgICBpZiAoIXNfc2hhcmVkQ29va2llSmFyUXQpCisgICAgICAg
IHNfc2hhcmVkQ29va2llSmFyUXQgPSBuZXcgU2hhcmVkQ29va2llSmFyUXQoY29va2llU3RvcmFn
ZURpcmVjdG9yeSk7CisKKyAgICByZXR1cm4gc19zaGFyZWRDb29raWVKYXJRdDsKK30KKwordm9p
ZCBTaGFyZWRDb29raWVKYXJRdDo6ZGVzdHJveSgpCit7CisgICAgZGVsZXRlIHNfc2hhcmVkQ29v
a2llSmFyUXQ7CisgICAgc19zaGFyZWRDb29raWVKYXJRdCA9IDA7Cit9CisKK3ZvaWQgU2hhcmVk
Q29va2llSmFyUXQ6OmdldEhvc3RuYW1lc1dpdGhDb29raWVzKEhhc2hTZXQ8U3RyaW5nPiYgaG9z
dG5hbWVzKQoreworICAgIFFMaXN0PFFOZXR3b3JrQ29va2llPiBjb29raWVzID0gYWxsQ29va2ll
cygpOworICAgIGZvcmVhY2ggKGNvbnN0IFFOZXR3b3JrQ29va2llJiBuZXR3b3JrQ29va2llLCBj
b29raWVzKQorICAgICAgICBob3N0bmFtZXMuYWRkKG5ldHdvcmtDb29raWUuZG9tYWluKCkpOwor
fQorCit2b2lkIFNoYXJlZENvb2tpZUphclF0OjpkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoY29u
c3QgU3RyaW5nJiBob3N0bmFtZSkKK3sKKyAgICBRTGlzdDxRTmV0d29ya0Nvb2tpZT4gY29va2ll
cyA9IGFsbENvb2tpZXMoKTsKKyAgICBRTGlzdDxRTmV0d29ya0Nvb2tpZT46Okl0ZXJhdG9yIGl0
ID0gY29va2llcy5iZWdpbigpOworICAgIFFMaXN0PFFOZXR3b3JrQ29va2llPjo6SXRlcmF0b3Ig
ZW5kID0gY29va2llcy5lbmQoKTsKKyAgICBRU3FsUXVlcnkgc3FsUXVlcnkobV9kYXRhYmFzZSk7
CisgICAgc3FsUXVlcnkucHJlcGFyZShRTGF0aW4xU3RyaW5nKCJERUxFVEUgRlJPTSBjb29raWVz
IFdIRVJFIGNvb2tpZUlkPTpjb29raWVJZHZhbHVlIikpOworICAgIHdoaWxlIChpdCAhPSBlbmQp
IHsKKyAgICAgICAgaWYgKGl0LT5kb21haW4oKSA9PSBRU3RyaW5nKGhvc3RuYW1lKSkgeworICAg
ICAgICAgICAgc3FsUXVlcnkuYmluZFZhbHVlKFFMYXRpbjFTdHJpbmcoIjpjb29raWVJZHZhbHVl
IiksIGl0LT5kb21haW4oKS5hcHBlbmQoUUxhdGluMVN0cmluZyhpdC0+bmFtZSgpKSkpOworICAg
ICAgICAgICAgc3FsUXVlcnkuZXhlYygpOworICAgICAgICAgICAgaXQgPSBjb29raWVzLmVyYXNl
KGl0KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBpdCsrOworICAgIH0KKyAgICBzZXRB
bGxDb29raWVzKGNvb2tpZXMpOwogfQogCit2b2lkIFNoYXJlZENvb2tpZUphclF0OjpkZWxldGVB
bGxDb29raWVzKCkKK3sKKyAgICBRU3FsUXVlcnkgc3FsUXVlcnkobV9kYXRhYmFzZSk7CisgICAg
c3FsUXVlcnkucHJlcGFyZShRTGF0aW4xU3RyaW5nKCJERUxFVEUgKiBGUk9NIGNvb2tpZXMiKSk7
CisgICAgc3FsUXVlcnkuZXhlYygpOworICAgIHNldEFsbENvb2tpZXMoUUxpc3Q8UU5ldHdvcmtD
b29raWU+KCkpOworfQorCitTaGFyZWRDb29raWVKYXJRdDo6U2hhcmVkQ29va2llSmFyUXQoY29u
c3QgU3RyaW5nJiBjb29raWVTdG9yYWdlRGlyZWN0b3J5KQoreworICAgIG1fZGF0YWJhc2UgPSBR
U3FsRGF0YWJhc2U6OmFkZERhdGFiYXNlKFFMYXRpbjFTdHJpbmcoIlFTUUxJVEUiKSk7CisgICAg
Y29uc3QgUVN0cmluZyBjb29raWVTdG9yYWdlUGF0aCA9IGNvb2tpZVN0b3JhZ2VEaXJlY3Rvcnk7
CisgICAgUURpcigpLm1rcGF0aChjb29raWVTdG9yYWdlUGF0aCArIFFMYXRpbjFTdHJpbmcoIi5R
dFdlYktpdC8iKSk7CisgICAgY29uc3QgUVN0cmluZyBkYXRhQmFzZU5hbWUgPSBjb29raWVTdG9y
YWdlUGF0aCArIFFMYXRpbjFTdHJpbmcoIi5RdFdlYktpdC9jb29raWVzLmRiIik7CisgICAgbV9k
YXRhYmFzZS5zZXREYXRhYmFzZU5hbWUoZGF0YUJhc2VOYW1lKTsKKyAgICBlbnN1cmVEYXRhYmFz
ZVRhYmxlKCk7CisgICAgbG9hZENvb2tpZXMoKTsKK30KKworU2hhcmVkQ29va2llSmFyUXQ6On5T
aGFyZWRDb29raWVKYXJRdCgpCit7Cit9CisKK2Jvb2wgU2hhcmVkQ29va2llSmFyUXQ6OnNldENv
b2tpZXNGcm9tVXJsKGNvbnN0IFFMaXN0PFFOZXR3b3JrQ29va2llPiYgY29va2llTGlzdCwgY29u
c3QgUVVybCYgdXJsKQoreworICAgIGJvb2wgc3RhdHVzID0gUU5ldHdvcmtDb29raWVKYXI6OnNl
dENvb2tpZXNGcm9tVXJsKGNvb2tpZUxpc3QsIHVybCk7CisgICAgUVNxbFF1ZXJ5IHNxbFF1ZXJ5
KG1fZGF0YWJhc2UpOworICAgIHNxbFF1ZXJ5LnByZXBhcmUoUUxhdGluMVN0cmluZygiSU5TRVJU
IE9SIFJFUExBQ0UgSU5UTyBjb29raWVzIChjb29raWVJZCwgY29va2llKSBWQUxVRVMgKDpjb29r
aWVJZHZhbHVlLCA6Y29va2lldmFsdWUpIikpOworICAgIGZvcmVhY2ggKGNvbnN0IFFOZXR3b3Jr
Q29va2llICZjb29raWUsIGNvb2tpZXNGb3JVcmwodXJsKSkgeworICAgICAgICBpZiAoY29va2ll
LmlzU2Vzc2lvbkNvb2tpZSgpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIHNxbFF1
ZXJ5LmJpbmRWYWx1ZShRTGF0aW4xU3RyaW5nKCI6Y29va2llSWR2YWx1ZSIpLCBjb29raWUuZG9t
YWluKCkuYXBwZW5kKFFMYXRpbjFTdHJpbmcoY29va2llLm5hbWUoKSkpKTsKKyAgICAgICAgc3Fs
UXVlcnkuYmluZFZhbHVlKFFMYXRpbjFTdHJpbmcoIjpjb29raWV2YWx1ZSIpLCBjb29raWUudG9S
YXdGb3JtKCkpOworICAgICAgICBzcWxRdWVyeS5leGVjKCk7CisgICAgfQorICAgIHJldHVybiBz
dGF0dXM7Cit9CisKK3ZvaWQgU2hhcmVkQ29va2llSmFyUXQ6OmVuc3VyZURhdGFiYXNlVGFibGUo
KQoreworICAgIGlmICghbV9kYXRhYmFzZS5vcGVuKCkpIHsKKyAgICAgICAgcVdhcm5pbmcoIkNh
bid0IG9wZW4gY29va2llIGRhdGFiYXNlIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAg
UVNxbFF1ZXJ5IHNxbFF1ZXJ5KG1fZGF0YWJhc2UpOworICAgIHNxbFF1ZXJ5LnByZXBhcmUoUUxh
dGluMVN0cmluZygiQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgY29va2llcyAoY29va2llSWQg
VkFSQ0hBUiBQUklNQVJZIEtFWSwgY29va2llIEJMT0IpOyIpKTsKKyAgICBzcWxRdWVyeS5leGVj
KCk7Cit9CisKK3ZvaWQgU2hhcmVkQ29va2llSmFyUXQ6OmxvYWRDb29raWVzKCkKK3sKKyAgICBR
TGlzdDxRTmV0d29ya0Nvb2tpZT4gY29va2llczsKKyAgICBRU3FsUXVlcnkgc3FsUXVlcnkobV9k
YXRhYmFzZSk7CisgICAgc3FsUXVlcnkucHJlcGFyZShRTGF0aW4xU3RyaW5nKCJTRUxFQ1QgY29v
a2llIEZST00gY29va2llcyIpKTsKKyAgICBzcWxRdWVyeS5leGVjKCk7CisgICAgd2hpbGUgKHNx
bFF1ZXJ5Lm5leHQoKSkKKyAgICAgICAgY29va2llcy5hcHBlbmQoUU5ldHdvcmtDb29raWU6OnBh
cnNlQ29va2llcyhzcWxRdWVyeS52YWx1ZSgwKS50b0J5dGVBcnJheSgpKSk7CisgICAgc2V0QWxs
Q29va2llcyhjb29raWVzKTsKK30KKworI2luY2x1ZGUgIm1vY19Db29raWVKYXJRdC5jcHAiCisK
IH0KIAogLy8gdmltOiB0cz00IHN3PTQgZXQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3F0L0Nvb2tpZUphclF0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
cXQvQ29va2llSmFyUXQuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3F0L0Nvb2tpZUphclF0LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5
KC1pZXMpCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3
cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgor
ICoKKyAqLworCisjaWZuZGVmIENvb2tpZUphclF0X2gKKyNkZWZpbmUgQ29va2llSmFyUXRfaAor
CisjaW5jbHVkZSA8UXRDb3JlL1FPYmplY3Q+CisjaW5jbHVkZSA8UXROZXR3b3JrL1FOZXR3b3Jr
Q29va2llSmFyPgorI2luY2x1ZGUgPFF0U3FsL1FTcWxEYXRhYmFzZT4KKworI2luY2x1ZGUgPHd0
Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgU2hhcmVkQ29va2llSmFyUXQgOiBwdWJsaWMgUU5ldHdvcmtD
b29raWVKYXIgeworICAgIFFfT0JKRUNUCitwdWJsaWM6CisgICAgc3RhdGljIFNoYXJlZENvb2tp
ZUphclF0KiBzaGFyZWQoKTsKKyAgICBzdGF0aWMgU2hhcmVkQ29va2llSmFyUXQqIGNyZWF0ZShj
b25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIGRlc3Ryb3koKTsKKworICAgIHZvaWQgZ2V0SG9zdG5h
bWVzV2l0aENvb2tpZXMoSGFzaFNldDxTdHJpbmc+Jik7CisgICAgdm9pZCBkZWxldGVDb29raWVz
Rm9ySG9zdG5hbWUoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBkZWxldGVBbGxDb29raWVzKCk7
CisgICAgYm9vbCBzZXRDb29raWVzRnJvbVVybChjb25zdCBRTGlzdDxRTmV0d29ya0Nvb2tpZT4m
LCBjb25zdCBRVXJsJik7CisgICAgdm9pZCBsb2FkQ29va2llcygpOworCitwcml2YXRlOgorICAg
IFNoYXJlZENvb2tpZUphclF0KGNvbnN0IFN0cmluZyYpOworICAgIH5TaGFyZWRDb29raWVKYXJR
dCgpOworICAgIHZvaWQgZW5zdXJlRGF0YWJhc2VUYWJsZSgpOworCisgICAgUVNxbERhdGFiYXNl
IG1fZGF0YWJhc2U7Cit9OworCit9CisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24g
OTQ1MzgpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwyNCBAQAorMjAxMS0wOS0wNSAgQWxleGlzIE1lbmFyZCAgPGFsZXhpcy5tZW5hcmRAb3Bl
bmJvc3NhLm9yZz4KKworICAgICAgICBbUXRdIFtXSzJdIEltcGxlbWVudCBhIHBlcnNpc3RlbnQg
Y29va2llIHN0b3JhZ2UuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD02NTMwOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZCBwYXJhbWV0ZXIgdG8gdGhlIFdlYlByb2Nlc3MgY3JlYXRpb24gdG8gc3BlY2lm
eSB3aGVyZSBjb29raWVzIHNob3VsZCBiZSBzYXZlZC4KKyAgICAgICAgSXQgYWxzbyB1c2UgdGhl
IG5ldyBjb29raWUgc3RvcmFnZSBpbXBsZW1lbnRhdGlvbiBhbmQgc2V0IGl0IHRvIG91ciBuZXR3
b3JrIHN0YWNrCisgICAgICAgIHNvIGNvb2tpZXMgYXJlIHVzZWQgd2hlbiB1c2luZyBpdC4KKwor
ICAgICAgICAqIFNoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAg
ICAgKiBTaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9xdC9XZWJDb250ZXh0UXQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0
OjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL3F0
L1dlYlByb2Nlc3NRdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnBsYXRmb3Jt
SW5pdGlhbGl6ZVdlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpwbGF0
Zm9ybVRlcm1pbmF0ZSk6CisKIDIwMTEtMDktMDUgIEJhbGF6cyBLZWxlbWVuICA8a2JhbGF6c0B3
ZWJraXQub3JnPgogCiAgICAgICAgIFtRdF1bV0syXSBBZGQgcGl4ZWwgdGVzdCBzdXBwb3J0Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMuY3BwCShyZXZpc2lvbiA5NDUyNykKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTEs
NiArOTEsOSBAQCB2b2lkIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kCiAgICAg
ICAgIENvcmVJUEM6OmVuY29kZShlbmNvZGVyLCBzdG9yYWdlU2Vzc2lvbik7CiAjZW5kaWYgLy8g
VVNFKENGVVJMU1RPUkFHRVNFU1NJT05TKQogI2VuZGlmCisjaWYgUExBVEZPUk0oUVQpCisgICAg
ZW5jb2Rlci0+ZW5jb2RlKGNvb2tpZVN0b3JhZ2VEaXJlY3RvcnkpOworI2VuZGlmCiB9CiAKIGJv
b2wgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50
RGVjb2RlciogZGVjb2RlciwgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVy
cykKQEAgLTE3Miw2ICsxNzUsMTEgQEAgYm9vbCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
OjpkZWNvZAogI2VuZGlmIC8vIFVTRShDRlVSTFNUT1JBR0VTRVNTSU9OUykKICNlbmRpZgogCisj
aWYgUExBVEZPUk0oUVQpCisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUocGFyYW1ldGVycy5jb29r
aWVTdG9yYWdlRGlyZWN0b3J5KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCisKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCShyZXZpc2lvbiA5NDUyNykKKysrIFNv
dXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTExMSw2ICsxMTEsOSBAQCBzdHJ1Y3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVycyB7CiAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gc2VyaWFsaXplZERlZmF1bHRTdG9y
YWdlU2Vzc2lvbjsKICNlbmRpZiAvLyBVU0UoQ0ZVUkxTVE9SQUdFU0VTU0lPTlMpCiAjZW5kaWYg
Ly8gUExBVEZPUk0oV0lOKQorI2lmIFBMQVRGT1JNKFFUKQorICAgIFN0cmluZyBjb29raWVTdG9y
YWdlRGlyZWN0b3J5OworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJDb250ZXh0UXQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJDb250ZXh0UXQuY3BwCShyZXZpc2lv
biA5NDUyNykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJDb250ZXh0UXQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJBcHBsaWNhdGlv
bkNhY2hlU3RvcmFnZS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMu
aCIKKyNpbmNsdWRlIDxRRGVza3RvcFNlcnZpY2VzPgogI2luY2x1ZGUgPFFQcm9jZXNzPgogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKQEAgLTQyLDkgKzQzLDEwIEBAIFN0cmluZyBXZWJDb250ZXh0Ojph
cHBsaWNhdGlvbkNhY2hlRGlyZWMKICNlbmRpZgogfQogCi12b2lkIFdlYkNvbnRleHQ6OnBsYXRm
b3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MoV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYpCit2
b2lkIFdlYkNvbnRleHQ6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MoV2ViUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsKICAgICBxUmVnaXN0ZXJNZXRhVHlwZTxR
UHJvY2Vzczo6RXhpdFN0YXR1cz4oIlFQcm9jZXNzOjpFeGl0U3RhdHVzIik7CisgICAgcGFyYW1l
dGVycy5jb29raWVTdG9yYWdlRGlyZWN0b3J5ID0gUURlc2t0b3BTZXJ2aWNlczo6c3RvcmFnZUxv
Y2F0aW9uKFFEZXNrdG9wU2VydmljZXM6OkRhdGFMb2NhdGlvbik7CiB9CiAKIHZvaWQgV2ViQ29u
dGV4dDo6cGxhdGZvcm1JbnZhbGlkYXRlQ29udGV4dCgpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL3F0L1dlYlByb2Nlc3NRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9xdC9XZWJQcm9jZXNzUXQuY3BwCShyZXZpc2lvbiA5NDUyNykKKysrIFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvcXQvV2ViUHJvY2Vzc1F0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjksNiArMjksOCBAQAogI2luY2x1ZGUgIldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaD4KICNpbmNs
dWRlIDxRTmV0d29ya0FjY2Vzc01hbmFnZXI+CisjaW5jbHVkZSA8UU5ldHdvcmtDb29raWVKYXI+
CisjaW5jbHVkZSA8V2ViQ29yZS9Db29raWVKYXJRdC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IApAQCAtNDQsNiArNDYsMTEgQEAgdm9pZCBXZWJQcm9jZXNzOjpwbGF0Zm9ybUNsZWFyUmVzb3Vy
Y2VDYQogdm9pZCBXZWJQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKGNvbnN0
IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIENvcmVJUEM6OkFyZ3Vt
ZW50RGVjb2RlciogYXJndW1lbnRzKQogewogICAgIG1fbmV0d29ya0FjY2Vzc01hbmFnZXIgPSBu
ZXcgUU5ldHdvcmtBY2Nlc3NNYW5hZ2VyOworICAgIEFTU0VSVCghcGFyYW1ldGVycy5jb29raWVT
dG9yYWdlRGlyZWN0b3J5LmlzRW1wdHkoKSAmJiAhcGFyYW1ldGVycy5jb29raWVTdG9yYWdlRGly
ZWN0b3J5LmlzTnVsbCgpKTsKKyAgICBXZWJDb3JlOjpTaGFyZWRDb29raWVKYXJRdCogamFyID0g
V2ViQ29yZTo6U2hhcmVkQ29va2llSmFyUXQ6OmNyZWF0ZShwYXJhbWV0ZXJzLmNvb2tpZVN0b3Jh
Z2VEaXJlY3RvcnkpOworICAgIG1fbmV0d29ya0FjY2Vzc01hbmFnZXItPnNldENvb2tpZUphcihq
YXIpOworICAgIC8vIERvIG5vdCBsZXQgUU5ldHdvcmtBY2Nlc3NNYW5hZ2VyIGRlbGV0ZSB0aGUg
amFyLgorICAgIGphci0+c2V0UGFyZW50KDApOwogCiAgICAgLy8gRGlzYWJsZSBydW50aW1lIGVu
YWJsZWQgZmVhdHVyZXMgdGhhdCBoYXZlIG5vIFdlYktpdDIgaW1wbGVtZW50YXRpb24geWV0Lgog
I2lmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04pCkBAIC01OSw2ICs2Niw3IEBAIHZvaWQgV2Vi
UHJvY2Vzczo6cGxhdGZvcm1UZXJtaW5hdGUoKQogewogICAgIGRlbGV0ZSBtX25ldHdvcmtBY2Nl
c3NNYW5hZ2VyOwogICAgIG1fbmV0d29ya0FjY2Vzc01hbmFnZXIgPSAwOworICAgIFdlYkNvcmU6
OlNoYXJlZENvb2tpZUphclF0OjpzaGFyZWQoKS0+ZGVzdHJveSgpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106624</attachid>
            <date>2011-09-07 13:21:02 -0700</date>
            <delta_ts>2011-09-07 14:56:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65309-20110907172050.patch</filename>
            <type>text/plain</type>
            <size>14938</size>
            <attacher name="Alexis Menard (darktears)">menard</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk0NzA2KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTEtMDktMDcgIEFsZXhpcyBN
ZW5hcmQgIDxhbGV4aXMubWVuYXJkQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgW1F0XSBbV0sy
XSBJbXBsZW1lbnQgYSBwZXJzaXN0ZW50IGNvb2tpZSBzdG9yYWdlLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjUzMDkKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgYSBjb29raWUgc3RvcmFn
ZSBmb3IgdGhlIFF0IHBvcnQgb24gV2ViS2l0Mi4KKyAgICAgICAgVGhlIGltcGxlbWVudGF0aW9u
IGlzIHVzaW5nIGEgU1FMaXRlIGRhdGFiYXNlIHRvIHN0b3JlIHRoZSBjb29raWVzCisgICAgICAg
IGFuZCByZXN0b3JlIHRoZW0uIEl0IHVzZXMgYSBzdGF0aWMgb2JqZWN0IGFzIENvb2tpZUphciBp
cyBub3QgYW4KKyAgICAgICAgb2JqZWN0IGJ1dCBhIHNldCBvZiBnbG9iYWwgZnVuY3Rpb25zLiBU
aGUgYWN0dWFsIHNhdmluZy9yZXN0b3JpbmcgaXMgb24KKyAgICAgICAgdGhlIFdlYlByb2Nlc3Mg
c2lkZSB3aGVyZSBvdXIgbmV0d29yayBzdGFjayBsaXZlcy4KKworICAgICAgICAqIFdlYkNvcmUu
cHJpOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIHBsYXRmb3JtL3F0L0Nvb2tp
ZUphclF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldEhvc3RuYW1lc1dpdGhDb29raWVzKToK
KyAgICAgICAgKFdlYkNvcmU6OmRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZSk6CisgICAgICAgIChX
ZWJDb3JlOjpkZWxldGVBbGxDb29raWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZENvb2tp
ZUphclF0OjpzaGFyZWQpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQ29va2llSmFyUXQ6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRDb29raWVKYXJRdDo6ZGVzdHJveSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTaGFyZWRDb29raWVKYXJRdDo6Z2V0SG9zdG5hbWVzV2l0aENvb2tp
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQ29va2llSmFyUXQ6OmRlbGV0ZUNvb2tpZXNG
b3JIb3N0bmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRDb29raWVKYXJRdDo6ZGVsZXRl
QWxsQ29va2llcyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRDb29raWVKYXJRdDo6U2hhcmVk
Q29va2llSmFyUXQpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQ29va2llSmFyUXQ6On5TaGFy
ZWRDb29raWVKYXJRdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRDb29raWVKYXJRdDo6c2V0
Q29va2llc0Zyb21VcmwpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQ29va2llSmFyUXQ6OmVu
c3VyZURhdGFiYXNlVGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQ29va2llSmFyUXQ6
OmxvYWRDb29raWVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9Db29raWVKYXJRdC5oOiBBZGRl
ZC4KKwogMjAxMS0wOS0wMiAgT2phbiBWYWZhaSAgPG9qYW5AY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIHNwbGl0IG92ZXJyaWRlU2l6ZSBpbnRvIG92ZXJyaWRlSGVpZ2h0IGFuZCBvdmVycmlkZVdp
ZHRoCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnByaQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnByaQkocmV2aXNpb24gOTQ2NjkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnByaQkod29ya2luZyBjb3B5KQpAQCAtNiw3ICs2LDcgQEAgaW5jbHVkZShmZWF0
dXJlcy5wcmkpCiAjIFdlIGVuYWJsZSBUZXh0dXJlTWFwcGVyIGJ5IGRlZmF1bHQ7IHJlbW92ZSB0
aGlzIGxpbmUgdG8gZW5hYmxlIEdyYXBoaWNzTGF5ZXJRdC4KIENPTkZJRyArPSB0ZXhtYXAKIAot
UVQgKj0gbmV0d29yaworUVQgKj0gbmV0d29yayBzcWwKIAogU09VUkNFX0RJUiA9ICQkcmVwbGFj
ZShQV0QsIC9XZWJDb3JlLCAiIikKIApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8JKHJldmlzaW9uIDk0NjY5
KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8JKHdvcmtpbmcgY29weSkKQEAgLTIwODgs
NiArMjA4OCw3IEBAIEhFQURFUlMgKz0gXAogICAgIHBsYXRmb3JtL1BsYXRmb3JtVG91Y2hQb2lu
dC5oIFwKICAgICBwbGF0Zm9ybS9Qb3B1cE1lbnUuaCBcCiAgICAgcGxhdGZvcm0vcXQvQ2xpcGJv
YXJkUXQuaCBcCisgICAgcGxhdGZvcm0vcXQvQ29va2llSmFyUXQuaCBcCiAgICAgcGxhdGZvcm0v
cXQvUVdlYlBhZ2VDbGllbnQuaCBcCiAgICAgcGxhdGZvcm0vcXQvUXRTdHlsZU9wdGlvbldlYkNv
bWJvQm94LmggXAogICAgIHBsYXRmb3JtL3F0L1JlbmRlclRoZW1lUXQuaCBcCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9Db29raWVKYXJRdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvQ29va2llSmFyUXQuY3BwCShyZXZpc2lvbiA5NDY2OSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L0Nvb2tpZUphclF0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgR2VvcmdlIFN0
YWlrb3MgPHN0YWlrb3NAa2RlLm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBOb2tpYSBDb3Jw
b3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKICAqCiAgKiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKQEAgLTI2LDYgKzI3LDggQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiQ29va2llSmFyUXQuaCIKKwogI2luY2x1ZGUgIkNvb2tpZUphci5oIgogCiAj
aW5jbHVkZSAiQ29va2llLmgiCkBAIC0zOCwxMiArNDEsMTcgQEAKICNpbmNsdWRlICJxd2ViZnJh
bWUuaCIKICNpbmNsdWRlICJxd2VicGFnZS5oIgogI2luY2x1ZGUgInF3ZWJzZXR0aW5ncy5oIgor
I2luY2x1ZGUgPFFEYXRlVGltZT4KKyNpbmNsdWRlIDxRRGlyPgogI2luY2x1ZGUgPFFOZXR3b3Jr
QWNjZXNzTWFuYWdlcj4KICNpbmNsdWRlIDxRTmV0d29ya0Nvb2tpZT4KKyNpbmNsdWRlIDxRU3Fs
UXVlcnk+CiAjaW5jbHVkZSA8UVN0cmluZ0xpc3Q+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAor
c3RhdGljIFNoYXJlZENvb2tpZUphclF0KiBzX3NoYXJlZENvb2tpZUphclF0ID0gMDsKKwogc3Rh
dGljIFFOZXR3b3JrQ29va2llSmFyICpjb29raWVKYXIoY29uc3QgRG9jdW1lbnQgKmRvY3VtZW50
KQogewogICAgIGlmICghZG9jdW1lbnQpCkBAIC0xNDQsMTkgKzE1MiwxMzIgQEAgdm9pZCBkZWxl
dGVDb29raWUoY29uc3QgRG9jdW1lbnQqLCBjb25zdAogCiB2b2lkIGdldEhvc3RuYW1lc1dpdGhD
b29raWVzKEhhc2hTZXQ8U3RyaW5nPiYgaG9zdG5hbWVzKQogewotICAgIC8vIEZJWE1FOiBOb3Qg
eWV0IGltcGxlbWVudGVkCisgICAgU2hhcmVkQ29va2llSmFyUXQqIGphciA9IFNoYXJlZENvb2tp
ZUphclF0OjpzaGFyZWQoKTsKKyAgICBpZiAoamFyKQorICAgICAgICBqYXItPmdldEhvc3RuYW1l
c1dpdGhDb29raWVzKGhvc3RuYW1lcyk7CiB9CiAKIHZvaWQgZGVsZXRlQ29va2llc0Zvckhvc3Ru
YW1lKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCiB7Ci0gICAgLy8gRklYTUU6IE5vdCB5ZXQgaW1w
bGVtZW50ZWQKKyAgICBTaGFyZWRDb29raWVKYXJRdCogamFyID0gU2hhcmVkQ29va2llSmFyUXQ6
OnNoYXJlZCgpOworICAgIGlmIChqYXIpCisgICAgICAgIGphci0+ZGVsZXRlQ29va2llc0Zvckhv
c3RuYW1lKGhvc3RuYW1lKTsKIH0KIAogdm9pZCBkZWxldGVBbGxDb29raWVzKCkKIHsKLSAgICAv
LyBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRlZAorICAgIFNoYXJlZENvb2tpZUphclF0KiBqYXIg
PSBTaGFyZWRDb29raWVKYXJRdDo6c2hhcmVkKCk7CisgICAgaWYgKGphcikKKyAgICAgICAgamFy
LT5kZWxldGVBbGxDb29raWVzKCk7Cit9CisKK1NoYXJlZENvb2tpZUphclF0KiBTaGFyZWRDb29r
aWVKYXJRdDo6c2hhcmVkKCkKK3sKKyAgICByZXR1cm4gc19zaGFyZWRDb29raWVKYXJRdDsKK30K
KworU2hhcmVkQ29va2llSmFyUXQqIFNoYXJlZENvb2tpZUphclF0OjpjcmVhdGUoY29uc3QgU3Ry
aW5nJiBjb29raWVTdG9yYWdlRGlyZWN0b3J5KQoreworICAgIGlmICghc19zaGFyZWRDb29raWVK
YXJRdCkKKyAgICAgICAgc19zaGFyZWRDb29raWVKYXJRdCA9IG5ldyBTaGFyZWRDb29raWVKYXJR
dChjb29raWVTdG9yYWdlRGlyZWN0b3J5KTsKKworICAgIHJldHVybiBzX3NoYXJlZENvb2tpZUph
clF0OworfQorCit2b2lkIFNoYXJlZENvb2tpZUphclF0OjpkZXN0cm95KCkKK3sKKyAgICBkZWxl
dGUgc19zaGFyZWRDb29raWVKYXJRdDsKKyAgICBzX3NoYXJlZENvb2tpZUphclF0ID0gMDsKK30K
Kwordm9pZCBTaGFyZWRDb29raWVKYXJRdDo6Z2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoSGFzaFNl
dDxTdHJpbmc+JiBob3N0bmFtZXMpCit7CisgICAgUUxpc3Q8UU5ldHdvcmtDb29raWU+IGNvb2tp
ZXMgPSBhbGxDb29raWVzKCk7CisgICAgZm9yZWFjaCAoY29uc3QgUU5ldHdvcmtDb29raWUmIG5l
dHdvcmtDb29raWUsIGNvb2tpZXMpCisgICAgICAgIGhvc3RuYW1lcy5hZGQobmV0d29ya0Nvb2tp
ZS5kb21haW4oKSk7Cit9CisKK3ZvaWQgU2hhcmVkQ29va2llSmFyUXQ6OmRlbGV0ZUNvb2tpZXNG
b3JIb3N0bmFtZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQoreworICAgIFFMaXN0PFFOZXR3b3Jr
Q29va2llPiBjb29raWVzID0gYWxsQ29va2llcygpOworICAgIFFMaXN0PFFOZXR3b3JrQ29va2ll
Pjo6SXRlcmF0b3IgaXQgPSBjb29raWVzLmJlZ2luKCk7CisgICAgUUxpc3Q8UU5ldHdvcmtDb29r
aWU+OjpJdGVyYXRvciBlbmQgPSBjb29raWVzLmVuZCgpOworICAgIFFTcWxRdWVyeSBzcWxRdWVy
eShtX2RhdGFiYXNlKTsKKyAgICBzcWxRdWVyeS5wcmVwYXJlKFFMYXRpbjFTdHJpbmcoIkRFTEVU
RSBGUk9NIGNvb2tpZXMgV0hFUkUgY29va2llSWQ9OmNvb2tpZUlkdmFsdWUiKSk7CisgICAgd2hp
bGUgKGl0ICE9IGVuZCkgeworICAgICAgICBpZiAoaXQtPmRvbWFpbigpID09IFFTdHJpbmcoaG9z
dG5hbWUpKSB7CisgICAgICAgICAgICBzcWxRdWVyeS5iaW5kVmFsdWUoUUxhdGluMVN0cmluZygi
OmNvb2tpZUlkdmFsdWUiKSwgaXQtPmRvbWFpbigpLmFwcGVuZChRTGF0aW4xU3RyaW5nKGl0LT5u
YW1lKCkpKSk7CisgICAgICAgICAgICBzcWxRdWVyeS5leGVjKCk7CisgICAgICAgICAgICBpdCA9
IGNvb2tpZXMuZXJhc2UoaXQpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGl0Kys7Cisg
ICAgfQorICAgIHNldEFsbENvb2tpZXMoY29va2llcyk7CiB9CiAKK3ZvaWQgU2hhcmVkQ29va2ll
SmFyUXQ6OmRlbGV0ZUFsbENvb2tpZXMoKQoreworICAgIFFTcWxRdWVyeSBzcWxRdWVyeShtX2Rh
dGFiYXNlKTsKKyAgICBzcWxRdWVyeS5wcmVwYXJlKFFMYXRpbjFTdHJpbmcoIkRFTEVURSAqIEZS
T00gY29va2llcyIpKTsKKyAgICBzcWxRdWVyeS5leGVjKCk7CisgICAgc2V0QWxsQ29va2llcyhR
TGlzdDxRTmV0d29ya0Nvb2tpZT4oKSk7Cit9CisKK1NoYXJlZENvb2tpZUphclF0OjpTaGFyZWRD
b29raWVKYXJRdChjb25zdCBTdHJpbmcmIGNvb2tpZVN0b3JhZ2VEaXJlY3RvcnkpCit7CisgICAg
bV9kYXRhYmFzZSA9IFFTcWxEYXRhYmFzZTo6YWRkRGF0YWJhc2UoUUxhdGluMVN0cmluZygiUVNR
TElURSIpKTsKKyAgICBjb25zdCBRU3RyaW5nIGNvb2tpZVN0b3JhZ2VQYXRoID0gY29va2llU3Rv
cmFnZURpcmVjdG9yeTsKKyAgICBRRGlyKCkubWtwYXRoKGNvb2tpZVN0b3JhZ2VQYXRoICsgUUxh
dGluMVN0cmluZygiLlF0V2ViS2l0LyIpKTsKKyAgICBjb25zdCBRU3RyaW5nIGRhdGFCYXNlTmFt
ZSA9IGNvb2tpZVN0b3JhZ2VQYXRoICsgUUxhdGluMVN0cmluZygiLlF0V2ViS2l0L2Nvb2tpZXMu
ZGIiKTsKKyAgICBtX2RhdGFiYXNlLnNldERhdGFiYXNlTmFtZShkYXRhQmFzZU5hbWUpOworICAg
IGVuc3VyZURhdGFiYXNlVGFibGUoKTsKKyAgICBsb2FkQ29va2llcygpOworfQorCitTaGFyZWRD
b29raWVKYXJRdDo6flNoYXJlZENvb2tpZUphclF0KCkKK3sKKyAgICBtX2RhdGFiYXNlLmNsb3Nl
KCk7Cit9CisKK2Jvb2wgU2hhcmVkQ29va2llSmFyUXQ6OnNldENvb2tpZXNGcm9tVXJsKGNvbnN0
IFFMaXN0PFFOZXR3b3JrQ29va2llPiYgY29va2llTGlzdCwgY29uc3QgUVVybCYgdXJsKQorewor
ICAgIGJvb2wgc3RhdHVzID0gUU5ldHdvcmtDb29raWVKYXI6OnNldENvb2tpZXNGcm9tVXJsKGNv
b2tpZUxpc3QsIHVybCk7CisgICAgUVNxbFF1ZXJ5IHNxbFF1ZXJ5KG1fZGF0YWJhc2UpOworICAg
IHNxbFF1ZXJ5LnByZXBhcmUoUUxhdGluMVN0cmluZygiSU5TRVJUIE9SIFJFUExBQ0UgSU5UTyBj
b29raWVzIChjb29raWVJZCwgY29va2llKSBWQUxVRVMgKDpjb29raWVJZHZhbHVlLCA6Y29va2ll
dmFsdWUpIikpOworICAgIGZvcmVhY2ggKGNvbnN0IFFOZXR3b3JrQ29va2llICZjb29raWUsIGNv
b2tpZXNGb3JVcmwodXJsKSkgeworICAgICAgICBpZiAoY29va2llLmlzU2Vzc2lvbkNvb2tpZSgp
KQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIHNxbFF1ZXJ5LmJpbmRWYWx1ZShRTGF0
aW4xU3RyaW5nKCI6Y29va2llSWR2YWx1ZSIpLCBjb29raWUuZG9tYWluKCkuYXBwZW5kKFFMYXRp
bjFTdHJpbmcoY29va2llLm5hbWUoKSkpKTsKKyAgICAgICAgc3FsUXVlcnkuYmluZFZhbHVlKFFM
YXRpbjFTdHJpbmcoIjpjb29raWV2YWx1ZSIpLCBjb29raWUudG9SYXdGb3JtKCkpOworICAgICAg
ICBzcWxRdWVyeS5leGVjKCk7CisgICAgfQorICAgIHJldHVybiBzdGF0dXM7Cit9CisKK3ZvaWQg
U2hhcmVkQ29va2llSmFyUXQ6OmVuc3VyZURhdGFiYXNlVGFibGUoKQoreworICAgIGlmICghbV9k
YXRhYmFzZS5vcGVuKCkpIHsKKyAgICAgICAgcVdhcm5pbmcoIkNhbid0IG9wZW4gY29va2llIGRh
dGFiYXNlIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgUVNxbFF1ZXJ5IHNxbFF1ZXJ5
KG1fZGF0YWJhc2UpOworICAgIHNxbFF1ZXJ5LnByZXBhcmUoUUxhdGluMVN0cmluZygiQ1JFQVRF
IFRBQkxFIElGIE5PVCBFWElTVFMgY29va2llcyAoY29va2llSWQgVkFSQ0hBUiBQUklNQVJZIEtF
WSwgY29va2llIEJMT0IpOyIpKTsKKyAgICBzcWxRdWVyeS5leGVjKCk7Cit9CisKK3ZvaWQgU2hh
cmVkQ29va2llSmFyUXQ6OmxvYWRDb29raWVzKCkKK3sKKyAgICBRTGlzdDxRTmV0d29ya0Nvb2tp
ZT4gY29va2llczsKKyAgICBRU3FsUXVlcnkgc3FsUXVlcnkobV9kYXRhYmFzZSk7CisgICAgc3Fs
UXVlcnkucHJlcGFyZShRTGF0aW4xU3RyaW5nKCJTRUxFQ1QgY29va2llIEZST00gY29va2llcyIp
KTsKKyAgICBzcWxRdWVyeS5leGVjKCk7CisgICAgd2hpbGUgKHNxbFF1ZXJ5Lm5leHQoKSkKKyAg
ICAgICAgY29va2llcy5hcHBlbmQoUU5ldHdvcmtDb29raWU6OnBhcnNlQ29va2llcyhzcWxRdWVy
eS52YWx1ZSgwKS50b0J5dGVBcnJheSgpKSk7CisgICAgc2V0QWxsQ29va2llcyhjb29raWVzKTsK
K30KKworI2luY2x1ZGUgIm1vY19Db29raWVKYXJRdC5jcHAiCisKIH0KIAogLy8gdmltOiB0cz00
IHN3PTQgZXQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L0Nvb2tpZUphclF0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvQ29va2llSmFyUXQuaAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L0Nvb2tpZUphclF0LmgJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEg
Tm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKgorICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAq
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjaWZuZGVm
IENvb2tpZUphclF0X2gKKyNkZWZpbmUgQ29va2llSmFyUXRfaAorCisjaW5jbHVkZSA8UXRDb3Jl
L1FPYmplY3Q+CisjaW5jbHVkZSA8UXROZXR3b3JrL1FOZXR3b3JrQ29va2llSmFyPgorI2luY2x1
ZGUgPFF0U3FsL1FTcWxEYXRhYmFzZT4KKworI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xh
c3MgU2hhcmVkQ29va2llSmFyUXQgOiBwdWJsaWMgUU5ldHdvcmtDb29raWVKYXIgeworICAgIFFf
T0JKRUNUCitwdWJsaWM6CisgICAgc3RhdGljIFNoYXJlZENvb2tpZUphclF0KiBzaGFyZWQoKTsK
KyAgICBzdGF0aWMgU2hhcmVkQ29va2llSmFyUXQqIGNyZWF0ZShjb25zdCBTdHJpbmcmKTsKKyAg
ICB2b2lkIGRlc3Ryb3koKTsKKworICAgIHZvaWQgZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoSGFz
aFNldDxTdHJpbmc+Jik7CisgICAgdm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoY29uc3Qg
U3RyaW5nJik7CisgICAgdm9pZCBkZWxldGVBbGxDb29raWVzKCk7CisgICAgYm9vbCBzZXRDb29r
aWVzRnJvbVVybChjb25zdCBRTGlzdDxRTmV0d29ya0Nvb2tpZT4mLCBjb25zdCBRVXJsJik7Cisg
ICAgdm9pZCBsb2FkQ29va2llcygpOworCitwcml2YXRlOgorICAgIFNoYXJlZENvb2tpZUphclF0
KGNvbnN0IFN0cmluZyYpOworICAgIH5TaGFyZWRDb29raWVKYXJRdCgpOworICAgIHZvaWQgZW5z
dXJlRGF0YWJhc2VUYWJsZSgpOworCisgICAgUVNxbERhdGFiYXNlIG1fZGF0YWJhc2U7Cit9Owor
Cit9CisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gOTQ3MDYpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNCBAQAorMjAxMS0w
OS0wNyAgQWxleGlzIE1lbmFyZCAgPGFsZXhpcy5tZW5hcmRAb3BlbmJvc3NhLm9yZz4KKworICAg
ICAgICBbUXRdIFtXSzJdIEltcGxlbWVudCBhIHBlcnNpc3RlbnQgY29va2llIHN0b3JhZ2UuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTMwOQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBwYXJhbWV0
ZXIgdG8gdGhlIFdlYlByb2Nlc3MgY3JlYXRpb24gdG8gc3BlY2lmeSB3aGVyZSBjb29raWVzIHNo
b3VsZCBiZSBzYXZlZC4KKyAgICAgICAgSXQgYWxzbyB1c2UgdGhlIG5ldyBjb29raWUgc3RvcmFn
ZSBpbXBsZW1lbnRhdGlvbiBhbmQgc2V0IGl0IHRvIG91ciBuZXR3b3JrIHN0YWNrCisgICAgICAg
IHNvIGNvb2tpZXMgYXJlIHVzZWQgd2hlbiB1c2luZyBpdC4KKworICAgICAgICAqIFNoYXJlZC9X
ZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9XZWJDb250
ZXh0UXQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjpwbGF0Zm9ybUluaXRpYWxp
emVXZWJQcm9jZXNzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL3F0L1dlYlByb2Nlc3NRdC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nl
c3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpwbGF0Zm9ybVRlcm1pbmF0ZSk6CisK
IDIwMTEtMDktMDcgIEFsZXhlaSBTdml0a2luZSAgPGFzdml0a2luZUBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgQWRkIHRlc3QgaW5mcmFzdHJ1Y3R1cmUgdG8gdGVzdCBydWJiZXItYmFuZGluZyBv
dmVyaGFuZyBkcmF3aW5nIGFsb25nIHdpdGggbGF5b3V0IHRlc3RzIGZvciBleGlzdGluZyBDaHJv
bWl1bSBNYWMgb3ZlcmhhbmcgZHJhd2luZyBpbiB0aGUgbm9uLWdwdSBwYXRoLgpJbmRleDogU291
cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzLmNwcAkocmV2aXNpb24gOTQ2NjkpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkxLDYgKzkxLDkg
QEAgdm9pZCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZAogICAgICAgICBDb3Jl
SVBDOjplbmNvZGUoZW5jb2Rlciwgc3RvcmFnZVNlc3Npb24pOwogI2VuZGlmIC8vIFVTRShDRlVS
TFNUT1JBR0VTRVNTSU9OUykKICNlbmRpZgorI2lmIFBMQVRGT1JNKFFUKQorICAgIGVuY29kZXIt
PmVuY29kZShjb29raWVTdG9yYWdlRGlyZWN0b3J5KTsKKyNlbmRpZgogfQogCiBib29sIFdlYlBy
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXIq
IGRlY29kZXIsIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCkBAIC0x
NzIsNiArMTc1LDExIEBAIGJvb2wgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2QK
ICNlbmRpZiAvLyBVU0UoQ0ZVUkxTVE9SQUdFU0VTU0lPTlMpCiAjZW5kaWYKIAorI2lmIFBMQVRG
T1JNKFFUKQorICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHBhcmFtZXRlcnMuY29va2llU3RvcmFn
ZURpcmVjdG9yeSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlBy
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAkocmV2aXNpb24gOTQ2NjkpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xMTEsNiArMTExLDkgQEAgc3RydWN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMg
ewogICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IHNlcmlhbGl6ZWREZWZhdWx0U3RvcmFnZVNlc3Np
b247CiAjZW5kaWYgLy8gVVNFKENGVVJMU1RPUkFHRVNFU1NJT05TKQogI2VuZGlmIC8vIFBMQVRG
T1JNKFdJTikKKyNpZiBQTEFURk9STShRVCkKKyAgICBTdHJpbmcgY29va2llU3RvcmFnZURpcmVj
dG9yeTsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvcXQvV2ViQ29udGV4dFF0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvV2ViQ29udGV4dFF0LmNwcAkocmV2aXNpb24gOTQ2Njkp
CisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvV2ViQ29udGV4dFF0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiQXBwbGljYXRpb25DYWNoZVN0
b3JhZ2UuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCisjaW5j
bHVkZSA8UURlc2t0b3BTZXJ2aWNlcz4KICNpbmNsdWRlIDxRUHJvY2Vzcz4KIAogbmFtZXNwYWNl
IFdlYktpdCB7CkBAIC00Miw5ICs0MywxMCBAQCBTdHJpbmcgV2ViQ29udGV4dDo6YXBwbGljYXRp
b25DYWNoZURpcmVjCiAjZW5kaWYKIH0KIAotdm9pZCBXZWJDb250ZXh0OjpwbGF0Zm9ybUluaXRp
YWxpemVXZWJQcm9jZXNzKFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmKQordm9pZCBXZWJD
b250ZXh0OjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKFdlYlByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB7CiAgICAgcVJlZ2lzdGVyTWV0YVR5cGU8UVByb2Nlc3M6
OkV4aXRTdGF0dXM+KCJRUHJvY2Vzczo6RXhpdFN0YXR1cyIpOworICAgIHBhcmFtZXRlcnMuY29v
a2llU3RvcmFnZURpcmVjdG9yeSA9IFFEZXNrdG9wU2VydmljZXM6OnN0b3JhZ2VMb2NhdGlvbihR
RGVza3RvcFNlcnZpY2VzOjpEYXRhTG9jYXRpb24pOwogfQogCiB2b2lkIFdlYkNvbnRleHQ6OnBs
YXRmb3JtSW52YWxpZGF0ZUNvbnRleHQoKQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9xdC9XZWJQcm9jZXNzUXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvcXQvV2ViUHJvY2Vzc1F0LmNwcAkocmV2aXNpb24gOTQ2NjkpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL3F0L1dlYlByb2Nlc3NRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5
LDYgKzI5LDggQEAKICNpbmNsdWRlICJXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAj
aW5jbHVkZSA8V2ViQ29yZS9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8UU5l
dHdvcmtBY2Nlc3NNYW5hZ2VyPgorI2luY2x1ZGUgPFFOZXR3b3JrQ29va2llSmFyPgorI2luY2x1
ZGUgPFdlYkNvcmUvQ29va2llSmFyUXQuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTQ0
LDYgKzQ2LDExIEBAIHZvaWQgV2ViUHJvY2Vzczo6cGxhdGZvcm1DbGVhclJlc291cmNlQ2EKIHZv
aWQgV2ViUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2Vzcyhjb25zdCBXZWJQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBDb3JlSVBDOjpBcmd1bWVudERlY29k
ZXIqIGFyZ3VtZW50cykKIHsKICAgICBtX25ldHdvcmtBY2Nlc3NNYW5hZ2VyID0gbmV3IFFOZXR3
b3JrQWNjZXNzTWFuYWdlcjsKKyAgICBBU1NFUlQoIXBhcmFtZXRlcnMuY29va2llU3RvcmFnZURp
cmVjdG9yeS5pc0VtcHR5KCkgJiYgIXBhcmFtZXRlcnMuY29va2llU3RvcmFnZURpcmVjdG9yeS5p
c051bGwoKSk7CisgICAgV2ViQ29yZTo6U2hhcmVkQ29va2llSmFyUXQqIGphciA9IFdlYkNvcmU6
OlNoYXJlZENvb2tpZUphclF0OjpjcmVhdGUocGFyYW1ldGVycy5jb29raWVTdG9yYWdlRGlyZWN0
b3J5KTsKKyAgICBtX25ldHdvcmtBY2Nlc3NNYW5hZ2VyLT5zZXRDb29raWVKYXIoamFyKTsKKyAg
ICAvLyBEbyBub3QgbGV0IFFOZXR3b3JrQWNjZXNzTWFuYWdlciBkZWxldGUgdGhlIGphci4KKyAg
ICBqYXItPnNldFBhcmVudCgwKTsKIAogICAgIC8vIERpc2FibGUgcnVudGltZSBlbmFibGVkIGZl
YXR1cmVzIHRoYXQgaGF2ZSBubyBXZWJLaXQyIGltcGxlbWVudGF0aW9uIHlldC4KICNpZiBFTkFC
TEUoREVWSUNFX09SSUVOVEFUSU9OKQpAQCAtNTksNiArNjYsNyBAQCB2b2lkIFdlYlByb2Nlc3M6
OnBsYXRmb3JtVGVybWluYXRlKCkKIHsKICAgICBkZWxldGUgbV9uZXR3b3JrQWNjZXNzTWFuYWdl
cjsKICAgICBtX25ldHdvcmtBY2Nlc3NNYW5hZ2VyID0gMDsKKyAgICBXZWJDb3JlOjpTaGFyZWRD
b29raWVKYXJRdDo6c2hhcmVkKCktPmRlc3Ryb3koKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106648</attachid>
            <date>2011-09-07 14:56:15 -0700</date>
            <delta_ts>2011-09-20 07:16:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65309-20110907185603.patch</filename>
            <type>text/plain</type>
            <size>15079</size>
            <attacher name="Alexis Menard (darktears)">menard</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk0NzE3KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTEtMDktMDcgIEFsZXhpcyBN
ZW5hcmQgIDxhbGV4aXMubWVuYXJkQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgW1F0XSBbV0sy
XSBJbXBsZW1lbnQgYSBwZXJzaXN0ZW50IGNvb2tpZSBzdG9yYWdlLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjUzMDkKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgYSBjb29raWUgc3RvcmFn
ZSBmb3IgdGhlIFF0IHBvcnQgb24gV2ViS2l0Mi4KKyAgICAgICAgVGhlIGltcGxlbWVudGF0aW9u
IGlzIHVzaW5nIGEgU1FMaXRlIGRhdGFiYXNlIHRvIHN0b3JlIHRoZSBjb29raWVzCisgICAgICAg
IGFuZCByZXN0b3JlIHRoZW0uIEl0IHVzZXMgYSBzdGF0aWMgb2JqZWN0IGFzIENvb2tpZUphciBp
cyBub3QgYW4KKyAgICAgICAgb2JqZWN0IGJ1dCBhIHNldCBvZiBnbG9iYWwgZnVuY3Rpb25zLiBU
aGUgYWN0dWFsIHNhdmluZy9yZXN0b3JpbmcgaXMgb24KKyAgICAgICAgdGhlIFdlYlByb2Nlc3Mg
c2lkZSB3aGVyZSBvdXIgbmV0d29yayBzdGFjayBsaXZlcy4KKworICAgICAgICAqIFdlYkNvcmUu
cHJpOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIHBsYXRmb3JtL3F0L0Nvb2tp
ZUphclF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldEhvc3RuYW1lc1dpdGhDb29raWVzKToK
KyAgICAgICAgKFdlYkNvcmU6OmRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZSk6CisgICAgICAgIChX
ZWJDb3JlOjpkZWxldGVBbGxDb29raWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZENvb2tp
ZUphclF0OjpzaGFyZWQpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQ29va2llSmFyUXQ6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRDb29raWVKYXJRdDo6ZGVzdHJveSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTaGFyZWRDb29raWVKYXJRdDo6Z2V0SG9zdG5hbWVzV2l0aENvb2tp
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQ29va2llSmFyUXQ6OmRlbGV0ZUNvb2tpZXNG
b3JIb3N0bmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRDb29raWVKYXJRdDo6ZGVsZXRl
QWxsQ29va2llcyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRDb29raWVKYXJRdDo6U2hhcmVk
Q29va2llSmFyUXQpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQ29va2llSmFyUXQ6On5TaGFy
ZWRDb29raWVKYXJRdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRDb29raWVKYXJRdDo6c2V0
Q29va2llc0Zyb21VcmwpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQ29va2llSmFyUXQ6OmVu
c3VyZURhdGFiYXNlVGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQ29va2llSmFyUXQ6
OmxvYWRDb29raWVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9Db29raWVKYXJRdC5oOiBBZGRl
ZC4KKwogMjAxMS0wOS0wNyAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgog
CiAgICAgICAgIENoYW5nZXMgdG8gYXJpYS1oaWRkZW4gZG9uJ3QgY2hhbmdlIFZPIG5hdmlnYXRp
b24KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJpCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUucHJpCShyZXZpc2lvbiA5NDY2OSkKKysrIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUucHJpCSh3b3JraW5nIGNvcHkpCkBAIC02LDcgKzYsNyBAQCBpbmNsdWRlKGZlYXR1
cmVzLnByaSkKICMgV2UgZW5hYmxlIFRleHR1cmVNYXBwZXIgYnkgZGVmYXVsdDsgcmVtb3ZlIHRo
aXMgbGluZSB0byBlbmFibGUgR3JhcGhpY3NMYXllclF0LgogQ09ORklHICs9IHRleG1hcAogCi1R
VCAqPSBuZXR3b3JrCitRVCAqPSBuZXR3b3JrIHNxbAogCiBTT1VSQ0VfRElSID0gJCRyZXBsYWNl
KFBXRCwgL1dlYkNvcmUsICIiKQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybwkocmV2aXNpb24gOTQ2Njkp
CisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybwkod29ya2luZyBjb3B5KQpAQCAtMjA4OCw2
ICsyMDg4LDcgQEAgSEVBREVSUyArPSBcCiAgICAgcGxhdGZvcm0vUGxhdGZvcm1Ub3VjaFBvaW50
LmggXAogICAgIHBsYXRmb3JtL1BvcHVwTWVudS5oIFwKICAgICBwbGF0Zm9ybS9xdC9DbGlwYm9h
cmRRdC5oIFwKKyAgICBwbGF0Zm9ybS9xdC9Db29raWVKYXJRdC5oIFwKICAgICBwbGF0Zm9ybS9x
dC9RV2ViUGFnZUNsaWVudC5oIFwKICAgICBwbGF0Zm9ybS9xdC9RdFN0eWxlT3B0aW9uV2ViQ29t
Ym9Cb3guaCBcCiAgICAgcGxhdGZvcm0vcXQvUmVuZGVyVGhlbWVRdC5oIFwKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3F0L0Nvb2tpZUphclF0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9Db29raWVKYXJRdC5jcHAJKHJldmlzaW9uIDk0NjY5KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvQ29va2llSmFyUXQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNiBHZW9yZ2UgU3Rh
aWtvcyA8c3RhaWtvc0BrZGUub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDExIE5va2lhIENvcnBv
cmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQogICoKICAqIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgpAQCAtMjYsNiArMjcsOCBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJDb29raWVKYXJRdC5oIgorCiAjaW5jbHVkZSAiQ29va2llSmFyLmgiCiAKICNp
bmNsdWRlICJDb29raWUuaCIKQEAgLTM4LDEyICs0MSwxNyBAQAogI2luY2x1ZGUgInF3ZWJmcmFt
ZS5oIgogI2luY2x1ZGUgInF3ZWJwYWdlLmgiCiAjaW5jbHVkZSAicXdlYnNldHRpbmdzLmgiCisj
aW5jbHVkZSA8UURhdGVUaW1lPgorI2luY2x1ZGUgPFFEaXI+CiAjaW5jbHVkZSA8UU5ldHdvcmtB
Y2Nlc3NNYW5hZ2VyPgogI2luY2x1ZGUgPFFOZXR3b3JrQ29va2llPgorI2luY2x1ZGUgPFFTcWxR
dWVyeT4KICNpbmNsdWRlIDxRU3RyaW5nTGlzdD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitz
dGF0aWMgU2hhcmVkQ29va2llSmFyUXQqIHNfc2hhcmVkQ29va2llSmFyUXQgPSAwOworCiBzdGF0
aWMgUU5ldHdvcmtDb29raWVKYXIgKmNvb2tpZUphcihjb25zdCBEb2N1bWVudCAqZG9jdW1lbnQp
CiB7CiAgICAgaWYgKCFkb2N1bWVudCkKQEAgLTE0NCwxOSArMTUyLDEzNiBAQCB2b2lkIGRlbGV0
ZUNvb2tpZShjb25zdCBEb2N1bWVudCosIGNvbnN0CiAKIHZvaWQgZ2V0SG9zdG5hbWVzV2l0aENv
b2tpZXMoSGFzaFNldDxTdHJpbmc+JiBob3N0bmFtZXMpCiB7Ci0gICAgLy8gRklYTUU6IE5vdCB5
ZXQgaW1wbGVtZW50ZWQKKyAgICBTaGFyZWRDb29raWVKYXJRdCogamFyID0gU2hhcmVkQ29va2ll
SmFyUXQ6OnNoYXJlZCgpOworICAgIGlmIChqYXIpCisgICAgICAgIGphci0+Z2V0SG9zdG5hbWVz
V2l0aENvb2tpZXMoaG9zdG5hbWVzKTsKIH0KIAogdm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5h
bWUoY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKIHsKLSAgICAvLyBGSVhNRTogTm90IHlldCBpbXBs
ZW1lbnRlZAorICAgIFNoYXJlZENvb2tpZUphclF0KiBqYXIgPSBTaGFyZWRDb29raWVKYXJRdDo6
c2hhcmVkKCk7CisgICAgaWYgKGphcikKKyAgICAgICAgamFyLT5kZWxldGVDb29raWVzRm9ySG9z
dG5hbWUoaG9zdG5hbWUpOwogfQogCiB2b2lkIGRlbGV0ZUFsbENvb2tpZXMoKQogewotICAgIC8v
IEZJWE1FOiBOb3QgeWV0IGltcGxlbWVudGVkCisgICAgU2hhcmVkQ29va2llSmFyUXQqIGphciA9
IFNoYXJlZENvb2tpZUphclF0OjpzaGFyZWQoKTsKKyAgICBpZiAoamFyKQorICAgICAgICBqYXIt
PmRlbGV0ZUFsbENvb2tpZXMoKTsKK30KKworU2hhcmVkQ29va2llSmFyUXQqIFNoYXJlZENvb2tp
ZUphclF0OjpzaGFyZWQoKQoreworICAgIHJldHVybiBzX3NoYXJlZENvb2tpZUphclF0OworfQor
CitTaGFyZWRDb29raWVKYXJRdCogU2hhcmVkQ29va2llSmFyUXQ6OmNyZWF0ZShjb25zdCBTdHJp
bmcmIGNvb2tpZVN0b3JhZ2VEaXJlY3RvcnkpCit7CisgICAgaWYgKCFzX3NoYXJlZENvb2tpZUph
clF0KQorICAgICAgICBzX3NoYXJlZENvb2tpZUphclF0ID0gbmV3IFNoYXJlZENvb2tpZUphclF0
KGNvb2tpZVN0b3JhZ2VEaXJlY3RvcnkpOworCisgICAgcmV0dXJuIHNfc2hhcmVkQ29va2llSmFy
UXQ7Cit9CisKK3ZvaWQgU2hhcmVkQ29va2llSmFyUXQ6OmRlc3Ryb3koKQoreworICAgIGRlbGV0
ZSBzX3NoYXJlZENvb2tpZUphclF0OworICAgIHNfc2hhcmVkQ29va2llSmFyUXQgPSAwOworfQor
Cit2b2lkIFNoYXJlZENvb2tpZUphclF0OjpnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhIYXNoU2V0
PFN0cmluZz4mIGhvc3RuYW1lcykKK3sKKyAgICBRTGlzdDxRTmV0d29ya0Nvb2tpZT4gY29va2ll
cyA9IGFsbENvb2tpZXMoKTsKKyAgICBmb3JlYWNoIChjb25zdCBRTmV0d29ya0Nvb2tpZSYgbmV0
d29ya0Nvb2tpZSwgY29va2llcykKKyAgICAgICAgaG9zdG5hbWVzLmFkZChuZXR3b3JrQ29va2ll
LmRvbWFpbigpKTsKK30KKwordm9pZCBTaGFyZWRDb29raWVKYXJRdDo6ZGVsZXRlQ29va2llc0Zv
ckhvc3RuYW1lKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCit7CisgICAgUUxpc3Q8UU5ldHdvcmtD
b29raWU+IGNvb2tpZXMgPSBhbGxDb29raWVzKCk7CisgICAgUUxpc3Q8UU5ldHdvcmtDb29raWU+
OjpJdGVyYXRvciBpdCA9IGNvb2tpZXMuYmVnaW4oKTsKKyAgICBRTGlzdDxRTmV0d29ya0Nvb2tp
ZT46Okl0ZXJhdG9yIGVuZCA9IGNvb2tpZXMuZW5kKCk7CisgICAgUVNxbFF1ZXJ5IHNxbFF1ZXJ5
KG1fZGF0YWJhc2UpOworICAgIHNxbFF1ZXJ5LnByZXBhcmUoUUxhdGluMVN0cmluZygiREVMRVRF
IEZST00gY29va2llcyBXSEVSRSBjb29raWVJZD06Y29va2llSWR2YWx1ZSIpKTsKKyAgICB3aGls
ZSAoaXQgIT0gZW5kKSB7CisgICAgICAgIGlmIChpdC0+ZG9tYWluKCkgPT0gUVN0cmluZyhob3N0
bmFtZSkpIHsKKyAgICAgICAgICAgIHNxbFF1ZXJ5LmJpbmRWYWx1ZShRTGF0aW4xU3RyaW5nKCI6
Y29va2llSWR2YWx1ZSIpLCBpdC0+ZG9tYWluKCkuYXBwZW5kKFFMYXRpbjFTdHJpbmcoaXQtPm5h
bWUoKSkpKTsKKyAgICAgICAgICAgIHNxbFF1ZXJ5LmV4ZWMoKTsKKyAgICAgICAgICAgIGl0ID0g
Y29va2llcy5lcmFzZShpdCk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgaXQrKzsKKyAg
ICB9CisgICAgc2V0QWxsQ29va2llcyhjb29raWVzKTsKIH0KIAordm9pZCBTaGFyZWRDb29raWVK
YXJRdDo6ZGVsZXRlQWxsQ29va2llcygpCit7CisgICAgUVNxbFF1ZXJ5IHNxbFF1ZXJ5KG1fZGF0
YWJhc2UpOworICAgIHNxbFF1ZXJ5LnByZXBhcmUoUUxhdGluMVN0cmluZygiREVMRVRFICogRlJP
TSBjb29raWVzIikpOworICAgIHNxbFF1ZXJ5LmV4ZWMoKTsKKyAgICBzZXRBbGxDb29raWVzKFFM
aXN0PFFOZXR3b3JrQ29va2llPigpKTsKK30KKworU2hhcmVkQ29va2llSmFyUXQ6OlNoYXJlZENv
b2tpZUphclF0KGNvbnN0IFN0cmluZyYgY29va2llU3RvcmFnZURpcmVjdG9yeSkKK3sKKyAgICBt
X2RhdGFiYXNlID0gUVNxbERhdGFiYXNlOjphZGREYXRhYmFzZShRTGF0aW4xU3RyaW5nKCJRU1FM
SVRFIikpOworICAgIGNvbnN0IFFTdHJpbmcgY29va2llU3RvcmFnZVBhdGggPSBjb29raWVTdG9y
YWdlRGlyZWN0b3J5OworICAgIFFEaXIoKS5ta3BhdGgoY29va2llU3RvcmFnZVBhdGggKyBRTGF0
aW4xU3RyaW5nKCIuUXRXZWJLaXQvIikpOworICAgIGNvbnN0IFFTdHJpbmcgZGF0YUJhc2VOYW1l
ID0gY29va2llU3RvcmFnZVBhdGggKyBRTGF0aW4xU3RyaW5nKCIuUXRXZWJLaXQvY29va2llcy5k
YiIpOworICAgIG1fZGF0YWJhc2Uuc2V0RGF0YWJhc2VOYW1lKGRhdGFCYXNlTmFtZSk7CisgICAg
ZW5zdXJlRGF0YWJhc2VUYWJsZSgpOworICAgIGxvYWRDb29raWVzKCk7Cit9CisKK1NoYXJlZENv
b2tpZUphclF0Ojp+U2hhcmVkQ29va2llSmFyUXQoKQoreworICAgIG1fZGF0YWJhc2UuY2xvc2Uo
KTsKK30KKworYm9vbCBTaGFyZWRDb29raWVKYXJRdDo6c2V0Q29va2llc0Zyb21VcmwoY29uc3Qg
UUxpc3Q8UU5ldHdvcmtDb29raWU+JiBjb29raWVMaXN0LCBjb25zdCBRVXJsJiB1cmwpCit7Cisg
ICAgYm9vbCBzdGF0dXMgPSBRTmV0d29ya0Nvb2tpZUphcjo6c2V0Q29va2llc0Zyb21VcmwoY29v
a2llTGlzdCwgdXJsKTsKKyAgICBRU3FsUXVlcnkgc3FsUXVlcnkobV9kYXRhYmFzZSk7CisgICAg
c3FsUXVlcnkucHJlcGFyZShRTGF0aW4xU3RyaW5nKCJJTlNFUlQgT1IgUkVQTEFDRSBJTlRPIGNv
b2tpZXMgKGNvb2tpZUlkLCBjb29raWUpIFZBTFVFUyAoOmNvb2tpZUlkdmFsdWUsIDpjb29raWV2
YWx1ZSkiKSk7CisgICAgUVZhcmlhbnRMaXN0IGNvb2tpZXNJZHM7CisgICAgUVZhcmlhbnRMaXN0
IGNvb2tpZXNWYWx1ZXM7CisgICAgZm9yZWFjaCAoY29uc3QgUU5ldHdvcmtDb29raWUgJmNvb2tp
ZSwgY29va2llc0ZvclVybCh1cmwpKSB7CisgICAgICAgIGlmIChjb29raWUuaXNTZXNzaW9uQ29v
a2llKCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgY29va2llc0lkcy5hcHBlbmQo
Y29va2llLmRvbWFpbigpLmFwcGVuZChRTGF0aW4xU3RyaW5nKGNvb2tpZS5uYW1lKCkpKSk7Cisg
ICAgICAgIGNvb2tpZXNWYWx1ZXMuYXBwZW5kKGNvb2tpZS50b1Jhd0Zvcm0oKSk7CisgICAgfQor
ICAgIHNxbFF1ZXJ5LmJpbmRWYWx1ZShRTGF0aW4xU3RyaW5nKCI6Y29va2llSWR2YWx1ZSIpLCBj
b29raWVzSWRzKTsKKyAgICBzcWxRdWVyeS5iaW5kVmFsdWUoUUxhdGluMVN0cmluZygiOmNvb2tp
ZXZhbHVlIiksIGNvb2tpZXNWYWx1ZXMpOworICAgIHNxbFF1ZXJ5LmV4ZWNCYXRjaCgpOworICAg
IHJldHVybiBzdGF0dXM7Cit9CisKK3ZvaWQgU2hhcmVkQ29va2llSmFyUXQ6OmVuc3VyZURhdGFi
YXNlVGFibGUoKQoreworICAgIGlmICghbV9kYXRhYmFzZS5vcGVuKCkpIHsKKyAgICAgICAgcVdh
cm5pbmcoIkNhbid0IG9wZW4gY29va2llIGRhdGFiYXNlIik7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgUVNxbFF1ZXJ5IHNxbFF1ZXJ5KG1fZGF0YWJhc2UpOworICAgIHNxbFF1ZXJ5LnBy
ZXBhcmUoUUxhdGluMVN0cmluZygiQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgY29va2llcyAo
Y29va2llSWQgVkFSQ0hBUiBQUklNQVJZIEtFWSwgY29va2llIEJMT0IpOyIpKTsKKyAgICBzcWxR
dWVyeS5leGVjKCk7Cit9CisKK3ZvaWQgU2hhcmVkQ29va2llSmFyUXQ6OmxvYWRDb29raWVzKCkK
K3sKKyAgICBRTGlzdDxRTmV0d29ya0Nvb2tpZT4gY29va2llczsKKyAgICBRU3FsUXVlcnkgc3Fs
UXVlcnkobV9kYXRhYmFzZSk7CisgICAgc3FsUXVlcnkucHJlcGFyZShRTGF0aW4xU3RyaW5nKCJT
RUxFQ1QgY29va2llIEZST00gY29va2llcyIpKTsKKyAgICBzcWxRdWVyeS5leGVjKCk7CisgICAg
d2hpbGUgKHNxbFF1ZXJ5Lm5leHQoKSkKKyAgICAgICAgY29va2llcy5hcHBlbmQoUU5ldHdvcmtD
b29raWU6OnBhcnNlQ29va2llcyhzcWxRdWVyeS52YWx1ZSgwKS50b0J5dGVBcnJheSgpKSk7Cisg
ICAgc2V0QWxsQ29va2llcyhjb29raWVzKTsKK30KKworI2luY2x1ZGUgIm1vY19Db29raWVKYXJR
dC5jcHAiCisKIH0KIAogLy8gdmltOiB0cz00IHN3PTQgZXQKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3F0L0Nvb2tpZUphclF0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vcXQvQ29va2llSmFyUXQuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3F0L0Nvb2tpZUphclF0LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTYgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBz
dWJzaWRpYXJ5KC1pZXMpCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAy
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor
ICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
CisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAg
SWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMw
MSwgVVNBLgorICoKKyAqLworCisjaWZuZGVmIENvb2tpZUphclF0X2gKKyNkZWZpbmUgQ29va2ll
SmFyUXRfaAorCisjaW5jbHVkZSA8UXRDb3JlL1FPYmplY3Q+CisjaW5jbHVkZSA8UXROZXR3b3Jr
L1FOZXR3b3JrQ29va2llSmFyPgorI2luY2x1ZGUgPFF0U3FsL1FTcWxEYXRhYmFzZT4KKworI2lu
Y2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU2hhcmVkQ29va2llSmFyUXQgOiBwdWJsaWMg
UU5ldHdvcmtDb29raWVKYXIgeworICAgIFFfT0JKRUNUCitwdWJsaWM6CisgICAgc3RhdGljIFNo
YXJlZENvb2tpZUphclF0KiBzaGFyZWQoKTsKKyAgICBzdGF0aWMgU2hhcmVkQ29va2llSmFyUXQq
IGNyZWF0ZShjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIGRlc3Ryb3koKTsKKworICAgIHZvaWQg
Z2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoSGFzaFNldDxTdHJpbmc+Jik7CisgICAgdm9pZCBkZWxl
dGVDb29raWVzRm9ySG9zdG5hbWUoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBkZWxldGVBbGxD
b29raWVzKCk7CisgICAgYm9vbCBzZXRDb29raWVzRnJvbVVybChjb25zdCBRTGlzdDxRTmV0d29y
a0Nvb2tpZT4mLCBjb25zdCBRVXJsJik7CisgICAgdm9pZCBsb2FkQ29va2llcygpOworCitwcml2
YXRlOgorICAgIFNoYXJlZENvb2tpZUphclF0KGNvbnN0IFN0cmluZyYpOworICAgIH5TaGFyZWRD
b29raWVKYXJRdCgpOworICAgIHZvaWQgZW5zdXJlRGF0YWJhc2VUYWJsZSgpOworCisgICAgUVNx
bERhdGFiYXNlIG1fZGF0YWJhc2U7Cit9OworCit9CisKKyNlbmRpZgpJbmRleDogU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwko
cmV2aXNpb24gOTQ3MTcpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwyNCBAQAorMjAxMS0wOS0wNyAgQWxleGlzIE1lbmFyZCAgPGFsZXhpcy5t
ZW5hcmRAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBbUXRdIFtXSzJdIEltcGxlbWVudCBhIHBl
cnNpc3RlbnQgY29va2llIHN0b3JhZ2UuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD02NTMwOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFkZCBwYXJhbWV0ZXIgdG8gdGhlIFdlYlByb2Nlc3MgY3JlYXRpb24g
dG8gc3BlY2lmeSB3aGVyZSBjb29raWVzIHNob3VsZCBiZSBzYXZlZC4KKyAgICAgICAgSXQgYWxz
byB1c2UgdGhlIG5ldyBjb29raWUgc3RvcmFnZSBpbXBsZW1lbnRhdGlvbiBhbmQgc2V0IGl0IHRv
IG91ciBuZXR3b3JrIHN0YWNrCisgICAgICAgIHNvIGNvb2tpZXMgYXJlIHVzZWQgd2hlbiB1c2lu
ZyBpdC4KKworICAgICAgICAqIFNoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2Rl
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2Rl
KToKKyAgICAgICAgKiBTaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9xdC9XZWJDb250ZXh0UXQuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJDb250ZXh0OjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL3F0L1dlYlByb2Nlc3NRdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6
OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzOjpwbGF0Zm9ybVRlcm1pbmF0ZSk6CisKIDIwMTEtMDktMDcgIEFsZXhlaSBTdml0a2luZSAg
PGFzdml0a2luZUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQWRkIHRlc3QgaW5mcmFzdHJ1Y3R1
cmUgdG8gdGVzdCBydWJiZXItYmFuZGluZyBvdmVyaGFuZyBkcmF3aW5nIGFsb25nIHdpdGggbGF5
b3V0IHRlc3RzIGZvciBleGlzdGluZyBDaHJvbWl1bSBNYWMgb3ZlcmhhbmcgZHJhd2luZyBpbiB0
aGUgbm9uLWdwdSBwYXRoLgpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAkocmV2aXNpb24gOTQ2NjkpCisrKyBT
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTkxLDYgKzkxLDkgQEAgdm9pZCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzOjplbmNvZAogICAgICAgICBDb3JlSVBDOjplbmNvZGUoZW5jb2Rlciwgc3RvcmFnZVNl
c3Npb24pOwogI2VuZGlmIC8vIFVTRShDRlVSTFNUT1JBR0VTRVNTSU9OUykKICNlbmRpZgorI2lm
IFBMQVRGT1JNKFFUKQorICAgIGVuY29kZXItPmVuY29kZShjb29raWVTdG9yYWdlRGlyZWN0b3J5
KTsKKyNlbmRpZgogfQogCiBib29sIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29k
ZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFdlYlByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMmIHBhcmFtZXRlcnMpCkBAIC0xNzIsNiArMTc1LDExIEBAIGJvb2wgV2ViUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2QKICNlbmRpZiAvLyBVU0UoQ0ZVUkxTVE9SQUdFU0VT
U0lPTlMpCiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKFFUKQorICAgIGlmICghZGVjb2Rlci0+ZGVj
b2RlKHBhcmFtZXRlcnMuY29va2llU3RvcmFnZURpcmVjdG9yeSkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyNlbmRpZgorCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAkocmV2
aXNpb24gOTQ2NjkpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTEsNiArMTExLDkgQEAgc3RydWN0IFdl
YlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgewogICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IHNl
cmlhbGl6ZWREZWZhdWx0U3RvcmFnZVNlc3Npb247CiAjZW5kaWYgLy8gVVNFKENGVVJMU1RPUkFH
RVNFU1NJT05TKQogI2VuZGlmIC8vIFBMQVRGT1JNKFdJTikKKyNpZiBQTEFURk9STShRVCkKKyAg
ICBTdHJpbmcgY29va2llU3RvcmFnZURpcmVjdG9yeTsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvV2ViQ29udGV4
dFF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvV2ViQ29u
dGV4dFF0LmNwcAkocmV2aXNpb24gOTQ2NjkpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
cXQvV2ViQ29udGV4dFF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogCiAj
aW5jbHVkZSAiQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzLmgiCisjaW5jbHVkZSA8UURlc2t0b3BTZXJ2aWNlcz4KICNpbmNs
dWRlIDxRUHJvY2Vzcz4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC00Miw5ICs0MywxMCBAQCBT
dHJpbmcgV2ViQ29udGV4dDo6YXBwbGljYXRpb25DYWNoZURpcmVjCiAjZW5kaWYKIH0KIAotdm9p
ZCBXZWJDb250ZXh0OjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKFdlYlByb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMmKQordm9pZCBXZWJDb250ZXh0OjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQ
cm9jZXNzKFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB7CiAgICAg
cVJlZ2lzdGVyTWV0YVR5cGU8UVByb2Nlc3M6OkV4aXRTdGF0dXM+KCJRUHJvY2Vzczo6RXhpdFN0
YXR1cyIpOworICAgIHBhcmFtZXRlcnMuY29va2llU3RvcmFnZURpcmVjdG9yeSA9IFFEZXNrdG9w
U2VydmljZXM6OnN0b3JhZ2VMb2NhdGlvbihRRGVza3RvcFNlcnZpY2VzOjpEYXRhTG9jYXRpb24p
OwogfQogCiB2b2lkIFdlYkNvbnRleHQ6OnBsYXRmb3JtSW52YWxpZGF0ZUNvbnRleHQoKQpJbmRl
eDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9xdC9XZWJQcm9jZXNzUXQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvcXQvV2ViUHJvY2Vzc1F0LmNwcAkocmV2
aXNpb24gOTQ2NjkpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3F0L1dlYlByb2Nlc3NR
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDggQEAKICNpbmNsdWRlICJXZWJQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9SdW50aW1lRW5hYmxl
ZEZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8UU5ldHdvcmtBY2Nlc3NNYW5hZ2VyPgorI2luY2x1ZGUg
PFFOZXR3b3JrQ29va2llSmFyPgorI2luY2x1ZGUgPFdlYkNvcmUvQ29va2llSmFyUXQuaD4KIAog
bmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTQ0LDYgKzQ2LDExIEBAIHZvaWQgV2ViUHJvY2Vzczo6
cGxhdGZvcm1DbGVhclJlc291cmNlQ2EKIHZvaWQgV2ViUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFs
aXplV2ViUHJvY2Vzcyhjb25zdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0
ZXJzLCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqIGFyZ3VtZW50cykKIHsKICAgICBtX25ldHdv
cmtBY2Nlc3NNYW5hZ2VyID0gbmV3IFFOZXR3b3JrQWNjZXNzTWFuYWdlcjsKKyAgICBBU1NFUlQo
IXBhcmFtZXRlcnMuY29va2llU3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5KCkgJiYgIXBhcmFtZXRl
cnMuY29va2llU3RvcmFnZURpcmVjdG9yeS5pc051bGwoKSk7CisgICAgV2ViQ29yZTo6U2hhcmVk
Q29va2llSmFyUXQqIGphciA9IFdlYkNvcmU6OlNoYXJlZENvb2tpZUphclF0OjpjcmVhdGUocGFy
YW1ldGVycy5jb29raWVTdG9yYWdlRGlyZWN0b3J5KTsKKyAgICBtX25ldHdvcmtBY2Nlc3NNYW5h
Z2VyLT5zZXRDb29raWVKYXIoamFyKTsKKyAgICAvLyBEbyBub3QgbGV0IFFOZXR3b3JrQWNjZXNz
TWFuYWdlciBkZWxldGUgdGhlIGphci4KKyAgICBqYXItPnNldFBhcmVudCgwKTsKIAogICAgIC8v
IERpc2FibGUgcnVudGltZSBlbmFibGVkIGZlYXR1cmVzIHRoYXQgaGF2ZSBubyBXZWJLaXQyIGlt
cGxlbWVudGF0aW9uIHlldC4KICNpZiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKQpAQCAtNTks
NiArNjYsNyBAQCB2b2lkIFdlYlByb2Nlc3M6OnBsYXRmb3JtVGVybWluYXRlKCkKIHsKICAgICBk
ZWxldGUgbV9uZXR3b3JrQWNjZXNzTWFuYWdlcjsKICAgICBtX25ldHdvcmtBY2Nlc3NNYW5hZ2Vy
ID0gMDsKKyAgICBXZWJDb3JlOjpTaGFyZWRDb29raWVKYXJRdDo6c2hhcmVkKCktPmRlc3Ryb3ko
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>107998</attachid>
            <date>2011-09-20 07:16:33 -0700</date>
            <delta_ts>2011-09-20 12:13:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65309-20110920111619.patch</filename>
            <type>text/plain</type>
            <size>15200</size>
            <attacher name="Alexis Menard (darktears)">menard</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk1NDcwKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzkgQEAKKzIwMTEtMDktMjAgIEFsZXhpcyBN
ZW5hcmQgIDxhbGV4aXMubWVuYXJkQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgW1F0XSBbV0sy
XSBJbXBsZW1lbnQgYSBwZXJzaXN0ZW50IGNvb2tpZSBzdG9yYWdlLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjUzMDkKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgYSBjb29raWUgc3RvcmFn
ZSBmb3IgdGhlIFF0IHBvcnQgb24gV2ViS2l0Mi4KKyAgICAgICAgVGhlIGltcGxlbWVudGF0aW9u
IGlzIHVzaW5nIGEgU1FMaXRlIGRhdGFiYXNlIHRvIHN0b3JlIHRoZSBjb29raWVzCisgICAgICAg
IGFuZCByZXN0b3JlIHRoZW0uIEl0IHVzZXMgYSBzdGF0aWMgb2JqZWN0IGFzIENvb2tpZUphciBp
cyBub3QgYW4KKyAgICAgICAgb2JqZWN0IGJ1dCBhIHNldCBvZiBnbG9iYWwgZnVuY3Rpb25zLiBU
aGUgYWN0dWFsIHNhdmluZy9yZXN0b3JpbmcgaXMgb24KKyAgICAgICAgdGhlIFdlYlByb2Nlc3Mg
c2lkZSB3aGVyZSBvdXIgbmV0d29yayBzdGFjayBsaXZlcy4KKworICAgICAgICBFeGlzdGluZyB0
ZXN0cyBjb3ZlciB0aGUgbmV3IGltcGxlbWVudGF0aW9uLiBVbmZvcnR1bmF0ZWx5IHRoZXJlIGlz
IG9uZQorICAgICAgICBjYXNlIHRoYXQgd2UgY2FuJ3QgZWFzaWx5IHNpbXVsYXRlIDogbG9naW4g
aW4gYSB3ZWJzaXRlLCBtYWtlIHN1cmUgdGhhdCB0aGUgd2VicHJvY2VzcworICAgICAgICBpcyBu
b3QgcnVubmluZyBhbmQgdGhlbiBnb2luZyBiYWNrIHRvIHRoaXMgd2Vic2l0ZSBhbmQgc2VlIHRo
YXQgd2UgYXJlIGxvZ2dlZC4KKworICAgICAgICAqIFdlYkNvcmUucHJpOgorICAgICAgICAqIFdl
YkNvcmUucHJvOgorICAgICAgICAqIHBsYXRmb3JtL3F0L0Nvb2tpZUphclF0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmdldEhvc3RuYW1lc1dpdGhDb29raWVzKToKKyAgICAgICAgKFdlYkNvcmU6
OmRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpkZWxldGVBbGxD
b29raWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZENvb2tpZUphclF0OjpzaGFyZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQ29va2llSmFyUXQ6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFyZWRDb29raWVKYXJRdDo6ZGVzdHJveSk6CisgICAgICAgIChXZWJDb3JlOjpT
aGFyZWRDb29raWVKYXJRdDo6Z2V0SG9zdG5hbWVzV2l0aENvb2tpZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6U2hhcmVkQ29va2llSmFyUXQ6OmRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZSk6CisgICAg
ICAgIChXZWJDb3JlOjpTaGFyZWRDb29raWVKYXJRdDo6ZGVsZXRlQWxsQ29va2llcyk6CisgICAg
ICAgIChXZWJDb3JlOjpTaGFyZWRDb29raWVKYXJRdDo6U2hhcmVkQ29va2llSmFyUXQpOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhcmVkQ29va2llSmFyUXQ6On5TaGFyZWRDb29raWVKYXJRdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTaGFyZWRDb29raWVKYXJRdDo6c2V0Q29va2llc0Zyb21VcmwpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQ29va2llSmFyUXQ6OmVuc3VyZURhdGFiYXNlVGFibGUp
OgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQ29va2llSmFyUXQ6OmxvYWRDb29raWVzKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9xdC9Db29raWVKYXJRdC5oOiBBZGRlZC4KKwogMjAxMS0wOS0xOSAg
QWJoaXNoZWsgQXJ5YSAgPGluZmVybm9AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIElzc3VlcyB3
aXRoIG1lcmdpbmcgcnVieSBiYXNlcy4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJp
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJpCShyZXZpc2lvbiA5NTQ3
MCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJpCSh3b3JraW5nIGNvcHkpCkBAIC01LDcg
KzUsNyBAQCBpbmNsdWRlKGZlYXR1cmVzLnByaSkKICMgV2UgZW5hYmxlIFRleHR1cmVNYXBwZXIg
YnkgZGVmYXVsdDsgcmVtb3ZlIHRoaXMgbGluZSB0byBlbmFibGUgR3JhcGhpY3NMYXllclF0Lgog
Q09ORklHICs9IHRleG1hcAogCi1RVCAqPSBuZXR3b3JrCitRVCAqPSBuZXR3b3JrIHNxbAogCiBT
T1VSQ0VfRElSID0gJCRyZXBsYWNlKFBXRCwgL1dlYkNvcmUsICIiKQogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnBybwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnBybwkocmV2aXNpb24gOTU0NzApCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybwkod29y
a2luZyBjb3B5KQpAQCAtMjA5Niw2ICsyMDk2LDcgQEAgSEVBREVSUyArPSBcCiAgICAgcGxhdGZv
cm0vUGxhdGZvcm1Ub3VjaFBvaW50LmggXAogICAgIHBsYXRmb3JtL1BvcHVwTWVudS5oIFwKICAg
ICBwbGF0Zm9ybS9xdC9DbGlwYm9hcmRRdC5oIFwKKyAgICBwbGF0Zm9ybS9xdC9Db29raWVKYXJR
dC5oIFwKICAgICBwbGF0Zm9ybS9xdC9RV2ViUGFnZUNsaWVudC5oIFwKICAgICBwbGF0Zm9ybS9x
dC9RdFN0eWxlT3B0aW9uV2ViQ29tYm9Cb3guaCBcCiAgICAgcGxhdGZvcm0vcXQvUmVuZGVyVGhl
bWVRdC5oIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L0Nvb2tpZUphclF0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9Db29raWVKYXJRdC5j
cHAJKHJldmlzaW9uIDk1NDcwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvQ29va2ll
SmFyUXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdo
dCAoQykgMjAwNiBHZW9yZ2UgU3RhaWtvcyA8c3RhaWtvc0BrZGUub3JnPgorICogQ29weXJpZ2h0
IChDKSAyMDExIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQog
ICoKICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgpAQCAtMjYsNiArMjcsOCBAQAogICovCiAK
ICNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDb29raWVKYXJRdC5oIgorCiAjaW5jbHVk
ZSAiQ29va2llSmFyLmgiCiAKICNpbmNsdWRlICJDb29raWUuaCIKQEAgLTM4LDEyICs0MSwxNyBA
QAogI2luY2x1ZGUgInF3ZWJmcmFtZS5oIgogI2luY2x1ZGUgInF3ZWJwYWdlLmgiCiAjaW5jbHVk
ZSAicXdlYnNldHRpbmdzLmgiCisjaW5jbHVkZSA8UURhdGVUaW1lPgorI2luY2x1ZGUgPFFEaXI+
CiAjaW5jbHVkZSA8UU5ldHdvcmtBY2Nlc3NNYW5hZ2VyPgogI2luY2x1ZGUgPFFOZXR3b3JrQ29v
a2llPgorI2luY2x1ZGUgPFFTcWxRdWVyeT4KICNpbmNsdWRlIDxRU3RyaW5nTGlzdD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCitzdGF0aWMgU2hhcmVkQ29va2llSmFyUXQqIHNfc2hhcmVkQ29v
a2llSmFyUXQgPSAwOworCiBzdGF0aWMgUU5ldHdvcmtDb29raWVKYXIgKmNvb2tpZUphcihjb25z
dCBEb2N1bWVudCAqZG9jdW1lbnQpCiB7CiAgICAgaWYgKCFkb2N1bWVudCkKQEAgLTE0NCwxOSAr
MTUyLDEzNiBAQCB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBEb2N1bWVudCosIGNvbnN0CiAKIHZv
aWQgZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoSGFzaFNldDxTdHJpbmc+JiBob3N0bmFtZXMpCiB7
Ci0gICAgLy8gRklYTUU6IE5vdCB5ZXQgaW1wbGVtZW50ZWQKKyAgICBTaGFyZWRDb29raWVKYXJR
dCogamFyID0gU2hhcmVkQ29va2llSmFyUXQ6OnNoYXJlZCgpOworICAgIGlmIChqYXIpCisgICAg
ICAgIGphci0+Z2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoaG9zdG5hbWVzKTsKIH0KIAogdm9pZCBk
ZWxldGVDb29raWVzRm9ySG9zdG5hbWUoY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKIHsKLSAgICAv
LyBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRlZAorICAgIFNoYXJlZENvb2tpZUphclF0KiBqYXIg
PSBTaGFyZWRDb29raWVKYXJRdDo6c2hhcmVkKCk7CisgICAgaWYgKGphcikKKyAgICAgICAgamFy
LT5kZWxldGVDb29raWVzRm9ySG9zdG5hbWUoaG9zdG5hbWUpOwogfQogCiB2b2lkIGRlbGV0ZUFs
bENvb2tpZXMoKQogewotICAgIC8vIEZJWE1FOiBOb3QgeWV0IGltcGxlbWVudGVkCisgICAgU2hh
cmVkQ29va2llSmFyUXQqIGphciA9IFNoYXJlZENvb2tpZUphclF0OjpzaGFyZWQoKTsKKyAgICBp
ZiAoamFyKQorICAgICAgICBqYXItPmRlbGV0ZUFsbENvb2tpZXMoKTsKK30KKworU2hhcmVkQ29v
a2llSmFyUXQqIFNoYXJlZENvb2tpZUphclF0OjpzaGFyZWQoKQoreworICAgIHJldHVybiBzX3No
YXJlZENvb2tpZUphclF0OworfQorCitTaGFyZWRDb29raWVKYXJRdCogU2hhcmVkQ29va2llSmFy
UXQ6OmNyZWF0ZShjb25zdCBTdHJpbmcmIGNvb2tpZVN0b3JhZ2VEaXJlY3RvcnkpCit7CisgICAg
aWYgKCFzX3NoYXJlZENvb2tpZUphclF0KQorICAgICAgICBzX3NoYXJlZENvb2tpZUphclF0ID0g
bmV3IFNoYXJlZENvb2tpZUphclF0KGNvb2tpZVN0b3JhZ2VEaXJlY3RvcnkpOworCisgICAgcmV0
dXJuIHNfc2hhcmVkQ29va2llSmFyUXQ7Cit9CisKK3ZvaWQgU2hhcmVkQ29va2llSmFyUXQ6OmRl
c3Ryb3koKQoreworICAgIGRlbGV0ZSBzX3NoYXJlZENvb2tpZUphclF0OworICAgIHNfc2hhcmVk
Q29va2llSmFyUXQgPSAwOworfQorCit2b2lkIFNoYXJlZENvb2tpZUphclF0OjpnZXRIb3N0bmFt
ZXNXaXRoQ29va2llcyhIYXNoU2V0PFN0cmluZz4mIGhvc3RuYW1lcykKK3sKKyAgICBRTGlzdDxR
TmV0d29ya0Nvb2tpZT4gY29va2llcyA9IGFsbENvb2tpZXMoKTsKKyAgICBmb3JlYWNoIChjb25z
dCBRTmV0d29ya0Nvb2tpZSYgbmV0d29ya0Nvb2tpZSwgY29va2llcykKKyAgICAgICAgaG9zdG5h
bWVzLmFkZChuZXR3b3JrQ29va2llLmRvbWFpbigpKTsKK30KKwordm9pZCBTaGFyZWRDb29raWVK
YXJRdDo6ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCit7
CisgICAgUUxpc3Q8UU5ldHdvcmtDb29raWU+IGNvb2tpZXMgPSBhbGxDb29raWVzKCk7CisgICAg
UUxpc3Q8UU5ldHdvcmtDb29raWU+OjpJdGVyYXRvciBpdCA9IGNvb2tpZXMuYmVnaW4oKTsKKyAg
ICBRTGlzdDxRTmV0d29ya0Nvb2tpZT46Okl0ZXJhdG9yIGVuZCA9IGNvb2tpZXMuZW5kKCk7Cisg
ICAgUVNxbFF1ZXJ5IHNxbFF1ZXJ5KG1fZGF0YWJhc2UpOworICAgIHNxbFF1ZXJ5LnByZXBhcmUo
UUxhdGluMVN0cmluZygiREVMRVRFIEZST00gY29va2llcyBXSEVSRSBjb29raWVJZD06Y29va2ll
SWR2YWx1ZSIpKTsKKyAgICB3aGlsZSAoaXQgIT0gZW5kKSB7CisgICAgICAgIGlmIChpdC0+ZG9t
YWluKCkgPT0gUVN0cmluZyhob3N0bmFtZSkpIHsKKyAgICAgICAgICAgIHNxbFF1ZXJ5LmJpbmRW
YWx1ZShRTGF0aW4xU3RyaW5nKCI6Y29va2llSWR2YWx1ZSIpLCBpdC0+ZG9tYWluKCkuYXBwZW5k
KFFMYXRpbjFTdHJpbmcoaXQtPm5hbWUoKSkpKTsKKyAgICAgICAgICAgIHNxbFF1ZXJ5LmV4ZWMo
KTsKKyAgICAgICAgICAgIGl0ID0gY29va2llcy5lcmFzZShpdCk7CisgICAgICAgIH0gZWxzZQor
ICAgICAgICAgICAgaXQrKzsKKyAgICB9CisgICAgc2V0QWxsQ29va2llcyhjb29raWVzKTsKIH0K
IAordm9pZCBTaGFyZWRDb29raWVKYXJRdDo6ZGVsZXRlQWxsQ29va2llcygpCit7CisgICAgUVNx
bFF1ZXJ5IHNxbFF1ZXJ5KG1fZGF0YWJhc2UpOworICAgIHNxbFF1ZXJ5LnByZXBhcmUoUUxhdGlu
MVN0cmluZygiREVMRVRFICogRlJPTSBjb29raWVzIikpOworICAgIHNxbFF1ZXJ5LmV4ZWMoKTsK
KyAgICBzZXRBbGxDb29raWVzKFFMaXN0PFFOZXR3b3JrQ29va2llPigpKTsKK30KKworU2hhcmVk
Q29va2llSmFyUXQ6OlNoYXJlZENvb2tpZUphclF0KGNvbnN0IFN0cmluZyYgY29va2llU3RvcmFn
ZURpcmVjdG9yeSkKK3sKKyAgICBtX2RhdGFiYXNlID0gUVNxbERhdGFiYXNlOjphZGREYXRhYmFz
ZShRTGF0aW4xU3RyaW5nKCJRU1FMSVRFIikpOworICAgIGNvbnN0IFFTdHJpbmcgY29va2llU3Rv
cmFnZVBhdGggPSBjb29raWVTdG9yYWdlRGlyZWN0b3J5OworICAgIFFEaXIoKS5ta3BhdGgoY29v
a2llU3RvcmFnZVBhdGggKyBRTGF0aW4xU3RyaW5nKCIuUXRXZWJLaXQvIikpOworICAgIGNvbnN0
IFFTdHJpbmcgZGF0YUJhc2VOYW1lID0gY29va2llU3RvcmFnZVBhdGggKyBRTGF0aW4xU3RyaW5n
KCIuUXRXZWJLaXQvY29va2llcy5kYiIpOworICAgIG1fZGF0YWJhc2Uuc2V0RGF0YWJhc2VOYW1l
KGRhdGFCYXNlTmFtZSk7CisgICAgZW5zdXJlRGF0YWJhc2VUYWJsZSgpOworICAgIGxvYWRDb29r
aWVzKCk7Cit9CisKK1NoYXJlZENvb2tpZUphclF0Ojp+U2hhcmVkQ29va2llSmFyUXQoKQorewor
ICAgIG1fZGF0YWJhc2UuY2xvc2UoKTsKK30KKworYm9vbCBTaGFyZWRDb29raWVKYXJRdDo6c2V0
Q29va2llc0Zyb21VcmwoY29uc3QgUUxpc3Q8UU5ldHdvcmtDb29raWU+JiBjb29raWVMaXN0LCBj
b25zdCBRVXJsJiB1cmwpCit7CisgICAgYm9vbCBzdGF0dXMgPSBRTmV0d29ya0Nvb2tpZUphcjo6
c2V0Q29va2llc0Zyb21VcmwoY29va2llTGlzdCwgdXJsKTsKKyAgICBRU3FsUXVlcnkgc3FsUXVl
cnkobV9kYXRhYmFzZSk7CisgICAgc3FsUXVlcnkucHJlcGFyZShRTGF0aW4xU3RyaW5nKCJJTlNF
UlQgT1IgUkVQTEFDRSBJTlRPIGNvb2tpZXMgKGNvb2tpZUlkLCBjb29raWUpIFZBTFVFUyAoOmNv
b2tpZUlkdmFsdWUsIDpjb29raWV2YWx1ZSkiKSk7CisgICAgUVZhcmlhbnRMaXN0IGNvb2tpZXNJ
ZHM7CisgICAgUVZhcmlhbnRMaXN0IGNvb2tpZXNWYWx1ZXM7CisgICAgZm9yZWFjaCAoY29uc3Qg
UU5ldHdvcmtDb29raWUgJmNvb2tpZSwgY29va2llc0ZvclVybCh1cmwpKSB7CisgICAgICAgIGlm
IChjb29raWUuaXNTZXNzaW9uQ29va2llKCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgY29va2llc0lkcy5hcHBlbmQoY29va2llLmRvbWFpbigpLmFwcGVuZChRTGF0aW4xU3RyaW5n
KGNvb2tpZS5uYW1lKCkpKSk7CisgICAgICAgIGNvb2tpZXNWYWx1ZXMuYXBwZW5kKGNvb2tpZS50
b1Jhd0Zvcm0oKSk7CisgICAgfQorICAgIHNxbFF1ZXJ5LmJpbmRWYWx1ZShRTGF0aW4xU3RyaW5n
KCI6Y29va2llSWR2YWx1ZSIpLCBjb29raWVzSWRzKTsKKyAgICBzcWxRdWVyeS5iaW5kVmFsdWUo
UUxhdGluMVN0cmluZygiOmNvb2tpZXZhbHVlIiksIGNvb2tpZXNWYWx1ZXMpOworICAgIHNxbFF1
ZXJ5LmV4ZWNCYXRjaCgpOworICAgIHJldHVybiBzdGF0dXM7Cit9CisKK3ZvaWQgU2hhcmVkQ29v
a2llSmFyUXQ6OmVuc3VyZURhdGFiYXNlVGFibGUoKQoreworICAgIGlmICghbV9kYXRhYmFzZS5v
cGVuKCkpIHsKKyAgICAgICAgcVdhcm5pbmcoIkNhbid0IG9wZW4gY29va2llIGRhdGFiYXNlIik7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgUVNxbFF1ZXJ5IHNxbFF1ZXJ5KG1fZGF0YWJh
c2UpOworICAgIHNxbFF1ZXJ5LnByZXBhcmUoUUxhdGluMVN0cmluZygiQ1JFQVRFIFRBQkxFIElG
IE5PVCBFWElTVFMgY29va2llcyAoY29va2llSWQgVkFSQ0hBUiBQUklNQVJZIEtFWSwgY29va2ll
IEJMT0IpOyIpKTsKKyAgICBzcWxRdWVyeS5leGVjKCk7Cit9CisKK3ZvaWQgU2hhcmVkQ29va2ll
SmFyUXQ6OmxvYWRDb29raWVzKCkKK3sKKyAgICBRTGlzdDxRTmV0d29ya0Nvb2tpZT4gY29va2ll
czsKKyAgICBRU3FsUXVlcnkgc3FsUXVlcnkobV9kYXRhYmFzZSk7CisgICAgc3FsUXVlcnkucHJl
cGFyZShRTGF0aW4xU3RyaW5nKCJTRUxFQ1QgY29va2llIEZST00gY29va2llcyIpKTsKKyAgICBz
cWxRdWVyeS5leGVjKCk7CisgICAgd2hpbGUgKHNxbFF1ZXJ5Lm5leHQoKSkKKyAgICAgICAgY29v
a2llcy5hcHBlbmQoUU5ldHdvcmtDb29raWU6OnBhcnNlQ29va2llcyhzcWxRdWVyeS52YWx1ZSgw
KS50b0J5dGVBcnJheSgpKSk7CisgICAgc2V0QWxsQ29va2llcyhjb29raWVzKTsKK30KKworI2lu
Y2x1ZGUgIm1vY19Db29raWVKYXJRdC5jcHAiCisKIH0KIAogLy8gdmltOiB0cz00IHN3PTQgZXQK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L0Nvb2tpZUphclF0LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvQ29va2llSmFyUXQuaAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L0Nvb2tpZUphclF0LmgJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgTm9raWEgQ29y
cG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKgorICogVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
KyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
CisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAq
CisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRo
ZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAq
IEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjaWZuZGVmIENvb2tpZUph
clF0X2gKKyNkZWZpbmUgQ29va2llSmFyUXRfaAorCisjaW5jbHVkZSA8UXRDb3JlL1FPYmplY3Q+
CisjaW5jbHVkZSA8UXROZXR3b3JrL1FOZXR3b3JrQ29va2llSmFyPgorI2luY2x1ZGUgPFF0U3Fs
L1FTcWxEYXRhYmFzZT4KKworI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU2hhcmVk
Q29va2llSmFyUXQgOiBwdWJsaWMgUU5ldHdvcmtDb29raWVKYXIgeworICAgIFFfT0JKRUNUCitw
dWJsaWM6CisgICAgc3RhdGljIFNoYXJlZENvb2tpZUphclF0KiBzaGFyZWQoKTsKKyAgICBzdGF0
aWMgU2hhcmVkQ29va2llSmFyUXQqIGNyZWF0ZShjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIGRl
c3Ryb3koKTsKKworICAgIHZvaWQgZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoSGFzaFNldDxTdHJp
bmc+Jik7CisgICAgdm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoY29uc3QgU3RyaW5nJik7
CisgICAgdm9pZCBkZWxldGVBbGxDb29raWVzKCk7CisgICAgYm9vbCBzZXRDb29raWVzRnJvbVVy
bChjb25zdCBRTGlzdDxRTmV0d29ya0Nvb2tpZT4mLCBjb25zdCBRVXJsJik7CisgICAgdm9pZCBs
b2FkQ29va2llcygpOworCitwcml2YXRlOgorICAgIFNoYXJlZENvb2tpZUphclF0KGNvbnN0IFN0
cmluZyYpOworICAgIH5TaGFyZWRDb29raWVKYXJRdCgpOworICAgIHZvaWQgZW5zdXJlRGF0YWJh
c2VUYWJsZSgpOworCisgICAgUVNxbERhdGFiYXNlIG1fZGF0YWJhc2U7Cit9OworCit9CisKKyNl
bmRpZgpJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gOTU1MDQpCisrKyBTb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNCBAQAorMjAxMS0wOS0yMCAgQWxl
eGlzIE1lbmFyZCAgPGFsZXhpcy5tZW5hcmRAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBbUXRd
IFtXSzJdIEltcGxlbWVudCBhIHBlcnNpc3RlbnQgY29va2llIHN0b3JhZ2UuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTMwOQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBwYXJhbWV0ZXIgdG8gdGhl
IFdlYlByb2Nlc3MgY3JlYXRpb24gdG8gc3BlY2lmeSB3aGVyZSBjb29raWVzIHNob3VsZCBiZSBz
YXZlZC4KKyAgICAgICAgSXQgYWxzbyB1c2UgdGhlIG5ldyBjb29raWUgc3RvcmFnZSBpbXBsZW1l
bnRhdGlvbiBhbmQgc2V0IGl0IHRvIG91ciBuZXR3b3JrIHN0YWNrCisgICAgICAgIHNvIGNvb2tp
ZXMgYXJlIHVzZWQgd2hlbiB1c2luZyBpdC4KKworICAgICAgICAqIFNoYXJlZC9XZWJQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVyczo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9XZWJDb250ZXh0UXQuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9j
ZXNzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL3F0L1dlYlByb2Nlc3NRdC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpwbGF0Zm9ybVRlcm1pbmF0ZSk6CisKIDIwMTEtMDkt
MTkgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBBbHdheXMgZW5h
YmxlIEVOQUJMRShFVkVOVFNPVVJDRSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAJKHJldmlzaW9uIDk1NDcw
KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MSw2ICs5MSw5IEBAIHZvaWQgV2ViUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVyczo6ZW5jb2QKICAgICAgICAgQ29yZUlQQzo6ZW5jb2RlKGVuY29kZXIsIHN0
b3JhZ2VTZXNzaW9uKTsKICNlbmRpZiAvLyBVU0UoQ0ZVUkxTVE9SQUdFU0VTU0lPTlMpCiAjZW5k
aWYKKyNpZiBQTEFURk9STShRVCkKKyAgICBlbmNvZGVyLT5lbmNvZGUoY29va2llU3RvcmFnZURp
cmVjdG9yeSk7CisjZW5kaWYKIH0KIAogYm9vbCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
OjpkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBXZWJQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQpAQCAtMTcyLDYgKzE3NSwxMSBAQCBib29sIFdl
YlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kCiAjZW5kaWYgLy8gVVNFKENGVVJMU1RP
UkFHRVNFU1NJT05TKQogI2VuZGlmCiAKKyNpZiBQTEFURk9STShRVCkKKyAgICBpZiAoIWRlY29k
ZXItPmRlY29kZShwYXJhbWV0ZXJzLmNvb2tpZVN0b3JhZ2VEaXJlY3RvcnkpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisjZW5kaWYKKwogICAgIHJldHVybiB0cnVlOwogfQogCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
LmgJKHJldmlzaW9uIDk1NDcwKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtMTExLDYgKzExMSw5IEBAIHN0
cnVjdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzIHsKICAgICBSZXRhaW5QdHI8Q0ZEYXRh
UmVmPiBzZXJpYWxpemVkRGVmYXVsdFN0b3JhZ2VTZXNzaW9uOwogI2VuZGlmIC8vIFVTRShDRlVS
TFNUT1JBR0VTRVNTSU9OUykKICNlbmRpZiAvLyBQTEFURk9STShXSU4pCisjaWYgUExBVEZPUk0o
UVQpCisgICAgU3RyaW5nIGNvb2tpZVN0b3JhZ2VEaXJlY3Rvcnk7CisjZW5kaWYKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dl
YkNvbnRleHRRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0
L1dlYkNvbnRleHRRdC5jcHAJKHJldmlzaW9uIDk1NDcwKQorKysgU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL3F0L1dlYkNvbnRleHRRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcg
QEAKIAogI2luY2x1ZGUgIkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmgiCiAjaW5jbHVkZSAiV2Vi
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgorI2luY2x1ZGUgPFFEZXNrdG9wU2VydmljZXM+
CiAjaW5jbHVkZSA8UVByb2Nlc3M+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNDIsOSArNDMs
MTAgQEAgU3RyaW5nIFdlYkNvbnRleHQ6OmFwcGxpY2F0aW9uQ2FjaGVEaXJlYwogI2VuZGlmCiB9
CiAKLXZvaWQgV2ViQ29udGV4dDo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2VzcyhXZWJQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJikKK3ZvaWQgV2ViQ29udGV4dDo6cGxhdGZvcm1Jbml0aWFs
aXplV2ViUHJvY2VzcyhXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQog
ewogICAgIHFSZWdpc3Rlck1ldGFUeXBlPFFQcm9jZXNzOjpFeGl0U3RhdHVzPigiUVByb2Nlc3M6
OkV4aXRTdGF0dXMiKTsKKyAgICBwYXJhbWV0ZXJzLmNvb2tpZVN0b3JhZ2VEaXJlY3RvcnkgPSBR
RGVza3RvcFNlcnZpY2VzOjpzdG9yYWdlTG9jYXRpb24oUURlc2t0b3BTZXJ2aWNlczo6RGF0YUxv
Y2F0aW9uKTsKIH0KIAogdm9pZCBXZWJDb250ZXh0OjpwbGF0Zm9ybUludmFsaWRhdGVDb250ZXh0
KCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvcXQvV2ViUHJvY2Vzc1F0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3F0L1dlYlByb2Nlc3NRdC5j
cHAJKHJldmlzaW9uIDk1NDcwKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9xdC9XZWJQ
cm9jZXNzUXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw4IEBACiAjaW5jbHVkZSAi
V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUnVudGlt
ZUVuYWJsZWRGZWF0dXJlcy5oPgogI2luY2x1ZGUgPFFOZXR3b3JrQWNjZXNzTWFuYWdlcj4KKyNp
bmNsdWRlIDxRTmV0d29ya0Nvb2tpZUphcj4KKyNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZUphclF0
Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCkBAIC00NCw2ICs0NiwxMSBAQCB2b2lkIFdlYlBy
b2Nlc3M6OnBsYXRmb3JtQ2xlYXJSZXNvdXJjZUNhCiB2b2lkIFdlYlByb2Nlc3M6OnBsYXRmb3Jt
SW5pdGlhbGl6ZVdlYlByb2Nlc3MoY29uc3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYg
cGFyYW1ldGVycywgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBhcmd1bWVudHMpCiB7CiAgICAg
bV9uZXR3b3JrQWNjZXNzTWFuYWdlciA9IG5ldyBRTmV0d29ya0FjY2Vzc01hbmFnZXI7CisgICAg
QVNTRVJUKCFwYXJhbWV0ZXJzLmNvb2tpZVN0b3JhZ2VEaXJlY3RvcnkuaXNFbXB0eSgpICYmICFw
YXJhbWV0ZXJzLmNvb2tpZVN0b3JhZ2VEaXJlY3RvcnkuaXNOdWxsKCkpOworICAgIFdlYkNvcmU6
OlNoYXJlZENvb2tpZUphclF0KiBqYXIgPSBXZWJDb3JlOjpTaGFyZWRDb29raWVKYXJRdDo6Y3Jl
YXRlKHBhcmFtZXRlcnMuY29va2llU3RvcmFnZURpcmVjdG9yeSk7CisgICAgbV9uZXR3b3JrQWNj
ZXNzTWFuYWdlci0+c2V0Q29va2llSmFyKGphcik7CisgICAgLy8gRG8gbm90IGxldCBRTmV0d29y
a0FjY2Vzc01hbmFnZXIgZGVsZXRlIHRoZSBqYXIuCisgICAgamFyLT5zZXRQYXJlbnQoMCk7CiAK
ICAgICAvLyBEaXNhYmxlIHJ1bnRpbWUgZW5hYmxlZCBmZWF0dXJlcyB0aGF0IGhhdmUgbm8gV2Vi
S2l0MiBpbXBsZW1lbnRhdGlvbiB5ZXQuCiAjaWYgRU5BQkxFKERFVklDRV9PUklFTlRBVElPTikK
QEAgLTU5LDYgKzY2LDcgQEAgdm9pZCBXZWJQcm9jZXNzOjpwbGF0Zm9ybVRlcm1pbmF0ZSgpCiB7
CiAgICAgZGVsZXRlIG1fbmV0d29ya0FjY2Vzc01hbmFnZXI7CiAgICAgbV9uZXR3b3JrQWNjZXNz
TWFuYWdlciA9IDA7CisgICAgV2ViQ29yZTo6U2hhcmVkQ29va2llSmFyUXQ6OnNoYXJlZCgpLT5k
ZXN0cm95KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>108040</attachid>
            <date>2011-09-20 12:13:35 -0700</date>
            <delta_ts>2011-09-20 14:00:20 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-65309-20110920161321.patch</filename>
            <type>text/plain</type>
            <size>15244</size>
            <attacher name="Alexis Menard (darktears)">menard</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk1NDkzKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzkgQEAKKzIwMTEtMDktMjAgIEFsZXhpcyBN
ZW5hcmQgIDxhbGV4aXMubWVuYXJkQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgW1F0XSBbV0sy
XSBJbXBsZW1lbnQgYSBwZXJzaXN0ZW50IGNvb2tpZSBzdG9yYWdlLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjUzMDkKKworICAgICAgICBSZXZpZXdl
ZCBieSBDaGFuZyBTaHUuCisKKyAgICAgICAgSW1wbGVtZW50IGEgY29va2llIHN0b3JhZ2UgZm9y
IHRoZSBRdCBwb3J0IG9uIFdlYktpdDIuCisgICAgICAgIFRoZSBpbXBsZW1lbnRhdGlvbiBpcyB1
c2luZyBhIFNRTGl0ZSBkYXRhYmFzZSB0byBzdG9yZSB0aGUgY29va2llcworICAgICAgICBhbmQg
cmVzdG9yZSB0aGVtLiBJdCB1c2VzIGEgc3RhdGljIG9iamVjdCBhcyBDb29raWVKYXIgaXMgbm90
IGFuCisgICAgICAgIG9iamVjdCBidXQgYSBzZXQgb2YgZ2xvYmFsIGZ1bmN0aW9ucy4gVGhlIGFj
dHVhbCBzYXZpbmcvcmVzdG9yaW5nIGlzIG9uCisgICAgICAgIHRoZSBXZWJQcm9jZXNzIHNpZGUg
d2hlcmUgb3VyIG5ldHdvcmsgc3RhY2sgbGl2ZXMuCisKKyAgICAgICAgRXhpc3RpbmcgdGVzdHMg
Y292ZXIgdGhlIG5ldyBpbXBsZW1lbnRhdGlvbi4gVW5mb3J0dW5hdGVseSB0aGVyZSBpcyBvbmUK
KyAgICAgICAgY2FzZSB0aGF0IHdlIGNhbid0IGVhc2lseSBzaW11bGF0ZSA6IGxvZ2luIGluIGEg
d2Vic2l0ZSwgbWFrZSBzdXJlIHRoYXQgdGhlIHdlYnByb2Nlc3MKKyAgICAgICAgaXMgbm90IHJ1
bm5pbmcgYW5kIHRoZW4gZ29pbmcgYmFjayB0byB0aGlzIHdlYnNpdGUgYW5kIHNlZSB0aGF0IHdl
IGFyZSBsb2dnZWQuCisKKyAgICAgICAgKiBXZWJDb3JlLnByaToKKyAgICAgICAgKiBXZWJDb3Jl
LnBybzoKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9Db29raWVKYXJRdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpnZXRIb3N0bmFtZXNXaXRoQ29va2llcyk6CisgICAgICAgIChXZWJDb3JlOjpkZWxl
dGVDb29raWVzRm9ySG9zdG5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6ZGVsZXRlQWxsQ29va2ll
cyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRDb29raWVKYXJRdDo6c2hhcmVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNoYXJlZENvb2tpZUphclF0OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhcmVkQ29va2llSmFyUXQ6OmRlc3Ryb3kpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVk
Q29va2llSmFyUXQ6OmdldEhvc3RuYW1lc1dpdGhDb29raWVzKToKKyAgICAgICAgKFdlYkNvcmU6
OlNoYXJlZENvb2tpZUphclF0OjpkZWxldGVDb29raWVzRm9ySG9zdG5hbWUpOgorICAgICAgICAo
V2ViQ29yZTo6U2hhcmVkQ29va2llSmFyUXQ6OmRlbGV0ZUFsbENvb2tpZXMpOgorICAgICAgICAo
V2ViQ29yZTo6U2hhcmVkQ29va2llSmFyUXQ6OlNoYXJlZENvb2tpZUphclF0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNoYXJlZENvb2tpZUphclF0Ojp+U2hhcmVkQ29va2llSmFyUXQpOgorICAgICAg
ICAoV2ViQ29yZTo6U2hhcmVkQ29va2llSmFyUXQ6OnNldENvb2tpZXNGcm9tVXJsKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNoYXJlZENvb2tpZUphclF0OjplbnN1cmVEYXRhYmFzZVRhYmxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYXJlZENvb2tpZUphclF0Ojpsb2FkQ29va2llcyk6CisgICAgICAg
ICogcGxhdGZvcm0vcXQvQ29va2llSmFyUXQuaDogQWRkZWQuCisKIDIwMTEtMDktMTkgIE9saXZl
ciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZWZhY3RvciBIZWFwIGFsbG9j
YXRpb24gbG9naWMgaW50byBzZXBhcmF0ZSBBbGxvY2F0aW9uU3BhY2UgY2xhc3MKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUucHJpCShyZXZpc2lvbiA5NTQ5MykKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJp
CSh3b3JraW5nIGNvcHkpCkBAIC01LDcgKzUsNyBAQCBpbmNsdWRlKGZlYXR1cmVzLnByaSkKICMg
V2UgZW5hYmxlIFRleHR1cmVNYXBwZXIgYnkgZGVmYXVsdDsgcmVtb3ZlIHRoaXMgbGluZSB0byBl
bmFibGUgR3JhcGhpY3NMYXllclF0LgogQ09ORklHICs9IHRleG1hcAogCi1RVCAqPSBuZXR3b3Jr
CitRVCAqPSBuZXR3b3JrIHNxbAogCiBTT1VSQ0VfRElSID0gJCRyZXBsYWNlKFBXRCwgL1dlYkNv
cmUsICIiKQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybwkocmV2aXNpb24gOTU0OTMpCisrKyBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnBybwkod29ya2luZyBjb3B5KQpAQCAtMjA5Niw2ICsyMDk2LDcgQEAg
SEVBREVSUyArPSBcCiAgICAgcGxhdGZvcm0vUGxhdGZvcm1Ub3VjaFBvaW50LmggXAogICAgIHBs
YXRmb3JtL1BvcHVwTWVudS5oIFwKICAgICBwbGF0Zm9ybS9xdC9DbGlwYm9hcmRRdC5oIFwKKyAg
ICBwbGF0Zm9ybS9xdC9Db29raWVKYXJRdC5oIFwKICAgICBwbGF0Zm9ybS9xdC9RV2ViUGFnZUNs
aWVudC5oIFwKICAgICBwbGF0Zm9ybS9xdC9RdFN0eWxlT3B0aW9uV2ViQ29tYm9Cb3guaCBcCiAg
ICAgcGxhdGZvcm0vcXQvUmVuZGVyVGhlbWVRdC5oIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3F0L0Nvb2tpZUphclF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9xdC9Db29raWVKYXJRdC5jcHAJKHJldmlzaW9uIDk1NDkzKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vcXQvQ29va2llSmFyUXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNiBHZW9yZ2UgU3RhaWtvcyA8c3RhaWtv
c0BrZGUub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDExIE5va2lhIENvcnBvcmF0aW9uIGFuZC9v
ciBpdHMgc3Vic2lkaWFyeSgtaWVzKQogICoKICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgpA
QCAtMjYsNiArMjcsOCBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJD
b29raWVKYXJRdC5oIgorCiAjaW5jbHVkZSAiQ29va2llSmFyLmgiCiAKICNpbmNsdWRlICJDb29r
aWUuaCIKQEAgLTM4LDEyICs0MSwxNyBAQAogI2luY2x1ZGUgInF3ZWJmcmFtZS5oIgogI2luY2x1
ZGUgInF3ZWJwYWdlLmgiCiAjaW5jbHVkZSAicXdlYnNldHRpbmdzLmgiCisjaW5jbHVkZSA8UURh
dGVUaW1lPgorI2luY2x1ZGUgPFFEaXI+CiAjaW5jbHVkZSA8UU5ldHdvcmtBY2Nlc3NNYW5hZ2Vy
PgogI2luY2x1ZGUgPFFOZXR3b3JrQ29va2llPgorI2luY2x1ZGUgPFFTcWxRdWVyeT4KICNpbmNs
dWRlIDxRU3RyaW5nTGlzdD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitzdGF0aWMgU2hhcmVk
Q29va2llSmFyUXQqIHNfc2hhcmVkQ29va2llSmFyUXQgPSAwOworCiBzdGF0aWMgUU5ldHdvcmtD
b29raWVKYXIgKmNvb2tpZUphcihjb25zdCBEb2N1bWVudCAqZG9jdW1lbnQpCiB7CiAgICAgaWYg
KCFkb2N1bWVudCkKQEAgLTE0NCwxOSArMTUyLDEzNyBAQCB2b2lkIGRlbGV0ZUNvb2tpZShjb25z
dCBEb2N1bWVudCosIGNvbnN0CiAKIHZvaWQgZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoSGFzaFNl
dDxTdHJpbmc+JiBob3N0bmFtZXMpCiB7Ci0gICAgLy8gRklYTUU6IE5vdCB5ZXQgaW1wbGVtZW50
ZWQKKyAgICBTaGFyZWRDb29raWVKYXJRdCogamFyID0gU2hhcmVkQ29va2llSmFyUXQ6OnNoYXJl
ZCgpOworICAgIGlmIChqYXIpCisgICAgICAgIGphci0+Z2V0SG9zdG5hbWVzV2l0aENvb2tpZXMo
aG9zdG5hbWVzKTsKIH0KIAogdm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoY29uc3QgU3Ry
aW5nJiBob3N0bmFtZSkKIHsKLSAgICAvLyBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRlZAorICAg
IFNoYXJlZENvb2tpZUphclF0KiBqYXIgPSBTaGFyZWRDb29raWVKYXJRdDo6c2hhcmVkKCk7Cisg
ICAgaWYgKGphcikKKyAgICAgICAgamFyLT5kZWxldGVDb29raWVzRm9ySG9zdG5hbWUoaG9zdG5h
bWUpOwogfQogCiB2b2lkIGRlbGV0ZUFsbENvb2tpZXMoKQogewotICAgIC8vIEZJWE1FOiBOb3Qg
eWV0IGltcGxlbWVudGVkCisgICAgU2hhcmVkQ29va2llSmFyUXQqIGphciA9IFNoYXJlZENvb2tp
ZUphclF0OjpzaGFyZWQoKTsKKyAgICBpZiAoamFyKQorICAgICAgICBqYXItPmRlbGV0ZUFsbENv
b2tpZXMoKTsKK30KKworU2hhcmVkQ29va2llSmFyUXQqIFNoYXJlZENvb2tpZUphclF0OjpzaGFy
ZWQoKQoreworICAgIHJldHVybiBzX3NoYXJlZENvb2tpZUphclF0OworfQorCitTaGFyZWRDb29r
aWVKYXJRdCogU2hhcmVkQ29va2llSmFyUXQ6OmNyZWF0ZShjb25zdCBTdHJpbmcmIGNvb2tpZVN0
b3JhZ2VEaXJlY3RvcnkpCit7CisgICAgaWYgKCFzX3NoYXJlZENvb2tpZUphclF0KQorICAgICAg
ICBzX3NoYXJlZENvb2tpZUphclF0ID0gbmV3IFNoYXJlZENvb2tpZUphclF0KGNvb2tpZVN0b3Jh
Z2VEaXJlY3RvcnkpOworCisgICAgcmV0dXJuIHNfc2hhcmVkQ29va2llSmFyUXQ7Cit9CisKK3Zv
aWQgU2hhcmVkQ29va2llSmFyUXQ6OmRlc3Ryb3koKQoreworICAgIGRlbGV0ZSBzX3NoYXJlZENv
b2tpZUphclF0OworICAgIHNfc2hhcmVkQ29va2llSmFyUXQgPSAwOworfQorCit2b2lkIFNoYXJl
ZENvb2tpZUphclF0OjpnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhIYXNoU2V0PFN0cmluZz4mIGhv
c3RuYW1lcykKK3sKKyAgICBRTGlzdDxRTmV0d29ya0Nvb2tpZT4gY29va2llcyA9IGFsbENvb2tp
ZXMoKTsKKyAgICBmb3JlYWNoIChjb25zdCBRTmV0d29ya0Nvb2tpZSYgbmV0d29ya0Nvb2tpZSwg
Y29va2llcykKKyAgICAgICAgaG9zdG5hbWVzLmFkZChuZXR3b3JrQ29va2llLmRvbWFpbigpKTsK
K30KKwordm9pZCBTaGFyZWRDb29raWVKYXJRdDo6ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKGNv
bnN0IFN0cmluZyYgaG9zdG5hbWUpCit7CisgICAgUUxpc3Q8UU5ldHdvcmtDb29raWU+IGNvb2tp
ZXMgPSBhbGxDb29raWVzKCk7CisgICAgUUxpc3Q8UU5ldHdvcmtDb29raWU+OjpJdGVyYXRvciBp
dCA9IGNvb2tpZXMuYmVnaW4oKTsKKyAgICBRTGlzdDxRTmV0d29ya0Nvb2tpZT46Okl0ZXJhdG9y
IGVuZCA9IGNvb2tpZXMuZW5kKCk7CisgICAgUVNxbFF1ZXJ5IHNxbFF1ZXJ5KG1fZGF0YWJhc2Up
OworICAgIHNxbFF1ZXJ5LnByZXBhcmUoUUxhdGluMVN0cmluZygiREVMRVRFIEZST00gY29va2ll
cyBXSEVSRSBjb29raWVJZD06Y29va2llSWR2YWx1ZSIpKTsKKyAgICB3aGlsZSAoaXQgIT0gZW5k
KSB7CisgICAgICAgIGlmIChpdC0+ZG9tYWluKCkgPT0gUVN0cmluZyhob3N0bmFtZSkpIHsKKyAg
ICAgICAgICAgIHNxbFF1ZXJ5LmJpbmRWYWx1ZShRTGF0aW4xU3RyaW5nKCI6Y29va2llSWR2YWx1
ZSIpLCBpdC0+ZG9tYWluKCkuYXBwZW5kKFFMYXRpbjFTdHJpbmcoaXQtPm5hbWUoKSkpKTsKKyAg
ICAgICAgICAgIHNxbFF1ZXJ5LmV4ZWMoKTsKKyAgICAgICAgICAgIGl0ID0gY29va2llcy5lcmFz
ZShpdCk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgaXQrKzsKKyAgICB9CisgICAgc2V0
QWxsQ29va2llcyhjb29raWVzKTsKIH0KIAordm9pZCBTaGFyZWRDb29raWVKYXJRdDo6ZGVsZXRl
QWxsQ29va2llcygpCit7CisgICAgUVNxbFF1ZXJ5IHNxbFF1ZXJ5KG1fZGF0YWJhc2UpOworICAg
IHNxbFF1ZXJ5LnByZXBhcmUoUUxhdGluMVN0cmluZygiREVMRVRFICogRlJPTSBjb29raWVzIikp
OworICAgIHNxbFF1ZXJ5LmV4ZWMoKTsKKyAgICBzZXRBbGxDb29raWVzKFFMaXN0PFFOZXR3b3Jr
Q29va2llPigpKTsKK30KKworU2hhcmVkQ29va2llSmFyUXQ6OlNoYXJlZENvb2tpZUphclF0KGNv
bnN0IFN0cmluZyYgY29va2llU3RvcmFnZURpcmVjdG9yeSkKK3sKKyAgICBtX2RhdGFiYXNlID0g
UVNxbERhdGFiYXNlOjphZGREYXRhYmFzZShRTGF0aW4xU3RyaW5nKCJRU1FMSVRFIikpOworICAg
IGNvbnN0IFFTdHJpbmcgY29va2llU3RvcmFnZVBhdGggPSBjb29raWVTdG9yYWdlRGlyZWN0b3J5
OworICAgIFFEaXIoKS5ta3BhdGgoY29va2llU3RvcmFnZVBhdGggKyBRTGF0aW4xU3RyaW5nKCIu
UXRXZWJLaXQvIikpOworICAgIGNvbnN0IFFTdHJpbmcgZGF0YUJhc2VOYW1lID0gY29va2llU3Rv
cmFnZVBhdGggKyBRTGF0aW4xU3RyaW5nKCIuUXRXZWJLaXQvY29va2llcy5kYiIpOworICAgIG1f
ZGF0YWJhc2Uuc2V0RGF0YWJhc2VOYW1lKGRhdGFCYXNlTmFtZSk7CisgICAgZW5zdXJlRGF0YWJh
c2VUYWJsZSgpOworICAgIGxvYWRDb29raWVzKCk7Cit9CisKK1NoYXJlZENvb2tpZUphclF0Ojp+
U2hhcmVkQ29va2llSmFyUXQoKQoreworICAgIG1fZGF0YWJhc2UuY2xvc2UoKTsKK30KKworYm9v
bCBTaGFyZWRDb29raWVKYXJRdDo6c2V0Q29va2llc0Zyb21VcmwoY29uc3QgUUxpc3Q8UU5ldHdv
cmtDb29raWU+JiBjb29raWVMaXN0LCBjb25zdCBRVXJsJiB1cmwpCit7CisgICAgaWYgKCFRTmV0
d29ya0Nvb2tpZUphcjo6c2V0Q29va2llc0Zyb21VcmwoY29va2llTGlzdCwgdXJsKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIFFTcWxRdWVyeSBzcWxRdWVyeShtX2RhdGFiYXNlKTsKKyAg
ICBzcWxRdWVyeS5wcmVwYXJlKFFMYXRpbjFTdHJpbmcoIklOU0VSVCBPUiBSRVBMQUNFIElOVE8g
Y29va2llcyAoY29va2llSWQsIGNvb2tpZSkgVkFMVUVTICg6Y29va2llSWR2YWx1ZSwgOmNvb2tp
ZXZhbHVlKSIpKTsKKyAgICBRVmFyaWFudExpc3QgY29va2llc0lkczsKKyAgICBRVmFyaWFudExp
c3QgY29va2llc1ZhbHVlczsKKyAgICBmb3JlYWNoIChjb25zdCBRTmV0d29ya0Nvb2tpZSAmY29v
a2llLCBjb29raWVzRm9yVXJsKHVybCkpIHsKKyAgICAgICAgaWYgKGNvb2tpZS5pc1Nlc3Npb25D
b29raWUoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBjb29raWVzSWRzLmFwcGVu
ZChjb29raWUuZG9tYWluKCkuYXBwZW5kKFFMYXRpbjFTdHJpbmcoY29va2llLm5hbWUoKSkpKTsK
KyAgICAgICAgY29va2llc1ZhbHVlcy5hcHBlbmQoY29va2llLnRvUmF3Rm9ybSgpKTsKKyAgICB9
CisgICAgc3FsUXVlcnkuYmluZFZhbHVlKFFMYXRpbjFTdHJpbmcoIjpjb29raWVJZHZhbHVlIiks
IGNvb2tpZXNJZHMpOworICAgIHNxbFF1ZXJ5LmJpbmRWYWx1ZShRTGF0aW4xU3RyaW5nKCI6Y29v
a2lldmFsdWUiKSwgY29va2llc1ZhbHVlcyk7CisgICAgc3FsUXVlcnkuZXhlY0JhdGNoKCk7Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgU2hhcmVkQ29va2llSmFyUXQ6OmVuc3VyZURhdGFi
YXNlVGFibGUoKQoreworICAgIGlmICghbV9kYXRhYmFzZS5vcGVuKCkpIHsKKyAgICAgICAgcVdh
cm5pbmcoIkNhbid0IG9wZW4gY29va2llIGRhdGFiYXNlIik7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgUVNxbFF1ZXJ5IHNxbFF1ZXJ5KG1fZGF0YWJhc2UpOworICAgIHNxbFF1ZXJ5LnBy
ZXBhcmUoUUxhdGluMVN0cmluZygiQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgY29va2llcyAo
Y29va2llSWQgVkFSQ0hBUiBQUklNQVJZIEtFWSwgY29va2llIEJMT0IpOyIpKTsKKyAgICBzcWxR
dWVyeS5leGVjKCk7Cit9CisKK3ZvaWQgU2hhcmVkQ29va2llSmFyUXQ6OmxvYWRDb29raWVzKCkK
K3sKKyAgICBRTGlzdDxRTmV0d29ya0Nvb2tpZT4gY29va2llczsKKyAgICBRU3FsUXVlcnkgc3Fs
UXVlcnkobV9kYXRhYmFzZSk7CisgICAgc3FsUXVlcnkucHJlcGFyZShRTGF0aW4xU3RyaW5nKCJT
RUxFQ1QgY29va2llIEZST00gY29va2llcyIpKTsKKyAgICBzcWxRdWVyeS5leGVjKCk7CisgICAg
d2hpbGUgKHNxbFF1ZXJ5Lm5leHQoKSkKKyAgICAgICAgY29va2llcy5hcHBlbmQoUU5ldHdvcmtD
b29raWU6OnBhcnNlQ29va2llcyhzcWxRdWVyeS52YWx1ZSgwKS50b0J5dGVBcnJheSgpKSk7Cisg
ICAgc2V0QWxsQ29va2llcyhjb29raWVzKTsKK30KKworI2luY2x1ZGUgIm1vY19Db29raWVKYXJR
dC5jcHAiCisKIH0KIAogLy8gdmltOiB0cz00IHN3PTQgZXQKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3F0L0Nvb2tpZUphclF0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vcXQvQ29va2llSmFyUXQuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3F0L0Nvb2tpZUphclF0LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTYgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBz
dWJzaWRpYXJ5KC1pZXMpCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAy
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor
ICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
CisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAg
SWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMw
MSwgVVNBLgorICoKKyAqLworCisjaWZuZGVmIENvb2tpZUphclF0X2gKKyNkZWZpbmUgQ29va2ll
SmFyUXRfaAorCisjaW5jbHVkZSA8UXRDb3JlL1FPYmplY3Q+CisjaW5jbHVkZSA8UXROZXR3b3Jr
L1FOZXR3b3JrQ29va2llSmFyPgorI2luY2x1ZGUgPFF0U3FsL1FTcWxEYXRhYmFzZT4KKworI2lu
Y2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU2hhcmVkQ29va2llSmFyUXQgOiBwdWJsaWMg
UU5ldHdvcmtDb29raWVKYXIgeworICAgIFFfT0JKRUNUCitwdWJsaWM6CisgICAgc3RhdGljIFNo
YXJlZENvb2tpZUphclF0KiBzaGFyZWQoKTsKKyAgICBzdGF0aWMgU2hhcmVkQ29va2llSmFyUXQq
IGNyZWF0ZShjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIGRlc3Ryb3koKTsKKworICAgIHZvaWQg
Z2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoSGFzaFNldDxTdHJpbmc+Jik7CisgICAgdm9pZCBkZWxl
dGVDb29raWVzRm9ySG9zdG5hbWUoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBkZWxldGVBbGxD
b29raWVzKCk7CisgICAgYm9vbCBzZXRDb29raWVzRnJvbVVybChjb25zdCBRTGlzdDxRTmV0d29y
a0Nvb2tpZT4mLCBjb25zdCBRVXJsJik7CisgICAgdm9pZCBsb2FkQ29va2llcygpOworCitwcml2
YXRlOgorICAgIFNoYXJlZENvb2tpZUphclF0KGNvbnN0IFN0cmluZyYpOworICAgIH5TaGFyZWRD
b29raWVKYXJRdCgpOworICAgIHZvaWQgZW5zdXJlRGF0YWJhc2VUYWJsZSgpOworCisgICAgUVNx
bERhdGFiYXNlIG1fZGF0YWJhc2U7Cit9OworCit9CisKKyNlbmRpZgpJbmRleDogU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwko
cmV2aXNpb24gOTU0OTMpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwyNCBAQAorMjAxMS0wOS0yMCAgQWxleGlzIE1lbmFyZCAgPGFsZXhpcy5t
ZW5hcmRAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBbUXRdIFtXSzJdIEltcGxlbWVudCBhIHBl
cnNpc3RlbnQgY29va2llIHN0b3JhZ2UuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD02NTMwOQorCisgICAgICAgIFJldmlld2VkIGJ5IENoYW5nIFNodS4K
KworICAgICAgICBBZGQgcGFyYW1ldGVyIHRvIHRoZSBXZWJQcm9jZXNzIGNyZWF0aW9uIHRvIHNw
ZWNpZnkgd2hlcmUgY29va2llcyBzaG91bGQgYmUgc2F2ZWQuCisgICAgICAgIEl0IGFsc28gdXNl
IHRoZSBuZXcgY29va2llIHN0b3JhZ2UgaW1wbGVtZW50YXRpb24gYW5kIHNldCBpdCB0byBvdXIg
bmV0d29yayBzdGFjaworICAgICAgICBzbyBjb29raWVzIGFyZSB1c2VkIHdoZW4gdXNpbmcgaXQu
CisKKyAgICAgICAgKiBTaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6Cisg
ICAgICAgICogU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvcXQvV2ViQ29udGV4dFF0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29u
dGV4dDo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2Vzcyk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9xdC9XZWJQcm9jZXNzUXQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpwbGF0
Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6
cGxhdGZvcm1UZXJtaW5hdGUpOgorCiAyMDExLTA5LTE5ICBBbGV4aXMgTWVuYXJkICA8YWxleGlz
Lm1lbmFyZEBvcGVuYm9zc2Eub3JnPgogCiAgICAgICAgIFtRdF0gVW5yZXZpZXdlZCBjb2Rpbmcg
c3R5bGUgZml4LgpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAkocmV2aXNpb24gOTU0OTMpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTkxLDYgKzkxLDkgQEAgdm9pZCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
OjplbmNvZAogICAgICAgICBDb3JlSVBDOjplbmNvZGUoZW5jb2Rlciwgc3RvcmFnZVNlc3Npb24p
OwogI2VuZGlmIC8vIFVTRShDRlVSTFNUT1JBR0VTRVNTSU9OUykKICNlbmRpZgorI2lmIFBMQVRG
T1JNKFFUKQorICAgIGVuY29kZXItPmVuY29kZShjb29raWVTdG9yYWdlRGlyZWN0b3J5KTsKKyNl
bmRpZgogfQogCiBib29sIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShDb3Jl
SVBDOjpBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMmIHBhcmFtZXRlcnMpCkBAIC0xNzIsNiArMTc1LDExIEBAIGJvb2wgV2ViUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVyczo6ZGVjb2QKICNlbmRpZiAvLyBVU0UoQ0ZVUkxTVE9SQUdFU0VTU0lPTlMp
CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKFFUKQorICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHBh
cmFtZXRlcnMuY29va2llU3RvcmFnZURpcmVjdG9yeSkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyNlbmRpZgorCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1No
YXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAkocmV2aXNpb24g
OTU0OTMpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTEsNiArMTExLDkgQEAgc3RydWN0IFdlYlByb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMgewogICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IHNlcmlhbGl6
ZWREZWZhdWx0U3RvcmFnZVNlc3Npb247CiAjZW5kaWYgLy8gVVNFKENGVVJMU1RPUkFHRVNFU1NJ
T05TKQogI2VuZGlmIC8vIFBMQVRGT1JNKFdJTikKKyNpZiBQTEFURk9STShRVCkKKyAgICBTdHJp
bmcgY29va2llU3RvcmFnZURpcmVjdG9yeTsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvV2ViQ29udGV4dFF0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvV2ViQ29udGV4dFF0
LmNwcAkocmV2aXNpb24gOTU0OTMpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvV2Vi
Q29udGV4dFF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVk
ZSAiQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzLmgiCisjaW5jbHVkZSA8UURlc2t0b3BTZXJ2aWNlcz4KICNpbmNsdWRlIDxR
UHJvY2Vzcz4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC00Miw5ICs0MywxMCBAQCBTdHJpbmcg
V2ViQ29udGV4dDo6YXBwbGljYXRpb25DYWNoZURpcmVjCiAjZW5kaWYKIH0KIAotdm9pZCBXZWJD
b250ZXh0OjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKFdlYlByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMmKQordm9pZCBXZWJDb250ZXh0OjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNz
KFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB7CiAgICAgcVJlZ2lz
dGVyTWV0YVR5cGU8UVByb2Nlc3M6OkV4aXRTdGF0dXM+KCJRUHJvY2Vzczo6RXhpdFN0YXR1cyIp
OworICAgIHBhcmFtZXRlcnMuY29va2llU3RvcmFnZURpcmVjdG9yeSA9IFFEZXNrdG9wU2Vydmlj
ZXM6OnN0b3JhZ2VMb2NhdGlvbihRRGVza3RvcFNlcnZpY2VzOjpEYXRhTG9jYXRpb24pOwogfQog
CiB2b2lkIFdlYkNvbnRleHQ6OnBsYXRmb3JtSW52YWxpZGF0ZUNvbnRleHQoKQpJbmRleDogU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9xdC9XZWJQcm9jZXNzUXQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvcXQvV2ViUHJvY2Vzc1F0LmNwcAkocmV2aXNpb24g
OTU0OTMpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3F0L1dlYlByb2Nlc3NRdC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDggQEAKICNpbmNsdWRlICJXZWJQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9SdW50aW1lRW5hYmxlZEZlYXR1
cmVzLmg+CiAjaW5jbHVkZSA8UU5ldHdvcmtBY2Nlc3NNYW5hZ2VyPgorI2luY2x1ZGUgPFFOZXR3
b3JrQ29va2llSmFyPgorI2luY2x1ZGUgPFdlYkNvcmUvQ29va2llSmFyUXQuaD4KIAogbmFtZXNw
YWNlIFdlYktpdCB7CiAKQEAgLTQ0LDYgKzQ2LDExIEBAIHZvaWQgV2ViUHJvY2Vzczo6cGxhdGZv
cm1DbGVhclJlc291cmNlQ2EKIHZvaWQgV2ViUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplV2Vi
UHJvY2Vzcyhjb25zdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBD
b3JlSVBDOjpBcmd1bWVudERlY29kZXIqIGFyZ3VtZW50cykKIHsKICAgICBtX25ldHdvcmtBY2Nl
c3NNYW5hZ2VyID0gbmV3IFFOZXR3b3JrQWNjZXNzTWFuYWdlcjsKKyAgICBBU1NFUlQoIXBhcmFt
ZXRlcnMuY29va2llU3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5KCkgJiYgIXBhcmFtZXRlcnMuY29v
a2llU3RvcmFnZURpcmVjdG9yeS5pc051bGwoKSk7CisgICAgV2ViQ29yZTo6U2hhcmVkQ29va2ll
SmFyUXQqIGphciA9IFdlYkNvcmU6OlNoYXJlZENvb2tpZUphclF0OjpjcmVhdGUocGFyYW1ldGVy
cy5jb29raWVTdG9yYWdlRGlyZWN0b3J5KTsKKyAgICBtX25ldHdvcmtBY2Nlc3NNYW5hZ2VyLT5z
ZXRDb29raWVKYXIoamFyKTsKKyAgICAvLyBEbyBub3QgbGV0IFFOZXR3b3JrQWNjZXNzTWFuYWdl
ciBkZWxldGUgdGhlIGphci4KKyAgICBqYXItPnNldFBhcmVudCgwKTsKIAogICAgIC8vIERpc2Fi
bGUgcnVudGltZSBlbmFibGVkIGZlYXR1cmVzIHRoYXQgaGF2ZSBubyBXZWJLaXQyIGltcGxlbWVu
dGF0aW9uIHlldC4KICNpZiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKQpAQCAtNTksNiArNjYs
NyBAQCB2b2lkIFdlYlByb2Nlc3M6OnBsYXRmb3JtVGVybWluYXRlKCkKIHsKICAgICBkZWxldGUg
bV9uZXR3b3JrQWNjZXNzTWFuYWdlcjsKICAgICBtX25ldHdvcmtBY2Nlc3NNYW5hZ2VyID0gMDsK
KyAgICBXZWJDb3JlOjpTaGFyZWRDb29raWVKYXJRdDo6c2hhcmVkKCktPmRlc3Ryb3koKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>