<?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>49672</bug_id>
          
          <creation_ts>2010-11-17 10:08:44 -0800</creation_ts>
          <short_desc>Allow no-store resources to be used for back navigation</short_desc>
          <delta_ts>2010-11-18 10:49:18 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Page Loading</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</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="Joseph Pecoraro">joepeck</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>beidson</cc>
    
    <cc>darin</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>eric</cc>
    
    <cc>joepeck</cc>
    
    <cc>koivisto</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>skyul</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>310357</commentid>
    <comment_count>0</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-11-17 10:08:44 -0800</bug_when>
    <thetext>The HTTP spec allows &apos;Cache-Control: no-store&apos; resources to be used when used for &quot;History&quot;, such as back/forward navigation.

Relevant parts of the spec:
http://www.ietf.org/rfc/rfc2616.txt

13.13 History Lists

    User agents often have history mechanisms, such as &quot;Back&quot; buttons
    and history lists, which can be used to redisplay an entity retrieved
    earlier in a session.

&gt;   History mechanisms and caches are different. In particular history
&gt;   mechanisms SHOULD NOT try to show a semantically transparent view
&gt;   of the current state of a resource. Rather, a history mechanism is
&gt;   meant to show exactly what the user saw at the time when the resource
&gt;   was retrieved.

    By default, an expiration time does not apply to history mechanisms.
    If the entity is still in storage, a history mechanism SHOULD display
    it even if the entity has expired, unless the user has specifically
    configured the agent to refresh expired history documents.

    This is not to be construed to prohibit the history mechanism from
    telling the user that a view might be stale.


14.9.2 What May be Stored by Caches

   no-store
      The purpose of the no-store directive is to prevent the
      inadvertent release or retention of sensitive information (for
      example, on backup tapes). The no-store directive applies to the
      entire message, and MAY be sent either in a response or in a
      request. If sent in a request, a cache MUST NOT store any part of
      either this request or any response to it. If sent in a response,
      a cache MUST NOT store any part of either this response or the
      request that elicited it. This directive applies to both non-
      shared and shared caches. &quot;MUST NOT store&quot; in this context means
      that the cache MUST NOT intentionally store the information in
      non-volatile storage, and MUST make a best-effort attempt to
      remove the information from volatile storage as promptly as
      possible after forwarding it.

&gt;     Even when this directive is associated with a response, users
&gt;     might explicitly store such a response outside of the caching
&gt;     system (e.g., with a &quot;Save As&quot; dialog). History buffers MAY store
&gt;     such responses as part of their normal operation.

      The purpose of this directive is to meet the stated requirements
      of certain users and service authors who are concerned about
      accidental releases of information via unanticipated accesses to
      cache data structures. While the use of this directive might
      improve privacy in some cases, we caution that it is NOT in any
      way a reliable or sufficient mechanism for ensuring privacy. In
      particular, malicious or compromised caches might not recognize or
      obey this directive, and communications networks might be
      vulnerable to eavesdropping.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310369</commentid>
    <comment_count>1</comment_count>
      <attachid>74132</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-11-17 10:32:35 -0800</bug_when>
    <thetext>Created attachment 74132
[PATCH] Allow no-store for history</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310370</commentid>
    <comment_count>2</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-11-17 10:37:17 -0800</bug_when>
    <thetext>The test can be tested manually when the patch is applied. Just start the webkit-tests http server:

    shell&gt; ./WebKitTools/Scripts/run-webkit-httpd

Then load the test page:

    http://127.0.0.1:8000/cache/history-only-cached-subresource-loads.html

I thought about adding a setTimeout between navigations when not in DRT, so
when run manually you can see the navigations but I decided it would make the
code look more complicated.

When run before the patch, the first part of the test will FAIL, because the back
navigation will refetch the resource.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310381</commentid>
    <comment_count>3</comment_count>
      <attachid>74133</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-11-17 10:49:23 -0800</bug_when>
    <thetext>Created attachment 74133
[PATCH] Fixed Typos + Improved Comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310423</commentid>
    <comment_count>4</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-11-17 11:56:26 -0800</bug_when>
    <thetext>Does this work in Firefox?

I personally think that this is a good idea, but there is some related controversy, see bug 26777.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310452</commentid>
    <comment_count>5</comment_count>
      <attachid>74133</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-11-17 12:36:25 -0800</bug_when>
    <thetext>Comment on attachment 74133
[PATCH] Fixed Typos + Improved Comments

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

r=me, but you should change some of the names

&gt; WebCore/loader/cache/CachedResource.h:124
&gt; +    bool isHistoryOnly() const { return m_historyOnly; }
&gt; +    void setHistoryOnly(bool b) { m_historyOnly = b; }

Name these isStale() and setStale().

&gt; WebCore/loader/cache/CachedResource.h:260
&gt; +    bool m_historyOnly : 1;

Name this m_isStale.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310487</commentid>
    <comment_count>6</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-11-17 13:27:00 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 74133 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=74133&amp;action=review
&gt; 
&gt; r=me, but you should change some of the names
&gt; 
&gt; &gt; WebCore/loader/cache/CachedResource.h:124
&gt; &gt; +    bool isHistoryOnly() const { return m_historyOnly; }
&gt; &gt; +    void setHistoryOnly(bool b) { m_historyOnly = b; }
&gt; 
&gt; Name these isStale() and setStale().
&gt; 
&gt; &gt; WebCore/loader/cache/CachedResource.h:260
&gt; &gt; +    bool m_historyOnly : 1;
&gt; 
&gt; Name this m_isStale.

I originally had that exact naming scheme, but decided against it. My reasoning
for switching to &quot;history only&quot; was that I thought &quot;stale&quot; was too similar to isExpired().
This comes into play when a resource is received with other headers, such as &quot;Expires&quot;,
or &quot;Cache-Control: max-age=...&quot; and it outlives its freshness. I wanted to clearly
indicate this new state of a resource, which is why I chose the longer name.

With this in mind, would &quot;stale&quot; still be a better choice? It does match more closely
to the CachePolicy name (AllowsStale). If not, should I change the &quot;allowsStale&quot;
variable name to MemoryCache::requestResource be changed instead?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310541</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-11-17 14:45:15 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; I originally had that exact naming scheme, but decided against it. My reasoning
&gt; for switching to &quot;history only&quot; was that I thought &quot;stale&quot; was too similar to isExpired().
&gt; This comes into play when a resource is received with other headers, such as &quot;Expires&quot;,
&gt; or &quot;Cache-Control: max-age=...&quot; and it outlives its freshness. I wanted to clearly
&gt; indicate this new state of a resource, which is why I chose the longer name.
&gt; 
&gt; With this in mind, would &quot;stale&quot; still be a better choice? It does match more closely
&gt; to the CachePolicy name (AllowsStale). If not, should I change the &quot;allowsStale&quot;
&gt; variable name to MemoryCache::requestResource be changed instead?

I see that you took your term from the specification text, which refers to this as a “history buffer”.

Sadly, the word “history” is ambiguous, because back/forward is called history in the Window object API, but and global history is called history in browser user interface. So I think a name involving “history” is confusing. And also a bit of a layering violation because the fact that this data is used for a “history buffer” is not really something that belongs down at this cache level.

If we want to use the terminology “for history only” for this, then yes I think we need to change the name of the cache policy too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310544</commentid>
    <comment_count>8</comment_count>
      <attachid>74133</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-11-17 14:47:05 -0800</bug_when>
    <thetext>Comment on attachment 74133
[PATCH] Fixed Typos + Improved Comments

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

&gt;&gt;&gt; WebCore/loader/cache/CachedResource.h:124
&gt;&gt;&gt; +    void setHistoryOnly(bool b) { m_historyOnly = b; }
&gt;&gt; 
&gt;&gt; Name these isStale() and setStale().
&gt; 
&gt; I originally had that exact naming scheme, but decided against it. My reasoning
&gt; for switching to &quot;history only&quot; was that I thought &quot;stale&quot; was too similar to isExpired().
&gt; This comes into play when a resource is received with other headers, such as &quot;Expires&quot;,
&gt; or &quot;Cache-Control: max-age=...&quot; and it outlives its freshness. I wanted to clearly
&gt; indicate this new state of a resource, which is why I chose the longer name.
&gt; 
&gt; With this in mind, would &quot;stale&quot; still be a better choice? It does match more closely
&gt; to the CachePolicy name (AllowsStale). If not, should I change the &quot;allowsStale&quot;
&gt; variable name to MemoryCache::requestResource be changed instead?

The names should probably then be isForHistoryOnly, m_isForHistoryOnly, and setForHistoryOnly.

&gt; WebCore/loader/cache/CachedResourceLoader.cpp:266
&gt; +    bool allowStaleResources = cachePolicy() == CachePolicyAllowStale;

The CachePolicy value should probably be changed to something like CachePolicyHistoryBuffer or something along those lines.

&gt; WebCore/loader/cache/MemoryCache.cpp:97
&gt; +CachedResource* MemoryCache::requestResource(CachedResourceLoader* cachedResourceLoader, CachedResource::Type type, const KURL&amp; url, const String&amp; charset, bool requestIsPreload, bool allowStale)

This argument name should be something like forHistory.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310619</commentid>
    <comment_count>9</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-11-17 17:02:23 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; • The names should probably then be isForHistoryOnly, m_isForHistoryOnly, and setForHistoryOnly.
&gt;
&gt; • The CachePolicy value should probably be changed to something like CachePolicyHistoryBuffer or something along those lines.
&gt; 
&gt; • This argument name should be something like forHistory.

Done, Thanks.


(In reply to comment #4)
&gt; Does this work in Firefox?

Good question. Yes, it looks like Firefox already does this. I manually tested Firefox/4.0b6
loading the page containing a no-store subresource, did a google search, and came back,
and the page must have used the stale subresource because the random number was the
same. Refreshing was different. Likewise, it does not cache the no-store for a main resource.

  # Manually tested the following, as they couldn&apos;t handle the window.open automation for some reason.
  http://127.0.0.1:8000/cache/resources/no-store-resource.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310621</commentid>
    <comment_count>10</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-11-17 17:06:23 -0800</bug_when>
    <thetext>&gt; Good question. Yes, it looks like Firefox already does this.

Actually, I take that back. Its likely that for the simple page they were using their back/forward
cache, the equivalent of our PageCache. I&apos;m going to take a moment to more accurately check.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310628</commentid>
    <comment_count>11</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-11-17 17:12:51 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; &gt; Good question. Yes, it looks like Firefox already does this.
&gt; 
&gt; Actually, I take that back. Its likely that for the simple page they were using their back/forward
&gt; cache, the equivalent of our PageCache. I&apos;m going to take a moment to more accurately check.

Firefox does not cache &quot;no-store&quot; resources. What I saw before was their back/forward cache.
I disabling their back/forward cache by (1) going to &quot;about:config&quot; and (2) setting
&quot;browser.sessionhistory.max_total_viewers&quot; to 0. After this change, they did decide to
reload the &quot;no-store&quot; resource.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310633</commentid>
    <comment_count>12</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-11-17 17:16:41 -0800</bug_when>
    <thetext>&gt; What I saw before was their back/forward cache.

That&apos;s surprising, because it contradicts what was said in 26777. Could you compare to what Firefox 3.6 does?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310635</commentid>
    <comment_count>13</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-11-17 17:18:12 -0800</bug_when>
    <thetext>And as Joe himself mentioned on IRC, this needs to be carefully considered for https resources. I don&apos;t see any practical harm from caching these for history, but perhaps others will.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310640</commentid>
    <comment_count>14</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-11-17 17:35:39 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; &gt; What I saw before was their back/forward cache.
&gt; 
&gt; That&apos;s surprising, because it contradicts what was said in 26777.
&gt; Could you compare to what Firefox 3.6 does?

I don&apos;t think it contradicts the comments. I think those comments were specific
to https pages, or handling of &quot;no-store&quot; on the main resource. Here, &quot;no-store&quot;
was for a subresource. The original documentation Firefox provided for the
&quot;bfcache&quot; feature does not mention its handling of subresources, only the loose
term &quot;pages&quot;.
https://developer.mozilla.org/En/Using_Firefox_1.5_caching

For what it is worth, the manual test of Safari 5.0.2 with the PageCache enabled
acts the same as Firefox 4. The main resource still uses the PageCache even with
a &quot;no-store&quot; subresource. This should be fine, as no new requests are made, we
are just jumping back to where we were. But, since (currently) we won&apos;t be using
the PageCache in https sites, I think we should not allow &quot;forHistory&quot; resources.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310669</commentid>
    <comment_count>15</comment_count>
      <attachid>74193</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-11-17 19:01:00 -0800</bug_when>
    <thetext>Created attachment 74193
[PATCH] Do No Mark &quot;https&quot; Resources as Allowed For History

• Addressed Darin&apos;s comments and made renames.
• Do not mark https resources for history, just remove them like we used to.

Correct me if I am wrong, but I don&apos;t need to check if the main resource is https, just
the &quot;no-cache&quot; subresource. I thought about this for a while, and I figured that if a
sub-resource is non-secure inside a secure main resource, then the subresource is
not particularly important.

I have &quot;Reviewed by Darin&quot; in the patch, but I will replace that after another review.
I just forgot to change it back to OOPS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310673</commentid>
    <comment_count>16</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2010-11-17 19:17:46 -0800</bug_when>
    <thetext>How about just directly testing for resource-&gt;response().cacheControlContainsNoStore()? I think that would be simpler and less confusing than yet another field in CachedResource. 

Response caches the cache control parse result so there is no performance penalty for calling it repeatedly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310689</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-11-17 20:50:42 -0800</bug_when>
    <thetext>Attachment 74193 did not build on win:
Build output: http://queues.webkit.org/results/6142036</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310704</commentid>
    <comment_count>18</comment_count>
      <attachid>74193</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-11-17 22:14:27 -0800</bug_when>
    <thetext>Comment on attachment 74193
[PATCH] Do No Mark &quot;https&quot; Resources as Allowed For History

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

r=me, but please fix that function to remove the unnecessary conversion to KURL, and try to find out why the Windows EWS build is failing.

&gt; WebCore/loader/cache/CachedResource.cpp:259
&gt; +            if (KURL(ParsedURLString, url()).protocolIs(&quot;https&quot;))

There is no need to parse a URL just to check its protocol. The KURL.h header has a protocolIs function that takes a string for this reason.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310705</commentid>
    <comment_count>19</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-11-17 22:15:07 -0800</bug_when>
    <thetext>Antti’s comment also makes sense. I missed that when reviewing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310773</commentid>
    <comment_count>20</comment_count>
      <attachid>74133</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-11-18 03:20:23 -0800</bug_when>
    <thetext>Comment on attachment 74133
[PATCH] Fixed Typos + Improved Comments

Cleared Darin Adler&apos;s review+ from obsolete attachment 74133 so that this bug does not appear in http://webkit.org/pending-commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310902</commentid>
    <comment_count>21</comment_count>
      <attachid>74245</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-11-18 09:45:23 -0800</bug_when>
    <thetext>Created attachment 74245
[PATCH] Patch that Will Land

Just attaching the patch I&apos;ll land.

  • addressed Antti&apos;s comment, remove &quot;isForHistory&quot; and just use the response. cacheControlContainsNoStore
  • addressed Darin&apos;s comment, use the static &quot;protocolIs&quot; function.
  • added some comments to clarify this in MemoryCache::requestResource
  • switched from remove() to evict() because all remove does is call evict =)

Rebasing and landing now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310910</commentid>
    <comment_count>22</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-11-18 10:02:34 -0800</bug_when>
    <thetext>Committed r72303
	M	WebCore/ChangeLog
	M	WebCore/loader/FrameLoader.cpp
	M	WebCore/loader/cache/MemoryCache.h
	M	WebCore/loader/cache/CachedResourceLoader.cpp
	M	WebCore/loader/cache/CachedResource.cpp
	M	WebCore/loader/cache/CachePolicy.h
	M	WebCore/loader/cache/MemoryCache.cpp
	A	LayoutTests/http/tests/cache/history-only-cached-subresource-loads-expected.txt
	A	LayoutTests/http/tests/cache/history-only-cached-subresource-loads.html
	A	LayoutTests/http/tests/cache/resources/no-store-resource-forward.html
	A	LayoutTests/http/tests/cache/resources/random.cgi
	A	LayoutTests/http/tests/cache/resources/no-store-resource-next.html
	A	LayoutTests/http/tests/cache/resources/no-store-resource.html
	M	LayoutTests/ChangeLog
r72303 = a40cebe316b06142cfcc85e9aa988f2364189d69
http://trac.webkit.org/changeset/72303</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310952</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-11-18 10:49:18 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/72303 might have broken Qt Linux Release</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>74132</attachid>
            <date>2010-11-17 10:32:35 -0800</date>
            <delta_ts>2010-11-17 10:49:23 -0800</delta_ts>
            <desc>[PATCH] Allow no-store for history</desc>
            <filename>bug-49672-20101117103234.patch</filename>
            <type>text/plain</type>
            <size>16587</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBkMjcwMGZjNjEwZmJhN2EzMjRhYTczMTc5MTliZjFkMWZkNzE3OGE2Li5iNjZiM2I2
