<?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>137225</bug_id>
          
          <creation_ts>2014-09-29 12:41:04 -0700</creation_ts>
          <short_desc>Add basic caching for Document.cookie API</short_desc>
          <delta_ts>2014-10-01 17:22:40 -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>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>ap</cc>
    
    <cc>barraclough</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ggaren</cc>
    
    <cc>japhet</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kling</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1038017</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-09-29 12:41:04 -0700</bug_when>
    <thetext>While profiling the load of nytimes.com, I noticed that the site is accessing ~250 times document.cookie, just during page load. Accessing document.cookie is currently slow because we:
- Call WebPlatformStrategies::cookiesForDOM() virtual function
- Send a sync IPC message to the Network process to retrieve the cookies
  * The Network process gets the list of cookies from CFNetwork then serializes the result to send it back to the WebProcess
- We unserialize the cookies into an NSList of cookies
- We filter-out the cookies that are &apos;httpOnly&apos; and construct a new NSList of cookies
- We create a WTF String out of the cookies NSList

In the case of nytimes.com, it turns out that up to 100 calls to document.cookie() are made in the same event loop iteration. A proposal would be to cache / freeze the cookies until we return to the event loop so that consecutive calls to document.cookie() can be fast.
Doing so seems to be sufficient to achieve a ~76% cache hit for nytimes.com.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1038019</commentid>
    <comment_count>1</comment_count>
      <attachid>238869</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-09-29 12:48:46 -0700</bug_when>
    <thetext>Created attachment 238869
WIP Patch

I still likely need to invalidate the cache in case of sync XHRs. This case doesn&apos;t seem to be covered by existing layout tests so I&apos;ll need to add coverage.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1038020</commentid>
    <comment_count>2</comment_count>
      <attachid>238869</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-09-29 12:54:39 -0700</bug_when>
    <thetext>Comment on attachment 238869
WIP Patch

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

&gt; Source/WebCore/dom/Document.h:1709
&gt; +    String m_cookiesCache;

It may be worth being more clear that these are DOM cookies (i.e. httponly cookies are not there).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1038043</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-09-29 14:00:15 -0700</bug_when>
    <thetext>Attachment 238869 did not pass style-queue:


ERROR: Source/WebCore/ChangeLog:14:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
Total errors found: 1 in 3 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>1038045</commentid>
    <comment_count>4</comment_count>
      <attachid>238869</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-09-29 14:02:55 -0700</bug_when>
    <thetext>Comment on attachment 238869
WIP Patch

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

&gt;&gt; Source/WebCore/dom/Document.h:1709
&gt;&gt; +    String m_cookiesCache;
&gt; 
&gt; It may be worth being more clear that these are DOM cookies (i.e. httponly cookies are not there).

Good point, I&apos;ll add &quot;DOM&quot; in the names.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1038080</commentid>
    <comment_count>5</comment_count>
      <attachid>238887</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-09-29 15:22:34 -0700</bug_when>
    <thetext>Created attachment 238887
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1038093</commentid>
    <comment_count>6</comment_count>
      <attachid>238891</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-09-29 15:59:52 -0700</bug_when>
    <thetext>Created attachment 238891
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1038103</commentid>
    <comment_count>7</comment_count>
      <attachid>238891</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-09-29 16:17:38 -0700</bug_when>
    <thetext>Comment on attachment 238891
Patch

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

&gt; Source/WebCore/dom/Document.cpp:3860
&gt; +    if (!isDOMCookiesCacheValid())
&gt; +        setDOMCookiesCache(cookies(this, cookieURL));
&gt; +
&gt; +    return domCookiesCache();

I think that it&apos;s &quot;cookie cache&quot;, not &quot;cookies cache&quot;.

&gt; Source/WebCore/dom/Document.h:1375
&gt; +    void didDOMCookiesCacheExpiryTimerFired(Timer&lt;Document&gt;&amp;);

Syntax is wrong here &quot;did fired&quot; doesn&apos;t parse. Maybe &quot;domCookieCacheExpiryTimerFired&quot;?

&gt; Source/WebCore/dom/Document.h:1376
&gt; +    void didLoadXHRSynchronously() override final;

Can (or should) we catch it more generally, e.g. invalidate the cache when exiting any nested run loop? Another case I have in mind is showModalDialog. Also XSLT stylesheet loading.

&gt; Source/WebCore/dom/ScriptExecutionContext.h:114
&gt; +    // XHR.
&gt; +    virtual void didLoadXHRSynchronously();

This comment doesn&apos;t seem helpful.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1038108</commentid>
    <comment_count>8</comment_count>
      <attachid>238891</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-09-29 16:30:19 -0700</bug_when>
    <thetext>Comment on attachment 238891
Patch

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

&gt;&gt; Source/WebCore/dom/Document.h:1376
&gt;&gt; +    void didLoadXHRSynchronously() override final;
&gt; 
&gt; Can (or should) we catch it more generally, e.g. invalidate the cache when exiting any nested run loop? Another case I have in mind is showModalDialog. Also XSLT stylesheet loading.

I am not sure how to do this but I will try</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1038109</commentid>
    <comment_count>9</comment_count>
      <attachid>238896</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-09-29 16:32:57 -0700</bug_when>
    <thetext>Created attachment 238896
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1038249</commentid>
    <comment_count>10</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-09-30 10:28:29 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 238891 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=238891&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/dom/Document.h:1376
&gt; &gt;&gt; +    void didLoadXHRSynchronously() override final;
&gt; &gt; 
&gt; &gt; Can (or should) we catch it more generally, e.g. invalidate the cache when exiting any nested run loop? Another case I have in mind is showModalDialog. Also XSLT stylesheet loading.
&gt; 
&gt; I am not sure how to do this but I will try

Alexey, how about invalidating the Document&apos;s cookie cache when ThreadableLoader::loadResourceSynchronously() is called? This will cover the sync XHR case and more cases where network resources are loaded synchronously. This will hopefully be safer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1038254</commentid>
    <comment_count>11</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-09-30 10:42:18 -0700</bug_when>
    <thetext>Good idea!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1038263</commentid>
    <comment_count>12</comment_count>
      <attachid>238939</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-09-30 11:03:04 -0700</bug_when>
    <thetext>Created attachment 238939
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1038266</commentid>
    <comment_count>13</comment_count>
      <attachid>238939</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-09-30 11:17:40 -0700</bug_when>
    <thetext>Comment on attachment 238939
Patch

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

&gt; Source/WebCore/dom/Document.cpp:6197
&gt; +    // The cookies cache is valid until we go back to the event loop.

&quot;cookie cache&quot;

&gt; Source/WebCore/dom/Document.cpp:6198
&gt; +    m_cookieCacheExpiryTimer.startOneShot(0);

It would be nice not to rely on this race to expire the cache. It&apos;s possible for a network resource and a zero-delay JavaScript timer to run in the next runloop iteration before this invalidation event. I wonder if there&apos;s a low-level networking API we can use to invalidate the cache instead. For example, is the document notified when a subresource loads?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1038283</commentid>
    <comment_count>14</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-09-30 12:02:43 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 238939 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=238939&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/Document.cpp:6197
&gt; &gt; +    // The cookies cache is valid until we go back to the event loop.
&gt; 
&gt; &quot;cookie cache&quot;
&gt; 
&gt; &gt; Source/WebCore/dom/Document.cpp:6198
&gt; &gt; +    m_cookieCacheExpiryTimer.startOneShot(0);
&gt; 
&gt; It would be nice not to rely on this race to expire the cache. It&apos;s possible for a network resource and a zero-delay JavaScript timer to run in the next runloop iteration before this invalidation event. I wonder if there&apos;s a low-level networking API we can use to invalidate the cache instead. For example, is the document notified when a subresource loads?

