<?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>136719</bug_id>
          
          <creation_ts>2014-09-10 15:31:50 -0700</creation_ts>
          <short_desc>Avoid redundant isElementNode() checks in Traversal&lt;HTML*Element&gt; / Traversal&lt;SVG*Element&gt;</short_desc>
          <delta_ts>2014-09-15 08:59:57 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>koivisto</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1034436</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-09-10 15:31:50 -0700</bug_when>
    <thetext>Avoid redundant isElementNode() checks in Traversal&lt;HTML*Element&gt; / Traversal&lt;SVG*Element&gt;.  We used to iterate through Elements, and then call isElementOfType&lt;HTML*Element&gt;()  on each Element. This made sense because hasTagName() used to be defined on Element. However, after http://trac.webkit.org/changeset/165699, hasTagName() is now defined on Node for HTMLQualifiedName / SVGQualifiedName.

Node::hasTagName(HTMLQualifiedName) basically does the following check &quot;isHTMLElement() &amp;&amp;  toHTMLElement(*this).hasTagName(tagName)&quot;. As a consequence, doing an isElementNode() check is now redundant as isHTMLElement() is defined on Node.

This patch adds isElementOfType&lt;ElementType&gt;(Node) helper functions and updates Traversal&lt;ElementType&gt; so that the methods use NodeTraversal internally instead of Traversal&lt;ElementType&gt;. As a result, we now iterate over Nodes (not Elements) and call the new isElementOfType&lt;ElementType&gt;(Node) helpers (which are efficient after r165699).

Before the patch, the code ended up doing the following checks for Traversal&lt;HTML*element&gt;:
node.isElementNode() &amp;&amp; toElement(node).isHTMLElement() &amp;&amp; toHTMLElement(node).hasTagName(HTMLNames::fooTag)

After the patch, the code only does:
node.isHTMLElement() &amp;&amp; toHTMLElement(node).hasTagName(HTMLNames::fooTag)

As an example, here is the assembly diff on HTMLFiedSetElement::updateFromControlElementsAncestorDisabledStateUnder(), which uses Traversal&lt;HTMLFormControlElement&gt; API:
http://pastebin.com/zyJ3kymP

For the HTMLFieldSetElement.o object file, the overall number of asm lines goes down by 90 (out of 842).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1034628</commentid>
    <comment_count>1</comment_count>
      <attachid>237959</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-09-11 10:07:14 -0700</bug_when>
    <thetext>Created attachment 237959
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1034665</commentid>
    <comment_count>2</comment_count>
      <attachid>237972</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-09-11 12:01:10 -0700</bug_when>
    <thetext>Created attachment 237972
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1034675</commentid>
    <comment_count>3</comment_count>
      <attachid>237977</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-09-11 12:24:51 -0700</bug_when>
    <thetext>Created attachment 237977
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1034778</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-09-11 18:38:51 -0700</bug_when>
    <thetext>I suspect there is a better way to do this with a far smaller patch. Let me think about it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1035115</commentid>
    <comment_count>5</comment_count>
      <attachid>237977</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-09-14 12:53:23 -0700</bug_when>
    <thetext>Comment on attachment 237977
Patch

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

I think we don’t need multiple function templates when the isXXX function is already overloaded for all the types we care about. It would be nice to keep the explicit mention of Node to a minimum.

&gt; Source/WebCore/ChangeLog:41
&gt; +        Add new isElementOfType() helper taking a Node in argument.

I don’t understand why we need this. It seems like a step in the wrong direction. One of the main reasons we have these helpers is to create a future where we code in terms of Element and not Node.

Is there a way to accomplish everything else without adding all these Node overloads in all the files?

I understand that somehow we want to express generically that checking isHTMLElement also implicitly checks isElement and avoid a second check. Is there some other way to do this?

&gt; Source/WebCore/html/HTMLFormControlElement.h:197
&gt;  inline bool isHTMLFormControlElement(const Element&amp; element) { return element.isFormControlElement(); }
&gt;  inline bool isHTMLFormControlElement(const Node&amp; node) { return node.isElementNode() &amp;&amp; toElement(node).isFormControlElement(); }
&gt; +template &lt;&gt; inline bool isElementOfType&lt;const HTMLFormControlElement&gt;(const Node&amp; node) { return isHTMLFormControlElement(node); }
&gt;  template &lt;&gt; inline bool isElementOfType&lt;const HTMLFormControlElement&gt;(const Element&amp; element) { return isHTMLFormControlElement(element); }

Node should come after Element to match the code above, which goes from more specific to more general.

Can this be a single template rather than two functions? The argument type would need to be a template argument, but we wouldn’t have to specify Element and Node.

&gt; Source/WebCore/html/HTMLFrameElementBase.h:81
&gt; +inline bool isHTMLFrameElementBase(const HTMLElement&amp; element) { return isHTMLFrameElement(element) || isHTMLIFrameElement(element); }
&gt; +inline bool isHTMLFrameElementBase(const Node&amp; node) { return isHTMLFrameElement(node) || isHTMLIFrameElement(node); }

Can this be a single template rather than two functions? The argument type would need to be a template argument, but we wouldn’t have to specify HTMLElement and Node.

&gt; Source/WebCore/html/HTMLMediaElement.h:920
&gt;  void isHTMLMediaElement(const HTMLMediaElement&amp;); // Catch unnecessary runtime check of type known at compile time.
&gt;  inline bool isHTMLMediaElement(const Element&amp; element) { return element.isMediaElement(); }
&gt;  inline bool isHTMLMediaElement(const Node&amp; node) { return node.isElementNode() &amp;&amp; toElement(node).isMediaElement(); }
&gt; -template &lt;&gt; inline bool isElementOfType&lt;const HTMLMediaElement&gt;(const Element&amp; element) { return element.isMediaElement(); }
&gt; +template &lt;&gt; inline bool isElementOfType&lt;const HTMLMediaElement&gt;(const Node&amp; node) { return isHTMLMediaElement(node); }
&gt; +template &lt;&gt; inline bool isElementOfType&lt;const HTMLMediaElement&gt;(const Element&amp; element) { return isHTMLMediaElement(element); }

Node should come after Element to match the code above, which goes from more specific to more general.

But can this be a single template rather than two functions? The argument type would need to be a template argument, but we wouldn’t have to specify Element and Node.

&gt; Source/WebCore/html/LabelableElement.h:57
&gt; -template &lt;&gt; inline bool isElementOfType&lt;const LabelableElement&gt;(const Element&amp; element) { return isLabelableElement(element); }
&gt; +template &lt;&gt; inline bool isElementOfType&lt;const LabelableElement&gt;(const HTMLElement&amp; element) { return isLabelableElement(element); }
&gt; +template &lt;&gt; inline bool isElementOfType&lt;const LabelableElement&gt;(const Node&amp; node) { return isLabelableElement(node); }

Can this be a single template rather than two functions? The argument type would need to be a template argument, but we wouldn’t have to specify HTMLElement and Node.

&gt; Source/WebCore/mathml/MathMLElement.h:82
&gt;  inline bool isMathMLElement(const Node&amp; node) { return node.isMathMLElement(); }
&gt;  NODE_TYPE_CASTS(MathMLElement)
&gt;  
&gt; +template &lt;typename T&gt; bool isElementOfType(const MathMLElement&amp;);
&gt; +template &lt;&gt; inline bool isElementOfType&lt;const MathMLElement&gt;(const Node&amp; node) { return node.isMathMLElement(); }
&gt; +template &lt;&gt; inline bool isElementOfType&lt;const MathMLElement&gt;(const MathMLElement&amp;) { return true; }

Node should come after MathMLElement to match the code above, which goes from specific to general. This should also come before the NODE_TYPE_CASTS macro to match the other files.

&gt; Source/WebCore/svg/SVGElement.h:230
&gt; -template &lt;&gt; inline bool isElementOfType&lt;const SVGElement&gt;(const Element&amp; element) { return element.isSVGElement(); }
&gt; +template &lt;typename T&gt; bool isElementOfType(const SVGElement&amp;);
&gt; +template &lt;&gt; inline bool isElementOfType&lt;const SVGElement&gt;(const Node&amp; node) { return node.isSVGElement(); }
&gt; +template &lt;&gt; inline bool isElementOfType&lt;const SVGElement&gt;(const SVGElement&amp;) { return true; }

Node should come after SVGElement to match the code above, which goes from more specific to more general.

&gt; Source/WebCore/svg/SVGFilterPrimitiveStandardAttributes.h:89
&gt; +template &lt;&gt; inline bool isElementOfType&lt;const SVGFilterPrimitiveStandardAttributes&gt;(const SVGElement&amp; element) { return isSVGFilterPrimitiveStandardAttributes(element); }
&gt; +template &lt;&gt; inline bool isElementOfType&lt;const SVGFilterPrimitiveStandardAttributes&gt;(const Node&amp; node) { return isSVGFilterPrimitiveStandardAttributes(node); }

Can this be a single template rather than two functions? The argument type would need to be a template argument, but we wouldn’t have to specify SVGElement and Node.

&gt; Source/WebCore/svg/animation/SVGSMILElement.h:244
&gt; +template &lt;&gt; inline bool isElementOfType&lt;const SVGSMILElement&gt;(const SVGElement&amp; element) { return isSVGSMILElement(element); }
&gt; +template &lt;&gt; inline bool isElementOfType&lt;const SVGSMILElement&gt;(const Node&amp; node) { return isSVGSMILElement(node); }

Can this be a single template rather than two specializations? The argument type would need to be a template argument, but we wouldn’t have to specify HTMLElement and Node.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1035123</commentid>
    <comment_count>6</comment_count>
      <attachid>237977</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-09-14 14:54:51 -0700</bug_when>
    <thetext>Comment on attachment 237977
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:41
&gt;&gt; +        Add new isElementOfType() helper taking a Node in argument.
&gt; 
&gt; I don’t understand why we need this. It seems like a step in the wrong direction. One of the main reasons we have these helpers is to create a future where we code in terms of Element and not Node.
&gt; 
&gt; Is there a way to accomplish everything else without adding all these Node overloads in all the files?
&gt; 
&gt; I understand that somehow we want to express generically that checking isHTMLElement also implicitly checks isElement and avoid a second check. Is there some other way to do this?

Yes, there is now an overload of isElementOfType() taking a Node in argument. The thing is that isElementOfType() is never called explicitly by developers, it is only called internally in our fancy traversal APIs (i.e. Traversal&lt;*Element&gt;, childrenOfType(), ...). So developers still very much code in terms of Elements and not Nodes. The only thing is that the Traversal API now uses NodeTraversal *internally* instead of ElementTraversal to bypass the isElementNode() check and call Node::hasTagName(HTMLQualifiedName) directly.

&gt;&gt; Source/WebCore/html/HTMLFormControlElement.h:197
&gt;&gt;  template &lt;&gt; inline bool isElementOfType&lt;const HTMLFormControlElement&gt;(const Element&amp; element) { return isHTMLFormControlElement(element); }
&gt; 
&gt; Node should come after Element to match the code above, which goes from more specific to more general.
&gt; 
&gt; Can this be a single template rather than two functions? The argument type would need to be a template argument, but we wouldn’t have to specify Element and Node.

Yes, it sounds like your proposal would work and would avoid having 2 functions. I&apos;ll give it a try and verify the impact on binary size to be sure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1035133</commentid>
    <comment_count>7</comment_count>
      <attachid>238098</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-09-14 18:32:09 -0700</bug_when>
    <thetext>Created attachment 238098
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1035134</commentid>
    <comment_count>8</comment_count>
      <attachid>237977</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-09-14 18:34:44 -0700</bug_when>
    <thetext>Comment on attachment 237977
Patch

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

Please take another look as the change was not trivial.

&gt;&gt;&gt; Source/WebCore/html/HTMLFormControlElement.h:197
&gt;&gt;&gt;  template &lt;&gt; inline bool isElementOfType&lt;const HTMLFormControlElement&gt;(const Element&amp; element) { return isHTMLFormControlElement(element); }
&gt;&gt; 
&gt;&gt; Node should come after Element to match the code above, which goes from more specific to more general.
&gt;&gt; 
&gt;&gt; Can this be a single template rather than two functions? The argument type would need to be a template argument, but we wouldn’t have to specify Element and Node.
&gt; 
&gt; Yes, it sounds like your proposal would work and would avoid having 2 functions. I&apos;ll give it a try and verify the impact on binary size to be sure.

Done. However, since C++ does not support function template partial specialization, I had to introduce an IsElementOfType functor (isElementOfType() calls that functor so there is no need to update the call sites).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1035158</commentid>
    <comment_count>9</comment_count>
      <attachid>238098</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-09-14 22:12:16 -0700</bug_when>
    <thetext>Comment on attachment 238098
Patch

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

&gt; Source/WebCore/dom/Element.h:675
&gt; +    bool operator()(ArgType&amp;);

I’m not sure we should use operator() rather than a named function for this. I would think I would name the struct ElementTypeCastTraits and name the function “is”.

&gt; Source/WebCore/dom/Element.h:680
&gt; +inline bool isElementOfType(const ArgType&amp; node) { return IsElementOfType&lt;ExpectedType, const ArgType&gt;()(node); }

Seems like we could omit both “const” here.

&gt; Source/WebCore/html/HTMLElement.h:155
&gt; +template &lt;typename ArgType&gt;
&gt; +struct IsElementOfType&lt;const HTMLElement, ArgType&gt; {
&gt; +    bool operator()(ArgType&amp; node) { return isHTMLElement(node); }
&gt; +};

Since the entire template now is the same for every class except for the class name, maybe we can make the NODE_TYPE_CASTS macro generate this instead of having to repeat it in every source file, or have a variant on NODE_TYPE_CASTS that does it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1035159</commentid>
    <comment_count>10</comment_count>
      <attachid>238098</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-09-14 22:13:45 -0700</bug_when>
    <thetext>Comment on attachment 238098
Patch

Rejecting attachment 238098 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.appspot.com&apos;, &apos;--bot-id=webkit-cq-02&apos;, &apos;apply-attachment&apos;, &apos;--no-update&apos;, &apos;--non-interactive&apos;, 238098, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
/WebCore/html/HTMLMediaElement.h
patching file Source/WebCore/html/HTMLPlugInImageElement.h
patching file Source/WebCore/html/LabelableElement.h
patching file Source/WebCore/mathml/MathMLElement.h
patching file Source/WebCore/svg/SVGElement.h
patching file Source/WebCore/svg/SVGFilterPrimitiveStandardAttributes.h
patching file Source/WebCore/svg/animation/SVGSMILElement.h

Failed to run &quot;[u&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

Full output: http://webkit-queues.appspot.com/results/6358717847044096</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1035174</commentid>
    <comment_count>11</comment_count>
      <attachid>238098</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2014-09-14 23:22:47 -0700</bug_when>
    <thetext>Comment on attachment 238098
Patch

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

&gt; Source/WebCore/ChangeLog:3
&gt; +        Avoid redundant isElementNode() checks in Traversal&lt;HTML*Element&gt; / Traversal&lt;SVG*Element&gt;

Note that Traversal&lt;&gt; template is obsolete and all clients should use element iterators instead. The iterators are still implemented in terms of Traversal&lt;&gt; so improving it is useful. However it should really be considered an implementation detail of the iterators and should probably be made more so (via naming or actually moving the code to the iterators).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1035250</commentid>
    <comment_count>12</comment_count>
      <attachid>238098</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-09-15 07:48:45 -0700</bug_when>
    <thetext>Comment on attachment 238098
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:3
&gt;&gt; +        Avoid redundant isElementNode() checks in Traversal&lt;HTML*Element&gt; / Traversal&lt;SVG*Element&gt;
&gt; 
&gt; Note that Traversal&lt;&gt; template is obsolete and all clients should use element iterators instead. The iterators are still implemented in terms of Traversal&lt;&gt; so improving it is useful. However it should really be considered an implementation detail of the iterators and should probably be made more so (via naming or actually moving the code to the iterators).

Understood, thanks for the information Antti.

&gt;&gt; Source/WebCore/dom/Element.h:680
&gt;&gt; +inline bool isElementOfType(const ArgType&amp; node) { return IsElementOfType&lt;ExpectedType, const ArgType&gt;()(node); }
&gt; 
&gt; Seems like we could omit both “const” here.

Actually, it did not build otherwise. isElementOfType() is sometimes called with a non-const argument and thus, the compiler complains about IsElementOfType&lt;ExpectedType, NonConstType&gt; not being defined.

&gt;&gt; Source/WebCore/html/HTMLElement.h:155
&gt;&gt; +};
&gt; 
&gt; Since the entire template now is the same for every class except for the class name, maybe we can make the NODE_TYPE_CASTS macro generate this instead of having to repeat it in every source file, or have a variant on NODE_TYPE_CASTS that does it.

Yes, I&apos;ll look into this in a follow-up patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1035252</commentid>
    <comment_count>13</comment_count>
      <attachid>238128</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-09-15 07:54:15 -0700</bug_when>
    <thetext>Created attachment 238128
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1035253</commentid>
    <comment_count>14</comment_count>
      <attachid>238128</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-09-15 08:06:14 -0700</bug_when>
    <thetext>Comment on attachment 238128
Patch

Will stop using a Functor as suggested by Darin and reupload.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1035255</commentid>
    <comment_count>15</comment_count>
      <attachid>238129</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-09-15 08:14:52 -0700</bug_when>
    <thetext>Created attachment 238129
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1035256</commentid>
    <comment_count>16</comment_count>
      <attachid>238098</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-09-15 08:16:25 -0700</bug_when>
    <thetext>Comment on attachment 238098
Patch

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

&gt;&gt; Source/WebCore/dom/Element.h:675
&gt;&gt; +    bool operator()(ArgType&amp;);
&gt; 
&gt; I’m not sure we should use operator() rather than a named function for this. I would think I would name the struct ElementTypeCastTraits and name the function “is”.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1035260</commentid>
    <comment_count>17</comment_count>
      <attachid>238129</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-09-15 08:59:52 -0700</bug_when>
    <thetext>Comment on attachment 238129
Patch

Clearing flags on attachment: 238129

Committed r173622: &lt;http://trac.webkit.org/changeset/173622&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1035261</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-09-15 08:59:57 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>237959</attachid>
            <date>2014-09-11 10:07:14 -0700</date>
            <delta_ts>2014-09-11 12:00:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-136719-20140911100710.patch</filename>
            <type>text/plain</type>
            <size>26382</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTczNTEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTRkZmRlZDMwNDNiNWUz
ZjkxMTA5MDczYjllOGI0ZDU4YjY2Nzg3ZC4uZmQyNWU3YjdkMjc1YmE1OWNjMjhjMmM3MTI4MTVl
MThiMDhjN2RlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzMiBAQAorMjAxNC0wOS0xMCAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEF2b2lkIHJlZHVuZGFudCBp
c0VsZW1lbnROb2RlKCkgY2hlY2tzIGluIFRyYXZlcnNhbDxIVE1MKkVsZW1lbnQ+IC8gVHJhdmVy
c2FsPFNWRypFbGVtZW50PgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTM2NzE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQXZvaWQgcmVkdW5kYW50IGlzRWxlbWVudE5vZGUoKSBjaGVja3MgaW4gVHJhdmVy
c2FsPEhUTUwqRWxlbWVudD4gLworICAgICAgICBUcmF2ZXJzYWw8U1ZHKkVsZW1lbnQ+LiAgV2Ug
dXNlZCB0byBpdGVyYXRlIHRocm91Z2ggRWxlbWVudHMsIGFuZCB0aGVuCisgICAgICAgIGNhbGwg
aXNFbGVtZW50T2ZUeXBlPEhUTUwqRWxlbWVudD4oKSAgb24gZWFjaCBFbGVtZW50LiBUaGlzIG1h
ZGUgc2Vuc2UKKyAgICAgICAgYmVjYXVzZSBoYXNUYWdOYW1lKCkgdXNlZCB0byBiZSBkZWZpbmVk
IG9uIEVsZW1lbnQuIEhvd2V2ZXIsIGFmdGVyCisgICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5v
cmcvY2hhbmdlc2V0LzE2NTY5OSwgaGFzVGFnTmFtZSgpIGlzIG5vdyBkZWZpbmVkIG9uCisgICAg
ICAgIE5vZGUgZm9yIEhUTUxRdWFsaWZpZWROYW1lIC8gU1ZHUXVhbGlmaWVkTmFtZSBhcmd1bWVu
dHMuCisKKyAgICAgICAgTm9kZTo6aGFzVGFnTmFtZShIVE1MUXVhbGlmaWVkTmFtZSkgYmFzaWNh
bGx5IGRvZXMgdGhlIGZvbGxvd2luZyBjaGVjaworICAgICAgICAiaXNIVE1MRWxlbWVudCgpICYm
ICB0b0hUTUxFbGVtZW50KCp0aGlzKS5oYXNUYWdOYW1lKHRhZ05hbWUpIi4gQXMgYQorICAgICAg
ICBjb25zZXF1ZW5jZSwgZG9pbmcgYW4gaXNFbGVtZW50Tm9kZSgpIGNoZWNrIGlzIG5vdyByZWR1
bmRhbnQgYXMKKyAgICAgICAgaXNIVE1MRWxlbWVudCgpIGlzIGRlZmluZWQgb24gTm9kZS4KKwor
ICAgICAgICBUaGlzIHBhdGNoIGFkZHMgaXNFbGVtZW50T2ZUeXBlPEVsZW1lbnRUeXBlPihOb2Rl
KSBoZWxwZXIgZnVuY3Rpb25zIGFuZAorICAgICAgICB1cGRhdGVzIFRyYXZlcnNhbDxFbGVtZW50
VHlwZT4gc28gdGhhdCB0aGUgbWV0aG9kcyB1c2UgTm9kZVRyYXZlcnNhbAorICAgICAgICBpbnRl
cm5hbGx5IGluc3RlYWQgb2YgVHJhdmVyc2FsPEVsZW1lbnRUeXBlPi4gQXMgYSByZXN1bHQsIHdl
IG5vdworICAgICAgICBpdGVyYXRlIG92ZXIgTm9kZXMgKG5vdCBFbGVtZW50cykgYW5kIGNhbGwg
dGhlIG5ldworICAgICAgICBpc0VsZW1lbnRPZlR5cGU8RWxlbWVudFR5cGU+KE5vZGUpIGhlbHBl
cnMgKHdoaWNoIGFyZSBlZmZpY2llbnQgYWZ0ZXIKKyAgICAgICAgcjE2NTY5OSkuCisKKyAgICAg
ICAgQmVmb3JlIHRoZSBwYXRjaCwgdGhlIGNvZGUgZW5kZWQgdXAgZG9pbmcgdGhlIGZvbGxvd2lu
ZyBjaGVja3MgZm9yCisgICAgICAgIFRyYXZlcnNhbDxIVE1MKmVsZW1lbnQ+OgorICAgICAgICBu
b2RlLmlzRWxlbWVudE5vZGUoKSAmJiB0b0VsZW1lbnQobm9kZSkuaXNIVE1MRWxlbWVudCgpCisg
ICAgICAgICAgICAmJiB0b0hUTUxFbGVtZW50KG5vZGUpLmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpm
b29UYWcpCisKKyAgICAgICAgQWZ0ZXIgdGhlIHBhdGNoLCB0aGUgY29kZSBvbmx5IGRvZXM6Cisg
ICAgICAgIG5vZGUuaXNIVE1MRWxlbWVudCgpCisgICAgICAgICAgICAmJiB0b0hUTUxFbGVtZW50
KG5vZGUpLmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpmb29UYWcpCisKKyAgICAgICAgTm8gbmV3IHRl
c3RzLCBubyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBkb20vRWxlbWVudC5oOgorICAg
ICAgICAoV2ViQ29yZTo6RWxlbWVudD4pOgorICAgICAgICAoV2ViQ29yZTo6aXNFbGVtZW50T2ZU
eXBlKToKKyAgICAgICAgQWRkIG5ldyBpc0VsZW1lbnRPZlR5cGUoKSBoZWxwZXIgdGFraW5nIGEg
Tm9kZSBpbiBhcmd1bWVudC4KKworICAgICAgICAqIGRvbS9FbGVtZW50VHJhdmVyc2FsLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpUcmF2ZXJzYWw8RWxlbWVudFR5cGU+OjpmaXJzdFdpdGhpblRlbXBs
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYXZlcnNhbDxFbGVtZW50VHlwZT46Omxhc3RXaXRo
aW5UZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpUcmF2ZXJzYWw8RWxlbWVudFR5cGU+Ojpu
ZXh0VGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6
cHJldmlvdXNUZW1wbGF0ZSk6CisgICAgICAgIFVzZSBOb2RlVHJhdmVyc2FsIEFQSSBpbnRlcm5h
bGx5IGluc3RlYWQgb2YgVHJhdmVyc2FsPEVsZW1lbnQ+IHRvIGF2b2lkCisgICAgICAgIHJlZHVu
ZGFudCBpc0VsZW1lbnROb2RlKCkgY2hlY2tzLgorCisgICAgICAgIChXZWJDb3JlOjpUcmF2ZXJz
YWw8RWxlbWVudD46Omxhc3RXaXRoaW5UZW1wbGF0ZSk6IERlbGV0ZWQuCisgICAgICAgIFRoZSBj
b2RlIGlzIG5vdyBpZGVudGljYWwgdG8gdGhlIGdlbmVyaWMgdmVyc2lvbi4KKworICAgICAgICAo
V2ViQ29yZTo6VHJhdmVyc2FsPEVsZW1lbnQ+OjpwcmV2aW91c1RlbXBsYXRlKTogRGVsZXRlZC4K
KyAgICAgICAgVGhlIGNvZGUgaXMgbm93IGlkZW50aWNhbCB0byB0aGUgZ2VuZXJpYyB2ZXJzaW9u
LgorCisgICAgICAgICogZG9tL21ha2VfbmFtZXMucGw6CisgICAgICAgIChwcmludFR5cGVIZWxw
ZXJzKToKKyAgICAgICAgLSBHZW5lcmF0ZSBpcypFbGVtZW50KCkgaGVscGVycyB0YWtpbmcgYSBO
b2RlIGluIGFyZ3VtZW50IGluc3RlYWQgb2YgYW4KKyAgICAgICAgICBFbGVtZW50LgorICAgICAg
ICAtIEdlbmVyYXRlIGlzRWxlbWVudE9mVHlwZTw+KCkgdGVtcGxhdGUgc3BlY2lhbGl6YXRpb25z
IHRha2luZyBhIE5vZGUKKyAgICAgICAgICBpbiBhcmd1bWVudC4KKyAgICAgICAgLSBTaGFyZSBt
b3JlIGNvZGUgYmV0d2VlbiBIVE1MIGNvZGUgcGF0aCBhbmQgdGhlIG90aGVyIHBhdGggKGZvciBT
VkcsCisgICAgICAgICAgTVRITUwpLgorCisgICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5oOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ+KToKKyAgICAgICAgVXBkYXRlIGlzRWxlbWVu
dE9mVHlwZTxjb25zdCBIVE1MRWxlbWVudD4oKSB0ZW1wbGF0ZSBzcGVjaWFsaXphdGlvbiB0bwor
ICAgICAgICB0YWtlIGEgTm9kZSBpbiBhcmd1bWVudCBpbnN0ZWFkIG9mIGFuIEVsZW1lbnQuIGlz
SFRNTEVsZW1lbnQoKSBpcworICAgICAgICBkZWZpbmVkIG9uIE5vZGUgYW55d2F5LgorCisgICAg
ICAgICogaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MRm9ybUNvbnRyb2xFbGVtZW50Pik6CisgICAgICAgIEFkZCBpc0VsZW1lbnRPZlR5cGU8Y29u
c3QgSFRNTEZvcm1Db250cm9sRWxlbWVudD4oKSB0ZW1wbGF0ZQorICAgICAgICBzcGVjaWFsaXph
dGlvbiB0YWtpbmcgYSBOb2RlIGluIGFyZ3VtZW50LiBLZWVwIHRoZSBvbmUgdGFraW5nIGFuIEVs
ZW1lbnQKKyAgICAgICAgaW4gYXJndW1lbnQgYXMgaXNGb3JtQ29udHJvbEVsZW1lbnQoKSBpcyBk
ZWZpbmVkIG9uIEVsZW1lbnQuCisKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ+KToKKyAgICAgICAgQWRkIGlzRWxl
bWVudE9mVHlwZTxjb25zdCBIVE1MTWVkaWFFbGVtZW50PigpIHRlbXBsYXRlIHNwZWNpYWxpemF0
aW9uCisgICAgICAgIHRha2luZyBhIE5vZGUgaW4gYXJndW1lbnQuIEtlZXAgdGhlIG9uZSB0YWtp
bmcgYW4gRWxlbWVudCBpbiBhcmd1bWVudCBhcworICAgICAgICBpc01lZGlhRWxlbWVudCgpIGlz
IGRlZmluZWQgb24gRWxlbWVudC4KKworICAgICAgICAqIGh0bWwvSFRNTFBsdWdJbkltYWdlRWxl
bWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJbkltYWdlRWxlbWVudD4pOgorICAg
ICAgICBVcGRhdGUgaXNFbGVtZW50T2ZUeXBlPGNvbnN0IEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ+
KCkgdGVtcGxhdGUKKyAgICAgICAgc3BlY2lhbGl6YXRpb24gdG8gdGFrZSBhIE5vZGUgaW4gYXJn
dW1lbnQgaW5zdGVhZCBvZiBhbiBFbGVtZW50LgorICAgICAgICBpc1BsdWdpbkVsZW1lbnQoKSBp
cyBkZWZpbmVkIG9uIE5vZGUgYW55d2F5LgorCisgICAgICAgICogaHRtbC9MYWJlbGFibGVFbGVt
ZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpMYWJlbGFibGVFbGVtZW50Pik6CisgICAgICAgIFVw
ZGF0ZSBpc0VsZW1lbnRPZlR5cGU8Y29uc3QgTGFiZWxhYmxlRWxlbWVudD4oKSB0ZW1wbGF0ZQor
ICAgICAgICBzcGVjaWFsaXphdGlvbiB0byB0YWtlIGEgTm9kZSBpbiBhcmd1bWVudCBpbnN0ZWFk
IG9mIGFuIEVsZW1lbnQuCisgICAgICAgIGlzSFRNTEVsZW1lbnQoKSBpcyBkZWZpbmVkIG9uIE5v
ZGUgYW55d2F5LgorCisgICAgICAgICogbWF0aG1sL01hdGhNTEVsZW1lbnQuaDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1hdGhNTEVsZW1lbnQ+KToKKyAgICAgICAgRGVmaW5lIGlzRWxlbWVudE9mVHlw
ZSgpIGZvciBNYXRoTUxFbGVtZW50IHNvIHRoYXQgdGhlIFRyYXZlcnNhbCBBUEkgY2FuCisgICAg
ICAgIGJlIHVzZWQgZm9yIHRoZXNlIHR5cGVzIGFzIHdlbGwuIFRoaXMgaXMgY29uc2lzdGVudCB3
aXRoIEhUTUxFbGVtZW50IGFuZAorICAgICAgICBTVkdFbGVtZW50LgorCisgICAgICAgICogc3Zn
L1NWR0VsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ+KToKKyAgICAgICAg
LSBVcGRhdGUgaXNFbGVtZW50T2ZUeXBlPGNvbnN0IFNWR0VsZW1lbnQ+KCkgdGVtcGxhdGUgc3Bl
Y2lhbGl6YXRpb24gdG8KKyAgICAgICAgICB0YWtlIGEgTm9kZSBpbiBhcmd1bWVudCBpbnN0ZWFk
IG9mIGFuIEVsZW1lbnQuIGlzU1ZHRWxlbWVudCgpIGlzCisgICAgICAgICAgZGVmaW5lZCBvbiBO
b2RlIGFueXdheS4KKyAgICAgICAgLSBEZWZpbmUgaXNFbGVtZW50T2ZUeXBlKCkgdGVtcGxhdGVk
IGZ1bmN0aW9uIHRha2luZyBhbiBTVkdFbGVtZW50IGluCisgICAgICAgICAgYXJndW1lbnQgc28g
dGhhdCB3ZSBjYW4gY2FsbCBTVkdFbGVtZW50OjpoYXNUYWdOYW1lKFNWR1F1YWxpZmllZE5hbWUp
CisgICAgICAgICAgaW5zdGVhZCBvZiBOb2RlOjpoYXNUYWdOYW1lKFNWR1F1YWxpZmllZE5hbWUp
IGlmIHdlIGtub3cgdGhlIGlucHV0CisgICAgICAgICAgdHlwZSBpcyBhbiBTVkdFbGVtZW50LiBU
aGlzIGlzIGNvbnNpc3RlbnQgd2l0aCBIVE1MRWxlbWVudCwgd2hpY2gKKyAgICAgICAgICBhbHJl
YWR5IGhhZCB0aGlzLgorICAgICAgICAtIGluY2x1ZGUgU1ZHRWxlbWVudFR5cGVIZWxwZXJzLmgg
YXQgdGhlIGVuZCBvZiB0aGUgZmlsZSAoc2ltaWxhcmx5IHRvCisgICAgICAgICAgd2hhdCBpcyBh
bHJlYWR5IGRvbmUgaW4gSFRNTEVsZW1lbnQuaCBiZWNhdXNlCisgICAgICAgICAgaXNFbGVtZW50
T2ZUeXBlKGNvbnN0IFNWR0VsZW1lbnQmKSBuZWVkcyB0byBiZSBkZWZpZW5kIGJlY2F1c2UgdGhl
CisgICAgICAgICAgaW5jbHVkZS4KKworICAgICAgICAqIHN2Zy9TVkdGaWx0ZXJQcmltaXRpdmVT
dGFuZGFyZEF0dHJpYnV0ZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlclByaW1pdGl2
ZVN0YW5kYXJkQXR0cmlidXRlcz4pOgorICAgICAgICBVcGRhdGUgaXNFbGVtZW50T2ZUeXBlPGNv
bnN0IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcz4oKQorICAgICAgICB0ZW1w
bGF0ZSBzcGVjaWFsaXphdGlvbiB0byB0YWtlIGEgTm9kZSBpbiBhcmd1bWVudCBpbnN0ZWFkIG9m
IGFuIEVsZW1lbnQuCisgICAgICAgIGlzU1ZHRWxlbWVudCgpIGlzIGRlZmluZWQgb24gTm9kZSBh
bnl3YXkuCisKKyAgICAgICAgKiBzdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdTTUlMRWxlbWVudD4pOgorICAgICAgICBVcGRhdGUgaXNFbGVtZW50
T2ZUeXBlPGNvbnN0IFNWR1NNSUxFbGVtZW50PigpIHRlbXBsYXRlIHNwZWNpYWxpemF0aW9uCisg
ICAgICAgIHRvIHRha2UgYSBOb2RlIGluIGFyZ3VtZW50IGluc3RlYWQgb2YgYW4gRWxlbWVudC4g
aXNTVkdFbGVtZW50KCkgaXMKKyAgICAgICAgZGVmaW5lZCBvbiBOb2RlIGFueXdheS4KKworCiAy
MDE0LTA5LTExICBCcmVuZGFuIExvbmcgIDxiLmxvbmdAY2FibGVsYWJzLmNvbT4KIAogICAgICAg
ICBGaXggRklYTUUncyBpbiBKU1RyYWNrQ3VzdG9tIG5vdyB0aGF0IEF1ZGlvVHJhY2sgYW5kIFZp
ZGVvVHJhY2sgZXhpc3QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAppbmRleCA3YTY0NjNlZmFkNzI0ODJhODEx
MDJjYzVhNGI4Y2RmZDE2YmNlNDM3Li5mOTk4MjJjNDE1MDBjYjhlZTE1MTcxZWVhNDg4NzRhNzhk
YjM4NDg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAgLTY3NCw4ICs2NzQsOSBAQCBpbmxpbmUgYm9v
bCBpc0VsZW1lbnQoY29uc3QgTm9kZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5pc0VsZW1lbnROb2Rl
KCk7IH0KIAogTk9ERV9UWVBFX0NBU1RTKEVsZW1lbnQpCiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBU
eXBlPiBib29sIGlzRWxlbWVudE9mVHlwZShjb25zdCBFbGVtZW50Jik7Ci10ZW1wbGF0ZSA8dHlw
ZW5hbWUgVHlwZT4gaW5saW5lIGJvb2wgaXNFbGVtZW50T2ZUeXBlKGNvbnN0IE5vZGUmIG5vZGUp
IHsgcmV0dXJuIG5vZGUuaXNFbGVtZW50Tm9kZSgpICYmIGlzRWxlbWVudE9mVHlwZTxjb25zdCBU
eXBlPih0b0VsZW1lbnQobm9kZSkpOyB9Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gYm9vbCBpc0Vs
ZW1lbnRPZlR5cGUoY29uc3QgTm9kZSYpOwordGVtcGxhdGUgPD4gaW5saW5lIGJvb2wgaXNFbGVt
ZW50T2ZUeXBlPGNvbnN0IEVsZW1lbnQ+KGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJuIG5vZGUu
aXNFbGVtZW50Tm9kZSgpOyB9Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW5saW5lIGJvb2wgaXNF
bGVtZW50T2ZUeXBlKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJuIGlzRWxlbWVudE9m
VHlwZTxUPihzdGF0aWNfY2FzdDxjb25zdCBOb2RlJj4oZWxlbWVudCkpOyB9CiB0ZW1wbGF0ZSA8
PiBpbmxpbmUgYm9vbCBpc0VsZW1lbnRPZlR5cGU8Y29uc3QgRWxlbWVudD4oY29uc3QgRWxlbWVu
dCYpIHsgcmV0dXJuIHRydWU7IH0KIAogaW5saW5lIGJvb2wgTm9kZTo6aGFzQXR0cmlidXRlcygp
IGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFRyYXZlcnNhbC5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRUcmF2ZXJzYWwuaAppbmRleCAwM2E3Yzk4ZjFj
MzIyOWYyOTZlOWQyMWViMjliMDI5ZWMwYjgzZDNhLi5hNDRkNTczMDJiZjhlZjljOWRjMGZmNzAx
OWIwOWVkMmM4MDU0MjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFRy
YXZlcnNhbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50VHJhdmVyc2FsLmgKQEAg
LTEwNCwxNiArMTA0LDYgQEAgaW5saW5lIEVsZW1lbnQqIFRyYXZlcnNhbDxFbGVtZW50Pjo6Zmly
c3RXaXRoaW5UZW1wbGF0ZShDdXJyZW50VHlwZSogY3VycmVudCkKIAogdGVtcGxhdGUgPD4KIHRl
bXBsYXRlIDx0eXBlbmFtZSBDdXJyZW50VHlwZT4KLWlubGluZSBFbGVtZW50KiBUcmF2ZXJzYWw8
RWxlbWVudD46Omxhc3RXaXRoaW5UZW1wbGF0ZShDdXJyZW50VHlwZSogY3VycmVudCkKLXsKLSAg
ICBOb2RlKiBub2RlID0gTm9kZVRyYXZlcnNhbDo6bGFzdChjdXJyZW50KTsKLSAgICB3aGlsZSAo
bm9kZSAmJiAhbm9kZS0+aXNFbGVtZW50Tm9kZSgpKQotICAgICAgICBub2RlID0gTm9kZVRyYXZl
cnNhbDo6cHJldmlvdXMobm9kZSwgY3VycmVudCk7Ci0gICAgcmV0dXJuIHRvRWxlbWVudChub2Rl
KTsKLX0KLQotdGVtcGxhdGUgPD4KLXRlbXBsYXRlIDx0eXBlbmFtZSBDdXJyZW50VHlwZT4KIGlu
bGluZSBFbGVtZW50KiBUcmF2ZXJzYWw8RWxlbWVudD46Om5leHRUZW1wbGF0ZShDdXJyZW50VHlw
ZSogY3VycmVudCkKIHsKICAgICBOb2RlKiBub2RlID0gTm9kZVRyYXZlcnNhbDo6bmV4dChjdXJy
ZW50KTsKQEAgLTEzMiwyNiArMTIyLDYgQEAgaW5saW5lIEVsZW1lbnQqIFRyYXZlcnNhbDxFbGVt
ZW50Pjo6bmV4dFRlbXBsYXRlKEN1cnJlbnRUeXBlKiBjdXJyZW50LCBjb25zdCBOb2QKICAgICBy
ZXR1cm4gdG9FbGVtZW50KG5vZGUpOwogfQogCi10ZW1wbGF0ZSA8PgotdGVtcGxhdGUgPHR5cGVu
YW1lIEN1cnJlbnRUeXBlPgotaW5saW5lIEVsZW1lbnQqIFRyYXZlcnNhbDxFbGVtZW50Pjo6cHJl
dmlvdXNUZW1wbGF0ZShDdXJyZW50VHlwZSogY3VycmVudCkKLXsKLSAgICBOb2RlKiBub2RlID0g
Tm9kZVRyYXZlcnNhbDo6cHJldmlvdXMoY3VycmVudCk7Ci0gICAgd2hpbGUgKG5vZGUgJiYgIW5v
ZGUtPmlzRWxlbWVudE5vZGUoKSkKLSAgICAgICAgbm9kZSA9IE5vZGVUcmF2ZXJzYWw6OnByZXZp
b3VzKG5vZGUpOwotICAgIHJldHVybiB0b0VsZW1lbnQobm9kZSk7Ci19Ci0KLXRlbXBsYXRlIDw+
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgQ3VycmVudFR5cGU+Ci1pbmxpbmUgRWxlbWVudCogVHJhdmVy
c2FsPEVsZW1lbnQ+OjpwcmV2aW91c1RlbXBsYXRlKEN1cnJlbnRUeXBlKiBjdXJyZW50LCBjb25z
dCBOb2RlKiBzdGF5V2l0aGluKQotewotICAgIE5vZGUqIG5vZGUgPSBOb2RlVHJhdmVyc2FsOjpw
cmV2aW91cyhjdXJyZW50LCBzdGF5V2l0aGluKTsKLSAgICB3aGlsZSAobm9kZSAmJiAhbm9kZS0+
aXNFbGVtZW50Tm9kZSgpKQotICAgICAgICBub2RlID0gTm9kZVRyYXZlcnNhbDo6cHJldmlvdXMo
bm9kZSwgc3RheVdpdGhpbik7Ci0gICAgcmV0dXJuIHRvRWxlbWVudChub2RlKTsKLX0KLQogLy8g
R2VuZXJpYyB2ZXJzaW9ucy4KIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KIHRlbXBs
YXRlIDx0eXBlbmFtZSBDdXJyZW50VHlwZT4KQEAgLTE3Nyw2MCArMTQ3LDYwIEBAIHRlbXBsYXRl
IDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KIHRlbXBsYXRlIDx0eXBlbmFtZSBDdXJyZW50VHlwZT4K
IGlubGluZSBFbGVtZW50VHlwZSogVHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6Zmlyc3RXaXRoaW5U
ZW1wbGF0ZShDdXJyZW50VHlwZSogY3VycmVudCkKIHsKLSAgICBFbGVtZW50KiBlbGVtZW50ID0g
VHJhdmVyc2FsPEVsZW1lbnQ+OjpmaXJzdFdpdGhpbihjdXJyZW50KTsKLSAgICB3aGlsZSAoZWxl
bWVudCAmJiAhaXNFbGVtZW50T2ZUeXBlPGNvbnN0IEVsZW1lbnRUeXBlPigqZWxlbWVudCkpCi0g
ICAgICAgIGVsZW1lbnQgPSBUcmF2ZXJzYWw8RWxlbWVudD46Om5leHQoZWxlbWVudCwgY3VycmVu
dCk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEVsZW1lbnRUeXBlKj4oZWxlbWVudCk7CisgICAg
Tm9kZSogbm9kZSA9IGN1cnJlbnQtPmZpcnN0Q2hpbGQoKTsKKyAgICB3aGlsZSAobm9kZSAmJiAh
aXNFbGVtZW50T2ZUeXBlPGNvbnN0IEVsZW1lbnRUeXBlPigqbm9kZSkpCisgICAgICAgIG5vZGUg
PSBOb2RlVHJhdmVyc2FsOjpuZXh0KG5vZGUsIGN1cnJlbnQpOworICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxFbGVtZW50VHlwZSo+KG5vZGUpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVu
dFR5cGU+CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ3VycmVudFR5cGU+CiBpbmxpbmUgRWxlbWVudFR5
cGUqIFRyYXZlcnNhbDxFbGVtZW50VHlwZT46Omxhc3RXaXRoaW5UZW1wbGF0ZShDdXJyZW50VHlw
ZSogY3VycmVudCkKIHsKLSAgICBFbGVtZW50KiBlbGVtZW50ID0gVHJhdmVyc2FsPEVsZW1lbnQ+
OjpsYXN0V2l0aGluKGN1cnJlbnQpOwotICAgIHdoaWxlIChlbGVtZW50ICYmICFpc0VsZW1lbnRP
ZlR5cGU8Y29uc3QgRWxlbWVudFR5cGU+KCplbGVtZW50KSkKLSAgICAgICAgZWxlbWVudCA9IFRy
YXZlcnNhbDxFbGVtZW50Pjo6cHJldmlvdXMoZWxlbWVudCwgY3VycmVudCk7Ci0gICAgcmV0dXJu
IHN0YXRpY19jYXN0PEVsZW1lbnRUeXBlKj4oZWxlbWVudCk7CisgICAgTm9kZSogbm9kZSA9IE5v
ZGVUcmF2ZXJzYWw6Omxhc3QoY3VycmVudCk7CisgICAgd2hpbGUgKG5vZGUgJiYgIWlzRWxlbWVu
dE9mVHlwZTxjb25zdCBFbGVtZW50VHlwZT4oKm5vZGUpKQorICAgICAgICBub2RlID0gTm9kZVRy
YXZlcnNhbDo6cHJldmlvdXMobm9kZSwgY3VycmVudCk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0
PEVsZW1lbnRUeXBlKj4obm9kZSk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlw
ZT4KIHRlbXBsYXRlIDx0eXBlbmFtZSBDdXJyZW50VHlwZT4KIGlubGluZSBFbGVtZW50VHlwZSog
VHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6bmV4dFRlbXBsYXRlKEN1cnJlbnRUeXBlKiBjdXJyZW50
KQogewotICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBUcmF2ZXJzYWw8RWxlbWVudD46Om5leHQoY3Vy
cmVudCk7Ci0gICAgd2hpbGUgKGVsZW1lbnQgJiYgIWlzRWxlbWVudE9mVHlwZTxjb25zdCBFbGVt
ZW50VHlwZT4oKmVsZW1lbnQpKQotICAgICAgICBlbGVtZW50ID0gVHJhdmVyc2FsPEVsZW1lbnQ+
OjpuZXh0KGVsZW1lbnQpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxFbGVtZW50VHlwZSo+KGVs
ZW1lbnQpOworICAgIE5vZGUqIG5vZGUgPSBOb2RlVHJhdmVyc2FsOjpuZXh0KGN1cnJlbnQpOwor
ICAgIHdoaWxlIChub2RlICYmICFpc0VsZW1lbnRPZlR5cGU8Y29uc3QgRWxlbWVudFR5cGU+KCpu
b2RlKSkKKyAgICAgICAgbm9kZSA9IE5vZGVUcmF2ZXJzYWw6Om5leHQobm9kZSk7CisgICAgcmV0
dXJuIHN0YXRpY19jYXN0PEVsZW1lbnRUeXBlKj4obm9kZSk7CiB9CiAKIHRlbXBsYXRlIDx0eXBl
bmFtZSBFbGVtZW50VHlwZT4KIHRlbXBsYXRlIDx0eXBlbmFtZSBDdXJyZW50VHlwZT4KIGlubGlu
ZSBFbGVtZW50VHlwZSogVHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6bmV4dFRlbXBsYXRlKEN1cnJl
bnRUeXBlKiBjdXJyZW50LCBjb25zdCBOb2RlKiBzdGF5V2l0aGluKQogewotICAgIEVsZW1lbnQq
IGVsZW1lbnQgPSBUcmF2ZXJzYWw8RWxlbWVudD46Om5leHQoY3VycmVudCwgc3RheVdpdGhpbik7
Ci0gICAgd2hpbGUgKGVsZW1lbnQgJiYgIWlzRWxlbWVudE9mVHlwZTxjb25zdCBFbGVtZW50VHlw
ZT4oKmVsZW1lbnQpKQotICAgICAgICBlbGVtZW50ID0gVHJhdmVyc2FsPEVsZW1lbnQ+OjpuZXh0
KGVsZW1lbnQsIHN0YXlXaXRoaW4pOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxFbGVtZW50VHlw
ZSo+KGVsZW1lbnQpOworICAgIE5vZGUqIG5vZGUgPSBOb2RlVHJhdmVyc2FsOjpuZXh0KGN1cnJl
bnQsIHN0YXlXaXRoaW4pOworICAgIHdoaWxlIChub2RlICYmICFpc0VsZW1lbnRPZlR5cGU8Y29u
c3QgRWxlbWVudFR5cGU+KCpub2RlKSkKKyAgICAgICAgbm9kZSA9IE5vZGVUcmF2ZXJzYWw6Om5l
eHQobm9kZSwgc3RheVdpdGhpbik7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEVsZW1lbnRUeXBl
Kj4obm9kZSk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KIHRlbXBsYXRl
IDx0eXBlbmFtZSBDdXJyZW50VHlwZT4KIGlubGluZSBFbGVtZW50VHlwZSogVHJhdmVyc2FsPEVs
ZW1lbnRUeXBlPjo6cHJldmlvdXNUZW1wbGF0ZShDdXJyZW50VHlwZSogY3VycmVudCkKIHsKLSAg
ICBFbGVtZW50KiBlbGVtZW50ID0gVHJhdmVyc2FsPEVsZW1lbnQ+OjpwcmV2aW91cyhjdXJyZW50
KTsKLSAgICB3aGlsZSAoZWxlbWVudCAmJiAhaXNFbGVtZW50T2ZUeXBlPGNvbnN0IEVsZW1lbnRU
eXBlPigqZWxlbWVudCkpCi0gICAgICAgIGVsZW1lbnQgPSBUcmF2ZXJzYWw8RWxlbWVudD46OnBy
ZXZpb3VzKGVsZW1lbnQpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxFbGVtZW50VHlwZSo+KGVs
ZW1lbnQpOworICAgIE5vZGUqIG5vZGUgPSBOb2RlVHJhdmVyc2FsOjpwcmV2aW91cyhjdXJyZW50
KTsKKyAgICB3aGlsZSAobm9kZSAmJiAhaXNFbGVtZW50T2ZUeXBlPGNvbnN0IEVsZW1lbnRUeXBl
Pigqbm9kZSkpCisgICAgICAgIG5vZGUgPSBOb2RlVHJhdmVyc2FsOjpwcmV2aW91cyhub2RlKTsK
KyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RWxlbWVudFR5cGUqPihub2RlKTsKIH0KIAogdGVtcGxh
dGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgogdGVtcGxhdGUgPHR5cGVuYW1lIEN1cnJlbnRUeXBl
PgogaW5saW5lIEVsZW1lbnRUeXBlKiBUcmF2ZXJzYWw8RWxlbWVudFR5cGU+OjpwcmV2aW91c1Rl
bXBsYXRlKEN1cnJlbnRUeXBlKiBjdXJyZW50LCBjb25zdCBOb2RlKiBzdGF5V2l0aGluKQogewot
ICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBUcmF2ZXJzYWw8RWxlbWVudD46OnByZXZpb3VzKGN1cnJl
bnQsIHN0YXlXaXRoaW4pOwotICAgIHdoaWxlIChlbGVtZW50ICYmICFpc0VsZW1lbnRPZlR5cGU8
Y29uc3QgRWxlbWVudFR5cGU+KCplbGVtZW50KSkKLSAgICAgICAgZWxlbWVudCA9IFRyYXZlcnNh
bDxFbGVtZW50Pjo6cHJldmlvdXMoZWxlbWVudCwgc3RheVdpdGhpbik7Ci0gICAgcmV0dXJuIHN0
YXRpY19jYXN0PEVsZW1lbnRUeXBlKj4oZWxlbWVudCk7CisgICAgTm9kZSogbm9kZSA9IE5vZGVU
cmF2ZXJzYWw6OnByZXZpb3VzKGN1cnJlbnQsIHN0YXlXaXRoaW4pOworICAgIHdoaWxlIChub2Rl
ICYmICFpc0VsZW1lbnRPZlR5cGU8Y29uc3QgRWxlbWVudFR5cGU+KCpub2RlKSkKKyAgICAgICAg
bm9kZSA9IE5vZGVUcmF2ZXJzYWw6OnByZXZpb3VzKG5vZGUsIHN0YXlXaXRoaW4pOworICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxFbGVtZW50VHlwZSo+KG5vZGUpOwogfQogCiB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgRWxlbWVudFR5cGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vbWFrZV9u
YW1lcy5wbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9tYWtlX25hbWVzLnBsCmluZGV4IGE0NmYxMGIz
YzkwZDczMDNkNjRhZTI5MzRkOWQ2YTM1MjhjM2FjZGYuLmYxOTFhNDY0MzEwMWQ5MTFjNGZmZjEx
NDUyODhhNmYwNTQzZjllY2MgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9tYWtlX25h
bWVzLnBsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9tYWtlX25hbWVzLnBsCkBAIC02NDIsNDAg
KzY0MiwyNiBAQCB2b2lkICRjaGVja0hlbHBlcihjb25zdCAkY2xhc3MqKTsgLy8gQ2F0Y2ggdW5u
ZWNlc3NhcnkgcnVudGltZSBjaGVjayBvZiB0eXBlIGtubwogRU5ECiAgICAgICAgIDsKIAotICAg
ICAgICBpZiAoJHBhcmFtZXRlcnN7bmFtZXNwYWNlfSBlcSAiSFRNTCIpIHsKLSAgICAgICAgICAg
IGlmICgkcGFyc2VkVGFnc3skbmFtZX17d3JhcHBlck9ubHlJZk1lZGlhSXNBdmFpbGFibGV9KSB7
Ci0gICAgICAgICAgICAgICAgIyBXZSBuZWVkIHRvIGNoZWNrIGZvciBIVE1MVW5rbm93bkVsZW1l
bnQgaWYgaXQgbWlnaHQgaGF2ZSBiZWVuIGNyZWF0ZWQgYnkgdGhlIGZhY3RvcnkuCi0gICAgICAg
ICAgICAgICAgcHJpbnQgRiA8PEVORAorICAgICAgICBpZiAoJHBhcmFtZXRlcnN7bmFtZXNwYWNl
fSBlcSAiSFRNTCIgJiYgJHBhcnNlZFRhZ3N7JG5hbWV9e3dyYXBwZXJPbmx5SWZNZWRpYUlzQXZh
aWxhYmxlfSkgeworICAgICAgICAgICAgIyBXZSBuZWVkIHRvIGNoZWNrIGZvciBIVE1MVW5rbm93
bkVsZW1lbnQgaWYgaXQgbWlnaHQgaGF2ZSBiZWVuIGNyZWF0ZWQgYnkgdGhlIGZhY3RvcnkuCisg
ICAgICAgICAgICBwcmludCBGIDw8RU5ECiBpbmxpbmUgYm9vbCAkY2hlY2tIZWxwZXIoY29uc3Qg
SFRNTEVsZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJuICFlbGVtZW50LmlzSFRNTFVua25vd25FbGVt
ZW50KCkgJiYgZWxlbWVudC5oYXNUYWdOYW1lKCRwYXJhbWV0ZXJze25hbWVzcGFjZX1OYW1lczo6
JHtuYW1lfVRhZyk7IH0KLWlubGluZSBib29sICRjaGVja0hlbHBlcihjb25zdCBIVE1MRWxlbWVu
dCogZWxlbWVudCkgeyBBU1NFUlQoZWxlbWVudCk7IHJldHVybiAkY2hlY2tIZWxwZXIoKmVsZW1l
bnQpOyB9Ci1FTkQKLSAgICAgICAgICAgICAgICA7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgICAgIHByaW50IEYgPDxFTkQKLWlubGluZSBib29sICRjaGVja0hlbHBlcihjb25z
dCBIVE1MRWxlbWVudCYgZWxlbWVudCkgeyByZXR1cm4gZWxlbWVudC5oYXNUYWdOYW1lKEhUTUxO
YW1lczo6JHtuYW1lfVRhZyk7IH0KLWlubGluZSBib29sICRjaGVja0hlbHBlcihjb25zdCBIVE1M
RWxlbWVudCogZWxlbWVudCkgeyBBU1NFUlQoZWxlbWVudCk7IHJldHVybiAkY2hlY2tIZWxwZXIo
KmVsZW1lbnQpOyB9Ci1FTkQKLSAgICAgICAgICAgICAgICA7Ci0gICAgICAgICAgICB9Ci0KLSAg
ICAgICAgICAgICAgICBwcmludCBGIDw8RU5ECi1pbmxpbmUgYm9vbCAkY2hlY2tIZWxwZXIoY29u
c3QgTm9kZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5pc0hUTUxFbGVtZW50KCkgJiYgJGNoZWNrSGVs
cGVyKHRvSFRNTEVsZW1lbnQobm9kZSkpOyB9Ci1pbmxpbmUgYm9vbCAkY2hlY2tIZWxwZXIoY29u
c3QgTm9kZSogbm9kZSkgeyBBU1NFUlQobm9kZSk7IHJldHVybiAkY2hlY2tIZWxwZXIoKm5vZGUp
OyB9Ci10ZW1wbGF0ZSA8PiBpbmxpbmUgYm9vbCBpc0VsZW1lbnRPZlR5cGU8Y29uc3QgJGNsYXNz
Pihjb25zdCBIVE1MRWxlbWVudCYgZWxlbWVudCkgeyByZXR1cm4gJGNoZWNrSGVscGVyKGVsZW1l
bnQpOyB9Ci10ZW1wbGF0ZSA8PiBpbmxpbmUgYm9vbCBpc0VsZW1lbnRPZlR5cGU8Y29uc3QgJGNs
YXNzPihjb25zdCBFbGVtZW50JiBlbGVtZW50KSB7IHJldHVybiAkY2hlY2tIZWxwZXIoZWxlbWVu
dCk7IH0KIEVORAotICAgICAgICAgICAgICAgIDsKLQorICAgICAgICAgICAgOwogICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgcHJpbnQgRiA8PEVORAotaW5saW5lIGJvb2wgJGNoZWNrSGVs
cGVyKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJuIGVsZW1lbnQuaGFzVGFnTmFtZSgk
cGFyYW1ldGVyc3tuYW1lc3BhY2V9TmFtZXM6OiR7bmFtZX1UYWcpOyB9Ci1pbmxpbmUgYm9vbCAk
Y2hlY2tIZWxwZXIoY29uc3QgRWxlbWVudCogZWxlbWVudCkgeyBBU1NFUlQoZWxlbWVudCk7IHJl
dHVybiAkY2hlY2tIZWxwZXIoKmVsZW1lbnQpOyB9Ci1pbmxpbmUgYm9vbCAkY2hlY2tIZWxwZXIo
Y29uc3QgTm9kZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5pc0VsZW1lbnROb2RlKCkgJiYgJGNoZWNr
SGVscGVyKHRvRWxlbWVudChub2RlKSk7IH0KLWlubGluZSBib29sICRjaGVja0hlbHBlcihjb25z
dCBOb2RlKiBub2RlKSB7IEFTU0VSVChub2RlKTsgcmV0dXJuIG5vZGUtPmlzRWxlbWVudE5vZGUo
KSAmJiAkY2hlY2tIZWxwZXIodG9FbGVtZW50KG5vZGUpKTsgfQotdGVtcGxhdGUgPD4gaW5saW5l
IGJvb2wgaXNFbGVtZW50T2ZUeXBlPGNvbnN0ICRjbGFzcz4oY29uc3QgRWxlbWVudCYgZWxlbWVu
dCkgeyByZXR1cm4gJGNoZWNrSGVscGVyKGVsZW1lbnQpOyB9CitpbmxpbmUgYm9vbCAkY2hlY2tI
ZWxwZXIoY29uc3QgJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnQmIGVsZW1lbnQpIHsgcmV0
dXJuIGVsZW1lbnQuaGFzVGFnTmFtZSgkcGFyYW1ldGVyc3tuYW1lc3BhY2V9TmFtZXM6OiR7bmFt
ZX1UYWcpOyB9CiBFTkQKICAgICAgICAgICAgIDsKICAgICAgICAgfQorICAgICAgICBwcmludCBG
IDw8RU5ECitpbmxpbmUgYm9vbCAkY2hlY2tIZWxwZXIoY29uc3QgJHBhcmFtZXRlcnN7bmFtZXNw
YWNlfUVsZW1lbnQqIGVsZW1lbnQpIHsgQVNTRVJUKGVsZW1lbnQpOyByZXR1cm4gJGNoZWNrSGVs
cGVyKCplbGVtZW50KTsgfQoraW5saW5lIGJvb2wgJGNoZWNrSGVscGVyKGNvbnN0IE5vZGUmIG5v
ZGUpIHsgcmV0dXJuIG5vZGUuaGFzVGFnTmFtZSgkcGFyYW1ldGVyc3tuYW1lc3BhY2V9TmFtZXM6
OiR7bmFtZX1UYWcpOyB9CitpbmxpbmUgYm9vbCAkY2hlY2tIZWxwZXIoY29uc3QgTm9kZSogbm9k
ZSkgeyBBU1NFUlQobm9kZSk7IHJldHVybiAkY2hlY2tIZWxwZXIoKm5vZGUpOyB9Cit0ZW1wbGF0
ZSA8PiBpbmxpbmUgYm9vbCBpc0VsZW1lbnRPZlR5cGU8Y29uc3QgJGNsYXNzPihjb25zdCAkcGFy
YW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudCYgZWxlbWVudCkgeyByZXR1cm4gJGNoZWNrSGVscGVy
KGVsZW1lbnQpOyB9Cit0ZW1wbGF0ZSA8PiBpbmxpbmUgYm9vbCBpc0VsZW1lbnRPZlR5cGU8Y29u
c3QgJGNsYXNzPihjb25zdCBOb2RlJiBub2RlKSB7IHJldHVybiAkY2hlY2tIZWxwZXIobm9kZSk7
IH0KK0VORAorICAgICAgICA7CiAKICAgICAgICAgcHJpbnQgRiAiXG4iOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEVsZW1lbnQuaAppbmRleCBiYTU4NzgxNDA5ODQ4ZWY5NTU4ZmE0YzMxYjdmYWVm
NWZkYjY3N2Y5Li5mM2E0YmFkZmI3YzM1NzdkZjQyNjA2NDBkZTlmYzE1NjYzOWI4NDZmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oCkBAIC0xNTEsNyArMTUxLDcgQEAgdGVtcGxhdGUgPHR5
cGVuYW1lIFR5cGU+IGJvb2wgaXNFbGVtZW50T2ZUeXBlKGNvbnN0IEhUTUxFbGVtZW50Jik7CiB2
b2lkIGlzSFRNTEVsZW1lbnQoY29uc3QgSFRNTEVsZW1lbnQmKTsgLy8gQ2F0Y2ggdW5uZWNlc3Nh
cnkgcnVudGltZSBjaGVjayBvZiB0eXBlIGtub3duIGF0IGNvbXBpbGUgdGltZS4KIGlubGluZSBi
b29sIGlzSFRNTEVsZW1lbnQoY29uc3QgTm9kZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5pc0hUTUxF
bGVtZW50KCk7IH0KIHRlbXBsYXRlIDw+IGlubGluZSBib29sIGlzRWxlbWVudE9mVHlwZTxjb25z
dCBIVE1MRWxlbWVudD4oY29uc3QgSFRNTEVsZW1lbnQmKSB7IHJldHVybiB0cnVlOyB9Ci10ZW1w
bGF0ZSA8PiBpbmxpbmUgYm9vbCBpc0VsZW1lbnRPZlR5cGU8Y29uc3QgSFRNTEVsZW1lbnQ+KGNv
bnN0IEVsZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJuIGVsZW1lbnQuaXNIVE1MRWxlbWVudCgpOyB9
Cit0ZW1wbGF0ZSA8PiBpbmxpbmUgYm9vbCBpc0VsZW1lbnRPZlR5cGU8Y29uc3QgSFRNTEVsZW1l
bnQ+KGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJuIG5vZGUuaXNIVE1MRWxlbWVudCgpOyB9CiAK
IE5PREVfVFlQRV9DQVNUUyhIVE1MRWxlbWVudCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxGb3JtQ29udHJvbEVsZW1lbnQuaAppbmRleCBjMTBmY2Y4YTM3ODdlZThmOGQwZGRiZTUxOWQ5
NDk1ODVjNmJmNTUzLi5jMjQwOGExNDBiYjFmZDE3OTQwYWZhNjQ0ZmMxMDA1NjQ0ZGRlNThlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaApAQCAtMTkz
LDYgKzE5Myw3IEBAIHByaXZhdGU6CiB2b2lkIGlzSFRNTEZvcm1Db250cm9sRWxlbWVudChjb25z
dCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50Jik7IC8vIENhdGNoIHVubmVjZXNzYXJ5IHJ1bnRpbWUg
Y2hlY2sgb2YgdHlwZSBrbm93biBhdCBjb21waWxlIHRpbWUuCiBpbmxpbmUgYm9vbCBpc0hUTUxG
b3JtQ29udHJvbEVsZW1lbnQoY29uc3QgRWxlbWVudCYgZWxlbWVudCkgeyByZXR1cm4gZWxlbWVu
dC5pc0Zvcm1Db250cm9sRWxlbWVudCgpOyB9CiBpbmxpbmUgYm9vbCBpc0hUTUxGb3JtQ29udHJv
bEVsZW1lbnQoY29uc3QgTm9kZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5pc0VsZW1lbnROb2RlKCkg
JiYgdG9FbGVtZW50KG5vZGUpLmlzRm9ybUNvbnRyb2xFbGVtZW50KCk7IH0KK3RlbXBsYXRlIDw+
IGlubGluZSBib29sIGlzRWxlbWVudE9mVHlwZTxjb25zdCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50
Pihjb25zdCBOb2RlJiBub2RlKSB7IHJldHVybiBpc0hUTUxGb3JtQ29udHJvbEVsZW1lbnQobm9k
ZSk7IH0KIHRlbXBsYXRlIDw+IGlubGluZSBib29sIGlzRWxlbWVudE9mVHlwZTxjb25zdCBIVE1M
Rm9ybUNvbnRyb2xFbGVtZW50Pihjb25zdCBFbGVtZW50JiBlbGVtZW50KSB7IHJldHVybiBpc0hU
TUxGb3JtQ29udHJvbEVsZW1lbnQoZWxlbWVudCk7IH0KIAogTk9ERV9UWVBFX0NBU1RTKEhUTUxG
b3JtQ29udHJvbEVsZW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmlu
ZGV4IGExNDI1MjQzMWQ0M2ExZDhhMjE2ZWI3Y2YzNDYwNmRlMTVkZTA4NmUuLmVjZDUyMDc5MjFl
MTFjZTUzZjNlZDg1YWQ2OTMyNGJmZDM3MzRhNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5oCkBAIC05MTYsNyArOTE2LDggQEAgc3RydWN0IFZhbHVlVG9TdHJpbmc8VGV4
dFRyYWNrQ3VlKj4gewogdm9pZCBpc0hUTUxNZWRpYUVsZW1lbnQoY29uc3QgSFRNTE1lZGlhRWxl
bWVudCYpOyAvLyBDYXRjaCB1bm5lY2Vzc2FyeSBydW50aW1lIGNoZWNrIG9mIHR5cGUga25vd24g
YXQgY29tcGlsZSB0aW1lLgogaW5saW5lIGJvb2wgaXNIVE1MTWVkaWFFbGVtZW50KGNvbnN0IEVs
ZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJuIGVsZW1lbnQuaXNNZWRpYUVsZW1lbnQoKTsgfQogaW5s
aW5lIGJvb2wgaXNIVE1MTWVkaWFFbGVtZW50KGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJuIG5v
ZGUuaXNFbGVtZW50Tm9kZSgpICYmIHRvRWxlbWVudChub2RlKS5pc01lZGlhRWxlbWVudCgpOyB9
Ci10ZW1wbGF0ZSA8PiBpbmxpbmUgYm9vbCBpc0VsZW1lbnRPZlR5cGU8Y29uc3QgSFRNTE1lZGlh
RWxlbWVudD4oY29uc3QgRWxlbWVudCYgZWxlbWVudCkgeyByZXR1cm4gZWxlbWVudC5pc01lZGlh
RWxlbWVudCgpOyB9Cit0ZW1wbGF0ZSA8PiBpbmxpbmUgYm9vbCBpc0VsZW1lbnRPZlR5cGU8Y29u
c3QgSFRNTE1lZGlhRWxlbWVudD4oY29uc3QgTm9kZSYgbm9kZSkgeyByZXR1cm4gaXNIVE1MTWVk
aWFFbGVtZW50KG5vZGUpOyB9Cit0ZW1wbGF0ZSA8PiBpbmxpbmUgYm9vbCBpc0VsZW1lbnRPZlR5
cGU8Y29uc3QgSFRNTE1lZGlhRWxlbWVudD4oY29uc3QgRWxlbWVudCYgZWxlbWVudCkgeyByZXR1
cm4gaXNIVE1MTWVkaWFFbGVtZW50KGVsZW1lbnQpOyB9CiAKIE5PREVfVFlQRV9DQVNUUyhIVE1M
TWVkaWFFbGVtZW50KQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVn
SW5JbWFnZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxl
bWVudC5oCmluZGV4IDg1NmZjMjYwYzA5MWRlMmZiOGE0MzM0MTg5NjcyZWI1YmU1MDViNDguLmJl
YjVlM2M3YjNkNzE4ZjBmNzNjZWMzNWYwYTQwZGYxMWRjYmVlN2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5oCkBAIC0xNjAsNyArMTYwLDcgQEAgcHJp
dmF0ZToKIHZvaWQgaXNIVE1MUGx1Z0luSW1hZ2VFbGVtZW50KGNvbnN0IEhUTUxQbHVnSW5JbWFn
ZUVsZW1lbnQmKTsgLy8gQ2F0Y2ggdW5uZWNlc3NhcnkgcnVudGltZSBjaGVjayBvZiB0eXBlIGtu
b3duIGF0IGNvbXBpbGUgdGltZS4KIGlubGluZSBib29sIGlzSFRNTFBsdWdJbkltYWdlRWxlbWVu
dChjb25zdCBIVE1MUGx1Z0luRWxlbWVudCYgZWxlbWVudCkgeyByZXR1cm4gZWxlbWVudC5pc1Bs
dWdJbkltYWdlRWxlbWVudCgpOyB9CiBpbmxpbmUgYm9vbCBpc0hUTUxQbHVnSW5JbWFnZUVsZW1l
bnQoY29uc3QgTm9kZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5pc1BsdWdpbkVsZW1lbnQoKSAmJiB0
b0hUTUxQbHVnSW5FbGVtZW50KG5vZGUpLmlzUGx1Z0luSW1hZ2VFbGVtZW50KCk7IH0KLXRlbXBs
YXRlIDw+IGlubGluZSBib29sIGlzRWxlbWVudE9mVHlwZTxjb25zdCBIVE1MUGx1Z0luSW1hZ2VF
bGVtZW50Pihjb25zdCBFbGVtZW50JiBlbGVtZW50KSB7IHJldHVybiBpc0hUTUxQbHVnSW5JbWFn
ZUVsZW1lbnQoZWxlbWVudCk7IH0KK3RlbXBsYXRlIDw+IGlubGluZSBib29sIGlzRWxlbWVudE9m
VHlwZTxjb25zdCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Pihjb25zdCBOb2RlJiBub2RlKSB7IHJl
dHVybiBpc0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQobm9kZSk7IH0KIE5PREVfVFlQRV9DQVNUUyhI
VE1MUGx1Z0luSW1hZ2VFbGVtZW50KQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0xhYmVsYWJsZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvTGFiZWxhYmxlRWxlbWVudC5oCmluZGV4IDAxNGYxMTEyNzA3ZTVlMjhjY2ZkODM1
MDY0NDRiMWRjYzBjYzU3ZWIuLjk5NTgyMTdmYWI2ZjBhNzEwMWI1YjRkM2M1MjdmMDkyMmJlNjdh
NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTGFiZWxhYmxlRWxlbWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTGFiZWxhYmxlRWxlbWVudC5oCkBAIC01Myw3ICs1Myw4
IEBAIHByaXZhdGU6CiB2b2lkIGlzTGFiZWxhYmxlRWxlbWVudChjb25zdCBMYWJlbGFibGVFbGVt
ZW50Jik7IC8vIENhdGNoIHVubmVjZXNzYXJ5IHJ1bnRpbWUgY2hlY2sgb2YgdHlwZSBrbm93biBh
dCBjb21waWxlIHRpbWUuCiBpbmxpbmUgYm9vbCBpc0xhYmVsYWJsZUVsZW1lbnQoY29uc3QgSFRN
TEVsZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJuIGVsZW1lbnQuaXNMYWJlbGFibGUoKTsgfQogaW5s
aW5lIGJvb2wgaXNMYWJlbGFibGVFbGVtZW50KGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJuIG5v
ZGUuaXNIVE1MRWxlbWVudCgpICYmIHRvSFRNTEVsZW1lbnQobm9kZSkuaXNMYWJlbGFibGUoKTsg
fQotdGVtcGxhdGUgPD4gaW5saW5lIGJvb2wgaXNFbGVtZW50T2ZUeXBlPGNvbnN0IExhYmVsYWJs
ZUVsZW1lbnQ+KGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJuIGlzTGFiZWxhYmxlRWxl
bWVudChlbGVtZW50KTsgfQordGVtcGxhdGUgPD4gaW5saW5lIGJvb2wgaXNFbGVtZW50T2ZUeXBl
PGNvbnN0IExhYmVsYWJsZUVsZW1lbnQ+KGNvbnN0IEhUTUxFbGVtZW50JiBlbGVtZW50KSB7IHJl
dHVybiBpc0xhYmVsYWJsZUVsZW1lbnQoZWxlbWVudCk7IH0KK3RlbXBsYXRlIDw+IGlubGluZSBi
b29sIGlzRWxlbWVudE9mVHlwZTxjb25zdCBMYWJlbGFibGVFbGVtZW50Pihjb25zdCBOb2RlJiBu
b2RlKSB7IHJldHVybiBpc0xhYmVsYWJsZUVsZW1lbnQobm9kZSk7IH0KIAogTk9ERV9UWVBFX0NB
U1RTKExhYmVsYWJsZUVsZW1lbnQpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hdGht
bC9NYXRoTUxFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5o
CmluZGV4IGY5YzNiY2ZlMjM5ZTZlOGMyMDc5ZWViMTQ1ODNlZGMxNmQwNjg0MTAuLmE4NjZiMGNh
MzNhNWNhMmYzM2U1N2VmYjI1ZmFjM2NmZWVjN2QwMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL21hdGhtbC9NYXRoTUxFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01h
dGhNTEVsZW1lbnQuaApAQCAtNzcsNiArNzcsMTAgQEAgdm9pZCBpc01hdGhNTEVsZW1lbnQoY29u
c3QgTWF0aE1MRWxlbWVudCYpOyAvLyBDYXRjaCB1bm5lY2Vzc2FyeSBydW50aW1lIGNoZWNrIG8K
IGlubGluZSBib29sIGlzTWF0aE1MRWxlbWVudChjb25zdCBOb2RlJiBub2RlKSB7IHJldHVybiBu
b2RlLmlzTWF0aE1MRWxlbWVudCgpOyB9CiBOT0RFX1RZUEVfQ0FTVFMoTWF0aE1MRWxlbWVudCkK
IAordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGJvb2wgaXNFbGVtZW50T2ZUeXBlKGNvbnN0IE1hdGhN
TEVsZW1lbnQmKTsKK3RlbXBsYXRlIDw+IGlubGluZSBib29sIGlzRWxlbWVudE9mVHlwZTxjb25z
dCBNYXRoTUxFbGVtZW50Pihjb25zdCBOb2RlJiBub2RlKSB7IHJldHVybiBub2RlLmlzTWF0aE1M
RWxlbWVudCgpOyB9Cit0ZW1wbGF0ZSA8PiBpbmxpbmUgYm9vbCBpc0VsZW1lbnRPZlR5cGU8Y29u
c3QgTWF0aE1MRWxlbWVudD4oY29uc3QgTWF0aE1MRWxlbWVudCYpIHsgcmV0dXJuIHRydWU7IH0K
KwogaW5saW5lIGJvb2wgTm9kZTo6aGFzVGFnTmFtZShjb25zdCBNYXRoTUxRdWFsaWZpZWROYW1l
JiBuYW1lKSBjb25zdAogewogICAgIHJldHVybiBpc01hdGhNTEVsZW1lbnQoKSAmJiB0b01hdGhN
TEVsZW1lbnQoKnRoaXMpLmhhc1RhZ05hbWUobmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaApp
bmRleCBjNWMxN2Y4YzEyYjQyMWI1MTNlYmU5MjY0ZGYzOWNlYjdlMmQ1Y2Y5Li45YjMyYTVmNmQ2
MjQwMzIxNTk5YmJlOTQwODFjYjRmZjZlYmIxMmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgK
QEAgLTI1LDkgKzI1LDkgQEAKIAogI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKICNpbmNs
dWRlICJTVkdBbmltYXRlZFN0cmluZy5oIgotI2luY2x1ZGUgIlNWR0VsZW1lbnRUeXBlSGVscGVy
cy5oIgogI2luY2x1ZGUgIlNWR0xhbmdTcGFjZS5oIgogI2luY2x1ZGUgIlNWR0xvY2F0YWJsZS5o
IgorI2luY2x1ZGUgIlNWR05hbWVzLmgiCiAjaW5jbHVkZSAiU1ZHUGFyc2luZ0Vycm9yLmgiCiAj
aW5jbHVkZSAiU1ZHUHJvcGVydHlJbmZvLmgiCiAjaW5jbHVkZSAiU3R5bGVkRWxlbWVudC5oIgpA
QCAtMjI1LDcgKzIyNSw5IEBAIHN0cnVjdCBTVkdBdHRyaWJ1dGVIYXNoVHJhbnNsYXRvciB7CiAK
IHZvaWQgaXNTVkdFbGVtZW50KGNvbnN0IFNWR0VsZW1lbnQmKTsgLy8gQ2F0Y2ggdW5uZWNlc3Nh
cnkgcnVudGltZSBjaGVjayBvZiB0eXBlIGtub3duIGF0IGNvbXBpbGUgdGltZS4KIGlubGluZSBi
b29sIGlzU1ZHRWxlbWVudChjb25zdCBOb2RlJiBub2RlKSB7IHJldHVybiBub2RlLmlzU1ZHRWxl
bWVudCgpOyB9Ci10ZW1wbGF0ZSA8PiBpbmxpbmUgYm9vbCBpc0VsZW1lbnRPZlR5cGU8Y29uc3Qg
U1ZHRWxlbWVudD4oY29uc3QgRWxlbWVudCYgZWxlbWVudCkgeyByZXR1cm4gZWxlbWVudC5pc1NW
R0VsZW1lbnQoKTsgfQordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGJvb2wgaXNFbGVtZW50T2ZUeXBl
KGNvbnN0IFNWR0VsZW1lbnQmKTsKK3RlbXBsYXRlIDw+IGlubGluZSBib29sIGlzRWxlbWVudE9m
VHlwZTxjb25zdCBTVkdFbGVtZW50Pihjb25zdCBOb2RlJiBub2RlKSB7IHJldHVybiBub2RlLmlz
U1ZHRWxlbWVudCgpOyB9Cit0ZW1wbGF0ZSA8PiBpbmxpbmUgYm9vbCBpc0VsZW1lbnRPZlR5cGU8
Y29uc3QgU1ZHRWxlbWVudD4oY29uc3QgU1ZHRWxlbWVudCYpIHsgcmV0dXJuIHRydWU7IH0KIAog
Tk9ERV9UWVBFX0NBU1RTKFNWR0VsZW1lbnQpCiAKQEAgLTIzNCw2ICsyMzYsOCBAQCBpbmxpbmUg
Ym9vbCBOb2RlOjpoYXNUYWdOYW1lKGNvbnN0IFNWR1F1YWxpZmllZE5hbWUmIG5hbWUpIGNvbnN0
CiAgICAgcmV0dXJuIGlzU1ZHRWxlbWVudCgpICYmIHRvU1ZHRWxlbWVudCgqdGhpcykuaGFzVGFn
TmFtZShuYW1lKTsKIH0KIAotfQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjaW5jbHVkZSAi
U1ZHRWxlbWVudFR5cGVIZWxwZXJzLmgiCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oCmluZGV4
IDVmZGNiNjY0MjRjNmU0MmIwNTRiYjQzYWI4YWYzOTEzZmViMGE1OGMuLjU4NTZiMzQ5MWU5ODk1
Y2QzZjdiNzVmNzU5ODZmY2I0MWE5NjA0MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgKQEAgLTg1LDcg
Kzg1LDggQEAgdm9pZCBpbnZhbGlkYXRlRmlsdGVyUHJpbWl0aXZlUGFyZW50KFNWR0VsZW1lbnQq
KTsKIHZvaWQgaXNTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMoY29uc3QgU1ZH
RmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzJik7IC8vIENhdGNoIHVubmVjZXNzYXJ5
IHJ1bnRpbWUgY2hlY2sgb2YgdHlwZSBrbm93biBhdCBjb21waWxlIHRpbWUuCiBpbmxpbmUgYm9v
bCBpc1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyhjb25zdCBTVkdFbGVtZW50
JiBlbGVtZW50KSB7IHJldHVybiBlbGVtZW50LmlzRmlsdGVyRWZmZWN0KCk7IH0KIGlubGluZSBi
b29sIGlzU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKGNvbnN0IE5vZGUmIG5v
ZGUpIHsgcmV0dXJuIG5vZGUuaXNTVkdFbGVtZW50KCkgJiYgdG9TVkdFbGVtZW50KG5vZGUpLmlz
RmlsdGVyRWZmZWN0KCk7IH0KLXRlbXBsYXRlIDw+IGlubGluZSBib29sIGlzRWxlbWVudE9mVHlw
ZTxjb25zdCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM+KGNvbnN0IEVsZW1l
bnQmIGVsZW1lbnQpIHsgcmV0dXJuIGlzU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1
dGVzKGVsZW1lbnQpOyB9Cit0ZW1wbGF0ZSA8PiBpbmxpbmUgYm9vbCBpc0VsZW1lbnRPZlR5cGU8
Y29uc3QgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzPihjb25zdCBTVkdFbGVt
ZW50JiBlbGVtZW50KSB7IHJldHVybiBpc1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmli
dXRlcyhlbGVtZW50KTsgfQordGVtcGxhdGUgPD4gaW5saW5lIGJvb2wgaXNFbGVtZW50T2ZUeXBl
PGNvbnN0IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcz4oY29uc3QgTm9kZSYg
bm9kZSkgeyByZXR1cm4gaXNTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMobm9k
ZSk7IH0KIAogTk9ERV9UWVBFX0NBU1RTKFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmli
dXRlcykKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlM
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5o
CmluZGV4IDFlZWYzMTg2ZDJlZjFlNzNhNzVlZTVlYzQyMzc0Njg4OTliMGYyNzkuLmE3YTk4YzM3
NjFlMmFhN2YwNmZlYzY4NzVkZDEwMGVmZmJiNDJjODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmgKQEAgLTI0MCw3ICsyNDAsOCBAQCBwcml2YXRl
Ogogdm9pZCBpc1NWR1NNSUxFbGVtZW50KGNvbnN0IFNWR1NNSUxFbGVtZW50Jik7IC8vIENhdGNo
IHVubmVjZXNzYXJ5IHJ1bnRpbWUgY2hlY2sgb2YgdHlwZSBrbm93biBhdCBjb21waWxlIHRpbWUu
CiBpbmxpbmUgYm9vbCBpc1NWR1NNSUxFbGVtZW50KGNvbnN0IFNWR0VsZW1lbnQmIGVsZW1lbnQp
IHsgcmV0dXJuIGVsZW1lbnQuaXNTTUlMRWxlbWVudCgpOyB9CiBpbmxpbmUgYm9vbCBpc1NWR1NN
SUxFbGVtZW50KGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJuIG5vZGUuaXNTVkdFbGVtZW50KCkg
JiYgdG9TVkdFbGVtZW50KG5vZGUpLmlzU01JTEVsZW1lbnQoKTsgfQotdGVtcGxhdGUgPD4gaW5s
aW5lIGJvb2wgaXNFbGVtZW50T2ZUeXBlPGNvbnN0IFNWR1NNSUxFbGVtZW50Pihjb25zdCBFbGVt
ZW50JiBlbGVtZW50KSB7IHJldHVybiBpc1NWR1NNSUxFbGVtZW50KGVsZW1lbnQpOyB9Cit0ZW1w
bGF0ZSA8PiBpbmxpbmUgYm9vbCBpc0VsZW1lbnRPZlR5cGU8Y29uc3QgU1ZHU01JTEVsZW1lbnQ+
KGNvbnN0IFNWR0VsZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJuIGlzU1ZHU01JTEVsZW1lbnQoZWxl
bWVudCk7IH0KK3RlbXBsYXRlIDw+IGlubGluZSBib29sIGlzRWxlbWVudE9mVHlwZTxjb25zdCBT
VkdTTUlMRWxlbWVudD4oY29uc3QgTm9kZSYgbm9kZSkgeyByZXR1cm4gaXNTVkdTTUlMRWxlbWVu
dChub2RlKTsgfQogCiBOT0RFX1RZUEVfQ0FTVFMoU1ZHU01JTEVsZW1lbnQpCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>237972</attachid>
            <date>2014-09-11 12:01:10 -0700</date>
            <delta_ts>2014-09-11 12:24:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-136719-20140911120105.patch</filename>
            <type>text/plain</type>
            <size>27895</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTczNTE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTY1Mjk3NGZiNGYxODAy
NWNmMWEyNWMzMzk3YmFjMGFmOGY4Njk2Ni4uZGIyYzU0OTcyOGQyODFmOTlmNTJhYjBiMWQ2ZTRh
NjUyOGY3YzgxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0MSBAQAorMjAxNC0wOS0xMCAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEF2b2lkIHJlZHVuZGFudCBp
c0VsZW1lbnROb2RlKCkgY2hlY2tzIGluIFRyYXZlcnNhbDxIVE1MKkVsZW1lbnQ+IC8gVHJhdmVy
c2FsPFNWRypFbGVtZW50PgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTM2NzE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQXZvaWQgcmVkdW5kYW50IGlzRWxlbWVudE5vZGUoKSBjaGVja3MgaW4gVHJhdmVy
c2FsPEhUTUwqRWxlbWVudD4gLworICAgICAgICBUcmF2ZXJzYWw8U1ZHKkVsZW1lbnQ+LiAgV2Ug
dXNlZCB0byBpdGVyYXRlIHRocm91Z2ggRWxlbWVudHMsIGFuZCB0aGVuCisgICAgICAgIGNhbGwg
aXNFbGVtZW50T2ZUeXBlPEhUTUwqRWxlbWVudD4oKSAgb24gZWFjaCBFbGVtZW50LiBUaGlzIG1h
ZGUgc2Vuc2UKKyAgICAgICAgYmVjYXVzZSBoYXNUYWdOYW1lKCkgdXNlZCB0byBiZSBkZWZpbmVk
IG9uIEVsZW1lbnQuIEhvd2V2ZXIsIGFmdGVyCisgICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5v
cmcvY2hhbmdlc2V0LzE2NTY5OSwgaGFzVGFnTmFtZSgpIGlzIG5vdyBkZWZpbmVkIG9uCisgICAg
ICAgIE5vZGUgZm9yIEhUTUxRdWFsaWZpZWROYW1lIC8gU1ZHUXVhbGlmaWVkTmFtZSBhcmd1bWVu
dHMuCisKKyAgICAgICAgTm9kZTo6aGFzVGFnTmFtZShIVE1MUXVhbGlmaWVkTmFtZSkgYmFzaWNh
bGx5IGRvZXMgdGhlIGZvbGxvd2luZyBjaGVjaworICAgICAgICAiaXNIVE1MRWxlbWVudCgpICYm
ICB0b0hUTUxFbGVtZW50KCp0aGlzKS5oYXNUYWdOYW1lKHRhZ05hbWUpIi4gQXMgYQorICAgICAg
ICBjb25zZXF1ZW5jZSwgZG9pbmcgYW4gaXNFbGVtZW50Tm9kZSgpIGNoZWNrIGlzIG5vdyByZWR1
bmRhbnQgYXMKKyAgICAgICAgaXNIVE1MRWxlbWVudCgpIGlzIGRlZmluZWQgb24gTm9kZS4KKwor
ICAgICAgICBUaGlzIHBhdGNoIGFkZHMgaXNFbGVtZW50T2ZUeXBlPEVsZW1lbnRUeXBlPihOb2Rl
KSBoZWxwZXIgZnVuY3Rpb25zIGFuZAorICAgICAgICB1cGRhdGVzIFRyYXZlcnNhbDxFbGVtZW50
VHlwZT4gc28gdGhhdCB0aGUgbWV0aG9kcyB1c2UgTm9kZVRyYXZlcnNhbAorICAgICAgICBpbnRl
cm5hbGx5IGluc3RlYWQgb2YgVHJhdmVyc2FsPEVsZW1lbnRUeXBlPi4gQXMgYSByZXN1bHQsIHdl
IG5vdworICAgICAgICBpdGVyYXRlIG92ZXIgTm9kZXMgKG5vdCBFbGVtZW50cykgYW5kIGNhbGwg
dGhlIG5ldworICAgICAgICBpc0VsZW1lbnRPZlR5cGU8RWxlbWVudFR5cGU+KE5vZGUpIGhlbHBl
cnMgKHdoaWNoIGFyZSBlZmZpY2llbnQgYWZ0ZXIKKyAgICAgICAgcjE2NTY5OSkuCisKKyAgICAg
ICAgQmVmb3JlIHRoZSBwYXRjaCwgdGhlIGNvZGUgZW5kZWQgdXAgZG9pbmcgdGhlIGZvbGxvd2lu
ZyBjaGVja3MgZm9yCisgICAgICAgIFRyYXZlcnNhbDxIVE1MKmVsZW1lbnQ+OgorICAgICAgICBu
b2RlLmlzRWxlbWVudE5vZGUoKSAmJiB0b0VsZW1lbnQobm9kZSkuaXNIVE1MRWxlbWVudCgpCisg
ICAgICAgICAgICAmJiB0b0hUTUxFbGVtZW50KG5vZGUpLmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpm
b29UYWcpCisKKyAgICAgICAgQWZ0ZXIgdGhlIHBhdGNoLCB0aGUgY29kZSBvbmx5IGRvZXM6Cisg
ICAgICAgIG5vZGUuaXNIVE1MRWxlbWVudCgpCisgICAgICAgICAgICAmJiB0b0hUTUxFbGVtZW50
KG5vZGUpLmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpmb29UYWcpCisKKyAgICAgICAgTm8gbmV3IHRl
c3RzLCBubyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBkb20vRWxlbWVudC5oOgorICAg
ICAgICAoV2ViQ29yZTo6RWxlbWVudD4pOgorICAgICAgICAoV2ViQ29yZTo6aXNFbGVtZW50T2ZU
eXBlKToKKyAgICAgICAgQWRkIG5ldyBpc0VsZW1lbnRPZlR5cGUoKSBoZWxwZXIgdGFraW5nIGEg
Tm9kZSBpbiBhcmd1bWVudC4KKworICAgICAgICAqIGRvbS9FbGVtZW50VHJhdmVyc2FsLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpUcmF2ZXJzYWw8RWxlbWVudFR5cGU+OjpmaXJzdFdpdGhpblRlbXBs
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYXZlcnNhbDxFbGVtZW50VHlwZT46Omxhc3RXaXRo
aW5UZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpUcmF2ZXJzYWw8RWxlbWVudFR5cGU+Ojpu
ZXh0VGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6
cHJldmlvdXNUZW1wbGF0ZSk6CisgICAgICAgIFVzZSBOb2RlVHJhdmVyc2FsIEFQSSBpbnRlcm5h
bGx5IGluc3RlYWQgb2YgVHJhdmVyc2FsPEVsZW1lbnQ+IHRvIGF2b2lkCisgICAgICAgIHJlZHVu
ZGFudCBpc0VsZW1lbnROb2RlKCkgY2hlY2tzLgorCisgICAgICAgIChXZWJDb3JlOjpUcmF2ZXJz
YWw8RWxlbWVudD46Omxhc3RXaXRoaW5UZW1wbGF0ZSk6IERlbGV0ZWQuCisgICAgICAgIFRoZSBj
b2RlIGlzIG5vdyBpZGVudGljYWwgdG8gdGhlIGdlbmVyaWMgdmVyc2lvbi4KKworICAgICAgICAo
V2ViQ29yZTo6VHJhdmVyc2FsPEVsZW1lbnQ+OjpwcmV2aW91c1RlbXBsYXRlKTogRGVsZXRlZC4K
KyAgICAgICAgVGhlIGNvZGUgaXMgbm93IGlkZW50aWNhbCB0byB0aGUgZ2VuZXJpYyB2ZXJzaW9u
LgorCisgICAgICAgICogZG9tL21ha2VfbmFtZXMucGw6CisgICAgICAgIChwcmludFR5cGVIZWxw
ZXJzKToKKyAgICAgICAgLSBHZW5lcmF0ZSBpcypFbGVtZW50KCkgaGVscGVycyB0YWtpbmcgYSBO
b2RlIGluIGFyZ3VtZW50IGluc3RlYWQgb2YgYW4KKyAgICAgICAgICBFbGVtZW50LgorICAgICAg
ICAtIEdlbmVyYXRlIGlzRWxlbWVudE9mVHlwZTw+KCkgdGVtcGxhdGUgc3BlY2lhbGl6YXRpb25z
IHRha2luZyBhIE5vZGUKKyAgICAgICAgICBpbiBhcmd1bWVudC4KKyAgICAgICAgLSBTaGFyZSBt
b3JlIGNvZGUgYmV0d2VlbiBIVE1MIGNvZGUgcGF0aCBhbmQgdGhlIG90aGVyIHBhdGggKGZvciBT
VkcsCisgICAgICAgICAgTVRITUwpLgorCisgICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5oOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ+KToKKyAgICAgICAgVXBkYXRlIGlzRWxlbWVu
dE9mVHlwZTxjb25zdCBIVE1MRWxlbWVudD4oKSB0ZW1wbGF0ZSBzcGVjaWFsaXphdGlvbiB0bwor
ICAgICAgICB0YWtlIGEgTm9kZSBpbiBhcmd1bWVudCBpbnN0ZWFkIG9mIGFuIEVsZW1lbnQuIGlz
SFRNTEVsZW1lbnQoKSBpcworICAgICAgICBkZWZpbmVkIG9uIE5vZGUgYW55d2F5LgorCisgICAg
ICAgICogaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MRm9ybUNvbnRyb2xFbGVtZW50Pik6CisgICAgICAgIEFkZCBpc0VsZW1lbnRPZlR5cGU8Y29u
c3QgSFRNTEZvcm1Db250cm9sRWxlbWVudD4oKSB0ZW1wbGF0ZQorICAgICAgICBzcGVjaWFsaXph
dGlvbiB0YWtpbmcgYSBOb2RlIGluIGFyZ3VtZW50LiBLZWVwIHRoZSBvbmUgdGFraW5nIGFuIEVs
ZW1lbnQKKyAgICAgICAgaW4gYXJndW1lbnQgYXMgaXNGb3JtQ29udHJvbEVsZW1lbnQoKSBpcyBk
ZWZpbmVkIG9uIEVsZW1lbnQuCisKKyAgICAgICAgKiBodG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNl
Lmg6CisgICAgICAgIChXZWJDb3JlOjppc0hUTUxGcmFtZUVsZW1lbnRCYXNlKToKKyAgICAgICAg
LSBSZW1vdmUgaGVscGVyIHRha2luZyBhbiBFbGVtZW50IGluIGFyZ3VtZW50IGFzIGl0IGRvZXMg
bm90IGJyaW5nIGFueQorICAgICAgICAgIGJlbmVmaXQuIEluc3RlYWQsIHVwZGF0ZSB0aGUgb3Zl
cmxvYWQgdGFraW5nIGEgTm9kZSBpbiBhcmd1bWVudCB0bworICAgICAgICAgIHJlbW92ZSB0aGUg
dW5uZWNlc3NhcnkgaXNFbGVtZW50Tm9kZSgpIGNoZWNrIGFzIGlzSFRNTEZyYW1lRWxlbWVudChO
b2RlKQorICAgICAgICAgIGlzIG5vdyBlZmZpY2llbnQuCisgICAgICAgIC0gQWRkIGFuIG92ZXJs
b2FkIHRha2luZyBhbiBIVE1MRWxlbWVudCBpbiBhcmd1bWVudCBzbyB0aGF0IHdlIGNhbiBieXBh
c3MKKyAgICAgICAgICB0aGUgaXNIVE1MRWxlbWVudCgpIGNoZWNrIHdoZW4gd2Uga25vdyB0aGUg
aW5wdXQgaXMgYW4gSFRNTEVsZW1lbnQuCisKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1l
bnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ+KToKKyAgICAgICAgQWRk
IGlzRWxlbWVudE9mVHlwZTxjb25zdCBIVE1MTWVkaWFFbGVtZW50PigpIHRlbXBsYXRlIHNwZWNp
YWxpemF0aW9uCisgICAgICAgIHRha2luZyBhIE5vZGUgaW4gYXJndW1lbnQuIEtlZXAgdGhlIG9u
ZSB0YWtpbmcgYW4gRWxlbWVudCBpbiBhcmd1bWVudCBhcworICAgICAgICBpc01lZGlhRWxlbWVu
dCgpIGlzIGRlZmluZWQgb24gRWxlbWVudC4KKworICAgICAgICAqIGh0bWwvSFRNTFBsdWdJbklt
YWdlRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJbkltYWdlRWxlbWVudD4p
OgorICAgICAgICBVcGRhdGUgaXNFbGVtZW50T2ZUeXBlPGNvbnN0IEhUTUxQbHVnSW5JbWFnZUVs
ZW1lbnQ+KCkgdGVtcGxhdGUKKyAgICAgICAgc3BlY2lhbGl6YXRpb24gdG8gdGFrZSBhIE5vZGUg
aW4gYXJndW1lbnQgaW5zdGVhZCBvZiBhbiBFbGVtZW50LgorICAgICAgICBpc1BsdWdpbkVsZW1l
bnQoKSBpcyBkZWZpbmVkIG9uIE5vZGUgYW55d2F5LgorCisgICAgICAgICogaHRtbC9MYWJlbGFi
bGVFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpMYWJlbGFibGVFbGVtZW50Pik6CisgICAg
ICAgIFVwZGF0ZSBpc0VsZW1lbnRPZlR5cGU8Y29uc3QgTGFiZWxhYmxlRWxlbWVudD4oKSB0ZW1w
bGF0ZQorICAgICAgICBzcGVjaWFsaXphdGlvbiB0byB0YWtlIGEgTm9kZSBpbiBhcmd1bWVudCBp
bnN0ZWFkIG9mIGFuIEVsZW1lbnQuCisgICAgICAgIGlzSFRNTEVsZW1lbnQoKSBpcyBkZWZpbmVk
IG9uIE5vZGUgYW55d2F5LgorCisgICAgICAgICogbWF0aG1sL01hdGhNTEVsZW1lbnQuaDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1hdGhNTEVsZW1lbnQ+KToKKyAgICAgICAgRGVmaW5lIGlzRWxlbWVu
dE9mVHlwZSgpIGZvciBNYXRoTUxFbGVtZW50IHNvIHRoYXQgdGhlIFRyYXZlcnNhbCBBUEkgY2Fu
CisgICAgICAgIGJlIHVzZWQgZm9yIHRoZXNlIHR5cGVzIGFzIHdlbGwuIFRoaXMgaXMgY29uc2lz
dGVudCB3aXRoIEhUTUxFbGVtZW50IGFuZAorICAgICAgICBTVkdFbGVtZW50LgorCisgICAgICAg
ICogc3ZnL1NWR0VsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ+KToKKyAg
ICAgICAgLSBVcGRhdGUgaXNFbGVtZW50T2ZUeXBlPGNvbnN0IFNWR0VsZW1lbnQ+KCkgdGVtcGxh
dGUgc3BlY2lhbGl6YXRpb24gdG8KKyAgICAgICAgICB0YWtlIGEgTm9kZSBpbiBhcmd1bWVudCBp
bnN0ZWFkIG9mIGFuIEVsZW1lbnQuIGlzU1ZHRWxlbWVudCgpIGlzCisgICAgICAgICAgZGVmaW5l
ZCBvbiBOb2RlIGFueXdheS4KKyAgICAgICAgLSBEZWZpbmUgaXNFbGVtZW50T2ZUeXBlKCkgdGVt
cGxhdGVkIGZ1bmN0aW9uIHRha2luZyBhbiBTVkdFbGVtZW50IGluCisgICAgICAgICAgYXJndW1l
bnQgc28gdGhhdCB3ZSBjYW4gY2FsbCBTVkdFbGVtZW50OjpoYXNUYWdOYW1lKFNWR1F1YWxpZmll
ZE5hbWUpCisgICAgICAgICAgaW5zdGVhZCBvZiBOb2RlOjpoYXNUYWdOYW1lKFNWR1F1YWxpZmll
ZE5hbWUpIGlmIHdlIGtub3cgdGhlIGlucHV0CisgICAgICAgICAgdHlwZSBpcyBhbiBTVkdFbGVt
ZW50LiBUaGlzIGlzIGNvbnNpc3RlbnQgd2l0aCBIVE1MRWxlbWVudCwgd2hpY2gKKyAgICAgICAg
ICBhbHJlYWR5IGhhZCB0aGlzLgorICAgICAgICAtIGluY2x1ZGUgU1ZHRWxlbWVudFR5cGVIZWxw
ZXJzLmggYXQgdGhlIGVuZCBvZiB0aGUgZmlsZSAoc2ltaWxhcmx5IHRvCisgICAgICAgICAgd2hh
dCBpcyBhbHJlYWR5IGRvbmUgaW4gSFRNTEVsZW1lbnQuaCBiZWNhdXNlCisgICAgICAgICAgaXNF
bGVtZW50T2ZUeXBlKGNvbnN0IFNWR0VsZW1lbnQmKSBuZWVkcyB0byBiZSBkZWZpZW5kIGJlY2F1
c2UgdGhlCisgICAgICAgICAgaW5jbHVkZS4KKworICAgICAgICAqIHN2Zy9TVkdGaWx0ZXJQcmlt
aXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlclBy
aW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcz4pOgorICAgICAgICBVcGRhdGUgaXNFbGVtZW50T2ZU
eXBlPGNvbnN0IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcz4oKQorICAgICAg
ICB0ZW1wbGF0ZSBzcGVjaWFsaXphdGlvbiB0byB0YWtlIGEgTm9kZSBpbiBhcmd1bWVudCBpbnN0
ZWFkIG9mIGFuIEVsZW1lbnQuCisgICAgICAgIGlzU1ZHRWxlbWVudCgpIGlzIGRlZmluZWQgb24g
Tm9kZSBhbnl3YXkuCisKKyAgICAgICAgKiBzdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50Lmg6
CisgICAgICAgIChXZWJDb3JlOjpTVkdTTUlMRWxlbWVudD4pOgorICAgICAgICBVcGRhdGUgaXNF
bGVtZW50T2ZUeXBlPGNvbnN0IFNWR1NNSUxFbGVtZW50PigpIHRlbXBsYXRlIHNwZWNpYWxpemF0
aW9uCisgICAgICAgIHRvIHRha2UgYSBOb2RlIGluIGFyZ3VtZW50IGluc3RlYWQgb2YgYW4gRWxl
bWVudC4gaXNTVkdFbGVtZW50KCkgaXMKKyAgICAgICAgZGVmaW5lZCBvbiBOb2RlIGFueXdheS4K
KworCiAyMDE0LTA5LTExICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CiAK
ICAgICAgICAgQVg6IENoaWxkcmVuIGluc2lkZSBhIDxsZWdlbmQ+IGFyZSBub3QgYWNjZXNzaWJs
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50LmgKaW5kZXggN2E2NDYzZWZhZDcyNDgyYTgxMTAyY2M1YTRiOGNkZmQx
NmJjZTQzNy4uZjk5ODIyYzQxNTAwY2I4ZWUxNTE3MWVlYTQ4ODc0YTc4ZGIzODQ4NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudC5oCkBAIC02NzQsOCArNjc0LDkgQEAgaW5saW5lIGJvb2wgaXNFbGVtZW50KGNv
bnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJuIG5vZGUuaXNFbGVtZW50Tm9kZSgpOyB9CiAKIE5PREVf
VFlQRV9DQVNUUyhFbGVtZW50KQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVHlwZT4gYm9vbCBpc0Vs
ZW1lbnRPZlR5cGUoY29uc3QgRWxlbWVudCYpOwotdGVtcGxhdGUgPHR5cGVuYW1lIFR5cGU+IGlu
bGluZSBib29sIGlzRWxlbWVudE9mVHlwZShjb25zdCBOb2RlJiBub2RlKSB7IHJldHVybiBub2Rl
LmlzRWxlbWVudE5vZGUoKSAmJiBpc0VsZW1lbnRPZlR5cGU8Y29uc3QgVHlwZT4odG9FbGVtZW50
KG5vZGUpKTsgfQordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGJvb2wgaXNFbGVtZW50T2ZUeXBlKGNv
bnN0IE5vZGUmKTsKK3RlbXBsYXRlIDw+IGlubGluZSBib29sIGlzRWxlbWVudE9mVHlwZTxjb25z
dCBFbGVtZW50Pihjb25zdCBOb2RlJiBub2RlKSB7IHJldHVybiBub2RlLmlzRWxlbWVudE5vZGUo
KTsgfQordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSBib29sIGlzRWxlbWVudE9mVHlwZShj
b25zdCBFbGVtZW50JiBlbGVtZW50KSB7IHJldHVybiBpc0VsZW1lbnRPZlR5cGU8VD4oc3RhdGlj
X2Nhc3Q8Y29uc3QgTm9kZSY+KGVsZW1lbnQpKTsgfQogdGVtcGxhdGUgPD4gaW5saW5lIGJvb2wg
aXNFbGVtZW50T2ZUeXBlPGNvbnN0IEVsZW1lbnQ+KGNvbnN0IEVsZW1lbnQmKSB7IHJldHVybiB0
cnVlOyB9CiAKIGlubGluZSBib29sIE5vZGU6Omhhc0F0dHJpYnV0ZXMoKSBjb25zdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRUcmF2ZXJzYWwuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50VHJhdmVyc2FsLmgKaW5kZXggMDNhN2M5OGYxYzMyMjlmMjk2ZTlkMjFl
YjI5YjAyOWVjMGI4M2QzYS4uYTQ0ZDU3MzAyYmY4ZWY5YzlkYzBmZjcwMTliMDllZDJjODA1NDIy
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRUcmF2ZXJzYWwuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFRyYXZlcnNhbC5oCkBAIC0xMDQsMTYgKzEwNCw2
IEBAIGlubGluZSBFbGVtZW50KiBUcmF2ZXJzYWw8RWxlbWVudD46OmZpcnN0V2l0aGluVGVtcGxh
dGUoQ3VycmVudFR5cGUqIGN1cnJlbnQpCiAKIHRlbXBsYXRlIDw+CiB0ZW1wbGF0ZSA8dHlwZW5h
bWUgQ3VycmVudFR5cGU+Ci1pbmxpbmUgRWxlbWVudCogVHJhdmVyc2FsPEVsZW1lbnQ+OjpsYXN0
V2l0aGluVGVtcGxhdGUoQ3VycmVudFR5cGUqIGN1cnJlbnQpCi17Ci0gICAgTm9kZSogbm9kZSA9
IE5vZGVUcmF2ZXJzYWw6Omxhc3QoY3VycmVudCk7Ci0gICAgd2hpbGUgKG5vZGUgJiYgIW5vZGUt
PmlzRWxlbWVudE5vZGUoKSkKLSAgICAgICAgbm9kZSA9IE5vZGVUcmF2ZXJzYWw6OnByZXZpb3Vz
KG5vZGUsIGN1cnJlbnQpOwotICAgIHJldHVybiB0b0VsZW1lbnQobm9kZSk7Ci19Ci0KLXRlbXBs
YXRlIDw+Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgQ3VycmVudFR5cGU+CiBpbmxpbmUgRWxlbWVudCog
VHJhdmVyc2FsPEVsZW1lbnQ+OjpuZXh0VGVtcGxhdGUoQ3VycmVudFR5cGUqIGN1cnJlbnQpCiB7
CiAgICAgTm9kZSogbm9kZSA9IE5vZGVUcmF2ZXJzYWw6Om5leHQoY3VycmVudCk7CkBAIC0xMzIs
MjYgKzEyMiw2IEBAIGlubGluZSBFbGVtZW50KiBUcmF2ZXJzYWw8RWxlbWVudD46Om5leHRUZW1w
bGF0ZShDdXJyZW50VHlwZSogY3VycmVudCwgY29uc3QgTm9kCiAgICAgcmV0dXJuIHRvRWxlbWVu
dChub2RlKTsKIH0KIAotdGVtcGxhdGUgPD4KLXRlbXBsYXRlIDx0eXBlbmFtZSBDdXJyZW50VHlw
ZT4KLWlubGluZSBFbGVtZW50KiBUcmF2ZXJzYWw8RWxlbWVudD46OnByZXZpb3VzVGVtcGxhdGUo
Q3VycmVudFR5cGUqIGN1cnJlbnQpCi17Ci0gICAgTm9kZSogbm9kZSA9IE5vZGVUcmF2ZXJzYWw6
OnByZXZpb3VzKGN1cnJlbnQpOwotICAgIHdoaWxlIChub2RlICYmICFub2RlLT5pc0VsZW1lbnRO
b2RlKCkpCi0gICAgICAgIG5vZGUgPSBOb2RlVHJhdmVyc2FsOjpwcmV2aW91cyhub2RlKTsKLSAg
ICByZXR1cm4gdG9FbGVtZW50KG5vZGUpOwotfQotCi10ZW1wbGF0ZSA8PgotdGVtcGxhdGUgPHR5
cGVuYW1lIEN1cnJlbnRUeXBlPgotaW5saW5lIEVsZW1lbnQqIFRyYXZlcnNhbDxFbGVtZW50Pjo6
cHJldmlvdXNUZW1wbGF0ZShDdXJyZW50VHlwZSogY3VycmVudCwgY29uc3QgTm9kZSogc3RheVdp
dGhpbikKLXsKLSAgICBOb2RlKiBub2RlID0gTm9kZVRyYXZlcnNhbDo6cHJldmlvdXMoY3VycmVu
dCwgc3RheVdpdGhpbik7Ci0gICAgd2hpbGUgKG5vZGUgJiYgIW5vZGUtPmlzRWxlbWVudE5vZGUo
KSkKLSAgICAgICAgbm9kZSA9IE5vZGVUcmF2ZXJzYWw6OnByZXZpb3VzKG5vZGUsIHN0YXlXaXRo
aW4pOwotICAgIHJldHVybiB0b0VsZW1lbnQobm9kZSk7Ci19Ci0KIC8vIEdlbmVyaWMgdmVyc2lv
bnMuCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+CiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
Q3VycmVudFR5cGU+CkBAIC0xNzcsNjAgKzE0Nyw2MCBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxl
bWVudFR5cGU+CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ3VycmVudFR5cGU+CiBpbmxpbmUgRWxlbWVu
dFR5cGUqIFRyYXZlcnNhbDxFbGVtZW50VHlwZT46OmZpcnN0V2l0aGluVGVtcGxhdGUoQ3VycmVu
dFR5cGUqIGN1cnJlbnQpCiB7Ci0gICAgRWxlbWVudCogZWxlbWVudCA9IFRyYXZlcnNhbDxFbGVt
ZW50Pjo6Zmlyc3RXaXRoaW4oY3VycmVudCk7Ci0gICAgd2hpbGUgKGVsZW1lbnQgJiYgIWlzRWxl
bWVudE9mVHlwZTxjb25zdCBFbGVtZW50VHlwZT4oKmVsZW1lbnQpKQotICAgICAgICBlbGVtZW50
ID0gVHJhdmVyc2FsPEVsZW1lbnQ+OjpuZXh0KGVsZW1lbnQsIGN1cnJlbnQpOwotICAgIHJldHVy
biBzdGF0aWNfY2FzdDxFbGVtZW50VHlwZSo+KGVsZW1lbnQpOworICAgIE5vZGUqIG5vZGUgPSBj
dXJyZW50LT5maXJzdENoaWxkKCk7CisgICAgd2hpbGUgKG5vZGUgJiYgIWlzRWxlbWVudE9mVHlw
ZTxjb25zdCBFbGVtZW50VHlwZT4oKm5vZGUpKQorICAgICAgICBub2RlID0gTm9kZVRyYXZlcnNh
bDo6bmV4dChub2RlLCBjdXJyZW50KTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RWxlbWVudFR5
cGUqPihub2RlKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgogdGVtcGxh
dGUgPHR5cGVuYW1lIEN1cnJlbnRUeXBlPgogaW5saW5lIEVsZW1lbnRUeXBlKiBUcmF2ZXJzYWw8
RWxlbWVudFR5cGU+OjpsYXN0V2l0aGluVGVtcGxhdGUoQ3VycmVudFR5cGUqIGN1cnJlbnQpCiB7
Ci0gICAgRWxlbWVudCogZWxlbWVudCA9IFRyYXZlcnNhbDxFbGVtZW50Pjo6bGFzdFdpdGhpbihj
dXJyZW50KTsKLSAgICB3aGlsZSAoZWxlbWVudCAmJiAhaXNFbGVtZW50T2ZUeXBlPGNvbnN0IEVs
ZW1lbnRUeXBlPigqZWxlbWVudCkpCi0gICAgICAgIGVsZW1lbnQgPSBUcmF2ZXJzYWw8RWxlbWVu
dD46OnByZXZpb3VzKGVsZW1lbnQsIGN1cnJlbnQpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxF
bGVtZW50VHlwZSo+KGVsZW1lbnQpOworICAgIE5vZGUqIG5vZGUgPSBOb2RlVHJhdmVyc2FsOjps
YXN0KGN1cnJlbnQpOworICAgIHdoaWxlIChub2RlICYmICFpc0VsZW1lbnRPZlR5cGU8Y29uc3Qg
RWxlbWVudFR5cGU+KCpub2RlKSkKKyAgICAgICAgbm9kZSA9IE5vZGVUcmF2ZXJzYWw6OnByZXZp
b3VzKG5vZGUsIGN1cnJlbnQpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxFbGVtZW50VHlwZSo+
KG5vZGUpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+CiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgQ3VycmVudFR5cGU+CiBpbmxpbmUgRWxlbWVudFR5cGUqIFRyYXZlcnNhbDxFbGVt
ZW50VHlwZT46Om5leHRUZW1wbGF0ZShDdXJyZW50VHlwZSogY3VycmVudCkKIHsKLSAgICBFbGVt
ZW50KiBlbGVtZW50ID0gVHJhdmVyc2FsPEVsZW1lbnQ+OjpuZXh0KGN1cnJlbnQpOwotICAgIHdo
aWxlIChlbGVtZW50ICYmICFpc0VsZW1lbnRPZlR5cGU8Y29uc3QgRWxlbWVudFR5cGU+KCplbGVt
ZW50KSkKLSAgICAgICAgZWxlbWVudCA9IFRyYXZlcnNhbDxFbGVtZW50Pjo6bmV4dChlbGVtZW50
KTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RWxlbWVudFR5cGUqPihlbGVtZW50KTsKKyAgICBO
b2RlKiBub2RlID0gTm9kZVRyYXZlcnNhbDo6bmV4dChjdXJyZW50KTsKKyAgICB3aGlsZSAobm9k
ZSAmJiAhaXNFbGVtZW50T2ZUeXBlPGNvbnN0IEVsZW1lbnRUeXBlPigqbm9kZSkpCisgICAgICAg
IG5vZGUgPSBOb2RlVHJhdmVyc2FsOjpuZXh0KG5vZGUpOworICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxFbGVtZW50VHlwZSo+KG5vZGUpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5
cGU+CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ3VycmVudFR5cGU+CiBpbmxpbmUgRWxlbWVudFR5cGUq
IFRyYXZlcnNhbDxFbGVtZW50VHlwZT46Om5leHRUZW1wbGF0ZShDdXJyZW50VHlwZSogY3VycmVu
dCwgY29uc3QgTm9kZSogc3RheVdpdGhpbikKIHsKLSAgICBFbGVtZW50KiBlbGVtZW50ID0gVHJh
dmVyc2FsPEVsZW1lbnQ+OjpuZXh0KGN1cnJlbnQsIHN0YXlXaXRoaW4pOwotICAgIHdoaWxlIChl
bGVtZW50ICYmICFpc0VsZW1lbnRPZlR5cGU8Y29uc3QgRWxlbWVudFR5cGU+KCplbGVtZW50KSkK
LSAgICAgICAgZWxlbWVudCA9IFRyYXZlcnNhbDxFbGVtZW50Pjo6bmV4dChlbGVtZW50LCBzdGF5
V2l0aGluKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RWxlbWVudFR5cGUqPihlbGVtZW50KTsK
KyAgICBOb2RlKiBub2RlID0gTm9kZVRyYXZlcnNhbDo6bmV4dChjdXJyZW50LCBzdGF5V2l0aGlu
KTsKKyAgICB3aGlsZSAobm9kZSAmJiAhaXNFbGVtZW50T2ZUeXBlPGNvbnN0IEVsZW1lbnRUeXBl
Pigqbm9kZSkpCisgICAgICAgIG5vZGUgPSBOb2RlVHJhdmVyc2FsOjpuZXh0KG5vZGUsIHN0YXlX
aXRoaW4pOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxFbGVtZW50VHlwZSo+KG5vZGUpOwogfQog
CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ3Vy
cmVudFR5cGU+CiBpbmxpbmUgRWxlbWVudFR5cGUqIFRyYXZlcnNhbDxFbGVtZW50VHlwZT46OnBy
ZXZpb3VzVGVtcGxhdGUoQ3VycmVudFR5cGUqIGN1cnJlbnQpCiB7Ci0gICAgRWxlbWVudCogZWxl
bWVudCA9IFRyYXZlcnNhbDxFbGVtZW50Pjo6cHJldmlvdXMoY3VycmVudCk7Ci0gICAgd2hpbGUg
KGVsZW1lbnQgJiYgIWlzRWxlbWVudE9mVHlwZTxjb25zdCBFbGVtZW50VHlwZT4oKmVsZW1lbnQp
KQotICAgICAgICBlbGVtZW50ID0gVHJhdmVyc2FsPEVsZW1lbnQ+OjpwcmV2aW91cyhlbGVtZW50
KTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RWxlbWVudFR5cGUqPihlbGVtZW50KTsKKyAgICBO
b2RlKiBub2RlID0gTm9kZVRyYXZlcnNhbDo6cHJldmlvdXMoY3VycmVudCk7CisgICAgd2hpbGUg
KG5vZGUgJiYgIWlzRWxlbWVudE9mVHlwZTxjb25zdCBFbGVtZW50VHlwZT4oKm5vZGUpKQorICAg
ICAgICBub2RlID0gTm9kZVRyYXZlcnNhbDo6cHJldmlvdXMobm9kZSk7CisgICAgcmV0dXJuIHN0
YXRpY19jYXN0PEVsZW1lbnRUeXBlKj4obm9kZSk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBF
bGVtZW50VHlwZT4KIHRlbXBsYXRlIDx0eXBlbmFtZSBDdXJyZW50VHlwZT4KIGlubGluZSBFbGVt
ZW50VHlwZSogVHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6cHJldmlvdXNUZW1wbGF0ZShDdXJyZW50
VHlwZSogY3VycmVudCwgY29uc3QgTm9kZSogc3RheVdpdGhpbikKIHsKLSAgICBFbGVtZW50KiBl
bGVtZW50ID0gVHJhdmVyc2FsPEVsZW1lbnQ+OjpwcmV2aW91cyhjdXJyZW50LCBzdGF5V2l0aGlu
KTsKLSAgICB3aGlsZSAoZWxlbWVudCAmJiAhaXNFbGVtZW50T2ZUeXBlPGNvbnN0IEVsZW1lbnRU
eXBlPigqZWxlbWVudCkpCi0gICAgICAgIGVsZW1lbnQgPSBUcmF2ZXJzYWw8RWxlbWVudD46OnBy
ZXZpb3VzKGVsZW1lbnQsIHN0YXlXaXRoaW4pOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxFbGVt
ZW50VHlwZSo+KGVsZW1lbnQpOworICAgIE5vZGUqIG5vZGUgPSBOb2RlVHJhdmVyc2FsOjpwcmV2
aW91cyhjdXJyZW50LCBzdGF5V2l0aGluKTsKKyAgICB3aGlsZSAobm9kZSAmJiAhaXNFbGVtZW50
T2ZUeXBlPGNvbnN0IEVsZW1lbnRUeXBlPigqbm9kZSkpCisgICAgICAgIG5vZGUgPSBOb2RlVHJh
dmVyc2FsOjpwcmV2aW91cyhub2RlLCBzdGF5V2l0aGluKTsKKyAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8RWxlbWVudFR5cGUqPihub2RlKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRU
eXBlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL21ha2VfbmFtZXMucGwgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vbWFrZV9uYW1lcy5wbAppbmRleCBhNDZmMTBiM2M5MGQ3MzAzZDY0YWUy
OTM0ZDlkNmEzNTI4YzNhY2RmLi5mMTkxYTQ2NDMxMDFkOTExYzRmZmYxMTQ1Mjg4YTZmMDU0M2Y5
ZWNjIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vbWFrZV9uYW1lcy5wbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vbWFrZV9uYW1lcy5wbApAQCAtNjQyLDQwICs2NDIsMjYgQEAgdm9p
ZCAkY2hlY2tIZWxwZXIoY29uc3QgJGNsYXNzKik7IC8vIENhdGNoIHVubmVjZXNzYXJ5IHJ1bnRp
bWUgY2hlY2sgb2YgdHlwZSBrbm8KIEVORAogICAgICAgICA7CiAKLSAgICAgICAgaWYgKCRwYXJh
bWV0ZXJze25hbWVzcGFjZX0gZXEgIkhUTUwiKSB7Ci0gICAgICAgICAgICBpZiAoJHBhcnNlZFRh
Z3N7JG5hbWV9e3dyYXBwZXJPbmx5SWZNZWRpYUlzQXZhaWxhYmxlfSkgewotICAgICAgICAgICAg
ICAgICMgV2UgbmVlZCB0byBjaGVjayBmb3IgSFRNTFVua25vd25FbGVtZW50IGlmIGl0IG1pZ2h0
IGhhdmUgYmVlbiBjcmVhdGVkIGJ5IHRoZSBmYWN0b3J5LgotICAgICAgICAgICAgICAgIHByaW50
IEYgPDxFTkQKKyAgICAgICAgaWYgKCRwYXJhbWV0ZXJze25hbWVzcGFjZX0gZXEgIkhUTUwiICYm
ICRwYXJzZWRUYWdzeyRuYW1lfXt3cmFwcGVyT25seUlmTWVkaWFJc0F2YWlsYWJsZX0pIHsKKyAg
ICAgICAgICAgICMgV2UgbmVlZCB0byBjaGVjayBmb3IgSFRNTFVua25vd25FbGVtZW50IGlmIGl0
IG1pZ2h0IGhhdmUgYmVlbiBjcmVhdGVkIGJ5IHRoZSBmYWN0b3J5LgorICAgICAgICAgICAgcHJp
bnQgRiA8PEVORAogaW5saW5lIGJvb2wgJGNoZWNrSGVscGVyKGNvbnN0IEhUTUxFbGVtZW50JiBl
bGVtZW50KSB7IHJldHVybiAhZWxlbWVudC5pc0hUTUxVbmtub3duRWxlbWVudCgpICYmIGVsZW1l
bnQuaGFzVGFnTmFtZSgkcGFyYW1ldGVyc3tuYW1lc3BhY2V9TmFtZXM6OiR7bmFtZX1UYWcpOyB9
Ci1pbmxpbmUgYm9vbCAkY2hlY2tIZWxwZXIoY29uc3QgSFRNTEVsZW1lbnQqIGVsZW1lbnQpIHsg
QVNTRVJUKGVsZW1lbnQpOyByZXR1cm4gJGNoZWNrSGVscGVyKCplbGVtZW50KTsgfQotRU5ECi0g
ICAgICAgICAgICAgICAgOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBw
cmludCBGIDw8RU5ECi1pbmxpbmUgYm9vbCAkY2hlY2tIZWxwZXIoY29uc3QgSFRNTEVsZW1lbnQm
IGVsZW1lbnQpIHsgcmV0dXJuIGVsZW1lbnQuaGFzVGFnTmFtZShIVE1MTmFtZXM6OiR7bmFtZX1U
YWcpOyB9Ci1pbmxpbmUgYm9vbCAkY2hlY2tIZWxwZXIoY29uc3QgSFRNTEVsZW1lbnQqIGVsZW1l
bnQpIHsgQVNTRVJUKGVsZW1lbnQpOyByZXR1cm4gJGNoZWNrSGVscGVyKCplbGVtZW50KTsgfQot
RU5ECi0gICAgICAgICAgICAgICAgOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAg
cHJpbnQgRiA8PEVORAotaW5saW5lIGJvb2wgJGNoZWNrSGVscGVyKGNvbnN0IE5vZGUmIG5vZGUp
IHsgcmV0dXJuIG5vZGUuaXNIVE1MRWxlbWVudCgpICYmICRjaGVja0hlbHBlcih0b0hUTUxFbGVt
ZW50KG5vZGUpKTsgfQotaW5saW5lIGJvb2wgJGNoZWNrSGVscGVyKGNvbnN0IE5vZGUqIG5vZGUp
IHsgQVNTRVJUKG5vZGUpOyByZXR1cm4gJGNoZWNrSGVscGVyKCpub2RlKTsgfQotdGVtcGxhdGUg
PD4gaW5saW5lIGJvb2wgaXNFbGVtZW50T2ZUeXBlPGNvbnN0ICRjbGFzcz4oY29uc3QgSFRNTEVs
ZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJuICRjaGVja0hlbHBlcihlbGVtZW50KTsgfQotdGVtcGxh
dGUgPD4gaW5saW5lIGJvb2wgaXNFbGVtZW50T2ZUeXBlPGNvbnN0ICRjbGFzcz4oY29uc3QgRWxl
bWVudCYgZWxlbWVudCkgeyByZXR1cm4gJGNoZWNrSGVscGVyKGVsZW1lbnQpOyB9CiBFTkQKLSAg
ICAgICAgICAgICAgICA7Ci0KKyAgICAgICAgICAgIDsKICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgIHByaW50IEYgPDxFTkQKLWlubGluZSBib29sICRjaGVja0hlbHBlcihjb25zdCBFbGVt
ZW50JiBlbGVtZW50KSB7IHJldHVybiBlbGVtZW50Lmhhc1RhZ05hbWUoJHBhcmFtZXRlcnN7bmFt
ZXNwYWNlfU5hbWVzOjoke25hbWV9VGFnKTsgfQotaW5saW5lIGJvb2wgJGNoZWNrSGVscGVyKGNv
bnN0IEVsZW1lbnQqIGVsZW1lbnQpIHsgQVNTRVJUKGVsZW1lbnQpOyByZXR1cm4gJGNoZWNrSGVs
cGVyKCplbGVtZW50KTsgfQotaW5saW5lIGJvb2wgJGNoZWNrSGVscGVyKGNvbnN0IE5vZGUmIG5v
ZGUpIHsgcmV0dXJuIG5vZGUuaXNFbGVtZW50Tm9kZSgpICYmICRjaGVja0hlbHBlcih0b0VsZW1l
bnQobm9kZSkpOyB9Ci1pbmxpbmUgYm9vbCAkY2hlY2tIZWxwZXIoY29uc3QgTm9kZSogbm9kZSkg
eyBBU1NFUlQobm9kZSk7IHJldHVybiBub2RlLT5pc0VsZW1lbnROb2RlKCkgJiYgJGNoZWNrSGVs
cGVyKHRvRWxlbWVudChub2RlKSk7IH0KLXRlbXBsYXRlIDw+IGlubGluZSBib29sIGlzRWxlbWVu
dE9mVHlwZTxjb25zdCAkY2xhc3M+KGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJuICRj
aGVja0hlbHBlcihlbGVtZW50KTsgfQoraW5saW5lIGJvb2wgJGNoZWNrSGVscGVyKGNvbnN0ICRw
YXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50JiBlbGVtZW50KSB7IHJldHVybiBlbGVtZW50Lmhh
c1RhZ05hbWUoJHBhcmFtZXRlcnN7bmFtZXNwYWNlfU5hbWVzOjoke25hbWV9VGFnKTsgfQogRU5E
CiAgICAgICAgICAgICA7CiAgICAgICAgIH0KKyAgICAgICAgcHJpbnQgRiA8PEVORAoraW5saW5l
IGJvb2wgJGNoZWNrSGVscGVyKGNvbnN0ICRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50KiBl
bGVtZW50KSB7IEFTU0VSVChlbGVtZW50KTsgcmV0dXJuICRjaGVja0hlbHBlcigqZWxlbWVudCk7
IH0KK2lubGluZSBib29sICRjaGVja0hlbHBlcihjb25zdCBOb2RlJiBub2RlKSB7IHJldHVybiBu
b2RlLmhhc1RhZ05hbWUoJHBhcmFtZXRlcnN7bmFtZXNwYWNlfU5hbWVzOjoke25hbWV9VGFnKTsg
fQoraW5saW5lIGJvb2wgJGNoZWNrSGVscGVyKGNvbnN0IE5vZGUqIG5vZGUpIHsgQVNTRVJUKG5v
ZGUpOyByZXR1cm4gJGNoZWNrSGVscGVyKCpub2RlKTsgfQordGVtcGxhdGUgPD4gaW5saW5lIGJv
b2wgaXNFbGVtZW50T2ZUeXBlPGNvbnN0ICRjbGFzcz4oY29uc3QgJHBhcmFtZXRlcnN7bmFtZXNw
YWNlfUVsZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJuICRjaGVja0hlbHBlcihlbGVtZW50KTsgfQor
dGVtcGxhdGUgPD4gaW5saW5lIGJvb2wgaXNFbGVtZW50T2ZUeXBlPGNvbnN0ICRjbGFzcz4oY29u
c3QgTm9kZSYgbm9kZSkgeyByZXR1cm4gJGNoZWNrSGVscGVyKG5vZGUpOyB9CitFTkQKKyAgICAg
ICAgOwogCiAgICAgICAgIHByaW50IEYgIlxuIjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVt
ZW50LmgKaW5kZXggYmE1ODc4MTQwOTg0OGVmOTU1OGZhNGMzMWI3ZmFlZjVmZGI2NzdmOS4uZjNh
NGJhZGZiN2MzNTc3ZGY0MjYwNjQwZGU5ZmMxNTY2MzliODQ2ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEVsZW1lbnQuaApAQCAtMTUxLDcgKzE1MSw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUeXBlPiBi
b29sIGlzRWxlbWVudE9mVHlwZShjb25zdCBIVE1MRWxlbWVudCYpOwogdm9pZCBpc0hUTUxFbGVt
ZW50KGNvbnN0IEhUTUxFbGVtZW50Jik7IC8vIENhdGNoIHVubmVjZXNzYXJ5IHJ1bnRpbWUgY2hl
Y2sgb2YgdHlwZSBrbm93biBhdCBjb21waWxlIHRpbWUuCiBpbmxpbmUgYm9vbCBpc0hUTUxFbGVt
ZW50KGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJuIG5vZGUuaXNIVE1MRWxlbWVudCgpOyB9CiB0
ZW1wbGF0ZSA8PiBpbmxpbmUgYm9vbCBpc0VsZW1lbnRPZlR5cGU8Y29uc3QgSFRNTEVsZW1lbnQ+
KGNvbnN0IEhUTUxFbGVtZW50JikgeyByZXR1cm4gdHJ1ZTsgfQotdGVtcGxhdGUgPD4gaW5saW5l
IGJvb2wgaXNFbGVtZW50T2ZUeXBlPGNvbnN0IEhUTUxFbGVtZW50Pihjb25zdCBFbGVtZW50JiBl
bGVtZW50KSB7IHJldHVybiBlbGVtZW50LmlzSFRNTEVsZW1lbnQoKTsgfQordGVtcGxhdGUgPD4g
aW5saW5lIGJvb2wgaXNFbGVtZW50T2ZUeXBlPGNvbnN0IEhUTUxFbGVtZW50Pihjb25zdCBOb2Rl
JiBub2RlKSB7IHJldHVybiBub2RlLmlzSFRNTEVsZW1lbnQoKTsgfQogCiBOT0RFX1RZUEVfQ0FT
VFMoSFRNTEVsZW1lbnQpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZv
cm1Db250cm9sRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xF
bGVtZW50LmgKaW5kZXggYzEwZmNmOGEzNzg3ZWU4ZjhkMGRkYmU1MTlkOTQ5NTg1YzZiZjU1My4u
YzI0MDhhMTQwYmIxZmQxNzk0MGFmYTY0NGZjMTAwNTY0NGRkZTU4ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgKQEAgLTE5Myw2ICsxOTMsNyBAQCBw
cml2YXRlOgogdm9pZCBpc0hUTUxGb3JtQ29udHJvbEVsZW1lbnQoY29uc3QgSFRNTEZvcm1Db250
cm9sRWxlbWVudCYpOyAvLyBDYXRjaCB1bm5lY2Vzc2FyeSBydW50aW1lIGNoZWNrIG9mIHR5cGUg
a25vd24gYXQgY29tcGlsZSB0aW1lLgogaW5saW5lIGJvb2wgaXNIVE1MRm9ybUNvbnRyb2xFbGVt
ZW50KGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJuIGVsZW1lbnQuaXNGb3JtQ29udHJv
bEVsZW1lbnQoKTsgfQogaW5saW5lIGJvb2wgaXNIVE1MRm9ybUNvbnRyb2xFbGVtZW50KGNvbnN0
IE5vZGUmIG5vZGUpIHsgcmV0dXJuIG5vZGUuaXNFbGVtZW50Tm9kZSgpICYmIHRvRWxlbWVudChu
b2RlKS5pc0Zvcm1Db250cm9sRWxlbWVudCgpOyB9Cit0ZW1wbGF0ZSA8PiBpbmxpbmUgYm9vbCBp
c0VsZW1lbnRPZlR5cGU8Y29uc3QgSFRNTEZvcm1Db250cm9sRWxlbWVudD4oY29uc3QgTm9kZSYg
bm9kZSkgeyByZXR1cm4gaXNIVE1MRm9ybUNvbnRyb2xFbGVtZW50KG5vZGUpOyB9CiB0ZW1wbGF0
ZSA8PiBpbmxpbmUgYm9vbCBpc0VsZW1lbnRPZlR5cGU8Y29uc3QgSFRNTEZvcm1Db250cm9sRWxl
bWVudD4oY29uc3QgRWxlbWVudCYgZWxlbWVudCkgeyByZXR1cm4gaXNIVE1MRm9ybUNvbnRyb2xF
bGVtZW50KGVsZW1lbnQpOyB9CiAKIE5PREVfVFlQRV9DQVNUUyhIVE1MRm9ybUNvbnRyb2xFbGVt
ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFz
ZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5oCmluZGV4IDVk
Zjc0OWMzYmU1YzE2ZTZjYTIzYjEwZTFjNmNkNjIzMDBjZTNmMDIuLjI3OWViZDgyYTg4Y2Y0Mjdk
NDM2NTBlMmU1ZWI4YTcxNGFiMmQxMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEZyYW1lRWxlbWVudEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFt
ZUVsZW1lbnRCYXNlLmgKQEAgLTc3LDggKzc3LDggQEAgcHJpdmF0ZToKIH07CiAKIHZvaWQgaXNI
VE1MRnJhbWVFbGVtZW50QmFzZShjb25zdCBIVE1MRnJhbWVFbGVtZW50QmFzZSYpOyAvLyBDYXRj
aCB1bm5lY2Vzc2FyeSBydW50aW1lIGNoZWNrIG9mIHR5cGUga25vd24gYXQgY29tcGlsZSB0aW1l
LgotaW5saW5lIGJvb2wgaXNIVE1MRnJhbWVFbGVtZW50QmFzZShjb25zdCBFbGVtZW50JiBlbGVt
ZW50KSB7IHJldHVybiBpc0hUTUxGcmFtZUVsZW1lbnQoZWxlbWVudCkgfHwgaXNIVE1MSUZyYW1l
RWxlbWVudChlbGVtZW50KTsgfQotaW5saW5lIGJvb2wgaXNIVE1MRnJhbWVFbGVtZW50QmFzZShj
b25zdCBOb2RlJiBub2RlKSB7IHJldHVybiBub2RlLmlzRWxlbWVudE5vZGUoKSAmJiBpc0hUTUxG
cmFtZUVsZW1lbnRCYXNlKHRvRWxlbWVudChub2RlKSk7IH0KK2lubGluZSBib29sIGlzSFRNTEZy
YW1lRWxlbWVudEJhc2UoY29uc3QgSFRNTEVsZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJuIGlzSFRN
TEZyYW1lRWxlbWVudChlbGVtZW50KSB8fCBpc0hUTUxJRnJhbWVFbGVtZW50KGVsZW1lbnQpOyB9
CitpbmxpbmUgYm9vbCBpc0hUTUxGcmFtZUVsZW1lbnRCYXNlKGNvbnN0IE5vZGUmIG5vZGUpIHsg
cmV0dXJuIGlzSFRNTEZyYW1lRWxlbWVudChub2RlKSB8fCBpc0hUTUxJRnJhbWVFbGVtZW50KG5v
ZGUpOyB9CiAKIE5PREVfVFlQRV9DQVNUUyhIVE1MRnJhbWVFbGVtZW50QmFzZSkKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAppbmRleCBhMTQyNTI0MzFkNDNhMWQ4YTIxNmVi
N2NmMzQ2MDZkZTE1ZGUwODZlLi5lY2Q1MjA3OTIxZTExY2U1M2YzZWQ4NWFkNjkzMjRiZmQzNzM0
YTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtOTE2LDcgKzkx
Niw4IEBAIHN0cnVjdCBWYWx1ZVRvU3RyaW5nPFRleHRUcmFja0N1ZSo+IHsKIHZvaWQgaXNIVE1M
TWVkaWFFbGVtZW50KGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmKTsgLy8gQ2F0Y2ggdW5uZWNlc3Nh
cnkgcnVudGltZSBjaGVjayBvZiB0eXBlIGtub3duIGF0IGNvbXBpbGUgdGltZS4KIGlubGluZSBi
b29sIGlzSFRNTE1lZGlhRWxlbWVudChjb25zdCBFbGVtZW50JiBlbGVtZW50KSB7IHJldHVybiBl
bGVtZW50LmlzTWVkaWFFbGVtZW50KCk7IH0KIGlubGluZSBib29sIGlzSFRNTE1lZGlhRWxlbWVu
dChjb25zdCBOb2RlJiBub2RlKSB7IHJldHVybiBub2RlLmlzRWxlbWVudE5vZGUoKSAmJiB0b0Vs
ZW1lbnQobm9kZSkuaXNNZWRpYUVsZW1lbnQoKTsgfQotdGVtcGxhdGUgPD4gaW5saW5lIGJvb2wg
aXNFbGVtZW50T2ZUeXBlPGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQ+KGNvbnN0IEVsZW1lbnQmIGVs
ZW1lbnQpIHsgcmV0dXJuIGVsZW1lbnQuaXNNZWRpYUVsZW1lbnQoKTsgfQordGVtcGxhdGUgPD4g
aW5saW5lIGJvb2wgaXNFbGVtZW50T2ZUeXBlPGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQ+KGNvbnN0
IE5vZGUmIG5vZGUpIHsgcmV0dXJuIGlzSFRNTE1lZGlhRWxlbWVudChub2RlKTsgfQordGVtcGxh
dGUgPD4gaW5saW5lIGJvb2wgaXNFbGVtZW50T2ZUeXBlPGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQ+
KGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJuIGlzSFRNTE1lZGlhRWxlbWVudChlbGVt
ZW50KTsgfQogCiBOT0RFX1RZUEVfQ0FTVFMoSFRNTE1lZGlhRWxlbWVudCkKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuaAppbmRleCA4NTZmYzI2MGMwOTFk
ZTJmYjhhNDMzNDE4OTY3MmViNWJlNTA1YjQ4Li5iZWI1ZTNjN2IzZDcxOGYwZjczY2VjMzVmMGE0
MGRmMTFkY2JlZTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5J
bWFnZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVs
ZW1lbnQuaApAQCAtMTYwLDcgKzE2MCw3IEBAIHByaXZhdGU6CiB2b2lkIGlzSFRNTFBsdWdJbklt
YWdlRWxlbWVudChjb25zdCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Jik7IC8vIENhdGNoIHVubmVj
ZXNzYXJ5IHJ1bnRpbWUgY2hlY2sgb2YgdHlwZSBrbm93biBhdCBjb21waWxlIHRpbWUuCiBpbmxp
bmUgYm9vbCBpc0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQoY29uc3QgSFRNTFBsdWdJbkVsZW1lbnQm
IGVsZW1lbnQpIHsgcmV0dXJuIGVsZW1lbnQuaXNQbHVnSW5JbWFnZUVsZW1lbnQoKTsgfQogaW5s
aW5lIGJvb2wgaXNIVE1MUGx1Z0luSW1hZ2VFbGVtZW50KGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0
dXJuIG5vZGUuaXNQbHVnaW5FbGVtZW50KCkgJiYgdG9IVE1MUGx1Z0luRWxlbWVudChub2RlKS5p
c1BsdWdJbkltYWdlRWxlbWVudCgpOyB9Ci10ZW1wbGF0ZSA8PiBpbmxpbmUgYm9vbCBpc0VsZW1l
bnRPZlR5cGU8Y29uc3QgSFRNTFBsdWdJbkltYWdlRWxlbWVudD4oY29uc3QgRWxlbWVudCYgZWxl
bWVudCkgeyByZXR1cm4gaXNIVE1MUGx1Z0luSW1hZ2VFbGVtZW50KGVsZW1lbnQpOyB9Cit0ZW1w
bGF0ZSA8PiBpbmxpbmUgYm9vbCBpc0VsZW1lbnRPZlR5cGU8Y29uc3QgSFRNTFBsdWdJbkltYWdl
RWxlbWVudD4oY29uc3QgTm9kZSYgbm9kZSkgeyByZXR1cm4gaXNIVE1MUGx1Z0luSW1hZ2VFbGVt
ZW50KG5vZGUpOyB9CiBOT0RFX1RZUEVfQ0FTVFMoSFRNTFBsdWdJbkltYWdlRWxlbWVudCkKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9M
YWJlbGFibGVFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0xhYmVsYWJsZUVsZW1lbnQu
aAppbmRleCAwMTRmMTExMjcwN2U1ZTI4Y2NmZDgzNTA2NDQ0YjFkY2MwY2M1N2ViLi45OTU4MjE3
ZmFiNmYwYTcxMDFiNWI0ZDNjNTI3ZjA5MjJiZTY3YTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0xhYmVsYWJsZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0xh
YmVsYWJsZUVsZW1lbnQuaApAQCAtNTMsNyArNTMsOCBAQCBwcml2YXRlOgogdm9pZCBpc0xhYmVs
YWJsZUVsZW1lbnQoY29uc3QgTGFiZWxhYmxlRWxlbWVudCYpOyAvLyBDYXRjaCB1bm5lY2Vzc2Fy
eSBydW50aW1lIGNoZWNrIG9mIHR5cGUga25vd24gYXQgY29tcGlsZSB0aW1lLgogaW5saW5lIGJv
b2wgaXNMYWJlbGFibGVFbGVtZW50KGNvbnN0IEhUTUxFbGVtZW50JiBlbGVtZW50KSB7IHJldHVy
biBlbGVtZW50LmlzTGFiZWxhYmxlKCk7IH0KIGlubGluZSBib29sIGlzTGFiZWxhYmxlRWxlbWVu
dChjb25zdCBOb2RlJiBub2RlKSB7IHJldHVybiBub2RlLmlzSFRNTEVsZW1lbnQoKSAmJiB0b0hU
TUxFbGVtZW50KG5vZGUpLmlzTGFiZWxhYmxlKCk7IH0KLXRlbXBsYXRlIDw+IGlubGluZSBib29s
IGlzRWxlbWVudE9mVHlwZTxjb25zdCBMYWJlbGFibGVFbGVtZW50Pihjb25zdCBFbGVtZW50JiBl
bGVtZW50KSB7IHJldHVybiBpc0xhYmVsYWJsZUVsZW1lbnQoZWxlbWVudCk7IH0KK3RlbXBsYXRl
IDw+IGlubGluZSBib29sIGlzRWxlbWVudE9mVHlwZTxjb25zdCBMYWJlbGFibGVFbGVtZW50Pihj
b25zdCBIVE1MRWxlbWVudCYgZWxlbWVudCkgeyByZXR1cm4gaXNMYWJlbGFibGVFbGVtZW50KGVs
ZW1lbnQpOyB9Cit0ZW1wbGF0ZSA8PiBpbmxpbmUgYm9vbCBpc0VsZW1lbnRPZlR5cGU8Y29uc3Qg
TGFiZWxhYmxlRWxlbWVudD4oY29uc3QgTm9kZSYgbm9kZSkgeyByZXR1cm4gaXNMYWJlbGFibGVF
bGVtZW50KG5vZGUpOyB9CiAKIE5PREVfVFlQRV9DQVNUUyhMYWJlbGFibGVFbGVtZW50KQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvbWF0aG1sL01hdGhNTEVsZW1lbnQuaAppbmRleCBmOWMzYmNmZTIzOWU2ZThjMjA3
OWVlYjE0NTgzZWRjMTZkMDY4NDEwLi5hODY2YjBjYTMzYTVjYTJmMzNlNTdlZmIyNWZhYzNjZmVl
YzdkMDEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVtZW50LmgKQEAgLTc3LDYgKzc3
LDEwIEBAIHZvaWQgaXNNYXRoTUxFbGVtZW50KGNvbnN0IE1hdGhNTEVsZW1lbnQmKTsgLy8gQ2F0
Y2ggdW5uZWNlc3NhcnkgcnVudGltZSBjaGVjayBvCiBpbmxpbmUgYm9vbCBpc01hdGhNTEVsZW1l
bnQoY29uc3QgTm9kZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5pc01hdGhNTEVsZW1lbnQoKTsgfQog
Tk9ERV9UWVBFX0NBU1RTKE1hdGhNTEVsZW1lbnQpCiAKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBi
b29sIGlzRWxlbWVudE9mVHlwZShjb25zdCBNYXRoTUxFbGVtZW50Jik7Cit0ZW1wbGF0ZSA8PiBp
bmxpbmUgYm9vbCBpc0VsZW1lbnRPZlR5cGU8Y29uc3QgTWF0aE1MRWxlbWVudD4oY29uc3QgTm9k
ZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5pc01hdGhNTEVsZW1lbnQoKTsgfQordGVtcGxhdGUgPD4g
aW5saW5lIGJvb2wgaXNFbGVtZW50T2ZUeXBlPGNvbnN0IE1hdGhNTEVsZW1lbnQ+KGNvbnN0IE1h
dGhNTEVsZW1lbnQmKSB7IHJldHVybiB0cnVlOyB9CisKIGlubGluZSBib29sIE5vZGU6Omhhc1Rh
Z05hbWUoY29uc3QgTWF0aE1MUXVhbGlmaWVkTmFtZSYgbmFtZSkgY29uc3QKIHsKICAgICByZXR1
cm4gaXNNYXRoTUxFbGVtZW50KCkgJiYgdG9NYXRoTUxFbGVtZW50KCp0aGlzKS5oYXNUYWdOYW1l
KG5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgKaW5kZXggYzVjMTdmOGMxMmI0MjFiNTEzZWJl
OTI2NGRmMzljZWI3ZTJkNWNmOS4uOWIzMmE1ZjZkNjI0MDMyMTU5OWJiZTk0MDgxY2I0ZmY2ZWJi
MTJkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCkBAIC0yNSw5ICsyNSw5IEBACiAKICNpbmNs
dWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRTdHJpbmcuaCIK
LSNpbmNsdWRlICJTVkdFbGVtZW50VHlwZUhlbHBlcnMuaCIKICNpbmNsdWRlICJTVkdMYW5nU3Bh
Y2UuaCIKICNpbmNsdWRlICJTVkdMb2NhdGFibGUuaCIKKyNpbmNsdWRlICJTVkdOYW1lcy5oIgog
I2luY2x1ZGUgIlNWR1BhcnNpbmdFcnJvci5oIgogI2luY2x1ZGUgIlNWR1Byb3BlcnR5SW5mby5o
IgogI2luY2x1ZGUgIlN0eWxlZEVsZW1lbnQuaCIKQEAgLTIyNSw3ICsyMjUsOSBAQCBzdHJ1Y3Qg
U1ZHQXR0cmlidXRlSGFzaFRyYW5zbGF0b3IgewogCiB2b2lkIGlzU1ZHRWxlbWVudChjb25zdCBT
VkdFbGVtZW50Jik7IC8vIENhdGNoIHVubmVjZXNzYXJ5IHJ1bnRpbWUgY2hlY2sgb2YgdHlwZSBr
bm93biBhdCBjb21waWxlIHRpbWUuCiBpbmxpbmUgYm9vbCBpc1NWR0VsZW1lbnQoY29uc3QgTm9k
ZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5pc1NWR0VsZW1lbnQoKTsgfQotdGVtcGxhdGUgPD4gaW5s
aW5lIGJvb2wgaXNFbGVtZW50T2ZUeXBlPGNvbnN0IFNWR0VsZW1lbnQ+KGNvbnN0IEVsZW1lbnQm
IGVsZW1lbnQpIHsgcmV0dXJuIGVsZW1lbnQuaXNTVkdFbGVtZW50KCk7IH0KK3RlbXBsYXRlIDx0
eXBlbmFtZSBUPiBib29sIGlzRWxlbWVudE9mVHlwZShjb25zdCBTVkdFbGVtZW50Jik7Cit0ZW1w
bGF0ZSA8PiBpbmxpbmUgYm9vbCBpc0VsZW1lbnRPZlR5cGU8Y29uc3QgU1ZHRWxlbWVudD4oY29u
c3QgTm9kZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5pc1NWR0VsZW1lbnQoKTsgfQordGVtcGxhdGUg
PD4gaW5saW5lIGJvb2wgaXNFbGVtZW50T2ZUeXBlPGNvbnN0IFNWR0VsZW1lbnQ+KGNvbnN0IFNW
R0VsZW1lbnQmKSB7IHJldHVybiB0cnVlOyB9CiAKIE5PREVfVFlQRV9DQVNUUyhTVkdFbGVtZW50
KQogCkBAIC0yMzQsNiArMjM2LDggQEAgaW5saW5lIGJvb2wgTm9kZTo6aGFzVGFnTmFtZShjb25z
dCBTVkdRdWFsaWZpZWROYW1lJiBuYW1lKSBjb25zdAogICAgIHJldHVybiBpc1NWR0VsZW1lbnQo
KSAmJiB0b1NWR0VsZW1lbnQoKnRoaXMpLmhhc1RhZ05hbWUobmFtZSk7CiB9CiAKLX0KK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2luY2x1ZGUgIlNWR0VsZW1lbnRUeXBlSGVscGVycy5oIgog
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRp
dmVTdGFuZGFyZEF0dHJpYnV0ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmlt
aXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaAppbmRleCA1ZmRjYjY2NDI0YzZlNDJiMDU0YmI0M2Fi
OGFmMzkxM2ZlYjBhNThjLi41ODU2YjM0OTFlOTg5NWNkM2Y3Yjc1Zjc1OTg2ZmNiNDFhOTYwNDJl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRh
cmRBdHRyaWJ1dGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2
ZVN0YW5kYXJkQXR0cmlidXRlcy5oCkBAIC04NSw3ICs4NSw4IEBAIHZvaWQgaW52YWxpZGF0ZUZp
bHRlclByaW1pdGl2ZVBhcmVudChTVkdFbGVtZW50Kik7CiB2b2lkIGlzU1ZHRmlsdGVyUHJpbWl0
aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKGNvbnN0IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0
cmlidXRlcyYpOyAvLyBDYXRjaCB1bm5lY2Vzc2FyeSBydW50aW1lIGNoZWNrIG9mIHR5cGUga25v
d24gYXQgY29tcGlsZSB0aW1lLgogaW5saW5lIGJvb2wgaXNTVkdGaWx0ZXJQcmltaXRpdmVTdGFu
ZGFyZEF0dHJpYnV0ZXMoY29uc3QgU1ZHRWxlbWVudCYgZWxlbWVudCkgeyByZXR1cm4gZWxlbWVu
dC5pc0ZpbHRlckVmZmVjdCgpOyB9CiBpbmxpbmUgYm9vbCBpc1NWR0ZpbHRlclByaW1pdGl2ZVN0
YW5kYXJkQXR0cmlidXRlcyhjb25zdCBOb2RlJiBub2RlKSB7IHJldHVybiBub2RlLmlzU1ZHRWxl
bWVudCgpICYmIHRvU1ZHRWxlbWVudChub2RlKS5pc0ZpbHRlckVmZmVjdCgpOyB9Ci10ZW1wbGF0
ZSA8PiBpbmxpbmUgYm9vbCBpc0VsZW1lbnRPZlR5cGU8Y29uc3QgU1ZHRmlsdGVyUHJpbWl0aXZl
U3RhbmRhcmRBdHRyaWJ1dGVzPihjb25zdCBFbGVtZW50JiBlbGVtZW50KSB7IHJldHVybiBpc1NW
R0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyhlbGVtZW50KTsgfQordGVtcGxhdGUg
PD4gaW5saW5lIGJvb2wgaXNFbGVtZW50T2ZUeXBlPGNvbnN0IFNWR0ZpbHRlclByaW1pdGl2ZVN0
YW5kYXJkQXR0cmlidXRlcz4oY29uc3QgU1ZHRWxlbWVudCYgZWxlbWVudCkgeyByZXR1cm4gaXNT
VkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMoZWxlbWVudCk7IH0KK3RlbXBsYXRl
IDw+IGlubGluZSBib29sIGlzRWxlbWVudE9mVHlwZTxjb25zdCBTVkdGaWx0ZXJQcmltaXRpdmVT
dGFuZGFyZEF0dHJpYnV0ZXM+KGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJuIGlzU1ZHRmlsdGVy
UHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKG5vZGUpOyB9CiAKIE5PREVfVFlQRV9DQVNUUyhT
VkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMpCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQuaAppbmRleCAxZWVmMzE4NmQyZWYxZTczYTc1
ZWU1ZWM0MjM3NDY4ODk5YjBmMjc5Li5hN2E5OGMzNzYxZTJhYTdmMDZmZWM2ODc1ZGQxMDBlZmZi
YjQyYzgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxF
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVu
dC5oCkBAIC0yNDAsNyArMjQwLDggQEAgcHJpdmF0ZToKIHZvaWQgaXNTVkdTTUlMRWxlbWVudChj
b25zdCBTVkdTTUlMRWxlbWVudCYpOyAvLyBDYXRjaCB1bm5lY2Vzc2FyeSBydW50aW1lIGNoZWNr
IG9mIHR5cGUga25vd24gYXQgY29tcGlsZSB0aW1lLgogaW5saW5lIGJvb2wgaXNTVkdTTUlMRWxl
bWVudChjb25zdCBTVkdFbGVtZW50JiBlbGVtZW50KSB7IHJldHVybiBlbGVtZW50LmlzU01JTEVs
ZW1lbnQoKTsgfQogaW5saW5lIGJvb2wgaXNTVkdTTUlMRWxlbWVudChjb25zdCBOb2RlJiBub2Rl
KSB7IHJldHVybiBub2RlLmlzU1ZHRWxlbWVudCgpICYmIHRvU1ZHRWxlbWVudChub2RlKS5pc1NN
SUxFbGVtZW50KCk7IH0KLXRlbXBsYXRlIDw+IGlubGluZSBib29sIGlzRWxlbWVudE9mVHlwZTxj
b25zdCBTVkdTTUlMRWxlbWVudD4oY29uc3QgRWxlbWVudCYgZWxlbWVudCkgeyByZXR1cm4gaXNT
VkdTTUlMRWxlbWVudChlbGVtZW50KTsgfQordGVtcGxhdGUgPD4gaW5saW5lIGJvb2wgaXNFbGVt
ZW50T2ZUeXBlPGNvbnN0IFNWR1NNSUxFbGVtZW50Pihjb25zdCBTVkdFbGVtZW50JiBlbGVtZW50
KSB7IHJldHVybiBpc1NWR1NNSUxFbGVtZW50KGVsZW1lbnQpOyB9Cit0ZW1wbGF0ZSA8PiBpbmxp
bmUgYm9vbCBpc0VsZW1lbnRPZlR5cGU8Y29uc3QgU1ZHU01JTEVsZW1lbnQ+KGNvbnN0IE5vZGUm
IG5vZGUpIHsgcmV0dXJuIGlzU1ZHU01JTEVsZW1lbnQobm9kZSk7IH0KIAogTk9ERV9UWVBFX0NB
U1RTKFNWR1NNSUxFbGVtZW50KQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>237977</attachid>
            <date>2014-09-11 12:24:51 -0700</date>
            <delta_ts>2014-09-14 18:34:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-136719-20140911122448.patch</filename>
            <type>text/plain</type>
            <size>27895</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTczNTE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTY1Mjk3NGZiNGYxODAy
NWNmMWEyNWMzMzk3YmFjMGFmOGY4Njk2Ni4uZGIyYzU0OTcyOGQyODFmOTlmNTJhYjBiMWQ2ZTRh
NjUyOGY3YzgxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0MSBAQAorMjAxNC0wOS0xMCAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEF2b2lkIHJlZHVuZGFudCBp
c0VsZW1lbnROb2RlKCkgY2hlY2tzIGluIFRyYXZlcnNhbDxIVE1MKkVsZW1lbnQ+IC8gVHJhdmVy
c2FsPFNWRypFbGVtZW50PgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTM2NzE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQXZvaWQgcmVkdW5kYW50IGlzRWxlbWVudE5vZGUoKSBjaGVja3MgaW4gVHJhdmVy
c2FsPEhUTUwqRWxlbWVudD4gLworICAgICAgICBUcmF2ZXJzYWw8U1ZHKkVsZW1lbnQ+LiAgV2Ug
dXNlZCB0byBpdGVyYXRlIHRocm91Z2ggRWxlbWVudHMsIGFuZCB0aGVuCisgICAgICAgIGNhbGwg
aXNFbGVtZW50T2ZUeXBlPEhUTUwqRWxlbWVudD4oKSAgb24gZWFjaCBFbGVtZW50LiBUaGlzIG1h
ZGUgc2Vuc2UKKyAgICAgICAgYmVjYXVzZSBoYXNUYWdOYW1lKCkgdXNlZCB0byBiZSBkZWZpbmVk
IG9uIEVsZW1lbnQuIEhvd2V2ZXIsIGFmdGVyCisgICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5v
cmcvY2hhbmdlc2V0LzE2NTY5OSwgaGFzVGFnTmFtZSgpIGlzIG5vdyBkZWZpbmVkIG9uCisgICAg
ICAgIE5vZGUgZm9yIEhUTUxRdWFsaWZpZWROYW1lIC8gU1ZHUXVhbGlmaWVkTmFtZSBhcmd1bWVu
dHMuCisKKyAgICAgICAgTm9kZTo6aGFzVGFnTmFtZShIVE1MUXVhbGlmaWVkTmFtZSkgYmFzaWNh
bGx5IGRvZXMgdGhlIGZvbGxvd2luZyBjaGVjaworICAgICAgICAiaXNIVE1MRWxlbWVudCgpICYm
ICB0b0hUTUxFbGVtZW50KCp0aGlzKS5oYXNUYWdOYW1lKHRhZ05hbWUpIi4gQXMgYQorICAgICAg
ICBjb25zZXF1ZW5jZSwgZG9pbmcgYW4gaXNFbGVtZW50Tm9kZSgpIGNoZWNrIGlzIG5vdyByZWR1
bmRhbnQgYXMKKyAgICAgICAgaXNIVE1MRWxlbWVudCgpIGlzIGRlZmluZWQgb24gTm9kZS4KKwor
ICAgICAgICBUaGlzIHBhdGNoIGFkZHMgaXNFbGVtZW50T2ZUeXBlPEVsZW1lbnRUeXBlPihOb2Rl
KSBoZWxwZXIgZnVuY3Rpb25zIGFuZAorICAgICAgICB1cGRhdGVzIFRyYXZlcnNhbDxFbGVtZW50
VHlwZT4gc28gdGhhdCB0aGUgbWV0aG9kcyB1c2UgTm9kZVRyYXZlcnNhbAorICAgICAgICBpbnRl
cm5hbGx5IGluc3RlYWQgb2YgVHJhdmVyc2FsPEVsZW1lbnRUeXBlPi4gQXMgYSByZXN1bHQsIHdl
IG5vdworICAgICAgICBpdGVyYXRlIG92ZXIgTm9kZXMgKG5vdCBFbGVtZW50cykgYW5kIGNhbGwg
dGhlIG5ldworICAgICAgICBpc0VsZW1lbnRPZlR5cGU8RWxlbWVudFR5cGU+KE5vZGUpIGhlbHBl
cnMgKHdoaWNoIGFyZSBlZmZpY2llbnQgYWZ0ZXIKKyAgICAgICAgcjE2NTY5OSkuCisKKyAgICAg
ICAgQmVmb3JlIHRoZSBwYXRjaCwgdGhlIGNvZGUgZW5kZWQgdXAgZG9pbmcgdGhlIGZvbGxvd2lu
ZyBjaGVja3MgZm9yCisgICAgICAgIFRyYXZlcnNhbDxIVE1MKmVsZW1lbnQ+OgorICAgICAgICBu
b2RlLmlzRWxlbWVudE5vZGUoKSAmJiB0b0VsZW1lbnQobm9kZSkuaXNIVE1MRWxlbWVudCgpCisg
ICAgICAgICAgICAmJiB0b0hUTUxFbGVtZW50KG5vZGUpLmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpm
b29UYWcpCisKKyAgICAgICAgQWZ0ZXIgdGhlIHBhdGNoLCB0aGUgY29kZSBvbmx5IGRvZXM6Cisg
ICAgICAgIG5vZGUuaXNIVE1MRWxlbWVudCgpCisgICAgICAgICAgICAmJiB0b0hUTUxFbGVtZW50
KG5vZGUpLmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpmb29UYWcpCisKKyAgICAgICAgTm8gbmV3IHRl
c3RzLCBubyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBkb20vRWxlbWVudC5oOgorICAg
ICAgICAoV2ViQ29yZTo6RWxlbWVudD4pOgorICAgICAgICAoV2ViQ29yZTo6aXNFbGVtZW50T2ZU
eXBlKToKKyAgICAgICAgQWRkIG5ldyBpc0VsZW1lbnRPZlR5cGUoKSBoZWxwZXIgdGFraW5nIGEg
Tm9kZSBpbiBhcmd1bWVudC4KKworICAgICAgICAqIGRvbS9FbGVtZW50VHJhdmVyc2FsLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpUcmF2ZXJzYWw8RWxlbWVudFR5cGU+OjpmaXJzdFdpdGhpblRlbXBs
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYXZlcnNhbDxFbGVtZW50VHlwZT46Omxhc3RXaXRo
aW5UZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpUcmF2ZXJzYWw8RWxlbWVudFR5cGU+Ojpu
ZXh0VGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6
cHJldmlvdXNUZW1wbGF0ZSk6CisgICAgICAgIFVzZSBOb2RlVHJhdmVyc2FsIEFQSSBpbnRlcm5h
bGx5IGluc3RlYWQgb2YgVHJhdmVyc2FsPEVsZW1lbnQ+IHRvIGF2b2lkCisgICAgICAgIHJlZHVu
ZGFudCBpc0VsZW1lbnROb2RlKCkgY2hlY2tzLgorCisgICAgICAgIChXZWJDb3JlOjpUcmF2ZXJz
YWw8RWxlbWVudD46Omxhc3RXaXRoaW5UZW1wbGF0ZSk6IERlbGV0ZWQuCisgICAgICAgIFRoZSBj
b2RlIGlzIG5vdyBpZGVudGljYWwgdG8gdGhlIGdlbmVyaWMgdmVyc2lvbi4KKworICAgICAgICAo
V2ViQ29yZTo6VHJhdmVyc2FsPEVsZW1lbnQ+OjpwcmV2aW91c1RlbXBsYXRlKTogRGVsZXRlZC4K
KyAgICAgICAgVGhlIGNvZGUgaXMgbm93IGlkZW50aWNhbCB0byB0aGUgZ2VuZXJpYyB2ZXJzaW9u
LgorCisgICAgICAgICogZG9tL21ha2VfbmFtZXMucGw6CisgICAgICAgIChwcmludFR5cGVIZWxw
ZXJzKToKKyAgICAgICAgLSBHZW5lcmF0ZSBpcypFbGVtZW50KCkgaGVscGVycyB0YWtpbmcgYSBO
b2RlIGluIGFyZ3VtZW50IGluc3RlYWQgb2YgYW4KKyAgICAgICAgICBFbGVtZW50LgorICAgICAg
ICAtIEdlbmVyYXRlIGlzRWxlbWVudE9mVHlwZTw+KCkgdGVtcGxhdGUgc3BlY2lhbGl6YXRpb25z
IHRha2luZyBhIE5vZGUKKyAgICAgICAgICBpbiBhcmd1bWVudC4KKyAgICAgICAgLSBTaGFyZSBt
b3JlIGNvZGUgYmV0d2VlbiBIVE1MIGNvZGUgcGF0aCBhbmQgdGhlIG90aGVyIHBhdGggKGZvciBT
VkcsCisgICAgICAgICAgTVRITUwpLgorCisgICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5oOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ+KToKKyAgICAgICAgVXBkYXRlIGlzRWxlbWVu
dE9mVHlwZTxjb25zdCBIVE1MRWxlbWVudD4oKSB0ZW1wbGF0ZSBzcGVjaWFsaXphdGlvbiB0bwor
ICAgICAgICB0YWtlIGEgTm9kZSBpbiBhcmd1bWVudCBpbnN0ZWFkIG9mIGFuIEVsZW1lbnQuIGlz
SFRNTEVsZW1lbnQoKSBpcworICAgICAgICBkZWZpbmVkIG9uIE5vZGUgYW55d2F5LgorCisgICAg
ICAgICogaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MRm9ybUNvbnRyb2xFbGVtZW50Pik6CisgICAgICAgIEFkZCBpc0VsZW1lbnRPZlR5cGU8Y29u
c3QgSFRNTEZvcm1Db250cm9sRWxlbWVudD4oKSB0ZW1wbGF0ZQorICAgICAgICBzcGVjaWFsaXph
dGlvbiB0YWtpbmcgYSBOb2RlIGluIGFyZ3VtZW50LiBLZWVwIHRoZSBvbmUgdGFraW5nIGFuIEVs
ZW1lbnQKKyAgICAgICAgaW4gYXJndW1lbnQgYXMgaXNGb3JtQ29udHJvbEVsZW1lbnQoKSBpcyBk
ZWZpbmVkIG9uIEVsZW1lbnQuCisKKyAgICAgICAgKiBodG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNl
Lmg6CisgICAgICAgIChXZWJDb3JlOjppc0hUTUxGcmFtZUVsZW1lbnRCYXNlKToKKyAgICAgICAg
LSBSZW1vdmUgaGVscGVyIHRha2luZyBhbiBFbGVtZW50IGluIGFyZ3VtZW50IGFzIGl0IGRvZXMg
bm90IGJyaW5nIGFueQorICAgICAgICAgIGJlbmVmaXQuIEluc3RlYWQsIHVwZGF0ZSB0aGUgb3Zl
cmxvYWQgdGFraW5nIGEgTm9kZSBpbiBhcmd1bWVudCB0bworICAgICAgICAgIHJlbW92ZSB0aGUg
dW5uZWNlc3NhcnkgaXNFbGVtZW50Tm9kZSgpIGNoZWNrIGFzIGlzSFRNTEZyYW1lRWxlbWVudChO
b2RlKQorICAgICAgICAgIGlzIG5vdyBlZmZpY2llbnQuCisgICAgICAgIC0gQWRkIGFuIG92ZXJs
b2FkIHRha2luZyBhbiBIVE1MRWxlbWVudCBpbiBhcmd1bWVudCBzbyB0aGF0IHdlIGNhbiBieXBh
c3MKKyAgICAgICAgICB0aGUgaXNIVE1MRWxlbWVudCgpIGNoZWNrIHdoZW4gd2Uga25vdyB0aGUg
aW5wdXQgaXMgYW4gSFRNTEVsZW1lbnQuCisKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1l
bnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ+KToKKyAgICAgICAgQWRk
IGlzRWxlbWVudE9mVHlwZTxjb25zdCBIVE1MTWVkaWFFbGVtZW50PigpIHRlbXBsYXRlIHNwZWNp
YWxpemF0aW9uCisgICAgICAgIHRha2luZyBhIE5vZGUgaW4gYXJndW1lbnQuIEtlZXAgdGhlIG9u
ZSB0YWtpbmcgYW4gRWxlbWVudCBpbiBhcmd1bWVudCBhcworICAgICAgICBpc01lZGlhRWxlbWVu
dCgpIGlzIGRlZmluZWQgb24gRWxlbWVudC4KKworICAgICAgICAqIGh0bWwvSFRNTFBsdWdJbklt
YWdlRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJbkltYWdlRWxlbWVudD4p
OgorICAgICAgICBVcGRhdGUgaXNFbGVtZW50T2ZUeXBlPGNvbnN0IEhUTUxQbHVnSW5JbWFnZUVs
ZW1lbnQ+KCkgdGVtcGxhdGUKKyAgICAgICAgc3BlY2lhbGl6YXRpb24gdG8gdGFrZSBhIE5vZGUg
aW4gYXJndW1lbnQgaW5zdGVhZCBvZiBhbiBFbGVtZW50LgorICAgICAgICBpc1BsdWdpbkVsZW1l
bnQoKSBpcyBkZWZpbmVkIG9uIE5vZGUgYW55d2F5LgorCisgICAgICAgICogaHRtbC9MYWJlbGFi
bGVFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpMYWJlbGFibGVFbGVtZW50Pik6CisgICAg
ICAgIFVwZGF0ZSBpc0VsZW1lbnRPZlR5cGU8Y29uc3QgTGFiZWxhYmxlRWxlbWVudD4oKSB0ZW1w
bGF0ZQorICAgICAgICBzcGVjaWFsaXphdGlvbiB0byB0YWtlIGEgTm9kZSBpbiBhcmd1bWVudCBp
bnN0ZWFkIG9mIGFuIEVsZW1lbnQuCisgICAgICAgIGlzSFRNTEVsZW1lbnQoKSBpcyBkZWZpbmVk
IG9uIE5vZGUgYW55d2F5LgorCisgICAgICAgICogbWF0aG1sL01hdGhNTEVsZW1lbnQuaDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1hdGhNTEVsZW1lbnQ+KToKKyAgICAgICAgRGVmaW5lIGlzRWxlbWVu
dE9mVHlwZSgpIGZvciBNYXRoTUxFbGVtZW50IHNvIHRoYXQgdGhlIFRyYXZlcnNhbCBBUEkgY2Fu
CisgICAgICAgIGJlIHVzZWQgZm9yIHRoZXNlIHR5cGVzIGFzIHdlbGwuIFRoaXMgaXMgY29uc2lz
dGVudCB3aXRoIEhUTUxFbGVtZW50IGFuZAorICAgICAgICBTVkdFbGVtZW50LgorCisgICAgICAg
ICogc3ZnL1NWR0VsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ+KToKKyAg
ICAgICAgLSBVcGRhdGUgaXNFbGVtZW50T2ZUeXBlPGNvbnN0IFNWR0VsZW1lbnQ+KCkgdGVtcGxh
dGUgc3BlY2lhbGl6YXRpb24gdG8KKyAgICAgICAgICB0YWtlIGEgTm9kZSBpbiBhcmd1bWVudCBp
bnN0ZWFkIG9mIGFuIEVsZW1lbnQuIGlzU1ZHRWxlbWVudCgpIGlzCisgICAgICAgICAgZGVmaW5l
ZCBvbiBOb2RlIGFueXdheS4KKyAgICAgICAgLSBEZWZpbmUgaXNFbGVtZW50T2ZUeXBlKCkgdGVt
cGxhdGVkIGZ1bmN0aW9uIHRha2luZyBhbiBTVkdFbGVtZW50IGluCisgICAgICAgICAgYXJndW1l
bnQgc28gdGhhdCB3ZSBjYW4gY2FsbCBTVkdFbGVtZW50OjpoYXNUYWdOYW1lKFNWR1F1YWxpZmll
ZE5hbWUpCisgICAgICAgICAgaW5zdGVhZCBvZiBOb2RlOjpoYXNUYWdOYW1lKFNWR1F1YWxpZmll
ZE5hbWUpIGlmIHdlIGtub3cgdGhlIGlucHV0CisgICAgICAgICAgdHlwZSBpcyBhbiBTVkdFbGVt
ZW50LiBUaGlzIGlzIGNvbnNpc3RlbnQgd2l0aCBIVE1MRWxlbWVudCwgd2hpY2gKKyAgICAgICAg
ICBhbHJlYWR5IGhhZCB0aGlzLgorICAgICAgICAtIGluY2x1ZGUgU1ZHRWxlbWVudFR5cGVIZWxw
ZXJzLmggYXQgdGhlIGVuZCBvZiB0aGUgZmlsZSAoc2ltaWxhcmx5IHRvCisgICAgICAgICAgd2hh
dCBpcyBhbHJlYWR5IGRvbmUgaW4gSFRNTEVsZW1lbnQuaCBiZWNhdXNlCisgICAgICAgICAgaXNF
bGVtZW50T2ZUeXBlKGNvbnN0IFNWR0VsZW1lbnQmKSBuZWVkcyB0byBiZSBkZWZpZW5kIGJlY2F1
c2UgdGhlCisgICAgICAgICAgaW5jbHVkZS4KKworICAgICAgICAqIHN2Zy9TVkdGaWx0ZXJQcmlt
aXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlclBy
aW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcz4pOgorICAgICAgICBVcGRhdGUgaXNFbGVtZW50T2ZU
eXBlPGNvbnN0IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcz4oKQorICAgICAg
ICB0ZW1wbGF0ZSBzcGVjaWFsaXphdGlvbiB0byB0YWtlIGEgTm9kZSBpbiBhcmd1bWVudCBpbnN0
ZWFkIG9mIGFuIEVsZW1lbnQuCisgICAgICAgIGlzU1ZHRWxlbWVudCgpIGlzIGRlZmluZWQgb24g
Tm9kZSBhbnl3YXkuCisKKyAgICAgICAgKiBzdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50Lmg6
CisgICAgICAgIChXZWJDb3JlOjpTVkdTTUlMRWxlbWVudD4pOgorICAgICAgICBVcGRhdGUgaXNF
bGVtZW50T2ZUeXBlPGNvbnN0IFNWR1NNSUxFbGVtZW50PigpIHRlbXBsYXRlIHNwZWNpYWxpemF0
aW9uCisgICAgICAgIHRvIHRha2UgYSBOb2RlIGluIGFyZ3VtZW50IGluc3RlYWQgb2YgYW4gRWxl
bWVudC4gaXNTVkdFbGVtZW50KCkgaXMKKyAgICAgICAgZGVmaW5lZCBvbiBOb2RlIGFueXdheS4K
KworCiAyMDE0LTA5LTExICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CiAK
ICAgICAgICAgQVg6IENoaWxkcmVuIGluc2lkZSBhIDxsZWdlbmQ+IGFyZSBub3QgYWNjZXNzaWJs
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50LmgKaW5kZXggN2E2NDYzZWZhZDcyNDgyYTgxMTAyY2M1YTRiOGNkZmQx
NmJjZTQzNy4uZjk5ODIyYzQxNTAwY2I4ZWUxNTE3MWVlYTQ4ODc0YTc4ZGIzODQ4NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudC5oCkBAIC02NzQsOCArNjc0LDkgQEAgaW5saW5lIGJvb2wgaXNFbGVtZW50KGNv
bnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJuIG5vZGUuaXNFbGVtZW50Tm9kZSgpOyB9CiAKIE5PREVf
VFlQRV9DQVNUUyhFbGVtZW50KQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVHlwZT4gYm9vbCBpc0Vs
ZW1lbnRPZlR5cGUoY29uc3QgRWxlbWVudCYpOwotdGVtcGxhdGUgPHR5cGVuYW1lIFR5cGU+IGlu
bGluZSBib29sIGlzRWxlbWVudE9mVHlwZShjb25zdCBOb2RlJiBub2RlKSB7IHJldHVybiBub2Rl
LmlzRWxlbWVudE5vZGUoKSAmJiBpc0VsZW1lbnRPZlR5cGU8Y29uc3QgVHlwZT4odG9FbGVtZW50
KG5vZGUpKTsgfQordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGJvb2wgaXNFbGVtZW50T2ZUeXBlKGNv
bnN0IE5vZGUmKTsKK3RlbXBsYXRlIDw+IGlubGluZSBib29sIGlzRWxlbWVudE9mVHlwZTxjb25z
dCBFbGVtZW50Pihjb25zdCBOb2RlJiBub2RlKSB7IHJldHVybiBub2RlLmlzRWxlbWVudE5vZGUo
KTsgfQordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSBib29sIGlzRWxlbWVudE9mVHlwZShj
b25zdCBFbGVtZW50JiBlbGVtZW50KSB7IHJldHVybiBpc0VsZW1lbnRPZlR5cGU8VD4oc3RhdGlj
X2Nhc3Q8Y29uc3QgTm9kZSY+KGVsZW1lbnQpKTsgfQogdGVtcGxhdGUgPD4gaW5saW5lIGJvb2wg
aXNFbGVtZW50T2ZUeXBlPGNvbnN0IEVsZW1lbnQ+KGNvbnN0IEVsZW1lbnQmKSB7IHJldHVybiB0
cnVlOyB9CiAKIGlubGluZSBib29sIE5vZGU6Omhhc0F0dHJpYnV0ZXMoKSBjb25zdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRUcmF2ZXJzYWwuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50VHJhdmVyc2FsLmgKaW5kZXggMDNhN2M5OGYxYzMyMjlmMjk2ZTlkMjFl
YjI5YjAyOWVjMGI4M2QzYS4uYTQ0ZDU3MzAyYmY4ZWY5YzlkYzBmZjcwMTliMDllZDJjODA1NDIy
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRUcmF2ZXJzYWwuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFRyYXZlcnNhbC5oCkBAIC0xMDQsMTYgKzEwNCw2
IEBAIGlubGluZSBFbGVtZW50KiBUcmF2ZXJzYWw8RWxlbWVudD46OmZpcnN0V2l0aGluVGVtcGxh
dGUoQ3VycmVudFR5cGUqIGN1cnJlbnQpCiAKIHRlbXBsYXRlIDw+CiB0ZW1wbGF0ZSA8dHlwZW5h
bWUgQ3VycmVudFR5cGU+Ci1pbmxpbmUgRWxlbWVudCogVHJhdmVyc2FsPEVsZW1lbnQ+OjpsYXN0
V2l0aGluVGVtcGxhdGUoQ3VycmVudFR5cGUqIGN1cnJlbnQpCi17Ci0gICAgTm9kZSogbm9kZSA9
IE5vZGVUcmF2ZXJzYWw6Omxhc3QoY3VycmVudCk7Ci0gICAgd2hpbGUgKG5vZGUgJiYgIW5vZGUt
PmlzRWxlbWVudE5vZGUoKSkKLSAgICAgICAgbm9kZSA9IE5vZGVUcmF2ZXJzYWw6OnByZXZpb3Vz
KG5vZGUsIGN1cnJlbnQpOwotICAgIHJldHVybiB0b0VsZW1lbnQobm9kZSk7Ci19Ci0KLXRlbXBs
YXRlIDw+Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgQ3VycmVudFR5cGU+CiBpbmxpbmUgRWxlbWVudCog
VHJhdmVyc2FsPEVsZW1lbnQ+OjpuZXh0VGVtcGxhdGUoQ3VycmVudFR5cGUqIGN1cnJlbnQpCiB7
CiAgICAgTm9kZSogbm9kZSA9IE5vZGVUcmF2ZXJzYWw6Om5leHQoY3VycmVudCk7CkBAIC0xMzIs
MjYgKzEyMiw2IEBAIGlubGluZSBFbGVtZW50KiBUcmF2ZXJzYWw8RWxlbWVudD46Om5leHRUZW1w
bGF0ZShDdXJyZW50VHlwZSogY3VycmVudCwgY29uc3QgTm9kCiAgICAgcmV0dXJuIHRvRWxlbWVu
dChub2RlKTsKIH0KIAotdGVtcGxhdGUgPD4KLXRlbXBsYXRlIDx0eXBlbmFtZSBDdXJyZW50VHlw
ZT4KLWlubGluZSBFbGVtZW50KiBUcmF2ZXJzYWw8RWxlbWVudD46OnByZXZpb3VzVGVtcGxhdGUo
Q3VycmVudFR5cGUqIGN1cnJlbnQpCi17Ci0gICAgTm9kZSogbm9kZSA9IE5vZGVUcmF2ZXJzYWw6
OnByZXZpb3VzKGN1cnJlbnQpOwotICAgIHdoaWxlIChub2RlICYmICFub2RlLT5pc0VsZW1lbnRO
b2RlKCkpCi0gICAgICAgIG5vZGUgPSBOb2RlVHJhdmVyc2FsOjpwcmV2aW91cyhub2RlKTsKLSAg
ICByZXR1cm4gdG9FbGVtZW50KG5vZGUpOwotfQotCi10ZW1wbGF0ZSA8PgotdGVtcGxhdGUgPHR5
cGVuYW1lIEN1cnJlbnRUeXBlPgotaW5saW5lIEVsZW1lbnQqIFRyYXZlcnNhbDxFbGVtZW50Pjo6
cHJldmlvdXNUZW1wbGF0ZShDdXJyZW50VHlwZSogY3VycmVudCwgY29uc3QgTm9kZSogc3RheVdp
dGhpbikKLXsKLSAgICBOb2RlKiBub2RlID0gTm9kZVRyYXZlcnNhbDo6cHJldmlvdXMoY3VycmVu
dCwgc3RheVdpdGhpbik7Ci0gICAgd2hpbGUgKG5vZGUgJiYgIW5vZGUtPmlzRWxlbWVudE5vZGUo
KSkKLSAgICAgICAgbm9kZSA9IE5vZGVUcmF2ZXJzYWw6OnByZXZpb3VzKG5vZGUsIHN0YXlXaXRo
aW4pOwotICAgIHJldHVybiB0b0VsZW1lbnQobm9kZSk7Ci19Ci0KIC8vIEdlbmVyaWMgdmVyc2lv
bnMuCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+CiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
Q3VycmVudFR5cGU+CkBAIC0xNzcsNjAgKzE0Nyw2MCBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxl
bWVudFR5cGU+CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ3VycmVudFR5cGU+CiBpbmxpbmUgRWxlbWVu
dFR5cGUqIFRyYXZlcnNhbDxFbGVtZW50VHlwZT46OmZpcnN0V2l0aGluVGVtcGxhdGUoQ3VycmVu
dFR5cGUqIGN1cnJlbnQpCiB7Ci0gICAgRWxlbWVudCogZWxlbWVudCA9IFRyYXZlcnNhbDxFbGVt
ZW50Pjo6Zmlyc3RXaXRoaW4oY3VycmVudCk7Ci0gICAgd2hpbGUgKGVsZW1lbnQgJiYgIWlzRWxl
bWVudE9mVHlwZTxjb25zdCBFbGVtZW50VHlwZT4oKmVsZW1lbnQpKQotICAgICAgICBlbGVtZW50
ID0gVHJhdmVyc2FsPEVsZW1lbnQ+OjpuZXh0KGVsZW1lbnQsIGN1cnJlbnQpOwotICAgIHJldHVy
biBzdGF0aWNfY2FzdDxFbGVtZW50VHlwZSo+KGVsZW1lbnQpOworICAgIE5vZGUqIG5vZGUgPSBj
dXJyZW50LT5maXJzdENoaWxkKCk7CisgICAgd2hpbGUgKG5vZGUgJiYgIWlzRWxlbWVudE9mVHlw
ZTxjb25zdCBFbGVtZW50VHlwZT4oKm5vZGUpKQorICAgICAgICBub2RlID0gTm9kZVRyYXZlcnNh
bDo6bmV4dChub2RlLCBjdXJyZW50KTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RWxlbWVudFR5
cGUqPihub2RlKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgogdGVtcGxh
dGUgPHR5cGVuYW1lIEN1cnJlbnRUeXBlPgogaW5saW5lIEVsZW1lbnRUeXBlKiBUcmF2ZXJzYWw8
RWxlbWVudFR5cGU+OjpsYXN0V2l0aGluVGVtcGxhdGUoQ3VycmVudFR5cGUqIGN1cnJlbnQpCiB7
Ci0gICAgRWxlbWVudCogZWxlbWVudCA9IFRyYXZlcnNhbDxFbGVtZW50Pjo6bGFzdFdpdGhpbihj
dXJyZW50KTsKLSAgICB3aGlsZSAoZWxlbWVudCAmJiAhaXNFbGVtZW50T2ZUeXBlPGNvbnN0IEVs
ZW1lbnRUeXBlPigqZWxlbWVudCkpCi0gICAgICAgIGVsZW1lbnQgPSBUcmF2ZXJzYWw8RWxlbWVu
dD46OnByZXZpb3VzKGVsZW1lbnQsIGN1cnJlbnQpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxF
bGVtZW50VHlwZSo+KGVsZW1lbnQpOworICAgIE5vZGUqIG5vZGUgPSBOb2RlVHJhdmVyc2FsOjps
YXN0KGN1cnJlbnQpOworICAgIHdoaWxlIChub2RlICYmICFpc0VsZW1lbnRPZlR5cGU8Y29uc3Qg
RWxlbWVudFR5cGU+KCpub2RlKSkKKyAgICAgICAgbm9kZSA9IE5vZGVUcmF2ZXJzYWw6OnByZXZp
b3VzKG5vZGUsIGN1cnJlbnQpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxFbGVtZW50VHlwZSo+
KG5vZGUpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+CiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgQ3VycmVudFR5cGU+CiBpbmxpbmUgRWxlbWVudFR5cGUqIFRyYXZlcnNhbDxFbGVt
ZW50VHlwZT46Om5leHRUZW1wbGF0ZShDdXJyZW50VHlwZSogY3VycmVudCkKIHsKLSAgICBFbGVt
ZW50KiBlbGVtZW50ID0gVHJhdmVyc2FsPEVsZW1lbnQ+OjpuZXh0KGN1cnJlbnQpOwotICAgIHdo
aWxlIChlbGVtZW50ICYmICFpc0VsZW1lbnRPZlR5cGU8Y29uc3QgRWxlbWVudFR5cGU+KCplbGVt
ZW50KSkKLSAgICAgICAgZWxlbWVudCA9IFRyYXZlcnNhbDxFbGVtZW50Pjo6bmV4dChlbGVtZW50
KTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RWxlbWVudFR5cGUqPihlbGVtZW50KTsKKyAgICBO
b2RlKiBub2RlID0gTm9kZVRyYXZlcnNhbDo6bmV4dChjdXJyZW50KTsKKyAgICB3aGlsZSAobm9k
ZSAmJiAhaXNFbGVtZW50T2ZUeXBlPGNvbnN0IEVsZW1lbnRUeXBlPigqbm9kZSkpCisgICAgICAg
IG5vZGUgPSBOb2RlVHJhdmVyc2FsOjpuZXh0KG5vZGUpOworICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxFbGVtZW50VHlwZSo+KG5vZGUpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5
cGU+CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ3VycmVudFR5cGU+CiBpbmxpbmUgRWxlbWVudFR5cGUq
IFRyYXZlcnNhbDxFbGVtZW50VHlwZT46Om5leHRUZW1wbGF0ZShDdXJyZW50VHlwZSogY3VycmVu
dCwgY29uc3QgTm9kZSogc3RheVdpdGhpbikKIHsKLSAgICBFbGVtZW50KiBlbGVtZW50ID0gVHJh
dmVyc2FsPEVsZW1lbnQ+OjpuZXh0KGN1cnJlbnQsIHN0YXlXaXRoaW4pOwotICAgIHdoaWxlIChl
bGVtZW50ICYmICFpc0VsZW1lbnRPZlR5cGU8Y29uc3QgRWxlbWVudFR5cGU+KCplbGVtZW50KSkK
LSAgICAgICAgZWxlbWVudCA9IFRyYXZlcnNhbDxFbGVtZW50Pjo6bmV4dChlbGVtZW50LCBzdGF5
V2l0aGluKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RWxlbWVudFR5cGUqPihlbGVtZW50KTsK
KyAgICBOb2RlKiBub2RlID0gTm9kZVRyYXZlcnNhbDo6bmV4dChjdXJyZW50LCBzdGF5V2l0aGlu
KTsKKyAgICB3aGlsZSAobm9kZSAmJiAhaXNFbGVtZW50T2ZUeXBlPGNvbnN0IEVsZW1lbnRUeXBl
Pigqbm9kZSkpCisgICAgICAgIG5vZGUgPSBOb2RlVHJhdmVyc2FsOjpuZXh0KG5vZGUsIHN0YXlX
aXRoaW4pOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxFbGVtZW50VHlwZSo+KG5vZGUpOwogfQog
CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ3Vy
cmVudFR5cGU+CiBpbmxpbmUgRWxlbWVudFR5cGUqIFRyYXZlcnNhbDxFbGVtZW50VHlwZT46OnBy
ZXZpb3VzVGVtcGxhdGUoQ3VycmVudFR5cGUqIGN1cnJlbnQpCiB7Ci0gICAgRWxlbWVudCogZWxl
bWVudCA9IFRyYXZlcnNhbDxFbGVtZW50Pjo6cHJldmlvdXMoY3VycmVudCk7Ci0gICAgd2hpbGUg
KGVsZW1lbnQgJiYgIWlzRWxlbWVudE9mVHlwZTxjb25zdCBFbGVtZW50VHlwZT4oKmVsZW1lbnQp
KQotICAgICAgICBlbGVtZW50ID0gVHJhdmVyc2FsPEVsZW1lbnQ+OjpwcmV2aW91cyhlbGVtZW50
KTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RWxlbWVudFR5cGUqPihlbGVtZW50KTsKKyAgICBO
b2RlKiBub2RlID0gTm9kZVRyYXZlcnNhbDo6cHJldmlvdXMoY3VycmVudCk7CisgICAgd2hpbGUg
KG5vZGUgJiYgIWlzRWxlbWVudE9mVHlwZTxjb25zdCBFbGVtZW50VHlwZT4oKm5vZGUpKQorICAg
ICAgICBub2RlID0gTm9kZVRyYXZlcnNhbDo6cHJldmlvdXMobm9kZSk7CisgICAgcmV0dXJuIHN0
YXRpY19jYXN0PEVsZW1lbnRUeXBlKj4obm9kZSk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBF
bGVtZW50VHlwZT4KIHRlbXBsYXRlIDx0eXBlbmFtZSBDdXJyZW50VHlwZT4KIGlubGluZSBFbGVt
ZW50VHlwZSogVHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6cHJldmlvdXNUZW1wbGF0ZShDdXJyZW50
VHlwZSogY3VycmVudCwgY29uc3QgTm9kZSogc3RheVdpdGhpbikKIHsKLSAgICBFbGVtZW50KiBl
bGVtZW50ID0gVHJhdmVyc2FsPEVsZW1lbnQ+OjpwcmV2aW91cyhjdXJyZW50LCBzdGF5V2l0aGlu
KTsKLSAgICB3aGlsZSAoZWxlbWVudCAmJiAhaXNFbGVtZW50T2ZUeXBlPGNvbnN0IEVsZW1lbnRU
eXBlPigqZWxlbWVudCkpCi0gICAgICAgIGVsZW1lbnQgPSBUcmF2ZXJzYWw8RWxlbWVudD46OnBy
ZXZpb3VzKGVsZW1lbnQsIHN0YXlXaXRoaW4pOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxFbGVt
ZW50VHlwZSo+KGVsZW1lbnQpOworICAgIE5vZGUqIG5vZGUgPSBOb2RlVHJhdmVyc2FsOjpwcmV2
aW91cyhjdXJyZW50LCBzdGF5V2l0aGluKTsKKyAgICB3aGlsZSAobm9kZSAmJiAhaXNFbGVtZW50
T2ZUeXBlPGNvbnN0IEVsZW1lbnRUeXBlPigqbm9kZSkpCisgICAgICAgIG5vZGUgPSBOb2RlVHJh
dmVyc2FsOjpwcmV2aW91cyhub2RlLCBzdGF5V2l0aGluKTsKKyAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8RWxlbWVudFR5cGUqPihub2RlKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRU
eXBlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL21ha2VfbmFtZXMucGwgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vbWFrZV9uYW1lcy5wbAppbmRleCBhNDZmMTBiM2M5MGQ3MzAzZDY0YWUy
OTM0ZDlkNmEzNTI4YzNhY2RmLi5mNjlkY2Q0YzRjNjAwM2IzNGQ3MzEzOGI5NWVmOGJjZDE1Yzk1
MTg1IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vbWFrZV9uYW1lcy5wbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vbWFrZV9uYW1lcy5wbApAQCAtNjQyLDQwICs2NDIsMjcgQEAgdm9p
ZCAkY2hlY2tIZWxwZXIoY29uc3QgJGNsYXNzKik7IC8vIENhdGNoIHVubmVjZXNzYXJ5IHJ1bnRp
bWUgY2hlY2sgb2YgdHlwZSBrbm8KIEVORAogICAgICAgICA7CiAKLSAgICAgICAgaWYgKCRwYXJh
bWV0ZXJze25hbWVzcGFjZX0gZXEgIkhUTUwiKSB7Ci0gICAgICAgICAgICBpZiAoJHBhcnNlZFRh
Z3N7JG5hbWV9e3dyYXBwZXJPbmx5SWZNZWRpYUlzQXZhaWxhYmxlfSkgewotICAgICAgICAgICAg
ICAgICMgV2UgbmVlZCB0byBjaGVjayBmb3IgSFRNTFVua25vd25FbGVtZW50IGlmIGl0IG1pZ2h0
IGhhdmUgYmVlbiBjcmVhdGVkIGJ5IHRoZSBmYWN0b3J5LgotICAgICAgICAgICAgICAgIHByaW50
IEYgPDxFTkQKKyAgICAgICAgaWYgKCRwYXJhbWV0ZXJze25hbWVzcGFjZX0gZXEgIkhUTUwiICYm
ICRwYXJzZWRUYWdzeyRuYW1lfXt3cmFwcGVyT25seUlmTWVkaWFJc0F2YWlsYWJsZX0pIHsKKyAg
ICAgICAgICAgICMgV2UgbmVlZCB0byBjaGVjayBmb3IgSFRNTFVua25vd25FbGVtZW50IGlmIGl0
IG1pZ2h0IGhhdmUgYmVlbiBjcmVhdGVkIGJ5IHRoZSBmYWN0b3J5LgorICAgICAgICAgICAgcHJp
bnQgRiA8PEVORAogaW5saW5lIGJvb2wgJGNoZWNrSGVscGVyKGNvbnN0IEhUTUxFbGVtZW50JiBl
bGVtZW50KSB7IHJldHVybiAhZWxlbWVudC5pc0hUTUxVbmtub3duRWxlbWVudCgpICYmIGVsZW1l
bnQuaGFzVGFnTmFtZSgkcGFyYW1ldGVyc3tuYW1lc3BhY2V9TmFtZXM6OiR7bmFtZX1UYWcpOyB9
Ci1pbmxpbmUgYm9vbCAkY2hlY2tIZWxwZXIoY29uc3QgSFRNTEVsZW1lbnQqIGVsZW1lbnQpIHsg
QVNTRVJUKGVsZW1lbnQpOyByZXR1cm4gJGNoZWNrSGVscGVyKCplbGVtZW50KTsgfQotRU5ECi0g
ICAgICAgICAgICAgICAgOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBw
cmludCBGIDw8RU5ECi1pbmxpbmUgYm9vbCAkY2hlY2tIZWxwZXIoY29uc3QgSFRNTEVsZW1lbnQm
IGVsZW1lbnQpIHsgcmV0dXJuIGVsZW1lbnQuaGFzVGFnTmFtZShIVE1MTmFtZXM6OiR7bmFtZX1U
YWcpOyB9Ci1pbmxpbmUgYm9vbCAkY2hlY2tIZWxwZXIoY29uc3QgSFRNTEVsZW1lbnQqIGVsZW1l
bnQpIHsgQVNTRVJUKGVsZW1lbnQpOyByZXR1cm4gJGNoZWNrSGVscGVyKCplbGVtZW50KTsgfQot
RU5ECi0gICAgICAgICAgICAgICAgOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAg
cHJpbnQgRiA8PEVORAogaW5saW5lIGJvb2wgJGNoZWNrSGVscGVyKGNvbnN0IE5vZGUmIG5vZGUp
IHsgcmV0dXJuIG5vZGUuaXNIVE1MRWxlbWVudCgpICYmICRjaGVja0hlbHBlcih0b0hUTUxFbGVt
ZW50KG5vZGUpKTsgfQotaW5saW5lIGJvb2wgJGNoZWNrSGVscGVyKGNvbnN0IE5vZGUqIG5vZGUp
IHsgQVNTRVJUKG5vZGUpOyByZXR1cm4gJGNoZWNrSGVscGVyKCpub2RlKTsgfQotdGVtcGxhdGUg
PD4gaW5saW5lIGJvb2wgaXNFbGVtZW50T2ZUeXBlPGNvbnN0ICRjbGFzcz4oY29uc3QgSFRNTEVs
ZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJuICRjaGVja0hlbHBlcihlbGVtZW50KTsgfQotdGVtcGxh
dGUgPD4gaW5saW5lIGJvb2wgaXNFbGVtZW50T2ZUeXBlPGNvbnN0ICRjbGFzcz4oY29uc3QgRWxl
bWVudCYgZWxlbWVudCkgeyByZXR1cm4gJGNoZWNrSGVscGVyKGVsZW1lbnQpOyB9CiBFTkQKLSAg
ICAgICAgICAgICAgICA7Ci0KKyAgICAgICAgICAgIDsKICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgIHByaW50IEYgPDxFTkQKLWlubGluZSBib29sICRjaGVja0hlbHBlcihjb25zdCBFbGVt
ZW50JiBlbGVtZW50KSB7IHJldHVybiBlbGVtZW50Lmhhc1RhZ05hbWUoJHBhcmFtZXRlcnN7bmFt
ZXNwYWNlfU5hbWVzOjoke25hbWV9VGFnKTsgfQotaW5saW5lIGJvb2wgJGNoZWNrSGVscGVyKGNv
bnN0IEVsZW1lbnQqIGVsZW1lbnQpIHsgQVNTRVJUKGVsZW1lbnQpOyByZXR1cm4gJGNoZWNrSGVs
cGVyKCplbGVtZW50KTsgfQotaW5saW5lIGJvb2wgJGNoZWNrSGVscGVyKGNvbnN0IE5vZGUmIG5v
ZGUpIHsgcmV0dXJuIG5vZGUuaXNFbGVtZW50Tm9kZSgpICYmICRjaGVja0hlbHBlcih0b0VsZW1l
bnQobm9kZSkpOyB9Ci1pbmxpbmUgYm9vbCAkY2hlY2tIZWxwZXIoY29uc3QgTm9kZSogbm9kZSkg
eyBBU1NFUlQobm9kZSk7IHJldHVybiBub2RlLT5pc0VsZW1lbnROb2RlKCkgJiYgJGNoZWNrSGVs
cGVyKHRvRWxlbWVudChub2RlKSk7IH0KLXRlbXBsYXRlIDw+IGlubGluZSBib29sIGlzRWxlbWVu
dE9mVHlwZTxjb25zdCAkY2xhc3M+KGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJuICRj
aGVja0hlbHBlcihlbGVtZW50KTsgfQoraW5saW5lIGJvb2wgJGNoZWNrSGVscGVyKGNvbnN0ICRw
YXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50JiBlbGVtZW50KSB7IHJldHVybiBlbGVtZW50Lmhh
c1RhZ05hbWUoJHBhcmFtZXRlcnN7bmFtZXNwYWNlfU5hbWVzOjoke25hbWV9VGFnKTsgfQoraW5s
aW5lIGJvb2wgJGNoZWNrSGVscGVyKGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJuIG5vZGUuaGFz
VGFnTmFtZSgkcGFyYW1ldGVyc3tuYW1lc3BhY2V9TmFtZXM6OiR7bmFtZX1UYWcpOyB9CiBFTkQK
ICAgICAgICAgICAgIDsKICAgICAgICAgfQorICAgICAgICBwcmludCBGIDw8RU5ECitpbmxpbmUg
Ym9vbCAkY2hlY2tIZWxwZXIoY29uc3QgJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnQqIGVs
ZW1lbnQpIHsgQVNTRVJUKGVsZW1lbnQpOyByZXR1cm4gJGNoZWNrSGVscGVyKCplbGVtZW50KTsg
fQoraW5saW5lIGJvb2wgJGNoZWNrSGVscGVyKGNvbnN0IE5vZGUqIG5vZGUpIHsgQVNTRVJUKG5v
ZGUpOyByZXR1cm4gJGNoZWNrSGVscGVyKCpub2RlKTsgfQordGVtcGxhdGUgPD4gaW5saW5lIGJv
b2wgaXNFbGVtZW50T2ZUeXBlPGNvbnN0ICRjbGFzcz4oY29uc3QgJHBhcmFtZXRlcnN7bmFtZXNw
YWNlfUVsZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJuICRjaGVja0hlbHBlcihlbGVtZW50KTsgfQor
dGVtcGxhdGUgPD4gaW5saW5lIGJvb2wgaXNFbGVtZW50T2ZUeXBlPGNvbnN0ICRjbGFzcz4oY29u
c3QgTm9kZSYgbm9kZSkgeyByZXR1cm4gJGNoZWNrSGVscGVyKG5vZGUpOyB9CitFTkQKKyAgICAg
ICAgOwogCiAgICAgICAgIHByaW50IEYgIlxuIjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVt
ZW50LmgKaW5kZXggYmE1ODc4MTQwOTg0OGVmOTU1OGZhNGMzMWI3ZmFlZjVmZGI2NzdmOS4uZjNh
NGJhZGZiN2MzNTc3ZGY0MjYwNjQwZGU5ZmMxNTY2MzliODQ2ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEVsZW1lbnQuaApAQCAtMTUxLDcgKzE1MSw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUeXBlPiBi
b29sIGlzRWxlbWVudE9mVHlwZShjb25zdCBIVE1MRWxlbWVudCYpOwogdm9pZCBpc0hUTUxFbGVt
ZW50KGNvbnN0IEhUTUxFbGVtZW50Jik7IC8vIENhdGNoIHVubmVjZXNzYXJ5IHJ1bnRpbWUgY2hl
Y2sgb2YgdHlwZSBrbm93biBhdCBjb21waWxlIHRpbWUuCiBpbmxpbmUgYm9vbCBpc0hUTUxFbGVt
ZW50KGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJuIG5vZGUuaXNIVE1MRWxlbWVudCgpOyB9CiB0
ZW1wbGF0ZSA8PiBpbmxpbmUgYm9vbCBpc0VsZW1lbnRPZlR5cGU8Y29uc3QgSFRNTEVsZW1lbnQ+
KGNvbnN0IEhUTUxFbGVtZW50JikgeyByZXR1cm4gdHJ1ZTsgfQotdGVtcGxhdGUgPD4gaW5saW5l
IGJvb2wgaXNFbGVtZW50T2ZUeXBlPGNvbnN0IEhUTUxFbGVtZW50Pihjb25zdCBFbGVtZW50JiBl
bGVtZW50KSB7IHJldHVybiBlbGVtZW50LmlzSFRNTEVsZW1lbnQoKTsgfQordGVtcGxhdGUgPD4g
aW5saW5lIGJvb2wgaXNFbGVtZW50T2ZUeXBlPGNvbnN0IEhUTUxFbGVtZW50Pihjb25zdCBOb2Rl
JiBub2RlKSB7IHJldHVybiBub2RlLmlzSFRNTEVsZW1lbnQoKTsgfQogCiBOT0RFX1RZUEVfQ0FT
VFMoSFRNTEVsZW1lbnQpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZv
cm1Db250cm9sRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xF
bGVtZW50LmgKaW5kZXggYzEwZmNmOGEzNzg3ZWU4ZjhkMGRkYmU1MTlkOTQ5NTg1YzZiZjU1My4u
YzI0MDhhMTQwYmIxZmQxNzk0MGFmYTY0NGZjMTAwNTY0NGRkZTU4ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgKQEAgLTE5Myw2ICsxOTMsNyBAQCBw
cml2YXRlOgogdm9pZCBpc0hUTUxGb3JtQ29udHJvbEVsZW1lbnQoY29uc3QgSFRNTEZvcm1Db250
cm9sRWxlbWVudCYpOyAvLyBDYXRjaCB1bm5lY2Vzc2FyeSBydW50aW1lIGNoZWNrIG9mIHR5cGUg
a25vd24gYXQgY29tcGlsZSB0aW1lLgogaW5saW5lIGJvb2wgaXNIVE1MRm9ybUNvbnRyb2xFbGVt
ZW50KGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJuIGVsZW1lbnQuaXNGb3JtQ29udHJv
bEVsZW1lbnQoKTsgfQogaW5saW5lIGJvb2wgaXNIVE1MRm9ybUNvbnRyb2xFbGVtZW50KGNvbnN0
IE5vZGUmIG5vZGUpIHsgcmV0dXJuIG5vZGUuaXNFbGVtZW50Tm9kZSgpICYmIHRvRWxlbWVudChu
b2RlKS5pc0Zvcm1Db250cm9sRWxlbWVudCgpOyB9Cit0ZW1wbGF0ZSA8PiBpbmxpbmUgYm9vbCBp
c0VsZW1lbnRPZlR5cGU8Y29uc3QgSFRNTEZvcm1Db250cm9sRWxlbWVudD4oY29uc3QgTm9kZSYg
bm9kZSkgeyByZXR1cm4gaXNIVE1MRm9ybUNvbnRyb2xFbGVtZW50KG5vZGUpOyB9CiB0ZW1wbGF0
ZSA8PiBpbmxpbmUgYm9vbCBpc0VsZW1lbnRPZlR5cGU8Y29uc3QgSFRNTEZvcm1Db250cm9sRWxl
bWVudD4oY29uc3QgRWxlbWVudCYgZWxlbWVudCkgeyByZXR1cm4gaXNIVE1MRm9ybUNvbnRyb2xF
bGVtZW50KGVsZW1lbnQpOyB9CiAKIE5PREVfVFlQRV9DQVNUUyhIVE1MRm9ybUNvbnRyb2xFbGVt
ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFz
ZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5oCmluZGV4IDVk
Zjc0OWMzYmU1YzE2ZTZjYTIzYjEwZTFjNmNkNjIzMDBjZTNmMDIuLjI3OWViZDgyYTg4Y2Y0Mjdk
NDM2NTBlMmU1ZWI4YTcxNGFiMmQxMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEZyYW1lRWxlbWVudEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFt
ZUVsZW1lbnRCYXNlLmgKQEAgLTc3LDggKzc3LDggQEAgcHJpdmF0ZToKIH07CiAKIHZvaWQgaXNI
VE1MRnJhbWVFbGVtZW50QmFzZShjb25zdCBIVE1MRnJhbWVFbGVtZW50QmFzZSYpOyAvLyBDYXRj
aCB1bm5lY2Vzc2FyeSBydW50aW1lIGNoZWNrIG9mIHR5cGUga25vd24gYXQgY29tcGlsZSB0aW1l
LgotaW5saW5lIGJvb2wgaXNIVE1MRnJhbWVFbGVtZW50QmFzZShjb25zdCBFbGVtZW50JiBlbGVt
ZW50KSB7IHJldHVybiBpc0hUTUxGcmFtZUVsZW1lbnQoZWxlbWVudCkgfHwgaXNIVE1MSUZyYW1l
RWxlbWVudChlbGVtZW50KTsgfQotaW5saW5lIGJvb2wgaXNIVE1MRnJhbWVFbGVtZW50QmFzZShj
b25zdCBOb2RlJiBub2RlKSB7IHJldHVybiBub2RlLmlzRWxlbWVudE5vZGUoKSAmJiBpc0hUTUxG
cmFtZUVsZW1lbnRCYXNlKHRvRWxlbWVudChub2RlKSk7IH0KK2lubGluZSBib29sIGlzSFRNTEZy
YW1lRWxlbWVudEJhc2UoY29uc3QgSFRNTEVsZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJuIGlzSFRN
TEZyYW1lRWxlbWVudChlbGVtZW50KSB8fCBpc0hUTUxJRnJhbWVFbGVtZW50KGVsZW1lbnQpOyB9
CitpbmxpbmUgYm9vbCBpc0hUTUxGcmFtZUVsZW1lbnRCYXNlKGNvbnN0IE5vZGUmIG5vZGUpIHsg
cmV0dXJuIGlzSFRNTEZyYW1lRWxlbWVudChub2RlKSB8fCBpc0hUTUxJRnJhbWVFbGVtZW50KG5v
ZGUpOyB9CiAKIE5PREVfVFlQRV9DQVNUUyhIVE1MRnJhbWVFbGVtZW50QmFzZSkKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAppbmRleCBhMTQyNTI0MzFkNDNhMWQ4YTIxNmVi
N2NmMzQ2MDZkZTE1ZGUwODZlLi5lY2Q1MjA3OTIxZTExY2U1M2YzZWQ4NWFkNjkzMjRiZmQzNzM0
YTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtOTE2LDcgKzkx
Niw4IEBAIHN0cnVjdCBWYWx1ZVRvU3RyaW5nPFRleHRUcmFja0N1ZSo+IHsKIHZvaWQgaXNIVE1M
TWVkaWFFbGVtZW50KGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmKTsgLy8gQ2F0Y2ggdW5uZWNlc3Nh
cnkgcnVudGltZSBjaGVjayBvZiB0eXBlIGtub3duIGF0IGNvbXBpbGUgdGltZS4KIGlubGluZSBi
b29sIGlzSFRNTE1lZGlhRWxlbWVudChjb25zdCBFbGVtZW50JiBlbGVtZW50KSB7IHJldHVybiBl
bGVtZW50LmlzTWVkaWFFbGVtZW50KCk7IH0KIGlubGluZSBib29sIGlzSFRNTE1lZGlhRWxlbWVu
dChjb25zdCBOb2RlJiBub2RlKSB7IHJldHVybiBub2RlLmlzRWxlbWVudE5vZGUoKSAmJiB0b0Vs
ZW1lbnQobm9kZSkuaXNNZWRpYUVsZW1lbnQoKTsgfQotdGVtcGxhdGUgPD4gaW5saW5lIGJvb2wg
aXNFbGVtZW50T2ZUeXBlPGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQ+KGNvbnN0IEVsZW1lbnQmIGVs
ZW1lbnQpIHsgcmV0dXJuIGVsZW1lbnQuaXNNZWRpYUVsZW1lbnQoKTsgfQordGVtcGxhdGUgPD4g
aW5saW5lIGJvb2wgaXNFbGVtZW50T2ZUeXBlPGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQ+KGNvbnN0
IE5vZGUmIG5vZGUpIHsgcmV0dXJuIGlzSFRNTE1lZGlhRWxlbWVudChub2RlKTsgfQordGVtcGxh
dGUgPD4gaW5saW5lIGJvb2wgaXNFbGVtZW50T2ZUeXBlPGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQ+
KGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJuIGlzSFRNTE1lZGlhRWxlbWVudChlbGVt
ZW50KTsgfQogCiBOT0RFX1RZUEVfQ0FTVFMoSFRNTE1lZGlhRWxlbWVudCkKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuaAppbmRleCA4NTZmYzI2MGMwOTFk
ZTJmYjhhNDMzNDE4OTY3MmViNWJlNTA1YjQ4Li5iZWI1ZTNjN2IzZDcxOGYwZjczY2VjMzVmMGE0
MGRmMTFkY2JlZTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5J
bWFnZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVs
ZW1lbnQuaApAQCAtMTYwLDcgKzE2MCw3IEBAIHByaXZhdGU6CiB2b2lkIGlzSFRNTFBsdWdJbklt
YWdlRWxlbWVudChjb25zdCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Jik7IC8vIENhdGNoIHVubmVj
ZXNzYXJ5IHJ1bnRpbWUgY2hlY2sgb2YgdHlwZSBrbm93biBhdCBjb21waWxlIHRpbWUuCiBpbmxp
bmUgYm9vbCBpc0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQoY29uc3QgSFRNTFBsdWdJbkVsZW1lbnQm
IGVsZW1lbnQpIHsgcmV0dXJuIGVsZW1lbnQuaXNQbHVnSW5JbWFnZUVsZW1lbnQoKTsgfQogaW5s
aW5lIGJvb2wgaXNIVE1MUGx1Z0luSW1hZ2VFbGVtZW50KGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0
dXJuIG5vZGUuaXNQbHVnaW5FbGVtZW50KCkgJiYgdG9IVE1MUGx1Z0luRWxlbWVudChub2RlKS5p
c1BsdWdJbkltYWdlRWxlbWVudCgpOyB9Ci10ZW1wbGF0ZSA8PiBpbmxpbmUgYm9vbCBpc0VsZW1l
bnRPZlR5cGU8Y29uc3QgSFRNTFBsdWdJbkltYWdlRWxlbWVudD4oY29uc3QgRWxlbWVudCYgZWxl
bWVudCkgeyByZXR1cm4gaXNIVE1MUGx1Z0luSW1hZ2VFbGVtZW50KGVsZW1lbnQpOyB9Cit0ZW1w
bGF0ZSA8PiBpbmxpbmUgYm9vbCBpc0VsZW1lbnRPZlR5cGU8Y29uc3QgSFRNTFBsdWdJbkltYWdl
RWxlbWVudD4oY29uc3QgTm9kZSYgbm9kZSkgeyByZXR1cm4gaXNIVE1MUGx1Z0luSW1hZ2VFbGVt
ZW50KG5vZGUpOyB9CiBOT0RFX1RZUEVfQ0FTVFMoSFRNTFBsdWdJbkltYWdlRWxlbWVudCkKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9M
YWJlbGFibGVFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0xhYmVsYWJsZUVsZW1lbnQu
aAppbmRleCAwMTRmMTExMjcwN2U1ZTI4Y2NmZDgzNTA2NDQ0YjFkY2MwY2M1N2ViLi45OTU4MjE3
ZmFiNmYwYTcxMDFiNWI0ZDNjNTI3ZjA5MjJiZTY3YTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0xhYmVsYWJsZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0xh
YmVsYWJsZUVsZW1lbnQuaApAQCAtNTMsNyArNTMsOCBAQCBwcml2YXRlOgogdm9pZCBpc0xhYmVs
YWJsZUVsZW1lbnQoY29uc3QgTGFiZWxhYmxlRWxlbWVudCYpOyAvLyBDYXRjaCB1bm5lY2Vzc2Fy
eSBydW50aW1lIGNoZWNrIG9mIHR5cGUga25vd24gYXQgY29tcGlsZSB0aW1lLgogaW5saW5lIGJv
b2wgaXNMYWJlbGFibGVFbGVtZW50KGNvbnN0IEhUTUxFbGVtZW50JiBlbGVtZW50KSB7IHJldHVy
biBlbGVtZW50LmlzTGFiZWxhYmxlKCk7IH0KIGlubGluZSBib29sIGlzTGFiZWxhYmxlRWxlbWVu
dChjb25zdCBOb2RlJiBub2RlKSB7IHJldHVybiBub2RlLmlzSFRNTEVsZW1lbnQoKSAmJiB0b0hU
TUxFbGVtZW50KG5vZGUpLmlzTGFiZWxhYmxlKCk7IH0KLXRlbXBsYXRlIDw+IGlubGluZSBib29s
IGlzRWxlbWVudE9mVHlwZTxjb25zdCBMYWJlbGFibGVFbGVtZW50Pihjb25zdCBFbGVtZW50JiBl
bGVtZW50KSB7IHJldHVybiBpc0xhYmVsYWJsZUVsZW1lbnQoZWxlbWVudCk7IH0KK3RlbXBsYXRl
IDw+IGlubGluZSBib29sIGlzRWxlbWVudE9mVHlwZTxjb25zdCBMYWJlbGFibGVFbGVtZW50Pihj
b25zdCBIVE1MRWxlbWVudCYgZWxlbWVudCkgeyByZXR1cm4gaXNMYWJlbGFibGVFbGVtZW50KGVs
ZW1lbnQpOyB9Cit0ZW1wbGF0ZSA8PiBpbmxpbmUgYm9vbCBpc0VsZW1lbnRPZlR5cGU8Y29uc3Qg
TGFiZWxhYmxlRWxlbWVudD4oY29uc3QgTm9kZSYgbm9kZSkgeyByZXR1cm4gaXNMYWJlbGFibGVF
bGVtZW50KG5vZGUpOyB9CiAKIE5PREVfVFlQRV9DQVNUUyhMYWJlbGFibGVFbGVtZW50KQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvbWF0aG1sL01hdGhNTEVsZW1lbnQuaAppbmRleCBmOWMzYmNmZTIzOWU2ZThjMjA3
OWVlYjE0NTgzZWRjMTZkMDY4NDEwLi5hODY2YjBjYTMzYTVjYTJmMzNlNTdlZmIyNWZhYzNjZmVl
YzdkMDEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVtZW50LmgKQEAgLTc3LDYgKzc3
LDEwIEBAIHZvaWQgaXNNYXRoTUxFbGVtZW50KGNvbnN0IE1hdGhNTEVsZW1lbnQmKTsgLy8gQ2F0
Y2ggdW5uZWNlc3NhcnkgcnVudGltZSBjaGVjayBvCiBpbmxpbmUgYm9vbCBpc01hdGhNTEVsZW1l
bnQoY29uc3QgTm9kZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5pc01hdGhNTEVsZW1lbnQoKTsgfQog
Tk9ERV9UWVBFX0NBU1RTKE1hdGhNTEVsZW1lbnQpCiAKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBi
b29sIGlzRWxlbWVudE9mVHlwZShjb25zdCBNYXRoTUxFbGVtZW50Jik7Cit0ZW1wbGF0ZSA8PiBp
bmxpbmUgYm9vbCBpc0VsZW1lbnRPZlR5cGU8Y29uc3QgTWF0aE1MRWxlbWVudD4oY29uc3QgTm9k
ZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5pc01hdGhNTEVsZW1lbnQoKTsgfQordGVtcGxhdGUgPD4g
aW5saW5lIGJvb2wgaXNFbGVtZW50T2ZUeXBlPGNvbnN0IE1hdGhNTEVsZW1lbnQ+KGNvbnN0IE1h
dGhNTEVsZW1lbnQmKSB7IHJldHVybiB0cnVlOyB9CisKIGlubGluZSBib29sIE5vZGU6Omhhc1Rh
Z05hbWUoY29uc3QgTWF0aE1MUXVhbGlmaWVkTmFtZSYgbmFtZSkgY29uc3QKIHsKICAgICByZXR1
cm4gaXNNYXRoTUxFbGVtZW50KCkgJiYgdG9NYXRoTUxFbGVtZW50KCp0aGlzKS5oYXNUYWdOYW1l
KG5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgKaW5kZXggYzVjMTdmOGMxMmI0MjFiNTEzZWJl
OTI2NGRmMzljZWI3ZTJkNWNmOS4uOWIzMmE1ZjZkNjI0MDMyMTU5OWJiZTk0MDgxY2I0ZmY2ZWJi
MTJkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCkBAIC0yNSw5ICsyNSw5IEBACiAKICNpbmNs
dWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRTdHJpbmcuaCIK
LSNpbmNsdWRlICJTVkdFbGVtZW50VHlwZUhlbHBlcnMuaCIKICNpbmNsdWRlICJTVkdMYW5nU3Bh
Y2UuaCIKICNpbmNsdWRlICJTVkdMb2NhdGFibGUuaCIKKyNpbmNsdWRlICJTVkdOYW1lcy5oIgog
I2luY2x1ZGUgIlNWR1BhcnNpbmdFcnJvci5oIgogI2luY2x1ZGUgIlNWR1Byb3BlcnR5SW5mby5o
IgogI2luY2x1ZGUgIlN0eWxlZEVsZW1lbnQuaCIKQEAgLTIyNSw3ICsyMjUsOSBAQCBzdHJ1Y3Qg
U1ZHQXR0cmlidXRlSGFzaFRyYW5zbGF0b3IgewogCiB2b2lkIGlzU1ZHRWxlbWVudChjb25zdCBT
VkdFbGVtZW50Jik7IC8vIENhdGNoIHVubmVjZXNzYXJ5IHJ1bnRpbWUgY2hlY2sgb2YgdHlwZSBr
bm93biBhdCBjb21waWxlIHRpbWUuCiBpbmxpbmUgYm9vbCBpc1NWR0VsZW1lbnQoY29uc3QgTm9k
ZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5pc1NWR0VsZW1lbnQoKTsgfQotdGVtcGxhdGUgPD4gaW5s
aW5lIGJvb2wgaXNFbGVtZW50T2ZUeXBlPGNvbnN0IFNWR0VsZW1lbnQ+KGNvbnN0IEVsZW1lbnQm
IGVsZW1lbnQpIHsgcmV0dXJuIGVsZW1lbnQuaXNTVkdFbGVtZW50KCk7IH0KK3RlbXBsYXRlIDx0
eXBlbmFtZSBUPiBib29sIGlzRWxlbWVudE9mVHlwZShjb25zdCBTVkdFbGVtZW50Jik7Cit0ZW1w
bGF0ZSA8PiBpbmxpbmUgYm9vbCBpc0VsZW1lbnRPZlR5cGU8Y29uc3QgU1ZHRWxlbWVudD4oY29u
c3QgTm9kZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5pc1NWR0VsZW1lbnQoKTsgfQordGVtcGxhdGUg
PD4gaW5saW5lIGJvb2wgaXNFbGVtZW50T2ZUeXBlPGNvbnN0IFNWR0VsZW1lbnQ+KGNvbnN0IFNW
R0VsZW1lbnQmKSB7IHJldHVybiB0cnVlOyB9CiAKIE5PREVfVFlQRV9DQVNUUyhTVkdFbGVtZW50
KQogCkBAIC0yMzQsNiArMjM2LDggQEAgaW5saW5lIGJvb2wgTm9kZTo6aGFzVGFnTmFtZShjb25z
dCBTVkdRdWFsaWZpZWROYW1lJiBuYW1lKSBjb25zdAogICAgIHJldHVybiBpc1NWR0VsZW1lbnQo
KSAmJiB0b1NWR0VsZW1lbnQoKnRoaXMpLmhhc1RhZ05hbWUobmFtZSk7CiB9CiAKLX0KK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2luY2x1ZGUgIlNWR0VsZW1lbnRUeXBlSGVscGVycy5oIgog
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRp
dmVTdGFuZGFyZEF0dHJpYnV0ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmlt
aXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaAppbmRleCA1ZmRjYjY2NDI0YzZlNDJiMDU0YmI0M2Fi
OGFmMzkxM2ZlYjBhNThjLi41ODU2YjM0OTFlOTg5NWNkM2Y3Yjc1Zjc1OTg2ZmNiNDFhOTYwNDJl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRh
cmRBdHRyaWJ1dGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2
ZVN0YW5kYXJkQXR0cmlidXRlcy5oCkBAIC04NSw3ICs4NSw4IEBAIHZvaWQgaW52YWxpZGF0ZUZp
bHRlclByaW1pdGl2ZVBhcmVudChTVkdFbGVtZW50Kik7CiB2b2lkIGlzU1ZHRmlsdGVyUHJpbWl0
aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKGNvbnN0IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0
cmlidXRlcyYpOyAvLyBDYXRjaCB1bm5lY2Vzc2FyeSBydW50aW1lIGNoZWNrIG9mIHR5cGUga25v
d24gYXQgY29tcGlsZSB0aW1lLgogaW5saW5lIGJvb2wgaXNTVkdGaWx0ZXJQcmltaXRpdmVTdGFu
ZGFyZEF0dHJpYnV0ZXMoY29uc3QgU1ZHRWxlbWVudCYgZWxlbWVudCkgeyByZXR1cm4gZWxlbWVu
dC5pc0ZpbHRlckVmZmVjdCgpOyB9CiBpbmxpbmUgYm9vbCBpc1NWR0ZpbHRlclByaW1pdGl2ZVN0
YW5kYXJkQXR0cmlidXRlcyhjb25zdCBOb2RlJiBub2RlKSB7IHJldHVybiBub2RlLmlzU1ZHRWxl
bWVudCgpICYmIHRvU1ZHRWxlbWVudChub2RlKS5pc0ZpbHRlckVmZmVjdCgpOyB9Ci10ZW1wbGF0
ZSA8PiBpbmxpbmUgYm9vbCBpc0VsZW1lbnRPZlR5cGU8Y29uc3QgU1ZHRmlsdGVyUHJpbWl0aXZl
U3RhbmRhcmRBdHRyaWJ1dGVzPihjb25zdCBFbGVtZW50JiBlbGVtZW50KSB7IHJldHVybiBpc1NW
R0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyhlbGVtZW50KTsgfQordGVtcGxhdGUg
PD4gaW5saW5lIGJvb2wgaXNFbGVtZW50T2ZUeXBlPGNvbnN0IFNWR0ZpbHRlclByaW1pdGl2ZVN0
YW5kYXJkQXR0cmlidXRlcz4oY29uc3QgU1ZHRWxlbWVudCYgZWxlbWVudCkgeyByZXR1cm4gaXNT
VkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMoZWxlbWVudCk7IH0KK3RlbXBsYXRl
IDw+IGlubGluZSBib29sIGlzRWxlbWVudE9mVHlwZTxjb25zdCBTVkdGaWx0ZXJQcmltaXRpdmVT
dGFuZGFyZEF0dHJpYnV0ZXM+KGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJuIGlzU1ZHRmlsdGVy
UHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKG5vZGUpOyB9CiAKIE5PREVfVFlQRV9DQVNUUyhT
VkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMpCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQuaAppbmRleCAxZWVmMzE4NmQyZWYxZTczYTc1
ZWU1ZWM0MjM3NDY4ODk5YjBmMjc5Li5hN2E5OGMzNzYxZTJhYTdmMDZmZWM2ODc1ZGQxMDBlZmZi
YjQyYzgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxF
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVu
dC5oCkBAIC0yNDAsNyArMjQwLDggQEAgcHJpdmF0ZToKIHZvaWQgaXNTVkdTTUlMRWxlbWVudChj
b25zdCBTVkdTTUlMRWxlbWVudCYpOyAvLyBDYXRjaCB1bm5lY2Vzc2FyeSBydW50aW1lIGNoZWNr
IG9mIHR5cGUga25vd24gYXQgY29tcGlsZSB0aW1lLgogaW5saW5lIGJvb2wgaXNTVkdTTUlMRWxl
bWVudChjb25zdCBTVkdFbGVtZW50JiBlbGVtZW50KSB7IHJldHVybiBlbGVtZW50LmlzU01JTEVs
ZW1lbnQoKTsgfQogaW5saW5lIGJvb2wgaXNTVkdTTUlMRWxlbWVudChjb25zdCBOb2RlJiBub2Rl
KSB7IHJldHVybiBub2RlLmlzU1ZHRWxlbWVudCgpICYmIHRvU1ZHRWxlbWVudChub2RlKS5pc1NN
SUxFbGVtZW50KCk7IH0KLXRlbXBsYXRlIDw+IGlubGluZSBib29sIGlzRWxlbWVudE9mVHlwZTxj
b25zdCBTVkdTTUlMRWxlbWVudD4oY29uc3QgRWxlbWVudCYgZWxlbWVudCkgeyByZXR1cm4gaXNT
VkdTTUlMRWxlbWVudChlbGVtZW50KTsgfQordGVtcGxhdGUgPD4gaW5saW5lIGJvb2wgaXNFbGVt
ZW50T2ZUeXBlPGNvbnN0IFNWR1NNSUxFbGVtZW50Pihjb25zdCBTVkdFbGVtZW50JiBlbGVtZW50
KSB7IHJldHVybiBpc1NWR1NNSUxFbGVtZW50KGVsZW1lbnQpOyB9Cit0ZW1wbGF0ZSA8PiBpbmxp
bmUgYm9vbCBpc0VsZW1lbnRPZlR5cGU8Y29uc3QgU1ZHU01JTEVsZW1lbnQ+KGNvbnN0IE5vZGUm
IG5vZGUpIHsgcmV0dXJuIGlzU1ZHU01JTEVsZW1lbnQobm9kZSk7IH0KIAogTk9ERV9UWVBFX0NB
U1RTKFNWR1NNSUxFbGVtZW50KQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>238098</attachid>
            <date>2014-09-14 18:32:09 -0700</date>
            <delta_ts>2014-09-15 08:16:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-136719-20140914183206.patch</filename>
            <type>text/plain</type>
            <size>27471</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTczNjA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjBhYTFiYjUwYWRhNzI0
N2U3M2Q1YmJkZmY5YzBjN2FjMjZhMTcxYy4uM2Y1NmJkMjkxNDcyNTJiOWI2Mzc4ODk0ZWFiN2I2
MzM3ZmVjYWI1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDEzNSBAQAogMjAxNC0wOS0xNCAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCisgICAgICAgIEF2b2lkIHJlZHVuZGFudCBp
c0VsZW1lbnROb2RlKCkgY2hlY2tzIGluIFRyYXZlcnNhbDxIVE1MKkVsZW1lbnQ+IC8gVHJhdmVy
c2FsPFNWRypFbGVtZW50PgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTM2NzE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAg
ICAgICAgQXZvaWQgcmVkdW5kYW50IGlzRWxlbWVudE5vZGUoKSBjaGVja3MgaW4gVHJhdmVyc2Fs
PEhUTUwqRWxlbWVudD4gLworICAgICAgICBUcmF2ZXJzYWw8U1ZHKkVsZW1lbnQ+LiAgV2UgdXNl
ZCB0byBpdGVyYXRlIHRocm91Z2ggRWxlbWVudHMsIGFuZCB0aGVuCisgICAgICAgIGNhbGwgaXNF
bGVtZW50T2ZUeXBlPEhUTUwqRWxlbWVudD4oKSAgb24gZWFjaCBFbGVtZW50LiBUaGlzIG1hZGUg
c2Vuc2UKKyAgICAgICAgYmVjYXVzZSBoYXNUYWdOYW1lKCkgdXNlZCB0byBiZSBkZWZpbmVkIG9u
IEVsZW1lbnQuIEhvd2V2ZXIsIGFmdGVyCisgICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcv
Y2hhbmdlc2V0LzE2NTY5OSwgaGFzVGFnTmFtZSgpIGlzIG5vdyBkZWZpbmVkIG9uCisgICAgICAg
IE5vZGUgZm9yIEhUTUxRdWFsaWZpZWROYW1lIC8gU1ZHUXVhbGlmaWVkTmFtZSBhcmd1bWVudHMu
CisKKyAgICAgICAgTm9kZTo6aGFzVGFnTmFtZShIVE1MUXVhbGlmaWVkTmFtZSkgYmFzaWNhbGx5
IGRvZXMgdGhlIGZvbGxvd2luZyBjaGVjaworICAgICAgICAiaXNIVE1MRWxlbWVudCgpICYmICB0
b0hUTUxFbGVtZW50KCp0aGlzKS5oYXNUYWdOYW1lKHRhZ05hbWUpIi4gQXMgYQorICAgICAgICBj
b25zZXF1ZW5jZSwgZG9pbmcgYW4gaXNFbGVtZW50Tm9kZSgpIGNoZWNrIGlzIG5vdyByZWR1bmRh
bnQgYXMKKyAgICAgICAgaXNIVE1MRWxlbWVudCgpIGlzIGRlZmluZWQgb24gTm9kZS4KKworICAg
ICAgICBUaGlzIHBhdGNoIGFkZHMgYSB0ZW1wbGF0ZSBwYXJhbWV0ZXIgdG8gaXNFbGVtZW50T2ZU
eXBlKCkgc28gdGhhdCBpdCBjYW4KKyAgICAgICAgdGFrZSBhbnkgdHlwZSBpbiBhcmd1bWVudCAo
cGFydGljdWxhbHkgTm9kZSwgRWxlbWVudCwgSFRNTEVsZW1lbnQsCisgICAgICAgIFNWR0VsZW1l
bnQsIE1hdGhNTEVsZW1lbnQpLCBub3QganVzdCBhbiBFbGVtZW50LiBJIGhhZCB0byBhZGQgYW4K
KyAgICAgICAgSXNFbGVtZW50T2ZUeXBlIGZ1bmN0b3IgdG8gc3VwcG9ydCBwYXJ0aWFsIHNwZWNp
YWxpemF0aW9uIGFzIEMrKyBkb2VzIG5vdAorICAgICAgICBzdXBwb3J0IHBhcnRpYWwgc3BlY2lh
bGl6YXRpb24gb2YgdGVtcGxhdGUgZnVuY3Rpb25zLgorICAgICAgICBUaGlzIHBhdGNoIGFsc28g
dXBkYXRlcyBUcmF2ZXJzYWw8RWxlbWVudFR5cGU+IHNvIHRoYXQgdGhlIG1ldGhvZHMgdXNlCisg
ICAgICAgIE5vZGVUcmF2ZXJzYWwgaW50ZXJuYWxseSBpbnN0ZWFkIG9mIFRyYXZlcnNhbDxFbGVt
ZW50VHlwZT4uIEFzIGEgcmVzdWx0LAorICAgICAgICB3ZSBub3cgaXRlcmF0ZSBvdmVyIE5vZGVz
IChub3QgRWxlbWVudHMpIGFuZCBjYWxsIHRoZSBuZXcKKyAgICAgICAgaXNFbGVtZW50T2ZUeXBl
PEVsZW1lbnRUeXBlPihOb2RlKSBoZWxwZXJzICh3aGljaCBhcmUgZWZmaWNpZW50IGFmdGVyCisg
ICAgICAgIHIxNjU2OTkpLgorCisgICAgICAgIEJlZm9yZSB0aGUgcGF0Y2gsIHRoZSBjb2RlIGVu
ZGVkIHVwIGRvaW5nIHRoZSBmb2xsb3dpbmcgY2hlY2tzIGZvcgorICAgICAgICBUcmF2ZXJzYWw8
SFRNTCplbGVtZW50PjoKKyAgICAgICAgbm9kZS5pc0VsZW1lbnROb2RlKCkgJiYgdG9FbGVtZW50
KG5vZGUpLmlzSFRNTEVsZW1lbnQoKQorICAgICAgICAgICAgJiYgdG9IVE1MRWxlbWVudChub2Rl
KS5oYXNUYWdOYW1lKEhUTUxOYW1lczo6Zm9vVGFnKQorCisgICAgICAgIEFmdGVyIHRoZSBwYXRj
aCwgdGhlIGNvZGUgb25seSBkb2VzOgorICAgICAgICBub2RlLmlzSFRNTEVsZW1lbnQoKQorICAg
ICAgICAgICAgJiYgdG9IVE1MRWxlbWVudChub2RlKS5oYXNUYWdOYW1lKEhUTUxOYW1lczo6Zm9v
VGFnKQorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgbm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAg
ICAgICogZG9tL0VsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ+KToKKyAgICAg
ICAgKFdlYkNvcmU6OmlzRWxlbWVudE9mVHlwZSk6CisgICAgICAgIEFkZCB0ZW1wbGF0ZSBwYXJh
bWV0ZXIgdG8gaXNFbGVtZW50T2ZUeXBlKCkgZnVuY3Rpb24gc28gdGhhdCBpdCBjYW4KKyAgICAg
ICAgaGFuZGxlIGFueSBhcmd1bWVudCB0eXBlLCBub3QganVzdCBFbGVtZW50cy4gQWxzbyBpbnRy
b2R1Y2UgYW4KKyAgICAgICAgSXNFbGVtZW50T2ZUeXBlIEZ1bmN0b3IgdGhhdCBpcyBjYWxsZWQg
YnkgaXNFbGVtZW50T2ZUeXBlKCkgZnVuY3Rpb24KKyAgICAgICAgc28gdGhhdCB3ZSBjYW4gc28g
cGFydGlhbCB0ZW1wbGF0ZSBzcGVjaWFsaXphdGlvbi4KKworICAgICAgICAqIGRvbS9FbGVtZW50
VHJhdmVyc2FsLmg6CisgICAgICAgIChXZWJDb3JlOjpUcmF2ZXJzYWw8RWxlbWVudFR5cGU+Ojpm
aXJzdFdpdGhpblRlbXBsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYXZlcnNhbDxFbGVtZW50
VHlwZT46Omxhc3RXaXRoaW5UZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpUcmF2ZXJzYWw8
RWxlbWVudFR5cGU+OjpuZXh0VGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VHJhdmVyc2Fs
PEVsZW1lbnRUeXBlPjo6cHJldmlvdXNUZW1wbGF0ZSk6CisgICAgICAgIFVzZSBOb2RlVHJhdmVy
c2FsIEFQSSBpbnRlcm5hbGx5IGluc3RlYWQgb2YgVHJhdmVyc2FsPEVsZW1lbnQ+IHRvIGF2b2lk
CisgICAgICAgIHJlZHVuZGFudCBpc0VsZW1lbnROb2RlKCkgY2hlY2tzLgorCisgICAgICAgIChX
ZWJDb3JlOjpUcmF2ZXJzYWw8RWxlbWVudD46Omxhc3RXaXRoaW5UZW1wbGF0ZSk6IERlbGV0ZWQu
CisgICAgICAgIFRoZSBjb2RlIGlzIG5vdyBpZGVudGljYWwgdG8gdGhlIGdlbmVyaWMgdmVyc2lv
bi4KKworICAgICAgICAoV2ViQ29yZTo6VHJhdmVyc2FsPEVsZW1lbnQ+OjpwcmV2aW91c1RlbXBs
YXRlKTogRGVsZXRlZC4KKyAgICAgICAgVGhlIGNvZGUgaXMgbm93IGlkZW50aWNhbCB0byB0aGUg
Z2VuZXJpYyB2ZXJzaW9uLgorCisgICAgICAgICogZG9tL21ha2VfbmFtZXMucGw6CisgICAgICAg
IChwcmludFR5cGVIZWxwZXJzKToKKyAgICAgICAgLSBHZW5lcmF0ZSB0ZW1wbGF0ZSBzcGVjaWFs
aXphdGlvbnMgZm9yIElzRWxlbWVudE9mVHlwZSBmdW5jdG9yIGluc3RlYWQKKyAgICAgICAgICBv
ZiBpc0VsZW1lbnRPZlR5cGUoKS4gVGhpcyBhdm9pZHMgaGF2aW5nIHRvIHByb3ZpZGUgb3Zlcmxv
YWRzIGZvcgorICAgICAgICAgIHNwZWNpZmljIGFyZ3VtZW50IHR5cGVzIChlLmcuIE5vZGUsIEVs
ZW1lbnQsIEhUTUxFbGVtZW50LCAuLi4pLgorICAgICAgICAtIFNoYXJlIG1vcmUgY29kZSBiZXR3
ZWVuIEhUTUwgY29kZSBwYXRoIGFuZCB0aGUgb3RoZXIgcGF0aCAoZm9yIFNWRywKKyAgICAgICAg
ICBNVEhNTCkuCisKKyAgICAgICAgKiBodG1sL0hUTUxFbGVtZW50Lmg6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MRWxlbWVudD4pOgorICAgICAgICBQcm92aWRlIEhUTUxFbGVtZW50IHRlbXBsYXRl
IHNwZWNpYWxpemF0aW9uIGZvciBJc0VsZW1lbnRPZlR5cGUgZnVuY3RvcgorICAgICAgICBpbnN0
ZWFkIG9mIGlzRWxlbWVudE9mVHlwZSgpLgorCisgICAgICAgICogaHRtbC9IVE1MRm9ybUNvbnRy
b2xFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50Pik6
CisgICAgICAgIFByb3ZpZGUgSFRNTEZvcm1Db250cm9sRWxlbWVudCB0ZW1wbGF0ZSBzcGVjaWFs
aXphdGlvbiBmb3IgSXNFbGVtZW50T2ZUeXBlCisgICAgICAgIGZ1bmN0b3IgaW5zdGVhZCBvZiBp
c0VsZW1lbnRPZlR5cGUoKS4KKworICAgICAgICAqIGh0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2Uu
aDoKKyAgICAgICAgKFdlYkNvcmU6OmlzSFRNTEZyYW1lRWxlbWVudEJhc2UpOgorICAgICAgICAt
IFJlbW92ZSBoZWxwZXIgdGFraW5nIGFuIEVsZW1lbnQgaW4gYXJndW1lbnQgYXMgaXQgZG9lcyBu
b3QgYnJpbmcgYW55CisgICAgICAgICAgYmVuZWZpdC4gSW5zdGVhZCwgdXBkYXRlIHRoZSBvdmVy
bG9hZCB0YWtpbmcgYSBOb2RlIGluIGFyZ3VtZW50IHRvCisgICAgICAgICAgcmVtb3ZlIHRoZSB1
bm5lY2Vzc2FyeSBpc0VsZW1lbnROb2RlKCkgY2hlY2sgYXMgaXNIVE1MRnJhbWVFbGVtZW50KE5v
ZGUpCisgICAgICAgICAgaXMgbm93IGVmZmljaWVudC4KKyAgICAgICAgLSBBZGQgYW4gb3Zlcmxv
YWQgdGFraW5nIGFuIEhUTUxFbGVtZW50IGluIGFyZ3VtZW50IHNvIHRoYXQgd2UgY2FuIGJ5cGFz
cworICAgICAgICAgIHRoZSBpc0hUTUxFbGVtZW50KCkgY2hlY2sgd2hlbiB3ZSBrbm93IHRoZSBp
bnB1dCBpcyBhbiBIVE1MRWxlbWVudC4KKworICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVu
dC5oOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudD4pOgorICAgICAgICBQcm92
aWRlIEhUTUxNZWRpYUVsZW1lbnQgdGVtcGxhdGUgc3BlY2lhbGl6YXRpb24gZm9yIElzRWxlbWVu
dE9mVHlwZQorICAgICAgICBmdW5jdG9yIGluc3RlYWQgb2YgaXNFbGVtZW50T2ZUeXBlKCkuCisK
KyAgICAgICAgKiBodG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ+KToKKyAgICAgICAgUHJvdmlkZSBIVE1MUGx1Z0lu
SW1hZ2VFbGVtZW50IHRlbXBsYXRlIHNwZWNpYWxpemF0aW9uIGZvciBJc0VsZW1lbnRPZlR5cGUK
KyAgICAgICAgZnVuY3RvciBpbnN0ZWFkIG9mIGlzRWxlbWVudE9mVHlwZSgpLgorCisgICAgICAg
ICogaHRtbC9MYWJlbGFibGVFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpMYWJlbGFibGVF
bGVtZW50Pik6CisgICAgICAgIFByb3ZpZGUgTGFiZWxhYmxlRWxlbWVudCB0ZW1wbGF0ZSBzcGVj
aWFsaXphdGlvbiBmb3IgSXNFbGVtZW50T2ZUeXBlCisgICAgICAgIGZ1bmN0b3IgaW5zdGVhZCBv
ZiBpc0VsZW1lbnRPZlR5cGUoKS4KKworICAgICAgICAqIG1hdGhtbC9NYXRoTUxFbGVtZW50Lmg6
CisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxFbGVtZW50Pik6CisgICAgICAgIFByb3ZpZGUgTWF0
aE1MRWxlbWVudCB0ZW1wbGF0ZSBzcGVjaWFsaXphdGlvbiBmb3IgSXNFbGVtZW50T2ZUeXBlCisg
ICAgICAgIGZ1bmN0b3IgZm9yIGNvbnNpc3RlbmN5IHdpdGggSFRNTEVsZW1lbnQgLyBTVkdFbGVt
ZW50LgorCisgICAgICAgICogc3ZnL1NWR0VsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0VsZW1lbnQ+KToKKyAgICAgICAgLSBQcm92aWRlIFNWR0VsZW1lbnQgdGVtcGxhdGUgc3BlY2lh
bGl6YXRpb24gZm9yIElzRWxlbWVudE9mVHlwZSBmdW5jdG9yCisgICAgICAgICAgaW5zdGVhZCBv
ZiBpc0VsZW1lbnRPZlR5cGUoKS4KKyAgICAgICAgLSBpbmNsdWRlIFNWR0VsZW1lbnRUeXBlSGVs
cGVycy5oIGF0IHRoZSBlbmQgb2YgdGhlIGZpbGUgKHNpbWlsYXJseSB0bworICAgICAgICAgIHdo
YXQgaXMgYWxyZWFkeSBkb25lIGluIEhUTUxFbGVtZW50LmggYmVjYXVzZQorICAgICAgICAgIGlz
RWxlbWVudE9mVHlwZShjb25zdCBTVkdFbGVtZW50JikgbmVlZHMgdG8gYmUgZGVmaWVuZCBiZWNh
dXNlIHRoZQorICAgICAgICAgIGluY2x1ZGUuCisKKyAgICAgICAgKiBzdmcvU1ZHRmlsdGVyUHJp
bWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJQ
cmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM+KToKKyAgICAgICAgUHJvdmlkZSBTVkdGaWx0ZXJQ
cmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgdGVtcGxhdGUgc3BlY2lhbGl6YXRpb24gZm9yCisg
ICAgICAgIElzRWxlbWVudE9mVHlwZSBmdW5jdG9yIGluc3RlYWQgb2YgaXNFbGVtZW50T2ZUeXBl
KCkuCisKKyAgICAgICAgKiBzdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50Lmg6CisgICAgICAg
IChXZWJDb3JlOjpTVkdTTUlMRWxlbWVudD4pOgorICAgICAgICBQcm92aWRlIFNWR1NNSUxFbGVt
ZW50IHRlbXBsYXRlIHNwZWNpYWxpemF0aW9uIGZvciBJc0VsZW1lbnRPZlR5cGUKKyAgICAgICAg
ZnVuY3RvciBpbnN0ZWFkIG9mIGlzRWxlbWVudE9mVHlwZSgpLgorCisKKzIwMTQtMDktMTQgIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKwogICAgICAgICBSZW5hbWUgTm9kZTo6Y2hp
bGROb2RlQ291bnQoKSB0byBjb3VudENoaWxkTm9kZXMoKSBhbmQgYXZvaWQgaW5lZmZpY2llbnQg
dXNlcwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM2
Nzg5CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IDc0YzJmYmI4ZTlhMGVkY2Q5ZjdiM2UzMDU1NDMy
NzgyZmViNjZkODQuLjlhMmQzNzM5ODkzOGMyZGQ3OGZkYjQyYjJlODQ4Y2I3NDc4ZWE4MmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuaApAQCAtNjcwLDkgKzY3MCwyNCBAQCBpbmxpbmUgYm9vbCBpc0VsZW1l
bnQoY29uc3QgTm9kZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5pc0VsZW1lbnROb2RlKCk7IH0KIAog
Tk9ERV9UWVBFX0NBU1RTKEVsZW1lbnQpCiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBUeXBlPiBib29s
IGlzRWxlbWVudE9mVHlwZShjb25zdCBFbGVtZW50Jik7Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVHlw
ZT4gaW5saW5lIGJvb2wgaXNFbGVtZW50T2ZUeXBlKGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJu
IG5vZGUuaXNFbGVtZW50Tm9kZSgpICYmIGlzRWxlbWVudE9mVHlwZTxjb25zdCBUeXBlPih0b0Vs
ZW1lbnQobm9kZSkpOyB9Ci10ZW1wbGF0ZSA8PiBpbmxpbmUgYm9vbCBpc0VsZW1lbnRPZlR5cGU8
Y29uc3QgRWxlbWVudD4oY29uc3QgRWxlbWVudCYpIHsgcmV0dXJuIHRydWU7IH0KK3RlbXBsYXRl
IDx0eXBlbmFtZSBFeHBlY3RlZFR5cGUsIHR5cGVuYW1lIEFyZ1R5cGU+CitzdHJ1Y3QgSXNFbGVt
ZW50T2ZUeXBlIHsKKyAgICBib29sIG9wZXJhdG9yKCkoQXJnVHlwZSYpOworfTsKKworLy8gVGhp
cyBpcyBuZWVkZWQgc28gdGhhdCB0aGUgY29tcGlsZXIgY2FuIGRlZHVjZSB0aGUgc2Vjb25kIHRl
bXBsYXRlIHBhcmFtZXRlciAoQXJnVHlwZSkuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRXhwZWN0ZWRU
eXBlLCB0eXBlbmFtZSBBcmdUeXBlPgoraW5saW5lIGJvb2wgaXNFbGVtZW50T2ZUeXBlKGNvbnN0
IEFyZ1R5cGUmIG5vZGUpIHsgcmV0dXJuIElzRWxlbWVudE9mVHlwZTxFeHBlY3RlZFR5cGUsIGNv
bnN0IEFyZ1R5cGU+KCkobm9kZSk7IH0KKwordGVtcGxhdGUgPD4KK3N0cnVjdCBJc0VsZW1lbnRP
ZlR5cGU8Y29uc3QgRWxlbWVudCwgY29uc3QgTm9kZT4geworICAgIGJvb2wgb3BlcmF0b3IoKShj
b25zdCBOb2RlJiBub2RlKSB7IHJldHVybiBub2RlLmlzRWxlbWVudE5vZGUoKTsgfQorfTsKKwor
dGVtcGxhdGUgPHR5cGVuYW1lIEV4cGVjdGVkVHlwZT4KK3N0cnVjdCBJc0VsZW1lbnRPZlR5cGU8
RXhwZWN0ZWRUeXBlLCBFeHBlY3RlZFR5cGU+IHsKKyAgICBib29sIG9wZXJhdG9yKCkoRXhwZWN0
ZWRUeXBlJikgeyByZXR1cm4gdHJ1ZTsgfQorfTsKIAogaW5saW5lIGJvb2wgTm9kZTo6aGFzQXR0
cmlidXRlcygpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dFRyYXZlcnNhbC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRUcmF2ZXJzYWwuaAppbmRl
eCAwM2E3Yzk4ZjFjMzIyOWYyOTZlOWQyMWViMjliMDI5ZWMwYjgzZDNhLi5hNDRkNTczMDJiZjhl
ZjljOWRjMGZmNzAxOWIwOWVkMmM4MDU0MjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudFRyYXZlcnNhbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50VHJh
dmVyc2FsLmgKQEAgLTEwNCwxNiArMTA0LDYgQEAgaW5saW5lIEVsZW1lbnQqIFRyYXZlcnNhbDxF
bGVtZW50Pjo6Zmlyc3RXaXRoaW5UZW1wbGF0ZShDdXJyZW50VHlwZSogY3VycmVudCkKIAogdGVt
cGxhdGUgPD4KIHRlbXBsYXRlIDx0eXBlbmFtZSBDdXJyZW50VHlwZT4KLWlubGluZSBFbGVtZW50
KiBUcmF2ZXJzYWw8RWxlbWVudD46Omxhc3RXaXRoaW5UZW1wbGF0ZShDdXJyZW50VHlwZSogY3Vy
cmVudCkKLXsKLSAgICBOb2RlKiBub2RlID0gTm9kZVRyYXZlcnNhbDo6bGFzdChjdXJyZW50KTsK
LSAgICB3aGlsZSAobm9kZSAmJiAhbm9kZS0+aXNFbGVtZW50Tm9kZSgpKQotICAgICAgICBub2Rl
ID0gTm9kZVRyYXZlcnNhbDo6cHJldmlvdXMobm9kZSwgY3VycmVudCk7Ci0gICAgcmV0dXJuIHRv
RWxlbWVudChub2RlKTsKLX0KLQotdGVtcGxhdGUgPD4KLXRlbXBsYXRlIDx0eXBlbmFtZSBDdXJy
ZW50VHlwZT4KIGlubGluZSBFbGVtZW50KiBUcmF2ZXJzYWw8RWxlbWVudD46Om5leHRUZW1wbGF0
ZShDdXJyZW50VHlwZSogY3VycmVudCkKIHsKICAgICBOb2RlKiBub2RlID0gTm9kZVRyYXZlcnNh
bDo6bmV4dChjdXJyZW50KTsKQEAgLTEzMiwyNiArMTIyLDYgQEAgaW5saW5lIEVsZW1lbnQqIFRy
YXZlcnNhbDxFbGVtZW50Pjo6bmV4dFRlbXBsYXRlKEN1cnJlbnRUeXBlKiBjdXJyZW50LCBjb25z
dCBOb2QKICAgICByZXR1cm4gdG9FbGVtZW50KG5vZGUpOwogfQogCi10ZW1wbGF0ZSA8PgotdGVt
cGxhdGUgPHR5cGVuYW1lIEN1cnJlbnRUeXBlPgotaW5saW5lIEVsZW1lbnQqIFRyYXZlcnNhbDxF
bGVtZW50Pjo6cHJldmlvdXNUZW1wbGF0ZShDdXJyZW50VHlwZSogY3VycmVudCkKLXsKLSAgICBO
b2RlKiBub2RlID0gTm9kZVRyYXZlcnNhbDo6cHJldmlvdXMoY3VycmVudCk7Ci0gICAgd2hpbGUg
KG5vZGUgJiYgIW5vZGUtPmlzRWxlbWVudE5vZGUoKSkKLSAgICAgICAgbm9kZSA9IE5vZGVUcmF2
ZXJzYWw6OnByZXZpb3VzKG5vZGUpOwotICAgIHJldHVybiB0b0VsZW1lbnQobm9kZSk7Ci19Ci0K
LXRlbXBsYXRlIDw+Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgQ3VycmVudFR5cGU+Ci1pbmxpbmUgRWxl
bWVudCogVHJhdmVyc2FsPEVsZW1lbnQ+OjpwcmV2aW91c1RlbXBsYXRlKEN1cnJlbnRUeXBlKiBj
dXJyZW50LCBjb25zdCBOb2RlKiBzdGF5V2l0aGluKQotewotICAgIE5vZGUqIG5vZGUgPSBOb2Rl
VHJhdmVyc2FsOjpwcmV2aW91cyhjdXJyZW50LCBzdGF5V2l0aGluKTsKLSAgICB3aGlsZSAobm9k
ZSAmJiAhbm9kZS0+aXNFbGVtZW50Tm9kZSgpKQotICAgICAgICBub2RlID0gTm9kZVRyYXZlcnNh
bDo6cHJldmlvdXMobm9kZSwgc3RheVdpdGhpbik7Ci0gICAgcmV0dXJuIHRvRWxlbWVudChub2Rl
KTsKLX0KLQogLy8gR2VuZXJpYyB2ZXJzaW9ucy4KIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50
VHlwZT4KIHRlbXBsYXRlIDx0eXBlbmFtZSBDdXJyZW50VHlwZT4KQEAgLTE3Nyw2MCArMTQ3LDYw
IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KIHRlbXBsYXRlIDx0eXBlbmFtZSBD
dXJyZW50VHlwZT4KIGlubGluZSBFbGVtZW50VHlwZSogVHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6
Zmlyc3RXaXRoaW5UZW1wbGF0ZShDdXJyZW50VHlwZSogY3VycmVudCkKIHsKLSAgICBFbGVtZW50
KiBlbGVtZW50ID0gVHJhdmVyc2FsPEVsZW1lbnQ+OjpmaXJzdFdpdGhpbihjdXJyZW50KTsKLSAg
ICB3aGlsZSAoZWxlbWVudCAmJiAhaXNFbGVtZW50T2ZUeXBlPGNvbnN0IEVsZW1lbnRUeXBlPigq
ZWxlbWVudCkpCi0gICAgICAgIGVsZW1lbnQgPSBUcmF2ZXJzYWw8RWxlbWVudD46Om5leHQoZWxl
bWVudCwgY3VycmVudCk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEVsZW1lbnRUeXBlKj4oZWxl
bWVudCk7CisgICAgTm9kZSogbm9kZSA9IGN1cnJlbnQtPmZpcnN0Q2hpbGQoKTsKKyAgICB3aGls
ZSAobm9kZSAmJiAhaXNFbGVtZW50T2ZUeXBlPGNvbnN0IEVsZW1lbnRUeXBlPigqbm9kZSkpCisg
ICAgICAgIG5vZGUgPSBOb2RlVHJhdmVyc2FsOjpuZXh0KG5vZGUsIGN1cnJlbnQpOworICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxFbGVtZW50VHlwZSo+KG5vZGUpOwogfQogCiB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgRWxlbWVudFR5cGU+CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ3VycmVudFR5cGU+CiBpbmxp
bmUgRWxlbWVudFR5cGUqIFRyYXZlcnNhbDxFbGVtZW50VHlwZT46Omxhc3RXaXRoaW5UZW1wbGF0
ZShDdXJyZW50VHlwZSogY3VycmVudCkKIHsKLSAgICBFbGVtZW50KiBlbGVtZW50ID0gVHJhdmVy
c2FsPEVsZW1lbnQ+OjpsYXN0V2l0aGluKGN1cnJlbnQpOwotICAgIHdoaWxlIChlbGVtZW50ICYm
ICFpc0VsZW1lbnRPZlR5cGU8Y29uc3QgRWxlbWVudFR5cGU+KCplbGVtZW50KSkKLSAgICAgICAg
ZWxlbWVudCA9IFRyYXZlcnNhbDxFbGVtZW50Pjo6cHJldmlvdXMoZWxlbWVudCwgY3VycmVudCk7
Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEVsZW1lbnRUeXBlKj4oZWxlbWVudCk7CisgICAgTm9k
ZSogbm9kZSA9IE5vZGVUcmF2ZXJzYWw6Omxhc3QoY3VycmVudCk7CisgICAgd2hpbGUgKG5vZGUg
JiYgIWlzRWxlbWVudE9mVHlwZTxjb25zdCBFbGVtZW50VHlwZT4oKm5vZGUpKQorICAgICAgICBu
b2RlID0gTm9kZVRyYXZlcnNhbDo6cHJldmlvdXMobm9kZSwgY3VycmVudCk7CisgICAgcmV0dXJu
IHN0YXRpY19jYXN0PEVsZW1lbnRUeXBlKj4obm9kZSk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFt
ZSBFbGVtZW50VHlwZT4KIHRlbXBsYXRlIDx0eXBlbmFtZSBDdXJyZW50VHlwZT4KIGlubGluZSBF
bGVtZW50VHlwZSogVHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6bmV4dFRlbXBsYXRlKEN1cnJlbnRU
eXBlKiBjdXJyZW50KQogewotICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBUcmF2ZXJzYWw8RWxlbWVu
dD46Om5leHQoY3VycmVudCk7Ci0gICAgd2hpbGUgKGVsZW1lbnQgJiYgIWlzRWxlbWVudE9mVHlw
ZTxjb25zdCBFbGVtZW50VHlwZT4oKmVsZW1lbnQpKQotICAgICAgICBlbGVtZW50ID0gVHJhdmVy
c2FsPEVsZW1lbnQ+OjpuZXh0KGVsZW1lbnQpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxFbGVt
ZW50VHlwZSo+KGVsZW1lbnQpOworICAgIE5vZGUqIG5vZGUgPSBOb2RlVHJhdmVyc2FsOjpuZXh0
KGN1cnJlbnQpOworICAgIHdoaWxlIChub2RlICYmICFpc0VsZW1lbnRPZlR5cGU8Y29uc3QgRWxl
bWVudFR5cGU+KCpub2RlKSkKKyAgICAgICAgbm9kZSA9IE5vZGVUcmF2ZXJzYWw6Om5leHQobm9k
ZSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEVsZW1lbnRUeXBlKj4obm9kZSk7CiB9CiAKIHRl
bXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KIHRlbXBsYXRlIDx0eXBlbmFtZSBDdXJyZW50
VHlwZT4KIGlubGluZSBFbGVtZW50VHlwZSogVHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6bmV4dFRl
bXBsYXRlKEN1cnJlbnRUeXBlKiBjdXJyZW50LCBjb25zdCBOb2RlKiBzdGF5V2l0aGluKQogewot
ICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBUcmF2ZXJzYWw8RWxlbWVudD46Om5leHQoY3VycmVudCwg
c3RheVdpdGhpbik7Ci0gICAgd2hpbGUgKGVsZW1lbnQgJiYgIWlzRWxlbWVudE9mVHlwZTxjb25z
dCBFbGVtZW50VHlwZT4oKmVsZW1lbnQpKQotICAgICAgICBlbGVtZW50ID0gVHJhdmVyc2FsPEVs
ZW1lbnQ+OjpuZXh0KGVsZW1lbnQsIHN0YXlXaXRoaW4pOwotICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxFbGVtZW50VHlwZSo+KGVsZW1lbnQpOworICAgIE5vZGUqIG5vZGUgPSBOb2RlVHJhdmVyc2Fs
OjpuZXh0KGN1cnJlbnQsIHN0YXlXaXRoaW4pOworICAgIHdoaWxlIChub2RlICYmICFpc0VsZW1l
bnRPZlR5cGU8Y29uc3QgRWxlbWVudFR5cGU+KCpub2RlKSkKKyAgICAgICAgbm9kZSA9IE5vZGVU
cmF2ZXJzYWw6Om5leHQobm9kZSwgc3RheVdpdGhpbik7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0
PEVsZW1lbnRUeXBlKj4obm9kZSk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlw
ZT4KIHRlbXBsYXRlIDx0eXBlbmFtZSBDdXJyZW50VHlwZT4KIGlubGluZSBFbGVtZW50VHlwZSog
VHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6cHJldmlvdXNUZW1wbGF0ZShDdXJyZW50VHlwZSogY3Vy
cmVudCkKIHsKLSAgICBFbGVtZW50KiBlbGVtZW50ID0gVHJhdmVyc2FsPEVsZW1lbnQ+OjpwcmV2
aW91cyhjdXJyZW50KTsKLSAgICB3aGlsZSAoZWxlbWVudCAmJiAhaXNFbGVtZW50T2ZUeXBlPGNv
bnN0IEVsZW1lbnRUeXBlPigqZWxlbWVudCkpCi0gICAgICAgIGVsZW1lbnQgPSBUcmF2ZXJzYWw8
RWxlbWVudD46OnByZXZpb3VzKGVsZW1lbnQpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxFbGVt
ZW50VHlwZSo+KGVsZW1lbnQpOworICAgIE5vZGUqIG5vZGUgPSBOb2RlVHJhdmVyc2FsOjpwcmV2
aW91cyhjdXJyZW50KTsKKyAgICB3aGlsZSAobm9kZSAmJiAhaXNFbGVtZW50T2ZUeXBlPGNvbnN0
IEVsZW1lbnRUeXBlPigqbm9kZSkpCisgICAgICAgIG5vZGUgPSBOb2RlVHJhdmVyc2FsOjpwcmV2
aW91cyhub2RlKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RWxlbWVudFR5cGUqPihub2RlKTsK
IH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgogdGVtcGxhdGUgPHR5cGVuYW1l
IEN1cnJlbnRUeXBlPgogaW5saW5lIEVsZW1lbnRUeXBlKiBUcmF2ZXJzYWw8RWxlbWVudFR5cGU+
OjpwcmV2aW91c1RlbXBsYXRlKEN1cnJlbnRUeXBlKiBjdXJyZW50LCBjb25zdCBOb2RlKiBzdGF5
V2l0aGluKQogewotICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBUcmF2ZXJzYWw8RWxlbWVudD46OnBy
ZXZpb3VzKGN1cnJlbnQsIHN0YXlXaXRoaW4pOwotICAgIHdoaWxlIChlbGVtZW50ICYmICFpc0Vs
ZW1lbnRPZlR5cGU8Y29uc3QgRWxlbWVudFR5cGU+KCplbGVtZW50KSkKLSAgICAgICAgZWxlbWVu
dCA9IFRyYXZlcnNhbDxFbGVtZW50Pjo6cHJldmlvdXMoZWxlbWVudCwgc3RheVdpdGhpbik7Ci0g
ICAgcmV0dXJuIHN0YXRpY19jYXN0PEVsZW1lbnRUeXBlKj4oZWxlbWVudCk7CisgICAgTm9kZSog
bm9kZSA9IE5vZGVUcmF2ZXJzYWw6OnByZXZpb3VzKGN1cnJlbnQsIHN0YXlXaXRoaW4pOworICAg
IHdoaWxlIChub2RlICYmICFpc0VsZW1lbnRPZlR5cGU8Y29uc3QgRWxlbWVudFR5cGU+KCpub2Rl
KSkKKyAgICAgICAgbm9kZSA9IE5vZGVUcmF2ZXJzYWw6OnByZXZpb3VzKG5vZGUsIHN0YXlXaXRo
aW4pOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxFbGVtZW50VHlwZSo+KG5vZGUpOwogfQogCiB0
ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vbWFrZV9uYW1lcy5wbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9tYWtlX25hbWVzLnBsCmlu
ZGV4IGE0NmYxMGIzYzkwZDczMDNkNjRhZTI5MzRkOWQ2YTM1MjhjM2FjZGYuLjMxNzEwYTZhMzM5
ZTcxZGNiYWYxZjM5MTNkYWUzMmVmOGFlYzZiODkgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9tYWtlX25hbWVzLnBsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9tYWtlX25hbWVzLnBs
CkBAIC02NDIsNDAgKzY0MiwyOSBAQCB2b2lkICRjaGVja0hlbHBlcihjb25zdCAkY2xhc3MqKTsg
Ly8gQ2F0Y2ggdW5uZWNlc3NhcnkgcnVudGltZSBjaGVjayBvZiB0eXBlIGtubwogRU5ECiAgICAg
ICAgIDsKIAotICAgICAgICBpZiAoJHBhcmFtZXRlcnN7bmFtZXNwYWNlfSBlcSAiSFRNTCIpIHsK
LSAgICAgICAgICAgIGlmICgkcGFyc2VkVGFnc3skbmFtZX17d3JhcHBlck9ubHlJZk1lZGlhSXNB
dmFpbGFibGV9KSB7Ci0gICAgICAgICAgICAgICAgIyBXZSBuZWVkIHRvIGNoZWNrIGZvciBIVE1M
VW5rbm93bkVsZW1lbnQgaWYgaXQgbWlnaHQgaGF2ZSBiZWVuIGNyZWF0ZWQgYnkgdGhlIGZhY3Rv
cnkuCi0gICAgICAgICAgICAgICAgcHJpbnQgRiA8PEVORAorICAgICAgICBpZiAoJHBhcmFtZXRl
cnN7bmFtZXNwYWNlfSBlcSAiSFRNTCIgJiYgJHBhcnNlZFRhZ3N7JG5hbWV9e3dyYXBwZXJPbmx5
SWZNZWRpYUlzQXZhaWxhYmxlfSkgeworICAgICAgICAgICAgIyBXZSBuZWVkIHRvIGNoZWNrIGZv
ciBIVE1MVW5rbm93bkVsZW1lbnQgaWYgaXQgbWlnaHQgaGF2ZSBiZWVuIGNyZWF0ZWQgYnkgdGhl
IGZhY3RvcnkuCisgICAgICAgICAgICBwcmludCBGIDw8RU5ECiBpbmxpbmUgYm9vbCAkY2hlY2tI
ZWxwZXIoY29uc3QgSFRNTEVsZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJuICFlbGVtZW50LmlzSFRN
TFVua25vd25FbGVtZW50KCkgJiYgZWxlbWVudC5oYXNUYWdOYW1lKCRwYXJhbWV0ZXJze25hbWVz
cGFjZX1OYW1lczo6JHtuYW1lfVRhZyk7IH0KLWlubGluZSBib29sICRjaGVja0hlbHBlcihjb25z
dCBIVE1MRWxlbWVudCogZWxlbWVudCkgeyBBU1NFUlQoZWxlbWVudCk7IHJldHVybiAkY2hlY2tI
ZWxwZXIoKmVsZW1lbnQpOyB9Ci1FTkQKLSAgICAgICAgICAgICAgICA7Ci0gICAgICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgICAgIHByaW50IEYgPDxFTkQKLWlubGluZSBib29sICRjaGVj
a0hlbHBlcihjb25zdCBIVE1MRWxlbWVudCYgZWxlbWVudCkgeyByZXR1cm4gZWxlbWVudC5oYXNU
YWdOYW1lKEhUTUxOYW1lczo6JHtuYW1lfVRhZyk7IH0KLWlubGluZSBib29sICRjaGVja0hlbHBl
cihjb25zdCBIVE1MRWxlbWVudCogZWxlbWVudCkgeyBBU1NFUlQoZWxlbWVudCk7IHJldHVybiAk
Y2hlY2tIZWxwZXIoKmVsZW1lbnQpOyB9Ci1FTkQKLSAgICAgICAgICAgICAgICA7Ci0gICAgICAg
ICAgICB9Ci0KLSAgICAgICAgICAgICAgICBwcmludCBGIDw8RU5ECiBpbmxpbmUgYm9vbCAkY2hl
Y2tIZWxwZXIoY29uc3QgTm9kZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5pc0hUTUxFbGVtZW50KCkg
JiYgJGNoZWNrSGVscGVyKHRvSFRNTEVsZW1lbnQobm9kZSkpOyB9Ci1pbmxpbmUgYm9vbCAkY2hl
Y2tIZWxwZXIoY29uc3QgTm9kZSogbm9kZSkgeyBBU1NFUlQobm9kZSk7IHJldHVybiAkY2hlY2tI
ZWxwZXIoKm5vZGUpOyB9Ci10ZW1wbGF0ZSA8PiBpbmxpbmUgYm9vbCBpc0VsZW1lbnRPZlR5cGU8
Y29uc3QgJGNsYXNzPihjb25zdCBIVE1MRWxlbWVudCYgZWxlbWVudCkgeyByZXR1cm4gJGNoZWNr
SGVscGVyKGVsZW1lbnQpOyB9Ci10ZW1wbGF0ZSA8PiBpbmxpbmUgYm9vbCBpc0VsZW1lbnRPZlR5
cGU8Y29uc3QgJGNsYXNzPihjb25zdCBFbGVtZW50JiBlbGVtZW50KSB7IHJldHVybiAkY2hlY2tI
ZWxwZXIoZWxlbWVudCk7IH0KIEVORAotICAgICAgICAgICAgICAgIDsKLQorICAgICAgICAgICAg
OwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgcHJpbnQgRiA8PEVORAotaW5saW5lIGJv
b2wgJGNoZWNrSGVscGVyKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJuIGVsZW1lbnQu
aGFzVGFnTmFtZSgkcGFyYW1ldGVyc3tuYW1lc3BhY2V9TmFtZXM6OiR7bmFtZX1UYWcpOyB9Ci1p
bmxpbmUgYm9vbCAkY2hlY2tIZWxwZXIoY29uc3QgRWxlbWVudCogZWxlbWVudCkgeyBBU1NFUlQo
ZWxlbWVudCk7IHJldHVybiAkY2hlY2tIZWxwZXIoKmVsZW1lbnQpOyB9Ci1pbmxpbmUgYm9vbCAk
Y2hlY2tIZWxwZXIoY29uc3QgTm9kZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5pc0VsZW1lbnROb2Rl
KCkgJiYgJGNoZWNrSGVscGVyKHRvRWxlbWVudChub2RlKSk7IH0KLWlubGluZSBib29sICRjaGVj
a0hlbHBlcihjb25zdCBOb2RlKiBub2RlKSB7IEFTU0VSVChub2RlKTsgcmV0dXJuIG5vZGUtPmlz
RWxlbWVudE5vZGUoKSAmJiAkY2hlY2tIZWxwZXIodG9FbGVtZW50KG5vZGUpKTsgfQotdGVtcGxh
dGUgPD4gaW5saW5lIGJvb2wgaXNFbGVtZW50T2ZUeXBlPGNvbnN0ICRjbGFzcz4oY29uc3QgRWxl
bWVudCYgZWxlbWVudCkgeyByZXR1cm4gJGNoZWNrSGVscGVyKGVsZW1lbnQpOyB9CitpbmxpbmUg
Ym9vbCAkY2hlY2tIZWxwZXIoY29uc3QgJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnQmIGVs
ZW1lbnQpIHsgcmV0dXJuIGVsZW1lbnQuaGFzVGFnTmFtZSgkcGFyYW1ldGVyc3tuYW1lc3BhY2V9
TmFtZXM6OiR7bmFtZX1UYWcpOyB9CitpbmxpbmUgYm9vbCAkY2hlY2tIZWxwZXIoY29uc3QgTm9k
ZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5oYXNUYWdOYW1lKCRwYXJhbWV0ZXJze25hbWVzcGFjZX1O
YW1lczo6JHtuYW1lfVRhZyk7IH0KIEVORAogICAgICAgICAgICAgOwogICAgICAgICB9CisgICAg
ICAgIHByaW50IEYgPDxFTkQKK2lubGluZSBib29sICRjaGVja0hlbHBlcihjb25zdCAkcGFyYW1l
dGVyc3tuYW1lc3BhY2V9RWxlbWVudCogZWxlbWVudCkgeyBBU1NFUlQoZWxlbWVudCk7IHJldHVy
biAkY2hlY2tIZWxwZXIoKmVsZW1lbnQpOyB9CitpbmxpbmUgYm9vbCAkY2hlY2tIZWxwZXIoY29u
c3QgTm9kZSogbm9kZSkgeyBBU1NFUlQobm9kZSk7IHJldHVybiAkY2hlY2tIZWxwZXIoKm5vZGUp
OyB9Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgQXJnVHlwZT4KK3N0cnVjdCBJc0VsZW1lbnRPZlR5cGU8
Y29uc3QgJGNsYXNzLCBBcmdUeXBlPiB7CisgICAgYm9vbCBvcGVyYXRvcigpKEFyZ1R5cGUmIG5v
ZGUpIHsgcmV0dXJuICRjaGVja0hlbHBlcihub2RlKTsgfQorfTsKK0VORAorICAgICAgICA7CiAK
ICAgICAgICAgcHJpbnQgRiAiXG4iOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaApp
bmRleCBiYTU4NzgxNDA5ODQ4ZWY5NTU4ZmE0YzMxYjdmYWVmNWZkYjY3N2Y5Li44YTJiOTA3NDNi
NDMwOTBkNTA5MGMwZDNkOGZjOWUxMjMzZjRlZDNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVu
dC5oCkBAIC0xNDYsMTIgKzE0NiwxMyBAQCBpbmxpbmUgSFRNTEVsZW1lbnQ6OkhUTUxFbGVtZW50
KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudAogICAgIEFT
U0VSVCh0YWdOYW1lLmxvY2FsTmFtZSgpLmltcGwoKSk7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFt
ZSBUeXBlPiBib29sIGlzRWxlbWVudE9mVHlwZShjb25zdCBIVE1MRWxlbWVudCYpOwotCiB2b2lk
IGlzSFRNTEVsZW1lbnQoY29uc3QgSFRNTEVsZW1lbnQmKTsgLy8gQ2F0Y2ggdW5uZWNlc3Nhcnkg
cnVudGltZSBjaGVjayBvZiB0eXBlIGtub3duIGF0IGNvbXBpbGUgdGltZS4KIGlubGluZSBib29s
IGlzSFRNTEVsZW1lbnQoY29uc3QgTm9kZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5pc0hUTUxFbGVt
ZW50KCk7IH0KLXRlbXBsYXRlIDw+IGlubGluZSBib29sIGlzRWxlbWVudE9mVHlwZTxjb25zdCBI
VE1MRWxlbWVudD4oY29uc3QgSFRNTEVsZW1lbnQmKSB7IHJldHVybiB0cnVlOyB9Ci10ZW1wbGF0
ZSA8PiBpbmxpbmUgYm9vbCBpc0VsZW1lbnRPZlR5cGU8Y29uc3QgSFRNTEVsZW1lbnQ+KGNvbnN0
IEVsZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJuIGVsZW1lbnQuaXNIVE1MRWxlbWVudCgpOyB9CisK
K3RlbXBsYXRlIDx0eXBlbmFtZSBBcmdUeXBlPgorc3RydWN0IElzRWxlbWVudE9mVHlwZTxjb25z
dCBIVE1MRWxlbWVudCwgQXJnVHlwZT4geworICAgIGJvb2wgb3BlcmF0b3IoKShBcmdUeXBlJiBu
b2RlKSB7IHJldHVybiBpc0hUTUxFbGVtZW50KG5vZGUpOyB9Cit9OwogCiBOT0RFX1RZUEVfQ0FT
VFMoSFRNTEVsZW1lbnQpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZv
cm1Db250cm9sRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xF
bGVtZW50LmgKaW5kZXggYzEwZmNmOGEzNzg3ZWU4ZjhkMGRkYmU1MTlkOTQ5NTg1YzZiZjU1My4u
YjA0Zjk3YzZkOTI1NzcxNzI4MTI0ODQwNTNhNjY4NjE0ZDM4OTk3OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgKQEAgLTE5Myw3ICsxOTMsMTEgQEAg
cHJpdmF0ZToKIHZvaWQgaXNIVE1MRm9ybUNvbnRyb2xFbGVtZW50KGNvbnN0IEhUTUxGb3JtQ29u
dHJvbEVsZW1lbnQmKTsgLy8gQ2F0Y2ggdW5uZWNlc3NhcnkgcnVudGltZSBjaGVjayBvZiB0eXBl
IGtub3duIGF0IGNvbXBpbGUgdGltZS4KIGlubGluZSBib29sIGlzSFRNTEZvcm1Db250cm9sRWxl
bWVudChjb25zdCBFbGVtZW50JiBlbGVtZW50KSB7IHJldHVybiBlbGVtZW50LmlzRm9ybUNvbnRy
b2xFbGVtZW50KCk7IH0KIGlubGluZSBib29sIGlzSFRNTEZvcm1Db250cm9sRWxlbWVudChjb25z
dCBOb2RlJiBub2RlKSB7IHJldHVybiBub2RlLmlzRWxlbWVudE5vZGUoKSAmJiB0b0VsZW1lbnQo
bm9kZSkuaXNGb3JtQ29udHJvbEVsZW1lbnQoKTsgfQotdGVtcGxhdGUgPD4gaW5saW5lIGJvb2wg
aXNFbGVtZW50T2ZUeXBlPGNvbnN0IEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ+KGNvbnN0IEVsZW1l
bnQmIGVsZW1lbnQpIHsgcmV0dXJuIGlzSFRNTEZvcm1Db250cm9sRWxlbWVudChlbGVtZW50KTsg
fQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQXJnVHlwZT4KK3N0cnVjdCBJc0VsZW1lbnRPZlR5cGU8
Y29uc3QgSFRNTEZvcm1Db250cm9sRWxlbWVudCwgQXJnVHlwZT4geworICAgIGJvb2wgb3BlcmF0
b3IoKShBcmdUeXBlJiBub2RlKSB7IHJldHVybiBpc0hUTUxGb3JtQ29udHJvbEVsZW1lbnQobm9k
ZSk7IH0KK307CiAKIE5PREVfVFlQRV9DQVNUUyhIVE1MRm9ybUNvbnRyb2xFbGVtZW50KQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmgKaW5kZXggNWRmNzQ5YzNi
ZTVjMTZlNmNhMjNiMTBlMWM2Y2Q2MjMwMGNlM2YwMi4uMjc5ZWJkODJhODhjZjQyN2Q0MzY1MGUy
ZTVlYjhhNzE0YWIyZDEwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJh
bWVFbGVtZW50QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVu
dEJhc2UuaApAQCAtNzcsOCArNzcsOCBAQCBwcml2YXRlOgogfTsKIAogdm9pZCBpc0hUTUxGcmFt
ZUVsZW1lbnRCYXNlKGNvbnN0IEhUTUxGcmFtZUVsZW1lbnRCYXNlJik7IC8vIENhdGNoIHVubmVj
ZXNzYXJ5IHJ1bnRpbWUgY2hlY2sgb2YgdHlwZSBrbm93biBhdCBjb21waWxlIHRpbWUuCi1pbmxp
bmUgYm9vbCBpc0hUTUxGcmFtZUVsZW1lbnRCYXNlKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpIHsg
cmV0dXJuIGlzSFRNTEZyYW1lRWxlbWVudChlbGVtZW50KSB8fCBpc0hUTUxJRnJhbWVFbGVtZW50
KGVsZW1lbnQpOyB9Ci1pbmxpbmUgYm9vbCBpc0hUTUxGcmFtZUVsZW1lbnRCYXNlKGNvbnN0IE5v
ZGUmIG5vZGUpIHsgcmV0dXJuIG5vZGUuaXNFbGVtZW50Tm9kZSgpICYmIGlzSFRNTEZyYW1lRWxl
bWVudEJhc2UodG9FbGVtZW50KG5vZGUpKTsgfQoraW5saW5lIGJvb2wgaXNIVE1MRnJhbWVFbGVt
ZW50QmFzZShjb25zdCBIVE1MRWxlbWVudCYgZWxlbWVudCkgeyByZXR1cm4gaXNIVE1MRnJhbWVF
bGVtZW50KGVsZW1lbnQpIHx8IGlzSFRNTElGcmFtZUVsZW1lbnQoZWxlbWVudCk7IH0KK2lubGlu
ZSBib29sIGlzSFRNTEZyYW1lRWxlbWVudEJhc2UoY29uc3QgTm9kZSYgbm9kZSkgeyByZXR1cm4g
aXNIVE1MRnJhbWVFbGVtZW50KG5vZGUpIHx8IGlzSFRNTElGcmFtZUVsZW1lbnQobm9kZSk7IH0K
IAogTk9ERV9UWVBFX0NBU1RTKEhUTUxGcmFtZUVsZW1lbnRCYXNlKQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IGExNDI1MjQzMWQ0M2ExZDhhMjE2ZWI3Y2YzNDYw
NmRlMTVkZTA4NmUuLmY2NTdlY2Y5ZDJkMjYwNzJjMGJmNWY1ZjAyYTY3ZjJkOTRkZjY3NzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCkBAIC05MTYsNyArOTE2LDExIEBA
IHN0cnVjdCBWYWx1ZVRvU3RyaW5nPFRleHRUcmFja0N1ZSo+IHsKIHZvaWQgaXNIVE1MTWVkaWFF
bGVtZW50KGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmKTsgLy8gQ2F0Y2ggdW5uZWNlc3NhcnkgcnVu
dGltZSBjaGVjayBvZiB0eXBlIGtub3duIGF0IGNvbXBpbGUgdGltZS4KIGlubGluZSBib29sIGlz
SFRNTE1lZGlhRWxlbWVudChjb25zdCBFbGVtZW50JiBlbGVtZW50KSB7IHJldHVybiBlbGVtZW50
LmlzTWVkaWFFbGVtZW50KCk7IH0KIGlubGluZSBib29sIGlzSFRNTE1lZGlhRWxlbWVudChjb25z
dCBOb2RlJiBub2RlKSB7IHJldHVybiBub2RlLmlzRWxlbWVudE5vZGUoKSAmJiB0b0VsZW1lbnQo
bm9kZSkuaXNNZWRpYUVsZW1lbnQoKTsgfQotdGVtcGxhdGUgPD4gaW5saW5lIGJvb2wgaXNFbGVt
ZW50T2ZUeXBlPGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQ+KGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQp
IHsgcmV0dXJuIGVsZW1lbnQuaXNNZWRpYUVsZW1lbnQoKTsgfQorCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgQXJnVHlwZT4KK3N0cnVjdCBJc0VsZW1lbnRPZlR5cGU8Y29uc3QgSFRNTE1lZGlhRWxlbWVu
dCwgQXJnVHlwZT4geworICAgIGJvb2wgb3BlcmF0b3IoKShBcmdUeXBlJiBub2RlKSB7IHJldHVy
biBpc0hUTUxNZWRpYUVsZW1lbnQobm9kZSk7IH0KK307CiAKIE5PREVfVFlQRV9DQVNUUyhIVE1M
TWVkaWFFbGVtZW50KQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVn
SW5JbWFnZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxl
bWVudC5oCmluZGV4IDg1NmZjMjYwYzA5MWRlMmZiOGE0MzM0MTg5NjcyZWI1YmU1MDViNDguLjAw
MGI4NmQ4MjAxYjRlM2VlNGVkNTIzODA1ZjU4YzU0ZGU3MWUzZTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5oCkBAIC0xNjAsNyArMTYwLDEyIEBAIHBy
aXZhdGU6CiB2b2lkIGlzSFRNTFBsdWdJbkltYWdlRWxlbWVudChjb25zdCBIVE1MUGx1Z0luSW1h
Z2VFbGVtZW50Jik7IC8vIENhdGNoIHVubmVjZXNzYXJ5IHJ1bnRpbWUgY2hlY2sgb2YgdHlwZSBr
bm93biBhdCBjb21waWxlIHRpbWUuCiBpbmxpbmUgYm9vbCBpc0hUTUxQbHVnSW5JbWFnZUVsZW1l
bnQoY29uc3QgSFRNTFBsdWdJbkVsZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJuIGVsZW1lbnQuaXNQ
bHVnSW5JbWFnZUVsZW1lbnQoKTsgfQogaW5saW5lIGJvb2wgaXNIVE1MUGx1Z0luSW1hZ2VFbGVt
ZW50KGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJuIG5vZGUuaXNQbHVnaW5FbGVtZW50KCkgJiYg
dG9IVE1MUGx1Z0luRWxlbWVudChub2RlKS5pc1BsdWdJbkltYWdlRWxlbWVudCgpOyB9Ci10ZW1w
bGF0ZSA8PiBpbmxpbmUgYm9vbCBpc0VsZW1lbnRPZlR5cGU8Y29uc3QgSFRNTFBsdWdJbkltYWdl
RWxlbWVudD4oY29uc3QgRWxlbWVudCYgZWxlbWVudCkgeyByZXR1cm4gaXNIVE1MUGx1Z0luSW1h
Z2VFbGVtZW50KGVsZW1lbnQpOyB9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBBcmdUeXBlPgorc3Ry
dWN0IElzRWxlbWVudE9mVHlwZTxjb25zdCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50LCBBcmdUeXBl
PiB7CisgICAgYm9vbCBvcGVyYXRvcigpKEFyZ1R5cGUmIG5vZGUpIHsgcmV0dXJuIGlzSFRNTFBs
dWdJbkltYWdlRWxlbWVudChub2RlKTsgfQorfTsKKwogTk9ERV9UWVBFX0NBU1RTKEhUTUxQbHVn
SW5JbWFnZUVsZW1lbnQpCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvTGFiZWxhYmxlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9MYWJlbGFibGVFbGVtZW50LmgKaW5kZXggMDE0ZjExMTI3MDdlNWUyOGNjZmQ4MzUwNjQ0NGIx
ZGNjMGNjNTdlYi4uMzI1NmMyODFmMjNkY2ZhOGQ0OGMxM2EzZTFhZTA4N2Q5NjNmY2U2MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9MYWJlbGFibGVFbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9MYWJlbGFibGVFbGVtZW50LmgKQEAgLTUzLDcgKzUzLDExIEBAIHBy
aXZhdGU6CiB2b2lkIGlzTGFiZWxhYmxlRWxlbWVudChjb25zdCBMYWJlbGFibGVFbGVtZW50Jik7
IC8vIENhdGNoIHVubmVjZXNzYXJ5IHJ1bnRpbWUgY2hlY2sgb2YgdHlwZSBrbm93biBhdCBjb21w
aWxlIHRpbWUuCiBpbmxpbmUgYm9vbCBpc0xhYmVsYWJsZUVsZW1lbnQoY29uc3QgSFRNTEVsZW1l
bnQmIGVsZW1lbnQpIHsgcmV0dXJuIGVsZW1lbnQuaXNMYWJlbGFibGUoKTsgfQogaW5saW5lIGJv
b2wgaXNMYWJlbGFibGVFbGVtZW50KGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJuIG5vZGUuaXNI
VE1MRWxlbWVudCgpICYmIHRvSFRNTEVsZW1lbnQobm9kZSkuaXNMYWJlbGFibGUoKTsgfQotdGVt
cGxhdGUgPD4gaW5saW5lIGJvb2wgaXNFbGVtZW50T2ZUeXBlPGNvbnN0IExhYmVsYWJsZUVsZW1l
bnQ+KGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJuIGlzTGFiZWxhYmxlRWxlbWVudChl
bGVtZW50KTsgfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQXJnVHlwZT4KK3N0cnVjdCBJc0VsZW1l
bnRPZlR5cGU8Y29uc3QgTGFiZWxhYmxlRWxlbWVudCwgQXJnVHlwZT4geworICAgIGJvb2wgb3Bl
cmF0b3IoKShBcmdUeXBlJiBub2RlKSB7IHJldHVybiBpc0xhYmVsYWJsZUVsZW1lbnQobm9kZSk7
IH0KK307CiAKIE5PREVfVFlQRV9DQVNUUyhMYWJlbGFibGVFbGVtZW50KQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUv
bWF0aG1sL01hdGhNTEVsZW1lbnQuaAppbmRleCBmOWMzYmNmZTIzOWU2ZThjMjA3OWVlYjE0NTgz
ZWRjMTZkMDY4NDEwLi4wZTc3NDYwMWRlZjBlY2JlYzQxNmIyZjAyYzFmNmNkZjg4ZjYyODkwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVtZW50LmgKQEAgLTc1LDYgKzc1LDEyIEBAIHBy
aXZhdGU6CiAKIHZvaWQgaXNNYXRoTUxFbGVtZW50KGNvbnN0IE1hdGhNTEVsZW1lbnQmKTsgLy8g
Q2F0Y2ggdW5uZWNlc3NhcnkgcnVudGltZSBjaGVjayBvZiB0eXBlIGtub3duIGF0IGNvbXBpbGUg
dGltZS4KIGlubGluZSBib29sIGlzTWF0aE1MRWxlbWVudChjb25zdCBOb2RlJiBub2RlKSB7IHJl
dHVybiBub2RlLmlzTWF0aE1MRWxlbWVudCgpOyB9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBBcmdU
eXBlPgorc3RydWN0IElzRWxlbWVudE9mVHlwZTxjb25zdCBNYXRoTUxFbGVtZW50LCBBcmdUeXBl
PiB7CisgICAgYm9vbCBvcGVyYXRvcigpKEFyZ1R5cGUmIG5vZGUpIHsgcmV0dXJuIGlzTWF0aE1M
RWxlbWVudChub2RlKTsgfQorfTsKKwogTk9ERV9UWVBFX0NBU1RTKE1hdGhNTEVsZW1lbnQpCiAK
IGlubGluZSBib29sIE5vZGU6Omhhc1RhZ05hbWUoY29uc3QgTWF0aE1MUXVhbGlmaWVkTmFtZSYg
bmFtZSkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCmluZGV4IGM1YzE3ZjhjMTJiNDIxYjUx
M2ViZTkyNjRkZjM5Y2ViN2UyZDVjZjkuLmU3NGQ5YTQ5MzgwZmMwNjBmZjgzNDBmMWUyZDZkMjQ1
MDQ3MGY5MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaApAQCAtMjUsOSArMjUsOSBAQAogCiAj
aW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkU3RyaW5n
LmgiCi0jaW5jbHVkZSAiU1ZHRWxlbWVudFR5cGVIZWxwZXJzLmgiCiAjaW5jbHVkZSAiU1ZHTGFu
Z1NwYWNlLmgiCiAjaW5jbHVkZSAiU1ZHTG9jYXRhYmxlLmgiCisjaW5jbHVkZSAiU1ZHTmFtZXMu
aCIKICNpbmNsdWRlICJTVkdQYXJzaW5nRXJyb3IuaCIKICNpbmNsdWRlICJTVkdQcm9wZXJ0eUlu
Zm8uaCIKICNpbmNsdWRlICJTdHlsZWRFbGVtZW50LmgiCkBAIC0yMjUsNyArMjI1LDExIEBAIHN0
cnVjdCBTVkdBdHRyaWJ1dGVIYXNoVHJhbnNsYXRvciB7CiAKIHZvaWQgaXNTVkdFbGVtZW50KGNv
bnN0IFNWR0VsZW1lbnQmKTsgLy8gQ2F0Y2ggdW5uZWNlc3NhcnkgcnVudGltZSBjaGVjayBvZiB0
eXBlIGtub3duIGF0IGNvbXBpbGUgdGltZS4KIGlubGluZSBib29sIGlzU1ZHRWxlbWVudChjb25z
dCBOb2RlJiBub2RlKSB7IHJldHVybiBub2RlLmlzU1ZHRWxlbWVudCgpOyB9Ci10ZW1wbGF0ZSA8
PiBpbmxpbmUgYm9vbCBpc0VsZW1lbnRPZlR5cGU8Y29uc3QgU1ZHRWxlbWVudD4oY29uc3QgRWxl
bWVudCYgZWxlbWVudCkgeyByZXR1cm4gZWxlbWVudC5pc1NWR0VsZW1lbnQoKTsgfQorCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgQXJnVHlwZT4KK3N0cnVjdCBJc0VsZW1lbnRPZlR5cGU8Y29uc3QgU1ZH
RWxlbWVudCwgQXJnVHlwZT4geworICAgIGJvb2wgb3BlcmF0b3IoKShBcmdUeXBlJiBub2RlKSB7
IHJldHVybiBpc1NWR0VsZW1lbnQobm9kZSk7IH0KK307CiAKIE5PREVfVFlQRV9DQVNUUyhTVkdF
bGVtZW50KQogCkBAIC0yMzQsNiArMjM4LDggQEAgaW5saW5lIGJvb2wgTm9kZTo6aGFzVGFnTmFt
ZShjb25zdCBTVkdRdWFsaWZpZWROYW1lJiBuYW1lKSBjb25zdAogICAgIHJldHVybiBpc1NWR0Vs
ZW1lbnQoKSAmJiB0b1NWR0VsZW1lbnQoKnRoaXMpLmhhc1RhZ05hbWUobmFtZSk7CiB9CiAKLX0K
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2luY2x1ZGUgIlNWR0VsZW1lbnRUeXBlSGVscGVy
cy5oIgogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQ
cmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0
ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaAppbmRleCA1ZmRjYjY2NDI0YzZlNDJiMDU0
YmI0M2FiOGFmMzkxM2ZlYjBhNThjLi40YjYwZTI3Nzg5MmMzYTE2MDY1YzQ5ZDBiZmNjM2RhZjk4
MWY2ODQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZl
U3RhbmRhcmRBdHRyaWJ1dGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclBy
aW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oCkBAIC04NSw3ICs4NSwxMSBAQCB2b2lkIGludmFs
aWRhdGVGaWx0ZXJQcmltaXRpdmVQYXJlbnQoU1ZHRWxlbWVudCopOwogdm9pZCBpc1NWR0ZpbHRl
clByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyhjb25zdCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFu
ZGFyZEF0dHJpYnV0ZXMmKTsgLy8gQ2F0Y2ggdW5uZWNlc3NhcnkgcnVudGltZSBjaGVjayBvZiB0
eXBlIGtub3duIGF0IGNvbXBpbGUgdGltZS4KIGlubGluZSBib29sIGlzU1ZHRmlsdGVyUHJpbWl0
aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKGNvbnN0IFNWR0VsZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJu
IGVsZW1lbnQuaXNGaWx0ZXJFZmZlY3QoKTsgfQogaW5saW5lIGJvb2wgaXNTVkdGaWx0ZXJQcmlt
aXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMoY29uc3QgTm9kZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5p
c1NWR0VsZW1lbnQoKSAmJiB0b1NWR0VsZW1lbnQobm9kZSkuaXNGaWx0ZXJFZmZlY3QoKTsgfQot
dGVtcGxhdGUgPD4gaW5saW5lIGJvb2wgaXNFbGVtZW50T2ZUeXBlPGNvbnN0IFNWR0ZpbHRlclBy
aW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcz4oY29uc3QgRWxlbWVudCYgZWxlbWVudCkgeyByZXR1
cm4gaXNTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMoZWxlbWVudCk7IH0KKwor
dGVtcGxhdGUgPHR5cGVuYW1lIEFyZ1R5cGU+CitzdHJ1Y3QgSXNFbGVtZW50T2ZUeXBlPGNvbnN0
IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcywgQXJnVHlwZT4geworICAgIGJv
b2wgb3BlcmF0b3IoKShBcmdUeXBlJiBub2RlKSB7IHJldHVybiBpc1NWR0ZpbHRlclByaW1pdGl2
ZVN0YW5kYXJkQXR0cmlidXRlcyhub2RlKTsgfQorfTsKIAogTk9ERV9UWVBFX0NBU1RTKFNWR0Zp
bHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcykKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3Zn
L2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5oCmluZGV4IDFlZWYzMTg2ZDJlZjFlNzNhNzVlZTVl
YzQyMzc0Njg4OTliMGYyNzkuLjQwMDQ3ZDEwOTM3OWIxYzNiMDlhNTg1Nzk5OWMzNzcwMDZjMGI0
ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmgK
QEAgLTI0MCw3ICsyNDAsMTIgQEAgcHJpdmF0ZToKIHZvaWQgaXNTVkdTTUlMRWxlbWVudChjb25z
dCBTVkdTTUlMRWxlbWVudCYpOyAvLyBDYXRjaCB1bm5lY2Vzc2FyeSBydW50aW1lIGNoZWNrIG9m
IHR5cGUga25vd24gYXQgY29tcGlsZSB0aW1lLgogaW5saW5lIGJvb2wgaXNTVkdTTUlMRWxlbWVu
dChjb25zdCBTVkdFbGVtZW50JiBlbGVtZW50KSB7IHJldHVybiBlbGVtZW50LmlzU01JTEVsZW1l
bnQoKTsgfQogaW5saW5lIGJvb2wgaXNTVkdTTUlMRWxlbWVudChjb25zdCBOb2RlJiBub2RlKSB7
IHJldHVybiBub2RlLmlzU1ZHRWxlbWVudCgpICYmIHRvU1ZHRWxlbWVudChub2RlKS5pc1NNSUxF
bGVtZW50KCk7IH0KLXRlbXBsYXRlIDw+IGlubGluZSBib29sIGlzRWxlbWVudE9mVHlwZTxjb25z
dCBTVkdTTUlMRWxlbWVudD4oY29uc3QgRWxlbWVudCYgZWxlbWVudCkgeyByZXR1cm4gaXNTVkdT
TUlMRWxlbWVudChlbGVtZW50KTsgfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQXJnVHlwZT4KK3N0
cnVjdCBJc0VsZW1lbnRPZlR5cGU8Y29uc3QgU1ZHU01JTEVsZW1lbnQsIEFyZ1R5cGU+IHsKKyAg
ICBib29sIG9wZXJhdG9yKCkoQXJnVHlwZSYgbm9kZSkgeyByZXR1cm4gaXNTVkdTTUlMRWxlbWVu
dChub2RlKTsgfQorfTsKKwogCiBOT0RFX1RZUEVfQ0FTVFMoU1ZHU01JTEVsZW1lbnQpCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>238128</attachid>
            <date>2014-09-15 07:54:15 -0700</date>
            <delta_ts>2014-09-15 08:14:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-136719-20140915075412.patch</filename>
            <type>text/plain</type>
            <size>27264</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTczNjIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWRlMzRlYzc0Y2I4Y2Nk
ZDM3Mzg0ZDkwMDE5NzY2MDY1ZjkwZjY5OS4uMmEzMTU4ZDY0YmJmOTI0OTEwM2Q0MzkxYjE5NzU0
NjkxZTEwOGZkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzMyBAQAorMjAxNC0wOS0xNSAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEF2b2lkIHJlZHVuZGFudCBp
c0VsZW1lbnROb2RlKCkgY2hlY2tzIGluIFRyYXZlcnNhbDxIVE1MKkVsZW1lbnQ+IC8gVHJhdmVy
c2FsPFNWRypFbGVtZW50PgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTM2NzE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAg
ICAgICAgQXZvaWQgcmVkdW5kYW50IGlzRWxlbWVudE5vZGUoKSBjaGVja3MgaW4gVHJhdmVyc2Fs
PEhUTUwqRWxlbWVudD4gLworICAgICAgICBUcmF2ZXJzYWw8U1ZHKkVsZW1lbnQ+LiAgV2UgdXNl
ZCB0byBpdGVyYXRlIHRocm91Z2ggRWxlbWVudHMsIGFuZCB0aGVuCisgICAgICAgIGNhbGwgaXNF
bGVtZW50T2ZUeXBlPEhUTUwqRWxlbWVudD4oKSAgb24gZWFjaCBFbGVtZW50LiBUaGlzIG1hZGUg
c2Vuc2UKKyAgICAgICAgYmVjYXVzZSBoYXNUYWdOYW1lKCkgdXNlZCB0byBiZSBkZWZpbmVkIG9u
IEVsZW1lbnQuIEhvd2V2ZXIsIGFmdGVyCisgICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcv
Y2hhbmdlc2V0LzE2NTY5OSwgaGFzVGFnTmFtZSgpIGlzIG5vdyBkZWZpbmVkIG9uCisgICAgICAg
IE5vZGUgZm9yIEhUTUxRdWFsaWZpZWROYW1lIC8gU1ZHUXVhbGlmaWVkTmFtZSBhcmd1bWVudHMu
CisKKyAgICAgICAgTm9kZTo6aGFzVGFnTmFtZShIVE1MUXVhbGlmaWVkTmFtZSkgYmFzaWNhbGx5
IGRvZXMgdGhlIGZvbGxvd2luZyBjaGVjaworICAgICAgICAiaXNIVE1MRWxlbWVudCgpICYmICB0
b0hUTUxFbGVtZW50KCp0aGlzKS5oYXNUYWdOYW1lKHRhZ05hbWUpIi4gQXMgYQorICAgICAgICBj
b25zZXF1ZW5jZSwgZG9pbmcgYW4gaXNFbGVtZW50Tm9kZSgpIGNoZWNrIGlzIG5vdyByZWR1bmRh
bnQgYXMKKyAgICAgICAgaXNIVE1MRWxlbWVudCgpIGlzIGRlZmluZWQgb24gTm9kZS4KKworICAg
ICAgICBUaGlzIHBhdGNoIGFkZHMgYSB0ZW1wbGF0ZSBwYXJhbWV0ZXIgdG8gaXNFbGVtZW50T2ZU
eXBlKCkgc28gdGhhdCBpdCBjYW4KKyAgICAgICAgdGFrZSBhbnkgdHlwZSBpbiBhcmd1bWVudCAo
cGFydGljdWxhbHkgTm9kZSwgRWxlbWVudCwgSFRNTEVsZW1lbnQsCisgICAgICAgIFNWR0VsZW1l
bnQsIE1hdGhNTEVsZW1lbnQpLCBub3QganVzdCBhbiBFbGVtZW50LiBJIGhhZCB0byBhZGQgYW4K
KyAgICAgICAgSXNFbGVtZW50T2ZUeXBlIGZ1bmN0b3IgdG8gc3VwcG9ydCBwYXJ0aWFsIHNwZWNp
YWxpemF0aW9uIGFzIEMrKyBkb2VzIG5vdAorICAgICAgICBzdXBwb3J0IHBhcnRpYWwgc3BlY2lh
bGl6YXRpb24gb2YgdGVtcGxhdGUgZnVuY3Rpb25zLgorICAgICAgICBUaGlzIHBhdGNoIGFsc28g
dXBkYXRlcyBUcmF2ZXJzYWw8RWxlbWVudFR5cGU+IHNvIHRoYXQgdGhlIG1ldGhvZHMgdXNlCisg
ICAgICAgIE5vZGVUcmF2ZXJzYWwgaW50ZXJuYWxseSBpbnN0ZWFkIG9mIFRyYXZlcnNhbDxFbGVt
ZW50VHlwZT4uIEFzIGEgcmVzdWx0LAorICAgICAgICB3ZSBub3cgaXRlcmF0ZSBvdmVyIE5vZGVz
IChub3QgRWxlbWVudHMpIGFuZCBjYWxsIHRoZSBuZXcKKyAgICAgICAgaXNFbGVtZW50T2ZUeXBl
PEVsZW1lbnRUeXBlPihOb2RlKSBoZWxwZXJzICh3aGljaCBhcmUgZWZmaWNpZW50IGFmdGVyCisg
ICAgICAgIHIxNjU2OTkpLgorCisgICAgICAgIEJlZm9yZSB0aGUgcGF0Y2gsIHRoZSBjb2RlIGVu
ZGVkIHVwIGRvaW5nIHRoZSBmb2xsb3dpbmcgY2hlY2tzIGZvcgorICAgICAgICBUcmF2ZXJzYWw8
SFRNTCplbGVtZW50PjoKKyAgICAgICAgbm9kZS5pc0VsZW1lbnROb2RlKCkgJiYgdG9FbGVtZW50
KG5vZGUpLmlzSFRNTEVsZW1lbnQoKQorICAgICAgICAgICAgJiYgdG9IVE1MRWxlbWVudChub2Rl
KS5oYXNUYWdOYW1lKEhUTUxOYW1lczo6Zm9vVGFnKQorCisgICAgICAgIEFmdGVyIHRoZSBwYXRj
aCwgdGhlIGNvZGUgb25seSBkb2VzOgorICAgICAgICBub2RlLmlzSFRNTEVsZW1lbnQoKQorICAg
ICAgICAgICAgJiYgdG9IVE1MRWxlbWVudChub2RlKS5oYXNUYWdOYW1lKEhUTUxOYW1lczo6Zm9v
VGFnKQorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgbm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAg
ICAgICogZG9tL0VsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ+KToKKyAgICAg
ICAgKFdlYkNvcmU6OmlzRWxlbWVudE9mVHlwZSk6CisgICAgICAgIEFkZCB0ZW1wbGF0ZSBwYXJh
bWV0ZXIgdG8gaXNFbGVtZW50T2ZUeXBlKCkgZnVuY3Rpb24gc28gdGhhdCBpdCBjYW4KKyAgICAg
ICAgaGFuZGxlIGFueSBhcmd1bWVudCB0eXBlLCBub3QganVzdCBFbGVtZW50cy4gQWxzbyBpbnRy
b2R1Y2UgYW4KKyAgICAgICAgSXNFbGVtZW50T2ZUeXBlIEZ1bmN0b3IgdGhhdCBpcyBjYWxsZWQg
YnkgaXNFbGVtZW50T2ZUeXBlKCkgZnVuY3Rpb24KKyAgICAgICAgc28gdGhhdCB3ZSBjYW4gc28g
cGFydGlhbCB0ZW1wbGF0ZSBzcGVjaWFsaXphdGlvbi4KKworICAgICAgICAqIGRvbS9FbGVtZW50
VHJhdmVyc2FsLmg6CisgICAgICAgIChXZWJDb3JlOjpUcmF2ZXJzYWw8RWxlbWVudFR5cGU+Ojpm
aXJzdFdpdGhpblRlbXBsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYXZlcnNhbDxFbGVtZW50
VHlwZT46Omxhc3RXaXRoaW5UZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpUcmF2ZXJzYWw8
RWxlbWVudFR5cGU+OjpuZXh0VGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VHJhdmVyc2Fs
PEVsZW1lbnRUeXBlPjo6cHJldmlvdXNUZW1wbGF0ZSk6CisgICAgICAgIFVzZSBOb2RlVHJhdmVy
c2FsIEFQSSBpbnRlcm5hbGx5IGluc3RlYWQgb2YgVHJhdmVyc2FsPEVsZW1lbnQ+IHRvIGF2b2lk
CisgICAgICAgIHJlZHVuZGFudCBpc0VsZW1lbnROb2RlKCkgY2hlY2tzLgorCisgICAgICAgIChX
ZWJDb3JlOjpUcmF2ZXJzYWw8RWxlbWVudD46Omxhc3RXaXRoaW5UZW1wbGF0ZSk6IERlbGV0ZWQu
CisgICAgICAgIFRoZSBjb2RlIGlzIG5vdyBpZGVudGljYWwgdG8gdGhlIGdlbmVyaWMgdmVyc2lv
bi4KKworICAgICAgICAoV2ViQ29yZTo6VHJhdmVyc2FsPEVsZW1lbnQ+OjpwcmV2aW91c1RlbXBs
YXRlKTogRGVsZXRlZC4KKyAgICAgICAgVGhlIGNvZGUgaXMgbm93IGlkZW50aWNhbCB0byB0aGUg
Z2VuZXJpYyB2ZXJzaW9uLgorCisgICAgICAgICogZG9tL21ha2VfbmFtZXMucGw6CisgICAgICAg
IChwcmludFR5cGVIZWxwZXJzKToKKyAgICAgICAgLSBHZW5lcmF0ZSB0ZW1wbGF0ZSBzcGVjaWFs
aXphdGlvbnMgZm9yIElzRWxlbWVudE9mVHlwZSBmdW5jdG9yIGluc3RlYWQKKyAgICAgICAgICBv
ZiBpc0VsZW1lbnRPZlR5cGUoKS4gVGhpcyBhdm9pZHMgaGF2aW5nIHRvIHByb3ZpZGUgb3Zlcmxv
YWRzIGZvcgorICAgICAgICAgIHNwZWNpZmljIGFyZ3VtZW50IHR5cGVzIChlLmcuIE5vZGUsIEVs
ZW1lbnQsIEhUTUxFbGVtZW50LCAuLi4pLgorICAgICAgICAtIFNoYXJlIG1vcmUgY29kZSBiZXR3
ZWVuIEhUTUwgY29kZSBwYXRoIGFuZCB0aGUgb3RoZXIgcGF0aCAoZm9yIFNWRywKKyAgICAgICAg
ICBNVEhNTCkuCisKKyAgICAgICAgKiBodG1sL0hUTUxFbGVtZW50Lmg6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MRWxlbWVudD4pOgorICAgICAgICBQcm92aWRlIEhUTUxFbGVtZW50IHRlbXBsYXRl
IHNwZWNpYWxpemF0aW9uIGZvciBJc0VsZW1lbnRPZlR5cGUgZnVuY3RvcgorICAgICAgICBpbnN0
ZWFkIG9mIGlzRWxlbWVudE9mVHlwZSgpLgorCisgICAgICAgICogaHRtbC9IVE1MRm9ybUNvbnRy
b2xFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50Pik6
CisgICAgICAgIFByb3ZpZGUgSFRNTEZvcm1Db250cm9sRWxlbWVudCB0ZW1wbGF0ZSBzcGVjaWFs
aXphdGlvbiBmb3IgSXNFbGVtZW50T2ZUeXBlCisgICAgICAgIGZ1bmN0b3IgaW5zdGVhZCBvZiBp
c0VsZW1lbnRPZlR5cGUoKS4KKworICAgICAgICAqIGh0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2Uu
aDoKKyAgICAgICAgKFdlYkNvcmU6OmlzSFRNTEZyYW1lRWxlbWVudEJhc2UpOgorICAgICAgICAt
IFJlbW92ZSBoZWxwZXIgdGFraW5nIGFuIEVsZW1lbnQgaW4gYXJndW1lbnQgYXMgaXQgZG9lcyBu
b3QgYnJpbmcgYW55CisgICAgICAgICAgYmVuZWZpdC4gSW5zdGVhZCwgdXBkYXRlIHRoZSBvdmVy
bG9hZCB0YWtpbmcgYSBOb2RlIGluIGFyZ3VtZW50IHRvCisgICAgICAgICAgcmVtb3ZlIHRoZSB1
bm5lY2Vzc2FyeSBpc0VsZW1lbnROb2RlKCkgY2hlY2sgYXMgaXNIVE1MRnJhbWVFbGVtZW50KE5v
ZGUpCisgICAgICAgICAgaXMgbm93IGVmZmljaWVudC4KKyAgICAgICAgLSBBZGQgYW4gb3Zlcmxv
YWQgdGFraW5nIGFuIEhUTUxFbGVtZW50IGluIGFyZ3VtZW50IHNvIHRoYXQgd2UgY2FuIGJ5cGFz
cworICAgICAgICAgIHRoZSBpc0hUTUxFbGVtZW50KCkgY2hlY2sgd2hlbiB3ZSBrbm93IHRoZSBp
bnB1dCBpcyBhbiBIVE1MRWxlbWVudC4KKworICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVu
dC5oOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudD4pOgorICAgICAgICBQcm92
aWRlIEhUTUxNZWRpYUVsZW1lbnQgdGVtcGxhdGUgc3BlY2lhbGl6YXRpb24gZm9yIElzRWxlbWVu
dE9mVHlwZQorICAgICAgICBmdW5jdG9yIGluc3RlYWQgb2YgaXNFbGVtZW50T2ZUeXBlKCkuCisK
KyAgICAgICAgKiBodG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ+KToKKyAgICAgICAgUHJvdmlkZSBIVE1MUGx1Z0lu
SW1hZ2VFbGVtZW50IHRlbXBsYXRlIHNwZWNpYWxpemF0aW9uIGZvciBJc0VsZW1lbnRPZlR5cGUK
KyAgICAgICAgZnVuY3RvciBpbnN0ZWFkIG9mIGlzRWxlbWVudE9mVHlwZSgpLgorCisgICAgICAg
ICogaHRtbC9MYWJlbGFibGVFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpMYWJlbGFibGVF
bGVtZW50Pik6CisgICAgICAgIFByb3ZpZGUgTGFiZWxhYmxlRWxlbWVudCB0ZW1wbGF0ZSBzcGVj
aWFsaXphdGlvbiBmb3IgSXNFbGVtZW50T2ZUeXBlCisgICAgICAgIGZ1bmN0b3IgaW5zdGVhZCBv
ZiBpc0VsZW1lbnRPZlR5cGUoKS4KKworICAgICAgICAqIG1hdGhtbC9NYXRoTUxFbGVtZW50Lmg6
CisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxFbGVtZW50Pik6CisgICAgICAgIFByb3ZpZGUgTWF0
aE1MRWxlbWVudCB0ZW1wbGF0ZSBzcGVjaWFsaXphdGlvbiBmb3IgSXNFbGVtZW50T2ZUeXBlCisg
ICAgICAgIGZ1bmN0b3IgZm9yIGNvbnNpc3RlbmN5IHdpdGggSFRNTEVsZW1lbnQgLyBTVkdFbGVt
ZW50LgorCisgICAgICAgICogc3ZnL1NWR0VsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0VsZW1lbnQ+KToKKyAgICAgICAgLSBQcm92aWRlIFNWR0VsZW1lbnQgdGVtcGxhdGUgc3BlY2lh
bGl6YXRpb24gZm9yIElzRWxlbWVudE9mVHlwZSBmdW5jdG9yCisgICAgICAgICAgaW5zdGVhZCBv
ZiBpc0VsZW1lbnRPZlR5cGUoKS4KKyAgICAgICAgLSBpbmNsdWRlIFNWR0VsZW1lbnRUeXBlSGVs
cGVycy5oIGF0IHRoZSBlbmQgb2YgdGhlIGZpbGUgKHNpbWlsYXJseSB0bworICAgICAgICAgIHdo
YXQgaXMgYWxyZWFkeSBkb25lIGluIEhUTUxFbGVtZW50LmggYmVjYXVzZQorICAgICAgICAgIGlz
RWxlbWVudE9mVHlwZShjb25zdCBTVkdFbGVtZW50JikgbmVlZHMgdG8gYmUgZGVmaWVuZCBiZWNh
dXNlIHRoZQorICAgICAgICAgIGluY2x1ZGUuCisKKyAgICAgICAgKiBzdmcvU1ZHRmlsdGVyUHJp
bWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJQ
cmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM+KToKKyAgICAgICAgUHJvdmlkZSBTVkdGaWx0ZXJQ
cmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgdGVtcGxhdGUgc3BlY2lhbGl6YXRpb24gZm9yCisg
ICAgICAgIElzRWxlbWVudE9mVHlwZSBmdW5jdG9yIGluc3RlYWQgb2YgaXNFbGVtZW50T2ZUeXBl
KCkuCisKKyAgICAgICAgKiBzdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50Lmg6CisgICAgICAg
IChXZWJDb3JlOjpTVkdTTUlMRWxlbWVudD4pOgorICAgICAgICBQcm92aWRlIFNWR1NNSUxFbGVt
ZW50IHRlbXBsYXRlIHNwZWNpYWxpemF0aW9uIGZvciBJc0VsZW1lbnRPZlR5cGUKKyAgICAgICAg
ZnVuY3RvciBpbnN0ZWFkIG9mIGlzRWxlbWVudE9mVHlwZSgpLgorCisKIDIwMTQtMDgtMDcgIFNl
cmdpbyBWaWxsYXIgU2VuaW4gIDxzdmlsbGFyQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0NTUyBH
cmlkIExheW91dF0gU29ydCBpdGVtcyBieSBzcGFuIHdoZW4gcmVzb2x2aW5nIGNvbnRlbnQtYmFz
ZWQgdHJhY2sgc2l6aW5nIGZ1bmN0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKaW5kZXggNzRjMmZiYjhl
OWEwZWRjZDlmN2IzZTMwNTU0MzI3ODJmZWI2NmQ4NC4uOWEyZDM3Mzk4OTM4YzJkZDc4ZmRiNDJi
MmU4NDhjYjc0NzhlYTgyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCkBAIC02NzAsOSArNjcwLDI0IEBA
IGlubGluZSBib29sIGlzRWxlbWVudChjb25zdCBOb2RlJiBub2RlKSB7IHJldHVybiBub2RlLmlz
RWxlbWVudE5vZGUoKTsgfQogCiBOT0RFX1RZUEVfQ0FTVFMoRWxlbWVudCkKIAotdGVtcGxhdGUg
PHR5cGVuYW1lIFR5cGU+IGJvb2wgaXNFbGVtZW50T2ZUeXBlKGNvbnN0IEVsZW1lbnQmKTsKLXRl
bXBsYXRlIDx0eXBlbmFtZSBUeXBlPiBpbmxpbmUgYm9vbCBpc0VsZW1lbnRPZlR5cGUoY29uc3Qg
Tm9kZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5pc0VsZW1lbnROb2RlKCkgJiYgaXNFbGVtZW50T2ZU
eXBlPGNvbnN0IFR5cGU+KHRvRWxlbWVudChub2RlKSk7IH0KLXRlbXBsYXRlIDw+IGlubGluZSBi
b29sIGlzRWxlbWVudE9mVHlwZTxjb25zdCBFbGVtZW50Pihjb25zdCBFbGVtZW50JikgeyByZXR1
cm4gdHJ1ZTsgfQordGVtcGxhdGUgPHR5cGVuYW1lIEV4cGVjdGVkVHlwZSwgdHlwZW5hbWUgQXJn
VHlwZT4KK3N0cnVjdCBJc0VsZW1lbnRPZlR5cGUgeworICAgIGJvb2wgb3BlcmF0b3IoKShBcmdU
eXBlJik7Cit9OworCisvLyBUaGlzIGlzIG5lZWRlZCBzbyB0aGF0IHRoZSBjb21waWxlciBjYW4g
ZGVkdWNlIHRoZSBzZWNvbmQgdGVtcGxhdGUgcGFyYW1ldGVyIChBcmdUeXBlKS4KK3RlbXBsYXRl
IDx0eXBlbmFtZSBFeHBlY3RlZFR5cGUsIHR5cGVuYW1lIEFyZ1R5cGU+CitpbmxpbmUgYm9vbCBp
c0VsZW1lbnRPZlR5cGUoY29uc3QgQXJnVHlwZSYgbm9kZSkgeyByZXR1cm4gSXNFbGVtZW50T2ZU
eXBlPEV4cGVjdGVkVHlwZSwgY29uc3QgQXJnVHlwZT4oKShub2RlKTsgfQorCit0ZW1wbGF0ZSA8
Pgorc3RydWN0IElzRWxlbWVudE9mVHlwZTxjb25zdCBFbGVtZW50LCBjb25zdCBOb2RlPiB7Cisg
ICAgYm9vbCBvcGVyYXRvcigpKGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJuIG5vZGUuaXNFbGVt
ZW50Tm9kZSgpOyB9Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRXhwZWN0ZWRUeXBlPgorc3Ry
dWN0IElzRWxlbWVudE9mVHlwZTxFeHBlY3RlZFR5cGUsIEV4cGVjdGVkVHlwZT4geworICAgIGJv
b2wgb3BlcmF0b3IoKShFeHBlY3RlZFR5cGUmKSB7IHJldHVybiB0cnVlOyB9Cit9OwogCiBpbmxp
bmUgYm9vbCBOb2RlOjpoYXNBdHRyaWJ1dGVzKCkgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50VHJhdmVyc2FsLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudFRyYXZlcnNhbC5oCmluZGV4IGEwM2I5NmQxMThjOGFiOGJjOTllMTJhM2Y4MDc5OTI2NThi
MzRmNjkuLmZlNjc5ODMwZDY1NjVjYzkxMjhmYTkzNTc4N2NkZmYxNTdlNjIzZjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50VHJhdmVyc2FsLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnRUcmF2ZXJzYWwuaApAQCAtOTIsMTYgKzkyLDYgQEAgaW5saW5lIEVs
ZW1lbnQqIFRyYXZlcnNhbDxFbGVtZW50Pjo6Zmlyc3RXaXRoaW5UZW1wbGF0ZShDdXJyZW50VHlw
ZSogY3VycmVudCkKIAogdGVtcGxhdGUgPD4KIHRlbXBsYXRlIDx0eXBlbmFtZSBDdXJyZW50VHlw
ZT4KLWlubGluZSBFbGVtZW50KiBUcmF2ZXJzYWw8RWxlbWVudD46Omxhc3RXaXRoaW5UZW1wbGF0
ZShDdXJyZW50VHlwZSogY3VycmVudCkKLXsKLSAgICBOb2RlKiBub2RlID0gTm9kZVRyYXZlcnNh
bDo6bGFzdChjdXJyZW50KTsKLSAgICB3aGlsZSAobm9kZSAmJiAhbm9kZS0+aXNFbGVtZW50Tm9k
ZSgpKQotICAgICAgICBub2RlID0gTm9kZVRyYXZlcnNhbDo6cHJldmlvdXMobm9kZSwgY3VycmVu
dCk7Ci0gICAgcmV0dXJuIHRvRWxlbWVudChub2RlKTsKLX0KLQotdGVtcGxhdGUgPD4KLXRlbXBs
YXRlIDx0eXBlbmFtZSBDdXJyZW50VHlwZT4KIGlubGluZSBFbGVtZW50KiBUcmF2ZXJzYWw8RWxl
bWVudD46Om5leHRUZW1wbGF0ZShDdXJyZW50VHlwZSogY3VycmVudCkKIHsKICAgICBOb2RlKiBu
b2RlID0gTm9kZVRyYXZlcnNhbDo6bmV4dChjdXJyZW50KTsKQEAgLTEyMCwyNCArMTEwLDYgQEAg
aW5saW5lIEVsZW1lbnQqIFRyYXZlcnNhbDxFbGVtZW50Pjo6bmV4dFRlbXBsYXRlKEN1cnJlbnRU
eXBlKiBjdXJyZW50LCBjb25zdCBOb2QKICAgICByZXR1cm4gdG9FbGVtZW50KG5vZGUpOwogfQog
Ci10ZW1wbGF0ZSA8PgotaW5saW5lIEVsZW1lbnQqIFRyYXZlcnNhbDxFbGVtZW50Pjo6cHJldmlv
dXMoY29uc3QgTm9kZSogY3VycmVudCkKLXsKLSAgICBOb2RlKiBub2RlID0gTm9kZVRyYXZlcnNh
bDo6cHJldmlvdXMoY3VycmVudCk7Ci0gICAgd2hpbGUgKG5vZGUgJiYgIW5vZGUtPmlzRWxlbWVu
dE5vZGUoKSkKLSAgICAgICAgbm9kZSA9IE5vZGVUcmF2ZXJzYWw6OnByZXZpb3VzKG5vZGUpOwot
ICAgIHJldHVybiB0b0VsZW1lbnQobm9kZSk7Ci19Ci0KLXRlbXBsYXRlIDw+Ci1pbmxpbmUgRWxl
bWVudCogVHJhdmVyc2FsPEVsZW1lbnQ+OjpwcmV2aW91cyhjb25zdCBOb2RlKiBjdXJyZW50LCBj
b25zdCBOb2RlKiBzdGF5V2l0aGluKQotewotICAgIE5vZGUqIG5vZGUgPSBOb2RlVHJhdmVyc2Fs
OjpwcmV2aW91cyhjdXJyZW50LCBzdGF5V2l0aGluKTsKLSAgICB3aGlsZSAobm9kZSAmJiAhbm9k
ZS0+aXNFbGVtZW50Tm9kZSgpKQotICAgICAgICBub2RlID0gTm9kZVRyYXZlcnNhbDo6cHJldmlv
dXMobm9kZSwgc3RheVdpdGhpbik7Ci0gICAgcmV0dXJuIHRvRWxlbWVudChub2RlKTsKLX0KLQog
Ly8gR2VuZXJpYyB2ZXJzaW9ucy4KIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KIHRl
bXBsYXRlIDx0eXBlbmFtZSBDdXJyZW50VHlwZT4KQEAgLTE2Myw1OCArMTM1LDU4IEBAIHRlbXBs
YXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KIHRlbXBsYXRlIDx0eXBlbmFtZSBDdXJyZW50VHlw
ZT4KIGlubGluZSBFbGVtZW50VHlwZSogVHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6Zmlyc3RXaXRo
aW5UZW1wbGF0ZShDdXJyZW50VHlwZSogY3VycmVudCkKIHsKLSAgICBFbGVtZW50KiBlbGVtZW50
ID0gVHJhdmVyc2FsPEVsZW1lbnQ+OjpmaXJzdFdpdGhpbihjdXJyZW50KTsKLSAgICB3aGlsZSAo
ZWxlbWVudCAmJiAhaXNFbGVtZW50T2ZUeXBlPGNvbnN0IEVsZW1lbnRUeXBlPigqZWxlbWVudCkp
Ci0gICAgICAgIGVsZW1lbnQgPSBUcmF2ZXJzYWw8RWxlbWVudD46Om5leHQoZWxlbWVudCwgY3Vy
cmVudCk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEVsZW1lbnRUeXBlKj4oZWxlbWVudCk7Cisg
ICAgTm9kZSogbm9kZSA9IGN1cnJlbnQtPmZpcnN0Q2hpbGQoKTsKKyAgICB3aGlsZSAobm9kZSAm
JiAhaXNFbGVtZW50T2ZUeXBlPGNvbnN0IEVsZW1lbnRUeXBlPigqbm9kZSkpCisgICAgICAgIG5v
ZGUgPSBOb2RlVHJhdmVyc2FsOjpuZXh0KG5vZGUsIGN1cnJlbnQpOworICAgIHJldHVybiBzdGF0
aWNfY2FzdDxFbGVtZW50VHlwZSo+KG5vZGUpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxl
bWVudFR5cGU+CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ3VycmVudFR5cGU+CiBpbmxpbmUgRWxlbWVu
dFR5cGUqIFRyYXZlcnNhbDxFbGVtZW50VHlwZT46Omxhc3RXaXRoaW5UZW1wbGF0ZShDdXJyZW50
VHlwZSogY3VycmVudCkKIHsKLSAgICBFbGVtZW50KiBlbGVtZW50ID0gVHJhdmVyc2FsPEVsZW1l
bnQ+OjpsYXN0V2l0aGluKGN1cnJlbnQpOwotICAgIHdoaWxlIChlbGVtZW50ICYmICFpc0VsZW1l
bnRPZlR5cGU8Y29uc3QgRWxlbWVudFR5cGU+KCplbGVtZW50KSkKLSAgICAgICAgZWxlbWVudCA9
IFRyYXZlcnNhbDxFbGVtZW50Pjo6cHJldmlvdXMoZWxlbWVudCwgY3VycmVudCk7Ci0gICAgcmV0
dXJuIHN0YXRpY19jYXN0PEVsZW1lbnRUeXBlKj4oZWxlbWVudCk7CisgICAgTm9kZSogbm9kZSA9
IE5vZGVUcmF2ZXJzYWw6Omxhc3QoY3VycmVudCk7CisgICAgd2hpbGUgKG5vZGUgJiYgIWlzRWxl
bWVudE9mVHlwZTxjb25zdCBFbGVtZW50VHlwZT4oKm5vZGUpKQorICAgICAgICBub2RlID0gTm9k
ZVRyYXZlcnNhbDo6cHJldmlvdXMobm9kZSwgY3VycmVudCk7CisgICAgcmV0dXJuIHN0YXRpY19j
YXN0PEVsZW1lbnRUeXBlKj4obm9kZSk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50
VHlwZT4KIHRlbXBsYXRlIDx0eXBlbmFtZSBDdXJyZW50VHlwZT4KIGlubGluZSBFbGVtZW50VHlw
ZSogVHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6bmV4dFRlbXBsYXRlKEN1cnJlbnRUeXBlKiBjdXJy
ZW50KQogewotICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBUcmF2ZXJzYWw8RWxlbWVudD46Om5leHQo
Y3VycmVudCk7Ci0gICAgd2hpbGUgKGVsZW1lbnQgJiYgIWlzRWxlbWVudE9mVHlwZTxjb25zdCBF
bGVtZW50VHlwZT4oKmVsZW1lbnQpKQotICAgICAgICBlbGVtZW50ID0gVHJhdmVyc2FsPEVsZW1l
bnQ+OjpuZXh0KGVsZW1lbnQpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxFbGVtZW50VHlwZSo+
KGVsZW1lbnQpOworICAgIE5vZGUqIG5vZGUgPSBOb2RlVHJhdmVyc2FsOjpuZXh0KGN1cnJlbnQp
OworICAgIHdoaWxlIChub2RlICYmICFpc0VsZW1lbnRPZlR5cGU8Y29uc3QgRWxlbWVudFR5cGU+
KCpub2RlKSkKKyAgICAgICAgbm9kZSA9IE5vZGVUcmF2ZXJzYWw6Om5leHQobm9kZSk7CisgICAg
cmV0dXJuIHN0YXRpY19jYXN0PEVsZW1lbnRUeXBlKj4obm9kZSk7CiB9CiAKIHRlbXBsYXRlIDx0
eXBlbmFtZSBFbGVtZW50VHlwZT4KIHRlbXBsYXRlIDx0eXBlbmFtZSBDdXJyZW50VHlwZT4KIGlu
bGluZSBFbGVtZW50VHlwZSogVHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6bmV4dFRlbXBsYXRlKEN1
cnJlbnRUeXBlKiBjdXJyZW50LCBjb25zdCBOb2RlKiBzdGF5V2l0aGluKQogewotICAgIEVsZW1l
bnQqIGVsZW1lbnQgPSBUcmF2ZXJzYWw8RWxlbWVudD46Om5leHQoY3VycmVudCwgc3RheVdpdGhp
bik7Ci0gICAgd2hpbGUgKGVsZW1lbnQgJiYgIWlzRWxlbWVudE9mVHlwZTxjb25zdCBFbGVtZW50
VHlwZT4oKmVsZW1lbnQpKQotICAgICAgICBlbGVtZW50ID0gVHJhdmVyc2FsPEVsZW1lbnQ+Ojpu
ZXh0KGVsZW1lbnQsIHN0YXlXaXRoaW4pOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxFbGVtZW50
VHlwZSo+KGVsZW1lbnQpOworICAgIE5vZGUqIG5vZGUgPSBOb2RlVHJhdmVyc2FsOjpuZXh0KGN1
cnJlbnQsIHN0YXlXaXRoaW4pOworICAgIHdoaWxlIChub2RlICYmICFpc0VsZW1lbnRPZlR5cGU8
Y29uc3QgRWxlbWVudFR5cGU+KCpub2RlKSkKKyAgICAgICAgbm9kZSA9IE5vZGVUcmF2ZXJzYWw6
Om5leHQobm9kZSwgc3RheVdpdGhpbik7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEVsZW1lbnRU
eXBlKj4obm9kZSk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KIGlubGlu
ZSBFbGVtZW50VHlwZSogVHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6cHJldmlvdXMoY29uc3QgTm9k
ZSogY3VycmVudCkKIHsKLSAgICBFbGVtZW50KiBlbGVtZW50ID0gVHJhdmVyc2FsPEVsZW1lbnQ+
OjpwcmV2aW91cyhjdXJyZW50KTsKLSAgICB3aGlsZSAoZWxlbWVudCAmJiAhaXNFbGVtZW50T2ZU
eXBlPGNvbnN0IEVsZW1lbnRUeXBlPigqZWxlbWVudCkpCi0gICAgICAgIGVsZW1lbnQgPSBUcmF2
ZXJzYWw8RWxlbWVudD46OnByZXZpb3VzKGVsZW1lbnQpOwotICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxFbGVtZW50VHlwZSo+KGVsZW1lbnQpOworICAgIE5vZGUqIG5vZGUgPSBOb2RlVHJhdmVyc2Fs
OjpwcmV2aW91cyhjdXJyZW50KTsKKyAgICB3aGlsZSAobm9kZSAmJiAhaXNFbGVtZW50T2ZUeXBl
PGNvbnN0IEVsZW1lbnRUeXBlPigqbm9kZSkpCisgICAgICAgIG5vZGUgPSBOb2RlVHJhdmVyc2Fs
OjpwcmV2aW91cyhub2RlKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RWxlbWVudFR5cGUqPihu
b2RlKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgogaW5saW5lIEVsZW1l
bnRUeXBlKiBUcmF2ZXJzYWw8RWxlbWVudFR5cGU+OjpwcmV2aW91cyhjb25zdCBOb2RlKiBjdXJy
ZW50LCBjb25zdCBOb2RlKiBzdGF5V2l0aGluKQogewotICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBU
cmF2ZXJzYWw8RWxlbWVudD46OnByZXZpb3VzKGN1cnJlbnQsIHN0YXlXaXRoaW4pOwotICAgIHdo
aWxlIChlbGVtZW50ICYmICFpc0VsZW1lbnRPZlR5cGU8Y29uc3QgRWxlbWVudFR5cGU+KCplbGVt
ZW50KSkKLSAgICAgICAgZWxlbWVudCA9IFRyYXZlcnNhbDxFbGVtZW50Pjo6cHJldmlvdXMoZWxl
bWVudCwgc3RheVdpdGhpbik7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEVsZW1lbnRUeXBlKj4o
ZWxlbWVudCk7CisgICAgTm9kZSogbm9kZSA9IE5vZGVUcmF2ZXJzYWw6OnByZXZpb3VzKGN1cnJl
bnQsIHN0YXlXaXRoaW4pOworICAgIHdoaWxlIChub2RlICYmICFpc0VsZW1lbnRPZlR5cGU8Y29u
c3QgRWxlbWVudFR5cGU+KCpub2RlKSkKKyAgICAgICAgbm9kZSA9IE5vZGVUcmF2ZXJzYWw6OnBy
ZXZpb3VzKG5vZGUsIHN0YXlXaXRoaW4pOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxFbGVtZW50
VHlwZSo+KG5vZGUpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vbWFrZV9uYW1lcy5wbCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9tYWtlX25hbWVzLnBsCmluZGV4IGE0NmYxMGIzYzkwZDczMDNkNjRhZTI5MzRkOWQ2YTM1
MjhjM2FjZGYuLjMxNzEwYTZhMzM5ZTcxZGNiYWYxZjM5MTNkYWUzMmVmOGFlYzZiODkgMTAwNzU1
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9tYWtlX25hbWVzLnBsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9tYWtlX25hbWVzLnBsCkBAIC02NDIsNDAgKzY0MiwyOSBAQCB2b2lkICRjaGVja0hl
bHBlcihjb25zdCAkY2xhc3MqKTsgLy8gQ2F0Y2ggdW5uZWNlc3NhcnkgcnVudGltZSBjaGVjayBv
ZiB0eXBlIGtubwogRU5ECiAgICAgICAgIDsKIAotICAgICAgICBpZiAoJHBhcmFtZXRlcnN7bmFt
ZXNwYWNlfSBlcSAiSFRNTCIpIHsKLSAgICAgICAgICAgIGlmICgkcGFyc2VkVGFnc3skbmFtZX17
d3JhcHBlck9ubHlJZk1lZGlhSXNBdmFpbGFibGV9KSB7Ci0gICAgICAgICAgICAgICAgIyBXZSBu
ZWVkIHRvIGNoZWNrIGZvciBIVE1MVW5rbm93bkVsZW1lbnQgaWYgaXQgbWlnaHQgaGF2ZSBiZWVu
IGNyZWF0ZWQgYnkgdGhlIGZhY3RvcnkuCi0gICAgICAgICAgICAgICAgcHJpbnQgRiA8PEVORAor
ICAgICAgICBpZiAoJHBhcmFtZXRlcnN7bmFtZXNwYWNlfSBlcSAiSFRNTCIgJiYgJHBhcnNlZFRh
Z3N7JG5hbWV9e3dyYXBwZXJPbmx5SWZNZWRpYUlzQXZhaWxhYmxlfSkgeworICAgICAgICAgICAg
IyBXZSBuZWVkIHRvIGNoZWNrIGZvciBIVE1MVW5rbm93bkVsZW1lbnQgaWYgaXQgbWlnaHQgaGF2
ZSBiZWVuIGNyZWF0ZWQgYnkgdGhlIGZhY3RvcnkuCisgICAgICAgICAgICBwcmludCBGIDw8RU5E
CiBpbmxpbmUgYm9vbCAkY2hlY2tIZWxwZXIoY29uc3QgSFRNTEVsZW1lbnQmIGVsZW1lbnQpIHsg
cmV0dXJuICFlbGVtZW50LmlzSFRNTFVua25vd25FbGVtZW50KCkgJiYgZWxlbWVudC5oYXNUYWdO
YW1lKCRwYXJhbWV0ZXJze25hbWVzcGFjZX1OYW1lczo6JHtuYW1lfVRhZyk7IH0KLWlubGluZSBi
b29sICRjaGVja0hlbHBlcihjb25zdCBIVE1MRWxlbWVudCogZWxlbWVudCkgeyBBU1NFUlQoZWxl
bWVudCk7IHJldHVybiAkY2hlY2tIZWxwZXIoKmVsZW1lbnQpOyB9Ci1FTkQKLSAgICAgICAgICAg
ICAgICA7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHByaW50IEYgPDxF
TkQKLWlubGluZSBib29sICRjaGVja0hlbHBlcihjb25zdCBIVE1MRWxlbWVudCYgZWxlbWVudCkg
eyByZXR1cm4gZWxlbWVudC5oYXNUYWdOYW1lKEhUTUxOYW1lczo6JHtuYW1lfVRhZyk7IH0KLWlu
bGluZSBib29sICRjaGVja0hlbHBlcihjb25zdCBIVE1MRWxlbWVudCogZWxlbWVudCkgeyBBU1NF
UlQoZWxlbWVudCk7IHJldHVybiAkY2hlY2tIZWxwZXIoKmVsZW1lbnQpOyB9Ci1FTkQKLSAgICAg
ICAgICAgICAgICA7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBwcmludCBGIDw8
RU5ECiBpbmxpbmUgYm9vbCAkY2hlY2tIZWxwZXIoY29uc3QgTm9kZSYgbm9kZSkgeyByZXR1cm4g
bm9kZS5pc0hUTUxFbGVtZW50KCkgJiYgJGNoZWNrSGVscGVyKHRvSFRNTEVsZW1lbnQobm9kZSkp
OyB9Ci1pbmxpbmUgYm9vbCAkY2hlY2tIZWxwZXIoY29uc3QgTm9kZSogbm9kZSkgeyBBU1NFUlQo
bm9kZSk7IHJldHVybiAkY2hlY2tIZWxwZXIoKm5vZGUpOyB9Ci10ZW1wbGF0ZSA8PiBpbmxpbmUg
Ym9vbCBpc0VsZW1lbnRPZlR5cGU8Y29uc3QgJGNsYXNzPihjb25zdCBIVE1MRWxlbWVudCYgZWxl
bWVudCkgeyByZXR1cm4gJGNoZWNrSGVscGVyKGVsZW1lbnQpOyB9Ci10ZW1wbGF0ZSA8PiBpbmxp
bmUgYm9vbCBpc0VsZW1lbnRPZlR5cGU8Y29uc3QgJGNsYXNzPihjb25zdCBFbGVtZW50JiBlbGVt
ZW50KSB7IHJldHVybiAkY2hlY2tIZWxwZXIoZWxlbWVudCk7IH0KIEVORAotICAgICAgICAgICAg
ICAgIDsKLQorICAgICAgICAgICAgOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgcHJp
bnQgRiA8PEVORAotaW5saW5lIGJvb2wgJGNoZWNrSGVscGVyKGNvbnN0IEVsZW1lbnQmIGVsZW1l
bnQpIHsgcmV0dXJuIGVsZW1lbnQuaGFzVGFnTmFtZSgkcGFyYW1ldGVyc3tuYW1lc3BhY2V9TmFt
ZXM6OiR7bmFtZX1UYWcpOyB9Ci1pbmxpbmUgYm9vbCAkY2hlY2tIZWxwZXIoY29uc3QgRWxlbWVu
dCogZWxlbWVudCkgeyBBU1NFUlQoZWxlbWVudCk7IHJldHVybiAkY2hlY2tIZWxwZXIoKmVsZW1l
bnQpOyB9Ci1pbmxpbmUgYm9vbCAkY2hlY2tIZWxwZXIoY29uc3QgTm9kZSYgbm9kZSkgeyByZXR1
cm4gbm9kZS5pc0VsZW1lbnROb2RlKCkgJiYgJGNoZWNrSGVscGVyKHRvRWxlbWVudChub2RlKSk7
IH0KLWlubGluZSBib29sICRjaGVja0hlbHBlcihjb25zdCBOb2RlKiBub2RlKSB7IEFTU0VSVChu
b2RlKTsgcmV0dXJuIG5vZGUtPmlzRWxlbWVudE5vZGUoKSAmJiAkY2hlY2tIZWxwZXIodG9FbGVt
ZW50KG5vZGUpKTsgfQotdGVtcGxhdGUgPD4gaW5saW5lIGJvb2wgaXNFbGVtZW50T2ZUeXBlPGNv
bnN0ICRjbGFzcz4oY29uc3QgRWxlbWVudCYgZWxlbWVudCkgeyByZXR1cm4gJGNoZWNrSGVscGVy
KGVsZW1lbnQpOyB9CitpbmxpbmUgYm9vbCAkY2hlY2tIZWxwZXIoY29uc3QgJHBhcmFtZXRlcnN7
bmFtZXNwYWNlfUVsZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJuIGVsZW1lbnQuaGFzVGFnTmFtZSgk
cGFyYW1ldGVyc3tuYW1lc3BhY2V9TmFtZXM6OiR7bmFtZX1UYWcpOyB9CitpbmxpbmUgYm9vbCAk
Y2hlY2tIZWxwZXIoY29uc3QgTm9kZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5oYXNUYWdOYW1lKCRw
YXJhbWV0ZXJze25hbWVzcGFjZX1OYW1lczo6JHtuYW1lfVRhZyk7IH0KIEVORAogICAgICAgICAg
ICAgOwogICAgICAgICB9CisgICAgICAgIHByaW50IEYgPDxFTkQKK2lubGluZSBib29sICRjaGVj
a0hlbHBlcihjb25zdCAkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudCogZWxlbWVudCkgeyBB
U1NFUlQoZWxlbWVudCk7IHJldHVybiAkY2hlY2tIZWxwZXIoKmVsZW1lbnQpOyB9CitpbmxpbmUg
Ym9vbCAkY2hlY2tIZWxwZXIoY29uc3QgTm9kZSogbm9kZSkgeyBBU1NFUlQobm9kZSk7IHJldHVy
biAkY2hlY2tIZWxwZXIoKm5vZGUpOyB9Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgQXJnVHlwZT4KK3N0
cnVjdCBJc0VsZW1lbnRPZlR5cGU8Y29uc3QgJGNsYXNzLCBBcmdUeXBlPiB7CisgICAgYm9vbCBv
cGVyYXRvcigpKEFyZ1R5cGUmIG5vZGUpIHsgcmV0dXJuICRjaGVja0hlbHBlcihub2RlKTsgfQor
fTsKK0VORAorICAgICAgICA7CiAKICAgICAgICAgcHJpbnQgRiAiXG4iOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEVsZW1lbnQuaAppbmRleCBiYTU4NzgxNDA5ODQ4ZWY5NTU4ZmE0YzMxYjdmYWVm
NWZkYjY3N2Y5Li44YTJiOTA3NDNiNDMwOTBkNTA5MGMwZDNkOGZjOWUxMjMzZjRlZDNiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oCkBAIC0xNDYsMTIgKzE0NiwxMyBAQCBpbmxpbmUgSFRN
TEVsZW1lbnQ6OkhUTUxFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3Vt
ZW50JiBkb2N1bWVudAogICAgIEFTU0VSVCh0YWdOYW1lLmxvY2FsTmFtZSgpLmltcGwoKSk7CiB9
CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBUeXBlPiBib29sIGlzRWxlbWVudE9mVHlwZShjb25zdCBI
VE1MRWxlbWVudCYpOwotCiB2b2lkIGlzSFRNTEVsZW1lbnQoY29uc3QgSFRNTEVsZW1lbnQmKTsg
Ly8gQ2F0Y2ggdW5uZWNlc3NhcnkgcnVudGltZSBjaGVjayBvZiB0eXBlIGtub3duIGF0IGNvbXBp
bGUgdGltZS4KIGlubGluZSBib29sIGlzSFRNTEVsZW1lbnQoY29uc3QgTm9kZSYgbm9kZSkgeyBy
ZXR1cm4gbm9kZS5pc0hUTUxFbGVtZW50KCk7IH0KLXRlbXBsYXRlIDw+IGlubGluZSBib29sIGlz
RWxlbWVudE9mVHlwZTxjb25zdCBIVE1MRWxlbWVudD4oY29uc3QgSFRNTEVsZW1lbnQmKSB7IHJl
dHVybiB0cnVlOyB9Ci10ZW1wbGF0ZSA8PiBpbmxpbmUgYm9vbCBpc0VsZW1lbnRPZlR5cGU8Y29u
c3QgSFRNTEVsZW1lbnQ+KGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJuIGVsZW1lbnQu
aXNIVE1MRWxlbWVudCgpOyB9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBBcmdUeXBlPgorc3RydWN0
IElzRWxlbWVudE9mVHlwZTxjb25zdCBIVE1MRWxlbWVudCwgQXJnVHlwZT4geworICAgIGJvb2wg
b3BlcmF0b3IoKShBcmdUeXBlJiBub2RlKSB7IHJldHVybiBpc0hUTUxFbGVtZW50KG5vZGUpOyB9
Cit9OwogCiBOT0RFX1RZUEVfQ0FTVFMoSFRNTEVsZW1lbnQpCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgKaW5kZXggYzEwZmNmOGEzNzg3ZWU4ZjhkMGRk
YmU1MTlkOTQ5NTg1YzZiZjU1My4uYjA0Zjk3YzZkOTI1NzcxNzI4MTI0ODQwNTNhNjY4NjE0ZDM4
OTk3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgK
QEAgLTE5Myw3ICsxOTMsMTEgQEAgcHJpdmF0ZToKIHZvaWQgaXNIVE1MRm9ybUNvbnRyb2xFbGVt
ZW50KGNvbnN0IEhUTUxGb3JtQ29udHJvbEVsZW1lbnQmKTsgLy8gQ2F0Y2ggdW5uZWNlc3Nhcnkg
cnVudGltZSBjaGVjayBvZiB0eXBlIGtub3duIGF0IGNvbXBpbGUgdGltZS4KIGlubGluZSBib29s
IGlzSFRNTEZvcm1Db250cm9sRWxlbWVudChjb25zdCBFbGVtZW50JiBlbGVtZW50KSB7IHJldHVy
biBlbGVtZW50LmlzRm9ybUNvbnRyb2xFbGVtZW50KCk7IH0KIGlubGluZSBib29sIGlzSFRNTEZv
cm1Db250cm9sRWxlbWVudChjb25zdCBOb2RlJiBub2RlKSB7IHJldHVybiBub2RlLmlzRWxlbWVu
dE5vZGUoKSAmJiB0b0VsZW1lbnQobm9kZSkuaXNGb3JtQ29udHJvbEVsZW1lbnQoKTsgfQotdGVt
cGxhdGUgPD4gaW5saW5lIGJvb2wgaXNFbGVtZW50T2ZUeXBlPGNvbnN0IEhUTUxGb3JtQ29udHJv
bEVsZW1lbnQ+KGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJuIGlzSFRNTEZvcm1Db250
cm9sRWxlbWVudChlbGVtZW50KTsgfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQXJnVHlwZT4KK3N0
cnVjdCBJc0VsZW1lbnRPZlR5cGU8Y29uc3QgSFRNTEZvcm1Db250cm9sRWxlbWVudCwgQXJnVHlw
ZT4geworICAgIGJvb2wgb3BlcmF0b3IoKShBcmdUeXBlJiBub2RlKSB7IHJldHVybiBpc0hUTUxG
b3JtQ29udHJvbEVsZW1lbnQobm9kZSk7IH0KK307CiAKIE5PREVfVFlQRV9DQVNUUyhIVE1MRm9y
bUNvbnRyb2xFbGVtZW50KQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxG
cmFtZUVsZW1lbnRCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRC
YXNlLmgKaW5kZXggNWRmNzQ5YzNiZTVjMTZlNmNhMjNiMTBlMWM2Y2Q2MjMwMGNlM2YwMi4uMjc5
ZWJkODJhODhjZjQyN2Q0MzY1MGUyZTVlYjhhNzE0YWIyZDEwZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuaApAQCAtNzcsOCArNzcsOCBAQCBwcml2YXRlOgog
fTsKIAogdm9pZCBpc0hUTUxGcmFtZUVsZW1lbnRCYXNlKGNvbnN0IEhUTUxGcmFtZUVsZW1lbnRC
YXNlJik7IC8vIENhdGNoIHVubmVjZXNzYXJ5IHJ1bnRpbWUgY2hlY2sgb2YgdHlwZSBrbm93biBh
dCBjb21waWxlIHRpbWUuCi1pbmxpbmUgYm9vbCBpc0hUTUxGcmFtZUVsZW1lbnRCYXNlKGNvbnN0
IEVsZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJuIGlzSFRNTEZyYW1lRWxlbWVudChlbGVtZW50KSB8
fCBpc0hUTUxJRnJhbWVFbGVtZW50KGVsZW1lbnQpOyB9Ci1pbmxpbmUgYm9vbCBpc0hUTUxGcmFt
ZUVsZW1lbnRCYXNlKGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJuIG5vZGUuaXNFbGVtZW50Tm9k
ZSgpICYmIGlzSFRNTEZyYW1lRWxlbWVudEJhc2UodG9FbGVtZW50KG5vZGUpKTsgfQoraW5saW5l
IGJvb2wgaXNIVE1MRnJhbWVFbGVtZW50QmFzZShjb25zdCBIVE1MRWxlbWVudCYgZWxlbWVudCkg
eyByZXR1cm4gaXNIVE1MRnJhbWVFbGVtZW50KGVsZW1lbnQpIHx8IGlzSFRNTElGcmFtZUVsZW1l
bnQoZWxlbWVudCk7IH0KK2lubGluZSBib29sIGlzSFRNTEZyYW1lRWxlbWVudEJhc2UoY29uc3Qg
Tm9kZSYgbm9kZSkgeyByZXR1cm4gaXNIVE1MRnJhbWVFbGVtZW50KG5vZGUpIHx8IGlzSFRNTElG
cmFtZUVsZW1lbnQobm9kZSk7IH0KIAogTk9ERV9UWVBFX0NBU1RTKEhUTUxGcmFtZUVsZW1lbnRC
YXNlKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IGExNDI1MjQz
MWQ0M2ExZDhhMjE2ZWI3Y2YzNDYwNmRlMTVkZTA4NmUuLmY2NTdlY2Y5ZDJkMjYwNzJjMGJmNWY1
ZjAyYTY3ZjJkOTRkZjY3NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5o
CkBAIC05MTYsNyArOTE2LDExIEBAIHN0cnVjdCBWYWx1ZVRvU3RyaW5nPFRleHRUcmFja0N1ZSo+
IHsKIHZvaWQgaXNIVE1MTWVkaWFFbGVtZW50KGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmKTsgLy8g
Q2F0Y2ggdW5uZWNlc3NhcnkgcnVudGltZSBjaGVjayBvZiB0eXBlIGtub3duIGF0IGNvbXBpbGUg
dGltZS4KIGlubGluZSBib29sIGlzSFRNTE1lZGlhRWxlbWVudChjb25zdCBFbGVtZW50JiBlbGVt
ZW50KSB7IHJldHVybiBlbGVtZW50LmlzTWVkaWFFbGVtZW50KCk7IH0KIGlubGluZSBib29sIGlz
SFRNTE1lZGlhRWxlbWVudChjb25zdCBOb2RlJiBub2RlKSB7IHJldHVybiBub2RlLmlzRWxlbWVu
dE5vZGUoKSAmJiB0b0VsZW1lbnQobm9kZSkuaXNNZWRpYUVsZW1lbnQoKTsgfQotdGVtcGxhdGUg
PD4gaW5saW5lIGJvb2wgaXNFbGVtZW50T2ZUeXBlPGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQ+KGNv
bnN0IEVsZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJuIGVsZW1lbnQuaXNNZWRpYUVsZW1lbnQoKTsg
fQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQXJnVHlwZT4KK3N0cnVjdCBJc0VsZW1lbnRPZlR5cGU8
Y29uc3QgSFRNTE1lZGlhRWxlbWVudCwgQXJnVHlwZT4geworICAgIGJvb2wgb3BlcmF0b3IoKShB
cmdUeXBlJiBub2RlKSB7IHJldHVybiBpc0hUTUxNZWRpYUVsZW1lbnQobm9kZSk7IH0KK307CiAK
IE5PREVfVFlQRV9DQVNUUyhIVE1MTWVkaWFFbGVtZW50KQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5oCmluZGV4IDg1NmZjMjYwYzA5MWRlMmZiOGE0MzM0
MTg5NjcyZWI1YmU1MDViNDguLjAwMGI4NmQ4MjAxYjRlM2VlNGVkNTIzODA1ZjU4YzU0ZGU3MWUz
ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5oCkBA
IC0xNjAsNyArMTYwLDEyIEBAIHByaXZhdGU6CiB2b2lkIGlzSFRNTFBsdWdJbkltYWdlRWxlbWVu
dChjb25zdCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Jik7IC8vIENhdGNoIHVubmVjZXNzYXJ5IHJ1
bnRpbWUgY2hlY2sgb2YgdHlwZSBrbm93biBhdCBjb21waWxlIHRpbWUuCiBpbmxpbmUgYm9vbCBp
c0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQoY29uc3QgSFRNTFBsdWdJbkVsZW1lbnQmIGVsZW1lbnQp
IHsgcmV0dXJuIGVsZW1lbnQuaXNQbHVnSW5JbWFnZUVsZW1lbnQoKTsgfQogaW5saW5lIGJvb2wg
aXNIVE1MUGx1Z0luSW1hZ2VFbGVtZW50KGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJuIG5vZGUu
aXNQbHVnaW5FbGVtZW50KCkgJiYgdG9IVE1MUGx1Z0luRWxlbWVudChub2RlKS5pc1BsdWdJbklt
YWdlRWxlbWVudCgpOyB9Ci10ZW1wbGF0ZSA8PiBpbmxpbmUgYm9vbCBpc0VsZW1lbnRPZlR5cGU8
Y29uc3QgSFRNTFBsdWdJbkltYWdlRWxlbWVudD4oY29uc3QgRWxlbWVudCYgZWxlbWVudCkgeyBy
ZXR1cm4gaXNIVE1MUGx1Z0luSW1hZ2VFbGVtZW50KGVsZW1lbnQpOyB9CisKK3RlbXBsYXRlIDx0
eXBlbmFtZSBBcmdUeXBlPgorc3RydWN0IElzRWxlbWVudE9mVHlwZTxjb25zdCBIVE1MUGx1Z0lu
SW1hZ2VFbGVtZW50LCBBcmdUeXBlPiB7CisgICAgYm9vbCBvcGVyYXRvcigpKEFyZ1R5cGUmIG5v
ZGUpIHsgcmV0dXJuIGlzSFRNTFBsdWdJbkltYWdlRWxlbWVudChub2RlKTsgfQorfTsKKwogTk9E
RV9UWVBFX0NBU1RTKEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQpCiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTGFiZWxhYmxlRWxlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9MYWJlbGFibGVFbGVtZW50LmgKaW5kZXggMDE0ZjExMTI3
MDdlNWUyOGNjZmQ4MzUwNjQ0NGIxZGNjMGNjNTdlYi4uMzI1NmMyODFmMjNkY2ZhOGQ0OGMxM2Ez
ZTFhZTA4N2Q5NjNmY2U2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9MYWJlbGFi
bGVFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9MYWJlbGFibGVFbGVtZW50LmgK
QEAgLTUzLDcgKzUzLDExIEBAIHByaXZhdGU6CiB2b2lkIGlzTGFiZWxhYmxlRWxlbWVudChjb25z
dCBMYWJlbGFibGVFbGVtZW50Jik7IC8vIENhdGNoIHVubmVjZXNzYXJ5IHJ1bnRpbWUgY2hlY2sg
b2YgdHlwZSBrbm93biBhdCBjb21waWxlIHRpbWUuCiBpbmxpbmUgYm9vbCBpc0xhYmVsYWJsZUVs
ZW1lbnQoY29uc3QgSFRNTEVsZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJuIGVsZW1lbnQuaXNMYWJl
bGFibGUoKTsgfQogaW5saW5lIGJvb2wgaXNMYWJlbGFibGVFbGVtZW50KGNvbnN0IE5vZGUmIG5v
ZGUpIHsgcmV0dXJuIG5vZGUuaXNIVE1MRWxlbWVudCgpICYmIHRvSFRNTEVsZW1lbnQobm9kZSku
aXNMYWJlbGFibGUoKTsgfQotdGVtcGxhdGUgPD4gaW5saW5lIGJvb2wgaXNFbGVtZW50T2ZUeXBl
PGNvbnN0IExhYmVsYWJsZUVsZW1lbnQ+KGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJu
IGlzTGFiZWxhYmxlRWxlbWVudChlbGVtZW50KTsgfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQXJn
VHlwZT4KK3N0cnVjdCBJc0VsZW1lbnRPZlR5cGU8Y29uc3QgTGFiZWxhYmxlRWxlbWVudCwgQXJn
VHlwZT4geworICAgIGJvb2wgb3BlcmF0b3IoKShBcmdUeXBlJiBub2RlKSB7IHJldHVybiBpc0xh
YmVsYWJsZUVsZW1lbnQobm9kZSk7IH0KK307CiAKIE5PREVfVFlQRV9DQVNUUyhMYWJlbGFibGVF
bGVtZW50KQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEVsZW1lbnQuaAppbmRleCBmOWMzYmNm
ZTIzOWU2ZThjMjA3OWVlYjE0NTgzZWRjMTZkMDY4NDEwLi4wZTc3NDYwMWRlZjBlY2JlYzQxNmIy
ZjAyYzFmNmNkZjg4ZjYyODkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0
aE1MRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVtZW50LmgK
QEAgLTc1LDYgKzc1LDEyIEBAIHByaXZhdGU6CiAKIHZvaWQgaXNNYXRoTUxFbGVtZW50KGNvbnN0
IE1hdGhNTEVsZW1lbnQmKTsgLy8gQ2F0Y2ggdW5uZWNlc3NhcnkgcnVudGltZSBjaGVjayBvZiB0
eXBlIGtub3duIGF0IGNvbXBpbGUgdGltZS4KIGlubGluZSBib29sIGlzTWF0aE1MRWxlbWVudChj
b25zdCBOb2RlJiBub2RlKSB7IHJldHVybiBub2RlLmlzTWF0aE1MRWxlbWVudCgpOyB9CisKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBBcmdUeXBlPgorc3RydWN0IElzRWxlbWVudE9mVHlwZTxjb25zdCBN
YXRoTUxFbGVtZW50LCBBcmdUeXBlPiB7CisgICAgYm9vbCBvcGVyYXRvcigpKEFyZ1R5cGUmIG5v
ZGUpIHsgcmV0dXJuIGlzTWF0aE1MRWxlbWVudChub2RlKTsgfQorfTsKKwogTk9ERV9UWVBFX0NB
U1RTKE1hdGhNTEVsZW1lbnQpCiAKIGlubGluZSBib29sIE5vZGU6Omhhc1RhZ05hbWUoY29uc3Qg
TWF0aE1MUXVhbGlmaWVkTmFtZSYgbmFtZSkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCmlu
ZGV4IGM1YzE3ZjhjMTJiNDIxYjUxM2ViZTkyNjRkZjM5Y2ViN2UyZDVjZjkuLmU3NGQ5YTQ5Mzgw
ZmMwNjBmZjgzNDBmMWUyZDZkMjQ1MDQ3MGY5MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaApA
QCAtMjUsOSArMjUsOSBAQAogCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgogI2luY2x1
ZGUgIlNWR0FuaW1hdGVkU3RyaW5nLmgiCi0jaW5jbHVkZSAiU1ZHRWxlbWVudFR5cGVIZWxwZXJz
LmgiCiAjaW5jbHVkZSAiU1ZHTGFuZ1NwYWNlLmgiCiAjaW5jbHVkZSAiU1ZHTG9jYXRhYmxlLmgi
CisjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKICNpbmNsdWRlICJTVkdQYXJzaW5nRXJyb3IuaCIKICNp
bmNsdWRlICJTVkdQcm9wZXJ0eUluZm8uaCIKICNpbmNsdWRlICJTdHlsZWRFbGVtZW50LmgiCkBA
IC0yMjUsNyArMjI1LDExIEBAIHN0cnVjdCBTVkdBdHRyaWJ1dGVIYXNoVHJhbnNsYXRvciB7CiAK
IHZvaWQgaXNTVkdFbGVtZW50KGNvbnN0IFNWR0VsZW1lbnQmKTsgLy8gQ2F0Y2ggdW5uZWNlc3Nh
cnkgcnVudGltZSBjaGVjayBvZiB0eXBlIGtub3duIGF0IGNvbXBpbGUgdGltZS4KIGlubGluZSBi
b29sIGlzU1ZHRWxlbWVudChjb25zdCBOb2RlJiBub2RlKSB7IHJldHVybiBub2RlLmlzU1ZHRWxl
bWVudCgpOyB9Ci10ZW1wbGF0ZSA8PiBpbmxpbmUgYm9vbCBpc0VsZW1lbnRPZlR5cGU8Y29uc3Qg
U1ZHRWxlbWVudD4oY29uc3QgRWxlbWVudCYgZWxlbWVudCkgeyByZXR1cm4gZWxlbWVudC5pc1NW
R0VsZW1lbnQoKTsgfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQXJnVHlwZT4KK3N0cnVjdCBJc0Vs
ZW1lbnRPZlR5cGU8Y29uc3QgU1ZHRWxlbWVudCwgQXJnVHlwZT4geworICAgIGJvb2wgb3BlcmF0
b3IoKShBcmdUeXBlJiBub2RlKSB7IHJldHVybiBpc1NWR0VsZW1lbnQobm9kZSk7IH0KK307CiAK
IE5PREVfVFlQRV9DQVNUUyhTVkdFbGVtZW50KQogCkBAIC0yMzQsNiArMjM4LDggQEAgaW5saW5l
IGJvb2wgTm9kZTo6aGFzVGFnTmFtZShjb25zdCBTVkdRdWFsaWZpZWROYW1lJiBuYW1lKSBjb25z
dAogICAgIHJldHVybiBpc1NWR0VsZW1lbnQoKSAmJiB0b1NWR0VsZW1lbnQoKnRoaXMpLmhhc1Rh
Z05hbWUobmFtZSk7CiB9CiAKLX0KK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2luY2x1ZGUg
IlNWR0VsZW1lbnRUeXBlSGVscGVycy5oIgogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaAppbmRl
eCA1ZmRjYjY2NDI0YzZlNDJiMDU0YmI0M2FiOGFmMzkxM2ZlYjBhNThjLi40YjYwZTI3Nzg5MmMz
YTE2MDY1YzQ5ZDBiZmNjM2RhZjk4MWY2ODQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oCkBAIC04NSw3
ICs4NSwxMSBAQCB2b2lkIGludmFsaWRhdGVGaWx0ZXJQcmltaXRpdmVQYXJlbnQoU1ZHRWxlbWVu
dCopOwogdm9pZCBpc1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyhjb25zdCBT
VkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMmKTsgLy8gQ2F0Y2ggdW5uZWNlc3Nh
cnkgcnVudGltZSBjaGVjayBvZiB0eXBlIGtub3duIGF0IGNvbXBpbGUgdGltZS4KIGlubGluZSBi
b29sIGlzU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKGNvbnN0IFNWR0VsZW1l
bnQmIGVsZW1lbnQpIHsgcmV0dXJuIGVsZW1lbnQuaXNGaWx0ZXJFZmZlY3QoKTsgfQogaW5saW5l
IGJvb2wgaXNTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMoY29uc3QgTm9kZSYg
bm9kZSkgeyByZXR1cm4gbm9kZS5pc1NWR0VsZW1lbnQoKSAmJiB0b1NWR0VsZW1lbnQobm9kZSku
aXNGaWx0ZXJFZmZlY3QoKTsgfQotdGVtcGxhdGUgPD4gaW5saW5lIGJvb2wgaXNFbGVtZW50T2ZU
eXBlPGNvbnN0IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcz4oY29uc3QgRWxl
bWVudCYgZWxlbWVudCkgeyByZXR1cm4gaXNTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJp
YnV0ZXMoZWxlbWVudCk7IH0KKwordGVtcGxhdGUgPHR5cGVuYW1lIEFyZ1R5cGU+CitzdHJ1Y3Qg
SXNFbGVtZW50T2ZUeXBlPGNvbnN0IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRl
cywgQXJnVHlwZT4geworICAgIGJvb2wgb3BlcmF0b3IoKShBcmdUeXBlJiBub2RlKSB7IHJldHVy
biBpc1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyhub2RlKTsgfQorfTsKIAog
Tk9ERV9UWVBFX0NBU1RTKFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcykKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5oCmluZGV4IDFl
ZWYzMTg2ZDJlZjFlNzNhNzVlZTVlYzQyMzc0Njg4OTliMGYyNzkuLjQwMDQ3ZDEwOTM3OWIxYzNi
MDlhNTg1Nzk5OWMzNzcwMDZjMGI0ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9h
bmltYXRpb24vU1ZHU01JTEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0
aW9uL1NWR1NNSUxFbGVtZW50LmgKQEAgLTI0MCw3ICsyNDAsMTIgQEAgcHJpdmF0ZToKIHZvaWQg
aXNTVkdTTUlMRWxlbWVudChjb25zdCBTVkdTTUlMRWxlbWVudCYpOyAvLyBDYXRjaCB1bm5lY2Vz
c2FyeSBydW50aW1lIGNoZWNrIG9mIHR5cGUga25vd24gYXQgY29tcGlsZSB0aW1lLgogaW5saW5l
IGJvb2wgaXNTVkdTTUlMRWxlbWVudChjb25zdCBTVkdFbGVtZW50JiBlbGVtZW50KSB7IHJldHVy
biBlbGVtZW50LmlzU01JTEVsZW1lbnQoKTsgfQogaW5saW5lIGJvb2wgaXNTVkdTTUlMRWxlbWVu
dChjb25zdCBOb2RlJiBub2RlKSB7IHJldHVybiBub2RlLmlzU1ZHRWxlbWVudCgpICYmIHRvU1ZH
RWxlbWVudChub2RlKS5pc1NNSUxFbGVtZW50KCk7IH0KLXRlbXBsYXRlIDw+IGlubGluZSBib29s
IGlzRWxlbWVudE9mVHlwZTxjb25zdCBTVkdTTUlMRWxlbWVudD4oY29uc3QgRWxlbWVudCYgZWxl
bWVudCkgeyByZXR1cm4gaXNTVkdTTUlMRWxlbWVudChlbGVtZW50KTsgfQorCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgQXJnVHlwZT4KK3N0cnVjdCBJc0VsZW1lbnRPZlR5cGU8Y29uc3QgU1ZHU01JTEVs
ZW1lbnQsIEFyZ1R5cGU+IHsKKyAgICBib29sIG9wZXJhdG9yKCkoQXJnVHlwZSYgbm9kZSkgeyBy
ZXR1cm4gaXNTVkdTTUlMRWxlbWVudChub2RlKTsgfQorfTsKKwogCiBOT0RFX1RZUEVfQ0FTVFMo
U1ZHU01JTEVsZW1lbnQpCiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>238129</attachid>
            <date>2014-09-15 08:14:52 -0700</date>
            <delta_ts>2014-09-15 08:59:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-136719-20140915081450.patch</filename>
            <type>text/plain</type>
            <size>27397</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTczNjIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWRlMzRlYzc0Y2I4Y2Nk
ZDM3Mzg0ZDkwMDE5NzY2MDY1ZjkwZjY5OS4uYTI1MjE4OWU3YmRlNWVmY2RjMWQzZGE4YWY3MzE5
OTBlN2IzMzYyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzMyBAQAorMjAxNC0wOS0xNSAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEF2b2lkIHJlZHVuZGFudCBp
c0VsZW1lbnROb2RlKCkgY2hlY2tzIGluIFRyYXZlcnNhbDxIVE1MKkVsZW1lbnQ+IC8gVHJhdmVy
c2FsPFNWRypFbGVtZW50PgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTM2NzE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAg
ICAgICAgQXZvaWQgcmVkdW5kYW50IGlzRWxlbWVudE5vZGUoKSBjaGVja3MgaW4gVHJhdmVyc2Fs
PEhUTUwqRWxlbWVudD4gLworICAgICAgICBUcmF2ZXJzYWw8U1ZHKkVsZW1lbnQ+LiAgV2UgdXNl
ZCB0byBpdGVyYXRlIHRocm91Z2ggRWxlbWVudHMsIGFuZCB0aGVuCisgICAgICAgIGNhbGwgaXNF
bGVtZW50T2ZUeXBlPEhUTUwqRWxlbWVudD4oKSAgb24gZWFjaCBFbGVtZW50LiBUaGlzIG1hZGUg
c2Vuc2UKKyAgICAgICAgYmVjYXVzZSBoYXNUYWdOYW1lKCkgdXNlZCB0byBiZSBkZWZpbmVkIG9u
IEVsZW1lbnQuIEhvd2V2ZXIsIGFmdGVyCisgICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcv
Y2hhbmdlc2V0LzE2NTY5OSwgaGFzVGFnTmFtZSgpIGlzIG5vdyBkZWZpbmVkIG9uCisgICAgICAg
IE5vZGUgZm9yIEhUTUxRdWFsaWZpZWROYW1lIC8gU1ZHUXVhbGlmaWVkTmFtZSBhcmd1bWVudHMu
CisKKyAgICAgICAgTm9kZTo6aGFzVGFnTmFtZShIVE1MUXVhbGlmaWVkTmFtZSkgYmFzaWNhbGx5
IGRvZXMgdGhlIGZvbGxvd2luZyBjaGVjaworICAgICAgICAiaXNIVE1MRWxlbWVudCgpICYmICB0
b0hUTUxFbGVtZW50KCp0aGlzKS5oYXNUYWdOYW1lKHRhZ05hbWUpIi4gQXMgYQorICAgICAgICBj
b25zZXF1ZW5jZSwgZG9pbmcgYW4gaXNFbGVtZW50Tm9kZSgpIGNoZWNrIGlzIG5vdyByZWR1bmRh
bnQgYXMKKyAgICAgICAgaXNIVE1MRWxlbWVudCgpIGlzIGRlZmluZWQgb24gTm9kZS4KKworICAg
ICAgICBUaGlzIHBhdGNoIGFkZHMgYSB0ZW1wbGF0ZSBwYXJhbWV0ZXIgdG8gaXNFbGVtZW50T2ZU
eXBlKCkgc28gdGhhdCBpdCBjYW4KKyAgICAgICAgdGFrZSBhbnkgdHlwZSBpbiBhcmd1bWVudCAo
cGFydGljdWxhbHkgTm9kZSwgRWxlbWVudCwgSFRNTEVsZW1lbnQsCisgICAgICAgIFNWR0VsZW1l
bnQsIE1hdGhNTEVsZW1lbnQpLCBub3QganVzdCBhbiBFbGVtZW50LiBJIGhhZCB0byBhZGQgYW4K
KyAgICAgICAgRWxlbWVudFR5cGVDYXN0VHJhaXRzIHN0cnVjdCB0byBzdXBwb3J0IHBhcnRpYWwg
c3BlY2lhbGl6YXRpb24gYXMgQysrCisgICAgICAgIGRvZXMgbm90IHN1cHBvcnQgcGFydGlhbCBz
cGVjaWFsaXphdGlvbiBvZiB0ZW1wbGF0ZSBmdW5jdGlvbnMuCisgICAgICAgIFRoaXMgcGF0Y2gg
YWxzbyB1cGRhdGVzIFRyYXZlcnNhbDxFbGVtZW50VHlwZT4gc28gdGhhdCB0aGUgbWV0aG9kcyB1
c2UKKyAgICAgICAgTm9kZVRyYXZlcnNhbCBpbnRlcm5hbGx5IGluc3RlYWQgb2YgVHJhdmVyc2Fs
PEVsZW1lbnRUeXBlPi4gQXMgYSByZXN1bHQsCisgICAgICAgIHdlIG5vdyBpdGVyYXRlIG92ZXIg
Tm9kZXMgKG5vdCBFbGVtZW50cykgYW5kIGNhbGwgdGhlIG5ldworICAgICAgICBpc0VsZW1lbnRP
ZlR5cGU8RWxlbWVudFR5cGU+KE5vZGUpIGhlbHBlcnMgKHdoaWNoIGFyZSBlZmZpY2llbnQgYWZ0
ZXIKKyAgICAgICAgcjE2NTY5OSkuCisKKyAgICAgICAgQmVmb3JlIHRoZSBwYXRjaCwgdGhlIGNv
ZGUgZW5kZWQgdXAgZG9pbmcgdGhlIGZvbGxvd2luZyBjaGVja3MgZm9yCisgICAgICAgIFRyYXZl
cnNhbDxIVE1MKmVsZW1lbnQ+OgorICAgICAgICBub2RlLmlzRWxlbWVudE5vZGUoKSAmJiB0b0Vs
ZW1lbnQobm9kZSkuaXNIVE1MRWxlbWVudCgpCisgICAgICAgICAgICAmJiB0b0hUTUxFbGVtZW50
KG5vZGUpLmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpmb29UYWcpCisKKyAgICAgICAgQWZ0ZXIgdGhl
IHBhdGNoLCB0aGUgY29kZSBvbmx5IGRvZXM6CisgICAgICAgIG5vZGUuaXNIVE1MRWxlbWVudCgp
CisgICAgICAgICAgICAmJiB0b0hUTUxFbGVtZW50KG5vZGUpLmhhc1RhZ05hbWUoSFRNTE5hbWVz
Ojpmb29UYWcpCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBubyBiZWhhdmlvciBjaGFuZ2UuCisK
KyAgICAgICAgKiBkb20vRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudD4pOgor
ICAgICAgICAoV2ViQ29yZTo6aXNFbGVtZW50T2ZUeXBlKToKKyAgICAgICAgQWRkIHRlbXBsYXRl
IHBhcmFtZXRlciB0byBpc0VsZW1lbnRPZlR5cGUoKSBmdW5jdGlvbiBzbyB0aGF0IGl0IGNhbgor
ICAgICAgICBoYW5kbGUgYW55IGFyZ3VtZW50IHR5cGUsIG5vdCBqdXN0IEVsZW1lbnRzLiBBbHNv
IGludHJvZHVjZSBhbgorICAgICAgICBFbGVtZW50VHlwZUNhc3RUcmFpdHMgc3RydWN0IHRoYXQg
aXMgY2FsbGVkIGJ5IGlzRWxlbWVudE9mVHlwZSgpCisgICAgICAgIGZ1bmN0aW9uIHNvIHRoYXQg
d2UgY2FuIHNvIHBhcnRpYWwgdGVtcGxhdGUgc3BlY2lhbGl6YXRpb24uCisKKyAgICAgICAgKiBk
b20vRWxlbWVudFRyYXZlcnNhbC5oOgorICAgICAgICAoV2ViQ29yZTo6VHJhdmVyc2FsPEVsZW1l
bnRUeXBlPjo6Zmlyc3RXaXRoaW5UZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpUcmF2ZXJz
YWw8RWxlbWVudFR5cGU+OjpsYXN0V2l0aGluVGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
VHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6bmV4dFRlbXBsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OlRyYXZlcnNhbDxFbGVtZW50VHlwZT46OnByZXZpb3VzVGVtcGxhdGUpOgorICAgICAgICBVc2Ug
Tm9kZVRyYXZlcnNhbCBBUEkgaW50ZXJuYWxseSBpbnN0ZWFkIG9mIFRyYXZlcnNhbDxFbGVtZW50
PiB0byBhdm9pZAorICAgICAgICByZWR1bmRhbnQgaXNFbGVtZW50Tm9kZSgpIGNoZWNrcy4KKwor
ICAgICAgICAoV2ViQ29yZTo6VHJhdmVyc2FsPEVsZW1lbnQ+OjpsYXN0V2l0aGluVGVtcGxhdGUp
OiBEZWxldGVkLgorICAgICAgICBUaGUgY29kZSBpcyBub3cgaWRlbnRpY2FsIHRvIHRoZSBnZW5l
cmljIHZlcnNpb24uCisKKyAgICAgICAgKFdlYkNvcmU6OlRyYXZlcnNhbDxFbGVtZW50Pjo6cHJl
dmlvdXNUZW1wbGF0ZSk6IERlbGV0ZWQuCisgICAgICAgIFRoZSBjb2RlIGlzIG5vdyBpZGVudGlj
YWwgdG8gdGhlIGdlbmVyaWMgdmVyc2lvbi4KKworICAgICAgICAqIGRvbS9tYWtlX25hbWVzLnBs
OgorICAgICAgICAocHJpbnRUeXBlSGVscGVycyk6CisgICAgICAgIC0gR2VuZXJhdGUgdGVtcGxh
dGUgc3BlY2lhbGl6YXRpb25zIGZvciBFbGVtZW50VHlwZUNhc3RUcmFpdHMgc3RydWN0CisgICAg
ICAgICAgaW5zdGVhZCBvZiBpc0VsZW1lbnRPZlR5cGUoKS4gVGhpcyBhdm9pZHMgaGF2aW5nIHRv
IHByb3ZpZGUgb3ZlcmxvYWRzCisgICAgICAgICAgZm9yIHNwZWNpZmljIGFyZ3VtZW50IHR5cGVz
IChlLmcuIE5vZGUsIEVsZW1lbnQsIEhUTUxFbGVtZW50LCAuLi4pLgorICAgICAgICAtIFNoYXJl
IG1vcmUgY29kZSBiZXR3ZWVuIEhUTUwgY29kZSBwYXRoIGFuZCB0aGUgb3RoZXIgcGF0aCAoZm9y
IFNWRywKKyAgICAgICAgICBNVEhNTCkuCisKKyAgICAgICAgKiBodG1sL0hUTUxFbGVtZW50Lmg6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudD4pOgorICAgICAgICBQcm92aWRlIEhUTUxF
bGVtZW50IHRlbXBsYXRlIHNwZWNpYWxpemF0aW9uIGZvciBFbGVtZW50VHlwZUNhc3RUcmFpdHMK
KyAgICAgICAgc3RydWN0IGluc3RlYWQgb2YgaXNFbGVtZW50T2ZUeXBlKCkuCisKKyAgICAgICAg
KiBodG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxG
b3JtQ29udHJvbEVsZW1lbnQ+KToKKyAgICAgICAgUHJvdmlkZSBIVE1MRm9ybUNvbnRyb2xFbGVt
ZW50IHRlbXBsYXRlIHNwZWNpYWxpemF0aW9uIGZvcgorICAgICAgICBFbGVtZW50VHlwZUNhc3RU
cmFpdHMgc3RydWN0IGluc3RlYWQgb2YgaXNFbGVtZW50T2ZUeXBlKCkuCisKKyAgICAgICAgKiBo
dG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmg6CisgICAgICAgIChXZWJDb3JlOjppc0hUTUxGcmFt
ZUVsZW1lbnRCYXNlKToKKyAgICAgICAgLSBSZW1vdmUgaGVscGVyIHRha2luZyBhbiBFbGVtZW50
IGluIGFyZ3VtZW50IGFzIGl0IGRvZXMgbm90IGJyaW5nIGFueQorICAgICAgICAgIGJlbmVmaXQu
IEluc3RlYWQsIHVwZGF0ZSB0aGUgb3ZlcmxvYWQgdGFraW5nIGEgTm9kZSBpbiBhcmd1bWVudCB0
bworICAgICAgICAgIHJlbW92ZSB0aGUgdW5uZWNlc3NhcnkgaXNFbGVtZW50Tm9kZSgpIGNoZWNr
IGFzIGlzSFRNTEZyYW1lRWxlbWVudChOb2RlKQorICAgICAgICAgIGlzIG5vdyBlZmZpY2llbnQu
CisgICAgICAgIC0gQWRkIGFuIG92ZXJsb2FkIHRha2luZyBhbiBIVE1MRWxlbWVudCBpbiBhcmd1
bWVudCBzbyB0aGF0IHdlIGNhbiBieXBhc3MKKyAgICAgICAgICB0aGUgaXNIVE1MRWxlbWVudCgp
IGNoZWNrIHdoZW4gd2Uga25vdyB0aGUgaW5wdXQgaXMgYW4gSFRNTEVsZW1lbnQuCisKKyAgICAg
ICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ+KToKKyAgICAgICAgUHJvdmlkZSBIVE1MTWVkaWFFbGVtZW50IHRlbXBsYXRlIHNw
ZWNpYWxpemF0aW9uIGZvciBFbGVtZW50VHlwZUNhc3RUcmFpdHMKKyAgICAgICAgc3RydWN0IGlu
c3RlYWQgb2YgaXNFbGVtZW50T2ZUeXBlKCkuCisKKyAgICAgICAgKiBodG1sL0hUTUxQbHVnSW5J
bWFnZUVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ+
KToKKyAgICAgICAgUHJvdmlkZSBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50IHRlbXBsYXRlIHNwZWNp
YWxpemF0aW9uIGZvcgorICAgICAgICBFbGVtZW50VHlwZUNhc3RUcmFpdHMgc3RydWN0IGluc3Rl
YWQgb2YgaXNFbGVtZW50T2ZUeXBlKCkuCisKKyAgICAgICAgKiBodG1sL0xhYmVsYWJsZUVsZW1l
bnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxhYmVsYWJsZUVsZW1lbnQ+KToKKyAgICAgICAgUHJv
dmlkZSBMYWJlbGFibGVFbGVtZW50IHRlbXBsYXRlIHNwZWNpYWxpemF0aW9uIGZvciBFbGVtZW50
VHlwZUNhc3RUcmFpdHMKKyAgICAgICAgc3RydWN0IGluc3RlYWQgb2YgaXNFbGVtZW50T2ZUeXBl
KCkuCisKKyAgICAgICAgKiBtYXRobWwvTWF0aE1MRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29y
ZTo6TWF0aE1MRWxlbWVudD4pOgorICAgICAgICBQcm92aWRlIE1hdGhNTEVsZW1lbnQgdGVtcGxh
dGUgc3BlY2lhbGl6YXRpb24gZm9yIEVsZW1lbnRUeXBlQ2FzdFRyYWl0cworICAgICAgICBzdHJ1
Y3QgZm9yIGNvbnNpc3RlbmN5IHdpdGggSFRNTEVsZW1lbnQgLyBTVkdFbGVtZW50LgorCisgICAg
ICAgICogc3ZnL1NWR0VsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ+KToK
KyAgICAgICAgLSBQcm92aWRlIFNWR0VsZW1lbnQgdGVtcGxhdGUgc3BlY2lhbGl6YXRpb24gZm9y
IEVsZW1lbnRUeXBlQ2FzdFRyYWl0cworICAgICAgICAgIHN0cnVjdCBpbnN0ZWFkIG9mIGlzRWxl
bWVudE9mVHlwZSgpLgorICAgICAgICAtIGluY2x1ZGUgU1ZHRWxlbWVudFR5cGVIZWxwZXJzLmgg
YXQgdGhlIGVuZCBvZiB0aGUgZmlsZSAoc2ltaWxhcmx5IHRvCisgICAgICAgICAgd2hhdCBpcyBh
bHJlYWR5IGRvbmUgaW4gSFRNTEVsZW1lbnQuaCBiZWNhdXNlCisgICAgICAgICAgaXNFbGVtZW50
T2ZUeXBlKGNvbnN0IFNWR0VsZW1lbnQmKSBuZWVkcyB0byBiZSBkZWZpZW5kIGJlY2F1c2UgdGhl
CisgICAgICAgICAgaW5jbHVkZS4KKworICAgICAgICAqIHN2Zy9TVkdGaWx0ZXJQcmltaXRpdmVT
dGFuZGFyZEF0dHJpYnV0ZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlclByaW1pdGl2
ZVN0YW5kYXJkQXR0cmlidXRlcz4pOgorICAgICAgICBQcm92aWRlIFNWR0ZpbHRlclByaW1pdGl2
ZVN0YW5kYXJkQXR0cmlidXRlcyB0ZW1wbGF0ZSBzcGVjaWFsaXphdGlvbiBmb3IKKyAgICAgICAg
RWxlbWVudFR5cGVDYXN0VHJhaXRzIHN0cnVjdCBpbnN0ZWFkIG9mIGlzRWxlbWVudE9mVHlwZSgp
LgorCisgICAgICAgICogc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5oOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHU01JTEVsZW1lbnQ+KToKKyAgICAgICAgUHJvdmlkZSBTVkdTTUlMRWxlbWVu
dCB0ZW1wbGF0ZSBzcGVjaWFsaXphdGlvbiBmb3IgRWxlbWVudFR5cGVDYXN0VHJhaXRzCisgICAg
ICAgIHN0cnVjdCBpbnN0ZWFkIG9mIGlzRWxlbWVudE9mVHlwZSgpLgorCisKIDIwMTQtMDgtMDcg
IFNlcmdpbyBWaWxsYXIgU2VuaW4gIDxzdmlsbGFyQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0NT
UyBHcmlkIExheW91dF0gU29ydCBpdGVtcyBieSBzcGFuIHdoZW4gcmVzb2x2aW5nIGNvbnRlbnQt
YmFzZWQgdHJhY2sgc2l6aW5nIGZ1bmN0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKaW5kZXggNzRjMmZi
YjhlOWEwZWRjZDlmN2IzZTMwNTU0MzI3ODJmZWI2NmQ4NC4uMWUzN2VlY2NmZmE4NzAyOTkwZDdm
NzQ3M2RlMGVhYTJlYjk2ODliNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCkBAIC02NzAsOSArNjcwLDI0
IEBAIGlubGluZSBib29sIGlzRWxlbWVudChjb25zdCBOb2RlJiBub2RlKSB7IHJldHVybiBub2Rl
LmlzRWxlbWVudE5vZGUoKTsgfQogCiBOT0RFX1RZUEVfQ0FTVFMoRWxlbWVudCkKIAotdGVtcGxh
dGUgPHR5cGVuYW1lIFR5cGU+IGJvb2wgaXNFbGVtZW50T2ZUeXBlKGNvbnN0IEVsZW1lbnQmKTsK
LXRlbXBsYXRlIDx0eXBlbmFtZSBUeXBlPiBpbmxpbmUgYm9vbCBpc0VsZW1lbnRPZlR5cGUoY29u
c3QgTm9kZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5pc0VsZW1lbnROb2RlKCkgJiYgaXNFbGVtZW50
T2ZUeXBlPGNvbnN0IFR5cGU+KHRvRWxlbWVudChub2RlKSk7IH0KLXRlbXBsYXRlIDw+IGlubGlu
ZSBib29sIGlzRWxlbWVudE9mVHlwZTxjb25zdCBFbGVtZW50Pihjb25zdCBFbGVtZW50JikgeyBy
ZXR1cm4gdHJ1ZTsgfQordGVtcGxhdGUgPHR5cGVuYW1lIEV4cGVjdGVkVHlwZSwgdHlwZW5hbWUg
QXJnVHlwZT4KK3N0cnVjdCBFbGVtZW50VHlwZUNhc3RUcmFpdHMgeworICAgIHN0YXRpYyBib29s
IGlzKEFyZ1R5cGUmKTsKK307CisKKy8vIFRoaXMgaXMgbmVlZGVkIHNvIHRoYXQgdGhlIGNvbXBp
bGVyIGNhbiBkZWR1Y2UgdGhlIHNlY29uZCB0ZW1wbGF0ZSBwYXJhbWV0ZXIgKEFyZ1R5cGUpLgor
dGVtcGxhdGUgPHR5cGVuYW1lIEV4cGVjdGVkVHlwZSwgdHlwZW5hbWUgQXJnVHlwZT4KK2lubGlu
ZSBib29sIGlzRWxlbWVudE9mVHlwZShjb25zdCBBcmdUeXBlJiBub2RlKSB7IHJldHVybiBFbGVt
ZW50VHlwZUNhc3RUcmFpdHM8RXhwZWN0ZWRUeXBlLCBjb25zdCBBcmdUeXBlPjo6aXMobm9kZSk7
IH0KKwordGVtcGxhdGUgPD4KK3N0cnVjdCBFbGVtZW50VHlwZUNhc3RUcmFpdHM8Y29uc3QgRWxl
bWVudCwgY29uc3QgTm9kZT4geworICAgIHN0YXRpYyBib29sIGlzKGNvbnN0IE5vZGUmIG5vZGUp
IHsgcmV0dXJuIG5vZGUuaXNFbGVtZW50Tm9kZSgpOyB9Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgRXhwZWN0ZWRUeXBlPgorc3RydWN0IEVsZW1lbnRUeXBlQ2FzdFRyYWl0czxFeHBlY3RlZFR5
cGUsIEV4cGVjdGVkVHlwZT4geworICAgIHN0YXRpYyBib29sIGlzKEV4cGVjdGVkVHlwZSYpIHsg
cmV0dXJuIHRydWU7IH0KK307CiAKIGlubGluZSBib29sIE5vZGU6Omhhc0F0dHJpYnV0ZXMoKSBj
b25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRUcmF2ZXJzYWwu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50VHJhdmVyc2FsLmgKaW5kZXggYTAzYjk2ZDEx
OGM4YWI4YmM5OWUxMmEzZjgwNzk5MjY1OGIzNGY2OS4uZmU2Nzk4MzBkNjU2NWNjOTEyOGZhOTM1
Nzg3Y2RmZjE1N2U2MjNmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRU
cmF2ZXJzYWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFRyYXZlcnNhbC5oCkBA
IC05MiwxNiArOTIsNiBAQCBpbmxpbmUgRWxlbWVudCogVHJhdmVyc2FsPEVsZW1lbnQ+OjpmaXJz
dFdpdGhpblRlbXBsYXRlKEN1cnJlbnRUeXBlKiBjdXJyZW50KQogCiB0ZW1wbGF0ZSA8PgogdGVt
cGxhdGUgPHR5cGVuYW1lIEN1cnJlbnRUeXBlPgotaW5saW5lIEVsZW1lbnQqIFRyYXZlcnNhbDxF
bGVtZW50Pjo6bGFzdFdpdGhpblRlbXBsYXRlKEN1cnJlbnRUeXBlKiBjdXJyZW50KQotewotICAg
IE5vZGUqIG5vZGUgPSBOb2RlVHJhdmVyc2FsOjpsYXN0KGN1cnJlbnQpOwotICAgIHdoaWxlIChu
b2RlICYmICFub2RlLT5pc0VsZW1lbnROb2RlKCkpCi0gICAgICAgIG5vZGUgPSBOb2RlVHJhdmVy
c2FsOjpwcmV2aW91cyhub2RlLCBjdXJyZW50KTsKLSAgICByZXR1cm4gdG9FbGVtZW50KG5vZGUp
OwotfQotCi10ZW1wbGF0ZSA8PgotdGVtcGxhdGUgPHR5cGVuYW1lIEN1cnJlbnRUeXBlPgogaW5s
aW5lIEVsZW1lbnQqIFRyYXZlcnNhbDxFbGVtZW50Pjo6bmV4dFRlbXBsYXRlKEN1cnJlbnRUeXBl
KiBjdXJyZW50KQogewogICAgIE5vZGUqIG5vZGUgPSBOb2RlVHJhdmVyc2FsOjpuZXh0KGN1cnJl
bnQpOwpAQCAtMTIwLDI0ICsxMTAsNiBAQCBpbmxpbmUgRWxlbWVudCogVHJhdmVyc2FsPEVsZW1l
bnQ+OjpuZXh0VGVtcGxhdGUoQ3VycmVudFR5cGUqIGN1cnJlbnQsIGNvbnN0IE5vZAogICAgIHJl
dHVybiB0b0VsZW1lbnQobm9kZSk7CiB9CiAKLXRlbXBsYXRlIDw+Ci1pbmxpbmUgRWxlbWVudCog
VHJhdmVyc2FsPEVsZW1lbnQ+OjpwcmV2aW91cyhjb25zdCBOb2RlKiBjdXJyZW50KQotewotICAg
IE5vZGUqIG5vZGUgPSBOb2RlVHJhdmVyc2FsOjpwcmV2aW91cyhjdXJyZW50KTsKLSAgICB3aGls
ZSAobm9kZSAmJiAhbm9kZS0+aXNFbGVtZW50Tm9kZSgpKQotICAgICAgICBub2RlID0gTm9kZVRy
YXZlcnNhbDo6cHJldmlvdXMobm9kZSk7Ci0gICAgcmV0dXJuIHRvRWxlbWVudChub2RlKTsKLX0K
LQotdGVtcGxhdGUgPD4KLWlubGluZSBFbGVtZW50KiBUcmF2ZXJzYWw8RWxlbWVudD46OnByZXZp
b3VzKGNvbnN0IE5vZGUqIGN1cnJlbnQsIGNvbnN0IE5vZGUqIHN0YXlXaXRoaW4pCi17Ci0gICAg
Tm9kZSogbm9kZSA9IE5vZGVUcmF2ZXJzYWw6OnByZXZpb3VzKGN1cnJlbnQsIHN0YXlXaXRoaW4p
OwotICAgIHdoaWxlIChub2RlICYmICFub2RlLT5pc0VsZW1lbnROb2RlKCkpCi0gICAgICAgIG5v
ZGUgPSBOb2RlVHJhdmVyc2FsOjpwcmV2aW91cyhub2RlLCBzdGF5V2l0aGluKTsKLSAgICByZXR1
cm4gdG9FbGVtZW50KG5vZGUpOwotfQotCiAvLyBHZW5lcmljIHZlcnNpb25zLgogdGVtcGxhdGUg
PHR5cGVuYW1lIEVsZW1lbnRUeXBlPgogdGVtcGxhdGUgPHR5cGVuYW1lIEN1cnJlbnRUeXBlPgpA
QCAtMTYzLDU4ICsxMzUsNTggQEAgdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgogdGVt
cGxhdGUgPHR5cGVuYW1lIEN1cnJlbnRUeXBlPgogaW5saW5lIEVsZW1lbnRUeXBlKiBUcmF2ZXJz
YWw8RWxlbWVudFR5cGU+OjpmaXJzdFdpdGhpblRlbXBsYXRlKEN1cnJlbnRUeXBlKiBjdXJyZW50
KQogewotICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBUcmF2ZXJzYWw8RWxlbWVudD46OmZpcnN0V2l0
aGluKGN1cnJlbnQpOwotICAgIHdoaWxlIChlbGVtZW50ICYmICFpc0VsZW1lbnRPZlR5cGU8Y29u
c3QgRWxlbWVudFR5cGU+KCplbGVtZW50KSkKLSAgICAgICAgZWxlbWVudCA9IFRyYXZlcnNhbDxF
bGVtZW50Pjo6bmV4dChlbGVtZW50LCBjdXJyZW50KTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
RWxlbWVudFR5cGUqPihlbGVtZW50KTsKKyAgICBOb2RlKiBub2RlID0gY3VycmVudC0+Zmlyc3RD
aGlsZCgpOworICAgIHdoaWxlIChub2RlICYmICFpc0VsZW1lbnRPZlR5cGU8Y29uc3QgRWxlbWVu
dFR5cGU+KCpub2RlKSkKKyAgICAgICAgbm9kZSA9IE5vZGVUcmF2ZXJzYWw6Om5leHQobm9kZSwg
Y3VycmVudCk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEVsZW1lbnRUeXBlKj4obm9kZSk7CiB9
CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KIHRlbXBsYXRlIDx0eXBlbmFtZSBD
dXJyZW50VHlwZT4KIGlubGluZSBFbGVtZW50VHlwZSogVHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6
bGFzdFdpdGhpblRlbXBsYXRlKEN1cnJlbnRUeXBlKiBjdXJyZW50KQogewotICAgIEVsZW1lbnQq
IGVsZW1lbnQgPSBUcmF2ZXJzYWw8RWxlbWVudD46Omxhc3RXaXRoaW4oY3VycmVudCk7Ci0gICAg
d2hpbGUgKGVsZW1lbnQgJiYgIWlzRWxlbWVudE9mVHlwZTxjb25zdCBFbGVtZW50VHlwZT4oKmVs
ZW1lbnQpKQotICAgICAgICBlbGVtZW50ID0gVHJhdmVyc2FsPEVsZW1lbnQ+OjpwcmV2aW91cyhl
bGVtZW50LCBjdXJyZW50KTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RWxlbWVudFR5cGUqPihl
bGVtZW50KTsKKyAgICBOb2RlKiBub2RlID0gTm9kZVRyYXZlcnNhbDo6bGFzdChjdXJyZW50KTsK
KyAgICB3aGlsZSAobm9kZSAmJiAhaXNFbGVtZW50T2ZUeXBlPGNvbnN0IEVsZW1lbnRUeXBlPigq
bm9kZSkpCisgICAgICAgIG5vZGUgPSBOb2RlVHJhdmVyc2FsOjpwcmV2aW91cyhub2RlLCBjdXJy
ZW50KTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RWxlbWVudFR5cGUqPihub2RlKTsKIH0KIAog
dGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgogdGVtcGxhdGUgPHR5cGVuYW1lIEN1cnJl
bnRUeXBlPgogaW5saW5lIEVsZW1lbnRUeXBlKiBUcmF2ZXJzYWw8RWxlbWVudFR5cGU+OjpuZXh0
VGVtcGxhdGUoQ3VycmVudFR5cGUqIGN1cnJlbnQpCiB7Ci0gICAgRWxlbWVudCogZWxlbWVudCA9
IFRyYXZlcnNhbDxFbGVtZW50Pjo6bmV4dChjdXJyZW50KTsKLSAgICB3aGlsZSAoZWxlbWVudCAm
JiAhaXNFbGVtZW50T2ZUeXBlPGNvbnN0IEVsZW1lbnRUeXBlPigqZWxlbWVudCkpCi0gICAgICAg
IGVsZW1lbnQgPSBUcmF2ZXJzYWw8RWxlbWVudD46Om5leHQoZWxlbWVudCk7Ci0gICAgcmV0dXJu
IHN0YXRpY19jYXN0PEVsZW1lbnRUeXBlKj4oZWxlbWVudCk7CisgICAgTm9kZSogbm9kZSA9IE5v
ZGVUcmF2ZXJzYWw6Om5leHQoY3VycmVudCk7CisgICAgd2hpbGUgKG5vZGUgJiYgIWlzRWxlbWVu
dE9mVHlwZTxjb25zdCBFbGVtZW50VHlwZT4oKm5vZGUpKQorICAgICAgICBub2RlID0gTm9kZVRy
YXZlcnNhbDo6bmV4dChub2RlKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RWxlbWVudFR5cGUq
Pihub2RlKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgogdGVtcGxhdGUg
PHR5cGVuYW1lIEN1cnJlbnRUeXBlPgogaW5saW5lIEVsZW1lbnRUeXBlKiBUcmF2ZXJzYWw8RWxl
bWVudFR5cGU+OjpuZXh0VGVtcGxhdGUoQ3VycmVudFR5cGUqIGN1cnJlbnQsIGNvbnN0IE5vZGUq
IHN0YXlXaXRoaW4pCiB7Ci0gICAgRWxlbWVudCogZWxlbWVudCA9IFRyYXZlcnNhbDxFbGVtZW50
Pjo6bmV4dChjdXJyZW50LCBzdGF5V2l0aGluKTsKLSAgICB3aGlsZSAoZWxlbWVudCAmJiAhaXNF
bGVtZW50T2ZUeXBlPGNvbnN0IEVsZW1lbnRUeXBlPigqZWxlbWVudCkpCi0gICAgICAgIGVsZW1l
bnQgPSBUcmF2ZXJzYWw8RWxlbWVudD46Om5leHQoZWxlbWVudCwgc3RheVdpdGhpbik7Ci0gICAg
cmV0dXJuIHN0YXRpY19jYXN0PEVsZW1lbnRUeXBlKj4oZWxlbWVudCk7CisgICAgTm9kZSogbm9k
ZSA9IE5vZGVUcmF2ZXJzYWw6Om5leHQoY3VycmVudCwgc3RheVdpdGhpbik7CisgICAgd2hpbGUg
KG5vZGUgJiYgIWlzRWxlbWVudE9mVHlwZTxjb25zdCBFbGVtZW50VHlwZT4oKm5vZGUpKQorICAg
ICAgICBub2RlID0gTm9kZVRyYXZlcnNhbDo6bmV4dChub2RlLCBzdGF5V2l0aGluKTsKKyAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8RWxlbWVudFR5cGUqPihub2RlKTsKIH0KIAogdGVtcGxhdGUgPHR5
cGVuYW1lIEVsZW1lbnRUeXBlPgogaW5saW5lIEVsZW1lbnRUeXBlKiBUcmF2ZXJzYWw8RWxlbWVu
dFR5cGU+OjpwcmV2aW91cyhjb25zdCBOb2RlKiBjdXJyZW50KQogewotICAgIEVsZW1lbnQqIGVs
ZW1lbnQgPSBUcmF2ZXJzYWw8RWxlbWVudD46OnByZXZpb3VzKGN1cnJlbnQpOwotICAgIHdoaWxl
IChlbGVtZW50ICYmICFpc0VsZW1lbnRPZlR5cGU8Y29uc3QgRWxlbWVudFR5cGU+KCplbGVtZW50
KSkKLSAgICAgICAgZWxlbWVudCA9IFRyYXZlcnNhbDxFbGVtZW50Pjo6cHJldmlvdXMoZWxlbWVu
dCk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEVsZW1lbnRUeXBlKj4oZWxlbWVudCk7CisgICAg
Tm9kZSogbm9kZSA9IE5vZGVUcmF2ZXJzYWw6OnByZXZpb3VzKGN1cnJlbnQpOworICAgIHdoaWxl
IChub2RlICYmICFpc0VsZW1lbnRPZlR5cGU8Y29uc3QgRWxlbWVudFR5cGU+KCpub2RlKSkKKyAg
ICAgICAgbm9kZSA9IE5vZGVUcmF2ZXJzYWw6OnByZXZpb3VzKG5vZGUpOworICAgIHJldHVybiBz
dGF0aWNfY2FzdDxFbGVtZW50VHlwZSo+KG5vZGUpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
RWxlbWVudFR5cGU+CiBpbmxpbmUgRWxlbWVudFR5cGUqIFRyYXZlcnNhbDxFbGVtZW50VHlwZT46
OnByZXZpb3VzKGNvbnN0IE5vZGUqIGN1cnJlbnQsIGNvbnN0IE5vZGUqIHN0YXlXaXRoaW4pCiB7
Ci0gICAgRWxlbWVudCogZWxlbWVudCA9IFRyYXZlcnNhbDxFbGVtZW50Pjo6cHJldmlvdXMoY3Vy
cmVudCwgc3RheVdpdGhpbik7Ci0gICAgd2hpbGUgKGVsZW1lbnQgJiYgIWlzRWxlbWVudE9mVHlw
ZTxjb25zdCBFbGVtZW50VHlwZT4oKmVsZW1lbnQpKQotICAgICAgICBlbGVtZW50ID0gVHJhdmVy
c2FsPEVsZW1lbnQ+OjpwcmV2aW91cyhlbGVtZW50LCBzdGF5V2l0aGluKTsKLSAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8RWxlbWVudFR5cGUqPihlbGVtZW50KTsKKyAgICBOb2RlKiBub2RlID0gTm9k
ZVRyYXZlcnNhbDo6cHJldmlvdXMoY3VycmVudCwgc3RheVdpdGhpbik7CisgICAgd2hpbGUgKG5v
ZGUgJiYgIWlzRWxlbWVudE9mVHlwZTxjb25zdCBFbGVtZW50VHlwZT4oKm5vZGUpKQorICAgICAg
ICBub2RlID0gTm9kZVRyYXZlcnNhbDo6cHJldmlvdXMobm9kZSwgc3RheVdpdGhpbik7CisgICAg
cmV0dXJuIHN0YXRpY19jYXN0PEVsZW1lbnRUeXBlKj4obm9kZSk7CiB9CiAKIHRlbXBsYXRlIDx0
eXBlbmFtZSBFbGVtZW50VHlwZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9tYWtl
X25hbWVzLnBsIGIvU291cmNlL1dlYkNvcmUvZG9tL21ha2VfbmFtZXMucGwKaW5kZXggYTQ2ZjEw
YjNjOTBkNzMwM2Q2NGFlMjkzNGQ5ZDZhMzUyOGMzYWNkZi4uMzg5YzJiOGEzYjhlMmY3ODZhYzEz
ZThlNDIxOGNiOTZjM2ZiOGY4OCAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL21ha2Vf
bmFtZXMucGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL21ha2VfbmFtZXMucGwKQEAgLTY0Miw0
MCArNjQyLDI5IEBAIHZvaWQgJGNoZWNrSGVscGVyKGNvbnN0ICRjbGFzcyopOyAvLyBDYXRjaCB1
bm5lY2Vzc2FyeSBydW50aW1lIGNoZWNrIG9mIHR5cGUga25vCiBFTkQKICAgICAgICAgOwogCi0g
ICAgICAgIGlmICgkcGFyYW1ldGVyc3tuYW1lc3BhY2V9IGVxICJIVE1MIikgewotICAgICAgICAg
ICAgaWYgKCRwYXJzZWRUYWdzeyRuYW1lfXt3cmFwcGVyT25seUlmTWVkaWFJc0F2YWlsYWJsZX0p
IHsKLSAgICAgICAgICAgICAgICAjIFdlIG5lZWQgdG8gY2hlY2sgZm9yIEhUTUxVbmtub3duRWxl
bWVudCBpZiBpdCBtaWdodCBoYXZlIGJlZW4gY3JlYXRlZCBieSB0aGUgZmFjdG9yeS4KLSAgICAg
ICAgICAgICAgICBwcmludCBGIDw8RU5ECisgICAgICAgIGlmICgkcGFyYW1ldGVyc3tuYW1lc3Bh
Y2V9IGVxICJIVE1MIiAmJiAkcGFyc2VkVGFnc3skbmFtZX17d3JhcHBlck9ubHlJZk1lZGlhSXNB
dmFpbGFibGV9KSB7CisgICAgICAgICAgICAjIFdlIG5lZWQgdG8gY2hlY2sgZm9yIEhUTUxVbmtu
b3duRWxlbWVudCBpZiBpdCBtaWdodCBoYXZlIGJlZW4gY3JlYXRlZCBieSB0aGUgZmFjdG9yeS4K
KyAgICAgICAgICAgIHByaW50IEYgPDxFTkQKIGlubGluZSBib29sICRjaGVja0hlbHBlcihjb25z
dCBIVE1MRWxlbWVudCYgZWxlbWVudCkgeyByZXR1cm4gIWVsZW1lbnQuaXNIVE1MVW5rbm93bkVs
ZW1lbnQoKSAmJiBlbGVtZW50Lmhhc1RhZ05hbWUoJHBhcmFtZXRlcnN7bmFtZXNwYWNlfU5hbWVz
Ojoke25hbWV9VGFnKTsgfQotaW5saW5lIGJvb2wgJGNoZWNrSGVscGVyKGNvbnN0IEhUTUxFbGVt
ZW50KiBlbGVtZW50KSB7IEFTU0VSVChlbGVtZW50KTsgcmV0dXJuICRjaGVja0hlbHBlcigqZWxl
bWVudCk7IH0KLUVORAotICAgICAgICAgICAgICAgIDsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICAgICAgcHJpbnQgRiA8PEVORAotaW5saW5lIGJvb2wgJGNoZWNrSGVscGVyKGNv
bnN0IEhUTUxFbGVtZW50JiBlbGVtZW50KSB7IHJldHVybiBlbGVtZW50Lmhhc1RhZ05hbWUoSFRN
TE5hbWVzOjoke25hbWV9VGFnKTsgfQotaW5saW5lIGJvb2wgJGNoZWNrSGVscGVyKGNvbnN0IEhU
TUxFbGVtZW50KiBlbGVtZW50KSB7IEFTU0VSVChlbGVtZW50KTsgcmV0dXJuICRjaGVja0hlbHBl
cigqZWxlbWVudCk7IH0KLUVORAotICAgICAgICAgICAgICAgIDsKLSAgICAgICAgICAgIH0KLQot
ICAgICAgICAgICAgICAgIHByaW50IEYgPDxFTkQKIGlubGluZSBib29sICRjaGVja0hlbHBlcihj
b25zdCBOb2RlJiBub2RlKSB7IHJldHVybiBub2RlLmlzSFRNTEVsZW1lbnQoKSAmJiAkY2hlY2tI
ZWxwZXIodG9IVE1MRWxlbWVudChub2RlKSk7IH0KLWlubGluZSBib29sICRjaGVja0hlbHBlcihj
b25zdCBOb2RlKiBub2RlKSB7IEFTU0VSVChub2RlKTsgcmV0dXJuICRjaGVja0hlbHBlcigqbm9k
ZSk7IH0KLXRlbXBsYXRlIDw+IGlubGluZSBib29sIGlzRWxlbWVudE9mVHlwZTxjb25zdCAkY2xh
c3M+KGNvbnN0IEhUTUxFbGVtZW50JiBlbGVtZW50KSB7IHJldHVybiAkY2hlY2tIZWxwZXIoZWxl
bWVudCk7IH0KLXRlbXBsYXRlIDw+IGlubGluZSBib29sIGlzRWxlbWVudE9mVHlwZTxjb25zdCAk
Y2xhc3M+KGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJuICRjaGVja0hlbHBlcihlbGVt
ZW50KTsgfQogRU5ECi0gICAgICAgICAgICAgICAgOwotCisgICAgICAgICAgICA7CiAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICBwcmludCBGIDw8RU5ECi1pbmxpbmUgYm9vbCAkY2hlY2tI
ZWxwZXIoY29uc3QgRWxlbWVudCYgZWxlbWVudCkgeyByZXR1cm4gZWxlbWVudC5oYXNUYWdOYW1l
KCRwYXJhbWV0ZXJze25hbWVzcGFjZX1OYW1lczo6JHtuYW1lfVRhZyk7IH0KLWlubGluZSBib29s
ICRjaGVja0hlbHBlcihjb25zdCBFbGVtZW50KiBlbGVtZW50KSB7IEFTU0VSVChlbGVtZW50KTsg
cmV0dXJuICRjaGVja0hlbHBlcigqZWxlbWVudCk7IH0KLWlubGluZSBib29sICRjaGVja0hlbHBl
cihjb25zdCBOb2RlJiBub2RlKSB7IHJldHVybiBub2RlLmlzRWxlbWVudE5vZGUoKSAmJiAkY2hl
Y2tIZWxwZXIodG9FbGVtZW50KG5vZGUpKTsgfQotaW5saW5lIGJvb2wgJGNoZWNrSGVscGVyKGNv
bnN0IE5vZGUqIG5vZGUpIHsgQVNTRVJUKG5vZGUpOyByZXR1cm4gbm9kZS0+aXNFbGVtZW50Tm9k
ZSgpICYmICRjaGVja0hlbHBlcih0b0VsZW1lbnQobm9kZSkpOyB9Ci10ZW1wbGF0ZSA8PiBpbmxp
bmUgYm9vbCBpc0VsZW1lbnRPZlR5cGU8Y29uc3QgJGNsYXNzPihjb25zdCBFbGVtZW50JiBlbGVt
ZW50KSB7IHJldHVybiAkY2hlY2tIZWxwZXIoZWxlbWVudCk7IH0KK2lubGluZSBib29sICRjaGVj
a0hlbHBlcihjb25zdCAkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudCYgZWxlbWVudCkgeyBy
ZXR1cm4gZWxlbWVudC5oYXNUYWdOYW1lKCRwYXJhbWV0ZXJze25hbWVzcGFjZX1OYW1lczo6JHtu
YW1lfVRhZyk7IH0KK2lubGluZSBib29sICRjaGVja0hlbHBlcihjb25zdCBOb2RlJiBub2RlKSB7
IHJldHVybiBub2RlLmhhc1RhZ05hbWUoJHBhcmFtZXRlcnN7bmFtZXNwYWNlfU5hbWVzOjoke25h
bWV9VGFnKTsgfQogRU5ECiAgICAgICAgICAgICA7CiAgICAgICAgIH0KKyAgICAgICAgcHJpbnQg
RiA8PEVORAoraW5saW5lIGJvb2wgJGNoZWNrSGVscGVyKGNvbnN0ICRwYXJhbWV0ZXJze25hbWVz
cGFjZX1FbGVtZW50KiBlbGVtZW50KSB7IEFTU0VSVChlbGVtZW50KTsgcmV0dXJuICRjaGVja0hl
bHBlcigqZWxlbWVudCk7IH0KK2lubGluZSBib29sICRjaGVja0hlbHBlcihjb25zdCBOb2RlKiBu
b2RlKSB7IEFTU0VSVChub2RlKTsgcmV0dXJuICRjaGVja0hlbHBlcigqbm9kZSk7IH0KK3RlbXBs
YXRlIDx0eXBlbmFtZSBBcmdUeXBlPgorc3RydWN0IEVsZW1lbnRUeXBlQ2FzdFRyYWl0czxjb25z
dCAkY2xhc3MsIEFyZ1R5cGU+IHsKKyAgICBzdGF0aWMgYm9vbCBpcyhBcmdUeXBlJiBub2RlKSB7
IHJldHVybiAkY2hlY2tIZWxwZXIobm9kZSk7IH0KK307CitFTkQKKyAgICAgICAgOwogCiAgICAg
ICAgIHByaW50IEYgIlxuIjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmgKaW5kZXgg
YmE1ODc4MTQwOTg0OGVmOTU1OGZhNGMzMWI3ZmFlZjVmZGI2NzdmOS4uNjczNGJlMWExNzYyM2Ji
NTU2ZTY4MTc3Zjg1NDU5MzFiMmY5M2FmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaApA
QCAtMTQ2LDEyICsxNDYsMTMgQEAgaW5saW5lIEhUTUxFbGVtZW50OjpIVE1MRWxlbWVudChjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQKICAgICBBU1NFUlQo
dGFnTmFtZS5sb2NhbE5hbWUoKS5pbXBsKCkpOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVHlw
ZT4gYm9vbCBpc0VsZW1lbnRPZlR5cGUoY29uc3QgSFRNTEVsZW1lbnQmKTsKLQogdm9pZCBpc0hU
TUxFbGVtZW50KGNvbnN0IEhUTUxFbGVtZW50Jik7IC8vIENhdGNoIHVubmVjZXNzYXJ5IHJ1bnRp
bWUgY2hlY2sgb2YgdHlwZSBrbm93biBhdCBjb21waWxlIHRpbWUuCiBpbmxpbmUgYm9vbCBpc0hU
TUxFbGVtZW50KGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJuIG5vZGUuaXNIVE1MRWxlbWVudCgp
OyB9Ci10ZW1wbGF0ZSA8PiBpbmxpbmUgYm9vbCBpc0VsZW1lbnRPZlR5cGU8Y29uc3QgSFRNTEVs
ZW1lbnQ+KGNvbnN0IEhUTUxFbGVtZW50JikgeyByZXR1cm4gdHJ1ZTsgfQotdGVtcGxhdGUgPD4g
aW5saW5lIGJvb2wgaXNFbGVtZW50T2ZUeXBlPGNvbnN0IEhUTUxFbGVtZW50Pihjb25zdCBFbGVt
ZW50JiBlbGVtZW50KSB7IHJldHVybiBlbGVtZW50LmlzSFRNTEVsZW1lbnQoKTsgfQorCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgQXJnVHlwZT4KK3N0cnVjdCBFbGVtZW50VHlwZUNhc3RUcmFpdHM8Y29u
c3QgSFRNTEVsZW1lbnQsIEFyZ1R5cGU+IHsKKyAgICBzdGF0aWMgYm9vbCBpcyhBcmdUeXBlJiBu
b2RlKSB7IHJldHVybiBpc0hUTUxFbGVtZW50KG5vZGUpOyB9Cit9OwogCiBOT0RFX1RZUEVfQ0FT
VFMoSFRNTEVsZW1lbnQpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZv
cm1Db250cm9sRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xF
bGVtZW50LmgKaW5kZXggYzEwZmNmOGEzNzg3ZWU4ZjhkMGRkYmU1MTlkOTQ5NTg1YzZiZjU1My4u
ZDU2Y2ZhYTQxYmZhMmVmMzk1MjBlODVhNzg4MDA4NGRhMWYyMGM3ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgKQEAgLTE5Myw3ICsxOTMsMTEgQEAg
cHJpdmF0ZToKIHZvaWQgaXNIVE1MRm9ybUNvbnRyb2xFbGVtZW50KGNvbnN0IEhUTUxGb3JtQ29u
dHJvbEVsZW1lbnQmKTsgLy8gQ2F0Y2ggdW5uZWNlc3NhcnkgcnVudGltZSBjaGVjayBvZiB0eXBl
IGtub3duIGF0IGNvbXBpbGUgdGltZS4KIGlubGluZSBib29sIGlzSFRNTEZvcm1Db250cm9sRWxl
bWVudChjb25zdCBFbGVtZW50JiBlbGVtZW50KSB7IHJldHVybiBlbGVtZW50LmlzRm9ybUNvbnRy
b2xFbGVtZW50KCk7IH0KIGlubGluZSBib29sIGlzSFRNTEZvcm1Db250cm9sRWxlbWVudChjb25z
dCBOb2RlJiBub2RlKSB7IHJldHVybiBub2RlLmlzRWxlbWVudE5vZGUoKSAmJiB0b0VsZW1lbnQo
bm9kZSkuaXNGb3JtQ29udHJvbEVsZW1lbnQoKTsgfQotdGVtcGxhdGUgPD4gaW5saW5lIGJvb2wg
aXNFbGVtZW50T2ZUeXBlPGNvbnN0IEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ+KGNvbnN0IEVsZW1l
bnQmIGVsZW1lbnQpIHsgcmV0dXJuIGlzSFRNTEZvcm1Db250cm9sRWxlbWVudChlbGVtZW50KTsg
fQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQXJnVHlwZT4KK3N0cnVjdCBFbGVtZW50VHlwZUNhc3RU
cmFpdHM8Y29uc3QgSFRNTEZvcm1Db250cm9sRWxlbWVudCwgQXJnVHlwZT4geworICAgIHN0YXRp
YyBib29sIGlzKEFyZ1R5cGUmIG5vZGUpIHsgcmV0dXJuIGlzSFRNTEZvcm1Db250cm9sRWxlbWVu
dChub2RlKTsgfQorfTsKIAogTk9ERV9UWVBFX0NBU1RTKEhUTUxGb3JtQ29udHJvbEVsZW1lbnQp
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuaAppbmRleCA1ZGY3
NDljM2JlNWMxNmU2Y2EyM2IxMGUxYzZjZDYyMzAwY2UzZjAyLi4yNzllYmQ4MmE4OGNmNDI3ZDQz
NjUwZTJlNWViOGE3MTRhYjJkMTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxGcmFtZUVsZW1lbnRCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVF
bGVtZW50QmFzZS5oCkBAIC03Nyw4ICs3Nyw4IEBAIHByaXZhdGU6CiB9OwogCiB2b2lkIGlzSFRN
TEZyYW1lRWxlbWVudEJhc2UoY29uc3QgSFRNTEZyYW1lRWxlbWVudEJhc2UmKTsgLy8gQ2F0Y2gg
dW5uZWNlc3NhcnkgcnVudGltZSBjaGVjayBvZiB0eXBlIGtub3duIGF0IGNvbXBpbGUgdGltZS4K
LWlubGluZSBib29sIGlzSFRNTEZyYW1lRWxlbWVudEJhc2UoY29uc3QgRWxlbWVudCYgZWxlbWVu
dCkgeyByZXR1cm4gaXNIVE1MRnJhbWVFbGVtZW50KGVsZW1lbnQpIHx8IGlzSFRNTElGcmFtZUVs
ZW1lbnQoZWxlbWVudCk7IH0KLWlubGluZSBib29sIGlzSFRNTEZyYW1lRWxlbWVudEJhc2UoY29u
c3QgTm9kZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5pc0VsZW1lbnROb2RlKCkgJiYgaXNIVE1MRnJh
bWVFbGVtZW50QmFzZSh0b0VsZW1lbnQobm9kZSkpOyB9CitpbmxpbmUgYm9vbCBpc0hUTUxGcmFt
ZUVsZW1lbnRCYXNlKGNvbnN0IEhUTUxFbGVtZW50JiBlbGVtZW50KSB7IHJldHVybiBpc0hUTUxG
cmFtZUVsZW1lbnQoZWxlbWVudCkgfHwgaXNIVE1MSUZyYW1lRWxlbWVudChlbGVtZW50KTsgfQor
aW5saW5lIGJvb2wgaXNIVE1MRnJhbWVFbGVtZW50QmFzZShjb25zdCBOb2RlJiBub2RlKSB7IHJl
dHVybiBpc0hUTUxGcmFtZUVsZW1lbnQobm9kZSkgfHwgaXNIVE1MSUZyYW1lRWxlbWVudChub2Rl
KTsgfQogCiBOT0RFX1RZUEVfQ0FTVFMoSFRNTEZyYW1lRWxlbWVudEJhc2UpCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKaW5kZXggYTE0MjUyNDMxZDQzYTFkOGEyMTZlYjdj
ZjM0NjA2ZGUxNWRlMDg2ZS4uNDgzNDgxNDcyNTljNGE5ZTg4OThiYTZhZDgyMWI1OThhYTA3YWRl
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKQEAgLTkxNiw3ICs5MTYs
MTEgQEAgc3RydWN0IFZhbHVlVG9TdHJpbmc8VGV4dFRyYWNrQ3VlKj4gewogdm9pZCBpc0hUTUxN
ZWRpYUVsZW1lbnQoY29uc3QgSFRNTE1lZGlhRWxlbWVudCYpOyAvLyBDYXRjaCB1bm5lY2Vzc2Fy
eSBydW50aW1lIGNoZWNrIG9mIHR5cGUga25vd24gYXQgY29tcGlsZSB0aW1lLgogaW5saW5lIGJv
b2wgaXNIVE1MTWVkaWFFbGVtZW50KGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJuIGVs
ZW1lbnQuaXNNZWRpYUVsZW1lbnQoKTsgfQogaW5saW5lIGJvb2wgaXNIVE1MTWVkaWFFbGVtZW50
KGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJuIG5vZGUuaXNFbGVtZW50Tm9kZSgpICYmIHRvRWxl
bWVudChub2RlKS5pc01lZGlhRWxlbWVudCgpOyB9Ci10ZW1wbGF0ZSA8PiBpbmxpbmUgYm9vbCBp
c0VsZW1lbnRPZlR5cGU8Y29uc3QgSFRNTE1lZGlhRWxlbWVudD4oY29uc3QgRWxlbWVudCYgZWxl
bWVudCkgeyByZXR1cm4gZWxlbWVudC5pc01lZGlhRWxlbWVudCgpOyB9CisKK3RlbXBsYXRlIDx0
eXBlbmFtZSBBcmdUeXBlPgorc3RydWN0IEVsZW1lbnRUeXBlQ2FzdFRyYWl0czxjb25zdCBIVE1M
TWVkaWFFbGVtZW50LCBBcmdUeXBlPiB7CisgICAgc3RhdGljIGJvb2wgaXMoQXJnVHlwZSYgbm9k
ZSkgeyByZXR1cm4gaXNIVE1MTWVkaWFFbGVtZW50KG5vZGUpOyB9Cit9OwogCiBOT0RFX1RZUEVf
Q0FTVFMoSFRNTE1lZGlhRWxlbWVudCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVn
SW5JbWFnZUVsZW1lbnQuaAppbmRleCA4NTZmYzI2MGMwOTFkZTJmYjhhNDMzNDE4OTY3MmViNWJl
NTA1YjQ4Li43MzM2MWEwNDk1YzIwZDFiMWVhZDI4MmNjODY2MjEzZTNhZWI3ZTRiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuaApAQCAtMTYwLDcgKzE2
MCwxMiBAQCBwcml2YXRlOgogdm9pZCBpc0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQoY29uc3QgSFRN
TFBsdWdJbkltYWdlRWxlbWVudCYpOyAvLyBDYXRjaCB1bm5lY2Vzc2FyeSBydW50aW1lIGNoZWNr
IG9mIHR5cGUga25vd24gYXQgY29tcGlsZSB0aW1lLgogaW5saW5lIGJvb2wgaXNIVE1MUGx1Z0lu
SW1hZ2VFbGVtZW50KGNvbnN0IEhUTUxQbHVnSW5FbGVtZW50JiBlbGVtZW50KSB7IHJldHVybiBl
bGVtZW50LmlzUGx1Z0luSW1hZ2VFbGVtZW50KCk7IH0KIGlubGluZSBib29sIGlzSFRNTFBsdWdJ
bkltYWdlRWxlbWVudChjb25zdCBOb2RlJiBub2RlKSB7IHJldHVybiBub2RlLmlzUGx1Z2luRWxl
bWVudCgpICYmIHRvSFRNTFBsdWdJbkVsZW1lbnQobm9kZSkuaXNQbHVnSW5JbWFnZUVsZW1lbnQo
KTsgfQotdGVtcGxhdGUgPD4gaW5saW5lIGJvb2wgaXNFbGVtZW50T2ZUeXBlPGNvbnN0IEhUTUxQ
bHVnSW5JbWFnZUVsZW1lbnQ+KGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJuIGlzSFRN
TFBsdWdJbkltYWdlRWxlbWVudChlbGVtZW50KTsgfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQXJn
VHlwZT4KK3N0cnVjdCBFbGVtZW50VHlwZUNhc3RUcmFpdHM8Y29uc3QgSFRNTFBsdWdJbkltYWdl
RWxlbWVudCwgQXJnVHlwZT4geworICAgIHN0YXRpYyBib29sIGlzKEFyZ1R5cGUmIG5vZGUpIHsg
cmV0dXJuIGlzSFRNTFBsdWdJbkltYWdlRWxlbWVudChub2RlKTsgfQorfTsKKwogTk9ERV9UWVBF
X0NBU1RTKEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQpCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTGFiZWxhYmxlRWxlbWVudC5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9MYWJlbGFibGVFbGVtZW50LmgKaW5kZXggMDE0ZjExMTI3MDdlNWUy
OGNjZmQ4MzUwNjQ0NGIxZGNjMGNjNTdlYi4uYmJhZDY5ZDE0N2U3NTZjMWEwMWRmM2UxZDUxODhm
YTQ1YjlhNTRhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9MYWJlbGFibGVFbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9MYWJlbGFibGVFbGVtZW50LmgKQEAgLTUz
LDcgKzUzLDExIEBAIHByaXZhdGU6CiB2b2lkIGlzTGFiZWxhYmxlRWxlbWVudChjb25zdCBMYWJl
bGFibGVFbGVtZW50Jik7IC8vIENhdGNoIHVubmVjZXNzYXJ5IHJ1bnRpbWUgY2hlY2sgb2YgdHlw
ZSBrbm93biBhdCBjb21waWxlIHRpbWUuCiBpbmxpbmUgYm9vbCBpc0xhYmVsYWJsZUVsZW1lbnQo
Y29uc3QgSFRNTEVsZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJuIGVsZW1lbnQuaXNMYWJlbGFibGUo
KTsgfQogaW5saW5lIGJvb2wgaXNMYWJlbGFibGVFbGVtZW50KGNvbnN0IE5vZGUmIG5vZGUpIHsg
cmV0dXJuIG5vZGUuaXNIVE1MRWxlbWVudCgpICYmIHRvSFRNTEVsZW1lbnQobm9kZSkuaXNMYWJl
bGFibGUoKTsgfQotdGVtcGxhdGUgPD4gaW5saW5lIGJvb2wgaXNFbGVtZW50T2ZUeXBlPGNvbnN0
IExhYmVsYWJsZUVsZW1lbnQ+KGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJuIGlzTGFi
ZWxhYmxlRWxlbWVudChlbGVtZW50KTsgfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQXJnVHlwZT4K
K3N0cnVjdCBFbGVtZW50VHlwZUNhc3RUcmFpdHM8Y29uc3QgTGFiZWxhYmxlRWxlbWVudCwgQXJn
VHlwZT4geworICAgIHN0YXRpYyBib29sIGlzKEFyZ1R5cGUmIG5vZGUpIHsgcmV0dXJuIGlzTGFi
ZWxhYmxlRWxlbWVudChub2RlKTsgfQorfTsKIAogTk9ERV9UWVBFX0NBU1RTKExhYmVsYWJsZUVs
ZW1lbnQpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5oCmluZGV4IGY5YzNiY2Zl
MjM5ZTZlOGMyMDc5ZWViMTQ1ODNlZGMxNmQwNjg0MTAuLjgwMWIxOTRlNTVjOTg1NTlhZTg1YTg2
NmI3YWVmY2M5N2JjMGRjMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRo
TUxFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEVsZW1lbnQuaApA
QCAtNzUsNiArNzUsMTIgQEAgcHJpdmF0ZToKIAogdm9pZCBpc01hdGhNTEVsZW1lbnQoY29uc3Qg
TWF0aE1MRWxlbWVudCYpOyAvLyBDYXRjaCB1bm5lY2Vzc2FyeSBydW50aW1lIGNoZWNrIG9mIHR5
cGUga25vd24gYXQgY29tcGlsZSB0aW1lLgogaW5saW5lIGJvb2wgaXNNYXRoTUxFbGVtZW50KGNv
bnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJuIG5vZGUuaXNNYXRoTUxFbGVtZW50KCk7IH0KKwordGVt
cGxhdGUgPHR5cGVuYW1lIEFyZ1R5cGU+CitzdHJ1Y3QgRWxlbWVudFR5cGVDYXN0VHJhaXRzPGNv
bnN0IE1hdGhNTEVsZW1lbnQsIEFyZ1R5cGU+IHsKKyAgICBzdGF0aWMgYm9vbCBpcyhBcmdUeXBl
JiBub2RlKSB7IHJldHVybiBpc01hdGhNTEVsZW1lbnQobm9kZSk7IH0KK307CisKIE5PREVfVFlQ
RV9DQVNUUyhNYXRoTUxFbGVtZW50KQogCiBpbmxpbmUgYm9vbCBOb2RlOjpoYXNUYWdOYW1lKGNv
bnN0IE1hdGhNTFF1YWxpZmllZE5hbWUmIG5hbWUpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQu
aAppbmRleCBjNWMxN2Y4YzEyYjQyMWI1MTNlYmU5MjY0ZGYzOWNlYjdlMmQ1Y2Y5Li5iZWRkODc5
YmY2YTc1MzE0M2Y3Mjc2NDBiNTg4Y2I0NjhlMzJhZDc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50
LmgKQEAgLTI1LDkgKzI1LDkgQEAKIAogI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKICNp
bmNsdWRlICJTVkdBbmltYXRlZFN0cmluZy5oIgotI2luY2x1ZGUgIlNWR0VsZW1lbnRUeXBlSGVs
cGVycy5oIgogI2luY2x1ZGUgIlNWR0xhbmdTcGFjZS5oIgogI2luY2x1ZGUgIlNWR0xvY2F0YWJs
ZS5oIgorI2luY2x1ZGUgIlNWR05hbWVzLmgiCiAjaW5jbHVkZSAiU1ZHUGFyc2luZ0Vycm9yLmgi
CiAjaW5jbHVkZSAiU1ZHUHJvcGVydHlJbmZvLmgiCiAjaW5jbHVkZSAiU3R5bGVkRWxlbWVudC5o
IgpAQCAtMjI1LDcgKzIyNSwxMSBAQCBzdHJ1Y3QgU1ZHQXR0cmlidXRlSGFzaFRyYW5zbGF0b3Ig
ewogCiB2b2lkIGlzU1ZHRWxlbWVudChjb25zdCBTVkdFbGVtZW50Jik7IC8vIENhdGNoIHVubmVj
ZXNzYXJ5IHJ1bnRpbWUgY2hlY2sgb2YgdHlwZSBrbm93biBhdCBjb21waWxlIHRpbWUuCiBpbmxp
bmUgYm9vbCBpc1NWR0VsZW1lbnQoY29uc3QgTm9kZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5pc1NW
R0VsZW1lbnQoKTsgfQotdGVtcGxhdGUgPD4gaW5saW5lIGJvb2wgaXNFbGVtZW50T2ZUeXBlPGNv
bnN0IFNWR0VsZW1lbnQ+KGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJuIGVsZW1lbnQu
aXNTVkdFbGVtZW50KCk7IH0KKwordGVtcGxhdGUgPHR5cGVuYW1lIEFyZ1R5cGU+CitzdHJ1Y3Qg
RWxlbWVudFR5cGVDYXN0VHJhaXRzPGNvbnN0IFNWR0VsZW1lbnQsIEFyZ1R5cGU+IHsKKyAgICBz
dGF0aWMgYm9vbCBpcyhBcmdUeXBlJiBub2RlKSB7IHJldHVybiBpc1NWR0VsZW1lbnQobm9kZSk7
IH0KK307CiAKIE5PREVfVFlQRV9DQVNUUyhTVkdFbGVtZW50KQogCkBAIC0yMzQsNiArMjM4LDgg
QEAgaW5saW5lIGJvb2wgTm9kZTo6aGFzVGFnTmFtZShjb25zdCBTVkdRdWFsaWZpZWROYW1lJiBu
YW1lKSBjb25zdAogICAgIHJldHVybiBpc1NWR0VsZW1lbnQoKSAmJiB0b1NWR0VsZW1lbnQoKnRo
aXMpLmhhc1RhZ05hbWUobmFtZSk7CiB9CiAKLX0KK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2luY2x1ZGUgIlNWR0VsZW1lbnRUeXBlSGVscGVycy5oIgogCiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMu
aCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0
ZXMuaAppbmRleCA1ZmRjYjY2NDI0YzZlNDJiMDU0YmI0M2FiOGFmMzkxM2ZlYjBhNThjLi44MWI2
M2UzNzA2MWVjY2ZlZjk2OGY5MjE3MmQ4YzM5NjZlZDJjODg2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5o
CkBAIC04NSw3ICs4NSwxMSBAQCB2b2lkIGludmFsaWRhdGVGaWx0ZXJQcmltaXRpdmVQYXJlbnQo
U1ZHRWxlbWVudCopOwogdm9pZCBpc1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRl
cyhjb25zdCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMmKTsgLy8gQ2F0Y2gg
dW5uZWNlc3NhcnkgcnVudGltZSBjaGVjayBvZiB0eXBlIGtub3duIGF0IGNvbXBpbGUgdGltZS4K
IGlubGluZSBib29sIGlzU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKGNvbnN0
IFNWR0VsZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJuIGVsZW1lbnQuaXNGaWx0ZXJFZmZlY3QoKTsg
fQogaW5saW5lIGJvb2wgaXNTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMoY29u
c3QgTm9kZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5pc1NWR0VsZW1lbnQoKSAmJiB0b1NWR0VsZW1l
bnQobm9kZSkuaXNGaWx0ZXJFZmZlY3QoKTsgfQotdGVtcGxhdGUgPD4gaW5saW5lIGJvb2wgaXNF
bGVtZW50T2ZUeXBlPGNvbnN0IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcz4o
Y29uc3QgRWxlbWVudCYgZWxlbWVudCkgeyByZXR1cm4gaXNTVkdGaWx0ZXJQcmltaXRpdmVTdGFu
ZGFyZEF0dHJpYnV0ZXMoZWxlbWVudCk7IH0KKwordGVtcGxhdGUgPHR5cGVuYW1lIEFyZ1R5cGU+
CitzdHJ1Y3QgRWxlbWVudFR5cGVDYXN0VHJhaXRzPGNvbnN0IFNWR0ZpbHRlclByaW1pdGl2ZVN0
YW5kYXJkQXR0cmlidXRlcywgQXJnVHlwZT4geworICAgIHN0YXRpYyBib29sIGlzKEFyZ1R5cGUm
IG5vZGUpIHsgcmV0dXJuIGlzU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKG5v
ZGUpOyB9Cit9OwogCiBOT0RFX1RZUEVfQ0FTVFMoU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRB
dHRyaWJ1dGVzKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NW
R1NNSUxFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVt
ZW50LmgKaW5kZXggMWVlZjMxODZkMmVmMWU3M2E3NWVlNWVjNDIzNzQ2ODg5OWIwZjI3OS4uYmZk
ZDEwZTY3ZDE4Zjg5YzQ4ZDc2MjI2MWZlZjgyMDhlNzA2YjgwYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQuaApAQCAtMjQwLDcgKzI0MCwxMiBAQCBw
cml2YXRlOgogdm9pZCBpc1NWR1NNSUxFbGVtZW50KGNvbnN0IFNWR1NNSUxFbGVtZW50Jik7IC8v
IENhdGNoIHVubmVjZXNzYXJ5IHJ1bnRpbWUgY2hlY2sgb2YgdHlwZSBrbm93biBhdCBjb21waWxl
IHRpbWUuCiBpbmxpbmUgYm9vbCBpc1NWR1NNSUxFbGVtZW50KGNvbnN0IFNWR0VsZW1lbnQmIGVs
ZW1lbnQpIHsgcmV0dXJuIGVsZW1lbnQuaXNTTUlMRWxlbWVudCgpOyB9CiBpbmxpbmUgYm9vbCBp
c1NWR1NNSUxFbGVtZW50KGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJuIG5vZGUuaXNTVkdFbGVt
ZW50KCkgJiYgdG9TVkdFbGVtZW50KG5vZGUpLmlzU01JTEVsZW1lbnQoKTsgfQotdGVtcGxhdGUg
PD4gaW5saW5lIGJvb2wgaXNFbGVtZW50T2ZUeXBlPGNvbnN0IFNWR1NNSUxFbGVtZW50Pihjb25z
dCBFbGVtZW50JiBlbGVtZW50KSB7IHJldHVybiBpc1NWR1NNSUxFbGVtZW50KGVsZW1lbnQpOyB9
CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBBcmdUeXBlPgorc3RydWN0IEVsZW1lbnRUeXBlQ2FzdFRy
YWl0czxjb25zdCBTVkdTTUlMRWxlbWVudCwgQXJnVHlwZT4geworICAgIHN0YXRpYyBib29sIGlz
KEFyZ1R5cGUmIG5vZGUpIHsgcmV0dXJuIGlzU1ZHU01JTEVsZW1lbnQobm9kZSk7IH0KK307CisK
IAogTk9ERV9UWVBFX0NBU1RTKFNWR1NNSUxFbGVtZW50KQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>