<?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>133483</bug_id>
          
          <creation_ts>2014-06-03 09:51:09 -0700</creation_ts>
          <short_desc>[Curl] Empty headers in request response.</short_desc>
          <delta_ts>2014-06-11 10:52:01 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter>peavo</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>achristensen</cc>
    
    <cc>alex.christensen</cc>
    
    <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>galpeter</cc>
    
    <cc>mmatyas</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1013108</commentid>
    <comment_count>0</comment_count>
    <who name="">peavo</who>
    <bug_when>2014-06-03 09:51:09 -0700</bug_when>
    <thetext>When a request is taken from the cache, it&apos;s cached response headers are empty, if the cache entry was created in the same session.
It is only when the cache entry is loaded from disc, that the response headers are properly set.
We need to set the cached response headers in both cases.

There is also an issue if two jobs are loading the same url at the same time. Both jobs will then write to the cache content file, and create invalid content.
This can be fixed by only letting the first request write to the content file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1013111</commentid>
    <comment_count>1</comment_count>
      <attachid>232431</attachid>
    <who name="">peavo</who>
    <bug_when>2014-06-03 10:11:00 -0700</bug_when>
    <thetext>Created attachment 232431
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1013464</commentid>
    <comment_count>2</comment_count>
    <who name="Alex Christensen">alex.christensen</who>
    <bug_when>2014-06-04 23:41:12 -0700</bug_when>
    <thetext>You should add checks to see if job is null before dereferencing it. Are raw pointers really the best thing to use here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1013542</commentid>
    <comment_count>3</comment_count>
      <attachid>232553</attachid>
    <who name="">peavo</who>
    <bug_when>2014-06-05 08:59:54 -0700</bug_when>
    <thetext>Created attachment 232553
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1013545</commentid>
    <comment_count>4</comment_count>
    <who name="">peavo</who>
    <bug_when>2014-06-05 09:00:53 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; You should add checks to see if job is null before dereferencing it. Are raw pointers really the best thing to use here?

Thanks for looking into this :) Added null pointer checks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1013574</commentid>
    <comment_count>5</comment_count>
      <attachid>232553</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2014-06-05 10:05:16 -0700</bug_when>
    <thetext>Comment on attachment 232553
Patch

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

&gt; Source/WebCore/ChangeLog:13
&gt; +        This can be fixed by only letting the first request write to the content file.

Does this also protect against another process writing to the file?

&gt; Source/WebCore/platform/network/curl/CurlCacheManager.cpp:142
&gt; +        std::unique_ptr&lt;CurlCacheEntry&gt; cacheEntry(new CurlCacheEntry(url, 0, m_cacheDir));

This 0 should be a nullptr.  Also, try using std::make_unique instead of new.

&gt; Source/WebCore/platform/network/curl/CurlCacheManager.cpp:219
&gt; +        std::unique_ptr&lt;CurlCacheEntry&gt; cacheEntry(new CurlCacheEntry(url, job, m_cacheDir));

make_unique</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1013624</commentid>
    <comment_count>6</comment_count>
      <attachid>232573</attachid>
    <who name="">peavo</who>
    <bug_when>2014-06-05 12:41:01 -0700</bug_when>
    <thetext>Created attachment 232573
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1013626</commentid>
    <comment_count>7</comment_count>
    <who name="">peavo</who>
    <bug_when>2014-06-05 12:43:27 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 232553 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=232553&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:13
&gt; &gt; +        This can be fixed by only letting the first request write to the content file.
&gt; 
&gt; Does this also protect against another process writing to the file?
&gt;

No, I don&apos;t believe it&apos;s designed to handle access by multiple processes.
 
&gt; &gt; Source/WebCore/platform/network/curl/CurlCacheManager.cpp:142
&gt; &gt; +        std::unique_ptr&lt;CurlCacheEntry&gt; cacheEntry(new CurlCacheEntry(url, 0, m_cacheDir));
&gt; 
&gt; This 0 should be a nullptr.  Also, try using std::make_unique instead of new.
&gt; 
&gt; &gt; Source/WebCore/platform/network/curl/CurlCacheManager.cpp:219
&gt; &gt; +        std::unique_ptr&lt;CurlCacheEntry&gt; cacheEntry(new CurlCacheEntry(url, job, m_cacheDir));
&gt; 
&gt; make_unique

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1013678</commentid>
    <comment_count>8</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2014-06-05 16:17:48 -0700</bug_when>
    <thetext>This looks good to me, but a reviewer will have to r+ it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1013741</commentid>
    <comment_count>9</comment_count>
      <attachid>232573</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-06-05 22:32:55 -0700</bug_when>
    <thetext>Comment on attachment 232573
Patch

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

I think this looks good, but it could be made a bit tighter.

&gt; Source/WebCore/platform/network/curl/CurlCacheEntry.cpp:48
&gt; +CurlCacheEntry::CurlCacheEntry(const String&amp; url, ResourceHandle* job, const String&amp; cacheDir)

This could be a reference...

&gt; Source/WebCore/platform/network/curl/CurlCacheEntry.h:64
&gt; +    const ResourceHandle* getJob() const { return m_job; }

This could then return a reference...

&gt; Source/WebCore/platform/network/curl/CurlCacheEntry.h:80
&gt; +    ResourceHandle* m_job;

This could just be a const reference, since m_job doesn&apos;t appear to be allowed to be null, does it?

&gt; Source/WebCore/platform/network/curl/CurlCacheManager.cpp:142
&gt; +        std::unique_ptr&lt;CurlCacheEntry&gt; cacheEntry = std::make_unique&lt;CurlCacheEntry&gt;(url, nullptr, m_cacheDir);

auto cacheEntry!

&gt; Source/WebCore/platform/network/curl/CurlCacheManager.cpp:213
&gt; +        HashMap&lt;String, std::unique_ptr&lt;CurlCacheEntry&gt;&gt;::iterator it = m_index.find(url);

This would be better as auto to avoid having to type all that stuff out.

&gt; Source/WebCore/platform/network/curl/CurlCacheManager.cpp:219
&gt; +        std::unique_ptr&lt;CurlCacheEntry&gt; cacheEntry = std::make_unique&lt;CurlCacheEntry&gt;(url, job, m_cacheDir);

auto cacheEntry

&gt; Source/WebCore/platform/network/curl/CurlCacheManager.cpp:230
&gt; +void CurlCacheManager::didFinishLoading(ResourceHandle* job)

Make this a ResourceHandle&amp; ...

&gt; Source/WebCore/platform/network/curl/CurlCacheManager.cpp:236
&gt; +        return;

... and get rid of this null check!

&gt; Source/WebCore/platform/network/curl/CurlCacheManager.cpp:276
&gt; +void CurlCacheManager::didReceiveData(ResourceHandle* job, const char* data, size_t size)

Make this a reference ...

&gt; Source/WebCore/platform/network/curl/CurlCacheManager.cpp:282
&gt; +        return;

... and get rid of this null check.

&gt; Source/WebCore/platform/network/curl/CurlCacheManager.cpp:331
&gt; +void CurlCacheManager::didFail(ResourceHandle *job)

Make this a reference ...

&gt; Source/WebCore/platform/network/curl/CurlCacheManager.cpp:334
&gt; +        return;

... and get rid of this null check.

&gt; Source/WebCore/platform/network/curl/CurlCacheManager.h:55
&gt; +    void didFail(ResourceHandle*);

These could all be (const ResourceHandle&amp;), since &apos;job&apos; is never NULL in the use cases you are changing.

&gt; Source/WebCore/platform/network/curl/ResourceHandleManager.cpp:328
&gt; +        CurlCacheManager::getInstance().didReceiveData(job, static_cast&lt;char*&gt;(ptr), totalSize);

&apos;job&apos; was always non-null here, so why not pass it as a reference?

&gt; Source/WebCore/platform/network/curl/ResourceHandleManager.cpp:692
&gt; +                CurlCacheManager::getInstance().didFinishLoading(job);

ditto: &apos;job&apos; was always non-null here, so why not pass it as a reference?

&gt; Source/WebCore/platform/network/curl/ResourceHandleManager.cpp:704
&gt; +                CurlCacheManager::getInstance().didFail(job);

ditto: &apos;job&apos; was always non-null here, so why not pass it as a reference?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1013788</commentid>
    <comment_count>10</comment_count>
      <attachid>232615</attachid>
    <who name="">peavo</who>
    <bug_when>2014-06-06 09:04:04 -0700</bug_when>
    <thetext>Created attachment 232615
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1013789</commentid>
    <comment_count>11</comment_count>
    <who name="">peavo</who>
    <bug_when>2014-06-06 09:12:46 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 232573 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=232573&amp;action=review
&gt; 

Thanks for reviewing :)

&gt; I think this looks good, but it could be made a bit tighter.
&gt; 
&gt; &gt; Source/WebCore/platform/network/curl/CurlCacheEntry.cpp:48
&gt; &gt; +CurlCacheEntry::CurlCacheEntry(const String&amp; url, ResourceHandle* job, const String&amp; cacheDir)
&gt; 
&gt; This could be a reference...
&gt; 
&gt; &gt; Source/WebCore/platform/network/curl/CurlCacheEntry.h:64
&gt; &gt; +    const ResourceHandle* getJob() const { return m_job; }
&gt; 
&gt; This could then return a reference...
&gt; 
&gt; &gt; Source/WebCore/platform/network/curl/CurlCacheEntry.h:80
&gt; &gt; +    ResourceHandle* m_job;
&gt; 
&gt; This could just be a const reference, since m_job doesn&apos;t appear to be allowed to be null, does it?
&gt; 

I left this as is, since m_job will be null if the entry is loaded from disc, there will be no associated job then.

&gt; &gt; Source/WebCore/platform/network/curl/CurlCacheManager.cpp:142
&gt; &gt; +        std::unique_ptr&lt;CurlCacheEntry&gt; cacheEntry = std::make_unique&lt;CurlCacheEntry&gt;(url, nullptr, m_cacheDir);
&gt; 
&gt; auto cacheEntry!
&gt; 
&gt; &gt; Source/WebCore/platform/network/curl/CurlCacheManager.cpp:213
&gt; &gt; +        HashMap&lt;String, std::unique_ptr&lt;CurlCacheEntry&gt;&gt;::iterator it = m_index.find(url);
&gt; 
&gt; This would be better as auto to avoid having to type all that stuff out.
&gt; 
&gt; &gt; Source/WebCore/platform/network/curl/CurlCacheManager.cpp:219
&gt; &gt; +        std::unique_ptr&lt;CurlCacheEntry&gt; cacheEntry = std::make_unique&lt;CurlCacheEntry&gt;(url, job, m_cacheDir);
&gt; 
&gt; auto cacheEntry
&gt; 
&gt; &gt; Source/WebCore/platform/network/curl/CurlCacheManager.cpp:230
&gt; &gt; +void CurlCacheManager::didFinishLoading(ResourceHandle* job)
&gt; 
&gt; Make this a ResourceHandle&amp; ...
&gt; 
&gt; &gt; Source/WebCore/platform/network/curl/CurlCacheManager.cpp:236
&gt; &gt; +        return;
&gt; 
&gt; ... and get rid of this null check!
&gt; 
&gt; &gt; Source/WebCore/platform/network/curl/CurlCacheManager.cpp:276
&gt; &gt; +void CurlCacheManager::didReceiveData(ResourceHandle* job, const char* data, size_t size)
&gt; 

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1014787</commentid>
    <comment_count>12</comment_count>
      <attachid>232615</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-06-11 09:56:03 -0700</bug_when>
    <thetext>Comment on attachment 232615
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1014794</commentid>
    <comment_count>13</comment_count>
      <attachid>232615</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-06-11 10:28:01 -0700</bug_when>
    <thetext>Comment on attachment 232615
Patch

Clearing flags on attachment: 232615

Committed r169811: &lt;http://trac.webkit.org/changeset/169811&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1014795</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-06-11 10:28:04 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1014805</commentid>
    <comment_count>15</comment_count>
    <who name="">peavo</who>
    <bug_when>2014-06-11 10:52:01 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (From update of attachment 232615 [details])
&gt; r=me

Thanks!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>232431</attachid>
            <date>2014-06-03 10:11:00 -0700</date>
            <delta_ts>2014-06-05 08:59:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-133483-20140603191019.patch</filename>
            <type>text/plain</type>
            <size>12542</size>
            <attacher>peavo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2OTU2MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4IEBACisyMDE0LTA2LTAzICBwZWF2b0Bv
