<?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>158728</bug_id>
          
          <creation_ts>2016-06-14 00:59:26 -0700</creation_ts>
          <short_desc>Clean CSS stylesheets should be accessible from JavaScript</short_desc>
          <delta_ts>2016-09-05 10:14:20 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>151937</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>achristensen</cc>
    
    <cc>ap</cc>
    
    <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1202128</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-06-14 00:59:26 -0700</bug_when>
    <thetext>Following on bug 155761, access by JS to the internal CSS stylesheet rules should be governed by CORS checks.
Currently, WebKit only checks the last URL of the stylesheet.
This does not take into account redirections or CORS headers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1202160</commentid>
    <comment_count>1</comment_count>
      <attachid>281251</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-06-14 06:12:46 -0700</bug_when>
    <thetext>Created attachment 281251
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1202185</commentid>
    <comment_count>2</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-06-14 08:09:06 -0700</bug_when>
    <thetext>This patch is a first step towards full cors checks in loaders code.
It is not fully complete as:
- It does not check the final response for cross-origin checks. CSS style sheets fetched with crossOrigin attribute should currently protect themselves at HTMLLinkElement level or equivalent.
- If a resource to be fetched with a mode is already in the cache but with a different mode, the isClean() computation may not be valid. CachedResourceLoader should be able to handle that properly.

I plan to fix those issues, ideally as a follow-up patch with additional tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1202200</commentid>
    <comment_count>3</comment_count>
      <attachid>281251</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-06-14 09:16:01 -0700</bug_when>
    <thetext>Comment on attachment 281251
Patch

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

I&apos;m not sure I&apos;m sold on the idea of CORS protecting css stylesheets.  What does it prevent?  Is it specified anywhere?  I found https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS but that&apos;s not a spec.

&gt; Source/WebCore/ChangeLog:11
&gt; +        or to Opaque if fetch mode is no-cors.

CORS isn&apos;t consistently capitalized

&gt; Source/WebCore/css/CSSStyleSheet.h:54
&gt; +    static Ref&lt;CSSStyleSheet&gt; create(Ref&lt;StyleSheetContents&gt;&amp;&amp;, Node* ownerNode, bool);

This definitely needs a name indicating what the bool is for, or use an enum.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1202206</commentid>
    <comment_count>4</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2016-06-14 09:38:38 -0700</bug_when>
    <thetext>I found this spec, but I don&apos;t know if there are any competing ones: &lt;http://www.w3.org/TR/cssom-1/&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1202210</commentid>
    <comment_count>5</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-06-14 09:42:12 -0700</bug_when>
    <thetext>The latest spec for the stylesheet link element is https://html.spec.whatwg.org/multipage/semantics.html#link-type-stylesheet
It also points to https://drafts.csswg.org/cssom/#create-a-css-style-sheet</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1202214</commentid>
    <comment_count>6</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2016-06-14 09:47:51 -0700</bug_when>
    <thetext>So we do have competing specs?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1202243</commentid>
    <comment_count>7</comment_count>
      <attachid>281251</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-06-14 11:16:16 -0700</bug_when>
    <thetext>Comment on attachment 281251
Patch

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

&gt; LayoutTests/http/tests/security/cannot-read-cssrules-redirect.html:28
&gt;      log(&quot;cssRules: &quot; + sheet1.cssRules);

I&apos;m not sure there is a consensus among browsers about what to do with CORS css stylesheets.
This line throws an exception in Firefox but not chrome.  Current Safari (without this patch) seems to have the same output on this test as Chrome.  Firefox also complains about the lack of meta charset in this test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1202271</commentid>
    <comment_count>8</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-06-14 12:34:02 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; So we do have competing specs?

https://drafts.csswg.org/cssom is essentially the working draft of https://www.w3.org/TR/cssom-1/ and  https://html.spec.whatwg.org/multipage/semantics.html is essentially http://w3c.github.io/html/.

&gt; &gt; LayoutTests/http/tests/security/cannot-read-cssrules-redirect.html:28
&gt; &gt;      log(&quot;cssRules: &quot; + sheet1.cssRules);
&gt; 
&gt; I&apos;m not sure there is a consensus among browsers about what to do with CORS
&gt; css stylesheets.

Good point, have yo tried with dev or regular browsers?
I&apos;ll check tomorrow with dev chrome/firefox if you haven&apos;t done it.

&gt; This line throws an exception in Firefox but not chrome. 

Is it the case that sheet1 is null?
If so, it might be the former behavior (https://www.w3.org/TR/html5/document-metadata.html#styling).
AFAII, it is now changed to having a sheet object with a throwing cssRules accessor if origin-clean flag is not set.

&gt; Current Safari (without this patch) seems to have the same output on this test as Chrome.

Current WebKit behavior is to have a sheet object that may return cssRules if same-origin or null if cross-origin.

This patch is changing the case of declared-as-cross-origin-and-passing-cors-check resources.
It is not changing the case of cross-origin-but-not-passing-cors-check (which should go from null to exception throwing).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1202559</commentid>
    <comment_count>9</comment_count>
      <attachid>281358</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-06-15 07:07:44 -0700</bug_when>
    <thetext>Created attachment 281358
Beefing up tests and addressing other comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1202565</commentid>
    <comment_count>10</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-06-15 07:36:06 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; Created attachment 281358 [details]
&gt; Beefing up tests and addressing other comments

This patch adds some tests.
I run them against chrome dev and firefox nightly.

For cross-origin stylesheet link tests (security/cannot-read-cssrules.html), firefox and chrome behave differently but not far one from the other.

In case of a link element without crossorigin attribute, chrome is returning null to cssRules accessor. Firefox is throwing an exception. WebKit does the same as Chrome.

With a link element with a crossorigin attribute and cors check is failing, chrome is returning null to cssRules accessor. Firefox is returning an empty CSSRuleList object. WebKit exposes the CSSRuleList with the patch but not without the patch (expected regression to be fixed in a follow-up path).

With a link element with a crossorigin attribute and cors check is successful, both expose the object. WebKit exposes the CSSRuleList with the patch but not without the patch.

In case of redirections, behaviors are similar between Chrome and Firefox.
In case of a link element  with a crossorigin attribute, cross-origin redirection to a same-origin resource but cors check is failing, both Chrome and firefox expose empty cssRuleList.
WebKit with the patch will return null and will expose the cssRuleList without the patch.

What is surprising is that the same case but without the crossorigin attribute will make chrome and firefox exposing cssRules.
This is surprising as the resource should be considered cross-origin.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1202566</commentid>
    <comment_count>11</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-06-15 07:41:57 -0700</bug_when>
    <thetext>It might be tempting to change the behavior the case of elements without crossorigin attributes to something more consistent.

But given the interop analysis and the potential compatibility risk (?), we might consider to only change the behavior for link elements with crossorigin attributes. The other cases would stay in the status quo.

I can update the patch accordingly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1204495</commentid>
    <comment_count>12</comment_count>
      <attachid>281836</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-06-22 04:23:51 -0700</bug_when>
    <thetext>Created attachment 281836
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1204496</commentid>
    <comment_count>13</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-06-22 04:25:20 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; Created attachment 281836 [details]
&gt; Patch

Patch now only changes behavior for link elements with cross origin attributes.
As can be seen from the test results, cors checks are done for redirects but not yet for the final response.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1204506</commentid>
    <comment_count>14</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-06-22 08:31:47 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (In reply to comment #12)
&gt; &gt; Created attachment 281836 [details]
&gt; &gt; Patch
&gt; 
&gt; Patch now only changes behavior for link elements with cross origin
&gt; attributes.
&gt; As can be seen from the test results, cors checks are done for redirects but
&gt; not yet for the final response.

WIP patch of bug 158565 adds the final response check and updates the expectation of the css test accordingly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1204819</commentid>
    <comment_count>15</comment_count>
      <attachid>281908</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-06-23 07:54:56 -0700</bug_when>
    <thetext>Created attachment 281908
Refactoring of redirectReceived</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1216463</commentid>
    <comment_count>16</comment_count>
      <attachid>285101</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-08-02 05:33:42 -0700</bug_when>
    <thetext>Created attachment 285101
Rebasing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1226162</commentid>
    <comment_count>17</comment_count>
      <attachid>285101</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-09-03 13:15:07 -0700</bug_when>
    <thetext>Comment on attachment 285101
Rebasing

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

&gt; Source/WebCore/css/CSSStyleSheet.h:56
&gt; +    enum class OriginCleanFlag {
&gt; +        True,
&gt; +        False,
&gt; +        Undefined
&gt; +    };

I’m not clear on why the third state is called &quot;undefined&quot;. I think the third state may mean something more like &quot;based on the owning node&quot;?

It seems ugly that we have so many different versions of &quot;tri state value&quot;; the most natural is Optional&lt;bool&gt;, &lt;wtf/TriState.h&gt; where the third state is &quot;mixed&quot; rather than undefined. Since the point here is to make things readable at the call site, it seems using an enum class is a good idea.

This kind of enum should be defined on one line; it’s not easier to read vertical like this. Just takes up a lot of extra space.

&gt; Source/WebCore/css/CSSStyleSheet.h:59
&gt; +    static Ref&lt;CSSStyleSheet&gt; create(Ref&lt;StyleSheetContents&gt;&amp;&amp;, Node* ownerNode, OriginCleanFlag = OriginCleanFlag::Undefined);

Since we have to touch every call site, can ownerNode be changed to a Node&amp; instead of Node*?

&gt; Source/WebCore/dom/ProcessingInstruction.cpp:196
&gt;      auto cssSheet = CSSStyleSheet::create(StyleSheetContents::create(href, parserContext), this);
&gt; -    cssSheet.get().setDisabled(m_alternate);
&gt; -    cssSheet.get().setTitle(m_title);
&gt; -    cssSheet.get().setMediaQueries(MediaQuerySet::create(m_media));
&gt; +    cssSheet-&gt;setDisabled(m_alternate);
&gt; +    cssSheet-&gt;setTitle(m_title);
&gt; +    cssSheet-&gt;setMediaQueries(MediaQuerySet::create(m_media));

Why are we touching this at all? I don’t think the change here is an improvement. Although the &quot;-&gt;&quot; syntax is fewer characters, in the past we have talked about possibly preferring the &quot;.get().&quot; syntax. Talk to Andreas Kling if you want to know more.

But more importantly, this patch does not require any change here. Although I can see you wanted to make this consistent with other call sites.

&gt; Source/WebCore/html/HTMLLinkElement.cpp:337
&gt; +    // FIXME: originClean should be turned to false except  set to true if fetch mode is CORS.

There is an extra space here before &quot;set&quot;.

&gt; Source/WebCore/html/HTMLLinkElement.cpp:338
&gt; +    CSSStyleSheet::OriginCleanFlag originClean = CSSStyleSheet::OriginCleanFlag::Undefined;

I suggest using auto here.

&gt; Source/WebCore/html/HTMLLinkElement.cpp:340
&gt; +        originClean = cachedStyleSheet.isClean() ? CSSStyleSheet::OriginCleanFlag::True : CSSStyleSheet::OriginCleanFlag::False;

If we were using Optional&lt;bool&gt; this line would not need a ? : expression in it!

&gt; Source/WebCore/loader/SubresourceLoader.cpp:419
&gt; +    if (m_frame &amp;&amp; m_frame-&gt;document()) {
&gt; +        String errorMessage = &quot;Cross-origin request to &quot; + response.url().string() + &quot; denied by Cross-Origin Resource Sharing policy: &quot; + errorDescription;
&gt; +        m_frame-&gt;document()-&gt;addConsoleMessage(MessageSource::Security, MessageLevel::Error, errorMessage);
&gt; +    }
&gt; +    cancel(ResourceError(errorDomainWebKitInternal, 0, response.url(), errorDescription, ResourceError::Type::AccessControl));
&gt; +    return false;

I have the same complaint here that I had in another patch today; I am not so happy with the &quot;checkXXX&quot; function having the side effect of doing a cancel. I think we should consider finding some cleaner separation of responsibilities here to make the code more readable. This function should supply the decision that an error occurred and provide both the console message and the error, but it would be nice for the actual side effects to be more visible to the caller.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1226418</commentid>
    <comment_count>18</comment_count>
      <attachid>287949</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-09-05 06:58:44 -0700</bug_when>
    <thetext>Created attachment 287949
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1226424</commentid>
    <comment_count>19</comment_count>
      <attachid>287949</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-05 07:20:15 -0700</bug_when>
    <thetext>Comment on attachment 287949
Patch for landing

Rejecting attachment 287949 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-01&apos;, &apos;build&apos;, &apos;--no-clean&apos;, &apos;--no-update&apos;, &apos;--build-style=release&apos;, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
a/EWS/WebKit/Source/WebCore/bindings/js/ReadableStreamDefaultController.cpp -o /Volumes/Data/EWS/WebKit/WebKitBuild/WebCore.build/Release/WebCore.build/Objects-normal/x86_64/ReadableStreamDefaultController.o

** BUILD FAILED **


The following build commands failed:
	CompileC /Volumes/Data/EWS/WebKit/WebKitBuild/WebCore.build/Release/WebCore.build/Objects-normal/x86_64/ProcessingInstruction.o dom/ProcessingInstruction.cpp normal x86_64 c++ com.apple.compilers.llvm.clang.1_0.compiler
(1 failure)

Full output: http://webkit-queues.webkit.org/results/2012070</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1226426</commentid>
    <comment_count>20</comment_count>
      <attachid>287953</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-09-05 07:28:29 -0700</bug_when>
    <thetext>Created attachment 287953
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1226459</commentid>
    <comment_count>21</comment_count>
      <attachid>287953</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-05 10:00:46 -0700</bug_when>
    <thetext>Comment on attachment 287953
Patch for landing

Clearing flags on attachment: 287953

Committed r205455: &lt;http://trac.webkit.org/changeset/205455&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1226460</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-05 10:00:50 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1226465</commentid>
    <comment_count>23</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-09-05 10:14:20 -0700</bug_when>
    <thetext>
&gt; &gt; Source/WebCore/css/CSSStyleSheet.h:56
&gt; &gt; +    enum class OriginCleanFlag {
&gt; &gt; +        True,
&gt; &gt; +        False,
&gt; &gt; +        Undefined
&gt; &gt; +    };
&gt; 
&gt; I’m not clear on why the third state is called &quot;undefined&quot;. I think the
&gt; third state may mean something more like &quot;based on the owning node&quot;?

I would call it Legacy.

&gt; It seems ugly that we have so many different versions of &quot;tri state value&quot;;
&gt; the most natural is Optional&lt;bool&gt;, &lt;wtf/TriState.h&gt; where the third state
&gt; is &quot;mixed&quot; rather than undefined. Since the point here is to make things
&gt; readable at the call site, it seems using an enum class is a good idea.

That was the idea, but it is only really useful at one calling place.
I moved to Optional&lt;bool&gt; which should migrate at some point to bool.

&gt; This kind of enum should be defined on one line; it’s not easier to read
&gt; vertical like this. Just takes up a lot of extra space.

OK

&gt; &gt; Source/WebCore/css/CSSStyleSheet.h:59
&gt; &gt; +    static Ref&lt;CSSStyleSheet&gt; create(Ref&lt;StyleSheetContents&gt;&amp;&amp;, Node* ownerNode, OriginCleanFlag = OriginCleanFlag::Undefined);
&gt; 
&gt; Since we have to touch every call site, can ownerNode be changed to a Node&amp;
&gt; instead of Node*?

Done

&gt; &gt; Source/WebCore/dom/ProcessingInstruction.cpp:196
&gt; &gt;      auto cssSheet = CSSStyleSheet::create(StyleSheetContents::create(href, parserContext), this);
&gt; &gt; -    cssSheet.get().setDisabled(m_alternate);
&gt; &gt; -    cssSheet.get().setTitle(m_title);
&gt; &gt; -    cssSheet.get().setMediaQueries(MediaQuerySet::create(m_media));
&gt; &gt; +    cssSheet-&gt;setDisabled(m_alternate);
&gt; &gt; +    cssSheet-&gt;setTitle(m_title);
&gt; &gt; +    cssSheet-&gt;setMediaQueries(MediaQuerySet::create(m_media));
&gt; 
&gt; Why are we touching this at all? I don’t think the change here is an
&gt; improvement. Although the &quot;-&gt;&quot; syntax is fewer characters, in the past we
&gt; have talked about possibly preferring the &quot;.get().&quot; syntax. Talk to Andreas
&gt; Kling if you want to know more.
&gt; 
&gt; But more importantly, this patch does not require any change here. Although
&gt; I can see you wanted to make this consistent with other call sites.

That was a left-over of another patch.
I removed this from the landed patch.

&gt; &gt; Source/WebCore/html/HTMLLinkElement.cpp:337
&gt; &gt; +    // FIXME: originClean should be turned to false except  set to true if fetch mode is CORS.
&gt; 
&gt; There is an extra space here before &quot;set&quot;.

OK

&gt; &gt; Source/WebCore/html/HTMLLinkElement.cpp:338
&gt; &gt; +    CSSStyleSheet::OriginCleanFlag originClean = CSSStyleSheet::OriginCleanFlag::Undefined;
&gt; 
&gt; I suggest using auto here.
&gt; 
&gt; &gt; Source/WebCore/html/HTMLLinkElement.cpp:340
&gt; &gt; +        originClean = cachedStyleSheet.isClean() ? CSSStyleSheet::OriginCleanFlag::True : CSSStyleSheet::OriginCleanFlag::False;
&gt; 
&gt; If we were using Optional&lt;bool&gt; this line would not need a ? : expression in
&gt; it!

Done

&gt; &gt; Source/WebCore/loader/SubresourceLoader.cpp:419
&gt; &gt; +    if (m_frame &amp;&amp; m_frame-&gt;document()) {
&gt; &gt; +        String errorMessage = &quot;Cross-origin request to &quot; + response.url().string() + &quot; denied by Cross-Origin Resource Sharing policy: &quot; + errorDescription;
&gt; &gt; +        m_frame-&gt;document()-&gt;addConsoleMessage(MessageSource::Security, MessageLevel::Error, errorMessage);
&gt; &gt; +    }
&gt; &gt; +    cancel(ResourceError(errorDomainWebKitInternal, 0, response.url(), errorDescription, ResourceError::Type::AccessControl));
&gt; &gt; +    return false;
&gt; 
&gt; I have the same complaint here that I had in another patch today; I am not
&gt; so happy with the &quot;checkXXX&quot; function having the side effect of doing a
&gt; cancel. I think we should consider finding some cleaner separation of
&gt; responsibilities here to make the code more readable. This function should
&gt; supply the decision that an error occurred and provide both the console
&gt; message and the error, but it would be nice for the actual side effects to
&gt; be more visible to the caller.

Yes, this part was removed from this patch as a previous one landed the needed functionality.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>281251</attachid>
            <date>2016-06-14 06:12:46 -0700</date>
            <delta_ts>2016-06-15 07:07:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158728-20160614151420.patch</filename>
            <type>text/plain</type>
            <size>30253</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAyMDM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmI5NTAwMTg1MzJkNTc5
NzkwOTc1NjYzMTU0MGZkZjk4NzNjYmFmZi4uZDA3NjZhMjcyYzJkZWZiNWEyNmMxNjY3MjcxMzM0
MzUyOWY1NDk1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDE2LTA2LTE0ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CisKKyAgICAgICAgQ2xlYW4g
Q1NTIHN0eWxlc2hlZXRzIHNob3VsZCBiZSBhY2Nlc3NpYmxlIGZyb20gSmF2YVNjcmlwdAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4NzI4CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNpbmcg
Y29tcHV0YXRpb24gb2YgdGhlIHJlc291cmNlIHJlc3BvbnNlIHR5cGUgYXMgcGVyIGZldGNoIHNw
ZWNpZmljYXRpb24uCisgICAgICAgIFRoaXMgY29tcHV0YXRpb24gaXMgZG9uZSBpbiBTdWJyZXNv
dXJjZUxvYWRlciBhdCBpbml0IHRpbWUgYW5kIGZvciBlYWNoIHJlZGlyZWN0aW9uLgorICAgICAg
ICBJZiBjcm9zcy1vcmlnaW4sIFN1YnJlc291cmNlTG9hZGVyIHdpbGwgc2V0IHRoZSByZXNwb25z
ZSB0eXBlIHRvIENvcnMgaWYgZmV0Y2ggbW9kZSBpcyBjb3JzCisgICAgICAgIG9yIHRvIE9wYXF1
ZSBpZiBmZXRjaCBtb2RlIGlzIG5vLWNvcnMuCisKKyAgICAgICAgTWFraW5nIHVzZSBvZiB0aGUg
cmVzb3VyY2UgcmVzcG9uc2UgdHlwZSB0byBldmFsdWF0ZSB3aGV0aGVyIHRvIG1ha2UgdGhlIENT
UyBzdHlsZXNoZWV0cyB2aXNpYmxlCisgICAgICAgIGZvciBzdHlsZXNoZWV0IGxpbmsgZWxlbWVu
dHMgYW5kIGZvciBzdHlsZXNoZWV0IHByb2Nlc3NpbmcgaW5zdHJ1Y3Rpb25zLgorICAgICAgICBJ
ZGVhbGx5LCB0aGUgb3JpZ2luIGZsYWcgc2hvdWxkIGJlIGEgYm9vbGVhbi4KKyAgICAgICAgVG8g
a2VlcCBiZWhhdmlvciBjb25zaXN0ZW50IGluIG5vbi1DT1JTIGNhc2VzLCB0aGUgZmxhZyBjYW4g
YmUgc2V0IHRvIHVuZGVmaW5lZCBpbiB3aGljaCBjYXNlIHRoZQorICAgICAgICBiZWhhdmlvciBy
ZW1haW5zIHRoZSBzYW1lIChjaGVja2luZyBvZiB0aGUgc3R5bGVzaGVldCBVUkwpLgorCisgICAg
ICAgIENvdmVyZWQgYnkgdXBkYXRlZCB0ZXN0cy4KKworICAgICAgICAqIGNzcy9DU1NTdHlsZVNo
ZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2hlZXQ6OmNyZWF0ZSk6IE1ha2Vz
IG9yaWdpbiBmbGFnIHVuZGVmaW5lZCBpZiBib29sZWFuIHBhcmFtZXRlciBpcyBub3QgcGFzc2Vk
LgorICAgICAgICBPdGhlcndpc2Ugb3JpZ2luIGZsYWcgaXMgc2V0IGFjY29yZGluZyBnaXZlbiBi
b29sZWFuIHZhbHVlLgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTaGVldDo6Y3JlYXRlSW5s
aW5lKTogTWFrZXMgb3JpZ2luIGZsYWcgc2V0IHRvIHRydWUuCisgICAgICAgIChXZWJDb3JlOjpD
U1NTdHlsZVNoZWV0OjpDU1NTdHlsZVNoZWV0KTogQWRkaW5nIG9yaWdpbiBmbGFnIGluaXRpYWxp
emF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTaGVldDo6Y2FuQWNjZXNzUnVsZXMp
OiBSZXR1cm5pbmcgYWNjb3JkaW5nIHRoZSBvcmlnaW4gZmxhZyBpZiBzZXQuCisgICAgICAgIFJl
dHVybmluZyBhcyBiZWZvcmUgaW4gY2FzZSB0aGUgZmxhZyBpcyB1bmRlZmluZWQuCisgICAgICAg
ICogY3NzL0NTU1N0eWxlU2hlZXQuaDogQWRkaW5nIG9yaWdpbiBjbGVhbiBmbGFnLgorICAgICAg
ICAqIGh0bWwvSFRNTExpbmtFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxMaW5r
RWxlbWVudDo6aW5pdGlhbGl6ZVN0eWxlU2hlZXQpOiBIZWxwZXIgcm91dGluZSB1c2VkIGluIHNl
dENTU1N0eWxlU2hlZXQuCisgICAgICAgIFNldHMgb3JpZ2luIGNsZWFuIGZsYWcgaWYgdGhlIHJl
c291cmNlIGlzIGNsZWFuLgorICAgICAgICAoV2ViQ29yZTo6SFRNTExpbmtFbGVtZW50OjpzZXRD
U1NTdHlsZVNoZWV0KTogTWFraW5nIHVzZSBvZiBpbml0aWFsaXplU3R5bGVTaGVldC4KKyAgICAg
ICAgKiBodG1sL0hUTUxMaW5rRWxlbWVudC5oOgorICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJj
ZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRlcjo6aW5pdCk6
IEdldHRpbmcgbV9vcmlnaW4gdG8gY29tcHV0ZSB0aGUgcmVzb3VyY2UgcmVzcG9uc2UgdHlwZS4K
KyAgICAgICAgKFdlYkNvcmU6OlN1YnJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3RJbnRl
cm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJl
c3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OlN1YnJlc291cmNlTG9hZGVyOjpjaGVja1JlZGly
ZWN0aW9uQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sKTogTWFya2luZyByZXNvdXJjZSBhcyBjcm9z
cy1vcmlnaW4KKyAgICAgICAgaWYgcmVkaXJlY3Rpb24gaXMgY3Jvc3Mtb3JpZ2luLgorICAgICAg
ICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6bG9h
ZCk6IENvbXB1dGluZyByZXNvdXJjZSBvcmlnaW4gZnJvbSB0aGUgcmVxdWVzdCBvciB0aGUgZG9j
dW1lbnQgbG9hZGVyIGl0c2VsZi4KKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpz
ZXRDcm9zc09yaWdpbik6IFNldCByZXNwb25zZSB0eXBlIGFzIG9wYXF1ZSBvciBjb3JzIGRlcGVu
ZGluZyBvbiBmZXRjaCBtb2RlLgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6Omlz
Q3Jvc3NPcmlnaW4pOiBSZXR1cm5zIHRydWUgaWYgcmVzcG9uc2UgdHlwZSBpcyBvcGFxdWUgb3Ig
Y29ycy4KKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjppc0NsZWFuKTogUmV0dXJu
cyB0cnVlIGlmIHJlc3BvbnNlIHR5cGUgaXMgbm90IG9wYXF1ZSBhbmQgbG9hZGluZyBpcyBvay4K
KyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpzZXRSZXNvdXJjZVRvUmV2YWxpZGF0
ZSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmg6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6c2V0T3BhcXVlUmVkaXJlY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkUmVzb3VyY2U6Om9yaWdpbik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdEJhc2U6Omhhc0hUVFBPcmlnaW4pOiBBZGRlZCB0byBkZXRlY3Qgd2hldGhlciBjb2RlIGNh
bGxpbmcgbG9hZGVycyBzZXQgdGhlIG9yaWdpbiBvZiB0aGUgcmVxdWVzdC4KKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdEJhc2U6OmNsZWFySFRUUE9yaWdpbik6CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmg6CisKIDIwMTYtMDYtMTMgIEdh
dmluICYgRWxsaWUgQmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+CiAKICAgICAg
ICAgUmVtb3ZlIGhhc1N0YXRpY1Byb3BlcnR5VGFibGUgKHBhcnQgMzogSlNMb2NhdGlvbjo6cHV0
RGVsZWdhdGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAKaW5kZXggOGY2YTMwYWRh
MDIzYzUwMWRlNTk2MTc1ZTQ3ZTY4NjUzZjM4NjI1YS4uMWMyNzAwZjJmM2E1OWM2M2E0MTlmMWYz
MTcwZjExODY4ODI3M2ZkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxl
U2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcApAQCAt
NzgsMTkgKzc4LDI0IEBAIHN0YXRpYyBib29sIGlzQWNjZXB0YWJsZUNTU1N0eWxlU2hlZXRQYXJl
bnQoTm9kZSogcGFyZW50Tm9kZSkKICNlbmRpZgogCiBSZWY8Q1NTU3R5bGVTaGVldD4gQ1NTU3R5
bGVTaGVldDo6Y3JlYXRlKFJlZjxTdHlsZVNoZWV0Q29udGVudHM+JiYgc2hlZXQsIENTU0ltcG9y
dFJ1bGUqIG93bmVyUnVsZSkKLXsgCit7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTU3R5
bGVTaGVldChXVEZNb3ZlKHNoZWV0KSwgb3duZXJSdWxlKSk7CiB9CiAKIFJlZjxDU1NTdHlsZVNo
ZWV0PiBDU1NTdHlsZVNoZWV0OjpjcmVhdGUoUmVmPFN0eWxlU2hlZXRDb250ZW50cz4mJiBzaGVl
dCwgTm9kZSogb3duZXJOb2RlKQoteyAKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NTdHls
ZVNoZWV0KFdURk1vdmUoc2hlZXQpLCBvd25lck5vZGUsIFRleHRQb3NpdGlvbjo6bWluaW11bVBv
c2l0aW9uKCksIGZhbHNlKSk7Cit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTU3R5bGVT
aGVldChXVEZNb3ZlKHNoZWV0KSwgb3duZXJOb2RlLCBUZXh0UG9zaXRpb246Om1pbmltdW1Qb3Np
dGlvbigpLCBmYWxzZSwgT3JpZ2luQ2xlYW5GbGFnOjpVbmRlZmluZWQpKTsKK30KKworUmVmPENT
U1N0eWxlU2hlZXQ+IENTU1N0eWxlU2hlZXQ6OmNyZWF0ZShSZWY8U3R5bGVTaGVldENvbnRlbnRz
PiYmIHNoZWV0LCBOb2RlKiBvd25lck5vZGUsIGJvb2wgaXNDbGVhbk9yaWdpbikKK3sKKyAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NTdHlsZVNoZWV0KFdURk1vdmUoc2hlZXQpLCBvd25lck5v
ZGUsIFRleHRQb3NpdGlvbjo6bWluaW11bVBvc2l0aW9uKCksIGZhbHNlLCBpc0NsZWFuT3JpZ2lu
ID8gT3JpZ2luQ2xlYW5GbGFnOjpUcnVlIDogT3JpZ2luQ2xlYW5GbGFnOjpGYWxzZSkpOwogfQog
CiBSZWY8Q1NTU3R5bGVTaGVldD4gQ1NTU3R5bGVTaGVldDo6Y3JlYXRlSW5saW5lKE5vZGUmIG93
bmVyTm9kZSwgY29uc3QgVVJMJiBiYXNlVVJMLCBjb25zdCBUZXh0UG9zaXRpb24mIHN0YXJ0UG9z
aXRpb24sIGNvbnN0IFN0cmluZyYgZW5jb2RpbmcpCiB7CiAgICAgQ1NTUGFyc2VyQ29udGV4dCBw
YXJzZXJDb250ZXh0KG93bmVyTm9kZS5kb2N1bWVudCgpLCBiYXNlVVJMLCBlbmNvZGluZyk7Ci0g
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTU3R5bGVTaGVldChTdHlsZVNoZWV0Q29udGVudHM6
OmNyZWF0ZShiYXNlVVJMLnN0cmluZygpLCBwYXJzZXJDb250ZXh0KSwgJm93bmVyTm9kZSwgc3Rh
cnRQb3NpdGlvbiwgdHJ1ZSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENTU1N0eWxlU2hl
ZXQoU3R5bGVTaGVldENvbnRlbnRzOjpjcmVhdGUoYmFzZVVSTC5zdHJpbmcoKSwgcGFyc2VyQ29u
dGV4dCksICZvd25lck5vZGUsIHN0YXJ0UG9zaXRpb24sIHRydWUsIE9yaWdpbkNsZWFuRmxhZzo6
VHJ1ZSkpOwogfQogCiBDU1NTdHlsZVNoZWV0OjpDU1NTdHlsZVNoZWV0KFJlZjxTdHlsZVNoZWV0
Q29udGVudHM+JiYgY29udGVudHMsIENTU0ltcG9ydFJ1bGUqIG93bmVyUnVsZSkKQEAgLTEwNSwx
MSArMTEwLDEyIEBAIENTU1N0eWxlU2hlZXQ6OkNTU1N0eWxlU2hlZXQoUmVmPFN0eWxlU2hlZXRD
b250ZW50cz4mJiBjb250ZW50cywgQ1NTSW1wb3J0UnVsZSoKICAgICBtX2NvbnRlbnRzLT5yZWdp
c3RlckNsaWVudCh0aGlzKTsKIH0KIAotQ1NTU3R5bGVTaGVldDo6Q1NTU3R5bGVTaGVldChSZWY8
U3R5bGVTaGVldENvbnRlbnRzPiYmIGNvbnRlbnRzLCBOb2RlKiBvd25lck5vZGUsIGNvbnN0IFRl
eHRQb3NpdGlvbiYgc3RhcnRQb3NpdGlvbiwgYm9vbCBpc0lubGluZVN0eWxlc2hlZXQpCitDU1NT
dHlsZVNoZWV0OjpDU1NTdHlsZVNoZWV0KFJlZjxTdHlsZVNoZWV0Q29udGVudHM+JiYgY29udGVu
dHMsIE5vZGUqIG93bmVyTm9kZSwgY29uc3QgVGV4dFBvc2l0aW9uJiBzdGFydFBvc2l0aW9uLCBi
b29sIGlzSW5saW5lU3R5bGVzaGVldCwgT3JpZ2luQ2xlYW5GbGFnIGZsYWcpCiAgICAgOiBtX2Nv
bnRlbnRzKFdURk1vdmUoY29udGVudHMpKQogICAgICwgbV9pc0lubGluZVN0eWxlc2hlZXQoaXNJ
bmxpbmVTdHlsZXNoZWV0KQogICAgICwgbV9pc0Rpc2FibGVkKGZhbHNlKQogICAgICwgbV9tdXRh
dGVkUnVsZXMoZmFsc2UpCisgICAgLCBtX2lzT3JpZ2luQ2xlYW4oZmxhZykKICAgICAsIG1fb3du
ZXJOb2RlKG93bmVyTm9kZSkKICAgICAsIG1fb3duZXJSdWxlKDApCiAgICAgLCBtX3N0YXJ0UG9z
aXRpb24oc3RhcnRQb3NpdGlvbikKQEAgLTI1OCwxNyArMjY0LDE2IEBAIENTU1J1bGUqIENTU1N0
eWxlU2hlZXQ6Oml0ZW0odW5zaWduZWQgaW5kZXgpCiAKIGJvb2wgQ1NTU3R5bGVTaGVldDo6Y2Fu
QWNjZXNzUnVsZXMoKSBjb25zdAogewotICAgIGlmIChtX2lzSW5saW5lU3R5bGVzaGVldCkKLSAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKG1faXNPcmlnaW5DbGVhbiAhPSBPcmlnaW5DbGVh
bkZsYWc6OlVuZGVmaW5lZCkKKyAgICAgICAgcmV0dXJuIG1faXNPcmlnaW5DbGVhbiA9PSBPcmln
aW5DbGVhbkZsYWc6OlRydWU7CisKICAgICBVUkwgYmFzZVVSTCA9IG1fY29udGVudHMtPmJhc2VV
UkwoKTsKICAgICBpZiAoYmFzZVVSTC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG93bmVyRG9jdW1lbnQoKTsKICAgICBpZiAoIWRvY3Vt
ZW50KQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAoZG9jdW1lbnQtPnNlY3VyaXR5T3Jp
Z2luKCktPmNhblJlcXVlc3QoYmFzZVVSTCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIHJl
dHVybiBmYWxzZTsKKyAgICByZXR1cm4gZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCktPmNhblJl
cXVlc3QoYmFzZVVSTCk7CiB9CiAKIFJlZlB0cjxDU1NSdWxlTGlzdD4gQ1NTU3R5bGVTaGVldDo6
cnVsZXMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuaCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmgKaW5kZXggYzBlNjdlMWY1YjU5ZDRi
NTM3YThiZjUzYWRmMDA4ODM4Nzg5OTNmYi4uYjdiZGIwNzFiNGNjMTNlYThhNmI4M2EwOTEwN2Nh
YzExNTJmNTVjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5oCkBAIC01MSw2ICs1MSw3
IEBAIGNsYXNzIENTU1N0eWxlU2hlZXQgZmluYWwgOiBwdWJsaWMgU3R5bGVTaGVldCB7CiBwdWJs
aWM6CiAgICAgc3RhdGljIFJlZjxDU1NTdHlsZVNoZWV0PiBjcmVhdGUoUmVmPFN0eWxlU2hlZXRD
b250ZW50cz4mJiwgQ1NTSW1wb3J0UnVsZSogb3duZXJSdWxlID0gMCk7CiAgICAgc3RhdGljIFJl
ZjxDU1NTdHlsZVNoZWV0PiBjcmVhdGUoUmVmPFN0eWxlU2hlZXRDb250ZW50cz4mJiwgTm9kZSog
b3duZXJOb2RlKTsKKyAgICBzdGF0aWMgUmVmPENTU1N0eWxlU2hlZXQ+IGNyZWF0ZShSZWY8U3R5
bGVTaGVldENvbnRlbnRzPiYmLCBOb2RlKiBvd25lck5vZGUsIGJvb2wpOwogICAgIHN0YXRpYyBS
ZWY8Q1NTU3R5bGVTaGVldD4gY3JlYXRlSW5saW5lKE5vZGUmLCBjb25zdCBVUkwmLCBjb25zdCBU
ZXh0UG9zaXRpb24mIHN0YXJ0UG9zaXRpb24gPSBUZXh0UG9zaXRpb246Om1pbmltdW1Qb3NpdGlv
bigpLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nID0gU3RyaW5nKCkpOwogCiAgICAgdmlydHVhbCB+
Q1NTU3R5bGVTaGVldCgpOwpAQCAtMTIzLDE4ICsxMjQsMjUgQEAgcHVibGljOgogICAgIHZvaWQg
ZGV0YWNoRnJvbURvY3VtZW50KCkgeyBtX293bmVyTm9kZSA9IG51bGxwdHI7IH0KIAogcHJpdmF0
ZToKKyAgICBlbnVtIGNsYXNzIE9yaWdpbkNsZWFuRmxhZyB7CisgICAgICAgIFRydWUsCisgICAg
ICAgIEZhbHNlLAorICAgICAgICBVbmRlZmluZWQKKyAgICB9OworCiAgICAgQ1NTU3R5bGVTaGVl
dChSZWY8U3R5bGVTaGVldENvbnRlbnRzPiYmLCBDU1NJbXBvcnRSdWxlKiBvd25lclJ1bGUpOwot
ICAgIENTU1N0eWxlU2hlZXQoUmVmPFN0eWxlU2hlZXRDb250ZW50cz4mJiwgTm9kZSogb3duZXJO
b2RlLCBjb25zdCBUZXh0UG9zaXRpb24mIHN0YXJ0UG9zaXRpb24sIGJvb2wgaXNJbmxpbmVTdHls
ZXNoZWV0KTsKKyAgICBDU1NTdHlsZVNoZWV0KFJlZjxTdHlsZVNoZWV0Q29udGVudHM+JiYsIE5v
ZGUqIG93bmVyTm9kZSwgY29uc3QgVGV4dFBvc2l0aW9uJiBzdGFydFBvc2l0aW9uLCBib29sIGlz
SW5saW5lU3R5bGVzaGVldCwgT3JpZ2luQ2xlYW5GbGFnKTsKIAogICAgIGJvb2wgaXNDU1NTdHls
ZVNoZWV0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIFN0cmluZyB0eXBl
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gQVNDSUlMaXRlcmFsKCJ0ZXh0L2NzcyIpOyB9CiAK
ICAgICBib29sIGNhbkFjY2Vzc1J1bGVzKCkgY29uc3Q7Ci0gICAgCisKICAgICBSZWY8U3R5bGVT
aGVldENvbnRlbnRzPiBtX2NvbnRlbnRzOwogICAgIGJvb2wgbV9pc0lubGluZVN0eWxlc2hlZXQ7
CiAgICAgYm9vbCBtX2lzRGlzYWJsZWQ7CiAgICAgYm9vbCBtX211dGF0ZWRSdWxlczsKKyAgICBP
cmlnaW5DbGVhbkZsYWcgbV9pc09yaWdpbkNsZWFuIHsgT3JpZ2luQ2xlYW5GbGFnOjpVbmRlZmlu
ZWQgfTsKICAgICBTdHJpbmcgbV90aXRsZTsKICAgICBSZWZQdHI8TWVkaWFRdWVyeVNldD4gbV9t
ZWRpYVF1ZXJpZXM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5n
SW5zdHJ1Y3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlv
bi5jcHAKaW5kZXggMjgwMzMxNTlmYWNhZmNjZDNmYjk4ZjViOWY5ZTRlMmEzMTA1MTgzYS4uZmU4
ZjQ5MTJjODdkOGE2ODM4YTljOWMxNTJlOWQ3YTEwNjhlMGExMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAKQEAgLTE5MCwxMCArMTkwLDEwIEBAIHZv
aWQgUHJvY2Vzc2luZ0luc3RydWN0aW9uOjpzZXRDU1NTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYg
aHJlZiwgY29uc3QgVVJMJiBiYXNlCiAgICAgQVNTRVJUKG1faXNDU1MpOwogICAgIENTU1BhcnNl
ckNvbnRleHQgcGFyc2VyQ29udGV4dChkb2N1bWVudCgpLCBiYXNlVVJMLCBjaGFyc2V0KTsKIAot
ICAgIGF1dG8gY3NzU2hlZXQgPSBDU1NTdHlsZVNoZWV0OjpjcmVhdGUoU3R5bGVTaGVldENvbnRl
bnRzOjpjcmVhdGUoaHJlZiwgcGFyc2VyQ29udGV4dCksIHRoaXMpOwotICAgIGNzc1NoZWV0Lmdl
dCgpLnNldERpc2FibGVkKG1fYWx0ZXJuYXRlKTsKLSAgICBjc3NTaGVldC5nZXQoKS5zZXRUaXRs
ZShtX3RpdGxlKTsKLSAgICBjc3NTaGVldC5nZXQoKS5zZXRNZWRpYVF1ZXJpZXMoTWVkaWFRdWVy
eVNldDo6Y3JlYXRlKG1fbWVkaWEpKTsKKyAgICBhdXRvIGNzc1NoZWV0ID0gQ1NTU3R5bGVTaGVl
dDo6Y3JlYXRlKFN0eWxlU2hlZXRDb250ZW50czo6Y3JlYXRlKGhyZWYsIHBhcnNlckNvbnRleHQp
LCB0aGlzLCBzaGVldC0+aXNDbGVhbigpKTsKKyAgICBjc3NTaGVldC0+c2V0RGlzYWJsZWQobV9h
bHRlcm5hdGUpOworICAgIGNzc1NoZWV0LT5zZXRUaXRsZShtX3RpdGxlKTsKKyAgICBjc3NTaGVl
dC0+c2V0TWVkaWFRdWVyaWVzKE1lZGlhUXVlcnlTZXQ6OmNyZWF0ZShtX21lZGlhKSk7CiAKICAg
ICBtX3NoZWV0ID0gV1RGTW92ZShjc3NTaGVldCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExp
bmtFbGVtZW50LmNwcAppbmRleCA4MzQyNGMwMjgzNjgzZjUxOTFlNTYyZGJhNDQyZjJkNjRlYThh
MDhhLi44ZmI1MTk4MmFmMzYyMjMyMzYxNzRiYzk2MzczZDlkNmI5NzUzM2U1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCkBAIC0zMzEsNiArMzMxLDEzIEBAIHZvaWQg
SFRNTExpbmtFbGVtZW50OjpmaW5pc2hQYXJzaW5nQ2hpbGRyZW4oKQogICAgIEhUTUxFbGVtZW50
OjpmaW5pc2hQYXJzaW5nQ2hpbGRyZW4oKTsKIH0KIAordm9pZCBIVE1MTGlua0VsZW1lbnQ6Omlu
aXRpYWxpemVTdHlsZVNoZWV0KFJlZjxTdHlsZVNoZWV0Q29udGVudHM+JiYgc3R5bGVTaGVldCwg
Y29uc3QgQ2FjaGVkQ1NTU3R5bGVTaGVldCYgY2FjaGVkU3R5bGVTaGVldCkKK3sKKyAgICBtX3No
ZWV0ID0gQ1NTU3R5bGVTaGVldDo6Y3JlYXRlKFdURk1vdmUoc3R5bGVTaGVldCksIHRoaXMsIGNh
Y2hlZFN0eWxlU2hlZXQuaXNDbGVhbigpKTsKKyAgICBtX3NoZWV0LT5zZXRNZWRpYVF1ZXJpZXMo
TWVkaWFRdWVyeVNldDo6Y3JlYXRlQWxsb3dpbmdEZXNjcmlwdGlvblN5bnRheChtX21lZGlhKSk7
CisgICAgbV9zaGVldC0+c2V0VGl0bGUodGl0bGUoKSk7Cit9CisKIHZvaWQgSFRNTExpbmtFbGVt
ZW50OjpzZXRDU1NTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgaHJlZiwgY29uc3QgVVJMJiBiYXNl
VVJMLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQsIGNvbnN0IENhY2hlZENTU1N0eWxlU2hlZXQqIGNh
Y2hlZFN0eWxlU2hlZXQpCiB7CiAgICAgaWYgKCFpbkRvY3VtZW50KCkpIHsKQEAgLTM1MCwxMCAr
MzU3LDcgQEAgdm9pZCBIVE1MTGlua0VsZW1lbnQ6OnNldENTU1N0eWxlU2hlZXQoY29uc3QgU3Ry
aW5nJiBocmVmLCBjb25zdCBVUkwmIGJhc2VVUkwsIGMKICAgICBpZiAoUmVmUHRyPFN0eWxlU2hl
ZXRDb250ZW50cz4gcmVzdG9yZWRTaGVldCA9IGNvbnN0X2Nhc3Q8Q2FjaGVkQ1NTU3R5bGVTaGVl
dCo+KGNhY2hlZFN0eWxlU2hlZXQpLT5yZXN0b3JlUGFyc2VkU3R5bGVTaGVldChwYXJzZXJDb250
ZXh0LCBjYWNoZVBvbGljeSkpIHsKICAgICAgICAgQVNTRVJUKHJlc3RvcmVkU2hlZXQtPmlzQ2Fj
aGVhYmxlKCkpOwogICAgICAgICBBU1NFUlQoIXJlc3RvcmVkU2hlZXQtPmlzTG9hZGluZygpKTsK
LQotICAgICAgICBtX3NoZWV0ID0gQ1NTU3R5bGVTaGVldDo6Y3JlYXRlKHJlc3RvcmVkU2hlZXQu
cmVsZWFzZU5vbk51bGwoKSwgdGhpcyk7Ci0gICAgICAgIG1fc2hlZXQtPnNldE1lZGlhUXVlcmll
cyhNZWRpYVF1ZXJ5U2V0OjpjcmVhdGVBbGxvd2luZ0Rlc2NyaXB0aW9uU3ludGF4KG1fbWVkaWEp
KTsKLSAgICAgICAgbV9zaGVldC0+c2V0VGl0bGUodGl0bGUoKSk7CisgICAgICAgIGluaXRpYWxp
emVTdHlsZVNoZWV0KHJlc3RvcmVkU2hlZXQucmVsZWFzZU5vbk51bGwoKSwgKmNhY2hlZFN0eWxl
U2hlZXQpOwogCiAgICAgICAgIG1fbG9hZGluZyA9IGZhbHNlOwogICAgICAgICBzaGVldExvYWRl
ZCgpOwpAQCAtMzYyLDkgKzM2Niw3IEBAIHZvaWQgSFRNTExpbmtFbGVtZW50OjpzZXRDU1NTdHls
ZVNoZWV0KGNvbnN0IFN0cmluZyYgaHJlZiwgY29uc3QgVVJMJiBiYXNlVVJMLCBjCiAgICAgfQog
CiAgICAgYXV0byBzdHlsZVNoZWV0ID0gU3R5bGVTaGVldENvbnRlbnRzOjpjcmVhdGUoaHJlZiwg
cGFyc2VyQ29udGV4dCk7Ci0gICAgbV9zaGVldCA9IENTU1N0eWxlU2hlZXQ6OmNyZWF0ZShzdHls
ZVNoZWV0LmNvcHlSZWYoKSwgdGhpcyk7Ci0gICAgbV9zaGVldC0+c2V0TWVkaWFRdWVyaWVzKE1l
ZGlhUXVlcnlTZXQ6OmNyZWF0ZUFsbG93aW5nRGVzY3JpcHRpb25TeW50YXgobV9tZWRpYSkpOwot
ICAgIG1fc2hlZXQtPnNldFRpdGxlKHRpdGxlKCkpOworICAgIGluaXRpYWxpemVTdHlsZVNoZWV0
KHN0eWxlU2hlZXQuY29weVJlZigpLCAqY2FjaGVkU3R5bGVTaGVldCk7CiAKICAgICBzdHlsZVNo
ZWV0LmdldCgpLnBhcnNlQXV0aG9yU3R5bGVTaGVldChjYWNoZWRTdHlsZVNoZWV0LCBkb2N1bWVu
dCgpLnNlY3VyaXR5T3JpZ2luKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxMaW5rRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQu
aAppbmRleCAxYjFiMWNlYzhkZTQ3ZTE2YWQ0ZGM5Yzk1Mzk0OTAyMjJkMmM4NDJmLi4yMjljZjk2
ODEyZGFkN2U5ZjVhZDYwNmM0YmI5OWI3N2M2NzRjNDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TExpbmtFbGVtZW50LmgKQEAgLTg2LDYgKzg2LDggQEAgcHJpdmF0ZToKICAgICBJbnNlcnRpb25O
b3RpZmljYXRpb25SZXF1ZXN0IGluc2VydGVkSW50byhDb250YWluZXJOb2RlJikgb3ZlcnJpZGU7
CiAgICAgdm9pZCByZW1vdmVkRnJvbShDb250YWluZXJOb2RlJikgb3ZlcnJpZGU7CiAKKyAgICB2
b2lkIGluaXRpYWxpemVTdHlsZVNoZWV0KFJlZjxTdHlsZVNoZWV0Q29udGVudHM+JiYsIGNvbnN0
IENhY2hlZENTU1N0eWxlU2hlZXQmKTsKKwogICAgIC8vIGZyb20gQ2FjaGVkUmVzb3VyY2VDbGll
bnQKICAgICB2b2lkIHNldENTU1N0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiBocmVmLCBjb25zdCBV
UkwmIGJhc2VVUkwsIGNvbnN0IFN0cmluZyYgY2hhcnNldCwgY29uc3QgQ2FjaGVkQ1NTU3R5bGVT
aGVldCogc2hlZXQpIG92ZXJyaWRlOwogICAgIGJvb2wgc2hlZXRMb2FkZWQoKSBvdmVycmlkZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDM4NmVj
MDczYjdkZGNmN2MxNmJjZDVjNGViYzQ0MDRkMzQwZjQ2ODIuLjIzNzk0MzY0NGM5OTFjNDAyNjk3
YTkyOTNjYmUyOTAwZDVlYTk1NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9T
dWJyZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291
cmNlTG9hZGVyLmNwcApAQCAtNiwxMyArNiwxMyBAQAogICogYXJlIG1ldDoKICAqCiAgKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuIAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KICAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAogICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKKyAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgogICog
My4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1l
cyBvZgogICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIAorICogICAgIGZyb20gdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KICAqCiAg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JT
ICJBUyBJUyIgQU5EIEFOWQogICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRApAQCAtMTUxLDggKzE1MSwxMSBA
QCBib29sIFN1YnJlc291cmNlTG9hZGVyOjppbml0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCkKICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1NTYzMy4KICAgICAvLyBTdWJyZXNvdXJjZUxvYWRlciBjb3VsZCB1c2UgdGhlIGRvY3Vt
ZW50IG9yaWdpbiBhcyBhIGRlZmF1bHQgYW5kIHNldCBQb3RlbnRpYWxseUNyb3NzT3JpZ2luRW5h
YmxlZCByZXF1ZXN0cyBhY2NvcmRpbmdseS4KICAgICAvLyBUaGlzIHdvdWxkIHNpbXBsaWZ5IHJl
c291cmNlIGxvYWRlciB1c2VycyBhcyB0aGV5IHdvdWxkIG9ubHkgbmVlZCB0byBzZXQgdGhlIHBv
bGljeSB0byBQb3RlbnRpYWxseUNyb3NzT3JpZ2luRW5hYmxlZC4KLSAgICBpZiAob3B0aW9ucygp
LnJlcXVlc3RPcmlnaW5Qb2xpY3koKSA9PSBQb3RlbnRpYWxseUNyb3NzT3JpZ2luRW5hYmxlZCkK
LSAgICAgICAgbV9vcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhyZXF1
ZXN0Lmh0dHBPcmlnaW4oKSk7CisKKyAgICBtX29yaWdpbiA9IG1fcmVzb3VyY2UtPm9yaWdpbigp
OworICAgIC8vIGh0dHBzOi8vZmV0Y2guc3BlYy53aGF0d2cub3JnLyNtYWluLWZldGNoLCBzdGVw
IDExLCBkYXRhIFVSTCBoZXJlIGlzIGNvbnNpZGVyZWQgbm90IGNyb3NzIG9yaWdpbi4KKyAgICBp
ZiAoIXJlcXVlc3QudXJsKCkucHJvdG9jb2xJc0RhdGEoKSAmJiBtX29yaWdpbiAmJiAhbV9vcmln
aW4tPmNhblJlcXVlc3QocmVxdWVzdC51cmwoKSkpCisgICAgICAgIG1fcmVzb3VyY2UtPnNldENy
b3NzT3JpZ2luKCk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTIwMiw3ICsyMDUsNyBAQCB2
b2lkIFN1YnJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbChSZXNvdXJjZVJl
cXVlc3QmIG5ld1JlcXVlc3QsIGNvbgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAK
LSAgICAgICAgaWYgKG9wdGlvbnMoKS5yZXF1ZXN0T3JpZ2luUG9saWN5KCkgPT0gUG90ZW50aWFs
bHlDcm9zc09yaWdpbkVuYWJsZWQgJiYgIWNoZWNrQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sKHJl
cXVlc3QoKSwgcmVkaXJlY3RSZXNwb25zZSwgbmV3UmVxdWVzdCkpIHsKKyAgICAgICAgaWYgKCFj
aGVja1JlZGlyZWN0aW9uQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sKHJlcXVlc3QoKSwgcmVkaXJl
Y3RSZXNwb25zZSwgbmV3UmVxdWVzdCkpIHsKICAgICAgICAgICAgIGNhbmNlbCgpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0yOTUsOCArMjk4LDggQEAgdm9pZCBTdWJyZXNv
dXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJl
c3BvbnNlKQogICAgICAgICAvLyBUaGUgcmVzb3VyY2UgZGF0YSB3aWxsIGNoYW5nZSBhcyB0aGUg
bmV4dCBwYXJ0IGlzIGxvYWRlZCwgc28gd2UgbmVlZCB0byBtYWtlIGEgY29weS4KICAgICAgICAg
bV9yZXNvdXJjZS0+ZmluaXNoTG9hZGluZyhidWZmZXItPmNvcHkoKS5wdHIoKSk7CiAgICAgICAg
IGNsZWFyUmVzb3VyY2VEYXRhKCk7Ci0gICAgICAgIC8vIFNpbmNlIGEgc3VicmVzb3VyY2UgbG9h
ZGVyIGRvZXMgbm90IGxvYWQgbXVsdGlwYXJ0IHNlY3Rpb25zIHByb2dyZXNzaXZlbHksIGRhdGEg
d2FzIGRlbGl2ZXJlZCB0byB0aGUgbG9hZGVyIGFsbCBhdCBvbmNlLiAgICAgICAgCi0gICAgICAg
IC8vIEFmdGVyIHRoZSBmaXJzdCBtdWx0aXBhcnQgc2VjdGlvbiBpcyBjb21wbGV0ZSwgc2lnbmFs
IHRvIGRlbGVnYXRlcyB0aGF0IHRoaXMgbG9hZCBpcyAiZmluaXNoZWQiIAorICAgICAgICAvLyBT
aW5jZSBhIHN1YnJlc291cmNlIGxvYWRlciBkb2VzIG5vdCBsb2FkIG11bHRpcGFydCBzZWN0aW9u
cyBwcm9ncmVzc2l2ZWx5LCBkYXRhIHdhcyBkZWxpdmVyZWQgdG8gdGhlIGxvYWRlciBhbGwgYXQg
b25jZS4KKyAgICAgICAgLy8gQWZ0ZXIgdGhlIGZpcnN0IG11bHRpcGFydCBzZWN0aW9uIGlzIGNv
bXBsZXRlLCBzaWduYWwgdG8gZGVsZWdhdGVzIHRoYXQgdGhpcyBsb2FkIGlzICJmaW5pc2hlZCIK
ICAgICAgICAgbV9kb2N1bWVudExvYWRlci0+c3VicmVzb3VyY2VMb2FkZXJGaW5pc2hlZExvYWRp
bmdPbmVQYXJ0KHRoaXMpOwogICAgICAgICBkaWRGaW5pc2hMb2FkaW5nT25lUGFydCgwKTsKICAg
ICB9CkBAIC0zOTYsMTEgKzM5OSwxNSBAQCBzdGF0aWMgdm9pZCBsb2dSZXNvdXJjZUxvYWRlZChG
cmFtZSogZnJhbWUsIENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUpCiAgICAgZnJhbWUtPnBhZ2Uo
KS0+ZGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQoKS5sb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1
ZShEaWFnbm9zdGljTG9nZ2luZ0tleXM6OnJlc291cmNlS2V5KCksIERpYWdub3N0aWNMb2dnaW5n
S2V5czo6bG9hZGVkS2V5KCksIHJlc291cmNlVHlwZSwgU2hvdWxkU2FtcGxlOjpZZXMpOwogfQog
Ci1ib29sIFN1YnJlc291cmNlTG9hZGVyOjpjaGVja0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbChj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHByZXZpb3VzUmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVkaXJlY3RSZXNwb25zZSwgUmVzb3VyY2VSZXF1ZXN0JiBuZXdSZXF1ZXN0KQorYm9v
bCBTdWJyZXNvdXJjZUxvYWRlcjo6Y2hlY2tSZWRpcmVjdGlvbkNyb3NzT3JpZ2luQWNjZXNzQ29u
dHJvbChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHByZXZpb3VzUmVxdWVzdCwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgUmVzb3VyY2VSZXF1ZXN0JiBuZXdSZXF1ZXN0
KQogewotICAgIGlmIChtX29yaWdpbi0+Y2FuUmVxdWVzdChuZXdSZXF1ZXN0LnVybCgpKSkKKyAg
ICBpZiAoIShtX29yaWdpbiAmJiBtX29yaWdpbi0+Y2FuUmVxdWVzdChuZXdSZXF1ZXN0LnVybCgp
KSkpCisgICAgICAgIG1fcmVzb3VyY2UtPnNldENyb3NzT3JpZ2luKCk7CisKKyAgICBpZiAob3B0
aW9ucygpLnJlcXVlc3RPcmlnaW5Qb2xpY3koKSAhPSBQb3RlbnRpYWxseUNyb3NzT3JpZ2luRW5h
YmxlZCB8fCAhbV9yZXNvdXJjZS0+aXNDcm9zc09yaWdpbigpKQogICAgICAgICByZXR1cm4gdHJ1
ZTsKIAorICAgIEFTU0VSVChtX29yaWdpbik7CiAgICAgU3RyaW5nIGVycm9yRGVzY3JpcHRpb247
CiAgICAgYm9vbCByZXNwb25zZVBhc3Nlc0NPUlMgPSBtX29yaWdpbi0+Y2FuUmVxdWVzdChwcmV2
aW91c1JlcXVlc3QudXJsKCkpCiAgICAgICAgIHx8IHBhc3Nlc0FjY2Vzc0NvbnRyb2xDaGVjayhy
ZWRpcmVjdFJlc3BvbnNlLCBvcHRpb25zKCkuYWxsb3dDcmVkZW50aWFscygpLCBtX29yaWdpbi5n
ZXQoKSwgZXJyb3JEZXNjcmlwdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvU3VicmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJj
ZUxvYWRlci5oCmluZGV4IDVlYzczMTFkMDljZjFkMzBkYzI1NTA0NWNmNGI5YjU4MGNlOWZkZTgu
LjMxYzRiM2VhMDU2Njg2NDAwYWI1YzIwZDkxNDEyZTliMjVmYzk5ZGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCkBAIC02LDEzICs2LDEzIEBACiAgKiBhcmUg
bWV0OgogICoKICAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgogICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CiAgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uIAorICogICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCiAgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBw
bGUiKSBub3IgdGhlIG5hbWVzIG9mCiAgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gCisg
KiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgogICoKICAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCiAgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECkBA
IC05MSw3ICs5MSw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIGJvb2wgY2hlY2tGb3JIVFRQ
U3RhdHVzQ29kZUVycm9yKCk7Ci0gICAgYm9vbCBjaGVja0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJv
bChjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3Vy
Y2VSZXF1ZXN0JiBuZXdSZXF1ZXN0KTsKKyAgICBib29sIGNoZWNrUmVkaXJlY3Rpb25Dcm9zc09y
aWdpbkFjY2Vzc0NvbnRyb2woY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYsIFJlc291cmNlUmVxdWVzdCYgbmV3UmVxdWVzdCk7CiAKICAgICB2b2lkIGRpZFJl
Y2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgY2hhciosIGludCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4m
JiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAppbmRleCA1NTcz
YzRkZWVjYjc3ZTE1NTEwNThiYTZiMDg5MzlhYThhNGZiMjcxLi45ZTBlZTcxOTU4NTdkZDdiMTk4
YTViNzY3ZDUzMDAyMGVmMDc0OWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZS5jcHAKQEAgLTI3NSw4ICsyNzUsMTQgQEAgdm9pZCBDYWNoZWRSZXNv
dXJjZTo6bG9hZChDYWNoZWRSZXNvdXJjZUxvYWRlciYgY2FjaGVkUmVzb3VyY2VMb2FkZXIsIGNv
bnN0IFJlc28KICNlbmRpZgogICAgIG1fcmVzb3VyY2VSZXF1ZXN0LnNldFByaW9yaXR5KGxvYWRQ
cmlvcml0eSgpKTsKIAotICAgIGlmICh0eXBlKCkgIT0gTWFpblJlc291cmNlKQorICAgIGlmICh0
eXBlKCkgIT0gTWFpblJlc291cmNlKSB7CisgICAgICAgIGlmIChtX3Jlc291cmNlUmVxdWVzdC5o
YXNIVFRQT3JpZ2luKCkgfHwgbV9vcHRpb25zLnJlcXVlc3RPcmlnaW5Qb2xpY3koKSA9PSBQb3Rl
bnRpYWxseUNyb3NzT3JpZ2luRW5hYmxlZCkKKyAgICAgICAgICAgIG1fb3JpZ2luID0gU2VjdXJp
dHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcobV9yZXNvdXJjZVJlcXVlc3QuaHR0cE9yaWdpbigp
KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9vcmlnaW4gPSBjYWNoZWRSZXNvdXJjZUxv
YWRlci5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpOworICAgICAgICBBU1NFUlQobV9vcmln
aW4pOwogICAgICAgICBhZGRBZGRpdGlvbmFsUmVxdWVzdEhlYWRlcnMoY2FjaGVkUmVzb3VyY2VM
b2FkZXIpOworICAgIH0KIAogICAgIC8vIEZJWE1FOiBJdCdzIHVuZm9ydHVuYXRlIHRoYXQgdGhl
IGNhY2hlIGxheWVyIGFuZCBiZWxvdyBnZXQgdG8ga25vdyBhbnl0aGluZyBhYm91dCBmcmFnbWVu
dCBpZGVudGlmaWVycy4KICAgICAvLyBXZSBzaG91bGQgbG9vayBpbnRvIHJlbW92aW5nIHRoZSBl
eHBlY3RhdGlvbiBvZiB0aGF0IGtub3dsZWRnZSBmcm9tIHRoZSBwbGF0Zm9ybSBuZXR3b3JrIHN0
YWNrcy4KQEAgLTM2Miw2ICszNjgsMjUgQEAgYm9vbCBDYWNoZWRSZXNvdXJjZTo6cGFzc2VzU2Ft
ZU9yaWdpblBvbGljeUNoZWNrKFNlY3VyaXR5T3JpZ2luJiBzZWN1cml0eU9yaWdpbikKICAgICBy
ZXR1cm4gcGFzc2VzQWNjZXNzQ29udHJvbENoZWNrKHNlY3VyaXR5T3JpZ2luKTsKIH0KIAordm9p
ZCBDYWNoZWRSZXNvdXJjZTo6c2V0Q3Jvc3NPcmlnaW4oKQoreworICAgIEFTU0VSVChtX29wdGlv
bnMucmVxdWVzdE9yaWdpblBvbGljeSgpICE9IFJlc3RyaWN0VG9TYW1lT3JpZ2luKTsKKyAgICBt
X3Jlc3BvbnNlVHlwZSA9IChtX29wdGlvbnMucmVxdWVzdE9yaWdpblBvbGljeSgpID09IFBvdGVu
dGlhbGx5Q3Jvc3NPcmlnaW5FbmFibGVkKSA/IFJlc291cmNlUmVzcG9uc2VCYXNlOjpUeXBlOjpD
b3JzIDogUmVzb3VyY2VSZXNwb25zZUJhc2U6OlR5cGU6Ok9wYXF1ZTsKK30KKworYm9vbCBDYWNo
ZWRSZXNvdXJjZTo6aXNDcm9zc09yaWdpbigpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1fb3B0aW9u
cy5yZXF1ZXN0T3JpZ2luUG9saWN5KCkgIT0gUmVzdHJpY3RUb1NhbWVPcmlnaW4pOworICAgIHJl
dHVybiBtX3Jlc3BvbnNlVHlwZSA9PSBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6VHlwZTo6Q29ycyB8
fCBtX3Jlc3BvbnNlVHlwZSA9PSBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6VHlwZTo6T3BhcXVlOwor
fQorCitib29sIENhY2hlZFJlc291cmNlOjppc0NsZWFuKCkgY29uc3QKK3sKKyAgICAvLyBodHRw
czovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9pbmZyYXN0cnVjdHVyZS5odG1sI2Nv
cnMtc2FtZS1vcmlnaW4KKyAgICBBU1NFUlQobV9yZXNwb25zZVR5cGUgIT0gUmVzb3VyY2VSZXNw
b25zZUJhc2U6OlR5cGU6Ok9wYXF1ZXJlZGlyZWN0ICYmIG1fcmVzcG9uc2VUeXBlICE9IFJlc291
cmNlUmVzcG9uc2VCYXNlOjpUeXBlOjpFcnJvcik7CisgICAgcmV0dXJuICFsb2FkRmFpbGVkT3JD
YW5jZWxlZCgpICYmIG1fcmVzcG9uc2VUeXBlICE9IFJlc291cmNlUmVzcG9uc2VCYXNlOjpUeXBl
OjpPcGFxdWU7Cit9CisKIGJvb2wgQ2FjaGVkUmVzb3VyY2U6OmlzRXhwaXJlZCgpIGNvbnN0CiB7
CiAgICAgaWYgKG1fcmVzcG9uc2UuaXNOdWxsKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSZXNvdXJjZS5oCmluZGV4IGQ0MGU5NTgwNDgxZTgwN2FjYjM1MTc0MTU4NjY0
YWE2MjY4OTk0NjUuLmMzNjQ4ZjRhYTA3OTZiOGY1OTY1OTQyNDMzYTgzNWQ1YWYzYTljNzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCkBAIC0yMDAs
MTEgKzIwMCwxNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDYWNoZVJl
c3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSB7IHJldHVybiB0cnVlOyB9CiAgICAgdm9p
ZCBzZXRSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgdm9pZCBzZXRPcGFx
dWVSZWRpcmVjdCgpIHsgbV9yZXNwb25zZVR5cGUgPSBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6VHlw
ZTo6T3BhcXVlcmVkaXJlY3Q7IH0KICAgICBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2U7IH0KICAgICAvLyBUaGlzIGlzIHRoZSBzYW1l
IGFzIHJlc3BvbnNlKCkgZXhjZXB0IGFmdGVyIEhUVFAgcmVkaXJlY3QgdG8gZGF0YTogVVJMLgog
ICAgIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlRm9yU2FtZU9yaWdpblBvbGljeUNo
ZWNrcygpIGNvbnN0OwogCisgICAgdm9pZCBzZXRPcGFxdWVSZWRpcmVjdCgpIHsgbV9yZXNwb25z
ZVR5cGUgPSBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6VHlwZTo6T3BhcXVlcmVkaXJlY3Q7IH0KKyAg
ICB2b2lkIHNldENyb3NzT3JpZ2luKCk7CisgICAgYm9vbCBpc0Nyb3NzT3JpZ2luKCkgY29uc3Q7
CisgICAgYm9vbCBpc0NsZWFuKCkgY29uc3Q7CisKKyAgICBTZWN1cml0eU9yaWdpbiogb3JpZ2lu
KCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW4uZ2V0KCk7IH0KKwogICAgIGJvb2wgY2FuRGVsZXRl
KCkgY29uc3QgeyByZXR1cm4gIWhhc0NsaWVudHMoKSAmJiAhbV9sb2FkZXIgJiYgIW1fcHJlbG9h
ZENvdW50ICYmICFtX2hhbmRsZUNvdW50ICYmICFtX3Jlc291cmNlVG9SZXZhbGlkYXRlICYmICFt
X3Byb3h5UmVzb3VyY2U7IH0KICAgICBib29sIGhhc09uZUhhbmRsZSgpIGNvbnN0IHsgcmV0dXJu
IG1faGFuZGxlQ291bnQgPT0gMTsgfQogCkBAIC0zMTMsNiArMzE5LDcgQEAgcHJpdmF0ZToKICAg
ICBTdHJpbmcgbV9mcmFnbWVudElkZW50aWZpZXJGb3JSZXF1ZXN0OwogCiAgICAgUmVzb3VyY2VF
cnJvciBtX2Vycm9yOworICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gbV9vcmlnaW47CiAKICAg
ICBkb3VibGUgbV9sYXN0RGVjb2RlZEFjY2Vzc1RpbWU7IC8vIFVzZWQgYXMgYSAidGhyYXNoIGd1
YXJkIiBpbiB0aGUgY2FjaGUKICAgICBkb3VibGUgbV9sb2FkRmluaXNoVGltZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2Uu
Y3BwCmluZGV4IGE0OGJlNGY5ODYyYzNkNTJiYzVkNjVmOGVmNTcyYTQxYTRiOTdjYmYuLjE3NDk2
M2UxODg3NzY0MzNkM2RjOTlkODBmNDVkYjk5YzEzMzNjMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcApAQCAt
MzEzLDkgKzMxMywxNCBAQCB2b2lkIFJlc291cmNlUmVxdWVzdEJhc2U6OnNldEhUVFBPcmlnaW4o
Y29uc3QgU3RyaW5nJiBodHRwT3JpZ2luKQogICAgIHNldEhUVFBIZWFkZXJGaWVsZChIVFRQSGVh
ZGVyTmFtZTo6T3JpZ2luLCBodHRwT3JpZ2luKTsKIH0KIAorYm9vbCBSZXNvdXJjZVJlcXVlc3RC
YXNlOjpoYXNIVFRQT3JpZ2luKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9odHRwSGVhZGVyRmll
bGRzLmNvbnRhaW5zKEhUVFBIZWFkZXJOYW1lOjpPcmlnaW4pOworfQorCiB2b2lkIFJlc291cmNl
UmVxdWVzdEJhc2U6OmNsZWFySFRUUE9yaWdpbigpCiB7Ci0gICAgdXBkYXRlUmVzb3VyY2VSZXF1
ZXN0KCk7IAorICAgIHVwZGF0ZVJlc291cmNlUmVxdWVzdCgpOwogCiAgICAgbV9odHRwSGVhZGVy
RmllbGRzLnJlbW92ZShIVFRQSGVhZGVyTmFtZTo6T3JpZ2luKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaAppbmRleCA2
ZTBiYmUwMjBiOWU4Nzk4ZGI3MDBlYjRkNTYzZjRhNzA4NmE5NTkwLi5kM2FjMzkxZWZhNGE1OWZh
NmFiMWE4YzFhMzE2NzY2ZjAyYWE4NzVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaApAQCAtMjIsNyArMjIsNyBAQAog
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQogICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCiAgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KICAqLwogCiAjaWZuZGVmIFJlc291cmNlUmVxdWVzdEJhc2VfaApAQCAt
MTAwLDggKzEwMCw5IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgaHR0cFJl
ZmVycmVyKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRIVFRQUmVmZXJyZXIo
Y29uc3QgU3RyaW5nJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhckhUVFBSZWZlcnJl
cigpOwotICAgIAorCiAgICAgU3RyaW5nIGh0dHBPcmlnaW4oKSBjb25zdDsKKyAgICBib29sIGhh
c0hUVFBPcmlnaW4oKSBjb25zdDsKICAgICB2b2lkIHNldEhUVFBPcmlnaW4oY29uc3QgU3RyaW5n
Jik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhckhUVFBPcmlnaW4oKTsKIApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4
IGUwMGI2MTcxMzg4ZGFlMjdkMjMxOTU0ODNjOTI4NDkwNWI2MGE4ZTAuLjY2NTUzYWU3ZWJmMGJh
MDg1YTFmNTZkN2JhNzVkNzc2ZmNmMDA1YzggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxNi0w
Ni0xNCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubi5mYWJsZXRAY3JmLmNhbm9uLmZyPgorCisgICAg
ICAgIENsZWFuIENTUyBzdHlsZXNoZWV0cyBzaG91bGQgYmUgYWNjZXNzaWJsZSBmcm9tIEphdmFT
Y3JpcHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1
ODcyOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
aHR0cC90ZXN0cy9zZWN1cml0eS9jYW5ub3QtcmVhZC1jc3NydWxlcy1yZWRpcmVjdC1leHBlY3Rl
ZC50eHQ6CisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9jYW5ub3QtcmVhZC1jc3NydWxl
cy1yZWRpcmVjdC5odG1sOiBBZGRpbmcgbW9yZSB0ZXN0cyByZWxhdGVkIHRvIENPUlMuCisgICAg
ICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1vcmlnaW4tY3NzLTkuaHRtbDogQWN0aXZh
dGluZyBKUyB2aXNpYmlsaXR5IGNoZWNrcy4KKwogMjAxNi0wNi0xMyAgQWRhbSBCZXJna3Zpc3Qg
IDxhZGFtLmJlcmdrdmlzdEBlcmljc3Nvbi5jb20+CiAKICAgICAgICAgV2ViUlRDOiBJbWxlbWVu
dCBNZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rpb246OnJlcGxhY2VUcmFjaygpCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Nhbm5vdC1yZWFkLWNzc3J1bGVzLXJl
ZGlyZWN0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY2Fu
bm90LXJlYWQtY3NzcnVsZXMtcmVkaXJlY3QtZXhwZWN0ZWQudHh0CmluZGV4IDA2MjY0NmZkNDJk
OWZlYjhkM2NlM2VmZTgwYTc4NDVkN2U2YTIzOTYuLjNjNDc1NTg0OTgxZTdhZmZmZGMzNDQ1NzZh
NWE5ODk3NTI4ZTg5MDkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJp
dHkvY2Fubm90LXJlYWQtY3NzcnVsZXMtcmVkaXJlY3QtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY2Fubm90LXJlYWQtY3NzcnVsZXMtcmVkaXJlY3Qt
ZXhwZWN0ZWQudHh0CkBAIC0xLDEwICsxLDIwIEBACitDT05TT0xFIE1FU1NBR0U6IENyb3NzLW9y
aWdpbiByZWRpcmVjdGlvbiBkZW5pZWQgYnkgQ3Jvc3MtT3JpZ2luIFJlc291cmNlIFNoYXJpbmcg
cG9saWN5OiBPcmlnaW4gaHR0cDovLzEyNy4wLjAuMTo4MDAwIGlzIG5vdCBhbGxvd2VkIGJ5IEFj
Y2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbi4KIFRoaXMgdGVzdCB3aGV0aGVyIGEgc2NyaXB0IGNh
biByZWFkIHRoZSBydWxlcyBmcm9tIGEgY3Jvc3Mtb3JpZ2luIHN0eWxlIHNoZWV0IGluIHRoZSBw
cmVzZW5jZSBvZiByZWRpcmVjdHMuIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHdoeSB3ZSBibG9j
ayB0aGlzLCBwbGVhc2Ugc2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDUyNy4KIAogVGVzdCBiZWdpbnMuCiA9PSBTYW1lLU9yaWdpbiB0byBDcm9zcy1PcmlnaW4g
PT0KIGNzc1J1bGVzOiBudWxsCiBydWxlczogbnVsbAotPT0gQ3Jvc3MtT3JpZ2luIHRvIFNhbWUt
T3JpZ2luID09Cis9PSBDcm9zcy1PcmlnaW4gdG8gU2FtZS1PcmlnaW4gd2l0aCBjb3JzIG1vZGUg
ZGlzYWJsZWQgPT0KK2Nzc1J1bGVzOiBudWxsCitydWxlczogbnVsbAorPT0gU2FtZS1PcmlnaW4g
dG8gQ3Jvc3MtT3JpZ2luIHdpdGggY29ycyBtb2RlIGVuYWJsZWQgPT0KK2Nzc1J1bGVzOiBbb2Jq
ZWN0IENTU1J1bGVMaXN0XQorcnVsZXM6IFtvYmplY3QgQ1NTUnVsZUxpc3RdCis9PSBDcm9zcy1P
cmlnaW4gdG8gU2FtZS1PcmlnaW4gd2l0aCBjb3JzIG1vZGUgZW5hYmxlZCA9PQogY3NzUnVsZXM6
IFtvYmplY3QgQ1NTUnVsZUxpc3RdCiBydWxlczogW29iamVjdCBDU1NSdWxlTGlzdF0KKz09IENy
b3NzLU9yaWdpbiB0byBTYW1lLU9yaWdpbiB3aXRoIGNvcnMgbW9kZSBlbmFibGVkLCBubyBjb3Jz
IGhlYWRlcnMgaW4gcmVzcG9uc2UgPT0KK2Nzc1J1bGVzOiBudWxsCitydWxlczogbnVsbAogVGVz
dCBlbmRzLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jYW5u
b3QtcmVhZC1jc3NydWxlcy1yZWRpcmVjdC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
ZWN1cml0eS9jYW5ub3QtcmVhZC1jc3NydWxlcy1yZWRpcmVjdC5odG1sCmluZGV4IGE0NWEzODUw
YjI5NWMzMzVjNWVmMDMyMDNiZDY3OWZkZDE3NDRmNzIuLjQyYzljM2M3ZWFmZTQ0NmM2NzU4ZGZj
M2Q4ZDRlZTY4YmZkMjU4NjYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2Vj
dXJpdHkvY2Fubm90LXJlYWQtY3NzcnVsZXMtcmVkaXJlY3QuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Nhbm5vdC1yZWFkLWNzc3J1bGVzLXJlZGlyZWN0Lmh0bWwK
QEAgLTUsNiArNSwxMiBAQAogICAgICAgaHJlZj0iL3Jlc291cmNlcy9yZWRpcmVjdC5waHA/dXJs
PWh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9yZXNvdXJjZXMvY3NzU3R5bGUuY3NzIj4K
IDxsaW5rIHJlbD0ic3R5bGVzaGVldCIKICAgICAgIGhyZWY9Imh0dHA6Ly9sb2NhbGhvc3Q6ODAw
MC9yZXNvdXJjZXMvcmVkaXJlY3QucGhwP3VybD1odHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJp
dHkvcmVzb3VyY2VzL2Nzc1N0eWxlLmNzcyI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiCisgICAg
ICBocmVmPSIvcmVzb3VyY2VzL3JlZGlyZWN0LnBocD91cmw9aHR0cDovLzEyNy4wLjAuMTo4MDAw
L3NlY3VyaXR5L3Jlc291cmNlcy9jc3NTdHlsZS5jc3MiIGNyb3Nzb3JpZ2luPSIiPgorPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IgorICAgICAgaHJlZj0iaHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3Vy
aXR5L3Jlc291cmNlcy9yZWRpcmVjdC1hbGxvdy1zdGFyLnBocD91cmw9aHR0cDovLzEyNy4wLjAu
MTo4MDAwL3NlY3VyaXR5L3Jlc291cmNlcy94b3JpZ2luY3NzMS5jc3MiIGNyb3Nzb3JpZ2luPSIi
PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IgorICAgICAgaHJlZj0iaHR0cDovL2xvY2FsaG9zdDo4
MDAwL3Jlc291cmNlcy9yZWRpcmVjdC5waHA/dXJsPWh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1
cml0eS9yZXNvdXJjZXMveG9yaWdpbmNzczEuY3NzIiBjcm9zc29yaWdpbj0iIj4KIDxzY3JpcHQ+
CiBpZiAod2luZG93LnRlc3RSdW5uZXIpCiAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CkBA
IC0yMSwxMCArMjcsMjIgQEAgd2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkgewogICAgIHZhciBz
aGVldDEgPSBkb2N1bWVudC5zdHlsZVNoZWV0c1swXTsKICAgICBsb2coImNzc1J1bGVzOiAiICsg
c2hlZXQxLmNzc1J1bGVzKTsKICAgICBsb2coInJ1bGVzOiAiICsgc2hlZXQxLnJ1bGVzKTsKLSAg
ICBsb2coIj09IENyb3NzLU9yaWdpbiB0byBTYW1lLU9yaWdpbiA9PSIpOworICAgIGxvZygiPT0g
Q3Jvc3MtT3JpZ2luIHRvIFNhbWUtT3JpZ2luIHdpdGggY29ycyBtb2RlIGRpc2FibGVkID09Iik7
CiAgICAgdmFyIHNoZWV0MiA9IGRvY3VtZW50LnN0eWxlU2hlZXRzWzFdOwogICAgIGxvZygiY3Nz
UnVsZXM6ICIgKyBzaGVldDIuY3NzUnVsZXMpOwogICAgIGxvZygicnVsZXM6ICIgKyBzaGVldDIu
cnVsZXMpOworICAgIGxvZygiPT0gU2FtZS1PcmlnaW4gdG8gQ3Jvc3MtT3JpZ2luIHdpdGggY29y
cyBtb2RlIGVuYWJsZWQgPT0iKTsKKyAgICB2YXIgc2hlZXQzID0gZG9jdW1lbnQuc3R5bGVTaGVl
dHNbMl07CisgICAgbG9nKCJjc3NSdWxlczogIiArIHNoZWV0My5jc3NSdWxlcyk7CisgICAgbG9n
KCJydWxlczogIiArIHNoZWV0My5ydWxlcyk7CisgICAgbG9nKCI9PSBDcm9zcy1PcmlnaW4gdG8g
U2FtZS1PcmlnaW4gd2l0aCBjb3JzIG1vZGUgZW5hYmxlZCA9PSIpOworICAgIHZhciBzaGVldDQg
PSBkb2N1bWVudC5zdHlsZVNoZWV0c1szXTsKKyAgICBsb2coImNzc1J1bGVzOiAiICsgc2hlZXQ0
LmNzc1J1bGVzKTsKKyAgICBsb2coInJ1bGVzOiAiICsgc2hlZXQ0LnJ1bGVzKTsKKyAgICBsb2co
Ij09IENyb3NzLU9yaWdpbiB0byBTYW1lLU9yaWdpbiB3aXRoIGNvcnMgbW9kZSBlbmFibGVkLCBu
byBjb3JzIGhlYWRlcnMgaW4gcmVzcG9uc2UgPT0iKTsKKyAgICB2YXIgc2hlZXQ1ID0gZG9jdW1l
bnQuc3R5bGVTaGVldHNbNF07CisgICAgbG9nKCJjc3NSdWxlczogIiArIHNoZWV0NS5jc3NSdWxl
cyk7CisgICAgbG9nKCJydWxlczogIiArIHNoZWV0NS5ydWxlcyk7CiAgICAgbG9nKCJUZXN0IGVu
ZHMuIik7CiB9CiA8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
c2VjdXJpdHkvY3Jvc3Mtb3JpZ2luLWNzcy05Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3NlY3VyaXR5L2Nyb3NzLW9yaWdpbi1jc3MtOS5odG1sCmluZGV4IDYxYjI1MDI0OGFiYTkxYjQ4
ZmYyOGI0MWVmNGZhZWU0NDc3YTc1MjQuLjViOTA2MWVmYjkxNmQyYTg3ZWI4NTkzNzMxYzEzYzI3
NTA0NzQ2ZmYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY3Jv
c3Mtb3JpZ2luLWNzcy05Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0
eS9jcm9zcy1vcmlnaW4tY3NzLTkuaHRtbApAQCAtMjEsOCArMjEsNyBAQCBmdW5jdGlvbiBjaGVj
a0NTU0xvYWRpbmcoaWQsIGV4cGVjdFRvSW5jbHVkZU9yaWdpbiwgZXhwZWN0VmlzaWJpbGl0eSkK
IHsKICAgICBleHBlY3RlZENvbG9yID0gZXhwZWN0VG9JbmNsdWRlT3JpZ2luID8gInJnYigyNTUs
IDI1NSwgMCkiIDogInJnYigwLCAwLCAyNTUpIjsKICAgICBhc3NlcnRfZXF1YWxzKGdldEJhY2tn
cm91bmRDb2xvckZvcklkKGlkKSwgZXhwZWN0ZWRDb2xvcik7Ci0gICAgLy8gRklYTUU6IGNzc1J1
bGVzIHNob3VsZCBiZSBtYWRlIHZpc2libGUgYWNjb3JkaW5nIHJlc291cmNlIHRhaW50ZWQgc3Rh
dHVzLCBub3Qgb25seSBiYXNlZCBvbiB0aGUgcmVzb3VyY2UgVVJMIGJlaW5nIGNyb3NzIG9yaWdp
bi4KLSAgICAvLyBhc3NlcnRfZXF1YWxzKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsaW5rLSIg
KyBpZCkuc2hlZXQuY3NzUnVsZXMgIT09IG51bGwsIGV4cGVjdFZpc2liaWxpdHkpOworICAgIGFz
c2VydF9lcXVhbHMoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxpbmstIiArIGlkKS5zaGVldC5j
c3NSdWxlcyAhPT0gbnVsbCwgZXhwZWN0VmlzaWJpbGl0eSk7CiB9CiAKIHZhciBvbmxvYWRUZXN0
ID0gYXN5bmNfdGVzdCgiIFRlc3RpbmcgdGhhdCBsaW5rIGVsZW1lbnQgdG8gbG9hZCBzdHlsZXNo
ZWV0cyBjb3JyZWN0bHkgaGFuZGxlIGNyb3Nzb3JpZ2luIG1vZGUuIik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>281358</attachid>
            <date>2016-06-15 07:07:44 -0700</date>
            <delta_ts>2016-06-22 04:23:44 -0700</delta_ts>
            <desc>Beefing up tests and addressing other comments</desc>
            <filename>bug-158728-20160615160910.patch</filename>
            <type>text/plain</type>
            <size>34906</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAyMDg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2JlMDE4ZjcwM2Q3MmQy
N2Y1NDAxZDIyOGE5Mjc0NTAxMDA2MzRmYi4uZjMwMTM1MmRkOTU5MzJkOGVhOWI5NDYxOTJlZjE2
ZjliODlmOTJmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDE2LTA2LTE1ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CisKKyAgICAgICAgQ2xlYW4g
Q1NTIHN0eWxlc2hlZXRzIHNob3VsZCBiZSBhY2Nlc3NpYmxlIGZyb20gSmF2YVNjcmlwdAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4NzI4CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNpbmcg
Y29tcHV0YXRpb24gb2YgdGhlIHJlc291cmNlIHJlc3BvbnNlIHR5cGUgYXMgcGVyIGZldGNoIHNw
ZWNpZmljYXRpb24uCisgICAgICAgIFRoaXMgY29tcHV0YXRpb24gaXMgZG9uZSBpbiBTdWJyZXNv
dXJjZUxvYWRlciBhdCBpbml0IHRpbWUgYW5kIGZvciBlYWNoIHJlZGlyZWN0aW9uLgorICAgICAg
ICBJZiBjcm9zcy1vcmlnaW4sIFN1YnJlc291cmNlTG9hZGVyIHdpbGwgc2V0IHRoZSByZXNwb25z
ZSB0eXBlIHRvIENvcnMgaWYgZmV0Y2ggbW9kZSBpcyBDb3JzCisgICAgICAgIG9yIHRvIE9wYXF1
ZSBpZiBmZXRjaCBtb2RlIGlzIE5vQ29ycy4KKworICAgICAgICBNYWtpbmcgdXNlIG9mIHRoZSBy
ZXNvdXJjZSByZXNwb25zZSB0eXBlIHRvIGV2YWx1YXRlIHdoZXRoZXIgdG8gbWFrZSB0aGUgQ1NT
IHN0eWxlc2hlZXRzIHZpc2libGUKKyAgICAgICAgZm9yIHN0eWxlc2hlZXQgbGluayBlbGVtZW50
cyBhbmQgZm9yIHN0eWxlc2hlZXQgcHJvY2Vzc2luZyBpbnN0cnVjdGlvbnMuCisgICAgICAgIElk
ZWFsbHksIHRoZSBvcmlnaW4gZmxhZyBzaG91bGQgYmUgYSBib29sZWFuLgorICAgICAgICBUbyBr
ZWVwIGJlaGF2aW9yIGNvbnNpc3RlbnQgaW4gY29ycy1jaGVjay11bmF3YXJlIGNhc2VzLCB0aGUg
ZmxhZyBjYW4gYmUgc2V0IHRvIHVuZGVmaW5lZCBpbiB3aGljaCBjYXNlIHRoZQorICAgICAgICBi
ZWhhdmlvciByZW1haW5zIHRoZSBzYW1lIChjaGVja2luZyBvZiB0aGUgc3R5bGVzaGVldCBVUkwp
LgorCisgICAgICAgIENvdmVyZWQgYnkgdXBkYXRlZCB0ZXN0cy4KKworICAgICAgICAqIGNzcy9D
U1NTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2hlZXQ6OmNyZWF0
ZSk6IE1ha2VzIG9yaWdpbiBmbGFnIHVuZGVmaW5lZCBpZiBib29sZWFuIHBhcmFtZXRlciBpcyBu
b3QgcGFzc2VkLgorICAgICAgICBPdGhlcndpc2Ugb3JpZ2luIGZsYWcgaXMgc2V0IGFjY29yZGlu
ZyBnaXZlbiBib29sZWFuIHZhbHVlLgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTaGVldDo6
Y3JlYXRlSW5saW5lKTogTWFrZXMgb3JpZ2luIGZsYWcgc2V0IHRvIHRydWUuCisgICAgICAgIChX
ZWJDb3JlOjpDU1NTdHlsZVNoZWV0OjpDU1NTdHlsZVNoZWV0KTogQWRkaW5nIG9yaWdpbiBmbGFn
IGluaXRpYWxpemF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTaGVldDo6Y2FuQWNj
ZXNzUnVsZXMpOiBSZXR1cm5pbmcgYWNjb3JkaW5nIHRoZSBvcmlnaW4gZmxhZyBpZiBzZXQuCisg
ICAgICAgIFJldHVybmluZyBhcyBiZWZvcmUgaW4gY2FzZSB0aGUgZmxhZyBpcyB1bmRlZmluZWQu
CisgICAgICAgICogY3NzL0NTU1N0eWxlU2hlZXQuaDogQWRkaW5nIG9yaWdpbiBjbGVhbiBmbGFn
LgorICAgICAgICAqIGh0bWwvSFRNTExpbmtFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxMaW5rRWxlbWVudDo6aW5pdGlhbGl6ZVN0eWxlU2hlZXQpOiBIZWxwZXIgcm91dGluZSB1
c2VkIGluIHNldENTU1N0eWxlU2hlZXQuCisgICAgICAgIFNldHMgb3JpZ2luIGNsZWFuIGZsYWcg
aWYgdGhlIHJlc291cmNlIGlzIGNsZWFuLgorICAgICAgICAoV2ViQ29yZTo6SFRNTExpbmtFbGVt
ZW50OjpzZXRDU1NTdHlsZVNoZWV0KTogTWFraW5nIHVzZSBvZiBpbml0aWFsaXplU3R5bGVTaGVl
dC4KKyAgICAgICAgKiBodG1sL0hUTUxMaW5rRWxlbWVudC5oOgorICAgICAgICAqIGxvYWRlci9T
dWJyZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRl
cjo6aW5pdCk6IEdldHRpbmcgbV9vcmlnaW4gdG8gY29tcHV0ZSB0aGUgcmVzb3VyY2UgcmVzcG9u
c2UgdHlwZS4KKyAgICAgICAgKFdlYkNvcmU6OlN1YnJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJl
cXVlc3RJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRlcjo6ZGlk
UmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OlN1YnJlc291cmNlTG9hZGVyOjpj
aGVja1JlZGlyZWN0aW9uQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sKTogTWFya2luZyByZXNvdXJj
ZSBhcyBjcm9zcy1vcmlnaW4KKyAgICAgICAgaWYgcmVkaXJlY3Rpb24gaXMgY3Jvc3Mtb3JpZ2lu
LgorICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNv
dXJjZTo6bG9hZCk6IENvbXB1dGluZyByZXNvdXJjZSBvcmlnaW4gZnJvbSB0aGUgcmVxdWVzdCBv
ciB0aGUgZG9jdW1lbnQgbG9hZGVyIGl0c2VsZi4KKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJl
c291cmNlOjpzZXRDcm9zc09yaWdpbik6IFNldCByZXNwb25zZSB0eXBlIGFzIG9wYXF1ZSBvciBj
b3JzIGRlcGVuZGluZyBvbiBmZXRjaCBtb2RlLgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVz
b3VyY2U6OmlzQ3Jvc3NPcmlnaW4pOiBSZXR1cm5zIHRydWUgaWYgcmVzcG9uc2UgdHlwZSBpcyBv
cGFxdWUgb3IgY29ycy4KKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjppc0NsZWFu
KTogUmV0dXJucyB0cnVlIGlmIHJlc3BvbnNlIHR5cGUgaXMgbm90IG9wYXF1ZSBhbmQgbG9hZGlu
ZyBpcyBvay4KKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpzZXRSZXNvdXJjZVRv
UmV2YWxpZGF0ZSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6c2V0T3BhcXVlUmVkaXJlY3QpOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6Om9yaWdpbik6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdEJhc2U6Omhhc0hUVFBPcmlnaW4pOiBBZGRlZCB0byBkZXRlY3Qgd2hldGhl
ciBjb2RlIGNhbGxpbmcgbG9hZGVycyBzZXQgdGhlIG9yaWdpbiBvZiB0aGUgcmVxdWVzdC4KKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdEJhc2U6OmNsZWFySFRUUE9yaWdpbik6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmg6CisKIDIwMTYt
MDYtMTQgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAg
ICBBZGRyZXNzaW5nIHBvc3QtcmV2aWV3IGNvbW1lbnRzIGFmdGVyIHIyMDE5NzEKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NTdHlsZVNoZWV0LmNwcAppbmRleCA4ZjZhMzBhZGEwMjNjNTAxZGU1OTYxNzVlNDdl
Njg2NTNmMzg2MjVhLi4xYzI3MDBmMmYzYTU5YzYzYTQxOWYxZjMxNzBmMTE4Njg4MjczZmQ3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwCkBAIC03OCwxOSArNzgsMjQgQEAgc3Rh
dGljIGJvb2wgaXNBY2NlcHRhYmxlQ1NTU3R5bGVTaGVldFBhcmVudChOb2RlKiBwYXJlbnROb2Rl
KQogI2VuZGlmCiAKIFJlZjxDU1NTdHlsZVNoZWV0PiBDU1NTdHlsZVNoZWV0OjpjcmVhdGUoUmVm
PFN0eWxlU2hlZXRDb250ZW50cz4mJiBzaGVldCwgQ1NTSW1wb3J0UnVsZSogb3duZXJSdWxlKQot
eyAKK3sKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NTdHlsZVNoZWV0KFdURk1vdmUoc2hl
ZXQpLCBvd25lclJ1bGUpKTsKIH0KIAogUmVmPENTU1N0eWxlU2hlZXQ+IENTU1N0eWxlU2hlZXQ6
OmNyZWF0ZShSZWY8U3R5bGVTaGVldENvbnRlbnRzPiYmIHNoZWV0LCBOb2RlKiBvd25lck5vZGUp
Ci17IAotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENTU1N0eWxlU2hlZXQoV1RGTW92ZShzaGVl
dCksIG93bmVyTm9kZSwgVGV4dFBvc2l0aW9uOjptaW5pbXVtUG9zaXRpb24oKSwgZmFsc2UpKTsK
K3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NTdHlsZVNoZWV0KFdURk1vdmUoc2hlZXQp
LCBvd25lck5vZGUsIFRleHRQb3NpdGlvbjo6bWluaW11bVBvc2l0aW9uKCksIGZhbHNlLCBPcmln
aW5DbGVhbkZsYWc6OlVuZGVmaW5lZCkpOworfQorCitSZWY8Q1NTU3R5bGVTaGVldD4gQ1NTU3R5
bGVTaGVldDo6Y3JlYXRlKFJlZjxTdHlsZVNoZWV0Q29udGVudHM+JiYgc2hlZXQsIE5vZGUqIG93
bmVyTm9kZSwgYm9vbCBpc0NsZWFuT3JpZ2luKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IENTU1N0eWxlU2hlZXQoV1RGTW92ZShzaGVldCksIG93bmVyTm9kZSwgVGV4dFBvc2l0aW9uOjpt
aW5pbXVtUG9zaXRpb24oKSwgZmFsc2UsIGlzQ2xlYW5PcmlnaW4gPyBPcmlnaW5DbGVhbkZsYWc6
OlRydWUgOiBPcmlnaW5DbGVhbkZsYWc6OkZhbHNlKSk7CiB9CiAKIFJlZjxDU1NTdHlsZVNoZWV0
PiBDU1NTdHlsZVNoZWV0OjpjcmVhdGVJbmxpbmUoTm9kZSYgb3duZXJOb2RlLCBjb25zdCBVUkwm
IGJhc2VVUkwsIGNvbnN0IFRleHRQb3NpdGlvbiYgc3RhcnRQb3NpdGlvbiwgY29uc3QgU3RyaW5n
JiBlbmNvZGluZykKIHsKICAgICBDU1NQYXJzZXJDb250ZXh0IHBhcnNlckNvbnRleHQob3duZXJO
b2RlLmRvY3VtZW50KCksIGJhc2VVUkwsIGVuY29kaW5nKTsKLSAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBDU1NTdHlsZVNoZWV0KFN0eWxlU2hlZXRDb250ZW50czo6Y3JlYXRlKGJhc2VVUkwuc3Ry
aW5nKCksIHBhcnNlckNvbnRleHQpLCAmb3duZXJOb2RlLCBzdGFydFBvc2l0aW9uLCB0cnVlKSk7
CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTU3R5bGVTaGVldChTdHlsZVNoZWV0Q29udGVu
dHM6OmNyZWF0ZShiYXNlVVJMLnN0cmluZygpLCBwYXJzZXJDb250ZXh0KSwgJm93bmVyTm9kZSwg
c3RhcnRQb3NpdGlvbiwgdHJ1ZSwgT3JpZ2luQ2xlYW5GbGFnOjpUcnVlKSk7CiB9CiAKIENTU1N0
eWxlU2hlZXQ6OkNTU1N0eWxlU2hlZXQoUmVmPFN0eWxlU2hlZXRDb250ZW50cz4mJiBjb250ZW50
cywgQ1NTSW1wb3J0UnVsZSogb3duZXJSdWxlKQpAQCAtMTA1LDExICsxMTAsMTIgQEAgQ1NTU3R5
bGVTaGVldDo6Q1NTU3R5bGVTaGVldChSZWY8U3R5bGVTaGVldENvbnRlbnRzPiYmIGNvbnRlbnRz
LCBDU1NJbXBvcnRSdWxlKgogICAgIG1fY29udGVudHMtPnJlZ2lzdGVyQ2xpZW50KHRoaXMpOwog
fQogCi1DU1NTdHlsZVNoZWV0OjpDU1NTdHlsZVNoZWV0KFJlZjxTdHlsZVNoZWV0Q29udGVudHM+
JiYgY29udGVudHMsIE5vZGUqIG93bmVyTm9kZSwgY29uc3QgVGV4dFBvc2l0aW9uJiBzdGFydFBv
c2l0aW9uLCBib29sIGlzSW5saW5lU3R5bGVzaGVldCkKK0NTU1N0eWxlU2hlZXQ6OkNTU1N0eWxl
U2hlZXQoUmVmPFN0eWxlU2hlZXRDb250ZW50cz4mJiBjb250ZW50cywgTm9kZSogb3duZXJOb2Rl
LCBjb25zdCBUZXh0UG9zaXRpb24mIHN0YXJ0UG9zaXRpb24sIGJvb2wgaXNJbmxpbmVTdHlsZXNo
ZWV0LCBPcmlnaW5DbGVhbkZsYWcgZmxhZykKICAgICA6IG1fY29udGVudHMoV1RGTW92ZShjb250
ZW50cykpCiAgICAgLCBtX2lzSW5saW5lU3R5bGVzaGVldChpc0lubGluZVN0eWxlc2hlZXQpCiAg
ICAgLCBtX2lzRGlzYWJsZWQoZmFsc2UpCiAgICAgLCBtX211dGF0ZWRSdWxlcyhmYWxzZSkKKyAg
ICAsIG1faXNPcmlnaW5DbGVhbihmbGFnKQogICAgICwgbV9vd25lck5vZGUob3duZXJOb2RlKQog
ICAgICwgbV9vd25lclJ1bGUoMCkKICAgICAsIG1fc3RhcnRQb3NpdGlvbihzdGFydFBvc2l0aW9u
KQpAQCAtMjU4LDE3ICsyNjQsMTYgQEAgQ1NTUnVsZSogQ1NTU3R5bGVTaGVldDo6aXRlbSh1bnNp
Z25lZCBpbmRleCkKIAogYm9vbCBDU1NTdHlsZVNoZWV0OjpjYW5BY2Nlc3NSdWxlcygpIGNvbnN0
CiB7Ci0gICAgaWYgKG1faXNJbmxpbmVTdHlsZXNoZWV0KQotICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICBpZiAobV9pc09yaWdpbkNsZWFuICE9IE9yaWdpbkNsZWFuRmxhZzo6VW5kZWZpbmVkKQor
ICAgICAgICByZXR1cm4gbV9pc09yaWdpbkNsZWFuID09IE9yaWdpbkNsZWFuRmxhZzo6VHJ1ZTsK
KwogICAgIFVSTCBiYXNlVVJMID0gbV9jb250ZW50cy0+YmFzZVVSTCgpOwogICAgIGlmIChiYXNl
VVJMLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgRG9jdW1lbnQqIGRvY3Vt
ZW50ID0gb3duZXJEb2N1bWVudCgpOwogICAgIGlmICghZG9jdW1lbnQpCiAgICAgICAgIHJldHVy
biB0cnVlOwotICAgIGlmIChkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuUmVxdWVzdChi
YXNlVVJMKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIHJl
dHVybiBkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuUmVxdWVzdChiYXNlVVJMKTsKIH0K
IAogUmVmUHRyPENTU1J1bGVMaXN0PiBDU1NTdHlsZVNoZWV0OjpydWxlcygpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5oIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1N0eWxlU2hlZXQuaAppbmRleCBjMGU2N2UxZjViNTlkNGI1MzdhOGJmNTNhZGYwMDg4Mzg3
ODk5M2ZiLi4zMWM1MGJkOGZjNGUxM2RiYzk4N2ZhYzIzOTVmOTc1MDlhNTZhZDQ0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmgKQEAgLTUxLDYgKzUxLDcgQEAgY2xhc3MgQ1NTU3R5bGVT
aGVldCBmaW5hbCA6IHB1YmxpYyBTdHlsZVNoZWV0IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVm
PENTU1N0eWxlU2hlZXQ+IGNyZWF0ZShSZWY8U3R5bGVTaGVldENvbnRlbnRzPiYmLCBDU1NJbXBv
cnRSdWxlKiBvd25lclJ1bGUgPSAwKTsKICAgICBzdGF0aWMgUmVmPENTU1N0eWxlU2hlZXQ+IGNy
ZWF0ZShSZWY8U3R5bGVTaGVldENvbnRlbnRzPiYmLCBOb2RlKiBvd25lck5vZGUpOworICAgIHN0
YXRpYyBSZWY8Q1NTU3R5bGVTaGVldD4gY3JlYXRlKFJlZjxTdHlsZVNoZWV0Q29udGVudHM+JiYs
IE5vZGUqIG93bmVyTm9kZSwgYm9vbCAvKiBpc0NsZWFuICovKTsKICAgICBzdGF0aWMgUmVmPENT
U1N0eWxlU2hlZXQ+IGNyZWF0ZUlubGluZShOb2RlJiwgY29uc3QgVVJMJiwgY29uc3QgVGV4dFBv
c2l0aW9uJiBzdGFydFBvc2l0aW9uID0gVGV4dFBvc2l0aW9uOjptaW5pbXVtUG9zaXRpb24oKSwg
Y29uc3QgU3RyaW5nJiBlbmNvZGluZyA9IFN0cmluZygpKTsKIAogICAgIHZpcnR1YWwgfkNTU1N0
eWxlU2hlZXQoKTsKQEAgLTEyMywxOCArMTI0LDI1IEBAIHB1YmxpYzoKICAgICB2b2lkIGRldGFj
aEZyb21Eb2N1bWVudCgpIHsgbV9vd25lck5vZGUgPSBudWxscHRyOyB9CiAKIHByaXZhdGU6Cisg
ICAgZW51bSBjbGFzcyBPcmlnaW5DbGVhbkZsYWcgeworICAgICAgICBUcnVlLAorICAgICAgICBG
YWxzZSwKKyAgICAgICAgVW5kZWZpbmVkCisgICAgfTsKKwogICAgIENTU1N0eWxlU2hlZXQoUmVm
PFN0eWxlU2hlZXRDb250ZW50cz4mJiwgQ1NTSW1wb3J0UnVsZSogb3duZXJSdWxlKTsKLSAgICBD
U1NTdHlsZVNoZWV0KFJlZjxTdHlsZVNoZWV0Q29udGVudHM+JiYsIE5vZGUqIG93bmVyTm9kZSwg
Y29uc3QgVGV4dFBvc2l0aW9uJiBzdGFydFBvc2l0aW9uLCBib29sIGlzSW5saW5lU3R5bGVzaGVl
dCk7CisgICAgQ1NTU3R5bGVTaGVldChSZWY8U3R5bGVTaGVldENvbnRlbnRzPiYmLCBOb2RlKiBv
d25lck5vZGUsIGNvbnN0IFRleHRQb3NpdGlvbiYgc3RhcnRQb3NpdGlvbiwgYm9vbCBpc0lubGlu
ZVN0eWxlc2hlZXQsIE9yaWdpbkNsZWFuRmxhZyk7CiAKICAgICBib29sIGlzQ1NTU3R5bGVTaGVl
dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICBTdHJpbmcgdHlwZSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgidGV4dC9jc3MiKTsgfQogCiAgICAg
Ym9vbCBjYW5BY2Nlc3NSdWxlcygpIGNvbnN0OwotICAgIAorCiAgICAgUmVmPFN0eWxlU2hlZXRD
b250ZW50cz4gbV9jb250ZW50czsKICAgICBib29sIG1faXNJbmxpbmVTdHlsZXNoZWV0OwogICAg
IGJvb2wgbV9pc0Rpc2FibGVkOwogICAgIGJvb2wgbV9tdXRhdGVkUnVsZXM7CisgICAgT3JpZ2lu
Q2xlYW5GbGFnIG1faXNPcmlnaW5DbGVhbiB7IE9yaWdpbkNsZWFuRmxhZzo6VW5kZWZpbmVkIH07
CiAgICAgU3RyaW5nIG1fdGl0bGU7CiAgICAgUmVmUHRyPE1lZGlhUXVlcnlTZXQ+IG1fbWVkaWFR
dWVyaWVzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3Ry
dWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3Bw
CmluZGV4IDI4MDMzMTU5ZmFjYWZjY2QzZmI5OGY1YjlmOWU0ZTJhMzEwNTE4M2EuLmZlOGY0OTEy
Yzg3ZDhhNjgzOGE5YzljMTUyZTlkN2ExMDY4ZTBhMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwCkBAIC0xOTAsMTAgKzE5MCwxMCBAQCB2b2lkIFBy
b2Nlc3NpbmdJbnN0cnVjdGlvbjo6c2V0Q1NTU3R5bGVTaGVldChjb25zdCBTdHJpbmcmIGhyZWYs
IGNvbnN0IFVSTCYgYmFzZQogICAgIEFTU0VSVChtX2lzQ1NTKTsKICAgICBDU1NQYXJzZXJDb250
ZXh0IHBhcnNlckNvbnRleHQoZG9jdW1lbnQoKSwgYmFzZVVSTCwgY2hhcnNldCk7CiAKLSAgICBh
dXRvIGNzc1NoZWV0ID0gQ1NTU3R5bGVTaGVldDo6Y3JlYXRlKFN0eWxlU2hlZXRDb250ZW50czo6
Y3JlYXRlKGhyZWYsIHBhcnNlckNvbnRleHQpLCB0aGlzKTsKLSAgICBjc3NTaGVldC5nZXQoKS5z
ZXREaXNhYmxlZChtX2FsdGVybmF0ZSk7Ci0gICAgY3NzU2hlZXQuZ2V0KCkuc2V0VGl0bGUobV90
aXRsZSk7Ci0gICAgY3NzU2hlZXQuZ2V0KCkuc2V0TWVkaWFRdWVyaWVzKE1lZGlhUXVlcnlTZXQ6
OmNyZWF0ZShtX21lZGlhKSk7CisgICAgYXV0byBjc3NTaGVldCA9IENTU1N0eWxlU2hlZXQ6OmNy
ZWF0ZShTdHlsZVNoZWV0Q29udGVudHM6OmNyZWF0ZShocmVmLCBwYXJzZXJDb250ZXh0KSwgdGhp
cywgc2hlZXQtPmlzQ2xlYW4oKSk7CisgICAgY3NzU2hlZXQtPnNldERpc2FibGVkKG1fYWx0ZXJu
YXRlKTsKKyAgICBjc3NTaGVldC0+c2V0VGl0bGUobV90aXRsZSk7CisgICAgY3NzU2hlZXQtPnNl
dE1lZGlhUXVlcmllcyhNZWRpYVF1ZXJ5U2V0OjpjcmVhdGUobV9tZWRpYSkpOwogCiAgICAgbV9z
aGVldCA9IFdURk1vdmUoY3NzU2hlZXQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxMaW5rRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxl
bWVudC5jcHAKaW5kZXggODM0MjRjMDI4MzY4M2Y1MTkxZTU2MmRiYTQ0MmYyZDY0ZWE4YTA4YS4u
OGZiNTE5ODJhZjM2MjIzMjM2MTc0YmM5NjM3M2Q5ZDZiOTc1MzNlNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcApAQCAtMzMxLDYgKzMzMSwxMyBAQCB2b2lkIEhUTUxM
aW5rRWxlbWVudDo6ZmluaXNoUGFyc2luZ0NoaWxkcmVuKCkKICAgICBIVE1MRWxlbWVudDo6Zmlu
aXNoUGFyc2luZ0NoaWxkcmVuKCk7CiB9CiAKK3ZvaWQgSFRNTExpbmtFbGVtZW50Ojppbml0aWFs
aXplU3R5bGVTaGVldChSZWY8U3R5bGVTaGVldENvbnRlbnRzPiYmIHN0eWxlU2hlZXQsIGNvbnN0
IENhY2hlZENTU1N0eWxlU2hlZXQmIGNhY2hlZFN0eWxlU2hlZXQpCit7CisgICAgbV9zaGVldCA9
IENTU1N0eWxlU2hlZXQ6OmNyZWF0ZShXVEZNb3ZlKHN0eWxlU2hlZXQpLCB0aGlzLCBjYWNoZWRT
dHlsZVNoZWV0LmlzQ2xlYW4oKSk7CisgICAgbV9zaGVldC0+c2V0TWVkaWFRdWVyaWVzKE1lZGlh
UXVlcnlTZXQ6OmNyZWF0ZUFsbG93aW5nRGVzY3JpcHRpb25TeW50YXgobV9tZWRpYSkpOworICAg
IG1fc2hlZXQtPnNldFRpdGxlKHRpdGxlKCkpOworfQorCiB2b2lkIEhUTUxMaW5rRWxlbWVudDo6
c2V0Q1NTU3R5bGVTaGVldChjb25zdCBTdHJpbmcmIGhyZWYsIGNvbnN0IFVSTCYgYmFzZVVSTCwg
Y29uc3QgU3RyaW5nJiBjaGFyc2V0LCBjb25zdCBDYWNoZWRDU1NTdHlsZVNoZWV0KiBjYWNoZWRT
dHlsZVNoZWV0KQogewogICAgIGlmICghaW5Eb2N1bWVudCgpKSB7CkBAIC0zNTAsMTAgKzM1Nyw3
IEBAIHZvaWQgSFRNTExpbmtFbGVtZW50OjpzZXRDU1NTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYg
aHJlZiwgY29uc3QgVVJMJiBiYXNlVVJMLCBjCiAgICAgaWYgKFJlZlB0cjxTdHlsZVNoZWV0Q29u
dGVudHM+IHJlc3RvcmVkU2hlZXQgPSBjb25zdF9jYXN0PENhY2hlZENTU1N0eWxlU2hlZXQqPihj
YWNoZWRTdHlsZVNoZWV0KS0+cmVzdG9yZVBhcnNlZFN0eWxlU2hlZXQocGFyc2VyQ29udGV4dCwg
Y2FjaGVQb2xpY3kpKSB7CiAgICAgICAgIEFTU0VSVChyZXN0b3JlZFNoZWV0LT5pc0NhY2hlYWJs
ZSgpKTsKICAgICAgICAgQVNTRVJUKCFyZXN0b3JlZFNoZWV0LT5pc0xvYWRpbmcoKSk7Ci0KLSAg
ICAgICAgbV9zaGVldCA9IENTU1N0eWxlU2hlZXQ6OmNyZWF0ZShyZXN0b3JlZFNoZWV0LnJlbGVh
c2VOb25OdWxsKCksIHRoaXMpOwotICAgICAgICBtX3NoZWV0LT5zZXRNZWRpYVF1ZXJpZXMoTWVk
aWFRdWVyeVNldDo6Y3JlYXRlQWxsb3dpbmdEZXNjcmlwdGlvblN5bnRheChtX21lZGlhKSk7Ci0g
ICAgICAgIG1fc2hlZXQtPnNldFRpdGxlKHRpdGxlKCkpOworICAgICAgICBpbml0aWFsaXplU3R5
bGVTaGVldChyZXN0b3JlZFNoZWV0LnJlbGVhc2VOb25OdWxsKCksICpjYWNoZWRTdHlsZVNoZWV0
KTsKIAogICAgICAgICBtX2xvYWRpbmcgPSBmYWxzZTsKICAgICAgICAgc2hlZXRMb2FkZWQoKTsK
QEAgLTM2Miw5ICszNjYsNyBAQCB2b2lkIEhUTUxMaW5rRWxlbWVudDo6c2V0Q1NTU3R5bGVTaGVl
dChjb25zdCBTdHJpbmcmIGhyZWYsIGNvbnN0IFVSTCYgYmFzZVVSTCwgYwogICAgIH0KIAogICAg
IGF1dG8gc3R5bGVTaGVldCA9IFN0eWxlU2hlZXRDb250ZW50czo6Y3JlYXRlKGhyZWYsIHBhcnNl
ckNvbnRleHQpOwotICAgIG1fc2hlZXQgPSBDU1NTdHlsZVNoZWV0OjpjcmVhdGUoc3R5bGVTaGVl
dC5jb3B5UmVmKCksIHRoaXMpOwotICAgIG1fc2hlZXQtPnNldE1lZGlhUXVlcmllcyhNZWRpYVF1
ZXJ5U2V0OjpjcmVhdGVBbGxvd2luZ0Rlc2NyaXB0aW9uU3ludGF4KG1fbWVkaWEpKTsKLSAgICBt
X3NoZWV0LT5zZXRUaXRsZSh0aXRsZSgpKTsKKyAgICBpbml0aWFsaXplU3R5bGVTaGVldChzdHls
ZVNoZWV0LmNvcHlSZWYoKSwgKmNhY2hlZFN0eWxlU2hlZXQpOwogCiAgICAgc3R5bGVTaGVldC5n
ZXQoKS5wYXJzZUF1dGhvclN0eWxlU2hlZXQoY2FjaGVkU3R5bGVTaGVldCwgZG9jdW1lbnQoKS5z
ZWN1cml0eU9yaWdpbigpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TGlua0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmgKaW5k
ZXggMWIxYjFjZWM4ZGU0N2UxNmFkNGRjOWM5NTM5NDkwMjIyZDJjODQyZi4uMjI5Y2Y5NjgxMmRh
ZDdlOWY1YWQ2MDZjNGJiOTliNzdjNjc0YzQzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTGlua0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5r
RWxlbWVudC5oCkBAIC04Niw2ICs4Niw4IEBAIHByaXZhdGU6CiAgICAgSW5zZXJ0aW9uTm90aWZp
Y2F0aW9uUmVxdWVzdCBpbnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSYpIG92ZXJyaWRlOwogICAg
IHZvaWQgcmVtb3ZlZEZyb20oQ29udGFpbmVyTm9kZSYpIG92ZXJyaWRlOwogCisgICAgdm9pZCBp
bml0aWFsaXplU3R5bGVTaGVldChSZWY8U3R5bGVTaGVldENvbnRlbnRzPiYmLCBjb25zdCBDYWNo
ZWRDU1NTdHlsZVNoZWV0Jik7CisKICAgICAvLyBmcm9tIENhY2hlZFJlc291cmNlQ2xpZW50CiAg
ICAgdm9pZCBzZXRDU1NTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgaHJlZiwgY29uc3QgVVJMJiBi
YXNlVVJMLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQsIGNvbnN0IENhY2hlZENTU1N0eWxlU2hlZXQq
IHNoZWV0KSBvdmVycmlkZTsKICAgICBib29sIHNoZWV0TG9hZGVkKCkgb3ZlcnJpZGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAppbmRleCAzODZlYzA3M2I3
ZGRjZjdjMTZiY2Q1YzRlYmM0NDA0ZDM0MGY0NjgyLi4yMzc5NDM2NDRjOTkxYzQwMjY5N2E5Mjkz
Y2JlMjkwMGQ1ZWE5NTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVz
b3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxv
YWRlci5jcHAKQEAgLTYsMTMgKzYsMTMgQEAKICAqIGFyZSBtZXQ6CiAgKgogICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLiAKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCiAgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKICAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KICAqIDMuICBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YK
ICAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAKKyAqICAgICBmcm9tIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCiAgKgogICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORCBBTlkKICAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKQEAgLTE1MSw4ICsxNTEsMTEgQEAgYm9v
bCBTdWJyZXNvdXJjZUxvYWRlcjo6aW5pdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qp
CiAgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NTU2MzMuCiAgICAgLy8gU3VicmVzb3VyY2VMb2FkZXIgY291bGQgdXNlIHRoZSBkb2N1bWVudCBv
cmlnaW4gYXMgYSBkZWZhdWx0IGFuZCBzZXQgUG90ZW50aWFsbHlDcm9zc09yaWdpbkVuYWJsZWQg
cmVxdWVzdHMgYWNjb3JkaW5nbHkuCiAgICAgLy8gVGhpcyB3b3VsZCBzaW1wbGlmeSByZXNvdXJj
ZSBsb2FkZXIgdXNlcnMgYXMgdGhleSB3b3VsZCBvbmx5IG5lZWQgdG8gc2V0IHRoZSBwb2xpY3kg
dG8gUG90ZW50aWFsbHlDcm9zc09yaWdpbkVuYWJsZWQuCi0gICAgaWYgKG9wdGlvbnMoKS5yZXF1
ZXN0T3JpZ2luUG9saWN5KCkgPT0gUG90ZW50aWFsbHlDcm9zc09yaWdpbkVuYWJsZWQpCi0gICAg
ICAgIG1fb3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcocmVxdWVzdC5o
dHRwT3JpZ2luKCkpOworCisgICAgbV9vcmlnaW4gPSBtX3Jlc291cmNlLT5vcmlnaW4oKTsKKyAg
ICAvLyBodHRwczovL2ZldGNoLnNwZWMud2hhdHdnLm9yZy8jbWFpbi1mZXRjaCwgc3RlcCAxMSwg
ZGF0YSBVUkwgaGVyZSBpcyBjb25zaWRlcmVkIG5vdCBjcm9zcyBvcmlnaW4uCisgICAgaWYgKCFy
ZXF1ZXN0LnVybCgpLnByb3RvY29sSXNEYXRhKCkgJiYgbV9vcmlnaW4gJiYgIW1fb3JpZ2luLT5j
YW5SZXF1ZXN0KHJlcXVlc3QudXJsKCkpKQorICAgICAgICBtX3Jlc291cmNlLT5zZXRDcm9zc09y
aWdpbigpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0yMDIsNyArMjA1LDcgQEAgdm9pZCBT
dWJyZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0SW50ZXJuYWwoUmVzb3VyY2VSZXF1ZXN0
JiBuZXdSZXF1ZXN0LCBjb24KICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAg
ICAgIGlmIChvcHRpb25zKCkucmVxdWVzdE9yaWdpblBvbGljeSgpID09IFBvdGVudGlhbGx5Q3Jv
c3NPcmlnaW5FbmFibGVkICYmICFjaGVja0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbChyZXF1ZXN0
KCksIHJlZGlyZWN0UmVzcG9uc2UsIG5ld1JlcXVlc3QpKSB7CisgICAgICAgIGlmICghY2hlY2tS
ZWRpcmVjdGlvbkNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbChyZXF1ZXN0KCksIHJlZGlyZWN0UmVz
cG9uc2UsIG5ld1JlcXVlc3QpKSB7CiAgICAgICAgICAgICBjYW5jZWwoKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQpAQCAtMjk1LDggKzI5OCw4IEBAIHZvaWQgU3VicmVzb3VyY2VM
b2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSkKICAgICAgICAgLy8gVGhlIHJlc291cmNlIGRhdGEgd2lsbCBjaGFuZ2UgYXMgdGhlIG5leHQg
cGFydCBpcyBsb2FkZWQsIHNvIHdlIG5lZWQgdG8gbWFrZSBhIGNvcHkuCiAgICAgICAgIG1fcmVz
b3VyY2UtPmZpbmlzaExvYWRpbmcoYnVmZmVyLT5jb3B5KCkucHRyKCkpOwogICAgICAgICBjbGVh
clJlc291cmNlRGF0YSgpOwotICAgICAgICAvLyBTaW5jZSBhIHN1YnJlc291cmNlIGxvYWRlciBk
b2VzIG5vdCBsb2FkIG11bHRpcGFydCBzZWN0aW9ucyBwcm9ncmVzc2l2ZWx5LCBkYXRhIHdhcyBk
ZWxpdmVyZWQgdG8gdGhlIGxvYWRlciBhbGwgYXQgb25jZS4gICAgICAgIAotICAgICAgICAvLyBB
ZnRlciB0aGUgZmlyc3QgbXVsdGlwYXJ0IHNlY3Rpb24gaXMgY29tcGxldGUsIHNpZ25hbCB0byBk
ZWxlZ2F0ZXMgdGhhdCB0aGlzIGxvYWQgaXMgImZpbmlzaGVkIiAKKyAgICAgICAgLy8gU2luY2Ug
YSBzdWJyZXNvdXJjZSBsb2FkZXIgZG9lcyBub3QgbG9hZCBtdWx0aXBhcnQgc2VjdGlvbnMgcHJv
Z3Jlc3NpdmVseSwgZGF0YSB3YXMgZGVsaXZlcmVkIHRvIHRoZSBsb2FkZXIgYWxsIGF0IG9uY2Uu
CisgICAgICAgIC8vIEFmdGVyIHRoZSBmaXJzdCBtdWx0aXBhcnQgc2VjdGlvbiBpcyBjb21wbGV0
ZSwgc2lnbmFsIHRvIGRlbGVnYXRlcyB0aGF0IHRoaXMgbG9hZCBpcyAiZmluaXNoZWQiCiAgICAg
ICAgIG1fZG9jdW1lbnRMb2FkZXItPnN1YnJlc291cmNlTG9hZGVyRmluaXNoZWRMb2FkaW5nT25l
UGFydCh0aGlzKTsKICAgICAgICAgZGlkRmluaXNoTG9hZGluZ09uZVBhcnQoMCk7CiAgICAgfQpA
QCAtMzk2LDExICszOTksMTUgQEAgc3RhdGljIHZvaWQgbG9nUmVzb3VyY2VMb2FkZWQoRnJhbWUq
IGZyYW1lLCBDYWNoZWRSZXNvdXJjZTo6VHlwZSB0eXBlKQogICAgIGZyYW1lLT5wYWdlKCktPmRp
YWdub3N0aWNMb2dnaW5nQ2xpZW50KCkubG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFsdWUoRGlh
Z25vc3RpY0xvZ2dpbmdLZXlzOjpyZXNvdXJjZUtleSgpLCBEaWFnbm9zdGljTG9nZ2luZ0tleXM6
OmxvYWRlZEtleSgpLCByZXNvdXJjZVR5cGUsIFNob3VsZFNhbXBsZTo6WWVzKTsKIH0KIAotYm9v
bCBTdWJyZXNvdXJjZUxvYWRlcjo6Y2hlY2tDcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2woY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiBwcmV2aW91c1JlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlZGlyZWN0UmVzcG9uc2UsIFJlc291cmNlUmVxdWVzdCYgbmV3UmVxdWVzdCkKK2Jvb2wgU3Vi
cmVzb3VyY2VMb2FkZXI6OmNoZWNrUmVkaXJlY3Rpb25Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wo
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBwcmV2aW91c1JlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIFJlc291cmNlUmVxdWVzdCYgbmV3UmVxdWVzdCkKIHsK
LSAgICBpZiAobV9vcmlnaW4tPmNhblJlcXVlc3QobmV3UmVxdWVzdC51cmwoKSkpCisgICAgaWYg
KCEobV9vcmlnaW4gJiYgbV9vcmlnaW4tPmNhblJlcXVlc3QobmV3UmVxdWVzdC51cmwoKSkpKQor
ICAgICAgICBtX3Jlc291cmNlLT5zZXRDcm9zc09yaWdpbigpOworCisgICAgaWYgKG9wdGlvbnMo
KS5yZXF1ZXN0T3JpZ2luUG9saWN5KCkgIT0gUG90ZW50aWFsbHlDcm9zc09yaWdpbkVuYWJsZWQg
fHwgIW1fcmVzb3VyY2UtPmlzQ3Jvc3NPcmlnaW4oKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAK
KyAgICBBU1NFUlQobV9vcmlnaW4pOwogICAgIFN0cmluZyBlcnJvckRlc2NyaXB0aW9uOwogICAg
IGJvb2wgcmVzcG9uc2VQYXNzZXNDT1JTID0gbV9vcmlnaW4tPmNhblJlcXVlc3QocHJldmlvdXNS
ZXF1ZXN0LnVybCgpKQogICAgICAgICB8fCBwYXNzZXNBY2Nlc3NDb250cm9sQ2hlY2socmVkaXJl
Y3RSZXNwb25zZSwgb3B0aW9ucygpLmFsbG93Q3JlZGVudGlhbHMoKSwgbV9vcmlnaW4uZ2V0KCks
IGVycm9yRGVzY3JpcHRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1
YnJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2Fk
ZXIuaAppbmRleCA1ZWM3MzExZDA5Y2YxZDMwZGMyNTUwNDVjZjRiOWI1ODBjZTlmZGU4Li4zMWM0
YjNlYTA1NjY4NjQwMGFiNWMyMGQ5MTQxMmU5YjI1ZmM5OWRjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaApAQCAtNiwxMyArNiwxMyBAQAogICogYXJlIG1ldDoK
ICAqCiAgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KICAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAogICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKKyAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgogICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikg
bm9yIHRoZSBuYW1lcyBvZgogICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIAorICogICAg
IGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KICAqCiAgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQogICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRApAQCAtOTEs
NyArOTEsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAgICBib29sIGNoZWNrRm9ySFRUUFN0YXR1
c0NvZGVFcnJvcigpOwotICAgIGJvb2wgY2hlY2tDcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2woY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291cmNlUmVx
dWVzdCYgbmV3UmVxdWVzdCk7CisgICAgYm9vbCBjaGVja1JlZGlyZWN0aW9uQ3Jvc3NPcmlnaW5B
Y2Nlc3NDb250cm9sKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmLCBSZXNvdXJjZVJlcXVlc3QmIG5ld1JlcXVlc3QpOwogCiAgICAgdm9pZCBkaWRSZWNlaXZl
RGF0YU9yQnVmZmVyKGNvbnN0IGNoYXIqLCBpbnQsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGxv
bmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKaW5kZXggNTU3M2M0ZGVl
Y2I3N2UxNTUxMDU4YmE2YjA4OTM5YWE4YTRmYjI3MS4uOWUwZWU3MTk1ODU3ZGQ3YjE5OGE1Yjc2
N2Q1MzAwMjBlZjA3NDlkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2UuY3BwCkBAIC0yNzUsOCArMjc1LDE0IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6
OmxvYWQoQ2FjaGVkUmVzb3VyY2VMb2FkZXImIGNhY2hlZFJlc291cmNlTG9hZGVyLCBjb25zdCBS
ZXNvCiAjZW5kaWYKICAgICBtX3Jlc291cmNlUmVxdWVzdC5zZXRQcmlvcml0eShsb2FkUHJpb3Jp
dHkoKSk7CiAKLSAgICBpZiAodHlwZSgpICE9IE1haW5SZXNvdXJjZSkKKyAgICBpZiAodHlwZSgp
ICE9IE1haW5SZXNvdXJjZSkgeworICAgICAgICBpZiAobV9yZXNvdXJjZVJlcXVlc3QuaGFzSFRU
UE9yaWdpbigpIHx8IG1fb3B0aW9ucy5yZXF1ZXN0T3JpZ2luUG9saWN5KCkgPT0gUG90ZW50aWFs
bHlDcm9zc09yaWdpbkVuYWJsZWQpCisgICAgICAgICAgICBtX29yaWdpbiA9IFNlY3VyaXR5T3Jp
Z2luOjpjcmVhdGVGcm9tU3RyaW5nKG1fcmVzb3VyY2VSZXF1ZXN0Lmh0dHBPcmlnaW4oKSk7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fb3JpZ2luID0gY2FjaGVkUmVzb3VyY2VMb2FkZXIu
ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKTsKKyAgICAgICAgQVNTRVJUKG1fb3JpZ2luKTsK
ICAgICAgICAgYWRkQWRkaXRpb25hbFJlcXVlc3RIZWFkZXJzKGNhY2hlZFJlc291cmNlTG9hZGVy
KTsKKyAgICB9CiAKICAgICAvLyBGSVhNRTogSXQncyB1bmZvcnR1bmF0ZSB0aGF0IHRoZSBjYWNo
ZSBsYXllciBhbmQgYmVsb3cgZ2V0IHRvIGtub3cgYW55dGhpbmcgYWJvdXQgZnJhZ21lbnQgaWRl
bnRpZmllcnMuCiAgICAgLy8gV2Ugc2hvdWxkIGxvb2sgaW50byByZW1vdmluZyB0aGUgZXhwZWN0
YXRpb24gb2YgdGhhdCBrbm93bGVkZ2UgZnJvbSB0aGUgcGxhdGZvcm0gbmV0d29yayBzdGFja3Mu
CkBAIC0zNjIsNiArMzY4LDI1IEBAIGJvb2wgQ2FjaGVkUmVzb3VyY2U6OnBhc3Nlc1NhbWVPcmln
aW5Qb2xpY3lDaGVjayhTZWN1cml0eU9yaWdpbiYgc2VjdXJpdHlPcmlnaW4pCiAgICAgcmV0dXJu
IHBhc3Nlc0FjY2Vzc0NvbnRyb2xDaGVjayhzZWN1cml0eU9yaWdpbik7CiB9CiAKK3ZvaWQgQ2Fj
aGVkUmVzb3VyY2U6OnNldENyb3NzT3JpZ2luKCkKK3sKKyAgICBBU1NFUlQobV9vcHRpb25zLnJl
cXVlc3RPcmlnaW5Qb2xpY3koKSAhPSBSZXN0cmljdFRvU2FtZU9yaWdpbik7CisgICAgbV9yZXNw
b25zZVR5cGUgPSAobV9vcHRpb25zLnJlcXVlc3RPcmlnaW5Qb2xpY3koKSA9PSBQb3RlbnRpYWxs
eUNyb3NzT3JpZ2luRW5hYmxlZCkgPyBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6VHlwZTo6Q29ycyA6
IFJlc291cmNlUmVzcG9uc2VCYXNlOjpUeXBlOjpPcGFxdWU7Cit9CisKK2Jvb2wgQ2FjaGVkUmVz
b3VyY2U6OmlzQ3Jvc3NPcmlnaW4oKSBjb25zdAoreworICAgIEFTU0VSVChtX29wdGlvbnMucmVx
dWVzdE9yaWdpblBvbGljeSgpICE9IFJlc3RyaWN0VG9TYW1lT3JpZ2luKTsKKyAgICByZXR1cm4g
bV9yZXNwb25zZVR5cGUgPT0gUmVzb3VyY2VSZXNwb25zZUJhc2U6OlR5cGU6OkNvcnMgfHwgbV9y
ZXNwb25zZVR5cGUgPT0gUmVzb3VyY2VSZXNwb25zZUJhc2U6OlR5cGU6Ok9wYXF1ZTsKK30KKwor
Ym9vbCBDYWNoZWRSZXNvdXJjZTo6aXNDbGVhbigpIGNvbnN0Cit7CisgICAgLy8gaHR0cHM6Ly9o
dG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvaW5mcmFzdHJ1Y3R1cmUuaHRtbCNjb3JzLXNh
bWUtb3JpZ2luCisgICAgQVNTRVJUKG1fcmVzcG9uc2VUeXBlICE9IFJlc291cmNlUmVzcG9uc2VC
YXNlOjpUeXBlOjpPcGFxdWVyZWRpcmVjdCAmJiBtX3Jlc3BvbnNlVHlwZSAhPSBSZXNvdXJjZVJl
c3BvbnNlQmFzZTo6VHlwZTo6RXJyb3IpOworICAgIHJldHVybiAhbG9hZEZhaWxlZE9yQ2FuY2Vs
ZWQoKSAmJiBtX3Jlc3BvbnNlVHlwZSAhPSBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6VHlwZTo6T3Bh
cXVlOworfQorCiBib29sIENhY2hlZFJlc291cmNlOjppc0V4cGlyZWQoKSBjb25zdAogewogICAg
IGlmIChtX3Jlc3BvbnNlLmlzTnVsbCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2UuaAppbmRleCBkNDBlOTU4MDQ4MWU4MDdhY2IzNTE3NDE1ODY2NGFhNjI2
ODk5NDY1Li5jMzY0OGY0YWEwNzk2YjhmNTk2NTk0MjQzM2E4MzVkNWFmM2E5Yzc1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaApAQCAtMjAwLDExICsy
MDAsMTcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2FjaGVSZXNwb25z
ZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZvaWQgc2V0
UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwotICAgIHZvaWQgc2V0T3BhcXVlUmVk
aXJlY3QoKSB7IG1fcmVzcG9uc2VUeXBlID0gUmVzb3VyY2VSZXNwb25zZUJhc2U6OlR5cGU6Ok9w
YXF1ZXJlZGlyZWN0OyB9CiAgICAgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UoKSBj
b25zdCB7IHJldHVybiBtX3Jlc3BvbnNlOyB9CiAgICAgLy8gVGhpcyBpcyB0aGUgc2FtZSBhcyBy
ZXNwb25zZSgpIGV4Y2VwdCBhZnRlciBIVFRQIHJlZGlyZWN0IHRvIGRhdGE6IFVSTC4KICAgICBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZUZvclNhbWVPcmlnaW5Qb2xpY3lDaGVja3Mo
KSBjb25zdDsKIAorICAgIHZvaWQgc2V0T3BhcXVlUmVkaXJlY3QoKSB7IG1fcmVzcG9uc2VUeXBl
ID0gUmVzb3VyY2VSZXNwb25zZUJhc2U6OlR5cGU6Ok9wYXF1ZXJlZGlyZWN0OyB9CisgICAgdm9p
ZCBzZXRDcm9zc09yaWdpbigpOworICAgIGJvb2wgaXNDcm9zc09yaWdpbigpIGNvbnN0OworICAg
IGJvb2wgaXNDbGVhbigpIGNvbnN0OworCisgICAgU2VjdXJpdHlPcmlnaW4qIG9yaWdpbigpIGNv
bnN0IHsgcmV0dXJuIG1fb3JpZ2luLmdldCgpOyB9CisKICAgICBib29sIGNhbkRlbGV0ZSgpIGNv
bnN0IHsgcmV0dXJuICFoYXNDbGllbnRzKCkgJiYgIW1fbG9hZGVyICYmICFtX3ByZWxvYWRDb3Vu
dCAmJiAhbV9oYW5kbGVDb3VudCAmJiAhbV9yZXNvdXJjZVRvUmV2YWxpZGF0ZSAmJiAhbV9wcm94
eVJlc291cmNlOyB9CiAgICAgYm9vbCBoYXNPbmVIYW5kbGUoKSBjb25zdCB7IHJldHVybiBtX2hh
bmRsZUNvdW50ID09IDE7IH0KIApAQCAtMzEzLDYgKzMxOSw3IEBAIHByaXZhdGU6CiAgICAgU3Ry
aW5nIG1fZnJhZ21lbnRJZGVudGlmaWVyRm9yUmVxdWVzdDsKIAogICAgIFJlc291cmNlRXJyb3Ig
bV9lcnJvcjsKKyAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG1fb3JpZ2luOwogCiAgICAgZG91
YmxlIG1fbGFzdERlY29kZWRBY2Nlc3NUaW1lOyAvLyBVc2VkIGFzIGEgInRocmFzaCBndWFyZCIg
aW4gdGhlIGNhY2hlCiAgICAgZG91YmxlIG1fbG9hZEZpbmlzaFRpbWU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcApp
bmRleCBhNDhiZTRmOTg2MmMzZDUyYmM1ZDY1ZjhlZjU3MmE0MWE0Yjk3Y2JmLi4xNzQ5NjNlMTg4
Nzc2NDMzZDNkYzk5ZDgwZjQ1ZGI5OWMxMzMzYzFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAKQEAgLTMxMyw5
ICszMTMsMTQgQEAgdm9pZCBSZXNvdXJjZVJlcXVlc3RCYXNlOjpzZXRIVFRQT3JpZ2luKGNvbnN0
IFN0cmluZyYgaHR0cE9yaWdpbikKICAgICBzZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5h
bWU6Ok9yaWdpbiwgaHR0cE9yaWdpbik7CiB9CiAKK2Jvb2wgUmVzb3VyY2VSZXF1ZXN0QmFzZTo6
aGFzSFRUUE9yaWdpbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faHR0cEhlYWRlckZpZWxkcy5j
b250YWlucyhIVFRQSGVhZGVyTmFtZTo6T3JpZ2luKTsKK30KKwogdm9pZCBSZXNvdXJjZVJlcXVl
c3RCYXNlOjpjbGVhckhUVFBPcmlnaW4oKQogewotICAgIHVwZGF0ZVJlc291cmNlUmVxdWVzdCgp
OyAKKyAgICB1cGRhdGVSZXNvdXJjZVJlcXVlc3QoKTsKIAogICAgIG1faHR0cEhlYWRlckZpZWxk
cy5yZW1vdmUoSFRUUEhlYWRlck5hbWU6Ok9yaWdpbik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmgKaW5kZXggNmUwYmJl
MDIwYjllODc5OGRiNzAwZWI0ZDU2M2Y0YTcwODZhOTU5MC4uZDNhYzM5MWVmYTRhNTlmYTZhYjFh
OGMxYTMxNjc2NmYwMmFhODc1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmgKQEAgLTIyLDcgKzIyLDcgQEAKICAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKICAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAgKi8KIAogI2lmbmRlZiBSZXNvdXJjZVJlcXVlc3RCYXNlX2gKQEAgLTEwMCw4
ICsxMDAsOSBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGh0dHBSZWZlcnJl
cigpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0SFRUUFJlZmVycmVyKGNvbnN0
IFN0cmluZyYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXJIVFRQUmVmZXJyZXIoKTsK
LSAgICAKKwogICAgIFN0cmluZyBodHRwT3JpZ2luKCkgY29uc3Q7CisgICAgYm9vbCBoYXNIVFRQ
T3JpZ2luKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRIVFRQT3JpZ2luKGNvbnN0IFN0cmluZyYpOwog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXJIVFRQT3JpZ2luKCk7CiAKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBkMDFj
MTNlYjM5NGNhYmYyN2VhZjY3MTdlYTdlNmQyMDE3OGNiNGE0Li45OWRhNWNhZDM1NGY2MTIxOWU3
Njk2M2I2OGY3YTMxMmUzZmRmN2MwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
KysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTYtMDYtMTUg
IFlvdWVubiBGYWJsZXQgIDx5b3Vlbm4uZmFibGV0QGNyZi5jYW5vbi5mcj4KKworICAgICAgICBD
bGVhbiBDU1Mgc3R5bGVzaGVldHMgc2hvdWxkIGJlIGFjY2Vzc2libGUgZnJvbSBKYXZhU2NyaXB0
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTg3MjgK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0dHAv
dGVzdHMvc2VjdXJpdHkvY2Fubm90LXJlYWQtY3NzcnVsZXMtcmVkaXJlY3QtZXhwZWN0ZWQudHh0
OgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvY2Fubm90LXJlYWQtY3NzcnVsZXMtcmVk
aXJlY3QuaHRtbDogQWRkaW5nIG1vcmUgdGVzdHMgcmVsYXRlZCB0byBDT1JTLgorICAgICAgICAq
IGh0dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3Mtb3JpZ2luLWNzcy05Lmh0bWw6IEFjdGl2YXRpbmcg
SlMgdmlzaWJpbGl0eSBjaGVja3MuCisKIDIwMTYtMDYtMTQgIE15bGVzIEMuIE1heGZpZWxkICA8
bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBIb25vciBiaWRpIHVuaWNvZGUgY29kZXBv
aW50cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jYW5ub3Qt
cmVhZC1jc3NydWxlcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3Vy
aXR5L2Nhbm5vdC1yZWFkLWNzc3J1bGVzLWV4cGVjdGVkLnR4dAppbmRleCA3YTc4YmFiYzJhNWQ4
NDQ3ZjA0YjU5NGJiMjJkMGUyYWU0Mjk2NDM1Li5iOTE1MTIyZjczOTY4OThjMWNlZmVhZGY5OGI1
NmRiMzY3M2UzMDdkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5
L2Nhbm5vdC1yZWFkLWNzc3J1bGVzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3NlY3VyaXR5L2Nhbm5vdC1yZWFkLWNzc3J1bGVzLWV4cGVjdGVkLnR4dApAQCAtMSwx
MCArMSwyMiBAQAogVGhpcyB0ZXN0IHdoZXRoZXIgYSBzY3JpcHQgY2FuIHJlYWQgdGhlIHJ1bGVz
IGZyb20gYSBjcm9zcy1vcmlnaW4gc3R5bGUgc2hlZXQuIEZvciBtb3JlIGluZm9ybWF0aW9uIG9u
IHdoeSB3ZSBibG9jayB0aGlzLCBwbGVhc2Ugc2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMDUyNy4KIAogVGVzdCBiZWdpbnMuCi09PSBDcm9zcy1PcmlnaW4gPT0K
Kz09IENyb3NzLU9yaWdpbiByZXNvdXJjZSwgbm8tY29ycyBtb2RlID09CiBjc3NSdWxlczogbnVs
bAogcnVsZXM6IG51bGwKLT09IFNhbWUtT3JpZ2luID09Cis9PSBTYW1lLU9yaWdpbiByZXNvdXJj
ZSwgbm8tY29ycyBtb2RlID09CiBjc3NSdWxlczogW29iamVjdCBDU1NSdWxlTGlzdF0KK2Nzc1J1
bGVzIGxlbmd0aDogMQogcnVsZXM6IFtvYmplY3QgQ1NTUnVsZUxpc3RdCitydWxlcyBsZW5ndGg6
IDEKKz09IENyb3NzLU9yaWdpbiByZXNvdXJjZSwgY29ycyBtb2RlLCBmYWlsaW5nIGNvcnMgY2hl
Y2sgPT0KK2Nzc1J1bGVzOiBbb2JqZWN0IENTU1J1bGVMaXN0XQorY3NzUnVsZXMgbGVuZ3RoOiAx
CitydWxlczogW29iamVjdCBDU1NSdWxlTGlzdF0KK3J1bGVzIGxlbmd0aDogMQorPT0gQ3Jvc3Mt
T3JpZ2luIHJlc291cmNlLCBjb3JzIG1vZGUsIHN1Y2Nlc3NmdWwgY29ycyBjaGVjayA9PQorY3Nz
UnVsZXM6IFtvYmplY3QgQ1NTUnVsZUxpc3RdCitjc3NSdWxlcyBsZW5ndGg6IDEKK3J1bGVzOiBb
b2JqZWN0IENTU1J1bGVMaXN0XQorcnVsZXMgbGVuZ3RoOiAxCiBUZXN0IGVuZHMuCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Nhbm5vdC1yZWFkLWNzc3J1bGVz
LXJlZGlyZWN0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkv
Y2Fubm90LXJlYWQtY3NzcnVsZXMtcmVkaXJlY3QtZXhwZWN0ZWQudHh0CmluZGV4IDA2MjY0NmZk
NDJkOWZlYjhkM2NlM2VmZTgwYTc4NDVkN2U2YTIzOTYuLjE0NmY2ZDA0MzNkZTMxYTMwMjYyMDQ0
OGQyYmEyYmExMGFlOTBmNWIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2Vj
dXJpdHkvY2Fubm90LXJlYWQtY3NzcnVsZXMtcmVkaXJlY3QtZXhwZWN0ZWQudHh0CisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY2Fubm90LXJlYWQtY3NzcnVsZXMtcmVkaXJl
Y3QtZXhwZWN0ZWQudHh0CkBAIC0xLDEwICsxLDI0IEBACitDT05TT0xFIE1FU1NBR0U6IENyb3Nz
LW9yaWdpbiByZWRpcmVjdGlvbiBkZW5pZWQgYnkgQ3Jvc3MtT3JpZ2luIFJlc291cmNlIFNoYXJp
bmcgcG9saWN5OiBPcmlnaW4gaHR0cDovLzEyNy4wLjAuMTo4MDAwIGlzIG5vdCBhbGxvd2VkIGJ5
IEFjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbi4KIFRoaXMgdGVzdCB3aGV0aGVyIGEgc2NyaXB0
IGNhbiByZWFkIHRoZSBydWxlcyBmcm9tIGEgY3Jvc3Mtb3JpZ2luIHN0eWxlIHNoZWV0IGluIHRo
ZSBwcmVzZW5jZSBvZiByZWRpcmVjdHMuIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHdoeSB3ZSBi
bG9jayB0aGlzLCBwbGVhc2Ugc2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDUyNy4KIAogVGVzdCBiZWdpbnMuCi09PSBTYW1lLU9yaWdpbiB0byBDcm9zcy1Pcmln
aW4gPT0KKz09IFNhbWUtT3JpZ2luIHRvIENyb3NzLU9yaWdpbiwgbm8tY29ycyBtb2RlID09CiBj
c3NSdWxlczogbnVsbAogcnVsZXM6IG51bGwKLT09IENyb3NzLU9yaWdpbiB0byBTYW1lLU9yaWdp
biA9PQorPT0gQ3Jvc3MtT3JpZ2luIHRvIFNhbWUtT3JpZ2luLCBuby1jb3JzIG1vZGUgPT0KK2Nz
c1J1bGVzOiBudWxsCitydWxlczogbnVsbAorPT0gU2FtZS1PcmlnaW4gdG8gU2FtZS1PcmlnaW4s
IGNvcnMgbW9kZSA9PQorY3NzUnVsZXM6IFtvYmplY3QgQ1NTUnVsZUxpc3RdCitjc3NSdWxlcyBs
ZW5ndGg6IDEKK3J1bGVzOiBbb2JqZWN0IENTU1J1bGVMaXN0XQorcnVsZXMgbGVuZ3RoOiAxCis9
PSBDcm9zcy1PcmlnaW4gdG8gU2FtZS1PcmlnaW4sIGNvcnMgbW9kZSwgc3VjY2Vzc2Z1bCBjb3Jz
IGNoZWNrID09CiBjc3NSdWxlczogW29iamVjdCBDU1NSdWxlTGlzdF0KK2Nzc1J1bGVzIGxlbmd0
aDogMQogcnVsZXM6IFtvYmplY3QgQ1NTUnVsZUxpc3RdCitydWxlcyBsZW5ndGg6IDEKKz09IENy
b3NzLU9yaWdpbiB0byBTYW1lLU9yaWdpbiwgY29ycyBtb2RlLCBmYWlsaW5nIGNvcnMgY2hlY2sg
PT0KK2Nzc1J1bGVzOiBudWxsCitydWxlczogbnVsbAogVGVzdCBlbmRzLgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jYW5ub3QtcmVhZC1jc3NydWxlcy1yZWRp
cmVjdC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jYW5ub3QtcmVhZC1j
c3NydWxlcy1yZWRpcmVjdC5odG1sCmluZGV4IGE0NWEzODUwYjI5NWMzMzVjNWVmMDMyMDNiZDY3
OWZkZDE3NDRmNzIuLmNmZWY5YjU2OTYyY2E3NThiOTQ3ZGRlZTNhZjQ4NjUwNGYxNmFiMGQgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY2Fubm90LXJlYWQtY3Nz
cnVsZXMtcmVkaXJlY3QuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5
L2Nhbm5vdC1yZWFkLWNzc3J1bGVzLXJlZGlyZWN0Lmh0bWwKQEAgLTUsNiArNSwxMiBAQAogICAg
ICAgaHJlZj0iL3Jlc291cmNlcy9yZWRpcmVjdC5waHA/dXJsPWh0dHA6Ly9sb2NhbGhvc3Q6ODAw
MC9zZWN1cml0eS9yZXNvdXJjZXMvY3NzU3R5bGUuY3NzIj4KIDxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIKICAgICAgIGhyZWY9Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9yZXNvdXJjZXMvcmVkaXJlY3Qu
cGhwP3VybD1odHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvcmVzb3VyY2VzL2Nzc1N0eWxl
LmNzcyI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiCisgICAgICBocmVmPSIvcmVzb3VyY2VzL3Jl
ZGlyZWN0LnBocD91cmw9aHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L3Jlc291cmNlcy9j
c3NTdHlsZS5jc3MiIGNyb3Nzb3JpZ2luPSIiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IgorICAg
ICAgaHJlZj0iaHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L3Jlc291cmNlcy9yZWRpcmVj
dC1hbGxvdy1zdGFyLnBocD91cmw9aHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L3Jlc291
cmNlcy94b3JpZ2luY3NzMS1hbGxvdy1zdGFyLnBocCIgY3Jvc3NvcmlnaW49IiI+Cis8bGluayBy
ZWw9InN0eWxlc2hlZXQiCisgICAgICBocmVmPSJodHRwOi8vbG9jYWxob3N0OjgwMDAvcmVzb3Vy
Y2VzL3JlZGlyZWN0LnBocD91cmw9aHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L3Jlc291
cmNlcy94b3JpZ2luY3NzMS5jc3MiIGNyb3Nzb3JpZ2luPSIiPgogPHNjcmlwdD4KIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikKICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKQEAgLTE1LDE2ICsy
MSwzOCBAQCBmdW5jdGlvbiBsb2cobXNnKSB7CiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ImNvbnNvbGUiKS5hcHBlbmRDaGlsZChkaXYpOwogfQogCitmdW5jdGlvbiBjaGVja0NTU1J1bGVz
KHNoZWV0KQoreworICAgIHRyeSB7CisgICAgICAgIHZhciBjc3NSdWxlcyA9IHNoZWV0LmNzc1J1
bGVzOworICAgICAgICBsb2coImNzc1J1bGVzOiAiICsgY3NzUnVsZXMpOworICAgICAgICBpZiAo
Y3NzUnVsZXMpCisgICAgICAgICAgICBsb2coImNzc1J1bGVzIGxlbmd0aDogIiArIGNzc1J1bGVz
Lmxlbmd0aCk7CisgICAgfSBjYXRjaChlKSB7CisgICAgICAgIGxvZygiZXhjZXB0aW9uIHRocm93
biBmb3IgY3NzUnVsZXM6ICIgKyBlKTsKKyAgICB9CisgICAgdHJ5IHsKKyAgICAgICAgdmFyIHJ1
bGVzID0gc2hlZXQucnVsZXM7CisgICAgICAgIGxvZygicnVsZXM6ICIgKyBydWxlcyk7CisgICAg
ICAgIGlmIChydWxlcykKKyAgICAgICAgICAgIGxvZygicnVsZXMgbGVuZ3RoOiAiICsgcnVsZXMu
bGVuZ3RoKTsKKyAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgbG9nKCJleGNlcHRpb24gdGhyb3du
IGZvciBydWxlczogIiArIGUpOworICAgIH0KK30KKwogd2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9u
KCkgewogICAgIGxvZygiVGVzdCBiZWdpbnMuIik7Ci0gICAgbG9nKCI9PSBTYW1lLU9yaWdpbiB0
byBDcm9zcy1PcmlnaW4gPT0iKTsKLSAgICB2YXIgc2hlZXQxID0gZG9jdW1lbnQuc3R5bGVTaGVl
dHNbMF07Ci0gICAgbG9nKCJjc3NSdWxlczogIiArIHNoZWV0MS5jc3NSdWxlcyk7Ci0gICAgbG9n
KCJydWxlczogIiArIHNoZWV0MS5ydWxlcyk7Ci0gICAgbG9nKCI9PSBDcm9zcy1PcmlnaW4gdG8g
U2FtZS1PcmlnaW4gPT0iKTsKLSAgICB2YXIgc2hlZXQyID0gZG9jdW1lbnQuc3R5bGVTaGVldHNb
MV07Ci0gICAgbG9nKCJjc3NSdWxlczogIiArIHNoZWV0Mi5jc3NSdWxlcyk7Ci0gICAgbG9nKCJy
dWxlczogIiArIHNoZWV0Mi5ydWxlcyk7CisgICAgbG9nKCI9PSBTYW1lLU9yaWdpbiB0byBDcm9z
cy1PcmlnaW4sIG5vLWNvcnMgbW9kZSA9PSIpOworICAgIGNoZWNrQ1NTUnVsZXMoZG9jdW1lbnQu
c3R5bGVTaGVldHNbMF0pOworICAgIGxvZygiPT0gQ3Jvc3MtT3JpZ2luIHRvIFNhbWUtT3JpZ2lu
LCBuby1jb3JzIG1vZGUgPT0iKTsKKyAgICBjaGVja0NTU1J1bGVzKGRvY3VtZW50LnN0eWxlU2hl
ZXRzWzFdKTsKKyAgICBsb2coIj09IFNhbWUtT3JpZ2luIHRvIFNhbWUtT3JpZ2luLCBjb3JzIG1v
ZGUgPT0iKTsKKyAgICBjaGVja0NTU1J1bGVzKGRvY3VtZW50LnN0eWxlU2hlZXRzWzJdKTsKKyAg
ICBsb2coIj09IENyb3NzLU9yaWdpbiB0byBTYW1lLU9yaWdpbiwgY29ycyBtb2RlLCBzdWNjZXNz
ZnVsIGNvcnMgY2hlY2sgPT0iKTsKKyAgICBjaGVja0NTU1J1bGVzKGRvY3VtZW50LnN0eWxlU2hl
ZXRzWzNdKTsKKyAgICBsb2coIj09IENyb3NzLU9yaWdpbiB0byBTYW1lLU9yaWdpbiwgY29ycyBt
b2RlLCBmYWlsaW5nIGNvcnMgY2hlY2sgPT0iKTsKKyAgICBjaGVja0NTU1J1bGVzKGRvY3VtZW50
LnN0eWxlU2hlZXRzWzRdKTsKICAgICBsb2coIlRlc3QgZW5kcy4iKTsKIH0KIDwvc2NyaXB0Pgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jYW5ub3QtcmVhZC1j
c3NydWxlcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jYW5ub3QtcmVh
ZC1jc3NydWxlcy5odG1sCmluZGV4IDYyNjA5MmJkNDNkOTg1ZjE4MGQ0ZmNmY2E4OTg3ZDcwZDYx
MDQwYjUuLjYzZmQ2Y2UxODA5NjhlNDM4MTBiZGVmODM3OGFlZGUwM2Y2ZTUxYmIgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY2Fubm90LXJlYWQtY3NzcnVsZXMu
aHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Nhbm5vdC1yZWFkLWNz
c3J1bGVzLmh0bWwKQEAgLTQsNiArNCwxMCBAQAogPGxpbmsgcmVsPSJzdHlsZXNoZWV0IgogICAg
ICAgaHJlZj0iaHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L3Jlc291cmNlcy9jc3NTdHls
ZS5jc3MiPgogPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMvY3NzU3R5bGUu
Y3NzIj4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIKKyAgICAgIGhyZWY9Imh0dHA6Ly9sb2NhbGhv
c3Q6ODAwMC9zZWN1cml0eS9yZXNvdXJjZXMvY3NzU3R5bGUuY3NzIiBjcm9zc29yaWdpbj0iIj4K
KzxsaW5rIHJlbD0ic3R5bGVzaGVldCIKKyAgICAgIGhyZWY9Imh0dHA6Ly9sb2NhbGhvc3Q6ODAw
MC9zZWN1cml0eS9yZXNvdXJjZXMveG9yaWdpbmNzczEtYWxsb3ctc3Rhci5waHAiIGNyb3Nzb3Jp
Z2luPSIiPgogPHNjcmlwdD4KIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKICAgICB0ZXN0UnVubmVy
LmR1bXBBc1RleHQoKTsKQEAgLTE0LDE2ICsxOCwzNiBAQCBmdW5jdGlvbiBsb2cobXNnKSB7CiAg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5hcHBlbmRDaGlsZChkaXYpOwog
fQogCitmdW5jdGlvbiBjaGVja0NTU1J1bGVzKHNoZWV0KQoreworICAgIHRyeSB7CisgICAgICAg
IHZhciBjc3NSdWxlcyA9IHNoZWV0LmNzc1J1bGVzOworICAgICAgICBsb2coImNzc1J1bGVzOiAi
ICsgY3NzUnVsZXMpOworICAgICAgICBpZiAoY3NzUnVsZXMpCisgICAgICAgICAgICBsb2coImNz
c1J1bGVzIGxlbmd0aDogIiArIGNzc1J1bGVzLmxlbmd0aCk7CisgICAgfSBjYXRjaChlKSB7Cisg
ICAgICAgIGxvZygiZXhjZXB0aW9uIHRocm93biBmb3IgY3NzUnVsZXM6ICIgKyBlKTsKKyAgICB9
CisgICAgdHJ5IHsKKyAgICAgICAgdmFyIHJ1bGVzID0gc2hlZXQucnVsZXM7CisgICAgICAgIGxv
ZygicnVsZXM6ICIgKyBydWxlcyk7CisgICAgICAgIGlmIChydWxlcykKKyAgICAgICAgICAgIGxv
ZygicnVsZXMgbGVuZ3RoOiAiICsgcnVsZXMubGVuZ3RoKTsKKyAgICB9IGNhdGNoKGUpIHsKKyAg
ICAgICAgbG9nKCJleGNlcHRpb24gdGhyb3duIGZvciBydWxlczogIiArIGUpOworICAgIH0KK30K
Kwogd2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkgewogICAgIGxvZygiVGVzdCBiZWdpbnMuIik7
Ci0gICAgbG9nKCI9PSBDcm9zcy1PcmlnaW4gPT0iKTsKLSAgICB2YXIgc2hlZXQxID0gZG9jdW1l
bnQuc3R5bGVTaGVldHNbMF07Ci0gICAgbG9nKCJjc3NSdWxlczogIiArIHNoZWV0MS5jc3NSdWxl
cyk7Ci0gICAgbG9nKCJydWxlczogIiArIHNoZWV0MS5ydWxlcyk7Ci0gICAgbG9nKCI9PSBTYW1l
LU9yaWdpbiA9PSIpOwotICAgIHZhciBzaGVldDIgPSBkb2N1bWVudC5zdHlsZVNoZWV0c1sxXTsK
LSAgICBsb2coImNzc1J1bGVzOiAiICsgc2hlZXQyLmNzc1J1bGVzKTsKLSAgICBsb2coInJ1bGVz
OiAiICsgc2hlZXQyLnJ1bGVzKTsKKyAgICBsb2coIj09IENyb3NzLU9yaWdpbiByZXNvdXJjZSwg
bm8tY29ycyBtb2RlID09Iik7CisgICAgY2hlY2tDU1NSdWxlcyhkb2N1bWVudC5zdHlsZVNoZWV0
c1swXSk7CisgICAgbG9nKCI9PSBTYW1lLU9yaWdpbiByZXNvdXJjZSwgbm8tY29ycyBtb2RlID09
Iik7CisgICAgY2hlY2tDU1NSdWxlcyhkb2N1bWVudC5zdHlsZVNoZWV0c1sxXSk7CisgICAgbG9n
KCI9PSBDcm9zcy1PcmlnaW4gcmVzb3VyY2UsIGNvcnMgbW9kZSwgZmFpbGluZyBjb3JzIGNoZWNr
ID09Iik7CisgICAgY2hlY2tDU1NSdWxlcyhkb2N1bWVudC5zdHlsZVNoZWV0c1syXSk7CisgICAg
bG9nKCI9PSBDcm9zcy1PcmlnaW4gcmVzb3VyY2UsIGNvcnMgbW9kZSwgc3VjY2Vzc2Z1bCBjb3Jz
IGNoZWNrID09Iik7CisgICAgY2hlY2tDU1NSdWxlcyhkb2N1bWVudC5zdHlsZVNoZWV0c1szXSk7
CiAgICAgbG9nKCJUZXN0IGVuZHMuIik7CiB9CiA8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3Mtb3JpZ2luLWNzcy05Lmh0bWwgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3NzLW9yaWdpbi1jc3MtOS5odG1sCmluZGV4
IDYxYjI1MDI0OGFiYTkxYjQ4ZmYyOGI0MWVmNGZhZWU0NDc3YTc1MjQuLjViOTA2MWVmYjkxNmQy
YTg3ZWI4NTkzNzMxYzEzYzI3NTA0NzQ2ZmYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvc2VjdXJpdHkvY3Jvc3Mtb3JpZ2luLWNzcy05Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1vcmlnaW4tY3NzLTkuaHRtbApAQCAtMjEsOCArMjEs
NyBAQCBmdW5jdGlvbiBjaGVja0NTU0xvYWRpbmcoaWQsIGV4cGVjdFRvSW5jbHVkZU9yaWdpbiwg
ZXhwZWN0VmlzaWJpbGl0eSkKIHsKICAgICBleHBlY3RlZENvbG9yID0gZXhwZWN0VG9JbmNsdWRl
T3JpZ2luID8gInJnYigyNTUsIDI1NSwgMCkiIDogInJnYigwLCAwLCAyNTUpIjsKICAgICBhc3Nl
cnRfZXF1YWxzKGdldEJhY2tncm91bmRDb2xvckZvcklkKGlkKSwgZXhwZWN0ZWRDb2xvcik7Ci0g
ICAgLy8gRklYTUU6IGNzc1J1bGVzIHNob3VsZCBiZSBtYWRlIHZpc2libGUgYWNjb3JkaW5nIHJl
c291cmNlIHRhaW50ZWQgc3RhdHVzLCBub3Qgb25seSBiYXNlZCBvbiB0aGUgcmVzb3VyY2UgVVJM
IGJlaW5nIGNyb3NzIG9yaWdpbi4KLSAgICAvLyBhc3NlcnRfZXF1YWxzKGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJsaW5rLSIgKyBpZCkuc2hlZXQuY3NzUnVsZXMgIT09IG51bGwsIGV4cGVjdFZp
c2liaWxpdHkpOworICAgIGFzc2VydF9lcXVhbHMoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxp
bmstIiArIGlkKS5zaGVldC5jc3NSdWxlcyAhPT0gbnVsbCwgZXhwZWN0VmlzaWJpbGl0eSk7CiB9
CiAKIHZhciBvbmxvYWRUZXN0ID0gYXN5bmNfdGVzdCgiIFRlc3RpbmcgdGhhdCBsaW5rIGVsZW1l
bnQgdG8gbG9hZCBzdHlsZXNoZWV0cyBjb3JyZWN0bHkgaGFuZGxlIGNyb3Nzb3JpZ2luIG1vZGUu
Iik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Jlc291cmNl
cy94b3JpZ2luY3NzMS1hbGxvdy1zdGFyLnBocCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2Vj
dXJpdHkvcmVzb3VyY2VzL3hvcmlnaW5jc3MxLWFsbG93LXN0YXIucGhwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ0
Nzk4NDQxNDhmNDA5ZDIwNDdiYzIwN2JiZTJlM2Y1YTQ0NjAzNzgKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Jlc291cmNlcy94b3JpZ2luY3NzMS1h
bGxvdy1zdGFyLnBocApAQCAtMCwwICsxLDExIEBACis8P3BocAoraGVhZGVyKCJBY2Nlc3MtQ29u
dHJvbC1BbGxvdy1PcmlnaW46ICoiKTsKKworJG5hbWUgPSAneG9yaWdpbmNzczEuY3NzJzsKKyRm
cCA9IGZvcGVuKCRuYW1lLCAncmInKTsKK2hlYWRlcigiQ29udGVudC1UeXBlOiB0ZXh0L2NzcyIp
OworaGVhZGVyKCJDb250ZW50LUxlbmd0aDogIiAuIGZpbGVzaXplKCRuYW1lKSk7CisKK2ZwYXNz
dGhydSgkZnApOworZXhpdDsKKz8+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>281836</attachid>
            <date>2016-06-22 04:23:51 -0700</date>
            <delta_ts>2016-06-23 07:54:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158728-20160622132341.patch</filename>
            <type>text/plain</type>
            <size>36270</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAyMzI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDJjZTM0ZDlmYjcwMjI0
Yjg1Y2ExYTQxYzE4YjViOWU0NmY0MTQyMy4uMjdkMWVhYjJjY2UxYTcyNGY4NzFkOGZhYzk0ZTkx
OGIwYmNlNzllNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDE2LTA2LTIyICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uZkBnbWFpbC5jb20+CisKKyAgICAgICAgQ2xlYW4gQ1NTIHN0eWxl
c2hlZXRzIHNob3VsZCBiZSBhY2Nlc3NpYmxlIGZyb20gSmF2YVNjcmlwdAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4NzI4CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNpbmcgY29tcHV0YXRp
b24gb2YgdGhlIHJlc291cmNlIHJlc3BvbnNlIHR5cGUgYXMgcGVyIGZldGNoIHNwZWNpZmljYXRp
b24uCisgICAgICAgIFRoaXMgY29tcHV0YXRpb24gaXMgZG9uZSBpbiBTdWJyZXNvdXJjZUxvYWRl
ciBhdCBpbml0IHRpbWUgYW5kIGZvciBlYWNoIHJlZGlyZWN0aW9uLgorICAgICAgICBJZiBjcm9z
cy1vcmlnaW4sIFN1YnJlc291cmNlTG9hZGVyIHdpbGwgc2V0IHRoZSByZXNwb25zZSB0eXBlIHRv
IENvcnMgaWYgZmV0Y2ggbW9kZSBpcyBDb3JzCisgICAgICAgIG9yIHRvIE9wYXF1ZSBpZiBmZXRj
aCBtb2RlIGlzIE5vQ29ycy4KKworICAgICAgICBNYWtpbmcgdXNlIG9mIHRoZSByZXNvdXJjZSBy
ZXNwb25zZSB0eXBlIHRvIGV2YWx1YXRlIHdoZXRoZXIgdG8gbWFrZSB0aGUgQ1NTIHN0eWxlc2hl
ZXRzIHZpc2libGUKKyAgICAgICAgZm9yIHN0eWxlc2hlZXQgbGluayBlbGVtZW50cyBhbmQgZm9y
IHN0eWxlc2hlZXQgcHJvY2Vzc2luZyBpbnN0cnVjdGlvbnMuCisgICAgICAgIElkZWFsbHksIHRo
ZSBvcmlnaW4gZmxhZyBzaG91bGQgYmUgYSBib29sZWFuLgorCisgICAgICAgIFRvIGtlZXAgYmVo
YXZpb3IgY29uc2lzdGVudCBpbiBjb3JzLWNoZWNrLXVuYXdhcmUgY2FzZXMsIHRoZSBmbGFnIGNh
biBiZSBzZXQgdG8gdW5kZWZpbmVkIGluIHdoaWNoIGNhc2UgdGhlCisgICAgICAgIGJlaGF2aW9y
IHJlbWFpbnMgdGhlIHNhbWUgKGNoZWNraW5nIG9mIHRoZSBzdHlsZXNoZWV0IFVSTCkuCisgICAg
ICAgIFRoZSBvcmlnaW4gZmxhZyBpcyBzZXQgdG8gdHJ1ZSBvciBmYWxzZSBvbmx5IGluIGNhc2Ug
b2YgZmV0Y2ggbW9kZSBiZWluZyBzZXQgdG8gY29ycyB1c2luZyB0aGUgY3Jvc3NvcmlnaW4KKyAg
ICAgICAgYXR0cmlidXRlLgorCisgICAgICAgIENvdmVyZWQgYnkgdXBkYXRlZCB0ZXN0cy4KKwor
ICAgICAgICAqIGNzcy9DU1NTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0
eWxlU2hlZXQ6OmNyZWF0ZSk6IE1ha2VzIG9yaWdpbiBmbGFnIHVuZGVmaW5lZCBpZiBib29sZWFu
IHBhcmFtZXRlciBpcyBub3QgcGFzc2VkLgorICAgICAgICBPdGhlcndpc2Ugb3JpZ2luIGZsYWcg
aXMgc2V0IGFjY29yZGluZyBnaXZlbiBib29sZWFuIHZhbHVlLgorICAgICAgICAoV2ViQ29yZTo6
Q1NTU3R5bGVTaGVldDo6Y3JlYXRlSW5saW5lKTogTWFrZXMgb3JpZ2luIGZsYWcgc2V0IHRvIHRy
dWUuCisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNoZWV0OjpDU1NTdHlsZVNoZWV0KTogQWRk
aW5nIG9yaWdpbiBmbGFnIGluaXRpYWxpemF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5
bGVTaGVldDo6Y2FuQWNjZXNzUnVsZXMpOiBSZXR1cm5pbmcgYWNjb3JkaW5nIHRoZSBvcmlnaW4g
ZmxhZyBpZiBzZXQuCisgICAgICAgIFJldHVybmluZyBhcyBiZWZvcmUgaW4gY2FzZSB0aGUgZmxh
ZyBpcyB1bmRlZmluZWQuCisgICAgICAgICogY3NzL0NTU1N0eWxlU2hlZXQuaDogQWRkaW5nIG9y
aWdpbiBjbGVhbiBmbGFnLgorICAgICAgICAqIGRvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UHJvY2Vzc2luZ0luc3RydWN0aW9uOjpzZXRDU1NTdHlsZVNo
ZWV0KTogTWlub3IgcmVmYWN0b3JpbmcuCisgICAgICAgICogaHRtbC9IVE1MTGlua0VsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTExpbmtFbGVtZW50Ojppbml0aWFsaXplU3R5bGVT
aGVldCk6IEhlbHBlciByb3V0aW5lIHVzZWQgaW4gc2V0Q1NTU3R5bGVTaGVldC4KKyAgICAgICAg
U2V0cyBvcmlnaW4gY2xlYW4gZmxhZyBpZiB0aGUgcmVzb3VyY2UgaXMgY2xlYW4uCisgICAgICAg
IChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6OnNldENTU1N0eWxlU2hlZXQpOiBNYWtpbmcgdXNl
IG9mIGluaXRpYWxpemVTdHlsZVNoZWV0LgorICAgICAgICAqIGh0bWwvSFRNTExpbmtFbGVtZW50
Lmg6CisgICAgICAgICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlN1YnJlc291cmNlTG9hZGVyOjppbml0KTogR2V0dGluZyBtX29yaWdpbiB0byBjb21w
dXRlIHRoZSByZXNvdXJjZSByZXNwb25zZSB0eXBlLgorICAgICAgICAoV2ViQ29yZTo6U3VicmVz
b3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdEludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6
OlN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29y
ZTo6U3VicmVzb3VyY2VMb2FkZXI6OmNoZWNrUmVkaXJlY3Rpb25Dcm9zc09yaWdpbkFjY2Vzc0Nv
bnRyb2wpOiBNYXJraW5nIHJlc291cmNlIGFzIGNyb3NzLW9yaWdpbgorICAgICAgICBpZiByZWRp
cmVjdGlvbiBpcyBjcm9zcy1vcmlnaW4uCisgICAgICAgICogbG9hZGVyL1N1YnJlc291cmNlTG9h
ZGVyLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpsb2FkKTogQ29tcHV0aW5nIHJlc291cmNlIG9y
aWdpbiBmcm9tIHRoZSByZXF1ZXN0IG9yIHRoZSBkb2N1bWVudCBsb2FkZXIgaXRzZWxmLgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OnNldENyb3NzT3JpZ2luKTogU2V0IHJlc3Bv
bnNlIHR5cGUgYXMgb3BhcXVlIG9yIGNvcnMgZGVwZW5kaW5nIG9uIGZldGNoIG1vZGUuCisgICAg
ICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6aXNDcm9zc09yaWdpbik6IFJldHVybnMgdHJ1
ZSBpZiByZXNwb25zZSB0eXBlIGlzIG9wYXF1ZSBvciBjb3JzLgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkUmVzb3VyY2U6OmlzQ2xlYW4pOiBSZXR1cm5zIHRydWUgaWYgcmVzcG9uc2UgdHlwZSBp
cyBub3Qgb3BhcXVlIGFuZCBsb2FkaW5nIGlzIG9rLgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVk
UmVzb3VyY2U6OnNldFJlc291cmNlVG9SZXZhbGlkYXRlKToKKyAgICAgICAgKiBsb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpj
b3JzTW9kZUFjdGl2YXRlZCk6IFJldHVybnMgdHJ1ZSBpZiBmZXRjaCBtb2RlIGlzIGVxdWFsIHRv
IENvcnMuCisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6c2V0T3BhcXVlUmVkaXJl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6Om9yaWdpbik6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdEJhc2U6Omhhc0hUVFBPcmlnaW4pOiBBZGRlZCB0byBkZXRl
Y3Qgd2hldGhlciBjb2RlIGNhbGxpbmcgbG9hZGVycyBzZXQgdGhlIG9yaWdpbiBvZiB0aGUgcmVx
dWVzdC4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdEJhc2U6OmNsZWFySFRUUE9y
aWdpbik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmg6
CisKIDIwMTYtMDYtMjIgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgogCiAgICAgICAgIFtHVEtdIEFkZCBzdXBwb3J0IGZvciB2YXJpYWRpYyBwYXJhbWV0ZXJzIHRv
IEdPYmplY3QgRE9NIGJpbmRpbmdzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
U3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAKaW5k
ZXggOGY2YTMwYWRhMDIzYzUwMWRlNTk2MTc1ZTQ3ZTY4NjUzZjM4NjI1YS4uZjAyZWEzZDFjNWQ2
ZDVmMzFiM2RmZTc5OTBkZGNjMzBmMDcyZDgyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1N0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNo
ZWV0LmNwcApAQCAtNzgsMTkgKzc4LDE5IEBAIHN0YXRpYyBib29sIGlzQWNjZXB0YWJsZUNTU1N0
eWxlU2hlZXRQYXJlbnQoTm9kZSogcGFyZW50Tm9kZSkKICNlbmRpZgogCiBSZWY8Q1NTU3R5bGVT
aGVldD4gQ1NTU3R5bGVTaGVldDo6Y3JlYXRlKFJlZjxTdHlsZVNoZWV0Q29udGVudHM+JiYgc2hl
ZXQsIENTU0ltcG9ydFJ1bGUqIG93bmVyUnVsZSkKLXsgCit7CiAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgQ1NTU3R5bGVTaGVldChXVEZNb3ZlKHNoZWV0KSwgb3duZXJSdWxlKSk7CiB9CiAKLVJl
ZjxDU1NTdHlsZVNoZWV0PiBDU1NTdHlsZVNoZWV0OjpjcmVhdGUoUmVmPFN0eWxlU2hlZXRDb250
ZW50cz4mJiBzaGVldCwgTm9kZSogb3duZXJOb2RlKQoteyAKLSAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBDU1NTdHlsZVNoZWV0KFdURk1vdmUoc2hlZXQpLCBvd25lck5vZGUsIFRleHRQb3NpdGlv
bjo6bWluaW11bVBvc2l0aW9uKCksIGZhbHNlKSk7CitSZWY8Q1NTU3R5bGVTaGVldD4gQ1NTU3R5
bGVTaGVldDo6Y3JlYXRlKFJlZjxTdHlsZVNoZWV0Q29udGVudHM+JiYgc2hlZXQsIE5vZGUqIG93
bmVyTm9kZSwgT3JpZ2luQ2xlYW5GbGFnIGlzQ2xlYW5PcmlnaW4pCit7CisgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgQ1NTU3R5bGVTaGVldChXVEZNb3ZlKHNoZWV0KSwgb3duZXJOb2RlLCBUZXh0
UG9zaXRpb246Om1pbmltdW1Qb3NpdGlvbigpLCBmYWxzZSwgaXNDbGVhbk9yaWdpbikpOwogfQog
CiBSZWY8Q1NTU3R5bGVTaGVldD4gQ1NTU3R5bGVTaGVldDo6Y3JlYXRlSW5saW5lKE5vZGUmIG93
bmVyTm9kZSwgY29uc3QgVVJMJiBiYXNlVVJMLCBjb25zdCBUZXh0UG9zaXRpb24mIHN0YXJ0UG9z
aXRpb24sIGNvbnN0IFN0cmluZyYgZW5jb2RpbmcpCiB7CiAgICAgQ1NTUGFyc2VyQ29udGV4dCBw
YXJzZXJDb250ZXh0KG93bmVyTm9kZS5kb2N1bWVudCgpLCBiYXNlVVJMLCBlbmNvZGluZyk7Ci0g
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTU3R5bGVTaGVldChTdHlsZVNoZWV0Q29udGVudHM6
OmNyZWF0ZShiYXNlVVJMLnN0cmluZygpLCBwYXJzZXJDb250ZXh0KSwgJm93bmVyTm9kZSwgc3Rh
cnRQb3NpdGlvbiwgdHJ1ZSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENTU1N0eWxlU2hl
ZXQoU3R5bGVTaGVldENvbnRlbnRzOjpjcmVhdGUoYmFzZVVSTC5zdHJpbmcoKSwgcGFyc2VyQ29u
dGV4dCksICZvd25lck5vZGUsIHN0YXJ0UG9zaXRpb24sIHRydWUsIE9yaWdpbkNsZWFuRmxhZzo6
VHJ1ZSkpOwogfQogCiBDU1NTdHlsZVNoZWV0OjpDU1NTdHlsZVNoZWV0KFJlZjxTdHlsZVNoZWV0
Q29udGVudHM+JiYgY29udGVudHMsIENTU0ltcG9ydFJ1bGUqIG93bmVyUnVsZSkKQEAgLTEwNSwx
MSArMTA1LDEyIEBAIENTU1N0eWxlU2hlZXQ6OkNTU1N0eWxlU2hlZXQoUmVmPFN0eWxlU2hlZXRD
b250ZW50cz4mJiBjb250ZW50cywgQ1NTSW1wb3J0UnVsZSoKICAgICBtX2NvbnRlbnRzLT5yZWdp
c3RlckNsaWVudCh0aGlzKTsKIH0KIAotQ1NTU3R5bGVTaGVldDo6Q1NTU3R5bGVTaGVldChSZWY8
U3R5bGVTaGVldENvbnRlbnRzPiYmIGNvbnRlbnRzLCBOb2RlKiBvd25lck5vZGUsIGNvbnN0IFRl
eHRQb3NpdGlvbiYgc3RhcnRQb3NpdGlvbiwgYm9vbCBpc0lubGluZVN0eWxlc2hlZXQpCitDU1NT
dHlsZVNoZWV0OjpDU1NTdHlsZVNoZWV0KFJlZjxTdHlsZVNoZWV0Q29udGVudHM+JiYgY29udGVu
dHMsIE5vZGUqIG93bmVyTm9kZSwgY29uc3QgVGV4dFBvc2l0aW9uJiBzdGFydFBvc2l0aW9uLCBi
b29sIGlzSW5saW5lU3R5bGVzaGVldCwgT3JpZ2luQ2xlYW5GbGFnIGZsYWcpCiAgICAgOiBtX2Nv
bnRlbnRzKFdURk1vdmUoY29udGVudHMpKQogICAgICwgbV9pc0lubGluZVN0eWxlc2hlZXQoaXNJ
bmxpbmVTdHlsZXNoZWV0KQogICAgICwgbV9pc0Rpc2FibGVkKGZhbHNlKQogICAgICwgbV9tdXRh
dGVkUnVsZXMoZmFsc2UpCisgICAgLCBtX2lzT3JpZ2luQ2xlYW4oZmxhZykKICAgICAsIG1fb3du
ZXJOb2RlKG93bmVyTm9kZSkKICAgICAsIG1fb3duZXJSdWxlKDApCiAgICAgLCBtX3N0YXJ0UG9z
aXRpb24oc3RhcnRQb3NpdGlvbikKQEAgLTI1OCwxNyArMjU5LDE2IEBAIENTU1J1bGUqIENTU1N0
eWxlU2hlZXQ6Oml0ZW0odW5zaWduZWQgaW5kZXgpCiAKIGJvb2wgQ1NTU3R5bGVTaGVldDo6Y2Fu
QWNjZXNzUnVsZXMoKSBjb25zdAogewotICAgIGlmIChtX2lzSW5saW5lU3R5bGVzaGVldCkKLSAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKG1faXNPcmlnaW5DbGVhbiAhPSBPcmlnaW5DbGVh
bkZsYWc6OlVuZGVmaW5lZCkKKyAgICAgICAgcmV0dXJuIG1faXNPcmlnaW5DbGVhbiA9PSBPcmln
aW5DbGVhbkZsYWc6OlRydWU7CisKICAgICBVUkwgYmFzZVVSTCA9IG1fY29udGVudHMtPmJhc2VV
UkwoKTsKICAgICBpZiAoYmFzZVVSTC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG93bmVyRG9jdW1lbnQoKTsKICAgICBpZiAoIWRvY3Vt
ZW50KQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAoZG9jdW1lbnQtPnNlY3VyaXR5T3Jp
Z2luKCktPmNhblJlcXVlc3QoYmFzZVVSTCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIHJl
dHVybiBmYWxzZTsKKyAgICByZXR1cm4gZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCktPmNhblJl
cXVlc3QoYmFzZVVSTCk7CiB9CiAKIFJlZlB0cjxDU1NSdWxlTGlzdD4gQ1NTU3R5bGVTaGVldDo6
cnVsZXMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuaCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmgKaW5kZXggYzBlNjdlMWY1YjU5ZDRi
NTM3YThiZjUzYWRmMDA4ODM4Nzg5OTNmYi4uM2Q0NjEwMDFhYzYxN2Y0M2QwNGU5NGRkOGJjMWJh
NDg2NjgyNGQ0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5oCkBAIC00OSw4ICs0OSwx
NCBAQCB0eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwogCiBjbGFzcyBDU1NTdHlsZVNoZWV0IGZp
bmFsIDogcHVibGljIFN0eWxlU2hlZXQgewogcHVibGljOgorICAgIGVudW0gY2xhc3MgT3JpZ2lu
Q2xlYW5GbGFnIHsKKyAgICAgICAgVHJ1ZSwKKyAgICAgICAgRmFsc2UsCisgICAgICAgIFVuZGVm
aW5lZAorICAgIH07CisKICAgICBzdGF0aWMgUmVmPENTU1N0eWxlU2hlZXQ+IGNyZWF0ZShSZWY8
U3R5bGVTaGVldENvbnRlbnRzPiYmLCBDU1NJbXBvcnRSdWxlKiBvd25lclJ1bGUgPSAwKTsKLSAg
ICBzdGF0aWMgUmVmPENTU1N0eWxlU2hlZXQ+IGNyZWF0ZShSZWY8U3R5bGVTaGVldENvbnRlbnRz
PiYmLCBOb2RlKiBvd25lck5vZGUpOworICAgIHN0YXRpYyBSZWY8Q1NTU3R5bGVTaGVldD4gY3Jl
YXRlKFJlZjxTdHlsZVNoZWV0Q29udGVudHM+JiYsIE5vZGUqIG93bmVyTm9kZSwgT3JpZ2luQ2xl
YW5GbGFnID0gT3JpZ2luQ2xlYW5GbGFnOjpVbmRlZmluZWQpOwogICAgIHN0YXRpYyBSZWY8Q1NT
U3R5bGVTaGVldD4gY3JlYXRlSW5saW5lKE5vZGUmLCBjb25zdCBVUkwmLCBjb25zdCBUZXh0UG9z
aXRpb24mIHN0YXJ0UG9zaXRpb24gPSBUZXh0UG9zaXRpb246Om1pbmltdW1Qb3NpdGlvbigpLCBj
b25zdCBTdHJpbmcmIGVuY29kaW5nID0gU3RyaW5nKCkpOwogCiAgICAgdmlydHVhbCB+Q1NTU3R5
bGVTaGVldCgpOwpAQCAtMTI0LDE3ICsxMzAsMTggQEAgcHVibGljOgogCiBwcml2YXRlOgogICAg
IENTU1N0eWxlU2hlZXQoUmVmPFN0eWxlU2hlZXRDb250ZW50cz4mJiwgQ1NTSW1wb3J0UnVsZSog
b3duZXJSdWxlKTsKLSAgICBDU1NTdHlsZVNoZWV0KFJlZjxTdHlsZVNoZWV0Q29udGVudHM+JiYs
IE5vZGUqIG93bmVyTm9kZSwgY29uc3QgVGV4dFBvc2l0aW9uJiBzdGFydFBvc2l0aW9uLCBib29s
IGlzSW5saW5lU3R5bGVzaGVldCk7CisgICAgQ1NTU3R5bGVTaGVldChSZWY8U3R5bGVTaGVldENv
bnRlbnRzPiYmLCBOb2RlKiBvd25lck5vZGUsIGNvbnN0IFRleHRQb3NpdGlvbiYgc3RhcnRQb3Np
dGlvbiwgYm9vbCBpc0lubGluZVN0eWxlc2hlZXQsIE9yaWdpbkNsZWFuRmxhZyk7CiAKICAgICBi
b29sIGlzQ1NTU3R5bGVTaGVldCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAg
ICBTdHJpbmcgdHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgidGV4
dC9jc3MiKTsgfQogCiAgICAgYm9vbCBjYW5BY2Nlc3NSdWxlcygpIGNvbnN0OwotICAgIAorCiAg
ICAgUmVmPFN0eWxlU2hlZXRDb250ZW50cz4gbV9jb250ZW50czsKICAgICBib29sIG1faXNJbmxp
bmVTdHlsZXNoZWV0OwogICAgIGJvb2wgbV9pc0Rpc2FibGVkOwogICAgIGJvb2wgbV9tdXRhdGVk
UnVsZXM7CisgICAgT3JpZ2luQ2xlYW5GbGFnIG1faXNPcmlnaW5DbGVhbiB7IE9yaWdpbkNsZWFu
RmxhZzo6VW5kZWZpbmVkIH07CiAgICAgU3RyaW5nIG1fdGl0bGU7CiAgICAgUmVmUHRyPE1lZGlh
UXVlcnlTZXQ+IG1fbWVkaWFRdWVyaWVzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNz
aW5nSW5zdHJ1Y3Rpb24uY3BwCmluZGV4IDI4MDMzMTU5ZmFjYWZjY2QzZmI5OGY1YjlmOWU0ZTJh
MzEwNTE4M2EuLmQxMjM4OTc0MDEyZjNmOTExNjE3MzIwMDNiZmNlNjgyMTc0MWQ0ZTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwCkBAIC0xOTEsOSAr
MTkxLDkgQEAgdm9pZCBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246OnNldENTU1N0eWxlU2hlZXQoY29u
c3QgU3RyaW5nJiBocmVmLCBjb25zdCBVUkwmIGJhc2UKICAgICBDU1NQYXJzZXJDb250ZXh0IHBh
cnNlckNvbnRleHQoZG9jdW1lbnQoKSwgYmFzZVVSTCwgY2hhcnNldCk7CiAKICAgICBhdXRvIGNz
c1NoZWV0ID0gQ1NTU3R5bGVTaGVldDo6Y3JlYXRlKFN0eWxlU2hlZXRDb250ZW50czo6Y3JlYXRl
KGhyZWYsIHBhcnNlckNvbnRleHQpLCB0aGlzKTsKLSAgICBjc3NTaGVldC5nZXQoKS5zZXREaXNh
YmxlZChtX2FsdGVybmF0ZSk7Ci0gICAgY3NzU2hlZXQuZ2V0KCkuc2V0VGl0bGUobV90aXRsZSk7
Ci0gICAgY3NzU2hlZXQuZ2V0KCkuc2V0TWVkaWFRdWVyaWVzKE1lZGlhUXVlcnlTZXQ6OmNyZWF0
ZShtX21lZGlhKSk7CisgICAgY3NzU2hlZXQtPnNldERpc2FibGVkKG1fYWx0ZXJuYXRlKTsKKyAg
ICBjc3NTaGVldC0+c2V0VGl0bGUobV90aXRsZSk7CisgICAgY3NzU2hlZXQtPnNldE1lZGlhUXVl
cmllcyhNZWRpYVF1ZXJ5U2V0OjpjcmVhdGUobV9tZWRpYSkpOwogCiAgICAgbV9zaGVldCA9IFdU
Rk1vdmUoY3NzU2hlZXQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxM
aW5rRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAK
aW5kZXggNTUxY2U3NmZjZGNlNTVkNThlNzgzNzdhNWY2ZGViNzBjZTIyYjQwNS4uNTgzYjVjYWMz
Y2U5NmUwYjNmYjIzOTU0MDJjYWJlODZmMmVkMDhjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TExpbmtFbGVtZW50LmNwcApAQCAtMzMyLDYgKzMzMiwxOCBAQCB2b2lkIEhUTUxMaW5rRWxlbWVu
dDo6ZmluaXNoUGFyc2luZ0NoaWxkcmVuKCkKICAgICBIVE1MRWxlbWVudDo6ZmluaXNoUGFyc2lu
Z0NoaWxkcmVuKCk7CiB9CiAKK3ZvaWQgSFRNTExpbmtFbGVtZW50Ojppbml0aWFsaXplU3R5bGVT
aGVldChSZWY8U3R5bGVTaGVldENvbnRlbnRzPiYmIHN0eWxlU2hlZXQsIGNvbnN0IENhY2hlZENT
U1N0eWxlU2hlZXQmIGNhY2hlZFN0eWxlU2hlZXQpCit7CisgICAgLy8gRklYTUU6IG9yaWdpbkNs
ZWFuIHNob3VsZCBvbmx5IGJlIHNldCB0byB0cnVlIGlmIGZldGNoIG1vZGUgaXMgY29ycy4gT3Ro
ZXJ3aXNlIGl0IHNob3VsZCBiZSBzZXQgdG8gZmFsc2UuCisgICAgQ1NTU3R5bGVTaGVldDo6T3Jp
Z2luQ2xlYW5GbGFnIG9yaWdpbkNsZWFuID0gQ1NTU3R5bGVTaGVldDo6T3JpZ2luQ2xlYW5GbGFn
OjpVbmRlZmluZWQ7CisgICAgaWYgKGNhY2hlZFN0eWxlU2hlZXQuY29yc01vZGVBY3RpdmF0ZWQo
KSkKKyAgICAgICAgb3JpZ2luQ2xlYW4gPSBjYWNoZWRTdHlsZVNoZWV0LmlzQ2xlYW4oKSA/IENT
U1N0eWxlU2hlZXQ6Ok9yaWdpbkNsZWFuRmxhZzo6VHJ1ZSA6IENTU1N0eWxlU2hlZXQ6Ok9yaWdp
bkNsZWFuRmxhZzo6RmFsc2U7CisKKyAgICBtX3NoZWV0ID0gQ1NTU3R5bGVTaGVldDo6Y3JlYXRl
KFdURk1vdmUoc3R5bGVTaGVldCksIHRoaXMsIG9yaWdpbkNsZWFuKTsKKyAgICBtX3NoZWV0LT5z
ZXRNZWRpYVF1ZXJpZXMoTWVkaWFRdWVyeVNldDo6Y3JlYXRlQWxsb3dpbmdEZXNjcmlwdGlvblN5
bnRheChtX21lZGlhKSk7CisgICAgbV9zaGVldC0+c2V0VGl0bGUodGl0bGUoKSk7Cit9CisKIHZv
aWQgSFRNTExpbmtFbGVtZW50OjpzZXRDU1NTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgaHJlZiwg
Y29uc3QgVVJMJiBiYXNlVVJMLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQsIGNvbnN0IENhY2hlZENT
U1N0eWxlU2hlZXQqIGNhY2hlZFN0eWxlU2hlZXQpCiB7CiAgICAgaWYgKCFpbkRvY3VtZW50KCkp
IHsKQEAgLTM1MSwxMCArMzYzLDcgQEAgdm9pZCBIVE1MTGlua0VsZW1lbnQ6OnNldENTU1N0eWxl
U2hlZXQoY29uc3QgU3RyaW5nJiBocmVmLCBjb25zdCBVUkwmIGJhc2VVUkwsIGMKICAgICBpZiAo
UmVmUHRyPFN0eWxlU2hlZXRDb250ZW50cz4gcmVzdG9yZWRTaGVldCA9IGNvbnN0X2Nhc3Q8Q2Fj
aGVkQ1NTU3R5bGVTaGVldCo+KGNhY2hlZFN0eWxlU2hlZXQpLT5yZXN0b3JlUGFyc2VkU3R5bGVT
aGVldChwYXJzZXJDb250ZXh0LCBjYWNoZVBvbGljeSkpIHsKICAgICAgICAgQVNTRVJUKHJlc3Rv
cmVkU2hlZXQtPmlzQ2FjaGVhYmxlKCkpOwogICAgICAgICBBU1NFUlQoIXJlc3RvcmVkU2hlZXQt
PmlzTG9hZGluZygpKTsKLQotICAgICAgICBtX3NoZWV0ID0gQ1NTU3R5bGVTaGVldDo6Y3JlYXRl
KHJlc3RvcmVkU2hlZXQucmVsZWFzZU5vbk51bGwoKSwgdGhpcyk7Ci0gICAgICAgIG1fc2hlZXQt
PnNldE1lZGlhUXVlcmllcyhNZWRpYVF1ZXJ5U2V0OjpjcmVhdGVBbGxvd2luZ0Rlc2NyaXB0aW9u
U3ludGF4KG1fbWVkaWEpKTsKLSAgICAgICAgbV9zaGVldC0+c2V0VGl0bGUodGl0bGUoKSk7Cisg
ICAgICAgIGluaXRpYWxpemVTdHlsZVNoZWV0KHJlc3RvcmVkU2hlZXQucmVsZWFzZU5vbk51bGwo
KSwgKmNhY2hlZFN0eWxlU2hlZXQpOwogCiAgICAgICAgIG1fbG9hZGluZyA9IGZhbHNlOwogICAg
ICAgICBzaGVldExvYWRlZCgpOwpAQCAtMzYzLDkgKzM3Miw3IEBAIHZvaWQgSFRNTExpbmtFbGVt
ZW50OjpzZXRDU1NTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgaHJlZiwgY29uc3QgVVJMJiBiYXNl
VVJMLCBjCiAgICAgfQogCiAgICAgYXV0byBzdHlsZVNoZWV0ID0gU3R5bGVTaGVldENvbnRlbnRz
OjpjcmVhdGUoaHJlZiwgcGFyc2VyQ29udGV4dCk7Ci0gICAgbV9zaGVldCA9IENTU1N0eWxlU2hl
ZXQ6OmNyZWF0ZShzdHlsZVNoZWV0LmNvcHlSZWYoKSwgdGhpcyk7Ci0gICAgbV9zaGVldC0+c2V0
TWVkaWFRdWVyaWVzKE1lZGlhUXVlcnlTZXQ6OmNyZWF0ZUFsbG93aW5nRGVzY3JpcHRpb25TeW50
YXgobV9tZWRpYSkpOwotICAgIG1fc2hlZXQtPnNldFRpdGxlKHRpdGxlKCkpOworICAgIGluaXRp
YWxpemVTdHlsZVNoZWV0KHN0eWxlU2hlZXQuY29weVJlZigpLCAqY2FjaGVkU3R5bGVTaGVldCk7
CiAKICAgICBzdHlsZVNoZWV0LmdldCgpLnBhcnNlQXV0aG9yU3R5bGVTaGVldChjYWNoZWRTdHls
ZVNoZWV0LCBkb2N1bWVudCgpLnNlY3VyaXR5T3JpZ2luKCkpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTGlua0VsZW1lbnQuaAppbmRleCAxYjFiMWNlYzhkZTQ3ZTE2YWQ0ZGM5Yzk1Mzk0OTAyMjJk
MmM4NDJmLi4yMjljZjk2ODEyZGFkN2U5ZjVhZDYwNmM0YmI5OWI3N2M2NzRjNDNkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmgKQEAgLTg2LDYgKzg2LDggQEAgcHJpdmF0ZToK
ICAgICBJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IGluc2VydGVkSW50byhDb250YWluZXJO
b2RlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCByZW1vdmVkRnJvbShDb250YWluZXJOb2RlJikgb3Zl
cnJpZGU7CiAKKyAgICB2b2lkIGluaXRpYWxpemVTdHlsZVNoZWV0KFJlZjxTdHlsZVNoZWV0Q29u
dGVudHM+JiYsIGNvbnN0IENhY2hlZENTU1N0eWxlU2hlZXQmKTsKKwogICAgIC8vIGZyb20gQ2Fj
aGVkUmVzb3VyY2VDbGllbnQKICAgICB2b2lkIHNldENTU1N0eWxlU2hlZXQoY29uc3QgU3RyaW5n
JiBocmVmLCBjb25zdCBVUkwmIGJhc2VVUkwsIGNvbnN0IFN0cmluZyYgY2hhcnNldCwgY29uc3Qg
Q2FjaGVkQ1NTU3R5bGVTaGVldCogc2hlZXQpIG92ZXJyaWRlOwogICAgIGJvb2wgc2hlZXRMb2Fk
ZWQoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNv
dXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIu
Y3BwCmluZGV4IDM4NmVjMDczYjdkZGNmN2MxNmJjZDVjNGViYzQ0MDRkMzQwZjQ2ODIuLjIzNzk0
MzY0NGM5OTFjNDAyNjk3YTkyOTNjYmUyOTAwZDVlYTk1NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcApAQCAtNiwxMyArNiwxMyBAQAogICogYXJlIG1l
dDoKICAqCiAgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KICAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAogICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKKyAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgogICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxl
Iikgbm9yIHRoZSBuYW1lcyBvZgogICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIAorICog
ICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KICAqCiAgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJ
VFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQogICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRApAQCAt
MTUxLDggKzE1MSwxMSBAQCBib29sIFN1YnJlc291cmNlTG9hZGVyOjppbml0KGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCkKICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE1NTYzMy4KICAgICAvLyBTdWJyZXNvdXJjZUxvYWRlciBjb3Vs
ZCB1c2UgdGhlIGRvY3VtZW50IG9yaWdpbiBhcyBhIGRlZmF1bHQgYW5kIHNldCBQb3RlbnRpYWxs
eUNyb3NzT3JpZ2luRW5hYmxlZCByZXF1ZXN0cyBhY2NvcmRpbmdseS4KICAgICAvLyBUaGlzIHdv
dWxkIHNpbXBsaWZ5IHJlc291cmNlIGxvYWRlciB1c2VycyBhcyB0aGV5IHdvdWxkIG9ubHkgbmVl
ZCB0byBzZXQgdGhlIHBvbGljeSB0byBQb3RlbnRpYWxseUNyb3NzT3JpZ2luRW5hYmxlZC4KLSAg
ICBpZiAob3B0aW9ucygpLnJlcXVlc3RPcmlnaW5Qb2xpY3koKSA9PSBQb3RlbnRpYWxseUNyb3Nz
T3JpZ2luRW5hYmxlZCkKLSAgICAgICAgbV9vcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRl
RnJvbVN0cmluZyhyZXF1ZXN0Lmh0dHBPcmlnaW4oKSk7CisKKyAgICBtX29yaWdpbiA9IG1fcmVz
b3VyY2UtPm9yaWdpbigpOworICAgIC8vIGh0dHBzOi8vZmV0Y2guc3BlYy53aGF0d2cub3JnLyNt
YWluLWZldGNoLCBzdGVwIDExLCBkYXRhIFVSTCBoZXJlIGlzIGNvbnNpZGVyZWQgbm90IGNyb3Nz
IG9yaWdpbi4KKyAgICBpZiAoIXJlcXVlc3QudXJsKCkucHJvdG9jb2xJc0RhdGEoKSAmJiBtX29y
aWdpbiAmJiAhbV9vcmlnaW4tPmNhblJlcXVlc3QocmVxdWVzdC51cmwoKSkpCisgICAgICAgIG1f
cmVzb3VyY2UtPnNldENyb3NzT3JpZ2luKCk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTIw
Miw3ICsyMDUsNyBAQCB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3RJbnRl
cm5hbChSZXNvdXJjZVJlcXVlc3QmIG5ld1JlcXVlc3QsIGNvbgogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKG9wdGlvbnMoKS5yZXF1ZXN0T3JpZ2luUG9saWN5
KCkgPT0gUG90ZW50aWFsbHlDcm9zc09yaWdpbkVuYWJsZWQgJiYgIWNoZWNrQ3Jvc3NPcmlnaW5B
Y2Nlc3NDb250cm9sKHJlcXVlc3QoKSwgcmVkaXJlY3RSZXNwb25zZSwgbmV3UmVxdWVzdCkpIHsK
KyAgICAgICAgaWYgKCFjaGVja1JlZGlyZWN0aW9uQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sKHJl
cXVlc3QoKSwgcmVkaXJlY3RSZXNwb25zZSwgbmV3UmVxdWVzdCkpIHsKICAgICAgICAgICAgIGNh
bmNlbCgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0yOTUsOCArMjk4LDgg
QEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogICAgICAgICAvLyBUaGUgcmVzb3VyY2UgZGF0YSB3aWxs
IGNoYW5nZSBhcyB0aGUgbmV4dCBwYXJ0IGlzIGxvYWRlZCwgc28gd2UgbmVlZCB0byBtYWtlIGEg
Y29weS4KICAgICAgICAgbV9yZXNvdXJjZS0+ZmluaXNoTG9hZGluZyhidWZmZXItPmNvcHkoKS5w
dHIoKSk7CiAgICAgICAgIGNsZWFyUmVzb3VyY2VEYXRhKCk7Ci0gICAgICAgIC8vIFNpbmNlIGEg
c3VicmVzb3VyY2UgbG9hZGVyIGRvZXMgbm90IGxvYWQgbXVsdGlwYXJ0IHNlY3Rpb25zIHByb2dy
ZXNzaXZlbHksIGRhdGEgd2FzIGRlbGl2ZXJlZCB0byB0aGUgbG9hZGVyIGFsbCBhdCBvbmNlLiAg
ICAgICAgCi0gICAgICAgIC8vIEFmdGVyIHRoZSBmaXJzdCBtdWx0aXBhcnQgc2VjdGlvbiBpcyBj
b21wbGV0ZSwgc2lnbmFsIHRvIGRlbGVnYXRlcyB0aGF0IHRoaXMgbG9hZCBpcyAiZmluaXNoZWQi
IAorICAgICAgICAvLyBTaW5jZSBhIHN1YnJlc291cmNlIGxvYWRlciBkb2VzIG5vdCBsb2FkIG11
bHRpcGFydCBzZWN0aW9ucyBwcm9ncmVzc2l2ZWx5LCBkYXRhIHdhcyBkZWxpdmVyZWQgdG8gdGhl
IGxvYWRlciBhbGwgYXQgb25jZS4KKyAgICAgICAgLy8gQWZ0ZXIgdGhlIGZpcnN0IG11bHRpcGFy
dCBzZWN0aW9uIGlzIGNvbXBsZXRlLCBzaWduYWwgdG8gZGVsZWdhdGVzIHRoYXQgdGhpcyBsb2Fk
IGlzICJmaW5pc2hlZCIKICAgICAgICAgbV9kb2N1bWVudExvYWRlci0+c3VicmVzb3VyY2VMb2Fk
ZXJGaW5pc2hlZExvYWRpbmdPbmVQYXJ0KHRoaXMpOwogICAgICAgICBkaWRGaW5pc2hMb2FkaW5n
T25lUGFydCgwKTsKICAgICB9CkBAIC0zOTYsMTEgKzM5OSwxNSBAQCBzdGF0aWMgdm9pZCBsb2dS
ZXNvdXJjZUxvYWRlZChGcmFtZSogZnJhbWUsIENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUpCiAg
ICAgZnJhbWUtPnBhZ2UoKS0+ZGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQoKS5sb2dEaWFnbm9zdGlj
TWVzc2FnZVdpdGhWYWx1ZShEaWFnbm9zdGljTG9nZ2luZ0tleXM6OnJlc291cmNlS2V5KCksIERp
YWdub3N0aWNMb2dnaW5nS2V5czo6bG9hZGVkS2V5KCksIHJlc291cmNlVHlwZSwgU2hvdWxkU2Ft
cGxlOjpZZXMpOwogfQogCi1ib29sIFN1YnJlc291cmNlTG9hZGVyOjpjaGVja0Nyb3NzT3JpZ2lu
QWNjZXNzQ29udHJvbChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHByZXZpb3VzUmVxdWVzdCwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgUmVzb3VyY2VSZXF1ZXN0JiBu
ZXdSZXF1ZXN0KQorYm9vbCBTdWJyZXNvdXJjZUxvYWRlcjo6Y2hlY2tSZWRpcmVjdGlvbkNyb3Nz
T3JpZ2luQWNjZXNzQ29udHJvbChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHByZXZpb3VzUmVxdWVz
dCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgUmVzb3VyY2VSZXF1
ZXN0JiBuZXdSZXF1ZXN0KQogewotICAgIGlmIChtX29yaWdpbi0+Y2FuUmVxdWVzdChuZXdSZXF1
ZXN0LnVybCgpKSkKKyAgICBpZiAoIShtX29yaWdpbiAmJiBtX29yaWdpbi0+Y2FuUmVxdWVzdChu
ZXdSZXF1ZXN0LnVybCgpKSkpCisgICAgICAgIG1fcmVzb3VyY2UtPnNldENyb3NzT3JpZ2luKCk7
CisKKyAgICBpZiAob3B0aW9ucygpLnJlcXVlc3RPcmlnaW5Qb2xpY3koKSAhPSBQb3RlbnRpYWxs
eUNyb3NzT3JpZ2luRW5hYmxlZCB8fCAhbV9yZXNvdXJjZS0+aXNDcm9zc09yaWdpbigpKQogICAg
ICAgICByZXR1cm4gdHJ1ZTsKIAorICAgIEFTU0VSVChtX29yaWdpbik7CiAgICAgU3RyaW5nIGVy
cm9yRGVzY3JpcHRpb247CiAgICAgYm9vbCByZXNwb25zZVBhc3Nlc0NPUlMgPSBtX29yaWdpbi0+
Y2FuUmVxdWVzdChwcmV2aW91c1JlcXVlc3QudXJsKCkpCiAgICAgICAgIHx8IHBhc3Nlc0FjY2Vz
c0NvbnRyb2xDaGVjayhyZWRpcmVjdFJlc3BvbnNlLCBvcHRpb25zKCkuYWxsb3dDcmVkZW50aWFs
cygpLCBtX29yaWdpbi5nZXQoKSwgZXJyb3JEZXNjcmlwdGlvbik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCmluZGV4IDVlYzczMTFkMDljZjFkMzBkYzI1NTA0NWNm
NGI5YjU4MGNlOWZkZTguLjMxYzRiM2VhMDU2Njg2NDAwYWI1YzIwZDkxNDEyZTliMjVmYzk5ZGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCkBAIC02LDEzICs2
LDEzIEBACiAgKiBhcmUgbWV0OgogICoKICAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgogICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CiAgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uIAorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCiAgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBB
cHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCiAgKiAgICAgaXRzIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAot
ICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4gCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgogICoKICAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCiAgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECkBAIC05MSw3ICs5MSw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIGJv
b2wgY2hlY2tGb3JIVFRQU3RhdHVzQ29kZUVycm9yKCk7Ci0gICAgYm9vbCBjaGVja0Nyb3NzT3Jp
Z2luQWNjZXNzQ29udHJvbChjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiwgUmVzb3VyY2VSZXF1ZXN0JiBuZXdSZXF1ZXN0KTsKKyAgICBib29sIGNoZWNrUmVk
aXJlY3Rpb25Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2woY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jiwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291cmNlUmVxdWVzdCYgbmV3UmVxdWVzdCk7CiAK
ICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgY2hhciosIGludCwgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9h
ZFR5cGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
UmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
LmNwcAppbmRleCAyMWVhODE0MjE5NDk1ODk2MGI0N2FlNzhlNWZiMzFhOWUyMjFjM2M2Li5iNWMy
NTNhZDE4ZTRmMmRlMjNlZTNiNmZkNTcyZTQ4ZTFiOGIwYTY2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKQEAgLTI3NSw4ICsyNzUsMTQgQEAg
dm9pZCBDYWNoZWRSZXNvdXJjZTo6bG9hZChDYWNoZWRSZXNvdXJjZUxvYWRlciYgY2FjaGVkUmVz
b3VyY2VMb2FkZXIsIGNvbnN0IFJlc28KICNlbmRpZgogICAgIG1fcmVzb3VyY2VSZXF1ZXN0LnNl
dFByaW9yaXR5KGxvYWRQcmlvcml0eSgpKTsKIAotICAgIGlmICh0eXBlKCkgIT0gTWFpblJlc291
cmNlKQorICAgIGlmICh0eXBlKCkgIT0gTWFpblJlc291cmNlKSB7CisgICAgICAgIGlmIChtX3Jl
c291cmNlUmVxdWVzdC5oYXNIVFRQT3JpZ2luKCkgfHwgbV9vcHRpb25zLnJlcXVlc3RPcmlnaW5Q
b2xpY3koKSA9PSBQb3RlbnRpYWxseUNyb3NzT3JpZ2luRW5hYmxlZCkKKyAgICAgICAgICAgIG1f
b3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcobV9yZXNvdXJjZVJlcXVl
c3QuaHR0cE9yaWdpbigpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9vcmlnaW4gPSBj
YWNoZWRSZXNvdXJjZUxvYWRlci5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpOworICAgICAg
ICBBU1NFUlQobV9vcmlnaW4pOwogICAgICAgICBhZGRBZGRpdGlvbmFsUmVxdWVzdEhlYWRlcnMo
Y2FjaGVkUmVzb3VyY2VMb2FkZXIpOworICAgIH0KIAogICAgIC8vIEZJWE1FOiBJdCdzIHVuZm9y
dHVuYXRlIHRoYXQgdGhlIGNhY2hlIGxheWVyIGFuZCBiZWxvdyBnZXQgdG8ga25vdyBhbnl0aGlu
ZyBhYm91dCBmcmFnbWVudCBpZGVudGlmaWVycy4KICAgICAvLyBXZSBzaG91bGQgbG9vayBpbnRv
IHJlbW92aW5nIHRoZSBleHBlY3RhdGlvbiBvZiB0aGF0IGtub3dsZWRnZSBmcm9tIHRoZSBwbGF0
Zm9ybSBuZXR3b3JrIHN0YWNrcy4KQEAgLTM2Miw2ICszNjgsMjUgQEAgYm9vbCBDYWNoZWRSZXNv
dXJjZTo6cGFzc2VzU2FtZU9yaWdpblBvbGljeUNoZWNrKFNlY3VyaXR5T3JpZ2luJiBzZWN1cml0
eU9yaWdpbikKICAgICByZXR1cm4gcGFzc2VzQWNjZXNzQ29udHJvbENoZWNrKHNlY3VyaXR5T3Jp
Z2luKTsKIH0KIAordm9pZCBDYWNoZWRSZXNvdXJjZTo6c2V0Q3Jvc3NPcmlnaW4oKQoreworICAg
IEFTU0VSVChtX29wdGlvbnMucmVxdWVzdE9yaWdpblBvbGljeSgpICE9IFJlc3RyaWN0VG9TYW1l
T3JpZ2luKTsKKyAgICBtX3Jlc3BvbnNlVHlwZSA9IChtX29wdGlvbnMucmVxdWVzdE9yaWdpblBv
bGljeSgpID09IFBvdGVudGlhbGx5Q3Jvc3NPcmlnaW5FbmFibGVkKSA/IFJlc291cmNlUmVzcG9u
c2VCYXNlOjpUeXBlOjpDb3JzIDogUmVzb3VyY2VSZXNwb25zZUJhc2U6OlR5cGU6Ok9wYXF1ZTsK
K30KKworYm9vbCBDYWNoZWRSZXNvdXJjZTo6aXNDcm9zc09yaWdpbigpIGNvbnN0Cit7CisgICAg
QVNTRVJUKG1fb3B0aW9ucy5yZXF1ZXN0T3JpZ2luUG9saWN5KCkgIT0gUmVzdHJpY3RUb1NhbWVP
cmlnaW4pOworICAgIHJldHVybiBtX3Jlc3BvbnNlVHlwZSA9PSBSZXNvdXJjZVJlc3BvbnNlQmFz
ZTo6VHlwZTo6Q29ycyB8fCBtX3Jlc3BvbnNlVHlwZSA9PSBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6
VHlwZTo6T3BhcXVlOworfQorCitib29sIENhY2hlZFJlc291cmNlOjppc0NsZWFuKCkgY29uc3QK
K3sKKyAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9pbmZyYXN0
cnVjdHVyZS5odG1sI2NvcnMtc2FtZS1vcmlnaW4KKyAgICBBU1NFUlQobV9yZXNwb25zZVR5cGUg
IT0gUmVzb3VyY2VSZXNwb25zZUJhc2U6OlR5cGU6Ok9wYXF1ZXJlZGlyZWN0ICYmIG1fcmVzcG9u
c2VUeXBlICE9IFJlc291cmNlUmVzcG9uc2VCYXNlOjpUeXBlOjpFcnJvcik7CisgICAgcmV0dXJu
ICFsb2FkRmFpbGVkT3JDYW5jZWxlZCgpICYmIG1fcmVzcG9uc2VUeXBlICE9IFJlc291cmNlUmVz
cG9uc2VCYXNlOjpUeXBlOjpPcGFxdWU7Cit9CisKIGJvb2wgQ2FjaGVkUmVzb3VyY2U6OmlzRXhw
aXJlZCgpIGNvbnN0CiB7CiAgICAgaWYgKG1fcmVzcG9uc2UuaXNOdWxsKCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCmluZGV4IGQ0MGU5NTgwNDgxZTgw
N2FjYjM1MTc0MTU4NjY0YWE2MjY4OTk0NjUuLjE1M2EwNDIwMjgzNzMzMWM0N2JkOWZjOGYyN2Qw
MDg2NTc5ZjliMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZS5oCkBAIC0yMDAsMTEgKzIwMCwxNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJl
c3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHZpcnR1YWwgYm9v
bCBzaG91bGRDYWNoZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSB7IHJldHVybiB0
cnVlOyB9CiAgICAgdm9pZCBzZXRSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0g
ICAgdm9pZCBzZXRPcGFxdWVSZWRpcmVjdCgpIHsgbV9yZXNwb25zZVR5cGUgPSBSZXNvdXJjZVJl
c3BvbnNlQmFzZTo6VHlwZTo6T3BhcXVlcmVkaXJlY3Q7IH0KICAgICBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiByZXNwb25zZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2U7IH0KICAgICAvLyBU
aGlzIGlzIHRoZSBzYW1lIGFzIHJlc3BvbnNlKCkgZXhjZXB0IGFmdGVyIEhUVFAgcmVkaXJlY3Qg
dG8gZGF0YTogVVJMLgogICAgIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlRm9yU2Ft
ZU9yaWdpblBvbGljeUNoZWNrcygpIGNvbnN0OwogCisgICAgdm9pZCBzZXRPcGFxdWVSZWRpcmVj
dCgpIHsgbV9yZXNwb25zZVR5cGUgPSBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6VHlwZTo6T3BhcXVl
cmVkaXJlY3Q7IH0KKyAgICB2b2lkIHNldENyb3NzT3JpZ2luKCk7CisgICAgYm9vbCBpc0Nyb3Nz
T3JpZ2luKCkgY29uc3Q7CisgICAgYm9vbCBpc0NsZWFuKCkgY29uc3Q7CisKKyAgICBTZWN1cml0
eU9yaWdpbiogb3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW4uZ2V0KCk7IH0KKwogICAg
IGJvb2wgY2FuRGVsZXRlKCkgY29uc3QgeyByZXR1cm4gIWhhc0NsaWVudHMoKSAmJiAhbV9sb2Fk
ZXIgJiYgIW1fcHJlbG9hZENvdW50ICYmICFtX2hhbmRsZUNvdW50ICYmICFtX3Jlc291cmNlVG9S
ZXZhbGlkYXRlICYmICFtX3Byb3h5UmVzb3VyY2U7IH0KICAgICBib29sIGhhc09uZUhhbmRsZSgp
IGNvbnN0IHsgcmV0dXJuIG1faGFuZGxlQ291bnQgPT0gMTsgfQogCkBAIC0yMjIsOSArMjI4LDEw
IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgc2hvdWxkU2VuZFJlc291cmNlTG9hZENhbGxiYWNrcygp
IGNvbnN0IHsgcmV0dXJuIG1fb3B0aW9ucy5zZW5kTG9hZENhbGxiYWNrcygpID09IFNlbmRDYWxs
YmFja3M7IH0KICAgICBEYXRhQnVmZmVyaW5nUG9saWN5IGRhdGFCdWZmZXJpbmdQb2xpY3koKSBj
b25zdCB7IHJldHVybiBtX29wdGlvbnMuZGF0YUJ1ZmZlcmluZ1BvbGljeSgpOyB9CisgICAgYm9v
bCBjb3JzTW9kZUFjdGl2YXRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fb3B0aW9ucy5yZXF1ZXN0T3Jp
Z2luUG9saWN5KCkgPT0gUG90ZW50aWFsbHlDcm9zc09yaWdpbkVuYWJsZWQ7IH0KIAogICAgIGJv
b2wgYWxsb3dzQ2FjaGluZygpIGNvbnN0IHsgcmV0dXJuIG1fb3B0aW9ucy5jYWNoaW5nUG9saWN5
KCkgPT0gQ2FjaGluZ1BvbGljeTo6QWxsb3dDYWNoaW5nOyB9Ci0gICAgCisKICAgICB2aXJ0dWFs
IHZvaWQgZGVzdHJveURlY29kZWREYXRhKCkgeyB9CiAKICAgICB2b2lkIHNldE93bmluZ0NhY2hl
ZFJlc291cmNlTG9hZGVyKENhY2hlZFJlc291cmNlTG9hZGVyKiBjYWNoZWRSZXNvdXJjZUxvYWRl
cikgeyBtX293bmluZ0NhY2hlZFJlc291cmNlTG9hZGVyID0gY2FjaGVkUmVzb3VyY2VMb2FkZXI7
IH0KQEAgLTMxMyw2ICszMjAsNyBAQCBwcml2YXRlOgogICAgIFN0cmluZyBtX2ZyYWdtZW50SWRl
bnRpZmllckZvclJlcXVlc3Q7CiAKICAgICBSZXNvdXJjZUVycm9yIG1fZXJyb3I7CisgICAgUmVm
UHRyPFNlY3VyaXR5T3JpZ2luPiBtX29yaWdpbjsKIAogICAgIGRvdWJsZSBtX2xhc3REZWNvZGVk
QWNjZXNzVGltZTsgLy8gVXNlZCBhcyBhICJ0aHJhc2ggZ3VhcmQiIGluIHRoZSBjYWNoZQogICAg
IGRvdWJsZSBtX2xvYWRGaW5pc2hUaW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAKaW5kZXggYTQ4YmU0Zjk4NjJj
M2Q1MmJjNWQ2NWY4ZWY1NzJhNDFhNGI5N2NiZi4uMTc0OTYzZTE4ODc3NjQzM2QzZGM5OWQ4MGY0
NWRiOTljMTMzM2MxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwCkBAIC0zMTMsOSArMzEzLDE0IEBAIHZvaWQg
UmVzb3VyY2VSZXF1ZXN0QmFzZTo6c2V0SFRUUE9yaWdpbihjb25zdCBTdHJpbmcmIGh0dHBPcmln
aW4pCiAgICAgc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpPcmlnaW4sIGh0dHBP
cmlnaW4pOwogfQogCitib29sIFJlc291cmNlUmVxdWVzdEJhc2U6Omhhc0hUVFBPcmlnaW4oKSBj
b25zdAoreworICAgIHJldHVybiBtX2h0dHBIZWFkZXJGaWVsZHMuY29udGFpbnMoSFRUUEhlYWRl
ck5hbWU6Ok9yaWdpbik7Cit9CisKIHZvaWQgUmVzb3VyY2VSZXF1ZXN0QmFzZTo6Y2xlYXJIVFRQ
T3JpZ2luKCkKIHsKLSAgICB1cGRhdGVSZXNvdXJjZVJlcXVlc3QoKTsgCisgICAgdXBkYXRlUmVz
b3VyY2VSZXF1ZXN0KCk7CiAKICAgICBtX2h0dHBIZWFkZXJGaWVsZHMucmVtb3ZlKEhUVFBIZWFk
ZXJOYW1lOjpPcmlnaW4pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oCmluZGV4IDZlMGJiZTAyMGI5ZTg3OThkYjcwMGVi
NGQ1NjNmNGE3MDg2YTk1OTAuLmQzYWMzOTFlZmE0YTU5ZmE2YWIxYThjMWEzMTY3NjZmMDJhYTg3
NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VS
ZXF1ZXN0QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VSZXF1ZXN0QmFzZS5oCkBAIC0yMiw3ICsyMiw3IEBACiAgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCiAgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
ICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAK
ICNpZm5kZWYgUmVzb3VyY2VSZXF1ZXN0QmFzZV9oCkBAIC0xMDAsOCArMTAwLDkgQEAgcHVibGlj
OgogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBodHRwUmVmZXJyZXIoKSBjb25zdDsKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNldEhUVFBSZWZlcnJlcihjb25zdCBTdHJpbmcmKTsKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFySFRUUFJlZmVycmVyKCk7Ci0gICAgCisKICAgICBTdHJp
bmcgaHR0cE9yaWdpbigpIGNvbnN0OworICAgIGJvb2wgaGFzSFRUUE9yaWdpbigpIGNvbnN0Owog
ICAgIHZvaWQgc2V0SFRUUE9yaWdpbihjb25zdCBTdHJpbmcmKTsKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGNsZWFySFRUUE9yaWdpbigpOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMGE4MjEzZjZiMjExMmZjZDZkMGQ5
ZGNiMDJkMzU3ZjVkZDgzNmRlYS4uMmRhMmMzM2JlMWRmNTkyYjc1Yzk3MWZlM2I5ZTk4MDlkNmUx
MDMwMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE2LTA2LTIyICBZb3Vlbm4gRmFibGV0ICA8
eW91ZW5uZkBnbWFpbC5jb20+CisKKyAgICAgICAgQ2xlYW4gQ1NTIHN0eWxlc2hlZXRzIHNob3Vs
ZCBiZSBhY2Nlc3NpYmxlIGZyb20gSmF2YVNjcmlwdAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4NzI4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2Nhbm5vdC1yZWFk
LWNzc3J1bGVzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2Nh
bm5vdC1yZWFkLWNzc3J1bGVzLXJlZGlyZWN0LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRw
L3Rlc3RzL3NlY3VyaXR5L2Nhbm5vdC1yZWFkLWNzc3J1bGVzLmh0bWw6IEFkZGluZyBtb3JlIHRl
c3RzIHJlbGF0ZWQgdG8gQ09SUy4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2Nhbm5v
dC1yZWFkLWNzc3J1bGVzLXJlZGlyZWN0Lmh0bWw6IERpdHRvLgorICAgICAgICAqIGh0dHAvdGVz
dHMvc2VjdXJpdHkvY3Jvc3Mtb3JpZ2luLWNzcy05Lmh0bWw6IEFjdGl2YXRpbmcgSlMgdmlzaWJp
bGl0eSBjaGVja3MuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMveG9y
aWdpbmNzczEtYWxsb3ctc3Rhci5waHA6IEFkZGVkLgorCiAyMDE2LTA2LTIyICBQZXIgQXJuZSBW
b2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICB3aW5kb3cuc2hvd01vZGFsRGlh
bG9nIGRvZXNuJ3Qgd29yayBpbiBEdW1wUmVuZGVyVHJlZSBvbiBXaW5kb3dzCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Nhbm5vdC1yZWFkLWNzc3J1bGVzLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY2Fubm90LXJlYWQt
Y3NzcnVsZXMtZXhwZWN0ZWQudHh0CmluZGV4IDdhNzhiYWJjMmE1ZDg0NDdmMDRiNTk0YmIyMmQw
ZTJhZTQyOTY0MzUuLmI5MTUxMjJmNzM5Njg5OGMxY2VmZWFkZjk4YjU2ZGIzNjczZTMwN2QgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY2Fubm90LXJlYWQtY3Nz
cnVsZXMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkv
Y2Fubm90LXJlYWQtY3NzcnVsZXMtZXhwZWN0ZWQudHh0CkBAIC0xLDEwICsxLDIyIEBACiBUaGlz
IHRlc3Qgd2hldGhlciBhIHNjcmlwdCBjYW4gcmVhZCB0aGUgcnVsZXMgZnJvbSBhIGNyb3NzLW9y
aWdpbiBzdHlsZSBzaGVldC4gRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gd2h5IHdlIGJsb2NrIHRo
aXMsIHBsZWFzZSBzZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
NTI3LgogCiBUZXN0IGJlZ2lucy4KLT09IENyb3NzLU9yaWdpbiA9PQorPT0gQ3Jvc3MtT3JpZ2lu
IHJlc291cmNlLCBuby1jb3JzIG1vZGUgPT0KIGNzc1J1bGVzOiBudWxsCiBydWxlczogbnVsbAot
PT0gU2FtZS1PcmlnaW4gPT0KKz09IFNhbWUtT3JpZ2luIHJlc291cmNlLCBuby1jb3JzIG1vZGUg
PT0KIGNzc1J1bGVzOiBbb2JqZWN0IENTU1J1bGVMaXN0XQorY3NzUnVsZXMgbGVuZ3RoOiAxCiBy
dWxlczogW29iamVjdCBDU1NSdWxlTGlzdF0KK3J1bGVzIGxlbmd0aDogMQorPT0gQ3Jvc3MtT3Jp
Z2luIHJlc291cmNlLCBjb3JzIG1vZGUsIGZhaWxpbmcgY29ycyBjaGVjayA9PQorY3NzUnVsZXM6
IFtvYmplY3QgQ1NTUnVsZUxpc3RdCitjc3NSdWxlcyBsZW5ndGg6IDEKK3J1bGVzOiBbb2JqZWN0
IENTU1J1bGVMaXN0XQorcnVsZXMgbGVuZ3RoOiAxCis9PSBDcm9zcy1PcmlnaW4gcmVzb3VyY2Us
IGNvcnMgbW9kZSwgc3VjY2Vzc2Z1bCBjb3JzIGNoZWNrID09Citjc3NSdWxlczogW29iamVjdCBD
U1NSdWxlTGlzdF0KK2Nzc1J1bGVzIGxlbmd0aDogMQorcnVsZXM6IFtvYmplY3QgQ1NTUnVsZUxp
c3RdCitydWxlcyBsZW5ndGg6IDEKIFRlc3QgZW5kcy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc2VjdXJpdHkvY2Fubm90LXJlYWQtY3NzcnVsZXMtcmVkaXJlY3QtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jYW5ub3QtcmVhZC1jc3Ny
dWxlcy1yZWRpcmVjdC1leHBlY3RlZC50eHQKaW5kZXggMDYyNjQ2ZmQ0MmQ5ZmViOGQzY2UzZWZl
ODBhNzg0NWQ3ZTZhMjM5Ni4uYjExY2FkMjFiYzY0OGYxOTg3NGVkZjQ4NzNhMTdlOGZkOWQ1NTFj
NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jYW5ub3QtcmVh
ZC1jc3NydWxlcy1yZWRpcmVjdC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9zZWN1cml0eS9jYW5ub3QtcmVhZC1jc3NydWxlcy1yZWRpcmVjdC1leHBlY3RlZC50eHQK
QEAgLTEsMTAgKzEsMjYgQEAKK0NPTlNPTEUgTUVTU0FHRTogQ3Jvc3Mtb3JpZ2luIHJlZGlyZWN0
aW9uIGRlbmllZCBieSBDcm9zcy1PcmlnaW4gUmVzb3VyY2UgU2hhcmluZyBwb2xpY3k6IE9yaWdp
biBodHRwOi8vMTI3LjAuMC4xOjgwMDAgaXMgbm90IGFsbG93ZWQgYnkgQWNjZXNzLUNvbnRyb2wt
QWxsb3ctT3JpZ2luLgogVGhpcyB0ZXN0IHdoZXRoZXIgYSBzY3JpcHQgY2FuIHJlYWQgdGhlIHJ1
bGVzIGZyb20gYSBjcm9zcy1vcmlnaW4gc3R5bGUgc2hlZXQgaW4gdGhlIHByZXNlbmNlIG9mIHJl
ZGlyZWN0cy4gRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gd2h5IHdlIGJsb2NrIHRoaXMsIHBsZWFz
ZSBzZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTI3LgogCiBU
ZXN0IGJlZ2lucy4KLT09IFNhbWUtT3JpZ2luIHRvIENyb3NzLU9yaWdpbiA9PQorPT0gU2FtZS1P
cmlnaW4gdG8gQ3Jvc3MtT3JpZ2luLCBuby1jb3JzIG1vZGUgPT0KIGNzc1J1bGVzOiBudWxsCiBy
dWxlczogbnVsbAotPT0gQ3Jvc3MtT3JpZ2luIHRvIFNhbWUtT3JpZ2luID09Cis9PSBDcm9zcy1P
cmlnaW4gdG8gU2FtZS1PcmlnaW4sIG5vLWNvcnMgbW9kZSA9PQogY3NzUnVsZXM6IFtvYmplY3Qg
Q1NTUnVsZUxpc3RdCitjc3NSdWxlcyBsZW5ndGg6IDEKIHJ1bGVzOiBbb2JqZWN0IENTU1J1bGVM
aXN0XQorcnVsZXMgbGVuZ3RoOiAxCis9PSBTYW1lLU9yaWdpbiB0byBTYW1lLU9yaWdpbiwgY29y
cyBtb2RlID09Citjc3NSdWxlczogW29iamVjdCBDU1NSdWxlTGlzdF0KK2Nzc1J1bGVzIGxlbmd0
aDogMQorcnVsZXM6IFtvYmplY3QgQ1NTUnVsZUxpc3RdCitydWxlcyBsZW5ndGg6IDEKKz09IENy
b3NzLU9yaWdpbiB0byBTYW1lLU9yaWdpbiwgY29ycyBtb2RlLCBzdWNjZXNzZnVsIGNvcnMgY2hl
Y2sgPT0KK2Nzc1J1bGVzOiBbb2JqZWN0IENTU1J1bGVMaXN0XQorY3NzUnVsZXMgbGVuZ3RoOiAx
CitydWxlczogW29iamVjdCBDU1NSdWxlTGlzdF0KK3J1bGVzIGxlbmd0aDogMQorPT0gQ3Jvc3Mt
T3JpZ2luIHRvIFNhbWUtT3JpZ2luLCBjb3JzIG1vZGUsIGZhaWxpbmcgY29ycyBjaGVjayA9PQor
Y3NzUnVsZXM6IG51bGwKK3J1bGVzOiBudWxsCiBUZXN0IGVuZHMuCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Nhbm5vdC1yZWFkLWNzc3J1bGVzLXJlZGlyZWN0
Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Nhbm5vdC1yZWFkLWNzc3J1
bGVzLXJlZGlyZWN0Lmh0bWwKaW5kZXggYTQ1YTM4NTBiMjk1YzMzNWM1ZWYwMzIwM2JkNjc5ZmRk
MTc0NGY3Mi4uY2ZlZjliNTY5NjJjYTc1OGI5NDdkZGVlM2FmNDg2NTA0ZjE2YWIwZCAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jYW5ub3QtcmVhZC1jc3NydWxl
cy1yZWRpcmVjdC5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY2Fu
bm90LXJlYWQtY3NzcnVsZXMtcmVkaXJlY3QuaHRtbApAQCAtNSw2ICs1LDEyIEBACiAgICAgICBo
cmVmPSIvcmVzb3VyY2VzL3JlZGlyZWN0LnBocD91cmw9aHR0cDovL2xvY2FsaG9zdDo4MDAwL3Nl
Y3VyaXR5L3Jlc291cmNlcy9jc3NTdHlsZS5jc3MiPgogPGxpbmsgcmVsPSJzdHlsZXNoZWV0Igog
ICAgICAgaHJlZj0iaHR0cDovL2xvY2FsaG9zdDo4MDAwL3Jlc291cmNlcy9yZWRpcmVjdC5waHA/
dXJsPWh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9yZXNvdXJjZXMvY3NzU3R5bGUuY3Nz
Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIKKyAgICAgIGhyZWY9Ii9yZXNvdXJjZXMvcmVkaXJl
Y3QucGhwP3VybD1odHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvcmVzb3VyY2VzL2Nzc1N0
eWxlLmNzcyIgY3Jvc3NvcmlnaW49IiI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiCisgICAgICBo
cmVmPSJodHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkvcmVzb3VyY2VzL3JlZGlyZWN0LWFs
bG93LXN0YXIucGhwP3VybD1odHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvcmVzb3VyY2Vz
L3hvcmlnaW5jc3MxLWFsbG93LXN0YXIucGhwIiBjcm9zc29yaWdpbj0iIj4KKzxsaW5rIHJlbD0i
c3R5bGVzaGVldCIKKyAgICAgIGhyZWY9Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9yZXNvdXJjZXMv
cmVkaXJlY3QucGhwP3VybD1odHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvcmVzb3VyY2Vz
L3hvcmlnaW5jc3MxLmNzcyIgY3Jvc3NvcmlnaW49IiI+CiA8c2NyaXB0PgogaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQogICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwpAQCAtMTUsMTYgKzIxLDM4
IEBAIGZ1bmN0aW9uIGxvZyhtc2cpIHsKICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29u
c29sZSIpLmFwcGVuZENoaWxkKGRpdik7CiB9CiAKK2Z1bmN0aW9uIGNoZWNrQ1NTUnVsZXMoc2hl
ZXQpCit7CisgICAgdHJ5IHsKKyAgICAgICAgdmFyIGNzc1J1bGVzID0gc2hlZXQuY3NzUnVsZXM7
CisgICAgICAgIGxvZygiY3NzUnVsZXM6ICIgKyBjc3NSdWxlcyk7CisgICAgICAgIGlmIChjc3NS
dWxlcykKKyAgICAgICAgICAgIGxvZygiY3NzUnVsZXMgbGVuZ3RoOiAiICsgY3NzUnVsZXMubGVu
Z3RoKTsKKyAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgbG9nKCJleGNlcHRpb24gdGhyb3duIGZv
ciBjc3NSdWxlczogIiArIGUpOworICAgIH0KKyAgICB0cnkgeworICAgICAgICB2YXIgcnVsZXMg
PSBzaGVldC5ydWxlczsKKyAgICAgICAgbG9nKCJydWxlczogIiArIHJ1bGVzKTsKKyAgICAgICAg
aWYgKHJ1bGVzKQorICAgICAgICAgICAgbG9nKCJydWxlcyBsZW5ndGg6ICIgKyBydWxlcy5sZW5n
dGgpOworICAgIH0gY2F0Y2goZSkgeworICAgICAgICBsb2coImV4Y2VwdGlvbiB0aHJvd24gZm9y
IHJ1bGVzOiAiICsgZSk7CisgICAgfQorfQorCiB3aW5kb3cub25sb2FkID0gZnVuY3Rpb24oKSB7
CiAgICAgbG9nKCJUZXN0IGJlZ2lucy4iKTsKLSAgICBsb2coIj09IFNhbWUtT3JpZ2luIHRvIENy
b3NzLU9yaWdpbiA9PSIpOwotICAgIHZhciBzaGVldDEgPSBkb2N1bWVudC5zdHlsZVNoZWV0c1sw
XTsKLSAgICBsb2coImNzc1J1bGVzOiAiICsgc2hlZXQxLmNzc1J1bGVzKTsKLSAgICBsb2coInJ1
bGVzOiAiICsgc2hlZXQxLnJ1bGVzKTsKLSAgICBsb2coIj09IENyb3NzLU9yaWdpbiB0byBTYW1l
LU9yaWdpbiA9PSIpOwotICAgIHZhciBzaGVldDIgPSBkb2N1bWVudC5zdHlsZVNoZWV0c1sxXTsK
LSAgICBsb2coImNzc1J1bGVzOiAiICsgc2hlZXQyLmNzc1J1bGVzKTsKLSAgICBsb2coInJ1bGVz
OiAiICsgc2hlZXQyLnJ1bGVzKTsKKyAgICBsb2coIj09IFNhbWUtT3JpZ2luIHRvIENyb3NzLU9y
aWdpbiwgbm8tY29ycyBtb2RlID09Iik7CisgICAgY2hlY2tDU1NSdWxlcyhkb2N1bWVudC5zdHls
ZVNoZWV0c1swXSk7CisgICAgbG9nKCI9PSBDcm9zcy1PcmlnaW4gdG8gU2FtZS1PcmlnaW4sIG5v
LWNvcnMgbW9kZSA9PSIpOworICAgIGNoZWNrQ1NTUnVsZXMoZG9jdW1lbnQuc3R5bGVTaGVldHNb
MV0pOworICAgIGxvZygiPT0gU2FtZS1PcmlnaW4gdG8gU2FtZS1PcmlnaW4sIGNvcnMgbW9kZSA9
PSIpOworICAgIGNoZWNrQ1NTUnVsZXMoZG9jdW1lbnQuc3R5bGVTaGVldHNbMl0pOworICAgIGxv
ZygiPT0gQ3Jvc3MtT3JpZ2luIHRvIFNhbWUtT3JpZ2luLCBjb3JzIG1vZGUsIHN1Y2Nlc3NmdWwg
Y29ycyBjaGVjayA9PSIpOworICAgIGNoZWNrQ1NTUnVsZXMoZG9jdW1lbnQuc3R5bGVTaGVldHNb
M10pOworICAgIGxvZygiPT0gQ3Jvc3MtT3JpZ2luIHRvIFNhbWUtT3JpZ2luLCBjb3JzIG1vZGUs
IGZhaWxpbmcgY29ycyBjaGVjayA9PSIpOworICAgIGNoZWNrQ1NTUnVsZXMoZG9jdW1lbnQuc3R5
bGVTaGVldHNbNF0pOwogICAgIGxvZygiVGVzdCBlbmRzLiIpOwogfQogPC9zY3JpcHQ+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Nhbm5vdC1yZWFkLWNzc3J1
bGVzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Nhbm5vdC1yZWFkLWNz
c3J1bGVzLmh0bWwKaW5kZXggNjI2MDkyYmQ0M2Q5ODVmMTgwZDRmY2ZjYTg5ODdkNzBkNjEwNDBi
NS4uNjNmZDZjZTE4MDk2OGU0MzgxMGJkZWY4Mzc4YWVkZTAzZjZlNTFiYiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jYW5ub3QtcmVhZC1jc3NydWxlcy5odG1s
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY2Fubm90LXJlYWQtY3NzcnVs
ZXMuaHRtbApAQCAtNCw2ICs0LDEwIEBACiA8bGluayByZWw9InN0eWxlc2hlZXQiCiAgICAgICBo
cmVmPSJodHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkvcmVzb3VyY2VzL2Nzc1N0eWxlLmNz
cyI+CiA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy9jc3NTdHlsZS5jc3Mi
PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IgorICAgICAgaHJlZj0iaHR0cDovL2xvY2FsaG9zdDo4
MDAwL3NlY3VyaXR5L3Jlc291cmNlcy9jc3NTdHlsZS5jc3MiIGNyb3Nzb3JpZ2luPSIiPgorPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IgorICAgICAgaHJlZj0iaHR0cDovL2xvY2FsaG9zdDo4MDAwL3Nl
Y3VyaXR5L3Jlc291cmNlcy94b3JpZ2luY3NzMS1hbGxvdy1zdGFyLnBocCIgY3Jvc3NvcmlnaW49
IiI+CiA8c2NyaXB0PgogaWYgKHdpbmRvdy50ZXN0UnVubmVyKQogICAgIHRlc3RSdW5uZXIuZHVt
cEFzVGV4dCgpOwpAQCAtMTQsMTYgKzE4LDM2IEBAIGZ1bmN0aW9uIGxvZyhtc2cpIHsKICAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmFwcGVuZENoaWxkKGRpdik7CiB9CiAK
K2Z1bmN0aW9uIGNoZWNrQ1NTUnVsZXMoc2hlZXQpCit7CisgICAgdHJ5IHsKKyAgICAgICAgdmFy
IGNzc1J1bGVzID0gc2hlZXQuY3NzUnVsZXM7CisgICAgICAgIGxvZygiY3NzUnVsZXM6ICIgKyBj
c3NSdWxlcyk7CisgICAgICAgIGlmIChjc3NSdWxlcykKKyAgICAgICAgICAgIGxvZygiY3NzUnVs
ZXMgbGVuZ3RoOiAiICsgY3NzUnVsZXMubGVuZ3RoKTsKKyAgICB9IGNhdGNoKGUpIHsKKyAgICAg
ICAgbG9nKCJleGNlcHRpb24gdGhyb3duIGZvciBjc3NSdWxlczogIiArIGUpOworICAgIH0KKyAg
ICB0cnkgeworICAgICAgICB2YXIgcnVsZXMgPSBzaGVldC5ydWxlczsKKyAgICAgICAgbG9nKCJy
dWxlczogIiArIHJ1bGVzKTsKKyAgICAgICAgaWYgKHJ1bGVzKQorICAgICAgICAgICAgbG9nKCJy
dWxlcyBsZW5ndGg6ICIgKyBydWxlcy5sZW5ndGgpOworICAgIH0gY2F0Y2goZSkgeworICAgICAg
ICBsb2coImV4Y2VwdGlvbiB0aHJvd24gZm9yIHJ1bGVzOiAiICsgZSk7CisgICAgfQorfQorCiB3
aW5kb3cub25sb2FkID0gZnVuY3Rpb24oKSB7CiAgICAgbG9nKCJUZXN0IGJlZ2lucy4iKTsKLSAg
ICBsb2coIj09IENyb3NzLU9yaWdpbiA9PSIpOwotICAgIHZhciBzaGVldDEgPSBkb2N1bWVudC5z
dHlsZVNoZWV0c1swXTsKLSAgICBsb2coImNzc1J1bGVzOiAiICsgc2hlZXQxLmNzc1J1bGVzKTsK
LSAgICBsb2coInJ1bGVzOiAiICsgc2hlZXQxLnJ1bGVzKTsKLSAgICBsb2coIj09IFNhbWUtT3Jp
Z2luID09Iik7Ci0gICAgdmFyIHNoZWV0MiA9IGRvY3VtZW50LnN0eWxlU2hlZXRzWzFdOwotICAg
IGxvZygiY3NzUnVsZXM6ICIgKyBzaGVldDIuY3NzUnVsZXMpOwotICAgIGxvZygicnVsZXM6ICIg
KyBzaGVldDIucnVsZXMpOworICAgIGxvZygiPT0gQ3Jvc3MtT3JpZ2luIHJlc291cmNlLCBuby1j
b3JzIG1vZGUgPT0iKTsKKyAgICBjaGVja0NTU1J1bGVzKGRvY3VtZW50LnN0eWxlU2hlZXRzWzBd
KTsKKyAgICBsb2coIj09IFNhbWUtT3JpZ2luIHJlc291cmNlLCBuby1jb3JzIG1vZGUgPT0iKTsK
KyAgICBjaGVja0NTU1J1bGVzKGRvY3VtZW50LnN0eWxlU2hlZXRzWzFdKTsKKyAgICBsb2coIj09
IENyb3NzLU9yaWdpbiByZXNvdXJjZSwgY29ycyBtb2RlLCBmYWlsaW5nIGNvcnMgY2hlY2sgPT0i
KTsKKyAgICBjaGVja0NTU1J1bGVzKGRvY3VtZW50LnN0eWxlU2hlZXRzWzJdKTsKKyAgICBsb2co
Ij09IENyb3NzLU9yaWdpbiByZXNvdXJjZSwgY29ycyBtb2RlLCBzdWNjZXNzZnVsIGNvcnMgY2hl
Y2sgPT0iKTsKKyAgICBjaGVja0NTU1J1bGVzKGRvY3VtZW50LnN0eWxlU2hlZXRzWzNdKTsKICAg
ICBsb2coIlRlc3QgZW5kcy4iKTsKIH0KIDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1vcmlnaW4tY3NzLTkuaHRtbCBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3Mtb3JpZ2luLWNzcy05Lmh0bWwKaW5kZXggNjFi
MjUwMjQ4YWJhOTFiNDhmZjI4YjQxZWY0ZmFlZTQ0NzdhNzUyNC4uNWI5MDYxZWZiOTE2ZDJhODdl
Yjg1OTM3MzFjMTNjMjc1MDQ3NDZmZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zZWN1cml0eS9jcm9zcy1vcmlnaW4tY3NzLTkuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3NlY3VyaXR5L2Nyb3NzLW9yaWdpbi1jc3MtOS5odG1sCkBAIC0yMSw4ICsyMSw3IEBA
IGZ1bmN0aW9uIGNoZWNrQ1NTTG9hZGluZyhpZCwgZXhwZWN0VG9JbmNsdWRlT3JpZ2luLCBleHBl
Y3RWaXNpYmlsaXR5KQogewogICAgIGV4cGVjdGVkQ29sb3IgPSBleHBlY3RUb0luY2x1ZGVPcmln
aW4gPyAicmdiKDI1NSwgMjU1LCAwKSIgOiAicmdiKDAsIDAsIDI1NSkiOwogICAgIGFzc2VydF9l
cXVhbHMoZ2V0QmFja2dyb3VuZENvbG9yRm9ySWQoaWQpLCBleHBlY3RlZENvbG9yKTsKLSAgICAv
LyBGSVhNRTogY3NzUnVsZXMgc2hvdWxkIGJlIG1hZGUgdmlzaWJsZSBhY2NvcmRpbmcgcmVzb3Vy
Y2UgdGFpbnRlZCBzdGF0dXMsIG5vdCBvbmx5IGJhc2VkIG9uIHRoZSByZXNvdXJjZSBVUkwgYmVp
bmcgY3Jvc3Mgb3JpZ2luLgotICAgIC8vIGFzc2VydF9lcXVhbHMoZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImxpbmstIiArIGlkKS5zaGVldC5jc3NSdWxlcyAhPT0gbnVsbCwgZXhwZWN0VmlzaWJp
bGl0eSk7CisgICAgYXNzZXJ0X2VxdWFscyhkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibGluay0i
ICsgaWQpLnNoZWV0LmNzc1J1bGVzICE9PSBudWxsLCBleHBlY3RWaXNpYmlsaXR5KTsKIH0KIAog
dmFyIG9ubG9hZFRlc3QgPSBhc3luY190ZXN0KCIgVGVzdGluZyB0aGF0IGxpbmsgZWxlbWVudCB0
byBsb2FkIHN0eWxlc2hlZXRzIGNvcnJlY3RseSBoYW5kbGUgY3Jvc3NvcmlnaW4gbW9kZS4iKTsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcmVzb3VyY2VzL3hv
cmlnaW5jc3MxLWFsbG93LXN0YXIucGhwIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0
eS9yZXNvdXJjZXMveG9yaWdpbmNzczEtYWxsb3ctc3Rhci5waHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDQ3OTg0
NDE0OGY0MDlkMjA0N2JjMjA3YmJlMmUzZjVhNDQ2MDM3OAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcmVzb3VyY2VzL3hvcmlnaW5jc3MxLWFsbG93
LXN0YXIucGhwCkBAIC0wLDAgKzEsMTEgQEAKKzw/cGhwCitoZWFkZXIoIkFjY2Vzcy1Db250cm9s
LUFsbG93LU9yaWdpbjogKiIpOworCiskbmFtZSA9ICd4b3JpZ2luY3NzMS5jc3MnOworJGZwID0g
Zm9wZW4oJG5hbWUsICdyYicpOworaGVhZGVyKCJDb250ZW50LVR5cGU6IHRleHQvY3NzIik7Cito
ZWFkZXIoIkNvbnRlbnQtTGVuZ3RoOiAiIC4gZmlsZXNpemUoJG5hbWUpKTsKKworZnBhc3N0aHJ1
KCRmcCk7CitleGl0OworPz4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>281908</attachid>
            <date>2016-06-23 07:54:56 -0700</date>
            <delta_ts>2016-08-02 05:33:34 -0700</delta_ts>
            <desc>Refactoring of redirectReceived</desc>
            <filename>bug-158728-20160623165445.patch</filename>
            <type>text/plain</type>
            <size>36382</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAyMzcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2YxNmU4NWZiZmU1YTZl
MDA0YTk4ZmRmNTc2ZDUwMWRkMGVlMDFlMi4uYTkzN2E2OWM5N2IzOWQ4NjMzNTY3NmU1ZGI1MTg4
YmYzZjIxNWViNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDE2LTA2LTIzICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uZkBnbWFpbC5jb20+CisKKyAgICAgICAgQ2xlYW4gQ1NTIHN0eWxl
c2hlZXRzIHNob3VsZCBiZSBhY2Nlc3NpYmxlIGZyb20gSmF2YVNjcmlwdAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4NzI4CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNpbmcgY29tcHV0YXRp
b24gb2YgdGhlIHJlc291cmNlIHJlc3BvbnNlIHR5cGUgYXMgcGVyIGZldGNoIHNwZWNpZmljYXRp
b24uCisgICAgICAgIFRoaXMgY29tcHV0YXRpb24gaXMgZG9uZSBpbiBTdWJyZXNvdXJjZUxvYWRl
ciBhdCBpbml0IHRpbWUgYW5kIGZvciBlYWNoIHJlZGlyZWN0aW9uLgorICAgICAgICBJZiBjcm9z
cy1vcmlnaW4sIFN1YnJlc291cmNlTG9hZGVyIHdpbGwgc2V0IHRoZSByZXNwb25zZSB0eXBlIHRv
IENvcnMgaWYgZmV0Y2ggbW9kZSBpcyBDb3JzCisgICAgICAgIG9yIHRvIE9wYXF1ZSBpZiBmZXRj
aCBtb2RlIGlzIE5vQ29ycy4KKworICAgICAgICBNYWtpbmcgdXNlIG9mIHRoZSByZXNvdXJjZSBy
ZXNwb25zZSB0eXBlIHRvIGV2YWx1YXRlIHdoZXRoZXIgdG8gbWFrZSB0aGUgQ1NTIHN0eWxlc2hl
ZXRzIHZpc2libGUKKyAgICAgICAgZm9yIHN0eWxlc2hlZXQgbGluayBlbGVtZW50cyBhbmQgZm9y
IHN0eWxlc2hlZXQgcHJvY2Vzc2luZyBpbnN0cnVjdGlvbnMuCisgICAgICAgIElkZWFsbHksIHRo
ZSBvcmlnaW4gZmxhZyBzaG91bGQgYmUgYSBib29sZWFuLgorCisgICAgICAgIFRvIGtlZXAgYmVo
YXZpb3IgY29uc2lzdGVudCBpbiBjb3JzLWNoZWNrLXVuYXdhcmUgY2FzZXMsIHRoZSBmbGFnIGNh
biBiZSBzZXQgdG8gdW5kZWZpbmVkIGluIHdoaWNoIGNhc2UgdGhlCisgICAgICAgIGJlaGF2aW9y
IHJlbWFpbnMgdGhlIHNhbWUgKGNoZWNraW5nIG9mIHRoZSBzdHlsZXNoZWV0IFVSTCkuCisgICAg
ICAgIFRoZSBvcmlnaW4gZmxhZyBpcyBzZXQgdG8gdHJ1ZSBvciBmYWxzZSBvbmx5IGluIGNhc2Ug
b2YgZmV0Y2ggbW9kZSBiZWluZyBzZXQgdG8gY29ycyB1c2luZyB0aGUgY3Jvc3NvcmlnaW4KKyAg
ICAgICAgYXR0cmlidXRlLgorCisgICAgICAgIENvdmVyZWQgYnkgdXBkYXRlZCB0ZXN0cy4KKwor
ICAgICAgICAqIGNzcy9DU1NTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0
eWxlU2hlZXQ6OmNyZWF0ZSk6IE1ha2VzIG9yaWdpbiBmbGFnIHVuZGVmaW5lZCBpZiBib29sZWFu
IHBhcmFtZXRlciBpcyBub3QgcGFzc2VkLgorICAgICAgICBPdGhlcndpc2Ugb3JpZ2luIGZsYWcg
aXMgc2V0IGFjY29yZGluZyBnaXZlbiBib29sZWFuIHZhbHVlLgorICAgICAgICAoV2ViQ29yZTo6
Q1NTU3R5bGVTaGVldDo6Y3JlYXRlSW5saW5lKTogTWFrZXMgb3JpZ2luIGZsYWcgc2V0IHRvIHRy
dWUuCisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNoZWV0OjpDU1NTdHlsZVNoZWV0KTogQWRk
aW5nIG9yaWdpbiBmbGFnIGluaXRpYWxpemF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5
bGVTaGVldDo6Y2FuQWNjZXNzUnVsZXMpOiBSZXR1cm5pbmcgYWNjb3JkaW5nIHRoZSBvcmlnaW4g
ZmxhZyBpZiBzZXQuCisgICAgICAgIFJldHVybmluZyBhcyBiZWZvcmUgaW4gY2FzZSB0aGUgZmxh
ZyBpcyB1bmRlZmluZWQuCisgICAgICAgICogY3NzL0NTU1N0eWxlU2hlZXQuaDogQWRkaW5nIG9y
aWdpbiBjbGVhbiBmbGFnLgorICAgICAgICAqIGRvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UHJvY2Vzc2luZ0luc3RydWN0aW9uOjpzZXRDU1NTdHlsZVNo
ZWV0KTogTWlub3IgcmVmYWN0b3JpbmcuCisgICAgICAgICogaHRtbC9IVE1MTGlua0VsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTExpbmtFbGVtZW50Ojppbml0aWFsaXplU3R5bGVT
aGVldCk6IEhlbHBlciByb3V0aW5lIHVzZWQgaW4gc2V0Q1NTU3R5bGVTaGVldC4KKyAgICAgICAg
U2V0cyBvcmlnaW4gY2xlYW4gZmxhZyBpZiB0aGUgcmVzb3VyY2UgaXMgY2xlYW4uCisgICAgICAg
IChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6OnNldENTU1N0eWxlU2hlZXQpOiBNYWtpbmcgdXNl
IG9mIGluaXRpYWxpemVTdHlsZVNoZWV0LgorICAgICAgICAqIGh0bWwvSFRNTExpbmtFbGVtZW50
Lmg6CisgICAgICAgICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlN1YnJlc291cmNlTG9hZGVyOjppbml0KTogR2V0dGluZyBtX29yaWdpbiB0byBjb21w
dXRlIHRoZSByZXNvdXJjZSByZXNwb25zZSB0eXBlLgorICAgICAgICAoV2ViQ29yZTo6U3VicmVz
b3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdEludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6
OlN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29y
ZTo6U3VicmVzb3VyY2VMb2FkZXI6OmNoZWNrUmVkaXJlY3Rpb25Dcm9zc09yaWdpbkFjY2Vzc0Nv
bnRyb2wpOiBNYXJraW5nIHJlc291cmNlIGFzIGNyb3NzLW9yaWdpbgorICAgICAgICBpZiByZWRp
cmVjdGlvbiBpcyBjcm9zcy1vcmlnaW4uCisgICAgICAgICogbG9hZGVyL1N1YnJlc291cmNlTG9h
ZGVyLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpsb2FkKTogQ29tcHV0aW5nIHJlc291cmNlIG9y
aWdpbiBmcm9tIHRoZSByZXF1ZXN0IG9yIHRoZSBkb2N1bWVudCBsb2FkZXIgaXRzZWxmLgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OnNldENyb3NzT3JpZ2luKTogU2V0IHJlc3Bv
bnNlIHR5cGUgYXMgb3BhcXVlIG9yIGNvcnMgZGVwZW5kaW5nIG9uIGZldGNoIG1vZGUuCisgICAg
ICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6aXNDcm9zc09yaWdpbik6IFJldHVybnMgdHJ1
ZSBpZiByZXNwb25zZSB0eXBlIGlzIG9wYXF1ZSBvciBjb3JzLgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkUmVzb3VyY2U6OmlzQ2xlYW4pOiBSZXR1cm5zIHRydWUgaWYgcmVzcG9uc2UgdHlwZSBp
cyBub3Qgb3BhcXVlIGFuZCBsb2FkaW5nIGlzIG9rLgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVk
UmVzb3VyY2U6OnNldFJlc291cmNlVG9SZXZhbGlkYXRlKToKKyAgICAgICAgKiBsb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpj
b3JzTW9kZUFjdGl2YXRlZCk6IFJldHVybnMgdHJ1ZSBpZiBmZXRjaCBtb2RlIGlzIGVxdWFsIHRv
IENvcnMuCisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6c2V0T3BhcXVlUmVkaXJl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6Om9yaWdpbik6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdEJhc2U6Omhhc0hUVFBPcmlnaW4pOiBBZGRlZCB0byBkZXRl
Y3Qgd2hldGhlciBjb2RlIGNhbGxpbmcgbG9hZGVycyBzZXQgdGhlIG9yaWdpbiBvZiB0aGUgcmVx
dWVzdC4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdEJhc2U6OmNsZWFySFRUUE9y
aWdpbik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmg6
CisKIDIwMTYtMDYtMjMgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgogCiAgICAgICAgIFtTb3VwXSBDbGVhbiB1cCBTb2NrZXRTdHJlYW1IYW5kbGUgc291cCBpbXBs
ZW1lbnRhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwCmluZGV4IDhmNmEzMGFk
YTAyM2M1MDFkZTU5NjE3NWU0N2U2ODY1M2YzODYyNWEuLmYwMmVhM2QxYzVkNmQ1ZjMxYjNkZmU3
OTkwZGRjYzMwZjA3MmQ4MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHls
ZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAKQEAg
LTc4LDE5ICs3OCwxOSBAQCBzdGF0aWMgYm9vbCBpc0FjY2VwdGFibGVDU1NTdHlsZVNoZWV0UGFy
ZW50KE5vZGUqIHBhcmVudE5vZGUpCiAjZW5kaWYKIAogUmVmPENTU1N0eWxlU2hlZXQ+IENTU1N0
eWxlU2hlZXQ6OmNyZWF0ZShSZWY8U3R5bGVTaGVldENvbnRlbnRzPiYmIHNoZWV0LCBDU1NJbXBv
cnRSdWxlKiBvd25lclJ1bGUpCi17IAorewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENTU1N0
eWxlU2hlZXQoV1RGTW92ZShzaGVldCksIG93bmVyUnVsZSkpOwogfQogCi1SZWY8Q1NTU3R5bGVT
aGVldD4gQ1NTU3R5bGVTaGVldDo6Y3JlYXRlKFJlZjxTdHlsZVNoZWV0Q29udGVudHM+JiYgc2hl
ZXQsIE5vZGUqIG93bmVyTm9kZSkKLXsgCi0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTU3R5
bGVTaGVldChXVEZNb3ZlKHNoZWV0KSwgb3duZXJOb2RlLCBUZXh0UG9zaXRpb246Om1pbmltdW1Q
b3NpdGlvbigpLCBmYWxzZSkpOworUmVmPENTU1N0eWxlU2hlZXQ+IENTU1N0eWxlU2hlZXQ6OmNy
ZWF0ZShSZWY8U3R5bGVTaGVldENvbnRlbnRzPiYmIHNoZWV0LCBOb2RlKiBvd25lck5vZGUsIE9y
aWdpbkNsZWFuRmxhZyBpc0NsZWFuT3JpZ2luKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IENTU1N0eWxlU2hlZXQoV1RGTW92ZShzaGVldCksIG93bmVyTm9kZSwgVGV4dFBvc2l0aW9uOjpt
aW5pbXVtUG9zaXRpb24oKSwgZmFsc2UsIGlzQ2xlYW5PcmlnaW4pKTsKIH0KIAogUmVmPENTU1N0
eWxlU2hlZXQ+IENTU1N0eWxlU2hlZXQ6OmNyZWF0ZUlubGluZShOb2RlJiBvd25lck5vZGUsIGNv
bnN0IFVSTCYgYmFzZVVSTCwgY29uc3QgVGV4dFBvc2l0aW9uJiBzdGFydFBvc2l0aW9uLCBjb25z
dCBTdHJpbmcmIGVuY29kaW5nKQogewogICAgIENTU1BhcnNlckNvbnRleHQgcGFyc2VyQ29udGV4
dChvd25lck5vZGUuZG9jdW1lbnQoKSwgYmFzZVVSTCwgZW5jb2RpbmcpOwotICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IENTU1N0eWxlU2hlZXQoU3R5bGVTaGVldENvbnRlbnRzOjpjcmVhdGUoYmFz
ZVVSTC5zdHJpbmcoKSwgcGFyc2VyQ29udGV4dCksICZvd25lck5vZGUsIHN0YXJ0UG9zaXRpb24s
IHRydWUpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NTdHlsZVNoZWV0KFN0eWxlU2hl
ZXRDb250ZW50czo6Y3JlYXRlKGJhc2VVUkwuc3RyaW5nKCksIHBhcnNlckNvbnRleHQpLCAmb3du
ZXJOb2RlLCBzdGFydFBvc2l0aW9uLCB0cnVlLCBPcmlnaW5DbGVhbkZsYWc6OlRydWUpKTsKIH0K
IAogQ1NTU3R5bGVTaGVldDo6Q1NTU3R5bGVTaGVldChSZWY8U3R5bGVTaGVldENvbnRlbnRzPiYm
IGNvbnRlbnRzLCBDU1NJbXBvcnRSdWxlKiBvd25lclJ1bGUpCkBAIC0xMDUsMTEgKzEwNSwxMiBA
QCBDU1NTdHlsZVNoZWV0OjpDU1NTdHlsZVNoZWV0KFJlZjxTdHlsZVNoZWV0Q29udGVudHM+JiYg
Y29udGVudHMsIENTU0ltcG9ydFJ1bGUqCiAgICAgbV9jb250ZW50cy0+cmVnaXN0ZXJDbGllbnQo
dGhpcyk7CiB9CiAKLUNTU1N0eWxlU2hlZXQ6OkNTU1N0eWxlU2hlZXQoUmVmPFN0eWxlU2hlZXRD
b250ZW50cz4mJiBjb250ZW50cywgTm9kZSogb3duZXJOb2RlLCBjb25zdCBUZXh0UG9zaXRpb24m
IHN0YXJ0UG9zaXRpb24sIGJvb2wgaXNJbmxpbmVTdHlsZXNoZWV0KQorQ1NTU3R5bGVTaGVldDo6
Q1NTU3R5bGVTaGVldChSZWY8U3R5bGVTaGVldENvbnRlbnRzPiYmIGNvbnRlbnRzLCBOb2RlKiBv
d25lck5vZGUsIGNvbnN0IFRleHRQb3NpdGlvbiYgc3RhcnRQb3NpdGlvbiwgYm9vbCBpc0lubGlu
ZVN0eWxlc2hlZXQsIE9yaWdpbkNsZWFuRmxhZyBmbGFnKQogICAgIDogbV9jb250ZW50cyhXVEZN
b3ZlKGNvbnRlbnRzKSkKICAgICAsIG1faXNJbmxpbmVTdHlsZXNoZWV0KGlzSW5saW5lU3R5bGVz
aGVldCkKICAgICAsIG1faXNEaXNhYmxlZChmYWxzZSkKICAgICAsIG1fbXV0YXRlZFJ1bGVzKGZh
bHNlKQorICAgICwgbV9pc09yaWdpbkNsZWFuKGZsYWcpCiAgICAgLCBtX293bmVyTm9kZShvd25l
ck5vZGUpCiAgICAgLCBtX293bmVyUnVsZSgwKQogICAgICwgbV9zdGFydFBvc2l0aW9uKHN0YXJ0
UG9zaXRpb24pCkBAIC0yNTgsMTcgKzI1OSwxNiBAQCBDU1NSdWxlKiBDU1NTdHlsZVNoZWV0Ojpp
dGVtKHVuc2lnbmVkIGluZGV4KQogCiBib29sIENTU1N0eWxlU2hlZXQ6OmNhbkFjY2Vzc1J1bGVz
KCkgY29uc3QKIHsKLSAgICBpZiAobV9pc0lubGluZVN0eWxlc2hlZXQpCi0gICAgICAgIHJldHVy
biB0cnVlOworICAgIGlmIChtX2lzT3JpZ2luQ2xlYW4gIT0gT3JpZ2luQ2xlYW5GbGFnOjpVbmRl
ZmluZWQpCisgICAgICAgIHJldHVybiBtX2lzT3JpZ2luQ2xlYW4gPT0gT3JpZ2luQ2xlYW5GbGFn
OjpUcnVlOworCiAgICAgVVJMIGJhc2VVUkwgPSBtX2NvbnRlbnRzLT5iYXNlVVJMKCk7CiAgICAg
aWYgKGJhc2VVUkwuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBEb2N1bWVu
dCogZG9jdW1lbnQgPSBvd25lckRvY3VtZW50KCk7CiAgICAgaWYgKCFkb2N1bWVudCkKICAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLT5jYW5S
ZXF1ZXN0KGJhc2VVUkwpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICByZXR1cm4gZmFsc2U7
CisgICAgcmV0dXJuIGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLT5jYW5SZXF1ZXN0KGJhc2VV
UkwpOwogfQogCiBSZWZQdHI8Q1NTUnVsZUxpc3Q+IENTU1N0eWxlU2hlZXQ6OnJ1bGVzKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTU3R5bGVTaGVldC5oCmluZGV4IGMwZTY3ZTFmNWI1OWQ0YjUzN2E4YmY1M2Fk
ZjAwODgzODc4OTkzZmIuLjNkNDYxMDAxYWM2MTdmNDNkMDRlOTRkZDhiYzFiYTQ4NjY4MjRkNDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuaApAQCAtNDksOCArNDksMTQgQEAgdHlwZWRl
ZiBpbnQgRXhjZXB0aW9uQ29kZTsKIAogY2xhc3MgQ1NTU3R5bGVTaGVldCBmaW5hbCA6IHB1Ymxp
YyBTdHlsZVNoZWV0IHsKIHB1YmxpYzoKKyAgICBlbnVtIGNsYXNzIE9yaWdpbkNsZWFuRmxhZyB7
CisgICAgICAgIFRydWUsCisgICAgICAgIEZhbHNlLAorICAgICAgICBVbmRlZmluZWQKKyAgICB9
OworCiAgICAgc3RhdGljIFJlZjxDU1NTdHlsZVNoZWV0PiBjcmVhdGUoUmVmPFN0eWxlU2hlZXRD
b250ZW50cz4mJiwgQ1NTSW1wb3J0UnVsZSogb3duZXJSdWxlID0gMCk7Ci0gICAgc3RhdGljIFJl
ZjxDU1NTdHlsZVNoZWV0PiBjcmVhdGUoUmVmPFN0eWxlU2hlZXRDb250ZW50cz4mJiwgTm9kZSog
b3duZXJOb2RlKTsKKyAgICBzdGF0aWMgUmVmPENTU1N0eWxlU2hlZXQ+IGNyZWF0ZShSZWY8U3R5
bGVTaGVldENvbnRlbnRzPiYmLCBOb2RlKiBvd25lck5vZGUsIE9yaWdpbkNsZWFuRmxhZyA9IE9y
aWdpbkNsZWFuRmxhZzo6VW5kZWZpbmVkKTsKICAgICBzdGF0aWMgUmVmPENTU1N0eWxlU2hlZXQ+
IGNyZWF0ZUlubGluZShOb2RlJiwgY29uc3QgVVJMJiwgY29uc3QgVGV4dFBvc2l0aW9uJiBzdGFy
dFBvc2l0aW9uID0gVGV4dFBvc2l0aW9uOjptaW5pbXVtUG9zaXRpb24oKSwgY29uc3QgU3RyaW5n
JiBlbmNvZGluZyA9IFN0cmluZygpKTsKIAogICAgIHZpcnR1YWwgfkNTU1N0eWxlU2hlZXQoKTsK
QEAgLTEyNCwxNyArMTMwLDE4IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBDU1NTdHlsZVNo
ZWV0KFJlZjxTdHlsZVNoZWV0Q29udGVudHM+JiYsIENTU0ltcG9ydFJ1bGUqIG93bmVyUnVsZSk7
Ci0gICAgQ1NTU3R5bGVTaGVldChSZWY8U3R5bGVTaGVldENvbnRlbnRzPiYmLCBOb2RlKiBvd25l
ck5vZGUsIGNvbnN0IFRleHRQb3NpdGlvbiYgc3RhcnRQb3NpdGlvbiwgYm9vbCBpc0lubGluZVN0
eWxlc2hlZXQpOworICAgIENTU1N0eWxlU2hlZXQoUmVmPFN0eWxlU2hlZXRDb250ZW50cz4mJiwg
Tm9kZSogb3duZXJOb2RlLCBjb25zdCBUZXh0UG9zaXRpb24mIHN0YXJ0UG9zaXRpb24sIGJvb2wg
aXNJbmxpbmVTdHlsZXNoZWV0LCBPcmlnaW5DbGVhbkZsYWcpOwogCiAgICAgYm9vbCBpc0NTU1N0
eWxlU2hlZXQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgU3RyaW5nIHR5
cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBBU0NJSUxpdGVyYWwoInRleHQvY3NzIik7IH0K
IAogICAgIGJvb2wgY2FuQWNjZXNzUnVsZXMoKSBjb25zdDsKLSAgICAKKwogICAgIFJlZjxTdHls
ZVNoZWV0Q29udGVudHM+IG1fY29udGVudHM7CiAgICAgYm9vbCBtX2lzSW5saW5lU3R5bGVzaGVl
dDsKICAgICBib29sIG1faXNEaXNhYmxlZDsKICAgICBib29sIG1fbXV0YXRlZFJ1bGVzOworICAg
IE9yaWdpbkNsZWFuRmxhZyBtX2lzT3JpZ2luQ2xlYW4geyBPcmlnaW5DbGVhbkZsYWc6OlVuZGVm
aW5lZCB9OwogICAgIFN0cmluZyBtX3RpdGxlOwogICAgIFJlZlB0cjxNZWRpYVF1ZXJ5U2V0PiBt
X21lZGlhUXVlcmllczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3Np
bmdJbnN0cnVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0
aW9uLmNwcAppbmRleCAyODAzMzE1OWZhY2FmY2NkM2ZiOThmNWI5ZjllNGUyYTMxMDUxODNhLi5k
MTIzODk3NDAxMmYzZjkxMTYxNzMyMDAzYmZjZTY4MjE3NDFkNGUxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcApAQCAtMTkxLDkgKzE5MSw5IEBAIHZv
aWQgUHJvY2Vzc2luZ0luc3RydWN0aW9uOjpzZXRDU1NTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYg
aHJlZiwgY29uc3QgVVJMJiBiYXNlCiAgICAgQ1NTUGFyc2VyQ29udGV4dCBwYXJzZXJDb250ZXh0
KGRvY3VtZW50KCksIGJhc2VVUkwsIGNoYXJzZXQpOwogCiAgICAgYXV0byBjc3NTaGVldCA9IENT
U1N0eWxlU2hlZXQ6OmNyZWF0ZShTdHlsZVNoZWV0Q29udGVudHM6OmNyZWF0ZShocmVmLCBwYXJz
ZXJDb250ZXh0KSwgdGhpcyk7Ci0gICAgY3NzU2hlZXQuZ2V0KCkuc2V0RGlzYWJsZWQobV9hbHRl
cm5hdGUpOwotICAgIGNzc1NoZWV0LmdldCgpLnNldFRpdGxlKG1fdGl0bGUpOwotICAgIGNzc1No
ZWV0LmdldCgpLnNldE1lZGlhUXVlcmllcyhNZWRpYVF1ZXJ5U2V0OjpjcmVhdGUobV9tZWRpYSkp
OworICAgIGNzc1NoZWV0LT5zZXREaXNhYmxlZChtX2FsdGVybmF0ZSk7CisgICAgY3NzU2hlZXQt
PnNldFRpdGxlKG1fdGl0bGUpOworICAgIGNzc1NoZWV0LT5zZXRNZWRpYVF1ZXJpZXMoTWVkaWFR
dWVyeVNldDo6Y3JlYXRlKG1fbWVkaWEpKTsKIAogICAgIG1fc2hlZXQgPSBXVEZNb3ZlKGNzc1No
ZWV0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCmluZGV4IDU1MWNl
NzZmY2RjZTU1ZDU4ZTc4Mzc3YTVmNmRlYjcwY2UyMmI0MDUuLjU4M2I1Y2FjM2NlOTZlMGIzZmIy
Mzk1NDAyY2FiZTg2ZjJlZDA4YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TExpbmtFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVu
dC5jcHAKQEAgLTMzMiw2ICszMzIsMTggQEAgdm9pZCBIVE1MTGlua0VsZW1lbnQ6OmZpbmlzaFBh
cnNpbmdDaGlsZHJlbigpCiAgICAgSFRNTEVsZW1lbnQ6OmZpbmlzaFBhcnNpbmdDaGlsZHJlbigp
OwogfQogCit2b2lkIEhUTUxMaW5rRWxlbWVudDo6aW5pdGlhbGl6ZVN0eWxlU2hlZXQoUmVmPFN0
eWxlU2hlZXRDb250ZW50cz4mJiBzdHlsZVNoZWV0LCBjb25zdCBDYWNoZWRDU1NTdHlsZVNoZWV0
JiBjYWNoZWRTdHlsZVNoZWV0KQoreworICAgIC8vIEZJWE1FOiBvcmlnaW5DbGVhbiBzaG91bGQg
b25seSBiZSBzZXQgdG8gdHJ1ZSBpZiBmZXRjaCBtb2RlIGlzIGNvcnMuIE90aGVyd2lzZSBpdCBz
aG91bGQgYmUgc2V0IHRvIGZhbHNlLgorICAgIENTU1N0eWxlU2hlZXQ6Ok9yaWdpbkNsZWFuRmxh
ZyBvcmlnaW5DbGVhbiA9IENTU1N0eWxlU2hlZXQ6Ok9yaWdpbkNsZWFuRmxhZzo6VW5kZWZpbmVk
OworICAgIGlmIChjYWNoZWRTdHlsZVNoZWV0LmNvcnNNb2RlQWN0aXZhdGVkKCkpCisgICAgICAg
IG9yaWdpbkNsZWFuID0gY2FjaGVkU3R5bGVTaGVldC5pc0NsZWFuKCkgPyBDU1NTdHlsZVNoZWV0
OjpPcmlnaW5DbGVhbkZsYWc6OlRydWUgOiBDU1NTdHlsZVNoZWV0OjpPcmlnaW5DbGVhbkZsYWc6
OkZhbHNlOworCisgICAgbV9zaGVldCA9IENTU1N0eWxlU2hlZXQ6OmNyZWF0ZShXVEZNb3ZlKHN0
eWxlU2hlZXQpLCB0aGlzLCBvcmlnaW5DbGVhbik7CisgICAgbV9zaGVldC0+c2V0TWVkaWFRdWVy
aWVzKE1lZGlhUXVlcnlTZXQ6OmNyZWF0ZUFsbG93aW5nRGVzY3JpcHRpb25TeW50YXgobV9tZWRp
YSkpOworICAgIG1fc2hlZXQtPnNldFRpdGxlKHRpdGxlKCkpOworfQorCiB2b2lkIEhUTUxMaW5r
RWxlbWVudDo6c2V0Q1NTU3R5bGVTaGVldChjb25zdCBTdHJpbmcmIGhyZWYsIGNvbnN0IFVSTCYg
YmFzZVVSTCwgY29uc3QgU3RyaW5nJiBjaGFyc2V0LCBjb25zdCBDYWNoZWRDU1NTdHlsZVNoZWV0
KiBjYWNoZWRTdHlsZVNoZWV0KQogewogICAgIGlmICghaW5Eb2N1bWVudCgpKSB7CkBAIC0zNTEs
MTAgKzM2Myw3IEBAIHZvaWQgSFRNTExpbmtFbGVtZW50OjpzZXRDU1NTdHlsZVNoZWV0KGNvbnN0
IFN0cmluZyYgaHJlZiwgY29uc3QgVVJMJiBiYXNlVVJMLCBjCiAgICAgaWYgKFJlZlB0cjxTdHls
ZVNoZWV0Q29udGVudHM+IHJlc3RvcmVkU2hlZXQgPSBjb25zdF9jYXN0PENhY2hlZENTU1N0eWxl
U2hlZXQqPihjYWNoZWRTdHlsZVNoZWV0KS0+cmVzdG9yZVBhcnNlZFN0eWxlU2hlZXQocGFyc2Vy
Q29udGV4dCwgY2FjaGVQb2xpY3kpKSB7CiAgICAgICAgIEFTU0VSVChyZXN0b3JlZFNoZWV0LT5p
c0NhY2hlYWJsZSgpKTsKICAgICAgICAgQVNTRVJUKCFyZXN0b3JlZFNoZWV0LT5pc0xvYWRpbmco
KSk7Ci0KLSAgICAgICAgbV9zaGVldCA9IENTU1N0eWxlU2hlZXQ6OmNyZWF0ZShyZXN0b3JlZFNo
ZWV0LnJlbGVhc2VOb25OdWxsKCksIHRoaXMpOwotICAgICAgICBtX3NoZWV0LT5zZXRNZWRpYVF1
ZXJpZXMoTWVkaWFRdWVyeVNldDo6Y3JlYXRlQWxsb3dpbmdEZXNjcmlwdGlvblN5bnRheChtX21l
ZGlhKSk7Ci0gICAgICAgIG1fc2hlZXQtPnNldFRpdGxlKHRpdGxlKCkpOworICAgICAgICBpbml0
aWFsaXplU3R5bGVTaGVldChyZXN0b3JlZFNoZWV0LnJlbGVhc2VOb25OdWxsKCksICpjYWNoZWRT
dHlsZVNoZWV0KTsKIAogICAgICAgICBtX2xvYWRpbmcgPSBmYWxzZTsKICAgICAgICAgc2hlZXRM
b2FkZWQoKTsKQEAgLTM2Myw5ICszNzIsNyBAQCB2b2lkIEhUTUxMaW5rRWxlbWVudDo6c2V0Q1NT
U3R5bGVTaGVldChjb25zdCBTdHJpbmcmIGhyZWYsIGNvbnN0IFVSTCYgYmFzZVVSTCwgYwogICAg
IH0KIAogICAgIGF1dG8gc3R5bGVTaGVldCA9IFN0eWxlU2hlZXRDb250ZW50czo6Y3JlYXRlKGhy
ZWYsIHBhcnNlckNvbnRleHQpOwotICAgIG1fc2hlZXQgPSBDU1NTdHlsZVNoZWV0OjpjcmVhdGUo
c3R5bGVTaGVldC5jb3B5UmVmKCksIHRoaXMpOwotICAgIG1fc2hlZXQtPnNldE1lZGlhUXVlcmll
cyhNZWRpYVF1ZXJ5U2V0OjpjcmVhdGVBbGxvd2luZ0Rlc2NyaXB0aW9uU3ludGF4KG1fbWVkaWEp
KTsKLSAgICBtX3NoZWV0LT5zZXRUaXRsZSh0aXRsZSgpKTsKKyAgICBpbml0aWFsaXplU3R5bGVT
aGVldChzdHlsZVNoZWV0LmNvcHlSZWYoKSwgKmNhY2hlZFN0eWxlU2hlZXQpOwogCiAgICAgc3R5
bGVTaGVldC5nZXQoKS5wYXJzZUF1dGhvclN0eWxlU2hlZXQoY2FjaGVkU3R5bGVTaGVldCwgZG9j
dW1lbnQoKS5zZWN1cml0eU9yaWdpbigpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTGlua0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVt
ZW50LmgKaW5kZXggMWIxYjFjZWM4ZGU0N2UxNmFkNGRjOWM5NTM5NDkwMjIyZDJjODQyZi4uMjI5
Y2Y5NjgxMmRhZDdlOWY1YWQ2MDZjNGJiOTliNzdjNjc0YzQzZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxMaW5rRWxlbWVudC5oCkBAIC04Niw2ICs4Niw4IEBAIHByaXZhdGU6CiAgICAgSW5zZXJ0
aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBpbnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSYpIG92ZXJy
aWRlOwogICAgIHZvaWQgcmVtb3ZlZEZyb20oQ29udGFpbmVyTm9kZSYpIG92ZXJyaWRlOwogCisg
ICAgdm9pZCBpbml0aWFsaXplU3R5bGVTaGVldChSZWY8U3R5bGVTaGVldENvbnRlbnRzPiYmLCBj
b25zdCBDYWNoZWRDU1NTdHlsZVNoZWV0Jik7CisKICAgICAvLyBmcm9tIENhY2hlZFJlc291cmNl
Q2xpZW50CiAgICAgdm9pZCBzZXRDU1NTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgaHJlZiwgY29u
c3QgVVJMJiBiYXNlVVJMLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQsIGNvbnN0IENhY2hlZENTU1N0
eWxlU2hlZXQqIHNoZWV0KSBvdmVycmlkZTsKICAgICBib29sIHNoZWV0TG9hZGVkKCkgb3ZlcnJp
ZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAppbmRleCAz
ODZlYzA3M2I3ZGRjZjdjMTZiY2Q1YzRlYmM0NDA0ZDM0MGY0NjgyLi5hNjg2MTA1NGJjMjAwNWFj
YTg3NTc1NGUxNzBjZTgzODhhNjAzNDU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJy
ZXNvdXJjZUxvYWRlci5jcHAKQEAgLTYsMTMgKzYsMTMgQEAKICAqIGFyZSBtZXQ6CiAgKgogICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCiAgKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKICAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCisgKiAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
ICAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUg
bmFtZXMgb2YKICAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAKKyAqICAgICBmcm9tIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCiAg
KgogICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJV
VE9SUyAiQVMgSVMiIEFORCBBTlkKICAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKQEAgLTE1MSw4ICsxNTEs
MTEgQEAgYm9vbCBTdWJyZXNvdXJjZUxvYWRlcjo6aW5pdChjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QpCiAgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNTU2MzMuCiAgICAgLy8gU3VicmVzb3VyY2VMb2FkZXIgY291bGQgdXNlIHRoZSBk
b2N1bWVudCBvcmlnaW4gYXMgYSBkZWZhdWx0IGFuZCBzZXQgUG90ZW50aWFsbHlDcm9zc09yaWdp
bkVuYWJsZWQgcmVxdWVzdHMgYWNjb3JkaW5nbHkuCiAgICAgLy8gVGhpcyB3b3VsZCBzaW1wbGlm
eSByZXNvdXJjZSBsb2FkZXIgdXNlcnMgYXMgdGhleSB3b3VsZCBvbmx5IG5lZWQgdG8gc2V0IHRo
ZSBwb2xpY3kgdG8gUG90ZW50aWFsbHlDcm9zc09yaWdpbkVuYWJsZWQuCi0gICAgaWYgKG9wdGlv
bnMoKS5yZXF1ZXN0T3JpZ2luUG9saWN5KCkgPT0gUG90ZW50aWFsbHlDcm9zc09yaWdpbkVuYWJs
ZWQpCi0gICAgICAgIG1fb3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmco
cmVxdWVzdC5odHRwT3JpZ2luKCkpOworCisgICAgbV9vcmlnaW4gPSBtX3Jlc291cmNlLT5vcmln
aW4oKTsKKyAgICAvLyBodHRwczovL2ZldGNoLnNwZWMud2hhdHdnLm9yZy8jbWFpbi1mZXRjaCwg
c3RlcCAxMSwgZGF0YSBVUkwgaGVyZSBpcyBjb25zaWRlcmVkIG5vdCBjcm9zcyBvcmlnaW4uCisg
ICAgaWYgKCFyZXF1ZXN0LnVybCgpLnByb3RvY29sSXNEYXRhKCkgJiYgbV9vcmlnaW4gJiYgIW1f
b3JpZ2luLT5jYW5SZXF1ZXN0KHJlcXVlc3QudXJsKCkpKQorICAgICAgICBtX3Jlc291cmNlLT5z
ZXRDcm9zc09yaWdpbigpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0yMDIsNyArMjA1LDcg
QEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0SW50ZXJuYWwoUmVzb3Vy
Y2VSZXF1ZXN0JiBuZXdSZXF1ZXN0LCBjb24KICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogCi0gICAgICAgIGlmIChvcHRpb25zKCkucmVxdWVzdE9yaWdpblBvbGljeSgpID09IFBvdGVu
dGlhbGx5Q3Jvc3NPcmlnaW5FbmFibGVkICYmICFjaGVja0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJv
bChyZXF1ZXN0KCksIHJlZGlyZWN0UmVzcG9uc2UsIG5ld1JlcXVlc3QpKSB7CisgICAgICAgIGlm
ICghY2hlY2tSZWRpcmVjdGlvbkNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbChyZXF1ZXN0KCksIHJl
ZGlyZWN0UmVzcG9uc2UsIG5ld1JlcXVlc3QpKSB7CiAgICAgICAgICAgICBjYW5jZWwoKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMjk1LDggKzI5OCw4IEBAIHZvaWQgU3Vi
cmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSkKICAgICAgICAgLy8gVGhlIHJlc291cmNlIGRhdGEgd2lsbCBjaGFuZ2UgYXMg
dGhlIG5leHQgcGFydCBpcyBsb2FkZWQsIHNvIHdlIG5lZWQgdG8gbWFrZSBhIGNvcHkuCiAgICAg
ICAgIG1fcmVzb3VyY2UtPmZpbmlzaExvYWRpbmcoYnVmZmVyLT5jb3B5KCkucHRyKCkpOwogICAg
ICAgICBjbGVhclJlc291cmNlRGF0YSgpOwotICAgICAgICAvLyBTaW5jZSBhIHN1YnJlc291cmNl
IGxvYWRlciBkb2VzIG5vdCBsb2FkIG11bHRpcGFydCBzZWN0aW9ucyBwcm9ncmVzc2l2ZWx5LCBk
YXRhIHdhcyBkZWxpdmVyZWQgdG8gdGhlIGxvYWRlciBhbGwgYXQgb25jZS4gICAgICAgIAotICAg
ICAgICAvLyBBZnRlciB0aGUgZmlyc3QgbXVsdGlwYXJ0IHNlY3Rpb24gaXMgY29tcGxldGUsIHNp
Z25hbCB0byBkZWxlZ2F0ZXMgdGhhdCB0aGlzIGxvYWQgaXMgImZpbmlzaGVkIiAKKyAgICAgICAg
Ly8gU2luY2UgYSBzdWJyZXNvdXJjZSBsb2FkZXIgZG9lcyBub3QgbG9hZCBtdWx0aXBhcnQgc2Vj
dGlvbnMgcHJvZ3Jlc3NpdmVseSwgZGF0YSB3YXMgZGVsaXZlcmVkIHRvIHRoZSBsb2FkZXIgYWxs
IGF0IG9uY2UuCisgICAgICAgIC8vIEFmdGVyIHRoZSBmaXJzdCBtdWx0aXBhcnQgc2VjdGlvbiBp
cyBjb21wbGV0ZSwgc2lnbmFsIHRvIGRlbGVnYXRlcyB0aGF0IHRoaXMgbG9hZCBpcyAiZmluaXNo
ZWQiCiAgICAgICAgIG1fZG9jdW1lbnRMb2FkZXItPnN1YnJlc291cmNlTG9hZGVyRmluaXNoZWRM
b2FkaW5nT25lUGFydCh0aGlzKTsKICAgICAgICAgZGlkRmluaXNoTG9hZGluZ09uZVBhcnQoMCk7
CiAgICAgfQpAQCAtMzk2LDExICszOTksMTkgQEAgc3RhdGljIHZvaWQgbG9nUmVzb3VyY2VMb2Fk
ZWQoRnJhbWUqIGZyYW1lLCBDYWNoZWRSZXNvdXJjZTo6VHlwZSB0eXBlKQogICAgIGZyYW1lLT5w
YWdlKCktPmRpYWdub3N0aWNMb2dnaW5nQ2xpZW50KCkubG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRo
VmFsdWUoRGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpyZXNvdXJjZUtleSgpLCBEaWFnbm9zdGljTG9n
Z2luZ0tleXM6OmxvYWRlZEtleSgpLCByZXNvdXJjZVR5cGUsIFNob3VsZFNhbXBsZTo6WWVzKTsK
IH0KIAotYm9vbCBTdWJyZXNvdXJjZUxvYWRlcjo6Y2hlY2tDcm9zc09yaWdpbkFjY2Vzc0NvbnRy
b2woY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBwcmV2aW91c1JlcXVlc3QsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIFJlc291cmNlUmVxdWVzdCYgbmV3UmVxdWVzdCkK
K2Jvb2wgU3VicmVzb3VyY2VMb2FkZXI6OmNoZWNrUmVkaXJlY3Rpb25Dcm9zc09yaWdpbkFjY2Vz
c0NvbnRyb2woY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBwcmV2aW91c1JlcXVlc3QsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIFJlc291cmNlUmVxdWVzdCYgbmV3UmVx
dWVzdCkKIHsKLSAgICBpZiAobV9vcmlnaW4tPmNhblJlcXVlc3QobmV3UmVxdWVzdC51cmwoKSkp
CisgICAgQVNTRVJUKG9wdGlvbnMoKS5yZXF1ZXN0T3JpZ2luUG9saWN5KCkgIT0gUmVzdHJpY3RU
b1NhbWVPcmlnaW4pOworCisgICAgYm9vbCBzaG91bGRDaGVja0Nyb3NzT3JpZ2luID0gb3B0aW9u
cygpLnJlcXVlc3RPcmlnaW5Qb2xpY3koKSA9PSBQb3RlbnRpYWxseUNyb3NzT3JpZ2luRW5hYmxl
ZCAmJiBtX3Jlc291cmNlLT5pc0Nyb3NzT3JpZ2luKCk7CisKKyAgICBpZiAoIShtX29yaWdpbiAm
JiBtX29yaWdpbi0+Y2FuUmVxdWVzdChuZXdSZXF1ZXN0LnVybCgpKSkpCisgICAgICAgIG1fcmVz
b3VyY2UtPnNldENyb3NzT3JpZ2luKCk7CisKKyAgICBpZiAoIXNob3VsZENoZWNrQ3Jvc3NPcmln
aW4pCiAgICAgICAgIHJldHVybiB0cnVlOwogCisgICAgQVNTRVJUKG1fb3JpZ2luKTsKICAgICBT
dHJpbmcgZXJyb3JEZXNjcmlwdGlvbjsKICAgICBib29sIHJlc3BvbnNlUGFzc2VzQ09SUyA9IG1f
b3JpZ2luLT5jYW5SZXF1ZXN0KHByZXZpb3VzUmVxdWVzdC51cmwoKSkKICAgICAgICAgfHwgcGFz
c2VzQWNjZXNzQ29udHJvbENoZWNrKHJlZGlyZWN0UmVzcG9uc2UsIG9wdGlvbnMoKS5hbGxvd0Ny
ZWRlbnRpYWxzKCksIG1fb3JpZ2luLmdldCgpLCBlcnJvckRlc2NyaXB0aW9uKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgKaW5kZXggNWVjNzMxMWQwOWNmMWQzMGRj
MjU1MDQ1Y2Y0YjliNTgwY2U5ZmRlOC4uMzFjNGIzZWEwNTY2ODY0MDBhYjVjMjBkOTE0MTJlOWIy
NWZjOTlkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9h
ZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgKQEAg
LTYsMTMgKzYsMTMgQEAKICAqIGFyZSBtZXQ6CiAgKgogICogMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LiAKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCiAgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKICAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4gCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KICAqIDMuICBOZWl0aGVyIHRoZSBu
YW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKICAqICAgICBpdHMg
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLiAKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCiAgKgogICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkK
ICAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKQEAgLTkxLDcgKzkxLDcgQEAgcHJpdmF0ZToKICNlbmRpZgog
CiAgICAgYm9vbCBjaGVja0ZvckhUVFBTdGF0dXNDb2RlRXJyb3IoKTsKLSAgICBib29sIGNoZWNr
Q3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmLCBSZXNvdXJjZVJlcXVlc3QmIG5ld1JlcXVlc3QpOworICAgIGJvb2wg
Y2hlY2tSZWRpcmVjdGlvbkNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbChjb25zdCBSZXNvdXJjZVJl
cXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VSZXF1ZXN0JiBuZXdSZXF1
ZXN0KTsKIAogICAgIHZvaWQgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCBjaGFyKiwgaW50
LCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERh
dGFQYXlsb2FkVHlwZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
UmVzb3VyY2UuY3BwCmluZGV4IDIxZWE4MTQyMTk0OTU4OTYwYjQ3YWU3OGU1ZmIzMWE5ZTIyMWMz
YzYuLmI1YzI1M2FkMThlNGYyZGUyM2VlM2I2ZmQ1NzJlNDhlMWI4YjBhNjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcApAQCAtMjc1LDggKzI3
NSwxNCBAQCB2b2lkIENhY2hlZFJlc291cmNlOjpsb2FkKENhY2hlZFJlc291cmNlTG9hZGVyJiBj
YWNoZWRSZXNvdXJjZUxvYWRlciwgY29uc3QgUmVzbwogI2VuZGlmCiAgICAgbV9yZXNvdXJjZVJl
cXVlc3Quc2V0UHJpb3JpdHkobG9hZFByaW9yaXR5KCkpOwogCi0gICAgaWYgKHR5cGUoKSAhPSBN
YWluUmVzb3VyY2UpCisgICAgaWYgKHR5cGUoKSAhPSBNYWluUmVzb3VyY2UpIHsKKyAgICAgICAg
aWYgKG1fcmVzb3VyY2VSZXF1ZXN0Lmhhc0hUVFBPcmlnaW4oKSB8fCBtX29wdGlvbnMucmVxdWVz
dE9yaWdpblBvbGljeSgpID09IFBvdGVudGlhbGx5Q3Jvc3NPcmlnaW5FbmFibGVkKQorICAgICAg
ICAgICAgbV9vcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhtX3Jlc291
cmNlUmVxdWVzdC5odHRwT3JpZ2luKCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX29y
aWdpbiA9IGNhY2hlZFJlc291cmNlTG9hZGVyLmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCk7
CisgICAgICAgIEFTU0VSVChtX29yaWdpbik7CiAgICAgICAgIGFkZEFkZGl0aW9uYWxSZXF1ZXN0
SGVhZGVycyhjYWNoZWRSZXNvdXJjZUxvYWRlcik7CisgICAgfQogCiAgICAgLy8gRklYTUU6IEl0
J3MgdW5mb3J0dW5hdGUgdGhhdCB0aGUgY2FjaGUgbGF5ZXIgYW5kIGJlbG93IGdldCB0byBrbm93
IGFueXRoaW5nIGFib3V0IGZyYWdtZW50IGlkZW50aWZpZXJzLgogICAgIC8vIFdlIHNob3VsZCBs
b29rIGludG8gcmVtb3ZpbmcgdGhlIGV4cGVjdGF0aW9uIG9mIHRoYXQga25vd2xlZGdlIGZyb20g
dGhlIHBsYXRmb3JtIG5ldHdvcmsgc3RhY2tzLgpAQCAtMzYyLDYgKzM2OCwyNSBAQCBib29sIENh
Y2hlZFJlc291cmNlOjpwYXNzZXNTYW1lT3JpZ2luUG9saWN5Q2hlY2soU2VjdXJpdHlPcmlnaW4m
IHNlY3VyaXR5T3JpZ2luKQogICAgIHJldHVybiBwYXNzZXNBY2Nlc3NDb250cm9sQ2hlY2soc2Vj
dXJpdHlPcmlnaW4pOwogfQogCit2b2lkIENhY2hlZFJlc291cmNlOjpzZXRDcm9zc09yaWdpbigp
Cit7CisgICAgQVNTRVJUKG1fb3B0aW9ucy5yZXF1ZXN0T3JpZ2luUG9saWN5KCkgIT0gUmVzdHJp
Y3RUb1NhbWVPcmlnaW4pOworICAgIG1fcmVzcG9uc2VUeXBlID0gKG1fb3B0aW9ucy5yZXF1ZXN0
T3JpZ2luUG9saWN5KCkgPT0gUG90ZW50aWFsbHlDcm9zc09yaWdpbkVuYWJsZWQpID8gUmVzb3Vy
Y2VSZXNwb25zZUJhc2U6OlR5cGU6OkNvcnMgOiBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6VHlwZTo6
T3BhcXVlOworfQorCitib29sIENhY2hlZFJlc291cmNlOjppc0Nyb3NzT3JpZ2luKCkgY29uc3QK
K3sKKyAgICBBU1NFUlQobV9vcHRpb25zLnJlcXVlc3RPcmlnaW5Qb2xpY3koKSAhPSBSZXN0cmlj
dFRvU2FtZU9yaWdpbik7CisgICAgcmV0dXJuIG1fcmVzcG9uc2VUeXBlID09IFJlc291cmNlUmVz
cG9uc2VCYXNlOjpUeXBlOjpDb3JzIHx8IG1fcmVzcG9uc2VUeXBlID09IFJlc291cmNlUmVzcG9u
c2VCYXNlOjpUeXBlOjpPcGFxdWU7Cit9CisKK2Jvb2wgQ2FjaGVkUmVzb3VyY2U6OmlzQ2xlYW4o
KSBjb25zdAoreworICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdl
L2luZnJhc3RydWN0dXJlLmh0bWwjY29ycy1zYW1lLW9yaWdpbgorICAgIEFTU0VSVChtX3Jlc3Bv
bnNlVHlwZSAhPSBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6VHlwZTo6T3BhcXVlcmVkaXJlY3QgJiYg
bV9yZXNwb25zZVR5cGUgIT0gUmVzb3VyY2VSZXNwb25zZUJhc2U6OlR5cGU6OkVycm9yKTsKKyAg
ICByZXR1cm4gIWxvYWRGYWlsZWRPckNhbmNlbGVkKCkgJiYgbV9yZXNwb25zZVR5cGUgIT0gUmVz
b3VyY2VSZXNwb25zZUJhc2U6OlR5cGU6Ok9wYXF1ZTsKK30KKwogYm9vbCBDYWNoZWRSZXNvdXJj
ZTo6aXNFeHBpcmVkKCkgY29uc3QKIHsKICAgICBpZiAobV9yZXNwb25zZS5pc051bGwoKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKaW5kZXggZDQwZTk1
ODA0ODFlODA3YWNiMzUxNzQxNTg2NjRhYTYyNjg5OTQ2NS4uMTUzYTA0MjAyODM3MzMxYzQ3YmQ5
ZmM4ZjI3ZDAwODY1NzlmOWIyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJlc291cmNlLmgKQEAgLTIwMCwxMSArMjAwLDE3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgdmly
dHVhbCBib29sIHNob3VsZENhY2hlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIHsg
cmV0dXJuIHRydWU7IH0KICAgICB2b2lkIHNldFJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmKTsKLSAgICB2b2lkIHNldE9wYXF1ZVJlZGlyZWN0KCkgeyBtX3Jlc3BvbnNlVHlwZSA9IFJl
c291cmNlUmVzcG9uc2VCYXNlOjpUeXBlOjpPcGFxdWVyZWRpcmVjdDsgfQogICAgIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZTsgfQog
ICAgIC8vIFRoaXMgaXMgdGhlIHNhbWUgYXMgcmVzcG9uc2UoKSBleGNlcHQgYWZ0ZXIgSFRUUCBy
ZWRpcmVjdCB0byBkYXRhOiBVUkwuCiAgICAgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2VGb3JTYW1lT3JpZ2luUG9saWN5Q2hlY2tzKCkgY29uc3Q7CiAKKyAgICB2b2lkIHNldE9wYXF1
ZVJlZGlyZWN0KCkgeyBtX3Jlc3BvbnNlVHlwZSA9IFJlc291cmNlUmVzcG9uc2VCYXNlOjpUeXBl
OjpPcGFxdWVyZWRpcmVjdDsgfQorICAgIHZvaWQgc2V0Q3Jvc3NPcmlnaW4oKTsKKyAgICBib29s
IGlzQ3Jvc3NPcmlnaW4oKSBjb25zdDsKKyAgICBib29sIGlzQ2xlYW4oKSBjb25zdDsKKworICAg
IFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4oKSBjb25zdCB7IHJldHVybiBtX29yaWdpbi5nZXQoKTsg
fQorCiAgICAgYm9vbCBjYW5EZWxldGUoKSBjb25zdCB7IHJldHVybiAhaGFzQ2xpZW50cygpICYm
ICFtX2xvYWRlciAmJiAhbV9wcmVsb2FkQ291bnQgJiYgIW1faGFuZGxlQ291bnQgJiYgIW1fcmVz
b3VyY2VUb1JldmFsaWRhdGUgJiYgIW1fcHJveHlSZXNvdXJjZTsgfQogICAgIGJvb2wgaGFzT25l
SGFuZGxlKCkgY29uc3QgeyByZXR1cm4gbV9oYW5kbGVDb3VudCA9PSAxOyB9CiAKQEAgLTIyMiw5
ICsyMjgsMTAgQEAgcHVibGljOgogCiAgICAgYm9vbCBzaG91bGRTZW5kUmVzb3VyY2VMb2FkQ2Fs
bGJhY2tzKCkgY29uc3QgeyByZXR1cm4gbV9vcHRpb25zLnNlbmRMb2FkQ2FsbGJhY2tzKCkgPT0g
U2VuZENhbGxiYWNrczsgfQogICAgIERhdGFCdWZmZXJpbmdQb2xpY3kgZGF0YUJ1ZmZlcmluZ1Bv
bGljeSgpIGNvbnN0IHsgcmV0dXJuIG1fb3B0aW9ucy5kYXRhQnVmZmVyaW5nUG9saWN5KCk7IH0K
KyAgICBib29sIGNvcnNNb2RlQWN0aXZhdGVkKCkgY29uc3QgeyByZXR1cm4gbV9vcHRpb25zLnJl
cXVlc3RPcmlnaW5Qb2xpY3koKSA9PSBQb3RlbnRpYWxseUNyb3NzT3JpZ2luRW5hYmxlZDsgfQog
CiAgICAgYm9vbCBhbGxvd3NDYWNoaW5nKCkgY29uc3QgeyByZXR1cm4gbV9vcHRpb25zLmNhY2hp
bmdQb2xpY3koKSA9PSBDYWNoaW5nUG9saWN5OjpBbGxvd0NhY2hpbmc7IH0KLSAgICAKKwogICAg
IHZpcnR1YWwgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoKSB7IH0KIAogICAgIHZvaWQgc2V0T3du
aW5nQ2FjaGVkUmVzb3VyY2VMb2FkZXIoQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIGNhY2hlZFJlc291
cmNlTG9hZGVyKSB7IG1fb3duaW5nQ2FjaGVkUmVzb3VyY2VMb2FkZXIgPSBjYWNoZWRSZXNvdXJj
ZUxvYWRlcjsgfQpAQCAtMzEzLDYgKzMyMCw3IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fZnJh
Z21lbnRJZGVudGlmaWVyRm9yUmVxdWVzdDsKIAogICAgIFJlc291cmNlRXJyb3IgbV9lcnJvcjsK
KyAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG1fb3JpZ2luOwogCiAgICAgZG91YmxlIG1fbGFz
dERlY29kZWRBY2Nlc3NUaW1lOyAvLyBVc2VkIGFzIGEgInRocmFzaCBndWFyZCIgaW4gdGhlIGNh
Y2hlCiAgICAgZG91YmxlIG1fbG9hZEZpbmlzaFRpbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcAppbmRleCBhNDhi
ZTRmOTg2MmMzZDUyYmM1ZDY1ZjhlZjU3MmE0MWE0Yjk3Y2JmLi4xNzQ5NjNlMTg4Nzc2NDMzZDNk
Yzk5ZDgwZjQ1ZGI5OWMxMzMzYzFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAKQEAgLTMxMyw5ICszMTMsMTQg
QEAgdm9pZCBSZXNvdXJjZVJlcXVlc3RCYXNlOjpzZXRIVFRQT3JpZ2luKGNvbnN0IFN0cmluZyYg
aHR0cE9yaWdpbikKICAgICBzZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6Ok9yaWdp
biwgaHR0cE9yaWdpbik7CiB9CiAKK2Jvb2wgUmVzb3VyY2VSZXF1ZXN0QmFzZTo6aGFzSFRUUE9y
aWdpbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faHR0cEhlYWRlckZpZWxkcy5jb250YWlucyhI
VFRQSGVhZGVyTmFtZTo6T3JpZ2luKTsKK30KKwogdm9pZCBSZXNvdXJjZVJlcXVlc3RCYXNlOjpj
bGVhckhUVFBPcmlnaW4oKQogewotICAgIHVwZGF0ZVJlc291cmNlUmVxdWVzdCgpOyAKKyAgICB1
cGRhdGVSZXNvdXJjZVJlcXVlc3QoKTsKIAogICAgIG1faHR0cEhlYWRlckZpZWxkcy5yZW1vdmUo
SFRUUEhlYWRlck5hbWU6Ok9yaWdpbik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmgKaW5kZXggNmUwYmJlMDIwYjllODc5
OGRiNzAwZWI0ZDU2M2Y0YTcwODZhOTU5MC4uZDNhYzM5MWVmYTRhNTlmYTZhYjFhOGMxYTMxNjc2
NmYwMmFhODc1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZVJlcXVlc3RCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZVJlcXVlc3RCYXNlLmgKQEAgLTIyLDcgKzIyLDcgQEAKICAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
ICAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CiAgKi8KIAogI2lmbmRlZiBSZXNvdXJjZVJlcXVlc3RCYXNlX2gKQEAgLTEwMCw4ICsxMDAsOSBA
QCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGh0dHBSZWZlcnJlcigpIGNvbnN0
OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0SFRUUFJlZmVycmVyKGNvbnN0IFN0cmluZyYp
OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXJIVFRQUmVmZXJyZXIoKTsKLSAgICAKKwog
ICAgIFN0cmluZyBodHRwT3JpZ2luKCkgY29uc3Q7CisgICAgYm9vbCBoYXNIVFRQT3JpZ2luKCkg
Y29uc3Q7CiAgICAgdm9pZCBzZXRIVFRQT3JpZ2luKGNvbnN0IFN0cmluZyYpOwogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgY2xlYXJIVFRQT3JpZ2luKCk7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBkMTBhYjUzYjJiODU1
NTY5M2NlYTg3ZTQ5YWU4MmUyMTIyYzg5MzBmLi4wYWY2NWZmMWU1YjM4MjhhODliZmYxZDM1OWFj
MjFmYWZmMGE3NTg3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTYtMDYtMjMgIFlvdWVubiBG
YWJsZXQgIDx5b3Vlbm5mQGdtYWlsLmNvbT4KKworICAgICAgICBDbGVhbiBDU1Mgc3R5bGVzaGVl
dHMgc2hvdWxkIGJlIGFjY2Vzc2libGUgZnJvbSBKYXZhU2NyaXB0CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTg3MjgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvY2Fu
bm90LXJlYWQtY3NzcnVsZXMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMvc2Vj
dXJpdHkvY2Fubm90LXJlYWQtY3NzcnVsZXMtcmVkaXJlY3QtZXhwZWN0ZWQudHh0OgorICAgICAg
ICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvY2Fubm90LXJlYWQtY3NzcnVsZXMuaHRtbDogQWRkaW5n
IG1vcmUgdGVzdHMgcmVsYXRlZCB0byBDT1JTLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJp
dHkvY2Fubm90LXJlYWQtY3NzcnVsZXMtcmVkaXJlY3QuaHRtbDogRGl0dG8uCisgICAgICAgICog
aHR0cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1vcmlnaW4tY3NzLTkuaHRtbDogQWN0aXZhdGluZyBK
UyB2aXNpYmlsaXR5IGNoZWNrcy4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3Jlc291
cmNlcy94b3JpZ2luY3NzMS1hbGxvdy1zdGFyLnBocDogQWRkZWQuCisKIDIwMTYtMDYtMjIgIEFs
ZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgVGVzdCBleHBlY3Rh
dGlvbnMgZ2FyZGVuaW5nIGZvciByZGFyOi8vcHJvYmxlbS8yNjk2MDM4NQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jYW5ub3QtcmVhZC1jc3NydWxlcy1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Nhbm5vdC1yZWFkLWNz
c3J1bGVzLWV4cGVjdGVkLnR4dAppbmRleCA3YTc4YmFiYzJhNWQ4NDQ3ZjA0YjU5NGJiMjJkMGUy
YWU0Mjk2NDM1Li5iOTE1MTIyZjczOTY4OThjMWNlZmVhZGY5OGI1NmRiMzY3M2UzMDdkIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Nhbm5vdC1yZWFkLWNzc3J1
bGVzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Nh
bm5vdC1yZWFkLWNzc3J1bGVzLWV4cGVjdGVkLnR4dApAQCAtMSwxMCArMSwyMiBAQAogVGhpcyB0
ZXN0IHdoZXRoZXIgYSBzY3JpcHQgY2FuIHJlYWQgdGhlIHJ1bGVzIGZyb20gYSBjcm9zcy1vcmln
aW4gc3R5bGUgc2hlZXQuIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHdoeSB3ZSBibG9jayB0aGlz
LCBwbGVhc2Ugc2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDUy
Ny4KIAogVGVzdCBiZWdpbnMuCi09PSBDcm9zcy1PcmlnaW4gPT0KKz09IENyb3NzLU9yaWdpbiBy
ZXNvdXJjZSwgbm8tY29ycyBtb2RlID09CiBjc3NSdWxlczogbnVsbAogcnVsZXM6IG51bGwKLT09
IFNhbWUtT3JpZ2luID09Cis9PSBTYW1lLU9yaWdpbiByZXNvdXJjZSwgbm8tY29ycyBtb2RlID09
CiBjc3NSdWxlczogW29iamVjdCBDU1NSdWxlTGlzdF0KK2Nzc1J1bGVzIGxlbmd0aDogMQogcnVs
ZXM6IFtvYmplY3QgQ1NTUnVsZUxpc3RdCitydWxlcyBsZW5ndGg6IDEKKz09IENyb3NzLU9yaWdp
biByZXNvdXJjZSwgY29ycyBtb2RlLCBmYWlsaW5nIGNvcnMgY2hlY2sgPT0KK2Nzc1J1bGVzOiBb
b2JqZWN0IENTU1J1bGVMaXN0XQorY3NzUnVsZXMgbGVuZ3RoOiAxCitydWxlczogW29iamVjdCBD
U1NSdWxlTGlzdF0KK3J1bGVzIGxlbmd0aDogMQorPT0gQ3Jvc3MtT3JpZ2luIHJlc291cmNlLCBj
b3JzIG1vZGUsIHN1Y2Nlc3NmdWwgY29ycyBjaGVjayA9PQorY3NzUnVsZXM6IFtvYmplY3QgQ1NT
UnVsZUxpc3RdCitjc3NSdWxlcyBsZW5ndGg6IDEKK3J1bGVzOiBbb2JqZWN0IENTU1J1bGVMaXN0
XQorcnVsZXMgbGVuZ3RoOiAxCiBUZXN0IGVuZHMuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3NlY3VyaXR5L2Nhbm5vdC1yZWFkLWNzc3J1bGVzLXJlZGlyZWN0LWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY2Fubm90LXJlYWQtY3NzcnVs
ZXMtcmVkaXJlY3QtZXhwZWN0ZWQudHh0CmluZGV4IDA2MjY0NmZkNDJkOWZlYjhkM2NlM2VmZTgw
YTc4NDVkN2U2YTIzOTYuLmIxMWNhZDIxYmM2NDhmMTk4NzRlZGY0ODczYTE3ZThmZDlkNTUxYzYg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY2Fubm90LXJlYWQt
Y3NzcnVsZXMtcmVkaXJlY3QtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvc2VjdXJpdHkvY2Fubm90LXJlYWQtY3NzcnVsZXMtcmVkaXJlY3QtZXhwZWN0ZWQudHh0CkBA
IC0xLDEwICsxLDI2IEBACitDT05TT0xFIE1FU1NBR0U6IENyb3NzLW9yaWdpbiByZWRpcmVjdGlv
biBkZW5pZWQgYnkgQ3Jvc3MtT3JpZ2luIFJlc291cmNlIFNoYXJpbmcgcG9saWN5OiBPcmlnaW4g
aHR0cDovLzEyNy4wLjAuMTo4MDAwIGlzIG5vdCBhbGxvd2VkIGJ5IEFjY2Vzcy1Db250cm9sLUFs
bG93LU9yaWdpbi4KIFRoaXMgdGVzdCB3aGV0aGVyIGEgc2NyaXB0IGNhbiByZWFkIHRoZSBydWxl
cyBmcm9tIGEgY3Jvc3Mtb3JpZ2luIHN0eWxlIHNoZWV0IGluIHRoZSBwcmVzZW5jZSBvZiByZWRp
cmVjdHMuIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHdoeSB3ZSBibG9jayB0aGlzLCBwbGVhc2Ug
c2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDUyNy4KIAogVGVz
dCBiZWdpbnMuCi09PSBTYW1lLU9yaWdpbiB0byBDcm9zcy1PcmlnaW4gPT0KKz09IFNhbWUtT3Jp
Z2luIHRvIENyb3NzLU9yaWdpbiwgbm8tY29ycyBtb2RlID09CiBjc3NSdWxlczogbnVsbAogcnVs
ZXM6IG51bGwKLT09IENyb3NzLU9yaWdpbiB0byBTYW1lLU9yaWdpbiA9PQorPT0gQ3Jvc3MtT3Jp
Z2luIHRvIFNhbWUtT3JpZ2luLCBuby1jb3JzIG1vZGUgPT0KIGNzc1J1bGVzOiBbb2JqZWN0IENT
U1J1bGVMaXN0XQorY3NzUnVsZXMgbGVuZ3RoOiAxCiBydWxlczogW29iamVjdCBDU1NSdWxlTGlz
dF0KK3J1bGVzIGxlbmd0aDogMQorPT0gU2FtZS1PcmlnaW4gdG8gU2FtZS1PcmlnaW4sIGNvcnMg
bW9kZSA9PQorY3NzUnVsZXM6IFtvYmplY3QgQ1NTUnVsZUxpc3RdCitjc3NSdWxlcyBsZW5ndGg6
IDEKK3J1bGVzOiBbb2JqZWN0IENTU1J1bGVMaXN0XQorcnVsZXMgbGVuZ3RoOiAxCis9PSBDcm9z
cy1PcmlnaW4gdG8gU2FtZS1PcmlnaW4sIGNvcnMgbW9kZSwgc3VjY2Vzc2Z1bCBjb3JzIGNoZWNr
ID09Citjc3NSdWxlczogW29iamVjdCBDU1NSdWxlTGlzdF0KK2Nzc1J1bGVzIGxlbmd0aDogMQor
cnVsZXM6IFtvYmplY3QgQ1NTUnVsZUxpc3RdCitydWxlcyBsZW5ndGg6IDEKKz09IENyb3NzLU9y
aWdpbiB0byBTYW1lLU9yaWdpbiwgY29ycyBtb2RlLCBmYWlsaW5nIGNvcnMgY2hlY2sgPT0KK2Nz
c1J1bGVzOiBudWxsCitydWxlczogbnVsbAogVGVzdCBlbmRzLgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jYW5ub3QtcmVhZC1jc3NydWxlcy1yZWRpcmVjdC5o
dG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jYW5ub3QtcmVhZC1jc3NydWxl
cy1yZWRpcmVjdC5odG1sCmluZGV4IGE0NWEzODUwYjI5NWMzMzVjNWVmMDMyMDNiZDY3OWZkZDE3
NDRmNzIuLmNmZWY5YjU2OTYyY2E3NThiOTQ3ZGRlZTNhZjQ4NjUwNGYxNmFiMGQgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY2Fubm90LXJlYWQtY3NzcnVsZXMt
cmVkaXJlY3QuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Nhbm5v
dC1yZWFkLWNzc3J1bGVzLXJlZGlyZWN0Lmh0bWwKQEAgLTUsNiArNSwxMiBAQAogICAgICAgaHJl
Zj0iL3Jlc291cmNlcy9yZWRpcmVjdC5waHA/dXJsPWh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1
cml0eS9yZXNvdXJjZXMvY3NzU3R5bGUuY3NzIj4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIKICAg
ICAgIGhyZWY9Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9yZXNvdXJjZXMvcmVkaXJlY3QucGhwP3Vy
bD1odHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvcmVzb3VyY2VzL2Nzc1N0eWxlLmNzcyI+
Cis8bGluayByZWw9InN0eWxlc2hlZXQiCisgICAgICBocmVmPSIvcmVzb3VyY2VzL3JlZGlyZWN0
LnBocD91cmw9aHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L3Jlc291cmNlcy9jc3NTdHls
ZS5jc3MiIGNyb3Nzb3JpZ2luPSIiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IgorICAgICAgaHJl
Zj0iaHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L3Jlc291cmNlcy9yZWRpcmVjdC1hbGxv
dy1zdGFyLnBocD91cmw9aHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L3Jlc291cmNlcy94
b3JpZ2luY3NzMS1hbGxvdy1zdGFyLnBocCIgY3Jvc3NvcmlnaW49IiI+Cis8bGluayByZWw9InN0
eWxlc2hlZXQiCisgICAgICBocmVmPSJodHRwOi8vbG9jYWxob3N0OjgwMDAvcmVzb3VyY2VzL3Jl
ZGlyZWN0LnBocD91cmw9aHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L3Jlc291cmNlcy94
b3JpZ2luY3NzMS5jc3MiIGNyb3Nzb3JpZ2luPSIiPgogPHNjcmlwdD4KIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikKICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKQEAgLTE1LDE2ICsyMSwzOCBA
QCBmdW5jdGlvbiBsb2cobXNnKSB7CiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNv
bGUiKS5hcHBlbmRDaGlsZChkaXYpOwogfQogCitmdW5jdGlvbiBjaGVja0NTU1J1bGVzKHNoZWV0
KQoreworICAgIHRyeSB7CisgICAgICAgIHZhciBjc3NSdWxlcyA9IHNoZWV0LmNzc1J1bGVzOwor
ICAgICAgICBsb2coImNzc1J1bGVzOiAiICsgY3NzUnVsZXMpOworICAgICAgICBpZiAoY3NzUnVs
ZXMpCisgICAgICAgICAgICBsb2coImNzc1J1bGVzIGxlbmd0aDogIiArIGNzc1J1bGVzLmxlbmd0
aCk7CisgICAgfSBjYXRjaChlKSB7CisgICAgICAgIGxvZygiZXhjZXB0aW9uIHRocm93biBmb3Ig
Y3NzUnVsZXM6ICIgKyBlKTsKKyAgICB9CisgICAgdHJ5IHsKKyAgICAgICAgdmFyIHJ1bGVzID0g
c2hlZXQucnVsZXM7CisgICAgICAgIGxvZygicnVsZXM6ICIgKyBydWxlcyk7CisgICAgICAgIGlm
IChydWxlcykKKyAgICAgICAgICAgIGxvZygicnVsZXMgbGVuZ3RoOiAiICsgcnVsZXMubGVuZ3Ro
KTsKKyAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgbG9nKCJleGNlcHRpb24gdGhyb3duIGZvciBy
dWxlczogIiArIGUpOworICAgIH0KK30KKwogd2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkgewog
ICAgIGxvZygiVGVzdCBiZWdpbnMuIik7Ci0gICAgbG9nKCI9PSBTYW1lLU9yaWdpbiB0byBDcm9z
cy1PcmlnaW4gPT0iKTsKLSAgICB2YXIgc2hlZXQxID0gZG9jdW1lbnQuc3R5bGVTaGVldHNbMF07
Ci0gICAgbG9nKCJjc3NSdWxlczogIiArIHNoZWV0MS5jc3NSdWxlcyk7Ci0gICAgbG9nKCJydWxl
czogIiArIHNoZWV0MS5ydWxlcyk7Ci0gICAgbG9nKCI9PSBDcm9zcy1PcmlnaW4gdG8gU2FtZS1P
cmlnaW4gPT0iKTsKLSAgICB2YXIgc2hlZXQyID0gZG9jdW1lbnQuc3R5bGVTaGVldHNbMV07Ci0g
ICAgbG9nKCJjc3NSdWxlczogIiArIHNoZWV0Mi5jc3NSdWxlcyk7Ci0gICAgbG9nKCJydWxlczog
IiArIHNoZWV0Mi5ydWxlcyk7CisgICAgbG9nKCI9PSBTYW1lLU9yaWdpbiB0byBDcm9zcy1Pcmln
aW4sIG5vLWNvcnMgbW9kZSA9PSIpOworICAgIGNoZWNrQ1NTUnVsZXMoZG9jdW1lbnQuc3R5bGVT
aGVldHNbMF0pOworICAgIGxvZygiPT0gQ3Jvc3MtT3JpZ2luIHRvIFNhbWUtT3JpZ2luLCBuby1j
b3JzIG1vZGUgPT0iKTsKKyAgICBjaGVja0NTU1J1bGVzKGRvY3VtZW50LnN0eWxlU2hlZXRzWzFd
KTsKKyAgICBsb2coIj09IFNhbWUtT3JpZ2luIHRvIFNhbWUtT3JpZ2luLCBjb3JzIG1vZGUgPT0i
KTsKKyAgICBjaGVja0NTU1J1bGVzKGRvY3VtZW50LnN0eWxlU2hlZXRzWzJdKTsKKyAgICBsb2co
Ij09IENyb3NzLU9yaWdpbiB0byBTYW1lLU9yaWdpbiwgY29ycyBtb2RlLCBzdWNjZXNzZnVsIGNv
cnMgY2hlY2sgPT0iKTsKKyAgICBjaGVja0NTU1J1bGVzKGRvY3VtZW50LnN0eWxlU2hlZXRzWzNd
KTsKKyAgICBsb2coIj09IENyb3NzLU9yaWdpbiB0byBTYW1lLU9yaWdpbiwgY29ycyBtb2RlLCBm
YWlsaW5nIGNvcnMgY2hlY2sgPT0iKTsKKyAgICBjaGVja0NTU1J1bGVzKGRvY3VtZW50LnN0eWxl
U2hlZXRzWzRdKTsKICAgICBsb2coIlRlc3QgZW5kcy4iKTsKIH0KIDwvc2NyaXB0PgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jYW5ub3QtcmVhZC1jc3NydWxl
cy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jYW5ub3QtcmVhZC1jc3Ny
dWxlcy5odG1sCmluZGV4IDYyNjA5MmJkNDNkOTg1ZjE4MGQ0ZmNmY2E4OTg3ZDcwZDYxMDQwYjUu
LjYzZmQ2Y2UxODA5NjhlNDM4MTBiZGVmODM3OGFlZGUwM2Y2ZTUxYmIgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY2Fubm90LXJlYWQtY3NzcnVsZXMuaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Nhbm5vdC1yZWFkLWNzc3J1bGVz
Lmh0bWwKQEAgLTQsNiArNCwxMCBAQAogPGxpbmsgcmVsPSJzdHlsZXNoZWV0IgogICAgICAgaHJl
Zj0iaHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L3Jlc291cmNlcy9jc3NTdHlsZS5jc3Mi
PgogPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMvY3NzU3R5bGUuY3NzIj4K
KzxsaW5rIHJlbD0ic3R5bGVzaGVldCIKKyAgICAgIGhyZWY9Imh0dHA6Ly9sb2NhbGhvc3Q6ODAw
MC9zZWN1cml0eS9yZXNvdXJjZXMvY3NzU3R5bGUuY3NzIiBjcm9zc29yaWdpbj0iIj4KKzxsaW5r
IHJlbD0ic3R5bGVzaGVldCIKKyAgICAgIGhyZWY9Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1
cml0eS9yZXNvdXJjZXMveG9yaWdpbmNzczEtYWxsb3ctc3Rhci5waHAiIGNyb3Nzb3JpZ2luPSIi
PgogPHNjcmlwdD4KIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKICAgICB0ZXN0UnVubmVyLmR1bXBB
c1RleHQoKTsKQEAgLTE0LDE2ICsxOCwzNiBAQCBmdW5jdGlvbiBsb2cobXNnKSB7CiAgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5hcHBlbmRDaGlsZChkaXYpOwogfQogCitm
dW5jdGlvbiBjaGVja0NTU1J1bGVzKHNoZWV0KQoreworICAgIHRyeSB7CisgICAgICAgIHZhciBj
c3NSdWxlcyA9IHNoZWV0LmNzc1J1bGVzOworICAgICAgICBsb2coImNzc1J1bGVzOiAiICsgY3Nz
UnVsZXMpOworICAgICAgICBpZiAoY3NzUnVsZXMpCisgICAgICAgICAgICBsb2coImNzc1J1bGVz
IGxlbmd0aDogIiArIGNzc1J1bGVzLmxlbmd0aCk7CisgICAgfSBjYXRjaChlKSB7CisgICAgICAg
IGxvZygiZXhjZXB0aW9uIHRocm93biBmb3IgY3NzUnVsZXM6ICIgKyBlKTsKKyAgICB9CisgICAg
dHJ5IHsKKyAgICAgICAgdmFyIHJ1bGVzID0gc2hlZXQucnVsZXM7CisgICAgICAgIGxvZygicnVs
ZXM6ICIgKyBydWxlcyk7CisgICAgICAgIGlmIChydWxlcykKKyAgICAgICAgICAgIGxvZygicnVs
ZXMgbGVuZ3RoOiAiICsgcnVsZXMubGVuZ3RoKTsKKyAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAg
bG9nKCJleGNlcHRpb24gdGhyb3duIGZvciBydWxlczogIiArIGUpOworICAgIH0KK30KKwogd2lu
ZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkgewogICAgIGxvZygiVGVzdCBiZWdpbnMuIik7Ci0gICAg
bG9nKCI9PSBDcm9zcy1PcmlnaW4gPT0iKTsKLSAgICB2YXIgc2hlZXQxID0gZG9jdW1lbnQuc3R5
bGVTaGVldHNbMF07Ci0gICAgbG9nKCJjc3NSdWxlczogIiArIHNoZWV0MS5jc3NSdWxlcyk7Ci0g
ICAgbG9nKCJydWxlczogIiArIHNoZWV0MS5ydWxlcyk7Ci0gICAgbG9nKCI9PSBTYW1lLU9yaWdp
biA9PSIpOwotICAgIHZhciBzaGVldDIgPSBkb2N1bWVudC5zdHlsZVNoZWV0c1sxXTsKLSAgICBs
b2coImNzc1J1bGVzOiAiICsgc2hlZXQyLmNzc1J1bGVzKTsKLSAgICBsb2coInJ1bGVzOiAiICsg
c2hlZXQyLnJ1bGVzKTsKKyAgICBsb2coIj09IENyb3NzLU9yaWdpbiByZXNvdXJjZSwgbm8tY29y
cyBtb2RlID09Iik7CisgICAgY2hlY2tDU1NSdWxlcyhkb2N1bWVudC5zdHlsZVNoZWV0c1swXSk7
CisgICAgbG9nKCI9PSBTYW1lLU9yaWdpbiByZXNvdXJjZSwgbm8tY29ycyBtb2RlID09Iik7Cisg
ICAgY2hlY2tDU1NSdWxlcyhkb2N1bWVudC5zdHlsZVNoZWV0c1sxXSk7CisgICAgbG9nKCI9PSBD
cm9zcy1PcmlnaW4gcmVzb3VyY2UsIGNvcnMgbW9kZSwgZmFpbGluZyBjb3JzIGNoZWNrID09Iik7
CisgICAgY2hlY2tDU1NSdWxlcyhkb2N1bWVudC5zdHlsZVNoZWV0c1syXSk7CisgICAgbG9nKCI9
PSBDcm9zcy1PcmlnaW4gcmVzb3VyY2UsIGNvcnMgbW9kZSwgc3VjY2Vzc2Z1bCBjb3JzIGNoZWNr
ID09Iik7CisgICAgY2hlY2tDU1NSdWxlcyhkb2N1bWVudC5zdHlsZVNoZWV0c1szXSk7CiAgICAg
bG9nKCJUZXN0IGVuZHMuIik7CiB9CiA8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3Mtb3JpZ2luLWNzcy05Lmh0bWwgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3NzLW9yaWdpbi1jc3MtOS5odG1sCmluZGV4IDYxYjI1
MDI0OGFiYTkxYjQ4ZmYyOGI0MWVmNGZhZWU0NDc3YTc1MjQuLjViOTA2MWVmYjkxNmQyYTg3ZWI4
NTkzNzMxYzEzYzI3NTA0NzQ2ZmYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
c2VjdXJpdHkvY3Jvc3Mtb3JpZ2luLWNzcy05Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9zZWN1cml0eS9jcm9zcy1vcmlnaW4tY3NzLTkuaHRtbApAQCAtMjEsOCArMjEsNyBAQCBm
dW5jdGlvbiBjaGVja0NTU0xvYWRpbmcoaWQsIGV4cGVjdFRvSW5jbHVkZU9yaWdpbiwgZXhwZWN0
VmlzaWJpbGl0eSkKIHsKICAgICBleHBlY3RlZENvbG9yID0gZXhwZWN0VG9JbmNsdWRlT3JpZ2lu
ID8gInJnYigyNTUsIDI1NSwgMCkiIDogInJnYigwLCAwLCAyNTUpIjsKICAgICBhc3NlcnRfZXF1
YWxzKGdldEJhY2tncm91bmRDb2xvckZvcklkKGlkKSwgZXhwZWN0ZWRDb2xvcik7Ci0gICAgLy8g
RklYTUU6IGNzc1J1bGVzIHNob3VsZCBiZSBtYWRlIHZpc2libGUgYWNjb3JkaW5nIHJlc291cmNl
IHRhaW50ZWQgc3RhdHVzLCBub3Qgb25seSBiYXNlZCBvbiB0aGUgcmVzb3VyY2UgVVJMIGJlaW5n
IGNyb3NzIG9yaWdpbi4KLSAgICAvLyBhc3NlcnRfZXF1YWxzKGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJsaW5rLSIgKyBpZCkuc2hlZXQuY3NzUnVsZXMgIT09IG51bGwsIGV4cGVjdFZpc2liaWxp
dHkpOworICAgIGFzc2VydF9lcXVhbHMoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxpbmstIiAr
IGlkKS5zaGVldC5jc3NSdWxlcyAhPT0gbnVsbCwgZXhwZWN0VmlzaWJpbGl0eSk7CiB9CiAKIHZh
ciBvbmxvYWRUZXN0ID0gYXN5bmNfdGVzdCgiIFRlc3RpbmcgdGhhdCBsaW5rIGVsZW1lbnQgdG8g
bG9hZCBzdHlsZXNoZWV0cyBjb3JyZWN0bHkgaGFuZGxlIGNyb3Nzb3JpZ2luIG1vZGUuIik7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Jlc291cmNlcy94b3Jp
Z2luY3NzMS1hbGxvdy1zdGFyLnBocCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkv
cmVzb3VyY2VzL3hvcmlnaW5jc3MxLWFsbG93LXN0YXIucGhwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ0Nzk4NDQx
NDhmNDA5ZDIwNDdiYzIwN2JiZTJlM2Y1YTQ0NjAzNzgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Jlc291cmNlcy94b3JpZ2luY3NzMS1hbGxvdy1z
dGFyLnBocApAQCAtMCwwICsxLDExIEBACis8P3BocAoraGVhZGVyKCJBY2Nlc3MtQ29udHJvbC1B
bGxvdy1PcmlnaW46ICoiKTsKKworJG5hbWUgPSAneG9yaWdpbmNzczEuY3NzJzsKKyRmcCA9IGZv
cGVuKCRuYW1lLCAncmInKTsKK2hlYWRlcigiQ29udGVudC1UeXBlOiB0ZXh0L2NzcyIpOworaGVh
ZGVyKCJDb250ZW50LUxlbmd0aDogIiAuIGZpbGVzaXplKCRuYW1lKSk7CisKK2ZwYXNzdGhydSgk
ZnApOworZXhpdDsKKz8+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>285101</attachid>
            <date>2016-08-02 05:33:42 -0700</date>
            <delta_ts>2016-09-05 06:58:33 -0700</delta_ts>
            <desc>Rebasing</desc>
            <filename>bug-158728-20160802143219.patch</filename>
            <type>text/plain</type>
            <size>26308</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA0MDIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGQ4NjVkNmFmMGE4MGMz
MWFhNzI2Y2ZlZWIzN2IwNzZhNzhmY2Y4ZS4uYWI4MGI3YzExMThmYThmNjllMmJjMDBmZDMyYzQy
ZGYyMThiZDFiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQ3IEBACiAyMDE2LTA4LTAyICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAorICAgICAgICBDbGVhbiBDU1Mgc3R5bGVz
aGVldHMgc2hvdWxkIGJlIGFjY2Vzc2libGUgZnJvbSBKYXZhU2NyaXB0CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTg3MjgKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb3ZlcmVkIGJ5IHVwZGF0ZWQgdGVz
dHMuCisKKyAgICAgICAgTWFraW5nIHVzZSBvZiB0aGUgcmVzb3VyY2UgcmVzcG9uc2UgdHlwZSB0
byBldmFsdWF0ZSB3aGV0aGVyIHRvIG1ha2UgdGhlIENTUyBzdHlsZXNoZWV0cyB2aXNpYmxlCisg
ICAgICAgIGZvciBzdHlsZXNoZWV0IGxpbmsgZWxlbWVudHMgYW5kIGZvciBzdHlsZXNoZWV0IHBy
b2Nlc3NpbmcgaW5zdHJ1Y3Rpb25zLgorICAgICAgICBJZGVhbGx5LCB0aGUgb3JpZ2luIGZsYWcg
c2hvdWxkIGJlIGEgYm9vbGVhbi4KKworICAgICAgICBUbyBrZWVwIGJlaGF2aW9yIGNvbnNpc3Rl
bnQgaW4gY29ycy1jaGVjay11bmF3YXJlIGNhc2VzLCB0aGUgZmxhZyBjYW4gYmUgc2V0IHRvIHVu
ZGVmaW5lZAorICAgICAgICBpbiB3aGljaCBjYXNlIHRoZSBiZWhhdmlvciByZW1haW5zIHRoZSBz
YW1lIChjaGVja2luZyBvZiB0aGUgc3R5bGVzaGVldCBVUkwpLgorICAgICAgICBUaGUgb3JpZ2lu
IGZsYWcgaXMgc2V0IHRvIHRydWUgb3IgZmFsc2Ugb25seSBpbiBjYXNlIG9mIGZldGNoIG1vZGUg
YmVpbmcgc2V0IHRvIGNvcnMgdXNpbmcgdGhlIGNyb3Nzb3JpZ2luYnV0ZS4KKworICAgICAgICBB
ZGRpbmcgQ09SUyBjaGVjayBhdCBTdWJyZXNvdXJjZUxvYWRlciBsZXZlbCBpbiBjYXNlIG9mIGZl
dGNoIG1vZGUgYmVpbmcgQ09SUy4KKyAgICAgICAgU2V0dGluZyBwcmVmbGlnaHQgY2hlY2tlciBm
ZXRjaCBtb2RlIHRvIE5vQ29ycyBhcyBwZXIgdGhlIHNwZWMgdG8gYnlwYXNzIENPUlMgY2hlY2tz
IGZvciB0aGUgcHJlZmxpZ2h0IHJlc3BvbnNlLgorCisgICAgICAgICogY3NzL0NTU1N0eWxlU2hl
ZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTaGVldDo6Y3JlYXRlKTogTWFrZXMg
b3JpZ2luIGZsYWcgdW5kZWZpbmVkIGlmIGJvb2xlYW4gcGFyYW1ldGVyIGlzIG5vdCBwYXNzZWQu
CisgICAgICAgIE90aGVyd2lzZSBvcmlnaW4gZmxhZyBpcyBzZXQgYWNjb3JkaW5nIGdpdmVuIGJv
b2xlYW4gdmFsdWUuCisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNoZWV0OjpjcmVhdGVJbmxp
bmUpOiBNYWtlcyBvcmlnaW4gZmxhZyBzZXQgdG8gdHJ1ZS4KKyAgICAgICAgKFdlYkNvcmU6OkNT
U1N0eWxlU2hlZXQ6OkNTU1N0eWxlU2hlZXQpOiBBZGRpbmcgb3JpZ2luIGZsYWcgaW5pdGlhbGl6
YXRpb24uCisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNoZWV0OjpjYW5BY2Nlc3NSdWxlcyk6
IFJldHVybmluZyBhY2NvcmRpbmcgdGhlIG9yaWdpbiBmbGFnIGlmIHNldC4KKyAgICAgICAgUmV0
dXJuaW5nIGFzIGJlZm9yZSBpbiBjYXNlIHRoZSBmbGFnIGlzIHVuZGVmaW5lZC4KKyAgICAgICAg
KiBjc3MvQ1NTU3R5bGVTaGVldC5oOiBBZGRpbmcgb3JpZ2luIGNsZWFuIGZsYWcuCisgICAgICAg
ICogZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcm9j
ZXNzaW5nSW5zdHJ1Y3Rpb246OnNldENTU1N0eWxlU2hlZXQpOiBNaW5vciByZWZhY3RvcmluZy4K
KyAgICAgICAgKiBodG1sL0hUTUxMaW5rRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MTGlua0VsZW1lbnQ6OmluaXRpYWxpemVTdHlsZVNoZWV0KTogSGVscGVyIHJvdXRpbmUgdXNl
ZCBpbiBzZXRDU1NTdHlsZVNoZWV0LgorICAgICAgICBTZXRzIG9yaWdpbiBjbGVhbiBmbGFnIGlm
IHRoZSByZXNvdXJjZSBpcyBjbGVhbi4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxMaW5rRWxlbWVu
dDo6c2V0Q1NTU3R5bGVTaGVldCk6IE1ha2luZyB1c2Ugb2YgaW5pdGlhbGl6ZVN0eWxlU2hlZXQu
CisgICAgICAgICogaHRtbC9IVE1MTGlua0VsZW1lbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvQ3Jv
c3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyb3NzT3Jp
Z2luUHJlZmxpZ2h0Q2hlY2tlcjo6c3RhcnRQcmVmbGlnaHQpOiBTZXR0aW5nIGZldGNoIG9wdGlv
bnMgbW9kZSB0byBOb0NvcnMgdG8gYnlwYXNzIENPUlMgY2hlY2tzLgorICAgICAgICAqIGxvYWRl
ci9TdWJyZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdWJyZXNvdXJjZUxv
YWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKTogRG9pbmcgQ09SUyBjaGVja3MgdG8gdGhlIHJlc3Bv
bnNlLgorICAgICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmNoZWNrUmVzcG9uc2VD
cm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wpOiBGYWlsaW5nIGxvYWQgaWYgZmV0Y2ggbW9kZSBpcyBD
T1JTIGFuZCBDT1JTIGNoZWNrcyBmYWlsLgorICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxv
YWRlci5oOgorCisyMDE2LTA4LTAyICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4K
KwogICAgICAgICBbRmV0Y2ggQVBJXSBGZXRjaCBwcm9taXNlcyBzaG91bGQgbm90IHJlamVjdCBv
ciByZXNvbHZlIHdoZW4gQWN0aXZlRE9NT2JqZWN0cyBhcmUgYmVpbmcgc3RvcHBlZAogICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYwNDIwCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcAppbmRleCA3Y2IwOWJhNDU3NGZmNDU2ZTNmYmZiZjdh
MjU2ZTUwM2E5NTZhMzkxLi45MmVkMzc5MzI3MDcyMzIxZTgzOTZiNDkwMmYzZDRmOTg2NDg0MWRl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwCkBAIC03OCwxOSArNzgsMTkgQEAg
c3RhdGljIGJvb2wgaXNBY2NlcHRhYmxlQ1NTU3R5bGVTaGVldFBhcmVudChOb2RlKiBwYXJlbnRO
b2RlKQogI2VuZGlmCiAKIFJlZjxDU1NTdHlsZVNoZWV0PiBDU1NTdHlsZVNoZWV0OjpjcmVhdGUo
UmVmPFN0eWxlU2hlZXRDb250ZW50cz4mJiBzaGVldCwgQ1NTSW1wb3J0UnVsZSogb3duZXJSdWxl
KQoteyAKK3sKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NTdHlsZVNoZWV0KFdURk1vdmUo
c2hlZXQpLCBvd25lclJ1bGUpKTsKIH0KIAotUmVmPENTU1N0eWxlU2hlZXQ+IENTU1N0eWxlU2hl
ZXQ6OmNyZWF0ZShSZWY8U3R5bGVTaGVldENvbnRlbnRzPiYmIHNoZWV0LCBOb2RlKiBvd25lck5v
ZGUpCi17IAotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENTU1N0eWxlU2hlZXQoV1RGTW92ZShz
aGVldCksIG93bmVyTm9kZSwgVGV4dFBvc2l0aW9uOjptaW5pbXVtUG9zaXRpb24oKSwgZmFsc2Up
KTsKK1JlZjxDU1NTdHlsZVNoZWV0PiBDU1NTdHlsZVNoZWV0OjpjcmVhdGUoUmVmPFN0eWxlU2hl
ZXRDb250ZW50cz4mJiBzaGVldCwgTm9kZSogb3duZXJOb2RlLCBPcmlnaW5DbGVhbkZsYWcgaXND
bGVhbk9yaWdpbikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NTdHlsZVNoZWV0KFdU
Rk1vdmUoc2hlZXQpLCBvd25lck5vZGUsIFRleHRQb3NpdGlvbjo6bWluaW11bVBvc2l0aW9uKCks
IGZhbHNlLCBpc0NsZWFuT3JpZ2luKSk7CiB9CiAKIFJlZjxDU1NTdHlsZVNoZWV0PiBDU1NTdHls
ZVNoZWV0OjpjcmVhdGVJbmxpbmUoTm9kZSYgb3duZXJOb2RlLCBjb25zdCBVUkwmIGJhc2VVUkws
IGNvbnN0IFRleHRQb3NpdGlvbiYgc3RhcnRQb3NpdGlvbiwgY29uc3QgU3RyaW5nJiBlbmNvZGlu
ZykKIHsKICAgICBDU1NQYXJzZXJDb250ZXh0IHBhcnNlckNvbnRleHQob3duZXJOb2RlLmRvY3Vt
ZW50KCksIGJhc2VVUkwsIGVuY29kaW5nKTsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NT
dHlsZVNoZWV0KFN0eWxlU2hlZXRDb250ZW50czo6Y3JlYXRlKGJhc2VVUkwuc3RyaW5nKCksIHBh
cnNlckNvbnRleHQpLCAmb3duZXJOb2RlLCBzdGFydFBvc2l0aW9uLCB0cnVlKSk7CisgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgQ1NTU3R5bGVTaGVldChTdHlsZVNoZWV0Q29udGVudHM6OmNyZWF0
ZShiYXNlVVJMLnN0cmluZygpLCBwYXJzZXJDb250ZXh0KSwgJm93bmVyTm9kZSwgc3RhcnRQb3Np
dGlvbiwgdHJ1ZSwgT3JpZ2luQ2xlYW5GbGFnOjpUcnVlKSk7CiB9CiAKIENTU1N0eWxlU2hlZXQ6
OkNTU1N0eWxlU2hlZXQoUmVmPFN0eWxlU2hlZXRDb250ZW50cz4mJiBjb250ZW50cywgQ1NTSW1w
b3J0UnVsZSogb3duZXJSdWxlKQpAQCAtMTA1LDExICsxMDUsMTIgQEAgQ1NTU3R5bGVTaGVldDo6
Q1NTU3R5bGVTaGVldChSZWY8U3R5bGVTaGVldENvbnRlbnRzPiYmIGNvbnRlbnRzLCBDU1NJbXBv
cnRSdWxlKgogICAgIG1fY29udGVudHMtPnJlZ2lzdGVyQ2xpZW50KHRoaXMpOwogfQogCi1DU1NT
dHlsZVNoZWV0OjpDU1NTdHlsZVNoZWV0KFJlZjxTdHlsZVNoZWV0Q29udGVudHM+JiYgY29udGVu
dHMsIE5vZGUqIG93bmVyTm9kZSwgY29uc3QgVGV4dFBvc2l0aW9uJiBzdGFydFBvc2l0aW9uLCBi
b29sIGlzSW5saW5lU3R5bGVzaGVldCkKK0NTU1N0eWxlU2hlZXQ6OkNTU1N0eWxlU2hlZXQoUmVm
PFN0eWxlU2hlZXRDb250ZW50cz4mJiBjb250ZW50cywgTm9kZSogb3duZXJOb2RlLCBjb25zdCBU
ZXh0UG9zaXRpb24mIHN0YXJ0UG9zaXRpb24sIGJvb2wgaXNJbmxpbmVTdHlsZXNoZWV0LCBPcmln
aW5DbGVhbkZsYWcgZmxhZykKICAgICA6IG1fY29udGVudHMoV1RGTW92ZShjb250ZW50cykpCiAg
ICAgLCBtX2lzSW5saW5lU3R5bGVzaGVldChpc0lubGluZVN0eWxlc2hlZXQpCiAgICAgLCBtX2lz
RGlzYWJsZWQoZmFsc2UpCiAgICAgLCBtX211dGF0ZWRSdWxlcyhmYWxzZSkKKyAgICAsIG1faXNP
cmlnaW5DbGVhbihmbGFnKQogICAgICwgbV9vd25lck5vZGUob3duZXJOb2RlKQogICAgICwgbV9v
d25lclJ1bGUoMCkKICAgICAsIG1fc3RhcnRQb3NpdGlvbihzdGFydFBvc2l0aW9uKQpAQCAtMjU4
LDE3ICsyNTksMTYgQEAgQ1NTUnVsZSogQ1NTU3R5bGVTaGVldDo6aXRlbSh1bnNpZ25lZCBpbmRl
eCkKIAogYm9vbCBDU1NTdHlsZVNoZWV0OjpjYW5BY2Nlc3NSdWxlcygpIGNvbnN0CiB7Ci0gICAg
aWYgKG1faXNJbmxpbmVTdHlsZXNoZWV0KQotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAo
bV9pc09yaWdpbkNsZWFuICE9IE9yaWdpbkNsZWFuRmxhZzo6VW5kZWZpbmVkKQorICAgICAgICBy
ZXR1cm4gbV9pc09yaWdpbkNsZWFuID09IE9yaWdpbkNsZWFuRmxhZzo6VHJ1ZTsKKwogICAgIFVS
TCBiYXNlVVJMID0gbV9jb250ZW50cy0+YmFzZVVSTCgpOwogICAgIGlmIChiYXNlVVJMLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gb3du
ZXJEb2N1bWVudCgpOwogICAgIGlmICghZG9jdW1lbnQpCiAgICAgICAgIHJldHVybiB0cnVlOwot
ICAgIGlmIChkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuUmVxdWVzdChiYXNlVVJMKSkK
LSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBkb2N1
bWVudC0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuUmVxdWVzdChiYXNlVVJMKTsKIH0KIAogUmVmUHRy
PENTU1J1bGVMaXN0PiBDU1NTdHlsZVNoZWV0OjpydWxlcygpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxl
U2hlZXQuaAppbmRleCA0ZTVmNDlhZTQ2NDJhN2M2OTVhNWFiZmI3MjExNmRhMzIxMjNkNDQ2Li40
NmIxNjAzNGJhMGQ4ZTRmOTJjN2E3NzMzZTBmZDgzNjAxOTU4MjM5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NTdHlsZVNoZWV0LmgKQEAgLTQ5LDggKzQ5LDE0IEBAIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNv
ZGU7CiAKIGNsYXNzIENTU1N0eWxlU2hlZXQgZmluYWwgOiBwdWJsaWMgU3R5bGVTaGVldCB7CiBw
dWJsaWM6CisgICAgZW51bSBjbGFzcyBPcmlnaW5DbGVhbkZsYWcgeworICAgICAgICBUcnVlLAor
ICAgICAgICBGYWxzZSwKKyAgICAgICAgVW5kZWZpbmVkCisgICAgfTsKKwogICAgIHN0YXRpYyBS
ZWY8Q1NTU3R5bGVTaGVldD4gY3JlYXRlKFJlZjxTdHlsZVNoZWV0Q29udGVudHM+JiYsIENTU0lt
cG9ydFJ1bGUqIG93bmVyUnVsZSA9IDApOwotICAgIHN0YXRpYyBSZWY8Q1NTU3R5bGVTaGVldD4g
Y3JlYXRlKFJlZjxTdHlsZVNoZWV0Q29udGVudHM+JiYsIE5vZGUqIG93bmVyTm9kZSk7CisgICAg
c3RhdGljIFJlZjxDU1NTdHlsZVNoZWV0PiBjcmVhdGUoUmVmPFN0eWxlU2hlZXRDb250ZW50cz4m
JiwgTm9kZSogb3duZXJOb2RlLCBPcmlnaW5DbGVhbkZsYWcgPSBPcmlnaW5DbGVhbkZsYWc6OlVu
ZGVmaW5lZCk7CiAgICAgc3RhdGljIFJlZjxDU1NTdHlsZVNoZWV0PiBjcmVhdGVJbmxpbmUoTm9k
ZSYsIGNvbnN0IFVSTCYsIGNvbnN0IFRleHRQb3NpdGlvbiYgc3RhcnRQb3NpdGlvbiA9IFRleHRQ
b3NpdGlvbjo6bWluaW11bVBvc2l0aW9uKCksIGNvbnN0IFN0cmluZyYgZW5jb2RpbmcgPSBTdHJp
bmcoKSk7CiAKICAgICB2aXJ0dWFsIH5DU1NTdHlsZVNoZWV0KCk7CkBAIC0xMjUsMTcgKzEzMSwx
OCBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgQ1NTU3R5bGVTaGVldChSZWY8U3R5bGVTaGVl
dENvbnRlbnRzPiYmLCBDU1NJbXBvcnRSdWxlKiBvd25lclJ1bGUpOwotICAgIENTU1N0eWxlU2hl
ZXQoUmVmPFN0eWxlU2hlZXRDb250ZW50cz4mJiwgTm9kZSogb3duZXJOb2RlLCBjb25zdCBUZXh0
UG9zaXRpb24mIHN0YXJ0UG9zaXRpb24sIGJvb2wgaXNJbmxpbmVTdHlsZXNoZWV0KTsKKyAgICBD
U1NTdHlsZVNoZWV0KFJlZjxTdHlsZVNoZWV0Q29udGVudHM+JiYsIE5vZGUqIG93bmVyTm9kZSwg
Y29uc3QgVGV4dFBvc2l0aW9uJiBzdGFydFBvc2l0aW9uLCBib29sIGlzSW5saW5lU3R5bGVzaGVl
dCwgT3JpZ2luQ2xlYW5GbGFnKTsKIAogICAgIGJvb2wgaXNDU1NTdHlsZVNoZWV0KCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIFN0cmluZyB0eXBlKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gQVNDSUlMaXRlcmFsKCJ0ZXh0L2NzcyIpOyB9CiAKICAgICBib29sIGNhbkFj
Y2Vzc1J1bGVzKCkgY29uc3Q7Ci0gICAgCisKICAgICBSZWY8U3R5bGVTaGVldENvbnRlbnRzPiBt
X2NvbnRlbnRzOwogICAgIGJvb2wgbV9pc0lubGluZVN0eWxlc2hlZXQ7CiAgICAgYm9vbCBtX2lz
RGlzYWJsZWQ7CiAgICAgYm9vbCBtX211dGF0ZWRSdWxlczsKKyAgICBPcmlnaW5DbGVhbkZsYWcg
bV9pc09yaWdpbkNsZWFuIHsgT3JpZ2luQ2xlYW5GbGFnOjpVbmRlZmluZWQgfTsKICAgICBTdHJp
bmcgbV90aXRsZTsKICAgICBSZWZQdHI8TWVkaWFRdWVyeVNldD4gbV9tZWRpYVF1ZXJpZXM7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAKaW5kZXggMjgw
MzMxNTlmYWNhZmNjZDNmYjk4ZjViOWY5ZTRlMmEzMTA1MTgzYS4uZDEyMzg5NzQwMTJmM2Y5MTE2
MTczMjAwM2JmY2U2ODIxNzQxZDRlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1By
b2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3Np
bmdJbnN0cnVjdGlvbi5jcHAKQEAgLTE5MSw5ICsxOTEsOSBAQCB2b2lkIFByb2Nlc3NpbmdJbnN0
cnVjdGlvbjo6c2V0Q1NTU3R5bGVTaGVldChjb25zdCBTdHJpbmcmIGhyZWYsIGNvbnN0IFVSTCYg
YmFzZQogICAgIENTU1BhcnNlckNvbnRleHQgcGFyc2VyQ29udGV4dChkb2N1bWVudCgpLCBiYXNl
VVJMLCBjaGFyc2V0KTsKIAogICAgIGF1dG8gY3NzU2hlZXQgPSBDU1NTdHlsZVNoZWV0OjpjcmVh
dGUoU3R5bGVTaGVldENvbnRlbnRzOjpjcmVhdGUoaHJlZiwgcGFyc2VyQ29udGV4dCksIHRoaXMp
OwotICAgIGNzc1NoZWV0LmdldCgpLnNldERpc2FibGVkKG1fYWx0ZXJuYXRlKTsKLSAgICBjc3NT
aGVldC5nZXQoKS5zZXRUaXRsZShtX3RpdGxlKTsKLSAgICBjc3NTaGVldC5nZXQoKS5zZXRNZWRp
YVF1ZXJpZXMoTWVkaWFRdWVyeVNldDo6Y3JlYXRlKG1fbWVkaWEpKTsKKyAgICBjc3NTaGVldC0+
c2V0RGlzYWJsZWQobV9hbHRlcm5hdGUpOworICAgIGNzc1NoZWV0LT5zZXRUaXRsZShtX3RpdGxl
KTsKKyAgICBjc3NTaGVldC0+c2V0TWVkaWFRdWVyaWVzKE1lZGlhUXVlcnlTZXQ6OmNyZWF0ZSht
X21lZGlhKSk7CiAKICAgICBtX3NoZWV0ID0gV1RGTW92ZShjc3NTaGVldCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcAppbmRleCBjZGFhMzE3MzUyZDMzZGUwYTMzYjQ2
YTBkZDlhZGM5ZDY2MTQyODRlLi42MWExOTI5NDIyYjEzMGYzMmM0OWNmOTMwMGU2YTM0ZjM0ZWUz
YTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCkBAIC0zMzIsNiAr
MzMyLDE4IEBAIHZvaWQgSFRNTExpbmtFbGVtZW50OjpmaW5pc2hQYXJzaW5nQ2hpbGRyZW4oKQog
ICAgIEhUTUxFbGVtZW50OjpmaW5pc2hQYXJzaW5nQ2hpbGRyZW4oKTsKIH0KIAordm9pZCBIVE1M
TGlua0VsZW1lbnQ6OmluaXRpYWxpemVTdHlsZVNoZWV0KFJlZjxTdHlsZVNoZWV0Q29udGVudHM+
JiYgc3R5bGVTaGVldCwgY29uc3QgQ2FjaGVkQ1NTU3R5bGVTaGVldCYgY2FjaGVkU3R5bGVTaGVl
dCkKK3sKKyAgICAvLyBGSVhNRTogb3JpZ2luQ2xlYW4gc2hvdWxkIGJlIHR1cm5lZCB0byBmYWxz
ZSBleGNlcHQgIHNldCB0byB0cnVlIGlmIGZldGNoIG1vZGUgaXMgQ09SUy4KKyAgICBDU1NTdHls
ZVNoZWV0OjpPcmlnaW5DbGVhbkZsYWcgb3JpZ2luQ2xlYW4gPSBDU1NTdHlsZVNoZWV0OjpPcmln
aW5DbGVhbkZsYWc6OlVuZGVmaW5lZDsKKyAgICBpZiAoY2FjaGVkU3R5bGVTaGVldC5vcHRpb25z
KCkubW9kZSA9PSBGZXRjaE9wdGlvbnM6Ok1vZGU6OkNvcnMpCisgICAgICAgIG9yaWdpbkNsZWFu
ID0gY2FjaGVkU3R5bGVTaGVldC5pc0NsZWFuKCkgPyBDU1NTdHlsZVNoZWV0OjpPcmlnaW5DbGVh
bkZsYWc6OlRydWUgOiBDU1NTdHlsZVNoZWV0OjpPcmlnaW5DbGVhbkZsYWc6OkZhbHNlOworCisg
ICAgbV9zaGVldCA9IENTU1N0eWxlU2hlZXQ6OmNyZWF0ZShXVEZNb3ZlKHN0eWxlU2hlZXQpLCB0
aGlzLCBvcmlnaW5DbGVhbik7CisgICAgbV9zaGVldC0+c2V0TWVkaWFRdWVyaWVzKE1lZGlhUXVl
cnlTZXQ6OmNyZWF0ZUFsbG93aW5nRGVzY3JpcHRpb25TeW50YXgobV9tZWRpYSkpOworICAgIG1f
c2hlZXQtPnNldFRpdGxlKHRpdGxlKCkpOworfQorCiB2b2lkIEhUTUxMaW5rRWxlbWVudDo6c2V0
Q1NTU3R5bGVTaGVldChjb25zdCBTdHJpbmcmIGhyZWYsIGNvbnN0IFVSTCYgYmFzZVVSTCwgY29u
c3QgU3RyaW5nJiBjaGFyc2V0LCBjb25zdCBDYWNoZWRDU1NTdHlsZVNoZWV0KiBjYWNoZWRTdHls
ZVNoZWV0KQogewogICAgIGlmICghaW5Eb2N1bWVudCgpKSB7CkBAIC0zNTEsMTAgKzM2Myw3IEBA
IHZvaWQgSFRNTExpbmtFbGVtZW50OjpzZXRDU1NTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgaHJl
ZiwgY29uc3QgVVJMJiBiYXNlVVJMLCBjCiAgICAgaWYgKFJlZlB0cjxTdHlsZVNoZWV0Q29udGVu
dHM+IHJlc3RvcmVkU2hlZXQgPSBjb25zdF9jYXN0PENhY2hlZENTU1N0eWxlU2hlZXQqPihjYWNo
ZWRTdHlsZVNoZWV0KS0+cmVzdG9yZVBhcnNlZFN0eWxlU2hlZXQocGFyc2VyQ29udGV4dCwgY2Fj
aGVQb2xpY3kpKSB7CiAgICAgICAgIEFTU0VSVChyZXN0b3JlZFNoZWV0LT5pc0NhY2hlYWJsZSgp
KTsKICAgICAgICAgQVNTRVJUKCFyZXN0b3JlZFNoZWV0LT5pc0xvYWRpbmcoKSk7Ci0KLSAgICAg
ICAgbV9zaGVldCA9IENTU1N0eWxlU2hlZXQ6OmNyZWF0ZShyZXN0b3JlZFNoZWV0LnJlbGVhc2VO
b25OdWxsKCksIHRoaXMpOwotICAgICAgICBtX3NoZWV0LT5zZXRNZWRpYVF1ZXJpZXMoTWVkaWFR
dWVyeVNldDo6Y3JlYXRlQWxsb3dpbmdEZXNjcmlwdGlvblN5bnRheChtX21lZGlhKSk7Ci0gICAg
ICAgIG1fc2hlZXQtPnNldFRpdGxlKHRpdGxlKCkpOworICAgICAgICBpbml0aWFsaXplU3R5bGVT
aGVldChyZXN0b3JlZFNoZWV0LnJlbGVhc2VOb25OdWxsKCksICpjYWNoZWRTdHlsZVNoZWV0KTsK
IAogICAgICAgICBtX2xvYWRpbmcgPSBmYWxzZTsKICAgICAgICAgc2hlZXRMb2FkZWQoKTsKQEAg
LTM2Myw5ICszNzIsNyBAQCB2b2lkIEhUTUxMaW5rRWxlbWVudDo6c2V0Q1NTU3R5bGVTaGVldChj
b25zdCBTdHJpbmcmIGhyZWYsIGNvbnN0IFVSTCYgYmFzZVVSTCwgYwogICAgIH0KIAogICAgIGF1
dG8gc3R5bGVTaGVldCA9IFN0eWxlU2hlZXRDb250ZW50czo6Y3JlYXRlKGhyZWYsIHBhcnNlckNv
bnRleHQpOwotICAgIG1fc2hlZXQgPSBDU1NTdHlsZVNoZWV0OjpjcmVhdGUoc3R5bGVTaGVldC5j
b3B5UmVmKCksIHRoaXMpOwotICAgIG1fc2hlZXQtPnNldE1lZGlhUXVlcmllcyhNZWRpYVF1ZXJ5
U2V0OjpjcmVhdGVBbGxvd2luZ0Rlc2NyaXB0aW9uU3ludGF4KG1fbWVkaWEpKTsKLSAgICBtX3No
ZWV0LT5zZXRUaXRsZSh0aXRsZSgpKTsKKyAgICBpbml0aWFsaXplU3R5bGVTaGVldChzdHlsZVNo
ZWV0LmNvcHlSZWYoKSwgKmNhY2hlZFN0eWxlU2hlZXQpOwogCiAgICAgc3R5bGVTaGVldC5nZXQo
KS5wYXJzZUF1dGhvclN0eWxlU2hlZXQoY2FjaGVkU3R5bGVTaGVldCwgZG9jdW1lbnQoKS5zZWN1
cml0eU9yaWdpbigpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlu
a0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmgKaW5kZXgg
NjNlNWZlOTQ2MmQyOGM0MWJhYWUwY2NjZjM1MjUyOGI1N2I0ZDQxMy4uNDc1YmE5NWU1MjAzYTUy
OWMxOGNkZmMyOTM1NTg2NTRkNzU4NGY0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTGlua0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxl
bWVudC5oCkBAIC04Niw2ICs4Niw4IEBAIHByaXZhdGU6CiAgICAgSW5zZXJ0aW9uTm90aWZpY2F0
aW9uUmVxdWVzdCBpbnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSYpIGZpbmFsOwogICAgIHZvaWQg
cmVtb3ZlZEZyb20oQ29udGFpbmVyTm9kZSYpIGZpbmFsOwogCisgICAgdm9pZCBpbml0aWFsaXpl
U3R5bGVTaGVldChSZWY8U3R5bGVTaGVldENvbnRlbnRzPiYmLCBjb25zdCBDYWNoZWRDU1NTdHls
ZVNoZWV0Jik7CisKICAgICAvLyBmcm9tIENhY2hlZFJlc291cmNlQ2xpZW50CiAgICAgdm9pZCBz
ZXRDU1NTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgaHJlZiwgY29uc3QgVVJMJiBiYXNlVVJMLCBj
b25zdCBTdHJpbmcmIGNoYXJzZXQsIGNvbnN0IENhY2hlZENTU1N0eWxlU2hlZXQqKSBmaW5hbDsK
ICAgICBib29sIHNoZWV0TG9hZGVkKCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIuY3BwCmluZGV4IDM0NDcyMzk2NTgy
ZjJkNDI2NGJmNjAyM2E5OTJlOGYwZTFjMDY4YmYuLjUyNDVmOTFiNzE1ODdjMTdiMmQwZDlkNjdh
N2Y1OGEwMzlhN2M5Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09y
aWdpblByZWZsaWdodENoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9z
c09yaWdpblByZWZsaWdodENoZWNrZXIuY3BwCkBAIC0xMDMsNiArMTAzLDcgQEAgdm9pZCBDcm9z
c09yaWdpblByZWZsaWdodENoZWNrZXI6OnN0YXJ0UHJlZmxpZ2h0KCkKICAgICBSZXNvdXJjZUxv
YWRlck9wdGlvbnMgb3B0aW9ucyA9IHN0YXRpY19jYXN0PEZldGNoT3B0aW9ucz4obV9sb2FkZXIu
b3B0aW9ucygpKTsKICAgICBvcHRpb25zLmNyZWRlbnRpYWxzID0gRmV0Y2hPcHRpb25zOjpDcmVk
ZW50aWFsczo6T21pdDsKICAgICBvcHRpb25zLnJlZGlyZWN0ID0gRmV0Y2hPcHRpb25zOjpSZWRp
cmVjdDo6TWFudWFsOworICAgIG9wdGlvbnMubW9kZSA9IEZldGNoT3B0aW9uczo6TW9kZTo6Tm9D
b3JzOwogCiAgICAgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0IHByZWZsaWdodFJlcXVlc3QoY3JlYXRl
QWNjZXNzQ29udHJvbFByZWZsaWdodFJlcXVlc3QobV9yZXF1ZXN0LCBtX2xvYWRlci5zZWN1cml0
eU9yaWdpbigpKSwgb3B0aW9ucyk7CiAgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNo
YXJlZEZlYXR1cmVzKCkucmVzb3VyY2VUaW1pbmdFbmFibGVkKCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAppbmRleCAxYzE2MTFjNjZlODVmNTljNjM1NzJh
YzEwNDFkZDdiZjczMjJiMGYyLi5kNzFiNzM1MzliZmQxMDVkYzRlNTNmODhkYThlNWQxYjY4OWY5
N2VjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKQEAg
LTI3MCw2ICsyNzAsOSBAQCB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9u
c2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiAgICAgICAgICAgICBtX2ZyYW1l
LT5wYWdlKCktPmRpYWdub3N0aWNMb2dnaW5nQ2xpZW50KCkubG9nRGlhZ25vc3RpY01lc3NhZ2VX
aXRoUmVzdWx0KERpYWdub3N0aWNMb2dnaW5nS2V5czo6Y2FjaGVkUmVzb3VyY2VSZXZhbGlkYXRp
b25LZXkoKSwgZW1wdHlTdHJpbmcoKSwgRGlhZ25vc3RpY0xvZ2dpbmdSZXN1bHRGYWlsLCBTaG91
bGRTYW1wbGU6Olllcyk7CiAgICAgfQogCisgICAgaWYgKCFjaGVja1Jlc3BvbnNlQ3Jvc3NPcmln
aW5BY2Nlc3NDb250cm9sKHJlc3BvbnNlKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgbV9yZXNv
dXJjZS0+cmVzcG9uc2VSZWNlaXZlZChyZXNwb25zZSk7CiAgICAgaWYgKHJlYWNoZWRUZXJtaW5h
bFN0YXRlKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTM5Nyw2ICs0MDAsMjYgQEAgc3RhdGljIHZv
aWQgbG9nUmVzb3VyY2VMb2FkZWQoRnJhbWUqIGZyYW1lLCBDYWNoZWRSZXNvdXJjZTo6VHlwZSB0
eXBlKQogICAgIGZyYW1lLT5wYWdlKCktPmRpYWdub3N0aWNMb2dnaW5nQ2xpZW50KCkubG9nRGlh
Z25vc3RpY01lc3NhZ2VXaXRoVmFsdWUoRGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpyZXNvdXJjZUtl
eSgpLCBEaWFnbm9zdGljTG9nZ2luZ0tleXM6OmxvYWRlZEtleSgpLCByZXNvdXJjZVR5cGUsIFNo
b3VsZFNhbXBsZTo6WWVzKTsKIH0KIAorYm9vbCBTdWJyZXNvdXJjZUxvYWRlcjo6Y2hlY2tSZXNw
b25zZUNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSkKK3sKKyAgICBpZiAoIW1fcmVzb3VyY2UtPmlzQ3Jvc3NPcmlnaW4oKSB8fCBvcHRpb25z
KCkubW9kZSAhPSBGZXRjaE9wdGlvbnM6Ok1vZGU6OkNvcnMpCisgICAgICAgIHJldHVybiB0cnVl
OworCisgICAgQVNTRVJUKG1fb3JpZ2luKTsKKworICAgIFN0cmluZyBlcnJvckRlc2NyaXB0aW9u
OworICAgIGlmIChwYXNzZXNBY2Nlc3NDb250cm9sQ2hlY2socmVzcG9uc2UsIG9wdGlvbnMoKS5h
bGxvd0NyZWRlbnRpYWxzLCAqbV9vcmlnaW4sIGVycm9yRGVzY3JpcHRpb24pKQorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKworICAgIGlmIChtX2ZyYW1lICYmIG1fZnJhbWUtPmRvY3VtZW50KCkpIHsK
KyAgICAgICAgU3RyaW5nIGVycm9yTWVzc2FnZSA9ICJDcm9zcy1vcmlnaW4gcmVxdWVzdCB0byAi
ICsgcmVzcG9uc2UudXJsKCkuc3RyaW5nKCkgKyAiIGRlbmllZCBieSBDcm9zcy1PcmlnaW4gUmVz
b3VyY2UgU2hhcmluZyBwb2xpY3k6ICIgKyBlcnJvckRlc2NyaXB0aW9uOworICAgICAgICBtX2Zy
YW1lLT5kb2N1bWVudCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0
eSwgTWVzc2FnZUxldmVsOjpFcnJvciwgZXJyb3JNZXNzYWdlKTsKKyAgICB9CisgICAgY2FuY2Vs
KFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgcmVzcG9uc2UudXJs
KCksIGVycm9yRGVzY3JpcHRpb24sIFJlc291cmNlRXJyb3I6OlR5cGU6OkFjY2Vzc0NvbnRyb2wp
KTsKKyAgICByZXR1cm4gZmFsc2U7CisKK30KKwogYm9vbCBTdWJyZXNvdXJjZUxvYWRlcjo6Y2hl
Y2tSZWRpcmVjdGlvbkNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbChjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHByZXZpb3VzUmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNw
b25zZSwgUmVzb3VyY2VSZXF1ZXN0JiBuZXdSZXF1ZXN0KQogewogICAgIEFTU0VSVChvcHRpb25z
KCkubW9kZSAhPSBGZXRjaE9wdGlvbnM6Ok1vZGU6OlNhbWVPcmlnaW4pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaAppbmRleCAzMWM0YjNlYTA1NjY4NjQwMGFiNWMy
MGQ5MTQxMmU5YjI1ZmM5OWRjLi5jYjY4ZDg2MzVkN2IyZDM3YmM0MDVmYzQwMGJlYTk2ZGU1NGI1
YWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaApAQCAtOTIs
NiArOTIsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBjaGVja0ZvckhUVFBTdGF0dXNDb2RlRXJy
b3IoKTsKICAgICBib29sIGNoZWNrUmVkaXJlY3Rpb25Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wo
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291cmNl
UmVxdWVzdCYgbmV3UmVxdWVzdCk7CisgICAgYm9vbCBjaGVja1Jlc3BvbnNlQ3Jvc3NPcmlnaW5B
Y2Nlc3NDb250cm9sKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKIAogICAgIHZvaWQgZGlkUmVj
ZWl2ZURhdGFPckJ1ZmZlcihjb25zdCBjaGFyKiwgaW50LCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYm
LCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7CiAKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRl
eCA2NzgwZGU1YTVlMmQyNTYxZjgxMTQwM2JhM2NlMGM2MzRiYjViMzlmLi45MTg4N2E2ZTdkYzA3
YmI0YWY2ZDJhYzljODk5OTg4NWE4OWQ2ZTk1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTkgQEAKIDIwMTYt
MDgtMDIgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCisgICAgICAgIENsZWFu
IENTUyBzdHlsZXNoZWV0cyBzaG91bGQgYmUgYWNjZXNzaWJsZSBmcm9tIEphdmFTY3JpcHQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODcyOAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaHR0cC90ZXN0
cy9zZWN1cml0eS9jYW5ub3QtcmVhZC1jc3NydWxlcy1leHBlY3RlZC50eHQ6CisgICAgICAgICog
aHR0cC90ZXN0cy9zZWN1cml0eS9jYW5ub3QtcmVhZC1jc3NydWxlcy1yZWRpcmVjdC1leHBlY3Rl
ZC50eHQ6CisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9jYW5ub3QtcmVhZC1jc3NydWxl
cy1yZWRpcmVjdC5odG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvY2Fubm90LXJl
YWQtY3NzcnVsZXMuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3NzLW9y
aWdpbi1jc3MtOS5odG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvcmVzb3VyY2Vz
L3hvcmlnaW5jc3MxLWFsbG93LXN0YXIucGhwOiBBZGRlZC4KKworMjAxNi0wOC0wMiAgWW91ZW5u
IEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKICAgICAgICAgW0ZldGNoIEFQSV0gRmV0Y2gg
cHJvbWlzZXMgc2hvdWxkIG5vdCByZWplY3Qgb3IgcmVzb2x2ZSB3aGVuIEFjdGl2ZURPTU9iamVj
dHMgYXJlIGJlaW5nIHN0b3BwZWQKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE2MDQyMAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3NlY3VyaXR5L2Nhbm5vdC1yZWFkLWNzc3J1bGVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc2VjdXJpdHkvY2Fubm90LXJlYWQtY3NzcnVsZXMtZXhwZWN0ZWQudHh0Cmlu
ZGV4IDdhNzhiYWJjMmE1ZDg0NDdmMDRiNTk0YmIyMmQwZTJhZTQyOTY0MzUuLjVhYjczYTljYjUx
ZGRhNzkxOGY0NDlkZWJiNjQxYTc1ZmNmN2MxN2IgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkvY2Fubm90LXJlYWQtY3NzcnVsZXMtZXhwZWN0ZWQudHh0CisrKyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY2Fubm90LXJlYWQtY3NzcnVsZXMtZXhw
ZWN0ZWQudHh0CkBAIC0xLDEwICsxLDIxIEBACitDT05TT0xFIE1FU1NBR0U6IENyb3NzLW9yaWdp
biByZXF1ZXN0IHRvIGh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9yZXNvdXJjZXMvY3Nz
U3R5bGUuY3NzIGRlbmllZCBieSBDcm9zcy1PcmlnaW4gUmVzb3VyY2UgU2hhcmluZyBwb2xpY3k6
IE9yaWdpbiBodHRwOi8vMTI3LjAuMC4xOjgwMDAgaXMgbm90IGFsbG93ZWQgYnkgQWNjZXNzLUNv
bnRyb2wtQWxsb3ctT3JpZ2luLgogVGhpcyB0ZXN0IHdoZXRoZXIgYSBzY3JpcHQgY2FuIHJlYWQg
dGhlIHJ1bGVzIGZyb20gYSBjcm9zcy1vcmlnaW4gc3R5bGUgc2hlZXQuIEZvciBtb3JlIGluZm9y
bWF0aW9uIG9uIHdoeSB3ZSBibG9jayB0aGlzLCBwbGVhc2Ugc2VlIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDUyNy4KIAogVGVzdCBiZWdpbnMuCi09PSBDcm9zcy1P
cmlnaW4gPT0KKz09IENyb3NzLU9yaWdpbiByZXNvdXJjZSwgbm8tY29ycyBtb2RlID09CiBjc3NS
dWxlczogbnVsbAogcnVsZXM6IG51bGwKLT09IFNhbWUtT3JpZ2luID09Cis9PSBTYW1lLU9yaWdp
biByZXNvdXJjZSwgbm8tY29ycyBtb2RlID09CiBjc3NSdWxlczogW29iamVjdCBDU1NSdWxlTGlz
dF0KK2Nzc1J1bGVzIGxlbmd0aDogMQogcnVsZXM6IFtvYmplY3QgQ1NTUnVsZUxpc3RdCitydWxl
cyBsZW5ndGg6IDEKKz09IENyb3NzLU9yaWdpbiByZXNvdXJjZSwgY29ycyBtb2RlLCBmYWlsaW5n
IGNvcnMgY2hlY2sgPT0KK2Nzc1J1bGVzOiBudWxsCitydWxlczogbnVsbAorPT0gQ3Jvc3MtT3Jp
Z2luIHJlc291cmNlLCBjb3JzIG1vZGUsIHN1Y2Nlc3NmdWwgY29ycyBjaGVjayA9PQorY3NzUnVs
ZXM6IFtvYmplY3QgQ1NTUnVsZUxpc3RdCitjc3NSdWxlcyBsZW5ndGg6IDEKK3J1bGVzOiBbb2Jq
ZWN0IENTU1J1bGVMaXN0XQorcnVsZXMgbGVuZ3RoOiAxCiBUZXN0IGVuZHMuCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Nhbm5vdC1yZWFkLWNzc3J1bGVzLXJl
ZGlyZWN0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY2Fu
bm90LXJlYWQtY3NzcnVsZXMtcmVkaXJlY3QtZXhwZWN0ZWQudHh0CmluZGV4IDA2MjY0NmZkNDJk
OWZlYjhkM2NlM2VmZTgwYTc4NDVkN2U2YTIzOTYuLmIxMWNhZDIxYmM2NDhmMTk4NzRlZGY0ODcz
YTE3ZThmZDlkNTUxYzYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJp
dHkvY2Fubm90LXJlYWQtY3NzcnVsZXMtcmVkaXJlY3QtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY2Fubm90LXJlYWQtY3NzcnVsZXMtcmVkaXJlY3Qt
ZXhwZWN0ZWQudHh0CkBAIC0xLDEwICsxLDI2IEBACitDT05TT0xFIE1FU1NBR0U6IENyb3NzLW9y
aWdpbiByZWRpcmVjdGlvbiBkZW5pZWQgYnkgQ3Jvc3MtT3JpZ2luIFJlc291cmNlIFNoYXJpbmcg
cG9saWN5OiBPcmlnaW4gaHR0cDovLzEyNy4wLjAuMTo4MDAwIGlzIG5vdCBhbGxvd2VkIGJ5IEFj
Y2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbi4KIFRoaXMgdGVzdCB3aGV0aGVyIGEgc2NyaXB0IGNh
biByZWFkIHRoZSBydWxlcyBmcm9tIGEgY3Jvc3Mtb3JpZ2luIHN0eWxlIHNoZWV0IGluIHRoZSBw
cmVzZW5jZSBvZiByZWRpcmVjdHMuIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHdoeSB3ZSBibG9j
ayB0aGlzLCBwbGVhc2Ugc2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDUyNy4KIAogVGVzdCBiZWdpbnMuCi09PSBTYW1lLU9yaWdpbiB0byBDcm9zcy1PcmlnaW4g
PT0KKz09IFNhbWUtT3JpZ2luIHRvIENyb3NzLU9yaWdpbiwgbm8tY29ycyBtb2RlID09CiBjc3NS
dWxlczogbnVsbAogcnVsZXM6IG51bGwKLT09IENyb3NzLU9yaWdpbiB0byBTYW1lLU9yaWdpbiA9
PQorPT0gQ3Jvc3MtT3JpZ2luIHRvIFNhbWUtT3JpZ2luLCBuby1jb3JzIG1vZGUgPT0KIGNzc1J1
bGVzOiBbb2JqZWN0IENTU1J1bGVMaXN0XQorY3NzUnVsZXMgbGVuZ3RoOiAxCiBydWxlczogW29i
amVjdCBDU1NSdWxlTGlzdF0KK3J1bGVzIGxlbmd0aDogMQorPT0gU2FtZS1PcmlnaW4gdG8gU2Ft
ZS1PcmlnaW4sIGNvcnMgbW9kZSA9PQorY3NzUnVsZXM6IFtvYmplY3QgQ1NTUnVsZUxpc3RdCitj
c3NSdWxlcyBsZW5ndGg6IDEKK3J1bGVzOiBbb2JqZWN0IENTU1J1bGVMaXN0XQorcnVsZXMgbGVu
Z3RoOiAxCis9PSBDcm9zcy1PcmlnaW4gdG8gU2FtZS1PcmlnaW4sIGNvcnMgbW9kZSwgc3VjY2Vz
c2Z1bCBjb3JzIGNoZWNrID09Citjc3NSdWxlczogW29iamVjdCBDU1NSdWxlTGlzdF0KK2Nzc1J1
bGVzIGxlbmd0aDogMQorcnVsZXM6IFtvYmplY3QgQ1NTUnVsZUxpc3RdCitydWxlcyBsZW5ndGg6
IDEKKz09IENyb3NzLU9yaWdpbiB0byBTYW1lLU9yaWdpbiwgY29ycyBtb2RlLCBmYWlsaW5nIGNv
cnMgY2hlY2sgPT0KK2Nzc1J1bGVzOiBudWxsCitydWxlczogbnVsbAogVGVzdCBlbmRzLgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jYW5ub3QtcmVhZC1jc3Ny
dWxlcy1yZWRpcmVjdC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jYW5u
b3QtcmVhZC1jc3NydWxlcy1yZWRpcmVjdC5odG1sCmluZGV4IGE0NWEzODUwYjI5NWMzMzVjNWVm
MDMyMDNiZDY3OWZkZDE3NDRmNzIuLmNmZWY5YjU2OTYyY2E3NThiOTQ3ZGRlZTNhZjQ4NjUwNGYx
NmFiMGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY2Fubm90
LXJlYWQtY3NzcnVsZXMtcmVkaXJlY3QuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3NlY3VyaXR5L2Nhbm5vdC1yZWFkLWNzc3J1bGVzLXJlZGlyZWN0Lmh0bWwKQEAgLTUsNiArNSwx
MiBAQAogICAgICAgaHJlZj0iL3Jlc291cmNlcy9yZWRpcmVjdC5waHA/dXJsPWh0dHA6Ly9sb2Nh
bGhvc3Q6ODAwMC9zZWN1cml0eS9yZXNvdXJjZXMvY3NzU3R5bGUuY3NzIj4KIDxsaW5rIHJlbD0i
c3R5bGVzaGVldCIKICAgICAgIGhyZWY9Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9yZXNvdXJjZXMv
cmVkaXJlY3QucGhwP3VybD1odHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvcmVzb3VyY2Vz
L2Nzc1N0eWxlLmNzcyI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiCisgICAgICBocmVmPSIvcmVz
b3VyY2VzL3JlZGlyZWN0LnBocD91cmw9aHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L3Jl
c291cmNlcy9jc3NTdHlsZS5jc3MiIGNyb3Nzb3JpZ2luPSIiPgorPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IgorICAgICAgaHJlZj0iaHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L3Jlc291cmNl
cy9yZWRpcmVjdC1hbGxvdy1zdGFyLnBocD91cmw9aHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3Vy
aXR5L3Jlc291cmNlcy94b3JpZ2luY3NzMS1hbGxvdy1zdGFyLnBocCIgY3Jvc3NvcmlnaW49IiI+
Cis8bGluayByZWw9InN0eWxlc2hlZXQiCisgICAgICBocmVmPSJodHRwOi8vbG9jYWxob3N0Ojgw
MDAvcmVzb3VyY2VzL3JlZGlyZWN0LnBocD91cmw9aHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3Vy
aXR5L3Jlc291cmNlcy94b3JpZ2luY3NzMS5jc3MiIGNyb3Nzb3JpZ2luPSIiPgogPHNjcmlwdD4K
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikKICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKQEAg
LTE1LDE2ICsyMSwzOCBAQCBmdW5jdGlvbiBsb2cobXNnKSB7CiAgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoImNvbnNvbGUiKS5hcHBlbmRDaGlsZChkaXYpOwogfQogCitmdW5jdGlvbiBjaGVj
a0NTU1J1bGVzKHNoZWV0KQoreworICAgIHRyeSB7CisgICAgICAgIHZhciBjc3NSdWxlcyA9IHNo
ZWV0LmNzc1J1bGVzOworICAgICAgICBsb2coImNzc1J1bGVzOiAiICsgY3NzUnVsZXMpOworICAg
ICAgICBpZiAoY3NzUnVsZXMpCisgICAgICAgICAgICBsb2coImNzc1J1bGVzIGxlbmd0aDogIiAr
IGNzc1J1bGVzLmxlbmd0aCk7CisgICAgfSBjYXRjaChlKSB7CisgICAgICAgIGxvZygiZXhjZXB0
aW9uIHRocm93biBmb3IgY3NzUnVsZXM6ICIgKyBlKTsKKyAgICB9CisgICAgdHJ5IHsKKyAgICAg
ICAgdmFyIHJ1bGVzID0gc2hlZXQucnVsZXM7CisgICAgICAgIGxvZygicnVsZXM6ICIgKyBydWxl
cyk7CisgICAgICAgIGlmIChydWxlcykKKyAgICAgICAgICAgIGxvZygicnVsZXMgbGVuZ3RoOiAi
ICsgcnVsZXMubGVuZ3RoKTsKKyAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgbG9nKCJleGNlcHRp
b24gdGhyb3duIGZvciBydWxlczogIiArIGUpOworICAgIH0KK30KKwogd2luZG93Lm9ubG9hZCA9
IGZ1bmN0aW9uKCkgewogICAgIGxvZygiVGVzdCBiZWdpbnMuIik7Ci0gICAgbG9nKCI9PSBTYW1l
LU9yaWdpbiB0byBDcm9zcy1PcmlnaW4gPT0iKTsKLSAgICB2YXIgc2hlZXQxID0gZG9jdW1lbnQu
c3R5bGVTaGVldHNbMF07Ci0gICAgbG9nKCJjc3NSdWxlczogIiArIHNoZWV0MS5jc3NSdWxlcyk7
Ci0gICAgbG9nKCJydWxlczogIiArIHNoZWV0MS5ydWxlcyk7Ci0gICAgbG9nKCI9PSBDcm9zcy1P
cmlnaW4gdG8gU2FtZS1PcmlnaW4gPT0iKTsKLSAgICB2YXIgc2hlZXQyID0gZG9jdW1lbnQuc3R5
bGVTaGVldHNbMV07Ci0gICAgbG9nKCJjc3NSdWxlczogIiArIHNoZWV0Mi5jc3NSdWxlcyk7Ci0g
ICAgbG9nKCJydWxlczogIiArIHNoZWV0Mi5ydWxlcyk7CisgICAgbG9nKCI9PSBTYW1lLU9yaWdp
biB0byBDcm9zcy1PcmlnaW4sIG5vLWNvcnMgbW9kZSA9PSIpOworICAgIGNoZWNrQ1NTUnVsZXMo
ZG9jdW1lbnQuc3R5bGVTaGVldHNbMF0pOworICAgIGxvZygiPT0gQ3Jvc3MtT3JpZ2luIHRvIFNh
bWUtT3JpZ2luLCBuby1jb3JzIG1vZGUgPT0iKTsKKyAgICBjaGVja0NTU1J1bGVzKGRvY3VtZW50
LnN0eWxlU2hlZXRzWzFdKTsKKyAgICBsb2coIj09IFNhbWUtT3JpZ2luIHRvIFNhbWUtT3JpZ2lu
LCBjb3JzIG1vZGUgPT0iKTsKKyAgICBjaGVja0NTU1J1bGVzKGRvY3VtZW50LnN0eWxlU2hlZXRz
WzJdKTsKKyAgICBsb2coIj09IENyb3NzLU9yaWdpbiB0byBTYW1lLU9yaWdpbiwgY29ycyBtb2Rl
LCBzdWNjZXNzZnVsIGNvcnMgY2hlY2sgPT0iKTsKKyAgICBjaGVja0NTU1J1bGVzKGRvY3VtZW50
LnN0eWxlU2hlZXRzWzNdKTsKKyAgICBsb2coIj09IENyb3NzLU9yaWdpbiB0byBTYW1lLU9yaWdp
biwgY29ycyBtb2RlLCBmYWlsaW5nIGNvcnMgY2hlY2sgPT0iKTsKKyAgICBjaGVja0NTU1J1bGVz
KGRvY3VtZW50LnN0eWxlU2hlZXRzWzRdKTsKICAgICBsb2coIlRlc3QgZW5kcy4iKTsKIH0KIDwv
c2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jYW5u
b3QtcmVhZC1jc3NydWxlcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9j
YW5ub3QtcmVhZC1jc3NydWxlcy5odG1sCmluZGV4IDYyNjA5MmJkNDNkOTg1ZjE4MGQ0ZmNmY2E4
OTg3ZDcwZDYxMDQwYjUuLjYzZmQ2Y2UxODA5NjhlNDM4MTBiZGVmODM3OGFlZGUwM2Y2ZTUxYmIg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY2Fubm90LXJlYWQt
Y3NzcnVsZXMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Nhbm5v
dC1yZWFkLWNzc3J1bGVzLmh0bWwKQEAgLTQsNiArNCwxMCBAQAogPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IgogICAgICAgaHJlZj0iaHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L3Jlc291cmNl
cy9jc3NTdHlsZS5jc3MiPgogPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMv
Y3NzU3R5bGUuY3NzIj4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIKKyAgICAgIGhyZWY9Imh0dHA6
Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9yZXNvdXJjZXMvY3NzU3R5bGUuY3NzIiBjcm9zc29y
aWdpbj0iIj4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIKKyAgICAgIGhyZWY9Imh0dHA6Ly9sb2Nh
bGhvc3Q6ODAwMC9zZWN1cml0eS9yZXNvdXJjZXMveG9yaWdpbmNzczEtYWxsb3ctc3Rhci5waHAi
IGNyb3Nzb3JpZ2luPSIiPgogPHNjcmlwdD4KIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKICAgICB0
ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKQEAgLTE0LDE2ICsxOCwzNiBAQCBmdW5jdGlvbiBsb2co
bXNnKSB7CiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5hcHBlbmRDaGls
ZChkaXYpOwogfQogCitmdW5jdGlvbiBjaGVja0NTU1J1bGVzKHNoZWV0KQoreworICAgIHRyeSB7
CisgICAgICAgIHZhciBjc3NSdWxlcyA9IHNoZWV0LmNzc1J1bGVzOworICAgICAgICBsb2coImNz
c1J1bGVzOiAiICsgY3NzUnVsZXMpOworICAgICAgICBpZiAoY3NzUnVsZXMpCisgICAgICAgICAg
ICBsb2coImNzc1J1bGVzIGxlbmd0aDogIiArIGNzc1J1bGVzLmxlbmd0aCk7CisgICAgfSBjYXRj
aChlKSB7CisgICAgICAgIGxvZygiZXhjZXB0aW9uIHRocm93biBmb3IgY3NzUnVsZXM6ICIgKyBl
KTsKKyAgICB9CisgICAgdHJ5IHsKKyAgICAgICAgdmFyIHJ1bGVzID0gc2hlZXQucnVsZXM7Cisg
ICAgICAgIGxvZygicnVsZXM6ICIgKyBydWxlcyk7CisgICAgICAgIGlmIChydWxlcykKKyAgICAg
ICAgICAgIGxvZygicnVsZXMgbGVuZ3RoOiAiICsgcnVsZXMubGVuZ3RoKTsKKyAgICB9IGNhdGNo
KGUpIHsKKyAgICAgICAgbG9nKCJleGNlcHRpb24gdGhyb3duIGZvciBydWxlczogIiArIGUpOwor
ICAgIH0KK30KKwogd2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkgewogICAgIGxvZygiVGVzdCBi
ZWdpbnMuIik7Ci0gICAgbG9nKCI9PSBDcm9zcy1PcmlnaW4gPT0iKTsKLSAgICB2YXIgc2hlZXQx
ID0gZG9jdW1lbnQuc3R5bGVTaGVldHNbMF07Ci0gICAgbG9nKCJjc3NSdWxlczogIiArIHNoZWV0
MS5jc3NSdWxlcyk7Ci0gICAgbG9nKCJydWxlczogIiArIHNoZWV0MS5ydWxlcyk7Ci0gICAgbG9n
KCI9PSBTYW1lLU9yaWdpbiA9PSIpOwotICAgIHZhciBzaGVldDIgPSBkb2N1bWVudC5zdHlsZVNo
ZWV0c1sxXTsKLSAgICBsb2coImNzc1J1bGVzOiAiICsgc2hlZXQyLmNzc1J1bGVzKTsKLSAgICBs
b2coInJ1bGVzOiAiICsgc2hlZXQyLnJ1bGVzKTsKKyAgICBsb2coIj09IENyb3NzLU9yaWdpbiBy
ZXNvdXJjZSwgbm8tY29ycyBtb2RlID09Iik7CisgICAgY2hlY2tDU1NSdWxlcyhkb2N1bWVudC5z
dHlsZVNoZWV0c1swXSk7CisgICAgbG9nKCI9PSBTYW1lLU9yaWdpbiByZXNvdXJjZSwgbm8tY29y
cyBtb2RlID09Iik7CisgICAgY2hlY2tDU1NSdWxlcyhkb2N1bWVudC5zdHlsZVNoZWV0c1sxXSk7
CisgICAgbG9nKCI9PSBDcm9zcy1PcmlnaW4gcmVzb3VyY2UsIGNvcnMgbW9kZSwgZmFpbGluZyBj
b3JzIGNoZWNrID09Iik7CisgICAgY2hlY2tDU1NSdWxlcyhkb2N1bWVudC5zdHlsZVNoZWV0c1sy
XSk7CisgICAgbG9nKCI9PSBDcm9zcy1PcmlnaW4gcmVzb3VyY2UsIGNvcnMgbW9kZSwgc3VjY2Vz
c2Z1bCBjb3JzIGNoZWNrID09Iik7CisgICAgY2hlY2tDU1NSdWxlcyhkb2N1bWVudC5zdHlsZVNo
ZWV0c1szXSk7CiAgICAgbG9nKCJUZXN0IGVuZHMuIik7CiB9CiA8L3NjcmlwdD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3Mtb3JpZ2luLWNzcy05Lmh0
bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3NzLW9yaWdpbi1jc3MtOS5o
dG1sCmluZGV4IDYxYjI1MDI0OGFiYTkxYjQ4ZmYyOGI0MWVmNGZhZWU0NDc3YTc1MjQuLjViOTA2
MWVmYjkxNmQyYTg3ZWI4NTkzNzMxYzEzYzI3NTA0NzQ2ZmYgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3Mtb3JpZ2luLWNzcy05Lmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1vcmlnaW4tY3NzLTkuaHRtbApAQCAt
MjEsOCArMjEsNyBAQCBmdW5jdGlvbiBjaGVja0NTU0xvYWRpbmcoaWQsIGV4cGVjdFRvSW5jbHVk
ZU9yaWdpbiwgZXhwZWN0VmlzaWJpbGl0eSkKIHsKICAgICBleHBlY3RlZENvbG9yID0gZXhwZWN0
VG9JbmNsdWRlT3JpZ2luID8gInJnYigyNTUsIDI1NSwgMCkiIDogInJnYigwLCAwLCAyNTUpIjsK
ICAgICBhc3NlcnRfZXF1YWxzKGdldEJhY2tncm91bmRDb2xvckZvcklkKGlkKSwgZXhwZWN0ZWRD
b2xvcik7Ci0gICAgLy8gRklYTUU6IGNzc1J1bGVzIHNob3VsZCBiZSBtYWRlIHZpc2libGUgYWNj
b3JkaW5nIHJlc291cmNlIHRhaW50ZWQgc3RhdHVzLCBub3Qgb25seSBiYXNlZCBvbiB0aGUgcmVz
b3VyY2UgVVJMIGJlaW5nIGNyb3NzIG9yaWdpbi4KLSAgICAvLyBhc3NlcnRfZXF1YWxzKGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJsaW5rLSIgKyBpZCkuc2hlZXQuY3NzUnVsZXMgIT09IG51bGws
IGV4cGVjdFZpc2liaWxpdHkpOworICAgIGFzc2VydF9lcXVhbHMoZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImxpbmstIiArIGlkKS5zaGVldC5jc3NSdWxlcyAhPT0gbnVsbCwgZXhwZWN0VmlzaWJp
bGl0eSk7CiB9CiAKIHZhciBvbmxvYWRUZXN0ID0gYXN5bmNfdGVzdCgiIFRlc3RpbmcgdGhhdCBs
aW5rIGVsZW1lbnQgdG8gbG9hZCBzdHlsZXNoZWV0cyBjb3JyZWN0bHkgaGFuZGxlIGNyb3Nzb3Jp
Z2luIG1vZGUuIik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5
L3Jlc291cmNlcy94b3JpZ2luY3NzMS1hbGxvdy1zdGFyLnBocCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvc2VjdXJpdHkvcmVzb3VyY2VzL3hvcmlnaW5jc3MxLWFsbG93LXN0YXIucGhwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjQ0Nzk4NDQxNDhmNDA5ZDIwNDdiYzIwN2JiZTJlM2Y1YTQ0NjAzNzgKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Jlc291cmNlcy94b3Jp
Z2luY3NzMS1hbGxvdy1zdGFyLnBocApAQCAtMCwwICsxLDExIEBACis8P3BocAoraGVhZGVyKCJB
Y2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW46ICoiKTsKKworJG5hbWUgPSAneG9yaWdpbmNzczEu
Y3NzJzsKKyRmcCA9IGZvcGVuKCRuYW1lLCAncmInKTsKK2hlYWRlcigiQ29udGVudC1UeXBlOiB0
ZXh0L2NzcyIpOworaGVhZGVyKCJDb250ZW50LUxlbmd0aDogIiAuIGZpbGVzaXplKCRuYW1lKSk7
CisKK2ZwYXNzdGhydSgkZnApOworZXhpdDsKKz8+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>287949</attachid>
            <date>2016-09-05 06:58:44 -0700</date>
            <delta_ts>2016-09-05 07:28:17 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-158728-20160905155621.patch</filename>
            <type>text/plain</type>
            <size>23651</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA1NDUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjM3MDBiZjE0OTMyMTgw
OTc5NjU0Yjk0MThmNWEzOTdhMTAyY2ZhMy4uNTM4YmNmZmIwODgwZmJiMDM5YjExYThhNDhlN2I1
Yjk3YWU3NzBmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQ0IEBACiAyMDE2LTA5LTA1ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAorICAgICAgICBDbGVhbiBDU1Mgc3R5bGVz
aGVldHMgc2hvdWxkIGJlIGFjY2Vzc2libGUgZnJvbSBKYXZhU2NyaXB0CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTg3MjgKKworICAgICAgICBSZXZp
ZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBDb3ZlcmVkIGJ5IHVwZGF0ZWQgdGVzdHMu
CisKKyAgICAgICAgTWFraW5nIHVzZSBvZiB0aGUgcmVzb3VyY2UgcmVzcG9uc2UgdHlwZSB0byBl
dmFsdWF0ZSB3aGV0aGVyIHRvIG1ha2UgdGhlIENTUyBzdHlsZXNoZWV0cyB2aXNpYmxlCisgICAg
ICAgIGZvciBzdHlsZXNoZWV0IGxpbmsgZWxlbWVudHMgYW5kIGZvciBzdHlsZXNoZWV0IHByb2Nl
c3NpbmcgaW5zdHJ1Y3Rpb25zLgorICAgICAgICBJZGVhbGx5LCB0aGUgb3JpZ2luIGZsYWcgc2hv
dWxkIGJlIGEgYm9vbGVhbi4KKworICAgICAgICBUbyBrZWVwIGJlaGF2aW9yIGNvbnNpc3RlbnQg
aW4gY29ycy1jaGVjay11bmF3YXJlIGNhc2VzLCB0aGUgZmxhZyBtaWdodCByZW1haW4gdW5zZXQu
CisgICAgICAgIEluIHRoYXQgY2FzZSwgdGhlIGJlaGF2aW9yIHJlbWFpbnMgdGhlIHNhbWUgKGNo
ZWNraW5nIG9mIHRoZSBzdHlsZXNoZWV0IFVSTCkuCisgICAgICAgIFRoZSBvcmlnaW4gZmxhZyBp
cyBzZXQgdG8gdHJ1ZSBvciBmYWxzZSBvbmx5IGluIGNhc2Ugb2YgZmV0Y2ggbW9kZSBiZWluZyBz
ZXQgdG8gY29ycyB1c2luZyB0aGUgY3Jvc3NvcmlnaW4gYXR0cmlidXRlLgorCisgICAgICAgIFVw
ZGF0ZWQgQ1NTU3R5bGVTaGVldDo6Y3JlYXRlIHRvIHRha2UgYSBOb2RlIHJlZmVyZW5jZS4gVXBk
YXRlZCBjYWxsZXJzIGFjY29yZGluZ2x5LgorCisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMv
Q29udGVudEV4dGVuc2lvblN0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVu
dEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb25TdHlsZVNoZWV0OjpDb250ZW50RXh0ZW5zaW9u
U3R5bGVTaGVldCk6IFVwZGF0ZWQgdG8gcGFzcyBhIE5vZGUgcmVmZXJlbmNlIGFuZCBub3QgcG9p
bnRlci4KKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NTdHlsZVNoZWV0OjpjcmVhdGUpOiBNYWtlcyBvcmlnaW4gZmxhZyB1bmRlZmluZWQgaWYg
Ym9vbGVhbiBwYXJhbWV0ZXIgaXMgbm90IHBhc3NlZC4KKyAgICAgICAgT3RoZXJ3aXNlIG9yaWdp
biBmbGFnIGlzIHNldCBhY2NvcmRpbmcgZ2l2ZW4gYm9vbGVhbiB2YWx1ZS4KKyAgICAgICAgKFdl
YkNvcmU6OkNTU1N0eWxlU2hlZXQ6OmNyZWF0ZUlubGluZSk6IE1ha2VzIG9yaWdpbiBmbGFnIHNl
dCB0byB0cnVlLgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTaGVldDo6Q1NTU3R5bGVTaGVl
dCk6IEFkZGluZyBvcmlnaW4gZmxhZyBpbml0aWFsaXphdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6
OkNTU1N0eWxlU2hlZXQ6OmNhbkFjY2Vzc1J1bGVzKTogUmV0dXJuaW5nIGFjY29yZGluZyB0aGUg
b3JpZ2luIGZsYWcgaWYgc2V0LgorICAgICAgICBSZXR1cm5pbmcgYXMgYmVmb3JlIGluIGNhc2Ug
dGhlIGZsYWcgaXMgbm90IHNldC4KKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTaGVldC5oOiBBZGRp
bmcgb3JpZ2luIGNsZWFuIGZsYWcuCisgICAgICAgICogZG9tL0V4dGVuc2lvblN0eWxlU2hlZXRz
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvblN0eWxlU2hlZXRzOjphZGRVc2VyU3R5
bGVTaGVldCk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25TdHlsZVNoZWV0czo6YWRkQXV0
aG9yU3R5bGVTaGVldEZvclRlc3RpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uU3R5
bGVTaGVldHM6Om1heWJlQWRkQ29udGVudEV4dGVuc2lvblNoZWV0KToKKyAgICAgICAgKiBodG1s
L0hUTUxMaW5rRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6
OmluaXRpYWxpemVTdHlsZVNoZWV0KTogSGVscGVyIHJvdXRpbmUgdXNlZCBpbiBzZXRDU1NTdHls
ZVNoZWV0LgorICAgICAgICBTZXRzIG9yaWdpbiBjbGVhbiBmbGFnIGlmIHRoZSByZXNvdXJjZSBp
cyBjbGVhbi4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxMaW5rRWxlbWVudDo6c2V0Q1NTU3R5bGVT
aGVldCk6IE1ha2luZyB1c2Ugb2YgaW5pdGlhbGl6ZVN0eWxlU2hlZXQuCisgICAgICAgICogaHRt
bC9IVE1MTGlua0VsZW1lbnQuaDoKKworMjAxNi0wOS0wNSAgWW91ZW5uIEZhYmxldCAgPHlvdWVu
bkBhcHBsZS5jb20+CisKICAgICAgICAgQ2FjaGVkUmVzb3VyY2VMb2FkZXIgaXMgbm90IHRha2lu
ZyBpbnRvIGFjY291bnQgZmV0Y2ggb3B0aW9ucyB0byB1c2Ugb3Igbm90IGNhY2hlZCByZXNvdXJj
ZXMKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MTM4
OQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50
RXh0ZW5zaW9uU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9u
cy9Db250ZW50RXh0ZW5zaW9uU3R5bGVTaGVldC5jcHAKaW5kZXggNDRkN2M1NzM4MGE1MGU1OGFi
ZjJkYWYzZjdmZjMxZGJiMDRkYzk3Yi4uZTI0YTM2NjlkODcyZjYwYzQyMjUwNmIyODZlYWZjM2U2
YWZmNDJlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29u
dGVudEV4dGVuc2lvblN0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRl
eHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25TdHlsZVNoZWV0LmNwcApAQCAtMzgsNyArMzgsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgQ29udGVudEV4dGVuc2lvbnMgewogCiBD
b250ZW50RXh0ZW5zaW9uU3R5bGVTaGVldDo6Q29udGVudEV4dGVuc2lvblN0eWxlU2hlZXQoRG9j
dW1lbnQmIGRvY3VtZW50KQotICAgIDogbV9zdHlsZVNoZWV0KENTU1N0eWxlU2hlZXQ6OmNyZWF0
ZShTdHlsZVNoZWV0Q29udGVudHM6OmNyZWF0ZSgpLCAmZG9jdW1lbnQpKQorICAgIDogbV9zdHls
ZVNoZWV0KENTU1N0eWxlU2hlZXQ6OmNyZWF0ZShTdHlsZVNoZWV0Q29udGVudHM6OmNyZWF0ZSgp
LCBkb2N1bWVudCkpCiB7CiAgICAgbV9zdHlsZVNoZWV0LT5jb250ZW50cygpLnNldElzVXNlclN0
eWxlU2hlZXQodHJ1ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5
bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAKaW5kZXgg
MTczZWJiZDdjZjk5YWQwZTI1ODdlY2RmZWNhYjgxZmVmYjg1NjE1Yi4uMTE2N2IwMzg1YmRkZTc2
YmU0YTg3MzExNmI4MzNhY2NlN2Y5ZDBkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1N0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0
LmNwcApAQCAtNzgsMTkgKzc4LDE5IEBAIHN0YXRpYyBib29sIGlzQWNjZXB0YWJsZUNTU1N0eWxl
U2hlZXRQYXJlbnQoTm9kZSogcGFyZW50Tm9kZSkKICNlbmRpZgogCiBSZWY8Q1NTU3R5bGVTaGVl
dD4gQ1NTU3R5bGVTaGVldDo6Y3JlYXRlKFJlZjxTdHlsZVNoZWV0Q29udGVudHM+JiYgc2hlZXQs
IENTU0ltcG9ydFJ1bGUqIG93bmVyUnVsZSkKLXsgCit7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgQ1NTU3R5bGVTaGVldChXVEZNb3ZlKHNoZWV0KSwgb3duZXJSdWxlKSk7CiB9CiAKLVJlZjxD
U1NTdHlsZVNoZWV0PiBDU1NTdHlsZVNoZWV0OjpjcmVhdGUoUmVmPFN0eWxlU2hlZXRDb250ZW50
cz4mJiBzaGVldCwgTm9kZSogb3duZXJOb2RlKQoteyAKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBDU1NTdHlsZVNoZWV0KFdURk1vdmUoc2hlZXQpLCBvd25lck5vZGUsIFRleHRQb3NpdGlvbjo6
bWluaW11bVBvc2l0aW9uKCksIGZhbHNlKSk7CitSZWY8Q1NTU3R5bGVTaGVldD4gQ1NTU3R5bGVT
aGVldDo6Y3JlYXRlKFJlZjxTdHlsZVNoZWV0Q29udGVudHM+JiYgc2hlZXQsIE5vZGUmIG93bmVy
Tm9kZSwgY29uc3QgT3B0aW9uYWw8Ym9vbD4mIGlzQ2xlYW5PcmlnaW4pCit7CisgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgQ1NTU3R5bGVTaGVldChXVEZNb3ZlKHNoZWV0KSwgb3duZXJOb2RlLCBU
ZXh0UG9zaXRpb246Om1pbmltdW1Qb3NpdGlvbigpLCBmYWxzZSwgaXNDbGVhbk9yaWdpbikpOwog
fQogCiBSZWY8Q1NTU3R5bGVTaGVldD4gQ1NTU3R5bGVTaGVldDo6Y3JlYXRlSW5saW5lKE5vZGUm
IG93bmVyTm9kZSwgY29uc3QgVVJMJiBiYXNlVVJMLCBjb25zdCBUZXh0UG9zaXRpb24mIHN0YXJ0
UG9zaXRpb24sIGNvbnN0IFN0cmluZyYgZW5jb2RpbmcpCiB7CiAgICAgQ1NTUGFyc2VyQ29udGV4
dCBwYXJzZXJDb250ZXh0KG93bmVyTm9kZS5kb2N1bWVudCgpLCBiYXNlVVJMLCBlbmNvZGluZyk7
Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTU3R5bGVTaGVldChTdHlsZVNoZWV0Q29udGVu
dHM6OmNyZWF0ZShiYXNlVVJMLnN0cmluZygpLCBwYXJzZXJDb250ZXh0KSwgJm93bmVyTm9kZSwg
c3RhcnRQb3NpdGlvbiwgdHJ1ZSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENTU1N0eWxl
U2hlZXQoU3R5bGVTaGVldENvbnRlbnRzOjpjcmVhdGUoYmFzZVVSTC5zdHJpbmcoKSwgcGFyc2Vy
Q29udGV4dCksIG93bmVyTm9kZSwgc3RhcnRQb3NpdGlvbiwgdHJ1ZSwgdHJ1ZSkpOwogfQogCiBD
U1NTdHlsZVNoZWV0OjpDU1NTdHlsZVNoZWV0KFJlZjxTdHlsZVNoZWV0Q29udGVudHM+JiYgY29u
dGVudHMsIENTU0ltcG9ydFJ1bGUqIG93bmVyUnVsZSkKQEAgLTEwNSwxNiArMTA1LDE3IEBAIENT
U1N0eWxlU2hlZXQ6OkNTU1N0eWxlU2hlZXQoUmVmPFN0eWxlU2hlZXRDb250ZW50cz4mJiBjb250
ZW50cywgQ1NTSW1wb3J0UnVsZSoKICAgICBtX2NvbnRlbnRzLT5yZWdpc3RlckNsaWVudCh0aGlz
KTsKIH0KIAotQ1NTU3R5bGVTaGVldDo6Q1NTU3R5bGVTaGVldChSZWY8U3R5bGVTaGVldENvbnRl
bnRzPiYmIGNvbnRlbnRzLCBOb2RlKiBvd25lck5vZGUsIGNvbnN0IFRleHRQb3NpdGlvbiYgc3Rh
cnRQb3NpdGlvbiwgYm9vbCBpc0lubGluZVN0eWxlc2hlZXQpCitDU1NTdHlsZVNoZWV0OjpDU1NT
dHlsZVNoZWV0KFJlZjxTdHlsZVNoZWV0Q29udGVudHM+JiYgY29udGVudHMsIE5vZGUmIG93bmVy
Tm9kZSwgY29uc3QgVGV4dFBvc2l0aW9uJiBzdGFydFBvc2l0aW9uLCBib29sIGlzSW5saW5lU3R5
bGVzaGVldCwgY29uc3QgT3B0aW9uYWw8Ym9vbD4mIGlzT3JpZ2luQ2xlYW4pCiAgICAgOiBtX2Nv
bnRlbnRzKFdURk1vdmUoY29udGVudHMpKQogICAgICwgbV9pc0lubGluZVN0eWxlc2hlZXQoaXNJ
bmxpbmVTdHlsZXNoZWV0KQogICAgICwgbV9pc0Rpc2FibGVkKGZhbHNlKQogICAgICwgbV9tdXRh
dGVkUnVsZXMoZmFsc2UpCi0gICAgLCBtX293bmVyTm9kZShvd25lck5vZGUpCisgICAgLCBtX2lz
T3JpZ2luQ2xlYW4oaXNPcmlnaW5DbGVhbikKKyAgICAsIG1fb3duZXJOb2RlKCZvd25lck5vZGUp
CiAgICAgLCBtX293bmVyUnVsZSgwKQogICAgICwgbV9zdGFydFBvc2l0aW9uKHN0YXJ0UG9zaXRp
b24pCiB7Ci0gICAgQVNTRVJUKGlzQWNjZXB0YWJsZUNTU1N0eWxlU2hlZXRQYXJlbnQob3duZXJO
b2RlKSk7CisgICAgQVNTRVJUKGlzQWNjZXB0YWJsZUNTU1N0eWxlU2hlZXRQYXJlbnQoJm93bmVy
Tm9kZSkpOwogICAgIG1fY29udGVudHMtPnJlZ2lzdGVyQ2xpZW50KHRoaXMpOwogfQogCkBAIC0y
NTgsMTcgKzI1OSwxNiBAQCBDU1NSdWxlKiBDU1NTdHlsZVNoZWV0OjppdGVtKHVuc2lnbmVkIGlu
ZGV4KQogCiBib29sIENTU1N0eWxlU2hlZXQ6OmNhbkFjY2Vzc1J1bGVzKCkgY29uc3QKIHsKLSAg
ICBpZiAobV9pc0lubGluZVN0eWxlc2hlZXQpCi0gICAgICAgIHJldHVybiB0cnVlOworICAgIGlm
IChtX2lzT3JpZ2luQ2xlYW4pCisgICAgICAgIHJldHVybiBtX2lzT3JpZ2luQ2xlYW4udmFsdWUo
KTsKKwogICAgIFVSTCBiYXNlVVJMID0gbV9jb250ZW50cy0+YmFzZVVSTCgpOwogICAgIGlmIChi
YXNlVVJMLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgRG9jdW1lbnQqIGRv
Y3VtZW50ID0gb3duZXJEb2N1bWVudCgpOwogICAgIGlmICghZG9jdW1lbnQpCiAgICAgICAgIHJl
dHVybiB0cnVlOwotICAgIGlmIChkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuUmVxdWVz
dChiYXNlVVJMKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuIGZhbHNlOworICAg
IHJldHVybiBkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuUmVxdWVzdChiYXNlVVJMKTsK
IH0KIAogUmVmUHRyPENTU1J1bGVMaXN0PiBDU1NTdHlsZVNoZWV0OjpydWxlcygpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5oIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1N0eWxlU2hlZXQuaAppbmRleCBlMTIyNWJlYzljZjU0NTc0NGM5ZjNjYTRhNTM4YzE3
N2RiYzU1ZjNmLi40YmQxMTExNGY5ZGE0M2U0ZmZmMmJmYTY3ODMzMjQzYjU1YzhiNDJkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmgKQEAgLTQ5LDcgKzQ5LDcgQEAgdHlwZWRlZiBpbnQg
RXhjZXB0aW9uQ29kZTsKIGNsYXNzIENTU1N0eWxlU2hlZXQgZmluYWwgOiBwdWJsaWMgU3R5bGVT
aGVldCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxDU1NTdHlsZVNoZWV0PiBjcmVhdGUoUmVm
PFN0eWxlU2hlZXRDb250ZW50cz4mJiwgQ1NTSW1wb3J0UnVsZSogb3duZXJSdWxlID0gMCk7Ci0g
ICAgc3RhdGljIFJlZjxDU1NTdHlsZVNoZWV0PiBjcmVhdGUoUmVmPFN0eWxlU2hlZXRDb250ZW50
cz4mJiwgTm9kZSogb3duZXJOb2RlKTsKKyAgICBzdGF0aWMgUmVmPENTU1N0eWxlU2hlZXQ+IGNy
ZWF0ZShSZWY8U3R5bGVTaGVldENvbnRlbnRzPiYmLCBOb2RlJiBvd25lck5vZGUsIGNvbnN0IE9w
dGlvbmFsPGJvb2w+JiBpc09yaWdpbkNsZWFuID0gTnVsbG9wdCk7CiAgICAgc3RhdGljIFJlZjxD
U1NTdHlsZVNoZWV0PiBjcmVhdGVJbmxpbmUoTm9kZSYsIGNvbnN0IFVSTCYsIGNvbnN0IFRleHRQ
b3NpdGlvbiYgc3RhcnRQb3NpdGlvbiA9IFRleHRQb3NpdGlvbjo6bWluaW11bVBvc2l0aW9uKCks
IGNvbnN0IFN0cmluZyYgZW5jb2RpbmcgPSBTdHJpbmcoKSk7CiAKICAgICB2aXJ0dWFsIH5DU1NT
dHlsZVNoZWV0KCk7CkBAIC0xMjUsMTYgKzEyNSwxOCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAg
IENTU1N0eWxlU2hlZXQoUmVmPFN0eWxlU2hlZXRDb250ZW50cz4mJiwgQ1NTSW1wb3J0UnVsZSog
b3duZXJSdWxlKTsKICAgICBDU1NTdHlsZVNoZWV0KFJlZjxTdHlsZVNoZWV0Q29udGVudHM+JiYs
IE5vZGUqIG93bmVyTm9kZSwgY29uc3QgVGV4dFBvc2l0aW9uJiBzdGFydFBvc2l0aW9uLCBib29s
IGlzSW5saW5lU3R5bGVzaGVldCk7CisgICAgQ1NTU3R5bGVTaGVldChSZWY8U3R5bGVTaGVldENv
bnRlbnRzPiYmLCBOb2RlJiBvd25lck5vZGUsIGNvbnN0IFRleHRQb3NpdGlvbiYgc3RhcnRQb3Np
dGlvbiwgYm9vbCBpc0lubGluZVN0eWxlc2hlZXQsIGNvbnN0IE9wdGlvbmFsPGJvb2w+Jik7CiAK
ICAgICBib29sIGlzQ1NTU3R5bGVTaGVldCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0K
ICAgICBTdHJpbmcgdHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgidGV4
dC9jc3MiKTsgfQogCiAgICAgYm9vbCBjYW5BY2Nlc3NSdWxlcygpIGNvbnN0OwotICAgIAorCiAg
ICAgUmVmPFN0eWxlU2hlZXRDb250ZW50cz4gbV9jb250ZW50czsKICAgICBib29sIG1faXNJbmxp
bmVTdHlsZXNoZWV0OwogICAgIGJvb2wgbV9pc0Rpc2FibGVkOwogICAgIGJvb2wgbV9tdXRhdGVk
UnVsZXM7CisgICAgT3B0aW9uYWw8Ym9vbD4gbV9pc09yaWdpbkNsZWFuOwogICAgIFN0cmluZyBt
X3RpdGxlOwogICAgIFJlZlB0cjxNZWRpYVF1ZXJ5U2V0PiBtX21lZGlhUXVlcmllczsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V4dGVuc2lvblN0eWxlU2hlZXRzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FeHRlbnNpb25TdHlsZVNoZWV0cy5jcHAKaW5kZXggZTU2OWUyMDU1
OWEwZjIyMzQ4NDBjZTVhN2ZlMDBjNDY1MGU0NDFhYi4uZjllYzRlZDdlNjlkNWQzMzVhMjE3ZDEx
YTY4NDY1N2MxNzhiNjc1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V4dGVuc2lv
blN0eWxlU2hlZXRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXh0ZW5zaW9uU3R5bGVT
aGVldHMuY3BwCkBAIC0xNjAsMTQgKzE2MCwxNCBAQCB2b2lkIEV4dGVuc2lvblN0eWxlU2hlZXRz
OjppbnZhbGlkYXRlSW5qZWN0ZWRTdHlsZVNoZWV0Q2FjaGUoKQogdm9pZCBFeHRlbnNpb25TdHls
ZVNoZWV0czo6YWRkVXNlclN0eWxlU2hlZXQoUmVmPFN0eWxlU2hlZXRDb250ZW50cz4mJiB1c2Vy
U2hlZXQpCiB7CiAgICAgQVNTRVJUKHVzZXJTaGVldC5nZXQoKS5pc1VzZXJTdHlsZVNoZWV0KCkp
OwotICAgIG1fdXNlclN0eWxlU2hlZXRzLmFwcGVuZChDU1NTdHlsZVNoZWV0OjpjcmVhdGUoV1RG
TW92ZSh1c2VyU2hlZXQpLCAmbV9kb2N1bWVudCkpOworICAgIG1fdXNlclN0eWxlU2hlZXRzLmFw
cGVuZChDU1NTdHlsZVNoZWV0OjpjcmVhdGUoV1RGTW92ZSh1c2VyU2hlZXQpLCBtX2RvY3VtZW50
KSk7CiAgICAgbV9kb2N1bWVudC5zdHlsZVJlc29sdmVyQ2hhbmdlZChSZWNhbGNTdHlsZUltbWVk
aWF0ZWx5KTsKIH0KIAogdm9pZCBFeHRlbnNpb25TdHlsZVNoZWV0czo6YWRkQXV0aG9yU3R5bGVT
aGVldEZvclRlc3RpbmcoUmVmPFN0eWxlU2hlZXRDb250ZW50cz4mJiBhdXRob3JTaGVldCkKIHsK
ICAgICBBU1NFUlQoIWF1dGhvclNoZWV0LmdldCgpLmlzVXNlclN0eWxlU2hlZXQoKSk7Ci0gICAg
bV9hdXRob3JTdHlsZVNoZWV0c0ZvclRlc3RpbmcuYXBwZW5kKENTU1N0eWxlU2hlZXQ6OmNyZWF0
ZShXVEZNb3ZlKGF1dGhvclNoZWV0KSwgJm1fZG9jdW1lbnQpKTsKKyAgICBtX2F1dGhvclN0eWxl
U2hlZXRzRm9yVGVzdGluZy5hcHBlbmQoQ1NTU3R5bGVTaGVldDo6Y3JlYXRlKFdURk1vdmUoYXV0
aG9yU2hlZXQpLCBtX2RvY3VtZW50KSk7CiAgICAgbV9kb2N1bWVudC5zdHlsZVJlc29sdmVyQ2hh
bmdlZChSZWNhbGNTdHlsZUltbWVkaWF0ZWx5KTsKIH0KIApAQCAtMTkxLDcgKzE5MSw3IEBAIHZv
aWQgRXh0ZW5zaW9uU3R5bGVTaGVldHM6Om1heWJlQWRkQ29udGVudEV4dGVuc2lvblNoZWV0KGNv
bnN0IFN0cmluZyYgaWRlbnRpZmllCiAgICAgaWYgKG1fY29udGVudEV4dGVuc2lvblNoZWV0cy5j
b250YWlucyhpZGVudGlmaWVyKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVmPENTU1N0eWxl
U2hlZXQ+IGNzc1NoZWV0ID0gQ1NTU3R5bGVTaGVldDo6Y3JlYXRlKHNoZWV0LCAmbV9kb2N1bWVu
dCk7CisgICAgUmVmPENTU1N0eWxlU2hlZXQ+IGNzc1NoZWV0ID0gQ1NTU3R5bGVTaGVldDo6Y3Jl
YXRlKHNoZWV0LCBtX2RvY3VtZW50KTsKICAgICBtX2NvbnRlbnRFeHRlbnNpb25TaGVldHMuc2V0
KGlkZW50aWZpZXIsICZjc3NTaGVldC5nZXQoKSk7CiAgICAgbV91c2VyU3R5bGVTaGVldHMuYXBw
ZW5kKGFkb3B0UmVmKGNzc1NoZWV0LmxlYWtSZWYoKSkpOwogICAgIG1fc3R5bGVSZXNvbHZlckNo
YW5nZWRUaW1lci5zdGFydE9uZVNob3QoMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxMaW5rRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxl
bWVudC5jcHAKaW5kZXggMzEyZjY2ZjVlOGIyOTNkOTNmN2E5NWE3MWFmMzMzNzIzN2QzY2Q0NS4u
MDRmMzQ5OWYzYmM2OWVkYmM5ZDU3OTc0NWY2NzdhOWJiNTJjZjBlMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcApAQCAtMzM5LDYgKzMzOSwxOCBAQCB2b2lkIEhUTUxM
aW5rRWxlbWVudDo6ZmluaXNoUGFyc2luZ0NoaWxkcmVuKCkKICAgICBIVE1MRWxlbWVudDo6Zmlu
aXNoUGFyc2luZ0NoaWxkcmVuKCk7CiB9CiAKK3ZvaWQgSFRNTExpbmtFbGVtZW50Ojppbml0aWFs
aXplU3R5bGVTaGVldChSZWY8U3R5bGVTaGVldENvbnRlbnRzPiYmIHN0eWxlU2hlZXQsIGNvbnN0
IENhY2hlZENTU1N0eWxlU2hlZXQmIGNhY2hlZFN0eWxlU2hlZXQpCit7CisgICAgLy8gRklYTUU6
IG9yaWdpbkNsZWFuIHNob3VsZCBiZSB0dXJuZWQgdG8gZmFsc2UgZXhjZXB0IGlmIGZldGNoIG1v
ZGUgaXMgQ09SUy4KKyAgICBPcHRpb25hbDxib29sPiBvcmlnaW5DbGVhbjsKKyAgICBpZiAoY2Fj
aGVkU3R5bGVTaGVldC5vcHRpb25zKCkubW9kZSA9PSBGZXRjaE9wdGlvbnM6Ok1vZGU6OkNvcnMp
CisgICAgICAgIG9yaWdpbkNsZWFuID0gY2FjaGVkU3R5bGVTaGVldC5pc0NsZWFuKCk7CisKKyAg
ICBtX3NoZWV0ID0gQ1NTU3R5bGVTaGVldDo6Y3JlYXRlKFdURk1vdmUoc3R5bGVTaGVldCksICp0
aGlzLCBvcmlnaW5DbGVhbik7CisgICAgbV9zaGVldC0+c2V0TWVkaWFRdWVyaWVzKE1lZGlhUXVl
cnlTZXQ6OmNyZWF0ZUFsbG93aW5nRGVzY3JpcHRpb25TeW50YXgobV9tZWRpYSkpOworICAgIG1f
c2hlZXQtPnNldFRpdGxlKHRpdGxlKCkpOworfQorCiB2b2lkIEhUTUxMaW5rRWxlbWVudDo6c2V0
Q1NTU3R5bGVTaGVldChjb25zdCBTdHJpbmcmIGhyZWYsIGNvbnN0IFVSTCYgYmFzZVVSTCwgY29u
c3QgU3RyaW5nJiBjaGFyc2V0LCBjb25zdCBDYWNoZWRDU1NTdHlsZVNoZWV0KiBjYWNoZWRTdHls
ZVNoZWV0KQogewogICAgIGlmICghaW5Eb2N1bWVudCgpKSB7CkBAIC0zNTgsMTAgKzM3MCw3IEBA
IHZvaWQgSFRNTExpbmtFbGVtZW50OjpzZXRDU1NTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgaHJl
ZiwgY29uc3QgVVJMJiBiYXNlVVJMLCBjCiAgICAgaWYgKFJlZlB0cjxTdHlsZVNoZWV0Q29udGVu
dHM+IHJlc3RvcmVkU2hlZXQgPSBjb25zdF9jYXN0PENhY2hlZENTU1N0eWxlU2hlZXQqPihjYWNo
ZWRTdHlsZVNoZWV0KS0+cmVzdG9yZVBhcnNlZFN0eWxlU2hlZXQocGFyc2VyQ29udGV4dCwgY2Fj
aGVQb2xpY3kpKSB7CiAgICAgICAgIEFTU0VSVChyZXN0b3JlZFNoZWV0LT5pc0NhY2hlYWJsZSgp
KTsKICAgICAgICAgQVNTRVJUKCFyZXN0b3JlZFNoZWV0LT5pc0xvYWRpbmcoKSk7Ci0KLSAgICAg
ICAgbV9zaGVldCA9IENTU1N0eWxlU2hlZXQ6OmNyZWF0ZShyZXN0b3JlZFNoZWV0LnJlbGVhc2VO
b25OdWxsKCksIHRoaXMpOwotICAgICAgICBtX3NoZWV0LT5zZXRNZWRpYVF1ZXJpZXMoTWVkaWFR
dWVyeVNldDo6Y3JlYXRlQWxsb3dpbmdEZXNjcmlwdGlvblN5bnRheChtX21lZGlhKSk7Ci0gICAg
ICAgIG1fc2hlZXQtPnNldFRpdGxlKHRpdGxlKCkpOworICAgICAgICBpbml0aWFsaXplU3R5bGVT
aGVldChyZXN0b3JlZFNoZWV0LnJlbGVhc2VOb25OdWxsKCksICpjYWNoZWRTdHlsZVNoZWV0KTsK
IAogICAgICAgICBtX2xvYWRpbmcgPSBmYWxzZTsKICAgICAgICAgc2hlZXRMb2FkZWQoKTsKQEAg
LTM3MCw5ICszNzksNyBAQCB2b2lkIEhUTUxMaW5rRWxlbWVudDo6c2V0Q1NTU3R5bGVTaGVldChj
b25zdCBTdHJpbmcmIGhyZWYsIGNvbnN0IFVSTCYgYmFzZVVSTCwgYwogICAgIH0KIAogICAgIGF1
dG8gc3R5bGVTaGVldCA9IFN0eWxlU2hlZXRDb250ZW50czo6Y3JlYXRlKGhyZWYsIHBhcnNlckNv
bnRleHQpOwotICAgIG1fc2hlZXQgPSBDU1NTdHlsZVNoZWV0OjpjcmVhdGUoc3R5bGVTaGVldC5j
b3B5UmVmKCksIHRoaXMpOwotICAgIG1fc2hlZXQtPnNldE1lZGlhUXVlcmllcyhNZWRpYVF1ZXJ5
U2V0OjpjcmVhdGVBbGxvd2luZ0Rlc2NyaXB0aW9uU3ludGF4KG1fbWVkaWEpKTsKLSAgICBtX3No
ZWV0LT5zZXRUaXRsZSh0aXRsZSgpKTsKKyAgICBpbml0aWFsaXplU3R5bGVTaGVldChzdHlsZVNo
ZWV0LmNvcHlSZWYoKSwgKmNhY2hlZFN0eWxlU2hlZXQpOwogCiAgICAgc3R5bGVTaGVldC5nZXQo
KS5wYXJzZUF1dGhvclN0eWxlU2hlZXQoY2FjaGVkU3R5bGVTaGVldCwgZG9jdW1lbnQoKS5zZWN1
cml0eU9yaWdpbigpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlu
a0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmgKaW5kZXgg
OWIwZjY5NGIwMjNjNDJiMjhjYThkMGI4ODk0ZTMwMjMyMzUwZmMxMi4uZDFlYTc2ZDBkY2JkZWRk
ZTkwMjdmY2E0YmRhOWFmMjk1NzU0NzQ0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTGlua0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxl
bWVudC5oCkBAIC04Miw2ICs4Miw4IEBAIHByaXZhdGU6CiAgICAgSW5zZXJ0aW9uTm90aWZpY2F0
aW9uUmVxdWVzdCBpbnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSYpIGZpbmFsOwogICAgIHZvaWQg
cmVtb3ZlZEZyb20oQ29udGFpbmVyTm9kZSYpIGZpbmFsOwogCisgICAgdm9pZCBpbml0aWFsaXpl
U3R5bGVTaGVldChSZWY8U3R5bGVTaGVldENvbnRlbnRzPiYmLCBjb25zdCBDYWNoZWRDU1NTdHls
ZVNoZWV0Jik7CisKICAgICAvLyBmcm9tIENhY2hlZFJlc291cmNlQ2xpZW50CiAgICAgdm9pZCBz
ZXRDU1NTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgaHJlZiwgY29uc3QgVVJMJiBiYXNlVVJMLCBj
b25zdCBTdHJpbmcmIGNoYXJzZXQsIGNvbnN0IENhY2hlZENTU1N0eWxlU2hlZXQqKSBmaW5hbDsK
ICAgICBib29sIHNoZWV0TG9hZGVkKCkgZmluYWw7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYjExMDQ1ZGVkYWQ1NWRlMTM0
MmFiZDFkODFhZTZkNTFkNWVhZTI3MC4uOTIxOTcyNGQ5Y2IwNmI5Zjc5NTNhOGNhYThmODY4ZjQ5
Y2NmNTEyNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDE5IEBACiAyMDE2LTA5LTA1ICBZb3Vlbm4gRmFibGV0
ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAorICAgICAgICBDbGVhbiBDU1Mgc3R5bGVzaGVldHMgc2hv
dWxkIGJlIGFjY2Vzc2libGUgZnJvbSBKYXZhU2NyaXB0CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTg3MjgKKworICAgICAgICBSZXZpZXdlZCBieSBE
YXJpbiBBZGxlci4KKworICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvY2Fubm90LXJlYWQt
Y3NzcnVsZXMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvY2Fu
bm90LXJlYWQtY3NzcnVsZXMtcmVkaXJlY3QtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAv
dGVzdHMvc2VjdXJpdHkvY2Fubm90LXJlYWQtY3NzcnVsZXMtcmVkaXJlY3QuaHRtbDoKKyAgICAg
ICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2Nhbm5vdC1yZWFkLWNzc3J1bGVzLmh0bWw6CisgICAg
ICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1vcmlnaW4tY3NzLTkuaHRtbDoKKyAgICAg
ICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3Jlc291cmNlcy94b3JpZ2luY3NzMS1hbGxvdy1zdGFy
LnBocDogQWRkZWQuCisKKzIwMTYtMDktMDUgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUu
Y29tPgorCiAgICAgICAgIENhY2hlZFJlc291cmNlTG9hZGVyIGlzIG5vdCB0YWtpbmcgaW50byBh
Y2NvdW50IGZldGNoIG9wdGlvbnMgdG8gdXNlIG9yIG5vdCBjYWNoZWQgcmVzb3VyY2VzCiAgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjEzODkKIApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jYW5ub3QtcmVhZC1jc3Ny
dWxlcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Nhbm5v
dC1yZWFkLWNzc3J1bGVzLWV4cGVjdGVkLnR4dAppbmRleCA3YTc4YmFiYzJhNWQ4NDQ3ZjA0YjU5
NGJiMjJkMGUyYWU0Mjk2NDM1Li43NmIzYjk3MzJhNTI5OWI1MmM4YWE5MjUyZGUzNzc1ZTJjNzM4
MTAxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Nhbm5vdC1y
ZWFkLWNzc3J1bGVzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Nl
Y3VyaXR5L2Nhbm5vdC1yZWFkLWNzc3J1bGVzLWV4cGVjdGVkLnR4dApAQCAtMSwxMCArMSwyMSBA
QAorQ09OU09MRSBNRVNTQUdFOiBPcmlnaW4gaHR0cDovLzEyNy4wLjAuMTo4MDAwIGlzIG5vdCBh
bGxvd2VkIGJ5IEFjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbi4KIFRoaXMgdGVzdCB3aGV0aGVy
IGEgc2NyaXB0IGNhbiByZWFkIHRoZSBydWxlcyBmcm9tIGEgY3Jvc3Mtb3JpZ2luIHN0eWxlIHNo
ZWV0LiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB3aHkgd2UgYmxvY2sgdGhpcywgcGxlYXNlIHNl
ZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1MjcuCiAKIFRlc3Qg
YmVnaW5zLgotPT0gQ3Jvc3MtT3JpZ2luID09Cis9PSBDcm9zcy1PcmlnaW4gcmVzb3VyY2UsIG5v
LWNvcnMgbW9kZSA9PQogY3NzUnVsZXM6IG51bGwKIHJ1bGVzOiBudWxsCi09PSBTYW1lLU9yaWdp
biA9PQorPT0gU2FtZS1PcmlnaW4gcmVzb3VyY2UsIG5vLWNvcnMgbW9kZSA9PQogY3NzUnVsZXM6
IFtvYmplY3QgQ1NTUnVsZUxpc3RdCitjc3NSdWxlcyBsZW5ndGg6IDEKIHJ1bGVzOiBbb2JqZWN0
IENTU1J1bGVMaXN0XQorcnVsZXMgbGVuZ3RoOiAxCis9PSBDcm9zcy1PcmlnaW4gcmVzb3VyY2Us
IGNvcnMgbW9kZSwgZmFpbGluZyBjb3JzIGNoZWNrID09Citjc3NSdWxlczogbnVsbAorcnVsZXM6
IG51bGwKKz09IENyb3NzLU9yaWdpbiByZXNvdXJjZSwgY29ycyBtb2RlLCBzdWNjZXNzZnVsIGNv
cnMgY2hlY2sgPT0KK2Nzc1J1bGVzOiBbb2JqZWN0IENTU1J1bGVMaXN0XQorY3NzUnVsZXMgbGVu
Z3RoOiAxCitydWxlczogW29iamVjdCBDU1NSdWxlTGlzdF0KK3J1bGVzIGxlbmd0aDogMQogVGVz
dCBlbmRzLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jYW5u
b3QtcmVhZC1jc3NydWxlcy1yZWRpcmVjdC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3NlY3VyaXR5L2Nhbm5vdC1yZWFkLWNzc3J1bGVzLXJlZGlyZWN0LWV4cGVjdGVkLnR4
dAppbmRleCAwNjI2NDZmZDQyZDlmZWI4ZDNjZTNlZmU4MGE3ODQ1ZDdlNmEyMzk2Li5mMWY0YzA1
MDg2MzEwOGUyNTNkODE4YzZlNDM4MzFlNTNlNWQ0MDhhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Nhbm5vdC1yZWFkLWNzc3J1bGVzLXJlZGlyZWN0LWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Nhbm5vdC1yZWFk
LWNzc3J1bGVzLXJlZGlyZWN0LWV4cGVjdGVkLnR4dApAQCAtMSwxMCArMSwyNiBAQAorQ09OU09M
RSBNRVNTQUdFOiBDcm9zcy1vcmlnaW4gcmVkaXJlY3Rpb24gdG8gaHR0cDovLzEyNy4wLjAuMTo4
MDAwL3NlY3VyaXR5L3Jlc291cmNlcy94b3JpZ2luY3NzMS5jc3MgZGVuaWVkIGJ5IENyb3NzLU9y
aWdpbiBSZXNvdXJjZSBTaGFyaW5nIHBvbGljeTogT3JpZ2luIGh0dHA6Ly8xMjcuMC4wLjE6ODAw
MCBpcyBub3QgYWxsb3dlZCBieSBBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4uCiBUaGlzIHRl
c3Qgd2hldGhlciBhIHNjcmlwdCBjYW4gcmVhZCB0aGUgcnVsZXMgZnJvbSBhIGNyb3NzLW9yaWdp
biBzdHlsZSBzaGVldCBpbiB0aGUgcHJlc2VuY2Ugb2YgcmVkaXJlY3RzLiBGb3IgbW9yZSBpbmZv
cm1hdGlvbiBvbiB3aHkgd2UgYmxvY2sgdGhpcywgcGxlYXNlIHNlZSBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1MjcuCiAKIFRlc3QgYmVnaW5zLgotPT0gU2FtZS1P
cmlnaW4gdG8gQ3Jvc3MtT3JpZ2luID09Cis9PSBTYW1lLU9yaWdpbiB0byBDcm9zcy1PcmlnaW4s
IG5vLWNvcnMgbW9kZSA9PQogY3NzUnVsZXM6IG51bGwKIHJ1bGVzOiBudWxsCi09PSBDcm9zcy1P
cmlnaW4gdG8gU2FtZS1PcmlnaW4gPT0KKz09IENyb3NzLU9yaWdpbiB0byBTYW1lLU9yaWdpbiwg
bm8tY29ycyBtb2RlID09CiBjc3NSdWxlczogW29iamVjdCBDU1NSdWxlTGlzdF0KK2Nzc1J1bGVz
IGxlbmd0aDogMQogcnVsZXM6IFtvYmplY3QgQ1NTUnVsZUxpc3RdCitydWxlcyBsZW5ndGg6IDEK
Kz09IFNhbWUtT3JpZ2luIHRvIFNhbWUtT3JpZ2luLCBjb3JzIG1vZGUgPT0KK2Nzc1J1bGVzOiBb
b2JqZWN0IENTU1J1bGVMaXN0XQorY3NzUnVsZXMgbGVuZ3RoOiAxCitydWxlczogW29iamVjdCBD
U1NSdWxlTGlzdF0KK3J1bGVzIGxlbmd0aDogMQorPT0gQ3Jvc3MtT3JpZ2luIHRvIFNhbWUtT3Jp
Z2luLCBjb3JzIG1vZGUsIHN1Y2Nlc3NmdWwgY29ycyBjaGVjayA9PQorY3NzUnVsZXM6IFtvYmpl
Y3QgQ1NTUnVsZUxpc3RdCitjc3NSdWxlcyBsZW5ndGg6IDEKK3J1bGVzOiBbb2JqZWN0IENTU1J1
bGVMaXN0XQorcnVsZXMgbGVuZ3RoOiAxCis9PSBDcm9zcy1PcmlnaW4gdG8gU2FtZS1PcmlnaW4s
IGNvcnMgbW9kZSwgZmFpbGluZyBjb3JzIGNoZWNrID09Citjc3NSdWxlczogbnVsbAorcnVsZXM6
IG51bGwKIFRlc3QgZW5kcy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2Vj
dXJpdHkvY2Fubm90LXJlYWQtY3NzcnVsZXMtcmVkaXJlY3QuaHRtbCBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkvY2Fubm90LXJlYWQtY3NzcnVsZXMtcmVkaXJlY3QuaHRtbAppbmRl
eCBhNDVhMzg1MGIyOTVjMzM1YzVlZjAzMjAzYmQ2NzlmZGQxNzQ0ZjcyLi5jZmVmOWI1Njk2MmNh
NzU4Yjk0N2RkZWUzYWY0ODY1MDRmMTZhYjBkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3NlY3VyaXR5L2Nhbm5vdC1yZWFkLWNzc3J1bGVzLXJlZGlyZWN0Lmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jYW5ub3QtcmVhZC1jc3NydWxlcy1yZWRp
cmVjdC5odG1sCkBAIC01LDYgKzUsMTIgQEAKICAgICAgIGhyZWY9Ii9yZXNvdXJjZXMvcmVkaXJl
Y3QucGhwP3VybD1odHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkvcmVzb3VyY2VzL2Nzc1N0
eWxlLmNzcyI+CiA8bGluayByZWw9InN0eWxlc2hlZXQiCiAgICAgICBocmVmPSJodHRwOi8vbG9j
YWxob3N0OjgwMDAvcmVzb3VyY2VzL3JlZGlyZWN0LnBocD91cmw9aHR0cDovLzEyNy4wLjAuMTo4
MDAwL3NlY3VyaXR5L3Jlc291cmNlcy9jc3NTdHlsZS5jc3MiPgorPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IgorICAgICAgaHJlZj0iL3Jlc291cmNlcy9yZWRpcmVjdC5waHA/dXJsPWh0dHA6Ly8xMjcu
MC4wLjE6ODAwMC9zZWN1cml0eS9yZXNvdXJjZXMvY3NzU3R5bGUuY3NzIiBjcm9zc29yaWdpbj0i
Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIKKyAgICAgIGhyZWY9Imh0dHA6Ly9sb2NhbGhvc3Q6
ODAwMC9zZWN1cml0eS9yZXNvdXJjZXMvcmVkaXJlY3QtYWxsb3ctc3Rhci5waHA/dXJsPWh0dHA6
Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9yZXNvdXJjZXMveG9yaWdpbmNzczEtYWxsb3ctc3Rh
ci5waHAiIGNyb3Nzb3JpZ2luPSIiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IgorICAgICAgaHJl
Zj0iaHR0cDovL2xvY2FsaG9zdDo4MDAwL3Jlc291cmNlcy9yZWRpcmVjdC5waHA/dXJsPWh0dHA6
Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9yZXNvdXJjZXMveG9yaWdpbmNzczEuY3NzIiBjcm9z
c29yaWdpbj0iIj4KIDxzY3JpcHQ+CiBpZiAod2luZG93LnRlc3RSdW5uZXIpCiAgICAgdGVzdFJ1
bm5lci5kdW1wQXNUZXh0KCk7CkBAIC0xNSwxNiArMjEsMzggQEAgZnVuY3Rpb24gbG9nKG1zZykg
ewogICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuYXBwZW5kQ2hpbGQoZGl2
KTsKIH0KIAorZnVuY3Rpb24gY2hlY2tDU1NSdWxlcyhzaGVldCkKK3sKKyAgICB0cnkgeworICAg
ICAgICB2YXIgY3NzUnVsZXMgPSBzaGVldC5jc3NSdWxlczsKKyAgICAgICAgbG9nKCJjc3NSdWxl
czogIiArIGNzc1J1bGVzKTsKKyAgICAgICAgaWYgKGNzc1J1bGVzKQorICAgICAgICAgICAgbG9n
KCJjc3NSdWxlcyBsZW5ndGg6ICIgKyBjc3NSdWxlcy5sZW5ndGgpOworICAgIH0gY2F0Y2goZSkg
eworICAgICAgICBsb2coImV4Y2VwdGlvbiB0aHJvd24gZm9yIGNzc1J1bGVzOiAiICsgZSk7Cisg
ICAgfQorICAgIHRyeSB7CisgICAgICAgIHZhciBydWxlcyA9IHNoZWV0LnJ1bGVzOworICAgICAg
ICBsb2coInJ1bGVzOiAiICsgcnVsZXMpOworICAgICAgICBpZiAocnVsZXMpCisgICAgICAgICAg
ICBsb2coInJ1bGVzIGxlbmd0aDogIiArIHJ1bGVzLmxlbmd0aCk7CisgICAgfSBjYXRjaChlKSB7
CisgICAgICAgIGxvZygiZXhjZXB0aW9uIHRocm93biBmb3IgcnVsZXM6ICIgKyBlKTsKKyAgICB9
Cit9CisKIHdpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbigpIHsKICAgICBsb2coIlRlc3QgYmVnaW5z
LiIpOwotICAgIGxvZygiPT0gU2FtZS1PcmlnaW4gdG8gQ3Jvc3MtT3JpZ2luID09Iik7Ci0gICAg
dmFyIHNoZWV0MSA9IGRvY3VtZW50LnN0eWxlU2hlZXRzWzBdOwotICAgIGxvZygiY3NzUnVsZXM6
ICIgKyBzaGVldDEuY3NzUnVsZXMpOwotICAgIGxvZygicnVsZXM6ICIgKyBzaGVldDEucnVsZXMp
OwotICAgIGxvZygiPT0gQ3Jvc3MtT3JpZ2luIHRvIFNhbWUtT3JpZ2luID09Iik7Ci0gICAgdmFy
IHNoZWV0MiA9IGRvY3VtZW50LnN0eWxlU2hlZXRzWzFdOwotICAgIGxvZygiY3NzUnVsZXM6ICIg
KyBzaGVldDIuY3NzUnVsZXMpOwotICAgIGxvZygicnVsZXM6ICIgKyBzaGVldDIucnVsZXMpOwor
ICAgIGxvZygiPT0gU2FtZS1PcmlnaW4gdG8gQ3Jvc3MtT3JpZ2luLCBuby1jb3JzIG1vZGUgPT0i
KTsKKyAgICBjaGVja0NTU1J1bGVzKGRvY3VtZW50LnN0eWxlU2hlZXRzWzBdKTsKKyAgICBsb2co
Ij09IENyb3NzLU9yaWdpbiB0byBTYW1lLU9yaWdpbiwgbm8tY29ycyBtb2RlID09Iik7CisgICAg
Y2hlY2tDU1NSdWxlcyhkb2N1bWVudC5zdHlsZVNoZWV0c1sxXSk7CisgICAgbG9nKCI9PSBTYW1l
LU9yaWdpbiB0byBTYW1lLU9yaWdpbiwgY29ycyBtb2RlID09Iik7CisgICAgY2hlY2tDU1NSdWxl
cyhkb2N1bWVudC5zdHlsZVNoZWV0c1syXSk7CisgICAgbG9nKCI9PSBDcm9zcy1PcmlnaW4gdG8g
U2FtZS1PcmlnaW4sIGNvcnMgbW9kZSwgc3VjY2Vzc2Z1bCBjb3JzIGNoZWNrID09Iik7CisgICAg
Y2hlY2tDU1NSdWxlcyhkb2N1bWVudC5zdHlsZVNoZWV0c1szXSk7CisgICAgbG9nKCI9PSBDcm9z
cy1PcmlnaW4gdG8gU2FtZS1PcmlnaW4sIGNvcnMgbW9kZSwgZmFpbGluZyBjb3JzIGNoZWNrID09
Iik7CisgICAgY2hlY2tDU1NSdWxlcyhkb2N1bWVudC5zdHlsZVNoZWV0c1s0XSk7CiAgICAgbG9n
KCJUZXN0IGVuZHMuIik7CiB9CiA8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkvY2Fubm90LXJlYWQtY3NzcnVsZXMuaHRtbCBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc2VjdXJpdHkvY2Fubm90LXJlYWQtY3NzcnVsZXMuaHRtbAppbmRleCA2MjYw
OTJiZDQzZDk4NWYxODBkNGZjZmNhODk4N2Q3MGQ2MTA0MGI1Li42M2ZkNmNlMTgwOTY4ZTQzODEw
YmRlZjgzNzhhZWRlMDNmNmU1MWJiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3NlY3VyaXR5L2Nhbm5vdC1yZWFkLWNzc3J1bGVzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zZWN1cml0eS9jYW5ub3QtcmVhZC1jc3NydWxlcy5odG1sCkBAIC00LDYgKzQsMTAg
QEAKIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIKICAgICAgIGhyZWY9Imh0dHA6Ly9sb2NhbGhvc3Q6
ODAwMC9zZWN1cml0eS9yZXNvdXJjZXMvY3NzU3R5bGUuY3NzIj4KIDxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0icmVzb3VyY2VzL2Nzc1N0eWxlLmNzcyI+Cis8bGluayByZWw9InN0eWxlc2hl
ZXQiCisgICAgICBocmVmPSJodHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkvcmVzb3VyY2Vz
L2Nzc1N0eWxlLmNzcyIgY3Jvc3NvcmlnaW49IiI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiCisg
ICAgICBocmVmPSJodHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkvcmVzb3VyY2VzL3hvcmln
aW5jc3MxLWFsbG93LXN0YXIucGhwIiBjcm9zc29yaWdpbj0iIj4KIDxzY3JpcHQ+CiBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCiAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CkBAIC0xNCwxNiAr
MTgsMzYgQEAgZnVuY3Rpb24gbG9nKG1zZykgewogICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJjb25zb2xlIikuYXBwZW5kQ2hpbGQoZGl2KTsKIH0KIAorZnVuY3Rpb24gY2hlY2tDU1NSdWxl
cyhzaGVldCkKK3sKKyAgICB0cnkgeworICAgICAgICB2YXIgY3NzUnVsZXMgPSBzaGVldC5jc3NS
dWxlczsKKyAgICAgICAgbG9nKCJjc3NSdWxlczogIiArIGNzc1J1bGVzKTsKKyAgICAgICAgaWYg
KGNzc1J1bGVzKQorICAgICAgICAgICAgbG9nKCJjc3NSdWxlcyBsZW5ndGg6ICIgKyBjc3NSdWxl
cy5sZW5ndGgpOworICAgIH0gY2F0Y2goZSkgeworICAgICAgICBsb2coImV4Y2VwdGlvbiB0aHJv
d24gZm9yIGNzc1J1bGVzOiAiICsgZSk7CisgICAgfQorICAgIHRyeSB7CisgICAgICAgIHZhciBy
dWxlcyA9IHNoZWV0LnJ1bGVzOworICAgICAgICBsb2coInJ1bGVzOiAiICsgcnVsZXMpOworICAg
ICAgICBpZiAocnVsZXMpCisgICAgICAgICAgICBsb2coInJ1bGVzIGxlbmd0aDogIiArIHJ1bGVz
Lmxlbmd0aCk7CisgICAgfSBjYXRjaChlKSB7CisgICAgICAgIGxvZygiZXhjZXB0aW9uIHRocm93
biBmb3IgcnVsZXM6ICIgKyBlKTsKKyAgICB9Cit9CisKIHdpbmRvdy5vbmxvYWQgPSBmdW5jdGlv
bigpIHsKICAgICBsb2coIlRlc3QgYmVnaW5zLiIpOwotICAgIGxvZygiPT0gQ3Jvc3MtT3JpZ2lu
ID09Iik7Ci0gICAgdmFyIHNoZWV0MSA9IGRvY3VtZW50LnN0eWxlU2hlZXRzWzBdOwotICAgIGxv
ZygiY3NzUnVsZXM6ICIgKyBzaGVldDEuY3NzUnVsZXMpOwotICAgIGxvZygicnVsZXM6ICIgKyBz
aGVldDEucnVsZXMpOwotICAgIGxvZygiPT0gU2FtZS1PcmlnaW4gPT0iKTsKLSAgICB2YXIgc2hl
ZXQyID0gZG9jdW1lbnQuc3R5bGVTaGVldHNbMV07Ci0gICAgbG9nKCJjc3NSdWxlczogIiArIHNo
ZWV0Mi5jc3NSdWxlcyk7Ci0gICAgbG9nKCJydWxlczogIiArIHNoZWV0Mi5ydWxlcyk7CisgICAg
bG9nKCI9PSBDcm9zcy1PcmlnaW4gcmVzb3VyY2UsIG5vLWNvcnMgbW9kZSA9PSIpOworICAgIGNo
ZWNrQ1NTUnVsZXMoZG9jdW1lbnQuc3R5bGVTaGVldHNbMF0pOworICAgIGxvZygiPT0gU2FtZS1P
cmlnaW4gcmVzb3VyY2UsIG5vLWNvcnMgbW9kZSA9PSIpOworICAgIGNoZWNrQ1NTUnVsZXMoZG9j
dW1lbnQuc3R5bGVTaGVldHNbMV0pOworICAgIGxvZygiPT0gQ3Jvc3MtT3JpZ2luIHJlc291cmNl
LCBjb3JzIG1vZGUsIGZhaWxpbmcgY29ycyBjaGVjayA9PSIpOworICAgIGNoZWNrQ1NTUnVsZXMo
ZG9jdW1lbnQuc3R5bGVTaGVldHNbMl0pOworICAgIGxvZygiPT0gQ3Jvc3MtT3JpZ2luIHJlc291
cmNlLCBjb3JzIG1vZGUsIHN1Y2Nlc3NmdWwgY29ycyBjaGVjayA9PSIpOworICAgIGNoZWNrQ1NT
UnVsZXMoZG9jdW1lbnQuc3R5bGVTaGVldHNbM10pOwogICAgIGxvZygiVGVzdCBlbmRzLiIpOwog
fQogPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5
L2Nyb3NzLW9yaWdpbi1jc3MtOS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0
eS9jcm9zcy1vcmlnaW4tY3NzLTkuaHRtbAppbmRleCA2MWIyNTAyNDhhYmE5MWI0OGZmMjhiNDFl
ZjRmYWVlNDQ3N2E3NTI0Li41YjkwNjFlZmI5MTZkMmE4N2ViODU5MzczMWMxM2MyNzUwNDc0NmZm
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3NzLW9yaWdp
bi1jc3MtOS5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3Mt
b3JpZ2luLWNzcy05Lmh0bWwKQEAgLTIxLDggKzIxLDcgQEAgZnVuY3Rpb24gY2hlY2tDU1NMb2Fk
aW5nKGlkLCBleHBlY3RUb0luY2x1ZGVPcmlnaW4sIGV4cGVjdFZpc2liaWxpdHkpCiB7CiAgICAg
ZXhwZWN0ZWRDb2xvciA9IGV4cGVjdFRvSW5jbHVkZU9yaWdpbiA/ICJyZ2IoMjU1LCAyNTUsIDAp
IiA6ICJyZ2IoMCwgMCwgMjU1KSI7CiAgICAgYXNzZXJ0X2VxdWFscyhnZXRCYWNrZ3JvdW5kQ29s
b3JGb3JJZChpZCksIGV4cGVjdGVkQ29sb3IpOwotICAgIC8vIEZJWE1FOiBjc3NSdWxlcyBzaG91
bGQgYmUgbWFkZSB2aXNpYmxlIGFjY29yZGluZyByZXNvdXJjZSB0YWludGVkIHN0YXR1cywgbm90
IG9ubHkgYmFzZWQgb24gdGhlIHJlc291cmNlIFVSTCBiZWluZyBjcm9zcyBvcmlnaW4uCi0gICAg
Ly8gYXNzZXJ0X2VxdWFscyhkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibGluay0iICsgaWQpLnNo
ZWV0LmNzc1J1bGVzICE9PSBudWxsLCBleHBlY3RWaXNpYmlsaXR5KTsKKyAgICBhc3NlcnRfZXF1
YWxzKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsaW5rLSIgKyBpZCkuc2hlZXQuY3NzUnVsZXMg
IT09IG51bGwsIGV4cGVjdFZpc2liaWxpdHkpOwogfQogCiB2YXIgb25sb2FkVGVzdCA9IGFzeW5j
X3Rlc3QoIiBUZXN0aW5nIHRoYXQgbGluayBlbGVtZW50IHRvIGxvYWQgc3R5bGVzaGVldHMgY29y
cmVjdGx5IGhhbmRsZSBjcm9zc29yaWdpbiBtb2RlLiIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMveG9yaWdpbmNzczEtYWxsb3ctc3Rhci5w
aHAgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Jlc291cmNlcy94b3JpZ2luY3Nz
MS1hbGxvdy1zdGFyLnBocApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NDc5ODQ0MTQ4ZjQwOWQyMDQ3YmMyMDdiYmUy
ZTNmNWE0NDYwMzc4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
ZWN1cml0eS9yZXNvdXJjZXMveG9yaWdpbmNzczEtYWxsb3ctc3Rhci5waHAKQEAgLTAsMCArMSwx
MSBAQAorPD9waHAKK2hlYWRlcigiQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luOiAqIik7CisK
KyRuYW1lID0gJ3hvcmlnaW5jc3MxLmNzcyc7CiskZnAgPSBmb3BlbigkbmFtZSwgJ3JiJyk7Cito
ZWFkZXIoIkNvbnRlbnQtVHlwZTogdGV4dC9jc3MiKTsKK2hlYWRlcigiQ29udGVudC1MZW5ndGg6
ICIgLiBmaWxlc2l6ZSgkbmFtZSkpOworCitmcGFzc3RocnUoJGZwKTsKK2V4aXQ7Cis/Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>287953</attachid>
            <date>2016-09-05 07:28:29 -0700</date>
            <delta_ts>2016-09-05 10:00:46 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-158728-20160905162606.patch</filename>
            <type>text/plain</type>
            <size>24499</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA1NDUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjM3MDBiZjE0OTMyMTgw
OTc5NjU0Yjk0MThmNWEzOTdhMTAyY2ZhMy4uNTM4YmNmZmIwODgwZmJiMDM5YjExYThhNDhlN2I1
Yjk3YWU3NzBmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQ0IEBACiAyMDE2LTA5LTA1ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAorICAgICAgICBDbGVhbiBDU1Mgc3R5bGVz
aGVldHMgc2hvdWxkIGJlIGFjY2Vzc2libGUgZnJvbSBKYXZhU2NyaXB0CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTg3MjgKKworICAgICAgICBSZXZp
ZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBDb3ZlcmVkIGJ5IHVwZGF0ZWQgdGVzdHMu
CisKKyAgICAgICAgTWFraW5nIHVzZSBvZiB0aGUgcmVzb3VyY2UgcmVzcG9uc2UgdHlwZSB0byBl
dmFsdWF0ZSB3aGV0aGVyIHRvIG1ha2UgdGhlIENTUyBzdHlsZXNoZWV0cyB2aXNpYmxlCisgICAg
ICAgIGZvciBzdHlsZXNoZWV0IGxpbmsgZWxlbWVudHMgYW5kIGZvciBzdHlsZXNoZWV0IHByb2Nl
c3NpbmcgaW5zdHJ1Y3Rpb25zLgorICAgICAgICBJZGVhbGx5LCB0aGUgb3JpZ2luIGZsYWcgc2hv
dWxkIGJlIGEgYm9vbGVhbi4KKworICAgICAgICBUbyBrZWVwIGJlaGF2aW9yIGNvbnNpc3RlbnQg
aW4gY29ycy1jaGVjay11bmF3YXJlIGNhc2VzLCB0aGUgZmxhZyBtaWdodCByZW1haW4gdW5zZXQu
CisgICAgICAgIEluIHRoYXQgY2FzZSwgdGhlIGJlaGF2aW9yIHJlbWFpbnMgdGhlIHNhbWUgKGNo
ZWNraW5nIG9mIHRoZSBzdHlsZXNoZWV0IFVSTCkuCisgICAgICAgIFRoZSBvcmlnaW4gZmxhZyBp
cyBzZXQgdG8gdHJ1ZSBvciBmYWxzZSBvbmx5IGluIGNhc2Ugb2YgZmV0Y2ggbW9kZSBiZWluZyBz
ZXQgdG8gY29ycyB1c2luZyB0aGUgY3Jvc3NvcmlnaW4gYXR0cmlidXRlLgorCisgICAgICAgIFVw
ZGF0ZWQgQ1NTU3R5bGVTaGVldDo6Y3JlYXRlIHRvIHRha2UgYSBOb2RlIHJlZmVyZW5jZS4gVXBk
YXRlZCBjYWxsZXJzIGFjY29yZGluZ2x5LgorCisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMv
Q29udGVudEV4dGVuc2lvblN0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVu
dEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb25TdHlsZVNoZWV0OjpDb250ZW50RXh0ZW5zaW9u
U3R5bGVTaGVldCk6IFVwZGF0ZWQgdG8gcGFzcyBhIE5vZGUgcmVmZXJlbmNlIGFuZCBub3QgcG9p
bnRlci4KKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NTdHlsZVNoZWV0OjpjcmVhdGUpOiBNYWtlcyBvcmlnaW4gZmxhZyB1bmRlZmluZWQgaWYg
Ym9vbGVhbiBwYXJhbWV0ZXIgaXMgbm90IHBhc3NlZC4KKyAgICAgICAgT3RoZXJ3aXNlIG9yaWdp
biBmbGFnIGlzIHNldCBhY2NvcmRpbmcgZ2l2ZW4gYm9vbGVhbiB2YWx1ZS4KKyAgICAgICAgKFdl
YkNvcmU6OkNTU1N0eWxlU2hlZXQ6OmNyZWF0ZUlubGluZSk6IE1ha2VzIG9yaWdpbiBmbGFnIHNl
dCB0byB0cnVlLgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTaGVldDo6Q1NTU3R5bGVTaGVl
dCk6IEFkZGluZyBvcmlnaW4gZmxhZyBpbml0aWFsaXphdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6
OkNTU1N0eWxlU2hlZXQ6OmNhbkFjY2Vzc1J1bGVzKTogUmV0dXJuaW5nIGFjY29yZGluZyB0aGUg
b3JpZ2luIGZsYWcgaWYgc2V0LgorICAgICAgICBSZXR1cm5pbmcgYXMgYmVmb3JlIGluIGNhc2Ug
dGhlIGZsYWcgaXMgbm90IHNldC4KKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTaGVldC5oOiBBZGRp
bmcgb3JpZ2luIGNsZWFuIGZsYWcuCisgICAgICAgICogZG9tL0V4dGVuc2lvblN0eWxlU2hlZXRz
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvblN0eWxlU2hlZXRzOjphZGRVc2VyU3R5
bGVTaGVldCk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25TdHlsZVNoZWV0czo6YWRkQXV0
aG9yU3R5bGVTaGVldEZvclRlc3RpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uU3R5
bGVTaGVldHM6Om1heWJlQWRkQ29udGVudEV4dGVuc2lvblNoZWV0KToKKyAgICAgICAgKiBodG1s
L0hUTUxMaW5rRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6
OmluaXRpYWxpemVTdHlsZVNoZWV0KTogSGVscGVyIHJvdXRpbmUgdXNlZCBpbiBzZXRDU1NTdHls
ZVNoZWV0LgorICAgICAgICBTZXRzIG9yaWdpbiBjbGVhbiBmbGFnIGlmIHRoZSByZXNvdXJjZSBp
cyBjbGVhbi4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxMaW5rRWxlbWVudDo6c2V0Q1NTU3R5bGVT
aGVldCk6IE1ha2luZyB1c2Ugb2YgaW5pdGlhbGl6ZVN0eWxlU2hlZXQuCisgICAgICAgICogaHRt
bC9IVE1MTGlua0VsZW1lbnQuaDoKKworMjAxNi0wOS0wNSAgWW91ZW5uIEZhYmxldCAgPHlvdWVu
bkBhcHBsZS5jb20+CisKICAgICAgICAgQ2FjaGVkUmVzb3VyY2VMb2FkZXIgaXMgbm90IHRha2lu
ZyBpbnRvIGFjY291bnQgZmV0Y2ggb3B0aW9ucyB0byB1c2Ugb3Igbm90IGNhY2hlZCByZXNvdXJj
ZXMKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MTM4
OQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50
RXh0ZW5zaW9uU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9u
cy9Db250ZW50RXh0ZW5zaW9uU3R5bGVTaGVldC5jcHAKaW5kZXggNDRkN2M1NzM4MGE1MGU1OGFi
ZjJkYWYzZjdmZjMxZGJiMDRkYzk3Yi4uZTI0YTM2NjlkODcyZjYwYzQyMjUwNmIyODZlYWZjM2U2
YWZmNDJlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29u
dGVudEV4dGVuc2lvblN0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRl
eHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25TdHlsZVNoZWV0LmNwcApAQCAtMzgsNyArMzgsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgQ29udGVudEV4dGVuc2lvbnMgewogCiBD
b250ZW50RXh0ZW5zaW9uU3R5bGVTaGVldDo6Q29udGVudEV4dGVuc2lvblN0eWxlU2hlZXQoRG9j
dW1lbnQmIGRvY3VtZW50KQotICAgIDogbV9zdHlsZVNoZWV0KENTU1N0eWxlU2hlZXQ6OmNyZWF0
ZShTdHlsZVNoZWV0Q29udGVudHM6OmNyZWF0ZSgpLCAmZG9jdW1lbnQpKQorICAgIDogbV9zdHls
ZVNoZWV0KENTU1N0eWxlU2hlZXQ6OmNyZWF0ZShTdHlsZVNoZWV0Q29udGVudHM6OmNyZWF0ZSgp
LCBkb2N1bWVudCkpCiB7CiAgICAgbV9zdHlsZVNoZWV0LT5jb250ZW50cygpLnNldElzVXNlclN0
eWxlU2hlZXQodHJ1ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5
bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAKaW5kZXgg
MTczZWJiZDdjZjk5YWQwZTI1ODdlY2RmZWNhYjgxZmVmYjg1NjE1Yi4uMTE2N2IwMzg1YmRkZTc2
YmU0YTg3MzExNmI4MzNhY2NlN2Y5ZDBkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1N0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0
LmNwcApAQCAtNzgsMTkgKzc4LDE5IEBAIHN0YXRpYyBib29sIGlzQWNjZXB0YWJsZUNTU1N0eWxl
U2hlZXRQYXJlbnQoTm9kZSogcGFyZW50Tm9kZSkKICNlbmRpZgogCiBSZWY8Q1NTU3R5bGVTaGVl
dD4gQ1NTU3R5bGVTaGVldDo6Y3JlYXRlKFJlZjxTdHlsZVNoZWV0Q29udGVudHM+JiYgc2hlZXQs
IENTU0ltcG9ydFJ1bGUqIG93bmVyUnVsZSkKLXsgCit7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgQ1NTU3R5bGVTaGVldChXVEZNb3ZlKHNoZWV0KSwgb3duZXJSdWxlKSk7CiB9CiAKLVJlZjxD
U1NTdHlsZVNoZWV0PiBDU1NTdHlsZVNoZWV0OjpjcmVhdGUoUmVmPFN0eWxlU2hlZXRDb250ZW50
cz4mJiBzaGVldCwgTm9kZSogb3duZXJOb2RlKQoteyAKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBDU1NTdHlsZVNoZWV0KFdURk1vdmUoc2hlZXQpLCBvd25lck5vZGUsIFRleHRQb3NpdGlvbjo6
bWluaW11bVBvc2l0aW9uKCksIGZhbHNlKSk7CitSZWY8Q1NTU3R5bGVTaGVldD4gQ1NTU3R5bGVT
aGVldDo6Y3JlYXRlKFJlZjxTdHlsZVNoZWV0Q29udGVudHM+JiYgc2hlZXQsIE5vZGUmIG93bmVy
Tm9kZSwgY29uc3QgT3B0aW9uYWw8Ym9vbD4mIGlzQ2xlYW5PcmlnaW4pCit7CisgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgQ1NTU3R5bGVTaGVldChXVEZNb3ZlKHNoZWV0KSwgb3duZXJOb2RlLCBU
ZXh0UG9zaXRpb246Om1pbmltdW1Qb3NpdGlvbigpLCBmYWxzZSwgaXNDbGVhbk9yaWdpbikpOwog
fQogCiBSZWY8Q1NTU3R5bGVTaGVldD4gQ1NTU3R5bGVTaGVldDo6Y3JlYXRlSW5saW5lKE5vZGUm
IG93bmVyTm9kZSwgY29uc3QgVVJMJiBiYXNlVVJMLCBjb25zdCBUZXh0UG9zaXRpb24mIHN0YXJ0
UG9zaXRpb24sIGNvbnN0IFN0cmluZyYgZW5jb2RpbmcpCiB7CiAgICAgQ1NTUGFyc2VyQ29udGV4
dCBwYXJzZXJDb250ZXh0KG93bmVyTm9kZS5kb2N1bWVudCgpLCBiYXNlVVJMLCBlbmNvZGluZyk7
Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTU3R5bGVTaGVldChTdHlsZVNoZWV0Q29udGVu
dHM6OmNyZWF0ZShiYXNlVVJMLnN0cmluZygpLCBwYXJzZXJDb250ZXh0KSwgJm93bmVyTm9kZSwg
c3RhcnRQb3NpdGlvbiwgdHJ1ZSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENTU1N0eWxl
U2hlZXQoU3R5bGVTaGVldENvbnRlbnRzOjpjcmVhdGUoYmFzZVVSTC5zdHJpbmcoKSwgcGFyc2Vy
Q29udGV4dCksIG93bmVyTm9kZSwgc3RhcnRQb3NpdGlvbiwgdHJ1ZSwgdHJ1ZSkpOwogfQogCiBD
U1NTdHlsZVNoZWV0OjpDU1NTdHlsZVNoZWV0KFJlZjxTdHlsZVNoZWV0Q29udGVudHM+JiYgY29u
dGVudHMsIENTU0ltcG9ydFJ1bGUqIG93bmVyUnVsZSkKQEAgLTEwNSwxNiArMTA1LDE3IEBAIENT
U1N0eWxlU2hlZXQ6OkNTU1N0eWxlU2hlZXQoUmVmPFN0eWxlU2hlZXRDb250ZW50cz4mJiBjb250
ZW50cywgQ1NTSW1wb3J0UnVsZSoKICAgICBtX2NvbnRlbnRzLT5yZWdpc3RlckNsaWVudCh0aGlz
KTsKIH0KIAotQ1NTU3R5bGVTaGVldDo6Q1NTU3R5bGVTaGVldChSZWY8U3R5bGVTaGVldENvbnRl
bnRzPiYmIGNvbnRlbnRzLCBOb2RlKiBvd25lck5vZGUsIGNvbnN0IFRleHRQb3NpdGlvbiYgc3Rh
cnRQb3NpdGlvbiwgYm9vbCBpc0lubGluZVN0eWxlc2hlZXQpCitDU1NTdHlsZVNoZWV0OjpDU1NT
dHlsZVNoZWV0KFJlZjxTdHlsZVNoZWV0Q29udGVudHM+JiYgY29udGVudHMsIE5vZGUmIG93bmVy
Tm9kZSwgY29uc3QgVGV4dFBvc2l0aW9uJiBzdGFydFBvc2l0aW9uLCBib29sIGlzSW5saW5lU3R5
bGVzaGVldCwgY29uc3QgT3B0aW9uYWw8Ym9vbD4mIGlzT3JpZ2luQ2xlYW4pCiAgICAgOiBtX2Nv
bnRlbnRzKFdURk1vdmUoY29udGVudHMpKQogICAgICwgbV9pc0lubGluZVN0eWxlc2hlZXQoaXNJ
bmxpbmVTdHlsZXNoZWV0KQogICAgICwgbV9pc0Rpc2FibGVkKGZhbHNlKQogICAgICwgbV9tdXRh
dGVkUnVsZXMoZmFsc2UpCi0gICAgLCBtX293bmVyTm9kZShvd25lck5vZGUpCisgICAgLCBtX2lz
T3JpZ2luQ2xlYW4oaXNPcmlnaW5DbGVhbikKKyAgICAsIG1fb3duZXJOb2RlKCZvd25lck5vZGUp
CiAgICAgLCBtX293bmVyUnVsZSgwKQogICAgICwgbV9zdGFydFBvc2l0aW9uKHN0YXJ0UG9zaXRp
b24pCiB7Ci0gICAgQVNTRVJUKGlzQWNjZXB0YWJsZUNTU1N0eWxlU2hlZXRQYXJlbnQob3duZXJO
b2RlKSk7CisgICAgQVNTRVJUKGlzQWNjZXB0YWJsZUNTU1N0eWxlU2hlZXRQYXJlbnQoJm93bmVy
Tm9kZSkpOwogICAgIG1fY29udGVudHMtPnJlZ2lzdGVyQ2xpZW50KHRoaXMpOwogfQogCkBAIC0y
NTgsMTcgKzI1OSwxNiBAQCBDU1NSdWxlKiBDU1NTdHlsZVNoZWV0OjppdGVtKHVuc2lnbmVkIGlu
ZGV4KQogCiBib29sIENTU1N0eWxlU2hlZXQ6OmNhbkFjY2Vzc1J1bGVzKCkgY29uc3QKIHsKLSAg
ICBpZiAobV9pc0lubGluZVN0eWxlc2hlZXQpCi0gICAgICAgIHJldHVybiB0cnVlOworICAgIGlm
IChtX2lzT3JpZ2luQ2xlYW4pCisgICAgICAgIHJldHVybiBtX2lzT3JpZ2luQ2xlYW4udmFsdWUo
KTsKKwogICAgIFVSTCBiYXNlVVJMID0gbV9jb250ZW50cy0+YmFzZVVSTCgpOwogICAgIGlmIChi
YXNlVVJMLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgRG9jdW1lbnQqIGRv
Y3VtZW50ID0gb3duZXJEb2N1bWVudCgpOwogICAgIGlmICghZG9jdW1lbnQpCiAgICAgICAgIHJl
dHVybiB0cnVlOwotICAgIGlmIChkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuUmVxdWVz
dChiYXNlVVJMKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuIGZhbHNlOworICAg
IHJldHVybiBkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuUmVxdWVzdChiYXNlVVJMKTsK
IH0KIAogUmVmUHRyPENTU1J1bGVMaXN0PiBDU1NTdHlsZVNoZWV0OjpydWxlcygpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5oIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1N0eWxlU2hlZXQuaAppbmRleCBlMTIyNWJlYzljZjU0NTc0NGM5ZjNjYTRhNTM4YzE3
N2RiYzU1ZjNmLi40YmQxMTExNGY5ZGE0M2U0ZmZmMmJmYTY3ODMzMjQzYjU1YzhiNDJkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmgKQEAgLTQ5LDcgKzQ5LDcgQEAgdHlwZWRlZiBpbnQg
RXhjZXB0aW9uQ29kZTsKIGNsYXNzIENTU1N0eWxlU2hlZXQgZmluYWwgOiBwdWJsaWMgU3R5bGVT
aGVldCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxDU1NTdHlsZVNoZWV0PiBjcmVhdGUoUmVm
PFN0eWxlU2hlZXRDb250ZW50cz4mJiwgQ1NTSW1wb3J0UnVsZSogb3duZXJSdWxlID0gMCk7Ci0g
ICAgc3RhdGljIFJlZjxDU1NTdHlsZVNoZWV0PiBjcmVhdGUoUmVmPFN0eWxlU2hlZXRDb250ZW50
cz4mJiwgTm9kZSogb3duZXJOb2RlKTsKKyAgICBzdGF0aWMgUmVmPENTU1N0eWxlU2hlZXQ+IGNy
ZWF0ZShSZWY8U3R5bGVTaGVldENvbnRlbnRzPiYmLCBOb2RlJiBvd25lck5vZGUsIGNvbnN0IE9w
dGlvbmFsPGJvb2w+JiBpc09yaWdpbkNsZWFuID0gTnVsbG9wdCk7CiAgICAgc3RhdGljIFJlZjxD
U1NTdHlsZVNoZWV0PiBjcmVhdGVJbmxpbmUoTm9kZSYsIGNvbnN0IFVSTCYsIGNvbnN0IFRleHRQ
b3NpdGlvbiYgc3RhcnRQb3NpdGlvbiA9IFRleHRQb3NpdGlvbjo6bWluaW11bVBvc2l0aW9uKCks
IGNvbnN0IFN0cmluZyYgZW5jb2RpbmcgPSBTdHJpbmcoKSk7CiAKICAgICB2aXJ0dWFsIH5DU1NT
dHlsZVNoZWV0KCk7CkBAIC0xMjUsMTYgKzEyNSwxOCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAg
IENTU1N0eWxlU2hlZXQoUmVmPFN0eWxlU2hlZXRDb250ZW50cz4mJiwgQ1NTSW1wb3J0UnVsZSog
b3duZXJSdWxlKTsKICAgICBDU1NTdHlsZVNoZWV0KFJlZjxTdHlsZVNoZWV0Q29udGVudHM+JiYs
IE5vZGUqIG93bmVyTm9kZSwgY29uc3QgVGV4dFBvc2l0aW9uJiBzdGFydFBvc2l0aW9uLCBib29s
IGlzSW5saW5lU3R5bGVzaGVldCk7CisgICAgQ1NTU3R5bGVTaGVldChSZWY8U3R5bGVTaGVldENv
bnRlbnRzPiYmLCBOb2RlJiBvd25lck5vZGUsIGNvbnN0IFRleHRQb3NpdGlvbiYgc3RhcnRQb3Np
dGlvbiwgYm9vbCBpc0lubGluZVN0eWxlc2hlZXQsIGNvbnN0IE9wdGlvbmFsPGJvb2w+Jik7CiAK
ICAgICBib29sIGlzQ1NTU3R5bGVTaGVldCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0K
ICAgICBTdHJpbmcgdHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgidGV4
dC9jc3MiKTsgfQogCiAgICAgYm9vbCBjYW5BY2Nlc3NSdWxlcygpIGNvbnN0OwotICAgIAorCiAg
ICAgUmVmPFN0eWxlU2hlZXRDb250ZW50cz4gbV9jb250ZW50czsKICAgICBib29sIG1faXNJbmxp
bmVTdHlsZXNoZWV0OwogICAgIGJvb2wgbV9pc0Rpc2FibGVkOwogICAgIGJvb2wgbV9tdXRhdGVk
UnVsZXM7CisgICAgT3B0aW9uYWw8Ym9vbD4gbV9pc09yaWdpbkNsZWFuOwogICAgIFN0cmluZyBt
X3RpdGxlOwogICAgIFJlZlB0cjxNZWRpYVF1ZXJ5U2V0PiBtX21lZGlhUXVlcmllczsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V4dGVuc2lvblN0eWxlU2hlZXRzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FeHRlbnNpb25TdHlsZVNoZWV0cy5jcHAKaW5kZXggZTU2OWUyMDU1
OWEwZjIyMzQ4NDBjZTVhN2ZlMDBjNDY1MGU0NDFhYi4uZjllYzRlZDdlNjlkNWQzMzVhMjE3ZDEx
YTY4NDY1N2MxNzhiNjc1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V4dGVuc2lv
blN0eWxlU2hlZXRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXh0ZW5zaW9uU3R5bGVT
aGVldHMuY3BwCkBAIC0xNjAsMTQgKzE2MCwxNCBAQCB2b2lkIEV4dGVuc2lvblN0eWxlU2hlZXRz
OjppbnZhbGlkYXRlSW5qZWN0ZWRTdHlsZVNoZWV0Q2FjaGUoKQogdm9pZCBFeHRlbnNpb25TdHls
ZVNoZWV0czo6YWRkVXNlclN0eWxlU2hlZXQoUmVmPFN0eWxlU2hlZXRDb250ZW50cz4mJiB1c2Vy
U2hlZXQpCiB7CiAgICAgQVNTRVJUKHVzZXJTaGVldC5nZXQoKS5pc1VzZXJTdHlsZVNoZWV0KCkp
OwotICAgIG1fdXNlclN0eWxlU2hlZXRzLmFwcGVuZChDU1NTdHlsZVNoZWV0OjpjcmVhdGUoV1RG
TW92ZSh1c2VyU2hlZXQpLCAmbV9kb2N1bWVudCkpOworICAgIG1fdXNlclN0eWxlU2hlZXRzLmFw
cGVuZChDU1NTdHlsZVNoZWV0OjpjcmVhdGUoV1RGTW92ZSh1c2VyU2hlZXQpLCBtX2RvY3VtZW50
KSk7CiAgICAgbV9kb2N1bWVudC5zdHlsZVJlc29sdmVyQ2hhbmdlZChSZWNhbGNTdHlsZUltbWVk
aWF0ZWx5KTsKIH0KIAogdm9pZCBFeHRlbnNpb25TdHlsZVNoZWV0czo6YWRkQXV0aG9yU3R5bGVT
aGVldEZvclRlc3RpbmcoUmVmPFN0eWxlU2hlZXRDb250ZW50cz4mJiBhdXRob3JTaGVldCkKIHsK
ICAgICBBU1NFUlQoIWF1dGhvclNoZWV0LmdldCgpLmlzVXNlclN0eWxlU2hlZXQoKSk7Ci0gICAg
bV9hdXRob3JTdHlsZVNoZWV0c0ZvclRlc3RpbmcuYXBwZW5kKENTU1N0eWxlU2hlZXQ6OmNyZWF0
ZShXVEZNb3ZlKGF1dGhvclNoZWV0KSwgJm1fZG9jdW1lbnQpKTsKKyAgICBtX2F1dGhvclN0eWxl
U2hlZXRzRm9yVGVzdGluZy5hcHBlbmQoQ1NTU3R5bGVTaGVldDo6Y3JlYXRlKFdURk1vdmUoYXV0
aG9yU2hlZXQpLCBtX2RvY3VtZW50KSk7CiAgICAgbV9kb2N1bWVudC5zdHlsZVJlc29sdmVyQ2hh
bmdlZChSZWNhbGNTdHlsZUltbWVkaWF0ZWx5KTsKIH0KIApAQCAtMTkxLDcgKzE5MSw3IEBAIHZv
aWQgRXh0ZW5zaW9uU3R5bGVTaGVldHM6Om1heWJlQWRkQ29udGVudEV4dGVuc2lvblNoZWV0KGNv
bnN0IFN0cmluZyYgaWRlbnRpZmllCiAgICAgaWYgKG1fY29udGVudEV4dGVuc2lvblNoZWV0cy5j
b250YWlucyhpZGVudGlmaWVyKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVmPENTU1N0eWxl
U2hlZXQ+IGNzc1NoZWV0ID0gQ1NTU3R5bGVTaGVldDo6Y3JlYXRlKHNoZWV0LCAmbV9kb2N1bWVu
dCk7CisgICAgUmVmPENTU1N0eWxlU2hlZXQ+IGNzc1NoZWV0ID0gQ1NTU3R5bGVTaGVldDo6Y3Jl
YXRlKHNoZWV0LCBtX2RvY3VtZW50KTsKICAgICBtX2NvbnRlbnRFeHRlbnNpb25TaGVldHMuc2V0
KGlkZW50aWZpZXIsICZjc3NTaGVldC5nZXQoKSk7CiAgICAgbV91c2VyU3R5bGVTaGVldHMuYXBw
ZW5kKGFkb3B0UmVmKGNzc1NoZWV0LmxlYWtSZWYoKSkpOwogICAgIG1fc3R5bGVSZXNvbHZlckNo
YW5nZWRUaW1lci5zdGFydE9uZVNob3QoMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNz
aW5nSW5zdHJ1Y3Rpb24uY3BwCmluZGV4IDI4MDMzMTU5ZmFjYWZjY2QzZmI5OGY1YjlmOWU0ZTJh
MzEwNTE4M2EuLjU4YjkwMTFmMmViYTI2MWViZmM5YWU3NjNlNDhlZDFiYTYzNzI0YjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwCkBAIC0xOTAsNyAr
MTkwLDcgQEAgdm9pZCBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246OnNldENTU1N0eWxlU2hlZXQoY29u
c3QgU3RyaW5nJiBocmVmLCBjb25zdCBVUkwmIGJhc2UKICAgICBBU1NFUlQobV9pc0NTUyk7CiAg
ICAgQ1NTUGFyc2VyQ29udGV4dCBwYXJzZXJDb250ZXh0KGRvY3VtZW50KCksIGJhc2VVUkwsIGNo
YXJzZXQpOwogCi0gICAgYXV0byBjc3NTaGVldCA9IENTU1N0eWxlU2hlZXQ6OmNyZWF0ZShTdHls
ZVNoZWV0Q29udGVudHM6OmNyZWF0ZShocmVmLCBwYXJzZXJDb250ZXh0KSwgdGhpcyk7CisgICAg
YXV0byBjc3NTaGVldCA9IENTU1N0eWxlU2hlZXQ6OmNyZWF0ZShTdHlsZVNoZWV0Q29udGVudHM6
OmNyZWF0ZShocmVmLCBwYXJzZXJDb250ZXh0KSwgKnRoaXMpOwogICAgIGNzc1NoZWV0LmdldCgp
LnNldERpc2FibGVkKG1fYWx0ZXJuYXRlKTsKICAgICBjc3NTaGVldC5nZXQoKS5zZXRUaXRsZSht
X3RpdGxlKTsKICAgICBjc3NTaGVldC5nZXQoKS5zZXRNZWRpYVF1ZXJpZXMoTWVkaWFRdWVyeVNl
dDo6Y3JlYXRlKG1fbWVkaWEpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TExpbmtFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNw
cAppbmRleCAzMTJmNjZmNWU4YjI5M2Q5M2Y3YTk1YTcxYWYzMzM3MjM3ZDNjZDQ1Li4wNGYzNDk5
ZjNiYzY5ZWRiYzlkNTc5NzQ1ZjY3N2E5YmI1MmNmMGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTGlua0VsZW1lbnQuY3BwCkBAIC0zMzksNiArMzM5LDE4IEBAIHZvaWQgSFRNTExpbmtFbGVt
ZW50OjpmaW5pc2hQYXJzaW5nQ2hpbGRyZW4oKQogICAgIEhUTUxFbGVtZW50OjpmaW5pc2hQYXJz
aW5nQ2hpbGRyZW4oKTsKIH0KIAordm9pZCBIVE1MTGlua0VsZW1lbnQ6OmluaXRpYWxpemVTdHls
ZVNoZWV0KFJlZjxTdHlsZVNoZWV0Q29udGVudHM+JiYgc3R5bGVTaGVldCwgY29uc3QgQ2FjaGVk
Q1NTU3R5bGVTaGVldCYgY2FjaGVkU3R5bGVTaGVldCkKK3sKKyAgICAvLyBGSVhNRTogb3JpZ2lu
Q2xlYW4gc2hvdWxkIGJlIHR1cm5lZCB0byBmYWxzZSBleGNlcHQgaWYgZmV0Y2ggbW9kZSBpcyBD
T1JTLgorICAgIE9wdGlvbmFsPGJvb2w+IG9yaWdpbkNsZWFuOworICAgIGlmIChjYWNoZWRTdHls
ZVNoZWV0Lm9wdGlvbnMoKS5tb2RlID09IEZldGNoT3B0aW9uczo6TW9kZTo6Q29ycykKKyAgICAg
ICAgb3JpZ2luQ2xlYW4gPSBjYWNoZWRTdHlsZVNoZWV0LmlzQ2xlYW4oKTsKKworICAgIG1fc2hl
ZXQgPSBDU1NTdHlsZVNoZWV0OjpjcmVhdGUoV1RGTW92ZShzdHlsZVNoZWV0KSwgKnRoaXMsIG9y
aWdpbkNsZWFuKTsKKyAgICBtX3NoZWV0LT5zZXRNZWRpYVF1ZXJpZXMoTWVkaWFRdWVyeVNldDo6
Y3JlYXRlQWxsb3dpbmdEZXNjcmlwdGlvblN5bnRheChtX21lZGlhKSk7CisgICAgbV9zaGVldC0+
c2V0VGl0bGUodGl0bGUoKSk7Cit9CisKIHZvaWQgSFRNTExpbmtFbGVtZW50OjpzZXRDU1NTdHls
ZVNoZWV0KGNvbnN0IFN0cmluZyYgaHJlZiwgY29uc3QgVVJMJiBiYXNlVVJMLCBjb25zdCBTdHJp
bmcmIGNoYXJzZXQsIGNvbnN0IENhY2hlZENTU1N0eWxlU2hlZXQqIGNhY2hlZFN0eWxlU2hlZXQp
CiB7CiAgICAgaWYgKCFpbkRvY3VtZW50KCkpIHsKQEAgLTM1OCwxMCArMzcwLDcgQEAgdm9pZCBI
VE1MTGlua0VsZW1lbnQ6OnNldENTU1N0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiBocmVmLCBjb25z
dCBVUkwmIGJhc2VVUkwsIGMKICAgICBpZiAoUmVmUHRyPFN0eWxlU2hlZXRDb250ZW50cz4gcmVz
dG9yZWRTaGVldCA9IGNvbnN0X2Nhc3Q8Q2FjaGVkQ1NTU3R5bGVTaGVldCo+KGNhY2hlZFN0eWxl
U2hlZXQpLT5yZXN0b3JlUGFyc2VkU3R5bGVTaGVldChwYXJzZXJDb250ZXh0LCBjYWNoZVBvbGlj
eSkpIHsKICAgICAgICAgQVNTRVJUKHJlc3RvcmVkU2hlZXQtPmlzQ2FjaGVhYmxlKCkpOwogICAg
ICAgICBBU1NFUlQoIXJlc3RvcmVkU2hlZXQtPmlzTG9hZGluZygpKTsKLQotICAgICAgICBtX3No
ZWV0ID0gQ1NTU3R5bGVTaGVldDo6Y3JlYXRlKHJlc3RvcmVkU2hlZXQucmVsZWFzZU5vbk51bGwo
KSwgdGhpcyk7Ci0gICAgICAgIG1fc2hlZXQtPnNldE1lZGlhUXVlcmllcyhNZWRpYVF1ZXJ5U2V0
OjpjcmVhdGVBbGxvd2luZ0Rlc2NyaXB0aW9uU3ludGF4KG1fbWVkaWEpKTsKLSAgICAgICAgbV9z
aGVldC0+c2V0VGl0bGUodGl0bGUoKSk7CisgICAgICAgIGluaXRpYWxpemVTdHlsZVNoZWV0KHJl
c3RvcmVkU2hlZXQucmVsZWFzZU5vbk51bGwoKSwgKmNhY2hlZFN0eWxlU2hlZXQpOwogCiAgICAg
ICAgIG1fbG9hZGluZyA9IGZhbHNlOwogICAgICAgICBzaGVldExvYWRlZCgpOwpAQCAtMzcwLDkg
KzM3OSw3IEBAIHZvaWQgSFRNTExpbmtFbGVtZW50OjpzZXRDU1NTdHlsZVNoZWV0KGNvbnN0IFN0
cmluZyYgaHJlZiwgY29uc3QgVVJMJiBiYXNlVVJMLCBjCiAgICAgfQogCiAgICAgYXV0byBzdHls
ZVNoZWV0ID0gU3R5bGVTaGVldENvbnRlbnRzOjpjcmVhdGUoaHJlZiwgcGFyc2VyQ29udGV4dCk7
Ci0gICAgbV9zaGVldCA9IENTU1N0eWxlU2hlZXQ6OmNyZWF0ZShzdHlsZVNoZWV0LmNvcHlSZWYo
KSwgdGhpcyk7Ci0gICAgbV9zaGVldC0+c2V0TWVkaWFRdWVyaWVzKE1lZGlhUXVlcnlTZXQ6OmNy
ZWF0ZUFsbG93aW5nRGVzY3JpcHRpb25TeW50YXgobV9tZWRpYSkpOwotICAgIG1fc2hlZXQtPnNl
dFRpdGxlKHRpdGxlKCkpOworICAgIGluaXRpYWxpemVTdHlsZVNoZWV0KHN0eWxlU2hlZXQuY29w
eVJlZigpLCAqY2FjaGVkU3R5bGVTaGVldCk7CiAKICAgICBzdHlsZVNoZWV0LmdldCgpLnBhcnNl
QXV0aG9yU3R5bGVTaGVldChjYWNoZWRTdHlsZVNoZWV0LCBkb2N1bWVudCgpLnNlY3VyaXR5T3Jp
Z2luKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaAppbmRleCA5YjBmNjk0
YjAyM2M0MmIyOGNhOGQwYjg4OTRlMzAyMzIzNTBmYzEyLi5kMWVhNzZkMGRjYmRlZGRlOTAyN2Zj
YTRiZGE5YWYyOTU3NTQ3NDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxM
aW5rRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmgK
QEAgLTgyLDYgKzgyLDggQEAgcHJpdmF0ZToKICAgICBJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1
ZXN0IGluc2VydGVkSW50byhDb250YWluZXJOb2RlJikgZmluYWw7CiAgICAgdm9pZCByZW1vdmVk
RnJvbShDb250YWluZXJOb2RlJikgZmluYWw7CiAKKyAgICB2b2lkIGluaXRpYWxpemVTdHlsZVNo
ZWV0KFJlZjxTdHlsZVNoZWV0Q29udGVudHM+JiYsIGNvbnN0IENhY2hlZENTU1N0eWxlU2hlZXQm
KTsKKwogICAgIC8vIGZyb20gQ2FjaGVkUmVzb3VyY2VDbGllbnQKICAgICB2b2lkIHNldENTU1N0
eWxlU2hlZXQoY29uc3QgU3RyaW5nJiBocmVmLCBjb25zdCBVUkwmIGJhc2VVUkwsIGNvbnN0IFN0
cmluZyYgY2hhcnNldCwgY29uc3QgQ2FjaGVkQ1NTU3R5bGVTaGVldCopIGZpbmFsOwogICAgIGJv
b2wgc2hlZXRMb2FkZWQoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBiMTEwNDVkZWRhZDU1ZGUxMzQyYWJkMWQ4
MWFlNmQ1MWQ1ZWFlMjcwLi45MjE5NzI0ZDljYjA2YjlmNzk1M2E4Y2FhOGY4NjhmNDljY2Y1MTI2
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCkBAIC0xLDUgKzEsMTkgQEAKIDIwMTYtMDktMDUgIFlvdWVubiBGYWJsZXQgIDx5b3Vl
bm5AYXBwbGUuY29tPgogCisgICAgICAgIENsZWFuIENTUyBzdHlsZXNoZWV0cyBzaG91bGQgYmUg
YWNjZXNzaWJsZSBmcm9tIEphdmFTY3JpcHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE1ODcyOAorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFk
bGVyLgorCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9jYW5ub3QtcmVhZC1jc3NydWxl
cy1leHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9jYW5ub3QtcmVh
ZC1jc3NydWxlcy1yZWRpcmVjdC1leHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0cC90ZXN0cy9z
ZWN1cml0eS9jYW5ub3QtcmVhZC1jc3NydWxlcy1yZWRpcmVjdC5odG1sOgorICAgICAgICAqIGh0
dHAvdGVzdHMvc2VjdXJpdHkvY2Fubm90LXJlYWQtY3NzcnVsZXMuaHRtbDoKKyAgICAgICAgKiBo
dHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3NzLW9yaWdpbi1jc3MtOS5odG1sOgorICAgICAgICAqIGh0
dHAvdGVzdHMvc2VjdXJpdHkvcmVzb3VyY2VzL3hvcmlnaW5jc3MxLWFsbG93LXN0YXIucGhwOiBB
ZGRlZC4KKworMjAxNi0wOS0wNSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisK
ICAgICAgICAgQ2FjaGVkUmVzb3VyY2VMb2FkZXIgaXMgbm90IHRha2luZyBpbnRvIGFjY291bnQg
ZmV0Y2ggb3B0aW9ucyB0byB1c2Ugb3Igbm90IGNhY2hlZCByZXNvdXJjZXMKICAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MTM4OQogCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Nhbm5vdC1yZWFkLWNzc3J1bGVzLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY2Fubm90LXJlYWQt
Y3NzcnVsZXMtZXhwZWN0ZWQudHh0CmluZGV4IDdhNzhiYWJjMmE1ZDg0NDdmMDRiNTk0YmIyMmQw
ZTJhZTQyOTY0MzUuLjc2YjNiOTczMmE1Mjk5YjUyYzhhYTkyNTJkZTM3NzVlMmM3MzgxMDEgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY2Fubm90LXJlYWQtY3Nz
cnVsZXMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkv
Y2Fubm90LXJlYWQtY3NzcnVsZXMtZXhwZWN0ZWQudHh0CkBAIC0xLDEwICsxLDIxIEBACitDT05T
T0xFIE1FU1NBR0U6IE9yaWdpbiBodHRwOi8vMTI3LjAuMC4xOjgwMDAgaXMgbm90IGFsbG93ZWQg
YnkgQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luLgogVGhpcyB0ZXN0IHdoZXRoZXIgYSBzY3Jp
cHQgY2FuIHJlYWQgdGhlIHJ1bGVzIGZyb20gYSBjcm9zcy1vcmlnaW4gc3R5bGUgc2hlZXQuIEZv
ciBtb3JlIGluZm9ybWF0aW9uIG9uIHdoeSB3ZSBibG9jayB0aGlzLCBwbGVhc2Ugc2VlIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDUyNy4KIAogVGVzdCBiZWdpbnMu
Ci09PSBDcm9zcy1PcmlnaW4gPT0KKz09IENyb3NzLU9yaWdpbiByZXNvdXJjZSwgbm8tY29ycyBt
b2RlID09CiBjc3NSdWxlczogbnVsbAogcnVsZXM6IG51bGwKLT09IFNhbWUtT3JpZ2luID09Cis9
PSBTYW1lLU9yaWdpbiByZXNvdXJjZSwgbm8tY29ycyBtb2RlID09CiBjc3NSdWxlczogW29iamVj
dCBDU1NSdWxlTGlzdF0KK2Nzc1J1bGVzIGxlbmd0aDogMQogcnVsZXM6IFtvYmplY3QgQ1NTUnVs
ZUxpc3RdCitydWxlcyBsZW5ndGg6IDEKKz09IENyb3NzLU9yaWdpbiByZXNvdXJjZSwgY29ycyBt
b2RlLCBmYWlsaW5nIGNvcnMgY2hlY2sgPT0KK2Nzc1J1bGVzOiBudWxsCitydWxlczogbnVsbAor
PT0gQ3Jvc3MtT3JpZ2luIHJlc291cmNlLCBjb3JzIG1vZGUsIHN1Y2Nlc3NmdWwgY29ycyBjaGVj
ayA9PQorY3NzUnVsZXM6IFtvYmplY3QgQ1NTUnVsZUxpc3RdCitjc3NSdWxlcyBsZW5ndGg6IDEK
K3J1bGVzOiBbb2JqZWN0IENTU1J1bGVMaXN0XQorcnVsZXMgbGVuZ3RoOiAxCiBUZXN0IGVuZHMu
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Nhbm5vdC1yZWFk
LWNzc3J1bGVzLXJlZGlyZWN0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
c2VjdXJpdHkvY2Fubm90LXJlYWQtY3NzcnVsZXMtcmVkaXJlY3QtZXhwZWN0ZWQudHh0CmluZGV4
IDA2MjY0NmZkNDJkOWZlYjhkM2NlM2VmZTgwYTc4NDVkN2U2YTIzOTYuLmYxZjRjMDUwODYzMTA4
ZTI1M2Q4MThjNmU0MzgzMWU1M2U1ZDQwOGEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvc2VjdXJpdHkvY2Fubm90LXJlYWQtY3NzcnVsZXMtcmVkaXJlY3QtZXhwZWN0ZWQudHh0
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY2Fubm90LXJlYWQtY3NzcnVs
ZXMtcmVkaXJlY3QtZXhwZWN0ZWQudHh0CkBAIC0xLDEwICsxLDI2IEBACitDT05TT0xFIE1FU1NB
R0U6IENyb3NzLW9yaWdpbiByZWRpcmVjdGlvbiB0byBodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2Vj
dXJpdHkvcmVzb3VyY2VzL3hvcmlnaW5jc3MxLmNzcyBkZW5pZWQgYnkgQ3Jvc3MtT3JpZ2luIFJl
c291cmNlIFNoYXJpbmcgcG9saWN5OiBPcmlnaW4gaHR0cDovLzEyNy4wLjAuMTo4MDAwIGlzIG5v
dCBhbGxvd2VkIGJ5IEFjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbi4KIFRoaXMgdGVzdCB3aGV0
aGVyIGEgc2NyaXB0IGNhbiByZWFkIHRoZSBydWxlcyBmcm9tIGEgY3Jvc3Mtb3JpZ2luIHN0eWxl
IHNoZWV0IGluIHRoZSBwcmVzZW5jZSBvZiByZWRpcmVjdHMuIEZvciBtb3JlIGluZm9ybWF0aW9u
IG9uIHdoeSB3ZSBibG9jayB0aGlzLCBwbGVhc2Ugc2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDUyNy4KIAogVGVzdCBiZWdpbnMuCi09PSBTYW1lLU9yaWdpbiB0
byBDcm9zcy1PcmlnaW4gPT0KKz09IFNhbWUtT3JpZ2luIHRvIENyb3NzLU9yaWdpbiwgbm8tY29y
cyBtb2RlID09CiBjc3NSdWxlczogbnVsbAogcnVsZXM6IG51bGwKLT09IENyb3NzLU9yaWdpbiB0
byBTYW1lLU9yaWdpbiA9PQorPT0gQ3Jvc3MtT3JpZ2luIHRvIFNhbWUtT3JpZ2luLCBuby1jb3Jz
IG1vZGUgPT0KIGNzc1J1bGVzOiBbb2JqZWN0IENTU1J1bGVMaXN0XQorY3NzUnVsZXMgbGVuZ3Ro
OiAxCiBydWxlczogW29iamVjdCBDU1NSdWxlTGlzdF0KK3J1bGVzIGxlbmd0aDogMQorPT0gU2Ft
ZS1PcmlnaW4gdG8gU2FtZS1PcmlnaW4sIGNvcnMgbW9kZSA9PQorY3NzUnVsZXM6IFtvYmplY3Qg
Q1NTUnVsZUxpc3RdCitjc3NSdWxlcyBsZW5ndGg6IDEKK3J1bGVzOiBbb2JqZWN0IENTU1J1bGVM
aXN0XQorcnVsZXMgbGVuZ3RoOiAxCis9PSBDcm9zcy1PcmlnaW4gdG8gU2FtZS1PcmlnaW4sIGNv
cnMgbW9kZSwgc3VjY2Vzc2Z1bCBjb3JzIGNoZWNrID09Citjc3NSdWxlczogW29iamVjdCBDU1NS
dWxlTGlzdF0KK2Nzc1J1bGVzIGxlbmd0aDogMQorcnVsZXM6IFtvYmplY3QgQ1NTUnVsZUxpc3Rd
CitydWxlcyBsZW5ndGg6IDEKKz09IENyb3NzLU9yaWdpbiB0byBTYW1lLU9yaWdpbiwgY29ycyBt
b2RlLCBmYWlsaW5nIGNvcnMgY2hlY2sgPT0KK2Nzc1J1bGVzOiBudWxsCitydWxlczogbnVsbAog
VGVzdCBlbmRzLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9j
YW5ub3QtcmVhZC1jc3NydWxlcy1yZWRpcmVjdC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zZWN1cml0eS9jYW5ub3QtcmVhZC1jc3NydWxlcy1yZWRpcmVjdC5odG1sCmluZGV4IGE0NWEz
ODUwYjI5NWMzMzVjNWVmMDMyMDNiZDY3OWZkZDE3NDRmNzIuLmNmZWY5YjU2OTYyY2E3NThiOTQ3
ZGRlZTNhZjQ4NjUwNGYxNmFiMGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
c2VjdXJpdHkvY2Fubm90LXJlYWQtY3NzcnVsZXMtcmVkaXJlY3QuaHRtbAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Nhbm5vdC1yZWFkLWNzc3J1bGVzLXJlZGlyZWN0Lmh0
bWwKQEAgLTUsNiArNSwxMiBAQAogICAgICAgaHJlZj0iL3Jlc291cmNlcy9yZWRpcmVjdC5waHA/
dXJsPWh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9yZXNvdXJjZXMvY3NzU3R5bGUuY3Nz
Ij4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIKICAgICAgIGhyZWY9Imh0dHA6Ly9sb2NhbGhvc3Q6
ODAwMC9yZXNvdXJjZXMvcmVkaXJlY3QucGhwP3VybD1odHRwOi8vMTI3LjAuMC4xOjgwMDAvc2Vj
dXJpdHkvcmVzb3VyY2VzL2Nzc1N0eWxlLmNzcyI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiCisg
ICAgICBocmVmPSIvcmVzb3VyY2VzL3JlZGlyZWN0LnBocD91cmw9aHR0cDovLzEyNy4wLjAuMTo4
MDAwL3NlY3VyaXR5L3Jlc291cmNlcy9jc3NTdHlsZS5jc3MiIGNyb3Nzb3JpZ2luPSIiPgorPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IgorICAgICAgaHJlZj0iaHR0cDovL2xvY2FsaG9zdDo4MDAwL3Nl
Y3VyaXR5L3Jlc291cmNlcy9yZWRpcmVjdC1hbGxvdy1zdGFyLnBocD91cmw9aHR0cDovLzEyNy4w
LjAuMTo4MDAwL3NlY3VyaXR5L3Jlc291cmNlcy94b3JpZ2luY3NzMS1hbGxvdy1zdGFyLnBocCIg
Y3Jvc3NvcmlnaW49IiI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiCisgICAgICBocmVmPSJodHRw
Oi8vbG9jYWxob3N0OjgwMDAvcmVzb3VyY2VzL3JlZGlyZWN0LnBocD91cmw9aHR0cDovLzEyNy4w
LjAuMTo4MDAwL3NlY3VyaXR5L3Jlc291cmNlcy94b3JpZ2luY3NzMS5jc3MiIGNyb3Nzb3JpZ2lu
PSIiPgogPHNjcmlwdD4KIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKICAgICB0ZXN0UnVubmVyLmR1
bXBBc1RleHQoKTsKQEAgLTE1LDE2ICsyMSwzOCBAQCBmdW5jdGlvbiBsb2cobXNnKSB7CiAgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5hcHBlbmRDaGlsZChkaXYpOwogfQog
CitmdW5jdGlvbiBjaGVja0NTU1J1bGVzKHNoZWV0KQoreworICAgIHRyeSB7CisgICAgICAgIHZh
ciBjc3NSdWxlcyA9IHNoZWV0LmNzc1J1bGVzOworICAgICAgICBsb2coImNzc1J1bGVzOiAiICsg
Y3NzUnVsZXMpOworICAgICAgICBpZiAoY3NzUnVsZXMpCisgICAgICAgICAgICBsb2coImNzc1J1
bGVzIGxlbmd0aDogIiArIGNzc1J1bGVzLmxlbmd0aCk7CisgICAgfSBjYXRjaChlKSB7CisgICAg
ICAgIGxvZygiZXhjZXB0aW9uIHRocm93biBmb3IgY3NzUnVsZXM6ICIgKyBlKTsKKyAgICB9Cisg
ICAgdHJ5IHsKKyAgICAgICAgdmFyIHJ1bGVzID0gc2hlZXQucnVsZXM7CisgICAgICAgIGxvZygi
cnVsZXM6ICIgKyBydWxlcyk7CisgICAgICAgIGlmIChydWxlcykKKyAgICAgICAgICAgIGxvZygi
cnVsZXMgbGVuZ3RoOiAiICsgcnVsZXMubGVuZ3RoKTsKKyAgICB9IGNhdGNoKGUpIHsKKyAgICAg
ICAgbG9nKCJleGNlcHRpb24gdGhyb3duIGZvciBydWxlczogIiArIGUpOworICAgIH0KK30KKwog
d2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkgewogICAgIGxvZygiVGVzdCBiZWdpbnMuIik7Ci0g
ICAgbG9nKCI9PSBTYW1lLU9yaWdpbiB0byBDcm9zcy1PcmlnaW4gPT0iKTsKLSAgICB2YXIgc2hl
ZXQxID0gZG9jdW1lbnQuc3R5bGVTaGVldHNbMF07Ci0gICAgbG9nKCJjc3NSdWxlczogIiArIHNo
ZWV0MS5jc3NSdWxlcyk7Ci0gICAgbG9nKCJydWxlczogIiArIHNoZWV0MS5ydWxlcyk7Ci0gICAg
bG9nKCI9PSBDcm9zcy1PcmlnaW4gdG8gU2FtZS1PcmlnaW4gPT0iKTsKLSAgICB2YXIgc2hlZXQy
ID0gZG9jdW1lbnQuc3R5bGVTaGVldHNbMV07Ci0gICAgbG9nKCJjc3NSdWxlczogIiArIHNoZWV0
Mi5jc3NSdWxlcyk7Ci0gICAgbG9nKCJydWxlczogIiArIHNoZWV0Mi5ydWxlcyk7CisgICAgbG9n
KCI9PSBTYW1lLU9yaWdpbiB0byBDcm9zcy1PcmlnaW4sIG5vLWNvcnMgbW9kZSA9PSIpOworICAg
IGNoZWNrQ1NTUnVsZXMoZG9jdW1lbnQuc3R5bGVTaGVldHNbMF0pOworICAgIGxvZygiPT0gQ3Jv
c3MtT3JpZ2luIHRvIFNhbWUtT3JpZ2luLCBuby1jb3JzIG1vZGUgPT0iKTsKKyAgICBjaGVja0NT
U1J1bGVzKGRvY3VtZW50LnN0eWxlU2hlZXRzWzFdKTsKKyAgICBsb2coIj09IFNhbWUtT3JpZ2lu
IHRvIFNhbWUtT3JpZ2luLCBjb3JzIG1vZGUgPT0iKTsKKyAgICBjaGVja0NTU1J1bGVzKGRvY3Vt
ZW50LnN0eWxlU2hlZXRzWzJdKTsKKyAgICBsb2coIj09IENyb3NzLU9yaWdpbiB0byBTYW1lLU9y
aWdpbiwgY29ycyBtb2RlLCBzdWNjZXNzZnVsIGNvcnMgY2hlY2sgPT0iKTsKKyAgICBjaGVja0NT
U1J1bGVzKGRvY3VtZW50LnN0eWxlU2hlZXRzWzNdKTsKKyAgICBsb2coIj09IENyb3NzLU9yaWdp
biB0byBTYW1lLU9yaWdpbiwgY29ycyBtb2RlLCBmYWlsaW5nIGNvcnMgY2hlY2sgPT0iKTsKKyAg
ICBjaGVja0NTU1J1bGVzKGRvY3VtZW50LnN0eWxlU2hlZXRzWzRdKTsKICAgICBsb2coIlRlc3Qg
ZW5kcy4iKTsKIH0KIDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zZWN1cml0eS9jYW5ub3QtcmVhZC1jc3NydWxlcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9zZWN1cml0eS9jYW5ub3QtcmVhZC1jc3NydWxlcy5odG1sCmluZGV4IDYyNjA5MmJkNDNk
OTg1ZjE4MGQ0ZmNmY2E4OTg3ZDcwZDYxMDQwYjUuLjYzZmQ2Y2UxODA5NjhlNDM4MTBiZGVmODM3
OGFlZGUwM2Y2ZTUxYmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJp
dHkvY2Fubm90LXJlYWQtY3NzcnVsZXMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3NlY3VyaXR5L2Nhbm5vdC1yZWFkLWNzc3J1bGVzLmh0bWwKQEAgLTQsNiArNCwxMCBAQAogPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IgogICAgICAgaHJlZj0iaHR0cDovL2xvY2FsaG9zdDo4MDAwL3Nl
Y3VyaXR5L3Jlc291cmNlcy9jc3NTdHlsZS5jc3MiPgogPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSJyZXNvdXJjZXMvY3NzU3R5bGUuY3NzIj4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIKKyAg
ICAgIGhyZWY9Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9yZXNvdXJjZXMvY3NzU3R5
bGUuY3NzIiBjcm9zc29yaWdpbj0iIj4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIKKyAgICAgIGhy
ZWY9Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9yZXNvdXJjZXMveG9yaWdpbmNzczEt
YWxsb3ctc3Rhci5waHAiIGNyb3Nzb3JpZ2luPSIiPgogPHNjcmlwdD4KIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikKICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKQEAgLTE0LDE2ICsxOCwzNiBA
QCBmdW5jdGlvbiBsb2cobXNnKSB7CiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNv
bGUiKS5hcHBlbmRDaGlsZChkaXYpOwogfQogCitmdW5jdGlvbiBjaGVja0NTU1J1bGVzKHNoZWV0
KQoreworICAgIHRyeSB7CisgICAgICAgIHZhciBjc3NSdWxlcyA9IHNoZWV0LmNzc1J1bGVzOwor
ICAgICAgICBsb2coImNzc1J1bGVzOiAiICsgY3NzUnVsZXMpOworICAgICAgICBpZiAoY3NzUnVs
ZXMpCisgICAgICAgICAgICBsb2coImNzc1J1bGVzIGxlbmd0aDogIiArIGNzc1J1bGVzLmxlbmd0
aCk7CisgICAgfSBjYXRjaChlKSB7CisgICAgICAgIGxvZygiZXhjZXB0aW9uIHRocm93biBmb3Ig
Y3NzUnVsZXM6ICIgKyBlKTsKKyAgICB9CisgICAgdHJ5IHsKKyAgICAgICAgdmFyIHJ1bGVzID0g
c2hlZXQucnVsZXM7CisgICAgICAgIGxvZygicnVsZXM6ICIgKyBydWxlcyk7CisgICAgICAgIGlm
IChydWxlcykKKyAgICAgICAgICAgIGxvZygicnVsZXMgbGVuZ3RoOiAiICsgcnVsZXMubGVuZ3Ro
KTsKKyAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgbG9nKCJleGNlcHRpb24gdGhyb3duIGZvciBy
dWxlczogIiArIGUpOworICAgIH0KK30KKwogd2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkgewog
ICAgIGxvZygiVGVzdCBiZWdpbnMuIik7Ci0gICAgbG9nKCI9PSBDcm9zcy1PcmlnaW4gPT0iKTsK
LSAgICB2YXIgc2hlZXQxID0gZG9jdW1lbnQuc3R5bGVTaGVldHNbMF07Ci0gICAgbG9nKCJjc3NS
dWxlczogIiArIHNoZWV0MS5jc3NSdWxlcyk7Ci0gICAgbG9nKCJydWxlczogIiArIHNoZWV0MS5y
dWxlcyk7Ci0gICAgbG9nKCI9PSBTYW1lLU9yaWdpbiA9PSIpOwotICAgIHZhciBzaGVldDIgPSBk
b2N1bWVudC5zdHlsZVNoZWV0c1sxXTsKLSAgICBsb2coImNzc1J1bGVzOiAiICsgc2hlZXQyLmNz
c1J1bGVzKTsKLSAgICBsb2coInJ1bGVzOiAiICsgc2hlZXQyLnJ1bGVzKTsKKyAgICBsb2coIj09
IENyb3NzLU9yaWdpbiByZXNvdXJjZSwgbm8tY29ycyBtb2RlID09Iik7CisgICAgY2hlY2tDU1NS
dWxlcyhkb2N1bWVudC5zdHlsZVNoZWV0c1swXSk7CisgICAgbG9nKCI9PSBTYW1lLU9yaWdpbiBy
ZXNvdXJjZSwgbm8tY29ycyBtb2RlID09Iik7CisgICAgY2hlY2tDU1NSdWxlcyhkb2N1bWVudC5z
dHlsZVNoZWV0c1sxXSk7CisgICAgbG9nKCI9PSBDcm9zcy1PcmlnaW4gcmVzb3VyY2UsIGNvcnMg
bW9kZSwgZmFpbGluZyBjb3JzIGNoZWNrID09Iik7CisgICAgY2hlY2tDU1NSdWxlcyhkb2N1bWVu
dC5zdHlsZVNoZWV0c1syXSk7CisgICAgbG9nKCI9PSBDcm9zcy1PcmlnaW4gcmVzb3VyY2UsIGNv
cnMgbW9kZSwgc3VjY2Vzc2Z1bCBjb3JzIGNoZWNrID09Iik7CisgICAgY2hlY2tDU1NSdWxlcyhk
b2N1bWVudC5zdHlsZVNoZWV0c1szXSk7CiAgICAgbG9nKCJUZXN0IGVuZHMuIik7CiB9CiA8L3Nj
cmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3Mt
b3JpZ2luLWNzcy05Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3Nz
LW9yaWdpbi1jc3MtOS5odG1sCmluZGV4IDYxYjI1MDI0OGFiYTkxYjQ4ZmYyOGI0MWVmNGZhZWU0
NDc3YTc1MjQuLjViOTA2MWVmYjkxNmQyYTg3ZWI4NTkzNzMxYzEzYzI3NTA0NzQ2ZmYgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3Mtb3JpZ2luLWNzcy05
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1vcmlnaW4t
Y3NzLTkuaHRtbApAQCAtMjEsOCArMjEsNyBAQCBmdW5jdGlvbiBjaGVja0NTU0xvYWRpbmcoaWQs
IGV4cGVjdFRvSW5jbHVkZU9yaWdpbiwgZXhwZWN0VmlzaWJpbGl0eSkKIHsKICAgICBleHBlY3Rl
ZENvbG9yID0gZXhwZWN0VG9JbmNsdWRlT3JpZ2luID8gInJnYigyNTUsIDI1NSwgMCkiIDogInJn
YigwLCAwLCAyNTUpIjsKICAgICBhc3NlcnRfZXF1YWxzKGdldEJhY2tncm91bmRDb2xvckZvcklk
KGlkKSwgZXhwZWN0ZWRDb2xvcik7Ci0gICAgLy8gRklYTUU6IGNzc1J1bGVzIHNob3VsZCBiZSBt
YWRlIHZpc2libGUgYWNjb3JkaW5nIHJlc291cmNlIHRhaW50ZWQgc3RhdHVzLCBub3Qgb25seSBi
YXNlZCBvbiB0aGUgcmVzb3VyY2UgVVJMIGJlaW5nIGNyb3NzIG9yaWdpbi4KLSAgICAvLyBhc3Nl
cnRfZXF1YWxzKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsaW5rLSIgKyBpZCkuc2hlZXQuY3Nz
UnVsZXMgIT09IG51bGwsIGV4cGVjdFZpc2liaWxpdHkpOworICAgIGFzc2VydF9lcXVhbHMoZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxpbmstIiArIGlkKS5zaGVldC5jc3NSdWxlcyAhPT0gbnVs
bCwgZXhwZWN0VmlzaWJpbGl0eSk7CiB9CiAKIHZhciBvbmxvYWRUZXN0ID0gYXN5bmNfdGVzdCgi
IFRlc3RpbmcgdGhhdCBsaW5rIGVsZW1lbnQgdG8gbG9hZCBzdHlsZXNoZWV0cyBjb3JyZWN0bHkg
aGFuZGxlIGNyb3Nzb3JpZ2luIG1vZGUuIik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3NlY3VyaXR5L3Jlc291cmNlcy94b3JpZ2luY3NzMS1hbGxvdy1zdGFyLnBocCBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcmVzb3VyY2VzL3hvcmlnaW5jc3MxLWFsbG93
LXN0YXIucGhwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ0Nzk4NDQxNDhmNDA5ZDIwNDdiYzIwN2JiZTJlM2Y1YTQ0
NjAzNzgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5
L3Jlc291cmNlcy94b3JpZ2luY3NzMS1hbGxvdy1zdGFyLnBocApAQCAtMCwwICsxLDExIEBACis8
P3BocAoraGVhZGVyKCJBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW46ICoiKTsKKworJG5hbWUg
PSAneG9yaWdpbmNzczEuY3NzJzsKKyRmcCA9IGZvcGVuKCRuYW1lLCAncmInKTsKK2hlYWRlcigi
Q29udGVudC1UeXBlOiB0ZXh0L2NzcyIpOworaGVhZGVyKCJDb250ZW50LUxlbmd0aDogIiAuIGZp
bGVzaXplKCRuYW1lKSk7CisKK2ZwYXNzdGhydSgkZnApOworZXhpdDsKKz8+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>