NzBlYTNiZmMxZWQ4MzI3OGY4YzczMTRiYjc5MzU0ZjljIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAK
KzIwMTAtMTEtMTcgIEpvc2VwaCBQZWNvcmFybyAgPGpvZXBlY2tAd2Via2l0Lm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBbGxvdyBuby1zdG9y
ZSByZXNvdXJjZXMgdG8gYmUgdXNlZCBmb3IgYmFjayBuYXZpZ2F0aW9uCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00OTY3MgorCisgICAgICAgIEFkZCB0
ZXN0cyBmb3IgY2hlY2tpbmcgaWYgdGhlIGNhY2hlIHdhcyB1c2VkIGZvciBhICJDYWNoZS1jb250
cm9sOiBuby1zdG9yZSIKKyAgICAgICAgcmVzb3VyY2UgaW4gYmFjayBuYXZpZ2F0aW9uLCByZWxv
YWQgbmF2aWdhdGlvbiwgYW5kIG5vcm1hbCBuYXZpZ2F0aW9uLgorCisgICAgICAgICogaHR0cC90
ZXN0cy9jYWNoZS9oaXN0b3J5LW9ubHktY2FjaGVkLXN1YnJlc291cmNlLWxvYWRzLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9jYWNoZS9oaXN0b3J5LW9ubHktY2Fj
aGVkLXN1YnJlc291cmNlLWxvYWRzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMv
Y2FjaGUvcmVzb3VyY2VzL25vLXN0b3JlLXJlc291cmNlLWZvcndhcmQuaHRtbDogQWRkZWQuCisg
ICAgICAgICogaHR0cC90ZXN0cy9jYWNoZS9yZXNvdXJjZXMvbm8tc3RvcmUtcmVzb3VyY2UtbmV4
dC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2NhY2hlL3Jlc291cmNlcy9uby1z
dG9yZS1yZXNvdXJjZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2NhY2hlL3Jl
c291cmNlcy9yYW5kb20uY2dpOiBBZGRlZC4KKwogMjAxMC0xMS0xNiAgTWFyY3VzIEJ1bGFjaCAg
PGJ1bGFjaEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgTm90IHJldmlld2VkLCBjaHJvbWl1bSB0
ZXN0IGV4cGVjdGF0aW9uIGFuZCBiYXNlbGluZXMgdXBkYXRlLgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS9oaXN0b3J5LW9ubHktY2FjaGVkLXN1YnJlc291cmNlLWxv
YWRzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUvaGlzdG9yeS1v
bmx5LWNhY2hlZC1zdWJyZXNvdXJjZS1sb2Fkcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTEy
NWVmZjFmNWNkMjA3YzhlMjM1NDAzZjg0YzJlZWY4MWMyOGJhMwotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUvaGlzdG9yeS1vbmx5LWNhY2hlZC1zdWJyZXNv
dXJjZS1sb2Fkcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw4IEBACitUaGlzIHRlc3QgY2hlY2tz
IHRoYXQgbG9hZGluZyBhIHN1YnJlc291cmNlIHdpdGggIkNhY2hlLUNvbnRyb2w6IG5vLXN0b3Jl
IiBpcyBjYWNoZWQgYW5kIHJldXNlZCBpbiBiYWNrIG5hdmlnYXRpb24gd2hlbiB0aGUgcGFnZSBp
cyBub3QgaW4gdGhlIHBhZ2UgY2FjaGUuCisKK1dlIHRoZW4gdGVzdCB0aGF0IGxvYWRpbmcgdGhl
IHNhbWUgc3VicmVzb3VyY2UgaXMgcmVmZXRjaGVkIHdoZW4gdXNlZCBpbiBub24tc3RhbGUgbG9h
ZHMgc3VjaCBhcyByZWZyZXNoZXMgb3Igbm9ybWFsIG5hdmlnYXRpb24uCisKK1BBU1MgLSBuby1z
dG9yZSBzdWJyZXNvdXJjZSB3YXMgY2FjaGVkIGFuZCB1c2VkIGZvciBhIGJhY2sgbmF2aWdhdGlv
bgorUEFTUyAtIG5vLXN0b3JlIHN1YnJlc291cmNlIHdhcyByZWZldGNoZWQgd2l0aCBhIHJlbG9h
ZAorUEFTUyAtIG5vLXN0b3JlIHN1YnJlc291cmNlIHdhcyByZWZldGNoZWQgd2l0aCBhIG5vcm1h
bCBuYXZpZ2F0aW9uCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUv
aGlzdG9yeS1vbmx5LWNhY2hlZC1zdWJyZXNvdXJjZS1sb2Fkcy5odG1sIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9jYWNoZS9oaXN0b3J5LW9ubHktY2FjaGVkLXN1YnJlc291cmNlLWxvYWRzLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZmRmZGJlYWQ0MTQ1MGFmMTA5ZWI3YjhiNzM2YTNkNTNiMDhiZWE4Zgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUvaGlzdG9yeS1v
bmx5LWNhY2hlZC1zdWJyZXNvdXJjZS1sb2Fkcy5odG1sCkBAIC0wLDAgKzEsODkgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8dGl0bGU+VGVzdCBDYWNoaW5nICJuby1z
dG9yZSIgRm9yIEhpc3RvcnkgT25seTwvdGl0bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8cD4K
KyAgICAgICAgVGhpcyB0ZXN0IGNoZWNrcyB0aGF0IGxvYWRpbmcgYSBzdWJyZXNvdXJjZSB3aXRo
ICJDYWNoZS1Db250cm9sOiBuby1zdG9yZSIgaXMKKyAgICAgICAgY2FjaGVkIGFuZCByZXVzZWQg
aW4gYmFjayBuYXZpZ2F0aW9uIHdoZW4gdGhlIHBhZ2UgaXMgbm90IGluIHRoZSBwYWdlIGNhY2hl
LgorICAgIDwvcD4KKyAgICA8cD4KKyAgICAgICAgV2UgdGhlbiB0ZXN0IHRoYXQgbG9hZGluZyB0
aGUgc2FtZSBzdWJyZXNvdXJjZSBpcyByZWZldGNoZWQgd2hlbiB1c2VkIGluCisgICAgICAgIG5v
bi1zdGFsZSBsb2FkcyBzdWNoIGFzIHJlZnJlc2hlcyBvciBub3JtYWwgbmF2aWdhdGlvbi4KKyAg
ICA8L3A+CisgICAgPHByZSBpZD0iY29uc29sZSI+PC9wcmU+CisgICAgPHNjcmlwdD4KKyAgICAv
LyBBc3luY2hyb25vdXMgdGVzdCBiZWNhdXNlIHRoaXMgcmVxdWlyZXMgYSBuZXcgd2luZG93IHRv
IHBlcmZvcm0gbXVsdGlwbGUgbmF2aWdhdGlvbnMuCisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikgeworICAgICAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFz
VGV4dCgpOworICAgICAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9u
ZSgpOworICAgICAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0Q2FuT3BlbldpbmRv
d3MoKTsKKyAgICB9CisKKyAgICAvLyBWYWx1ZXMgdG8gY2hlY2suCisgICAgdmFyIG9yaWdpbmFs
UmFuZG9tTnVtYmVyID0gMDsKKyAgICB2YXIgYmFja0xvYWRSYW5kb21OdW1iZXIgPSAwOworICAg
IHZhciByZWZyZXNoUmFuZG9tTnVtYmVyICA9IDA7CisgICAgdmFyIG5leHRMb2FkUmFuZG9tTnVt
YmVyID0gMDsKKworICAgIC8vIFdpbmRvdyB3ZSB3aWxsIGJlIGNvbnRyb2xsaW5nLgorICAgIHZh
ciB0YXJnZXQ7CisKKyAgICAvLyBQYXNzIG1lc3NhZ2VzIGJldHdlZW4gd2luZG93cyB0byBjb250
cm9sIHRoZSBuYXZpZ2F0aW9uIHR5cGVzLgorICAgIHZhciBwcmUgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnY29uc29sZScpOworICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdl
JywgZnVuY3Rpb24oZXZlbnQpIHsKKworICAgICAgICAvLyBGaXJzdCB0aW1lLCByZWNvcmQgdGhl
IGZpcnN0IG51bWJlciwgYW5kIHRlbGwgdGhlIHdpbmRvdyB0byBzdGFydCBuYXZpZ2F0aW9uLgor
ICAgICAgICBpZiAoIW9yaWdpbmFsUmFuZG9tTnVtYmVyKSB7CisgICAgICAgICAgICBvcmlnaW5h
bFJhbmRvbU51bWJlciA9IGV2ZW50LmRhdGE7CisgICAgICAgICAgICB0YXJnZXQucG9zdE1lc3Nh
Z2UoJ2dvLWZvcndhcmQtYW5kLWJhY2snLCAnKicpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisKKyAgICAgICAgLy8gU2Vjb25kIHRpbWUsIHJlY29yZCB0aGUgc2Vjb25kIG51bWJl
ci4gSXQgc2hvdWxkIGJlIGlkZW50aWNhbC4gQWxzbyB0ZWxsIHRoZSB3aW5kb3cgdG8gcmVsb2Fk
LgorICAgICAgICBpZiAoIWJhY2tMb2FkUmFuZG9tTnVtYmVyKSB7CisgICAgICAgICAgICBiYWNr
TG9hZFJhbmRvbU51bWJlciA9IGV2ZW50LmRhdGE7CisgICAgICAgICAgICB2YXIgd2FzQ2FjaGVk
ID0gKGJhY2tMb2FkUmFuZG9tTnVtYmVyID09PSBvcmlnaW5hbFJhbmRvbU51bWJlcik7CisgICAg
ICAgICAgICBpZiAod2FzQ2FjaGVkKQorICAgICAgICAgICAgICAgIHByZS5hcHBlbmRDaGlsZChk
b2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnUEFTUyAtIG5vLXN0b3JlIHN1YnJlc291cmNlIHdhcyBj
YWNoZWQgYW5kIHVzZWQgZm9yIGEgYmFjayBuYXZpZ2F0aW9uXG4nKSk7CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgcHJlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHRO
b2RlKCdGQUlMIC0gbm8tc3RvcmUgc3VicmVzb3VyY2Ugc2hvdWxkIGhhdmUgYmVlbiBjYWNoZWQg
YW5kIHVzZWQgaW4gYSBiYWNrIG5hdmlnYXRpb25cbicpKTsKKyAgICAgICAgICAgIHRhcmdldC5w
b3N0TWVzc2FnZSgncmVsb2FkJywgJyonKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorCisgICAgICAgIC8vIFRoaXJkIHRpbWUsIHJlY29yZCB0aGUgdGhpcmQgbnVtYmVyLiBJdCBz
aG91bGQgbm90IG1hdGNoLgorICAgICAgICBpZiAoIXJlZnJlc2hSYW5kb21OdW1iZXIpIHsKKyAg
ICAgICAgICAgIHJlZnJlc2hSYW5kb21OdW1iZXIgPSBldmVudC5kYXRhOworICAgICAgICAgICAg
dmFyIHdhc0NhY2hlZCA9IChyZWZyZXNoUmFuZG9tTnVtYmVyID09PSBvcmlnaW5hbFJhbmRvbU51
bWJlcik7CisgICAgICAgICAgICBpZiAod2FzQ2FjaGVkKQorICAgICAgICAgICAgICAgIHByZS5h
cHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnRkFJTCAtIG5vLXN0b3JlIHN1YnJl
c291cmNlIHNob3VsZCBoYXZlIGJlZW4gcmVmZXRjaGVkIHdpdGggYSByZWxvYWRcbicpKTsKKyAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBwcmUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQu
Y3JlYXRlVGV4dE5vZGUoJ1BBU1MgLSBuby1zdG9yZSBzdWJyZXNvdXJjZSB3YXMgcmVmZXRjaGVk
IHdpdGggYSByZWxvYWRcbicpKTsKKyAgICAgICAgICAgIHRhcmdldC5wb3N0TWVzc2FnZSgnbmV4
dCcsICcqJyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICAvLyBG
b3VydGggdGltZSwgcmVjb3JkIHRoZSBmb3VydGggbnVtYmVyLiBJdCBzaG91bGQgbm90IG1hdGNo
IGFueSBudW1iZXJzIHNvIGZhci4KKyAgICAgICAgaWYgKCFuZXh0TG9hZFJhbmRvbU51bWJlcikg
eworICAgICAgICAgICAgbmV4dExvYWRSYW5kb21OdW1iZXIgPSBldmVudC5kYXRhOworICAgICAg
ICAgICAgdmFyIHdhc0NhY2hlZCA9IChuZXh0TG9hZFJhbmRvbU51bWJlciA9PT0gb3JpZ2luYWxS
YW5kb21OdW1iZXIgfHwgbmV4dExvYWRSYW5kb21OdW1iZXIgPT09IHJlZnJlc2hSYW5kb21OdW1i
ZXIpOworICAgICAgICAgICAgaWYgKHdhc0NhY2hlZCkKKyAgICAgICAgICAgICAgICBwcmUuYXBw
ZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ0ZBSUwgLSBuby1zdG9yZSBzdWJyZXNv
dXJjZSBzaG91bGQgaGF2ZSBiZWVuIHJlZmV0Y2hlZCB3aXRoIGEgbm9ybWFsIG5hdmlnYXRpb25c
bicpKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBwcmUuYXBwZW5kQ2hpbGQo
ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ1BBU1MgLSBuby1zdG9yZSBzdWJyZXNvdXJjZSB3YXMg
cmVmZXRjaGVkIHdpdGggYSBub3JtYWwgbmF2aWdhdGlvblxuJykpOworICAgICAgICB9CisKKyAg
ICAgICAgLy8gVGVzdCBjb21wbGV0ZWQuCisgICAgICAgIHRhcmdldC5jbG9zZSgpOworICAgICAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgd2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKworICAgIH0sIGZhbHNlKTsKKworICAg
IC8vIE9wZW4gdGhlIHdpbmRvdyBhbmQgaXQgd2lsbCBiZWdpbiB0byBzZW5kIHVzIG1lc3NhZ2Vz
LgorICAgIHRhcmdldCA9IHdpbmRvdy5vcGVuKCdyZXNvdXJjZXMvbm8tc3RvcmUtcmVzb3VyY2Uu
aHRtbCcpOworICAgIDwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUvcmVz
b3VyY2VzL25vLXN0b3JlLXJlc291cmNlLWZvcndhcmQuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvY2FjaGUvcmVzb3VyY2VzL25vLXN0b3JlLXJlc291cmNlLWZvcndhcmQuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5lYjI4ZTQzYjc2MDJiNjE4Y2I4YzZlM2ZlZDI3MjkzZGVlOGQ2NGM5Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS9yZXNvdXJjZXMvbm8tc3Rv
cmUtcmVzb3VyY2UtZm9yd2FyZC5odG1sCkBAIC0wLDAgKzEsNCBAQAorPHA+Tm93IGdvIGJhY2s8
L3A+Cis8c2NyaXB0Pgord2luZG93Lmhpc3RvcnkuYmFjaygpOworPC9zY3JpcHQ+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlL3Jlc291cmNlcy9uby1zdG9yZS1yZXNv
dXJjZS1uZXh0Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlL3Jlc291cmNlcy9u
by1zdG9yZS1yZXNvdXJjZS1uZXh0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmRlOGNkZjNiZWNjYmQ3Yzdm
NTgwNjViMTE1YjQ3ZTUwOWMwNDZiYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvY2FjaGUvcmVzb3VyY2VzL25vLXN0b3JlLXJlc291cmNlLW5leHQuaHRtbApAQCAt
MCwwICsxLDcgQEAKKzxoMT48L2gxPgorPHNjcmlwdCBzcmM9InJhbmRvbS5jZ2kiPjwvc2NyaXB0
PgorPHNjcmlwdD4KKy8vIFJhbmRvbS5jZ2kgd2lsbCBpbmNsdWRlIGEgZ2xvYmFsICJyYW5kb21O
dW1iZXIiLgorLy8gU2VuZCB0aGlzIGJhY2sgdG8gb3VyIG9wZW5lci4KK29wZW5lci5wb3N0TWVz
c2FnZShyYW5kb21OdW1iZXIsICcqJyk7Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvY2FjaGUvcmVzb3VyY2VzL25vLXN0b3JlLXJlc291cmNlLmh0bWwgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlL3Jlc291cmNlcy9uby1zdG9yZS1yZXNvdXJjZS5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjM0YmE1NTAzNmYyNTIyYzg0YTkzYmQ0YzA5Y2JkOTFlZjlkN2QxNTkK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlL3Jlc291cmNl
cy9uby1zdG9yZS1yZXNvdXJjZS5odG1sCkBAIC0wLDAgKzEsMzAgQEAKKzxoMT48L2gxPgorPHNj
cmlwdCBzcmM9InJhbmRvbS5jZ2kiPjwvc2NyaXB0PgorPHNjcmlwdD4KKy8vIFJhbmRvbS5jZ2kg
d2lsbCBpbmNsdWRlIGEgZ2xvYmFsICJyYW5kb21OdW1iZXIiLgorLy8gQWx3YXlzIHNlbmQgdGhp
cyBiYWNrIHRvIG91ciBvcGVuZXIuCitvcGVuZXIucG9zdE1lc3NhZ2UocmFuZG9tTnVtYmVyLCAn
KicpOworCisvLyBPdXIgb3BlbmVyIHdpbGwgdGVsbCB1cyB0byBwZXJmb3JtIHZhcmlvdXMgbG9h
ZHMuCit3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIGZ1bmN0aW9uKGV2ZW50KSB7
CisKKyAgICAvLyBHbyBmb3J3YXJkIGFuZCBiYWNrLgorICAgIGlmIChldmVudC5kYXRhID09PSAn
Z28tZm9yd2FyZC1hbmQtYmFjaycpIHsKKyAgICAgICAgd2luZG93LmxvY2F0aW9uID0gJ25vLXN0
b3JlLXJlc291cmNlLWZvcndhcmQuaHRtbCc7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICAvLyBSZWxvYWQuCisgICAgaWYgKGV2ZW50LmRhdGEgPT09ICdyZWxvYWQnKSB7CisgICAgICAg
IHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IC8vIE5vcm1hbCBuYXZpZ2F0aW9uLCBuZXh0LgorICAgIGlmIChldmVudC5kYXRhID09PSAnbmV4
dCcpIHsKKyAgICAgICAgd2luZG93LmxvY2F0aW9uID0gJ25vLXN0b3JlLXJlc291cmNlLW5leHQu
aHRtbCc7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKK30sIGZhbHNlKTsKKzwvc2NyaXB0Pgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS9yZXNvdXJjZXMvcmFuZG9t
LmNnaSBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUvcmVzb3VyY2VzL3JhbmRvbS5jZ2kK
bmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uOGY2NjIxYzdmNzQ4NTk2M2RkNzY3OGUyMTJiYmMwZDlkN2U3YWMzYgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUvcmVzb3VyY2VzL3Jh
bmRvbS5jZ2kKQEAgLTAsMCArMSw5IEBACisjIS91c3IvYmluL3BlcmwgLXcKKworcHJpbnQgIkNv
bnRlbnQtdHlwZTogdGV4dC9qYXZhc2NyaXB0XG4iOworcHJpbnQgIkNhY2hlLWNvbnRyb2w6IG5v
LXN0b3JlXG4iOworcHJpbnQgIlxuIjsKKworbXkgJHJhbmRvbV9udW1iZXIgPSBpbnQocmFuZCgx
MDAwMDAwMDAwMDAwKSk7CitwcmludCAicmFuZG9tTnVtYmVyID0gIiAuICRyYW5kb21fbnVtYmVy
IC4gIjtcbiI7CitwcmludCAiZG9jdW1lbnQucXVlcnlTZWxlY3RvcignaDEnKS50ZXh0Q29udGVu
dCA9IHJhbmRvbU51bWJlcjsiOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJD
b3JlL0NoYW5nZUxvZwppbmRleCBhM2NmZDM2ZDYwOTFlMTY0MTk2NDBhOTUzMDVkNDcyYmRjMTBk
ODVhLi4zMzQzNWVjYjE3NDEzMmQ0ZjI4N2Q0MjYwM2QxN2UxMjU0ZTEzOGUzIDEwMDY0NAotLS0g
YS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMx
IEBACisyMDEwLTExLTE3ICBKb3NlcGggUGVjb3Jhcm8gIDxqb2VwZWNrQHdlYmtpdC5vcmc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWxsb3cgbm8t
c3RvcmUgcmVzb3VyY2VzIHRvIGJlIHVzZWQgZm9yIGJhY2sgbmF2aWdhdGlvbgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDk2NzIKKworICAgICAgICBU
ZXN0OiBodHRwL3Rlc3RzL2NhY2hlL2hpc3Rvcnktb25seS1jYWNoZWQtc3VicmVzb3VyY2UtbG9h
ZHMuaHRtbAorCisgICAgICAgIEhUVFAgYWxsb3dzICJDYWNoZS1Db250cm9sOiBuby1zdG9yZSIg
cmVzb3VyY2VzIHRvICJjYWNoZWQiIGZvciB0aGUKKyAgICAgICAgcHVycG9zZXMgb2YgaGlzdG9y
eSwgc3VjaCBhcyBiYWNrL2ZvcndhcmQgbmF2aWdhdGlvbi4gUHJldmlvdXNseQorICAgICAgICBX
ZWJDb3JlIGp1c3QgaW1tZWRpYXRlbHkgZXZpY3RlZCB0aGVzZSByZXNvdXJjZXMsIG5vdyB3ZSBq
dXN0IG1hcmsKKyAgICAgICAgdGhlbSBhcyBoaXN0b3J5IG9ubHkuIFRoaXMgYWxsb3dzIHVzIHRv
IHVzZSB0aGVtIGlmIHRoZXkgYXJlIHVzZWQKKyAgICAgICAgaW4gYSBiYWNrIG5hdmlnYXRpb24s
IG9yIGxhemlseSBldmljdCBhbmQgcmVwbGFjZSB0aGVtIG9uIG90aGVyCisgICAgICAgIGxvYWQg
dHlwZXMgZXhwZWN0aW5nIG5vbi1zdGFsZSByZXNvdXJjZXMuCisKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3Vy
Y2U6OkNhY2hlZFJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpy
ZW1vdmVDbGllbnQpOiBpbnN0ZWFkIG9mIGltbWVkaWF0ZWx5IHJlbW92aW5nIHRoZSByZXNvdXJj
ZSBmcm9tIHRoZSBjYWNoZSwgbWFyayBpdCBhcyBoaXN0b3J5IG9ubHkuCisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNv
dXJjZTo6aXNIaXN0b3J5T25seSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6
c2V0SGlzdG9yeU9ubHkpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxv
YWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVz
dFJlc291cmNlKTogYWxsb3cgc3RhbGUsIGhpc3Rvcnkgb25seSByZXNvdXJjZXMsIGlmIHRoZSBD
YWNoZVBvbGljeSBpcyBDYWNoZVBvbGljeUFsbG93U3RhbGUgKGJhY2svZm93YXJkIG5hdmlnYXRp
b24pLgorICAgICAgICAqIGxvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpNZW1vcnlDYWNoZTo6cmVxdWVzdFJlc291cmNlKTogbGF6aWx5IHJlbW92ZSBoaXN0
b3J5IG9ubHkgcmVzb3VyY2VzIGlmIGl0IGlzIHJlcXVlc3RlZCBmb3IgYSBsb2FkIHR5cGUgZXhw
ZWN0aW5nIG5vbi1zdGFsZSByZXNvdXJjZXMuCisgICAgICAgICogbG9hZGVyL2NhY2hlL01lbW9y
eUNhY2hlLmg6IGRlZmF1bHQgdGhlIGFsbG93U3RhbGUgcGFyYW1ldGVyIHRvIGZhbHNlLgorCiAy
MDEwLTExLTE2ICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IFl1cnkgU2VtaWtoYXRza3kuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAgYi9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZS5jcHAKaW5kZXggYzQ0MGVjOTUxNjdmMmM4YmMxZmVmMjZkYmU1YjY3YmY2Njg2
NjhmZi4uZmRkNGVkMDIzM2YzMmEwNDMyNzEyNjE0MmVmOTI1YmE4NWVmMmRmYSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCisrKyBiL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcApAQCAtNjksNiArNjksNyBAQCBDYWNoZWRS
ZXNvdXJjZTo6Q2FjaGVkUmVzb3VyY2UoY29uc3QgU3RyaW5nJiB1cmwsIFR5cGUgdHlwZSkKICAg
ICAsIG1fZXJyb3JPY2N1cnJlZChmYWxzZSkKICAgICAsIG1faW5DYWNoZShmYWxzZSkKICAgICAs
IG1fbG9hZGluZyhmYWxzZSkKKyAgICAsIG1faGlzdG9yeU9ubHkoZmFsc2UpCiAgICAgLCBtX3R5
cGUodHlwZSkKICAgICAsIG1fc3RhdHVzKFBlbmRpbmcpCiAjaWZuZGVmIE5ERUJVRwpAQCAtMjUz
LDggKzI1NCw5IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OnJlbW92ZUNsaWVudChDYWNoZWRSZXNv
dXJjZUNsaWVudCogY2xpZW50KQogICAgICAgICBhbGxDbGllbnRzUmVtb3ZlZCgpOwogICAgICAg
ICBpZiAocmVzcG9uc2UoKS5jYWNoZUNvbnRyb2xDb250YWluc05vU3RvcmUoKSkgewogICAgICAg
ICAgICAgLy8gUkZDMjYxNiAxNC45LjI6Ci0gICAgICAgICAgICAvLyAibm8tc3RvcmU6IC4uLk1V
U1QgbWFrZSBhIGJlc3QtZWZmb3J0IGF0dGVtcHQgdG8gcmVtb3ZlIHRoZSBpbmZvcm1hdGlvbiBm
cm9tIHZvbGF0aWxlIHN0b3JhZ2UgYXMgcHJvbXB0bHkgYXMgcG9zc2libGUiCi0gICAgICAgICAg
ICBjYWNoZSgpLT5yZW1vdmUodGhpcyk7CisgICAgICAgICAgICAvLyAibm8tc3RvcmU6IC4uLiBN
VVNUIG1ha2UgYSBiZXN0LWVmZm9ydCBhdHRlbXB0IHRvIHJlbW92ZSB0aGUgaW5mb3JtYXRpb24g
ZnJvbSB2b2xhdGlsZSBzdG9yYWdlIGFzIHByb21wdGx5IGFzIHBvc3NpYmxlIgorICAgICAgICAg
ICAgLy8gIi4uLiBIaXN0b3J5IGJ1ZmZlcnMgTUFZIHN0b3JlIHN1Y2ggcmVzcG9uc2VzIGFzIHBh
cnQgb2YgdGhlaXIgbm9ybWFsIG9wZXJhdGlvbi4iCisgICAgICAgICAgICBzZXRIaXN0b3J5T25s
eSh0cnVlKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBjYWNoZSgpLT5wcnVuZSgpOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgg
Yi9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCmluZGV4IGJhMDI0NTk4YmFl
NmI3YjdhZjEyYmI1M2JjZjJhMWIwZWQyYTZkY2IuLjA2Y2YzNTUzMDE0OTRhODNlNWNiNzMxYTVl
ZWQzY2NhYzM0MjMxYzUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlLmgKKysrIGIvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaApAQCAt
MTIwLDYgKzEyMCw5IEBAIHB1YmxpYzoKICAgICBib29sIGlzTG9hZGluZygpIGNvbnN0IHsgcmV0
dXJuIG1fbG9hZGluZzsgfQogICAgIHZvaWQgc2V0TG9hZGluZyhib29sIGIpIHsgbV9sb2FkaW5n
ID0gYjsgfQogCisgICAgYm9vbCBpc0hpc3RvcnlPbmx5KCkgY29uc3QgeyByZXR1cm4gbV9oaXN0
b3J5T25seTsgfQorICAgIHZvaWQgc2V0SGlzdG9yeU9ubHkoYm9vbCBiKSB7IG1faGlzdG9yeU9u
bHkgPSBiOyB9CisKICAgICB2aXJ0dWFsIGJvb2wgaXNJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CiAgICAgYm9vbCBpc1ByZWZldGNoKCkgY29uc3QKICAgICB7CkBAIC0yNTQsNiArMjU3
LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fZXJyb3JPY2N1cnJlZCA6IDE7CiAgICAgYm9vbCBt
X2luQ2FjaGUgOiAxOwogICAgIGJvb2wgbV9sb2FkaW5nIDogMTsKKyAgICBib29sIG1faGlzdG9y
eU9ubHkgOiAxOwogCiAgICAgdW5zaWduZWQgbV90eXBlIDogMzsgLy8gVHlwZQogICAgIHVuc2ln
bmVkIG1fc3RhdHVzIDogMjsgLy8gU3RhdHVzCmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAgYi9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggM2Q0MjQ0YzBhOTcyMjUyMTVlNWQxYTYzYmI0ZmQx
ZWQyNTI3YTVmNC4uMjQ4ZGMyMzkzN2MwZGI0YzBiYWYzY2ZmMTViNWUzNjUxYzg1NGQzNCAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCisr
KyBiL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcApAQCAtMjYz
LDcgKzI2Myw4IEBAIENhY2hlZFJlc291cmNlKiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVz
dFJlc291cmNlKENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUsCiAKICAgICBjaGVja0ZvclJlbG9h
ZChmdWxsVVJMKTsKIAotICAgIENhY2hlZFJlc291cmNlKiByZXNvdXJjZSA9IGNhY2hlKCktPnJl
cXVlc3RSZXNvdXJjZSh0aGlzLCB0eXBlLCBmdWxsVVJMLCBjaGFyc2V0LCBpc1ByZWxvYWQpOwor
ICAgIGJvb2wgYWxsb3dTdGFsZVJlc291cmNlcyA9IGNhY2hlUG9saWN5KCkgPT0gQ2FjaGVQb2xp
Y3lBbGxvd1N0YWxlOworICAgIENhY2hlZFJlc291cmNlKiByZXNvdXJjZSA9IGNhY2hlKCktPnJl
cXVlc3RSZXNvdXJjZSh0aGlzLCB0eXBlLCBmdWxsVVJMLCBjaGFyc2V0LCBpc1ByZWxvYWQsIGFs
bG93U3RhbGVSZXNvdXJjZXMpOwogICAgIGlmIChyZXNvdXJjZSkgewogICAgICAgICAvLyBDaGVj
ayBmaW5hbCBVUkwgb2YgcmVzb3VyY2UgdG8gY2F0Y2ggcmVkaXJlY3RzLgogICAgICAgICAvLyBT
ZWUgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTk2Mz4uCmRpZmYg
LS1naXQgYS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAgYi9XZWJDb3JlL2xv
YWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAKaW5kZXggMjVhZjc3NGUxYzZmMzk3YmEzMjg3ODNk
MDM0MmE5NTU1Y2Y5ZTYyMC4uNTliY2EwZjYwMDBjZDUzMjUzNDJjN2FkN2FjOTQ3MDIxMjk3ZWY5
NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwCisrKyBi
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcApAQCAtOTQsOSArOTQsOSBAQCBz
dGF0aWMgQ2FjaGVkUmVzb3VyY2UqIGNyZWF0ZVJlc291cmNlKENhY2hlZFJlc291cmNlOjpUeXBl
IHR5cGUsIGNvbnN0IEtVUkwmIHVybAogICAgIHJldHVybiAwOwogfQogCi1DYWNoZWRSZXNvdXJj
ZSogTWVtb3J5Q2FjaGU6OnJlcXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZUxvYWRlciogY2Fj
aGVkUmVzb3VyY2VMb2FkZXIsIENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUsIGNvbnN0IEtVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiBjaGFyc2V0LCBib29sIHJlcXVlc3RJc1ByZWxvYWQpCitDYWNo
ZWRSZXNvdXJjZSogTWVtb3J5Q2FjaGU6OnJlcXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZUxv
YWRlciogY2FjaGVkUmVzb3VyY2VMb2FkZXIsIENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUsIGNv
bnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjaGFyc2V0LCBib29sIHJlcXVlc3RJc1ByZWxv
YWQsIGJvb2wgYWxsb3dTdGFsZSkKIHsKLSAgICBMT0coUmVzb3VyY2VMb2FkaW5nLCAiTWVtb3J5
Q2FjaGU6OnJlcXVlc3RSZXNvdXJjZSAnJXMnLCBjaGFyc2V0ICclcycsIHByZWxvYWQ9JXUiLCB1
cmwuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpLCBjaGFyc2V0LmxhdGluMSgpLmRhdGEoKSwgcmVx
dWVzdElzUHJlbG9hZCk7CisgICAgTE9HKFJlc291cmNlTG9hZGluZywgIk1lbW9yeUNhY2hlOjpy
ZXF1ZXN0UmVzb3VyY2UgJyVzJywgY2hhcnNldCAnJXMnLCBwcmVsb2FkPSV1LCBhbGxvd1N0YWxl
PSV1IiwgdXJsLnN0cmluZygpLmxhdGluMSgpLmRhdGEoKSwgY2hhcnNldC5sYXRpbjEoKS5kYXRh
KCksIHJlcXVlc3RJc1ByZWxvYWQsIGFsbG93U3RhbGUpOwogCiAgICAgLy8gRklYTUU6IERvIHdl
IHJlYWxseSBuZWVkIHRvIHNwZWNpYWwtY2FzZSBhbiBlbXB0eSBVUkw/CiAgICAgLy8gV291bGQg
aXQgYmUgYmV0dGVyIHRvIGp1c3QgZ28gb24gd2l0aCB0aGUgY2FjaGUgY29kZSBhbmQgbGV0IGl0
IGZhaWwgbGF0ZXI/CkBAIC0xMDYsNiArMTA2LDEyIEBAIENhY2hlZFJlc291cmNlKiBNZW1vcnlD
YWNoZTo6cmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291cmNlTG9hZGVyKiBjYWNoZWRSZXNvdXJj
CiAgICAgLy8gTG9vayB1cCB0aGUgcmVzb3VyY2UgaW4gb3VyIG1hcC4KICAgICBDYWNoZWRSZXNv
dXJjZSogcmVzb3VyY2UgPSByZXNvdXJjZUZvclVSTCh1cmwuc3RyaW5nKCkpOwogCisgICAgaWYg
KCFhbGxvd1N0YWxlICYmIHJlc291cmNlICYmIHJlc291cmNlLT5pc0hpc3RvcnlPbmx5KCkpIHsK
KyAgICAgICAgTE9HKFJlc291cmNlTG9hZGluZywgIk1lbW9yeUNhY2hlOjpyZXF1ZXN0UmVzb3Vy
Y2UgY2xlYXJlZCBhIGhpc3Rvcnkgb25seSByZXNvdXJjZSBkdWUgdG8gYSBub24tc3RhbGUgcmVx
dWVzdCBmb3IgdGhlIHJlc291cmNlIik7CisgICAgICAgIHJlbW92ZShyZXNvdXJjZSk7CisgICAg
ICAgIHJlc291cmNlID0gMDsKKyAgICB9CisKICAgICBpZiAocmVzb3VyY2UgJiYgcmVxdWVzdElz
UHJlbG9hZCAmJiAhcmVzb3VyY2UtPmlzUHJlbG9hZGVkKCkpIHsKICAgICAgICAgTE9HKFJlc291
cmNlTG9hZGluZywgIk1lbW9yeUNhY2hlOjpyZXF1ZXN0UmVzb3VyY2UgYWxyZWFkeSBoYXMgYSBw
cmVsb2FkIHJlcXVlc3QgZm9yIHRoaXMgcmVxdWVzdCwgYW5kIGl0IGhhc24ndCBiZWVuIHByZWxv
YWRlZCB5ZXQiKTsKICAgICAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9NZW1vcnlDYWNoZS5oIGIvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUu
aAppbmRleCBiZjBmMzJjM2RjZTJjZTVkNGYyNzNiYjAzOGM0ZjZjNDQ0MDQ2M2E5Li4wMmE3Yzkx
MGQxZWYzZWNhZWE5MTNlMDdhN2FmNzUwYjk5MGUyMTM5IDEwMDY0NAotLS0gYS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oCisrKyBiL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9y
eUNhY2hlLmgKQEAgLTEwOSw3ICsxMDksNyBAQCBwdWJsaWM6CiAKICAgICAvLyBSZXF1ZXN0IHJl
c291cmNlcyBmcm9tIHRoZSBjYWNoZS4gIEEgbG9hZCB3aWxsIGJlIGluaXRpYXRlZCBhbmQgYSBj
YWNoZSBvYmplY3QgY3JlYXRlZCBpZiB0aGUgb2JqZWN0IGlzIG5vdAogICAgIC8vIGZvdW5kIGlu
IHRoZSBjYWNoZS4KLSAgICBDYWNoZWRSZXNvdXJjZSogcmVxdWVzdFJlc291cmNlKENhY2hlZFJl
c291cmNlTG9hZGVyKiwgQ2FjaGVkUmVzb3VyY2U6OlR5cGUsIGNvbnN0IEtVUkwmIHVybCwgY29u
c3QgU3RyaW5nJiBjaGFyc2V0LCBib29sIGlzUHJlbG9hZCA9IGZhbHNlKTsKKyAgICBDYWNoZWRS
ZXNvdXJjZSogcmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291cmNlTG9hZGVyKiwgQ2FjaGVkUmVz
b3VyY2U6OlR5cGUsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjaGFyc2V0LCBib29s
IGlzUHJlbG9hZCA9IGZhbHNlLCBib29sIGFsbG93U3RhbGUgPSBmYWxzZSk7CiAKICAgICBDYWNo
ZWRDU1NTdHlsZVNoZWV0KiByZXF1ZXN0VXNlckNTU1N0eWxlU2hlZXQoQ2FjaGVkUmVzb3VyY2VM
b2FkZXIqLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBjaGFyc2V0KTsKICAgICAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>74133</attachid>
            <date>2010-11-17 10:49:23 -0800</date>
            <delta_ts>2010-11-18 03:20:23 -0800</delta_ts>
            <desc>[PATCH] Fixed Typos + Improved Comments</desc>
            <filename>take-2.patch</filename>
            <type>text/plain</type>
            <size>15810</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBkMjcwMGZjLi5iNjZiM2I2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTAtMTEt
MTcgIEpvc2VwaCBQZWNvcmFybyAgPGpvZXBlY2tAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBbGxvdyBuby1zdG9yZSByZXNvdXJj
ZXMgdG8gYmUgdXNlZCBmb3IgYmFjayBuYXZpZ2F0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00OTY3MgorCisgICAgICAgIEFkZCB0ZXN0cyBmb3Ig
Y2hlY2tpbmcgaWYgdGhlIGNhY2hlIHdhcyB1c2VkIGZvciBhICJDYWNoZS1jb250cm9sOiBuby1z
dG9yZSIKKyAgICAgICAgcmVzb3VyY2UgaW4gYmFjayBuYXZpZ2F0aW9uLCByZWxvYWQgbmF2aWdh
dGlvbiwgYW5kIG5vcm1hbCBuYXZpZ2F0aW9uLgorCisgICAgICAgICogaHR0cC90ZXN0cy9jYWNo
ZS9oaXN0b3J5LW9ubHktY2FjaGVkLXN1YnJlc291cmNlLWxvYWRzLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9jYWNoZS9oaXN0b3J5LW9ubHktY2FjaGVkLXN1YnJl
c291cmNlLWxvYWRzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvY2FjaGUvcmVz
b3VyY2VzL25vLXN0b3JlLXJlc291cmNlLWZvcndhcmQuaHRtbDogQWRkZWQuCisgICAgICAgICog
aHR0cC90ZXN0cy9jYWNoZS9yZXNvdXJjZXMvbm8tc3RvcmUtcmVzb3VyY2UtbmV4dC5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2NhY2hlL3Jlc291cmNlcy9uby1zdG9yZS1yZXNv
dXJjZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2NhY2hlL3Jlc291cmNlcy9y
YW5kb20uY2dpOiBBZGRlZC4KKwogMjAxMC0xMS0xNiAgTWFyY3VzIEJ1bGFjaCAgPGJ1bGFjaEBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgTm90IHJldmlld2VkLCBjaHJvbWl1bSB0ZXN0IGV4cGVj
dGF0aW9uIGFuZCBiYXNlbGluZXMgdXBkYXRlLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9jYWNoZS9oaXN0b3J5LW9ubHktY2FjaGVkLXN1YnJlc291cmNlLWxvYWRzLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUvaGlzdG9yeS1vbmx5LWNhY2hl
ZC1zdWJyZXNvdXJjZS1sb2Fkcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uMTEyNWVmZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvY2FjaGUvaGlzdG9yeS1vbmx5LWNhY2hlZC1zdWJyZXNvdXJjZS1sb2Fkcy1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSw4IEBACitUaGlzIHRlc3QgY2hlY2tzIHRoYXQgbG9hZGluZyBhIHN1
YnJlc291cmNlIHdpdGggIkNhY2hlLUNvbnRyb2w6IG5vLXN0b3JlIiBpcyBjYWNoZWQgYW5kIHJl
dXNlZCBpbiBiYWNrIG5hdmlnYXRpb24gd2hlbiB0aGUgcGFnZSBpcyBub3QgaW4gdGhlIHBhZ2Ug
Y2FjaGUuCisKK1dlIHRoZW4gdGVzdCB0aGF0IGxvYWRpbmcgdGhlIHNhbWUgc3VicmVzb3VyY2Ug
aXMgcmVmZXRjaGVkIHdoZW4gdXNlZCBpbiBub24tc3RhbGUgbG9hZHMgc3VjaCBhcyByZWZyZXNo
ZXMgb3Igbm9ybWFsIG5hdmlnYXRpb24uCisKK1BBU1MgLSBuby1zdG9yZSBzdWJyZXNvdXJjZSB3
YXMgY2FjaGVkIGFuZCB1c2VkIGZvciBhIGJhY2sgbmF2aWdhdGlvbgorUEFTUyAtIG5vLXN0b3Jl
IHN1YnJlc291cmNlIHdhcyByZWZldGNoZWQgd2l0aCBhIHJlbG9hZAorUEFTUyAtIG5vLXN0b3Jl
IHN1YnJlc291cmNlIHdhcyByZWZldGNoZWQgd2l0aCBhIG5vcm1hbCBuYXZpZ2F0aW9uCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUvaGlzdG9yeS1vbmx5LWNhY2hl
ZC1zdWJyZXNvdXJjZS1sb2Fkcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS9o
aXN0b3J5LW9ubHktY2FjaGVkLXN1YnJlc291cmNlLWxvYWRzLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uOThiZThkZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvY2FjaGUvaGlzdG9yeS1vbmx5LWNhY2hlZC1zdWJyZXNvdXJjZS1sb2Fk
cy5odG1sCkBAIC0wLDAgKzEsODkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4K
KyAgICA8dGl0bGU+VGVzdCBDYWNoaW5nICJuby1zdG9yZSIgRm9yIEhpc3RvcnkgT25seTwvdGl0
bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8cD4KKyAgICAgICAgVGhpcyB0ZXN0IGNoZWNrcyB0
aGF0IGxvYWRpbmcgYSBzdWJyZXNvdXJjZSB3aXRoICJDYWNoZS1Db250cm9sOiBuby1zdG9yZSIg
aXMKKyAgICAgICAgY2FjaGVkIGFuZCByZXVzZWQgaW4gYmFjayBuYXZpZ2F0aW9uIHdoZW4gdGhl
IHBhZ2UgaXMgbm90IGluIHRoZSBwYWdlIGNhY2hlLgorICAgIDwvcD4KKyAgICA8cD4KKyAgICAg
ICAgV2UgdGhlbiB0ZXN0IHRoYXQgbG9hZGluZyB0aGUgc2FtZSBzdWJyZXNvdXJjZSBpcyByZWZl
dGNoZWQgd2hlbiB1c2VkIGluCisgICAgICAgIG5vbi1zdGFsZSBsb2FkcyBzdWNoIGFzIHJlZnJl
c2hlcyBvciBub3JtYWwgbmF2aWdhdGlvbi4KKyAgICA8L3A+CisgICAgPHByZSBpZD0iY29uc29s
ZSI+PC9wcmU+CisgICAgPHNjcmlwdD4KKyAgICAvLyBBc3luY2hyb25vdXMgdGVzdCBiZWNhdXNl
IHRoaXMgcmVxdWlyZXMgYSBuZXcgd2luZG93IHRvIHBlcmZvcm0gbXVsdGlwbGUgbmF2aWdhdGlv
bnMuCisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICB3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICB3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICB3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIuc2V0Q2FuT3BlbldpbmRvd3MoKTsKKyAgICB9CisKKyAgICAvLyBWYWx1
ZXMgdG8gY2hlY2suCisgICAgdmFyIG9yaWdpbmFsUmFuZG9tTnVtYmVyID0gMDsKKyAgICB2YXIg
YmFja0xvYWRSYW5kb21OdW1iZXIgPSAwOworICAgIHZhciByZWZyZXNoUmFuZG9tTnVtYmVyICA9
IDA7CisgICAgdmFyIG5leHRMb2FkUmFuZG9tTnVtYmVyID0gMDsKKworICAgIC8vIFdpbmRvdyB3
ZSB3aWxsIGJlIGNvbnRyb2xsaW5nLgorICAgIHZhciB0YXJnZXQ7CisKKyAgICAvLyBQYXNzIG1l
c3NhZ2VzIGJldHdlZW4gd2luZG93cyB0byBjb250cm9sIHRoZSBuYXZpZ2F0aW9uIHR5cGVzLgor
ICAgIHZhciBwcmUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpOworICAgIHdp
bmRvdy5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgZnVuY3Rpb24oZXZlbnQpIHsKKworICAg
ICAgICAvLyBGaXJzdCB0aW1lLCByZWNvcmQgdGhlIGZpcnN0IG51bWJlciwgYW5kIHRlbGwgdGhl
IHRhcmdldCB3aW5kb3cgdG8gdHJpZ2dlciBhIGJhY2sgbmF2aWdhdGlvbi4KKyAgICAgICAgaWYg
KCFvcmlnaW5hbFJhbmRvbU51bWJlcikgeworICAgICAgICAgICAgb3JpZ2luYWxSYW5kb21OdW1i
ZXIgPSBldmVudC5kYXRhOworICAgICAgICAgICAgdGFyZ2V0LnBvc3RNZXNzYWdlKCdnby1mb3J3
YXJkLWFuZC1iYWNrJywgJyonKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisg
ICAgICAgIC8vIFNlY29uZCB0aW1lLCByZWNvcmQgdGhlIHNlY29uZCBudW1iZXIuIEl0IHNob3Vs
ZCBiZSBpZGVudGljYWwuIEFsc28gdGVsbCB0aGUgdGFyZ2V0IHdpbmRvdyB0byByZWxvYWQuCisg
ICAgICAgIGlmICghYmFja0xvYWRSYW5kb21OdW1iZXIpIHsKKyAgICAgICAgICAgIGJhY2tMb2Fk
UmFuZG9tTnVtYmVyID0gZXZlbnQuZGF0YTsKKyAgICAgICAgICAgIHZhciB3YXNDYWNoZWQgPSAo
YmFja0xvYWRSYW5kb21OdW1iZXIgPT09IG9yaWdpbmFsUmFuZG9tTnVtYmVyKTsKKyAgICAgICAg
ICAgIGlmICh3YXNDYWNoZWQpCisgICAgICAgICAgICAgICAgcHJlLmFwcGVuZENoaWxkKGRvY3Vt
ZW50LmNyZWF0ZVRleHROb2RlKCdQQVNTIC0gbm8tc3RvcmUgc3VicmVzb3VyY2Ugd2FzIGNhY2hl
ZCBhbmQgdXNlZCBmb3IgYSBiYWNrIG5hdmlnYXRpb25cbicpKTsKKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICBwcmUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUo
J0ZBSUwgLSBuby1zdG9yZSBzdWJyZXNvdXJjZSBzaG91bGQgaGF2ZSBiZWVuIGNhY2hlZCBhbmQg
dXNlZCBpbiBhIGJhY2sgbmF2aWdhdGlvblxuJykpOworICAgICAgICAgICAgdGFyZ2V0LnBvc3RN
ZXNzYWdlKCdyZWxvYWQnLCAnKicpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisK
KyAgICAgICAgLy8gVGhpcmQgdGltZSwgcmVjb3JkIHRoZSB0aGlyZCBudW1iZXIuIEl0IHNob3Vs
ZCBub3QgbWF0Y2guIEFsc28gdGVsbCB0aGUgdGFyZ2V0IHdpbmRvdyB0byBuYXZpZ2F0ZSBmb3J3
YXJkLgorICAgICAgICBpZiAoIXJlZnJlc2hSYW5kb21OdW1iZXIpIHsKKyAgICAgICAgICAgIHJl
ZnJlc2hSYW5kb21OdW1iZXIgPSBldmVudC5kYXRhOworICAgICAgICAgICAgdmFyIHdhc0NhY2hl
ZCA9IChyZWZyZXNoUmFuZG9tTnVtYmVyID09PSBvcmlnaW5hbFJhbmRvbU51bWJlcik7CisgICAg
ICAgICAgICBpZiAod2FzQ2FjaGVkKQorICAgICAgICAgICAgICAgIHByZS5hcHBlbmRDaGlsZChk
b2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnRkFJTCAtIG5vLXN0b3JlIHN1YnJlc291cmNlIHNob3Vs
ZCBoYXZlIGJlZW4gcmVmZXRjaGVkIHdpdGggYSByZWxvYWRcbicpKTsKKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICBwcmUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5v
ZGUoJ1BBU1MgLSBuby1zdG9yZSBzdWJyZXNvdXJjZSB3YXMgcmVmZXRjaGVkIHdpdGggYSByZWxv
YWRcbicpKTsKKyAgICAgICAgICAgIHRhcmdldC5wb3N0TWVzc2FnZSgnbmV4dCcsICcqJyk7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICAvLyBGb3VydGggdGltZSwg
cmVjb3JkIHRoZSBmb3VydGggbnVtYmVyLiBJdCBzaG91bGQgbm90IG1hdGNoIGFueSBudW1iZXJz
IHNvIGZhci4KKyAgICAgICAgaWYgKCFuZXh0TG9hZFJhbmRvbU51bWJlcikgeworICAgICAgICAg
ICAgbmV4dExvYWRSYW5kb21OdW1iZXIgPSBldmVudC5kYXRhOworICAgICAgICAgICAgdmFyIHdh
c0NhY2hlZCA9IChuZXh0TG9hZFJhbmRvbU51bWJlciA9PT0gb3JpZ2luYWxSYW5kb21OdW1iZXIg
fHwgbmV4dExvYWRSYW5kb21OdW1iZXIgPT09IHJlZnJlc2hSYW5kb21OdW1iZXIpOworICAgICAg
ICAgICAgaWYgKHdhc0NhY2hlZCkKKyAgICAgICAgICAgICAgICBwcmUuYXBwZW5kQ2hpbGQoZG9j
dW1lbnQuY3JlYXRlVGV4dE5vZGUoJ0ZBSUwgLSBuby1zdG9yZSBzdWJyZXNvdXJjZSBzaG91bGQg
aGF2ZSBiZWVuIHJlZmV0Y2hlZCB3aXRoIGEgbm9ybWFsIG5hdmlnYXRpb25cbicpKTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBwcmUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3Jl
YXRlVGV4dE5vZGUoJ1BBU1MgLSBuby1zdG9yZSBzdWJyZXNvdXJjZSB3YXMgcmVmZXRjaGVkIHdp
dGggYSBub3JtYWwgbmF2aWdhdGlvblxuJykpOworICAgICAgICB9CisKKyAgICAgICAgLy8gVGVz
dCBjb21wbGV0ZWQuCisgICAgICAgIHRhcmdldC5jbG9zZSgpOworICAgICAgICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgd2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyLm5vdGlmeURvbmUoKTsKKworICAgIH0sIGZhbHNlKTsKKworICAgIC8vIE9wZW4gdGhl
IHRhcmdldCB3aW5kb3cgYW5kIGl0IHdpbGwgYmVnaW4gdG8gc2VuZCB1cyBtZXNzYWdlcy4KKyAg
ICB0YXJnZXQgPSB3aW5kb3cub3BlbigncmVzb3VyY2VzL25vLXN0b3JlLXJlc291cmNlLmh0bWwn
KTsKKyAgICA8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlL3Jlc291cmNl
cy9uby1zdG9yZS1yZXNvdXJjZS1mb3J3YXJkLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2NhY2hlL3Jlc291cmNlcy9uby1zdG9yZS1yZXNvdXJjZS1mb3J3YXJkLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWIyOGU0MwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUvcmVzb3VyY2VzL25vLXN0b3JlLXJlc291cmNlLWZv
cndhcmQuaHRtbApAQCAtMCwwICsxLDQgQEAKKzxwPk5vdyBnbyBiYWNrPC9wPgorPHNjcmlwdD4K
K3dpbmRvdy5oaXN0b3J5LmJhY2soKTsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9jYWNoZS9yZXNvdXJjZXMvbm8tc3RvcmUtcmVzb3VyY2UtbmV4dC5odG1s
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS9yZXNvdXJjZXMvbm8tc3RvcmUtcmVzb3Vy
Y2UtbmV4dC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJkZThjZGYK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlL3Jlc291cmNl
cy9uby1zdG9yZS1yZXNvdXJjZS1uZXh0Lmh0bWwKQEAgLTAsMCArMSw3IEBACis8aDE+PC9oMT4K
KzxzY3JpcHQgc3JjPSJyYW5kb20uY2dpIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisvLyBSYW5kb20u
Y2dpIHdpbGwgaW5jbHVkZSBhIGdsb2JhbCAicmFuZG9tTnVtYmVyIi4KKy8vIFNlbmQgdGhpcyBi
YWNrIHRvIG91ciBvcGVuZXIuCitvcGVuZXIucG9zdE1lc3NhZ2UocmFuZG9tTnVtYmVyLCAnKicp
OworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlL3Jl
c291cmNlcy9uby1zdG9yZS1yZXNvdXJjZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9j
YWNoZS9yZXNvdXJjZXMvbm8tc3RvcmUtcmVzb3VyY2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi4zNGJhNTUwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9jYWNoZS9yZXNvdXJjZXMvbm8tc3RvcmUtcmVzb3VyY2UuaHRtbApAQCAtMCww
ICsxLDMwIEBACis8aDE+PC9oMT4KKzxzY3JpcHQgc3JjPSJyYW5kb20uY2dpIj48L3NjcmlwdD4K
KzxzY3JpcHQ+CisvLyBSYW5kb20uY2dpIHdpbGwgaW5jbHVkZSBhIGdsb2JhbCAicmFuZG9tTnVt
YmVyIi4KKy8vIEFsd2F5cyBzZW5kIHRoaXMgYmFjayB0byBvdXIgb3BlbmVyLgorb3BlbmVyLnBv
c3RNZXNzYWdlKHJhbmRvbU51bWJlciwgJyonKTsKKworLy8gT3VyIG9wZW5lciB3aWxsIHRlbGwg
dXMgdG8gcGVyZm9ybSB2YXJpb3VzIGxvYWRzLgord2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21l
c3NhZ2UnLCBmdW5jdGlvbihldmVudCkgeworCisgICAgLy8gR28gZm9yd2FyZCBhbmQgYmFjay4K
KyAgICBpZiAoZXZlbnQuZGF0YSA9PT0gJ2dvLWZvcndhcmQtYW5kLWJhY2snKSB7CisgICAgICAg
IHdpbmRvdy5sb2NhdGlvbiA9ICduby1zdG9yZS1yZXNvdXJjZS1mb3J3YXJkLmh0bWwnOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gUmVsb2FkLgorICAgIGlmIChldmVudC5kYXRh
ID09PSAncmVsb2FkJykgeworICAgICAgICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBOb3JtYWwgbmF2aWdhdGlvbiwgbmV4dC4KKyAg
ICBpZiAoZXZlbnQuZGF0YSA9PT0gJ25leHQnKSB7CisgICAgICAgIHdpbmRvdy5sb2NhdGlvbiA9
ICduby1zdG9yZS1yZXNvdXJjZS1uZXh0Lmh0bWwnOworICAgICAgICByZXR1cm47CisgICAgfQor
Cit9LCBmYWxzZSk7Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvY2FjaGUvcmVzb3VyY2VzL3JhbmRvbS5jZ2kgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nh
Y2hlL3Jlc291cmNlcy9yYW5kb20uY2dpCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAw
MDAuLjhmNjYyMWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nh
Y2hlL3Jlc291cmNlcy9yYW5kb20uY2dpCkBAIC0wLDAgKzEsOSBAQAorIyEvdXNyL2Jpbi9wZXJs
IC13CisKK3ByaW50ICJDb250ZW50LXR5cGU6IHRleHQvamF2YXNjcmlwdFxuIjsKK3ByaW50ICJD
YWNoZS1jb250cm9sOiBuby1zdG9yZVxuIjsKK3ByaW50ICJcbiI7CisKK215ICRyYW5kb21fbnVt
YmVyID0gaW50KHJhbmQoMTAwMDAwMDAwMDAwMCkpOworcHJpbnQgInJhbmRvbU51bWJlciA9ICIg
LiAkcmFuZG9tX251bWJlciAuICI7XG4iOworcHJpbnQgImRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Io
J2gxJykudGV4dENvbnRlbnQgPSByYW5kb21OdW1iZXI7IjsKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTNjZmQzNmQuLmI1NjQ3NmQgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMzEgQEAKKzIwMTAtMTEtMTcgIEpvc2VwaCBQZWNvcmFybyAgPGpvZXBlY2tAd2Via2l0
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
bGxvdyBuby1zdG9yZSByZXNvdXJjZXMgdG8gYmUgdXNlZCBmb3IgYmFjayBuYXZpZ2F0aW9uCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00OTY3MgorCisg
ICAgICAgIFRlc3Q6IGh0dHAvdGVzdHMvY2FjaGUvaGlzdG9yeS1vbmx5LWNhY2hlZC1zdWJyZXNv
dXJjZS1sb2Fkcy5odG1sCisKKyAgICAgICAgSFRUUCBhbGxvd3MgIkNhY2hlLUNvbnRyb2w6IG5v
LXN0b3JlIiByZXNvdXJjZXMgdG8gImNhY2hlZCIgZm9yIHRoZQorICAgICAgICBwdXJwb3NlcyBv
ZiBoaXN0b3J5LCBzdWNoIGFzIGJhY2svZm9yd2FyZCBuYXZpZ2F0aW9uLiBQcmV2aW91c2x5Cisg
ICAgICAgIFdlYkNvcmUganVzdCBpbW1lZGlhdGVseSBldmljdGVkIHRoZXNlIHJlc291cmNlcywg
bm93IHdlIGp1c3QgbWFyaworICAgICAgICB0aGVtIGFzIGhpc3Rvcnkgb25seS4gVGhpcyBhbGxv
d3MgdXMgdG8gdXNlIHRoZW0gaWYgdGhleSBhcmUgdXNlZAorICAgICAgICBpbiBhIGJhY2sgbmF2
aWdhdGlvbiwgb3IgbGF6aWx5IGV2aWN0IGFuZCByZXBsYWNlIHRoZW0gb24gb3RoZXIKKyAgICAg
ICAgbG9hZCB0eXBlcyBleHBlY3Rpbmcgbm9uLXN0YWxlIHJlc291cmNlcy4KKworICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRSZXNvdXJjZTo6Q2FjaGVkUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVz
b3VyY2U6OnJlbW92ZUNsaWVudCk6IGluc3RlYWQgb2YgaW1tZWRpYXRlbHkgcmVtb3ZpbmcgdGhl
IHJlc291cmNlIGZyb20gdGhlIGNhY2hlLCBtYXJrIGl0IGFzIGhpc3Rvcnkgb25seS4KKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlZFJlc291cmNlOjppc0hpc3RvcnlPbmx5KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJl
c291cmNlOjpzZXRIaXN0b3J5T25seSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVy
OjpyZXF1ZXN0UmVzb3VyY2UpOiBhbGxvdyBzdGFsZSwgaGlzdG9yeSBvbmx5IHJlc291cmNlcywg
aWYgdGhlIENhY2hlUG9saWN5IGlzIENhY2hlUG9saWN5QWxsb3dTdGFsZSAoYmFjay9mb3J3YXJk
IG5hdmlnYXRpb24pLgorICAgICAgICAqIGxvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpNZW1vcnlDYWNoZTo6cmVxdWVzdFJlc291cmNlKTogbGF6aWx5IHJl
bW92ZSBoaXN0b3J5IG9ubHkgcmVzb3VyY2VzIGlmIGl0IGlzIHJlcXVlc3RlZCBmb3IgYSBsb2Fk
IHR5cGUgZXhwZWN0aW5nIG5vbi1zdGFsZSByZXNvdXJjZXMuCisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL01lbW9yeUNhY2hlLmg6IGRlZmF1bHQgdGhlIGFsbG93U3RhbGUgcGFyYW1ldGVyIHRvIGZh
bHNlLgorCiAyMDEwLTExLTE2ICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IFl1cnkgU2VtaWtoYXRza3kuCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAgYi9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKaW5kZXggYzQ0MGVjOS4uZmRkNGVkMCAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCisrKyBiL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcApAQCAtNjksNiArNjksNyBAQCBDYWNoZWRS
ZXNvdXJjZTo6Q2FjaGVkUmVzb3VyY2UoY29uc3QgU3RyaW5nJiB1cmwsIFR5cGUgdHlwZSkKICAg
ICAsIG1fZXJyb3JPY2N1cnJlZChmYWxzZSkKICAgICAsIG1faW5DYWNoZShmYWxzZSkKICAgICAs
IG1fbG9hZGluZyhmYWxzZSkKKyAgICAsIG1faGlzdG9yeU9ubHkoZmFsc2UpCiAgICAgLCBtX3R5
cGUodHlwZSkKICAgICAsIG1fc3RhdHVzKFBlbmRpbmcpCiAjaWZuZGVmIE5ERUJVRwpAQCAtMjUz
LDggKzI1NCw5IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OnJlbW92ZUNsaWVudChDYWNoZWRSZXNv
dXJjZUNsaWVudCogY2xpZW50KQogICAgICAgICBhbGxDbGllbnRzUmVtb3ZlZCgpOwogICAgICAg
ICBpZiAocmVzcG9uc2UoKS5jYWNoZUNvbnRyb2xDb250YWluc05vU3RvcmUoKSkgewogICAgICAg
ICAgICAgLy8gUkZDMjYxNiAxNC45LjI6Ci0gICAgICAgICAgICAvLyAibm8tc3RvcmU6IC4uLk1V
U1QgbWFrZSBhIGJlc3QtZWZmb3J0IGF0dGVtcHQgdG8gcmVtb3ZlIHRoZSBpbmZvcm1hdGlvbiBm
cm9tIHZvbGF0aWxlIHN0b3JhZ2UgYXMgcHJvbXB0bHkgYXMgcG9zc2libGUiCi0gICAgICAgICAg
ICBjYWNoZSgpLT5yZW1vdmUodGhpcyk7CisgICAgICAgICAgICAvLyAibm8tc3RvcmU6IC4uLiBN
VVNUIG1ha2UgYSBiZXN0LWVmZm9ydCBhdHRlbXB0IHRvIHJlbW92ZSB0aGUgaW5mb3JtYXRpb24g
ZnJvbSB2b2xhdGlsZSBzdG9yYWdlIGFzIHByb21wdGx5IGFzIHBvc3NpYmxlIgorICAgICAgICAg
ICAgLy8gIi4uLiBIaXN0b3J5IGJ1ZmZlcnMgTUFZIHN0b3JlIHN1Y2ggcmVzcG9uc2VzIGFzIHBh
cnQgb2YgdGhlaXIgbm9ybWFsIG9wZXJhdGlvbi4iCisgICAgICAgICAgICBzZXRIaXN0b3J5T25s
eSh0cnVlKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBjYWNoZSgpLT5wcnVuZSgpOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgg
Yi9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCmluZGV4IGJhMDI0NTkuLjA2
Y2YzNTUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgK
KysrIGIvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaApAQCAtMTIwLDYgKzEy
MCw5IEBAIHB1YmxpYzoKICAgICBib29sIGlzTG9hZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fbG9h
ZGluZzsgfQogICAgIHZvaWQgc2V0TG9hZGluZyhib29sIGIpIHsgbV9sb2FkaW5nID0gYjsgfQog
CisgICAgYm9vbCBpc0hpc3RvcnlPbmx5KCkgY29uc3QgeyByZXR1cm4gbV9oaXN0b3J5T25seTsg
fQorICAgIHZvaWQgc2V0SGlzdG9yeU9ubHkoYm9vbCBiKSB7IG1faGlzdG9yeU9ubHkgPSBiOyB9
CisKICAgICB2aXJ0dWFsIGJvb2wgaXNJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAg
ICAgYm9vbCBpc1ByZWZldGNoKCkgY29uc3QKICAgICB7CkBAIC0yNTQsNiArMjU3LDcgQEAgcHJp
dmF0ZToKICAgICBib29sIG1fZXJyb3JPY2N1cnJlZCA6IDE7CiAgICAgYm9vbCBtX2luQ2FjaGUg
OiAxOwogICAgIGJvb2wgbV9sb2FkaW5nIDogMTsKKyAgICBib29sIG1faGlzdG9yeU9ubHkgOiAx
OwogCiAgICAgdW5zaWduZWQgbV90eXBlIDogMzsgLy8gVHlwZQogICAgIHVuc2lnbmVkIG1fc3Rh
dHVzIDogMjsgLy8gU3RhdHVzCmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZUxvYWRlci5jcHAgYi9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZUxvYWRlci5jcHAKaW5kZXggM2Q0MjQ0Yy4uMjQ4ZGMyMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcApAQCAtMjYzLDcgKzI2Myw4IEBAIENhY2hl
ZFJlc291cmNlKiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFJlc291cmNlKENhY2hlZFJl
c291cmNlOjpUeXBlIHR5cGUsCiAKICAgICBjaGVja0ZvclJlbG9hZChmdWxsVVJMKTsKIAotICAg
IENhY2hlZFJlc291cmNlKiByZXNvdXJjZSA9IGNhY2hlKCktPnJlcXVlc3RSZXNvdXJjZSh0aGlz
LCB0eXBlLCBmdWxsVVJMLCBjaGFyc2V0LCBpc1ByZWxvYWQpOworICAgIGJvb2wgYWxsb3dTdGFs
ZVJlc291cmNlcyA9IGNhY2hlUG9saWN5KCkgPT0gQ2FjaGVQb2xpY3lBbGxvd1N0YWxlOworICAg
IENhY2hlZFJlc291cmNlKiByZXNvdXJjZSA9IGNhY2hlKCktPnJlcXVlc3RSZXNvdXJjZSh0aGlz
LCB0eXBlLCBmdWxsVVJMLCBjaGFyc2V0LCBpc1ByZWxvYWQsIGFsbG93U3RhbGVSZXNvdXJjZXMp
OwogICAgIGlmIChyZXNvdXJjZSkgewogICAgICAgICAvLyBDaGVjayBmaW5hbCBVUkwgb2YgcmVz
b3VyY2UgdG8gY2F0Y2ggcmVkaXJlY3RzLgogICAgICAgICAvLyBTZWUgPGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTk2Mz4uCmRpZmYgLS1naXQgYS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAgYi9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlD
YWNoZS5jcHAKaW5kZXggMjVhZjc3NC4uNTliY2EwZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwCisrKyBiL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9y
eUNhY2hlLmNwcApAQCAtOTQsOSArOTQsOSBAQCBzdGF0aWMgQ2FjaGVkUmVzb3VyY2UqIGNyZWF0
ZVJlc291cmNlKENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUsIGNvbnN0IEtVUkwmIHVybAogICAg
IHJldHVybiAwOwogfQogCi1DYWNoZWRSZXNvdXJjZSogTWVtb3J5Q2FjaGU6OnJlcXVlc3RSZXNv
dXJjZShDYWNoZWRSZXNvdXJjZUxvYWRlciogY2FjaGVkUmVzb3VyY2VMb2FkZXIsIENhY2hlZFJl
c291cmNlOjpUeXBlIHR5cGUsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjaGFyc2V0
LCBib29sIHJlcXVlc3RJc1ByZWxvYWQpCitDYWNoZWRSZXNvdXJjZSogTWVtb3J5Q2FjaGU6OnJl
cXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZUxvYWRlciogY2FjaGVkUmVzb3VyY2VMb2FkZXIs
IENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5n
JiBjaGFyc2V0LCBib29sIHJlcXVlc3RJc1ByZWxvYWQsIGJvb2wgYWxsb3dTdGFsZSkKIHsKLSAg
ICBMT0coUmVzb3VyY2VMb2FkaW5nLCAiTWVtb3J5Q2FjaGU6OnJlcXVlc3RSZXNvdXJjZSAnJXMn
LCBjaGFyc2V0ICclcycsIHByZWxvYWQ9JXUiLCB1cmwuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgp
LCBjaGFyc2V0LmxhdGluMSgpLmRhdGEoKSwgcmVxdWVzdElzUHJlbG9hZCk7CisgICAgTE9HKFJl
c291cmNlTG9hZGluZywgIk1lbW9yeUNhY2hlOjpyZXF1ZXN0UmVzb3VyY2UgJyVzJywgY2hhcnNl
dCAnJXMnLCBwcmVsb2FkPSV1LCBhbGxvd1N0YWxlPSV1IiwgdXJsLnN0cmluZygpLmxhdGluMSgp
LmRhdGEoKSwgY2hhcnNldC5sYXRpbjEoKS5kYXRhKCksIHJlcXVlc3RJc1ByZWxvYWQsIGFsbG93
U3RhbGUpOwogCiAgICAgLy8gRklYTUU6IERvIHdlIHJlYWxseSBuZWVkIHRvIHNwZWNpYWwtY2Fz
ZSBhbiBlbXB0eSBVUkw/CiAgICAgLy8gV291bGQgaXQgYmUgYmV0dGVyIHRvIGp1c3QgZ28gb24g
d2l0aCB0aGUgY2FjaGUgY29kZSBhbmQgbGV0IGl0IGZhaWwgbGF0ZXI/CkBAIC0xMDYsNiArMTA2
LDEyIEBAIENhY2hlZFJlc291cmNlKiBNZW1vcnlDYWNoZTo6cmVxdWVzdFJlc291cmNlKENhY2hl
ZFJlc291cmNlTG9hZGVyKiBjYWNoZWRSZXNvdXJjCiAgICAgLy8gTG9vayB1cCB0aGUgcmVzb3Vy
Y2UgaW4gb3VyIG1hcC4KICAgICBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UgPSByZXNvdXJjZUZv
clVSTCh1cmwuc3RyaW5nKCkpOwogCisgICAgaWYgKCFhbGxvd1N0YWxlICYmIHJlc291cmNlICYm
IHJlc291cmNlLT5pc0hpc3RvcnlPbmx5KCkpIHsKKyAgICAgICAgTE9HKFJlc291cmNlTG9hZGlu
ZywgIk1lbW9yeUNhY2hlOjpyZXF1ZXN0UmVzb3VyY2UgY2xlYXJlZCBhIGhpc3Rvcnkgb25seSBy
ZXNvdXJjZSBkdWUgdG8gYSBub24tc3RhbGUgcmVxdWVzdCBmb3IgdGhlIHJlc291cmNlIik7Cisg
ICAgICAgIHJlbW92ZShyZXNvdXJjZSk7CisgICAgICAgIHJlc291cmNlID0gMDsKKyAgICB9CisK
ICAgICBpZiAocmVzb3VyY2UgJiYgcmVxdWVzdElzUHJlbG9hZCAmJiAhcmVzb3VyY2UtPmlzUHJl
bG9hZGVkKCkpIHsKICAgICAgICAgTE9HKFJlc291cmNlTG9hZGluZywgIk1lbW9yeUNhY2hlOjpy
ZXF1ZXN0UmVzb3VyY2UgYWxyZWFkeSBoYXMgYSBwcmVsb2FkIHJlcXVlc3QgZm9yIHRoaXMgcmVx
dWVzdCwgYW5kIGl0IGhhc24ndCBiZWVuIHByZWxvYWRlZCB5ZXQiKTsKICAgICAgICAgcmV0dXJu
IDA7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oIGIvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuaAppbmRleCBiZjBmMzJjLi4wMmE3YzkxIDEw
MDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oCisrKyBiL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmgKQEAgLTEwOSw3ICsxMDksNyBAQCBwdWJsaWM6
CiAKICAgICAvLyBSZXF1ZXN0IHJlc291cmNlcyBmcm9tIHRoZSBjYWNoZS4gIEEgbG9hZCB3aWxs
IGJlIGluaXRpYXRlZCBhbmQgYSBjYWNoZSBvYmplY3QgY3JlYXRlZCBpZiB0aGUgb2JqZWN0IGlz
IG5vdAogICAgIC8vIGZvdW5kIGluIHRoZSBjYWNoZS4KLSAgICBDYWNoZWRSZXNvdXJjZSogcmVx
dWVzdFJlc291cmNlKENhY2hlZFJlc291cmNlTG9hZGVyKiwgQ2FjaGVkUmVzb3VyY2U6OlR5cGUs
IGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjaGFyc2V0LCBib29sIGlzUHJlbG9hZCA9
IGZhbHNlKTsKKyAgICBDYWNoZWRSZXNvdXJjZSogcmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291
cmNlTG9hZGVyKiwgQ2FjaGVkUmVzb3VyY2U6OlR5cGUsIGNvbnN0IEtVUkwmIHVybCwgY29uc3Qg
U3RyaW5nJiBjaGFyc2V0LCBib29sIGlzUHJlbG9hZCA9IGZhbHNlLCBib29sIGFsbG93U3RhbGUg
PSBmYWxzZSk7CiAKICAgICBDYWNoZWRDU1NTdHlsZVNoZWV0KiByZXF1ZXN0VXNlckNTU1N0eWxl
U2hlZXQoQ2FjaGVkUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3Ry
aW5nJiBjaGFyc2V0KTsKICAgICAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>74193</attachid>
            <date>2010-11-17 19:01:00 -0800</date>
            <delta_ts>2010-11-17 22:14:27 -0800</delta_ts>
            <desc>[PATCH] Do No Mark &quot;https&quot; Resources as Allowed For History</desc>
            <filename>take-3.patch</filename>
            <type>text/plain</type>
            <size>17523</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA1N2MzYzBkLi5iNDYyZDI4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTAtMTEt
MTcgIEpvc2VwaCBQZWNvcmFybyAgPGpvZXBlY2tAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBBbGxvdyBuby1zdG9yZSByZXNvdXJjZXMg
dG8gYmUgdXNlZCBmb3IgYmFjayBuYXZpZ2F0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD00OTY3MgorCisgICAgICAgIEFkZCB0ZXN0cyBmb3IgY2hl
Y2tpbmcgaWYgdGhlIGNhY2hlIHdhcyB1c2VkIGZvciBhICJDYWNoZS1jb250cm9sOiBuby1zdG9y
ZSIKKyAgICAgICAgcmVzb3VyY2UgaW4gYmFjayBuYXZpZ2F0aW9uLCByZWxvYWQgbmF2aWdhdGlv
biwgYW5kIG5vcm1hbCBuYXZpZ2F0aW9uLgorCisgICAgICAgICogaHR0cC90ZXN0cy9jYWNoZS9o
aXN0b3J5LW9ubHktY2FjaGVkLXN1YnJlc291cmNlLWxvYWRzLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogaHR0cC90ZXN0cy9jYWNoZS9oaXN0b3J5LW9ubHktY2FjaGVkLXN1YnJlc291
cmNlLWxvYWRzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvY2FjaGUvcmVzb3Vy
Y2VzL25vLXN0b3JlLXJlc291cmNlLWZvcndhcmQuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0
cC90ZXN0cy9jYWNoZS9yZXNvdXJjZXMvbm8tc3RvcmUtcmVzb3VyY2UtbmV4dC5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2NhY2hlL3Jlc291cmNlcy9uby1zdG9yZS1yZXNvdXJj
ZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2NhY2hlL3Jlc291cmNlcy9yYW5k
b20uY2dpOiBBZGRlZC4KKwogMjAxMC0xMS0xNyAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5j
b20+CiAKICAgICAgICAgQ3JlYXRlIExlb3BhcmQtc3BlY2lmaWMgcmVzdWx0cyBmb3IgdGVzdHMg
dGhhdCBkaWZmZXIgYmV0d2VlbiBMZW9wYXJkCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2NhY2hlL2hpc3Rvcnktb25seS1jYWNoZWQtc3VicmVzb3VyY2UtbG9hZHMtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS9oaXN0b3J5LW9ubHktY2FjaGVk
LXN1YnJlc291cmNlLWxvYWRzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi4xMTI1ZWZmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9jYWNoZS9oaXN0b3J5LW9ubHktY2FjaGVkLXN1YnJlc291cmNlLWxvYWRzLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDggQEAKK1RoaXMgdGVzdCBjaGVja3MgdGhhdCBsb2FkaW5nIGEgc3Vi
cmVzb3VyY2Ugd2l0aCAiQ2FjaGUtQ29udHJvbDogbm8tc3RvcmUiIGlzIGNhY2hlZCBhbmQgcmV1
c2VkIGluIGJhY2sgbmF2aWdhdGlvbiB3aGVuIHRoZSBwYWdlIGlzIG5vdCBpbiB0aGUgcGFnZSBj
YWNoZS4KKworV2UgdGhlbiB0ZXN0IHRoYXQgbG9hZGluZyB0aGUgc2FtZSBzdWJyZXNvdXJjZSBp
cyByZWZldGNoZWQgd2hlbiB1c2VkIGluIG5vbi1zdGFsZSBsb2FkcyBzdWNoIGFzIHJlZnJlc2hl
cyBvciBub3JtYWwgbmF2aWdhdGlvbi4KKworUEFTUyAtIG5vLXN0b3JlIHN1YnJlc291cmNlIHdh
cyBjYWNoZWQgYW5kIHVzZWQgZm9yIGEgYmFjayBuYXZpZ2F0aW9uCitQQVNTIC0gbm8tc3RvcmUg
c3VicmVzb3VyY2Ugd2FzIHJlZmV0Y2hlZCB3aXRoIGEgcmVsb2FkCitQQVNTIC0gbm8tc3RvcmUg
c3VicmVzb3VyY2Ugd2FzIHJlZmV0Y2hlZCB3aXRoIGEgbm9ybWFsIG5hdmlnYXRpb24KKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS9oaXN0b3J5LW9ubHktY2FjaGVk
LXN1YnJlc291cmNlLWxvYWRzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlL2hp
c3Rvcnktb25seS1jYWNoZWQtc3VicmVzb3VyY2UtbG9hZHMuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi4xYWQwM2MwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9jYWNoZS9oaXN0b3J5LW9ubHktY2FjaGVkLXN1YnJlc291cmNlLWxvYWRz
Lmh0bWwKQEAgLTAsMCArMSw4OSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
ICAgIDx0aXRsZT5UZXN0IENhY2hpbmcgIm5vLXN0b3JlIiBGb3IgSGlzdG9yeSBPbmx5PC90aXRs
ZT4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxwPgorICAgICAgICBUaGlzIHRlc3QgY2hlY2tzIHRo
YXQgbG9hZGluZyBhIHN1YnJlc291cmNlIHdpdGggIkNhY2hlLUNvbnRyb2w6IG5vLXN0b3JlIiBp
cworICAgICAgICBjYWNoZWQgYW5kIHJldXNlZCBpbiBiYWNrIG5hdmlnYXRpb24gd2hlbiB0aGUg
cGFnZSBpcyBub3QgaW4gdGhlIHBhZ2UgY2FjaGUuCisgICAgPC9wPgorICAgIDxwPgorICAgICAg
ICBXZSB0aGVuIHRlc3QgdGhhdCBsb2FkaW5nIHRoZSBzYW1lIHN1YnJlc291cmNlIGlzIHJlZmV0
Y2hlZCB3aGVuIHVzZWQgaW4KKyAgICAgICAgbm9uLXN0YWxlIGxvYWRzIHN1Y2ggYXMgcmVmcmVz
aGVzIG9yIG5vcm1hbCBuYXZpZ2F0aW9uLgorICAgIDwvcD4KKyAgICA8cHJlIGlkPSJjb25zb2xl
Ij48L3ByZT4KKyAgICA8c2NyaXB0PgorICAgIC8vIEFzeW5jaHJvbm91cyB0ZXN0IGJlY2F1c2Ug
dGhpcyByZXF1aXJlcyBhIG5ldyB3aW5kb3cgdG8gcGVyZm9ybSBtdWx0aXBsZSBuYXZpZ2F0aW9u
cy4KKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgIHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgIHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgICAgIHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlci5zZXRDYW5PcGVuV2luZG93cygpOworICAgIH0KKworICAgIC8vIFZhbHVl
cyB0byBjaGVjay4KKyAgICB2YXIgb3JpZ2luYWxSYW5kb21OdW1iZXIgPSAwOworICAgIHZhciBi
YWNrTG9hZFJhbmRvbU51bWJlciA9IDA7CisgICAgdmFyIHJlZnJlc2hSYW5kb21OdW1iZXIgID0g
MDsKKyAgICB2YXIgbmV4dExvYWRSYW5kb21OdW1iZXIgPSAwOworCisgICAgLy8gV2luZG93IHdl
IHdpbGwgYmUgY29udHJvbGxpbmcuCisgICAgdmFyIHRhcmdldDsKKworICAgIC8vIFBhc3MgbWVz
c2FnZXMgYmV0d2VlbiB3aW5kb3dzIHRvIGNvbnRyb2wgdGhlIG5hdmlnYXRpb24gdHlwZXMuCisg
ICAgdmFyIHByZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJyk7CisgICAgd2lu
ZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBmdW5jdGlvbihldmVudCkgeworCisgICAg
ICAgIC8vIEZpcnN0IHRpbWUsIHJlY29yZCB0aGUgZmlyc3QgbnVtYmVyLCBhbmQgdGVsbCB0aGUg
dGFyZ2V0IHdpbmRvdyB0byB0cmlnZ2VyIGEgYmFjayBuYXZpZ2F0aW9uLgorICAgICAgICBpZiAo
IW9yaWdpbmFsUmFuZG9tTnVtYmVyKSB7CisgICAgICAgICAgICBvcmlnaW5hbFJhbmRvbU51bWJl
ciA9IGV2ZW50LmRhdGE7CisgICAgICAgICAgICB0YXJnZXQucG9zdE1lc3NhZ2UoJ2dvLWZvcndh
cmQtYW5kLWJhY2snLCAnKicpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAg
ICAgICAgLy8gU2Vjb25kIHRpbWUsIHJlY29yZCB0aGUgc2Vjb25kIG51bWJlci4gSXQgc2hvdWxk
IGJlIGlkZW50aWNhbC4gQWxzbyB0ZWxsIHRoZSB0YXJnZXQgd2luZG93IHRvIHJlbG9hZC4KKyAg
ICAgICAgaWYgKCFiYWNrTG9hZFJhbmRvbU51bWJlcikgeworICAgICAgICAgICAgYmFja0xvYWRS
YW5kb21OdW1iZXIgPSBldmVudC5kYXRhOworICAgICAgICAgICAgdmFyIHdhc0NhY2hlZCA9IChi
YWNrTG9hZFJhbmRvbU51bWJlciA9PT0gb3JpZ2luYWxSYW5kb21OdW1iZXIpOworICAgICAgICAg
ICAgaWYgKHdhc0NhY2hlZCkKKyAgICAgICAgICAgICAgICBwcmUuYXBwZW5kQ2hpbGQoZG9jdW1l
bnQuY3JlYXRlVGV4dE5vZGUoJ1BBU1MgLSBuby1zdG9yZSBzdWJyZXNvdXJjZSB3YXMgY2FjaGVk
IGFuZCB1c2VkIGZvciBhIGJhY2sgbmF2aWdhdGlvblxuJykpOworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIHByZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgn
RkFJTCAtIG5vLXN0b3JlIHN1YnJlc291cmNlIHNob3VsZCBoYXZlIGJlZW4gY2FjaGVkIGFuZCB1
c2VkIGluIGEgYmFjayBuYXZpZ2F0aW9uXG4nKSk7CisgICAgICAgICAgICB0YXJnZXQucG9zdE1l
c3NhZ2UoJ3JlbG9hZCcsICcqJyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwor
ICAgICAgICAvLyBUaGlyZCB0aW1lLCByZWNvcmQgdGhlIHRoaXJkIG51bWJlci4gSXQgc2hvdWxk
IG5vdCBtYXRjaC4gQWxzbyB0ZWxsIHRoZSB0YXJnZXQgd2luZG93IHRvIG5hdmlnYXRlIGZvcndh
cmQuCisgICAgICAgIGlmICghcmVmcmVzaFJhbmRvbU51bWJlcikgeworICAgICAgICAgICAgcmVm
cmVzaFJhbmRvbU51bWJlciA9IGV2ZW50LmRhdGE7CisgICAgICAgICAgICB2YXIgd2FzQ2FjaGVk
ID0gKHJlZnJlc2hSYW5kb21OdW1iZXIgPT09IG9yaWdpbmFsUmFuZG9tTnVtYmVyKTsKKyAgICAg
ICAgICAgIGlmICh3YXNDYWNoZWQpCisgICAgICAgICAgICAgICAgcHJlLmFwcGVuZENoaWxkKGRv
Y3VtZW50LmNyZWF0ZVRleHROb2RlKCdGQUlMIC0gbm8tc3RvcmUgc3VicmVzb3VyY2Ugc2hvdWxk
IGhhdmUgYmVlbiByZWZldGNoZWQgd2l0aCBhIHJlbG9hZFxuJykpOworICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgIHByZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9k
ZSgnUEFTUyAtIG5vLXN0b3JlIHN1YnJlc291cmNlIHdhcyByZWZldGNoZWQgd2l0aCBhIHJlbG9h
ZFxuJykpOworICAgICAgICAgICAgdGFyZ2V0LnBvc3RNZXNzYWdlKCduZXh0JywgJyonKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEZvdXJ0aCB0aW1lLCBy
ZWNvcmQgdGhlIGZvdXJ0aCBudW1iZXIuIEl0IHNob3VsZCBub3QgbWF0Y2ggYW55IG51bWJlcnMg
c28gZmFyLgorICAgICAgICBpZiAoIW5leHRMb2FkUmFuZG9tTnVtYmVyKSB7CisgICAgICAgICAg
ICBuZXh0TG9hZFJhbmRvbU51bWJlciA9IGV2ZW50LmRhdGE7CisgICAgICAgICAgICB2YXIgd2Fz
Q2FjaGVkID0gKG5leHRMb2FkUmFuZG9tTnVtYmVyID09PSBvcmlnaW5hbFJhbmRvbU51bWJlciB8
fCBuZXh0TG9hZFJhbmRvbU51bWJlciA9PT0gcmVmcmVzaFJhbmRvbU51bWJlcik7CisgICAgICAg
ICAgICBpZiAod2FzQ2FjaGVkKQorICAgICAgICAgICAgICAgIHByZS5hcHBlbmRDaGlsZChkb2N1
bWVudC5jcmVhdGVUZXh0Tm9kZSgnRkFJTCAtIG5vLXN0b3JlIHN1YnJlc291cmNlIHNob3VsZCBo
YXZlIGJlZW4gcmVmZXRjaGVkIHdpdGggYSBub3JtYWwgbmF2aWdhdGlvblxuJykpOworICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHByZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVh
dGVUZXh0Tm9kZSgnUEFTUyAtIG5vLXN0b3JlIHN1YnJlc291cmNlIHdhcyByZWZldGNoZWQgd2l0
aCBhIG5vcm1hbCBuYXZpZ2F0aW9uXG4nKSk7CisgICAgICAgIH0KKworICAgICAgICAvLyBUZXN0
IGNvbXBsZXRlZC4KKyAgICAgICAgdGFyZ2V0LmNsb3NlKCk7CisgICAgICAgIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIubm90aWZ5RG9uZSgpOworCisgICAgfSwgZmFsc2UpOworCisgICAgLy8gT3BlbiB0aGUg
dGFyZ2V0IHdpbmRvdyBhbmQgaXQgd2lsbCBiZWdpbiB0byBzZW5kIHVzIG1lc3NhZ2VzLgorICAg
IHRhcmdldCA9IHdpbmRvdy5vcGVuKCdyZXNvdXJjZXMvbm8tc3RvcmUtcmVzb3VyY2UuaHRtbCcp
OworICAgIDwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9jYWNoZS9yZXNvdXJjZXMvbm8tc3RvcmUtcmVzb3VyY2UtZm9yd2FyZC5o
dG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS9yZXNvdXJjZXMvbm8tc3RvcmUtcmVz
b3VyY2UtZm9yd2FyZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVi
MjhlNDMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlL3Jl
c291cmNlcy9uby1zdG9yZS1yZXNvdXJjZS1mb3J3YXJkLmh0bWwKQEAgLTAsMCArMSw0IEBACis8
cD5Ob3cgZ28gYmFjazwvcD4KKzxzY3JpcHQ+Cit3aW5kb3cuaGlzdG9yeS5iYWNrKCk7Cis8L3Nj
cmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUvcmVzb3VyY2Vz
L25vLXN0b3JlLXJlc291cmNlLW5leHQuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY2Fj
aGUvcmVzb3VyY2VzL25vLXN0b3JlLXJlc291cmNlLW5leHQuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi5iZGU4Y2RmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9jYWNoZS9yZXNvdXJjZXMvbm8tc3RvcmUtcmVzb3VyY2UtbmV4dC5odG1s
CkBAIC0wLDAgKzEsNyBAQAorPGgxPjwvaDE+Cis8c2NyaXB0IHNyYz0icmFuZG9tLmNnaSI+PC9z
Y3JpcHQ+Cis8c2NyaXB0PgorLy8gUmFuZG9tLmNnaSB3aWxsIGluY2x1ZGUgYSBnbG9iYWwgInJh
bmRvbU51bWJlciIuCisvLyBTZW5kIHRoaXMgYmFjayB0byBvdXIgb3BlbmVyLgorb3BlbmVyLnBv
c3RNZXNzYWdlKHJhbmRvbU51bWJlciwgJyonKTsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS9yZXNvdXJjZXMvbm8tc3RvcmUtcmVzb3VyY2UuaHRt
bCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUvcmVzb3VyY2VzL25vLXN0b3JlLXJlc291
cmNlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzRiYTU1MAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUvcmVzb3VyY2VzL25v
LXN0b3JlLXJlc291cmNlLmh0bWwKQEAgLTAsMCArMSwzMCBAQAorPGgxPjwvaDE+Cis8c2NyaXB0
IHNyYz0icmFuZG9tLmNnaSI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorLy8gUmFuZG9tLmNnaSB3aWxs
IGluY2x1ZGUgYSBnbG9iYWwgInJhbmRvbU51bWJlciIuCisvLyBBbHdheXMgc2VuZCB0aGlzIGJh
Y2sgdG8gb3VyIG9wZW5lci4KK29wZW5lci5wb3N0TWVzc2FnZShyYW5kb21OdW1iZXIsICcqJyk7
CisKKy8vIE91ciBvcGVuZXIgd2lsbCB0ZWxsIHVzIHRvIHBlcmZvcm0gdmFyaW91cyBsb2Fkcy4K
K3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgZnVuY3Rpb24oZXZlbnQpIHsKKwor
ICAgIC8vIEdvIGZvcndhcmQgYW5kIGJhY2suCisgICAgaWYgKGV2ZW50LmRhdGEgPT09ICdnby1m
b3J3YXJkLWFuZC1iYWNrJykgeworICAgICAgICB3aW5kb3cubG9jYXRpb24gPSAnbm8tc3RvcmUt
cmVzb3VyY2UtZm9yd2FyZC5odG1sJzsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8v
IFJlbG9hZC4KKyAgICBpZiAoZXZlbnQuZGF0YSA9PT0gJ3JlbG9hZCcpIHsKKyAgICAgICAgd2lu
ZG93LmxvY2F0aW9uLnJlbG9hZCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8g
Tm9ybWFsIG5hdmlnYXRpb24sIG5leHQuCisgICAgaWYgKGV2ZW50LmRhdGEgPT09ICduZXh0Jykg
eworICAgICAgICB3aW5kb3cubG9jYXRpb24gPSAnbm8tc3RvcmUtcmVzb3VyY2UtbmV4dC5odG1s
JzsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworfSwgZmFsc2UpOworPC9zY3JpcHQ+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlL3Jlc291cmNlcy9yYW5kb20uY2dp
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS9yZXNvdXJjZXMvcmFuZG9tLmNnaQpuZXcg
ZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi44ZjY2MjFjCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS9yZXNvdXJjZXMvcmFuZG9tLmNnaQpAQCAt
MCwwICsxLDkgQEAKKyMhL3Vzci9iaW4vcGVybCAtdworCitwcmludCAiQ29udGVudC10eXBlOiB0
ZXh0L2phdmFzY3JpcHRcbiI7CitwcmludCAiQ2FjaGUtY29udHJvbDogbm8tc3RvcmVcbiI7Citw
cmludCAiXG4iOworCitteSAkcmFuZG9tX251bWJlciA9IGludChyYW5kKDEwMDAwMDAwMDAwMDAp
KTsKK3ByaW50ICJyYW5kb21OdW1iZXIgPSAiIC4gJHJhbmRvbV9udW1iZXIgLiAiO1xuIjsKK3By
aW50ICJkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdoMScpLnRleHRDb250ZW50ID0gcmFuZG9tTnVt
YmVyOyI7CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9n
CmluZGV4IGQzZmNiMDYuLmU5OGJiMTIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzggQEAKKzIwMTAtMTEtMTcgIEpvc2Vw
aCBQZWNvcmFybyAgPGpvZXBlY2tAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBE
YXJpbiBBZGxlci4KKworICAgICAgICBBbGxvdyBuby1zdG9yZSByZXNvdXJjZXMgdG8gYmUgdXNl
ZCBmb3IgYmFjayBuYXZpZ2F0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD00OTY3MgorCisgICAgICAgIFRlc3Q6IGh0dHAvdGVzdHMvY2FjaGUvaGlz
dG9yeS1vbmx5LWNhY2hlZC1zdWJyZXNvdXJjZS1sb2Fkcy5odG1sCisKKyAgICAgICAgSFRUUCBh
bGxvd3MgIkNhY2hlLUNvbnRyb2w6IG5vLXN0b3JlIiByZXNvdXJjZXMgdG8gImNhY2hlZCIgZm9y
IHRoZQorICAgICAgICBwdXJwb3NlcyBvZiBoaXN0b3J5LCBzdWNoIGFzIGJhY2svZm9yd2FyZCBu
YXZpZ2F0aW9uLiBQcmV2aW91c2x5CisgICAgICAgIFdlYkNvcmUganVzdCBpbW1lZGlhdGVseSBl
dmljdGVkIHRoZXNlIHJlc291cmNlcywgbm93IHdlIG1hcmsKKyAgICAgICAgdGhlbSBmb3IgaGlz
dG9yeSBvbmx5IGFzIGxvbmcgYXMgdGhleSBhcmUgbm90IGh0dHBzLiBUaGlzIGFsbG93cworICAg
ICAgICB1cyB0byB1c2UgdGhlbSBpZiB0aGV5IGFyZSB1c2VkIGluIGEgYmFjayBuYXZpZ2F0aW9u
LCBvciBsYXppbHkgZXZpY3QKKyAgICAgICAgYW5kIHJlcGxhY2UgdGhlbSBvbiBvdGhlciBsb2Fk
IHR5cGVzIGV4cGVjdGluZyBub24tc3RhbGUgcmVzb3VyY2VzLgorCisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRSZXNvdXJjZTo6Q2FjaGVkUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkUmVzb3VyY2U6OnJlbW92ZUNsaWVudCk6IGluc3RlYWQgb2YgaW1tZWRpYXRlbHkgcmVtb3Zp
bmcgdGhlIHJlc291cmNlIGZyb20gdGhlIGNhY2hlLCBtYXJrIGl0IGFzIGhpc3Rvcnkgb25seS4K
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZFJlc291cmNlOjppc0Zvckhpc3RvcnlPbmx5KToKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZFJlc291cmNlOjpzZXRGb3JIaXN0b3J5T25seSk6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJl
c291cmNlTG9hZGVyOjpjaGVja0ZvclJlbG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRS
ZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFJlc291cmNlKTogYWxsb3cgaGlzdG9yeSBvbmx5IHJlc291
cmNlcyBpZiB0aGUgQ2FjaGVQb2xpY3kgaXMgQ2FjaGVQb2xpY3lIaXN0b3J5QnVmZmVyIChiYWNr
L2ZvcndhcmQgbmF2aWdhdGlvbikuCisgICAgICAgICogbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjpyZXF1ZXN0UmVzb3VyY2UpOiBs
YXppbHkgcmVtb3ZlIGhpc3Rvcnkgb25seSByZXNvdXJjZXMgaWYgaXQgaXMgcmVxdWVzdGVkIGZv
ciBhIGxvYWQgdHlwZSBleHBlY3Rpbmcgbm9uLXN0YWxlIHJlc291cmNlcy4KKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuaDogZGVmYXVsdCB0aGUgZm9ySGlzdG9yeSBwYXJhbWV0
ZXIgdG8gZmFsc2UuCisKKyAgICAgICAgICBSZW5hbWUgY2FjaGUgcG9saWN5IENhY2hlUG9saWN5
QWxsb3dTdGFsZSB0byBDYWNoZVBvbGljeUhpc3RvcnlCdWZmZXIuCisKKyAgICAgICAgKiBsb2Fk
ZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnN1YnJl
c291cmNlQ2FjaGVQb2xpY3kpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZVBvbGljeS5o
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHA6CisKIDIwMTAtMTEt
MTcgIERpbWl0cmkgR2xhemtvdiAgPGRnbGF6a292QGNocm9taXVtLm9yZz4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmNwcCBiL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAppbmRleCA1ODExM2My
Li43NjhjOGUzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysr
IGIvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC0yMzE5LDcgKzIzMTksNyBAQCBD
YWNoZVBvbGljeSBGcmFtZUxvYWRlcjo6c3VicmVzb3VyY2VDYWNoZVBvbGljeSgpIGNvbnN0CiAg
ICAgICAgIHJldHVybiBDYWNoZVBvbGljeVJldmFsaWRhdGU7CiAKICAgICBpZiAocmVxdWVzdC5j
YWNoZVBvbGljeSgpID09IFJldHVybkNhY2hlRGF0YUVsc2VMb2FkKQotICAgICAgICByZXR1cm4g
Q2FjaGVQb2xpY3lBbGxvd1N0YWxlOworICAgICAgICByZXR1cm4gQ2FjaGVQb2xpY3lIaXN0b3J5
QnVmZmVyOwogCiAgICAgcmV0dXJuIENhY2hlUG9saWN5VmVyaWZ5OwogfQpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVQb2xpY3kuaCBiL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlUG9saWN5LmgKaW5kZXggMjYzOWNhYS4uMGI5MDEwYiAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVQb2xpY3kuaAorKysgYi9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZVBvbGljeS5oCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgQ2FjaGVQb2xpY3lWZXJpZnksCiAgICAgICAgIENhY2hlUG9saWN5UmV2YWxpZGF0ZSwKICAg
ICAgICAgQ2FjaGVQb2xpY3lSZWxvYWQsCi0gICAgICAgIENhY2hlUG9saWN5QWxsb3dTdGFsZQor
ICAgICAgICBDYWNoZVBvbGljeUhpc3RvcnlCdWZmZXIKICAgICB9OwogCiB9CmRpZmYgLS1naXQg
YS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAgYi9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKaW5kZXggZDRlYWMyZS4uOGRlYTU4MCAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCisrKyBiL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcApAQCAtNjgsNiArNjgsNyBAQCBDYWNo
ZWRSZXNvdXJjZTo6Q2FjaGVkUmVzb3VyY2UoY29uc3QgU3RyaW5nJiB1cmwsIFR5cGUgdHlwZSkK
ICAgICAsIG1fc2VuZFJlc291cmNlTG9hZENhbGxiYWNrcyh0cnVlKQogICAgICwgbV9pbkNhY2hl
KGZhbHNlKQogICAgICwgbV9sb2FkaW5nKGZhbHNlKQorICAgICwgbV9pc0Zvckhpc3RvcnlPbmx5
KGZhbHNlKQogICAgICwgbV90eXBlKHR5cGUpCiAgICAgLCBtX3N0YXR1cyhQZW5kaW5nKQogI2lm
bmRlZiBOREVCVUcKQEAgLTI1Miw4ICsyNTMsMTMgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6cmVt
b3ZlQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50KiBjbGllbnQpCiAgICAgICAgIGFsbENsaWVu
dHNSZW1vdmVkKCk7CiAgICAgICAgIGlmIChyZXNwb25zZSgpLmNhY2hlQ29udHJvbENvbnRhaW5z
Tm9TdG9yZSgpKSB7CiAgICAgICAgICAgICAvLyBSRkMyNjE2IDE0LjkuMjoKLSAgICAgICAgICAg
IC8vICJuby1zdG9yZTogLi4uTVVTVCBtYWtlIGEgYmVzdC1lZmZvcnQgYXR0ZW1wdCB0byByZW1v
dmUgdGhlIGluZm9ybWF0aW9uIGZyb20gdm9sYXRpbGUgc3RvcmFnZSBhcyBwcm9tcHRseSBhcyBw
b3NzaWJsZSIKLSAgICAgICAgICAgIGNhY2hlKCktPnJlbW92ZSh0aGlzKTsKKyAgICAgICAgICAg
IC8vICJuby1zdG9yZTogLi4uIE1VU1QgbWFrZSBhIGJlc3QtZWZmb3J0IGF0dGVtcHQgdG8gcmVt
b3ZlIHRoZSBpbmZvcm1hdGlvbiBmcm9tIHZvbGF0aWxlIHN0b3JhZ2UgYXMgcHJvbXB0bHkgYXMg
cG9zc2libGUiCisgICAgICAgICAgICAvLyAiLi4uIEhpc3RvcnkgYnVmZmVycyBNQVkgc3RvcmUg
c3VjaCByZXNwb25zZXMgYXMgcGFydCBvZiB0aGVpciBub3JtYWwgb3BlcmF0aW9uLiIKKyAgICAg
ICAgICAgIC8vIFdlIGFsbG93IG5vbi1zZWN1cmUgY29udGVudCB0byBiZSByZXVzZWQgaW4gaGlz
dG9yeSwgYnV0IHdlIGRvIG5vdCBhbGxvdyBzZWN1cmUgY29udGVudCB0byBiZSByZXVzZWQuCisg
ICAgICAgICAgICBpZiAoS1VSTChQYXJzZWRVUkxTdHJpbmcsIHVybCgpKS5wcm90b2NvbElzKCJo
dHRwcyIpKQorICAgICAgICAgICAgICAgIGNhY2hlKCktPnJlbW92ZSh0aGlzKTsKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICBzZXRGb3JIaXN0b3J5T25seSh0cnVlKTsKICAgICAg
ICAgfSBlbHNlCiAgICAgICAgICAgICBjYWNoZSgpLT5wcnVuZSgpOwogICAgIH0KZGlmZiAtLWdp
dCBhL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmggYi9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCmluZGV4IGVkNjBmODQuLmU2N2EwMTUgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKKysrIGIvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaApAQCAtMTIyLDYgKzEyMiw5IEBAIHB1YmxpYzoK
ICAgICBib29sIGlzTG9hZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fbG9hZGluZzsgfQogICAgIHZv
aWQgc2V0TG9hZGluZyhib29sIGIpIHsgbV9sb2FkaW5nID0gYjsgfQogCisgICAgYm9vbCBpc0Zv
ckhpc3RvcnlPbmx5KCkgY29uc3QgeyByZXR1cm4gbV9pc0Zvckhpc3RvcnlPbmx5OyB9CisgICAg
dm9pZCBzZXRGb3JIaXN0b3J5T25seShib29sIGIpIHsgbV9pc0Zvckhpc3RvcnlPbmx5ID0gYjsg
fQorCiAgICAgdmlydHVhbCBib29sIGlzSW1hZ2UoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQog
ICAgIGJvb2wgaXNQcmVmZXRjaCgpIGNvbnN0CiAgICAgewpAQCAtMjU0LDYgKzI1Nyw3IEBAIHBy
aXZhdGU6CiAKICAgICBib29sIG1faW5DYWNoZSA6IDE7CiAgICAgYm9vbCBtX2xvYWRpbmcgOiAx
OworICAgIGJvb2wgbV9pc0Zvckhpc3RvcnlPbmx5IDogMTsKIAogICAgIHVuc2lnbmVkIG1fdHlw
ZSA6IDM7IC8vIFR5cGUKICAgICB1bnNpZ25lZCBtX3N0YXR1cyA6IDM7IC8vIFN0YXR1cwpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwIGIv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDNkNDI0
NGMuLjE1YzVmMDMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlTG9hZGVyLmNwcAorKysgYi9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxv
YWRlci5jcHAKQEAgLTExMyw3ICsxMTMsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlTG9hZGVyOjpj
aGVja0ZvclJlbG9hZChjb25zdCBLVVJMJiBmdWxsVVJMKQogICAgIGNhc2UgQ2FjaGVQb2xpY3lS
ZXZhbGlkYXRlOgogICAgICAgICBjYWNoZSgpLT5yZXZhbGlkYXRlUmVzb3VyY2UoZXhpc3Rpbmcs
IHRoaXMpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIENhY2hlUG9saWN5QWxsb3dTdGFsZToK
KyAgICBjYXNlIENhY2hlUG9saWN5SGlzdG9yeUJ1ZmZlcjoKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIApAQCAtMjYzLDcgKzI2Myw4IEBAIENhY2hlZFJlc291cmNlKiBDYWNoZWRSZXNvdXJjZUxv
YWRlcjo6cmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUsCiAKICAgICBj
aGVja0ZvclJlbG9hZChmdWxsVVJMKTsKIAotICAgIENhY2hlZFJlc291cmNlKiByZXNvdXJjZSA9
IGNhY2hlKCktPnJlcXVlc3RSZXNvdXJjZSh0aGlzLCB0eXBlLCBmdWxsVVJMLCBjaGFyc2V0LCBp
c1ByZWxvYWQpOworICAgIGJvb2wgYWxsb3dGb3JIaXN0b3J5T25seVJlc291cmNlcyA9IGNhY2hl
UG9saWN5KCkgPT0gQ2FjaGVQb2xpY3lIaXN0b3J5QnVmZmVyOworICAgIENhY2hlZFJlc291cmNl
KiByZXNvdXJjZSA9IGNhY2hlKCktPnJlcXVlc3RSZXNvdXJjZSh0aGlzLCB0eXBlLCBmdWxsVVJM
LCBjaGFyc2V0LCBpc1ByZWxvYWQsIGFsbG93Rm9ySGlzdG9yeU9ubHlSZXNvdXJjZXMpOwogICAg
IGlmIChyZXNvdXJjZSkgewogICAgICAgICAvLyBDaGVjayBmaW5hbCBVUkwgb2YgcmVzb3VyY2Ug
dG8gY2F0Y2ggcmVkaXJlY3RzLgogICAgICAgICAvLyBTZWUgPGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTk2Mz4uCmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9NZW1vcnlDYWNoZS5jcHAgYi9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5j
cHAKaW5kZXggMjVhZjc3NC4uMWZmNGY1ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvTWVtb3J5Q2FjaGUuY3BwCisrKyBiL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hl
LmNwcApAQCAtOTQsOSArOTQsOSBAQCBzdGF0aWMgQ2FjaGVkUmVzb3VyY2UqIGNyZWF0ZVJlc291
cmNlKENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUsIGNvbnN0IEtVUkwmIHVybAogICAgIHJldHVy
biAwOwogfQogCi1DYWNoZWRSZXNvdXJjZSogTWVtb3J5Q2FjaGU6OnJlcXVlc3RSZXNvdXJjZShD
YWNoZWRSZXNvdXJjZUxvYWRlciogY2FjaGVkUmVzb3VyY2VMb2FkZXIsIENhY2hlZFJlc291cmNl
OjpUeXBlIHR5cGUsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjaGFyc2V0LCBib29s
IHJlcXVlc3RJc1ByZWxvYWQpCitDYWNoZWRSZXNvdXJjZSogTWVtb3J5Q2FjaGU6OnJlcXVlc3RS
ZXNvdXJjZShDYWNoZWRSZXNvdXJjZUxvYWRlciogY2FjaGVkUmVzb3VyY2VMb2FkZXIsIENhY2hl
ZFJlc291cmNlOjpUeXBlIHR5cGUsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjaGFy
c2V0LCBib29sIHJlcXVlc3RJc1ByZWxvYWQsIGJvb2wgZm9ySGlzdG9yeSkKIHsKLSAgICBMT0co
UmVzb3VyY2VMb2FkaW5nLCAiTWVtb3J5Q2FjaGU6OnJlcXVlc3RSZXNvdXJjZSAnJXMnLCBjaGFy
c2V0ICclcycsIHByZWxvYWQ9JXUiLCB1cmwuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpLCBjaGFy
c2V0LmxhdGluMSgpLmRhdGEoKSwgcmVxdWVzdElzUHJlbG9hZCk7CisgICAgTE9HKFJlc291cmNl
TG9hZGluZywgIk1lbW9yeUNhY2hlOjpyZXF1ZXN0UmVzb3VyY2UgJyVzJywgY2hhcnNldCAnJXMn
LCBwcmVsb2FkPSV1LCBmb3JIaXN0b3J5PSV1IiwgdXJsLnN0cmluZygpLmxhdGluMSgpLmRhdGEo
KSwgY2hhcnNldC5sYXRpbjEoKS5kYXRhKCksIHJlcXVlc3RJc1ByZWxvYWQsIGZvckhpc3Rvcnkp
OwogCiAgICAgLy8gRklYTUU6IERvIHdlIHJlYWxseSBuZWVkIHRvIHNwZWNpYWwtY2FzZSBhbiBl
bXB0eSBVUkw/CiAgICAgLy8gV291bGQgaXQgYmUgYmV0dGVyIHRvIGp1c3QgZ28gb24gd2l0aCB0
aGUgY2FjaGUgY29kZSBhbmQgbGV0IGl0IGZhaWwgbGF0ZXI/CkBAIC0xMDYsNiArMTA2LDEyIEBA
IENhY2hlZFJlc291cmNlKiBNZW1vcnlDYWNoZTo6cmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291
cmNlTG9hZGVyKiBjYWNoZWRSZXNvdXJjCiAgICAgLy8gTG9vayB1cCB0aGUgcmVzb3VyY2UgaW4g
b3VyIG1hcC4KICAgICBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UgPSByZXNvdXJjZUZvclVSTCh1
cmwuc3RyaW5nKCkpOwogCisgICAgaWYgKCFmb3JIaXN0b3J5ICYmIHJlc291cmNlICYmIHJlc291
cmNlLT5pc0Zvckhpc3RvcnlPbmx5KCkpIHsKKyAgICAgICAgTE9HKFJlc291cmNlTG9hZGluZywg
Ik1lbW9yeUNhY2hlOjpyZXF1ZXN0UmVzb3VyY2UgY2xlYXJlZCBhIGZvciBoaXN0b3J5IG9ubHkg
cmVzb3VyY2UgZHVlIHRvIGEgbm9uLWhpc3RvcnkgcmVxdWVzdCBmb3IgdGhlIHJlc291cmNlIik7
CisgICAgICAgIHJlbW92ZShyZXNvdXJjZSk7CisgICAgICAgIHJlc291cmNlID0gMDsKKyAgICB9
CisKICAgICBpZiAocmVzb3VyY2UgJiYgcmVxdWVzdElzUHJlbG9hZCAmJiAhcmVzb3VyY2UtPmlz
UHJlbG9hZGVkKCkpIHsKICAgICAgICAgTE9HKFJlc291cmNlTG9hZGluZywgIk1lbW9yeUNhY2hl
OjpyZXF1ZXN0UmVzb3VyY2UgYWxyZWFkeSBoYXMgYSBwcmVsb2FkIHJlcXVlc3QgZm9yIHRoaXMg
cmVxdWVzdCwgYW5kIGl0IGhhc24ndCBiZWVuIHByZWxvYWRlZCB5ZXQiKTsKICAgICAgICAgcmV0
dXJuIDA7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oIGIv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuaAppbmRleCBiZjBmMzJjLi4xNWNlOWRh
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oCisrKyBiL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmgKQEAgLTEwOSw3ICsxMDksNyBAQCBwdWJs
aWM6CiAKICAgICAvLyBSZXF1ZXN0IHJlc291cmNlcyBmcm9tIHRoZSBjYWNoZS4gIEEgbG9hZCB3
aWxsIGJlIGluaXRpYXRlZCBhbmQgYSBjYWNoZSBvYmplY3QgY3JlYXRlZCBpZiB0aGUgb2JqZWN0
IGlzIG5vdAogICAgIC8vIGZvdW5kIGluIHRoZSBjYWNoZS4KLSAgICBDYWNoZWRSZXNvdXJjZSog
cmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291cmNlTG9hZGVyKiwgQ2FjaGVkUmVzb3VyY2U6OlR5
cGUsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjaGFyc2V0LCBib29sIGlzUHJlbG9h
ZCA9IGZhbHNlKTsKKyAgICBDYWNoZWRSZXNvdXJjZSogcmVxdWVzdFJlc291cmNlKENhY2hlZFJl
c291cmNlTG9hZGVyKiwgQ2FjaGVkUmVzb3VyY2U6OlR5cGUsIGNvbnN0IEtVUkwmIHVybCwgY29u
c3QgU3RyaW5nJiBjaGFyc2V0LCBib29sIGlzUHJlbG9hZCA9IGZhbHNlLCBib29sIGZvckhpc3Rv
cnkgPSBmYWxzZSk7CiAKICAgICBDYWNoZWRDU1NTdHlsZVNoZWV0KiByZXF1ZXN0VXNlckNTU1N0
eWxlU2hlZXQoQ2FjaGVkUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3Qg
U3RyaW5nJiBjaGFyc2V0KTsKICAgICAK
</data>
<flag name="review"
          id="64755"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>74245</attachid>
            <date>2010-11-18 09:45:23 -0800</date>
            <delta_ts>2010-11-18 09:45:23 -0800</delta_ts>
            <desc>[PATCH] Patch that Will Land</desc>
            <filename>take-4.patch</filename>
            <type>text/plain</type>
            <size>16552</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA1N2MzYzBkLi5iNDYyZDI4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTAtMTEt
MTcgIEpvc2VwaCBQZWNvcmFybyAgPGpvZXBlY2tAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBBbGxvdyBuby1zdG9yZSByZXNvdXJjZXMg
dG8gYmUgdXNlZCBmb3IgYmFjayBuYXZpZ2F0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD00OTY3MgorCisgICAgICAgIEFkZCB0ZXN0cyBmb3IgY2hl
Y2tpbmcgaWYgdGhlIGNhY2hlIHdhcyB1c2VkIGZvciBhICJDYWNoZS1jb250cm9sOiBuby1zdG9y
ZSIKKyAgICAgICAgcmVzb3VyY2UgaW4gYmFjayBuYXZpZ2F0aW9uLCByZWxvYWQgbmF2aWdhdGlv
biwgYW5kIG5vcm1hbCBuYXZpZ2F0aW9uLgorCisgICAgICAgICogaHR0cC90ZXN0cy9jYWNoZS9o
aXN0b3J5LW9ubHktY2FjaGVkLXN1YnJlc291cmNlLWxvYWRzLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogaHR0cC90ZXN0cy9jYWNoZS9oaXN0b3J5LW9ubHktY2FjaGVkLXN1YnJlc291
cmNlLWxvYWRzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvY2FjaGUvcmVzb3Vy
Y2VzL25vLXN0b3JlLXJlc291cmNlLWZvcndhcmQuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0
cC90ZXN0cy9jYWNoZS9yZXNvdXJjZXMvbm8tc3RvcmUtcmVzb3VyY2UtbmV4dC5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2NhY2hlL3Jlc291cmNlcy9uby1zdG9yZS1yZXNvdXJj
ZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2NhY2hlL3Jlc291cmNlcy9yYW5k
b20uY2dpOiBBZGRlZC4KKwogMjAxMC0xMS0xNyAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5j
b20+CiAKICAgICAgICAgQ3JlYXRlIExlb3BhcmQtc3BlY2lmaWMgcmVzdWx0cyBmb3IgdGVzdHMg
dGhhdCBkaWZmZXIgYmV0d2VlbiBMZW9wYXJkCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2NhY2hlL2hpc3Rvcnktb25seS1jYWNoZWQtc3VicmVzb3VyY2UtbG9hZHMtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS9oaXN0b3J5LW9ubHktY2FjaGVk
LXN1YnJlc291cmNlLWxvYWRzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi4xMTI1ZWZmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9jYWNoZS9oaXN0b3J5LW9ubHktY2FjaGVkLXN1YnJlc291cmNlLWxvYWRzLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDggQEAKK1RoaXMgdGVzdCBjaGVja3MgdGhhdCBsb2FkaW5nIGEgc3Vi
cmVzb3VyY2Ugd2l0aCAiQ2FjaGUtQ29udHJvbDogbm8tc3RvcmUiIGlzIGNhY2hlZCBhbmQgcmV1
c2VkIGluIGJhY2sgbmF2aWdhdGlvbiB3aGVuIHRoZSBwYWdlIGlzIG5vdCBpbiB0aGUgcGFnZSBj
YWNoZS4KKworV2UgdGhlbiB0ZXN0IHRoYXQgbG9hZGluZyB0aGUgc2FtZSBzdWJyZXNvdXJjZSBp
cyByZWZldGNoZWQgd2hlbiB1c2VkIGluIG5vbi1zdGFsZSBsb2FkcyBzdWNoIGFzIHJlZnJlc2hl
cyBvciBub3JtYWwgbmF2aWdhdGlvbi4KKworUEFTUyAtIG5vLXN0b3JlIHN1YnJlc291cmNlIHdh
cyBjYWNoZWQgYW5kIHVzZWQgZm9yIGEgYmFjayBuYXZpZ2F0aW9uCitQQVNTIC0gbm8tc3RvcmUg
c3VicmVzb3VyY2Ugd2FzIHJlZmV0Y2hlZCB3aXRoIGEgcmVsb2FkCitQQVNTIC0gbm8tc3RvcmUg
c3VicmVzb3VyY2Ugd2FzIHJlZmV0Y2hlZCB3aXRoIGEgbm9ybWFsIG5hdmlnYXRpb24KKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS9oaXN0b3J5LW9ubHktY2FjaGVk
LXN1YnJlc291cmNlLWxvYWRzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlL2hp
c3Rvcnktb25seS1jYWNoZWQtc3VicmVzb3VyY2UtbG9hZHMuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi4xYWQwM2MwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9jYWNoZS9oaXN0b3J5LW9ubHktY2FjaGVkLXN1YnJlc291cmNlLWxvYWRz
Lmh0bWwKQEAgLTAsMCArMSw4OSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
ICAgIDx0aXRsZT5UZXN0IENhY2hpbmcgIm5vLXN0b3JlIiBGb3IgSGlzdG9yeSBPbmx5PC90aXRs
ZT4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxwPgorICAgICAgICBUaGlzIHRlc3QgY2hlY2tzIHRo
YXQgbG9hZGluZyBhIHN1YnJlc291cmNlIHdpdGggIkNhY2hlLUNvbnRyb2w6IG5vLXN0b3JlIiBp
cworICAgICAgICBjYWNoZWQgYW5kIHJldXNlZCBpbiBiYWNrIG5hdmlnYXRpb24gd2hlbiB0aGUg
cGFnZSBpcyBub3QgaW4gdGhlIHBhZ2UgY2FjaGUuCisgICAgPC9wPgorICAgIDxwPgorICAgICAg
ICBXZSB0aGVuIHRlc3QgdGhhdCBsb2FkaW5nIHRoZSBzYW1lIHN1YnJlc291cmNlIGlzIHJlZmV0
Y2hlZCB3aGVuIHVzZWQgaW4KKyAgICAgICAgbm9uLXN0YWxlIGxvYWRzIHN1Y2ggYXMgcmVmcmVz
aGVzIG9yIG5vcm1hbCBuYXZpZ2F0aW9uLgorICAgIDwvcD4KKyAgICA8cHJlIGlkPSJjb25zb2xl
Ij48L3ByZT4KKyAgICA8c2NyaXB0PgorICAgIC8vIEFzeW5jaHJvbm91cyB0ZXN0IGJlY2F1c2Ug
dGhpcyByZXF1aXJlcyBhIG5ldyB3aW5kb3cgdG8gcGVyZm9ybSBtdWx0aXBsZSBuYXZpZ2F0aW9u
cy4KKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgIHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgIHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgICAgIHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlci5zZXRDYW5PcGVuV2luZG93cygpOworICAgIH0KKworICAgIC8vIFZhbHVl
cyB0byBjaGVjay4KKyAgICB2YXIgb3JpZ2luYWxSYW5kb21OdW1iZXIgPSAwOworICAgIHZhciBi
YWNrTG9hZFJhbmRvbU51bWJlciA9IDA7CisgICAgdmFyIHJlZnJlc2hSYW5kb21OdW1iZXIgID0g
MDsKKyAgICB2YXIgbmV4dExvYWRSYW5kb21OdW1iZXIgPSAwOworCisgICAgLy8gV2luZG93IHdl
IHdpbGwgYmUgY29udHJvbGxpbmcuCisgICAgdmFyIHRhcmdldDsKKworICAgIC8vIFBhc3MgbWVz
c2FnZXMgYmV0d2VlbiB3aW5kb3dzIHRvIGNvbnRyb2wgdGhlIG5hdmlnYXRpb24gdHlwZXMuCisg
ICAgdmFyIHByZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJyk7CisgICAgd2lu
ZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBmdW5jdGlvbihldmVudCkgeworCisgICAg
ICAgIC8vIEZpcnN0IHRpbWUsIHJlY29yZCB0aGUgZmlyc3QgbnVtYmVyLCBhbmQgdGVsbCB0aGUg
dGFyZ2V0IHdpbmRvdyB0byB0cmlnZ2VyIGEgYmFjayBuYXZpZ2F0aW9uLgorICAgICAgICBpZiAo
IW9yaWdpbmFsUmFuZG9tTnVtYmVyKSB7CisgICAgICAgICAgICBvcmlnaW5hbFJhbmRvbU51bWJl
ciA9IGV2ZW50LmRhdGE7CisgICAgICAgICAgICB0YXJnZXQucG9zdE1lc3NhZ2UoJ2dvLWZvcndh
cmQtYW5kLWJhY2snLCAnKicpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAg
ICAgICAgLy8gU2Vjb25kIHRpbWUsIHJlY29yZCB0aGUgc2Vjb25kIG51bWJlci4gSXQgc2hvdWxk
IGJlIGlkZW50aWNhbC4gQWxzbyB0ZWxsIHRoZSB0YXJnZXQgd2luZG93IHRvIHJlbG9hZC4KKyAg
ICAgICAgaWYgKCFiYWNrTG9hZFJhbmRvbU51bWJlcikgeworICAgICAgICAgICAgYmFja0xvYWRS
YW5kb21OdW1iZXIgPSBldmVudC5kYXRhOworICAgICAgICAgICAgdmFyIHdhc0NhY2hlZCA9IChi
YWNrTG9hZFJhbmRvbU51bWJlciA9PT0gb3JpZ2luYWxSYW5kb21OdW1iZXIpOworICAgICAgICAg
ICAgaWYgKHdhc0NhY2hlZCkKKyAgICAgICAgICAgICAgICBwcmUuYXBwZW5kQ2hpbGQoZG9jdW1l
bnQuY3JlYXRlVGV4dE5vZGUoJ1BBU1MgLSBuby1zdG9yZSBzdWJyZXNvdXJjZSB3YXMgY2FjaGVk
IGFuZCB1c2VkIGZvciBhIGJhY2sgbmF2aWdhdGlvblxuJykpOworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIHByZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgn
RkFJTCAtIG5vLXN0b3JlIHN1YnJlc291cmNlIHNob3VsZCBoYXZlIGJlZW4gY2FjaGVkIGFuZCB1
c2VkIGluIGEgYmFjayBuYXZpZ2F0aW9uXG4nKSk7CisgICAgICAgICAgICB0YXJnZXQucG9zdE1l
c3NhZ2UoJ3JlbG9hZCcsICcqJyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwor
ICAgICAgICAvLyBUaGlyZCB0aW1lLCByZWNvcmQgdGhlIHRoaXJkIG51bWJlci4gSXQgc2hvdWxk
IG5vdCBtYXRjaC4gQWxzbyB0ZWxsIHRoZSB0YXJnZXQgd2luZG93IHRvIG5hdmlnYXRlIGZvcndh
cmQuCisgICAgICAgIGlmICghcmVmcmVzaFJhbmRvbU51bWJlcikgeworICAgICAgICAgICAgcmVm
cmVzaFJhbmRvbU51bWJlciA9IGV2ZW50LmRhdGE7CisgICAgICAgICAgICB2YXIgd2FzQ2FjaGVk
ID0gKHJlZnJlc2hSYW5kb21OdW1iZXIgPT09IG9yaWdpbmFsUmFuZG9tTnVtYmVyKTsKKyAgICAg
ICAgICAgIGlmICh3YXNDYWNoZWQpCisgICAgICAgICAgICAgICAgcHJlLmFwcGVuZENoaWxkKGRv
Y3VtZW50LmNyZWF0ZVRleHROb2RlKCdGQUlMIC0gbm8tc3RvcmUgc3VicmVzb3VyY2Ugc2hvdWxk
IGhhdmUgYmVlbiByZWZldGNoZWQgd2l0aCBhIHJlbG9hZFxuJykpOworICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgIHByZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9k
ZSgnUEFTUyAtIG5vLXN0b3JlIHN1YnJlc291cmNlIHdhcyByZWZldGNoZWQgd2l0aCBhIHJlbG9h
ZFxuJykpOworICAgICAgICAgICAgdGFyZ2V0LnBvc3RNZXNzYWdlKCduZXh0JywgJyonKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEZvdXJ0aCB0aW1lLCBy
ZWNvcmQgdGhlIGZvdXJ0aCBudW1iZXIuIEl0IHNob3VsZCBub3QgbWF0Y2ggYW55IG51bWJlcnMg
c28gZmFyLgorICAgICAgICBpZiAoIW5leHRMb2FkUmFuZG9tTnVtYmVyKSB7CisgICAgICAgICAg
ICBuZXh0TG9hZFJhbmRvbU51bWJlciA9IGV2ZW50LmRhdGE7CisgICAgICAgICAgICB2YXIgd2Fz
Q2FjaGVkID0gKG5leHRMb2FkUmFuZG9tTnVtYmVyID09PSBvcmlnaW5hbFJhbmRvbU51bWJlciB8
fCBuZXh0TG9hZFJhbmRvbU51bWJlciA9PT0gcmVmcmVzaFJhbmRvbU51bWJlcik7CisgICAgICAg
ICAgICBpZiAod2FzQ2FjaGVkKQorICAgICAgICAgICAgICAgIHByZS5hcHBlbmRDaGlsZChkb2N1
bWVudC5jcmVhdGVUZXh0Tm9kZSgnRkFJTCAtIG5vLXN0b3JlIHN1YnJlc291cmNlIHNob3VsZCBo
YXZlIGJlZW4gcmVmZXRjaGVkIHdpdGggYSBub3JtYWwgbmF2aWdhdGlvblxuJykpOworICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHByZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVh
dGVUZXh0Tm9kZSgnUEFTUyAtIG5vLXN0b3JlIHN1YnJlc291cmNlIHdhcyByZWZldGNoZWQgd2l0
aCBhIG5vcm1hbCBuYXZpZ2F0aW9uXG4nKSk7CisgICAgICAgIH0KKworICAgICAgICAvLyBUZXN0
IGNvbXBsZXRlZC4KKyAgICAgICAgdGFyZ2V0LmNsb3NlKCk7CisgICAgICAgIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIubm90aWZ5RG9uZSgpOworCisgICAgfSwgZmFsc2UpOworCisgICAgLy8gT3BlbiB0aGUg
dGFyZ2V0IHdpbmRvdyBhbmQgaXQgd2lsbCBiZWdpbiB0byBzZW5kIHVzIG1lc3NhZ2VzLgorICAg
IHRhcmdldCA9IHdpbmRvdy5vcGVuKCdyZXNvdXJjZXMvbm8tc3RvcmUtcmVzb3VyY2UuaHRtbCcp
OworICAgIDwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9jYWNoZS9yZXNvdXJjZXMvbm8tc3RvcmUtcmVzb3VyY2UtZm9yd2FyZC5o
dG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS9yZXNvdXJjZXMvbm8tc3RvcmUtcmVz
b3VyY2UtZm9yd2FyZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVi
MjhlNDMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlL3Jl
c291cmNlcy9uby1zdG9yZS1yZXNvdXJjZS1mb3J3YXJkLmh0bWwKQEAgLTAsMCArMSw0IEBACis8
cD5Ob3cgZ28gYmFjazwvcD4KKzxzY3JpcHQ+Cit3aW5kb3cuaGlzdG9yeS5iYWNrKCk7Cis8L3Nj
cmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUvcmVzb3VyY2Vz
L25vLXN0b3JlLXJlc291cmNlLW5leHQuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY2Fj
aGUvcmVzb3VyY2VzL25vLXN0b3JlLXJlc291cmNlLW5leHQuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi5iZGU4Y2RmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9jYWNoZS9yZXNvdXJjZXMvbm8tc3RvcmUtcmVzb3VyY2UtbmV4dC5odG1s
CkBAIC0wLDAgKzEsNyBAQAorPGgxPjwvaDE+Cis8c2NyaXB0IHNyYz0icmFuZG9tLmNnaSI+PC9z
Y3JpcHQ+Cis8c2NyaXB0PgorLy8gUmFuZG9tLmNnaSB3aWxsIGluY2x1ZGUgYSBnbG9iYWwgInJh
bmRvbU51bWJlciIuCisvLyBTZW5kIHRoaXMgYmFjayB0byBvdXIgb3BlbmVyLgorb3BlbmVyLnBv
c3RNZXNzYWdlKHJhbmRvbU51bWJlciwgJyonKTsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS9yZXNvdXJjZXMvbm8tc3RvcmUtcmVzb3VyY2UuaHRt
bCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUvcmVzb3VyY2VzL25vLXN0b3JlLXJlc291
cmNlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzRiYTU1MAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUvcmVzb3VyY2VzL25v
LXN0b3JlLXJlc291cmNlLmh0bWwKQEAgLTAsMCArMSwzMCBAQAorPGgxPjwvaDE+Cis8c2NyaXB0
IHNyYz0icmFuZG9tLmNnaSI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorLy8gUmFuZG9tLmNnaSB3aWxs
IGluY2x1ZGUgYSBnbG9iYWwgInJhbmRvbU51bWJlciIuCisvLyBBbHdheXMgc2VuZCB0aGlzIGJh
Y2sgdG8gb3VyIG9wZW5lci4KK29wZW5lci5wb3N0TWVzc2FnZShyYW5kb21OdW1iZXIsICcqJyk7
CisKKy8vIE91ciBvcGVuZXIgd2lsbCB0ZWxsIHVzIHRvIHBlcmZvcm0gdmFyaW91cyBsb2Fkcy4K
K3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgZnVuY3Rpb24oZXZlbnQpIHsKKwor
ICAgIC8vIEdvIGZvcndhcmQgYW5kIGJhY2suCisgICAgaWYgKGV2ZW50LmRhdGEgPT09ICdnby1m
b3J3YXJkLWFuZC1iYWNrJykgeworICAgICAgICB3aW5kb3cubG9jYXRpb24gPSAnbm8tc3RvcmUt
cmVzb3VyY2UtZm9yd2FyZC5odG1sJzsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8v
IFJlbG9hZC4KKyAgICBpZiAoZXZlbnQuZGF0YSA9PT0gJ3JlbG9hZCcpIHsKKyAgICAgICAgd2lu
ZG93LmxvY2F0aW9uLnJlbG9hZCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8g
Tm9ybWFsIG5hdmlnYXRpb24sIG5leHQuCisgICAgaWYgKGV2ZW50LmRhdGEgPT09ICduZXh0Jykg
eworICAgICAgICB3aW5kb3cubG9jYXRpb24gPSAnbm8tc3RvcmUtcmVzb3VyY2UtbmV4dC5odG1s
JzsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworfSwgZmFsc2UpOworPC9zY3JpcHQ+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlL3Jlc291cmNlcy9yYW5kb20uY2dp
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS9yZXNvdXJjZXMvcmFuZG9tLmNnaQpuZXcg
ZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi44ZjY2MjFjCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS9yZXNvdXJjZXMvcmFuZG9tLmNnaQpAQCAt
MCwwICsxLDkgQEAKKyMhL3Vzci9iaW4vcGVybCAtdworCitwcmludCAiQ29udGVudC10eXBlOiB0
ZXh0L2phdmFzY3JpcHRcbiI7CitwcmludCAiQ2FjaGUtY29udHJvbDogbm8tc3RvcmVcbiI7Citw
cmludCAiXG4iOworCitteSAkcmFuZG9tX251bWJlciA9IGludChyYW5kKDEwMDAwMDAwMDAwMDAp
KTsKK3ByaW50ICJyYW5kb21OdW1iZXIgPSAiIC4gJHJhbmRvbV9udW1iZXIgLiAiO1xuIjsKK3By
aW50ICJkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdoMScpLnRleHRDb250ZW50ID0gcmFuZG9tTnVt
YmVyOyI7CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9n
CmluZGV4IGQzZmNiMDYuLjhlMjQ0NTIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTAtMTEtMTcgIEpvc2Vw
aCBQZWNvcmFybyAgPGpvZXBlY2tAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBE
YXJpbiBBZGxlci4KKworICAgICAgICBBbGxvdyBuby1zdG9yZSByZXNvdXJjZXMgdG8gYmUgdXNl
ZCBmb3IgYmFjayBuYXZpZ2F0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD00OTY3MgorCisgICAgICAgIFRlc3Q6IGh0dHAvdGVzdHMvY2FjaGUvaGlz
dG9yeS1vbmx5LWNhY2hlZC1zdWJyZXNvdXJjZS1sb2Fkcy5odG1sCisKKyAgICAgICAgSFRUUCBh
bGxvd3MgIkNhY2hlLUNvbnRyb2w6IG5vLXN0b3JlIiByZXNvdXJjZXMgdG8gImNhY2hlZCIgZm9y
IHRoZQorICAgICAgICBwdXJwb3NlcyBvZiBoaXN0b3J5LCBzdWNoIGFzIGJhY2svZm9yd2FyZCBu
YXZpZ2F0aW9uLiBQcmV2aW91c2x5CisgICAgICAgIFdlYkNvcmUganVzdCBpbW1lZGlhdGVseSBl
dmljdGVkIHRoZXNlIHJlc291cmNlcywgbm93IHdlIGxlYXZlIHRoZW0gaW4KKyAgICAgICAgdGhl
IGNhY2hlIGFzIGxvbmcgYXMgdGhleSBhcmUgbm90ICJodHRwcyIuIFRoaXMgYWxsb3dzIHVzIHRv
IHVzZSB0aGVtCisgICAgICAgIGlmIHRoZXkgYXJlIHVzZWQgaW4gYSBiYWNrIG5hdmlnYXRpb24s
IG9yIGxhemlseSBldmljdCBhbmQgcmVwbGFjZQorICAgICAgICB0aGVtIG9uIG90aGVyIGxvYWQg
dHlwZXMgZXhwZWN0aW5nIG5vbi1zdGFsZSByZXNvdXJjZXMuCisKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZFJlc291cmNlOjpDYWNoZWRSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRSZXNvdXJjZTo6cmVtb3ZlQ2xpZW50KTogaW5zdGVhZCBvZiBpbW1lZGlhdGVseSByZW1vdmlu
ZyB0aGUgcmVzb3VyY2UgZnJvbSB0aGUgY2FjaGUsIGxlYXZlIGl0IGluIHRoZSBjYWNoZS4KKyAg
ICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNoZWNrRm9yUmVsb2FkKToKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0UmVzb3VyY2UpOiBhbGxvdyBo
aXN0b3J5IG9ubHkgcmVzb3VyY2VzIGlmIHRoZSBDYWNoZVBvbGljeSBpcyBDYWNoZVBvbGljeUhp
c3RvcnlCdWZmZXIgKGJhY2svZm9yd2FyZCBuYXZpZ2F0aW9uKS4KKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvTWVtb3J5Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5Q2FjaGU6OnJl
cXVlc3RSZXNvdXJjZSk6IGxhemlseSByZW1vdmUgaGlzdG9yeSBvbmx5IHJlc291cmNlcyBpZiBp
dCBpcyByZXF1ZXN0ZWQgZm9yIGEgbG9hZCB0eXBlIGV4cGVjdGluZyBub24tc3RhbGUgcmVzb3Vy
Y2VzLgorICAgICAgICAqIGxvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oOiBkZWZhdWx0IHRoZSBm
b3JIaXN0b3J5IHBhcmFtZXRlciB0byBmYWxzZS4KKworICAgICAgICAgIFJlbmFtZSBjYWNoZSBw
b2xpY3kgQ2FjaGVQb2xpY3lBbGxvd1N0YWxlIHRvIENhY2hlUG9saWN5SGlzdG9yeUJ1ZmZlci4K
KworICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZUxvYWRlcjo6c3VicmVzb3VyY2VDYWNoZVBvbGljeSk6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlUG9saWN5Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
LmNwcDoKKwogMjAxMC0xMS0xNyAgRGltaXRyaSBHbGF6a292ICA8ZGdsYXprb3ZAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIu
Y3BwCmluZGV4IDU4MTEzYzIuLjc2OGM4ZTMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyLmNwcAorKysgYi9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTIz
MTksNyArMjMxOSw3IEBAIENhY2hlUG9saWN5IEZyYW1lTG9hZGVyOjpzdWJyZXNvdXJjZUNhY2hl
UG9saWN5KCkgY29uc3QKICAgICAgICAgcmV0dXJuIENhY2hlUG9saWN5UmV2YWxpZGF0ZTsKIAog
ICAgIGlmIChyZXF1ZXN0LmNhY2hlUG9saWN5KCkgPT0gUmV0dXJuQ2FjaGVEYXRhRWxzZUxvYWQp
Ci0gICAgICAgIHJldHVybiBDYWNoZVBvbGljeUFsbG93U3RhbGU7CisgICAgICAgIHJldHVybiBD
YWNoZVBvbGljeUhpc3RvcnlCdWZmZXI7CiAKICAgICByZXR1cm4gQ2FjaGVQb2xpY3lWZXJpZnk7
CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZVBvbGljeS5oIGIvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVQb2xpY3kuaAppbmRleCAyNjM5Y2FhLi4wYjkwMTBiIDEw
MDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZVBvbGljeS5oCisrKyBiL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlUG9saWN5LmgKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICBDYWNoZVBvbGljeVZlcmlmeSwKICAgICAgICAgQ2FjaGVQb2xp
Y3lSZXZhbGlkYXRlLAogICAgICAgICBDYWNoZVBvbGljeVJlbG9hZCwKLSAgICAgICAgQ2FjaGVQ
b2xpY3lBbGxvd1N0YWxlCisgICAgICAgIENhY2hlUG9saWN5SGlzdG9yeUJ1ZmZlcgogICAgIH07
CiAKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNw
cCBiL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAppbmRleCBkNGVhYzJl
Li44NDQwNjVkIDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZS5jcHAKKysrIGIvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCkBAIC0y
NTIsOCArMjUyLDExIEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OnJlbW92ZUNsaWVudChDYWNoZWRS
ZXNvdXJjZUNsaWVudCogY2xpZW50KQogICAgICAgICBhbGxDbGllbnRzUmVtb3ZlZCgpOwogICAg
ICAgICBpZiAocmVzcG9uc2UoKS5jYWNoZUNvbnRyb2xDb250YWluc05vU3RvcmUoKSkgewogICAg
ICAgICAgICAgLy8gUkZDMjYxNiAxNC45LjI6Ci0gICAgICAgICAgICAvLyAibm8tc3RvcmU6IC4u
Lk1VU1QgbWFrZSBhIGJlc3QtZWZmb3J0IGF0dGVtcHQgdG8gcmVtb3ZlIHRoZSBpbmZvcm1hdGlv
biBmcm9tIHZvbGF0aWxlIHN0b3JhZ2UgYXMgcHJvbXB0bHkgYXMgcG9zc2libGUiCi0gICAgICAg
ICAgICBjYWNoZSgpLT5yZW1vdmUodGhpcyk7CisgICAgICAgICAgICAvLyAibm8tc3RvcmU6IC4u
LiBNVVNUIG1ha2UgYSBiZXN0LWVmZm9ydCBhdHRlbXB0IHRvIHJlbW92ZSB0aGUgaW5mb3JtYXRp
b24gZnJvbSB2b2xhdGlsZSBzdG9yYWdlIGFzIHByb21wdGx5IGFzIHBvc3NpYmxlIgorICAgICAg
ICAgICAgLy8gIi4uLiBIaXN0b3J5IGJ1ZmZlcnMgTUFZIHN0b3JlIHN1Y2ggcmVzcG9uc2VzIGFz
IHBhcnQgb2YgdGhlaXIgbm9ybWFsIG9wZXJhdGlvbi4iCisgICAgICAgICAgICAvLyBXZSBhbGxv
dyBub24tc2VjdXJlIGNvbnRlbnQgdG8gYmUgcmV1c2VkIGluIGhpc3RvcnksIGJ1dCB3ZSBkbyBu
b3QgYWxsb3cgc2VjdXJlIGNvbnRlbnQgdG8gYmUgcmV1c2VkLgorICAgICAgICAgICAgaWYgKHBy
b3RvY29sSXModXJsKCksICJodHRwcyIpKQorICAgICAgICAgICAgICAgIGNhY2hlKCktPnJlbW92
ZSh0aGlzKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBjYWNoZSgpLT5wcnVuZSgpOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9h
ZGVyLmNwcCBiL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcApp
bmRleCAzZDQyNDRjLi4xNWM1ZjAzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
UmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0xMTMsNyArMTEzLDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJj
ZUxvYWRlcjo6Y2hlY2tGb3JSZWxvYWQoY29uc3QgS1VSTCYgZnVsbFVSTCkKICAgICBjYXNlIENh
Y2hlUG9saWN5UmV2YWxpZGF0ZToKICAgICAgICAgY2FjaGUoKS0+cmV2YWxpZGF0ZVJlc291cmNl
KGV4aXN0aW5nLCB0aGlzKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDYWNoZVBvbGljeUFs
bG93U3RhbGU6CisgICAgY2FzZSBDYWNoZVBvbGljeUhpc3RvcnlCdWZmZXI6CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKQEAgLTI2Myw3ICsyNjMsOCBAQCBDYWNoZWRSZXNvdXJjZSogQ2FjaGVk
UmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6VHlwZSB0eXBl
LAogCiAgICAgY2hlY2tGb3JSZWxvYWQoZnVsbFVSTCk7CiAKLSAgICBDYWNoZWRSZXNvdXJjZSog
cmVzb3VyY2UgPSBjYWNoZSgpLT5yZXF1ZXN0UmVzb3VyY2UodGhpcywgdHlwZSwgZnVsbFVSTCwg
Y2hhcnNldCwgaXNQcmVsb2FkKTsKKyAgICBib29sIGFsbG93Rm9ySGlzdG9yeU9ubHlSZXNvdXJj
ZXMgPSBjYWNoZVBvbGljeSgpID09IENhY2hlUG9saWN5SGlzdG9yeUJ1ZmZlcjsKKyAgICBDYWNo
ZWRSZXNvdXJjZSogcmVzb3VyY2UgPSBjYWNoZSgpLT5yZXF1ZXN0UmVzb3VyY2UodGhpcywgdHlw
ZSwgZnVsbFVSTCwgY2hhcnNldCwgaXNQcmVsb2FkLCBhbGxvd0Zvckhpc3RvcnlPbmx5UmVzb3Vy
Y2VzKTsKICAgICBpZiAocmVzb3VyY2UpIHsKICAgICAgICAgLy8gQ2hlY2sgZmluYWwgVVJMIG9m
IHJlc291cmNlIHRvIGNhdGNoIHJlZGlyZWN0cy4KICAgICAgICAgLy8gU2VlIDxodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE5NjM+LgpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwIGIvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVt
b3J5Q2FjaGUuY3BwCmluZGV4IDI1YWY3NzQuLjc5ZGZjMDMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcAorKysgYi9XZWJDb3JlL2xvYWRlci9jYWNoZS9N
ZW1vcnlDYWNoZS5jcHAKQEAgLTk0LDkgKzk0LDkgQEAgc3RhdGljIENhY2hlZFJlc291cmNlKiBj
cmVhdGVSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6VHlwZSB0eXBlLCBjb25zdCBLVVJMJiB1cmwK
ICAgICByZXR1cm4gMDsKIH0KIAotQ2FjaGVkUmVzb3VyY2UqIE1lbW9yeUNhY2hlOjpyZXF1ZXN0
UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIGNhY2hlZFJlc291cmNlTG9hZGVyLCBDYWNo
ZWRSZXNvdXJjZTo6VHlwZSB0eXBlLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY2hh
cnNldCwgYm9vbCByZXF1ZXN0SXNQcmVsb2FkKQorQ2FjaGVkUmVzb3VyY2UqIE1lbW9yeUNhY2hl
OjpyZXF1ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIGNhY2hlZFJlc291cmNlTG9h
ZGVyLCBDYWNoZWRSZXNvdXJjZTo6VHlwZSB0eXBlLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0
cmluZyYgY2hhcnNldCwgYm9vbCByZXF1ZXN0SXNQcmVsb2FkLCBib29sIGZvckhpc3RvcnkpCiB7
Ci0gICAgTE9HKFJlc291cmNlTG9hZGluZywgIk1lbW9yeUNhY2hlOjpyZXF1ZXN0UmVzb3VyY2Ug
JyVzJywgY2hhcnNldCAnJXMnLCBwcmVsb2FkPSV1IiwgdXJsLnN0cmluZygpLmxhdGluMSgpLmRh
dGEoKSwgY2hhcnNldC5sYXRpbjEoKS5kYXRhKCksIHJlcXVlc3RJc1ByZWxvYWQpOworICAgIExP
RyhSZXNvdXJjZUxvYWRpbmcsICJNZW1vcnlDYWNoZTo6cmVxdWVzdFJlc291cmNlICclcycsIGNo
YXJzZXQgJyVzJywgcHJlbG9hZD0ldSwgZm9ySGlzdG9yeT0ldSIsIHVybC5zdHJpbmcoKS5sYXRp
bjEoKS5kYXRhKCksIGNoYXJzZXQubGF0aW4xKCkuZGF0YSgpLCByZXF1ZXN0SXNQcmVsb2FkLCBm
b3JIaXN0b3J5KTsKIAogICAgIC8vIEZJWE1FOiBEbyB3ZSByZWFsbHkgbmVlZCB0byBzcGVjaWFs
LWNhc2UgYW4gZW1wdHkgVVJMPwogICAgIC8vIFdvdWxkIGl0IGJlIGJldHRlciB0byBqdXN0IGdv
IG9uIHdpdGggdGhlIGNhY2hlIGNvZGUgYW5kIGxldCBpdCBmYWlsIGxhdGVyPwpAQCAtMTA2LDYg
KzEwNiwxNSBAQCBDYWNoZWRSZXNvdXJjZSogTWVtb3J5Q2FjaGU6OnJlcXVlc3RSZXNvdXJjZShD
YWNoZWRSZXNvdXJjZUxvYWRlciogY2FjaGVkUmVzb3VyYwogICAgIC8vIExvb2sgdXAgdGhlIHJl
c291cmNlIGluIG91ciBtYXAuCiAgICAgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlID0gcmVzb3Vy
Y2VGb3JVUkwodXJsLnN0cmluZygpKTsKIAorICAgIC8vIE5vbiBodHRwcyAibm8tc3RvcmUiIHJl
c291cmNlcyBhcmUgbGVmdCBpbiB0aGUgY2FjaGUgdG8gYmUgdXNlZCBmb3IgYmFjay9mb3J3YXJk
IG5hdmlnYXRpb24gb25seS4KKyAgICAvLyBJZiB0aGlzIGlzIG5vdCBhIHJlcXVlc3QgZm9ySGlz
dG9yeSBhbmQgdGhlIHJlc291cmNlIHdhcyBzZXJ2ZWQgd2l0aCAibm8tc3RvcmUiIHdlIHNob3Vs
ZCBldmljdAorICAgIC8vIGl0IGhlcmUgYW5kIG1ha2UgYSBmcmVzaCByZXF1ZXN0LgorICAgIGlm
ICghZm9ySGlzdG9yeSAmJiByZXNvdXJjZSAmJiByZXNvdXJjZS0+cmVzcG9uc2UoKS5jYWNoZUNv
bnRyb2xDb250YWluc05vU3RvcmUoKSkgeworICAgICAgICBMT0coUmVzb3VyY2VMb2FkaW5nLCAi
TWVtb3J5Q2FjaGU6OnJlcXVlc3RSZXNvdXJjZSBjbGVhcmVkIGEgZm9yIGhpc3Rvcnkgb25seSBy
ZXNvdXJjZSBkdWUgdG8gYSBub24taGlzdG9yeSByZXF1ZXN0IGZvciB0aGUgcmVzb3VyY2UiKTsK
KyAgICAgICAgZXZpY3QocmVzb3VyY2UpOworICAgICAgICByZXNvdXJjZSA9IDA7CisgICAgfQor
CiAgICAgaWYgKHJlc291cmNlICYmIHJlcXVlc3RJc1ByZWxvYWQgJiYgIXJlc291cmNlLT5pc1By
ZWxvYWRlZCgpKSB7CiAgICAgICAgIExPRyhSZXNvdXJjZUxvYWRpbmcsICJNZW1vcnlDYWNoZTo6
cmVxdWVzdFJlc291cmNlIGFscmVhZHkgaGFzIGEgcHJlbG9hZCByZXF1ZXN0IGZvciB0aGlzIHJl
cXVlc3QsIGFuZCBpdCBoYXNuJ3QgYmVlbiBwcmVsb2FkZWQgeWV0Iik7CiAgICAgICAgIHJldHVy
biAwOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuaCBiL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmgKaW5kZXggYmYwZjMyYy4uMTVjZTlkYSAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuaAorKysgYi9XZWJD
b3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oCkBAIC0xMDksNyArMTA5LDcgQEAgcHVibGlj
OgogCiAgICAgLy8gUmVxdWVzdCByZXNvdXJjZXMgZnJvbSB0aGUgY2FjaGUuICBBIGxvYWQgd2ls
bCBiZSBpbml0aWF0ZWQgYW5kIGEgY2FjaGUgb2JqZWN0IGNyZWF0ZWQgaWYgdGhlIG9iamVjdCBp
cyBub3QKICAgICAvLyBmb3VuZCBpbiB0aGUgY2FjaGUuCi0gICAgQ2FjaGVkUmVzb3VyY2UqIHJl
cXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZUxvYWRlciosIENhY2hlZFJlc291cmNlOjpUeXBl
LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY2hhcnNldCwgYm9vbCBpc1ByZWxvYWQg
PSBmYWxzZSk7CisgICAgQ2FjaGVkUmVzb3VyY2UqIHJlcXVlc3RSZXNvdXJjZShDYWNoZWRSZXNv
dXJjZUxvYWRlciosIENhY2hlZFJlc291cmNlOjpUeXBlLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0
IFN0cmluZyYgY2hhcnNldCwgYm9vbCBpc1ByZWxvYWQgPSBmYWxzZSwgYm9vbCBmb3JIaXN0b3J5
ID0gZmFsc2UpOwogCiAgICAgQ2FjaGVkQ1NTU3R5bGVTaGVldCogcmVxdWVzdFVzZXJDU1NTdHls
ZVNoZWV0KENhY2hlZFJlc291cmNlTG9hZGVyKiwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0
cmluZyYgY2hhcnNldCk7CiAgICAgCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>