dXRsb29rLmNvbSAgPHBlYXZvQG91dGxvb2suY29tPgorCisgICAgICAgIFtDdXJsXSBFbXB0eSBo
ZWFkZXJzIGluIHJlcXVlc3QgcmVzcG9uc2UuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMzM0ODMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBXaGVuIGEgcmVxdWVzdCBpcyB0YWtlbiBmcm9tIHRoZSBjYWNo
ZSwgaXRzIGNhY2hlZCByZXNwb25zZSBoZWFkZXJzIGFyZSBlbXB0eSwgaWYgdGhlIGNhY2hlIGVu
dHJ5IHdhcyBjcmVhdGVkIGluIHRoZSBzYW1lIHNlc3Npb24uCisgICAgICAgIEl0IGlzIG9ubHkg
d2hlbiB0aGUgY2FjaGUgZW50cnkgaXMgbG9hZGVkIGZyb20gZGlzYywgdGhhdCB0aGUgcmVzcG9u
c2UgaGVhZGVycyBhcmUgcHJvcGVybHkgc2V0LgorICAgICAgICBXZSBuZWVkIHRvIHNldCB0aGUg
Y2FjaGVkIHJlc3BvbnNlIGhlYWRlcnMgaW4gYm90aCBjYXNlcy4KKyAgICAgICAgVGhlcmUgaXMg
YWxzbyBhbiBpc3N1ZSBpZiB0d28gam9icyBhcmUgbG9hZGluZyB0aGUgc2FtZSB1cmwgYXQgdGhl
IHNhbWUgdGltZS4KKyAgICAgICAgQm90aCBqb2JzIHdpbGwgdGhlbiB3cml0ZSB0byB0aGUgY2Fj
aGUgY29udGVudCBmaWxlLCBhbmQgY3JlYXRlIGludmFsaWQgY29udGVudC4KKyAgICAgICAgVGhp
cyBjYW4gYmUgZml4ZWQgYnkgb25seSBsZXR0aW5nIHRoZSBmaXJzdCByZXF1ZXN0IHdyaXRlIHRv
IHRoZSBjb250ZW50IGZpbGUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bENhY2hlRW50cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybENhY2hlRW50cnk6OkN1cmxD
YWNoZUVudHJ5KToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxDYWNoZUVudHJ5Ojppc0xvYWRpbmcp
OiBBZGRlZCBtZXRob2QgdG8gY2hlY2sgaWYgY2FjaGUgZW50cnkgaXMgbG9hZGluZyB0aGUgY29u
dGVudC4KKyAgICAgICAgKFdlYkNvcmU6OkN1cmxDYWNoZUVudHJ5OjpzYXZlUmVzcG9uc2VIZWFk
ZXJzKTogU2V0IHRoZSBjYWNoZWQgcmVzcG9uc2UgaGVhZGVycyB3aGVuIHJlc3BvbnNlIGlzIHNh
dmVkLgorICAgICAgICAoV2ViQ29yZTo6Q3VybENhY2hlRW50cnk6OmludmFsaWRhdGUpOiBUbyBi
ZSBvbiB0aGUgc2FmZSBzaWRlLCBjbG9zZSBjb250ZW50IGZpbGUgd2hlbiBlbnRyeSBpcyBpbnZh
bGlkYXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkN1cmxDYWNoZUVudHJ5OjpwYXJzZVJlc3BvbnNl
SGVhZGVycyk6IE1hZGUgcGFyYW1ldGVyIGNvbnN0LgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5oOiBLZWVwIHRyYWNrIG9mIHdoaWNoIGpvYiBpcyBjcmVh
dGluZyB0aGlzIGNhY2hlIGVudHJ5LgorICAgICAgICAoV2ViQ29yZTo6Q3VybENhY2hlRW50cnk6
OmdldEpvYik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFn
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybENhY2hlTWFuYWdlcjo6bG9hZEluZGV4KTog
V2hlbiBjYWNoZSBlbnRyeSBpcyBsb2FkZWQgZnJvbSBkaXNjLCB0aGVyZSBpcyBubyBhc3NvY2lh
dGVkIGpvYi4KKyAgICAgICAgKFdlYkNvcmU6OkN1cmxDYWNoZU1hbmFnZXI6OmRpZFJlY2VpdmVS
ZXNwb25zZSk6IEJhaWwgb3V0IGlmIGNhY2hlIGVudHJ5IGlzIGFscmVhZHkgY3VycmVudGx5IGxv
YWRpbmcsCisgICAgICAgIG90aGVyd2lzZSBhc3NvY2lhdGUgdGhpcyBqb2Igd2l0aCB0aGUgbmV3
IGNhY2hlIGVudHJ5LgorICAgICAgICAoV2ViQ29yZTo6Q3VybENhY2hlTWFuYWdlcjo6ZGlkRmlu
aXNoTG9hZGluZyk6IENoYW5nZWQgcGFyYW1ldGVyIHR5cGUuCisgICAgICAgIChXZWJDb3JlOjpD
dXJsQ2FjaGVNYW5hZ2VyOjppc0NhY2hlZCk6IERvbid0IHJlcG9ydCB0aGUgdXJsIGFzIGNhY2hl
ZCBpZiBpdCdzIGN1cnJlbnRseSBsb2FkaW5nIGNvbnRlbnQuCisgICAgICAgIChXZWJDb3JlOjpD
dXJsQ2FjaGVNYW5hZ2VyOjpkaWRSZWNlaXZlRGF0YSk6IERvbid0IHdyaXRlIHRvIHRoZSBjb250
ZW50IGZpbGUgaWYgdGhlIGVudHJ5IGlzIG5vdCBhc3NvY2lhdGVkIHdpdGggdGhlIGpvYi4KKyAg
ICAgICAgKFdlYkNvcmU6OkN1cmxDYWNoZU1hbmFnZXI6OmRpZEZhaWwpOiBDaGFuZ2VkIHBhcmFt
ZXRlciB0eXBlLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5h
Z2VyLmg6IENoYW5nZWQgcGFyYW1ldGVyIHR5cGUuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9jdXJsL1Jlc291cmNlSGFuZGxlTWFuYWdlci5jcHA6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6d3JpdGVDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZU1hbmFn
ZXI6OmRvd25sb2FkVGltZXJDYWxsYmFjayk6CisKIDIwMTQtMDYtMDMgIENhcmxvcyBHYXJjaWEg
Q2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtTT1VQXSBSZXNvdXJjZUxv
YWRUaW1pbmcucmVzcG9uc2VTdGFydCBpcyBhbHdheXMgMApJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwCShy
ZXZpc2lvbiAxNjk1NjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybENhY2hlRW50cnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSwxMyArNDUsMTQgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1DdXJsQ2FjaGVFbnRyeTo6Q3VybENhY2hlRW50cnkoY29u
c3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgY2FjaGVEaXIpCitDdXJsQ2FjaGVFbnRyeTo6
Q3VybENhY2hlRW50cnkoY29uc3QgU3RyaW5nJiB1cmwsIFJlc291cmNlSGFuZGxlKiBqb2IsIGNv
bnN0IFN0cmluZyYgY2FjaGVEaXIpCiAgICAgOiBtX2hlYWRlckZpbGVuYW1lKGNhY2hlRGlyKQog
ICAgICwgbV9jb250ZW50RmlsZW5hbWUoY2FjaGVEaXIpCiAgICAgLCBtX2NvbnRlbnRGaWxlKGlu
dmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCiAgICAgLCBtX2VudHJ5U2l6ZSgwKQogICAgICwgbV9l
eHBpcmVEYXRlKC0xKQogICAgICwgbV9oZWFkZXJQYXJzZWQoZmFsc2UpCisgICAgLCBtX2pvYihq
b2IpCiB7CiAgICAgZ2VuZXJhdGVCYXNlRmlsZW5hbWUodXJsLmxhdGluMSgpKTsKIApAQCAtNjcs
NiArNjgsMTEgQEAgQ3VybENhY2hlRW50cnk6On5DdXJsQ2FjaGVFbnRyeSgpCiAgICAgY2xvc2VD
b250ZW50RmlsZSgpOwogfQogCitib29sIEN1cmxDYWNoZUVudHJ5Ojppc0xvYWRpbmcoKQorewor
ICAgIHJldHVybiBpc0hhbmRsZVZhbGlkKG1fY29udGVudEZpbGUpOworfQorCiAvLyBDYWNoZSBt
YW5hZ2VyIHNob3VsZCBpbnZhbGlkYXRlIHRoZSBlbnRyeSBvbiBmYWxzZQogYm9vbCBDdXJsQ2Fj
aGVFbnRyeTo6aXNDYWNoZWQoKQogewpAQCAtMTEyLDcgKzExOCw3IEBAIGJvb2wgQ3VybENhY2hl
RW50cnk6OnJlYWRDYWNoZWREYXRhKFJlc28KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBD
dXJsQ2FjaGVFbnRyeTo6c2F2ZVJlc3BvbnNlSGVhZGVycyhSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSkKK2Jvb2wgQ3VybENhY2hlRW50cnk6OnNhdmVSZXNwb25zZUhlYWRlcnMoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAgUGxhdGZvcm1GaWxlSGFuZGxlIGhlYWRl
ckZpbGUgPSBvcGVuRmlsZShtX2hlYWRlckZpbGVuYW1lLCBPcGVuRm9yV3JpdGUpOwogICAgIGlm
ICghaXNIYW5kbGVWYWxpZChoZWFkZXJGaWxlKSkgewpAQCAtMTMwLDYgKzEzNiw3IEBAIGJvb2wg
Q3VybENhY2hlRW50cnk6OnNhdmVSZXNwb25zZUhlYWRlcnMKICAgICAgICAgaGVhZGVyRmllbGQu
YXBwZW5kKCJcbiIpOwogICAgICAgICBDU3RyaW5nIGhlYWRlckZpZWxkTGF0aW4xID0gaGVhZGVy
RmllbGQubGF0aW4xKCk7CiAgICAgICAgIHdyaXRlVG9GaWxlKGhlYWRlckZpbGUsIGhlYWRlckZp
ZWxkTGF0aW4xLmRhdGEoKSwgaGVhZGVyRmllbGRMYXRpbjEubGVuZ3RoKCkpOworICAgICAgICBt
X2NhY2hlZFJlc3BvbnNlLnNldEhUVFBIZWFkZXJGaWVsZChpdC0+a2V5LCBpdC0+dmFsdWUpOwog
ICAgICAgICArK2l0OwogICAgIH0KIApAQCAtMjUzLDEyICsyNjAsMTMgQEAgYm9vbCBDdXJsQ2Fj
aGVFbnRyeTo6bG9hZEZpbGVUb0J1ZmZlcihjbwogCiB2b2lkIEN1cmxDYWNoZUVudHJ5OjppbnZh
bGlkYXRlKCkKIHsKKyAgICBjbG9zZUNvbnRlbnRGaWxlKCk7CiAgICAgZGVsZXRlRmlsZShtX2hl
YWRlckZpbGVuYW1lKTsKICAgICBkZWxldGVGaWxlKG1fY29udGVudEZpbGVuYW1lKTsKICAgICBM
T0coTmV0d29yaywgIkNhY2hlOiBpbnZhbGlkYXRlZCAlc1xuIiwgbV9iYXNlbmFtZS5sYXRpbjEo
KS5kYXRhKCkpOwogfQogCi1ib29sIEN1cmxDYWNoZUVudHJ5OjpwYXJzZVJlc3BvbnNlSGVhZGVy
cyhSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK2Jvb2wgQ3VybENhY2hlRW50cnk6OnBhcnNl
UmVzcG9uc2VIZWFkZXJzKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewogICAg
IGRvdWJsZSBmaWxlVGltZTsKICAgICB0aW1lX3QgZmlsZU1vZGlmaWNhdGlvbkRhdGU7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENh
Y2hlRW50cnkuaAkocmV2aXNpb24gMTY5NTYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDI0ICs0
MSwyNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDdXJsQ2FjaGVFbnRyeSB7CiAKIHB1
YmxpYzoKLSAgICBDdXJsQ2FjaGVFbnRyeShjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5n
JiBjYWNoZURpcik7CisgICAgQ3VybENhY2hlRW50cnkoY29uc3QgU3RyaW5nJiB1cmwsIFJlc291
cmNlSGFuZGxlKiBqb2IsIGNvbnN0IFN0cmluZyYgY2FjaGVEaXIpOwogICAgIH5DdXJsQ2FjaGVF
bnRyeSgpOwogCiAgICAgYm9vbCBpc0NhY2hlZCgpOworICAgIGJvb2wgaXNMb2FkaW5nKCk7CiAg
ICAgc2l6ZV90IGVudHJ5U2l6ZSgpOwogICAgIEhUVFBIZWFkZXJNYXAmIHJlcXVlc3RIZWFkZXJz
KCkgeyByZXR1cm4gbV9yZXF1ZXN0SGVhZGVyczsgfQogCiAgICAgYm9vbCBzYXZlQ2FjaGVkRGF0
YShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QpOwogICAgIGJvb2wgcmVhZENhY2hlZERhdGEoUmVz
b3VyY2VIYW5kbGUqKTsKIAotICAgIGJvb2wgc2F2ZVJlc3BvbnNlSGVhZGVycyhSZXNvdXJjZVJl
c3BvbnNlJik7CisgICAgYm9vbCBzYXZlUmVzcG9uc2VIZWFkZXJzKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmKTsKICAgICB2b2lkIHNldFJlc3BvbnNlRnJvbUNhY2hlZEhlYWRlcnMoUmVzb3VyY2VS
ZXNwb25zZSYpOwogCiAgICAgdm9pZCBpbnZhbGlkYXRlKCk7CiAgICAgdm9pZCBkaWRGYWlsKCk7
CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKCk7CiAKLSAgICBib29sIHBhcnNlUmVzcG9uc2VI
ZWFkZXJzKFJlc291cmNlUmVzcG9uc2UmKTsKKyAgICBib29sIHBhcnNlUmVzcG9uc2VIZWFkZXJz
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKKworICAgIGNvbnN0IFJlc291cmNlSGFuZGxlKiBn
ZXRKb2IoKSBjb25zdCB7IHJldHVybiBtX2pvYjsgfQogCiBwcml2YXRlOgogICAgIFN0cmluZyBt
X2Jhc2VuYW1lOwpAQCAtNzQsNiArNzcsOCBAQCBwcml2YXRlOgogICAgIFJlc291cmNlUmVzcG9u
c2UgbV9jYWNoZWRSZXNwb25zZTsKICAgICBIVFRQSGVhZGVyTWFwIG1fcmVxdWVzdEhlYWRlcnM7
CiAKKyAgICBSZXNvdXJjZUhhbmRsZSogbV9qb2I7CisKICAgICB2b2lkIGdlbmVyYXRlQmFzZUZp
bGVuYW1lKGNvbnN0IENTdHJpbmcmIHVybCk7CiAgICAgYm9vbCBsb2FkRmlsZVRvQnVmZmVyKGNv
bnN0IFN0cmluZyYgZmlsZXBhdGgsIFZlY3RvcjxjaGFyPiYgYnVmZmVyKTsKICAgICBib29sIGxv
YWRSZXNwb25zZUhlYWRlcnMoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHAJKHJldmlzaW9uIDE2
OTU2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVN
YW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM5LDcgKzEzOSw3IEBAIHZvaWQgQ3VybENh
Y2hlTWFuYWdlcjo6bG9hZEluZGV4KCkKICAgICAgICAgLS1lbmQ7IC8vIExhc3QgbGluZSBpcyBl
bXB0eQogICAgIHdoaWxlIChpdCAhPSBlbmQpIHsKICAgICAgICAgU3RyaW5nIHVybCA9IGl0LT5z
dHJpcFdoaXRlU3BhY2UoKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEN1cmxDYWNoZUVudHJ5
PiBjYWNoZUVudHJ5KG5ldyBDdXJsQ2FjaGVFbnRyeSh1cmwsIG1fY2FjaGVEaXIpKTsKKyAgICAg
ICAgc3RkOjp1bmlxdWVfcHRyPEN1cmxDYWNoZUVudHJ5PiBjYWNoZUVudHJ5KG5ldyBDdXJsQ2Fj
aGVFbnRyeSh1cmwsIDAsIG1fY2FjaGVEaXIpKTsKIAogICAgICAgICBpZiAoY2FjaGVFbnRyeS0+
aXNDYWNoZWQoKSAmJiBjYWNoZUVudHJ5LT5lbnRyeVNpemUoKSA8IG1fc3RvcmFnZVNpemVMaW1p
dCkgewogICAgICAgICAgICAgbV9jdXJyZW50U3RvcmFnZVNpemUgKz0gY2FjaGVFbnRyeS0+ZW50
cnlTaXplKCk7CkBAIC0yMDAsMTYgKzIwMCwyMCBAQCB2b2lkIEN1cmxDYWNoZU1hbmFnZXI6OmRp
ZFJlY2VpdmVSZXNwb25zCiAgICAgaWYgKGQtPm1fY2FuY2VsbGVkKQogICAgICAgICByZXR1cm47
CiAKLSAgICBTdHJpbmcgdXJsID0gam9iLT5maXJzdFJlcXVlc3QoKS51cmwoKS5zdHJpbmcoKTsK
KyAgICBjb25zdCBTdHJpbmcmIHVybCA9IGpvYi0+Zmlyc3RSZXF1ZXN0KCkudXJsKCkuc3RyaW5n
KCk7CiAKICAgICBpZiAocmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSA9PSAzMDQpIHsKICAgICAg
ICAgcmVhZENhY2hlZERhdGEodXJsLCBqb2IsIHJlc3BvbnNlKTsKICAgICAgICAgbV9MUlVFbnRy
eUxpc3QucHJlcGVuZE9yTW92ZVRvRmlyc3QodXJsKTsKICAgICB9CiAgICAgZWxzZSBpZiAocmVz
cG9uc2UuaHR0cFN0YXR1c0NvZGUoKSA9PSAyMDApIHsKKyAgICAgICAgSGFzaE1hcDxTdHJpbmcs
IHN0ZDo6dW5pcXVlX3B0cjxDdXJsQ2FjaGVFbnRyeT4+OjppdGVyYXRvciBpdCA9IG1faW5kZXgu
ZmluZCh1cmwpOworICAgICAgICBpZiAoaXQgIT0gbV9pbmRleC5lbmQoKSAmJiBpdC0+dmFsdWUt
PmlzTG9hZGluZygpKQorICAgICAgICAgICAgcmV0dXJuOworCiAgICAgICAgIGludmFsaWRhdGVD
YWNoZUVudHJ5KHVybCk7IC8vIEludmFsaWRhdGUgZXhpc3RpbmcgZW50cnkgb24gMjAwCiAKLSAg
ICAgICAgc3RkOjp1bmlxdWVfcHRyPEN1cmxDYWNoZUVudHJ5PiBjYWNoZUVudHJ5KG5ldyBDdXJs
Q2FjaGVFbnRyeSh1cmwsIG1fY2FjaGVEaXIpKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEN1
cmxDYWNoZUVudHJ5PiBjYWNoZUVudHJ5KG5ldyBDdXJsQ2FjaGVFbnRyeSh1cmwsIGpvYiwgbV9j
YWNoZURpcikpOwogICAgICAgICBib29sIGNhY2hlYWJsZSA9IGNhY2hlRW50cnktPnBhcnNlUmVz
cG9uc2VIZWFkZXJzKHJlc3BvbnNlKTsKICAgICAgICAgaWYgKGNhY2hlYWJsZSkgewogICAgICAg
ICAgICAgbV9MUlVFbnRyeUxpc3QucHJlcGVuZE9yTW92ZVRvRmlyc3QodXJsKTsKQEAgLTIyMCwx
MSArMjI0LDEzIEBAIHZvaWQgQ3VybENhY2hlTWFuYWdlcjo6ZGlkUmVjZWl2ZVJlc3BvbnMKICAg
ICAgICAgaW52YWxpZGF0ZUNhY2hlRW50cnkodXJsKTsKIH0KIAotdm9pZCBDdXJsQ2FjaGVNYW5h
Z2VyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFN0cmluZyYgdXJsKQordm9pZCBDdXJsQ2FjaGVN
YW5hZ2VyOjpkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlSGFuZGxlKiBqb2IpCiB7CiAgICAgaWYg
KG1fZGlzYWJsZWQpCiAgICAgICAgIHJldHVybjsKIAorICAgIGNvbnN0IFN0cmluZyYgdXJsID0g
am9iLT5maXJzdFJlcXVlc3QoKS51cmwoKS5zdHJpbmcoKTsKKwogICAgIEhhc2hNYXA8U3RyaW5n
LCBzdGQ6OnVuaXF1ZV9wdHI8Q3VybENhY2hlRW50cnk+Pjo6aXRlcmF0b3IgaXQgPSBtX2luZGV4
LmZpbmQodXJsKTsKICAgICBpZiAoaXQgIT0gbV9pbmRleC5lbmQoKSkKICAgICAgICAgaXQtPnZh
bHVlLT5kaWRGaW5pc2hMb2FkaW5nKCk7CkBAIC0yMzgsNyArMjQ0LDcgQEAgYm9vbCBDdXJsQ2Fj
aGVNYW5hZ2VyOjppc0NhY2hlZChjb25zdCBTdAogICAgIEhhc2hNYXA8U3RyaW5nLCBzdGQ6OnVu
aXF1ZV9wdHI8Q3VybENhY2hlRW50cnk+Pjo6aXRlcmF0b3IgaXQgPSBtX2luZGV4LmZpbmQodXJs
KTsKICAgICBpZiAoaXQgIT0gbV9pbmRleC5lbmQoKSkgewogICAgICAgICBpZiAoaXQtPnZhbHVl
LT5pc0NhY2hlZCgpKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICByZXR1
cm4gIWl0LT52YWx1ZS0+aXNMb2FkaW5nKCk7CiAKICAgICAgICAgaW52YWxpZGF0ZUNhY2hlRW50
cnkodXJsKTsKICAgICB9CkBAIC0yNjEsMTMgKzI2NywxOCBAQCBib29sIEN1cmxDYWNoZU1hbmFn
ZXI6OmdldENhY2hlZFJlc3BvbnNlCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIEN1cmxD
YWNoZU1hbmFnZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBjaGFy
KiBkYXRhLCBzaXplX3Qgc2l6ZSkKK3ZvaWQgQ3VybENhY2hlTWFuYWdlcjo6ZGlkUmVjZWl2ZURh
dGEoUmVzb3VyY2VIYW5kbGUqIGpvYiwgY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpCiB7
CiAgICAgaWYgKG1fZGlzYWJsZWQpCiAgICAgICAgIHJldHVybjsKIAorICAgIGNvbnN0IFN0cmlu
ZyYgdXJsID0gam9iLT5maXJzdFJlcXVlc3QoKS51cmwoKS5zdHJpbmcoKTsKKwogICAgIEhhc2hN
YXA8U3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8Q3VybENhY2hlRW50cnk+Pjo6aXRlcmF0b3IgaXQg
PSBtX2luZGV4LmZpbmQodXJsKTsKICAgICBpZiAoaXQgIT0gbV9pbmRleC5lbmQoKSkgeworICAg
ICAgICBpZiAoaXQtPnZhbHVlLT5nZXRKb2IoKSAhPSBqb2IpCisgICAgICAgICAgICByZXR1cm47
CisKICAgICAgICAgaWYgKCFpdC0+dmFsdWUtPnNhdmVDYWNoZWREYXRhKGRhdGEsIHNpemUpKQog
ICAgICAgICAgICAgaW52YWxpZGF0ZUNhY2hlRW50cnkodXJsKTsKIApAQCAtMzA4LDggKzMxOSwx
MCBAQCB2b2lkIEN1cmxDYWNoZU1hbmFnZXI6OmludmFsaWRhdGVDYWNoZUVuCiAgICAgbV9MUlVF
bnRyeUxpc3QucmVtb3ZlKHVybCk7CiB9CiAKLXZvaWQgQ3VybENhY2hlTWFuYWdlcjo6ZGlkRmFp
bChjb25zdCBTdHJpbmcmIHVybCkKK3ZvaWQgQ3VybENhY2hlTWFuYWdlcjo6ZGlkRmFpbChSZXNv
dXJjZUhhbmRsZSAqam9iKQogeworICAgIGNvbnN0IFN0cmluZyYgdXJsID0gam9iLT5maXJzdFJl
cXVlc3QoKS51cmwoKS5zdHJpbmcoKTsKKwogICAgIGludmFsaWRhdGVDYWNoZUVudHJ5KHVybCk7
CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2Fj
aGVNYW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuaAkocmV2aXNpb24gMTY5NTYwKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtNTAsOSArNTAsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBnZXRDYWNoZWRSZXNwb25z
ZShjb25zdCBTdHJpbmcmIHVybCwgUmVzb3VyY2VSZXNwb25zZSYpOwogCiAgICAgdm9pZCBkaWRS
ZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAg
dm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBTdHJpbmcmLCBjb25zdCBjaGFyKiwgc2l6ZV90KTsg
Ly8gU2F2ZSBkYXRhCi0gICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFN0cmluZyYpOwot
ICAgIHZvaWQgZGlkRmFpbChjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRh
KFJlc291cmNlSGFuZGxlKiwgY29uc3QgY2hhciosIHNpemVfdCk7IC8vIFNhdmUgZGF0YQorICAg
IHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRsZSopOworICAgIHZvaWQgZGlkRmFp
bChSZXNvdXJjZUhhbmRsZSopOwogCiBwcml2YXRlOgogICAgIEN1cmxDYWNoZU1hbmFnZXIoKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRs
ZU1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9SZXNvdXJjZUhhbmRsZU1hbmFnZXIuY3BwCShyZXZpc2lvbiAxNjk1NjApCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVNYW5hZ2Vy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzI1LDcgKzMyNSw3IEBAIHN0YXRpYyBzaXplX3Qgd3Jp
dGVDYWxsYmFjayh2b2lkKiBwdHIsIHMKICAgICAgICAgZC0+bV9tdWx0aXBhcnRIYW5kbGUtPmNv
bnRlbnRSZWNlaXZlZChzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4ocHRyKSwgdG90YWxTaXplKTsK
ICAgICBlbHNlIGlmIChkLT5jbGllbnQoKSkgewogICAgICAgICBkLT5jbGllbnQoKS0+ZGlkUmVj
ZWl2ZURhdGEoam9iLCBzdGF0aWNfY2FzdDxjaGFyKj4ocHRyKSwgdG90YWxTaXplLCAwKTsKLSAg
ICAgICAgQ3VybENhY2hlTWFuYWdlcjo6Z2V0SW5zdGFuY2UoKS5kaWRSZWNlaXZlRGF0YShqb2It
PmZpcnN0UmVxdWVzdCgpLnVybCgpLnN0cmluZygpLCBzdGF0aWNfY2FzdDxjaGFyKj4ocHRyKSwg
dG90YWxTaXplKTsKKyAgICAgICAgQ3VybENhY2hlTWFuYWdlcjo6Z2V0SW5zdGFuY2UoKS5kaWRS
ZWNlaXZlRGF0YShqb2IsIHN0YXRpY19jYXN0PGNoYXIqPihwdHIpLCB0b3RhbFNpemUpOwogICAg
IH0KIAogICAgIHJldHVybiB0b3RhbFNpemU7CkBAIC02ODksNyArNjg5LDcgQEAgdm9pZCBSZXNv
dXJjZUhhbmRsZU1hbmFnZXI6OmRvd25sb2FkVGltZQogCiAgICAgICAgICAgICBpZiAoZC0+Y2xp
ZW50KCkpIHsKICAgICAgICAgICAgICAgICBkLT5jbGllbnQoKS0+ZGlkRmluaXNoTG9hZGluZyhq
b2IsIDApOwotICAgICAgICAgICAgICAgIEN1cmxDYWNoZU1hbmFnZXI6OmdldEluc3RhbmNlKCku
ZGlkRmluaXNoTG9hZGluZyhqb2ItPmZpcnN0UmVxdWVzdCgpLnVybCgpLnN0cmluZygpKTsKKyAg
ICAgICAgICAgICAgICBDdXJsQ2FjaGVNYW5hZ2VyOjpnZXRJbnN0YW5jZSgpLmRpZEZpbmlzaExv
YWRpbmcoam9iKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
IGNoYXIqIHVybCA9IDA7CkBAIC03MDEsNyArNzAxLDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZU1h
bmFnZXI6OmRvd25sb2FkVGltZQogICAgICAgICAgICAgICAgIFJlc291cmNlRXJyb3IgcmVzb3Vy
Y2VFcnJvcihTdHJpbmcoKSwgbXNnLT5kYXRhLnJlc3VsdCwgU3RyaW5nKHVybCksIFN0cmluZyhj
dXJsX2Vhc3lfc3RyZXJyb3IobXNnLT5kYXRhLnJlc3VsdCkpKTsKICAgICAgICAgICAgICAgICBy
ZXNvdXJjZUVycm9yLnNldFNTTEVycm9ycyhkLT5tX3NzbEVycm9ycyk7CiAgICAgICAgICAgICAg
ICAgZC0+Y2xpZW50KCktPmRpZEZhaWwoam9iLCByZXNvdXJjZUVycm9yKTsKLSAgICAgICAgICAg
ICAgICBDdXJsQ2FjaGVNYW5hZ2VyOjpnZXRJbnN0YW5jZSgpLmRpZEZhaWwoam9iLT5maXJzdFJl
cXVlc3QoKS51cmwoKS5zdHJpbmcoKSk7CisgICAgICAgICAgICAgICAgQ3VybENhY2hlTWFuYWdl
cjo6Z2V0SW5zdGFuY2UoKS5kaWRGYWlsKGpvYik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
IAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>232553</attachid>
            <date>2014-06-05 08:59:54 -0700</date>
            <delta_ts>2014-06-05 12:40:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-133483-20140605175913.patch</filename>
            <type>text/plain</type>
            <size>12786</size>
            <attacher>peavo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2OTYxNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4IEBACisyMDE0LTA2LTA1ICBwZWF2b0Bv