Knowing about sub-resources loaded for the current WebProcess sounds uncomplicated. The issue is knowing about the sub-resources loaded for other WebProcesses as they can alter the cookies as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1038288</commentid>
    <comment_count>15</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-09-30 12:22:17 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (In reply to comment #13)
&gt; &gt; (From update of attachment 238939 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=238939&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/dom/Document.cpp:6197
&gt; &gt; &gt; +    // The cookies cache is valid until we go back to the event loop.
&gt; &gt; 
&gt; &gt; &quot;cookie cache&quot;
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/dom/Document.cpp:6198
&gt; &gt; &gt; +    m_cookieCacheExpiryTimer.startOneShot(0);
&gt; &gt; 
&gt; &gt; It would be nice not to rely on this race to expire the cache. It&apos;s possible for a network resource and a zero-delay JavaScript timer to run in the next runloop iteration before this invalidation event. I wonder if there&apos;s a low-level networking API we can use to invalidate the cache instead. For example, is the document notified when a subresource loads?
&gt; 
&gt; Knowing about sub-resources loaded for the current WebProcess sounds uncomplicated. The issue is knowing about the sub-resources loaded for other WebProcesses as they can alter the cookies as well.

Ideally, we would just get a notification when cookies are changed. Invalidating the cookie cache for all resources loads would be less optimal. However, I was trying to find an acceptable short-term solution to caching Document.cookie.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1038292</commentid>
    <comment_count>16</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-09-30 12:28:43 -0700</bug_when>
    <thetext>What is the use case for caring about cookies that changed from another tab? I&apos;m not sure if it&apos;s even correct to respect those changes before the next run loop iteration.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1038295</commentid>
    <comment_count>17</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-09-30 12:31:30 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; What is the use case for caring about cookies that changed from another tab? I&apos;m not sure if it&apos;s even correct to respect those changes before the next run loop iteration.

Oh OK, then you would want to keep both right?
1. Invalidate in a setTimeout(0) (as in my patch)
+
2. Invalidate if a sub resource load finishes for the current WebProcess</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1038302</commentid>
    <comment_count>18</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-09-30 12:47:07 -0700</bug_when>
    <thetext>I liked the approach with loadResourceSynchronously more, even though there is probably no difference in practice. Not everything loaded by a page is a subresource - notably, pings are not. So, resource loading feels like the wrong level to implement this at.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1038304</commentid>
    <comment_count>19</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-09-30 12:48:48 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; I liked the approach with loadResourceSynchronously more, even though there is probably no difference in practice. Not everything loaded by a page is a subresource - notably, pings are not. So, resource loading feels like the wrong level to implement this at.

This is what my last patch iteration does (invalidate cache in loadResourceSynchronously).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1038316</commentid>
    <comment_count>20</comment_count>
      <attachid>238951</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-09-30 13:13:41 -0700</bug_when>
    <thetext>Created attachment 238951
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1038401</commentid>
    <comment_count>21</comment_count>
      <attachid>238977</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-09-30 16:56:38 -0700</bug_when>
    <thetext>Created attachment 238977
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1038663</commentid>
    <comment_count>22</comment_count>
      <attachid>238977</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-10-01 14:56:13 -0700</bug_when>
    <thetext>Comment on attachment 238977
Patch

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

&gt; Source/WebCore/dom/Document.cpp:3858
&gt; +        setDOMCookieCache(cookies(this, cookieURL));

setDOMCookieCache sounds like it&apos;s taking some kind of CookieCache object, which it is not. Maybe setCachedDOMCookies would be less confusing?

&gt; Source/WebCore/dom/Document.cpp:3860
&gt; +    return domCookieCache();

Ditto. cachedDOMCookies?

&gt; Source/WebCore/dom/Document.cpp:3988
&gt; +    m_cookieURL = url;
&gt; +    invalidateDOMCookieCache();

I&apos;m wondering if we ever call this function with the same value repeatedly. It may not matter in practice, we probably don&apos;t do that between document.cookie.calls too often, if ever.

&gt; Source/WebCore/dom/Document.cpp:6197
&gt; +    // The cookie cache is valid until we go back to the event loop.

Should probably say &quot;at most&quot;, as sync loading can also invalidate it.

&gt; LayoutTests/http/tests/cookies/sync-xhr-set-cookie-invalidates-cache.html:18
&gt; +&lt;script src=&apos;resources/cookies-test-post.js&apos;&gt;&lt;/script&gt;

I&apos;m somewhat concerned that this may not clean up the cookies before the next test. Could you please double-check that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1038687</commentid>
    <comment_count>23</comment_count>
      <attachid>238977</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-01 15:40:57 -0700</bug_when>
    <thetext>Comment on attachment 238977
Patch

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

&gt;&gt; Source/WebCore/dom/Document.cpp:3858
&gt;&gt; +        setDOMCookieCache(cookies(this, cookieURL));
&gt; 
&gt; setDOMCookieCache sounds like it&apos;s taking some kind of CookieCache object, which it is not. Maybe setCachedDOMCookies would be less confusing?

Right, done.

&gt;&gt; Source/WebCore/dom/Document.cpp:3860
&gt;&gt; +    return domCookieCache();
&gt; 
&gt; Ditto. cachedDOMCookies?

Done.

&gt;&gt; Source/WebCore/dom/Document.cpp:3988
&gt;&gt; +    invalidateDOMCookieCache();
&gt; 
&gt; I&apos;m wondering if we ever call this function with the same value repeatedly. It may not matter in practice, we probably don&apos;t do that between document.cookie.calls too often, if ever.

I verified and we definitely call setCookieURL() with the same URL repeatedly so I added a check. Cache hit is up from 76% to 87% on nytimes.com load now.

&gt;&gt; Source/WebCore/dom/Document.cpp:6197
&gt;&gt; +    // The cookie cache is valid until we go back to the event loop.
&gt; 
&gt; Should probably say &quot;at most&quot;, as sync loading can also invalidate it.

Done.

&gt;&gt; LayoutTests/http/tests/cookies/sync-xhr-set-cookie-invalidates-cache.html:18
&gt;&gt; +&lt;script src=&apos;resources/cookies-test-post.js&apos;&gt;&lt;/script&gt;
&gt; 
&gt; I&apos;m somewhat concerned that this may not clean up the cookies before the next test. Could you please double-check that?

cookies-test-post.js seems to be clearing the cookies at the end:
// Make sure that we do not leak any cookies.
clearCookies();</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1038689</commentid>
    <comment_count>24</comment_count>
      <attachid>239059</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-01 15:42:06 -0700</bug_when>
    <thetext>Created attachment 239059
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1038696</commentid>
    <comment_count>25</comment_count>
      <attachid>239059</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-01 15:50:07 -0700</bug_when>
    <thetext>Comment on attachment 239059
Patch

Actually, my new test causes http/tests/misc/empty-cookie.html to be flaky. I will investigate and fix the test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1038700</commentid>
    <comment_count>26</comment_count>
      <attachid>239063</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-01 16:05:53 -0700</bug_when>
    <thetext>Created attachment 239063
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1038701</commentid>
    <comment_count>27</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-01 16:06:32 -0700</bug_when>
    <thetext>Ok, I updated my layout test to fix the flakiness.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1038731</commentid>
    <comment_count>28</comment_count>
      <attachid>239063</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-01 17:22:34 -0700</bug_when>
    <thetext>Comment on attachment 239063
Patch

Clearing flags on attachment: 239063

Committed r174190: &lt;http://trac.webkit.org/changeset/174190&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1038732</commentid>
    <comment_count>29</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-01 17:22:40 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>238869</attachid>
            <date>2014-09-29 12:48:46 -0700</date>
            <delta_ts>2014-09-29 15:22:34 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>137225_cookies_cache.patch</filename>
            <type>text/plain</type>
            <size>8221</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhNDcwYzAyLi5jNTdiODJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDYg
QEAKKzIwMTQtMDktMjkgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAg
ICBBZGQgYmFzaWMgY2FjaGluZyBmb3IgRG9jdW1lbnQuY29va2llIEFQSQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3MjI1CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hpbGUgcHJvZmlsaW5nIHRoZSBs
b2FkIG9mIG55dGltZXMuY29tLCBJIG5vdGljZWQgdGhhdCB0aGUgc2l0ZSBpcworICAgICAgICBh
Y2Nlc3NpbmcgfjI1MCB0aW1lcyBkb2N1bWVudC5jb29raWUsIGp1c3QgZHVyaW5nIHBhZ2UgbG9h
ZC4gQWNjZXNzaW5nCisgICAgICAgIGRvY3VtZW50LmNvb2tpZSBpcyBjdXJyZW50bHkgc2xvdyBi
ZWNhdXNlIHdlOgorICAgICAgICAtIENhbGwgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29raWVz
Rm9yRE9NKCkgdmlydHVhbCBmdW5jdGlvbgorICAgICAgICAtIFNlbmQgYSBzeW5jIElQQyBtZXNz
YWdlIHRvIHRoZSBOZXR3b3JrIHByb2Nlc3MgdG8gcmV0cmlldmUgdGhlCisgICAgICAgICAgY29v
a2llcworICAgICAgICAgICAgKiBUaGUgTmV0d29yayBwcm9jZXNzIGdldHMgdGhlIGxpc3Qgb2Yg
Y29va2llcyBmcm9tIENGTmV0d29yayB0aGVuCisgICAgICAgICAgICAgIHNlcmlhbGl6ZXMgdGhl
IHJlc3VsdCB0byBzZW5kIGl0IGJhY2sgdG8gdGhlIFdlYlByb2Nlc3MKKyAgICAgICAgLSBXZSB1
bnNlcmlhbGl6ZSB0aGUgY29va2llcyBpbnRvIGFuIE5TTGlzdCBvZiBjb29raWVzCisgICAgICAg
IC0gV2UgZmlsdGVyLW91dCB0aGUgY29va2llcyB0aGF0IGFyZSAnaHR0cE9ubHknIGFuZCBjb25z
dHJ1Y3QgYSBuZXcKKyAgICAgICAgICBOU0xpc3Qgb2YgY29va2llcworICAgICAgICAtIFdlIGNy
ZWF0ZSBhIFdURiBTdHJpbmcgb3V0IG9mIHRoZSBjb29raWVzIE5TTGlzdAorCisgICAgICAgIElu
IHRoZSBjYXNlIG9mIG55dGltZXMuY29tLCBpdCB0dXJucyBvdXQgdGhhdCB1cCB0byAxMDAgY2Fs
bHMgdG8KKyAgICAgICAgZG9jdW1lbnQuY29va2llKCkgYXJlIG1hZGUgaW4gdGhlIHNhbWUgZXZl
bnQgbG9vcCBpdGVyYXRpb24uIFRoaXMgcGF0Y2gKKyAgICAgICAgdGh1cyBjYWNoZXMgLyBmcmVl
emVzIHRoZSBjb29raWVzIHVudGlsIHdlIHJldHVybiB0byB0aGUgZXZlbnQKKyAgICAgICAgbG9v
cCBzbyB0aGF0IGNvbnNlY3V0aXZlIGNhbGxzIHRvIGRvY3VtZW50LmNvb2tpZSgpIGFyZSBleHRy
ZW1lbHkgZmFzdC4KKyAgICAgICAgRG9pbmcgc28gc2VlbXMgdG8gYmUgc3VmZmljaWVudCB0byBh
Y2hpZXZlIGEgfjc2JSBjYWNoZSBoaXQgZm9yIG55dGltZXMuY29tLgorCisgICAgICAgIE5vIG5l
dyB0ZXN0cywgbm8gaW50ZW50aW9uYWwgYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogZG9t
L0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpEb2N1bWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6b3Blbik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudDo6Y29va2llKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzZXRDb29raWUpOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNldENvb2tpZVVSTCk6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudDo6aW5pdFNlY3VyaXR5Q29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudDo6c2V0Q29va2llc0NhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpp
bnZhbGlkYXRlQ29va2llc0NhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpkaWRD
b29raWVzQ2FjaGVFeHBpcnlUaW1lckZpcmVkKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpjb29raWVzQ2FjaGUpOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnQ6OmlzQ29va2llc0NhY2hlVmFsaWQpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnQ6OnNldENvb2tpZVVSTCk6IERlbGV0ZWQuCisKIDIwMTQtMDktMjkgIENocmlzIEZs
ZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KIAogICAgICAgICBBWDogaW4gYW4gYXJpYS1s
YWJlbGxlZGJ5IGNvbXB1dGF0aW9uLCBkbyBub3QgdHJhdmVyc2UgaW50byBlbGVtZW50cyB3aG9z
ZSBuYW1lRnJvbSB2YWx1ZSBkb2VzIG5vdCBpbmNsdWRlICdjb250ZW50cycKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwCmluZGV4IDhlODNlOTEyLi42ZWU3YmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAKQEAgLTUxMyw2ICs1MTMsNyBAQCBEb2N1bWVudDo6RG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBj
b25zdCBVUkwmIHVybCwgdW5zaWduZWQgZG9jdW1lbnRDbGFzc2VzLCB1bnNpZwogICAgICwgbV9p
bnB1dEN1cnNvcihFbXB0eUlucHV0Q3Vyc29yOjpjcmVhdGUoKSkKICNlbmRpZgogICAgICwgbV9k
aWRBc3NvY2lhdGVGb3JtQ29udHJvbHNUaW1lcih0aGlzLCAmRG9jdW1lbnQ6OmRpZEFzc29jaWF0
ZUZvcm1Db250cm9sc1RpbWVyRmlyZWQpCisgICAgLCBtX2Nvb2tpZXNDYWNoZUV4cGlyeVRpbWVy
KHRoaXMsICZEb2N1bWVudDo6ZGlkQ29va2llc0NhY2hlRXhwaXJ5VGltZXJGaXJlZCkKICAgICAs
IG1fZGlzYWJsZWRGaWVsZHNldEVsZW1lbnRzQ291bnQoMCkKICAgICAsIG1faGFzSW5qZWN0ZWRQ
bHVnSW5zU2NyaXB0KGZhbHNlKQogICAgICwgbV9yZW5kZXJUcmVlQmVpbmdEZXN0cm95ZWQoZmFs
c2UpCkBAIC0yMjU2LDcgKzIyNTcsNyBAQCB2b2lkIERvY3VtZW50OjpvcGVuKERvY3VtZW50KiBv
d25lckRvY3VtZW50KQogewogICAgIGlmIChvd25lckRvY3VtZW50KSB7CiAgICAgICAgIHNldFVS
TChvd25lckRvY3VtZW50LT51cmwoKSk7Ci0gICAgICAgIG1fY29va2llVVJMID0gb3duZXJEb2N1
bWVudC0+Y29va2llVVJMKCk7CisgICAgICAgIHNldENvb2tpZVVSTChvd25lckRvY3VtZW50LT5j
b29raWVVUkwoKSk7CiAgICAgICAgIHNldFNlY3VyaXR5T3JpZ2luKG93bmVyRG9jdW1lbnQtPnNl
Y3VyaXR5T3JpZ2luKCkpOwogICAgIH0KIApAQCAtMzgzNSw3ICszODM2LDcgQEAgSFRNTEZyYW1l
T3duZXJFbGVtZW50KiBEb2N1bWVudDo6b3duZXJFbGVtZW50KCkgY29uc3QKICAgICByZXR1cm4g
ZnJhbWUoKS0+b3duZXJFbGVtZW50KCk7CiB9CiAKLVN0cmluZyBEb2N1bWVudDo6Y29va2llKEV4
Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAorU3RyaW5nIERvY3VtZW50Ojpjb29raWUoRXhjZXB0aW9u
Q29kZSYgZWMpCiB7CiAgICAgaWYgKHBhZ2UoKSAmJiAhcGFnZSgpLT5zZXR0aW5ncygpLmNvb2tp
ZUVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwpAQCAtMzg1Myw3ICszODU0LDEw
IEBAIFN0cmluZyBEb2N1bWVudDo6Y29va2llKEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAogICAg
IGlmIChjb29raWVVUkwuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKLSAg
ICByZXR1cm4gY29va2llcyh0aGlzLCBjb29raWVVUkwpOworICAgIGlmICghaXNDb29raWVzQ2Fj
aGVWYWxpZCgpKQorICAgICAgICBzZXRDb29raWVzQ2FjaGUoY29va2llcyh0aGlzLCBjb29raWVV
UkwpKTsKKworICAgIHJldHVybiBjb29raWVzQ2FjaGUoKTsKIH0KIAogdm9pZCBEb2N1bWVudDo6
c2V0Q29va2llKGNvbnN0IFN0cmluZyYgdmFsdWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtMzg3
NCw2ICszODc4LDcgQEAgdm9pZCBEb2N1bWVudDo6c2V0Q29va2llKGNvbnN0IFN0cmluZyYgdmFs
dWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIGlmIChjb29raWVVUkwuaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm47CiAKKyAgICBpbnZhbGlkYXRlQ29va2llc0NhY2hlKCk7CiAgICAgc2V0Q29v
a2llcyh0aGlzLCBjb29raWVVUkwsIHZhbHVlKTsKIH0KIApAQCAtMzk3Nyw2ICszOTgyLDEyIEBA
IFN0cmluZyBEb2N1bWVudDo6bGFzdE1vZGlmaWVkKCkgY29uc3QKICAgICByZXR1cm4gU3RyaW5n
Ojpmb3JtYXQoIiUwMmQvJTAyZC8lMDRkICUwMmQ6JTAyZDolMDJkIiwgZGF0ZS5tb250aCgpICsg
MSwgZGF0ZS5tb250aERheSgpLCBkYXRlLmZ1bGxZZWFyKCksIGRhdGUuaG91cigpLCBkYXRlLm1p
bnV0ZSgpLCBkYXRlLnNlY29uZCgpKTsKIH0KIAordm9pZCBEb2N1bWVudDo6c2V0Q29va2llVVJM
KGNvbnN0IFVSTCYgdXJsKQoreworICAgIG1fY29va2llVVJMID0gdXJsOworICAgIGludmFsaWRh
dGVDb29raWVzQ2FjaGUoKTsKK30KKwogc3RhdGljIGJvb2wgaXNWYWxpZE5hbWVOb25BU0NJSShj
b25zdCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQogewogICAgIGlmICghaXNW
YWxpZE5hbWVTdGFydChjaGFyYWN0ZXJzWzBdKSkKQEAgLTQ2ODksNyArNDcwMCw3IEBAIHZvaWQg
RG9jdW1lbnQ6OmluaXRTZWN1cml0eUNvbnRleHQoKQogICAgIGlmICghbV9mcmFtZSkgewogICAg
ICAgICAvLyBObyBzb3VyY2UgZm9yIGEgc2VjdXJpdHkgY29udGV4dC4KICAgICAgICAgLy8gVGhp
cyBjYW4gb2NjdXIgdmlhIGRvY3VtZW50LmltcGxlbWVudGF0aW9uLmNyZWF0ZURvY3VtZW50KCku
Ci0gICAgICAgIG1fY29va2llVVJMID0gVVJMKFBhcnNlZFVSTFN0cmluZywgZW1wdHlTdHJpbmco
KSk7CisgICAgICAgIHNldENvb2tpZVVSTChVUkwoUGFyc2VkVVJMU3RyaW5nLCBlbXB0eVN0cmlu
ZygpKSk7CiAgICAgICAgIHNldFNlY3VyaXR5T3JpZ2luKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVV
bmlxdWUoKSk7CiAgICAgICAgIHNldENvbnRlbnRTZWN1cml0eVBvbGljeShzdGQ6Om1ha2VfdW5p
cXVlPENvbnRlbnRTZWN1cml0eVBvbGljeT4odGhpcykpOwogICAgICAgICByZXR1cm47CkBAIC00
Njk3LDcgKzQ3MDgsNyBAQCB2b2lkIERvY3VtZW50Ojppbml0U2VjdXJpdHlDb250ZXh0KCkKIAog
ICAgIC8vIEluIHRoZSBjb21tb24gY2FzZSwgY3JlYXRlIHRoZSBzZWN1cml0eSBjb250ZXh0IGZy
b20gdGhlIGN1cnJlbnRseQogICAgIC8vIGxvYWRpbmcgVVJMIHdpdGggYSBmcmVzaCBjb250ZW50
IHNlY3VyaXR5IHBvbGljeS4KLSAgICBtX2Nvb2tpZVVSTCA9IG1fdXJsOworICAgIHNldENvb2tp
ZVVSTChtX3VybCk7CiAgICAgZW5mb3JjZVNhbmRib3hGbGFncyhtX2ZyYW1lLT5sb2FkZXIoKS5l
ZmZlY3RpdmVTYW5kYm94RmxhZ3MoKSk7CiAKICNpZiBQTEFURk9STShJT1MpCkBAIC00NzYzLDcg
KzQ3NzQsNyBAQCB2b2lkIERvY3VtZW50Ojppbml0U2VjdXJpdHlDb250ZXh0KCkKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIG1fY29va2llVVJMID0gb3duZXJGcmFtZS0+ZG9jdW1lbnQo
KS0+Y29va2llVVJMKCk7CisgICAgc2V0Q29va2llVVJMKG93bmVyRnJhbWUtPmRvY3VtZW50KCkt
PmNvb2tpZVVSTCgpKTsKICAgICAvLyBXZSBhbGlhcyB0aGUgU2VjdXJpdHlPcmlnaW5zIHRvIG1h
dGNoIEZpcmVmb3gsIHNlZSBCdWcgMTUzMTMKICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTUzMTMKICAgICBzZXRTZWN1cml0eU9yaWdpbihvd25lckZyYW1l
LT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpKTsKQEAgLTYxNzksNiArNjE5MCwyNSBAQCB2
b2lkIERvY3VtZW50OjpkaWRBc3NvY2lhdGVGb3JtQ29udHJvbHNUaW1lckZpcmVkKFRpbWVyPERv
Y3VtZW50PiYgdGltZXIpCiAgICAgbV9hc3NvY2lhdGVkRm9ybUNvbnRyb2xzLmNsZWFyKCk7CiB9
CiAKK3ZvaWQgRG9jdW1lbnQ6OnNldENvb2tpZXNDYWNoZShjb25zdCBTdHJpbmcmIGNvb2tpZXMp
Cit7CisgICAgQVNTRVJUKCFpc0Nvb2tpZXNDYWNoZVZhbGlkKCkpOworICAgIG1fY29va2llc0Nh
Y2hlID0gY29va2llczsKKyAgICAvLyBUaGUgY29va2llcyBjYWNoZSBpcyB2YWxpZCB1bnRpbCB3
ZSBnbyBiYWNrIHRvIHRoZSBldmVudCBsb29wLgorICAgIG1fY29va2llc0NhY2hlRXhwaXJ5VGlt
ZXIuc3RhcnRPbmVTaG90KDApOworfQorCit2b2lkIERvY3VtZW50OjppbnZhbGlkYXRlQ29va2ll
c0NhY2hlKCkKK3sKKyAgICBtX2Nvb2tpZXNDYWNoZUV4cGlyeVRpbWVyLnN0b3AoKTsKKyAgICBt
X2Nvb2tpZXNDYWNoZSA9IFN0cmluZygpOworfQorCit2b2lkIERvY3VtZW50OjpkaWRDb29raWVz
Q2FjaGVFeHBpcnlUaW1lckZpcmVkKFRpbWVyPERvY3VtZW50PiYpCit7CisgICAgaW52YWxpZGF0
ZUNvb2tpZXNDYWNoZSgpOworfQorCiB2b2lkIERvY3VtZW50OjplbnN1cmVQbHVnSW5zSW5qZWN0
ZWRTY3JpcHQoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKIHsKICAgICBpZiAobV9oYXNJbmplY3Rl
ZFBsdWdJbnNTY3JpcHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDlmN2EyNWQuLmQ3MDJlNGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC04ODQsNyArODg0LDcgQEAgcHVibGljOgogICAgIHZv
aWQgc2V0VGl0bGVFbGVtZW50KGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mLCBFbGVtZW50KiB0
aXRsZUVsZW1lbnQpOwogICAgIHZvaWQgcmVtb3ZlVGl0bGUoRWxlbWVudCogdGl0bGVFbGVtZW50
KTsKIAotICAgIFN0cmluZyBjb29raWUoRXhjZXB0aW9uQ29kZSYpIGNvbnN0OworICAgIFN0cmlu
ZyBjb29raWUoRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgc2V0Q29va2llKGNvbnN0IFN0cmlu
ZyYsIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIFN0cmluZyByZWZlcnJlcigpIGNvbnN0OwpAQCAt
OTA3LDcgKzkwNyw3IEBAIHB1YmxpYzoKICAgICAvLyAgICBpbmhlcml0cyBpdHMgY29va2llVVJM
IGJ1dCBub3QgaXRzIFVSTC4KICAgICAvLwogICAgIGNvbnN0IFVSTCYgY29va2llVVJMKCkgY29u
c3QgeyByZXR1cm4gbV9jb29raWVVUkw7IH0KLSAgICB2b2lkIHNldENvb2tpZVVSTChjb25zdCBV
UkwmIHVybCkgeyBtX2Nvb2tpZVVSTCA9IHVybDsgfQorICAgIHZvaWQgc2V0Q29va2llVVJMKGNv
bnN0IFVSTCYpOwogCiAgICAgLy8gVGhlIGZpcnN0UGFydHlGb3JDb29raWVzIGlzIHVzZWQgdG8g
Y29tcHV0ZSB3aGV0aGVyIHRoaXMgZG9jdW1lbnQKICAgICAvLyBhcHBlYXJzIGluIGEgInRoaXJk
LXBhcnR5IiBjb250ZXh0IGZvciB0aGUgcHVycG9zZSBvZiB0aGlyZC1wYXJ0eQpAQCAtMTM2Nyw2
ICsxMzY3LDEyIEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRpZEFzc29jaWF0ZUZvcm1Db250cm9s
c1RpbWVyRmlyZWQoVGltZXI8RG9jdW1lbnQ+Jik7CiAKKyAgICBjb25zdCBTdHJpbmcmIGNvb2tp
ZXNDYWNoZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29va2llc0NhY2hlOyB9CisgICAgdm9pZCBzZXRD
b29raWVzQ2FjaGUoY29uc3QgU3RyaW5nJik7CisgICAgYm9vbCBpc0Nvb2tpZXNDYWNoZVZhbGlk
KCkgY29uc3QgeyByZXR1cm4gbV9jb29raWVzQ2FjaGVFeHBpcnlUaW1lci5pc0FjdGl2ZSgpOyB9
CisgICAgdm9pZCBpbnZhbGlkYXRlQ29va2llc0NhY2hlKCk7CisgICAgdm9pZCBkaWRDb29raWVz
Q2FjaGVFeHBpcnlUaW1lckZpcmVkKFRpbWVyPERvY3VtZW50PiYpOworCiAgICAgdW5zaWduZWQg
bV9yZWZlcmVuY2luZ05vZGVDb3VudDsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxTdHlsZVJlc29s
dmVyPiBtX3N0eWxlUmVzb2x2ZXI7CkBAIC0xNjk5LDYgKzE3MDUsOCBAQCBwcml2YXRlOgogI2Vu
ZGlmCiAKICAgICBUaW1lcjxEb2N1bWVudD4gbV9kaWRBc3NvY2lhdGVGb3JtQ29udHJvbHNUaW1l
cjsKKyAgICBUaW1lcjxEb2N1bWVudD4gbV9jb29raWVzQ2FjaGVFeHBpcnlUaW1lcjsKKyAgICBT
dHJpbmcgbV9jb29raWVzQ2FjaGU7CiAgICAgSGFzaFNldDxSZWZQdHI8RWxlbWVudD4+IG1fYXNz
b2NpYXRlZEZvcm1Db250cm9sczsKICAgICB1bnNpZ25lZCBtX2Rpc2FibGVkRmllbGRzZXRFbGVt
ZW50c0NvdW50OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>238887</attachid>
            <date>2014-09-29 15:22:34 -0700</date>
            <delta_ts>2014-09-29 15:59:46 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>137225_cookies_cache.patch</filename>
            <type>text/plain</type>
            <size>11989</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY29va2llcy9zeW5jLXhoci1zZXQt
Y29va2llLWludmFsaWRhdGVzLWNhY2hlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvY29va2llcy9zeW5jLXhoci1zZXQtY29va2llLWludmFsaWRhdGVzLWNhY2hlLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NzRhMjMxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb29raWVzL3N5bmMteGhyLXNl
dC1jb29raWUtaW52YWxpZGF0ZXMtY2FjaGUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTIgQEAK
K1Rlc3RzIHRoYXQgZG9jdW1lbnQuY29va2llIHJldHVybnMgdGhlIHJpZ2h0IHZhbHVlIGFmdGVy
IGEgc3luYyBYSFIKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgbm9ybWFs
aXplQ29va2llKGRvY3VtZW50LmNvb2tpZSkgaXMgInRlc3RLZXk9dGVzdFZhbHVlIgorUEFTUyB4
aHIuc3RhdHVzIGlzIDIwMAorRkFJTCBub3JtYWxpemVDb29raWUoZG9jdW1lbnQuY29va2llKSBz
aG91bGQgYmUgdGVzdEtleT10ZXN0VmFsdWU7IHhocktleT14aHJWYWx1ZS4gV2FzIHRlc3RLZXk9
dGVzdFZhbHVlLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBM
RVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY29va2llcy9zeW5jLXho
ci1zZXQtY29va2llLWludmFsaWRhdGVzLWNhY2hlLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2Nvb2tpZXMvc3luYy14aHItc2V0LWNvb2tpZS1pbnZhbGlkYXRlcy1jYWNoZS5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQxNzdlYzIKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nvb2tpZXMvc3luYy14aHItc2V0LWNvb2tpZS1p
bnZhbGlkYXRlcy1jYWNoZS5odG1sCkBAIC0wLDAgKzEsMTggQEAKKzwhRE9DVFlQRSBodG1sPgor
PHNjcmlwdCBzcmM9J3Jlc291cmNlcy9jb29raWVzLXRlc3QtcHJlLmpzJz48L3NjcmlwdD4KKwor
PHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCdUZXN0cyB0aGF0IGRvY3VtZW50LmNvb2tpZSByZXR1cm5z
IHRoZSByaWdodCB2YWx1ZSBhZnRlciBhIHN5bmMgWEhSJyk7CisKK2RvY3VtZW50LmNvb2tpZSA9
ICJ0ZXN0S2V5PXRlc3RWYWx1ZSI7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ25vcm1hbGl6ZUNv
b2tpZShkb2N1bWVudC5jb29raWUpJywgJ3Rlc3RLZXk9dGVzdFZhbHVlJyk7Cit2YXIgeGhyID0g
bmV3IFhNTEh0dHBSZXF1ZXN0KCk7Cit4aHIub3BlbignR0VUJywgJ3Jlc291cmNlcy9zZXRDb29r
aWVzLmNnaScsIGZhbHNlKTsKK3hoci5zZXRSZXF1ZXN0SGVhZGVyKCdTRVQtQ09PS0lFJywgJ3ho
cktleT14aHJWYWx1ZScpOworeGhyLnNlbmQoKTsKKworc2hvdWxkQmUoJ3hoci5zdGF0dXMnLCAn
MjAwJyk7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ25vcm1hbGl6ZUNvb2tpZShkb2N1bWVudC5j
b29raWUpJywgJ3Rlc3RLZXk9dGVzdFZhbHVlOyB4aHJLZXk9eGhyVmFsdWUnKTsKKworPC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0ncmVzb3VyY2VzL2Nvb2tpZXMtdGVzdC1wb3N0LmpzJz48L3Njcmlw
dD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwppbmRleCBhNDcwYzAyLi5mYWI3ZWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NDYgQEAKKzIwMTQtMDktMjkgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAg
ICAgICBBZGQgYmFzaWMgY2FjaGluZyBmb3IgRG9jdW1lbnQuY29va2llIEFQSQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3MjI1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hpbGUgcHJvZmlsaW5nIHRo
ZSBsb2FkIG9mIG55dGltZXMuY29tLCBJIG5vdGljZWQgdGhhdCB0aGUgc2l0ZSBpcworICAgICAg
ICBhY2Nlc3NpbmcgfjI1MCB0aW1lcyBkb2N1bWVudC5jb29raWUsIGp1c3QgZHVyaW5nIHBhZ2Ug
bG9hZC4gQWNjZXNzaW5nCisgICAgICAgIGRvY3VtZW50LmNvb2tpZSBpcyBjdXJyZW50bHkgc2xv
dyBiZWNhdXNlIHdlOgorICAgICAgICAtIENhbGwgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29r
aWVzRm9yRE9NKCkgdmlydHVhbCBmdW5jdGlvbgorICAgICAgICAtIFNlbmQgYSBzeW5jIElQQyBt
ZXNzYWdlIHRvIHRoZSBOZXR3b3JrIHByb2Nlc3MgdG8gcmV0cmlldmUgdGhlCisgICAgICAgICAg
Y29va2llcworICAgICAgICAgICAgLSBUaGUgTmV0d29yayBwcm9jZXNzIGdldHMgdGhlIGxpc3Qg
b2YgY29va2llcyBmcm9tIENGTmV0d29yayB0aGVuCisgICAgICAgICAgICAgIHNlcmlhbGl6ZXMg
dGhlIHJlc3VsdCB0byBzZW5kIGl0IGJhY2sgdG8gdGhlIFdlYlByb2Nlc3MKKyAgICAgICAgLSBX
ZSB1bnNlcmlhbGl6ZSB0aGUgY29va2llcyBpbnRvIGFuIE5TTGlzdCBvZiBjb29raWVzCisgICAg
ICAgIC0gV2UgZmlsdGVyLW91dCB0aGUgY29va2llcyB0aGF0IGFyZSAnaHR0cE9ubHknIGFuZCBj
b25zdHJ1Y3QgYSBuZXcKKyAgICAgICAgICBOU0xpc3Qgb2YgY29va2llcworICAgICAgICAtIFdl
IGNyZWF0ZSBhIFdURiBTdHJpbmcgb3V0IG9mIHRoZSBjb29raWVzIE5TTGlzdAorCisgICAgICAg
IEluIHRoZSBjYXNlIG9mIG55dGltZXMuY29tLCBpdCB0dXJucyBvdXQgdGhhdCB1cCB0byAxMDAg
Y2FsbHMgdG8KKyAgICAgICAgZG9jdW1lbnQuY29va2llKCkgYXJlIG1hZGUgaW4gdGhlIHNhbWUg
ZXZlbnQgbG9vcCBpdGVyYXRpb24uIFRoaXMgcGF0Y2gKKyAgICAgICAgdGh1cyBjYWNoZXMgLyBm
cmVlemVzIHRoZSBjb29raWVzIHVudGlsIHdlIHJldHVybiB0byB0aGUgZXZlbnQKKyAgICAgICAg
bG9vcCBzbyB0aGF0IGNvbnNlY3V0aXZlIGNhbGxzIHRvIGRvY3VtZW50LmNvb2tpZSgpIGFyZSBl
eHRyZW1lbHkgZmFzdC4KKyAgICAgICAgRG9pbmcgc28gc2VlbXMgdG8gYmUgc3VmZmljaWVudCB0
byBhY2hpZXZlIGEgfjc2JSBjYWNoZSBoaXQgZm9yIG55dGltZXMuY29tLgorCisgICAgICAgIFRl
c3Q6IGh0dHAvdGVzdHMvY29va2llcy9zeW5jLXhoci1zZXQtY29va2llLWludmFsaWRhdGVzLWNh
Y2hlLmh0bWwKKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudDo6RG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6Om9wZW4p
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmNvb2tpZSk6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudDo6c2V0Q29va2llKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzZXRD
b29raWVVUkwpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmluaXRTZWN1cml0eUNvbnRl
eHQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNldENvb2tpZXNDYWNoZSk6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudDo6aW52YWxpZGF0ZUNvb2tpZXNDYWNoZSk6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6ZGlkQ29va2llc0NhY2hlRXhwaXJ5VGltZXJGaXJlZCk6Cisg
ICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Y29v
a2llc0NhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojppc0Nvb2tpZXNDYWNoZVZh
bGlkKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzZXRDb29raWVVUkwpOiBEZWxldGVk
LgorCiAyMDE0LTA5LTI5ICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CiAK
ICAgICAgICAgQVg6IGluIGFuIGFyaWEtbGFiZWxsZWRieSBjb21wdXRhdGlvbiwgZG8gbm90IHRy
YXZlcnNlIGludG8gZWxlbWVudHMgd2hvc2UgbmFtZUZyb20gdmFsdWUgZG9lcyBub3QgaW5jbHVk
ZSAnY29udGVudHMnCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCA4ZTgzZTkxMi4uM2FhZDUx
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC01MTMsNiArNTEzLDcgQEAgRG9jdW1lbnQ6
OkRvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwsIHVuc2lnbmVkIGRvY3VtZW50
Q2xhc3NlcywgdW5zaWcKICAgICAsIG1faW5wdXRDdXJzb3IoRW1wdHlJbnB1dEN1cnNvcjo6Y3Jl
YXRlKCkpCiAjZW5kaWYKICAgICAsIG1fZGlkQXNzb2NpYXRlRm9ybUNvbnRyb2xzVGltZXIodGhp
cywgJkRvY3VtZW50OjpkaWRBc3NvY2lhdGVGb3JtQ29udHJvbHNUaW1lckZpcmVkKQorICAgICwg
bV9jb29raWVzQ2FjaGVFeHBpcnlUaW1lcih0aGlzLCAmRG9jdW1lbnQ6OmRpZERPTUNvb2tpZXND
YWNoZUV4cGlyeVRpbWVyRmlyZWQpCiAgICAgLCBtX2Rpc2FibGVkRmllbGRzZXRFbGVtZW50c0Nv
dW50KDApCiAgICAgLCBtX2hhc0luamVjdGVkUGx1Z0luc1NjcmlwdChmYWxzZSkKICAgICAsIG1f
cmVuZGVyVHJlZUJlaW5nRGVzdHJveWVkKGZhbHNlKQpAQCAtMjI1Niw3ICsyMjU3LDcgQEAgdm9p
ZCBEb2N1bWVudDo6b3BlbihEb2N1bWVudCogb3duZXJEb2N1bWVudCkKIHsKICAgICBpZiAob3du
ZXJEb2N1bWVudCkgewogICAgICAgICBzZXRVUkwob3duZXJEb2N1bWVudC0+dXJsKCkpOwotICAg
ICAgICBtX2Nvb2tpZVVSTCA9IG93bmVyRG9jdW1lbnQtPmNvb2tpZVVSTCgpOworICAgICAgICBz
ZXRDb29raWVVUkwob3duZXJEb2N1bWVudC0+Y29va2llVVJMKCkpOwogICAgICAgICBzZXRTZWN1
cml0eU9yaWdpbihvd25lckRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpKTsKICAgICB9CiAKQEAg
LTM4MzUsNyArMzgzNiw3IEBAIEhUTUxGcmFtZU93bmVyRWxlbWVudCogRG9jdW1lbnQ6Om93bmVy
RWxlbWVudCgpIGNvbnN0CiAgICAgcmV0dXJuIGZyYW1lKCktPm93bmVyRWxlbWVudCgpOwogfQog
Ci1TdHJpbmcgRG9jdW1lbnQ6OmNvb2tpZShFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKK1N0cmlu
ZyBEb2N1bWVudDo6Y29va2llKEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGlmIChwYWdlKCkg
JiYgIXBhZ2UoKS0+c2V0dGluZ3MoKS5jb29raWVFbmFibGVkKCkpCiAgICAgICAgIHJldHVybiBT
dHJpbmcoKTsKQEAgLTM4NTMsNyArMzg1NCwxMCBAQCBTdHJpbmcgRG9jdW1lbnQ6OmNvb2tpZShF
eGNlcHRpb25Db2RlJiBlYykgY29uc3QKICAgICBpZiAoY29va2llVVJMLmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuIFN0cmluZygpOwogCi0gICAgcmV0dXJuIGNvb2tpZXModGhpcywgY29va2ll
VVJMKTsKKyAgICBpZiAoIWlzRE9NQ29va2llc0NhY2hlVmFsaWQoKSkKKyAgICAgICAgc2V0RE9N
Q29va2llc0NhY2hlKGNvb2tpZXModGhpcywgY29va2llVVJMKSk7CisKKyAgICByZXR1cm4gZG9t
Q29va2llc0NhY2hlKCk7CiB9CiAKIHZvaWQgRG9jdW1lbnQ6OnNldENvb2tpZShjb25zdCBTdHJp
bmcmIHZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYykKQEAgLTM4NzQsNiArMzg3OCw3IEBAIHZvaWQg
RG9jdW1lbnQ6OnNldENvb2tpZShjb25zdCBTdHJpbmcmIHZhbHVlLCBFeGNlcHRpb25Db2RlJiBl
YykKICAgICBpZiAoY29va2llVVJMLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAg
aW52YWxpZGF0ZURPTUNvb2tpZXNDYWNoZSgpOwogICAgIHNldENvb2tpZXModGhpcywgY29va2ll
VVJMLCB2YWx1ZSk7CiB9CiAKQEAgLTM5NzcsNiArMzk4MiwxMiBAQCBTdHJpbmcgRG9jdW1lbnQ6
Omxhc3RNb2RpZmllZCgpIGNvbnN0CiAgICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCIlMDJkLyUw
MmQvJTA0ZCAlMDJkOiUwMmQ6JTAyZCIsIGRhdGUubW9udGgoKSArIDEsIGRhdGUubW9udGhEYXko
KSwgZGF0ZS5mdWxsWWVhcigpLCBkYXRlLmhvdXIoKSwgZGF0ZS5taW51dGUoKSwgZGF0ZS5zZWNv
bmQoKSk7CiB9CiAKK3ZvaWQgRG9jdW1lbnQ6OnNldENvb2tpZVVSTChjb25zdCBVUkwmIHVybCkK
K3sKKyAgICBtX2Nvb2tpZVVSTCA9IHVybDsKKyAgICBpbnZhbGlkYXRlRE9NQ29va2llc0NhY2hl
KCk7Cit9CisKIHN0YXRpYyBib29sIGlzVmFsaWROYW1lTm9uQVNDSUkoY29uc3QgTENoYXIqIGNo
YXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKIHsKICAgICBpZiAoIWlzVmFsaWROYW1lU3RhcnQo
Y2hhcmFjdGVyc1swXSkpCkBAIC00Njg5LDcgKzQ3MDAsNyBAQCB2b2lkIERvY3VtZW50Ojppbml0
U2VjdXJpdHlDb250ZXh0KCkKICAgICBpZiAoIW1fZnJhbWUpIHsKICAgICAgICAgLy8gTm8gc291
cmNlIGZvciBhIHNlY3VyaXR5IGNvbnRleHQuCiAgICAgICAgIC8vIFRoaXMgY2FuIG9jY3VyIHZp
YSBkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVEb2N1bWVudCgpLgotICAgICAgICBtX2Nv
b2tpZVVSTCA9IFVSTChQYXJzZWRVUkxTdHJpbmcsIGVtcHR5U3RyaW5nKCkpOworICAgICAgICBz
ZXRDb29raWVVUkwoVVJMKFBhcnNlZFVSTFN0cmluZywgZW1wdHlTdHJpbmcoKSkpOwogICAgICAg
ICBzZXRTZWN1cml0eU9yaWdpbihTZWN1cml0eU9yaWdpbjo6Y3JlYXRlVW5pcXVlKCkpOwogICAg
ICAgICBzZXRDb250ZW50U2VjdXJpdHlQb2xpY3koc3RkOjptYWtlX3VuaXF1ZTxDb250ZW50U2Vj
dXJpdHlQb2xpY3k+KHRoaXMpKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNDY5Nyw3ICs0NzA4LDcg
QEAgdm9pZCBEb2N1bWVudDo6aW5pdFNlY3VyaXR5Q29udGV4dCgpCiAKICAgICAvLyBJbiB0aGUg
Y29tbW9uIGNhc2UsIGNyZWF0ZSB0aGUgc2VjdXJpdHkgY29udGV4dCBmcm9tIHRoZSBjdXJyZW50
bHkKICAgICAvLyBsb2FkaW5nIFVSTCB3aXRoIGEgZnJlc2ggY29udGVudCBzZWN1cml0eSBwb2xp
Y3kuCi0gICAgbV9jb29raWVVUkwgPSBtX3VybDsKKyAgICBzZXRDb29raWVVUkwobV91cmwpOwog
ICAgIGVuZm9yY2VTYW5kYm94RmxhZ3MobV9mcmFtZS0+bG9hZGVyKCkuZWZmZWN0aXZlU2FuZGJv
eEZsYWdzKCkpOwogCiAjaWYgUExBVEZPUk0oSU9TKQpAQCAtNDc2Myw3ICs0Nzc0LDcgQEAgdm9p
ZCBEb2N1bWVudDo6aW5pdFNlY3VyaXR5Q29udGV4dCgpCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBtX2Nvb2tpZVVSTCA9IG93bmVyRnJhbWUtPmRvY3VtZW50KCktPmNvb2tpZVVSTCgp
OworICAgIHNldENvb2tpZVVSTChvd25lckZyYW1lLT5kb2N1bWVudCgpLT5jb29raWVVUkwoKSk7
CiAgICAgLy8gV2UgYWxpYXMgdGhlIFNlY3VyaXR5T3JpZ2lucyB0byBtYXRjaCBGaXJlZm94LCBz
ZWUgQnVnIDE1MzEzCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1MzEzCiAgICAgc2V0U2VjdXJpdHlPcmlnaW4ob3duZXJGcmFtZS0+ZG9jdW1lbnQoKS0+
c2VjdXJpdHlPcmlnaW4oKSk7CkBAIC02MTc5LDYgKzYxOTAsMzIgQEAgdm9pZCBEb2N1bWVudDo6
ZGlkQXNzb2NpYXRlRm9ybUNvbnRyb2xzVGltZXJGaXJlZChUaW1lcjxEb2N1bWVudD4mIHRpbWVy
KQogICAgIG1fYXNzb2NpYXRlZEZvcm1Db250cm9scy5jbGVhcigpOwogfQogCit2b2lkIERvY3Vt
ZW50OjpzZXRET01Db29raWVzQ2FjaGUoY29uc3QgU3RyaW5nJiBjb29raWVzKQoreworICAgIEFT
U0VSVCghaXNET01Db29raWVzQ2FjaGVWYWxpZCgpKTsKKyAgICBtX0RPTUNvb2tpZXNDYWNoZSA9
IGNvb2tpZXM7CisgICAgLy8gVGhlIGNvb2tpZXMgY2FjaGUgaXMgdmFsaWQgdW50aWwgd2UgZ28g
YmFjayB0byB0aGUgZXZlbnQgbG9vcC4KKyAgICBtX2Nvb2tpZXNDYWNoZUV4cGlyeVRpbWVyLnN0
YXJ0T25lU2hvdCgwKTsKK30KKwordm9pZCBEb2N1bWVudDo6aW52YWxpZGF0ZURPTUNvb2tpZXND
YWNoZSgpCit7CisgICAgbV9jb29raWVzQ2FjaGVFeHBpcnlUaW1lci5zdG9wKCk7CisgICAgbV9E
T01Db29raWVzQ2FjaGUgPSBTdHJpbmcoKTsKK30KKwordm9pZCBEb2N1bWVudDo6ZGlkRE9NQ29v
a2llc0NhY2hlRXhwaXJ5VGltZXJGaXJlZChUaW1lcjxEb2N1bWVudD4mKQoreworICAgIGludmFs
aWRhdGVET01Db29raWVzQ2FjaGUoKTsKK30KKwordm9pZCBEb2N1bWVudDo6ZGlkTG9hZFhIUlN5
bmNocm9ub3VzbHkoKQoreworICAgIC8vIFN5bmNocm9ub3VzIFhIUiBjYW4gc2V0IGNvb2tpZXMg
c28gd2UgaW52YWxpZGF0ZSB0aGUgY29va2llcyBjYWNoZQorICAgIC8vIGluIHRoaXMgY2FzZSwg
dG8gYmUgc2FmZS4KKyAgICBpbnZhbGlkYXRlRE9NQ29va2llc0NhY2hlKCk7Cit9CisKIHZvaWQg
RG9jdW1lbnQ6OmVuc3VyZVBsdWdJbnNJbmplY3RlZFNjcmlwdChET01XcmFwcGVyV29ybGQmIHdv
cmxkKQogewogICAgIGlmIChtX2hhc0luamVjdGVkUGx1Z0luc1NjcmlwdCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmgKaW5kZXggOWY3YTI1ZC4uZDIwNzBhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTg4
NCw3ICs4ODQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRUaXRsZUVsZW1lbnQoY29uc3QgU3Ry
aW5nV2l0aERpcmVjdGlvbiYsIEVsZW1lbnQqIHRpdGxlRWxlbWVudCk7CiAgICAgdm9pZCByZW1v
dmVUaXRsZShFbGVtZW50KiB0aXRsZUVsZW1lbnQpOwogCi0gICAgU3RyaW5nIGNvb2tpZShFeGNl
cHRpb25Db2RlJikgY29uc3Q7CisgICAgU3RyaW5nIGNvb2tpZShFeGNlcHRpb25Db2RlJik7CiAg
ICAgdm9pZCBzZXRDb29raWUoY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAg
U3RyaW5nIHJlZmVycmVyKCkgY29uc3Q7CkBAIC05MDcsNyArOTA3LDcgQEAgcHVibGljOgogICAg
IC8vICAgIGluaGVyaXRzIGl0cyBjb29raWVVUkwgYnV0IG5vdCBpdHMgVVJMLgogICAgIC8vCiAg
ICAgY29uc3QgVVJMJiBjb29raWVVUkwoKSBjb25zdCB7IHJldHVybiBtX2Nvb2tpZVVSTDsgfQot
ICAgIHZvaWQgc2V0Q29va2llVVJMKGNvbnN0IFVSTCYgdXJsKSB7IG1fY29va2llVVJMID0gdXJs
OyB9CisgICAgdm9pZCBzZXRDb29raWVVUkwoY29uc3QgVVJMJik7CiAKICAgICAvLyBUaGUgZmly
c3RQYXJ0eUZvckNvb2tpZXMgaXMgdXNlZCB0byBjb21wdXRlIHdoZXRoZXIgdGhpcyBkb2N1bWVu
dAogICAgIC8vIGFwcGVhcnMgaW4gYSAidGhpcmQtcGFydHkiIGNvbnRleHQgZm9yIHRoZSBwdXJw
b3NlIG9mIHRoaXJkLXBhcnR5CkBAIC0xMzY3LDYgKzEzNjcsMTQgQEAgcHJpdmF0ZToKIAogICAg
IHZvaWQgZGlkQXNzb2NpYXRlRm9ybUNvbnRyb2xzVGltZXJGaXJlZChUaW1lcjxEb2N1bWVudD4m
KTsKIAorICAgIC8vIERPTSBDb29raWVzIGNhY2hpbmcuCisgICAgY29uc3QgU3RyaW5nJiBkb21D
b29raWVzQ2FjaGUoKSBjb25zdCB7IHJldHVybiBtX0RPTUNvb2tpZXNDYWNoZTsgfQorICAgIHZv
aWQgc2V0RE9NQ29va2llc0NhY2hlKGNvbnN0IFN0cmluZyYpOworICAgIGJvb2wgaXNET01Db29r
aWVzQ2FjaGVWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1fY29va2llc0NhY2hlRXhwaXJ5VGltZXIu
aXNBY3RpdmUoKTsgfQorICAgIHZvaWQgaW52YWxpZGF0ZURPTUNvb2tpZXNDYWNoZSgpOworICAg
IHZvaWQgZGlkRE9NQ29va2llc0NhY2hlRXhwaXJ5VGltZXJGaXJlZChUaW1lcjxEb2N1bWVudD4m
KTsKKyAgICB2b2lkIGRpZExvYWRYSFJTeW5jaHJvbm91c2x5KCkgb3ZlcnJpZGUgZmluYWw7CisK
ICAgICB1bnNpZ25lZCBtX3JlZmVyZW5jaW5nTm9kZUNvdW50OwogCiAgICAgc3RkOjp1bmlxdWVf
cHRyPFN0eWxlUmVzb2x2ZXI+IG1fc3R5bGVSZXNvbHZlcjsKQEAgLTE2OTksNiArMTcwNyw4IEBA
IHByaXZhdGU6CiAjZW5kaWYKIAogICAgIFRpbWVyPERvY3VtZW50PiBtX2RpZEFzc29jaWF0ZUZv
cm1Db250cm9sc1RpbWVyOworICAgIFRpbWVyPERvY3VtZW50PiBtX2Nvb2tpZXNDYWNoZUV4cGly
eVRpbWVyOworICAgIFN0cmluZyBtX0RPTUNvb2tpZXNDYWNoZTsKICAgICBIYXNoU2V0PFJlZlB0
cjxFbGVtZW50Pj4gbV9hc3NvY2lhdGVkRm9ybUNvbnRyb2xzOwogICAgIHVuc2lnbmVkIG1fZGlz
YWJsZWRGaWVsZHNldEVsZW1lbnRzQ291bnQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmNwcAppbmRleCA1ZjQwNWFmLi4zOWEzNjk3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCkBAIC0xNzIsNiArMTcy
LDEwIEBAIHZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6ZGVzdHJveWVkTWVzc2FnZVBvcnQo
TWVzc2FnZVBvcnQmIG1lc3NhZ2VQb3J0KQogICAgIG1fbWVzc2FnZVBvcnRzLnJlbW92ZSgmbWVz
c2FnZVBvcnQpOwogfQogCit2b2lkIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmRpZExvYWRYSFJT
eW5jaHJvbm91c2x5KCkKK3sKK30KKwogYm9vbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpjYW5T
dXNwZW5kQWN0aXZlRE9NT2JqZWN0cygpCiB7CiAgICAgY2hlY2tDb25zaXN0ZW5jeSgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKaW5kZXggZGFkZDlhYS4u
NDE5NGQ3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5o
CkBAIC0xMTAsNiArMTEwLDkgQEAgcHVibGljOgogICAgIHZvaWQgY3JlYXRlZE1lc3NhZ2VQb3J0
KE1lc3NhZ2VQb3J0Jik7CiAgICAgdm9pZCBkZXN0cm95ZWRNZXNzYWdlUG9ydChNZXNzYWdlUG9y
dCYpOwogCisgICAgLy8gWEhSLgorICAgIHZpcnR1YWwgdm9pZCBkaWRMb2FkWEhSU3luY2hyb25v
dXNseSgpOworCiAgICAgdm9pZCByZWYoKSB7IHJlZlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsg
fQogICAgIHZvaWQgZGVyZWYoKSB7IGRlcmVmU2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCmluZGV4IGMyMzc1YzQuLmMxODY3NDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcApAQCAtNzkwLDYgKzc5MCw3IEBA
IHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlcXVlc3QoRXhjZXB0aW9uQ29kZSYgZWMpCiAg
ICAgfSBlbHNlIHsKICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsTG9hZFhI
UlN5bmNocm9ub3VzbHkoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICAgICAgVGhyZWFk
YWJsZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCksIHJlcXVlc3QsICp0aGlzLCBvcHRpb25zKTsKKyAgICAgICAgc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpLT5kaWRMb2FkWEhSU3luY2hyb25vdXNseSgpOwogICAgICAgICBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZExvYWRYSFJTeW5jaHJvbm91c2x5KHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSk7CiAgICAgfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>238891</attachid>
            <date>2014-09-29 15:59:52 -0700</date>
            <delta_ts>2014-09-29 16:32:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137225-20140929155953.patch</filename>
            <type>text/plain</type>
            <size>13741</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0MDc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTQ3MGMwMmQyY2Y1ZWEx
NzEwYzhmNDdmMjI5Y2U0MjU1YmM4Yjg0NC4uNWYyZjNmN2MxNWNiNjUyOTZkZjU5ZDNmMTg2ZTYw
NTk3ZGMwYmMwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDE0LTA5LTI5ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGJhc2ljIGNhY2hpbmcg
Zm9yIERvY3VtZW50LmNvb2tpZSBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEzNzIyNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFdoaWxlIHByb2ZpbGluZyB0aGUgbG9hZCBvZiBueXRpbWVzLmNvbSwg
SSBub3RpY2VkIHRoYXQgdGhlIHNpdGUgaXMKKyAgICAgICAgYWNjZXNzaW5nIH4yNTAgdGltZXMg
ZG9jdW1lbnQuY29va2llLCBqdXN0IGR1cmluZyBwYWdlIGxvYWQuIEFjY2Vzc2luZworICAgICAg
ICBkb2N1bWVudC5jb29raWUgaXMgY3VycmVudGx5IHNsb3cgYmVjYXVzZSB3ZToKKyAgICAgICAg
LSBDYWxsIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29va2llc0ZvckRPTSgpIHZpcnR1YWwgZnVu
Y3Rpb24KKyAgICAgICAgLSBTZW5kIGEgc3luYyBJUEMgbWVzc2FnZSB0byB0aGUgTmV0d29yayBw
cm9jZXNzIHRvIHJldHJpZXZlIHRoZQorICAgICAgICAgIGNvb2tpZXMKKyAgICAgICAgICAgIC0g
VGhlIE5ldHdvcmsgcHJvY2VzcyBnZXRzIHRoZSBsaXN0IG9mIGNvb2tpZXMgZnJvbSBDRk5ldHdv
cmsgdGhlbgorICAgICAgICAgICAgICBzZXJpYWxpemVzIHRoZSByZXN1bHQgdG8gc2VuZCBpdCBi
YWNrIHRvIHRoZSBXZWJQcm9jZXNzCisgICAgICAgIC0gV2UgdW5zZXJpYWxpemUgdGhlIGNvb2tp
ZXMgaW50byBhbiBOU0xpc3Qgb2YgY29va2llcworICAgICAgICAtIFdlIGZpbHRlci1vdXQgdGhl
IGNvb2tpZXMgdGhhdCBhcmUgJ2h0dHBPbmx5JyBhbmQgY29uc3RydWN0IGEgbmV3CisgICAgICAg
ICAgTlNMaXN0IG9mIGNvb2tpZXMKKyAgICAgICAgLSBXZSBjcmVhdGUgYSBXVEYgU3RyaW5nIG91
dCBvZiB0aGUgY29va2llcyBOU0xpc3QKKworICAgICAgICBJbiB0aGUgY2FzZSBvZiBueXRpbWVz
LmNvbSwgaXQgdHVybnMgb3V0IHRoYXQgdXAgdG8gMTAwIGNhbGxzIHRvCisgICAgICAgIGRvY3Vt
ZW50LmNvb2tpZSgpIGFyZSBtYWRlIGluIHRoZSBzYW1lIGV2ZW50IGxvb3AgaXRlcmF0aW9uLiBU
aGlzIHBhdGNoCisgICAgICAgIHRodXMgY2FjaGVzIC8gZnJlZXplcyB0aGUgY29va2llcyB1bnRp
bCB3ZSByZXR1cm4gdG8gdGhlIGV2ZW50CisgICAgICAgIGxvb3Agc28gdGhhdCBjb25zZWN1dGl2
ZSBjYWxscyB0byBkb2N1bWVudC5jb29raWUoKSBhcmUgZXh0cmVtZWx5IGZhc3QuCisgICAgICAg
IERvaW5nIHNvIHNlZW1zIHRvIGJlIHN1ZmZpY2llbnQgdG8gYWNoaWV2ZSBhIH43NiUgY2FjaGUg
aGl0IGZvciBueXRpbWVzLmNvbS4KKworICAgICAgICBUZXN0OiBodHRwL3Rlc3RzL2Nvb2tpZXMv
c3luYy14aHItc2V0LWNvb2tpZS1pbnZhbGlkYXRlcy1jYWNoZS5odG1sCisKKyAgICAgICAgKiBk
b20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OkRvY3VtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpvcGVuKToKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50Ojpjb29raWUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNldENvb2tpZSk6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0Q29va2llVVJMKToKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50Ojppbml0U2VjdXJpdHlDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50OjpzZXRET01Db29raWVzQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnQ6OmludmFsaWRhdGVET01Db29raWVzQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnQ6OmRpZERPTUNvb2tpZXNDYWNoZUV4cGlyeVRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnQ6OmRpZExvYWRYSFJTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKiBkb20vRG9j
dW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpkb21Db29raWVzQ2FjaGUpOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmlzRE9NQ29va2llc0NhY2hlVmFsaWQpOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNldENvb2tpZVVSTCk6IERlbGV0ZWQuCisgICAgICAg
ICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6ZGlkTG9hZFhIUlN5bmNocm9ub3VzbHkpOgorICAgICAgICAq
IGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0Lmg6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1
ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXF1ZXN0
KToKKwogMjAxNC0wOS0yOSAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgog
CiAgICAgICAgIEFYOiBpbiBhbiBhcmlhLWxhYmVsbGVkYnkgY29tcHV0YXRpb24sIGRvIG5vdCB0
cmF2ZXJzZSBpbnRvIGVsZW1lbnRzIHdob3NlIG5hbWVGcm9tIHZhbHVlIGRvZXMgbm90IGluY2x1
ZGUgJ2NvbnRlbnRzJwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggOGU4M2U5MTIwMTRjY2I4
NmI2ZDgxMDhhMmRmMzI5NDgxMDdlYjRlMi4uM2FhZDUxMzdiY2ZkZjdmY2E2NjRmOWFjNjkxMTQx
NmExNDFiMTQ0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC01MTMsNiArNTEzLDcgQEAg
RG9jdW1lbnQ6OkRvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwsIHVuc2lnbmVk
IGRvY3VtZW50Q2xhc3NlcywgdW5zaWcKICAgICAsIG1faW5wdXRDdXJzb3IoRW1wdHlJbnB1dEN1
cnNvcjo6Y3JlYXRlKCkpCiAjZW5kaWYKICAgICAsIG1fZGlkQXNzb2NpYXRlRm9ybUNvbnRyb2xz
VGltZXIodGhpcywgJkRvY3VtZW50OjpkaWRBc3NvY2lhdGVGb3JtQ29udHJvbHNUaW1lckZpcmVk
KQorICAgICwgbV9jb29raWVzQ2FjaGVFeHBpcnlUaW1lcih0aGlzLCAmRG9jdW1lbnQ6OmRpZERP
TUNvb2tpZXNDYWNoZUV4cGlyeVRpbWVyRmlyZWQpCiAgICAgLCBtX2Rpc2FibGVkRmllbGRzZXRF
bGVtZW50c0NvdW50KDApCiAgICAgLCBtX2hhc0luamVjdGVkUGx1Z0luc1NjcmlwdChmYWxzZSkK
ICAgICAsIG1fcmVuZGVyVHJlZUJlaW5nRGVzdHJveWVkKGZhbHNlKQpAQCAtMjI1Niw3ICsyMjU3
LDcgQEAgdm9pZCBEb2N1bWVudDo6b3BlbihEb2N1bWVudCogb3duZXJEb2N1bWVudCkKIHsKICAg
ICBpZiAob3duZXJEb2N1bWVudCkgewogICAgICAgICBzZXRVUkwob3duZXJEb2N1bWVudC0+dXJs
KCkpOwotICAgICAgICBtX2Nvb2tpZVVSTCA9IG93bmVyRG9jdW1lbnQtPmNvb2tpZVVSTCgpOwor
ICAgICAgICBzZXRDb29raWVVUkwob3duZXJEb2N1bWVudC0+Y29va2llVVJMKCkpOwogICAgICAg
ICBzZXRTZWN1cml0eU9yaWdpbihvd25lckRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpKTsKICAg
ICB9CiAKQEAgLTM4MzUsNyArMzgzNiw3IEBAIEhUTUxGcmFtZU93bmVyRWxlbWVudCogRG9jdW1l
bnQ6Om93bmVyRWxlbWVudCgpIGNvbnN0CiAgICAgcmV0dXJuIGZyYW1lKCktPm93bmVyRWxlbWVu
dCgpOwogfQogCi1TdHJpbmcgRG9jdW1lbnQ6OmNvb2tpZShFeGNlcHRpb25Db2RlJiBlYykgY29u
c3QKK1N0cmluZyBEb2N1bWVudDo6Y29va2llKEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGlm
IChwYWdlKCkgJiYgIXBhZ2UoKS0+c2V0dGluZ3MoKS5jb29raWVFbmFibGVkKCkpCiAgICAgICAg
IHJldHVybiBTdHJpbmcoKTsKQEAgLTM4NTMsNyArMzg1NCwxMCBAQCBTdHJpbmcgRG9jdW1lbnQ6
OmNvb2tpZShFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKICAgICBpZiAoY29va2llVVJMLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCi0gICAgcmV0dXJuIGNvb2tpZXModGhp
cywgY29va2llVVJMKTsKKyAgICBpZiAoIWlzRE9NQ29va2llc0NhY2hlVmFsaWQoKSkKKyAgICAg
ICAgc2V0RE9NQ29va2llc0NhY2hlKGNvb2tpZXModGhpcywgY29va2llVVJMKSk7CisKKyAgICBy
ZXR1cm4gZG9tQ29va2llc0NhY2hlKCk7CiB9CiAKIHZvaWQgRG9jdW1lbnQ6OnNldENvb2tpZShj
b25zdCBTdHJpbmcmIHZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYykKQEAgLTM4NzQsNiArMzg3OCw3
IEBAIHZvaWQgRG9jdW1lbnQ6OnNldENvb2tpZShjb25zdCBTdHJpbmcmIHZhbHVlLCBFeGNlcHRp
b25Db2RlJiBlYykKICAgICBpZiAoY29va2llVVJMLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
OwogCisgICAgaW52YWxpZGF0ZURPTUNvb2tpZXNDYWNoZSgpOwogICAgIHNldENvb2tpZXModGhp
cywgY29va2llVVJMLCB2YWx1ZSk7CiB9CiAKQEAgLTM5NzcsNiArMzk4MiwxMiBAQCBTdHJpbmcg
RG9jdW1lbnQ6Omxhc3RNb2RpZmllZCgpIGNvbnN0CiAgICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0
KCIlMDJkLyUwMmQvJTA0ZCAlMDJkOiUwMmQ6JTAyZCIsIGRhdGUubW9udGgoKSArIDEsIGRhdGUu
bW9udGhEYXkoKSwgZGF0ZS5mdWxsWWVhcigpLCBkYXRlLmhvdXIoKSwgZGF0ZS5taW51dGUoKSwg
ZGF0ZS5zZWNvbmQoKSk7CiB9CiAKK3ZvaWQgRG9jdW1lbnQ6OnNldENvb2tpZVVSTChjb25zdCBV
UkwmIHVybCkKK3sKKyAgICBtX2Nvb2tpZVVSTCA9IHVybDsKKyAgICBpbnZhbGlkYXRlRE9NQ29v
a2llc0NhY2hlKCk7Cit9CisKIHN0YXRpYyBib29sIGlzVmFsaWROYW1lTm9uQVNDSUkoY29uc3Qg
TENoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKIHsKICAgICBpZiAoIWlzVmFsaWRO
YW1lU3RhcnQoY2hhcmFjdGVyc1swXSkpCkBAIC00Njg5LDcgKzQ3MDAsNyBAQCB2b2lkIERvY3Vt
ZW50Ojppbml0U2VjdXJpdHlDb250ZXh0KCkKICAgICBpZiAoIW1fZnJhbWUpIHsKICAgICAgICAg
Ly8gTm8gc291cmNlIGZvciBhIHNlY3VyaXR5IGNvbnRleHQuCiAgICAgICAgIC8vIFRoaXMgY2Fu
IG9jY3VyIHZpYSBkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVEb2N1bWVudCgpLgotICAg
ICAgICBtX2Nvb2tpZVVSTCA9IFVSTChQYXJzZWRVUkxTdHJpbmcsIGVtcHR5U3RyaW5nKCkpOwor
ICAgICAgICBzZXRDb29raWVVUkwoVVJMKFBhcnNlZFVSTFN0cmluZywgZW1wdHlTdHJpbmcoKSkp
OwogICAgICAgICBzZXRTZWN1cml0eU9yaWdpbihTZWN1cml0eU9yaWdpbjo6Y3JlYXRlVW5pcXVl
KCkpOwogICAgICAgICBzZXRDb250ZW50U2VjdXJpdHlQb2xpY3koc3RkOjptYWtlX3VuaXF1ZTxD
b250ZW50U2VjdXJpdHlQb2xpY3k+KHRoaXMpKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNDY5Nyw3
ICs0NzA4LDcgQEAgdm9pZCBEb2N1bWVudDo6aW5pdFNlY3VyaXR5Q29udGV4dCgpCiAKICAgICAv
LyBJbiB0aGUgY29tbW9uIGNhc2UsIGNyZWF0ZSB0aGUgc2VjdXJpdHkgY29udGV4dCBmcm9tIHRo
ZSBjdXJyZW50bHkKICAgICAvLyBsb2FkaW5nIFVSTCB3aXRoIGEgZnJlc2ggY29udGVudCBzZWN1
cml0eSBwb2xpY3kuCi0gICAgbV9jb29raWVVUkwgPSBtX3VybDsKKyAgICBzZXRDb29raWVVUkwo
bV91cmwpOwogICAgIGVuZm9yY2VTYW5kYm94RmxhZ3MobV9mcmFtZS0+bG9hZGVyKCkuZWZmZWN0
aXZlU2FuZGJveEZsYWdzKCkpOwogCiAjaWYgUExBVEZPUk0oSU9TKQpAQCAtNDc2Myw3ICs0Nzc0
LDcgQEAgdm9pZCBEb2N1bWVudDo6aW5pdFNlY3VyaXR5Q29udGV4dCgpCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBtX2Nvb2tpZVVSTCA9IG93bmVyRnJhbWUtPmRvY3VtZW50KCktPmNv
b2tpZVVSTCgpOworICAgIHNldENvb2tpZVVSTChvd25lckZyYW1lLT5kb2N1bWVudCgpLT5jb29r
aWVVUkwoKSk7CiAgICAgLy8gV2UgYWxpYXMgdGhlIFNlY3VyaXR5T3JpZ2lucyB0byBtYXRjaCBG
aXJlZm94LCBzZWUgQnVnIDE1MzEzCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE1MzEzCiAgICAgc2V0U2VjdXJpdHlPcmlnaW4ob3duZXJGcmFtZS0+ZG9j
dW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSk7CkBAIC02MTc5LDYgKzYxOTAsMzIgQEAgdm9pZCBE
b2N1bWVudDo6ZGlkQXNzb2NpYXRlRm9ybUNvbnRyb2xzVGltZXJGaXJlZChUaW1lcjxEb2N1bWVu
dD4mIHRpbWVyKQogICAgIG1fYXNzb2NpYXRlZEZvcm1Db250cm9scy5jbGVhcigpOwogfQogCit2
b2lkIERvY3VtZW50OjpzZXRET01Db29raWVzQ2FjaGUoY29uc3QgU3RyaW5nJiBjb29raWVzKQor
eworICAgIEFTU0VSVCghaXNET01Db29raWVzQ2FjaGVWYWxpZCgpKTsKKyAgICBtX0RPTUNvb2tp
ZXNDYWNoZSA9IGNvb2tpZXM7CisgICAgLy8gVGhlIGNvb2tpZXMgY2FjaGUgaXMgdmFsaWQgdW50
aWwgd2UgZ28gYmFjayB0byB0aGUgZXZlbnQgbG9vcC4KKyAgICBtX2Nvb2tpZXNDYWNoZUV4cGly
eVRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKK30KKwordm9pZCBEb2N1bWVudDo6aW52YWxpZGF0ZURP
TUNvb2tpZXNDYWNoZSgpCit7CisgICAgbV9jb29raWVzQ2FjaGVFeHBpcnlUaW1lci5zdG9wKCk7
CisgICAgbV9ET01Db29raWVzQ2FjaGUgPSBTdHJpbmcoKTsKK30KKwordm9pZCBEb2N1bWVudDo6
ZGlkRE9NQ29va2llc0NhY2hlRXhwaXJ5VGltZXJGaXJlZChUaW1lcjxEb2N1bWVudD4mKQorewor
ICAgIGludmFsaWRhdGVET01Db29raWVzQ2FjaGUoKTsKK30KKwordm9pZCBEb2N1bWVudDo6ZGlk
TG9hZFhIUlN5bmNocm9ub3VzbHkoKQoreworICAgIC8vIFN5bmNocm9ub3VzIFhIUiBjYW4gc2V0
IGNvb2tpZXMgc28gd2UgaW52YWxpZGF0ZSB0aGUgY29va2llcyBjYWNoZQorICAgIC8vIGluIHRo
aXMgY2FzZSwgdG8gYmUgc2FmZS4KKyAgICBpbnZhbGlkYXRlRE9NQ29va2llc0NhY2hlKCk7Cit9
CisKIHZvaWQgRG9jdW1lbnQ6OmVuc3VyZVBsdWdJbnNJbmplY3RlZFNjcmlwdChET01XcmFwcGVy
V29ybGQmIHdvcmxkKQogewogICAgIGlmIChtX2hhc0luamVjdGVkUGx1Z0luc1NjcmlwdCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmgKaW5kZXggOWY3YTI1ZGI5MGZiNTA1Y2IyZjlhYjEyZmNhMDc1Y2IyMjI4
Y2ZiMi4uZDIwNzBhODUzNmVjMGZhMzU2MzU2YmYyOWU5ZDNlNWQxNDIzMmUzZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmgKQEAgLTg4NCw3ICs4ODQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRUaXRs
ZUVsZW1lbnQoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYsIEVsZW1lbnQqIHRpdGxlRWxlbWVu
dCk7CiAgICAgdm9pZCByZW1vdmVUaXRsZShFbGVtZW50KiB0aXRsZUVsZW1lbnQpOwogCi0gICAg
U3RyaW5nIGNvb2tpZShFeGNlcHRpb25Db2RlJikgY29uc3Q7CisgICAgU3RyaW5nIGNvb2tpZShF
eGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBzZXRDb29raWUoY29uc3QgU3RyaW5nJiwgRXhjZXB0
aW9uQ29kZSYpOwogCiAgICAgU3RyaW5nIHJlZmVycmVyKCkgY29uc3Q7CkBAIC05MDcsNyArOTA3
LDcgQEAgcHVibGljOgogICAgIC8vICAgIGluaGVyaXRzIGl0cyBjb29raWVVUkwgYnV0IG5vdCBp
dHMgVVJMLgogICAgIC8vCiAgICAgY29uc3QgVVJMJiBjb29raWVVUkwoKSBjb25zdCB7IHJldHVy
biBtX2Nvb2tpZVVSTDsgfQotICAgIHZvaWQgc2V0Q29va2llVVJMKGNvbnN0IFVSTCYgdXJsKSB7
IG1fY29va2llVVJMID0gdXJsOyB9CisgICAgdm9pZCBzZXRDb29raWVVUkwoY29uc3QgVVJMJik7
CiAKICAgICAvLyBUaGUgZmlyc3RQYXJ0eUZvckNvb2tpZXMgaXMgdXNlZCB0byBjb21wdXRlIHdo
ZXRoZXIgdGhpcyBkb2N1bWVudAogICAgIC8vIGFwcGVhcnMgaW4gYSAidGhpcmQtcGFydHkiIGNv
bnRleHQgZm9yIHRoZSBwdXJwb3NlIG9mIHRoaXJkLXBhcnR5CkBAIC0xMzY3LDYgKzEzNjcsMTQg
QEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZGlkQXNzb2NpYXRlRm9ybUNvbnRyb2xzVGltZXJGaXJl
ZChUaW1lcjxEb2N1bWVudD4mKTsKIAorICAgIC8vIERPTSBDb29raWVzIGNhY2hpbmcuCisgICAg
Y29uc3QgU3RyaW5nJiBkb21Db29raWVzQ2FjaGUoKSBjb25zdCB7IHJldHVybiBtX0RPTUNvb2tp
ZXNDYWNoZTsgfQorICAgIHZvaWQgc2V0RE9NQ29va2llc0NhY2hlKGNvbnN0IFN0cmluZyYpOwor
ICAgIGJvb2wgaXNET01Db29raWVzQ2FjaGVWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1fY29va2ll
c0NhY2hlRXhwaXJ5VGltZXIuaXNBY3RpdmUoKTsgfQorICAgIHZvaWQgaW52YWxpZGF0ZURPTUNv
b2tpZXNDYWNoZSgpOworICAgIHZvaWQgZGlkRE9NQ29va2llc0NhY2hlRXhwaXJ5VGltZXJGaXJl
ZChUaW1lcjxEb2N1bWVudD4mKTsKKyAgICB2b2lkIGRpZExvYWRYSFJTeW5jaHJvbm91c2x5KCkg
b3ZlcnJpZGUgZmluYWw7CisKICAgICB1bnNpZ25lZCBtX3JlZmVyZW5jaW5nTm9kZUNvdW50Owog
CiAgICAgc3RkOjp1bmlxdWVfcHRyPFN0eWxlUmVzb2x2ZXI+IG1fc3R5bGVSZXNvbHZlcjsKQEAg
LTE2OTksNiArMTcwNyw4IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIFRpbWVyPERvY3VtZW50
PiBtX2RpZEFzc29jaWF0ZUZvcm1Db250cm9sc1RpbWVyOworICAgIFRpbWVyPERvY3VtZW50PiBt
X2Nvb2tpZXNDYWNoZUV4cGlyeVRpbWVyOworICAgIFN0cmluZyBtX0RPTUNvb2tpZXNDYWNoZTsK
ICAgICBIYXNoU2V0PFJlZlB0cjxFbGVtZW50Pj4gbV9hc3NvY2lhdGVkRm9ybUNvbnRyb2xzOwog
ICAgIHVuc2lnbmVkIG1fZGlzYWJsZWRGaWVsZHNldEVsZW1lbnRzQ291bnQ7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAppbmRleCA1ZjQwNWFmNDZk
ZDRjOWNiNGY5NTgyMGVmYTI1ZTIyZjFjNmVhN2E2Li4zOWEzNjk3NDE2OTRkMjc4ZjE3YmM3Njk4
MzhkMzg0YzY2YzllYzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuY3BwCkBAIC0xNzIsNiArMTcyLDEwIEBAIHZvaWQgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDo6ZGVzdHJveWVkTWVzc2FnZVBvcnQoTWVzc2FnZVBvcnQmIG1lc3NhZ2VQb3J0KQogICAg
IG1fbWVzc2FnZVBvcnRzLnJlbW92ZSgmbWVzc2FnZVBvcnQpOwogfQogCit2b2lkIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ6OmRpZExvYWRYSFJTeW5jaHJvbm91c2x5KCkKK3sKK30KKwogYm9vbCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0OjpjYW5TdXNwZW5kQWN0aXZlRE9NT2JqZWN0cygpCiB7CiAg
ICAgY2hlY2tDb25zaXN0ZW5jeSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRp
b25Db250ZXh0LmgKaW5kZXggZGFkZDlhYTE5NjZhMTk3OTg1MWFmYzA2MTBjMTljZWZmOWYxMmVl
OS4uNDE5NGQ3MzBiZGUyOTdkZTBlYjVlYmY3ZThiY2QwNzc2ZTg3ZTRiYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCkBAIC0xMTAsNiArMTEwLDkgQEAg
cHVibGljOgogICAgIHZvaWQgY3JlYXRlZE1lc3NhZ2VQb3J0KE1lc3NhZ2VQb3J0Jik7CiAgICAg
dm9pZCBkZXN0cm95ZWRNZXNzYWdlUG9ydChNZXNzYWdlUG9ydCYpOwogCisgICAgLy8gWEhSLgor
ICAgIHZpcnR1YWwgdm9pZCBkaWRMb2FkWEhSU3luY2hyb25vdXNseSgpOworCiAgICAgdm9pZCBy
ZWYoKSB7IHJlZlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfQogICAgIHZvaWQgZGVyZWYoKSB7
IGRlcmVmU2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0
cFJlcXVlc3QuY3BwCmluZGV4IGMyMzc1YzQ4YjUzYzc4ZDNmYzk3MTU1YjkzZmE4ZjJjNTE5YzFm
YzAuLmMxODY3NDUzNGZlOTkwNmI4MjBiZjQ1MDY4ZGU2MjZkNGExNmE2NWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcApAQCAtNzkwLDYgKzc5MCw3IEBAIHZvaWQgWE1MSHR0
cFJlcXVlc3Q6OmNyZWF0ZVJlcXVlc3QoRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgfSBlbHNlIHsK
ICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsTG9hZFhIUlN5bmNocm9ub3Vz
bHkoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICAgICAgVGhyZWFkYWJsZUxvYWRlcjo6
bG9hZFJlc291cmNlU3luY2hyb25vdXNseShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIHJlcXVl
c3QsICp0aGlzLCBvcHRpb25zKTsKKyAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5k
aWRMb2FkWEhSU3luY2hyb25vdXNseSgpOwogICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZExvYWRYSFJTeW5jaHJvbm91c2x5KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiAg
ICAgfQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKaW5kZXggODcyOTAyNTU0Yzg0YWM4ZTQ5ODc1NGNhMGQ3ZTNiMWEwNzllZDMzNi4u
NTE4MDVmY2VhNTYxMjE3YjM5MmVlODM0MWQ5ZjUxNjhiYzczZWUyNSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE2IEBACisyMDE0LTA5LTI5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAg
ICAgICAgQWRkIGJhc2ljIGNhY2hpbmcgZm9yIERvY3VtZW50LmNvb2tpZSBBUEkKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNzIyNQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIGxheW91dCB0ZXN0
IHRvIG1ha2Ugc3VyZSB0aGF0IGRvY3VtZW50LmNvb2tpZSByZXR1cm5zIHVwZGF0ZWQKKyAgICAg
ICAgcmVzdWx0cyBhZnRlciBjb29raWVzIGFyZSBzZXQgdmlhIGEgc3luYyBYSFIuCisKKyAgICAg
ICAgKiBodHRwL3Rlc3RzL2Nvb2tpZXMvc3luYy14aHItc2V0LWNvb2tpZS1pbnZhbGlkYXRlcy1j
YWNoZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvY29va2llcy9z
eW5jLXhoci1zZXQtY29va2llLWludmFsaWRhdGVzLWNhY2hlLmh0bWw6IEFkZGVkLgorCiAyMDE0
LTA5LTI5ICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CiAKICAgICAgICAg
QVg6IGluIGFuIGFyaWEtbGFiZWxsZWRieSBjb21wdXRhdGlvbiwgZG8gbm90IHRyYXZlcnNlIGlu
dG8gZWxlbWVudHMgd2hvc2UgbmFtZUZyb20gdmFsdWUgZG9lcyBub3QgaW5jbHVkZSAnY29udGVu
dHMnCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nvb2tpZXMvc3luYy14aHIt
c2V0LWNvb2tpZS1pbnZhbGlkYXRlcy1jYWNoZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2Nvb2tpZXMvc3luYy14aHItc2V0LWNvb2tpZS1pbnZhbGlkYXRlcy1jYWNoZS1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjZhYTZiYmY5OWUzZGMwNzRlNTZkYjRjOTc4ZmM3MTA5
NmJkZjJkNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY29va2ll
cy9zeW5jLXhoci1zZXQtY29va2llLWludmFsaWRhdGVzLWNhY2hlLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDEyIEBACitUZXN0cyB0aGF0IGRvY3VtZW50LmNvb2tpZSByZXR1cm5zIHRoZSByaWdo
dCB2YWx1ZSBhZnRlciBhIHN5bmMgWEhSCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKwor
CitQQVNTIG5vcm1hbGl6ZUNvb2tpZShkb2N1bWVudC5jb29raWUpIGlzICJ0ZXN0S2V5PXRlc3RW
YWx1ZSIKK1BBU1MgeGhyLnN0YXR1cyBpcyAyMDAKK1BBU1Mgbm9ybWFsaXplQ29va2llKGRvY3Vt
ZW50LmNvb2tpZSkgaXMgInRlc3RLZXk9dGVzdFZhbHVlOyB4aHJLZXk9eGhyVmFsdWUiCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb29raWVzL3N5bmMteGhyLXNldC1jb29raWUtaW52
YWxpZGF0ZXMtY2FjaGUuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY29va2llcy9zeW5j
LXhoci1zZXQtY29va2llLWludmFsaWRhdGVzLWNhY2hlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTdhYjU4
NzFiYzVkNmU2NTc3NjUyOTE5MWEyZTVmOWYxZmMwNTUyNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvY29va2llcy9zeW5jLXhoci1zZXQtY29va2llLWludmFsaWRh
dGVzLWNhY2hlLmh0bWwKQEAgLTAsMCArMSwxOCBAQAorPCFET0NUWVBFIGh0bWw+Cis8c2NyaXB0
IHNyYz0ncmVzb3VyY2VzL2Nvb2tpZXMtdGVzdC1wcmUuanMnPjwvc2NyaXB0PgorCis8c2NyaXB0
PgorZGVzY3JpcHRpb24oJ1Rlc3RzIHRoYXQgZG9jdW1lbnQuY29va2llIHJldHVybnMgdGhlIHJp
Z2h0IHZhbHVlIGFmdGVyIGEgc3luYyBYSFInKTsKKworZG9jdW1lbnQuY29va2llID0gInRlc3RL
ZXk9dGVzdFZhbHVlIjsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygnbm9ybWFsaXplQ29va2llKGRv
Y3VtZW50LmNvb2tpZSknLCAndGVzdEtleT10ZXN0VmFsdWUnKTsKK3ZhciB4aHIgPSBuZXcgWE1M
SHR0cFJlcXVlc3QoKTsKK3hoci5vcGVuKCdHRVQnLCAncmVzb3VyY2VzL3NldENvb2tpZXMuY2dp
JywgZmFsc2UpOworeGhyLnNldFJlcXVlc3RIZWFkZXIoJ1NFVC1DT09LSUUnLCAneGhyS2V5PXho
clZhbHVlOyBwYXRoPS8nKTsKK3hoci5zZW5kKCk7CisKK3Nob3VsZEJlKCd4aHIuc3RhdHVzJywg
JzIwMCcpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdub3JtYWxpemVDb29raWUoZG9jdW1lbnQu
Y29va2llKScsICd0ZXN0S2V5PXRlc3RWYWx1ZTsgeGhyS2V5PXhoclZhbHVlJyk7CisKKzwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9J3Jlc291cmNlcy9jb29raWVzLXRlc3QtcG9zdC5qcyc+PC9zY3Jp
cHQ+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>238896</attachid>
            <date>2014-09-29 16:32:57 -0700</date>
            <delta_ts>2014-09-30 11:02:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137225-20140929163258.patch</filename>
            <type>text/plain</type>
            <size>13562</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0MDkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODFiZDhkN2UxMGU4OTFh
NWVkY2UwZDcyNDJmODRkMjU4NDE5MGJiOC4uMWU5ZDE1NTQzMTRiMzZkYjVjZGZmNWQwYWZjNzA0
YTRkNGUxYzIxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDE0LTA5LTI5ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGJhc2ljIGNhY2hpbmcg
Zm9yIERvY3VtZW50LmNvb2tpZSBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEzNzIyNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFdoaWxlIHByb2ZpbGluZyB0aGUgbG9hZCBvZiBueXRpbWVzLmNvbSwg
SSBub3RpY2VkIHRoYXQgdGhlIHNpdGUgaXMKKyAgICAgICAgYWNjZXNzaW5nIH4yNTAgdGltZXMg
ZG9jdW1lbnQuY29va2llLCBqdXN0IGR1cmluZyBwYWdlIGxvYWQuIEFjY2Vzc2luZworICAgICAg
ICBkb2N1bWVudC5jb29raWUgaXMgY3VycmVudGx5IHNsb3cgYmVjYXVzZSB3ZToKKyAgICAgICAg
LSBDYWxsIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29va2llc0ZvckRPTSgpIHZpcnR1YWwgZnVu
Y3Rpb24KKyAgICAgICAgLSBTZW5kIGEgc3luYyBJUEMgbWVzc2FnZSB0byB0aGUgTmV0d29yayBw
cm9jZXNzIHRvIHJldHJpZXZlIHRoZQorICAgICAgICAgIGNvb2tpZXMKKyAgICAgICAgICAgIC0g
VGhlIE5ldHdvcmsgcHJvY2VzcyBnZXRzIHRoZSBsaXN0IG9mIGNvb2tpZXMgZnJvbSBDRk5ldHdv
cmsgdGhlbgorICAgICAgICAgICAgICBzZXJpYWxpemVzIHRoZSByZXN1bHQgdG8gc2VuZCBpdCBi
YWNrIHRvIHRoZSBXZWJQcm9jZXNzCisgICAgICAgIC0gV2UgdW5zZXJpYWxpemUgdGhlIGNvb2tp
ZXMgaW50byBhbiBOU0xpc3Qgb2YgY29va2llcworICAgICAgICAtIFdlIGZpbHRlci1vdXQgdGhl
IGNvb2tpZXMgdGhhdCBhcmUgJ2h0dHBPbmx5JyBhbmQgY29uc3RydWN0IGEgbmV3CisgICAgICAg
ICAgTlNMaXN0IG9mIGNvb2tpZXMKKyAgICAgICAgLSBXZSBjcmVhdGUgYSBXVEYgU3RyaW5nIG91
dCBvZiB0aGUgY29va2llcyBOU0xpc3QKKworICAgICAgICBJbiB0aGUgY2FzZSBvZiBueXRpbWVz
LmNvbSwgaXQgdHVybnMgb3V0IHRoYXQgdXAgdG8gMTAwIGNhbGxzIHRvCisgICAgICAgIGRvY3Vt
ZW50LmNvb2tpZSgpIGFyZSBtYWRlIGluIHRoZSBzYW1lIGV2ZW50IGxvb3AgaXRlcmF0aW9uLiBU
aGlzIHBhdGNoCisgICAgICAgIHRodXMgY2FjaGVzIC8gZnJlZXplcyB0aGUgY29va2llcyB1bnRp
bCB3ZSByZXR1cm4gdG8gdGhlIGV2ZW50CisgICAgICAgIGxvb3Agc28gdGhhdCBjb25zZWN1dGl2
ZSBjYWxscyB0byBkb2N1bWVudC5jb29raWUoKSBhcmUgZXh0cmVtZWx5IGZhc3QuCisgICAgICAg
IERvaW5nIHNvIHNlZW1zIHRvIGJlIHN1ZmZpY2llbnQgdG8gYWNoaWV2ZSBhIH43NiUgY2FjaGUg
aGl0IGZvciBueXRpbWVzLmNvbS4KKworICAgICAgICBUZXN0OiBodHRwL3Rlc3RzL2Nvb2tpZXMv
c3luYy14aHItc2V0LWNvb2tpZS1pbnZhbGlkYXRlcy1jYWNoZS5odG1sCisKKyAgICAgICAgKiBk
b20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OkRvY3VtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpvcGVuKToKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50Ojpjb29raWUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNldENvb2tpZSk6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0Q29va2llVVJMKToKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50Ojppbml0U2VjdXJpdHlDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50OjpzZXRET01Db29raWVDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dDo6aW52YWxpZGF0ZURPTUNvb2tpZUNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
Ojpkb21Db29raWVDYWNoZUV4cGlyeVRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnQ6OmRpZExvYWRYSFJTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpkb21Db29raWVDYWNoZSk6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6aXNET01Db29raWVDYWNoZVZhbGlkKToKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50OjpzZXRDb29raWVVUkwpOiBEZWxldGVkLgorICAgICAgICAqIGRvbS9T
Y3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ6OmRpZExvYWRYSFJTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKiBkb20vU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5oOgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlUmVxdWVzdCk6CisKIDIw
MTQtMDktMjkgIENocmlzdG9waGUgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAg
IFVzZSBpczw+KCkgLyBkb3duY2FzdDw+KCkgZm9yIERvY3VtZW50CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcAppbmRleCA4ZTgzZTkxMjAxNGNjYjg2YjZkODEwOGEyZGYzMjk0ODEwN2ViNGUyLi44YTk4
ZDllZDM0YzM3MDZkMTdkNTdhZWNhMzY1MmEzYjE3NzJhNzY3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAKQEAgLTUxMyw2ICs1MTMsNyBAQCBEb2N1bWVudDo6RG9jdW1lbnQoRnJhbWUqIGZyYW1l
LCBjb25zdCBVUkwmIHVybCwgdW5zaWduZWQgZG9jdW1lbnRDbGFzc2VzLCB1bnNpZwogICAgICwg
bV9pbnB1dEN1cnNvcihFbXB0eUlucHV0Q3Vyc29yOjpjcmVhdGUoKSkKICNlbmRpZgogICAgICwg
bV9kaWRBc3NvY2lhdGVGb3JtQ29udHJvbHNUaW1lcih0aGlzLCAmRG9jdW1lbnQ6OmRpZEFzc29j
aWF0ZUZvcm1Db250cm9sc1RpbWVyRmlyZWQpCisgICAgLCBtX2Nvb2tpZUNhY2hlRXhwaXJ5VGlt
ZXIodGhpcywgJkRvY3VtZW50Ojpkb21Db29raWVDYWNoZUV4cGlyeVRpbWVyRmlyZWQpCiAgICAg
LCBtX2Rpc2FibGVkRmllbGRzZXRFbGVtZW50c0NvdW50KDApCiAgICAgLCBtX2hhc0luamVjdGVk
UGx1Z0luc1NjcmlwdChmYWxzZSkKICAgICAsIG1fcmVuZGVyVHJlZUJlaW5nRGVzdHJveWVkKGZh
bHNlKQpAQCAtMjI1Niw3ICsyMjU3LDcgQEAgdm9pZCBEb2N1bWVudDo6b3BlbihEb2N1bWVudCog
b3duZXJEb2N1bWVudCkKIHsKICAgICBpZiAob3duZXJEb2N1bWVudCkgewogICAgICAgICBzZXRV
Ukwob3duZXJEb2N1bWVudC0+dXJsKCkpOwotICAgICAgICBtX2Nvb2tpZVVSTCA9IG93bmVyRG9j
dW1lbnQtPmNvb2tpZVVSTCgpOworICAgICAgICBzZXRDb29raWVVUkwob3duZXJEb2N1bWVudC0+
Y29va2llVVJMKCkpOwogICAgICAgICBzZXRTZWN1cml0eU9yaWdpbihvd25lckRvY3VtZW50LT5z
ZWN1cml0eU9yaWdpbigpKTsKICAgICB9CiAKQEAgLTM4MzUsNyArMzgzNiw3IEBAIEhUTUxGcmFt
ZU93bmVyRWxlbWVudCogRG9jdW1lbnQ6Om93bmVyRWxlbWVudCgpIGNvbnN0CiAgICAgcmV0dXJu
IGZyYW1lKCktPm93bmVyRWxlbWVudCgpOwogfQogCi1TdHJpbmcgRG9jdW1lbnQ6OmNvb2tpZShF
eGNlcHRpb25Db2RlJiBlYykgY29uc3QKK1N0cmluZyBEb2N1bWVudDo6Y29va2llKEV4Y2VwdGlv
bkNvZGUmIGVjKQogewogICAgIGlmIChwYWdlKCkgJiYgIXBhZ2UoKS0+c2V0dGluZ3MoKS5jb29r
aWVFbmFibGVkKCkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKQEAgLTM4NTMsNyArMzg1NCwx
MCBAQCBTdHJpbmcgRG9jdW1lbnQ6OmNvb2tpZShFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKICAg
ICBpZiAoY29va2llVVJMLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCi0g
ICAgcmV0dXJuIGNvb2tpZXModGhpcywgY29va2llVVJMKTsKKyAgICBpZiAoIWlzRE9NQ29va2ll
Q2FjaGVWYWxpZCgpKQorICAgICAgICBzZXRET01Db29raWVDYWNoZShjb29raWVzKHRoaXMsIGNv
b2tpZVVSTCkpOworCisgICAgcmV0dXJuIGRvbUNvb2tpZUNhY2hlKCk7CiB9CiAKIHZvaWQgRG9j
dW1lbnQ6OnNldENvb2tpZShjb25zdCBTdHJpbmcmIHZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYykK
QEAgLTM4NzQsNiArMzg3OCw3IEBAIHZvaWQgRG9jdW1lbnQ6OnNldENvb2tpZShjb25zdCBTdHJp
bmcmIHZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICBpZiAoY29va2llVVJMLmlzRW1wdHko
KSkKICAgICAgICAgcmV0dXJuOwogCisgICAgaW52YWxpZGF0ZURPTUNvb2tpZUNhY2hlKCk7CiAg
ICAgc2V0Q29va2llcyh0aGlzLCBjb29raWVVUkwsIHZhbHVlKTsKIH0KIApAQCAtMzk3Nyw2ICsz
OTgyLDEyIEBAIFN0cmluZyBEb2N1bWVudDo6bGFzdE1vZGlmaWVkKCkgY29uc3QKICAgICByZXR1
cm4gU3RyaW5nOjpmb3JtYXQoIiUwMmQvJTAyZC8lMDRkICUwMmQ6JTAyZDolMDJkIiwgZGF0ZS5t
b250aCgpICsgMSwgZGF0ZS5tb250aERheSgpLCBkYXRlLmZ1bGxZZWFyKCksIGRhdGUuaG91cigp
LCBkYXRlLm1pbnV0ZSgpLCBkYXRlLnNlY29uZCgpKTsKIH0KIAordm9pZCBEb2N1bWVudDo6c2V0
Q29va2llVVJMKGNvbnN0IFVSTCYgdXJsKQoreworICAgIG1fY29va2llVVJMID0gdXJsOworICAg
IGludmFsaWRhdGVET01Db29raWVDYWNoZSgpOworfQorCiBzdGF0aWMgYm9vbCBpc1ZhbGlkTmFt
ZU5vbkFTQ0lJKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpCiB7CiAg
ICAgaWYgKCFpc1ZhbGlkTmFtZVN0YXJ0KGNoYXJhY3RlcnNbMF0pKQpAQCAtNDY4OSw3ICs0NzAw
LDcgQEAgdm9pZCBEb2N1bWVudDo6aW5pdFNlY3VyaXR5Q29udGV4dCgpCiAgICAgaWYgKCFtX2Zy
YW1lKSB7CiAgICAgICAgIC8vIE5vIHNvdXJjZSBmb3IgYSBzZWN1cml0eSBjb250ZXh0LgogICAg
ICAgICAvLyBUaGlzIGNhbiBvY2N1ciB2aWEgZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uY3JlYXRl
RG9jdW1lbnQoKS4KLSAgICAgICAgbV9jb29raWVVUkwgPSBVUkwoUGFyc2VkVVJMU3RyaW5nLCBl
bXB0eVN0cmluZygpKTsKKyAgICAgICAgc2V0Q29va2llVVJMKFVSTChQYXJzZWRVUkxTdHJpbmcs
IGVtcHR5U3RyaW5nKCkpKTsKICAgICAgICAgc2V0U2VjdXJpdHlPcmlnaW4oU2VjdXJpdHlPcmln
aW46OmNyZWF0ZVVuaXF1ZSgpKTsKICAgICAgICAgc2V0Q29udGVudFNlY3VyaXR5UG9saWN5KHN0
ZDo6bWFrZV91bmlxdWU8Q29udGVudFNlY3VyaXR5UG9saWN5Pih0aGlzKSk7CiAgICAgICAgIHJl
dHVybjsKQEAgLTQ2OTcsNyArNDcwOCw3IEBAIHZvaWQgRG9jdW1lbnQ6OmluaXRTZWN1cml0eUNv
bnRleHQoKQogCiAgICAgLy8gSW4gdGhlIGNvbW1vbiBjYXNlLCBjcmVhdGUgdGhlIHNlY3VyaXR5
IGNvbnRleHQgZnJvbSB0aGUgY3VycmVudGx5CiAgICAgLy8gbG9hZGluZyBVUkwgd2l0aCBhIGZy
ZXNoIGNvbnRlbnQgc2VjdXJpdHkgcG9saWN5LgotICAgIG1fY29va2llVVJMID0gbV91cmw7Cisg
ICAgc2V0Q29va2llVVJMKG1fdXJsKTsKICAgICBlbmZvcmNlU2FuZGJveEZsYWdzKG1fZnJhbWUt
PmxvYWRlcigpLmVmZmVjdGl2ZVNhbmRib3hGbGFncygpKTsKIAogI2lmIFBMQVRGT1JNKElPUykK
QEAgLTQ3NjMsNyArNDc3NCw3IEBAIHZvaWQgRG9jdW1lbnQ6OmluaXRTZWN1cml0eUNvbnRleHQo
KQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9jb29raWVVUkwgPSBvd25lckZyYW1l
LT5kb2N1bWVudCgpLT5jb29raWVVUkwoKTsKKyAgICBzZXRDb29raWVVUkwob3duZXJGcmFtZS0+
ZG9jdW1lbnQoKS0+Y29va2llVVJMKCkpOwogICAgIC8vIFdlIGFsaWFzIHRoZSBTZWN1cml0eU9y
aWdpbnMgdG8gbWF0Y2ggRmlyZWZveCwgc2VlIEJ1ZyAxNTMxMwogICAgIC8vIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTMxMwogICAgIHNldFNlY3VyaXR5T3JpZ2lu
KG93bmVyRnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkpOwpAQCAtNjE3OSw2ICs2
MTkwLDMyIEBAIHZvaWQgRG9jdW1lbnQ6OmRpZEFzc29jaWF0ZUZvcm1Db250cm9sc1RpbWVyRmly
ZWQoVGltZXI8RG9jdW1lbnQ+JiB0aW1lcikKICAgICBtX2Fzc29jaWF0ZWRGb3JtQ29udHJvbHMu
Y2xlYXIoKTsKIH0KIAordm9pZCBEb2N1bWVudDo6c2V0RE9NQ29va2llQ2FjaGUoY29uc3QgU3Ry
aW5nJiBjb29raWVzKQoreworICAgIEFTU0VSVCghaXNET01Db29raWVDYWNoZVZhbGlkKCkpOwor
ICAgIG1fRE9NQ29va2llQ2FjaGUgPSBjb29raWVzOworICAgIC8vIFRoZSBjb29raWVzIGNhY2hl
IGlzIHZhbGlkIHVudGlsIHdlIGdvIGJhY2sgdG8gdGhlIGV2ZW50IGxvb3AuCisgICAgbV9jb29r
aWVDYWNoZUV4cGlyeVRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKK30KKwordm9pZCBEb2N1bWVudDo6
aW52YWxpZGF0ZURPTUNvb2tpZUNhY2hlKCkKK3sKKyAgICBtX2Nvb2tpZUNhY2hlRXhwaXJ5VGlt
ZXIuc3RvcCgpOworICAgIG1fRE9NQ29va2llQ2FjaGUgPSBTdHJpbmcoKTsKK30KKwordm9pZCBE
b2N1bWVudDo6ZG9tQ29va2llQ2FjaGVFeHBpcnlUaW1lckZpcmVkKFRpbWVyPERvY3VtZW50PiYp
Cit7CisgICAgaW52YWxpZGF0ZURPTUNvb2tpZUNhY2hlKCk7Cit9CisKK3ZvaWQgRG9jdW1lbnQ6
OmRpZExvYWRYSFJTeW5jaHJvbm91c2x5KCkKK3sKKyAgICAvLyBTeW5jaHJvbm91cyBYSFIgY2Fu
IHNldCBjb29raWVzIHNvIHdlIGludmFsaWRhdGUgdGhlIGNvb2tpZXMgY2FjaGUKKyAgICAvLyBp
biB0aGlzIGNhc2UsIHRvIGJlIHNhZmUuCisgICAgaW52YWxpZGF0ZURPTUNvb2tpZUNhY2hlKCk7
Cit9CisKIHZvaWQgRG9jdW1lbnQ6OmVuc3VyZVBsdWdJbnNJbmplY3RlZFNjcmlwdChET01XcmFw
cGVyV29ybGQmIHdvcmxkKQogewogICAgIGlmIChtX2hhc0luamVjdGVkUGx1Z0luc1NjcmlwdCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmgKaW5kZXggYzQyZDQ0MmM2MjhhZjJlNzUzYWJkZTUyY2Y3YWVlMWJi
Nzg0ZDA0Zi4uMGVjOGY1NDNhMmQ2MjVlYzhlNTQ2MmJiN2I3OWUwYzAyYjA4ZWVhMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmgKQEAgLTg4NCw3ICs4ODQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRU
aXRsZUVsZW1lbnQoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYsIEVsZW1lbnQqIHRpdGxlRWxl
bWVudCk7CiAgICAgdm9pZCByZW1vdmVUaXRsZShFbGVtZW50KiB0aXRsZUVsZW1lbnQpOwogCi0g
ICAgU3RyaW5nIGNvb2tpZShFeGNlcHRpb25Db2RlJikgY29uc3Q7CisgICAgU3RyaW5nIGNvb2tp
ZShFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBzZXRDb29raWUoY29uc3QgU3RyaW5nJiwgRXhj
ZXB0aW9uQ29kZSYpOwogCiAgICAgU3RyaW5nIHJlZmVycmVyKCkgY29uc3Q7CkBAIC05MDcsNyAr
OTA3LDcgQEAgcHVibGljOgogICAgIC8vICAgIGluaGVyaXRzIGl0cyBjb29raWVVUkwgYnV0IG5v
dCBpdHMgVVJMLgogICAgIC8vCiAgICAgY29uc3QgVVJMJiBjb29raWVVUkwoKSBjb25zdCB7IHJl
dHVybiBtX2Nvb2tpZVVSTDsgfQotICAgIHZvaWQgc2V0Q29va2llVVJMKGNvbnN0IFVSTCYgdXJs
KSB7IG1fY29va2llVVJMID0gdXJsOyB9CisgICAgdm9pZCBzZXRDb29raWVVUkwoY29uc3QgVVJM
Jik7CiAKICAgICAvLyBUaGUgZmlyc3RQYXJ0eUZvckNvb2tpZXMgaXMgdXNlZCB0byBjb21wdXRl
IHdoZXRoZXIgdGhpcyBkb2N1bWVudAogICAgIC8vIGFwcGVhcnMgaW4gYSAidGhpcmQtcGFydHki
IGNvbnRleHQgZm9yIHRoZSBwdXJwb3NlIG9mIHRoaXJkLXBhcnR5CkBAIC0xMzY3LDYgKzEzNjcs
MTQgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZGlkQXNzb2NpYXRlRm9ybUNvbnRyb2xzVGltZXJG
aXJlZChUaW1lcjxEb2N1bWVudD4mKTsKIAorICAgIC8vIERPTSBDb29raWVzIGNhY2hpbmcuCisg
ICAgY29uc3QgU3RyaW5nJiBkb21Db29raWVDYWNoZSgpIGNvbnN0IHsgcmV0dXJuIG1fRE9NQ29v
a2llQ2FjaGU7IH0KKyAgICB2b2lkIHNldERPTUNvb2tpZUNhY2hlKGNvbnN0IFN0cmluZyYpOwor
ICAgIGJvb2wgaXNET01Db29raWVDYWNoZVZhbGlkKCkgY29uc3QgeyByZXR1cm4gbV9jb29raWVD
YWNoZUV4cGlyeVRpbWVyLmlzQWN0aXZlKCk7IH0KKyAgICB2b2lkIGludmFsaWRhdGVET01Db29r
aWVDYWNoZSgpOworICAgIHZvaWQgZG9tQ29va2llQ2FjaGVFeHBpcnlUaW1lckZpcmVkKFRpbWVy
PERvY3VtZW50PiYpOworICAgIHZvaWQgZGlkTG9hZFhIUlN5bmNocm9ub3VzbHkoKSBvdmVycmlk
ZSBmaW5hbDsKKwogICAgIHVuc2lnbmVkIG1fcmVmZXJlbmNpbmdOb2RlQ291bnQ7CiAKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8U3R5bGVSZXNvbHZlcj4gbV9zdHlsZVJlc29sdmVyOwpAQCAtMTY5OSw2
ICsxNzA3LDggQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgVGltZXI8RG9jdW1lbnQ+IG1fZGlk
QXNzb2NpYXRlRm9ybUNvbnRyb2xzVGltZXI7CisgICAgVGltZXI8RG9jdW1lbnQ+IG1fY29va2ll
Q2FjaGVFeHBpcnlUaW1lcjsKKyAgICBTdHJpbmcgbV9ET01Db29raWVDYWNoZTsKICAgICBIYXNo
U2V0PFJlZlB0cjxFbGVtZW50Pj4gbV9hc3NvY2lhdGVkRm9ybUNvbnRyb2xzOwogICAgIHVuc2ln
bmVkIG1fZGlzYWJsZWRGaWVsZHNldEVsZW1lbnRzQ291bnQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAppbmRleCA1MGE4NGM3Nzk0ODFiOThlN2I3
ZmExM2M2YWFiZWVhY2I5ZGJmMDY4Li5lMTU1ZTYwNWNkZmJiZWZhN2I1YjE5M2Y4ZmExNmM0YTA5
ODRkMWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
Y3BwCkBAIC0xNzIsNiArMTcyLDEwIEBAIHZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6ZGVz
dHJveWVkTWVzc2FnZVBvcnQoTWVzc2FnZVBvcnQmIG1lc3NhZ2VQb3J0KQogICAgIG1fbWVzc2Fn
ZVBvcnRzLnJlbW92ZSgmbWVzc2FnZVBvcnQpOwogfQogCit2b2lkIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ6OmRpZExvYWRYSFJTeW5jaHJvbm91c2x5KCkKK3sKK30KKwogYm9vbCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0OjpjYW5TdXNwZW5kQWN0aXZlRE9NT2JqZWN0cygpCiB7CiAgICAgY2hlY2tD
b25zaXN0ZW5jeSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0
LmgKaW5kZXggZGFkZDlhYTE5NjZhMTk3OTg1MWFmYzA2MTBjMTljZWZmOWYxMmVlOS4uMjcwMWM0
YmVlZjZmNjA3MjI1NDc3YTAxZWQ5ZDRmOWU1M2I0NWQwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCkBAIC0xMTAsNiArMTEwLDggQEAgcHVibGljOgog
ICAgIHZvaWQgY3JlYXRlZE1lc3NhZ2VQb3J0KE1lc3NhZ2VQb3J0Jik7CiAgICAgdm9pZCBkZXN0
cm95ZWRNZXNzYWdlUG9ydChNZXNzYWdlUG9ydCYpOwogCisgICAgdmlydHVhbCB2b2lkIGRpZExv
YWRYSFJTeW5jaHJvbm91c2x5KCk7CisKICAgICB2b2lkIHJlZigpIHsgcmVmU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpOyB9CiAgICAgdm9pZCBkZXJlZigpIHsgZGVyZWZTY3JpcHRFeGVjdXRpb25D
b250ZXh0KCk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1
ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKaW5kZXggNGQ1
MzRlZTlhOGY1ZmMzMjU5OGI0OGRhZTU5YjVmMDBhYzYyMjU3ZS4uOTZkMWU2ZDQ1YTNiZjU3OWIy
MDdiYmY0OWIyODhlZjgwNzlkODQ2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hN
TEh0dHBSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3Qu
Y3BwCkBAIC03OTAsNiArNzkwLDcgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlUmVxdWVz
dChFeGNlcHRpb25Db2RlJiBlYykKICAgICB9IGVsc2UgewogICAgICAgICBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OndpbGxMb2FkWEhSU3luY2hyb25vdXNseShzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCkpOwogICAgICAgICBUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91
c2x5KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgcmVxdWVzdCwgKnRoaXMsIG9wdGlvbnMpOwor
ICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmRpZExvYWRYSFJTeW5jaHJvbm91c2x5
KCk7CiAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkTG9hZFhIUlN5bmNocm9u
b3VzbHkoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA4OWY2OWYz
MjdiMmQyZGZlYzkzNTI1NzY1YmI4NjlhMWUyYWYxNDk1Li5lOGM2YmFkNWQ5NzgzOTA0Nzc4NmM3
YjRiZmNjOTNiNGNlMmUzZDc2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTQtMDktMjkgIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYmFzaWMgY2FjaGlu
ZyBmb3IgRG9jdW1lbnQuY29va2llIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTM3MjI1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkIGEgbGF5b3V0IHRlc3QgdG8gbWFrZSBzdXJlIHRoYXQgZG9j
dW1lbnQuY29va2llIHJldHVybnMgdXBkYXRlZAorICAgICAgICByZXN1bHRzIGFmdGVyIGNvb2tp
ZXMgYXJlIHNldCB2aWEgYSBzeW5jIFhIUi4KKworICAgICAgICAqIGh0dHAvdGVzdHMvY29va2ll
cy9zeW5jLXhoci1zZXQtY29va2llLWludmFsaWRhdGVzLWNhY2hlLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9jb29raWVzL3N5bmMteGhyLXNldC1jb29raWUtaW52
YWxpZGF0ZXMtY2FjaGUuaHRtbDogQWRkZWQuCisKIDIwMTQtMDktMjkgIERhdmlkIEh5YXR0ICA8
aHlhdHRAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIxNjgwNDYpOiBDb25mdXNl
ZCBjb2x1bW4gc3BhbnMgd2hlbiBjb21iaW5lZCB3aXRoIGR5bmFtaWMgYW5pbWF0aW9ucwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb29raWVzL3N5bmMteGhyLXNldC1jb29r
aWUtaW52YWxpZGF0ZXMtY2FjaGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9jb29raWVzL3N5bmMteGhyLXNldC1jb29raWUtaW52YWxpZGF0ZXMtY2FjaGUtZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmY2YWE2YmJmOTllM2RjMDc0ZTU2ZGI0Yzk3OGZjNzEwOTZiZGYyZDcK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nvb2tpZXMvc3luYy14
aHItc2V0LWNvb2tpZS1pbnZhbGlkYXRlcy1jYWNoZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwx
MiBAQAorVGVzdHMgdGhhdCBkb2N1bWVudC5jb29raWUgcmV0dXJucyB0aGUgcmlnaHQgdmFsdWUg
YWZ0ZXIgYSBzeW5jIFhIUgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBu
b3JtYWxpemVDb29raWUoZG9jdW1lbnQuY29va2llKSBpcyAidGVzdEtleT10ZXN0VmFsdWUiCitQ
QVNTIHhoci5zdGF0dXMgaXMgMjAwCitQQVNTIG5vcm1hbGl6ZUNvb2tpZShkb2N1bWVudC5jb29r
aWUpIGlzICJ0ZXN0S2V5PXRlc3RWYWx1ZTsgeGhyS2V5PXhoclZhbHVlIgorUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvY29va2llcy9zeW5jLXhoci1zZXQtY29va2llLWludmFsaWRhdGVz
LWNhY2hlLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nvb2tpZXMvc3luYy14aHItc2V0
LWNvb2tpZS1pbnZhbGlkYXRlcy1jYWNoZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU3YWI1ODcxYmM1ZDZl
NjU3NzY1MjkxOTFhMmU1ZjlmMWZjMDU1MjUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2Nvb2tpZXMvc3luYy14aHItc2V0LWNvb2tpZS1pbnZhbGlkYXRlcy1jYWNo
ZS5odG1sCkBAIC0wLDAgKzEsMTggQEAKKzwhRE9DVFlQRSBodG1sPgorPHNjcmlwdCBzcmM9J3Jl
c291cmNlcy9jb29raWVzLXRlc3QtcHJlLmpzJz48L3NjcmlwdD4KKworPHNjcmlwdD4KK2Rlc2Ny
aXB0aW9uKCdUZXN0cyB0aGF0IGRvY3VtZW50LmNvb2tpZSByZXR1cm5zIHRoZSByaWdodCB2YWx1
ZSBhZnRlciBhIHN5bmMgWEhSJyk7CisKK2RvY3VtZW50LmNvb2tpZSA9ICJ0ZXN0S2V5PXRlc3RW
YWx1ZSI7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ25vcm1hbGl6ZUNvb2tpZShkb2N1bWVudC5j
b29raWUpJywgJ3Rlc3RLZXk9dGVzdFZhbHVlJyk7Cit2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1
ZXN0KCk7Cit4aHIub3BlbignR0VUJywgJ3Jlc291cmNlcy9zZXRDb29raWVzLmNnaScsIGZhbHNl
KTsKK3hoci5zZXRSZXF1ZXN0SGVhZGVyKCdTRVQtQ09PS0lFJywgJ3hocktleT14aHJWYWx1ZTsg
cGF0aD0vJyk7Cit4aHIuc2VuZCgpOworCitzaG91bGRCZSgneGhyLnN0YXR1cycsICcyMDAnKTsK
K3Nob3VsZEJlRXF1YWxUb1N0cmluZygnbm9ybWFsaXplQ29va2llKGRvY3VtZW50LmNvb2tpZSkn
LCAndGVzdEtleT10ZXN0VmFsdWU7IHhocktleT14aHJWYWx1ZScpOworCis8L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSdyZXNvdXJjZXMvY29va2llcy10ZXN0LXBvc3QuanMnPjwvc2NyaXB0Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>238939</attachid>
            <date>2014-09-30 11:03:04 -0700</date>
            <delta_ts>2014-09-30 13:13:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137225-20140930110305.patch</filename>
            <type>text/plain</type>
            <size>14426</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0MTA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGRkOTdhMTQyNjljNjkw
MDQ3OTdmMTIzMzQ3MmU5YTNlMjVhNTc4OS4uMDBlODgwNzY5YWIzZGFkNWYwYTdjODAzNTkzZDdh
Zjk3YWJlYWM2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDE0LTA5LTMwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGJhc2ljIGNhY2hpbmcg
Zm9yIERvY3VtZW50LmNvb2tpZSBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEzNzIyNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFdoaWxlIHByb2ZpbGluZyB0aGUgbG9hZCBvZiBueXRpbWVzLmNvbSwg
SSBub3RpY2VkIHRoYXQgdGhlIHNpdGUgaXMKKyAgICAgICAgYWNjZXNzaW5nIH4yNTAgdGltZXMg
ZG9jdW1lbnQuY29va2llLCBqdXN0IGR1cmluZyBwYWdlIGxvYWQuIEFjY2Vzc2luZworICAgICAg
ICBkb2N1bWVudC5jb29raWUgaXMgY3VycmVudGx5IHNsb3cgYmVjYXVzZSB3ZToKKyAgICAgICAg
LSBDYWxsIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29va2llc0ZvckRPTSgpIHZpcnR1YWwgZnVu
Y3Rpb24KKyAgICAgICAgLSBTZW5kIGEgc3luYyBJUEMgbWVzc2FnZSB0byB0aGUgTmV0d29yayBw
cm9jZXNzIHRvIHJldHJpZXZlIHRoZQorICAgICAgICAgIGNvb2tpZXMKKyAgICAgICAgICAgIC0g
VGhlIE5ldHdvcmsgcHJvY2VzcyBnZXRzIHRoZSBsaXN0IG9mIGNvb2tpZXMgZnJvbSBDRk5ldHdv
cmsgdGhlbgorICAgICAgICAgICAgICBzZXJpYWxpemVzIHRoZSByZXN1bHQgdG8gc2VuZCBpdCBi
YWNrIHRvIHRoZSBXZWJQcm9jZXNzCisgICAgICAgIC0gV2UgdW5zZXJpYWxpemUgdGhlIGNvb2tp
ZXMgaW50byBhbiBOU0xpc3Qgb2YgY29va2llcworICAgICAgICAtIFdlIGZpbHRlci1vdXQgdGhl
IGNvb2tpZXMgdGhhdCBhcmUgJ2h0dHBPbmx5JyBhbmQgY29uc3RydWN0IGEgbmV3CisgICAgICAg
ICAgTlNMaXN0IG9mIGNvb2tpZXMKKyAgICAgICAgLSBXZSBjcmVhdGUgYSBXVEYgU3RyaW5nIG91
dCBvZiB0aGUgY29va2llcyBOU0xpc3QKKworICAgICAgICBJbiB0aGUgY2FzZSBvZiBueXRpbWVz
LmNvbSwgaXQgdHVybnMgb3V0IHRoYXQgdXAgdG8gMTAwIGNhbGxzIHRvCisgICAgICAgIGRvY3Vt
ZW50LmNvb2tpZSgpIGFyZSBtYWRlIGluIHRoZSBzYW1lIGV2ZW50IGxvb3AgaXRlcmF0aW9uLiBU
aGlzIHBhdGNoCisgICAgICAgIHRodXMgY2FjaGVzIC8gZnJlZXplcyB0aGUgY29va2llcyB1bnRp
bCB3ZSByZXR1cm4gdG8gdGhlIGV2ZW50CisgICAgICAgIGxvb3Agc28gdGhhdCBjb25zZWN1dGl2
ZSBjYWxscyB0byBkb2N1bWVudC5jb29raWUoKSBhcmUgZXh0cmVtZWx5IGZhc3QuCisgICAgICAg
IERvaW5nIHNvIHNlZW1zIHRvIGJlIHN1ZmZpY2llbnQgdG8gYWNoaWV2ZSBhIH43NiUgY2FjaGUg
aGl0IGZvciBueXRpbWVzLmNvbS4KKworICAgICAgICBUaGUgY29va2llcyBjYWNoZSBpcyBpbnZh
bGlkYXRlZCB3aGVuZXZlcjoKKyAgICAgICAgLSBkb2N1bWVudC5jb29raWUgaXMgc2V0CisgICAg
ICAgIC0gd2UgcmV0dXJuIHRvIHRoZSBldmVudCBsb29wCisgICAgICAgIC0gYSBuZXR3b3JrIHJl
c291cmNlIGlzIGxvYWRlZCBzeW5jaHJvbm91c2x5IGFzIGl0IG1heSBjYXVzZSBjb29raWVzIHRv
CisgICAgICAgICAgYmUgc2V0IGJlZm9yZSB3ZSByZXR1cm4gdG8gdGhlIGV2ZW50IGxvb3AKKwor
ICAgICAgICBUZXN0OiBodHRwL3Rlc3RzL2Nvb2tpZXMvc3luYy14aHItc2V0LWNvb2tpZS1pbnZh
bGlkYXRlcy1jYWNoZS5odG1sCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OkRvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50OjpvcGVuKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpjb29raWUpOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNldENvb2tpZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudDo6c2V0Q29va2llVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojppbml0U2Vj
dXJpdHlDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzZXRET01Db29raWVD
YWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6aW52YWxpZGF0ZURPTUNvb2tpZUNh
Y2hlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpkb21Db29raWVDYWNoZUV4cGlyeVRp
bWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmRpZExvYWRSZXNvdXJjZVN5
bmNocm9ub3VzbHkpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnQ6OmRvbUNvb2tpZUNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
Ojppc0RPTUNvb2tpZUNhY2hlVmFsaWQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNl
dENvb2tpZVVSTCk6IERlbGV0ZWQuCisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6ZGlkTG9h
ZFJlc291cmNlU3luY2hyb25vdXNseSk6CisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQuaDoKKyAgICAgICAgKiBsb2FkZXIvVGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToK
KwogMjAxNC0wOS0zMCAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbTWFjXSBNZWRpYVBsYXllclByaXZhdGVRVEtpdCBzaG91bGQgbm90IHVzZSBGcmFt
ZVZpZXcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDhlODNlOTEyMDE0Y2NiODZiNmQ4MTA4
YTJkZjMyOTQ4MTA3ZWI0ZTIuLjFkN2M4NWU4OGYzMTEyZjk2ZDhiNDc4Y2U2OTZlMmIxYWM2YmI2
NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNTEzLDYgKzUxMyw3IEBAIERvY3VtZW50
OjpEb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJsLCB1bnNpZ25lZCBkb2N1bWVu
dENsYXNzZXMsIHVuc2lnCiAgICAgLCBtX2lucHV0Q3Vyc29yKEVtcHR5SW5wdXRDdXJzb3I6OmNy
ZWF0ZSgpKQogI2VuZGlmCiAgICAgLCBtX2RpZEFzc29jaWF0ZUZvcm1Db250cm9sc1RpbWVyKHRo
aXMsICZEb2N1bWVudDo6ZGlkQXNzb2NpYXRlRm9ybUNvbnRyb2xzVGltZXJGaXJlZCkKKyAgICAs
IG1fY29va2llQ2FjaGVFeHBpcnlUaW1lcih0aGlzLCAmRG9jdW1lbnQ6OmRvbUNvb2tpZUNhY2hl
RXhwaXJ5VGltZXJGaXJlZCkKICAgICAsIG1fZGlzYWJsZWRGaWVsZHNldEVsZW1lbnRzQ291bnQo
MCkKICAgICAsIG1faGFzSW5qZWN0ZWRQbHVnSW5zU2NyaXB0KGZhbHNlKQogICAgICwgbV9yZW5k
ZXJUcmVlQmVpbmdEZXN0cm95ZWQoZmFsc2UpCkBAIC0yMjU2LDcgKzIyNTcsNyBAQCB2b2lkIERv
Y3VtZW50OjpvcGVuKERvY3VtZW50KiBvd25lckRvY3VtZW50KQogewogICAgIGlmIChvd25lckRv
Y3VtZW50KSB7CiAgICAgICAgIHNldFVSTChvd25lckRvY3VtZW50LT51cmwoKSk7Ci0gICAgICAg
IG1fY29va2llVVJMID0gb3duZXJEb2N1bWVudC0+Y29va2llVVJMKCk7CisgICAgICAgIHNldENv
b2tpZVVSTChvd25lckRvY3VtZW50LT5jb29raWVVUkwoKSk7CiAgICAgICAgIHNldFNlY3VyaXR5
T3JpZ2luKG93bmVyRG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkpOwogICAgIH0KIApAQCAtMzgz
NSw3ICszODM2LDcgQEAgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBEb2N1bWVudDo6b3duZXJFbGVt
ZW50KCkgY29uc3QKICAgICByZXR1cm4gZnJhbWUoKS0+b3duZXJFbGVtZW50KCk7CiB9CiAKLVN0
cmluZyBEb2N1bWVudDo6Y29va2llKEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAorU3RyaW5nIERv
Y3VtZW50Ojpjb29raWUoRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKHBhZ2UoKSAmJiAh
cGFnZSgpLT5zZXR0aW5ncygpLmNvb2tpZUVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIFN0cmlu
ZygpOwpAQCAtMzg1Myw3ICszODU0LDEwIEBAIFN0cmluZyBEb2N1bWVudDo6Y29va2llKEV4Y2Vw
dGlvbkNvZGUmIGVjKSBjb25zdAogICAgIGlmIChjb29raWVVUkwuaXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm4gU3RyaW5nKCk7CiAKLSAgICByZXR1cm4gY29va2llcyh0aGlzLCBjb29raWVVUkwp
OworICAgIGlmICghaXNET01Db29raWVDYWNoZVZhbGlkKCkpCisgICAgICAgIHNldERPTUNvb2tp
ZUNhY2hlKGNvb2tpZXModGhpcywgY29va2llVVJMKSk7CisKKyAgICByZXR1cm4gZG9tQ29va2ll
Q2FjaGUoKTsKIH0KIAogdm9pZCBEb2N1bWVudDo6c2V0Q29va2llKGNvbnN0IFN0cmluZyYgdmFs
dWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtMzg3NCw2ICszODc4LDcgQEAgdm9pZCBEb2N1bWVu
dDo6c2V0Q29va2llKGNvbnN0IFN0cmluZyYgdmFsdWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAg
IGlmIChjb29raWVVUkwuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKKyAgICBpbnZhbGlk
YXRlRE9NQ29va2llQ2FjaGUoKTsKICAgICBzZXRDb29raWVzKHRoaXMsIGNvb2tpZVVSTCwgdmFs
dWUpOwogfQogCkBAIC0zOTc3LDYgKzM5ODIsMTIgQEAgU3RyaW5nIERvY3VtZW50OjpsYXN0TW9k
aWZpZWQoKSBjb25zdAogICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgiJTAyZC8lMDJkLyUwNGQg
JTAyZDolMDJkOiUwMmQiLCBkYXRlLm1vbnRoKCkgKyAxLCBkYXRlLm1vbnRoRGF5KCksIGRhdGUu
ZnVsbFllYXIoKSwgZGF0ZS5ob3VyKCksIGRhdGUubWludXRlKCksIGRhdGUuc2Vjb25kKCkpOwog
fQogCit2b2lkIERvY3VtZW50OjpzZXRDb29raWVVUkwoY29uc3QgVVJMJiB1cmwpCit7CisgICAg
bV9jb29raWVVUkwgPSB1cmw7CisgICAgaW52YWxpZGF0ZURPTUNvb2tpZUNhY2hlKCk7Cit9CisK
IHN0YXRpYyBib29sIGlzVmFsaWROYW1lTm9uQVNDSUkoY29uc3QgTENoYXIqIGNoYXJhY3RlcnMs
IHVuc2lnbmVkIGxlbmd0aCkKIHsKICAgICBpZiAoIWlzVmFsaWROYW1lU3RhcnQoY2hhcmFjdGVy
c1swXSkpCkBAIC00Njg5LDcgKzQ3MDAsNyBAQCB2b2lkIERvY3VtZW50Ojppbml0U2VjdXJpdHlD
b250ZXh0KCkKICAgICBpZiAoIW1fZnJhbWUpIHsKICAgICAgICAgLy8gTm8gc291cmNlIGZvciBh
IHNlY3VyaXR5IGNvbnRleHQuCiAgICAgICAgIC8vIFRoaXMgY2FuIG9jY3VyIHZpYSBkb2N1bWVu
dC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVEb2N1bWVudCgpLgotICAgICAgICBtX2Nvb2tpZVVSTCA9
IFVSTChQYXJzZWRVUkxTdHJpbmcsIGVtcHR5U3RyaW5nKCkpOworICAgICAgICBzZXRDb29raWVV
UkwoVVJMKFBhcnNlZFVSTFN0cmluZywgZW1wdHlTdHJpbmcoKSkpOwogICAgICAgICBzZXRTZWN1
cml0eU9yaWdpbihTZWN1cml0eU9yaWdpbjo6Y3JlYXRlVW5pcXVlKCkpOwogICAgICAgICBzZXRD
b250ZW50U2VjdXJpdHlQb2xpY3koc3RkOjptYWtlX3VuaXF1ZTxDb250ZW50U2VjdXJpdHlQb2xp
Y3k+KHRoaXMpKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNDY5Nyw3ICs0NzA4LDcgQEAgdm9pZCBE
b2N1bWVudDo6aW5pdFNlY3VyaXR5Q29udGV4dCgpCiAKICAgICAvLyBJbiB0aGUgY29tbW9uIGNh
c2UsIGNyZWF0ZSB0aGUgc2VjdXJpdHkgY29udGV4dCBmcm9tIHRoZSBjdXJyZW50bHkKICAgICAv
LyBsb2FkaW5nIFVSTCB3aXRoIGEgZnJlc2ggY29udGVudCBzZWN1cml0eSBwb2xpY3kuCi0gICAg
bV9jb29raWVVUkwgPSBtX3VybDsKKyAgICBzZXRDb29raWVVUkwobV91cmwpOwogICAgIGVuZm9y
Y2VTYW5kYm94RmxhZ3MobV9mcmFtZS0+bG9hZGVyKCkuZWZmZWN0aXZlU2FuZGJveEZsYWdzKCkp
OwogCiAjaWYgUExBVEZPUk0oSU9TKQpAQCAtNDc2Myw3ICs0Nzc0LDcgQEAgdm9pZCBEb2N1bWVu
dDo6aW5pdFNlY3VyaXR5Q29udGV4dCgpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBt
X2Nvb2tpZVVSTCA9IG93bmVyRnJhbWUtPmRvY3VtZW50KCktPmNvb2tpZVVSTCgpOworICAgIHNl
dENvb2tpZVVSTChvd25lckZyYW1lLT5kb2N1bWVudCgpLT5jb29raWVVUkwoKSk7CiAgICAgLy8g
V2UgYWxpYXMgdGhlIFNlY3VyaXR5T3JpZ2lucyB0byBtYXRjaCBGaXJlZm94LCBzZWUgQnVnIDE1
MzEzCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MzEz
CiAgICAgc2V0U2VjdXJpdHlPcmlnaW4ob3duZXJGcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlP
cmlnaW4oKSk7CkBAIC02MTc5LDYgKzYxOTAsMzIgQEAgdm9pZCBEb2N1bWVudDo6ZGlkQXNzb2Np
YXRlRm9ybUNvbnRyb2xzVGltZXJGaXJlZChUaW1lcjxEb2N1bWVudD4mIHRpbWVyKQogICAgIG1f
YXNzb2NpYXRlZEZvcm1Db250cm9scy5jbGVhcigpOwogfQogCit2b2lkIERvY3VtZW50OjpzZXRE
T01Db29raWVDYWNoZShjb25zdCBTdHJpbmcmIGNvb2tpZXMpCit7CisgICAgQVNTRVJUKCFpc0RP
TUNvb2tpZUNhY2hlVmFsaWQoKSk7CisgICAgbV9ET01Db29raWVDYWNoZSA9IGNvb2tpZXM7Cisg
ICAgLy8gVGhlIGNvb2tpZXMgY2FjaGUgaXMgdmFsaWQgdW50aWwgd2UgZ28gYmFjayB0byB0aGUg
ZXZlbnQgbG9vcC4KKyAgICBtX2Nvb2tpZUNhY2hlRXhwaXJ5VGltZXIuc3RhcnRPbmVTaG90KDAp
OworfQorCit2b2lkIERvY3VtZW50OjppbnZhbGlkYXRlRE9NQ29va2llQ2FjaGUoKQoreworICAg
IG1fY29va2llQ2FjaGVFeHBpcnlUaW1lci5zdG9wKCk7CisgICAgbV9ET01Db29raWVDYWNoZSA9
IFN0cmluZygpOworfQorCit2b2lkIERvY3VtZW50Ojpkb21Db29raWVDYWNoZUV4cGlyeVRpbWVy
RmlyZWQoVGltZXI8RG9jdW1lbnQ+JikKK3sKKyAgICBpbnZhbGlkYXRlRE9NQ29va2llQ2FjaGUo
KTsKK30KKwordm9pZCBEb2N1bWVudDo6ZGlkTG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25z
dCBSZXNvdXJjZVJlcXVlc3QmKQoreworICAgIC8vIFN5bmNocm9ub3VzIHJlc291cmNlcyBsb2Fk
aW5nIGNhbiBzZXQgY29va2llcyBzbyB3ZSBpbnZhbGlkYXRlIHRoZSBjb29raWVzIGNhY2hlCisg
ICAgLy8gaW4gdGhpcyBjYXNlLCB0byBiZSBzYWZlLgorICAgIGludmFsaWRhdGVET01Db29raWVD
YWNoZSgpOworfQorCiB2b2lkIERvY3VtZW50OjplbnN1cmVQbHVnSW5zSW5qZWN0ZWRTY3JpcHQo
RE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKIHsKICAgICBpZiAobV9oYXNJbmplY3RlZFBsdWdJbnNT
Y3JpcHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IGM0MmQ0NDJjNjI4YWYyZTc1M2FiZGU1MmNm
N2FlZTFiYjc4NGQwNGYuLjcxODllNGJiMTQyYTZhN2YxOGE0NDViOWM2ZDFiYTRjMDJlMjQwNTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC04ODQsNyArODg0LDcgQEAgcHVibGljOgogICAgIHZv
aWQgc2V0VGl0bGVFbGVtZW50KGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mLCBFbGVtZW50KiB0
aXRsZUVsZW1lbnQpOwogICAgIHZvaWQgcmVtb3ZlVGl0bGUoRWxlbWVudCogdGl0bGVFbGVtZW50
KTsKIAotICAgIFN0cmluZyBjb29raWUoRXhjZXB0aW9uQ29kZSYpIGNvbnN0OworICAgIFN0cmlu
ZyBjb29raWUoRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgc2V0Q29va2llKGNvbnN0IFN0cmlu
ZyYsIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIFN0cmluZyByZWZlcnJlcigpIGNvbnN0OwpAQCAt
OTA3LDcgKzkwNyw3IEBAIHB1YmxpYzoKICAgICAvLyAgICBpbmhlcml0cyBpdHMgY29va2llVVJM
IGJ1dCBub3QgaXRzIFVSTC4KICAgICAvLwogICAgIGNvbnN0IFVSTCYgY29va2llVVJMKCkgY29u
c3QgeyByZXR1cm4gbV9jb29raWVVUkw7IH0KLSAgICB2b2lkIHNldENvb2tpZVVSTChjb25zdCBV
UkwmIHVybCkgeyBtX2Nvb2tpZVVSTCA9IHVybDsgfQorICAgIHZvaWQgc2V0Q29va2llVVJMKGNv
bnN0IFVSTCYpOwogCiAgICAgLy8gVGhlIGZpcnN0UGFydHlGb3JDb29raWVzIGlzIHVzZWQgdG8g
Y29tcHV0ZSB3aGV0aGVyIHRoaXMgZG9jdW1lbnQKICAgICAvLyBhcHBlYXJzIGluIGEgInRoaXJk
LXBhcnR5IiBjb250ZXh0IGZvciB0aGUgcHVycG9zZSBvZiB0aGlyZC1wYXJ0eQpAQCAtMTM2Nyw2
ICsxMzY3LDE0IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRpZEFzc29jaWF0ZUZvcm1Db250cm9s
c1RpbWVyRmlyZWQoVGltZXI8RG9jdW1lbnQ+Jik7CiAKKyAgICAvLyBET00gQ29va2llcyBjYWNo
aW5nLgorICAgIGNvbnN0IFN0cmluZyYgZG9tQ29va2llQ2FjaGUoKSBjb25zdCB7IHJldHVybiBt
X0RPTUNvb2tpZUNhY2hlOyB9CisgICAgdm9pZCBzZXRET01Db29raWVDYWNoZShjb25zdCBTdHJp
bmcmKTsKKyAgICBib29sIGlzRE9NQ29va2llQ2FjaGVWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1f
Y29va2llQ2FjaGVFeHBpcnlUaW1lci5pc0FjdGl2ZSgpOyB9CisgICAgdm9pZCBpbnZhbGlkYXRl
RE9NQ29va2llQ2FjaGUoKTsKKyAgICB2b2lkIGRvbUNvb2tpZUNhY2hlRXhwaXJ5VGltZXJGaXJl
ZChUaW1lcjxEb2N1bWVudD4mKTsKKyAgICB2b2lkIGRpZExvYWRSZXNvdXJjZVN5bmNocm9ub3Vz
bHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jikgb3ZlcnJpZGUgZmluYWw7CisKICAgICB1bnNpZ25l
ZCBtX3JlZmVyZW5jaW5nTm9kZUNvdW50OwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFN0eWxlUmVz
b2x2ZXI+IG1fc3R5bGVSZXNvbHZlcjsKQEAgLTE2OTksNiArMTcwNyw4IEBAIHByaXZhdGU6CiAj
ZW5kaWYKIAogICAgIFRpbWVyPERvY3VtZW50PiBtX2RpZEFzc29jaWF0ZUZvcm1Db250cm9sc1Rp
bWVyOworICAgIFRpbWVyPERvY3VtZW50PiBtX2Nvb2tpZUNhY2hlRXhwaXJ5VGltZXI7CisgICAg
U3RyaW5nIG1fRE9NQ29va2llQ2FjaGU7CiAgICAgSGFzaFNldDxSZWZQdHI8RWxlbWVudD4+IG1f
YXNzb2NpYXRlZEZvcm1Db250cm9sczsKICAgICB1bnNpZ25lZCBtX2Rpc2FibGVkRmllbGRzZXRF
bGVtZW50c0NvdW50OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5jcHAKaW5kZXggNTBhODRjNzc5NDgxYjk4ZTdiN2ZhMTNjNmFhYmVlYWNiOWRiZjA2OC4u
MjgyYzBmZmZmOGI2YjQ2OWI4YmNlODI5ZjJlYzI2MjQ0Y2Q0ZWZiYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcApAQCAtMTcyLDYgKzE3MiwxMCBA
QCB2b2lkIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmRlc3Ryb3llZE1lc3NhZ2VQb3J0KE1lc3Nh
Z2VQb3J0JiBtZXNzYWdlUG9ydCkKICAgICBtX21lc3NhZ2VQb3J0cy5yZW1vdmUoJm1lc3NhZ2VQ
b3J0KTsKIH0KIAordm9pZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpkaWRMb2FkUmVzb3VyY2VT
eW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpCit7Cit9CisKIGJvb2wgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6Y2FuU3VzcGVuZEFjdGl2ZURPTU9iamVjdHMoKQogewogICAgIGNo
ZWNrQ29uc2lzdGVuY3koKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRF
eGVjdXRpb25Db250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5oCmluZGV4IGRhZGQ5YWExOTY2YTE5Nzk4NTFhZmMwNjEwYzE5Y2VmZjlmMTJlZTkuLjAw
MDU3ZjNlMWQxM2ViYTRmYzlkYzdhYWFlZTMwMzU5Yzc2OWEwZTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5j
bHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCiAjaW5jbHVkZSAiRE9NVGltZXIuaCIKKyNpbmNsdWRl
ICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJTY2hlZHVsZWRBY3Rpb24uaCIKICNpbmNs
dWRlICJTZWN1cml0eUNvbnRleHQuaCIKICNpbmNsdWRlICJTdXBwbGVtZW50YWJsZS5oIgpAQCAt
MTEwLDYgKzExMSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGNyZWF0ZWRNZXNzYWdlUG9ydChNZXNz
YWdlUG9ydCYpOwogICAgIHZvaWQgZGVzdHJveWVkTWVzc2FnZVBvcnQoTWVzc2FnZVBvcnQmKTsK
IAorICAgIHZpcnR1YWwgdm9pZCBkaWRMb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJl
c291cmNlUmVxdWVzdCYpOworCiAgICAgdm9pZCByZWYoKSB7IHJlZlNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKTsgfQogICAgIHZvaWQgZGVyZWYoKSB7IGRlcmVmU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyLmNwcAppbmRl
eCAyZThjMmJmZjdhYzBjMDNmY2E1MGU3NjQ4MTMwY2EyNGYwYjhjZWE0Li43NzU3MWYzNTc5NWJl
ODg3YmY4YWMwYTg4MTNjZDEzYjBiNDZmOTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvVGhyZWFkYWJsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Ro
cmVhZGFibGVMb2FkZXIuY3BwCkBAIC02NiwxMiArNjYsMTEgQEAgdm9pZCBUaHJlYWRhYmxlTG9h
ZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQKIHsKICAgICBBU1NFUlQoY29udGV4dCk7CiAKLSAgICBpZiAoY29udGV4dC0+aXNXb3Jr
ZXJHbG9iYWxTY29wZSgpKSB7CisgICAgaWYgKGNvbnRleHQtPmlzV29ya2VyR2xvYmFsU2NvcGUo
KSkKICAgICAgICAgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25v
dXNseSh0b1dvcmtlckdsb2JhbFNjb3BlKGNvbnRleHQpLCByZXF1ZXN0LCBjbGllbnQsIG9wdGlv
bnMpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgRG9jdW1lbnRUaHJlYWRhYmxlTG9h
ZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KCpkb3duY2FzdDxEb2N1bWVudD4oY29udGV4
dCksIHJlcXVlc3QsIGNsaWVudCwgb3B0aW9ucyk7CisgICAgZWxzZQorICAgICAgICBEb2N1bWVu
dFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoKmRvd25jYXN0PERv
Y3VtZW50Pihjb250ZXh0KSwgcmVxdWVzdCwgY2xpZW50LCBvcHRpb25zKTsKKyAgICBjb250ZXh0
LT5kaWRMb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KHJlcXVlc3QpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKaW5kZXggNTlhYjFhNjdhYTk3OGNiNDk2OTYwNWViZjk1Y2Y5ZGU4Mzc1
NmNiMi4uMGRiYjYyY2Y1ODA1NzhlYjI3ODMwYjVhNzkyOThkMmVhMDRkNDhkMCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE2IEBACisyMDE0LTA5LTMwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+
CisKKyAgICAgICAgQWRkIGJhc2ljIGNhY2hpbmcgZm9yIERvY3VtZW50LmNvb2tpZSBBUEkKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNzIyNQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIGxheW91
dCB0ZXN0IHRvIG1ha2Ugc3VyZSB0aGF0IGRvY3VtZW50LmNvb2tpZSByZXR1cm5zIHVwZGF0ZWQK
KyAgICAgICAgcmVzdWx0cyBhZnRlciBjb29raWVzIGFyZSBzZXQgdmlhIGEgc3luYyBYSFIuCisK
KyAgICAgICAgKiBodHRwL3Rlc3RzL2Nvb2tpZXMvc3luYy14aHItc2V0LWNvb2tpZS1pbnZhbGlk
YXRlcy1jYWNoZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvY29v
a2llcy9zeW5jLXhoci1zZXQtY29va2llLWludmFsaWRhdGVzLWNhY2hlLmh0bWw6IEFkZGVkLgor
CiAyMDE0LTA4LTAxICBTZXJnaW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgog
CiAgICAgICAgIENhcmV0IG5vdCBzaG93biBhdCB0aGUgZW5kIG9mIGxpbmUgaW4gb3ZlcnR5cGUg
bW9kZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb29raWVzL3N5bmMteGhy
LXNldC1jb29raWUtaW52YWxpZGF0ZXMtY2FjaGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9jb29raWVzL3N5bmMteGhyLXNldC1jb29raWUtaW52YWxpZGF0ZXMtY2FjaGUt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY2YWE2YmJmOTllM2RjMDc0ZTU2ZGI0Yzk3OGZjNzEw
OTZiZGYyZDcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nvb2tp
ZXMvc3luYy14aHItc2V0LWNvb2tpZS1pbnZhbGlkYXRlcy1jYWNoZS1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwxMiBAQAorVGVzdHMgdGhhdCBkb2N1bWVudC5jb29raWUgcmV0dXJucyB0aGUgcmln
aHQgdmFsdWUgYWZ0ZXIgYSBzeW5jIFhIUgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBz
ZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisK
KworUEFTUyBub3JtYWxpemVDb29raWUoZG9jdW1lbnQuY29va2llKSBpcyAidGVzdEtleT10ZXN0
VmFsdWUiCitQQVNTIHhoci5zdGF0dXMgaXMgMjAwCitQQVNTIG5vcm1hbGl6ZUNvb2tpZShkb2N1
bWVudC5jb29raWUpIGlzICJ0ZXN0S2V5PXRlc3RWYWx1ZTsgeGhyS2V5PXhoclZhbHVlIgorUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY29va2llcy9zeW5jLXhoci1zZXQtY29va2llLWlu
dmFsaWRhdGVzLWNhY2hlLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nvb2tpZXMvc3lu
Yy14aHItc2V0LWNvb2tpZS1pbnZhbGlkYXRlcy1jYWNoZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU3YWI1
ODcxYmM1ZDZlNjU3NzY1MjkxOTFhMmU1ZjlmMWZjMDU1MjUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nvb2tpZXMvc3luYy14aHItc2V0LWNvb2tpZS1pbnZhbGlk
YXRlcy1jYWNoZS5odG1sCkBAIC0wLDAgKzEsMTggQEAKKzwhRE9DVFlQRSBodG1sPgorPHNjcmlw
dCBzcmM9J3Jlc291cmNlcy9jb29raWVzLXRlc3QtcHJlLmpzJz48L3NjcmlwdD4KKworPHNjcmlw
dD4KK2Rlc2NyaXB0aW9uKCdUZXN0cyB0aGF0IGRvY3VtZW50LmNvb2tpZSByZXR1cm5zIHRoZSBy
aWdodCB2YWx1ZSBhZnRlciBhIHN5bmMgWEhSJyk7CisKK2RvY3VtZW50LmNvb2tpZSA9ICJ0ZXN0
S2V5PXRlc3RWYWx1ZSI7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ25vcm1hbGl6ZUNvb2tpZShk
b2N1bWVudC5jb29raWUpJywgJ3Rlc3RLZXk9dGVzdFZhbHVlJyk7Cit2YXIgeGhyID0gbmV3IFhN
TEh0dHBSZXF1ZXN0KCk7Cit4aHIub3BlbignR0VUJywgJ3Jlc291cmNlcy9zZXRDb29raWVzLmNn
aScsIGZhbHNlKTsKK3hoci5zZXRSZXF1ZXN0SGVhZGVyKCdTRVQtQ09PS0lFJywgJ3hocktleT14
aHJWYWx1ZTsgcGF0aD0vJyk7Cit4aHIuc2VuZCgpOworCitzaG91bGRCZSgneGhyLnN0YXR1cycs
ICcyMDAnKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygnbm9ybWFsaXplQ29va2llKGRvY3VtZW50
LmNvb2tpZSknLCAndGVzdEtleT10ZXN0VmFsdWU7IHhocktleT14aHJWYWx1ZScpOworCis8L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSdyZXNvdXJjZXMvY29va2llcy10ZXN0LXBvc3QuanMnPjwvc2Ny
aXB0Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>238951</attachid>
            <date>2014-09-30 13:13:41 -0700</date>
            <delta_ts>2014-09-30 16:56:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137225-20140930131342.patch</filename>
            <type>text/plain</type>
            <size>14425</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0MTA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGRkOTdhMTQyNjljNjkw
MDQ3OTdmMTIzMzQ3MmU5YTNlMjVhNTc4OS4uMDBlODgwNzY5YWIzZGFkNWYwYTdjODAzNTkzZDdh
Zjk3YWJlYWM2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDE0LTA5LTMwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGJhc2ljIGNhY2hpbmcg
Zm9yIERvY3VtZW50LmNvb2tpZSBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEzNzIyNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFdoaWxlIHByb2ZpbGluZyB0aGUgbG9hZCBvZiBueXRpbWVzLmNvbSwg
SSBub3RpY2VkIHRoYXQgdGhlIHNpdGUgaXMKKyAgICAgICAgYWNjZXNzaW5nIH4yNTAgdGltZXMg
ZG9jdW1lbnQuY29va2llLCBqdXN0IGR1cmluZyBwYWdlIGxvYWQuIEFjY2Vzc2luZworICAgICAg
ICBkb2N1bWVudC5jb29raWUgaXMgY3VycmVudGx5IHNsb3cgYmVjYXVzZSB3ZToKKyAgICAgICAg
LSBDYWxsIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29va2llc0ZvckRPTSgpIHZpcnR1YWwgZnVu
Y3Rpb24KKyAgICAgICAgLSBTZW5kIGEgc3luYyBJUEMgbWVzc2FnZSB0byB0aGUgTmV0d29yayBw
cm9jZXNzIHRvIHJldHJpZXZlIHRoZQorICAgICAgICAgIGNvb2tpZXMKKyAgICAgICAgICAgIC0g
VGhlIE5ldHdvcmsgcHJvY2VzcyBnZXRzIHRoZSBsaXN0IG9mIGNvb2tpZXMgZnJvbSBDRk5ldHdv
cmsgdGhlbgorICAgICAgICAgICAgICBzZXJpYWxpemVzIHRoZSByZXN1bHQgdG8gc2VuZCBpdCBi
YWNrIHRvIHRoZSBXZWJQcm9jZXNzCisgICAgICAgIC0gV2UgdW5zZXJpYWxpemUgdGhlIGNvb2tp
ZXMgaW50byBhbiBOU0xpc3Qgb2YgY29va2llcworICAgICAgICAtIFdlIGZpbHRlci1vdXQgdGhl
IGNvb2tpZXMgdGhhdCBhcmUgJ2h0dHBPbmx5JyBhbmQgY29uc3RydWN0IGEgbmV3CisgICAgICAg
ICAgTlNMaXN0IG9mIGNvb2tpZXMKKyAgICAgICAgLSBXZSBjcmVhdGUgYSBXVEYgU3RyaW5nIG91
dCBvZiB0aGUgY29va2llcyBOU0xpc3QKKworICAgICAgICBJbiB0aGUgY2FzZSBvZiBueXRpbWVz
LmNvbSwgaXQgdHVybnMgb3V0IHRoYXQgdXAgdG8gMTAwIGNhbGxzIHRvCisgICAgICAgIGRvY3Vt
ZW50LmNvb2tpZSgpIGFyZSBtYWRlIGluIHRoZSBzYW1lIGV2ZW50IGxvb3AgaXRlcmF0aW9uLiBU
aGlzIHBhdGNoCisgICAgICAgIHRodXMgY2FjaGVzIC8gZnJlZXplcyB0aGUgY29va2llcyB1bnRp
bCB3ZSByZXR1cm4gdG8gdGhlIGV2ZW50CisgICAgICAgIGxvb3Agc28gdGhhdCBjb25zZWN1dGl2
ZSBjYWxscyB0byBkb2N1bWVudC5jb29raWUoKSBhcmUgZXh0cmVtZWx5IGZhc3QuCisgICAgICAg
IERvaW5nIHNvIHNlZW1zIHRvIGJlIHN1ZmZpY2llbnQgdG8gYWNoaWV2ZSBhIH43NiUgY2FjaGUg
aGl0IGZvciBueXRpbWVzLmNvbS4KKworICAgICAgICBUaGUgY29va2llcyBjYWNoZSBpcyBpbnZh
bGlkYXRlZCB3aGVuZXZlcjoKKyAgICAgICAgLSBkb2N1bWVudC5jb29raWUgaXMgc2V0CisgICAg
ICAgIC0gd2UgcmV0dXJuIHRvIHRoZSBldmVudCBsb29wCisgICAgICAgIC0gYSBuZXR3b3JrIHJl
c291cmNlIGlzIGxvYWRlZCBzeW5jaHJvbm91c2x5IGFzIGl0IG1heSBjYXVzZSBjb29raWVzIHRv
CisgICAgICAgICAgYmUgc2V0IGJlZm9yZSB3ZSByZXR1cm4gdG8gdGhlIGV2ZW50IGxvb3AKKwor
ICAgICAgICBUZXN0OiBodHRwL3Rlc3RzL2Nvb2tpZXMvc3luYy14aHItc2V0LWNvb2tpZS1pbnZh
bGlkYXRlcy1jYWNoZS5odG1sCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OkRvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50OjpvcGVuKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpjb29raWUpOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNldENvb2tpZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudDo6c2V0Q29va2llVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojppbml0U2Vj
dXJpdHlDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzZXRET01Db29raWVD
YWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6aW52YWxpZGF0ZURPTUNvb2tpZUNh
Y2hlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpkb21Db29raWVDYWNoZUV4cGlyeVRp
bWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmRpZExvYWRSZXNvdXJjZVN5
bmNocm9ub3VzbHkpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnQ6OmRvbUNvb2tpZUNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
Ojppc0RPTUNvb2tpZUNhY2hlVmFsaWQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNl
dENvb2tpZVVSTCk6IERlbGV0ZWQuCisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6ZGlkTG9h
ZFJlc291cmNlU3luY2hyb25vdXNseSk6CisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQuaDoKKyAgICAgICAgKiBsb2FkZXIvVGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToK
KwogMjAxNC0wOS0zMCAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbTWFjXSBNZWRpYVBsYXllclByaXZhdGVRVEtpdCBzaG91bGQgbm90IHVzZSBGcmFt
ZVZpZXcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDhlODNlOTEyMDE0Y2NiODZiNmQ4MTA4
YTJkZjMyOTQ4MTA3ZWI0ZTIuLjNjZTgxYjA1YzE2YmJiMTAyOTQ3YjU3YTVmYTAzYjBjZjEyZGRk
MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNTEzLDYgKzUxMyw3IEBAIERvY3VtZW50
OjpEb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJsLCB1bnNpZ25lZCBkb2N1bWVu
dENsYXNzZXMsIHVuc2lnCiAgICAgLCBtX2lucHV0Q3Vyc29yKEVtcHR5SW5wdXRDdXJzb3I6OmNy
ZWF0ZSgpKQogI2VuZGlmCiAgICAgLCBtX2RpZEFzc29jaWF0ZUZvcm1Db250cm9sc1RpbWVyKHRo
aXMsICZEb2N1bWVudDo6ZGlkQXNzb2NpYXRlRm9ybUNvbnRyb2xzVGltZXJGaXJlZCkKKyAgICAs
IG1fY29va2llQ2FjaGVFeHBpcnlUaW1lcih0aGlzLCAmRG9jdW1lbnQ6OmRvbUNvb2tpZUNhY2hl
RXhwaXJ5VGltZXJGaXJlZCkKICAgICAsIG1fZGlzYWJsZWRGaWVsZHNldEVsZW1lbnRzQ291bnQo
MCkKICAgICAsIG1faGFzSW5qZWN0ZWRQbHVnSW5zU2NyaXB0KGZhbHNlKQogICAgICwgbV9yZW5k
ZXJUcmVlQmVpbmdEZXN0cm95ZWQoZmFsc2UpCkBAIC0yMjU2LDcgKzIyNTcsNyBAQCB2b2lkIERv
Y3VtZW50OjpvcGVuKERvY3VtZW50KiBvd25lckRvY3VtZW50KQogewogICAgIGlmIChvd25lckRv
Y3VtZW50KSB7CiAgICAgICAgIHNldFVSTChvd25lckRvY3VtZW50LT51cmwoKSk7Ci0gICAgICAg
IG1fY29va2llVVJMID0gb3duZXJEb2N1bWVudC0+Y29va2llVVJMKCk7CisgICAgICAgIHNldENv
b2tpZVVSTChvd25lckRvY3VtZW50LT5jb29raWVVUkwoKSk7CiAgICAgICAgIHNldFNlY3VyaXR5
T3JpZ2luKG93bmVyRG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkpOwogICAgIH0KIApAQCAtMzgz
NSw3ICszODM2LDcgQEAgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBEb2N1bWVudDo6b3duZXJFbGVt
ZW50KCkgY29uc3QKICAgICByZXR1cm4gZnJhbWUoKS0+b3duZXJFbGVtZW50KCk7CiB9CiAKLVN0
cmluZyBEb2N1bWVudDo6Y29va2llKEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAorU3RyaW5nIERv
Y3VtZW50Ojpjb29raWUoRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKHBhZ2UoKSAmJiAh
cGFnZSgpLT5zZXR0aW5ncygpLmNvb2tpZUVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIFN0cmlu
ZygpOwpAQCAtMzg1Myw3ICszODU0LDEwIEBAIFN0cmluZyBEb2N1bWVudDo6Y29va2llKEV4Y2Vw
dGlvbkNvZGUmIGVjKSBjb25zdAogICAgIGlmIChjb29raWVVUkwuaXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm4gU3RyaW5nKCk7CiAKLSAgICByZXR1cm4gY29va2llcyh0aGlzLCBjb29raWVVUkwp
OworICAgIGlmICghaXNET01Db29raWVDYWNoZVZhbGlkKCkpCisgICAgICAgIHNldERPTUNvb2tp
ZUNhY2hlKGNvb2tpZXModGhpcywgY29va2llVVJMKSk7CisKKyAgICByZXR1cm4gZG9tQ29va2ll
Q2FjaGUoKTsKIH0KIAogdm9pZCBEb2N1bWVudDo6c2V0Q29va2llKGNvbnN0IFN0cmluZyYgdmFs
dWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtMzg3NCw2ICszODc4LDcgQEAgdm9pZCBEb2N1bWVu
dDo6c2V0Q29va2llKGNvbnN0IFN0cmluZyYgdmFsdWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAg
IGlmIChjb29raWVVUkwuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKKyAgICBpbnZhbGlk
YXRlRE9NQ29va2llQ2FjaGUoKTsKICAgICBzZXRDb29raWVzKHRoaXMsIGNvb2tpZVVSTCwgdmFs
dWUpOwogfQogCkBAIC0zOTc3LDYgKzM5ODIsMTIgQEAgU3RyaW5nIERvY3VtZW50OjpsYXN0TW9k
aWZpZWQoKSBjb25zdAogICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgiJTAyZC8lMDJkLyUwNGQg
JTAyZDolMDJkOiUwMmQiLCBkYXRlLm1vbnRoKCkgKyAxLCBkYXRlLm1vbnRoRGF5KCksIGRhdGUu
ZnVsbFllYXIoKSwgZGF0ZS5ob3VyKCksIGRhdGUubWludXRlKCksIGRhdGUuc2Vjb25kKCkpOwog
fQogCit2b2lkIERvY3VtZW50OjpzZXRDb29raWVVUkwoY29uc3QgVVJMJiB1cmwpCit7CisgICAg
bV9jb29raWVVUkwgPSB1cmw7CisgICAgaW52YWxpZGF0ZURPTUNvb2tpZUNhY2hlKCk7Cit9CisK
IHN0YXRpYyBib29sIGlzVmFsaWROYW1lTm9uQVNDSUkoY29uc3QgTENoYXIqIGNoYXJhY3RlcnMs
IHVuc2lnbmVkIGxlbmd0aCkKIHsKICAgICBpZiAoIWlzVmFsaWROYW1lU3RhcnQoY2hhcmFjdGVy
c1swXSkpCkBAIC00Njg5LDcgKzQ3MDAsNyBAQCB2b2lkIERvY3VtZW50Ojppbml0U2VjdXJpdHlD
b250ZXh0KCkKICAgICBpZiAoIW1fZnJhbWUpIHsKICAgICAgICAgLy8gTm8gc291cmNlIGZvciBh
IHNlY3VyaXR5IGNvbnRleHQuCiAgICAgICAgIC8vIFRoaXMgY2FuIG9jY3VyIHZpYSBkb2N1bWVu
dC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVEb2N1bWVudCgpLgotICAgICAgICBtX2Nvb2tpZVVSTCA9
IFVSTChQYXJzZWRVUkxTdHJpbmcsIGVtcHR5U3RyaW5nKCkpOworICAgICAgICBzZXRDb29raWVV
UkwoVVJMKFBhcnNlZFVSTFN0cmluZywgZW1wdHlTdHJpbmcoKSkpOwogICAgICAgICBzZXRTZWN1
cml0eU9yaWdpbihTZWN1cml0eU9yaWdpbjo6Y3JlYXRlVW5pcXVlKCkpOwogICAgICAgICBzZXRD
b250ZW50U2VjdXJpdHlQb2xpY3koc3RkOjptYWtlX3VuaXF1ZTxDb250ZW50U2VjdXJpdHlQb2xp
Y3k+KHRoaXMpKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNDY5Nyw3ICs0NzA4LDcgQEAgdm9pZCBE
b2N1bWVudDo6aW5pdFNlY3VyaXR5Q29udGV4dCgpCiAKICAgICAvLyBJbiB0aGUgY29tbW9uIGNh
c2UsIGNyZWF0ZSB0aGUgc2VjdXJpdHkgY29udGV4dCBmcm9tIHRoZSBjdXJyZW50bHkKICAgICAv
LyBsb2FkaW5nIFVSTCB3aXRoIGEgZnJlc2ggY29udGVudCBzZWN1cml0eSBwb2xpY3kuCi0gICAg
bV9jb29raWVVUkwgPSBtX3VybDsKKyAgICBzZXRDb29raWVVUkwobV91cmwpOwogICAgIGVuZm9y
Y2VTYW5kYm94RmxhZ3MobV9mcmFtZS0+bG9hZGVyKCkuZWZmZWN0aXZlU2FuZGJveEZsYWdzKCkp
OwogCiAjaWYgUExBVEZPUk0oSU9TKQpAQCAtNDc2Myw3ICs0Nzc0LDcgQEAgdm9pZCBEb2N1bWVu
dDo6aW5pdFNlY3VyaXR5Q29udGV4dCgpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBt
X2Nvb2tpZVVSTCA9IG93bmVyRnJhbWUtPmRvY3VtZW50KCktPmNvb2tpZVVSTCgpOworICAgIHNl
dENvb2tpZVVSTChvd25lckZyYW1lLT5kb2N1bWVudCgpLT5jb29raWVVUkwoKSk7CiAgICAgLy8g
V2UgYWxpYXMgdGhlIFNlY3VyaXR5T3JpZ2lucyB0byBtYXRjaCBGaXJlZm94LCBzZWUgQnVnIDE1
MzEzCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MzEz
CiAgICAgc2V0U2VjdXJpdHlPcmlnaW4ob3duZXJGcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlP
cmlnaW4oKSk7CkBAIC02MTc5LDYgKzYxOTAsMzIgQEAgdm9pZCBEb2N1bWVudDo6ZGlkQXNzb2Np
YXRlRm9ybUNvbnRyb2xzVGltZXJGaXJlZChUaW1lcjxEb2N1bWVudD4mIHRpbWVyKQogICAgIG1f
YXNzb2NpYXRlZEZvcm1Db250cm9scy5jbGVhcigpOwogfQogCit2b2lkIERvY3VtZW50OjpzZXRE
T01Db29raWVDYWNoZShjb25zdCBTdHJpbmcmIGNvb2tpZXMpCit7CisgICAgQVNTRVJUKCFpc0RP
TUNvb2tpZUNhY2hlVmFsaWQoKSk7CisgICAgbV9ET01Db29raWVDYWNoZSA9IGNvb2tpZXM7Cisg
ICAgLy8gVGhlIGNvb2tpZSBjYWNoZSBpcyB2YWxpZCB1bnRpbCB3ZSBnbyBiYWNrIHRvIHRoZSBl
dmVudCBsb29wLgorICAgIG1fY29va2llQ2FjaGVFeHBpcnlUaW1lci5zdGFydE9uZVNob3QoMCk7
Cit9CisKK3ZvaWQgRG9jdW1lbnQ6OmludmFsaWRhdGVET01Db29raWVDYWNoZSgpCit7CisgICAg
bV9jb29raWVDYWNoZUV4cGlyeVRpbWVyLnN0b3AoKTsKKyAgICBtX0RPTUNvb2tpZUNhY2hlID0g
U3RyaW5nKCk7Cit9CisKK3ZvaWQgRG9jdW1lbnQ6OmRvbUNvb2tpZUNhY2hlRXhwaXJ5VGltZXJG
aXJlZChUaW1lcjxEb2N1bWVudD4mKQoreworICAgIGludmFsaWRhdGVET01Db29raWVDYWNoZSgp
OworfQorCit2b2lkIERvY3VtZW50OjpkaWRMb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0
IFJlc291cmNlUmVxdWVzdCYpCit7CisgICAgLy8gU3luY2hyb25vdXMgcmVzb3VyY2VzIGxvYWRp
bmcgY2FuIHNldCBjb29raWVzIHNvIHdlIGludmFsaWRhdGUgdGhlIGNvb2tpZXMgY2FjaGUKKyAg
ICAvLyBpbiB0aGlzIGNhc2UsIHRvIGJlIHNhZmUuCisgICAgaW52YWxpZGF0ZURPTUNvb2tpZUNh
Y2hlKCk7Cit9CisKIHZvaWQgRG9jdW1lbnQ6OmVuc3VyZVBsdWdJbnNJbmplY3RlZFNjcmlwdChE
T01XcmFwcGVyV29ybGQmIHdvcmxkKQogewogICAgIGlmIChtX2hhc0luamVjdGVkUGx1Z0luc1Nj
cmlwdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggYzQyZDQ0MmM2MjhhZjJlNzUzYWJkZTUyY2Y3
YWVlMWJiNzg0ZDA0Zi4uNzE4OWU0YmIxNDJhNmE3ZjE4YTQ0NWI5YzZkMWJhNGMwMmUyNDA1NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTg4NCw3ICs4ODQsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXRUaXRsZUVsZW1lbnQoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYsIEVsZW1lbnQqIHRp
dGxlRWxlbWVudCk7CiAgICAgdm9pZCByZW1vdmVUaXRsZShFbGVtZW50KiB0aXRsZUVsZW1lbnQp
OwogCi0gICAgU3RyaW5nIGNvb2tpZShFeGNlcHRpb25Db2RlJikgY29uc3Q7CisgICAgU3RyaW5n
IGNvb2tpZShFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBzZXRDb29raWUoY29uc3QgU3RyaW5n
JiwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgU3RyaW5nIHJlZmVycmVyKCkgY29uc3Q7CkBAIC05
MDcsNyArOTA3LDcgQEAgcHVibGljOgogICAgIC8vICAgIGluaGVyaXRzIGl0cyBjb29raWVVUkwg
YnV0IG5vdCBpdHMgVVJMLgogICAgIC8vCiAgICAgY29uc3QgVVJMJiBjb29raWVVUkwoKSBjb25z
dCB7IHJldHVybiBtX2Nvb2tpZVVSTDsgfQotICAgIHZvaWQgc2V0Q29va2llVVJMKGNvbnN0IFVS
TCYgdXJsKSB7IG1fY29va2llVVJMID0gdXJsOyB9CisgICAgdm9pZCBzZXRDb29raWVVUkwoY29u
c3QgVVJMJik7CiAKICAgICAvLyBUaGUgZmlyc3RQYXJ0eUZvckNvb2tpZXMgaXMgdXNlZCB0byBj
b21wdXRlIHdoZXRoZXIgdGhpcyBkb2N1bWVudAogICAgIC8vIGFwcGVhcnMgaW4gYSAidGhpcmQt
cGFydHkiIGNvbnRleHQgZm9yIHRoZSBwdXJwb3NlIG9mIHRoaXJkLXBhcnR5CkBAIC0xMzY3LDYg
KzEzNjcsMTQgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZGlkQXNzb2NpYXRlRm9ybUNvbnRyb2xz
VGltZXJGaXJlZChUaW1lcjxEb2N1bWVudD4mKTsKIAorICAgIC8vIERPTSBDb29raWVzIGNhY2hp
bmcuCisgICAgY29uc3QgU3RyaW5nJiBkb21Db29raWVDYWNoZSgpIGNvbnN0IHsgcmV0dXJuIG1f
RE9NQ29va2llQ2FjaGU7IH0KKyAgICB2b2lkIHNldERPTUNvb2tpZUNhY2hlKGNvbnN0IFN0cmlu
ZyYpOworICAgIGJvb2wgaXNET01Db29raWVDYWNoZVZhbGlkKCkgY29uc3QgeyByZXR1cm4gbV9j
b29raWVDYWNoZUV4cGlyeVRpbWVyLmlzQWN0aXZlKCk7IH0KKyAgICB2b2lkIGludmFsaWRhdGVE
T01Db29raWVDYWNoZSgpOworICAgIHZvaWQgZG9tQ29va2llQ2FjaGVFeHBpcnlUaW1lckZpcmVk
KFRpbWVyPERvY3VtZW50PiYpOworICAgIHZvaWQgZGlkTG9hZFJlc291cmNlU3luY2hyb25vdXNs
eShjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSBvdmVycmlkZSBmaW5hbDsKKwogICAgIHVuc2lnbmVk
IG1fcmVmZXJlbmNpbmdOb2RlQ291bnQ7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U3R5bGVSZXNv
bHZlcj4gbV9zdHlsZVJlc29sdmVyOwpAQCAtMTY5OSw2ICsxNzA3LDggQEAgcHJpdmF0ZToKICNl
bmRpZgogCiAgICAgVGltZXI8RG9jdW1lbnQ+IG1fZGlkQXNzb2NpYXRlRm9ybUNvbnRyb2xzVGlt
ZXI7CisgICAgVGltZXI8RG9jdW1lbnQ+IG1fY29va2llQ2FjaGVFeHBpcnlUaW1lcjsKKyAgICBT
dHJpbmcgbV9ET01Db29raWVDYWNoZTsKICAgICBIYXNoU2V0PFJlZlB0cjxFbGVtZW50Pj4gbV9h
c3NvY2lhdGVkRm9ybUNvbnRyb2xzOwogICAgIHVuc2lnbmVkIG1fZGlzYWJsZWRGaWVsZHNldEVs
ZW1lbnRzQ291bnQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVj
dXRpb25Db250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250
ZXh0LmNwcAppbmRleCA1MGE4NGM3Nzk0ODFiOThlN2I3ZmExM2M2YWFiZWVhY2I5ZGJmMDY4Li4y
ODJjMGZmZmY4YjZiNDY5YjhiY2U4MjlmMmVjMjYyNDRjZDRlZmJiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCkBAIC0xNzIsNiArMTcyLDEwIEBA
IHZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6ZGVzdHJveWVkTWVzc2FnZVBvcnQoTWVzc2Fn
ZVBvcnQmIG1lc3NhZ2VQb3J0KQogICAgIG1fbWVzc2FnZVBvcnRzLnJlbW92ZSgmbWVzc2FnZVBv
cnQpOwogfQogCit2b2lkIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmRpZExvYWRSZXNvdXJjZVN5
bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JikKK3sKK30KKwogYm9vbCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpjYW5TdXNwZW5kQWN0aXZlRE9NT2JqZWN0cygpCiB7CiAgICAgY2hl
Y2tDb25zaXN0ZW5jeSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250
ZXh0LmgKaW5kZXggZGFkZDlhYTE5NjZhMTk3OTg1MWFmYzA2MTBjMTljZWZmOWYxMmVlOS4uMDAw
NTdmM2UxZDEzZWJhNGZjOWRjN2FhYWVlMzAzNTljNzY5YTBlMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNs
dWRlICJBY3RpdmVET01PYmplY3QuaCIKICNpbmNsdWRlICJET01UaW1lci5oIgorI2luY2x1ZGUg
IlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlNjaGVkdWxlZEFjdGlvbi5oIgogI2luY2x1
ZGUgIlNlY3VyaXR5Q29udGV4dC5oIgogI2luY2x1ZGUgIlN1cHBsZW1lbnRhYmxlLmgiCkBAIC0x
MTAsNiArMTExLDggQEAgcHVibGljOgogICAgIHZvaWQgY3JlYXRlZE1lc3NhZ2VQb3J0KE1lc3Nh
Z2VQb3J0Jik7CiAgICAgdm9pZCBkZXN0cm95ZWRNZXNzYWdlUG9ydChNZXNzYWdlUG9ydCYpOwog
CisgICAgdmlydHVhbCB2b2lkIGRpZExvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0Jik7CisKICAgICB2b2lkIHJlZigpIHsgcmVmU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpOyB9CiAgICAgdm9pZCBkZXJlZigpIHsgZGVyZWZTY3JpcHRFeGVjdXRpb25Db250ZXh0
KCk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2Fk
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4
IDJlOGMyYmZmN2FjMGMwM2ZjYTUwZTc2NDgxMzBjYTI0ZjBiOGNlYTQuLjc3NTcxZjM1Nzk1YmU4
ODdiZjhhYzBhODgxM2NkMTNiMGI0NmY5MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9UaHJlYWRhYmxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhy
ZWFkYWJsZUxvYWRlci5jcHAKQEAgLTY2LDEyICs2NiwxMSBAQCB2b2lkIFRocmVhZGFibGVMb2Fk
ZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dAogewogICAgIEFTU0VSVChjb250ZXh0KTsKIAotICAgIGlmIChjb250ZXh0LT5pc1dvcmtl
ckdsb2JhbFNjb3BlKCkpIHsKKyAgICBpZiAoY29udGV4dC0+aXNXb3JrZXJHbG9iYWxTY29wZSgp
KQogICAgICAgICBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91
c2x5KHRvV29ya2VyR2xvYmFsU2NvcGUoY29udGV4dCksIHJlcXVlc3QsIGNsaWVudCwgb3B0aW9u
cyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBEb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoKmRvd25jYXN0PERvY3VtZW50Pihjb250ZXh0
KSwgcmVxdWVzdCwgY2xpZW50LCBvcHRpb25zKTsKKyAgICBlbHNlCisgICAgICAgIERvY3VtZW50
VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseSgqZG93bmNhc3Q8RG9j
dW1lbnQ+KGNvbnRleHQpLCByZXF1ZXN0LCBjbGllbnQsIG9wdGlvbnMpOworICAgIGNvbnRleHQt
PmRpZExvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkocmVxdWVzdCk7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwppbmRleCA1OWFiMWE2N2FhOTc4Y2I0OTY5NjA1ZWJmOTVjZjlkZTgzNzU2
Y2IyLi4wZGJiNjJjZjU4MDU3OGViMjc4MzBiNWE3OTI5OGQyZWEwNGQ0OGQwIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTYgQEAKKzIwMTQtMDktMzAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4K
KworICAgICAgICBBZGQgYmFzaWMgY2FjaGluZyBmb3IgRG9jdW1lbnQuY29va2llIEFQSQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3MjI1CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgbGF5b3V0
IHRlc3QgdG8gbWFrZSBzdXJlIHRoYXQgZG9jdW1lbnQuY29va2llIHJldHVybnMgdXBkYXRlZAor
ICAgICAgICByZXN1bHRzIGFmdGVyIGNvb2tpZXMgYXJlIHNldCB2aWEgYSBzeW5jIFhIUi4KKwor
ICAgICAgICAqIGh0dHAvdGVzdHMvY29va2llcy9zeW5jLXhoci1zZXQtY29va2llLWludmFsaWRh
dGVzLWNhY2hlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9jb29r
aWVzL3N5bmMteGhyLXNldC1jb29raWUtaW52YWxpZGF0ZXMtY2FjaGUuaHRtbDogQWRkZWQuCisK
IDIwMTQtMDgtMDEgIFNlcmdpbyBWaWxsYXIgU2VuaW4gIDxzdmlsbGFyQGlnYWxpYS5jb20+CiAK
ICAgICAgICAgQ2FyZXQgbm90IHNob3duIGF0IHRoZSBlbmQgb2YgbGluZSBpbiBvdmVydHlwZSBt
b2RlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nvb2tpZXMvc3luYy14aHIt
c2V0LWNvb2tpZS1pbnZhbGlkYXRlcy1jYWNoZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2Nvb2tpZXMvc3luYy14aHItc2V0LWNvb2tpZS1pbnZhbGlkYXRlcy1jYWNoZS1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjZhYTZiYmY5OWUzZGMwNzRlNTZkYjRjOTc4ZmM3MTA5
NmJkZjJkNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY29va2ll
cy9zeW5jLXhoci1zZXQtY29va2llLWludmFsaWRhdGVzLWNhY2hlLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDEyIEBACitUZXN0cyB0aGF0IGRvY3VtZW50LmNvb2tpZSByZXR1cm5zIHRoZSByaWdo
dCB2YWx1ZSBhZnRlciBhIHN5bmMgWEhSCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKwor
CitQQVNTIG5vcm1hbGl6ZUNvb2tpZShkb2N1bWVudC5jb29raWUpIGlzICJ0ZXN0S2V5PXRlc3RW
YWx1ZSIKK1BBU1MgeGhyLnN0YXR1cyBpcyAyMDAKK1BBU1Mgbm9ybWFsaXplQ29va2llKGRvY3Vt
ZW50LmNvb2tpZSkgaXMgInRlc3RLZXk9dGVzdFZhbHVlOyB4aHJLZXk9eGhyVmFsdWUiCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb29raWVzL3N5bmMteGhyLXNldC1jb29raWUtaW52
YWxpZGF0ZXMtY2FjaGUuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY29va2llcy9zeW5j
LXhoci1zZXQtY29va2llLWludmFsaWRhdGVzLWNhY2hlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTdhYjU4
NzFiYzVkNmU2NTc3NjUyOTE5MWEyZTVmOWYxZmMwNTUyNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvY29va2llcy9zeW5jLXhoci1zZXQtY29va2llLWludmFsaWRh
dGVzLWNhY2hlLmh0bWwKQEAgLTAsMCArMSwxOCBAQAorPCFET0NUWVBFIGh0bWw+Cis8c2NyaXB0
IHNyYz0ncmVzb3VyY2VzL2Nvb2tpZXMtdGVzdC1wcmUuanMnPjwvc2NyaXB0PgorCis8c2NyaXB0
PgorZGVzY3JpcHRpb24oJ1Rlc3RzIHRoYXQgZG9jdW1lbnQuY29va2llIHJldHVybnMgdGhlIHJp
Z2h0IHZhbHVlIGFmdGVyIGEgc3luYyBYSFInKTsKKworZG9jdW1lbnQuY29va2llID0gInRlc3RL
ZXk9dGVzdFZhbHVlIjsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygnbm9ybWFsaXplQ29va2llKGRv
Y3VtZW50LmNvb2tpZSknLCAndGVzdEtleT10ZXN0VmFsdWUnKTsKK3ZhciB4aHIgPSBuZXcgWE1M
SHR0cFJlcXVlc3QoKTsKK3hoci5vcGVuKCdHRVQnLCAncmVzb3VyY2VzL3NldENvb2tpZXMuY2dp
JywgZmFsc2UpOworeGhyLnNldFJlcXVlc3RIZWFkZXIoJ1NFVC1DT09LSUUnLCAneGhyS2V5PXho
clZhbHVlOyBwYXRoPS8nKTsKK3hoci5zZW5kKCk7CisKK3Nob3VsZEJlKCd4aHIuc3RhdHVzJywg
JzIwMCcpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdub3JtYWxpemVDb29raWUoZG9jdW1lbnQu
Y29va2llKScsICd0ZXN0S2V5PXRlc3RWYWx1ZTsgeGhyS2V5PXhoclZhbHVlJyk7CisKKzwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9J3Jlc291cmNlcy9jb29raWVzLXRlc3QtcG9zdC5qcyc+PC9zY3Jp
cHQ+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>238977</attachid>
            <date>2014-09-30 16:56:38 -0700</date>
            <delta_ts>2014-10-01 15:42:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137225-20140930165639.patch</filename>
            <type>text/plain</type>
            <size>14420</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0MTM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDllNWUzNzE1YWM2ZDE3
OThkOTIzY2M4MTM2YzdkODBlMjQ4NjY1ZC4uZTQ0YjFjNThkY2I2ZmNmYTg0Nzg2N2VmODE2NDVk
MjRiM2JhZWM2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDE0LTA5LTMwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGJhc2ljIGNhY2hpbmcg
Zm9yIERvY3VtZW50LmNvb2tpZSBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEzNzIyNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFdoaWxlIHByb2ZpbGluZyB0aGUgbG9hZCBvZiBueXRpbWVzLmNvbSwg
SSBub3RpY2VkIHRoYXQgdGhlIHNpdGUgaXMKKyAgICAgICAgYWNjZXNzaW5nIH4yNTAgdGltZXMg
ZG9jdW1lbnQuY29va2llLCBqdXN0IGR1cmluZyBwYWdlIGxvYWQuIEFjY2Vzc2luZworICAgICAg
ICBkb2N1bWVudC5jb29raWUgaXMgY3VycmVudGx5IHNsb3cgYmVjYXVzZSB3ZToKKyAgICAgICAg
LSBDYWxsIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29va2llc0ZvckRPTSgpIHZpcnR1YWwgZnVu
Y3Rpb24KKyAgICAgICAgLSBTZW5kIGEgc3luYyBJUEMgbWVzc2FnZSB0byB0aGUgTmV0d29yayBw
cm9jZXNzIHRvIHJldHJpZXZlIHRoZQorICAgICAgICAgIGNvb2tpZXMKKyAgICAgICAgICAgIC0g
VGhlIE5ldHdvcmsgcHJvY2VzcyBnZXRzIHRoZSBsaXN0IG9mIGNvb2tpZXMgZnJvbSBDRk5ldHdv
cmsgdGhlbgorICAgICAgICAgICAgICBzZXJpYWxpemVzIHRoZSByZXN1bHQgdG8gc2VuZCBpdCBi
YWNrIHRvIHRoZSBXZWJQcm9jZXNzCisgICAgICAgIC0gV2UgdW5zZXJpYWxpemUgdGhlIGNvb2tp
ZXMgaW50byBhbiBOU0xpc3Qgb2YgY29va2llcworICAgICAgICAtIFdlIGZpbHRlci1vdXQgdGhl
IGNvb2tpZXMgdGhhdCBhcmUgJ2h0dHBPbmx5JyBhbmQgY29uc3RydWN0IGEgbmV3CisgICAgICAg
ICAgTlNMaXN0IG9mIGNvb2tpZXMKKyAgICAgICAgLSBXZSBjcmVhdGUgYSBXVEYgU3RyaW5nIG91
dCBvZiB0aGUgY29va2llcyBOU0xpc3QKKworICAgICAgICBJbiB0aGUgY2FzZSBvZiBueXRpbWVz
LmNvbSwgaXQgdHVybnMgb3V0IHRoYXQgdXAgdG8gMTAwIGNhbGxzIHRvCisgICAgICAgIGRvY3Vt
ZW50LmNvb2tpZSgpIGFyZSBtYWRlIGluIHRoZSBzYW1lIGV2ZW50IGxvb3AgaXRlcmF0aW9uLiBU
aGlzIHBhdGNoCisgICAgICAgIHRodXMgY2FjaGVzIC8gZnJlZXplcyB0aGUgY29va2llcyB1bnRp
bCB3ZSByZXR1cm4gdG8gdGhlIGV2ZW50CisgICAgICAgIGxvb3Agc28gdGhhdCBjb25zZWN1dGl2
ZSBjYWxscyB0byBkb2N1bWVudC5jb29raWUoKSBhcmUgZXh0cmVtZWx5IGZhc3QuCisgICAgICAg
IERvaW5nIHNvIHNlZW1zIHRvIGJlIHN1ZmZpY2llbnQgdG8gYWNoaWV2ZSBhIH43NiUgY2FjaGUg
aGl0IGZvciBueXRpbWVzLmNvbS4KKworICAgICAgICBUaGUgY29va2llcyBjYWNoZSBpcyBpbnZh
bGlkYXRlZCB3aGVuZXZlcjoKKyAgICAgICAgLSBkb2N1bWVudC5jb29raWUgaXMgc2V0CisgICAg
ICAgIC0gd2UgcmV0dXJuIHRvIHRoZSBldmVudCBsb29wCisgICAgICAgIC0gYSBuZXR3b3JrIHJl
c291cmNlIGlzIGxvYWRlZCBzeW5jaHJvbm91c2x5IGFzIGl0IG1heSBjYXVzZSBjb29raWVzIHRv
CisgICAgICAgICAgYmUgc2V0IGJlZm9yZSB3ZSByZXR1cm4gdG8gdGhlIGV2ZW50IGxvb3AKKwor
ICAgICAgICBUZXN0OiBodHRwL3Rlc3RzL2Nvb2tpZXMvc3luYy14aHItc2V0LWNvb2tpZS1pbnZh
bGlkYXRlcy1jYWNoZS5odG1sCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OkRvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50OjpvcGVuKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpjb29raWUpOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNldENvb2tpZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudDo6c2V0Q29va2llVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojppbml0U2Vj
dXJpdHlDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzZXRET01Db29raWVD
YWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6aW52YWxpZGF0ZURPTUNvb2tpZUNh
Y2hlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpkb21Db29raWVDYWNoZUV4cGlyeVRp
bWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmRpZExvYWRSZXNvdXJjZVN5
bmNocm9ub3VzbHkpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnQ6OmRvbUNvb2tpZUNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
Ojppc0RPTUNvb2tpZUNhY2hlVmFsaWQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNl
dENvb2tpZVVSTCk6IERlbGV0ZWQuCisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6ZGlkTG9h
ZFJlc291cmNlU3luY2hyb25vdXNseSk6CisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQuaDoKKyAgICAgICAgKiBsb2FkZXIvVGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToK
KwogMjAxNC0wOS0zMCAgQ2hyaXN0b3BoZSBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAg
ICAgICAgVXNlIGlzPD4oKSAvIGRvd25jYXN0PD4oKSBmb3IgQ29udGFpbmVyTm9kZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAKaW5kZXggM2U4YWNiYzY2OTk4YmVjYjcxNTE4OTFiMTQwNWFjOWVkZTNl
NWZlMy4uNGVmNjJhNzI2NWI4YWY1M2ViMmQ3YjJmM2M4MjAyY2U1ZjJjZTY0MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCkBAIC01MTMsNiArNTEzLDcgQEAgRG9jdW1lbnQ6OkRvY3VtZW50KEZy
YW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwsIHVuc2lnbmVkIGRvY3VtZW50Q2xhc3NlcywgdW5z
aWcKICAgICAsIG1faW5wdXRDdXJzb3IoRW1wdHlJbnB1dEN1cnNvcjo6Y3JlYXRlKCkpCiAjZW5k
aWYKICAgICAsIG1fZGlkQXNzb2NpYXRlRm9ybUNvbnRyb2xzVGltZXIodGhpcywgJkRvY3VtZW50
OjpkaWRBc3NvY2lhdGVGb3JtQ29udHJvbHNUaW1lckZpcmVkKQorICAgICwgbV9jb29raWVDYWNo
ZUV4cGlyeVRpbWVyKHRoaXMsICZEb2N1bWVudDo6ZG9tQ29va2llQ2FjaGVFeHBpcnlUaW1lckZp
cmVkKQogICAgICwgbV9kaXNhYmxlZEZpZWxkc2V0RWxlbWVudHNDb3VudCgwKQogICAgICwgbV9o
YXNJbmplY3RlZFBsdWdJbnNTY3JpcHQoZmFsc2UpCiAgICAgLCBtX3JlbmRlclRyZWVCZWluZ0Rl
c3Ryb3llZChmYWxzZSkKQEAgLTIyNTYsNyArMjI1Nyw3IEBAIHZvaWQgRG9jdW1lbnQ6Om9wZW4o
RG9jdW1lbnQqIG93bmVyRG9jdW1lbnQpCiB7CiAgICAgaWYgKG93bmVyRG9jdW1lbnQpIHsKICAg
ICAgICAgc2V0VVJMKG93bmVyRG9jdW1lbnQtPnVybCgpKTsKLSAgICAgICAgbV9jb29raWVVUkwg
PSBvd25lckRvY3VtZW50LT5jb29raWVVUkwoKTsKKyAgICAgICAgc2V0Q29va2llVVJMKG93bmVy
RG9jdW1lbnQtPmNvb2tpZVVSTCgpKTsKICAgICAgICAgc2V0U2VjdXJpdHlPcmlnaW4ob3duZXJE
b2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKSk7CiAgICAgfQogCkBAIC0zODM1LDcgKzM4MzYsNyBA
QCBIVE1MRnJhbWVPd25lckVsZW1lbnQqIERvY3VtZW50Ojpvd25lckVsZW1lbnQoKSBjb25zdAog
ICAgIHJldHVybiBmcmFtZSgpLT5vd25lckVsZW1lbnQoKTsKIH0KIAotU3RyaW5nIERvY3VtZW50
Ojpjb29raWUoRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0CitTdHJpbmcgRG9jdW1lbnQ6OmNvb2tp
ZShFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBpZiAocGFnZSgpICYmICFwYWdlKCktPnNldHRp
bmdzKCkuY29va2llRW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CkBAIC0zODUz
LDcgKzM4NTQsMTAgQEAgU3RyaW5nIERvY3VtZW50Ojpjb29raWUoRXhjZXB0aW9uQ29kZSYgZWMp
IGNvbnN0CiAgICAgaWYgKGNvb2tpZVVSTC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBTdHJp
bmcoKTsKIAotICAgIHJldHVybiBjb29raWVzKHRoaXMsIGNvb2tpZVVSTCk7CisgICAgaWYgKCFp
c0RPTUNvb2tpZUNhY2hlVmFsaWQoKSkKKyAgICAgICAgc2V0RE9NQ29va2llQ2FjaGUoY29va2ll
cyh0aGlzLCBjb29raWVVUkwpKTsKKworICAgIHJldHVybiBkb21Db29raWVDYWNoZSgpOwogfQog
CiB2b2lkIERvY3VtZW50OjpzZXRDb29raWUoY29uc3QgU3RyaW5nJiB2YWx1ZSwgRXhjZXB0aW9u
Q29kZSYgZWMpCkBAIC0zODc0LDYgKzM4NzgsNyBAQCB2b2lkIERvY3VtZW50OjpzZXRDb29raWUo
Y29uc3QgU3RyaW5nJiB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgaWYgKGNvb2tpZVVS
TC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIGludmFsaWRhdGVET01Db29raWVD
YWNoZSgpOwogICAgIHNldENvb2tpZXModGhpcywgY29va2llVVJMLCB2YWx1ZSk7CiB9CiAKQEAg
LTM5NzcsNiArMzk4MiwxMiBAQCBTdHJpbmcgRG9jdW1lbnQ6Omxhc3RNb2RpZmllZCgpIGNvbnN0
CiAgICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCIlMDJkLyUwMmQvJTA0ZCAlMDJkOiUwMmQ6JTAy
ZCIsIGRhdGUubW9udGgoKSArIDEsIGRhdGUubW9udGhEYXkoKSwgZGF0ZS5mdWxsWWVhcigpLCBk
YXRlLmhvdXIoKSwgZGF0ZS5taW51dGUoKSwgZGF0ZS5zZWNvbmQoKSk7CiB9CiAKK3ZvaWQgRG9j
dW1lbnQ6OnNldENvb2tpZVVSTChjb25zdCBVUkwmIHVybCkKK3sKKyAgICBtX2Nvb2tpZVVSTCA9
IHVybDsKKyAgICBpbnZhbGlkYXRlRE9NQ29va2llQ2FjaGUoKTsKK30KKwogc3RhdGljIGJvb2wg
aXNWYWxpZE5hbWVOb25BU0NJSShjb25zdCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVu
Z3RoKQogewogICAgIGlmICghaXNWYWxpZE5hbWVTdGFydChjaGFyYWN0ZXJzWzBdKSkKQEAgLTQ2
ODksNyArNDcwMCw3IEBAIHZvaWQgRG9jdW1lbnQ6OmluaXRTZWN1cml0eUNvbnRleHQoKQogICAg
IGlmICghbV9mcmFtZSkgewogICAgICAgICAvLyBObyBzb3VyY2UgZm9yIGEgc2VjdXJpdHkgY29u
dGV4dC4KICAgICAgICAgLy8gVGhpcyBjYW4gb2NjdXIgdmlhIGRvY3VtZW50LmltcGxlbWVudGF0
aW9uLmNyZWF0ZURvY3VtZW50KCkuCi0gICAgICAgIG1fY29va2llVVJMID0gVVJMKFBhcnNlZFVS
TFN0cmluZywgZW1wdHlTdHJpbmcoKSk7CisgICAgICAgIHNldENvb2tpZVVSTChVUkwoUGFyc2Vk
VVJMU3RyaW5nLCBlbXB0eVN0cmluZygpKSk7CiAgICAgICAgIHNldFNlY3VyaXR5T3JpZ2luKFNl
Y3VyaXR5T3JpZ2luOjpjcmVhdGVVbmlxdWUoKSk7CiAgICAgICAgIHNldENvbnRlbnRTZWN1cml0
eVBvbGljeShzdGQ6Om1ha2VfdW5pcXVlPENvbnRlbnRTZWN1cml0eVBvbGljeT4odGhpcykpOwog
ICAgICAgICByZXR1cm47CkBAIC00Njk3LDcgKzQ3MDgsNyBAQCB2b2lkIERvY3VtZW50Ojppbml0
U2VjdXJpdHlDb250ZXh0KCkKIAogICAgIC8vIEluIHRoZSBjb21tb24gY2FzZSwgY3JlYXRlIHRo
ZSBzZWN1cml0eSBjb250ZXh0IGZyb20gdGhlIGN1cnJlbnRseQogICAgIC8vIGxvYWRpbmcgVVJM
IHdpdGggYSBmcmVzaCBjb250ZW50IHNlY3VyaXR5IHBvbGljeS4KLSAgICBtX2Nvb2tpZVVSTCA9
IG1fdXJsOworICAgIHNldENvb2tpZVVSTChtX3VybCk7CiAgICAgZW5mb3JjZVNhbmRib3hGbGFn
cyhtX2ZyYW1lLT5sb2FkZXIoKS5lZmZlY3RpdmVTYW5kYm94RmxhZ3MoKSk7CiAKICNpZiBQTEFU
Rk9STShJT1MpCkBAIC00NzYzLDcgKzQ3NzQsNyBAQCB2b2lkIERvY3VtZW50Ojppbml0U2VjdXJp
dHlDb250ZXh0KCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fY29va2llVVJMID0g
b3duZXJGcmFtZS0+ZG9jdW1lbnQoKS0+Y29va2llVVJMKCk7CisgICAgc2V0Q29va2llVVJMKG93
bmVyRnJhbWUtPmRvY3VtZW50KCktPmNvb2tpZVVSTCgpKTsKICAgICAvLyBXZSBhbGlhcyB0aGUg
U2VjdXJpdHlPcmlnaW5zIHRvIG1hdGNoIEZpcmVmb3gsIHNlZSBCdWcgMTUzMTMKICAgICAvLyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUzMTMKICAgICBzZXRTZWN1
cml0eU9yaWdpbihvd25lckZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpKTsKQEAg
LTYxNzksNiArNjE5MCwzMiBAQCB2b2lkIERvY3VtZW50OjpkaWRBc3NvY2lhdGVGb3JtQ29udHJv
bHNUaW1lckZpcmVkKFRpbWVyPERvY3VtZW50PiYgdGltZXIpCiAgICAgbV9hc3NvY2lhdGVkRm9y
bUNvbnRyb2xzLmNsZWFyKCk7CiB9CiAKK3ZvaWQgRG9jdW1lbnQ6OnNldERPTUNvb2tpZUNhY2hl
KGNvbnN0IFN0cmluZyYgY29va2llcykKK3sKKyAgICBBU1NFUlQoIWlzRE9NQ29va2llQ2FjaGVW
YWxpZCgpKTsKKyAgICBtX0RPTUNvb2tpZUNhY2hlID0gY29va2llczsKKyAgICAvLyBUaGUgY29v
a2llIGNhY2hlIGlzIHZhbGlkIHVudGlsIHdlIGdvIGJhY2sgdG8gdGhlIGV2ZW50IGxvb3AuCisg
ICAgbV9jb29raWVDYWNoZUV4cGlyeVRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKK30KKwordm9pZCBE
b2N1bWVudDo6aW52YWxpZGF0ZURPTUNvb2tpZUNhY2hlKCkKK3sKKyAgICBtX2Nvb2tpZUNhY2hl
RXhwaXJ5VGltZXIuc3RvcCgpOworICAgIG1fRE9NQ29va2llQ2FjaGUgPSBTdHJpbmcoKTsKK30K
Kwordm9pZCBEb2N1bWVudDo6ZG9tQ29va2llQ2FjaGVFeHBpcnlUaW1lckZpcmVkKFRpbWVyPERv
Y3VtZW50PiYpCit7CisgICAgaW52YWxpZGF0ZURPTUNvb2tpZUNhY2hlKCk7Cit9CisKK3ZvaWQg
RG9jdW1lbnQ6OmRpZExvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JikKK3sKKyAgICAvLyBTeW5jaHJvbm91cyByZXNvdXJjZXMgbG9hZGluZyBjYW4gc2V0IGNv
b2tpZXMgc28gd2UgaW52YWxpZGF0ZSB0aGUgY29va2llcyBjYWNoZQorICAgIC8vIGluIHRoaXMg
Y2FzZSwgdG8gYmUgc2FmZS4KKyAgICBpbnZhbGlkYXRlRE9NQ29va2llQ2FjaGUoKTsKK30KKwog
dm9pZCBEb2N1bWVudDo6ZW5zdXJlUGx1Z0luc0luamVjdGVkU2NyaXB0KERPTVdyYXBwZXJXb3Js
ZCYgd29ybGQpCiB7CiAgICAgaWYgKG1faGFzSW5qZWN0ZWRQbHVnSW5zU2NyaXB0KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuaAppbmRleCA5MmRkZmMyMDAyYTY1ODE5NjkzMzVkNzFkMDkxNmRkMDk3YmZmNjVm
Li5lYjYyZWMyYWU4Y2UzNjJkNTZmYzJlNjYwNmI5ZDQ3NmNlNWE4NjI2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuaApAQCAtODg0LDcgKzg4NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFRpdGxlRWxl
bWVudChjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJiwgRWxlbWVudCogdGl0bGVFbGVtZW50KTsK
ICAgICB2b2lkIHJlbW92ZVRpdGxlKEVsZW1lbnQqIHRpdGxlRWxlbWVudCk7CiAKLSAgICBTdHJp
bmcgY29va2llKEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKKyAgICBTdHJpbmcgY29va2llKEV4Y2Vw
dGlvbkNvZGUmKTsKICAgICB2b2lkIHNldENvb2tpZShjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25D
b2RlJik7CiAKICAgICBTdHJpbmcgcmVmZXJyZXIoKSBjb25zdDsKQEAgLTkwNyw3ICs5MDcsNyBA
QCBwdWJsaWM6CiAgICAgLy8gICAgaW5oZXJpdHMgaXRzIGNvb2tpZVVSTCBidXQgbm90IGl0cyBV
UkwuCiAgICAgLy8KICAgICBjb25zdCBVUkwmIGNvb2tpZVVSTCgpIGNvbnN0IHsgcmV0dXJuIG1f
Y29va2llVVJMOyB9Ci0gICAgdm9pZCBzZXRDb29raWVVUkwoY29uc3QgVVJMJiB1cmwpIHsgbV9j
b29raWVVUkwgPSB1cmw7IH0KKyAgICB2b2lkIHNldENvb2tpZVVSTChjb25zdCBVUkwmKTsKIAog
ICAgIC8vIFRoZSBmaXJzdFBhcnR5Rm9yQ29va2llcyBpcyB1c2VkIHRvIGNvbXB1dGUgd2hldGhl
ciB0aGlzIGRvY3VtZW50CiAgICAgLy8gYXBwZWFycyBpbiBhICJ0aGlyZC1wYXJ0eSIgY29udGV4
dCBmb3IgdGhlIHB1cnBvc2Ugb2YgdGhpcmQtcGFydHkKQEAgLTEzNjcsNiArMTM2NywxNCBAQCBw
cml2YXRlOgogCiAgICAgdm9pZCBkaWRBc3NvY2lhdGVGb3JtQ29udHJvbHNUaW1lckZpcmVkKFRp
bWVyPERvY3VtZW50PiYpOwogCisgICAgLy8gRE9NIENvb2tpZXMgY2FjaGluZy4KKyAgICBjb25z
dCBTdHJpbmcmIGRvbUNvb2tpZUNhY2hlKCkgY29uc3QgeyByZXR1cm4gbV9ET01Db29raWVDYWNo
ZTsgfQorICAgIHZvaWQgc2V0RE9NQ29va2llQ2FjaGUoY29uc3QgU3RyaW5nJik7CisgICAgYm9v
bCBpc0RPTUNvb2tpZUNhY2hlVmFsaWQoKSBjb25zdCB7IHJldHVybiBtX2Nvb2tpZUNhY2hlRXhw
aXJ5VGltZXIuaXNBY3RpdmUoKTsgfQorICAgIHZvaWQgaW52YWxpZGF0ZURPTUNvb2tpZUNhY2hl
KCk7CisgICAgdm9pZCBkb21Db29raWVDYWNoZUV4cGlyeVRpbWVyRmlyZWQoVGltZXI8RG9jdW1l
bnQ+Jik7CisgICAgdm9pZCBkaWRMb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291
cmNlUmVxdWVzdCYpIG92ZXJyaWRlIGZpbmFsOworCiAgICAgdW5zaWduZWQgbV9yZWZlcmVuY2lu
Z05vZGVDb3VudDsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxTdHlsZVJlc29sdmVyPiBtX3N0eWxl
UmVzb2x2ZXI7CkBAIC0xNjk5LDYgKzE3MDcsOCBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAgICBU
aW1lcjxEb2N1bWVudD4gbV9kaWRBc3NvY2lhdGVGb3JtQ29udHJvbHNUaW1lcjsKKyAgICBUaW1l
cjxEb2N1bWVudD4gbV9jb29raWVDYWNoZUV4cGlyeVRpbWVyOworICAgIFN0cmluZyBtX0RPTUNv
b2tpZUNhY2hlOwogICAgIEhhc2hTZXQ8UmVmUHRyPEVsZW1lbnQ+PiBtX2Fzc29jaWF0ZWRGb3Jt
Q29udHJvbHM7CiAgICAgdW5zaWduZWQgbV9kaXNhYmxlZEZpZWxkc2V0RWxlbWVudHNDb3VudDsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCmluZGV4
IGRjZWY1NzUyYjBkMDllZjllMjRlZDlhYjg4ZjQyOTU3YjljYjIxY2QuLmIyZGI1OTE5MGE3MGVh
OTFiNzM3NmZhN2FkMmQyNThkZDc5OWE2ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKQEAgLTE3Myw2ICsxNzMsMTAgQEAgdm9pZCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpkZXN0cm95ZWRNZXNzYWdlUG9ydChNZXNzYWdlUG9ydCYgbWVzc2Fn
ZVBvcnQpCiAgICAgbV9tZXNzYWdlUG9ydHMucmVtb3ZlKCZtZXNzYWdlUG9ydCk7CiB9CiAKK3Zv
aWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6ZGlkTG9hZFJlc291cmNlU3luY2hyb25vdXNseShj
b25zdCBSZXNvdXJjZVJlcXVlc3QmKQoreworfQorCiBib29sIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ6OmNhblN1c3BlbmRBY3RpdmVET01PYmplY3RzKCkKIHsKICAgICBjaGVja0NvbnNpc3RlbmN5
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAppbmRleCBm
Y2UxODA0NmYxNGVmOTIxMWNlYmI3YjRlNDkyY2FhNDQ3YmYyMTdmLi4zZWQyNzI4MGJkNWE5MDdi
ZGMzNTZhZGVkNmJhMjAzMmJkNjcxOWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRF
eGVjdXRpb25Db250ZXh0LmgKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkFjdGl2ZURP
TU9iamVjdC5oIgogI2luY2x1ZGUgIkRPTVRpbWVyLmgiCisjaW5jbHVkZSAiUmVzb3VyY2VSZXF1
ZXN0LmgiCiAjaW5jbHVkZSAiU2NoZWR1bGVkQWN0aW9uLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlD
b250ZXh0LmgiCiAjaW5jbHVkZSAiU3VwcGxlbWVudGFibGUuaCIKQEAgLTExMCw2ICsxMTEsOCBA
QCBwdWJsaWM6CiAgICAgdm9pZCBjcmVhdGVkTWVzc2FnZVBvcnQoTWVzc2FnZVBvcnQmKTsKICAg
ICB2b2lkIGRlc3Ryb3llZE1lc3NhZ2VQb3J0KE1lc3NhZ2VQb3J0Jik7CiAKKyAgICB2aXJ0dWFs
IHZvaWQgZGlkTG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
KTsKKwogICAgIHZvaWQgcmVmKCkgeyByZWZTY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0KICAg
ICB2b2lkIGRlcmVmKCkgeyBkZXJlZlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlci5jcHAKaW5kZXggZTNkY2RiNDg2ZjE5
ZTcxMDUzMmQ5MjA5Zjk1ZjY1OTcxZmUwMDQwNy4uZGE2NTBjNGQwYzYyYmE5Yzk1MDc4ZGQ3Zjkz
ZGQ4MDdiYTBkYjlhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFi
bGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVy
LmNwcApAQCAtNjYsMTIgKzY2LDExIEBAIHZvaWQgVGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291
cmNlU3luY2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0CiB7CiAgICAg
QVNTRVJUKGNvbnRleHQpOwogCi0gICAgaWYgKGlzPFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0
KSkgeworICAgIGlmIChpczxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkpCiAgICAgICAgIFdv
cmtlclRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoZG93bmNhc3Q8
V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpLCByZXF1ZXN0LCBjbGllbnQsIG9wdGlvbnMpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjps
b2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KCpkb3duY2FzdDxEb2N1bWVudD4oY29udGV4dCksIHJl
cXVlc3QsIGNsaWVudCwgb3B0aW9ucyk7CisgICAgZWxzZQorICAgICAgICBEb2N1bWVudFRocmVh
ZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoZG93bmNhc3Q8RG9jdW1lbnQ+
KCpjb250ZXh0KSwgcmVxdWVzdCwgY2xpZW50LCBvcHRpb25zKTsKKyAgICBjb250ZXh0LT5kaWRM
b2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KHJlcXVlc3QpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKaW5kZXggYTdkNzdmY2RiNzVkZjdjN2Q1NmFlMGIzZjRkZDRlMjM3ZDAzMjc1OC4u
MWY4ZjdlMDIwNjc4YjMxYjcyOThiYWE3OTFmZWE0ZTEwYmY4ODQ2MSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE2IEBACisyMDE0LTA5LTMwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAg
ICAgICAgQWRkIGJhc2ljIGNhY2hpbmcgZm9yIERvY3VtZW50LmNvb2tpZSBBUEkKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNzIyNQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIGxheW91dCB0ZXN0
IHRvIG1ha2Ugc3VyZSB0aGF0IGRvY3VtZW50LmNvb2tpZSByZXR1cm5zIHVwZGF0ZWQKKyAgICAg
ICAgcmVzdWx0cyBhZnRlciBjb29raWVzIGFyZSBzZXQgdmlhIGEgc3luYyBYSFIuCisKKyAgICAg
ICAgKiBodHRwL3Rlc3RzL2Nvb2tpZXMvc3luYy14aHItc2V0LWNvb2tpZS1pbnZhbGlkYXRlcy1j
YWNoZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvY29va2llcy9z
eW5jLXhoci1zZXQtY29va2llLWludmFsaWRhdGVzLWNhY2hlLmh0bWw6IEFkZGVkLgorCiAyMDE0
LTA5LTMwICBSb2dlciBGb25nICA8cm9nZXJfZm9uZ0BhcHBsZS5jb20+CiAKICAgICAgICAgWyBX
aW5kb3dzIF0gTW9yZSBXaW5kb3dzIHRlc3QgZ2FyZGVuaW5nIHRvIGdldCBib3RzIGdyZWVuLgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb29raWVzL3N5bmMteGhyLXNldC1j
b29raWUtaW52YWxpZGF0ZXMtY2FjaGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9jb29raWVzL3N5bmMteGhyLXNldC1jb29raWUtaW52YWxpZGF0ZXMtY2FjaGUtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmY2YWE2YmJmOTllM2RjMDc0ZTU2ZGI0Yzk3OGZjNzEwOTZiZGYy
ZDcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nvb2tpZXMvc3lu
Yy14aHItc2V0LWNvb2tpZS1pbnZhbGlkYXRlcy1jYWNoZS1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwxMiBAQAorVGVzdHMgdGhhdCBkb2N1bWVudC5jb29raWUgcmV0dXJucyB0aGUgcmlnaHQgdmFs
dWUgYWZ0ZXIgYSBzeW5jIFhIUgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFT
UyBub3JtYWxpemVDb29raWUoZG9jdW1lbnQuY29va2llKSBpcyAidGVzdEtleT10ZXN0VmFsdWUi
CitQQVNTIHhoci5zdGF0dXMgaXMgMjAwCitQQVNTIG5vcm1hbGl6ZUNvb2tpZShkb2N1bWVudC5j
b29raWUpIGlzICJ0ZXN0S2V5PXRlc3RWYWx1ZTsgeGhyS2V5PXhoclZhbHVlIgorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvY29va2llcy9zeW5jLXhoci1zZXQtY29va2llLWludmFsaWRh
dGVzLWNhY2hlLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nvb2tpZXMvc3luYy14aHIt
c2V0LWNvb2tpZS1pbnZhbGlkYXRlcy1jYWNoZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU3YWI1ODcxYmM1
ZDZlNjU3NzY1MjkxOTFhMmU1ZjlmMWZjMDU1MjUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2Nvb2tpZXMvc3luYy14aHItc2V0LWNvb2tpZS1pbnZhbGlkYXRlcy1j
YWNoZS5odG1sCkBAIC0wLDAgKzEsMTggQEAKKzwhRE9DVFlQRSBodG1sPgorPHNjcmlwdCBzcmM9
J3Jlc291cmNlcy9jb29raWVzLXRlc3QtcHJlLmpzJz48L3NjcmlwdD4KKworPHNjcmlwdD4KK2Rl
c2NyaXB0aW9uKCdUZXN0cyB0aGF0IGRvY3VtZW50LmNvb2tpZSByZXR1cm5zIHRoZSByaWdodCB2
YWx1ZSBhZnRlciBhIHN5bmMgWEhSJyk7CisKK2RvY3VtZW50LmNvb2tpZSA9ICJ0ZXN0S2V5PXRl
c3RWYWx1ZSI7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ25vcm1hbGl6ZUNvb2tpZShkb2N1bWVu
dC5jb29raWUpJywgJ3Rlc3RLZXk9dGVzdFZhbHVlJyk7Cit2YXIgeGhyID0gbmV3IFhNTEh0dHBS
ZXF1ZXN0KCk7Cit4aHIub3BlbignR0VUJywgJ3Jlc291cmNlcy9zZXRDb29raWVzLmNnaScsIGZh
bHNlKTsKK3hoci5zZXRSZXF1ZXN0SGVhZGVyKCdTRVQtQ09PS0lFJywgJ3hocktleT14aHJWYWx1
ZTsgcGF0aD0vJyk7Cit4aHIuc2VuZCgpOworCitzaG91bGRCZSgneGhyLnN0YXR1cycsICcyMDAn
KTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygnbm9ybWFsaXplQ29va2llKGRvY3VtZW50LmNvb2tp
ZSknLCAndGVzdEtleT10ZXN0VmFsdWU7IHhocktleT14aHJWYWx1ZScpOworCis8L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSdyZXNvdXJjZXMvY29va2llcy10ZXN0LXBvc3QuanMnPjwvc2NyaXB0Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>239059</attachid>
            <date>2014-10-01 15:42:06 -0700</date>
            <delta_ts>2014-10-01 16:05:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137225-20141001154207.patch</filename>
            <type>text/plain</type>
            <size>14534</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0MTc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWM4ZWIyNjY1ODQ0Y2Ux
OTU4ZDM1NmQ4YzI0YTEyMzJkZDdlNWQ5NS4uNWU2MTg5YjFhYTM0YTdkMzM3NjlhZmQwMmU3YThh
MmVmMzYwZDE4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDE0LTA5LTMwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGJhc2ljIGNhY2hpbmcg
Zm9yIERvY3VtZW50LmNvb2tpZSBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEzNzIyNQorCisgICAgICAgIFJldmlld2VkIGJ5IEFsZXhleSBQcm9z
a3VyeWFrb3YuCisKKyAgICAgICAgV2hpbGUgcHJvZmlsaW5nIHRoZSBsb2FkIG9mIG55dGltZXMu
Y29tLCBJIG5vdGljZWQgdGhhdCB0aGUgc2l0ZSBpcworICAgICAgICBhY2Nlc3NpbmcgfjI1MCB0
aW1lcyBkb2N1bWVudC5jb29raWUsIGp1c3QgZHVyaW5nIHBhZ2UgbG9hZC4gQWNjZXNzaW5nCisg
ICAgICAgIGRvY3VtZW50LmNvb2tpZSBpcyBjdXJyZW50bHkgc2xvdyBiZWNhdXNlIHdlOgorICAg
ICAgICAtIENhbGwgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29raWVzRm9yRE9NKCkgdmlydHVh
bCBmdW5jdGlvbgorICAgICAgICAtIFNlbmQgYSBzeW5jIElQQyBtZXNzYWdlIHRvIHRoZSBOZXR3
b3JrIHByb2Nlc3MgdG8gcmV0cmlldmUgdGhlCisgICAgICAgICAgY29va2llcworICAgICAgICAg
ICAgLSBUaGUgTmV0d29yayBwcm9jZXNzIGdldHMgdGhlIGxpc3Qgb2YgY29va2llcyBmcm9tIENG
TmV0d29yayB0aGVuCisgICAgICAgICAgICAgIHNlcmlhbGl6ZXMgdGhlIHJlc3VsdCB0byBzZW5k
IGl0IGJhY2sgdG8gdGhlIFdlYlByb2Nlc3MKKyAgICAgICAgLSBXZSB1bnNlcmlhbGl6ZSB0aGUg
Y29va2llcyBpbnRvIGFuIE5TTGlzdCBvZiBjb29raWVzCisgICAgICAgIC0gV2UgZmlsdGVyLW91
dCB0aGUgY29va2llcyB0aGF0IGFyZSAnaHR0cE9ubHknIGFuZCBjb25zdHJ1Y3QgYSBuZXcKKyAg
ICAgICAgICBOU0xpc3Qgb2YgY29va2llcworICAgICAgICAtIFdlIGNyZWF0ZSBhIFdURiBTdHJp
bmcgb3V0IG9mIHRoZSBjb29raWVzIE5TTGlzdAorCisgICAgICAgIEluIHRoZSBjYXNlIG9mIG55
dGltZXMuY29tLCBpdCB0dXJucyBvdXQgdGhhdCB1cCB0byAxMDAgY2FsbHMgdG8KKyAgICAgICAg
ZG9jdW1lbnQuY29va2llKCkgYXJlIG1hZGUgaW4gdGhlIHNhbWUgZXZlbnQgbG9vcCBpdGVyYXRp
b24uIFRoaXMgcGF0Y2gKKyAgICAgICAgdGh1cyBjYWNoZXMgLyBmcmVlemVzIHRoZSBjb29raWVz
IHVudGlsIHdlIHJldHVybiB0byB0aGUgZXZlbnQKKyAgICAgICAgbG9vcCBzbyB0aGF0IGNvbnNl
Y3V0aXZlIGNhbGxzIHRvIGRvY3VtZW50LmNvb2tpZSgpIGFyZSBleHRyZW1lbHkgZmFzdC4KKyAg
ICAgICAgRG9pbmcgc28gc2VlbXMgdG8gYmUgc3VmZmljaWVudCB0byBhY2hpZXZlIGEgfjg3JSBj
YWNoZSBoaXQgZm9yCisgICAgICAgIG55dGltZXMuY29tIHBhZ2UgbG9hZC4KKworICAgICAgICBU
aGUgY29va2llcyBjYWNoZSBpcyBpbnZhbGlkYXRlZCB3aGVuZXZlcjoKKyAgICAgICAgLSBkb2N1
bWVudC5jb29raWUgaXMgc2V0CisgICAgICAgIC0gd2UgcmV0dXJuIHRvIHRoZSBldmVudCBsb29w
CisgICAgICAgIC0gYSBuZXR3b3JrIHJlc291cmNlIGlzIGxvYWRlZCBzeW5jaHJvbm91c2x5IGFz
IGl0IG1heSBjYXVzZSBjb29raWVzIHRvCisgICAgICAgICAgYmUgc2V0IGJlZm9yZSB3ZSByZXR1
cm4gdG8gdGhlIGV2ZW50IGxvb3AKKworICAgICAgICBUZXN0OiBodHRwL3Rlc3RzL2Nvb2tpZXMv
c3luYy14aHItc2V0LWNvb2tpZS1pbnZhbGlkYXRlcy1jYWNoZS5odG1sCisKKyAgICAgICAgKiBk
b20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OkRvY3VtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpvcGVuKToKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50Ojpjb29raWUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNldENvb2tpZSk6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0Q29va2llVVJMKToKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50Ojppbml0U2VjdXJpdHlDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50OjpzZXRET01Db29raWVDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dDo6aW52YWxpZGF0ZURPTUNvb2tpZUNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
Ojpkb21Db29raWVDYWNoZUV4cGlyeVRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnQ6OmRpZExvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkpOgorICAgICAgICAqIGRvbS9Eb2N1
bWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmRvbUNvb2tpZUNhY2hlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojppc0RPTUNvb2tpZUNhY2hlVmFsaWQpOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNldENvb2tpZVVSTCk6IERlbGV0ZWQuCisgICAgICAgICog
ZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6ZGlkTG9hZFJlc291cmNlU3luY2hyb25vdXNseSk6CisgICAgICAg
ICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaDoKKyAgICAgICAgKiBsb2FkZXIvVGhyZWFk
YWJsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlTG9hZGVyOjpsb2Fk
UmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKwogMjAxNC0xMC0wMSAgWmFuIERvYmVyc2VrICA8emRv
YmVyc2VrQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1RleE1hcF0gU3ByaW5rbGUgcmFuZ2UtYmFz
ZWQgZm9yLWxvb3BzIGluIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLCBUZXh0dXJlTWFwcGVy
TGF5ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDNlOGFjYmM2Njk5OGJlY2I3MTUxODkx
YjE0MDVhYzllZGUzZTVmZTMuLmVhY2IwN2FlOTJiMTM2OTI5ODgzZGRlMTViOTNhMWVkZjk4NDY5
N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNTEzLDYgKzUxMyw3IEBAIERvY3VtZW50
OjpEb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJsLCB1bnNpZ25lZCBkb2N1bWVu
dENsYXNzZXMsIHVuc2lnCiAgICAgLCBtX2lucHV0Q3Vyc29yKEVtcHR5SW5wdXRDdXJzb3I6OmNy
ZWF0ZSgpKQogI2VuZGlmCiAgICAgLCBtX2RpZEFzc29jaWF0ZUZvcm1Db250cm9sc1RpbWVyKHRo
aXMsICZEb2N1bWVudDo6ZGlkQXNzb2NpYXRlRm9ybUNvbnRyb2xzVGltZXJGaXJlZCkKKyAgICAs
IG1fY29va2llQ2FjaGVFeHBpcnlUaW1lcih0aGlzLCAmRG9jdW1lbnQ6OmRvbUNvb2tpZUNhY2hl
RXhwaXJ5VGltZXJGaXJlZCkKICAgICAsIG1fZGlzYWJsZWRGaWVsZHNldEVsZW1lbnRzQ291bnQo
MCkKICAgICAsIG1faGFzSW5qZWN0ZWRQbHVnSW5zU2NyaXB0KGZhbHNlKQogICAgICwgbV9yZW5k
ZXJUcmVlQmVpbmdEZXN0cm95ZWQoZmFsc2UpCkBAIC0yMjU2LDcgKzIyNTcsNyBAQCB2b2lkIERv
Y3VtZW50OjpvcGVuKERvY3VtZW50KiBvd25lckRvY3VtZW50KQogewogICAgIGlmIChvd25lckRv
Y3VtZW50KSB7CiAgICAgICAgIHNldFVSTChvd25lckRvY3VtZW50LT51cmwoKSk7Ci0gICAgICAg
IG1fY29va2llVVJMID0gb3duZXJEb2N1bWVudC0+Y29va2llVVJMKCk7CisgICAgICAgIHNldENv
b2tpZVVSTChvd25lckRvY3VtZW50LT5jb29raWVVUkwoKSk7CiAgICAgICAgIHNldFNlY3VyaXR5
T3JpZ2luKG93bmVyRG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkpOwogICAgIH0KIApAQCAtMzgz
NSw3ICszODM2LDcgQEAgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBEb2N1bWVudDo6b3duZXJFbGVt
ZW50KCkgY29uc3QKICAgICByZXR1cm4gZnJhbWUoKS0+b3duZXJFbGVtZW50KCk7CiB9CiAKLVN0
cmluZyBEb2N1bWVudDo6Y29va2llKEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAorU3RyaW5nIERv
Y3VtZW50Ojpjb29raWUoRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKHBhZ2UoKSAmJiAh
cGFnZSgpLT5zZXR0aW5ncygpLmNvb2tpZUVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIFN0cmlu
ZygpOwpAQCAtMzg1Myw3ICszODU0LDEwIEBAIFN0cmluZyBEb2N1bWVudDo6Y29va2llKEV4Y2Vw
dGlvbkNvZGUmIGVjKSBjb25zdAogICAgIGlmIChjb29raWVVUkwuaXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm4gU3RyaW5nKCk7CiAKLSAgICByZXR1cm4gY29va2llcyh0aGlzLCBjb29raWVVUkwp
OworICAgIGlmICghaXNET01Db29raWVDYWNoZVZhbGlkKCkpCisgICAgICAgIHNldENhY2hlZERP
TUNvb2tpZXMoY29va2llcyh0aGlzLCBjb29raWVVUkwpKTsKKworICAgIHJldHVybiBjYWNoZWRE
T01Db29raWVzKCk7CiB9CiAKIHZvaWQgRG9jdW1lbnQ6OnNldENvb2tpZShjb25zdCBTdHJpbmcm
IHZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYykKQEAgLTM4NzQsNiArMzg3OCw3IEBAIHZvaWQgRG9j
dW1lbnQ6OnNldENvb2tpZShjb25zdCBTdHJpbmcmIHZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYykK
ICAgICBpZiAoY29va2llVVJMLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgaW52
YWxpZGF0ZURPTUNvb2tpZUNhY2hlKCk7CiAgICAgc2V0Q29va2llcyh0aGlzLCBjb29raWVVUkws
IHZhbHVlKTsKIH0KIApAQCAtMzk3Nyw2ICszOTgyLDE0IEBAIFN0cmluZyBEb2N1bWVudDo6bGFz
dE1vZGlmaWVkKCkgY29uc3QKICAgICByZXR1cm4gU3RyaW5nOjpmb3JtYXQoIiUwMmQvJTAyZC8l
MDRkICUwMmQ6JTAyZDolMDJkIiwgZGF0ZS5tb250aCgpICsgMSwgZGF0ZS5tb250aERheSgpLCBk
YXRlLmZ1bGxZZWFyKCksIGRhdGUuaG91cigpLCBkYXRlLm1pbnV0ZSgpLCBkYXRlLnNlY29uZCgp
KTsKIH0KIAordm9pZCBEb2N1bWVudDo6c2V0Q29va2llVVJMKGNvbnN0IFVSTCYgdXJsKQorewor
ICAgIGlmIChtX2Nvb2tpZVVSTCA9PSB1cmwpCisgICAgICAgIHJldHVybjsKKyAgICBtX2Nvb2tp
ZVVSTCA9IHVybDsKKyAgICBpbnZhbGlkYXRlRE9NQ29va2llQ2FjaGUoKTsKK30KKwogc3RhdGlj
IGJvb2wgaXNWYWxpZE5hbWVOb25BU0NJSShjb25zdCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWdu
ZWQgbGVuZ3RoKQogewogICAgIGlmICghaXNWYWxpZE5hbWVTdGFydChjaGFyYWN0ZXJzWzBdKSkK
QEAgLTQ2ODksNyArNDcwMiw3IEBAIHZvaWQgRG9jdW1lbnQ6OmluaXRTZWN1cml0eUNvbnRleHQo
KQogICAgIGlmICghbV9mcmFtZSkgewogICAgICAgICAvLyBObyBzb3VyY2UgZm9yIGEgc2VjdXJp
dHkgY29udGV4dC4KICAgICAgICAgLy8gVGhpcyBjYW4gb2NjdXIgdmlhIGRvY3VtZW50LmltcGxl
bWVudGF0aW9uLmNyZWF0ZURvY3VtZW50KCkuCi0gICAgICAgIG1fY29va2llVVJMID0gVVJMKFBh
cnNlZFVSTFN0cmluZywgZW1wdHlTdHJpbmcoKSk7CisgICAgICAgIHNldENvb2tpZVVSTChVUkwo
UGFyc2VkVVJMU3RyaW5nLCBlbXB0eVN0cmluZygpKSk7CiAgICAgICAgIHNldFNlY3VyaXR5T3Jp
Z2luKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVVbmlxdWUoKSk7CiAgICAgICAgIHNldENvbnRlbnRT
ZWN1cml0eVBvbGljeShzdGQ6Om1ha2VfdW5pcXVlPENvbnRlbnRTZWN1cml0eVBvbGljeT4odGhp
cykpOwogICAgICAgICByZXR1cm47CkBAIC00Njk3LDcgKzQ3MTAsNyBAQCB2b2lkIERvY3VtZW50
Ojppbml0U2VjdXJpdHlDb250ZXh0KCkKIAogICAgIC8vIEluIHRoZSBjb21tb24gY2FzZSwgY3Jl
YXRlIHRoZSBzZWN1cml0eSBjb250ZXh0IGZyb20gdGhlIGN1cnJlbnRseQogICAgIC8vIGxvYWRp
bmcgVVJMIHdpdGggYSBmcmVzaCBjb250ZW50IHNlY3VyaXR5IHBvbGljeS4KLSAgICBtX2Nvb2tp
ZVVSTCA9IG1fdXJsOworICAgIHNldENvb2tpZVVSTChtX3VybCk7CiAgICAgZW5mb3JjZVNhbmRi
b3hGbGFncyhtX2ZyYW1lLT5sb2FkZXIoKS5lZmZlY3RpdmVTYW5kYm94RmxhZ3MoKSk7CiAKICNp
ZiBQTEFURk9STShJT1MpCkBAIC00NzYzLDcgKzQ3NzYsNyBAQCB2b2lkIERvY3VtZW50Ojppbml0
U2VjdXJpdHlDb250ZXh0KCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fY29va2ll
VVJMID0gb3duZXJGcmFtZS0+ZG9jdW1lbnQoKS0+Y29va2llVVJMKCk7CisgICAgc2V0Q29va2ll
VVJMKG93bmVyRnJhbWUtPmRvY3VtZW50KCktPmNvb2tpZVVSTCgpKTsKICAgICAvLyBXZSBhbGlh
cyB0aGUgU2VjdXJpdHlPcmlnaW5zIHRvIG1hdGNoIEZpcmVmb3gsIHNlZSBCdWcgMTUzMTMKICAg
ICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUzMTMKICAgICBz
ZXRTZWN1cml0eU9yaWdpbihvd25lckZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigp
KTsKQEAgLTYxNzksNiArNjE5MiwzMiBAQCB2b2lkIERvY3VtZW50OjpkaWRBc3NvY2lhdGVGb3Jt
Q29udHJvbHNUaW1lckZpcmVkKFRpbWVyPERvY3VtZW50PiYgdGltZXIpCiAgICAgbV9hc3NvY2lh
dGVkRm9ybUNvbnRyb2xzLmNsZWFyKCk7CiB9CiAKK3ZvaWQgRG9jdW1lbnQ6OnNldENhY2hlZERP
TUNvb2tpZXMoY29uc3QgU3RyaW5nJiBjb29raWVzKQoreworICAgIEFTU0VSVCghaXNET01Db29r
aWVDYWNoZVZhbGlkKCkpOworICAgIG1fY2FjaGVkRE9NQ29va2llcyA9IGNvb2tpZXM7CisgICAg
Ly8gVGhlIGNvb2tpZSBjYWNoZSBpcyB2YWxpZCBhdCBtb3N0IHVudGlsIHdlIGdvIGJhY2sgdG8g
dGhlIGV2ZW50IGxvb3AuCisgICAgbV9jb29raWVDYWNoZUV4cGlyeVRpbWVyLnN0YXJ0T25lU2hv
dCgwKTsKK30KKwordm9pZCBEb2N1bWVudDo6aW52YWxpZGF0ZURPTUNvb2tpZUNhY2hlKCkKK3sK
KyAgICBtX2Nvb2tpZUNhY2hlRXhwaXJ5VGltZXIuc3RvcCgpOworICAgIG1fY2FjaGVkRE9NQ29v
a2llcyA9IFN0cmluZygpOworfQorCit2b2lkIERvY3VtZW50Ojpkb21Db29raWVDYWNoZUV4cGly
eVRpbWVyRmlyZWQoVGltZXI8RG9jdW1lbnQ+JikKK3sKKyAgICBpbnZhbGlkYXRlRE9NQ29va2ll
Q2FjaGUoKTsKK30KKwordm9pZCBEb2N1bWVudDo6ZGlkTG9hZFJlc291cmNlU3luY2hyb25vdXNs
eShjb25zdCBSZXNvdXJjZVJlcXVlc3QmKQoreworICAgIC8vIFN5bmNocm9ub3VzIHJlc291cmNl
cyBsb2FkaW5nIGNhbiBzZXQgY29va2llcyBzbyB3ZSBpbnZhbGlkYXRlIHRoZSBjb29raWVzIGNh
Y2hlCisgICAgLy8gaW4gdGhpcyBjYXNlLCB0byBiZSBzYWZlLgorICAgIGludmFsaWRhdGVET01D
b29raWVDYWNoZSgpOworfQorCiB2b2lkIERvY3VtZW50OjplbnN1cmVQbHVnSW5zSW5qZWN0ZWRT
Y3JpcHQoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKIHsKICAgICBpZiAobV9oYXNJbmplY3RlZFBs
dWdJbnNTY3JpcHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDNhOTg0MjZhMDYxNzBjODY0ZTk3
NGU4NDU5MWMyNjE2MjcwNDQwMzAuLjE1NmFmZDBmZDMzOWQ1YWUxMTRhN2FjY2E3ZDIxNDUyNzAz
MTMwMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC04ODQsNyArODg0LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0VGl0bGVFbGVtZW50KGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mLCBFbGVt
ZW50KiB0aXRsZUVsZW1lbnQpOwogICAgIHZvaWQgcmVtb3ZlVGl0bGUoRWxlbWVudCogdGl0bGVF
bGVtZW50KTsKIAotICAgIFN0cmluZyBjb29raWUoRXhjZXB0aW9uQ29kZSYpIGNvbnN0OworICAg
IFN0cmluZyBjb29raWUoRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgc2V0Q29va2llKGNvbnN0
IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIFN0cmluZyByZWZlcnJlcigpIGNvbnN0
OwpAQCAtOTA3LDcgKzkwNyw3IEBAIHB1YmxpYzoKICAgICAvLyAgICBpbmhlcml0cyBpdHMgY29v
a2llVVJMIGJ1dCBub3QgaXRzIFVSTC4KICAgICAvLwogICAgIGNvbnN0IFVSTCYgY29va2llVVJM
KCkgY29uc3QgeyByZXR1cm4gbV9jb29raWVVUkw7IH0KLSAgICB2b2lkIHNldENvb2tpZVVSTChj
b25zdCBVUkwmIHVybCkgeyBtX2Nvb2tpZVVSTCA9IHVybDsgfQorICAgIHZvaWQgc2V0Q29va2ll
VVJMKGNvbnN0IFVSTCYpOwogCiAgICAgLy8gVGhlIGZpcnN0UGFydHlGb3JDb29raWVzIGlzIHVz
ZWQgdG8gY29tcHV0ZSB3aGV0aGVyIHRoaXMgZG9jdW1lbnQKICAgICAvLyBhcHBlYXJzIGluIGEg
InRoaXJkLXBhcnR5IiBjb250ZXh0IGZvciB0aGUgcHVycG9zZSBvZiB0aGlyZC1wYXJ0eQpAQCAt
MTM2Nyw2ICsxMzY3LDE0IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRpZEFzc29jaWF0ZUZvcm1D
b250cm9sc1RpbWVyRmlyZWQoVGltZXI8RG9jdW1lbnQ+Jik7CiAKKyAgICAvLyBET00gQ29va2ll
cyBjYWNoaW5nLgorICAgIGNvbnN0IFN0cmluZyYgY2FjaGVkRE9NQ29va2llcygpIGNvbnN0IHsg
cmV0dXJuIG1fY2FjaGVkRE9NQ29va2llczsgfQorICAgIHZvaWQgc2V0Q2FjaGVkRE9NQ29va2ll
cyhjb25zdCBTdHJpbmcmKTsKKyAgICBib29sIGlzRE9NQ29va2llQ2FjaGVWYWxpZCgpIGNvbnN0
IHsgcmV0dXJuIG1fY29va2llQ2FjaGVFeHBpcnlUaW1lci5pc0FjdGl2ZSgpOyB9CisgICAgdm9p
ZCBpbnZhbGlkYXRlRE9NQ29va2llQ2FjaGUoKTsKKyAgICB2b2lkIGRvbUNvb2tpZUNhY2hlRXhw
aXJ5VGltZXJGaXJlZChUaW1lcjxEb2N1bWVudD4mKTsKKyAgICB2b2lkIGRpZExvYWRSZXNvdXJj
ZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jikgb3ZlcnJpZGUgZmluYWw7CisK
ICAgICB1bnNpZ25lZCBtX3JlZmVyZW5jaW5nTm9kZUNvdW50OwogCiAgICAgc3RkOjp1bmlxdWVf
cHRyPFN0eWxlUmVzb2x2ZXI+IG1fc3R5bGVSZXNvbHZlcjsKQEAgLTE2OTksNiArMTcwNyw4IEBA
IHByaXZhdGU6CiAjZW5kaWYKIAogICAgIFRpbWVyPERvY3VtZW50PiBtX2RpZEFzc29jaWF0ZUZv
cm1Db250cm9sc1RpbWVyOworICAgIFRpbWVyPERvY3VtZW50PiBtX2Nvb2tpZUNhY2hlRXhwaXJ5
VGltZXI7CisgICAgU3RyaW5nIG1fY2FjaGVkRE9NQ29va2llczsKICAgICBIYXNoU2V0PFJlZlB0
cjxFbGVtZW50Pj4gbV9hc3NvY2lhdGVkRm9ybUNvbnRyb2xzOwogICAgIHVuc2lnbmVkIG1fZGlz
YWJsZWRGaWVsZHNldEVsZW1lbnRzQ291bnQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmNwcAppbmRleCBkY2VmNTc1MmIwZDA5ZWY5ZTI0ZWQ5YWI4OGY0
Mjk1N2I5Y2IyMWNkLi5iMmRiNTkxOTBhNzBlYTkxYjczNzZmYTdhZDJkMjU4ZGQ3OTlhNmYxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCkBAIC0x
NzMsNiArMTczLDEwIEBAIHZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6ZGVzdHJveWVkTWVz
c2FnZVBvcnQoTWVzc2FnZVBvcnQmIG1lc3NhZ2VQb3J0KQogICAgIG1fbWVzc2FnZVBvcnRzLnJl
bW92ZSgmbWVzc2FnZVBvcnQpOwogfQogCit2b2lkIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmRp
ZExvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JikKK3sKK30K
KwogYm9vbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpjYW5TdXNwZW5kQWN0aXZlRE9NT2JqZWN0
cygpCiB7CiAgICAgY2hlY2tDb25zaXN0ZW5jeSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmgKaW5kZXggZmNlMTgwNDZmMTRlZjkyMTFjZWJiN2I0ZTQ5MmNh
YTQ0N2JmMjE3Zi4uM2VkMjcyODBiZDVhOTA3YmRjMzU2YWRlZDZiYTIwMzJiZDY3MTljZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCkBAIC0zMCw2ICsz
MCw3IEBACiAKICNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKICNpbmNsdWRlICJET01UaW1l
ci5oIgorI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlNjaGVkdWxlZEFj
dGlvbi5oIgogI2luY2x1ZGUgIlNlY3VyaXR5Q29udGV4dC5oIgogI2luY2x1ZGUgIlN1cHBsZW1l
bnRhYmxlLmgiCkBAIC0xMTAsNiArMTExLDggQEAgcHVibGljOgogICAgIHZvaWQgY3JlYXRlZE1l
c3NhZ2VQb3J0KE1lc3NhZ2VQb3J0Jik7CiAgICAgdm9pZCBkZXN0cm95ZWRNZXNzYWdlUG9ydChN
ZXNzYWdlUG9ydCYpOwogCisgICAgdmlydHVhbCB2b2lkIGRpZExvYWRSZXNvdXJjZVN5bmNocm9u
b3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CisKICAgICB2b2lkIHJlZigpIHsgcmVmU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CiAgICAgdm9pZCBkZXJlZigpIHsgZGVyZWZTY3JpcHRF
eGVjdXRpb25Db250ZXh0KCk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1RocmVhZGFibGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVM
b2FkZXIuY3BwCmluZGV4IGUzZGNkYjQ4NmYxOWU3MTA1MzJkOTIwOWY5NWY2NTk3MWZlMDA0MDcu
LmRhNjUwYzRkMGM2MmJhOWM5NTA3OGRkN2Y5M2RkODA3YmEwZGI5YTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlci5jcHAKQEAgLTY2LDEyICs2NiwxMSBAQCB2b2lk
IFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dAogewogICAgIEFTU0VSVChjb250ZXh0KTsKIAotICAgIGlmIChp
czxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkpIHsKKyAgICBpZiAoaXM8V29ya2VyR2xvYmFs
U2NvcGU+KGNvbnRleHQpKQogICAgICAgICBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVz
b3VyY2VTeW5jaHJvbm91c2x5KGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSwg
cmVxdWVzdCwgY2xpZW50LCBvcHRpb25zKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseSgqZG93
bmNhc3Q8RG9jdW1lbnQ+KGNvbnRleHQpLCByZXF1ZXN0LCBjbGllbnQsIG9wdGlvbnMpOworICAg
IGVsc2UKKyAgICAgICAgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5j
aHJvbm91c2x5KGRvd25jYXN0PERvY3VtZW50PigqY29udGV4dCksIHJlcXVlc3QsIGNsaWVudCwg
b3B0aW9ucyk7CisgICAgY29udGV4dC0+ZGlkTG9hZFJlc291cmNlU3luY2hyb25vdXNseShyZXF1
ZXN0KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDJiNDc3OTA4ZWFlZmM3
ZjYyYmU0ZDJjYTBlZTdjOWMwOGIxNzQ0NmMuLjhiYTI1YTdkZGI0OTQ2ZDU5MDUyOGMxMTJjOTEy
OGMxZGVjOGZjNTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxNC0wOS0zMCAgQ2hyaXMgRHVt
ZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBiYXNpYyBjYWNoaW5nIGZvciBE
b2N1bWVudC5jb29raWUgQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMzcyMjUKKworICAgICAgICBSZXZpZXdlZCBieSBBbGV4ZXkgUHJvc2t1cnlh
a292LgorCisgICAgICAgIEFkZCBhIGxheW91dCB0ZXN0IHRvIG1ha2Ugc3VyZSB0aGF0IGRvY3Vt
ZW50LmNvb2tpZSByZXR1cm5zIHVwZGF0ZWQKKyAgICAgICAgcmVzdWx0cyBhZnRlciBjb29raWVz
IGFyZSBzZXQgdmlhIGEgc3luYyBYSFIuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL2Nvb2tpZXMv
c3luYy14aHItc2V0LWNvb2tpZS1pbnZhbGlkYXRlcy1jYWNoZS1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGh0dHAvdGVzdHMvY29va2llcy9zeW5jLXhoci1zZXQtY29va2llLWludmFs
aWRhdGVzLWNhY2hlLmh0bWw6IEFkZGVkLgorCiAyMDE0LTEwLTAxICBCZXRoIERha2luICA8YmRh
a2luQGFwcGxlLmNvbT4KIAogICAgICAgICBZZXQgYW5vdGhlciBjcmFzaC1mbGFreSB0ZXN0Lgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb29raWVzL3N5bmMteGhyLXNldC1j
b29raWUtaW52YWxpZGF0ZXMtY2FjaGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9jb29raWVzL3N5bmMteGhyLXNldC1jb29raWUtaW52YWxpZGF0ZXMtY2FjaGUtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmY2YWE2YmJmOTllM2RjMDc0ZTU2ZGI0Yzk3OGZjNzEwOTZiZGYy
ZDcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nvb2tpZXMvc3lu
Yy14aHItc2V0LWNvb2tpZS1pbnZhbGlkYXRlcy1jYWNoZS1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwxMiBAQAorVGVzdHMgdGhhdCBkb2N1bWVudC5jb29raWUgcmV0dXJucyB0aGUgcmlnaHQgdmFs
dWUgYWZ0ZXIgYSBzeW5jIFhIUgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFT
UyBub3JtYWxpemVDb29raWUoZG9jdW1lbnQuY29va2llKSBpcyAidGVzdEtleT10ZXN0VmFsdWUi
CitQQVNTIHhoci5zdGF0dXMgaXMgMjAwCitQQVNTIG5vcm1hbGl6ZUNvb2tpZShkb2N1bWVudC5j
b29raWUpIGlzICJ0ZXN0S2V5PXRlc3RWYWx1ZTsgeGhyS2V5PXhoclZhbHVlIgorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvY29va2llcy9zeW5jLXhoci1zZXQtY29va2llLWludmFsaWRh
dGVzLWNhY2hlLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nvb2tpZXMvc3luYy14aHIt
c2V0LWNvb2tpZS1pbnZhbGlkYXRlcy1jYWNoZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU3YWI1ODcxYmM1
ZDZlNjU3NzY1MjkxOTFhMmU1ZjlmMWZjMDU1MjUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2Nvb2tpZXMvc3luYy14aHItc2V0LWNvb2tpZS1pbnZhbGlkYXRlcy1j
YWNoZS5odG1sCkBAIC0wLDAgKzEsMTggQEAKKzwhRE9DVFlQRSBodG1sPgorPHNjcmlwdCBzcmM9
J3Jlc291cmNlcy9jb29raWVzLXRlc3QtcHJlLmpzJz48L3NjcmlwdD4KKworPHNjcmlwdD4KK2Rl
c2NyaXB0aW9uKCdUZXN0cyB0aGF0IGRvY3VtZW50LmNvb2tpZSByZXR1cm5zIHRoZSByaWdodCB2
YWx1ZSBhZnRlciBhIHN5bmMgWEhSJyk7CisKK2RvY3VtZW50LmNvb2tpZSA9ICJ0ZXN0S2V5PXRl
c3RWYWx1ZSI7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ25vcm1hbGl6ZUNvb2tpZShkb2N1bWVu
dC5jb29raWUpJywgJ3Rlc3RLZXk9dGVzdFZhbHVlJyk7Cit2YXIgeGhyID0gbmV3IFhNTEh0dHBS
ZXF1ZXN0KCk7Cit4aHIub3BlbignR0VUJywgJ3Jlc291cmNlcy9zZXRDb29raWVzLmNnaScsIGZh
bHNlKTsKK3hoci5zZXRSZXF1ZXN0SGVhZGVyKCdTRVQtQ09PS0lFJywgJ3hocktleT14aHJWYWx1
ZTsgcGF0aD0vJyk7Cit4aHIuc2VuZCgpOworCitzaG91bGRCZSgneGhyLnN0YXR1cycsICcyMDAn
KTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygnbm9ybWFsaXplQ29va2llKGRvY3VtZW50LmNvb2tp
ZSknLCAndGVzdEtleT10ZXN0VmFsdWU7IHhocktleT14aHJWYWx1ZScpOworCis8L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSdyZXNvdXJjZXMvY29va2llcy10ZXN0LXBvc3QuanMnPjwvc2NyaXB0Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>239063</attachid>
            <date>2014-10-01 16:05:53 -0700</date>
            <delta_ts>2014-10-01 17:22:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137225-20141001160555.patch</filename>
            <type>text/plain</type>
            <size>15227</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0MTc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWM4ZWIyNjY1ODQ0Y2Ux
OTU4ZDM1NmQ4YzI0YTEyMzJkZDdlNWQ5NS4uNWU2MTg5YjFhYTM0YTdkMzM3NjlhZmQwMmU3YThh
MmVmMzYwZDE4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDE0LTA5LTMwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGJhc2ljIGNhY2hpbmcg
Zm9yIERvY3VtZW50LmNvb2tpZSBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEzNzIyNQorCisgICAgICAgIFJldmlld2VkIGJ5IEFsZXhleSBQcm9z
a3VyeWFrb3YuCisKKyAgICAgICAgV2hpbGUgcHJvZmlsaW5nIHRoZSBsb2FkIG9mIG55dGltZXMu
Y29tLCBJIG5vdGljZWQgdGhhdCB0aGUgc2l0ZSBpcworICAgICAgICBhY2Nlc3NpbmcgfjI1MCB0
aW1lcyBkb2N1bWVudC5jb29raWUsIGp1c3QgZHVyaW5nIHBhZ2UgbG9hZC4gQWNjZXNzaW5nCisg
ICAgICAgIGRvY3VtZW50LmNvb2tpZSBpcyBjdXJyZW50bHkgc2xvdyBiZWNhdXNlIHdlOgorICAg
ICAgICAtIENhbGwgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29raWVzRm9yRE9NKCkgdmlydHVh
bCBmdW5jdGlvbgorICAgICAgICAtIFNlbmQgYSBzeW5jIElQQyBtZXNzYWdlIHRvIHRoZSBOZXR3
b3JrIHByb2Nlc3MgdG8gcmV0cmlldmUgdGhlCisgICAgICAgICAgY29va2llcworICAgICAgICAg
ICAgLSBUaGUgTmV0d29yayBwcm9jZXNzIGdldHMgdGhlIGxpc3Qgb2YgY29va2llcyBmcm9tIENG
TmV0d29yayB0aGVuCisgICAgICAgICAgICAgIHNlcmlhbGl6ZXMgdGhlIHJlc3VsdCB0byBzZW5k
IGl0IGJhY2sgdG8gdGhlIFdlYlByb2Nlc3MKKyAgICAgICAgLSBXZSB1bnNlcmlhbGl6ZSB0aGUg
Y29va2llcyBpbnRvIGFuIE5TTGlzdCBvZiBjb29raWVzCisgICAgICAgIC0gV2UgZmlsdGVyLW91
dCB0aGUgY29va2llcyB0aGF0IGFyZSAnaHR0cE9ubHknIGFuZCBjb25zdHJ1Y3QgYSBuZXcKKyAg
ICAgICAgICBOU0xpc3Qgb2YgY29va2llcworICAgICAgICAtIFdlIGNyZWF0ZSBhIFdURiBTdHJp
bmcgb3V0IG9mIHRoZSBjb29raWVzIE5TTGlzdAorCisgICAgICAgIEluIHRoZSBjYXNlIG9mIG55
dGltZXMuY29tLCBpdCB0dXJucyBvdXQgdGhhdCB1cCB0byAxMDAgY2FsbHMgdG8KKyAgICAgICAg
ZG9jdW1lbnQuY29va2llKCkgYXJlIG1hZGUgaW4gdGhlIHNhbWUgZXZlbnQgbG9vcCBpdGVyYXRp
b24uIFRoaXMgcGF0Y2gKKyAgICAgICAgdGh1cyBjYWNoZXMgLyBmcmVlemVzIHRoZSBjb29raWVz
IHVudGlsIHdlIHJldHVybiB0byB0aGUgZXZlbnQKKyAgICAgICAgbG9vcCBzbyB0aGF0IGNvbnNl
Y3V0aXZlIGNhbGxzIHRvIGRvY3VtZW50LmNvb2tpZSgpIGFyZSBleHRyZW1lbHkgZmFzdC4KKyAg
ICAgICAgRG9pbmcgc28gc2VlbXMgdG8gYmUgc3VmZmljaWVudCB0byBhY2hpZXZlIGEgfjg3JSBj
YWNoZSBoaXQgZm9yCisgICAgICAgIG55dGltZXMuY29tIHBhZ2UgbG9hZC4KKworICAgICAgICBU
aGUgY29va2llcyBjYWNoZSBpcyBpbnZhbGlkYXRlZCB3aGVuZXZlcjoKKyAgICAgICAgLSBkb2N1
bWVudC5jb29raWUgaXMgc2V0CisgICAgICAgIC0gd2UgcmV0dXJuIHRvIHRoZSBldmVudCBsb29w
CisgICAgICAgIC0gYSBuZXR3b3JrIHJlc291cmNlIGlzIGxvYWRlZCBzeW5jaHJvbm91c2x5IGFz
IGl0IG1heSBjYXVzZSBjb29raWVzIHRvCisgICAgICAgICAgYmUgc2V0IGJlZm9yZSB3ZSByZXR1
cm4gdG8gdGhlIGV2ZW50IGxvb3AKKworICAgICAgICBUZXN0OiBodHRwL3Rlc3RzL2Nvb2tpZXMv
c3luYy14aHItc2V0LWNvb2tpZS1pbnZhbGlkYXRlcy1jYWNoZS5odG1sCisKKyAgICAgICAgKiBk
b20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OkRvY3VtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpvcGVuKToKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50Ojpjb29raWUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNldENvb2tpZSk6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0Q29va2llVVJMKToKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50Ojppbml0U2VjdXJpdHlDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50OjpzZXRET01Db29raWVDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dDo6aW52YWxpZGF0ZURPTUNvb2tpZUNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
Ojpkb21Db29raWVDYWNoZUV4cGlyeVRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnQ6OmRpZExvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkpOgorICAgICAgICAqIGRvbS9Eb2N1
bWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmRvbUNvb2tpZUNhY2hlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojppc0RPTUNvb2tpZUNhY2hlVmFsaWQpOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNldENvb2tpZVVSTCk6IERlbGV0ZWQuCisgICAgICAgICog
ZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6ZGlkTG9hZFJlc291cmNlU3luY2hyb25vdXNseSk6CisgICAgICAg
ICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaDoKKyAgICAgICAgKiBsb2FkZXIvVGhyZWFk
YWJsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlTG9hZGVyOjpsb2Fk
UmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKwogMjAxNC0xMC0wMSAgWmFuIERvYmVyc2VrICA8emRv
YmVyc2VrQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1RleE1hcF0gU3ByaW5rbGUgcmFuZ2UtYmFz
ZWQgZm9yLWxvb3BzIGluIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLCBUZXh0dXJlTWFwcGVy
TGF5ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDNlOGFjYmM2Njk5OGJlY2I3MTUxODkx
YjE0MDVhYzllZGUzZTVmZTMuLmVhY2IwN2FlOTJiMTM2OTI5ODgzZGRlMTViOTNhMWVkZjk4NDY5
N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNTEzLDYgKzUxMyw3IEBAIERvY3VtZW50
OjpEb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJsLCB1bnNpZ25lZCBkb2N1bWVu
dENsYXNzZXMsIHVuc2lnCiAgICAgLCBtX2lucHV0Q3Vyc29yKEVtcHR5SW5wdXRDdXJzb3I6OmNy
ZWF0ZSgpKQogI2VuZGlmCiAgICAgLCBtX2RpZEFzc29jaWF0ZUZvcm1Db250cm9sc1RpbWVyKHRo
aXMsICZEb2N1bWVudDo6ZGlkQXNzb2NpYXRlRm9ybUNvbnRyb2xzVGltZXJGaXJlZCkKKyAgICAs
IG1fY29va2llQ2FjaGVFeHBpcnlUaW1lcih0aGlzLCAmRG9jdW1lbnQ6OmRvbUNvb2tpZUNhY2hl
RXhwaXJ5VGltZXJGaXJlZCkKICAgICAsIG1fZGlzYWJsZWRGaWVsZHNldEVsZW1lbnRzQ291bnQo
MCkKICAgICAsIG1faGFzSW5qZWN0ZWRQbHVnSW5zU2NyaXB0KGZhbHNlKQogICAgICwgbV9yZW5k
ZXJUcmVlQmVpbmdEZXN0cm95ZWQoZmFsc2UpCkBAIC0yMjU2LDcgKzIyNTcsNyBAQCB2b2lkIERv
Y3VtZW50OjpvcGVuKERvY3VtZW50KiBvd25lckRvY3VtZW50KQogewogICAgIGlmIChvd25lckRv
Y3VtZW50KSB7CiAgICAgICAgIHNldFVSTChvd25lckRvY3VtZW50LT51cmwoKSk7Ci0gICAgICAg
IG1fY29va2llVVJMID0gb3duZXJEb2N1bWVudC0+Y29va2llVVJMKCk7CisgICAgICAgIHNldENv
b2tpZVVSTChvd25lckRvY3VtZW50LT5jb29raWVVUkwoKSk7CiAgICAgICAgIHNldFNlY3VyaXR5
T3JpZ2luKG93bmVyRG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkpOwogICAgIH0KIApAQCAtMzgz
NSw3ICszODM2LDcgQEAgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBEb2N1bWVudDo6b3duZXJFbGVt
ZW50KCkgY29uc3QKICAgICByZXR1cm4gZnJhbWUoKS0+b3duZXJFbGVtZW50KCk7CiB9CiAKLVN0
cmluZyBEb2N1bWVudDo6Y29va2llKEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAorU3RyaW5nIERv
Y3VtZW50Ojpjb29raWUoRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKHBhZ2UoKSAmJiAh
cGFnZSgpLT5zZXR0aW5ncygpLmNvb2tpZUVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIFN0cmlu
ZygpOwpAQCAtMzg1Myw3ICszODU0LDEwIEBAIFN0cmluZyBEb2N1bWVudDo6Y29va2llKEV4Y2Vw
dGlvbkNvZGUmIGVjKSBjb25zdAogICAgIGlmIChjb29raWVVUkwuaXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm4gU3RyaW5nKCk7CiAKLSAgICByZXR1cm4gY29va2llcyh0aGlzLCBjb29raWVVUkwp
OworICAgIGlmICghaXNET01Db29raWVDYWNoZVZhbGlkKCkpCisgICAgICAgIHNldENhY2hlZERP
TUNvb2tpZXMoY29va2llcyh0aGlzLCBjb29raWVVUkwpKTsKKworICAgIHJldHVybiBjYWNoZWRE
T01Db29raWVzKCk7CiB9CiAKIHZvaWQgRG9jdW1lbnQ6OnNldENvb2tpZShjb25zdCBTdHJpbmcm
IHZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYykKQEAgLTM4NzQsNiArMzg3OCw3IEBAIHZvaWQgRG9j
dW1lbnQ6OnNldENvb2tpZShjb25zdCBTdHJpbmcmIHZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYykK
ICAgICBpZiAoY29va2llVVJMLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgaW52
YWxpZGF0ZURPTUNvb2tpZUNhY2hlKCk7CiAgICAgc2V0Q29va2llcyh0aGlzLCBjb29raWVVUkws
IHZhbHVlKTsKIH0KIApAQCAtMzk3Nyw2ICszOTgyLDE0IEBAIFN0cmluZyBEb2N1bWVudDo6bGFz
dE1vZGlmaWVkKCkgY29uc3QKICAgICByZXR1cm4gU3RyaW5nOjpmb3JtYXQoIiUwMmQvJTAyZC8l
MDRkICUwMmQ6JTAyZDolMDJkIiwgZGF0ZS5tb250aCgpICsgMSwgZGF0ZS5tb250aERheSgpLCBk
YXRlLmZ1bGxZZWFyKCksIGRhdGUuaG91cigpLCBkYXRlLm1pbnV0ZSgpLCBkYXRlLnNlY29uZCgp
KTsKIH0KIAordm9pZCBEb2N1bWVudDo6c2V0Q29va2llVVJMKGNvbnN0IFVSTCYgdXJsKQorewor
ICAgIGlmIChtX2Nvb2tpZVVSTCA9PSB1cmwpCisgICAgICAgIHJldHVybjsKKyAgICBtX2Nvb2tp
ZVVSTCA9IHVybDsKKyAgICBpbnZhbGlkYXRlRE9NQ29va2llQ2FjaGUoKTsKK30KKwogc3RhdGlj
IGJvb2wgaXNWYWxpZE5hbWVOb25BU0NJSShjb25zdCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWdu
ZWQgbGVuZ3RoKQogewogICAgIGlmICghaXNWYWxpZE5hbWVTdGFydChjaGFyYWN0ZXJzWzBdKSkK
QEAgLTQ2ODksNyArNDcwMiw3IEBAIHZvaWQgRG9jdW1lbnQ6OmluaXRTZWN1cml0eUNvbnRleHQo
KQogICAgIGlmICghbV9mcmFtZSkgewogICAgICAgICAvLyBObyBzb3VyY2UgZm9yIGEgc2VjdXJp
dHkgY29udGV4dC4KICAgICAgICAgLy8gVGhpcyBjYW4gb2NjdXIgdmlhIGRvY3VtZW50LmltcGxl
bWVudGF0aW9uLmNyZWF0ZURvY3VtZW50KCkuCi0gICAgICAgIG1fY29va2llVVJMID0gVVJMKFBh
cnNlZFVSTFN0cmluZywgZW1wdHlTdHJpbmcoKSk7CisgICAgICAgIHNldENvb2tpZVVSTChVUkwo
UGFyc2VkVVJMU3RyaW5nLCBlbXB0eVN0cmluZygpKSk7CiAgICAgICAgIHNldFNlY3VyaXR5T3Jp
Z2luKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVVbmlxdWUoKSk7CiAgICAgICAgIHNldENvbnRlbnRT
ZWN1cml0eVBvbGljeShzdGQ6Om1ha2VfdW5pcXVlPENvbnRlbnRTZWN1cml0eVBvbGljeT4odGhp
cykpOwogICAgICAgICByZXR1cm47CkBAIC00Njk3LDcgKzQ3MTAsNyBAQCB2b2lkIERvY3VtZW50
Ojppbml0U2VjdXJpdHlDb250ZXh0KCkKIAogICAgIC8vIEluIHRoZSBjb21tb24gY2FzZSwgY3Jl
YXRlIHRoZSBzZWN1cml0eSBjb250ZXh0IGZyb20gdGhlIGN1cnJlbnRseQogICAgIC8vIGxvYWRp
bmcgVVJMIHdpdGggYSBmcmVzaCBjb250ZW50IHNlY3VyaXR5IHBvbGljeS4KLSAgICBtX2Nvb2tp
ZVVSTCA9IG1fdXJsOworICAgIHNldENvb2tpZVVSTChtX3VybCk7CiAgICAgZW5mb3JjZVNhbmRi
b3hGbGFncyhtX2ZyYW1lLT5sb2FkZXIoKS5lZmZlY3RpdmVTYW5kYm94RmxhZ3MoKSk7CiAKICNp
ZiBQTEFURk9STShJT1MpCkBAIC00NzYzLDcgKzQ3NzYsNyBAQCB2b2lkIERvY3VtZW50Ojppbml0
U2VjdXJpdHlDb250ZXh0KCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fY29va2ll
VVJMID0gb3duZXJGcmFtZS0+ZG9jdW1lbnQoKS0+Y29va2llVVJMKCk7CisgICAgc2V0Q29va2ll
VVJMKG93bmVyRnJhbWUtPmRvY3VtZW50KCktPmNvb2tpZVVSTCgpKTsKICAgICAvLyBXZSBhbGlh
cyB0aGUgU2VjdXJpdHlPcmlnaW5zIHRvIG1hdGNoIEZpcmVmb3gsIHNlZSBCdWcgMTUzMTMKICAg
ICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUzMTMKICAgICBz
ZXRTZWN1cml0eU9yaWdpbihvd25lckZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigp
KTsKQEAgLTYxNzksNiArNjE5MiwzMiBAQCB2b2lkIERvY3VtZW50OjpkaWRBc3NvY2lhdGVGb3Jt
Q29udHJvbHNUaW1lckZpcmVkKFRpbWVyPERvY3VtZW50PiYgdGltZXIpCiAgICAgbV9hc3NvY2lh
dGVkRm9ybUNvbnRyb2xzLmNsZWFyKCk7CiB9CiAKK3ZvaWQgRG9jdW1lbnQ6OnNldENhY2hlZERP
TUNvb2tpZXMoY29uc3QgU3RyaW5nJiBjb29raWVzKQoreworICAgIEFTU0VSVCghaXNET01Db29r
aWVDYWNoZVZhbGlkKCkpOworICAgIG1fY2FjaGVkRE9NQ29va2llcyA9IGNvb2tpZXM7CisgICAg
Ly8gVGhlIGNvb2tpZSBjYWNoZSBpcyB2YWxpZCBhdCBtb3N0IHVudGlsIHdlIGdvIGJhY2sgdG8g
dGhlIGV2ZW50IGxvb3AuCisgICAgbV9jb29raWVDYWNoZUV4cGlyeVRpbWVyLnN0YXJ0T25lU2hv
dCgwKTsKK30KKwordm9pZCBEb2N1bWVudDo6aW52YWxpZGF0ZURPTUNvb2tpZUNhY2hlKCkKK3sK
KyAgICBtX2Nvb2tpZUNhY2hlRXhwaXJ5VGltZXIuc3RvcCgpOworICAgIG1fY2FjaGVkRE9NQ29v
a2llcyA9IFN0cmluZygpOworfQorCit2b2lkIERvY3VtZW50Ojpkb21Db29raWVDYWNoZUV4cGly
eVRpbWVyRmlyZWQoVGltZXI8RG9jdW1lbnQ+JikKK3sKKyAgICBpbnZhbGlkYXRlRE9NQ29va2ll
Q2FjaGUoKTsKK30KKwordm9pZCBEb2N1bWVudDo6ZGlkTG9hZFJlc291cmNlU3luY2hyb25vdXNs
eShjb25zdCBSZXNvdXJjZVJlcXVlc3QmKQoreworICAgIC8vIFN5bmNocm9ub3VzIHJlc291cmNl
cyBsb2FkaW5nIGNhbiBzZXQgY29va2llcyBzbyB3ZSBpbnZhbGlkYXRlIHRoZSBjb29raWVzIGNh
Y2hlCisgICAgLy8gaW4gdGhpcyBjYXNlLCB0byBiZSBzYWZlLgorICAgIGludmFsaWRhdGVET01D
b29raWVDYWNoZSgpOworfQorCiB2b2lkIERvY3VtZW50OjplbnN1cmVQbHVnSW5zSW5qZWN0ZWRT
Y3JpcHQoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKIHsKICAgICBpZiAobV9oYXNJbmplY3RlZFBs
dWdJbnNTY3JpcHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDNhOTg0MjZhMDYxNzBjODY0ZTk3
NGU4NDU5MWMyNjE2MjcwNDQwMzAuLjE1NmFmZDBmZDMzOWQ1YWUxMTRhN2FjY2E3ZDIxNDUyNzAz
MTMwMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC04ODQsNyArODg0LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0VGl0bGVFbGVtZW50KGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mLCBFbGVt
ZW50KiB0aXRsZUVsZW1lbnQpOwogICAgIHZvaWQgcmVtb3ZlVGl0bGUoRWxlbWVudCogdGl0bGVF
bGVtZW50KTsKIAotICAgIFN0cmluZyBjb29raWUoRXhjZXB0aW9uQ29kZSYpIGNvbnN0OworICAg
IFN0cmluZyBjb29raWUoRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgc2V0Q29va2llKGNvbnN0
IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIFN0cmluZyByZWZlcnJlcigpIGNvbnN0
OwpAQCAtOTA3LDcgKzkwNyw3IEBAIHB1YmxpYzoKICAgICAvLyAgICBpbmhlcml0cyBpdHMgY29v
a2llVVJMIGJ1dCBub3QgaXRzIFVSTC4KICAgICAvLwogICAgIGNvbnN0IFVSTCYgY29va2llVVJM
KCkgY29uc3QgeyByZXR1cm4gbV9jb29raWVVUkw7IH0KLSAgICB2b2lkIHNldENvb2tpZVVSTChj
b25zdCBVUkwmIHVybCkgeyBtX2Nvb2tpZVVSTCA9IHVybDsgfQorICAgIHZvaWQgc2V0Q29va2ll
VVJMKGNvbnN0IFVSTCYpOwogCiAgICAgLy8gVGhlIGZpcnN0UGFydHlGb3JDb29raWVzIGlzIHVz
ZWQgdG8gY29tcHV0ZSB3aGV0aGVyIHRoaXMgZG9jdW1lbnQKICAgICAvLyBhcHBlYXJzIGluIGEg
InRoaXJkLXBhcnR5IiBjb250ZXh0IGZvciB0aGUgcHVycG9zZSBvZiB0aGlyZC1wYXJ0eQpAQCAt
MTM2Nyw2ICsxMzY3LDE0IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRpZEFzc29jaWF0ZUZvcm1D
b250cm9sc1RpbWVyRmlyZWQoVGltZXI8RG9jdW1lbnQ+Jik7CiAKKyAgICAvLyBET00gQ29va2ll
cyBjYWNoaW5nLgorICAgIGNvbnN0IFN0cmluZyYgY2FjaGVkRE9NQ29va2llcygpIGNvbnN0IHsg
cmV0dXJuIG1fY2FjaGVkRE9NQ29va2llczsgfQorICAgIHZvaWQgc2V0Q2FjaGVkRE9NQ29va2ll
cyhjb25zdCBTdHJpbmcmKTsKKyAgICBib29sIGlzRE9NQ29va2llQ2FjaGVWYWxpZCgpIGNvbnN0
IHsgcmV0dXJuIG1fY29va2llQ2FjaGVFeHBpcnlUaW1lci5pc0FjdGl2ZSgpOyB9CisgICAgdm9p
ZCBpbnZhbGlkYXRlRE9NQ29va2llQ2FjaGUoKTsKKyAgICB2b2lkIGRvbUNvb2tpZUNhY2hlRXhw
aXJ5VGltZXJGaXJlZChUaW1lcjxEb2N1bWVudD4mKTsKKyAgICB2b2lkIGRpZExvYWRSZXNvdXJj
ZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jikgb3ZlcnJpZGUgZmluYWw7CisK
ICAgICB1bnNpZ25lZCBtX3JlZmVyZW5jaW5nTm9kZUNvdW50OwogCiAgICAgc3RkOjp1bmlxdWVf
cHRyPFN0eWxlUmVzb2x2ZXI+IG1fc3R5bGVSZXNvbHZlcjsKQEAgLTE2OTksNiArMTcwNyw4IEBA
IHByaXZhdGU6CiAjZW5kaWYKIAogICAgIFRpbWVyPERvY3VtZW50PiBtX2RpZEFzc29jaWF0ZUZv
cm1Db250cm9sc1RpbWVyOworICAgIFRpbWVyPERvY3VtZW50PiBtX2Nvb2tpZUNhY2hlRXhwaXJ5
VGltZXI7CisgICAgU3RyaW5nIG1fY2FjaGVkRE9NQ29va2llczsKICAgICBIYXNoU2V0PFJlZlB0
cjxFbGVtZW50Pj4gbV9hc3NvY2lhdGVkRm9ybUNvbnRyb2xzOwogICAgIHVuc2lnbmVkIG1fZGlz
YWJsZWRGaWVsZHNldEVsZW1lbnRzQ291bnQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmNwcAppbmRleCBkY2VmNTc1MmIwZDA5ZWY5ZTI0ZWQ5YWI4OGY0
Mjk1N2I5Y2IyMWNkLi5iMmRiNTkxOTBhNzBlYTkxYjczNzZmYTdhZDJkMjU4ZGQ3OTlhNmYxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCkBAIC0x
NzMsNiArMTczLDEwIEBAIHZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6ZGVzdHJveWVkTWVz
c2FnZVBvcnQoTWVzc2FnZVBvcnQmIG1lc3NhZ2VQb3J0KQogICAgIG1fbWVzc2FnZVBvcnRzLnJl
bW92ZSgmbWVzc2FnZVBvcnQpOwogfQogCit2b2lkIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmRp
ZExvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JikKK3sKK30K
KwogYm9vbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpjYW5TdXNwZW5kQWN0aXZlRE9NT2JqZWN0
cygpCiB7CiAgICAgY2hlY2tDb25zaXN0ZW5jeSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmgKaW5kZXggZmNlMTgwNDZmMTRlZjkyMTFjZWJiN2I0ZTQ5MmNh
YTQ0N2JmMjE3Zi4uM2VkMjcyODBiZDVhOTA3YmRjMzU2YWRlZDZiYTIwMzJiZDY3MTljZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCkBAIC0zMCw2ICsz
MCw3IEBACiAKICNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKICNpbmNsdWRlICJET01UaW1l
ci5oIgorI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlNjaGVkdWxlZEFj
dGlvbi5oIgogI2luY2x1ZGUgIlNlY3VyaXR5Q29udGV4dC5oIgogI2luY2x1ZGUgIlN1cHBsZW1l
bnRhYmxlLmgiCkBAIC0xMTAsNiArMTExLDggQEAgcHVibGljOgogICAgIHZvaWQgY3JlYXRlZE1l
c3NhZ2VQb3J0KE1lc3NhZ2VQb3J0Jik7CiAgICAgdm9pZCBkZXN0cm95ZWRNZXNzYWdlUG9ydChN
ZXNzYWdlUG9ydCYpOwogCisgICAgdmlydHVhbCB2b2lkIGRpZExvYWRSZXNvdXJjZVN5bmNocm9u
b3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CisKICAgICB2b2lkIHJlZigpIHsgcmVmU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CiAgICAgdm9pZCBkZXJlZigpIHsgZGVyZWZTY3JpcHRF
eGVjdXRpb25Db250ZXh0KCk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1RocmVhZGFibGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVM
b2FkZXIuY3BwCmluZGV4IGUzZGNkYjQ4NmYxOWU3MTA1MzJkOTIwOWY5NWY2NTk3MWZlMDA0MDcu
LmRhNjUwYzRkMGM2MmJhOWM5NTA3OGRkN2Y5M2RkODA3YmEwZGI5YTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlci5jcHAKQEAgLTY2LDEyICs2NiwxMSBAQCB2b2lk
IFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dAogewogICAgIEFTU0VSVChjb250ZXh0KTsKIAotICAgIGlmIChp
czxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkpIHsKKyAgICBpZiAoaXM8V29ya2VyR2xvYmFs
U2NvcGU+KGNvbnRleHQpKQogICAgICAgICBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVz
b3VyY2VTeW5jaHJvbm91c2x5KGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSwg
cmVxdWVzdCwgY2xpZW50LCBvcHRpb25zKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseSgqZG93
bmNhc3Q8RG9jdW1lbnQ+KGNvbnRleHQpLCByZXF1ZXN0LCBjbGllbnQsIG9wdGlvbnMpOworICAg
IGVsc2UKKyAgICAgICAgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5j
aHJvbm91c2x5KGRvd25jYXN0PERvY3VtZW50PigqY29udGV4dCksIHJlcXVlc3QsIGNsaWVudCwg
b3B0aW9ucyk7CisgICAgY29udGV4dC0+ZGlkTG9hZFJlc291cmNlU3luY2hyb25vdXNseShyZXF1
ZXN0KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDJiNDc3OTA4ZWFlZmM3
ZjYyYmU0ZDJjYTBlZTdjOWMwOGIxNzQ0NmMuLjhiYTI1YTdkZGI0OTQ2ZDU5MDUyOGMxMTJjOTEy
OGMxZGVjOGZjNTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxNC0wOS0zMCAgQ2hyaXMgRHVt
ZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBiYXNpYyBjYWNoaW5nIGZvciBE
b2N1bWVudC5jb29raWUgQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMzcyMjUKKworICAgICAgICBSZXZpZXdlZCBieSBBbGV4ZXkgUHJvc2t1cnlh
a292LgorCisgICAgICAgIEFkZCBhIGxheW91dCB0ZXN0IHRvIG1ha2Ugc3VyZSB0aGF0IGRvY3Vt
ZW50LmNvb2tpZSByZXR1cm5zIHVwZGF0ZWQKKyAgICAgICAgcmVzdWx0cyBhZnRlciBjb29raWVz
IGFyZSBzZXQgdmlhIGEgc3luYyBYSFIuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL2Nvb2tpZXMv
c3luYy14aHItc2V0LWNvb2tpZS1pbnZhbGlkYXRlcy1jYWNoZS1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGh0dHAvdGVzdHMvY29va2llcy9zeW5jLXhoci1zZXQtY29va2llLWludmFs
aWRhdGVzLWNhY2hlLmh0bWw6IEFkZGVkLgorCiAyMDE0LTEwLTAxICBCZXRoIERha2luICA8YmRh
a2luQGFwcGxlLmNvbT4KIAogICAgICAgICBZZXQgYW5vdGhlciBjcmFzaC1mbGFreSB0ZXN0Lgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb29raWVzL3Jlc291cmNlcy9jb29r
aWVzLXRlc3QtcHJlLmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb29raWVzL3Jlc291cmNl
cy9jb29raWVzLXRlc3QtcHJlLmpzCmluZGV4IDYzNjQxNmE3ZjIxNzM0NzcxYjA4NjBhNjQyYmVm
NTg2NjMwZjE4MWMuLjg1MTYwOWRlZmFiOGIzYWIwOWRjMTY0OGFlYmZmODY2YjhiM2QzMjUgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY29va2llcy9yZXNvdXJjZXMvY29va2ll
cy10ZXN0LXByZS5qcworKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nvb2tpZXMvcmVzb3Vy
Y2VzL2Nvb2tpZXMtdGVzdC1wcmUuanMKQEAgLTIzLDYgKzIzLDExIEBAIGZ1bmN0aW9uIHNldENv
b2tpZXMoY29va2llKQogICAgIH0KIH0KIAorZnVuY3Rpb24gcmVnaXN0ZXJDb29raWVGb3JDbGVh
bnVwKGNvb2tpZSkKK3sKKyAgICBjb29raWVzLnB1c2goY29va2llKTsKK30KKwogLy8gTm9ybWFs
aXplIGEgY29va2llIHN0cmluZwogZnVuY3Rpb24gbm9ybWFsaXplQ29va2llKGNvb2tpZSkKIHsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY29va2llcy9zeW5jLXhoci1zZXQt
Y29va2llLWludmFsaWRhdGVzLWNhY2hlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvY29va2llcy9zeW5jLXhoci1zZXQtY29va2llLWludmFsaWRhdGVzLWNhY2hlLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5mNmFhNmJiZjk5ZTNkYzA3NGU1NmRiNGM5NzhmYzcxMDk2YmRm
MmQ3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb29raWVzL3N5
bmMteGhyLXNldC1jb29raWUtaW52YWxpZGF0ZXMtY2FjaGUtZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsMTIgQEAKK1Rlc3RzIHRoYXQgZG9jdW1lbnQuY29va2llIHJldHVybnMgdGhlIHJpZ2h0IHZh
bHVlIGFmdGVyIGEgc3luYyBYSFIKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BB
U1Mgbm9ybWFsaXplQ29va2llKGRvY3VtZW50LmNvb2tpZSkgaXMgInRlc3RLZXk9dGVzdFZhbHVl
IgorUEFTUyB4aHIuc3RhdHVzIGlzIDIwMAorUEFTUyBub3JtYWxpemVDb29raWUoZG9jdW1lbnQu
Y29va2llKSBpcyAidGVzdEtleT10ZXN0VmFsdWU7IHhocktleT14aHJWYWx1ZSIKK1BBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nvb2tpZXMvc3luYy14aHItc2V0LWNvb2tpZS1pbnZhbGlk
YXRlcy1jYWNoZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb29raWVzL3N5bmMteGhy
LXNldC1jb29raWUtaW52YWxpZGF0ZXMtY2FjaGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMDkwOTBmM2Q3
OWE1MjVlYTc4NWNmNGE2NTE2MTgxMTk1OTZmMGRlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9jb29raWVzL3N5bmMteGhyLXNldC1jb29raWUtaW52YWxpZGF0ZXMt
Y2FjaGUuaHRtbApAQCAtMCwwICsxLDIyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxzY3JpcHQgc3Jj
PSdyZXNvdXJjZXMvY29va2llcy10ZXN0LXByZS5qcyc+PC9zY3JpcHQ+CisKKzxzY3JpcHQ+Citk
ZXNjcmlwdGlvbignVGVzdHMgdGhhdCBkb2N1bWVudC5jb29raWUgcmV0dXJucyB0aGUgcmlnaHQg
dmFsdWUgYWZ0ZXIgYSBzeW5jIFhIUicpOworCitkb2N1bWVudC5jb29raWUgPSAidGVzdEtleT10
ZXN0VmFsdWUiOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdub3JtYWxpemVDb29raWUoZG9jdW1l
bnQuY29va2llKScsICd0ZXN0S2V5PXRlc3RWYWx1ZScpOwordmFyIHhociA9IG5ldyBYTUxIdHRw
UmVxdWVzdCgpOworeGhyLm9wZW4oJ0dFVCcsICdyZXNvdXJjZXMvc2V0Q29va2llcy5jZ2knLCBm
YWxzZSk7Cit2YXIgY29va2llID0gJ3hocktleT14aHJWYWx1ZTsgcGF0aD0vJzsKK3hoci5zZXRS
ZXF1ZXN0SGVhZGVyKCdTRVQtQ09PS0lFJywgY29va2llKTsKK3hoci5zZW5kKCk7CisKKy8vIFRo
aXMgaXMgc28gdGhlIGNvb2tpZSBnZXRzIHJlbW92ZWQgYXQgdGhlIGVuZCBvZiB0aGUgdGVzdC4K
K3JlZ2lzdGVyQ29va2llRm9yQ2xlYW51cChjb29raWUpOworCitzaG91bGRCZSgneGhyLnN0YXR1
cycsICcyMDAnKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygnbm9ybWFsaXplQ29va2llKGRvY3Vt
ZW50LmNvb2tpZSknLCAndGVzdEtleT10ZXN0VmFsdWU7IHhocktleT14aHJWYWx1ZScpOworCis8
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSdyZXNvdXJjZXMvY29va2llcy10ZXN0LXBvc3QuanMnPjwv
c2NyaXB0Pgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>