dXRsb29rLmNvbSAgPHBlYXZvQG91dGxvb2suY29tPgorCisgICAgICAgIFtDdXJsXSBFbXB0eSBo
ZWFkZXJzIGluIHJlcXVlc3QgcmVzcG9uc2UuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMzM0ODMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBXaGVuIGEgcmVxdWVzdCBpcyB0YWtlbiBmcm9tIHRoZSBjYWNo
ZSwgaXRzIGNhY2hlZCByZXNwb25zZSBoZWFkZXJzIGFyZSBlbXB0eSwgaWYgdGhlIGNhY2hlIGVu
dHJ5IHdhcyBjcmVhdGVkIGluIHRoZSBzYW1lIHNlc3Npb24uCisgICAgICAgIEl0IGlzIG9ubHkg
d2hlbiB0aGUgY2FjaGUgZW50cnkgaXMgbG9hZGVkIGZyb20gZGlzYywgdGhhdCB0aGUgcmVzcG9u
c2UgaGVhZGVycyBhcmUgcHJvcGVybHkgc2V0LgorICAgICAgICBXZSBuZWVkIHRvIHNldCB0aGUg
Y2FjaGVkIHJlc3BvbnNlIGhlYWRlcnMgaW4gYm90aCBjYXNlcy4KKyAgICAgICAgVGhlcmUgaXMg
YWxzbyBhbiBpc3N1ZSBpZiB0d28gam9icyBhcmUgbG9hZGluZyB0aGUgc2FtZSB1cmwgYXQgdGhl
IHNhbWUgdGltZS4KKyAgICAgICAgQm90aCBqb2JzIHdpbGwgdGhlbiB3cml0ZSB0byB0aGUgY2Fj
aGUgY29udGVudCBmaWxlLCBhbmQgY3JlYXRlIGludmFsaWQgY29udGVudC4KKyAgICAgICAgVGhp
cyBjYW4gYmUgZml4ZWQgYnkgb25seSBsZXR0aW5nIHRoZSBmaXJzdCByZXF1ZXN0IHdyaXRlIHRv
IHRoZSBjb250ZW50IGZpbGUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bENhY2hlRW50cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybENhY2hlRW50cnk6OkN1cmxD
YWNoZUVudHJ5KToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxDYWNoZUVudHJ5Ojppc0xvYWRpbmcp
OiBBZGRlZCBtZXRob2QgdG8gY2hlY2sgaWYgY2FjaGUgZW50cnkgaXMgbG9hZGluZyB0aGUgY29u
dGVudC4KKyAgICAgICAgKFdlYkNvcmU6OkN1cmxDYWNoZUVudHJ5OjpzYXZlUmVzcG9uc2VIZWFk
ZXJzKTogU2V0IHRoZSBjYWNoZWQgcmVzcG9uc2UgaGVhZGVycyB3aGVuIHJlc3BvbnNlIGlzIHNh
dmVkLgorICAgICAgICAoV2ViQ29yZTo6Q3VybENhY2hlRW50cnk6OmludmFsaWRhdGUpOiBUbyBi
ZSBvbiB0aGUgc2FmZSBzaWRlLCBjbG9zZSBjb250ZW50IGZpbGUgd2hlbiBlbnRyeSBpcyBpbnZh
bGlkYXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkN1cmxDYWNoZUVudHJ5OjpwYXJzZVJlc3BvbnNl
SGVhZGVycyk6IE1hZGUgcGFyYW1ldGVyIGNvbnN0LgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5oOiBLZWVwIHRyYWNrIG9mIHdoaWNoIGpvYiBpcyBjcmVh
dGluZyB0aGlzIGNhY2hlIGVudHJ5LgorICAgICAgICAoV2ViQ29yZTo6Q3VybENhY2hlRW50cnk6
OmdldEpvYik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFn
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybENhY2hlTWFuYWdlcjo6bG9hZEluZGV4KTog
V2hlbiBjYWNoZSBlbnRyeSBpcyBsb2FkZWQgZnJvbSBkaXNjLCB0aGVyZSBpcyBubyBhc3NvY2lh
dGVkIGpvYi4KKyAgICAgICAgKFdlYkNvcmU6OkN1cmxDYWNoZU1hbmFnZXI6OmRpZFJlY2VpdmVS
ZXNwb25zZSk6IEJhaWwgb3V0IGlmIGNhY2hlIGVudHJ5IGlzIGFscmVhZHkgY3VycmVudGx5IGxv
YWRpbmcsCisgICAgICAgIG90aGVyd2lzZSBhc3NvY2lhdGUgdGhpcyBqb2Igd2l0aCB0aGUgbmV3
IGNhY2hlIGVudHJ5LgorICAgICAgICAoV2ViQ29yZTo6Q3VybENhY2hlTWFuYWdlcjo6ZGlkRmlu
aXNoTG9hZGluZyk6IENoYW5nZWQgcGFyYW1ldGVyIHR5cGUuCisgICAgICAgIChXZWJDb3JlOjpD
dXJsQ2FjaGVNYW5hZ2VyOjppc0NhY2hlZCk6IERvbid0IHJlcG9ydCB0aGUgdXJsIGFzIGNhY2hl
ZCBpZiBpdCdzIGN1cnJlbnRseSBsb2FkaW5nIGNvbnRlbnQuCisgICAgICAgIChXZWJDb3JlOjpD
dXJsQ2FjaGVNYW5hZ2VyOjpkaWRSZWNlaXZlRGF0YSk6IERvbid0IHdyaXRlIHRvIHRoZSBjb250
ZW50IGZpbGUgaWYgdGhlIGVudHJ5IGlzIG5vdCBhc3NvY2lhdGVkIHdpdGggdGhlIGpvYi4KKyAg
ICAgICAgKFdlYkNvcmU6OkN1cmxDYWNoZU1hbmFnZXI6OmRpZEZhaWwpOiBDaGFuZ2VkIHBhcmFt
ZXRlciB0eXBlLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5h
Z2VyLmg6IENoYW5nZWQgcGFyYW1ldGVyIHR5cGUuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9jdXJsL1Jlc291cmNlSGFuZGxlTWFuYWdlci5jcHA6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6d3JpdGVDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZU1hbmFn
ZXI6OmRvd25sb2FkVGltZXJDYWxsYmFjayk6CisKIDIwMTQtMDYtMDUgIEtpcmFuICA8a2lyYW4u
Z3VkdXJ1QHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtNZWRpYVN0cmVhbV0gTWVkaWFTdHJlYW0u
YWRkVHJhY2sgc2hvdWxkIG5vdCBjaGVjayBmb3IgdHJhY2tzIGVuZGVkIHN0YXRlLgpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENh
Y2hlRW50cnkuY3BwCShyZXZpc2lvbiAxNjk1NjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSwx
MyArNDUsMTQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1DdXJsQ2FjaGVFbnRyeTo6Q3Vy
bENhY2hlRW50cnkoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgY2FjaGVEaXIpCitD
dXJsQ2FjaGVFbnRyeTo6Q3VybENhY2hlRW50cnkoY29uc3QgU3RyaW5nJiB1cmwsIFJlc291cmNl
SGFuZGxlKiBqb2IsIGNvbnN0IFN0cmluZyYgY2FjaGVEaXIpCiAgICAgOiBtX2hlYWRlckZpbGVu
YW1lKGNhY2hlRGlyKQogICAgICwgbV9jb250ZW50RmlsZW5hbWUoY2FjaGVEaXIpCiAgICAgLCBt
X2NvbnRlbnRGaWxlKGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCiAgICAgLCBtX2VudHJ5U2l6
ZSgwKQogICAgICwgbV9leHBpcmVEYXRlKC0xKQogICAgICwgbV9oZWFkZXJQYXJzZWQoZmFsc2Up
CisgICAgLCBtX2pvYihqb2IpCiB7CiAgICAgZ2VuZXJhdGVCYXNlRmlsZW5hbWUodXJsLmxhdGlu
MSgpKTsKIApAQCAtNjcsNiArNjgsMTEgQEAgQ3VybENhY2hlRW50cnk6On5DdXJsQ2FjaGVFbnRy
eSgpCiAgICAgY2xvc2VDb250ZW50RmlsZSgpOwogfQogCitib29sIEN1cmxDYWNoZUVudHJ5Ojpp
c0xvYWRpbmcoKQoreworICAgIHJldHVybiBpc0hhbmRsZVZhbGlkKG1fY29udGVudEZpbGUpOwor
fQorCiAvLyBDYWNoZSBtYW5hZ2VyIHNob3VsZCBpbnZhbGlkYXRlIHRoZSBlbnRyeSBvbiBmYWxz
ZQogYm9vbCBDdXJsQ2FjaGVFbnRyeTo6aXNDYWNoZWQoKQogewpAQCAtMTEyLDcgKzExOCw3IEBA
IGJvb2wgQ3VybENhY2hlRW50cnk6OnJlYWRDYWNoZWREYXRhKFJlc28KICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotYm9vbCBDdXJsQ2FjaGVFbnRyeTo6c2F2ZVJlc3BvbnNlSGVhZGVycyhSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSkKK2Jvb2wgQ3VybENhY2hlRW50cnk6OnNhdmVSZXNwb25zZUhl
YWRlcnMoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAgUGxhdGZvcm1G
aWxlSGFuZGxlIGhlYWRlckZpbGUgPSBvcGVuRmlsZShtX2hlYWRlckZpbGVuYW1lLCBPcGVuRm9y
V3JpdGUpOwogICAgIGlmICghaXNIYW5kbGVWYWxpZChoZWFkZXJGaWxlKSkgewpAQCAtMTMwLDYg
KzEzNiw3IEBAIGJvb2wgQ3VybENhY2hlRW50cnk6OnNhdmVSZXNwb25zZUhlYWRlcnMKICAgICAg
ICAgaGVhZGVyRmllbGQuYXBwZW5kKCJcbiIpOwogICAgICAgICBDU3RyaW5nIGhlYWRlckZpZWxk
TGF0aW4xID0gaGVhZGVyRmllbGQubGF0aW4xKCk7CiAgICAgICAgIHdyaXRlVG9GaWxlKGhlYWRl
ckZpbGUsIGhlYWRlckZpZWxkTGF0aW4xLmRhdGEoKSwgaGVhZGVyRmllbGRMYXRpbjEubGVuZ3Ro
KCkpOworICAgICAgICBtX2NhY2hlZFJlc3BvbnNlLnNldEhUVFBIZWFkZXJGaWVsZChpdC0+a2V5
LCBpdC0+dmFsdWUpOwogICAgICAgICArK2l0OwogICAgIH0KIApAQCAtMjUzLDEyICsyNjAsMTMg
QEAgYm9vbCBDdXJsQ2FjaGVFbnRyeTo6bG9hZEZpbGVUb0J1ZmZlcihjbwogCiB2b2lkIEN1cmxD
YWNoZUVudHJ5OjppbnZhbGlkYXRlKCkKIHsKKyAgICBjbG9zZUNvbnRlbnRGaWxlKCk7CiAgICAg
ZGVsZXRlRmlsZShtX2hlYWRlckZpbGVuYW1lKTsKICAgICBkZWxldGVGaWxlKG1fY29udGVudEZp
bGVuYW1lKTsKICAgICBMT0coTmV0d29yaywgIkNhY2hlOiBpbnZhbGlkYXRlZCAlc1xuIiwgbV9i
YXNlbmFtZS5sYXRpbjEoKS5kYXRhKCkpOwogfQogCi1ib29sIEN1cmxDYWNoZUVudHJ5OjpwYXJz
ZVJlc3BvbnNlSGVhZGVycyhSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK2Jvb2wgQ3VybENh
Y2hlRW50cnk6OnBhcnNlUmVzcG9uc2VIZWFkZXJzKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJl
c3BvbnNlKQogewogICAgIGRvdWJsZSBmaWxlVGltZTsKICAgICB0aW1lX3QgZmlsZU1vZGlmaWNh
dGlvbkRhdGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bENhY2hlRW50cnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuaAkocmV2aXNpb24gMTY5NTYwKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQxLDI0ICs0MSwyNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDdXJsQ2Fj
aGVFbnRyeSB7CiAKIHB1YmxpYzoKLSAgICBDdXJsQ2FjaGVFbnRyeShjb25zdCBTdHJpbmcmIHVy
bCwgY29uc3QgU3RyaW5nJiBjYWNoZURpcik7CisgICAgQ3VybENhY2hlRW50cnkoY29uc3QgU3Ry
aW5nJiB1cmwsIFJlc291cmNlSGFuZGxlKiBqb2IsIGNvbnN0IFN0cmluZyYgY2FjaGVEaXIpOwog
ICAgIH5DdXJsQ2FjaGVFbnRyeSgpOwogCiAgICAgYm9vbCBpc0NhY2hlZCgpOworICAgIGJvb2wg
aXNMb2FkaW5nKCk7CiAgICAgc2l6ZV90IGVudHJ5U2l6ZSgpOwogICAgIEhUVFBIZWFkZXJNYXAm
IHJlcXVlc3RIZWFkZXJzKCkgeyByZXR1cm4gbV9yZXF1ZXN0SGVhZGVyczsgfQogCiAgICAgYm9v
bCBzYXZlQ2FjaGVkRGF0YShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QpOwogICAgIGJvb2wgcmVh
ZENhY2hlZERhdGEoUmVzb3VyY2VIYW5kbGUqKTsKIAotICAgIGJvb2wgc2F2ZVJlc3BvbnNlSGVh
ZGVycyhSZXNvdXJjZVJlc3BvbnNlJik7CisgICAgYm9vbCBzYXZlUmVzcG9uc2VIZWFkZXJzKGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICB2b2lkIHNldFJlc3BvbnNlRnJvbUNhY2hlZEhl
YWRlcnMoUmVzb3VyY2VSZXNwb25zZSYpOwogCiAgICAgdm9pZCBpbnZhbGlkYXRlKCk7CiAgICAg
dm9pZCBkaWRGYWlsKCk7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKCk7CiAKLSAgICBib29s
IHBhcnNlUmVzcG9uc2VIZWFkZXJzKFJlc291cmNlUmVzcG9uc2UmKTsKKyAgICBib29sIHBhcnNl
UmVzcG9uc2VIZWFkZXJzKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKKworICAgIGNvbnN0IFJl
c291cmNlSGFuZGxlKiBnZXRKb2IoKSBjb25zdCB7IHJldHVybiBtX2pvYjsgfQogCiBwcml2YXRl
OgogICAgIFN0cmluZyBtX2Jhc2VuYW1lOwpAQCAtNzQsNiArNzcsOCBAQCBwcml2YXRlOgogICAg
IFJlc291cmNlUmVzcG9uc2UgbV9jYWNoZWRSZXNwb25zZTsKICAgICBIVFRQSGVhZGVyTWFwIG1f
cmVxdWVzdEhlYWRlcnM7CiAKKyAgICBSZXNvdXJjZUhhbmRsZSogbV9qb2I7CisKICAgICB2b2lk
IGdlbmVyYXRlQmFzZUZpbGVuYW1lKGNvbnN0IENTdHJpbmcmIHVybCk7CiAgICAgYm9vbCBsb2Fk
RmlsZVRvQnVmZmVyKGNvbnN0IFN0cmluZyYgZmlsZXBhdGgsIFZlY3RvcjxjaGFyPiYgYnVmZmVy
KTsKICAgICBib29sIGxvYWRSZXNwb25zZUhlYWRlcnMoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5j
cHAJKHJldmlzaW9uIDE2OTU2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM5LDcgKzEzOSw3
IEBAIHZvaWQgQ3VybENhY2hlTWFuYWdlcjo6bG9hZEluZGV4KCkKICAgICAgICAgLS1lbmQ7IC8v
IExhc3QgbGluZSBpcyBlbXB0eQogICAgIHdoaWxlIChpdCAhPSBlbmQpIHsKICAgICAgICAgU3Ry
aW5nIHVybCA9IGl0LT5zdHJpcFdoaXRlU3BhY2UoKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRy
PEN1cmxDYWNoZUVudHJ5PiBjYWNoZUVudHJ5KG5ldyBDdXJsQ2FjaGVFbnRyeSh1cmwsIG1fY2Fj
aGVEaXIpKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEN1cmxDYWNoZUVudHJ5PiBjYWNoZUVu
dHJ5KG5ldyBDdXJsQ2FjaGVFbnRyeSh1cmwsIDAsIG1fY2FjaGVEaXIpKTsKIAogICAgICAgICBp
ZiAoY2FjaGVFbnRyeS0+aXNDYWNoZWQoKSAmJiBjYWNoZUVudHJ5LT5lbnRyeVNpemUoKSA8IG1f
c3RvcmFnZVNpemVMaW1pdCkgewogICAgICAgICAgICAgbV9jdXJyZW50U3RvcmFnZVNpemUgKz0g
Y2FjaGVFbnRyeS0+ZW50cnlTaXplKCk7CkBAIC0xOTYsMjAgKzE5NiwyNyBAQCB2b2lkIEN1cmxD
YWNoZU1hbmFnZXI6OmRpZFJlY2VpdmVSZXNwb25zCiAgICAgaWYgKG1fZGlzYWJsZWQpCiAgICAg
ICAgIHJldHVybjsKIAorICAgIGlmICgham9iKQorICAgICAgICByZXR1cm47CisKICAgICBSZXNv
dXJjZUhhbmRsZUludGVybmFsKiBkID0gam9iLT5nZXRJbnRlcm5hbCgpOwogICAgIGlmIChkLT5t
X2NhbmNlbGxlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU3RyaW5nIHVybCA9IGpvYi0+Zmly
c3RSZXF1ZXN0KCkudXJsKCkuc3RyaW5nKCk7CisgICAgY29uc3QgU3RyaW5nJiB1cmwgPSBqb2It
PmZpcnN0UmVxdWVzdCgpLnVybCgpLnN0cmluZygpOwogCiAgICAgaWYgKHJlc3BvbnNlLmh0dHBT
dGF0dXNDb2RlKCkgPT0gMzA0KSB7CiAgICAgICAgIHJlYWRDYWNoZWREYXRhKHVybCwgam9iLCBy
ZXNwb25zZSk7CiAgICAgICAgIG1fTFJVRW50cnlMaXN0LnByZXBlbmRPck1vdmVUb0ZpcnN0KHVy
bCk7CiAgICAgfQogICAgIGVsc2UgaWYgKHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkgPT0gMjAw
KSB7CisgICAgICAgIEhhc2hNYXA8U3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8Q3VybENhY2hlRW50
cnk+Pjo6aXRlcmF0b3IgaXQgPSBtX2luZGV4LmZpbmQodXJsKTsKKyAgICAgICAgaWYgKGl0ICE9
IG1faW5kZXguZW5kKCkgJiYgaXQtPnZhbHVlLT5pc0xvYWRpbmcoKSkKKyAgICAgICAgICAgIHJl
dHVybjsKKwogICAgICAgICBpbnZhbGlkYXRlQ2FjaGVFbnRyeSh1cmwpOyAvLyBJbnZhbGlkYXRl
IGV4aXN0aW5nIGVudHJ5IG9uIDIwMAogCi0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxDdXJsQ2Fj
aGVFbnRyeT4gY2FjaGVFbnRyeShuZXcgQ3VybENhY2hlRW50cnkodXJsLCBtX2NhY2hlRGlyKSk7
CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxDdXJsQ2FjaGVFbnRyeT4gY2FjaGVFbnRyeShuZXcg
Q3VybENhY2hlRW50cnkodXJsLCBqb2IsIG1fY2FjaGVEaXIpKTsKICAgICAgICAgYm9vbCBjYWNo
ZWFibGUgPSBjYWNoZUVudHJ5LT5wYXJzZVJlc3BvbnNlSGVhZGVycyhyZXNwb25zZSk7CiAgICAg
ICAgIGlmIChjYWNoZWFibGUpIHsKICAgICAgICAgICAgIG1fTFJVRW50cnlMaXN0LnByZXBlbmRP
ck1vdmVUb0ZpcnN0KHVybCk7CkBAIC0yMjAsMTEgKzIyNywxNiBAQCB2b2lkIEN1cmxDYWNoZU1h
bmFnZXI6OmRpZFJlY2VpdmVSZXNwb25zCiAgICAgICAgIGludmFsaWRhdGVDYWNoZUVudHJ5KHVy
bCk7CiB9CiAKLXZvaWQgQ3VybENhY2hlTWFuYWdlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBT
dHJpbmcmIHVybCkKK3ZvaWQgQ3VybENhY2hlTWFuYWdlcjo6ZGlkRmluaXNoTG9hZGluZyhSZXNv
dXJjZUhhbmRsZSogam9iKQogewogICAgIGlmIChtX2Rpc2FibGVkKQogICAgICAgICByZXR1cm47
CiAKKyAgICBpZiAoIWpvYikKKyAgICAgICAgcmV0dXJuOworCisgICAgY29uc3QgU3RyaW5nJiB1
cmwgPSBqb2ItPmZpcnN0UmVxdWVzdCgpLnVybCgpLnN0cmluZygpOworCiAgICAgSGFzaE1hcDxT
dHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxDdXJsQ2FjaGVFbnRyeT4+OjppdGVyYXRvciBpdCA9IG1f
aW5kZXguZmluZCh1cmwpOwogICAgIGlmIChpdCAhPSBtX2luZGV4LmVuZCgpKQogICAgICAgICBp
dC0+dmFsdWUtPmRpZEZpbmlzaExvYWRpbmcoKTsKQEAgLTIzOCw3ICsyNTAsNyBAQCBib29sIEN1
cmxDYWNoZU1hbmFnZXI6OmlzQ2FjaGVkKGNvbnN0IFN0CiAgICAgSGFzaE1hcDxTdHJpbmcsIHN0
ZDo6dW5pcXVlX3B0cjxDdXJsQ2FjaGVFbnRyeT4+OjppdGVyYXRvciBpdCA9IG1faW5kZXguZmlu
ZCh1cmwpOwogICAgIGlmIChpdCAhPSBtX2luZGV4LmVuZCgpKSB7CiAgICAgICAgIGlmIChpdC0+
dmFsdWUtPmlzQ2FjaGVkKCkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAg
IHJldHVybiAhaXQtPnZhbHVlLT5pc0xvYWRpbmcoKTsKIAogICAgICAgICBpbnZhbGlkYXRlQ2Fj
aGVFbnRyeSh1cmwpOwogICAgIH0KQEAgLTI2MSwxMyArMjczLDIxIEBAIGJvb2wgQ3VybENhY2hl
TWFuYWdlcjo6Z2V0Q2FjaGVkUmVzcG9uc2UKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQg
Q3VybENhY2hlTWFuYWdlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0
IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKQordm9pZCBDdXJsQ2FjaGVNYW5hZ2VyOjpkaWRSZWNl
aXZlRGF0YShSZXNvdXJjZUhhbmRsZSogam9iLCBjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6
ZSkKIHsKICAgICBpZiAobV9kaXNhYmxlZCkKICAgICAgICAgcmV0dXJuOwogCisgICAgaWYgKCFq
b2IpCisgICAgICAgIHJldHVybjsKKworICAgIGNvbnN0IFN0cmluZyYgdXJsID0gam9iLT5maXJz
dFJlcXVlc3QoKS51cmwoKS5zdHJpbmcoKTsKKwogICAgIEhhc2hNYXA8U3RyaW5nLCBzdGQ6OnVu
aXF1ZV9wdHI8Q3VybENhY2hlRW50cnk+Pjo6aXRlcmF0b3IgaXQgPSBtX2luZGV4LmZpbmQodXJs
KTsKICAgICBpZiAoaXQgIT0gbV9pbmRleC5lbmQoKSkgeworICAgICAgICBpZiAoaXQtPnZhbHVl
LT5nZXRKb2IoKSAhPSBqb2IpCisgICAgICAgICAgICByZXR1cm47CisKICAgICAgICAgaWYgKCFp
dC0+dmFsdWUtPnNhdmVDYWNoZWREYXRhKGRhdGEsIHNpemUpKQogICAgICAgICAgICAgaW52YWxp
ZGF0ZUNhY2hlRW50cnkodXJsKTsKIApAQCAtMzA4LDggKzMyOCwxMyBAQCB2b2lkIEN1cmxDYWNo
ZU1hbmFnZXI6OmludmFsaWRhdGVDYWNoZUVuCiAgICAgbV9MUlVFbnRyeUxpc3QucmVtb3ZlKHVy
bCk7CiB9CiAKLXZvaWQgQ3VybENhY2hlTWFuYWdlcjo6ZGlkRmFpbChjb25zdCBTdHJpbmcmIHVy
bCkKK3ZvaWQgQ3VybENhY2hlTWFuYWdlcjo6ZGlkRmFpbChSZXNvdXJjZUhhbmRsZSAqam9iKQog
eworICAgIGlmICgham9iKQorICAgICAgICByZXR1cm47CisKKyAgICBjb25zdCBTdHJpbmcmIHVy
bCA9IGpvYi0+Zmlyc3RSZXF1ZXN0KCkudXJsKCkuc3RyaW5nKCk7CisKICAgICBpbnZhbGlkYXRl
Q2FjaGVFbnRyeSh1cmwpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmgJKHJldmlzaW9uIDE2OTU2
MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5h
Z2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDkgKzUwLDkgQEAgcHVibGljOgogICAgIGJvb2wg
Z2V0Q2FjaGVkUmVzcG9uc2UoY29uc3QgU3RyaW5nJiB1cmwsIFJlc291cmNlUmVzcG9uc2UmKTsK
IAogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwgUmVzb3VyY2VS
ZXNwb25zZSYpOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgU3RyaW5nJiwgY29uc3Qg
Y2hhciosIHNpemVfdCk7IC8vIFNhdmUgZGF0YQotICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhj
b25zdCBTdHJpbmcmKTsKLSAgICB2b2lkIGRpZEZhaWwoY29uc3QgU3RyaW5nJik7CisgICAgdm9p
ZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IGNoYXIqLCBzaXplX3QpOyAv
LyBTYXZlIGRhdGEKKyAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VIYW5kbGUqKTsK
KyAgICB2b2lkIGRpZEZhaWwoUmVzb3VyY2VIYW5kbGUqKTsKIAogcHJpdmF0ZToKICAgICBDdXJs
Q2FjaGVNYW5hZ2VyKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvUmVzb3VyY2VIYW5kbGVNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVNYW5hZ2VyLmNwcAkocmV2aXNp
b24gMTY5NTYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291
cmNlSGFuZGxlTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyNSw3ICszMjUsNyBAQCBz
dGF0aWMgc2l6ZV90IHdyaXRlQ2FsbGJhY2sodm9pZCogcHRyLCBzCiAgICAgICAgIGQtPm1fbXVs
dGlwYXJ0SGFuZGxlLT5jb250ZW50UmVjZWl2ZWQoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KHB0
ciksIHRvdGFsU2l6ZSk7CiAgICAgZWxzZSBpZiAoZC0+Y2xpZW50KCkpIHsKICAgICAgICAgZC0+
Y2xpZW50KCktPmRpZFJlY2VpdmVEYXRhKGpvYiwgc3RhdGljX2Nhc3Q8Y2hhcio+KHB0ciksIHRv
dGFsU2l6ZSwgMCk7Ci0gICAgICAgIEN1cmxDYWNoZU1hbmFnZXI6OmdldEluc3RhbmNlKCkuZGlk
UmVjZWl2ZURhdGEoam9iLT5maXJzdFJlcXVlc3QoKS51cmwoKS5zdHJpbmcoKSwgc3RhdGljX2Nh
c3Q8Y2hhcio+KHB0ciksIHRvdGFsU2l6ZSk7CisgICAgICAgIEN1cmxDYWNoZU1hbmFnZXI6Omdl
dEluc3RhbmNlKCkuZGlkUmVjZWl2ZURhdGEoam9iLCBzdGF0aWNfY2FzdDxjaGFyKj4ocHRyKSwg
dG90YWxTaXplKTsKICAgICB9CiAKICAgICByZXR1cm4gdG90YWxTaXplOwpAQCAtNjg5LDcgKzY4
OSw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGVNYW5hZ2VyOjpkb3dubG9hZFRpbWUKIAogICAgICAg
ICAgICAgaWYgKGQtPmNsaWVudCgpKSB7CiAgICAgICAgICAgICAgICAgZC0+Y2xpZW50KCktPmRp
ZEZpbmlzaExvYWRpbmcoam9iLCAwKTsKLSAgICAgICAgICAgICAgICBDdXJsQ2FjaGVNYW5hZ2Vy
OjpnZXRJbnN0YW5jZSgpLmRpZEZpbmlzaExvYWRpbmcoam9iLT5maXJzdFJlcXVlc3QoKS51cmwo
KS5zdHJpbmcoKSk7CisgICAgICAgICAgICAgICAgQ3VybENhY2hlTWFuYWdlcjo6Z2V0SW5zdGFu
Y2UoKS5kaWRGaW5pc2hMb2FkaW5nKGpvYik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICBjaGFyKiB1cmwgPSAwOwpAQCAtNzAxLDcgKzcwMSw3IEBAIHZvaWQg
UmVzb3VyY2VIYW5kbGVNYW5hZ2VyOjpkb3dubG9hZFRpbWUKICAgICAgICAgICAgICAgICBSZXNv
dXJjZUVycm9yIHJlc291cmNlRXJyb3IoU3RyaW5nKCksIG1zZy0+ZGF0YS5yZXN1bHQsIFN0cmlu
Zyh1cmwpLCBTdHJpbmcoY3VybF9lYXN5X3N0cmVycm9yKG1zZy0+ZGF0YS5yZXN1bHQpKSk7CiAg
ICAgICAgICAgICAgICAgcmVzb3VyY2VFcnJvci5zZXRTU0xFcnJvcnMoZC0+bV9zc2xFcnJvcnMp
OwogICAgICAgICAgICAgICAgIGQtPmNsaWVudCgpLT5kaWRGYWlsKGpvYiwgcmVzb3VyY2VFcnJv
cik7Ci0gICAgICAgICAgICAgICAgQ3VybENhY2hlTWFuYWdlcjo6Z2V0SW5zdGFuY2UoKS5kaWRG
YWlsKGpvYi0+Zmlyc3RSZXF1ZXN0KCkudXJsKCkuc3RyaW5nKCkpOworICAgICAgICAgICAgICAg
IEN1cmxDYWNoZU1hbmFnZXI6OmdldEluc3RhbmNlKCkuZGlkRmFpbChqb2IpOwogICAgICAgICAg
ICAgfQogICAgICAgICB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>232573</attachid>
            <date>2014-06-05 12:41:01 -0700</date>
            <delta_ts>2014-06-06 09:03:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-133483-20140605214019.patch</filename>
            <type>text/plain</type>
            <size>12784</size>
            <attacher>peavo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2OTYyMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4IEBACisyMDE0LTA2LTA1ICBwZWF2b0Bv
dXRsb29rLmNvbSAgPHBlYXZvQG91dGxvb2suY29tPgorCisgICAgICAgIFtDdXJsXSBFbXB0eSBo
ZWFkZXJzIGluIHJlcXVlc3QgcmVzcG9uc2UuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMzM0ODMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBXaGVuIGEgcmVxdWVzdCBpcyB0YWtlbiBmcm9tIHRoZSBjYWNo
ZSwgaXRzIGNhY2hlZCByZXNwb25zZSBoZWFkZXJzIGFyZSBlbXB0eSwgaWYgdGhlIGNhY2hlIGVu
dHJ5IHdhcyBjcmVhdGVkIGluIHRoZSBzYW1lIHNlc3Npb24uCisgICAgICAgIEl0IGlzIG9ubHkg
d2hlbiB0aGUgY2FjaGUgZW50cnkgaXMgbG9hZGVkIGZyb20gZGlzYywgdGhhdCB0aGUgcmVzcG9u
c2UgaGVhZGVycyBhcmUgcHJvcGVybHkgc2V0LgorICAgICAgICBXZSBuZWVkIHRvIHNldCB0aGUg
Y2FjaGVkIHJlc3BvbnNlIGhlYWRlcnMgaW4gYm90aCBjYXNlcy4KKyAgICAgICAgVGhlcmUgaXMg
YWxzbyBhbiBpc3N1ZSBpZiB0d28gam9icyBhcmUgbG9hZGluZyB0aGUgc2FtZSB1cmwgYXQgdGhl
IHNhbWUgdGltZS4KKyAgICAgICAgQm90aCBqb2JzIHdpbGwgdGhlbiB3cml0ZSB0byB0aGUgY2Fj
aGUgY29udGVudCBmaWxlLCBhbmQgY3JlYXRlIGludmFsaWQgY29udGVudC4KKyAgICAgICAgVGhp
cyBjYW4gYmUgZml4ZWQgYnkgb25seSBsZXR0aW5nIHRoZSBmaXJzdCByZXF1ZXN0IHdyaXRlIHRv
IHRoZSBjb250ZW50IGZpbGUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bENhY2hlRW50cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybENhY2hlRW50cnk6OkN1cmxD
YWNoZUVudHJ5KToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxDYWNoZUVudHJ5Ojppc0xvYWRpbmcp
OiBBZGRlZCBtZXRob2QgdG8gY2hlY2sgaWYgY2FjaGUgZW50cnkgaXMgbG9hZGluZyB0aGUgY29u
dGVudC4KKyAgICAgICAgKFdlYkNvcmU6OkN1cmxDYWNoZUVudHJ5OjpzYXZlUmVzcG9uc2VIZWFk
ZXJzKTogU2V0IHRoZSBjYWNoZWQgcmVzcG9uc2UgaGVhZGVycyB3aGVuIHJlc3BvbnNlIGlzIHNh
dmVkLgorICAgICAgICAoV2ViQ29yZTo6Q3VybENhY2hlRW50cnk6OmludmFsaWRhdGUpOiBUbyBi
ZSBvbiB0aGUgc2FmZSBzaWRlLCBjbG9zZSBjb250ZW50IGZpbGUgd2hlbiBlbnRyeSBpcyBpbnZh
bGlkYXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkN1cmxDYWNoZUVudHJ5OjpwYXJzZVJlc3BvbnNl
SGVhZGVycyk6IE1hZGUgcGFyYW1ldGVyIGNvbnN0LgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5oOiBLZWVwIHRyYWNrIG9mIHdoaWNoIGpvYiBpcyBjcmVh
dGluZyB0aGlzIGNhY2hlIGVudHJ5LgorICAgICAgICAoV2ViQ29yZTo6Q3VybENhY2hlRW50cnk6
OmdldEpvYik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFn
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybENhY2hlTWFuYWdlcjo6bG9hZEluZGV4KTog
V2hlbiBjYWNoZSBlbnRyeSBpcyBsb2FkZWQgZnJvbSBkaXNjLCB0aGVyZSBpcyBubyBhc3NvY2lh
dGVkIGpvYi4KKyAgICAgICAgKFdlYkNvcmU6OkN1cmxDYWNoZU1hbmFnZXI6OmRpZFJlY2VpdmVS
ZXNwb25zZSk6IEJhaWwgb3V0IGlmIGNhY2hlIGVudHJ5IGlzIGFscmVhZHkgY3VycmVudGx5IGxv
YWRpbmcsCisgICAgICAgIG90aGVyd2lzZSBhc3NvY2lhdGUgdGhpcyBqb2Igd2l0aCB0aGUgbmV3
IGNhY2hlIGVudHJ5LgorICAgICAgICAoV2ViQ29yZTo6Q3VybENhY2hlTWFuYWdlcjo6ZGlkRmlu
aXNoTG9hZGluZyk6IENoYW5nZWQgcGFyYW1ldGVyIHR5cGUuCisgICAgICAgIChXZWJDb3JlOjpD
dXJsQ2FjaGVNYW5hZ2VyOjppc0NhY2hlZCk6IERvbid0IHJlcG9ydCB0aGUgdXJsIGFzIGNhY2hl
ZCBpZiBpdCdzIGN1cnJlbnRseSBsb2FkaW5nIGNvbnRlbnQuCisgICAgICAgIChXZWJDb3JlOjpD
dXJsQ2FjaGVNYW5hZ2VyOjpkaWRSZWNlaXZlRGF0YSk6IERvbid0IHdyaXRlIHRvIHRoZSBjb250
ZW50IGZpbGUgaWYgdGhlIGVudHJ5IGlzIG5vdCBhc3NvY2lhdGVkIHdpdGggdGhlIGpvYi4KKyAg
ICAgICAgKFdlYkNvcmU6OkN1cmxDYWNoZU1hbmFnZXI6OmRpZEZhaWwpOiBDaGFuZ2VkIHBhcmFt
ZXRlciB0eXBlLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5h
Z2VyLmg6IENoYW5nZWQgcGFyYW1ldGVyIHR5cGUuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9jdXJsL1Jlc291cmNlSGFuZGxlTWFuYWdlci5jcHA6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6d3JpdGVDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZU1hbmFn
ZXI6OmRvd25sb2FkVGltZXJDYWxsYmFjayk6CisKIDIwMTQtMDYtMDUgIFl1c3VrZSBTdXp1a2kg
IDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgQ1NTIEpJVDogQ2xlYW4gdXAgU3Rh
Y2tBbGxvY2F0b3IKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsQ2FjaGVFbnRyeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcAkocmV2aXNpb24gMTY5NjAwKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDUsMTMgKzQ1LDE0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Q3VybENhY2hlRW50cnk6OkN1cmxDYWNoZUVudHJ5KGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBT
dHJpbmcmIGNhY2hlRGlyKQorQ3VybENhY2hlRW50cnk6OkN1cmxDYWNoZUVudHJ5KGNvbnN0IFN0
cmluZyYgdXJsLCBSZXNvdXJjZUhhbmRsZSogam9iLCBjb25zdCBTdHJpbmcmIGNhY2hlRGlyKQog
ICAgIDogbV9oZWFkZXJGaWxlbmFtZShjYWNoZURpcikKICAgICAsIG1fY29udGVudEZpbGVuYW1l
KGNhY2hlRGlyKQogICAgICwgbV9jb250ZW50RmlsZShpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxl
KQogICAgICwgbV9lbnRyeVNpemUoMCkKICAgICAsIG1fZXhwaXJlRGF0ZSgtMSkKICAgICAsIG1f
aGVhZGVyUGFyc2VkKGZhbHNlKQorICAgICwgbV9qb2Ioam9iKQogewogICAgIGdlbmVyYXRlQmFz
ZUZpbGVuYW1lKHVybC5sYXRpbjEoKSk7CiAKQEAgLTY3LDYgKzY4LDExIEBAIEN1cmxDYWNoZUVu
dHJ5Ojp+Q3VybENhY2hlRW50cnkoKQogICAgIGNsb3NlQ29udGVudEZpbGUoKTsKIH0KIAorYm9v
bCBDdXJsQ2FjaGVFbnRyeTo6aXNMb2FkaW5nKCkKK3sKKyAgICByZXR1cm4gaXNIYW5kbGVWYWxp
ZChtX2NvbnRlbnRGaWxlKTsKK30KKwogLy8gQ2FjaGUgbWFuYWdlciBzaG91bGQgaW52YWxpZGF0
ZSB0aGUgZW50cnkgb24gZmFsc2UKIGJvb2wgQ3VybENhY2hlRW50cnk6OmlzQ2FjaGVkKCkKIHsK
QEAgLTExMiw3ICsxMTgsNyBAQCBib29sIEN1cmxDYWNoZUVudHJ5OjpyZWFkQ2FjaGVkRGF0YShS
ZXNvCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgQ3VybENhY2hlRW50cnk6OnNhdmVSZXNw
b25zZUhlYWRlcnMoUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCitib29sIEN1cmxDYWNoZUVu
dHJ5OjpzYXZlUmVzcG9uc2VIZWFkZXJzKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNl
KQogewogICAgIFBsYXRmb3JtRmlsZUhhbmRsZSBoZWFkZXJGaWxlID0gb3BlbkZpbGUobV9oZWFk
ZXJGaWxlbmFtZSwgT3BlbkZvcldyaXRlKTsKICAgICBpZiAoIWlzSGFuZGxlVmFsaWQoaGVhZGVy
RmlsZSkpIHsKQEAgLTEzMCw2ICsxMzYsNyBAQCBib29sIEN1cmxDYWNoZUVudHJ5OjpzYXZlUmVz
cG9uc2VIZWFkZXJzCiAgICAgICAgIGhlYWRlckZpZWxkLmFwcGVuZCgiXG4iKTsKICAgICAgICAg
Q1N0cmluZyBoZWFkZXJGaWVsZExhdGluMSA9IGhlYWRlckZpZWxkLmxhdGluMSgpOwogICAgICAg
ICB3cml0ZVRvRmlsZShoZWFkZXJGaWxlLCBoZWFkZXJGaWVsZExhdGluMS5kYXRhKCksIGhlYWRl
ckZpZWxkTGF0aW4xLmxlbmd0aCgpKTsKKyAgICAgICAgbV9jYWNoZWRSZXNwb25zZS5zZXRIVFRQ
SGVhZGVyRmllbGQoaXQtPmtleSwgaXQtPnZhbHVlKTsKICAgICAgICAgKytpdDsKICAgICB9CiAK
QEAgLTI1MywxMiArMjYwLDEzIEBAIGJvb2wgQ3VybENhY2hlRW50cnk6OmxvYWRGaWxlVG9CdWZm
ZXIoY28KIAogdm9pZCBDdXJsQ2FjaGVFbnRyeTo6aW52YWxpZGF0ZSgpCiB7CisgICAgY2xvc2VD
b250ZW50RmlsZSgpOwogICAgIGRlbGV0ZUZpbGUobV9oZWFkZXJGaWxlbmFtZSk7CiAgICAgZGVs
ZXRlRmlsZShtX2NvbnRlbnRGaWxlbmFtZSk7CiAgICAgTE9HKE5ldHdvcmssICJDYWNoZTogaW52
YWxpZGF0ZWQgJXNcbiIsIG1fYmFzZW5hbWUubGF0aW4xKCkuZGF0YSgpKTsKIH0KIAotYm9vbCBD
dXJsQ2FjaGVFbnRyeTo6cGFyc2VSZXNwb25zZUhlYWRlcnMoUmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UpCitib29sIEN1cmxDYWNoZUVudHJ5OjpwYXJzZVJlc3BvbnNlSGVhZGVycyhjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKICAgICBkb3VibGUgZmlsZVRpbWU7CiAgICAg
dGltZV90IGZpbGVNb2RpZmljYXRpb25EYXRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmgJKHJldmlzaW9uIDE2
OTYwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVF
bnRyeS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSwyNCArNDEsMjcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogY2xhc3MgQ3VybENhY2hlRW50cnkgewogCiBwdWJsaWM6Ci0gICAgQ3VybENhY2hlRW50
cnkoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgY2FjaGVEaXIpOworICAgIEN1cmxD
YWNoZUVudHJ5KGNvbnN0IFN0cmluZyYgdXJsLCBSZXNvdXJjZUhhbmRsZSogam9iLCBjb25zdCBT
dHJpbmcmIGNhY2hlRGlyKTsKICAgICB+Q3VybENhY2hlRW50cnkoKTsKIAogICAgIGJvb2wgaXND
YWNoZWQoKTsKKyAgICBib29sIGlzTG9hZGluZygpOwogICAgIHNpemVfdCBlbnRyeVNpemUoKTsK
ICAgICBIVFRQSGVhZGVyTWFwJiByZXF1ZXN0SGVhZGVycygpIHsgcmV0dXJuIG1fcmVxdWVzdEhl
YWRlcnM7IH0KIAogICAgIGJvb2wgc2F2ZUNhY2hlZERhdGEoY29uc3QgY2hhciogZGF0YSwgc2l6
ZV90KTsKICAgICBib29sIHJlYWRDYWNoZWREYXRhKFJlc291cmNlSGFuZGxlKik7CiAKLSAgICBi
b29sIHNhdmVSZXNwb25zZUhlYWRlcnMoUmVzb3VyY2VSZXNwb25zZSYpOworICAgIGJvb2wgc2F2
ZVJlc3BvbnNlSGVhZGVycyhjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgdm9pZCBzZXRS
ZXNwb25zZUZyb21DYWNoZWRIZWFkZXJzKFJlc291cmNlUmVzcG9uc2UmKTsKIAogICAgIHZvaWQg
aW52YWxpZGF0ZSgpOwogICAgIHZvaWQgZGlkRmFpbCgpOwogICAgIHZvaWQgZGlkRmluaXNoTG9h
ZGluZygpOwogCi0gICAgYm9vbCBwYXJzZVJlc3BvbnNlSGVhZGVycyhSZXNvdXJjZVJlc3BvbnNl
Jik7CisgICAgYm9vbCBwYXJzZVJlc3BvbnNlSGVhZGVycyhjb25zdCBSZXNvdXJjZVJlc3BvbnNl
Jik7CisKKyAgICBjb25zdCBSZXNvdXJjZUhhbmRsZSogZ2V0Sm9iKCkgY29uc3QgeyByZXR1cm4g
bV9qb2I7IH0KIAogcHJpdmF0ZToKICAgICBTdHJpbmcgbV9iYXNlbmFtZTsKQEAgLTc0LDYgKzc3
LDggQEAgcHJpdmF0ZToKICAgICBSZXNvdXJjZVJlc3BvbnNlIG1fY2FjaGVkUmVzcG9uc2U7CiAg
ICAgSFRUUEhlYWRlck1hcCBtX3JlcXVlc3RIZWFkZXJzOwogCisgICAgUmVzb3VyY2VIYW5kbGUq
IG1fam9iOworCiAgICAgdm9pZCBnZW5lcmF0ZUJhc2VGaWxlbmFtZShjb25zdCBDU3RyaW5nJiB1
cmwpOwogICAgIGJvb2wgbG9hZEZpbGVUb0J1ZmZlcihjb25zdCBTdHJpbmcmIGZpbGVwYXRoLCBW
ZWN0b3I8Y2hhcj4mIGJ1ZmZlcik7CiAgICAgYm9vbCBsb2FkUmVzcG9uc2VIZWFkZXJzKCk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxDYWNoZU1hbmFnZXIuY3BwCShyZXZpc2lvbiAxNjk2MDApCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEzOSw3ICsxMzksNyBAQCB2b2lkIEN1cmxDYWNoZU1hbmFnZXI6OmxvYWRJbmRleCgp
CiAgICAgICAgIC0tZW5kOyAvLyBMYXN0IGxpbmUgaXMgZW1wdHkKICAgICB3aGlsZSAoaXQgIT0g
ZW5kKSB7CiAgICAgICAgIFN0cmluZyB1cmwgPSBpdC0+c3RyaXBXaGl0ZVNwYWNlKCk7Ci0gICAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjxDdXJsQ2FjaGVFbnRyeT4gY2FjaGVFbnRyeShuZXcgQ3VybENh
Y2hlRW50cnkodXJsLCBtX2NhY2hlRGlyKSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxDdXJs
Q2FjaGVFbnRyeT4gY2FjaGVFbnRyeSA9IHN0ZDo6bWFrZV91bmlxdWU8Q3VybENhY2hlRW50cnk+
KHVybCwgbnVsbHB0ciwgbV9jYWNoZURpcik7CiAKICAgICAgICAgaWYgKGNhY2hlRW50cnktPmlz
Q2FjaGVkKCkgJiYgY2FjaGVFbnRyeS0+ZW50cnlTaXplKCkgPCBtX3N0b3JhZ2VTaXplTGltaXQp
IHsKICAgICAgICAgICAgIG1fY3VycmVudFN0b3JhZ2VTaXplICs9IGNhY2hlRW50cnktPmVudHJ5
U2l6ZSgpOwpAQCAtMTk2LDIwICsxOTYsMjcgQEAgdm9pZCBDdXJsQ2FjaGVNYW5hZ2VyOjpkaWRS
ZWNlaXZlUmVzcG9ucwogICAgIGlmIChtX2Rpc2FibGVkKQogICAgICAgICByZXR1cm47CiAKKyAg
ICBpZiAoIWpvYikKKyAgICAgICAgcmV0dXJuOworCiAgICAgUmVzb3VyY2VIYW5kbGVJbnRlcm5h
bCogZCA9IGpvYi0+Z2V0SW50ZXJuYWwoKTsKICAgICBpZiAoZC0+bV9jYW5jZWxsZWQpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIFN0cmluZyB1cmwgPSBqb2ItPmZpcnN0UmVxdWVzdCgpLnVybCgp
LnN0cmluZygpOworICAgIGNvbnN0IFN0cmluZyYgdXJsID0gam9iLT5maXJzdFJlcXVlc3QoKS51
cmwoKS5zdHJpbmcoKTsKIAogICAgIGlmIChyZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpID09IDMw
NCkgewogICAgICAgICByZWFkQ2FjaGVkRGF0YSh1cmwsIGpvYiwgcmVzcG9uc2UpOwogICAgICAg
ICBtX0xSVUVudHJ5TGlzdC5wcmVwZW5kT3JNb3ZlVG9GaXJzdCh1cmwpOwogICAgIH0KICAgICBl
bHNlIGlmIChyZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpID09IDIwMCkgeworICAgICAgICBIYXNo
TWFwPFN0cmluZywgc3RkOjp1bmlxdWVfcHRyPEN1cmxDYWNoZUVudHJ5Pj46Oml0ZXJhdG9yIGl0
ID0gbV9pbmRleC5maW5kKHVybCk7CisgICAgICAgIGlmIChpdCAhPSBtX2luZGV4LmVuZCgpICYm
IGl0LT52YWx1ZS0+aXNMb2FkaW5nKCkpCisgICAgICAgICAgICByZXR1cm47CisKICAgICAgICAg
aW52YWxpZGF0ZUNhY2hlRW50cnkodXJsKTsgLy8gSW52YWxpZGF0ZSBleGlzdGluZyBlbnRyeSBv
biAyMDAKIAotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3VybENhY2hlRW50cnk+IGNhY2hlRW50
cnkobmV3IEN1cmxDYWNoZUVudHJ5KHVybCwgbV9jYWNoZURpcikpOworICAgICAgICBzdGQ6OnVu
aXF1ZV9wdHI8Q3VybENhY2hlRW50cnk+IGNhY2hlRW50cnkgPSBzdGQ6Om1ha2VfdW5pcXVlPEN1
cmxDYWNoZUVudHJ5Pih1cmwsIGpvYiwgbV9jYWNoZURpcik7CiAgICAgICAgIGJvb2wgY2FjaGVh
YmxlID0gY2FjaGVFbnRyeS0+cGFyc2VSZXNwb25zZUhlYWRlcnMocmVzcG9uc2UpOwogICAgICAg
ICBpZiAoY2FjaGVhYmxlKSB7CiAgICAgICAgICAgICBtX0xSVUVudHJ5TGlzdC5wcmVwZW5kT3JN
b3ZlVG9GaXJzdCh1cmwpOwpAQCAtMjIwLDExICsyMjcsMTYgQEAgdm9pZCBDdXJsQ2FjaGVNYW5h
Z2VyOjpkaWRSZWNlaXZlUmVzcG9ucwogICAgICAgICBpbnZhbGlkYXRlQ2FjaGVFbnRyeSh1cmwp
OwogfQogCi12b2lkIEN1cmxDYWNoZU1hbmFnZXI6OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgU3Ry
aW5nJiB1cmwpCit2b2lkIEN1cmxDYWNoZU1hbmFnZXI6OmRpZEZpbmlzaExvYWRpbmcoUmVzb3Vy
Y2VIYW5kbGUqIGpvYikKIHsKICAgICBpZiAobV9kaXNhYmxlZCkKICAgICAgICAgcmV0dXJuOwog
CisgICAgaWYgKCFqb2IpCisgICAgICAgIHJldHVybjsKKworICAgIGNvbnN0IFN0cmluZyYgdXJs
ID0gam9iLT5maXJzdFJlcXVlc3QoKS51cmwoKS5zdHJpbmcoKTsKKwogICAgIEhhc2hNYXA8U3Ry
aW5nLCBzdGQ6OnVuaXF1ZV9wdHI8Q3VybENhY2hlRW50cnk+Pjo6aXRlcmF0b3IgaXQgPSBtX2lu
ZGV4LmZpbmQodXJsKTsKICAgICBpZiAoaXQgIT0gbV9pbmRleC5lbmQoKSkKICAgICAgICAgaXQt
PnZhbHVlLT5kaWRGaW5pc2hMb2FkaW5nKCk7CkBAIC0yMzgsNyArMjUwLDcgQEAgYm9vbCBDdXJs
Q2FjaGVNYW5hZ2VyOjppc0NhY2hlZChjb25zdCBTdAogICAgIEhhc2hNYXA8U3RyaW5nLCBzdGQ6
OnVuaXF1ZV9wdHI8Q3VybENhY2hlRW50cnk+Pjo6aXRlcmF0b3IgaXQgPSBtX2luZGV4LmZpbmQo
dXJsKTsKICAgICBpZiAoaXQgIT0gbV9pbmRleC5lbmQoKSkgewogICAgICAgICBpZiAoaXQtPnZh
bHVlLT5pc0NhY2hlZCgpKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICBy
ZXR1cm4gIWl0LT52YWx1ZS0+aXNMb2FkaW5nKCk7CiAKICAgICAgICAgaW52YWxpZGF0ZUNhY2hl
RW50cnkodXJsKTsKICAgICB9CkBAIC0yNjEsMTMgKzI3MywyMSBAQCBib29sIEN1cmxDYWNoZU1h
bmFnZXI6OmdldENhY2hlZFJlc3BvbnNlCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIEN1
cmxDYWNoZU1hbmFnZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBj
aGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkKK3ZvaWQgQ3VybENhY2hlTWFuYWdlcjo6ZGlkUmVjZWl2
ZURhdGEoUmVzb3VyY2VIYW5kbGUqIGpvYiwgY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUp
CiB7CiAgICAgaWYgKG1fZGlzYWJsZWQpCiAgICAgICAgIHJldHVybjsKIAorICAgIGlmICgham9i
KQorICAgICAgICByZXR1cm47CisKKyAgICBjb25zdCBTdHJpbmcmIHVybCA9IGpvYi0+Zmlyc3RS
ZXF1ZXN0KCkudXJsKCkuc3RyaW5nKCk7CisKICAgICBIYXNoTWFwPFN0cmluZywgc3RkOjp1bmlx
dWVfcHRyPEN1cmxDYWNoZUVudHJ5Pj46Oml0ZXJhdG9yIGl0ID0gbV9pbmRleC5maW5kKHVybCk7
CiAgICAgaWYgKGl0ICE9IG1faW5kZXguZW5kKCkpIHsKKyAgICAgICAgaWYgKGl0LT52YWx1ZS0+
Z2V0Sm9iKCkgIT0gam9iKQorICAgICAgICAgICAgcmV0dXJuOworCiAgICAgICAgIGlmICghaXQt
PnZhbHVlLT5zYXZlQ2FjaGVkRGF0YShkYXRhLCBzaXplKSkKICAgICAgICAgICAgIGludmFsaWRh
dGVDYWNoZUVudHJ5KHVybCk7CiAKQEAgLTMwOCw4ICszMjgsMTMgQEAgdm9pZCBDdXJsQ2FjaGVN
YW5hZ2VyOjppbnZhbGlkYXRlQ2FjaGVFbgogICAgIG1fTFJVRW50cnlMaXN0LnJlbW92ZSh1cmwp
OwogfQogCi12b2lkIEN1cmxDYWNoZU1hbmFnZXI6OmRpZEZhaWwoY29uc3QgU3RyaW5nJiB1cmwp
Cit2b2lkIEN1cmxDYWNoZU1hbmFnZXI6OmRpZEZhaWwoUmVzb3VyY2VIYW5kbGUgKmpvYikKIHsK
KyAgICBpZiAoIWpvYikKKyAgICAgICAgcmV0dXJuOworCisgICAgY29uc3QgU3RyaW5nJiB1cmwg
PSBqb2ItPmZpcnN0UmVxdWVzdCgpLnVybCgpLnN0cmluZygpOworCiAgICAgaW52YWxpZGF0ZUNh
Y2hlRW50cnkodXJsKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5oCShyZXZpc2lvbiAxNjk2MDAp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCw5ICs1MCw5IEBAIHB1YmxpYzoKICAgICBib29sIGdl
dENhY2hlZFJlc3BvbnNlKGNvbnN0IFN0cmluZyYgdXJsLCBSZXNvdXJjZVJlc3BvbnNlJik7CiAK
ICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIFJlc291cmNlUmVz
cG9uc2UmKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFN0cmluZyYsIGNvbnN0IGNo
YXIqLCBzaXplX3QpOyAvLyBTYXZlIGRhdGEKLSAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoY29u
c3QgU3RyaW5nJik7Ci0gICAgdm9pZCBkaWRGYWlsKGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQg
ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBjaGFyKiwgc2l6ZV90KTsgLy8g
U2F2ZSBkYXRhCisgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlSGFuZGxlKik7Cisg
ICAgdm9pZCBkaWRGYWlsKFJlc291cmNlSGFuZGxlKik7CiAKIHByaXZhdGU6CiAgICAgQ3VybENh
Y2hlTWFuYWdlcigpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L1Jlc291cmNlSGFuZGxlTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlTWFuYWdlci5jcHAJKHJldmlzaW9u
IDE2OTYwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJj
ZUhhbmRsZU1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjUsNyArMzI1LDcgQEAgc3Rh
dGljIHNpemVfdCB3cml0ZUNhbGxiYWNrKHZvaWQqIHB0ciwgcwogICAgICAgICBkLT5tX211bHRp
cGFydEhhbmRsZS0+Y29udGVudFJlY2VpdmVkKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihwdHIp
LCB0b3RhbFNpemUpOwogICAgIGVsc2UgaWYgKGQtPmNsaWVudCgpKSB7CiAgICAgICAgIGQtPmNs
aWVudCgpLT5kaWRSZWNlaXZlRGF0YShqb2IsIHN0YXRpY19jYXN0PGNoYXIqPihwdHIpLCB0b3Rh
bFNpemUsIDApOwotICAgICAgICBDdXJsQ2FjaGVNYW5hZ2VyOjpnZXRJbnN0YW5jZSgpLmRpZFJl
Y2VpdmVEYXRhKGpvYi0+Zmlyc3RSZXF1ZXN0KCkudXJsKCkuc3RyaW5nKCksIHN0YXRpY19jYXN0
PGNoYXIqPihwdHIpLCB0b3RhbFNpemUpOworICAgICAgICBDdXJsQ2FjaGVNYW5hZ2VyOjpnZXRJ
bnN0YW5jZSgpLmRpZFJlY2VpdmVEYXRhKGpvYiwgc3RhdGljX2Nhc3Q8Y2hhcio+KHB0ciksIHRv
dGFsU2l6ZSk7CiAgICAgfQogCiAgICAgcmV0dXJuIHRvdGFsU2l6ZTsKQEAgLTY4OSw3ICs2ODks
NyBAQCB2b2lkIFJlc291cmNlSGFuZGxlTWFuYWdlcjo6ZG93bmxvYWRUaW1lCiAKICAgICAgICAg
ICAgIGlmIChkLT5jbGllbnQoKSkgewogICAgICAgICAgICAgICAgIGQtPmNsaWVudCgpLT5kaWRG
aW5pc2hMb2FkaW5nKGpvYiwgMCk7Ci0gICAgICAgICAgICAgICAgQ3VybENhY2hlTWFuYWdlcjo6
Z2V0SW5zdGFuY2UoKS5kaWRGaW5pc2hMb2FkaW5nKGpvYi0+Zmlyc3RSZXF1ZXN0KCkudXJsKCku
c3RyaW5nKCkpOworICAgICAgICAgICAgICAgIEN1cmxDYWNoZU1hbmFnZXI6OmdldEluc3RhbmNl
KCkuZGlkRmluaXNoTG9hZGluZyhqb2IpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgY2hhciogdXJsID0gMDsKQEAgLTcwMSw3ICs3MDEsNyBAQCB2b2lkIFJl
c291cmNlSGFuZGxlTWFuYWdlcjo6ZG93bmxvYWRUaW1lCiAgICAgICAgICAgICAgICAgUmVzb3Vy
Y2VFcnJvciByZXNvdXJjZUVycm9yKFN0cmluZygpLCBtc2ctPmRhdGEucmVzdWx0LCBTdHJpbmco
dXJsKSwgU3RyaW5nKGN1cmxfZWFzeV9zdHJlcnJvcihtc2ctPmRhdGEucmVzdWx0KSkpOwogICAg
ICAgICAgICAgICAgIHJlc291cmNlRXJyb3Iuc2V0U1NMRXJyb3JzKGQtPm1fc3NsRXJyb3JzKTsK
ICAgICAgICAgICAgICAgICBkLT5jbGllbnQoKS0+ZGlkRmFpbChqb2IsIHJlc291cmNlRXJyb3Ip
OwotICAgICAgICAgICAgICAgIEN1cmxDYWNoZU1hbmFnZXI6OmdldEluc3RhbmNlKCkuZGlkRmFp
bChqb2ItPmZpcnN0UmVxdWVzdCgpLnVybCgpLnN0cmluZygpKTsKKyAgICAgICAgICAgICAgICBD
dXJsQ2FjaGVNYW5hZ2VyOjpnZXRJbnN0YW5jZSgpLmRpZEZhaWwoam9iKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>232615</attachid>
            <date>2014-06-06 09:04:04 -0700</date>
            <delta_ts>2014-06-11 10:28:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-133483-20140606180320.patch</filename>
            <type>text/plain</type>
            <size>15041</size>
            <attacher>peavo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2OTYyMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4IEBACisyMDE0LTA2LTA1ICBwZWF2b0Bv
dXRsb29rLmNvbSAgPHBlYXZvQG91dGxvb2suY29tPgorCisgICAgICAgIFtDdXJsXSBFbXB0eSBo
ZWFkZXJzIGluIHJlcXVlc3QgcmVzcG9uc2UuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMzM0ODMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBXaGVuIGEgcmVxdWVzdCBpcyB0YWtlbiBmcm9tIHRoZSBjYWNo
ZSwgaXRzIGNhY2hlZCByZXNwb25zZSBoZWFkZXJzIGFyZSBlbXB0eSwgaWYgdGhlIGNhY2hlIGVu
dHJ5IHdhcyBjcmVhdGVkIGluIHRoZSBzYW1lIHNlc3Npb24uCisgICAgICAgIEl0IGlzIG9ubHkg
d2hlbiB0aGUgY2FjaGUgZW50cnkgaXMgbG9hZGVkIGZyb20gZGlzYywgdGhhdCB0aGUgcmVzcG9u
c2UgaGVhZGVycyBhcmUgcHJvcGVybHkgc2V0LgorICAgICAgICBXZSBuZWVkIHRvIHNldCB0aGUg
Y2FjaGVkIHJlc3BvbnNlIGhlYWRlcnMgaW4gYm90aCBjYXNlcy4KKyAgICAgICAgVGhlcmUgaXMg
YWxzbyBhbiBpc3N1ZSBpZiB0d28gam9icyBhcmUgbG9hZGluZyB0aGUgc2FtZSB1cmwgYXQgdGhl
IHNhbWUgdGltZS4KKyAgICAgICAgQm90aCBqb2JzIHdpbGwgdGhlbiB3cml0ZSB0byB0aGUgY2Fj
aGUgY29udGVudCBmaWxlLCBhbmQgY3JlYXRlIGludmFsaWQgY29udGVudC4KKyAgICAgICAgVGhp
cyBjYW4gYmUgZml4ZWQgYnkgb25seSBsZXR0aW5nIHRoZSBmaXJzdCByZXF1ZXN0IHdyaXRlIHRv
IHRoZSBjb250ZW50IGZpbGUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bENhY2hlRW50cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybENhY2hlRW50cnk6OkN1cmxD
YWNoZUVudHJ5KToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxDYWNoZUVudHJ5Ojppc0xvYWRpbmcp
OiBBZGRlZCBtZXRob2QgdG8gY2hlY2sgaWYgY2FjaGUgZW50cnkgaXMgbG9hZGluZyB0aGUgY29u
dGVudC4KKyAgICAgICAgKFdlYkNvcmU6OkN1cmxDYWNoZUVudHJ5OjpzYXZlUmVzcG9uc2VIZWFk
ZXJzKTogU2V0IHRoZSBjYWNoZWQgcmVzcG9uc2UgaGVhZGVycyB3aGVuIHJlc3BvbnNlIGlzIHNh
dmVkLgorICAgICAgICAoV2ViQ29yZTo6Q3VybENhY2hlRW50cnk6OmludmFsaWRhdGUpOiBUbyBi
ZSBvbiB0aGUgc2FmZSBzaWRlLCBjbG9zZSBjb250ZW50IGZpbGUgd2hlbiBlbnRyeSBpcyBpbnZh
bGlkYXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkN1cmxDYWNoZUVudHJ5OjpwYXJzZVJlc3BvbnNl
SGVhZGVycyk6IE1hZGUgcGFyYW1ldGVyIGNvbnN0LgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5oOiBLZWVwIHRyYWNrIG9mIHdoaWNoIGpvYiBpcyBjcmVh
dGluZyB0aGlzIGNhY2hlIGVudHJ5LgorICAgICAgICAoV2ViQ29yZTo6Q3VybENhY2hlRW50cnk6
OmdldEpvYik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFn
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybENhY2hlTWFuYWdlcjo6bG9hZEluZGV4KTog
V2hlbiBjYWNoZSBlbnRyeSBpcyBsb2FkZWQgZnJvbSBkaXNjLCB0aGVyZSBpcyBubyBhc3NvY2lh
dGVkIGpvYi4KKyAgICAgICAgKFdlYkNvcmU6OkN1cmxDYWNoZU1hbmFnZXI6OmRpZFJlY2VpdmVS
ZXNwb25zZSk6IEJhaWwgb3V0IGlmIGNhY2hlIGVudHJ5IGlzIGFscmVhZHkgY3VycmVudGx5IGxv
YWRpbmcsCisgICAgICAgIG90aGVyd2lzZSBhc3NvY2lhdGUgdGhpcyBqb2Igd2l0aCB0aGUgbmV3
IGNhY2hlIGVudHJ5LgorICAgICAgICAoV2ViQ29yZTo6Q3VybENhY2hlTWFuYWdlcjo6ZGlkRmlu
aXNoTG9hZGluZyk6IENoYW5nZWQgcGFyYW1ldGVyIHR5cGUuCisgICAgICAgIChXZWJDb3JlOjpD
dXJsQ2FjaGVNYW5hZ2VyOjppc0NhY2hlZCk6IERvbid0IHJlcG9ydCB0aGUgdXJsIGFzIGNhY2hl
ZCBpZiBpdCdzIGN1cnJlbnRseSBsb2FkaW5nIGNvbnRlbnQuCisgICAgICAgIChXZWJDb3JlOjpD
dXJsQ2FjaGVNYW5hZ2VyOjpkaWRSZWNlaXZlRGF0YSk6IERvbid0IHdyaXRlIHRvIHRoZSBjb250
ZW50IGZpbGUgaWYgdGhlIGVudHJ5IGlzIG5vdCBhc3NvY2lhdGVkIHdpdGggdGhlIGpvYi4KKyAg
ICAgICAgKFdlYkNvcmU6OkN1cmxDYWNoZU1hbmFnZXI6OmRpZEZhaWwpOiBDaGFuZ2VkIHBhcmFt
ZXRlciB0eXBlLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5h
Z2VyLmg6IENoYW5nZWQgcGFyYW1ldGVyIHR5cGUuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9jdXJsL1Jlc291cmNlSGFuZGxlTWFuYWdlci5jcHA6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6d3JpdGVDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZU1hbmFn
ZXI6OmRvd25sb2FkVGltZXJDYWxsYmFjayk6CisKIDIwMTQtMDYtMDUgIFl1c3VrZSBTdXp1a2kg
IDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgQ1NTIEpJVDogQ2xlYW4gdXAgU3Rh
Y2tBbGxvY2F0b3IKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsQ2FjaGVFbnRyeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcAkocmV2aXNpb24gMTY5NjAwKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDUsMTMgKzQ1LDE0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Q3VybENhY2hlRW50cnk6OkN1cmxDYWNoZUVudHJ5KGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBT
dHJpbmcmIGNhY2hlRGlyKQorQ3VybENhY2hlRW50cnk6OkN1cmxDYWNoZUVudHJ5KGNvbnN0IFN0
cmluZyYgdXJsLCBSZXNvdXJjZUhhbmRsZSogam9iLCBjb25zdCBTdHJpbmcmIGNhY2hlRGlyKQog
ICAgIDogbV9oZWFkZXJGaWxlbmFtZShjYWNoZURpcikKICAgICAsIG1fY29udGVudEZpbGVuYW1l
KGNhY2hlRGlyKQogICAgICwgbV9jb250ZW50RmlsZShpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxl
KQogICAgICwgbV9lbnRyeVNpemUoMCkKICAgICAsIG1fZXhwaXJlRGF0ZSgtMSkKICAgICAsIG1f
aGVhZGVyUGFyc2VkKGZhbHNlKQorICAgICwgbV9qb2Ioam9iKQogewogICAgIGdlbmVyYXRlQmFz
ZUZpbGVuYW1lKHVybC5sYXRpbjEoKSk7CiAKQEAgLTY3LDYgKzY4LDExIEBAIEN1cmxDYWNoZUVu
dHJ5Ojp+Q3VybENhY2hlRW50cnkoKQogICAgIGNsb3NlQ29udGVudEZpbGUoKTsKIH0KIAorYm9v
bCBDdXJsQ2FjaGVFbnRyeTo6aXNMb2FkaW5nKCkKK3sKKyAgICByZXR1cm4gaXNIYW5kbGVWYWxp
ZChtX2NvbnRlbnRGaWxlKTsKK30KKwogLy8gQ2FjaGUgbWFuYWdlciBzaG91bGQgaW52YWxpZGF0
ZSB0aGUgZW50cnkgb24gZmFsc2UKIGJvb2wgQ3VybENhY2hlRW50cnk6OmlzQ2FjaGVkKCkKIHsK
QEAgLTExMiw3ICsxMTgsNyBAQCBib29sIEN1cmxDYWNoZUVudHJ5OjpyZWFkQ2FjaGVkRGF0YShS
ZXNvCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgQ3VybENhY2hlRW50cnk6OnNhdmVSZXNw
b25zZUhlYWRlcnMoUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCitib29sIEN1cmxDYWNoZUVu
dHJ5OjpzYXZlUmVzcG9uc2VIZWFkZXJzKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNl
KQogewogICAgIFBsYXRmb3JtRmlsZUhhbmRsZSBoZWFkZXJGaWxlID0gb3BlbkZpbGUobV9oZWFk
ZXJGaWxlbmFtZSwgT3BlbkZvcldyaXRlKTsKICAgICBpZiAoIWlzSGFuZGxlVmFsaWQoaGVhZGVy
RmlsZSkpIHsKQEAgLTEzMCw2ICsxMzYsNyBAQCBib29sIEN1cmxDYWNoZUVudHJ5OjpzYXZlUmVz
cG9uc2VIZWFkZXJzCiAgICAgICAgIGhlYWRlckZpZWxkLmFwcGVuZCgiXG4iKTsKICAgICAgICAg
Q1N0cmluZyBoZWFkZXJGaWVsZExhdGluMSA9IGhlYWRlckZpZWxkLmxhdGluMSgpOwogICAgICAg
ICB3cml0ZVRvRmlsZShoZWFkZXJGaWxlLCBoZWFkZXJGaWVsZExhdGluMS5kYXRhKCksIGhlYWRl
ckZpZWxkTGF0aW4xLmxlbmd0aCgpKTsKKyAgICAgICAgbV9jYWNoZWRSZXNwb25zZS5zZXRIVFRQ
SGVhZGVyRmllbGQoaXQtPmtleSwgaXQtPnZhbHVlKTsKICAgICAgICAgKytpdDsKICAgICB9CiAK
QEAgLTI1MywxMiArMjYwLDEzIEBAIGJvb2wgQ3VybENhY2hlRW50cnk6OmxvYWRGaWxlVG9CdWZm
ZXIoY28KIAogdm9pZCBDdXJsQ2FjaGVFbnRyeTo6aW52YWxpZGF0ZSgpCiB7CisgICAgY2xvc2VD
b250ZW50RmlsZSgpOwogICAgIGRlbGV0ZUZpbGUobV9oZWFkZXJGaWxlbmFtZSk7CiAgICAgZGVs
ZXRlRmlsZShtX2NvbnRlbnRGaWxlbmFtZSk7CiAgICAgTE9HKE5ldHdvcmssICJDYWNoZTogaW52
YWxpZGF0ZWQgJXNcbiIsIG1fYmFzZW5hbWUubGF0aW4xKCkuZGF0YSgpKTsKIH0KIAotYm9vbCBD
dXJsQ2FjaGVFbnRyeTo6cGFyc2VSZXNwb25zZUhlYWRlcnMoUmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UpCitib29sIEN1cmxDYWNoZUVudHJ5OjpwYXJzZVJlc3BvbnNlSGVhZGVycyhjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKICAgICBkb3VibGUgZmlsZVRpbWU7CiAgICAg
dGltZV90IGZpbGVNb2RpZmljYXRpb25EYXRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmgJKHJldmlzaW9uIDE2
OTYwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVF
bnRyeS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSwyNCArNDEsMjcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogY2xhc3MgQ3VybENhY2hlRW50cnkgewogCiBwdWJsaWM6Ci0gICAgQ3VybENhY2hlRW50
cnkoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgY2FjaGVEaXIpOworICAgIEN1cmxD
YWNoZUVudHJ5KGNvbnN0IFN0cmluZyYgdXJsLCBSZXNvdXJjZUhhbmRsZSogam9iLCBjb25zdCBT
dHJpbmcmIGNhY2hlRGlyKTsKICAgICB+Q3VybENhY2hlRW50cnkoKTsKIAogICAgIGJvb2wgaXND
YWNoZWQoKTsKKyAgICBib29sIGlzTG9hZGluZygpOwogICAgIHNpemVfdCBlbnRyeVNpemUoKTsK
ICAgICBIVFRQSGVhZGVyTWFwJiByZXF1ZXN0SGVhZGVycygpIHsgcmV0dXJuIG1fcmVxdWVzdEhl
YWRlcnM7IH0KIAogICAgIGJvb2wgc2F2ZUNhY2hlZERhdGEoY29uc3QgY2hhciogZGF0YSwgc2l6
ZV90KTsKICAgICBib29sIHJlYWRDYWNoZWREYXRhKFJlc291cmNlSGFuZGxlKik7CiAKLSAgICBi
b29sIHNhdmVSZXNwb25zZUhlYWRlcnMoUmVzb3VyY2VSZXNwb25zZSYpOworICAgIGJvb2wgc2F2
ZVJlc3BvbnNlSGVhZGVycyhjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgdm9pZCBzZXRS
ZXNwb25zZUZyb21DYWNoZWRIZWFkZXJzKFJlc291cmNlUmVzcG9uc2UmKTsKIAogICAgIHZvaWQg
aW52YWxpZGF0ZSgpOwogICAgIHZvaWQgZGlkRmFpbCgpOwogICAgIHZvaWQgZGlkRmluaXNoTG9h
ZGluZygpOwogCi0gICAgYm9vbCBwYXJzZVJlc3BvbnNlSGVhZGVycyhSZXNvdXJjZVJlc3BvbnNl
Jik7CisgICAgYm9vbCBwYXJzZVJlc3BvbnNlSGVhZGVycyhjb25zdCBSZXNvdXJjZVJlc3BvbnNl
Jik7CisKKyAgICBjb25zdCBSZXNvdXJjZUhhbmRsZSogZ2V0Sm9iKCkgY29uc3QgeyByZXR1cm4g
bV9qb2I7IH0KIAogcHJpdmF0ZToKICAgICBTdHJpbmcgbV9iYXNlbmFtZTsKQEAgLTc0LDYgKzc3
LDggQEAgcHJpdmF0ZToKICAgICBSZXNvdXJjZVJlc3BvbnNlIG1fY2FjaGVkUmVzcG9uc2U7CiAg
ICAgSFRUUEhlYWRlck1hcCBtX3JlcXVlc3RIZWFkZXJzOwogCisgICAgUmVzb3VyY2VIYW5kbGUq
IG1fam9iOworCiAgICAgdm9pZCBnZW5lcmF0ZUJhc2VGaWxlbmFtZShjb25zdCBDU3RyaW5nJiB1
cmwpOwogICAgIGJvb2wgbG9hZEZpbGVUb0J1ZmZlcihjb25zdCBTdHJpbmcmIGZpbGVwYXRoLCBW
ZWN0b3I8Y2hhcj4mIGJ1ZmZlcik7CiAgICAgYm9vbCBsb2FkUmVzcG9uc2VIZWFkZXJzKCk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxDYWNoZU1hbmFnZXIuY3BwCShyZXZpc2lvbiAxNjk2MDApCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEzOSw3ICsxMzksNyBAQCB2b2lkIEN1cmxDYWNoZU1hbmFnZXI6OmxvYWRJbmRleCgp
CiAgICAgICAgIC0tZW5kOyAvLyBMYXN0IGxpbmUgaXMgZW1wdHkKICAgICB3aGlsZSAoaXQgIT0g
ZW5kKSB7CiAgICAgICAgIFN0cmluZyB1cmwgPSBpdC0+c3RyaXBXaGl0ZVNwYWNlKCk7Ci0gICAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjxDdXJsQ2FjaGVFbnRyeT4gY2FjaGVFbnRyeShuZXcgQ3VybENh
Y2hlRW50cnkodXJsLCBtX2NhY2hlRGlyKSk7CisgICAgICAgIGF1dG8gY2FjaGVFbnRyeSA9IHN0
ZDo6bWFrZV91bmlxdWU8Q3VybENhY2hlRW50cnk+KHVybCwgbnVsbHB0ciwgbV9jYWNoZURpcik7
CiAKICAgICAgICAgaWYgKGNhY2hlRW50cnktPmlzQ2FjaGVkKCkgJiYgY2FjaGVFbnRyeS0+ZW50
cnlTaXplKCkgPCBtX3N0b3JhZ2VTaXplTGltaXQpIHsKICAgICAgICAgICAgIG1fY3VycmVudFN0
b3JhZ2VTaXplICs9IGNhY2hlRW50cnktPmVudHJ5U2l6ZSgpOwpAQCAtMTkxLDI1ICsxOTEsMjkg
QEAgdm9pZCBDdXJsQ2FjaGVNYW5hZ2VyOjptYWtlUm9vbUZvck5ld0VudAogICAgIH0KIH0KIAot
dm9pZCBDdXJsQ2FjaGVNYW5hZ2VyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUq
IGpvYiwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCit2b2lkIEN1cmxDYWNoZU1hbmFnZXI6
OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSYgam9iLCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSkKIHsKICAgICBpZiAobV9kaXNhYmxlZCkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgUmVzb3VyY2VIYW5kbGVJbnRlcm5hbCogZCA9IGpvYi0+Z2V0SW50ZXJuYWwoKTsKKyAgICBS
ZXNvdXJjZUhhbmRsZUludGVybmFsKiBkID0gam9iLmdldEludGVybmFsKCk7CiAgICAgaWYgKGQt
Pm1fY2FuY2VsbGVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBTdHJpbmcgdXJsID0gam9iLT5m
aXJzdFJlcXVlc3QoKS51cmwoKS5zdHJpbmcoKTsKKyAgICBjb25zdCBTdHJpbmcmIHVybCA9IGpv
Yi5maXJzdFJlcXVlc3QoKS51cmwoKS5zdHJpbmcoKTsKIAogICAgIGlmIChyZXNwb25zZS5odHRw
U3RhdHVzQ29kZSgpID09IDMwNCkgewotICAgICAgICByZWFkQ2FjaGVkRGF0YSh1cmwsIGpvYiwg
cmVzcG9uc2UpOworICAgICAgICByZWFkQ2FjaGVkRGF0YSh1cmwsICZqb2IsIHJlc3BvbnNlKTsK
ICAgICAgICAgbV9MUlVFbnRyeUxpc3QucHJlcGVuZE9yTW92ZVRvRmlyc3QodXJsKTsKICAgICB9
CiAgICAgZWxzZSBpZiAocmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSA9PSAyMDApIHsKKyAgICAg
ICAgYXV0byBpdCA9IG1faW5kZXguZmluZCh1cmwpOworICAgICAgICBpZiAoaXQgIT0gbV9pbmRl
eC5lbmQoKSAmJiBpdC0+dmFsdWUtPmlzTG9hZGluZygpKQorICAgICAgICAgICAgcmV0dXJuOwor
CiAgICAgICAgIGludmFsaWRhdGVDYWNoZUVudHJ5KHVybCk7IC8vIEludmFsaWRhdGUgZXhpc3Rp
bmcgZW50cnkgb24gMjAwCiAKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEN1cmxDYWNoZUVudHJ5
PiBjYWNoZUVudHJ5KG5ldyBDdXJsQ2FjaGVFbnRyeSh1cmwsIG1fY2FjaGVEaXIpKTsKKyAgICAg
ICAgYXV0byBjYWNoZUVudHJ5ID0gc3RkOjptYWtlX3VuaXF1ZTxDdXJsQ2FjaGVFbnRyeT4odXJs
LCAmam9iLCBtX2NhY2hlRGlyKTsKICAgICAgICAgYm9vbCBjYWNoZWFibGUgPSBjYWNoZUVudHJ5
LT5wYXJzZVJlc3BvbnNlSGVhZGVycyhyZXNwb25zZSk7CiAgICAgICAgIGlmIChjYWNoZWFibGUp
IHsKICAgICAgICAgICAgIG1fTFJVRW50cnlMaXN0LnByZXBlbmRPck1vdmVUb0ZpcnN0KHVybCk7
CkBAIC0yMjAsMTIgKzIyNCwxNCBAQCB2b2lkIEN1cmxDYWNoZU1hbmFnZXI6OmRpZFJlY2VpdmVS
ZXNwb25zCiAgICAgICAgIGludmFsaWRhdGVDYWNoZUVudHJ5KHVybCk7CiB9CiAKLXZvaWQgQ3Vy
bENhY2hlTWFuYWdlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBTdHJpbmcmIHVybCkKK3ZvaWQg
Q3VybENhY2hlTWFuYWdlcjo6ZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRsZSYgam9iKQog
ewogICAgIGlmIChtX2Rpc2FibGVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBIYXNoTWFwPFN0
cmluZywgc3RkOjp1bmlxdWVfcHRyPEN1cmxDYWNoZUVudHJ5Pj46Oml0ZXJhdG9yIGl0ID0gbV9p
bmRleC5maW5kKHVybCk7CisgICAgY29uc3QgU3RyaW5nJiB1cmwgPSBqb2IuZmlyc3RSZXF1ZXN0
KCkudXJsKCkuc3RyaW5nKCk7CisKKyAgICBhdXRvIGl0ID0gbV9pbmRleC5maW5kKHVybCk7CiAg
ICAgaWYgKGl0ICE9IG1faW5kZXguZW5kKCkpCiAgICAgICAgIGl0LT52YWx1ZS0+ZGlkRmluaXNo
TG9hZGluZygpOwogfQpAQCAtMjM1LDEwICsyNDEsMTAgQEAgYm9vbCBDdXJsQ2FjaGVNYW5hZ2Vy
Ojppc0NhY2hlZChjb25zdCBTdAogICAgIGlmIChtX2Rpc2FibGVkKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKLSAgICBIYXNoTWFwPFN0cmluZywgc3RkOjp1bmlxdWVfcHRyPEN1cmxDYWNoZUVu
dHJ5Pj46Oml0ZXJhdG9yIGl0ID0gbV9pbmRleC5maW5kKHVybCk7CisgICAgYXV0byBpdCA9IG1f
aW5kZXguZmluZCh1cmwpOwogICAgIGlmIChpdCAhPSBtX2luZGV4LmVuZCgpKSB7CiAgICAgICAg
IGlmIChpdC0+dmFsdWUtPmlzQ2FjaGVkKCkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgICAgIHJldHVybiAhaXQtPnZhbHVlLT5pc0xvYWRpbmcoKTsKIAogICAgICAgICBpbnZh
bGlkYXRlQ2FjaGVFbnRyeSh1cmwpOwogICAgIH0KQEAgLTI1Myw3ICsyNTksNyBAQCBIVFRQSGVh
ZGVyTWFwJiBDdXJsQ2FjaGVNYW5hZ2VyOjpyZXF1ZXN0CiAKIGJvb2wgQ3VybENhY2hlTWFuYWdl
cjo6Z2V0Q2FjaGVkUmVzcG9uc2UoY29uc3QgU3RyaW5nJiB1cmwsIFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlKQogewotICAgIEhhc2hNYXA8U3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8Q3VybENh
Y2hlRW50cnk+Pjo6aXRlcmF0b3IgaXQgPSBtX2luZGV4LmZpbmQodXJsKTsKKyAgICBhdXRvIGl0
ID0gbV9pbmRleC5maW5kKHVybCk7CiAgICAgaWYgKGl0ICE9IG1faW5kZXguZW5kKCkpIHsKICAg
ICAgICAgaXQtPnZhbHVlLT5zZXRSZXNwb25zZUZyb21DYWNoZWRIZWFkZXJzKHJlc3BvbnNlKTsK
ICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0yNjEsMTMgKzI2NywxOCBAQCBib29sIEN1cmxDYWNo
ZU1hbmFnZXI6OmdldENhY2hlZFJlc3BvbnNlCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lk
IEN1cmxDYWNoZU1hbmFnZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IFN0cmluZyYgdXJsLCBjb25z
dCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkKK3ZvaWQgQ3VybENhY2hlTWFuYWdlcjo6ZGlkUmVj
ZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUmIGpvYiwgY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNp
emUpCiB7CiAgICAgaWYgKG1fZGlzYWJsZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIEhhc2hN
YXA8U3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8Q3VybENhY2hlRW50cnk+Pjo6aXRlcmF0b3IgaXQg
PSBtX2luZGV4LmZpbmQodXJsKTsKKyAgICBjb25zdCBTdHJpbmcmIHVybCA9IGpvYi5maXJzdFJl
cXVlc3QoKS51cmwoKS5zdHJpbmcoKTsKKworICAgIGF1dG8gaXQgPSBtX2luZGV4LmZpbmQodXJs
KTsKICAgICBpZiAoaXQgIT0gbV9pbmRleC5lbmQoKSkgeworICAgICAgICBpZiAoaXQtPnZhbHVl
LT5nZXRKb2IoKSAhPSAmam9iKQorICAgICAgICAgICAgcmV0dXJuOworCiAgICAgICAgIGlmICgh
aXQtPnZhbHVlLT5zYXZlQ2FjaGVkRGF0YShkYXRhLCBzaXplKSkKICAgICAgICAgICAgIGludmFs
aWRhdGVDYWNoZUVudHJ5KHVybCk7CiAKQEAgLTI4NCw3ICsyOTUsNyBAQCB2b2lkIEN1cmxDYWNo
ZU1hbmFnZXI6OnNhdmVSZXNwb25zZUhlYWRlCiAgICAgaWYgKG1fZGlzYWJsZWQpCiAgICAgICAg
IHJldHVybjsKIAotICAgIEhhc2hNYXA8U3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8Q3VybENhY2hl
RW50cnk+Pjo6aXRlcmF0b3IgaXQgPSBtX2luZGV4LmZpbmQodXJsKTsKKyAgICBhdXRvIGl0ID0g
bV9pbmRleC5maW5kKHVybCk7CiAgICAgaWYgKGl0ICE9IG1faW5kZXguZW5kKCkpCiAgICAgICAg
IGlmICghaXQtPnZhbHVlLT5zYXZlUmVzcG9uc2VIZWFkZXJzKHJlc3BvbnNlKSkKICAgICAgICAg
ICAgIGludmFsaWRhdGVDYWNoZUVudHJ5KHVybCk7CkBAIC0yOTUsNyArMzA2LDcgQEAgdm9pZCBD
dXJsQ2FjaGVNYW5hZ2VyOjppbnZhbGlkYXRlQ2FjaGVFbgogICAgIGlmIChtX2Rpc2FibGVkKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBIYXNoTWFwPFN0cmluZywgc3RkOjp1bmlxdWVfcHRyPEN1
cmxDYWNoZUVudHJ5Pj46Oml0ZXJhdG9yIGl0ID0gbV9pbmRleC5maW5kKHVybCk7CisgICAgYXV0
byBpdCA9IG1faW5kZXguZmluZCh1cmwpOwogICAgIGlmIChpdCAhPSBtX2luZGV4LmVuZCgpKSB7
CiAgICAgICAgIGlmIChtX2N1cnJlbnRTdG9yYWdlU2l6ZSA8IGl0LT52YWx1ZS0+ZW50cnlTaXpl
KCkpCiAgICAgICAgICAgICBtX2N1cnJlbnRTdG9yYWdlU2l6ZSA9IDA7CkBAIC0zMDgsOCArMzE5
LDEwIEBAIHZvaWQgQ3VybENhY2hlTWFuYWdlcjo6aW52YWxpZGF0ZUNhY2hlRW4KICAgICBtX0xS
VUVudHJ5TGlzdC5yZW1vdmUodXJsKTsKIH0KIAotdm9pZCBDdXJsQ2FjaGVNYW5hZ2VyOjpkaWRG
YWlsKGNvbnN0IFN0cmluZyYgdXJsKQordm9pZCBDdXJsQ2FjaGVNYW5hZ2VyOjpkaWRGYWlsKFJl
c291cmNlSGFuZGxlICZqb2IpCiB7CisgICAgY29uc3QgU3RyaW5nJiB1cmwgPSBqb2IuZmlyc3RS
ZXF1ZXN0KCkudXJsKCkuc3RyaW5nKCk7CisKICAgICBpbnZhbGlkYXRlQ2FjaGVFbnRyeSh1cmwp
OwogfQogCkBAIC0zMTgsNyArMzMxLDcgQEAgdm9pZCBDdXJsQ2FjaGVNYW5hZ2VyOjpyZWFkQ2Fj
aGVkRGF0YShjbwogICAgIGlmIChtX2Rpc2FibGVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBI
YXNoTWFwPFN0cmluZywgc3RkOjp1bmlxdWVfcHRyPEN1cmxDYWNoZUVudHJ5Pj46Oml0ZXJhdG9y
IGl0ID0gbV9pbmRleC5maW5kKHVybCk7CisgICAgYXV0byBpdCA9IG1faW5kZXguZmluZCh1cmwp
OwogICAgIGlmIChpdCAhPSBtX2luZGV4LmVuZCgpKSB7CiAgICAgICAgIGl0LT52YWx1ZS0+c2V0
UmVzcG9uc2VGcm9tQ2FjaGVkSGVhZGVycyhyZXNwb25zZSk7CiAgICAgICAgIG1fTFJVRW50cnlM
aXN0LnByZXBlbmRPck1vdmVUb0ZpcnN0KHVybCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmgJKHJldmlz
aW9uIDE2OTYwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
Q2FjaGVNYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDEwICs0OSwxMCBAQCBwdWJsaWM6
CiAgICAgSFRUUEhlYWRlck1hcCYgcmVxdWVzdEhlYWRlcnMoY29uc3QgU3RyaW5nJik7IC8vIExv
YWQgaGVhZGVycwogICAgIGJvb2wgZ2V0Q2FjaGVkUmVzcG9uc2UoY29uc3QgU3RyaW5nJiB1cmws
IFJlc291cmNlUmVzcG9uc2UmKTsKIAotICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291
cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXNwb25zZSYpOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEo
Y29uc3QgU3RyaW5nJiwgY29uc3QgY2hhciosIHNpemVfdCk7IC8vIFNhdmUgZGF0YQotICAgIHZv
aWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBTdHJpbmcmKTsKLSAgICB2b2lkIGRpZEZhaWwoY29u
c3QgU3RyaW5nJik7CisgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUm
LCBSZXNvdXJjZVJlc3BvbnNlJik7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhh
bmRsZSYsIGNvbnN0IGNoYXIqLCBzaXplX3QpOyAvLyBTYXZlIGRhdGEKKyAgICB2b2lkIGRpZEZp
bmlzaExvYWRpbmcoUmVzb3VyY2VIYW5kbGUmKTsKKyAgICB2b2lkIGRpZEZhaWwoUmVzb3VyY2VI
YW5kbGUmKTsKIAogcHJpdmF0ZToKICAgICBDdXJsQ2FjaGVNYW5hZ2VyKCk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVNYW5hZ2VyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVz
b3VyY2VIYW5kbGVNYW5hZ2VyLmNwcAkocmV2aXNpb24gMTY5NjAwKQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlTWFuYWdlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMyNSw3ICszMjUsNyBAQCBzdGF0aWMgc2l6ZV90IHdyaXRlQ2FsbGJhY2so
dm9pZCogcHRyLCBzCiAgICAgICAgIGQtPm1fbXVsdGlwYXJ0SGFuZGxlLT5jb250ZW50UmVjZWl2
ZWQoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KHB0ciksIHRvdGFsU2l6ZSk7CiAgICAgZWxzZSBp
ZiAoZC0+Y2xpZW50KCkpIHsKICAgICAgICAgZC0+Y2xpZW50KCktPmRpZFJlY2VpdmVEYXRhKGpv
Yiwgc3RhdGljX2Nhc3Q8Y2hhcio+KHB0ciksIHRvdGFsU2l6ZSwgMCk7Ci0gICAgICAgIEN1cmxD
YWNoZU1hbmFnZXI6OmdldEluc3RhbmNlKCkuZGlkUmVjZWl2ZURhdGEoam9iLT5maXJzdFJlcXVl
c3QoKS51cmwoKS5zdHJpbmcoKSwgc3RhdGljX2Nhc3Q8Y2hhcio+KHB0ciksIHRvdGFsU2l6ZSk7
CisgICAgICAgIEN1cmxDYWNoZU1hbmFnZXI6OmdldEluc3RhbmNlKCkuZGlkUmVjZWl2ZURhdGEo
KmpvYiwgc3RhdGljX2Nhc3Q8Y2hhcio+KHB0ciksIHRvdGFsU2l6ZSk7CiAgICAgfQogCiAgICAg
cmV0dXJuIHRvdGFsU2l6ZTsKQEAgLTUzNyw3ICs1MzcsNyBAQCBzdGF0aWMgc2l6ZV90IGhlYWRl
ckNhbGxiYWNrKGNoYXIqIHB0ciwKICAgICAgICAgICAgICAgICBDdXJsQ2FjaGVNYW5hZ2VyOjpn
ZXRJbnN0YW5jZSgpLmdldENhY2hlZFJlc3BvbnNlKHVybCwgZC0+bV9yZXNwb25zZSk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICBjbGllbnQtPmRpZFJlY2VpdmVSZXNwb25zZShqb2IsIGQt
Pm1fcmVzcG9uc2UpOwotICAgICAgICAgICAgQ3VybENhY2hlTWFuYWdlcjo6Z2V0SW5zdGFuY2Uo
KS5kaWRSZWNlaXZlUmVzcG9uc2Uoam9iLCBkLT5tX3Jlc3BvbnNlKTsKKyAgICAgICAgICAgIEN1
cmxDYWNoZU1hbmFnZXI6OmdldEluc3RhbmNlKCkuZGlkUmVjZWl2ZVJlc3BvbnNlKCpqb2IsIGQt
Pm1fcmVzcG9uc2UpOwogICAgICAgICB9CiAgICAgICAgIGQtPm1fcmVzcG9uc2Uuc2V0UmVzcG9u
c2VGaXJlZCh0cnVlKTsKIApAQCAtNjg5LDcgKzY4OSw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGVN
YW5hZ2VyOjpkb3dubG9hZFRpbWUKIAogICAgICAgICAgICAgaWYgKGQtPmNsaWVudCgpKSB7CiAg
ICAgICAgICAgICAgICAgZC0+Y2xpZW50KCktPmRpZEZpbmlzaExvYWRpbmcoam9iLCAwKTsKLSAg
ICAgICAgICAgICAgICBDdXJsQ2FjaGVNYW5hZ2VyOjpnZXRJbnN0YW5jZSgpLmRpZEZpbmlzaExv
YWRpbmcoam9iLT5maXJzdFJlcXVlc3QoKS51cmwoKS5zdHJpbmcoKSk7CisgICAgICAgICAgICAg
ICAgQ3VybENhY2hlTWFuYWdlcjo6Z2V0SW5zdGFuY2UoKS5kaWRGaW5pc2hMb2FkaW5nKCpqb2Ip
OwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgY2hhciogdXJs
ID0gMDsKQEAgLTcwMSw3ICs3MDEsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlTWFuYWdlcjo6ZG93
bmxvYWRUaW1lCiAgICAgICAgICAgICAgICAgUmVzb3VyY2VFcnJvciByZXNvdXJjZUVycm9yKFN0
cmluZygpLCBtc2ctPmRhdGEucmVzdWx0LCBTdHJpbmcodXJsKSwgU3RyaW5nKGN1cmxfZWFzeV9z
dHJlcnJvcihtc2ctPmRhdGEucmVzdWx0KSkpOwogICAgICAgICAgICAgICAgIHJlc291cmNlRXJy
b3Iuc2V0U1NMRXJyb3JzKGQtPm1fc3NsRXJyb3JzKTsKICAgICAgICAgICAgICAgICBkLT5jbGll
bnQoKS0+ZGlkRmFpbChqb2IsIHJlc291cmNlRXJyb3IpOwotICAgICAgICAgICAgICAgIEN1cmxD
YWNoZU1hbmFnZXI6OmdldEluc3RhbmNlKCkuZGlkRmFpbChqb2ItPmZpcnN0UmVxdWVzdCgpLnVy
bCgpLnN0cmluZygpKTsKKyAgICAgICAgICAgICAgICBDdXJsQ2FjaGVNYW5hZ2VyOjpnZXRJbnN0
YW5jZSgpLmRpZEZhaWwoKmpvYik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>